[kernel] Only build the modules needed by mac80211 as module.
[openwrt.git] / target / linux / s3c24xx / patches-2.6.29 / 000-downgrade-to-rc3.patch
1 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/include/asm/bug.h linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h
2 --- linux-2.6.29.owrt/arch/alpha/include/asm/bug.h 2009-05-10 22:04:41.000000000 +0200
3 +++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/bug.h 2009-05-10 23:48:27.000000000 +0200
4 @@ -8,12 +8,17 @@
5
6 /* ??? Would be nice to use .gprel32 here, but we can't be sure that the
7 function loaded the GP, so this could fail in modules. */
8 -#define BUG() do { \
9 - __asm__ __volatile__( \
10 - "call_pal %0 # bugchk\n\t" \
11 - ".long %1\n\t.8byte %2" \
12 - : : "i"(PAL_bugchk), "i"(__LINE__), "i"(__FILE__)); \
13 - for ( ; ; ); } while (0)
14 +static inline void ATTRIB_NORET __BUG(const char *file, int line)
15 +{
16 + __asm__ __volatile__(
17 + "call_pal %0 # bugchk\n\t"
18 + ".long %1\n\t.8byte %2"
19 + : : "i" (PAL_bugchk), "i"(line), "i"(file));
20 + for ( ; ; )
21 + ;
22 +}
23 +
24 +#define BUG() __BUG(__FILE__, __LINE__)
25
26 #define HAVE_ARCH_BUG
27 #endif
28 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h
29 --- linux-2.6.29.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 22:04:41.000000000 +0200
30 +++ linux-2.6.29-rc3.owrt/arch/alpha/include/asm/dma-mapping.h 2009-05-10 23:48:27.000000000 +0200
31 @@ -29,8 +29,6 @@
32
33 #else /* no PCI - no IOMMU. */
34
35 -#include <asm/io.h> /* for virt_to_phys() */
36 -
37 struct scatterlist;
38 void *dma_alloc_coherent(struct device *dev, size_t size,
39 dma_addr_t *dma_handle, gfp_t gfp);
40 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/Kconfig linux-2.6.29-rc3.owrt/arch/alpha/Kconfig
41 --- linux-2.6.29.owrt/arch/alpha/Kconfig 2009-05-10 22:04:41.000000000 +0200
42 +++ linux-2.6.29-rc3.owrt/arch/alpha/Kconfig 2009-05-10 23:48:27.000000000 +0200
43 @@ -8,7 +8,6 @@
44 select HAVE_AOUT
45 select HAVE_IDE
46 select HAVE_OPROFILE
47 - select HAVE_SYSCALL_WRAPPERS
48 help
49 The Alpha is a 64-bit general-purpose processor designed and
50 marketed by the Digital Equipment Corporation of blessed memory,
51 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/entry.S linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S
52 --- linux-2.6.29.owrt/arch/alpha/kernel/entry.S 2009-05-10 22:04:41.000000000 +0200
53 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/entry.S 2009-05-10 23:48:27.000000000 +0200
54 @@ -933,7 +933,7 @@
55 osf_sigprocmask:
56 .prologue 0
57 mov $sp, $18
58 - jmp $31, sys_osf_sigprocmask
59 + jmp $31, do_osf_sigprocmask
60 .end osf_sigprocmask
61
62 .align 4
63 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c
64 --- linux-2.6.29.owrt/arch/alpha/kernel/osf_sys.c 2009-05-10 22:04:41.000000000 +0200
65 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/osf_sys.c 2009-05-10 23:48:27.000000000 +0200
66 @@ -54,7 +54,8 @@
67 * identical to OSF as we don't return 0 on success, but doing otherwise
68 * would require changes to libc. Hopefully this is good enough.
69 */
70 -SYSCALL_DEFINE1(osf_brk, unsigned long, brk)
71 +asmlinkage unsigned long
72 +osf_brk(unsigned long brk)
73 {
74 unsigned long retval = sys_brk(brk);
75 if (brk && brk != retval)
76 @@ -65,9 +66,9 @@
77 /*
78 * This is pure guess-work..
79 */
80 -SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start,
81 - unsigned long, text_len, unsigned long, bss_start,
82 - unsigned long, bss_len)
83 +asmlinkage int
84 +osf_set_program_attributes(unsigned long text_start, unsigned long text_len,
85 + unsigned long bss_start, unsigned long bss_len)
86 {
87 struct mm_struct *mm;
88
89 @@ -145,9 +146,9 @@
90 return -EFAULT;
91 }
92
93 -SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd,
94 - struct osf_dirent __user *, dirent, unsigned int, count,
95 - long __user *, basep)
96 +asmlinkage int
97 +osf_getdirentries(unsigned int fd, struct osf_dirent __user *dirent,
98 + unsigned int count, long __user *basep)
99 {
100 int error;
101 struct file *file;
102 @@ -176,9 +177,9 @@
103
104 #undef NAME_OFFSET
105
106 -SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len,
107 - unsigned long, prot, unsigned long, flags, unsigned long, fd,
108 - unsigned long, off)
109 +asmlinkage unsigned long
110 +osf_mmap(unsigned long addr, unsigned long len, unsigned long prot,
111 + unsigned long flags, unsigned long fd, unsigned long off)
112 {
113 struct file *file = NULL;
114 unsigned long ret = -EBADF;
115 @@ -253,8 +254,8 @@
116 return error;
117 }
118
119 -SYSCALL_DEFINE3(osf_statfs, char __user *, pathname,
120 - struct osf_statfs __user *, buffer, unsigned long, bufsiz)
121 +asmlinkage int
122 +osf_statfs(char __user *pathname, struct osf_statfs __user *buffer, unsigned long bufsiz)
123 {
124 struct path path;
125 int retval;
126 @@ -267,8 +268,8 @@
127 return retval;
128 }
129
130 -SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd,
131 - struct osf_statfs __user *, buffer, unsigned long, bufsiz)
132 +asmlinkage int
133 +osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bufsiz)
134 {
135 struct file *file;
136 int retval;
137 @@ -367,8 +368,8 @@
138 return do_mount("", dirname, "proc", flags, NULL);
139 }
140
141 -SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, char __user *, path,
142 - int, flag, void __user *, data)
143 +asmlinkage int
144 +osf_mount(unsigned long typenr, char __user *path, int flag, void __user *data)
145 {
146 int retval = -EINVAL;
147 char *name;
148 @@ -398,7 +399,8 @@
149 return retval;
150 }
151
152 -SYSCALL_DEFINE1(osf_utsname, char __user *, name)
153 +asmlinkage int
154 +osf_utsname(char __user *name)
155 {
156 int error;
157
158 @@ -421,12 +423,14 @@
159 return error;
160 }
161
162 -SYSCALL_DEFINE0(getpagesize)
163 +asmlinkage unsigned long
164 +sys_getpagesize(void)
165 {
166 return PAGE_SIZE;
167 }
168
169 -SYSCALL_DEFINE0(getdtablesize)
170 +asmlinkage unsigned long
171 +sys_getdtablesize(void)
172 {
173 return sysctl_nr_open;
174 }
175 @@ -434,7 +438,8 @@
176 /*
177 * For compatibility with OSF/1 only. Use utsname(2) instead.
178 */
179 -SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen)
180 +asmlinkage int
181 +osf_getdomainname(char __user *name, int namelen)
182 {
183 unsigned len;
184 int i;
185 @@ -522,8 +527,8 @@
186 PL_DEL = 5, PL_FDEL = 6
187 };
188
189 -SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code,
190 - union pl_args __user *, args)
191 +asmlinkage long
192 +osf_proplist_syscall(enum pl_code code, union pl_args __user *args)
193 {
194 long error;
195 int __user *min_buf_size_ptr;
196 @@ -562,8 +567,8 @@
197 return error;
198 }
199
200 -SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss,
201 - struct sigstack __user *, uoss)
202 +asmlinkage int
203 +osf_sigstack(struct sigstack __user *uss, struct sigstack __user *uoss)
204 {
205 unsigned long usp = rdusp();
206 unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size;
207 @@ -603,7 +608,8 @@
208 return error;
209 }
210
211 -SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count)
212 +asmlinkage long
213 +osf_sysinfo(int command, char __user *buf, long count)
214 {
215 char *sysinfo_table[] = {
216 utsname()->sysname,
217 @@ -641,8 +647,9 @@
218 return err;
219 }
220
221 -SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
222 - unsigned long, nbytes, int __user *, start, void __user *, arg)
223 +asmlinkage unsigned long
224 +osf_getsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
225 + int __user *start, void __user *arg)
226 {
227 unsigned long w;
228 struct percpu_struct *cpu;
229 @@ -698,8 +705,9 @@
230 return -EOPNOTSUPP;
231 }
232
233 -SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer,
234 - unsigned long, nbytes, int __user *, start, void __user *, arg)
235 +asmlinkage unsigned long
236 +osf_setsysinfo(unsigned long op, void __user *buffer, unsigned long nbytes,
237 + int __user *start, void __user *arg)
238 {
239 switch (op) {
240 case SSI_IEEE_FP_CONTROL: {
241 @@ -872,8 +880,8 @@
242 value->tv_sec = jiffies / HZ;
243 }
244
245 -SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv,
246 - struct timezone __user *, tz)
247 +asmlinkage int
248 +osf_gettimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
249 {
250 if (tv) {
251 struct timeval ktv;
252 @@ -888,8 +896,8 @@
253 return 0;
254 }
255
256 -SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv,
257 - struct timezone __user *, tz)
258 +asmlinkage int
259 +osf_settimeofday(struct timeval32 __user *tv, struct timezone __user *tz)
260 {
261 struct timespec kts;
262 struct timezone ktz;
263 @@ -908,7 +916,8 @@
264 return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
265 }
266
267 -SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it)
268 +asmlinkage int
269 +osf_getitimer(int which, struct itimerval32 __user *it)
270 {
271 struct itimerval kit;
272 int error;
273 @@ -920,8 +929,8 @@
274 return error;
275 }
276
277 -SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in,
278 - struct itimerval32 __user *, out)
279 +asmlinkage int
280 +osf_setitimer(int which, struct itimerval32 __user *in, struct itimerval32 __user *out)
281 {
282 struct itimerval kin, kout;
283 int error;
284 @@ -943,8 +952,8 @@
285
286 }
287
288 -SYSCALL_DEFINE2(osf_utimes, char __user *, filename,
289 - struct timeval32 __user *, tvs)
290 +asmlinkage int
291 +osf_utimes(char __user *filename, struct timeval32 __user *tvs)
292 {
293 struct timespec tv[2];
294
295 @@ -970,8 +979,9 @@
296 #define MAX_SELECT_SECONDS \
297 ((unsigned long) (MAX_SCHEDULE_TIMEOUT / HZ)-1)
298
299 -SYSCALL_DEFINE5(osf_select, int, n, fd_set __user *, inp, fd_set __user *, outp,
300 - fd_set __user *, exp, struct timeval32 __user *, tvp)
301 +asmlinkage int
302 +osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
303 + struct timeval32 __user *tvp)
304 {
305 struct timespec end_time, *to = NULL;
306 if (tvp) {
307 @@ -1016,7 +1026,8 @@
308 long ru_nivcsw; /* involuntary " */
309 };
310
311 -SYSCALL_DEFINE2(osf_getrusage, int, who, struct rusage32 __user *, ru)
312 +asmlinkage int
313 +osf_getrusage(int who, struct rusage32 __user *ru)
314 {
315 struct rusage32 r;
316
317 @@ -1042,8 +1053,9 @@
318 return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0;
319 }
320
321 -SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options,
322 - struct rusage32 __user *, ur)
323 +asmlinkage long
324 +osf_wait4(pid_t pid, int __user *ustatus, int options,
325 + struct rusage32 __user *ur)
326 {
327 struct rusage r;
328 long ret, err;
329 @@ -1089,8 +1101,8 @@
330 * seems to be a timeval pointer, and I suspect the second
331 * one is the time remaining.. Ho humm.. No documentation.
332 */
333 -SYSCALL_DEFINE2(osf_usleep_thread, struct timeval32 __user *, sleep,
334 - struct timeval32 __user *, remain)
335 +asmlinkage int
336 +osf_usleep_thread(struct timeval32 __user *sleep, struct timeval32 __user *remain)
337 {
338 struct timeval tmp;
339 unsigned long ticks;
340 @@ -1143,7 +1155,8 @@
341 int :32; int :32; int :32; int :32;
342 };
343
344 -SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
345 +asmlinkage int
346 +sys_old_adjtimex(struct timex32 __user *txc_p)
347 {
348 struct timex txc;
349 int ret;
350 @@ -1254,8 +1267,8 @@
351 return 0;
352 }
353
354 -SYSCALL_DEFINE3(osf_readv, unsigned long, fd,
355 - const struct iovec __user *, vector, unsigned long, count)
356 +asmlinkage ssize_t
357 +osf_readv(unsigned long fd, const struct iovec __user * vector, unsigned long count)
358 {
359 if (unlikely(personality(current->personality) == PER_OSF4))
360 if (osf_fix_iov_len(vector, count))
361 @@ -1263,8 +1276,8 @@
362 return sys_readv(fd, vector, count);
363 }
364
365 -SYSCALL_DEFINE3(osf_writev, unsigned long, fd,
366 - const struct iovec __user *, vector, unsigned long, count)
367 +asmlinkage ssize_t
368 +osf_writev(unsigned long fd, const struct iovec __user * vector, unsigned long count)
369 {
370 if (unlikely(personality(current->personality) == PER_OSF4))
371 if (osf_fix_iov_len(vector, count))
372 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c
373 --- linux-2.6.29.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 22:04:41.000000000 +0200
374 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/pci-noop.c 2009-05-10 23:48:27.000000000 +0200
375 @@ -109,8 +109,7 @@
376 /* Stubs for the routines in pci_iommu.c: */
377
378 void *
379 -__pci_alloc_consistent(struct pci_dev *pdev, size_t size,
380 - dma_addr_t *dma_addrp, gfp_t gfp)
381 +pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp)
382 {
383 return NULL;
384 }
385 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/process.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c
386 --- linux-2.6.29.owrt/arch/alpha/kernel/process.c 2009-05-10 22:04:41.000000000 +0200
387 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/process.c 2009-05-10 23:48:27.000000000 +0200
388 @@ -93,8 +93,8 @@
389 if (cpuid != boot_cpuid) {
390 flags |= 0x00040000UL; /* "remain halted" */
391 *pflags = flags;
392 - set_cpu_present(cpuid, false);
393 - set_cpu_possible(cpuid, false);
394 + cpu_clear(cpuid, cpu_present_map);
395 + cpu_clear(cpuid, cpu_possible_map);
396 halt();
397 }
398 #endif
399 @@ -120,8 +120,8 @@
400
401 #ifdef CONFIG_SMP
402 /* Wait for the secondaries to halt. */
403 - set_cpu_present(boot_cpuid, false);
404 - set_cpu_possible(boot_cpuid, false);
405 + cpu_clear(boot_cpuid, cpu_present_map);
406 + cpu_clear(boot_cpuid, cpu_possible_map);
407 while (cpus_weight(cpu_present_map))
408 barrier();
409 #endif
410 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/signal.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c
411 --- linux-2.6.29.owrt/arch/alpha/kernel/signal.c 2009-05-10 22:04:41.000000000 +0200
412 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/signal.c 2009-05-10 23:48:27.000000000 +0200
413 @@ -19,7 +19,6 @@
414 #include <linux/tty.h>
415 #include <linux/binfmts.h>
416 #include <linux/bitops.h>
417 -#include <linux/syscalls.h>
418
419 #include <asm/uaccess.h>
420 #include <asm/sigcontext.h>
421 @@ -52,8 +51,8 @@
422 * Note that we don't need to acquire the kernel lock for SMP
423 * operation, as all of this is local to this thread.
424 */
425 -SYSCALL_DEFINE3(osf_sigprocmask, int, how, unsigned long, newmask,
426 - struct pt_regs *, regs)
427 +asmlinkage unsigned long
428 +do_osf_sigprocmask(int how, unsigned long newmask, struct pt_regs *regs)
429 {
430 unsigned long oldmask = -EINVAL;
431
432 @@ -82,9 +81,9 @@
433 return oldmask;
434 }
435
436 -SYSCALL_DEFINE3(osf_sigaction, int, sig,
437 - const struct osf_sigaction __user *, act,
438 - struct osf_sigaction __user *, oact)
439 +asmlinkage int
440 +osf_sigaction(int sig, const struct osf_sigaction __user *act,
441 + struct osf_sigaction __user *oact)
442 {
443 struct k_sigaction new_ka, old_ka;
444 int ret;
445 @@ -113,9 +112,10 @@
446 return ret;
447 }
448
449 -SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,
450 - struct sigaction __user *, oact,
451 - size_t, sigsetsize, void __user *, restorer)
452 +asmlinkage long
453 +sys_rt_sigaction(int sig, const struct sigaction __user *act,
454 + struct sigaction __user *oact,
455 + size_t sigsetsize, void __user *restorer)
456 {
457 struct k_sigaction new_ka, old_ka;
458 int ret;
459 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/smp.c linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c
460 --- linux-2.6.29.owrt/arch/alpha/kernel/smp.c 2009-05-10 22:04:41.000000000 +0200
461 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/smp.c 2009-05-10 23:48:27.000000000 +0200
462 @@ -121,11 +121,10 @@
463 {
464 int cpuid = hard_smp_processor_id();
465
466 - if (cpu_online(cpuid)) {
467 + if (cpu_test_and_set(cpuid, cpu_online_map)) {
468 printk("??, cpu 0x%x already present??\n", cpuid);
469 BUG();
470 }
471 - set_cpu_online(cpuid, true);
472
473 /* Turn on machine checks. */
474 wrmces(7);
475 @@ -436,8 +435,8 @@
476 ((char *)cpubase + i*hwrpb->processor_size);
477 if ((cpu->flags & 0x1cc) == 0x1cc) {
478 smp_num_probed++;
479 - set_cpu_possible(i, true);
480 - set_cpu_present(i, true);
481 + cpu_set(i, cpu_possible_map);
482 + cpu_set(i, cpu_present_map);
483 cpu->pal_revision = boot_cpu_palrev;
484 }
485
486 @@ -470,8 +469,8 @@
487
488 /* Nothing to do on a UP box, or when told not to. */
489 if (smp_num_probed == 1 || max_cpus == 0) {
490 - init_cpu_possible(cpumask_of(boot_cpuid));
491 - init_cpu_present(cpumask_of(boot_cpuid));
492 + cpu_possible_map = cpumask_of_cpu(boot_cpuid);
493 + cpu_present_map = cpumask_of_cpu(boot_cpuid);
494 printk(KERN_INFO "SMP mode deactivated.\n");
495 return;
496 }
497 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/alpha/kernel/systbls.S linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S
498 --- linux-2.6.29.owrt/arch/alpha/kernel/systbls.S 2009-05-10 22:04:41.000000000 +0200
499 +++ linux-2.6.29-rc3.owrt/arch/alpha/kernel/systbls.S 2009-05-10 23:48:27.000000000 +0200
500 @@ -17,7 +17,7 @@
501 .quad sys_write
502 .quad alpha_ni_syscall /* 5 */
503 .quad sys_close
504 - .quad sys_osf_wait4
505 + .quad osf_wait4
506 .quad alpha_ni_syscall
507 .quad sys_link
508 .quad sys_unlink /* 10 */
509 @@ -27,11 +27,11 @@
510 .quad sys_mknod
511 .quad sys_chmod /* 15 */
512 .quad sys_chown
513 - .quad sys_osf_brk
514 + .quad osf_brk
515 .quad alpha_ni_syscall
516 .quad sys_lseek
517 .quad sys_getxpid /* 20 */
518 - .quad sys_osf_mount
519 + .quad osf_mount
520 .quad sys_umount
521 .quad sys_setuid
522 .quad sys_getxuid
523 @@ -53,7 +53,7 @@
524 .quad alpha_ni_syscall /* 40 */
525 .quad sys_dup
526 .quad sys_alpha_pipe
527 - .quad sys_osf_set_program_attributes
528 + .quad osf_set_program_attributes
529 .quad alpha_ni_syscall
530 .quad sys_open /* 45 */
531 .quad alpha_ni_syscall
532 @@ -81,7 +81,7 @@
533 .quad sys_newlstat
534 .quad alpha_ni_syscall
535 .quad alpha_ni_syscall /* 70 */
536 - .quad sys_osf_mmap
537 + .quad osf_mmap
538 .quad alpha_ni_syscall
539 .quad sys_munmap
540 .quad sys_mprotect
541 @@ -94,17 +94,17 @@
542 .quad sys_setgroups /* 80 */
543 .quad alpha_ni_syscall
544 .quad sys_setpgid
545 - .quad sys_osf_setitimer
546 + .quad osf_setitimer
547 .quad alpha_ni_syscall
548 .quad alpha_ni_syscall /* 85 */
549 - .quad sys_osf_getitimer
550 + .quad osf_getitimer
551 .quad sys_gethostname
552 .quad sys_sethostname
553 .quad sys_getdtablesize
554 .quad sys_dup2 /* 90 */
555 .quad sys_newfstat
556 .quad sys_fcntl
557 - .quad sys_osf_select
558 + .quad osf_select
559 .quad sys_poll
560 .quad sys_fsync /* 95 */
561 .quad sys_setpriority
562 @@ -123,22 +123,22 @@
563 .quad alpha_ni_syscall
564 .quad alpha_ni_syscall /* 110 */
565 .quad sys_sigsuspend
566 - .quad sys_osf_sigstack
567 + .quad osf_sigstack
568 .quad sys_recvmsg
569 .quad sys_sendmsg
570 .quad alpha_ni_syscall /* 115 */
571 - .quad sys_osf_gettimeofday
572 - .quad sys_osf_getrusage
573 + .quad osf_gettimeofday
574 + .quad osf_getrusage
575 .quad sys_getsockopt
576 .quad alpha_ni_syscall
577 #ifdef CONFIG_OSF4_COMPAT
578 - .quad sys_osf_readv /* 120 */
579 - .quad sys_osf_writev
580 + .quad osf_readv /* 120 */
581 + .quad osf_writev
582 #else
583 .quad sys_readv /* 120 */
584 .quad sys_writev
585 #endif
586 - .quad sys_osf_settimeofday
587 + .quad osf_settimeofday
588 .quad sys_fchown
589 .quad sys_fchmod
590 .quad sys_recvfrom /* 125 */
591 @@ -154,7 +154,7 @@
592 .quad sys_socketpair /* 135 */
593 .quad sys_mkdir
594 .quad sys_rmdir
595 - .quad sys_osf_utimes
596 + .quad osf_utimes
597 .quad alpha_ni_syscall
598 .quad alpha_ni_syscall /* 140 */
599 .quad sys_getpeername
600 @@ -172,16 +172,16 @@
601 .quad alpha_ni_syscall
602 .quad alpha_ni_syscall
603 .quad alpha_ni_syscall /* 155 */
604 - .quad sys_osf_sigaction
605 + .quad osf_sigaction
606 .quad alpha_ni_syscall
607 .quad alpha_ni_syscall
608 - .quad sys_osf_getdirentries
609 - .quad sys_osf_statfs /* 160 */
610 - .quad sys_osf_fstatfs
611 + .quad osf_getdirentries
612 + .quad osf_statfs /* 160 */
613 + .quad osf_fstatfs
614 .quad alpha_ni_syscall
615 .quad alpha_ni_syscall
616 .quad alpha_ni_syscall
617 - .quad sys_osf_getdomainname /* 165 */
618 + .quad osf_getdomainname /* 165 */
619 .quad sys_setdomainname
620 .quad alpha_ni_syscall
621 .quad alpha_ni_syscall
622 @@ -224,7 +224,7 @@
623 .quad sys_semctl
624 .quad sys_semget /* 205 */
625 .quad sys_semop
626 - .quad sys_osf_utsname
627 + .quad osf_utsname
628 .quad sys_lchown
629 .quad sys_shmat
630 .quad sys_shmctl /* 210 */
631 @@ -258,23 +258,23 @@
632 .quad alpha_ni_syscall
633 .quad alpha_ni_syscall
634 .quad alpha_ni_syscall /* 240 */
635 - .quad sys_osf_sysinfo
636 + .quad osf_sysinfo
637 .quad alpha_ni_syscall
638 .quad alpha_ni_syscall
639 - .quad sys_osf_proplist_syscall
640 + .quad osf_proplist_syscall
641 .quad alpha_ni_syscall /* 245 */
642 .quad alpha_ni_syscall
643 .quad alpha_ni_syscall
644 .quad alpha_ni_syscall
645 .quad alpha_ni_syscall
646 .quad alpha_ni_syscall /* 250 */
647 - .quad sys_osf_usleep_thread
648 + .quad osf_usleep_thread
649 .quad alpha_ni_syscall
650 .quad alpha_ni_syscall
651 .quad sys_sysfs
652 .quad alpha_ni_syscall /* 255 */
653 - .quad sys_osf_getsysinfo
654 - .quad sys_osf_setsysinfo
655 + .quad osf_getsysinfo
656 + .quad osf_setsysinfo
657 .quad alpha_ni_syscall
658 .quad alpha_ni_syscall
659 .quad alpha_ni_syscall /* 260 */
660 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/configs/at91sam9260ek_defconfig linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9260ek_defconfig
661 --- linux-2.6.29.owrt/arch/arm/configs/at91sam9260ek_defconfig 2009-05-10 22:04:41.000000000 +0200
662 +++ linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9260ek_defconfig 2009-05-10 23:48:27.000000000 +0200
663 @@ -608,7 +608,7 @@
664 # Watchdog Device Drivers
665 #
666 # CONFIG_SOFT_WATCHDOG is not set
667 -CONFIG_AT91SAM9X_WATCHDOG=y
668 +CONFIG_AT91SAM9_WATCHDOG=y
669
670 #
671 # USB-based Watchdog Cards
672 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/configs/at91sam9261ek_defconfig linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9261ek_defconfig
673 --- linux-2.6.29.owrt/arch/arm/configs/at91sam9261ek_defconfig 2009-05-10 22:04:41.000000000 +0200
674 +++ linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9261ek_defconfig 2009-05-10 23:48:27.000000000 +0200
675 @@ -700,7 +700,7 @@
676 # Watchdog Device Drivers
677 #
678 # CONFIG_SOFT_WATCHDOG is not set
679 -CONFIG_AT91SAM9X_WATCHDOG=y
680 +CONFIG_AT91SAM9_WATCHDOG=y
681
682 #
683 # USB-based Watchdog Cards
684 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/configs/at91sam9263ek_defconfig linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9263ek_defconfig
685 --- linux-2.6.29.owrt/arch/arm/configs/at91sam9263ek_defconfig 2009-05-10 22:04:41.000000000 +0200
686 +++ linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9263ek_defconfig 2009-05-10 23:48:27.000000000 +0200
687 @@ -710,7 +710,7 @@
688 # Watchdog Device Drivers
689 #
690 # CONFIG_SOFT_WATCHDOG is not set
691 -CONFIG_AT91SAM9X_WATCHDOG=y
692 +CONFIG_AT91SAM9_WATCHDOG=y
693
694 #
695 # USB-based Watchdog Cards
696 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/configs/at91sam9rlek_defconfig linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9rlek_defconfig
697 --- linux-2.6.29.owrt/arch/arm/configs/at91sam9rlek_defconfig 2009-05-10 22:04:41.000000000 +0200
698 +++ linux-2.6.29-rc3.owrt/arch/arm/configs/at91sam9rlek_defconfig 2009-05-10 23:48:27.000000000 +0200
699 @@ -606,7 +606,7 @@
700 # Watchdog Device Drivers
701 #
702 # CONFIG_SOFT_WATCHDOG is not set
703 -CONFIG_AT91SAM9X_WATCHDOG=y
704 +CONFIG_AT91SAM9_WATCHDOG=y
705
706 #
707 # Sonics Silicon Backplane
708 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/configs/qil-a9260_defconfig linux-2.6.29-rc3.owrt/arch/arm/configs/qil-a9260_defconfig
709 --- linux-2.6.29.owrt/arch/arm/configs/qil-a9260_defconfig 2009-05-10 22:04:41.000000000 +0200
710 +++ linux-2.6.29-rc3.owrt/arch/arm/configs/qil-a9260_defconfig 2009-05-10 23:48:27.000000000 +0200
711 @@ -727,7 +727,7 @@
712 # Watchdog Device Drivers
713 #
714 # CONFIG_SOFT_WATCHDOG is not set
715 -# CONFIG_AT91SAM9X_WATCHDOG is not set
716 +# CONFIG_AT91SAM9_WATCHDOG is not set
717
718 #
719 # USB-based Watchdog Cards
720 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/elf.c linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c
721 --- linux-2.6.29.owrt/arch/arm/kernel/elf.c 2009-05-10 22:04:41.000000000 +0200
722 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/elf.c 2009-05-10 23:48:27.000000000 +0200
723 @@ -74,9 +74,9 @@
724 */
725 int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
726 {
727 - if (executable_stack != EXSTACK_DISABLE_X)
728 + if (executable_stack != EXSTACK_ENABLE_X)
729 return 1;
730 - if (cpu_architecture() < CPU_ARCH_ARMv6)
731 + if (cpu_architecture() <= CPU_ARCH_ARMv6)
732 return 1;
733 return 0;
734 }
735 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S
736 --- linux-2.6.29.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 22:04:41.000000000 +0200
737 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-armv.S 2009-05-10 23:48:27.000000000 +0200
738 @@ -650,7 +650,6 @@
739 no_fp: mov pc, lr
740
741 __und_usr_unknown:
742 - enable_irq
743 mov r0, sp
744 adr lr, ret_from_exception
745 b do_undefinstr
746 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/entry-common.S linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S
747 --- linux-2.6.29.owrt/arch/arm/kernel/entry-common.S 2009-05-10 22:04:41.000000000 +0200
748 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/entry-common.S 2009-05-10 23:48:27.000000000 +0200
749 @@ -111,7 +111,6 @@
750 .globl mcount_call
751 mcount_call:
752 bl ftrace_stub
753 - ldr lr, [fp, #-4] @ restore lr
754 ldmia sp!, {r0-r3, pc}
755
756 ENTRY(ftrace_caller)
757 @@ -123,7 +122,6 @@
758 .globl ftrace_call
759 ftrace_call:
760 bl ftrace_stub
761 - ldr lr, [fp, #-4] @ restore lr
762 ldmia sp!, {r0-r3, pc}
763
764 #else
765 @@ -135,16 +133,14 @@
766 adr r0, ftrace_stub
767 cmp r0, r2
768 bne trace
769 - ldr lr, [fp, #-4] @ restore lr
770 ldmia sp!, {r0-r3, pc}
771
772 trace:
773 - ldr r1, [fp, #-4] @ lr of instrumented routine
774 + ldr r1, [fp, #-4]
775 mov r0, lr
776 sub r0, r0, #MCOUNT_INSN_SIZE
777 mov lr, pc
778 mov pc, r2
779 - mov lr, r1 @ restore lr
780 ldmia sp!, {r0-r3, pc}
781
782 #endif /* CONFIG_DYNAMIC_FTRACE */
783 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/fiq.c linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c
784 --- linux-2.6.29.owrt/arch/arm/kernel/fiq.c 2009-05-10 22:04:41.000000000 +0200
785 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/fiq.c 2009-05-10 23:48:27.000000000 +0200
786 @@ -88,7 +88,7 @@
787 * disable irqs for the duration. Note - these functions are almost
788 * entirely coded in assembly.
789 */
790 -void __naked set_fiq_regs(struct pt_regs *regs)
791 +void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
792 {
793 register unsigned long tmp;
794 asm volatile (
795 @@ -106,7 +106,7 @@
796 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
797 }
798
799 -void __naked get_fiq_regs(struct pt_regs *regs)
800 +void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
801 {
802 register unsigned long tmp;
803 asm volatile (
804 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/irq.c linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c
805 --- linux-2.6.29.owrt/arch/arm/kernel/irq.c 2009-05-10 22:04:41.000000000 +0200
806 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/irq.c 2009-05-10 23:48:27.000000000 +0200
807 @@ -101,7 +101,7 @@
808 /* Handle bad interrupts */
809 static struct irq_desc bad_irq_desc = {
810 .handle_irq = handle_bad_irq,
811 - .lock = __SPIN_LOCK_UNLOCKED(bad_irq_desc.lock),
812 + .lock = SPIN_LOCK_UNLOCKED
813 };
814
815 /*
816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c
817 --- linux-2.6.29.owrt/arch/arm/kernel/machine_kexec.c 2009-05-10 22:04:41.000000000 +0200
818 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/machine_kexec.c 2009-05-10 23:48:27.000000000 +0200
819 @@ -13,8 +13,8 @@
820 #include <asm/cacheflush.h>
821 #include <asm/mach-types.h>
822
823 -extern const unsigned char relocate_new_kernel[];
824 -extern const unsigned int relocate_new_kernel_size;
825 +const extern unsigned char relocate_new_kernel[];
826 +const extern unsigned int relocate_new_kernel_size;
827
828 extern void setup_mm_for_reboot(char mode);
829
830 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/kernel/setup.c linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c
831 --- linux-2.6.29.owrt/arch/arm/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
832 +++ linux-2.6.29-rc3.owrt/arch/arm/kernel/setup.c 2009-05-10 23:48:27.000000000 +0200
833 @@ -233,13 +233,12 @@
834 unsigned int cachetype = read_cpuid_cachetype();
835 unsigned int arch = cpu_architecture();
836
837 - if (arch >= CPU_ARCH_ARMv6) {
838 - if ((cachetype & (7 << 29)) == 4 << 29) {
839 - /* ARMv7 register format */
840 - cacheid = CACHEID_VIPT_NONALIASING;
841 - if ((cachetype & (3 << 14)) == 1 << 14)
842 - cacheid |= CACHEID_ASID_TAGGED;
843 - } else if (cachetype & (1 << 23))
844 + if (arch >= CPU_ARCH_ARMv7) {
845 + cacheid = CACHEID_VIPT_NONALIASING;
846 + if ((cachetype & (3 << 14)) == 1 << 14)
847 + cacheid |= CACHEID_ASID_TAGGED;
848 + } else if (arch >= CPU_ARCH_ARMv6) {
849 + if (cachetype & (1 << 23))
850 cacheid = CACHEID_VIPT_ALIASING;
851 else
852 cacheid = CACHEID_VIPT_NONALIASING;
853 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c
854 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91cap9_devices.c 2009-05-10 22:04:41.000000000 +0200
855 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91cap9_devices.c 2009-05-10 23:48:27.000000000 +0200
856 @@ -697,7 +697,7 @@
857 * Watchdog
858 * -------------------------------------------------------------------- */
859
860 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
861 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
862 static struct platform_device at91cap9_wdt_device = {
863 .name = "at91_wdt",
864 .id = -1,
865 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c
866 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 22:04:41.000000000 +0200
867 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9260_devices.c 2009-05-10 23:48:27.000000000 +0200
868 @@ -643,7 +643,7 @@
869 * Watchdog
870 * -------------------------------------------------------------------- */
871
872 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
873 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
874 static struct platform_device at91sam9260_wdt_device = {
875 .name = "at91_wdt",
876 .id = -1,
877 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c
878 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 22:04:41.000000000 +0200
879 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9261_devices.c 2009-05-10 23:48:27.000000000 +0200
880 @@ -621,7 +621,7 @@
881 * Watchdog
882 * -------------------------------------------------------------------- */
883
884 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
885 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
886 static struct platform_device at91sam9261_wdt_device = {
887 .name = "at91_wdt",
888 .id = -1,
889 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c
890 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 22:04:41.000000000 +0200
891 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9263_devices.c 2009-05-10 23:48:27.000000000 +0200
892 @@ -347,111 +347,6 @@
893 void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
894 #endif
895
896 -/* --------------------------------------------------------------------
897 - * Compact Flash (PCMCIA or IDE)
898 - * -------------------------------------------------------------------- */
899 -
900 -#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
901 - defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
902 -
903 -static struct at91_cf_data cf0_data;
904 -
905 -static struct resource cf0_resources[] = {
906 - [0] = {
907 - .start = AT91_CHIPSELECT_4,
908 - .end = AT91_CHIPSELECT_4 + SZ_256M - 1,
909 - .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
910 - }
911 -};
912 -
913 -static struct platform_device cf0_device = {
914 - .id = 0,
915 - .dev = {
916 - .platform_data = &cf0_data,
917 - },
918 - .resource = cf0_resources,
919 - .num_resources = ARRAY_SIZE(cf0_resources),
920 -};
921 -
922 -static struct at91_cf_data cf1_data;
923 -
924 -static struct resource cf1_resources[] = {
925 - [0] = {
926 - .start = AT91_CHIPSELECT_5,
927 - .end = AT91_CHIPSELECT_5 + SZ_256M - 1,
928 - .flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
929 - }
930 -};
931 -
932 -static struct platform_device cf1_device = {
933 - .id = 1,
934 - .dev = {
935 - .platform_data = &cf1_data,
936 - },
937 - .resource = cf1_resources,
938 - .num_resources = ARRAY_SIZE(cf1_resources),
939 -};
940 -
941 -void __init at91_add_device_cf(struct at91_cf_data *data)
942 -{
943 - unsigned long ebi0_csa;
944 - struct platform_device *pdev;
945 -
946 - if (!data)
947 - return;
948 -
949 - /*
950 - * assign CS4 or CS5 to SMC with Compact Flash logic support,
951 - * we assume SMC timings are configured by board code,
952 - * except True IDE where timings are controlled by driver
953 - */
954 - ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
955 - switch (data->chipselect) {
956 - case 4:
957 - at91_set_A_periph(AT91_PIN_PD6, 0); /* EBI0_NCS4/CFCS0 */
958 - ebi0_csa |= AT91_MATRIX_EBI0_CS4A_SMC_CF1;
959 - cf0_data = *data;
960 - pdev = &cf0_device;
961 - break;
962 - case 5:
963 - at91_set_A_periph(AT91_PIN_PD7, 0); /* EBI0_NCS5/CFCS1 */
964 - ebi0_csa |= AT91_MATRIX_EBI0_CS5A_SMC_CF2;
965 - cf1_data = *data;
966 - pdev = &cf1_device;
967 - break;
968 - default:
969 - printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
970 - data->chipselect);
971 - return;
972 - }
973 - at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa);
974 -
975 - if (data->det_pin) {
976 - at91_set_gpio_input(data->det_pin, 1);
977 - at91_set_deglitch(data->det_pin, 1);
978 - }
979 -
980 - if (data->irq_pin) {
981 - at91_set_gpio_input(data->irq_pin, 1);
982 - at91_set_deglitch(data->irq_pin, 1);
983 - }
984 -
985 - if (data->vcc_pin)
986 - /* initially off */
987 - at91_set_gpio_output(data->vcc_pin, 0);
988 -
989 - /* enable EBI controlled pins */
990 - at91_set_A_periph(AT91_PIN_PD5, 1); /* NWAIT */
991 - at91_set_A_periph(AT91_PIN_PD8, 0); /* CFCE1 */
992 - at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */
993 - at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
994 -
995 - pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
996 - platform_device_register(pdev);
997 -}
998 -#else
999 -void __init at91_add_device_cf(struct at91_cf_data *data) {}
1000 -#endif
1001
1002 /* --------------------------------------------------------------------
1003 * NAND / SmartMedia
1004 @@ -959,7 +854,7 @@
1005 * Watchdog
1006 * -------------------------------------------------------------------- */
1007
1008 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
1009 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
1010 static struct platform_device at91sam9263_wdt_device = {
1011 .name = "at91_wdt",
1012 .id = -1,
1013 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c
1014 --- linux-2.6.29.owrt/arch/arm/mach-at91/at91sam9rl_devices.c 2009-05-10 22:04:41.000000000 +0200
1015 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/at91sam9rl_devices.c 2009-05-10 23:48:27.000000000 +0200
1016 @@ -609,7 +609,7 @@
1017 * Watchdog
1018 * -------------------------------------------------------------------- */
1019
1020 -#if defined(CONFIG_AT91SAM9X_WATCHDOG) || defined(CONFIG_AT91SAM9X_WATCHDOG_MODULE)
1021 +#if defined(CONFIG_AT91SAM9_WATCHDOG) || defined(CONFIG_AT91SAM9_WATCHDOG_MODULE)
1022 static struct platform_device at91sam9rl_wdt_device = {
1023 .name = "at91_wdt",
1024 .id = -1,
1025 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c
1026 --- linux-2.6.29.owrt/arch/arm/mach-at91/gpio.c 2009-05-10 22:04:41.000000000 +0200
1027 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/gpio.c 2009-05-10 23:48:27.000000000 +0200
1028 @@ -490,8 +490,7 @@
1029
1030 /*--------------------------------------------------------------------------*/
1031
1032 -/*
1033 - * This lock class tells lockdep that GPIO irqs are in a different
1034 +/* This lock class tells lockdep that GPIO irqs are in a different
1035 * category than their parents, so it won't report false recursion.
1036 */
1037 static struct lock_class_key gpio_lock_class;
1038 @@ -510,6 +509,9 @@
1039 unsigned id = this->id;
1040 unsigned i;
1041
1042 + /* enable PIO controller's clock */
1043 + clk_enable(this->clock);
1044 +
1045 __raw_writel(~0, this->regbase + PIO_IDR);
1046
1047 for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
1048 @@ -554,14 +556,7 @@
1049 data->chipbase = PIN_BASE + i * 32;
1050 data->regbase = data->offset + (void __iomem *)AT91_VA_BASE_SYS;
1051
1052 - /* enable PIO controller's clock */
1053 - clk_enable(data->clock);
1054 -
1055 - /*
1056 - * Some processors share peripheral ID between multiple GPIO banks.
1057 - * SAM9263 (PIOC, PIOD, PIOE)
1058 - * CAP9 (PIOA, PIOB, PIOC, PIOD)
1059 - */
1060 + /* AT91SAM9263_ID_PIOCDE groups PIOC, PIOD, PIOE */
1061 if (last && last->id == data->id)
1062 last->next = data;
1063 }
1064 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h
1065 --- linux-2.6.29.owrt/arch/arm/mach-at91/include/mach/board.h 2009-05-10 22:04:41.000000000 +0200
1066 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/include/mach/board.h 2009-05-10 23:48:27.000000000 +0200
1067 @@ -56,9 +56,6 @@
1068 u8 vcc_pin; /* power switching */
1069 u8 rst_pin; /* card reset */
1070 u8 chipselect; /* EBI Chip Select number */
1071 - u8 flags;
1072 -#define AT91_CF_TRUE_IDE 0x01
1073 -#define AT91_IDE_SWAP_A0_A2 0x02
1074 };
1075 extern void __init at91_add_device_cf(struct at91_cf_data *data);
1076
1077 @@ -96,7 +93,6 @@
1078 u8 enable_pin; /* chip enable */
1079 u8 det_pin; /* card detect */
1080 u8 rdy_pin; /* ready/busy */
1081 - u8 rdy_pin_active_low; /* rdy_pin value is inverted */
1082 u8 ale; /* address line number connected to ALE */
1083 u8 cle; /* address line number connected to CLE */
1084 u8 bus_width_16; /* buswidth is 16 bit */
1085 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-at91/pm.c linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c
1086 --- linux-2.6.29.owrt/arch/arm/mach-at91/pm.c 2009-05-10 22:04:41.000000000 +0200
1087 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-at91/pm.c 2009-05-10 23:48:27.000000000 +0200
1088 @@ -332,6 +332,7 @@
1089 at91_sys_read(AT91_AIC_IPR) & at91_sys_read(AT91_AIC_IMR));
1090
1091 error:
1092 + sdram_selfrefresh_disable();
1093 target_state = PM_SUSPEND_ON;
1094 at91_irq_resume();
1095 at91_gpio_resume();
1096 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c
1097 --- linux-2.6.29.owrt/arch/arm/mach-davinci/board-evm.c 2009-05-10 22:04:41.000000000 +0200
1098 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/board-evm.c 2009-05-10 23:48:27.000000000 +0200
1099 @@ -311,9 +311,6 @@
1100 gpio_request(gpio + 7, "nCF_SEL");
1101 gpio_direction_output(gpio + 7, 1);
1102
1103 - /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
1104 - setup_usb(500, 8);
1105 -
1106 return 0;
1107 }
1108
1109 @@ -420,6 +417,9 @@
1110 platform_add_devices(davinci_evm_devices,
1111 ARRAY_SIZE(davinci_evm_devices));
1112 evm_init_i2c();
1113 +
1114 + /* irlml6401 sustains over 3A, switches 5V in under 8 msec */
1115 + setup_usb(500, 8);
1116 }
1117
1118 static __init void davinci_evm_irq_init(void)
1119 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c
1120 --- linux-2.6.29.owrt/arch/arm/mach-davinci/clock.c 2009-05-10 22:04:41.000000000 +0200
1121 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/clock.c 2009-05-10 23:48:27.000000000 +0200
1122 @@ -231,11 +231,6 @@
1123 .lpsc = DAVINCI_LPSC_GPIO,
1124 },
1125 {
1126 - .name = "usb",
1127 - .rate = &commonrate,
1128 - .lpsc = DAVINCI_LPSC_USB,
1129 - },
1130 - {
1131 .name = "AEMIFCLK",
1132 .rate = &commonrate,
1133 .lpsc = DAVINCI_LPSC_AEMIF,
1134 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c
1135 --- linux-2.6.29.owrt/arch/arm/mach-davinci/usb.c 2009-05-10 22:04:41.000000000 +0200
1136 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-davinci/usb.c 2009-05-10 23:48:27.000000000 +0200
1137 @@ -47,7 +47,6 @@
1138 #elif defined(CONFIG_USB_MUSB_HOST)
1139 .mode = MUSB_HOST,
1140 #endif
1141 - .clock = "usb",
1142 .config = &musb_config,
1143 };
1144
1145 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h
1146 --- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h 1970-01-01 01:00:00.000000000 +0100
1147 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/gesbc9312.h 2009-05-10 23:48:27.000000000 +0200
1148 @@ -0,0 +1,3 @@
1149 +/*
1150 + * arch/arm/mach-ep93xx/include/mach/gesbc9312.h
1151 + */
1152 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h
1153 --- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 22:04:41.000000000 +0200
1154 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/hardware.h 2009-05-10 23:48:27.000000000 +0200
1155 @@ -10,6 +10,7 @@
1156
1157 #include "platform.h"
1158
1159 +#include "gesbc9312.h"
1160 #include "ts72xx.h"
1161
1162 #endif
1163 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h
1164 --- linux-2.6.29.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 22:04:41.000000000 +0200
1165 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-ep93xx/include/mach/platform.h 2009-05-10 23:48:27.000000000 +0200
1166 @@ -4,8 +4,6 @@
1167
1168 #ifndef __ASSEMBLY__
1169
1170 -struct i2c_board_info;
1171 -
1172 struct ep93xx_eth_data
1173 {
1174 unsigned char dev_addr[6];
1175 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c
1176 --- linux-2.6.29.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 22:04:41.000000000 +0200
1177 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-kirkwood/irq.c 2009-05-10 23:48:27.000000000 +0200
1178 @@ -42,7 +42,7 @@
1179 writel(0, GPIO_EDGE_CAUSE(32));
1180
1181 for (i = IRQ_KIRKWOOD_GPIO_START; i < NR_IRQS; i++) {
1182 - set_irq_chip(i, &orion_gpio_irq_chip);
1183 + set_irq_chip(i, &orion_gpio_irq_level_chip);
1184 set_irq_handler(i, handle_level_irq);
1185 irq_desc[i].status |= IRQ_LEVEL;
1186 set_irq_flags(i, IRQF_VALID);
1187 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c
1188 --- linux-2.6.29.owrt/arch/arm/mach-msm/board-halibut.c 2009-05-10 22:04:41.000000000 +0200
1189 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-msm/board-halibut.c 2009-05-10 23:48:27.000000000 +0200
1190 @@ -27,7 +27,6 @@
1191 #include <asm/mach/map.h>
1192 #include <asm/mach/flash.h>
1193
1194 -#include <mach/irqs.h>
1195 #include <mach/board.h>
1196 #include <mach/msm_iomap.h>
1197
1198 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c
1199 --- linux-2.6.29.owrt/arch/arm/mach-mv78xx0/irq.c 2009-05-10 22:04:41.000000000 +0200
1200 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-mv78xx0/irq.c 2009-05-10 23:48:27.000000000 +0200
1201 @@ -40,7 +40,7 @@
1202 writel(0, GPIO_EDGE_CAUSE(0));
1203
1204 for (i = IRQ_MV78XX0_GPIO_START; i < NR_IRQS; i++) {
1205 - set_irq_chip(i, &orion_gpio_irq_chip);
1206 + set_irq_chip(i, &orion_gpio_irq_level_chip);
1207 set_irq_handler(i, handle_level_irq);
1208 irq_desc[i].status |= IRQ_LEVEL;
1209 set_irq_flags(i, IRQF_VALID);
1210 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c
1211 --- linux-2.6.29.owrt/arch/arm/mach-mx1/devices.c 2009-05-10 22:04:41.000000000 +0200
1212 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/devices.c 2009-05-10 23:48:27.000000000 +0200
1213 @@ -23,8 +23,6 @@
1214 #include <linux/init.h>
1215 #include <linux/platform_device.h>
1216 #include <linux/gpio.h>
1217 -
1218 -#include <mach/irqs.h>
1219 #include <mach/hardware.h>
1220
1221 static struct resource imx_csi_resources[] = {
1222 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c
1223 --- linux-2.6.29.owrt/arch/arm/mach-mx1/mx1ads.c 2009-05-10 22:04:41.000000000 +0200
1224 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-mx1/mx1ads.c 2009-05-10 23:48:27.000000000 +0200
1225 @@ -21,7 +21,6 @@
1226 #include <asm/mach/arch.h>
1227 #include <asm/mach/time.h>
1228
1229 -#include <mach/irqs.h>
1230 #include <mach/hardware.h>
1231 #include <mach/common.h>
1232 #include <mach/imx-uart.h>
1233 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c
1234 --- linux-2.6.29.owrt/arch/arm/mach-omap1/devices.c 2009-05-10 22:04:41.000000000 +0200
1235 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/devices.c 2009-05-10 23:48:27.000000000 +0200
1236 @@ -181,7 +181,7 @@
1237 }
1238 size = OMAP1_MMC_SIZE;
1239
1240 - omap_mmc_add("mmci-omap", i, base, size, irq, mmc_data[i]);
1241 + omap_mmc_add(i, base, size, irq, mmc_data[i]);
1242 };
1243 }
1244
1245 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c
1246 --- linux-2.6.29.owrt/arch/arm/mach-omap1/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
1247 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap1/mcbsp.c 2009-05-10 23:48:27.000000000 +0200
1248 @@ -28,8 +28,81 @@
1249 #define DPS_RSTCT2_PER_EN (1 << 0)
1250 #define DSP_RSTCT2_WD_PER_EN (1 << 1)
1251
1252 +struct mcbsp_internal_clk {
1253 + struct clk clk;
1254 + struct clk **childs;
1255 + int n_childs;
1256 +};
1257 +
1258 #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
1259 -const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
1260 +static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
1261 +{
1262 + const char *clk_names[] = { "dsp_ck", "api_ck", "dspxor_ck" };
1263 + int i;
1264 +
1265 + mclk->n_childs = ARRAY_SIZE(clk_names);
1266 + mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
1267 + GFP_KERNEL);
1268 +
1269 + for (i = 0; i < mclk->n_childs; i++) {
1270 + /* We fake a platform device to get correct device id */
1271 + struct platform_device pdev;
1272 +
1273 + pdev.dev.bus = &platform_bus_type;
1274 + pdev.id = mclk->clk.id;
1275 + mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
1276 + if (IS_ERR(mclk->childs[i]))
1277 + printk(KERN_ERR "Could not get clock %s (%d).\n",
1278 + clk_names[i], mclk->clk.id);
1279 + }
1280 +}
1281 +
1282 +static int omap_mcbsp_clk_enable(struct clk *clk)
1283 +{
1284 + struct mcbsp_internal_clk *mclk = container_of(clk,
1285 + struct mcbsp_internal_clk, clk);
1286 + int i;
1287 +
1288 + for (i = 0; i < mclk->n_childs; i++)
1289 + clk_enable(mclk->childs[i]);
1290 + return 0;
1291 +}
1292 +
1293 +static void omap_mcbsp_clk_disable(struct clk *clk)
1294 +{
1295 + struct mcbsp_internal_clk *mclk = container_of(clk,
1296 + struct mcbsp_internal_clk, clk);
1297 + int i;
1298 +
1299 + for (i = 0; i < mclk->n_childs; i++)
1300 + clk_disable(mclk->childs[i]);
1301 +}
1302 +
1303 +static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
1304 + {
1305 + .clk = {
1306 + .name = "mcbsp_clk",
1307 + .id = 1,
1308 + .enable = omap_mcbsp_clk_enable,
1309 + .disable = omap_mcbsp_clk_disable,
1310 + },
1311 + },
1312 + {
1313 + .clk = {
1314 + .name = "mcbsp_clk",
1315 + .id = 3,
1316 + .enable = omap_mcbsp_clk_enable,
1317 + .disable = omap_mcbsp_clk_disable,
1318 + },
1319 + },
1320 +};
1321 +
1322 +#define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks)
1323 +#else
1324 +#define omap_mcbsp_clks_size 0
1325 +static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
1326 +static inline void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
1327 +{ }
1328 #endif
1329
1330 static void omap1_mcbsp_request(unsigned int id)
1331 @@ -94,9 +167,8 @@
1332 .rx_irq = INT_McBSP1RX,
1333 .tx_irq = INT_McBSP1TX,
1334 .ops = &omap1_mcbsp_ops,
1335 - .clk_names = clk_names,
1336 - .num_clks = 3,
1337 - },
1338 + .clk_name = "mcbsp_clk",
1339 + },
1340 {
1341 .phys_base = OMAP1510_MCBSP2_BASE,
1342 .dma_rx_sync = OMAP_DMA_MCBSP2_RX,
1343 @@ -112,8 +184,7 @@
1344 .rx_irq = INT_McBSP3RX,
1345 .tx_irq = INT_McBSP3TX,
1346 .ops = &omap1_mcbsp_ops,
1347 - .clk_names = clk_names,
1348 - .num_clks = 3,
1349 + .clk_name = "mcbsp_clk",
1350 },
1351 };
1352 #define OMAP15XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap15xx_mcbsp_pdata)
1353 @@ -131,8 +202,7 @@
1354 .rx_irq = INT_McBSP1RX,
1355 .tx_irq = INT_McBSP1TX,
1356 .ops = &omap1_mcbsp_ops,
1357 - .clk_names = clk_names,
1358 - .num_clks = 3,
1359 + .clk_name = "mcbsp_clk",
1360 },
1361 {
1362 .phys_base = OMAP1610_MCBSP2_BASE,
1363 @@ -149,8 +219,7 @@
1364 .rx_irq = INT_McBSP3RX,
1365 .tx_irq = INT_McBSP3TX,
1366 .ops = &omap1_mcbsp_ops,
1367 - .clk_names = clk_names,
1368 - .num_clks = 3,
1369 + .clk_name = "mcbsp_clk",
1370 },
1371 };
1372 #define OMAP16XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap16xx_mcbsp_pdata)
1373 @@ -161,6 +230,15 @@
1374
1375 int __init omap1_mcbsp_init(void)
1376 {
1377 + int i;
1378 +
1379 + for (i = 0; i < omap_mcbsp_clks_size; i++) {
1380 + if (cpu_is_omap15xx() || cpu_is_omap16xx()) {
1381 + omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
1382 + clk_register(&omap_mcbsp_clks[i].clk);
1383 + }
1384 + }
1385 +
1386 if (cpu_is_omap730())
1387 omap_mcbsp_count = OMAP730_MCBSP_PDATA_SZ;
1388 if (cpu_is_omap15xx())
1389 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c
1390 --- linux-2.6.29.owrt/arch/arm/mach-omap2/board-ldp.c 2009-05-10 22:04:41.000000000 +0200
1391 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-ldp.c 2009-05-10 23:48:27.000000000 +0200
1392 @@ -81,7 +81,7 @@
1393 }
1394
1395 ldp_smc911x_resources[0].start = cs_mem_base + 0x0;
1396 - ldp_smc911x_resources[0].end = cs_mem_base + 0xff;
1397 + ldp_smc911x_resources[0].end = cs_mem_base + 0xf;
1398 udelay(100);
1399
1400 eth_gpio = LDP_SMC911X_GPIO;
1401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c
1402 --- linux-2.6.29.owrt/arch/arm/mach-omap2/board-omap3beagle.c 2009-05-10 22:04:41.000000000 +0200
1403 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/board-omap3beagle.c 2009-05-10 23:48:27.000000000 +0200
1404 @@ -178,9 +178,7 @@
1405 #ifdef CONFIG_I2C2_OMAP_BEAGLE
1406 omap_register_i2c_bus(2, 400, NULL, 0);
1407 #endif
1408 - /* Bus 3 is attached to the DVI port where devices like the pico DLP
1409 - * projector don't work reliably with 400kHz */
1410 - omap_register_i2c_bus(3, 100, NULL, 0);
1411 + omap_register_i2c_bus(3, 400, NULL, 0);
1412 return 0;
1413 }
1414
1415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c
1416 --- linux-2.6.29.owrt/arch/arm/mach-omap2/clock.c 2009-05-10 22:04:41.000000000 +0200
1417 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/clock.c 2009-05-10 23:48:27.000000000 +0200
1418 @@ -565,7 +565,7 @@
1419 *
1420 * Given a struct clk of a rate-selectable clksel clock, and a clock divisor,
1421 * find the corresponding register field value. The return register value is
1422 - * the value before left-shifting. Returns ~0 on error
1423 + * the value before left-shifting. Returns 0xffffffff on error
1424 */
1425 u32 omap2_divisor_to_clksel(struct clk *clk, u32 div)
1426 {
1427 @@ -577,7 +577,7 @@
1428
1429 clks = omap2_get_clksel_by_parent(clk, clk->parent);
1430 if (clks == NULL)
1431 - return ~0;
1432 + return 0;
1433
1434 for (clkr = clks->rates; clkr->div; clkr++) {
1435 if ((clkr->flags & cpu_mask) && (clkr->div == div))
1436 @@ -588,7 +588,7 @@
1437 printk(KERN_ERR "clock: Could not find divisor %d for "
1438 "clock %s parent %s\n", div, clk->name,
1439 clk->parent->name);
1440 - return ~0;
1441 + return 0;
1442 }
1443
1444 return clkr->val;
1445 @@ -708,7 +708,7 @@
1446 return 0;
1447
1448 for (clkr = clks->rates; clkr->div; clkr++) {
1449 - if (clkr->flags & cpu_mask && clkr->flags & DEFAULT_RATE)
1450 + if (clkr->flags & (cpu_mask | DEFAULT_RATE))
1451 break; /* Found the default rate for this platform */
1452 }
1453
1454 @@ -746,7 +746,7 @@
1455 return -EINVAL;
1456
1457 if (clk->usecount > 0)
1458 - omap2_clk_disable(clk);
1459 + _omap2_clk_disable(clk);
1460
1461 /* Set new source value (previous dividers if any in effect) */
1462 reg_val = __raw_readl(src_addr) & ~field_mask;
1463 @@ -759,10 +759,10 @@
1464 wmb();
1465 }
1466
1467 - clk->parent = new_parent;
1468 -
1469 if (clk->usecount > 0)
1470 - omap2_clk_enable(clk);
1471 + _omap2_clk_enable(clk);
1472 +
1473 + clk->parent = new_parent;
1474
1475 /* CLKSEL clocks follow their parents' rates, divided by a divisor */
1476 clk->rate = new_parent->rate;
1477 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c
1478 --- linux-2.6.29.owrt/arch/arm/mach-omap2/devices.c 2009-05-10 22:04:41.000000000 +0200
1479 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/devices.c 2009-05-10 23:48:27.000000000 +0200
1480 @@ -421,7 +421,6 @@
1481 int nr_controllers)
1482 {
1483 int i;
1484 - char *name;
1485
1486 for (i = 0; i < nr_controllers; i++) {
1487 unsigned long base, size;
1488 @@ -451,14 +450,12 @@
1489 continue;
1490 }
1491
1492 - if (cpu_is_omap2420()) {
1493 + if (cpu_is_omap2420())
1494 size = OMAP2420_MMC_SIZE;
1495 - name = "mmci-omap";
1496 - } else {
1497 + else
1498 size = HSMMC_SIZE;
1499 - name = "mmci-omap-hs";
1500 - }
1501 - omap_mmc_add(name, i, base, size, irq, mmc_data[i]);
1502 +
1503 + omap_mmc_add(i, base, size, irq, mmc_data[i]);
1504 };
1505 }
1506
1507 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/id.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c
1508 --- linux-2.6.29.owrt/arch/arm/mach-omap2/id.c 2009-05-10 22:04:41.000000000 +0200
1509 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/id.c 2009-05-10 23:48:27.000000000 +0200
1510 @@ -172,13 +172,9 @@
1511 omap_revision = OMAP3430_REV_ES3_0;
1512 rev_name = "ES3.0";
1513 break;
1514 - case 4:
1515 - omap_revision = OMAP3430_REV_ES3_1;
1516 - rev_name = "ES3.1";
1517 - break;
1518 default:
1519 /* Use the latest known revision as default */
1520 - omap_revision = OMAP3430_REV_ES3_1;
1521 + omap_revision = OMAP3430_REV_ES3_0;
1522 rev_name = "Unknown revision\n";
1523 }
1524 }
1525 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c
1526 --- linux-2.6.29.owrt/arch/arm/mach-omap2/irq.c 2009-05-10 22:04:41.000000000 +0200
1527 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/irq.c 2009-05-10 23:48:27.000000000 +0200
1528 @@ -134,7 +134,6 @@
1529 .ack = omap_mask_ack_irq,
1530 .mask = omap_mask_irq,
1531 .unmask = omap_unmask_irq,
1532 - .disable = omap_mask_irq,
1533 };
1534
1535 static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
1536 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c
1537 --- linux-2.6.29.owrt/arch/arm/mach-omap2/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
1538 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/mcbsp.c 2009-05-10 23:48:27.000000000 +0200
1539 @@ -24,7 +24,106 @@
1540 #include <mach/cpu.h>
1541 #include <mach/mcbsp.h>
1542
1543 -const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
1544 +struct mcbsp_internal_clk {
1545 + struct clk clk;
1546 + struct clk **childs;
1547 + int n_childs;
1548 +};
1549 +
1550 +#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
1551 +static void omap_mcbsp_clk_init(struct mcbsp_internal_clk *mclk)
1552 +{
1553 + const char *clk_names[] = { "mcbsp_ick", "mcbsp_fck" };
1554 + int i;
1555 +
1556 + mclk->n_childs = ARRAY_SIZE(clk_names);
1557 + mclk->childs = kzalloc(mclk->n_childs * sizeof(struct clk *),
1558 + GFP_KERNEL);
1559 +
1560 + for (i = 0; i < mclk->n_childs; i++) {
1561 + /* We fake a platform device to get correct device id */
1562 + struct platform_device pdev;
1563 +
1564 + pdev.dev.bus = &platform_bus_type;
1565 + pdev.id = mclk->clk.id;
1566 + mclk->childs[i] = clk_get(&pdev.dev, clk_names[i]);
1567 + if (IS_ERR(mclk->childs[i]))
1568 + printk(KERN_ERR "Could not get clock %s (%d).\n",
1569 + clk_names[i], mclk->clk.id);
1570 + }
1571 +}
1572 +
1573 +static int omap_mcbsp_clk_enable(struct clk *clk)
1574 +{
1575 + struct mcbsp_internal_clk *mclk = container_of(clk,
1576 + struct mcbsp_internal_clk, clk);
1577 + int i;
1578 +
1579 + for (i = 0; i < mclk->n_childs; i++)
1580 + clk_enable(mclk->childs[i]);
1581 + return 0;
1582 +}
1583 +
1584 +static void omap_mcbsp_clk_disable(struct clk *clk)
1585 +{
1586 + struct mcbsp_internal_clk *mclk = container_of(clk,
1587 + struct mcbsp_internal_clk, clk);
1588 + int i;
1589 +
1590 + for (i = 0; i < mclk->n_childs; i++)
1591 + clk_disable(mclk->childs[i]);
1592 +}
1593 +
1594 +static struct mcbsp_internal_clk omap_mcbsp_clks[] = {
1595 + {
1596 + .clk = {
1597 + .name = "mcbsp_clk",
1598 + .id = 1,
1599 + .enable = omap_mcbsp_clk_enable,
1600 + .disable = omap_mcbsp_clk_disable,
1601 + },
1602 + },
1603 + {
1604 + .clk = {
1605 + .name = "mcbsp_clk",
1606 + .id = 2,
1607 + .enable = omap_mcbsp_clk_enable,
1608 + .disable = omap_mcbsp_clk_disable,
1609 + },
1610 + },
1611 + {
1612 + .clk = {
1613 + .name = "mcbsp_clk",
1614 + .id = 3,
1615 + .enable = omap_mcbsp_clk_enable,
1616 + .disable = omap_mcbsp_clk_disable,
1617 + },
1618 + },
1619 + {
1620 + .clk = {
1621 + .name = "mcbsp_clk",
1622 + .id = 4,
1623 + .enable = omap_mcbsp_clk_enable,
1624 + .disable = omap_mcbsp_clk_disable,
1625 + },
1626 + },
1627 + {
1628 + .clk = {
1629 + .name = "mcbsp_clk",
1630 + .id = 5,
1631 + .enable = omap_mcbsp_clk_enable,
1632 + .disable = omap_mcbsp_clk_disable,
1633 + },
1634 + },
1635 +};
1636 +
1637 +#define omap_mcbsp_clks_size ARRAY_SIZE(omap_mcbsp_clks)
1638 +#else
1639 +#define omap_mcbsp_clks_size 0
1640 +static struct mcbsp_internal_clk __initdata *omap_mcbsp_clks;
1641 +static inline void omap_mcbsp_clk_init(struct clk *clk)
1642 +{ }
1643 +#endif
1644
1645 static void omap2_mcbsp2_mux_setup(void)
1646 {
1647 @@ -57,8 +156,7 @@
1648 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
1649 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
1650 .ops = &omap2_mcbsp_ops,
1651 - .clk_names = clk_names,
1652 - .num_clks = 2,
1653 + .clk_name = "mcbsp_clk",
1654 },
1655 {
1656 .phys_base = OMAP24XX_MCBSP2_BASE,
1657 @@ -67,8 +165,7 @@
1658 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
1659 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
1660 .ops = &omap2_mcbsp_ops,
1661 - .clk_names = clk_names,
1662 - .num_clks = 2,
1663 + .clk_name = "mcbsp_clk",
1664 },
1665 };
1666 #define OMAP2420_MCBSP_PDATA_SZ ARRAY_SIZE(omap2420_mcbsp_pdata)
1667 @@ -86,8 +183,7 @@
1668 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
1669 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
1670 .ops = &omap2_mcbsp_ops,
1671 - .clk_names = clk_names,
1672 - .num_clks = 2,
1673 + .clk_name = "mcbsp_clk",
1674 },
1675 {
1676 .phys_base = OMAP24XX_MCBSP2_BASE,
1677 @@ -96,8 +192,7 @@
1678 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
1679 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
1680 .ops = &omap2_mcbsp_ops,
1681 - .clk_names = clk_names,
1682 - .num_clks = 2,
1683 + .clk_name = "mcbsp_clk",
1684 },
1685 {
1686 .phys_base = OMAP2430_MCBSP3_BASE,
1687 @@ -106,8 +201,7 @@
1688 .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
1689 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
1690 .ops = &omap2_mcbsp_ops,
1691 - .clk_names = clk_names,
1692 - .num_clks = 2,
1693 + .clk_name = "mcbsp_clk",
1694 },
1695 {
1696 .phys_base = OMAP2430_MCBSP4_BASE,
1697 @@ -116,8 +210,7 @@
1698 .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
1699 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
1700 .ops = &omap2_mcbsp_ops,
1701 - .clk_names = clk_names,
1702 - .num_clks = 2,
1703 + .clk_name = "mcbsp_clk",
1704 },
1705 {
1706 .phys_base = OMAP2430_MCBSP5_BASE,
1707 @@ -126,8 +219,7 @@
1708 .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
1709 .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
1710 .ops = &omap2_mcbsp_ops,
1711 - .clk_names = clk_names,
1712 - .num_clks = 2,
1713 + .clk_name = "mcbsp_clk",
1714 },
1715 };
1716 #define OMAP2430_MCBSP_PDATA_SZ ARRAY_SIZE(omap2430_mcbsp_pdata)
1717 @@ -145,8 +237,7 @@
1718 .rx_irq = INT_24XX_MCBSP1_IRQ_RX,
1719 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
1720 .ops = &omap2_mcbsp_ops,
1721 - .clk_names = clk_names,
1722 - .num_clks = 2,
1723 + .clk_name = "mcbsp_clk",
1724 },
1725 {
1726 .phys_base = OMAP34XX_MCBSP2_BASE,
1727 @@ -155,8 +246,7 @@
1728 .rx_irq = INT_24XX_MCBSP2_IRQ_RX,
1729 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
1730 .ops = &omap2_mcbsp_ops,
1731 - .clk_names = clk_names,
1732 - .num_clks = 2,
1733 + .clk_name = "mcbsp_clk",
1734 },
1735 {
1736 .phys_base = OMAP34XX_MCBSP3_BASE,
1737 @@ -165,8 +255,7 @@
1738 .rx_irq = INT_24XX_MCBSP3_IRQ_RX,
1739 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
1740 .ops = &omap2_mcbsp_ops,
1741 - .clk_names = clk_names,
1742 - .num_clks = 2,
1743 + .clk_name = "mcbsp_clk",
1744 },
1745 {
1746 .phys_base = OMAP34XX_MCBSP4_BASE,
1747 @@ -175,8 +264,7 @@
1748 .rx_irq = INT_24XX_MCBSP4_IRQ_RX,
1749 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
1750 .ops = &omap2_mcbsp_ops,
1751 - .clk_names = clk_names,
1752 - .num_clks = 2,
1753 + .clk_name = "mcbsp_clk",
1754 },
1755 {
1756 .phys_base = OMAP34XX_MCBSP5_BASE,
1757 @@ -185,8 +273,7 @@
1758 .rx_irq = INT_24XX_MCBSP5_IRQ_RX,
1759 .tx_irq = INT_24XX_MCBSP5_IRQ_TX,
1760 .ops = &omap2_mcbsp_ops,
1761 - .clk_names = clk_names,
1762 - .num_clks = 2,
1763 + .clk_name = "mcbsp_clk",
1764 },
1765 };
1766 #define OMAP34XX_MCBSP_PDATA_SZ ARRAY_SIZE(omap34xx_mcbsp_pdata)
1767 @@ -197,6 +284,14 @@
1768
1769 static int __init omap2_mcbsp_init(void)
1770 {
1771 + int i;
1772 +
1773 + for (i = 0; i < omap_mcbsp_clks_size; i++) {
1774 + /* Once we call clk_get inside init, we do not register it */
1775 + omap_mcbsp_clk_init(&omap_mcbsp_clks[i]);
1776 + clk_register(&omap_mcbsp_clks[i].clk);
1777 + }
1778 +
1779 if (cpu_is_omap2420())
1780 omap_mcbsp_count = OMAP2420_MCBSP_PDATA_SZ;
1781 if (cpu_is_omap2430())
1782 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S
1783 --- linux-2.6.29.owrt/arch/arm/mach-omap2/sleep24xx.S 2009-05-10 22:04:41.000000000 +0200
1784 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/sleep24xx.S 2009-05-10 23:48:28.000000000 +0200
1785 @@ -93,8 +93,9 @@
1786 orr r4, r4, #0x40 @ enable self refresh on idle req
1787 mov r5, #0x2000 @ set delay (DPLL relock + DLL relock)
1788 str r4, [r2] @ make it so
1789 + mov r2, #0
1790 nop
1791 - mcr p15, 0, r3, c7, c0, 4 @ wait for interrupt
1792 + mcr p15, 0, r2, c7, c0, 4 @ wait for interrupt
1793 nop
1794 loop:
1795 subs r5, r5, #0x1 @ awake, wait just a bit
1796 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c
1797 --- linux-2.6.29.owrt/arch/arm/mach-omap2/timer-gp.c 2009-05-10 22:04:41.000000000 +0200
1798 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-omap2/timer-gp.c 2009-05-10 23:48:28.000000000 +0200
1799 @@ -118,8 +118,7 @@
1800 clockevent_gpt.max_delta_ns =
1801 clockevent_delta2ns(0xffffffff, &clockevent_gpt);
1802 clockevent_gpt.min_delta_ns =
1803 - clockevent_delta2ns(3, &clockevent_gpt);
1804 - /* Timer internal resynch latency. */
1805 + clockevent_delta2ns(1, &clockevent_gpt);
1806
1807 clockevent_gpt.cpumask = cpumask_of(0);
1808 clockevents_register_device(&clockevent_gpt);
1809 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c
1810 --- linux-2.6.29.owrt/arch/arm/mach-orion5x/common.c 2009-05-10 22:04:41.000000000 +0200
1811 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/common.c 2009-05-10 23:48:28.000000000 +0200
1812 @@ -431,10 +431,6 @@
1813 /*****************************************************************************
1814 * XOR engine
1815 ****************************************************************************/
1816 -struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
1817 - .dram = &orion5x_mbus_dram_info,
1818 -};
1819 -
1820 static struct resource orion5x_xor_shared_resources[] = {
1821 {
1822 .name = "xor low",
1823 @@ -452,9 +448,6 @@
1824 static struct platform_device orion5x_xor_shared = {
1825 .name = MV_XOR_SHARED_NAME,
1826 .id = 0,
1827 - .dev = {
1828 - .platform_data = &orion5x_xor_shared_data,
1829 - },
1830 .num_resources = ARRAY_SIZE(orion5x_xor_shared_resources),
1831 .resource = orion5x_xor_shared_resources,
1832 };
1833 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c
1834 --- linux-2.6.29.owrt/arch/arm/mach-orion5x/irq.c 2009-05-10 22:04:41.000000000 +0200
1835 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-orion5x/irq.c 2009-05-10 23:48:28.000000000 +0200
1836 @@ -44,7 +44,7 @@
1837 * User can use set_type() if he wants to use edge types handlers.
1838 */
1839 for (i = IRQ_ORION5X_GPIO_START; i < NR_IRQS; i++) {
1840 - set_irq_chip(i, &orion_gpio_irq_chip);
1841 + set_irq_chip(i, &orion_gpio_irq_level_chip);
1842 set_irq_handler(i, handle_level_irq);
1843 irq_desc[i].status |= IRQ_LEVEL;
1844 set_irq_flags(i, IRQF_VALID);
1845 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c
1846 --- linux-2.6.29.owrt/arch/arm/mach-pxa/dma.c 2009-05-10 22:04:41.000000000 +0200
1847 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/dma.c 2009-05-10 23:48:28.000000000 +0200
1848 @@ -121,16 +121,6 @@
1849 if (dma_channels == NULL)
1850 return -ENOMEM;
1851
1852 - /* dma channel priorities on pxa2xx processors:
1853 - * ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
1854 - * ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
1855 - * ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
1856 - */
1857 - for (i = 0; i < num_ch; i++) {
1858 - DCSR(i) = 0;
1859 - dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
1860 - }
1861 -
1862 ret = request_irq(IRQ_DMA, dma_irq_handler, IRQF_DISABLED, "DMA", NULL);
1863 if (ret) {
1864 printk (KERN_CRIT "Wow! Can't register IRQ for DMA\n");
1865 @@ -138,6 +128,14 @@
1866 return ret;
1867 }
1868
1869 + /* dma channel priorities on pxa2xx processors:
1870 + * ch 0 - 3, 16 - 19 <--> (0) DMA_PRIO_HIGH
1871 + * ch 4 - 7, 20 - 23 <--> (1) DMA_PRIO_MEDIUM
1872 + * ch 8 - 15, 24 - 31 <--> (2) DMA_PRIO_LOW
1873 + */
1874 + for (i = 0; i < num_ch; i++)
1875 + dma_channels[i].prio = min((i & 0xf) >> 2, DMA_PRIO_LOW);
1876 +
1877 num_dma_channels = num_ch;
1878 return 0;
1879 }
1880 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h
1881 --- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h 2009-05-10 22:04:41.000000000 +0200
1882 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ac97.h 2009-05-10 23:48:28.000000000 +0200
1883 @@ -1,8 +1,6 @@
1884 #ifndef __ASM_ARCH_REGS_AC97_H
1885 #define __ASM_ARCH_REGS_AC97_H
1886
1887 -#include <mach/hardware.h>
1888 -
1889 /*
1890 * AC97 Controller registers
1891 */
1892 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h
1893 --- linux-2.6.29.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h 2009-05-10 22:04:41.000000000 +0200
1894 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/include/mach/regs-ssp.h 2009-05-10 23:48:28.000000000 +0200
1895 @@ -41,9 +41,6 @@
1896 #elif defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
1897 #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */
1898 #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */
1899 -#endif
1900 -
1901 -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
1902 #define SSCR0_EDSS (1 << 20) /* Extended data size select */
1903 #define SSCR0_NCS (1 << 21) /* Network clock select */
1904 #define SSCR0_RIM (1 << 22) /* Receive FIFO overrrun interrupt mask */
1905 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c
1906 --- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa300.c 2009-05-10 22:04:41.000000000 +0200
1907 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa300.c 2009-05-10 23:48:28.000000000 +0200
1908 @@ -88,13 +88,13 @@
1909 static DEFINE_PXA3_CKEN(common_nand, NAND, 156000000, 0);
1910
1911 static struct clk_lookup common_clkregs[] = {
1912 - INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
1913 + INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", "NANDCLK"),
1914 };
1915
1916 static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
1917
1918 static struct clk_lookup pxa310_clkregs[] = {
1919 - INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", NULL),
1920 + INIT_CLKREG(&clk_pxa310_mmc3, "pxa2xx-mci.2", "MMCCLK"),
1921 };
1922
1923 static int __init pxa300_init(void)
1924 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c
1925 --- linux-2.6.29.owrt/arch/arm/mach-pxa/pxa320.c 2009-05-10 22:04:41.000000000 +0200
1926 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-pxa/pxa320.c 2009-05-10 23:48:28.000000000 +0200
1927 @@ -83,7 +83,7 @@
1928 static DEFINE_PXA3_CKEN(pxa320_nand, NAND, 104000000, 0);
1929
1930 static struct clk_lookup pxa320_clkregs[] = {
1931 - INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
1932 + INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", "NANDCLK"),
1933 };
1934
1935 static int __init pxa320_init(void)
1936 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c
1937 --- linux-2.6.29.owrt/arch/arm/mach-rpc/riscpc.c 2009-05-10 22:04:41.000000000 +0200
1938 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-rpc/riscpc.c 2009-05-10 23:48:28.000000000 +0200
1939 @@ -19,7 +19,6 @@
1940 #include <linux/serial_8250.h>
1941 #include <linux/ata_platform.h>
1942 #include <linux/io.h>
1943 -#include <linux/i2c.h>
1944
1945 #include <asm/elf.h>
1946 #include <asm/mach-types.h>
1947 @@ -202,13 +201,8 @@
1948 &pata_device,
1949 };
1950
1951 -static struct i2c_board_info i2c_rtc = {
1952 - I2C_BOARD_INFO("pcf8583", 0x50)
1953 -};
1954 -
1955 static int __init rpc_init(void)
1956 {
1957 - i2c_register_board_info(0, &i2c_rtc, 1);
1958 return platform_add_devices(devs, ARRAY_SIZE(devs));
1959 }
1960
1961 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c
1962 --- linux-2.6.29.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c 2009-05-10 22:04:41.000000000 +0200
1963 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-s3c6410/mach-smdk6410.c 2009-05-10 23:48:28.000000000 +0200
1964 @@ -129,7 +129,7 @@
1965 .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
1966 };
1967
1968 -static struct map_desc smdk6410_iodesc[] = {};
1969 +struct map_desc smdk6410_iodesc[] = {};
1970
1971 static struct platform_device *smdk6410_devices[] __initdata = {
1972 #ifdef CONFIG_SMDK6410_SD_CH0
1973 @@ -146,7 +146,7 @@
1974
1975 static struct i2c_board_info i2c_devs0[] __initdata = {
1976 { I2C_BOARD_INFO("24c08", 0x50), },
1977 - { I2C_BOARD_INFO("wm8580", 0x1b), },
1978 + { I2C_BOARD_INFO("WM8580", 0X1b), },
1979 };
1980
1981 static struct i2c_board_info i2c_devs1[] __initdata = {
1982 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c
1983 --- linux-2.6.29.owrt/arch/arm/mach-sa1100/generic.c 2009-05-10 22:04:41.000000000 +0200
1984 +++ linux-2.6.29-rc3.owrt/arch/arm/mach-sa1100/generic.c 2009-05-10 23:48:28.000000000 +0200
1985 @@ -289,7 +289,7 @@
1986 };
1987
1988 static struct platform_device sa11x0mtd_device = {
1989 - .name = "sa1100-mtd",
1990 + .name = "flash",
1991 .id = -1,
1992 };
1993
1994 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S
1995 --- linux-2.6.29.owrt/arch/arm/mm/abort-ev6.S 2009-05-10 22:04:41.000000000 +0200
1996 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/abort-ev6.S 2009-05-10 23:48:28.000000000 +0200
1997 @@ -23,8 +23,7 @@
1998 #ifdef CONFIG_CPU_32v6K
1999 clrex
2000 #else
2001 - sub r1, sp, #4 @ Get unused stack location
2002 - strex r0, r1, [r1] @ Clear the exclusive monitor
2003 + strex r0, r1, [sp] @ Clear the exclusive monitor
2004 #endif
2005 mrc p15, 0, r1, c5, c0, 0 @ get FSR
2006 mrc p15, 0, r0, c6, c0, 0 @ get FAR
2007 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c
2008 --- linux-2.6.29.owrt/arch/arm/mm/copypage-feroceon.c 2009-05-10 22:04:41.000000000 +0200
2009 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-feroceon.c 2009-05-10 23:48:28.000000000 +0200
2010 @@ -13,7 +13,7 @@
2011 #include <linux/init.h>
2012 #include <linux/highmem.h>
2013
2014 -static void __naked
2015 +static void __attribute__((naked))
2016 feroceon_copy_user_page(void *kto, const void *kfrom)
2017 {
2018 asm("\
2019 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c
2020 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v3.c 2009-05-10 22:04:41.000000000 +0200
2021 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v3.c 2009-05-10 23:48:28.000000000 +0200
2022 @@ -15,7 +15,7 @@
2023 *
2024 * FIXME: do we need to handle cache stuff...
2025 */
2026 -static void __naked
2027 +static void __attribute__((naked))
2028 v3_copy_user_page(void *kto, const void *kfrom)
2029 {
2030 asm("\n\
2031 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c
2032 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v4mc.c 2009-05-10 22:04:41.000000000 +0200
2033 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4mc.c 2009-05-10 23:48:28.000000000 +0200
2034 @@ -44,7 +44,7 @@
2035 * instruction. If your processor does not supply this, you have to write your
2036 * own copy_user_highpage that does the right thing.
2037 */
2038 -static void __naked
2039 +static void __attribute__((naked))
2040 mc_copy_user_page(void *from, void *to)
2041 {
2042 asm volatile(
2043 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c
2044 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wb.c 2009-05-10 22:04:41.000000000 +0200
2045 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wb.c 2009-05-10 23:48:28.000000000 +0200
2046 @@ -22,7 +22,7 @@
2047 * instruction. If your processor does not supply this, you have to write your
2048 * own copy_user_highpage that does the right thing.
2049 */
2050 -static void __naked
2051 +static void __attribute__((naked))
2052 v4wb_copy_user_page(void *kto, const void *kfrom)
2053 {
2054 asm("\
2055 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c
2056 --- linux-2.6.29.owrt/arch/arm/mm/copypage-v4wt.c 2009-05-10 22:04:41.000000000 +0200
2057 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-v4wt.c 2009-05-10 23:48:28.000000000 +0200
2058 @@ -20,7 +20,7 @@
2059 * dirty data in the cache. However, we do have to ensure that
2060 * subsequent reads are up to date.
2061 */
2062 -static void __naked
2063 +static void __attribute__((naked))
2064 v4wt_copy_user_page(void *kto, const void *kfrom)
2065 {
2066 asm("\
2067 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c
2068 --- linux-2.6.29.owrt/arch/arm/mm/copypage-xsc3.c 2009-05-10 22:04:41.000000000 +0200
2069 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xsc3.c 2009-05-10 23:48:28.000000000 +0200
2070 @@ -29,7 +29,7 @@
2071 * if we eventually end up using our copied page.
2072 *
2073 */
2074 -static void __naked
2075 +static void __attribute__((naked))
2076 xsc3_mc_copy_user_page(void *kto, const void *kfrom)
2077 {
2078 asm("\
2079 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c
2080 --- linux-2.6.29.owrt/arch/arm/mm/copypage-xscale.c 2009-05-10 22:04:41.000000000 +0200
2081 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/copypage-xscale.c 2009-05-10 23:48:28.000000000 +0200
2082 @@ -42,7 +42,7 @@
2083 * Dcache aliasing issue. The writes will be forwarded to the write buffer,
2084 * and merged as appropriate.
2085 */
2086 -static void __naked
2087 +static void __attribute__((naked))
2088 mc_copy_user_page(void *from, void *to)
2089 {
2090 /*
2091 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c
2092 --- linux-2.6.29.owrt/arch/arm/mm/dma-mapping.c 2009-05-10 22:04:41.000000000 +0200
2093 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/dma-mapping.c 2009-05-10 23:48:28.000000000 +0200
2094 @@ -490,30 +490,26 @@
2095 */
2096 void dma_cache_maint(const void *start, size_t size, int direction)
2097 {
2098 - void (*inner_op)(const void *, const void *);
2099 - void (*outer_op)(unsigned long, unsigned long);
2100 + const void *end = start + size;
2101
2102 - BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));
2103 + BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(end - 1));
2104
2105 switch (direction) {
2106 case DMA_FROM_DEVICE: /* invalidate only */
2107 - inner_op = dmac_inv_range;
2108 - outer_op = outer_inv_range;
2109 + dmac_inv_range(start, end);
2110 + outer_inv_range(__pa(start), __pa(end));
2111 break;
2112 case DMA_TO_DEVICE: /* writeback only */
2113 - inner_op = dmac_clean_range;
2114 - outer_op = outer_clean_range;
2115 + dmac_clean_range(start, end);
2116 + outer_clean_range(__pa(start), __pa(end));
2117 break;
2118 case DMA_BIDIRECTIONAL: /* writeback and invalidate */
2119 - inner_op = dmac_flush_range;
2120 - outer_op = outer_flush_range;
2121 + dmac_flush_range(start, end);
2122 + outer_flush_range(__pa(start), __pa(end));
2123 break;
2124 default:
2125 BUG();
2126 }
2127 -
2128 - inner_op(start, start + size);
2129 - outer_op(__pa(start), __pa(start) + size);
2130 }
2131 EXPORT_SYMBOL(dma_cache_maint);
2132
2133 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/fault-armv.c linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c
2134 --- linux-2.6.29.owrt/arch/arm/mm/fault-armv.c 2009-05-10 22:04:41.000000000 +0200
2135 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/fault-armv.c 2009-05-10 23:48:28.000000000 +0200
2136 @@ -66,10 +66,7 @@
2137 * fault (ie, is old), we can safely ignore any issues.
2138 */
2139 if (ret && (pte_val(entry) & L_PTE_MT_MASK) != shared_pte_mask) {
2140 - unsigned long pfn = pte_pfn(entry);
2141 - flush_cache_page(vma, address, pfn);
2142 - outer_flush_range((pfn << PAGE_SHIFT),
2143 - (pfn << PAGE_SHIFT) + PAGE_SIZE);
2144 + flush_cache_page(vma, address, pte_pfn(entry));
2145 pte_val(entry) &= ~L_PTE_MT_MASK;
2146 pte_val(entry) |= shared_pte_mask;
2147 set_pte_at(vma->vm_mm, address, pte, entry);
2148 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/init.c linux-2.6.29-rc3.owrt/arch/arm/mm/init.c
2149 --- linux-2.6.29.owrt/arch/arm/mm/init.c 2009-05-10 22:04:41.000000000 +0200
2150 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/init.c 2009-05-10 23:48:28.000000000 +0200
2151 @@ -382,7 +382,7 @@
2152 for_each_node(node)
2153 bootmem_free_node(node, mi);
2154
2155 - high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1;
2156 + high_memory = __va(memend_pfn << PAGE_SHIFT);
2157
2158 /*
2159 * This doesn't seem to be used by the Linux memory manager any
2160 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/mmap.c linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c
2161 --- linux-2.6.29.owrt/arch/arm/mm/mmap.c 2009-05-10 22:04:41.000000000 +0200
2162 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmap.c 2009-05-10 23:48:28.000000000 +0200
2163 @@ -124,7 +124,7 @@
2164 {
2165 if (addr < PHYS_OFFSET)
2166 return 0;
2167 - if (addr + size >= __pa(high_memory - 1))
2168 + if (addr + size > __pa(high_memory))
2169 return 0;
2170
2171 return 1;
2172 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/mm/mmu.c linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c
2173 --- linux-2.6.29.owrt/arch/arm/mm/mmu.c 2009-05-10 22:04:41.000000000 +0200
2174 +++ linux-2.6.29-rc3.owrt/arch/arm/mm/mmu.c 2009-05-10 23:48:28.000000000 +0200
2175 @@ -693,8 +693,7 @@
2176 * Check whether this memory bank would entirely overlap
2177 * the vmalloc area.
2178 */
2179 - if (__va(bank->start) >= VMALLOC_MIN ||
2180 - __va(bank->start) < PAGE_OFFSET) {
2181 + if (__va(bank->start) >= VMALLOC_MIN) {
2182 printk(KERN_NOTICE "Ignoring RAM at %.8lx-%.8lx "
2183 "(vmalloc region overlap).\n",
2184 bank->start, bank->start + bank->size - 1);
2185 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h
2186 --- linux-2.6.29.owrt/arch/arm/plat-mxc/include/mach/mmc.h 2009-05-10 22:04:41.000000000 +0200
2187 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-mxc/include/mach/mmc.h 1970-01-01 01:00:00.000000000 +0100
2188 @@ -1,36 +0,0 @@
2189 -#ifndef ASMARM_ARCH_MMC_H
2190 -#define ASMARM_ARCH_MMC_H
2191 -
2192 -#include <linux/mmc/host.h>
2193 -
2194 -struct device;
2195 -
2196 -/* board specific SDHC data, optional.
2197 - * If not present, a writable card with 3,3V is assumed.
2198 - */
2199 -struct imxmmc_platform_data {
2200 - /* Return values for the get_ro callback should be:
2201 - * 0 for a read/write card
2202 - * 1 for a read-only card
2203 - * -ENOSYS when not supported (equal to NULL callback)
2204 - * or a negative errno value when something bad happened
2205 - */
2206 - int (*get_ro)(struct device *);
2207 -
2208 - /* board specific hook to (de)initialize the SD slot.
2209 - * The board code can call 'handler' on a card detection
2210 - * change giving data as argument.
2211 - */
2212 - int (*init)(struct device *dev, irq_handler_t handler, void *data);
2213 - void (*exit)(struct device *dev, void *data);
2214 -
2215 - /* available voltages. If not given, assume
2216 - * MMC_VDD_32_33 | MMC_VDD_33_34
2217 - */
2218 - unsigned int ocr_avail;
2219 -
2220 - /* adjust slot voltage */
2221 - void (*setpower)(struct device *, unsigned int vdd);
2222 -};
2223 -
2224 -#endif
2225 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/common.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c
2226 --- linux-2.6.29.owrt/arch/arm/plat-omap/common.c 2009-05-10 22:04:41.000000000 +0200
2227 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/common.c 2009-05-10 23:48:28.000000000 +0200
2228 @@ -200,16 +200,20 @@
2229 };
2230
2231 /*
2232 + * Rounds down to nearest nsec.
2233 + */
2234 +unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
2235 +{
2236 + return cyc2ns(&clocksource_32k, ticks_32k);
2237 +}
2238 +
2239 +/*
2240 * Returns current time from boot in nsecs. It's OK for this to wrap
2241 * around for now, as it's just a relative time stamp.
2242 */
2243 unsigned long long sched_clock(void)
2244 {
2245 - unsigned long long ret;
2246 -
2247 - ret = (unsigned long long)omap_32k_read();
2248 - ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
2249 - return ret;
2250 + return omap_32k_ticks_to_nsecs(omap_32k_read());
2251 }
2252
2253 static int __init omap_init_clocksource_32k(void)
2254 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/devices.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c
2255 --- linux-2.6.29.owrt/arch/arm/plat-omap/devices.c 2009-05-10 22:04:41.000000000 +0200
2256 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/devices.c 2009-05-10 23:48:28.000000000 +0200
2257 @@ -200,15 +200,14 @@
2258 /*
2259 * Register MMC devices. Called from mach-omap1 and mach-omap2 device init.
2260 */
2261 -int __init omap_mmc_add(const char *name, int id, unsigned long base,
2262 - unsigned long size, unsigned int irq,
2263 - struct omap_mmc_platform_data *data)
2264 +int __init omap_mmc_add(int id, unsigned long base, unsigned long size,
2265 + unsigned int irq, struct omap_mmc_platform_data *data)
2266 {
2267 struct platform_device *pdev;
2268 struct resource res[OMAP_MMC_NR_RES];
2269 int ret;
2270
2271 - pdev = platform_device_alloc(name, id);
2272 + pdev = platform_device_alloc("mmci-omap", id);
2273 if (!pdev)
2274 return -ENOMEM;
2275
2276 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/dma.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c
2277 --- linux-2.6.29.owrt/arch/arm/plat-omap/dma.c 2009-05-10 22:04:41.000000000 +0200
2278 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/dma.c 2009-05-10 23:48:28.000000000 +0200
2279 @@ -709,7 +709,6 @@
2280 chan->dev_name = dev_name;
2281 chan->callback = callback;
2282 chan->data = data;
2283 - chan->flags = 0;
2284
2285 #ifndef CONFIG_ARCH_OMAP1
2286 if (cpu_class_is_omap2()) {
2287 @@ -1889,11 +1888,11 @@
2288 status = dma_read(CSR(ch));
2289 }
2290
2291 - dma_write(status, CSR(ch));
2292 -
2293 if (likely(dma_chan[ch].callback != NULL))
2294 dma_chan[ch].callback(ch, status, dma_chan[ch].data);
2295
2296 + dma_write(status, CSR(ch));
2297 +
2298 return 0;
2299 }
2300
2301 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h
2302 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 22:04:41.000000000 +0200
2303 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/common.h 2009-05-10 23:48:28.000000000 +0200
2304 @@ -35,7 +35,7 @@
2305 extern struct sys_timer omap_timer;
2306 extern void omap_serial_init(void);
2307 extern void omap_serial_enable_clocks(int enable);
2308 -#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
2309 +#ifdef CONFIG_I2C_OMAP
2310 extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
2311 struct i2c_board_info const *info,
2312 unsigned len);
2313 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h
2314 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/cpu.h 2009-05-10 22:04:41.000000000 +0200
2315 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/cpu.h 2009-05-10 23:48:28.000000000 +0200
2316 @@ -339,7 +339,6 @@
2317 #define OMAP3430_REV_ES2_0 0x34301034
2318 #define OMAP3430_REV_ES2_1 0x34302034
2319 #define OMAP3430_REV_ES3_0 0x34303034
2320 -#define OMAP3430_REV_ES3_1 0x34304034
2321
2322 /*
2323 * omap_chip bits
2324 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h
2325 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mcbsp.h 2009-05-10 22:04:41.000000000 +0200
2326 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mcbsp.h 2009-05-10 23:48:28.000000000 +0200
2327 @@ -344,8 +344,7 @@
2328 u8 dma_rx_sync, dma_tx_sync;
2329 u16 rx_irq, tx_irq;
2330 struct omap_mcbsp_ops *ops;
2331 - char const **clk_names;
2332 - int num_clks;
2333 + char const *clk_name;
2334 };
2335
2336 struct omap_mcbsp {
2337 @@ -377,8 +376,7 @@
2338 /* Protect the field .free, while checking if the mcbsp is in use */
2339 spinlock_t lock;
2340 struct omap_mcbsp_platform_data *pdata;
2341 - struct clk **clks;
2342 - int num_clks;
2343 + struct clk *clk;
2344 };
2345 extern struct omap_mcbsp **mcbsp_ptr;
2346 extern int omap_mcbsp_count;
2347 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h
2348 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/mmc.h 2009-05-10 22:04:41.000000000 +0200
2349 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/mmc.h 2009-05-10 23:48:28.000000000 +0200
2350 @@ -115,9 +115,8 @@
2351 int nr_controllers);
2352 void omap2_init_mmc(struct omap_mmc_platform_data **mmc_data,
2353 int nr_controllers);
2354 -int omap_mmc_add(const char *name, int id, unsigned long base,
2355 - unsigned long size, unsigned int irq,
2356 - struct omap_mmc_platform_data *data);
2357 +int omap_mmc_add(int id, unsigned long base, unsigned long size,
2358 + unsigned int irq, struct omap_mmc_platform_data *data);
2359 #else
2360 static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
2361 int nr_controllers)
2362 @@ -127,9 +126,8 @@
2363 int nr_controllers)
2364 {
2365 }
2366 -static inline int omap_mmc_add(const char *name, int id, unsigned long base,
2367 - unsigned long size, unsigned int irq,
2368 - struct omap_mmc_platform_data *data)
2369 +static inline int omap_mmc_add(int id, unsigned long base, unsigned long size,
2370 + unsigned int irq, struct omap_mmc_platform_data *data)
2371 {
2372 return 0;
2373 }
2374 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h
2375 --- linux-2.6.29.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 22:04:41.000000000 +0200
2376 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/include/mach/pm.h 2009-05-10 23:48:28.000000000 +0200
2377 @@ -108,7 +108,7 @@
2378 !defined(CONFIG_ARCH_OMAP15XX) && \
2379 !defined(CONFIG_ARCH_OMAP16XX) && \
2380 !defined(CONFIG_ARCH_OMAP24XX)
2381 -#warning "Power management for this processor not implemented yet"
2382 +#error "Power management for this processor not implemented yet"
2383 #endif
2384
2385 #ifndef __ASSEMBLER__
2386 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/Makefile linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile
2387 --- linux-2.6.29.owrt/arch/arm/plat-omap/Makefile 2009-05-10 22:04:41.000000000 +0200
2388 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/Makefile 2009-05-10 23:48:28.000000000 +0200
2389 @@ -18,8 +18,7 @@
2390 obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
2391 obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
2392 obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
2393 -i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
2394 -obj-y += $(i2c-omap-m) $(i2c-omap-y)
2395 +obj-$(CONFIG_I2C_OMAP) += i2c.o
2396
2397 # OMAP mailbox framework
2398 obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
2399 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c
2400 --- linux-2.6.29.owrt/arch/arm/plat-omap/mcbsp.c 2009-05-10 22:04:41.000000000 +0200
2401 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-omap/mcbsp.c 2009-05-10 23:48:28.000000000 +0200
2402 @@ -214,7 +214,6 @@
2403 int omap_mcbsp_request(unsigned int id)
2404 {
2405 struct omap_mcbsp *mcbsp;
2406 - int i;
2407 int err;
2408
2409 if (!omap_mcbsp_check_valid_id(id)) {
2410 @@ -226,8 +225,7 @@
2411 if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->request)
2412 mcbsp->pdata->ops->request(id);
2413
2414 - for (i = 0; i < mcbsp->num_clks; i++)
2415 - clk_enable(mcbsp->clks[i]);
2416 + clk_enable(mcbsp->clk);
2417
2418 spin_lock(&mcbsp->lock);
2419 if (!mcbsp->free) {
2420 @@ -278,7 +276,6 @@
2421 void omap_mcbsp_free(unsigned int id)
2422 {
2423 struct omap_mcbsp *mcbsp;
2424 - int i;
2425
2426 if (!omap_mcbsp_check_valid_id(id)) {
2427 printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
2428 @@ -289,8 +286,7 @@
2429 if (mcbsp->pdata && mcbsp->pdata->ops && mcbsp->pdata->ops->free)
2430 mcbsp->pdata->ops->free(id);
2431
2432 - for (i = mcbsp->num_clks - 1; i >= 0; i--)
2433 - clk_disable(mcbsp->clks[i]);
2434 + clk_disable(mcbsp->clk);
2435
2436 spin_lock(&mcbsp->lock);
2437 if (mcbsp->free) {
2438 @@ -876,7 +872,6 @@
2439 struct omap_mcbsp_platform_data *pdata = pdev->dev.platform_data;
2440 struct omap_mcbsp *mcbsp;
2441 int id = pdev->id - 1;
2442 - int i;
2443 int ret = 0;
2444
2445 if (!pdata) {
2446 @@ -921,25 +916,14 @@
2447 mcbsp->dma_rx_sync = pdata->dma_rx_sync;
2448 mcbsp->dma_tx_sync = pdata->dma_tx_sync;
2449
2450 - if (pdata->num_clks) {
2451 - mcbsp->num_clks = pdata->num_clks;
2452 - mcbsp->clks = kzalloc(mcbsp->num_clks * sizeof(struct clk *),
2453 - GFP_KERNEL);
2454 - if (!mcbsp->clks) {
2455 - ret = -ENOMEM;
2456 - goto exit;
2457 - }
2458 - for (i = 0; i < mcbsp->num_clks; i++) {
2459 - mcbsp->clks[i] = clk_get(&pdev->dev, pdata->clk_names[i]);
2460 - if (IS_ERR(mcbsp->clks[i])) {
2461 - dev_err(&pdev->dev,
2462 - "Invalid %s configuration for McBSP%d.\n",
2463 - pdata->clk_names[i], mcbsp->id);
2464 - ret = PTR_ERR(mcbsp->clks[i]);
2465 - goto err_clk;
2466 - }
2467 - }
2468 -
2469 + if (pdata->clk_name)
2470 + mcbsp->clk = clk_get(&pdev->dev, pdata->clk_name);
2471 + if (IS_ERR(mcbsp->clk)) {
2472 + dev_err(&pdev->dev,
2473 + "Invalid clock configuration for McBSP%d.\n",
2474 + mcbsp->id);
2475 + ret = PTR_ERR(mcbsp->clk);
2476 + goto err_clk;
2477 }
2478
2479 mcbsp->pdata = pdata;
2480 @@ -948,9 +932,6 @@
2481 return 0;
2482
2483 err_clk:
2484 - while (i--)
2485 - clk_put(mcbsp->clks[i]);
2486 - kfree(mcbsp->clks);
2487 iounmap(mcbsp->io_base);
2488 err_ioremap:
2489 mcbsp->free = 0;
2490 @@ -961,7 +942,6 @@
2491 static int __devexit omap_mcbsp_remove(struct platform_device *pdev)
2492 {
2493 struct omap_mcbsp *mcbsp = platform_get_drvdata(pdev);
2494 - int i;
2495
2496 platform_set_drvdata(pdev, NULL);
2497 if (mcbsp) {
2498 @@ -970,18 +950,12 @@
2499 mcbsp->pdata->ops->free)
2500 mcbsp->pdata->ops->free(mcbsp->id);
2501
2502 - for (i = mcbsp->num_clks - 1; i >= 0; i--) {
2503 - clk_disable(mcbsp->clks[i]);
2504 - clk_put(mcbsp->clks[i]);
2505 - }
2506 + clk_disable(mcbsp->clk);
2507 + clk_put(mcbsp->clk);
2508
2509 iounmap(mcbsp->io_base);
2510
2511 - if (mcbsp->num_clks) {
2512 - kfree(mcbsp->clks);
2513 - mcbsp->clks = NULL;
2514 - mcbsp->num_clks = 0;
2515 - }
2516 + mcbsp->clk = NULL;
2517 mcbsp->free = 0;
2518 mcbsp->dev = NULL;
2519 }
2520 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c
2521 --- linux-2.6.29.owrt/arch/arm/plat-orion/gpio.c 2009-05-10 22:04:41.000000000 +0200
2522 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/gpio.c 2009-05-10 23:48:28.000000000 +0200
2523 @@ -265,36 +265,51 @@
2524 * polarity LEVEL mask
2525 *
2526 ****************************************************************************/
2527 +static void gpio_irq_edge_ack(u32 irq)
2528 +{
2529 + int pin = irq_to_gpio(irq);
2530 +
2531 + writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
2532 +}
2533
2534 -static void gpio_irq_ack(u32 irq)
2535 +static void gpio_irq_edge_mask(u32 irq)
2536 {
2537 - int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
2538 - if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
2539 - int pin = irq_to_gpio(irq);
2540 - writel(~(1 << (pin & 31)), GPIO_EDGE_CAUSE(pin));
2541 - }
2542 + int pin = irq_to_gpio(irq);
2543 + u32 u;
2544 +
2545 + u = readl(GPIO_EDGE_MASK(pin));
2546 + u &= ~(1 << (pin & 31));
2547 + writel(u, GPIO_EDGE_MASK(pin));
2548 +}
2549 +
2550 +static void gpio_irq_edge_unmask(u32 irq)
2551 +{
2552 + int pin = irq_to_gpio(irq);
2553 + u32 u;
2554 +
2555 + u = readl(GPIO_EDGE_MASK(pin));
2556 + u |= 1 << (pin & 31);
2557 + writel(u, GPIO_EDGE_MASK(pin));
2558 }
2559
2560 -static void gpio_irq_mask(u32 irq)
2561 +static void gpio_irq_level_mask(u32 irq)
2562 {
2563 int pin = irq_to_gpio(irq);
2564 - int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
2565 - u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
2566 - GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
2567 - u32 u = readl(reg);
2568 + u32 u;
2569 +
2570 + u = readl(GPIO_LEVEL_MASK(pin));
2571 u &= ~(1 << (pin & 31));
2572 - writel(u, reg);
2573 + writel(u, GPIO_LEVEL_MASK(pin));
2574 }
2575
2576 -static void gpio_irq_unmask(u32 irq)
2577 +static void gpio_irq_level_unmask(u32 irq)
2578 {
2579 int pin = irq_to_gpio(irq);
2580 - int type = irq_desc[irq].status & IRQ_TYPE_SENSE_MASK;
2581 - u32 reg = (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) ?
2582 - GPIO_EDGE_MASK(pin) : GPIO_LEVEL_MASK(pin);
2583 - u32 u = readl(reg);
2584 + u32 u;
2585 +
2586 + u = readl(GPIO_LEVEL_MASK(pin));
2587 u |= 1 << (pin & 31);
2588 - writel(u, reg);
2589 + writel(u, GPIO_LEVEL_MASK(pin));
2590 }
2591
2592 static int gpio_irq_set_type(u32 irq, u32 type)
2593 @@ -316,9 +331,9 @@
2594 * Set edge/level type.
2595 */
2596 if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
2597 - desc->handle_irq = handle_edge_irq;
2598 + desc->chip = &orion_gpio_irq_edge_chip;
2599 } else if (type & (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW)) {
2600 - desc->handle_irq = handle_level_irq;
2601 + desc->chip = &orion_gpio_irq_level_chip;
2602 } else {
2603 printk(KERN_ERR "failed to set irq=%d (type=%d)\n", irq, type);
2604 return -EINVAL;
2605 @@ -356,11 +371,19 @@
2606 return 0;
2607 }
2608
2609 -struct irq_chip orion_gpio_irq_chip = {
2610 - .name = "orion_gpio",
2611 - .ack = gpio_irq_ack,
2612 - .mask = gpio_irq_mask,
2613 - .unmask = gpio_irq_unmask,
2614 +struct irq_chip orion_gpio_irq_edge_chip = {
2615 + .name = "orion_gpio_irq_edge",
2616 + .ack = gpio_irq_edge_ack,
2617 + .mask = gpio_irq_edge_mask,
2618 + .unmask = gpio_irq_edge_unmask,
2619 + .set_type = gpio_irq_set_type,
2620 +};
2621 +
2622 +struct irq_chip orion_gpio_irq_level_chip = {
2623 + .name = "orion_gpio_irq_level",
2624 + .mask = gpio_irq_level_mask,
2625 + .mask_ack = gpio_irq_level_mask,
2626 + .unmask = gpio_irq_level_unmask,
2627 .set_type = gpio_irq_set_type,
2628 };
2629
2630 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h
2631 --- linux-2.6.29.owrt/arch/arm/plat-orion/include/plat/gpio.h 2009-05-10 22:04:41.000000000 +0200
2632 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-orion/include/plat/gpio.h 2009-05-10 23:48:28.000000000 +0200
2633 @@ -31,7 +31,8 @@
2634 /*
2635 * GPIO interrupt handling.
2636 */
2637 -extern struct irq_chip orion_gpio_irq_chip;
2638 +extern struct irq_chip orion_gpio_irq_edge_chip;
2639 +extern struct irq_chip orion_gpio_irq_level_chip;
2640 void orion_gpio_irq_handler(int irqoff);
2641
2642
2643 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c
2644 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/clock.c 2009-05-10 22:04:41.000000000 +0200
2645 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/clock.c 2009-05-10 23:48:28.000000000 +0200
2646 @@ -248,7 +248,7 @@
2647 &clk_48m,
2648 };
2649
2650 -void __init s3c64xx_register_clocks(void)
2651 +void s3c64xx_register_clocks(void)
2652 {
2653 struct clk *clkp;
2654 int ret;
2655 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c
2656 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/gpiolib.c 2009-05-10 22:04:41.000000000 +0200
2657 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/gpiolib.c 2009-05-10 23:48:28.000000000 +0200
2658 @@ -417,4 +417,4 @@
2659 return 0;
2660 }
2661
2662 -core_initcall(s3c64xx_gpiolib_init);
2663 +arch_initcall(s3c64xx_gpiolib_init);
2664 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h
2665 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h 2009-05-10 22:04:41.000000000 +0200
2666 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/include/plat/irqs.h 2009-05-10 23:48:28.000000000 +0200
2667 @@ -117,7 +117,7 @@
2668 #define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
2669 #define IRQ_NFC S3C64XX_IRQ_VIC1(13)
2670 #define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
2671 -#define IRQ_USBH S3C64XX_IRQ_VIC1(15)
2672 +#define IRQ_UHOST S3C64XX_IRQ_VIC1(15)
2673 #define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
2674 #define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
2675 #define IRQ_IIC S3C64XX_IRQ_VIC1(18)
2676 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c
2677 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq.c 2009-05-10 22:04:41.000000000 +0200
2678 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq.c 2009-05-10 23:48:28.000000000 +0200
2679 @@ -207,7 +207,7 @@
2680
2681 static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
2682 {
2683 - void __iomem *reg_base = uirq->regs;
2684 + void *reg_base = uirq->regs;
2685 unsigned int irq;
2686 int offs;
2687
2688 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c
2689 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 22:04:41.000000000 +0200
2690 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/irq-eint.c 2009-05-10 23:48:28.000000000 +0200
2691 @@ -14,15 +14,12 @@
2692
2693 #include <linux/kernel.h>
2694 #include <linux/interrupt.h>
2695 -#include <linux/gpio.h>
2696 #include <linux/irq.h>
2697 #include <linux/io.h>
2698
2699 #include <asm/hardware/vic.h>
2700
2701 #include <plat/regs-irqtype.h>
2702 -#include <plat/regs-gpio.h>
2703 -#include <plat/gpio-cfg.h>
2704
2705 #include <mach/map.h>
2706 #include <plat/cpu.h>
2707 @@ -58,7 +55,7 @@
2708 u32 mask;
2709
2710 mask = __raw_readl(S3C64XX_EINT0MASK);
2711 - mask &= ~eint_irq_to_bit(irq);
2712 + mask |= eint_irq_to_bit(irq);
2713 __raw_writel(mask, S3C64XX_EINT0MASK);
2714 }
2715
2716 @@ -77,7 +74,6 @@
2717 static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
2718 {
2719 int offs = eint_offset(irq);
2720 - int pin;
2721 int shift;
2722 u32 ctrl, mask;
2723 u32 newvalue = 0;
2724 @@ -129,15 +125,6 @@
2725 ctrl |= newvalue << shift;
2726 __raw_writel(ctrl, reg);
2727
2728 - /* set the GPIO pin appropriately */
2729 -
2730 - if (offs < 23)
2731 - pin = S3C64XX_GPN(offs);
2732 - else
2733 - pin = S3C64XX_GPM(offs - 23);
2734 -
2735 - s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
2736 -
2737 return 0;
2738 }
2739
2740 @@ -194,7 +181,7 @@
2741 s3c_irq_demux_eint(20, 27);
2742 }
2743
2744 -static int __init s3c64xx_init_irq_eint(void)
2745 +int __init s3c64xx_init_irq_eint(void)
2746 {
2747 int irq;
2748
2749 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c
2750 --- linux-2.6.29.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c 2009-05-10 22:04:41.000000000 +0200
2751 +++ linux-2.6.29-rc3.owrt/arch/arm/plat-s3c64xx/s3c6400-clock.c 2009-05-10 23:48:28.000000000 +0200
2752 @@ -36,7 +36,7 @@
2753 * ext_xtal_mux for want of an actual name from the manual.
2754 */
2755
2756 -static struct clk clk_ext_xtal_mux = {
2757 +struct clk clk_ext_xtal_mux = {
2758 .name = "ext_xtal",
2759 .id = -1,
2760 };
2761 @@ -63,7 +63,7 @@
2762 void __iomem *reg_divider;
2763 };
2764
2765 -static struct clk clk_fout_apll = {
2766 +struct clk clk_fout_apll = {
2767 .name = "fout_apll",
2768 .id = -1,
2769 };
2770 @@ -78,7 +78,7 @@
2771 .nr_sources = ARRAY_SIZE(clk_src_apll_list),
2772 };
2773
2774 -static struct clksrc_clk clk_mout_apll = {
2775 +struct clksrc_clk clk_mout_apll = {
2776 .clk = {
2777 .name = "mout_apll",
2778 .id = -1,
2779 @@ -88,7 +88,7 @@
2780 .sources = &clk_src_apll,
2781 };
2782
2783 -static struct clk clk_fout_epll = {
2784 +struct clk clk_fout_epll = {
2785 .name = "fout_epll",
2786 .id = -1,
2787 };
2788 @@ -103,7 +103,7 @@
2789 .nr_sources = ARRAY_SIZE(clk_src_epll_list),
2790 };
2791
2792 -static struct clksrc_clk clk_mout_epll = {
2793 +struct clksrc_clk clk_mout_epll = {
2794 .clk = {
2795 .name = "mout_epll",
2796 .id = -1,
2797 @@ -123,7 +123,7 @@
2798 .nr_sources = ARRAY_SIZE(clk_src_mpll_list),
2799 };
2800
2801 -static struct clksrc_clk clk_mout_mpll = {
2802 +struct clksrc_clk clk_mout_mpll = {
2803 .clk = {
2804 .name = "mout_mpll",
2805 .id = -1,
2806 @@ -145,7 +145,7 @@
2807 return rate;
2808 }
2809
2810 -static struct clk clk_dout_mpll = {
2811 +struct clk clk_dout_mpll = {
2812 .name = "dout_mpll",
2813 .id = -1,
2814 .parent = &clk_mout_mpll.clk,
2815 @@ -189,10 +189,10 @@
2816 };
2817
2818 static struct clk *clkset_uhost_list[] = {
2819 - &clk_48m,
2820 &clk_mout_epll.clk,
2821 &clk_dout_mpll,
2822 &clk_fin_epll,
2823 + &clk_48m,
2824 };
2825
2826 static struct clk_sources clkset_uhost = {
2827 @@ -239,12 +239,10 @@
2828
2829 rate = clk_round_rate(clk, rate);
2830 div = clk_get_rate(clk->parent) / rate;
2831 - if (div > 16)
2832 - return -EINVAL;
2833
2834 val = __raw_readl(reg);
2835 - val &= ~(0xf << sclk->shift);
2836 - val |= (div - 1) << sclk->shift;
2837 + val &= ~sclk->mask;
2838 + val |= (rate - 1) << sclk->shift;
2839 __raw_writel(val, reg);
2840
2841 return 0;
2842 @@ -353,7 +351,7 @@
2843
2844 static struct clksrc_clk clk_usbhost = {
2845 .clk = {
2846 - .name = "usb-bus-host",
2847 + .name = "usb-host-bus",
2848 .id = -1,
2849 .ctrlbit = S3C_CLKCON_SCLK_UHOST,
2850 .enable = s3c64xx_sclk_ctrl,
2851 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/arm/tools/mach-types linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types
2852 --- linux-2.6.29.owrt/arch/arm/tools/mach-types 2009-05-10 22:04:41.000000000 +0200
2853 +++ linux-2.6.29-rc3.owrt/arch/arm/tools/mach-types 2009-05-10 23:48:28.000000000 +0200
2854 @@ -12,7 +12,7 @@
2855 #
2856 # http://www.arm.linux.org.uk/developer/machines/?action=new
2857 #
2858 -# Last update: Thu Mar 12 18:01:45 2009
2859 +# Last update: Sun Nov 30 16:39:36 2008
2860 #
2861 # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
2862 #
2863 @@ -1811,7 +1811,7 @@
2864 jade MACH_JADE JADE 1821
2865 ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
2866 gprisc3 MACH_GPRISC3 GPRISC3 1823
2867 -stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
2868 +stamp9260 MACH_STAMP9260 STAMP9260 1824
2869 smdk6430 MACH_SMDK6430 SMDK6430 1825
2870 smdkc100 MACH_SMDKC100 SMDKC100 1826
2871 tavorevb MACH_TAVOREVB TAVOREVB 1827
2872 @@ -1993,134 +1993,4 @@
2873 benzina MACH_BENZINA BENZINA 2003
2874 blaze MACH_BLAZE BLAZE 2004
2875 linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
2876 -htckovsky MACH_HTCVENUS HTCVENUS 2006
2877 -sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
2878 -hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
2879 -sapphira MACH_SAPPHIRA SAPPHIRA 2009
2880 -dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
2881 -armbox MACH_ARMBOX ARMBOX 2011
2882 -harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
2883 -ribaldo MACH_RIBALDO RIBALDO 2013
2884 -agora MACH_AGORA AGORA 2014
2885 -omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
2886 -a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
2887 -usg2410 MACH_USG2410 USG2410 2017
2888 -pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
2889 -mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
2890 -topas910 MACH_TOPAS910 TOPAS910 2020
2891 -hyena MACH_HYENA HYENA 2021
2892 -pospax MACH_POSPAX POSPAX 2022
2893 -hdl_gx MACH_HDL_GX HDL_GX 2023
2894 -ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
2895 -ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
2896 -crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
2897 -egauge2 MACH_EGAUGE2 EGAUGE2 2027
2898 -didj MACH_DIDJ DIDJ 2028
2899 -m_s3c2443 MACH_MEISTER MEISTER 2029
2900 -htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
2901 -cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
2902 -smdk6440 MACH_SMDK6440 SMDK6440 2032
2903 -omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
2904 -ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
2905 -pvg610_100 MACH_PVG610 PVG610 2035
2906 -hprw6815 MACH_HPRW6815 HPRW6815 2036
2907 -omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
2908 -nas4220b MACH_NAS4220B NAS4220B 2038
2909 -htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
2910 -htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
2911 -scaler MACH_SCALER SCALER 2041
2912 -zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
2913 -aspenite MACH_ASPENITE ASPENITE 2043
2914 -teton MACH_TETON TETON 2044
2915 -ttc_dkb MACH_TTC_DKB TTC_DKB 2045
2916 -bishop2 MACH_BISHOP2 BISHOP2 2046
2917 -ippv5 MACH_IPPV5 IPPV5 2047
2918 -farm926 MACH_FARM926 FARM926 2048
2919 -mmccpu MACH_MMCCPU MMCCPU 2049
2920 -sgmsfl MACH_SGMSFL SGMSFL 2050
2921 -tt8000 MACH_TT8000 TT8000 2051
2922 -zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
2923 -mptc MACH_MPTC MPTC 2053
2924 -h6051 MACH_H6051 H6051 2054
2925 -pvg610_101 MACH_PVG610_101 PVG610_101 2055
2926 -stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
2927 -pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
2928 -tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
2929 -tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
2930 -aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
2931 -dx900 MACH_DX900 DX900 2061
2932 -cpodc2 MACH_CPODC2 CPODC2 2062
2933 -tilt_8925 MACH_TILT_8925 TILT_8925 2063
2934 -davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
2935 -swordfish MACH_SWORDFISH SWORDFISH 2065
2936 -corvus MACH_CORVUS CORVUS 2066
2937 -taurus MACH_TAURUS TAURUS 2067
2938 -axm MACH_AXM AXM 2068
2939 -axc MACH_AXC AXC 2069
2940 -baby MACH_BABY BABY 2070
2941 -mp200 MACH_MP200 MP200 2071
2942 -pcm043 MACH_PCM043 PCM043 2072
2943 -hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
2944 -kbk9g20 MACH_KBK9G20 KBK9G20 2074
2945 -adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
2946 -avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
2947 -suc82x MACH_SUC SUC 2077
2948 -at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
2949 -mendoza MACH_MENDOZA MENDOZA 2079
2950 -kira MACH_KIRA KIRA 2080
2951 -mx1hbm MACH_MX1HBM MX1HBM 2081
2952 -quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
2953 -quatro4230 MACH_QUATRO4230 QUATRO4230 2083
2954 -nsb400 MACH_NSB400 NSB400 2084
2955 -drp255 MACH_DRP255 DRP255 2085
2956 -thoth MACH_THOTH THOTH 2086
2957 -firestone MACH_FIRESTONE FIRESTONE 2087
2958 -asusp750 MACH_ASUSP750 ASUSP750 2088
2959 -ctera_dl MACH_CTERA_DL CTERA_DL 2089
2960 -socr MACH_SOCR SOCR 2090
2961 -htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
2962 -heroc MACH_HEROC HEROC 2092
2963 -zeno6800 MACH_ZENO6800 ZENO6800 2093
2964 -sc2mcs MACH_SC2MCS SC2MCS 2094
2965 -gene100 MACH_GENE100 GENE100 2095
2966 -as353x MACH_AS353X AS353X 2096
2967 -sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
2968 -at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
2969 -mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
2970 -cc9200 MACH_CC9200 CC9200 2100
2971 -sm9200 MACH_SM9200 SM9200 2101
2972 -tp9200 MACH_TP9200 TP9200 2102
2973 -snapperdv MACH_SNAPPERDV SNAPPERDV 2103
2974 -avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
2975 -avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
2976 -omap3axon MACH_OMAP3AXON OMAP3AXON 2106
2977 -ma8xx MACH_MA8XX MA8XX 2107
2978 -mp201ek MACH_MP201EK MP201EK 2108
2979 -davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
2980 -mpa1600 MACH_MPA1600 MPA1600 2110
2981 -pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
2982 -nsb667 MACH_NSB667 NSB667 2112
2983 -rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
2984 -twocom MACH_TWOCOM TWOCOM 2114
2985 -ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
2986 -hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
2987 -afeusb MACH_AFEUSB AFEUSB 2117
2988 -t830 MACH_T830 T830 2118
2989 -spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
2990 -om_3d7k MACH_OM_3D7K OM_3D7K 2120
2991 -picocom2 MACH_PICOCOM2 PICOCOM2 2121
2992 -uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
2993 -uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
2994 -cherry MACH_CHERRY CHERRY 2124
2995 -mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
2996 -s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
2997 -tx37 MACH_TX37 TX37 2127
2998 -sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
2999 -benzglb MACH_BENZGLB BENZGLB 2129
3000 -benztd MACH_BENZTD BENZTD 2130
3001 -cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
3002 -solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
3003 -mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
3004 -fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
3005 -rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
3006 -smallogger MACH_SMALLOGGER SMALLOGGER 2136
3007 +htcvenus MACH_HTCVENUS HTCVENUS 2006
3008 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h
3009 --- linux-2.6.29.owrt/arch/avr32/mach-at32ap/include/mach/board.h 2009-05-10 22:04:40.000000000 +0200
3010 +++ linux-2.6.29-rc3.owrt/arch/avr32/mach-at32ap/include/mach/board.h 2009-05-10 23:48:28.000000000 +0200
3011 @@ -116,7 +116,6 @@
3012 int enable_pin; /* chip enable */
3013 int det_pin; /* card detect */
3014 int rdy_pin; /* ready/busy */
3015 - u8 rdy_pin_active_low; /* rdy_pin value is inverted */
3016 u8 ale; /* address line number connected to ALE */
3017 u8 cle; /* address line number connected to CLE */
3018 u8 bus_width_16; /* buswidth is 16 bit */
3019 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF518F-EZBRD_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF518F-EZBRD_defconfig
3020 --- linux-2.6.29.owrt/arch/blackfin/configs/BF518F-EZBRD_defconfig 2009-05-10 22:04:41.000000000 +0200
3021 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF518F-EZBRD_defconfig 2009-05-10 23:48:28.000000000 +0200
3022 @@ -1,7 +1,6 @@
3023 #
3024 # Automatically generated make config: don't edit
3025 -# Linux kernel version: 2.6.28
3026 -# Fri Feb 20 10:01:44 2009
3027 +# Linux kernel version: 2.6.28-rc2
3028 #
3029 # CONFIG_MMU is not set
3030 # CONFIG_FPU is not set
3031 @@ -133,15 +132,10 @@
3032 # CONFIG_BF538 is not set
3033 # CONFIG_BF539 is not set
3034 # CONFIG_BF542 is not set
3035 -# CONFIG_BF542M is not set
3036 # CONFIG_BF544 is not set
3037 -# CONFIG_BF544M is not set
3038 # CONFIG_BF547 is not set
3039 -# CONFIG_BF547M is not set
3040 # CONFIG_BF548 is not set
3041 -# CONFIG_BF548M is not set
3042 # CONFIG_BF549 is not set
3043 -# CONFIG_BF549M is not set
3044 # CONFIG_BF561 is not set
3045 CONFIG_BF_REV_MIN=0
3046 CONFIG_BF_REV_MAX=2
3047 @@ -155,7 +149,6 @@
3048 # CONFIG_BF_REV_ANY is not set
3049 # CONFIG_BF_REV_NONE is not set
3050 CONFIG_BF51x=y
3051 -CONFIG_MEM_MT48LC32M8A2_75=y
3052 CONFIG_BFIN518F_EZBRD=y
3053
3054 #
3055 @@ -431,17 +424,7 @@
3056 # CONFIG_TIPC is not set
3057 # CONFIG_ATM is not set
3058 # CONFIG_BRIDGE is not set
3059 -CONFIG_NET_DSA=y
3060 -# CONFIG_NET_DSA_TAG_DSA is not set
3061 -# CONFIG_NET_DSA_TAG_EDSA is not set
3062 -# CONFIG_NET_DSA_TAG_TRAILER is not set
3063 -CONFIG_NET_DSA_TAG_STPID=y
3064 -# CONFIG_NET_DSA_MV88E6XXX is not set
3065 -# CONFIG_NET_DSA_MV88E6060 is not set
3066 -# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
3067 -# CONFIG_NET_DSA_MV88E6131 is not set
3068 -# CONFIG_NET_DSA_MV88E6123_61_65 is not set
3069 -CONFIG_NET_DSA_KSZ8893M=y
3070 +# CONFIG_NET_DSA is not set
3071 # CONFIG_VLAN_8021Q is not set
3072 # CONFIG_DECNET is not set
3073 # CONFIG_LLC2 is not set
3074 @@ -544,8 +527,6 @@
3075 #
3076 # Self-contained MTD device drivers
3077 #
3078 -# CONFIG_MTD_DATAFLASH is not set
3079 -# CONFIG_MTD_M25P80 is not set
3080 # CONFIG_MTD_SLRAM is not set
3081 # CONFIG_MTD_PHRAM is not set
3082 # CONFIG_MTD_MTDRAM is not set
3083 @@ -578,9 +559,7 @@
3084 # CONFIG_BLK_DEV_HD is not set
3085 CONFIG_MISC_DEVICES=y
3086 # CONFIG_EEPROM_93CX6 is not set
3087 -# CONFIG_ICS932S401 is not set
3088 # CONFIG_ENCLOSURE_SERVICES is not set
3089 -# CONFIG_C2PORT is not set
3090 CONFIG_HAVE_IDE=y
3091 # CONFIG_IDE is not set
3092
3093 @@ -619,14 +598,10 @@
3094 # CONFIG_MDIO_BITBANG is not set
3095 CONFIG_NET_ETHERNET=y
3096 CONFIG_MII=y
3097 -CONFIG_BFIN_MAC=y
3098 -CONFIG_BFIN_TX_DESC_NUM=10
3099 -CONFIG_BFIN_RX_DESC_NUM=20
3100 -# CONFIG_BFIN_MAC_RMII is not set
3101 +# CONFIG_BFIN_MAC is not set
3102 # CONFIG_SMC91X is not set
3103 # CONFIG_SMSC911X is not set
3104 # CONFIG_DM9000 is not set
3105 -# CONFIG_ENC28J60 is not set
3106 # CONFIG_IBM_NEW_EMAC_ZMII is not set
3107 # CONFIG_IBM_NEW_EMAC_RGMII is not set
3108 # CONFIG_IBM_NEW_EMAC_TAH is not set
3109 @@ -704,7 +679,7 @@
3110 CONFIG_HW_CONSOLE=y
3111 # CONFIG_VT_HW_CONSOLE_BINDING is not set
3112 # CONFIG_DEVKMEM is not set
3113 -CONFIG_BFIN_JTAG_COMM=m
3114 +# CONFIG_BFIN_JTAG_COMM is not set
3115 # CONFIG_SERIAL_NONSTANDARD is not set
3116
3117 #
3118 @@ -784,23 +759,7 @@
3119 # CONFIG_I2C_DEBUG_ALGO is not set
3120 # CONFIG_I2C_DEBUG_BUS is not set
3121 # CONFIG_I2C_DEBUG_CHIP is not set
3122 -CONFIG_SPI=y
3123 -# CONFIG_SPI_DEBUG is not set
3124 -CONFIG_SPI_MASTER=y
3125 -
3126 -#
3127 -# SPI Master Controller Drivers
3128 -#
3129 -CONFIG_SPI_BFIN=y
3130 -# CONFIG_SPI_BFIN_LOCK is not set
3131 -# CONFIG_SPI_BITBANG is not set
3132 -
3133 -#
3134 -# SPI Protocol Masters
3135 -#
3136 -# CONFIG_SPI_AT25 is not set
3137 -# CONFIG_SPI_SPIDEV is not set
3138 -# CONFIG_SPI_TLE62X0 is not set
3139 +# CONFIG_SPI is not set
3140 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
3141 # CONFIG_GPIOLIB is not set
3142 # CONFIG_W1 is not set
3143 @@ -824,10 +783,8 @@
3144 # CONFIG_MFD_SM501 is not set
3145 # CONFIG_HTC_PASIC3 is not set
3146 # CONFIG_MFD_TMIO is not set
3147 -# CONFIG_PMIC_DA903X is not set
3148 # CONFIG_MFD_WM8400 is not set
3149 # CONFIG_MFD_WM8350_I2C is not set
3150 -# CONFIG_REGULATOR is not set
3151
3152 #
3153 # Multimedia devices
3154 @@ -899,18 +856,10 @@
3155 # CONFIG_RTC_DRV_M41T80 is not set
3156 # CONFIG_RTC_DRV_S35390A is not set
3157 # CONFIG_RTC_DRV_FM3130 is not set
3158 -# CONFIG_RTC_DRV_RX8581 is not set
3159
3160 #
3161 # SPI RTC drivers
3162 #
3163 -# CONFIG_RTC_DRV_M41T94 is not set
3164 -# CONFIG_RTC_DRV_DS1305 is not set
3165 -# CONFIG_RTC_DRV_DS1390 is not set
3166 -# CONFIG_RTC_DRV_MAX6902 is not set
3167 -# CONFIG_RTC_DRV_R9701 is not set
3168 -# CONFIG_RTC_DRV_RS5C348 is not set
3169 -# CONFIG_RTC_DRV_DS3234 is not set
3170
3171 #
3172 # Platform RTC drivers
3173 @@ -1108,20 +1057,12 @@
3174 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
3175 # CONFIG_FAULT_INJECTION is not set
3176 CONFIG_SYSCTL_SYSCALL_CHECK=y
3177 -
3178 -#
3179 -# Tracers
3180 -#
3181 -# CONFIG_SCHED_TRACER is not set
3182 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
3183 -# CONFIG_BOOT_TRACER is not set
3184 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
3185 # CONFIG_SAMPLES is not set
3186 CONFIG_HAVE_ARCH_KGDB=y
3187 # CONFIG_KGDB is not set
3188 # CONFIG_DEBUG_STACKOVERFLOW is not set
3189 # CONFIG_DEBUG_STACK_USAGE is not set
3190 -# CONFIG_KGDB_TESTCASE is not set
3191 CONFIG_DEBUG_VERBOSE=y
3192 CONFIG_DEBUG_MMRS=y
3193 # CONFIG_DEBUG_HWERR is not set
3194 @@ -1154,7 +1095,6 @@
3195 #
3196 # CONFIG_CRYPTO_FIPS is not set
3197 # CONFIG_CRYPTO_MANAGER is not set
3198 -# CONFIG_CRYPTO_MANAGER2 is not set
3199 # CONFIG_CRYPTO_GF128MUL is not set
3200 # CONFIG_CRYPTO_NULL is not set
3201 # CONFIG_CRYPTO_CRYPTD is not set
3202 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF526-EZBRD_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF526-EZBRD_defconfig
3203 --- linux-2.6.29.owrt/arch/blackfin/configs/BF526-EZBRD_defconfig 2009-05-10 22:04:41.000000000 +0200
3204 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF526-EZBRD_defconfig 2009-05-10 23:48:28.000000000 +0200
3205 @@ -723,7 +723,7 @@
3206 CONFIG_HW_CONSOLE=y
3207 # CONFIG_VT_HW_CONSOLE_BINDING is not set
3208 # CONFIG_DEVKMEM is not set
3209 -CONFIG_BFIN_JTAG_COMM=m
3210 +# CONFIG_BFIN_JTAG_COMM is not set
3211 # CONFIG_SERIAL_NONSTANDARD is not set
3212
3213 #
3214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF527-EZKIT_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF527-EZKIT_defconfig
3215 --- linux-2.6.29.owrt/arch/blackfin/configs/BF527-EZKIT_defconfig 2009-05-10 22:04:41.000000000 +0200
3216 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF527-EZKIT_defconfig 2009-05-10 23:48:28.000000000 +0200
3217 @@ -327,8 +327,8 @@
3218 CONFIG_BFIN_DCACHE=y
3219 # CONFIG_BFIN_DCACHE_BANKA is not set
3220 # CONFIG_BFIN_ICACHE_LOCK is not set
3221 -CONFIG_BFIN_WB=y
3222 -# CONFIG_BFIN_WT is not set
3223 +# CONFIG_BFIN_WB is not set
3224 +CONFIG_BFIN_WT=y
3225 # CONFIG_MPU is not set
3226
3227 #
3228 @@ -767,7 +767,7 @@
3229 CONFIG_HW_CONSOLE=y
3230 # CONFIG_VT_HW_CONSOLE_BINDING is not set
3231 # CONFIG_DEVKMEM is not set
3232 -CONFIG_BFIN_JTAG_COMM=m
3233 +# CONFIG_BFIN_JTAG_COMM is not set
3234 # CONFIG_SERIAL_NONSTANDARD is not set
3235
3236 #
3237 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF533-EZKIT_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF533-EZKIT_defconfig
3238 --- linux-2.6.29.owrt/arch/blackfin/configs/BF533-EZKIT_defconfig 2009-05-10 22:04:41.000000000 +0200
3239 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF533-EZKIT_defconfig 2009-05-10 23:48:28.000000000 +0200
3240 @@ -290,8 +290,8 @@
3241 CONFIG_BFIN_DCACHE=y
3242 # CONFIG_BFIN_DCACHE_BANKA is not set
3243 # CONFIG_BFIN_ICACHE_LOCK is not set
3244 -CONFIG_BFIN_WB=y
3245 -# CONFIG_BFIN_WT is not set
3246 +# CONFIG_BFIN_WB is not set
3247 +CONFIG_BFIN_WT=y
3248 # CONFIG_MPU is not set
3249
3250 #
3251 @@ -672,7 +672,7 @@
3252 CONFIG_SIMPLE_GPIO=m
3253 # CONFIG_VT is not set
3254 # CONFIG_DEVKMEM is not set
3255 -CONFIG_BFIN_JTAG_COMM=m
3256 +# CONFIG_BFIN_JTAG_COMM is not set
3257 # CONFIG_SERIAL_NONSTANDARD is not set
3258
3259 #
3260 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF533-STAMP_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF533-STAMP_defconfig
3261 --- linux-2.6.29.owrt/arch/blackfin/configs/BF533-STAMP_defconfig 2009-05-10 22:04:41.000000000 +0200
3262 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF533-STAMP_defconfig 2009-05-10 23:48:28.000000000 +0200
3263 @@ -290,8 +290,8 @@
3264 CONFIG_BFIN_DCACHE=y
3265 # CONFIG_BFIN_DCACHE_BANKA is not set
3266 # CONFIG_BFIN_ICACHE_LOCK is not set
3267 -CONFIG_BFIN_WB=y
3268 -# CONFIG_BFIN_WT is not set
3269 +# CONFIG_BFIN_WB is not set
3270 +CONFIG_BFIN_WT=y
3271 # CONFIG_MPU is not set
3272
3273 #
3274 @@ -679,7 +679,7 @@
3275 CONFIG_SIMPLE_GPIO=m
3276 # CONFIG_VT is not set
3277 # CONFIG_DEVKMEM is not set
3278 -CONFIG_BFIN_JTAG_COMM=m
3279 +# CONFIG_BFIN_JTAG_COMM is not set
3280 # CONFIG_SERIAL_NONSTANDARD is not set
3281
3282 #
3283 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF537-STAMP_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF537-STAMP_defconfig
3284 --- linux-2.6.29.owrt/arch/blackfin/configs/BF537-STAMP_defconfig 2009-05-10 22:04:41.000000000 +0200
3285 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF537-STAMP_defconfig 2009-05-10 23:48:28.000000000 +0200
3286 @@ -298,8 +298,8 @@
3287 CONFIG_BFIN_DCACHE=y
3288 # CONFIG_BFIN_DCACHE_BANKA is not set
3289 # CONFIG_BFIN_ICACHE_LOCK is not set
3290 -CONFIG_BFIN_WB=y
3291 -# CONFIG_BFIN_WT is not set
3292 +# CONFIG_BFIN_WB is not set
3293 +CONFIG_BFIN_WT=y
3294 # CONFIG_MPU is not set
3295
3296 #
3297 @@ -568,7 +568,15 @@
3298 # CONFIG_MTD_DOC2000 is not set
3299 # CONFIG_MTD_DOC2001 is not set
3300 # CONFIG_MTD_DOC2001PLUS is not set
3301 -# CONFIG_MTD_NAND is not set
3302 +CONFIG_MTD_NAND=m
3303 +# CONFIG_MTD_NAND_VERIFY_WRITE is not set
3304 +# CONFIG_MTD_NAND_ECC_SMC is not set
3305 +# CONFIG_MTD_NAND_MUSEUM_IDS is not set
3306 +# CONFIG_MTD_NAND_BFIN is not set
3307 +CONFIG_MTD_NAND_IDS=m
3308 +# CONFIG_MTD_NAND_DISKONCHIP is not set
3309 +# CONFIG_MTD_NAND_NANDSIM is not set
3310 +CONFIG_MTD_NAND_PLATFORM=m
3311 # CONFIG_MTD_ONENAND is not set
3312
3313 #
3314 @@ -714,7 +722,7 @@
3315 CONFIG_SIMPLE_GPIO=m
3316 # CONFIG_VT is not set
3317 # CONFIG_DEVKMEM is not set
3318 -CONFIG_BFIN_JTAG_COMM=m
3319 +# CONFIG_BFIN_JTAG_COMM is not set
3320 # CONFIG_SERIAL_NONSTANDARD is not set
3321
3322 #
3323 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF538-EZKIT_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF538-EZKIT_defconfig
3324 --- linux-2.6.29.owrt/arch/blackfin/configs/BF538-EZKIT_defconfig 2009-05-10 22:04:41.000000000 +0200
3325 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF538-EZKIT_defconfig 2009-05-10 23:48:28.000000000 +0200
3326 @@ -306,8 +306,8 @@
3327 CONFIG_BFIN_DCACHE=y
3328 # CONFIG_BFIN_DCACHE_BANKA is not set
3329 # CONFIG_BFIN_ICACHE_LOCK is not set
3330 -CONFIG_BFIN_WB=y
3331 -# CONFIG_BFIN_WT is not set
3332 +# CONFIG_BFIN_WB is not set
3333 +CONFIG_BFIN_WT=y
3334 # CONFIG_MPU is not set
3335
3336 #
3337 @@ -726,7 +726,7 @@
3338 CONFIG_SIMPLE_GPIO=m
3339 # CONFIG_VT is not set
3340 # CONFIG_DEVKMEM is not set
3341 -CONFIG_BFIN_JTAG_COMM=m
3342 +# CONFIG_BFIN_JTAG_COMM is not set
3343 # CONFIG_SERIAL_NONSTANDARD is not set
3344
3345 #
3346 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF548-EZKIT_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF548-EZKIT_defconfig
3347 --- linux-2.6.29.owrt/arch/blackfin/configs/BF548-EZKIT_defconfig 2009-05-10 22:04:41.000000000 +0200
3348 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF548-EZKIT_defconfig 2009-05-10 23:48:28.000000000 +0200
3349 @@ -361,8 +361,8 @@
3350 CONFIG_BFIN_DCACHE=y
3351 # CONFIG_BFIN_DCACHE_BANKA is not set
3352 # CONFIG_BFIN_ICACHE_LOCK is not set
3353 -CONFIG_BFIN_WB=y
3354 -# CONFIG_BFIN_WT is not set
3355 +# CONFIG_BFIN_WB is not set
3356 +CONFIG_BFIN_WT=y
3357 # CONFIG_BFIN_L2_CACHEABLE is not set
3358 # CONFIG_MPU is not set
3359
3360 @@ -680,7 +680,7 @@
3361 CONFIG_SCSI_DMA=y
3362 # CONFIG_SCSI_TGT is not set
3363 # CONFIG_SCSI_NETLINK is not set
3364 -# CONFIG_SCSI_PROC_FS is not set
3365 +CONFIG_SCSI_PROC_FS=y
3366
3367 #
3368 # SCSI support type (disk, tape, CD-ROM)
3369 @@ -856,7 +856,7 @@
3370 CONFIG_HW_CONSOLE=y
3371 # CONFIG_VT_HW_CONSOLE_BINDING is not set
3372 # CONFIG_DEVKMEM is not set
3373 -CONFIG_BFIN_JTAG_COMM=m
3374 +# CONFIG_BFIN_JTAG_COMM is not set
3375 # CONFIG_SERIAL_NONSTANDARD is not set
3376
3377 #
3378 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BF561-EZKIT_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF561-EZKIT_defconfig
3379 --- linux-2.6.29.owrt/arch/blackfin/configs/BF561-EZKIT_defconfig 2009-05-10 22:04:41.000000000 +0200
3380 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BF561-EZKIT_defconfig 2009-05-10 23:48:28.000000000 +0200
3381 @@ -329,8 +329,8 @@
3382 CONFIG_BFIN_DCACHE=y
3383 # CONFIG_BFIN_DCACHE_BANKA is not set
3384 # CONFIG_BFIN_ICACHE_LOCK is not set
3385 -CONFIG_BFIN_WB=y
3386 -# CONFIG_BFIN_WT is not set
3387 +# CONFIG_BFIN_WB is not set
3388 +CONFIG_BFIN_WT=y
3389 # CONFIG_BFIN_L2_CACHEABLE is not set
3390 # CONFIG_MPU is not set
3391
3392 @@ -709,7 +709,7 @@
3393 CONFIG_SIMPLE_GPIO=m
3394 # CONFIG_VT is not set
3395 # CONFIG_DEVKMEM is not set
3396 -CONFIG_BFIN_JTAG_COMM=m
3397 +# CONFIG_BFIN_JTAG_COMM is not set
3398 # CONFIG_SERIAL_NONSTANDARD is not set
3399
3400 #
3401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/BlackStamp_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/BlackStamp_defconfig
3402 --- linux-2.6.29.owrt/arch/blackfin/configs/BlackStamp_defconfig 2009-05-10 22:04:41.000000000 +0200
3403 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/BlackStamp_defconfig 2009-05-10 23:48:28.000000000 +0200
3404 @@ -288,8 +288,8 @@
3405 CONFIG_BFIN_DCACHE=y
3406 # CONFIG_BFIN_DCACHE_BANKA is not set
3407 # CONFIG_BFIN_ICACHE_LOCK is not set
3408 -CONFIG_BFIN_WB=y
3409 -# CONFIG_BFIN_WT is not set
3410 +# CONFIG_BFIN_WB is not set
3411 +CONFIG_BFIN_WT=y
3412 # CONFIG_MPU is not set
3413
3414 #
3415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/CM-BF527_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/CM-BF527_defconfig
3416 --- linux-2.6.29.owrt/arch/blackfin/configs/CM-BF527_defconfig 2009-05-10 22:04:41.000000000 +0200
3417 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/CM-BF527_defconfig 2009-05-10 23:48:28.000000000 +0200
3418 @@ -1,6 +1,7 @@
3419 #
3420 # Automatically generated make config: don't edit
3421 -# Linux kernel version: 2.6.28
3422 +# Linux kernel version: 2.6.24.7
3423 +# Fri Jul 18 18:00:41 2008
3424 #
3425 # CONFIG_MMU is not set
3426 # CONFIG_FPU is not set
3427 @@ -8,6 +9,7 @@
3428 # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
3429 CONFIG_BLACKFIN=y
3430 CONFIG_ZONE_DMA=y
3431 +CONFIG_SEMAPHORE_SLEEPERS=y
3432 CONFIG_GENERIC_FIND_NEXT_BIT=y
3433 CONFIG_GENERIC_HWEIGHT=y
3434 CONFIG_GENERIC_HARDIRQS=y
3435 @@ -30,16 +32,18 @@
3436 # CONFIG_POSIX_MQUEUE is not set
3437 # CONFIG_BSD_PROCESS_ACCT is not set
3438 # CONFIG_TASKSTATS is not set
3439 +# CONFIG_USER_NS is not set
3440 +# CONFIG_PID_NS is not set
3441 # CONFIG_AUDIT is not set
3442 CONFIG_IKCONFIG=y
3443 CONFIG_IKCONFIG_PROC=y
3444 CONFIG_LOG_BUF_SHIFT=14
3445 # CONFIG_CGROUPS is not set
3446 -# CONFIG_GROUP_SCHED is not set
3447 -CONFIG_SYSFS_DEPRECATED=y
3448 -CONFIG_SYSFS_DEPRECATED_V2=y
3449 +CONFIG_FAIR_GROUP_SCHED=y
3450 +CONFIG_FAIR_USER_SCHED=y
3451 +# CONFIG_FAIR_CGROUP_SCHED is not set
3452 +# CONFIG_SYSFS_DEPRECATED is not set
3453 # CONFIG_RELAY is not set
3454 -# CONFIG_NAMESPACES is not set
3455 CONFIG_BLK_DEV_INITRD=y
3456 CONFIG_INITRAMFS_SOURCE=""
3457 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
3458 @@ -48,35 +52,26 @@
3459 CONFIG_UID16=y
3460 CONFIG_SYSCTL_SYSCALL=y
3461 CONFIG_KALLSYMS=y
3462 -# CONFIG_KALLSYMS_ALL is not set
3463 # CONFIG_KALLSYMS_EXTRA_PASS is not set
3464 CONFIG_HOTPLUG=y
3465 CONFIG_PRINTK=y
3466 CONFIG_BUG=y
3467 # CONFIG_ELF_CORE is not set
3468 -CONFIG_COMPAT_BRK=y
3469 CONFIG_BASE_FULL=y
3470 CONFIG_FUTEX=y
3471 CONFIG_ANON_INODES=y
3472 CONFIG_EPOLL=y
3473 CONFIG_SIGNALFD=y
3474 -CONFIG_TIMERFD=y
3475 CONFIG_EVENTFD=y
3476 -CONFIG_AIO=y
3477 CONFIG_VM_EVENT_COUNTERS=y
3478 CONFIG_SLAB=y
3479 # CONFIG_SLUB is not set
3480 # CONFIG_SLOB is not set
3481 -# CONFIG_PROFILING is not set
3482 -# CONFIG_MARKERS is not set
3483 -CONFIG_HAVE_OPROFILE=y
3484 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
3485 CONFIG_SLABINFO=y
3486 CONFIG_RT_MUTEXES=y
3487 CONFIG_TINY_SHMEM=y
3488 CONFIG_BASE_SMALL=0
3489 CONFIG_MODULES=y
3490 -# CONFIG_MODULE_FORCE_LOAD is not set
3491 CONFIG_MODULE_UNLOAD=y
3492 # CONFIG_MODULE_FORCE_UNLOAD is not set
3493 # CONFIG_MODVERSIONS is not set
3494 @@ -87,7 +82,6 @@
3495 # CONFIG_BLK_DEV_IO_TRACE is not set
3496 # CONFIG_LSF is not set
3497 # CONFIG_BLK_DEV_BSG is not set
3498 -# CONFIG_BLK_DEV_INTEGRITY is not set
3499
3500 #
3501 # IO Schedulers
3502 @@ -101,11 +95,9 @@
3503 CONFIG_DEFAULT_CFQ=y
3504 # CONFIG_DEFAULT_NOOP is not set
3505 CONFIG_DEFAULT_IOSCHED="cfq"
3506 -CONFIG_CLASSIC_RCU=y
3507 # CONFIG_PREEMPT_NONE is not set
3508 CONFIG_PREEMPT_VOLUNTARY=y
3509 # CONFIG_PREEMPT is not set
3510 -# CONFIG_FREEZER is not set
3511
3512 #
3513 # Blackfin Processor Options
3514 @@ -114,10 +106,6 @@
3515 #
3516 # Processor and Board Settings
3517 #
3518 -# CONFIG_BF512 is not set
3519 -# CONFIG_BF514 is not set
3520 -# CONFIG_BF516 is not set
3521 -# CONFIG_BF518 is not set
3522 # CONFIG_BF522 is not set
3523 # CONFIG_BF523 is not set
3524 # CONFIG_BF524 is not set
3525 @@ -130,32 +118,48 @@
3526 # CONFIG_BF534 is not set
3527 # CONFIG_BF536 is not set
3528 # CONFIG_BF537 is not set
3529 -# CONFIG_BF538 is not set
3530 -# CONFIG_BF539 is not set
3531 # CONFIG_BF542 is not set
3532 -# CONFIG_BF542M is not set
3533 # CONFIG_BF544 is not set
3534 -# CONFIG_BF544M is not set
3535 # CONFIG_BF547 is not set
3536 -# CONFIG_BF547M is not set
3537 # CONFIG_BF548 is not set
3538 -# CONFIG_BF548M is not set
3539 # CONFIG_BF549 is not set
3540 -# CONFIG_BF549M is not set
3541 # CONFIG_BF561 is not set
3542 -CONFIG_BF_REV_MIN=0
3543 -CONFIG_BF_REV_MAX=2
3544 # CONFIG_BF_REV_0_0 is not set
3545 CONFIG_BF_REV_0_1=y
3546 # CONFIG_BF_REV_0_2 is not set
3547 # CONFIG_BF_REV_0_3 is not set
3548 # CONFIG_BF_REV_0_4 is not set
3549 # CONFIG_BF_REV_0_5 is not set
3550 -# CONFIG_BF_REV_0_6 is not set
3551 # CONFIG_BF_REV_ANY is not set
3552 # CONFIG_BF_REV_NONE is not set
3553 CONFIG_BF52x=y
3554 CONFIG_MEM_MT48LC16M16A2TG_75=y
3555 +# CONFIG_BFIN527_EZKIT is not set
3556 +CONFIG_BFIN527_BLUETECHNIX_CM=y
3557 +
3558 +#
3559 +# BF527 Specific Configuration
3560 +#
3561 +
3562 +#
3563 +# Alternative Multiplexing Scheme
3564 +#
3565 +# CONFIG_BF527_SPORT0_PORTF is not set
3566 +CONFIG_BF527_SPORT0_PORTG=y
3567 +CONFIG_BF527_SPORT0_TSCLK_PG10=y
3568 +# CONFIG_BF527_SPORT0_TSCLK_PG14 is not set
3569 +CONFIG_BF527_UART1_PORTF=y
3570 +# CONFIG_BF527_UART1_PORTG is not set
3571 +# CONFIG_BF527_NAND_D_PORTF is not set
3572 +CONFIG_BF527_NAND_D_PORTH=y
3573 +
3574 +#
3575 +# Interrupt Priority Assignment
3576 +#
3577 +
3578 +#
3579 +# Priority
3580 +#
3581 CONFIG_IRQ_PLL_WAKEUP=7
3582 CONFIG_IRQ_DMA0_ERROR=7
3583 CONFIG_IRQ_DMAR0_BLK=7
3584 @@ -175,6 +179,7 @@
3585 CONFIG_IRQ_SPORT1_RX=9
3586 CONFIG_IRQ_SPORT1_TX=9
3587 CONFIG_IRQ_TWI=10
3588 +CONFIG_IRQ_SPI=10
3589 CONFIG_IRQ_UART0_RX=10
3590 CONFIG_IRQ_UART0_TX=10
3591 CONFIG_IRQ_UART1_RX=10
3592 @@ -200,34 +205,6 @@
3593 CONFIG_IRQ_WATCH=13
3594 CONFIG_IRQ_PORTF_INTA=13
3595 CONFIG_IRQ_PORTF_INTB=13
3596 -# CONFIG_BFIN527_EZKIT is not set
3597 -CONFIG_BFIN527_BLUETECHNIX_CM=y
3598 -# CONFIG_BFIN526_EZBRD is not set
3599 -
3600 -#
3601 -# BF527 Specific Configuration
3602 -#
3603 -
3604 -#
3605 -# Alternative Multiplexing Scheme
3606 -#
3607 -# CONFIG_BF527_SPORT0_PORTF is not set
3608 -CONFIG_BF527_SPORT0_PORTG=y
3609 -CONFIG_BF527_SPORT0_TSCLK_PG10=y
3610 -# CONFIG_BF527_SPORT0_TSCLK_PG14 is not set
3611 -CONFIG_BF527_UART1_PORTF=y
3612 -# CONFIG_BF527_UART1_PORTG is not set
3613 -# CONFIG_BF527_NAND_D_PORTF is not set
3614 -CONFIG_BF527_NAND_D_PORTH=y
3615 -
3616 -#
3617 -# Interrupt Priority Assignment
3618 -#
3619 -
3620 -#
3621 -# Priority
3622 -#
3623 -CONFIG_IRQ_SPI=10
3624 CONFIG_IRQ_SPI_ERROR=7
3625 CONFIG_IRQ_NFC_ERROR=7
3626 CONFIG_IRQ_HDMA_ERROR=7
3627 @@ -249,6 +226,7 @@
3628 #
3629 CONFIG_CLKIN_HZ=25000000
3630 # CONFIG_BFIN_KERNEL_CLOCK is not set
3631 +CONFIG_MAX_MEM_SIZE=512
3632 CONFIG_MAX_VCO_HZ=600000000
3633 CONFIG_MIN_VCO_HZ=50000000
3634 CONFIG_MAX_SCLK_HZ=133333333
3635 @@ -262,10 +240,10 @@
3636 # CONFIG_HZ_300 is not set
3637 # CONFIG_HZ_1000 is not set
3638 CONFIG_HZ=250
3639 -# CONFIG_SCHED_HRTICK is not set
3640 CONFIG_GENERIC_TIME=y
3641 CONFIG_GENERIC_CLOCKEVENTS=y
3642 # CONFIG_CYCLES_CLOCKSOURCE is not set
3643 +# CONFIG_TICK_ONESHOT is not set
3644 # CONFIG_NO_HZ is not set
3645 # CONFIG_HIGH_RES_TIMERS is not set
3646 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
3647 @@ -299,12 +277,6 @@
3648 CONFIG_CACHELINE_ALIGNED_L1=y
3649 # CONFIG_SYSCALL_TAB_L1 is not set
3650 # CONFIG_CPLB_SWITCH_TAB_L1 is not set
3651 -CONFIG_APP_STACK_L1=y
3652 -
3653 -#
3654 -# Speed Optimizations
3655 -#
3656 -CONFIG_BFIN_INS_LOWOVERHEAD=y
3657 CONFIG_RAMKERNEL=y
3658 # CONFIG_ROMKERNEL is not set
3659 CONFIG_SELECT_MEMORY_MODEL=y
3660 @@ -313,10 +285,10 @@
3661 # CONFIG_SPARSEMEM_MANUAL is not set
3662 CONFIG_FLATMEM=y
3663 CONFIG_FLAT_NODE_MEM_MAP=y
3664 -CONFIG_PAGEFLAGS_EXTENDED=y
3665 +# CONFIG_SPARSEMEM_STATIC is not set
3666 +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
3667 CONFIG_SPLIT_PTLOCK_CPUS=4
3668 # CONFIG_RESOURCES_64BIT is not set
3669 -# CONFIG_PHYS_ADDR_T_64BIT is not set
3670 CONFIG_ZONE_DMA_FLAG=1
3671 CONFIG_VIRT_TO_BUS=y
3672 CONFIG_BFIN_GPTIMERS=y
3673 @@ -332,8 +304,8 @@
3674 CONFIG_BFIN_DCACHE=y
3675 # CONFIG_BFIN_DCACHE_BANKA is not set
3676 # CONFIG_BFIN_ICACHE_LOCK is not set
3677 -CONFIG_BFIN_WB=y
3678 -# CONFIG_BFIN_WT is not set
3679 +# CONFIG_BFIN_WB is not set
3680 +CONFIG_BFIN_WT=y
3681 # CONFIG_MPU is not set
3682
3683 #
3684 @@ -362,6 +334,7 @@
3685 #
3686 # Bus options (PCI, PCMCIA, EISA, MCA, ISA)
3687 #
3688 +# CONFIG_PCI is not set
3689 # CONFIG_ARCH_SUPPORTS_MSI is not set
3690 # CONFIG_PCCARD is not set
3691
3692 @@ -372,20 +345,25 @@
3693 CONFIG_BINFMT_FLAT=y
3694 CONFIG_BINFMT_ZFLAT=y
3695 # CONFIG_BINFMT_SHARED_FLAT is not set
3696 -# CONFIG_HAVE_AOUT is not set
3697 # CONFIG_BINFMT_MISC is not set
3698
3699 #
3700 # Power management options
3701 #
3702 # CONFIG_PM is not set
3703 -CONFIG_ARCH_SUSPEND_POSSIBLE=y
3704 +CONFIG_SUSPEND_UP_POSSIBLE=y
3705 +# CONFIG_PM_BFIN_SLEEP_DEEPER is not set
3706 +# CONFIG_PM_BFIN_SLEEP is not set
3707 # CONFIG_PM_WAKEUP_BY_GPIO is not set
3708
3709 #
3710 # CPU Frequency scaling
3711 #
3712 # CONFIG_CPU_FREQ is not set
3713 +
3714 +#
3715 +# Networking
3716 +#
3717 CONFIG_NET=y
3718
3719 #
3720 @@ -398,7 +376,6 @@
3721 # CONFIG_XFRM_USER is not set
3722 # CONFIG_XFRM_SUB_POLICY is not set
3723 # CONFIG_XFRM_MIGRATE is not set
3724 -# CONFIG_XFRM_STATISTICS is not set
3725 # CONFIG_NET_KEY is not set
3726 CONFIG_INET=y
3727 # CONFIG_IP_MULTICAST is not set
3728 @@ -428,6 +405,8 @@
3729 CONFIG_DEFAULT_TCP_CONG="cubic"
3730 # CONFIG_TCP_MD5SIG is not set
3731 # CONFIG_IPV6 is not set
3732 +# CONFIG_INET6_XFRM_TUNNEL is not set
3733 +# CONFIG_INET6_TUNNEL is not set
3734 # CONFIG_NETLABEL is not set
3735 # CONFIG_NETWORK_SECMARK is not set
3736 # CONFIG_NETFILTER is not set
3737 @@ -436,7 +415,6 @@
3738 # CONFIG_TIPC is not set
3739 # CONFIG_ATM is not set
3740 # CONFIG_BRIDGE is not set
3741 -# CONFIG_NET_DSA is not set
3742 # CONFIG_VLAN_8021Q is not set
3743 # CONFIG_DECNET is not set
3744 # CONFIG_LLC2 is not set
3745 @@ -453,14 +431,14 @@
3746 #
3747 # CONFIG_NET_PKTGEN is not set
3748 # CONFIG_HAMRADIO is not set
3749 -# CONFIG_CAN is not set
3750 # CONFIG_IRDA is not set
3751 # CONFIG_BT is not set
3752 # CONFIG_AF_RXRPC is not set
3753 -# CONFIG_PHONET is not set
3754 -CONFIG_WIRELESS=y
3755 +
3756 +#
3757 +# Wireless
3758 +#
3759 # CONFIG_CFG80211 is not set
3760 -CONFIG_WIRELESS_OLD_REGULATORY=y
3761 # CONFIG_WIRELESS_EXT is not set
3762 # CONFIG_MAC80211 is not set
3763 # CONFIG_IEEE80211 is not set
3764 @@ -478,8 +456,6 @@
3765 CONFIG_STANDALONE=y
3766 CONFIG_PREVENT_FIRMWARE_BUILD=y
3767 # CONFIG_FW_LOADER is not set
3768 -# CONFIG_DEBUG_DRIVER is not set
3769 -# CONFIG_DEBUG_DEVRES is not set
3770 # CONFIG_SYS_HYPERVISOR is not set
3771 # CONFIG_CONNECTOR is not set
3772 CONFIG_MTD=y
3773 @@ -488,7 +464,6 @@
3774 CONFIG_MTD_PARTITIONS=y
3775 # CONFIG_MTD_REDBOOT_PARTS is not set
3776 # CONFIG_MTD_CMDLINE_PARTS is not set
3777 -# CONFIG_MTD_AR7_PARTS is not set
3778
3779 #
3780 # User Modules And Translation Layers
3781 @@ -532,7 +507,6 @@
3782 #
3783 CONFIG_MTD_COMPLEX_MAPPINGS=y
3784 # CONFIG_MTD_PHYSMAP is not set
3785 -# CONFIG_MTD_GPIO_ADDR is not set
3786 # CONFIG_MTD_UCLINUX is not set
3787 # CONFIG_MTD_PLATRAM is not set
3788
3789 @@ -568,12 +542,10 @@
3790 CONFIG_BLK_DEV_RAM=y
3791 CONFIG_BLK_DEV_RAM_COUNT=16
3792 CONFIG_BLK_DEV_RAM_SIZE=4096
3793 -# CONFIG_BLK_DEV_XIP is not set
3794 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
3795 # CONFIG_CDROM_PKTCDVD is not set
3796 # CONFIG_ATA_OVER_ETH is not set
3797 -# CONFIG_BLK_DEV_HD is not set
3798 # CONFIG_MISC_DEVICES is not set
3799 -CONFIG_HAVE_IDE=y
3800 # CONFIG_IDE is not set
3801
3802 #
3803 @@ -586,6 +558,7 @@
3804 # CONFIG_ATA is not set
3805 # CONFIG_MD is not set
3806 CONFIG_NETDEVICES=y
3807 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
3808 # CONFIG_DUMMY is not set
3809 # CONFIG_BONDING is not set
3810 # CONFIG_MACVLAN is not set
3811 @@ -606,7 +579,6 @@
3812 # CONFIG_SMSC_PHY is not set
3813 # CONFIG_BROADCOM_PHY is not set
3814 # CONFIG_ICPLUS_PHY is not set
3815 -# CONFIG_REALTEK_PHY is not set
3816 # CONFIG_FIXED_PHY is not set
3817 # CONFIG_MDIO_BITBANG is not set
3818 CONFIG_NET_ETHERNET=y
3819 @@ -619,14 +591,11 @@
3820 # CONFIG_SMC91X is not set
3821 # CONFIG_SMSC911X is not set
3822 # CONFIG_DM9000 is not set
3823 -# CONFIG_ENC28J60 is not set
3824 # CONFIG_IBM_NEW_EMAC_ZMII is not set
3825 # CONFIG_IBM_NEW_EMAC_RGMII is not set
3826 # CONFIG_IBM_NEW_EMAC_TAH is not set
3827 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
3828 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
3829 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
3830 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
3831 +# CONFIG_B44 is not set
3832 # CONFIG_NETDEV_1000 is not set
3833 # CONFIG_NETDEV_10000 is not set
3834
3835 @@ -635,7 +604,6 @@
3836 #
3837 # CONFIG_WLAN_PRE80211 is not set
3838 # CONFIG_WLAN_80211 is not set
3839 -# CONFIG_IWLWIFI_LEDS is not set
3840
3841 #
3842 # USB Network Adapters
3843 @@ -648,6 +616,7 @@
3844 # CONFIG_WAN is not set
3845 # CONFIG_PPP is not set
3846 # CONFIG_SLIP is not set
3847 +# CONFIG_SHAPER is not set
3848 # CONFIG_NETCONSOLE is not set
3849 # CONFIG_NETPOLL is not set
3850 # CONFIG_NET_POLL_CONTROLLER is not set
3851 @@ -673,15 +642,14 @@
3852 # CONFIG_BF5xx_PPIFCD is not set
3853 # CONFIG_BFIN_SIMPLE_TIMER is not set
3854 # CONFIG_BF5xx_PPI is not set
3855 -# CONFIG_BF5xx_EPPI is not set
3856 +CONFIG_BFIN_OTP=y
3857 +# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
3858 # CONFIG_BFIN_SPORT is not set
3859 # CONFIG_BFIN_TIMER_LATENCY is not set
3860 # CONFIG_TWI_LCD is not set
3861 -CONFIG_BFIN_DMA_INTERFACE=m
3862 CONFIG_SIMPLE_GPIO=m
3863 # CONFIG_VT is not set
3864 # CONFIG_DEVKMEM is not set
3865 -# CONFIG_BFIN_JTAG_COMM is not set
3866 # CONFIG_SERIAL_NONSTANDARD is not set
3867
3868 #
3869 @@ -705,8 +673,6 @@
3870 # CONFIG_SERIAL_BFIN_SPORT is not set
3871 CONFIG_UNIX98_PTYS=y
3872 # CONFIG_LEGACY_PTYS is not set
3873 -CONFIG_BFIN_OTP=y
3874 -# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
3875
3876 #
3877 # CAN, the car bus and industrial fieldbus
3878 @@ -714,49 +680,44 @@
3879 # CONFIG_CAN4LINUX is not set
3880 # CONFIG_IPMI_HANDLER is not set
3881 # CONFIG_HW_RANDOM is not set
3882 +# CONFIG_GEN_RTC is not set
3883 # CONFIG_R3964 is not set
3884 # CONFIG_RAW_DRIVER is not set
3885 # CONFIG_TCG_TPM is not set
3886 CONFIG_I2C=y
3887 CONFIG_I2C_BOARDINFO=y
3888 CONFIG_I2C_CHARDEV=m
3889 -CONFIG_I2C_HELPER_AUTO=y
3890
3891 #
3892 -# I2C Hardware Bus support
3893 +# I2C Algorithms
3894 #
3895 +# CONFIG_I2C_ALGOBIT is not set
3896 +# CONFIG_I2C_ALGOPCF is not set
3897 +# CONFIG_I2C_ALGOPCA is not set
3898
3899 #
3900 -# I2C system bus drivers (mostly embedded / system-on-chip)
3901 +# I2C Hardware Bus support
3902 #
3903 CONFIG_I2C_BLACKFIN_TWI=m
3904 CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
3905 # CONFIG_I2C_GPIO is not set
3906 # CONFIG_I2C_OCORES is not set
3907 -# CONFIG_I2C_SIMTEC is not set
3908 -
3909 -#
3910 -# External I2C/SMBus adapter drivers
3911 -#
3912 # CONFIG_I2C_PARPORT_LIGHT is not set
3913 +# CONFIG_I2C_SIMTEC is not set
3914 # CONFIG_I2C_TAOS_EVM is not set
3915 -# CONFIG_I2C_TINY_USB is not set
3916 -
3917 -#
3918 -# Other I2C/SMBus bus drivers
3919 -#
3920 -# CONFIG_I2C_PCA_PLATFORM is not set
3921 # CONFIG_I2C_STUB is not set
3922 +# CONFIG_I2C_TINY_USB is not set
3923
3924 #
3925 # Miscellaneous I2C Chip support
3926 #
3927 +# CONFIG_SENSORS_DS1337 is not set
3928 +# CONFIG_SENSORS_DS1374 is not set
3929 # CONFIG_DS1682 is not set
3930 -# CONFIG_AT24 is not set
3931 # CONFIG_SENSORS_AD5252 is not set
3932 -# CONFIG_SENSORS_EEPROM is not set
3933 +# CONFIG_EEPROM_LEGACY is not set
3934 # CONFIG_SENSORS_PCF8574 is not set
3935 -# CONFIG_PCF8575 is not set
3936 +# CONFIG_SENSORS_PCF8575 is not set
3937 # CONFIG_SENSORS_PCA9539 is not set
3938 # CONFIG_SENSORS_PCF8591 is not set
3939 # CONFIG_SENSORS_MAX6875 is not set
3940 @@ -765,41 +726,37 @@
3941 # CONFIG_I2C_DEBUG_ALGO is not set
3942 # CONFIG_I2C_DEBUG_BUS is not set
3943 # CONFIG_I2C_DEBUG_CHIP is not set
3944 +
3945 +#
3946 +# SPI support
3947 +#
3948 CONFIG_SPI=y
3949 -# CONFIG_SPI_DEBUG is not set
3950 CONFIG_SPI_MASTER=y
3951
3952 #
3953 # SPI Master Controller Drivers
3954 #
3955 CONFIG_SPI_BFIN=y
3956 -# CONFIG_SPI_BFIN_LOCK is not set
3957 # CONFIG_SPI_BITBANG is not set
3958
3959 #
3960 # SPI Protocol Masters
3961 #
3962 -# CONFIG_SPI_AT25 is not set
3963 +# CONFIG_EEPROM_AT25 is not set
3964 # CONFIG_SPI_SPIDEV is not set
3965 # CONFIG_SPI_TLE62X0 is not set
3966 -CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
3967 -# CONFIG_GPIOLIB is not set
3968 # CONFIG_W1 is not set
3969 # CONFIG_POWER_SUPPLY is not set
3970 CONFIG_HWMON=y
3971 # CONFIG_HWMON_VID is not set
3972 -# CONFIG_SENSORS_AD7414 is not set
3973 # CONFIG_SENSORS_AD7418 is not set
3974 -# CONFIG_SENSORS_ADCXX is not set
3975 # CONFIG_SENSORS_ADM1021 is not set
3976 # CONFIG_SENSORS_ADM1025 is not set
3977 # CONFIG_SENSORS_ADM1026 is not set
3978 # CONFIG_SENSORS_ADM1029 is not set
3979 # CONFIG_SENSORS_ADM1031 is not set
3980 # CONFIG_SENSORS_ADM9240 is not set
3981 -# CONFIG_SENSORS_ADT7462 is not set
3982 # CONFIG_SENSORS_ADT7470 is not set
3983 -# CONFIG_SENSORS_ADT7473 is not set
3984 # CONFIG_SENSORS_ATXP1 is not set
3985 # CONFIG_SENSORS_DS1621 is not set
3986 # CONFIG_SENSORS_F71805F is not set
3987 @@ -820,7 +777,6 @@
3988 # CONFIG_SENSORS_LM90 is not set
3989 # CONFIG_SENSORS_LM92 is not set
3990 # CONFIG_SENSORS_LM93 is not set
3991 -# CONFIG_SENSORS_MAX1111 is not set
3992 # CONFIG_SENSORS_MAX1619 is not set
3993 # CONFIG_SENSORS_MAX6650 is not set
3994 # CONFIG_SENSORS_PC87360 is not set
3995 @@ -829,7 +785,6 @@
3996 # CONFIG_SENSORS_SMSC47M1 is not set
3997 # CONFIG_SENSORS_SMSC47M192 is not set
3998 # CONFIG_SENSORS_SMSC47B397 is not set
3999 -# CONFIG_SENSORS_ADS7828 is not set
4000 # CONFIG_SENSORS_THMC50 is not set
4001 # CONFIG_SENSORS_VT1211 is not set
4002 # CONFIG_SENSORS_W83781D is not set
4003 @@ -837,12 +792,9 @@
4004 # CONFIG_SENSORS_W83792D is not set
4005 # CONFIG_SENSORS_W83793 is not set
4006 # CONFIG_SENSORS_W83L785TS is not set
4007 -# CONFIG_SENSORS_W83L786NG is not set
4008 # CONFIG_SENSORS_W83627HF is not set
4009 # CONFIG_SENSORS_W83627EHF is not set
4010 # CONFIG_HWMON_DEBUG_CHIP is not set
4011 -# CONFIG_THERMAL is not set
4012 -# CONFIG_THERMAL_HWMON is not set
4013 CONFIG_WATCHDOG=y
4014 # CONFIG_WATCHDOG_NOWAYOUT is not set
4015
4016 @@ -858,31 +810,21 @@
4017 # CONFIG_USBPCWATCHDOG is not set
4018
4019 #
4020 -# Multifunction device drivers
4021 +# Sonics Silicon Backplane
4022 #
4023 -# CONFIG_MFD_CORE is not set
4024 -# CONFIG_MFD_SM501 is not set
4025 -# CONFIG_HTC_PASIC3 is not set
4026 -# CONFIG_MFD_TMIO is not set
4027 -# CONFIG_PMIC_DA903X is not set
4028 -# CONFIG_MFD_WM8400 is not set
4029 -# CONFIG_MFD_WM8350_I2C is not set
4030 -# CONFIG_REGULATOR is not set
4031 +CONFIG_SSB_POSSIBLE=y
4032 +# CONFIG_SSB is not set
4033
4034 #
4035 -# Multimedia devices
4036 +# Multifunction device drivers
4037 #
4038 +# CONFIG_MFD_SM501 is not set
4039
4040 #
4041 -# Multimedia core support
4042 +# Multimedia devices
4043 #
4044 # CONFIG_VIDEO_DEV is not set
4045 # CONFIG_DVB_CORE is not set
4046 -# CONFIG_VIDEO_MEDIA is not set
4047 -
4048 -#
4049 -# Multimedia drivers
4050 -#
4051 # CONFIG_DAB is not set
4052
4053 #
4054 @@ -897,6 +839,10 @@
4055 # Display device support
4056 #
4057 # CONFIG_DISPLAY_SUPPORT is not set
4058 +
4059 +#
4060 +# Sound
4061 +#
4062 # CONFIG_SOUND is not set
4063 CONFIG_USB_SUPPORT=y
4064 CONFIG_USB_ARCH_HAS_HCD=y
4065 @@ -904,7 +850,6 @@
4066 # CONFIG_USB_ARCH_HAS_EHCI is not set
4067 CONFIG_USB=y
4068 # CONFIG_USB_DEBUG is not set
4069 -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
4070
4071 #
4072 # Miscellaneous USB options
4073 @@ -915,48 +860,40 @@
4074 # CONFIG_USB_OTG is not set
4075 # CONFIG_USB_OTG_WHITELIST is not set
4076 CONFIG_USB_OTG_BLACKLIST_HUB=y
4077 -CONFIG_USB_MON=y
4078 -# CONFIG_USB_WUSB is not set
4079 -# CONFIG_USB_WUSB_CBAF is not set
4080
4081 #
4082 # USB Host Controller Drivers
4083 #
4084 -# CONFIG_USB_C67X00_HCD is not set
4085 # CONFIG_USB_ISP116X_HCD is not set
4086 -# CONFIG_USB_ISP1760_HCD is not set
4087 # CONFIG_USB_ISP1362_HCD is not set
4088 +# CONFIG_USB_ISP1760_HCD is not set
4089 # CONFIG_USB_SL811_HCD is not set
4090 # CONFIG_USB_R8A66597_HCD is not set
4091 -# CONFIG_USB_HWA_HCD is not set
4092 CONFIG_USB_MUSB_HDRC=y
4093 CONFIG_USB_MUSB_SOC=y
4094
4095 #
4096 -# Blackfin high speed USB Support
4097 +# Blackfin high speed USB support
4098 #
4099 CONFIG_USB_MUSB_HOST=y
4100 # CONFIG_USB_MUSB_PERIPHERAL is not set
4101 # CONFIG_USB_MUSB_OTG is not set
4102 CONFIG_USB_MUSB_HDRC_HCD=y
4103 CONFIG_MUSB_PIO_ONLY=y
4104 -CONFIG_MUSB_DMA_POLL=y
4105 -# CONFIG_USB_MUSB_DEBUG is not set
4106 +CONFIG_USB_MUSB_LOGLEVEL=0
4107
4108 #
4109 # USB Device Class drivers
4110 #
4111 # CONFIG_USB_ACM is not set
4112 # CONFIG_USB_PRINTER is not set
4113 -# CONFIG_USB_WDM is not set
4114 -# CONFIG_USB_TMC is not set
4115
4116 #
4117 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
4118 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
4119 #
4120
4121 #
4122 -# see USB_STORAGE Help for more information
4123 +# may also be needed; see USB_STORAGE Help for more information
4124 #
4125 # CONFIG_USB_LIBUSUAL is not set
4126
4127 @@ -964,10 +901,15 @@
4128 # USB Imaging devices
4129 #
4130 # CONFIG_USB_MDC800 is not set
4131 +CONFIG_USB_MON=y
4132
4133 #
4134 # USB port drivers
4135 #
4136 +
4137 +#
4138 +# USB Serial Converter support
4139 +#
4140 # CONFIG_USB_SERIAL is not set
4141
4142 #
4143 @@ -976,7 +918,7 @@
4144 # CONFIG_USB_EMI62 is not set
4145 # CONFIG_USB_EMI26 is not set
4146 # CONFIG_USB_ADUTUX is not set
4147 -# CONFIG_USB_SEVSEG is not set
4148 +# CONFIG_USB_AUERSWALD is not set
4149 # CONFIG_USB_RIO500 is not set
4150 # CONFIG_USB_LEGOTOWER is not set
4151 # CONFIG_USB_LCD is not set
4152 @@ -992,13 +934,17 @@
4153 # CONFIG_USB_LD is not set
4154 # CONFIG_USB_TRANCEVIBRATOR is not set
4155 # CONFIG_USB_IOWARRIOR is not set
4156 -# CONFIG_USB_ISIGHTFW is not set
4157 -# CONFIG_USB_VST is not set
4158 +
4159 +#
4160 +# USB DSL modem support
4161 +#
4162 +
4163 +#
4164 +# USB Gadget Support
4165 +#
4166 # CONFIG_USB_GADGET is not set
4167 # CONFIG_MMC is not set
4168 -# CONFIG_MEMSTICK is not set
4169 # CONFIG_NEW_LEDS is not set
4170 -# CONFIG_ACCESSIBILITY is not set
4171 CONFIG_RTC_LIB=y
4172 CONFIG_RTC_CLASS=y
4173 CONFIG_RTC_HCTOSYS=y
4174 @@ -1027,59 +973,51 @@
4175 # CONFIG_RTC_DRV_PCF8563 is not set
4176 # CONFIG_RTC_DRV_PCF8583 is not set
4177 # CONFIG_RTC_DRV_M41T80 is not set
4178 -# CONFIG_RTC_DRV_S35390A is not set
4179 -# CONFIG_RTC_DRV_FM3130 is not set
4180 -# CONFIG_RTC_DRV_RX8581 is not set
4181
4182 #
4183 # SPI RTC drivers
4184 #
4185 -# CONFIG_RTC_DRV_M41T94 is not set
4186 -# CONFIG_RTC_DRV_DS1305 is not set
4187 -# CONFIG_RTC_DRV_DS1390 is not set
4188 -# CONFIG_RTC_DRV_MAX6902 is not set
4189 -# CONFIG_RTC_DRV_R9701 is not set
4190 # CONFIG_RTC_DRV_RS5C348 is not set
4191 -# CONFIG_RTC_DRV_DS3234 is not set
4192 +# CONFIG_RTC_DRV_MAX6902 is not set
4193
4194 #
4195 # Platform RTC drivers
4196 #
4197 -# CONFIG_RTC_DRV_DS1286 is not set
4198 -# CONFIG_RTC_DRV_DS1511 is not set
4199 # CONFIG_RTC_DRV_DS1553 is not set
4200 -# CONFIG_RTC_DRV_DS1742 is not set
4201 # CONFIG_RTC_DRV_STK17TA8 is not set
4202 +# CONFIG_RTC_DRV_DS1742 is not set
4203 # CONFIG_RTC_DRV_M48T86 is not set
4204 -# CONFIG_RTC_DRV_M48T35 is not set
4205 # CONFIG_RTC_DRV_M48T59 is not set
4206 -# CONFIG_RTC_DRV_BQ4802 is not set
4207 # CONFIG_RTC_DRV_V3020 is not set
4208
4209 #
4210 # on-CPU RTC drivers
4211 #
4212 CONFIG_RTC_DRV_BFIN=y
4213 -# CONFIG_DMADEVICES is not set
4214 +
4215 +#
4216 +# Userspace I/O
4217 +#
4218 # CONFIG_UIO is not set
4219 -# CONFIG_STAGING is not set
4220
4221 #
4222 # File systems
4223 #
4224 # CONFIG_EXT2_FS is not set
4225 # CONFIG_EXT3_FS is not set
4226 -# CONFIG_EXT4_FS is not set
4227 +# CONFIG_EXT4DEV_FS is not set
4228 # CONFIG_REISERFS_FS is not set
4229 # CONFIG_JFS_FS is not set
4230 # CONFIG_FS_POSIX_ACL is not set
4231 -CONFIG_FILE_LOCKING=y
4232 # CONFIG_XFS_FS is not set
4233 +# CONFIG_GFS2_FS is not set
4234 # CONFIG_OCFS2_FS is not set
4235 -# CONFIG_DNOTIFY is not set
4236 +# CONFIG_MINIX_FS is not set
4237 +# CONFIG_ROMFS_FS is not set
4238 CONFIG_INOTIFY=y
4239 CONFIG_INOTIFY_USER=y
4240 # CONFIG_QUOTA is not set
4241 +# CONFIG_DNOTIFY is not set
4242 # CONFIG_AUTOFS_FS is not set
4243 # CONFIG_AUTOFS4_FS is not set
4244 # CONFIG_FUSE_FS is not set
4245 @@ -1121,11 +1059,8 @@
4246 # CONFIG_JFFS2_FS is not set
4247 # CONFIG_CRAMFS is not set
4248 # CONFIG_VXFS_FS is not set
4249 -# CONFIG_MINIX_FS is not set
4250 -# CONFIG_OMFS_FS is not set
4251 # CONFIG_HPFS_FS is not set
4252 # CONFIG_QNX4FS_FS is not set
4253 -# CONFIG_ROMFS_FS is not set
4254 # CONFIG_SYSV_FS is not set
4255 # CONFIG_UFS_FS is not set
4256 CONFIG_NETWORK_FILESYSTEMS=y
4257 @@ -1133,12 +1068,13 @@
4258 CONFIG_NFS_V3=y
4259 # CONFIG_NFS_V3_ACL is not set
4260 # CONFIG_NFS_V4 is not set
4261 +# CONFIG_NFS_DIRECTIO is not set
4262 # CONFIG_NFSD is not set
4263 CONFIG_LOCKD=m
4264 CONFIG_LOCKD_V4=y
4265 CONFIG_NFS_COMMON=y
4266 CONFIG_SUNRPC=m
4267 -# CONFIG_SUNRPC_REGISTER_V4 is not set
4268 +# CONFIG_SUNRPC_BIND34 is not set
4269 # CONFIG_RPCSEC_GSS_KRB5 is not set
4270 # CONFIG_RPCSEC_GSS_SPKM3 is not set
4271 CONFIG_SMB_FS=m
4272 @@ -1194,6 +1130,7 @@
4273 # CONFIG_NLS_KOI8_U is not set
4274 # CONFIG_NLS_UTF8 is not set
4275 # CONFIG_DLM is not set
4276 +# CONFIG_INSTRUMENTATION is not set
4277
4278 #
4279 # Kernel hacking
4280 @@ -1201,61 +1138,14 @@
4281 # CONFIG_PRINTK_TIME is not set
4282 CONFIG_ENABLE_WARN_DEPRECATED=y
4283 CONFIG_ENABLE_MUST_CHECK=y
4284 -CONFIG_FRAME_WARN=1024
4285 # CONFIG_MAGIC_SYSRQ is not set
4286 # CONFIG_UNUSED_SYMBOLS is not set
4287 CONFIG_DEBUG_FS=y
4288 # CONFIG_HEADERS_CHECK is not set
4289 -CONFIG_DEBUG_KERNEL=y
4290 -# CONFIG_DEBUG_SHIRQ is not set
4291 -CONFIG_DETECT_SOFTLOCKUP=y
4292 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
4293 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
4294 -# CONFIG_SCHED_DEBUG is not set
4295 -# CONFIG_SCHEDSTATS is not set
4296 -# CONFIG_TIMER_STATS is not set
4297 -# CONFIG_DEBUG_OBJECTS is not set
4298 -# CONFIG_DEBUG_SLAB is not set
4299 -# CONFIG_DEBUG_RT_MUTEXES is not set
4300 -# CONFIG_RT_MUTEX_TESTER is not set
4301 -# CONFIG_DEBUG_SPINLOCK is not set
4302 -# CONFIG_DEBUG_MUTEXES is not set
4303 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
4304 -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
4305 -# CONFIG_DEBUG_KOBJECT is not set
4306 +# CONFIG_DEBUG_KERNEL is not set
4307 # CONFIG_DEBUG_BUGVERBOSE is not set
4308 -# CONFIG_DEBUG_INFO is not set
4309 -# CONFIG_DEBUG_VM is not set
4310 -# CONFIG_DEBUG_WRITECOUNT is not set
4311 -# CONFIG_DEBUG_MEMORY_INIT is not set
4312 -# CONFIG_DEBUG_LIST is not set
4313 -# CONFIG_DEBUG_SG is not set
4314 -# CONFIG_FRAME_POINTER is not set
4315 -# CONFIG_BOOT_PRINTK_DELAY is not set
4316 -# CONFIG_RCU_TORTURE_TEST is not set
4317 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
4318 -# CONFIG_BACKTRACE_SELF_TEST is not set
4319 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
4320 -# CONFIG_FAULT_INJECTION is not set
4321 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
4322 -
4323 -#
4324 -# Tracers
4325 -#
4326 -# CONFIG_SCHED_TRACER is not set
4327 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
4328 -# CONFIG_BOOT_TRACER is not set
4329 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
4330 # CONFIG_SAMPLES is not set
4331 -CONFIG_HAVE_ARCH_KGDB=y
4332 -# CONFIG_KGDB is not set
4333 -# CONFIG_DEBUG_STACKOVERFLOW is not set
4334 -# CONFIG_DEBUG_STACK_USAGE is not set
4335 -# CONFIG_KGDB_TESTCASE is not set
4336 -CONFIG_DEBUG_VERBOSE=y
4337 CONFIG_DEBUG_MMRS=y
4338 -# CONFIG_DEBUG_HWERR is not set
4339 -# CONFIG_DEBUG_DOUBLEFAULT is not set
4340 CONFIG_DEBUG_HUNT_FOR_ZERO=y
4341 CONFIG_DEBUG_BFIN_HWTRACE_ON=y
4342 CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
4343 @@ -1264,7 +1154,7 @@
4344 CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
4345 # CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
4346 # CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
4347 -# CONFIG_EARLY_PRINTK is not set
4348 +CONFIG_EARLY_PRINTK=y
4349 # CONFIG_CPLB_INFO is not set
4350 CONFIG_ACCESS_CHECK=y
4351
4352 @@ -1273,96 +1163,10 @@
4353 #
4354 # CONFIG_KEYS is not set
4355 CONFIG_SECURITY=y
4356 -# CONFIG_SECURITYFS is not set
4357 # CONFIG_SECURITY_NETWORK is not set
4358 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
4359 +# CONFIG_SECURITY_CAPABILITIES is not set
4360 # CONFIG_SECURITY_ROOTPLUG is not set
4361 -CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
4362 -CONFIG_CRYPTO=y
4363 -
4364 -#
4365 -# Crypto core or helper
4366 -#
4367 -# CONFIG_CRYPTO_FIPS is not set
4368 -# CONFIG_CRYPTO_MANAGER is not set
4369 -# CONFIG_CRYPTO_MANAGER2 is not set
4370 -# CONFIG_CRYPTO_GF128MUL is not set
4371 -# CONFIG_CRYPTO_NULL is not set
4372 -# CONFIG_CRYPTO_CRYPTD is not set
4373 -# CONFIG_CRYPTO_AUTHENC is not set
4374 -# CONFIG_CRYPTO_TEST is not set
4375 -
4376 -#
4377 -# Authenticated Encryption with Associated Data
4378 -#
4379 -# CONFIG_CRYPTO_CCM is not set
4380 -# CONFIG_CRYPTO_GCM is not set
4381 -# CONFIG_CRYPTO_SEQIV is not set
4382 -
4383 -#
4384 -# Block modes
4385 -#
4386 -# CONFIG_CRYPTO_CBC is not set
4387 -# CONFIG_CRYPTO_CTR is not set
4388 -# CONFIG_CRYPTO_CTS is not set
4389 -# CONFIG_CRYPTO_ECB is not set
4390 -# CONFIG_CRYPTO_LRW is not set
4391 -# CONFIG_CRYPTO_PCBC is not set
4392 -# CONFIG_CRYPTO_XTS is not set
4393 -
4394 -#
4395 -# Hash modes
4396 -#
4397 -# CONFIG_CRYPTO_HMAC is not set
4398 -# CONFIG_CRYPTO_XCBC is not set
4399 -
4400 -#
4401 -# Digest
4402 -#
4403 -# CONFIG_CRYPTO_CRC32C is not set
4404 -# CONFIG_CRYPTO_MD4 is not set
4405 -# CONFIG_CRYPTO_MD5 is not set
4406 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
4407 -# CONFIG_CRYPTO_RMD128 is not set
4408 -# CONFIG_CRYPTO_RMD160 is not set
4409 -# CONFIG_CRYPTO_RMD256 is not set
4410 -# CONFIG_CRYPTO_RMD320 is not set
4411 -# CONFIG_CRYPTO_SHA1 is not set
4412 -# CONFIG_CRYPTO_SHA256 is not set
4413 -# CONFIG_CRYPTO_SHA512 is not set
4414 -# CONFIG_CRYPTO_TGR192 is not set
4415 -# CONFIG_CRYPTO_WP512 is not set
4416 -
4417 -#
4418 -# Ciphers
4419 -#
4420 -# CONFIG_CRYPTO_AES is not set
4421 -# CONFIG_CRYPTO_ANUBIS is not set
4422 -# CONFIG_CRYPTO_ARC4 is not set
4423 -# CONFIG_CRYPTO_BLOWFISH is not set
4424 -# CONFIG_CRYPTO_CAMELLIA is not set
4425 -# CONFIG_CRYPTO_CAST5 is not set
4426 -# CONFIG_CRYPTO_CAST6 is not set
4427 -# CONFIG_CRYPTO_DES is not set
4428 -# CONFIG_CRYPTO_FCRYPT is not set
4429 -# CONFIG_CRYPTO_KHAZAD is not set
4430 -# CONFIG_CRYPTO_SALSA20 is not set
4431 -# CONFIG_CRYPTO_SEED is not set
4432 -# CONFIG_CRYPTO_SERPENT is not set
4433 -# CONFIG_CRYPTO_TEA is not set
4434 -# CONFIG_CRYPTO_TWOFISH is not set
4435 -
4436 -#
4437 -# Compression
4438 -#
4439 -# CONFIG_CRYPTO_DEFLATE is not set
4440 -# CONFIG_CRYPTO_LZO is not set
4441 -
4442 -#
4443 -# Random Number Generation
4444 -#
4445 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
4446 -CONFIG_CRYPTO_HW=y
4447 +# CONFIG_CRYPTO is not set
4448
4449 #
4450 # Library routines
4451 @@ -1370,7 +1174,6 @@
4452 CONFIG_BITREVERSE=y
4453 CONFIG_CRC_CCITT=m
4454 # CONFIG_CRC16 is not set
4455 -# CONFIG_CRC_T10DIF is not set
4456 # CONFIG_CRC_ITU_T is not set
4457 CONFIG_CRC32=y
4458 # CONFIG_CRC7 is not set
4459 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/CM-BF548_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/CM-BF548_defconfig
4460 --- linux-2.6.29.owrt/arch/blackfin/configs/CM-BF548_defconfig 2009-05-10 22:04:41.000000000 +0200
4461 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/CM-BF548_defconfig 2009-05-10 23:48:28.000000000 +0200
4462 @@ -336,8 +336,8 @@
4463 CONFIG_BFIN_DCACHE=y
4464 # CONFIG_BFIN_DCACHE_BANKA is not set
4465 # CONFIG_BFIN_ICACHE_LOCK is not set
4466 -CONFIG_BFIN_WB=y
4467 -# CONFIG_BFIN_WT is not set
4468 +# CONFIG_BFIN_WB is not set
4469 +CONFIG_BFIN_WT=y
4470 CONFIG_L1_MAX_PIECE=16
4471 # CONFIG_MPU is not set
4472
4473 @@ -595,7 +595,7 @@
4474 CONFIG_SCSI_DMA=y
4475 # CONFIG_SCSI_TGT is not set
4476 # CONFIG_SCSI_NETLINK is not set
4477 -# CONFIG_SCSI_PROC_FS is not set
4478 +CONFIG_SCSI_PROC_FS=y
4479
4480 #
4481 # SCSI support type (disk, tape, CD-ROM)
4482 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/IP0X_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/IP0X_defconfig
4483 --- linux-2.6.29.owrt/arch/blackfin/configs/IP0X_defconfig 2009-05-10 22:04:41.000000000 +0200
4484 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/IP0X_defconfig 2009-05-10 23:48:28.000000000 +0200
4485 @@ -612,7 +612,7 @@
4486 CONFIG_SCSI=y
4487 # CONFIG_SCSI_TGT is not set
4488 # CONFIG_SCSI_NETLINK is not set
4489 -# CONFIG_SCSI_PROC_FS is not set
4490 +CONFIG_SCSI_PROC_FS=y
4491
4492 #
4493 # SCSI support type (disk, tape, CD-ROM)
4494 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/configs/SRV1_defconfig linux-2.6.29-rc3.owrt/arch/blackfin/configs/SRV1_defconfig
4495 --- linux-2.6.29.owrt/arch/blackfin/configs/SRV1_defconfig 2009-05-10 22:04:41.000000000 +0200
4496 +++ linux-2.6.29-rc3.owrt/arch/blackfin/configs/SRV1_defconfig 2009-05-10 23:48:28.000000000 +0200
4497 @@ -282,8 +282,8 @@
4498 CONFIG_BFIN_DCACHE=y
4499 # CONFIG_BFIN_DCACHE_BANKA is not set
4500 # CONFIG_BFIN_ICACHE_LOCK is not set
4501 -CONFIG_BFIN_WB=y
4502 -# CONFIG_BFIN_WT is not set
4503 +# CONFIG_BFIN_WB is not set
4504 +CONFIG_BFIN_WT=y
4505 CONFIG_L1_MAX_PIECE=16
4506
4507 #
4508 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h
4509 --- linux-2.6.29.owrt/arch/blackfin/include/asm/bfin_sport.h 2009-05-10 22:04:40.000000000 +0200
4510 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/bfin_sport.h 2009-05-10 23:48:28.000000000 +0200
4511 @@ -1,9 +1,30 @@
4512 /*
4513 - * bfin_sport.h - userspace header for bfin sport driver
4514 + * File: include/asm-blackfin/bfin_sport.h
4515 + * Based on:
4516 + * Author: Roy Huang (roy.huang@analog.com)
4517 *
4518 - * Copyright 2004-2008 Analog Devices Inc.
4519 + * Created: Thu Aug. 24 2006
4520 + * Description:
4521 *
4522 - * Licensed under the GPL-2 or later.
4523 + * Modified:
4524 + * Copyright 2004-2006 Analog Devices Inc.
4525 + *
4526 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
4527 + *
4528 + * This program is free software; you can redistribute it and/or modify
4529 + * it under the terms of the GNU General Public License as published by
4530 + * the Free Software Foundation; either version 2 of the License, or
4531 + * (at your option) any later version.
4532 + *
4533 + * This program is distributed in the hope that it will be useful,
4534 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
4535 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4536 + * GNU General Public License for more details.
4537 + *
4538 + * You should have received a copy of the GNU General Public License
4539 + * along with this program; if not, see the file COPYING, or write
4540 + * to the Free Software Foundation, Inc.,
4541 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4542 */
4543
4544 #ifndef __BFIN_SPORT_H__
4545 @@ -21,10 +42,11 @@
4546 #define NORM_FORMAT 0x0
4547 #define ALAW_FORMAT 0x2
4548 #define ULAW_FORMAT 0x3
4549 +struct sport_register;
4550
4551 /* Function driver which use sport must initialize the structure */
4552 struct sport_config {
4553 - /* TDM (multichannels), I2S or other mode */
4554 + /*TDM (multichannels), I2S or other mode */
4555 unsigned int mode:3;
4556
4557 /* if TDM mode is selected, channels must be set */
4558 @@ -50,18 +72,12 @@
4559 int serial_clk;
4560 int fsync_clk;
4561
4562 - unsigned int data_format:2; /* Normal, u-law or a-law */
4563 + unsigned int data_format:2; /*Normal, u-law or a-law */
4564
4565 int word_len; /* How length of the word in bits, 3-32 bits */
4566 int dma_enabled;
4567 };
4568
4569 -/* Userspace interface */
4570 -#define SPORT_IOC_MAGIC 'P'
4571 -#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
4572 -
4573 -#ifdef __KERNEL__
4574 -
4575 struct sport_register {
4576 unsigned short tcr1;
4577 unsigned short reserved0;
4578 @@ -101,6 +117,9 @@
4579 unsigned long mrcs3;
4580 };
4581
4582 +#define SPORT_IOC_MAGIC 'P'
4583 +#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
4584 +
4585 struct sport_dev {
4586 struct cdev cdev; /* Char device structure */
4587
4588 @@ -130,8 +149,6 @@
4589 struct sport_config config;
4590 };
4591
4592 -#endif
4593 -
4594 #define SPORT_TCR1 0
4595 #define SPORT_TCR2 1
4596 #define SPORT_TCLKDIV 2
4597 @@ -152,4 +169,4 @@
4598 #define SPORT_MRCS2 22
4599 #define SPORT_MRCS3 23
4600
4601 -#endif
4602 +#endif /*__BFIN_SPORT_H__*/
4603 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h
4604 --- linux-2.6.29.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 22:04:40.000000000 +0200
4605 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/checksum.h 2009-05-10 23:48:28.000000000 +0200
4606 @@ -63,23 +63,23 @@
4607 csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len,
4608 unsigned short proto, __wsum sum)
4609 {
4610 - unsigned int carry;
4611
4612 - __asm__ ("%0 = %0 + %2;\n\t"
4613 - "CC = AC0;\n\t"
4614 - "%1 = CC;\n\t"
4615 - "%0 = %0 + %1;\n\t"
4616 - "%0 = %0 + %3;\n\t"
4617 - "CC = AC0;\n\t"
4618 - "%1 = CC;\n\t"
4619 - "%0 = %0 + %1;\n\t"
4620 - "%0 = %0 + %4;\n\t"
4621 - "CC = AC0;\n\t"
4622 - "%1 = CC;\n\t"
4623 - "%0 = %0 + %1;\n\t"
4624 - : "=d" (sum), "=&d" (carry)
4625 - : "d" (daddr), "d" (saddr), "d" ((len + proto) << 8), "0"(sum)
4626 - : "CC");
4627 + __asm__ ("%0 = %0 + %1;\n\t"
4628 + "CC = AC0;\n\t"
4629 + "if !CC jump 4;\n\t"
4630 + "%0 = %0 + %4;\n\t"
4631 + "%0 = %0 + %2;\n\t"
4632 + "CC = AC0;\n\t"
4633 + "if !CC jump 4;\n\t"
4634 + "%0 = %0 + %4;\n\t"
4635 + "%0 = %0 + %3;\n\t"
4636 + "CC = AC0;\n\t"
4637 + "if !CC jump 4;\n\t"
4638 + "%0 = %0 + %4;\n\t"
4639 + "NOP;\n\t"
4640 + : "=d" (sum)
4641 + : "d" (daddr), "d" (saddr), "d" ((ntohs(len)<<16)+proto*256), "d" (1), "0"(sum)
4642 + : "CC");
4643
4644 return (sum);
4645 }
4646 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h
4647 --- linux-2.6.29.owrt/arch/blackfin/include/asm/delay.h 2009-05-10 22:04:40.000000000 +0200
4648 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/delay.h 2009-05-10 23:48:28.000000000 +0200
4649 @@ -13,7 +13,29 @@
4650
4651 static inline void __delay(unsigned long loops)
4652 {
4653 -__asm__ __volatile__ (
4654 + if (ANOMALY_05000312) {
4655 + /* Interrupted loads to loop registers -> bad */
4656 + unsigned long tmp;
4657 + __asm__ __volatile__(
4658 + "[--SP] = LC0;"
4659 + "[--SP] = LT0;"
4660 + "[--SP] = LB0;"
4661 + "LSETUP (1f,1f) LC0 = %1;"
4662 + "1: NOP;"
4663 + /* We take advantage of the fact that LC0 is 0 at
4664 + * the end of the loop. Otherwise we'd need some
4665 + * NOPs after the CLI here.
4666 + */
4667 + "CLI %0;"
4668 + "LB0 = [SP++];"
4669 + "LT0 = [SP++];"
4670 + "LC0 = [SP++];"
4671 + "STI %0;"
4672 + : "=d" (tmp)
4673 + : "a" (loops)
4674 + );
4675 + } else
4676 + __asm__ __volatile__ (
4677 "LSETUP(1f, 1f) LC0 = %0;"
4678 "1: NOP;"
4679 :
4680 @@ -25,15 +47,16 @@
4681 #include <linux/param.h> /* needed for HZ */
4682
4683 /*
4684 - * close approximation borrowed from m68knommu to avoid 64-bit math
4685 + * Use only for very small delays ( < 1 msec). Should probably use a
4686 + * lookup table, really, as the multiplications take much too long with
4687 + * short delays. This is a "reasonable" implementation, though (and the
4688 + * first constant multiplications gets optimized away if the delay is
4689 + * a constant)
4690 */
4691 -
4692 -#define HZSCALE (268435456 / (1000000/HZ))
4693 -
4694 static inline void udelay(unsigned long usecs)
4695 {
4696 extern unsigned long loops_per_jiffy;
4697 - __delay((((usecs * HZSCALE) >> 11) * (loops_per_jiffy >> 11)) >> 6);
4698 + __delay(usecs * loops_per_jiffy / (1000000 / HZ));
4699 }
4700
4701 #endif
4702 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h
4703 --- linux-2.6.29.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 22:04:40.000000000 +0200
4704 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/gpio.h 2009-05-10 23:48:28.000000000 +0200
4705 @@ -27,6 +27,60 @@
4706 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4707 */
4708
4709 +/*
4710 +* Number BF537/6/4 BF561 BF533/2/1
4711 +* BF527/5/2
4712 +*
4713 +* GPIO_0 PF0 PF0 PF0
4714 +* GPIO_1 PF1 PF1 PF1
4715 +* GPIO_2 PF2 PF2 PF2
4716 +* GPIO_3 PF3 PF3 PF3
4717 +* GPIO_4 PF4 PF4 PF4
4718 +* GPIO_5 PF5 PF5 PF5
4719 +* GPIO_6 PF6 PF6 PF6
4720 +* GPIO_7 PF7 PF7 PF7
4721 +* GPIO_8 PF8 PF8 PF8
4722 +* GPIO_9 PF9 PF9 PF9
4723 +* GPIO_10 PF10 PF10 PF10
4724 +* GPIO_11 PF11 PF11 PF11
4725 +* GPIO_12 PF12 PF12 PF12
4726 +* GPIO_13 PF13 PF13 PF13
4727 +* GPIO_14 PF14 PF14 PF14
4728 +* GPIO_15 PF15 PF15 PF15
4729 +* GPIO_16 PG0 PF16
4730 +* GPIO_17 PG1 PF17
4731 +* GPIO_18 PG2 PF18
4732 +* GPIO_19 PG3 PF19
4733 +* GPIO_20 PG4 PF20
4734 +* GPIO_21 PG5 PF21
4735 +* GPIO_22 PG6 PF22
4736 +* GPIO_23 PG7 PF23
4737 +* GPIO_24 PG8 PF24
4738 +* GPIO_25 PG9 PF25
4739 +* GPIO_26 PG10 PF26
4740 +* GPIO_27 PG11 PF27
4741 +* GPIO_28 PG12 PF28
4742 +* GPIO_29 PG13 PF29
4743 +* GPIO_30 PG14 PF30
4744 +* GPIO_31 PG15 PF31
4745 +* GPIO_32 PH0 PF32
4746 +* GPIO_33 PH1 PF33
4747 +* GPIO_34 PH2 PF34
4748 +* GPIO_35 PH3 PF35
4749 +* GPIO_36 PH4 PF36
4750 +* GPIO_37 PH5 PF37
4751 +* GPIO_38 PH6 PF38
4752 +* GPIO_39 PH7 PF39
4753 +* GPIO_40 PH8 PF40
4754 +* GPIO_41 PH9 PF41
4755 +* GPIO_42 PH10 PF42
4756 +* GPIO_43 PH11 PF43
4757 +* GPIO_44 PH12 PF44
4758 +* GPIO_45 PH13 PF45
4759 +* GPIO_46 PH14 PF46
4760 +* GPIO_47 PH15 PF47
4761 +*/
4762 +
4763 #ifndef __ARCH_BLACKFIN_GPIO_H__
4764 #define __ARCH_BLACKFIN_GPIO_H__
4765
4766 @@ -241,6 +295,10 @@
4767 int bfin_gpio_get_value(unsigned gpio);
4768 void bfin_gpio_set_value(unsigned gpio, int value);
4769
4770 +#ifndef BF548_FAMILY
4771 +#define bfin_gpio_set_value(gpio, value) set_gpio_data(gpio, value)
4772 +#endif
4773 +
4774 #ifdef CONFIG_GPIOLIB
4775 #include <asm-generic/gpio.h> /* cansleep wrappers */
4776
4777 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h
4778 --- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe_base.h 2009-05-10 22:04:40.000000000 +0200
4779 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe_base.h 2009-05-10 23:48:28.000000000 +0200
4780 @@ -1,5 +1,5 @@
4781 /* -*- linux-c -*-
4782 - * include/asm-blackfin/ipipe_base.h
4783 + * include/asm-blackfin/_baseipipe.h
4784 *
4785 * Copyright (C) 2007 Philippe Gerum.
4786 *
4787 @@ -27,9 +27,8 @@
4788 #define IPIPE_NR_XIRQS NR_IRQS
4789 #define IPIPE_IRQ_ISHIFT 5 /* 2^5 for 32bits arch. */
4790
4791 -/* Blackfin-specific, per-cpu pipeline status */
4792 -#define IPIPE_SYNCDEFER_FLAG 15
4793 -#define IPIPE_SYNCDEFER_MASK (1L << IPIPE_SYNCDEFER_MASK)
4794 +/* Blackfin-specific, global domain flags */
4795 +#define IPIPE_ROOTLOCK_FLAG 1 /* Lock pipeline for root */
4796
4797 /* Blackfin traps -- i.e. exception vector numbers */
4798 #define IPIPE_NR_FAULTS 52 /* We leave a gap after VEC_ILL_RES. */
4799 @@ -49,6 +48,11 @@
4800
4801 #ifndef __ASSEMBLY__
4802
4803 +#include <linux/bitops.h>
4804 +
4805 +extern int test_bit(int nr, const void *addr);
4806 +
4807 +
4808 extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
4809
4810 static inline void __ipipe_stall_root(void)
4811 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h
4812 --- linux-2.6.29.owrt/arch/blackfin/include/asm/ipipe.h 2009-05-10 22:04:40.000000000 +0200
4813 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/ipipe.h 2009-05-10 23:48:28.000000000 +0200
4814 @@ -35,9 +35,9 @@
4815 #include <asm/atomic.h>
4816 #include <asm/traps.h>
4817
4818 -#define IPIPE_ARCH_STRING "1.9-00"
4819 +#define IPIPE_ARCH_STRING "1.8-00"
4820 #define IPIPE_MAJOR_NUMBER 1
4821 -#define IPIPE_MINOR_NUMBER 9
4822 +#define IPIPE_MINOR_NUMBER 8
4823 #define IPIPE_PATCH_NUMBER 0
4824
4825 #ifdef CONFIG_SMP
4826 @@ -83,9 +83,9 @@
4827 "%2 = CYCLES2\n" \
4828 "CC = %2 == %0\n" \
4829 "if ! CC jump 1b\n" \
4830 - : "=d,a" (((unsigned long *)&t)[1]), \
4831 - "=d,a" (((unsigned long *)&t)[0]), \
4832 - "=d,a" (__cy2) \
4833 + : "=r" (((unsigned long *)&t)[1]), \
4834 + "=r" (((unsigned long *)&t)[0]), \
4835 + "=r" (__cy2) \
4836 : /*no input*/ : "CC"); \
4837 t; \
4838 })
4839 @@ -118,40 +118,35 @@
4840
4841 #define __ipipe_disable_irq(irq) (irq_desc[irq].chip->mask(irq))
4842
4843 -static inline int __ipipe_check_tickdev(const char *devname)
4844 -{
4845 - return 1;
4846 -}
4847 +#define __ipipe_lock_root() \
4848 + set_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
4849
4850 -static inline void __ipipe_lock_root(void)
4851 -{
4852 - set_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
4853 -}
4854 -
4855 -static inline void __ipipe_unlock_root(void)
4856 -{
4857 - clear_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
4858 -}
4859 +#define __ipipe_unlock_root() \
4860 + clear_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
4861
4862 void __ipipe_enable_pipeline(void);
4863
4864 #define __ipipe_hook_critical_ipi(ipd) do { } while (0)
4865
4866 -#define __ipipe_sync_pipeline ___ipipe_sync_pipeline
4867 -void ___ipipe_sync_pipeline(unsigned long syncmask);
4868 +#define __ipipe_sync_pipeline(syncmask) \
4869 + do { \
4870 + struct ipipe_domain *ipd = ipipe_current_domain; \
4871 + if (likely(ipd != ipipe_root_domain || !test_bit(IPIPE_ROOTLOCK_FLAG, &ipd->flags))) \
4872 + __ipipe_sync_stage(syncmask); \
4873 + } while (0)
4874
4875 void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs);
4876
4877 int __ipipe_get_irq_priority(unsigned irq);
4878
4879 +int __ipipe_get_irqthread_priority(unsigned irq);
4880 +
4881 void __ipipe_stall_root_raw(void);
4882
4883 void __ipipe_unstall_root_raw(void);
4884
4885 void __ipipe_serial_debug(const char *fmt, ...);
4886
4887 -asmlinkage void __ipipe_call_irqtail(unsigned long addr);
4888 -
4889 DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
4890
4891 extern unsigned long __ipipe_core_clock;
4892 @@ -167,25 +162,42 @@
4893
4894 #define __ipipe_run_irqtail() /* Must be a macro */ \
4895 do { \
4896 + asmlinkage void __ipipe_call_irqtail(void); \
4897 unsigned long __pending; \
4898 - CSYNC(); \
4899 + CSYNC(); \
4900 __pending = bfin_read_IPEND(); \
4901 if (__pending & 0x8000) { \
4902 __pending &= ~0x8010; \
4903 if (__pending && (__pending & (__pending - 1)) == 0) \
4904 - __ipipe_call_irqtail(__ipipe_irq_tail_hook); \
4905 + __ipipe_call_irqtail(); \
4906 } \
4907 } while (0)
4908
4909 #define __ipipe_run_isr(ipd, irq) \
4910 do { \
4911 if (ipd == ipipe_root_domain) { \
4912 - local_irq_enable_hw(); \
4913 - if (ipipe_virtual_irq_p(irq)) \
4914 + /* \
4915 + * Note: the I-pipe implements a threaded interrupt model on \
4916 + * this arch for Linux external IRQs. The interrupt handler we \
4917 + * call here only wakes up the associated IRQ thread. \
4918 + */ \
4919 + if (ipipe_virtual_irq_p(irq)) { \
4920 + /* No irqtail here; virtual interrupts have no effect \
4921 + on IPEND so there is no need for processing \
4922 + deferral. */ \
4923 + local_irq_enable_nohead(ipd); \
4924 ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie); \
4925 - else \
4926 + local_irq_disable_nohead(ipd); \
4927 + } else \
4928 + /* \
4929 + * No need to run the irqtail here either; \
4930 + * we can't be preempted by hw IRQs, so \
4931 + * non-Linux IRQs cannot stack over the short \
4932 + * thread wakeup code. Which in turn means \
4933 + * that no irqtail condition could be pending \
4934 + * for domains above Linux in the pipeline. \
4935 + */ \
4936 ipd->irqs[irq].handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs)); \
4937 - local_irq_disable_hw(); \
4938 } else { \
4939 __clear_bit(IPIPE_SYNC_FLAG, &ipipe_cpudom_var(ipd, status)); \
4940 local_irq_enable_nohead(ipd); \
4941 @@ -205,24 +217,42 @@
4942
4943 int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
4944
4945 -#ifdef CONFIG_GENERIC_CLOCKEVENTS
4946 -#define IRQ_SYSTMR IRQ_CORETMR
4947 -#define IRQ_PRIOTMR IRQ_CORETMR
4948 -#else
4949 +#define IS_SYSIRQ(irq) ((irq) > IRQ_CORETMR && (irq) <= SYS_IRQS)
4950 +#define IS_GPIOIRQ(irq) ((irq) >= GPIO_IRQ_BASE && (irq) < NR_IRQS)
4951 +
4952 #define IRQ_SYSTMR IRQ_TIMER0
4953 #define IRQ_PRIOTMR CONFIG_IRQ_TIMER0
4954 -#endif
4955
4956 -#ifdef CONFIG_BF561
4957 +#if defined(CONFIG_BF531) || defined(CONFIG_BF532) || defined(CONFIG_BF533)
4958 +#define PRIO_GPIODEMUX(irq) CONFIG_PFA
4959 +#elif defined(CONFIG_BF534) || defined(CONFIG_BF536) || defined(CONFIG_BF537)
4960 +#define PRIO_GPIODEMUX(irq) CONFIG_IRQ_PROG_INTA
4961 +#elif defined(CONFIG_BF52x)
4962 +#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PORTF_INTA ? CONFIG_IRQ_PORTF_INTA : \
4963 + (irq) == IRQ_PORTG_INTA ? CONFIG_IRQ_PORTG_INTA : \
4964 + (irq) == IRQ_PORTH_INTA ? CONFIG_IRQ_PORTH_INTA : \
4965 + -1)
4966 +#elif defined(CONFIG_BF561)
4967 +#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PROG0_INTA ? CONFIG_IRQ_PROG0_INTA : \
4968 + (irq) == IRQ_PROG1_INTA ? CONFIG_IRQ_PROG1_INTA : \
4969 + (irq) == IRQ_PROG2_INTA ? CONFIG_IRQ_PROG2_INTA : \
4970 + -1)
4971 #define bfin_write_TIMER_DISABLE(val) bfin_write_TMRS8_DISABLE(val)
4972 #define bfin_write_TIMER_ENABLE(val) bfin_write_TMRS8_ENABLE(val)
4973 #define bfin_write_TIMER_STATUS(val) bfin_write_TMRS8_STATUS(val)
4974 #define bfin_read_TIMER_STATUS() bfin_read_TMRS8_STATUS()
4975 #elif defined(CONFIG_BF54x)
4976 +#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PINT0 ? CONFIG_IRQ_PINT0 : \
4977 + (irq) == IRQ_PINT1 ? CONFIG_IRQ_PINT1 : \
4978 + (irq) == IRQ_PINT2 ? CONFIG_IRQ_PINT2 : \
4979 + (irq) == IRQ_PINT3 ? CONFIG_IRQ_PINT3 : \
4980 + -1)
4981 #define bfin_write_TIMER_DISABLE(val) bfin_write_TIMER_DISABLE0(val)
4982 #define bfin_write_TIMER_ENABLE(val) bfin_write_TIMER_ENABLE0(val)
4983 #define bfin_write_TIMER_STATUS(val) bfin_write_TIMER_STATUS0(val)
4984 #define bfin_read_TIMER_STATUS(val) bfin_read_TIMER_STATUS0(val)
4985 +#else
4986 +# error "no PRIO_GPIODEMUX() for this part"
4987 #endif
4988
4989 #define __ipipe_root_tick_p(regs) ((regs->ipend & 0x10) != 0)
4990 @@ -245,6 +275,4 @@
4991
4992 #endif /* !CONFIG_IPIPE */
4993
4994 -#define ipipe_update_tick_evtdev(evtdev) do { } while (0)
4995 -
4996 #endif /* !__ASM_BLACKFIN_IPIPE_H */
4997 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h
4998 --- linux-2.6.29.owrt/arch/blackfin/include/asm/irq.h 2009-05-10 22:04:40.000000000 +0200
4999 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/irq.h 2009-05-10 23:48:28.000000000 +0200
5000 @@ -61,38 +61,20 @@
5001 #define raw_irqs_disabled_flags(flags) (!irqs_enabled_from_flags_hw(flags))
5002 #define local_test_iflag_hw(x) irqs_enabled_from_flags_hw(x)
5003
5004 -#define local_save_flags(x) \
5005 - do { \
5006 - (x) = __ipipe_test_root() ? \
5007 - __all_masked_irq_flags : bfin_irq_flags; \
5008 - barrier(); \
5009 - } while (0)
5010 -
5011 -#define local_irq_save(x) \
5012 - do { \
5013 - (x) = __ipipe_test_and_stall_root() ? \
5014 +#define local_save_flags(x) \
5015 + do { \
5016 + (x) = __ipipe_test_root() ? \
5017 __all_masked_irq_flags : bfin_irq_flags; \
5018 - barrier(); \
5019 } while (0)
5020
5021 -static inline void local_irq_restore(unsigned long x)
5022 -{
5023 - barrier();
5024 - __ipipe_restore_root(x == __all_masked_irq_flags);
5025 -}
5026 -
5027 -#define local_irq_disable() \
5028 - do { \
5029 - __ipipe_stall_root(); \
5030 - barrier(); \
5031 +#define local_irq_save(x) \
5032 + do { \
5033 + (x) = __ipipe_test_and_stall_root(); \
5034 } while (0)
5035
5036 -static inline void local_irq_enable(void)
5037 -{
5038 - barrier();
5039 - __ipipe_unstall_root();
5040 -}
5041 -
5042 +#define local_irq_restore(x) __ipipe_restore_root(x)
5043 +#define local_irq_disable() __ipipe_stall_root()
5044 +#define local_irq_enable() __ipipe_unstall_root()
5045 #define irqs_disabled() __ipipe_test_root()
5046
5047 #define local_save_flags_hw(x) \
5048 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild
5049 --- linux-2.6.29.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 22:04:40.000000000 +0200
5050 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/Kbuild 2009-05-10 23:48:28.000000000 +0200
5051 @@ -1,4 +1,3 @@
5052 include include/asm-generic/Kbuild.asm
5053
5054 -unifdef-y += bfin_sport.h
5055 unifdef-y += fixed_code.h
5056 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h
5057 --- linux-2.6.29.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 22:04:40.000000000 +0200
5058 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/kgdb.h 2009-05-10 23:48:28.000000000 +0200
5059 @@ -1,8 +1,32 @@
5060 -/* Blackfin KGDB header
5061 +/*
5062 + * File: include/asm-blackfin/kgdb.h
5063 + * Based on:
5064 + * Author: Sonic Zhang
5065 + *
5066 + * Created:
5067 + * Description:
5068 + *
5069 + * Rev: $Id: kgdb_bfin_linux-2.6.x.patch 4934 2007-02-13 09:32:11Z sonicz $
5070 + *
5071 + * Modified:
5072 + * Copyright 2005-2006 Analog Devices Inc.
5073 + *
5074 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
5075 *
5076 - * Copyright 2005-2009 Analog Devices Inc.
5077 + * This program is free software; you can redistribute it and/or modify
5078 + * it under the terms of the GNU General Public License as published by
5079 + * the Free Software Foundation; either version 2 of the License, or
5080 + * (at your option) any later version.
5081 *
5082 - * Licensed under the GPL-2 or later.
5083 + * This program is distributed in the hope that it will be useful,
5084 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
5085 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5086 + * GNU General Public License for more details.
5087 + *
5088 + * You should have received a copy of the GNU General Public License
5089 + * along with this program; if not, see the file COPYING, or write
5090 + * to the Free Software Foundation, Inc.,
5091 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
5092 */
5093
5094 #ifndef __ASM_BLACKFIN_KGDB_H__
5095 @@ -13,18 +37,17 @@
5096 /* gdb locks */
5097 #define KGDB_MAX_NO_CPUS 8
5098
5099 -/*
5100 - * BUFMAX defines the maximum number of characters in inbound/outbound buffers.
5101 - * At least NUMREGBYTES*2 are needed for register packets.
5102 - * Longer buffer is needed to list all threads.
5103 - */
5104 +/************************************************************************/
5105 +/* BUFMAX defines the maximum number of characters in inbound/outbound buffers*/
5106 +/* at least NUMREGBYTES*2 are needed for register packets */
5107 +/* Longer buffer is needed to list all threads */
5108 #define BUFMAX 2048
5109
5110 /*
5111 - * Note that this register image is different from
5112 - * the register image that Linux produces at interrupt time.
5113 - *
5114 - * Linux's register image is defined by struct pt_regs in ptrace.h.
5115 + * Note that this register image is different from
5116 + * the register image that Linux produces at interrupt time.
5117 + *
5118 + * Linux's register image is defined by struct pt_regs in ptrace.h.
5119 */
5120 enum regnames {
5121 /* Core Registers */
5122 @@ -81,14 +104,14 @@
5123 BFIN_RETX,
5124 BFIN_RETN,
5125 BFIN_RETE,
5126 -
5127 +
5128 /* Pseudo Registers */
5129 BFIN_PC,
5130 BFIN_CC,
5131 BFIN_EXTRA1, /* Address of .text section. */
5132 BFIN_EXTRA2, /* Address of .data section. */
5133 BFIN_EXTRA3, /* Address of .bss section. */
5134 - BFIN_FDPIC_EXEC,
5135 + BFIN_FDPIC_EXEC,
5136 BFIN_FDPIC_INTERP,
5137
5138 /* MMRs */
5139 @@ -103,7 +126,7 @@
5140
5141 static inline void arch_kgdb_breakpoint(void)
5142 {
5143 - asm("EXCPT 2;");
5144 + asm(" EXCPT 2;");
5145 }
5146 #define BREAK_INSTR_SIZE 2
5147 #define CACHE_FLUSH_IS_SAFE 1
5148 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h
5149 --- linux-2.6.29.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 22:04:40.000000000 +0200
5150 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/mem_init.h 2009-05-10 23:48:28.000000000 +0200
5151 @@ -115,7 +115,7 @@
5152 #define mem_SDRRC (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num)
5153
5154 /* Enable SCLK Out */
5155 -#define mem_SDGCTL (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
5156 +#define mem_SDGCTL (0x80000000 | SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
5157 #else
5158 #define mem_SDRRC CONFIG_MEM_SDRRC
5159 #define mem_SDGCTL CONFIG_MEM_SDGCTL
5160 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h
5161 --- linux-2.6.29.owrt/arch/blackfin/include/asm/pda.h 2009-05-10 22:04:40.000000000 +0200
5162 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/pda.h 2009-05-10 23:48:28.000000000 +0200
5163 @@ -59,7 +59,6 @@
5164 unsigned long icplb_fault_addr;
5165 unsigned long retx;
5166 unsigned long seqstat;
5167 - unsigned int __nmi_count; /* number of times NMI asserted on this CPU */
5168 };
5169
5170 extern struct blackfin_pda cpu_pda[];
5171 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h
5172 --- linux-2.6.29.owrt/arch/blackfin/include/asm/reboot.h 2009-05-10 22:04:40.000000000 +0200
5173 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/reboot.h 2009-05-10 23:48:28.000000000 +0200
5174 @@ -15,6 +15,6 @@
5175 extern void native_machine_power_off(void);
5176
5177 /* common reboot workarounds */
5178 -extern void bfin_reset_boot_spi_cs(unsigned short pin);
5179 +extern void bfin_gpio_reset_spi0_ssel1(void);
5180
5181 #endif
5182 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h
5183 --- linux-2.6.29.owrt/arch/blackfin/include/asm/thread_info.h 2009-05-10 22:04:40.000000000 +0200
5184 +++ linux-2.6.29-rc3.owrt/arch/blackfin/include/asm/thread_info.h 2009-05-10 23:48:28.000000000 +0200
5185 @@ -122,7 +122,6 @@
5186 #define TIF_MEMDIE 4
5187 #define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
5188 #define TIF_FREEZE 6 /* is freezing for suspend */
5189 -#define TIF_IRQ_SYNC 7 /* sync pipeline stage */
5190
5191 /* as above, but as bit values */
5192 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
5193 @@ -131,7 +130,6 @@
5194 #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
5195 #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
5196 #define _TIF_FREEZE (1<<TIF_FREEZE)
5197 -#define _TIF_IRQ_SYNC (1<<TIF_IRQ_SYNC)
5198
5199 #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
5200
5201 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig
5202 --- linux-2.6.29.owrt/arch/blackfin/Kconfig 2009-05-10 22:04:40.000000000 +0200
5203 +++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig 2009-05-10 23:48:28.000000000 +0200
5204 @@ -169,51 +169,26 @@
5205 help
5206 BF542 Processor Support.
5207
5208 -config BF542M
5209 - bool "BF542m"
5210 - help
5211 - BF542 Processor Support.
5212 -
5213 config BF544
5214 bool "BF544"
5215 help
5216 BF544 Processor Support.
5217
5218 -config BF544M
5219 - bool "BF544m"
5220 - help
5221 - BF544 Processor Support.
5222 -
5223 config BF547
5224 bool "BF547"
5225 help
5226 BF547 Processor Support.
5227
5228 -config BF547M
5229 - bool "BF547m"
5230 - help
5231 - BF547 Processor Support.
5232 -
5233 config BF548
5234 bool "BF548"
5235 help
5236 BF548 Processor Support.
5237
5238 -config BF548M
5239 - bool "BF548m"
5240 - help
5241 - BF548 Processor Support.
5242 -
5243 config BF549
5244 bool "BF549"
5245 help
5246 BF549 Processor Support.
5247
5248 -config BF549M
5249 - bool "BF549m"
5250 - help
5251 - BF549 Processor Support.
5252 -
5253 config BF561
5254 bool "BF561"
5255 help
5256 @@ -249,39 +224,39 @@
5257
5258 config BF_REV_MIN
5259 int
5260 - default 0 if (BF51x || BF52x || (BF54x && !BF54xM))
5261 + default 0 if (BF51x || BF52x || BF54x)
5262 default 2 if (BF537 || BF536 || BF534)
5263 - default 3 if (BF561 || BF533 || BF532 || BF531 || BF54xM)
5264 + default 3 if (BF561 ||BF533 || BF532 || BF531)
5265 default 4 if (BF538 || BF539)
5266
5267 config BF_REV_MAX
5268 int
5269 - default 2 if (BF51x || BF52x || (BF54x && !BF54xM))
5270 - default 3 if (BF537 || BF536 || BF534 || BF54xM)
5271 + default 2 if (BF51x || BF52x || BF54x)
5272 + default 3 if (BF537 || BF536 || BF534)
5273 default 5 if (BF561 || BF538 || BF539)
5274 default 6 if (BF533 || BF532 || BF531)
5275
5276 choice
5277 prompt "Silicon Rev"
5278 - default BF_REV_0_1 if (BF51x || BF52x || (BF54x && !BF54xM))
5279 + default BF_REV_0_1 if (BF51x || BF52x || BF54x)
5280 default BF_REV_0_2 if (BF534 || BF536 || BF537)
5281 - default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF54xM || BF561)
5282 + default BF_REV_0_3 if (BF531 || BF532 || BF533 || BF561)
5283
5284 config BF_REV_0_0
5285 bool "0.0"
5286 - depends on (BF51x || BF52x || (BF54x && !BF54xM))
5287 + depends on (BF51x || BF52x || BF54x)
5288
5289 config BF_REV_0_1
5290 bool "0.1"
5291 - depends on (BF52x || (BF54x && !BF54xM))
5292 + depends on (BF52x || BF54x)
5293
5294 config BF_REV_0_2
5295 bool "0.2"
5296 - depends on (BF52x || BF537 || BF536 || BF534 || (BF54x && !BF54xM))
5297 + depends on (BF52x || BF537 || BF536 || BF534 || BF54x)
5298
5299 config BF_REV_0_3
5300 bool "0.3"
5301 - depends on (BF54xM || BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
5302 + depends on (BF561 || BF537 || BF536 || BF534 || BF533 || BF532 || BF531)
5303
5304 config BF_REV_0_4
5305 bool "0.4"
5306 @@ -318,14 +293,9 @@
5307 depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
5308 default y
5309
5310 -config BF54xM
5311 - bool
5312 - depends on (BF542M || BF544M || BF547M || BF548M || BF549M)
5313 - default y
5314 -
5315 config BF54x
5316 bool
5317 - depends on (BF542 || BF544 || BF547 || BF548 || BF549 || BF54xM)
5318 + depends on (BF542 || BF544 || BF547 || BF548 || BF549)
5319 default y
5320
5321 config MEM_GENERIC_BOARD
5322 @@ -1129,7 +1099,6 @@
5323
5324 config PM_WAKEUP_BY_GPIO
5325 bool "Allow Wakeup from Standby by GPIO"
5326 - depends on PM && !BF54x
5327
5328 config PM_WAKEUP_GPIO_NUMBER
5329 int "GPIO number"
5330 @@ -1169,12 +1138,6 @@
5331 default n
5332 help
5333 Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
5334 - (all processors, except ADSP-BF549). This option sets
5335 - the general-purpose wake-up enable (GPWE) control bit to enable
5336 - wake-up upon detection of an active low signal on the /GPW (PH7) pin.
5337 - On ADSP-BF549 this option enables the the same functionality on the
5338 - /MRXON pin also PH7.
5339 -
5340 endmenu
5341
5342 menu "CPU Frequency scaling"
5343 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/Kconfig.debug linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug
5344 --- linux-2.6.29.owrt/arch/blackfin/Kconfig.debug 2009-05-10 22:04:41.000000000 +0200
5345 +++ linux-2.6.29-rc3.owrt/arch/blackfin/Kconfig.debug 2009-05-10 23:48:28.000000000 +0200
5346 @@ -21,6 +21,12 @@
5347 config HAVE_ARCH_KGDB
5348 def_bool y
5349
5350 +config KGDB_TESTCASE
5351 + tristate "KGDB: for test case in expect"
5352 + default n
5353 + help
5354 + This is a kgdb test case for automated testing.
5355 +
5356 config DEBUG_VERBOSE
5357 bool "Verbose fault messages"
5358 default y
5359 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c
5360 --- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_dma_5xx.c 2009-05-10 22:04:41.000000000 +0200
5361 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_dma_5xx.c 2009-05-10 23:48:28.000000000 +0200
5362 @@ -249,13 +249,6 @@
5363
5364 spin_lock_irqsave(&mdma_lock, flags);
5365
5366 - /* Force a sync in case a previous config reset on this channel
5367 - * occurred. This is needed so subsequent writes to DMA registers
5368 - * are not spuriously lost/corrupted. Do it under irq lock and
5369 - * without the anomaly version (because we are atomic already).
5370 - */
5371 - __builtin_bfin_ssync();
5372 -
5373 if (bfin_read_MDMA_S0_CONFIG())
5374 while (!(bfin_read_MDMA_D0_IRQ_STATUS() & DMA_DONE))
5375 continue;
5376 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c
5377 --- linux-2.6.29.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 22:04:41.000000000 +0200
5378 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/bfin_gpio.c 2009-05-10 23:48:28.000000000 +0200
5379 @@ -27,6 +27,59 @@
5380 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
5381 */
5382
5383 +/*
5384 +* Number BF537/6/4 BF561 BF533/2/1 BF549/8/4/2
5385 +*
5386 +* GPIO_0 PF0 PF0 PF0 PA0...PJ13
5387 +* GPIO_1 PF1 PF1 PF1
5388 +* GPIO_2 PF2 PF2 PF2
5389 +* GPIO_3 PF3 PF3 PF3
5390 +* GPIO_4 PF4 PF4 PF4
5391 +* GPIO_5 PF5 PF5 PF5
5392 +* GPIO_6 PF6 PF6 PF6
5393 +* GPIO_7 PF7 PF7 PF7
5394 +* GPIO_8 PF8 PF8 PF8
5395 +* GPIO_9 PF9 PF9 PF9
5396 +* GPIO_10 PF10 PF10 PF10
5397 +* GPIO_11 PF11 PF11 PF11
5398 +* GPIO_12 PF12 PF12 PF12
5399 +* GPIO_13 PF13 PF13 PF13
5400 +* GPIO_14 PF14 PF14 PF14
5401 +* GPIO_15 PF15 PF15 PF15
5402 +* GPIO_16 PG0 PF16
5403 +* GPIO_17 PG1 PF17
5404 +* GPIO_18 PG2 PF18
5405 +* GPIO_19 PG3 PF19
5406 +* GPIO_20 PG4 PF20
5407 +* GPIO_21 PG5 PF21
5408 +* GPIO_22 PG6 PF22
5409 +* GPIO_23 PG7 PF23
5410 +* GPIO_24 PG8 PF24
5411 +* GPIO_25 PG9 PF25
5412 +* GPIO_26 PG10 PF26
5413 +* GPIO_27 PG11 PF27
5414 +* GPIO_28 PG12 PF28
5415 +* GPIO_29 PG13 PF29
5416 +* GPIO_30 PG14 PF30
5417 +* GPIO_31 PG15 PF31
5418 +* GPIO_32 PH0 PF32
5419 +* GPIO_33 PH1 PF33
5420 +* GPIO_34 PH2 PF34
5421 +* GPIO_35 PH3 PF35
5422 +* GPIO_36 PH4 PF36
5423 +* GPIO_37 PH5 PF37
5424 +* GPIO_38 PH6 PF38
5425 +* GPIO_39 PH7 PF39
5426 +* GPIO_40 PH8 PF40
5427 +* GPIO_41 PH9 PF41
5428 +* GPIO_42 PH10 PF42
5429 +* GPIO_43 PH11 PF43
5430 +* GPIO_44 PH12 PF44
5431 +* GPIO_45 PH13 PF45
5432 +* GPIO_46 PH14 PF46
5433 +* GPIO_47 PH15 PF47
5434 +*/
5435 +
5436 #include <linux/delay.h>
5437 #include <linux/module.h>
5438 #include <linux/err.h>
5439 @@ -66,61 +119,62 @@
5440 #define AWA_DUMMY_READ(...) do { } while (0)
5441 #endif
5442
5443 -static struct gpio_port_t * const gpio_array[] = {
5444 #if defined(BF533_FAMILY) || defined(BF538_FAMILY)
5445 +static struct gpio_port_t *gpio_bankb[] = {
5446 (struct gpio_port_t *) FIO_FLAG_D,
5447 -#elif defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5448 +};
5449 +#endif
5450 +
5451 +#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5452 +static struct gpio_port_t *gpio_bankb[] = {
5453 (struct gpio_port_t *) PORTFIO,
5454 (struct gpio_port_t *) PORTGIO,
5455 (struct gpio_port_t *) PORTHIO,
5456 -#elif defined(BF561_FAMILY)
5457 - (struct gpio_port_t *) FIO0_FLAG_D,
5458 - (struct gpio_port_t *) FIO1_FLAG_D,
5459 - (struct gpio_port_t *) FIO2_FLAG_D,
5460 -#elif defined(BF548_FAMILY)
5461 - (struct gpio_port_t *)PORTA_FER,
5462 - (struct gpio_port_t *)PORTB_FER,
5463 - (struct gpio_port_t *)PORTC_FER,
5464 - (struct gpio_port_t *)PORTD_FER,
5465 - (struct gpio_port_t *)PORTE_FER,
5466 - (struct gpio_port_t *)PORTF_FER,
5467 - (struct gpio_port_t *)PORTG_FER,
5468 - (struct gpio_port_t *)PORTH_FER,
5469 - (struct gpio_port_t *)PORTI_FER,
5470 - (struct gpio_port_t *)PORTJ_FER,
5471 -#else
5472 -# error no gpio arrays defined
5473 -#endif
5474 };
5475
5476 -#if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5477 -static unsigned short * const port_fer[] = {
5478 +static unsigned short *port_fer[] = {
5479 (unsigned short *) PORTF_FER,
5480 (unsigned short *) PORTG_FER,
5481 (unsigned short *) PORTH_FER,
5482 };
5483 +#endif
5484
5485 -# if !defined(BF537_FAMILY)
5486 -static unsigned short * const port_mux[] = {
5487 +#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
5488 +static unsigned short *port_mux[] = {
5489 (unsigned short *) PORTF_MUX,
5490 (unsigned short *) PORTG_MUX,
5491 (unsigned short *) PORTH_MUX,
5492 };
5493
5494 static const
5495 -u8 pmux_offset[][16] = {
5496 -# if defined(BF527_FAMILY)
5497 - { 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
5498 - { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
5499 - { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
5500 -# elif defined(BF518_FAMILY)
5501 - { 0, 2, 2, 2, 2, 2, 2, 4, 6, 6, 6, 8, 8, 8, 8, 10 }, /* PORTF */
5502 - { 0, 0, 0, 2, 4, 6, 6, 6, 8, 10, 10, 12, 14, 14, 14, 14 }, /* PORTG */
5503 - { 0, 0, 0, 0, 2, 2, 4, 6, 10, 10, 10, 10, 10, 10, 10, 10 }, /* PORTH */
5504 -# endif
5505 +u8 pmux_offset[][16] =
5506 + {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
5507 + { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
5508 + { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
5509 + };
5510 +#endif
5511 +
5512 +#ifdef BF561_FAMILY
5513 +static struct gpio_port_t *gpio_bankb[] = {
5514 + (struct gpio_port_t *) FIO0_FLAG_D,
5515 + (struct gpio_port_t *) FIO1_FLAG_D,
5516 + (struct gpio_port_t *) FIO2_FLAG_D,
5517 };
5518 -# endif
5519 +#endif
5520
5521 +#ifdef BF548_FAMILY
5522 +static struct gpio_port_t *gpio_array[] = {
5523 + (struct gpio_port_t *)PORTA_FER,
5524 + (struct gpio_port_t *)PORTB_FER,
5525 + (struct gpio_port_t *)PORTC_FER,
5526 + (struct gpio_port_t *)PORTD_FER,
5527 + (struct gpio_port_t *)PORTE_FER,
5528 + (struct gpio_port_t *)PORTF_FER,
5529 + (struct gpio_port_t *)PORTG_FER,
5530 + (struct gpio_port_t *)PORTH_FER,
5531 + (struct gpio_port_t *)PORTI_FER,
5532 + (struct gpio_port_t *)PORTJ_FER,
5533 +};
5534 #endif
5535
5536 static unsigned short reserved_gpio_map[GPIO_BANK_NUM];
5537 @@ -134,9 +188,35 @@
5538 } str_ident[MAX_RESOURCES];
5539
5540 #if defined(CONFIG_PM)
5541 +#if defined(CONFIG_BF54x)
5542 +static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
5543 +#else
5544 +static unsigned short wakeup_map[GPIO_BANK_NUM];
5545 +static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
5546 static struct gpio_port_s gpio_bank_saved[GPIO_BANK_NUM];
5547 +
5548 +#ifdef BF533_FAMILY
5549 +static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB};
5550 +#endif
5551 +
5552 +#ifdef BF537_FAMILY
5553 +static unsigned int sic_iwr_irqs[] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX};
5554 +#endif
5555 +
5556 +#ifdef BF538_FAMILY
5557 +static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB};
5558 #endif
5559
5560 +#if defined(BF527_FAMILY) || defined(BF518_FAMILY)
5561 +static unsigned int sic_iwr_irqs[] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB};
5562 +#endif
5563 +
5564 +#ifdef BF561_FAMILY
5565 +static unsigned int sic_iwr_irqs[] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB};
5566 +#endif
5567 +#endif
5568 +#endif /* CONFIG_PM */
5569 +
5570 inline int check_gpio(unsigned gpio)
5571 {
5572 #if defined(BF548_FAMILY)
5573 @@ -250,10 +330,9 @@
5574 {.res = P_SPI0_SSEL3, .offset = 0},
5575 };
5576
5577 -static void portmux_setup(unsigned short per)
5578 +static void portmux_setup(unsigned short per, unsigned short function)
5579 {
5580 u16 y, offset, muxreg;
5581 - u16 function = P_FUNCT2MUX(per);
5582
5583 for (y = 0; y < ARRAY_SIZE(port_mux_lut); y++) {
5584 if (port_mux_lut[y].res == per) {
5585 @@ -274,33 +353,30 @@
5586 }
5587 }
5588 #elif defined(BF548_FAMILY)
5589 -inline void portmux_setup(unsigned short per)
5590 +inline void portmux_setup(unsigned short portno, unsigned short function)
5591 {
5592 u32 pmux;
5593 - u16 ident = P_IDENT(per);
5594 - u16 function = P_FUNCT2MUX(per);
5595
5596 - pmux = gpio_array[gpio_bank(ident)]->port_mux;
5597 + pmux = gpio_array[gpio_bank(portno)]->port_mux;
5598
5599 - pmux &= ~(0x3 << (2 * gpio_sub_n(ident)));
5600 - pmux |= (function & 0x3) << (2 * gpio_sub_n(ident));
5601 + pmux &= ~(0x3 << (2 * gpio_sub_n(portno)));
5602 + pmux |= (function & 0x3) << (2 * gpio_sub_n(portno));
5603
5604 - gpio_array[gpio_bank(ident)]->port_mux = pmux;
5605 + gpio_array[gpio_bank(portno)]->port_mux = pmux;
5606 }
5607
5608 -inline u16 get_portmux(unsigned short per)
5609 +inline u16 get_portmux(unsigned short portno)
5610 {
5611 u32 pmux;
5612 - u16 ident = P_IDENT(per);
5613
5614 - pmux = gpio_array[gpio_bank(ident)]->port_mux;
5615 + pmux = gpio_array[gpio_bank(portno)]->port_mux;
5616
5617 - return (pmux >> (2 * gpio_sub_n(ident)) & 0x3);
5618 + return (pmux >> (2 * gpio_sub_n(portno)) & 0x3);
5619 }
5620 #elif defined(BF527_FAMILY) || defined(BF518_FAMILY)
5621 -inline void portmux_setup(unsigned short per)
5622 +inline void portmux_setup(unsigned short portno, unsigned short function)
5623 {
5624 - u16 pmux, ident = P_IDENT(per), function = P_FUNCT2MUX(per);
5625 + u16 pmux, ident = P_IDENT(portno);
5626 u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)];
5627
5628 pmux = *port_mux[gpio_bank(ident)];
5629 @@ -348,71 +424,90 @@
5630 unsigned long flags; \
5631 local_irq_save_hw(flags); \
5632 if (arg) \
5633 - gpio_array[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
5634 + gpio_bankb[gpio_bank(gpio)]->name |= gpio_bit(gpio); \
5635 else \
5636 - gpio_array[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
5637 + gpio_bankb[gpio_bank(gpio)]->name &= ~gpio_bit(gpio); \
5638 AWA_DUMMY_READ(name); \
5639 local_irq_restore_hw(flags); \
5640 } \
5641 EXPORT_SYMBOL(set_gpio_ ## name);
5642
5643 -SET_GPIO(dir) /* set_gpio_dir() */
5644 -SET_GPIO(inen) /* set_gpio_inen() */
5645 -SET_GPIO(polar) /* set_gpio_polar() */
5646 -SET_GPIO(edge) /* set_gpio_edge() */
5647 -SET_GPIO(both) /* set_gpio_both() */
5648 +SET_GPIO(dir)
5649 +SET_GPIO(inen)
5650 +SET_GPIO(polar)
5651 +SET_GPIO(edge)
5652 +SET_GPIO(both)
5653
5654
5655 +#if ANOMALY_05000311 || ANOMALY_05000323
5656 #define SET_GPIO_SC(name) \
5657 void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
5658 { \
5659 unsigned long flags; \
5660 - if (ANOMALY_05000311 || ANOMALY_05000323) \
5661 - local_irq_save_hw(flags); \
5662 + local_irq_save_hw(flags); \
5663 if (arg) \
5664 - gpio_array[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
5665 + gpio_bankb[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
5666 else \
5667 - gpio_array[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
5668 - if (ANOMALY_05000311 || ANOMALY_05000323) { \
5669 - AWA_DUMMY_READ(name); \
5670 - local_irq_restore_hw(flags); \
5671 - } \
5672 + gpio_bankb[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
5673 + AWA_DUMMY_READ(name); \
5674 + local_irq_restore_hw(flags); \
5675 } \
5676 EXPORT_SYMBOL(set_gpio_ ## name);
5677 +#else
5678 +#define SET_GPIO_SC(name) \
5679 +void set_gpio_ ## name(unsigned gpio, unsigned short arg) \
5680 +{ \
5681 + if (arg) \
5682 + gpio_bankb[gpio_bank(gpio)]->name ## _set = gpio_bit(gpio); \
5683 + else \
5684 + gpio_bankb[gpio_bank(gpio)]->name ## _clear = gpio_bit(gpio); \
5685 +} \
5686 +EXPORT_SYMBOL(set_gpio_ ## name);
5687 +#endif
5688
5689 SET_GPIO_SC(maska)
5690 SET_GPIO_SC(maskb)
5691 SET_GPIO_SC(data)
5692
5693 +#if ANOMALY_05000311 || ANOMALY_05000323
5694 void set_gpio_toggle(unsigned gpio)
5695 {
5696 unsigned long flags;
5697 - if (ANOMALY_05000311 || ANOMALY_05000323)
5698 - local_irq_save_hw(flags);
5699 - gpio_array[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
5700 - if (ANOMALY_05000311 || ANOMALY_05000323) {
5701 - AWA_DUMMY_READ(toggle);
5702 - local_irq_restore_hw(flags);
5703 - }
5704 + local_irq_save_hw(flags);
5705 + gpio_bankb[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
5706 + AWA_DUMMY_READ(toggle);
5707 + local_irq_restore_hw(flags);
5708 +}
5709 +#else
5710 +void set_gpio_toggle(unsigned gpio)
5711 +{
5712 + gpio_bankb[gpio_bank(gpio)]->toggle = gpio_bit(gpio);
5713 }
5714 +#endif
5715 EXPORT_SYMBOL(set_gpio_toggle);
5716
5717
5718 /*Set current PORT date (16-bit word)*/
5719
5720 +#if ANOMALY_05000311 || ANOMALY_05000323
5721 #define SET_GPIO_P(name) \
5722 void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
5723 { \
5724 unsigned long flags; \
5725 - if (ANOMALY_05000311 || ANOMALY_05000323) \
5726 - local_irq_save_hw(flags); \
5727 - gpio_array[gpio_bank(gpio)]->name = arg; \
5728 - if (ANOMALY_05000311 || ANOMALY_05000323) { \
5729 - AWA_DUMMY_READ(name); \
5730 - local_irq_restore_hw(flags); \
5731 - } \
5732 + local_irq_save_hw(flags); \
5733 + gpio_bankb[gpio_bank(gpio)]->name = arg; \
5734 + AWA_DUMMY_READ(name); \
5735 + local_irq_restore_hw(flags); \
5736 +} \
5737 +EXPORT_SYMBOL(set_gpiop_ ## name);
5738 +#else
5739 +#define SET_GPIO_P(name) \
5740 +void set_gpiop_ ## name(unsigned gpio, unsigned short arg) \
5741 +{ \
5742 + gpio_bankb[gpio_bank(gpio)]->name = arg; \
5743 } \
5744 EXPORT_SYMBOL(set_gpiop_ ## name);
5745 +#endif
5746
5747 SET_GPIO_P(data)
5748 SET_GPIO_P(dir)
5749 @@ -424,21 +519,27 @@
5750 SET_GPIO_P(maskb)
5751
5752 /* Get a specific bit */
5753 +#if ANOMALY_05000311 || ANOMALY_05000323
5754 #define GET_GPIO(name) \
5755 unsigned short get_gpio_ ## name(unsigned gpio) \
5756 { \
5757 unsigned long flags; \
5758 unsigned short ret; \
5759 - if (ANOMALY_05000311 || ANOMALY_05000323) \
5760 - local_irq_save_hw(flags); \
5761 - ret = 0x01 & (gpio_array[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
5762 - if (ANOMALY_05000311 || ANOMALY_05000323) { \
5763 - AWA_DUMMY_READ(name); \
5764 - local_irq_restore_hw(flags); \
5765 - } \
5766 + local_irq_save_hw(flags); \
5767 + ret = 0x01 & (gpio_bankb[gpio_bank(gpio)]->name >> gpio_sub_n(gpio)); \
5768 + AWA_DUMMY_READ(name); \
5769 + local_irq_restore_hw(flags); \
5770 return ret; \
5771 } \
5772 EXPORT_SYMBOL(get_gpio_ ## name);
5773 +#else
5774 +#define GET_GPIO(name) \
5775 +unsigned short get_gpio_ ## name(unsigned gpio) \
5776 +{ \
5777 + return (0x01 & (gpio_bankb[gpio_bank(gpio)]->name >> gpio_sub_n(gpio))); \
5778 +} \
5779 +EXPORT_SYMBOL(get_gpio_ ## name);
5780 +#endif
5781
5782 GET_GPIO(data)
5783 GET_GPIO(dir)
5784 @@ -451,21 +552,27 @@
5785
5786 /*Get current PORT date (16-bit word)*/
5787
5788 +#if ANOMALY_05000311 || ANOMALY_05000323
5789 #define GET_GPIO_P(name) \
5790 unsigned short get_gpiop_ ## name(unsigned gpio) \
5791 { \
5792 unsigned long flags; \
5793 unsigned short ret; \
5794 - if (ANOMALY_05000311 || ANOMALY_05000323) \
5795 - local_irq_save_hw(flags); \
5796 - ret = (gpio_array[gpio_bank(gpio)]->name); \
5797 - if (ANOMALY_05000311 || ANOMALY_05000323) { \
5798 - AWA_DUMMY_READ(name); \
5799 - local_irq_restore_hw(flags); \
5800 - } \
5801 + local_irq_save_hw(flags); \
5802 + ret = (gpio_bankb[gpio_bank(gpio)]->name); \
5803 + AWA_DUMMY_READ(name); \
5804 + local_irq_restore_hw(flags); \
5805 return ret; \
5806 } \
5807 EXPORT_SYMBOL(get_gpiop_ ## name);
5808 +#else
5809 +#define GET_GPIO_P(name) \
5810 +unsigned short get_gpiop_ ## name(unsigned gpio) \
5811 +{ \
5812 + return (gpio_bankb[gpio_bank(gpio)]->name);\
5813 +} \
5814 +EXPORT_SYMBOL(get_gpiop_ ## name);
5815 +#endif
5816
5817 GET_GPIO_P(data)
5818 GET_GPIO_P(dir)
5819 @@ -478,26 +585,6 @@
5820
5821
5822 #ifdef CONFIG_PM
5823 -
5824 -static unsigned short wakeup_map[GPIO_BANK_NUM];
5825 -static unsigned char wakeup_flags_map[MAX_BLACKFIN_GPIOS];
5826 -
5827 -static const unsigned int sic_iwr_irqs[] = {
5828 -#if defined(BF533_FAMILY)
5829 - IRQ_PROG_INTB
5830 -#elif defined(BF537_FAMILY)
5831 - IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX
5832 -#elif defined(BF538_FAMILY)
5833 - IRQ_PORTF_INTB
5834 -#elif defined(BF527_FAMILY) || defined(BF518_FAMILY)
5835 - IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB
5836 -#elif defined(BF561_FAMILY)
5837 - IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB
5838 -#else
5839 -# error no SIC_IWR defined
5840 -#endif
5841 -};
5842 -
5843 /***********************************************************
5844 *
5845 * FUNCTIONS: Blackfin PM Setup API
5846 @@ -582,18 +669,18 @@
5847 mask = wakeup_map[gpio_bank(i)];
5848 bank = gpio_bank(i);
5849
5850 - gpio_bank_saved[bank].maskb = gpio_array[bank]->maskb;
5851 - gpio_array[bank]->maskb = 0;
5852 + gpio_bank_saved[bank].maskb = gpio_bankb[bank]->maskb;
5853 + gpio_bankb[bank]->maskb = 0;
5854
5855 if (mask) {
5856 #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5857 gpio_bank_saved[bank].fer = *port_fer[bank];
5858 #endif
5859 - gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
5860 - gpio_bank_saved[bank].polar = gpio_array[bank]->polar;
5861 - gpio_bank_saved[bank].dir = gpio_array[bank]->dir;
5862 - gpio_bank_saved[bank].edge = gpio_array[bank]->edge;
5863 - gpio_bank_saved[bank].both = gpio_array[bank]->both;
5864 + gpio_bank_saved[bank].inen = gpio_bankb[bank]->inen;
5865 + gpio_bank_saved[bank].polar = gpio_bankb[bank]->polar;
5866 + gpio_bank_saved[bank].dir = gpio_bankb[bank]->dir;
5867 + gpio_bank_saved[bank].edge = gpio_bankb[bank]->edge;
5868 + gpio_bank_saved[bank].both = gpio_bankb[bank]->both;
5869 gpio_bank_saved[bank].reserved =
5870 reserved_gpio_map[bank];
5871
5872 @@ -613,7 +700,7 @@
5873 }
5874
5875 bfin_internal_set_wake(sic_iwr_irqs[bank], 1);
5876 - gpio_array[bank]->maskb_set = wakeup_map[gpio_bank(i)];
5877 + gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)];
5878 }
5879 }
5880
5881 @@ -634,18 +721,18 @@
5882 #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5883 *port_fer[bank] = gpio_bank_saved[bank].fer;
5884 #endif
5885 - gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
5886 - gpio_array[bank]->dir = gpio_bank_saved[bank].dir;
5887 - gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
5888 - gpio_array[bank]->edge = gpio_bank_saved[bank].edge;
5889 - gpio_array[bank]->both = gpio_bank_saved[bank].both;
5890 + gpio_bankb[bank]->inen = gpio_bank_saved[bank].inen;
5891 + gpio_bankb[bank]->dir = gpio_bank_saved[bank].dir;
5892 + gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
5893 + gpio_bankb[bank]->edge = gpio_bank_saved[bank].edge;
5894 + gpio_bankb[bank]->both = gpio_bank_saved[bank].both;
5895
5896 reserved_gpio_map[bank] =
5897 gpio_bank_saved[bank].reserved;
5898 bfin_internal_set_wake(sic_iwr_irqs[bank], 0);
5899 }
5900
5901 - gpio_array[bank]->maskb = gpio_bank_saved[bank].maskb;
5902 + gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
5903 }
5904 AWA_DUMMY_READ(maskb);
5905 }
5906 @@ -658,21 +745,21 @@
5907 bank = gpio_bank(i);
5908
5909 #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5910 - gpio_bank_saved[bank].fer = *port_fer[bank];
5911 + gpio_bank_saved[bank].fer = *port_fer[bank];
5912 #if defined(BF527_FAMILY) || defined(BF518_FAMILY)
5913 - gpio_bank_saved[bank].mux = *port_mux[bank];
5914 + gpio_bank_saved[bank].mux = *port_mux[bank];
5915 #else
5916 - if (bank == 0)
5917 - gpio_bank_saved[bank].mux = bfin_read_PORT_MUX();
5918 + if (bank == 0)
5919 + gpio_bank_saved[bank].mux = bfin_read_PORT_MUX();
5920 #endif
5921 #endif
5922 - gpio_bank_saved[bank].data = gpio_array[bank]->data;
5923 - gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
5924 - gpio_bank_saved[bank].polar = gpio_array[bank]->polar;
5925 - gpio_bank_saved[bank].dir = gpio_array[bank]->dir;
5926 - gpio_bank_saved[bank].edge = gpio_array[bank]->edge;
5927 - gpio_bank_saved[bank].both = gpio_array[bank]->both;
5928 - gpio_bank_saved[bank].maska = gpio_array[bank]->maska;
5929 + gpio_bank_saved[bank].data = gpio_bankb[bank]->data;
5930 + gpio_bank_saved[bank].inen = gpio_bankb[bank]->inen;
5931 + gpio_bank_saved[bank].polar = gpio_bankb[bank]->polar;
5932 + gpio_bank_saved[bank].dir = gpio_bankb[bank]->dir;
5933 + gpio_bank_saved[bank].edge = gpio_bankb[bank]->edge;
5934 + gpio_bank_saved[bank].both = gpio_bankb[bank]->both;
5935 + gpio_bank_saved[bank].maska = gpio_bankb[bank]->maska;
5936 }
5937
5938 AWA_DUMMY_READ(maska);
5939 @@ -683,27 +770,27 @@
5940 int i, bank;
5941
5942 for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
5943 - bank = gpio_bank(i);
5944 + bank = gpio_bank(i);
5945
5946 #if defined(BF527_FAMILY) || defined(BF537_FAMILY) || defined(BF518_FAMILY)
5947 #if defined(BF527_FAMILY) || defined(BF518_FAMILY)
5948 - *port_mux[bank] = gpio_bank_saved[bank].mux;
5949 + *port_mux[bank] = gpio_bank_saved[bank].mux;
5950 #else
5951 - if (bank == 0)
5952 - bfin_write_PORT_MUX(gpio_bank_saved[bank].mux);
5953 + if (bank == 0)
5954 + bfin_write_PORT_MUX(gpio_bank_saved[bank].mux);
5955 #endif
5956 - *port_fer[bank] = gpio_bank_saved[bank].fer;
5957 + *port_fer[bank] = gpio_bank_saved[bank].fer;
5958 #endif
5959 - gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
5960 - gpio_array[bank]->dir = gpio_bank_saved[bank].dir;
5961 - gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
5962 - gpio_array[bank]->edge = gpio_bank_saved[bank].edge;
5963 - gpio_array[bank]->both = gpio_bank_saved[bank].both;
5964 + gpio_bankb[bank]->inen = gpio_bank_saved[bank].inen;
5965 + gpio_bankb[bank]->dir = gpio_bank_saved[bank].dir;
5966 + gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
5967 + gpio_bankb[bank]->edge = gpio_bank_saved[bank].edge;
5968 + gpio_bankb[bank]->both = gpio_bank_saved[bank].both;
5969
5970 - gpio_array[bank]->data_set = gpio_bank_saved[bank].data
5971 - | gpio_bank_saved[bank].dir;
5972 + gpio_bankb[bank]->data_set = gpio_bank_saved[bank].data
5973 + | gpio_bank_saved[bank].dir;
5974
5975 - gpio_array[bank]->maska = gpio_bank_saved[bank].maska;
5976 + gpio_bankb[bank]->maska = gpio_bank_saved[bank].maska;
5977 }
5978 AWA_DUMMY_READ(maska);
5979 }
5980 @@ -730,12 +817,12 @@
5981 for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
5982 bank = gpio_bank(i);
5983
5984 - gpio_bank_saved[bank].fer = gpio_array[bank]->port_fer;
5985 - gpio_bank_saved[bank].mux = gpio_array[bank]->port_mux;
5986 - gpio_bank_saved[bank].data = gpio_array[bank]->data;
5987 - gpio_bank_saved[bank].data = gpio_array[bank]->data;
5988 - gpio_bank_saved[bank].inen = gpio_array[bank]->inen;
5989 - gpio_bank_saved[bank].dir = gpio_array[bank]->dir_set;
5990 + gpio_bank_saved[bank].fer = gpio_array[bank]->port_fer;
5991 + gpio_bank_saved[bank].mux = gpio_array[bank]->port_mux;
5992 + gpio_bank_saved[bank].data = gpio_array[bank]->port_data;
5993 + gpio_bank_saved[bank].data = gpio_array[bank]->port_data;
5994 + gpio_bank_saved[bank].inen = gpio_array[bank]->port_inen;
5995 + gpio_bank_saved[bank].dir = gpio_array[bank]->port_dir_set;
5996 }
5997 }
5998
5999 @@ -744,21 +831,21 @@
6000 int i, bank;
6001
6002 for (i = 0; i < MAX_BLACKFIN_GPIOS; i += GPIO_BANKSIZE) {
6003 - bank = gpio_bank(i);
6004 + bank = gpio_bank(i);
6005
6006 - gpio_array[bank]->port_mux = gpio_bank_saved[bank].mux;
6007 - gpio_array[bank]->port_fer = gpio_bank_saved[bank].fer;
6008 - gpio_array[bank]->inen = gpio_bank_saved[bank].inen;
6009 - gpio_array[bank]->dir_set = gpio_bank_saved[bank].dir;
6010 - gpio_array[bank]->data_set = gpio_bank_saved[bank].data
6011 - | gpio_bank_saved[bank].dir;
6012 + gpio_array[bank]->port_mux = gpio_bank_saved[bank].mux;
6013 + gpio_array[bank]->port_fer = gpio_bank_saved[bank].fer;
6014 + gpio_array[bank]->port_inen = gpio_bank_saved[bank].inen;
6015 + gpio_array[bank]->port_dir_set = gpio_bank_saved[bank].dir;
6016 + gpio_array[bank]->port_set = gpio_bank_saved[bank].data
6017 + | gpio_bank_saved[bank].dir;
6018 }
6019 }
6020 #endif
6021
6022 unsigned short get_gpio_dir(unsigned gpio)
6023 {
6024 - return (0x01 & (gpio_array[gpio_bank(gpio)]->dir_clear >> gpio_sub_n(gpio)));
6025 + return (0x01 & (gpio_array[gpio_bank(gpio)]->port_dir_clear >> gpio_sub_n(gpio)));
6026 }
6027 EXPORT_SYMBOL(get_gpio_dir);
6028
6029 @@ -818,7 +905,9 @@
6030 */
6031
6032 #ifdef BF548_FAMILY
6033 - if (!((per & P_MAYSHARE) && get_portmux(per) == P_FUNCT2MUX(per))) {
6034 + u16 funct = get_portmux(ident);
6035 +
6036 + if (!((per & P_MAYSHARE) && (funct == P_FUNCT2MUX(per)))) {
6037 #else
6038 if (!(per & P_MAYSHARE)) {
6039 #endif
6040 @@ -842,7 +931,11 @@
6041 anyway:
6042 reserved_peri_map[gpio_bank(ident)] |= gpio_bit(ident);
6043
6044 - portmux_setup(per);
6045 +#ifdef BF548_FAMILY
6046 + portmux_setup(ident, P_FUNCT2MUX(per));
6047 +#else
6048 + portmux_setup(per, P_FUNCT2MUX(per));
6049 +#endif
6050 port_setup(ident, PERIPHERAL_USAGE);
6051
6052 local_irq_restore_hw(flags);
6053 @@ -884,6 +977,9 @@
6054 if (!(per & P_DEFINED))
6055 return;
6056
6057 + if (check_gpio(ident) < 0)
6058 + return;
6059 +
6060 local_irq_save_hw(flags);
6061
6062 if (unlikely(!(reserved_peri_map[gpio_bank(ident)] & gpio_bit(ident)))) {
6063 @@ -960,15 +1056,9 @@
6064 local_irq_restore_hw(flags);
6065 return -EBUSY;
6066 }
6067 - if (unlikely(reserved_gpio_irq_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
6068 + if (unlikely(reserved_gpio_irq_map[gpio_bank(gpio)] & gpio_bit(gpio)))
6069 printk(KERN_NOTICE "bfin-gpio: GPIO %d is already reserved as gpio-irq!"
6070 " (Documentation/blackfin/bfin-gpio-notes.txt)\n", gpio);
6071 - }
6072 -#ifndef BF548_FAMILY
6073 - else { /* Reset POLAR setting when acquiring a gpio for the first time */
6074 - set_gpio_polar(gpio, 0);
6075 - }
6076 -#endif
6077
6078 reserved_gpio_map[gpio_bank(gpio)] |= gpio_bit(gpio);
6079 set_label(gpio, label);
6080 @@ -988,8 +1078,6 @@
6081 if (check_gpio(gpio) < 0)
6082 return;
6083
6084 - might_sleep();
6085 -
6086 local_irq_save_hw(flags);
6087
6088 if (unlikely(!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio)))) {
6089 @@ -1070,16 +1158,8 @@
6090 local_irq_restore_hw(flags);
6091 }
6092
6093 -static inline void __bfin_gpio_direction_input(unsigned gpio)
6094 -{
6095 -#ifdef BF548_FAMILY
6096 - gpio_array[gpio_bank(gpio)]->dir_clear = gpio_bit(gpio);
6097 -#else
6098 - gpio_array[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio);
6099 -#endif
6100 - gpio_array[gpio_bank(gpio)]->inen |= gpio_bit(gpio);
6101 -}
6102
6103 +#ifdef BF548_FAMILY
6104 int bfin_gpio_direction_input(unsigned gpio)
6105 {
6106 unsigned long flags;
6107 @@ -1090,85 +1170,125 @@
6108 }
6109
6110 local_irq_save_hw(flags);
6111 - __bfin_gpio_direction_input(gpio);
6112 - AWA_DUMMY_READ(inen);
6113 + gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
6114 + gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
6115 local_irq_restore_hw(flags);
6116
6117 return 0;
6118 }
6119 EXPORT_SYMBOL(bfin_gpio_direction_input);
6120
6121 -void bfin_gpio_irq_prepare(unsigned gpio)
6122 +int bfin_gpio_direction_output(unsigned gpio, int value)
6123 {
6124 -#ifdef BF548_FAMILY
6125 unsigned long flags;
6126 -#endif
6127
6128 - port_setup(gpio, GPIO_USAGE);
6129 + if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
6130 + gpio_error(gpio);
6131 + return -EINVAL;
6132 + }
6133
6134 -#ifdef BF548_FAMILY
6135 local_irq_save_hw(flags);
6136 - __bfin_gpio_direction_input(gpio);
6137 + gpio_array[gpio_bank(gpio)]->port_inen &= ~gpio_bit(gpio);
6138 + gpio_set_value(gpio, value);
6139 + gpio_array[gpio_bank(gpio)]->port_dir_set = gpio_bit(gpio);
6140 local_irq_restore_hw(flags);
6141 -#endif
6142 +
6143 + return 0;
6144 }
6145 +EXPORT_SYMBOL(bfin_gpio_direction_output);
6146
6147 void bfin_gpio_set_value(unsigned gpio, int arg)
6148 {
6149 if (arg)
6150 - gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
6151 + gpio_array[gpio_bank(gpio)]->port_set = gpio_bit(gpio);
6152 else
6153 - gpio_array[gpio_bank(gpio)]->data_clear = gpio_bit(gpio);
6154 + gpio_array[gpio_bank(gpio)]->port_clear = gpio_bit(gpio);
6155 }
6156 EXPORT_SYMBOL(bfin_gpio_set_value);
6157
6158 -int bfin_gpio_direction_output(unsigned gpio, int value)
6159 +int bfin_gpio_get_value(unsigned gpio)
6160 +{
6161 + return (1 & (gpio_array[gpio_bank(gpio)]->port_data >> gpio_sub_n(gpio)));
6162 +}
6163 +EXPORT_SYMBOL(bfin_gpio_get_value);
6164 +
6165 +void bfin_gpio_irq_prepare(unsigned gpio)
6166 {
6167 unsigned long flags;
6168
6169 - if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
6170 - gpio_error(gpio);
6171 - return -EINVAL;
6172 - }
6173 + port_setup(gpio, GPIO_USAGE);
6174
6175 local_irq_save_hw(flags);
6176 -
6177 - gpio_array[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio);
6178 - gpio_set_value(gpio, value);
6179 -#ifdef BF548_FAMILY
6180 - gpio_array[gpio_bank(gpio)]->dir_set = gpio_bit(gpio);
6181 -#else
6182 - gpio_array[gpio_bank(gpio)]->dir |= gpio_bit(gpio);
6183 -#endif
6184 -
6185 - AWA_DUMMY_READ(dir);
6186 + gpio_array[gpio_bank(gpio)]->port_dir_clear = gpio_bit(gpio);
6187 + gpio_array[gpio_bank(gpio)]->port_inen |= gpio_bit(gpio);
6188 local_irq_restore_hw(flags);
6189 -
6190 - return 0;
6191 }
6192 -EXPORT_SYMBOL(bfin_gpio_direction_output);
6193 +
6194 +#else
6195
6196 int bfin_gpio_get_value(unsigned gpio)
6197 {
6198 -#ifdef BF548_FAMILY
6199 - return (1 & (gpio_array[gpio_bank(gpio)]->data >> gpio_sub_n(gpio)));
6200 -#else
6201 unsigned long flags;
6202 + int ret;
6203
6204 if (unlikely(get_gpio_edge(gpio))) {
6205 - int ret;
6206 local_irq_save_hw(flags);
6207 set_gpio_edge(gpio, 0);
6208 ret = get_gpio_data(gpio);
6209 set_gpio_edge(gpio, 1);
6210 local_irq_restore_hw(flags);
6211 +
6212 return ret;
6213 } else
6214 return get_gpio_data(gpio);
6215 -#endif
6216 }
6217 EXPORT_SYMBOL(bfin_gpio_get_value);
6218
6219 +
6220 +int bfin_gpio_direction_input(unsigned gpio)
6221 +{
6222 + unsigned long flags;
6223 +
6224 + if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
6225 + gpio_error(gpio);
6226 + return -EINVAL;
6227 + }
6228 +
6229 + local_irq_save_hw(flags);
6230 + gpio_bankb[gpio_bank(gpio)]->dir &= ~gpio_bit(gpio);
6231 + gpio_bankb[gpio_bank(gpio)]->inen |= gpio_bit(gpio);
6232 + AWA_DUMMY_READ(inen);
6233 + local_irq_restore_hw(flags);
6234 +
6235 + return 0;
6236 +}
6237 +EXPORT_SYMBOL(bfin_gpio_direction_input);
6238 +
6239 +int bfin_gpio_direction_output(unsigned gpio, int value)
6240 +{
6241 + unsigned long flags;
6242 +
6243 + if (!(reserved_gpio_map[gpio_bank(gpio)] & gpio_bit(gpio))) {
6244 + gpio_error(gpio);
6245 + return -EINVAL;
6246 + }
6247 +
6248 + local_irq_save_hw(flags);
6249 + gpio_bankb[gpio_bank(gpio)]->inen &= ~gpio_bit(gpio);
6250 +
6251 + if (value)
6252 + gpio_bankb[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
6253 + else
6254 + gpio_bankb[gpio_bank(gpio)]->data_clear = gpio_bit(gpio);
6255 +
6256 + gpio_bankb[gpio_bank(gpio)]->dir |= gpio_bit(gpio);
6257 + AWA_DUMMY_READ(dir);
6258 + local_irq_restore_hw(flags);
6259 +
6260 + return 0;
6261 +}
6262 +EXPORT_SYMBOL(bfin_gpio_direction_output);
6263 +
6264 /* If we are booting from SPI and our board lacks a strong enough pull up,
6265 * the core can reset and execute the bootrom faster than the resistor can
6266 * pull the signal logically high. To work around this (common) error in
6267 @@ -1179,15 +1299,23 @@
6268 * lives here as we need to force all the GPIO states w/out going through
6269 * BUG() checks and such.
6270 */
6271 -void bfin_reset_boot_spi_cs(unsigned short pin)
6272 +void bfin_gpio_reset_spi0_ssel1(void)
6273 {
6274 - unsigned short gpio = P_IDENT(pin);
6275 + u16 gpio = P_IDENT(P_SPI0_SSEL1);
6276 +
6277 port_setup(gpio, GPIO_USAGE);
6278 - gpio_array[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
6279 + gpio_bankb[gpio_bank(gpio)]->data_set = gpio_bit(gpio);
6280 AWA_DUMMY_READ(data_set);
6281 udelay(1);
6282 }
6283
6284 +void bfin_gpio_irq_prepare(unsigned gpio)
6285 +{
6286 + port_setup(gpio, GPIO_USAGE);
6287 +}
6288 +
6289 +#endif /*BF548_FAMILY */
6290 +
6291 #if defined(CONFIG_PROC_FS)
6292 static int gpio_proc_read(char *buf, char **start, off_t offset,
6293 int len, int *unused_i, void *unused_v)
6294 @@ -1241,7 +1369,11 @@
6295
6296 void bfin_gpiolib_set_value(struct gpio_chip *chip, unsigned gpio, int value)
6297 {
6298 +#ifdef BF548_FAMILY
6299 return bfin_gpio_set_value(gpio, value);
6300 +#else
6301 + return set_gpio_data(gpio, value);
6302 +#endif
6303 }
6304
6305 int bfin_gpiolib_gpio_request(struct gpio_chip *chip, unsigned gpio)
6306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c
6307 --- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c 2009-05-10 22:04:41.000000000 +0200
6308 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-mpu/cplbinit.c 2009-05-10 23:48:28.000000000 +0200
6309 @@ -63,8 +63,10 @@
6310 dcplb_tbl[cpu][i_d].addr = 0;
6311 dcplb_tbl[cpu][i_d++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
6312
6313 +#if 0
6314 icplb_tbl[cpu][i_i].addr = 0;
6315 - icplb_tbl[cpu][i_i++].data = i_cache | CPLB_USER_RD | PAGE_SIZE_1KB;
6316 + icplb_tbl[cpu][i_i++].data = i_cache | CPLB_USER_RD | PAGE_SIZE_4KB;
6317 +#endif
6318
6319 /* Cover kernel memory with 4M pages. */
6320 addr = 0;
6321 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c
6322 --- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c 2009-05-10 22:04:41.000000000 +0200
6323 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbinit.c 2009-05-10 23:48:28.000000000 +0200
6324 @@ -53,13 +53,9 @@
6325
6326 i_d = i_i = 0;
6327
6328 -#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
6329 /* Set up the zero page. */
6330 d_tbl[i_d].addr = 0;
6331 d_tbl[i_d++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
6332 - i_tbl[i_i].addr = 0;
6333 - i_tbl[i_i++].data = SDRAM_OOPS | PAGE_SIZE_1KB;
6334 -#endif
6335
6336 /* Cover kernel memory with 4M pages. */
6337 addr = 0;
6338 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c
6339 --- linux-2.6.29.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c 2009-05-10 22:04:41.000000000 +0200
6340 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/cplb-nompu/cplbmgr.c 2009-05-10 23:48:28.000000000 +0200
6341 @@ -163,14 +163,12 @@
6342 nr_icplb_supv_miss[cpu]++;
6343
6344 base = 0;
6345 - idx = 0;
6346 - do {
6347 + for (idx = 0; idx < icplb_nr_bounds; idx++) {
6348 eaddr = icplb_bounds[idx].eaddr;
6349 if (addr < eaddr)
6350 break;
6351 base = eaddr;
6352 - } while (++idx < icplb_nr_bounds);
6353 -
6354 + }
6355 if (unlikely(idx == icplb_nr_bounds))
6356 return CPLB_NO_ADDR_MATCH;
6357
6358 @@ -210,14 +208,12 @@
6359 nr_dcplb_supv_miss[cpu]++;
6360
6361 base = 0;
6362 - idx = 0;
6363 - do {
6364 + for (idx = 0; idx < dcplb_nr_bounds; idx++) {
6365 eaddr = dcplb_bounds[idx].eaddr;
6366 if (addr < eaddr)
6367 break;
6368 base = eaddr;
6369 - } while (++idx < dcplb_nr_bounds);
6370 -
6371 + }
6372 if (unlikely(idx == dcplb_nr_bounds))
6373 return CPLB_NO_ADDR_MATCH;
6374
6375 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/ipipe.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ipipe.c
6376 --- linux-2.6.29.owrt/arch/blackfin/kernel/ipipe.c 2009-05-10 22:04:41.000000000 +0200
6377 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ipipe.c 2009-05-10 23:48:28.000000000 +0200
6378 @@ -35,8 +35,14 @@
6379 #include <asm/atomic.h>
6380 #include <asm/io.h>
6381
6382 +static int create_irq_threads;
6383 +
6384 DEFINE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
6385
6386 +static DEFINE_PER_CPU(unsigned long, pending_irqthread_mask);
6387 +
6388 +static DEFINE_PER_CPU(int [IVG13 + 1], pending_irq_count);
6389 +
6390 asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs);
6391
6392 static void __ipipe_no_irqtail(void);
6393 @@ -87,7 +93,6 @@
6394 */
6395 void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs)
6396 {
6397 - struct ipipe_percpu_domain_data *p = ipipe_root_cpudom_ptr();
6398 struct ipipe_domain *this_domain, *next_domain;
6399 struct list_head *head, *pos;
6400 int m_ack, s = -1;
6401 @@ -99,6 +104,7 @@
6402 * interrupt.
6403 */
6404 m_ack = (regs == NULL || irq == IRQ_SYSTMR || irq == IRQ_CORETMR);
6405 +
6406 this_domain = ipipe_current_domain;
6407
6408 if (unlikely(test_bit(IPIPE_STICKY_FLAG, &this_domain->irqs[irq].control)))
6409 @@ -108,28 +114,49 @@
6410 next_domain = list_entry(head, struct ipipe_domain, p_link);
6411 if (likely(test_bit(IPIPE_WIRED_FLAG, &next_domain->irqs[irq].control))) {
6412 if (!m_ack && next_domain->irqs[irq].acknowledge != NULL)
6413 - next_domain->irqs[irq].acknowledge(irq, irq_to_desc(irq));
6414 - if (test_bit(IPIPE_SYNCDEFER_FLAG, &p->status))
6415 - s = __test_and_set_bit(IPIPE_STALL_FLAG, &p->status);
6416 + next_domain->irqs[irq].acknowledge(irq, irq_desc + irq);
6417 + if (test_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags))
6418 + s = __test_and_set_bit(IPIPE_STALL_FLAG,
6419 + &ipipe_root_cpudom_var(status));
6420 __ipipe_dispatch_wired(next_domain, irq);
6421 - goto out;
6422 + goto finalize;
6423 + return;
6424 }
6425 }
6426
6427 /* Ack the interrupt. */
6428
6429 pos = head;
6430 +
6431 while (pos != &__ipipe_pipeline) {
6432 next_domain = list_entry(pos, struct ipipe_domain, p_link);
6433 + /*
6434 + * For each domain handling the incoming IRQ, mark it
6435 + * as pending in its log.
6436 + */
6437 if (test_bit(IPIPE_HANDLE_FLAG, &next_domain->irqs[irq].control)) {
6438 + /*
6439 + * Domains that handle this IRQ are polled for
6440 + * acknowledging it by decreasing priority
6441 + * order. The interrupt must be made pending
6442 + * _first_ in the domain's status flags before
6443 + * the PIC is unlocked.
6444 + */
6445 __ipipe_set_irq_pending(next_domain, irq);
6446 +
6447 if (!m_ack && next_domain->irqs[irq].acknowledge != NULL) {
6448 - next_domain->irqs[irq].acknowledge(irq, irq_to_desc(irq));
6449 + next_domain->irqs[irq].acknowledge(irq, irq_desc + irq);
6450 m_ack = 1;
6451 }
6452 }
6453 +
6454 + /*
6455 + * If the domain does not want the IRQ to be passed
6456 + * down the interrupt pipe, exit the loop now.
6457 + */
6458 if (!test_bit(IPIPE_PASS_FLAG, &next_domain->irqs[irq].control))
6459 break;
6460 +
6461 pos = next_domain->p_link.next;
6462 }
6463
6464 @@ -139,24 +166,18 @@
6465 * immediately to the current domain if the interrupt has been
6466 * marked as 'sticky'. This search does not go beyond the
6467 * current domain in the pipeline. We also enforce the
6468 - * additional root stage lock (blackfin-specific).
6469 - */
6470 - if (test_bit(IPIPE_SYNCDEFER_FLAG, &p->status))
6471 - s = __test_and_set_bit(IPIPE_STALL_FLAG, &p->status);
6472 + * additional root stage lock (blackfin-specific). */
6473
6474 - /*
6475 - * If the interrupt preempted the head domain, then do not
6476 - * even try to walk the pipeline, unless an interrupt is
6477 - * pending for it.
6478 - */
6479 - if (test_bit(IPIPE_AHEAD_FLAG, &this_domain->flags) &&
6480 - ipipe_head_cpudom_var(irqpend_himask) == 0)
6481 - goto out;
6482 + if (test_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags))
6483 + s = __test_and_set_bit(IPIPE_STALL_FLAG,
6484 + &ipipe_root_cpudom_var(status));
6485 +finalize:
6486
6487 __ipipe_walk_pipeline(head);
6488 -out:
6489 +
6490 if (!s)
6491 - __clear_bit(IPIPE_STALL_FLAG, &p->status);
6492 + __clear_bit(IPIPE_STALL_FLAG,
6493 + &ipipe_root_cpudom_var(status));
6494 }
6495
6496 int __ipipe_check_root(void)
6497 @@ -166,7 +187,7 @@
6498
6499 void __ipipe_enable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
6500 {
6501 - struct irq_desc *desc = irq_to_desc(irq);
6502 + struct irq_desc *desc = irq_desc + irq;
6503 int prio = desc->ic_prio;
6504
6505 desc->depth = 0;
6506 @@ -178,7 +199,7 @@
6507
6508 void __ipipe_disable_irqdesc(struct ipipe_domain *ipd, unsigned irq)
6509 {
6510 - struct irq_desc *desc = irq_to_desc(irq);
6511 + struct irq_desc *desc = irq_desc + irq;
6512 int prio = desc->ic_prio;
6513
6514 if (ipd != &ipipe_root &&
6515 @@ -215,18 +236,15 @@
6516 {
6517 unsigned long flags;
6518
6519 - /*
6520 - * We need to run the IRQ tail hook whenever we don't
6521 + /* We need to run the IRQ tail hook whenever we don't
6522 * propagate a syscall to higher domains, because we know that
6523 * important operations might be pending there (e.g. Xenomai
6524 - * deferred rescheduling).
6525 - */
6526 + * deferred rescheduling). */
6527
6528 - if (regs->orig_p0 < NR_syscalls) {
6529 + if (!__ipipe_syscall_watched_p(current, regs->orig_p0)) {
6530 void (*hook)(void) = (void (*)(void))__ipipe_irq_tail_hook;
6531 hook();
6532 - if ((current->flags & PF_EVNOTIFY) == 0)
6533 - return 0;
6534 + return 0;
6535 }
6536
6537 /*
6538 @@ -294,46 +312,112 @@
6539 {
6540 unsigned long flags;
6541
6542 -#ifdef CONFIG_IPIPE_DEBUG
6543 if (irq >= IPIPE_NR_IRQS ||
6544 (ipipe_virtual_irq_p(irq)
6545 && !test_bit(irq - IPIPE_VIRQ_BASE, &__ipipe_virtual_irq_map)))
6546 return -EINVAL;
6547 -#endif
6548
6549 local_irq_save_hw(flags);
6550 +
6551 __ipipe_handle_irq(irq, NULL);
6552 +
6553 local_irq_restore_hw(flags);
6554
6555 return 1;
6556 }
6557
6558 -asmlinkage void __ipipe_sync_root(void)
6559 +/* Move Linux IRQ to threads. */
6560 +
6561 +static int do_irqd(void *__desc)
6562 {
6563 - unsigned long flags;
6564 + struct irq_desc *desc = __desc;
6565 + unsigned irq = desc - irq_desc;
6566 + int thrprio = desc->thr_prio;
6567 + int thrmask = 1 << thrprio;
6568 + int cpu = smp_processor_id();
6569 + cpumask_t cpumask;
6570 +
6571 + sigfillset(&current->blocked);
6572 + current->flags |= PF_NOFREEZE;
6573 + cpumask = cpumask_of_cpu(cpu);
6574 + set_cpus_allowed(current, cpumask);
6575 + ipipe_setscheduler_root(current, SCHED_FIFO, 50 + thrprio);
6576 +
6577 + while (!kthread_should_stop()) {
6578 + local_irq_disable();
6579 + if (!(desc->status & IRQ_SCHEDULED)) {
6580 + set_current_state(TASK_INTERRUPTIBLE);
6581 +resched:
6582 + local_irq_enable();
6583 + schedule();
6584 + local_irq_disable();
6585 + }
6586 + __set_current_state(TASK_RUNNING);
6587 + /*
6588 + * If higher priority interrupt servers are ready to
6589 + * run, reschedule immediately. We need this for the
6590 + * GPIO demux IRQ handler to unmask the interrupt line
6591 + * _last_, after all GPIO IRQs have run.
6592 + */
6593 + if (per_cpu(pending_irqthread_mask, cpu) & ~(thrmask|(thrmask-1)))
6594 + goto resched;
6595 + if (--per_cpu(pending_irq_count[thrprio], cpu) == 0)
6596 + per_cpu(pending_irqthread_mask, cpu) &= ~thrmask;
6597 + desc->status &= ~IRQ_SCHEDULED;
6598 + desc->thr_handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs));
6599 + local_irq_enable();
6600 + }
6601 + __set_current_state(TASK_RUNNING);
6602 + return 0;
6603 +}
6604
6605 - BUG_ON(irqs_disabled());
6606 +static void kick_irqd(unsigned irq, void *cookie)
6607 +{
6608 + struct irq_desc *desc = irq_desc + irq;
6609 + int thrprio = desc->thr_prio;
6610 + int thrmask = 1 << thrprio;
6611 + int cpu = smp_processor_id();
6612 +
6613 + if (!(desc->status & IRQ_SCHEDULED)) {
6614 + desc->status |= IRQ_SCHEDULED;
6615 + per_cpu(pending_irqthread_mask, cpu) |= thrmask;
6616 + ++per_cpu(pending_irq_count[thrprio], cpu);
6617 + wake_up_process(desc->thread);
6618 + }
6619 +}
6620
6621 - local_irq_save_hw(flags);
6622 +int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc)
6623 +{
6624 + if (desc->thread || !create_irq_threads)
6625 + return 0;
6626
6627 - clear_thread_flag(TIF_IRQ_SYNC);
6628 + desc->thread = kthread_create(do_irqd, desc, "IRQ %d", irq);
6629 + if (desc->thread == NULL) {
6630 + printk(KERN_ERR "irqd: could not create IRQ thread %d!\n", irq);
6631 + return -ENOMEM;
6632 + }
6633
6634 - if (ipipe_root_cpudom_var(irqpend_himask) != 0)
6635 - __ipipe_sync_pipeline(IPIPE_IRQMASK_ANY);
6636 + wake_up_process(desc->thread);
6637
6638 - local_irq_restore_hw(flags);
6639 + desc->thr_handler = ipipe_root_domain->irqs[irq].handler;
6640 + ipipe_root_domain->irqs[irq].handler = &kick_irqd;
6641 +
6642 + return 0;
6643 }
6644
6645 -void ___ipipe_sync_pipeline(unsigned long syncmask)
6646 +void __init ipipe_init_irq_threads(void)
6647 {
6648 - struct ipipe_domain *ipd = ipipe_current_domain;
6649 + unsigned irq;
6650 + struct irq_desc *desc;
6651
6652 - if (ipd == ipipe_root_domain) {
6653 - if (test_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status)))
6654 - return;
6655 - }
6656 + create_irq_threads = 1;
6657
6658 - __ipipe_sync_stage(syncmask);
6659 + for (irq = 0; irq < NR_IRQS; irq++) {
6660 + desc = irq_desc + irq;
6661 + if (desc->action != NULL ||
6662 + (desc->status & IRQ_NOREQUEST) != 0)
6663 + ipipe_start_irq_thread(irq, desc);
6664 + }
6665 }
6666
6667 EXPORT_SYMBOL(show_stack);
6668 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/irqchip.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/irqchip.c
6669 --- linux-2.6.29.owrt/arch/blackfin/kernel/irqchip.c 2009-05-10 22:04:41.000000000 +0200
6670 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/irqchip.c 2009-05-10 23:48:28.000000000 +0200
6671 @@ -35,7 +35,6 @@
6672 #include <linux/interrupt.h>
6673 #include <linux/irq.h>
6674 #include <asm/trace.h>
6675 -#include <asm/pda.h>
6676
6677 static atomic_t irq_err_count;
6678 static spinlock_t irq_controller_lock;
6679 @@ -92,13 +91,8 @@
6680 seq_putc(p, '\n');
6681 skip:
6682 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
6683 - } else if (i == NR_IRQS) {
6684 - seq_printf(p, "NMI: ");
6685 - for_each_online_cpu(j)
6686 - seq_printf(p, "%10u ", cpu_pda[j].__nmi_count);
6687 - seq_printf(p, " CORE Non Maskable Interrupt\n");
6688 + } else if (i == NR_IRQS)
6689 seq_printf(p, "Err: %10u\n", atomic_read(&irq_err_count));
6690 - }
6691 return 0;
6692 }
6693
6694 @@ -144,15 +138,11 @@
6695 #endif
6696 generic_handle_irq(irq);
6697
6698 -#ifndef CONFIG_IPIPE
6699 - /*
6700 - * If we're the only interrupt running (ignoring IRQ15 which
6701 - * is for syscalls), lower our priority to IRQ14 so that
6702 - * softirqs run at that level. If there's another,
6703 - * lower-level interrupt, irq_exit will defer softirqs to
6704 - * that. If the interrupt pipeline is enabled, we are already
6705 - * running at IRQ14 priority, so we don't need this code.
6706 - */
6707 +#ifndef CONFIG_IPIPE /* Useless and bugous over the I-pipe: IRQs are threaded. */
6708 + /* If we're the only interrupt running (ignoring IRQ15 which is for
6709 + syscalls), lower our priority to IRQ14 so that softirqs run at
6710 + that level. If there's another, lower-level interrupt, irq_exit
6711 + will defer softirqs to that. */
6712 CSYNC();
6713 pending = bfin_read_IPEND() & ~0x8000;
6714 other_ints = pending & (pending - 1);
6715 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/kgdb_test.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/kgdb_test.c
6716 --- linux-2.6.29.owrt/arch/blackfin/kernel/kgdb_test.c 2009-05-10 22:04:41.000000000 +0200
6717 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/kgdb_test.c 2009-05-10 23:48:28.000000000 +0200
6718 @@ -20,7 +20,6 @@
6719 static char cmdline[256];
6720 static unsigned long len;
6721
6722 -#ifndef CONFIG_SMP
6723 static int num1 __attribute__((l1_data));
6724
6725 void kgdb_l1_test(void) __attribute__((l1_text));
6726 @@ -33,8 +32,6 @@
6727 printk(KERN_ALERT "L1(after change) : data variable addr = 0x%p, data value is %d\n", &num1, num1);
6728 return ;
6729 }
6730 -#endif
6731 -
6732 #if L2_LENGTH
6733
6734 static int num2 __attribute__((l2));
6735 @@ -62,12 +59,10 @@
6736 static int test_proc_output(char *buf)
6737 {
6738 kgdb_test("hello world!", 12, 0x55, 0x10);
6739 -#ifndef CONFIG_SMP
6740 kgdb_l1_test();
6741 -#endif
6742 -#if L2_LENGTH
6743 + #if L2_LENGTH
6744 kgdb_l2_test();
6745 -#endif
6746 + #endif
6747
6748 return 0;
6749 }
6750 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/kernel/Makefile
6751 --- linux-2.6.29.owrt/arch/blackfin/kernel/Makefile 2009-05-10 22:04:41.000000000 +0200
6752 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/Makefile 2009-05-10 23:48:28.000000000 +0200
6753 @@ -21,9 +21,5 @@
6754 obj-$(CONFIG_CPLB_INFO) += cplbinfo.o
6755 obj-$(CONFIG_MODULES) += module.o
6756 obj-$(CONFIG_KGDB) += kgdb.o
6757 -obj-$(CONFIG_KGDB_TESTS) += kgdb_test.o
6758 +obj-$(CONFIG_KGDB_TESTCASE) += kgdb_test.o
6759 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
6760 -
6761 -# the kgdb test puts code into L2 and without linker
6762 -# relaxation, we need to force long calls to/from it
6763 -CFLAGS_kgdb_test.o := -mlong-calls -O0
6764 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/ptrace.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ptrace.c
6765 --- linux-2.6.29.owrt/arch/blackfin/kernel/ptrace.c 2009-05-10 22:04:41.000000000 +0200
6766 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/ptrace.c 2009-05-10 23:48:28.000000000 +0200
6767 @@ -45,7 +45,6 @@
6768 #include <asm/asm-offsets.h>
6769 #include <asm/dma.h>
6770 #include <asm/fixed_code.h>
6771 -#include <asm/cacheflush.h>
6772 #include <asm/mem_map.h>
6773
6774 #define TEXT_OFFSET 0
6775 @@ -241,7 +240,7 @@
6776
6777 } else if (addr >= FIXED_CODE_START
6778 && addr + sizeof(tmp) <= FIXED_CODE_END) {
6779 - copy_from_user_page(0, 0, 0, &tmp, (const void *)(addr), sizeof(tmp));
6780 + memcpy(&tmp, (const void *)(addr), sizeof(tmp));
6781 copied = sizeof(tmp);
6782
6783 } else
6784 @@ -321,7 +320,7 @@
6785
6786 } else if (addr >= FIXED_CODE_START
6787 && addr + sizeof(data) <= FIXED_CODE_END) {
6788 - copy_to_user_page(0, 0, 0, (void *)(addr), &data, sizeof(data));
6789 + memcpy((void *)(addr), &data, sizeof(data));
6790 copied = sizeof(data);
6791
6792 } else
6793 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/reboot.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/reboot.c
6794 --- linux-2.6.29.owrt/arch/blackfin/kernel/reboot.c 2009-05-10 22:04:41.000000000 +0200
6795 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/reboot.c 2009-05-10 23:48:28.000000000 +0200
6796 @@ -20,8 +20,8 @@
6797 * reset while the Core B bit (on dual core parts) is cleared by
6798 * the core reset.
6799 */
6800 -__attribute__ ((__l1_text__, __noreturn__))
6801 -static void bfin_reset(void)
6802 +__attribute__((l1_text))
6803 +static void _bfin_reset(void)
6804 {
6805 /* Wait for completion of "system" events such as cache line
6806 * line fills so that we avoid infinite stalls later on as
6807 @@ -30,11 +30,7 @@
6808 */
6809 __builtin_bfin_ssync();
6810
6811 - /* The bootrom checks to see how it was reset and will
6812 - * automatically perform a software reset for us when
6813 - * it starts executing after the core reset.
6814 - */
6815 - if (ANOMALY_05000353 || ANOMALY_05000386) {
6816 + while (1) {
6817 /* Initiate System software reset. */
6818 bfin_write_SWRST(0x7);
6819
6820 @@ -54,11 +50,6 @@
6821 /* Clear System software reset */
6822 bfin_write_SWRST(0);
6823
6824 - /* The BF526 ROM will crash during reset */
6825 -#if defined(__ADSPBF522__) || defined(__ADSPBF524__) || defined(__ADSPBF526__)
6826 - bfin_read_SWRST();
6827 -#endif
6828 -
6829 /* Wait for the SWRST write to complete. Cannot rely on SSYNC
6830 * though as the System state is all reset now.
6831 */
6832 @@ -69,11 +60,22 @@
6833 : "a" (15 * 1)
6834 : "LC1", "LB1", "LT1"
6835 );
6836 - }
6837
6838 - while (1)
6839 /* Issue core reset */
6840 asm("raise 1");
6841 + }
6842 +}
6843 +
6844 +static void bfin_reset(void)
6845 +{
6846 + if (ANOMALY_05000353 || ANOMALY_05000386)
6847 + _bfin_reset();
6848 + else
6849 + /* the bootrom checks to see how it was reset and will
6850 + * automatically perform a software reset for us when
6851 + * it starts executing boot
6852 + */
6853 + asm("raise 1;");
6854 }
6855
6856 __attribute__((weak))
6857 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/setup.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/setup.c
6858 --- linux-2.6.29.owrt/arch/blackfin/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
6859 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
6860 @@ -60,7 +60,7 @@
6861 #define BFIN_MEMMAP_MAX 128 /* number of entries in bfin_memmap */
6862 #define BFIN_MEMMAP_RAM 1
6863 #define BFIN_MEMMAP_RESERVED 2
6864 -static struct bfin_memmap {
6865 +struct bfin_memmap {
6866 int nr_map;
6867 struct bfin_memmap_entry {
6868 unsigned long long addr; /* start of memory segment */
6869 @@ -824,15 +824,7 @@
6870 flash_probe();
6871 #endif
6872
6873 - printk(KERN_INFO "Boot Mode: %i\n", bfin_read_SYSCR() & 0xF);
6874 -
6875 - /* Newer parts mirror SWRST bits in SYSCR */
6876 -#if defined(CONFIG_BF53x) || defined(CONFIG_BF561) || \
6877 - defined(CONFIG_BF538) || defined(CONFIG_BF539)
6878 _bfin_swrst = bfin_read_SWRST();
6879 -#else
6880 - _bfin_swrst = bfin_read_SYSCR();
6881 -#endif
6882
6883 #ifdef CONFIG_DEBUG_DOUBLEFAULT_PRINT
6884 bfin_write_SWRST(_bfin_swrst & ~DOUBLE_FAULT);
6885 @@ -861,7 +853,7 @@
6886 else if (_bfin_swrst & RESET_SOFTWARE)
6887 printk(KERN_NOTICE "Reset caused by Software reset\n");
6888
6889 - printk(KERN_INFO "Blackfin support (C) 2004-2009 Analog Devices, Inc.\n");
6890 + printk(KERN_INFO "Blackfin support (C) 2004-2008 Analog Devices, Inc.\n");
6891 if (bfin_compiled_revid() == 0xffff)
6892 printk(KERN_INFO "Compiled for ADSP-%s Rev any\n", CPU);
6893 else if (bfin_compiled_revid() == -1)
6894 @@ -889,10 +881,6 @@
6895 CPU, bfin_revid());
6896 }
6897
6898 - /* We can't run on BF548-0.1 due to ANOMALY 05000448 */
6899 - if (bfin_cpuid() == 0x27de && bfin_revid() == 1)
6900 - panic("You can't run on this processor due to 05000448\n");
6901 -
6902 printk(KERN_INFO "Blackfin Linux support by http://blackfin.uclinux.org/\n");
6903
6904 printk(KERN_INFO "Processor Speed: %lu MHz core clock and %lu MHz System Clock\n",
6905 @@ -1145,12 +1133,12 @@
6906 icache_size = 0;
6907
6908 seq_printf(m, "cache size\t: %d KB(L1 icache) "
6909 - "%d KB(L1 dcache%s) %d KB(L2 cache)\n",
6910 + "%d KB(L1 dcache-%s) %d KB(L2 cache)\n",
6911 icache_size, dcache_size,
6912 #if defined CONFIG_BFIN_WB
6913 - "-wb"
6914 + "wb"
6915 #elif defined CONFIG_BFIN_WT
6916 - "-wt"
6917 + "wt"
6918 #endif
6919 "", 0);
6920
6921 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/time.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/time.c
6922 --- linux-2.6.29.owrt/arch/blackfin/kernel/time.c 2009-05-10 22:04:41.000000000 +0200
6923 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/time.c 2009-05-10 23:48:28.000000000 +0200
6924 @@ -134,10 +134,7 @@
6925
6926 write_seqlock(&xtime_lock);
6927 #if defined(CONFIG_TICK_SOURCE_SYSTMR0) && !defined(CONFIG_IPIPE)
6928 - /*
6929 - * TIMIL0 is latched in __ipipe_grab_irq() when the I-Pipe is
6930 - * enabled.
6931 - */
6932 +/* FIXME: Here TIMIL0 is not set when IPIPE enabled, why? */
6933 if (get_gptimer_status(0) & TIMER_STATUS_TIMIL0) {
6934 #endif
6935 do_timer(1);
6936 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/kernel/traps.c linux-2.6.29-rc3.owrt/arch/blackfin/kernel/traps.c
6937 --- linux-2.6.29.owrt/arch/blackfin/kernel/traps.c 2009-05-10 22:04:41.000000000 +0200
6938 +++ linux-2.6.29-rc3.owrt/arch/blackfin/kernel/traps.c 2009-05-10 23:48:28.000000000 +0200
6939 @@ -673,14 +673,6 @@
6940 verbose_printk("RTI");
6941 else if (opcode == 0x0012)
6942 verbose_printk("RTX");
6943 - else if (opcode == 0x0013)
6944 - verbose_printk("RTN");
6945 - else if (opcode == 0x0014)
6946 - verbose_printk("RTE");
6947 - else if (opcode == 0x0025)
6948 - verbose_printk("EMUEXCPT");
6949 - else if (opcode == 0x0040 && opcode <= 0x0047)
6950 - verbose_printk("STI R%i", opcode & 7);
6951 else if (opcode >= 0x0050 && opcode <= 0x0057)
6952 verbose_printk("JUMP (P%i)", opcode & 7);
6953 else if (opcode >= 0x0060 && opcode <= 0x0067)
6954 @@ -689,10 +681,6 @@
6955 verbose_printk("CALL (PC+P%i)", opcode & 7);
6956 else if (opcode >= 0x0080 && opcode <= 0x0087)
6957 verbose_printk("JUMP (PC+P%i)", opcode & 7);
6958 - else if (opcode >= 0x0090 && opcode <= 0x009F)
6959 - verbose_printk("RAISE 0x%x", opcode & 0xF);
6960 - else if (opcode >= 0x00A0 && opcode <= 0x00AF)
6961 - verbose_printk("EXCPT 0x%x", opcode & 0xF);
6962 else if ((opcode >= 0x1000 && opcode <= 0x13FF) || (opcode >= 0x1800 && opcode <= 0x1BFF))
6963 verbose_printk("IF !CC JUMP");
6964 else if ((opcode >= 0x1400 && opcode <= 0x17ff) || (opcode >= 0x1c00 && opcode <= 0x1fff))
6965 @@ -832,8 +820,11 @@
6966 decode_address(buf, (unsigned int)stack);
6967 printk(KERN_NOTICE " SP: [0x%p] %s\n", stack, buf);
6968
6969 + addr = (unsigned int *)((unsigned int)stack & ~0x3F);
6970 +
6971 /* First thing is to look for a frame pointer */
6972 - for (addr = (unsigned int *)((unsigned int)stack & ~0xF); addr < endstack; addr++) {
6973 + for (addr = (unsigned int *)((unsigned int)stack & ~0xF), i = 0;
6974 + addr < endstack; addr++, i++) {
6975 if (*addr & 0x1)
6976 continue;
6977 ins_addr = (unsigned short *)*addr;
6978 @@ -843,8 +834,7 @@
6979
6980 if (fp) {
6981 /* Let's check to see if it is a frame pointer */
6982 - while (fp >= (addr - 1) && fp < endstack
6983 - && fp && ((unsigned int) fp & 0x3) == 0)
6984 + while (fp >= (addr - 1) && fp < endstack && fp)
6985 fp = (unsigned int *)*fp;
6986 if (fp == 0 || fp == endstack) {
6987 fp = addr - 1;
6988 @@ -1062,9 +1052,8 @@
6989 char buf [150];
6990 struct irqaction *action;
6991 unsigned int i;
6992 - unsigned long flags = 0;
6993 + unsigned long flags;
6994 unsigned int cpu = smp_processor_id();
6995 - unsigned char in_atomic = (bfin_read_IPEND() & 0x10) || in_atomic();
6996
6997 verbose_printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\t\t%s\n", print_tainted());
6998 verbose_printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n",
6999 @@ -1084,22 +1073,17 @@
7000 }
7001 verbose_printk(KERN_NOTICE " EXCAUSE : 0x%lx\n",
7002 fp->seqstat & SEQSTAT_EXCAUSE);
7003 - for (i = 2; i <= 15 ; i++) {
7004 + for (i = 6; i <= 15 ; i++) {
7005 if (fp->ipend & (1 << i)) {
7006 - if (i != 4) {
7007 - decode_address(buf, bfin_read32(EVT0 + 4*i));
7008 - verbose_printk(KERN_NOTICE " physical IVG%i asserted : %s\n", i, buf);
7009 - } else
7010 - verbose_printk(KERN_NOTICE " interrupts disabled\n");
7011 + decode_address(buf, bfin_read32(EVT0 + 4*i));
7012 + verbose_printk(KERN_NOTICE " physical IVG%i asserted : %s\n", i, buf);
7013 }
7014 }
7015
7016 /* if no interrupts are going off, don't print this out */
7017 if (fp->ipend & ~0x3F) {
7018 for (i = 0; i < (NR_IRQS - 1); i++) {
7019 - if (!in_atomic)
7020 - spin_lock_irqsave(&irq_desc[i].lock, flags);
7021 -
7022 + spin_lock_irqsave(&irq_desc[i].lock, flags);
7023 action = irq_desc[i].action;
7024 if (!action)
7025 goto unlock;
7026 @@ -1112,8 +1096,7 @@
7027 }
7028 verbose_printk("\n");
7029 unlock:
7030 - if (!in_atomic)
7031 - spin_unlock_irqrestore(&irq_desc[i].lock, flags);
7032 + spin_unlock_irqrestore(&irq_desc[i].lock, flags);
7033 }
7034 }
7035
7036 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c
7037 --- linux-2.6.29.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c 2009-05-10 22:04:41.000000000 +0200
7038 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/boards/ezbrd.c 2009-05-10 23:48:28.000000000 +0200
7039 @@ -46,7 +46,6 @@
7040 #include <asm/dpmc.h>
7041 #include <asm/bfin_sdh.h>
7042 #include <linux/spi/ad7877.h>
7043 -#include <net/dsa.h>
7044
7045 /*
7046 * Name the Board for the /proc/cpuinfo
7047 @@ -105,33 +104,10 @@
7048 #endif
7049
7050 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7051 -static struct platform_device bfin_mii_bus = {
7052 - .name = "bfin_mii_bus",
7053 -};
7054 -
7055 static struct platform_device bfin_mac_device = {
7056 .name = "bfin_mac",
7057 - .dev.platform_data = &bfin_mii_bus,
7058 -};
7059 -
7060 -#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
7061 -static struct dsa_platform_data ksz8893m_switch_data = {
7062 - .mii_bus = &bfin_mii_bus.dev,
7063 - .netdev = &bfin_mac_device.dev,
7064 - .port_names[0] = NULL,
7065 - .port_names[1] = "eth%d",
7066 - .port_names[2] = "eth%d",
7067 - .port_names[3] = "cpu",
7068 -};
7069 -
7070 -static struct platform_device ksz8893m_switch_device = {
7071 - .name = "dsa",
7072 - .id = 0,
7073 - .num_resources = 0,
7074 - .dev.platform_data = &ksz8893m_switch_data,
7075 };
7076 #endif
7077 -#endif
7078
7079 #if defined(CONFIG_MTD_M25P80) \
7080 || defined(CONFIG_MTD_M25P80_MODULE)
7081 @@ -171,20 +147,9 @@
7082 };
7083 #endif
7084
7085 -#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7086 -#if defined(CONFIG_NET_DSA_KSZ8893M) \
7087 - || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
7088 -/* SPI SWITCH CHIP */
7089 -static struct bfin5xx_spi_chip spi_switch_info = {
7090 - .enable_dma = 0,
7091 - .bits_per_word = 8,
7092 -};
7093 -#endif
7094 -#endif
7095 -
7096 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7097 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
7098 - .enable_dma = 0,
7099 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7100 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
7101 + .enable_dma = 1,
7102 .bits_per_word = 8,
7103 };
7104 #endif
7105 @@ -261,28 +226,23 @@
7106 },
7107 #endif
7108
7109 -#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7110 -#if defined(CONFIG_NET_DSA_KSZ8893M) \
7111 - || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
7112 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7113 {
7114 - .modalias = "ksz8893m",
7115 - .max_speed_hz = 5000000,
7116 + .modalias = "spi_mmc_dummy",
7117 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7118 .bus_num = 0,
7119 - .chip_select = 1,
7120 + .chip_select = 0,
7121 .platform_data = NULL,
7122 - .controller_data = &spi_switch_info,
7123 + .controller_data = &spi_mmc_chip_info,
7124 .mode = SPI_MODE_3,
7125 },
7126 -#endif
7127 -#endif
7128 -
7129 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7130 {
7131 - .modalias = "mmc_spi",
7132 + .modalias = "spi_mmc",
7133 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7134 .bus_num = 0,
7135 - .chip_select = 5,
7136 - .controller_data = &mmc_spi_chip_info,
7137 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
7138 + .platform_data = NULL,
7139 + .controller_data = &spi_mmc_chip_info,
7140 .mode = SPI_MODE_3,
7141 },
7142 #endif
7143 @@ -513,6 +473,7 @@
7144 };
7145 #endif
7146
7147 +#ifdef CONFIG_I2C_BOARDINFO
7148 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
7149 #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
7150 {
7151 @@ -526,6 +487,7 @@
7152 },
7153 #endif
7154 };
7155 +#endif
7156
7157 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
7158 static struct platform_device bfin_sport0_uart_device = {
7159 @@ -622,11 +584,7 @@
7160 #endif
7161
7162 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7163 - &bfin_mii_bus,
7164 &bfin_mac_device,
7165 -#if defined(CONFIG_NET_DSA_KSZ8893M) || defined(CONFIG_NET_DSA_KSZ8893M_MODULE)
7166 - &ksz8893m_switch_device,
7167 -#endif
7168 #endif
7169
7170 #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
7171 @@ -674,8 +632,12 @@
7172 static int __init ezbrd_init(void)
7173 {
7174 printk(KERN_INFO "%s(): registering device resources\n", __func__);
7175 +
7176 +#ifdef CONFIG_I2C_BOARDINFO
7177 i2c_register_board_info(0, bfin_i2c_board_info,
7178 ARRAY_SIZE(bfin_i2c_board_info));
7179 +#endif
7180 +
7181 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
7182 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
7183 return 0;
7184 @@ -687,7 +649,7 @@
7185 {
7186 /* workaround reboot hang when booting from SPI */
7187 if ((bfin_read_SYSCR() & 0x7) == 0x3)
7188 - bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
7189 + bfin_gpio_reset_spi0_ssel1();
7190 }
7191
7192 void bfin_get_ether_addr(char *addr)
7193 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h
7194 --- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h 2009-05-10 22:04:41.000000000 +0200
7195 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
7196 @@ -2,12 +2,12 @@
7197 * File: include/asm-blackfin/mach-bf518/anomaly.h
7198 * Bugs: Enter bugs at http://blackfin.uclinux.org/
7199 *
7200 - * Copyright (C) 2004-2009 Analog Devices Inc.
7201 + * Copyright (C) 2004-2008 Analog Devices Inc.
7202 * Licensed under the GPL-2 or later.
7203 */
7204
7205 /* This file shoule be up to date with:
7206 - * - Revision B, 02/03/2009; ADSP-BF512/BF514/BF516/BF518 Blackfin Processor Anomaly List
7207 + * - ????
7208 */
7209
7210 #ifndef _MACH_ANOMALY_H_
7211 @@ -19,8 +19,6 @@
7212 #define ANOMALY_05000122 (1)
7213 /* False Hardware Error from an Access in the Shadow of a Conditional Branch */
7214 #define ANOMALY_05000245 (1)
7215 -/* Incorrect Timer Pulse Width in Single-Shot PWM_OUT Mode with External Clock */
7216 -#define ANOMALY_05000254 (1)
7217 /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */
7218 #define ANOMALY_05000265 (1)
7219 /* False Hardware Errors Caused by Fetches at the Boundary of Reserved Memory */
7220 @@ -55,12 +53,6 @@
7221 #define ANOMALY_05000443 (1)
7222 /* Incorrect L1 Instruction Bank B Memory Map Location */
7223 #define ANOMALY_05000444 (1)
7224 -/* Incorrect Default Hysteresis Setting for RESET, NMI, and BMODE Signals */
7225 -#define ANOMALY_05000452 (1)
7226 -/* PWM_TRIPB Signal Not Available on PG10 */
7227 -#define ANOMALY_05000453 (1)
7228 -/* PPI_FS3 is Driven One Half Cycle Later Than PPI Data */
7229 -#define ANOMALY_05000455 (1)
7230
7231 /* Anomalies that don't exist on this proc */
7232 #define ANOMALY_05000125 (0)
7233 @@ -73,20 +65,15 @@
7234 #define ANOMALY_05000263 (0)
7235 #define ANOMALY_05000266 (0)
7236 #define ANOMALY_05000273 (0)
7237 -#define ANOMALY_05000278 (0)
7238 #define ANOMALY_05000285 (0)
7239 -#define ANOMALY_05000305 (0)
7240 #define ANOMALY_05000307 (0)
7241 #define ANOMALY_05000311 (0)
7242 #define ANOMALY_05000312 (0)
7243 #define ANOMALY_05000323 (0)
7244 #define ANOMALY_05000353 (0)
7245 #define ANOMALY_05000363 (0)
7246 -#define ANOMALY_05000380 (0)
7247 #define ANOMALY_05000386 (0)
7248 #define ANOMALY_05000412 (0)
7249 #define ANOMALY_05000432 (0)
7250 -#define ANOMALY_05000447 (0)
7251 -#define ANOMALY_05000448 (0)
7252
7253 #endif
7254 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h
7255 --- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:41.000000000 +0200
7256 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
7257 @@ -144,7 +144,7 @@
7258 CH_UART0_TX,
7259 CH_UART0_RX,
7260 #endif
7261 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
7262 +#ifdef CONFIG_BFIN_UART0_CTSRTS
7263 CONFIG_UART0_CTS_PIN,
7264 CONFIG_UART0_RTS_PIN,
7265 #endif
7266 @@ -158,7 +158,7 @@
7267 CH_UART1_TX,
7268 CH_UART1_RX,
7269 #endif
7270 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
7271 +#ifdef CONFIG_BFIN_UART1_CTSRTS
7272 CONFIG_UART1_CTS_PIN,
7273 CONFIG_UART1_RTS_PIN,
7274 #endif
7275 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h
7276 --- linux-2.6.29.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
7277 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf518/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
7278 @@ -103,8 +103,6 @@
7279 #define P_SPI1_SSEL4 (P_DEFINED | P_IDENT(GPIO_PF8) | P_FUNCT(2))
7280 #define P_SPI1_SSEL5 (P_DEFINED | P_IDENT(GPIO_PG11) | P_FUNCT(2))
7281
7282 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
7283 -
7284 /* SPORT Port Mux */
7285 #define P_SPORT0_DRPRI (P_DEFINED | P_IDENT(GPIO_PG3) | P_FUNCT(0))
7286 #define P_SPORT0_RSCLK (P_DEFINED | P_IDENT(GPIO_PG4) | P_FUNCT(0))
7287 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c
7288 --- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c 2009-05-10 22:04:41.000000000 +0200
7289 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/cm_bf527.c 2009-05-10 23:48:28.000000000 +0200
7290 @@ -403,13 +403,8 @@
7291 #endif
7292
7293 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7294 -static struct platform_device bfin_mii_bus = {
7295 - .name = "bfin_mii_bus",
7296 -};
7297 -
7298 static struct platform_device bfin_mac_device = {
7299 .name = "bfin_mac",
7300 - .dev.platform_data = &bfin_mii_bus,
7301 };
7302 #endif
7303
7304 @@ -487,9 +482,9 @@
7305 };
7306 #endif
7307
7308 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7309 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
7310 - .enable_dma = 0,
7311 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7312 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
7313 + .enable_dma = 1,
7314 .bits_per_word = 8,
7315 };
7316 #endif
7317 @@ -585,13 +580,23 @@
7318 .controller_data = &ad9960_spi_chip_info,
7319 },
7320 #endif
7321 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7322 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7323 {
7324 - .modalias = "mmc_spi",
7325 - .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
7326 + .modalias = "spi_mmc_dummy",
7327 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7328 .bus_num = 0,
7329 - .chip_select = 5,
7330 - .controller_data = &mmc_spi_chip_info,
7331 + .chip_select = 0,
7332 + .platform_data = NULL,
7333 + .controller_data = &spi_mmc_chip_info,
7334 + .mode = SPI_MODE_3,
7335 + },
7336 + {
7337 + .modalias = "spi_mmc",
7338 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7339 + .bus_num = 0,
7340 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
7341 + .platform_data = NULL,
7342 + .controller_data = &spi_mmc_chip_info,
7343 .mode = SPI_MODE_3,
7344 },
7345 #endif
7346 @@ -788,6 +793,7 @@
7347 };
7348 #endif
7349
7350 +#ifdef CONFIG_I2C_BOARDINFO
7351 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
7352 #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
7353 {
7354 @@ -803,6 +809,7 @@
7355 },
7356 #endif
7357 };
7358 +#endif
7359
7360 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
7361 static struct platform_device bfin_sport0_uart_device = {
7362 @@ -913,7 +920,6 @@
7363 #endif
7364
7365 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7366 - &bfin_mii_bus,
7367 &bfin_mac_device,
7368 #endif
7369
7370 @@ -962,23 +968,27 @@
7371 &bfin_gpios_device,
7372 };
7373
7374 -static int __init cm_init(void)
7375 +static int __init stamp_init(void)
7376 {
7377 printk(KERN_INFO "%s(): registering device resources\n", __func__);
7378 +
7379 +#ifdef CONFIG_I2C_BOARDINFO
7380 i2c_register_board_info(0, bfin_i2c_board_info,
7381 ARRAY_SIZE(bfin_i2c_board_info));
7382 +#endif
7383 +
7384 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
7385 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
7386 return 0;
7387 }
7388
7389 -arch_initcall(cm_init);
7390 +arch_initcall(stamp_init);
7391
7392 void native_machine_restart(char *cmd)
7393 {
7394 /* workaround reboot hang when booting from SPI */
7395 if ((bfin_read_SYSCR() & 0x7) == 0x3)
7396 - bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
7397 + bfin_gpio_reset_spi0_ssel1();
7398 }
7399
7400 void bfin_get_ether_addr(char *addr)
7401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c
7402 --- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c 2009-05-10 22:04:41.000000000 +0200
7403 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezbrd.c 2009-05-10 23:48:28.000000000 +0200
7404 @@ -208,13 +208,8 @@
7405
7406
7407 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7408 -static struct platform_device bfin_mii_bus = {
7409 - .name = "bfin_mii_bus",
7410 -};
7411 -
7412 static struct platform_device bfin_mac_device = {
7413 .name = "bfin_mac",
7414 - .dev.platform_data = &bfin_mii_bus,
7415 };
7416 #endif
7417
7418 @@ -256,9 +251,9 @@
7419 };
7420 #endif
7421
7422 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7423 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
7424 - .enable_dma = 0,
7425 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7426 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
7427 + .enable_dma = 1,
7428 .bits_per_word = 8,
7429 };
7430 #endif
7431 @@ -366,13 +361,23 @@
7432 },
7433 #endif
7434
7435 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7436 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7437 {
7438 - .modalias = "mmc_spi",
7439 + .modalias = "spi_mmc_dummy",
7440 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7441 .bus_num = 0,
7442 - .chip_select = 5,
7443 - .controller_data = &mmc_spi_chip_info,
7444 + .chip_select = 0,
7445 + .platform_data = NULL,
7446 + .controller_data = &spi_mmc_chip_info,
7447 + .mode = SPI_MODE_3,
7448 + },
7449 + {
7450 + .modalias = "spi_mmc",
7451 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7452 + .bus_num = 0,
7453 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
7454 + .platform_data = NULL,
7455 + .controller_data = &spi_mmc_chip_info,
7456 .mode = SPI_MODE_3,
7457 },
7458 #endif
7459 @@ -585,6 +590,7 @@
7460 };
7461 #endif
7462
7463 +#ifdef CONFIG_I2C_BOARDINFO
7464 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
7465 #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
7466 {
7467 @@ -598,6 +604,7 @@
7468 },
7469 #endif
7470 };
7471 +#endif
7472
7473 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
7474 static struct platform_device bfin_sport0_uart_device = {
7475 @@ -713,7 +720,6 @@
7476 #endif
7477
7478 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7479 - &bfin_mii_bus,
7480 &bfin_mac_device,
7481 #endif
7482
7483 @@ -758,23 +764,27 @@
7484 &bfin_gpios_device,
7485 };
7486
7487 -static int __init ezbrd_init(void)
7488 +static int __init stamp_init(void)
7489 {
7490 printk(KERN_INFO "%s(): registering device resources\n", __func__);
7491 +
7492 +#ifdef CONFIG_I2C_BOARDINFO
7493 i2c_register_board_info(0, bfin_i2c_board_info,
7494 ARRAY_SIZE(bfin_i2c_board_info));
7495 +#endif
7496 +
7497 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
7498 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
7499 return 0;
7500 }
7501
7502 -arch_initcall(ezbrd_init);
7503 +arch_initcall(stamp_init);
7504
7505 void native_machine_restart(char *cmd)
7506 {
7507 /* workaround reboot hang when booting from SPI */
7508 if ((bfin_read_SYSCR() & 0x7) == 0x3)
7509 - bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
7510 + bfin_gpio_reset_spi0_ssel1();
7511 }
7512
7513 void bfin_get_ether_addr(char *addr)
7514 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezkit.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezkit.c
7515 --- linux-2.6.29.owrt/arch/blackfin/mach-bf527/boards/ezkit.c 2009-05-10 22:04:41.000000000 +0200
7516 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/boards/ezkit.c 2009-05-10 23:48:28.000000000 +0200
7517 @@ -425,13 +425,8 @@
7518 #endif
7519
7520 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7521 -static struct platform_device bfin_mii_bus = {
7522 - .name = "bfin_mii_bus",
7523 -};
7524 -
7525 static struct platform_device bfin_mac_device = {
7526 .name = "bfin_mac",
7527 - .dev.platform_data = &bfin_mii_bus,
7528 };
7529 #endif
7530
7531 @@ -835,6 +830,7 @@
7532 };
7533 #endif
7534
7535 +#ifdef CONFIG_I2C_BOARDINFO
7536 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
7537 #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE)
7538 {
7539 @@ -848,6 +844,7 @@
7540 },
7541 #endif
7542 };
7543 +#endif
7544
7545 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
7546 static struct platform_device bfin_sport0_uart_device = {
7547 @@ -991,7 +988,6 @@
7548 #endif
7549
7550 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
7551 - &bfin_mii_bus,
7552 &bfin_mac_device,
7553 #endif
7554
7555 @@ -1052,23 +1048,27 @@
7556 &bfin_gpios_device,
7557 };
7558
7559 -static int __init ezkit_init(void)
7560 +static int __init stamp_init(void)
7561 {
7562 printk(KERN_INFO "%s(): registering device resources\n", __func__);
7563 +
7564 +#ifdef CONFIG_I2C_BOARDINFO
7565 i2c_register_board_info(0, bfin_i2c_board_info,
7566 ARRAY_SIZE(bfin_i2c_board_info));
7567 +#endif
7568 +
7569 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
7570 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
7571 return 0;
7572 }
7573
7574 -arch_initcall(ezkit_init);
7575 +arch_initcall(stamp_init);
7576
7577 void native_machine_restart(char *cmd)
7578 {
7579 /* workaround reboot hang when booting from SPI */
7580 if ((bfin_read_SYSCR() & 0x7) == 0x3)
7581 - bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
7582 + bfin_gpio_reset_spi0_ssel1();
7583 }
7584
7585 void bfin_get_ether_addr(char *addr)
7586 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h
7587 --- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h 2009-05-10 22:04:41.000000000 +0200
7588 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
7589 @@ -2,7 +2,7 @@
7590 * File: include/asm-blackfin/mach-bf527/anomaly.h
7591 * Bugs: Enter bugs at http://blackfin.uclinux.org/
7592 *
7593 - * Copyright (C) 2004-2009 Analog Devices Inc.
7594 + * Copyright (C) 2004-2008 Analog Devices Inc.
7595 * Licensed under the GPL-2 or later.
7596 */
7597
7598 @@ -167,16 +167,12 @@
7599 #define ANOMALY_05000263 (0)
7600 #define ANOMALY_05000266 (0)
7601 #define ANOMALY_05000273 (0)
7602 -#define ANOMALY_05000278 (0)
7603 #define ANOMALY_05000285 (0)
7604 -#define ANOMALY_05000305 (0)
7605 #define ANOMALY_05000307 (0)
7606 #define ANOMALY_05000311 (0)
7607 #define ANOMALY_05000312 (0)
7608 #define ANOMALY_05000323 (0)
7609 #define ANOMALY_05000363 (0)
7610 #define ANOMALY_05000412 (0)
7611 -#define ANOMALY_05000447 (0)
7612 -#define ANOMALY_05000448 (0)
7613
7614 #endif
7615 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h
7616 --- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:41.000000000 +0200
7617 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
7618 @@ -144,7 +144,7 @@
7619 CH_UART0_TX,
7620 CH_UART0_RX,
7621 #endif
7622 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
7623 +#ifdef CONFIG_BFIN_UART0_CTSRTS
7624 CONFIG_UART0_CTS_PIN,
7625 CONFIG_UART0_RTS_PIN,
7626 #endif
7627 @@ -158,7 +158,7 @@
7628 CH_UART1_TX,
7629 CH_UART1_RX,
7630 #endif
7631 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
7632 +#ifdef CONFIG_BFIN_UART1_CTSRTS
7633 CONFIG_UART1_CTS_PIN,
7634 CONFIG_UART1_RTS_PIN,
7635 #endif
7636 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h
7637 --- linux-2.6.29.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
7638 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf527/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
7639 @@ -73,8 +73,6 @@
7640
7641 #define P_HWAIT (P_DONTCARE)
7642
7643 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
7644 -
7645 #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0))
7646 #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(2))
7647 #define P_SPI0_SCK (P_DEFINED | P_IDENT(GPIO_PG2) | P_FUNCT(2))
7648 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c
7649 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c 2009-05-10 22:04:41.000000000 +0200
7650 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/blackstamp.c 2009-05-10 23:48:28.000000000 +0200
7651 @@ -101,9 +101,9 @@
7652 };
7653 #endif
7654
7655 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7656 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
7657 - .enable_dma = 0,
7658 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7659 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
7660 + .enable_dma = 1,
7661 .bits_per_word = 8,
7662 };
7663 #endif
7664 @@ -129,13 +129,23 @@
7665 },
7666 #endif
7667
7668 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7669 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7670 + {
7671 + .modalias = "spi_mmc_dummy",
7672 + .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
7673 + .bus_num = 0,
7674 + .chip_select = 0,
7675 + .platform_data = NULL,
7676 + .controller_data = &spi_mmc_chip_info,
7677 + .mode = SPI_MODE_3,
7678 + },
7679 {
7680 - .modalias = "mmc_spi",
7681 + .modalias = "spi_mmc",
7682 .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
7683 .bus_num = 0,
7684 - .chip_select = 5,
7685 - .controller_data = &mmc_spi_chip_info,
7686 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
7687 + .platform_data = NULL,
7688 + .controller_data = &spi_mmc_chip_info,
7689 .mode = SPI_MODE_3,
7690 },
7691 #endif
7692 @@ -299,8 +309,10 @@
7693 };
7694 #endif
7695
7696 +#ifdef CONFIG_I2C_BOARDINFO
7697 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
7698 };
7699 +#endif
7700
7701 static const unsigned int cclk_vlev_datasheet[] =
7702 {
7703 @@ -378,8 +390,10 @@
7704
7705 printk(KERN_INFO "%s(): registering device resources\n", __func__);
7706
7707 +#ifdef CONFIG_I2C_BOARDINFO
7708 i2c_register_board_info(0, bfin_i2c_board_info,
7709 ARRAY_SIZE(bfin_i2c_board_info));
7710 +#endif
7711
7712 ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
7713 if (ret < 0)
7714 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c
7715 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c 2009-05-10 22:04:41.000000000 +0200
7716 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/cm_bf533.c 2009-05-10 23:48:28.000000000 +0200
7717 @@ -96,9 +96,9 @@
7718 };
7719 #endif
7720
7721 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7722 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
7723 - .enable_dma = 0,
7724 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7725 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
7726 + .enable_dma = 1,
7727 .bits_per_word = 8,
7728 };
7729 #endif
7730 @@ -138,13 +138,23 @@
7731 },
7732 #endif
7733
7734 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7735 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7736 {
7737 - .modalias = "mmc_spi",
7738 + .modalias = "spi_mmc_dummy",
7739 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7740 .bus_num = 0,
7741 - .chip_select = 5,
7742 - .controller_data = &mmc_spi_chip_info,
7743 + .chip_select = 0,
7744 + .platform_data = NULL,
7745 + .controller_data = &spi_mmc_chip_info,
7746 + .mode = SPI_MODE_3,
7747 + },
7748 + {
7749 + .modalias = "spi_mmc",
7750 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
7751 + .bus_num = 0,
7752 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
7753 + .platform_data = NULL,
7754 + .controller_data = &spi_mmc_chip_info,
7755 .mode = SPI_MODE_3,
7756 },
7757 #endif
7758 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/generic_board.c
7759 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/generic_board.c 1970-01-01 01:00:00.000000000 +0100
7760 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/generic_board.c 2009-05-10 23:48:28.000000000 +0200
7761 @@ -0,0 +1,126 @@
7762 +/*
7763 + * File: arch/blackfin/mach-bf533/generic_board.c
7764 + * Based on: arch/blackfin/mach-bf533/ezkit.c
7765 + * Author: Aidan Williams <aidan@nicta.com.au>
7766 + *
7767 + * Created: 2005
7768 + * Description:
7769 + *
7770 + * Modified:
7771 + * Copyright 2005 National ICT Australia (NICTA)
7772 + * Copyright 2004-2006 Analog Devices Inc.
7773 + *
7774 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
7775 + *
7776 + * This program is free software; you can redistribute it and/or modify
7777 + * it under the terms of the GNU General Public License as published by
7778 + * the Free Software Foundation; either version 2 of the License, or
7779 + * (at your option) any later version.
7780 + *
7781 + * This program is distributed in the hope that it will be useful,
7782 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
7783 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7784 + * GNU General Public License for more details.
7785 + *
7786 + * You should have received a copy of the GNU General Public License
7787 + * along with this program; if not, see the file COPYING, or write
7788 + * to the Free Software Foundation, Inc.,
7789 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
7790 + */
7791 +
7792 +#include <linux/device.h>
7793 +#include <linux/platform_device.h>
7794 +#include <linux/irq.h>
7795 +
7796 +/*
7797 + * Name the Board for the /proc/cpuinfo
7798 + */
7799 +const char bfin_board_name[] = "UNKNOWN BOARD";
7800 +
7801 +#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
7802 +static struct platform_device rtc_device = {
7803 + .name = "rtc-bfin",
7804 + .id = -1,
7805 +};
7806 +#endif
7807 +
7808 +/*
7809 + * Driver needs to know address, irq and flag pin.
7810 + */
7811 +#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
7812 +static struct resource smc91x_resources[] = {
7813 + {
7814 + .start = 0x20300300,
7815 + .end = 0x20300300 + 16,
7816 + .flags = IORESOURCE_MEM,
7817 + }, {
7818 + .start = IRQ_PROG_INTB,
7819 + .end = IRQ_PROG_INTB,
7820 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
7821 + }, {
7822 + .start = IRQ_PF7,
7823 + .end = IRQ_PF7,
7824 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
7825 + },
7826 +};
7827 +
7828 +static struct platform_device smc91x_device = {
7829 + .name = "smc91x",
7830 + .id = 0,
7831 + .num_resources = ARRAY_SIZE(smc91x_resources),
7832 + .resource = smc91x_resources,
7833 +};
7834 +#endif
7835 +
7836 +#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
7837 +#ifdef CONFIG_BFIN_SIR0
7838 +static struct resource bfin_sir0_resources[] = {
7839 + {
7840 + .start = 0xFFC00400,
7841 + .end = 0xFFC004FF,
7842 + .flags = IORESOURCE_MEM,
7843 + },
7844 + {
7845 + .start = IRQ_UART0_RX,
7846 + .end = IRQ_UART0_RX+1,
7847 + .flags = IORESOURCE_IRQ,
7848 + },
7849 + {
7850 + .start = CH_UART0_RX,
7851 + .end = CH_UART0_RX+1,
7852 + .flags = IORESOURCE_DMA,
7853 + },
7854 +};
7855 +
7856 +static struct platform_device bfin_sir0_device = {
7857 + .name = "bfin_sir",
7858 + .id = 0,
7859 + .num_resources = ARRAY_SIZE(bfin_sir0_resources),
7860 + .resource = bfin_sir0_resources,
7861 +};
7862 +#endif
7863 +#endif
7864 +
7865 +static struct platform_device *generic_board_devices[] __initdata = {
7866 +#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
7867 + &rtc_device,
7868 +#endif
7869 +
7870 +#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
7871 + &smc91x_device,
7872 +#endif
7873 +
7874 +#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
7875 +#ifdef CONFIG_BFIN_SIR0
7876 + &bfin_sir0_device,
7877 +#endif
7878 +#endif
7879 +};
7880 +
7881 +static int __init generic_board_init(void)
7882 +{
7883 + printk(KERN_INFO "%s(): registering device resources\n", __func__);
7884 + return platform_add_devices(generic_board_devices, ARRAY_SIZE(generic_board_devices));
7885 +}
7886 +
7887 +arch_initcall(generic_board_init);
7888 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/ip0x.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/ip0x.c
7889 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/ip0x.c 2009-05-10 22:04:41.000000000 +0200
7890 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/ip0x.c 2009-05-10 23:48:28.000000000 +0200
7891 @@ -127,8 +127,8 @@
7892 #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
7893 /* all SPI peripherals info goes here */
7894
7895 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7896 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
7897 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7898 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
7899 /*
7900 * CPOL (Clock Polarity)
7901 * 0 - Active high SCK
7902 @@ -152,13 +152,14 @@
7903 /* Notice: for blackfin, the speed_hz is the value of register
7904 * SPI_BAUD, not the real baudrate */
7905 static struct spi_board_info bfin_spi_board_info[] __initdata = {
7906 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
7907 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
7908 {
7909 - .modalias = "mmc_spi",
7910 + .modalias = "spi_mmc",
7911 .max_speed_hz = 2,
7912 .bus_num = 1,
7913 - .chip_select = 5,
7914 - .controller_data = &mmc_spi_chip_info,
7915 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
7916 + .platform_data = NULL,
7917 + .controller_data = &spi_mmc_chip_info,
7918 },
7919 #endif
7920 };
7921 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Kconfig
7922 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Kconfig 2009-05-10 22:04:41.000000000 +0200
7923 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Kconfig 2009-05-10 23:48:28.000000000 +0200
7924 @@ -38,4 +38,9 @@
7925 help
7926 Core support for IP04/IP04 open hardware IP-PBX.
7927
7928 +config GENERIC_BF533_BOARD
7929 + bool "Generic"
7930 + help
7931 + Generic or Custom board support.
7932 +
7933 endchoice
7934 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Makefile
7935 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/Makefile 2009-05-10 22:04:41.000000000 +0200
7936 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/Makefile 2009-05-10 23:48:28.000000000 +0200
7937 @@ -2,6 +2,7 @@
7938 # arch/blackfin/mach-bf533/boards/Makefile
7939 #
7940
7941 +obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o
7942 obj-$(CONFIG_BFIN533_STAMP) += stamp.o
7943 obj-$(CONFIG_BFIN532_IP0X) += ip0x.o
7944 obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o
7945 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/stamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/stamp.c
7946 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/boards/stamp.c 2009-05-10 22:04:41.000000000 +0200
7947 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/boards/stamp.c 2009-05-10 23:48:28.000000000 +0200
7948 @@ -441,6 +441,7 @@
7949 };
7950 #endif
7951
7952 +#ifdef CONFIG_I2C_BOARDINFO
7953 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
7954 #if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
7955 {
7956 @@ -460,6 +461,7 @@
7957 },
7958 #endif
7959 };
7960 +#endif
7961
7962 static const unsigned int cclk_vlev_datasheet[] =
7963 {
7964 @@ -548,8 +550,10 @@
7965
7966 printk(KERN_INFO "%s(): registering device resources\n", __func__);
7967
7968 +#ifdef CONFIG_I2C_BOARDINFO
7969 i2c_register_board_info(0, bfin_i2c_board_info,
7970 ARRAY_SIZE(bfin_i2c_board_info));
7971 +#endif
7972
7973 ret = platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
7974 if (ret < 0)
7975 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h
7976 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h 2009-05-10 22:04:41.000000000 +0200
7977 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
7978 @@ -2,7 +2,7 @@
7979 * File: include/asm-blackfin/mach-bf533/anomaly.h
7980 * Bugs: Enter bugs at http://blackfin.uclinux.org/
7981 *
7982 - * Copyright (C) 2004-2009 Analog Devices Inc.
7983 + * Copyright (C) 2004-2008 Analog Devices Inc.
7984 * Licensed under the GPL-2 or later.
7985 */
7986
7987 @@ -160,7 +160,7 @@
7988 #define ANOMALY_05000301 (__SILICON_REVISION__ < 6)
7989 /* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
7990 #define ANOMALY_05000302 (__SILICON_REVISION__ < 5)
7991 -/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
7992 +/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
7993 #define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
7994 /* New Feature: Additional PPI Frame Sync Sampling Options (Not Available On Older Silicon) */
7995 #define ANOMALY_05000306 (__SILICON_REVISION__ < 5)
7996 @@ -278,12 +278,9 @@
7997 #define ANOMALY_05000266 (0)
7998 #define ANOMALY_05000323 (0)
7999 #define ANOMALY_05000353 (1)
8000 -#define ANOMALY_05000380 (0)
8001 #define ANOMALY_05000386 (1)
8002 #define ANOMALY_05000412 (0)
8003 #define ANOMALY_05000432 (0)
8004 #define ANOMALY_05000435 (0)
8005 -#define ANOMALY_05000447 (0)
8006 -#define ANOMALY_05000448 (0)
8007
8008 #endif
8009 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h
8010 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:41.000000000 +0200
8011 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
8012 @@ -134,7 +134,7 @@
8013 CH_UART_TX,
8014 CH_UART_RX,
8015 #endif
8016 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
8017 +#ifdef CONFIG_BFIN_UART0_CTSRTS
8018 CONFIG_UART0_CTS_PIN,
8019 CONFIG_UART0_RTS_PIN,
8020 #endif
8021 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h
8022 --- linux-2.6.29.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
8023 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf533/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
8024 @@ -54,11 +54,14 @@
8025 #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(GPIO_PF2))
8026 #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PF1))
8027 #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PF0))
8028 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
8029
8030 #define P_TMR2 (P_DONTCARE)
8031 #define P_TMR1 (P_DONTCARE)
8032 #define P_TMR0 (P_DONTCARE)
8033 #define P_TMRCLK (P_DEFINED | P_IDENT(GPIO_PF1))
8034
8035 +
8036 +
8037 +
8038 +
8039 #endif /* _MACH_PORTMUX_H_ */
8040 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c
8041 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c 2009-05-10 22:04:40.000000000 +0200
8042 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/cm_bf537.c 2009-05-10 23:48:28.000000000 +0200
8043 @@ -108,9 +108,9 @@
8044 };
8045 #endif
8046
8047 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
8048 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
8049 - .enable_dma = 0,
8050 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8051 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
8052 + .enable_dma = 1,
8053 .bits_per_word = 8,
8054 };
8055 #endif
8056 @@ -160,13 +160,23 @@
8057 },
8058 #endif
8059
8060 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
8061 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8062 {
8063 - .modalias = "mmc_spi",
8064 - .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
8065 + .modalias = "spi_mmc_dummy",
8066 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8067 .bus_num = 0,
8068 - .chip_select = 1,
8069 - .controller_data = &mmc_spi_chip_info,
8070 + .chip_select = 7,
8071 + .platform_data = NULL,
8072 + .controller_data = &spi_mmc_chip_info,
8073 + .mode = SPI_MODE_3,
8074 + },
8075 + {
8076 + .modalias = "spi_mmc",
8077 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8078 + .bus_num = 0,
8079 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
8080 + .platform_data = NULL,
8081 + .controller_data = &spi_mmc_chip_info,
8082 .mode = SPI_MODE_3,
8083 },
8084 #endif
8085 @@ -469,13 +479,8 @@
8086 #endif
8087
8088 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8089 -static struct platform_device bfin_mii_bus = {
8090 - .name = "bfin_mii_bus",
8091 -};
8092 -
8093 static struct platform_device bfin_mac_device = {
8094 .name = "bfin_mac",
8095 - .dev.platform_data = &bfin_mii_bus,
8096 };
8097 #endif
8098
8099 @@ -586,7 +591,6 @@
8100 #endif
8101
8102 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8103 - &bfin_mii_bus,
8104 &bfin_mac_device,
8105 #endif
8106
8107 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/generic_board.c
8108 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/generic_board.c 1970-01-01 01:00:00.000000000 +0100
8109 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/generic_board.c 2009-05-10 23:48:28.000000000 +0200
8110 @@ -0,0 +1,739 @@
8111 +/*
8112 + * File: arch/blackfin/mach-bf537/boards/generic_board.c
8113 + * Based on: arch/blackfin/mach-bf533/boards/ezkit.c
8114 + * Author: Aidan Williams <aidan@nicta.com.au>
8115 + *
8116 + * Created:
8117 + * Description:
8118 + *
8119 + * Modified:
8120 + * Copyright 2005 National ICT Australia (NICTA)
8121 + * Copyright 2004-2008 Analog Devices Inc.
8122 + *
8123 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
8124 + *
8125 + * This program is free software; you can redistribute it and/or modify
8126 + * it under the terms of the GNU General Public License as published by
8127 + * the Free Software Foundation; either version 2 of the License, or
8128 + * (at your option) any later version.
8129 + *
8130 + * This program is distributed in the hope that it will be useful,
8131 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
8132 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8133 + * GNU General Public License for more details.
8134 + *
8135 + * You should have received a copy of the GNU General Public License
8136 + * along with this program; if not, see the file COPYING, or write
8137 + * to the Free Software Foundation, Inc.,
8138 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
8139 + */
8140 +
8141 +#include <linux/device.h>
8142 +#include <linux/etherdevice.h>
8143 +#include <linux/platform_device.h>
8144 +#include <linux/mtd/mtd.h>
8145 +#include <linux/mtd/partitions.h>
8146 +#include <linux/spi/spi.h>
8147 +#include <linux/spi/flash.h>
8148 +#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
8149 +#include <linux/usb/isp1362.h>
8150 +#endif
8151 +#include <linux/irq.h>
8152 +#include <linux/interrupt.h>
8153 +#include <linux/usb/sl811.h>
8154 +#include <asm/dma.h>
8155 +#include <asm/bfin5xx_spi.h>
8156 +#include <asm/reboot.h>
8157 +#include <asm/portmux.h>
8158 +#include <linux/spi/ad7877.h>
8159 +
8160 +/*
8161 + * Name the Board for the /proc/cpuinfo
8162 + */
8163 +const char bfin_board_name[] = "UNKNOWN BOARD";
8164 +
8165 +/*
8166 + * Driver needs to know address, irq and flag pin.
8167 + */
8168 +
8169 +#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
8170 +#include <linux/usb/isp1760.h>
8171 +static struct resource bfin_isp1760_resources[] = {
8172 + [0] = {
8173 + .start = 0x203C0000,
8174 + .end = 0x203C0000 + 0x000fffff,
8175 + .flags = IORESOURCE_MEM,
8176 + },
8177 + [1] = {
8178 + .start = IRQ_PF7,
8179 + .end = IRQ_PF7,
8180 + .flags = IORESOURCE_IRQ,
8181 + },
8182 +};
8183 +
8184 +static struct isp1760_platform_data isp1760_priv = {
8185 + .is_isp1761 = 0,
8186 + .port1_disable = 0,
8187 + .bus_width_16 = 1,
8188 + .port1_otg = 0,
8189 + .analog_oc = 0,
8190 + .dack_polarity_high = 0,
8191 + .dreq_polarity_high = 0,
8192 +};
8193 +
8194 +static struct platform_device bfin_isp1760_device = {
8195 + .name = "isp1760-hcd",
8196 + .id = 0,
8197 + .dev = {
8198 + .platform_data = &isp1760_priv,
8199 + },
8200 + .num_resources = ARRAY_SIZE(bfin_isp1760_resources),
8201 + .resource = bfin_isp1760_resources,
8202 +};
8203 +#endif
8204 +
8205 +#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
8206 +static struct resource bfin_pcmcia_cf_resources[] = {
8207 + {
8208 + .start = 0x20310000, /* IO PORT */
8209 + .end = 0x20312000,
8210 + .flags = IORESOURCE_MEM,
8211 + }, {
8212 + .start = 0x20311000, /* Attribute Memory */
8213 + .end = 0x20311FFF,
8214 + .flags = IORESOURCE_MEM,
8215 + }, {
8216 + .start = IRQ_PF4,
8217 + .end = IRQ_PF4,
8218 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
8219 + }, {
8220 + .start = 6, /* Card Detect PF6 */
8221 + .end = 6,
8222 + .flags = IORESOURCE_IRQ,
8223 + },
8224 +};
8225 +
8226 +static struct platform_device bfin_pcmcia_cf_device = {
8227 + .name = "bfin_cf_pcmcia",
8228 + .id = -1,
8229 + .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
8230 + .resource = bfin_pcmcia_cf_resources,
8231 +};
8232 +#endif
8233 +
8234 +#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
8235 +static struct platform_device rtc_device = {
8236 + .name = "rtc-bfin",
8237 + .id = -1,
8238 +};
8239 +#endif
8240 +
8241 +#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
8242 +static struct resource smc91x_resources[] = {
8243 + {
8244 + .name = "smc91x-regs",
8245 + .start = 0x20300300,
8246 + .end = 0x20300300 + 16,
8247 + .flags = IORESOURCE_MEM,
8248 + }, {
8249 +
8250 + .start = IRQ_PF7,
8251 + .end = IRQ_PF7,
8252 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
8253 + },
8254 +};
8255 +static struct platform_device smc91x_device = {
8256 + .name = "smc91x",
8257 + .id = 0,
8258 + .num_resources = ARRAY_SIZE(smc91x_resources),
8259 + .resource = smc91x_resources,
8260 +};
8261 +#endif
8262 +
8263 +#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
8264 +static struct resource dm9000_resources[] = {
8265 + [0] = {
8266 + .start = 0x203FB800,
8267 + .end = 0x203FB800 + 1,
8268 + .flags = IORESOURCE_MEM,
8269 + },
8270 + [1] = {
8271 + .start = 0x203FB800 + 4,
8272 + .end = 0x203FB800 + 5,
8273 + .flags = IORESOURCE_MEM,
8274 + },
8275 + [2] = {
8276 + .start = IRQ_PF9,
8277 + .end = IRQ_PF9,
8278 + .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
8279 + },
8280 +};
8281 +
8282 +static struct platform_device dm9000_device = {
8283 + .name = "dm9000",
8284 + .id = -1,
8285 + .num_resources = ARRAY_SIZE(dm9000_resources),
8286 + .resource = dm9000_resources,
8287 +};
8288 +#endif
8289 +
8290 +#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
8291 +static struct resource sl811_hcd_resources[] = {
8292 + {
8293 + .start = 0x20340000,
8294 + .end = 0x20340000,
8295 + .flags = IORESOURCE_MEM,
8296 + }, {
8297 + .start = 0x20340004,
8298 + .end = 0x20340004,
8299 + .flags = IORESOURCE_MEM,
8300 + }, {
8301 + .start = CONFIG_USB_SL811_BFIN_IRQ,
8302 + .end = CONFIG_USB_SL811_BFIN_IRQ,
8303 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
8304 + },
8305 +};
8306 +
8307 +#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
8308 +void sl811_port_power(struct device *dev, int is_on)
8309 +{
8310 + gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
8311 + gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS, is_on);
8312 +
8313 +}
8314 +#endif
8315 +
8316 +static struct sl811_platform_data sl811_priv = {
8317 + .potpg = 10,
8318 + .power = 250, /* == 500mA */
8319 +#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
8320 + .port_power = &sl811_port_power,
8321 +#endif
8322 +};
8323 +
8324 +static struct platform_device sl811_hcd_device = {
8325 + .name = "sl811-hcd",
8326 + .id = 0,
8327 + .dev = {
8328 + .platform_data = &sl811_priv,
8329 + },
8330 + .num_resources = ARRAY_SIZE(sl811_hcd_resources),
8331 + .resource = sl811_hcd_resources,
8332 +};
8333 +#endif
8334 +
8335 +#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
8336 +static struct resource isp1362_hcd_resources[] = {
8337 + {
8338 + .start = 0x20360000,
8339 + .end = 0x20360000,
8340 + .flags = IORESOURCE_MEM,
8341 + }, {
8342 + .start = 0x20360004,
8343 + .end = 0x20360004,
8344 + .flags = IORESOURCE_MEM,
8345 + }, {
8346 + .start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
8347 + .end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
8348 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
8349 + },
8350 +};
8351 +
8352 +static struct isp1362_platform_data isp1362_priv = {
8353 + .sel15Kres = 1,
8354 + .clknotstop = 0,
8355 + .oc_enable = 0,
8356 + .int_act_high = 0,
8357 + .int_edge_triggered = 0,
8358 + .remote_wakeup_connected = 0,
8359 + .no_power_switching = 1,
8360 + .power_switching_mode = 0,
8361 +};
8362 +
8363 +static struct platform_device isp1362_hcd_device = {
8364 + .name = "isp1362-hcd",
8365 + .id = 0,
8366 + .dev = {
8367 + .platform_data = &isp1362_priv,
8368 + },
8369 + .num_resources = ARRAY_SIZE(isp1362_hcd_resources),
8370 + .resource = isp1362_hcd_resources,
8371 +};
8372 +#endif
8373 +
8374 +#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8375 +static struct platform_device bfin_mac_device = {
8376 + .name = "bfin_mac",
8377 +};
8378 +#endif
8379 +
8380 +#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
8381 +static struct resource net2272_bfin_resources[] = {
8382 + {
8383 + .start = 0x20300000,
8384 + .end = 0x20300000 + 0x100,
8385 + .flags = IORESOURCE_MEM,
8386 + }, {
8387 + .start = IRQ_PF7,
8388 + .end = IRQ_PF7,
8389 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
8390 + },
8391 +};
8392 +
8393 +static struct platform_device net2272_bfin_device = {
8394 + .name = "net2272",
8395 + .id = -1,
8396 + .num_resources = ARRAY_SIZE(net2272_bfin_resources),
8397 + .resource = net2272_bfin_resources,
8398 +};
8399 +#endif
8400 +
8401 +#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
8402 +/* all SPI peripherals info goes here */
8403 +
8404 +#if defined(CONFIG_MTD_M25P80) \
8405 + || defined(CONFIG_MTD_M25P80_MODULE)
8406 +static struct mtd_partition bfin_spi_flash_partitions[] = {
8407 + {
8408 + .name = "bootloader(spi)",
8409 + .size = 0x00020000,
8410 + .offset = 0,
8411 + .mask_flags = MTD_CAP_ROM
8412 + }, {
8413 + .name = "linux kernel(spi)",
8414 + .size = 0xe0000,
8415 + .offset = 0x20000
8416 + }, {
8417 + .name = "file system(spi)",
8418 + .size = 0x700000,
8419 + .offset = 0x00100000,
8420 + }
8421 +};
8422 +
8423 +static struct flash_platform_data bfin_spi_flash_data = {
8424 + .name = "m25p80",
8425 + .parts = bfin_spi_flash_partitions,
8426 + .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
8427 + .type = "m25p64",
8428 +};
8429 +
8430 +/* SPI flash chip (m25p64) */
8431 +static struct bfin5xx_spi_chip spi_flash_chip_info = {
8432 + .enable_dma = 0, /* use dma transfer with this chip*/
8433 + .bits_per_word = 8,
8434 +};
8435 +#endif
8436 +
8437 +#if defined(CONFIG_SPI_ADC_BF533) \
8438 + || defined(CONFIG_SPI_ADC_BF533_MODULE)
8439 +/* SPI ADC chip */
8440 +static struct bfin5xx_spi_chip spi_adc_chip_info = {
8441 + .enable_dma = 1, /* use dma transfer with this chip*/
8442 + .bits_per_word = 16,
8443 +};
8444 +#endif
8445 +
8446 +#if defined(CONFIG_SND_BLACKFIN_AD1836) \
8447 + || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
8448 +static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
8449 + .enable_dma = 0,
8450 + .bits_per_word = 16,
8451 +};
8452 +#endif
8453 +
8454 +#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
8455 +static struct bfin5xx_spi_chip ad9960_spi_chip_info = {
8456 + .enable_dma = 0,
8457 + .bits_per_word = 16,
8458 +};
8459 +#endif
8460 +
8461 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8462 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
8463 + .enable_dma = 1,
8464 + .bits_per_word = 8,
8465 +};
8466 +#endif
8467 +
8468 +#if defined(CONFIG_PBX)
8469 +static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
8470 + .ctl_reg = 0x4, /* send zero */
8471 + .enable_dma = 0,
8472 + .bits_per_word = 8,
8473 + .cs_change_per_word = 1,
8474 +};
8475 +#endif
8476 +
8477 +#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
8478 +static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
8479 + .enable_dma = 0,
8480 + .bits_per_word = 16,
8481 +};
8482 +
8483 +static const struct ad7877_platform_data bfin_ad7877_ts_info = {
8484 + .model = 7877,
8485 + .vref_delay_usecs = 50, /* internal, no capacitor */
8486 + .x_plate_ohms = 419,
8487 + .y_plate_ohms = 486,
8488 + .pressure_max = 1000,
8489 + .pressure_min = 0,
8490 + .stopacq_polarity = 1,
8491 + .first_conversion_delay = 3,
8492 + .acquisition_time = 1,
8493 + .averaging = 1,
8494 + .pen_down_acc_interval = 1,
8495 +};
8496 +#endif
8497 +
8498 +static struct spi_board_info bfin_spi_board_info[] __initdata = {
8499 +#if defined(CONFIG_MTD_M25P80) \
8500 + || defined(CONFIG_MTD_M25P80_MODULE)
8501 + {
8502 + /* the modalias must be the same as spi device driver name */
8503 + .modalias = "m25p80", /* Name of spi_driver for this device */
8504 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8505 + .bus_num = 0, /* Framework bus number */
8506 + .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
8507 + .platform_data = &bfin_spi_flash_data,
8508 + .controller_data = &spi_flash_chip_info,
8509 + .mode = SPI_MODE_3,
8510 + },
8511 +#endif
8512 +
8513 +#if defined(CONFIG_SPI_ADC_BF533) \
8514 + || defined(CONFIG_SPI_ADC_BF533_MODULE)
8515 + {
8516 + .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
8517 + .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
8518 + .bus_num = 0, /* Framework bus number */
8519 + .chip_select = 1, /* Framework chip select. */
8520 + .platform_data = NULL, /* No spi_driver specific config */
8521 + .controller_data = &spi_adc_chip_info,
8522 + },
8523 +#endif
8524 +
8525 +#if defined(CONFIG_SND_BLACKFIN_AD1836) \
8526 + || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
8527 + {
8528 + .modalias = "ad1836-spi",
8529 + .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
8530 + .bus_num = 0,
8531 + .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
8532 + .controller_data = &ad1836_spi_chip_info,
8533 + },
8534 +#endif
8535 +#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
8536 + {
8537 + .modalias = "ad9960-spi",
8538 + .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
8539 + .bus_num = 0,
8540 + .chip_select = 1,
8541 + .controller_data = &ad9960_spi_chip_info,
8542 + },
8543 +#endif
8544 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8545 + {
8546 + .modalias = "spi_mmc_dummy",
8547 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8548 + .bus_num = 0,
8549 + .chip_select = 0,
8550 + .platform_data = NULL,
8551 + .controller_data = &spi_mmc_chip_info,
8552 + .mode = SPI_MODE_3,
8553 + },
8554 + {
8555 + .modalias = "spi_mmc",
8556 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8557 + .bus_num = 0,
8558 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
8559 + .platform_data = NULL,
8560 + .controller_data = &spi_mmc_chip_info,
8561 + .mode = SPI_MODE_3,
8562 + },
8563 +#endif
8564 +#if defined(CONFIG_PBX)
8565 + {
8566 + .modalias = "fxs-spi",
8567 + .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
8568 + .bus_num = 0,
8569 + .chip_select = 8 - CONFIG_J11_JUMPER,
8570 + .controller_data = &spi_si3xxx_chip_info,
8571 + .mode = SPI_MODE_3,
8572 + },
8573 + {
8574 + .modalias = "fxo-spi",
8575 + .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
8576 + .bus_num = 0,
8577 + .chip_select = 8 - CONFIG_J19_JUMPER,
8578 + .controller_data = &spi_si3xxx_chip_info,
8579 + .mode = SPI_MODE_3,
8580 + },
8581 +#endif
8582 +#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
8583 + {
8584 + .modalias = "ad7877",
8585 + .platform_data = &bfin_ad7877_ts_info,
8586 + .irq = IRQ_PF6,
8587 + .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
8588 + .bus_num = 0,
8589 + .chip_select = 1,
8590 + .controller_data = &spi_ad7877_chip_info,
8591 + },
8592 +#endif
8593 +};
8594 +
8595 +/* SPI controller data */
8596 +static struct bfin5xx_spi_master bfin_spi0_info = {
8597 + .num_chipselect = 8,
8598 + .enable_dma = 1, /* master has the ability to do dma transfer */
8599 + .pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
8600 +};
8601 +
8602 +/* SPI (0) */
8603 +static struct resource bfin_spi0_resource[] = {
8604 + [0] = {
8605 + .start = SPI0_REGBASE,
8606 + .end = SPI0_REGBASE + 0xFF,
8607 + .flags = IORESOURCE_MEM,
8608 + },
8609 + [1] = {
8610 + .start = CH_SPI,
8611 + .end = CH_SPI,
8612 + .flags = IORESOURCE_IRQ,
8613 + },
8614 +};
8615 +
8616 +static struct platform_device bfin_spi0_device = {
8617 + .name = "bfin-spi",
8618 + .id = 0, /* Bus number */
8619 + .num_resources = ARRAY_SIZE(bfin_spi0_resource),
8620 + .resource = bfin_spi0_resource,
8621 + .dev = {
8622 + .platform_data = &bfin_spi0_info, /* Passed to driver */
8623 + },
8624 +};
8625 +#endif /* spi master and devices */
8626 +
8627 +#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
8628 +static struct platform_device bfin_fb_device = {
8629 + .name = "bf537-lq035",
8630 +};
8631 +#endif
8632 +
8633 +#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
8634 +static struct platform_device bfin_fb_adv7393_device = {
8635 + .name = "bfin-adv7393",
8636 +};
8637 +#endif
8638 +
8639 +#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
8640 +static struct resource bfin_uart_resources[] = {
8641 + {
8642 + .start = 0xFFC00400,
8643 + .end = 0xFFC004FF,
8644 + .flags = IORESOURCE_MEM,
8645 + }, {
8646 + .start = 0xFFC02000,
8647 + .end = 0xFFC020FF,
8648 + .flags = IORESOURCE_MEM,
8649 + },
8650 +};
8651 +
8652 +static struct platform_device bfin_uart_device = {
8653 + .name = "bfin-uart",
8654 + .id = 1,
8655 + .num_resources = ARRAY_SIZE(bfin_uart_resources),
8656 + .resource = bfin_uart_resources,
8657 +};
8658 +#endif
8659 +
8660 +#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
8661 +#ifdef CONFIG_BFIN_SIR0
8662 +static struct resource bfin_sir0_resources[] = {
8663 + {
8664 + .start = 0xFFC00400,
8665 + .end = 0xFFC004FF,
8666 + .flags = IORESOURCE_MEM,
8667 + },
8668 + {
8669 + .start = IRQ_UART0_RX,
8670 + .end = IRQ_UART0_RX+1,
8671 + .flags = IORESOURCE_IRQ,
8672 + },
8673 + {
8674 + .start = CH_UART0_RX,
8675 + .end = CH_UART0_RX+1,
8676 + .flags = IORESOURCE_DMA,
8677 + },
8678 +};
8679 +
8680 +static struct platform_device bfin_sir0_device = {
8681 + .name = "bfin_sir",
8682 + .id = 0,
8683 + .num_resources = ARRAY_SIZE(bfin_sir0_resources),
8684 + .resource = bfin_sir0_resources,
8685 +};
8686 +#endif
8687 +#ifdef CONFIG_BFIN_SIR1
8688 +static struct resource bfin_sir1_resources[] = {
8689 + {
8690 + .start = 0xFFC02000,
8691 + .end = 0xFFC020FF,
8692 + .flags = IORESOURCE_MEM,
8693 + },
8694 + {
8695 + .start = IRQ_UART1_RX,
8696 + .end = IRQ_UART1_RX+1,
8697 + .flags = IORESOURCE_IRQ,
8698 + },
8699 + {
8700 + .start = CH_UART1_RX,
8701 + .end = CH_UART1_RX+1,
8702 + .flags = IORESOURCE_DMA,
8703 + },
8704 +};
8705 +
8706 +static struct platform_device bfin_sir1_device = {
8707 + .name = "bfin_sir",
8708 + .id = 1,
8709 + .num_resources = ARRAY_SIZE(bfin_sir1_resources),
8710 + .resource = bfin_sir1_resources,
8711 +};
8712 +#endif
8713 +#endif
8714 +
8715 +#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
8716 +static struct resource bfin_twi0_resource[] = {
8717 + [0] = {
8718 + .start = TWI0_REGBASE,
8719 + .end = TWI0_REGBASE + 0xFF,
8720 + .flags = IORESOURCE_MEM,
8721 + },
8722 + [1] = {
8723 + .start = IRQ_TWI,
8724 + .end = IRQ_TWI,
8725 + .flags = IORESOURCE_IRQ,
8726 + },
8727 +};
8728 +
8729 +static struct platform_device i2c_bfin_twi_device = {
8730 + .name = "i2c-bfin-twi",
8731 + .id = 0,
8732 + .num_resources = ARRAY_SIZE(bfin_twi0_resource),
8733 + .resource = bfin_twi0_resource,
8734 +};
8735 +#endif
8736 +
8737 +#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
8738 +static struct platform_device bfin_sport0_uart_device = {
8739 + .name = "bfin-sport-uart",
8740 + .id = 0,
8741 +};
8742 +
8743 +static struct platform_device bfin_sport1_uart_device = {
8744 + .name = "bfin-sport-uart",
8745 + .id = 1,
8746 +};
8747 +#endif
8748 +
8749 +static struct platform_device *stamp_devices[] __initdata = {
8750 +#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
8751 + &bfin_pcmcia_cf_device,
8752 +#endif
8753 +
8754 +#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
8755 + &rtc_device,
8756 +#endif
8757 +
8758 +#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
8759 + &sl811_hcd_device,
8760 +#endif
8761 +
8762 +#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
8763 + &isp1362_hcd_device,
8764 +#endif
8765 +
8766 +#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
8767 + &smc91x_device,
8768 +#endif
8769 +
8770 +#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
8771 + &dm9000_device,
8772 +#endif
8773 +
8774 +#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8775 + &bfin_mac_device,
8776 +#endif
8777 +
8778 +#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
8779 + &net2272_bfin_device,
8780 +#endif
8781 +
8782 +#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
8783 + &bfin_isp1760_device,
8784 +#endif
8785 +
8786 +#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
8787 + &bfin_spi0_device,
8788 +#endif
8789 +
8790 +#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
8791 + &bfin_fb_device,
8792 +#endif
8793 +
8794 +#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
8795 + &bfin_fb_adv7393_device,
8796 +#endif
8797 +
8798 +#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
8799 + &bfin_uart_device,
8800 +#endif
8801 +
8802 +#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
8803 +#ifdef CONFIG_BFIN_SIR0
8804 + &bfin_sir0_device,
8805 +#endif
8806 +#ifdef CONFIG_BFIN_SIR1
8807 + &bfin_sir1_device,
8808 +#endif
8809 +#endif
8810 +
8811 +#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
8812 + &i2c_bfin_twi_device,
8813 +#endif
8814 +
8815 +#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
8816 + &bfin_sport0_uart_device,
8817 + &bfin_sport1_uart_device,
8818 +#endif
8819 +};
8820 +
8821 +static int __init stamp_init(void)
8822 +{
8823 + printk(KERN_INFO "%s(): registering device resources\n", __func__);
8824 + platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
8825 +#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
8826 + spi_register_board_info(bfin_spi_board_info,
8827 + ARRAY_SIZE(bfin_spi_board_info));
8828 +#endif
8829 +
8830 + return 0;
8831 +}
8832 +
8833 +arch_initcall(stamp_init);
8834 +
8835 +void native_machine_restart(char *cmd)
8836 +{
8837 + /* workaround reboot hang when booting from SPI */
8838 + if ((bfin_read_SYSCR() & 0x7) == 0x3)
8839 + bfin_gpio_reset_spi0_ssel1();
8840 +}
8841 +
8842 +#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8843 +void bfin_get_ether_addr(char *addr)
8844 +{
8845 + random_ether_addr(addr);
8846 + printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
8847 +}
8848 +EXPORT_SYMBOL(bfin_get_ether_addr);
8849 +#endif
8850 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Kconfig
8851 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Kconfig 2009-05-10 22:04:40.000000000 +0200
8852 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Kconfig 2009-05-10 23:48:28.000000000 +0200
8853 @@ -33,4 +33,9 @@
8854 help
8855 Board supply package for CSP Minotaur
8856
8857 +config GENERIC_BF537_BOARD
8858 + bool "Generic"
8859 + help
8860 + Generic or Custom board support.
8861 +
8862 endchoice
8863 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Makefile
8864 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/Makefile 2009-05-10 22:04:40.000000000 +0200
8865 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/Makefile 2009-05-10 23:48:28.000000000 +0200
8866 @@ -2,6 +2,7 @@
8867 # arch/blackfin/mach-bf537/boards/Makefile
8868 #
8869
8870 +obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o
8871 obj-$(CONFIG_BFIN537_STAMP) += stamp.o
8872 obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o
8873 obj-$(CONFIG_BFIN537_BLUETECHNIX_TCM) += tcm_bf537.o
8874 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/minotaur.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/minotaur.c
8875 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/minotaur.c 2009-05-10 22:04:40.000000000 +0200
8876 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/minotaur.c 2009-05-10 23:48:28.000000000 +0200
8877 @@ -61,13 +61,8 @@
8878 #endif
8879
8880 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8881 -static struct platform_device bfin_mii_bus = {
8882 - .name = "bfin_mii_bus",
8883 -};
8884 -
8885 static struct platform_device bfin_mac_device = {
8886 .name = "bfin_mac",
8887 - .dev.platform_data = &bfin_mii_bus,
8888 };
8889 #endif
8890
8891 @@ -134,9 +129,9 @@
8892 };
8893 #endif
8894
8895 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
8896 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
8897 - .enable_dma = 0,
8898 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8899 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
8900 + .enable_dma = 1,
8901 .bits_per_word = 8,
8902 };
8903 #endif
8904 @@ -156,13 +151,23 @@
8905 },
8906 #endif
8907
8908 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
8909 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8910 + {
8911 + .modalias = "spi_mmc_dummy",
8912 + .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */
8913 + .bus_num = 0,
8914 + .chip_select = 0,
8915 + .platform_data = NULL,
8916 + .controller_data = &spi_mmc_chip_info,
8917 + .mode = SPI_MODE_3,
8918 + },
8919 {
8920 - .modalias = "mmc_spi",
8921 + .modalias = "spi_mmc",
8922 .max_speed_hz = 5000000, /* max spi clock (SCK) speed in HZ */
8923 .bus_num = 0,
8924 - .chip_select = 5,
8925 - .controller_data = &mmc_spi_chip_info,
8926 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
8927 + .platform_data = NULL,
8928 + .controller_data = &spi_mmc_chip_info,
8929 .mode = SPI_MODE_3,
8930 },
8931 #endif
8932 @@ -319,7 +324,6 @@
8933 #endif
8934
8935 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8936 - &bfin_mii_bus,
8937 &bfin_mac_device,
8938 #endif
8939
8940 @@ -373,5 +377,5 @@
8941 {
8942 /* workaround reboot hang when booting from SPI */
8943 if ((bfin_read_SYSCR() & 0x7) == 0x3)
8944 - bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
8945 + bfin_gpio_reset_spi0_ssel1();
8946 }
8947 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/pnav10.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/pnav10.c
8948 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/pnav10.c 2009-05-10 22:04:40.000000000 +0200
8949 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/pnav10.c 2009-05-10 23:48:28.000000000 +0200
8950 @@ -198,13 +198,8 @@
8951 #endif
8952
8953 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
8954 -static struct platform_device bfin_mii_bus = {
8955 - .name = "bfin_mii_bus",
8956 -};
8957 -
8958 static struct platform_device bfin_mac_device = {
8959 .name = "bfin_mac",
8960 - .dev.platform_data = &bfin_mii_bus,
8961 };
8962 #endif
8963
8964 @@ -289,9 +284,9 @@
8965 };
8966 #endif
8967
8968 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
8969 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
8970 - .enable_dma = 0,
8971 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8972 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
8973 + .enable_dma = 1,
8974 .bits_per_word = 8,
8975 };
8976 #endif
8977 @@ -364,13 +359,23 @@
8978 .controller_data = &ad9960_spi_chip_info,
8979 },
8980 #endif
8981 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
8982 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
8983 + {
8984 + .modalias = "spi_mmc_dummy",
8985 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8986 + .bus_num = 0,
8987 + .chip_select = 7,
8988 + .platform_data = NULL,
8989 + .controller_data = &spi_mmc_chip_info,
8990 + .mode = SPI_MODE_3,
8991 + },
8992 {
8993 - .modalias = "mmc_spi",
8994 + .modalias = "spi_mmc",
8995 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
8996 .bus_num = 0,
8997 - .chip_select = 5,
8998 - .controller_data = &mmc_spi_chip_info,
8999 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
9000 + .platform_data = NULL,
9001 + .controller_data = &spi_mmc_chip_info,
9002 .mode = SPI_MODE_3,
9003 },
9004 #endif
9005 @@ -524,7 +529,6 @@
9006 #endif
9007
9008 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
9009 - &bfin_mii_bus,
9010 &bfin_mac_device,
9011 #endif
9012
9013 @@ -554,7 +558,7 @@
9014 #endif
9015 };
9016
9017 -static int __init pnav_init(void)
9018 +static int __init stamp_init(void)
9019 {
9020 printk(KERN_INFO "%s(): registering device resources\n", __func__);
9021 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
9022 @@ -565,7 +569,7 @@
9023 return 0;
9024 }
9025
9026 -arch_initcall(pnav_init);
9027 +arch_initcall(stamp_init);
9028
9029 void bfin_get_ether_addr(char *addr)
9030 {
9031 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/stamp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/stamp.c
9032 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/stamp.c 2009-05-10 22:04:40.000000000 +0200
9033 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/stamp.c 2009-05-10 23:48:28.000000000 +0200
9034 @@ -321,13 +321,8 @@
9035 #endif
9036
9037 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
9038 -static struct platform_device bfin_mii_bus = {
9039 - .name = "bfin_mii_bus",
9040 -};
9041 -
9042 static struct platform_device bfin_mac_device = {
9043 .name = "bfin_mac",
9044 - .dev.platform_data = &bfin_mii_bus,
9045 };
9046 #endif
9047
9048 @@ -1073,6 +1068,7 @@
9049 };
9050 #endif
9051
9052 +#ifdef CONFIG_I2C_BOARDINFO
9053 static struct i2c_board_info __initdata bfin_i2c_board_info[] = {
9054 #if defined(CONFIG_JOYSTICK_AD7142) || defined(CONFIG_JOYSTICK_AD7142_MODULE)
9055 {
9056 @@ -1106,6 +1102,7 @@
9057 },
9058 #endif
9059 };
9060 +#endif
9061
9062 #if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
9063 static struct platform_device bfin_sport0_uart_device = {
9064 @@ -1220,7 +1217,6 @@
9065 #endif
9066
9067 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
9068 - &bfin_mii_bus,
9069 &bfin_mac_device,
9070 #endif
9071
9072 @@ -1288,8 +1284,12 @@
9073 static int __init stamp_init(void)
9074 {
9075 printk(KERN_INFO "%s(): registering device resources\n", __func__);
9076 +
9077 +#ifdef CONFIG_I2C_BOARDINFO
9078 i2c_register_board_info(0, bfin_i2c_board_info,
9079 ARRAY_SIZE(bfin_i2c_board_info));
9080 +#endif
9081 +
9082 bfin_plat_nand_init();
9083 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
9084 spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
9085 @@ -1307,7 +1307,7 @@
9086 {
9087 /* workaround reboot hang when booting from SPI */
9088 if ((bfin_read_SYSCR() & 0x7) == 0x3)
9089 - bfin_reset_boot_spi_cs(P_DEFAULT_BOOT_SPI_CS);
9090 + bfin_gpio_reset_spi0_ssel1();
9091 }
9092
9093 /*
9094 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c
9095 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c 2009-05-10 22:04:40.000000000 +0200
9096 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/boards/tcm_bf537.c 2009-05-10 23:48:28.000000000 +0200
9097 @@ -108,9 +108,9 @@
9098 };
9099 #endif
9100
9101 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
9102 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
9103 - .enable_dma = 0,
9104 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
9105 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
9106 + .enable_dma = 1,
9107 .bits_per_word = 8,
9108 };
9109 #endif
9110 @@ -160,13 +160,23 @@
9111 },
9112 #endif
9113
9114 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
9115 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
9116 {
9117 - .modalias = "mmc_spi",
9118 + .modalias = "spi_mmc_dummy",
9119 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
9120 .bus_num = 0,
9121 - .chip_select = 5,
9122 - .controller_data = &mmc_spi_chip_info,
9123 + .chip_select = 7,
9124 + .platform_data = NULL,
9125 + .controller_data = &spi_mmc_chip_info,
9126 + .mode = SPI_MODE_3,
9127 + },
9128 + {
9129 + .modalias = "spi_mmc",
9130 + .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
9131 + .bus_num = 0,
9132 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
9133 + .platform_data = NULL,
9134 + .controller_data = &spi_mmc_chip_info,
9135 .mode = SPI_MODE_3,
9136 },
9137 #endif
9138 @@ -471,13 +481,8 @@
9139 #endif
9140
9141 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
9142 -static struct platform_device bfin_mii_bus = {
9143 - .name = "bfin_mii_bus",
9144 -};
9145 -
9146 static struct platform_device bfin_mac_device = {
9147 .name = "bfin_mac",
9148 - .dev.platform_data = &bfin_mii_bus,
9149 };
9150 #endif
9151
9152 @@ -588,7 +593,6 @@
9153 #endif
9154
9155 #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
9156 - &bfin_mii_bus,
9157 &bfin_mac_device,
9158 #endif
9159
9160 @@ -611,7 +615,7 @@
9161 &bfin_gpios_device,
9162 };
9163
9164 -static int __init tcm_bf537_init(void)
9165 +static int __init cm_bf537_init(void)
9166 {
9167 printk(KERN_INFO "%s(): registering device resources\n", __func__);
9168 platform_add_devices(cm_bf537_devices, ARRAY_SIZE(cm_bf537_devices));
9169 @@ -625,7 +629,7 @@
9170 return 0;
9171 }
9172
9173 -arch_initcall(tcm_bf537_init);
9174 +arch_initcall(cm_bf537_init);
9175
9176 void bfin_get_ether_addr(char *addr)
9177 {
9178 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h
9179 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
9180 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
9181 @@ -2,7 +2,7 @@
9182 * File: include/asm-blackfin/mach-bf537/anomaly.h
9183 * Bugs: Enter bugs at http://blackfin.uclinux.org/
9184 *
9185 - * Copyright (C) 2004-2009 Analog Devices Inc.
9186 + * Copyright (C) 2004-2008 Analog Devices Inc.
9187 * Licensed under the GPL-2 or later.
9188 */
9189
9190 @@ -110,7 +110,7 @@
9191 #define ANOMALY_05000301 (1)
9192 /* SSYNCs After Writes To CAN/DMA MMR Registers Are Not Always Handled Correctly */
9193 #define ANOMALY_05000304 (__SILICON_REVISION__ < 3)
9194 -/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
9195 +/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
9196 #define ANOMALY_05000305 (__SILICON_REVISION__ < 3)
9197 /* SCKELOW Bit Does Not Maintain State Through Hibernate */
9198 #define ANOMALY_05000307 (__SILICON_REVISION__ < 3)
9199 @@ -168,12 +168,9 @@
9200 #define ANOMALY_05000323 (0)
9201 #define ANOMALY_05000353 (1)
9202 #define ANOMALY_05000363 (0)
9203 -#define ANOMALY_05000380 (0)
9204 #define ANOMALY_05000386 (1)
9205 #define ANOMALY_05000412 (0)
9206 #define ANOMALY_05000432 (0)
9207 #define ANOMALY_05000435 (0)
9208 -#define ANOMALY_05000447 (0)
9209 -#define ANOMALY_05000448 (0)
9210
9211 #endif
9212 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h
9213 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
9214 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
9215 @@ -144,7 +144,7 @@
9216 CH_UART0_TX,
9217 CH_UART0_RX,
9218 #endif
9219 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9220 +#ifdef CONFIG_BFIN_UART0_CTSRTS
9221 CONFIG_UART0_CTS_PIN,
9222 CONFIG_UART0_RTS_PIN,
9223 #endif
9224 @@ -158,7 +158,7 @@
9225 CH_UART1_TX,
9226 CH_UART1_RX,
9227 #endif
9228 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9229 +#ifdef CONFIG_BFIN_UART1_CTSRTS
9230 CONFIG_UART1_CTS_PIN,
9231 CONFIG_UART1_RTS_PIN,
9232 #endif
9233 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h
9234 --- linux-2.6.29.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h 2009-05-10 22:04:40.000000000 +0200
9235 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf537/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
9236 @@ -31,7 +31,6 @@
9237 #define P_PPI0_FS1 (P_DEFINED | P_IDENT(GPIO_PF9) | P_FUNCT(1))
9238 #define P_TACLK0 (P_DEFINED | P_IDENT(GPIO_PF14) | P_FUNCT(1))
9239 #define P_TMRCLK (P_DEFINED | P_IDENT(GPIO_PF15) | P_FUNCT(1))
9240 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
9241
9242 #define P_PPI0_D0 (P_DEFINED | P_IDENT(GPIO_PG0) | P_FUNCT(0))
9243 #define P_PPI0_D1 (P_DEFINED | P_IDENT(GPIO_PG1) | P_FUNCT(0))
9244 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h
9245 --- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
9246 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
9247 @@ -2,7 +2,7 @@
9248 * File: include/asm-blackfin/mach-bf538/anomaly.h
9249 * Bugs: Enter bugs at http://blackfin.uclinux.org/
9250 *
9251 - * Copyright (C) 2004-2009 Analog Devices Inc.
9252 + * Copyright (C) 2004-2008 Analog Devices Inc.
9253 * Licensed under the GPL-2 or later.
9254 */
9255
9256 @@ -120,17 +120,13 @@
9257 #define ANOMALY_05000198 (0)
9258 #define ANOMALY_05000230 (0)
9259 #define ANOMALY_05000263 (0)
9260 -#define ANOMALY_05000305 (0)
9261 #define ANOMALY_05000311 (0)
9262 #define ANOMALY_05000323 (0)
9263 #define ANOMALY_05000353 (1)
9264 #define ANOMALY_05000363 (0)
9265 -#define ANOMALY_05000380 (0)
9266 #define ANOMALY_05000386 (1)
9267 #define ANOMALY_05000412 (0)
9268 #define ANOMALY_05000432 (0)
9269 #define ANOMALY_05000435 (0)
9270 -#define ANOMALY_05000447 (0)
9271 -#define ANOMALY_05000448 (0)
9272
9273 #endif
9274 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h
9275 --- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
9276 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
9277 @@ -144,7 +144,7 @@
9278 CH_UART0_TX,
9279 CH_UART0_RX,
9280 #endif
9281 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9282 +#ifdef CONFIG_BFIN_UART0_CTSRTS
9283 CONFIG_UART0_CTS_PIN,
9284 CONFIG_UART0_RTS_PIN,
9285 #endif
9286 @@ -158,7 +158,7 @@
9287 CH_UART1_TX,
9288 CH_UART1_RX,
9289 #endif
9290 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9291 +#ifdef CONFIG_BFIN_UART1_CTSRTS
9292 CONFIG_UART1_CTS_PIN,
9293 CONFIG_UART1_RTS_PIN,
9294 #endif
9295 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h
9296 --- linux-2.6.29.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h 2009-05-10 22:04:40.000000000 +0200
9297 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf538/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
9298 @@ -102,6 +102,5 @@
9299 #define P_SPI0_SSEL2 (P_DEFINED | P_IDENT(GPIO_PF2))
9300 #define P_SPI0_SSEL1 (P_DEFINED | P_IDENT(GPIO_PF1))
9301 #define P_SPI0_SS (P_DEFINED | P_IDENT(GPIO_PF0))
9302 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
9303
9304 #endif /* _MACH_PORTMUX_H_ */
9305 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/boards/ezkit.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/boards/ezkit.c
9306 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/boards/ezkit.c 2009-05-10 22:04:41.000000000 +0200
9307 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/boards/ezkit.c 2009-05-10 23:48:28.000000000 +0200
9308 @@ -781,6 +781,7 @@
9309 #endif
9310 #endif
9311
9312 +#ifdef CONFIG_I2C_BOARDINFO
9313 static struct i2c_board_info __initdata bfin_i2c_board_info0[] = {
9314 };
9315
9316 @@ -799,6 +800,7 @@
9317 #endif
9318 };
9319 #endif
9320 +#endif
9321
9322 #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
9323 #include <linux/gpio_keys.h>
9324 @@ -954,12 +956,14 @@
9325 {
9326 printk(KERN_INFO "%s(): registering device resources\n", __func__);
9327
9328 +#ifdef CONFIG_I2C_BOARDINFO
9329 i2c_register_board_info(0, bfin_i2c_board_info0,
9330 ARRAY_SIZE(bfin_i2c_board_info0));
9331 #if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
9332 i2c_register_board_info(1, bfin_i2c_board_info1,
9333 ARRAY_SIZE(bfin_i2c_board_info1));
9334 #endif
9335 +#endif
9336
9337 platform_add_devices(ezkit_devices, ARRAY_SIZE(ezkit_devices));
9338
9339 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h
9340 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
9341 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
9342 @@ -2,12 +2,12 @@
9343 * File: include/asm-blackfin/mach-bf548/anomaly.h
9344 * Bugs: Enter bugs at http://blackfin.uclinux.org/
9345 *
9346 - * Copyright (C) 2004-2009 Analog Devices Inc.
9347 + * Copyright (C) 2004-2008 Analog Devices Inc.
9348 * Licensed under the GPL-2 or later.
9349 */
9350
9351 /* This file shoule be up to date with:
9352 - * - Revision H, 01/16/2009; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
9353 + * - Revision G, 08/07/2008; ADSP-BF542/BF544/BF547/BF548/BF549 Blackfin Processor Anomaly List
9354 */
9355
9356 #ifndef _MACH_ANOMALY_H_
9357 @@ -91,6 +91,8 @@
9358 #define ANOMALY_05000371 (__SILICON_REVISION__ < 2)
9359 /* USB DP/DM Data Pins May Lose State When Entering Hibernate */
9360 #define ANOMALY_05000372 (__SILICON_REVISION__ < 1)
9361 +/* Mobile DDR Operation Not Functional */
9362 +#define ANOMALY_05000377 (1)
9363 /* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */
9364 #define ANOMALY_05000378 (__SILICON_REVISION__ < 2)
9365 /* 16-Bit NAND FLASH Boot Mode Is Not Functional */
9366 @@ -155,22 +157,8 @@
9367 #define ANOMALY_05000429 (__SILICON_REVISION__ < 2)
9368 /* Software System Reset Corrupts PLL_LOCKCNT Register */
9369 #define ANOMALY_05000430 (__SILICON_REVISION__ >= 2)
9370 -/* Incorrect Use of Stack in Lockbox Firmware During Authentication */
9371 -#define ANOMALY_05000431 (__SILICON_REVISION__ < 3)
9372 -/* OTP Write Accesses Not Supported */
9373 -#define ANOMALY_05000442 (__SILICON_REVISION__ < 1)
9374 /* IFLUSH Instruction at End of Hardware Loop Causes Infinite Stall */
9375 #define ANOMALY_05000443 (1)
9376 -/* CDMAPRIO and L2DMAPRIO Bits in the SYSCR Register Are Not Functional */
9377 -#define ANOMALY_05000446 (1)
9378 -/* UART IrDA Receiver Fails on Extended Bit Pulses */
9379 -#define ANOMALY_05000447 (1)
9380 -/* DDR Clock Duty Cycle Spec Violation (tCH, tCL) */
9381 -#define ANOMALY_05000448 (__SILICON_REVISION__ == 1)
9382 -/* Reduced Timing Margins on DDR Output Setup and Hold (tDS and tDH) */
9383 -#define ANOMALY_05000449 (__SILICON_REVISION__ == 1)
9384 -/* USB DMA Mode 1 Short Packet Data Corruption */
9385 -#define ANOMALY_05000450 (1
9386
9387 /* Anomalies that don't exist on this proc */
9388 #define ANOMALY_05000125 (0)
9389 @@ -183,13 +171,10 @@
9390 #define ANOMALY_05000263 (0)
9391 #define ANOMALY_05000266 (0)
9392 #define ANOMALY_05000273 (0)
9393 -#define ANOMALY_05000278 (0)
9394 -#define ANOMALY_05000305 (0)
9395 #define ANOMALY_05000307 (0)
9396 #define ANOMALY_05000311 (0)
9397 #define ANOMALY_05000323 (0)
9398 #define ANOMALY_05000363 (0)
9399 -#define ANOMALY_05000380 (0)
9400 #define ANOMALY_05000412 (0)
9401 #define ANOMALY_05000432 (0)
9402 #define ANOMALY_05000435 (0)
9403 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h
9404 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h 2009-05-10 22:04:41.000000000 +0200
9405 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bf548.h 2009-05-10 23:48:28.000000000 +0200
9406 @@ -104,18 +104,6 @@
9407
9408 #define AMGCTLVAL (V_AMBEN | V_AMCKEN)
9409
9410 -#if defined(CONFIG_BF542M)
9411 -# define CONFIG_BF542
9412 -#elif defined(CONFIG_BF544M)
9413 -# define CONFIG_BF544
9414 -#elif defined(CONFIG_BF547M)
9415 -# define CONFIG_BF547
9416 -#elif defined(CONFIG_BF548M)
9417 -# define CONFIG_BF548
9418 -#elif defined(CONFIG_BF549M)
9419 -# define CONFIG_BF549
9420 -#endif
9421 -
9422 #if defined(CONFIG_BF542)
9423 # define CPU "BF542"
9424 # define CPUID 0x27de
9425 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h
9426 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
9427 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
9428 @@ -63,7 +63,7 @@
9429 #define UART_ENABLE_INTS(x, v) UART_SET_IER(x, v)
9430 #define UART_DISABLE_INTS(x) UART_CLEAR_IER(x, 0xF)
9431
9432 -#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART2_CTSRTS)
9433 +#if defined(CONFIG_BFIN_UART0_CTSRTS) || defined(CONFIG_BFIN_UART1_CTSRTS)
9434 # define CONFIG_SERIAL_BFIN_CTSRTS
9435
9436 # ifndef CONFIG_UART0_CTS_PIN
9437 @@ -74,12 +74,12 @@
9438 # define CONFIG_UART0_RTS_PIN -1
9439 # endif
9440
9441 -# ifndef CONFIG_UART2_CTS_PIN
9442 -# define CONFIG_UART2_CTS_PIN -1
9443 +# ifndef CONFIG_UART1_CTS_PIN
9444 +# define CONFIG_UART1_CTS_PIN -1
9445 # endif
9446
9447 -# ifndef CONFIG_UART2_RTS_PIN
9448 -# define CONFIG_UART2_RTS_PIN -1
9449 +# ifndef CONFIG_UART1_RTS_PIN
9450 +# define CONFIG_UART1_RTS_PIN -1
9451 # endif
9452 #endif
9453
9454 @@ -130,7 +130,7 @@
9455 CH_UART0_TX,
9456 CH_UART0_RX,
9457 #endif
9458 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9459 +#ifdef CONFIG_BFIN_UART0_CTSRTS
9460 CONFIG_UART0_CTS_PIN,
9461 CONFIG_UART0_RTS_PIN,
9462 #endif
9463 @@ -144,10 +144,6 @@
9464 CH_UART1_TX,
9465 CH_UART1_RX,
9466 #endif
9467 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9468 - 0,
9469 - 0,
9470 -#endif
9471 },
9472 #endif
9473 #ifdef CONFIG_SERIAL_BFIN_UART2
9474 @@ -158,7 +154,7 @@
9475 CH_UART2_TX,
9476 CH_UART2_RX,
9477 #endif
9478 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9479 +#ifdef CONFIG_BFIN_UART2_CTSRTS
9480 CONFIG_UART2_CTS_PIN,
9481 CONFIG_UART2_RTS_PIN,
9482 #endif
9483 @@ -172,10 +168,6 @@
9484 CH_UART3_TX,
9485 CH_UART3_RX,
9486 #endif
9487 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9488 - 0,
9489 - 0,
9490 -#endif
9491 },
9492 #endif
9493 };
9494 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h
9495 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h 2009-05-10 22:04:41.000000000 +0200
9496 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/gpio.h 2009-05-10 23:48:28.000000000 +0200
9497 @@ -195,17 +195,17 @@
9498 struct gpio_port_t {
9499 unsigned short port_fer;
9500 unsigned short dummy1;
9501 - unsigned short data;
9502 + unsigned short port_data;
9503 unsigned short dummy2;
9504 - unsigned short data_set;
9505 + unsigned short port_set;
9506 unsigned short dummy3;
9507 - unsigned short data_clear;
9508 + unsigned short port_clear;
9509 unsigned short dummy4;
9510 - unsigned short dir_set;
9511 + unsigned short port_dir_set;
9512 unsigned short dummy5;
9513 - unsigned short dir_clear;
9514 + unsigned short port_dir_clear;
9515 unsigned short dummy6;
9516 - unsigned short inen;
9517 + unsigned short port_inen;
9518 unsigned short dummy7;
9519 unsigned int port_mux;
9520 };
9521 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/irq.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/irq.h
9522 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/irq.h 2009-05-10 22:04:41.000000000 +0200
9523 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/irq.h 2009-05-10 23:48:28.000000000 +0200
9524 @@ -123,8 +123,8 @@
9525 #define IRQ_MXVR_ERROR BFIN_IRQ(51) /* MXVR Status (Error) Interrupt */
9526 #define IRQ_MXVR_MSG BFIN_IRQ(52) /* MXVR Message Interrupt */
9527 #define IRQ_MXVR_PKT BFIN_IRQ(53) /* MXVR Packet Interrupt */
9528 -#define IRQ_EPPI1_ERROR BFIN_IRQ(54) /* EPPI1 Error Interrupt */
9529 -#define IRQ_EPPI2_ERROR BFIN_IRQ(55) /* EPPI2 Error Interrupt */
9530 +#define IRQ_EPP1_ERROR BFIN_IRQ(54) /* EPPI1 Error Interrupt */
9531 +#define IRQ_EPP2_ERROR BFIN_IRQ(55) /* EPPI2 Error Interrupt */
9532 #define IRQ_UART3_ERROR BFIN_IRQ(56) /* UART3 Status (Error) Interrupt */
9533 #define IRQ_HOST_ERROR BFIN_IRQ(57) /* HOST Status (Error) Interrupt */
9534 #define IRQ_PIXC_ERROR BFIN_IRQ(59) /* PIXC Status (Error) Interrupt */
9535 @@ -361,8 +361,8 @@
9536 #define IRQ_UART2_ERR IRQ_UART2_ERROR
9537 #define IRQ_CAN0_ERR IRQ_CAN0_ERROR
9538 #define IRQ_MXVR_ERR IRQ_MXVR_ERROR
9539 -#define IRQ_EPPI1_ERR IRQ_EPPI1_ERROR
9540 -#define IRQ_EPPI2_ERR IRQ_EPPI2_ERROR
9541 +#define IRQ_EPP1_ERR IRQ_EPP1_ERROR
9542 +#define IRQ_EPP2_ERR IRQ_EPP2_ERROR
9543 #define IRQ_UART3_ERR IRQ_UART3_ERROR
9544 #define IRQ_HOST_ERR IRQ_HOST_ERROR
9545 #define IRQ_PIXC_ERR IRQ_PIXC_ERROR
9546 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h
9547 --- linux-2.6.29.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h 2009-05-10 22:04:41.000000000 +0200
9548 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf548/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
9549 @@ -125,7 +125,6 @@
9550 #define P_KEY_COL2 (P_DEFINED | P_IDENT(GPIO_PD14) | P_FUNCT(3))
9551 #define P_KEY_COL3 (P_DEFINED | P_IDENT(GPIO_PD15) | P_FUNCT(3))
9552
9553 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL1
9554 #define P_SPI0_SCK (P_DEFINED | P_IDENT(GPIO_PE0) | P_FUNCT(0))
9555 #define P_SPI0_MISO (P_DEFINED | P_IDENT(GPIO_PE1) | P_FUNCT(0))
9556 #define P_SPI0_MOSI (P_DEFINED | P_IDENT(GPIO_PE2) | P_FUNCT(0))
9557 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c
9558 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c 2009-05-10 22:04:40.000000000 +0200
9559 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/cm_bf561.c 2009-05-10 23:48:28.000000000 +0200
9560 @@ -105,9 +105,9 @@
9561 };
9562 #endif
9563
9564 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
9565 -static struct bfin5xx_spi_chip mmc_spi_chip_info = {
9566 - .enable_dma = 0,
9567 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
9568 +static struct bfin5xx_spi_chip spi_mmc_chip_info = {
9569 + .enable_dma = 1,
9570 .bits_per_word = 8,
9571 };
9572 #endif
9573 @@ -155,13 +155,14 @@
9574 .controller_data = &ad9960_spi_chip_info,
9575 },
9576 #endif
9577 -#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
9578 +#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
9579 {
9580 - .modalias = "mmc_spi",
9581 + .modalias = "spi_mmc",
9582 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
9583 .bus_num = 0,
9584 - .chip_select = 5,
9585 - .controller_data = &mmc_spi_chip_info,
9586 + .chip_select = CONFIG_SPI_MMC_CS_CHAN,
9587 + .platform_data = NULL,
9588 + .controller_data = &spi_mmc_chip_info,
9589 .mode = SPI_MODE_3,
9590 },
9591 #endif
9592 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/generic_board.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/generic_board.c
9593 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/generic_board.c 1970-01-01 01:00:00.000000000 +0100
9594 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/generic_board.c 2009-05-10 23:48:28.000000000 +0200
9595 @@ -0,0 +1,113 @@
9596 +/*
9597 + * File: arch/blackfin/mach-bf561/generic_board.c
9598 + * Based on: arch/blackfin/mach-bf533/ezkit.c
9599 + * Author: Aidan Williams <aidan@nicta.com.au>
9600 + *
9601 + * Created:
9602 + * Description:
9603 + *
9604 + * Modified:
9605 + * Copyright 2005 National ICT Australia (NICTA)
9606 + * Copyright 2004-2006 Analog Devices Inc.
9607 + *
9608 + * Bugs: Enter bugs at http://blackfin.uclinux.org/
9609 + *
9610 + * This program is free software; you can redistribute it and/or modify
9611 + * it under the terms of the GNU General Public License as published by
9612 + * the Free Software Foundation; either version 2 of the License, or
9613 + * (at your option) any later version.
9614 + *
9615 + * This program is distributed in the hope that it will be useful,
9616 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
9617 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9618 + * GNU General Public License for more details.
9619 + *
9620 + * You should have received a copy of the GNU General Public License
9621 + * along with this program; if not, see the file COPYING, or write
9622 + * to the Free Software Foundation, Inc.,
9623 + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
9624 + */
9625 +
9626 +#include <linux/device.h>
9627 +#include <linux/platform_device.h>
9628 +#include <linux/irq.h>
9629 +
9630 +const char bfin_board_name[] = "UNKNOWN BOARD";
9631 +
9632 +/*
9633 + * Driver needs to know address, irq and flag pin.
9634 + */
9635 +#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
9636 +static struct resource smc91x_resources[] = {
9637 + {
9638 + .start = 0x2C010300,
9639 + .end = 0x2C010300 + 16,
9640 + .flags = IORESOURCE_MEM,
9641 + }, {
9642 + .start = IRQ_PROG_INTB,
9643 + .end = IRQ_PROG_INTB,
9644 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
9645 + }, {
9646 + .start = IRQ_PF9,
9647 + .end = IRQ_PF9,
9648 + .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
9649 + },
9650 +};
9651 +
9652 +static struct platform_device smc91x_device = {
9653 + .name = "smc91x",
9654 + .id = 0,
9655 + .num_resources = ARRAY_SIZE(smc91x_resources),
9656 + .resource = smc91x_resources,
9657 +};
9658 +#endif
9659 +
9660 +#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
9661 +#ifdef CONFIG_BFIN_SIR0
9662 +static struct resource bfin_sir0_resources[] = {
9663 + {
9664 + .start = 0xFFC00400,
9665 + .end = 0xFFC004FF,
9666 + .flags = IORESOURCE_MEM,
9667 + },
9668 + {
9669 + .start = IRQ_UART0_RX,
9670 + .end = IRQ_UART0_RX+1,
9671 + .flags = IORESOURCE_IRQ,
9672 + },
9673 + {
9674 + .start = CH_UART0_RX,
9675 + .end = CH_UART0_RX+1,
9676 + .flags = IORESOURCE_DMA,
9677 + },
9678 +};
9679 +
9680 +static struct platform_device bfin_sir0_device = {
9681 + .name = "bfin_sir",
9682 + .id = 0,
9683 + .num_resources = ARRAY_SIZE(bfin_sir0_resources),
9684 + .resource = bfin_sir0_resources,
9685 +};
9686 +#endif
9687 +#endif
9688 +
9689 +static struct platform_device *generic_board_devices[] __initdata = {
9690 +#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
9691 + &smc91x_device,
9692 +#endif
9693 +
9694 +#if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
9695 +#ifdef CONFIG_BFIN_SIR0
9696 + &bfin_sir0_device,
9697 +#endif
9698 +#endif
9699 +};
9700 +
9701 +static int __init generic_board_init(void)
9702 +{
9703 + printk(KERN_INFO "%s(): registering device resources\n", __func__);
9704 + return platform_add_devices(generic_board_devices,
9705 + ARRAY_SIZE(generic_board_devices));
9706 +}
9707 +
9708 +arch_initcall(generic_board_init);
9709 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Kconfig linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Kconfig
9710 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Kconfig 2009-05-10 22:04:40.000000000 +0200
9711 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Kconfig 2009-05-10 23:48:28.000000000 +0200
9712 @@ -19,4 +19,9 @@
9713 help
9714 CM-BF561 support for EVAL- and DEV-Board.
9715
9716 +config GENERIC_BF561_BOARD
9717 + bool "Generic"
9718 + help
9719 + Generic or Custom board support.
9720 +
9721 endchoice
9722 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Makefile
9723 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/boards/Makefile 2009-05-10 22:04:40.000000000 +0200
9724 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/boards/Makefile 2009-05-10 23:48:28.000000000 +0200
9725 @@ -2,6 +2,7 @@
9726 # arch/blackfin/mach-bf561/boards/Makefile
9727 #
9728
9729 +obj-$(CONFIG_GENERIC_BF561_BOARD) += generic_board.o
9730 obj-$(CONFIG_BFIN561_BLUETECHNIX_CM) += cm_bf561.o
9731 obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o
9732 obj-$(CONFIG_BFIN561_TEPLA) += tepla.o
9733 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h
9734 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h 2009-05-10 22:04:40.000000000 +0200
9735 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/anomaly.h 2009-05-10 23:48:28.000000000 +0200
9736 @@ -2,7 +2,7 @@
9737 * File: include/asm-blackfin/mach-bf561/anomaly.h
9738 * Bugs: Enter bugs at http://blackfin.uclinux.org/
9739 *
9740 - * Copyright (C) 2004-2009 Analog Devices Inc.
9741 + * Copyright (C) 2004-2008 Analog Devices Inc.
9742 * Licensed under the GPL-2 or later.
9743 */
9744
9745 @@ -224,7 +224,7 @@
9746 #define ANOMALY_05000301 (1)
9747 /* SSYNCs After Writes To DMA MMR Registers May Not Be Handled Correctly */
9748 #define ANOMALY_05000302 (1)
9749 -/* SPORT_HYS Bit in PLL_CTL Register Is Not Functional */
9750 +/* New Feature: Additional Hysteresis on SPORT Input Pins (Not Available On Older Silicon) */
9751 #define ANOMALY_05000305 (__SILICON_REVISION__ < 5)
9752 /* SCKELOW Bit Does Not Maintain State Through Hibernate */
9753 #define ANOMALY_05000307 (__SILICON_REVISION__ < 5)
9754 @@ -283,11 +283,8 @@
9755 #define ANOMALY_05000273 (0)
9756 #define ANOMALY_05000311 (0)
9757 #define ANOMALY_05000353 (1)
9758 -#define ANOMALY_05000380 (0)
9759 #define ANOMALY_05000386 (1)
9760 #define ANOMALY_05000432 (0)
9761 #define ANOMALY_05000435 (0)
9762 -#define ANOMALY_05000447 (0)
9763 -#define ANOMALY_05000448 (0)
9764
9765 #endif
9766 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h
9767 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h 2009-05-10 22:04:40.000000000 +0200
9768 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/bfin_serial_5xx.h 2009-05-10 23:48:28.000000000 +0200
9769 @@ -134,7 +134,7 @@
9770 CH_UART_TX,
9771 CH_UART_RX,
9772 #endif
9773 -#ifdef CONFIG_SERIAL_BFIN_CTSRTS
9774 +#ifdef CONFIG_BFIN_UART0_CTSRTS
9775 CONFIG_UART0_CTS_PIN,
9776 CONFIG_UART0_RTS_PIN,
9777 #endif
9778 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h
9779 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h 2009-05-10 22:04:40.000000000 +0200
9780 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/defBF561.h 2009-05-10 23:48:28.000000000 +0200
9781 @@ -1106,8 +1106,6 @@
9782 #define DLEN_8 0x0 /* PPI Data Length mask for DLEN=8 */
9783 #define DLEN(x) (((x-9) & 0x07) << 11) /* PPI Data Length (only works for x=10-->x=16) */
9784 #define POL 0x0000C000 /* PPI Signal Polarities */
9785 -#define POLC 0x4000 /* PPI Clock Polarity */
9786 -#define POLS 0x8000 /* PPI Frame Sync Polarity */
9787
9788 /* PPI_STATUS Masks */
9789 #define FLD 0x00000400 /* Field Indicator */
9790 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h
9791 --- linux-2.6.29.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h 2009-05-10 22:04:40.000000000 +0200
9792 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-bf561/include/mach/portmux.h 2009-05-10 23:48:28.000000000 +0200
9793 @@ -85,6 +85,5 @@
9794 #define P_SPI0_MOSI (P_DONTCARE)
9795 #define P_SPI0_MISO (P_DONTCARE)
9796 #define P_SPI0_SCK (P_DONTCARE)
9797 -#define P_DEFAULT_BOOT_SPI_CS P_SPI0_SSEL2
9798
9799 #endif /* _MACH_PORTMUX_H_ */
9800 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/arch_checks.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/arch_checks.c
9801 --- linux-2.6.29.owrt/arch/blackfin/mach-common/arch_checks.c 2009-05-10 22:04:40.000000000 +0200
9802 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/arch_checks.c 2009-05-10 23:48:28.000000000 +0200
9803 @@ -62,12 +62,3 @@
9804 #if (CONFIG_BOOT_LOAD & 0x3)
9805 # error "The kernel load address must be 4 byte aligned"
9806 #endif
9807 -
9808 -/* The entire kernel must be able to make a 24bit pcrel call to start of L1 */
9809 -#if ((0xffffffff - L1_CODE_START + 1) + CONFIG_BOOT_LOAD) > 0x1000000
9810 -# error "The kernel load address is too high; keep it below 10meg for safety"
9811 -#endif
9812 -
9813 -#if ANOMALY_05000448
9814 -# error You are using a part with anomaly 05000448, this issue causes random memory read/write failures - that means random crashes.
9815 -#endif
9816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/cache.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/cache.S
9817 --- linux-2.6.29.owrt/arch/blackfin/mach-common/cache.S 2009-05-10 22:04:40.000000000 +0200
9818 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/cache.S 2009-05-10 23:48:28.000000000 +0200
9819 @@ -66,33 +66,11 @@
9820
9821 /* Invalidate all instruction cache lines assocoiated with this memory area */
9822 ENTRY(_blackfin_icache_flush_range)
9823 -/*
9824 - * Walkaround to avoid loading wrong instruction after invalidating icache
9825 - * and following sequence is met.
9826 - *
9827 - * 1) One instruction address is cached in the instruction cache.
9828 - * 2) This instruction in SDRAM is changed.
9829 - * 3) IFLASH[P0] is executed only once in blackfin_icache_flush_range().
9830 - * 4) This instruction is executed again, but the old one is loaded.
9831 - */
9832 - P0 = R0;
9833 - IFLUSH[P0];
9834 do_flush IFLUSH, , nop
9835 ENDPROC(_blackfin_icache_flush_range)
9836
9837 /* Flush all cache lines assocoiated with this area of memory. */
9838 ENTRY(_blackfin_icache_dcache_flush_range)
9839 -/*
9840 - * Walkaround to avoid loading wrong instruction after invalidating icache
9841 - * and following sequence is met.
9842 - *
9843 - * 1) One instruction address is cached in the instruction cache.
9844 - * 2) This instruction in SDRAM is changed.
9845 - * 3) IFLASH[P0] is executed only once in blackfin_icache_flush_range().
9846 - * 4) This instruction is executed again, but the old one is loaded.
9847 - */
9848 - P0 = R0;
9849 - IFLUSH[P0];
9850 do_flush FLUSH, IFLUSH
9851 ENDPROC(_blackfin_icache_dcache_flush_range)
9852
9853 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/clocks-init.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/clocks-init.c
9854 --- linux-2.6.29.owrt/arch/blackfin/mach-common/clocks-init.c 2009-05-10 22:04:40.000000000 +0200
9855 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/clocks-init.c 2009-05-10 23:48:28.000000000 +0200
9856 @@ -14,10 +14,9 @@
9857 #include <asm/clocks.h>
9858 #include <asm/mem_init.h>
9859
9860 -#define SDGCTL_WIDTH (1 << 31) /* SDRAM external data path width */
9861 #define PLL_CTL_VAL \
9862 (((CONFIG_VCO_MULT & 63) << 9) | CLKIN_HALF | \
9863 - (PLL_BYPASS << 8) | (ANOMALY_05000305 ? 0 : 0x8000))
9864 + (PLL_BYPASS << 8) | (ANOMALY_05000265 ? 0x8000 : 0))
9865
9866 __attribute__((l1_text))
9867 static void do_sync(void)
9868 @@ -77,7 +76,7 @@
9869 bfin_write_PLL_DIV(CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
9870 #ifdef EBIU_SDGCTL
9871 bfin_write_EBIU_SDRRC(mem_SDRRC);
9872 - bfin_write_EBIU_SDGCTL((bfin_read_EBIU_SDGCTL() & SDGCTL_WIDTH) | mem_SDGCTL);
9873 + bfin_write_EBIU_SDGCTL(mem_SDGCTL);
9874 #else
9875 bfin_write_EBIU_RSTCTL(bfin_read_EBIU_RSTCTL() & ~(SRREQ));
9876 do_sync();
9877 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/dpmc_modes.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/dpmc_modes.S
9878 --- linux-2.6.29.owrt/arch/blackfin/mach-common/dpmc_modes.S 2009-05-10 22:04:40.000000000 +0200
9879 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/dpmc_modes.S 2009-05-10 23:48:28.000000000 +0200
9880 @@ -376,22 +376,10 @@
9881 #endif
9882
9883 #ifdef PINT0_ASSIGN
9884 - PM_SYS_PUSH(PINT0_MASK_SET)
9885 - PM_SYS_PUSH(PINT1_MASK_SET)
9886 - PM_SYS_PUSH(PINT2_MASK_SET)
9887 - PM_SYS_PUSH(PINT3_MASK_SET)
9888 PM_SYS_PUSH(PINT0_ASSIGN)
9889 PM_SYS_PUSH(PINT1_ASSIGN)
9890 PM_SYS_PUSH(PINT2_ASSIGN)
9891 PM_SYS_PUSH(PINT3_ASSIGN)
9892 - PM_SYS_PUSH(PINT0_INVERT_SET)
9893 - PM_SYS_PUSH(PINT1_INVERT_SET)
9894 - PM_SYS_PUSH(PINT2_INVERT_SET)
9895 - PM_SYS_PUSH(PINT3_INVERT_SET)
9896 - PM_SYS_PUSH(PINT0_EDGE_SET)
9897 - PM_SYS_PUSH(PINT1_EDGE_SET)
9898 - PM_SYS_PUSH(PINT2_EDGE_SET)
9899 - PM_SYS_PUSH(PINT3_EDGE_SET)
9900 #endif
9901
9902 PM_SYS_PUSH(EBIU_AMBCTL0)
9903 @@ -726,22 +714,10 @@
9904 PM_SYS_POP(EBIU_AMBCTL0)
9905
9906 #ifdef PINT0_ASSIGN
9907 - PM_SYS_POP(PINT3_EDGE_SET)
9908 - PM_SYS_POP(PINT2_EDGE_SET)
9909 - PM_SYS_POP(PINT1_EDGE_SET)
9910 - PM_SYS_POP(PINT0_EDGE_SET)
9911 - PM_SYS_POP(PINT3_INVERT_SET)
9912 - PM_SYS_POP(PINT2_INVERT_SET)
9913 - PM_SYS_POP(PINT1_INVERT_SET)
9914 - PM_SYS_POP(PINT0_INVERT_SET)
9915 PM_SYS_POP(PINT3_ASSIGN)
9916 PM_SYS_POP(PINT2_ASSIGN)
9917 PM_SYS_POP(PINT1_ASSIGN)
9918 PM_SYS_POP(PINT0_ASSIGN)
9919 - PM_SYS_POP(PINT3_MASK_SET)
9920 - PM_SYS_POP(PINT2_MASK_SET)
9921 - PM_SYS_POP(PINT1_MASK_SET)
9922 - PM_SYS_POP(PINT0_MASK_SET)
9923 #endif
9924
9925 #ifdef SICA_IWR1
9926 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/entry.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/entry.S
9927 --- linux-2.6.29.owrt/arch/blackfin/mach-common/entry.S 2009-05-10 22:04:40.000000000 +0200
9928 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/entry.S 2009-05-10 23:48:28.000000000 +0200
9929 @@ -151,6 +151,13 @@
9930 jump.s _bfin_return_from_exception;
9931 ENDPROC(_ex_syscall)
9932
9933 +ENTRY(_ex_soft_bp)
9934 + r7 = retx;
9935 + r7 += -2;
9936 + retx = r7;
9937 + jump.s _ex_trap_c;
9938 +ENDPROC(_ex_soft_bp)
9939 +
9940 ENTRY(_ex_single_step)
9941 /* If we just returned from an interrupt, the single step event is
9942 for the RTI instruction. */
9943 @@ -600,19 +607,6 @@
9944 p2 = [p2];
9945
9946 [p2+(TASK_THREAD+THREAD_KSP)] = sp;
9947 -#ifdef CONFIG_IPIPE
9948 - r0 = sp;
9949 - SP += -12;
9950 - call ___ipipe_syscall_root;
9951 - SP += 12;
9952 - cc = r0 == 1;
9953 - if cc jump .Lsyscall_really_exit;
9954 - cc = r0 == -1;
9955 - if cc jump .Lresume_userspace;
9956 - r3 = [sp + PT_R3];
9957 - r4 = [sp + PT_R4];
9958 - p0 = [sp + PT_ORIG_P0];
9959 -#endif /* CONFIG_IPIPE */
9960
9961 /* Check the System Call */
9962 r7 = __NR_syscall;
9963 @@ -667,17 +661,6 @@
9964 r7 = r7 & r4;
9965
9966 .Lsyscall_resched:
9967 -#ifdef CONFIG_IPIPE
9968 - cc = BITTST(r7, TIF_IRQ_SYNC);
9969 - if !cc jump .Lsyscall_no_irqsync;
9970 - [--sp] = reti;
9971 - r0 = [sp++];
9972 - SP += -12;
9973 - call ___ipipe_sync_root;
9974 - SP += 12;
9975 - jump .Lresume_userspace_1;
9976 -.Lsyscall_no_irqsync:
9977 -#endif
9978 cc = BITTST(r7, TIF_NEED_RESCHED);
9979 if !cc jump .Lsyscall_sigpending;
9980
9981 @@ -709,10 +692,6 @@
9982 .Lsyscall_really_exit:
9983 r5 = [sp + PT_RESERVED];
9984 rets = r5;
9985 -#ifdef CONFIG_IPIPE
9986 - [--sp] = reti;
9987 - r5 = [sp++];
9988 -#endif /* CONFIG_IPIPE */
9989 rts;
9990 ENDPROC(_system_call)
9991
9992 @@ -799,15 +778,6 @@
9993 ENDPROC(_resume)
9994
9995 ENTRY(_ret_from_exception)
9996 -#ifdef CONFIG_IPIPE
9997 - [--sp] = rets;
9998 - SP += -12;
9999 - call ___ipipe_check_root
10000 - SP += 12
10001 - rets = [sp++];
10002 - cc = r0 == 0;
10003 - if cc jump 4f; /* not on behalf of Linux, get out */
10004 -#endif /* CONFIG_IPIPE */
10005 p2.l = lo(IPEND);
10006 p2.h = hi(IPEND);
10007
10008 @@ -864,28 +834,6 @@
10009 rts;
10010 ENDPROC(_ret_from_exception)
10011
10012 -#ifdef CONFIG_IPIPE
10013 -
10014 -_sync_root_irqs:
10015 - [--sp] = reti; /* Reenable interrupts */
10016 - r0 = [sp++];
10017 - jump.l ___ipipe_sync_root
10018 -
10019 -_resume_kernel_from_int:
10020 - r0.l = _sync_root_irqs
10021 - r0.h = _sync_root_irqs
10022 - [--sp] = rets;
10023 - [--sp] = ( r7:4, p5:3 );
10024 - SP += -12;
10025 - call ___ipipe_call_irqtail
10026 - SP += 12;
10027 - ( r7:4, p5:3 ) = [sp++];
10028 - rets = [sp++];
10029 - rts
10030 -#else
10031 -#define _resume_kernel_from_int 2f
10032 -#endif
10033 -
10034 ENTRY(_return_from_int)
10035 /* If someone else already raised IRQ 15, do nothing. */
10036 csync;
10037 @@ -907,7 +855,7 @@
10038 r1 = r0 - r1;
10039 r2 = r0 & r1;
10040 cc = r2 == 0;
10041 - if !cc jump _resume_kernel_from_int;
10042 + if !cc jump 2f;
10043
10044 /* Lower the interrupt level to 15. */
10045 p0.l = lo(EVT15);
10046 @@ -1139,7 +1087,7 @@
10047 * EXCPT instruction can provide 4 bits of EXCAUSE, allowing 16 to be user defined
10048 */
10049 .long _ex_syscall /* 0x00 - User Defined - Linux Syscall */
10050 - .long _ex_trap_c /* 0x01 - User Defined - Software breakpoint */
10051 + .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */
10052 #ifdef CONFIG_KGDB
10053 .long _ex_trap_c /* 0x02 - User Defined - KGDB initial connection
10054 and break signal trap */
10055 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/head.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/head.S
10056 --- linux-2.6.29.owrt/arch/blackfin/mach-common/head.S 2009-05-10 22:04:40.000000000 +0200
10057 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/head.S 2009-05-10 23:48:28.000000000 +0200
10058 @@ -17,19 +17,6 @@
10059
10060 __INIT
10061
10062 -ENTRY(__init_clear_bss)
10063 - r2 = r2 - r1;
10064 - cc = r2 == 0;
10065 - if cc jump .L_bss_done;
10066 - r2 >>= 2;
10067 - p1 = r1;
10068 - p2 = r2;
10069 - lsetup (1f, 1f) lc0 = p2;
10070 -1: [p1++] = r0;
10071 -.L_bss_done:
10072 - rts;
10073 -ENDPROC(__init_clear_bss)
10074 -
10075 #define INITIAL_STACK (L1_SCRATCH_START + L1_SCRATCH_LENGTH - 12)
10076
10077 ENTRY(__start)
10078 @@ -157,35 +144,6 @@
10079 call _init_early_exception_vectors;
10080 #endif
10081
10082 - r0 = 0 (x);
10083 - /* Zero out all of the fun bss regions */
10084 -#if L1_DATA_A_LENGTH > 0
10085 - r1.l = __sbss_l1;
10086 - r1.h = __sbss_l1;
10087 - r2.l = __ebss_l1;
10088 - r2.h = __ebss_l1;
10089 - call __init_clear_bss
10090 -#endif
10091 -#if L1_DATA_B_LENGTH > 0
10092 - r1.l = __sbss_b_l1;
10093 - r1.h = __sbss_b_l1;
10094 - r2.l = __ebss_b_l1;
10095 - r2.h = __ebss_b_l1;
10096 - call __init_clear_bss
10097 -#endif
10098 -#if L2_LENGTH > 0
10099 - r1.l = __sbss_l2;
10100 - r1.h = __sbss_l2;
10101 - r2.l = __ebss_l2;
10102 - r2.h = __ebss_l2;
10103 - call __init_clear_bss
10104 -#endif
10105 - r1.l = ___bss_start;
10106 - r1.h = ___bss_start;
10107 - r2.l = ___bss_stop;
10108 - r2.h = ___bss_stop;
10109 - call __init_clear_bss
10110 -
10111 /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */
10112 call _bfin_relocate_l1_mem;
10113 #ifdef CONFIG_BFIN_KERNEL_CLOCK
10114 @@ -227,6 +185,19 @@
10115 # define WDOG_CTL WDOGA_CTL
10116 #endif
10117
10118 +ENTRY(__init_clear_bss)
10119 + r2 = r2 - r1;
10120 + cc = r2 == 0;
10121 + if cc jump .L_bss_done;
10122 + r2 >>= 2;
10123 + p1 = r1;
10124 + p2 = r2;
10125 + lsetup (1f, 1f) lc0 = p2;
10126 +1: [p1++] = r0;
10127 +.L_bss_done:
10128 + rts;
10129 +ENDPROC(__init_clear_bss)
10130 +
10131 ENTRY(_real_start)
10132 /* Enable nested interrupts */
10133 [--sp] = reti;
10134 @@ -238,6 +209,35 @@
10135 w[p0] = r0;
10136 ssync;
10137
10138 + r0 = 0 (x);
10139 + /* Zero out all of the fun bss regions */
10140 +#if L1_DATA_A_LENGTH > 0
10141 + r1.l = __sbss_l1;
10142 + r1.h = __sbss_l1;
10143 + r2.l = __ebss_l1;
10144 + r2.h = __ebss_l1;
10145 + call __init_clear_bss
10146 +#endif
10147 +#if L1_DATA_B_LENGTH > 0
10148 + r1.l = __sbss_b_l1;
10149 + r1.h = __sbss_b_l1;
10150 + r2.l = __ebss_b_l1;
10151 + r2.h = __ebss_b_l1;
10152 + call __init_clear_bss
10153 +#endif
10154 +#if L2_LENGTH > 0
10155 + r1.l = __sbss_l2;
10156 + r1.h = __sbss_l2;
10157 + r2.l = __ebss_l2;
10158 + r2.h = __ebss_l2;
10159 + call __init_clear_bss
10160 +#endif
10161 + r1.l = ___bss_start;
10162 + r1.h = ___bss_start;
10163 + r2.l = ___bss_stop;
10164 + r2.h = ___bss_stop;
10165 + call __init_clear_bss
10166 +
10167 /* Pass the u-boot arguments to the global value command line */
10168 R0 = R7;
10169 call _cmdline_init;
10170 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/interrupt.S linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/interrupt.S
10171 --- linux-2.6.29.owrt/arch/blackfin/mach-common/interrupt.S 2009-05-10 22:04:40.000000000 +0200
10172 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/interrupt.S 2009-05-10 23:48:28.000000000 +0200
10173 @@ -195,7 +195,7 @@
10174 /* Interrupt routine for evt2 (NMI).
10175 * We don't actually use this, so just return.
10176 * For inner circle type details, please see:
10177 - * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:nmi
10178 + * http://docs.blackfin.uclinux.org/doku.php?id=linux:nmi
10179 */
10180 ENTRY(_evt_nmi)
10181 .weak _evt_nmi
10182 @@ -235,7 +235,6 @@
10183
10184 #ifdef CONFIG_IPIPE
10185 ENTRY(___ipipe_call_irqtail)
10186 - p0 = r0;
10187 r0.l = 1f;
10188 r0.h = 1f;
10189 reti = r0;
10190 @@ -243,6 +242,9 @@
10191 1:
10192 [--sp] = rets;
10193 [--sp] = ( r7:4, p5:3 );
10194 + p0.l = ___ipipe_irq_tail_hook;
10195 + p0.h = ___ipipe_irq_tail_hook;
10196 + p0 = [p0];
10197 sp += -12;
10198 call (p0);
10199 sp += 12;
10200 @@ -257,7 +259,7 @@
10201 p0.h = hi(EVT14);
10202 [p0] = r0;
10203 csync;
10204 - r0 = 0x401f (z);
10205 + r0 = 0x401f;
10206 sti r0;
10207 raise 14;
10208 [--sp] = reti; /* IRQs on. */
10209 @@ -275,7 +277,11 @@
10210 p0.h = _bfin_irq_flags;
10211 r0 = [p0];
10212 sti r0;
10213 +#if 0 /* FIXME: this actually raises scheduling latencies */
10214 + /* Reenable interrupts */
10215 + [--sp] = reti;
10216 + r0 = [sp++];
10217 +#endif
10218 rts;
10219 ENDPROC(___ipipe_call_irqtail)
10220 -
10221 #endif /* CONFIG_IPIPE */
10222 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/ints-priority.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/ints-priority.c
10223 --- linux-2.6.29.owrt/arch/blackfin/mach-common/ints-priority.c 2009-05-10 22:04:40.000000000 +0200
10224 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/ints-priority.c 2009-05-10 23:48:28.000000000 +0200
10225 @@ -161,15 +161,11 @@
10226
10227 static void bfin_internal_mask_irq(unsigned int irq)
10228 {
10229 - unsigned long flags;
10230 -
10231 #ifdef CONFIG_BF53x
10232 - local_irq_save_hw(flags);
10233 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() &
10234 ~(1 << SIC_SYSIRQ(irq)));
10235 #else
10236 unsigned mask_bank, mask_bit;
10237 - local_irq_save_hw(flags);
10238 mask_bank = SIC_SYSIRQ(irq) / 32;
10239 mask_bit = SIC_SYSIRQ(irq) % 32;
10240 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) &
10241 @@ -179,20 +175,15 @@
10242 ~(1 << mask_bit));
10243 #endif
10244 #endif
10245 - local_irq_restore_hw(flags);
10246 }
10247
10248 static void bfin_internal_unmask_irq(unsigned int irq)
10249 {
10250 - unsigned long flags;
10251 -
10252 #ifdef CONFIG_BF53x
10253 - local_irq_save_hw(flags);
10254 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() |
10255 (1 << SIC_SYSIRQ(irq)));
10256 #else
10257 unsigned mask_bank, mask_bit;
10258 - local_irq_save_hw(flags);
10259 mask_bank = SIC_SYSIRQ(irq) / 32;
10260 mask_bit = SIC_SYSIRQ(irq) % 32;
10261 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) |
10262 @@ -202,7 +193,6 @@
10263 (1 << mask_bit));
10264 #endif
10265 #endif
10266 - local_irq_restore_hw(flags);
10267 }
10268
10269 #ifdef CONFIG_PM
10270 @@ -400,7 +390,7 @@
10271 static inline void bfin_set_irq_handler(unsigned irq, irq_flow_handler_t handle)
10272 {
10273 #ifdef CONFIG_IPIPE
10274 - _set_irq_handler(irq, handle_level_irq);
10275 + _set_irq_handler(irq, handle_edge_irq);
10276 #else
10277 struct irq_desc *desc = irq_desc + irq;
10278 /* May not call generic set_irq_handler() due to spinlock
10279 @@ -1065,18 +1055,13 @@
10280 #endif
10281 default:
10282 #ifdef CONFIG_IPIPE
10283 - /*
10284 - * We want internal interrupt sources to be
10285 - * masked, because ISRs may trigger interrupts
10286 - * recursively (e.g. DMA), but interrupts are
10287 - * _not_ masked at CPU level. So let's handle
10288 - * most of them as level interrupts, except
10289 - * the timer interrupt which is special.
10290 - */
10291 - if (irq == IRQ_SYSTMR || irq == IRQ_CORETMR)
10292 - set_irq_handler(irq, handle_simple_irq);
10293 - else
10294 - set_irq_handler(irq, handle_level_irq);
10295 + /*
10296 + * We want internal interrupt sources to be masked, because
10297 + * ISRs may trigger interrupts recursively (e.g. DMA), but
10298 + * interrupts are _not_ masked at CPU level. So let's handle
10299 + * them as level interrupts.
10300 + */
10301 + set_irq_handler(irq, handle_level_irq);
10302 #else /* !CONFIG_IPIPE */
10303 set_irq_handler(irq, handle_simple_irq);
10304 #endif /* !CONFIG_IPIPE */
10305 @@ -1116,9 +1101,10 @@
10306 IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 |
10307 IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW;
10308
10309 -#ifdef SIC_IWR0
10310 +#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) \
10311 + || defined(BF538_FAMILY) || defined(CONFIG_BF51x)
10312 bfin_write_SIC_IWR0(IWR_DISABLE_ALL);
10313 -# ifdef SIC_IWR1
10314 +#if defined(CONFIG_BF52x) || defined(CONFIG_BF51x)
10315 /* BF52x/BF51x system reset does not properly reset SIC_IWR1 which
10316 * will screw up the bootrom as it relies on MDMA0/1 waking it
10317 * up from IDLE instructions. See this report for more info:
10318 @@ -1128,8 +1114,10 @@
10319 bfin_write_SIC_IWR1(IWR_ENABLE(10) | IWR_ENABLE(11));
10320 else
10321 bfin_write_SIC_IWR1(IWR_DISABLE_ALL);
10322 -# endif
10323 -# ifdef SIC_IWR2
10324 +#else
10325 + bfin_write_SIC_IWR1(IWR_DISABLE_ALL);
10326 +#endif
10327 +# ifdef CONFIG_BF54x
10328 bfin_write_SIC_IWR2(IWR_DISABLE_ALL);
10329 # endif
10330 #else
10331 @@ -1138,8 +1126,9 @@
10332
10333 #ifdef CONFIG_IPIPE
10334 for (irq = 0; irq < NR_IRQS; irq++) {
10335 - struct irq_desc *desc = irq_to_desc(irq);
10336 + struct irq_desc *desc = irq_desc + irq;
10337 desc->ic_prio = __ipipe_get_irq_priority(irq);
10338 + desc->thr_prio = __ipipe_get_irqthread_priority(irq);
10339 }
10340 #endif /* CONFIG_IPIPE */
10341
10342 @@ -1222,21 +1211,76 @@
10343 return IVG15;
10344 }
10345
10346 +int __ipipe_get_irqthread_priority(unsigned irq)
10347 +{
10348 + int ient, prio;
10349 + int demux_irq;
10350 +
10351 + /* The returned priority value is rescaled to [0..IVG13+1]
10352 + * with 0 being the lowest effective priority level. */
10353 +
10354 + if (irq <= IRQ_CORETMR)
10355 + return IVG13 - irq + 1;
10356 +
10357 + /* GPIO IRQs are given the priority of the demux
10358 + * interrupt. */
10359 + if (IS_GPIOIRQ(irq)) {
10360 +#if defined(CONFIG_BF54x)
10361 + u32 bank = PINT_2_BANK(irq2pint_lut[irq - SYS_IRQS]);
10362 + demux_irq = (bank == 0 ? IRQ_PINT0 :
10363 + bank == 1 ? IRQ_PINT1 :
10364 + bank == 2 ? IRQ_PINT2 :
10365 + IRQ_PINT3);
10366 +#elif defined(CONFIG_BF561)
10367 + demux_irq = (irq >= IRQ_PF32 ? IRQ_PROG2_INTA :
10368 + irq >= IRQ_PF16 ? IRQ_PROG1_INTA :
10369 + IRQ_PROG0_INTA);
10370 +#elif defined(CONFIG_BF52x)
10371 + demux_irq = (irq >= IRQ_PH0 ? IRQ_PORTH_INTA :
10372 + irq >= IRQ_PG0 ? IRQ_PORTG_INTA :
10373 + IRQ_PORTF_INTA);
10374 +#else
10375 + demux_irq = irq;
10376 +#endif
10377 + return IVG13 - PRIO_GPIODEMUX(demux_irq) + 1;
10378 + }
10379 +
10380 + /* The GPIO demux interrupt is given a lower priority
10381 + * than the GPIO IRQs, so that its threaded handler
10382 + * unmasks the interrupt line after the decoded IRQs
10383 + * have been processed. */
10384 + prio = PRIO_GPIODEMUX(irq);
10385 + /* demux irq? */
10386 + if (prio != -1)
10387 + return IVG13 - prio;
10388 +
10389 + for (ient = 0; ient < NR_PERI_INTS; ient++) {
10390 + struct ivgx *ivg = ivg_table + ient;
10391 + if (ivg->irqno == irq) {
10392 + for (prio = 0; prio <= IVG13-IVG7; prio++) {
10393 + if (ivg7_13[prio].ifirst <= ivg &&
10394 + ivg7_13[prio].istop > ivg)
10395 + return IVG7 - prio;
10396 + }
10397 + }
10398 + }
10399 +
10400 + return 0;
10401 +}
10402 +
10403 /* Hw interrupts are disabled on entry (check SAVE_CONTEXT). */
10404 #ifdef CONFIG_DO_IRQ_L1
10405 __attribute__((l1_text))
10406 #endif
10407 asmlinkage int __ipipe_grab_irq(int vec, struct pt_regs *regs)
10408 {
10409 - struct ipipe_percpu_domain_data *p = ipipe_root_cpudom_ptr();
10410 - struct ipipe_domain *this_domain = ipipe_current_domain;
10411 struct ivgx *ivg_stop = ivg7_13[vec-IVG7].istop;
10412 struct ivgx *ivg = ivg7_13[vec-IVG7].ifirst;
10413 - int irq, s;
10414 + int irq;
10415
10416 if (likely(vec == EVT_IVTMR_P)) {
10417 irq = IRQ_CORETMR;
10418 - goto core_tick;
10419 + goto handle_irq;
10420 }
10421
10422 SSYNC();
10423 @@ -1278,39 +1322,24 @@
10424 irq = ivg->irqno;
10425
10426 if (irq == IRQ_SYSTMR) {
10427 -#ifdef CONFIG_GENERIC_CLOCKEVENTS
10428 -core_tick:
10429 -#else
10430 bfin_write_TIMER_STATUS(1); /* Latch TIMIL0 */
10431 -#endif
10432 /* This is basically what we need from the register frame. */
10433 __raw_get_cpu_var(__ipipe_tick_regs).ipend = regs->ipend;
10434 __raw_get_cpu_var(__ipipe_tick_regs).pc = regs->pc;
10435 - if (this_domain != ipipe_root_domain)
10436 - __raw_get_cpu_var(__ipipe_tick_regs).ipend &= ~0x10;
10437 - else
10438 + if (!ipipe_root_domain_p)
10439 __raw_get_cpu_var(__ipipe_tick_regs).ipend |= 0x10;
10440 + else
10441 + __raw_get_cpu_var(__ipipe_tick_regs).ipend &= ~0x10;
10442 }
10443
10444 -#ifndef CONFIG_GENERIC_CLOCKEVENTS
10445 -core_tick:
10446 -#endif
10447 - if (this_domain == ipipe_root_domain) {
10448 - s = __test_and_set_bit(IPIPE_SYNCDEFER_FLAG, &p->status);
10449 - barrier();
10450 - }
10451 +handle_irq:
10452
10453 ipipe_trace_irq_entry(irq);
10454 __ipipe_handle_irq(irq, regs);
10455 - ipipe_trace_irq_exit(irq);
10456 + ipipe_trace_irq_exit(irq);
10457
10458 - if (this_domain == ipipe_root_domain) {
10459 - set_thread_flag(TIF_IRQ_SYNC);
10460 - if (!s) {
10461 - __clear_bit(IPIPE_SYNCDEFER_FLAG, &p->status);
10462 - return !test_bit(IPIPE_STALL_FLAG, &p->status);
10463 - }
10464 - }
10465 + if (ipipe_root_domain_p)
10466 + return !test_bit(IPIPE_STALL_FLAG, &ipipe_root_cpudom_var(status));
10467
10468 return 0;
10469 }
10470 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/pm.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/pm.c
10471 --- linux-2.6.29.owrt/arch/blackfin/mach-common/pm.c 2009-05-10 22:04:40.000000000 +0200
10472 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/pm.c 2009-05-10 23:48:28.000000000 +0200
10473 @@ -82,9 +82,10 @@
10474
10475 bfin_pm_standby_restore();
10476
10477 -#ifdef SIC_IWR0
10478 +#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) || \
10479 + defined(CONFIG_BF538) || defined(CONFIG_BF539) || defined(CONFIG_BF51x)
10480 bfin_write_SIC_IWR0(IWR_DISABLE_ALL);
10481 -# ifdef SIC_IWR1
10482 +#if defined(CONFIG_BF52x) || defined(CONFIG_BF51x)
10483 /* BF52x system reset does not properly reset SIC_IWR1 which
10484 * will screw up the bootrom as it relies on MDMA0/1 waking it
10485 * up from IDLE instructions. See this report for more info:
10486 @@ -94,8 +95,10 @@
10487 bfin_write_SIC_IWR1(IWR_ENABLE(10) | IWR_ENABLE(11));
10488 else
10489 bfin_write_SIC_IWR1(IWR_DISABLE_ALL);
10490 -# endif
10491 -# ifdef SIC_IWR2
10492 +#else
10493 + bfin_write_SIC_IWR1(IWR_DISABLE_ALL);
10494 +#endif
10495 +# ifdef CONFIG_BF54x
10496 bfin_write_SIC_IWR2(IWR_DISABLE_ALL);
10497 # endif
10498 #else
10499 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mach-common/smp.c linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/smp.c
10500 --- linux-2.6.29.owrt/arch/blackfin/mach-common/smp.c 2009-05-10 22:04:40.000000000 +0200
10501 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mach-common/smp.c 2009-05-10 23:48:28.000000000 +0200
10502 @@ -158,14 +158,10 @@
10503 kfree(msg);
10504 break;
10505 case BFIN_IPI_CALL_FUNC:
10506 - spin_unlock(&msg_queue->lock);
10507 ipi_call_function(cpu, msg);
10508 - spin_lock(&msg_queue->lock);
10509 break;
10510 case BFIN_IPI_CPU_STOP:
10511 - spin_unlock(&msg_queue->lock);
10512 ipi_cpu_stop(cpu);
10513 - spin_lock(&msg_queue->lock);
10514 kfree(msg);
10515 break;
10516 default:
10517 @@ -461,7 +457,7 @@
10518 smp_flush_data.start = start;
10519 smp_flush_data.end = end;
10520
10521 - if (smp_call_function(&ipi_flush_icache, &smp_flush_data, 0))
10522 + if (smp_call_function(&ipi_flush_icache, &smp_flush_data, 1))
10523 printk(KERN_WARNING "SMP: failed to run I-cache flush request on other CPUs\n");
10524 }
10525 EXPORT_SYMBOL_GPL(smp_icache_flush_range_others);
10526 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/Makefile linux-2.6.29-rc3.owrt/arch/blackfin/Makefile
10527 --- linux-2.6.29.owrt/arch/blackfin/Makefile 2009-05-10 22:04:41.000000000 +0200
10528 +++ linux-2.6.29-rc3.owrt/arch/blackfin/Makefile 2009-05-10 23:48:28.000000000 +0200
10529 @@ -21,67 +21,57 @@
10530 KBUILD_DEFCONFIG := BF537-STAMP_defconfig
10531
10532 # setup the machine name and the machine dependent settings
10533 -machine-$(CONFIG_BF512) := bf518
10534 -machine-$(CONFIG_BF514) := bf518
10535 -machine-$(CONFIG_BF516) := bf518
10536 -machine-$(CONFIG_BF518) := bf518
10537 -machine-$(CONFIG_BF522) := bf527
10538 -machine-$(CONFIG_BF523) := bf527
10539 -machine-$(CONFIG_BF524) := bf527
10540 -machine-$(CONFIG_BF525) := bf527
10541 -machine-$(CONFIG_BF526) := bf527
10542 -machine-$(CONFIG_BF527) := bf527
10543 -machine-$(CONFIG_BF531) := bf533
10544 -machine-$(CONFIG_BF532) := bf533
10545 -machine-$(CONFIG_BF533) := bf533
10546 -machine-$(CONFIG_BF534) := bf537
10547 -machine-$(CONFIG_BF536) := bf537
10548 -machine-$(CONFIG_BF537) := bf537
10549 -machine-$(CONFIG_BF538) := bf538
10550 -machine-$(CONFIG_BF539) := bf538
10551 -machine-$(CONFIG_BF542) := bf548
10552 -machine-$(CONFIG_BF542M) := bf548
10553 -machine-$(CONFIG_BF544) := bf548
10554 -machine-$(CONFIG_BF544M) := bf548
10555 -machine-$(CONFIG_BF547) := bf548
10556 -machine-$(CONFIG_BF547M) := bf548
10557 -machine-$(CONFIG_BF548) := bf548
10558 -machine-$(CONFIG_BF548M) := bf548
10559 -machine-$(CONFIG_BF549) := bf548
10560 -machine-$(CONFIG_BF549M) := bf548
10561 -machine-$(CONFIG_BF561) := bf561
10562 +machine-$(CONFIG_BF512) := bf518
10563 +machine-$(CONFIG_BF514) := bf518
10564 +machine-$(CONFIG_BF516) := bf518
10565 +machine-$(CONFIG_BF518) := bf518
10566 +machine-$(CONFIG_BF522) := bf527
10567 +machine-$(CONFIG_BF523) := bf527
10568 +machine-$(CONFIG_BF524) := bf527
10569 +machine-$(CONFIG_BF525) := bf527
10570 +machine-$(CONFIG_BF526) := bf527
10571 +machine-$(CONFIG_BF527) := bf527
10572 +machine-$(CONFIG_BF531) := bf533
10573 +machine-$(CONFIG_BF532) := bf533
10574 +machine-$(CONFIG_BF533) := bf533
10575 +machine-$(CONFIG_BF534) := bf537
10576 +machine-$(CONFIG_BF536) := bf537
10577 +machine-$(CONFIG_BF537) := bf537
10578 +machine-$(CONFIG_BF538) := bf538
10579 +machine-$(CONFIG_BF539) := bf538
10580 +machine-$(CONFIG_BF542) := bf548
10581 +machine-$(CONFIG_BF544) := bf548
10582 +machine-$(CONFIG_BF547) := bf548
10583 +machine-$(CONFIG_BF548) := bf548
10584 +machine-$(CONFIG_BF549) := bf548
10585 +machine-$(CONFIG_BF561) := bf561
10586 MACHINE := $(machine-y)
10587 export MACHINE
10588
10589 -cpu-$(CONFIG_BF512) := bf512
10590 -cpu-$(CONFIG_BF514) := bf514
10591 -cpu-$(CONFIG_BF516) := bf516
10592 -cpu-$(CONFIG_BF518) := bf518
10593 -cpu-$(CONFIG_BF522) := bf522
10594 -cpu-$(CONFIG_BF523) := bf523
10595 -cpu-$(CONFIG_BF524) := bf524
10596 -cpu-$(CONFIG_BF525) := bf525
10597 -cpu-$(CONFIG_BF526) := bf526
10598 -cpu-$(CONFIG_BF527) := bf527
10599 -cpu-$(CONFIG_BF531) := bf531
10600 -cpu-$(CONFIG_BF532) := bf532
10601 -cpu-$(CONFIG_BF533) := bf533
10602 -cpu-$(CONFIG_BF534) := bf534
10603 -cpu-$(CONFIG_BF536) := bf536
10604 -cpu-$(CONFIG_BF537) := bf537
10605 -cpu-$(CONFIG_BF538) := bf538
10606 -cpu-$(CONFIG_BF539) := bf539
10607 -cpu-$(CONFIG_BF542) := bf542
10608 -cpu-$(CONFIG_BF542M) := bf542m
10609 -cpu-$(CONFIG_BF544) := bf544
10610 -cpu-$(CONFIG_BF544M) := bf544m
10611 -cpu-$(CONFIG_BF547) := bf547
10612 -cpu-$(CONFIG_BF547M) := bf547m
10613 -cpu-$(CONFIG_BF548) := bf548
10614 -cpu-$(CONFIG_BF548M) := bf548m
10615 -cpu-$(CONFIG_BF549) := bf549
10616 -cpu-$(CONFIG_BF549M) := bf549m
10617 -cpu-$(CONFIG_BF561) := bf561
10618 +cpu-$(CONFIG_BF512) := bf512
10619 +cpu-$(CONFIG_BF514) := bf514
10620 +cpu-$(CONFIG_BF516) := bf516
10621 +cpu-$(CONFIG_BF518) := bf518
10622 +cpu-$(CONFIG_BF522) := bf522
10623 +cpu-$(CONFIG_BF523) := bf523
10624 +cpu-$(CONFIG_BF524) := bf524
10625 +cpu-$(CONFIG_BF525) := bf525
10626 +cpu-$(CONFIG_BF526) := bf526
10627 +cpu-$(CONFIG_BF527) := bf527
10628 +cpu-$(CONFIG_BF531) := bf531
10629 +cpu-$(CONFIG_BF532) := bf532
10630 +cpu-$(CONFIG_BF533) := bf533
10631 +cpu-$(CONFIG_BF534) := bf534
10632 +cpu-$(CONFIG_BF536) := bf536
10633 +cpu-$(CONFIG_BF537) := bf537
10634 +cpu-$(CONFIG_BF538) := bf538
10635 +cpu-$(CONFIG_BF539) := bf539
10636 +cpu-$(CONFIG_BF542) := bf542
10637 +cpu-$(CONFIG_BF544) := bf544
10638 +cpu-$(CONFIG_BF547) := bf547
10639 +cpu-$(CONFIG_BF548) := bf548
10640 +cpu-$(CONFIG_BF549) := bf549
10641 +cpu-$(CONFIG_BF561) := bf561
10642
10643 rev-$(CONFIG_BF_REV_0_0) := 0.0
10644 rev-$(CONFIG_BF_REV_0_1) := 0.1
10645 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/blackfin/mm/init.c linux-2.6.29-rc3.owrt/arch/blackfin/mm/init.c
10646 --- linux-2.6.29.owrt/arch/blackfin/mm/init.c 2009-05-10 22:04:40.000000000 +0200
10647 +++ linux-2.6.29-rc3.owrt/arch/blackfin/mm/init.c 2009-05-10 23:48:28.000000000 +0200
10648 @@ -104,7 +104,7 @@
10649 }
10650 }
10651
10652 -asmlinkage void __init init_pda(void)
10653 +asmlinkage void init_pda(void)
10654 {
10655 unsigned int cpu = raw_smp_processor_id();
10656
10657 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/frv/mm/dma-alloc.c linux-2.6.29-rc3.owrt/arch/frv/mm/dma-alloc.c
10658 --- linux-2.6.29.owrt/arch/frv/mm/dma-alloc.c 2009-05-10 22:04:39.000000000 +0200
10659 +++ linux-2.6.29-rc3.owrt/arch/frv/mm/dma-alloc.c 2009-05-10 23:48:28.000000000 +0200
10660 @@ -36,10 +36,10 @@
10661 #include <linux/vmalloc.h>
10662 #include <linux/init.h>
10663 #include <linux/pci.h>
10664 -#include <linux/hardirq.h>
10665
10666 #include <asm/pgalloc.h>
10667 #include <asm/io.h>
10668 +#include <asm/hardirq.h>
10669 #include <asm/mmu_context.h>
10670 #include <asm/pgtable.h>
10671 #include <asm/mmu.h>
10672 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/configs/xen_domu_defconfig linux-2.6.29-rc3.owrt/arch/ia64/configs/xen_domu_defconfig
10673 --- linux-2.6.29.owrt/arch/ia64/configs/xen_domu_defconfig 2009-05-10 22:04:40.000000000 +0200
10674 +++ linux-2.6.29-rc3.owrt/arch/ia64/configs/xen_domu_defconfig 1970-01-01 01:00:00.000000000 +0100
10675 @@ -1,1601 +0,0 @@
10676 -#
10677 -# Automatically generated make config: don't edit
10678 -# Linux kernel version: 2.6.29-rc1
10679 -# Fri Jan 16 11:49:59 2009
10680 -#
10681 -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
10682 -
10683 -#
10684 -# General setup
10685 -#
10686 -CONFIG_EXPERIMENTAL=y
10687 -CONFIG_LOCK_KERNEL=y
10688 -CONFIG_INIT_ENV_ARG_LIMIT=32
10689 -CONFIG_LOCALVERSION=""
10690 -CONFIG_LOCALVERSION_AUTO=y
10691 -CONFIG_SWAP=y
10692 -CONFIG_SYSVIPC=y
10693 -CONFIG_SYSVIPC_SYSCTL=y
10694 -CONFIG_POSIX_MQUEUE=y
10695 -# CONFIG_BSD_PROCESS_ACCT is not set
10696 -# CONFIG_TASKSTATS is not set
10697 -# CONFIG_AUDIT is not set
10698 -CONFIG_IKCONFIG=y
10699 -CONFIG_IKCONFIG_PROC=y
10700 -CONFIG_LOG_BUF_SHIFT=20
10701 -CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
10702 -# CONFIG_GROUP_SCHED is not set
10703 -
10704 -#
10705 -# Control Group support
10706 -#
10707 -# CONFIG_CGROUPS is not set
10708 -CONFIG_SYSFS_DEPRECATED=y
10709 -CONFIG_SYSFS_DEPRECATED_V2=y
10710 -# CONFIG_RELAY is not set
10711 -CONFIG_NAMESPACES=y
10712 -# CONFIG_UTS_NS is not set
10713 -# CONFIG_IPC_NS is not set
10714 -# CONFIG_USER_NS is not set
10715 -# CONFIG_PID_NS is not set
10716 -CONFIG_BLK_DEV_INITRD=y
10717 -CONFIG_INITRAMFS_SOURCE=""
10718 -CONFIG_CC_OPTIMIZE_FOR_SIZE=y
10719 -CONFIG_SYSCTL=y
10720 -# CONFIG_EMBEDDED is not set
10721 -CONFIG_SYSCTL_SYSCALL=y
10722 -CONFIG_KALLSYMS=y
10723 -CONFIG_KALLSYMS_ALL=y
10724 -CONFIG_KALLSYMS_STRIP_GENERATED=y
10725 -# CONFIG_KALLSYMS_EXTRA_PASS is not set
10726 -CONFIG_HOTPLUG=y
10727 -CONFIG_PRINTK=y
10728 -CONFIG_BUG=y
10729 -CONFIG_ELF_CORE=y
10730 -CONFIG_COMPAT_BRK=y
10731 -CONFIG_BASE_FULL=y
10732 -CONFIG_FUTEX=y
10733 -CONFIG_ANON_INODES=y
10734 -CONFIG_EPOLL=y
10735 -CONFIG_SIGNALFD=y
10736 -CONFIG_TIMERFD=y
10737 -CONFIG_EVENTFD=y
10738 -CONFIG_SHMEM=y
10739 -CONFIG_AIO=y
10740 -CONFIG_VM_EVENT_COUNTERS=y
10741 -CONFIG_PCI_QUIRKS=y
10742 -CONFIG_SLUB_DEBUG=y
10743 -# CONFIG_SLAB is not set
10744 -CONFIG_SLUB=y
10745 -# CONFIG_SLOB is not set
10746 -# CONFIG_PROFILING is not set
10747 -CONFIG_HAVE_OPROFILE=y
10748 -# CONFIG_KPROBES is not set
10749 -CONFIG_HAVE_KPROBES=y
10750 -CONFIG_HAVE_KRETPROBES=y
10751 -CONFIG_HAVE_ARCH_TRACEHOOK=y
10752 -CONFIG_HAVE_DMA_ATTRS=y
10753 -CONFIG_USE_GENERIC_SMP_HELPERS=y
10754 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
10755 -CONFIG_SLABINFO=y
10756 -CONFIG_RT_MUTEXES=y
10757 -CONFIG_BASE_SMALL=0
10758 -CONFIG_MODULES=y
10759 -# CONFIG_MODULE_FORCE_LOAD is not set
10760 -CONFIG_MODULE_UNLOAD=y
10761 -# CONFIG_MODULE_FORCE_UNLOAD is not set
10762 -CONFIG_MODVERSIONS=y
10763 -CONFIG_MODULE_SRCVERSION_ALL=y
10764 -CONFIG_STOP_MACHINE=y
10765 -CONFIG_BLOCK=y
10766 -# CONFIG_BLK_DEV_IO_TRACE is not set
10767 -# CONFIG_BLK_DEV_BSG is not set
10768 -# CONFIG_BLK_DEV_INTEGRITY is not set
10769 -
10770 -#
10771 -# IO Schedulers
10772 -#
10773 -CONFIG_IOSCHED_NOOP=y
10774 -CONFIG_IOSCHED_AS=y
10775 -CONFIG_IOSCHED_DEADLINE=y
10776 -CONFIG_IOSCHED_CFQ=y
10777 -CONFIG_DEFAULT_AS=y
10778 -# CONFIG_DEFAULT_DEADLINE is not set
10779 -# CONFIG_DEFAULT_CFQ is not set
10780 -# CONFIG_DEFAULT_NOOP is not set
10781 -CONFIG_DEFAULT_IOSCHED="anticipatory"
10782 -CONFIG_CLASSIC_RCU=y
10783 -# CONFIG_TREE_RCU is not set
10784 -# CONFIG_PREEMPT_RCU is not set
10785 -# CONFIG_TREE_RCU_TRACE is not set
10786 -# CONFIG_PREEMPT_RCU_TRACE is not set
10787 -CONFIG_FREEZER=y
10788 -
10789 -#
10790 -# Processor type and features
10791 -#
10792 -CONFIG_IA64=y
10793 -CONFIG_64BIT=y
10794 -CONFIG_ZONE_DMA=y
10795 -CONFIG_QUICKLIST=y
10796 -CONFIG_MMU=y
10797 -CONFIG_SWIOTLB=y
10798 -CONFIG_IOMMU_HELPER=y
10799 -CONFIG_RWSEM_XCHGADD_ALGORITHM=y
10800 -CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
10801 -CONFIG_GENERIC_FIND_NEXT_BIT=y
10802 -CONFIG_GENERIC_CALIBRATE_DELAY=y
10803 -CONFIG_GENERIC_TIME=y
10804 -CONFIG_GENERIC_TIME_VSYSCALL=y
10805 -CONFIG_HAVE_SETUP_PER_CPU_AREA=y
10806 -CONFIG_DMI=y
10807 -CONFIG_EFI=y
10808 -CONFIG_GENERIC_IOMAP=y
10809 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
10810 -CONFIG_AUDIT_ARCH=y
10811 -CONFIG_PARAVIRT_GUEST=y
10812 -CONFIG_PARAVIRT=y
10813 -CONFIG_XEN=y
10814 -CONFIG_XEN_XENCOMM=y
10815 -CONFIG_NO_IDLE_HZ=y
10816 -# CONFIG_IA64_GENERIC is not set
10817 -# CONFIG_IA64_DIG is not set
10818 -# CONFIG_IA64_DIG_VTD is not set
10819 -# CONFIG_IA64_HP_ZX1 is not set
10820 -# CONFIG_IA64_HP_ZX1_SWIOTLB is not set
10821 -# CONFIG_IA64_SGI_SN2 is not set
10822 -# CONFIG_IA64_SGI_UV is not set
10823 -# CONFIG_IA64_HP_SIM is not set
10824 -CONFIG_IA64_XEN_GUEST=y
10825 -# CONFIG_ITANIUM is not set
10826 -CONFIG_MCKINLEY=y
10827 -# CONFIG_IA64_PAGE_SIZE_4KB is not set
10828 -# CONFIG_IA64_PAGE_SIZE_8KB is not set
10829 -CONFIG_IA64_PAGE_SIZE_16KB=y
10830 -# CONFIG_IA64_PAGE_SIZE_64KB is not set
10831 -CONFIG_PGTABLE_3=y
10832 -# CONFIG_PGTABLE_4 is not set
10833 -CONFIG_HZ=250
10834 -# CONFIG_HZ_100 is not set
10835 -CONFIG_HZ_250=y
10836 -# CONFIG_HZ_300 is not set
10837 -# CONFIG_HZ_1000 is not set
10838 -# CONFIG_SCHED_HRTICK is not set
10839 -CONFIG_IA64_L1_CACHE_SHIFT=7
10840 -CONFIG_IA64_CYCLONE=y
10841 -CONFIG_IOSAPIC=y
10842 -CONFIG_FORCE_MAX_ZONEORDER=17
10843 -# CONFIG_VIRT_CPU_ACCOUNTING is not set
10844 -CONFIG_SMP=y
10845 -CONFIG_NR_CPUS=16
10846 -CONFIG_HOTPLUG_CPU=y
10847 -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
10848 -CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
10849 -# CONFIG_SCHED_SMT is not set
10850 -CONFIG_PERMIT_BSP_REMOVE=y
10851 -CONFIG_FORCE_CPEI_RETARGET=y
10852 -CONFIG_PREEMPT_NONE=y
10853 -# CONFIG_PREEMPT_VOLUNTARY is not set
10854 -# CONFIG_PREEMPT is not set
10855 -CONFIG_SELECT_MEMORY_MODEL=y
10856 -CONFIG_FLATMEM_MANUAL=y
10857 -# CONFIG_DISCONTIGMEM_MANUAL is not set
10858 -# CONFIG_SPARSEMEM_MANUAL is not set
10859 -CONFIG_FLATMEM=y
10860 -CONFIG_FLAT_NODE_MEM_MAP=y
10861 -CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
10862 -CONFIG_PAGEFLAGS_EXTENDED=y
10863 -CONFIG_SPLIT_PTLOCK_CPUS=4
10864 -CONFIG_MIGRATION=y
10865 -CONFIG_PHYS_ADDR_T_64BIT=y
10866 -CONFIG_ZONE_DMA_FLAG=1
10867 -CONFIG_BOUNCE=y
10868 -CONFIG_NR_QUICK=1
10869 -CONFIG_VIRT_TO_BUS=y
10870 -CONFIG_UNEVICTABLE_LRU=y
10871 -CONFIG_ARCH_SELECT_MEMORY_MODEL=y
10872 -CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
10873 -CONFIG_ARCH_FLATMEM_ENABLE=y
10874 -CONFIG_ARCH_SPARSEMEM_ENABLE=y
10875 -CONFIG_ARCH_POPULATES_NODE_MAP=y
10876 -CONFIG_VIRTUAL_MEM_MAP=y
10877 -CONFIG_HOLES_IN_ZONE=y
10878 -# CONFIG_IA32_SUPPORT is not set
10879 -# CONFIG_COMPAT_FOR_U64_ALIGNMENT is not set
10880 -CONFIG_IA64_MCA_RECOVERY=y
10881 -CONFIG_PERFMON=y
10882 -CONFIG_IA64_PALINFO=y
10883 -# CONFIG_IA64_MC_ERR_INJECT is not set
10884 -# CONFIG_IA64_ESI is not set
10885 -# CONFIG_IA64_HP_AML_NFW is not set
10886 -CONFIG_KEXEC=y
10887 -# CONFIG_CRASH_DUMP is not set
10888 -
10889 -#
10890 -# Firmware Drivers
10891 -#
10892 -# CONFIG_FIRMWARE_MEMMAP is not set
10893 -CONFIG_EFI_VARS=y
10894 -CONFIG_EFI_PCDP=y
10895 -CONFIG_DMIID=y
10896 -CONFIG_BINFMT_ELF=y
10897 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
10898 -# CONFIG_HAVE_AOUT is not set
10899 -CONFIG_BINFMT_MISC=m
10900 -
10901 -#
10902 -# Power management and ACPI options
10903 -#
10904 -CONFIG_PM=y
10905 -# CONFIG_PM_DEBUG is not set
10906 -CONFIG_PM_SLEEP=y
10907 -CONFIG_SUSPEND=y
10908 -CONFIG_SUSPEND_FREEZER=y
10909 -CONFIG_ACPI=y
10910 -CONFIG_ACPI_SLEEP=y
10911 -CONFIG_ACPI_PROCFS=y
10912 -CONFIG_ACPI_PROCFS_POWER=y
10913 -CONFIG_ACPI_SYSFS_POWER=y
10914 -CONFIG_ACPI_PROC_EVENT=y
10915 -CONFIG_ACPI_BUTTON=m
10916 -CONFIG_ACPI_FAN=m
10917 -# CONFIG_ACPI_DOCK is not set
10918 -CONFIG_ACPI_PROCESSOR=m
10919 -CONFIG_ACPI_HOTPLUG_CPU=y
10920 -CONFIG_ACPI_THERMAL=m
10921 -# CONFIG_ACPI_CUSTOM_DSDT is not set
10922 -CONFIG_ACPI_BLACKLIST_YEAR=0
10923 -# CONFIG_ACPI_DEBUG is not set
10924 -# CONFIG_ACPI_PCI_SLOT is not set
10925 -CONFIG_ACPI_SYSTEM=y
10926 -CONFIG_ACPI_CONTAINER=m
10927 -
10928 -#
10929 -# CPU Frequency scaling
10930 -#
10931 -# CONFIG_CPU_FREQ is not set
10932 -
10933 -#
10934 -# Bus options (PCI, PCMCIA)
10935 -#
10936 -CONFIG_PCI=y
10937 -CONFIG_PCI_DOMAINS=y
10938 -CONFIG_PCI_SYSCALL=y
10939 -# CONFIG_PCIEPORTBUS is not set
10940 -CONFIG_ARCH_SUPPORTS_MSI=y
10941 -# CONFIG_PCI_MSI is not set
10942 -CONFIG_PCI_LEGACY=y
10943 -# CONFIG_PCI_DEBUG is not set
10944 -# CONFIG_PCI_STUB is not set
10945 -CONFIG_HOTPLUG_PCI=m
10946 -# CONFIG_HOTPLUG_PCI_FAKE is not set
10947 -CONFIG_HOTPLUG_PCI_ACPI=m
10948 -# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
10949 -# CONFIG_HOTPLUG_PCI_CPCI is not set
10950 -# CONFIG_HOTPLUG_PCI_SHPC is not set
10951 -# CONFIG_PCCARD is not set
10952 -CONFIG_NET=y
10953 -
10954 -#
10955 -# Networking options
10956 -#
10957 -# CONFIG_NET_NS is not set
10958 -CONFIG_COMPAT_NET_DEV_OPS=y
10959 -CONFIG_PACKET=y
10960 -# CONFIG_PACKET_MMAP is not set
10961 -CONFIG_UNIX=y
10962 -CONFIG_XFRM=y
10963 -# CONFIG_XFRM_USER is not set
10964 -# CONFIG_XFRM_SUB_POLICY is not set
10965 -# CONFIG_XFRM_MIGRATE is not set
10966 -# CONFIG_XFRM_STATISTICS is not set
10967 -# CONFIG_NET_KEY is not set
10968 -CONFIG_INET=y
10969 -CONFIG_IP_MULTICAST=y
10970 -# CONFIG_IP_ADVANCED_ROUTER is not set
10971 -CONFIG_IP_FIB_HASH=y
10972 -# CONFIG_IP_PNP is not set
10973 -# CONFIG_NET_IPIP is not set
10974 -# CONFIG_NET_IPGRE is not set
10975 -# CONFIG_IP_MROUTE is not set
10976 -CONFIG_ARPD=y
10977 -CONFIG_SYN_COOKIES=y
10978 -# CONFIG_INET_AH is not set
10979 -# CONFIG_INET_ESP is not set
10980 -# CONFIG_INET_IPCOMP is not set
10981 -# CONFIG_INET_XFRM_TUNNEL is not set
10982 -# CONFIG_INET_TUNNEL is not set
10983 -CONFIG_INET_XFRM_MODE_TRANSPORT=y
10984 -CONFIG_INET_XFRM_MODE_TUNNEL=y
10985 -CONFIG_INET_XFRM_MODE_BEET=y
10986 -# CONFIG_INET_LRO is not set
10987 -CONFIG_INET_DIAG=y
10988 -CONFIG_INET_TCP_DIAG=y
10989 -# CONFIG_TCP_CONG_ADVANCED is not set
10990 -CONFIG_TCP_CONG_CUBIC=y
10991 -CONFIG_DEFAULT_TCP_CONG="cubic"
10992 -# CONFIG_TCP_MD5SIG is not set
10993 -# CONFIG_IPV6 is not set
10994 -# CONFIG_NETWORK_SECMARK is not set
10995 -# CONFIG_NETFILTER is not set
10996 -# CONFIG_IP_DCCP is not set
10997 -# CONFIG_IP_SCTP is not set
10998 -# CONFIG_TIPC is not set
10999 -# CONFIG_ATM is not set
11000 -# CONFIG_BRIDGE is not set
11001 -# CONFIG_NET_DSA is not set
11002 -# CONFIG_VLAN_8021Q is not set
11003 -# CONFIG_DECNET is not set
11004 -# CONFIG_LLC2 is not set
11005 -# CONFIG_IPX is not set
11006 -# CONFIG_ATALK is not set
11007 -# CONFIG_X25 is not set
11008 -# CONFIG_LAPB is not set
11009 -# CONFIG_ECONET is not set
11010 -# CONFIG_WAN_ROUTER is not set
11011 -# CONFIG_NET_SCHED is not set
11012 -# CONFIG_DCB is not set
11013 -
11014 -#
11015 -# Network testing
11016 -#
11017 -# CONFIG_NET_PKTGEN is not set
11018 -# CONFIG_HAMRADIO is not set
11019 -# CONFIG_CAN is not set
11020 -# CONFIG_IRDA is not set
11021 -# CONFIG_BT is not set
11022 -# CONFIG_AF_RXRPC is not set
11023 -# CONFIG_PHONET is not set
11024 -# CONFIG_WIRELESS is not set
11025 -# CONFIG_WIMAX is not set
11026 -# CONFIG_RFKILL is not set
11027 -# CONFIG_NET_9P is not set
11028 -
11029 -#
11030 -# Device Drivers
11031 -#
11032 -
11033 -#
11034 -# Generic Driver Options
11035 -#
11036 -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
11037 -CONFIG_STANDALONE=y
11038 -CONFIG_PREVENT_FIRMWARE_BUILD=y
11039 -CONFIG_FW_LOADER=y
11040 -CONFIG_FIRMWARE_IN_KERNEL=y
11041 -CONFIG_EXTRA_FIRMWARE=""
11042 -# CONFIG_DEBUG_DRIVER is not set
11043 -# CONFIG_DEBUG_DEVRES is not set
11044 -# CONFIG_SYS_HYPERVISOR is not set
11045 -# CONFIG_CONNECTOR is not set
11046 -# CONFIG_MTD is not set
11047 -# CONFIG_PARPORT is not set
11048 -CONFIG_PNP=y
11049 -CONFIG_PNP_DEBUG_MESSAGES=y
11050 -
11051 -#
11052 -# Protocols
11053 -#
11054 -CONFIG_PNPACPI=y
11055 -CONFIG_BLK_DEV=y
11056 -# CONFIG_BLK_CPQ_DA is not set
11057 -# CONFIG_BLK_CPQ_CISS_DA is not set
11058 -# CONFIG_BLK_DEV_DAC960 is not set
11059 -# CONFIG_BLK_DEV_UMEM is not set
11060 -# CONFIG_BLK_DEV_COW_COMMON is not set
11061 -CONFIG_BLK_DEV_LOOP=m
11062 -CONFIG_BLK_DEV_CRYPTOLOOP=m
11063 -CONFIG_BLK_DEV_NBD=m
11064 -# CONFIG_BLK_DEV_SX8 is not set
11065 -# CONFIG_BLK_DEV_UB is not set
11066 -CONFIG_BLK_DEV_RAM=y
11067 -CONFIG_BLK_DEV_RAM_COUNT=16
11068 -CONFIG_BLK_DEV_RAM_SIZE=4096
11069 -# CONFIG_BLK_DEV_XIP is not set
11070 -# CONFIG_CDROM_PKTCDVD is not set
11071 -# CONFIG_ATA_OVER_ETH is not set
11072 -CONFIG_XEN_BLKDEV_FRONTEND=y
11073 -# CONFIG_BLK_DEV_HD is not set
11074 -CONFIG_MISC_DEVICES=y
11075 -# CONFIG_PHANTOM is not set
11076 -# CONFIG_EEPROM_93CX6 is not set
11077 -# CONFIG_SGI_IOC4 is not set
11078 -# CONFIG_TIFM_CORE is not set
11079 -# CONFIG_ICS932S401 is not set
11080 -# CONFIG_ENCLOSURE_SERVICES is not set
11081 -# CONFIG_HP_ILO is not set
11082 -# CONFIG_C2PORT is not set
11083 -CONFIG_HAVE_IDE=y
11084 -CONFIG_IDE=y
11085 -
11086 -#
11087 -# Please see Documentation/ide/ide.txt for help/info on IDE drives
11088 -#
11089 -CONFIG_IDE_TIMINGS=y
11090 -CONFIG_IDE_ATAPI=y
11091 -# CONFIG_BLK_DEV_IDE_SATA is not set
11092 -CONFIG_IDE_GD=y
11093 -CONFIG_IDE_GD_ATA=y
11094 -# CONFIG_IDE_GD_ATAPI is not set
11095 -CONFIG_BLK_DEV_IDECD=y
11096 -CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
11097 -# CONFIG_BLK_DEV_IDETAPE is not set
11098 -# CONFIG_BLK_DEV_IDEACPI is not set
11099 -# CONFIG_IDE_TASK_IOCTL is not set
11100 -CONFIG_IDE_PROC_FS=y
11101 -
11102 -#
11103 -# IDE chipset support/bugfixes
11104 -#
11105 -# CONFIG_IDE_GENERIC is not set
11106 -# CONFIG_BLK_DEV_PLATFORM is not set
11107 -# CONFIG_BLK_DEV_IDEPNP is not set
11108 -CONFIG_BLK_DEV_IDEDMA_SFF=y
11109 -
11110 -#
11111 -# PCI IDE chipsets support
11112 -#
11113 -CONFIG_BLK_DEV_IDEPCI=y
11114 -CONFIG_IDEPCI_PCIBUS_ORDER=y
11115 -# CONFIG_BLK_DEV_OFFBOARD is not set
11116 -CONFIG_BLK_DEV_GENERIC=y
11117 -# CONFIG_BLK_DEV_OPTI621 is not set
11118 -CONFIG_BLK_DEV_IDEDMA_PCI=y
11119 -# CONFIG_BLK_DEV_AEC62XX is not set
11120 -# CONFIG_BLK_DEV_ALI15X3 is not set
11121 -# CONFIG_BLK_DEV_AMD74XX is not set
11122 -CONFIG_BLK_DEV_CMD64X=y
11123 -# CONFIG_BLK_DEV_TRIFLEX is not set
11124 -# CONFIG_BLK_DEV_CS5520 is not set
11125 -# CONFIG_BLK_DEV_CS5530 is not set
11126 -# CONFIG_BLK_DEV_HPT366 is not set
11127 -# CONFIG_BLK_DEV_JMICRON is not set
11128 -# CONFIG_BLK_DEV_SC1200 is not set
11129 -CONFIG_BLK_DEV_PIIX=y
11130 -# CONFIG_BLK_DEV_IT8172 is not set
11131 -# CONFIG_BLK_DEV_IT8213 is not set
11132 -# CONFIG_BLK_DEV_IT821X is not set
11133 -# CONFIG_BLK_DEV_NS87415 is not set
11134 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set
11135 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set
11136 -# CONFIG_BLK_DEV_SVWKS is not set
11137 -# CONFIG_BLK_DEV_SIIMAGE is not set
11138 -# CONFIG_BLK_DEV_SLC90E66 is not set
11139 -# CONFIG_BLK_DEV_TRM290 is not set
11140 -# CONFIG_BLK_DEV_VIA82CXXX is not set
11141 -# CONFIG_BLK_DEV_TC86C001 is not set
11142 -CONFIG_BLK_DEV_IDEDMA=y
11143 -
11144 -#
11145 -# SCSI device support
11146 -#
11147 -# CONFIG_RAID_ATTRS is not set
11148 -CONFIG_SCSI=y
11149 -CONFIG_SCSI_DMA=y
11150 -# CONFIG_SCSI_TGT is not set
11151 -CONFIG_SCSI_NETLINK=y
11152 -CONFIG_SCSI_PROC_FS=y
11153 -
11154 -#
11155 -# SCSI support type (disk, tape, CD-ROM)
11156 -#
11157 -CONFIG_BLK_DEV_SD=y
11158 -CONFIG_CHR_DEV_ST=m
11159 -# CONFIG_CHR_DEV_OSST is not set
11160 -CONFIG_BLK_DEV_SR=m
11161 -# CONFIG_BLK_DEV_SR_VENDOR is not set
11162 -CONFIG_CHR_DEV_SG=m
11163 -# CONFIG_CHR_DEV_SCH is not set
11164 -
11165 -#
11166 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
11167 -#
11168 -# CONFIG_SCSI_MULTI_LUN is not set
11169 -# CONFIG_SCSI_CONSTANTS is not set
11170 -# CONFIG_SCSI_LOGGING is not set
11171 -# CONFIG_SCSI_SCAN_ASYNC is not set
11172 -CONFIG_SCSI_WAIT_SCAN=m
11173 -
11174 -#
11175 -# SCSI Transports
11176 -#
11177 -CONFIG_SCSI_SPI_ATTRS=y
11178 -CONFIG_SCSI_FC_ATTRS=y
11179 -# CONFIG_SCSI_ISCSI_ATTRS is not set
11180 -# CONFIG_SCSI_SAS_LIBSAS is not set
11181 -# CONFIG_SCSI_SRP_ATTRS is not set
11182 -CONFIG_SCSI_LOWLEVEL=y
11183 -# CONFIG_ISCSI_TCP is not set
11184 -# CONFIG_SCSI_CXGB3_ISCSI is not set
11185 -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
11186 -# CONFIG_SCSI_3W_9XXX is not set
11187 -# CONFIG_SCSI_ACARD is not set
11188 -# CONFIG_SCSI_AACRAID is not set
11189 -# CONFIG_SCSI_AIC7XXX is not set
11190 -# CONFIG_SCSI_AIC7XXX_OLD is not set
11191 -# CONFIG_SCSI_AIC79XX is not set
11192 -# CONFIG_SCSI_AIC94XX is not set
11193 -# CONFIG_SCSI_DPT_I2O is not set
11194 -# CONFIG_SCSI_ADVANSYS is not set
11195 -# CONFIG_SCSI_ARCMSR is not set
11196 -# CONFIG_MEGARAID_NEWGEN is not set
11197 -# CONFIG_MEGARAID_LEGACY is not set
11198 -# CONFIG_MEGARAID_SAS is not set
11199 -# CONFIG_SCSI_HPTIOP is not set
11200 -# CONFIG_LIBFC is not set
11201 -# CONFIG_FCOE is not set
11202 -# CONFIG_SCSI_DMX3191D is not set
11203 -# CONFIG_SCSI_FUTURE_DOMAIN is not set
11204 -# CONFIG_SCSI_IPS is not set
11205 -# CONFIG_SCSI_INITIO is not set
11206 -# CONFIG_SCSI_INIA100 is not set
11207 -# CONFIG_SCSI_MVSAS is not set
11208 -# CONFIG_SCSI_STEX is not set
11209 -CONFIG_SCSI_SYM53C8XX_2=y
11210 -CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
11211 -CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
11212 -CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
11213 -CONFIG_SCSI_SYM53C8XX_MMIO=y
11214 -CONFIG_SCSI_QLOGIC_1280=y
11215 -# CONFIG_SCSI_QLA_FC is not set
11216 -# CONFIG_SCSI_QLA_ISCSI is not set
11217 -# CONFIG_SCSI_LPFC is not set
11218 -# CONFIG_SCSI_DC395x is not set
11219 -# CONFIG_SCSI_DC390T is not set
11220 -# CONFIG_SCSI_DEBUG is not set
11221 -# CONFIG_SCSI_SRP is not set
11222 -# CONFIG_SCSI_DH is not set
11223 -# CONFIG_ATA is not set
11224 -CONFIG_MD=y
11225 -CONFIG_BLK_DEV_MD=m
11226 -CONFIG_MD_LINEAR=m
11227 -CONFIG_MD_RAID0=m
11228 -CONFIG_MD_RAID1=m
11229 -# CONFIG_MD_RAID10 is not set
11230 -# CONFIG_MD_RAID456 is not set
11231 -CONFIG_MD_MULTIPATH=m
11232 -# CONFIG_MD_FAULTY is not set
11233 -CONFIG_BLK_DEV_DM=m
11234 -# CONFIG_DM_DEBUG is not set
11235 -CONFIG_DM_CRYPT=m
11236 -CONFIG_DM_SNAPSHOT=m
11237 -CONFIG_DM_MIRROR=m
11238 -CONFIG_DM_ZERO=m
11239 -# CONFIG_DM_MULTIPATH is not set
11240 -# CONFIG_DM_DELAY is not set
11241 -# CONFIG_DM_UEVENT is not set
11242 -CONFIG_FUSION=y
11243 -CONFIG_FUSION_SPI=y
11244 -CONFIG_FUSION_FC=y
11245 -# CONFIG_FUSION_SAS is not set
11246 -CONFIG_FUSION_MAX_SGE=128
11247 -CONFIG_FUSION_CTL=y
11248 -# CONFIG_FUSION_LOGGING is not set
11249 -
11250 -#
11251 -# IEEE 1394 (FireWire) support
11252 -#
11253 -
11254 -#
11255 -# Enable only one of the two stacks, unless you know what you are doing
11256 -#
11257 -# CONFIG_FIREWIRE is not set
11258 -# CONFIG_IEEE1394 is not set
11259 -# CONFIG_I2O is not set
11260 -CONFIG_NETDEVICES=y
11261 -CONFIG_DUMMY=m
11262 -# CONFIG_BONDING is not set
11263 -# CONFIG_MACVLAN is not set
11264 -# CONFIG_EQUALIZER is not set
11265 -# CONFIG_TUN is not set
11266 -# CONFIG_VETH is not set
11267 -# CONFIG_NET_SB1000 is not set
11268 -# CONFIG_ARCNET is not set
11269 -CONFIG_PHYLIB=y
11270 -
11271 -#
11272 -# MII PHY device drivers
11273 -#
11274 -# CONFIG_MARVELL_PHY is not set
11275 -# CONFIG_DAVICOM_PHY is not set
11276 -# CONFIG_QSEMI_PHY is not set
11277 -# CONFIG_LXT_PHY is not set
11278 -# CONFIG_CICADA_PHY is not set
11279 -# CONFIG_VITESSE_PHY is not set
11280 -# CONFIG_SMSC_PHY is not set
11281 -# CONFIG_BROADCOM_PHY is not set
11282 -# CONFIG_ICPLUS_PHY is not set
11283 -# CONFIG_REALTEK_PHY is not set
11284 -# CONFIG_NATIONAL_PHY is not set
11285 -# CONFIG_STE10XP is not set
11286 -# CONFIG_LSI_ET1011C_PHY is not set
11287 -# CONFIG_FIXED_PHY is not set
11288 -# CONFIG_MDIO_BITBANG is not set
11289 -CONFIG_NET_ETHERNET=y
11290 -CONFIG_MII=m
11291 -# CONFIG_HAPPYMEAL is not set
11292 -# CONFIG_SUNGEM is not set
11293 -# CONFIG_CASSINI is not set
11294 -# CONFIG_NET_VENDOR_3COM is not set
11295 -CONFIG_NET_TULIP=y
11296 -# CONFIG_DE2104X is not set
11297 -CONFIG_TULIP=m
11298 -# CONFIG_TULIP_MWI is not set
11299 -# CONFIG_TULIP_MMIO is not set
11300 -# CONFIG_TULIP_NAPI is not set
11301 -# CONFIG_DE4X5 is not set
11302 -# CONFIG_WINBOND_840 is not set
11303 -# CONFIG_DM9102 is not set
11304 -# CONFIG_ULI526X is not set
11305 -# CONFIG_HP100 is not set
11306 -# CONFIG_IBM_NEW_EMAC_ZMII is not set
11307 -# CONFIG_IBM_NEW_EMAC_RGMII is not set
11308 -# CONFIG_IBM_NEW_EMAC_TAH is not set
11309 -# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
11310 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
11311 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
11312 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
11313 -CONFIG_NET_PCI=y
11314 -# CONFIG_PCNET32 is not set
11315 -# CONFIG_AMD8111_ETH is not set
11316 -# CONFIG_ADAPTEC_STARFIRE is not set
11317 -# CONFIG_B44 is not set
11318 -# CONFIG_FORCEDETH is not set
11319 -CONFIG_E100=m
11320 -# CONFIG_FEALNX is not set
11321 -# CONFIG_NATSEMI is not set
11322 -# CONFIG_NE2K_PCI is not set
11323 -# CONFIG_8139CP is not set
11324 -# CONFIG_8139TOO is not set
11325 -# CONFIG_R6040 is not set
11326 -# CONFIG_SIS900 is not set
11327 -# CONFIG_EPIC100 is not set
11328 -# CONFIG_SMSC9420 is not set
11329 -# CONFIG_SUNDANCE is not set
11330 -# CONFIG_TLAN is not set
11331 -# CONFIG_VIA_RHINE is not set
11332 -# CONFIG_SC92031 is not set
11333 -# CONFIG_ATL2 is not set
11334 -CONFIG_NETDEV_1000=y
11335 -# CONFIG_ACENIC is not set
11336 -# CONFIG_DL2K is not set
11337 -CONFIG_E1000=y
11338 -# CONFIG_E1000E is not set
11339 -# CONFIG_IP1000 is not set
11340 -# CONFIG_IGB is not set
11341 -# CONFIG_NS83820 is not set
11342 -# CONFIG_HAMACHI is not set
11343 -# CONFIG_YELLOWFIN is not set
11344 -# CONFIG_R8169 is not set
11345 -# CONFIG_SIS190 is not set
11346 -# CONFIG_SKGE is not set
11347 -# CONFIG_SKY2 is not set
11348 -# CONFIG_VIA_VELOCITY is not set
11349 -CONFIG_TIGON3=y
11350 -# CONFIG_BNX2 is not set
11351 -# CONFIG_QLA3XXX is not set
11352 -# CONFIG_ATL1 is not set
11353 -# CONFIG_ATL1E is not set
11354 -# CONFIG_JME is not set
11355 -CONFIG_NETDEV_10000=y
11356 -# CONFIG_CHELSIO_T1 is not set
11357 -CONFIG_CHELSIO_T3_DEPENDS=y
11358 -# CONFIG_CHELSIO_T3 is not set
11359 -# CONFIG_ENIC is not set
11360 -# CONFIG_IXGBE is not set
11361 -# CONFIG_IXGB is not set
11362 -# CONFIG_S2IO is not set
11363 -# CONFIG_MYRI10GE is not set
11364 -# CONFIG_NETXEN_NIC is not set
11365 -# CONFIG_NIU is not set
11366 -# CONFIG_MLX4_EN is not set
11367 -# CONFIG_MLX4_CORE is not set
11368 -# CONFIG_TEHUTI is not set
11369 -# CONFIG_BNX2X is not set
11370 -# CONFIG_QLGE is not set
11371 -# CONFIG_SFC is not set
11372 -# CONFIG_TR is not set
11373 -
11374 -#
11375 -# Wireless LAN
11376 -#
11377 -# CONFIG_WLAN_PRE80211 is not set
11378 -# CONFIG_WLAN_80211 is not set
11379 -# CONFIG_IWLWIFI_LEDS is not set
11380 -
11381 -#
11382 -# Enable WiMAX (Networking options) to see the WiMAX drivers
11383 -#
11384 -
11385 -#
11386 -# USB Network Adapters
11387 -#
11388 -# CONFIG_USB_CATC is not set
11389 -# CONFIG_USB_KAWETH is not set
11390 -# CONFIG_USB_PEGASUS is not set
11391 -# CONFIG_USB_RTL8150 is not set
11392 -# CONFIG_USB_USBNET is not set
11393 -# CONFIG_WAN is not set
11394 -CONFIG_XEN_NETDEV_FRONTEND=y
11395 -# CONFIG_FDDI is not set
11396 -# CONFIG_HIPPI is not set
11397 -# CONFIG_PPP is not set
11398 -# CONFIG_SLIP is not set
11399 -# CONFIG_NET_FC is not set
11400 -CONFIG_NETCONSOLE=y
11401 -# CONFIG_NETCONSOLE_DYNAMIC is not set
11402 -CONFIG_NETPOLL=y
11403 -# CONFIG_NETPOLL_TRAP is not set
11404 -CONFIG_NET_POLL_CONTROLLER=y
11405 -# CONFIG_ISDN is not set
11406 -# CONFIG_PHONE is not set
11407 -
11408 -#
11409 -# Input device support
11410 -#
11411 -CONFIG_INPUT=y
11412 -# CONFIG_INPUT_FF_MEMLESS is not set
11413 -# CONFIG_INPUT_POLLDEV is not set
11414 -
11415 -#
11416 -# Userland interfaces
11417 -#
11418 -CONFIG_INPUT_MOUSEDEV=y
11419 -CONFIG_INPUT_MOUSEDEV_PSAUX=y
11420 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
11421 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
11422 -# CONFIG_INPUT_JOYDEV is not set
11423 -# CONFIG_INPUT_EVDEV is not set
11424 -# CONFIG_INPUT_EVBUG is not set
11425 -
11426 -#
11427 -# Input Device Drivers
11428 -#
11429 -CONFIG_INPUT_KEYBOARD=y
11430 -CONFIG_KEYBOARD_ATKBD=y
11431 -# CONFIG_KEYBOARD_SUNKBD is not set
11432 -# CONFIG_KEYBOARD_LKKBD is not set
11433 -# CONFIG_KEYBOARD_XTKBD is not set
11434 -# CONFIG_KEYBOARD_NEWTON is not set
11435 -# CONFIG_KEYBOARD_STOWAWAY is not set
11436 -CONFIG_INPUT_MOUSE=y
11437 -CONFIG_MOUSE_PS2=y
11438 -CONFIG_MOUSE_PS2_ALPS=y
11439 -CONFIG_MOUSE_PS2_LOGIPS2PP=y
11440 -CONFIG_MOUSE_PS2_SYNAPTICS=y
11441 -CONFIG_MOUSE_PS2_LIFEBOOK=y
11442 -CONFIG_MOUSE_PS2_TRACKPOINT=y
11443 -# CONFIG_MOUSE_PS2_ELANTECH is not set
11444 -# CONFIG_MOUSE_PS2_TOUCHKIT is not set
11445 -# CONFIG_MOUSE_SERIAL is not set
11446 -# CONFIG_MOUSE_APPLETOUCH is not set
11447 -# CONFIG_MOUSE_BCM5974 is not set
11448 -# CONFIG_MOUSE_VSXXXAA is not set
11449 -# CONFIG_INPUT_JOYSTICK is not set
11450 -# CONFIG_INPUT_TABLET is not set
11451 -# CONFIG_INPUT_TOUCHSCREEN is not set
11452 -# CONFIG_INPUT_MISC is not set
11453 -
11454 -#
11455 -# Hardware I/O ports
11456 -#
11457 -CONFIG_SERIO=y
11458 -CONFIG_SERIO_I8042=y
11459 -# CONFIG_SERIO_SERPORT is not set
11460 -# CONFIG_SERIO_PCIPS2 is not set
11461 -CONFIG_SERIO_LIBPS2=y
11462 -# CONFIG_SERIO_RAW is not set
11463 -CONFIG_GAMEPORT=m
11464 -# CONFIG_GAMEPORT_NS558 is not set
11465 -# CONFIG_GAMEPORT_L4 is not set
11466 -# CONFIG_GAMEPORT_EMU10K1 is not set
11467 -# CONFIG_GAMEPORT_FM801 is not set
11468 -
11469 -#
11470 -# Character devices
11471 -#
11472 -CONFIG_VT=y
11473 -CONFIG_CONSOLE_TRANSLATIONS=y
11474 -CONFIG_VT_CONSOLE=y
11475 -CONFIG_HW_CONSOLE=y
11476 -# CONFIG_VT_HW_CONSOLE_BINDING is not set
11477 -CONFIG_DEVKMEM=y
11478 -CONFIG_SERIAL_NONSTANDARD=y
11479 -# CONFIG_COMPUTONE is not set
11480 -# CONFIG_ROCKETPORT is not set
11481 -# CONFIG_CYCLADES is not set
11482 -# CONFIG_DIGIEPCA is not set
11483 -# CONFIG_MOXA_INTELLIO is not set
11484 -# CONFIG_MOXA_SMARTIO is not set
11485 -# CONFIG_ISI is not set
11486 -# CONFIG_SYNCLINKMP is not set
11487 -# CONFIG_SYNCLINK_GT is not set
11488 -# CONFIG_N_HDLC is not set
11489 -# CONFIG_RISCOM8 is not set
11490 -# CONFIG_SPECIALIX is not set
11491 -# CONFIG_SX is not set
11492 -# CONFIG_RIO is not set
11493 -# CONFIG_STALDRV is not set
11494 -# CONFIG_NOZOMI is not set
11495 -
11496 -#
11497 -# Serial drivers
11498 -#
11499 -CONFIG_SERIAL_8250=y
11500 -CONFIG_SERIAL_8250_CONSOLE=y
11501 -CONFIG_SERIAL_8250_PCI=y
11502 -CONFIG_SERIAL_8250_PNP=y
11503 -CONFIG_SERIAL_8250_NR_UARTS=6
11504 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4
11505 -CONFIG_SERIAL_8250_EXTENDED=y
11506 -CONFIG_SERIAL_8250_SHARE_IRQ=y
11507 -# CONFIG_SERIAL_8250_DETECT_IRQ is not set
11508 -# CONFIG_SERIAL_8250_RSA is not set
11509 -
11510 -#
11511 -# Non-8250 serial port support
11512 -#
11513 -CONFIG_SERIAL_CORE=y
11514 -CONFIG_SERIAL_CORE_CONSOLE=y
11515 -# CONFIG_SERIAL_JSM is not set
11516 -CONFIG_UNIX98_PTYS=y
11517 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
11518 -CONFIG_LEGACY_PTYS=y
11519 -CONFIG_LEGACY_PTY_COUNT=256
11520 -CONFIG_HVC_DRIVER=y
11521 -CONFIG_HVC_IRQ=y
11522 -CONFIG_HVC_XEN=y
11523 -# CONFIG_IPMI_HANDLER is not set
11524 -# CONFIG_HW_RANDOM is not set
11525 -CONFIG_EFI_RTC=y
11526 -# CONFIG_R3964 is not set
11527 -# CONFIG_APPLICOM is not set
11528 -CONFIG_RAW_DRIVER=m
11529 -CONFIG_MAX_RAW_DEVS=256
11530 -CONFIG_HPET=y
11531 -CONFIG_HPET_MMAP=y
11532 -# CONFIG_HANGCHECK_TIMER is not set
11533 -# CONFIG_TCG_TPM is not set
11534 -CONFIG_DEVPORT=y
11535 -CONFIG_I2C=m
11536 -CONFIG_I2C_BOARDINFO=y
11537 -# CONFIG_I2C_CHARDEV is not set
11538 -CONFIG_I2C_HELPER_AUTO=y
11539 -CONFIG_I2C_ALGOBIT=m
11540 -
11541 -#
11542 -# I2C Hardware Bus support
11543 -#
11544 -
11545 -#
11546 -# PC SMBus host controller drivers
11547 -#
11548 -# CONFIG_I2C_ALI1535 is not set
11549 -# CONFIG_I2C_ALI1563 is not set
11550 -# CONFIG_I2C_ALI15X3 is not set
11551 -# CONFIG_I2C_AMD756 is not set
11552 -# CONFIG_I2C_AMD8111 is not set
11553 -# CONFIG_I2C_I801 is not set
11554 -# CONFIG_I2C_ISCH is not set
11555 -# CONFIG_I2C_PIIX4 is not set
11556 -# CONFIG_I2C_NFORCE2 is not set
11557 -# CONFIG_I2C_SIS5595 is not set
11558 -# CONFIG_I2C_SIS630 is not set
11559 -# CONFIG_I2C_SIS96X is not set
11560 -# CONFIG_I2C_VIA is not set
11561 -# CONFIG_I2C_VIAPRO is not set
11562 -
11563 -#
11564 -# I2C system bus drivers (mostly embedded / system-on-chip)
11565 -#
11566 -# CONFIG_I2C_OCORES is not set
11567 -# CONFIG_I2C_SIMTEC is not set
11568 -
11569 -#
11570 -# External I2C/SMBus adapter drivers
11571 -#
11572 -# CONFIG_I2C_PARPORT_LIGHT is not set
11573 -# CONFIG_I2C_TAOS_EVM is not set
11574 -# CONFIG_I2C_TINY_USB is not set
11575 -
11576 -#
11577 -# Graphics adapter I2C/DDC channel drivers
11578 -#
11579 -# CONFIG_I2C_VOODOO3 is not set
11580 -
11581 -#
11582 -# Other I2C/SMBus bus drivers
11583 -#
11584 -# CONFIG_I2C_PCA_PLATFORM is not set
11585 -# CONFIG_I2C_STUB is not set
11586 -
11587 -#
11588 -# Miscellaneous I2C Chip support
11589 -#
11590 -# CONFIG_DS1682 is not set
11591 -# CONFIG_AT24 is not set
11592 -# CONFIG_SENSORS_EEPROM is not set
11593 -# CONFIG_SENSORS_PCF8574 is not set
11594 -# CONFIG_PCF8575 is not set
11595 -# CONFIG_SENSORS_PCA9539 is not set
11596 -# CONFIG_SENSORS_PCF8591 is not set
11597 -# CONFIG_SENSORS_MAX6875 is not set
11598 -# CONFIG_SENSORS_TSL2550 is not set
11599 -# CONFIG_I2C_DEBUG_CORE is not set
11600 -# CONFIG_I2C_DEBUG_ALGO is not set
11601 -# CONFIG_I2C_DEBUG_BUS is not set
11602 -# CONFIG_I2C_DEBUG_CHIP is not set
11603 -# CONFIG_SPI is not set
11604 -# CONFIG_W1 is not set
11605 -CONFIG_POWER_SUPPLY=y
11606 -# CONFIG_POWER_SUPPLY_DEBUG is not set
11607 -# CONFIG_PDA_POWER is not set
11608 -# CONFIG_BATTERY_DS2760 is not set
11609 -# CONFIG_BATTERY_BQ27x00 is not set
11610 -CONFIG_HWMON=y
11611 -# CONFIG_HWMON_VID is not set
11612 -# CONFIG_SENSORS_AD7414 is not set
11613 -# CONFIG_SENSORS_AD7418 is not set
11614 -# CONFIG_SENSORS_ADM1021 is not set
11615 -# CONFIG_SENSORS_ADM1025 is not set
11616 -# CONFIG_SENSORS_ADM1026 is not set
11617 -# CONFIG_SENSORS_ADM1029 is not set
11618 -# CONFIG_SENSORS_ADM1031 is not set
11619 -# CONFIG_SENSORS_ADM9240 is not set
11620 -# CONFIG_SENSORS_ADT7462 is not set
11621 -# CONFIG_SENSORS_ADT7470 is not set
11622 -# CONFIG_SENSORS_ADT7473 is not set
11623 -# CONFIG_SENSORS_ATXP1 is not set
11624 -# CONFIG_SENSORS_DS1621 is not set
11625 -# CONFIG_SENSORS_I5K_AMB is not set
11626 -# CONFIG_SENSORS_F71805F is not set
11627 -# CONFIG_SENSORS_F71882FG is not set
11628 -# CONFIG_SENSORS_F75375S is not set
11629 -# CONFIG_SENSORS_GL518SM is not set
11630 -# CONFIG_SENSORS_GL520SM is not set
11631 -# CONFIG_SENSORS_IT87 is not set
11632 -# CONFIG_SENSORS_LM63 is not set
11633 -# CONFIG_SENSORS_LM75 is not set
11634 -# CONFIG_SENSORS_LM77 is not set
11635 -# CONFIG_SENSORS_LM78 is not set
11636 -# CONFIG_SENSORS_LM80 is not set
11637 -# CONFIG_SENSORS_LM83 is not set
11638 -# CONFIG_SENSORS_LM85 is not set
11639 -# CONFIG_SENSORS_LM87 is not set
11640 -# CONFIG_SENSORS_LM90 is not set
11641 -# CONFIG_SENSORS_LM92 is not set
11642 -# CONFIG_SENSORS_LM93 is not set
11643 -# CONFIG_SENSORS_LTC4245 is not set
11644 -# CONFIG_SENSORS_MAX1619 is not set
11645 -# CONFIG_SENSORS_MAX6650 is not set
11646 -# CONFIG_SENSORS_PC87360 is not set
11647 -# CONFIG_SENSORS_PC87427 is not set
11648 -# CONFIG_SENSORS_SIS5595 is not set
11649 -# CONFIG_SENSORS_DME1737 is not set
11650 -# CONFIG_SENSORS_SMSC47M1 is not set
11651 -# CONFIG_SENSORS_SMSC47M192 is not set
11652 -# CONFIG_SENSORS_SMSC47B397 is not set
11653 -# CONFIG_SENSORS_ADS7828 is not set
11654 -# CONFIG_SENSORS_THMC50 is not set
11655 -# CONFIG_SENSORS_VIA686A is not set
11656 -# CONFIG_SENSORS_VT1211 is not set
11657 -# CONFIG_SENSORS_VT8231 is not set
11658 -# CONFIG_SENSORS_W83781D is not set
11659 -# CONFIG_SENSORS_W83791D is not set
11660 -# CONFIG_SENSORS_W83792D is not set
11661 -# CONFIG_SENSORS_W83793 is not set
11662 -# CONFIG_SENSORS_W83L785TS is not set
11663 -# CONFIG_SENSORS_W83L786NG is not set
11664 -# CONFIG_SENSORS_W83627HF is not set
11665 -# CONFIG_SENSORS_W83627EHF is not set
11666 -# CONFIG_SENSORS_LIS3LV02D is not set
11667 -# CONFIG_HWMON_DEBUG_CHIP is not set
11668 -CONFIG_THERMAL=m
11669 -# CONFIG_THERMAL_HWMON is not set
11670 -# CONFIG_WATCHDOG is not set
11671 -CONFIG_SSB_POSSIBLE=y
11672 -
11673 -#
11674 -# Sonics Silicon Backplane
11675 -#
11676 -# CONFIG_SSB is not set
11677 -
11678 -#
11679 -# Multifunction device drivers
11680 -#
11681 -# CONFIG_MFD_CORE is not set
11682 -# CONFIG_MFD_SM501 is not set
11683 -# CONFIG_HTC_PASIC3 is not set
11684 -# CONFIG_MFD_TMIO is not set
11685 -# CONFIG_MFD_WM8400 is not set
11686 -# CONFIG_MFD_WM8350_I2C is not set
11687 -# CONFIG_MFD_PCF50633 is not set
11688 -# CONFIG_REGULATOR is not set
11689 -
11690 -#
11691 -# Multimedia devices
11692 -#
11693 -
11694 -#
11695 -# Multimedia core support
11696 -#
11697 -# CONFIG_VIDEO_DEV is not set
11698 -# CONFIG_DVB_CORE is not set
11699 -# CONFIG_VIDEO_MEDIA is not set
11700 -
11701 -#
11702 -# Multimedia drivers
11703 -#
11704 -CONFIG_DAB=y
11705 -# CONFIG_USB_DABUSB is not set
11706 -
11707 -#
11708 -# Graphics support
11709 -#
11710 -CONFIG_AGP=m
11711 -CONFIG_DRM=m
11712 -CONFIG_DRM_TDFX=m
11713 -CONFIG_DRM_R128=m
11714 -CONFIG_DRM_RADEON=m
11715 -CONFIG_DRM_MGA=m
11716 -CONFIG_DRM_SIS=m
11717 -# CONFIG_DRM_VIA is not set
11718 -# CONFIG_DRM_SAVAGE is not set
11719 -# CONFIG_VGASTATE is not set
11720 -# CONFIG_VIDEO_OUTPUT_CONTROL is not set
11721 -# CONFIG_FB is not set
11722 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
11723 -
11724 -#
11725 -# Display device support
11726 -#
11727 -# CONFIG_DISPLAY_SUPPORT is not set
11728 -
11729 -#
11730 -# Console display driver support
11731 -#
11732 -CONFIG_VGA_CONSOLE=y
11733 -# CONFIG_VGACON_SOFT_SCROLLBACK is not set
11734 -CONFIG_DUMMY_CONSOLE=y
11735 -# CONFIG_SOUND is not set
11736 -CONFIG_HID_SUPPORT=y
11737 -CONFIG_HID=y
11738 -# CONFIG_HID_DEBUG is not set
11739 -# CONFIG_HIDRAW is not set
11740 -
11741 -#
11742 -# USB Input Devices
11743 -#
11744 -CONFIG_USB_HID=y
11745 -# CONFIG_HID_PID is not set
11746 -# CONFIG_USB_HIDDEV is not set
11747 -
11748 -#
11749 -# Special HID drivers
11750 -#
11751 -CONFIG_HID_COMPAT=y
11752 -CONFIG_HID_A4TECH=y
11753 -CONFIG_HID_APPLE=y
11754 -CONFIG_HID_BELKIN=y
11755 -CONFIG_HID_CHERRY=y
11756 -CONFIG_HID_CHICONY=y
11757 -CONFIG_HID_CYPRESS=y
11758 -CONFIG_HID_EZKEY=y
11759 -CONFIG_HID_GYRATION=y
11760 -CONFIG_HID_LOGITECH=y
11761 -# CONFIG_LOGITECH_FF is not set
11762 -# CONFIG_LOGIRUMBLEPAD2_FF is not set
11763 -CONFIG_HID_MICROSOFT=y
11764 -CONFIG_HID_MONTEREY=y
11765 -CONFIG_HID_NTRIG=y
11766 -CONFIG_HID_PANTHERLORD=y
11767 -# CONFIG_PANTHERLORD_FF is not set
11768 -CONFIG_HID_PETALYNX=y
11769 -CONFIG_HID_SAMSUNG=y
11770 -CONFIG_HID_SONY=y
11771 -CONFIG_HID_SUNPLUS=y
11772 -# CONFIG_GREENASIA_FF is not set
11773 -CONFIG_HID_TOPSEED=y
11774 -# CONFIG_THRUSTMASTER_FF is not set
11775 -# CONFIG_ZEROPLUS_FF is not set
11776 -CONFIG_USB_SUPPORT=y
11777 -CONFIG_USB_ARCH_HAS_HCD=y
11778 -CONFIG_USB_ARCH_HAS_OHCI=y
11779 -CONFIG_USB_ARCH_HAS_EHCI=y
11780 -CONFIG_USB=y
11781 -# CONFIG_USB_DEBUG is not set
11782 -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
11783 -
11784 -#
11785 -# Miscellaneous USB options
11786 -#
11787 -CONFIG_USB_DEVICEFS=y
11788 -CONFIG_USB_DEVICE_CLASS=y
11789 -# CONFIG_USB_DYNAMIC_MINORS is not set
11790 -# CONFIG_USB_SUSPEND is not set
11791 -# CONFIG_USB_OTG is not set
11792 -# CONFIG_USB_MON is not set
11793 -# CONFIG_USB_WUSB is not set
11794 -# CONFIG_USB_WUSB_CBAF is not set
11795 -
11796 -#
11797 -# USB Host Controller Drivers
11798 -#
11799 -# CONFIG_USB_C67X00_HCD is not set
11800 -CONFIG_USB_EHCI_HCD=m
11801 -# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
11802 -# CONFIG_USB_EHCI_TT_NEWSCHED is not set
11803 -# CONFIG_USB_OXU210HP_HCD is not set
11804 -# CONFIG_USB_ISP116X_HCD is not set
11805 -# CONFIG_USB_ISP1760_HCD is not set
11806 -CONFIG_USB_OHCI_HCD=m
11807 -# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
11808 -# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
11809 -CONFIG_USB_OHCI_LITTLE_ENDIAN=y
11810 -CONFIG_USB_UHCI_HCD=y
11811 -# CONFIG_USB_SL811_HCD is not set
11812 -# CONFIG_USB_R8A66597_HCD is not set
11813 -# CONFIG_USB_WHCI_HCD is not set
11814 -# CONFIG_USB_HWA_HCD is not set
11815 -
11816 -#
11817 -# USB Device Class drivers
11818 -#
11819 -# CONFIG_USB_ACM is not set
11820 -# CONFIG_USB_PRINTER is not set
11821 -# CONFIG_USB_WDM is not set
11822 -# CONFIG_USB_TMC is not set
11823 -
11824 -#
11825 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
11826 -#
11827 -
11828 -#
11829 -# see USB_STORAGE Help for more information
11830 -#
11831 -CONFIG_USB_STORAGE=m
11832 -# CONFIG_USB_STORAGE_DEBUG is not set
11833 -# CONFIG_USB_STORAGE_DATAFAB is not set
11834 -# CONFIG_USB_STORAGE_FREECOM is not set
11835 -# CONFIG_USB_STORAGE_ISD200 is not set
11836 -# CONFIG_USB_STORAGE_USBAT is not set
11837 -# CONFIG_USB_STORAGE_SDDR09 is not set
11838 -# CONFIG_USB_STORAGE_SDDR55 is not set
11839 -# CONFIG_USB_STORAGE_JUMPSHOT is not set
11840 -# CONFIG_USB_STORAGE_ALAUDA is not set
11841 -# CONFIG_USB_STORAGE_ONETOUCH is not set
11842 -# CONFIG_USB_STORAGE_KARMA is not set
11843 -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
11844 -# CONFIG_USB_LIBUSUAL is not set
11845 -
11846 -#
11847 -# USB Imaging devices
11848 -#
11849 -# CONFIG_USB_MDC800 is not set
11850 -# CONFIG_USB_MICROTEK is not set
11851 -
11852 -#
11853 -# USB port drivers
11854 -#
11855 -# CONFIG_USB_SERIAL is not set
11856 -
11857 -#
11858 -# USB Miscellaneous drivers
11859 -#
11860 -# CONFIG_USB_EMI62 is not set
11861 -# CONFIG_USB_EMI26 is not set
11862 -# CONFIG_USB_ADUTUX is not set
11863 -# CONFIG_USB_SEVSEG is not set
11864 -# CONFIG_USB_RIO500 is not set
11865 -# CONFIG_USB_LEGOTOWER is not set
11866 -# CONFIG_USB_LCD is not set
11867 -# CONFIG_USB_BERRY_CHARGE is not set
11868 -# CONFIG_USB_LED is not set
11869 -# CONFIG_USB_CYPRESS_CY7C63 is not set
11870 -# CONFIG_USB_CYTHERM is not set
11871 -# CONFIG_USB_PHIDGET is not set
11872 -# CONFIG_USB_IDMOUSE is not set
11873 -# CONFIG_USB_FTDI_ELAN is not set
11874 -# CONFIG_USB_APPLEDISPLAY is not set
11875 -# CONFIG_USB_SISUSBVGA is not set
11876 -# CONFIG_USB_LD is not set
11877 -# CONFIG_USB_TRANCEVIBRATOR is not set
11878 -# CONFIG_USB_IOWARRIOR is not set
11879 -# CONFIG_USB_TEST is not set
11880 -# CONFIG_USB_ISIGHTFW is not set
11881 -# CONFIG_USB_VST is not set
11882 -# CONFIG_USB_GADGET is not set
11883 -
11884 -#
11885 -# OTG and related infrastructure
11886 -#
11887 -# CONFIG_UWB is not set
11888 -# CONFIG_MMC is not set
11889 -# CONFIG_MEMSTICK is not set
11890 -# CONFIG_NEW_LEDS is not set
11891 -# CONFIG_ACCESSIBILITY is not set
11892 -# CONFIG_INFINIBAND is not set
11893 -# CONFIG_RTC_CLASS is not set
11894 -# CONFIG_DMADEVICES is not set
11895 -# CONFIG_UIO is not set
11896 -CONFIG_XEN_BALLOON=y
11897 -CONFIG_XEN_SCRUB_PAGES=y
11898 -CONFIG_XENFS=y
11899 -CONFIG_XEN_COMPAT_XENFS=y
11900 -# CONFIG_STAGING is not set
11901 -# CONFIG_MSPEC is not set
11902 -
11903 -#
11904 -# File systems
11905 -#
11906 -CONFIG_EXT2_FS=y
11907 -CONFIG_EXT2_FS_XATTR=y
11908 -CONFIG_EXT2_FS_POSIX_ACL=y
11909 -CONFIG_EXT2_FS_SECURITY=y
11910 -# CONFIG_EXT2_FS_XIP is not set
11911 -CONFIG_EXT3_FS=y
11912 -CONFIG_EXT3_FS_XATTR=y
11913 -CONFIG_EXT3_FS_POSIX_ACL=y
11914 -CONFIG_EXT3_FS_SECURITY=y
11915 -# CONFIG_EXT4_FS is not set
11916 -CONFIG_JBD=y
11917 -CONFIG_FS_MBCACHE=y
11918 -CONFIG_REISERFS_FS=y
11919 -# CONFIG_REISERFS_CHECK is not set
11920 -# CONFIG_REISERFS_PROC_INFO is not set
11921 -CONFIG_REISERFS_FS_XATTR=y
11922 -CONFIG_REISERFS_FS_POSIX_ACL=y
11923 -CONFIG_REISERFS_FS_SECURITY=y
11924 -# CONFIG_JFS_FS is not set
11925 -CONFIG_FS_POSIX_ACL=y
11926 -CONFIG_FILE_LOCKING=y
11927 -CONFIG_XFS_FS=y
11928 -# CONFIG_XFS_QUOTA is not set
11929 -# CONFIG_XFS_POSIX_ACL is not set
11930 -# CONFIG_XFS_RT is not set
11931 -# CONFIG_XFS_DEBUG is not set
11932 -# CONFIG_GFS2_FS is not set
11933 -# CONFIG_OCFS2_FS is not set
11934 -# CONFIG_BTRFS_FS is not set
11935 -CONFIG_DNOTIFY=y
11936 -CONFIG_INOTIFY=y
11937 -CONFIG_INOTIFY_USER=y
11938 -# CONFIG_QUOTA is not set
11939 -CONFIG_AUTOFS_FS=y
11940 -CONFIG_AUTOFS4_FS=y
11941 -# CONFIG_FUSE_FS is not set
11942 -
11943 -#
11944 -# CD-ROM/DVD Filesystems
11945 -#
11946 -CONFIG_ISO9660_FS=m
11947 -CONFIG_JOLIET=y
11948 -# CONFIG_ZISOFS is not set
11949 -CONFIG_UDF_FS=m
11950 -CONFIG_UDF_NLS=y
11951 -
11952 -#
11953 -# DOS/FAT/NT Filesystems
11954 -#
11955 -CONFIG_FAT_FS=y
11956 -# CONFIG_MSDOS_FS is not set
11957 -CONFIG_VFAT_FS=y
11958 -CONFIG_FAT_DEFAULT_CODEPAGE=437
11959 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
11960 -CONFIG_NTFS_FS=m
11961 -# CONFIG_NTFS_DEBUG is not set
11962 -# CONFIG_NTFS_RW is not set
11963 -
11964 -#
11965 -# Pseudo filesystems
11966 -#
11967 -CONFIG_PROC_FS=y
11968 -CONFIG_PROC_KCORE=y
11969 -CONFIG_PROC_SYSCTL=y
11970 -CONFIG_PROC_PAGE_MONITOR=y
11971 -CONFIG_SYSFS=y
11972 -CONFIG_TMPFS=y
11973 -# CONFIG_TMPFS_POSIX_ACL is not set
11974 -CONFIG_HUGETLBFS=y
11975 -CONFIG_HUGETLB_PAGE=y
11976 -# CONFIG_CONFIGFS_FS is not set
11977 -CONFIG_MISC_FILESYSTEMS=y
11978 -# CONFIG_ADFS_FS is not set
11979 -# CONFIG_AFFS_FS is not set
11980 -# CONFIG_HFS_FS is not set
11981 -# CONFIG_HFSPLUS_FS is not set
11982 -# CONFIG_BEFS_FS is not set
11983 -# CONFIG_BFS_FS is not set
11984 -# CONFIG_EFS_FS is not set
11985 -# CONFIG_CRAMFS is not set
11986 -# CONFIG_SQUASHFS is not set
11987 -# CONFIG_VXFS_FS is not set
11988 -# CONFIG_MINIX_FS is not set
11989 -# CONFIG_OMFS_FS is not set
11990 -# CONFIG_HPFS_FS is not set
11991 -# CONFIG_QNX4FS_FS is not set
11992 -# CONFIG_ROMFS_FS is not set
11993 -# CONFIG_SYSV_FS is not set
11994 -# CONFIG_UFS_FS is not set
11995 -CONFIG_NETWORK_FILESYSTEMS=y
11996 -CONFIG_NFS_FS=m
11997 -CONFIG_NFS_V3=y
11998 -# CONFIG_NFS_V3_ACL is not set
11999 -CONFIG_NFS_V4=y
12000 -CONFIG_NFSD=m
12001 -CONFIG_NFSD_V3=y
12002 -# CONFIG_NFSD_V3_ACL is not set
12003 -CONFIG_NFSD_V4=y
12004 -CONFIG_LOCKD=m
12005 -CONFIG_LOCKD_V4=y
12006 -CONFIG_EXPORTFS=m
12007 -CONFIG_NFS_COMMON=y
12008 -CONFIG_SUNRPC=m
12009 -CONFIG_SUNRPC_GSS=m
12010 -# CONFIG_SUNRPC_REGISTER_V4 is not set
12011 -CONFIG_RPCSEC_GSS_KRB5=m
12012 -# CONFIG_RPCSEC_GSS_SPKM3 is not set
12013 -CONFIG_SMB_FS=m
12014 -CONFIG_SMB_NLS_DEFAULT=y
12015 -CONFIG_SMB_NLS_REMOTE="cp437"
12016 -CONFIG_CIFS=m
12017 -# CONFIG_CIFS_STATS is not set
12018 -# CONFIG_CIFS_WEAK_PW_HASH is not set
12019 -# CONFIG_CIFS_XATTR is not set
12020 -# CONFIG_CIFS_DEBUG2 is not set
12021 -# CONFIG_CIFS_EXPERIMENTAL is not set
12022 -# CONFIG_NCP_FS is not set
12023 -# CONFIG_CODA_FS is not set
12024 -# CONFIG_AFS_FS is not set
12025 -
12026 -#
12027 -# Partition Types
12028 -#
12029 -CONFIG_PARTITION_ADVANCED=y
12030 -# CONFIG_ACORN_PARTITION is not set
12031 -# CONFIG_OSF_PARTITION is not set
12032 -# CONFIG_AMIGA_PARTITION is not set
12033 -# CONFIG_ATARI_PARTITION is not set
12034 -# CONFIG_MAC_PARTITION is not set
12035 -CONFIG_MSDOS_PARTITION=y
12036 -# CONFIG_BSD_DISKLABEL is not set
12037 -# CONFIG_MINIX_SUBPARTITION is not set
12038 -# CONFIG_SOLARIS_X86_PARTITION is not set
12039 -# CONFIG_UNIXWARE_DISKLABEL is not set
12040 -# CONFIG_LDM_PARTITION is not set
12041 -CONFIG_SGI_PARTITION=y
12042 -# CONFIG_ULTRIX_PARTITION is not set
12043 -# CONFIG_SUN_PARTITION is not set
12044 -# CONFIG_KARMA_PARTITION is not set
12045 -CONFIG_EFI_PARTITION=y
12046 -# CONFIG_SYSV68_PARTITION is not set
12047 -CONFIG_NLS=y
12048 -CONFIG_NLS_DEFAULT="iso8859-1"
12049 -CONFIG_NLS_CODEPAGE_437=y
12050 -CONFIG_NLS_CODEPAGE_737=m
12051 -CONFIG_NLS_CODEPAGE_775=m
12052 -CONFIG_NLS_CODEPAGE_850=m
12053 -CONFIG_NLS_CODEPAGE_852=m
12054 -CONFIG_NLS_CODEPAGE_855=m
12055 -CONFIG_NLS_CODEPAGE_857=m
12056 -CONFIG_NLS_CODEPAGE_860=m
12057 -CONFIG_NLS_CODEPAGE_861=m
12058 -CONFIG_NLS_CODEPAGE_862=m
12059 -CONFIG_NLS_CODEPAGE_863=m
12060 -CONFIG_NLS_CODEPAGE_864=m
12061 -CONFIG_NLS_CODEPAGE_865=m
12062 -CONFIG_NLS_CODEPAGE_866=m
12063 -CONFIG_NLS_CODEPAGE_869=m
12064 -CONFIG_NLS_CODEPAGE_936=m
12065 -CONFIG_NLS_CODEPAGE_950=m
12066 -CONFIG_NLS_CODEPAGE_932=m
12067 -CONFIG_NLS_CODEPAGE_949=m
12068 -CONFIG_NLS_CODEPAGE_874=m
12069 -CONFIG_NLS_ISO8859_8=m
12070 -CONFIG_NLS_CODEPAGE_1250=m
12071 -CONFIG_NLS_CODEPAGE_1251=m
12072 -# CONFIG_NLS_ASCII is not set
12073 -CONFIG_NLS_ISO8859_1=y
12074 -CONFIG_NLS_ISO8859_2=m
12075 -CONFIG_NLS_ISO8859_3=m
12076 -CONFIG_NLS_ISO8859_4=m
12077 -CONFIG_NLS_ISO8859_5=m
12078 -CONFIG_NLS_ISO8859_6=m
12079 -CONFIG_NLS_ISO8859_7=m
12080 -CONFIG_NLS_ISO8859_9=m
12081 -CONFIG_NLS_ISO8859_13=m
12082 -CONFIG_NLS_ISO8859_14=m
12083 -CONFIG_NLS_ISO8859_15=m
12084 -CONFIG_NLS_KOI8_R=m
12085 -CONFIG_NLS_KOI8_U=m
12086 -CONFIG_NLS_UTF8=m
12087 -# CONFIG_DLM is not set
12088 -
12089 -#
12090 -# Kernel hacking
12091 -#
12092 -# CONFIG_PRINTK_TIME is not set
12093 -CONFIG_ENABLE_WARN_DEPRECATED=y
12094 -CONFIG_ENABLE_MUST_CHECK=y
12095 -CONFIG_FRAME_WARN=2048
12096 -CONFIG_MAGIC_SYSRQ=y
12097 -# CONFIG_UNUSED_SYMBOLS is not set
12098 -# CONFIG_DEBUG_FS is not set
12099 -# CONFIG_HEADERS_CHECK is not set
12100 -CONFIG_DEBUG_KERNEL=y
12101 -# CONFIG_DEBUG_SHIRQ is not set
12102 -CONFIG_DETECT_SOFTLOCKUP=y
12103 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
12104 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
12105 -CONFIG_SCHED_DEBUG=y
12106 -# CONFIG_SCHEDSTATS is not set
12107 -# CONFIG_TIMER_STATS is not set
12108 -# CONFIG_DEBUG_OBJECTS is not set
12109 -# CONFIG_SLUB_DEBUG_ON is not set
12110 -# CONFIG_SLUB_STATS is not set
12111 -# CONFIG_DEBUG_RT_MUTEXES is not set
12112 -# CONFIG_RT_MUTEX_TESTER is not set
12113 -# CONFIG_DEBUG_SPINLOCK is not set
12114 -CONFIG_DEBUG_MUTEXES=y
12115 -# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
12116 -# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
12117 -# CONFIG_DEBUG_KOBJECT is not set
12118 -# CONFIG_DEBUG_INFO is not set
12119 -# CONFIG_DEBUG_VM is not set
12120 -# CONFIG_DEBUG_WRITECOUNT is not set
12121 -CONFIG_DEBUG_MEMORY_INIT=y
12122 -# CONFIG_DEBUG_LIST is not set
12123 -# CONFIG_DEBUG_SG is not set
12124 -# CONFIG_DEBUG_NOTIFIERS is not set
12125 -# CONFIG_BOOT_PRINTK_DELAY is not set
12126 -# CONFIG_RCU_TORTURE_TEST is not set
12127 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
12128 -# CONFIG_BACKTRACE_SELF_TEST is not set
12129 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
12130 -# CONFIG_FAULT_INJECTION is not set
12131 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
12132 -
12133 -#
12134 -# Tracers
12135 -#
12136 -# CONFIG_SCHED_TRACER is not set
12137 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
12138 -# CONFIG_BOOT_TRACER is not set
12139 -# CONFIG_TRACE_BRANCH_PROFILING is not set
12140 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
12141 -# CONFIG_SAMPLES is not set
12142 -CONFIG_IA64_GRANULE_16MB=y
12143 -# CONFIG_IA64_GRANULE_64MB is not set
12144 -# CONFIG_IA64_PRINT_HAZARDS is not set
12145 -# CONFIG_DISABLE_VHPT is not set
12146 -# CONFIG_IA64_DEBUG_CMPXCHG is not set
12147 -# CONFIG_IA64_DEBUG_IRQ is not set
12148 -
12149 -#
12150 -# Security options
12151 -#
12152 -# CONFIG_KEYS is not set
12153 -# CONFIG_SECURITY is not set
12154 -# CONFIG_SECURITYFS is not set
12155 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
12156 -CONFIG_CRYPTO=y
12157 -
12158 -#
12159 -# Crypto core or helper
12160 -#
12161 -# CONFIG_CRYPTO_FIPS is not set
12162 -CONFIG_CRYPTO_ALGAPI=y
12163 -CONFIG_CRYPTO_ALGAPI2=y
12164 -CONFIG_CRYPTO_AEAD2=y
12165 -CONFIG_CRYPTO_BLKCIPHER=m
12166 -CONFIG_CRYPTO_BLKCIPHER2=y
12167 -CONFIG_CRYPTO_HASH=y
12168 -CONFIG_CRYPTO_HASH2=y
12169 -CONFIG_CRYPTO_RNG2=y
12170 -CONFIG_CRYPTO_MANAGER=m
12171 -CONFIG_CRYPTO_MANAGER2=y
12172 -# CONFIG_CRYPTO_GF128MUL is not set
12173 -# CONFIG_CRYPTO_NULL is not set
12174 -# CONFIG_CRYPTO_CRYPTD is not set
12175 -# CONFIG_CRYPTO_AUTHENC is not set
12176 -# CONFIG_CRYPTO_TEST is not set
12177 -
12178 -#
12179 -# Authenticated Encryption with Associated Data
12180 -#
12181 -# CONFIG_CRYPTO_CCM is not set
12182 -# CONFIG_CRYPTO_GCM is not set
12183 -# CONFIG_CRYPTO_SEQIV is not set
12184 -
12185 -#
12186 -# Block modes
12187 -#
12188 -CONFIG_CRYPTO_CBC=m
12189 -# CONFIG_CRYPTO_CTR is not set
12190 -# CONFIG_CRYPTO_CTS is not set
12191 -CONFIG_CRYPTO_ECB=m
12192 -# CONFIG_CRYPTO_LRW is not set
12193 -CONFIG_CRYPTO_PCBC=m
12194 -# CONFIG_CRYPTO_XTS is not set
12195 -
12196 -#
12197 -# Hash modes
12198 -#
12199 -# CONFIG_CRYPTO_HMAC is not set
12200 -# CONFIG_CRYPTO_XCBC is not set
12201 -
12202 -#
12203 -# Digest
12204 -#
12205 -# CONFIG_CRYPTO_CRC32C is not set
12206 -# CONFIG_CRYPTO_MD4 is not set
12207 -CONFIG_CRYPTO_MD5=y
12208 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
12209 -# CONFIG_CRYPTO_RMD128 is not set
12210 -# CONFIG_CRYPTO_RMD160 is not set
12211 -# CONFIG_CRYPTO_RMD256 is not set
12212 -# CONFIG_CRYPTO_RMD320 is not set
12213 -# CONFIG_CRYPTO_SHA1 is not set
12214 -# CONFIG_CRYPTO_SHA256 is not set
12215 -# CONFIG_CRYPTO_SHA512 is not set
12216 -# CONFIG_CRYPTO_TGR192 is not set
12217 -# CONFIG_CRYPTO_WP512 is not set
12218 -
12219 -#
12220 -# Ciphers
12221 -#
12222 -# CONFIG_CRYPTO_AES is not set
12223 -# CONFIG_CRYPTO_ANUBIS is not set
12224 -# CONFIG_CRYPTO_ARC4 is not set
12225 -# CONFIG_CRYPTO_BLOWFISH is not set
12226 -# CONFIG_CRYPTO_CAMELLIA is not set
12227 -# CONFIG_CRYPTO_CAST5 is not set
12228 -# CONFIG_CRYPTO_CAST6 is not set
12229 -CONFIG_CRYPTO_DES=m
12230 -# CONFIG_CRYPTO_FCRYPT is not set
12231 -# CONFIG_CRYPTO_KHAZAD is not set
12232 -# CONFIG_CRYPTO_SALSA20 is not set
12233 -# CONFIG_CRYPTO_SEED is not set
12234 -# CONFIG_CRYPTO_SERPENT is not set
12235 -# CONFIG_CRYPTO_TEA is not set
12236 -# CONFIG_CRYPTO_TWOFISH is not set
12237 -
12238 -#
12239 -# Compression
12240 -#
12241 -# CONFIG_CRYPTO_DEFLATE is not set
12242 -# CONFIG_CRYPTO_LZO is not set
12243 -
12244 -#
12245 -# Random Number Generation
12246 -#
12247 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
12248 -CONFIG_CRYPTO_HW=y
12249 -# CONFIG_CRYPTO_DEV_HIFN_795X is not set
12250 -CONFIG_HAVE_KVM=y
12251 -CONFIG_VIRTUALIZATION=y
12252 -# CONFIG_KVM is not set
12253 -# CONFIG_VIRTIO_PCI is not set
12254 -# CONFIG_VIRTIO_BALLOON is not set
12255 -
12256 -#
12257 -# Library routines
12258 -#
12259 -CONFIG_BITREVERSE=y
12260 -CONFIG_GENERIC_FIND_LAST_BIT=y
12261 -# CONFIG_CRC_CCITT is not set
12262 -# CONFIG_CRC16 is not set
12263 -# CONFIG_CRC_T10DIF is not set
12264 -CONFIG_CRC_ITU_T=m
12265 -CONFIG_CRC32=y
12266 -# CONFIG_CRC7 is not set
12267 -# CONFIG_LIBCRC32C is not set
12268 -CONFIG_PLIST=y
12269 -CONFIG_HAS_IOMEM=y
12270 -CONFIG_HAS_IOPORT=y
12271 -CONFIG_HAS_DMA=y
12272 -CONFIG_GENERIC_HARDIRQS=y
12273 -CONFIG_GENERIC_IRQ_PROBE=y
12274 -CONFIG_GENERIC_PENDING_IRQ=y
12275 -CONFIG_IRQ_PER_CPU=y
12276 -# CONFIG_IOMMU_API is not set
12277 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/hp/common/sba_iommu.c linux-2.6.29-rc3.owrt/arch/ia64/hp/common/sba_iommu.c
12278 --- linux-2.6.29.owrt/arch/ia64/hp/common/sba_iommu.c 2009-05-10 22:04:40.000000000 +0200
12279 +++ linux-2.6.29-rc3.owrt/arch/ia64/hp/common/sba_iommu.c 2009-05-10 23:48:28.000000000 +0200
12280 @@ -906,7 +906,7 @@
12281 * @dir: R/W or both.
12282 * @attrs: optional dma attributes
12283 *
12284 - * See Documentation/PCI/PCI-DMA-mapping.txt
12285 + * See Documentation/DMA-mapping.txt
12286 */
12287 dma_addr_t
12288 sba_map_single_attrs(struct device *dev, void *addr, size_t size, int dir,
12289 @@ -1024,7 +1024,7 @@
12290 * @dir: R/W or both.
12291 * @attrs: optional dma attributes
12292 *
12293 - * See Documentation/PCI/PCI-DMA-mapping.txt
12294 + * See Documentation/DMA-mapping.txt
12295 */
12296 void sba_unmap_single_attrs(struct device *dev, dma_addr_t iova, size_t size,
12297 int dir, struct dma_attrs *attrs)
12298 @@ -1102,7 +1102,7 @@
12299 * @size: number of bytes mapped in driver buffer.
12300 * @dma_handle: IOVA of new buffer.
12301 *
12302 - * See Documentation/PCI/PCI-DMA-mapping.txt
12303 + * See Documentation/DMA-mapping.txt
12304 */
12305 void *
12306 sba_alloc_coherent (struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flags)
12307 @@ -1165,7 +1165,7 @@
12308 * @vaddr: virtual address IOVA of "consistent" buffer.
12309 * @dma_handler: IO virtual address of "consistent" buffer.
12310 *
12311 - * See Documentation/PCI/PCI-DMA-mapping.txt
12312 + * See Documentation/DMA-mapping.txt
12313 */
12314 void sba_free_coherent (struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle)
12315 {
12316 @@ -1420,7 +1420,7 @@
12317 * @dir: R/W or both.
12318 * @attrs: optional dma attributes
12319 *
12320 - * See Documentation/PCI/PCI-DMA-mapping.txt
12321 + * See Documentation/DMA-mapping.txt
12322 */
12323 int sba_map_sg_attrs(struct device *dev, struct scatterlist *sglist, int nents,
12324 int dir, struct dma_attrs *attrs)
12325 @@ -1512,7 +1512,7 @@
12326 * @dir: R/W or both.
12327 * @attrs: optional dma attributes
12328 *
12329 - * See Documentation/PCI/PCI-DMA-mapping.txt
12330 + * See Documentation/DMA-mapping.txt
12331 */
12332 void sba_unmap_sg_attrs(struct device *dev, struct scatterlist *sglist,
12333 int nents, int dir, struct dma_attrs *attrs)
12334 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/include/asm/kvm.h linux-2.6.29-rc3.owrt/arch/ia64/include/asm/kvm.h
12335 --- linux-2.6.29.owrt/arch/ia64/include/asm/kvm.h 2009-05-10 22:04:40.000000000 +0200
12336 +++ linux-2.6.29-rc3.owrt/arch/ia64/include/asm/kvm.h 2009-05-10 23:48:28.000000000 +0200
12337 @@ -25,10 +25,6 @@
12338
12339 #include <linux/ioctl.h>
12340
12341 -/* Select x86 specific features in <linux/kvm.h> */
12342 -#define __KVM_HAVE_IOAPIC
12343 -#define __KVM_HAVE_DEVICE_ASSIGNMENT
12344 -
12345 /* Architectural interrupt line count. */
12346 #define KVM_NR_INTERRUPTS 256
12347
12348 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/include/asm/mmzone.h linux-2.6.29-rc3.owrt/arch/ia64/include/asm/mmzone.h
12349 --- linux-2.6.29.owrt/arch/ia64/include/asm/mmzone.h 2009-05-10 22:04:40.000000000 +0200
12350 +++ linux-2.6.29-rc3.owrt/arch/ia64/include/asm/mmzone.h 2009-05-10 23:48:28.000000000 +0200
12351 @@ -31,6 +31,10 @@
12352 #endif
12353 }
12354
12355 +#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
12356 +extern int early_pfn_to_nid(unsigned long pfn);
12357 +#endif
12358 +
12359 #ifdef CONFIG_IA64_DIG /* DIG systems are small */
12360 # define MAX_PHYSNODE_ID 8
12361 # define NR_NODE_MEMBLKS (MAX_NUMNODES * 8)
12362 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/include/asm/sn/bte.h linux-2.6.29-rc3.owrt/arch/ia64/include/asm/sn/bte.h
12363 --- linux-2.6.29.owrt/arch/ia64/include/asm/sn/bte.h 2009-05-10 22:04:40.000000000 +0200
12364 +++ linux-2.6.29-rc3.owrt/arch/ia64/include/asm/sn/bte.h 2009-05-10 23:48:28.000000000 +0200
12365 @@ -39,7 +39,7 @@
12366 /* BTE status register only supports 16 bits for length field */
12367 #define BTE_LEN_BITS (16)
12368 #define BTE_LEN_MASK ((1 << BTE_LEN_BITS) - 1)
12369 -#define BTE_MAX_XFER (BTE_LEN_MASK << L1_CACHE_SHIFT)
12370 +#define BTE_MAX_XFER ((1 << BTE_LEN_BITS) * L1_CACHE_BYTES)
12371
12372
12373 /* Define hardware */
12374 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/Kconfig linux-2.6.29-rc3.owrt/arch/ia64/Kconfig
12375 --- linux-2.6.29.owrt/arch/ia64/Kconfig 2009-05-10 22:04:40.000000000 +0200
12376 +++ linux-2.6.29-rc3.owrt/arch/ia64/Kconfig 2009-05-10 23:48:28.000000000 +0200
12377 @@ -221,11 +221,7 @@
12378
12379 config IA64_XEN_GUEST
12380 bool "Xen guest"
12381 - select SWIOTLB
12382 depends on XEN
12383 - help
12384 - Build a kernel that runs on Xen guest domain. At this moment only
12385 - 16KB page size in supported.
12386
12387 endchoice
12388
12389 @@ -483,7 +479,8 @@
12390 default y if VIRTUAL_MEM_MAP
12391
12392 config HAVE_ARCH_EARLY_PFN_TO_NID
12393 - def_bool NUMA && SPARSEMEM
12394 + def_bool y
12395 + depends on NEED_MULTIPLE_NODES
12396
12397 config HAVE_ARCH_NODEDATA_EXTENSION
12398 def_bool y
12399 @@ -638,17 +635,6 @@
12400 and include PCI device scope covered by these DMA
12401 remapping devices.
12402
12403 -config DMAR_DEFAULT_ON
12404 - def_bool y
12405 - prompt "Enable DMA Remapping Devices by default"
12406 - depends on DMAR
12407 - help
12408 - Selecting this option will enable a DMAR device at boot time if
12409 - one is found. If this option is not selected, DMAR support can
12410 - be enabled by passing intel_iommu=on to the kernel. It is
12411 - recommended you say N here while the DMAR code remains
12412 - experimental.
12413 -
12414 endmenu
12415
12416 endif
12417 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/kernel/iosapic.c linux-2.6.29-rc3.owrt/arch/ia64/kernel/iosapic.c
12418 --- linux-2.6.29.owrt/arch/ia64/kernel/iosapic.c 2009-05-10 22:04:40.000000000 +0200
12419 +++ linux-2.6.29-rc3.owrt/arch/ia64/kernel/iosapic.c 2009-05-10 23:48:28.000000000 +0200
12420 @@ -507,7 +507,7 @@
12421 if (trigger == IOSAPIC_EDGE)
12422 return -EINVAL;
12423
12424 - for (i = 0; i < NR_IRQS; i++) {
12425 + for (i = 0; i <= NR_IRQS; i++) {
12426 info = &iosapic_intr_info[i];
12427 if (info->trigger == trigger && info->polarity == pol &&
12428 (info->dmode == IOSAPIC_FIXED ||
12429 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/kernel/smpboot.c linux-2.6.29-rc3.owrt/arch/ia64/kernel/smpboot.c
12430 --- linux-2.6.29.owrt/arch/ia64/kernel/smpboot.c 2009-05-10 22:04:40.000000000 +0200
12431 +++ linux-2.6.29-rc3.owrt/arch/ia64/kernel/smpboot.c 2009-05-10 23:48:28.000000000 +0200
12432 @@ -736,15 +736,14 @@
12433 return -EBUSY;
12434 }
12435
12436 - cpu_clear(cpu, cpu_online_map);
12437 -
12438 if (migrate_platform_irqs(cpu)) {
12439 cpu_set(cpu, cpu_online_map);
12440 - return -EBUSY;
12441 + return (-EBUSY);
12442 }
12443
12444 remove_siblinginfo(cpu);
12445 fixup_irqs();
12446 + cpu_clear(cpu, cpu_online_map);
12447 local_flush_tlb_all();
12448 cpu_clear(cpu, cpu_callin_map);
12449 return 0;
12450 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/kernel/unwind.c linux-2.6.29-rc3.owrt/arch/ia64/kernel/unwind.c
12451 --- linux-2.6.29.owrt/arch/ia64/kernel/unwind.c 2009-05-10 22:04:40.000000000 +0200
12452 +++ linux-2.6.29-rc3.owrt/arch/ia64/kernel/unwind.c 2009-05-10 23:48:28.000000000 +0200
12453 @@ -2149,7 +2149,7 @@
12454
12455 /* next, remove hash table entries for this table */
12456
12457 - for (index = 0; index < UNW_HASH_SIZE; ++index) {
12458 + for (index = 0; index <= UNW_HASH_SIZE; ++index) {
12459 tmp = unw.cache + unw.hash[index];
12460 if (unw.hash[index] >= UNW_CACHE_SIZE
12461 || tmp->ip < table->start || tmp->ip >= table->end)
12462 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/kvm/kvm-ia64.c linux-2.6.29-rc3.owrt/arch/ia64/kvm/kvm-ia64.c
12463 --- linux-2.6.29.owrt/arch/ia64/kvm/kvm-ia64.c 2009-05-10 22:04:40.000000000 +0200
12464 +++ linux-2.6.29-rc3.owrt/arch/ia64/kvm/kvm-ia64.c 2009-05-10 23:48:28.000000000 +0200
12465 @@ -1337,10 +1337,6 @@
12466 }
12467 }
12468
12469 -void kvm_arch_sync_events(struct kvm *kvm)
12470 -{
12471 -}
12472 -
12473 void kvm_arch_destroy_vm(struct kvm *kvm)
12474 {
12475 kvm_iommu_unmap_guest(kvm);
12476 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/kvm/process.c linux-2.6.29-rc3.owrt/arch/ia64/kvm/process.c
12477 --- linux-2.6.29.owrt/arch/ia64/kvm/process.c 2009-05-10 22:04:40.000000000 +0200
12478 +++ linux-2.6.29-rc3.owrt/arch/ia64/kvm/process.c 2009-05-10 23:48:28.000000000 +0200
12479 @@ -455,18 +455,13 @@
12480 if (!vmm_fpswa_interface)
12481 return (fpswa_ret_t) {-1, 0, 0, 0};
12482
12483 - memset(&fp_state, 0, sizeof(fp_state_t));
12484 -
12485 /*
12486 - * compute fp_state. only FP registers f6 - f11 are used by the
12487 - * vmm, so set those bits in the mask and set the low volatile
12488 - * pointer to point to these registers.
12489 + * Just let fpswa driver to use hardware fp registers.
12490 + * No fp register is valid in memory.
12491 */
12492 - fp_state.bitmask_low64 = 0xfc0; /* bit6..bit11 */
12493 -
12494 - fp_state.fp_state_low_volatile = (fp_state_low_volatile_t *) &regs->f6;
12495 + memset(&fp_state, 0, sizeof(fp_state_t));
12496
12497 - /*
12498 + /*
12499 * unsigned long (*EFI_FPSWA) (
12500 * unsigned long trap_type,
12501 * void *Bundle,
12502 @@ -550,6 +545,10 @@
12503 status = vmm_handle_fpu_swa(0, regs, isr);
12504 if (!status)
12505 return ;
12506 + else if (-EAGAIN == status) {
12507 + vcpu_decrement_iip(vcpu);
12508 + return ;
12509 + }
12510 break;
12511 }
12512
12513 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/mm/numa.c linux-2.6.29-rc3.owrt/arch/ia64/mm/numa.c
12514 --- linux-2.6.29.owrt/arch/ia64/mm/numa.c 2009-05-10 22:04:40.000000000 +0200
12515 +++ linux-2.6.29-rc3.owrt/arch/ia64/mm/numa.c 2009-05-10 23:48:28.000000000 +0200
12516 @@ -58,7 +58,7 @@
12517 * SPARSEMEM to allocate the SPARSEMEM sectionmap on the NUMA node where
12518 * the section resides.
12519 */
12520 -int __meminit __early_pfn_to_nid(unsigned long pfn)
12521 +int early_pfn_to_nid(unsigned long pfn)
12522 {
12523 int i, section = pfn >> PFN_SECTION_SHIFT, ssec, esec;
12524
12525 @@ -70,7 +70,7 @@
12526 return node_memblk[i].nid;
12527 }
12528
12529 - return -1;
12530 + return 0;
12531 }
12532
12533 #ifdef CONFIG_MEMORY_HOTPLUG
12534 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/sn/kernel/bte.c linux-2.6.29-rc3.owrt/arch/ia64/sn/kernel/bte.c
12535 --- linux-2.6.29.owrt/arch/ia64/sn/kernel/bte.c 2009-05-10 22:04:40.000000000 +0200
12536 +++ linux-2.6.29-rc3.owrt/arch/ia64/sn/kernel/bte.c 2009-05-10 23:48:28.000000000 +0200
12537 @@ -97,10 +97,9 @@
12538 return BTE_SUCCESS;
12539 }
12540
12541 - BUG_ON(len & L1_CACHE_MASK);
12542 - BUG_ON(src & L1_CACHE_MASK);
12543 - BUG_ON(dest & L1_CACHE_MASK);
12544 - BUG_ON(len > BTE_MAX_XFER);
12545 + BUG_ON((len & L1_CACHE_MASK) ||
12546 + (src & L1_CACHE_MASK) || (dest & L1_CACHE_MASK));
12547 + BUG_ON(!(len < ((BTE_LEN_MASK + 1) << L1_CACHE_SHIFT)));
12548
12549 /*
12550 * Start with interface corresponding to cpu number
12551 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/sn/kernel/io_acpi_init.c linux-2.6.29-rc3.owrt/arch/ia64/sn/kernel/io_acpi_init.c
12552 --- linux-2.6.29.owrt/arch/ia64/sn/kernel/io_acpi_init.c 2009-05-10 22:04:40.000000000 +0200
12553 +++ linux-2.6.29-rc3.owrt/arch/ia64/sn/kernel/io_acpi_init.c 2009-05-10 23:48:28.000000000 +0200
12554 @@ -443,7 +443,7 @@
12555 size = pci_resource_len(dev, PCI_ROM_RESOURCE);
12556 addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE],
12557 size);
12558 - image_size = pci_get_rom_size(dev, addr, size);
12559 + image_size = pci_get_rom_size(addr, size);
12560 dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr;
12561 dev->resource[PCI_ROM_RESOURCE].end =
12562 (unsigned long) addr + image_size - 1;
12563 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/sn/kernel/io_init.c linux-2.6.29-rc3.owrt/arch/ia64/sn/kernel/io_init.c
12564 --- linux-2.6.29.owrt/arch/ia64/sn/kernel/io_init.c 2009-05-10 22:04:40.000000000 +0200
12565 +++ linux-2.6.29-rc3.owrt/arch/ia64/sn/kernel/io_init.c 2009-05-10 23:48:28.000000000 +0200
12566 @@ -269,7 +269,7 @@
12567
12568 rom = ioremap(pci_resource_start(dev, PCI_ROM_RESOURCE),
12569 size + 1);
12570 - image_size = pci_get_rom_size(dev, rom, size + 1);
12571 + image_size = pci_get_rom_size(rom, size + 1);
12572 dev->resource[PCI_ROM_RESOURCE].end =
12573 dev->resource[PCI_ROM_RESOURCE].start +
12574 image_size - 1;
12575 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/sn/pci/pcibr/pcibr_dma.c linux-2.6.29-rc3.owrt/arch/ia64/sn/pci/pcibr/pcibr_dma.c
12576 --- linux-2.6.29.owrt/arch/ia64/sn/pci/pcibr/pcibr_dma.c 2009-05-10 22:04:40.000000000 +0200
12577 +++ linux-2.6.29-rc3.owrt/arch/ia64/sn/pci/pcibr/pcibr_dma.c 2009-05-10 23:48:28.000000000 +0200
12578 @@ -135,10 +135,11 @@
12579 if (SN_DMA_ADDRTYPE(dma_flags) == SN_DMA_ADDR_PHYS)
12580 pci_addr = IS_PIC_SOFT(pcibus_info) ?
12581 PHYS_TO_DMA(paddr) :
12582 - PHYS_TO_TIODMA(paddr);
12583 + PHYS_TO_TIODMA(paddr) | dma_attributes;
12584 else
12585 - pci_addr = paddr;
12586 - pci_addr |= dma_attributes;
12587 + pci_addr = IS_PIC_SOFT(pcibus_info) ?
12588 + paddr :
12589 + paddr | dma_attributes;
12590
12591 /* Handle Bus mode */
12592 if (IS_PCIX(pcibus_info))
12593 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/xen/Kconfig linux-2.6.29-rc3.owrt/arch/ia64/xen/Kconfig
12594 --- linux-2.6.29.owrt/arch/ia64/xen/Kconfig 2009-05-10 22:04:40.000000000 +0200
12595 +++ linux-2.6.29-rc3.owrt/arch/ia64/xen/Kconfig 2009-05-10 23:48:28.000000000 +0200
12596 @@ -8,7 +8,8 @@
12597 depends on PARAVIRT && MCKINLEY && IA64_PAGE_SIZE_16KB && EXPERIMENTAL
12598 select XEN_XENCOMM
12599 select NO_IDLE_HZ
12600 - # followings are required to save/restore.
12601 +
12602 + # those are required to save/restore.
12603 select ARCH_SUSPEND_POSSIBLE
12604 select SUSPEND
12605 select PM_SLEEP
12606 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/ia64/xen/xen_pv_ops.c linux-2.6.29-rc3.owrt/arch/ia64/xen/xen_pv_ops.c
12607 --- linux-2.6.29.owrt/arch/ia64/xen/xen_pv_ops.c 2009-05-10 22:04:40.000000000 +0200
12608 +++ linux-2.6.29-rc3.owrt/arch/ia64/xen/xen_pv_ops.c 2009-05-10 23:48:28.000000000 +0200
12609 @@ -153,7 +153,7 @@
12610 xen_setup_vcpu_info_placement();
12611 }
12612
12613 -static const struct pv_init_ops xen_init_ops __initconst = {
12614 +static const struct pv_init_ops xen_init_ops __initdata = {
12615 .banner = xen_banner,
12616
12617 .reserve_memory = xen_reserve_memory,
12618 @@ -337,7 +337,7 @@
12619 HYPERVISOR_physdev_op(PHYSDEVOP_apic_write, &apic_op);
12620 }
12621
12622 -static const struct pv_iosapic_ops xen_iosapic_ops __initconst = {
12623 +static const struct pv_iosapic_ops xen_iosapic_ops __initdata = {
12624 .pcat_compat_init = xen_pcat_compat_init,
12625 .__get_irq_chip = xen_iosapic_get_irq_chip,
12626
12627 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/atari/ataints.c linux-2.6.29-rc3.owrt/arch/m68k/atari/ataints.c
12628 --- linux-2.6.29.owrt/arch/m68k/atari/ataints.c 2009-05-10 22:04:40.000000000 +0200
12629 +++ linux-2.6.29-rc3.owrt/arch/m68k/atari/ataints.c 2009-05-10 23:48:28.000000000 +0200
12630 @@ -187,8 +187,8 @@
12631 " jbra ret_from_interrupt\n" \
12632 : : "i" (&kstat_cpu(0).irqs[n+8]), "i" (&irq_handler[n+8]), \
12633 "n" (PT_OFF_SR), "n" (n), \
12634 - "i" (n & 8 ? (n & 16 ? &tt_mfp.int_mk_a : &st_mfp.int_mk_a) \
12635 - : (n & 16 ? &tt_mfp.int_mk_b : &st_mfp.int_mk_b)), \
12636 + "i" (n & 8 ? (n & 16 ? &tt_mfp.int_mk_a : &mfp.int_mk_a) \
12637 + : (n & 16 ? &tt_mfp.int_mk_b : &mfp.int_mk_b)), \
12638 "m" (preempt_count()), "di" (HARDIRQ_OFFSET) \
12639 ); \
12640 for (;;); /* fake noreturn */ \
12641 @@ -366,14 +366,14 @@
12642 /* Initialize the MFP(s) */
12643
12644 #ifdef ATARI_USE_SOFTWARE_EOI
12645 - st_mfp.vec_adr = 0x48; /* Software EOI-Mode */
12646 + mfp.vec_adr = 0x48; /* Software EOI-Mode */
12647 #else
12648 - st_mfp.vec_adr = 0x40; /* Automatic EOI-Mode */
12649 + mfp.vec_adr = 0x40; /* Automatic EOI-Mode */
12650 #endif
12651 - st_mfp.int_en_a = 0x00; /* turn off MFP-Ints */
12652 - st_mfp.int_en_b = 0x00;
12653 - st_mfp.int_mk_a = 0xff; /* no Masking */
12654 - st_mfp.int_mk_b = 0xff;
12655 + mfp.int_en_a = 0x00; /* turn off MFP-Ints */
12656 + mfp.int_en_b = 0x00;
12657 + mfp.int_mk_a = 0xff; /* no Masking */
12658 + mfp.int_mk_b = 0xff;
12659
12660 if (ATARIHW_PRESENT(TT_MFP)) {
12661 #ifdef ATARI_USE_SOFTWARE_EOI
12662 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/atari/atakeyb.c linux-2.6.29-rc3.owrt/arch/m68k/atari/atakeyb.c
12663 --- linux-2.6.29.owrt/arch/m68k/atari/atakeyb.c 2009-05-10 22:04:40.000000000 +0200
12664 +++ linux-2.6.29-rc3.owrt/arch/m68k/atari/atakeyb.c 2009-05-10 23:48:28.000000000 +0200
12665 @@ -609,10 +609,10 @@
12666 ACIA_RHTID : 0);
12667
12668 /* make sure the interrupt line is up */
12669 - } while ((st_mfp.par_dt_reg & 0x10) == 0);
12670 + } while ((mfp.par_dt_reg & 0x10) == 0);
12671
12672 /* enable ACIA Interrupts */
12673 - st_mfp.active_edge &= ~0x10;
12674 + mfp.active_edge &= ~0x10;
12675 atari_turnon_irq(IRQ_MFP_ACIA);
12676
12677 ikbd_self_test = 1;
12678 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/atari/config.c linux-2.6.29-rc3.owrt/arch/m68k/atari/config.c
12679 --- linux-2.6.29.owrt/arch/m68k/atari/config.c 2009-05-10 22:04:40.000000000 +0200
12680 +++ linux-2.6.29-rc3.owrt/arch/m68k/atari/config.c 2009-05-10 23:48:28.000000000 +0200
12681 @@ -258,7 +258,7 @@
12682 printk("STND_SHIFTER ");
12683 }
12684 }
12685 - if (hwreg_present(&st_mfp.par_dt_reg)) {
12686 + if (hwreg_present(&mfp.par_dt_reg)) {
12687 ATARIHW_SET(ST_MFP);
12688 printk("ST_MFP ");
12689 }
12690 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/atari/debug.c linux-2.6.29-rc3.owrt/arch/m68k/atari/debug.c
12691 --- linux-2.6.29.owrt/arch/m68k/atari/debug.c 2009-05-10 22:04:40.000000000 +0200
12692 +++ linux-2.6.29-rc3.owrt/arch/m68k/atari/debug.c 2009-05-10 23:48:28.000000000 +0200
12693 @@ -34,9 +34,9 @@
12694
12695 static inline void ata_mfp_out(char c)
12696 {
12697 - while (!(st_mfp.trn_stat & 0x80)) /* wait for tx buf empty */
12698 + while (!(mfp.trn_stat & 0x80)) /* wait for tx buf empty */
12699 barrier();
12700 - st_mfp.usart_dta = c;
12701 + mfp.usart_dta = c;
12702 }
12703
12704 static void atari_mfp_console_write(struct console *co, const char *str,
12705 @@ -91,7 +91,7 @@
12706 /* This a some-seconds timeout in case no printer is connected */
12707 unsigned long i = loops_per_jiffy > 1 ? loops_per_jiffy : 10000000/HZ;
12708
12709 - while ((st_mfp.par_dt_reg & 1) && --i) /* wait for BUSY == L */
12710 + while ((mfp.par_dt_reg & 1) && --i) /* wait for BUSY == L */
12711 ;
12712 if (!i)
12713 return 0;
12714 @@ -131,9 +131,9 @@
12715 #if 0
12716 int atari_mfp_console_wait_key(struct console *co)
12717 {
12718 - while (!(st_mfp.rcv_stat & 0x80)) /* wait for rx buf filled */
12719 + while (!(mfp.rcv_stat & 0x80)) /* wait for rx buf filled */
12720 barrier();
12721 - return st_mfp.usart_dta;
12722 + return mfp.usart_dta;
12723 }
12724
12725 int atari_scc_console_wait_key(struct console *co)
12726 @@ -175,12 +175,12 @@
12727 baud = B9600; /* use default 9600bps for non-implemented rates */
12728 baud -= B1200; /* baud_table[] starts at 1200bps */
12729
12730 - st_mfp.trn_stat &= ~0x01; /* disable TX */
12731 - st_mfp.usart_ctr = parity | csize | 0x88; /* 1:16 clk mode, 1 stop bit */
12732 - st_mfp.tim_ct_cd &= 0x70; /* stop timer D */
12733 - st_mfp.tim_dt_d = baud_table[baud];
12734 - st_mfp.tim_ct_cd |= 0x01; /* start timer D, 1:4 */
12735 - st_mfp.trn_stat |= 0x01; /* enable TX */
12736 + mfp.trn_stat &= ~0x01; /* disable TX */
12737 + mfp.usart_ctr = parity | csize | 0x88; /* 1:16 clk mode, 1 stop bit */
12738 + mfp.tim_ct_cd &= 0x70; /* stop timer D */
12739 + mfp.tim_dt_d = baud_table[baud];
12740 + mfp.tim_ct_cd |= 0x01; /* start timer D, 1:4 */
12741 + mfp.trn_stat |= 0x01; /* enable TX */
12742 }
12743
12744 #define SCC_WRITE(reg, val) \
12745 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/atari/time.c linux-2.6.29-rc3.owrt/arch/m68k/atari/time.c
12746 --- linux-2.6.29.owrt/arch/m68k/atari/time.c 2009-05-10 22:04:40.000000000 +0200
12747 +++ linux-2.6.29-rc3.owrt/arch/m68k/atari/time.c 2009-05-10 23:48:28.000000000 +0200
12748 @@ -27,9 +27,9 @@
12749 atari_sched_init(irq_handler_t timer_routine)
12750 {
12751 /* set Timer C data Register */
12752 - st_mfp.tim_dt_c = INT_TICKS;
12753 + mfp.tim_dt_c = INT_TICKS;
12754 /* start timer C, div = 1:100 */
12755 - st_mfp.tim_ct_cd = (st_mfp.tim_ct_cd & 15) | 0x60;
12756 + mfp.tim_ct_cd = (mfp.tim_ct_cd & 15) | 0x60;
12757 /* install interrupt service routine for MFP Timer C */
12758 if (request_irq(IRQ_MFP_TIMC, timer_routine, IRQ_TYPE_SLOW,
12759 "timer", timer_routine))
12760 @@ -46,11 +46,11 @@
12761 unsigned long ticks, offset = 0;
12762
12763 /* read MFP timer C current value */
12764 - ticks = st_mfp.tim_dt_c;
12765 + ticks = mfp.tim_dt_c;
12766 /* The probability of underflow is less than 2% */
12767 if (ticks > INT_TICKS - INT_TICKS / 50)
12768 /* Check for pending timer interrupt */
12769 - if (st_mfp.int_pn_b & (1 << 5))
12770 + if (mfp.int_pn_b & (1 << 5))
12771 offset = TICK_SIZE;
12772
12773 ticks = INT_TICKS - ticks;
12774 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/atarihw.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/atarihw.h
12775 --- linux-2.6.29.owrt/arch/m68k/include/asm/atarihw.h 2009-05-10 22:04:40.000000000 +0200
12776 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/atarihw.h 2009-05-10 23:48:28.000000000 +0200
12777 @@ -113,7 +113,7 @@
12778 * of nops on various machines. Somebody claimed that the tstb takes 600 ns.
12779 */
12780 #define MFPDELAY() \
12781 - __asm__ __volatile__ ( "tstb %0" : : "m" (st_mfp.par_dt_reg) : "cc" );
12782 + __asm__ __volatile__ ( "tstb %0" : : "m" (mfp.par_dt_reg) : "cc" );
12783
12784 /* Do cache push/invalidate for DMA read/write. This function obeys the
12785 * snooping on some machines (Medusa) and processors: The Medusa itself can
12786 @@ -565,7 +565,7 @@
12787 u_char char_dummy23;
12788 u_char usart_dta;
12789 };
12790 -# define st_mfp ((*(volatile struct MFP*)MFP_BAS))
12791 +# define mfp ((*(volatile struct MFP*)MFP_BAS))
12792
12793 /* TT's second MFP */
12794
12795 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/atariints.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/atariints.h
12796 --- linux-2.6.29.owrt/arch/m68k/include/asm/atariints.h 2009-05-10 22:04:40.000000000 +0200
12797 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/atariints.h 2009-05-10 23:48:28.000000000 +0200
12798 @@ -113,7 +113,7 @@
12799 { unsigned char mask, *reg;
12800
12801 mask = 1 << (irq & 7);
12802 - reg = (unsigned char *)&st_mfp.int_en_a + type*4 +
12803 + reg = (unsigned char *)&mfp.int_en_a + type*4 +
12804 ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
12805 return( *reg & mask );
12806 }
12807 @@ -123,7 +123,7 @@
12808 { unsigned char mask, *reg;
12809
12810 mask = 1 << (irq & 7);
12811 - reg = (unsigned char *)&st_mfp.int_en_a + type*4 +
12812 + reg = (unsigned char *)&mfp.int_en_a + type*4 +
12813 ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
12814 __asm__ __volatile__ ( "orb %0,%1"
12815 : : "di" (mask), "m" (*reg) : "memory" );
12816 @@ -134,7 +134,7 @@
12817 { unsigned char mask, *reg;
12818
12819 mask = ~(1 << (irq & 7));
12820 - reg = (unsigned char *)&st_mfp.int_en_a + type*4 +
12821 + reg = (unsigned char *)&mfp.int_en_a + type*4 +
12822 ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
12823 if (type == MFP_PENDING || type == MFP_SERVICE)
12824 __asm__ __volatile__ ( "moveb %0,%1"
12825 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/param.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/param.h
12826 --- linux-2.6.29.owrt/arch/m68k/include/asm/param.h 2009-05-10 22:04:40.000000000 +0200
12827 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/param.h 2009-05-10 23:48:28.000000000 +0200
12828 @@ -1,26 +1,5 @@
12829 -#ifndef _M68K_PARAM_H
12830 -#define _M68K_PARAM_H
12831 -
12832 -#ifdef __KERNEL__
12833 -# define HZ CONFIG_HZ /* Internal kernel timer frequency */
12834 -# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
12835 -# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
12836 -#endif
12837 -
12838 -#ifndef HZ
12839 -#define HZ 100
12840 -#endif
12841 -
12842 #ifdef __uClinux__
12843 -#define EXEC_PAGESIZE 4096
12844 +#include "param_no.h"
12845 #else
12846 -#define EXEC_PAGESIZE 8192
12847 -#endif
12848 -
12849 -#ifndef NOGROUP
12850 -#define NOGROUP (-1)
12851 +#include "param_mm.h"
12852 #endif
12853 -
12854 -#define MAXHOSTNAMELEN 64 /* max length of hostname */
12855 -
12856 -#endif /* _M68K_PARAM_H */
12857 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/param_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/param_mm.h
12858 --- linux-2.6.29.owrt/arch/m68k/include/asm/param_mm.h 1970-01-01 01:00:00.000000000 +0100
12859 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/param_mm.h 2009-05-10 23:48:28.000000000 +0200
12860 @@ -0,0 +1,22 @@
12861 +#ifndef _M68K_PARAM_H
12862 +#define _M68K_PARAM_H
12863 +
12864 +#ifdef __KERNEL__
12865 +# define HZ CONFIG_HZ /* Internal kernel timer frequency */
12866 +# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
12867 +# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
12868 +#endif
12869 +
12870 +#ifndef HZ
12871 +#define HZ 100
12872 +#endif
12873 +
12874 +#define EXEC_PAGESIZE 8192
12875 +
12876 +#ifndef NOGROUP
12877 +#define NOGROUP (-1)
12878 +#endif
12879 +
12880 +#define MAXHOSTNAMELEN 64 /* max length of hostname */
12881 +
12882 +#endif /* _M68K_PARAM_H */
12883 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/param_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/param_no.h
12884 --- linux-2.6.29.owrt/arch/m68k/include/asm/param_no.h 1970-01-01 01:00:00.000000000 +0100
12885 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/param_no.h 2009-05-10 23:48:28.000000000 +0200
12886 @@ -0,0 +1,22 @@
12887 +#ifndef _M68KNOMMU_PARAM_H
12888 +#define _M68KNOMMU_PARAM_H
12889 +
12890 +#ifdef __KERNEL__
12891 +#define HZ CONFIG_HZ
12892 +#define USER_HZ HZ
12893 +#define CLOCKS_PER_SEC (USER_HZ)
12894 +#endif
12895 +
12896 +#ifndef HZ
12897 +#define HZ 100
12898 +#endif
12899 +
12900 +#define EXEC_PAGESIZE 4096
12901 +
12902 +#ifndef NOGROUP
12903 +#define NOGROUP (-1)
12904 +#endif
12905 +
12906 +#define MAXHOSTNAMELEN 64 /* max length of hostname */
12907 +
12908 +#endif /* _M68KNOMMU_PARAM_H */
12909 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/ptrace.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/ptrace.h
12910 --- linux-2.6.29.owrt/arch/m68k/include/asm/ptrace.h 2009-05-10 22:04:40.000000000 +0200
12911 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/ptrace.h 2009-05-10 23:48:28.000000000 +0200
12912 @@ -1,87 +1,5 @@
12913 -#ifndef _M68K_PTRACE_H
12914 -#define _M68K_PTRACE_H
12915 -
12916 -#define PT_D1 0
12917 -#define PT_D2 1
12918 -#define PT_D3 2
12919 -#define PT_D4 3
12920 -#define PT_D5 4
12921 -#define PT_D6 5
12922 -#define PT_D7 6
12923 -#define PT_A0 7
12924 -#define PT_A1 8
12925 -#define PT_A2 9
12926 -#define PT_A3 10
12927 -#define PT_A4 11
12928 -#define PT_A5 12
12929 -#define PT_A6 13
12930 -#define PT_D0 14
12931 -#define PT_USP 15
12932 -#define PT_ORIG_D0 16
12933 -#define PT_SR 17
12934 -#define PT_PC 18
12935 -
12936 -#ifndef __ASSEMBLY__
12937 -
12938 -/* this struct defines the way the registers are stored on the
12939 - stack during a system call. */
12940 -
12941 -struct pt_regs {
12942 - long d1;
12943 - long d2;
12944 - long d3;
12945 - long d4;
12946 - long d5;
12947 - long a0;
12948 - long a1;
12949 - long a2;
12950 - long d0;
12951 - long orig_d0;
12952 - long stkadj;
12953 -#ifdef CONFIG_COLDFIRE
12954 - unsigned format : 4; /* frame format specifier */
12955 - unsigned vector : 12; /* vector offset */
12956 - unsigned short sr;
12957 - unsigned long pc;
12958 +#ifdef __uClinux__
12959 +#include "ptrace_no.h"
12960 #else
12961 - unsigned short sr;
12962 - unsigned long pc;
12963 - unsigned format : 4; /* frame format specifier */
12964 - unsigned vector : 12; /* vector offset */
12965 +#include "ptrace_mm.h"
12966 #endif
12967 -};
12968 -
12969 -/*
12970 - * This is the extended stack used by signal handlers and the context
12971 - * switcher: it's pushed after the normal "struct pt_regs".
12972 - */
12973 -struct switch_stack {
12974 - unsigned long d6;
12975 - unsigned long d7;
12976 - unsigned long a3;
12977 - unsigned long a4;
12978 - unsigned long a5;
12979 - unsigned long a6;
12980 - unsigned long retpc;
12981 -};
12982 -
12983 -/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
12984 -#define PTRACE_GETREGS 12
12985 -#define PTRACE_SETREGS 13
12986 -#define PTRACE_GETFPREGS 14
12987 -#define PTRACE_SETFPREGS 15
12988 -
12989 -#ifdef __KERNEL__
12990 -
12991 -#ifndef PS_S
12992 -#define PS_S (0x2000)
12993 -#define PS_M (0x1000)
12994 -#endif
12995 -
12996 -#define user_mode(regs) (!((regs)->sr & PS_S))
12997 -#define instruction_pointer(regs) ((regs)->pc)
12998 -#define profile_pc(regs) instruction_pointer(regs)
12999 -extern void show_regs(struct pt_regs *);
13000 -#endif /* __KERNEL__ */
13001 -#endif /* __ASSEMBLY__ */
13002 -#endif /* _M68K_PTRACE_H */
13003 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/ptrace_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/ptrace_mm.h
13004 --- linux-2.6.29.owrt/arch/m68k/include/asm/ptrace_mm.h 1970-01-01 01:00:00.000000000 +0100
13005 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/ptrace_mm.h 2009-05-10 23:48:28.000000000 +0200
13006 @@ -0,0 +1,80 @@
13007 +#ifndef _M68K_PTRACE_H
13008 +#define _M68K_PTRACE_H
13009 +
13010 +#define PT_D1 0
13011 +#define PT_D2 1
13012 +#define PT_D3 2
13013 +#define PT_D4 3
13014 +#define PT_D5 4
13015 +#define PT_D6 5
13016 +#define PT_D7 6
13017 +#define PT_A0 7
13018 +#define PT_A1 8
13019 +#define PT_A2 9
13020 +#define PT_A3 10
13021 +#define PT_A4 11
13022 +#define PT_A5 12
13023 +#define PT_A6 13
13024 +#define PT_D0 14
13025 +#define PT_USP 15
13026 +#define PT_ORIG_D0 16
13027 +#define PT_SR 17
13028 +#define PT_PC 18
13029 +
13030 +#ifndef __ASSEMBLY__
13031 +
13032 +/* this struct defines the way the registers are stored on the
13033 + stack during a system call. */
13034 +
13035 +struct pt_regs {
13036 + long d1;
13037 + long d2;
13038 + long d3;
13039 + long d4;
13040 + long d5;
13041 + long a0;
13042 + long a1;
13043 + long a2;
13044 + long d0;
13045 + long orig_d0;
13046 + long stkadj;
13047 + unsigned short sr;
13048 + unsigned long pc;
13049 + unsigned format : 4; /* frame format specifier */
13050 + unsigned vector : 12; /* vector offset */
13051 +};
13052 +
13053 +/*
13054 + * This is the extended stack used by signal handlers and the context
13055 + * switcher: it's pushed after the normal "struct pt_regs".
13056 + */
13057 +struct switch_stack {
13058 + unsigned long d6;
13059 + unsigned long d7;
13060 + unsigned long a3;
13061 + unsigned long a4;
13062 + unsigned long a5;
13063 + unsigned long a6;
13064 + unsigned long retpc;
13065 +};
13066 +
13067 +/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
13068 +#define PTRACE_GETREGS 12
13069 +#define PTRACE_SETREGS 13
13070 +#define PTRACE_GETFPREGS 14
13071 +#define PTRACE_SETFPREGS 15
13072 +
13073 +#ifdef __KERNEL__
13074 +
13075 +#ifndef PS_S
13076 +#define PS_S (0x2000)
13077 +#define PS_M (0x1000)
13078 +#endif
13079 +
13080 +#define user_mode(regs) (!((regs)->sr & PS_S))
13081 +#define instruction_pointer(regs) ((regs)->pc)
13082 +#define profile_pc(regs) instruction_pointer(regs)
13083 +extern void show_regs(struct pt_regs *);
13084 +#endif /* __KERNEL__ */
13085 +#endif /* __ASSEMBLY__ */
13086 +#endif /* _M68K_PTRACE_H */
13087 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/ptrace_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/ptrace_no.h
13088 --- linux-2.6.29.owrt/arch/m68k/include/asm/ptrace_no.h 1970-01-01 01:00:00.000000000 +0100
13089 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/ptrace_no.h 2009-05-10 23:48:28.000000000 +0200
13090 @@ -0,0 +1,87 @@
13091 +#ifndef _M68K_PTRACE_H
13092 +#define _M68K_PTRACE_H
13093 +
13094 +#define PT_D1 0
13095 +#define PT_D2 1
13096 +#define PT_D3 2
13097 +#define PT_D4 3
13098 +#define PT_D5 4
13099 +#define PT_D6 5
13100 +#define PT_D7 6
13101 +#define PT_A0 7
13102 +#define PT_A1 8
13103 +#define PT_A2 9
13104 +#define PT_A3 10
13105 +#define PT_A4 11
13106 +#define PT_A5 12
13107 +#define PT_A6 13
13108 +#define PT_D0 14
13109 +#define PT_USP 15
13110 +#define PT_ORIG_D0 16
13111 +#define PT_SR 17
13112 +#define PT_PC 18
13113 +
13114 +#ifndef __ASSEMBLY__
13115 +
13116 +/* this struct defines the way the registers are stored on the
13117 + stack during a system call. */
13118 +
13119 +struct pt_regs {
13120 + long d1;
13121 + long d2;
13122 + long d3;
13123 + long d4;
13124 + long d5;
13125 + long a0;
13126 + long a1;
13127 + long a2;
13128 + long d0;
13129 + long orig_d0;
13130 + long stkadj;
13131 +#ifdef CONFIG_COLDFIRE
13132 + unsigned format : 4; /* frame format specifier */
13133 + unsigned vector : 12; /* vector offset */
13134 + unsigned short sr;
13135 + unsigned long pc;
13136 +#else
13137 + unsigned short sr;
13138 + unsigned long pc;
13139 + unsigned format : 4; /* frame format specifier */
13140 + unsigned vector : 12; /* vector offset */
13141 +#endif
13142 +};
13143 +
13144 +/*
13145 + * This is the extended stack used by signal handlers and the context
13146 + * switcher: it's pushed after the normal "struct pt_regs".
13147 + */
13148 +struct switch_stack {
13149 + unsigned long d6;
13150 + unsigned long d7;
13151 + unsigned long a3;
13152 + unsigned long a4;
13153 + unsigned long a5;
13154 + unsigned long a6;
13155 + unsigned long retpc;
13156 +};
13157 +
13158 +/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
13159 +#define PTRACE_GETREGS 12
13160 +#define PTRACE_SETREGS 13
13161 +#define PTRACE_GETFPREGS 14
13162 +#define PTRACE_SETFPREGS 15
13163 +
13164 +#ifdef __KERNEL__
13165 +
13166 +#ifndef PS_S
13167 +#define PS_S (0x2000)
13168 +#define PS_M (0x1000)
13169 +#endif
13170 +
13171 +#define user_mode(regs) (!((regs)->sr & PS_S))
13172 +#define instruction_pointer(regs) ((regs)->pc)
13173 +#define profile_pc(regs) instruction_pointer(regs)
13174 +extern void show_regs(struct pt_regs *);
13175 +#endif /* __KERNEL__ */
13176 +#endif /* __ASSEMBLY__ */
13177 +#endif /* _M68K_PTRACE_H */
13178 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/setup.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/setup.h
13179 --- linux-2.6.29.owrt/arch/m68k/include/asm/setup.h 2009-05-10 22:04:40.000000000 +0200
13180 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/setup.h 2009-05-10 23:48:28.000000000 +0200
13181 @@ -1,376 +1,5 @@
13182 -/*
13183 -** asm/setup.h -- Definition of the Linux/m68k setup information
13184 -**
13185 -** Copyright 1992 by Greg Harp
13186 -**
13187 -** This file is subject to the terms and conditions of the GNU General Public
13188 -** License. See the file COPYING in the main directory of this archive
13189 -** for more details.
13190 -**
13191 -** Created 09/29/92 by Greg Harp
13192 -**
13193 -** 5/2/94 Roman Hodek:
13194 -** Added bi_atari part of the machine dependent union bi_un; for now it
13195 -** contains just a model field to distinguish between TT and Falcon.
13196 -** 26/7/96 Roman Zippel:
13197 -** Renamed to setup.h; added some useful macros to allow gcc some
13198 -** optimizations if possible.
13199 -** 5/10/96 Geert Uytterhoeven:
13200 -** Redesign of the boot information structure; moved boot information
13201 -** structure to bootinfo.h
13202 -*/
13203 -
13204 -#ifndef _M68K_SETUP_H
13205 -#define _M68K_SETUP_H
13206 -
13207 -
13208 -
13209 - /*
13210 - * Linux/m68k Architectures
13211 - */
13212 -
13213 -#define MACH_AMIGA 1
13214 -#define MACH_ATARI 2
13215 -#define MACH_MAC 3
13216 -#define MACH_APOLLO 4
13217 -#define MACH_SUN3 5
13218 -#define MACH_MVME147 6
13219 -#define MACH_MVME16x 7
13220 -#define MACH_BVME6000 8
13221 -#define MACH_HP300 9
13222 -#define MACH_Q40 10
13223 -#define MACH_SUN3X 11
13224 -
13225 -#define COMMAND_LINE_SIZE 256
13226 -
13227 -#ifdef __KERNEL__
13228 -
13229 -#define CL_SIZE COMMAND_LINE_SIZE
13230 -
13231 -#ifndef __ASSEMBLY__
13232 -extern unsigned long m68k_machtype;
13233 -#endif /* !__ASSEMBLY__ */
13234 -
13235 -#if !defined(CONFIG_AMIGA)
13236 -# define MACH_IS_AMIGA (0)
13237 -#elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
13238 - || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13239 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13240 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13241 -# define MACH_IS_AMIGA (m68k_machtype == MACH_AMIGA)
13242 +#ifdef __uClinux__
13243 +#include "setup_no.h"
13244 #else
13245 -# define MACH_AMIGA_ONLY
13246 -# define MACH_IS_AMIGA (1)
13247 -# define MACH_TYPE (MACH_AMIGA)
13248 +#include "setup_mm.h"
13249 #endif
13250 -
13251 -#if !defined(CONFIG_ATARI)
13252 -# define MACH_IS_ATARI (0)
13253 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
13254 - || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13255 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13256 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13257 -# define MACH_IS_ATARI (m68k_machtype == MACH_ATARI)
13258 -#else
13259 -# define MACH_ATARI_ONLY
13260 -# define MACH_IS_ATARI (1)
13261 -# define MACH_TYPE (MACH_ATARI)
13262 -#endif
13263 -
13264 -#if !defined(CONFIG_MAC)
13265 -# define MACH_IS_MAC (0)
13266 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) || defined(CONFIG_APOLLO) \
13267 - || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13268 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13269 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13270 -# define MACH_IS_MAC (m68k_machtype == MACH_MAC)
13271 -#else
13272 -# define MACH_MAC_ONLY
13273 -# define MACH_IS_MAC (1)
13274 -# define MACH_TYPE (MACH_MAC)
13275 -#endif
13276 -
13277 -#if defined(CONFIG_SUN3)
13278 -#define MACH_IS_SUN3 (1)
13279 -#define MACH_SUN3_ONLY (1)
13280 -#define MACH_TYPE (MACH_SUN3)
13281 -#else
13282 -#define MACH_IS_SUN3 (0)
13283 -#endif
13284 -
13285 -#if !defined (CONFIG_APOLLO)
13286 -# define MACH_IS_APOLLO (0)
13287 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13288 - || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13289 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13290 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13291 -# define MACH_IS_APOLLO (m68k_machtype == MACH_APOLLO)
13292 -#else
13293 -# define MACH_APOLLO_ONLY
13294 -# define MACH_IS_APOLLO (1)
13295 -# define MACH_TYPE (MACH_APOLLO)
13296 -#endif
13297 -
13298 -#if !defined (CONFIG_MVME147)
13299 -# define MACH_IS_MVME147 (0)
13300 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13301 - || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \
13302 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13303 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME16x)
13304 -# define MACH_IS_MVME147 (m68k_machtype == MACH_MVME147)
13305 -#else
13306 -# define MACH_MVME147_ONLY
13307 -# define MACH_IS_MVME147 (1)
13308 -# define MACH_TYPE (MACH_MVME147)
13309 -#endif
13310 -
13311 -#if !defined (CONFIG_MVME16x)
13312 -# define MACH_IS_MVME16x (0)
13313 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13314 - || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \
13315 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13316 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13317 -# define MACH_IS_MVME16x (m68k_machtype == MACH_MVME16x)
13318 -#else
13319 -# define MACH_MVME16x_ONLY
13320 -# define MACH_IS_MVME16x (1)
13321 -# define MACH_TYPE (MACH_MVME16x)
13322 -#endif
13323 -
13324 -#if !defined (CONFIG_BVME6000)
13325 -# define MACH_IS_BVME6000 (0)
13326 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13327 - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13328 - || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13329 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13330 -# define MACH_IS_BVME6000 (m68k_machtype == MACH_BVME6000)
13331 -#else
13332 -# define MACH_BVME6000_ONLY
13333 -# define MACH_IS_BVME6000 (1)
13334 -# define MACH_TYPE (MACH_BVME6000)
13335 -#endif
13336 -
13337 -#if !defined (CONFIG_HP300)
13338 -# define MACH_IS_HP300 (0)
13339 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13340 - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13341 - || defined(CONFIG_BVME6000) || defined(CONFIG_Q40) \
13342 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13343 -# define MACH_IS_HP300 (m68k_machtype == MACH_HP300)
13344 -#else
13345 -# define MACH_HP300_ONLY
13346 -# define MACH_IS_HP300 (1)
13347 -# define MACH_TYPE (MACH_HP300)
13348 -#endif
13349 -
13350 -#if !defined (CONFIG_Q40)
13351 -# define MACH_IS_Q40 (0)
13352 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13353 - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13354 - || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \
13355 - || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13356 -# define MACH_IS_Q40 (m68k_machtype == MACH_Q40)
13357 -#else
13358 -# define MACH_Q40_ONLY
13359 -# define MACH_IS_Q40 (1)
13360 -# define MACH_TYPE (MACH_Q40)
13361 -#endif
13362 -
13363 -#if !defined (CONFIG_SUN3X)
13364 -# define MACH_IS_SUN3X (0)
13365 -#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13366 - || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13367 - || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \
13368 - || defined(CONFIG_Q40) || defined(CONFIG_MVME147)
13369 -# define MACH_IS_SUN3X (m68k_machtype == MACH_SUN3X)
13370 -#else
13371 -# define CONFIG_SUN3X_ONLY
13372 -# define MACH_IS_SUN3X (1)
13373 -# define MACH_TYPE (MACH_SUN3X)
13374 -#endif
13375 -
13376 -#ifndef MACH_TYPE
13377 -# define MACH_TYPE (m68k_machtype)
13378 -#endif
13379 -
13380 -#endif /* __KERNEL__ */
13381 -
13382 -
13383 - /*
13384 - * CPU, FPU and MMU types
13385 - *
13386 - * Note: we may rely on the following equalities:
13387 - *
13388 - * CPU_68020 == MMU_68851
13389 - * CPU_68030 == MMU_68030
13390 - * CPU_68040 == FPU_68040 == MMU_68040
13391 - * CPU_68060 == FPU_68060 == MMU_68060
13392 - */
13393 -
13394 -#define CPUB_68020 0
13395 -#define CPUB_68030 1
13396 -#define CPUB_68040 2
13397 -#define CPUB_68060 3
13398 -
13399 -#define CPU_68020 (1<<CPUB_68020)
13400 -#define CPU_68030 (1<<CPUB_68030)
13401 -#define CPU_68040 (1<<CPUB_68040)
13402 -#define CPU_68060 (1<<CPUB_68060)
13403 -
13404 -#define FPUB_68881 0
13405 -#define FPUB_68882 1
13406 -#define FPUB_68040 2 /* Internal FPU */
13407 -#define FPUB_68060 3 /* Internal FPU */
13408 -#define FPUB_SUNFPA 4 /* Sun-3 FPA */
13409 -
13410 -#define FPU_68881 (1<<FPUB_68881)
13411 -#define FPU_68882 (1<<FPUB_68882)
13412 -#define FPU_68040 (1<<FPUB_68040)
13413 -#define FPU_68060 (1<<FPUB_68060)
13414 -#define FPU_SUNFPA (1<<FPUB_SUNFPA)
13415 -
13416 -#define MMUB_68851 0
13417 -#define MMUB_68030 1 /* Internal MMU */
13418 -#define MMUB_68040 2 /* Internal MMU */
13419 -#define MMUB_68060 3 /* Internal MMU */
13420 -#define MMUB_APOLLO 4 /* Custom Apollo */
13421 -#define MMUB_SUN3 5 /* Custom Sun-3 */
13422 -
13423 -#define MMU_68851 (1<<MMUB_68851)
13424 -#define MMU_68030 (1<<MMUB_68030)
13425 -#define MMU_68040 (1<<MMUB_68040)
13426 -#define MMU_68060 (1<<MMUB_68060)
13427 -#define MMU_SUN3 (1<<MMUB_SUN3)
13428 -#define MMU_APOLLO (1<<MMUB_APOLLO)
13429 -
13430 -#ifdef __KERNEL__
13431 -
13432 -#ifndef __ASSEMBLY__
13433 -extern unsigned long m68k_cputype;
13434 -extern unsigned long m68k_fputype;
13435 -extern unsigned long m68k_mmutype;
13436 -#ifdef CONFIG_VME
13437 -extern unsigned long vme_brdtype;
13438 -#endif
13439 -
13440 - /*
13441 - * m68k_is040or060 is != 0 for a '040 or higher;
13442 - * used numbers are 4 for 68040 and 6 for 68060.
13443 - */
13444 -
13445 -extern int m68k_is040or060;
13446 -#endif /* !__ASSEMBLY__ */
13447 -
13448 -#if !defined(CONFIG_M68020)
13449 -# define CPU_IS_020 (0)
13450 -# define MMU_IS_851 (0)
13451 -# define MMU_IS_SUN3 (0)
13452 -#elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
13453 -# define CPU_IS_020 (m68k_cputype & CPU_68020)
13454 -# define MMU_IS_851 (m68k_mmutype & MMU_68851)
13455 -# define MMU_IS_SUN3 (0) /* Sun3 not supported with other CPU enabled */
13456 -#else
13457 -# define CPU_M68020_ONLY
13458 -# define CPU_IS_020 (1)
13459 -#ifdef MACH_SUN3_ONLY
13460 -# define MMU_IS_SUN3 (1)
13461 -# define MMU_IS_851 (0)
13462 -#else
13463 -# define MMU_IS_SUN3 (0)
13464 -# define MMU_IS_851 (1)
13465 -#endif
13466 -#endif
13467 -
13468 -#if !defined(CONFIG_M68030)
13469 -# define CPU_IS_030 (0)
13470 -# define MMU_IS_030 (0)
13471 -#elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
13472 -# define CPU_IS_030 (m68k_cputype & CPU_68030)
13473 -# define MMU_IS_030 (m68k_mmutype & MMU_68030)
13474 -#else
13475 -# define CPU_M68030_ONLY
13476 -# define CPU_IS_030 (1)
13477 -# define MMU_IS_030 (1)
13478 -#endif
13479 -
13480 -#if !defined(CONFIG_M68040)
13481 -# define CPU_IS_040 (0)
13482 -# define MMU_IS_040 (0)
13483 -#elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060)
13484 -# define CPU_IS_040 (m68k_cputype & CPU_68040)
13485 -# define MMU_IS_040 (m68k_mmutype & MMU_68040)
13486 -#else
13487 -# define CPU_M68040_ONLY
13488 -# define CPU_IS_040 (1)
13489 -# define MMU_IS_040 (1)
13490 -#endif
13491 -
13492 -#if !defined(CONFIG_M68060)
13493 -# define CPU_IS_060 (0)
13494 -# define MMU_IS_060 (0)
13495 -#elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040)
13496 -# define CPU_IS_060 (m68k_cputype & CPU_68060)
13497 -# define MMU_IS_060 (m68k_mmutype & MMU_68060)
13498 -#else
13499 -# define CPU_M68060_ONLY
13500 -# define CPU_IS_060 (1)
13501 -# define MMU_IS_060 (1)
13502 -#endif
13503 -
13504 -#if !defined(CONFIG_M68020) && !defined(CONFIG_M68030)
13505 -# define CPU_IS_020_OR_030 (0)
13506 -#else
13507 -# define CPU_M68020_OR_M68030
13508 -# if defined(CONFIG_M68040) || defined(CONFIG_M68060)
13509 -# define CPU_IS_020_OR_030 (!m68k_is040or060)
13510 -# else
13511 -# define CPU_M68020_OR_M68030_ONLY
13512 -# define CPU_IS_020_OR_030 (1)
13513 -# endif
13514 -#endif
13515 -
13516 -#if !defined(CONFIG_M68040) && !defined(CONFIG_M68060)
13517 -# define CPU_IS_040_OR_060 (0)
13518 -#else
13519 -# define CPU_M68040_OR_M68060
13520 -# if defined(CONFIG_M68020) || defined(CONFIG_M68030)
13521 -# define CPU_IS_040_OR_060 (m68k_is040or060)
13522 -# else
13523 -# define CPU_M68040_OR_M68060_ONLY
13524 -# define CPU_IS_040_OR_060 (1)
13525 -# endif
13526 -#endif
13527 -
13528 -#define CPU_TYPE (m68k_cputype)
13529 -
13530 -#ifdef CONFIG_M68KFPU_EMU
13531 -# ifdef CONFIG_M68KFPU_EMU_ONLY
13532 -# define FPU_IS_EMU (1)
13533 -# else
13534 -# define FPU_IS_EMU (!m68k_fputype)
13535 -# endif
13536 -#else
13537 -# define FPU_IS_EMU (0)
13538 -#endif
13539 -
13540 -
13541 - /*
13542 - * Miscellaneous
13543 - */
13544 -
13545 -#define NUM_MEMINFO 4
13546 -
13547 -#ifndef __ASSEMBLY__
13548 -struct mem_info {
13549 - unsigned long addr; /* physical address of memory chunk */
13550 - unsigned long size; /* length of memory chunk (in bytes) */
13551 -};
13552 -
13553 -extern int m68k_num_memory; /* # of memory blocks found (and used) */
13554 -extern int m68k_realnum_memory; /* real # of memory blocks found */
13555 -extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
13556 -#endif
13557 -
13558 -#endif /* __KERNEL__ */
13559 -
13560 -#endif /* _M68K_SETUP_H */
13561 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/setup_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/setup_mm.h
13562 --- linux-2.6.29.owrt/arch/m68k/include/asm/setup_mm.h 1970-01-01 01:00:00.000000000 +0100
13563 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/setup_mm.h 2009-05-10 23:48:28.000000000 +0200
13564 @@ -0,0 +1,376 @@
13565 +/*
13566 +** asm/setup.h -- Definition of the Linux/m68k setup information
13567 +**
13568 +** Copyright 1992 by Greg Harp
13569 +**
13570 +** This file is subject to the terms and conditions of the GNU General Public
13571 +** License. See the file COPYING in the main directory of this archive
13572 +** for more details.
13573 +**
13574 +** Created 09/29/92 by Greg Harp
13575 +**
13576 +** 5/2/94 Roman Hodek:
13577 +** Added bi_atari part of the machine dependent union bi_un; for now it
13578 +** contains just a model field to distinguish between TT and Falcon.
13579 +** 26/7/96 Roman Zippel:
13580 +** Renamed to setup.h; added some useful macros to allow gcc some
13581 +** optimizations if possible.
13582 +** 5/10/96 Geert Uytterhoeven:
13583 +** Redesign of the boot information structure; moved boot information
13584 +** structure to bootinfo.h
13585 +*/
13586 +
13587 +#ifndef _M68K_SETUP_H
13588 +#define _M68K_SETUP_H
13589 +
13590 +
13591 +
13592 + /*
13593 + * Linux/m68k Architectures
13594 + */
13595 +
13596 +#define MACH_AMIGA 1
13597 +#define MACH_ATARI 2
13598 +#define MACH_MAC 3
13599 +#define MACH_APOLLO 4
13600 +#define MACH_SUN3 5
13601 +#define MACH_MVME147 6
13602 +#define MACH_MVME16x 7
13603 +#define MACH_BVME6000 8
13604 +#define MACH_HP300 9
13605 +#define MACH_Q40 10
13606 +#define MACH_SUN3X 11
13607 +
13608 +#define COMMAND_LINE_SIZE 256
13609 +
13610 +#ifdef __KERNEL__
13611 +
13612 +#define CL_SIZE COMMAND_LINE_SIZE
13613 +
13614 +#ifndef __ASSEMBLY__
13615 +extern unsigned long m68k_machtype;
13616 +#endif /* !__ASSEMBLY__ */
13617 +
13618 +#if !defined(CONFIG_AMIGA)
13619 +# define MACH_IS_AMIGA (0)
13620 +#elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
13621 + || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13622 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13623 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13624 +# define MACH_IS_AMIGA (m68k_machtype == MACH_AMIGA)
13625 +#else
13626 +# define MACH_AMIGA_ONLY
13627 +# define MACH_IS_AMIGA (1)
13628 +# define MACH_TYPE (MACH_AMIGA)
13629 +#endif
13630 +
13631 +#if !defined(CONFIG_ATARI)
13632 +# define MACH_IS_ATARI (0)
13633 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
13634 + || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13635 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13636 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13637 +# define MACH_IS_ATARI (m68k_machtype == MACH_ATARI)
13638 +#else
13639 +# define MACH_ATARI_ONLY
13640 +# define MACH_IS_ATARI (1)
13641 +# define MACH_TYPE (MACH_ATARI)
13642 +#endif
13643 +
13644 +#if !defined(CONFIG_MAC)
13645 +# define MACH_IS_MAC (0)
13646 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) || defined(CONFIG_APOLLO) \
13647 + || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13648 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13649 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13650 +# define MACH_IS_MAC (m68k_machtype == MACH_MAC)
13651 +#else
13652 +# define MACH_MAC_ONLY
13653 +# define MACH_IS_MAC (1)
13654 +# define MACH_TYPE (MACH_MAC)
13655 +#endif
13656 +
13657 +#if defined(CONFIG_SUN3)
13658 +#define MACH_IS_SUN3 (1)
13659 +#define MACH_SUN3_ONLY (1)
13660 +#define MACH_TYPE (MACH_SUN3)
13661 +#else
13662 +#define MACH_IS_SUN3 (0)
13663 +#endif
13664 +
13665 +#if !defined (CONFIG_APOLLO)
13666 +# define MACH_IS_APOLLO (0)
13667 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13668 + || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \
13669 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13670 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13671 +# define MACH_IS_APOLLO (m68k_machtype == MACH_APOLLO)
13672 +#else
13673 +# define MACH_APOLLO_ONLY
13674 +# define MACH_IS_APOLLO (1)
13675 +# define MACH_TYPE (MACH_APOLLO)
13676 +#endif
13677 +
13678 +#if !defined (CONFIG_MVME147)
13679 +# define MACH_IS_MVME147 (0)
13680 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13681 + || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \
13682 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13683 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME16x)
13684 +# define MACH_IS_MVME147 (m68k_machtype == MACH_MVME147)
13685 +#else
13686 +# define MACH_MVME147_ONLY
13687 +# define MACH_IS_MVME147 (1)
13688 +# define MACH_TYPE (MACH_MVME147)
13689 +#endif
13690 +
13691 +#if !defined (CONFIG_MVME16x)
13692 +# define MACH_IS_MVME16x (0)
13693 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13694 + || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \
13695 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13696 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13697 +# define MACH_IS_MVME16x (m68k_machtype == MACH_MVME16x)
13698 +#else
13699 +# define MACH_MVME16x_ONLY
13700 +# define MACH_IS_MVME16x (1)
13701 +# define MACH_TYPE (MACH_MVME16x)
13702 +#endif
13703 +
13704 +#if !defined (CONFIG_BVME6000)
13705 +# define MACH_IS_BVME6000 (0)
13706 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13707 + || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13708 + || defined(CONFIG_HP300) || defined(CONFIG_Q40) \
13709 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13710 +# define MACH_IS_BVME6000 (m68k_machtype == MACH_BVME6000)
13711 +#else
13712 +# define MACH_BVME6000_ONLY
13713 +# define MACH_IS_BVME6000 (1)
13714 +# define MACH_TYPE (MACH_BVME6000)
13715 +#endif
13716 +
13717 +#if !defined (CONFIG_HP300)
13718 +# define MACH_IS_HP300 (0)
13719 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13720 + || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13721 + || defined(CONFIG_BVME6000) || defined(CONFIG_Q40) \
13722 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13723 +# define MACH_IS_HP300 (m68k_machtype == MACH_HP300)
13724 +#else
13725 +# define MACH_HP300_ONLY
13726 +# define MACH_IS_HP300 (1)
13727 +# define MACH_TYPE (MACH_HP300)
13728 +#endif
13729 +
13730 +#if !defined (CONFIG_Q40)
13731 +# define MACH_IS_Q40 (0)
13732 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13733 + || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13734 + || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \
13735 + || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
13736 +# define MACH_IS_Q40 (m68k_machtype == MACH_Q40)
13737 +#else
13738 +# define MACH_Q40_ONLY
13739 +# define MACH_IS_Q40 (1)
13740 +# define MACH_TYPE (MACH_Q40)
13741 +#endif
13742 +
13743 +#if !defined (CONFIG_SUN3X)
13744 +# define MACH_IS_SUN3X (0)
13745 +#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
13746 + || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
13747 + || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \
13748 + || defined(CONFIG_Q40) || defined(CONFIG_MVME147)
13749 +# define MACH_IS_SUN3X (m68k_machtype == MACH_SUN3X)
13750 +#else
13751 +# define CONFIG_SUN3X_ONLY
13752 +# define MACH_IS_SUN3X (1)
13753 +# define MACH_TYPE (MACH_SUN3X)
13754 +#endif
13755 +
13756 +#ifndef MACH_TYPE
13757 +# define MACH_TYPE (m68k_machtype)
13758 +#endif
13759 +
13760 +#endif /* __KERNEL__ */
13761 +
13762 +
13763 + /*
13764 + * CPU, FPU and MMU types
13765 + *
13766 + * Note: we may rely on the following equalities:
13767 + *
13768 + * CPU_68020 == MMU_68851
13769 + * CPU_68030 == MMU_68030
13770 + * CPU_68040 == FPU_68040 == MMU_68040
13771 + * CPU_68060 == FPU_68060 == MMU_68060
13772 + */
13773 +
13774 +#define CPUB_68020 0
13775 +#define CPUB_68030 1
13776 +#define CPUB_68040 2
13777 +#define CPUB_68060 3
13778 +
13779 +#define CPU_68020 (1<<CPUB_68020)
13780 +#define CPU_68030 (1<<CPUB_68030)
13781 +#define CPU_68040 (1<<CPUB_68040)
13782 +#define CPU_68060 (1<<CPUB_68060)
13783 +
13784 +#define FPUB_68881 0
13785 +#define FPUB_68882 1
13786 +#define FPUB_68040 2 /* Internal FPU */
13787 +#define FPUB_68060 3 /* Internal FPU */
13788 +#define FPUB_SUNFPA 4 /* Sun-3 FPA */
13789 +
13790 +#define FPU_68881 (1<<FPUB_68881)
13791 +#define FPU_68882 (1<<FPUB_68882)
13792 +#define FPU_68040 (1<<FPUB_68040)
13793 +#define FPU_68060 (1<<FPUB_68060)
13794 +#define FPU_SUNFPA (1<<FPUB_SUNFPA)
13795 +
13796 +#define MMUB_68851 0
13797 +#define MMUB_68030 1 /* Internal MMU */
13798 +#define MMUB_68040 2 /* Internal MMU */
13799 +#define MMUB_68060 3 /* Internal MMU */
13800 +#define MMUB_APOLLO 4 /* Custom Apollo */
13801 +#define MMUB_SUN3 5 /* Custom Sun-3 */
13802 +
13803 +#define MMU_68851 (1<<MMUB_68851)
13804 +#define MMU_68030 (1<<MMUB_68030)
13805 +#define MMU_68040 (1<<MMUB_68040)
13806 +#define MMU_68060 (1<<MMUB_68060)
13807 +#define MMU_SUN3 (1<<MMUB_SUN3)
13808 +#define MMU_APOLLO (1<<MMUB_APOLLO)
13809 +
13810 +#ifdef __KERNEL__
13811 +
13812 +#ifndef __ASSEMBLY__
13813 +extern unsigned long m68k_cputype;
13814 +extern unsigned long m68k_fputype;
13815 +extern unsigned long m68k_mmutype;
13816 +#ifdef CONFIG_VME
13817 +extern unsigned long vme_brdtype;
13818 +#endif
13819 +
13820 + /*
13821 + * m68k_is040or060 is != 0 for a '040 or higher;
13822 + * used numbers are 4 for 68040 and 6 for 68060.
13823 + */
13824 +
13825 +extern int m68k_is040or060;
13826 +#endif /* !__ASSEMBLY__ */
13827 +
13828 +#if !defined(CONFIG_M68020)
13829 +# define CPU_IS_020 (0)
13830 +# define MMU_IS_851 (0)
13831 +# define MMU_IS_SUN3 (0)
13832 +#elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
13833 +# define CPU_IS_020 (m68k_cputype & CPU_68020)
13834 +# define MMU_IS_851 (m68k_mmutype & MMU_68851)
13835 +# define MMU_IS_SUN3 (0) /* Sun3 not supported with other CPU enabled */
13836 +#else
13837 +# define CPU_M68020_ONLY
13838 +# define CPU_IS_020 (1)
13839 +#ifdef MACH_SUN3_ONLY
13840 +# define MMU_IS_SUN3 (1)
13841 +# define MMU_IS_851 (0)
13842 +#else
13843 +# define MMU_IS_SUN3 (0)
13844 +# define MMU_IS_851 (1)
13845 +#endif
13846 +#endif
13847 +
13848 +#if !defined(CONFIG_M68030)
13849 +# define CPU_IS_030 (0)
13850 +# define MMU_IS_030 (0)
13851 +#elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
13852 +# define CPU_IS_030 (m68k_cputype & CPU_68030)
13853 +# define MMU_IS_030 (m68k_mmutype & MMU_68030)
13854 +#else
13855 +# define CPU_M68030_ONLY
13856 +# define CPU_IS_030 (1)
13857 +# define MMU_IS_030 (1)
13858 +#endif
13859 +
13860 +#if !defined(CONFIG_M68040)
13861 +# define CPU_IS_040 (0)
13862 +# define MMU_IS_040 (0)
13863 +#elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060)
13864 +# define CPU_IS_040 (m68k_cputype & CPU_68040)
13865 +# define MMU_IS_040 (m68k_mmutype & MMU_68040)
13866 +#else
13867 +# define CPU_M68040_ONLY
13868 +# define CPU_IS_040 (1)
13869 +# define MMU_IS_040 (1)
13870 +#endif
13871 +
13872 +#if !defined(CONFIG_M68060)
13873 +# define CPU_IS_060 (0)
13874 +# define MMU_IS_060 (0)
13875 +#elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040)
13876 +# define CPU_IS_060 (m68k_cputype & CPU_68060)
13877 +# define MMU_IS_060 (m68k_mmutype & MMU_68060)
13878 +#else
13879 +# define CPU_M68060_ONLY
13880 +# define CPU_IS_060 (1)
13881 +# define MMU_IS_060 (1)
13882 +#endif
13883 +
13884 +#if !defined(CONFIG_M68020) && !defined(CONFIG_M68030)
13885 +# define CPU_IS_020_OR_030 (0)
13886 +#else
13887 +# define CPU_M68020_OR_M68030
13888 +# if defined(CONFIG_M68040) || defined(CONFIG_M68060)
13889 +# define CPU_IS_020_OR_030 (!m68k_is040or060)
13890 +# else
13891 +# define CPU_M68020_OR_M68030_ONLY
13892 +# define CPU_IS_020_OR_030 (1)
13893 +# endif
13894 +#endif
13895 +
13896 +#if !defined(CONFIG_M68040) && !defined(CONFIG_M68060)
13897 +# define CPU_IS_040_OR_060 (0)
13898 +#else
13899 +# define CPU_M68040_OR_M68060
13900 +# if defined(CONFIG_M68020) || defined(CONFIG_M68030)
13901 +# define CPU_IS_040_OR_060 (m68k_is040or060)
13902 +# else
13903 +# define CPU_M68040_OR_M68060_ONLY
13904 +# define CPU_IS_040_OR_060 (1)
13905 +# endif
13906 +#endif
13907 +
13908 +#define CPU_TYPE (m68k_cputype)
13909 +
13910 +#ifdef CONFIG_M68KFPU_EMU
13911 +# ifdef CONFIG_M68KFPU_EMU_ONLY
13912 +# define FPU_IS_EMU (1)
13913 +# else
13914 +# define FPU_IS_EMU (!m68k_fputype)
13915 +# endif
13916 +#else
13917 +# define FPU_IS_EMU (0)
13918 +#endif
13919 +
13920 +
13921 + /*
13922 + * Miscellaneous
13923 + */
13924 +
13925 +#define NUM_MEMINFO 4
13926 +
13927 +#ifndef __ASSEMBLY__
13928 +struct mem_info {
13929 + unsigned long addr; /* physical address of memory chunk */
13930 + unsigned long size; /* length of memory chunk (in bytes) */
13931 +};
13932 +
13933 +extern int m68k_num_memory; /* # of memory blocks found (and used) */
13934 +extern int m68k_realnum_memory; /* real # of memory blocks found */
13935 +extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
13936 +#endif
13937 +
13938 +#endif /* __KERNEL__ */
13939 +
13940 +#endif /* _M68K_SETUP_H */
13941 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/setup_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/setup_no.h
13942 --- linux-2.6.29.owrt/arch/m68k/include/asm/setup_no.h 1970-01-01 01:00:00.000000000 +0100
13943 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/setup_no.h 2009-05-10 23:48:28.000000000 +0200
13944 @@ -0,0 +1,10 @@
13945 +#ifdef __KERNEL__
13946 +
13947 +#include <asm/setup_mm.h>
13948 +
13949 +/* We have a bigger command line buffer. */
13950 +#undef COMMAND_LINE_SIZE
13951 +
13952 +#endif /* __KERNEL__ */
13953 +
13954 +#define COMMAND_LINE_SIZE 512
13955 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/sigcontext.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/sigcontext.h
13956 --- linux-2.6.29.owrt/arch/m68k/include/asm/sigcontext.h 2009-05-10 22:04:40.000000000 +0200
13957 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/sigcontext.h 2009-05-10 23:48:28.000000000 +0200
13958 @@ -1,24 +1,5 @@
13959 -#ifndef _ASM_M68k_SIGCONTEXT_H
13960 -#define _ASM_M68k_SIGCONTEXT_H
13961 -
13962 -struct sigcontext {
13963 - unsigned long sc_mask; /* old sigmask */
13964 - unsigned long sc_usp; /* old user stack pointer */
13965 - unsigned long sc_d0;
13966 - unsigned long sc_d1;
13967 - unsigned long sc_a0;
13968 - unsigned long sc_a1;
13969 #ifdef __uClinux__
13970 - unsigned long sc_a5;
13971 -#endif
13972 - unsigned short sc_sr;
13973 - unsigned long sc_pc;
13974 - unsigned short sc_formatvec;
13975 -#ifndef __uClinux__
13976 - unsigned long sc_fpregs[2*3]; /* room for two fp registers */
13977 - unsigned long sc_fpcntl[3];
13978 - unsigned char sc_fpstate[216];
13979 -#endif
13980 -};
13981 -
13982 +#include "sigcontext_no.h"
13983 +#else
13984 +#include "sigcontext_mm.h"
13985 #endif
13986 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/sigcontext_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/sigcontext_mm.h
13987 --- linux-2.6.29.owrt/arch/m68k/include/asm/sigcontext_mm.h 1970-01-01 01:00:00.000000000 +0100
13988 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/sigcontext_mm.h 2009-05-10 23:48:28.000000000 +0200
13989 @@ -0,0 +1,19 @@
13990 +#ifndef _ASM_M68k_SIGCONTEXT_H
13991 +#define _ASM_M68k_SIGCONTEXT_H
13992 +
13993 +struct sigcontext {
13994 + unsigned long sc_mask; /* old sigmask */
13995 + unsigned long sc_usp; /* old user stack pointer */
13996 + unsigned long sc_d0;
13997 + unsigned long sc_d1;
13998 + unsigned long sc_a0;
13999 + unsigned long sc_a1;
14000 + unsigned short sc_sr;
14001 + unsigned long sc_pc;
14002 + unsigned short sc_formatvec;
14003 + unsigned long sc_fpregs[2*3]; /* room for two fp registers */
14004 + unsigned long sc_fpcntl[3];
14005 + unsigned char sc_fpstate[216];
14006 +};
14007 +
14008 +#endif
14009 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/sigcontext_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/sigcontext_no.h
14010 --- linux-2.6.29.owrt/arch/m68k/include/asm/sigcontext_no.h 1970-01-01 01:00:00.000000000 +0100
14011 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/sigcontext_no.h 2009-05-10 23:48:28.000000000 +0200
14012 @@ -0,0 +1,17 @@
14013 +#ifndef _ASM_M68KNOMMU_SIGCONTEXT_H
14014 +#define _ASM_M68KNOMMU_SIGCONTEXT_H
14015 +
14016 +struct sigcontext {
14017 + unsigned long sc_mask; /* old sigmask */
14018 + unsigned long sc_usp; /* old user stack pointer */
14019 + unsigned long sc_d0;
14020 + unsigned long sc_d1;
14021 + unsigned long sc_a0;
14022 + unsigned long sc_a1;
14023 + unsigned long sc_a5;
14024 + unsigned short sc_sr;
14025 + unsigned long sc_pc;
14026 + unsigned short sc_formatvec;
14027 +};
14028 +
14029 +#endif
14030 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/siginfo.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/siginfo.h
14031 --- linux-2.6.29.owrt/arch/m68k/include/asm/siginfo.h 2009-05-10 22:04:40.000000000 +0200
14032 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/siginfo.h 2009-05-10 23:48:28.000000000 +0200
14033 @@ -1,97 +1,5 @@
14034 -#ifndef _M68K_SIGINFO_H
14035 -#define _M68K_SIGINFO_H
14036 -
14037 -#ifndef __uClinux__
14038 -#define HAVE_ARCH_SIGINFO_T
14039 -#define HAVE_ARCH_COPY_SIGINFO
14040 -#endif
14041 -
14042 -#include <asm-generic/siginfo.h>
14043 -
14044 -#ifndef __uClinux__
14045 -
14046 -typedef struct siginfo {
14047 - int si_signo;
14048 - int si_errno;
14049 - int si_code;
14050 -
14051 - union {
14052 - int _pad[SI_PAD_SIZE];
14053 -
14054 - /* kill() */
14055 - struct {
14056 - __kernel_pid_t _pid; /* sender's pid */
14057 - __kernel_uid_t _uid; /* backwards compatibility */
14058 - __kernel_uid32_t _uid32; /* sender's uid */
14059 - } _kill;
14060 -
14061 - /* POSIX.1b timers */
14062 - struct {
14063 - timer_t _tid; /* timer id */
14064 - int _overrun; /* overrun count */
14065 - char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
14066 - sigval_t _sigval; /* same as below */
14067 - int _sys_private; /* not to be passed to user */
14068 - } _timer;
14069 -
14070 - /* POSIX.1b signals */
14071 - struct {
14072 - __kernel_pid_t _pid; /* sender's pid */
14073 - __kernel_uid_t _uid; /* backwards compatibility */
14074 - sigval_t _sigval;
14075 - __kernel_uid32_t _uid32; /* sender's uid */
14076 - } _rt;
14077 -
14078 - /* SIGCHLD */
14079 - struct {
14080 - __kernel_pid_t _pid; /* which child */
14081 - __kernel_uid_t _uid; /* backwards compatibility */
14082 - int _status; /* exit code */
14083 - clock_t _utime;
14084 - clock_t _stime;
14085 - __kernel_uid32_t _uid32; /* sender's uid */
14086 - } _sigchld;
14087 -
14088 - /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
14089 - struct {
14090 - void *_addr; /* faulting insn/memory ref. */
14091 - } _sigfault;
14092 -
14093 - /* SIGPOLL */
14094 - struct {
14095 - int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
14096 - int _fd;
14097 - } _sigpoll;
14098 - } _sifields;
14099 -} siginfo_t;
14100 -
14101 -#define UID16_SIGINFO_COMPAT_NEEDED
14102 -
14103 -/*
14104 - * How these fields are to be accessed.
14105 - */
14106 -#undef si_uid
14107 -#ifdef __KERNEL__
14108 -#define si_uid _sifields._kill._uid32
14109 -#define si_uid16 _sifields._kill._uid
14110 +#ifdef __uClinux__
14111 +#include "siginfo_no.h"
14112 #else
14113 -#define si_uid _sifields._kill._uid
14114 -#endif
14115 -
14116 -#ifdef __KERNEL__
14117 -
14118 -#include <linux/string.h>
14119 -
14120 -static inline void copy_siginfo(struct siginfo *to, struct siginfo *from)
14121 -{
14122 - if (from->si_code < 0)
14123 - memcpy(to, from, sizeof(*to));
14124 - else
14125 - /* _sigchld is currently the largest know union member */
14126 - memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld));
14127 -}
14128 -
14129 -#endif /* __KERNEL__ */
14130 -#endif /* !__uClinux__ */
14131 -
14132 +#include "siginfo_mm.h"
14133 #endif
14134 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/siginfo_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/siginfo_mm.h
14135 --- linux-2.6.29.owrt/arch/m68k/include/asm/siginfo_mm.h 1970-01-01 01:00:00.000000000 +0100
14136 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/siginfo_mm.h 2009-05-10 23:48:28.000000000 +0200
14137 @@ -0,0 +1,92 @@
14138 +#ifndef _M68K_SIGINFO_H
14139 +#define _M68K_SIGINFO_H
14140 +
14141 +#define HAVE_ARCH_SIGINFO_T
14142 +#define HAVE_ARCH_COPY_SIGINFO
14143 +
14144 +#include <asm-generic/siginfo.h>
14145 +
14146 +typedef struct siginfo {
14147 + int si_signo;
14148 + int si_errno;
14149 + int si_code;
14150 +
14151 + union {
14152 + int _pad[SI_PAD_SIZE];
14153 +
14154 + /* kill() */
14155 + struct {
14156 + __kernel_pid_t _pid; /* sender's pid */
14157 + __kernel_uid_t _uid; /* backwards compatibility */
14158 + __kernel_uid32_t _uid32; /* sender's uid */
14159 + } _kill;
14160 +
14161 + /* POSIX.1b timers */
14162 + struct {
14163 + timer_t _tid; /* timer id */
14164 + int _overrun; /* overrun count */
14165 + char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
14166 + sigval_t _sigval; /* same as below */
14167 + int _sys_private; /* not to be passed to user */
14168 + } _timer;
14169 +
14170 + /* POSIX.1b signals */
14171 + struct {
14172 + __kernel_pid_t _pid; /* sender's pid */
14173 + __kernel_uid_t _uid; /* backwards compatibility */
14174 + sigval_t _sigval;
14175 + __kernel_uid32_t _uid32; /* sender's uid */
14176 + } _rt;
14177 +
14178 + /* SIGCHLD */
14179 + struct {
14180 + __kernel_pid_t _pid; /* which child */
14181 + __kernel_uid_t _uid; /* backwards compatibility */
14182 + int _status; /* exit code */
14183 + clock_t _utime;
14184 + clock_t _stime;
14185 + __kernel_uid32_t _uid32; /* sender's uid */
14186 + } _sigchld;
14187 +
14188 + /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */
14189 + struct {
14190 + void *_addr; /* faulting insn/memory ref. */
14191 + } _sigfault;
14192 +
14193 + /* SIGPOLL */
14194 + struct {
14195 + int _band; /* POLL_IN, POLL_OUT, POLL_MSG */
14196 + int _fd;
14197 + } _sigpoll;
14198 + } _sifields;
14199 +} siginfo_t;
14200 +
14201 +#define UID16_SIGINFO_COMPAT_NEEDED
14202 +
14203 +/*
14204 + * How these fields are to be accessed.
14205 + */
14206 +#undef si_uid
14207 +#ifdef __KERNEL__
14208 +#define si_uid _sifields._kill._uid32
14209 +#define si_uid16 _sifields._kill._uid
14210 +#else
14211 +#define si_uid _sifields._kill._uid
14212 +#endif
14213 +
14214 +#ifdef __KERNEL__
14215 +
14216 +#include <linux/string.h>
14217 +
14218 +static inline void copy_siginfo(struct siginfo *to, struct siginfo *from)
14219 +{
14220 + if (from->si_code < 0)
14221 + memcpy(to, from, sizeof(*to));
14222 + else
14223 + /* _sigchld is currently the largest know union member */
14224 + memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld));
14225 +}
14226 +
14227 +#endif /* __KERNEL__ */
14228 +
14229 +#endif
14230 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/siginfo_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/siginfo_no.h
14231 --- linux-2.6.29.owrt/arch/m68k/include/asm/siginfo_no.h 1970-01-01 01:00:00.000000000 +0100
14232 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/siginfo_no.h 2009-05-10 23:48:28.000000000 +0200
14233 @@ -0,0 +1,6 @@
14234 +#ifndef _M68KNOMMU_SIGINFO_H
14235 +#define _M68KNOMMU_SIGINFO_H
14236 +
14237 +#include <asm-generic/siginfo.h>
14238 +
14239 +#endif
14240 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/signal.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/signal.h
14241 --- linux-2.6.29.owrt/arch/m68k/include/asm/signal.h 2009-05-10 22:04:40.000000000 +0200
14242 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/signal.h 2009-05-10 23:48:28.000000000 +0200
14243 @@ -1,213 +1,5 @@
14244 -#ifndef _M68K_SIGNAL_H
14245 -#define _M68K_SIGNAL_H
14246 -
14247 -#include <linux/types.h>
14248 -
14249 -/* Avoid too many header ordering problems. */
14250 -struct siginfo;
14251 -
14252 -#ifdef __KERNEL__
14253 -/* Most things should be clean enough to redefine this at will, if care
14254 - is taken to make libc match. */
14255 -
14256 -#define _NSIG 64
14257 -#define _NSIG_BPW 32
14258 -#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
14259 -
14260 -typedef unsigned long old_sigset_t; /* at least 32 bits */
14261 -
14262 -typedef struct {
14263 - unsigned long sig[_NSIG_WORDS];
14264 -} sigset_t;
14265 -
14266 +#ifdef __uClinux__
14267 +#include "signal_no.h"
14268 #else
14269 -/* Here we must cater to libcs that poke about in kernel headers. */
14270 -
14271 -#define NSIG 32
14272 -typedef unsigned long sigset_t;
14273 -
14274 -#endif /* __KERNEL__ */
14275 -
14276 -#define SIGHUP 1
14277 -#define SIGINT 2
14278 -#define SIGQUIT 3
14279 -#define SIGILL 4
14280 -#define SIGTRAP 5
14281 -#define SIGABRT 6
14282 -#define SIGIOT 6
14283 -#define SIGBUS 7
14284 -#define SIGFPE 8
14285 -#define SIGKILL 9
14286 -#define SIGUSR1 10
14287 -#define SIGSEGV 11
14288 -#define SIGUSR2 12
14289 -#define SIGPIPE 13
14290 -#define SIGALRM 14
14291 -#define SIGTERM 15
14292 -#define SIGSTKFLT 16
14293 -#define SIGCHLD 17
14294 -#define SIGCONT 18
14295 -#define SIGSTOP 19
14296 -#define SIGTSTP 20
14297 -#define SIGTTIN 21
14298 -#define SIGTTOU 22
14299 -#define SIGURG 23
14300 -#define SIGXCPU 24
14301 -#define SIGXFSZ 25
14302 -#define SIGVTALRM 26
14303 -#define SIGPROF 27
14304 -#define SIGWINCH 28
14305 -#define SIGIO 29
14306 -#define SIGPOLL SIGIO
14307 -/*
14308 -#define SIGLOST 29
14309 -*/
14310 -#define SIGPWR 30
14311 -#define SIGSYS 31
14312 -#define SIGUNUSED 31
14313 -
14314 -/* These should not be considered constants from userland. */
14315 -#define SIGRTMIN 32
14316 -#define SIGRTMAX _NSIG
14317 -
14318 -/*
14319 - * SA_FLAGS values:
14320 - *
14321 - * SA_ONSTACK indicates that a registered stack_t will be used.
14322 - * SA_RESTART flag to get restarting signals (which were the default long ago)
14323 - * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
14324 - * SA_RESETHAND clears the handler when the signal is delivered.
14325 - * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
14326 - * SA_NODEFER prevents the current signal from being masked in the handler.
14327 - *
14328 - * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
14329 - * Unix names RESETHAND and NODEFER respectively.
14330 - */
14331 -#define SA_NOCLDSTOP 0x00000001
14332 -#define SA_NOCLDWAIT 0x00000002
14333 -#define SA_SIGINFO 0x00000004
14334 -#define SA_ONSTACK 0x08000000
14335 -#define SA_RESTART 0x10000000
14336 -#define SA_NODEFER 0x40000000
14337 -#define SA_RESETHAND 0x80000000
14338 -
14339 -#define SA_NOMASK SA_NODEFER
14340 -#define SA_ONESHOT SA_RESETHAND
14341 -
14342 -/*
14343 - * sigaltstack controls
14344 - */
14345 -#define SS_ONSTACK 1
14346 -#define SS_DISABLE 2
14347 -
14348 -#define MINSIGSTKSZ 2048
14349 -#define SIGSTKSZ 8192
14350 -
14351 -#include <asm-generic/signal.h>
14352 -
14353 -#ifdef __KERNEL__
14354 -struct old_sigaction {
14355 - __sighandler_t sa_handler;
14356 - old_sigset_t sa_mask;
14357 - unsigned long sa_flags;
14358 - __sigrestore_t sa_restorer;
14359 -};
14360 -
14361 -struct sigaction {
14362 - __sighandler_t sa_handler;
14363 - unsigned long sa_flags;
14364 - __sigrestore_t sa_restorer;
14365 - sigset_t sa_mask; /* mask last for extensibility */
14366 -};
14367 -
14368 -struct k_sigaction {
14369 - struct sigaction sa;
14370 -};
14371 -#else
14372 -/* Here we must cater to libcs that poke about in kernel headers. */
14373 -
14374 -struct sigaction {
14375 - union {
14376 - __sighandler_t _sa_handler;
14377 - void (*_sa_sigaction)(int, struct siginfo *, void *);
14378 - } _u;
14379 - sigset_t sa_mask;
14380 - unsigned long sa_flags;
14381 - void (*sa_restorer)(void);
14382 -};
14383 -
14384 -#define sa_handler _u._sa_handler
14385 -#define sa_sigaction _u._sa_sigaction
14386 -
14387 -#endif /* __KERNEL__ */
14388 -
14389 -typedef struct sigaltstack {
14390 - void __user *ss_sp;
14391 - int ss_flags;
14392 - size_t ss_size;
14393 -} stack_t;
14394 -
14395 -#ifdef __KERNEL__
14396 -#include <asm/sigcontext.h>
14397 -
14398 -#ifndef __uClinux__
14399 -#define __HAVE_ARCH_SIG_BITOPS
14400 -
14401 -static inline void sigaddset(sigset_t *set, int _sig)
14402 -{
14403 - asm ("bfset %0{%1,#1}"
14404 - : "+od" (*set)
14405 - : "id" ((_sig - 1) ^ 31)
14406 - : "cc");
14407 -}
14408 -
14409 -static inline void sigdelset(sigset_t *set, int _sig)
14410 -{
14411 - asm ("bfclr %0{%1,#1}"
14412 - : "+od" (*set)
14413 - : "id" ((_sig - 1) ^ 31)
14414 - : "cc");
14415 -}
14416 -
14417 -static inline int __const_sigismember(sigset_t *set, int _sig)
14418 -{
14419 - unsigned long sig = _sig - 1;
14420 - return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
14421 -}
14422 -
14423 -static inline int __gen_sigismember(sigset_t *set, int _sig)
14424 -{
14425 - int ret;
14426 - asm ("bfextu %1{%2,#1},%0"
14427 - : "=d" (ret)
14428 - : "od" (*set), "id" ((_sig-1) ^ 31)
14429 - : "cc");
14430 - return ret;
14431 -}
14432 -
14433 -#define sigismember(set,sig) \
14434 - (__builtin_constant_p(sig) ? \
14435 - __const_sigismember(set,sig) : \
14436 - __gen_sigismember(set,sig))
14437 -
14438 -static inline int sigfindinword(unsigned long word)
14439 -{
14440 - asm ("bfffo %1{#0,#0},%0"
14441 - : "=d" (word)
14442 - : "d" (word & -word)
14443 - : "cc");
14444 - return word ^ 31;
14445 -}
14446 -
14447 -struct pt_regs;
14448 -extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie);
14449 -
14450 -#else
14451 -
14452 -#undef __HAVE_ARCH_SIG_BITOPS
14453 -#define ptrace_signal_deliver(regs, cookie) do { } while (0)
14454 -
14455 -#endif /* __uClinux__ */
14456 -#endif /* __KERNEL__ */
14457 -
14458 -#endif /* _M68K_SIGNAL_H */
14459 +#include "signal_mm.h"
14460 +#endif
14461 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/signal_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/signal_mm.h
14462 --- linux-2.6.29.owrt/arch/m68k/include/asm/signal_mm.h 1970-01-01 01:00:00.000000000 +0100
14463 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/signal_mm.h 2009-05-10 23:48:28.000000000 +0200
14464 @@ -0,0 +1,206 @@
14465 +#ifndef _M68K_SIGNAL_H
14466 +#define _M68K_SIGNAL_H
14467 +
14468 +#include <linux/types.h>
14469 +
14470 +/* Avoid too many header ordering problems. */
14471 +struct siginfo;
14472 +
14473 +#ifdef __KERNEL__
14474 +/* Most things should be clean enough to redefine this at will, if care
14475 + is taken to make libc match. */
14476 +
14477 +#define _NSIG 64
14478 +#define _NSIG_BPW 32
14479 +#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
14480 +
14481 +typedef unsigned long old_sigset_t; /* at least 32 bits */
14482 +
14483 +typedef struct {
14484 + unsigned long sig[_NSIG_WORDS];
14485 +} sigset_t;
14486 +
14487 +#else
14488 +/* Here we must cater to libcs that poke about in kernel headers. */
14489 +
14490 +#define NSIG 32
14491 +typedef unsigned long sigset_t;
14492 +
14493 +#endif /* __KERNEL__ */
14494 +
14495 +#define SIGHUP 1
14496 +#define SIGINT 2
14497 +#define SIGQUIT 3
14498 +#define SIGILL 4
14499 +#define SIGTRAP 5
14500 +#define SIGABRT 6
14501 +#define SIGIOT 6
14502 +#define SIGBUS 7
14503 +#define SIGFPE 8
14504 +#define SIGKILL 9
14505 +#define SIGUSR1 10
14506 +#define SIGSEGV 11
14507 +#define SIGUSR2 12
14508 +#define SIGPIPE 13
14509 +#define SIGALRM 14
14510 +#define SIGTERM 15
14511 +#define SIGSTKFLT 16
14512 +#define SIGCHLD 17
14513 +#define SIGCONT 18
14514 +#define SIGSTOP 19
14515 +#define SIGTSTP 20
14516 +#define SIGTTIN 21
14517 +#define SIGTTOU 22
14518 +#define SIGURG 23
14519 +#define SIGXCPU 24
14520 +#define SIGXFSZ 25
14521 +#define SIGVTALRM 26
14522 +#define SIGPROF 27
14523 +#define SIGWINCH 28
14524 +#define SIGIO 29
14525 +#define SIGPOLL SIGIO
14526 +/*
14527 +#define SIGLOST 29
14528 +*/
14529 +#define SIGPWR 30
14530 +#define SIGSYS 31
14531 +#define SIGUNUSED 31
14532 +
14533 +/* These should not be considered constants from userland. */
14534 +#define SIGRTMIN 32
14535 +#define SIGRTMAX _NSIG
14536 +
14537 +/*
14538 + * SA_FLAGS values:
14539 + *
14540 + * SA_ONSTACK indicates that a registered stack_t will be used.
14541 + * SA_RESTART flag to get restarting signals (which were the default long ago)
14542 + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
14543 + * SA_RESETHAND clears the handler when the signal is delivered.
14544 + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
14545 + * SA_NODEFER prevents the current signal from being masked in the handler.
14546 + *
14547 + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
14548 + * Unix names RESETHAND and NODEFER respectively.
14549 + */
14550 +#define SA_NOCLDSTOP 0x00000001
14551 +#define SA_NOCLDWAIT 0x00000002
14552 +#define SA_SIGINFO 0x00000004
14553 +#define SA_ONSTACK 0x08000000
14554 +#define SA_RESTART 0x10000000
14555 +#define SA_NODEFER 0x40000000
14556 +#define SA_RESETHAND 0x80000000
14557 +
14558 +#define SA_NOMASK SA_NODEFER
14559 +#define SA_ONESHOT SA_RESETHAND
14560 +
14561 +/*
14562 + * sigaltstack controls
14563 + */
14564 +#define SS_ONSTACK 1
14565 +#define SS_DISABLE 2
14566 +
14567 +#define MINSIGSTKSZ 2048
14568 +#define SIGSTKSZ 8192
14569 +
14570 +#include <asm-generic/signal.h>
14571 +
14572 +#ifdef __KERNEL__
14573 +struct old_sigaction {
14574 + __sighandler_t sa_handler;
14575 + old_sigset_t sa_mask;
14576 + unsigned long sa_flags;
14577 + __sigrestore_t sa_restorer;
14578 +};
14579 +
14580 +struct sigaction {
14581 + __sighandler_t sa_handler;
14582 + unsigned long sa_flags;
14583 + __sigrestore_t sa_restorer;
14584 + sigset_t sa_mask; /* mask last for extensibility */
14585 +};
14586 +
14587 +struct k_sigaction {
14588 + struct sigaction sa;
14589 +};
14590 +#else
14591 +/* Here we must cater to libcs that poke about in kernel headers. */
14592 +
14593 +struct sigaction {
14594 + union {
14595 + __sighandler_t _sa_handler;
14596 + void (*_sa_sigaction)(int, struct siginfo *, void *);
14597 + } _u;
14598 + sigset_t sa_mask;
14599 + unsigned long sa_flags;
14600 + void (*sa_restorer)(void);
14601 +};
14602 +
14603 +#define sa_handler _u._sa_handler
14604 +#define sa_sigaction _u._sa_sigaction
14605 +
14606 +#endif /* __KERNEL__ */
14607 +
14608 +typedef struct sigaltstack {
14609 + void __user *ss_sp;
14610 + int ss_flags;
14611 + size_t ss_size;
14612 +} stack_t;
14613 +
14614 +#ifdef __KERNEL__
14615 +#include <asm/sigcontext.h>
14616 +
14617 +#define __HAVE_ARCH_SIG_BITOPS
14618 +
14619 +static inline void sigaddset(sigset_t *set, int _sig)
14620 +{
14621 + asm ("bfset %0{%1,#1}"
14622 + : "+od" (*set)
14623 + : "id" ((_sig - 1) ^ 31)
14624 + : "cc");
14625 +}
14626 +
14627 +static inline void sigdelset(sigset_t *set, int _sig)
14628 +{
14629 + asm ("bfclr %0{%1,#1}"
14630 + : "+od" (*set)
14631 + : "id" ((_sig - 1) ^ 31)
14632 + : "cc");
14633 +}
14634 +
14635 +static inline int __const_sigismember(sigset_t *set, int _sig)
14636 +{
14637 + unsigned long sig = _sig - 1;
14638 + return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
14639 +}
14640 +
14641 +static inline int __gen_sigismember(sigset_t *set, int _sig)
14642 +{
14643 + int ret;
14644 + asm ("bfextu %1{%2,#1},%0"
14645 + : "=d" (ret)
14646 + : "od" (*set), "id" ((_sig-1) ^ 31)
14647 + : "cc");
14648 + return ret;
14649 +}
14650 +
14651 +#define sigismember(set,sig) \
14652 + (__builtin_constant_p(sig) ? \
14653 + __const_sigismember(set,sig) : \
14654 + __gen_sigismember(set,sig))
14655 +
14656 +static inline int sigfindinword(unsigned long word)
14657 +{
14658 + asm ("bfffo %1{#0,#0},%0"
14659 + : "=d" (word)
14660 + : "d" (word & -word)
14661 + : "cc");
14662 + return word ^ 31;
14663 +}
14664 +
14665 +struct pt_regs;
14666 +extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie);
14667 +
14668 +#endif /* __KERNEL__ */
14669 +
14670 +#endif /* _M68K_SIGNAL_H */
14671 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/signal_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/signal_no.h
14672 --- linux-2.6.29.owrt/arch/m68k/include/asm/signal_no.h 1970-01-01 01:00:00.000000000 +0100
14673 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/signal_no.h 2009-05-10 23:48:28.000000000 +0200
14674 @@ -0,0 +1,159 @@
14675 +#ifndef _M68KNOMMU_SIGNAL_H
14676 +#define _M68KNOMMU_SIGNAL_H
14677 +
14678 +#include <linux/types.h>
14679 +
14680 +/* Avoid too many header ordering problems. */
14681 +struct siginfo;
14682 +
14683 +#ifdef __KERNEL__
14684 +/* Most things should be clean enough to redefine this at will, if care
14685 + is taken to make libc match. */
14686 +
14687 +#define _NSIG 64
14688 +#define _NSIG_BPW 32
14689 +#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
14690 +
14691 +typedef unsigned long old_sigset_t; /* at least 32 bits */
14692 +
14693 +typedef struct {
14694 + unsigned long sig[_NSIG_WORDS];
14695 +} sigset_t;
14696 +
14697 +#else
14698 +/* Here we must cater to libcs that poke about in kernel headers. */
14699 +
14700 +#define NSIG 32
14701 +typedef unsigned long sigset_t;
14702 +
14703 +#endif /* __KERNEL__ */
14704 +
14705 +#define SIGHUP 1
14706 +#define SIGINT 2
14707 +#define SIGQUIT 3
14708 +#define SIGILL 4
14709 +#define SIGTRAP 5
14710 +#define SIGABRT 6
14711 +#define SIGIOT 6
14712 +#define SIGBUS 7
14713 +#define SIGFPE 8
14714 +#define SIGKILL 9
14715 +#define SIGUSR1 10
14716 +#define SIGSEGV 11
14717 +#define SIGUSR2 12
14718 +#define SIGPIPE 13
14719 +#define SIGALRM 14
14720 +#define SIGTERM 15
14721 +#define SIGSTKFLT 16
14722 +#define SIGCHLD 17
14723 +#define SIGCONT 18
14724 +#define SIGSTOP 19
14725 +#define SIGTSTP 20
14726 +#define SIGTTIN 21
14727 +#define SIGTTOU 22
14728 +#define SIGURG 23
14729 +#define SIGXCPU 24
14730 +#define SIGXFSZ 25
14731 +#define SIGVTALRM 26
14732 +#define SIGPROF 27
14733 +#define SIGWINCH 28
14734 +#define SIGIO 29
14735 +#define SIGPOLL SIGIO
14736 +/*
14737 +#define SIGLOST 29
14738 +*/
14739 +#define SIGPWR 30
14740 +#define SIGSYS 31
14741 +#define SIGUNUSED 31
14742 +
14743 +/* These should not be considered constants from userland. */
14744 +#define SIGRTMIN 32
14745 +#define SIGRTMAX _NSIG
14746 +
14747 +/*
14748 + * SA_FLAGS values:
14749 + *
14750 + * SA_ONSTACK indicates that a registered stack_t will be used.
14751 + * SA_RESTART flag to get restarting signals (which were the default long ago)
14752 + * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
14753 + * SA_RESETHAND clears the handler when the signal is delivered.
14754 + * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
14755 + * SA_NODEFER prevents the current signal from being masked in the handler.
14756 + *
14757 + * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
14758 + * Unix names RESETHAND and NODEFER respectively.
14759 + */
14760 +#define SA_NOCLDSTOP 0x00000001
14761 +#define SA_NOCLDWAIT 0x00000002
14762 +#define SA_SIGINFO 0x00000004
14763 +#define SA_ONSTACK 0x08000000
14764 +#define SA_RESTART 0x10000000
14765 +#define SA_NODEFER 0x40000000
14766 +#define SA_RESETHAND 0x80000000
14767 +
14768 +#define SA_NOMASK SA_NODEFER
14769 +#define SA_ONESHOT SA_RESETHAND
14770 +
14771 +/*
14772 + * sigaltstack controls
14773 + */
14774 +#define SS_ONSTACK 1
14775 +#define SS_DISABLE 2
14776 +
14777 +#define MINSIGSTKSZ 2048
14778 +#define SIGSTKSZ 8192
14779 +
14780 +#include <asm-generic/signal.h>
14781 +
14782 +#ifdef __KERNEL__
14783 +struct old_sigaction {
14784 + __sighandler_t sa_handler;
14785 + old_sigset_t sa_mask;
14786 + unsigned long sa_flags;
14787 + void (*sa_restorer)(void);
14788 +};
14789 +
14790 +struct sigaction {
14791 + __sighandler_t sa_handler;
14792 + unsigned long sa_flags;
14793 + void (*sa_restorer)(void);
14794 + sigset_t sa_mask; /* mask last for extensibility */
14795 +};
14796 +
14797 +struct k_sigaction {
14798 + struct sigaction sa;
14799 +};
14800 +#else
14801 +/* Here we must cater to libcs that poke about in kernel headers. */
14802 +
14803 +struct sigaction {
14804 + union {
14805 + __sighandler_t _sa_handler;
14806 + void (*_sa_sigaction)(int, struct siginfo *, void *);
14807 + } _u;
14808 + sigset_t sa_mask;
14809 + unsigned long sa_flags;
14810 + void (*sa_restorer)(void);
14811 +};
14812 +
14813 +#define sa_handler _u._sa_handler
14814 +#define sa_sigaction _u._sa_sigaction
14815 +
14816 +#endif /* __KERNEL__ */
14817 +
14818 +typedef struct sigaltstack {
14819 + void *ss_sp;
14820 + int ss_flags;
14821 + size_t ss_size;
14822 +} stack_t;
14823 +
14824 +#ifdef __KERNEL__
14825 +
14826 +#include <asm/sigcontext.h>
14827 +#undef __HAVE_ARCH_SIG_BITOPS
14828 +
14829 +#define ptrace_signal_deliver(regs, cookie) do { } while (0)
14830 +
14831 +#endif /* __KERNEL__ */
14832 +
14833 +#endif /* _M68KNOMMU_SIGNAL_H */
14834 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/swab.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/swab.h
14835 --- linux-2.6.29.owrt/arch/m68k/include/asm/swab.h 2009-05-10 22:04:40.000000000 +0200
14836 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/swab.h 2009-05-10 23:48:28.000000000 +0200
14837 @@ -1,27 +1,5 @@
14838 -#ifndef _M68K_SWAB_H
14839 -#define _M68K_SWAB_H
14840 -
14841 -#include <asm/types.h>
14842 -#include <linux/compiler.h>
14843 -
14844 -#define __SWAB_64_THRU_32__
14845 -
14846 -#if defined (__mcfisaaplus__) || defined (__mcfisac__)
14847 -static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
14848 -{
14849 - __asm__("byterev %0" : "=d" (val) : "0" (val));
14850 - return val;
14851 -}
14852 -
14853 -#define __arch_swab32 __arch_swab32
14854 -#elif !defined(__uClinux__)
14855 -
14856 -static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
14857 -{
14858 - __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val));
14859 - return val;
14860 -}
14861 -#define __arch_swab32 __arch_swab32
14862 +#ifdef __uClinux__
14863 +#include "swab_no.h"
14864 +#else
14865 +#include "swab_mm.h"
14866 #endif
14867 -
14868 -#endif /* _M68K_SWAB_H */
14869 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/swab_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/swab_mm.h
14870 --- linux-2.6.29.owrt/arch/m68k/include/asm/swab_mm.h 1970-01-01 01:00:00.000000000 +0100
14871 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/swab_mm.h 2009-05-10 23:48:28.000000000 +0200
14872 @@ -0,0 +1,16 @@
14873 +#ifndef _M68K_SWAB_H
14874 +#define _M68K_SWAB_H
14875 +
14876 +#include <asm/types.h>
14877 +#include <linux/compiler.h>
14878 +
14879 +#define __SWAB_64_THRU_32__
14880 +
14881 +static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
14882 +{
14883 + __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val));
14884 + return val;
14885 +}
14886 +#define __arch_swab32 __arch_swab32
14887 +
14888 +#endif /* _M68K_SWAB_H */
14889 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/swab_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/swab_no.h
14890 --- linux-2.6.29.owrt/arch/m68k/include/asm/swab_no.h 1970-01-01 01:00:00.000000000 +0100
14891 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/swab_no.h 2009-05-10 23:48:28.000000000 +0200
14892 @@ -0,0 +1,24 @@
14893 +#ifndef _M68KNOMMU_SWAB_H
14894 +#define _M68KNOMMU_SWAB_H
14895 +
14896 +#include <linux/types.h>
14897 +
14898 +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__)
14899 +# define __SWAB_64_THRU_32__
14900 +#endif
14901 +
14902 +#if defined (__mcfisaaplus__) || defined (__mcfisac__)
14903 +static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
14904 +{
14905 + asm(
14906 + "byterev %0"
14907 + : "=d" (val)
14908 + : "0" (val)
14909 + );
14910 + return val;
14911 +}
14912 +
14913 +#define __arch_swab32 __arch_swab32
14914 +#endif
14915 +
14916 +#endif /* _M68KNOMMU_SWAB_H */
14917 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/unistd.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/unistd.h
14918 --- linux-2.6.29.owrt/arch/m68k/include/asm/unistd.h 2009-05-10 22:04:40.000000000 +0200
14919 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/unistd.h 2009-05-10 23:48:28.000000000 +0200
14920 @@ -1,372 +1,5 @@
14921 -#ifndef _ASM_M68K_UNISTD_H_
14922 -#define _ASM_M68K_UNISTD_H_
14923 -
14924 -/*
14925 - * This file contains the system call numbers.
14926 - */
14927 -
14928 -#define __NR_restart_syscall 0
14929 -#define __NR_exit 1
14930 -#define __NR_fork 2
14931 -#define __NR_read 3
14932 -#define __NR_write 4
14933 -#define __NR_open 5
14934 -#define __NR_close 6
14935 -#define __NR_waitpid 7
14936 -#define __NR_creat 8
14937 -#define __NR_link 9
14938 -#define __NR_unlink 10
14939 -#define __NR_execve 11
14940 -#define __NR_chdir 12
14941 -#define __NR_time 13
14942 -#define __NR_mknod 14
14943 -#define __NR_chmod 15
14944 -#define __NR_chown 16
14945 -#define __NR_break 17
14946 -#define __NR_oldstat 18
14947 -#define __NR_lseek 19
14948 -#define __NR_getpid 20
14949 -#define __NR_mount 21
14950 -#define __NR_umount 22
14951 -#define __NR_setuid 23
14952 -#define __NR_getuid 24
14953 -#define __NR_stime 25
14954 -#define __NR_ptrace 26
14955 -#define __NR_alarm 27
14956 -#define __NR_oldfstat 28
14957 -#define __NR_pause 29
14958 -#define __NR_utime 30
14959 -#define __NR_stty 31
14960 -#define __NR_gtty 32
14961 -#define __NR_access 33
14962 -#define __NR_nice 34
14963 -#define __NR_ftime 35
14964 -#define __NR_sync 36
14965 -#define __NR_kill 37
14966 -#define __NR_rename 38
14967 -#define __NR_mkdir 39
14968 -#define __NR_rmdir 40
14969 -#define __NR_dup 41
14970 -#define __NR_pipe 42
14971 -#define __NR_times 43
14972 -#define __NR_prof 44
14973 -#define __NR_brk 45
14974 -#define __NR_setgid 46
14975 -#define __NR_getgid 47
14976 -#define __NR_signal 48
14977 -#define __NR_geteuid 49
14978 -#define __NR_getegid 50
14979 -#define __NR_acct 51
14980 -#define __NR_umount2 52
14981 -#define __NR_lock 53
14982 -#define __NR_ioctl 54
14983 -#define __NR_fcntl 55
14984 -#define __NR_mpx 56
14985 -#define __NR_setpgid 57
14986 -#define __NR_ulimit 58
14987 -#define __NR_oldolduname 59
14988 -#define __NR_umask 60
14989 -#define __NR_chroot 61
14990 -#define __NR_ustat 62
14991 -#define __NR_dup2 63
14992 -#define __NR_getppid 64
14993 -#define __NR_getpgrp 65
14994 -#define __NR_setsid 66
14995 -#define __NR_sigaction 67
14996 -#define __NR_sgetmask 68
14997 -#define __NR_ssetmask 69
14998 -#define __NR_setreuid 70
14999 -#define __NR_setregid 71
15000 -#define __NR_sigsuspend 72
15001 -#define __NR_sigpending 73
15002 -#define __NR_sethostname 74
15003 -#define __NR_setrlimit 75
15004 -#define __NR_getrlimit 76
15005 -#define __NR_getrusage 77
15006 -#define __NR_gettimeofday 78
15007 -#define __NR_settimeofday 79
15008 -#define __NR_getgroups 80
15009 -#define __NR_setgroups 81
15010 -#define __NR_select 82
15011 -#define __NR_symlink 83
15012 -#define __NR_oldlstat 84
15013 -#define __NR_readlink 85
15014 -#define __NR_uselib 86
15015 -#define __NR_swapon 87
15016 -#define __NR_reboot 88
15017 -#define __NR_readdir 89
15018 -#define __NR_mmap 90
15019 -#define __NR_munmap 91
15020 -#define __NR_truncate 92
15021 -#define __NR_ftruncate 93
15022 -#define __NR_fchmod 94
15023 -#define __NR_fchown 95
15024 -#define __NR_getpriority 96
15025 -#define __NR_setpriority 97
15026 -#define __NR_profil 98
15027 -#define __NR_statfs 99
15028 -#define __NR_fstatfs 100
15029 -#define __NR_ioperm 101
15030 -#define __NR_socketcall 102
15031 -#define __NR_syslog 103
15032 -#define __NR_setitimer 104
15033 -#define __NR_getitimer 105
15034 -#define __NR_stat 106
15035 -#define __NR_lstat 107
15036 -#define __NR_fstat 108
15037 -#define __NR_olduname 109
15038 -#define __NR_iopl /* 110 */ not supported
15039 -#define __NR_vhangup 111
15040 -#define __NR_idle /* 112 */ Obsolete
15041 -#define __NR_vm86 /* 113 */ not supported
15042 -#define __NR_wait4 114
15043 -#define __NR_swapoff 115
15044 -#define __NR_sysinfo 116
15045 -#define __NR_ipc 117
15046 -#define __NR_fsync 118
15047 -#define __NR_sigreturn 119
15048 -#define __NR_clone 120
15049 -#define __NR_setdomainname 121
15050 -#define __NR_uname 122
15051 -#define __NR_cacheflush 123
15052 -#define __NR_adjtimex 124
15053 -#define __NR_mprotect 125
15054 -#define __NR_sigprocmask 126
15055 -#define __NR_create_module 127
15056 -#define __NR_init_module 128
15057 -#define __NR_delete_module 129
15058 -#define __NR_get_kernel_syms 130
15059 -#define __NR_quotactl 131
15060 -#define __NR_getpgid 132
15061 -#define __NR_fchdir 133
15062 -#define __NR_bdflush 134
15063 -#define __NR_sysfs 135
15064 -#define __NR_personality 136
15065 -#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
15066 -#define __NR_setfsuid 138
15067 -#define __NR_setfsgid 139
15068 -#define __NR__llseek 140
15069 -#define __NR_getdents 141
15070 -#define __NR__newselect 142
15071 -#define __NR_flock 143
15072 -#define __NR_msync 144
15073 -#define __NR_readv 145
15074 -#define __NR_writev 146
15075 -#define __NR_getsid 147
15076 -#define __NR_fdatasync 148
15077 -#define __NR__sysctl 149
15078 -#define __NR_mlock 150
15079 -#define __NR_munlock 151
15080 -#define __NR_mlockall 152
15081 -#define __NR_munlockall 153
15082 -#define __NR_sched_setparam 154
15083 -#define __NR_sched_getparam 155
15084 -#define __NR_sched_setscheduler 156
15085 -#define __NR_sched_getscheduler 157
15086 -#define __NR_sched_yield 158
15087 -#define __NR_sched_get_priority_max 159
15088 -#define __NR_sched_get_priority_min 160
15089 -#define __NR_sched_rr_get_interval 161
15090 -#define __NR_nanosleep 162
15091 -#define __NR_mremap 163
15092 -#define __NR_setresuid 164
15093 -#define __NR_getresuid 165
15094 -#define __NR_getpagesize 166
15095 -#define __NR_query_module 167
15096 -#define __NR_poll 168
15097 -#define __NR_nfsservctl 169
15098 -#define __NR_setresgid 170
15099 -#define __NR_getresgid 171
15100 -#define __NR_prctl 172
15101 -#define __NR_rt_sigreturn 173
15102 -#define __NR_rt_sigaction 174
15103 -#define __NR_rt_sigprocmask 175
15104 -#define __NR_rt_sigpending 176
15105 -#define __NR_rt_sigtimedwait 177
15106 -#define __NR_rt_sigqueueinfo 178
15107 -#define __NR_rt_sigsuspend 179
15108 -#define __NR_pread64 180
15109 -#define __NR_pwrite64 181
15110 -#define __NR_lchown 182
15111 -#define __NR_getcwd 183
15112 -#define __NR_capget 184
15113 -#define __NR_capset 185
15114 -#define __NR_sigaltstack 186
15115 -#define __NR_sendfile 187
15116 -#define __NR_getpmsg 188 /* some people actually want streams */
15117 -#define __NR_putpmsg 189 /* some people actually want streams */
15118 -#define __NR_vfork 190
15119 -#define __NR_ugetrlimit 191
15120 -#define __NR_mmap2 192
15121 -#define __NR_truncate64 193
15122 -#define __NR_ftruncate64 194
15123 -#define __NR_stat64 195
15124 -#define __NR_lstat64 196
15125 -#define __NR_fstat64 197
15126 -#define __NR_chown32 198
15127 -#define __NR_getuid32 199
15128 -#define __NR_getgid32 200
15129 -#define __NR_geteuid32 201
15130 -#define __NR_getegid32 202
15131 -#define __NR_setreuid32 203
15132 -#define __NR_setregid32 204
15133 -#define __NR_getgroups32 205
15134 -#define __NR_setgroups32 206
15135 -#define __NR_fchown32 207
15136 -#define __NR_setresuid32 208
15137 -#define __NR_getresuid32 209
15138 -#define __NR_setresgid32 210
15139 -#define __NR_getresgid32 211
15140 -#define __NR_lchown32 212
15141 -#define __NR_setuid32 213
15142 -#define __NR_setgid32 214
15143 -#define __NR_setfsuid32 215
15144 -#define __NR_setfsgid32 216
15145 -#define __NR_pivot_root 217
15146 -#define __NR_getdents64 220
15147 -#define __NR_gettid 221
15148 -#define __NR_tkill 222
15149 -#define __NR_setxattr 223
15150 -#define __NR_lsetxattr 224
15151 -#define __NR_fsetxattr 225
15152 -#define __NR_getxattr 226
15153 -#define __NR_lgetxattr 227
15154 -#define __NR_fgetxattr 228
15155 -#define __NR_listxattr 229
15156 -#define __NR_llistxattr 230
15157 -#define __NR_flistxattr 231
15158 -#define __NR_removexattr 232
15159 -#define __NR_lremovexattr 233
15160 -#define __NR_fremovexattr 234
15161 -#define __NR_futex 235
15162 -#define __NR_sendfile64 236
15163 -#define __NR_mincore 237
15164 -#define __NR_madvise 238
15165 -#define __NR_fcntl64 239
15166 -#define __NR_readahead 240
15167 -#define __NR_io_setup 241
15168 -#define __NR_io_destroy 242
15169 -#define __NR_io_getevents 243
15170 -#define __NR_io_submit 244
15171 -#define __NR_io_cancel 245
15172 -#define __NR_fadvise64 246
15173 -#define __NR_exit_group 247
15174 -#define __NR_lookup_dcookie 248
15175 -#define __NR_epoll_create 249
15176 -#define __NR_epoll_ctl 250
15177 -#define __NR_epoll_wait 251
15178 -#define __NR_remap_file_pages 252
15179 -#define __NR_set_tid_address 253
15180 -#define __NR_timer_create 254
15181 -#define __NR_timer_settime 255
15182 -#define __NR_timer_gettime 256
15183 -#define __NR_timer_getoverrun 257
15184 -#define __NR_timer_delete 258
15185 -#define __NR_clock_settime 259
15186 -#define __NR_clock_gettime 260
15187 -#define __NR_clock_getres 261
15188 -#define __NR_clock_nanosleep 262
15189 -#define __NR_statfs64 263
15190 -#define __NR_fstatfs64 264
15191 -#define __NR_tgkill 265
15192 -#define __NR_utimes 266
15193 -#define __NR_fadvise64_64 267
15194 -#define __NR_mbind 268
15195 -#define __NR_get_mempolicy 269
15196 -#define __NR_set_mempolicy 270
15197 -#define __NR_mq_open 271
15198 -#define __NR_mq_unlink 272
15199 -#define __NR_mq_timedsend 273
15200 -#define __NR_mq_timedreceive 274
15201 -#define __NR_mq_notify 275
15202 -#define __NR_mq_getsetattr 276
15203 -#define __NR_waitid 277
15204 -#define __NR_vserver 278
15205 -#define __NR_add_key 279
15206 -#define __NR_request_key 280
15207 -#define __NR_keyctl 281
15208 -#define __NR_ioprio_set 282
15209 -#define __NR_ioprio_get 283
15210 -#define __NR_inotify_init 284
15211 -#define __NR_inotify_add_watch 285
15212 -#define __NR_inotify_rm_watch 286
15213 -#define __NR_migrate_pages 287
15214 -#define __NR_openat 288
15215 -#define __NR_mkdirat 289
15216 -#define __NR_mknodat 290
15217 -#define __NR_fchownat 291
15218 -#define __NR_futimesat 292
15219 -#define __NR_fstatat64 293
15220 -#define __NR_unlinkat 294
15221 -#define __NR_renameat 295
15222 -#define __NR_linkat 296
15223 -#define __NR_symlinkat 297
15224 -#define __NR_readlinkat 298
15225 -#define __NR_fchmodat 299
15226 -#define __NR_faccessat 300
15227 -#define __NR_pselect6 301
15228 -#define __NR_ppoll 302
15229 -#define __NR_unshare 303
15230 -#define __NR_set_robust_list 304
15231 -#define __NR_get_robust_list 305
15232 -#define __NR_splice 306
15233 -#define __NR_sync_file_range 307
15234 -#define __NR_tee 308
15235 -#define __NR_vmsplice 309
15236 -#define __NR_move_pages 310
15237 -#define __NR_sched_setaffinity 311
15238 -#define __NR_sched_getaffinity 312
15239 -#define __NR_kexec_load 313
15240 -#define __NR_getcpu 314
15241 -#define __NR_epoll_pwait 315
15242 -#define __NR_utimensat 316
15243 -#define __NR_signalfd 317
15244 -#define __NR_timerfd_create 318
15245 -#define __NR_eventfd 319
15246 -#define __NR_fallocate 320
15247 -#define __NR_timerfd_settime 321
15248 -#define __NR_timerfd_gettime 322
15249 -#define __NR_signalfd4 323
15250 -#define __NR_eventfd2 324
15251 -#define __NR_epoll_create1 325
15252 -#define __NR_dup3 326
15253 -#define __NR_pipe2 327
15254 -#define __NR_inotify_init1 328
15255 -
15256 -#ifdef __KERNEL__
15257 -
15258 -#define NR_syscalls 329
15259 -
15260 -#define __ARCH_WANT_IPC_PARSE_VERSION
15261 -#define __ARCH_WANT_OLD_READDIR
15262 -#define __ARCH_WANT_OLD_STAT
15263 -#define __ARCH_WANT_STAT64
15264 -#define __ARCH_WANT_SYS_ALARM
15265 -#define __ARCH_WANT_SYS_GETHOSTNAME
15266 -#define __ARCH_WANT_SYS_PAUSE
15267 -#define __ARCH_WANT_SYS_SGETMASK
15268 -#define __ARCH_WANT_SYS_SIGNAL
15269 -#define __ARCH_WANT_SYS_TIME
15270 -#define __ARCH_WANT_SYS_UTIME
15271 -#define __ARCH_WANT_SYS_WAITPID
15272 -#define __ARCH_WANT_SYS_SOCKETCALL
15273 -#define __ARCH_WANT_SYS_FADVISE64
15274 -#define __ARCH_WANT_SYS_GETPGRP
15275 -#define __ARCH_WANT_SYS_LLSEEK
15276 -#define __ARCH_WANT_SYS_NICE
15277 -#define __ARCH_WANT_SYS_OLD_GETRLIMIT
15278 -#define __ARCH_WANT_SYS_OLDUMOUNT
15279 -#define __ARCH_WANT_SYS_SIGPENDING
15280 -#define __ARCH_WANT_SYS_SIGPROCMASK
15281 -#define __ARCH_WANT_SYS_RT_SIGACTION
15282 -
15283 -/*
15284 - * "Conditional" syscalls
15285 - *
15286 - * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
15287 - * but it doesn't work on all toolchains, so we just do it by hand
15288 - */
15289 -#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
15290 -
15291 -#endif /* __KERNEL__ */
15292 -#endif /* _ASM_M68K_UNISTD_H_ */
15293 +#ifdef __uClinux__
15294 +#include "unistd_no.h"
15295 +#else
15296 +#include "unistd_mm.h"
15297 +#endif
15298 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/unistd_mm.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/unistd_mm.h
15299 --- linux-2.6.29.owrt/arch/m68k/include/asm/unistd_mm.h 1970-01-01 01:00:00.000000000 +0100
15300 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/unistd_mm.h 2009-05-10 23:48:28.000000000 +0200
15301 @@ -0,0 +1,372 @@
15302 +#ifndef _ASM_M68K_UNISTD_H_
15303 +#define _ASM_M68K_UNISTD_H_
15304 +
15305 +/*
15306 + * This file contains the system call numbers.
15307 + */
15308 +
15309 +#define __NR_restart_syscall 0
15310 +#define __NR_exit 1
15311 +#define __NR_fork 2
15312 +#define __NR_read 3
15313 +#define __NR_write 4
15314 +#define __NR_open 5
15315 +#define __NR_close 6
15316 +#define __NR_waitpid 7
15317 +#define __NR_creat 8
15318 +#define __NR_link 9
15319 +#define __NR_unlink 10
15320 +#define __NR_execve 11
15321 +#define __NR_chdir 12
15322 +#define __NR_time 13
15323 +#define __NR_mknod 14
15324 +#define __NR_chmod 15
15325 +#define __NR_chown 16
15326 +#define __NR_break 17
15327 +#define __NR_oldstat 18
15328 +#define __NR_lseek 19
15329 +#define __NR_getpid 20
15330 +#define __NR_mount 21
15331 +#define __NR_umount 22
15332 +#define __NR_setuid 23
15333 +#define __NR_getuid 24
15334 +#define __NR_stime 25
15335 +#define __NR_ptrace 26
15336 +#define __NR_alarm 27
15337 +#define __NR_oldfstat 28
15338 +#define __NR_pause 29
15339 +#define __NR_utime 30
15340 +#define __NR_stty 31
15341 +#define __NR_gtty 32
15342 +#define __NR_access 33
15343 +#define __NR_nice 34
15344 +#define __NR_ftime 35
15345 +#define __NR_sync 36
15346 +#define __NR_kill 37
15347 +#define __NR_rename 38
15348 +#define __NR_mkdir 39
15349 +#define __NR_rmdir 40
15350 +#define __NR_dup 41
15351 +#define __NR_pipe 42
15352 +#define __NR_times 43
15353 +#define __NR_prof 44
15354 +#define __NR_brk 45
15355 +#define __NR_setgid 46
15356 +#define __NR_getgid 47
15357 +#define __NR_signal 48
15358 +#define __NR_geteuid 49
15359 +#define __NR_getegid 50
15360 +#define __NR_acct 51
15361 +#define __NR_umount2 52
15362 +#define __NR_lock 53
15363 +#define __NR_ioctl 54
15364 +#define __NR_fcntl 55
15365 +#define __NR_mpx 56
15366 +#define __NR_setpgid 57
15367 +#define __NR_ulimit 58
15368 +#define __NR_oldolduname 59
15369 +#define __NR_umask 60
15370 +#define __NR_chroot 61
15371 +#define __NR_ustat 62
15372 +#define __NR_dup2 63
15373 +#define __NR_getppid 64
15374 +#define __NR_getpgrp 65
15375 +#define __NR_setsid 66
15376 +#define __NR_sigaction 67
15377 +#define __NR_sgetmask 68
15378 +#define __NR_ssetmask 69
15379 +#define __NR_setreuid 70
15380 +#define __NR_setregid 71
15381 +#define __NR_sigsuspend 72
15382 +#define __NR_sigpending 73
15383 +#define __NR_sethostname 74
15384 +#define __NR_setrlimit 75
15385 +#define __NR_getrlimit 76
15386 +#define __NR_getrusage 77
15387 +#define __NR_gettimeofday 78
15388 +#define __NR_settimeofday 79
15389 +#define __NR_getgroups 80
15390 +#define __NR_setgroups 81
15391 +#define __NR_select 82
15392 +#define __NR_symlink 83
15393 +#define __NR_oldlstat 84
15394 +#define __NR_readlink 85
15395 +#define __NR_uselib 86
15396 +#define __NR_swapon 87
15397 +#define __NR_reboot 88
15398 +#define __NR_readdir 89
15399 +#define __NR_mmap 90
15400 +#define __NR_munmap 91
15401 +#define __NR_truncate 92
15402 +#define __NR_ftruncate 93
15403 +#define __NR_fchmod 94
15404 +#define __NR_fchown 95
15405 +#define __NR_getpriority 96
15406 +#define __NR_setpriority 97
15407 +#define __NR_profil 98
15408 +#define __NR_statfs 99
15409 +#define __NR_fstatfs 100
15410 +#define __NR_ioperm 101
15411 +#define __NR_socketcall 102
15412 +#define __NR_syslog 103
15413 +#define __NR_setitimer 104
15414 +#define __NR_getitimer 105
15415 +#define __NR_stat 106
15416 +#define __NR_lstat 107
15417 +#define __NR_fstat 108
15418 +#define __NR_olduname 109
15419 +#define __NR_iopl /* 110 */ not supported
15420 +#define __NR_vhangup 111
15421 +#define __NR_idle /* 112 */ Obsolete
15422 +#define __NR_vm86 /* 113 */ not supported
15423 +#define __NR_wait4 114
15424 +#define __NR_swapoff 115
15425 +#define __NR_sysinfo 116
15426 +#define __NR_ipc 117
15427 +#define __NR_fsync 118
15428 +#define __NR_sigreturn 119
15429 +#define __NR_clone 120
15430 +#define __NR_setdomainname 121
15431 +#define __NR_uname 122
15432 +#define __NR_cacheflush 123
15433 +#define __NR_adjtimex 124
15434 +#define __NR_mprotect 125
15435 +#define __NR_sigprocmask 126
15436 +#define __NR_create_module 127
15437 +#define __NR_init_module 128
15438 +#define __NR_delete_module 129
15439 +#define __NR_get_kernel_syms 130
15440 +#define __NR_quotactl 131
15441 +#define __NR_getpgid 132
15442 +#define __NR_fchdir 133
15443 +#define __NR_bdflush 134
15444 +#define __NR_sysfs 135
15445 +#define __NR_personality 136
15446 +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
15447 +#define __NR_setfsuid 138
15448 +#define __NR_setfsgid 139
15449 +#define __NR__llseek 140
15450 +#define __NR_getdents 141
15451 +#define __NR__newselect 142
15452 +#define __NR_flock 143
15453 +#define __NR_msync 144
15454 +#define __NR_readv 145
15455 +#define __NR_writev 146
15456 +#define __NR_getsid 147
15457 +#define __NR_fdatasync 148
15458 +#define __NR__sysctl 149
15459 +#define __NR_mlock 150
15460 +#define __NR_munlock 151
15461 +#define __NR_mlockall 152
15462 +#define __NR_munlockall 153
15463 +#define __NR_sched_setparam 154
15464 +#define __NR_sched_getparam 155
15465 +#define __NR_sched_setscheduler 156
15466 +#define __NR_sched_getscheduler 157
15467 +#define __NR_sched_yield 158
15468 +#define __NR_sched_get_priority_max 159
15469 +#define __NR_sched_get_priority_min 160
15470 +#define __NR_sched_rr_get_interval 161
15471 +#define __NR_nanosleep 162
15472 +#define __NR_mremap 163
15473 +#define __NR_setresuid 164
15474 +#define __NR_getresuid 165
15475 +#define __NR_getpagesize 166
15476 +#define __NR_query_module 167
15477 +#define __NR_poll 168
15478 +#define __NR_nfsservctl 169
15479 +#define __NR_setresgid 170
15480 +#define __NR_getresgid 171
15481 +#define __NR_prctl 172
15482 +#define __NR_rt_sigreturn 173
15483 +#define __NR_rt_sigaction 174
15484 +#define __NR_rt_sigprocmask 175
15485 +#define __NR_rt_sigpending 176
15486 +#define __NR_rt_sigtimedwait 177
15487 +#define __NR_rt_sigqueueinfo 178
15488 +#define __NR_rt_sigsuspend 179
15489 +#define __NR_pread64 180
15490 +#define __NR_pwrite64 181
15491 +#define __NR_lchown 182
15492 +#define __NR_getcwd 183
15493 +#define __NR_capget 184
15494 +#define __NR_capset 185
15495 +#define __NR_sigaltstack 186
15496 +#define __NR_sendfile 187
15497 +#define __NR_getpmsg 188 /* some people actually want streams */
15498 +#define __NR_putpmsg 189 /* some people actually want streams */
15499 +#define __NR_vfork 190
15500 +#define __NR_ugetrlimit 191
15501 +#define __NR_mmap2 192
15502 +#define __NR_truncate64 193
15503 +#define __NR_ftruncate64 194
15504 +#define __NR_stat64 195
15505 +#define __NR_lstat64 196
15506 +#define __NR_fstat64 197
15507 +#define __NR_chown32 198
15508 +#define __NR_getuid32 199
15509 +#define __NR_getgid32 200
15510 +#define __NR_geteuid32 201
15511 +#define __NR_getegid32 202
15512 +#define __NR_setreuid32 203
15513 +#define __NR_setregid32 204
15514 +#define __NR_getgroups32 205
15515 +#define __NR_setgroups32 206
15516 +#define __NR_fchown32 207
15517 +#define __NR_setresuid32 208
15518 +#define __NR_getresuid32 209
15519 +#define __NR_setresgid32 210
15520 +#define __NR_getresgid32 211
15521 +#define __NR_lchown32 212
15522 +#define __NR_setuid32 213
15523 +#define __NR_setgid32 214
15524 +#define __NR_setfsuid32 215
15525 +#define __NR_setfsgid32 216
15526 +#define __NR_pivot_root 217
15527 +#define __NR_getdents64 220
15528 +#define __NR_gettid 221
15529 +#define __NR_tkill 222
15530 +#define __NR_setxattr 223
15531 +#define __NR_lsetxattr 224
15532 +#define __NR_fsetxattr 225
15533 +#define __NR_getxattr 226
15534 +#define __NR_lgetxattr 227
15535 +#define __NR_fgetxattr 228
15536 +#define __NR_listxattr 229
15537 +#define __NR_llistxattr 230
15538 +#define __NR_flistxattr 231
15539 +#define __NR_removexattr 232
15540 +#define __NR_lremovexattr 233
15541 +#define __NR_fremovexattr 234
15542 +#define __NR_futex 235
15543 +#define __NR_sendfile64 236
15544 +#define __NR_mincore 237
15545 +#define __NR_madvise 238
15546 +#define __NR_fcntl64 239
15547 +#define __NR_readahead 240
15548 +#define __NR_io_setup 241
15549 +#define __NR_io_destroy 242
15550 +#define __NR_io_getevents 243
15551 +#define __NR_io_submit 244
15552 +#define __NR_io_cancel 245
15553 +#define __NR_fadvise64 246
15554 +#define __NR_exit_group 247
15555 +#define __NR_lookup_dcookie 248
15556 +#define __NR_epoll_create 249
15557 +#define __NR_epoll_ctl 250
15558 +#define __NR_epoll_wait 251
15559 +#define __NR_remap_file_pages 252
15560 +#define __NR_set_tid_address 253
15561 +#define __NR_timer_create 254
15562 +#define __NR_timer_settime 255
15563 +#define __NR_timer_gettime 256
15564 +#define __NR_timer_getoverrun 257
15565 +#define __NR_timer_delete 258
15566 +#define __NR_clock_settime 259
15567 +#define __NR_clock_gettime 260
15568 +#define __NR_clock_getres 261
15569 +#define __NR_clock_nanosleep 262
15570 +#define __NR_statfs64 263
15571 +#define __NR_fstatfs64 264
15572 +#define __NR_tgkill 265
15573 +#define __NR_utimes 266
15574 +#define __NR_fadvise64_64 267
15575 +#define __NR_mbind 268
15576 +#define __NR_get_mempolicy 269
15577 +#define __NR_set_mempolicy 270
15578 +#define __NR_mq_open 271
15579 +#define __NR_mq_unlink 272
15580 +#define __NR_mq_timedsend 273
15581 +#define __NR_mq_timedreceive 274
15582 +#define __NR_mq_notify 275
15583 +#define __NR_mq_getsetattr 276
15584 +#define __NR_waitid 277
15585 +#define __NR_vserver 278
15586 +#define __NR_add_key 279
15587 +#define __NR_request_key 280
15588 +#define __NR_keyctl 281
15589 +#define __NR_ioprio_set 282
15590 +#define __NR_ioprio_get 283
15591 +#define __NR_inotify_init 284
15592 +#define __NR_inotify_add_watch 285
15593 +#define __NR_inotify_rm_watch 286
15594 +#define __NR_migrate_pages 287
15595 +#define __NR_openat 288
15596 +#define __NR_mkdirat 289
15597 +#define __NR_mknodat 290
15598 +#define __NR_fchownat 291
15599 +#define __NR_futimesat 292
15600 +#define __NR_fstatat64 293
15601 +#define __NR_unlinkat 294
15602 +#define __NR_renameat 295
15603 +#define __NR_linkat 296
15604 +#define __NR_symlinkat 297
15605 +#define __NR_readlinkat 298
15606 +#define __NR_fchmodat 299
15607 +#define __NR_faccessat 300
15608 +#define __NR_pselect6 301
15609 +#define __NR_ppoll 302
15610 +#define __NR_unshare 303
15611 +#define __NR_set_robust_list 304
15612 +#define __NR_get_robust_list 305
15613 +#define __NR_splice 306
15614 +#define __NR_sync_file_range 307
15615 +#define __NR_tee 308
15616 +#define __NR_vmsplice 309
15617 +#define __NR_move_pages 310
15618 +#define __NR_sched_setaffinity 311
15619 +#define __NR_sched_getaffinity 312
15620 +#define __NR_kexec_load 313
15621 +#define __NR_getcpu 314
15622 +#define __NR_epoll_pwait 315
15623 +#define __NR_utimensat 316
15624 +#define __NR_signalfd 317
15625 +#define __NR_timerfd_create 318
15626 +#define __NR_eventfd 319
15627 +#define __NR_fallocate 320
15628 +#define __NR_timerfd_settime 321
15629 +#define __NR_timerfd_gettime 322
15630 +#define __NR_signalfd4 323
15631 +#define __NR_eventfd2 324
15632 +#define __NR_epoll_create1 325
15633 +#define __NR_dup3 326
15634 +#define __NR_pipe2 327
15635 +#define __NR_inotify_init1 328
15636 +
15637 +#ifdef __KERNEL__
15638 +
15639 +#define NR_syscalls 329
15640 +
15641 +#define __ARCH_WANT_IPC_PARSE_VERSION
15642 +#define __ARCH_WANT_OLD_READDIR
15643 +#define __ARCH_WANT_OLD_STAT
15644 +#define __ARCH_WANT_STAT64
15645 +#define __ARCH_WANT_SYS_ALARM
15646 +#define __ARCH_WANT_SYS_GETHOSTNAME
15647 +#define __ARCH_WANT_SYS_PAUSE
15648 +#define __ARCH_WANT_SYS_SGETMASK
15649 +#define __ARCH_WANT_SYS_SIGNAL
15650 +#define __ARCH_WANT_SYS_TIME
15651 +#define __ARCH_WANT_SYS_UTIME
15652 +#define __ARCH_WANT_SYS_WAITPID
15653 +#define __ARCH_WANT_SYS_SOCKETCALL
15654 +#define __ARCH_WANT_SYS_FADVISE64
15655 +#define __ARCH_WANT_SYS_GETPGRP
15656 +#define __ARCH_WANT_SYS_LLSEEK
15657 +#define __ARCH_WANT_SYS_NICE
15658 +#define __ARCH_WANT_SYS_OLD_GETRLIMIT
15659 +#define __ARCH_WANT_SYS_OLDUMOUNT
15660 +#define __ARCH_WANT_SYS_SIGPENDING
15661 +#define __ARCH_WANT_SYS_SIGPROCMASK
15662 +#define __ARCH_WANT_SYS_RT_SIGACTION
15663 +
15664 +/*
15665 + * "Conditional" syscalls
15666 + *
15667 + * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
15668 + * but it doesn't work on all toolchains, so we just do it by hand
15669 + */
15670 +#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
15671 +
15672 +#endif /* __KERNEL__ */
15673 +#endif /* _ASM_M68K_UNISTD_H_ */
15674 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68k/include/asm/unistd_no.h linux-2.6.29-rc3.owrt/arch/m68k/include/asm/unistd_no.h
15675 --- linux-2.6.29.owrt/arch/m68k/include/asm/unistd_no.h 1970-01-01 01:00:00.000000000 +0100
15676 +++ linux-2.6.29-rc3.owrt/arch/m68k/include/asm/unistd_no.h 2009-05-10 23:48:28.000000000 +0200
15677 @@ -0,0 +1,372 @@
15678 +#ifndef _ASM_M68K_UNISTD_H_
15679 +#define _ASM_M68K_UNISTD_H_
15680 +
15681 +/*
15682 + * This file contains the system call numbers.
15683 + */
15684 +
15685 +#define __NR_restart_syscall 0
15686 +#define __NR_exit 1
15687 +#define __NR_fork 2
15688 +#define __NR_read 3
15689 +#define __NR_write 4
15690 +#define __NR_open 5
15691 +#define __NR_close 6
15692 +#define __NR_waitpid 7
15693 +#define __NR_creat 8
15694 +#define __NR_link 9
15695 +#define __NR_unlink 10
15696 +#define __NR_execve 11
15697 +#define __NR_chdir 12
15698 +#define __NR_time 13
15699 +#define __NR_mknod 14
15700 +#define __NR_chmod 15
15701 +#define __NR_chown 16
15702 +#define __NR_break 17
15703 +#define __NR_oldstat 18
15704 +#define __NR_lseek 19
15705 +#define __NR_getpid 20
15706 +#define __NR_mount 21
15707 +#define __NR_umount 22
15708 +#define __NR_setuid 23
15709 +#define __NR_getuid 24
15710 +#define __NR_stime 25
15711 +#define __NR_ptrace 26
15712 +#define __NR_alarm 27
15713 +#define __NR_oldfstat 28
15714 +#define __NR_pause 29
15715 +#define __NR_utime 30
15716 +#define __NR_stty 31
15717 +#define __NR_gtty 32
15718 +#define __NR_access 33
15719 +#define __NR_nice 34
15720 +#define __NR_ftime 35
15721 +#define __NR_sync 36
15722 +#define __NR_kill 37
15723 +#define __NR_rename 38
15724 +#define __NR_mkdir 39
15725 +#define __NR_rmdir 40
15726 +#define __NR_dup 41
15727 +#define __NR_pipe 42
15728 +#define __NR_times 43
15729 +#define __NR_prof 44
15730 +#define __NR_brk 45
15731 +#define __NR_setgid 46
15732 +#define __NR_getgid 47
15733 +#define __NR_signal 48
15734 +#define __NR_geteuid 49
15735 +#define __NR_getegid 50
15736 +#define __NR_acct 51
15737 +#define __NR_umount2 52
15738 +#define __NR_lock 53
15739 +#define __NR_ioctl 54
15740 +#define __NR_fcntl 55
15741 +#define __NR_mpx 56
15742 +#define __NR_setpgid 57
15743 +#define __NR_ulimit 58
15744 +#define __NR_oldolduname 59
15745 +#define __NR_umask 60
15746 +#define __NR_chroot 61
15747 +#define __NR_ustat 62
15748 +#define __NR_dup2 63
15749 +#define __NR_getppid 64
15750 +#define __NR_getpgrp 65
15751 +#define __NR_setsid 66
15752 +#define __NR_sigaction 67
15753 +#define __NR_sgetmask 68
15754 +#define __NR_ssetmask 69
15755 +#define __NR_setreuid 70
15756 +#define __NR_setregid 71
15757 +#define __NR_sigsuspend 72
15758 +#define __NR_sigpending 73
15759 +#define __NR_sethostname 74
15760 +#define __NR_setrlimit 75
15761 +#define __NR_getrlimit 76
15762 +#define __NR_getrusage 77
15763 +#define __NR_gettimeofday 78
15764 +#define __NR_settimeofday 79
15765 +#define __NR_getgroups 80
15766 +#define __NR_setgroups 81
15767 +#define __NR_select 82
15768 +#define __NR_symlink 83
15769 +#define __NR_oldlstat 84
15770 +#define __NR_readlink 85
15771 +#define __NR_uselib 86
15772 +#define __NR_swapon 87
15773 +#define __NR_reboot 88
15774 +#define __NR_readdir 89
15775 +#define __NR_mmap 90
15776 +#define __NR_munmap 91
15777 +#define __NR_truncate 92
15778 +#define __NR_ftruncate 93
15779 +#define __NR_fchmod 94
15780 +#define __NR_fchown 95
15781 +#define __NR_getpriority 96
15782 +#define __NR_setpriority 97
15783 +#define __NR_profil 98
15784 +#define __NR_statfs 99
15785 +#define __NR_fstatfs 100
15786 +#define __NR_ioperm 101
15787 +#define __NR_socketcall 102
15788 +#define __NR_syslog 103
15789 +#define __NR_setitimer 104
15790 +#define __NR_getitimer 105
15791 +#define __NR_stat 106
15792 +#define __NR_lstat 107
15793 +#define __NR_fstat 108
15794 +#define __NR_olduname 109
15795 +#define __NR_iopl /* 110 */ not supported
15796 +#define __NR_vhangup 111
15797 +#define __NR_idle /* 112 */ Obsolete
15798 +#define __NR_vm86 /* 113 */ not supported
15799 +#define __NR_wait4 114
15800 +#define __NR_swapoff 115
15801 +#define __NR_sysinfo 116
15802 +#define __NR_ipc 117
15803 +#define __NR_fsync 118
15804 +#define __NR_sigreturn 119
15805 +#define __NR_clone 120
15806 +#define __NR_setdomainname 121
15807 +#define __NR_uname 122
15808 +#define __NR_cacheflush 123
15809 +#define __NR_adjtimex 124
15810 +#define __NR_mprotect 125
15811 +#define __NR_sigprocmask 126
15812 +#define __NR_create_module 127
15813 +#define __NR_init_module 128
15814 +#define __NR_delete_module 129
15815 +#define __NR_get_kernel_syms 130
15816 +#define __NR_quotactl 131
15817 +#define __NR_getpgid 132
15818 +#define __NR_fchdir 133
15819 +#define __NR_bdflush 134
15820 +#define __NR_sysfs 135
15821 +#define __NR_personality 136
15822 +#define __NR_afs_syscall 137 /* Syscall for Andrew File System */
15823 +#define __NR_setfsuid 138
15824 +#define __NR_setfsgid 139
15825 +#define __NR__llseek 140
15826 +#define __NR_getdents 141
15827 +#define __NR__newselect 142
15828 +#define __NR_flock 143
15829 +#define __NR_msync 144
15830 +#define __NR_readv 145
15831 +#define __NR_writev 146
15832 +#define __NR_getsid 147
15833 +#define __NR_fdatasync 148
15834 +#define __NR__sysctl 149
15835 +#define __NR_mlock 150
15836 +#define __NR_munlock 151
15837 +#define __NR_mlockall 152
15838 +#define __NR_munlockall 153
15839 +#define __NR_sched_setparam 154
15840 +#define __NR_sched_getparam 155
15841 +#define __NR_sched_setscheduler 156
15842 +#define __NR_sched_getscheduler 157
15843 +#define __NR_sched_yield 158
15844 +#define __NR_sched_get_priority_max 159
15845 +#define __NR_sched_get_priority_min 160
15846 +#define __NR_sched_rr_get_interval 161
15847 +#define __NR_nanosleep 162
15848 +#define __NR_mremap 163
15849 +#define __NR_setresuid 164
15850 +#define __NR_getresuid 165
15851 +#define __NR_getpagesize 166
15852 +#define __NR_query_module 167
15853 +#define __NR_poll 168
15854 +#define __NR_nfsservctl 169
15855 +#define __NR_setresgid 170
15856 +#define __NR_getresgid 171
15857 +#define __NR_prctl 172
15858 +#define __NR_rt_sigreturn 173
15859 +#define __NR_rt_sigaction 174
15860 +#define __NR_rt_sigprocmask 175
15861 +#define __NR_rt_sigpending 176
15862 +#define __NR_rt_sigtimedwait 177
15863 +#define __NR_rt_sigqueueinfo 178
15864 +#define __NR_rt_sigsuspend 179
15865 +#define __NR_pread64 180
15866 +#define __NR_pwrite64 181
15867 +#define __NR_lchown 182
15868 +#define __NR_getcwd 183
15869 +#define __NR_capget 184
15870 +#define __NR_capset 185
15871 +#define __NR_sigaltstack 186
15872 +#define __NR_sendfile 187
15873 +#define __NR_getpmsg 188 /* some people actually want streams */
15874 +#define __NR_putpmsg 189 /* some people actually want streams */
15875 +#define __NR_vfork 190
15876 +#define __NR_ugetrlimit 191
15877 +#define __NR_mmap2 192
15878 +#define __NR_truncate64 193
15879 +#define __NR_ftruncate64 194
15880 +#define __NR_stat64 195
15881 +#define __NR_lstat64 196
15882 +#define __NR_fstat64 197
15883 +#define __NR_chown32 198
15884 +#define __NR_getuid32 199
15885 +#define __NR_getgid32 200
15886 +#define __NR_geteuid32 201
15887 +#define __NR_getegid32 202
15888 +#define __NR_setreuid32 203
15889 +#define __NR_setregid32 204
15890 +#define __NR_getgroups32 205
15891 +#define __NR_setgroups32 206
15892 +#define __NR_fchown32 207
15893 +#define __NR_setresuid32 208
15894 +#define __NR_getresuid32 209
15895 +#define __NR_setresgid32 210
15896 +#define __NR_getresgid32 211
15897 +#define __NR_lchown32 212
15898 +#define __NR_setuid32 213
15899 +#define __NR_setgid32 214
15900 +#define __NR_setfsuid32 215
15901 +#define __NR_setfsgid32 216
15902 +#define __NR_pivot_root 217
15903 +#define __NR_getdents64 220
15904 +#define __NR_gettid 221
15905 +#define __NR_tkill 222
15906 +#define __NR_setxattr 223
15907 +#define __NR_lsetxattr 224
15908 +#define __NR_fsetxattr 225
15909 +#define __NR_getxattr 226
15910 +#define __NR_lgetxattr 227
15911 +#define __NR_fgetxattr 228
15912 +#define __NR_listxattr 229
15913 +#define __NR_llistxattr 230
15914 +#define __NR_flistxattr 231
15915 +#define __NR_removexattr 232
15916 +#define __NR_lremovexattr 233
15917 +#define __NR_fremovexattr 234
15918 +#define __NR_futex 235
15919 +#define __NR_sendfile64 236
15920 +#define __NR_mincore 237
15921 +#define __NR_madvise 238
15922 +#define __NR_fcntl64 239
15923 +#define __NR_readahead 240
15924 +#define __NR_io_setup 241
15925 +#define __NR_io_destroy 242
15926 +#define __NR_io_getevents 243
15927 +#define __NR_io_submit 244
15928 +#define __NR_io_cancel 245
15929 +#define __NR_fadvise64 246
15930 +#define __NR_exit_group 247
15931 +#define __NR_lookup_dcookie 248
15932 +#define __NR_epoll_create 249
15933 +#define __NR_epoll_ctl 250
15934 +#define __NR_epoll_wait 251
15935 +#define __NR_remap_file_pages 252
15936 +#define __NR_set_tid_address 253
15937 +#define __NR_timer_create 254
15938 +#define __NR_timer_settime 255
15939 +#define __NR_timer_gettime 256
15940 +#define __NR_timer_getoverrun 257
15941 +#define __NR_timer_delete 258
15942 +#define __NR_clock_settime 259
15943 +#define __NR_clock_gettime 260
15944 +#define __NR_clock_getres 261
15945 +#define __NR_clock_nanosleep 262
15946 +#define __NR_statfs64 263
15947 +#define __NR_fstatfs64 264
15948 +#define __NR_tgkill 265
15949 +#define __NR_utimes 266
15950 +#define __NR_fadvise64_64 267
15951 +#define __NR_mbind 268
15952 +#define __NR_get_mempolicy 269
15953 +#define __NR_set_mempolicy 270
15954 +#define __NR_mq_open 271
15955 +#define __NR_mq_unlink 272
15956 +#define __NR_mq_timedsend 273
15957 +#define __NR_mq_timedreceive 274
15958 +#define __NR_mq_notify 275
15959 +#define __NR_mq_getsetattr 276
15960 +#define __NR_waitid 277
15961 +#define __NR_vserver 278
15962 +#define __NR_add_key 279
15963 +#define __NR_request_key 280
15964 +#define __NR_keyctl 281
15965 +#define __NR_ioprio_set 282
15966 +#define __NR_ioprio_get 283
15967 +#define __NR_inotify_init 284
15968 +#define __NR_inotify_add_watch 285
15969 +#define __NR_inotify_rm_watch 286
15970 +#define __NR_migrate_pages 287
15971 +#define __NR_openat 288
15972 +#define __NR_mkdirat 289
15973 +#define __NR_mknodat 290
15974 +#define __NR_fchownat 291
15975 +#define __NR_futimesat 292
15976 +#define __NR_fstatat64 293
15977 +#define __NR_unlinkat 294
15978 +#define __NR_renameat 295
15979 +#define __NR_linkat 296
15980 +#define __NR_symlinkat 297
15981 +#define __NR_readlinkat 298
15982 +#define __NR_fchmodat 299
15983 +#define __NR_faccessat 300
15984 +#define __NR_pselect6 301
15985 +#define __NR_ppoll 302
15986 +#define __NR_unshare 303
15987 +#define __NR_set_robust_list 304
15988 +#define __NR_get_robust_list 305
15989 +#define __NR_splice 306
15990 +#define __NR_sync_file_range 307
15991 +#define __NR_tee 308
15992 +#define __NR_vmsplice 309
15993 +#define __NR_move_pages 310
15994 +#define __NR_sched_setaffinity 311
15995 +#define __NR_sched_getaffinity 312
15996 +#define __NR_kexec_load 313
15997 +#define __NR_getcpu 314
15998 +#define __NR_epoll_pwait 315
15999 +#define __NR_utimensat 316
16000 +#define __NR_signalfd 317
16001 +#define __NR_timerfd_create 318
16002 +#define __NR_eventfd 319
16003 +#define __NR_fallocate 320
16004 +#define __NR_timerfd_settime 321
16005 +#define __NR_timerfd_gettime 322
16006 +#define __NR_signalfd4 323
16007 +#define __NR_eventfd2 324
16008 +#define __NR_epoll_create1 325
16009 +#define __NR_dup3 326
16010 +#define __NR_pipe2 327
16011 +#define __NR_inotify_init1 328
16012 +
16013 +#ifdef __KERNEL__
16014 +
16015 +#define NR_syscalls 329
16016 +
16017 +#define __ARCH_WANT_IPC_PARSE_VERSION
16018 +#define __ARCH_WANT_OLD_READDIR
16019 +#define __ARCH_WANT_OLD_STAT
16020 +#define __ARCH_WANT_STAT64
16021 +#define __ARCH_WANT_SYS_ALARM
16022 +#define __ARCH_WANT_SYS_GETHOSTNAME
16023 +#define __ARCH_WANT_SYS_PAUSE
16024 +#define __ARCH_WANT_SYS_SGETMASK
16025 +#define __ARCH_WANT_SYS_SIGNAL
16026 +#define __ARCH_WANT_SYS_TIME
16027 +#define __ARCH_WANT_SYS_UTIME
16028 +#define __ARCH_WANT_SYS_WAITPID
16029 +#define __ARCH_WANT_SYS_SOCKETCALL
16030 +#define __ARCH_WANT_SYS_FADVISE64
16031 +#define __ARCH_WANT_SYS_GETPGRP
16032 +#define __ARCH_WANT_SYS_LLSEEK
16033 +#define __ARCH_WANT_SYS_NICE
16034 +#define __ARCH_WANT_SYS_OLD_GETRLIMIT
16035 +#define __ARCH_WANT_SYS_OLDUMOUNT
16036 +#define __ARCH_WANT_SYS_SIGPENDING
16037 +#define __ARCH_WANT_SYS_SIGPROCMASK
16038 +#define __ARCH_WANT_SYS_RT_SIGACTION
16039 +
16040 +/*
16041 + * "Conditional" syscalls
16042 + *
16043 + * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
16044 + * but it doesn't work on all toolchains, so we just do it by hand
16045 + */
16046 +#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
16047 +
16048 +#endif /* __KERNEL__ */
16049 +#endif /* _ASM_M68K_UNISTD_H_ */
16050 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68knommu/platform/5206e/config.c linux-2.6.29-rc3.owrt/arch/m68knommu/platform/5206e/config.c
16051 --- linux-2.6.29.owrt/arch/m68knommu/platform/5206e/config.c 2009-05-10 22:04:41.000000000 +0200
16052 +++ linux-2.6.29-rc3.owrt/arch/m68knommu/platform/5206e/config.c 2009-05-10 23:48:28.000000000 +0200
16053 @@ -17,7 +17,6 @@
16054 #include <asm/coldfire.h>
16055 #include <asm/mcfsim.h>
16056 #include <asm/mcfdma.h>
16057 -#include <asm/mcfuart.h>
16058
16059 /***************************************************************************/
16060
16061 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/m68knommu/platform/528x/config.c linux-2.6.29-rc3.owrt/arch/m68knommu/platform/528x/config.c
16062 --- linux-2.6.29.owrt/arch/m68knommu/platform/528x/config.c 2009-05-10 22:04:41.000000000 +0200
16063 +++ linux-2.6.29-rc3.owrt/arch/m68knommu/platform/528x/config.c 2009-05-10 23:48:28.000000000 +0200
16064 @@ -24,6 +24,7 @@
16065 #include <asm/coldfire.h>
16066 #include <asm/mcfsim.h>
16067 #include <asm/mcfuart.h>
16068 +#include <asm/mcfqspi.h>
16069
16070 #ifdef CONFIG_MTD_PARTITIONS
16071 #include <linux/mtd/partitions.h>
16072 @@ -32,6 +33,233 @@
16073 /***************************************************************************/
16074
16075 void coldfire_reset(void);
16076 +static void coldfire_qspi_cs_control(u8 cs, u8 command);
16077 +
16078 +/***************************************************************************/
16079 +
16080 +#if defined(CONFIG_SPI)
16081 +
16082 +#if defined(CONFIG_WILDFIRE)
16083 +#define SPI_NUM_CHIPSELECTS 0x02
16084 +#define SPI_PAR_VAL 0x07 /* Enable DIN, DOUT, CLK */
16085 +#define SPI_CS_MASK 0x18
16086 +
16087 +#define FLASH_BLOCKSIZE (1024*64)
16088 +#define FLASH_NUMBLOCKS 16
16089 +#define FLASH_TYPE "m25p80"
16090 +
16091 +#define M25P80_CS 0
16092 +#define MMC_CS 1
16093 +
16094 +#ifdef CONFIG_MTD_PARTITIONS
16095 +static struct mtd_partition stm25p_partitions[] = {
16096 + /* sflash */
16097 + [0] = {
16098 + .name = "stm25p80",
16099 + .offset = 0x00000000,
16100 + .size = FLASH_BLOCKSIZE * FLASH_NUMBLOCKS,
16101 + .mask_flags = 0
16102 + }
16103 +};
16104 +
16105 +#endif
16106 +
16107 +#elif defined(CONFIG_WILDFIREMOD)
16108 +
16109 +#define SPI_NUM_CHIPSELECTS 0x08
16110 +#define SPI_PAR_VAL 0x07 /* Enable DIN, DOUT, CLK */
16111 +#define SPI_CS_MASK 0x78
16112 +
16113 +#define FLASH_BLOCKSIZE (1024*64)
16114 +#define FLASH_NUMBLOCKS 64
16115 +#define FLASH_TYPE "m25p32"
16116 +/* Reserve 1M for the kernel parition */
16117 +#define FLASH_KERNEL_SIZE (1024 * 1024)
16118 +
16119 +#define M25P80_CS 5
16120 +#define MMC_CS 6
16121 +
16122 +#ifdef CONFIG_MTD_PARTITIONS
16123 +static struct mtd_partition stm25p_partitions[] = {
16124 + /* sflash */
16125 + [0] = {
16126 + .name = "kernel",
16127 + .offset = FLASH_BLOCKSIZE * FLASH_NUMBLOCKS - FLASH_KERNEL_SIZE,
16128 + .size = FLASH_KERNEL_SIZE,
16129 + .mask_flags = 0
16130 + },
16131 + [1] = {
16132 + .name = "image",
16133 + .offset = 0x00000000,
16134 + .size = FLASH_BLOCKSIZE * FLASH_NUMBLOCKS - FLASH_KERNEL_SIZE,
16135 + .mask_flags = 0
16136 + },
16137 + [2] = {
16138 + .name = "all",
16139 + .offset = 0x00000000,
16140 + .size = FLASH_BLOCKSIZE * FLASH_NUMBLOCKS,
16141 + .mask_flags = 0
16142 + }
16143 +};
16144 +#endif
16145 +
16146 +#else
16147 +#define SPI_NUM_CHIPSELECTS 0x04
16148 +#define SPI_PAR_VAL 0x7F /* Enable DIN, DOUT, CLK, CS0 - CS4 */
16149 +#endif
16150 +
16151 +#ifdef MMC_CS
16152 +static struct coldfire_spi_chip flash_chip_info = {
16153 + .mode = SPI_MODE_0,
16154 + .bits_per_word = 16,
16155 + .del_cs_to_clk = 17,
16156 + .del_after_trans = 1,
16157 + .void_write_data = 0
16158 +};
16159 +
16160 +static struct coldfire_spi_chip mmc_chip_info = {
16161 + .mode = SPI_MODE_0,
16162 + .bits_per_word = 16,
16163 + .del_cs_to_clk = 17,
16164 + .del_after_trans = 1,
16165 + .void_write_data = 0xFFFF
16166 +};
16167 +#endif
16168 +
16169 +#ifdef M25P80_CS
16170 +static struct flash_platform_data stm25p80_platform_data = {
16171 + .name = "ST M25P80 SPI Flash chip",
16172 +#ifdef CONFIG_MTD_PARTITIONS
16173 + .parts = stm25p_partitions,
16174 + .nr_parts = sizeof(stm25p_partitions) / sizeof(*stm25p_partitions),
16175 +#endif
16176 + .type = FLASH_TYPE
16177 +};
16178 +#endif
16179 +
16180 +static struct spi_board_info spi_board_info[] __initdata = {
16181 +#ifdef M25P80_CS
16182 + {
16183 + .modalias = "m25p80",
16184 + .max_speed_hz = 16000000,
16185 + .bus_num = 1,
16186 + .chip_select = M25P80_CS,
16187 + .platform_data = &stm25p80_platform_data,
16188 + .controller_data = &flash_chip_info
16189 + },
16190 +#endif
16191 +#ifdef MMC_CS
16192 + {
16193 + .modalias = "mmc_spi",
16194 + .max_speed_hz = 16000000,
16195 + .bus_num = 1,
16196 + .chip_select = MMC_CS,
16197 + .controller_data = &mmc_chip_info
16198 + }
16199 +#endif
16200 +};
16201 +
16202 +static struct coldfire_spi_master coldfire_master_info = {
16203 + .bus_num = 1,
16204 + .num_chipselect = SPI_NUM_CHIPSELECTS,
16205 + .irq_source = MCF5282_QSPI_IRQ_SOURCE,
16206 + .irq_vector = MCF5282_QSPI_IRQ_VECTOR,
16207 + .irq_mask = ((0x01 << MCF5282_QSPI_IRQ_SOURCE) | 0x01),
16208 + .irq_lp = 0x2B, /* Level 5 and Priority 3 */
16209 + .par_val = SPI_PAR_VAL,
16210 + .cs_control = coldfire_qspi_cs_control,
16211 +};
16212 +
16213 +static struct resource coldfire_spi_resources[] = {
16214 + [0] = {
16215 + .name = "qspi-par",
16216 + .start = MCF5282_QSPI_PAR,
16217 + .end = MCF5282_QSPI_PAR,
16218 + .flags = IORESOURCE_MEM
16219 + },
16220 +
16221 + [1] = {
16222 + .name = "qspi-module",
16223 + .start = MCF5282_QSPI_QMR,
16224 + .end = MCF5282_QSPI_QMR + 0x18,
16225 + .flags = IORESOURCE_MEM
16226 + },
16227 +
16228 + [2] = {
16229 + .name = "qspi-int-level",
16230 + .start = MCF5282_INTC0 + MCFINTC_ICR0 + MCF5282_QSPI_IRQ_SOURCE,
16231 + .end = MCF5282_INTC0 + MCFINTC_ICR0 + MCF5282_QSPI_IRQ_SOURCE,
16232 + .flags = IORESOURCE_MEM
16233 + },
16234 +
16235 + [3] = {
16236 + .name = "qspi-int-mask",
16237 + .start = MCF5282_INTC0 + MCFINTC_IMRL,
16238 + .end = MCF5282_INTC0 + MCFINTC_IMRL,
16239 + .flags = IORESOURCE_MEM
16240 + }
16241 +};
16242 +
16243 +static struct platform_device coldfire_spi = {
16244 + .name = "spi_coldfire",
16245 + .id = -1,
16246 + .resource = coldfire_spi_resources,
16247 + .num_resources = ARRAY_SIZE(coldfire_spi_resources),
16248 + .dev = {
16249 + .platform_data = &coldfire_master_info,
16250 + }
16251 +};
16252 +
16253 +static void coldfire_qspi_cs_control(u8 cs, u8 command)
16254 +{
16255 + u8 cs_bit = ((0x01 << cs) << 3) & SPI_CS_MASK;
16256 +
16257 +#if defined(CONFIG_WILDFIRE)
16258 + u8 cs_mask = ~(((0x01 << cs) << 3) & SPI_CS_MASK);
16259 +#endif
16260 +#if defined(CONFIG_WILDFIREMOD)
16261 + u8 cs_mask = (cs << 3) & SPI_CS_MASK;
16262 +#endif
16263 +
16264 + /*
16265 + * Don't do anything if the chip select is not
16266 + * one of the port qs pins.
16267 + */
16268 + if (command & QSPI_CS_INIT) {
16269 +#if defined(CONFIG_WILDFIRE)
16270 + MCF5282_GPIO_DDRQS |= cs_bit;
16271 + MCF5282_GPIO_PQSPAR &= ~cs_bit;
16272 +#endif
16273 +
16274 +#if defined(CONFIG_WILDFIREMOD)
16275 + MCF5282_GPIO_DDRQS |= SPI_CS_MASK;
16276 + MCF5282_GPIO_PQSPAR &= ~SPI_CS_MASK;
16277 +#endif
16278 + }
16279 +
16280 + if (command & QSPI_CS_ASSERT) {
16281 + MCF5282_GPIO_PORTQS &= ~SPI_CS_MASK;
16282 + MCF5282_GPIO_PORTQS |= cs_mask;
16283 + } else if (command & QSPI_CS_DROP) {
16284 + MCF5282_GPIO_PORTQS |= SPI_CS_MASK;
16285 + }
16286 +}
16287 +
16288 +static int __init spi_dev_init(void)
16289 +{
16290 + int retval;
16291 +
16292 + retval = platform_device_register(&coldfire_spi);
16293 + if (retval < 0)
16294 + return retval;
16295 +
16296 + if (ARRAY_SIZE(spi_board_info))
16297 + retval = spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
16298 +
16299 + return retval;
16300 +}
16301 +
16302 +#endif /* CONFIG_SPI */
16303
16304 /***************************************************************************/
16305
16306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/alchemy/common/time.c linux-2.6.29-rc3.owrt/arch/mips/alchemy/common/time.c
16307 --- linux-2.6.29.owrt/arch/mips/alchemy/common/time.c 2009-05-10 22:04:40.000000000 +0200
16308 +++ linux-2.6.29-rc3.owrt/arch/mips/alchemy/common/time.c 2009-05-10 23:48:28.000000000 +0200
16309 @@ -89,7 +89,7 @@
16310 .irq = AU1000_RTC_MATCH2_INT,
16311 .set_next_event = au1x_rtcmatch2_set_next_event,
16312 .set_mode = au1x_rtcmatch2_set_mode,
16313 - .cpumask = CPU_MASK_ALL_PTR,
16314 + .cpumask = CPU_MASK_ALL,
16315 };
16316
16317 static struct irqaction au1x_rtcmatch2_irqaction = {
16318 @@ -118,7 +118,7 @@
16319 * setup counter 1 (RTC) to tick at full speed
16320 */
16321 t = 0xffffff;
16322 - while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T1S) && --t)
16323 + while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T1S) && t--)
16324 asm volatile ("nop");
16325 if (!t)
16326 goto cntr_err;
16327 @@ -127,7 +127,7 @@
16328 au_sync();
16329
16330 t = 0xffffff;
16331 - while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S) && --t)
16332 + while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S) && t--)
16333 asm volatile ("nop");
16334 if (!t)
16335 goto cntr_err;
16336 @@ -135,7 +135,7 @@
16337 au_sync();
16338
16339 t = 0xffffff;
16340 - while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S) && --t)
16341 + while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S) && t--)
16342 asm volatile ("nop");
16343 if (!t)
16344 goto cntr_err;
16345 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/cavium-octeon/setup.c linux-2.6.29-rc3.owrt/arch/mips/cavium-octeon/setup.c
16346 --- linux-2.6.29.owrt/arch/mips/cavium-octeon/setup.c 2009-05-10 22:04:40.000000000 +0200
16347 +++ linux-2.6.29-rc3.owrt/arch/mips/cavium-octeon/setup.c 2009-05-10 23:48:28.000000000 +0200
16348 @@ -15,11 +15,13 @@
16349 #include <linux/serial.h>
16350 #include <linux/types.h>
16351 #include <linux/string.h> /* for memset */
16352 +#include <linux/serial.h>
16353 #include <linux/tty.h>
16354 #include <linux/time.h>
16355 #include <linux/platform_device.h>
16356 #include <linux/serial_core.h>
16357 #include <linux/serial_8250.h>
16358 +#include <linux/string.h>
16359
16360 #include <asm/processor.h>
16361 #include <asm/reboot.h>
16362 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/configs/emma2rh_defconfig linux-2.6.29-rc3.owrt/arch/mips/configs/emma2rh_defconfig
16363 --- linux-2.6.29.owrt/arch/mips/configs/emma2rh_defconfig 1970-01-01 01:00:00.000000000 +0100
16364 +++ linux-2.6.29-rc3.owrt/arch/mips/configs/emma2rh_defconfig 2009-05-10 23:48:28.000000000 +0200
16365 @@ -0,0 +1,1439 @@
16366 +#
16367 +# Automatically generated make config: don't edit
16368 +# Linux kernel version: 2.6.20
16369 +# Tue Feb 20 21:47:29 2007
16370 +#
16371 +CONFIG_MIPS=y
16372 +
16373 +#
16374 +# Machine selection
16375 +#
16376 +CONFIG_ZONE_DMA=y
16377 +# CONFIG_MIPS_MTX1 is not set
16378 +# CONFIG_MIPS_BOSPORUS is not set
16379 +# CONFIG_MIPS_PB1000 is not set
16380 +# CONFIG_MIPS_PB1100 is not set
16381 +# CONFIG_MIPS_PB1500 is not set
16382 +# CONFIG_MIPS_PB1550 is not set
16383 +# CONFIG_MIPS_PB1200 is not set
16384 +# CONFIG_MIPS_DB1000 is not set
16385 +# CONFIG_MIPS_DB1100 is not set
16386 +# CONFIG_MIPS_DB1500 is not set
16387 +# CONFIG_MIPS_DB1550 is not set
16388 +# CONFIG_MIPS_DB1200 is not set
16389 +# CONFIG_MIPS_MIRAGE is not set
16390 +# CONFIG_BASLER_EXCITE is not set
16391 +# CONFIG_MIPS_COBALT is not set
16392 +# CONFIG_MACH_DECSTATION is not set
16393 +# CONFIG_MACH_JAZZ is not set
16394 +# CONFIG_MIPS_MALTA is not set
16395 +# CONFIG_WR_PPMC is not set
16396 +# CONFIG_MIPS_SIM is not set
16397 +# CONFIG_MOMENCO_JAGUAR_ATX is not set
16398 +# CONFIG_MIPS_XXS1500 is not set
16399 +# CONFIG_PNX8550_JBS is not set
16400 +# CONFIG_PNX8550_STB810 is not set
16401 +# CONFIG_MACH_VR41XX is not set
16402 +# CONFIG_PMC_YOSEMITE is not set
16403 +CONFIG_MARKEINS=y
16404 +# CONFIG_SGI_IP22 is not set
16405 +# CONFIG_SGI_IP27 is not set
16406 +# CONFIG_SGI_IP32 is not set
16407 +# CONFIG_SIBYTE_BIGSUR is not set
16408 +# CONFIG_SIBYTE_SWARM is not set
16409 +# CONFIG_SIBYTE_SENTOSA is not set
16410 +# CONFIG_SIBYTE_RHONE is not set
16411 +# CONFIG_SIBYTE_CARMEL is not set
16412 +# CONFIG_SIBYTE_LITTLESUR is not set
16413 +# CONFIG_SIBYTE_CRHINE is not set
16414 +# CONFIG_SIBYTE_CRHONE is not set
16415 +# CONFIG_SNI_RM is not set
16416 +# CONFIG_TOSHIBA_JMR3927 is not set
16417 +# CONFIG_TOSHIBA_RBTX4927 is not set
16418 +# CONFIG_TOSHIBA_RBTX4938 is not set
16419 +CONFIG_RWSEM_GENERIC_SPINLOCK=y
16420 +# CONFIG_ARCH_HAS_ILOG2_U32 is not set
16421 +# CONFIG_ARCH_HAS_ILOG2_U64 is not set
16422 +CONFIG_GENERIC_FIND_NEXT_BIT=y
16423 +CONFIG_GENERIC_HWEIGHT=y
16424 +CONFIG_GENERIC_CALIBRATE_DELAY=y
16425 +CONFIG_GENERIC_TIME=y
16426 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
16427 +# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
16428 +CONFIG_DMA_NONCOHERENT=y
16429 +CONFIG_DMA_NEED_PCI_MAP_STATE=y
16430 +CONFIG_CPU_BIG_ENDIAN=y
16431 +# CONFIG_CPU_LITTLE_ENDIAN is not set
16432 +CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
16433 +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
16434 +CONFIG_IRQ_CPU=y
16435 +CONFIG_SWAP_IO_SPACE=y
16436 +CONFIG_EMMA2RH=y
16437 +CONFIG_MIPS_L1_CACHE_SHIFT=5
16438 +
16439 +#
16440 +# CPU selection
16441 +#
16442 +# CONFIG_CPU_MIPS32_R1 is not set
16443 +# CONFIG_CPU_MIPS32_R2 is not set
16444 +# CONFIG_CPU_MIPS64_R1 is not set
16445 +# CONFIG_CPU_MIPS64_R2 is not set
16446 +# CONFIG_CPU_R3000 is not set
16447 +# CONFIG_CPU_TX39XX is not set
16448 +# CONFIG_CPU_VR41XX is not set
16449 +# CONFIG_CPU_R4300 is not set
16450 +# CONFIG_CPU_R4X00 is not set
16451 +# CONFIG_CPU_TX49XX is not set
16452 +CONFIG_CPU_R5000=y
16453 +# CONFIG_CPU_R5432 is not set
16454 +# CONFIG_CPU_R6000 is not set
16455 +# CONFIG_CPU_NEVADA is not set
16456 +# CONFIG_CPU_R8000 is not set
16457 +# CONFIG_CPU_R10000 is not set
16458 +# CONFIG_CPU_RM7000 is not set
16459 +# CONFIG_CPU_RM9000 is not set
16460 +# CONFIG_CPU_SB1 is not set
16461 +CONFIG_SYS_HAS_CPU_R5000=y
16462 +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
16463 +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
16464 +CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
16465 +
16466 +#
16467 +# Kernel type
16468 +#
16469 +CONFIG_32BIT=y
16470 +# CONFIG_64BIT is not set
16471 +CONFIG_PAGE_SIZE_4KB=y
16472 +# CONFIG_PAGE_SIZE_8KB is not set
16473 +# CONFIG_PAGE_SIZE_16KB is not set
16474 +# CONFIG_PAGE_SIZE_64KB is not set
16475 +CONFIG_MIPS_MT_DISABLED=y
16476 +# CONFIG_MIPS_MT_SMP is not set
16477 +# CONFIG_MIPS_MT_SMTC is not set
16478 +# CONFIG_MIPS_VPE_LOADER is not set
16479 +# CONFIG_64BIT_PHYS_ADDR is not set
16480 +CONFIG_CPU_HAS_LLSC=y
16481 +CONFIG_CPU_HAS_SYNC=y
16482 +CONFIG_GENERIC_HARDIRQS=y
16483 +CONFIG_GENERIC_IRQ_PROBE=y
16484 +CONFIG_ARCH_FLATMEM_ENABLE=y
16485 +CONFIG_SELECT_MEMORY_MODEL=y
16486 +CONFIG_FLATMEM_MANUAL=y
16487 +# CONFIG_DISCONTIGMEM_MANUAL is not set
16488 +# CONFIG_SPARSEMEM_MANUAL is not set
16489 +CONFIG_FLATMEM=y
16490 +CONFIG_FLAT_NODE_MEM_MAP=y
16491 +# CONFIG_SPARSEMEM_STATIC is not set
16492 +CONFIG_SPLIT_PTLOCK_CPUS=4
16493 +# CONFIG_RESOURCES_64BIT is not set
16494 +CONFIG_ZONE_DMA_FLAG=1
16495 +# CONFIG_HZ_48 is not set
16496 +# CONFIG_HZ_100 is not set
16497 +# CONFIG_HZ_128 is not set
16498 +# CONFIG_HZ_250 is not set
16499 +# CONFIG_HZ_256 is not set
16500 +CONFIG_HZ_1000=y
16501 +# CONFIG_HZ_1024 is not set
16502 +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
16503 +CONFIG_HZ=1000
16504 +# CONFIG_PREEMPT_NONE is not set
16505 +# CONFIG_PREEMPT_VOLUNTARY is not set
16506 +CONFIG_PREEMPT=y
16507 +CONFIG_PREEMPT_BKL=y
16508 +# CONFIG_KEXEC is not set
16509 +CONFIG_LOCKDEP_SUPPORT=y
16510 +CONFIG_STACKTRACE_SUPPORT=y
16511 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
16512 +
16513 +#
16514 +# Code maturity level options
16515 +#
16516 +CONFIG_EXPERIMENTAL=y
16517 +CONFIG_BROKEN_ON_SMP=y
16518 +CONFIG_LOCK_KERNEL=y
16519 +CONFIG_INIT_ENV_ARG_LIMIT=32
16520 +
16521 +#
16522 +# General setup
16523 +#
16524 +CONFIG_LOCALVERSION=""
16525 +CONFIG_LOCALVERSION_AUTO=y
16526 +CONFIG_SWAP=y
16527 +CONFIG_SYSVIPC=y
16528 +# CONFIG_IPC_NS is not set
16529 +CONFIG_SYSVIPC_SYSCTL=y
16530 +CONFIG_POSIX_MQUEUE=y
16531 +CONFIG_BSD_PROCESS_ACCT=y
16532 +# CONFIG_BSD_PROCESS_ACCT_V3 is not set
16533 +# CONFIG_TASKSTATS is not set
16534 +# CONFIG_UTS_NS is not set
16535 +# CONFIG_AUDIT is not set
16536 +CONFIG_IKCONFIG=y
16537 +CONFIG_IKCONFIG_PROC=y
16538 +CONFIG_SYSFS_DEPRECATED=y
16539 +# CONFIG_RELAY is not set
16540 +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
16541 +CONFIG_SYSCTL=y
16542 +CONFIG_EMBEDDED=y
16543 +CONFIG_SYSCTL_SYSCALL=y
16544 +CONFIG_KALLSYMS=y
16545 +# CONFIG_KALLSYMS_EXTRA_PASS is not set
16546 +CONFIG_HOTPLUG=y
16547 +CONFIG_PRINTK=y
16548 +CONFIG_BUG=y
16549 +CONFIG_ELF_CORE=y
16550 +CONFIG_BASE_FULL=y
16551 +CONFIG_FUTEX=y
16552 +CONFIG_EPOLL=y
16553 +CONFIG_SHMEM=y
16554 +CONFIG_SLAB=y
16555 +CONFIG_VM_EVENT_COUNTERS=y
16556 +CONFIG_RT_MUTEXES=y
16557 +# CONFIG_TINY_SHMEM is not set
16558 +CONFIG_BASE_SMALL=0
16559 +# CONFIG_SLOB is not set
16560 +
16561 +#
16562 +# Loadable module support
16563 +#
16564 +CONFIG_MODULES=y
16565 +CONFIG_MODULE_UNLOAD=y
16566 +CONFIG_MODULE_FORCE_UNLOAD=y
16567 +CONFIG_MODVERSIONS=y
16568 +# CONFIG_MODULE_SRCVERSION_ALL is not set
16569 +CONFIG_KMOD=y
16570 +
16571 +#
16572 +# Block layer
16573 +#
16574 +CONFIG_BLOCK=y
16575 +CONFIG_LBD=y
16576 +# CONFIG_BLK_DEV_IO_TRACE is not set
16577 +# CONFIG_LSF is not set
16578 +
16579 +#
16580 +# IO Schedulers
16581 +#
16582 +CONFIG_IOSCHED_NOOP=y
16583 +CONFIG_IOSCHED_AS=y
16584 +CONFIG_IOSCHED_DEADLINE=y
16585 +CONFIG_IOSCHED_CFQ=y
16586 +CONFIG_DEFAULT_AS=y
16587 +# CONFIG_DEFAULT_DEADLINE is not set
16588 +# CONFIG_DEFAULT_CFQ is not set
16589 +# CONFIG_DEFAULT_NOOP is not set
16590 +CONFIG_DEFAULT_IOSCHED="anticipatory"
16591 +
16592 +#
16593 +# Bus options (PCI, PCMCIA, EISA, ISA, TC)
16594 +#
16595 +CONFIG_HW_HAS_PCI=y
16596 +CONFIG_PCI=y
16597 +CONFIG_MMU=y
16598 +
16599 +#
16600 +# PCCARD (PCMCIA/CardBus) support
16601 +#
16602 +# CONFIG_PCCARD is not set
16603 +
16604 +#
16605 +# PCI Hotplug Support
16606 +#
16607 +# CONFIG_HOTPLUG_PCI is not set
16608 +
16609 +#
16610 +# Executable file formats
16611 +#
16612 +CONFIG_BINFMT_ELF=y
16613 +# CONFIG_BINFMT_MISC is not set
16614 +CONFIG_TRAD_SIGNALS=y
16615 +
16616 +#
16617 +# Power management options
16618 +#
16619 +CONFIG_PM=y
16620 +# CONFIG_PM_LEGACY is not set
16621 +# CONFIG_PM_DEBUG is not set
16622 +# CONFIG_PM_SYSFS_DEPRECATED is not set
16623 +
16624 +#
16625 +# Networking
16626 +#
16627 +CONFIG_NET=y
16628 +
16629 +#
16630 +# Networking options
16631 +#
16632 +# CONFIG_NETDEBUG is not set
16633 +CONFIG_PACKET=y
16634 +CONFIG_PACKET_MMAP=y
16635 +CONFIG_UNIX=y
16636 +CONFIG_XFRM=y
16637 +# CONFIG_XFRM_USER is not set
16638 +# CONFIG_XFRM_SUB_POLICY is not set
16639 +CONFIG_XFRM_MIGRATE=y
16640 +CONFIG_NET_KEY=y
16641 +CONFIG_NET_KEY_MIGRATE=y
16642 +CONFIG_INET=y
16643 +CONFIG_IP_MULTICAST=y
16644 +CONFIG_IP_ADVANCED_ROUTER=y
16645 +CONFIG_ASK_IP_FIB_HASH=y
16646 +# CONFIG_IP_FIB_TRIE is not set
16647 +CONFIG_IP_FIB_HASH=y
16648 +CONFIG_IP_MULTIPLE_TABLES=y
16649 +CONFIG_IP_ROUTE_MULTIPATH=y
16650 +# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
16651 +CONFIG_IP_ROUTE_VERBOSE=y
16652 +CONFIG_IP_PNP=y
16653 +# CONFIG_IP_PNP_DHCP is not set
16654 +CONFIG_IP_PNP_BOOTP=y
16655 +# CONFIG_IP_PNP_RARP is not set
16656 +# CONFIG_NET_IPIP is not set
16657 +# CONFIG_NET_IPGRE is not set
16658 +# CONFIG_IP_MROUTE is not set
16659 +# CONFIG_ARPD is not set
16660 +CONFIG_SYN_COOKIES=y
16661 +# CONFIG_INET_AH is not set
16662 +# CONFIG_INET_ESP is not set
16663 +# CONFIG_INET_IPCOMP is not set
16664 +# CONFIG_INET_XFRM_TUNNEL is not set
16665 +CONFIG_INET_TUNNEL=m
16666 +CONFIG_INET_XFRM_MODE_TRANSPORT=m
16667 +CONFIG_INET_XFRM_MODE_TUNNEL=m
16668 +CONFIG_INET_XFRM_MODE_BEET=m
16669 +CONFIG_INET_DIAG=y
16670 +CONFIG_INET_TCP_DIAG=y
16671 +# CONFIG_TCP_CONG_ADVANCED is not set
16672 +CONFIG_TCP_CONG_CUBIC=y
16673 +CONFIG_DEFAULT_TCP_CONG="cubic"
16674 +CONFIG_TCP_MD5SIG=y
16675 +
16676 +#
16677 +# IP: Virtual Server Configuration
16678 +#
16679 +# CONFIG_IP_VS is not set
16680 +CONFIG_IPV6=m
16681 +# CONFIG_IPV6_PRIVACY is not set
16682 +# CONFIG_IPV6_ROUTER_PREF is not set
16683 +# CONFIG_INET6_AH is not set
16684 +# CONFIG_INET6_ESP is not set
16685 +# CONFIG_INET6_IPCOMP is not set
16686 +CONFIG_IPV6_MIP6=y
16687 +# CONFIG_INET6_XFRM_TUNNEL is not set
16688 +# CONFIG_INET6_TUNNEL is not set
16689 +CONFIG_INET6_XFRM_MODE_TRANSPORT=m
16690 +CONFIG_INET6_XFRM_MODE_TUNNEL=m
16691 +CONFIG_INET6_XFRM_MODE_BEET=m
16692 +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
16693 +CONFIG_IPV6_SIT=m
16694 +# CONFIG_IPV6_TUNNEL is not set
16695 +CONFIG_IPV6_MULTIPLE_TABLES=y
16696 +CONFIG_IPV6_SUBTREES=y
16697 +CONFIG_NETWORK_SECMARK=y
16698 +CONFIG_NETFILTER=y
16699 +# CONFIG_NETFILTER_DEBUG is not set
16700 +
16701 +#
16702 +# Core Netfilter Configuration
16703 +#
16704 +# CONFIG_NETFILTER_NETLINK is not set
16705 +CONFIG_NF_CONNTRACK_ENABLED=m
16706 +CONFIG_NF_CONNTRACK_SUPPORT=y
16707 +# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
16708 +CONFIG_NF_CONNTRACK=m
16709 +CONFIG_NF_CT_ACCT=y
16710 +CONFIG_NF_CONNTRACK_MARK=y
16711 +CONFIG_NF_CONNTRACK_SECMARK=y
16712 +CONFIG_NF_CONNTRACK_EVENTS=y
16713 +CONFIG_NF_CT_PROTO_GRE=m
16714 +CONFIG_NF_CT_PROTO_SCTP=m
16715 +CONFIG_NF_CONNTRACK_AMANDA=m
16716 +CONFIG_NF_CONNTRACK_FTP=m
16717 +CONFIG_NF_CONNTRACK_H323=m
16718 +CONFIG_NF_CONNTRACK_IRC=m
16719 +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
16720 +CONFIG_NF_CONNTRACK_PPTP=m
16721 +CONFIG_NF_CONNTRACK_SANE=m
16722 +CONFIG_NF_CONNTRACK_SIP=m
16723 +CONFIG_NF_CONNTRACK_TFTP=m
16724 +CONFIG_NETFILTER_XTABLES=m
16725 +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
16726 +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
16727 +CONFIG_NETFILTER_XT_TARGET_DSCP=m
16728 +CONFIG_NETFILTER_XT_TARGET_MARK=m
16729 +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
16730 +CONFIG_NETFILTER_XT_TARGET_NFLOG=m
16731 +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
16732 +CONFIG_NETFILTER_XT_TARGET_SECMARK=m
16733 +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
16734 +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
16735 +CONFIG_NETFILTER_XT_MATCH_COMMENT=m
16736 +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
16737 +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
16738 +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
16739 +CONFIG_NETFILTER_XT_MATCH_DCCP=m
16740 +CONFIG_NETFILTER_XT_MATCH_DSCP=m
16741 +CONFIG_NETFILTER_XT_MATCH_ESP=m
16742 +CONFIG_NETFILTER_XT_MATCH_HELPER=m
16743 +CONFIG_NETFILTER_XT_MATCH_LENGTH=m
16744 +CONFIG_NETFILTER_XT_MATCH_LIMIT=m
16745 +CONFIG_NETFILTER_XT_MATCH_MAC=m
16746 +CONFIG_NETFILTER_XT_MATCH_MARK=m
16747 +CONFIG_NETFILTER_XT_MATCH_POLICY=m
16748 +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
16749 +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
16750 +CONFIG_NETFILTER_XT_MATCH_QUOTA=m
16751 +CONFIG_NETFILTER_XT_MATCH_REALM=m
16752 +CONFIG_NETFILTER_XT_MATCH_SCTP=m
16753 +CONFIG_NETFILTER_XT_MATCH_STATE=m
16754 +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
16755 +CONFIG_NETFILTER_XT_MATCH_STRING=m
16756 +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
16757 +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
16758 +
16759 +#
16760 +# IP: Netfilter Configuration
16761 +#
16762 +CONFIG_NF_CONNTRACK_IPV4=m
16763 +CONFIG_NF_CONNTRACK_PROC_COMPAT=y
16764 +# CONFIG_IP_NF_QUEUE is not set
16765 +CONFIG_IP_NF_IPTABLES=m
16766 +CONFIG_IP_NF_MATCH_IPRANGE=m
16767 +CONFIG_IP_NF_MATCH_TOS=m
16768 +CONFIG_IP_NF_MATCH_RECENT=m
16769 +CONFIG_IP_NF_MATCH_ECN=m
16770 +CONFIG_IP_NF_MATCH_AH=m
16771 +CONFIG_IP_NF_MATCH_TTL=m
16772 +CONFIG_IP_NF_MATCH_OWNER=m
16773 +CONFIG_IP_NF_MATCH_ADDRTYPE=m
16774 +CONFIG_IP_NF_FILTER=m
16775 +CONFIG_IP_NF_TARGET_REJECT=m
16776 +CONFIG_IP_NF_TARGET_LOG=m
16777 +CONFIG_IP_NF_TARGET_ULOG=m
16778 +CONFIG_NF_NAT=m
16779 +CONFIG_NF_NAT_NEEDED=y
16780 +CONFIG_IP_NF_TARGET_MASQUERADE=m
16781 +CONFIG_IP_NF_TARGET_REDIRECT=m
16782 +CONFIG_IP_NF_TARGET_NETMAP=m
16783 +CONFIG_IP_NF_TARGET_SAME=m
16784 +CONFIG_NF_NAT_SNMP_BASIC=m
16785 +CONFIG_NF_NAT_PROTO_GRE=m
16786 +CONFIG_NF_NAT_FTP=m
16787 +CONFIG_NF_NAT_IRC=m
16788 +CONFIG_NF_NAT_TFTP=m
16789 +CONFIG_NF_NAT_AMANDA=m
16790 +CONFIG_NF_NAT_PPTP=m
16791 +CONFIG_NF_NAT_H323=m
16792 +CONFIG_NF_NAT_SIP=m
16793 +CONFIG_IP_NF_MANGLE=m
16794 +CONFIG_IP_NF_TARGET_TOS=m
16795 +CONFIG_IP_NF_TARGET_ECN=m
16796 +CONFIG_IP_NF_TARGET_TTL=m
16797 +CONFIG_IP_NF_TARGET_CLUSTERIP=m
16798 +CONFIG_IP_NF_RAW=m
16799 +CONFIG_IP_NF_ARPTABLES=m
16800 +CONFIG_IP_NF_ARPFILTER=m
16801 +CONFIG_IP_NF_ARP_MANGLE=m
16802 +
16803 +#
16804 +# IPv6: Netfilter Configuration (EXPERIMENTAL)
16805 +#
16806 +CONFIG_NF_CONNTRACK_IPV6=m
16807 +# CONFIG_IP6_NF_QUEUE is not set
16808 +CONFIG_IP6_NF_IPTABLES=m
16809 +CONFIG_IP6_NF_MATCH_RT=m
16810 +CONFIG_IP6_NF_MATCH_OPTS=m
16811 +CONFIG_IP6_NF_MATCH_FRAG=m
16812 +CONFIG_IP6_NF_MATCH_HL=m
16813 +CONFIG_IP6_NF_MATCH_OWNER=m
16814 +CONFIG_IP6_NF_MATCH_IPV6HEADER=m
16815 +CONFIG_IP6_NF_MATCH_AH=m
16816 +CONFIG_IP6_NF_MATCH_MH=m
16817 +CONFIG_IP6_NF_MATCH_EUI64=m
16818 +CONFIG_IP6_NF_FILTER=m
16819 +CONFIG_IP6_NF_TARGET_LOG=m
16820 +CONFIG_IP6_NF_TARGET_REJECT=m
16821 +CONFIG_IP6_NF_MANGLE=m
16822 +CONFIG_IP6_NF_TARGET_HL=m
16823 +CONFIG_IP6_NF_RAW=m
16824 +
16825 +#
16826 +# DCCP Configuration (EXPERIMENTAL)
16827 +#
16828 +# CONFIG_IP_DCCP is not set
16829 +
16830 +#
16831 +# SCTP Configuration (EXPERIMENTAL)
16832 +#
16833 +CONFIG_IP_SCTP=m
16834 +# CONFIG_SCTP_DBG_MSG is not set
16835 +# CONFIG_SCTP_DBG_OBJCNT is not set
16836 +# CONFIG_SCTP_HMAC_NONE is not set
16837 +# CONFIG_SCTP_HMAC_SHA1 is not set
16838 +CONFIG_SCTP_HMAC_MD5=y
16839 +
16840 +#
16841 +# TIPC Configuration (EXPERIMENTAL)
16842 +#
16843 +# CONFIG_TIPC is not set
16844 +# CONFIG_ATM is not set
16845 +# CONFIG_BRIDGE is not set
16846 +# CONFIG_VLAN_8021Q is not set
16847 +# CONFIG_DECNET is not set
16848 +# CONFIG_LLC2 is not set
16849 +# CONFIG_IPX is not set
16850 +# CONFIG_ATALK is not set
16851 +# CONFIG_X25 is not set
16852 +# CONFIG_LAPB is not set
16853 +# CONFIG_ECONET is not set
16854 +# CONFIG_WAN_ROUTER is not set
16855 +
16856 +#
16857 +# QoS and/or fair queueing
16858 +#
16859 +# CONFIG_NET_SCHED is not set
16860 +CONFIG_NET_CLS_ROUTE=y
16861 +
16862 +#
16863 +# Network testing
16864 +#
16865 +# CONFIG_NET_PKTGEN is not set
16866 +# CONFIG_HAMRADIO is not set
16867 +# CONFIG_IRDA is not set
16868 +# CONFIG_BT is not set
16869 +# CONFIG_IEEE80211 is not set
16870 +CONFIG_FIB_RULES=y
16871 +
16872 +#
16873 +# Device Drivers
16874 +#
16875 +
16876 +#
16877 +# Generic Driver Options
16878 +#
16879 +CONFIG_STANDALONE=y
16880 +CONFIG_PREVENT_FIRMWARE_BUILD=y
16881 +CONFIG_FW_LOADER=m
16882 +# CONFIG_SYS_HYPERVISOR is not set
16883 +
16884 +#
16885 +# Connector - unified userspace <-> kernelspace linker
16886 +#
16887 +# CONFIG_CONNECTOR is not set
16888 +
16889 +#
16890 +# Memory Technology Devices (MTD)
16891 +#
16892 +CONFIG_MTD=y
16893 +# CONFIG_MTD_DEBUG is not set
16894 +# CONFIG_MTD_CONCAT is not set
16895 +CONFIG_MTD_PARTITIONS=y
16896 +# CONFIG_MTD_REDBOOT_PARTS is not set
16897 +CONFIG_MTD_CMDLINE_PARTS=y
16898 +
16899 +#
16900 +# User Modules And Translation Layers
16901 +#
16902 +CONFIG_MTD_CHAR=y
16903 +CONFIG_MTD_BLKDEVS=y
16904 +CONFIG_MTD_BLOCK=y
16905 +# CONFIG_FTL is not set
16906 +# CONFIG_NFTL is not set
16907 +# CONFIG_INFTL is not set
16908 +# CONFIG_RFD_FTL is not set
16909 +# CONFIG_SSFDC is not set
16910 +
16911 +#
16912 +# RAM/ROM/Flash chip drivers
16913 +#
16914 +CONFIG_MTD_CFI=y
16915 +# CONFIG_MTD_JEDECPROBE is not set
16916 +CONFIG_MTD_GEN_PROBE=y
16917 +# CONFIG_MTD_CFI_ADV_OPTIONS is not set
16918 +CONFIG_MTD_MAP_BANK_WIDTH_1=y
16919 +CONFIG_MTD_MAP_BANK_WIDTH_2=y
16920 +CONFIG_MTD_MAP_BANK_WIDTH_4=y
16921 +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
16922 +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
16923 +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
16924 +CONFIG_MTD_CFI_I1=y
16925 +CONFIG_MTD_CFI_I2=y
16926 +# CONFIG_MTD_CFI_I4 is not set
16927 +# CONFIG_MTD_CFI_I8 is not set
16928 +# CONFIG_MTD_CFI_INTELEXT is not set
16929 +CONFIG_MTD_CFI_AMDSTD=y
16930 +# CONFIG_MTD_CFI_STAA is not set
16931 +CONFIG_MTD_CFI_UTIL=y
16932 +# CONFIG_MTD_RAM is not set
16933 +# CONFIG_MTD_ROM is not set
16934 +# CONFIG_MTD_ABSENT is not set
16935 +# CONFIG_MTD_OBSOLETE_CHIPS is not set
16936 +
16937 +#
16938 +# Mapping drivers for chip access
16939 +#
16940 +# CONFIG_MTD_COMPLEX_MAPPINGS is not set
16941 +CONFIG_MTD_PHYSMAP=y
16942 +CONFIG_MTD_PHYSMAP_START=0x1e000000
16943 +CONFIG_MTD_PHYSMAP_LEN=0x02000000
16944 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2
16945 +# CONFIG_MTD_PLATRAM is not set
16946 +
16947 +#
16948 +# Self-contained MTD device drivers
16949 +#
16950 +# CONFIG_MTD_PMC551 is not set
16951 +# CONFIG_MTD_SLRAM is not set
16952 +# CONFIG_MTD_PHRAM is not set
16953 +# CONFIG_MTD_MTDRAM is not set
16954 +# CONFIG_MTD_BLOCK2MTD is not set
16955 +
16956 +#
16957 +# Disk-On-Chip Device Drivers
16958 +#
16959 +# CONFIG_MTD_DOC2000 is not set
16960 +# CONFIG_MTD_DOC2001 is not set
16961 +# CONFIG_MTD_DOC2001PLUS is not set
16962 +
16963 +#
16964 +# NAND Flash Device Drivers
16965 +#
16966 +# CONFIG_MTD_NAND is not set
16967 +
16968 +#
16969 +# OneNAND Flash Device Drivers
16970 +#
16971 +# CONFIG_MTD_ONENAND is not set
16972 +
16973 +#
16974 +# Parallel port support
16975 +#
16976 +# CONFIG_PARPORT is not set
16977 +
16978 +#
16979 +# Plug and Play support
16980 +#
16981 +# CONFIG_PNPACPI is not set
16982 +
16983 +#
16984 +# Block devices
16985 +#
16986 +# CONFIG_BLK_CPQ_DA is not set
16987 +# CONFIG_BLK_CPQ_CISS_DA is not set
16988 +# CONFIG_BLK_DEV_DAC960 is not set
16989 +# CONFIG_BLK_DEV_UMEM is not set
16990 +# CONFIG_BLK_DEV_COW_COMMON is not set
16991 +CONFIG_BLK_DEV_LOOP=m
16992 +CONFIG_BLK_DEV_CRYPTOLOOP=m
16993 +# CONFIG_BLK_DEV_NBD is not set
16994 +# CONFIG_BLK_DEV_SX8 is not set
16995 +# CONFIG_BLK_DEV_RAM is not set
16996 +# CONFIG_BLK_DEV_INITRD is not set
16997 +# CONFIG_CDROM_PKTCDVD is not set
16998 +# CONFIG_ATA_OVER_ETH is not set
16999 +
17000 +#
17001 +# Misc devices
17002 +#
17003 +CONFIG_SGI_IOC4=m
17004 +# CONFIG_TIFM_CORE is not set
17005 +
17006 +#
17007 +# ATA/ATAPI/MFM/RLL support
17008 +#
17009 +# CONFIG_IDE is not set
17010 +
17011 +#
17012 +# SCSI device support
17013 +#
17014 +# CONFIG_RAID_ATTRS is not set
17015 +CONFIG_SCSI=m
17016 +CONFIG_SCSI_TGT=m
17017 +# CONFIG_SCSI_NETLINK is not set
17018 +# CONFIG_SCSI_PROC_FS is not set
17019 +
17020 +#
17021 +# SCSI support type (disk, tape, CD-ROM)
17022 +#
17023 +CONFIG_BLK_DEV_SD=m
17024 +# CONFIG_CHR_DEV_ST is not set
17025 +# CONFIG_CHR_DEV_OSST is not set
17026 +# CONFIG_BLK_DEV_SR is not set
17027 +CONFIG_CHR_DEV_SG=m
17028 +# CONFIG_CHR_DEV_SCH is not set
17029 +
17030 +#
17031 +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
17032 +#
17033 +# CONFIG_SCSI_MULTI_LUN is not set
17034 +# CONFIG_SCSI_CONSTANTS is not set
17035 +# CONFIG_SCSI_LOGGING is not set
17036 +CONFIG_SCSI_SCAN_ASYNC=y
17037 +
17038 +#
17039 +# SCSI Transports
17040 +#
17041 +# CONFIG_SCSI_SPI_ATTRS is not set
17042 +# CONFIG_SCSI_FC_ATTRS is not set
17043 +# CONFIG_SCSI_ISCSI_ATTRS is not set
17044 +CONFIG_SCSI_SAS_ATTRS=m
17045 +CONFIG_SCSI_SAS_LIBSAS=m
17046 +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
17047 +
17048 +#
17049 +# SCSI low-level drivers
17050 +#
17051 +# CONFIG_ISCSI_TCP is not set
17052 +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
17053 +# CONFIG_SCSI_3W_9XXX is not set
17054 +# CONFIG_SCSI_ACARD is not set
17055 +# CONFIG_SCSI_AACRAID is not set
17056 +# CONFIG_SCSI_AIC7XXX is not set
17057 +# CONFIG_SCSI_AIC7XXX_OLD is not set
17058 +# CONFIG_SCSI_AIC79XX is not set
17059 +CONFIG_SCSI_AIC94XX=m
17060 +# CONFIG_AIC94XX_DEBUG is not set
17061 +# CONFIG_SCSI_DPT_I2O is not set
17062 +# CONFIG_SCSI_ARCMSR is not set
17063 +# CONFIG_MEGARAID_NEWGEN is not set
17064 +# CONFIG_MEGARAID_LEGACY is not set
17065 +# CONFIG_MEGARAID_SAS is not set
17066 +# CONFIG_SCSI_HPTIOP is not set
17067 +# CONFIG_SCSI_DMX3191D is not set
17068 +# CONFIG_SCSI_FUTURE_DOMAIN is not set
17069 +# CONFIG_SCSI_IPS is not set
17070 +# CONFIG_SCSI_INITIO is not set
17071 +# CONFIG_SCSI_INIA100 is not set
17072 +# CONFIG_SCSI_STEX is not set
17073 +# CONFIG_SCSI_SYM53C8XX_2 is not set
17074 +# CONFIG_SCSI_QLOGIC_1280 is not set
17075 +# CONFIG_SCSI_QLA_FC is not set
17076 +# CONFIG_SCSI_QLA_ISCSI is not set
17077 +# CONFIG_SCSI_LPFC is not set
17078 +# CONFIG_SCSI_DC395x is not set
17079 +# CONFIG_SCSI_DC390T is not set
17080 +# CONFIG_SCSI_NSP32 is not set
17081 +# CONFIG_SCSI_DEBUG is not set
17082 +# CONFIG_SCSI_SRP is not set
17083 +
17084 +#
17085 +# Serial ATA (prod) and Parallel ATA (experimental) drivers
17086 +#
17087 +# CONFIG_ATA is not set
17088 +
17089 +#
17090 +# Multi-device support (RAID and LVM)
17091 +#
17092 +# CONFIG_MD is not set
17093 +
17094 +#
17095 +# Fusion MPT device support
17096 +#
17097 +# CONFIG_FUSION is not set
17098 +# CONFIG_FUSION_SPI is not set
17099 +# CONFIG_FUSION_FC is not set
17100 +# CONFIG_FUSION_SAS is not set
17101 +
17102 +#
17103 +# IEEE 1394 (FireWire) support
17104 +#
17105 +# CONFIG_IEEE1394 is not set
17106 +
17107 +#
17108 +# I2O device support
17109 +#
17110 +# CONFIG_I2O is not set
17111 +
17112 +#
17113 +# Network device support
17114 +#
17115 +CONFIG_NETDEVICES=y
17116 +# CONFIG_DUMMY is not set
17117 +# CONFIG_BONDING is not set
17118 +# CONFIG_EQUALIZER is not set
17119 +CONFIG_TUN=m
17120 +
17121 +#
17122 +# ARCnet devices
17123 +#
17124 +# CONFIG_ARCNET is not set
17125 +
17126 +#
17127 +# PHY device support
17128 +#
17129 +# CONFIG_PHYLIB is not set
17130 +
17131 +#
17132 +# Ethernet (10 or 100Mbit)
17133 +#
17134 +CONFIG_NET_ETHERNET=y
17135 +CONFIG_MII=y
17136 +# CONFIG_HAPPYMEAL is not set
17137 +# CONFIG_SUNGEM is not set
17138 +# CONFIG_CASSINI is not set
17139 +# CONFIG_NET_VENDOR_3COM is not set
17140 +# CONFIG_DM9000 is not set
17141 +
17142 +#
17143 +# Tulip family network device support
17144 +#
17145 +# CONFIG_NET_TULIP is not set
17146 +# CONFIG_HP100 is not set
17147 +CONFIG_NET_PCI=y
17148 +# CONFIG_PCNET32 is not set
17149 +# CONFIG_AMD8111_ETH is not set
17150 +# CONFIG_ADAPTEC_STARFIRE is not set
17151 +# CONFIG_B44 is not set
17152 +# CONFIG_FORCEDETH is not set
17153 +# CONFIG_DGRS is not set
17154 +# CONFIG_EEPRO100 is not set
17155 +# CONFIG_E100 is not set
17156 +# CONFIG_FEALNX is not set
17157 +CONFIG_NATSEMI=y
17158 +# CONFIG_NE2K_PCI is not set
17159 +# CONFIG_8139CP is not set
17160 +# CONFIG_8139TOO is not set
17161 +# CONFIG_SIS900 is not set
17162 +# CONFIG_EPIC100 is not set
17163 +# CONFIG_SUNDANCE is not set
17164 +# CONFIG_TLAN is not set
17165 +# CONFIG_VIA_RHINE is not set
17166 +# CONFIG_SC92031 is not set
17167 +
17168 +#
17169 +# Ethernet (1000 Mbit)
17170 +#
17171 +# CONFIG_ACENIC is not set
17172 +# CONFIG_DL2K is not set
17173 +# CONFIG_E1000 is not set
17174 +# CONFIG_NS83820 is not set
17175 +# CONFIG_HAMACHI is not set
17176 +# CONFIG_YELLOWFIN is not set
17177 +# CONFIG_R8169 is not set
17178 +# CONFIG_SIS190 is not set
17179 +# CONFIG_SKGE is not set
17180 +# CONFIG_SKY2 is not set
17181 +# CONFIG_SK98LIN is not set
17182 +# CONFIG_VIA_VELOCITY is not set
17183 +# CONFIG_TIGON3 is not set
17184 +# CONFIG_BNX2 is not set
17185 +CONFIG_QLA3XXX=m
17186 +# CONFIG_ATL1 is not set
17187 +
17188 +#
17189 +# Ethernet (10000 Mbit)
17190 +#
17191 +# CONFIG_CHELSIO_T1 is not set
17192 +CONFIG_CHELSIO_T3=m
17193 +# CONFIG_IXGB is not set
17194 +# CONFIG_S2IO is not set
17195 +# CONFIG_MYRI10GE is not set
17196 +CONFIG_NETXEN_NIC=m
17197 +
17198 +#
17199 +# Token Ring devices
17200 +#
17201 +# CONFIG_TR is not set
17202 +
17203 +#
17204 +# Wireless LAN (non-hamradio)
17205 +#
17206 +# CONFIG_NET_RADIO is not set
17207 +
17208 +#
17209 +# Wan interfaces
17210 +#
17211 +# CONFIG_WAN is not set
17212 +# CONFIG_FDDI is not set
17213 +# CONFIG_HIPPI is not set
17214 +CONFIG_PPP=m
17215 +# CONFIG_PPP_MULTILINK is not set
17216 +# CONFIG_PPP_FILTER is not set
17217 +CONFIG_PPP_ASYNC=m
17218 +CONFIG_PPP_SYNC_TTY=m
17219 +CONFIG_PPP_DEFLATE=m
17220 +# CONFIG_PPP_BSDCOMP is not set
17221 +# CONFIG_PPP_MPPE is not set
17222 +# CONFIG_PPPOE is not set
17223 +# CONFIG_SLIP is not set
17224 +CONFIG_SLHC=m
17225 +# CONFIG_NET_FC is not set
17226 +# CONFIG_SHAPER is not set
17227 +# CONFIG_NETCONSOLE is not set
17228 +# CONFIG_NETPOLL is not set
17229 +# CONFIG_NET_POLL_CONTROLLER is not set
17230 +
17231 +#
17232 +# ISDN subsystem
17233 +#
17234 +# CONFIG_ISDN is not set
17235 +
17236 +#
17237 +# Telephony Support
17238 +#
17239 +# CONFIG_PHONE is not set
17240 +
17241 +#
17242 +# Input device support
17243 +#
17244 +CONFIG_INPUT=y
17245 +# CONFIG_INPUT_FF_MEMLESS is not set
17246 +
17247 +#
17248 +# Userland interfaces
17249 +#
17250 +# CONFIG_INPUT_MOUSEDEV is not set
17251 +# CONFIG_INPUT_JOYDEV is not set
17252 +# CONFIG_INPUT_TSDEV is not set
17253 +CONFIG_INPUT_EVDEV=m
17254 +# CONFIG_INPUT_EVBUG is not set
17255 +
17256 +#
17257 +# Input Device Drivers
17258 +#
17259 +# CONFIG_INPUT_KEYBOARD is not set
17260 +# CONFIG_INPUT_MOUSE is not set
17261 +# CONFIG_INPUT_JOYSTICK is not set
17262 +# CONFIG_INPUT_TOUCHSCREEN is not set
17263 +# CONFIG_INPUT_MISC is not set
17264 +
17265 +#
17266 +# Hardware I/O ports
17267 +#
17268 +# CONFIG_SERIO is not set
17269 +# CONFIG_GAMEPORT is not set
17270 +
17271 +#
17272 +# Character devices
17273 +#
17274 +# CONFIG_VT is not set
17275 +# CONFIG_SERIAL_NONSTANDARD is not set
17276 +
17277 +#
17278 +# Serial drivers
17279 +#
17280 +CONFIG_SERIAL_8250=y
17281 +CONFIG_SERIAL_8250_CONSOLE=y
17282 +CONFIG_SERIAL_8250_PCI=y
17283 +CONFIG_SERIAL_8250_NR_UARTS=4
17284 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4
17285 +# CONFIG_SERIAL_8250_EXTENDED is not set
17286 +
17287 +#
17288 +# Non-8250 serial port support
17289 +#
17290 +CONFIG_SERIAL_CORE=y
17291 +CONFIG_SERIAL_CORE_CONSOLE=y
17292 +# CONFIG_SERIAL_JSM is not set
17293 +CONFIG_UNIX98_PTYS=y
17294 +CONFIG_LEGACY_PTYS=y
17295 +CONFIG_LEGACY_PTY_COUNT=256
17296 +
17297 +#
17298 +# IPMI
17299 +#
17300 +# CONFIG_IPMI_HANDLER is not set
17301 +
17302 +#
17303 +# Watchdog Cards
17304 +#
17305 +# CONFIG_WATCHDOG is not set
17306 +# CONFIG_HW_RANDOM is not set
17307 +CONFIG_RTC=m
17308 +# CONFIG_GEN_RTC is not set
17309 +# CONFIG_DTLK is not set
17310 +# CONFIG_R3964 is not set
17311 +# CONFIG_APPLICOM is not set
17312 +# CONFIG_DRM is not set
17313 +# CONFIG_RAW_DRIVER is not set
17314 +
17315 +#
17316 +# TPM devices
17317 +#
17318 +# CONFIG_TCG_TPM is not set
17319 +
17320 +#
17321 +# I2C support
17322 +#
17323 +CONFIG_I2C=y
17324 +CONFIG_I2C_CHARDEV=y
17325 +
17326 +#
17327 +# I2C Algorithms
17328 +#
17329 +# CONFIG_I2C_ALGOBIT is not set
17330 +# CONFIG_I2C_ALGOPCF is not set
17331 +# CONFIG_I2C_ALGOPCA is not set
17332 +
17333 +#
17334 +# I2C Hardware Bus support
17335 +#
17336 +# CONFIG_I2C_ALI1535 is not set
17337 +# CONFIG_I2C_ALI1563 is not set
17338 +# CONFIG_I2C_ALI15X3 is not set
17339 +# CONFIG_I2C_AMD756 is not set
17340 +# CONFIG_I2C_AMD8111 is not set
17341 +# CONFIG_I2C_I801 is not set
17342 +# CONFIG_I2C_I810 is not set
17343 +# CONFIG_I2C_PIIX4 is not set
17344 +# CONFIG_I2C_NFORCE2 is not set
17345 +# CONFIG_I2C_OCORES is not set
17346 +# CONFIG_I2C_PARPORT_LIGHT is not set
17347 +# CONFIG_I2C_PASEMI is not set
17348 +# CONFIG_I2C_PROSAVAGE is not set
17349 +# CONFIG_I2C_SAVAGE4 is not set
17350 +# CONFIG_I2C_SIS5595 is not set
17351 +# CONFIG_I2C_SIS630 is not set
17352 +# CONFIG_I2C_SIS96X is not set
17353 +# CONFIG_I2C_STUB is not set
17354 +# CONFIG_I2C_VIA is not set
17355 +# CONFIG_I2C_VIAPRO is not set
17356 +# CONFIG_I2C_VOODOO3 is not set
17357 +# CONFIG_I2C_PCA_ISA is not set
17358 +
17359 +#
17360 +# Miscellaneous I2C Chip support
17361 +#
17362 +# CONFIG_SENSORS_DS1337 is not set
17363 +# CONFIG_SENSORS_DS1374 is not set
17364 +# CONFIG_EEPROM_LEGACY is not set
17365 +# CONFIG_SENSORS_PCF8574 is not set
17366 +# CONFIG_SENSORS_PCA9539 is not set
17367 +# CONFIG_SENSORS_PCF8591 is not set
17368 +# CONFIG_SENSORS_MAX6875 is not set
17369 +CONFIG_I2C_DEBUG_CORE=y
17370 +# CONFIG_I2C_DEBUG_ALGO is not set
17371 +CONFIG_I2C_DEBUG_BUS=y
17372 +# CONFIG_I2C_DEBUG_CHIP is not set
17373 +
17374 +#
17375 +# SPI support
17376 +#
17377 +# CONFIG_SPI is not set
17378 +# CONFIG_SPI_MASTER is not set
17379 +
17380 +#
17381 +# Dallas's 1-wire bus
17382 +#
17383 +# CONFIG_W1 is not set
17384 +
17385 +#
17386 +# Hardware Monitoring support
17387 +#
17388 +CONFIG_HWMON=y
17389 +# CONFIG_HWMON_VID is not set
17390 +# CONFIG_SENSORS_ABITUGURU is not set
17391 +# CONFIG_SENSORS_ADM1021 is not set
17392 +# CONFIG_SENSORS_ADM1025 is not set
17393 +# CONFIG_SENSORS_ADM1026 is not set
17394 +# CONFIG_SENSORS_ADM1029 is not set
17395 +# CONFIG_SENSORS_ADM1031 is not set
17396 +# CONFIG_SENSORS_ADM9240 is not set
17397 +# CONFIG_SENSORS_ASB100 is not set
17398 +# CONFIG_SENSORS_ATXP1 is not set
17399 +# CONFIG_SENSORS_DS1621 is not set
17400 +# CONFIG_SENSORS_F71805F is not set
17401 +# CONFIG_SENSORS_FSCHER is not set
17402 +# CONFIG_SENSORS_FSCPOS is not set
17403 +# CONFIG_SENSORS_GL518SM is not set
17404 +# CONFIG_SENSORS_GL520SM is not set
17405 +# CONFIG_SENSORS_IT87 is not set
17406 +# CONFIG_SENSORS_LM63 is not set
17407 +# CONFIG_SENSORS_LM75 is not set
17408 +# CONFIG_SENSORS_LM77 is not set
17409 +# CONFIG_SENSORS_LM78 is not set
17410 +# CONFIG_SENSORS_LM80 is not set
17411 +# CONFIG_SENSORS_LM83 is not set
17412 +# CONFIG_SENSORS_LM85 is not set
17413 +# CONFIG_SENSORS_LM87 is not set
17414 +# CONFIG_SENSORS_LM90 is not set
17415 +# CONFIG_SENSORS_LM92 is not set
17416 +# CONFIG_SENSORS_MAX1619 is not set
17417 +# CONFIG_SENSORS_PC87360 is not set
17418 +# CONFIG_SENSORS_PC87427 is not set
17419 +# CONFIG_SENSORS_SIS5595 is not set
17420 +# CONFIG_SENSORS_SMSC47M1 is not set
17421 +# CONFIG_SENSORS_SMSC47M192 is not set
17422 +# CONFIG_SENSORS_SMSC47B397 is not set
17423 +# CONFIG_SENSORS_VIA686A is not set
17424 +# CONFIG_SENSORS_VT1211 is not set
17425 +# CONFIG_SENSORS_VT8231 is not set
17426 +# CONFIG_SENSORS_W83781D is not set
17427 +# CONFIG_SENSORS_W83791D is not set
17428 +# CONFIG_SENSORS_W83792D is not set
17429 +# CONFIG_SENSORS_W83793 is not set
17430 +# CONFIG_SENSORS_W83L785TS is not set
17431 +# CONFIG_SENSORS_W83627HF is not set
17432 +# CONFIG_SENSORS_W83627EHF is not set
17433 +# CONFIG_HWMON_DEBUG_CHIP is not set
17434 +
17435 +#
17436 +# Multimedia devices
17437 +#
17438 +# CONFIG_VIDEO_DEV is not set
17439 +
17440 +#
17441 +# Digital Video Broadcasting Devices
17442 +#
17443 +# CONFIG_DVB is not set
17444 +
17445 +#
17446 +# Graphics support
17447 +#
17448 +# CONFIG_FIRMWARE_EDID is not set
17449 +# CONFIG_FB is not set
17450 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
17451 +
17452 +#
17453 +# Sound
17454 +#
17455 +# CONFIG_SOUND is not set
17456 +
17457 +#
17458 +# HID Devices
17459 +#
17460 +# CONFIG_HID is not set
17461 +
17462 +#
17463 +# USB support
17464 +#
17465 +CONFIG_USB_ARCH_HAS_HCD=y
17466 +CONFIG_USB_ARCH_HAS_OHCI=y
17467 +CONFIG_USB_ARCH_HAS_EHCI=y
17468 +# CONFIG_USB is not set
17469 +
17470 +#
17471 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
17472 +#
17473 +
17474 +#
17475 +# USB Gadget Support
17476 +#
17477 +# CONFIG_USB_GADGET is not set
17478 +
17479 +#
17480 +# MMC/SD Card support
17481 +#
17482 +# CONFIG_MMC is not set
17483 +
17484 +#
17485 +# LED devices
17486 +#
17487 +# CONFIG_NEW_LEDS is not set
17488 +
17489 +#
17490 +# LED drivers
17491 +#
17492 +
17493 +#
17494 +# LED Triggers
17495 +#
17496 +
17497 +#
17498 +# InfiniBand support
17499 +#
17500 +# CONFIG_INFINIBAND is not set
17501 +
17502 +#
17503 +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
17504 +#
17505 +
17506 +#
17507 +# Real Time Clock
17508 +#
17509 +# CONFIG_RTC_CLASS is not set
17510 +
17511 +#
17512 +# DMA Engine support
17513 +#
17514 +# CONFIG_DMA_ENGINE is not set
17515 +
17516 +#
17517 +# DMA Clients
17518 +#
17519 +
17520 +#
17521 +# DMA Devices
17522 +#
17523 +
17524 +#
17525 +# Auxiliary Display support
17526 +#
17527 +
17528 +#
17529 +# Virtualization
17530 +#
17531 +
17532 +#
17533 +# File systems
17534 +#
17535 +CONFIG_EXT2_FS=y
17536 +CONFIG_EXT2_FS_XATTR=y
17537 +CONFIG_EXT2_FS_POSIX_ACL=y
17538 +CONFIG_EXT2_FS_SECURITY=y
17539 +# CONFIG_EXT2_FS_XIP is not set
17540 +CONFIG_EXT3_FS=m
17541 +CONFIG_EXT3_FS_XATTR=y
17542 +# CONFIG_EXT3_FS_POSIX_ACL is not set
17543 +# CONFIG_EXT3_FS_SECURITY is not set
17544 +# CONFIG_EXT4DEV_FS is not set
17545 +CONFIG_JBD=m
17546 +# CONFIG_JBD_DEBUG is not set
17547 +CONFIG_FS_MBCACHE=y
17548 +# CONFIG_REISERFS_FS is not set
17549 +# CONFIG_JFS_FS is not set
17550 +CONFIG_FS_POSIX_ACL=y
17551 +CONFIG_XFS_FS=m
17552 +# CONFIG_XFS_QUOTA is not set
17553 +# CONFIG_XFS_SECURITY is not set
17554 +# CONFIG_XFS_POSIX_ACL is not set
17555 +# CONFIG_XFS_RT is not set
17556 +# CONFIG_GFS2_FS is not set
17557 +# CONFIG_OCFS2_FS is not set
17558 +# CONFIG_MINIX_FS is not set
17559 +# CONFIG_ROMFS_FS is not set
17560 +CONFIG_INOTIFY=y
17561 +CONFIG_INOTIFY_USER=y
17562 +# CONFIG_QUOTA is not set
17563 +# CONFIG_DNOTIFY is not set
17564 +# CONFIG_AUTOFS_FS is not set
17565 +CONFIG_AUTOFS4_FS=m
17566 +# CONFIG_FUSE_FS is not set
17567 +CONFIG_GENERIC_ACL=y
17568 +
17569 +#
17570 +# CD-ROM/DVD Filesystems
17571 +#
17572 +# CONFIG_ISO9660_FS is not set
17573 +# CONFIG_UDF_FS is not set
17574 +
17575 +#
17576 +# DOS/FAT/NT Filesystems
17577 +#
17578 +CONFIG_FAT_FS=y
17579 +CONFIG_MSDOS_FS=y
17580 +CONFIG_VFAT_FS=y
17581 +CONFIG_FAT_DEFAULT_CODEPAGE=437
17582 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
17583 +CONFIG_NTFS_FS=m
17584 +# CONFIG_NTFS_DEBUG is not set
17585 +# CONFIG_NTFS_RW is not set
17586 +
17587 +#
17588 +# Pseudo filesystems
17589 +#
17590 +CONFIG_PROC_FS=y
17591 +CONFIG_PROC_KCORE=y
17592 +CONFIG_PROC_SYSCTL=y
17593 +CONFIG_SYSFS=y
17594 +CONFIG_TMPFS=y
17595 +CONFIG_TMPFS_POSIX_ACL=y
17596 +# CONFIG_HUGETLB_PAGE is not set
17597 +CONFIG_RAMFS=y
17598 +CONFIG_CONFIGFS_FS=m
17599 +
17600 +#
17601 +# Miscellaneous filesystems
17602 +#
17603 +# CONFIG_ADFS_FS is not set
17604 +# CONFIG_AFFS_FS is not set
17605 +# CONFIG_HFS_FS is not set
17606 +# CONFIG_HFSPLUS_FS is not set
17607 +# CONFIG_BEFS_FS is not set
17608 +# CONFIG_BFS_FS is not set
17609 +# CONFIG_EFS_FS is not set
17610 +CONFIG_JFFS2_FS=y
17611 +CONFIG_JFFS2_FS_DEBUG=0
17612 +CONFIG_JFFS2_FS_WRITEBUFFER=y
17613 +# CONFIG_JFFS2_SUMMARY is not set
17614 +# CONFIG_JFFS2_FS_XATTR is not set
17615 +CONFIG_JFFS2_COMPRESSION_OPTIONS=y
17616 +CONFIG_JFFS2_ZLIB=y
17617 +CONFIG_JFFS2_RTIME=y
17618 +# CONFIG_JFFS2_RUBIN is not set
17619 +# CONFIG_JFFS2_CMODE_NONE is not set
17620 +CONFIG_JFFS2_CMODE_PRIORITY=y
17621 +# CONFIG_JFFS2_CMODE_SIZE is not set
17622 +CONFIG_CRAMFS=y
17623 +# CONFIG_VXFS_FS is not set
17624 +# CONFIG_HPFS_FS is not set
17625 +# CONFIG_QNX4FS_FS is not set
17626 +# CONFIG_SYSV_FS is not set
17627 +# CONFIG_UFS_FS is not set
17628 +
17629 +#
17630 +# Network File Systems
17631 +#
17632 +CONFIG_NFS_FS=y
17633 +CONFIG_NFS_V3=y
17634 +# CONFIG_NFS_V3_ACL is not set
17635 +CONFIG_NFS_V4=y
17636 +CONFIG_NFS_DIRECTIO=y
17637 +CONFIG_NFSD=m
17638 +CONFIG_NFSD_V3=y
17639 +# CONFIG_NFSD_V3_ACL is not set
17640 +# CONFIG_NFSD_V4 is not set
17641 +CONFIG_NFSD_TCP=y
17642 +CONFIG_ROOT_NFS=y
17643 +CONFIG_LOCKD=y
17644 +CONFIG_LOCKD_V4=y
17645 +CONFIG_EXPORTFS=m
17646 +CONFIG_NFS_COMMON=y
17647 +CONFIG_SUNRPC=y
17648 +CONFIG_SUNRPC_GSS=y
17649 +CONFIG_RPCSEC_GSS_KRB5=y
17650 +# CONFIG_RPCSEC_GSS_SPKM3 is not set
17651 +CONFIG_SMB_FS=m
17652 +# CONFIG_SMB_NLS_DEFAULT is not set
17653 +# CONFIG_CIFS is not set
17654 +# CONFIG_NCP_FS is not set
17655 +# CONFIG_CODA_FS is not set
17656 +# CONFIG_AFS_FS is not set
17657 +# CONFIG_9P_FS is not set
17658 +
17659 +#
17660 +# Partition Types
17661 +#
17662 +# CONFIG_PARTITION_ADVANCED is not set
17663 +CONFIG_MSDOS_PARTITION=y
17664 +
17665 +#
17666 +# Native Language Support
17667 +#
17668 +CONFIG_NLS=y
17669 +CONFIG_NLS_DEFAULT=""
17670 +CONFIG_NLS_CODEPAGE_437=m
17671 +# CONFIG_NLS_CODEPAGE_737 is not set
17672 +# CONFIG_NLS_CODEPAGE_775 is not set
17673 +# CONFIG_NLS_CODEPAGE_850 is not set
17674 +# CONFIG_NLS_CODEPAGE_852 is not set
17675 +# CONFIG_NLS_CODEPAGE_855 is not set
17676 +# CONFIG_NLS_CODEPAGE_857 is not set
17677 +# CONFIG_NLS_CODEPAGE_860 is not set
17678 +# CONFIG_NLS_CODEPAGE_861 is not set
17679 +# CONFIG_NLS_CODEPAGE_862 is not set
17680 +# CONFIG_NLS_CODEPAGE_863 is not set
17681 +# CONFIG_NLS_CODEPAGE_864 is not set
17682 +# CONFIG_NLS_CODEPAGE_865 is not set
17683 +# CONFIG_NLS_CODEPAGE_866 is not set
17684 +# CONFIG_NLS_CODEPAGE_869 is not set
17685 +# CONFIG_NLS_CODEPAGE_936 is not set
17686 +# CONFIG_NLS_CODEPAGE_950 is not set
17687 +# CONFIG_NLS_CODEPAGE_932 is not set
17688 +# CONFIG_NLS_CODEPAGE_949 is not set
17689 +# CONFIG_NLS_CODEPAGE_874 is not set
17690 +# CONFIG_NLS_ISO8859_8 is not set
17691 +# CONFIG_NLS_CODEPAGE_1250 is not set
17692 +# CONFIG_NLS_CODEPAGE_1251 is not set
17693 +CONFIG_NLS_ASCII=m
17694 +CONFIG_NLS_ISO8859_1=m
17695 +# CONFIG_NLS_ISO8859_2 is not set
17696 +# CONFIG_NLS_ISO8859_3 is not set
17697 +# CONFIG_NLS_ISO8859_4 is not set
17698 +# CONFIG_NLS_ISO8859_5 is not set
17699 +# CONFIG_NLS_ISO8859_6 is not set
17700 +# CONFIG_NLS_ISO8859_7 is not set
17701 +# CONFIG_NLS_ISO8859_9 is not set
17702 +# CONFIG_NLS_ISO8859_13 is not set
17703 +# CONFIG_NLS_ISO8859_14 is not set
17704 +# CONFIG_NLS_ISO8859_15 is not set
17705 +# CONFIG_NLS_KOI8_R is not set
17706 +# CONFIG_NLS_KOI8_U is not set
17707 +CONFIG_NLS_UTF8=m
17708 +
17709 +#
17710 +# Distributed Lock Manager
17711 +#
17712 +CONFIG_DLM=m
17713 +CONFIG_DLM_TCP=y
17714 +# CONFIG_DLM_SCTP is not set
17715 +# CONFIG_DLM_DEBUG is not set
17716 +
17717 +#
17718 +# Profiling support
17719 +#
17720 +# CONFIG_PROFILING is not set
17721 +
17722 +#
17723 +# Kernel hacking
17724 +#
17725 +CONFIG_TRACE_IRQFLAGS_SUPPORT=y
17726 +# CONFIG_PRINTK_TIME is not set
17727 +CONFIG_ENABLE_MUST_CHECK=y
17728 +# CONFIG_MAGIC_SYSRQ is not set
17729 +# CONFIG_UNUSED_SYMBOLS is not set
17730 +# CONFIG_DEBUG_FS is not set
17731 +# CONFIG_HEADERS_CHECK is not set
17732 +# CONFIG_DEBUG_KERNEL is not set
17733 +CONFIG_LOG_BUF_SHIFT=14
17734 +CONFIG_CROSSCOMPILE=y
17735 +CONFIG_CMDLINE="console=ttyS0,115200 mem=192m ip=bootp root=/dev/nfs rw"
17736 +
17737 +#
17738 +# Security options
17739 +#
17740 +# CONFIG_KEYS is not set
17741 +# CONFIG_SECURITY is not set
17742 +
17743 +#
17744 +# Cryptographic options
17745 +#
17746 +CONFIG_CRYPTO=y
17747 +CONFIG_CRYPTO_ALGAPI=y
17748 +CONFIG_CRYPTO_BLKCIPHER=y
17749 +CONFIG_CRYPTO_HASH=y
17750 +CONFIG_CRYPTO_MANAGER=y
17751 +CONFIG_CRYPTO_HMAC=y
17752 +CONFIG_CRYPTO_XCBC=m
17753 +# CONFIG_CRYPTO_NULL is not set
17754 +# CONFIG_CRYPTO_MD4 is not set
17755 +CONFIG_CRYPTO_MD5=y
17756 +# CONFIG_CRYPTO_SHA1 is not set
17757 +# CONFIG_CRYPTO_SHA256 is not set
17758 +# CONFIG_CRYPTO_SHA512 is not set
17759 +# CONFIG_CRYPTO_WP512 is not set
17760 +# CONFIG_CRYPTO_TGR192 is not set
17761 +CONFIG_CRYPTO_GF128MUL=m
17762 +CONFIG_CRYPTO_ECB=m
17763 +CONFIG_CRYPTO_CBC=y
17764 +CONFIG_CRYPTO_PCBC=m
17765 +CONFIG_CRYPTO_LRW=m
17766 +CONFIG_CRYPTO_DES=y
17767 +CONFIG_CRYPTO_FCRYPT=m
17768 +# CONFIG_CRYPTO_BLOWFISH is not set
17769 +# CONFIG_CRYPTO_TWOFISH is not set
17770 +# CONFIG_CRYPTO_SERPENT is not set
17771 +# CONFIG_CRYPTO_AES is not set
17772 +# CONFIG_CRYPTO_CAST5 is not set
17773 +# CONFIG_CRYPTO_CAST6 is not set
17774 +# CONFIG_CRYPTO_TEA is not set
17775 +# CONFIG_CRYPTO_ARC4 is not set
17776 +# CONFIG_CRYPTO_KHAZAD is not set
17777 +# CONFIG_CRYPTO_ANUBIS is not set
17778 +# CONFIG_CRYPTO_DEFLATE is not set
17779 +# CONFIG_CRYPTO_MICHAEL_MIC is not set
17780 +# CONFIG_CRYPTO_CRC32C is not set
17781 +CONFIG_CRYPTO_CAMELLIA=m
17782 +# CONFIG_CRYPTO_TEST is not set
17783 +
17784 +#
17785 +# Hardware crypto devices
17786 +#
17787 +
17788 +#
17789 +# Library routines
17790 +#
17791 +CONFIG_BITREVERSE=y
17792 +CONFIG_CRC_CCITT=m
17793 +# CONFIG_CRC16 is not set
17794 +CONFIG_CRC32=y
17795 +# CONFIG_LIBCRC32C is not set
17796 +CONFIG_ZLIB_INFLATE=y
17797 +CONFIG_ZLIB_DEFLATE=y
17798 +CONFIG_TEXTSEARCH=y
17799 +CONFIG_TEXTSEARCH_KMP=m
17800 +CONFIG_TEXTSEARCH_BM=m
17801 +CONFIG_TEXTSEARCH_FSM=m
17802 +CONFIG_PLIST=y
17803 +CONFIG_HAS_IOMEM=y
17804 +CONFIG_HAS_IOPORT=y
17805 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/configs/ip27_defconfig linux-2.6.29-rc3.owrt/arch/mips/configs/ip27_defconfig
17806 --- linux-2.6.29.owrt/arch/mips/configs/ip27_defconfig 2009-05-10 22:04:40.000000000 +0200
17807 +++ linux-2.6.29-rc3.owrt/arch/mips/configs/ip27_defconfig 2009-05-10 23:48:28.000000000 +0200
17808 @@ -53,7 +53,7 @@
17809 CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
17810 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
17811 CONFIG_ARC=y
17812 -CONFIG_DMA_COHERENT=y
17813 +CONFIG_DMA_IP27=y
17814 CONFIG_EARLY_PRINTK=y
17815 CONFIG_SYS_HAS_EARLY_PRINTK=y
17816 # CONFIG_NO_IOPORT is not set
17817 @@ -512,7 +512,7 @@
17818 CONFIG_MD_RAID0=y
17819 CONFIG_MD_RAID1=y
17820 CONFIG_MD_RAID10=m
17821 -CONFIG_MD_RAID456=y
17822 +CONFIG_MD_RAID456=m
17823 CONFIG_MD_RAID5_RESHAPE=y
17824 CONFIG_MD_MULTIPATH=m
17825 CONFIG_MD_FAULTY=m
17826 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/configs/jmr3927_defconfig linux-2.6.29-rc3.owrt/arch/mips/configs/jmr3927_defconfig
17827 --- linux-2.6.29.owrt/arch/mips/configs/jmr3927_defconfig 2009-05-10 22:04:40.000000000 +0200
17828 +++ linux-2.6.29-rc3.owrt/arch/mips/configs/jmr3927_defconfig 2009-05-10 23:48:28.000000000 +0200
17829 @@ -1,7 +1,7 @@
17830 #
17831 # Automatically generated make config: don't edit
17832 -# Linux kernel version: 2.6.29-rc7
17833 -# Wed Mar 4 23:07:16 2009
17834 +# Linux kernel version: 2.6.26-rc9
17835 +# Fri Jul 11 23:01:36 2008
17836 #
17837 CONFIG_MIPS=y
17838
17839 @@ -18,10 +18,8 @@
17840 # CONFIG_LEMOTE_FULONG is not set
17841 # CONFIG_MIPS_MALTA is not set
17842 # CONFIG_MIPS_SIM is not set
17843 -# CONFIG_MACH_EMMA is not set
17844 +# CONFIG_MARKEINS is not set
17845 # CONFIG_MACH_VR41XX is not set
17846 -# CONFIG_NXP_STB220 is not set
17847 -# CONFIG_NXP_STB225 is not set
17848 # CONFIG_PNX8550_JBS is not set
17849 # CONFIG_PNX8550_STB810 is not set
17850 # CONFIG_PMC_MSP is not set
17851 @@ -41,11 +39,7 @@
17852 # CONFIG_SNI_RM is not set
17853 CONFIG_MACH_TX39XX=y
17854 # CONFIG_MACH_TX49XX is not set
17855 -# CONFIG_MIKROTIK_RB532 is not set
17856 # CONFIG_WR_PPMC is not set
17857 -# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
17858 -# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
17859 -CONFIG_MACH_TXX9=y
17860 CONFIG_TOSHIBA_JMR3927=y
17861 CONFIG_SOC_TX3927=y
17862 # CONFIG_TOSHIBA_FPCIB0 is not set
17863 @@ -60,14 +54,12 @@
17864 CONFIG_GENERIC_CLOCKEVENTS=y
17865 CONFIG_GENERIC_TIME=y
17866 CONFIG_GENERIC_CMOS_UPDATE=y
17867 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
17868 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
17869 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
17870 CONFIG_CEVT_TXX9=y
17871 CONFIG_GPIO_TXX9=y
17872 CONFIG_DMA_NONCOHERENT=y
17873 CONFIG_DMA_NEED_PCI_MAP_STATE=y
17874 -CONFIG_EARLY_PRINTK=y
17875 -CONFIG_SYS_HAS_EARLY_PRINTK=y
17876 # CONFIG_HOTPLUG_CPU is not set
17877 # CONFIG_NO_IOPORT is not set
17878 CONFIG_GENERIC_GPIO=y
17879 @@ -95,7 +87,6 @@
17880 # CONFIG_CPU_TX49XX is not set
17881 # CONFIG_CPU_R5000 is not set
17882 # CONFIG_CPU_R5432 is not set
17883 -# CONFIG_CPU_R5500 is not set
17884 # CONFIG_CPU_R6000 is not set
17885 # CONFIG_CPU_NEVADA is not set
17886 # CONFIG_CPU_R8000 is not set
17887 @@ -103,7 +94,6 @@
17888 # CONFIG_CPU_RM7000 is not set
17889 # CONFIG_CPU_RM9000 is not set
17890 # CONFIG_CPU_SB1 is not set
17891 -# CONFIG_CPU_CAVIUM_OCTEON is not set
17892 CONFIG_SYS_HAS_CPU_TX39XX=y
17893 CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
17894 CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
17895 @@ -127,12 +117,14 @@
17896 CONFIG_ARCH_POPULATES_NODE_MAP=y
17897 CONFIG_FLATMEM=y
17898 CONFIG_FLAT_NODE_MEM_MAP=y
17899 +# CONFIG_SPARSEMEM_STATIC is not set
17900 +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
17901 CONFIG_PAGEFLAGS_EXTENDED=y
17902 CONFIG_SPLIT_PTLOCK_CPUS=4
17903 -# CONFIG_PHYS_ADDR_T_64BIT is not set
17904 +# CONFIG_RESOURCES_64BIT is not set
17905 CONFIG_ZONE_DMA_FLAG=0
17906 CONFIG_VIRT_TO_BUS=y
17907 -CONFIG_UNEVICTABLE_LRU=y
17908 +# CONFIG_TICK_ONESHOT is not set
17909 # CONFIG_NO_HZ is not set
17910 # CONFIG_HIGH_RES_TIMERS is not set
17911 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
17912 @@ -167,15 +159,6 @@
17913 # CONFIG_BSD_PROCESS_ACCT is not set
17914 # CONFIG_TASKSTATS is not set
17915 # CONFIG_AUDIT is not set
17916 -
17917 -#
17918 -# RCU Subsystem
17919 -#
17920 -CONFIG_CLASSIC_RCU=y
17921 -# CONFIG_TREE_RCU is not set
17922 -# CONFIG_PREEMPT_RCU is not set
17923 -# CONFIG_TREE_RCU_TRACE is not set
17924 -# CONFIG_PREEMPT_RCU_TRACE is not set
17925 # CONFIG_IKCONFIG is not set
17926 CONFIG_LOG_BUF_SHIFT=14
17927 # CONFIG_CGROUPS is not set
17928 @@ -188,6 +171,7 @@
17929 CONFIG_SYSCTL=y
17930 CONFIG_EMBEDDED=y
17931 CONFIG_SYSCTL_SYSCALL=y
17932 +CONFIG_SYSCTL_SYSCALL_CHECK=y
17933 CONFIG_KALLSYMS=y
17934 # CONFIG_KALLSYMS_EXTRA_PASS is not set
17935 # CONFIG_HOTPLUG is not set
17936 @@ -204,23 +188,26 @@
17937 CONFIG_TIMERFD=y
17938 CONFIG_EVENTFD=y
17939 CONFIG_SHMEM=y
17940 -CONFIG_AIO=y
17941 CONFIG_VM_EVENT_COUNTERS=y
17942 -CONFIG_PCI_QUIRKS=y
17943 CONFIG_SLAB=y
17944 # CONFIG_SLUB is not set
17945 # CONFIG_SLOB is not set
17946 # CONFIG_PROFILING is not set
17947 +# CONFIG_MARKERS is not set
17948 CONFIG_HAVE_OPROFILE=y
17949 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
17950 +# CONFIG_HAVE_KPROBES is not set
17951 +# CONFIG_HAVE_KRETPROBES is not set
17952 +# CONFIG_HAVE_DMA_ATTRS is not set
17953 +CONFIG_PROC_PAGE_MONITOR=y
17954 CONFIG_SLABINFO=y
17955 CONFIG_RT_MUTEXES=y
17956 +# CONFIG_TINY_SHMEM is not set
17957 CONFIG_BASE_SMALL=0
17958 # CONFIG_MODULES is not set
17959 CONFIG_BLOCK=y
17960 # CONFIG_LBD is not set
17961 # CONFIG_BLK_DEV_IO_TRACE is not set
17962 -# CONFIG_BLK_DEV_INTEGRITY is not set
17963 +# CONFIG_LSF is not set
17964
17965 #
17966 # IO Schedulers
17967 @@ -234,7 +221,7 @@
17968 CONFIG_DEFAULT_CFQ=y
17969 # CONFIG_DEFAULT_NOOP is not set
17970 CONFIG_DEFAULT_IOSCHED="cfq"
17971 -# CONFIG_FREEZER is not set
17972 +CONFIG_CLASSIC_RCU=y
17973
17974 #
17975 # Bus options (PCI, PCMCIA, EISA, ISA, TC)
17976 @@ -244,15 +231,12 @@
17977 CONFIG_PCI_DOMAINS=y
17978 # CONFIG_ARCH_SUPPORTS_MSI is not set
17979 CONFIG_PCI_LEGACY=y
17980 -# CONFIG_PCI_STUB is not set
17981 CONFIG_MMU=y
17982
17983 #
17984 # Executable file formats
17985 #
17986 CONFIG_BINFMT_ELF=y
17987 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
17988 -# CONFIG_HAVE_AOUT is not set
17989 # CONFIG_BINFMT_MISC is not set
17990 CONFIG_TRAD_SIGNALS=y
17991
17992 @@ -261,12 +245,15 @@
17993 #
17994 CONFIG_ARCH_SUSPEND_POSSIBLE=y
17995 # CONFIG_PM is not set
17996 +
17997 +#
17998 +# Networking
17999 +#
18000 CONFIG_NET=y
18001
18002 #
18003 # Networking options
18004 #
18005 -CONFIG_COMPAT_NET_DEV_OPS=y
18006 CONFIG_PACKET=y
18007 # CONFIG_PACKET_MMAP is not set
18008 CONFIG_UNIX=y
18009 @@ -306,7 +293,6 @@
18010 # CONFIG_IPX is not set
18011 # CONFIG_ATALK is not set
18012 # CONFIG_NET_SCHED is not set
18013 -# CONFIG_DCB is not set
18014
18015 #
18016 # Network testing
18017 @@ -316,9 +302,14 @@
18018 # CONFIG_CAN is not set
18019 # CONFIG_IRDA is not set
18020 # CONFIG_BT is not set
18021 -# CONFIG_PHONET is not set
18022 -# CONFIG_WIRELESS is not set
18023 -# CONFIG_WIMAX is not set
18024 +
18025 +#
18026 +# Wireless
18027 +#
18028 +# CONFIG_CFG80211 is not set
18029 +# CONFIG_WIRELESS_EXT is not set
18030 +# CONFIG_MAC80211 is not set
18031 +# CONFIG_IEEE80211 is not set
18032 # CONFIG_RFKILL is not set
18033
18034 #
18035 @@ -332,89 +323,7 @@
18036 CONFIG_PREVENT_FIRMWARE_BUILD=y
18037 # CONFIG_SYS_HYPERVISOR is not set
18038 # CONFIG_CONNECTOR is not set
18039 -CONFIG_MTD=y
18040 -# CONFIG_MTD_DEBUG is not set
18041 -# CONFIG_MTD_CONCAT is not set
18042 -CONFIG_MTD_PARTITIONS=y
18043 -# CONFIG_MTD_REDBOOT_PARTS is not set
18044 -CONFIG_MTD_CMDLINE_PARTS=y
18045 -# CONFIG_MTD_AR7_PARTS is not set
18046 -
18047 -#
18048 -# User Modules And Translation Layers
18049 -#
18050 -CONFIG_MTD_CHAR=y
18051 -# CONFIG_MTD_BLKDEVS is not set
18052 -# CONFIG_MTD_BLOCK is not set
18053 -# CONFIG_MTD_BLOCK_RO is not set
18054 -# CONFIG_FTL is not set
18055 -# CONFIG_NFTL is not set
18056 -# CONFIG_INFTL is not set
18057 -# CONFIG_RFD_FTL is not set
18058 -# CONFIG_SSFDC is not set
18059 -# CONFIG_MTD_OOPS is not set
18060 -
18061 -#
18062 -# RAM/ROM/Flash chip drivers
18063 -#
18064 -CONFIG_MTD_CFI=y
18065 -CONFIG_MTD_JEDECPROBE=y
18066 -CONFIG_MTD_GEN_PROBE=y
18067 -# CONFIG_MTD_CFI_ADV_OPTIONS is not set
18068 -CONFIG_MTD_MAP_BANK_WIDTH_1=y
18069 -CONFIG_MTD_MAP_BANK_WIDTH_2=y
18070 -CONFIG_MTD_MAP_BANK_WIDTH_4=y
18071 -# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
18072 -# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
18073 -# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
18074 -CONFIG_MTD_CFI_I1=y
18075 -CONFIG_MTD_CFI_I2=y
18076 -# CONFIG_MTD_CFI_I4 is not set
18077 -# CONFIG_MTD_CFI_I8 is not set
18078 -# CONFIG_MTD_CFI_INTELEXT is not set
18079 -CONFIG_MTD_CFI_AMDSTD=y
18080 -# CONFIG_MTD_CFI_STAA is not set
18081 -CONFIG_MTD_CFI_UTIL=y
18082 -# CONFIG_MTD_RAM is not set
18083 -# CONFIG_MTD_ROM is not set
18084 -# CONFIG_MTD_ABSENT is not set
18085 -
18086 -#
18087 -# Mapping drivers for chip access
18088 -#
18089 -# CONFIG_MTD_COMPLEX_MAPPINGS is not set
18090 -CONFIG_MTD_PHYSMAP=y
18091 -# CONFIG_MTD_PHYSMAP_COMPAT is not set
18092 -# CONFIG_MTD_INTEL_VR_NOR is not set
18093 -# CONFIG_MTD_PLATRAM is not set
18094 -
18095 -#
18096 -# Self-contained MTD device drivers
18097 -#
18098 -# CONFIG_MTD_PMC551 is not set
18099 -# CONFIG_MTD_SLRAM is not set
18100 -# CONFIG_MTD_PHRAM is not set
18101 -# CONFIG_MTD_MTDRAM is not set
18102 -# CONFIG_MTD_BLOCK2MTD is not set
18103 -
18104 -#
18105 -# Disk-On-Chip Device Drivers
18106 -#
18107 -# CONFIG_MTD_DOC2000 is not set
18108 -# CONFIG_MTD_DOC2001 is not set
18109 -# CONFIG_MTD_DOC2001PLUS is not set
18110 -# CONFIG_MTD_NAND is not set
18111 -# CONFIG_MTD_ONENAND is not set
18112 -
18113 -#
18114 -# LPDDR flash memory drivers
18115 -#
18116 -# CONFIG_MTD_LPDDR is not set
18117 -
18118 -#
18119 -# UBI - Unsorted block images
18120 -#
18121 -# CONFIG_MTD_UBI is not set
18122 +# CONFIG_MTD is not set
18123 # CONFIG_PARPORT is not set
18124 CONFIG_BLK_DEV=y
18125 # CONFIG_BLK_CPQ_DA is not set
18126 @@ -427,7 +336,6 @@
18127 # CONFIG_BLK_DEV_RAM is not set
18128 # CONFIG_CDROM_PKTCDVD is not set
18129 # CONFIG_ATA_OVER_ETH is not set
18130 -# CONFIG_BLK_DEV_HD is not set
18131 # CONFIG_MISC_DEVICES is not set
18132 CONFIG_HAVE_IDE=y
18133 # CONFIG_IDE is not set
18134 @@ -453,6 +361,7 @@
18135 # CONFIG_IEEE1394 is not set
18136 # CONFIG_I2O is not set
18137 CONFIG_NETDEVICES=y
18138 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
18139 # CONFIG_DUMMY is not set
18140 # CONFIG_BONDING is not set
18141 # CONFIG_EQUALIZER is not set
18142 @@ -474,9 +383,6 @@
18143 # CONFIG_BROADCOM_PHY is not set
18144 # CONFIG_ICPLUS_PHY is not set
18145 # CONFIG_REALTEK_PHY is not set
18146 -# CONFIG_NATIONAL_PHY is not set
18147 -# CONFIG_STE10XP is not set
18148 -# CONFIG_LSI_ET1011C_PHY is not set
18149 # CONFIG_FIXED_PHY is not set
18150 # CONFIG_MDIO_BITBANG is not set
18151 CONFIG_NET_ETHERNET=y
18152 @@ -486,7 +392,6 @@
18153 # CONFIG_SUNGEM is not set
18154 # CONFIG_CASSINI is not set
18155 # CONFIG_NET_VENDOR_3COM is not set
18156 -# CONFIG_SMC91X is not set
18157 # CONFIG_DM9000 is not set
18158 # CONFIG_NET_TULIP is not set
18159 # CONFIG_HP100 is not set
18160 @@ -494,9 +399,6 @@
18161 # CONFIG_IBM_NEW_EMAC_RGMII is not set
18162 # CONFIG_IBM_NEW_EMAC_TAH is not set
18163 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
18164 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
18165 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
18166 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
18167 CONFIG_NET_PCI=y
18168 # CONFIG_PCNET32 is not set
18169 # CONFIG_AMD8111_ETH is not set
18170 @@ -504,6 +406,7 @@
18171 # CONFIG_B44 is not set
18172 # CONFIG_FORCEDETH is not set
18173 CONFIG_TC35815=y
18174 +# CONFIG_EEPRO100 is not set
18175 # CONFIG_E100 is not set
18176 # CONFIG_FEALNX is not set
18177 # CONFIG_NATSEMI is not set
18178 @@ -512,11 +415,9 @@
18179 # CONFIG_R6040 is not set
18180 # CONFIG_SIS900 is not set
18181 # CONFIG_EPIC100 is not set
18182 -# CONFIG_SMSC9420 is not set
18183 # CONFIG_SUNDANCE is not set
18184 # CONFIG_TLAN is not set
18185 # CONFIG_VIA_RHINE is not set
18186 -# CONFIG_ATL2 is not set
18187 # CONFIG_NETDEV_1000 is not set
18188 # CONFIG_NETDEV_10000 is not set
18189 # CONFIG_TR is not set
18190 @@ -527,10 +428,6 @@
18191 # CONFIG_WLAN_PRE80211 is not set
18192 # CONFIG_WLAN_80211 is not set
18193 # CONFIG_IWLWIFI_LEDS is not set
18194 -
18195 -#
18196 -# Enable WiMAX (Networking options) to see the WiMAX drivers
18197 -#
18198 # CONFIG_WAN is not set
18199 # CONFIG_FDDI is not set
18200 # CONFIG_PPP is not set
18201 @@ -543,7 +440,27 @@
18202 #
18203 # Input device support
18204 #
18205 -# CONFIG_INPUT is not set
18206 +CONFIG_INPUT=y
18207 +# CONFIG_INPUT_FF_MEMLESS is not set
18208 +# CONFIG_INPUT_POLLDEV is not set
18209 +
18210 +#
18211 +# Userland interfaces
18212 +#
18213 +# CONFIG_INPUT_MOUSEDEV is not set
18214 +# CONFIG_INPUT_JOYDEV is not set
18215 +# CONFIG_INPUT_EVDEV is not set
18216 +# CONFIG_INPUT_EVBUG is not set
18217 +
18218 +#
18219 +# Input Device Drivers
18220 +#
18221 +# CONFIG_INPUT_KEYBOARD is not set
18222 +# CONFIG_INPUT_MOUSE is not set
18223 +# CONFIG_INPUT_JOYSTICK is not set
18224 +# CONFIG_INPUT_TABLET is not set
18225 +# CONFIG_INPUT_TOUCHSCREEN is not set
18226 +# CONFIG_INPUT_MISC is not set
18227
18228 #
18229 # Hardware I/O ports
18230 @@ -600,11 +517,10 @@
18231 CONFIG_DEVPORT=y
18232 # CONFIG_I2C is not set
18233 # CONFIG_SPI is not set
18234 -CONFIG_ARCH_REQUIRE_GPIOLIB=y
18235 -CONFIG_GPIOLIB=y
18236 +CONFIG_HAVE_GPIO_LIB=y
18237
18238 #
18239 -# Memory mapped GPIO expanders:
18240 +# GPIO Support
18241 #
18242
18243 #
18244 @@ -612,11 +528,6 @@
18245 #
18246
18247 #
18248 -# PCI GPIO expanders:
18249 -#
18250 -# CONFIG_GPIO_BT8XX is not set
18251 -
18252 -#
18253 # SPI GPIO expanders:
18254 #
18255 # CONFIG_W1 is not set
18256 @@ -631,7 +542,6 @@
18257 # Watchdog Device Drivers
18258 #
18259 # CONFIG_SOFT_WATCHDOG is not set
18260 -# CONFIG_ALIM7101_WDT is not set
18261 CONFIG_TXX9_WDT=y
18262
18263 #
18264 @@ -639,21 +549,18 @@
18265 #
18266 # CONFIG_PCIPCWATCHDOG is not set
18267 # CONFIG_WDTPCI is not set
18268 -CONFIG_SSB_POSSIBLE=y
18269
18270 #
18271 # Sonics Silicon Backplane
18272 #
18273 +CONFIG_SSB_POSSIBLE=y
18274 # CONFIG_SSB is not set
18275
18276 #
18277 # Multifunction device drivers
18278 #
18279 -# CONFIG_MFD_CORE is not set
18280 # CONFIG_MFD_SM501 is not set
18281 # CONFIG_HTC_PASIC3 is not set
18282 -# CONFIG_MFD_TMIO is not set
18283 -# CONFIG_REGULATOR is not set
18284
18285 #
18286 # Multimedia devices
18287 @@ -684,26 +591,16 @@
18288 # Display device support
18289 #
18290 # CONFIG_DISPLAY_SUPPORT is not set
18291 +
18292 +#
18293 +# Sound
18294 +#
18295 # CONFIG_SOUND is not set
18296 +# CONFIG_HID_SUPPORT is not set
18297 # CONFIG_USB_SUPPORT is not set
18298 # CONFIG_MMC is not set
18299 # CONFIG_MEMSTICK is not set
18300 -CONFIG_NEW_LEDS=y
18301 -CONFIG_LEDS_CLASS=y
18302 -
18303 -#
18304 -# LED drivers
18305 -#
18306 -CONFIG_LEDS_GPIO=y
18307 -
18308 -#
18309 -# LED Triggers
18310 -#
18311 -CONFIG_LEDS_TRIGGERS=y
18312 -# CONFIG_LEDS_TRIGGER_TIMER is not set
18313 -CONFIG_LEDS_TRIGGER_HEARTBEAT=y
18314 -# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
18315 -# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
18316 +# CONFIG_NEW_LEDS is not set
18317 # CONFIG_ACCESSIBILITY is not set
18318 # CONFIG_INFINIBAND is not set
18319 CONFIG_RTC_LIB=y
18320 @@ -729,34 +626,27 @@
18321 # Platform RTC drivers
18322 #
18323 # CONFIG_RTC_DRV_CMOS is not set
18324 -# CONFIG_RTC_DRV_DS1286 is not set
18325 # CONFIG_RTC_DRV_DS1511 is not set
18326 # CONFIG_RTC_DRV_DS1553 is not set
18327 CONFIG_RTC_DRV_DS1742=y
18328 # CONFIG_RTC_DRV_STK17TA8 is not set
18329 # CONFIG_RTC_DRV_M48T86 is not set
18330 -# CONFIG_RTC_DRV_M48T35 is not set
18331 # CONFIG_RTC_DRV_M48T59 is not set
18332 -# CONFIG_RTC_DRV_BQ4802 is not set
18333 # CONFIG_RTC_DRV_V3020 is not set
18334
18335 #
18336 # on-CPU RTC drivers
18337 #
18338 -# CONFIG_DMADEVICES is not set
18339 # CONFIG_UIO is not set
18340 -# CONFIG_STAGING is not set
18341
18342 #
18343 # File systems
18344 #
18345 # CONFIG_EXT2_FS is not set
18346 # CONFIG_EXT3_FS is not set
18347 -# CONFIG_EXT4_FS is not set
18348 # CONFIG_REISERFS_FS is not set
18349 # CONFIG_JFS_FS is not set
18350 # CONFIG_FS_POSIX_ACL is not set
18351 -CONFIG_FILE_LOCKING=y
18352 # CONFIG_XFS_FS is not set
18353 # CONFIG_OCFS2_FS is not set
18354 CONFIG_DNOTIFY=y
18355 @@ -786,17 +676,28 @@
18356 CONFIG_PROC_FS=y
18357 CONFIG_PROC_KCORE=y
18358 CONFIG_PROC_SYSCTL=y
18359 -CONFIG_PROC_PAGE_MONITOR=y
18360 CONFIG_SYSFS=y
18361 # CONFIG_TMPFS is not set
18362 # CONFIG_HUGETLB_PAGE is not set
18363 # CONFIG_CONFIGFS_FS is not set
18364 -# CONFIG_MISC_FILESYSTEMS is not set
18365 +
18366 +#
18367 +# Miscellaneous filesystems
18368 +#
18369 +# CONFIG_HFSPLUS_FS is not set
18370 +# CONFIG_CRAMFS is not set
18371 +# CONFIG_VXFS_FS is not set
18372 +# CONFIG_MINIX_FS is not set
18373 +# CONFIG_HPFS_FS is not set
18374 +# CONFIG_QNX4FS_FS is not set
18375 +# CONFIG_ROMFS_FS is not set
18376 +# CONFIG_SYSV_FS is not set
18377 +# CONFIG_UFS_FS is not set
18378 CONFIG_NETWORK_FILESYSTEMS=y
18379 CONFIG_NFS_FS=y
18380 # CONFIG_NFS_V3 is not set
18381 -CONFIG_ROOT_NFS=y
18382 # CONFIG_NFSD is not set
18383 +CONFIG_ROOT_NFS=y
18384 CONFIG_LOCKD=y
18385 CONFIG_NFS_COMMON=y
18386 CONFIG_SUNRPC=y
18387 @@ -825,16 +726,7 @@
18388 # CONFIG_DEBUG_FS is not set
18389 # CONFIG_HEADERS_CHECK is not set
18390 # CONFIG_DEBUG_KERNEL is not set
18391 -# CONFIG_DEBUG_MEMORY_INIT is not set
18392 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
18393 -CONFIG_SYSCTL_SYSCALL_CHECK=y
18394 -
18395 -#
18396 -# Tracers
18397 -#
18398 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
18399 # CONFIG_SAMPLES is not set
18400 -CONFIG_HAVE_ARCH_KGDB=y
18401 CONFIG_CMDLINE=""
18402
18403 #
18404 @@ -842,18 +734,15 @@
18405 #
18406 # CONFIG_KEYS is not set
18407 # CONFIG_SECURITY is not set
18408 -# CONFIG_SECURITYFS is not set
18409 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
18410 # CONFIG_CRYPTO is not set
18411
18412 #
18413 # Library routines
18414 #
18415 CONFIG_BITREVERSE=y
18416 -CONFIG_GENERIC_FIND_LAST_BIT=y
18417 +# CONFIG_GENERIC_FIND_FIRST_BIT is not set
18418 # CONFIG_CRC_CCITT is not set
18419 # CONFIG_CRC16 is not set
18420 -# CONFIG_CRC_T10DIF is not set
18421 # CONFIG_CRC_ITU_T is not set
18422 CONFIG_CRC32=y
18423 # CONFIG_CRC7 is not set
18424 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/configs/markeins_defconfig linux-2.6.29-rc3.owrt/arch/mips/configs/markeins_defconfig
18425 --- linux-2.6.29.owrt/arch/mips/configs/markeins_defconfig 2009-05-10 22:04:40.000000000 +0200
18426 +++ linux-2.6.29-rc3.owrt/arch/mips/configs/markeins_defconfig 1970-01-01 01:00:00.000000000 +0100
18427 @@ -1,1439 +0,0 @@
18428 -#
18429 -# Automatically generated make config: don't edit
18430 -# Linux kernel version: 2.6.20
18431 -# Tue Feb 20 21:47:29 2007
18432 -#
18433 -CONFIG_MIPS=y
18434 -
18435 -#
18436 -# Machine selection
18437 -#
18438 -CONFIG_ZONE_DMA=y
18439 -# CONFIG_MIPS_MTX1 is not set
18440 -# CONFIG_MIPS_BOSPORUS is not set
18441 -# CONFIG_MIPS_PB1000 is not set
18442 -# CONFIG_MIPS_PB1100 is not set
18443 -# CONFIG_MIPS_PB1500 is not set
18444 -# CONFIG_MIPS_PB1550 is not set
18445 -# CONFIG_MIPS_PB1200 is not set
18446 -# CONFIG_MIPS_DB1000 is not set
18447 -# CONFIG_MIPS_DB1100 is not set
18448 -# CONFIG_MIPS_DB1500 is not set
18449 -# CONFIG_MIPS_DB1550 is not set
18450 -# CONFIG_MIPS_DB1200 is not set
18451 -# CONFIG_MIPS_MIRAGE is not set
18452 -# CONFIG_BASLER_EXCITE is not set
18453 -# CONFIG_MIPS_COBALT is not set
18454 -# CONFIG_MACH_DECSTATION is not set
18455 -# CONFIG_MACH_JAZZ is not set
18456 -# CONFIG_MIPS_MALTA is not set
18457 -# CONFIG_WR_PPMC is not set
18458 -# CONFIG_MIPS_SIM is not set
18459 -# CONFIG_MOMENCO_JAGUAR_ATX is not set
18460 -# CONFIG_MIPS_XXS1500 is not set
18461 -# CONFIG_PNX8550_JBS is not set
18462 -# CONFIG_PNX8550_STB810 is not set
18463 -# CONFIG_MACH_VR41XX is not set
18464 -# CONFIG_PMC_YOSEMITE is not set
18465 -CONFIG_NEC_MARKEINS=y
18466 -# CONFIG_SGI_IP22 is not set
18467 -# CONFIG_SGI_IP27 is not set
18468 -# CONFIG_SGI_IP32 is not set
18469 -# CONFIG_SIBYTE_BIGSUR is not set
18470 -# CONFIG_SIBYTE_SWARM is not set
18471 -# CONFIG_SIBYTE_SENTOSA is not set
18472 -# CONFIG_SIBYTE_RHONE is not set
18473 -# CONFIG_SIBYTE_CARMEL is not set
18474 -# CONFIG_SIBYTE_LITTLESUR is not set
18475 -# CONFIG_SIBYTE_CRHINE is not set
18476 -# CONFIG_SIBYTE_CRHONE is not set
18477 -# CONFIG_SNI_RM is not set
18478 -# CONFIG_TOSHIBA_JMR3927 is not set
18479 -# CONFIG_TOSHIBA_RBTX4927 is not set
18480 -# CONFIG_TOSHIBA_RBTX4938 is not set
18481 -CONFIG_RWSEM_GENERIC_SPINLOCK=y
18482 -# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18483 -# CONFIG_ARCH_HAS_ILOG2_U64 is not set
18484 -CONFIG_GENERIC_FIND_NEXT_BIT=y
18485 -CONFIG_GENERIC_HWEIGHT=y
18486 -CONFIG_GENERIC_CALIBRATE_DELAY=y
18487 -CONFIG_GENERIC_TIME=y
18488 -CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
18489 -# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
18490 -CONFIG_DMA_NONCOHERENT=y
18491 -CONFIG_DMA_NEED_PCI_MAP_STATE=y
18492 -CONFIG_CPU_BIG_ENDIAN=y
18493 -# CONFIG_CPU_LITTLE_ENDIAN is not set
18494 -CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
18495 -CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
18496 -CONFIG_IRQ_CPU=y
18497 -CONFIG_SWAP_IO_SPACE=y
18498 -CONFIG_SOC_EMMA2RH=y
18499 -CONFIG_MIPS_L1_CACHE_SHIFT=5
18500 -
18501 -#
18502 -# CPU selection
18503 -#
18504 -# CONFIG_CPU_MIPS32_R1 is not set
18505 -# CONFIG_CPU_MIPS32_R2 is not set
18506 -# CONFIG_CPU_MIPS64_R1 is not set
18507 -# CONFIG_CPU_MIPS64_R2 is not set
18508 -# CONFIG_CPU_R3000 is not set
18509 -# CONFIG_CPU_TX39XX is not set
18510 -# CONFIG_CPU_VR41XX is not set
18511 -# CONFIG_CPU_R4300 is not set
18512 -# CONFIG_CPU_R4X00 is not set
18513 -# CONFIG_CPU_TX49XX is not set
18514 -CONFIG_CPU_R5000=y
18515 -# CONFIG_CPU_R5432 is not set
18516 -# CONFIG_CPU_R6000 is not set
18517 -# CONFIG_CPU_NEVADA is not set
18518 -# CONFIG_CPU_R8000 is not set
18519 -# CONFIG_CPU_R10000 is not set
18520 -# CONFIG_CPU_RM7000 is not set
18521 -# CONFIG_CPU_RM9000 is not set
18522 -# CONFIG_CPU_SB1 is not set
18523 -CONFIG_SYS_HAS_CPU_R5000=y
18524 -CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
18525 -CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
18526 -CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
18527 -
18528 -#
18529 -# Kernel type
18530 -#
18531 -CONFIG_32BIT=y
18532 -# CONFIG_64BIT is not set
18533 -CONFIG_PAGE_SIZE_4KB=y
18534 -# CONFIG_PAGE_SIZE_8KB is not set
18535 -# CONFIG_PAGE_SIZE_16KB is not set
18536 -# CONFIG_PAGE_SIZE_64KB is not set
18537 -CONFIG_MIPS_MT_DISABLED=y
18538 -# CONFIG_MIPS_MT_SMP is not set
18539 -# CONFIG_MIPS_MT_SMTC is not set
18540 -# CONFIG_MIPS_VPE_LOADER is not set
18541 -# CONFIG_64BIT_PHYS_ADDR is not set
18542 -CONFIG_CPU_HAS_LLSC=y
18543 -CONFIG_CPU_HAS_SYNC=y
18544 -CONFIG_GENERIC_HARDIRQS=y
18545 -CONFIG_GENERIC_IRQ_PROBE=y
18546 -CONFIG_ARCH_FLATMEM_ENABLE=y
18547 -CONFIG_SELECT_MEMORY_MODEL=y
18548 -CONFIG_FLATMEM_MANUAL=y
18549 -# CONFIG_DISCONTIGMEM_MANUAL is not set
18550 -# CONFIG_SPARSEMEM_MANUAL is not set
18551 -CONFIG_FLATMEM=y
18552 -CONFIG_FLAT_NODE_MEM_MAP=y
18553 -# CONFIG_SPARSEMEM_STATIC is not set
18554 -CONFIG_SPLIT_PTLOCK_CPUS=4
18555 -# CONFIG_RESOURCES_64BIT is not set
18556 -CONFIG_ZONE_DMA_FLAG=1
18557 -# CONFIG_HZ_48 is not set
18558 -# CONFIG_HZ_100 is not set
18559 -# CONFIG_HZ_128 is not set
18560 -# CONFIG_HZ_250 is not set
18561 -# CONFIG_HZ_256 is not set
18562 -CONFIG_HZ_1000=y
18563 -# CONFIG_HZ_1024 is not set
18564 -CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
18565 -CONFIG_HZ=1000
18566 -# CONFIG_PREEMPT_NONE is not set
18567 -# CONFIG_PREEMPT_VOLUNTARY is not set
18568 -CONFIG_PREEMPT=y
18569 -CONFIG_PREEMPT_BKL=y
18570 -# CONFIG_KEXEC is not set
18571 -CONFIG_LOCKDEP_SUPPORT=y
18572 -CONFIG_STACKTRACE_SUPPORT=y
18573 -CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
18574 -
18575 -#
18576 -# Code maturity level options
18577 -#
18578 -CONFIG_EXPERIMENTAL=y
18579 -CONFIG_BROKEN_ON_SMP=y
18580 -CONFIG_LOCK_KERNEL=y
18581 -CONFIG_INIT_ENV_ARG_LIMIT=32
18582 -
18583 -#
18584 -# General setup
18585 -#
18586 -CONFIG_LOCALVERSION=""
18587 -CONFIG_LOCALVERSION_AUTO=y
18588 -CONFIG_SWAP=y
18589 -CONFIG_SYSVIPC=y
18590 -# CONFIG_IPC_NS is not set
18591 -CONFIG_SYSVIPC_SYSCTL=y
18592 -CONFIG_POSIX_MQUEUE=y
18593 -CONFIG_BSD_PROCESS_ACCT=y
18594 -# CONFIG_BSD_PROCESS_ACCT_V3 is not set
18595 -# CONFIG_TASKSTATS is not set
18596 -# CONFIG_UTS_NS is not set
18597 -# CONFIG_AUDIT is not set
18598 -CONFIG_IKCONFIG=y
18599 -CONFIG_IKCONFIG_PROC=y
18600 -CONFIG_SYSFS_DEPRECATED=y
18601 -# CONFIG_RELAY is not set
18602 -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
18603 -CONFIG_SYSCTL=y
18604 -CONFIG_EMBEDDED=y
18605 -CONFIG_SYSCTL_SYSCALL=y
18606 -CONFIG_KALLSYMS=y
18607 -# CONFIG_KALLSYMS_EXTRA_PASS is not set
18608 -CONFIG_HOTPLUG=y
18609 -CONFIG_PRINTK=y
18610 -CONFIG_BUG=y
18611 -CONFIG_ELF_CORE=y
18612 -CONFIG_BASE_FULL=y
18613 -CONFIG_FUTEX=y
18614 -CONFIG_EPOLL=y
18615 -CONFIG_SHMEM=y
18616 -CONFIG_SLAB=y
18617 -CONFIG_VM_EVENT_COUNTERS=y
18618 -CONFIG_RT_MUTEXES=y
18619 -# CONFIG_TINY_SHMEM is not set
18620 -CONFIG_BASE_SMALL=0
18621 -# CONFIG_SLOB is not set
18622 -
18623 -#
18624 -# Loadable module support
18625 -#
18626 -CONFIG_MODULES=y
18627 -CONFIG_MODULE_UNLOAD=y
18628 -CONFIG_MODULE_FORCE_UNLOAD=y
18629 -CONFIG_MODVERSIONS=y
18630 -# CONFIG_MODULE_SRCVERSION_ALL is not set
18631 -CONFIG_KMOD=y
18632 -
18633 -#
18634 -# Block layer
18635 -#
18636 -CONFIG_BLOCK=y
18637 -CONFIG_LBD=y
18638 -# CONFIG_BLK_DEV_IO_TRACE is not set
18639 -# CONFIG_LSF is not set
18640 -
18641 -#
18642 -# IO Schedulers
18643 -#
18644 -CONFIG_IOSCHED_NOOP=y
18645 -CONFIG_IOSCHED_AS=y
18646 -CONFIG_IOSCHED_DEADLINE=y
18647 -CONFIG_IOSCHED_CFQ=y
18648 -CONFIG_DEFAULT_AS=y
18649 -# CONFIG_DEFAULT_DEADLINE is not set
18650 -# CONFIG_DEFAULT_CFQ is not set
18651 -# CONFIG_DEFAULT_NOOP is not set
18652 -CONFIG_DEFAULT_IOSCHED="anticipatory"
18653 -
18654 -#
18655 -# Bus options (PCI, PCMCIA, EISA, ISA, TC)
18656 -#
18657 -CONFIG_HW_HAS_PCI=y
18658 -CONFIG_PCI=y
18659 -CONFIG_MMU=y
18660 -
18661 -#
18662 -# PCCARD (PCMCIA/CardBus) support
18663 -#
18664 -# CONFIG_PCCARD is not set
18665 -
18666 -#
18667 -# PCI Hotplug Support
18668 -#
18669 -# CONFIG_HOTPLUG_PCI is not set
18670 -
18671 -#
18672 -# Executable file formats
18673 -#
18674 -CONFIG_BINFMT_ELF=y
18675 -# CONFIG_BINFMT_MISC is not set
18676 -CONFIG_TRAD_SIGNALS=y
18677 -
18678 -#
18679 -# Power management options
18680 -#
18681 -CONFIG_PM=y
18682 -# CONFIG_PM_LEGACY is not set
18683 -# CONFIG_PM_DEBUG is not set
18684 -# CONFIG_PM_SYSFS_DEPRECATED is not set
18685 -
18686 -#
18687 -# Networking
18688 -#
18689 -CONFIG_NET=y
18690 -
18691 -#
18692 -# Networking options
18693 -#
18694 -# CONFIG_NETDEBUG is not set
18695 -CONFIG_PACKET=y
18696 -CONFIG_PACKET_MMAP=y
18697 -CONFIG_UNIX=y
18698 -CONFIG_XFRM=y
18699 -# CONFIG_XFRM_USER is not set
18700 -# CONFIG_XFRM_SUB_POLICY is not set
18701 -CONFIG_XFRM_MIGRATE=y
18702 -CONFIG_NET_KEY=y
18703 -CONFIG_NET_KEY_MIGRATE=y
18704 -CONFIG_INET=y
18705 -CONFIG_IP_MULTICAST=y
18706 -CONFIG_IP_ADVANCED_ROUTER=y
18707 -CONFIG_ASK_IP_FIB_HASH=y
18708 -# CONFIG_IP_FIB_TRIE is not set
18709 -CONFIG_IP_FIB_HASH=y
18710 -CONFIG_IP_MULTIPLE_TABLES=y
18711 -CONFIG_IP_ROUTE_MULTIPATH=y
18712 -# CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
18713 -CONFIG_IP_ROUTE_VERBOSE=y
18714 -CONFIG_IP_PNP=y
18715 -# CONFIG_IP_PNP_DHCP is not set
18716 -CONFIG_IP_PNP_BOOTP=y
18717 -# CONFIG_IP_PNP_RARP is not set
18718 -# CONFIG_NET_IPIP is not set
18719 -# CONFIG_NET_IPGRE is not set
18720 -# CONFIG_IP_MROUTE is not set
18721 -# CONFIG_ARPD is not set
18722 -CONFIG_SYN_COOKIES=y
18723 -# CONFIG_INET_AH is not set
18724 -# CONFIG_INET_ESP is not set
18725 -# CONFIG_INET_IPCOMP is not set
18726 -# CONFIG_INET_XFRM_TUNNEL is not set
18727 -CONFIG_INET_TUNNEL=m
18728 -CONFIG_INET_XFRM_MODE_TRANSPORT=m
18729 -CONFIG_INET_XFRM_MODE_TUNNEL=m
18730 -CONFIG_INET_XFRM_MODE_BEET=m
18731 -CONFIG_INET_DIAG=y
18732 -CONFIG_INET_TCP_DIAG=y
18733 -# CONFIG_TCP_CONG_ADVANCED is not set
18734 -CONFIG_TCP_CONG_CUBIC=y
18735 -CONFIG_DEFAULT_TCP_CONG="cubic"
18736 -CONFIG_TCP_MD5SIG=y
18737 -
18738 -#
18739 -# IP: Virtual Server Configuration
18740 -#
18741 -# CONFIG_IP_VS is not set
18742 -CONFIG_IPV6=m
18743 -# CONFIG_IPV6_PRIVACY is not set
18744 -# CONFIG_IPV6_ROUTER_PREF is not set
18745 -# CONFIG_INET6_AH is not set
18746 -# CONFIG_INET6_ESP is not set
18747 -# CONFIG_INET6_IPCOMP is not set
18748 -CONFIG_IPV6_MIP6=y
18749 -# CONFIG_INET6_XFRM_TUNNEL is not set
18750 -# CONFIG_INET6_TUNNEL is not set
18751 -CONFIG_INET6_XFRM_MODE_TRANSPORT=m
18752 -CONFIG_INET6_XFRM_MODE_TUNNEL=m
18753 -CONFIG_INET6_XFRM_MODE_BEET=m
18754 -CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
18755 -CONFIG_IPV6_SIT=m
18756 -# CONFIG_IPV6_TUNNEL is not set
18757 -CONFIG_IPV6_MULTIPLE_TABLES=y
18758 -CONFIG_IPV6_SUBTREES=y
18759 -CONFIG_NETWORK_SECMARK=y
18760 -CONFIG_NETFILTER=y
18761 -# CONFIG_NETFILTER_DEBUG is not set
18762 -
18763 -#
18764 -# Core Netfilter Configuration
18765 -#
18766 -# CONFIG_NETFILTER_NETLINK is not set
18767 -CONFIG_NF_CONNTRACK_ENABLED=m
18768 -CONFIG_NF_CONNTRACK_SUPPORT=y
18769 -# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
18770 -CONFIG_NF_CONNTRACK=m
18771 -CONFIG_NF_CT_ACCT=y
18772 -CONFIG_NF_CONNTRACK_MARK=y
18773 -CONFIG_NF_CONNTRACK_SECMARK=y
18774 -CONFIG_NF_CONNTRACK_EVENTS=y
18775 -CONFIG_NF_CT_PROTO_GRE=m
18776 -CONFIG_NF_CT_PROTO_SCTP=m
18777 -CONFIG_NF_CONNTRACK_AMANDA=m
18778 -CONFIG_NF_CONNTRACK_FTP=m
18779 -CONFIG_NF_CONNTRACK_H323=m
18780 -CONFIG_NF_CONNTRACK_IRC=m
18781 -# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
18782 -CONFIG_NF_CONNTRACK_PPTP=m
18783 -CONFIG_NF_CONNTRACK_SANE=m
18784 -CONFIG_NF_CONNTRACK_SIP=m
18785 -CONFIG_NF_CONNTRACK_TFTP=m
18786 -CONFIG_NETFILTER_XTABLES=m
18787 -CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
18788 -CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
18789 -CONFIG_NETFILTER_XT_TARGET_DSCP=m
18790 -CONFIG_NETFILTER_XT_TARGET_MARK=m
18791 -CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
18792 -CONFIG_NETFILTER_XT_TARGET_NFLOG=m
18793 -CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
18794 -CONFIG_NETFILTER_XT_TARGET_SECMARK=m
18795 -CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
18796 -CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
18797 -CONFIG_NETFILTER_XT_MATCH_COMMENT=m
18798 -CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
18799 -CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
18800 -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
18801 -CONFIG_NETFILTER_XT_MATCH_DCCP=m
18802 -CONFIG_NETFILTER_XT_MATCH_DSCP=m
18803 -CONFIG_NETFILTER_XT_MATCH_ESP=m
18804 -CONFIG_NETFILTER_XT_MATCH_HELPER=m
18805 -CONFIG_NETFILTER_XT_MATCH_LENGTH=m
18806 -CONFIG_NETFILTER_XT_MATCH_LIMIT=m
18807 -CONFIG_NETFILTER_XT_MATCH_MAC=m
18808 -CONFIG_NETFILTER_XT_MATCH_MARK=m
18809 -CONFIG_NETFILTER_XT_MATCH_POLICY=m
18810 -CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
18811 -CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
18812 -CONFIG_NETFILTER_XT_MATCH_QUOTA=m
18813 -CONFIG_NETFILTER_XT_MATCH_REALM=m
18814 -CONFIG_NETFILTER_XT_MATCH_SCTP=m
18815 -CONFIG_NETFILTER_XT_MATCH_STATE=m
18816 -CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
18817 -CONFIG_NETFILTER_XT_MATCH_STRING=m
18818 -CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
18819 -CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
18820 -
18821 -#
18822 -# IP: Netfilter Configuration
18823 -#
18824 -CONFIG_NF_CONNTRACK_IPV4=m
18825 -CONFIG_NF_CONNTRACK_PROC_COMPAT=y
18826 -# CONFIG_IP_NF_QUEUE is not set
18827 -CONFIG_IP_NF_IPTABLES=m
18828 -CONFIG_IP_NF_MATCH_IPRANGE=m
18829 -CONFIG_IP_NF_MATCH_TOS=m
18830 -CONFIG_IP_NF_MATCH_RECENT=m
18831 -CONFIG_IP_NF_MATCH_ECN=m
18832 -CONFIG_IP_NF_MATCH_AH=m
18833 -CONFIG_IP_NF_MATCH_TTL=m
18834 -CONFIG_IP_NF_MATCH_OWNER=m
18835 -CONFIG_IP_NF_MATCH_ADDRTYPE=m
18836 -CONFIG_IP_NF_FILTER=m
18837 -CONFIG_IP_NF_TARGET_REJECT=m
18838 -CONFIG_IP_NF_TARGET_LOG=m
18839 -CONFIG_IP_NF_TARGET_ULOG=m
18840 -CONFIG_NF_NAT=m
18841 -CONFIG_NF_NAT_NEEDED=y
18842 -CONFIG_IP_NF_TARGET_MASQUERADE=m
18843 -CONFIG_IP_NF_TARGET_REDIRECT=m
18844 -CONFIG_IP_NF_TARGET_NETMAP=m
18845 -CONFIG_IP_NF_TARGET_SAME=m
18846 -CONFIG_NF_NAT_SNMP_BASIC=m
18847 -CONFIG_NF_NAT_PROTO_GRE=m
18848 -CONFIG_NF_NAT_FTP=m
18849 -CONFIG_NF_NAT_IRC=m
18850 -CONFIG_NF_NAT_TFTP=m
18851 -CONFIG_NF_NAT_AMANDA=m
18852 -CONFIG_NF_NAT_PPTP=m
18853 -CONFIG_NF_NAT_H323=m
18854 -CONFIG_NF_NAT_SIP=m
18855 -CONFIG_IP_NF_MANGLE=m
18856 -CONFIG_IP_NF_TARGET_TOS=m
18857 -CONFIG_IP_NF_TARGET_ECN=m
18858 -CONFIG_IP_NF_TARGET_TTL=m
18859 -CONFIG_IP_NF_TARGET_CLUSTERIP=m
18860 -CONFIG_IP_NF_RAW=m
18861 -CONFIG_IP_NF_ARPTABLES=m
18862 -CONFIG_IP_NF_ARPFILTER=m
18863 -CONFIG_IP_NF_ARP_MANGLE=m
18864 -
18865 -#
18866 -# IPv6: Netfilter Configuration (EXPERIMENTAL)
18867 -#
18868 -CONFIG_NF_CONNTRACK_IPV6=m
18869 -# CONFIG_IP6_NF_QUEUE is not set
18870 -CONFIG_IP6_NF_IPTABLES=m
18871 -CONFIG_IP6_NF_MATCH_RT=m
18872 -CONFIG_IP6_NF_MATCH_OPTS=m
18873 -CONFIG_IP6_NF_MATCH_FRAG=m
18874 -CONFIG_IP6_NF_MATCH_HL=m
18875 -CONFIG_IP6_NF_MATCH_OWNER=m
18876 -CONFIG_IP6_NF_MATCH_IPV6HEADER=m
18877 -CONFIG_IP6_NF_MATCH_AH=m
18878 -CONFIG_IP6_NF_MATCH_MH=m
18879 -CONFIG_IP6_NF_MATCH_EUI64=m
18880 -CONFIG_IP6_NF_FILTER=m
18881 -CONFIG_IP6_NF_TARGET_LOG=m
18882 -CONFIG_IP6_NF_TARGET_REJECT=m
18883 -CONFIG_IP6_NF_MANGLE=m
18884 -CONFIG_IP6_NF_TARGET_HL=m
18885 -CONFIG_IP6_NF_RAW=m
18886 -
18887 -#
18888 -# DCCP Configuration (EXPERIMENTAL)
18889 -#
18890 -# CONFIG_IP_DCCP is not set
18891 -
18892 -#
18893 -# SCTP Configuration (EXPERIMENTAL)
18894 -#
18895 -CONFIG_IP_SCTP=m
18896 -# CONFIG_SCTP_DBG_MSG is not set
18897 -# CONFIG_SCTP_DBG_OBJCNT is not set
18898 -# CONFIG_SCTP_HMAC_NONE is not set
18899 -# CONFIG_SCTP_HMAC_SHA1 is not set
18900 -CONFIG_SCTP_HMAC_MD5=y
18901 -
18902 -#
18903 -# TIPC Configuration (EXPERIMENTAL)
18904 -#
18905 -# CONFIG_TIPC is not set
18906 -# CONFIG_ATM is not set
18907 -# CONFIG_BRIDGE is not set
18908 -# CONFIG_VLAN_8021Q is not set
18909 -# CONFIG_DECNET is not set
18910 -# CONFIG_LLC2 is not set
18911 -# CONFIG_IPX is not set
18912 -# CONFIG_ATALK is not set
18913 -# CONFIG_X25 is not set
18914 -# CONFIG_LAPB is not set
18915 -# CONFIG_ECONET is not set
18916 -# CONFIG_WAN_ROUTER is not set
18917 -
18918 -#
18919 -# QoS and/or fair queueing
18920 -#
18921 -# CONFIG_NET_SCHED is not set
18922 -CONFIG_NET_CLS_ROUTE=y
18923 -
18924 -#
18925 -# Network testing
18926 -#
18927 -# CONFIG_NET_PKTGEN is not set
18928 -# CONFIG_HAMRADIO is not set
18929 -# CONFIG_IRDA is not set
18930 -# CONFIG_BT is not set
18931 -# CONFIG_IEEE80211 is not set
18932 -CONFIG_FIB_RULES=y
18933 -
18934 -#
18935 -# Device Drivers
18936 -#
18937 -
18938 -#
18939 -# Generic Driver Options
18940 -#
18941 -CONFIG_STANDALONE=y
18942 -CONFIG_PREVENT_FIRMWARE_BUILD=y
18943 -CONFIG_FW_LOADER=m
18944 -# CONFIG_SYS_HYPERVISOR is not set
18945 -
18946 -#
18947 -# Connector - unified userspace <-> kernelspace linker
18948 -#
18949 -# CONFIG_CONNECTOR is not set
18950 -
18951 -#
18952 -# Memory Technology Devices (MTD)
18953 -#
18954 -CONFIG_MTD=y
18955 -# CONFIG_MTD_DEBUG is not set
18956 -# CONFIG_MTD_CONCAT is not set
18957 -CONFIG_MTD_PARTITIONS=y
18958 -# CONFIG_MTD_REDBOOT_PARTS is not set
18959 -CONFIG_MTD_CMDLINE_PARTS=y
18960 -
18961 -#
18962 -# User Modules And Translation Layers
18963 -#
18964 -CONFIG_MTD_CHAR=y
18965 -CONFIG_MTD_BLKDEVS=y
18966 -CONFIG_MTD_BLOCK=y
18967 -# CONFIG_FTL is not set
18968 -# CONFIG_NFTL is not set
18969 -# CONFIG_INFTL is not set
18970 -# CONFIG_RFD_FTL is not set
18971 -# CONFIG_SSFDC is not set
18972 -
18973 -#
18974 -# RAM/ROM/Flash chip drivers
18975 -#
18976 -CONFIG_MTD_CFI=y
18977 -# CONFIG_MTD_JEDECPROBE is not set
18978 -CONFIG_MTD_GEN_PROBE=y
18979 -# CONFIG_MTD_CFI_ADV_OPTIONS is not set
18980 -CONFIG_MTD_MAP_BANK_WIDTH_1=y
18981 -CONFIG_MTD_MAP_BANK_WIDTH_2=y
18982 -CONFIG_MTD_MAP_BANK_WIDTH_4=y
18983 -# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
18984 -# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
18985 -# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
18986 -CONFIG_MTD_CFI_I1=y
18987 -CONFIG_MTD_CFI_I2=y
18988 -# CONFIG_MTD_CFI_I4 is not set
18989 -# CONFIG_MTD_CFI_I8 is not set
18990 -# CONFIG_MTD_CFI_INTELEXT is not set
18991 -CONFIG_MTD_CFI_AMDSTD=y
18992 -# CONFIG_MTD_CFI_STAA is not set
18993 -CONFIG_MTD_CFI_UTIL=y
18994 -# CONFIG_MTD_RAM is not set
18995 -# CONFIG_MTD_ROM is not set
18996 -# CONFIG_MTD_ABSENT is not set
18997 -# CONFIG_MTD_OBSOLETE_CHIPS is not set
18998 -
18999 -#
19000 -# Mapping drivers for chip access
19001 -#
19002 -# CONFIG_MTD_COMPLEX_MAPPINGS is not set
19003 -CONFIG_MTD_PHYSMAP=y
19004 -CONFIG_MTD_PHYSMAP_START=0x0
19005 -CONFIG_MTD_PHYSMAP_LEN=0x0
19006 -CONFIG_MTD_PHYSMAP_BANKWIDTH=0
19007 -# CONFIG_MTD_PLATRAM is not set
19008 -
19009 -#
19010 -# Self-contained MTD device drivers
19011 -#
19012 -# CONFIG_MTD_PMC551 is not set
19013 -# CONFIG_MTD_SLRAM is not set
19014 -# CONFIG_MTD_PHRAM is not set
19015 -# CONFIG_MTD_MTDRAM is not set
19016 -# CONFIG_MTD_BLOCK2MTD is not set
19017 -
19018 -#
19019 -# Disk-On-Chip Device Drivers
19020 -#
19021 -# CONFIG_MTD_DOC2000 is not set
19022 -# CONFIG_MTD_DOC2001 is not set
19023 -# CONFIG_MTD_DOC2001PLUS is not set
19024 -
19025 -#
19026 -# NAND Flash Device Drivers
19027 -#
19028 -# CONFIG_MTD_NAND is not set
19029 -
19030 -#
19031 -# OneNAND Flash Device Drivers
19032 -#
19033 -# CONFIG_MTD_ONENAND is not set
19034 -
19035 -#
19036 -# Parallel port support
19037 -#
19038 -# CONFIG_PARPORT is not set
19039 -
19040 -#
19041 -# Plug and Play support
19042 -#
19043 -# CONFIG_PNPACPI is not set
19044 -
19045 -#
19046 -# Block devices
19047 -#
19048 -# CONFIG_BLK_CPQ_DA is not set
19049 -# CONFIG_BLK_CPQ_CISS_DA is not set
19050 -# CONFIG_BLK_DEV_DAC960 is not set
19051 -# CONFIG_BLK_DEV_UMEM is not set
19052 -# CONFIG_BLK_DEV_COW_COMMON is not set
19053 -CONFIG_BLK_DEV_LOOP=m
19054 -CONFIG_BLK_DEV_CRYPTOLOOP=m
19055 -# CONFIG_BLK_DEV_NBD is not set
19056 -# CONFIG_BLK_DEV_SX8 is not set
19057 -# CONFIG_BLK_DEV_RAM is not set
19058 -# CONFIG_BLK_DEV_INITRD is not set
19059 -# CONFIG_CDROM_PKTCDVD is not set
19060 -# CONFIG_ATA_OVER_ETH is not set
19061 -
19062 -#
19063 -# Misc devices
19064 -#
19065 -CONFIG_SGI_IOC4=m
19066 -# CONFIG_TIFM_CORE is not set
19067 -
19068 -#
19069 -# ATA/ATAPI/MFM/RLL support
19070 -#
19071 -# CONFIG_IDE is not set
19072 -
19073 -#
19074 -# SCSI device support
19075 -#
19076 -# CONFIG_RAID_ATTRS is not set
19077 -CONFIG_SCSI=m
19078 -CONFIG_SCSI_TGT=m
19079 -# CONFIG_SCSI_NETLINK is not set
19080 -# CONFIG_SCSI_PROC_FS is not set
19081 -
19082 -#
19083 -# SCSI support type (disk, tape, CD-ROM)
19084 -#
19085 -CONFIG_BLK_DEV_SD=m
19086 -# CONFIG_CHR_DEV_ST is not set
19087 -# CONFIG_CHR_DEV_OSST is not set
19088 -# CONFIG_BLK_DEV_SR is not set
19089 -CONFIG_CHR_DEV_SG=m
19090 -# CONFIG_CHR_DEV_SCH is not set
19091 -
19092 -#
19093 -# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
19094 -#
19095 -# CONFIG_SCSI_MULTI_LUN is not set
19096 -# CONFIG_SCSI_CONSTANTS is not set
19097 -# CONFIG_SCSI_LOGGING is not set
19098 -CONFIG_SCSI_SCAN_ASYNC=y
19099 -
19100 -#
19101 -# SCSI Transports
19102 -#
19103 -# CONFIG_SCSI_SPI_ATTRS is not set
19104 -# CONFIG_SCSI_FC_ATTRS is not set
19105 -# CONFIG_SCSI_ISCSI_ATTRS is not set
19106 -CONFIG_SCSI_SAS_ATTRS=m
19107 -CONFIG_SCSI_SAS_LIBSAS=m
19108 -# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set
19109 -
19110 -#
19111 -# SCSI low-level drivers
19112 -#
19113 -# CONFIG_ISCSI_TCP is not set
19114 -# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
19115 -# CONFIG_SCSI_3W_9XXX is not set
19116 -# CONFIG_SCSI_ACARD is not set
19117 -# CONFIG_SCSI_AACRAID is not set
19118 -# CONFIG_SCSI_AIC7XXX is not set
19119 -# CONFIG_SCSI_AIC7XXX_OLD is not set
19120 -# CONFIG_SCSI_AIC79XX is not set
19121 -CONFIG_SCSI_AIC94XX=m
19122 -# CONFIG_AIC94XX_DEBUG is not set
19123 -# CONFIG_SCSI_DPT_I2O is not set
19124 -# CONFIG_SCSI_ARCMSR is not set
19125 -# CONFIG_MEGARAID_NEWGEN is not set
19126 -# CONFIG_MEGARAID_LEGACY is not set
19127 -# CONFIG_MEGARAID_SAS is not set
19128 -# CONFIG_SCSI_HPTIOP is not set
19129 -# CONFIG_SCSI_DMX3191D is not set
19130 -# CONFIG_SCSI_FUTURE_DOMAIN is not set
19131 -# CONFIG_SCSI_IPS is not set
19132 -# CONFIG_SCSI_INITIO is not set
19133 -# CONFIG_SCSI_INIA100 is not set
19134 -# CONFIG_SCSI_STEX is not set
19135 -# CONFIG_SCSI_SYM53C8XX_2 is not set
19136 -# CONFIG_SCSI_QLOGIC_1280 is not set
19137 -# CONFIG_SCSI_QLA_FC is not set
19138 -# CONFIG_SCSI_QLA_ISCSI is not set
19139 -# CONFIG_SCSI_LPFC is not set
19140 -# CONFIG_SCSI_DC395x is not set
19141 -# CONFIG_SCSI_DC390T is not set
19142 -# CONFIG_SCSI_NSP32 is not set
19143 -# CONFIG_SCSI_DEBUG is not set
19144 -# CONFIG_SCSI_SRP is not set
19145 -
19146 -#
19147 -# Serial ATA (prod) and Parallel ATA (experimental) drivers
19148 -#
19149 -# CONFIG_ATA is not set
19150 -
19151 -#
19152 -# Multi-device support (RAID and LVM)
19153 -#
19154 -# CONFIG_MD is not set
19155 -
19156 -#
19157 -# Fusion MPT device support
19158 -#
19159 -# CONFIG_FUSION is not set
19160 -# CONFIG_FUSION_SPI is not set
19161 -# CONFIG_FUSION_FC is not set
19162 -# CONFIG_FUSION_SAS is not set
19163 -
19164 -#
19165 -# IEEE 1394 (FireWire) support
19166 -#
19167 -# CONFIG_IEEE1394 is not set
19168 -
19169 -#
19170 -# I2O device support
19171 -#
19172 -# CONFIG_I2O is not set
19173 -
19174 -#
19175 -# Network device support
19176 -#
19177 -CONFIG_NETDEVICES=y
19178 -# CONFIG_DUMMY is not set
19179 -# CONFIG_BONDING is not set
19180 -# CONFIG_EQUALIZER is not set
19181 -CONFIG_TUN=m
19182 -
19183 -#
19184 -# ARCnet devices
19185 -#
19186 -# CONFIG_ARCNET is not set
19187 -
19188 -#
19189 -# PHY device support
19190 -#
19191 -# CONFIG_PHYLIB is not set
19192 -
19193 -#
19194 -# Ethernet (10 or 100Mbit)
19195 -#
19196 -CONFIG_NET_ETHERNET=y
19197 -CONFIG_MII=y
19198 -# CONFIG_HAPPYMEAL is not set
19199 -# CONFIG_SUNGEM is not set
19200 -# CONFIG_CASSINI is not set
19201 -# CONFIG_NET_VENDOR_3COM is not set
19202 -# CONFIG_DM9000 is not set
19203 -
19204 -#
19205 -# Tulip family network device support
19206 -#
19207 -# CONFIG_NET_TULIP is not set
19208 -# CONFIG_HP100 is not set
19209 -CONFIG_NET_PCI=y
19210 -# CONFIG_PCNET32 is not set
19211 -# CONFIG_AMD8111_ETH is not set
19212 -# CONFIG_ADAPTEC_STARFIRE is not set
19213 -# CONFIG_B44 is not set
19214 -# CONFIG_FORCEDETH is not set
19215 -# CONFIG_DGRS is not set
19216 -# CONFIG_EEPRO100 is not set
19217 -# CONFIG_E100 is not set
19218 -# CONFIG_FEALNX is not set
19219 -CONFIG_NATSEMI=y
19220 -# CONFIG_NE2K_PCI is not set
19221 -# CONFIG_8139CP is not set
19222 -# CONFIG_8139TOO is not set
19223 -# CONFIG_SIS900 is not set
19224 -# CONFIG_EPIC100 is not set
19225 -# CONFIG_SUNDANCE is not set
19226 -# CONFIG_TLAN is not set
19227 -# CONFIG_VIA_RHINE is not set
19228 -# CONFIG_SC92031 is not set
19229 -
19230 -#
19231 -# Ethernet (1000 Mbit)
19232 -#
19233 -# CONFIG_ACENIC is not set
19234 -# CONFIG_DL2K is not set
19235 -# CONFIG_E1000 is not set
19236 -# CONFIG_NS83820 is not set
19237 -# CONFIG_HAMACHI is not set
19238 -# CONFIG_YELLOWFIN is not set
19239 -# CONFIG_R8169 is not set
19240 -# CONFIG_SIS190 is not set
19241 -# CONFIG_SKGE is not set
19242 -# CONFIG_SKY2 is not set
19243 -# CONFIG_SK98LIN is not set
19244 -# CONFIG_VIA_VELOCITY is not set
19245 -# CONFIG_TIGON3 is not set
19246 -# CONFIG_BNX2 is not set
19247 -CONFIG_QLA3XXX=m
19248 -# CONFIG_ATL1 is not set
19249 -
19250 -#
19251 -# Ethernet (10000 Mbit)
19252 -#
19253 -# CONFIG_CHELSIO_T1 is not set
19254 -CONFIG_CHELSIO_T3=m
19255 -# CONFIG_IXGB is not set
19256 -# CONFIG_S2IO is not set
19257 -# CONFIG_MYRI10GE is not set
19258 -CONFIG_NETXEN_NIC=m
19259 -
19260 -#
19261 -# Token Ring devices
19262 -#
19263 -# CONFIG_TR is not set
19264 -
19265 -#
19266 -# Wireless LAN (non-hamradio)
19267 -#
19268 -# CONFIG_NET_RADIO is not set
19269 -
19270 -#
19271 -# Wan interfaces
19272 -#
19273 -# CONFIG_WAN is not set
19274 -# CONFIG_FDDI is not set
19275 -# CONFIG_HIPPI is not set
19276 -CONFIG_PPP=m
19277 -# CONFIG_PPP_MULTILINK is not set
19278 -# CONFIG_PPP_FILTER is not set
19279 -CONFIG_PPP_ASYNC=m
19280 -CONFIG_PPP_SYNC_TTY=m
19281 -CONFIG_PPP_DEFLATE=m
19282 -# CONFIG_PPP_BSDCOMP is not set
19283 -# CONFIG_PPP_MPPE is not set
19284 -# CONFIG_PPPOE is not set
19285 -# CONFIG_SLIP is not set
19286 -CONFIG_SLHC=m
19287 -# CONFIG_NET_FC is not set
19288 -# CONFIG_SHAPER is not set
19289 -# CONFIG_NETCONSOLE is not set
19290 -# CONFIG_NETPOLL is not set
19291 -# CONFIG_NET_POLL_CONTROLLER is not set
19292 -
19293 -#
19294 -# ISDN subsystem
19295 -#
19296 -# CONFIG_ISDN is not set
19297 -
19298 -#
19299 -# Telephony Support
19300 -#
19301 -# CONFIG_PHONE is not set
19302 -
19303 -#
19304 -# Input device support
19305 -#
19306 -CONFIG_INPUT=y
19307 -# CONFIG_INPUT_FF_MEMLESS is not set
19308 -
19309 -#
19310 -# Userland interfaces
19311 -#
19312 -# CONFIG_INPUT_MOUSEDEV is not set
19313 -# CONFIG_INPUT_JOYDEV is not set
19314 -# CONFIG_INPUT_TSDEV is not set
19315 -CONFIG_INPUT_EVDEV=m
19316 -# CONFIG_INPUT_EVBUG is not set
19317 -
19318 -#
19319 -# Input Device Drivers
19320 -#
19321 -# CONFIG_INPUT_KEYBOARD is not set
19322 -# CONFIG_INPUT_MOUSE is not set
19323 -# CONFIG_INPUT_JOYSTICK is not set
19324 -# CONFIG_INPUT_TOUCHSCREEN is not set
19325 -# CONFIG_INPUT_MISC is not set
19326 -
19327 -#
19328 -# Hardware I/O ports
19329 -#
19330 -# CONFIG_SERIO is not set
19331 -# CONFIG_GAMEPORT is not set
19332 -
19333 -#
19334 -# Character devices
19335 -#
19336 -# CONFIG_VT is not set
19337 -# CONFIG_SERIAL_NONSTANDARD is not set
19338 -
19339 -#
19340 -# Serial drivers
19341 -#
19342 -CONFIG_SERIAL_8250=y
19343 -CONFIG_SERIAL_8250_CONSOLE=y
19344 -CONFIG_SERIAL_8250_PCI=y
19345 -CONFIG_SERIAL_8250_NR_UARTS=4
19346 -CONFIG_SERIAL_8250_RUNTIME_UARTS=4
19347 -# CONFIG_SERIAL_8250_EXTENDED is not set
19348 -
19349 -#
19350 -# Non-8250 serial port support
19351 -#
19352 -CONFIG_SERIAL_CORE=y
19353 -CONFIG_SERIAL_CORE_CONSOLE=y
19354 -# CONFIG_SERIAL_JSM is not set
19355 -CONFIG_UNIX98_PTYS=y
19356 -CONFIG_LEGACY_PTYS=y
19357 -CONFIG_LEGACY_PTY_COUNT=256
19358 -
19359 -#
19360 -# IPMI
19361 -#
19362 -# CONFIG_IPMI_HANDLER is not set
19363 -
19364 -#
19365 -# Watchdog Cards
19366 -#
19367 -# CONFIG_WATCHDOG is not set
19368 -# CONFIG_HW_RANDOM is not set
19369 -CONFIG_RTC=m
19370 -# CONFIG_GEN_RTC is not set
19371 -# CONFIG_DTLK is not set
19372 -# CONFIG_R3964 is not set
19373 -# CONFIG_APPLICOM is not set
19374 -# CONFIG_DRM is not set
19375 -# CONFIG_RAW_DRIVER is not set
19376 -
19377 -#
19378 -# TPM devices
19379 -#
19380 -# CONFIG_TCG_TPM is not set
19381 -
19382 -#
19383 -# I2C support
19384 -#
19385 -CONFIG_I2C=y
19386 -CONFIG_I2C_CHARDEV=y
19387 -
19388 -#
19389 -# I2C Algorithms
19390 -#
19391 -# CONFIG_I2C_ALGOBIT is not set
19392 -# CONFIG_I2C_ALGOPCF is not set
19393 -# CONFIG_I2C_ALGOPCA is not set
19394 -
19395 -#
19396 -# I2C Hardware Bus support
19397 -#
19398 -# CONFIG_I2C_ALI1535 is not set
19399 -# CONFIG_I2C_ALI1563 is not set
19400 -# CONFIG_I2C_ALI15X3 is not set
19401 -# CONFIG_I2C_AMD756 is not set
19402 -# CONFIG_I2C_AMD8111 is not set
19403 -# CONFIG_I2C_I801 is not set
19404 -# CONFIG_I2C_I810 is not set
19405 -# CONFIG_I2C_PIIX4 is not set
19406 -# CONFIG_I2C_NFORCE2 is not set
19407 -# CONFIG_I2C_OCORES is not set
19408 -# CONFIG_I2C_PARPORT_LIGHT is not set
19409 -# CONFIG_I2C_PASEMI is not set
19410 -# CONFIG_I2C_PROSAVAGE is not set
19411 -# CONFIG_I2C_SAVAGE4 is not set
19412 -# CONFIG_I2C_SIS5595 is not set
19413 -# CONFIG_I2C_SIS630 is not set
19414 -# CONFIG_I2C_SIS96X is not set
19415 -# CONFIG_I2C_STUB is not set
19416 -# CONFIG_I2C_VIA is not set
19417 -# CONFIG_I2C_VIAPRO is not set
19418 -# CONFIG_I2C_VOODOO3 is not set
19419 -# CONFIG_I2C_PCA_ISA is not set
19420 -
19421 -#
19422 -# Miscellaneous I2C Chip support
19423 -#
19424 -# CONFIG_SENSORS_DS1337 is not set
19425 -# CONFIG_SENSORS_DS1374 is not set
19426 -# CONFIG_EEPROM_LEGACY is not set
19427 -# CONFIG_SENSORS_PCF8574 is not set
19428 -# CONFIG_SENSORS_PCA9539 is not set
19429 -# CONFIG_SENSORS_PCF8591 is not set
19430 -# CONFIG_SENSORS_MAX6875 is not set
19431 -CONFIG_I2C_DEBUG_CORE=y
19432 -# CONFIG_I2C_DEBUG_ALGO is not set
19433 -CONFIG_I2C_DEBUG_BUS=y
19434 -# CONFIG_I2C_DEBUG_CHIP is not set
19435 -
19436 -#
19437 -# SPI support
19438 -#
19439 -# CONFIG_SPI is not set
19440 -# CONFIG_SPI_MASTER is not set
19441 -
19442 -#
19443 -# Dallas's 1-wire bus
19444 -#
19445 -# CONFIG_W1 is not set
19446 -
19447 -#
19448 -# Hardware Monitoring support
19449 -#
19450 -CONFIG_HWMON=y
19451 -# CONFIG_HWMON_VID is not set
19452 -# CONFIG_SENSORS_ABITUGURU is not set
19453 -# CONFIG_SENSORS_ADM1021 is not set
19454 -# CONFIG_SENSORS_ADM1025 is not set
19455 -# CONFIG_SENSORS_ADM1026 is not set
19456 -# CONFIG_SENSORS_ADM1029 is not set
19457 -# CONFIG_SENSORS_ADM1031 is not set
19458 -# CONFIG_SENSORS_ADM9240 is not set
19459 -# CONFIG_SENSORS_ASB100 is not set
19460 -# CONFIG_SENSORS_ATXP1 is not set
19461 -# CONFIG_SENSORS_DS1621 is not set
19462 -# CONFIG_SENSORS_F71805F is not set
19463 -# CONFIG_SENSORS_FSCHER is not set
19464 -# CONFIG_SENSORS_FSCPOS is not set
19465 -# CONFIG_SENSORS_GL518SM is not set
19466 -# CONFIG_SENSORS_GL520SM is not set
19467 -# CONFIG_SENSORS_IT87 is not set
19468 -# CONFIG_SENSORS_LM63 is not set
19469 -# CONFIG_SENSORS_LM75 is not set
19470 -# CONFIG_SENSORS_LM77 is not set
19471 -# CONFIG_SENSORS_LM78 is not set
19472 -# CONFIG_SENSORS_LM80 is not set
19473 -# CONFIG_SENSORS_LM83 is not set
19474 -# CONFIG_SENSORS_LM85 is not set
19475 -# CONFIG_SENSORS_LM87 is not set
19476 -# CONFIG_SENSORS_LM90 is not set
19477 -# CONFIG_SENSORS_LM92 is not set
19478 -# CONFIG_SENSORS_MAX1619 is not set
19479 -# CONFIG_SENSORS_PC87360 is not set
19480 -# CONFIG_SENSORS_PC87427 is not set
19481 -# CONFIG_SENSORS_SIS5595 is not set
19482 -# CONFIG_SENSORS_SMSC47M1 is not set
19483 -# CONFIG_SENSORS_SMSC47M192 is not set
19484 -# CONFIG_SENSORS_SMSC47B397 is not set
19485 -# CONFIG_SENSORS_VIA686A is not set
19486 -# CONFIG_SENSORS_VT1211 is not set
19487 -# CONFIG_SENSORS_VT8231 is not set
19488 -# CONFIG_SENSORS_W83781D is not set
19489 -# CONFIG_SENSORS_W83791D is not set
19490 -# CONFIG_SENSORS_W83792D is not set
19491 -# CONFIG_SENSORS_W83793 is not set
19492 -# CONFIG_SENSORS_W83L785TS is not set
19493 -# CONFIG_SENSORS_W83627HF is not set
19494 -# CONFIG_SENSORS_W83627EHF is not set
19495 -# CONFIG_HWMON_DEBUG_CHIP is not set
19496 -
19497 -#
19498 -# Multimedia devices
19499 -#
19500 -# CONFIG_VIDEO_DEV is not set
19501 -
19502 -#
19503 -# Digital Video Broadcasting Devices
19504 -#
19505 -# CONFIG_DVB is not set
19506 -
19507 -#
19508 -# Graphics support
19509 -#
19510 -# CONFIG_FIRMWARE_EDID is not set
19511 -# CONFIG_FB is not set
19512 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
19513 -
19514 -#
19515 -# Sound
19516 -#
19517 -# CONFIG_SOUND is not set
19518 -
19519 -#
19520 -# HID Devices
19521 -#
19522 -# CONFIG_HID is not set
19523 -
19524 -#
19525 -# USB support
19526 -#
19527 -CONFIG_USB_ARCH_HAS_HCD=y
19528 -CONFIG_USB_ARCH_HAS_OHCI=y
19529 -CONFIG_USB_ARCH_HAS_EHCI=y
19530 -# CONFIG_USB is not set
19531 -
19532 -#
19533 -# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
19534 -#
19535 -
19536 -#
19537 -# USB Gadget Support
19538 -#
19539 -# CONFIG_USB_GADGET is not set
19540 -
19541 -#
19542 -# MMC/SD Card support
19543 -#
19544 -# CONFIG_MMC is not set
19545 -
19546 -#
19547 -# LED devices
19548 -#
19549 -# CONFIG_NEW_LEDS is not set
19550 -
19551 -#
19552 -# LED drivers
19553 -#
19554 -
19555 -#
19556 -# LED Triggers
19557 -#
19558 -
19559 -#
19560 -# InfiniBand support
19561 -#
19562 -# CONFIG_INFINIBAND is not set
19563 -
19564 -#
19565 -# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
19566 -#
19567 -
19568 -#
19569 -# Real Time Clock
19570 -#
19571 -# CONFIG_RTC_CLASS is not set
19572 -
19573 -#
19574 -# DMA Engine support
19575 -#
19576 -# CONFIG_DMA_ENGINE is not set
19577 -
19578 -#
19579 -# DMA Clients
19580 -#
19581 -
19582 -#
19583 -# DMA Devices
19584 -#
19585 -
19586 -#
19587 -# Auxiliary Display support
19588 -#
19589 -
19590 -#
19591 -# Virtualization
19592 -#
19593 -
19594 -#
19595 -# File systems
19596 -#
19597 -CONFIG_EXT2_FS=y
19598 -CONFIG_EXT2_FS_XATTR=y
19599 -CONFIG_EXT2_FS_POSIX_ACL=y
19600 -CONFIG_EXT2_FS_SECURITY=y
19601 -# CONFIG_EXT2_FS_XIP is not set
19602 -CONFIG_EXT3_FS=m
19603 -CONFIG_EXT3_FS_XATTR=y
19604 -# CONFIG_EXT3_FS_POSIX_ACL is not set
19605 -# CONFIG_EXT3_FS_SECURITY is not set
19606 -# CONFIG_EXT4DEV_FS is not set
19607 -CONFIG_JBD=m
19608 -# CONFIG_JBD_DEBUG is not set
19609 -CONFIG_FS_MBCACHE=y
19610 -# CONFIG_REISERFS_FS is not set
19611 -# CONFIG_JFS_FS is not set
19612 -CONFIG_FS_POSIX_ACL=y
19613 -CONFIG_XFS_FS=m
19614 -# CONFIG_XFS_QUOTA is not set
19615 -# CONFIG_XFS_SECURITY is not set
19616 -# CONFIG_XFS_POSIX_ACL is not set
19617 -# CONFIG_XFS_RT is not set
19618 -# CONFIG_GFS2_FS is not set
19619 -# CONFIG_OCFS2_FS is not set
19620 -# CONFIG_MINIX_FS is not set
19621 -# CONFIG_ROMFS_FS is not set
19622 -CONFIG_INOTIFY=y
19623 -CONFIG_INOTIFY_USER=y
19624 -# CONFIG_QUOTA is not set
19625 -# CONFIG_DNOTIFY is not set
19626 -# CONFIG_AUTOFS_FS is not set
19627 -CONFIG_AUTOFS4_FS=m
19628 -# CONFIG_FUSE_FS is not set
19629 -CONFIG_GENERIC_ACL=y
19630 -
19631 -#
19632 -# CD-ROM/DVD Filesystems
19633 -#
19634 -# CONFIG_ISO9660_FS is not set
19635 -# CONFIG_UDF_FS is not set
19636 -
19637 -#
19638 -# DOS/FAT/NT Filesystems
19639 -#
19640 -CONFIG_FAT_FS=y
19641 -CONFIG_MSDOS_FS=y
19642 -CONFIG_VFAT_FS=y
19643 -CONFIG_FAT_DEFAULT_CODEPAGE=437
19644 -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
19645 -CONFIG_NTFS_FS=m
19646 -# CONFIG_NTFS_DEBUG is not set
19647 -# CONFIG_NTFS_RW is not set
19648 -
19649 -#
19650 -# Pseudo filesystems
19651 -#
19652 -CONFIG_PROC_FS=y
19653 -CONFIG_PROC_KCORE=y
19654 -CONFIG_PROC_SYSCTL=y
19655 -CONFIG_SYSFS=y
19656 -CONFIG_TMPFS=y
19657 -CONFIG_TMPFS_POSIX_ACL=y
19658 -# CONFIG_HUGETLB_PAGE is not set
19659 -CONFIG_RAMFS=y
19660 -CONFIG_CONFIGFS_FS=m
19661 -
19662 -#
19663 -# Miscellaneous filesystems
19664 -#
19665 -# CONFIG_ADFS_FS is not set
19666 -# CONFIG_AFFS_FS is not set
19667 -# CONFIG_HFS_FS is not set
19668 -# CONFIG_HFSPLUS_FS is not set
19669 -# CONFIG_BEFS_FS is not set
19670 -# CONFIG_BFS_FS is not set
19671 -# CONFIG_EFS_FS is not set
19672 -CONFIG_JFFS2_FS=y
19673 -CONFIG_JFFS2_FS_DEBUG=0
19674 -CONFIG_JFFS2_FS_WRITEBUFFER=y
19675 -# CONFIG_JFFS2_SUMMARY is not set
19676 -# CONFIG_JFFS2_FS_XATTR is not set
19677 -CONFIG_JFFS2_COMPRESSION_OPTIONS=y
19678 -CONFIG_JFFS2_ZLIB=y
19679 -CONFIG_JFFS2_RTIME=y
19680 -# CONFIG_JFFS2_RUBIN is not set
19681 -# CONFIG_JFFS2_CMODE_NONE is not set
19682 -CONFIG_JFFS2_CMODE_PRIORITY=y
19683 -# CONFIG_JFFS2_CMODE_SIZE is not set
19684 -CONFIG_CRAMFS=y
19685 -# CONFIG_VXFS_FS is not set
19686 -# CONFIG_HPFS_FS is not set
19687 -# CONFIG_QNX4FS_FS is not set
19688 -# CONFIG_SYSV_FS is not set
19689 -# CONFIG_UFS_FS is not set
19690 -
19691 -#
19692 -# Network File Systems
19693 -#
19694 -CONFIG_NFS_FS=y
19695 -CONFIG_NFS_V3=y
19696 -# CONFIG_NFS_V3_ACL is not set
19697 -CONFIG_NFS_V4=y
19698 -CONFIG_NFS_DIRECTIO=y
19699 -CONFIG_NFSD=m
19700 -CONFIG_NFSD_V3=y
19701 -# CONFIG_NFSD_V3_ACL is not set
19702 -# CONFIG_NFSD_V4 is not set
19703 -CONFIG_NFSD_TCP=y
19704 -CONFIG_ROOT_NFS=y
19705 -CONFIG_LOCKD=y
19706 -CONFIG_LOCKD_V4=y
19707 -CONFIG_EXPORTFS=m
19708 -CONFIG_NFS_COMMON=y
19709 -CONFIG_SUNRPC=y
19710 -CONFIG_SUNRPC_GSS=y
19711 -CONFIG_RPCSEC_GSS_KRB5=y
19712 -# CONFIG_RPCSEC_GSS_SPKM3 is not set
19713 -CONFIG_SMB_FS=m
19714 -# CONFIG_SMB_NLS_DEFAULT is not set
19715 -# CONFIG_CIFS is not set
19716 -# CONFIG_NCP_FS is not set
19717 -# CONFIG_CODA_FS is not set
19718 -# CONFIG_AFS_FS is not set
19719 -# CONFIG_9P_FS is not set
19720 -
19721 -#
19722 -# Partition Types
19723 -#
19724 -# CONFIG_PARTITION_ADVANCED is not set
19725 -CONFIG_MSDOS_PARTITION=y
19726 -
19727 -#
19728 -# Native Language Support
19729 -#
19730 -CONFIG_NLS=y
19731 -CONFIG_NLS_DEFAULT=""
19732 -CONFIG_NLS_CODEPAGE_437=m
19733 -# CONFIG_NLS_CODEPAGE_737 is not set
19734 -# CONFIG_NLS_CODEPAGE_775 is not set
19735 -# CONFIG_NLS_CODEPAGE_850 is not set
19736 -# CONFIG_NLS_CODEPAGE_852 is not set
19737 -# CONFIG_NLS_CODEPAGE_855 is not set
19738 -# CONFIG_NLS_CODEPAGE_857 is not set
19739 -# CONFIG_NLS_CODEPAGE_860 is not set
19740 -# CONFIG_NLS_CODEPAGE_861 is not set
19741 -# CONFIG_NLS_CODEPAGE_862 is not set
19742 -# CONFIG_NLS_CODEPAGE_863 is not set
19743 -# CONFIG_NLS_CODEPAGE_864 is not set
19744 -# CONFIG_NLS_CODEPAGE_865 is not set
19745 -# CONFIG_NLS_CODEPAGE_866 is not set
19746 -# CONFIG_NLS_CODEPAGE_869 is not set
19747 -# CONFIG_NLS_CODEPAGE_936 is not set
19748 -# CONFIG_NLS_CODEPAGE_950 is not set
19749 -# CONFIG_NLS_CODEPAGE_932 is not set
19750 -# CONFIG_NLS_CODEPAGE_949 is not set
19751 -# CONFIG_NLS_CODEPAGE_874 is not set
19752 -# CONFIG_NLS_ISO8859_8 is not set
19753 -# CONFIG_NLS_CODEPAGE_1250 is not set
19754 -# CONFIG_NLS_CODEPAGE_1251 is not set
19755 -CONFIG_NLS_ASCII=m
19756 -CONFIG_NLS_ISO8859_1=m
19757 -# CONFIG_NLS_ISO8859_2 is not set
19758 -# CONFIG_NLS_ISO8859_3 is not set
19759 -# CONFIG_NLS_ISO8859_4 is not set
19760 -# CONFIG_NLS_ISO8859_5 is not set
19761 -# CONFIG_NLS_ISO8859_6 is not set
19762 -# CONFIG_NLS_ISO8859_7 is not set
19763 -# CONFIG_NLS_ISO8859_9 is not set
19764 -# CONFIG_NLS_ISO8859_13 is not set
19765 -# CONFIG_NLS_ISO8859_14 is not set
19766 -# CONFIG_NLS_ISO8859_15 is not set
19767 -# CONFIG_NLS_KOI8_R is not set
19768 -# CONFIG_NLS_KOI8_U is not set
19769 -CONFIG_NLS_UTF8=m
19770 -
19771 -#
19772 -# Distributed Lock Manager
19773 -#
19774 -CONFIG_DLM=m
19775 -CONFIG_DLM_TCP=y
19776 -# CONFIG_DLM_SCTP is not set
19777 -# CONFIG_DLM_DEBUG is not set
19778 -
19779 -#
19780 -# Profiling support
19781 -#
19782 -# CONFIG_PROFILING is not set
19783 -
19784 -#
19785 -# Kernel hacking
19786 -#
19787 -CONFIG_TRACE_IRQFLAGS_SUPPORT=y
19788 -# CONFIG_PRINTK_TIME is not set
19789 -CONFIG_ENABLE_MUST_CHECK=y
19790 -# CONFIG_MAGIC_SYSRQ is not set
19791 -# CONFIG_UNUSED_SYMBOLS is not set
19792 -# CONFIG_DEBUG_FS is not set
19793 -# CONFIG_HEADERS_CHECK is not set
19794 -# CONFIG_DEBUG_KERNEL is not set
19795 -CONFIG_LOG_BUF_SHIFT=14
19796 -CONFIG_CROSSCOMPILE=y
19797 -CONFIG_CMDLINE="console=ttyS0,115200 mem=192m ip=bootp root=/dev/nfs rw"
19798 -
19799 -#
19800 -# Security options
19801 -#
19802 -# CONFIG_KEYS is not set
19803 -# CONFIG_SECURITY is not set
19804 -
19805 -#
19806 -# Cryptographic options
19807 -#
19808 -CONFIG_CRYPTO=y
19809 -CONFIG_CRYPTO_ALGAPI=y
19810 -CONFIG_CRYPTO_BLKCIPHER=y
19811 -CONFIG_CRYPTO_HASH=y
19812 -CONFIG_CRYPTO_MANAGER=y
19813 -CONFIG_CRYPTO_HMAC=y
19814 -CONFIG_CRYPTO_XCBC=m
19815 -# CONFIG_CRYPTO_NULL is not set
19816 -# CONFIG_CRYPTO_MD4 is not set
19817 -CONFIG_CRYPTO_MD5=y
19818 -# CONFIG_CRYPTO_SHA1 is not set
19819 -# CONFIG_CRYPTO_SHA256 is not set
19820 -# CONFIG_CRYPTO_SHA512 is not set
19821 -# CONFIG_CRYPTO_WP512 is not set
19822 -# CONFIG_CRYPTO_TGR192 is not set
19823 -CONFIG_CRYPTO_GF128MUL=m
19824 -CONFIG_CRYPTO_ECB=m
19825 -CONFIG_CRYPTO_CBC=y
19826 -CONFIG_CRYPTO_PCBC=m
19827 -CONFIG_CRYPTO_LRW=m
19828 -CONFIG_CRYPTO_DES=y
19829 -CONFIG_CRYPTO_FCRYPT=m
19830 -# CONFIG_CRYPTO_BLOWFISH is not set
19831 -# CONFIG_CRYPTO_TWOFISH is not set
19832 -# CONFIG_CRYPTO_SERPENT is not set
19833 -# CONFIG_CRYPTO_AES is not set
19834 -# CONFIG_CRYPTO_CAST5 is not set
19835 -# CONFIG_CRYPTO_CAST6 is not set
19836 -# CONFIG_CRYPTO_TEA is not set
19837 -# CONFIG_CRYPTO_ARC4 is not set
19838 -# CONFIG_CRYPTO_KHAZAD is not set
19839 -# CONFIG_CRYPTO_ANUBIS is not set
19840 -# CONFIG_CRYPTO_DEFLATE is not set
19841 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
19842 -# CONFIG_CRYPTO_CRC32C is not set
19843 -CONFIG_CRYPTO_CAMELLIA=m
19844 -# CONFIG_CRYPTO_TEST is not set
19845 -
19846 -#
19847 -# Hardware crypto devices
19848 -#
19849 -
19850 -#
19851 -# Library routines
19852 -#
19853 -CONFIG_BITREVERSE=y
19854 -CONFIG_CRC_CCITT=m
19855 -# CONFIG_CRC16 is not set
19856 -CONFIG_CRC32=y
19857 -# CONFIG_LIBCRC32C is not set
19858 -CONFIG_ZLIB_INFLATE=y
19859 -CONFIG_ZLIB_DEFLATE=y
19860 -CONFIG_TEXTSEARCH=y
19861 -CONFIG_TEXTSEARCH_KMP=m
19862 -CONFIG_TEXTSEARCH_BM=m
19863 -CONFIG_TEXTSEARCH_FSM=m
19864 -CONFIG_PLIST=y
19865 -CONFIG_HAS_IOMEM=y
19866 -CONFIG_HAS_IOPORT=y
19867 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/configs/rbtx49xx_defconfig linux-2.6.29-rc3.owrt/arch/mips/configs/rbtx49xx_defconfig
19868 --- linux-2.6.29.owrt/arch/mips/configs/rbtx49xx_defconfig 2009-05-10 22:04:40.000000000 +0200
19869 +++ linux-2.6.29-rc3.owrt/arch/mips/configs/rbtx49xx_defconfig 2009-05-10 23:48:28.000000000 +0200
19870 @@ -1,7 +1,7 @@
19871 #
19872 # Automatically generated make config: don't edit
19873 -# Linux kernel version: 2.6.29-rc7
19874 -# Wed Mar 4 23:08:06 2009
19875 +# Linux kernel version: 2.6.26-rc9
19876 +# Fri Jul 11 23:03:21 2008
19877 #
19878 CONFIG_MIPS=y
19879
19880 @@ -18,10 +18,8 @@
19881 # CONFIG_LEMOTE_FULONG is not set
19882 # CONFIG_MIPS_MALTA is not set
19883 # CONFIG_MIPS_SIM is not set
19884 -# CONFIG_MACH_EMMA is not set
19885 +# CONFIG_MARKEINS is not set
19886 # CONFIG_MACH_VR41XX is not set
19887 -# CONFIG_NXP_STB220 is not set
19888 -# CONFIG_NXP_STB225 is not set
19889 # CONFIG_PNX8550_JBS is not set
19890 # CONFIG_PNX8550_STB810 is not set
19891 # CONFIG_PMC_MSP is not set
19892 @@ -41,28 +39,20 @@
19893 # CONFIG_SNI_RM is not set
19894 # CONFIG_MACH_TX39XX is not set
19895 CONFIG_MACH_TX49XX=y
19896 -# CONFIG_MIKROTIK_RB532 is not set
19897 # CONFIG_WR_PPMC is not set
19898 -# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set
19899 -# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set
19900 -CONFIG_MACH_TXX9=y
19901 CONFIG_TOSHIBA_RBTX4927=y
19902 CONFIG_TOSHIBA_RBTX4938=y
19903 -CONFIG_TOSHIBA_RBTX4939=y
19904 CONFIG_SOC_TX4927=y
19905 CONFIG_SOC_TX4938=y
19906 -CONFIG_SOC_TX4939=y
19907 -CONFIG_TXX9_7SEGLED=y
19908 # CONFIG_TOSHIBA_FPCIB0 is not set
19909 CONFIG_PICMG_PCI_BACKPLANE_DEFAULT=y
19910
19911 #
19912 # Multiplex Pin Select
19913 #
19914 -# CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61 is not set
19915 +CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61=y
19916 # CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set
19917 # CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set
19918 -CONFIG_TOSHIBA_RBTX4938_MPLEX_KEEP=y
19919 CONFIG_PCI_TX4927=y
19920 CONFIG_RWSEM_GENERIC_SPINLOCK=y
19921 # CONFIG_ARCH_HAS_ILOG2_U32 is not set
19922 @@ -74,18 +64,14 @@
19923 CONFIG_GENERIC_CLOCKEVENTS=y
19924 CONFIG_GENERIC_TIME=y
19925 CONFIG_GENERIC_CMOS_UPDATE=y
19926 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
19927 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
19928 CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
19929 -CONFIG_CEVT_R4K_LIB=y
19930 CONFIG_CEVT_R4K=y
19931 CONFIG_CEVT_TXX9=y
19932 -CONFIG_CSRC_R4K_LIB=y
19933 CONFIG_CSRC_R4K=y
19934 CONFIG_GPIO_TXX9=y
19935 CONFIG_DMA_NONCOHERENT=y
19936 CONFIG_DMA_NEED_PCI_MAP_STATE=y
19937 -CONFIG_EARLY_PRINTK=y
19938 -CONFIG_SYS_HAS_EARLY_PRINTK=y
19939 # CONFIG_HOTPLUG_CPU is not set
19940 # CONFIG_NO_IOPORT is not set
19941 CONFIG_GENERIC_GPIO=y
19942 @@ -114,7 +100,6 @@
19943 CONFIG_CPU_TX49XX=y
19944 # CONFIG_CPU_R5000 is not set
19945 # CONFIG_CPU_R5432 is not set
19946 -# CONFIG_CPU_R5500 is not set
19947 # CONFIG_CPU_R6000 is not set
19948 # CONFIG_CPU_NEVADA is not set
19949 # CONFIG_CPU_R8000 is not set
19950 @@ -122,7 +107,6 @@
19951 # CONFIG_CPU_RM7000 is not set
19952 # CONFIG_CPU_RM9000 is not set
19953 # CONFIG_CPU_SB1 is not set
19954 -# CONFIG_CPU_CAVIUM_OCTEON is not set
19955 CONFIG_SYS_HAS_CPU_TX49XX=y
19956 CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
19957 CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
19958 @@ -150,12 +134,13 @@
19959 CONFIG_ARCH_POPULATES_NODE_MAP=y
19960 CONFIG_FLATMEM=y
19961 CONFIG_FLAT_NODE_MEM_MAP=y
19962 +# CONFIG_SPARSEMEM_STATIC is not set
19963 +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
19964 CONFIG_PAGEFLAGS_EXTENDED=y
19965 CONFIG_SPLIT_PTLOCK_CPUS=4
19966 -# CONFIG_PHYS_ADDR_T_64BIT is not set
19967 +# CONFIG_RESOURCES_64BIT is not set
19968 CONFIG_ZONE_DMA_FLAG=0
19969 CONFIG_VIRT_TO_BUS=y
19970 -CONFIG_UNEVICTABLE_LRU=y
19971 CONFIG_TICK_ONESHOT=y
19972 CONFIG_NO_HZ=y
19973 CONFIG_HIGH_RES_TIMERS=y
19974 @@ -191,15 +176,6 @@
19975 # CONFIG_BSD_PROCESS_ACCT is not set
19976 # CONFIG_TASKSTATS is not set
19977 # CONFIG_AUDIT is not set
19978 -
19979 -#
19980 -# RCU Subsystem
19981 -#
19982 -CONFIG_CLASSIC_RCU=y
19983 -# CONFIG_TREE_RCU is not set
19984 -# CONFIG_PREEMPT_RCU is not set
19985 -# CONFIG_TREE_RCU_TRACE is not set
19986 -# CONFIG_PREEMPT_RCU_TRACE is not set
19987 CONFIG_IKCONFIG=y
19988 CONFIG_IKCONFIG_PROC=y
19989 CONFIG_LOG_BUF_SHIFT=14
19990 @@ -214,6 +190,7 @@
19991 CONFIG_SYSCTL=y
19992 CONFIG_EMBEDDED=y
19993 CONFIG_SYSCTL_SYSCALL=y
19994 +CONFIG_SYSCTL_SYSCALL_CHECK=y
19995 CONFIG_KALLSYMS=y
19996 # CONFIG_KALLSYMS_EXTRA_PASS is not set
19997 # CONFIG_HOTPLUG is not set
19998 @@ -230,26 +207,30 @@
19999 CONFIG_TIMERFD=y
20000 CONFIG_EVENTFD=y
20001 CONFIG_SHMEM=y
20002 -CONFIG_AIO=y
20003 CONFIG_VM_EVENT_COUNTERS=y
20004 -CONFIG_PCI_QUIRKS=y
20005 CONFIG_SLAB=y
20006 # CONFIG_SLUB is not set
20007 # CONFIG_SLOB is not set
20008 # CONFIG_PROFILING is not set
20009 +# CONFIG_MARKERS is not set
20010 CONFIG_HAVE_OPROFILE=y
20011 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
20012 +# CONFIG_HAVE_KPROBES is not set
20013 +# CONFIG_HAVE_KRETPROBES is not set
20014 +# CONFIG_HAVE_DMA_ATTRS is not set
20015 +CONFIG_PROC_PAGE_MONITOR=y
20016 CONFIG_SLABINFO=y
20017 +# CONFIG_TINY_SHMEM is not set
20018 CONFIG_BASE_SMALL=0
20019 CONFIG_MODULES=y
20020 # CONFIG_MODULE_FORCE_LOAD is not set
20021 -CONFIG_MODULE_UNLOAD=y
20022 +# CONFIG_MODULE_UNLOAD is not set
20023 # CONFIG_MODVERSIONS is not set
20024 # CONFIG_MODULE_SRCVERSION_ALL is not set
20025 +CONFIG_KMOD=y
20026 CONFIG_BLOCK=y
20027 # CONFIG_LBD is not set
20028 # CONFIG_BLK_DEV_IO_TRACE is not set
20029 -# CONFIG_BLK_DEV_INTEGRITY is not set
20030 +# CONFIG_LSF is not set
20031
20032 #
20033 # IO Schedulers
20034 @@ -263,8 +244,7 @@
20035 # CONFIG_DEFAULT_CFQ is not set
20036 # CONFIG_DEFAULT_NOOP is not set
20037 CONFIG_DEFAULT_IOSCHED="anticipatory"
20038 -# CONFIG_PROBE_INITRD_HEADER is not set
20039 -# CONFIG_FREEZER is not set
20040 +CONFIG_CLASSIC_RCU=y
20041
20042 #
20043 # Bus options (PCI, PCMCIA, EISA, ISA, TC)
20044 @@ -274,15 +254,12 @@
20045 CONFIG_PCI_DOMAINS=y
20046 # CONFIG_ARCH_SUPPORTS_MSI is not set
20047 # CONFIG_PCI_LEGACY is not set
20048 -# CONFIG_PCI_STUB is not set
20049 CONFIG_MMU=y
20050
20051 #
20052 # Executable file formats
20053 #
20054 CONFIG_BINFMT_ELF=y
20055 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
20056 -# CONFIG_HAVE_AOUT is not set
20057 # CONFIG_BINFMT_MISC is not set
20058 CONFIG_TRAD_SIGNALS=y
20059
20060 @@ -291,12 +268,15 @@
20061 #
20062 CONFIG_ARCH_SUSPEND_POSSIBLE=y
20063 # CONFIG_PM is not set
20064 +
20065 +#
20066 +# Networking
20067 +#
20068 CONFIG_NET=y
20069
20070 #
20071 # Networking options
20072 #
20073 -CONFIG_COMPAT_NET_DEV_OPS=y
20074 CONFIG_PACKET=y
20075 # CONFIG_PACKET_MMAP is not set
20076 CONFIG_UNIX=y
20077 @@ -338,7 +318,6 @@
20078 # CONFIG_IPX is not set
20079 # CONFIG_ATALK is not set
20080 # CONFIG_NET_SCHED is not set
20081 -# CONFIG_DCB is not set
20082
20083 #
20084 # Network testing
20085 @@ -348,9 +327,14 @@
20086 # CONFIG_CAN is not set
20087 # CONFIG_IRDA is not set
20088 # CONFIG_BT is not set
20089 -# CONFIG_PHONET is not set
20090 -# CONFIG_WIRELESS is not set
20091 -# CONFIG_WIMAX is not set
20092 +
20093 +#
20094 +# Wireless
20095 +#
20096 +# CONFIG_CFG80211 is not set
20097 +# CONFIG_WIRELESS_EXT is not set
20098 +# CONFIG_MAC80211 is not set
20099 +# CONFIG_IEEE80211 is not set
20100 # CONFIG_RFKILL is not set
20101
20102 #
20103 @@ -364,90 +348,7 @@
20104 CONFIG_PREVENT_FIRMWARE_BUILD=y
20105 # CONFIG_SYS_HYPERVISOR is not set
20106 # CONFIG_CONNECTOR is not set
20107 -CONFIG_MTD=y
20108 -# CONFIG_MTD_DEBUG is not set
20109 -# CONFIG_MTD_CONCAT is not set
20110 -CONFIG_MTD_PARTITIONS=y
20111 -# CONFIG_MTD_TESTS is not set
20112 -# CONFIG_MTD_REDBOOT_PARTS is not set
20113 -CONFIG_MTD_CMDLINE_PARTS=y
20114 -# CONFIG_MTD_AR7_PARTS is not set
20115 -
20116 -#
20117 -# User Modules And Translation Layers
20118 -#
20119 -CONFIG_MTD_CHAR=y
20120 -# CONFIG_MTD_BLKDEVS is not set
20121 -# CONFIG_MTD_BLOCK is not set
20122 -# CONFIG_MTD_BLOCK_RO is not set
20123 -# CONFIG_FTL is not set
20124 -# CONFIG_NFTL is not set
20125 -# CONFIG_INFTL is not set
20126 -# CONFIG_RFD_FTL is not set
20127 -# CONFIG_SSFDC is not set
20128 -# CONFIG_MTD_OOPS is not set
20129 -
20130 -#
20131 -# RAM/ROM/Flash chip drivers
20132 -#
20133 -CONFIG_MTD_CFI=y
20134 -CONFIG_MTD_JEDECPROBE=y
20135 -CONFIG_MTD_GEN_PROBE=y
20136 -# CONFIG_MTD_CFI_ADV_OPTIONS is not set
20137 -CONFIG_MTD_MAP_BANK_WIDTH_1=y
20138 -CONFIG_MTD_MAP_BANK_WIDTH_2=y
20139 -CONFIG_MTD_MAP_BANK_WIDTH_4=y
20140 -# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
20141 -# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
20142 -# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
20143 -CONFIG_MTD_CFI_I1=y
20144 -CONFIG_MTD_CFI_I2=y
20145 -# CONFIG_MTD_CFI_I4 is not set
20146 -# CONFIG_MTD_CFI_I8 is not set
20147 -# CONFIG_MTD_CFI_INTELEXT is not set
20148 -CONFIG_MTD_CFI_AMDSTD=y
20149 -# CONFIG_MTD_CFI_STAA is not set
20150 -CONFIG_MTD_CFI_UTIL=y
20151 -# CONFIG_MTD_RAM is not set
20152 -# CONFIG_MTD_ROM is not set
20153 -# CONFIG_MTD_ABSENT is not set
20154 -
20155 -#
20156 -# Mapping drivers for chip access
20157 -#
20158 -# CONFIG_MTD_COMPLEX_MAPPINGS is not set
20159 -CONFIG_MTD_PHYSMAP=y
20160 -# CONFIG_MTD_PHYSMAP_COMPAT is not set
20161 -# CONFIG_MTD_INTEL_VR_NOR is not set
20162 -# CONFIG_MTD_PLATRAM is not set
20163 -
20164 -#
20165 -# Self-contained MTD device drivers
20166 -#
20167 -# CONFIG_MTD_PMC551 is not set
20168 -# CONFIG_MTD_SLRAM is not set
20169 -# CONFIG_MTD_PHRAM is not set
20170 -# CONFIG_MTD_MTDRAM is not set
20171 -# CONFIG_MTD_BLOCK2MTD is not set
20172 -
20173 -#
20174 -# Disk-On-Chip Device Drivers
20175 -#
20176 -# CONFIG_MTD_DOC2000 is not set
20177 -# CONFIG_MTD_DOC2001 is not set
20178 -# CONFIG_MTD_DOC2001PLUS is not set
20179 -# CONFIG_MTD_NAND is not set
20180 -# CONFIG_MTD_ONENAND is not set
20181 -
20182 -#
20183 -# LPDDR flash memory drivers
20184 -#
20185 -# CONFIG_MTD_LPDDR is not set
20186 -
20187 -#
20188 -# UBI - Unsorted block images
20189 -#
20190 -# CONFIG_MTD_UBI is not set
20191 +# CONFIG_MTD is not set
20192 # CONFIG_PARPORT is not set
20193 CONFIG_BLK_DEV=y
20194 # CONFIG_BLK_CPQ_DA is not set
20195 @@ -464,60 +365,9 @@
20196 # CONFIG_BLK_DEV_XIP is not set
20197 # CONFIG_CDROM_PKTCDVD is not set
20198 # CONFIG_ATA_OVER_ETH is not set
20199 -# CONFIG_BLK_DEV_HD is not set
20200 # CONFIG_MISC_DEVICES is not set
20201 CONFIG_HAVE_IDE=y
20202 -CONFIG_IDE=y
20203 -
20204 -#
20205 -# Please see Documentation/ide/ide.txt for help/info on IDE drives
20206 -#
20207 -CONFIG_IDE_TIMINGS=y
20208 -# CONFIG_BLK_DEV_IDE_SATA is not set
20209 -CONFIG_IDE_GD=y
20210 -CONFIG_IDE_GD_ATA=y
20211 -# CONFIG_IDE_GD_ATAPI is not set
20212 -# CONFIG_BLK_DEV_IDECD is not set
20213 -# CONFIG_BLK_DEV_IDETAPE is not set
20214 -# CONFIG_IDE_TASK_IOCTL is not set
20215 -CONFIG_IDE_PROC_FS=y
20216 -
20217 -#
20218 -# IDE chipset support/bugfixes
20219 -#
20220 -# CONFIG_IDE_GENERIC is not set
20221 -# CONFIG_BLK_DEV_PLATFORM is not set
20222 -CONFIG_BLK_DEV_IDEDMA_SFF=y
20223 -
20224 -#
20225 -# PCI IDE chipsets support
20226 -#
20227 -# CONFIG_BLK_DEV_GENERIC is not set
20228 -# CONFIG_BLK_DEV_AEC62XX is not set
20229 -# CONFIG_BLK_DEV_ALI15X3 is not set
20230 -# CONFIG_BLK_DEV_AMD74XX is not set
20231 -# CONFIG_BLK_DEV_CMD64X is not set
20232 -# CONFIG_BLK_DEV_TRIFLEX is not set
20233 -# CONFIG_BLK_DEV_CS5530 is not set
20234 -# CONFIG_BLK_DEV_HPT366 is not set
20235 -# CONFIG_BLK_DEV_JMICRON is not set
20236 -# CONFIG_BLK_DEV_SC1200 is not set
20237 -# CONFIG_BLK_DEV_PIIX is not set
20238 -# CONFIG_BLK_DEV_IT8172 is not set
20239 -# CONFIG_BLK_DEV_IT8213 is not set
20240 -# CONFIG_BLK_DEV_IT821X is not set
20241 -# CONFIG_BLK_DEV_NS87415 is not set
20242 -# CONFIG_BLK_DEV_PDC202XX_OLD is not set
20243 -# CONFIG_BLK_DEV_PDC202XX_NEW is not set
20244 -# CONFIG_BLK_DEV_SVWKS is not set
20245 -# CONFIG_BLK_DEV_SIIMAGE is not set
20246 -# CONFIG_BLK_DEV_SLC90E66 is not set
20247 -# CONFIG_BLK_DEV_TRM290 is not set
20248 -# CONFIG_BLK_DEV_VIA82CXXX is not set
20249 -# CONFIG_BLK_DEV_TC86C001 is not set
20250 -CONFIG_BLK_DEV_IDE_TX4938=y
20251 -CONFIG_BLK_DEV_IDE_TX4939=y
20252 -CONFIG_BLK_DEV_IDEDMA=y
20253 +# CONFIG_IDE is not set
20254
20255 #
20256 # SCSI device support
20257 @@ -540,6 +390,7 @@
20258 # CONFIG_IEEE1394 is not set
20259 # CONFIG_I2O is not set
20260 CONFIG_NETDEVICES=y
20261 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
20262 # CONFIG_DUMMY is not set
20263 # CONFIG_BONDING is not set
20264 # CONFIG_EQUALIZER is not set
20265 @@ -561,19 +412,15 @@
20266 # CONFIG_BROADCOM_PHY is not set
20267 # CONFIG_ICPLUS_PHY is not set
20268 # CONFIG_REALTEK_PHY is not set
20269 -# CONFIG_NATIONAL_PHY is not set
20270 -# CONFIG_STE10XP is not set
20271 -# CONFIG_LSI_ET1011C_PHY is not set
20272 # CONFIG_FIXED_PHY is not set
20273 # CONFIG_MDIO_BITBANG is not set
20274 CONFIG_NET_ETHERNET=y
20275 -CONFIG_MII=y
20276 +# CONFIG_MII is not set
20277 # CONFIG_AX88796 is not set
20278 # CONFIG_HAPPYMEAL is not set
20279 # CONFIG_SUNGEM is not set
20280 # CONFIG_CASSINI is not set
20281 # CONFIG_NET_VENDOR_3COM is not set
20282 -CONFIG_SMC91X=y
20283 # CONFIG_DM9000 is not set
20284 # CONFIG_NET_TULIP is not set
20285 # CONFIG_HP100 is not set
20286 @@ -582,9 +429,6 @@
20287 # CONFIG_IBM_NEW_EMAC_RGMII is not set
20288 # CONFIG_IBM_NEW_EMAC_TAH is not set
20289 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
20290 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
20291 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
20292 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
20293 CONFIG_NET_PCI=y
20294 # CONFIG_PCNET32 is not set
20295 # CONFIG_AMD8111_ETH is not set
20296 @@ -592,6 +436,7 @@
20297 # CONFIG_B44 is not set
20298 # CONFIG_FORCEDETH is not set
20299 CONFIG_TC35815=y
20300 +# CONFIG_EEPRO100 is not set
20301 # CONFIG_E100 is not set
20302 # CONFIG_FEALNX is not set
20303 # CONFIG_NATSEMI is not set
20304 @@ -600,11 +445,9 @@
20305 # CONFIG_R6040 is not set
20306 # CONFIG_SIS900 is not set
20307 # CONFIG_EPIC100 is not set
20308 -# CONFIG_SMSC9420 is not set
20309 # CONFIG_SUNDANCE is not set
20310 # CONFIG_TLAN is not set
20311 # CONFIG_VIA_RHINE is not set
20312 -# CONFIG_ATL2 is not set
20313 # CONFIG_NETDEV_1000 is not set
20314 # CONFIG_NETDEV_10000 is not set
20315 # CONFIG_TR is not set
20316 @@ -615,10 +458,6 @@
20317 # CONFIG_WLAN_PRE80211 is not set
20318 # CONFIG_WLAN_80211 is not set
20319 # CONFIG_IWLWIFI_LEDS is not set
20320 -
20321 -#
20322 -# Enable WiMAX (Networking options) to see the WiMAX drivers
20323 -#
20324 # CONFIG_WAN is not set
20325 # CONFIG_FDDI is not set
20326 # CONFIG_PPP is not set
20327 @@ -663,7 +502,6 @@
20328 CONFIG_SERIAL_TXX9_STDSERIAL=y
20329 # CONFIG_SERIAL_JSM is not set
20330 CONFIG_UNIX98_PTYS=y
20331 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
20332 CONFIG_LEGACY_PTYS=y
20333 CONFIG_LEGACY_PTY_COUNT=256
20334 # CONFIG_IPMI_HANDLER is not set
20335 @@ -679,19 +517,17 @@
20336 #
20337 # SPI Master Controller Drivers
20338 #
20339 -# CONFIG_SPI_BITBANG is not set
20340 -# CONFIG_SPI_GPIO is not set
20341 CONFIG_SPI_TXX9=y
20342
20343 #
20344 # SPI Protocol Masters
20345 #
20346 +CONFIG_EEPROM_AT25=y
20347 # CONFIG_SPI_TLE62X0 is not set
20348 -CONFIG_ARCH_REQUIRE_GPIOLIB=y
20349 -CONFIG_GPIOLIB=y
20350 +CONFIG_HAVE_GPIO_LIB=y
20351
20352 #
20353 -# Memory mapped GPIO expanders:
20354 +# GPIO Support
20355 #
20356
20357 #
20358 @@ -699,14 +535,8 @@
20359 #
20360
20361 #
20362 -# PCI GPIO expanders:
20363 -#
20364 -# CONFIG_GPIO_BT8XX is not set
20365 -
20366 -#
20367 # SPI GPIO expanders:
20368 #
20369 -# CONFIG_GPIO_MAX7301 is not set
20370 # CONFIG_GPIO_MCP23S08 is not set
20371 # CONFIG_W1 is not set
20372 # CONFIG_POWER_SUPPLY is not set
20373 @@ -720,7 +550,6 @@
20374 # Watchdog Device Drivers
20375 #
20376 # CONFIG_SOFT_WATCHDOG is not set
20377 -# CONFIG_ALIM7101_WDT is not set
20378 CONFIG_TXX9_WDT=m
20379
20380 #
20381 @@ -728,21 +557,18 @@
20382 #
20383 # CONFIG_PCIPCWATCHDOG is not set
20384 # CONFIG_WDTPCI is not set
20385 -CONFIG_SSB_POSSIBLE=y
20386
20387 #
20388 # Sonics Silicon Backplane
20389 #
20390 +CONFIG_SSB_POSSIBLE=y
20391 # CONFIG_SSB is not set
20392
20393 #
20394 # Multifunction device drivers
20395 #
20396 -# CONFIG_MFD_CORE is not set
20397 # CONFIG_MFD_SM501 is not set
20398 # CONFIG_HTC_PASIC3 is not set
20399 -# CONFIG_MFD_TMIO is not set
20400 -# CONFIG_REGULATOR is not set
20401
20402 #
20403 # Multimedia devices
20404 @@ -773,27 +599,15 @@
20405 # Display device support
20406 #
20407 # CONFIG_DISPLAY_SUPPORT is not set
20408 +
20409 +#
20410 +# Sound
20411 +#
20412 # CONFIG_SOUND is not set
20413 # CONFIG_USB_SUPPORT is not set
20414 # CONFIG_MMC is not set
20415 # CONFIG_MEMSTICK is not set
20416 -CONFIG_NEW_LEDS=y
20417 -CONFIG_LEDS_CLASS=y
20418 -
20419 -#
20420 -# LED drivers
20421 -#
20422 -CONFIG_LEDS_GPIO=y
20423 -
20424 -#
20425 -# LED Triggers
20426 -#
20427 -CONFIG_LEDS_TRIGGERS=y
20428 -# CONFIG_LEDS_TRIGGER_TIMER is not set
20429 -CONFIG_LEDS_TRIGGER_IDE_DISK=y
20430 -CONFIG_LEDS_TRIGGER_HEARTBEAT=y
20431 -# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
20432 -# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
20433 +# CONFIG_NEW_LEDS is not set
20434 # CONFIG_ACCESSIBILITY is not set
20435 # CONFIG_INFINIBAND is not set
20436 CONFIG_RTC_LIB=y
20437 @@ -814,47 +628,35 @@
20438 #
20439 # SPI RTC drivers
20440 #
20441 -# CONFIG_RTC_DRV_M41T94 is not set
20442 -# CONFIG_RTC_DRV_DS1305 is not set
20443 -# CONFIG_RTC_DRV_DS1390 is not set
20444 # CONFIG_RTC_DRV_MAX6902 is not set
20445 # CONFIG_RTC_DRV_R9701 is not set
20446 CONFIG_RTC_DRV_RS5C348=y
20447 -# CONFIG_RTC_DRV_DS3234 is not set
20448
20449 #
20450 # Platform RTC drivers
20451 #
20452 # CONFIG_RTC_DRV_CMOS is not set
20453 -# CONFIG_RTC_DRV_DS1286 is not set
20454 # CONFIG_RTC_DRV_DS1511 is not set
20455 # CONFIG_RTC_DRV_DS1553 is not set
20456 CONFIG_RTC_DRV_DS1742=y
20457 # CONFIG_RTC_DRV_STK17TA8 is not set
20458 # CONFIG_RTC_DRV_M48T86 is not set
20459 -# CONFIG_RTC_DRV_M48T35 is not set
20460 # CONFIG_RTC_DRV_M48T59 is not set
20461 -# CONFIG_RTC_DRV_BQ4802 is not set
20462 # CONFIG_RTC_DRV_V3020 is not set
20463
20464 #
20465 # on-CPU RTC drivers
20466 #
20467 -CONFIG_RTC_DRV_TX4939=y
20468 -# CONFIG_DMADEVICES is not set
20469 # CONFIG_UIO is not set
20470 -# CONFIG_STAGING is not set
20471
20472 #
20473 # File systems
20474 #
20475 # CONFIG_EXT2_FS is not set
20476 # CONFIG_EXT3_FS is not set
20477 -# CONFIG_EXT4_FS is not set
20478 # CONFIG_REISERFS_FS is not set
20479 # CONFIG_JFS_FS is not set
20480 CONFIG_FS_POSIX_ACL=y
20481 -CONFIG_FILE_LOCKING=y
20482 # CONFIG_XFS_FS is not set
20483 # CONFIG_OCFS2_FS is not set
20484 # CONFIG_DNOTIFY is not set
20485 @@ -885,19 +687,30 @@
20486 CONFIG_PROC_FS=y
20487 # CONFIG_PROC_KCORE is not set
20488 CONFIG_PROC_SYSCTL=y
20489 -CONFIG_PROC_PAGE_MONITOR=y
20490 CONFIG_SYSFS=y
20491 CONFIG_TMPFS=y
20492 CONFIG_TMPFS_POSIX_ACL=y
20493 # CONFIG_HUGETLB_PAGE is not set
20494 # CONFIG_CONFIGFS_FS is not set
20495 -# CONFIG_MISC_FILESYSTEMS is not set
20496 +
20497 +#
20498 +# Miscellaneous filesystems
20499 +#
20500 +# CONFIG_HFSPLUS_FS is not set
20501 +# CONFIG_CRAMFS is not set
20502 +# CONFIG_VXFS_FS is not set
20503 +# CONFIG_MINIX_FS is not set
20504 +# CONFIG_HPFS_FS is not set
20505 +# CONFIG_QNX4FS_FS is not set
20506 +# CONFIG_ROMFS_FS is not set
20507 +# CONFIG_SYSV_FS is not set
20508 +# CONFIG_UFS_FS is not set
20509 CONFIG_NETWORK_FILESYSTEMS=y
20510 CONFIG_NFS_FS=y
20511 CONFIG_NFS_V3=y
20512 # CONFIG_NFS_V3_ACL is not set
20513 -CONFIG_ROOT_NFS=y
20514 # CONFIG_NFSD is not set
20515 +CONFIG_ROOT_NFS=y
20516 CONFIG_LOCKD=y
20517 CONFIG_LOCKD_V4=y
20518 CONFIG_NFS_COMMON=y
20519 @@ -927,16 +740,7 @@
20520 CONFIG_DEBUG_FS=y
20521 # CONFIG_HEADERS_CHECK is not set
20522 # CONFIG_DEBUG_KERNEL is not set
20523 -# CONFIG_DEBUG_MEMORY_INIT is not set
20524 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
20525 -CONFIG_SYSCTL_SYSCALL_CHECK=y
20526 -
20527 -#
20528 -# Tracers
20529 -#
20530 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
20531 # CONFIG_SAMPLES is not set
20532 -CONFIG_HAVE_ARCH_KGDB=y
20533 CONFIG_CMDLINE=""
20534
20535 #
20536 @@ -944,18 +748,15 @@
20537 #
20538 # CONFIG_KEYS is not set
20539 # CONFIG_SECURITY is not set
20540 -# CONFIG_SECURITYFS is not set
20541 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
20542 # CONFIG_CRYPTO is not set
20543
20544 #
20545 # Library routines
20546 #
20547 CONFIG_BITREVERSE=y
20548 -CONFIG_GENERIC_FIND_LAST_BIT=y
20549 +# CONFIG_GENERIC_FIND_FIRST_BIT is not set
20550 # CONFIG_CRC_CCITT is not set
20551 # CONFIG_CRC16 is not set
20552 -# CONFIG_CRC_T10DIF is not set
20553 # CONFIG_CRC_ITU_T is not set
20554 CONFIG_CRC32=y
20555 # CONFIG_CRC7 is not set
20556 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/emma/Kconfig linux-2.6.29-rc3.owrt/arch/mips/emma/Kconfig
20557 --- linux-2.6.29.owrt/arch/mips/emma/Kconfig 1970-01-01 01:00:00.000000000 +0100
20558 +++ linux-2.6.29-rc3.owrt/arch/mips/emma/Kconfig 2009-05-10 23:48:28.000000000 +0200
20559 @@ -0,0 +1,29 @@
20560 +choice
20561 + prompt "Machine type"
20562 + depends on MACH_EMMA
20563 + default NEC_MARKEINS
20564 +
20565 +config NEC_MARKEINS
20566 + bool "NEC EMMA2RH Mark-eins board"
20567 + select SOC_EMMA2RH
20568 + select HW_HAS_PCI
20569 + help
20570 + This enables support for the NEC Electronics Mark-eins boards.
20571 +
20572 +endchoice
20573 +
20574 +config SOC_EMMA2RH
20575 + bool
20576 + select SOC_EMMA
20577 + select SYS_HAS_CPU_R5500
20578 + select SYS_SUPPORTS_32BIT_KERNEL
20579 + select SYS_SUPPORTS_64BIT_KERNEL
20580 +
20581 +config SOC_EMMA
20582 + bool
20583 + select CEVT_R4K
20584 + select CSRC_R4K
20585 + select DMA_NONCOHERENT
20586 + select IRQ_CPU
20587 + select SWAP_IO_SPACE
20588 + select SYS_SUPPORTS_BIG_ENDIAN
20589 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/emma/markeins/platform.c linux-2.6.29-rc3.owrt/arch/mips/emma/markeins/platform.c
20590 --- linux-2.6.29.owrt/arch/mips/emma/markeins/platform.c 2009-05-10 22:04:40.000000000 +0200
20591 +++ linux-2.6.29-rc3.owrt/arch/mips/emma/markeins/platform.c 2009-05-10 23:48:28.000000000 +0200
20592 @@ -141,6 +141,13 @@
20593 },
20594 };
20595
20596 +static struct platform_device *devices[] = {
20597 + &i2c_emma_devices[0],
20598 + &i2c_emma_devices[1],
20599 + &i2c_emma_devices[2],
20600 + &serial_emma,
20601 +};
20602 +
20603 static struct mtd_partition markeins_parts[] = {
20604 [0] = {
20605 .name = "RootFS",
20606 @@ -174,39 +181,11 @@
20607 },
20608 };
20609
20610 -static struct physmap_flash_data markeins_flash_data = {
20611 - .width = 2,
20612 - .nr_parts = ARRAY_SIZE(markeins_parts),
20613 - .parts = markeins_parts
20614 -};
20615 -
20616 -static struct resource markeins_flash_resource = {
20617 - .start = 0x1e000000,
20618 - .end = 0x02000000,
20619 - .flags = IORESOURCE_MEM
20620 -};
20621 -
20622 -static struct platform_device markeins_flash_device = {
20623 - .name = "physmap-flash",
20624 - .id = 0,
20625 - .dev = {
20626 - .platform_data = &markeins_flash_data,
20627 - },
20628 - .num_resources = 1,
20629 - .resource = &markeins_flash_resource,
20630 -};
20631 -
20632 -static struct platform_device *devices[] = {
20633 - i2c_emma_devices,
20634 - i2c_emma_devices + 1,
20635 - i2c_emma_devices + 2,
20636 - &serial_emma,
20637 - &markeins_flash_device,
20638 -};
20639 -
20640 static int __init platform_devices_setup(void)
20641 {
20642 + physmap_set_partitions(markeins_parts, ARRAY_SIZE(markeins_parts));
20643 return platform_add_devices(devices, ARRAY_SIZE(devices));
20644 }
20645
20646 arch_initcall(platform_devices_setup);
20647 +
20648 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/atomic.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/atomic.h
20649 --- linux-2.6.29.owrt/arch/mips/include/asm/atomic.h 2009-05-10 22:04:40.000000000 +0200
20650 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/atomic.h 2009-05-10 23:48:28.000000000 +0200
20651 @@ -50,7 +50,7 @@
20652 static __inline__ void atomic_add(int i, atomic_t * v)
20653 {
20654 if (cpu_has_llsc && R10000_LLSC_WAR) {
20655 - int temp;
20656 + unsigned long temp;
20657
20658 __asm__ __volatile__(
20659 " .set mips3 \n"
20660 @@ -62,7 +62,7 @@
20661 : "=&r" (temp), "=m" (v->counter)
20662 : "Ir" (i), "m" (v->counter));
20663 } else if (cpu_has_llsc) {
20664 - int temp;
20665 + unsigned long temp;
20666
20667 __asm__ __volatile__(
20668 " .set mips3 \n"
20669 @@ -95,7 +95,7 @@
20670 static __inline__ void atomic_sub(int i, atomic_t * v)
20671 {
20672 if (cpu_has_llsc && R10000_LLSC_WAR) {
20673 - int temp;
20674 + unsigned long temp;
20675
20676 __asm__ __volatile__(
20677 " .set mips3 \n"
20678 @@ -107,7 +107,7 @@
20679 : "=&r" (temp), "=m" (v->counter)
20680 : "Ir" (i), "m" (v->counter));
20681 } else if (cpu_has_llsc) {
20682 - int temp;
20683 + unsigned long temp;
20684
20685 __asm__ __volatile__(
20686 " .set mips3 \n"
20687 @@ -135,12 +135,12 @@
20688 */
20689 static __inline__ int atomic_add_return(int i, atomic_t * v)
20690 {
20691 - int result;
20692 + unsigned long result;
20693
20694 smp_llsc_mb();
20695
20696 if (cpu_has_llsc && R10000_LLSC_WAR) {
20697 - int temp;
20698 + unsigned long temp;
20699
20700 __asm__ __volatile__(
20701 " .set mips3 \n"
20702 @@ -154,7 +154,7 @@
20703 : "Ir" (i), "m" (v->counter)
20704 : "memory");
20705 } else if (cpu_has_llsc) {
20706 - int temp;
20707 + unsigned long temp;
20708
20709 __asm__ __volatile__(
20710 " .set mips3 \n"
20711 @@ -187,12 +187,12 @@
20712
20713 static __inline__ int atomic_sub_return(int i, atomic_t * v)
20714 {
20715 - int result;
20716 + unsigned long result;
20717
20718 smp_llsc_mb();
20719
20720 if (cpu_has_llsc && R10000_LLSC_WAR) {
20721 - int temp;
20722 + unsigned long temp;
20723
20724 __asm__ __volatile__(
20725 " .set mips3 \n"
20726 @@ -206,7 +206,7 @@
20727 : "Ir" (i), "m" (v->counter)
20728 : "memory");
20729 } else if (cpu_has_llsc) {
20730 - int temp;
20731 + unsigned long temp;
20732
20733 __asm__ __volatile__(
20734 " .set mips3 \n"
20735 @@ -247,12 +247,12 @@
20736 */
20737 static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
20738 {
20739 - int result;
20740 + unsigned long result;
20741
20742 smp_llsc_mb();
20743
20744 if (cpu_has_llsc && R10000_LLSC_WAR) {
20745 - int temp;
20746 + unsigned long temp;
20747
20748 __asm__ __volatile__(
20749 " .set mips3 \n"
20750 @@ -270,7 +270,7 @@
20751 : "Ir" (i), "m" (v->counter)
20752 : "memory");
20753 } else if (cpu_has_llsc) {
20754 - int temp;
20755 + unsigned long temp;
20756
20757 __asm__ __volatile__(
20758 " .set mips3 \n"
20759 @@ -429,7 +429,7 @@
20760 static __inline__ void atomic64_add(long i, atomic64_t * v)
20761 {
20762 if (cpu_has_llsc && R10000_LLSC_WAR) {
20763 - long temp;
20764 + unsigned long temp;
20765
20766 __asm__ __volatile__(
20767 " .set mips3 \n"
20768 @@ -441,7 +441,7 @@
20769 : "=&r" (temp), "=m" (v->counter)
20770 : "Ir" (i), "m" (v->counter));
20771 } else if (cpu_has_llsc) {
20772 - long temp;
20773 + unsigned long temp;
20774
20775 __asm__ __volatile__(
20776 " .set mips3 \n"
20777 @@ -474,7 +474,7 @@
20778 static __inline__ void atomic64_sub(long i, atomic64_t * v)
20779 {
20780 if (cpu_has_llsc && R10000_LLSC_WAR) {
20781 - long temp;
20782 + unsigned long temp;
20783
20784 __asm__ __volatile__(
20785 " .set mips3 \n"
20786 @@ -486,7 +486,7 @@
20787 : "=&r" (temp), "=m" (v->counter)
20788 : "Ir" (i), "m" (v->counter));
20789 } else if (cpu_has_llsc) {
20790 - long temp;
20791 + unsigned long temp;
20792
20793 __asm__ __volatile__(
20794 " .set mips3 \n"
20795 @@ -514,12 +514,12 @@
20796 */
20797 static __inline__ long atomic64_add_return(long i, atomic64_t * v)
20798 {
20799 - long result;
20800 + unsigned long result;
20801
20802 smp_llsc_mb();
20803
20804 if (cpu_has_llsc && R10000_LLSC_WAR) {
20805 - long temp;
20806 + unsigned long temp;
20807
20808 __asm__ __volatile__(
20809 " .set mips3 \n"
20810 @@ -533,7 +533,7 @@
20811 : "Ir" (i), "m" (v->counter)
20812 : "memory");
20813 } else if (cpu_has_llsc) {
20814 - long temp;
20815 + unsigned long temp;
20816
20817 __asm__ __volatile__(
20818 " .set mips3 \n"
20819 @@ -566,12 +566,12 @@
20820
20821 static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
20822 {
20823 - long result;
20824 + unsigned long result;
20825
20826 smp_llsc_mb();
20827
20828 if (cpu_has_llsc && R10000_LLSC_WAR) {
20829 - long temp;
20830 + unsigned long temp;
20831
20832 __asm__ __volatile__(
20833 " .set mips3 \n"
20834 @@ -585,7 +585,7 @@
20835 : "Ir" (i), "m" (v->counter)
20836 : "memory");
20837 } else if (cpu_has_llsc) {
20838 - long temp;
20839 + unsigned long temp;
20840
20841 __asm__ __volatile__(
20842 " .set mips3 \n"
20843 @@ -626,12 +626,12 @@
20844 */
20845 static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
20846 {
20847 - long result;
20848 + unsigned long result;
20849
20850 smp_llsc_mb();
20851
20852 if (cpu_has_llsc && R10000_LLSC_WAR) {
20853 - long temp;
20854 + unsigned long temp;
20855
20856 __asm__ __volatile__(
20857 " .set mips3 \n"
20858 @@ -649,7 +649,7 @@
20859 : "Ir" (i), "m" (v->counter)
20860 : "memory");
20861 } else if (cpu_has_llsc) {
20862 - long temp;
20863 + unsigned long temp;
20864
20865 __asm__ __volatile__(
20866 " .set mips3 \n"
20867 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/compat.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/compat.h
20868 --- linux-2.6.29.owrt/arch/mips/include/asm/compat.h 2009-05-10 22:04:40.000000000 +0200
20869 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/compat.h 2009-05-10 23:48:28.000000000 +0200
20870 @@ -3,8 +3,6 @@
20871 /*
20872 * Architecture specific compatibility types
20873 */
20874 -#include <linux/seccomp.h>
20875 -#include <linux/thread_info.h>
20876 #include <linux/types.h>
20877 #include <asm/page.h>
20878 #include <asm/ptrace.h>
20879 @@ -220,9 +218,4 @@
20880 compat_ulong_t __unused2;
20881 };
20882
20883 -static inline int is_compat_task(void)
20884 -{
20885 - return test_thread_flag(TIF_32BIT);
20886 -}
20887 -
20888 #endif /* _ASM_COMPAT_H */
20889 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/hazards.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/hazards.h
20890 --- linux-2.6.29.owrt/arch/mips/include/asm/hazards.h 2009-05-10 22:04:40.000000000 +0200
20891 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/hazards.h 2009-05-10 23:48:28.000000000 +0200
20892 @@ -138,8 +138,7 @@
20893 __instruction_hazard(); \
20894 } while (0)
20895
20896 -#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON) || \
20897 - defined(CONFIG_CPU_R5500)
20898 +#elif defined(CONFIG_CPU_R10000) || defined(CONFIG_CPU_CAVIUM_OCTEON)
20899
20900 /*
20901 * R10000 rocks - all hazards handled in hardware, so this becomes a nobrainer.
20902 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/mach-rc32434/gpio.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/mach-rc32434/gpio.h
20903 --- linux-2.6.29.owrt/arch/mips/include/asm/mach-rc32434/gpio.h 2009-05-10 22:04:40.000000000 +0200
20904 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/mach-rc32434/gpio.h 2009-05-10 23:48:28.000000000 +0200
20905 @@ -80,8 +80,11 @@
20906 /* Compact Flash GPIO pin */
20907 #define CF_GPIO_NUM 13
20908
20909 +extern void set_434_reg(unsigned reg_offs, unsigned bit, unsigned len, unsigned val);
20910 +extern unsigned get_434_reg(unsigned reg_offs);
20911 +extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask);
20912 +extern unsigned char get_latch_u5(void);
20913 extern void rb532_gpio_set_ilevel(int bit, unsigned gpio);
20914 extern void rb532_gpio_set_istat(int bit, unsigned gpio);
20915 -extern void rb532_gpio_set_func(unsigned gpio);
20916
20917 #endif /* _RC32434_GPIO_H_ */
20918 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/mach-rc32434/irq.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/mach-rc32434/irq.h
20919 --- linux-2.6.29.owrt/arch/mips/include/asm/mach-rc32434/irq.h 2009-05-10 22:04:40.000000000 +0200
20920 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/mach-rc32434/irq.h 2009-05-10 23:48:28.000000000 +0200
20921 @@ -30,7 +30,4 @@
20922 #define ETH0_RX_OVR_IRQ (GROUP3_IRQ_BASE + 9)
20923 #define ETH0_TX_UND_IRQ (GROUP3_IRQ_BASE + 10)
20924
20925 -#define GPIO_MAPPED_IRQ_BASE GROUP4_IRQ_BASE
20926 -#define GPIO_MAPPED_IRQ_GROUP 4
20927 -
20928 #endif /* __ASM_RC32434_IRQ_H */
20929 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/mach-rc32434/rb.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/mach-rc32434/rb.h
20930 --- linux-2.6.29.owrt/arch/mips/include/asm/mach-rc32434/rb.h 2009-05-10 22:04:40.000000000 +0200
20931 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/mach-rc32434/rb.h 2009-05-10 23:48:28.000000000 +0200
20932 @@ -83,7 +83,4 @@
20933 void __iomem *base;
20934 };
20935
20936 -extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask);
20937 -extern unsigned char get_latch_u5(void);
20938 -
20939 #endif /* __ASM_RC32434_RB_H */
20940 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/prefetch.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/prefetch.h
20941 --- linux-2.6.29.owrt/arch/mips/include/asm/prefetch.h 2009-05-10 22:04:40.000000000 +0200
20942 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/prefetch.h 2009-05-10 23:48:28.000000000 +0200
20943 @@ -26,7 +26,7 @@
20944 * Pref_WriteBackInvalidate is a nop and Pref_PrepareForStore is broken in
20945 * current versions due to erratum G105.
20946 *
20947 - * VR5500 (including VR5701 and VR7701) only implement load prefetch.
20948 + * VR7701 only implements the Load prefetch.
20949 *
20950 * Finally MIPS32 and MIPS64 implement all of the following hints.
20951 */
20952 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/ptrace.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/ptrace.h
20953 --- linux-2.6.29.owrt/arch/mips/include/asm/ptrace.h 2009-05-10 22:04:40.000000000 +0200
20954 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/ptrace.h 2009-05-10 23:48:28.000000000 +0200
20955 @@ -105,7 +105,7 @@
20956 enum pt_watch_style style;
20957 union {
20958 struct mips32_watch_regs mips32;
20959 - struct mips64_watch_regs mips64;
20960 + struct mips32_watch_regs mips64;
20961 };
20962 };
20963
20964 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/seccomp.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/seccomp.h
20965 --- linux-2.6.29.owrt/arch/mips/include/asm/seccomp.h 2009-05-10 22:04:40.000000000 +0200
20966 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/seccomp.h 2009-05-10 23:48:28.000000000 +0200
20967 @@ -1,5 +1,6 @@
20968 #ifndef __ASM_SECCOMP_H
20969
20970 +#include <linux/thread_info.h>
20971 #include <linux/unistd.h>
20972
20973 #define __NR_seccomp_read __NR_read
20974 @@ -15,6 +16,8 @@
20975 */
20976 #ifdef CONFIG_MIPS32_O32
20977
20978 +#define TIF_32BIT TIF_32BIT_REGS
20979 +
20980 #define __NR_seccomp_read_32 4003
20981 #define __NR_seccomp_write_32 4004
20982 #define __NR_seccomp_exit_32 4001
20983 @@ -22,6 +25,8 @@
20984
20985 #elif defined(CONFIG_MIPS32_N32)
20986
20987 +#define TIF_32BIT _TIF_32BIT_ADDR
20988 +
20989 #define __NR_seccomp_read_32 6000
20990 #define __NR_seccomp_write_32 6001
20991 #define __NR_seccomp_exit_32 6058
20992 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/spinlock.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/spinlock.h
20993 --- linux-2.6.29.owrt/arch/mips/include/asm/spinlock.h 2009-05-10 22:04:40.000000000 +0200
20994 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/spinlock.h 2009-05-10 23:48:28.000000000 +0200
20995 @@ -51,7 +51,6 @@
20996
20997 return (((counters >> 14) - counters) & 0x1fff) > 1;
20998 }
20999 -#define __raw_spin_is_contended __raw_spin_is_contended
21000
21001 static inline void __raw_spin_lock(raw_spinlock_t *lock)
21002 {
21003 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/termios.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/termios.h
21004 --- linux-2.6.29.owrt/arch/mips/include/asm/termios.h 2009-05-10 22:04:40.000000000 +0200
21005 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/termios.h 2009-05-10 23:48:28.000000000 +0200
21006 @@ -9,7 +9,6 @@
21007 #ifndef _ASM_TERMIOS_H
21008 #define _ASM_TERMIOS_H
21009
21010 -#include <linux/errno.h>
21011 #include <asm/termbits.h>
21012 #include <asm/ioctls.h>
21013
21014 @@ -95,81 +94,38 @@
21015 /*
21016 * Translate a "termio" structure into a "termios". Ugh.
21017 */
21018 -static inline int user_termio_to_kernel_termios(struct ktermios *termios,
21019 - struct termio __user *termio)
21020 -{
21021 - unsigned short iflag, oflag, cflag, lflag;
21022 - unsigned int err;
21023 -
21024 - if (!access_ok(VERIFY_READ, termio, sizeof(struct termio)))
21025 - return -EFAULT;
21026 -
21027 - err = __get_user(iflag, &termio->c_iflag);
21028 - termios->c_iflag = (termios->c_iflag & 0xffff0000) | iflag;
21029 - err |=__get_user(oflag, &termio->c_oflag);
21030 - termios->c_oflag = (termios->c_oflag & 0xffff0000) | oflag;
21031 - err |=__get_user(cflag, &termio->c_cflag);
21032 - termios->c_cflag = (termios->c_cflag & 0xffff0000) | cflag;
21033 - err |=__get_user(lflag, &termio->c_lflag);
21034 - termios->c_lflag = (termios->c_lflag & 0xffff0000) | lflag;
21035 - err |=__get_user(termios->c_line, &termio->c_line);
21036 - if (err)
21037 - return -EFAULT;
21038 -
21039 - if (__copy_from_user(termios->c_cc, termio->c_cc, NCC))
21040 - return -EFAULT;
21041 -
21042 - return 0;
21043 -}
21044 +#define user_termio_to_kernel_termios(termios, termio) \
21045 +({ \
21046 + unsigned short tmp; \
21047 + get_user(tmp, &(termio)->c_iflag); \
21048 + (termios)->c_iflag = (0xffff0000 & ((termios)->c_iflag)) | tmp; \
21049 + get_user(tmp, &(termio)->c_oflag); \
21050 + (termios)->c_oflag = (0xffff0000 & ((termios)->c_oflag)) | tmp; \
21051 + get_user(tmp, &(termio)->c_cflag); \
21052 + (termios)->c_cflag = (0xffff0000 & ((termios)->c_cflag)) | tmp; \
21053 + get_user(tmp, &(termio)->c_lflag); \
21054 + (termios)->c_lflag = (0xffff0000 & ((termios)->c_lflag)) | tmp; \
21055 + get_user((termios)->c_line, &(termio)->c_line); \
21056 + copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
21057 +})
21058
21059 /*
21060 * Translate a "termios" structure into a "termio". Ugh.
21061 */
21062 -static inline int kernel_termios_to_user_termio(struct termio __user *termio,
21063 - struct ktermios *termios)
21064 -{
21065 - int err;
21066 -
21067 - if (!access_ok(VERIFY_WRITE, termio, sizeof(struct termio)))
21068 - return -EFAULT;
21069 -
21070 - err = __put_user(termios->c_iflag, &termio->c_iflag);
21071 - err |= __put_user(termios->c_oflag, &termio->c_oflag);
21072 - err |= __put_user(termios->c_cflag, &termio->c_cflag);
21073 - err |= __put_user(termios->c_lflag, &termio->c_lflag);
21074 - err |= __put_user(termios->c_line, &termio->c_line);
21075 - if (err)
21076 - return -EFAULT;
21077 -
21078 - if (__copy_to_user(termio->c_cc, termios->c_cc, NCC))
21079 - return -EFAULT;
21080 -
21081 - return 0;
21082 -}
21083 -
21084 -static inline int user_termios_to_kernel_termios(struct ktermios __user *k,
21085 - struct termios2 *u)
21086 -{
21087 - return copy_from_user(k, u, sizeof(struct termios2)) ? -EFAULT : 0;
21088 -}
21089 -
21090 -static inline int kernel_termios_to_user_termios(struct termios2 __user *u,
21091 - struct ktermios *k)
21092 -{
21093 - return copy_to_user(u, k, sizeof(struct termios2)) ? -EFAULT : 0;
21094 -}
21095 -
21096 -static inline int user_termios_to_kernel_termios_1(struct ktermios *k,
21097 - struct termios __user *u)
21098 -{
21099 - return copy_from_user(k, u, sizeof(struct termios)) ? -EFAULT : 0;
21100 -}
21101 -
21102 -static inline int kernel_termios_to_user_termios_1(struct termios __user *u,
21103 - struct ktermios *k)
21104 -{
21105 - return copy_to_user(u, k, sizeof(struct termios)) ? -EFAULT : 0;
21106 -}
21107 +#define kernel_termios_to_user_termio(termio, termios) \
21108 +({ \
21109 + put_user((termios)->c_iflag, &(termio)->c_iflag); \
21110 + put_user((termios)->c_oflag, &(termio)->c_oflag); \
21111 + put_user((termios)->c_cflag, &(termio)->c_cflag); \
21112 + put_user((termios)->c_lflag, &(termio)->c_lflag); \
21113 + put_user((termios)->c_line, &(termio)->c_line); \
21114 + copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
21115 +})
21116 +
21117 +#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
21118 +#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
21119 +#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
21120 +#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
21121
21122 #endif /* defined(__KERNEL__) */
21123
21124 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/thread_info.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/thread_info.h
21125 --- linux-2.6.29.owrt/arch/mips/include/asm/thread_info.h 2009-05-10 22:04:40.000000000 +0200
21126 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/thread_info.h 2009-05-10 23:48:28.000000000 +0200
21127 @@ -127,12 +127,6 @@
21128 #define TIF_LOAD_WATCH 25 /* If set, load watch registers */
21129 #define TIF_SYSCALL_TRACE 31 /* syscall trace active */
21130
21131 -#ifdef CONFIG_MIPS32_O32
21132 -#define TIF_32BIT TIF_32BIT_REGS
21133 -#elif defined(CONFIG_MIPS32_N32)
21134 -#define TIF_32BIT _TIF_32BIT_ADDR
21135 -#endif /* CONFIG_MIPS32_O32 */
21136 -
21137 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
21138 #define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
21139 #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
21140 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/include/asm/txx9/tx4939.h linux-2.6.29-rc3.owrt/arch/mips/include/asm/txx9/tx4939.h
21141 --- linux-2.6.29.owrt/arch/mips/include/asm/txx9/tx4939.h 2009-05-10 22:04:40.000000000 +0200
21142 +++ linux-2.6.29-rc3.owrt/arch/mips/include/asm/txx9/tx4939.h 2009-05-10 23:48:28.000000000 +0200
21143 @@ -541,6 +541,5 @@
21144 int tx4939_irq(void);
21145 void tx4939_mtd_init(int ch);
21146 void tx4939_ata_init(void);
21147 -void tx4939_rtc_init(void);
21148
21149 #endif /* __ASM_TXX9_TX4939_H */
21150 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/Kconfig linux-2.6.29-rc3.owrt/arch/mips/Kconfig
21151 --- linux-2.6.29.owrt/arch/mips/Kconfig 2009-05-10 22:04:40.000000000 +0200
21152 +++ linux-2.6.29-rc3.owrt/arch/mips/Kconfig 2009-05-10 23:48:28.000000000 +0200
21153 @@ -238,12 +238,8 @@
21154 This option enables support for MIPS Technologies MIPSsim software
21155 emulator.
21156
21157 -config NEC_MARKEINS
21158 - bool "NEC EMMA2RH Mark-eins board"
21159 - select SOC_EMMA2RH
21160 - select HW_HAS_PCI
21161 - help
21162 - This enables support for the NEC Electronics Mark-eins boards.
21163 +config MACH_EMMA
21164 + bool "NEC EMMA series based machines"
21165
21166 config MACH_VR41XX
21167 bool "NEC VR4100 series based machines"
21168 @@ -355,7 +351,7 @@
21169 select ARC64
21170 select BOOT_ELF64
21171 select DEFAULT_SGI_PARTITION
21172 - select DMA_COHERENT
21173 + select DMA_IP27
21174 select SYS_HAS_EARLY_PRINTK
21175 select HW_HAS_PCI
21176 select NR_CPUS_DEFAULT_64
21177 @@ -607,7 +603,7 @@
21178 select SYS_SUPPORTS_64BIT_KERNEL
21179 select SYS_SUPPORTS_BIG_ENDIAN
21180 select SYS_SUPPORTS_HIGHMEM
21181 - select SYS_HAS_CPU_CAVIUM_OCTEON
21182 + select CPU_CAVIUM_OCTEON
21183 help
21184 The Octeon simulator is software performance model of the Cavium
21185 Octeon Processor. It supports simulating Octeon processors on x86
21186 @@ -622,7 +618,7 @@
21187 select SYS_SUPPORTS_BIG_ENDIAN
21188 select SYS_SUPPORTS_HIGHMEM
21189 select SYS_HAS_EARLY_PRINTK
21190 - select SYS_HAS_CPU_CAVIUM_OCTEON
21191 + select CPU_CAVIUM_OCTEON
21192 select SWAP_IO_SPACE
21193 help
21194 This option supports all of the Octeon reference boards from Cavium
21195 @@ -641,6 +637,7 @@
21196
21197 source "arch/mips/alchemy/Kconfig"
21198 source "arch/mips/basler/excite/Kconfig"
21199 +source "arch/mips/emma/Kconfig"
21200 source "arch/mips/jazz/Kconfig"
21201 source "arch/mips/lasat/Kconfig"
21202 source "arch/mips/pmc-sierra/Kconfig"
21203 @@ -764,6 +761,9 @@
21204 config DMA_COHERENT
21205 bool
21206
21207 +config DMA_IP27
21208 + bool
21209 +
21210 config DMA_NONCOHERENT
21211 bool
21212 select DMA_NEED_PCI_MAP_STATE
21213 @@ -904,18 +904,6 @@
21214 bool
21215 select SERIAL_RM9000
21216
21217 -config SOC_EMMA2RH
21218 - bool
21219 - select CEVT_R4K
21220 - select CSRC_R4K
21221 - select DMA_NONCOHERENT
21222 - select IRQ_CPU
21223 - select SWAP_IO_SPACE
21224 - select SYS_HAS_CPU_R5500
21225 - select SYS_SUPPORTS_32BIT_KERNEL
21226 - select SYS_SUPPORTS_64BIT_KERNEL
21227 - select SYS_SUPPORTS_BIG_ENDIAN
21228 -
21229 config SOC_PNX833X
21230 bool
21231 select CEVT_R4K
21232 @@ -951,6 +939,11 @@
21233 config SWAP_IO_SPACE
21234 bool
21235
21236 +config EMMA2RH
21237 + bool
21238 + depends on MARKEINS
21239 + default y
21240 +
21241 config SERIAL_RM9000
21242 bool
21243
21244 @@ -1250,7 +1243,6 @@
21245
21246 config CPU_CAVIUM_OCTEON
21247 bool "Cavium Octeon processor"
21248 - depends on SYS_HAS_CPU_CAVIUM_OCTEON
21249 select IRQ_CPU
21250 select IRQ_CPU_OCTEON
21251 select CPU_HAS_PREFETCH
21252 @@ -1331,9 +1323,6 @@
21253 config SYS_HAS_CPU_SB1
21254 bool
21255
21256 -config SYS_HAS_CPU_CAVIUM_OCTEON
21257 - bool
21258 -
21259 #
21260 # CPU may reorder R->R, R->W, W->R, W->W
21261 # Reordering beyond LL and SC is handled in WEAK_REORDERING_BEYOND_LLSC
21262 @@ -1385,7 +1374,7 @@
21263 #
21264 config HARDWARE_WATCHPOINTS
21265 bool
21266 - default y if CPU_MIPSR1 || CPU_MIPSR2
21267 + default y if CPU_MIPS32 || CPU_MIPS64
21268
21269 menu "Kernel type"
21270
21271 @@ -1407,7 +1396,6 @@
21272 config 64BIT
21273 bool "64-bit kernel"
21274 depends on CPU_SUPPORTS_64BIT_KERNEL && SYS_SUPPORTS_64BIT_KERNEL
21275 - select HAVE_SYSCALL_WRAPPERS
21276 help
21277 Select this option if you want to build a 64-bit kernel.
21278
21279 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/cpu-probe.c linux-2.6.29-rc3.owrt/arch/mips/kernel/cpu-probe.c
21280 --- linux-2.6.29.owrt/arch/mips/kernel/cpu-probe.c 2009-05-10 22:04:40.000000000 +0200
21281 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/cpu-probe.c 2009-05-10 23:48:28.000000000 +0200
21282 @@ -149,7 +149,6 @@
21283 case CPU_R4650:
21284 case CPU_R4700:
21285 case CPU_R5000:
21286 - case CPU_R5500:
21287 case CPU_NEVADA:
21288 case CPU_4KC:
21289 case CPU_4KEC:
21290 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/genex.S linux-2.6.29-rc3.owrt/arch/mips/kernel/genex.S
21291 --- linux-2.6.29.owrt/arch/mips/kernel/genex.S 2009-05-10 22:04:40.000000000 +0200
21292 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/genex.S 2009-05-10 23:48:28.000000000 +0200
21293 @@ -458,11 +458,7 @@
21294 BUILD_HANDLER fpe fpe fpe silent /* #15 */
21295 BUILD_HANDLER mdmx mdmx sti silent /* #22 */
21296 #ifdef CONFIG_HARDWARE_WATCHPOINTS
21297 - /*
21298 - * For watch, interrupts will be enabled after the watch
21299 - * registers are read.
21300 - */
21301 - BUILD_HANDLER watch watch cli silent /* #23 */
21302 + BUILD_HANDLER watch watch sti silent /* #23 */
21303 #else
21304 BUILD_HANDLER watch watch sti verbose /* #23 */
21305 #endif
21306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/irq.c linux-2.6.29-rc3.owrt/arch/mips/kernel/irq.c
21307 --- linux-2.6.29.owrt/arch/mips/kernel/irq.c 2009-05-10 22:04:40.000000000 +0200
21308 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/irq.c 2009-05-10 23:48:28.000000000 +0200
21309 @@ -111,6 +111,7 @@
21310 seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
21311 #endif
21312 seq_printf(p, " %14s", irq_desc[i].chip->name);
21313 + seq_printf(p, "-%-8s", irq_desc[i].name);
21314 seq_printf(p, " %s", action->name);
21315
21316 for (action=action->next; action; action = action->next)
21317 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/linux32.c linux-2.6.29-rc3.owrt/arch/mips/kernel/linux32.c
21318 --- linux-2.6.29.owrt/arch/mips/kernel/linux32.c 2009-05-10 22:04:40.000000000 +0200
21319 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/linux32.c 2009-05-10 23:48:28.000000000 +0200
21320 @@ -32,7 +32,6 @@
21321 #include <linux/module.h>
21322 #include <linux/binfmts.h>
21323 #include <linux/security.h>
21324 -#include <linux/syscalls.h>
21325 #include <linux/compat.h>
21326 #include <linux/vfs.h>
21327 #include <linux/ipc.h>
21328 @@ -64,9 +63,9 @@
21329 #define merge_64(r1, r2) ((((r2) & 0xffffffffUL) << 32) + ((r1) & 0xffffffffUL))
21330 #endif
21331
21332 -SYSCALL_DEFINE6(32_mmap2, unsigned long, addr, unsigned long, len,
21333 - unsigned long, prot, unsigned long, flags, unsigned long, fd,
21334 - unsigned long, pgoff)
21335 +asmlinkage unsigned long
21336 +sys32_mmap2(unsigned long addr, unsigned long len, unsigned long prot,
21337 + unsigned long flags, unsigned long fd, unsigned long pgoff)
21338 {
21339 struct file * file = NULL;
21340 unsigned long error;
21341 @@ -122,21 +121,21 @@
21342 int rlim_max;
21343 };
21344
21345 -SYSCALL_DEFINE4(32_truncate64, const char __user *, path,
21346 - unsigned long, __dummy, unsigned long, a2, unsigned long, a3)
21347 +asmlinkage long sys32_truncate64(const char __user * path,
21348 + unsigned long __dummy, int a2, int a3)
21349 {
21350 return sys_truncate(path, merge_64(a2, a3));
21351 }
21352
21353 -SYSCALL_DEFINE4(32_ftruncate64, unsigned long, fd, unsigned long, __dummy,
21354 - unsigned long, a2, unsigned long, a3)
21355 +asmlinkage long sys32_ftruncate64(unsigned int fd, unsigned long __dummy,
21356 + int a2, int a3)
21357 {
21358 return sys_ftruncate(fd, merge_64(a2, a3));
21359 }
21360
21361 -SYSCALL_DEFINE5(32_llseek, unsigned long, fd, unsigned long, offset_high,
21362 - unsigned long, offset_low, loff_t __user *, result,
21363 - unsigned long, origin)
21364 +asmlinkage int sys32_llseek(unsigned int fd, unsigned int offset_high,
21365 + unsigned int offset_low, loff_t __user * result,
21366 + unsigned int origin)
21367 {
21368 return sys_llseek(fd, offset_high, offset_low, result, origin);
21369 }
21370 @@ -145,20 +144,20 @@
21371 lseek back to original location. They fail just like lseek does on
21372 non-seekable files. */
21373
21374 -SYSCALL_DEFINE6(32_pread, unsigned long, fd, char __user *, buf, size_t, count,
21375 - unsigned long, unused, unsigned long, a4, unsigned long, a5)
21376 +asmlinkage ssize_t sys32_pread(unsigned int fd, char __user * buf,
21377 + size_t count, u32 unused, u64 a4, u64 a5)
21378 {
21379 return sys_pread64(fd, buf, count, merge_64(a4, a5));
21380 }
21381
21382 -SYSCALL_DEFINE6(32_pwrite, unsigned int, fd, const char __user *, buf,
21383 - size_t, count, u32, unused, u64, a4, u64, a5)
21384 +asmlinkage ssize_t sys32_pwrite(unsigned int fd, const char __user * buf,
21385 + size_t count, u32 unused, u64 a4, u64 a5)
21386 {
21387 return sys_pwrite64(fd, buf, count, merge_64(a4, a5));
21388 }
21389
21390 -SYSCALL_DEFINE2(32_sched_rr_get_interval, compat_pid_t, pid,
21391 - struct compat_timespec __user *, interval)
21392 +asmlinkage int sys32_sched_rr_get_interval(compat_pid_t pid,
21393 + struct compat_timespec __user *interval)
21394 {
21395 struct timespec t;
21396 int ret;
21397 @@ -175,8 +174,8 @@
21398
21399 #ifdef CONFIG_SYSVIPC
21400
21401 -SYSCALL_DEFINE6(32_ipc, u32, call, long, first, long, second, long, third,
21402 - unsigned long, ptr, unsigned long, fifth)
21403 +asmlinkage long
21404 +sys32_ipc(u32 call, int first, int second, int third, u32 ptr, u32 fifth)
21405 {
21406 int version, err;
21407
21408 @@ -234,8 +233,8 @@
21409
21410 #else
21411
21412 -SYSCALL_DEFINE6(32_ipc, u32, call, int, first, int, second, int, third,
21413 - u32, ptr, u32, fifth)
21414 +asmlinkage long
21415 +sys32_ipc(u32 call, int first, int second, int third, u32 ptr, u32 fifth)
21416 {
21417 return -ENOSYS;
21418 }
21419 @@ -243,7 +242,7 @@
21420 #endif /* CONFIG_SYSVIPC */
21421
21422 #ifdef CONFIG_MIPS32_N32
21423 -SYSCALL_DEFINE4(n32_semctl, int, semid, int, semnum, int, cmd, u32, arg)
21424 +asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg)
21425 {
21426 /* compat_sys_semctl expects a pointer to union semun */
21427 u32 __user *uptr = compat_alloc_user_space(sizeof(u32));
21428 @@ -252,14 +251,13 @@
21429 return compat_sys_semctl(semid, semnum, cmd, uptr);
21430 }
21431
21432 -SYSCALL_DEFINE4(n32_msgsnd, int, msqid, u32, msgp, unsigned int, msgsz,
21433 - int, msgflg)
21434 +asmlinkage long sysn32_msgsnd(int msqid, u32 msgp, unsigned msgsz, int msgflg)
21435 {
21436 return compat_sys_msgsnd(msqid, msgsz, msgflg, compat_ptr(msgp));
21437 }
21438
21439 -SYSCALL_DEFINE5(n32_msgrcv, int, msqid, u32, msgp, size_t, msgsz,
21440 - int, msgtyp, int, msgflg)
21441 +asmlinkage long sysn32_msgrcv(int msqid, u32 msgp, size_t msgsz, int msgtyp,
21442 + int msgflg)
21443 {
21444 return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64,
21445 compat_ptr(msgp));
21446 @@ -279,7 +277,7 @@
21447
21448 #ifdef CONFIG_SYSCTL_SYSCALL
21449
21450 -SYSCALL_DEFINE1(32_sysctl, struct sysctl_args32 __user *, args)
21451 +asmlinkage long sys32_sysctl(struct sysctl_args32 __user *args)
21452 {
21453 struct sysctl_args32 tmp;
21454 int error;
21455 @@ -318,16 +316,9 @@
21456 return error;
21457 }
21458
21459 -#else
21460 -
21461 -SYSCALL_DEFINE1(32_sysctl, struct sysctl_args32 __user *, args)
21462 -{
21463 - return -ENOSYS;
21464 -}
21465 -
21466 #endif /* CONFIG_SYSCTL_SYSCALL */
21467
21468 -SYSCALL_DEFINE1(32_newuname, struct new_utsname __user *, name)
21469 +asmlinkage long sys32_newuname(struct new_utsname __user * name)
21470 {
21471 int ret = 0;
21472
21473 @@ -343,7 +334,7 @@
21474 return ret;
21475 }
21476
21477 -SYSCALL_DEFINE1(32_personality, unsigned long, personality)
21478 +asmlinkage int sys32_personality(unsigned long personality)
21479 {
21480 int ret;
21481 personality &= 0xffffffff;
21482 @@ -366,7 +357,7 @@
21483
21484 extern asmlinkage long sys_ustat(dev_t dev, struct ustat __user * ubuf);
21485
21486 -SYSCALL_DEFINE2(32_ustat, dev_t, dev, struct ustat32 __user *, ubuf32)
21487 +asmlinkage int sys32_ustat(dev_t dev, struct ustat32 __user * ubuf32)
21488 {
21489 int err;
21490 struct ustat tmp;
21491 @@ -390,8 +381,8 @@
21492 return err;
21493 }
21494
21495 -SYSCALL_DEFINE4(32_sendfile, long, out_fd, long, in_fd,
21496 - compat_off_t __user *, offset, s32, count)
21497 +asmlinkage int sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset,
21498 + s32 count)
21499 {
21500 mm_segment_t old_fs = get_fs();
21501 int ret;
21502 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/mips-mt-fpaff.c linux-2.6.29-rc3.owrt/arch/mips/kernel/mips-mt-fpaff.c
21503 --- linux-2.6.29.owrt/arch/mips/kernel/mips-mt-fpaff.c 2009-05-10 22:04:40.000000000 +0200
21504 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/mips-mt-fpaff.c 2009-05-10 23:48:28.000000000 +0200
21505 @@ -79,8 +79,7 @@
21506
21507 euid = current_euid();
21508 retval = -EPERM;
21509 - if (euid != p->cred->euid && euid != p->cred->uid &&
21510 - !capable(CAP_SYS_NICE)) {
21511 + if (euid != p->euid && euid != p->uid && !capable(CAP_SYS_NICE)) {
21512 read_unlock(&tasklist_lock);
21513 goto out_unlock;
21514 }
21515 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/scall32-o32.S linux-2.6.29-rc3.owrt/arch/mips/kernel/scall32-o32.S
21516 --- linux-2.6.29.owrt/arch/mips/kernel/scall32-o32.S 2009-05-10 22:04:40.000000000 +0200
21517 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/scall32-o32.S 2009-05-10 23:48:28.000000000 +0200
21518 @@ -399,7 +399,7 @@
21519 sys sys_swapon 2
21520 sys sys_reboot 3
21521 sys sys_old_readdir 3
21522 - sys sys_mips_mmap 6 /* 4090 */
21523 + sys old_mmap 6 /* 4090 */
21524 sys sys_munmap 2
21525 sys sys_truncate 2
21526 sys sys_ftruncate 2
21527 @@ -519,7 +519,7 @@
21528 sys sys_sendfile 4
21529 sys sys_ni_syscall 0
21530 sys sys_ni_syscall 0
21531 - sys sys_mips_mmap2 6 /* 4210 */
21532 + sys sys_mmap2 6 /* 4210 */
21533 sys sys_truncate64 4
21534 sys sys_ftruncate64 4
21535 sys sys_stat64 2
21536 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/scall64-64.S linux-2.6.29-rc3.owrt/arch/mips/kernel/scall64-64.S
21537 --- linux-2.6.29.owrt/arch/mips/kernel/scall64-64.S 2009-05-10 22:04:40.000000000 +0200
21538 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/scall64-64.S 2009-05-10 23:48:28.000000000 +0200
21539 @@ -207,7 +207,7 @@
21540 PTR sys_newlstat
21541 PTR sys_poll
21542 PTR sys_lseek
21543 - PTR sys_mips_mmap
21544 + PTR old_mmap
21545 PTR sys_mprotect /* 5010 */
21546 PTR sys_munmap
21547 PTR sys_brk
21548 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/scall64-n32.S linux-2.6.29-rc3.owrt/arch/mips/kernel/scall64-n32.S
21549 --- linux-2.6.29.owrt/arch/mips/kernel/scall64-n32.S 2009-05-10 22:04:40.000000000 +0200
21550 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/scall64-n32.S 2009-05-10 23:48:28.000000000 +0200
21551 @@ -129,12 +129,12 @@
21552 PTR sys_newlstat
21553 PTR sys_poll
21554 PTR sys_lseek
21555 - PTR sys_mips_mmap
21556 + PTR old_mmap
21557 PTR sys_mprotect /* 6010 */
21558 PTR sys_munmap
21559 PTR sys_brk
21560 - PTR sys_32_rt_sigaction
21561 - PTR sys_32_rt_sigprocmask
21562 + PTR sys32_rt_sigaction
21563 + PTR sys32_rt_sigprocmask
21564 PTR compat_sys_ioctl /* 6015 */
21565 PTR sys_pread64
21566 PTR sys_pwrite64
21567 @@ -159,7 +159,7 @@
21568 PTR compat_sys_setitimer
21569 PTR sys_alarm
21570 PTR sys_getpid
21571 - PTR sys_32_sendfile
21572 + PTR sys32_sendfile
21573 PTR sys_socket /* 6040 */
21574 PTR sys_connect
21575 PTR sys_accept
21576 @@ -181,14 +181,14 @@
21577 PTR sys_exit
21578 PTR compat_sys_wait4
21579 PTR sys_kill /* 6060 */
21580 - PTR sys_32_newuname
21581 + PTR sys32_newuname
21582 PTR sys_semget
21583 PTR sys_semop
21584 - PTR sys_n32_semctl
21585 + PTR sysn32_semctl
21586 PTR sys_shmdt /* 6065 */
21587 PTR sys_msgget
21588 - PTR sys_n32_msgsnd
21589 - PTR sys_n32_msgrcv
21590 + PTR sysn32_msgsnd
21591 + PTR sysn32_msgrcv
21592 PTR compat_sys_msgctl
21593 PTR compat_sys_fcntl /* 6070 */
21594 PTR sys_flock
21595 @@ -245,15 +245,15 @@
21596 PTR sys_getsid
21597 PTR sys_capget
21598 PTR sys_capset
21599 - PTR sys_32_rt_sigpending /* 6125 */
21600 + PTR sys32_rt_sigpending /* 6125 */
21601 PTR compat_sys_rt_sigtimedwait
21602 - PTR sys_32_rt_sigqueueinfo
21603 + PTR sys32_rt_sigqueueinfo
21604 PTR sysn32_rt_sigsuspend
21605 PTR sys32_sigaltstack
21606 PTR compat_sys_utime /* 6130 */
21607 PTR sys_mknod
21608 - PTR sys_32_personality
21609 - PTR sys_32_ustat
21610 + PTR sys32_personality
21611 + PTR sys32_ustat
21612 PTR compat_sys_statfs
21613 PTR compat_sys_fstatfs /* 6135 */
21614 PTR sys_sysfs
21615 @@ -265,14 +265,14 @@
21616 PTR sys_sched_getscheduler
21617 PTR sys_sched_get_priority_max
21618 PTR sys_sched_get_priority_min
21619 - PTR sys_32_sched_rr_get_interval /* 6145 */
21620 + PTR sys32_sched_rr_get_interval /* 6145 */
21621 PTR sys_mlock
21622 PTR sys_munlock
21623 PTR sys_mlockall
21624 PTR sys_munlockall
21625 PTR sys_vhangup /* 6150 */
21626 PTR sys_pivot_root
21627 - PTR sys_32_sysctl
21628 + PTR sys32_sysctl
21629 PTR sys_prctl
21630 PTR compat_sys_adjtimex
21631 PTR compat_sys_setrlimit /* 6155 */
21632 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/scall64-o32.S linux-2.6.29-rc3.owrt/arch/mips/kernel/scall64-o32.S
21633 --- linux-2.6.29.owrt/arch/mips/kernel/scall64-o32.S 2009-05-10 22:04:40.000000000 +0200
21634 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/scall64-o32.S 2009-05-10 23:48:28.000000000 +0200
21635 @@ -265,12 +265,12 @@
21636 PTR sys_olduname
21637 PTR sys_umask /* 4060 */
21638 PTR sys_chroot
21639 - PTR sys_32_ustat
21640 + PTR sys32_ustat
21641 PTR sys_dup2
21642 PTR sys_getppid
21643 PTR sys_getpgrp /* 4065 */
21644 PTR sys_setsid
21645 - PTR sys_32_sigaction
21646 + PTR sys32_sigaction
21647 PTR sys_sgetmask
21648 PTR sys_ssetmask
21649 PTR sys_setreuid /* 4070 */
21650 @@ -293,7 +293,7 @@
21651 PTR sys_swapon
21652 PTR sys_reboot
21653 PTR compat_sys_old_readdir
21654 - PTR sys_mips_mmap /* 4090 */
21655 + PTR old_mmap /* 4090 */
21656 PTR sys_munmap
21657 PTR sys_truncate
21658 PTR sys_ftruncate
21659 @@ -320,12 +320,12 @@
21660 PTR compat_sys_wait4
21661 PTR sys_swapoff /* 4115 */
21662 PTR compat_sys_sysinfo
21663 - PTR sys_32_ipc
21664 + PTR sys32_ipc
21665 PTR sys_fsync
21666 PTR sys32_sigreturn
21667 PTR sys32_clone /* 4120 */
21668 PTR sys_setdomainname
21669 - PTR sys_32_newuname
21670 + PTR sys32_newuname
21671 PTR sys_ni_syscall /* sys_modify_ldt */
21672 PTR compat_sys_adjtimex
21673 PTR sys_mprotect /* 4125 */
21674 @@ -339,11 +339,11 @@
21675 PTR sys_fchdir
21676 PTR sys_bdflush
21677 PTR sys_sysfs /* 4135 */
21678 - PTR sys_32_personality
21679 + PTR sys32_personality
21680 PTR sys_ni_syscall /* for afs_syscall */
21681 PTR sys_setfsuid
21682 PTR sys_setfsgid
21683 - PTR sys_32_llseek /* 4140 */
21684 + PTR sys32_llseek /* 4140 */
21685 PTR compat_sys_getdents
21686 PTR compat_sys_select
21687 PTR sys_flock
21688 @@ -356,7 +356,7 @@
21689 PTR sys_ni_syscall /* 4150 */
21690 PTR sys_getsid
21691 PTR sys_fdatasync
21692 - PTR sys_32_sysctl
21693 + PTR sys32_sysctl
21694 PTR sys_mlock
21695 PTR sys_munlock /* 4155 */
21696 PTR sys_mlockall
21697 @@ -368,7 +368,7 @@
21698 PTR sys_sched_yield
21699 PTR sys_sched_get_priority_max
21700 PTR sys_sched_get_priority_min
21701 - PTR sys_32_sched_rr_get_interval /* 4165 */
21702 + PTR sys32_sched_rr_get_interval /* 4165 */
21703 PTR compat_sys_nanosleep
21704 PTR sys_mremap
21705 PTR sys_accept
21706 @@ -397,25 +397,25 @@
21707 PTR sys_getresgid
21708 PTR sys_prctl
21709 PTR sys32_rt_sigreturn
21710 - PTR sys_32_rt_sigaction
21711 - PTR sys_32_rt_sigprocmask /* 4195 */
21712 - PTR sys_32_rt_sigpending
21713 + PTR sys32_rt_sigaction
21714 + PTR sys32_rt_sigprocmask /* 4195 */
21715 + PTR sys32_rt_sigpending
21716 PTR compat_sys_rt_sigtimedwait
21717 - PTR sys_32_rt_sigqueueinfo
21718 + PTR sys32_rt_sigqueueinfo
21719 PTR sys32_rt_sigsuspend
21720 - PTR sys_32_pread /* 4200 */
21721 - PTR sys_32_pwrite
21722 + PTR sys32_pread /* 4200 */
21723 + PTR sys32_pwrite
21724 PTR sys_chown
21725 PTR sys_getcwd
21726 PTR sys_capget
21727 PTR sys_capset /* 4205 */
21728 PTR sys32_sigaltstack
21729 - PTR sys_32_sendfile
21730 + PTR sys32_sendfile
21731 PTR sys_ni_syscall
21732 PTR sys_ni_syscall
21733 - PTR sys_mips_mmap2 /* 4210 */
21734 - PTR sys_32_truncate64
21735 - PTR sys_32_ftruncate64
21736 + PTR sys32_mmap2 /* 4210 */
21737 + PTR sys32_truncate64
21738 + PTR sys32_ftruncate64
21739 PTR sys_newstat
21740 PTR sys_newlstat
21741 PTR sys_newfstat /* 4215 */
21742 @@ -481,7 +481,7 @@
21743 PTR compat_sys_mq_notify /* 4275 */
21744 PTR compat_sys_mq_getsetattr
21745 PTR sys_ni_syscall /* sys_vserver */
21746 - PTR sys_32_waitid
21747 + PTR sys32_waitid
21748 PTR sys_ni_syscall /* available, was setaltroot */
21749 PTR sys_add_key /* 4280 */
21750 PTR sys_request_key
21751 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/signal32.c linux-2.6.29-rc3.owrt/arch/mips/kernel/signal32.c
21752 --- linux-2.6.29.owrt/arch/mips/kernel/signal32.c 2009-05-10 22:04:40.000000000 +0200
21753 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/signal32.c 2009-05-10 23:48:28.000000000 +0200
21754 @@ -349,8 +349,8 @@
21755 return -ERESTARTNOHAND;
21756 }
21757
21758 -SYSCALL_DEFINE3(32_sigaction, long, sig, const struct sigaction32 __user *, act,
21759 - struct sigaction32 __user *, oact)
21760 +asmlinkage int sys32_sigaction(int sig, const struct sigaction32 __user *act,
21761 + struct sigaction32 __user *oact)
21762 {
21763 struct k_sigaction new_ka, old_ka;
21764 int ret;
21765 @@ -704,9 +704,9 @@
21766 .restart = __NR_O32_restart_syscall
21767 };
21768
21769 -SYSCALL_DEFINE4(32_rt_sigaction, int, sig,
21770 - const struct sigaction32 __user *, act,
21771 - struct sigaction32 __user *, oact, unsigned int, sigsetsize)
21772 +asmlinkage int sys32_rt_sigaction(int sig, const struct sigaction32 __user *act,
21773 + struct sigaction32 __user *oact,
21774 + unsigned int sigsetsize)
21775 {
21776 struct k_sigaction new_sa, old_sa;
21777 int ret = -EINVAL;
21778 @@ -748,8 +748,8 @@
21779 return ret;
21780 }
21781
21782 -SYSCALL_DEFINE4(32_rt_sigprocmask, int, how, compat_sigset_t __user *, set,
21783 - compat_sigset_t __user *, oset, unsigned int, sigsetsize)
21784 +asmlinkage int sys32_rt_sigprocmask(int how, compat_sigset_t __user *set,
21785 + compat_sigset_t __user *oset, unsigned int sigsetsize)
21786 {
21787 sigset_t old_set, new_set;
21788 int ret;
21789 @@ -770,8 +770,8 @@
21790 return ret;
21791 }
21792
21793 -SYSCALL_DEFINE2(32_rt_sigpending, compat_sigset_t __user *, uset,
21794 - unsigned int, sigsetsize)
21795 +asmlinkage int sys32_rt_sigpending(compat_sigset_t __user *uset,
21796 + unsigned int sigsetsize)
21797 {
21798 int ret;
21799 sigset_t set;
21800 @@ -787,8 +787,7 @@
21801 return ret;
21802 }
21803
21804 -SYSCALL_DEFINE3(32_rt_sigqueueinfo, int, pid, int, sig,
21805 - compat_siginfo_t __user *, uinfo)
21806 +asmlinkage int sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo)
21807 {
21808 siginfo_t info;
21809 int ret;
21810 @@ -803,9 +802,10 @@
21811 return ret;
21812 }
21813
21814 -SYSCALL_DEFINE5(32_waitid, int, which, compat_pid_t, pid,
21815 - compat_siginfo_t __user *, uinfo, int, options,
21816 - struct compat_rusage __user *, uru)
21817 +asmlinkage long
21818 +sys32_waitid(int which, compat_pid_t pid,
21819 + compat_siginfo_t __user *uinfo, int options,
21820 + struct compat_rusage __user *uru)
21821 {
21822 siginfo_t info;
21823 struct rusage ru;
21824 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/signal.c linux-2.6.29-rc3.owrt/arch/mips/kernel/signal.c
21825 --- linux-2.6.29.owrt/arch/mips/kernel/signal.c 2009-05-10 22:04:40.000000000 +0200
21826 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/signal.c 2009-05-10 23:48:28.000000000 +0200
21827 @@ -19,7 +19,6 @@
21828 #include <linux/ptrace.h>
21829 #include <linux/unistd.h>
21830 #include <linux/compiler.h>
21831 -#include <linux/syscalls.h>
21832 #include <linux/uaccess.h>
21833
21834 #include <asm/abi.h>
21835 @@ -339,8 +338,8 @@
21836 }
21837
21838 #ifdef CONFIG_TRAD_SIGNALS
21839 -SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act,
21840 - struct sigaction __user *, oact)
21841 +asmlinkage int sys_sigaction(int sig, const struct sigaction __user *act,
21842 + struct sigaction __user *oact)
21843 {
21844 struct k_sigaction new_ka, old_ka;
21845 int ret;
21846 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/syscall.c linux-2.6.29-rc3.owrt/arch/mips/kernel/syscall.c
21847 --- linux-2.6.29.owrt/arch/mips/kernel/syscall.c 2009-05-10 22:04:40.000000000 +0200
21848 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/syscall.c 2009-05-10 23:48:28.000000000 +0200
21849 @@ -152,9 +152,9 @@
21850 return error;
21851 }
21852
21853 -SYSCALL_DEFINE6(mips_mmap, unsigned long, addr, unsigned long, len,
21854 - unsigned long, prot, unsigned long, flags, unsigned long,
21855 - fd, off_t, offset)
21856 +asmlinkage unsigned long
21857 +old_mmap(unsigned long addr, unsigned long len, int prot,
21858 + int flags, int fd, off_t offset)
21859 {
21860 unsigned long result;
21861
21862 @@ -168,9 +168,9 @@
21863 return result;
21864 }
21865
21866 -SYSCALL_DEFINE6(mips_mmap2, unsigned long, addr, unsigned long, len,
21867 - unsigned long, prot, unsigned long, flags, unsigned long, fd,
21868 - unsigned long, pgoff)
21869 +asmlinkage unsigned long
21870 +sys_mmap2(unsigned long addr, unsigned long len, unsigned long prot,
21871 + unsigned long flags, unsigned long fd, unsigned long pgoff)
21872 {
21873 if (pgoff & (~PAGE_MASK >> 12))
21874 return -EINVAL;
21875 @@ -240,7 +240,7 @@
21876 /*
21877 * Compacrapability ...
21878 */
21879 -SYSCALL_DEFINE1(uname, struct old_utsname __user *, name)
21880 +asmlinkage int sys_uname(struct old_utsname __user * name)
21881 {
21882 if (name && !copy_to_user(name, utsname(), sizeof (*name)))
21883 return 0;
21884 @@ -250,7 +250,7 @@
21885 /*
21886 * Compacrapability ...
21887 */
21888 -SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name)
21889 +asmlinkage int sys_olduname(struct oldold_utsname __user * name)
21890 {
21891 int error;
21892
21893 @@ -279,7 +279,7 @@
21894 return error;
21895 }
21896
21897 -SYSCALL_DEFINE1(set_thread_area, unsigned long, addr)
21898 +asmlinkage int sys_set_thread_area(unsigned long addr)
21899 {
21900 struct thread_info *ti = task_thread_info(current);
21901
21902 @@ -290,7 +290,7 @@
21903 return 0;
21904 }
21905
21906 -asmlinkage int _sys_sysmips(long cmd, long arg1, long arg2, long arg3)
21907 +asmlinkage int _sys_sysmips(int cmd, long arg1, int arg2, int arg3)
21908 {
21909 switch (cmd) {
21910 case MIPS_ATOMIC_SET:
21911 @@ -325,8 +325,8 @@
21912 *
21913 * This is really horribly ugly.
21914 */
21915 -SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, int, second,
21916 - unsigned long, third, void __user *, ptr, long, fifth)
21917 +asmlinkage int sys_ipc(unsigned int call, int first, int second,
21918 + unsigned long third, void __user *ptr, long fifth)
21919 {
21920 int version, ret;
21921
21922 @@ -411,7 +411,7 @@
21923 /*
21924 * No implemented yet ...
21925 */
21926 -SYSCALL_DEFINE3(cachectl, char *, addr, int, nbytes, int, op)
21927 +asmlinkage int sys_cachectl(char *addr, int nbytes, int op)
21928 {
21929 return -ENOSYS;
21930 }
21931 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/kernel/traps.c linux-2.6.29-rc3.owrt/arch/mips/kernel/traps.c
21932 --- linux-2.6.29.owrt/arch/mips/kernel/traps.c 2009-05-10 22:04:40.000000000 +0200
21933 +++ linux-2.6.29-rc3.owrt/arch/mips/kernel/traps.c 2009-05-10 23:48:28.000000000 +0200
21934 @@ -944,9 +944,6 @@
21935 force_sig(SIGILL, current);
21936 }
21937
21938 -/*
21939 - * Called with interrupts disabled.
21940 - */
21941 asmlinkage void do_watch(struct pt_regs *regs)
21942 {
21943 u32 cause;
21944 @@ -966,12 +963,9 @@
21945 */
21946 if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {
21947 mips_read_watch_registers();
21948 - local_irq_enable();
21949 force_sig(SIGTRAP, current);
21950 - } else {
21951 + } else
21952 mips_clear_watch_registers();
21953 - local_irq_enable();
21954 - }
21955 }
21956
21957 asmlinkage void do_mcheck(struct pt_regs *regs)
21958 @@ -1588,11 +1582,7 @@
21959 static char panic_null_cerr[] __cpuinitdata =
21960 "Trying to set NULL cache error exception handler";
21961
21962 -/*
21963 - * Install uncached CPU exception handler.
21964 - * This is suitable only for the cache error exception which is the only
21965 - * exception handler that is being run uncached.
21966 - */
21967 +/* Install uncached CPU exception handler */
21968 void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
21969 unsigned long size)
21970 {
21971 @@ -1603,7 +1593,7 @@
21972 unsigned long uncached_ebase = TO_UNCAC(ebase);
21973 #endif
21974 if (cpu_has_mips_r2)
21975 - uncached_ebase += (read_c0_ebase() & 0x3ffff000);
21976 + ebase += (read_c0_ebase() & 0x3ffff000);
21977
21978 if (!addr)
21979 panic(panic_null_cerr);
21980 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/lib/memcpy-inatomic.S linux-2.6.29-rc3.owrt/arch/mips/lib/memcpy-inatomic.S
21981 --- linux-2.6.29.owrt/arch/mips/lib/memcpy-inatomic.S 2009-05-10 22:04:40.000000000 +0200
21982 +++ linux-2.6.29-rc3.owrt/arch/mips/lib/memcpy-inatomic.S 2009-05-10 23:48:28.000000000 +0200
21983 @@ -21,7 +21,7 @@
21984 * end of memory on some systems. It's also a seriously bad idea on non
21985 * dma-coherent systems.
21986 */
21987 -#ifdef CONFIG_DMA_NONCOHERENT
21988 +#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)
21989 #undef CONFIG_CPU_HAS_PREFETCH
21990 #endif
21991 #ifdef CONFIG_MIPS_MALTA
21992 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/lib/memcpy.S linux-2.6.29-rc3.owrt/arch/mips/lib/memcpy.S
21993 --- linux-2.6.29.owrt/arch/mips/lib/memcpy.S 2009-05-10 22:04:40.000000000 +0200
21994 +++ linux-2.6.29-rc3.owrt/arch/mips/lib/memcpy.S 2009-05-10 23:48:28.000000000 +0200
21995 @@ -21,7 +21,7 @@
21996 * end of memory on some systems. It's also a seriously bad idea on non
21997 * dma-coherent systems.
21998 */
21999 -#ifdef CONFIG_DMA_NONCOHERENT
22000 +#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)
22001 #undef CONFIG_CPU_HAS_PREFETCH
22002 #endif
22003 #ifdef CONFIG_MIPS_MALTA
22004 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/Makefile linux-2.6.29-rc3.owrt/arch/mips/Makefile
22005 --- linux-2.6.29.owrt/arch/mips/Makefile 2009-05-10 22:04:40.000000000 +0200
22006 +++ linux-2.6.29-rc3.owrt/arch/mips/Makefile 2009-05-10 23:48:28.000000000 +0200
22007 @@ -416,7 +416,7 @@
22008 #
22009 # Common NEC EMMAXXX
22010 #
22011 -core-$(CONFIG_SOC_EMMA2RH) += arch/mips/emma/common/
22012 +core-$(CONFIG_SOC_EMMA) += arch/mips/emma/common/
22013 cflags-$(CONFIG_SOC_EMMA2RH) += -I$(srctree)/arch/mips/include/asm/mach-emma2rh
22014
22015 #
22016 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/mm/cache.c linux-2.6.29-rc3.owrt/arch/mips/mm/cache.c
22017 --- linux-2.6.29.owrt/arch/mips/mm/cache.c 2009-05-10 22:04:40.000000000 +0200
22018 +++ linux-2.6.29-rc3.owrt/arch/mips/mm/cache.c 2009-05-10 23:48:28.000000000 +0200
22019 @@ -13,7 +13,6 @@
22020 #include <linux/linkage.h>
22021 #include <linux/module.h>
22022 #include <linux/sched.h>
22023 -#include <linux/syscalls.h>
22024 #include <linux/mm.h>
22025
22026 #include <asm/cacheflush.h>
22027 @@ -59,8 +58,8 @@
22028 * We could optimize the case where the cache argument is not BCACHE but
22029 * that seems very atypical use ...
22030 */
22031 -SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes,
22032 - unsigned int, cache)
22033 +asmlinkage int sys_cacheflush(unsigned long addr,
22034 + unsigned long bytes, unsigned int cache)
22035 {
22036 if (bytes == 0)
22037 return 0;
22038 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/mm/c-r4k.c linux-2.6.29-rc3.owrt/arch/mips/mm/c-r4k.c
22039 --- linux-2.6.29.owrt/arch/mips/mm/c-r4k.c 2009-05-10 22:04:40.000000000 +0200
22040 +++ linux-2.6.29-rc3.owrt/arch/mips/mm/c-r4k.c 2009-05-10 23:48:28.000000000 +0200
22041 @@ -618,35 +618,15 @@
22042 if (cpu_has_inclusive_pcaches) {
22043 if (size >= scache_size)
22044 r4k_blast_scache();
22045 - else {
22046 - unsigned long lsize = cpu_scache_line_size();
22047 - unsigned long almask = ~(lsize - 1);
22048 -
22049 - /*
22050 - * There is no clearly documented alignment requirement
22051 - * for the cache instruction on MIPS processors and
22052 - * some processors, among them the RM5200 and RM7000
22053 - * QED processors will throw an address error for cache
22054 - * hit ops with insufficient alignment. Solved by
22055 - * aligning the address to cache line size.
22056 - */
22057 - cache_op(Hit_Writeback_Inv_SD, addr & almask);
22058 - cache_op(Hit_Writeback_Inv_SD,
22059 - (addr + size - 1) & almask);
22060 + else
22061 blast_inv_scache_range(addr, addr + size);
22062 - }
22063 return;
22064 }
22065
22066 if (cpu_has_safe_index_cacheops && size >= dcache_size) {
22067 r4k_blast_dcache();
22068 } else {
22069 - unsigned long lsize = cpu_dcache_line_size();
22070 - unsigned long almask = ~(lsize - 1);
22071 -
22072 R4600_HIT_CACHEOP_WAR_IMPL;
22073 - cache_op(Hit_Writeback_Inv_D, addr & almask);
22074 - cache_op(Hit_Writeback_Inv_D, (addr + size - 1) & almask);
22075 blast_inv_dcache_range(addr, addr + size);
22076 }
22077
22078 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/mm/fault.c linux-2.6.29-rc3.owrt/arch/mips/mm/fault.c
22079 --- linux-2.6.29.owrt/arch/mips/mm/fault.c 2009-05-10 22:04:40.000000000 +0200
22080 +++ linux-2.6.29-rc3.owrt/arch/mips/mm/fault.c 2009-05-10 23:48:28.000000000 +0200
22081 @@ -97,6 +97,7 @@
22082 goto bad_area;
22083 }
22084
22085 +survive:
22086 /*
22087 * If for any reason at all we couldn't handle the fault,
22088 * make sure we exit gracefully rather than endlessly redo
22089 @@ -166,13 +167,21 @@
22090 field, regs->regs[31]);
22091 die("Oops", regs);
22092
22093 +/*
22094 + * We ran out of memory, or some other thing happened to us that made
22095 + * us unable to handle the page fault gracefully.
22096 + */
22097 out_of_memory:
22098 - /*
22099 - * We ran out of memory, call the OOM killer, and return the userspace
22100 - * (which will retry the fault, or kill us if we got oom-killed).
22101 - */
22102 - pagefault_out_of_memory();
22103 - return;
22104 + up_read(&mm->mmap_sem);
22105 + if (is_global_init(tsk)) {
22106 + yield();
22107 + down_read(&mm->mmap_sem);
22108 + goto survive;
22109 + }
22110 + printk("VM: killing process %s\n", tsk->comm);
22111 + if (user_mode(regs))
22112 + do_group_exit(SIGKILL);
22113 + goto no_context;
22114
22115 do_sigbus:
22116 up_read(&mm->mmap_sem);
22117 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/mm/page.c linux-2.6.29-rc3.owrt/arch/mips/mm/page.c
22118 --- linux-2.6.29.owrt/arch/mips/mm/page.c 2009-05-10 22:04:40.000000000 +0200
22119 +++ linux-2.6.29-rc3.owrt/arch/mips/mm/page.c 2009-05-10 23:48:28.000000000 +0200
22120 @@ -172,9 +172,8 @@
22121 */
22122 cache_line_size = cpu_dcache_line_size();
22123 switch (current_cpu_type()) {
22124 - case CPU_R5500:
22125 case CPU_TX49XX:
22126 - /* These processors only support the Pref_Load. */
22127 + /* TX49 supports only Pref_Load */
22128 pref_bias_copy_load = 256;
22129 break;
22130
22131 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/mm/tlbex.c linux-2.6.29-rc3.owrt/arch/mips/mm/tlbex.c
22132 --- linux-2.6.29.owrt/arch/mips/mm/tlbex.c 2009-05-10 22:04:40.000000000 +0200
22133 +++ linux-2.6.29-rc3.owrt/arch/mips/mm/tlbex.c 2009-05-10 23:48:28.000000000 +0200
22134 @@ -318,7 +318,6 @@
22135 case CPU_BCM4710:
22136 case CPU_LOONGSON2:
22137 case CPU_CAVIUM_OCTEON:
22138 - case CPU_R5500:
22139 if (m4kc_tlbp_war())
22140 uasm_i_nop(p);
22141 tlbw(p);
22142 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/pci/pci-rc32434.c linux-2.6.29-rc3.owrt/arch/mips/pci/pci-rc32434.c
22143 --- linux-2.6.29.owrt/arch/mips/pci/pci-rc32434.c 2009-05-10 22:04:40.000000000 +0200
22144 +++ linux-2.6.29-rc3.owrt/arch/mips/pci/pci-rc32434.c 2009-05-10 23:48:28.000000000 +0200
22145 @@ -205,8 +205,6 @@
22146
22147 static int __init rc32434_pci_init(void)
22148 {
22149 - void __iomem *io_map_base;
22150 -
22151 pr_info("PCI: Initializing PCI\n");
22152
22153 ioport_resource.start = rc32434_res_pci_io1.start;
22154 @@ -214,15 +212,6 @@
22155
22156 rc32434_pcibridge_init();
22157
22158 - io_map_base = ioremap(rc32434_res_pci_io1.start,
22159 - rc32434_res_pci_io1.end - rc32434_res_pci_io1.start + 1);
22160 -
22161 - if (!io_map_base)
22162 - return -ENOMEM;
22163 -
22164 - rc32434_controller.io_map_base =
22165 - (unsigned long)io_map_base - rc32434_res_pci_io1.start;
22166 -
22167 register_pci_controller(&rc32434_controller);
22168 rc32434_sync();
22169
22170 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/rb532/devices.c linux-2.6.29-rc3.owrt/arch/mips/rb532/devices.c
22171 --- linux-2.6.29.owrt/arch/mips/rb532/devices.c 2009-05-10 22:04:40.000000000 +0200
22172 +++ linux-2.6.29-rc3.owrt/arch/mips/rb532/devices.c 2009-05-10 23:48:28.000000000 +0200
22173 @@ -24,7 +24,6 @@
22174 #include <linux/mtd/partitions.h>
22175 #include <linux/gpio_keys.h>
22176 #include <linux/input.h>
22177 -#include <linux/serial_8250.h>
22178
22179 #include <asm/bootinfo.h>
22180
22181 @@ -40,29 +39,6 @@
22182 #define ETH0_RX_DMA_ADDR (DMA0_BASE_ADDR + 0 * DMA_CHAN_OFFSET)
22183 #define ETH0_TX_DMA_ADDR (DMA0_BASE_ADDR + 1 * DMA_CHAN_OFFSET)
22184
22185 -extern unsigned int idt_cpu_freq;
22186 -
22187 -static struct mpmc_device dev3;
22188 -
22189 -void set_latch_u5(unsigned char or_mask, unsigned char nand_mask)
22190 -{
22191 - unsigned long flags;
22192 -
22193 - spin_lock_irqsave(&dev3.lock, flags);
22194 -
22195 - dev3.state = (dev3.state | or_mask) & ~nand_mask;
22196 - writeb(dev3.state, dev3.base);
22197 -
22198 - spin_unlock_irqrestore(&dev3.lock, flags);
22199 -}
22200 -EXPORT_SYMBOL(set_latch_u5);
22201 -
22202 -unsigned char get_latch_u5(void)
22203 -{
22204 - return dev3.state;
22205 -}
22206 -EXPORT_SYMBOL(get_latch_u5);
22207 -
22208 static struct resource korina_dev0_res[] = {
22209 {
22210 .name = "korina_regs",
22211 @@ -110,7 +86,7 @@
22212 static struct platform_device korina_dev0 = {
22213 .id = -1,
22214 .name = "korina",
22215 - .dev.driver_data = &korina_dev0_data,
22216 + .dev.platform_data = &korina_dev0_data,
22217 .resource = korina_dev0_res,
22218 .num_resources = ARRAY_SIZE(korina_dev0_res),
22219 };
22220 @@ -238,32 +214,12 @@
22221 .num_resources = ARRAY_SIZE(rb532_wdt_res),
22222 };
22223
22224 -static struct plat_serial8250_port rb532_uart_res[] = {
22225 - {
22226 - .membase = (char *)KSEG1ADDR(REGBASE + UART0BASE),
22227 - .irq = UART0_IRQ,
22228 - .regshift = 2,
22229 - .iotype = UPIO_MEM,
22230 - .flags = UPF_BOOT_AUTOCONF,
22231 - },
22232 - {
22233 - .flags = 0,
22234 - }
22235 -};
22236 -
22237 -static struct platform_device rb532_uart = {
22238 - .name = "serial8250",
22239 - .id = PLAT8250_DEV_PLATFORM,
22240 - .dev.platform_data = &rb532_uart_res,
22241 -};
22242 -
22243 static struct platform_device *rb532_devs[] = {
22244 &korina_dev0,
22245 &nand_slot0,
22246 &cf_slot0,
22247 &rb532_led,
22248 &rb532_button,
22249 - &rb532_uart,
22250 &rb532_wdt
22251 };
22252
22253 @@ -335,20 +291,9 @@
22254 nand_slot0_res[0].start = readl(IDT434_REG_BASE + DEV2BASE);
22255 nand_slot0_res[0].end = nand_slot0_res[0].start + 0x1000;
22256
22257 - /* Read and map device controller 3 */
22258 - dev3.base = ioremap_nocache(readl(IDT434_REG_BASE + DEV3BASE), 1);
22259 -
22260 - if (!dev3.base) {
22261 - printk(KERN_ERR "rb532: cannot remap device controller 3\n");
22262 - return -ENXIO;
22263 - }
22264 -
22265 /* Initialise the NAND device */
22266 rb532_nand_setup();
22267
22268 - /* set the uart clock to the current cpu frequency */
22269 - rb532_uart_res[0].uartclk = idt_cpu_freq;
22270 -
22271 return platform_add_devices(rb532_devs, ARRAY_SIZE(rb532_devs));
22272 }
22273
22274 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/rb532/gpio.c linux-2.6.29-rc3.owrt/arch/mips/rb532/gpio.c
22275 --- linux-2.6.29.owrt/arch/mips/rb532/gpio.c 2009-05-10 22:04:40.000000000 +0200
22276 +++ linux-2.6.29-rc3.owrt/arch/mips/rb532/gpio.c 2009-05-10 23:48:28.000000000 +0200
22277 @@ -41,6 +41,8 @@
22278 void __iomem *regbase;
22279 };
22280
22281 +struct mpmc_device dev3;
22282 +
22283 static struct resource rb532_gpio_reg0_res[] = {
22284 {
22285 .name = "gpio_reg0",
22286 @@ -50,6 +52,61 @@
22287 }
22288 };
22289
22290 +static struct resource rb532_dev3_ctl_res[] = {
22291 + {
22292 + .name = "dev3_ctl",
22293 + .start = REGBASE + DEV3BASE,
22294 + .end = REGBASE + DEV3BASE + sizeof(struct dev_reg) - 1,
22295 + .flags = IORESOURCE_MEM,
22296 + }
22297 +};
22298 +
22299 +void set_434_reg(unsigned reg_offs, unsigned bit, unsigned len, unsigned val)
22300 +{
22301 + unsigned long flags;
22302 + unsigned data;
22303 + unsigned i = 0;
22304 +
22305 + spin_lock_irqsave(&dev3.lock, flags);
22306 +
22307 + data = readl(IDT434_REG_BASE + reg_offs);
22308 + for (i = 0; i != len; ++i) {
22309 + if (val & (1 << i))
22310 + data |= (1 << (i + bit));
22311 + else
22312 + data &= ~(1 << (i + bit));
22313 + }
22314 + writel(data, (IDT434_REG_BASE + reg_offs));
22315 +
22316 + spin_unlock_irqrestore(&dev3.lock, flags);
22317 +}
22318 +EXPORT_SYMBOL(set_434_reg);
22319 +
22320 +unsigned get_434_reg(unsigned reg_offs)
22321 +{
22322 + return readl(IDT434_REG_BASE + reg_offs);
22323 +}
22324 +EXPORT_SYMBOL(get_434_reg);
22325 +
22326 +void set_latch_u5(unsigned char or_mask, unsigned char nand_mask)
22327 +{
22328 + unsigned long flags;
22329 +
22330 + spin_lock_irqsave(&dev3.lock, flags);
22331 +
22332 + dev3.state = (dev3.state | or_mask) & ~nand_mask;
22333 + writel(dev3.state, &dev3.base);
22334 +
22335 + spin_unlock_irqrestore(&dev3.lock, flags);
22336 +}
22337 +EXPORT_SYMBOL(set_latch_u5);
22338 +
22339 +unsigned char get_latch_u5(void)
22340 +{
22341 + return dev3.state;
22342 +}
22343 +EXPORT_SYMBOL(get_latch_u5);
22344 +
22345 /* rb532_set_bit - sanely set a bit
22346 *
22347 * bitval: new value for the bit
22348 @@ -62,11 +119,13 @@
22349 unsigned long flags;
22350 u32 val;
22351
22352 + bitval = !!bitval; /* map parameter to {0,1} */
22353 +
22354 local_irq_save(flags);
22355
22356 val = readl(ioaddr);
22357 - val &= ~(!bitval << offset); /* unset bit if bitval == 0 */
22358 - val |= (!!bitval << offset); /* set bit if bitval == 1 */
22359 + val &= ~( ~bitval << offset ); /* unset bit if bitval == 0 */
22360 + val |= ( bitval << offset ); /* set bit if bitval == 1 */
22361 writel(val, ioaddr);
22362
22363 local_irq_restore(flags);
22364 @@ -112,8 +171,8 @@
22365
22366 gpch = container_of(chip, struct rb532_gpio_chip, chip);
22367
22368 - /* disable alternate function in case it's set */
22369 - rb532_set_bit(0, offset, gpch->regbase + GPIOFUNC);
22370 + if (rb532_get_bit(offset, gpch->regbase + GPIOFUNC))
22371 + return 1; /* alternate function, GPIOCFG is ignored */
22372
22373 rb532_set_bit(0, offset, gpch->regbase + GPIOCFG);
22374 return 0;
22375 @@ -129,8 +188,8 @@
22376
22377 gpch = container_of(chip, struct rb532_gpio_chip, chip);
22378
22379 - /* disable alternate function in case it's set */
22380 - rb532_set_bit(0, offset, gpch->regbase + GPIOFUNC);
22381 + if (rb532_get_bit(offset, gpch->regbase + GPIOFUNC))
22382 + return 1; /* alternate function, GPIOCFG is ignored */
22383
22384 /* set the initial output value */
22385 rb532_set_bit(value, offset, gpch->regbase + GPIOD);
22386 @@ -174,11 +233,10 @@
22387 /*
22388 * Configure GPIO alternate function
22389 */
22390 -void rb532_gpio_set_func(unsigned gpio)
22391 +static void rb532_gpio_set_func(int bit, unsigned gpio)
22392 {
22393 - rb532_set_bit(1, gpio, rb532_gpio_chip->regbase + GPIOFUNC);
22394 + rb532_set_bit(bit, gpio, rb532_gpio_chip->regbase + GPIOFUNC);
22395 }
22396 -EXPORT_SYMBOL(rb532_gpio_set_func);
22397
22398 int __init rb532_gpio_init(void)
22399 {
22400 @@ -195,6 +253,20 @@
22401 /* Register our GPIO chip */
22402 gpiochip_add(&rb532_gpio_chip->chip);
22403
22404 + r = rb532_dev3_ctl_res;
22405 + dev3.base = ioremap_nocache(r->start, r->end - r->start);
22406 +
22407 + if (!dev3.base) {
22408 + printk(KERN_ERR "rb532: cannot remap device controller 3\n");
22409 + return -ENXIO;
22410 + }
22411 +
22412 + /* configure CF_GPIO_NUM as CFRDY IRQ source */
22413 + rb532_gpio_set_func(0, CF_GPIO_NUM);
22414 + rb532_gpio_direction_input(&rb532_gpio_chip->chip, CF_GPIO_NUM);
22415 + rb532_gpio_set_ilevel(1, CF_GPIO_NUM);
22416 + rb532_gpio_set_istat(0, CF_GPIO_NUM);
22417 +
22418 return 0;
22419 }
22420 arch_initcall(rb532_gpio_init);
22421 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/rb532/irq.c linux-2.6.29-rc3.owrt/arch/mips/rb532/irq.c
22422 --- linux-2.6.29.owrt/arch/mips/rb532/irq.c 2009-05-10 22:04:40.000000000 +0200
22423 +++ linux-2.6.29-rc3.owrt/arch/mips/rb532/irq.c 2009-05-10 23:48:28.000000000 +0200
22424 @@ -46,7 +46,6 @@
22425 #include <asm/system.h>
22426
22427 #include <asm/mach-rc32434/irq.h>
22428 -#include <asm/mach-rc32434/gpio.h>
22429
22430 struct intr_group {
22431 u32 mask; /* mask of valid bits in pending/mask registers */
22432 @@ -151,9 +150,6 @@
22433 mask |= intr_bit;
22434 WRITE_MASK(addr, mask);
22435
22436 - if (group == GPIO_MAPPED_IRQ_GROUP)
22437 - rb532_gpio_set_istat(0, irq_nr - GPIO_MAPPED_IRQ_BASE);
22438 -
22439 /*
22440 * if there are no more interrupts enabled in this
22441 * group, disable corresponding IP
22442 @@ -169,35 +165,12 @@
22443 ack_local_irq(group_to_ip(irq_to_group(irq_nr)));
22444 }
22445
22446 -static int rb532_set_type(unsigned int irq_nr, unsigned type)
22447 -{
22448 - int gpio = irq_nr - GPIO_MAPPED_IRQ_BASE;
22449 - int group = irq_to_group(irq_nr);
22450 -
22451 - if (group != GPIO_MAPPED_IRQ_GROUP)
22452 - return (type == IRQ_TYPE_LEVEL_HIGH) ? 0 : -EINVAL;
22453 -
22454 - switch (type) {
22455 - case IRQ_TYPE_LEVEL_HIGH:
22456 - rb532_gpio_set_ilevel(1, gpio);
22457 - break;
22458 - case IRQ_TYPE_LEVEL_LOW:
22459 - rb532_gpio_set_ilevel(0, gpio);
22460 - break;
22461 - default:
22462 - return -EINVAL;
22463 - }
22464 -
22465 - return 0;
22466 -}
22467 -
22468 static struct irq_chip rc32434_irq_type = {
22469 .name = "RB532",
22470 .ack = rb532_disable_irq,
22471 .mask = rb532_disable_irq,
22472 .mask_ack = rb532_mask_and_ack_irq,
22473 .unmask = rb532_enable_irq,
22474 - .set_type = rb532_set_type,
22475 };
22476
22477 void __init arch_init_irq(void)
22478 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/rb532/serial.c linux-2.6.29-rc3.owrt/arch/mips/rb532/serial.c
22479 --- linux-2.6.29.owrt/arch/mips/rb532/serial.c 2009-05-10 22:04:40.000000000 +0200
22480 +++ linux-2.6.29-rc3.owrt/arch/mips/rb532/serial.c 2009-05-10 23:48:28.000000000 +0200
22481 @@ -36,7 +36,7 @@
22482 extern unsigned int idt_cpu_freq;
22483
22484 static struct uart_port rb532_uart = {
22485 - .flags = UPF_BOOT_AUTOCONF,
22486 + .type = PORT_16550A,
22487 .line = 0,
22488 .irq = UART0_IRQ,
22489 .iotype = UPIO_MEM,
22490 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/txx9/generic/setup_tx4939.c linux-2.6.29-rc3.owrt/arch/mips/txx9/generic/setup_tx4939.c
22491 --- linux-2.6.29.owrt/arch/mips/txx9/generic/setup_tx4939.c 2009-05-10 22:04:40.000000000 +0200
22492 +++ linux-2.6.29-rc3.owrt/arch/mips/txx9/generic/setup_tx4939.c 2009-05-10 23:48:28.000000000 +0200
22493 @@ -435,28 +435,6 @@
22494 platform_device_register(&ata1_dev);
22495 }
22496
22497 -void __init tx4939_rtc_init(void)
22498 -{
22499 - static struct resource res[] = {
22500 - {
22501 - .start = TX4939_RTC_REG & 0xfffffffffULL,
22502 - .end = (TX4939_RTC_REG & 0xfffffffffULL) + 0x100 - 1,
22503 - .flags = IORESOURCE_MEM,
22504 - }, {
22505 - .start = TXX9_IRQ_BASE + TX4939_IR_RTC,
22506 - .flags = IORESOURCE_IRQ,
22507 - },
22508 - };
22509 - static struct platform_device rtc_dev = {
22510 - .name = "tx4939rtc",
22511 - .id = -1,
22512 - .num_resources = ARRAY_SIZE(res),
22513 - .resource = res,
22514 - };
22515 -
22516 - platform_device_register(&rtc_dev);
22517 -}
22518 -
22519 static void __init tx4939_stop_unused_modules(void)
22520 {
22521 __u64 pcfg, rst = 0, ckd = 0;
22522 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mips/txx9/rbtx4939/setup.c linux-2.6.29-rc3.owrt/arch/mips/txx9/rbtx4939/setup.c
22523 --- linux-2.6.29.owrt/arch/mips/txx9/rbtx4939/setup.c 2009-05-10 22:04:40.000000000 +0200
22524 +++ linux-2.6.29-rc3.owrt/arch/mips/txx9/rbtx4939/setup.c 2009-05-10 23:48:28.000000000 +0200
22525 @@ -336,7 +336,6 @@
22526 rbtx4939_led_setup();
22527 tx4939_wdt_init();
22528 tx4939_ata_init();
22529 - tx4939_rtc_init();
22530 }
22531
22532 static void __init rbtx4939_setup(void)
22533 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mn10300/Kconfig linux-2.6.29-rc3.owrt/arch/mn10300/Kconfig
22534 --- linux-2.6.29.owrt/arch/mn10300/Kconfig 2009-05-10 22:04:41.000000000 +0200
22535 +++ linux-2.6.29-rc3.owrt/arch/mn10300/Kconfig 2009-05-10 23:48:28.000000000 +0200
22536 @@ -7,7 +7,6 @@
22537
22538 config MN10300
22539 def_bool y
22540 - select HAVE_OPROFILE
22541
22542 config AM33
22543 def_bool y
22544 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/mn10300/unit-asb2305/pci.c linux-2.6.29-rc3.owrt/arch/mn10300/unit-asb2305/pci.c
22545 --- linux-2.6.29.owrt/arch/mn10300/unit-asb2305/pci.c 2009-05-10 22:04:41.000000000 +0200
22546 +++ linux-2.6.29-rc3.owrt/arch/mn10300/unit-asb2305/pci.c 2009-05-10 23:48:28.000000000 +0200
22547 @@ -173,7 +173,7 @@
22548 BRIDGEREGB(where) = value;
22549 } else {
22550 if (bus->number == 0 &&
22551 - (devfn == PCI_DEVFN(2, 0) || devfn == PCI_DEVFN(3, 0))
22552 + (devfn == PCI_DEVFN(2, 0) && devfn == PCI_DEVFN(3, 0))
22553 )
22554 __pcidebug("<= %02x", bus, devfn, where, value);
22555 CONFIG_ADDRESS = CONFIG_CMD(bus, devfn, where);
22556 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/configs/712_defconfig linux-2.6.29-rc3.owrt/arch/parisc/configs/712_defconfig
22557 --- linux-2.6.29.owrt/arch/parisc/configs/712_defconfig 2009-05-10 22:04:39.000000000 +0200
22558 +++ linux-2.6.29-rc3.owrt/arch/parisc/configs/712_defconfig 2009-05-10 23:48:28.000000000 +0200
22559 @@ -1,7 +1,7 @@
22560 #
22561 # Automatically generated make config: don't edit
22562 -# Linux kernel version: 2.6.29-rc8
22563 -# Fri Mar 13 01:32:55 2009
22564 +# Linux kernel version: 2.6.23
22565 +# Fri Oct 12 21:00:07 2007
22566 #
22567 CONFIG_PARISC=y
22568 CONFIG_MMU=y
22569 @@ -33,35 +33,17 @@
22570 CONFIG_POSIX_MQUEUE=y
22571 # CONFIG_BSD_PROCESS_ACCT is not set
22572 # CONFIG_TASKSTATS is not set
22573 +# CONFIG_USER_NS is not set
22574 # CONFIG_AUDIT is not set
22575 -
22576 -#
22577 -# RCU Subsystem
22578 -#
22579 -CONFIG_CLASSIC_RCU=y
22580 -# CONFIG_TREE_RCU is not set
22581 -# CONFIG_PREEMPT_RCU is not set
22582 -# CONFIG_TREE_RCU_TRACE is not set
22583 -# CONFIG_PREEMPT_RCU_TRACE is not set
22584 CONFIG_IKCONFIG=y
22585 CONFIG_IKCONFIG_PROC=y
22586 CONFIG_LOG_BUF_SHIFT=16
22587 -# CONFIG_GROUP_SCHED is not set
22588 -# CONFIG_CGROUPS is not set
22589 CONFIG_SYSFS_DEPRECATED=y
22590 -CONFIG_SYSFS_DEPRECATED_V2=y
22591 # CONFIG_RELAY is not set
22592 -CONFIG_NAMESPACES=y
22593 -# CONFIG_UTS_NS is not set
22594 -# CONFIG_IPC_NS is not set
22595 -# CONFIG_USER_NS is not set
22596 -# CONFIG_PID_NS is not set
22597 -# CONFIG_NET_NS is not set
22598 CONFIG_BLK_DEV_INITRD=y
22599 CONFIG_INITRAMFS_SOURCE=""
22600 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
22601 CONFIG_SYSCTL=y
22602 -CONFIG_ANON_INODES=y
22603 # CONFIG_EMBEDDED is not set
22604 CONFIG_SYSCTL_SYSCALL=y
22605 CONFIG_KALLSYMS=y
22606 @@ -73,38 +55,29 @@
22607 CONFIG_ELF_CORE=y
22608 CONFIG_BASE_FULL=y
22609 CONFIG_FUTEX=y
22610 +CONFIG_ANON_INODES=y
22611 CONFIG_EPOLL=y
22612 CONFIG_SIGNALFD=y
22613 -CONFIG_TIMERFD=y
22614 CONFIG_EVENTFD=y
22615 CONFIG_SHMEM=y
22616 -CONFIG_AIO=y
22617 CONFIG_VM_EVENT_COUNTERS=y
22618 -CONFIG_COMPAT_BRK=y
22619 CONFIG_SLAB=y
22620 # CONFIG_SLUB is not set
22621 # CONFIG_SLOB is not set
22622 -CONFIG_PROFILING=y
22623 -CONFIG_TRACEPOINTS=y
22624 -# CONFIG_MARKERS is not set
22625 -CONFIG_OPROFILE=m
22626 -CONFIG_HAVE_OPROFILE=y
22627 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
22628 -CONFIG_SLABINFO=y
22629 CONFIG_RT_MUTEXES=y
22630 +# CONFIG_TINY_SHMEM is not set
22631 CONFIG_BASE_SMALL=0
22632 CONFIG_MODULES=y
22633 -# CONFIG_MODULE_FORCE_LOAD is not set
22634 CONFIG_MODULE_UNLOAD=y
22635 CONFIG_MODULE_FORCE_UNLOAD=y
22636 # CONFIG_MODVERSIONS is not set
22637 # CONFIG_MODULE_SRCVERSION_ALL is not set
22638 -CONFIG_INIT_ALL_POSSIBLE=y
22639 +CONFIG_KMOD=y
22640 CONFIG_BLOCK=y
22641 # CONFIG_LBD is not set
22642 # CONFIG_BLK_DEV_IO_TRACE is not set
22643 +# CONFIG_LSF is not set
22644 # CONFIG_BLK_DEV_BSG is not set
22645 -# CONFIG_BLK_DEV_INTEGRITY is not set
22646
22647 #
22648 # IO Schedulers
22649 @@ -118,7 +91,6 @@
22650 # CONFIG_DEFAULT_CFQ is not set
22651 # CONFIG_DEFAULT_NOOP is not set
22652 CONFIG_DEFAULT_IOSCHED="anticipatory"
22653 -# CONFIG_FREEZER is not set
22654
22655 #
22656 # Processor type and features
22657 @@ -142,19 +114,17 @@
22658 # CONFIG_HZ_300 is not set
22659 # CONFIG_HZ_1000 is not set
22660 CONFIG_HZ=250
22661 -# CONFIG_SCHED_HRTICK is not set
22662 CONFIG_SELECT_MEMORY_MODEL=y
22663 CONFIG_FLATMEM_MANUAL=y
22664 # CONFIG_DISCONTIGMEM_MANUAL is not set
22665 # CONFIG_SPARSEMEM_MANUAL is not set
22666 CONFIG_FLATMEM=y
22667 CONFIG_FLAT_NODE_MEM_MAP=y
22668 -CONFIG_PAGEFLAGS_EXTENDED=y
22669 +# CONFIG_SPARSEMEM_STATIC is not set
22670 CONFIG_SPLIT_PTLOCK_CPUS=4096
22671 -# CONFIG_PHYS_ADDR_T_64BIT is not set
22672 +# CONFIG_RESOURCES_64BIT is not set
22673 CONFIG_ZONE_DMA_FLAG=0
22674 CONFIG_VIRT_TO_BUS=y
22675 -CONFIG_UNEVICTABLE_LRU=y
22676 # CONFIG_HPUX is not set
22677
22678 #
22679 @@ -168,6 +138,10 @@
22680 # CONFIG_EISA is not set
22681 # CONFIG_PCI is not set
22682 # CONFIG_ARCH_SUPPORTS_MSI is not set
22683 +
22684 +#
22685 +# PCCARD (PCMCIA/CardBus) support
22686 +#
22687 # CONFIG_PCCARD is not set
22688
22689 #
22690 @@ -182,15 +156,16 @@
22691 # Executable file formats
22692 #
22693 CONFIG_BINFMT_ELF=y
22694 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
22695 -# CONFIG_HAVE_AOUT is not set
22696 CONFIG_BINFMT_MISC=m
22697 +
22698 +#
22699 +# Networking
22700 +#
22701 CONFIG_NET=y
22702
22703 #
22704 # Networking options
22705 #
22706 -CONFIG_COMPAT_NET_DEV_OPS=y
22707 CONFIG_PACKET=y
22708 CONFIG_PACKET_MMAP=y
22709 CONFIG_UNIX=y
22710 @@ -198,7 +173,6 @@
22711 CONFIG_XFRM_USER=m
22712 # CONFIG_XFRM_SUB_POLICY is not set
22713 # CONFIG_XFRM_MIGRATE is not set
22714 -# CONFIG_XFRM_STATISTICS is not set
22715 CONFIG_NET_KEY=m
22716 # CONFIG_NET_KEY_MIGRATE is not set
22717 CONFIG_INET=y
22718 @@ -229,25 +203,25 @@
22719 CONFIG_TCP_CONG_CUBIC=y
22720 CONFIG_DEFAULT_TCP_CONG="cubic"
22721 # CONFIG_TCP_MD5SIG is not set
22722 +# CONFIG_IP_VS is not set
22723 # CONFIG_IPV6 is not set
22724 +# CONFIG_INET6_XFRM_TUNNEL is not set
22725 +# CONFIG_INET6_TUNNEL is not set
22726 # CONFIG_NETWORK_SECMARK is not set
22727 CONFIG_NETFILTER=y
22728 # CONFIG_NETFILTER_DEBUG is not set
22729 -CONFIG_NETFILTER_ADVANCED=y
22730
22731 #
22732 # Core Netfilter Configuration
22733 #
22734 -# CONFIG_NETFILTER_NETLINK_QUEUE is not set
22735 -# CONFIG_NETFILTER_NETLINK_LOG is not set
22736 +# CONFIG_NETFILTER_NETLINK is not set
22737 +# CONFIG_NF_CONNTRACK_ENABLED is not set
22738 # CONFIG_NF_CONNTRACK is not set
22739 # CONFIG_NETFILTER_XTABLES is not set
22740 -# CONFIG_IP_VS is not set
22741
22742 #
22743 # IP: Netfilter Configuration
22744 #
22745 -# CONFIG_NF_DEFRAG_IPV4 is not set
22746 CONFIG_IP_NF_QUEUE=m
22747 # CONFIG_IP_NF_IPTABLES is not set
22748 # CONFIG_IP_NF_ARPTABLES is not set
22749 @@ -256,7 +230,6 @@
22750 # CONFIG_TIPC is not set
22751 # CONFIG_ATM is not set
22752 # CONFIG_BRIDGE is not set
22753 -# CONFIG_NET_DSA is not set
22754 # CONFIG_VLAN_8021Q is not set
22755 # CONFIG_DECNET is not set
22756 CONFIG_LLC=m
22757 @@ -267,26 +240,28 @@
22758 # CONFIG_LAPB is not set
22759 # CONFIG_ECONET is not set
22760 # CONFIG_WAN_ROUTER is not set
22761 +
22762 +#
22763 +# QoS and/or fair queueing
22764 +#
22765 # CONFIG_NET_SCHED is not set
22766 -# CONFIG_DCB is not set
22767
22768 #
22769 # Network testing
22770 #
22771 CONFIG_NET_PKTGEN=m
22772 # CONFIG_HAMRADIO is not set
22773 -# CONFIG_CAN is not set
22774 # CONFIG_IRDA is not set
22775 # CONFIG_BT is not set
22776 # CONFIG_AF_RXRPC is not set
22777 -# CONFIG_PHONET is not set
22778 -CONFIG_WIRELESS=y
22779 +
22780 +#
22781 +# Wireless
22782 +#
22783 # CONFIG_CFG80211 is not set
22784 -CONFIG_WIRELESS_OLD_REGULATORY=y
22785 # CONFIG_WIRELESS_EXT is not set
22786 -# CONFIG_LIB80211 is not set
22787 # CONFIG_MAC80211 is not set
22788 -# CONFIG_WIMAX is not set
22789 +# CONFIG_IEEE80211 is not set
22790 # CONFIG_RFKILL is not set
22791 # CONFIG_NET_9P is not set
22792
22793 @@ -301,8 +276,6 @@
22794 # CONFIG_STANDALONE is not set
22795 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
22796 CONFIG_FW_LOADER=y
22797 -CONFIG_FIRMWARE_IN_KERNEL=y
22798 -CONFIG_EXTRA_FIRMWARE=""
22799 # CONFIG_DEBUG_DRIVER is not set
22800 # CONFIG_DEBUG_DEVRES is not set
22801 # CONFIG_SYS_HYPERVISOR is not set
22802 @@ -325,19 +298,11 @@
22803 CONFIG_BLK_DEV_RAM=y
22804 CONFIG_BLK_DEV_RAM_COUNT=16
22805 CONFIG_BLK_DEV_RAM_SIZE=6144
22806 -# CONFIG_BLK_DEV_XIP is not set
22807 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
22808 # CONFIG_CDROM_PKTCDVD is not set
22809 CONFIG_ATA_OVER_ETH=m
22810 -# CONFIG_BLK_DEV_HD is not set
22811 CONFIG_MISC_DEVICES=y
22812 -# CONFIG_ENCLOSURE_SERVICES is not set
22813 -# CONFIG_C2PORT is not set
22814 -
22815 -#
22816 -# EEPROM support
22817 -#
22818 # CONFIG_EEPROM_93CX6 is not set
22819 -CONFIG_HAVE_IDE=y
22820 # CONFIG_IDE is not set
22821
22822 #
22823 @@ -377,17 +342,14 @@
22824 # CONFIG_SCSI_FC_ATTRS is not set
22825 CONFIG_SCSI_ISCSI_ATTRS=m
22826 # CONFIG_SCSI_SAS_LIBSAS is not set
22827 -# CONFIG_SCSI_SRP_ATTRS is not set
22828 CONFIG_SCSI_LOWLEVEL=y
22829 # CONFIG_ISCSI_TCP is not set
22830 -# CONFIG_LIBFC is not set
22831 # CONFIG_SCSI_PPA is not set
22832 # CONFIG_SCSI_IMM is not set
22833 CONFIG_SCSI_LASI700=y
22834 CONFIG_53C700_LE_ON_BE=y
22835 # CONFIG_SCSI_ZALON is not set
22836 CONFIG_SCSI_DEBUG=m
22837 -# CONFIG_SCSI_DH is not set
22838 # CONFIG_ATA is not set
22839 CONFIG_MD=y
22840 CONFIG_BLK_DEV_MD=m
22841 @@ -400,6 +362,7 @@
22842 # CONFIG_MD_FAULTY is not set
22843 # CONFIG_BLK_DEV_DM is not set
22844 CONFIG_NETDEVICES=y
22845 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
22846 CONFIG_DUMMY=m
22847 CONFIG_BONDING=m
22848 # CONFIG_MACVLAN is not set
22849 @@ -414,9 +377,6 @@
22850 # CONFIG_IBM_NEW_EMAC_RGMII is not set
22851 # CONFIG_IBM_NEW_EMAC_TAH is not set
22852 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
22853 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
22854 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
22855 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
22856 # CONFIG_B44 is not set
22857 # CONFIG_NET_POCKET is not set
22858 CONFIG_NETDEV_1000=y
22859 @@ -427,11 +387,6 @@
22860 #
22861 # CONFIG_WLAN_PRE80211 is not set
22862 # CONFIG_WLAN_80211 is not set
22863 -# CONFIG_IWLWIFI_LEDS is not set
22864 -
22865 -#
22866 -# Enable WiMAX (Networking options) to see the WiMAX drivers
22867 -#
22868 # CONFIG_WAN is not set
22869 # CONFIG_PLIP is not set
22870 CONFIG_PPP=m
22871 @@ -446,6 +401,7 @@
22872 # CONFIG_PPPOL2TP is not set
22873 # CONFIG_SLIP is not set
22874 CONFIG_SLHC=m
22875 +# CONFIG_SHAPER is not set
22876 # CONFIG_NETCONSOLE is not set
22877 # CONFIG_NETPOLL is not set
22878 # CONFIG_NET_POLL_CONTROLLER is not set
22879 @@ -467,6 +423,7 @@
22880 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
22881 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
22882 # CONFIG_INPUT_JOYDEV is not set
22883 +# CONFIG_INPUT_TSDEV is not set
22884 # CONFIG_INPUT_EVDEV is not set
22885 # CONFIG_INPUT_EVBUG is not set
22886
22887 @@ -489,8 +446,8 @@
22888 CONFIG_MOUSE_PS2_ALPS=y
22889 CONFIG_MOUSE_PS2_LOGIPS2PP=y
22890 CONFIG_MOUSE_PS2_SYNAPTICS=y
22891 +CONFIG_MOUSE_PS2_LIFEBOOK=y
22892 CONFIG_MOUSE_PS2_TRACKPOINT=y
22893 -# CONFIG_MOUSE_PS2_ELANTECH is not set
22894 # CONFIG_MOUSE_PS2_TOUCHKIT is not set
22895 CONFIG_MOUSE_SERIAL=m
22896 # CONFIG_MOUSE_VSXXXAA is not set
22897 @@ -517,11 +474,9 @@
22898 # Character devices
22899 #
22900 CONFIG_VT=y
22901 -CONFIG_CONSOLE_TRANSLATIONS=y
22902 CONFIG_VT_CONSOLE=y
22903 CONFIG_HW_CONSOLE=y
22904 # CONFIG_VT_HW_CONSOLE_BINDING is not set
22905 -CONFIG_DEVKMEM=y
22906 # CONFIG_SERIAL_NONSTANDARD is not set
22907
22908 #
22909 @@ -546,76 +501,72 @@
22910 CONFIG_SERIAL_CORE=y
22911 CONFIG_SERIAL_CORE_CONSOLE=y
22912 CONFIG_UNIX98_PTYS=y
22913 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
22914 CONFIG_LEGACY_PTYS=y
22915 CONFIG_LEGACY_PTY_COUNT=64
22916 CONFIG_PRINTER=m
22917 # CONFIG_LP_CONSOLE is not set
22918 CONFIG_PPDEV=m
22919 +# CONFIG_TIPAR is not set
22920 # CONFIG_IPMI_HANDLER is not set
22921 +# CONFIG_WATCHDOG is not set
22922 # CONFIG_HW_RANDOM is not set
22923 +CONFIG_GEN_RTC=y
22924 +CONFIG_GEN_RTC_X=y
22925 # CONFIG_R3964 is not set
22926 CONFIG_RAW_DRIVER=y
22927 CONFIG_MAX_RAW_DEVS=256
22928 # CONFIG_TCG_TPM is not set
22929 # CONFIG_I2C is not set
22930 +
22931 +#
22932 +# SPI support
22933 +#
22934 # CONFIG_SPI is not set
22935 +# CONFIG_SPI_MASTER is not set
22936 # CONFIG_W1 is not set
22937 # CONFIG_POWER_SUPPLY is not set
22938 # CONFIG_HWMON is not set
22939 -# CONFIG_THERMAL is not set
22940 -# CONFIG_THERMAL_HWMON is not set
22941 -# CONFIG_WATCHDOG is not set
22942 -CONFIG_SSB_POSSIBLE=y
22943
22944 #
22945 # Sonics Silicon Backplane
22946 #
22947 +CONFIG_SSB_POSSIBLE=y
22948 # CONFIG_SSB is not set
22949
22950 #
22951 # Multifunction device drivers
22952 #
22953 -# CONFIG_MFD_CORE is not set
22954 # CONFIG_MFD_SM501 is not set
22955 -# CONFIG_HTC_PASIC3 is not set
22956 -# CONFIG_MFD_TMIO is not set
22957 -# CONFIG_REGULATOR is not set
22958
22959 #
22960 # Multimedia devices
22961 #
22962 -
22963 -#
22964 -# Multimedia core support
22965 -#
22966 # CONFIG_VIDEO_DEV is not set
22967 # CONFIG_DVB_CORE is not set
22968 -# CONFIG_VIDEO_MEDIA is not set
22969 +# CONFIG_DAB is not set
22970
22971 #
22972 -# Multimedia drivers
22973 +# Graphics support
22974 #
22975 -# CONFIG_DAB is not set
22976 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
22977
22978 #
22979 -# Graphics support
22980 +# Display device support
22981 #
22982 +# CONFIG_DISPLAY_SUPPORT is not set
22983 # CONFIG_VGASTATE is not set
22984 CONFIG_VIDEO_OUTPUT_CONTROL=m
22985 CONFIG_FB=y
22986 # CONFIG_FIRMWARE_EDID is not set
22987 # CONFIG_FB_DDC is not set
22988 -# CONFIG_FB_BOOT_VESA_SUPPORT is not set
22989 CONFIG_FB_CFB_FILLRECT=y
22990 CONFIG_FB_CFB_COPYAREA=y
22991 CONFIG_FB_CFB_IMAGEBLIT=y
22992 -# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
22993 # CONFIG_FB_SYS_FILLRECT is not set
22994 # CONFIG_FB_SYS_COPYAREA is not set
22995 # CONFIG_FB_SYS_IMAGEBLIT is not set
22996 -# CONFIG_FB_FOREIGN_ENDIAN is not set
22997 # CONFIG_FB_SYS_FOPS is not set
22998 +CONFIG_FB_DEFERRED_IO=y
22999 # CONFIG_FB_SVGALIB is not set
23000 # CONFIG_FB_MACMODES is not set
23001 # CONFIG_FB_BACKLIGHT is not set
23002 @@ -628,14 +579,6 @@
23003 CONFIG_FB_STI=y
23004 # CONFIG_FB_S1D13XXX is not set
23005 # CONFIG_FB_VIRTUAL is not set
23006 -# CONFIG_FB_METRONOME is not set
23007 -# CONFIG_FB_MB862XX is not set
23008 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
23009 -
23010 -#
23011 -# Display device support
23012 -#
23013 -# CONFIG_DISPLAY_SUPPORT is not set
23014
23015 #
23016 # Console display driver support
23017 @@ -663,8 +606,15 @@
23018 # CONFIG_LOGO_LINUX_VGA16 is not set
23019 # CONFIG_LOGO_LINUX_CLUT224 is not set
23020 CONFIG_LOGO_PARISC_CLUT224=y
23021 +
23022 +#
23023 +# Sound
23024 +#
23025 CONFIG_SOUND=y
23026 -CONFIG_SOUND_OSS_CORE=y
23027 +
23028 +#
23029 +# Advanced Linux Sound Architecture
23030 +#
23031 CONFIG_SND=y
23032 CONFIG_SND_TIMER=y
23033 CONFIG_SND_PCM=y
23034 @@ -680,7 +630,10 @@
23035 CONFIG_SND_VERBOSE_PROCFS=y
23036 # CONFIG_SND_VERBOSE_PRINTK is not set
23037 # CONFIG_SND_DEBUG is not set
23038 -CONFIG_SND_DRIVERS=y
23039 +
23040 +#
23041 +# Generic devices
23042 +#
23043 # CONFIG_SND_DUMMY is not set
23044 # CONFIG_SND_VIRMIDI is not set
23045 # CONFIG_SND_MTPAV is not set
23046 @@ -688,82 +641,63 @@
23047 # CONFIG_SND_SERIAL_U16550 is not set
23048 # CONFIG_SND_MPU401 is not set
23049 # CONFIG_SND_PORTMAN2X4 is not set
23050 -CONFIG_SND_GSC=y
23051 +
23052 +#
23053 +# GSC devices
23054 +#
23055 CONFIG_SND_HARMONY=y
23056 +
23057 +#
23058 +# System on Chip audio support
23059 +#
23060 # CONFIG_SND_SOC is not set
23061 +
23062 +#
23063 +# SoC Audio support for SuperH
23064 +#
23065 +
23066 +#
23067 +# Open Sound System
23068 +#
23069 # CONFIG_SOUND_PRIME is not set
23070 CONFIG_HID_SUPPORT=y
23071 CONFIG_HID=y
23072 CONFIG_HID_DEBUG=y
23073 -# CONFIG_HIDRAW is not set
23074 -# CONFIG_HID_PID is not set
23075 -
23076 -#
23077 -# Special HID drivers
23078 -#
23079 -CONFIG_HID_COMPAT=y
23080 CONFIG_USB_SUPPORT=y
23081 # CONFIG_USB_ARCH_HAS_HCD is not set
23082 # CONFIG_USB_ARCH_HAS_OHCI is not set
23083 # CONFIG_USB_ARCH_HAS_EHCI is not set
23084
23085 #
23086 -# Enable Host or Gadget support to see Inventra options
23087 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
23088 #
23089
23090 #
23091 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
23092 +# USB Gadget Support
23093 #
23094 # CONFIG_USB_GADGET is not set
23095 -
23096 -#
23097 -# OTG and related infrastructure
23098 -#
23099 # CONFIG_MMC is not set
23100 -# CONFIG_MEMSTICK is not set
23101 # CONFIG_NEW_LEDS is not set
23102 -# CONFIG_ACCESSIBILITY is not set
23103 -CONFIG_RTC_LIB=y
23104 -CONFIG_RTC_CLASS=y
23105 -CONFIG_RTC_HCTOSYS=y
23106 -CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
23107 -# CONFIG_RTC_DEBUG is not set
23108 +# CONFIG_RTC_CLASS is not set
23109
23110 #
23111 -# RTC interfaces
23112 +# DMA Engine support
23113 #
23114 -CONFIG_RTC_INTF_SYSFS=y
23115 -CONFIG_RTC_INTF_PROC=y
23116 -CONFIG_RTC_INTF_DEV=y
23117 -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
23118 -# CONFIG_RTC_DRV_TEST is not set
23119 +# CONFIG_DMA_ENGINE is not set
23120
23121 #
23122 -# SPI RTC drivers
23123 +# DMA Clients
23124 #
23125
23126 #
23127 -# Platform RTC drivers
23128 +# DMA Devices
23129 #
23130 -# CONFIG_RTC_DRV_DS1286 is not set
23131 -# CONFIG_RTC_DRV_DS1511 is not set
23132 -# CONFIG_RTC_DRV_DS1553 is not set
23133 -# CONFIG_RTC_DRV_DS1742 is not set
23134 -# CONFIG_RTC_DRV_STK17TA8 is not set
23135 -# CONFIG_RTC_DRV_M48T86 is not set
23136 -# CONFIG_RTC_DRV_M48T35 is not set
23137 -# CONFIG_RTC_DRV_M48T59 is not set
23138 -# CONFIG_RTC_DRV_BQ4802 is not set
23139 -# CONFIG_RTC_DRV_V3020 is not set
23140 +# CONFIG_AUXDISPLAY is not set
23141
23142 #
23143 -# on-CPU RTC drivers
23144 +# Userspace I/O
23145 #
23146 -CONFIG_RTC_DRV_PARISC=y
23147 -# CONFIG_DMADEVICES is not set
23148 -# CONFIG_AUXDISPLAY is not set
23149 # CONFIG_UIO is not set
23150 -# CONFIG_STAGING is not set
23151
23152 #
23153 # File systems
23154 @@ -773,7 +707,7 @@
23155 # CONFIG_EXT2_FS_XIP is not set
23156 CONFIG_EXT3_FS=y
23157 # CONFIG_EXT3_FS_XATTR is not set
23158 -# CONFIG_EXT4_FS is not set
23159 +# CONFIG_EXT4DEV_FS is not set
23160 CONFIG_JBD=y
23161 # CONFIG_JBD_DEBUG is not set
23162 # CONFIG_REISERFS_FS is not set
23163 @@ -783,18 +717,19 @@
23164 # CONFIG_JFS_DEBUG is not set
23165 # CONFIG_JFS_STATISTICS is not set
23166 CONFIG_FS_POSIX_ACL=y
23167 -CONFIG_FILE_LOCKING=y
23168 CONFIG_XFS_FS=m
23169 # CONFIG_XFS_QUOTA is not set
23170 +# CONFIG_XFS_SECURITY is not set
23171 # CONFIG_XFS_POSIX_ACL is not set
23172 # CONFIG_XFS_RT is not set
23173 -# CONFIG_XFS_DEBUG is not set
23174 +# CONFIG_GFS2_FS is not set
23175 # CONFIG_OCFS2_FS is not set
23176 -# CONFIG_BTRFS_FS is not set
23177 -CONFIG_DNOTIFY=y
23178 +# CONFIG_MINIX_FS is not set
23179 +# CONFIG_ROMFS_FS is not set
23180 CONFIG_INOTIFY=y
23181 CONFIG_INOTIFY_USER=y
23182 # CONFIG_QUOTA is not set
23183 +CONFIG_DNOTIFY=y
23184 # CONFIG_AUTOFS_FS is not set
23185 CONFIG_AUTOFS4_FS=y
23186 # CONFIG_FUSE_FS is not set
23187 @@ -824,13 +759,16 @@
23188 CONFIG_PROC_FS=y
23189 CONFIG_PROC_KCORE=y
23190 CONFIG_PROC_SYSCTL=y
23191 -CONFIG_PROC_PAGE_MONITOR=y
23192 CONFIG_SYSFS=y
23193 CONFIG_TMPFS=y
23194 # CONFIG_TMPFS_POSIX_ACL is not set
23195 # CONFIG_HUGETLB_PAGE is not set
23196 +CONFIG_RAMFS=y
23197 # CONFIG_CONFIGFS_FS is not set
23198 -CONFIG_MISC_FILESYSTEMS=y
23199 +
23200 +#
23201 +# Miscellaneous filesystems
23202 +#
23203 # CONFIG_ADFS_FS is not set
23204 # CONFIG_AFFS_FS is not set
23205 # CONFIG_ECRYPT_FS is not set
23206 @@ -840,34 +778,35 @@
23207 # CONFIG_BFS_FS is not set
23208 # CONFIG_EFS_FS is not set
23209 # CONFIG_CRAMFS is not set
23210 -# CONFIG_SQUASHFS is not set
23211 # CONFIG_VXFS_FS is not set
23212 -# CONFIG_MINIX_FS is not set
23213 -# CONFIG_OMFS_FS is not set
23214 # CONFIG_HPFS_FS is not set
23215 # CONFIG_QNX4FS_FS is not set
23216 -# CONFIG_ROMFS_FS is not set
23217 # CONFIG_SYSV_FS is not set
23218 CONFIG_UFS_FS=m
23219 # CONFIG_UFS_FS_WRITE is not set
23220 # CONFIG_UFS_DEBUG is not set
23221 -CONFIG_NETWORK_FILESYSTEMS=y
23222 +
23223 +#
23224 +# Network File Systems
23225 +#
23226 CONFIG_NFS_FS=y
23227 CONFIG_NFS_V3=y
23228 # CONFIG_NFS_V3_ACL is not set
23229 CONFIG_NFS_V4=y
23230 -CONFIG_ROOT_NFS=y
23231 +CONFIG_NFS_DIRECTIO=y
23232 CONFIG_NFSD=m
23233 CONFIG_NFSD_V3=y
23234 # CONFIG_NFSD_V3_ACL is not set
23235 CONFIG_NFSD_V4=y
23236 +CONFIG_NFSD_TCP=y
23237 +CONFIG_ROOT_NFS=y
23238 CONFIG_LOCKD=y
23239 CONFIG_LOCKD_V4=y
23240 CONFIG_EXPORTFS=m
23241 CONFIG_NFS_COMMON=y
23242 CONFIG_SUNRPC=y
23243 CONFIG_SUNRPC_GSS=y
23244 -# CONFIG_SUNRPC_REGISTER_V4 is not set
23245 +# CONFIG_SUNRPC_BIND34 is not set
23246 CONFIG_RPCSEC_GSS_KRB5=y
23247 CONFIG_RPCSEC_GSS_SPKM3=m
23248 CONFIG_SMB_FS=m
23249 @@ -876,7 +815,6 @@
23250 CONFIG_CIFS=m
23251 # CONFIG_CIFS_STATS is not set
23252 # CONFIG_CIFS_WEAK_PW_HASH is not set
23253 -# CONFIG_CIFS_UPCALL is not set
23254 # CONFIG_CIFS_XATTR is not set
23255 # CONFIG_CIFS_DEBUG2 is not set
23256 # CONFIG_CIFS_EXPERIMENTAL is not set
23257 @@ -889,6 +827,10 @@
23258 #
23259 # CONFIG_PARTITION_ADVANCED is not set
23260 CONFIG_MSDOS_PARTITION=y
23261 +
23262 +#
23263 +# Native Language Support
23264 +#
23265 CONFIG_NLS=y
23266 CONFIG_NLS_DEFAULT="iso8859-1"
23267 CONFIG_NLS_CODEPAGE_437=m
23268 @@ -929,28 +871,33 @@
23269 CONFIG_NLS_KOI8_R=m
23270 CONFIG_NLS_KOI8_U=m
23271 CONFIG_NLS_UTF8=m
23272 +
23273 +#
23274 +# Distributed Lock Manager
23275 +#
23276 # CONFIG_DLM is not set
23277
23278 #
23279 +# Profiling support
23280 +#
23281 +CONFIG_PROFILING=y
23282 +CONFIG_OPROFILE=m
23283 +
23284 +#
23285 # Kernel hacking
23286 #
23287 # CONFIG_PRINTK_TIME is not set
23288 -CONFIG_ENABLE_WARN_DEPRECATED=y
23289 CONFIG_ENABLE_MUST_CHECK=y
23290 -CONFIG_FRAME_WARN=1024
23291 CONFIG_MAGIC_SYSRQ=y
23292 # CONFIG_UNUSED_SYMBOLS is not set
23293 -CONFIG_DEBUG_FS=y
23294 +# CONFIG_DEBUG_FS is not set
23295 # CONFIG_HEADERS_CHECK is not set
23296 CONFIG_DEBUG_KERNEL=y
23297 # CONFIG_DEBUG_SHIRQ is not set
23298 CONFIG_DETECT_SOFTLOCKUP=y
23299 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
23300 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
23301 CONFIG_SCHED_DEBUG=y
23302 # CONFIG_SCHEDSTATS is not set
23303 # CONFIG_TIMER_STATS is not set
23304 -# CONFIG_DEBUG_OBJECTS is not set
23305 # CONFIG_DEBUG_SLAB is not set
23306 # CONFIG_DEBUG_RT_MUTEXES is not set
23307 # CONFIG_RT_MUTEX_TESTER is not set
23308 @@ -962,32 +909,10 @@
23309 CONFIG_DEBUG_BUGVERBOSE=y
23310 # CONFIG_DEBUG_INFO is not set
23311 # CONFIG_DEBUG_VM is not set
23312 -# CONFIG_DEBUG_WRITECOUNT is not set
23313 -CONFIG_DEBUG_MEMORY_INIT=y
23314 # CONFIG_DEBUG_LIST is not set
23315 -# CONFIG_DEBUG_SG is not set
23316 -# CONFIG_DEBUG_NOTIFIERS is not set
23317 -# CONFIG_BOOT_PRINTK_DELAY is not set
23318 +CONFIG_FORCED_INLINING=y
23319 # CONFIG_RCU_TORTURE_TEST is not set
23320 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
23321 -# CONFIG_BACKTRACE_SELF_TEST is not set
23322 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
23323 # CONFIG_FAULT_INJECTION is not set
23324 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
23325 -CONFIG_NOP_TRACER=y
23326 -CONFIG_RING_BUFFER=y
23327 -CONFIG_TRACING=y
23328 -
23329 -#
23330 -# Tracers
23331 -#
23332 -# CONFIG_SCHED_TRACER is not set
23333 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
23334 -# CONFIG_BOOT_TRACER is not set
23335 -# CONFIG_TRACE_BRANCH_PROFILING is not set
23336 -# CONFIG_FTRACE_STARTUP_TEST is not set
23337 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
23338 -# CONFIG_SAMPLES is not set
23339 CONFIG_DEBUG_RODATA=y
23340
23341 #
23342 @@ -996,113 +921,57 @@
23343 CONFIG_KEYS=y
23344 CONFIG_KEYS_DEBUG_PROC_KEYS=y
23345 # CONFIG_SECURITY is not set
23346 -# CONFIG_SECURITYFS is not set
23347 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
23348 CONFIG_CRYPTO=y
23349 -
23350 -#
23351 -# Crypto core or helper
23352 -#
23353 -# CONFIG_CRYPTO_FIPS is not set
23354 CONFIG_CRYPTO_ALGAPI=y
23355 -CONFIG_CRYPTO_ALGAPI2=y
23356 -CONFIG_CRYPTO_AEAD=m
23357 -CONFIG_CRYPTO_AEAD2=y
23358 CONFIG_CRYPTO_BLKCIPHER=y
23359 -CONFIG_CRYPTO_BLKCIPHER2=y
23360 CONFIG_CRYPTO_HASH=y
23361 -CONFIG_CRYPTO_HASH2=y
23362 -CONFIG_CRYPTO_RNG2=y
23363 CONFIG_CRYPTO_MANAGER=y
23364 -CONFIG_CRYPTO_MANAGER2=y
23365 -# CONFIG_CRYPTO_GF128MUL is not set
23366 -CONFIG_CRYPTO_NULL=m
23367 -# CONFIG_CRYPTO_CRYPTD is not set
23368 -CONFIG_CRYPTO_AUTHENC=m
23369 -CONFIG_CRYPTO_TEST=m
23370 -
23371 -#
23372 -# Authenticated Encryption with Associated Data
23373 -#
23374 -# CONFIG_CRYPTO_CCM is not set
23375 -# CONFIG_CRYPTO_GCM is not set
23376 -# CONFIG_CRYPTO_SEQIV is not set
23377 -
23378 -#
23379 -# Block modes
23380 -#
23381 -CONFIG_CRYPTO_CBC=y
23382 -# CONFIG_CRYPTO_CTR is not set
23383 -# CONFIG_CRYPTO_CTS is not set
23384 -CONFIG_CRYPTO_ECB=m
23385 -# CONFIG_CRYPTO_LRW is not set
23386 -# CONFIG_CRYPTO_PCBC is not set
23387 -# CONFIG_CRYPTO_XTS is not set
23388 -
23389 -#
23390 -# Hash modes
23391 -#
23392 CONFIG_CRYPTO_HMAC=y
23393 # CONFIG_CRYPTO_XCBC is not set
23394 -
23395 -#
23396 -# Digest
23397 -#
23398 -CONFIG_CRYPTO_CRC32C=m
23399 +CONFIG_CRYPTO_NULL=m
23400 CONFIG_CRYPTO_MD4=m
23401 CONFIG_CRYPTO_MD5=y
23402 -CONFIG_CRYPTO_MICHAEL_MIC=m
23403 -# CONFIG_CRYPTO_RMD128 is not set
23404 -# CONFIG_CRYPTO_RMD160 is not set
23405 -# CONFIG_CRYPTO_RMD256 is not set
23406 -# CONFIG_CRYPTO_RMD320 is not set
23407 CONFIG_CRYPTO_SHA1=m
23408 CONFIG_CRYPTO_SHA256=m
23409 CONFIG_CRYPTO_SHA512=m
23410 -CONFIG_CRYPTO_TGR192=m
23411 CONFIG_CRYPTO_WP512=m
23412 -
23413 -#
23414 -# Ciphers
23415 -#
23416 -CONFIG_CRYPTO_AES=m
23417 -CONFIG_CRYPTO_ANUBIS=m
23418 -CONFIG_CRYPTO_ARC4=m
23419 +CONFIG_CRYPTO_TGR192=m
23420 +# CONFIG_CRYPTO_GF128MUL is not set
23421 +CONFIG_CRYPTO_ECB=m
23422 +CONFIG_CRYPTO_CBC=y
23423 +# CONFIG_CRYPTO_PCBC is not set
23424 +# CONFIG_CRYPTO_LRW is not set
23425 +# CONFIG_CRYPTO_XTS is not set
23426 +# CONFIG_CRYPTO_CRYPTD is not set
23427 +CONFIG_CRYPTO_DES=y
23428 +# CONFIG_CRYPTO_FCRYPT is not set
23429 CONFIG_CRYPTO_BLOWFISH=m
23430 -# CONFIG_CRYPTO_CAMELLIA is not set
23431 +CONFIG_CRYPTO_TWOFISH=m
23432 +CONFIG_CRYPTO_TWOFISH_COMMON=m
23433 +CONFIG_CRYPTO_SERPENT=m
23434 +CONFIG_CRYPTO_AES=m
23435 CONFIG_CRYPTO_CAST5=m
23436 CONFIG_CRYPTO_CAST6=m
23437 -CONFIG_CRYPTO_DES=y
23438 -# CONFIG_CRYPTO_FCRYPT is not set
23439 +CONFIG_CRYPTO_TEA=m
23440 +CONFIG_CRYPTO_ARC4=m
23441 CONFIG_CRYPTO_KHAZAD=m
23442 -# CONFIG_CRYPTO_SALSA20 is not set
23443 +CONFIG_CRYPTO_ANUBIS=m
23444 # CONFIG_CRYPTO_SEED is not set
23445 -CONFIG_CRYPTO_SERPENT=m
23446 -CONFIG_CRYPTO_TEA=m
23447 -CONFIG_CRYPTO_TWOFISH=m
23448 -CONFIG_CRYPTO_TWOFISH_COMMON=m
23449 -
23450 -#
23451 -# Compression
23452 -#
23453 CONFIG_CRYPTO_DEFLATE=m
23454 -# CONFIG_CRYPTO_LZO is not set
23455 -
23456 -#
23457 -# Random Number Generation
23458 -#
23459 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
23460 +CONFIG_CRYPTO_MICHAEL_MIC=m
23461 +CONFIG_CRYPTO_CRC32C=m
23462 +# CONFIG_CRYPTO_CAMELLIA is not set
23463 +CONFIG_CRYPTO_TEST=m
23464 +# CONFIG_CRYPTO_AUTHENC is not set
23465 # CONFIG_CRYPTO_HW is not set
23466
23467 #
23468 # Library routines
23469 #
23470 CONFIG_BITREVERSE=y
23471 -CONFIG_GENERIC_FIND_LAST_BIT=y
23472 CONFIG_CRC_CCITT=m
23473 # CONFIG_CRC16 is not set
23474 -# CONFIG_CRC_T10DIF is not set
23475 -CONFIG_CRC_ITU_T=m
23476 +# CONFIG_CRC_ITU_T is not set
23477 CONFIG_CRC32=y
23478 # CONFIG_CRC7 is not set
23479 CONFIG_LIBCRC32C=m
23480 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/configs/a500_defconfig linux-2.6.29-rc3.owrt/arch/parisc/configs/a500_defconfig
23481 --- linux-2.6.29.owrt/arch/parisc/configs/a500_defconfig 2009-05-10 22:04:39.000000000 +0200
23482 +++ linux-2.6.29-rc3.owrt/arch/parisc/configs/a500_defconfig 2009-05-10 23:48:28.000000000 +0200
23483 @@ -1,7 +1,7 @@
23484 #
23485 # Automatically generated make config: don't edit
23486 -# Linux kernel version: 2.6.29-rc8
23487 -# Fri Mar 13 01:32:56 2009
23488 +# Linux kernel version: 2.6.23
23489 +# Fri Oct 12 21:12:44 2007
23490 #
23491 CONFIG_PARISC=y
23492 CONFIG_MMU=y
23493 @@ -34,30 +34,18 @@
23494 CONFIG_POSIX_MQUEUE=y
23495 # CONFIG_BSD_PROCESS_ACCT is not set
23496 # CONFIG_TASKSTATS is not set
23497 +# CONFIG_USER_NS is not set
23498 # CONFIG_AUDIT is not set
23499 -
23500 -#
23501 -# RCU Subsystem
23502 -#
23503 -CONFIG_CLASSIC_RCU=y
23504 -# CONFIG_TREE_RCU is not set
23505 -# CONFIG_PREEMPT_RCU is not set
23506 -# CONFIG_TREE_RCU_TRACE is not set
23507 -# CONFIG_PREEMPT_RCU_TRACE is not set
23508 CONFIG_IKCONFIG=y
23509 CONFIG_IKCONFIG_PROC=y
23510 CONFIG_LOG_BUF_SHIFT=16
23511 -# CONFIG_GROUP_SCHED is not set
23512 -# CONFIG_CGROUPS is not set
23513 +# CONFIG_CPUSETS is not set
23514 CONFIG_SYSFS_DEPRECATED=y
23515 -CONFIG_SYSFS_DEPRECATED_V2=y
23516 # CONFIG_RELAY is not set
23517 -# CONFIG_NAMESPACES is not set
23518 CONFIG_BLK_DEV_INITRD=y
23519 CONFIG_INITRAMFS_SOURCE=""
23520 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
23521 CONFIG_SYSCTL=y
23522 -CONFIG_ANON_INODES=y
23523 CONFIG_EMBEDDED=y
23524 CONFIG_SYSCTL_SYSCALL=y
23525 CONFIG_KALLSYMS=y
23526 @@ -69,40 +57,28 @@
23527 CONFIG_ELF_CORE=y
23528 CONFIG_BASE_FULL=y
23529 CONFIG_FUTEX=y
23530 +CONFIG_ANON_INODES=y
23531 CONFIG_EPOLL=y
23532 CONFIG_SIGNALFD=y
23533 -CONFIG_TIMERFD=y
23534 CONFIG_EVENTFD=y
23535 CONFIG_SHMEM=y
23536 -CONFIG_AIO=y
23537 CONFIG_VM_EVENT_COUNTERS=y
23538 -CONFIG_PCI_QUIRKS=y
23539 -CONFIG_COMPAT_BRK=y
23540 CONFIG_SLAB=y
23541 # CONFIG_SLUB is not set
23542 # CONFIG_SLOB is not set
23543 -CONFIG_PROFILING=y
23544 -CONFIG_TRACEPOINTS=y
23545 -# CONFIG_MARKERS is not set
23546 -CONFIG_OPROFILE=m
23547 -CONFIG_HAVE_OPROFILE=y
23548 -CONFIG_USE_GENERIC_SMP_HELPERS=y
23549 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
23550 -CONFIG_SLABINFO=y
23551 CONFIG_RT_MUTEXES=y
23552 +# CONFIG_TINY_SHMEM is not set
23553 CONFIG_BASE_SMALL=0
23554 CONFIG_MODULES=y
23555 -# CONFIG_MODULE_FORCE_LOAD is not set
23556 CONFIG_MODULE_UNLOAD=y
23557 CONFIG_MODULE_FORCE_UNLOAD=y
23558 # CONFIG_MODVERSIONS is not set
23559 # CONFIG_MODULE_SRCVERSION_ALL is not set
23560 -CONFIG_INIT_ALL_POSSIBLE=y
23561 +CONFIG_KMOD=y
23562 CONFIG_STOP_MACHINE=y
23563 CONFIG_BLOCK=y
23564 # CONFIG_BLK_DEV_IO_TRACE is not set
23565 # CONFIG_BLK_DEV_BSG is not set
23566 -# CONFIG_BLK_DEV_INTEGRITY is not set
23567 CONFIG_BLOCK_COMPAT=y
23568
23569 #
23570 @@ -117,7 +93,6 @@
23571 CONFIG_DEFAULT_CFQ=y
23572 # CONFIG_DEFAULT_NOOP is not set
23573 CONFIG_DEFAULT_IOSCHED="cfq"
23574 -# CONFIG_FREEZER is not set
23575
23576 #
23577 # Processor type and features
23578 @@ -143,12 +118,12 @@
23579 CONFIG_PREEMPT_NONE=y
23580 # CONFIG_PREEMPT_VOLUNTARY is not set
23581 # CONFIG_PREEMPT is not set
23582 +CONFIG_PREEMPT_BKL=y
23583 # CONFIG_HZ_100 is not set
23584 CONFIG_HZ_250=y
23585 # CONFIG_HZ_300 is not set
23586 # CONFIG_HZ_1000 is not set
23587 CONFIG_HZ=250
23588 -# CONFIG_SCHED_HRTICK is not set
23589 CONFIG_SELECT_MEMORY_MODEL=y
23590 # CONFIG_FLATMEM_MANUAL is not set
23591 CONFIG_DISCONTIGMEM_MANUAL=y
23592 @@ -156,12 +131,11 @@
23593 CONFIG_DISCONTIGMEM=y
23594 CONFIG_FLAT_NODE_MEM_MAP=y
23595 CONFIG_NEED_MULTIPLE_NODES=y
23596 -CONFIG_PAGEFLAGS_EXTENDED=y
23597 +# CONFIG_SPARSEMEM_STATIC is not set
23598 CONFIG_SPLIT_PTLOCK_CPUS=4
23599 -CONFIG_PHYS_ADDR_T_64BIT=y
23600 +CONFIG_RESOURCES_64BIT=y
23601 CONFIG_ZONE_DMA_FLAG=0
23602 CONFIG_VIRT_TO_BUS=y
23603 -CONFIG_UNEVICTABLE_LRU=y
23604 CONFIG_COMPAT=y
23605 CONFIG_NR_CPUS=8
23606
23607 @@ -171,13 +145,14 @@
23608 # CONFIG_GSC is not set
23609 CONFIG_PCI=y
23610 # CONFIG_ARCH_SUPPORTS_MSI is not set
23611 -CONFIG_PCI_LEGACY=y
23612 # CONFIG_PCI_DEBUG is not set
23613 -# CONFIG_PCI_STUB is not set
23614 CONFIG_PCI_LBA=y
23615 CONFIG_IOSAPIC=y
23616 CONFIG_IOMMU_SBA=y
23617 -CONFIG_IOMMU_HELPER=y
23618 +
23619 +#
23620 +# PCCARD (PCMCIA/CardBus) support
23621 +#
23622 CONFIG_PCCARD=m
23623 # CONFIG_PCMCIA_DEBUG is not set
23624 CONFIG_PCMCIA=m
23625 @@ -212,15 +187,16 @@
23626 # Executable file formats
23627 #
23628 CONFIG_BINFMT_ELF=y
23629 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
23630 -# CONFIG_HAVE_AOUT is not set
23631 # CONFIG_BINFMT_MISC is not set
23632 +
23633 +#
23634 +# Networking
23635 +#
23636 CONFIG_NET=y
23637
23638 #
23639 # Networking options
23640 #
23641 -CONFIG_COMPAT_NET_DEV_OPS=y
23642 CONFIG_PACKET=y
23643 CONFIG_PACKET_MMAP=y
23644 CONFIG_UNIX=y
23645 @@ -228,8 +204,6 @@
23646 CONFIG_XFRM_USER=m
23647 # CONFIG_XFRM_SUB_POLICY is not set
23648 # CONFIG_XFRM_MIGRATE is not set
23649 -# CONFIG_XFRM_STATISTICS is not set
23650 -CONFIG_XFRM_IPCOMP=m
23651 CONFIG_NET_KEY=m
23652 # CONFIG_NET_KEY_MIGRATE is not set
23653 CONFIG_INET=y
23654 @@ -260,6 +234,7 @@
23655 CONFIG_TCP_CONG_CUBIC=y
23656 CONFIG_DEFAULT_TCP_CONG="cubic"
23657 # CONFIG_TCP_MD5SIG is not set
23658 +# CONFIG_IP_VS is not set
23659 CONFIG_IPV6=m
23660 # CONFIG_IPV6_PRIVACY is not set
23661 # CONFIG_IPV6_ROUTER_PREF is not set
23662 @@ -275,72 +250,66 @@
23663 CONFIG_INET6_XFRM_MODE_BEET=m
23664 # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
23665 CONFIG_IPV6_SIT=m
23666 -CONFIG_IPV6_NDISC_NODETYPE=y
23667 CONFIG_IPV6_TUNNEL=m
23668 # CONFIG_IPV6_MULTIPLE_TABLES is not set
23669 -# CONFIG_IPV6_MROUTE is not set
23670 # CONFIG_NETWORK_SECMARK is not set
23671 CONFIG_NETFILTER=y
23672 # CONFIG_NETFILTER_DEBUG is not set
23673 -CONFIG_NETFILTER_ADVANCED=y
23674
23675 #
23676 # Core Netfilter Configuration
23677 #
23678 -# CONFIG_NETFILTER_NETLINK_QUEUE is not set
23679 -# CONFIG_NETFILTER_NETLINK_LOG is not set
23680 +# CONFIG_NETFILTER_NETLINK is not set
23681 +# CONFIG_NF_CONNTRACK_ENABLED is not set
23682 # CONFIG_NF_CONNTRACK is not set
23683 CONFIG_NETFILTER_XTABLES=m
23684 # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
23685 # CONFIG_NETFILTER_XT_TARGET_DSCP is not set
23686 # CONFIG_NETFILTER_XT_TARGET_MARK is not set
23687 -# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
23688 # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
23689 -# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set
23690 +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
23691 # CONFIG_NETFILTER_XT_TARGET_TRACE is not set
23692 # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
23693 -# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
23694 # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
23695 # CONFIG_NETFILTER_XT_MATCH_DCCP is not set
23696 # CONFIG_NETFILTER_XT_MATCH_DSCP is not set
23697 # CONFIG_NETFILTER_XT_MATCH_ESP is not set
23698 -# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
23699 -# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
23700 # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
23701 # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
23702 # CONFIG_NETFILTER_XT_MATCH_MAC is not set
23703 # CONFIG_NETFILTER_XT_MATCH_MARK is not set
23704 -# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
23705 -# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
23706 # CONFIG_NETFILTER_XT_MATCH_POLICY is not set
23707 +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
23708 # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
23709 # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
23710 -# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set
23711 # CONFIG_NETFILTER_XT_MATCH_REALM is not set
23712 -# CONFIG_NETFILTER_XT_MATCH_RECENT is not set
23713 # CONFIG_NETFILTER_XT_MATCH_SCTP is not set
23714 # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
23715 # CONFIG_NETFILTER_XT_MATCH_STRING is not set
23716 # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
23717 # CONFIG_NETFILTER_XT_MATCH_TIME is not set
23718 # CONFIG_NETFILTER_XT_MATCH_U32 is not set
23719 -# CONFIG_IP_VS is not set
23720 +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
23721
23722 #
23723 # IP: Netfilter Configuration
23724 #
23725 -# CONFIG_NF_DEFRAG_IPV4 is not set
23726 CONFIG_IP_NF_QUEUE=m
23727 CONFIG_IP_NF_IPTABLES=m
23728 -# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
23729 -# CONFIG_IP_NF_MATCH_AH is not set
23730 +CONFIG_IP_NF_MATCH_IPRANGE=m
23731 +CONFIG_IP_NF_MATCH_TOS=m
23732 +CONFIG_IP_NF_MATCH_RECENT=m
23733 CONFIG_IP_NF_MATCH_ECN=m
23734 +# CONFIG_IP_NF_MATCH_AH is not set
23735 CONFIG_IP_NF_MATCH_TTL=m
23736 +CONFIG_IP_NF_MATCH_OWNER=m
23737 +# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
23738 CONFIG_IP_NF_FILTER=m
23739 CONFIG_IP_NF_TARGET_REJECT=m
23740 CONFIG_IP_NF_TARGET_LOG=m
23741 CONFIG_IP_NF_TARGET_ULOG=m
23742 CONFIG_IP_NF_MANGLE=m
23743 +CONFIG_IP_NF_TARGET_TOS=m
23744 CONFIG_IP_NF_TARGET_ECN=m
23745 # CONFIG_IP_NF_TARGET_TTL is not set
23746 CONFIG_IP_NF_RAW=m
23747 @@ -349,30 +318,33 @@
23748 CONFIG_IP_NF_ARP_MANGLE=m
23749
23750 #
23751 -# IPv6: Netfilter Configuration
23752 +# IPv6: Netfilter Configuration (EXPERIMENTAL)
23753 #
23754 # CONFIG_IP6_NF_QUEUE is not set
23755 CONFIG_IP6_NF_IPTABLES=m
23756 -# CONFIG_IP6_NF_MATCH_AH is not set
23757 -# CONFIG_IP6_NF_MATCH_EUI64 is not set
23758 -CONFIG_IP6_NF_MATCH_FRAG=m
23759 +CONFIG_IP6_NF_MATCH_RT=m
23760 CONFIG_IP6_NF_MATCH_OPTS=m
23761 +CONFIG_IP6_NF_MATCH_FRAG=m
23762 CONFIG_IP6_NF_MATCH_HL=m
23763 +# CONFIG_IP6_NF_MATCH_OWNER is not set
23764 CONFIG_IP6_NF_MATCH_IPV6HEADER=m
23765 +# CONFIG_IP6_NF_MATCH_AH is not set
23766 # CONFIG_IP6_NF_MATCH_MH is not set
23767 -CONFIG_IP6_NF_MATCH_RT=m
23768 -CONFIG_IP6_NF_TARGET_LOG=m
23769 +# CONFIG_IP6_NF_MATCH_EUI64 is not set
23770 CONFIG_IP6_NF_FILTER=m
23771 +CONFIG_IP6_NF_TARGET_LOG=m
23772 CONFIG_IP6_NF_TARGET_REJECT=m
23773 CONFIG_IP6_NF_MANGLE=m
23774 # CONFIG_IP6_NF_TARGET_HL is not set
23775 CONFIG_IP6_NF_RAW=m
23776 CONFIG_IP_DCCP=m
23777 CONFIG_INET_DCCP_DIAG=m
23778 +CONFIG_IP_DCCP_ACKVEC=y
23779
23780 #
23781 # DCCP CCIDs Configuration (EXPERIMENTAL)
23782 #
23783 +CONFIG_IP_DCCP_CCID2=m
23784 # CONFIG_IP_DCCP_CCID2_DEBUG is not set
23785 # CONFIG_IP_DCCP_CCID3 is not set
23786
23787 @@ -384,7 +356,6 @@
23788 # CONFIG_TIPC is not set
23789 # CONFIG_ATM is not set
23790 # CONFIG_BRIDGE is not set
23791 -# CONFIG_NET_DSA is not set
23792 # CONFIG_VLAN_8021Q is not set
23793 # CONFIG_DECNET is not set
23794 CONFIG_LLC=m
23795 @@ -395,26 +366,28 @@
23796 # CONFIG_LAPB is not set
23797 # CONFIG_ECONET is not set
23798 # CONFIG_WAN_ROUTER is not set
23799 +
23800 +#
23801 +# QoS and/or fair queueing
23802 +#
23803 # CONFIG_NET_SCHED is not set
23804 -# CONFIG_DCB is not set
23805
23806 #
23807 # Network testing
23808 #
23809 CONFIG_NET_PKTGEN=m
23810 # CONFIG_HAMRADIO is not set
23811 -# CONFIG_CAN is not set
23812 # CONFIG_IRDA is not set
23813 # CONFIG_BT is not set
23814 # CONFIG_AF_RXRPC is not set
23815 -# CONFIG_PHONET is not set
23816 -CONFIG_WIRELESS=y
23817 +
23818 +#
23819 +# Wireless
23820 +#
23821 # CONFIG_CFG80211 is not set
23822 -CONFIG_WIRELESS_OLD_REGULATORY=y
23823 # CONFIG_WIRELESS_EXT is not set
23824 -# CONFIG_LIB80211 is not set
23825 # CONFIG_MAC80211 is not set
23826 -# CONFIG_WIMAX is not set
23827 +# CONFIG_IEEE80211 is not set
23828 # CONFIG_RFKILL is not set
23829 # CONFIG_NET_9P is not set
23830
23831 @@ -429,8 +402,6 @@
23832 # CONFIG_STANDALONE is not set
23833 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
23834 CONFIG_FW_LOADER=y
23835 -CONFIG_FIRMWARE_IN_KERNEL=y
23836 -CONFIG_EXTRA_FIRMWARE=""
23837 # CONFIG_DEBUG_DRIVER is not set
23838 # CONFIG_DEBUG_DEVRES is not set
23839 # CONFIG_SYS_HYPERVISOR is not set
23840 @@ -450,23 +421,14 @@
23841 CONFIG_BLK_DEV_RAM=y
23842 CONFIG_BLK_DEV_RAM_COUNT=16
23843 CONFIG_BLK_DEV_RAM_SIZE=6144
23844 -# CONFIG_BLK_DEV_XIP is not set
23845 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
23846 # CONFIG_CDROM_PKTCDVD is not set
23847 # CONFIG_ATA_OVER_ETH is not set
23848 -# CONFIG_BLK_DEV_HD is not set
23849 CONFIG_MISC_DEVICES=y
23850 # CONFIG_PHANTOM is not set
23851 +# CONFIG_EEPROM_93CX6 is not set
23852 # CONFIG_SGI_IOC4 is not set
23853 # CONFIG_TIFM_CORE is not set
23854 -# CONFIG_ENCLOSURE_SERVICES is not set
23855 -# CONFIG_HP_ILO is not set
23856 -# CONFIG_C2PORT is not set
23857 -
23858 -#
23859 -# EEPROM support
23860 -#
23861 -# CONFIG_EEPROM_93CX6 is not set
23862 -CONFIG_HAVE_IDE=y
23863 # CONFIG_IDE is not set
23864
23865 #
23866 @@ -506,10 +468,8 @@
23867 CONFIG_SCSI_FC_ATTRS=m
23868 CONFIG_SCSI_ISCSI_ATTRS=m
23869 # CONFIG_SCSI_SAS_LIBSAS is not set
23870 -# CONFIG_SCSI_SRP_ATTRS is not set
23871 CONFIG_SCSI_LOWLEVEL=y
23872 # CONFIG_ISCSI_TCP is not set
23873 -# CONFIG_SCSI_CXGB3_ISCSI is not set
23874 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
23875 # CONFIG_SCSI_3W_9XXX is not set
23876 # CONFIG_SCSI_ACARD is not set
23877 @@ -518,21 +478,16 @@
23878 # CONFIG_SCSI_AIC7XXX_OLD is not set
23879 # CONFIG_SCSI_AIC79XX is not set
23880 # CONFIG_SCSI_AIC94XX is not set
23881 -# CONFIG_SCSI_DPT_I2O is not set
23882 -# CONFIG_SCSI_ADVANSYS is not set
23883 # CONFIG_SCSI_ARCMSR is not set
23884 # CONFIG_MEGARAID_NEWGEN is not set
23885 # CONFIG_MEGARAID_LEGACY is not set
23886 # CONFIG_MEGARAID_SAS is not set
23887 # CONFIG_SCSI_HPTIOP is not set
23888 -# CONFIG_LIBFC is not set
23889 -# CONFIG_FCOE is not set
23890 # CONFIG_SCSI_DMX3191D is not set
23891 # CONFIG_SCSI_FUTURE_DOMAIN is not set
23892 # CONFIG_SCSI_IPS is not set
23893 # CONFIG_SCSI_INITIO is not set
23894 # CONFIG_SCSI_INIA100 is not set
23895 -# CONFIG_SCSI_MVSAS is not set
23896 # CONFIG_SCSI_STEX is not set
23897 CONFIG_SCSI_SYM53C8XX_2=y
23898 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
23899 @@ -548,11 +503,9 @@
23900 CONFIG_SCSI_DEBUG=m
23901 # CONFIG_SCSI_SRP is not set
23902 # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
23903 -# CONFIG_SCSI_DH is not set
23904 # CONFIG_ATA is not set
23905 CONFIG_MD=y
23906 CONFIG_BLK_DEV_MD=y
23907 -CONFIG_MD_AUTODETECT=y
23908 CONFIG_MD_LINEAR=y
23909 CONFIG_MD_RAID0=y
23910 CONFIG_MD_RAID1=y
23911 @@ -561,6 +514,10 @@
23912 # CONFIG_MD_MULTIPATH is not set
23913 # CONFIG_MD_FAULTY is not set
23914 # CONFIG_BLK_DEV_DM is not set
23915 +
23916 +#
23917 +# Fusion MPT device support
23918 +#
23919 CONFIG_FUSION=y
23920 CONFIG_FUSION_SPI=m
23921 CONFIG_FUSION_FC=m
23922 @@ -572,40 +529,20 @@
23923 #
23924 # IEEE 1394 (FireWire) support
23925 #
23926 -
23927 -#
23928 -# Enable only one of the two stacks, unless you know what you are doing
23929 -#
23930 # CONFIG_FIREWIRE is not set
23931 # CONFIG_IEEE1394 is not set
23932 # CONFIG_I2O is not set
23933 CONFIG_NETDEVICES=y
23934 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
23935 CONFIG_DUMMY=m
23936 CONFIG_BONDING=m
23937 # CONFIG_MACVLAN is not set
23938 # CONFIG_EQUALIZER is not set
23939 CONFIG_TUN=m
23940 # CONFIG_VETH is not set
23941 +# CONFIG_IP1000 is not set
23942 # CONFIG_ARCNET is not set
23943 -CONFIG_PHYLIB=m
23944 -
23945 -#
23946 -# MII PHY device drivers
23947 -#
23948 -# CONFIG_MARVELL_PHY is not set
23949 -# CONFIG_DAVICOM_PHY is not set
23950 -# CONFIG_QSEMI_PHY is not set
23951 -# CONFIG_LXT_PHY is not set
23952 -# CONFIG_CICADA_PHY is not set
23953 -# CONFIG_VITESSE_PHY is not set
23954 -# CONFIG_SMSC_PHY is not set
23955 -# CONFIG_BROADCOM_PHY is not set
23956 -# CONFIG_ICPLUS_PHY is not set
23957 -# CONFIG_REALTEK_PHY is not set
23958 -# CONFIG_NATIONAL_PHY is not set
23959 -# CONFIG_STE10XP is not set
23960 -# CONFIG_LSI_ET1011C_PHY is not set
23961 -# CONFIG_MDIO_BITBANG is not set
23962 +# CONFIG_PHYLIB is not set
23963 CONFIG_NET_ETHERNET=y
23964 CONFIG_MII=m
23965 # CONFIG_HAPPYMEAL is not set
23966 @@ -630,38 +567,33 @@
23967 # CONFIG_IBM_NEW_EMAC_RGMII is not set
23968 # CONFIG_IBM_NEW_EMAC_TAH is not set
23969 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
23970 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
23971 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
23972 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
23973 CONFIG_NET_PCI=y
23974 CONFIG_PCNET32=m
23975 +# CONFIG_PCNET32_NAPI is not set
23976 # CONFIG_AMD8111_ETH is not set
23977 # CONFIG_ADAPTEC_STARFIRE is not set
23978 # CONFIG_B44 is not set
23979 # CONFIG_FORCEDETH is not set
23980 +# CONFIG_EEPRO100 is not set
23981 CONFIG_E100=m
23982 # CONFIG_FEALNX is not set
23983 # CONFIG_NATSEMI is not set
23984 # CONFIG_NE2K_PCI is not set
23985 # CONFIG_8139CP is not set
23986 # CONFIG_8139TOO is not set
23987 -# CONFIG_R6040 is not set
23988 # CONFIG_SIS900 is not set
23989 # CONFIG_EPIC100 is not set
23990 -# CONFIG_SMSC9420 is not set
23991 # CONFIG_SUNDANCE is not set
23992 -# CONFIG_TLAN is not set
23993 # CONFIG_VIA_RHINE is not set
23994 # CONFIG_SC92031 is not set
23995 -# CONFIG_ATL2 is not set
23996 CONFIG_NETDEV_1000=y
23997 CONFIG_ACENIC=m
23998 CONFIG_ACENIC_OMIT_TIGON_I=y
23999 # CONFIG_DL2K is not set
24000 CONFIG_E1000=m
24001 +CONFIG_E1000_NAPI=y
24002 +# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
24003 # CONFIG_E1000E is not set
24004 -# CONFIG_IP1000 is not set
24005 -# CONFIG_IGB is not set
24006 # CONFIG_NS83820 is not set
24007 # CONFIG_HAMACHI is not set
24008 # CONFIG_YELLOWFIN is not set
24009 @@ -669,31 +601,23 @@
24010 # CONFIG_SIS190 is not set
24011 # CONFIG_SKGE is not set
24012 # CONFIG_SKY2 is not set
24013 +# CONFIG_SK98LIN is not set
24014 # CONFIG_VIA_VELOCITY is not set
24015 CONFIG_TIGON3=m
24016 # CONFIG_BNX2 is not set
24017 # CONFIG_QLA3XXX is not set
24018 # CONFIG_ATL1 is not set
24019 -# CONFIG_ATL1E is not set
24020 -# CONFIG_ATL1C is not set
24021 -# CONFIG_JME is not set
24022 CONFIG_NETDEV_10000=y
24023 # CONFIG_CHELSIO_T1 is not set
24024 -CONFIG_CHELSIO_T3_DEPENDS=y
24025 # CONFIG_CHELSIO_T3 is not set
24026 -# CONFIG_ENIC is not set
24027 # CONFIG_IXGBE is not set
24028 # CONFIG_IXGB is not set
24029 # CONFIG_S2IO is not set
24030 # CONFIG_MYRI10GE is not set
24031 # CONFIG_NETXEN_NIC is not set
24032 # CONFIG_NIU is not set
24033 -# CONFIG_MLX4_EN is not set
24034 # CONFIG_MLX4_CORE is not set
24035 # CONFIG_TEHUTI is not set
24036 -# CONFIG_BNX2X is not set
24037 -# CONFIG_QLGE is not set
24038 -# CONFIG_SFC is not set
24039 # CONFIG_TR is not set
24040
24041 #
24042 @@ -701,11 +625,6 @@
24043 #
24044 # CONFIG_WLAN_PRE80211 is not set
24045 # CONFIG_WLAN_80211 is not set
24046 -# CONFIG_IWLWIFI_LEDS is not set
24047 -
24048 -#
24049 -# Enable WiMAX (Networking options) to see the WiMAX drivers
24050 -#
24051 CONFIG_NET_PCMCIA=y
24052 CONFIG_PCMCIA_3C589=m
24053 CONFIG_PCMCIA_3C574=m
24054 @@ -731,6 +650,7 @@
24055 # CONFIG_SLIP is not set
24056 CONFIG_SLHC=m
24057 # CONFIG_NET_FC is not set
24058 +# CONFIG_SHAPER is not set
24059 # CONFIG_NETCONSOLE is not set
24060 # CONFIG_NETPOLL is not set
24061 # CONFIG_NET_POLL_CONTROLLER is not set
24062 @@ -749,6 +669,7 @@
24063 #
24064 # CONFIG_INPUT_MOUSEDEV is not set
24065 # CONFIG_INPUT_JOYDEV is not set
24066 +# CONFIG_INPUT_TSDEV is not set
24067 # CONFIG_INPUT_EVDEV is not set
24068 # CONFIG_INPUT_EVBUG is not set
24069
24070 @@ -772,13 +693,10 @@
24071 # Character devices
24072 #
24073 CONFIG_VT=y
24074 -CONFIG_CONSOLE_TRANSLATIONS=y
24075 CONFIG_VT_CONSOLE=y
24076 CONFIG_HW_CONSOLE=y
24077 # CONFIG_VT_HW_CONSOLE_BINDING is not set
24078 -CONFIG_DEVKMEM=y
24079 # CONFIG_SERIAL_NONSTANDARD is not set
24080 -# CONFIG_NOZOMI is not set
24081
24082 #
24083 # Serial drivers
24084 @@ -803,12 +721,17 @@
24085 CONFIG_SERIAL_CORE_CONSOLE=y
24086 # CONFIG_SERIAL_JSM is not set
24087 CONFIG_UNIX98_PTYS=y
24088 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
24089 # CONFIG_LEGACY_PTYS is not set
24090 # CONFIG_IPMI_HANDLER is not set
24091 +# CONFIG_WATCHDOG is not set
24092 # CONFIG_HW_RANDOM is not set
24093 +CONFIG_GEN_RTC=y
24094 +CONFIG_GEN_RTC_X=y
24095 # CONFIG_R3964 is not set
24096 # CONFIG_APPLICOM is not set
24097 +CONFIG_AGP=y
24098 +CONFIG_AGP_PARISC=y
24099 +# CONFIG_DRM is not set
24100
24101 #
24102 # PCMCIA character devices
24103 @@ -816,66 +739,51 @@
24104 # CONFIG_SYNCLINK_CS is not set
24105 # CONFIG_CARDMAN_4000 is not set
24106 # CONFIG_CARDMAN_4040 is not set
24107 -# CONFIG_IPWIRELESS is not set
24108 CONFIG_RAW_DRIVER=y
24109 CONFIG_MAX_RAW_DEVS=256
24110 # CONFIG_TCG_TPM is not set
24111 CONFIG_DEVPORT=y
24112 # CONFIG_I2C is not set
24113 +
24114 +#
24115 +# SPI support
24116 +#
24117 # CONFIG_SPI is not set
24118 +# CONFIG_SPI_MASTER is not set
24119 # CONFIG_W1 is not set
24120 # CONFIG_POWER_SUPPLY is not set
24121 # CONFIG_HWMON is not set
24122 -# CONFIG_THERMAL is not set
24123 -# CONFIG_THERMAL_HWMON is not set
24124 -# CONFIG_WATCHDOG is not set
24125 -CONFIG_SSB_POSSIBLE=y
24126
24127 #
24128 # Sonics Silicon Backplane
24129 #
24130 +CONFIG_SSB_POSSIBLE=y
24131 # CONFIG_SSB is not set
24132
24133 #
24134 # Multifunction device drivers
24135 #
24136 -# CONFIG_MFD_CORE is not set
24137 # CONFIG_MFD_SM501 is not set
24138 -# CONFIG_HTC_PASIC3 is not set
24139 -# CONFIG_MFD_TMIO is not set
24140 -# CONFIG_REGULATOR is not set
24141
24142 #
24143 # Multimedia devices
24144 #
24145 -
24146 -#
24147 -# Multimedia core support
24148 -#
24149 # CONFIG_VIDEO_DEV is not set
24150 # CONFIG_DVB_CORE is not set
24151 -# CONFIG_VIDEO_MEDIA is not set
24152 -
24153 -#
24154 -# Multimedia drivers
24155 -#
24156 # CONFIG_DAB is not set
24157
24158 #
24159 # Graphics support
24160 #
24161 -CONFIG_AGP=y
24162 -CONFIG_AGP_PARISC=y
24163 -# CONFIG_DRM is not set
24164 -# CONFIG_VGASTATE is not set
24165 -# CONFIG_VIDEO_OUTPUT_CONTROL is not set
24166 -# CONFIG_FB is not set
24167 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
24168
24169 #
24170 # Display device support
24171 #
24172 # CONFIG_DISPLAY_SUPPORT is not set
24173 +# CONFIG_VGASTATE is not set
24174 +# CONFIG_VIDEO_OUTPUT_CONTROL is not set
24175 +# CONFIG_FB is not set
24176
24177 #
24178 # Console display driver support
24179 @@ -884,83 +792,50 @@
24180 CONFIG_DUMMY_CONSOLE_COLUMNS=160
24181 CONFIG_DUMMY_CONSOLE_ROWS=64
24182 # CONFIG_STI_CONSOLE is not set
24183 +
24184 +#
24185 +# Sound
24186 +#
24187 # CONFIG_SOUND is not set
24188 CONFIG_HID_SUPPORT=y
24189 CONFIG_HID=y
24190 # CONFIG_HID_DEBUG is not set
24191 -# CONFIG_HIDRAW is not set
24192 -# CONFIG_HID_PID is not set
24193 -
24194 -#
24195 -# Special HID drivers
24196 -#
24197 -CONFIG_HID_COMPAT=y
24198 CONFIG_USB_SUPPORT=y
24199 CONFIG_USB_ARCH_HAS_HCD=y
24200 CONFIG_USB_ARCH_HAS_OHCI=y
24201 CONFIG_USB_ARCH_HAS_EHCI=y
24202 # CONFIG_USB is not set
24203 -# CONFIG_USB_OTG_WHITELIST is not set
24204 -# CONFIG_USB_OTG_BLACKLIST_HUB is not set
24205
24206 #
24207 -# Enable Host or Gadget support to see Inventra options
24208 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
24209 #
24210
24211 #
24212 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
24213 +# USB Gadget Support
24214 #
24215 # CONFIG_USB_GADGET is not set
24216 -
24217 -#
24218 -# OTG and related infrastructure
24219 -#
24220 -# CONFIG_UWB is not set
24221 # CONFIG_MMC is not set
24222 -# CONFIG_MEMSTICK is not set
24223 # CONFIG_NEW_LEDS is not set
24224 -# CONFIG_ACCESSIBILITY is not set
24225 # CONFIG_INFINIBAND is not set
24226 -CONFIG_RTC_LIB=y
24227 -CONFIG_RTC_CLASS=y
24228 -CONFIG_RTC_HCTOSYS=y
24229 -CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
24230 -# CONFIG_RTC_DEBUG is not set
24231 +# CONFIG_RTC_CLASS is not set
24232
24233 #
24234 -# RTC interfaces
24235 +# DMA Engine support
24236 #
24237 -CONFIG_RTC_INTF_SYSFS=y
24238 -CONFIG_RTC_INTF_PROC=y
24239 -CONFIG_RTC_INTF_DEV=y
24240 -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
24241 -# CONFIG_RTC_DRV_TEST is not set
24242 +# CONFIG_DMA_ENGINE is not set
24243
24244 #
24245 -# SPI RTC drivers
24246 +# DMA Clients
24247 #
24248
24249 #
24250 -# Platform RTC drivers
24251 +# DMA Devices
24252 #
24253 -# CONFIG_RTC_DRV_DS1286 is not set
24254 -# CONFIG_RTC_DRV_DS1511 is not set
24255 -# CONFIG_RTC_DRV_DS1553 is not set
24256 -# CONFIG_RTC_DRV_DS1742 is not set
24257 -# CONFIG_RTC_DRV_STK17TA8 is not set
24258 -# CONFIG_RTC_DRV_M48T86 is not set
24259 -# CONFIG_RTC_DRV_M48T35 is not set
24260 -# CONFIG_RTC_DRV_M48T59 is not set
24261 -# CONFIG_RTC_DRV_BQ4802 is not set
24262 -# CONFIG_RTC_DRV_V3020 is not set
24263
24264 #
24265 -# on-CPU RTC drivers
24266 +# Userspace I/O
24267 #
24268 -CONFIG_RTC_DRV_PARISC=y
24269 -# CONFIG_DMADEVICES is not set
24270 # CONFIG_UIO is not set
24271 -# CONFIG_STAGING is not set
24272
24273 #
24274 # File systems
24275 @@ -970,7 +845,7 @@
24276 # CONFIG_EXT2_FS_XIP is not set
24277 CONFIG_EXT3_FS=y
24278 # CONFIG_EXT3_FS_XATTR is not set
24279 -# CONFIG_EXT4_FS is not set
24280 +# CONFIG_EXT4DEV_FS is not set
24281 CONFIG_JBD=y
24282 # CONFIG_JBD_DEBUG is not set
24283 # CONFIG_REISERFS_FS is not set
24284 @@ -980,19 +855,19 @@
24285 # CONFIG_JFS_DEBUG is not set
24286 # CONFIG_JFS_STATISTICS is not set
24287 CONFIG_FS_POSIX_ACL=y
24288 -CONFIG_FILE_LOCKING=y
24289 CONFIG_XFS_FS=m
24290 # CONFIG_XFS_QUOTA is not set
24291 +# CONFIG_XFS_SECURITY is not set
24292 # CONFIG_XFS_POSIX_ACL is not set
24293 # CONFIG_XFS_RT is not set
24294 -# CONFIG_XFS_DEBUG is not set
24295 # CONFIG_GFS2_FS is not set
24296 # CONFIG_OCFS2_FS is not set
24297 -# CONFIG_BTRFS_FS is not set
24298 -CONFIG_DNOTIFY=y
24299 +# CONFIG_MINIX_FS is not set
24300 +# CONFIG_ROMFS_FS is not set
24301 CONFIG_INOTIFY=y
24302 CONFIG_INOTIFY_USER=y
24303 # CONFIG_QUOTA is not set
24304 +CONFIG_DNOTIFY=y
24305 # CONFIG_AUTOFS_FS is not set
24306 CONFIG_AUTOFS4_FS=y
24307 # CONFIG_FUSE_FS is not set
24308 @@ -1022,13 +897,16 @@
24309 CONFIG_PROC_FS=y
24310 CONFIG_PROC_KCORE=y
24311 CONFIG_PROC_SYSCTL=y
24312 -CONFIG_PROC_PAGE_MONITOR=y
24313 CONFIG_SYSFS=y
24314 CONFIG_TMPFS=y
24315 # CONFIG_TMPFS_POSIX_ACL is not set
24316 # CONFIG_HUGETLB_PAGE is not set
24317 +CONFIG_RAMFS=y
24318 # CONFIG_CONFIGFS_FS is not set
24319 -CONFIG_MISC_FILESYSTEMS=y
24320 +
24321 +#
24322 +# Miscellaneous filesystems
24323 +#
24324 # CONFIG_ADFS_FS is not set
24325 # CONFIG_AFFS_FS is not set
24326 # CONFIG_ECRYPT_FS is not set
24327 @@ -1038,33 +916,34 @@
24328 # CONFIG_BFS_FS is not set
24329 # CONFIG_EFS_FS is not set
24330 # CONFIG_CRAMFS is not set
24331 -# CONFIG_SQUASHFS is not set
24332 # CONFIG_VXFS_FS is not set
24333 -# CONFIG_MINIX_FS is not set
24334 -# CONFIG_OMFS_FS is not set
24335 # CONFIG_HPFS_FS is not set
24336 # CONFIG_QNX4FS_FS is not set
24337 -# CONFIG_ROMFS_FS is not set
24338 # CONFIG_SYSV_FS is not set
24339 CONFIG_UFS_FS=m
24340 # CONFIG_UFS_FS_WRITE is not set
24341 # CONFIG_UFS_DEBUG is not set
24342 -CONFIG_NETWORK_FILESYSTEMS=y
24343 +
24344 +#
24345 +# Network File Systems
24346 +#
24347 CONFIG_NFS_FS=m
24348 CONFIG_NFS_V3=y
24349 # CONFIG_NFS_V3_ACL is not set
24350 CONFIG_NFS_V4=y
24351 +CONFIG_NFS_DIRECTIO=y
24352 CONFIG_NFSD=m
24353 CONFIG_NFSD_V3=y
24354 # CONFIG_NFSD_V3_ACL is not set
24355 CONFIG_NFSD_V4=y
24356 +CONFIG_NFSD_TCP=y
24357 CONFIG_LOCKD=m
24358 CONFIG_LOCKD_V4=y
24359 CONFIG_EXPORTFS=m
24360 CONFIG_NFS_COMMON=y
24361 CONFIG_SUNRPC=m
24362 CONFIG_SUNRPC_GSS=m
24363 -# CONFIG_SUNRPC_REGISTER_V4 is not set
24364 +# CONFIG_SUNRPC_BIND34 is not set
24365 CONFIG_RPCSEC_GSS_KRB5=m
24366 CONFIG_RPCSEC_GSS_SPKM3=m
24367 CONFIG_SMB_FS=m
24368 @@ -1073,7 +952,6 @@
24369 CONFIG_CIFS=m
24370 # CONFIG_CIFS_STATS is not set
24371 # CONFIG_CIFS_WEAK_PW_HASH is not set
24372 -# CONFIG_CIFS_UPCALL is not set
24373 # CONFIG_CIFS_XATTR is not set
24374 # CONFIG_CIFS_DEBUG2 is not set
24375 # CONFIG_CIFS_EXPERIMENTAL is not set
24376 @@ -1086,6 +964,10 @@
24377 #
24378 # CONFIG_PARTITION_ADVANCED is not set
24379 CONFIG_MSDOS_PARTITION=y
24380 +
24381 +#
24382 +# Native Language Support
24383 +#
24384 CONFIG_NLS=y
24385 CONFIG_NLS_DEFAULT="iso8859-1"
24386 CONFIG_NLS_CODEPAGE_437=m
24387 @@ -1126,28 +1008,33 @@
24388 # CONFIG_NLS_KOI8_R is not set
24389 # CONFIG_NLS_KOI8_U is not set
24390 CONFIG_NLS_UTF8=m
24391 +
24392 +#
24393 +# Distributed Lock Manager
24394 +#
24395 # CONFIG_DLM is not set
24396
24397 #
24398 +# Profiling support
24399 +#
24400 +CONFIG_PROFILING=y
24401 +CONFIG_OPROFILE=m
24402 +
24403 +#
24404 # Kernel hacking
24405 #
24406 # CONFIG_PRINTK_TIME is not set
24407 -CONFIG_ENABLE_WARN_DEPRECATED=y
24408 CONFIG_ENABLE_MUST_CHECK=y
24409 -CONFIG_FRAME_WARN=2048
24410 CONFIG_MAGIC_SYSRQ=y
24411 # CONFIG_UNUSED_SYMBOLS is not set
24412 -CONFIG_DEBUG_FS=y
24413 +# CONFIG_DEBUG_FS is not set
24414 CONFIG_HEADERS_CHECK=y
24415 CONFIG_DEBUG_KERNEL=y
24416 # CONFIG_DEBUG_SHIRQ is not set
24417 CONFIG_DETECT_SOFTLOCKUP=y
24418 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
24419 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
24420 CONFIG_SCHED_DEBUG=y
24421 # CONFIG_SCHEDSTATS is not set
24422 # CONFIG_TIMER_STATS is not set
24423 -# CONFIG_DEBUG_OBJECTS is not set
24424 # CONFIG_DEBUG_SLAB is not set
24425 # CONFIG_DEBUG_RT_MUTEXES is not set
24426 # CONFIG_RT_MUTEX_TESTER is not set
24427 @@ -1159,33 +1046,10 @@
24428 # CONFIG_DEBUG_BUGVERBOSE is not set
24429 # CONFIG_DEBUG_INFO is not set
24430 # CONFIG_DEBUG_VM is not set
24431 -# CONFIG_DEBUG_WRITECOUNT is not set
24432 -# CONFIG_DEBUG_MEMORY_INIT is not set
24433 # CONFIG_DEBUG_LIST is not set
24434 -# CONFIG_DEBUG_SG is not set
24435 -# CONFIG_DEBUG_NOTIFIERS is not set
24436 -# CONFIG_BOOT_PRINTK_DELAY is not set
24437 +CONFIG_FORCED_INLINING=y
24438 # CONFIG_RCU_TORTURE_TEST is not set
24439 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
24440 -# CONFIG_BACKTRACE_SELF_TEST is not set
24441 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
24442 # CONFIG_FAULT_INJECTION is not set
24443 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
24444 -CONFIG_NOP_TRACER=y
24445 -CONFIG_RING_BUFFER=y
24446 -CONFIG_TRACING=y
24447 -
24448 -#
24449 -# Tracers
24450 -#
24451 -# CONFIG_SCHED_TRACER is not set
24452 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
24453 -# CONFIG_BOOT_TRACER is not set
24454 -# CONFIG_TRACE_BRANCH_PROFILING is not set
24455 -# CONFIG_FTRACE_STARTUP_TEST is not set
24456 -# CONFIG_BUILD_DOCSRC is not set
24457 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
24458 -# CONFIG_SAMPLES is not set
24459 # CONFIG_DEBUG_RODATA is not set
24460
24461 #
24462 @@ -1194,112 +1058,56 @@
24463 CONFIG_KEYS=y
24464 CONFIG_KEYS_DEBUG_PROC_KEYS=y
24465 # CONFIG_SECURITY is not set
24466 -# CONFIG_SECURITYFS is not set
24467 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
24468 CONFIG_CRYPTO=y
24469 -
24470 -#
24471 -# Crypto core or helper
24472 -#
24473 -# CONFIG_CRYPTO_FIPS is not set
24474 CONFIG_CRYPTO_ALGAPI=y
24475 -CONFIG_CRYPTO_ALGAPI2=y
24476 -CONFIG_CRYPTO_AEAD=m
24477 -CONFIG_CRYPTO_AEAD2=y
24478 CONFIG_CRYPTO_BLKCIPHER=m
24479 -CONFIG_CRYPTO_BLKCIPHER2=y
24480 CONFIG_CRYPTO_HASH=y
24481 -CONFIG_CRYPTO_HASH2=y
24482 -CONFIG_CRYPTO_RNG2=y
24483 CONFIG_CRYPTO_MANAGER=y
24484 -CONFIG_CRYPTO_MANAGER2=y
24485 -# CONFIG_CRYPTO_GF128MUL is not set
24486 -CONFIG_CRYPTO_NULL=m
24487 -# CONFIG_CRYPTO_CRYPTD is not set
24488 -CONFIG_CRYPTO_AUTHENC=m
24489 -CONFIG_CRYPTO_TEST=m
24490 -
24491 -#
24492 -# Authenticated Encryption with Associated Data
24493 -#
24494 -# CONFIG_CRYPTO_CCM is not set
24495 -# CONFIG_CRYPTO_GCM is not set
24496 -# CONFIG_CRYPTO_SEQIV is not set
24497 -
24498 -#
24499 -# Block modes
24500 -#
24501 -CONFIG_CRYPTO_CBC=m
24502 -# CONFIG_CRYPTO_CTR is not set
24503 -# CONFIG_CRYPTO_CTS is not set
24504 -# CONFIG_CRYPTO_ECB is not set
24505 -# CONFIG_CRYPTO_LRW is not set
24506 -# CONFIG_CRYPTO_PCBC is not set
24507 -# CONFIG_CRYPTO_XTS is not set
24508 -
24509 -#
24510 -# Hash modes
24511 -#
24512 CONFIG_CRYPTO_HMAC=y
24513 # CONFIG_CRYPTO_XCBC is not set
24514 -
24515 -#
24516 -# Digest
24517 -#
24518 -CONFIG_CRYPTO_CRC32C=m
24519 +CONFIG_CRYPTO_NULL=m
24520 # CONFIG_CRYPTO_MD4 is not set
24521 CONFIG_CRYPTO_MD5=y
24522 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
24523 -# CONFIG_CRYPTO_RMD128 is not set
24524 -# CONFIG_CRYPTO_RMD160 is not set
24525 -# CONFIG_CRYPTO_RMD256 is not set
24526 -# CONFIG_CRYPTO_RMD320 is not set
24527 CONFIG_CRYPTO_SHA1=m
24528 # CONFIG_CRYPTO_SHA256 is not set
24529 # CONFIG_CRYPTO_SHA512 is not set
24530 -# CONFIG_CRYPTO_TGR192 is not set
24531 # CONFIG_CRYPTO_WP512 is not set
24532 -
24533 -#
24534 -# Ciphers
24535 -#
24536 -# CONFIG_CRYPTO_AES is not set
24537 -# CONFIG_CRYPTO_ANUBIS is not set
24538 -# CONFIG_CRYPTO_ARC4 is not set
24539 +# CONFIG_CRYPTO_TGR192 is not set
24540 +# CONFIG_CRYPTO_GF128MUL is not set
24541 +# CONFIG_CRYPTO_ECB is not set
24542 +CONFIG_CRYPTO_CBC=m
24543 +# CONFIG_CRYPTO_PCBC is not set
24544 +# CONFIG_CRYPTO_LRW is not set
24545 +# CONFIG_CRYPTO_XTS is not set
24546 +# CONFIG_CRYPTO_CRYPTD is not set
24547 +CONFIG_CRYPTO_DES=m
24548 +# CONFIG_CRYPTO_FCRYPT is not set
24549 CONFIG_CRYPTO_BLOWFISH=m
24550 -# CONFIG_CRYPTO_CAMELLIA is not set
24551 +# CONFIG_CRYPTO_TWOFISH is not set
24552 +# CONFIG_CRYPTO_SERPENT is not set
24553 +# CONFIG_CRYPTO_AES is not set
24554 CONFIG_CRYPTO_CAST5=m
24555 # CONFIG_CRYPTO_CAST6 is not set
24556 -CONFIG_CRYPTO_DES=m
24557 -# CONFIG_CRYPTO_FCRYPT is not set
24558 +# CONFIG_CRYPTO_TEA is not set
24559 +# CONFIG_CRYPTO_ARC4 is not set
24560 # CONFIG_CRYPTO_KHAZAD is not set
24561 -# CONFIG_CRYPTO_SALSA20 is not set
24562 +# CONFIG_CRYPTO_ANUBIS is not set
24563 # CONFIG_CRYPTO_SEED is not set
24564 -# CONFIG_CRYPTO_SERPENT is not set
24565 -# CONFIG_CRYPTO_TEA is not set
24566 -# CONFIG_CRYPTO_TWOFISH is not set
24567 -
24568 -#
24569 -# Compression
24570 -#
24571 CONFIG_CRYPTO_DEFLATE=m
24572 -# CONFIG_CRYPTO_LZO is not set
24573 -
24574 -#
24575 -# Random Number Generation
24576 -#
24577 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
24578 +# CONFIG_CRYPTO_MICHAEL_MIC is not set
24579 +CONFIG_CRYPTO_CRC32C=m
24580 +# CONFIG_CRYPTO_CAMELLIA is not set
24581 +CONFIG_CRYPTO_TEST=m
24582 +# CONFIG_CRYPTO_AUTHENC is not set
24583 # CONFIG_CRYPTO_HW is not set
24584
24585 #
24586 # Library routines
24587 #
24588 CONFIG_BITREVERSE=y
24589 -CONFIG_GENERIC_FIND_LAST_BIT=y
24590 CONFIG_CRC_CCITT=m
24591 # CONFIG_CRC16 is not set
24592 -# CONFIG_CRC_T10DIF is not set
24593 -CONFIG_CRC_ITU_T=m
24594 +# CONFIG_CRC_ITU_T is not set
24595 CONFIG_CRC32=y
24596 # CONFIG_CRC7 is not set
24597 CONFIG_LIBCRC32C=m
24598 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/configs/b180_defconfig linux-2.6.29-rc3.owrt/arch/parisc/configs/b180_defconfig
24599 --- linux-2.6.29.owrt/arch/parisc/configs/b180_defconfig 2009-05-10 22:04:39.000000000 +0200
24600 +++ linux-2.6.29-rc3.owrt/arch/parisc/configs/b180_defconfig 2009-05-10 23:48:28.000000000 +0200
24601 @@ -1,7 +1,7 @@
24602 #
24603 # Automatically generated make config: don't edit
24604 -# Linux kernel version: 2.6.29-rc8
24605 -# Fri Mar 13 01:32:57 2009
24606 +# Linux kernel version: 2.6.23
24607 +# Fri Oct 12 21:16:46 2007
24608 #
24609 CONFIG_PARISC=y
24610 CONFIG_MMU=y
24611 @@ -33,29 +33,13 @@
24612 # CONFIG_BSD_PROCESS_ACCT is not set
24613 # CONFIG_TASKSTATS is not set
24614 # CONFIG_AUDIT is not set
24615 -
24616 -#
24617 -# RCU Subsystem
24618 -#
24619 -CONFIG_CLASSIC_RCU=y
24620 -# CONFIG_TREE_RCU is not set
24621 -# CONFIG_PREEMPT_RCU is not set
24622 -# CONFIG_TREE_RCU_TRACE is not set
24623 -# CONFIG_PREEMPT_RCU_TRACE is not set
24624 CONFIG_IKCONFIG=y
24625 CONFIG_IKCONFIG_PROC=y
24626 CONFIG_LOG_BUF_SHIFT=16
24627 -# CONFIG_CGROUPS is not set
24628 CONFIG_SYSFS_DEPRECATED=y
24629 -CONFIG_SYSFS_DEPRECATED_V2=y
24630 # CONFIG_RELAY is not set
24631 -CONFIG_NAMESPACES=y
24632 -# CONFIG_UTS_NS is not set
24633 -# CONFIG_IPC_NS is not set
24634 # CONFIG_BLK_DEV_INITRD is not set
24635 -CONFIG_CC_OPTIMIZE_FOR_SIZE=y
24636 CONFIG_SYSCTL=y
24637 -CONFIG_ANON_INODES=y
24638 # CONFIG_EMBEDDED is not set
24639 CONFIG_SYSCTL_SYSCALL=y
24640 CONFIG_KALLSYMS=y
24641 @@ -67,34 +51,27 @@
24642 CONFIG_ELF_CORE=y
24643 CONFIG_BASE_FULL=y
24644 CONFIG_FUTEX=y
24645 +CONFIG_ANON_INODES=y
24646 CONFIG_EPOLL=y
24647 CONFIG_SIGNALFD=y
24648 -CONFIG_TIMERFD=y
24649 CONFIG_EVENTFD=y
24650 CONFIG_SHMEM=y
24651 -CONFIG_AIO=y
24652 CONFIG_VM_EVENT_COUNTERS=y
24653 -CONFIG_PCI_QUIRKS=y
24654 -CONFIG_COMPAT_BRK=y
24655 CONFIG_SLAB=y
24656 # CONFIG_SLUB is not set
24657 # CONFIG_SLOB is not set
24658 -# CONFIG_PROFILING is not set
24659 -CONFIG_HAVE_OPROFILE=y
24660 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
24661 -CONFIG_SLABINFO=y
24662 CONFIG_RT_MUTEXES=y
24663 +# CONFIG_TINY_SHMEM is not set
24664 CONFIG_BASE_SMALL=0
24665 CONFIG_MODULES=y
24666 -# CONFIG_MODULE_FORCE_LOAD is not set
24667 # CONFIG_MODULE_UNLOAD is not set
24668 CONFIG_MODVERSIONS=y
24669 # CONFIG_MODULE_SRCVERSION_ALL is not set
24670 -CONFIG_INIT_ALL_POSSIBLE=y
24671 +# CONFIG_KMOD is not set
24672 CONFIG_BLOCK=y
24673 # CONFIG_LBD is not set
24674 # CONFIG_BLK_DEV_IO_TRACE is not set
24675 -# CONFIG_BLK_DEV_INTEGRITY is not set
24676 +# CONFIG_LSF is not set
24677
24678 #
24679 # IO Schedulers
24680 @@ -108,7 +85,6 @@
24681 CONFIG_DEFAULT_CFQ=y
24682 # CONFIG_DEFAULT_NOOP is not set
24683 CONFIG_DEFAULT_IOSCHED="cfq"
24684 -# CONFIG_FREEZER is not set
24685
24686 #
24687 # Processor type and features
24688 @@ -132,15 +108,13 @@
24689 # CONFIG_HZ_300 is not set
24690 # CONFIG_HZ_1000 is not set
24691 CONFIG_HZ=250
24692 -# CONFIG_SCHED_HRTICK is not set
24693 CONFIG_FLATMEM=y
24694 CONFIG_FLAT_NODE_MEM_MAP=y
24695 -CONFIG_PAGEFLAGS_EXTENDED=y
24696 +# CONFIG_SPARSEMEM_STATIC is not set
24697 CONFIG_SPLIT_PTLOCK_CPUS=4096
24698 -# CONFIG_PHYS_ADDR_T_64BIT is not set
24699 +# CONFIG_RESOURCES_64BIT is not set
24700 CONFIG_ZONE_DMA_FLAG=0
24701 CONFIG_VIRT_TO_BUS=y
24702 -CONFIG_UNEVICTABLE_LRU=y
24703 # CONFIG_HPUX is not set
24704
24705 #
24706 @@ -156,14 +130,14 @@
24707 CONFIG_ISA=y
24708 CONFIG_PCI=y
24709 # CONFIG_ARCH_SUPPORTS_MSI is not set
24710 -CONFIG_PCI_LEGACY=y
24711 # CONFIG_PCI_DEBUG is not set
24712 -# CONFIG_PCI_STUB is not set
24713 CONFIG_GSC_DINO=y
24714 # CONFIG_PCI_LBA is not set
24715 -CONFIG_IOMMU_HELPER=y
24716 +
24717 +#
24718 +# PCCARD (PCMCIA/CardBus) support
24719 +#
24720 # CONFIG_PCCARD is not set
24721 -# CONFIG_HOTPLUG_PCI is not set
24722
24723 #
24724 # PA-RISC specific drivers
24725 @@ -177,15 +151,16 @@
24726 # Executable file formats
24727 #
24728 CONFIG_BINFMT_ELF=y
24729 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
24730 -# CONFIG_HAVE_AOUT is not set
24731 # CONFIG_BINFMT_MISC is not set
24732 +
24733 +#
24734 +# Networking
24735 +#
24736 CONFIG_NET=y
24737
24738 #
24739 # Networking options
24740 #
24741 -CONFIG_COMPAT_NET_DEV_OPS=y
24742 CONFIG_PACKET=y
24743 CONFIG_PACKET_MMAP=y
24744 CONFIG_UNIX=y
24745 @@ -230,37 +205,36 @@
24746 CONFIG_INET6_XFRM_MODE_TUNNEL=y
24747 CONFIG_INET6_XFRM_MODE_BEET=y
24748 CONFIG_IPV6_SIT=y
24749 -CONFIG_IPV6_NDISC_NODETYPE=y
24750 # CONFIG_IPV6_TUNNEL is not set
24751 # CONFIG_NETLABEL is not set
24752 # CONFIG_NETWORK_SECMARK is not set
24753 # CONFIG_NETFILTER is not set
24754 -# CONFIG_ATM is not set
24755 # CONFIG_BRIDGE is not set
24756 # CONFIG_VLAN_8021Q is not set
24757 # CONFIG_DECNET is not set
24758 # CONFIG_LLC2 is not set
24759 # CONFIG_IPX is not set
24760 # CONFIG_ATALK is not set
24761 +
24762 +#
24763 +# QoS and/or fair queueing
24764 +#
24765 # CONFIG_NET_SCHED is not set
24766 -# CONFIG_DCB is not set
24767
24768 #
24769 # Network testing
24770 #
24771 # CONFIG_NET_PKTGEN is not set
24772 # CONFIG_HAMRADIO is not set
24773 -# CONFIG_CAN is not set
24774 # CONFIG_IRDA is not set
24775 # CONFIG_BT is not set
24776 -# CONFIG_PHONET is not set
24777 -CONFIG_WIRELESS=y
24778 +
24779 +#
24780 +# Wireless
24781 +#
24782 # CONFIG_CFG80211 is not set
24783 -CONFIG_WIRELESS_OLD_REGULATORY=y
24784 # CONFIG_WIRELESS_EXT is not set
24785 -# CONFIG_LIB80211 is not set
24786 -# CONFIG_MAC80211 is not set
24787 -# CONFIG_WIMAX is not set
24788 +# CONFIG_IEEE80211 is not set
24789 # CONFIG_RFKILL is not set
24790
24791 #
24792 @@ -273,9 +247,7 @@
24793 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
24794 CONFIG_STANDALONE=y
24795 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
24796 -CONFIG_FW_LOADER=y
24797 -CONFIG_FIRMWARE_IN_KERNEL=y
24798 -CONFIG_EXTRA_FIRMWARE=""
24799 +# CONFIG_FW_LOADER is not set
24800 # CONFIG_DEBUG_DRIVER is not set
24801 # CONFIG_DEBUG_DEVRES is not set
24802 # CONFIG_SYS_HYPERVISOR is not set
24803 @@ -303,18 +275,10 @@
24804 CONFIG_CDROM_PKTCDVD=m
24805 CONFIG_CDROM_PKTCDVD_BUFFERS=8
24806 CONFIG_ATA_OVER_ETH=y
24807 -# CONFIG_BLK_DEV_HD is not set
24808 CONFIG_MISC_DEVICES=y
24809 # CONFIG_PHANTOM is not set
24810 -# CONFIG_SGI_IOC4 is not set
24811 -# CONFIG_ENCLOSURE_SERVICES is not set
24812 -# CONFIG_HP_ILO is not set
24813 -
24814 -#
24815 -# EEPROM support
24816 -#
24817 # CONFIG_EEPROM_93CX6 is not set
24818 -CONFIG_HAVE_IDE=y
24819 +# CONFIG_SGI_IOC4 is not set
24820 # CONFIG_IDE is not set
24821
24822 #
24823 @@ -353,10 +317,8 @@
24824 # CONFIG_SCSI_FC_ATTRS is not set
24825 # CONFIG_SCSI_ISCSI_ATTRS is not set
24826 # CONFIG_SCSI_SAS_LIBSAS is not set
24827 -# CONFIG_SCSI_SRP_ATTRS is not set
24828 CONFIG_SCSI_LOWLEVEL=y
24829 # CONFIG_ISCSI_TCP is not set
24830 -# CONFIG_SCSI_CXGB3_ISCSI is not set
24831 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
24832 # CONFIG_SCSI_3W_9XXX is not set
24833 # CONFIG_SCSI_ACARD is not set
24834 @@ -368,15 +330,12 @@
24835 # CONFIG_SCSI_AIC79XX is not set
24836 # CONFIG_SCSI_AIC94XX is not set
24837 # CONFIG_SCSI_DPT_I2O is not set
24838 -# CONFIG_SCSI_ADVANSYS is not set
24839 # CONFIG_SCSI_IN2000 is not set
24840 # CONFIG_SCSI_ARCMSR is not set
24841 # CONFIG_MEGARAID_NEWGEN is not set
24842 # CONFIG_MEGARAID_LEGACY is not set
24843 # CONFIG_MEGARAID_SAS is not set
24844 # CONFIG_SCSI_HPTIOP is not set
24845 -# CONFIG_LIBFC is not set
24846 -# CONFIG_FCOE is not set
24847 # CONFIG_SCSI_DMX3191D is not set
24848 # CONFIG_SCSI_DTC3280 is not set
24849 # CONFIG_SCSI_FUTURE_DOMAIN is not set
24850 @@ -387,7 +346,6 @@
24851 # CONFIG_SCSI_INIA100 is not set
24852 # CONFIG_SCSI_PPA is not set
24853 # CONFIG_SCSI_IMM is not set
24854 -# CONFIG_SCSI_MVSAS is not set
24855 # CONFIG_SCSI_NCR53C406A is not set
24856 CONFIG_SCSI_LASI700=y
24857 CONFIG_53C700_LE_ON_BE=y
24858 @@ -402,6 +360,7 @@
24859 CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
24860 CONFIG_SCSI_NCR53C8XX_SYNC=40
24861 # CONFIG_SCSI_PAS16 is not set
24862 +# CONFIG_SCSI_PSI240I is not set
24863 # CONFIG_SCSI_QLOGIC_FAS is not set
24864 # CONFIG_SCSI_QLOGIC_1280 is not set
24865 # CONFIG_SCSI_QLA_FC is not set
24866 @@ -414,11 +373,9 @@
24867 # CONFIG_SCSI_NSP32 is not set
24868 # CONFIG_SCSI_DEBUG is not set
24869 # CONFIG_SCSI_SRP is not set
24870 -# CONFIG_SCSI_DH is not set
24871 # CONFIG_ATA is not set
24872 CONFIG_MD=y
24873 CONFIG_BLK_DEV_MD=y
24874 -CONFIG_MD_AUTODETECT=y
24875 CONFIG_MD_LINEAR=y
24876 CONFIG_MD_RAID0=y
24877 CONFIG_MD_RAID1=y
24878 @@ -426,18 +383,26 @@
24879 # CONFIG_MD_MULTIPATH is not set
24880 # CONFIG_MD_FAULTY is not set
24881 # CONFIG_BLK_DEV_DM is not set
24882 +
24883 +#
24884 +# Fusion MPT device support
24885 +#
24886 # CONFIG_FUSION is not set
24887 +# CONFIG_FUSION_SPI is not set
24888 +# CONFIG_FUSION_FC is not set
24889 +# CONFIG_FUSION_SAS is not set
24890
24891 #
24892 # IEEE 1394 (FireWire) support
24893 #
24894
24895 #
24896 -# A new alternative FireWire stack is available with EXPERIMENTAL=y
24897 +# An alternative FireWire stack is available with EXPERIMENTAL=y
24898 #
24899 # CONFIG_IEEE1394 is not set
24900 # CONFIG_I2O is not set
24901 CONFIG_NETDEVICES=y
24902 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
24903 # CONFIG_DUMMY is not set
24904 # CONFIG_BONDING is not set
24905 # CONFIG_EQUALIZER is not set
24906 @@ -469,49 +434,36 @@
24907 # CONFIG_IBM_NEW_EMAC_RGMII is not set
24908 # CONFIG_IBM_NEW_EMAC_TAH is not set
24909 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
24910 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
24911 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
24912 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
24913 # CONFIG_NET_PCI is not set
24914 # CONFIG_B44 is not set
24915 -# CONFIG_CS89x0 is not set
24916 # CONFIG_NET_POCKET is not set
24917 -# CONFIG_ATL2 is not set
24918 CONFIG_NETDEV_1000=y
24919 # CONFIG_ACENIC is not set
24920 # CONFIG_DL2K is not set
24921 # CONFIG_E1000 is not set
24922 # CONFIG_E1000E is not set
24923 -# CONFIG_IGB is not set
24924 # CONFIG_NS83820 is not set
24925 # CONFIG_HAMACHI is not set
24926 # CONFIG_R8169 is not set
24927 # CONFIG_SIS190 is not set
24928 # CONFIG_SKGE is not set
24929 # CONFIG_SKY2 is not set
24930 +# CONFIG_SK98LIN is not set
24931 # CONFIG_VIA_VELOCITY is not set
24932 # CONFIG_TIGON3 is not set
24933 # CONFIG_BNX2 is not set
24934 # CONFIG_QLA3XXX is not set
24935 -# CONFIG_ATL1 is not set
24936 -# CONFIG_JME is not set
24937 CONFIG_NETDEV_10000=y
24938 # CONFIG_CHELSIO_T1 is not set
24939 -CONFIG_CHELSIO_T3_DEPENDS=y
24940 # CONFIG_CHELSIO_T3 is not set
24941 -# CONFIG_ENIC is not set
24942 # CONFIG_IXGBE is not set
24943 # CONFIG_IXGB is not set
24944 # CONFIG_S2IO is not set
24945 # CONFIG_MYRI10GE is not set
24946 # CONFIG_NETXEN_NIC is not set
24947 # CONFIG_NIU is not set
24948 -# CONFIG_MLX4_EN is not set
24949 # CONFIG_MLX4_CORE is not set
24950 # CONFIG_TEHUTI is not set
24951 -# CONFIG_BNX2X is not set
24952 -# CONFIG_QLGE is not set
24953 -# CONFIG_SFC is not set
24954 # CONFIG_TR is not set
24955
24956 #
24957 @@ -519,11 +471,6 @@
24958 #
24959 # CONFIG_WLAN_PRE80211 is not set
24960 # CONFIG_WLAN_80211 is not set
24961 -# CONFIG_IWLWIFI_LEDS is not set
24962 -
24963 -#
24964 -# Enable WiMAX (Networking options) to see the WiMAX drivers
24965 -#
24966 # CONFIG_WAN is not set
24967 # CONFIG_FDDI is not set
24968 # CONFIG_PLIP is not set
24969 @@ -556,6 +503,7 @@
24970 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
24971 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
24972 # CONFIG_INPUT_JOYDEV is not set
24973 +# CONFIG_INPUT_TSDEV is not set
24974 CONFIG_INPUT_EVDEV=y
24975 # CONFIG_INPUT_EVBUG is not set
24976
24977 @@ -578,12 +526,11 @@
24978 CONFIG_MOUSE_PS2_ALPS=y
24979 CONFIG_MOUSE_PS2_LOGIPS2PP=y
24980 CONFIG_MOUSE_PS2_SYNAPTICS=y
24981 +CONFIG_MOUSE_PS2_LIFEBOOK=y
24982 CONFIG_MOUSE_PS2_TRACKPOINT=y
24983 -# CONFIG_MOUSE_PS2_ELANTECH is not set
24984 # CONFIG_MOUSE_PS2_TOUCHKIT is not set
24985 # CONFIG_MOUSE_SERIAL is not set
24986 # CONFIG_MOUSE_APPLETOUCH is not set
24987 -# CONFIG_MOUSE_BCM5974 is not set
24988 # CONFIG_MOUSE_INPORT is not set
24989 # CONFIG_MOUSE_LOGIBM is not set
24990 # CONFIG_MOUSE_PC110PAD is not set
24991 @@ -617,11 +564,9 @@
24992 # Character devices
24993 #
24994 CONFIG_VT=y
24995 -CONFIG_CONSOLE_TRANSLATIONS=y
24996 CONFIG_VT_CONSOLE=y
24997 CONFIG_HW_CONSOLE=y
24998 # CONFIG_VT_HW_CONSOLE_BINDING is not set
24999 -CONFIG_DEVKMEM=y
25000 # CONFIG_SERIAL_NONSTANDARD is not set
25001
25002 #
25003 @@ -653,79 +598,75 @@
25004 CONFIG_SERIAL_CORE_CONSOLE=y
25005 # CONFIG_SERIAL_JSM is not set
25006 CONFIG_UNIX98_PTYS=y
25007 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
25008 CONFIG_LEGACY_PTYS=y
25009 CONFIG_LEGACY_PTY_COUNT=256
25010 CONFIG_PRINTER=y
25011 # CONFIG_LP_CONSOLE is not set
25012 # CONFIG_PPDEV is not set
25013 +# CONFIG_TIPAR is not set
25014 # CONFIG_IPMI_HANDLER is not set
25015 +# CONFIG_WATCHDOG is not set
25016 # CONFIG_HW_RANDOM is not set
25017 +CONFIG_GEN_RTC=y
25018 +# CONFIG_GEN_RTC_X is not set
25019 # CONFIG_DTLK is not set
25020 # CONFIG_R3964 is not set
25021 # CONFIG_APPLICOM is not set
25022 +# CONFIG_AGP is not set
25023 +# CONFIG_DRM is not set
25024 # CONFIG_RAW_DRIVER is not set
25025 CONFIG_DEVPORT=y
25026 # CONFIG_I2C is not set
25027 +
25028 +#
25029 +# SPI support
25030 +#
25031 # CONFIG_SPI is not set
25032 +# CONFIG_SPI_MASTER is not set
25033 # CONFIG_W1 is not set
25034 # CONFIG_POWER_SUPPLY is not set
25035 # CONFIG_HWMON is not set
25036 -# CONFIG_THERMAL is not set
25037 -# CONFIG_THERMAL_HWMON is not set
25038 -# CONFIG_WATCHDOG is not set
25039 -CONFIG_SSB_POSSIBLE=y
25040
25041 #
25042 # Sonics Silicon Backplane
25043 #
25044 +CONFIG_SSB_POSSIBLE=y
25045 # CONFIG_SSB is not set
25046
25047 #
25048 # Multifunction device drivers
25049 #
25050 -# CONFIG_MFD_CORE is not set
25051 # CONFIG_MFD_SM501 is not set
25052 -# CONFIG_HTC_PASIC3 is not set
25053 -# CONFIG_MFD_TMIO is not set
25054 -# CONFIG_REGULATOR is not set
25055
25056 #
25057 # Multimedia devices
25058 #
25059 -
25060 -#
25061 -# Multimedia core support
25062 -#
25063 # CONFIG_VIDEO_DEV is not set
25064 # CONFIG_DVB_CORE is not set
25065 -# CONFIG_VIDEO_MEDIA is not set
25066 +# CONFIG_DAB is not set
25067
25068 #
25069 -# Multimedia drivers
25070 +# Graphics support
25071 #
25072 -# CONFIG_DAB is not set
25073 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
25074
25075 #
25076 -# Graphics support
25077 +# Display device support
25078 #
25079 -# CONFIG_AGP is not set
25080 -# CONFIG_DRM is not set
25081 +# CONFIG_DISPLAY_SUPPORT is not set
25082 # CONFIG_VGASTATE is not set
25083 CONFIG_VIDEO_OUTPUT_CONTROL=m
25084 CONFIG_FB=y
25085 # CONFIG_FIRMWARE_EDID is not set
25086 # CONFIG_FB_DDC is not set
25087 -# CONFIG_FB_BOOT_VESA_SUPPORT is not set
25088 CONFIG_FB_CFB_FILLRECT=y
25089 CONFIG_FB_CFB_COPYAREA=y
25090 CONFIG_FB_CFB_IMAGEBLIT=y
25091 -# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
25092 # CONFIG_FB_SYS_FILLRECT is not set
25093 # CONFIG_FB_SYS_COPYAREA is not set
25094 # CONFIG_FB_SYS_IMAGEBLIT is not set
25095 -# CONFIG_FB_FOREIGN_ENDIAN is not set
25096 # CONFIG_FB_SYS_FOPS is not set
25097 +CONFIG_FB_DEFERRED_IO=y
25098 # CONFIG_FB_SVGALIB is not set
25099 # CONFIG_FB_MACMODES is not set
25100 # CONFIG_FB_BACKLIGHT is not set
25101 @@ -750,7 +691,6 @@
25102 # CONFIG_FB_ATY is not set
25103 # CONFIG_FB_S3 is not set
25104 # CONFIG_FB_SIS is not set
25105 -# CONFIG_FB_VIA is not set
25106 # CONFIG_FB_NEOMAGIC is not set
25107 # CONFIG_FB_KYRO is not set
25108 # CONFIG_FB_3DFX is not set
25109 @@ -758,16 +698,7 @@
25110 # CONFIG_FB_VT8623 is not set
25111 # CONFIG_FB_TRIDENT is not set
25112 # CONFIG_FB_ARK is not set
25113 -# CONFIG_FB_CARMINE is not set
25114 # CONFIG_FB_VIRTUAL is not set
25115 -# CONFIG_FB_METRONOME is not set
25116 -# CONFIG_FB_MB862XX is not set
25117 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
25118 -
25119 -#
25120 -# Display device support
25121 -#
25122 -# CONFIG_DISPLAY_SUPPORT is not set
25123
25124 #
25125 # Console display driver support
25126 @@ -787,8 +718,15 @@
25127 CONFIG_LOGO_LINUX_VGA16=y
25128 CONFIG_LOGO_LINUX_CLUT224=y
25129 CONFIG_LOGO_PARISC_CLUT224=y
25130 +
25131 +#
25132 +# Sound
25133 +#
25134 CONFIG_SOUND=y
25135 -CONFIG_SOUND_OSS_CORE=y
25136 +
25137 +#
25138 +# Advanced Linux Sound Architecture
25139 +#
25140 CONFIG_SND=y
25141 CONFIG_SND_TIMER=y
25142 CONFIG_SND_PCM=y
25143 @@ -804,7 +742,10 @@
25144 CONFIG_SND_VERBOSE_PROCFS=y
25145 # CONFIG_SND_VERBOSE_PRINTK is not set
25146 # CONFIG_SND_DEBUG is not set
25147 -CONFIG_SND_DRIVERS=y
25148 +
25149 +#
25150 +# Generic devices
25151 +#
25152 # CONFIG_SND_DUMMY is not set
25153 # CONFIG_SND_VIRMIDI is not set
25154 # CONFIG_SND_MTPAV is not set
25155 @@ -812,7 +753,10 @@
25156 # CONFIG_SND_SERIAL_U16550 is not set
25157 # CONFIG_SND_MPU401 is not set
25158 # CONFIG_SND_PORTMAN2X4 is not set
25159 -CONFIG_SND_PCI=y
25160 +
25161 +#
25162 +# PCI devices
25163 +#
25164 # CONFIG_SND_AD1889 is not set
25165 # CONFIG_SND_ALS300 is not set
25166 # CONFIG_SND_ALI5451 is not set
25167 @@ -821,11 +765,9 @@
25168 # CONFIG_SND_AU8810 is not set
25169 # CONFIG_SND_AU8820 is not set
25170 # CONFIG_SND_AU8830 is not set
25171 -# CONFIG_SND_AW2 is not set
25172 # CONFIG_SND_BT87X is not set
25173 # CONFIG_SND_CA0106 is not set
25174 # CONFIG_SND_CMIPCI is not set
25175 -# CONFIG_SND_OXYGEN is not set
25176 # CONFIG_SND_CS4281 is not set
25177 # CONFIG_SND_CS46XX is not set
25178 # CONFIG_SND_DARLA20 is not set
25179 @@ -850,7 +792,6 @@
25180 # CONFIG_SND_HDA_INTEL is not set
25181 # CONFIG_SND_HDSP is not set
25182 # CONFIG_SND_HDSPM is not set
25183 -# CONFIG_SND_HIFIER is not set
25184 # CONFIG_SND_ICE1712 is not set
25185 # CONFIG_SND_ICE1724 is not set
25186 # CONFIG_SND_INTEL8X0 is not set
25187 @@ -868,23 +809,30 @@
25188 # CONFIG_SND_TRIDENT is not set
25189 # CONFIG_SND_VIA82XX is not set
25190 # CONFIG_SND_VIA82XX_MODEM is not set
25191 -# CONFIG_SND_VIRTUOSO is not set
25192 # CONFIG_SND_VX222 is not set
25193 # CONFIG_SND_YMFPCI is not set
25194 -CONFIG_SND_GSC=y
25195 +
25196 +#
25197 +# GSC devices
25198 +#
25199 CONFIG_SND_HARMONY=y
25200 +
25201 +#
25202 +# System on Chip audio support
25203 +#
25204 # CONFIG_SND_SOC is not set
25205 +
25206 +#
25207 +# SoC Audio support for SuperH
25208 +#
25209 +
25210 +#
25211 +# Open Sound System
25212 +#
25213 # CONFIG_SOUND_PRIME is not set
25214 CONFIG_HID_SUPPORT=y
25215 CONFIG_HID=y
25216 CONFIG_HID_DEBUG=y
25217 -# CONFIG_HIDRAW is not set
25218 -# CONFIG_HID_PID is not set
25219 -
25220 -#
25221 -# Special HID drivers
25222 -#
25223 -CONFIG_HID_COMPAT=y
25224 CONFIG_USB_SUPPORT=y
25225 CONFIG_USB_ARCH_HAS_HCD=y
25226 CONFIG_USB_ARCH_HAS_OHCI=y
25227 @@ -892,63 +840,36 @@
25228 # CONFIG_USB is not set
25229
25230 #
25231 -# Enable Host or Gadget support to see Inventra options
25232 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
25233 #
25234
25235 #
25236 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
25237 +# USB Gadget Support
25238 #
25239 # CONFIG_USB_GADGET is not set
25240 -
25241 -#
25242 -# OTG and related infrastructure
25243 -#
25244 # CONFIG_MMC is not set
25245 -# CONFIG_MEMSTICK is not set
25246 # CONFIG_NEW_LEDS is not set
25247 -# CONFIG_ACCESSIBILITY is not set
25248 # CONFIG_INFINIBAND is not set
25249 -CONFIG_RTC_LIB=y
25250 -CONFIG_RTC_CLASS=y
25251 -CONFIG_RTC_HCTOSYS=y
25252 -CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
25253 -# CONFIG_RTC_DEBUG is not set
25254 +# CONFIG_RTC_CLASS is not set
25255
25256 #
25257 -# RTC interfaces
25258 +# DMA Engine support
25259 #
25260 -CONFIG_RTC_INTF_SYSFS=y
25261 -CONFIG_RTC_INTF_PROC=y
25262 -CONFIG_RTC_INTF_DEV=y
25263 -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
25264 -# CONFIG_RTC_DRV_TEST is not set
25265 +# CONFIG_DMA_ENGINE is not set
25266
25267 #
25268 -# SPI RTC drivers
25269 +# DMA Clients
25270 #
25271
25272 #
25273 -# Platform RTC drivers
25274 +# DMA Devices
25275 #
25276 -# CONFIG_RTC_DRV_DS1286 is not set
25277 -# CONFIG_RTC_DRV_DS1511 is not set
25278 -# CONFIG_RTC_DRV_DS1553 is not set
25279 -# CONFIG_RTC_DRV_DS1742 is not set
25280 -# CONFIG_RTC_DRV_STK17TA8 is not set
25281 -# CONFIG_RTC_DRV_M48T86 is not set
25282 -# CONFIG_RTC_DRV_M48T35 is not set
25283 -# CONFIG_RTC_DRV_M48T59 is not set
25284 -# CONFIG_RTC_DRV_BQ4802 is not set
25285 -# CONFIG_RTC_DRV_V3020 is not set
25286 +# CONFIG_AUXDISPLAY is not set
25287
25288 #
25289 -# on-CPU RTC drivers
25290 +# Userspace I/O
25291 #
25292 -CONFIG_RTC_DRV_PARISC=y
25293 -# CONFIG_DMADEVICES is not set
25294 -# CONFIG_AUXDISPLAY is not set
25295 # CONFIG_UIO is not set
25296 -# CONFIG_STAGING is not set
25297
25298 #
25299 # File systems
25300 @@ -958,18 +879,19 @@
25301 # CONFIG_EXT2_FS_XIP is not set
25302 CONFIG_EXT3_FS=y
25303 # CONFIG_EXT3_FS_XATTR is not set
25304 -# CONFIG_EXT4_FS is not set
25305 CONFIG_JBD=y
25306 +# CONFIG_JBD_DEBUG is not set
25307 # CONFIG_REISERFS_FS is not set
25308 # CONFIG_JFS_FS is not set
25309 # CONFIG_FS_POSIX_ACL is not set
25310 -CONFIG_FILE_LOCKING=y
25311 # CONFIG_XFS_FS is not set
25312 # CONFIG_OCFS2_FS is not set
25313 -CONFIG_DNOTIFY=y
25314 +# CONFIG_MINIX_FS is not set
25315 +# CONFIG_ROMFS_FS is not set
25316 CONFIG_INOTIFY=y
25317 CONFIG_INOTIFY_USER=y
25318 # CONFIG_QUOTA is not set
25319 +CONFIG_DNOTIFY=y
25320 # CONFIG_AUTOFS_FS is not set
25321 CONFIG_AUTOFS4_FS=y
25322 # CONFIG_FUSE_FS is not set
25323 @@ -995,32 +917,35 @@
25324 CONFIG_PROC_FS=y
25325 CONFIG_PROC_KCORE=y
25326 CONFIG_PROC_SYSCTL=y
25327 -CONFIG_PROC_PAGE_MONITOR=y
25328 CONFIG_SYSFS=y
25329 CONFIG_TMPFS=y
25330 # CONFIG_TMPFS_POSIX_ACL is not set
25331 # CONFIG_HUGETLB_PAGE is not set
25332 -# CONFIG_CONFIGFS_FS is not set
25333 -CONFIG_MISC_FILESYSTEMS=y
25334 +CONFIG_RAMFS=y
25335 +
25336 +#
25337 +# Miscellaneous filesystems
25338 +#
25339 # CONFIG_HFSPLUS_FS is not set
25340 # CONFIG_CRAMFS is not set
25341 -# CONFIG_SQUASHFS is not set
25342 # CONFIG_VXFS_FS is not set
25343 -# CONFIG_MINIX_FS is not set
25344 -# CONFIG_OMFS_FS is not set
25345 # CONFIG_HPFS_FS is not set
25346 # CONFIG_QNX4FS_FS is not set
25347 -# CONFIG_ROMFS_FS is not set
25348 # CONFIG_SYSV_FS is not set
25349 # CONFIG_UFS_FS is not set
25350 -CONFIG_NETWORK_FILESYSTEMS=y
25351 +
25352 +#
25353 +# Network File Systems
25354 +#
25355 CONFIG_NFS_FS=y
25356 CONFIG_NFS_V3=y
25357 # CONFIG_NFS_V3_ACL is not set
25358 -CONFIG_ROOT_NFS=y
25359 +# CONFIG_NFS_DIRECTIO is not set
25360 CONFIG_NFSD=y
25361 CONFIG_NFSD_V3=y
25362 # CONFIG_NFSD_V3_ACL is not set
25363 +CONFIG_NFSD_TCP=y
25364 +CONFIG_ROOT_NFS=y
25365 CONFIG_LOCKD=y
25366 CONFIG_LOCKD_V4=y
25367 CONFIG_EXPORTFS=y
25368 @@ -1037,6 +962,10 @@
25369 #
25370 # CONFIG_PARTITION_ADVANCED is not set
25371 CONFIG_MSDOS_PARTITION=y
25372 +
25373 +#
25374 +# Native Language Support
25375 +#
25376 CONFIG_NLS=y
25377 CONFIG_NLS_DEFAULT="iso8859-1"
25378 CONFIG_NLS_CODEPAGE_437=m
25379 @@ -1082,9 +1011,7 @@
25380 # Kernel hacking
25381 #
25382 # CONFIG_PRINTK_TIME is not set
25383 -CONFIG_ENABLE_WARN_DEPRECATED=y
25384 CONFIG_ENABLE_MUST_CHECK=y
25385 -CONFIG_FRAME_WARN=1024
25386 CONFIG_MAGIC_SYSRQ=y
25387 # CONFIG_UNUSED_SYMBOLS is not set
25388 # CONFIG_DEBUG_FS is not set
25389 @@ -1092,12 +1019,9 @@
25390 CONFIG_DEBUG_KERNEL=y
25391 # CONFIG_DEBUG_SHIRQ is not set
25392 CONFIG_DETECT_SOFTLOCKUP=y
25393 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
25394 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
25395 CONFIG_SCHED_DEBUG=y
25396 # CONFIG_SCHEDSTATS is not set
25397 # CONFIG_TIMER_STATS is not set
25398 -# CONFIG_DEBUG_OBJECTS is not set
25399 # CONFIG_DEBUG_SLAB is not set
25400 # CONFIG_DEBUG_RT_MUTEXES is not set
25401 # CONFIG_RT_MUTEX_TESTER is not set
25402 @@ -1109,29 +1033,10 @@
25403 CONFIG_DEBUG_BUGVERBOSE=y
25404 # CONFIG_DEBUG_INFO is not set
25405 # CONFIG_DEBUG_VM is not set
25406 -# CONFIG_DEBUG_WRITECOUNT is not set
25407 -CONFIG_DEBUG_MEMORY_INIT=y
25408 # CONFIG_DEBUG_LIST is not set
25409 -# CONFIG_DEBUG_SG is not set
25410 -# CONFIG_DEBUG_NOTIFIERS is not set
25411 -# CONFIG_BOOT_PRINTK_DELAY is not set
25412 +CONFIG_FORCED_INLINING=y
25413 # CONFIG_RCU_TORTURE_TEST is not set
25414 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
25415 -# CONFIG_BACKTRACE_SELF_TEST is not set
25416 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
25417 # CONFIG_FAULT_INJECTION is not set
25418 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
25419 -
25420 -#
25421 -# Tracers
25422 -#
25423 -# CONFIG_SCHED_TRACER is not set
25424 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
25425 -# CONFIG_BOOT_TRACER is not set
25426 -# CONFIG_TRACE_BRANCH_PROFILING is not set
25427 -# CONFIG_BUILD_DOCSRC is not set
25428 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
25429 -# CONFIG_SAMPLES is not set
25430 # CONFIG_DEBUG_RODATA is not set
25431
25432 #
25433 @@ -1139,108 +1044,52 @@
25434 #
25435 # CONFIG_KEYS is not set
25436 CONFIG_SECURITY=y
25437 -# CONFIG_SECURITYFS is not set
25438 # CONFIG_SECURITY_NETWORK is not set
25439 -# CONFIG_SECURITY_PATH is not set
25440 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
25441 -CONFIG_SECURITY_DEFAULT_MMAP_MIN_ADDR=0
25442 +CONFIG_SECURITY_CAPABILITIES=y
25443 CONFIG_CRYPTO=y
25444 -
25445 -#
25446 -# Crypto core or helper
25447 -#
25448 -# CONFIG_CRYPTO_FIPS is not set
25449 CONFIG_CRYPTO_ALGAPI=y
25450 -CONFIG_CRYPTO_ALGAPI2=y
25451 -CONFIG_CRYPTO_AEAD2=y
25452 CONFIG_CRYPTO_BLKCIPHER=y
25453 -CONFIG_CRYPTO_BLKCIPHER2=y
25454 -CONFIG_CRYPTO_HASH2=y
25455 -CONFIG_CRYPTO_RNG2=y
25456 CONFIG_CRYPTO_MANAGER=y
25457 -CONFIG_CRYPTO_MANAGER2=y
25458 -# CONFIG_CRYPTO_NULL is not set
25459 -# CONFIG_CRYPTO_CRYPTD is not set
25460 -# CONFIG_CRYPTO_AUTHENC is not set
25461 -# CONFIG_CRYPTO_TEST is not set
25462 -
25463 -#
25464 -# Authenticated Encryption with Associated Data
25465 -#
25466 -# CONFIG_CRYPTO_CCM is not set
25467 -# CONFIG_CRYPTO_GCM is not set
25468 -# CONFIG_CRYPTO_SEQIV is not set
25469 -
25470 -#
25471 -# Block modes
25472 -#
25473 -CONFIG_CRYPTO_CBC=y
25474 -# CONFIG_CRYPTO_CTR is not set
25475 -# CONFIG_CRYPTO_CTS is not set
25476 -# CONFIG_CRYPTO_ECB is not set
25477 -# CONFIG_CRYPTO_PCBC is not set
25478 -
25479 -#
25480 -# Hash modes
25481 -#
25482 # CONFIG_CRYPTO_HMAC is not set
25483 -
25484 -#
25485 -# Digest
25486 -#
25487 -# CONFIG_CRYPTO_CRC32C is not set
25488 +# CONFIG_CRYPTO_NULL is not set
25489 # CONFIG_CRYPTO_MD4 is not set
25490 # CONFIG_CRYPTO_MD5 is not set
25491 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
25492 -# CONFIG_CRYPTO_RMD128 is not set
25493 -# CONFIG_CRYPTO_RMD160 is not set
25494 -# CONFIG_CRYPTO_RMD256 is not set
25495 -# CONFIG_CRYPTO_RMD320 is not set
25496 # CONFIG_CRYPTO_SHA1 is not set
25497 # CONFIG_CRYPTO_SHA256 is not set
25498 # CONFIG_CRYPTO_SHA512 is not set
25499 -# CONFIG_CRYPTO_TGR192 is not set
25500 # CONFIG_CRYPTO_WP512 is not set
25501 -
25502 -#
25503 -# Ciphers
25504 -#
25505 -# CONFIG_CRYPTO_AES is not set
25506 -# CONFIG_CRYPTO_ANUBIS is not set
25507 -# CONFIG_CRYPTO_ARC4 is not set
25508 +# CONFIG_CRYPTO_TGR192 is not set
25509 +# CONFIG_CRYPTO_ECB is not set
25510 +CONFIG_CRYPTO_CBC=y
25511 +# CONFIG_CRYPTO_PCBC is not set
25512 +# CONFIG_CRYPTO_CRYPTD is not set
25513 +# CONFIG_CRYPTO_DES is not set
25514 +# CONFIG_CRYPTO_FCRYPT is not set
25515 # CONFIG_CRYPTO_BLOWFISH is not set
25516 -# CONFIG_CRYPTO_CAMELLIA is not set
25517 +# CONFIG_CRYPTO_TWOFISH is not set
25518 +# CONFIG_CRYPTO_SERPENT is not set
25519 +# CONFIG_CRYPTO_AES is not set
25520 # CONFIG_CRYPTO_CAST5 is not set
25521 # CONFIG_CRYPTO_CAST6 is not set
25522 -# CONFIG_CRYPTO_DES is not set
25523 -# CONFIG_CRYPTO_FCRYPT is not set
25524 +# CONFIG_CRYPTO_TEA is not set
25525 +# CONFIG_CRYPTO_ARC4 is not set
25526 # CONFIG_CRYPTO_KHAZAD is not set
25527 +# CONFIG_CRYPTO_ANUBIS is not set
25528 # CONFIG_CRYPTO_SEED is not set
25529 -# CONFIG_CRYPTO_SERPENT is not set
25530 -# CONFIG_CRYPTO_TEA is not set
25531 -# CONFIG_CRYPTO_TWOFISH is not set
25532 -
25533 -#
25534 -# Compression
25535 -#
25536 # CONFIG_CRYPTO_DEFLATE is not set
25537 -# CONFIG_CRYPTO_LZO is not set
25538 -
25539 -#
25540 -# Random Number Generation
25541 -#
25542 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
25543 +# CONFIG_CRYPTO_MICHAEL_MIC is not set
25544 +# CONFIG_CRYPTO_CRC32C is not set
25545 +# CONFIG_CRYPTO_CAMELLIA is not set
25546 +# CONFIG_CRYPTO_TEST is not set
25547 +# CONFIG_CRYPTO_AUTHENC is not set
25548 CONFIG_CRYPTO_HW=y
25549 -# CONFIG_CRYPTO_DEV_HIFN_795X is not set
25550
25551 #
25552 # Library routines
25553 #
25554 CONFIG_BITREVERSE=y
25555 -CONFIG_GENERIC_FIND_LAST_BIT=y
25556 # CONFIG_CRC_CCITT is not set
25557 # CONFIG_CRC16 is not set
25558 -# CONFIG_CRC_T10DIF is not set
25559 # CONFIG_CRC_ITU_T is not set
25560 CONFIG_CRC32=y
25561 # CONFIG_CRC7 is not set
25562 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/configs/c3000_defconfig linux-2.6.29-rc3.owrt/arch/parisc/configs/c3000_defconfig
25563 --- linux-2.6.29.owrt/arch/parisc/configs/c3000_defconfig 2009-05-10 22:04:39.000000000 +0200
25564 +++ linux-2.6.29-rc3.owrt/arch/parisc/configs/c3000_defconfig 2009-05-10 23:48:28.000000000 +0200
25565 @@ -1,7 +1,7 @@
25566 #
25567 # Automatically generated make config: don't edit
25568 -# Linux kernel version: 2.6.29-rc8
25569 -# Fri Mar 13 01:32:58 2009
25570 +# Linux kernel version: 2.6.23
25571 +# Fri Oct 12 21:24:00 2007
25572 #
25573 CONFIG_PARISC=y
25574 CONFIG_MMU=y
25575 @@ -33,29 +33,16 @@
25576 # CONFIG_POSIX_MQUEUE is not set
25577 # CONFIG_BSD_PROCESS_ACCT is not set
25578 # CONFIG_TASKSTATS is not set
25579 +# CONFIG_USER_NS is not set
25580 # CONFIG_AUDIT is not set
25581 -
25582 -#
25583 -# RCU Subsystem
25584 -#
25585 -CONFIG_CLASSIC_RCU=y
25586 -# CONFIG_TREE_RCU is not set
25587 -# CONFIG_PREEMPT_RCU is not set
25588 -# CONFIG_TREE_RCU_TRACE is not set
25589 -# CONFIG_PREEMPT_RCU_TRACE is not set
25590 CONFIG_IKCONFIG=y
25591 CONFIG_IKCONFIG_PROC=y
25592 CONFIG_LOG_BUF_SHIFT=16
25593 -# CONFIG_GROUP_SCHED is not set
25594 -# CONFIG_CGROUPS is not set
25595 CONFIG_SYSFS_DEPRECATED=y
25596 -CONFIG_SYSFS_DEPRECATED_V2=y
25597 # CONFIG_RELAY is not set
25598 -# CONFIG_NAMESPACES is not set
25599 # CONFIG_BLK_DEV_INITRD is not set
25600 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
25601 CONFIG_SYSCTL=y
25602 -CONFIG_ANON_INODES=y
25603 CONFIG_EMBEDDED=y
25604 CONFIG_SYSCTL_SYSCALL=y
25605 CONFIG_KALLSYMS=y
25606 @@ -67,39 +54,29 @@
25607 CONFIG_ELF_CORE=y
25608 CONFIG_BASE_FULL=y
25609 CONFIG_FUTEX=y
25610 +CONFIG_ANON_INODES=y
25611 CONFIG_EPOLL=y
25612 CONFIG_SIGNALFD=y
25613 -CONFIG_TIMERFD=y
25614 CONFIG_EVENTFD=y
25615 CONFIG_SHMEM=y
25616 -CONFIG_AIO=y
25617 CONFIG_VM_EVENT_COUNTERS=y
25618 -CONFIG_PCI_QUIRKS=y
25619 -CONFIG_COMPAT_BRK=y
25620 CONFIG_SLAB=y
25621 # CONFIG_SLUB is not set
25622 # CONFIG_SLOB is not set
25623 -CONFIG_PROFILING=y
25624 -CONFIG_TRACEPOINTS=y
25625 -# CONFIG_MARKERS is not set
25626 -CONFIG_OPROFILE=m
25627 -CONFIG_HAVE_OPROFILE=y
25628 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
25629 -CONFIG_SLABINFO=y
25630 CONFIG_RT_MUTEXES=y
25631 +# CONFIG_TINY_SHMEM is not set
25632 CONFIG_BASE_SMALL=0
25633 CONFIG_MODULES=y
25634 -# CONFIG_MODULE_FORCE_LOAD is not set
25635 CONFIG_MODULE_UNLOAD=y
25636 CONFIG_MODULE_FORCE_UNLOAD=y
25637 # CONFIG_MODVERSIONS is not set
25638 # CONFIG_MODULE_SRCVERSION_ALL is not set
25639 -CONFIG_INIT_ALL_POSSIBLE=y
25640 +CONFIG_KMOD=y
25641 CONFIG_BLOCK=y
25642 # CONFIG_LBD is not set
25643 # CONFIG_BLK_DEV_IO_TRACE is not set
25644 +# CONFIG_LSF is not set
25645 # CONFIG_BLK_DEV_BSG is not set
25646 -# CONFIG_BLK_DEV_INTEGRITY is not set
25647
25648 #
25649 # IO Schedulers
25650 @@ -113,7 +90,6 @@
25651 # CONFIG_DEFAULT_CFQ is not set
25652 # CONFIG_DEFAULT_NOOP is not set
25653 CONFIG_DEFAULT_IOSCHED="anticipatory"
25654 -# CONFIG_FREEZER is not set
25655
25656 #
25657 # Processor type and features
25658 @@ -139,19 +115,17 @@
25659 # CONFIG_HZ_300 is not set
25660 # CONFIG_HZ_1000 is not set
25661 CONFIG_HZ=250
25662 -# CONFIG_SCHED_HRTICK is not set
25663 CONFIG_SELECT_MEMORY_MODEL=y
25664 CONFIG_FLATMEM_MANUAL=y
25665 # CONFIG_DISCONTIGMEM_MANUAL is not set
25666 # CONFIG_SPARSEMEM_MANUAL is not set
25667 CONFIG_FLATMEM=y
25668 CONFIG_FLAT_NODE_MEM_MAP=y
25669 -CONFIG_PAGEFLAGS_EXTENDED=y
25670 +# CONFIG_SPARSEMEM_STATIC is not set
25671 CONFIG_SPLIT_PTLOCK_CPUS=4
25672 -# CONFIG_PHYS_ADDR_T_64BIT is not set
25673 +# CONFIG_RESOURCES_64BIT is not set
25674 CONFIG_ZONE_DMA_FLAG=0
25675 CONFIG_VIRT_TO_BUS=y
25676 -CONFIG_UNEVICTABLE_LRU=y
25677 # CONFIG_HPUX is not set
25678
25679 #
25680 @@ -160,13 +134,14 @@
25681 # CONFIG_GSC is not set
25682 CONFIG_PCI=y
25683 # CONFIG_ARCH_SUPPORTS_MSI is not set
25684 -CONFIG_PCI_LEGACY=y
25685 # CONFIG_PCI_DEBUG is not set
25686 -# CONFIG_PCI_STUB is not set
25687 CONFIG_PCI_LBA=y
25688 CONFIG_IOSAPIC=y
25689 CONFIG_IOMMU_SBA=y
25690 -CONFIG_IOMMU_HELPER=y
25691 +
25692 +#
25693 +# PCCARD (PCMCIA/CardBus) support
25694 +#
25695 # CONFIG_PCCARD is not set
25696 # CONFIG_HOTPLUG_PCI is not set
25697
25698 @@ -183,15 +158,16 @@
25699 # Executable file formats
25700 #
25701 CONFIG_BINFMT_ELF=y
25702 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
25703 -# CONFIG_HAVE_AOUT is not set
25704 # CONFIG_BINFMT_MISC is not set
25705 +
25706 +#
25707 +# Networking
25708 +#
25709 CONFIG_NET=y
25710
25711 #
25712 # Networking options
25713 #
25714 -CONFIG_COMPAT_NET_DEV_OPS=y
25715 CONFIG_PACKET=y
25716 CONFIG_PACKET_MMAP=y
25717 CONFIG_UNIX=y
25718 @@ -199,8 +175,6 @@
25719 CONFIG_XFRM_USER=m
25720 # CONFIG_XFRM_SUB_POLICY is not set
25721 # CONFIG_XFRM_MIGRATE is not set
25722 -# CONFIG_XFRM_STATISTICS is not set
25723 -CONFIG_XFRM_IPCOMP=m
25724 CONFIG_NET_KEY=m
25725 # CONFIG_NET_KEY_MIGRATE is not set
25726 CONFIG_INET=y
25727 @@ -230,6 +204,7 @@
25728 CONFIG_TCP_CONG_CUBIC=y
25729 CONFIG_DEFAULT_TCP_CONG="cubic"
25730 # CONFIG_TCP_MD5SIG is not set
25731 +# CONFIG_IP_VS is not set
25732 CONFIG_IPV6=m
25733 # CONFIG_IPV6_PRIVACY is not set
25734 # CONFIG_IPV6_ROUTER_PREF is not set
25735 @@ -245,34 +220,29 @@
25736 CONFIG_INET6_XFRM_MODE_BEET=m
25737 # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
25738 CONFIG_IPV6_SIT=m
25739 -CONFIG_IPV6_NDISC_NODETYPE=y
25740 CONFIG_IPV6_TUNNEL=m
25741 # CONFIG_IPV6_MULTIPLE_TABLES is not set
25742 -# CONFIG_IPV6_MROUTE is not set
25743 # CONFIG_NETWORK_SECMARK is not set
25744 CONFIG_NETFILTER=y
25745 CONFIG_NETFILTER_DEBUG=y
25746 -CONFIG_NETFILTER_ADVANCED=y
25747
25748 #
25749 # Core Netfilter Configuration
25750 #
25751 -# CONFIG_NETFILTER_NETLINK_QUEUE is not set
25752 -# CONFIG_NETFILTER_NETLINK_LOG is not set
25753 +# CONFIG_NETFILTER_NETLINK is not set
25754 +# CONFIG_NF_CONNTRACK_ENABLED is not set
25755 # CONFIG_NF_CONNTRACK is not set
25756 # CONFIG_NETFILTER_XTABLES is not set
25757 -# CONFIG_IP_VS is not set
25758
25759 #
25760 # IP: Netfilter Configuration
25761 #
25762 -# CONFIG_NF_DEFRAG_IPV4 is not set
25763 CONFIG_IP_NF_QUEUE=m
25764 # CONFIG_IP_NF_IPTABLES is not set
25765 # CONFIG_IP_NF_ARPTABLES is not set
25766
25767 #
25768 -# IPv6: Netfilter Configuration
25769 +# IPv6: Netfilter Configuration (EXPERIMENTAL)
25770 #
25771 # CONFIG_IP6_NF_QUEUE is not set
25772 # CONFIG_IP6_NF_IPTABLES is not set
25773 @@ -281,7 +251,6 @@
25774 # CONFIG_TIPC is not set
25775 # CONFIG_ATM is not set
25776 # CONFIG_BRIDGE is not set
25777 -# CONFIG_NET_DSA is not set
25778 # CONFIG_VLAN_8021Q is not set
25779 # CONFIG_DECNET is not set
25780 # CONFIG_LLC2 is not set
25781 @@ -291,26 +260,28 @@
25782 # CONFIG_LAPB is not set
25783 # CONFIG_ECONET is not set
25784 # CONFIG_WAN_ROUTER is not set
25785 +
25786 +#
25787 +# QoS and/or fair queueing
25788 +#
25789 # CONFIG_NET_SCHED is not set
25790 -# CONFIG_DCB is not set
25791
25792 #
25793 # Network testing
25794 #
25795 CONFIG_NET_PKTGEN=m
25796 # CONFIG_HAMRADIO is not set
25797 -# CONFIG_CAN is not set
25798 # CONFIG_IRDA is not set
25799 # CONFIG_BT is not set
25800 # CONFIG_AF_RXRPC is not set
25801 -# CONFIG_PHONET is not set
25802 -CONFIG_WIRELESS=y
25803 +
25804 +#
25805 +# Wireless
25806 +#
25807 # CONFIG_CFG80211 is not set
25808 -CONFIG_WIRELESS_OLD_REGULATORY=y
25809 # CONFIG_WIRELESS_EXT is not set
25810 -# CONFIG_LIB80211 is not set
25811 # CONFIG_MAC80211 is not set
25812 -# CONFIG_WIMAX is not set
25813 +# CONFIG_IEEE80211 is not set
25814 # CONFIG_RFKILL is not set
25815 # CONFIG_NET_9P is not set
25816
25817 @@ -325,8 +296,6 @@
25818 # CONFIG_STANDALONE is not set
25819 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
25820 CONFIG_FW_LOADER=y
25821 -CONFIG_FIRMWARE_IN_KERNEL=y
25822 -CONFIG_EXTRA_FIRMWARE=""
25823 # CONFIG_DEBUG_DRIVER is not set
25824 # CONFIG_DEBUG_DEVRES is not set
25825 # CONFIG_SYS_HYPERVISOR is not set
25826 @@ -347,62 +316,59 @@
25827 # CONFIG_BLK_DEV_RAM is not set
25828 # CONFIG_CDROM_PKTCDVD is not set
25829 # CONFIG_ATA_OVER_ETH is not set
25830 -# CONFIG_BLK_DEV_HD is not set
25831 CONFIG_MISC_DEVICES=y
25832 # CONFIG_PHANTOM is not set
25833 +# CONFIG_EEPROM_93CX6 is not set
25834 # CONFIG_SGI_IOC4 is not set
25835 # CONFIG_TIFM_CORE is not set
25836 -# CONFIG_ENCLOSURE_SERVICES is not set
25837 -# CONFIG_HP_ILO is not set
25838 -# CONFIG_C2PORT is not set
25839 -
25840 -#
25841 -# EEPROM support
25842 -#
25843 -# CONFIG_EEPROM_93CX6 is not set
25844 -CONFIG_HAVE_IDE=y
25845 CONFIG_IDE=y
25846 +CONFIG_IDE_MAX_HWIFS=4
25847 +CONFIG_BLK_DEV_IDE=y
25848
25849 #
25850 -# Please see Documentation/ide/ide.txt for help/info on IDE drives
25851 +# Please see Documentation/ide.txt for help/info on IDE drives
25852 #
25853 -CONFIG_IDE_ATAPI=y
25854 # CONFIG_BLK_DEV_IDE_SATA is not set
25855 -CONFIG_IDE_GD=y
25856 -CONFIG_IDE_GD_ATA=y
25857 -# CONFIG_IDE_GD_ATAPI is not set
25858 +CONFIG_BLK_DEV_IDEDISK=m
25859 +# CONFIG_IDEDISK_MULTI_MODE is not set
25860 CONFIG_BLK_DEV_IDECD=y
25861 -CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
25862 # CONFIG_BLK_DEV_IDETAPE is not set
25863 +# CONFIG_BLK_DEV_IDEFLOPPY is not set
25864 +CONFIG_BLK_DEV_IDESCSI=y
25865 # CONFIG_IDE_TASK_IOCTL is not set
25866 CONFIG_IDE_PROC_FS=y
25867
25868 #
25869 # IDE chipset support/bugfixes
25870 #
25871 +CONFIG_IDE_GENERIC=y
25872 # CONFIG_BLK_DEV_PLATFORM is not set
25873 -CONFIG_BLK_DEV_IDEDMA_SFF=y
25874
25875 #
25876 # PCI IDE chipsets support
25877 #
25878 CONFIG_BLK_DEV_IDEPCI=y
25879 +CONFIG_IDEPCI_SHARE_IRQ=y
25880 CONFIG_IDEPCI_PCIBUS_ORDER=y
25881 +# CONFIG_BLK_DEV_OFFBOARD is not set
25882 # CONFIG_BLK_DEV_GENERIC is not set
25883 # CONFIG_BLK_DEV_OPTI621 is not set
25884 CONFIG_BLK_DEV_IDEDMA_PCI=y
25885 +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
25886 +CONFIG_IDEDMA_ONLYDISK=y
25887 # CONFIG_BLK_DEV_AEC62XX is not set
25888 # CONFIG_BLK_DEV_ALI15X3 is not set
25889 # CONFIG_BLK_DEV_AMD74XX is not set
25890 # CONFIG_BLK_DEV_CMD64X is not set
25891 # CONFIG_BLK_DEV_TRIFLEX is not set
25892 +# CONFIG_BLK_DEV_CY82C693 is not set
25893 # CONFIG_BLK_DEV_CS5520 is not set
25894 # CONFIG_BLK_DEV_CS5530 is not set
25895 +# CONFIG_BLK_DEV_HPT34X is not set
25896 # CONFIG_BLK_DEV_HPT366 is not set
25897 # CONFIG_BLK_DEV_JMICRON is not set
25898 # CONFIG_BLK_DEV_SC1200 is not set
25899 # CONFIG_BLK_DEV_PIIX is not set
25900 -# CONFIG_BLK_DEV_IT8172 is not set
25901 # CONFIG_BLK_DEV_IT8213 is not set
25902 # CONFIG_BLK_DEV_IT821X is not set
25903 CONFIG_BLK_DEV_NS87415=y
25904 @@ -414,7 +380,10 @@
25905 # CONFIG_BLK_DEV_TRM290 is not set
25906 # CONFIG_BLK_DEV_VIA82CXXX is not set
25907 # CONFIG_BLK_DEV_TC86C001 is not set
25908 +# CONFIG_IDE_ARM is not set
25909 CONFIG_BLK_DEV_IDEDMA=y
25910 +# CONFIG_IDEDMA_IVB is not set
25911 +# CONFIG_BLK_DEV_HD is not set
25912
25913 #
25914 # SCSI device support
25915 @@ -453,10 +422,8 @@
25916 # CONFIG_SCSI_FC_ATTRS is not set
25917 CONFIG_SCSI_ISCSI_ATTRS=m
25918 # CONFIG_SCSI_SAS_LIBSAS is not set
25919 -# CONFIG_SCSI_SRP_ATTRS is not set
25920 CONFIG_SCSI_LOWLEVEL=y
25921 # CONFIG_ISCSI_TCP is not set
25922 -# CONFIG_SCSI_CXGB3_ISCSI is not set
25923 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
25924 # CONFIG_SCSI_3W_9XXX is not set
25925 # CONFIG_SCSI_ACARD is not set
25926 @@ -466,20 +433,16 @@
25927 # CONFIG_SCSI_AIC79XX is not set
25928 # CONFIG_SCSI_AIC94XX is not set
25929 # CONFIG_SCSI_DPT_I2O is not set
25930 -# CONFIG_SCSI_ADVANSYS is not set
25931 # CONFIG_SCSI_ARCMSR is not set
25932 # CONFIG_MEGARAID_NEWGEN is not set
25933 # CONFIG_MEGARAID_LEGACY is not set
25934 # CONFIG_MEGARAID_SAS is not set
25935 # CONFIG_SCSI_HPTIOP is not set
25936 -# CONFIG_LIBFC is not set
25937 -# CONFIG_FCOE is not set
25938 # CONFIG_SCSI_DMX3191D is not set
25939 # CONFIG_SCSI_FUTURE_DOMAIN is not set
25940 # CONFIG_SCSI_IPS is not set
25941 # CONFIG_SCSI_INITIO is not set
25942 # CONFIG_SCSI_INIA100 is not set
25943 -# CONFIG_SCSI_MVSAS is not set
25944 # CONFIG_SCSI_STEX is not set
25945 CONFIG_SCSI_SYM53C8XX_2=y
25946 CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
25947 @@ -495,11 +458,9 @@
25948 # CONFIG_SCSI_NSP32 is not set
25949 CONFIG_SCSI_DEBUG=m
25950 # CONFIG_SCSI_SRP is not set
25951 -# CONFIG_SCSI_DH is not set
25952 # CONFIG_ATA is not set
25953 CONFIG_MD=y
25954 CONFIG_BLK_DEV_MD=y
25955 -CONFIG_MD_AUTODETECT=y
25956 CONFIG_MD_LINEAR=y
25957 CONFIG_MD_RAID0=y
25958 CONFIG_MD_RAID1=y
25959 @@ -514,8 +475,13 @@
25960 CONFIG_DM_MIRROR=m
25961 CONFIG_DM_ZERO=m
25962 CONFIG_DM_MULTIPATH=m
25963 +# CONFIG_DM_MULTIPATH_EMC is not set
25964 +# CONFIG_DM_MULTIPATH_RDAC is not set
25965 # CONFIG_DM_DELAY is not set
25966 -# CONFIG_DM_UEVENT is not set
25967 +
25968 +#
25969 +# Fusion MPT device support
25970 +#
25971 CONFIG_FUSION=y
25972 CONFIG_FUSION_SPI=m
25973 # CONFIG_FUSION_FC is not set
25974 @@ -527,40 +493,20 @@
25975 #
25976 # IEEE 1394 (FireWire) support
25977 #
25978 -
25979 -#
25980 -# Enable only one of the two stacks, unless you know what you are doing
25981 -#
25982 # CONFIG_FIREWIRE is not set
25983 # CONFIG_IEEE1394 is not set
25984 # CONFIG_I2O is not set
25985 CONFIG_NETDEVICES=y
25986 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
25987 CONFIG_DUMMY=m
25988 CONFIG_BONDING=m
25989 # CONFIG_MACVLAN is not set
25990 # CONFIG_EQUALIZER is not set
25991 CONFIG_TUN=m
25992 # CONFIG_VETH is not set
25993 +# CONFIG_IP1000 is not set
25994 # CONFIG_ARCNET is not set
25995 -CONFIG_PHYLIB=m
25996 -
25997 -#
25998 -# MII PHY device drivers
25999 -#
26000 -# CONFIG_MARVELL_PHY is not set
26001 -# CONFIG_DAVICOM_PHY is not set
26002 -# CONFIG_QSEMI_PHY is not set
26003 -# CONFIG_LXT_PHY is not set
26004 -# CONFIG_CICADA_PHY is not set
26005 -# CONFIG_VITESSE_PHY is not set
26006 -# CONFIG_SMSC_PHY is not set
26007 -# CONFIG_BROADCOM_PHY is not set
26008 -# CONFIG_ICPLUS_PHY is not set
26009 -# CONFIG_REALTEK_PHY is not set
26010 -# CONFIG_NATIONAL_PHY is not set
26011 -# CONFIG_STE10XP is not set
26012 -# CONFIG_LSI_ET1011C_PHY is not set
26013 -# CONFIG_MDIO_BITBANG is not set
26014 +# CONFIG_PHYLIB is not set
26015 CONFIG_NET_ETHERNET=y
26016 CONFIG_MII=m
26017 # CONFIG_HAPPYMEAL is not set
26018 @@ -582,38 +528,33 @@
26019 # CONFIG_IBM_NEW_EMAC_RGMII is not set
26020 # CONFIG_IBM_NEW_EMAC_TAH is not set
26021 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
26022 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
26023 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
26024 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
26025 CONFIG_NET_PCI=y
26026 # CONFIG_PCNET32 is not set
26027 # CONFIG_AMD8111_ETH is not set
26028 # CONFIG_ADAPTEC_STARFIRE is not set
26029 # CONFIG_B44 is not set
26030 # CONFIG_FORCEDETH is not set
26031 +# CONFIG_EEPRO100 is not set
26032 CONFIG_E100=m
26033 # CONFIG_FEALNX is not set
26034 # CONFIG_NATSEMI is not set
26035 # CONFIG_NE2K_PCI is not set
26036 # CONFIG_8139CP is not set
26037 # CONFIG_8139TOO is not set
26038 -# CONFIG_R6040 is not set
26039 # CONFIG_SIS900 is not set
26040 # CONFIG_EPIC100 is not set
26041 -# CONFIG_SMSC9420 is not set
26042 # CONFIG_SUNDANCE is not set
26043 # CONFIG_TLAN is not set
26044 # CONFIG_VIA_RHINE is not set
26045 # CONFIG_SC92031 is not set
26046 -# CONFIG_ATL2 is not set
26047 CONFIG_NETDEV_1000=y
26048 CONFIG_ACENIC=m
26049 # CONFIG_ACENIC_OMIT_TIGON_I is not set
26050 # CONFIG_DL2K is not set
26051 CONFIG_E1000=m
26052 +# CONFIG_E1000_NAPI is not set
26053 +# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
26054 # CONFIG_E1000E is not set
26055 -# CONFIG_IP1000 is not set
26056 -# CONFIG_IGB is not set
26057 # CONFIG_NS83820 is not set
26058 # CONFIG_HAMACHI is not set
26059 # CONFIG_YELLOWFIN is not set
26060 @@ -621,31 +562,23 @@
26061 # CONFIG_SIS190 is not set
26062 # CONFIG_SKGE is not set
26063 # CONFIG_SKY2 is not set
26064 +# CONFIG_SK98LIN is not set
26065 # CONFIG_VIA_VELOCITY is not set
26066 CONFIG_TIGON3=m
26067 # CONFIG_BNX2 is not set
26068 # CONFIG_QLA3XXX is not set
26069 # CONFIG_ATL1 is not set
26070 -# CONFIG_ATL1E is not set
26071 -# CONFIG_ATL1C is not set
26072 -# CONFIG_JME is not set
26073 CONFIG_NETDEV_10000=y
26074 # CONFIG_CHELSIO_T1 is not set
26075 -CONFIG_CHELSIO_T3_DEPENDS=y
26076 # CONFIG_CHELSIO_T3 is not set
26077 -# CONFIG_ENIC is not set
26078 # CONFIG_IXGBE is not set
26079 # CONFIG_IXGB is not set
26080 # CONFIG_S2IO is not set
26081 # CONFIG_MYRI10GE is not set
26082 # CONFIG_NETXEN_NIC is not set
26083 # CONFIG_NIU is not set
26084 -# CONFIG_MLX4_EN is not set
26085 # CONFIG_MLX4_CORE is not set
26086 # CONFIG_TEHUTI is not set
26087 -# CONFIG_BNX2X is not set
26088 -# CONFIG_QLGE is not set
26089 -# CONFIG_SFC is not set
26090 # CONFIG_TR is not set
26091
26092 #
26093 @@ -653,11 +586,6 @@
26094 #
26095 # CONFIG_WLAN_PRE80211 is not set
26096 # CONFIG_WLAN_80211 is not set
26097 -# CONFIG_IWLWIFI_LEDS is not set
26098 -
26099 -#
26100 -# Enable WiMAX (Networking options) to see the WiMAX drivers
26101 -#
26102
26103 #
26104 # USB Network Adapters
26105 @@ -666,6 +594,7 @@
26106 # CONFIG_USB_KAWETH is not set
26107 # CONFIG_USB_PEGASUS is not set
26108 # CONFIG_USB_RTL8150 is not set
26109 +# CONFIG_USB_USBNET_MII is not set
26110 # CONFIG_USB_USBNET is not set
26111 # CONFIG_WAN is not set
26112 # CONFIG_FDDI is not set
26113 @@ -683,6 +612,7 @@
26114 # CONFIG_SLIP is not set
26115 CONFIG_SLHC=m
26116 # CONFIG_NET_FC is not set
26117 +# CONFIG_SHAPER is not set
26118 # CONFIG_NETCONSOLE is not set
26119 # CONFIG_NETPOLL is not set
26120 # CONFIG_NET_POLL_CONTROLLER is not set
26121 @@ -704,6 +634,7 @@
26122 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1600
26123 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200
26124 # CONFIG_INPUT_JOYDEV is not set
26125 +# CONFIG_INPUT_TSDEV is not set
26126 # CONFIG_INPUT_EVDEV is not set
26127 # CONFIG_INPUT_EVBUG is not set
26128
26129 @@ -721,7 +652,6 @@
26130 # CONFIG_MOUSE_PS2 is not set
26131 # CONFIG_MOUSE_SERIAL is not set
26132 # CONFIG_MOUSE_APPLETOUCH is not set
26133 -# CONFIG_MOUSE_BCM5974 is not set
26134 # CONFIG_MOUSE_VSXXXAA is not set
26135 # CONFIG_INPUT_JOYSTICK is not set
26136 # CONFIG_INPUT_TABLET is not set
26137 @@ -742,13 +672,10 @@
26138 # Character devices
26139 #
26140 CONFIG_VT=y
26141 -CONFIG_CONSOLE_TRANSLATIONS=y
26142 CONFIG_VT_CONSOLE=y
26143 CONFIG_HW_CONSOLE=y
26144 # CONFIG_VT_HW_CONSOLE_BINDING is not set
26145 -CONFIG_DEVKMEM=y
26146 # CONFIG_SERIAL_NONSTANDARD is not set
26147 -# CONFIG_NOZOMI is not set
26148
26149 #
26150 # Serial drivers
26151 @@ -772,77 +699,72 @@
26152 CONFIG_SERIAL_CORE_CONSOLE=y
26153 # CONFIG_SERIAL_JSM is not set
26154 CONFIG_UNIX98_PTYS=y
26155 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
26156 CONFIG_LEGACY_PTYS=y
26157 CONFIG_LEGACY_PTY_COUNT=256
26158 # CONFIG_IPMI_HANDLER is not set
26159 +# CONFIG_WATCHDOG is not set
26160 # CONFIG_HW_RANDOM is not set
26161 +CONFIG_GEN_RTC=y
26162 +CONFIG_GEN_RTC_X=y
26163 # CONFIG_R3964 is not set
26164 # CONFIG_APPLICOM is not set
26165 +# CONFIG_AGP is not set
26166 +# CONFIG_DRM is not set
26167 CONFIG_RAW_DRIVER=y
26168 CONFIG_MAX_RAW_DEVS=256
26169 # CONFIG_TCG_TPM is not set
26170 CONFIG_DEVPORT=y
26171 # CONFIG_I2C is not set
26172 +
26173 +#
26174 +# SPI support
26175 +#
26176 # CONFIG_SPI is not set
26177 +# CONFIG_SPI_MASTER is not set
26178 # CONFIG_W1 is not set
26179 # CONFIG_POWER_SUPPLY is not set
26180 # CONFIG_HWMON is not set
26181 -# CONFIG_THERMAL is not set
26182 -# CONFIG_THERMAL_HWMON is not set
26183 -# CONFIG_WATCHDOG is not set
26184 -CONFIG_SSB_POSSIBLE=y
26185
26186 #
26187 # Sonics Silicon Backplane
26188 #
26189 +CONFIG_SSB_POSSIBLE=y
26190 # CONFIG_SSB is not set
26191
26192 #
26193 # Multifunction device drivers
26194 #
26195 -# CONFIG_MFD_CORE is not set
26196 # CONFIG_MFD_SM501 is not set
26197 -# CONFIG_HTC_PASIC3 is not set
26198 -# CONFIG_MFD_TMIO is not set
26199 -# CONFIG_REGULATOR is not set
26200
26201 #
26202 # Multimedia devices
26203 #
26204 -
26205 -#
26206 -# Multimedia core support
26207 -#
26208 # CONFIG_VIDEO_DEV is not set
26209 # CONFIG_DVB_CORE is not set
26210 -# CONFIG_VIDEO_MEDIA is not set
26211 +# CONFIG_DAB is not set
26212
26213 #
26214 -# Multimedia drivers
26215 +# Graphics support
26216 #
26217 -# CONFIG_DAB is not set
26218 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
26219
26220 #
26221 -# Graphics support
26222 +# Display device support
26223 #
26224 -# CONFIG_AGP is not set
26225 -# CONFIG_DRM is not set
26226 +# CONFIG_DISPLAY_SUPPORT is not set
26227 # CONFIG_VGASTATE is not set
26228 CONFIG_VIDEO_OUTPUT_CONTROL=m
26229 CONFIG_FB=y
26230 # CONFIG_FIRMWARE_EDID is not set
26231 # CONFIG_FB_DDC is not set
26232 -# CONFIG_FB_BOOT_VESA_SUPPORT is not set
26233 CONFIG_FB_CFB_FILLRECT=y
26234 CONFIG_FB_CFB_COPYAREA=y
26235 CONFIG_FB_CFB_IMAGEBLIT=y
26236 -# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
26237 # CONFIG_FB_SYS_FILLRECT is not set
26238 # CONFIG_FB_SYS_COPYAREA is not set
26239 # CONFIG_FB_SYS_IMAGEBLIT is not set
26240 -# CONFIG_FB_FOREIGN_ENDIAN is not set
26241 # CONFIG_FB_SYS_FOPS is not set
26242 +CONFIG_FB_DEFERRED_IO=y
26243 # CONFIG_FB_SVGALIB is not set
26244 # CONFIG_FB_MACMODES is not set
26245 # CONFIG_FB_BACKLIGHT is not set
26246 @@ -868,7 +790,6 @@
26247 # CONFIG_FB_S3 is not set
26248 # CONFIG_FB_SAVAGE is not set
26249 # CONFIG_FB_SIS is not set
26250 -# CONFIG_FB_VIA is not set
26251 # CONFIG_FB_NEOMAGIC is not set
26252 # CONFIG_FB_KYRO is not set
26253 # CONFIG_FB_3DFX is not set
26254 @@ -877,16 +798,7 @@
26255 # CONFIG_FB_TRIDENT is not set
26256 # CONFIG_FB_ARK is not set
26257 # CONFIG_FB_PM3 is not set
26258 -# CONFIG_FB_CARMINE is not set
26259 # CONFIG_FB_VIRTUAL is not set
26260 -# CONFIG_FB_METRONOME is not set
26261 -# CONFIG_FB_MB862XX is not set
26262 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
26263 -
26264 -#
26265 -# Display device support
26266 -#
26267 -# CONFIG_DISPLAY_SUPPORT is not set
26268
26269 #
26270 # Console display driver support
26271 @@ -906,8 +818,15 @@
26272 # CONFIG_LOGO_LINUX_VGA16 is not set
26273 # CONFIG_LOGO_LINUX_CLUT224 is not set
26274 CONFIG_LOGO_PARISC_CLUT224=y
26275 +
26276 +#
26277 +# Sound
26278 +#
26279 CONFIG_SOUND=y
26280 -CONFIG_SOUND_OSS_CORE=y
26281 +
26282 +#
26283 +# Advanced Linux Sound Architecture
26284 +#
26285 CONFIG_SND=y
26286 CONFIG_SND_TIMER=y
26287 CONFIG_SND_PCM=y
26288 @@ -923,16 +842,20 @@
26289 CONFIG_SND_VERBOSE_PROCFS=y
26290 # CONFIG_SND_VERBOSE_PRINTK is not set
26291 # CONFIG_SND_DEBUG is not set
26292 -CONFIG_SND_VMASTER=y
26293 +
26294 +#
26295 +# Generic devices
26296 +#
26297 CONFIG_SND_AC97_CODEC=y
26298 -CONFIG_SND_DRIVERS=y
26299 # CONFIG_SND_DUMMY is not set
26300 # CONFIG_SND_VIRMIDI is not set
26301 # CONFIG_SND_MTPAV is not set
26302 # CONFIG_SND_SERIAL_U16550 is not set
26303 # CONFIG_SND_MPU401 is not set
26304 -# CONFIG_SND_AC97_POWER_SAVE is not set
26305 -CONFIG_SND_PCI=y
26306 +
26307 +#
26308 +# PCI devices
26309 +#
26310 CONFIG_SND_AD1889=y
26311 # CONFIG_SND_ALS300 is not set
26312 # CONFIG_SND_ALI5451 is not set
26313 @@ -941,12 +864,10 @@
26314 # CONFIG_SND_AU8810 is not set
26315 # CONFIG_SND_AU8820 is not set
26316 # CONFIG_SND_AU8830 is not set
26317 -# CONFIG_SND_AW2 is not set
26318 # CONFIG_SND_AZT3328 is not set
26319 # CONFIG_SND_BT87X is not set
26320 # CONFIG_SND_CA0106 is not set
26321 # CONFIG_SND_CMIPCI is not set
26322 -# CONFIG_SND_OXYGEN is not set
26323 # CONFIG_SND_CS4281 is not set
26324 # CONFIG_SND_CS46XX is not set
26325 # CONFIG_SND_DARLA20 is not set
26326 @@ -971,7 +892,6 @@
26327 # CONFIG_SND_HDA_INTEL is not set
26328 # CONFIG_SND_HDSP is not set
26329 # CONFIG_SND_HDSPM is not set
26330 -# CONFIG_SND_HIFIER is not set
26331 # CONFIG_SND_ICE1712 is not set
26332 # CONFIG_SND_ICE1724 is not set
26333 # CONFIG_SND_INTEL8X0 is not set
26334 @@ -989,59 +909,47 @@
26335 # CONFIG_SND_TRIDENT is not set
26336 # CONFIG_SND_VIA82XX is not set
26337 # CONFIG_SND_VIA82XX_MODEM is not set
26338 -# CONFIG_SND_VIRTUOSO is not set
26339 # CONFIG_SND_VX222 is not set
26340 # CONFIG_SND_YMFPCI is not set
26341 -CONFIG_SND_USB=y
26342 +# CONFIG_SND_AC97_POWER_SAVE is not set
26343 +
26344 +#
26345 +# USB devices
26346 +#
26347 # CONFIG_SND_USB_AUDIO is not set
26348 # CONFIG_SND_USB_CAIAQ is not set
26349 +
26350 +#
26351 +# System on Chip audio support
26352 +#
26353 # CONFIG_SND_SOC is not set
26354 +
26355 +#
26356 +# SoC Audio support for SuperH
26357 +#
26358 +
26359 +#
26360 +# Open Sound System
26361 +#
26362 # CONFIG_SOUND_PRIME is not set
26363 CONFIG_AC97_BUS=y
26364 CONFIG_HID_SUPPORT=y
26365 CONFIG_HID=y
26366 # CONFIG_HID_DEBUG is not set
26367 -# CONFIG_HIDRAW is not set
26368
26369 #
26370 # USB Input Devices
26371 #
26372 CONFIG_USB_HID=y
26373 -# CONFIG_HID_PID is not set
26374 +# CONFIG_USB_HIDINPUT_POWERBOOK is not set
26375 +# CONFIG_HID_FF is not set
26376 CONFIG_USB_HIDDEV=y
26377 -
26378 -#
26379 -# Special HID drivers
26380 -#
26381 -CONFIG_HID_COMPAT=y
26382 -# CONFIG_HID_A4TECH is not set
26383 -# CONFIG_HID_APPLE is not set
26384 -# CONFIG_HID_BELKIN is not set
26385 -# CONFIG_HID_CHERRY is not set
26386 -# CONFIG_HID_CHICONY is not set
26387 -# CONFIG_HID_CYPRESS is not set
26388 -# CONFIG_HID_EZKEY is not set
26389 -# CONFIG_HID_GYRATION is not set
26390 -# CONFIG_HID_LOGITECH is not set
26391 -# CONFIG_HID_MICROSOFT is not set
26392 -# CONFIG_HID_MONTEREY is not set
26393 -# CONFIG_HID_NTRIG is not set
26394 -# CONFIG_HID_PANTHERLORD is not set
26395 -# CONFIG_HID_PETALYNX is not set
26396 -# CONFIG_HID_SAMSUNG is not set
26397 -# CONFIG_HID_SONY is not set
26398 -# CONFIG_HID_SUNPLUS is not set
26399 -# CONFIG_GREENASIA_FF is not set
26400 -# CONFIG_HID_TOPSEED is not set
26401 -# CONFIG_THRUSTMASTER_FF is not set
26402 -# CONFIG_ZEROPLUS_FF is not set
26403 CONFIG_USB_SUPPORT=y
26404 CONFIG_USB_ARCH_HAS_HCD=y
26405 CONFIG_USB_ARCH_HAS_OHCI=y
26406 CONFIG_USB_ARCH_HAS_EHCI=y
26407 CONFIG_USB=y
26408 CONFIG_USB_DEBUG=y
26409 -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
26410
26411 #
26412 # Miscellaneous USB options
26413 @@ -1050,20 +958,12 @@
26414 CONFIG_USB_DEVICE_CLASS=y
26415 # CONFIG_USB_DYNAMIC_MINORS is not set
26416 # CONFIG_USB_OTG is not set
26417 -# CONFIG_USB_OTG_WHITELIST is not set
26418 -# CONFIG_USB_OTG_BLACKLIST_HUB is not set
26419 -# CONFIG_USB_MON is not set
26420 -# CONFIG_USB_WUSB is not set
26421 -# CONFIG_USB_WUSB_CBAF is not set
26422
26423 #
26424 # USB Host Controller Drivers
26425 #
26426 -# CONFIG_USB_C67X00_HCD is not set
26427 # CONFIG_USB_EHCI_HCD is not set
26428 -# CONFIG_USB_OXU210HP_HCD is not set
26429 # CONFIG_USB_ISP116X_HCD is not set
26430 -# CONFIG_USB_ISP1760_HCD is not set
26431 CONFIG_USB_OHCI_HCD=y
26432 # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
26433 # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
26434 @@ -1071,37 +971,32 @@
26435 # CONFIG_USB_UHCI_HCD is not set
26436 # CONFIG_USB_SL811_HCD is not set
26437 # CONFIG_USB_R8A66597_HCD is not set
26438 -# CONFIG_USB_WHCI_HCD is not set
26439 -# CONFIG_USB_HWA_HCD is not set
26440
26441 #
26442 # USB Device Class drivers
26443 #
26444 # CONFIG_USB_ACM is not set
26445 CONFIG_USB_PRINTER=m
26446 -# CONFIG_USB_WDM is not set
26447 -# CONFIG_USB_TMC is not set
26448
26449 #
26450 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
26451 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
26452 #
26453
26454 #
26455 -# see USB_STORAGE Help for more information
26456 +# may also be needed; see USB_STORAGE Help for more information
26457 #
26458 CONFIG_USB_STORAGE=m
26459 # CONFIG_USB_STORAGE_DEBUG is not set
26460 # CONFIG_USB_STORAGE_DATAFAB is not set
26461 # CONFIG_USB_STORAGE_FREECOM is not set
26462 # CONFIG_USB_STORAGE_ISD200 is not set
26463 +CONFIG_USB_STORAGE_DPCM=y
26464 CONFIG_USB_STORAGE_USBAT=y
26465 CONFIG_USB_STORAGE_SDDR09=y
26466 CONFIG_USB_STORAGE_SDDR55=y
26467 CONFIG_USB_STORAGE_JUMPSHOT=y
26468 # CONFIG_USB_STORAGE_ALAUDA is not set
26469 -# CONFIG_USB_STORAGE_ONETOUCH is not set
26470 # CONFIG_USB_STORAGE_KARMA is not set
26471 -# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
26472 # CONFIG_USB_LIBUSUAL is not set
26473
26474 #
26475 @@ -1109,10 +1004,15 @@
26476 #
26477 CONFIG_USB_MDC800=m
26478 CONFIG_USB_MICROTEK=m
26479 +# CONFIG_USB_MON is not set
26480
26481 #
26482 # USB port drivers
26483 #
26484 +
26485 +#
26486 +# USB Serial Converter support
26487 +#
26488 # CONFIG_USB_SERIAL is not set
26489
26490 #
26491 @@ -1121,7 +1021,7 @@
26492 # CONFIG_USB_EMI62 is not set
26493 # CONFIG_USB_EMI26 is not set
26494 # CONFIG_USB_ADUTUX is not set
26495 -# CONFIG_USB_SEVSEG is not set
26496 +# CONFIG_USB_AUERSWALD is not set
26497 # CONFIG_USB_RIO500 is not set
26498 CONFIG_USB_LEGOTOWER=m
26499 # CONFIG_USB_LCD is not set
26500 @@ -1137,59 +1037,37 @@
26501 # CONFIG_USB_TRANCEVIBRATOR is not set
26502 # CONFIG_USB_IOWARRIOR is not set
26503 # CONFIG_USB_TEST is not set
26504 -# CONFIG_USB_ISIGHTFW is not set
26505 -# CONFIG_USB_VST is not set
26506 -# CONFIG_USB_GADGET is not set
26507
26508 #
26509 -# OTG and related infrastructure
26510 +# USB DSL modem support
26511 #
26512 -# CONFIG_UWB is not set
26513 +
26514 +#
26515 +# USB Gadget Support
26516 +#
26517 +# CONFIG_USB_GADGET is not set
26518 # CONFIG_MMC is not set
26519 -# CONFIG_MEMSTICK is not set
26520 # CONFIG_NEW_LEDS is not set
26521 -# CONFIG_ACCESSIBILITY is not set
26522 # CONFIG_INFINIBAND is not set
26523 -CONFIG_RTC_LIB=y
26524 -CONFIG_RTC_CLASS=y
26525 -CONFIG_RTC_HCTOSYS=y
26526 -CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
26527 -# CONFIG_RTC_DEBUG is not set
26528 +# CONFIG_RTC_CLASS is not set
26529
26530 #
26531 -# RTC interfaces
26532 +# DMA Engine support
26533 #
26534 -CONFIG_RTC_INTF_SYSFS=y
26535 -CONFIG_RTC_INTF_PROC=y
26536 -CONFIG_RTC_INTF_DEV=y
26537 -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
26538 -# CONFIG_RTC_DRV_TEST is not set
26539 +# CONFIG_DMA_ENGINE is not set
26540
26541 #
26542 -# SPI RTC drivers
26543 +# DMA Clients
26544 #
26545
26546 #
26547 -# Platform RTC drivers
26548 +# DMA Devices
26549 #
26550 -# CONFIG_RTC_DRV_DS1286 is not set
26551 -# CONFIG_RTC_DRV_DS1511 is not set
26552 -# CONFIG_RTC_DRV_DS1553 is not set
26553 -# CONFIG_RTC_DRV_DS1742 is not set
26554 -# CONFIG_RTC_DRV_STK17TA8 is not set
26555 -# CONFIG_RTC_DRV_M48T86 is not set
26556 -# CONFIG_RTC_DRV_M48T35 is not set
26557 -# CONFIG_RTC_DRV_M48T59 is not set
26558 -# CONFIG_RTC_DRV_BQ4802 is not set
26559 -# CONFIG_RTC_DRV_V3020 is not set
26560
26561 #
26562 -# on-CPU RTC drivers
26563 +# Userspace I/O
26564 #
26565 -CONFIG_RTC_DRV_PARISC=y
26566 -# CONFIG_DMADEVICES is not set
26567 # CONFIG_UIO is not set
26568 -# CONFIG_STAGING is not set
26569
26570 #
26571 # File systems
26572 @@ -1199,24 +1077,25 @@
26573 # CONFIG_EXT2_FS_XIP is not set
26574 CONFIG_EXT3_FS=y
26575 # CONFIG_EXT3_FS_XATTR is not set
26576 -# CONFIG_EXT4_FS is not set
26577 +# CONFIG_EXT4DEV_FS is not set
26578 CONFIG_JBD=y
26579 # CONFIG_JBD_DEBUG is not set
26580 # CONFIG_REISERFS_FS is not set
26581 # CONFIG_JFS_FS is not set
26582 # CONFIG_FS_POSIX_ACL is not set
26583 -CONFIG_FILE_LOCKING=y
26584 CONFIG_XFS_FS=m
26585 # CONFIG_XFS_QUOTA is not set
26586 +# CONFIG_XFS_SECURITY is not set
26587 # CONFIG_XFS_POSIX_ACL is not set
26588 # CONFIG_XFS_RT is not set
26589 -# CONFIG_XFS_DEBUG is not set
26590 +# CONFIG_GFS2_FS is not set
26591 # CONFIG_OCFS2_FS is not set
26592 -# CONFIG_BTRFS_FS is not set
26593 -CONFIG_DNOTIFY=y
26594 +# CONFIG_MINIX_FS is not set
26595 +# CONFIG_ROMFS_FS is not set
26596 CONFIG_INOTIFY=y
26597 CONFIG_INOTIFY_USER=y
26598 # CONFIG_QUOTA is not set
26599 +CONFIG_DNOTIFY=y
26600 # CONFIG_AUTOFS_FS is not set
26601 CONFIG_AUTOFS4_FS=y
26602 # CONFIG_FUSE_FS is not set
26603 @@ -1245,13 +1124,16 @@
26604 CONFIG_PROC_FS=y
26605 CONFIG_PROC_KCORE=y
26606 CONFIG_PROC_SYSCTL=y
26607 -CONFIG_PROC_PAGE_MONITOR=y
26608 CONFIG_SYSFS=y
26609 CONFIG_TMPFS=y
26610 # CONFIG_TMPFS_POSIX_ACL is not set
26611 # CONFIG_HUGETLB_PAGE is not set
26612 +CONFIG_RAMFS=y
26613 # CONFIG_CONFIGFS_FS is not set
26614 -CONFIG_MISC_FILESYSTEMS=y
26615 +
26616 +#
26617 +# Miscellaneous filesystems
26618 +#
26619 # CONFIG_ADFS_FS is not set
26620 # CONFIG_AFFS_FS is not set
26621 # CONFIG_HFS_FS is not set
26622 @@ -1260,31 +1142,32 @@
26623 # CONFIG_BFS_FS is not set
26624 # CONFIG_EFS_FS is not set
26625 # CONFIG_CRAMFS is not set
26626 -# CONFIG_SQUASHFS is not set
26627 # CONFIG_VXFS_FS is not set
26628 -# CONFIG_MINIX_FS is not set
26629 -# CONFIG_OMFS_FS is not set
26630 # CONFIG_HPFS_FS is not set
26631 # CONFIG_QNX4FS_FS is not set
26632 -# CONFIG_ROMFS_FS is not set
26633 # CONFIG_SYSV_FS is not set
26634 # CONFIG_UFS_FS is not set
26635 -CONFIG_NETWORK_FILESYSTEMS=y
26636 +
26637 +#
26638 +# Network File Systems
26639 +#
26640 CONFIG_NFS_FS=y
26641 CONFIG_NFS_V3=y
26642 # CONFIG_NFS_V3_ACL is not set
26643 # CONFIG_NFS_V4 is not set
26644 -CONFIG_ROOT_NFS=y
26645 +# CONFIG_NFS_DIRECTIO is not set
26646 CONFIG_NFSD=y
26647 CONFIG_NFSD_V3=y
26648 # CONFIG_NFSD_V3_ACL is not set
26649 # CONFIG_NFSD_V4 is not set
26650 +# CONFIG_NFSD_TCP is not set
26651 +CONFIG_ROOT_NFS=y
26652 CONFIG_LOCKD=y
26653 CONFIG_LOCKD_V4=y
26654 CONFIG_EXPORTFS=y
26655 CONFIG_NFS_COMMON=y
26656 CONFIG_SUNRPC=y
26657 -# CONFIG_SUNRPC_REGISTER_V4 is not set
26658 +# CONFIG_SUNRPC_BIND34 is not set
26659 # CONFIG_RPCSEC_GSS_KRB5 is not set
26660 # CONFIG_RPCSEC_GSS_SPKM3 is not set
26661 # CONFIG_SMB_FS is not set
26662 @@ -1298,6 +1181,10 @@
26663 #
26664 # CONFIG_PARTITION_ADVANCED is not set
26665 CONFIG_MSDOS_PARTITION=y
26666 +
26667 +#
26668 +# Native Language Support
26669 +#
26670 CONFIG_NLS=y
26671 CONFIG_NLS_DEFAULT="iso8859-1"
26672 CONFIG_NLS_CODEPAGE_437=m
26673 @@ -1338,28 +1225,33 @@
26674 # CONFIG_NLS_KOI8_R is not set
26675 # CONFIG_NLS_KOI8_U is not set
26676 CONFIG_NLS_UTF8=m
26677 +
26678 +#
26679 +# Distributed Lock Manager
26680 +#
26681 # CONFIG_DLM is not set
26682
26683 #
26684 +# Profiling support
26685 +#
26686 +CONFIG_PROFILING=y
26687 +CONFIG_OPROFILE=m
26688 +
26689 +#
26690 # Kernel hacking
26691 #
26692 # CONFIG_PRINTK_TIME is not set
26693 -CONFIG_ENABLE_WARN_DEPRECATED=y
26694 CONFIG_ENABLE_MUST_CHECK=y
26695 -CONFIG_FRAME_WARN=1024
26696 CONFIG_MAGIC_SYSRQ=y
26697 # CONFIG_UNUSED_SYMBOLS is not set
26698 -CONFIG_DEBUG_FS=y
26699 +# CONFIG_DEBUG_FS is not set
26700 CONFIG_HEADERS_CHECK=y
26701 CONFIG_DEBUG_KERNEL=y
26702 # CONFIG_DEBUG_SHIRQ is not set
26703 CONFIG_DETECT_SOFTLOCKUP=y
26704 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
26705 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
26706 CONFIG_SCHED_DEBUG=y
26707 # CONFIG_SCHEDSTATS is not set
26708 # CONFIG_TIMER_STATS is not set
26709 -# CONFIG_DEBUG_OBJECTS is not set
26710 # CONFIG_DEBUG_SLAB is not set
26711 # CONFIG_DEBUG_RT_MUTEXES is not set
26712 # CONFIG_RT_MUTEX_TESTER is not set
26713 @@ -1371,33 +1263,10 @@
26714 # CONFIG_DEBUG_BUGVERBOSE is not set
26715 # CONFIG_DEBUG_INFO is not set
26716 # CONFIG_DEBUG_VM is not set
26717 -# CONFIG_DEBUG_WRITECOUNT is not set
26718 -# CONFIG_DEBUG_MEMORY_INIT is not set
26719 # CONFIG_DEBUG_LIST is not set
26720 -# CONFIG_DEBUG_SG is not set
26721 -# CONFIG_DEBUG_NOTIFIERS is not set
26722 -# CONFIG_BOOT_PRINTK_DELAY is not set
26723 +CONFIG_FORCED_INLINING=y
26724 # CONFIG_RCU_TORTURE_TEST is not set
26725 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
26726 -# CONFIG_BACKTRACE_SELF_TEST is not set
26727 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
26728 # CONFIG_FAULT_INJECTION is not set
26729 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
26730 -CONFIG_NOP_TRACER=y
26731 -CONFIG_RING_BUFFER=y
26732 -CONFIG_TRACING=y
26733 -
26734 -#
26735 -# Tracers
26736 -#
26737 -# CONFIG_SCHED_TRACER is not set
26738 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
26739 -# CONFIG_BOOT_TRACER is not set
26740 -# CONFIG_TRACE_BRANCH_PROFILING is not set
26741 -# CONFIG_FTRACE_STARTUP_TEST is not set
26742 -# CONFIG_BUILD_DOCSRC is not set
26743 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
26744 -# CONFIG_SAMPLES is not set
26745 CONFIG_DEBUG_RODATA=y
26746
26747 #
26748 @@ -1405,110 +1274,54 @@
26749 #
26750 # CONFIG_KEYS is not set
26751 # CONFIG_SECURITY is not set
26752 -# CONFIG_SECURITYFS is not set
26753 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
26754 CONFIG_CRYPTO=y
26755 -
26756 -#
26757 -# Crypto core or helper
26758 -#
26759 -# CONFIG_CRYPTO_FIPS is not set
26760 CONFIG_CRYPTO_ALGAPI=m
26761 -CONFIG_CRYPTO_ALGAPI2=m
26762 -CONFIG_CRYPTO_AEAD2=m
26763 CONFIG_CRYPTO_BLKCIPHER=m
26764 -CONFIG_CRYPTO_BLKCIPHER2=m
26765 -CONFIG_CRYPTO_HASH=m
26766 -CONFIG_CRYPTO_HASH2=m
26767 -CONFIG_CRYPTO_RNG2=m
26768 CONFIG_CRYPTO_MANAGER=m
26769 -CONFIG_CRYPTO_MANAGER2=m
26770 -# CONFIG_CRYPTO_GF128MUL is not set
26771 -CONFIG_CRYPTO_NULL=m
26772 -# CONFIG_CRYPTO_CRYPTD is not set
26773 -# CONFIG_CRYPTO_AUTHENC is not set
26774 -CONFIG_CRYPTO_TEST=m
26775 -
26776 -#
26777 -# Authenticated Encryption with Associated Data
26778 -#
26779 -# CONFIG_CRYPTO_CCM is not set
26780 -# CONFIG_CRYPTO_GCM is not set
26781 -# CONFIG_CRYPTO_SEQIV is not set
26782 -
26783 -#
26784 -# Block modes
26785 -#
26786 -CONFIG_CRYPTO_CBC=m
26787 -# CONFIG_CRYPTO_CTR is not set
26788 -# CONFIG_CRYPTO_CTS is not set
26789 -# CONFIG_CRYPTO_ECB is not set
26790 -# CONFIG_CRYPTO_LRW is not set
26791 -# CONFIG_CRYPTO_PCBC is not set
26792 -# CONFIG_CRYPTO_XTS is not set
26793 -
26794 -#
26795 -# Hash modes
26796 -#
26797 # CONFIG_CRYPTO_HMAC is not set
26798 # CONFIG_CRYPTO_XCBC is not set
26799 -
26800 -#
26801 -# Digest
26802 -#
26803 -CONFIG_CRYPTO_CRC32C=m
26804 +CONFIG_CRYPTO_NULL=m
26805 # CONFIG_CRYPTO_MD4 is not set
26806 CONFIG_CRYPTO_MD5=m
26807 -# CONFIG_CRYPTO_MICHAEL_MIC is not set
26808 -# CONFIG_CRYPTO_RMD128 is not set
26809 -# CONFIG_CRYPTO_RMD160 is not set
26810 -# CONFIG_CRYPTO_RMD256 is not set
26811 -# CONFIG_CRYPTO_RMD320 is not set
26812 # CONFIG_CRYPTO_SHA1 is not set
26813 # CONFIG_CRYPTO_SHA256 is not set
26814 # CONFIG_CRYPTO_SHA512 is not set
26815 -# CONFIG_CRYPTO_TGR192 is not set
26816 # CONFIG_CRYPTO_WP512 is not set
26817 -
26818 -#
26819 -# Ciphers
26820 -#
26821 -# CONFIG_CRYPTO_AES is not set
26822 -# CONFIG_CRYPTO_ANUBIS is not set
26823 -# CONFIG_CRYPTO_ARC4 is not set
26824 +# CONFIG_CRYPTO_TGR192 is not set
26825 +# CONFIG_CRYPTO_GF128MUL is not set
26826 +# CONFIG_CRYPTO_ECB is not set
26827 +CONFIG_CRYPTO_CBC=m
26828 +# CONFIG_CRYPTO_PCBC is not set
26829 +# CONFIG_CRYPTO_LRW is not set
26830 +# CONFIG_CRYPTO_XTS is not set
26831 +# CONFIG_CRYPTO_CRYPTD is not set
26832 +CONFIG_CRYPTO_DES=m
26833 +# CONFIG_CRYPTO_FCRYPT is not set
26834 CONFIG_CRYPTO_BLOWFISH=m
26835 -# CONFIG_CRYPTO_CAMELLIA is not set
26836 +# CONFIG_CRYPTO_TWOFISH is not set
26837 +# CONFIG_CRYPTO_SERPENT is not set
26838 +# CONFIG_CRYPTO_AES is not set
26839 # CONFIG_CRYPTO_CAST5 is not set
26840 # CONFIG_CRYPTO_CAST6 is not set
26841 -CONFIG_CRYPTO_DES=m
26842 -# CONFIG_CRYPTO_FCRYPT is not set
26843 +# CONFIG_CRYPTO_TEA is not set
26844 +# CONFIG_CRYPTO_ARC4 is not set
26845 # CONFIG_CRYPTO_KHAZAD is not set
26846 -# CONFIG_CRYPTO_SALSA20 is not set
26847 +# CONFIG_CRYPTO_ANUBIS is not set
26848 # CONFIG_CRYPTO_SEED is not set
26849 -# CONFIG_CRYPTO_SERPENT is not set
26850 -# CONFIG_CRYPTO_TEA is not set
26851 -# CONFIG_CRYPTO_TWOFISH is not set
26852 -
26853 -#
26854 -# Compression
26855 -#
26856 CONFIG_CRYPTO_DEFLATE=m
26857 -# CONFIG_CRYPTO_LZO is not set
26858 -
26859 -#
26860 -# Random Number Generation
26861 -#
26862 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
26863 +# CONFIG_CRYPTO_MICHAEL_MIC is not set
26864 +CONFIG_CRYPTO_CRC32C=m
26865 +# CONFIG_CRYPTO_CAMELLIA is not set
26866 +CONFIG_CRYPTO_TEST=m
26867 +# CONFIG_CRYPTO_AUTHENC is not set
26868 # CONFIG_CRYPTO_HW is not set
26869
26870 #
26871 # Library routines
26872 #
26873 CONFIG_BITREVERSE=y
26874 -CONFIG_GENERIC_FIND_LAST_BIT=y
26875 CONFIG_CRC_CCITT=m
26876 # CONFIG_CRC16 is not set
26877 -# CONFIG_CRC_T10DIF is not set
26878 # CONFIG_CRC_ITU_T is not set
26879 CONFIG_CRC32=y
26880 # CONFIG_CRC7 is not set
26881 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/configs/default_defconfig linux-2.6.29-rc3.owrt/arch/parisc/configs/default_defconfig
26882 --- linux-2.6.29.owrt/arch/parisc/configs/default_defconfig 2009-05-10 22:04:39.000000000 +0200
26883 +++ linux-2.6.29-rc3.owrt/arch/parisc/configs/default_defconfig 2009-05-10 23:48:28.000000000 +0200
26884 @@ -1,7 +1,7 @@
26885 #
26886 # Automatically generated make config: don't edit
26887 -# Linux kernel version: 2.6.29-rc8
26888 -# Fri Mar 13 01:32:59 2009
26889 +# Linux kernel version: 2.6.23
26890 +# Fri Oct 12 20:54:57 2007
26891 #
26892 CONFIG_PARISC=y
26893 CONFIG_MMU=y
26894 @@ -33,35 +33,17 @@
26895 CONFIG_POSIX_MQUEUE=y
26896 # CONFIG_BSD_PROCESS_ACCT is not set
26897 # CONFIG_TASKSTATS is not set
26898 +# CONFIG_USER_NS is not set
26899 # CONFIG_AUDIT is not set
26900 -
26901 -#
26902 -# RCU Subsystem
26903 -#
26904 -CONFIG_CLASSIC_RCU=y
26905 -# CONFIG_TREE_RCU is not set
26906 -# CONFIG_PREEMPT_RCU is not set
26907 -# CONFIG_TREE_RCU_TRACE is not set
26908 -# CONFIG_PREEMPT_RCU_TRACE is not set
26909 CONFIG_IKCONFIG=y
26910 CONFIG_IKCONFIG_PROC=y
26911 CONFIG_LOG_BUF_SHIFT=16
26912 -# CONFIG_GROUP_SCHED is not set
26913 -# CONFIG_CGROUPS is not set
26914 CONFIG_SYSFS_DEPRECATED=y
26915 -CONFIG_SYSFS_DEPRECATED_V2=y
26916 # CONFIG_RELAY is not set
26917 -CONFIG_NAMESPACES=y
26918 -# CONFIG_UTS_NS is not set
26919 -# CONFIG_IPC_NS is not set
26920 -# CONFIG_USER_NS is not set
26921 -# CONFIG_PID_NS is not set
26922 -# CONFIG_NET_NS is not set
26923 CONFIG_BLK_DEV_INITRD=y
26924 CONFIG_INITRAMFS_SOURCE=""
26925 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
26926 CONFIG_SYSCTL=y
26927 -CONFIG_ANON_INODES=y
26928 # CONFIG_EMBEDDED is not set
26929 CONFIG_SYSCTL_SYSCALL=y
26930 CONFIG_KALLSYMS=y
26931 @@ -73,39 +55,29 @@
26932 CONFIG_ELF_CORE=y
26933 CONFIG_BASE_FULL=y
26934 CONFIG_FUTEX=y
26935 +CONFIG_ANON_INODES=y
26936 CONFIG_EPOLL=y
26937 CONFIG_SIGNALFD=y
26938 -CONFIG_TIMERFD=y
26939 CONFIG_EVENTFD=y
26940 CONFIG_SHMEM=y
26941 -CONFIG_AIO=y
26942 CONFIG_VM_EVENT_COUNTERS=y
26943 -CONFIG_PCI_QUIRKS=y
26944 -CONFIG_COMPAT_BRK=y
26945 CONFIG_SLAB=y
26946 # CONFIG_SLUB is not set
26947 # CONFIG_SLOB is not set
26948 -CONFIG_PROFILING=y
26949 -CONFIG_TRACEPOINTS=y
26950 -# CONFIG_MARKERS is not set
26951 -CONFIG_OPROFILE=m
26952 -CONFIG_HAVE_OPROFILE=y
26953 -# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
26954 -CONFIG_SLABINFO=y
26955 CONFIG_RT_MUTEXES=y
26956 +# CONFIG_TINY_SHMEM is not set
26957 CONFIG_BASE_SMALL=0
26958 CONFIG_MODULES=y
26959 -# CONFIG_MODULE_FORCE_LOAD is not set
26960 CONFIG_MODULE_UNLOAD=y
26961 CONFIG_MODULE_FORCE_UNLOAD=y
26962 # CONFIG_MODVERSIONS is not set
26963 # CONFIG_MODULE_SRCVERSION_ALL is not set
26964 -CONFIG_INIT_ALL_POSSIBLE=y
26965 +CONFIG_KMOD=y
26966 CONFIG_BLOCK=y
26967 # CONFIG_LBD is not set
26968 # CONFIG_BLK_DEV_IO_TRACE is not set
26969 +# CONFIG_LSF is not set
26970 # CONFIG_BLK_DEV_BSG is not set
26971 -# CONFIG_BLK_DEV_INTEGRITY is not set
26972
26973 #
26974 # IO Schedulers
26975 @@ -119,7 +91,6 @@
26976 # CONFIG_DEFAULT_CFQ is not set
26977 # CONFIG_DEFAULT_NOOP is not set
26978 CONFIG_DEFAULT_IOSCHED="anticipatory"
26979 -# CONFIG_FREEZER is not set
26980
26981 #
26982 # Processor type and features
26983 @@ -143,19 +114,17 @@
26984 # CONFIG_HZ_300 is not set
26985 # CONFIG_HZ_1000 is not set
26986 CONFIG_HZ=250
26987 -# CONFIG_SCHED_HRTICK is not set
26988 CONFIG_SELECT_MEMORY_MODEL=y
26989 CONFIG_FLATMEM_MANUAL=y
26990 # CONFIG_DISCONTIGMEM_MANUAL is not set
26991 # CONFIG_SPARSEMEM_MANUAL is not set
26992 CONFIG_FLATMEM=y
26993 CONFIG_FLAT_NODE_MEM_MAP=y
26994 -CONFIG_PAGEFLAGS_EXTENDED=y
26995 +# CONFIG_SPARSEMEM_STATIC is not set
26996 CONFIG_SPLIT_PTLOCK_CPUS=4096
26997 -# CONFIG_PHYS_ADDR_T_64BIT is not set
26998 +# CONFIG_RESOURCES_64BIT is not set
26999 CONFIG_ZONE_DMA_FLAG=0
27000 CONFIG_VIRT_TO_BUS=y
27001 -CONFIG_UNEVICTABLE_LRU=y
27002 # CONFIG_HPUX is not set
27003
27004 #
27005 @@ -171,14 +140,15 @@
27006 # CONFIG_ISA is not set
27007 CONFIG_PCI=y
27008 # CONFIG_ARCH_SUPPORTS_MSI is not set
27009 -CONFIG_PCI_LEGACY=y
27010 # CONFIG_PCI_DEBUG is not set
27011 -# CONFIG_PCI_STUB is not set
27012 CONFIG_GSC_DINO=y
27013 CONFIG_PCI_LBA=y
27014 CONFIG_IOSAPIC=y
27015 CONFIG_IOMMU_SBA=y
27016 -CONFIG_IOMMU_HELPER=y
27017 +
27018 +#
27019 +# PCCARD (PCMCIA/CardBus) support
27020 +#
27021 CONFIG_PCCARD=y
27022 # CONFIG_PCMCIA_DEBUG is not set
27023 CONFIG_PCMCIA=y
27024 @@ -213,15 +183,16 @@
27025 # Executable file formats
27026 #
27027 CONFIG_BINFMT_ELF=y
27028 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
27029 -# CONFIG_HAVE_AOUT is not set
27030 CONFIG_BINFMT_MISC=m
27031 +
27032 +#
27033 +# Networking
27034 +#
27035 CONFIG_NET=y
27036
27037 #
27038 # Networking options
27039 #
27040 -CONFIG_COMPAT_NET_DEV_OPS=y
27041 CONFIG_PACKET=y
27042 CONFIG_PACKET_MMAP=y
27043 CONFIG_UNIX=y
27044 @@ -229,8 +200,6 @@
27045 CONFIG_XFRM_USER=m
27046 # CONFIG_XFRM_SUB_POLICY is not set
27047 # CONFIG_XFRM_MIGRATE is not set
27048 -# CONFIG_XFRM_STATISTICS is not set
27049 -CONFIG_XFRM_IPCOMP=y
27050 CONFIG_NET_KEY=m
27051 # CONFIG_NET_KEY_MIGRATE is not set
27052 CONFIG_INET=y
27053 @@ -276,10 +245,8 @@
27054 CONFIG_INET6_XFRM_MODE_BEET=y
27055 # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
27056 CONFIG_IPV6_SIT=y
27057 -CONFIG_IPV6_NDISC_NODETYPE=y
27058 # CONFIG_IPV6_TUNNEL is not set
27059 # CONFIG_IPV6_MULTIPLE_TABLES is not set
27060 -# CONFIG_IPV6_MROUTE is not set
27061 # CONFIG_NETWORK_SECMARK is not set
27062 # CONFIG_NETFILTER is not set
27063 # CONFIG_IP_DCCP is not set
27064 @@ -287,7 +254,6 @@
27065 # CONFIG_TIPC is not set
27066 # CONFIG_ATM is not set
27067 # CONFIG_BRIDGE is not set
27068 -# CONFIG_NET_DSA is not set
27069 # CONFIG_VLAN_8021Q is not set
27070 # CONFIG_DECNET is not set
27071 CONFIG_LLC=m
27072 @@ -298,26 +264,28 @@
27073 # CONFIG_LAPB is not set
27074 # CONFIG_ECONET is not set
27075 # CONFIG_WAN_ROUTER is not set
27076 +
27077 +#
27078 +# QoS and/or fair queueing
27079 +#
27080 # CONFIG_NET_SCHED is not set
27081 -# CONFIG_DCB is not set
27082
27083 #
27084 # Network testing
27085 #
27086 # CONFIG_NET_PKTGEN is not set
27087 # CONFIG_HAMRADIO is not set
27088 -# CONFIG_CAN is not set
27089 # CONFIG_IRDA is not set
27090 # CONFIG_BT is not set
27091 # CONFIG_AF_RXRPC is not set
27092 -# CONFIG_PHONET is not set
27093 -CONFIG_WIRELESS=y
27094 +
27095 +#
27096 +# Wireless
27097 +#
27098 # CONFIG_CFG80211 is not set
27099 -CONFIG_WIRELESS_OLD_REGULATORY=y
27100 # CONFIG_WIRELESS_EXT is not set
27101 -# CONFIG_LIB80211 is not set
27102 # CONFIG_MAC80211 is not set
27103 -# CONFIG_WIMAX is not set
27104 +# CONFIG_IEEE80211 is not set
27105 # CONFIG_RFKILL is not set
27106 # CONFIG_NET_9P is not set
27107
27108 @@ -332,8 +300,6 @@
27109 # CONFIG_STANDALONE is not set
27110 # CONFIG_PREVENT_FIRMWARE_BUILD is not set
27111 CONFIG_FW_LOADER=y
27112 -CONFIG_FIRMWARE_IN_KERNEL=y
27113 -CONFIG_EXTRA_FIRMWARE=""
27114 # CONFIG_DEBUG_DRIVER is not set
27115 # CONFIG_DEBUG_DEVRES is not set
27116 # CONFIG_SYS_HYPERVISOR is not set
27117 @@ -364,68 +330,63 @@
27118 CONFIG_BLK_DEV_RAM=y
27119 CONFIG_BLK_DEV_RAM_COUNT=16
27120 CONFIG_BLK_DEV_RAM_SIZE=6144
27121 -# CONFIG_BLK_DEV_XIP is not set
27122 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
27123 # CONFIG_CDROM_PKTCDVD is not set
27124 # CONFIG_ATA_OVER_ETH is not set
27125 -# CONFIG_BLK_DEV_HD is not set
27126 CONFIG_MISC_DEVICES=y
27127 # CONFIG_PHANTOM is not set
27128 +# CONFIG_EEPROM_93CX6 is not set
27129 # CONFIG_SGI_IOC4 is not set
27130 # CONFIG_TIFM_CORE is not set
27131 -# CONFIG_ENCLOSURE_SERVICES is not set
27132 -# CONFIG_HP_ILO is not set
27133 -# CONFIG_C2PORT is not set
27134 -
27135 -#
27136 -# EEPROM support
27137 -#
27138 -# CONFIG_EEPROM_93CX6 is not set
27139 -CONFIG_HAVE_IDE=y
27140 CONFIG_IDE=y
27141 +CONFIG_BLK_DEV_IDE=y
27142
27143 #
27144 -# Please see Documentation/ide/ide.txt for help/info on IDE drives
27145 +# Please see Documentation/ide.txt for help/info on IDE drives
27146 #
27147 -CONFIG_IDE_ATAPI=y
27148 # CONFIG_BLK_DEV_IDE_SATA is not set
27149 -CONFIG_IDE_GD=y
27150 -CONFIG_IDE_GD_ATA=y
27151 -# CONFIG_IDE_GD_ATAPI is not set
27152 +CONFIG_BLK_DEV_IDEDISK=y
27153 +CONFIG_IDEDISK_MULTI_MODE=y
27154 CONFIG_BLK_DEV_IDECS=y
27155 # CONFIG_BLK_DEV_DELKIN is not set
27156 CONFIG_BLK_DEV_IDECD=y
27157 -CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
27158 # CONFIG_BLK_DEV_IDETAPE is not set
27159 +# CONFIG_BLK_DEV_IDEFLOPPY is not set
27160 +CONFIG_BLK_DEV_IDESCSI=y
27161 # CONFIG_IDE_TASK_IOCTL is not set
27162 CONFIG_IDE_PROC_FS=y
27163
27164 #
27165 # IDE chipset support/bugfixes
27166 #
27167 +CONFIG_IDE_GENERIC=y
27168 # CONFIG_BLK_DEV_PLATFORM is not set
27169 -CONFIG_BLK_DEV_IDEDMA_SFF=y
27170
27171 #
27172 # PCI IDE chipsets support
27173 #
27174 CONFIG_BLK_DEV_IDEPCI=y
27175 +CONFIG_IDEPCI_SHARE_IRQ=y
27176 CONFIG_IDEPCI_PCIBUS_ORDER=y
27177 # CONFIG_BLK_DEV_OFFBOARD is not set
27178 CONFIG_BLK_DEV_GENERIC=y
27179 # CONFIG_BLK_DEV_OPTI621 is not set
27180 CONFIG_BLK_DEV_IDEDMA_PCI=y
27181 +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
27182 +CONFIG_IDEDMA_ONLYDISK=y
27183 # CONFIG_BLK_DEV_AEC62XX is not set
27184 # CONFIG_BLK_DEV_ALI15X3 is not set
27185 # CONFIG_BLK_DEV_AMD74XX is not set
27186 # CONFIG_BLK_DEV_CMD64X is not set
27187 # CONFIG_BLK_DEV_TRIFLEX is not set
27188 +# CONFIG_BLK_DEV_CY82C693 is not set
27189 # CONFIG_BLK_DEV_CS5520 is not set
27190 # CONFIG_BLK_DEV_CS5530 is not set
27191 +# CONFIG_BLK_DEV_HPT34X is not set
27192 # CONFIG_BLK_DEV_HPT366 is not set
27193 # CONFIG_BLK_DEV_JMICRON is not set
27194 # CONFIG_BLK_DEV_SC1200 is not set
27195 # CONFIG_BLK_DEV_PIIX is not set
27196 -# CONFIG_BLK_DEV_IT8172 is not set
27197 # CONFIG_BLK_DEV_IT8213 is not set
27198 # CONFIG_BLK_DEV_IT821X is not set
27199 CONFIG_BLK_DEV_NS87415=y
27200 @@ -437,7 +398,10 @@
27201 # CONFIG_BLK_DEV_TRM290 is not set
27202 # CONFIG_BLK_DEV_VIA82CXXX is not set
27203 # CONFIG_BLK_DEV_TC86C001 is not set
27204 +# CONFIG_IDE_ARM is not set
27205 CONFIG_BLK_DEV_IDEDMA=y
27206 +# CONFIG_IDEDMA_IVB is not set
27207 +# CONFIG_BLK_DEV_HD is not set
27208
27209 #
27210 # SCSI device support
27211 @@ -476,10 +440,8 @@
27212 # CONFIG_SCSI_FC_ATTRS is not set
27213 # CONFIG_SCSI_ISCSI_ATTRS is not set
27214 # CONFIG_SCSI_SAS_LIBSAS is not set
27215 -# CONFIG_SCSI_SRP_ATTRS is not set
27216 CONFIG_SCSI_LOWLEVEL=y
27217 # CONFIG_ISCSI_TCP is not set
27218 -# CONFIG_SCSI_CXGB3_ISCSI is not set
27219 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
27220 # CONFIG_SCSI_3W_9XXX is not set
27221 # CONFIG_SCSI_ACARD is not set
27222 @@ -490,14 +452,11 @@
27223 # CONFIG_SCSI_AIC79XX is not set
27224 # CONFIG_SCSI_AIC94XX is not set
27225 # CONFIG_SCSI_DPT_I2O is not set
27226 -# CONFIG_SCSI_ADVANSYS is not set
27227 # CONFIG_SCSI_ARCMSR is not set
27228 # CONFIG_MEGARAID_NEWGEN is not set
27229 # CONFIG_MEGARAID_LEGACY is not set
27230 # CONFIG_MEGARAID_SAS is not set
27231 # CONFIG_SCSI_HPTIOP is not set
27232 -# CONFIG_LIBFC is not set
27233 -# CONFIG_FCOE is not set
27234 # CONFIG_SCSI_DMX3191D is not set
27235 # CONFIG_SCSI_FUTURE_DOMAIN is not set
27236 # CONFIG_SCSI_IPS is not set
27237 @@ -505,7 +464,6 @@
27238 # CONFIG_SCSI_INIA100 is not set
27239 # CONFIG_SCSI_PPA is not set
27240 # CONFIG_SCSI_IMM is not set
27241 -# CONFIG_SCSI_MVSAS is not set
27242 CONFIG_SCSI_LASI700=y
27243 CONFIG_53C700_LE_ON_BE=y
27244 # CONFIG_SCSI_STEX is not set
27245 @@ -529,11 +487,9 @@
27246 # CONFIG_SCSI_DEBUG is not set
27247 # CONFIG_SCSI_SRP is not set
27248 # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
27249 -# CONFIG_SCSI_DH is not set
27250 # CONFIG_ATA is not set
27251 CONFIG_MD=y
27252 CONFIG_BLK_DEV_MD=y
27253 -CONFIG_MD_AUTODETECT=y
27254 CONFIG_MD_LINEAR=y
27255 CONFIG_MD_RAID0=y
27256 CONFIG_MD_RAID1=y
27257 @@ -549,47 +505,32 @@
27258 # CONFIG_DM_ZERO is not set
27259 # CONFIG_DM_MULTIPATH is not set
27260 # CONFIG_DM_DELAY is not set
27261 -# CONFIG_DM_UEVENT is not set
27262 -# CONFIG_FUSION is not set
27263
27264 #
27265 -# IEEE 1394 (FireWire) support
27266 +# Fusion MPT device support
27267 #
27268 +# CONFIG_FUSION is not set
27269 +# CONFIG_FUSION_SPI is not set
27270 +# CONFIG_FUSION_FC is not set
27271 +# CONFIG_FUSION_SAS is not set
27272
27273 #
27274 -# Enable only one of the two stacks, unless you know what you are doing
27275 +# IEEE 1394 (FireWire) support
27276 #
27277 # CONFIG_FIREWIRE is not set
27278 # CONFIG_IEEE1394 is not set
27279 # CONFIG_I2O is not set
27280 CONFIG_NETDEVICES=y
27281 +# CONFIG_NETDEVICES_MULTIQUEUE is not set
27282 CONFIG_DUMMY=m
27283 CONFIG_BONDING=m
27284 # CONFIG_MACVLAN is not set
27285 # CONFIG_EQUALIZER is not set
27286 CONFIG_TUN=m
27287 # CONFIG_VETH is not set
27288 +# CONFIG_IP1000 is not set
27289 # CONFIG_ARCNET is not set
27290 -CONFIG_PHYLIB=y
27291 -
27292 -#
27293 -# MII PHY device drivers
27294 -#
27295 -# CONFIG_MARVELL_PHY is not set
27296 -# CONFIG_DAVICOM_PHY is not set
27297 -# CONFIG_QSEMI_PHY is not set
27298 -# CONFIG_LXT_PHY is not set
27299 -# CONFIG_CICADA_PHY is not set
27300 -# CONFIG_VITESSE_PHY is not set
27301 -# CONFIG_SMSC_PHY is not set
27302 -# CONFIG_BROADCOM_PHY is not set
27303 -# CONFIG_ICPLUS_PHY is not set
27304 -# CONFIG_REALTEK_PHY is not set
27305 -# CONFIG_NATIONAL_PHY is not set
27306 -# CONFIG_STE10XP is not set
27307 -# CONFIG_LSI_ET1011C_PHY is not set
27308 -# CONFIG_FIXED_PHY is not set
27309 -# CONFIG_MDIO_BITBANG is not set
27310 +# CONFIG_PHYLIB is not set
27311 CONFIG_NET_ETHERNET=y
27312 CONFIG_MII=m
27313 CONFIG_LASI_82596=y
27314 @@ -609,15 +550,13 @@
27315 # CONFIG_DM9102 is not set
27316 # CONFIG_ULI526X is not set
27317 # CONFIG_PCMCIA_XIRCOM is not set
27318 +# CONFIG_PCMCIA_XIRTULIP is not set
27319 # CONFIG_DEPCA is not set
27320 # CONFIG_HP100 is not set
27321 # CONFIG_IBM_NEW_EMAC_ZMII is not set
27322 # CONFIG_IBM_NEW_EMAC_RGMII is not set
27323 # CONFIG_IBM_NEW_EMAC_TAH is not set
27324 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
27325 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
27326 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
27327 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
27328 CONFIG_NET_PCI=y
27329 # CONFIG_PCNET32 is not set
27330 # CONFIG_AMD8111_ETH is not set
27331 @@ -625,7 +564,7 @@
27332 # CONFIG_AC3200 is not set
27333 # CONFIG_B44 is not set
27334 # CONFIG_FORCEDETH is not set
27335 -# CONFIG_CS89x0 is not set
27336 +# CONFIG_EEPRO100 is not set
27337 # CONFIG_E100 is not set
27338 # CONFIG_LNE390 is not set
27339 # CONFIG_FEALNX is not set
27340 @@ -635,24 +574,19 @@
27341 # CONFIG_ES3210 is not set
27342 # CONFIG_8139CP is not set
27343 # CONFIG_8139TOO is not set
27344 -# CONFIG_R6040 is not set
27345 # CONFIG_SIS900 is not set
27346 # CONFIG_EPIC100 is not set
27347 -# CONFIG_SMSC9420 is not set
27348 # CONFIG_SUNDANCE is not set
27349 # CONFIG_TLAN is not set
27350 # CONFIG_VIA_RHINE is not set
27351 # CONFIG_SC92031 is not set
27352 # CONFIG_NET_POCKET is not set
27353 -# CONFIG_ATL2 is not set
27354 CONFIG_NETDEV_1000=y
27355 CONFIG_ACENIC=y
27356 # CONFIG_ACENIC_OMIT_TIGON_I is not set
27357 # CONFIG_DL2K is not set
27358 # CONFIG_E1000 is not set
27359 # CONFIG_E1000E is not set
27360 -# CONFIG_IP1000 is not set
27361 -# CONFIG_IGB is not set
27362 # CONFIG_NS83820 is not set
27363 # CONFIG_HAMACHI is not set
27364 # CONFIG_YELLOWFIN is not set
27365 @@ -660,31 +594,23 @@
27366 # CONFIG_SIS190 is not set
27367 # CONFIG_SKGE is not set
27368 # CONFIG_SKY2 is not set
27369 +# CONFIG_SK98LIN is not set
27370 # CONFIG_VIA_VELOCITY is not set
27371 CONFIG_TIGON3=y
27372 # CONFIG_BNX2 is not set
27373 # CONFIG_QLA3XXX is not set
27374 # CONFIG_ATL1 is not set
27375 -# CONFIG_ATL1E is not set
27376 -# CONFIG_ATL1C is not set
27377 -# CONFIG_JME is not set
27378 CONFIG_NETDEV_10000=y
27379 # CONFIG_CHELSIO_T1 is not set
27380 -CONFIG_CHELSIO_T3_DEPENDS=y
27381 # CONFIG_CHELSIO_T3 is not set
27382 -# CONFIG_ENIC is not set
27383 # CONFIG_IXGBE is not set
27384 # CONFIG_IXGB is not set
27385 # CONFIG_S2IO is not set
27386 # CONFIG_MYRI10GE is not set
27387 # CONFIG_NETXEN_NIC is not set
27388 # CONFIG_NIU is not set
27389 -# CONFIG_MLX4_EN is not set
27390 # CONFIG_MLX4_CORE is not set
27391 # CONFIG_TEHUTI is not set
27392 -# CONFIG_BNX2X is not set
27393 -# CONFIG_QLGE is not set
27394 -# CONFIG_SFC is not set
27395 # CONFIG_TR is not set
27396
27397 #
27398 @@ -692,11 +618,6 @@
27399 #
27400 # CONFIG_WLAN_PRE80211 is not set
27401 # CONFIG_WLAN_80211 is not set
27402 -# CONFIG_IWLWIFI_LEDS is not set
27403 -
27404 -#
27405 -# Enable WiMAX (Networking options) to see the WiMAX drivers
27406 -#
27407
27408 #
27409 # USB Network Adapters
27410 @@ -705,6 +626,7 @@
27411 # CONFIG_USB_KAWETH is not set
27412 # CONFIG_USB_PEGASUS is not set
27413 # CONFIG_USB_RTL8150 is not set
27414 +# CONFIG_USB_USBNET_MII is not set
27415 # CONFIG_USB_USBNET is not set
27416 CONFIG_NET_PCMCIA=y
27417 # CONFIG_PCMCIA_3C589 is not set
27418 @@ -732,6 +654,7 @@
27419 # CONFIG_SLIP is not set
27420 CONFIG_SLHC=m
27421 # CONFIG_NET_FC is not set
27422 +# CONFIG_SHAPER is not set
27423 # CONFIG_NETCONSOLE is not set
27424 # CONFIG_NETPOLL is not set
27425 # CONFIG_NET_POLL_CONTROLLER is not set
27426 @@ -753,6 +676,7 @@
27427 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
27428 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
27429 # CONFIG_INPUT_JOYDEV is not set
27430 +# CONFIG_INPUT_TSDEV is not set
27431 # CONFIG_INPUT_EVDEV is not set
27432 # CONFIG_INPUT_EVBUG is not set
27433
27434 @@ -775,12 +699,11 @@
27435 CONFIG_MOUSE_PS2_ALPS=y
27436 CONFIG_MOUSE_PS2_LOGIPS2PP=y
27437 CONFIG_MOUSE_PS2_SYNAPTICS=y
27438 +CONFIG_MOUSE_PS2_LIFEBOOK=y
27439 CONFIG_MOUSE_PS2_TRACKPOINT=y
27440 -# CONFIG_MOUSE_PS2_ELANTECH is not set
27441 # CONFIG_MOUSE_PS2_TOUCHKIT is not set
27442 CONFIG_MOUSE_SERIAL=y
27443 # CONFIG_MOUSE_APPLETOUCH is not set
27444 -# CONFIG_MOUSE_BCM5974 is not set
27445 # CONFIG_MOUSE_VSXXXAA is not set
27446 CONFIG_MOUSE_HIL=y
27447 # CONFIG_INPUT_JOYSTICK is not set
27448 @@ -806,13 +729,10 @@
27449 # Character devices
27450 #
27451 CONFIG_VT=y
27452 -CONFIG_CONSOLE_TRANSLATIONS=y
27453 CONFIG_VT_CONSOLE=y
27454 CONFIG_HW_CONSOLE=y
27455 # CONFIG_VT_HW_CONSOLE_BINDING is not set
27456 -CONFIG_DEVKMEM=y
27457 # CONFIG_SERIAL_NONSTANDARD is not set
27458 -# CONFIG_NOZOMI is not set
27459
27460 #
27461 # Serial drivers
27462 @@ -839,16 +759,21 @@
27463 CONFIG_SERIAL_CORE_CONSOLE=y
27464 # CONFIG_SERIAL_JSM is not set
27465 CONFIG_UNIX98_PTYS=y
27466 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
27467 CONFIG_LEGACY_PTYS=y
27468 CONFIG_LEGACY_PTY_COUNT=64
27469 CONFIG_PRINTER=m
27470 # CONFIG_LP_CONSOLE is not set
27471 CONFIG_PPDEV=m
27472 +# CONFIG_TIPAR is not set
27473 # CONFIG_IPMI_HANDLER is not set
27474 +# CONFIG_WATCHDOG is not set
27475 # CONFIG_HW_RANDOM is not set
27476 +CONFIG_GEN_RTC=y
27477 +CONFIG_GEN_RTC_X=y
27478 # CONFIG_R3964 is not set
27479 # CONFIG_APPLICOM is not set
27480 +# CONFIG_AGP is not set
27481 +# CONFIG_DRM is not set
27482
27483 #
27484 # PCMCIA character devices
27485 @@ -856,70 +781,60 @@
27486 # CONFIG_SYNCLINK_CS is not set
27487 # CONFIG_CARDMAN_4000 is not set
27488 # CONFIG_CARDMAN_4040 is not set
27489 -# CONFIG_IPWIRELESS is not set
27490 # CONFIG_RAW_DRIVER is not set
27491 # CONFIG_TCG_TPM is not set
27492 CONFIG_DEVPORT=y
27493 # CONFIG_I2C is not set
27494 +
27495 +#
27496 +# SPI support
27497 +#
27498 # CONFIG_SPI is not set
27499 +# CONFIG_SPI_MASTER is not set
27500 # CONFIG_W1 is not set
27501 # CONFIG_POWER_SUPPLY is not set
27502 # CONFIG_HWMON is not set
27503 -# CONFIG_THERMAL is not set
27504 -# CONFIG_THERMAL_HWMON is not set
27505 -# CONFIG_WATCHDOG is not set
27506 -CONFIG_SSB_POSSIBLE=y
27507
27508 #
27509 # Sonics Silicon Backplane
27510 #
27511 +CONFIG_SSB_POSSIBLE=y
27512 # CONFIG_SSB is not set
27513
27514 #
27515 # Multifunction device drivers
27516 #
27517 -# CONFIG_MFD_CORE is not set
27518 # CONFIG_MFD_SM501 is not set
27519 -# CONFIG_HTC_PASIC3 is not set
27520 -# CONFIG_MFD_TMIO is not set
27521 -# CONFIG_REGULATOR is not set
27522
27523 #
27524 # Multimedia devices
27525 #
27526 -
27527 -#
27528 -# Multimedia core support
27529 -#
27530 # CONFIG_VIDEO_DEV is not set
27531 # CONFIG_DVB_CORE is not set
27532 -# CONFIG_VIDEO_MEDIA is not set
27533 +# CONFIG_DAB is not set
27534
27535 #
27536 -# Multimedia drivers
27537 +# Graphics support
27538 #
27539 -# CONFIG_DAB is not set
27540 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
27541
27542 #
27543 -# Graphics support
27544 +# Display device support
27545 #
27546 -# CONFIG_AGP is not set
27547 -# CONFIG_DRM is not set
27548 +# CONFIG_DISPLAY_SUPPORT is not set
27549 # CONFIG_VGASTATE is not set
27550 CONFIG_VIDEO_OUTPUT_CONTROL=m
27551 CONFIG_FB=y
27552 # CONFIG_FIRMWARE_EDID is not set
27553 # CONFIG_FB_DDC is not set
27554 -# CONFIG_FB_BOOT_VESA_SUPPORT is not set
27555 CONFIG_FB_CFB_FILLRECT=y
27556 CONFIG_FB_CFB_COPYAREA=y
27557 CONFIG_FB_CFB_IMAGEBLIT=y
27558 -# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
27559 # CONFIG_FB_SYS_FILLRECT is not set
27560 # CONFIG_FB_SYS_COPYAREA is not set
27561 # CONFIG_FB_SYS_IMAGEBLIT is not set
27562 -# CONFIG_FB_FOREIGN_ENDIAN is not set
27563 # CONFIG_FB_SYS_FOPS is not set
27564 +CONFIG_FB_DEFERRED_IO=y
27565 # CONFIG_FB_SVGALIB is not set
27566 # CONFIG_FB_MACMODES is not set
27567 # CONFIG_FB_BACKLIGHT is not set
27568 @@ -945,7 +860,6 @@
27569 # CONFIG_FB_S3 is not set
27570 # CONFIG_FB_SAVAGE is not set
27571 # CONFIG_FB_SIS is not set
27572 -# CONFIG_FB_VIA is not set
27573 # CONFIG_FB_NEOMAGIC is not set
27574 # CONFIG_FB_KYRO is not set
27575 # CONFIG_FB_3DFX is not set
27576 @@ -954,16 +868,7 @@
27577 # CONFIG_FB_TRIDENT is not set
27578 # CONFIG_FB_ARK is not set
27579 # CONFIG_FB_PM3 is not set
27580 -# CONFIG_FB_CARMINE is not set
27581 # CONFIG_FB_VIRTUAL is not set
27582 -# CONFIG_FB_METRONOME is not set
27583 -# CONFIG_FB_MB862XX is not set
27584 -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
27585 -
27586 -#
27587 -# Display device support
27588 -#
27589 -# CONFIG_DISPLAY_SUPPORT is not set
27590
27591 #
27592 # Console display driver support
27593 @@ -991,8 +896,15 @@
27594 # CONFIG_LOGO_LINUX_VGA16 is not set
27595 # CONFIG_LOGO_LINUX_CLUT224 is not set
27596 CONFIG_LOGO_PARISC_CLUT224=y
27597 +
27598 +#
27599 +# Sound
27600 +#
27601 CONFIG_SOUND=y
27602 -CONFIG_SOUND_OSS_CORE=y
27603 +
27604 +#
27605 +# Advanced Linux Sound Architecture
27606 +#
27607 CONFIG_SND=y
27608 CONFIG_SND_TIMER=y
27609 CONFIG_SND_PCM=y
27610 @@ -1008,9 +920,11 @@
27611 CONFIG_SND_VERBOSE_PROCFS=y
27612 # CONFIG_SND_VERBOSE_PRINTK is not set
27613 # CONFIG_SND_DEBUG is not set
27614 -CONFIG_SND_VMASTER=y
27615 +
27616 +#
27617 +# Generic devices
27618 +#
27619 CONFIG_SND_AC97_CODEC=y
27620 -CONFIG_SND_DRIVERS=y
27621 # CONFIG_SND_DUMMY is not set
27622 # CONFIG_SND_VIRMIDI is not set
27623 # CONFIG_SND_MTPAV is not set
27624 @@ -1018,8 +932,10 @@
27625 # CONFIG_SND_SERIAL_U16550 is not set
27626 # CONFIG_SND_MPU401 is not set
27627 # CONFIG_SND_PORTMAN2X4 is not set
27628 -# CONFIG_SND_AC97_POWER_SAVE is not set
27629 -CONFIG_SND_PCI=y
27630 +
27631 +#
27632 +# PCI devices
27633 +#
27634 CONFIG_SND_AD1889=y
27635 # CONFIG_SND_ALS300 is not set
27636 # CONFIG_SND_ALI5451 is not set
27637 @@ -1028,12 +944,10 @@
27638 # CONFIG_SND_AU8810 is not set
27639 # CONFIG_SND_AU8820 is not set
27640 # CONFIG_SND_AU8830 is not set
27641 -# CONFIG_SND_AW2 is not set
27642 # CONFIG_SND_AZT3328 is not set
27643 # CONFIG_SND_BT87X is not set
27644 # CONFIG_SND_CA0106 is not set
27645 # CONFIG_SND_CMIPCI is not set
27646 -# CONFIG_SND_OXYGEN is not set
27647 # CONFIG_SND_CS4281 is not set
27648 # CONFIG_SND_CS46XX is not set
27649 # CONFIG_SND_DARLA20 is not set
27650 @@ -1058,7 +972,6 @@
27651 # CONFIG_SND_HDA_INTEL is not set
27652 # CONFIG_SND_HDSP is not set
27653 # CONFIG_SND_HDSPM is not set
27654 -# CONFIG_SND_HIFIER is not set
27655 # CONFIG_SND_ICE1712 is not set
27656 # CONFIG_SND_ICE1724 is not set
27657 # CONFIG_SND_INTEL8X0 is not set
27658 @@ -1076,67 +989,58 @@
27659 # CONFIG_SND_TRIDENT is not set
27660 # CONFIG_SND_VIA82XX is not set
27661 # CONFIG_SND_VIA82XX_MODEM is not set
27662 -# CONFIG_SND_VIRTUOSO is not set
27663 # CONFIG_SND_VX222 is not set
27664 # CONFIG_SND_YMFPCI is not set
27665 -CONFIG_SND_USB=y
27666 +# CONFIG_SND_AC97_POWER_SAVE is not set
27667 +
27668 +#
27669 +# USB devices
27670 +#
27671 # CONFIG_SND_USB_AUDIO is not set
27672 # CONFIG_SND_USB_CAIAQ is not set
27673 -CONFIG_SND_PCMCIA=y
27674 +
27675 +#
27676 +# PCMCIA devices
27677 +#
27678 # CONFIG_SND_VXPOCKET is not set
27679 # CONFIG_SND_PDAUDIOCF is not set
27680 -CONFIG_SND_GSC=y
27681 +
27682 +#
27683 +# GSC devices
27684 +#
27685 CONFIG_SND_HARMONY=y
27686 +
27687 +#
27688 +# System on Chip audio support
27689 +#
27690 # CONFIG_SND_SOC is not set
27691 +
27692 +#
27693 +# SoC Audio support for SuperH
27694 +#
27695 +
27696 +#
27697 +# Open Sound System
27698 +#
27699 # CONFIG_SOUND_PRIME is not set
27700 CONFIG_AC97_BUS=y
27701 CONFIG_HID_SUPPORT=y
27702 CONFIG_HID=y
27703 CONFIG_HID_DEBUG=y
27704 -# CONFIG_HIDRAW is not set
27705
27706 #
27707 # USB Input Devices
27708 #
27709 CONFIG_USB_HID=y
27710 -# CONFIG_HID_PID is not set
27711 +# CONFIG_USB_HIDINPUT_POWERBOOK is not set
27712 +# CONFIG_HID_FF is not set
27713 # CONFIG_USB_HIDDEV is not set
27714 -
27715 -#
27716 -# Special HID drivers
27717 -#
27718 -CONFIG_HID_COMPAT=y
27719 -CONFIG_HID_A4TECH=y
27720 -CONFIG_HID_APPLE=y
27721 -CONFIG_HID_BELKIN=y
27722 -CONFIG_HID_CHERRY=y
27723 -CONFIG_HID_CHICONY=y
27724 -CONFIG_HID_CYPRESS=y
27725 -CONFIG_HID_EZKEY=y
27726 -CONFIG_HID_GYRATION=y
27727 -CONFIG_HID_LOGITECH=y
27728 -# CONFIG_LOGITECH_FF is not set
27729 -# CONFIG_LOGIRUMBLEPAD2_FF is not set
27730 -CONFIG_HID_MICROSOFT=y
27731 -CONFIG_HID_MONTEREY=y
27732 -CONFIG_HID_NTRIG=y
27733 -CONFIG_HID_PANTHERLORD=y
27734 -# CONFIG_PANTHERLORD_FF is not set
27735 -CONFIG_HID_PETALYNX=y
27736 -CONFIG_HID_SAMSUNG=y
27737 -CONFIG_HID_SONY=y
27738 -CONFIG_HID_SUNPLUS=y
27739 -# CONFIG_GREENASIA_FF is not set
27740 -CONFIG_HID_TOPSEED=y
27741 -# CONFIG_THRUSTMASTER_FF is not set
27742 -# CONFIG_ZEROPLUS_FF is not set
27743 CONFIG_USB_SUPPORT=y
27744 CONFIG_USB_ARCH_HAS_HCD=y
27745 CONFIG_USB_ARCH_HAS_OHCI=y
27746 CONFIG_USB_ARCH_HAS_EHCI=y
27747 CONFIG_USB=y
27748 # CONFIG_USB_DEBUG is not set
27749 -# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
27750
27751 #
27752 # Miscellaneous USB options
27753 @@ -1145,18 +1049,12 @@
27754 CONFIG_USB_DEVICE_CLASS=y
27755 # CONFIG_USB_DYNAMIC_MINORS is not set
27756 # CONFIG_USB_OTG is not set
27757 -CONFIG_USB_MON=y
27758 -# CONFIG_USB_WUSB is not set
27759 -# CONFIG_USB_WUSB_CBAF is not set
27760
27761 #
27762 # USB Host Controller Drivers
27763 #
27764 -# CONFIG_USB_C67X00_HCD is not set
27765 # CONFIG_USB_EHCI_HCD is not set
27766 -# CONFIG_USB_OXU210HP_HCD is not set
27767 # CONFIG_USB_ISP116X_HCD is not set
27768 -# CONFIG_USB_ISP1760_HCD is not set
27769 CONFIG_USB_OHCI_HCD=y
27770 # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
27771 # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
27772 @@ -1164,23 +1062,19 @@
27773 CONFIG_USB_UHCI_HCD=y
27774 # CONFIG_USB_SL811_HCD is not set
27775 # CONFIG_USB_R8A66597_HCD is not set
27776 -# CONFIG_USB_WHCI_HCD is not set
27777 -# CONFIG_USB_HWA_HCD is not set
27778
27779 #
27780 # USB Device Class drivers
27781 #
27782 # CONFIG_USB_ACM is not set
27783 # CONFIG_USB_PRINTER is not set
27784 -# CONFIG_USB_WDM is not set
27785 -# CONFIG_USB_TMC is not set
27786
27787 #
27788 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
27789 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
27790 #
27791
27792 #
27793 -# see USB_STORAGE Help for more information
27794 +# may also be needed; see USB_STORAGE Help for more information
27795 #
27796 # CONFIG_USB_STORAGE is not set
27797 # CONFIG_USB_LIBUSUAL is not set
27798 @@ -1190,11 +1084,16 @@
27799 #
27800 # CONFIG_USB_MDC800 is not set
27801 # CONFIG_USB_MICROTEK is not set
27802 +CONFIG_USB_MON=y
27803
27804 #
27805 # USB port drivers
27806 #
27807 # CONFIG_USB_USS720 is not set
27808 +
27809 +#
27810 +# USB Serial Converter support
27811 +#
27812 # CONFIG_USB_SERIAL is not set
27813
27814 #
27815 @@ -1203,7 +1102,7 @@
27816 # CONFIG_USB_EMI62 is not set
27817 # CONFIG_USB_EMI26 is not set
27818 # CONFIG_USB_ADUTUX is not set
27819 -# CONFIG_USB_SEVSEG is not set
27820 +# CONFIG_USB_AUERSWALD is not set
27821 # CONFIG_USB_RIO500 is not set
27822 # CONFIG_USB_LEGOTOWER is not set
27823 # CONFIG_USB_LCD is not set
27824 @@ -1219,60 +1118,38 @@
27825 # CONFIG_USB_TRANCEVIBRATOR is not set
27826 # CONFIG_USB_IOWARRIOR is not set
27827 # CONFIG_USB_TEST is not set
27828 -# CONFIG_USB_ISIGHTFW is not set
27829 -# CONFIG_USB_VST is not set
27830 -# CONFIG_USB_GADGET is not set
27831
27832 #
27833 -# OTG and related infrastructure
27834 +# USB DSL modem support
27835 +#
27836 +
27837 +#
27838 +# USB Gadget Support
27839 #
27840 -# CONFIG_UWB is not set
27841 +# CONFIG_USB_GADGET is not set
27842 # CONFIG_MMC is not set
27843 -# CONFIG_MEMSTICK is not set
27844 # CONFIG_NEW_LEDS is not set
27845 -# CONFIG_ACCESSIBILITY is not set
27846 # CONFIG_INFINIBAND is not set
27847 -CONFIG_RTC_LIB=y
27848 -CONFIG_RTC_CLASS=y
27849 -CONFIG_RTC_HCTOSYS=y
27850 -CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
27851 -# CONFIG_RTC_DEBUG is not set
27852 +# CONFIG_RTC_CLASS is not set
27853
27854 #
27855 -# RTC interfaces
27856 +# DMA Engine support
27857 #
27858 -CONFIG_RTC_INTF_SYSFS=y
27859 -CONFIG_RTC_INTF_PROC=y
27860 -CONFIG_RTC_INTF_DEV=y
27861 -# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
27862 -# CONFIG_RTC_DRV_TEST is not set
27863 +# CONFIG_DMA_ENGINE is not set
27864
27865 #
27866 -# SPI RTC drivers
27867 +# DMA Clients
27868 #
27869
27870 #
27871 -# Platform RTC drivers
27872 +# DMA Devices
27873 #
27874 -# CONFIG_RTC_DRV_DS1286 is not set
27875 -# CONFIG_RTC_DRV_DS1511 is not set
27876 -# CONFIG_RTC_DRV_DS1553 is not set
27877 -# CONFIG_RTC_DRV_DS1742 is not set
27878 -# CONFIG_RTC_DRV_STK17TA8 is not set
27879 -# CONFIG_RTC_DRV_M48T86 is not set
27880 -# CONFIG_RTC_DRV_M48T35 is not set
27881 -# CONFIG_RTC_DRV_M48T59 is not set
27882 -# CONFIG_RTC_DRV_BQ4802 is not set
27883 -# CONFIG_RTC_DRV_V3020 is not set
27884 +# CONFIG_AUXDISPLAY is not set
27885
27886 #
27887 -# on-CPU RTC drivers
27888 +# Userspace I/O
27889 #
27890 -CONFIG_RTC_DRV_PARISC=y
27891 -# CONFIG_DMADEVICES is not set
27892 -# CONFIG_AUXDISPLAY is not set
27893 # CONFIG_UIO is not set
27894 -# CONFIG_STAGING is not set
27895
27896 #
27897 # File systems
27898 @@ -1282,20 +1159,21 @@
27899 # CONFIG_EXT2_FS_XIP is not set
27900 CONFIG_EXT3_FS=y
27901 # CONFIG_EXT3_FS_XATTR is not set
27902 -# CONFIG_EXT4_FS is not set
27903 +# CONFIG_EXT4DEV_FS is not set
27904 CONFIG_JBD=y
27905 # CONFIG_JBD_DEBUG is not set
27906 # CONFIG_REISERFS_FS is not set
27907 # CONFIG_JFS_FS is not set
27908 CONFIG_FS_POSIX_ACL=y
27909 -CONFIG_FILE_LOCKING=y
27910 # CONFIG_XFS_FS is not set
27911 +# CONFIG_GFS2_FS is not set
27912 # CONFIG_OCFS2_FS is not set
27913 -# CONFIG_BTRFS_FS is not set
27914 -CONFIG_DNOTIFY=y
27915 +# CONFIG_MINIX_FS is not set
27916 +# CONFIG_ROMFS_FS is not set
27917 CONFIG_INOTIFY=y
27918 CONFIG_INOTIFY_USER=y
27919 # CONFIG_QUOTA is not set
27920 +CONFIG_DNOTIFY=y
27921 CONFIG_AUTOFS_FS=y
27922 # CONFIG_AUTOFS4_FS is not set
27923 # CONFIG_FUSE_FS is not set
27924 @@ -1324,13 +1202,16 @@
27925 CONFIG_PROC_FS=y
27926 CONFIG_PROC_KCORE=y
27927 CONFIG_PROC_SYSCTL=y
27928 -CONFIG_PROC_PAGE_MONITOR=y
27929 CONFIG_SYSFS=y
27930 CONFIG_TMPFS=y
27931 # CONFIG_TMPFS_POSIX_ACL is not set
27932 # CONFIG_HUGETLB_PAGE is not set
27933 +CONFIG_RAMFS=y
27934 # CONFIG_CONFIGFS_FS is not set
27935 -CONFIG_MISC_FILESYSTEMS=y
27936 +
27937 +#
27938 +# Miscellaneous filesystems
27939 +#
27940 # CONFIG_ADFS_FS is not set
27941 # CONFIG_AFFS_FS is not set
27942 # CONFIG_ECRYPT_FS is not set
27943 @@ -1340,32 +1221,33 @@
27944 # CONFIG_BFS_FS is not set
27945 # CONFIG_EFS_FS is not set
27946 # CONFIG_CRAMFS is not set
27947 -# CONFIG_SQUASHFS is not set
27948 # CONFIG_VXFS_FS is not set
27949 -# CONFIG_MINIX_FS is not set
27950 -# CONFIG_OMFS_FS is not set
27951 # CONFIG_HPFS_FS is not set
27952 # CONFIG_QNX4FS_FS is not set
27953 -# CONFIG_ROMFS_FS is not set
27954 # CONFIG_SYSV_FS is not set
27955 # CONFIG_UFS_FS is not set
27956 -CONFIG_NETWORK_FILESYSTEMS=y
27957 +
27958 +#
27959 +# Network File Systems
27960 +#
27961 CONFIG_NFS_FS=y
27962 CONFIG_NFS_V3=y
27963 # CONFIG_NFS_V3_ACL is not set
27964 # CONFIG_NFS_V4 is not set
27965 -CONFIG_ROOT_NFS=y
27966 +# CONFIG_NFS_DIRECTIO is not set
27967 CONFIG_NFSD=y
27968 CONFIG_NFSD_V3=y
27969 # CONFIG_NFSD_V3_ACL is not set
27970 CONFIG_NFSD_V4=y
27971 +CONFIG_NFSD_TCP=y
27972 +CONFIG_ROOT_NFS=y
27973 CONFIG_LOCKD=y
27974 CONFIG_LOCKD_V4=y
27975 CONFIG_EXPORTFS=y
27976 CONFIG_NFS_COMMON=y
27977 CONFIG_SUNRPC=y
27978 CONFIG_SUNRPC_GSS=y
27979 -# CONFIG_SUNRPC_REGISTER_V4 is not set
27980 +# CONFIG_SUNRPC_BIND34 is not set
27981 CONFIG_RPCSEC_GSS_KRB5=y
27982 CONFIG_RPCSEC_GSS_SPKM3=m
27983 CONFIG_SMB_FS=m
27984 @@ -1374,7 +1256,6 @@
27985 CONFIG_CIFS=m
27986 # CONFIG_CIFS_STATS is not set
27987 # CONFIG_CIFS_WEAK_PW_HASH is not set
27988 -# CONFIG_CIFS_UPCALL is not set
27989 # CONFIG_CIFS_XATTR is not set
27990 # CONFIG_CIFS_DEBUG2 is not set
27991 # CONFIG_CIFS_EXPERIMENTAL is not set
27992 @@ -1387,6 +1268,10 @@
27993 #
27994 # CONFIG_PARTITION_ADVANCED is not set
27995 CONFIG_MSDOS_PARTITION=y
27996 +
27997 +#
27998 +# Native Language Support
27999 +#
28000 CONFIG_NLS=y
28001 CONFIG_NLS_DEFAULT="iso8859-1"
28002 CONFIG_NLS_CODEPAGE_437=y
28003 @@ -1427,28 +1312,33 @@
28004 CONFIG_NLS_KOI8_R=m
28005 CONFIG_NLS_KOI8_U=m
28006 CONFIG_NLS_UTF8=y
28007 +
28008 +#
28009 +# Distributed Lock Manager
28010 +#
28011 # CONFIG_DLM is not set
28012
28013 #
28014 +# Profiling support
28015 +#
28016 +CONFIG_PROFILING=y
28017 +CONFIG_OPROFILE=m
28018 +
28019 +#
28020 # Kernel hacking
28021 #
28022 # CONFIG_PRINTK_TIME is not set
28023 -CONFIG_ENABLE_WARN_DEPRECATED=y
28024 CONFIG_ENABLE_MUST_CHECK=y
28025 -CONFIG_FRAME_WARN=1024
28026 CONFIG_MAGIC_SYSRQ=y
28027 # CONFIG_UNUSED_SYMBOLS is not set
28028 -CONFIG_DEBUG_FS=y
28029 +# CONFIG_DEBUG_FS is not set
28030 CONFIG_HEADERS_CHECK=y
28031 CONFIG_DEBUG_KERNEL=y
28032 # CONFIG_DEBUG_SHIRQ is not set
28033 CONFIG_DETECT_SOFTLOCKUP=y
28034 -# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
28035 -CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
28036 CONFIG_SCHED_DEBUG=y
28037 # CONFIG_SCHEDSTATS is not set
28038 # CONFIG_TIMER_STATS is not set
28039 -# CONFIG_DEBUG_OBJECTS is not set
28040 # CONFIG_DEBUG_SLAB is not set
28041 # CONFIG_DEBUG_RT_MUTEXES is not set
28042 # CONFIG_RT_MUTEX_TESTER is not set
28043 @@ -1460,33 +1350,10 @@
28044 CONFIG_DEBUG_BUGVERBOSE=y
28045 # CONFIG_DEBUG_INFO is not set
28046 # CONFIG_DEBUG_VM is not set
28047 -# CONFIG_DEBUG_WRITECOUNT is not set
28048 -CONFIG_DEBUG_MEMORY_INIT=y
28049 # CONFIG_DEBUG_LIST is not set
28050 -# CONFIG_DEBUG_SG is not set
28051 -# CONFIG_DEBUG_NOTIFIERS is not set
28052 -# CONFIG_BOOT_PRINTK_DELAY is not set
28053 +CONFIG_FORCED_INLINING=y
28054 # CONFIG_RCU_TORTURE_TEST is not set
28055 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
28056 -# CONFIG_BACKTRACE_SELF_TEST is not set
28057 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
28058 # CONFIG_FAULT_INJECTION is not set
28059 -# CONFIG_SYSCTL_SYSCALL_CHECK is not set
28060 -CONFIG_NOP_TRACER=y
28061 -CONFIG_RING_BUFFER=y
28062 -CONFIG_TRACING=y
28063 -
28064 -#
28065 -# Tracers
28066 -#
28067 -# CONFIG_SCHED_TRACER is not set
28068 -# CONFIG_CONTEXT_SWITCH_TRACER is not set
28069 -# CONFIG_BOOT_TRACER is not set
28070 -# CONFIG_TRACE_BRANCH_PROFILING is not set
28071 -# CONFIG_FTRACE_STARTUP_TEST is not set
28072 -# CONFIG_BUILD_DOCSRC is not set
28073 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
28074 -# CONFIG_SAMPLES is not set
28075 # CONFIG_DEBUG_RODATA is not set
28076
28077 #
28078 @@ -1495,112 +1362,56 @@
28079 CONFIG_KEYS=y
28080 CONFIG_KEYS_DEBUG_PROC_KEYS=y
28081 # CONFIG_SECURITY is not set
28082 -# CONFIG_SECURITYFS is not set
28083 -# CONFIG_SECURITY_FILE_CAPABILITIES is not set
28084 CONFIG_CRYPTO=y
28085 -
28086 -#
28087 -# Crypto core or helper
28088 -#
28089 -# CONFIG_CRYPTO_FIPS is not set
28090 CONFIG_CRYPTO_ALGAPI=y
28091 -CONFIG_CRYPTO_ALGAPI2=y
28092 -CONFIG_CRYPTO_AEAD=y
28093 -CONFIG_CRYPTO_AEAD2=y
28094 CONFIG_CRYPTO_BLKCIPHER=y
28095 -CONFIG_CRYPTO_BLKCIPHER2=y
28096 CONFIG_CRYPTO_HASH=y
28097 -CONFIG_CRYPTO_HASH2=y
28098 -CONFIG_CRYPTO_RNG2=y
28099 CONFIG_CRYPTO_MANAGER=y
28100 -CONFIG_CRYPTO_MANAGER2=y
28101 -# CONFIG_CRYPTO_GF128MUL is not set
28102 -CONFIG_CRYPTO_NULL=m
28103 -# CONFIG_CRYPTO_CRYPTD is not set
28104 -CONFIG_CRYPTO_AUTHENC=y
28105 -CONFIG_CRYPTO_TEST=m
28106 -
28107 -#
28108 -# Authenticated Encryption with Associated Data
28109 -#
28110 -# CONFIG_CRYPTO_CCM is not set
28111 -# CONFIG_CRYPTO_GCM is not set
28112 -# CONFIG_CRYPTO_SEQIV is not set
28113 -
28114 -#
28115 -# Block modes
28116 -#
28117 -CONFIG_CRYPTO_CBC=y
28118 -# CONFIG_CRYPTO_CTR is not set
28119 -# CONFIG_CRYPTO_CTS is not set
28120 -# CONFIG_CRYPTO_ECB is not set
28121 -# CONFIG_CRYPTO_LRW is not set
28122 -# CONFIG_CRYPTO_PCBC is not set
28123 -# CONFIG_CRYPTO_XTS is not set
28124 -
28125 -#
28126 -# Hash modes
28127 -#
28128 CONFIG_CRYPTO_HMAC=y
28129 # CONFIG_CRYPTO_XCBC is not set
28130 -
28131 -#
28132 -# Digest
28133 -#
28134 -CONFIG_CRYPTO_CRC32C=m
28135 +CONFIG_CRYPTO_NULL=m
28136 CONFIG_CRYPTO_MD4=m
28137 CONFIG_CRYPTO_MD5=y
28138 -CONFIG_CRYPTO_MICHAEL_MIC=m
28139 -# CONFIG_CRYPTO_RMD128 is not set
28140 -# CONFIG_CRYPTO_RMD160 is not set
28141 -# CONFIG_CRYPTO_RMD256 is not set
28142 -# CONFIG_CRYPTO_RMD320 is not set
28143 CONFIG_CRYPTO_SHA1=y
28144 CONFIG_CRYPTO_SHA256=m
28145 CONFIG_CRYPTO_SHA512=m
28146 -CONFIG_CRYPTO_TGR192=m
28147 CONFIG_CRYPTO_WP512=m
28148 -
28149 -#
28150 -# Ciphers
28151 -#
28152 -CONFIG_CRYPTO_AES=m
28153 -CONFIG_CRYPTO_ANUBIS=m
28154 -CONFIG_CRYPTO_ARC4=m
28155 +CONFIG_CRYPTO_TGR192=m
28156 +# CONFIG_CRYPTO_GF128MUL is not set
28157 +# CONFIG_CRYPTO_ECB is not set
28158 +CONFIG_CRYPTO_CBC=y
28159 +# CONFIG_CRYPTO_PCBC is not set
28160 +# CONFIG_CRYPTO_LRW is not set
28161 +# CONFIG_CRYPTO_XTS is not set
28162 +# CONFIG_CRYPTO_CRYPTD is not set
28163 +CONFIG_CRYPTO_DES=y
28164 +# CONFIG_CRYPTO_FCRYPT is not set
28165 CONFIG_CRYPTO_BLOWFISH=m
28166 -# CONFIG_CRYPTO_CAMELLIA is not set
28167 +CONFIG_CRYPTO_TWOFISH=m
28168 +CONFIG_CRYPTO_TWOFISH_COMMON=m
28169 +CONFIG_CRYPTO_SERPENT=m
28170 +CONFIG_CRYPTO_AES=m
28171 CONFIG_CRYPTO_CAST5=m
28172 CONFIG_CRYPTO_CAST6=m
28173 -CONFIG_CRYPTO_DES=y
28174 -# CONFIG_CRYPTO_FCRYPT is not set
28175 +CONFIG_CRYPTO_TEA=m
28176 +CONFIG_CRYPTO_ARC4=m
28177 CONFIG_CRYPTO_KHAZAD=m
28178 -# CONFIG_CRYPTO_SALSA20 is not set
28179 +CONFIG_CRYPTO_ANUBIS=m
28180 # CONFIG_CRYPTO_SEED is not set
28181 -CONFIG_CRYPTO_SERPENT=m
28182 -CONFIG_CRYPTO_TEA=m
28183 -CONFIG_CRYPTO_TWOFISH=m
28184 -CONFIG_CRYPTO_TWOFISH_COMMON=m
28185 -
28186 -#
28187 -# Compression
28188 -#
28189 CONFIG_CRYPTO_DEFLATE=y
28190 -# CONFIG_CRYPTO_LZO is not set
28191 -
28192 -#
28193 -# Random Number Generation
28194 -#
28195 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
28196 +CONFIG_CRYPTO_MICHAEL_MIC=m
28197 +CONFIG_CRYPTO_CRC32C=m
28198 +# CONFIG_CRYPTO_CAMELLIA is not set
28199 +CONFIG_CRYPTO_TEST=m
28200 +# CONFIG_CRYPTO_AUTHENC is not set
28201 # CONFIG_CRYPTO_HW is not set
28202
28203 #
28204 # Library routines
28205 #
28206 CONFIG_BITREVERSE=y
28207 -CONFIG_GENERIC_FIND_LAST_BIT=y
28208 CONFIG_CRC_CCITT=m
28209 # CONFIG_CRC16 is not set
28210 -# CONFIG_CRC_T10DIF is not set
28211 # CONFIG_CRC_ITU_T is not set
28212 CONFIG_CRC32=y
28213 # CONFIG_CRC7 is not set
28214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/hpux/fs.c linux-2.6.29-rc3.owrt/arch/parisc/hpux/fs.c
28215 --- linux-2.6.29.owrt/arch/parisc/hpux/fs.c 2009-05-10 22:04:39.000000000 +0200
28216 +++ linux-2.6.29-rc3.owrt/arch/parisc/hpux/fs.c 2009-05-10 23:48:28.000000000 +0200
28217 @@ -137,6 +137,7 @@
28218 error = count - buf.count;
28219 }
28220
28221 +out_putf:
28222 fput(file);
28223 out:
28224 return error;
28225 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/include/asm/assembly.h linux-2.6.29-rc3.owrt/arch/parisc/include/asm/assembly.h
28226 --- linux-2.6.29.owrt/arch/parisc/include/asm/assembly.h 2009-05-10 22:04:39.000000000 +0200
28227 +++ linux-2.6.29-rc3.owrt/arch/parisc/include/asm/assembly.h 2009-05-10 23:48:28.000000000 +0200
28228 @@ -79,7 +79,6 @@
28229
28230 #include <asm/asm-offsets.h>
28231 #include <asm/page.h>
28232 -#include <asm/types.h>
28233
28234 #include <asm/asmregs.h>
28235
28236 @@ -130,27 +129,27 @@
28237
28238 /* Shift Left - note the r and t can NOT be the same! */
28239 .macro shl r, sa, t
28240 - dep,z \r, 31-(\sa), 32-(\sa), \t
28241 + dep,z \r, 31-\sa, 32-\sa, \t
28242 .endm
28243
28244 /* The PA 2.0 shift left */
28245 .macro shlw r, sa, t
28246 - depw,z \r, 31-(\sa), 32-(\sa), \t
28247 + depw,z \r, 31-\sa, 32-\sa, \t
28248 .endm
28249
28250 /* And the PA 2.0W shift left */
28251 .macro shld r, sa, t
28252 - depd,z \r, 63-(\sa), 64-(\sa), \t
28253 + depd,z \r, 63-\sa, 64-\sa, \t
28254 .endm
28255
28256 /* Shift Right - note the r and t can NOT be the same! */
28257 .macro shr r, sa, t
28258 - extru \r, 31-(\sa), 32-(\sa), \t
28259 + extru \r, 31-\sa, 32-\sa, \t
28260 .endm
28261
28262 /* pa20w version of shift right */
28263 .macro shrd r, sa, t
28264 - extrd,u \r, 63-(\sa), 64-(\sa), \t
28265 + extrd,u \r, 63-\sa, 64-\sa, \t
28266 .endm
28267
28268 /* load 32-bit 'value' into 'reg' compensating for the ldil
28269 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/include/asm/dma-mapping.h linux-2.6.29-rc3.owrt/arch/parisc/include/asm/dma-mapping.h
28270 --- linux-2.6.29.owrt/arch/parisc/include/asm/dma-mapping.h 2009-05-10 22:04:39.000000000 +0200
28271 +++ linux-2.6.29-rc3.owrt/arch/parisc/include/asm/dma-mapping.h 2009-05-10 23:48:28.000000000 +0200
28272 @@ -5,7 +5,7 @@
28273 #include <asm/cacheflush.h>
28274 #include <asm/scatterlist.h>
28275
28276 -/* See Documentation/PCI/PCI-DMA-mapping.txt */
28277 +/* See Documentation/DMA-mapping.txt */
28278 struct hppa_dma_ops {
28279 int (*dma_supported)(struct device *dev, u64 mask);
28280 void *(*alloc_consistent)(struct device *dev, size_t size, dma_addr_t *iova, gfp_t flag);
28281 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/include/asm/io.h linux-2.6.29-rc3.owrt/arch/parisc/include/asm/io.h
28282 --- linux-2.6.29.owrt/arch/parisc/include/asm/io.h 2009-05-10 22:04:39.000000000 +0200
28283 +++ linux-2.6.29-rc3.owrt/arch/parisc/include/asm/io.h 2009-05-10 23:48:28.000000000 +0200
28284 @@ -174,48 +174,15 @@
28285 *(volatile unsigned long long __force *) addr = b;
28286 }
28287
28288 -static inline unsigned char readb(const volatile void __iomem *addr)
28289 -{
28290 - return __raw_readb(addr);
28291 -}
28292 -static inline unsigned short readw(const volatile void __iomem *addr)
28293 -{
28294 - return le16_to_cpu(__raw_readw(addr));
28295 -}
28296 -static inline unsigned int readl(const volatile void __iomem *addr)
28297 -{
28298 - return le32_to_cpu(__raw_readl(addr));
28299 -}
28300 -static inline unsigned long long readq(const volatile void __iomem *addr)
28301 -{
28302 - return le64_to_cpu(__raw_readq(addr));
28303 -}
28304 -
28305 -static inline void writeb(unsigned char b, volatile void __iomem *addr)
28306 -{
28307 - __raw_writeb(b, addr);
28308 -}
28309 -static inline void writew(unsigned short w, volatile void __iomem *addr)
28310 -{
28311 - __raw_writew(cpu_to_le16(w), addr);
28312 -}
28313 -static inline void writel(unsigned int l, volatile void __iomem *addr)
28314 -{
28315 - __raw_writel(cpu_to_le32(l), addr);
28316 -}
28317 -static inline void writeq(unsigned long long q, volatile void __iomem *addr)
28318 -{
28319 - __raw_writeq(cpu_to_le64(q), addr);
28320 -}
28321 -
28322 -#define readb readb
28323 -#define readw readw
28324 -#define readl readl
28325 -#define readq readq
28326 -#define writeb writeb
28327 -#define writew writew
28328 -#define writel writel
28329 -#define writeq writeq
28330 +/* readb can never be const, so use __fswab instead of le*_to_cpu */
28331 +#define readb(addr) __raw_readb(addr)
28332 +#define readw(addr) le16_to_cpu(__raw_readw(addr))
28333 +#define readl(addr) le32_to_cpu(__raw_readl(addr))
28334 +#define readq(addr) le64_to_cpu(__raw_readq(addr))
28335 +#define writeb(b, addr) __raw_writeb(b, addr)
28336 +#define writew(b, addr) __raw_writew(cpu_to_le16(b), addr)
28337 +#define writel(b, addr) __raw_writel(cpu_to_le32(b), addr)
28338 +#define writeq(b, addr) __raw_writeq(cpu_to_le64(b), addr)
28339
28340 #define readb_relaxed(addr) readb(addr)
28341 #define readw_relaxed(addr) readw(addr)
28342 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/include/asm/irq.h linux-2.6.29-rc3.owrt/arch/parisc/include/asm/irq.h
28343 --- linux-2.6.29.owrt/arch/parisc/include/asm/irq.h 2009-05-10 22:04:39.000000000 +0200
28344 +++ linux-2.6.29-rc3.owrt/arch/parisc/include/asm/irq.h 2009-05-10 23:48:28.000000000 +0200
28345 @@ -49,7 +49,7 @@
28346 extern unsigned long txn_affinity_addr(unsigned int irq, int cpu);
28347
28348 extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *);
28349 -extern int cpu_check_affinity(unsigned int irq, const struct cpumask *dest);
28350 +extern int cpu_check_affinity(unsigned int irq, cpumask_t *dest);
28351
28352 /* soft power switch support (power.c) */
28353 extern struct tasklet_struct power_tasklet;
28354 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/include/asm/uaccess.h linux-2.6.29-rc3.owrt/arch/parisc/include/asm/uaccess.h
28355 --- linux-2.6.29.owrt/arch/parisc/include/asm/uaccess.h 2009-05-10 22:04:39.000000000 +0200
28356 +++ linux-2.6.29-rc3.owrt/arch/parisc/include/asm/uaccess.h 2009-05-10 23:48:28.000000000 +0200
28357 @@ -241,7 +241,6 @@
28358 #define __copy_to_user_inatomic __copy_to_user
28359 #define __copy_from_user_inatomic __copy_from_user
28360
28361 -struct pt_regs;
28362 int fixup_exception(struct pt_regs *regs);
28363
28364 #endif /* __PARISC_UACCESS_H */
28365 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/kernel/cache.c linux-2.6.29-rc3.owrt/arch/parisc/kernel/cache.c
28366 --- linux-2.6.29.owrt/arch/parisc/kernel/cache.c 2009-05-10 22:04:39.000000000 +0200
28367 +++ linux-2.6.29-rc3.owrt/arch/parisc/kernel/cache.c 2009-05-10 23:48:28.000000000 +0200
28368 @@ -551,7 +551,10 @@
28369 {
28370 int sr3;
28371
28372 - BUG_ON(!vma->vm_mm->context);
28373 + if (!vma->vm_mm->context) {
28374 + BUG();
28375 + return;
28376 + }
28377
28378 sr3 = mfsp(3);
28379 if (vma->vm_mm->context == sr3) {
28380 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/kernel/entry.S linux-2.6.29-rc3.owrt/arch/parisc/kernel/entry.S
28381 --- linux-2.6.29.owrt/arch/parisc/kernel/entry.S 2009-05-10 22:04:39.000000000 +0200
28382 +++ linux-2.6.29-rc3.owrt/arch/parisc/kernel/entry.S 2009-05-10 23:48:28.000000000 +0200
28383 @@ -368,7 +368,7 @@
28384 * abstractions for the macros */
28385 .macro EXTR reg1,start,length,reg2
28386 #ifdef CONFIG_64BIT
28387 - extrd,u \reg1,32+(\start),\length,\reg2
28388 + extrd,u \reg1,32+\start,\length,\reg2
28389 #else
28390 extrw,u \reg1,\start,\length,\reg2
28391 #endif
28392 @@ -376,7 +376,7 @@
28393
28394 .macro DEP reg1,start,length,reg2
28395 #ifdef CONFIG_64BIT
28396 - depd \reg1,32+(\start),\length,\reg2
28397 + depd \reg1,32+\start,\length,\reg2
28398 #else
28399 depw \reg1,\start,\length,\reg2
28400 #endif
28401 @@ -384,7 +384,7 @@
28402
28403 .macro DEPI val,start,length,reg
28404 #ifdef CONFIG_64BIT
28405 - depdi \val,32+(\start),\length,\reg
28406 + depdi \val,32+\start,\length,\reg
28407 #else
28408 depwi \val,\start,\length,\reg
28409 #endif
28410 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/kernel/firmware.c linux-2.6.29-rc3.owrt/arch/parisc/kernel/firmware.c
28411 --- linux-2.6.29.owrt/arch/parisc/kernel/firmware.c 2009-05-10 22:04:39.000000000 +0200
28412 +++ linux-2.6.29-rc3.owrt/arch/parisc/kernel/firmware.c 2009-05-10 23:48:28.000000000 +0200
28413 @@ -151,7 +151,7 @@
28414 }
28415
28416 #ifdef CONFIG_64BIT
28417 -void __cpuinit set_firmware_width_unlocked(void)
28418 +void __init set_firmware_width_unlocked(void)
28419 {
28420 int ret;
28421
28422 @@ -168,7 +168,7 @@
28423 * This function must be called before any pdc_* function that uses the
28424 * convert_to_wide function.
28425 */
28426 -void __cpuinit set_firmware_width(void)
28427 +void __init set_firmware_width(void)
28428 {
28429 unsigned long flags;
28430 spin_lock_irqsave(&pdc_lock, flags);
28431 @@ -176,11 +176,11 @@
28432 spin_unlock_irqrestore(&pdc_lock, flags);
28433 }
28434 #else
28435 -void __cpuinit set_firmware_width_unlocked(void) {
28436 +void __init set_firmware_width_unlocked(void) {
28437 return;
28438 }
28439
28440 -void __cpuinit set_firmware_width(void) {
28441 +void __init set_firmware_width(void) {
28442 return;
28443 }
28444 #endif /*CONFIG_64BIT*/
28445 @@ -302,7 +302,7 @@
28446 return retval;
28447 }
28448
28449 -int __cpuinit pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info)
28450 +int __init pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info)
28451 {
28452 int ret;
28453
28454 @@ -323,7 +323,7 @@
28455 * This PDC call returns the presence and status of all the coprocessors
28456 * attached to the processor.
28457 */
28458 -int __cpuinit pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info)
28459 +int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info)
28460 {
28461 int ret;
28462 unsigned long flags;
28463 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/kernel/irq.c linux-2.6.29-rc3.owrt/arch/parisc/kernel/irq.c
28464 --- linux-2.6.29.owrt/arch/parisc/kernel/irq.c 2009-05-10 22:04:39.000000000 +0200
28465 +++ linux-2.6.29-rc3.owrt/arch/parisc/kernel/irq.c 2009-05-10 23:48:28.000000000 +0200
28466 @@ -112,7 +112,7 @@
28467 }
28468
28469 #ifdef CONFIG_SMP
28470 -int cpu_check_affinity(unsigned int irq, const struct cpumask *dest)
28471 +int cpu_check_affinity(unsigned int irq, cpumask_t *dest)
28472 {
28473 int cpu_dest;
28474
28475 @@ -120,25 +120,23 @@
28476 if (CHECK_IRQ_PER_CPU(irq)) {
28477 /* Bad linux design decision. The mask has already
28478 * been set; we must reset it */
28479 - cpumask_setall(&irq_desc[irq].affinity);
28480 + irq_desc[irq].affinity = CPU_MASK_ALL;
28481 return -EINVAL;
28482 }
28483
28484 /* whatever mask they set, we just allow one CPU */
28485 cpu_dest = first_cpu(*dest);
28486 + *dest = cpumask_of_cpu(cpu_dest);
28487
28488 - return cpu_dest;
28489 + return 0;
28490 }
28491
28492 static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest)
28493 {
28494 - int cpu_dest;
28495 -
28496 - cpu_dest = cpu_check_affinity(irq, dest);
28497 - if (cpu_dest < 0)
28498 + if (cpu_check_affinity(irq, dest))
28499 return;
28500
28501 - cpumask_copy(&irq_desc[irq].affinity, &cpumask_of_cpu(cpu_dest));
28502 + irq_desc[irq].affinity = *dest;
28503 }
28504 #endif
28505
28506 @@ -297,7 +295,7 @@
28507 unsigned long txn_affinity_addr(unsigned int irq, int cpu)
28508 {
28509 #ifdef CONFIG_SMP
28510 - cpumask_copy(&irq_desc[irq].affinity, cpumask_of(cpu));
28511 + irq_desc[irq].affinity = cpumask_of_cpu(cpu);
28512 #endif
28513
28514 return per_cpu(cpu_data, cpu).txn_addr;
28515 @@ -354,7 +352,7 @@
28516 irq = eirr_to_irq(eirr_val);
28517
28518 #ifdef CONFIG_SMP
28519 - cpumask_copy(&dest, &irq_desc[irq].affinity);
28520 + dest = irq_desc[irq].affinity;
28521 if (CHECK_IRQ_PER_CPU(irq_desc[irq].status) &&
28522 !cpu_isset(smp_processor_id(), dest)) {
28523 int cpu = first_cpu(dest);
28524 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/kernel/pci-dma.c linux-2.6.29-rc3.owrt/arch/parisc/kernel/pci-dma.c
28525 --- linux-2.6.29.owrt/arch/parisc/kernel/pci-dma.c 2009-05-10 22:04:39.000000000 +0200
28526 +++ linux-2.6.29-rc3.owrt/arch/parisc/kernel/pci-dma.c 2009-05-10 23:48:28.000000000 +0200
28527 @@ -2,7 +2,7 @@
28528 ** PARISC 1.1 Dynamic DMA mapping support.
28529 ** This implementation is for PA-RISC platforms that do not support
28530 ** I/O TLBs (aka DMA address translation hardware).
28531 -** See Documentation/PCI/PCI-DMA-mapping.txt for interface definitions.
28532 +** See Documentation/DMA-mapping.txt for interface definitions.
28533 **
28534 ** (c) Copyright 1999,2000 Hewlett-Packard Company
28535 ** (c) Copyright 2000 Grant Grundler
28536 @@ -447,7 +447,10 @@
28537
28538 static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t size, enum dma_data_direction direction)
28539 {
28540 - BUG_ON(direction == DMA_NONE);
28541 + if (direction == DMA_NONE) {
28542 + printk(KERN_ERR "pa11_dma_map_single(PCI_DMA_NONE) called by %p\n", __builtin_return_address(0));
28543 + BUG();
28544 + }
28545
28546 flush_kernel_dcache_range((unsigned long) addr, size);
28547 return virt_to_phys(addr);
28548 @@ -455,7 +458,10 @@
28549
28550 static void pa11_dma_unmap_single(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction)
28551 {
28552 - BUG_ON(direction == DMA_NONE);
28553 + if (direction == DMA_NONE) {
28554 + printk(KERN_ERR "pa11_dma_unmap_single(PCI_DMA_NONE) called by %p\n", __builtin_return_address(0));
28555 + BUG();
28556 + }
28557
28558 if (direction == DMA_TO_DEVICE)
28559 return;
28560 @@ -474,7 +480,8 @@
28561 {
28562 int i;
28563
28564 - BUG_ON(direction == DMA_NONE);
28565 + if (direction == DMA_NONE)
28566 + BUG();
28567
28568 for (i = 0; i < nents; i++, sglist++ ) {
28569 unsigned long vaddr = sg_virt_addr(sglist);
28570 @@ -489,7 +496,8 @@
28571 {
28572 int i;
28573
28574 - BUG_ON(direction == DMA_NONE);
28575 + if (direction == DMA_NONE)
28576 + BUG();
28577
28578 if (direction == DMA_TO_DEVICE)
28579 return;
28580 @@ -503,14 +511,16 @@
28581
28582 static void pa11_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction)
28583 {
28584 - BUG_ON(direction == DMA_NONE);
28585 + if (direction == DMA_NONE)
28586 + BUG();
28587
28588 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size);
28589 }
28590
28591 static void pa11_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction)
28592 {
28593 - BUG_ON(direction == DMA_NONE);
28594 + if (direction == DMA_NONE)
28595 + BUG();
28596
28597 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size);
28598 }
28599 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/parisc/mm/init.c linux-2.6.29-rc3.owrt/arch/parisc/mm/init.c
28600 --- linux-2.6.29.owrt/arch/parisc/mm/init.c 2009-05-10 22:04:39.000000000 +0200
28601 +++ linux-2.6.29-rc3.owrt/arch/parisc/mm/init.c 2009-05-10 23:48:28.000000000 +0200
28602 @@ -304,8 +304,10 @@
28603 */
28604 max_low_pfn = max_pfn;
28605
28606 - /* bootmap sizing messed up? */
28607 - BUG_ON((bootmap_pfn - bootmap_start_pfn) != bootmap_pages);
28608 + if ((bootmap_pfn - bootmap_start_pfn) != bootmap_pages) {
28609 + printk(KERN_WARNING "WARNING! bootmap sizing is messed up!\n");
28610 + BUG();
28611 + }
28612
28613 /* reserve PAGE0 pdc memory, kernel text/data/bss & bootmap */
28614
28615 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/boot/dts/mpc8313erdb.dts linux-2.6.29-rc3.owrt/arch/powerpc/boot/dts/mpc8313erdb.dts
28616 --- linux-2.6.29.owrt/arch/powerpc/boot/dts/mpc8313erdb.dts 2009-05-10 22:04:40.000000000 +0200
28617 +++ linux-2.6.29-rc3.owrt/arch/powerpc/boot/dts/mpc8313erdb.dts 2009-05-10 23:48:28.000000000 +0200
28618 @@ -191,8 +191,7 @@
28619 interrupts = <37 0x8 36 0x8 35 0x8>;
28620 interrupt-parent = <&ipic>;
28621 tbi-handle = < &tbi0 >;
28622 - /* Vitesse 7385 isn't on the MDIO bus */
28623 - fixed-link = <1 1 1000 0 0>;
28624 + phy-handle = < &phy1 >;
28625 fsl,magic-packet;
28626
28627 mdio@24520 {
28628 @@ -200,6 +199,12 @@
28629 #size-cells = <0>;
28630 compatible = "fsl,gianfar-mdio";
28631 reg = <0x24520 0x20>;
28632 + phy1: ethernet-phy@1 {
28633 + interrupt-parent = <&ipic>;
28634 + interrupts = <19 0x8>;
28635 + reg = <0x1>;
28636 + device_type = "ethernet-phy";
28637 + };
28638 phy4: ethernet-phy@4 {
28639 interrupt-parent = <&ipic>;
28640 interrupts = <20 0x8>;
28641 @@ -214,8 +219,6 @@
28642 };
28643
28644 enet1: ethernet@25000 {
28645 - #address-cells = <1>;
28646 - #size-cells = <1>;
28647 cell-index = <1>;
28648 device_type = "network";
28649 model = "eTSEC";
28650 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/40x/virtex_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/40x/virtex_defconfig
28651 --- linux-2.6.29.owrt/arch/powerpc/configs/40x/virtex_defconfig 2009-05-10 22:04:40.000000000 +0200
28652 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/40x/virtex_defconfig 2009-05-10 23:48:28.000000000 +0200
28653 @@ -686,7 +686,7 @@
28654 CONFIG_SERIAL_CORE=y
28655 CONFIG_SERIAL_CORE_CONSOLE=y
28656 # CONFIG_SERIAL_JSM is not set
28657 -CONFIG_SERIAL_OF_PLATFORM=y
28658 +# CONFIG_SERIAL_OF_PLATFORM is not set
28659 # CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
28660 CONFIG_UNIX98_PTYS=y
28661 # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
28662 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/44x/virtex5_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/44x/virtex5_defconfig
28663 --- linux-2.6.29.owrt/arch/powerpc/configs/44x/virtex5_defconfig 2009-05-10 22:04:40.000000000 +0200
28664 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/44x/virtex5_defconfig 2009-05-10 23:48:28.000000000 +0200
28665 @@ -691,7 +691,7 @@
28666 CONFIG_SERIAL_CORE=y
28667 CONFIG_SERIAL_CORE_CONSOLE=y
28668 # CONFIG_SERIAL_JSM is not set
28669 -CONFIG_SERIAL_OF_PLATFORM=y
28670 +# CONFIG_SERIAL_OF_PLATFORM is not set
28671 # CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
28672 CONFIG_UNIX98_PTYS=y
28673 # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
28674 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/52xx/cm5200_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/cm5200_defconfig
28675 --- linux-2.6.29.owrt/arch/powerpc/configs/52xx/cm5200_defconfig 2009-05-10 22:04:40.000000000 +0200
28676 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/cm5200_defconfig 2009-05-10 23:48:28.000000000 +0200
28677 @@ -1,7 +1,7 @@
28678 #
28679 # Automatically generated make config: don't edit
28680 -# Linux kernel version: 2.6.29-rc2
28681 -# Mon Jan 26 21:41:58 2009
28682 +# Linux kernel version: 2.6.28-rc4
28683 +# Thu Nov 13 02:12:40 2008
28684 #
28685 # CONFIG_PPC64 is not set
28686
28687 @@ -43,7 +43,7 @@
28688 CONFIG_PPC=y
28689 CONFIG_EARLY_PRINTK=y
28690 CONFIG_GENERIC_NVRAM=y
28691 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
28692 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
28693 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
28694 CONFIG_PPC_OF=y
28695 CONFIG_OF=y
28696 @@ -71,23 +71,14 @@
28697 # CONFIG_BSD_PROCESS_ACCT is not set
28698 # CONFIG_TASKSTATS is not set
28699 # CONFIG_AUDIT is not set
28700 -
28701 -#
28702 -# RCU Subsystem
28703 -#
28704 -CONFIG_CLASSIC_RCU=y
28705 -# CONFIG_TREE_RCU is not set
28706 -# CONFIG_PREEMPT_RCU is not set
28707 -# CONFIG_TREE_RCU_TRACE is not set
28708 -# CONFIG_PREEMPT_RCU_TRACE is not set
28709 # CONFIG_IKCONFIG is not set
28710 CONFIG_LOG_BUF_SHIFT=14
28711 +# CONFIG_CGROUPS is not set
28712 CONFIG_GROUP_SCHED=y
28713 CONFIG_FAIR_GROUP_SCHED=y
28714 # CONFIG_RT_GROUP_SCHED is not set
28715 CONFIG_USER_SCHED=y
28716 # CONFIG_CGROUP_SCHED is not set
28717 -# CONFIG_CGROUPS is not set
28718 CONFIG_SYSFS_DEPRECATED=y
28719 CONFIG_SYSFS_DEPRECATED_V2=y
28720 # CONFIG_RELAY is not set
28721 @@ -119,6 +110,7 @@
28722 CONFIG_SLUB=y
28723 # CONFIG_SLOB is not set
28724 # CONFIG_PROFILING is not set
28725 +# CONFIG_MARKERS is not set
28726 CONFIG_HAVE_OPROFILE=y
28727 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
28728 CONFIG_HAVE_IOREMAP_PROT=y
28729 @@ -129,11 +121,13 @@
28730 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
28731 CONFIG_SLABINFO=y
28732 CONFIG_RT_MUTEXES=y
28733 +# CONFIG_TINY_SHMEM is not set
28734 CONFIG_BASE_SMALL=0
28735 # CONFIG_MODULES is not set
28736 CONFIG_BLOCK=y
28737 # CONFIG_LBD is not set
28738 # CONFIG_BLK_DEV_IO_TRACE is not set
28739 +# CONFIG_LSF is not set
28740 # CONFIG_BLK_DEV_BSG is not set
28741 # CONFIG_BLK_DEV_INTEGRITY is not set
28742
28743 @@ -149,6 +143,7 @@
28744 # CONFIG_DEFAULT_CFQ is not set
28745 # CONFIG_DEFAULT_NOOP is not set
28746 CONFIG_DEFAULT_IOSCHED="anticipatory"
28747 +CONFIG_CLASSIC_RCU=y
28748 # CONFIG_FREEZER is not set
28749
28750 #
28751 @@ -187,8 +182,9 @@
28752 # CONFIG_TAU is not set
28753 # CONFIG_FSL_ULI1575 is not set
28754 CONFIG_PPC_BESTCOMM=y
28755 +# CONFIG_PPC_BESTCOMM_ATA is not set
28756 CONFIG_PPC_BESTCOMM_FEC=y
28757 -# CONFIG_SIMPLE_GPIO is not set
28758 +# CONFIG_PPC_BESTCOMM_GEN_BD is not set
28759
28760 #
28761 # Kernel options
28762 @@ -215,7 +211,6 @@
28763 CONFIG_ARCH_HAS_WALK_MEMORY=y
28764 CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
28765 # CONFIG_KEXEC is not set
28766 -# CONFIG_CRASH_DUMP is not set
28767 CONFIG_ARCH_FLATMEM_ENABLE=y
28768 CONFIG_ARCH_POPULATES_NODE_MAP=y
28769 CONFIG_SELECT_MEMORY_MODEL=y
28770 @@ -227,14 +222,12 @@
28771 CONFIG_PAGEFLAGS_EXTENDED=y
28772 CONFIG_SPLIT_PTLOCK_CPUS=4
28773 CONFIG_MIGRATION=y
28774 +# CONFIG_RESOURCES_64BIT is not set
28775 # CONFIG_PHYS_ADDR_T_64BIT is not set
28776 CONFIG_ZONE_DMA_FLAG=1
28777 CONFIG_BOUNCE=y
28778 CONFIG_VIRT_TO_BUS=y
28779 CONFIG_UNEVICTABLE_LRU=y
28780 -CONFIG_PPC_4K_PAGES=y
28781 -# CONFIG_PPC_16K_PAGES is not set
28782 -# CONFIG_PPC_64K_PAGES is not set
28783 CONFIG_FORCE_MAX_ZONEORDER=11
28784 CONFIG_PROC_DEVICETREE=y
28785 # CONFIG_CMDLINE_BOOL is not set
28786 @@ -275,7 +268,6 @@
28787 #
28788 # Networking options
28789 #
28790 -CONFIG_COMPAT_NET_DEV_OPS=y
28791 CONFIG_PACKET=y
28792 # CONFIG_PACKET_MMAP is not set
28793 CONFIG_UNIX=y
28794 @@ -332,7 +324,6 @@
28795 # CONFIG_ECONET is not set
28796 # CONFIG_WAN_ROUTER is not set
28797 # CONFIG_NET_SCHED is not set
28798 -# CONFIG_DCB is not set
28799
28800 #
28801 # Network testing
28802 @@ -345,7 +336,6 @@
28803 # CONFIG_AF_RXRPC is not set
28804 # CONFIG_PHONET is not set
28805 # CONFIG_WIRELESS is not set
28806 -# CONFIG_WIMAX is not set
28807 # CONFIG_RFKILL is not set
28808 # CONFIG_NET_9P is not set
28809
28810 @@ -437,12 +427,6 @@
28811 # CONFIG_MTD_ONENAND is not set
28812
28813 #
28814 -# LPDDR flash memory drivers
28815 -#
28816 -# CONFIG_MTD_LPDDR is not set
28817 -# CONFIG_MTD_QINFO_PROBE is not set
28818 -
28819 -#
28820 # UBI - Unsorted block images
28821 #
28822 # CONFIG_MTD_UBI is not set
28823 @@ -530,9 +514,6 @@
28824 # CONFIG_BROADCOM_PHY is not set
28825 # CONFIG_ICPLUS_PHY is not set
28826 # CONFIG_REALTEK_PHY is not set
28827 -# CONFIG_NATIONAL_PHY is not set
28828 -# CONFIG_STE10XP is not set
28829 -# CONFIG_LSI_ET1011C_PHY is not set
28830 # CONFIG_FIXED_PHY is not set
28831 # CONFIG_MDIO_BITBANG is not set
28832 CONFIG_NET_ETHERNET=y
28833 @@ -558,10 +539,6 @@
28834 # CONFIG_IWLWIFI_LEDS is not set
28835
28836 #
28837 -# Enable WiMAX (Networking options) to see the WiMAX drivers
28838 -#
28839 -
28840 -#
28841 # USB Network Adapters
28842 #
28843 # CONFIG_USB_CATC is not set
28844 @@ -611,10 +588,8 @@
28845 CONFIG_SERIAL_MPC52xx_CONSOLE=y
28846 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600
28847 CONFIG_UNIX98_PTYS=y
28848 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
28849 CONFIG_LEGACY_PTYS=y
28850 CONFIG_LEGACY_PTY_COUNT=256
28851 -# CONFIG_HVC_UDBG is not set
28852 # CONFIG_IPMI_HANDLER is not set
28853 # CONFIG_HW_RANDOM is not set
28854 # CONFIG_NVRAM is not set
28855 @@ -654,6 +629,8 @@
28856 # Miscellaneous I2C Chip support
28857 #
28858 # CONFIG_DS1682 is not set
28859 +# CONFIG_EEPROM_AT24 is not set
28860 +# CONFIG_EEPROM_LEGACY is not set
28861 # CONFIG_SENSORS_PCF8574 is not set
28862 # CONFIG_PCF8575 is not set
28863 # CONFIG_SENSORS_PCA9539 is not set
28864 @@ -698,12 +675,10 @@
28865 # CONFIG_MFD_CORE is not set
28866 # CONFIG_MFD_SM501 is not set
28867 # CONFIG_HTC_PASIC3 is not set
28868 -# CONFIG_TWL4030_CORE is not set
28869 # CONFIG_MFD_TMIO is not set
28870 # CONFIG_PMIC_DA903X is not set
28871 # CONFIG_MFD_WM8400 is not set
28872 # CONFIG_MFD_WM8350_I2C is not set
28873 -# CONFIG_MFD_PCF50633 is not set
28874 # CONFIG_REGULATOR is not set
28875
28876 #
28877 @@ -761,7 +736,6 @@
28878 # USB Host Controller Drivers
28879 #
28880 # CONFIG_USB_C67X00_HCD is not set
28881 -# CONFIG_USB_OXU210HP_HCD is not set
28882 # CONFIG_USB_ISP116X_HCD is not set
28883 # CONFIG_USB_ISP1760_HCD is not set
28884 CONFIG_USB_OHCI_HCD=y
28885 @@ -786,17 +760,18 @@
28886 # CONFIG_USB_TMC is not set
28887
28888 #
28889 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
28890 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
28891 #
28892
28893 #
28894 -# see USB_STORAGE Help for more information
28895 +# may also be needed; see USB_STORAGE Help for more information
28896 #
28897 CONFIG_USB_STORAGE=y
28898 # CONFIG_USB_STORAGE_DEBUG is not set
28899 # CONFIG_USB_STORAGE_DATAFAB is not set
28900 # CONFIG_USB_STORAGE_FREECOM is not set
28901 # CONFIG_USB_STORAGE_ISD200 is not set
28902 +# CONFIG_USB_STORAGE_DPCM is not set
28903 # CONFIG_USB_STORAGE_USBAT is not set
28904 # CONFIG_USB_STORAGE_SDDR09 is not set
28905 # CONFIG_USB_STORAGE_SDDR55 is not set
28906 @@ -842,10 +817,6 @@
28907 # CONFIG_USB_ISIGHTFW is not set
28908 # CONFIG_USB_VST is not set
28909 # CONFIG_USB_GADGET is not set
28910 -
28911 -#
28912 -# OTG and related infrastructure
28913 -#
28914 # CONFIG_MMC is not set
28915 # CONFIG_MEMSTICK is not set
28916 # CONFIG_NEW_LEDS is not set
28917 @@ -855,6 +826,7 @@
28918 # CONFIG_DMADEVICES is not set
28919 # CONFIG_UIO is not set
28920 # CONFIG_STAGING is not set
28921 +CONFIG_STAGING_EXCLUDE_BUILD=y
28922
28923 #
28924 # File systems
28925 @@ -875,7 +847,6 @@
28926 CONFIG_FILE_LOCKING=y
28927 # CONFIG_XFS_FS is not set
28928 # CONFIG_OCFS2_FS is not set
28929 -# CONFIG_BTRFS_FS is not set
28930 CONFIG_DNOTIFY=y
28931 CONFIG_INOTIFY=y
28932 CONFIG_INOTIFY_USER=y
28933 @@ -912,7 +883,10 @@
28934 # CONFIG_TMPFS_POSIX_ACL is not set
28935 # CONFIG_HUGETLB_PAGE is not set
28936 # CONFIG_CONFIGFS_FS is not set
28937 -CONFIG_MISC_FILESYSTEMS=y
28938 +
28939 +#
28940 +# Miscellaneous filesystems
28941 +#
28942 # CONFIG_ADFS_FS is not set
28943 # CONFIG_AFFS_FS is not set
28944 # CONFIG_HFS_FS is not set
28945 @@ -932,7 +906,6 @@
28946 CONFIG_JFFS2_RTIME=y
28947 # CONFIG_JFFS2_RUBIN is not set
28948 CONFIG_CRAMFS=y
28949 -# CONFIG_SQUASHFS is not set
28950 # CONFIG_VXFS_FS is not set
28951 # CONFIG_MINIX_FS is not set
28952 # CONFIG_OMFS_FS is not set
28953 @@ -1029,7 +1002,6 @@
28954 # Library routines
28955 #
28956 CONFIG_BITREVERSE=y
28957 -CONFIG_GENERIC_FIND_LAST_BIT=y
28958 # CONFIG_CRC_CCITT is not set
28959 # CONFIG_CRC16 is not set
28960 # CONFIG_CRC_T10DIF is not set
28961 @@ -1081,7 +1053,6 @@
28962 # CONFIG_DEBUG_MEMORY_INIT is not set
28963 # CONFIG_DEBUG_LIST is not set
28964 # CONFIG_DEBUG_SG is not set
28965 -# CONFIG_DEBUG_NOTIFIERS is not set
28966 # CONFIG_BOOT_PRINTK_DELAY is not set
28967 # CONFIG_RCU_TORTURE_TEST is not set
28968 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
28969 @@ -1090,8 +1061,6 @@
28970 # CONFIG_FAULT_INJECTION is not set
28971 # CONFIG_LATENCYTOP is not set
28972 CONFIG_HAVE_FUNCTION_TRACER=y
28973 -CONFIG_HAVE_DYNAMIC_FTRACE=y
28974 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
28975
28976 #
28977 # Tracers
28978 @@ -1100,13 +1069,11 @@
28979 # CONFIG_SCHED_TRACER is not set
28980 # CONFIG_CONTEXT_SWITCH_TRACER is not set
28981 # CONFIG_BOOT_TRACER is not set
28982 -# CONFIG_TRACE_BRANCH_PROFILING is not set
28983 # CONFIG_STACK_TRACER is not set
28984 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
28985 # CONFIG_SAMPLES is not set
28986 CONFIG_HAVE_ARCH_KGDB=y
28987 # CONFIG_KGDB is not set
28988 -CONFIG_PRINT_STACK_DEPTH=64
28989 # CONFIG_DEBUG_STACKOVERFLOW is not set
28990 # CONFIG_DEBUG_STACK_USAGE is not set
28991 # CONFIG_DEBUG_PAGEALLOC is not set
28992 @@ -1133,15 +1100,11 @@
28993 #
28994 # CONFIG_CRYPTO_FIPS is not set
28995 CONFIG_CRYPTO_ALGAPI=y
28996 -CONFIG_CRYPTO_ALGAPI2=y
28997 -CONFIG_CRYPTO_AEAD2=y
28998 +CONFIG_CRYPTO_AEAD=y
28999 CONFIG_CRYPTO_BLKCIPHER=y
29000 -CONFIG_CRYPTO_BLKCIPHER2=y
29001 CONFIG_CRYPTO_HASH=y
29002 -CONFIG_CRYPTO_HASH2=y
29003 -CONFIG_CRYPTO_RNG2=y
29004 +CONFIG_CRYPTO_RNG=y
29005 CONFIG_CRYPTO_MANAGER=y
29006 -CONFIG_CRYPTO_MANAGER2=y
29007 # CONFIG_CRYPTO_GF128MUL is not set
29008 # CONFIG_CRYPTO_NULL is not set
29009 # CONFIG_CRYPTO_CRYPTD is not set
29010 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/52xx/lite5200b_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/lite5200b_defconfig
29011 --- linux-2.6.29.owrt/arch/powerpc/configs/52xx/lite5200b_defconfig 2009-05-10 22:04:40.000000000 +0200
29012 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/lite5200b_defconfig 2009-05-10 23:48:28.000000000 +0200
29013 @@ -1,7 +1,7 @@
29014 #
29015 # Automatically generated make config: don't edit
29016 -# Linux kernel version: 2.6.29-rc2
29017 -# Mon Jan 26 21:41:14 2009
29018 +# Linux kernel version: 2.6.28-rc4
29019 +# Thu Nov 13 02:10:16 2008
29020 #
29021 # CONFIG_PPC64 is not set
29022
29023 @@ -43,7 +43,7 @@
29024 CONFIG_PPC=y
29025 CONFIG_EARLY_PRINTK=y
29026 CONFIG_GENERIC_NVRAM=y
29027 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
29028 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
29029 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
29030 CONFIG_PPC_OF=y
29031 CONFIG_OF=y
29032 @@ -72,23 +72,14 @@
29033 # CONFIG_BSD_PROCESS_ACCT is not set
29034 # CONFIG_TASKSTATS is not set
29035 # CONFIG_AUDIT is not set
29036 -
29037 -#
29038 -# RCU Subsystem
29039 -#
29040 -CONFIG_CLASSIC_RCU=y
29041 -# CONFIG_TREE_RCU is not set
29042 -# CONFIG_PREEMPT_RCU is not set
29043 -# CONFIG_TREE_RCU_TRACE is not set
29044 -# CONFIG_PREEMPT_RCU_TRACE is not set
29045 # CONFIG_IKCONFIG is not set
29046 CONFIG_LOG_BUF_SHIFT=14
29047 +# CONFIG_CGROUPS is not set
29048 CONFIG_GROUP_SCHED=y
29049 # CONFIG_FAIR_GROUP_SCHED is not set
29050 # CONFIG_RT_GROUP_SCHED is not set
29051 CONFIG_USER_SCHED=y
29052 # CONFIG_CGROUP_SCHED is not set
29053 -# CONFIG_CGROUPS is not set
29054 CONFIG_SYSFS_DEPRECATED=y
29055 CONFIG_SYSFS_DEPRECATED_V2=y
29056 # CONFIG_RELAY is not set
29057 @@ -121,6 +112,7 @@
29058 CONFIG_SLUB=y
29059 # CONFIG_SLOB is not set
29060 # CONFIG_PROFILING is not set
29061 +# CONFIG_MARKERS is not set
29062 CONFIG_HAVE_OPROFILE=y
29063 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
29064 CONFIG_HAVE_IOREMAP_PROT=y
29065 @@ -131,6 +123,7 @@
29066 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
29067 CONFIG_SLABINFO=y
29068 CONFIG_RT_MUTEXES=y
29069 +# CONFIG_TINY_SHMEM is not set
29070 CONFIG_BASE_SMALL=0
29071 CONFIG_MODULES=y
29072 # CONFIG_MODULE_FORCE_LOAD is not set
29073 @@ -138,9 +131,11 @@
29074 # CONFIG_MODULE_FORCE_UNLOAD is not set
29075 # CONFIG_MODVERSIONS is not set
29076 # CONFIG_MODULE_SRCVERSION_ALL is not set
29077 +CONFIG_KMOD=y
29078 CONFIG_BLOCK=y
29079 # CONFIG_LBD is not set
29080 # CONFIG_BLK_DEV_IO_TRACE is not set
29081 +# CONFIG_LSF is not set
29082 # CONFIG_BLK_DEV_BSG is not set
29083 # CONFIG_BLK_DEV_INTEGRITY is not set
29084
29085 @@ -156,6 +151,7 @@
29086 # CONFIG_DEFAULT_CFQ is not set
29087 # CONFIG_DEFAULT_NOOP is not set
29088 CONFIG_DEFAULT_IOSCHED="anticipatory"
29089 +CONFIG_CLASSIC_RCU=y
29090 CONFIG_FREEZER=y
29091
29092 #
29093 @@ -196,7 +192,7 @@
29094 CONFIG_PPC_BESTCOMM=y
29095 CONFIG_PPC_BESTCOMM_ATA=y
29096 CONFIG_PPC_BESTCOMM_FEC=y
29097 -# CONFIG_SIMPLE_GPIO is not set
29098 +CONFIG_PPC_BESTCOMM_GEN_BD=y
29099
29100 #
29101 # Kernel options
29102 @@ -224,7 +220,6 @@
29103 CONFIG_ARCH_HAS_WALK_MEMORY=y
29104 CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
29105 # CONFIG_KEXEC is not set
29106 -# CONFIG_CRASH_DUMP is not set
29107 CONFIG_ARCH_FLATMEM_ENABLE=y
29108 CONFIG_ARCH_POPULATES_NODE_MAP=y
29109 CONFIG_SELECT_MEMORY_MODEL=y
29110 @@ -236,14 +231,12 @@
29111 CONFIG_PAGEFLAGS_EXTENDED=y
29112 CONFIG_SPLIT_PTLOCK_CPUS=4
29113 CONFIG_MIGRATION=y
29114 +# CONFIG_RESOURCES_64BIT is not set
29115 # CONFIG_PHYS_ADDR_T_64BIT is not set
29116 CONFIG_ZONE_DMA_FLAG=1
29117 CONFIG_BOUNCE=y
29118 CONFIG_VIRT_TO_BUS=y
29119 CONFIG_UNEVICTABLE_LRU=y
29120 -CONFIG_PPC_4K_PAGES=y
29121 -# CONFIG_PPC_16K_PAGES is not set
29122 -# CONFIG_PPC_64K_PAGES is not set
29123 CONFIG_FORCE_MAX_ZONEORDER=11
29124 CONFIG_PROC_DEVICETREE=y
29125 # CONFIG_CMDLINE_BOOL is not set
29126 @@ -271,7 +264,6 @@
29127 # CONFIG_PCI_MSI is not set
29128 CONFIG_PCI_LEGACY=y
29129 # CONFIG_PCI_DEBUG is not set
29130 -# CONFIG_PCI_STUB is not set
29131 # CONFIG_PCCARD is not set
29132 # CONFIG_HOTPLUG_PCI is not set
29133 # CONFIG_HAS_RAPIDIO is not set
29134 @@ -294,7 +286,6 @@
29135 #
29136 # Networking options
29137 #
29138 -CONFIG_COMPAT_NET_DEV_OPS=y
29139 CONFIG_PACKET=y
29140 # CONFIG_PACKET_MMAP is not set
29141 CONFIG_UNIX=y
29142 @@ -351,7 +342,6 @@
29143 # CONFIG_ECONET is not set
29144 # CONFIG_WAN_ROUTER is not set
29145 # CONFIG_NET_SCHED is not set
29146 -# CONFIG_DCB is not set
29147
29148 #
29149 # Network testing
29150 @@ -364,7 +354,6 @@
29151 # CONFIG_AF_RXRPC is not set
29152 # CONFIG_PHONET is not set
29153 # CONFIG_WIRELESS is not set
29154 -# CONFIG_WIMAX is not set
29155 # CONFIG_RFKILL is not set
29156 # CONFIG_NET_9P is not set
29157
29158 @@ -407,19 +396,13 @@
29159 # CONFIG_BLK_DEV_HD is not set
29160 CONFIG_MISC_DEVICES=y
29161 # CONFIG_PHANTOM is not set
29162 +# CONFIG_EEPROM_93CX6 is not set
29163 # CONFIG_SGI_IOC4 is not set
29164 # CONFIG_TIFM_CORE is not set
29165 # CONFIG_ICS932S401 is not set
29166 # CONFIG_ENCLOSURE_SERVICES is not set
29167 # CONFIG_HP_ILO is not set
29168 # CONFIG_C2PORT is not set
29169 -
29170 -#
29171 -# EEPROM support
29172 -#
29173 -# CONFIG_EEPROM_AT24 is not set
29174 -# CONFIG_EEPROM_LEGACY is not set
29175 -# CONFIG_EEPROM_93CX6 is not set
29176 CONFIG_HAVE_IDE=y
29177 # CONFIG_IDE is not set
29178
29179 @@ -462,7 +445,6 @@
29180 # CONFIG_SCSI_SRP_ATTRS is not set
29181 CONFIG_SCSI_LOWLEVEL=y
29182 # CONFIG_ISCSI_TCP is not set
29183 -# CONFIG_SCSI_CXGB3_ISCSI is not set
29184 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
29185 # CONFIG_SCSI_3W_9XXX is not set
29186 # CONFIG_SCSI_ACARD is not set
29187 @@ -479,8 +461,6 @@
29188 # CONFIG_MEGARAID_SAS is not set
29189 # CONFIG_SCSI_HPTIOP is not set
29190 # CONFIG_SCSI_BUSLOGIC is not set
29191 -# CONFIG_LIBFC is not set
29192 -# CONFIG_FCOE is not set
29193 # CONFIG_SCSI_DMX3191D is not set
29194 # CONFIG_SCSI_EATA is not set
29195 # CONFIG_SCSI_FUTURE_DOMAIN is not set
29196 @@ -600,9 +580,6 @@
29197 # CONFIG_BROADCOM_PHY is not set
29198 # CONFIG_ICPLUS_PHY is not set
29199 # CONFIG_REALTEK_PHY is not set
29200 -# CONFIG_NATIONAL_PHY is not set
29201 -# CONFIG_STE10XP is not set
29202 -# CONFIG_LSI_ET1011C_PHY is not set
29203 # CONFIG_FIXED_PHY is not set
29204 # CONFIG_MDIO_BITBANG is not set
29205 CONFIG_NET_ETHERNET=y
29206 @@ -649,7 +626,6 @@
29207 # CONFIG_JME is not set
29208 CONFIG_NETDEV_10000=y
29209 # CONFIG_CHELSIO_T1 is not set
29210 -CONFIG_CHELSIO_T3_DEPENDS=y
29211 # CONFIG_CHELSIO_T3 is not set
29212 # CONFIG_ENIC is not set
29213 # CONFIG_IXGBE is not set
29214 @@ -672,10 +648,6 @@
29215 # CONFIG_WLAN_PRE80211 is not set
29216 # CONFIG_WLAN_80211 is not set
29217 # CONFIG_IWLWIFI_LEDS is not set
29218 -
29219 -#
29220 -# Enable WiMAX (Networking options) to see the WiMAX drivers
29221 -#
29222 # CONFIG_WAN is not set
29223 # CONFIG_FDDI is not set
29224 # CONFIG_HIPPI is not set
29225 @@ -723,10 +695,8 @@
29226 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
29227 # CONFIG_SERIAL_JSM is not set
29228 CONFIG_UNIX98_PTYS=y
29229 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
29230 CONFIG_LEGACY_PTYS=y
29231 CONFIG_LEGACY_PTY_COUNT=256
29232 -# CONFIG_HVC_UDBG is not set
29233 # CONFIG_IPMI_HANDLER is not set
29234 # CONFIG_HW_RANDOM is not set
29235 # CONFIG_NVRAM is not set
29236 @@ -792,6 +762,8 @@
29237 # Miscellaneous I2C Chip support
29238 #
29239 # CONFIG_DS1682 is not set
29240 +# CONFIG_EEPROM_AT24 is not set
29241 +# CONFIG_EEPROM_LEGACY is not set
29242 # CONFIG_SENSORS_PCF8574 is not set
29243 # CONFIG_PCF8575 is not set
29244 # CONFIG_SENSORS_PCA9539 is not set
29245 @@ -824,12 +796,10 @@
29246 # CONFIG_MFD_CORE is not set
29247 # CONFIG_MFD_SM501 is not set
29248 # CONFIG_HTC_PASIC3 is not set
29249 -# CONFIG_TWL4030_CORE is not set
29250 # CONFIG_MFD_TMIO is not set
29251 # CONFIG_PMIC_DA903X is not set
29252 # CONFIG_MFD_WM8400 is not set
29253 # CONFIG_MFD_WM8350_I2C is not set
29254 -# CONFIG_MFD_PCF50633 is not set
29255 # CONFIG_REGULATOR is not set
29256
29257 #
29258 @@ -876,13 +846,9 @@
29259 #
29260
29261 #
29262 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
29263 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
29264 #
29265 # CONFIG_USB_GADGET is not set
29266 -
29267 -#
29268 -# OTG and related infrastructure
29269 -#
29270 # CONFIG_UWB is not set
29271 # CONFIG_MMC is not set
29272 # CONFIG_MEMSTICK is not set
29273 @@ -894,6 +860,7 @@
29274 # CONFIG_DMADEVICES is not set
29275 # CONFIG_UIO is not set
29276 # CONFIG_STAGING is not set
29277 +CONFIG_STAGING_EXCLUDE_BUILD=y
29278
29279 #
29280 # File systems
29281 @@ -914,7 +881,6 @@
29282 CONFIG_FILE_LOCKING=y
29283 # CONFIG_XFS_FS is not set
29284 # CONFIG_OCFS2_FS is not set
29285 -# CONFIG_BTRFS_FS is not set
29286 CONFIG_DNOTIFY=y
29287 CONFIG_INOTIFY=y
29288 CONFIG_INOTIFY_USER=y
29289 @@ -948,7 +914,10 @@
29290 # CONFIG_TMPFS_POSIX_ACL is not set
29291 # CONFIG_HUGETLB_PAGE is not set
29292 # CONFIG_CONFIGFS_FS is not set
29293 -CONFIG_MISC_FILESYSTEMS=y
29294 +
29295 +#
29296 +# Miscellaneous filesystems
29297 +#
29298 # CONFIG_ADFS_FS is not set
29299 # CONFIG_AFFS_FS is not set
29300 # CONFIG_HFS_FS is not set
29301 @@ -957,7 +926,6 @@
29302 # CONFIG_BFS_FS is not set
29303 # CONFIG_EFS_FS is not set
29304 # CONFIG_CRAMFS is not set
29305 -# CONFIG_SQUASHFS is not set
29306 # CONFIG_VXFS_FS is not set
29307 # CONFIG_MINIX_FS is not set
29308 # CONFIG_OMFS_FS is not set
29309 @@ -999,7 +967,6 @@
29310 # Library routines
29311 #
29312 CONFIG_BITREVERSE=y
29313 -CONFIG_GENERIC_FIND_LAST_BIT=y
29314 # CONFIG_CRC_CCITT is not set
29315 # CONFIG_CRC16 is not set
29316 # CONFIG_CRC_T10DIF is not set
29317 @@ -1049,7 +1016,6 @@
29318 # CONFIG_DEBUG_MEMORY_INIT is not set
29319 # CONFIG_DEBUG_LIST is not set
29320 # CONFIG_DEBUG_SG is not set
29321 -# CONFIG_DEBUG_NOTIFIERS is not set
29322 # CONFIG_BOOT_PRINTK_DELAY is not set
29323 # CONFIG_RCU_TORTURE_TEST is not set
29324 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
29325 @@ -1058,8 +1024,6 @@
29326 # CONFIG_FAULT_INJECTION is not set
29327 # CONFIG_LATENCYTOP is not set
29328 CONFIG_HAVE_FUNCTION_TRACER=y
29329 -CONFIG_HAVE_DYNAMIC_FTRACE=y
29330 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
29331
29332 #
29333 # Tracers
29334 @@ -1068,13 +1032,11 @@
29335 # CONFIG_SCHED_TRACER is not set
29336 # CONFIG_CONTEXT_SWITCH_TRACER is not set
29337 # CONFIG_BOOT_TRACER is not set
29338 -# CONFIG_TRACE_BRANCH_PROFILING is not set
29339 # CONFIG_STACK_TRACER is not set
29340 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
29341 # CONFIG_SAMPLES is not set
29342 CONFIG_HAVE_ARCH_KGDB=y
29343 # CONFIG_KGDB is not set
29344 -CONFIG_PRINT_STACK_DEPTH=64
29345 # CONFIG_DEBUG_STACKOVERFLOW is not set
29346 # CONFIG_DEBUG_STACK_USAGE is not set
29347 # CONFIG_DEBUG_PAGEALLOC is not set
29348 @@ -1101,15 +1063,11 @@
29349 #
29350 # CONFIG_CRYPTO_FIPS is not set
29351 CONFIG_CRYPTO_ALGAPI=y
29352 -CONFIG_CRYPTO_ALGAPI2=y
29353 -CONFIG_CRYPTO_AEAD2=y
29354 +CONFIG_CRYPTO_AEAD=y
29355 CONFIG_CRYPTO_BLKCIPHER=y
29356 -CONFIG_CRYPTO_BLKCIPHER2=y
29357 CONFIG_CRYPTO_HASH=y
29358 -CONFIG_CRYPTO_HASH2=y
29359 -CONFIG_CRYPTO_RNG2=y
29360 +CONFIG_CRYPTO_RNG=y
29361 CONFIG_CRYPTO_MANAGER=y
29362 -CONFIG_CRYPTO_MANAGER2=y
29363 # CONFIG_CRYPTO_GF128MUL is not set
29364 # CONFIG_CRYPTO_NULL is not set
29365 # CONFIG_CRYPTO_CRYPTD is not set
29366 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/52xx/motionpro_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/motionpro_defconfig
29367 --- linux-2.6.29.owrt/arch/powerpc/configs/52xx/motionpro_defconfig 2009-05-10 22:04:40.000000000 +0200
29368 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/motionpro_defconfig 2009-05-10 23:48:28.000000000 +0200
29369 @@ -1,7 +1,7 @@
29370 #
29371 # Automatically generated make config: don't edit
29372 -# Linux kernel version: 2.6.29-rc2
29373 -# Mon Jan 26 21:42:29 2009
29374 +# Linux kernel version: 2.6.28-rc4
29375 +# Thu Nov 13 02:11:02 2008
29376 #
29377 # CONFIG_PPC64 is not set
29378
29379 @@ -43,7 +43,7 @@
29380 CONFIG_PPC=y
29381 CONFIG_EARLY_PRINTK=y
29382 CONFIG_GENERIC_NVRAM=y
29383 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
29384 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
29385 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
29386 CONFIG_PPC_OF=y
29387 CONFIG_OF=y
29388 @@ -71,23 +71,14 @@
29389 # CONFIG_BSD_PROCESS_ACCT is not set
29390 # CONFIG_TASKSTATS is not set
29391 # CONFIG_AUDIT is not set
29392 -
29393 -#
29394 -# RCU Subsystem
29395 -#
29396 -CONFIG_CLASSIC_RCU=y
29397 -# CONFIG_TREE_RCU is not set
29398 -# CONFIG_PREEMPT_RCU is not set
29399 -# CONFIG_TREE_RCU_TRACE is not set
29400 -# CONFIG_PREEMPT_RCU_TRACE is not set
29401 # CONFIG_IKCONFIG is not set
29402 CONFIG_LOG_BUF_SHIFT=14
29403 +# CONFIG_CGROUPS is not set
29404 CONFIG_GROUP_SCHED=y
29405 CONFIG_FAIR_GROUP_SCHED=y
29406 # CONFIG_RT_GROUP_SCHED is not set
29407 CONFIG_USER_SCHED=y
29408 # CONFIG_CGROUP_SCHED is not set
29409 -# CONFIG_CGROUPS is not set
29410 CONFIG_SYSFS_DEPRECATED=y
29411 CONFIG_SYSFS_DEPRECATED_V2=y
29412 # CONFIG_RELAY is not set
29413 @@ -119,6 +110,7 @@
29414 CONFIG_SLUB=y
29415 # CONFIG_SLOB is not set
29416 # CONFIG_PROFILING is not set
29417 +# CONFIG_MARKERS is not set
29418 CONFIG_HAVE_OPROFILE=y
29419 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
29420 CONFIG_HAVE_IOREMAP_PROT=y
29421 @@ -129,11 +121,13 @@
29422 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
29423 CONFIG_SLABINFO=y
29424 CONFIG_RT_MUTEXES=y
29425 +# CONFIG_TINY_SHMEM is not set
29426 CONFIG_BASE_SMALL=0
29427 # CONFIG_MODULES is not set
29428 CONFIG_BLOCK=y
29429 # CONFIG_LBD is not set
29430 # CONFIG_BLK_DEV_IO_TRACE is not set
29431 +# CONFIG_LSF is not set
29432 # CONFIG_BLK_DEV_BSG is not set
29433 # CONFIG_BLK_DEV_INTEGRITY is not set
29434
29435 @@ -149,6 +143,7 @@
29436 # CONFIG_DEFAULT_CFQ is not set
29437 # CONFIG_DEFAULT_NOOP is not set
29438 CONFIG_DEFAULT_IOSCHED="anticipatory"
29439 +CONFIG_CLASSIC_RCU=y
29440 # CONFIG_FREEZER is not set
29441
29442 #
29443 @@ -187,9 +182,9 @@
29444 # CONFIG_TAU is not set
29445 # CONFIG_FSL_ULI1575 is not set
29446 CONFIG_PPC_BESTCOMM=y
29447 -CONFIG_PPC_BESTCOMM_ATA=y
29448 +# CONFIG_PPC_BESTCOMM_ATA is not set
29449 CONFIG_PPC_BESTCOMM_FEC=y
29450 -# CONFIG_SIMPLE_GPIO is not set
29451 +# CONFIG_PPC_BESTCOMM_GEN_BD is not set
29452
29453 #
29454 # Kernel options
29455 @@ -216,7 +211,6 @@
29456 CONFIG_ARCH_HAS_WALK_MEMORY=y
29457 CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
29458 # CONFIG_KEXEC is not set
29459 -# CONFIG_CRASH_DUMP is not set
29460 CONFIG_ARCH_FLATMEM_ENABLE=y
29461 CONFIG_ARCH_POPULATES_NODE_MAP=y
29462 CONFIG_SELECT_MEMORY_MODEL=y
29463 @@ -228,14 +222,12 @@
29464 CONFIG_PAGEFLAGS_EXTENDED=y
29465 CONFIG_SPLIT_PTLOCK_CPUS=4
29466 CONFIG_MIGRATION=y
29467 +# CONFIG_RESOURCES_64BIT is not set
29468 # CONFIG_PHYS_ADDR_T_64BIT is not set
29469 CONFIG_ZONE_DMA_FLAG=1
29470 CONFIG_BOUNCE=y
29471 CONFIG_VIRT_TO_BUS=y
29472 CONFIG_UNEVICTABLE_LRU=y
29473 -CONFIG_PPC_4K_PAGES=y
29474 -# CONFIG_PPC_16K_PAGES is not set
29475 -# CONFIG_PPC_64K_PAGES is not set
29476 CONFIG_FORCE_MAX_ZONEORDER=11
29477 CONFIG_PROC_DEVICETREE=y
29478 # CONFIG_CMDLINE_BOOL is not set
29479 @@ -276,7 +268,6 @@
29480 #
29481 # Networking options
29482 #
29483 -CONFIG_COMPAT_NET_DEV_OPS=y
29484 CONFIG_PACKET=y
29485 # CONFIG_PACKET_MMAP is not set
29486 CONFIG_UNIX=y
29487 @@ -333,7 +324,6 @@
29488 # CONFIG_ECONET is not set
29489 # CONFIG_WAN_ROUTER is not set
29490 # CONFIG_NET_SCHED is not set
29491 -# CONFIG_DCB is not set
29492
29493 #
29494 # Network testing
29495 @@ -346,7 +336,6 @@
29496 # CONFIG_AF_RXRPC is not set
29497 # CONFIG_PHONET is not set
29498 # CONFIG_WIRELESS is not set
29499 -# CONFIG_WIMAX is not set
29500 # CONFIG_RFKILL is not set
29501 # CONFIG_NET_9P is not set
29502
29503 @@ -438,12 +427,6 @@
29504 # CONFIG_MTD_ONENAND is not set
29505
29506 #
29507 -# LPDDR flash memory drivers
29508 -#
29509 -# CONFIG_MTD_LPDDR is not set
29510 -# CONFIG_MTD_QINFO_PROBE is not set
29511 -
29512 -#
29513 # UBI - Unsorted block images
29514 #
29515 # CONFIG_MTD_UBI is not set
29516 @@ -464,16 +447,10 @@
29517 # CONFIG_ATA_OVER_ETH is not set
29518 # CONFIG_BLK_DEV_HD is not set
29519 CONFIG_MISC_DEVICES=y
29520 +# CONFIG_EEPROM_93CX6 is not set
29521 # CONFIG_ICS932S401 is not set
29522 # CONFIG_ENCLOSURE_SERVICES is not set
29523 # CONFIG_C2PORT is not set
29524 -
29525 -#
29526 -# EEPROM support
29527 -#
29528 -# CONFIG_EEPROM_AT24 is not set
29529 -CONFIG_EEPROM_LEGACY=y
29530 -# CONFIG_EEPROM_93CX6 is not set
29531 CONFIG_HAVE_IDE=y
29532 # CONFIG_IDE is not set
29533
29534 @@ -515,7 +492,6 @@
29535 # CONFIG_SCSI_SRP_ATTRS is not set
29536 CONFIG_SCSI_LOWLEVEL=y
29537 # CONFIG_ISCSI_TCP is not set
29538 -# CONFIG_LIBFC is not set
29539 # CONFIG_SCSI_DEBUG is not set
29540 # CONFIG_SCSI_DH is not set
29541 CONFIG_ATA=y
29542 @@ -549,9 +525,6 @@
29543 CONFIG_BROADCOM_PHY=y
29544 CONFIG_ICPLUS_PHY=y
29545 # CONFIG_REALTEK_PHY is not set
29546 -# CONFIG_NATIONAL_PHY is not set
29547 -# CONFIG_STE10XP is not set
29548 -# CONFIG_LSI_ET1011C_PHY is not set
29549 # CONFIG_FIXED_PHY is not set
29550 CONFIG_MDIO_BITBANG=y
29551 CONFIG_NET_ETHERNET=y
29552 @@ -575,10 +548,6 @@
29553 # CONFIG_WLAN_PRE80211 is not set
29554 # CONFIG_WLAN_80211 is not set
29555 # CONFIG_IWLWIFI_LEDS is not set
29556 -
29557 -#
29558 -# Enable WiMAX (Networking options) to see the WiMAX drivers
29559 -#
29560 # CONFIG_WAN is not set
29561 # CONFIG_PPP is not set
29562 # CONFIG_SLIP is not set
29563 @@ -621,10 +590,8 @@
29564 CONFIG_SERIAL_MPC52xx_CONSOLE=y
29565 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
29566 CONFIG_UNIX98_PTYS=y
29567 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
29568 CONFIG_LEGACY_PTYS=y
29569 CONFIG_LEGACY_PTY_COUNT=256
29570 -# CONFIG_HVC_UDBG is not set
29571 # CONFIG_IPMI_HANDLER is not set
29572 # CONFIG_HW_RANDOM is not set
29573 # CONFIG_NVRAM is not set
29574 @@ -662,6 +629,8 @@
29575 # Miscellaneous I2C Chip support
29576 #
29577 # CONFIG_DS1682 is not set
29578 +# CONFIG_EEPROM_AT24 is not set
29579 +CONFIG_EEPROM_LEGACY=y
29580 # CONFIG_SENSORS_PCF8574 is not set
29581 # CONFIG_PCF8575 is not set
29582 # CONFIG_SENSORS_PCA9539 is not set
29583 @@ -690,7 +659,6 @@
29584 # CONFIG_SENSORS_ADT7462 is not set
29585 # CONFIG_SENSORS_ADT7470 is not set
29586 # CONFIG_SENSORS_ADT7473 is not set
29587 -# CONFIG_SENSORS_ADT7475 is not set
29588 # CONFIG_SENSORS_ATXP1 is not set
29589 # CONFIG_SENSORS_DS1621 is not set
29590 # CONFIG_SENSORS_F71805F is not set
29591 @@ -710,7 +678,6 @@
29592 # CONFIG_SENSORS_LM90 is not set
29593 # CONFIG_SENSORS_LM92 is not set
29594 # CONFIG_SENSORS_LM93 is not set
29595 -# CONFIG_SENSORS_LTC4245 is not set
29596 # CONFIG_SENSORS_MAX1619 is not set
29597 # CONFIG_SENSORS_MAX6650 is not set
29598 # CONFIG_SENSORS_PC87360 is not set
29599 @@ -754,12 +721,10 @@
29600 # CONFIG_MFD_CORE is not set
29601 # CONFIG_MFD_SM501 is not set
29602 # CONFIG_HTC_PASIC3 is not set
29603 -# CONFIG_TWL4030_CORE is not set
29604 # CONFIG_MFD_TMIO is not set
29605 # CONFIG_PMIC_DA903X is not set
29606 # CONFIG_MFD_WM8400 is not set
29607 # CONFIG_MFD_WM8350_I2C is not set
29608 -# CONFIG_MFD_PCF50633 is not set
29609 # CONFIG_REGULATOR is not set
29610
29611 #
29612 @@ -870,6 +835,7 @@
29613 # CONFIG_DMADEVICES is not set
29614 # CONFIG_UIO is not set
29615 # CONFIG_STAGING is not set
29616 +CONFIG_STAGING_EXCLUDE_BUILD=y
29617
29618 #
29619 # File systems
29620 @@ -890,7 +856,6 @@
29621 CONFIG_FILE_LOCKING=y
29622 # CONFIG_XFS_FS is not set
29623 # CONFIG_OCFS2_FS is not set
29624 -# CONFIG_BTRFS_FS is not set
29625 CONFIG_DNOTIFY=y
29626 CONFIG_INOTIFY=y
29627 CONFIG_INOTIFY_USER=y
29628 @@ -927,7 +892,10 @@
29629 # CONFIG_TMPFS_POSIX_ACL is not set
29630 # CONFIG_HUGETLB_PAGE is not set
29631 # CONFIG_CONFIGFS_FS is not set
29632 -CONFIG_MISC_FILESYSTEMS=y
29633 +
29634 +#
29635 +# Miscellaneous filesystems
29636 +#
29637 # CONFIG_ADFS_FS is not set
29638 # CONFIG_AFFS_FS is not set
29639 # CONFIG_HFS_FS is not set
29640 @@ -947,7 +915,6 @@
29641 CONFIG_JFFS2_RTIME=y
29642 # CONFIG_JFFS2_RUBIN is not set
29643 CONFIG_CRAMFS=y
29644 -# CONFIG_SQUASHFS is not set
29645 # CONFIG_VXFS_FS is not set
29646 # CONFIG_MINIX_FS is not set
29647 # CONFIG_OMFS_FS is not set
29648 @@ -1044,7 +1011,6 @@
29649 # Library routines
29650 #
29651 CONFIG_BITREVERSE=y
29652 -CONFIG_GENERIC_FIND_LAST_BIT=y
29653 # CONFIG_CRC_CCITT is not set
29654 # CONFIG_CRC16 is not set
29655 # CONFIG_CRC_T10DIF is not set
29656 @@ -1096,7 +1062,6 @@
29657 # CONFIG_DEBUG_MEMORY_INIT is not set
29658 # CONFIG_DEBUG_LIST is not set
29659 # CONFIG_DEBUG_SG is not set
29660 -# CONFIG_DEBUG_NOTIFIERS is not set
29661 # CONFIG_BOOT_PRINTK_DELAY is not set
29662 # CONFIG_RCU_TORTURE_TEST is not set
29663 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
29664 @@ -1105,8 +1070,6 @@
29665 # CONFIG_FAULT_INJECTION is not set
29666 # CONFIG_LATENCYTOP is not set
29667 CONFIG_HAVE_FUNCTION_TRACER=y
29668 -CONFIG_HAVE_DYNAMIC_FTRACE=y
29669 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
29670
29671 #
29672 # Tracers
29673 @@ -1115,13 +1078,11 @@
29674 # CONFIG_SCHED_TRACER is not set
29675 # CONFIG_CONTEXT_SWITCH_TRACER is not set
29676 # CONFIG_BOOT_TRACER is not set
29677 -# CONFIG_TRACE_BRANCH_PROFILING is not set
29678 # CONFIG_STACK_TRACER is not set
29679 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
29680 # CONFIG_SAMPLES is not set
29681 CONFIG_HAVE_ARCH_KGDB=y
29682 # CONFIG_KGDB is not set
29683 -CONFIG_PRINT_STACK_DEPTH=64
29684 # CONFIG_DEBUG_STACKOVERFLOW is not set
29685 # CONFIG_DEBUG_STACK_USAGE is not set
29686 # CONFIG_DEBUG_PAGEALLOC is not set
29687 @@ -1148,15 +1109,11 @@
29688 #
29689 # CONFIG_CRYPTO_FIPS is not set
29690 CONFIG_CRYPTO_ALGAPI=y
29691 -CONFIG_CRYPTO_ALGAPI2=y
29692 -CONFIG_CRYPTO_AEAD2=y
29693 +CONFIG_CRYPTO_AEAD=y
29694 CONFIG_CRYPTO_BLKCIPHER=y
29695 -CONFIG_CRYPTO_BLKCIPHER2=y
29696 CONFIG_CRYPTO_HASH=y
29697 -CONFIG_CRYPTO_HASH2=y
29698 -CONFIG_CRYPTO_RNG2=y
29699 +CONFIG_CRYPTO_RNG=y
29700 CONFIG_CRYPTO_MANAGER=y
29701 -CONFIG_CRYPTO_MANAGER2=y
29702 # CONFIG_CRYPTO_GF128MUL is not set
29703 # CONFIG_CRYPTO_NULL is not set
29704 # CONFIG_CRYPTO_CRYPTD is not set
29705 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/52xx/pcm030_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/pcm030_defconfig
29706 --- linux-2.6.29.owrt/arch/powerpc/configs/52xx/pcm030_defconfig 2009-05-10 22:04:40.000000000 +0200
29707 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/pcm030_defconfig 2009-05-10 23:48:28.000000000 +0200
29708 @@ -1,7 +1,7 @@
29709 #
29710 # Automatically generated make config: don't edit
29711 -# Linux kernel version: 2.6.29-rc2
29712 -# Mon Jan 26 21:41:33 2009
29713 +# Linux kernel version: 2.6.28-rc4
29714 +# Thu Nov 13 02:13:16 2008
29715 #
29716 # CONFIG_PPC64 is not set
29717
29718 @@ -43,7 +43,7 @@
29719 CONFIG_PPC=y
29720 CONFIG_EARLY_PRINTK=y
29721 CONFIG_GENERIC_NVRAM=y
29722 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
29723 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
29724 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
29725 CONFIG_PPC_OF=y
29726 CONFIG_OF=y
29727 @@ -72,24 +72,15 @@
29728 # CONFIG_BSD_PROCESS_ACCT is not set
29729 # CONFIG_TASKSTATS is not set
29730 # CONFIG_AUDIT is not set
29731 -
29732 -#
29733 -# RCU Subsystem
29734 -#
29735 -CONFIG_CLASSIC_RCU=y
29736 -# CONFIG_TREE_RCU is not set
29737 -# CONFIG_PREEMPT_RCU is not set
29738 -# CONFIG_TREE_RCU_TRACE is not set
29739 -# CONFIG_PREEMPT_RCU_TRACE is not set
29740 CONFIG_IKCONFIG=y
29741 CONFIG_IKCONFIG_PROC=y
29742 CONFIG_LOG_BUF_SHIFT=14
29743 +# CONFIG_CGROUPS is not set
29744 CONFIG_GROUP_SCHED=y
29745 CONFIG_FAIR_GROUP_SCHED=y
29746 # CONFIG_RT_GROUP_SCHED is not set
29747 CONFIG_USER_SCHED=y
29748 # CONFIG_CGROUP_SCHED is not set
29749 -# CONFIG_CGROUPS is not set
29750 CONFIG_SYSFS_DEPRECATED=y
29751 CONFIG_SYSFS_DEPRECATED_V2=y
29752 # CONFIG_RELAY is not set
29753 @@ -121,6 +112,7 @@
29754 # CONFIG_SLUB is not set
29755 # CONFIG_SLOB is not set
29756 # CONFIG_PROFILING is not set
29757 +# CONFIG_MARKERS is not set
29758 CONFIG_HAVE_OPROFILE=y
29759 # CONFIG_KPROBES is not set
29760 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
29761 @@ -132,6 +124,7 @@
29762 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
29763 CONFIG_SLABINFO=y
29764 CONFIG_RT_MUTEXES=y
29765 +# CONFIG_TINY_SHMEM is not set
29766 CONFIG_BASE_SMALL=0
29767 CONFIG_MODULES=y
29768 # CONFIG_MODULE_FORCE_LOAD is not set
29769 @@ -139,9 +132,11 @@
29770 # CONFIG_MODULE_FORCE_UNLOAD is not set
29771 # CONFIG_MODVERSIONS is not set
29772 # CONFIG_MODULE_SRCVERSION_ALL is not set
29773 +CONFIG_KMOD=y
29774 CONFIG_BLOCK=y
29775 # CONFIG_LBD is not set
29776 # CONFIG_BLK_DEV_IO_TRACE is not set
29777 +# CONFIG_LSF is not set
29778 # CONFIG_BLK_DEV_BSG is not set
29779 # CONFIG_BLK_DEV_INTEGRITY is not set
29780
29781 @@ -157,6 +152,7 @@
29782 # CONFIG_DEFAULT_CFQ is not set
29783 CONFIG_DEFAULT_NOOP=y
29784 CONFIG_DEFAULT_IOSCHED="noop"
29785 +CONFIG_CLASSIC_RCU=y
29786 # CONFIG_FREEZER is not set
29787
29788 #
29789 @@ -195,9 +191,9 @@
29790 # CONFIG_TAU is not set
29791 # CONFIG_FSL_ULI1575 is not set
29792 CONFIG_PPC_BESTCOMM=y
29793 -CONFIG_PPC_BESTCOMM_ATA=m
29794 +CONFIG_PPC_BESTCOMM_ATA=y
29795 CONFIG_PPC_BESTCOMM_FEC=y
29796 -# CONFIG_SIMPLE_GPIO is not set
29797 +CONFIG_PPC_BESTCOMM_GEN_BD=y
29798
29799 #
29800 # Kernel options
29801 @@ -216,6 +212,7 @@
29802 # CONFIG_PREEMPT_NONE is not set
29803 # CONFIG_PREEMPT_VOLUNTARY is not set
29804 CONFIG_PREEMPT=y
29805 +# CONFIG_PREEMPT_RCU is not set
29806 CONFIG_BINFMT_ELF=y
29807 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
29808 # CONFIG_HAVE_AOUT is not set
29809 @@ -225,7 +222,6 @@
29810 CONFIG_ARCH_HAS_WALK_MEMORY=y
29811 CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
29812 # CONFIG_KEXEC is not set
29813 -# CONFIG_CRASH_DUMP is not set
29814 CONFIG_ARCH_FLATMEM_ENABLE=y
29815 CONFIG_ARCH_POPULATES_NODE_MAP=y
29816 CONFIG_SELECT_MEMORY_MODEL=y
29817 @@ -237,14 +233,12 @@
29818 CONFIG_PAGEFLAGS_EXTENDED=y
29819 CONFIG_SPLIT_PTLOCK_CPUS=4
29820 CONFIG_MIGRATION=y
29821 +# CONFIG_RESOURCES_64BIT is not set
29822 # CONFIG_PHYS_ADDR_T_64BIT is not set
29823 CONFIG_ZONE_DMA_FLAG=1
29824 CONFIG_BOUNCE=y
29825 CONFIG_VIRT_TO_BUS=y
29826 CONFIG_UNEVICTABLE_LRU=y
29827 -CONFIG_PPC_4K_PAGES=y
29828 -# CONFIG_PPC_16K_PAGES is not set
29829 -# CONFIG_PPC_64K_PAGES is not set
29830 CONFIG_FORCE_MAX_ZONEORDER=11
29831 CONFIG_PROC_DEVICETREE=y
29832 # CONFIG_CMDLINE_BOOL is not set
29833 @@ -267,7 +261,6 @@
29834 CONFIG_ARCH_SUPPORTS_MSI=y
29835 # CONFIG_PCI_MSI is not set
29836 CONFIG_PCI_LEGACY=y
29837 -# CONFIG_PCI_STUB is not set
29838 # CONFIG_PCCARD is not set
29839 # CONFIG_HOTPLUG_PCI is not set
29840 # CONFIG_HAS_RAPIDIO is not set
29841 @@ -290,7 +283,6 @@
29842 #
29843 # Networking options
29844 #
29845 -CONFIG_COMPAT_NET_DEV_OPS=y
29846 CONFIG_PACKET=y
29847 # CONFIG_PACKET_MMAP is not set
29848 CONFIG_UNIX=y
29849 @@ -341,7 +333,6 @@
29850 # CONFIG_ECONET is not set
29851 # CONFIG_WAN_ROUTER is not set
29852 # CONFIG_NET_SCHED is not set
29853 -# CONFIG_DCB is not set
29854
29855 #
29856 # Network testing
29857 @@ -354,7 +345,6 @@
29858 # CONFIG_AF_RXRPC is not set
29859 # CONFIG_PHONET is not set
29860 # CONFIG_WIRELESS is not set
29861 -# CONFIG_WIMAX is not set
29862 # CONFIG_RFKILL is not set
29863 # CONFIG_NET_9P is not set
29864
29865 @@ -375,7 +365,6 @@
29866 # CONFIG_MTD_DEBUG is not set
29867 # CONFIG_MTD_CONCAT is not set
29868 CONFIG_MTD_PARTITIONS=y
29869 -# CONFIG_MTD_TESTS is not set
29870 # CONFIG_MTD_REDBOOT_PARTS is not set
29871 CONFIG_MTD_CMDLINE_PARTS=y
29872 # CONFIG_MTD_OF_PARTS is not set
29873 @@ -424,7 +413,9 @@
29874 #
29875 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
29876 CONFIG_MTD_PHYSMAP=y
29877 -# CONFIG_MTD_PHYSMAP_COMPAT is not set
29878 +CONFIG_MTD_PHYSMAP_START=0x0
29879 +CONFIG_MTD_PHYSMAP_LEN=0x0
29880 +CONFIG_MTD_PHYSMAP_BANKWIDTH=1
29881 # CONFIG_MTD_PHYSMAP_OF is not set
29882 # CONFIG_MTD_INTEL_VR_NOR is not set
29883 # CONFIG_MTD_PLATRAM is not set
29884 @@ -448,12 +439,6 @@
29885 # CONFIG_MTD_ONENAND is not set
29886
29887 #
29888 -# LPDDR flash memory drivers
29889 -#
29890 -# CONFIG_MTD_LPDDR is not set
29891 -# CONFIG_MTD_QINFO_PROBE is not set
29892 -
29893 -#
29894 # UBI - Unsorted block images
29895 #
29896 # CONFIG_MTD_UBI is not set
29897 @@ -602,9 +587,6 @@
29898 # CONFIG_BROADCOM_PHY is not set
29899 # CONFIG_ICPLUS_PHY is not set
29900 # CONFIG_REALTEK_PHY is not set
29901 -# CONFIG_NATIONAL_PHY is not set
29902 -# CONFIG_STE10XP is not set
29903 -# CONFIG_LSI_ET1011C_PHY is not set
29904 # CONFIG_FIXED_PHY is not set
29905 # CONFIG_MDIO_BITBANG is not set
29906 CONFIG_NET_ETHERNET=y
29907 @@ -639,10 +621,6 @@
29908 # CONFIG_IWLWIFI_LEDS is not set
29909
29910 #
29911 -# Enable WiMAX (Networking options) to see the WiMAX drivers
29912 -#
29913 -
29914 -#
29915 # USB Network Adapters
29916 #
29917 # CONFIG_USB_CATC is not set
29918 @@ -697,9 +675,7 @@
29919 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600
29920 # CONFIG_SERIAL_JSM is not set
29921 CONFIG_UNIX98_PTYS=y
29922 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
29923 # CONFIG_LEGACY_PTYS is not set
29924 -# CONFIG_HVC_UDBG is not set
29925 # CONFIG_IPMI_HANDLER is not set
29926 CONFIG_HW_RANDOM=y
29927 # CONFIG_NVRAM is not set
29928 @@ -764,6 +740,8 @@
29929 # Miscellaneous I2C Chip support
29930 #
29931 # CONFIG_DS1682 is not set
29932 +# CONFIG_EEPROM_AT24 is not set
29933 +CONFIG_EEPROM_LEGACY=m
29934 # CONFIG_SENSORS_PCF8574 is not set
29935 # CONFIG_PCF8575 is not set
29936 # CONFIG_SENSORS_PCA9539 is not set
29937 @@ -796,12 +774,10 @@
29938 # CONFIG_MFD_CORE is not set
29939 # CONFIG_MFD_SM501 is not set
29940 # CONFIG_HTC_PASIC3 is not set
29941 -# CONFIG_TWL4030_CORE is not set
29942 # CONFIG_MFD_TMIO is not set
29943 # CONFIG_PMIC_DA903X is not set
29944 # CONFIG_MFD_WM8400 is not set
29945 # CONFIG_MFD_WM8350_I2C is not set
29946 -# CONFIG_MFD_PCF50633 is not set
29947 # CONFIG_REGULATOR is not set
29948
29949 #
29950 @@ -861,7 +837,6 @@
29951 #
29952 # CONFIG_USB_C67X00_HCD is not set
29953 # CONFIG_USB_EHCI_HCD is not set
29954 -# CONFIG_USB_OXU210HP_HCD is not set
29955 # CONFIG_USB_ISP116X_HCD is not set
29956 # CONFIG_USB_ISP1760_HCD is not set
29957 CONFIG_USB_OHCI_HCD=m
29958 @@ -889,17 +864,18 @@
29959 # CONFIG_USB_TMC is not set
29960
29961 #
29962 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
29963 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
29964 #
29965
29966 #
29967 -# see USB_STORAGE Help for more information
29968 +# may also be needed; see USB_STORAGE Help for more information
29969 #
29970 CONFIG_USB_STORAGE=m
29971 # CONFIG_USB_STORAGE_DEBUG is not set
29972 # CONFIG_USB_STORAGE_DATAFAB is not set
29973 # CONFIG_USB_STORAGE_FREECOM is not set
29974 # CONFIG_USB_STORAGE_ISD200 is not set
29975 +# CONFIG_USB_STORAGE_DPCM is not set
29976 # CONFIG_USB_STORAGE_USBAT is not set
29977 # CONFIG_USB_STORAGE_SDDR09 is not set
29978 # CONFIG_USB_STORAGE_SDDR55 is not set
29979 @@ -945,10 +921,6 @@
29980 # CONFIG_USB_ISIGHTFW is not set
29981 # CONFIG_USB_VST is not set
29982 # CONFIG_USB_GADGET is not set
29983 -
29984 -#
29985 -# OTG and related infrastructure
29986 -#
29987 # CONFIG_UWB is not set
29988 # CONFIG_MMC is not set
29989 # CONFIG_MEMSTICK is not set
29990 @@ -1011,6 +983,7 @@
29991 # CONFIG_DMADEVICES is not set
29992 # CONFIG_UIO is not set
29993 # CONFIG_STAGING is not set
29994 +CONFIG_STAGING_EXCLUDE_BUILD=y
29995
29996 #
29997 # File systems
29998 @@ -1031,7 +1004,6 @@
29999 CONFIG_FILE_LOCKING=y
30000 # CONFIG_XFS_FS is not set
30001 # CONFIG_OCFS2_FS is not set
30002 -# CONFIG_BTRFS_FS is not set
30003 # CONFIG_DNOTIFY is not set
30004 # CONFIG_INOTIFY is not set
30005 # CONFIG_QUOTA is not set
30006 @@ -1067,7 +1039,10 @@
30007 # CONFIG_TMPFS_POSIX_ACL is not set
30008 # CONFIG_HUGETLB_PAGE is not set
30009 # CONFIG_CONFIGFS_FS is not set
30010 -CONFIG_MISC_FILESYSTEMS=y
30011 +
30012 +#
30013 +# Miscellaneous filesystems
30014 +#
30015 # CONFIG_ADFS_FS is not set
30016 # CONFIG_AFFS_FS is not set
30017 # CONFIG_HFS_FS is not set
30018 @@ -1087,7 +1062,6 @@
30019 CONFIG_JFFS2_RTIME=y
30020 # CONFIG_JFFS2_RUBIN is not set
30021 # CONFIG_CRAMFS is not set
30022 -# CONFIG_SQUASHFS is not set
30023 # CONFIG_VXFS_FS is not set
30024 # CONFIG_MINIX_FS is not set
30025 # CONFIG_OMFS_FS is not set
30026 @@ -1167,7 +1141,6 @@
30027 # Library routines
30028 #
30029 CONFIG_BITREVERSE=y
30030 -CONFIG_GENERIC_FIND_LAST_BIT=y
30031 # CONFIG_CRC_CCITT is not set
30032 # CONFIG_CRC16 is not set
30033 # CONFIG_CRC_T10DIF is not set
30034 @@ -1200,8 +1173,6 @@
30035 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
30036 # CONFIG_LATENCYTOP is not set
30037 CONFIG_HAVE_FUNCTION_TRACER=y
30038 -CONFIG_HAVE_DYNAMIC_FTRACE=y
30039 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
30040
30041 #
30042 # Tracers
30043 @@ -1209,7 +1180,6 @@
30044 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
30045 # CONFIG_SAMPLES is not set
30046 CONFIG_HAVE_ARCH_KGDB=y
30047 -CONFIG_PRINT_STACK_DEPTH=64
30048 # CONFIG_IRQSTACKS is not set
30049 # CONFIG_BOOTX_TEXT is not set
30050 # CONFIG_PPC_EARLY_DEBUG is not set
30051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/52xx/tqm5200_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/tqm5200_defconfig
30052 --- linux-2.6.29.owrt/arch/powerpc/configs/52xx/tqm5200_defconfig 2009-05-10 22:04:40.000000000 +0200
30053 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/52xx/tqm5200_defconfig 2009-05-10 23:48:28.000000000 +0200
30054 @@ -1,7 +1,7 @@
30055 #
30056 # Automatically generated make config: don't edit
30057 -# Linux kernel version: 2.6.29-rc2
30058 -# Mon Jan 26 21:42:58 2009
30059 +# Linux kernel version: 2.6.28-rc4
30060 +# Thu Nov 13 02:09:30 2008
30061 #
30062 # CONFIG_PPC64 is not set
30063
30064 @@ -43,7 +43,7 @@
30065 CONFIG_PPC=y
30066 CONFIG_EARLY_PRINTK=y
30067 CONFIG_GENERIC_NVRAM=y
30068 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
30069 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
30070 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
30071 CONFIG_PPC_OF=y
30072 CONFIG_OF=y
30073 @@ -71,23 +71,14 @@
30074 # CONFIG_BSD_PROCESS_ACCT is not set
30075 # CONFIG_TASKSTATS is not set
30076 # CONFIG_AUDIT is not set
30077 -
30078 -#
30079 -# RCU Subsystem
30080 -#
30081 -CONFIG_CLASSIC_RCU=y
30082 -# CONFIG_TREE_RCU is not set
30083 -# CONFIG_PREEMPT_RCU is not set
30084 -# CONFIG_TREE_RCU_TRACE is not set
30085 -# CONFIG_PREEMPT_RCU_TRACE is not set
30086 # CONFIG_IKCONFIG is not set
30087 CONFIG_LOG_BUF_SHIFT=14
30088 +# CONFIG_CGROUPS is not set
30089 CONFIG_GROUP_SCHED=y
30090 CONFIG_FAIR_GROUP_SCHED=y
30091 # CONFIG_RT_GROUP_SCHED is not set
30092 CONFIG_USER_SCHED=y
30093 # CONFIG_CGROUP_SCHED is not set
30094 -# CONFIG_CGROUPS is not set
30095 CONFIG_SYSFS_DEPRECATED=y
30096 CONFIG_SYSFS_DEPRECATED_V2=y
30097 # CONFIG_RELAY is not set
30098 @@ -119,6 +110,7 @@
30099 CONFIG_SLUB=y
30100 # CONFIG_SLOB is not set
30101 # CONFIG_PROFILING is not set
30102 +# CONFIG_MARKERS is not set
30103 CONFIG_HAVE_OPROFILE=y
30104 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
30105 CONFIG_HAVE_IOREMAP_PROT=y
30106 @@ -129,6 +121,7 @@
30107 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
30108 CONFIG_SLABINFO=y
30109 CONFIG_RT_MUTEXES=y
30110 +# CONFIG_TINY_SHMEM is not set
30111 CONFIG_BASE_SMALL=0
30112 CONFIG_MODULES=y
30113 # CONFIG_MODULE_FORCE_LOAD is not set
30114 @@ -136,9 +129,11 @@
30115 # CONFIG_MODULE_FORCE_UNLOAD is not set
30116 CONFIG_MODVERSIONS=y
30117 # CONFIG_MODULE_SRCVERSION_ALL is not set
30118 +CONFIG_KMOD=y
30119 CONFIG_BLOCK=y
30120 # CONFIG_LBD is not set
30121 # CONFIG_BLK_DEV_IO_TRACE is not set
30122 +# CONFIG_LSF is not set
30123 # CONFIG_BLK_DEV_BSG is not set
30124 # CONFIG_BLK_DEV_INTEGRITY is not set
30125
30126 @@ -154,6 +149,7 @@
30127 # CONFIG_DEFAULT_CFQ is not set
30128 # CONFIG_DEFAULT_NOOP is not set
30129 CONFIG_DEFAULT_IOSCHED="anticipatory"
30130 +CONFIG_CLASSIC_RCU=y
30131 # CONFIG_FREEZER is not set
30132
30133 #
30134 @@ -192,9 +188,9 @@
30135 # CONFIG_TAU is not set
30136 # CONFIG_FSL_ULI1575 is not set
30137 CONFIG_PPC_BESTCOMM=y
30138 -CONFIG_PPC_BESTCOMM_ATA=y
30139 +# CONFIG_PPC_BESTCOMM_ATA is not set
30140 CONFIG_PPC_BESTCOMM_FEC=y
30141 -# CONFIG_SIMPLE_GPIO is not set
30142 +# CONFIG_PPC_BESTCOMM_GEN_BD is not set
30143
30144 #
30145 # Kernel options
30146 @@ -221,7 +217,6 @@
30147 CONFIG_ARCH_HAS_WALK_MEMORY=y
30148 CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
30149 # CONFIG_KEXEC is not set
30150 -# CONFIG_CRASH_DUMP is not set
30151 CONFIG_ARCH_FLATMEM_ENABLE=y
30152 CONFIG_ARCH_POPULATES_NODE_MAP=y
30153 CONFIG_SELECT_MEMORY_MODEL=y
30154 @@ -233,14 +228,12 @@
30155 CONFIG_PAGEFLAGS_EXTENDED=y
30156 CONFIG_SPLIT_PTLOCK_CPUS=4
30157 CONFIG_MIGRATION=y
30158 +# CONFIG_RESOURCES_64BIT is not set
30159 # CONFIG_PHYS_ADDR_T_64BIT is not set
30160 CONFIG_ZONE_DMA_FLAG=1
30161 CONFIG_BOUNCE=y
30162 CONFIG_VIRT_TO_BUS=y
30163 CONFIG_UNEVICTABLE_LRU=y
30164 -CONFIG_PPC_4K_PAGES=y
30165 -# CONFIG_PPC_16K_PAGES is not set
30166 -# CONFIG_PPC_64K_PAGES is not set
30167 CONFIG_FORCE_MAX_ZONEORDER=11
30168 CONFIG_PROC_DEVICETREE=y
30169 # CONFIG_CMDLINE_BOOL is not set
30170 @@ -281,7 +274,6 @@
30171 #
30172 # Networking options
30173 #
30174 -CONFIG_COMPAT_NET_DEV_OPS=y
30175 CONFIG_PACKET=y
30176 # CONFIG_PACKET_MMAP is not set
30177 CONFIG_UNIX=y
30178 @@ -338,7 +330,6 @@
30179 # CONFIG_ECONET is not set
30180 # CONFIG_WAN_ROUTER is not set
30181 # CONFIG_NET_SCHED is not set
30182 -# CONFIG_DCB is not set
30183
30184 #
30185 # Network testing
30186 @@ -351,7 +342,6 @@
30187 # CONFIG_AF_RXRPC is not set
30188 # CONFIG_PHONET is not set
30189 # CONFIG_WIRELESS is not set
30190 -# CONFIG_WIMAX is not set
30191 # CONFIG_RFKILL is not set
30192 # CONFIG_NET_9P is not set
30193
30194 @@ -374,7 +364,6 @@
30195 # CONFIG_MTD_DEBUG is not set
30196 CONFIG_MTD_CONCAT=y
30197 CONFIG_MTD_PARTITIONS=y
30198 -# CONFIG_MTD_TESTS is not set
30199 # CONFIG_MTD_REDBOOT_PARTS is not set
30200 CONFIG_MTD_CMDLINE_PARTS=y
30201 # CONFIG_MTD_OF_PARTS is not set
30202 @@ -444,12 +433,6 @@
30203 # CONFIG_MTD_ONENAND is not set
30204
30205 #
30206 -# LPDDR flash memory drivers
30207 -#
30208 -# CONFIG_MTD_LPDDR is not set
30209 -# CONFIG_MTD_QINFO_PROBE is not set
30210 -
30211 -#
30212 # UBI - Unsorted block images
30213 #
30214 # CONFIG_MTD_UBI is not set
30215 @@ -513,7 +496,6 @@
30216 # CONFIG_SCSI_SRP_ATTRS is not set
30217 CONFIG_SCSI_LOWLEVEL=y
30218 # CONFIG_ISCSI_TCP is not set
30219 -# CONFIG_LIBFC is not set
30220 # CONFIG_SCSI_DEBUG is not set
30221 # CONFIG_SCSI_DH is not set
30222 CONFIG_ATA=y
30223 @@ -548,9 +530,6 @@
30224 # CONFIG_BROADCOM_PHY is not set
30225 # CONFIG_ICPLUS_PHY is not set
30226 # CONFIG_REALTEK_PHY is not set
30227 -# CONFIG_NATIONAL_PHY is not set
30228 -# CONFIG_STE10XP is not set
30229 -# CONFIG_LSI_ET1011C_PHY is not set
30230 # CONFIG_FIXED_PHY is not set
30231 # CONFIG_MDIO_BITBANG is not set
30232 CONFIG_NET_ETHERNET=y
30233 @@ -576,10 +555,6 @@
30234 # CONFIG_IWLWIFI_LEDS is not set
30235
30236 #
30237 -# Enable WiMAX (Networking options) to see the WiMAX drivers
30238 -#
30239 -
30240 -#
30241 # USB Network Adapters
30242 #
30243 # CONFIG_USB_CATC is not set
30244 @@ -629,10 +604,8 @@
30245 CONFIG_SERIAL_MPC52xx_CONSOLE=y
30246 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
30247 CONFIG_UNIX98_PTYS=y
30248 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
30249 CONFIG_LEGACY_PTYS=y
30250 CONFIG_LEGACY_PTY_COUNT=256
30251 -# CONFIG_HVC_UDBG is not set
30252 # CONFIG_IPMI_HANDLER is not set
30253 # CONFIG_HW_RANDOM is not set
30254 # CONFIG_NVRAM is not set
30255 @@ -672,6 +645,8 @@
30256 # Miscellaneous I2C Chip support
30257 #
30258 # CONFIG_DS1682 is not set
30259 +# CONFIG_EEPROM_AT24 is not set
30260 +# CONFIG_EEPROM_LEGACY is not set
30261 # CONFIG_SENSORS_PCF8574 is not set
30262 # CONFIG_PCF8575 is not set
30263 # CONFIG_SENSORS_PCA9539 is not set
30264 @@ -700,7 +675,6 @@
30265 # CONFIG_SENSORS_ADT7462 is not set
30266 # CONFIG_SENSORS_ADT7470 is not set
30267 # CONFIG_SENSORS_ADT7473 is not set
30268 -# CONFIG_SENSORS_ADT7475 is not set
30269 # CONFIG_SENSORS_ATXP1 is not set
30270 # CONFIG_SENSORS_DS1621 is not set
30271 # CONFIG_SENSORS_F71805F is not set
30272 @@ -720,7 +694,6 @@
30273 # CONFIG_SENSORS_LM90 is not set
30274 # CONFIG_SENSORS_LM92 is not set
30275 # CONFIG_SENSORS_LM93 is not set
30276 -# CONFIG_SENSORS_LTC4245 is not set
30277 # CONFIG_SENSORS_MAX1619 is not set
30278 # CONFIG_SENSORS_MAX6650 is not set
30279 # CONFIG_SENSORS_PC87360 is not set
30280 @@ -769,12 +742,10 @@
30281 # CONFIG_MFD_CORE is not set
30282 # CONFIG_MFD_SM501 is not set
30283 # CONFIG_HTC_PASIC3 is not set
30284 -# CONFIG_TWL4030_CORE is not set
30285 # CONFIG_MFD_TMIO is not set
30286 # CONFIG_PMIC_DA903X is not set
30287 # CONFIG_MFD_WM8400 is not set
30288 # CONFIG_MFD_WM8350_I2C is not set
30289 -# CONFIG_MFD_PCF50633 is not set
30290 # CONFIG_REGULATOR is not set
30291
30292 #
30293 @@ -832,7 +803,6 @@
30294 # USB Host Controller Drivers
30295 #
30296 # CONFIG_USB_C67X00_HCD is not set
30297 -# CONFIG_USB_OXU210HP_HCD is not set
30298 # CONFIG_USB_ISP116X_HCD is not set
30299 # CONFIG_USB_ISP1760_HCD is not set
30300 CONFIG_USB_OHCI_HCD=y
30301 @@ -857,17 +827,18 @@
30302 # CONFIG_USB_TMC is not set
30303
30304 #
30305 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
30306 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
30307 #
30308
30309 #
30310 -# see USB_STORAGE Help for more information
30311 +# may also be needed; see USB_STORAGE Help for more information
30312 #
30313 CONFIG_USB_STORAGE=y
30314 # CONFIG_USB_STORAGE_DEBUG is not set
30315 # CONFIG_USB_STORAGE_DATAFAB is not set
30316 # CONFIG_USB_STORAGE_FREECOM is not set
30317 # CONFIG_USB_STORAGE_ISD200 is not set
30318 +# CONFIG_USB_STORAGE_DPCM is not set
30319 # CONFIG_USB_STORAGE_USBAT is not set
30320 # CONFIG_USB_STORAGE_SDDR09 is not set
30321 # CONFIG_USB_STORAGE_SDDR55 is not set
30322 @@ -913,10 +884,6 @@
30323 # CONFIG_USB_ISIGHTFW is not set
30324 # CONFIG_USB_VST is not set
30325 # CONFIG_USB_GADGET is not set
30326 -
30327 -#
30328 -# OTG and related infrastructure
30329 -#
30330 # CONFIG_MMC is not set
30331 # CONFIG_MEMSTICK is not set
30332 # CONFIG_NEW_LEDS is not set
30333 @@ -980,6 +947,7 @@
30334 # CONFIG_DMADEVICES is not set
30335 # CONFIG_UIO is not set
30336 # CONFIG_STAGING is not set
30337 +CONFIG_STAGING_EXCLUDE_BUILD=y
30338
30339 #
30340 # File systems
30341 @@ -1000,7 +968,6 @@
30342 CONFIG_FILE_LOCKING=y
30343 # CONFIG_XFS_FS is not set
30344 # CONFIG_OCFS2_FS is not set
30345 -# CONFIG_BTRFS_FS is not set
30346 CONFIG_DNOTIFY=y
30347 CONFIG_INOTIFY=y
30348 CONFIG_INOTIFY_USER=y
30349 @@ -1037,7 +1004,10 @@
30350 # CONFIG_TMPFS_POSIX_ACL is not set
30351 # CONFIG_HUGETLB_PAGE is not set
30352 # CONFIG_CONFIGFS_FS is not set
30353 -CONFIG_MISC_FILESYSTEMS=y
30354 +
30355 +#
30356 +# Miscellaneous filesystems
30357 +#
30358 # CONFIG_ADFS_FS is not set
30359 # CONFIG_AFFS_FS is not set
30360 # CONFIG_HFS_FS is not set
30361 @@ -1057,7 +1027,6 @@
30362 CONFIG_JFFS2_RTIME=y
30363 # CONFIG_JFFS2_RUBIN is not set
30364 CONFIG_CRAMFS=y
30365 -# CONFIG_SQUASHFS is not set
30366 # CONFIG_VXFS_FS is not set
30367 # CONFIG_MINIX_FS is not set
30368 # CONFIG_OMFS_FS is not set
30369 @@ -1154,7 +1123,6 @@
30370 # Library routines
30371 #
30372 CONFIG_BITREVERSE=y
30373 -CONFIG_GENERIC_FIND_LAST_BIT=y
30374 # CONFIG_CRC_CCITT is not set
30375 # CONFIG_CRC16 is not set
30376 # CONFIG_CRC_T10DIF is not set
30377 @@ -1206,7 +1174,6 @@
30378 # CONFIG_DEBUG_MEMORY_INIT is not set
30379 # CONFIG_DEBUG_LIST is not set
30380 # CONFIG_DEBUG_SG is not set
30381 -# CONFIG_DEBUG_NOTIFIERS is not set
30382 # CONFIG_BOOT_PRINTK_DELAY is not set
30383 # CONFIG_RCU_TORTURE_TEST is not set
30384 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
30385 @@ -1215,8 +1182,6 @@
30386 # CONFIG_FAULT_INJECTION is not set
30387 # CONFIG_LATENCYTOP is not set
30388 CONFIG_HAVE_FUNCTION_TRACER=y
30389 -CONFIG_HAVE_DYNAMIC_FTRACE=y
30390 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
30391
30392 #
30393 # Tracers
30394 @@ -1225,13 +1190,11 @@
30395 # CONFIG_SCHED_TRACER is not set
30396 # CONFIG_CONTEXT_SWITCH_TRACER is not set
30397 # CONFIG_BOOT_TRACER is not set
30398 -# CONFIG_TRACE_BRANCH_PROFILING is not set
30399 # CONFIG_STACK_TRACER is not set
30400 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
30401 # CONFIG_SAMPLES is not set
30402 CONFIG_HAVE_ARCH_KGDB=y
30403 # CONFIG_KGDB is not set
30404 -CONFIG_PRINT_STACK_DEPTH=64
30405 # CONFIG_DEBUG_STACKOVERFLOW is not set
30406 # CONFIG_DEBUG_STACK_USAGE is not set
30407 # CONFIG_DEBUG_PAGEALLOC is not set
30408 @@ -1258,15 +1221,11 @@
30409 #
30410 # CONFIG_CRYPTO_FIPS is not set
30411 CONFIG_CRYPTO_ALGAPI=y
30412 -CONFIG_CRYPTO_ALGAPI2=y
30413 -CONFIG_CRYPTO_AEAD2=y
30414 +CONFIG_CRYPTO_AEAD=y
30415 CONFIG_CRYPTO_BLKCIPHER=y
30416 -CONFIG_CRYPTO_BLKCIPHER2=y
30417 CONFIG_CRYPTO_HASH=y
30418 -CONFIG_CRYPTO_HASH2=y
30419 -CONFIG_CRYPTO_RNG2=y
30420 +CONFIG_CRYPTO_RNG=y
30421 CONFIG_CRYPTO_MANAGER=y
30422 -CONFIG_CRYPTO_MANAGER2=y
30423 # CONFIG_CRYPTO_GF128MUL is not set
30424 # CONFIG_CRYPTO_NULL is not set
30425 # CONFIG_CRYPTO_CRYPTD is not set
30426 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig
30427 --- linux-2.6.29.owrt/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig 2009-05-10 22:04:40.000000000 +0200
30428 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/83xx/mpc8313_rdb_defconfig 2009-05-10 23:48:28.000000000 +0200
30429 @@ -651,7 +651,7 @@
30430 # CONFIG_NATIONAL_PHY is not set
30431 # CONFIG_STE10XP is not set
30432 # CONFIG_LSI_ET1011C_PHY is not set
30433 -CONFIG_FIXED_PHY=y
30434 +# CONFIG_FIXED_PHY is not set
30435 # CONFIG_MDIO_BITBANG is not set
30436 CONFIG_NET_ETHERNET=y
30437 CONFIG_MII=y
30438 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/linkstation_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/linkstation_defconfig
30439 --- linux-2.6.29.owrt/arch/powerpc/configs/linkstation_defconfig 2009-05-10 22:04:40.000000000 +0200
30440 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/linkstation_defconfig 2009-05-10 23:48:28.000000000 +0200
30441 @@ -1,7 +1,7 @@
30442 #
30443 # Automatically generated make config: don't edit
30444 -# Linux kernel version: 2.6.29-rc6
30445 -# Fri Mar 6 00:07:38 2009
30446 +# Linux kernel version: 2.6.29-rc2
30447 +# Mon Jan 26 15:35:29 2009
30448 #
30449 # CONFIG_PPC64 is not set
30450
30451 @@ -71,15 +71,6 @@
30452 # CONFIG_BSD_PROCESS_ACCT is not set
30453 # CONFIG_TASKSTATS is not set
30454 # CONFIG_AUDIT is not set
30455 -
30456 -#
30457 -# RCU Subsystem
30458 -#
30459 -CONFIG_CLASSIC_RCU=y
30460 -# CONFIG_TREE_RCU is not set
30461 -# CONFIG_PREEMPT_RCU is not set
30462 -# CONFIG_TREE_RCU_TRACE is not set
30463 -# CONFIG_PREEMPT_RCU_TRACE is not set
30464 CONFIG_IKCONFIG=y
30465 CONFIG_IKCONFIG_PROC=y
30466 CONFIG_LOG_BUF_SHIFT=14
30467 @@ -97,7 +88,6 @@
30468 # CONFIG_IPC_NS is not set
30469 # CONFIG_USER_NS is not set
30470 # CONFIG_PID_NS is not set
30471 -# CONFIG_NET_NS is not set
30472 CONFIG_BLK_DEV_INITRD=y
30473 CONFIG_INITRAMFS_SOURCE=""
30474 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
30475 @@ -163,6 +153,11 @@
30476 # CONFIG_DEFAULT_CFQ is not set
30477 # CONFIG_DEFAULT_NOOP is not set
30478 CONFIG_DEFAULT_IOSCHED="anticipatory"
30479 +CONFIG_CLASSIC_RCU=y
30480 +# CONFIG_TREE_RCU is not set
30481 +# CONFIG_PREEMPT_RCU is not set
30482 +# CONFIG_TREE_RCU_TRACE is not set
30483 +# CONFIG_PREEMPT_RCU_TRACE is not set
30484 # CONFIG_FREEZER is not set
30485
30486 #
30487 @@ -299,6 +294,7 @@
30488 #
30489 # Networking options
30490 #
30491 +# CONFIG_NET_NS is not set
30492 CONFIG_COMPAT_NET_DEV_OPS=y
30493 CONFIG_PACKET=y
30494 CONFIG_PACKET_MMAP=y
30495 @@ -512,8 +508,8 @@
30496 CONFIG_MTD_PARTITIONS=y
30497 # CONFIG_MTD_TESTS is not set
30498 # CONFIG_MTD_REDBOOT_PARTS is not set
30499 -CONFIG_MTD_CMDLINE_PARTS=y
30500 -CONFIG_MTD_OF_PARTS=y
30501 +# CONFIG_MTD_CMDLINE_PARTS is not set
30502 +# CONFIG_MTD_OF_PARTS is not set
30503 # CONFIG_MTD_AR7_PARTS is not set
30504
30505 #
30506 @@ -591,6 +587,7 @@
30507 # LPDDR flash memory drivers
30508 #
30509 # CONFIG_MTD_LPDDR is not set
30510 +# CONFIG_MTD_QINFO_PROBE is not set
30511
30512 #
30513 # UBI - Unsorted block images
30514 @@ -620,19 +617,13 @@
30515 # CONFIG_BLK_DEV_HD is not set
30516 CONFIG_MISC_DEVICES=y
30517 # CONFIG_PHANTOM is not set
30518 +# CONFIG_EEPROM_93CX6 is not set
30519 # CONFIG_SGI_IOC4 is not set
30520 # CONFIG_TIFM_CORE is not set
30521 # CONFIG_ICS932S401 is not set
30522 # CONFIG_ENCLOSURE_SERVICES is not set
30523 # CONFIG_HP_ILO is not set
30524 # CONFIG_C2PORT is not set
30525 -
30526 -#
30527 -# EEPROM support
30528 -#
30529 -# CONFIG_EEPROM_AT24 is not set
30530 -CONFIG_EEPROM_LEGACY=m
30531 -# CONFIG_EEPROM_93CX6 is not set
30532 CONFIG_HAVE_IDE=y
30533 # CONFIG_IDE is not set
30534
30535 @@ -848,7 +839,6 @@
30536 # CONFIG_QLA3XXX is not set
30537 # CONFIG_ATL1 is not set
30538 # CONFIG_ATL1E is not set
30539 -# CONFIG_ATL1C is not set
30540 # CONFIG_JME is not set
30541 CONFIG_NETDEV_10000=y
30542 # CONFIG_CHELSIO_T1 is not set
30543 @@ -1047,6 +1037,8 @@
30544 # Miscellaneous I2C Chip support
30545 #
30546 # CONFIG_DS1682 is not set
30547 +# CONFIG_EEPROM_AT24 is not set
30548 +CONFIG_EEPROM_LEGACY=m
30549 # CONFIG_SENSORS_PCF8574 is not set
30550 # CONFIG_PCF8575 is not set
30551 # CONFIG_SENSORS_PCA9539 is not set
30552 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/mpc5200_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/mpc5200_defconfig
30553 --- linux-2.6.29.owrt/arch/powerpc/configs/mpc5200_defconfig 2009-05-10 22:04:40.000000000 +0200
30554 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/mpc5200_defconfig 2009-05-10 23:48:28.000000000 +0200
30555 @@ -1,7 +1,7 @@
30556 #
30557 # Automatically generated make config: don't edit
30558 -# Linux kernel version: 2.6.29-rc2
30559 -# Mon Jan 26 21:40:44 2009
30560 +# Linux kernel version: 2.6.28-rc4
30561 +# Thu Nov 13 02:09:07 2008
30562 #
30563 # CONFIG_PPC64 is not set
30564
30565 @@ -43,7 +43,7 @@
30566 CONFIG_PPC=y
30567 CONFIG_EARLY_PRINTK=y
30568 CONFIG_GENERIC_NVRAM=y
30569 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
30570 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
30571 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
30572 CONFIG_PPC_OF=y
30573 CONFIG_OF=y
30574 @@ -72,19 +72,10 @@
30575 # CONFIG_BSD_PROCESS_ACCT is not set
30576 # CONFIG_TASKSTATS is not set
30577 # CONFIG_AUDIT is not set
30578 -
30579 -#
30580 -# RCU Subsystem
30581 -#
30582 -CONFIG_CLASSIC_RCU=y
30583 -# CONFIG_TREE_RCU is not set
30584 -# CONFIG_PREEMPT_RCU is not set
30585 -# CONFIG_TREE_RCU_TRACE is not set
30586 -# CONFIG_PREEMPT_RCU_TRACE is not set
30587 # CONFIG_IKCONFIG is not set
30588 CONFIG_LOG_BUF_SHIFT=14
30589 -# CONFIG_GROUP_SCHED is not set
30590 # CONFIG_CGROUPS is not set
30591 +# CONFIG_GROUP_SCHED is not set
30592 CONFIG_SYSFS_DEPRECATED=y
30593 CONFIG_SYSFS_DEPRECATED_V2=y
30594 # CONFIG_RELAY is not set
30595 @@ -117,6 +108,7 @@
30596 CONFIG_SLUB=y
30597 # CONFIG_SLOB is not set
30598 # CONFIG_PROFILING is not set
30599 +# CONFIG_MARKERS is not set
30600 CONFIG_HAVE_OPROFILE=y
30601 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
30602 CONFIG_HAVE_IOREMAP_PROT=y
30603 @@ -127,6 +119,7 @@
30604 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
30605 CONFIG_SLABINFO=y
30606 CONFIG_RT_MUTEXES=y
30607 +# CONFIG_TINY_SHMEM is not set
30608 CONFIG_BASE_SMALL=0
30609 CONFIG_MODULES=y
30610 # CONFIG_MODULE_FORCE_LOAD is not set
30611 @@ -134,9 +127,11 @@
30612 # CONFIG_MODULE_FORCE_UNLOAD is not set
30613 # CONFIG_MODVERSIONS is not set
30614 # CONFIG_MODULE_SRCVERSION_ALL is not set
30615 +CONFIG_KMOD=y
30616 CONFIG_BLOCK=y
30617 # CONFIG_LBD is not set
30618 # CONFIG_BLK_DEV_IO_TRACE is not set
30619 +# CONFIG_LSF is not set
30620 # CONFIG_BLK_DEV_BSG is not set
30621 # CONFIG_BLK_DEV_INTEGRITY is not set
30622
30623 @@ -152,6 +147,7 @@
30624 # CONFIG_DEFAULT_CFQ is not set
30625 # CONFIG_DEFAULT_NOOP is not set
30626 CONFIG_DEFAULT_IOSCHED="anticipatory"
30627 +CONFIG_CLASSIC_RCU=y
30628 CONFIG_FREEZER=y
30629
30630 #
30631 @@ -196,7 +192,7 @@
30632 CONFIG_PPC_BESTCOMM=y
30633 CONFIG_PPC_BESTCOMM_ATA=y
30634 CONFIG_PPC_BESTCOMM_FEC=y
30635 -# CONFIG_SIMPLE_GPIO is not set
30636 +CONFIG_PPC_BESTCOMM_GEN_BD=y
30637
30638 #
30639 # Kernel options
30640 @@ -224,7 +220,6 @@
30641 CONFIG_ARCH_HAS_WALK_MEMORY=y
30642 CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
30643 # CONFIG_KEXEC is not set
30644 -# CONFIG_CRASH_DUMP is not set
30645 CONFIG_ARCH_FLATMEM_ENABLE=y
30646 CONFIG_ARCH_POPULATES_NODE_MAP=y
30647 CONFIG_SELECT_MEMORY_MODEL=y
30648 @@ -236,14 +231,12 @@
30649 CONFIG_PAGEFLAGS_EXTENDED=y
30650 CONFIG_SPLIT_PTLOCK_CPUS=4
30651 CONFIG_MIGRATION=y
30652 +# CONFIG_RESOURCES_64BIT is not set
30653 # CONFIG_PHYS_ADDR_T_64BIT is not set
30654 CONFIG_ZONE_DMA_FLAG=1
30655 CONFIG_BOUNCE=y
30656 CONFIG_VIRT_TO_BUS=y
30657 CONFIG_UNEVICTABLE_LRU=y
30658 -CONFIG_PPC_4K_PAGES=y
30659 -# CONFIG_PPC_16K_PAGES is not set
30660 -# CONFIG_PPC_64K_PAGES is not set
30661 CONFIG_FORCE_MAX_ZONEORDER=11
30662 CONFIG_PROC_DEVICETREE=y
30663 # CONFIG_CMDLINE_BOOL is not set
30664 @@ -271,7 +264,6 @@
30665 # CONFIG_PCI_MSI is not set
30666 CONFIG_PCI_LEGACY=y
30667 # CONFIG_PCI_DEBUG is not set
30668 -# CONFIG_PCI_STUB is not set
30669 # CONFIG_PCCARD is not set
30670 # CONFIG_HOTPLUG_PCI is not set
30671 # CONFIG_HAS_RAPIDIO is not set
30672 @@ -294,7 +286,6 @@
30673 #
30674 # Networking options
30675 #
30676 -CONFIG_COMPAT_NET_DEV_OPS=y
30677 CONFIG_PACKET=y
30678 # CONFIG_PACKET_MMAP is not set
30679 CONFIG_UNIX=y
30680 @@ -351,7 +342,6 @@
30681 # CONFIG_ECONET is not set
30682 # CONFIG_WAN_ROUTER is not set
30683 # CONFIG_NET_SCHED is not set
30684 -# CONFIG_DCB is not set
30685
30686 #
30687 # Network testing
30688 @@ -364,7 +354,6 @@
30689 # CONFIG_AF_RXRPC is not set
30690 # CONFIG_PHONET is not set
30691 # CONFIG_WIRELESS is not set
30692 -# CONFIG_WIMAX is not set
30693 # CONFIG_RFKILL is not set
30694 # CONFIG_NET_9P is not set
30695
30696 @@ -387,7 +376,6 @@
30697 # CONFIG_MTD_DEBUG is not set
30698 CONFIG_MTD_CONCAT=y
30699 CONFIG_MTD_PARTITIONS=y
30700 -# CONFIG_MTD_TESTS is not set
30701 # CONFIG_MTD_REDBOOT_PARTS is not set
30702 CONFIG_MTD_CMDLINE_PARTS=y
30703 # CONFIG_MTD_OF_PARTS is not set
30704 @@ -459,12 +447,6 @@
30705 # CONFIG_MTD_ONENAND is not set
30706
30707 #
30708 -# LPDDR flash memory drivers
30709 -#
30710 -# CONFIG_MTD_LPDDR is not set
30711 -# CONFIG_MTD_QINFO_PROBE is not set
30712 -
30713 -#
30714 # UBI - Unsorted block images
30715 #
30716 # CONFIG_MTD_UBI is not set
30717 @@ -492,19 +474,13 @@
30718 # CONFIG_BLK_DEV_HD is not set
30719 CONFIG_MISC_DEVICES=y
30720 # CONFIG_PHANTOM is not set
30721 +# CONFIG_EEPROM_93CX6 is not set
30722 # CONFIG_SGI_IOC4 is not set
30723 # CONFIG_TIFM_CORE is not set
30724 # CONFIG_ICS932S401 is not set
30725 # CONFIG_ENCLOSURE_SERVICES is not set
30726 # CONFIG_HP_ILO is not set
30727 # CONFIG_C2PORT is not set
30728 -
30729 -#
30730 -# EEPROM support
30731 -#
30732 -# CONFIG_EEPROM_AT24 is not set
30733 -# CONFIG_EEPROM_LEGACY is not set
30734 -# CONFIG_EEPROM_93CX6 is not set
30735 CONFIG_HAVE_IDE=y
30736 # CONFIG_IDE is not set
30737
30738 @@ -563,8 +539,6 @@
30739 # CONFIG_MEGARAID_SAS is not set
30740 # CONFIG_SCSI_HPTIOP is not set
30741 # CONFIG_SCSI_BUSLOGIC is not set
30742 -# CONFIG_LIBFC is not set
30743 -# CONFIG_FCOE is not set
30744 # CONFIG_SCSI_DMX3191D is not set
30745 # CONFIG_SCSI_EATA is not set
30746 # CONFIG_SCSI_FUTURE_DOMAIN is not set
30747 @@ -685,9 +659,6 @@
30748 # CONFIG_BROADCOM_PHY is not set
30749 # CONFIG_ICPLUS_PHY is not set
30750 # CONFIG_REALTEK_PHY is not set
30751 -# CONFIG_NATIONAL_PHY is not set
30752 -# CONFIG_STE10XP is not set
30753 -# CONFIG_LSI_ET1011C_PHY is not set
30754 # CONFIG_FIXED_PHY is not set
30755 # CONFIG_MDIO_BITBANG is not set
30756 CONFIG_NET_ETHERNET=y
30757 @@ -722,10 +693,6 @@
30758 # CONFIG_IWLWIFI_LEDS is not set
30759
30760 #
30761 -# Enable WiMAX (Networking options) to see the WiMAX drivers
30762 -#
30763 -
30764 -#
30765 # USB Network Adapters
30766 #
30767 # CONFIG_USB_CATC is not set
30768 @@ -807,11 +774,9 @@
30769 CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
30770 # CONFIG_SERIAL_JSM is not set
30771 CONFIG_UNIX98_PTYS=y
30772 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
30773 CONFIG_LEGACY_PTYS=y
30774 CONFIG_LEGACY_PTY_COUNT=256
30775 # CONFIG_HVC_RTAS is not set
30776 -# CONFIG_HVC_UDBG is not set
30777 # CONFIG_IPMI_HANDLER is not set
30778 # CONFIG_HW_RANDOM is not set
30779 # CONFIG_NVRAM is not set
30780 @@ -879,6 +844,8 @@
30781 # Miscellaneous I2C Chip support
30782 #
30783 # CONFIG_DS1682 is not set
30784 +# CONFIG_EEPROM_AT24 is not set
30785 +# CONFIG_EEPROM_LEGACY is not set
30786 # CONFIG_SENSORS_PCF8574 is not set
30787 # CONFIG_PCF8575 is not set
30788 # CONFIG_SENSORS_PCA9539 is not set
30789 @@ -907,7 +874,6 @@
30790 # CONFIG_SENSORS_ADT7462 is not set
30791 # CONFIG_SENSORS_ADT7470 is not set
30792 # CONFIG_SENSORS_ADT7473 is not set
30793 -# CONFIG_SENSORS_ADT7475 is not set
30794 # CONFIG_SENSORS_ATXP1 is not set
30795 # CONFIG_SENSORS_DS1621 is not set
30796 # CONFIG_SENSORS_I5K_AMB is not set
30797 @@ -928,7 +894,6 @@
30798 # CONFIG_SENSORS_LM90 is not set
30799 # CONFIG_SENSORS_LM92 is not set
30800 # CONFIG_SENSORS_LM93 is not set
30801 -# CONFIG_SENSORS_LTC4245 is not set
30802 # CONFIG_SENSORS_MAX1619 is not set
30803 # CONFIG_SENSORS_MAX6650 is not set
30804 # CONFIG_SENSORS_PC87360 is not set
30805 @@ -988,12 +953,10 @@
30806 # CONFIG_MFD_CORE is not set
30807 # CONFIG_MFD_SM501 is not set
30808 # CONFIG_HTC_PASIC3 is not set
30809 -# CONFIG_TWL4030_CORE is not set
30810 # CONFIG_MFD_TMIO is not set
30811 # CONFIG_PMIC_DA903X is not set
30812 # CONFIG_MFD_WM8400 is not set
30813 # CONFIG_MFD_WM8350_I2C is not set
30814 -# CONFIG_MFD_PCF50633 is not set
30815 # CONFIG_REGULATOR is not set
30816
30817 #
30818 @@ -1088,7 +1051,7 @@
30819 # CONFIG_LCD_ILI9320 is not set
30820 # CONFIG_LCD_PLATFORM is not set
30821 CONFIG_BACKLIGHT_CLASS_DEVICE=y
30822 -CONFIG_BACKLIGHT_GENERIC=y
30823 +# CONFIG_BACKLIGHT_CORGI is not set
30824
30825 #
30826 # Display device support
30827 @@ -1130,22 +1093,21 @@
30828 CONFIG_HID_A4TECH=y
30829 # CONFIG_HID_APPLE is not set
30830 CONFIG_HID_BELKIN=y
30831 +CONFIG_HID_BRIGHT=y
30832 CONFIG_HID_CHERRY=y
30833 # CONFIG_HID_CHICONY is not set
30834 CONFIG_HID_CYPRESS=y
30835 +CONFIG_HID_DELL=y
30836 CONFIG_HID_EZKEY=y
30837 # CONFIG_HID_GYRATION is not set
30838 # CONFIG_HID_LOGITECH is not set
30839 # CONFIG_HID_MICROSOFT is not set
30840 # CONFIG_HID_MONTEREY is not set
30841 -# CONFIG_HID_NTRIG is not set
30842 # CONFIG_HID_PANTHERLORD is not set
30843 # CONFIG_HID_PETALYNX is not set
30844 # CONFIG_HID_SAMSUNG is not set
30845 # CONFIG_HID_SONY is not set
30846 # CONFIG_HID_SUNPLUS is not set
30847 -# CONFIG_GREENASIA_FF is not set
30848 -# CONFIG_HID_TOPSEED is not set
30849 # CONFIG_THRUSTMASTER_FF is not set
30850 # CONFIG_ZEROPLUS_FF is not set
30851 CONFIG_USB_SUPPORT=y
30852 @@ -1175,7 +1137,6 @@
30853 #
30854 # CONFIG_USB_C67X00_HCD is not set
30855 # CONFIG_USB_EHCI_HCD is not set
30856 -# CONFIG_USB_OXU210HP_HCD is not set
30857 # CONFIG_USB_ISP116X_HCD is not set
30858 # CONFIG_USB_ISP1760_HCD is not set
30859 CONFIG_USB_OHCI_HCD=y
30860 @@ -1203,17 +1164,18 @@
30861 # CONFIG_USB_TMC is not set
30862
30863 #
30864 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
30865 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
30866 #
30867
30868 #
30869 -# see USB_STORAGE Help for more information
30870 +# may also be needed; see USB_STORAGE Help for more information
30871 #
30872 CONFIG_USB_STORAGE=y
30873 # CONFIG_USB_STORAGE_DEBUG is not set
30874 # CONFIG_USB_STORAGE_DATAFAB is not set
30875 # CONFIG_USB_STORAGE_FREECOM is not set
30876 # CONFIG_USB_STORAGE_ISD200 is not set
30877 +# CONFIG_USB_STORAGE_DPCM is not set
30878 # CONFIG_USB_STORAGE_USBAT is not set
30879 # CONFIG_USB_STORAGE_SDDR09 is not set
30880 # CONFIG_USB_STORAGE_SDDR55 is not set
30881 @@ -1260,10 +1222,6 @@
30882 # CONFIG_USB_ISIGHTFW is not set
30883 # CONFIG_USB_VST is not set
30884 # CONFIG_USB_GADGET is not set
30885 -
30886 -#
30887 -# OTG and related infrastructure
30888 -#
30889 # CONFIG_UWB is not set
30890 # CONFIG_MMC is not set
30891 # CONFIG_MEMSTICK is not set
30892 @@ -1285,6 +1243,7 @@
30893 # CONFIG_DMADEVICES is not set
30894 # CONFIG_UIO is not set
30895 # CONFIG_STAGING is not set
30896 +CONFIG_STAGING_EXCLUDE_BUILD=y
30897
30898 #
30899 # File systems
30900 @@ -1305,7 +1264,6 @@
30901 CONFIG_FILE_LOCKING=y
30902 # CONFIG_XFS_FS is not set
30903 # CONFIG_OCFS2_FS is not set
30904 -# CONFIG_BTRFS_FS is not set
30905 CONFIG_DNOTIFY=y
30906 CONFIG_INOTIFY=y
30907 CONFIG_INOTIFY_USER=y
30908 @@ -1342,7 +1300,10 @@
30909 # CONFIG_TMPFS_POSIX_ACL is not set
30910 # CONFIG_HUGETLB_PAGE is not set
30911 # CONFIG_CONFIGFS_FS is not set
30912 -CONFIG_MISC_FILESYSTEMS=y
30913 +
30914 +#
30915 +# Miscellaneous filesystems
30916 +#
30917 # CONFIG_ADFS_FS is not set
30918 # CONFIG_AFFS_FS is not set
30919 # CONFIG_HFS_FS is not set
30920 @@ -1362,7 +1323,6 @@
30921 CONFIG_JFFS2_RTIME=y
30922 # CONFIG_JFFS2_RUBIN is not set
30923 CONFIG_CRAMFS=y
30924 -# CONFIG_SQUASHFS is not set
30925 # CONFIG_VXFS_FS is not set
30926 # CONFIG_MINIX_FS is not set
30927 # CONFIG_OMFS_FS is not set
30928 @@ -1443,7 +1403,6 @@
30929 # Library routines
30930 #
30931 CONFIG_BITREVERSE=y
30932 -CONFIG_GENERIC_FIND_LAST_BIT=y
30933 # CONFIG_CRC_CCITT is not set
30934 # CONFIG_CRC16 is not set
30935 # CONFIG_CRC_T10DIF is not set
30936 @@ -1495,7 +1454,6 @@
30937 # CONFIG_DEBUG_MEMORY_INIT is not set
30938 # CONFIG_DEBUG_LIST is not set
30939 # CONFIG_DEBUG_SG is not set
30940 -# CONFIG_DEBUG_NOTIFIERS is not set
30941 # CONFIG_BOOT_PRINTK_DELAY is not set
30942 # CONFIG_RCU_TORTURE_TEST is not set
30943 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
30944 @@ -1504,8 +1462,6 @@
30945 # CONFIG_FAULT_INJECTION is not set
30946 # CONFIG_LATENCYTOP is not set
30947 CONFIG_HAVE_FUNCTION_TRACER=y
30948 -CONFIG_HAVE_DYNAMIC_FTRACE=y
30949 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
30950
30951 #
30952 # Tracers
30953 @@ -1514,13 +1470,11 @@
30954 # CONFIG_SCHED_TRACER is not set
30955 # CONFIG_CONTEXT_SWITCH_TRACER is not set
30956 # CONFIG_BOOT_TRACER is not set
30957 -# CONFIG_TRACE_BRANCH_PROFILING is not set
30958 # CONFIG_STACK_TRACER is not set
30959 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
30960 # CONFIG_SAMPLES is not set
30961 CONFIG_HAVE_ARCH_KGDB=y
30962 # CONFIG_KGDB is not set
30963 -CONFIG_PRINT_STACK_DEPTH=64
30964 # CONFIG_DEBUG_STACKOVERFLOW is not set
30965 # CONFIG_DEBUG_STACK_USAGE is not set
30966 # CONFIG_DEBUG_PAGEALLOC is not set
30967 @@ -1547,15 +1501,11 @@
30968 #
30969 # CONFIG_CRYPTO_FIPS is not set
30970 CONFIG_CRYPTO_ALGAPI=y
30971 -CONFIG_CRYPTO_ALGAPI2=y
30972 -CONFIG_CRYPTO_AEAD2=y
30973 +CONFIG_CRYPTO_AEAD=y
30974 CONFIG_CRYPTO_BLKCIPHER=y
30975 -CONFIG_CRYPTO_BLKCIPHER2=y
30976 CONFIG_CRYPTO_HASH=y
30977 -CONFIG_CRYPTO_HASH2=y
30978 -CONFIG_CRYPTO_RNG2=y
30979 +CONFIG_CRYPTO_RNG=y
30980 CONFIG_CRYPTO_MANAGER=y
30981 -CONFIG_CRYPTO_MANAGER2=y
30982 # CONFIG_CRYPTO_GF128MUL is not set
30983 # CONFIG_CRYPTO_NULL is not set
30984 # CONFIG_CRYPTO_CRYPTD is not set
30985 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/ps3_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/ps3_defconfig
30986 --- linux-2.6.29.owrt/arch/powerpc/configs/ps3_defconfig 2009-05-10 22:04:40.000000000 +0200
30987 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/ps3_defconfig 2009-05-10 23:48:28.000000000 +0200
30988 @@ -1,7 +1,7 @@
30989 #
30990 # Automatically generated make config: don't edit
30991 -# Linux kernel version: 2.6.29-rc8
30992 -# Fri Mar 13 09:28:45 2009
30993 +# Linux kernel version: 2.6.27-rc3
30994 +# Wed Aug 20 08:16:53 2008
30995 #
30996 CONFIG_PPC64=y
30997
30998 @@ -16,14 +16,13 @@
30999 CONFIG_ALTIVEC=y
31000 # CONFIG_VSX is not set
31001 CONFIG_PPC_STD_MMU=y
31002 -CONFIG_PPC_STD_MMU_64=y
31003 CONFIG_PPC_MM_SLICES=y
31004 CONFIG_VIRT_CPU_ACCOUNTING=y
31005 CONFIG_SMP=y
31006 CONFIG_NR_CPUS=2
31007 CONFIG_64BIT=y
31008 CONFIG_WORD_SIZE=64
31009 -CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
31010 +CONFIG_PPC_MERGE=y
31011 CONFIG_MMU=y
31012 CONFIG_GENERIC_CMOS_UPDATE=y
31013 CONFIG_GENERIC_TIME=y
31014 @@ -47,7 +46,7 @@
31015 CONFIG_EARLY_PRINTK=y
31016 CONFIG_COMPAT=y
31017 CONFIG_SYSVIPC_COMPAT=y
31018 -CONFIG_SCHED_OMIT_FRAME_POINTER=y
31019 +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
31020 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
31021 CONFIG_PPC_OF=y
31022 CONFIG_OF=y
31023 @@ -75,19 +74,10 @@
31024 # CONFIG_BSD_PROCESS_ACCT is not set
31025 # CONFIG_TASKSTATS is not set
31026 # CONFIG_AUDIT is not set
31027 -
31028 -#
31029 -# RCU Subsystem
31030 -#
31031 -CONFIG_CLASSIC_RCU=y
31032 -# CONFIG_TREE_RCU is not set
31033 -# CONFIG_PREEMPT_RCU is not set
31034 -# CONFIG_TREE_RCU_TRACE is not set
31035 -# CONFIG_PREEMPT_RCU_TRACE is not set
31036 # CONFIG_IKCONFIG is not set
31037 CONFIG_LOG_BUF_SHIFT=17
31038 -# CONFIG_GROUP_SCHED is not set
31039 # CONFIG_CGROUPS is not set
31040 +# CONFIG_GROUP_SCHED is not set
31041 CONFIG_SYSFS_DEPRECATED=y
31042 CONFIG_SYSFS_DEPRECATED_V2=y
31043 # CONFIG_RELAY is not set
31044 @@ -96,13 +86,11 @@
31045 # CONFIG_IPC_NS is not set
31046 # CONFIG_USER_NS is not set
31047 # CONFIG_PID_NS is not set
31048 -# CONFIG_NET_NS is not set
31049 CONFIG_BLK_DEV_INITRD=y
31050 CONFIG_INITRAMFS_SOURCE=""
31051 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
31052 CONFIG_SYSCTL=y
31053 -CONFIG_ANON_INODES=y
31054 -CONFIG_EMBEDDED=y
31055 +# CONFIG_EMBEDDED is not set
31056 CONFIG_SYSCTL_SYSCALL=y
31057 CONFIG_KALLSYMS=y
31058 CONFIG_KALLSYMS_ALL=y
31059 @@ -111,36 +99,37 @@
31060 CONFIG_PRINTK=y
31061 CONFIG_BUG=y
31062 CONFIG_ELF_CORE=y
31063 +# CONFIG_COMPAT_BRK is not set
31064 CONFIG_BASE_FULL=y
31065 CONFIG_FUTEX=y
31066 +CONFIG_ANON_INODES=y
31067 CONFIG_EPOLL=y
31068 CONFIG_SIGNALFD=y
31069 CONFIG_TIMERFD=y
31070 CONFIG_EVENTFD=y
31071 CONFIG_SHMEM=y
31072 -CONFIG_AIO=y
31073 CONFIG_VM_EVENT_COUNTERS=y
31074 -# CONFIG_COMPAT_BRK is not set
31075 CONFIG_SLAB=y
31076 # CONFIG_SLUB is not set
31077 # CONFIG_SLOB is not set
31078 CONFIG_PROFILING=y
31079 -CONFIG_TRACEPOINTS=y
31080 -CONFIG_MARKERS=y
31081 +# CONFIG_MARKERS is not set
31082 CONFIG_OPROFILE=m
31083 CONFIG_HAVE_OPROFILE=y
31084 # CONFIG_KPROBES is not set
31085 CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
31086 -CONFIG_HAVE_SYSCALL_WRAPPERS=y
31087 CONFIG_HAVE_IOREMAP_PROT=y
31088 CONFIG_HAVE_KPROBES=y
31089 CONFIG_HAVE_KRETPROBES=y
31090 CONFIG_HAVE_ARCH_TRACEHOOK=y
31091 CONFIG_HAVE_DMA_ATTRS=y
31092 CONFIG_USE_GENERIC_SMP_HELPERS=y
31093 +# CONFIG_HAVE_CLK is not set
31094 +CONFIG_PROC_PAGE_MONITOR=y
31095 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
31096 CONFIG_SLABINFO=y
31097 CONFIG_RT_MUTEXES=y
31098 +# CONFIG_TINY_SHMEM is not set
31099 CONFIG_BASE_SMALL=0
31100 CONFIG_MODULES=y
31101 # CONFIG_MODULE_FORCE_LOAD is not set
31102 @@ -148,6 +137,7 @@
31103 # CONFIG_MODULE_FORCE_UNLOAD is not set
31104 # CONFIG_MODVERSIONS is not set
31105 # CONFIG_MODULE_SRCVERSION_ALL is not set
31106 +CONFIG_KMOD=y
31107 CONFIG_STOP_MACHINE=y
31108 CONFIG_BLOCK=y
31109 # CONFIG_BLK_DEV_IO_TRACE is not set
31110 @@ -167,7 +157,7 @@
31111 # CONFIG_DEFAULT_CFQ is not set
31112 # CONFIG_DEFAULT_NOOP is not set
31113 CONFIG_DEFAULT_IOSCHED="anticipatory"
31114 -# CONFIG_FREEZER is not set
31115 +CONFIG_CLASSIC_RCU=y
31116
31117 #
31118 # Platform support
31119 @@ -193,20 +183,18 @@
31120 CONFIG_PS3_DISK=y
31121 CONFIG_PS3_ROM=y
31122 CONFIG_PS3_FLASH=y
31123 -CONFIG_PS3_VRAM=m
31124 +CONFIG_OPROFILE_PS3=y
31125 CONFIG_PS3_LPM=m
31126 CONFIG_PPC_CELL=y
31127 # CONFIG_PPC_CELL_NATIVE is not set
31128 # CONFIG_PPC_IBM_CELL_BLADE is not set
31129 # CONFIG_PPC_CELLEB is not set
31130 -# CONFIG_PPC_CELL_QPACE is not set
31131
31132 #
31133 # Cell Broadband Engine options
31134 #
31135 CONFIG_SPU_FS=y
31136 CONFIG_SPU_FS_64K_LS=y
31137 -# CONFIG_SPU_TRACE is not set
31138 CONFIG_SPU_BASE=y
31139 # CONFIG_PQ2ADS is not set
31140 # CONFIG_IPIC is not set
31141 @@ -222,7 +210,6 @@
31142 # CONFIG_GENERIC_IOMAP is not set
31143 # CONFIG_CPU_FREQ is not set
31144 # CONFIG_FSL_ULI1575 is not set
31145 -# CONFIG_SIMPLE_GPIO is not set
31146
31147 #
31148 # Kernel options
31149 @@ -242,8 +229,6 @@
31150 # CONFIG_PREEMPT is not set
31151 CONFIG_BINFMT_ELF=y
31152 CONFIG_COMPAT_BINFMT_ELF=y
31153 -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
31154 -# CONFIG_HAVE_AOUT is not set
31155 CONFIG_BINFMT_MISC=y
31156 CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
31157 # CONFIG_IOMMU_VMERGE is not set
31158 @@ -266,6 +251,7 @@
31159 CONFIG_SPARSEMEM_MANUAL=y
31160 CONFIG_SPARSEMEM=y
31161 CONFIG_HAVE_MEMORY_PRESENT=y
31162 +# CONFIG_SPARSEMEM_STATIC is not set
31163 CONFIG_SPARSEMEM_EXTREME=y
31164 CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
31165 # CONFIG_SPARSEMEM_VMEMMAP is not set
31166 @@ -275,14 +261,11 @@
31167 CONFIG_PAGEFLAGS_EXTENDED=y
31168 CONFIG_SPLIT_PTLOCK_CPUS=4
31169 CONFIG_MIGRATION=y
31170 -CONFIG_PHYS_ADDR_T_64BIT=y
31171 +CONFIG_RESOURCES_64BIT=y
31172 CONFIG_ZONE_DMA_FLAG=1
31173 CONFIG_BOUNCE=y
31174 -CONFIG_UNEVICTABLE_LRU=y
31175 CONFIG_ARCH_MEMORY_PROBE=y
31176 CONFIG_PPC_HAS_HASH_64K=y
31177 -CONFIG_PPC_4K_PAGES=y
31178 -# CONFIG_PPC_16K_PAGES is not set
31179 # CONFIG_PPC_64K_PAGES is not set
31180 CONFIG_FORCE_MAX_ZONEORDER=13
31181 CONFIG_SCHED_SMT=y
31182 @@ -316,7 +299,6 @@
31183 #
31184 # Networking options
31185 #
31186 -CONFIG_COMPAT_NET_DEV_OPS=y
31187 CONFIG_PACKET=y
31188 CONFIG_PACKET_MMAP=y
31189 CONFIG_UNIX=y
31190 @@ -379,7 +361,6 @@
31191 # CONFIG_TIPC is not set
31192 # CONFIG_ATM is not set
31193 # CONFIG_BRIDGE is not set
31194 -# CONFIG_NET_DSA is not set
31195 # CONFIG_VLAN_8021Q is not set
31196 # CONFIG_DECNET is not set
31197 # CONFIG_LLC2 is not set
31198 @@ -390,7 +371,6 @@
31199 # CONFIG_ECONET is not set
31200 # CONFIG_WAN_ROUTER is not set
31201 # CONFIG_NET_SCHED is not set
31202 -# CONFIG_DCB is not set
31203
31204 #
31205 # Network testing
31206 @@ -412,37 +392,39 @@
31207 #
31208 # Bluetooth device drivers
31209 #
31210 -CONFIG_BT_HCIBTUSB=m
31211 +CONFIG_BT_HCIUSB=m
31212 +CONFIG_BT_HCIUSB_SCO=y
31213 # CONFIG_BT_HCIUART is not set
31214 # CONFIG_BT_HCIBCM203X is not set
31215 # CONFIG_BT_HCIBPA10X is not set
31216 # CONFIG_BT_HCIBFUSB is not set
31217 # CONFIG_BT_HCIVHCI is not set
31218 # CONFIG_AF_RXRPC is not set
31219 -# CONFIG_PHONET is not set
31220 -CONFIG_WIRELESS=y
31221 +
31222 +#
31223 +# Wireless
31224 +#
31225 CONFIG_CFG80211=m
31226 -# CONFIG_CFG80211_REG_DEBUG is not set
31227 CONFIG_NL80211=y
31228 -# CONFIG_WIRELESS_OLD_REGULATORY is not set
31229 CONFIG_WIRELESS_EXT=y
31230 # CONFIG_WIRELESS_EXT_SYSFS is not set
31231 -# CONFIG_LIB80211 is not set
31232 CONFIG_MAC80211=m
31233
31234 #
31235 # Rate control algorithm selection
31236 #
31237 CONFIG_MAC80211_RC_PID=y
31238 -# CONFIG_MAC80211_RC_MINSTREL is not set
31239 CONFIG_MAC80211_RC_DEFAULT_PID=y
31240 -# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
31241 CONFIG_MAC80211_RC_DEFAULT="pid"
31242 # CONFIG_MAC80211_MESH is not set
31243 # CONFIG_MAC80211_LEDS is not set
31244 # CONFIG_MAC80211_DEBUGFS is not set
31245 # CONFIG_MAC80211_DEBUG_MENU is not set
31246 -# CONFIG_WIMAX is not set
31247 +CONFIG_IEEE80211=m
31248 +# CONFIG_IEEE80211_DEBUG is not set
31249 +CONFIG_IEEE80211_CRYPT_WEP=m
31250 +CONFIG_IEEE80211_CRYPT_CCMP=m
31251 +CONFIG_IEEE80211_CRYPT_TKIP=m
31252 # CONFIG_RFKILL is not set
31253 # CONFIG_NET_9P is not set
31254
31255 @@ -468,7 +450,6 @@
31256 CONFIG_MTD_DEBUG_VERBOSE=0
31257 # CONFIG_MTD_CONCAT is not set
31258 # CONFIG_MTD_PARTITIONS is not set
31259 -# CONFIG_MTD_TESTS is not set
31260
31261 #
31262 # User Modules And Translation Layers
31263 @@ -513,6 +494,7 @@
31264 #
31265 # CONFIG_MTD_SLRAM is not set
31266 # CONFIG_MTD_PHRAM is not set
31267 +CONFIG_MTD_PS3VRAM=y
31268 # CONFIG_MTD_MTDRAM is not set
31269 # CONFIG_MTD_BLOCK2MTD is not set
31270
31271 @@ -526,11 +508,6 @@
31272 # CONFIG_MTD_ONENAND is not set
31273
31274 #
31275 -# LPDDR flash memory drivers
31276 -#
31277 -# CONFIG_MTD_LPDDR is not set
31278 -
31279 -#
31280 # UBI - Unsorted block images
31281 #
31282 # CONFIG_MTD_UBI is not set
31283 @@ -551,13 +528,8 @@
31284 # CONFIG_ATA_OVER_ETH is not set
31285 # CONFIG_BLK_DEV_HD is not set
31286 CONFIG_MISC_DEVICES=y
31287 -# CONFIG_ENCLOSURE_SERVICES is not set
31288 -# CONFIG_C2PORT is not set
31289 -
31290 -#
31291 -# EEPROM support
31292 -#
31293 # CONFIG_EEPROM_93CX6 is not set
31294 +# CONFIG_ENCLOSURE_SERVICES is not set
31295 CONFIG_HAVE_IDE=y
31296 # CONFIG_IDE is not set
31297
31298 @@ -603,17 +575,7 @@
31299 # CONFIG_SCSI_LOWLEVEL is not set
31300 # CONFIG_SCSI_DH is not set
31301 # CONFIG_ATA is not set
31302 -CONFIG_MD=y
31303 -# CONFIG_BLK_DEV_MD is not set
31304 -CONFIG_BLK_DEV_DM=m
31305 -# CONFIG_DM_DEBUG is not set
31306 -# CONFIG_DM_CRYPT is not set
31307 -# CONFIG_DM_SNAPSHOT is not set
31308 -# CONFIG_DM_MIRROR is not set
31309 -# CONFIG_DM_ZERO is not set
31310 -# CONFIG_DM_MULTIPATH is not set
31311 -# CONFIG_DM_DELAY is not set
31312 -# CONFIG_DM_UEVENT is not set
31313 +# CONFIG_MD is not set
31314 # CONFIG_MACINTOSH_DRIVERS is not set
31315 CONFIG_NETDEVICES=y
31316 # CONFIG_DUMMY is not set
31317 @@ -629,9 +591,6 @@
31318 # CONFIG_IBM_NEW_EMAC_RGMII is not set
31319 # CONFIG_IBM_NEW_EMAC_TAH is not set
31320 # CONFIG_IBM_NEW_EMAC_EMAC4 is not set
31321 -# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
31322 -# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
31323 -# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
31324 # CONFIG_B44 is not set
31325 CONFIG_NETDEV_1000=y
31326 CONFIG_GELIC_NET=y
31327 @@ -645,7 +604,6 @@
31328 # CONFIG_WLAN_PRE80211 is not set
31329 CONFIG_WLAN_80211=y
31330 # CONFIG_LIBERTAS is not set
31331 -# CONFIG_LIBERTAS_THINFIRM is not set
31332 # CONFIG_USB_ZD1201 is not set
31333 # CONFIG_USB_NET_RNDIS_WLAN is not set
31334 # CONFIG_RTL8187 is not set
31335 @@ -657,11 +615,13 @@
31336 # CONFIG_B43LEGACY is not set
31337 CONFIG_ZD1211RW=m
31338 # CONFIG_ZD1211RW_DEBUG is not set
31339 -# CONFIG_RT2X00 is not set
31340 -
31341 -#
31342 -# Enable WiMAX (Networking options) to see the WiMAX drivers
31343 -#
31344 +CONFIG_RT2X00=m
31345 +CONFIG_RT2X00_LIB=m
31346 +CONFIG_RT2X00_LIB_USB=m
31347 +CONFIG_RT2X00_LIB_FIRMWARE=y
31348 +# CONFIG_RT2500USB is not set
31349 +CONFIG_RT73USB=m
31350 +# CONFIG_RT2X00_DEBUG is not set
31351
31352 #
31353 # USB Network Adapters
31354 @@ -674,7 +634,6 @@
31355 CONFIG_USB_NET_AX8817X=m
31356 # CONFIG_USB_NET_CDCETHER is not set
31357 # CONFIG_USB_NET_DM9601 is not set
31358 -# CONFIG_USB_NET_SMSC95XX is not set
31359 # CONFIG_USB_NET_GL620A is not set
31360 # CONFIG_USB_NET_NET1080 is not set
31361 # CONFIG_USB_NET_PLUSB is not set
31362 @@ -705,7 +664,7 @@
31363 # Input device support
31364 #
31365 CONFIG_INPUT=y
31366 -CONFIG_INPUT_FF_MEMLESS=m
31367 +# CONFIG_INPUT_FF_MEMLESS is not set
31368 # CONFIG_INPUT_POLLDEV is not set
31369
31370 #
31371 @@ -776,10 +735,8 @@
31372 # Non-8250 serial port support
31373 #
31374 CONFIG_UNIX98_PTYS=y
31375 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
31376 CONFIG_LEGACY_PTYS=y
31377 CONFIG_LEGACY_PTY_COUNT=16
31378 -# CONFIG_HVC_UDBG is not set
31379 # CONFIG_IPMI_HANDLER is not set
31380 # CONFIG_HW_RANDOM is not set
31381 # CONFIG_R3964 is not set
31382 @@ -796,11 +753,11 @@
31383 # CONFIG_THERMAL is not set
31384 # CONFIG_THERMAL_HWMON is not set
31385 # CONFIG_WATCHDOG is not set
31386 -CONFIG_SSB_POSSIBLE=y
31387
31388 #
31389 # Sonics Silicon Backplane
31390 #
31391 +CONFIG_SSB_POSSIBLE=y
31392 # CONFIG_SSB is not set
31393
31394 #
31395 @@ -810,7 +767,6 @@
31396 # CONFIG_MFD_SM501 is not set
31397 # CONFIG_HTC_PASIC3 is not set
31398 # CONFIG_MFD_TMIO is not set
31399 -# CONFIG_REGULATOR is not set
31400
31401 #
31402 # Multimedia devices
31403 @@ -836,7 +792,6 @@
31404 CONFIG_FB=y
31405 # CONFIG_FIRMWARE_EDID is not set
31406 # CONFIG_FB_DDC is not set
31407 -# CONFIG_FB_BOOT_VESA_SUPPORT is not set
31408 # CONFIG_FB_CFB_FILLRECT is not set
31409 # CONFIG_FB_CFB_COPYAREA is not set
31410 # CONFIG_FB_CFB_IMAGEBLIT is not set
31411 @@ -862,8 +817,6 @@
31412 CONFIG_FB_PS3=y
31413 CONFIG_FB_PS3_DEFAULT_SIZE_M=9
31414 # CONFIG_FB_VIRTUAL is not set
31415 -# CONFIG_FB_METRONOME is not set
31416 -# CONFIG_FB_MB862XX is not set
31417 # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
31418
31419 #
31420 @@ -888,7 +841,6 @@
31421 # CONFIG_LOGO_LINUX_VGA16 is not set
31422 CONFIG_LOGO_LINUX_CLUT224=y
31423 CONFIG_SOUND=m
31424 -# CONFIG_SOUND_OSS_CORE is not set
31425 CONFIG_SND=m
31426 CONFIG_SND_TIMER=m
31427 CONFIG_SND_PCM=m
31428 @@ -897,7 +849,6 @@
31429 # CONFIG_SND_SEQUENCER is not set
31430 # CONFIG_SND_MIXER_OSS is not set
31431 # CONFIG_SND_PCM_OSS is not set
31432 -# CONFIG_SND_HRTIMER is not set
31433 # CONFIG_SND_DYNAMIC_MINORS is not set
31434 CONFIG_SND_SUPPORT_OLD_API=y
31435 CONFIG_SND_VERBOSE_PROCFS=y
31436 @@ -922,40 +873,15 @@
31437 # USB Input Devices
31438 #
31439 CONFIG_USB_HID=m
31440 -# CONFIG_HID_PID is not set
31441 -CONFIG_USB_HIDDEV=y
31442 +# CONFIG_USB_HIDINPUT_POWERBOOK is not set
31443 +# CONFIG_HID_FF is not set
31444 +# CONFIG_USB_HIDDEV is not set
31445
31446 #
31447 # USB HID Boot Protocol drivers
31448 #
31449 # CONFIG_USB_KBD is not set
31450 # CONFIG_USB_MOUSE is not set
31451 -
31452 -#
31453 -# Special HID drivers
31454 -#
31455 -# CONFIG_HID_COMPAT is not set
31456 -# CONFIG_HID_A4TECH is not set
31457 -# CONFIG_HID_APPLE is not set
31458 -# CONFIG_HID_BELKIN is not set
31459 -# CONFIG_HID_CHERRY is not set
31460 -# CONFIG_HID_CHICONY is not set
31461 -# CONFIG_HID_CYPRESS is not set
31462 -# CONFIG_HID_EZKEY is not set
31463 -# CONFIG_HID_GYRATION is not set
31464 -# CONFIG_HID_LOGITECH is not set
31465 -# CONFIG_HID_MICROSOFT is not set
31466 -# CONFIG_HID_MONTEREY is not set
31467 -# CONFIG_HID_NTRIG is not set
31468 -# CONFIG_HID_PANTHERLORD is not set
31469 -# CONFIG_HID_PETALYNX is not set
31470 -# CONFIG_HID_SAMSUNG is not set
31471 -# CONFIG_HID_SONY is not set
31472 -# CONFIG_HID_SUNPLUS is not set
31473 -# CONFIG_GREENASIA_FF is not set
31474 -# CONFIG_HID_TOPSEED is not set
31475 -# CONFIG_THRUSTMASTER_FF is not set
31476 -# CONFIG_ZEROPLUS_FF is not set
31477 CONFIG_USB_SUPPORT=y
31478 CONFIG_USB_ARCH_HAS_HCD=y
31479 CONFIG_USB_ARCH_HAS_OHCI=y
31480 @@ -972,11 +898,7 @@
31481 # CONFIG_USB_DYNAMIC_MINORS is not set
31482 CONFIG_USB_SUSPEND=y
31483 # CONFIG_USB_OTG is not set
31484 -# CONFIG_USB_OTG_WHITELIST is not set
31485 -# CONFIG_USB_OTG_BLACKLIST_HUB is not set
31486 -CONFIG_USB_MON=m
31487 -# CONFIG_USB_WUSB is not set
31488 -# CONFIG_USB_WUSB_CBAF is not set
31489 +CONFIG_USB_MON=y
31490
31491 #
31492 # USB Host Controller Drivers
31493 @@ -987,7 +909,6 @@
31494 # CONFIG_USB_EHCI_TT_NEWSCHED is not set
31495 CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
31496 # CONFIG_USB_EHCI_HCD_PPC_OF is not set
31497 -# CONFIG_USB_OXU210HP_HCD is not set
31498 # CONFIG_USB_ISP116X_HCD is not set
31499 # CONFIG_USB_ISP1760_HCD is not set
31500 CONFIG_USB_OHCI_HCD=m
31501 @@ -997,7 +918,6 @@
31502 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
31503 # CONFIG_USB_SL811_HCD is not set
31504 # CONFIG_USB_R8A66597_HCD is not set
31505 -# CONFIG_USB_HWA_HCD is not set
31506
31507 #
31508 # Enable Host or Gadget support to see Inventra options
31509 @@ -1009,20 +929,20 @@
31510 # CONFIG_USB_ACM is not set
31511 # CONFIG_USB_PRINTER is not set
31512 # CONFIG_USB_WDM is not set
31513 -# CONFIG_USB_TMC is not set
31514
31515 #
31516 -# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
31517 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
31518 #
31519
31520 #
31521 -# see USB_STORAGE Help for more information
31522 +# may also be needed; see USB_STORAGE Help for more information
31523 #
31524 CONFIG_USB_STORAGE=m
31525 # CONFIG_USB_STORAGE_DEBUG is not set
31526 # CONFIG_USB_STORAGE_DATAFAB is not set
31527 # CONFIG_USB_STORAGE_FREECOM is not set
31528 # CONFIG_USB_STORAGE_ISD200 is not set
31529 +# CONFIG_USB_STORAGE_DPCM is not set
31530 # CONFIG_USB_STORAGE_USBAT is not set
31531 # CONFIG_USB_STORAGE_SDDR09 is not set
31532 # CONFIG_USB_STORAGE_SDDR55 is not set
31533 @@ -1030,6 +950,7 @@
31534 # CONFIG_USB_STORAGE_ALAUDA is not set
31535 # CONFIG_USB_STORAGE_ONETOUCH is not set
31536 # CONFIG_USB_STORAGE_KARMA is not set
31537 +# CONFIG_USB_STORAGE_SIERRA is not set
31538 # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
31539 # CONFIG_USB_LIBUSUAL is not set
31540
31541 @@ -1050,7 +971,6 @@
31542 # CONFIG_USB_EMI62 is not set
31543 # CONFIG_USB_EMI26 is not set
31544 # CONFIG_USB_ADUTUX is not set
31545 -# CONFIG_USB_SEVSEG is not set
31546 # CONFIG_USB_RIO500 is not set
31547 # CONFIG_USB_LEGOTOWER is not set
31548 # CONFIG_USB_LCD is not set
31549 @@ -1068,12 +988,7 @@
31550 # CONFIG_USB_IOWARRIOR is not set
31551 # CONFIG_USB_TEST is not set
31552 # CONFIG_USB_ISIGHTFW is not set
31553 -# CONFIG_USB_VST is not set
31554 # CONFIG_USB_GADGET is not set
31555 -
31556 -#
31557 -# OTG and related infrastructure
31558 -#
31559 # CONFIG_MMC is not set
31560 # CONFIG_MEMSTICK is not set
31561 # CONFIG_NEW_LEDS is not set
31562 @@ -1099,15 +1014,12 @@
31563 # Platform RTC drivers
31564 #
31565 # CONFIG_RTC_DRV_CMOS is not set
31566 -# CONFIG_RTC_DRV_DS1286 is not set
31567 # CONFIG_RTC_DRV_DS1511 is not set
31568 # CONFIG_RTC_DRV_DS1553 is not set
31569 # CONFIG_RTC_DRV_DS1742 is not set
31570 # CONFIG_RTC_DRV_STK17TA8 is not set
31571 # CONFIG_RTC_DRV_M48T86 is not set
31572 -# CONFIG_RTC_DRV_M48T35 is not set
31573 # CONFIG_RTC_DRV_M48T59 is not set
31574 -# CONFIG_RTC_DRV_BQ4802 is not set
31575 # CONFIG_RTC_DRV_V3020 is not set
31576
31577 #
31578 @@ -1116,7 +1028,6 @@
31579 CONFIG_RTC_DRV_PPC=m
31580 # CONFIG_DMADEVICES is not set
31581 # CONFIG_UIO is not set
31582 -# CONFIG_STAGING is not set
31583
31584 #
31585 # File systems
31586 @@ -1124,35 +1035,26 @@
31587 CONFIG_EXT2_FS=m
31588 # CONFIG_EXT2_FS_XATTR is not set
31589 # CONFIG_EXT2_FS_XIP is not set
31590 -CONFIG_EXT3_FS=m
31591 +CONFIG_EXT3_FS=y
31592 CONFIG_EXT3_FS_XATTR=y
31593 # CONFIG_EXT3_FS_POSIX_ACL is not set
31594 # CONFIG_EXT3_FS_SECURITY is not set
31595 -CONFIG_EXT4_FS=y
31596 -# CONFIG_EXT4DEV_COMPAT is not set
31597 -CONFIG_EXT4_FS_XATTR=y
31598 -# CONFIG_EXT4_FS_POSIX_ACL is not set
31599 -# CONFIG_EXT4_FS_SECURITY is not set
31600 -CONFIG_JBD=m
31601 +# CONFIG_EXT4DEV_FS is not set
31602 +CONFIG_JBD=y
31603 # CONFIG_JBD_DEBUG is not set
31604 -CONFIG_JBD2=y
31605 -# CONFIG_JBD2_DEBUG is not set
31606 CONFIG_FS_MBCACHE=y
31607 # CONFIG_REISERFS_FS is not set
31608 # CONFIG_JFS_FS is not set
31609 # CONFIG_FS_POSIX_ACL is not set
31610 -CONFIG_FILE_LOCKING=y
31611 # CONFIG_XFS_FS is not set
31612 # CONFIG_GFS2_FS is not set
31613 # CONFIG_OCFS2_FS is not set
31614 -# CONFIG_BTRFS_FS is not set
31615 CONFIG_DNOTIFY=y
31616 CONFIG_INOTIFY=y
31617 CONFIG_INOTIFY_USER=y
31618 CONFIG_QUOTA=y
31619 # CONFIG_QUOTA_NETLINK_INTERFACE is not set
31620 CONFIG_PRINT_QUOTA_WARNING=y
31621 -CONFIG_QUOTA_TREE=y
31622 # CONFIG_QFMT_V1 is not set
31623 CONFIG_QFMT_V2=y
31624 CONFIG_QUOTACTL=y
31625 @@ -1185,14 +1087,16 @@
31626 CONFIG_PROC_FS=y
31627 CONFIG_PROC_KCORE=y
31628 CONFIG_PROC_SYSCTL=y
31629 -CONFIG_PROC_PAGE_MONITOR=y
31630 CONFIG_SYSFS=y
31631 CONFIG_TMPFS=y
31632 # CONFIG_TMPFS_POSIX_ACL is not set
31633 CONFIG_HUGETLBFS=y
31634 CONFIG_HUGETLB_PAGE=y
31635 # CONFIG_CONFIGFS_FS is not set
31636 -CONFIG_MISC_FILESYSTEMS=y
31637 +
31638 +#
31639 +# Miscellaneous filesystems
31640 +#
31641 # CONFIG_ADFS_FS is not set
31642 # CONFIG_AFFS_FS is not set
31643 # CONFIG_HFS_FS is not set
31644 @@ -1202,7 +1106,6 @@
31645 # CONFIG_EFS_FS is not set
31646 # CONFIG_JFFS2_FS is not set
31647 # CONFIG_CRAMFS is not set
31648 -# CONFIG_SQUASHFS is not set
31649 # CONFIG_VXFS_FS is not set
31650 # CONFIG_MINIX_FS is not set
31651 # CONFIG_OMFS_FS is not set
31652 @@ -1223,7 +1126,6 @@
31653 CONFIG_NFS_COMMON=y
31654 CONFIG_SUNRPC=y
31655 CONFIG_SUNRPC_GSS=y
31656 -# CONFIG_SUNRPC_REGISTER_V4 is not set
31657 CONFIG_RPCSEC_GSS_KRB5=y
31658 # CONFIG_RPCSEC_GSS_SPKM3 is not set
31659 # CONFIG_SMB_FS is not set
31660 @@ -1288,9 +1190,9 @@
31661 # Library routines
31662 #
31663 CONFIG_BITREVERSE=y
31664 -CONFIG_GENERIC_FIND_LAST_BIT=y
31665 +# CONFIG_GENERIC_FIND_FIRST_BIT is not set
31666 CONFIG_CRC_CCITT=m
31667 -CONFIG_CRC16=y
31668 +# CONFIG_CRC16 is not set
31669 CONFIG_CRC_T10DIF=y
31670 CONFIG_CRC_ITU_T=m
31671 CONFIG_CRC32=y
31672 @@ -1348,44 +1250,27 @@
31673 CONFIG_DEBUG_MEMORY_INIT=y
31674 CONFIG_DEBUG_LIST=y
31675 # CONFIG_DEBUG_SG is not set
31676 -# CONFIG_DEBUG_NOTIFIERS is not set
31677 +CONFIG_FRAME_POINTER=y
31678 # CONFIG_BOOT_PRINTK_DELAY is not set
31679 # CONFIG_RCU_TORTURE_TEST is not set
31680 -# CONFIG_RCU_CPU_STALL_DETECTOR is not set
31681 # CONFIG_BACKTRACE_SELF_TEST is not set
31682 -# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
31683 # CONFIG_FAULT_INJECTION is not set
31684 # CONFIG_LATENCYTOP is not set
31685 CONFIG_SYSCTL_SYSCALL_CHECK=y
31686 -CONFIG_NOP_TRACER=y
31687 -CONFIG_HAVE_FUNCTION_TRACER=y
31688 +CONFIG_HAVE_FTRACE=y
31689 CONFIG_HAVE_DYNAMIC_FTRACE=y
31690 -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
31691 -CONFIG_RING_BUFFER=y
31692 -CONFIG_TRACING=y
31693 -
31694 -#
31695 -# Tracers
31696 -#
31697 -# CONFIG_FUNCTION_TRACER is not set
31698 +# CONFIG_FTRACE is not set
31699 # CONFIG_IRQSOFF_TRACER is not set
31700 # CONFIG_SCHED_TRACER is not set
31701 # CONFIG_CONTEXT_SWITCH_TRACER is not set
31702 -# CONFIG_BOOT_TRACER is not set
31703 -# CONFIG_TRACE_BRANCH_PROFILING is not set
31704 -# CONFIG_STACK_TRACER is not set
31705 -# CONFIG_FTRACE_STARTUP_TEST is not set
31706 -# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
31707 # CONFIG_SAMPLES is not set
31708 CONFIG_HAVE_ARCH_KGDB=y
31709 # CONFIG_KGDB is not set
31710 -CONFIG_PRINT_STACK_DEPTH=64
31711 CONFIG_DEBUG_STACKOVERFLOW=y
31712 # CONFIG_DEBUG_STACK_USAGE is not set
31713 # CONFIG_DEBUG_PAGEALLOC is not set
31714 # CONFIG_CODE_PATCHING_SELFTEST is not set
31715 # CONFIG_FTR_FIXUP_SELFTEST is not set
31716 -# CONFIG_MSI_BITMAP_SELFTEST is not set
31717 # CONFIG_XMON is not set
31718 CONFIG_IRQSTACKS=y
31719 # CONFIG_VIRQ_DEBUG is not set
31720 @@ -1397,26 +1282,16 @@
31721 #
31722 # CONFIG_KEYS is not set
31723 # CONFIG_SECURITY is not set
31724 -# CONFIG_SECURITYFS is not set
31725 # CONFIG_SECURITY_FILE_CAPABILITIES is not set
31726 CONFIG_CRYPTO=y
31727
31728 #
31729 # Crypto core or helper
31730 #
31731 -# CONFIG_CRYPTO_FIPS is not set
31732 CONFIG_CRYPTO_ALGAPI=y
31733 -CONFIG_CRYPTO_ALGAPI2=y
31734 CONFIG_CRYPTO_AEAD=m
31735 -CONFIG_CRYPTO_AEAD2=y
31736 CONFIG_CRYPTO_BLKCIPHER=y
31737 -CONFIG_CRYPTO_BLKCIPHER2=y
31738 -CONFIG_CRYPTO_HASH=y
31739 -CONFIG_CRYPTO_HASH2=y
31740 -CONFIG_CRYPTO_RNG=m
31741 -CONFIG_CRYPTO_RNG2=y
31742 CONFIG_CRYPTO_MANAGER=y
31743 -CONFIG_CRYPTO_MANAGER2=y
31744 CONFIG_CRYPTO_GF128MUL=m
31745 # CONFIG_CRYPTO_NULL is not set
31746 # CONFIG_CRYPTO_CRYPTD is not set
31747 @@ -1488,11 +1363,6 @@
31748 #
31749 # CONFIG_CRYPTO_DEFLATE is not set
31750 CONFIG_CRYPTO_LZO=m
31751 -
31752 -#
31753 -# Random Number Generation
31754 -#
31755 -# CONFIG_CRYPTO_ANSI_CPRNG is not set
31756 CONFIG_CRYPTO_HW=y
31757 # CONFIG_PPC_CLOCK is not set
31758 # CONFIG_VIRTUALIZATION is not set
31759 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/configs/storcenter_defconfig linux-2.6.29-rc3.owrt/arch/powerpc/configs/storcenter_defconfig
31760 --- linux-2.6.29.owrt/arch/powerpc/configs/storcenter_defconfig 2009-05-10 22:04:40.000000000 +0200
31761 +++ linux-2.6.29-rc3.owrt/arch/powerpc/configs/storcenter_defconfig 2009-05-10 23:48:28.000000000 +0200
31762 @@ -1,7 +1,7 @@
31763 #
31764 # Automatically generated make config: don't edit
31765 -# Linux kernel version: 2.6.29-rc6
31766 -# Fri Mar 6 00:09:08 2009
31767 +# Linux kernel version: 2.6.29-rc2
31768 +# Mon Jan 26 15:35:46 2009
31769 #
31770 # CONFIG_PPC64 is not set
31771
31772 @@ -71,15 +71,6 @@
31773 # CONFIG_BSD_PROCESS_ACCT is not set
31774 # CONFIG_TASKSTATS is not set
31775 # CONFIG_AUDIT is not set
31776 -
31777 -#
31778 -# RCU Subsystem
31779 -#
31780 -CONFIG_CLASSIC_RCU=y
31781 -# CONFIG_TREE_RCU is not set
31782 -# CONFIG_PREEMPT_RCU is not set
31783 -# CONFIG_TREE_RCU_TRACE is not set
31784 -# CONFIG_PREEMPT_RCU_TRACE is not set
31785 # CONFIG_IKCONFIG is not set
31786 CONFIG_LOG_BUF_SHIFT=14
31787 CONFIG_GROUP_SCHED=y
31788 @@ -153,6 +144,11 @@
31789 CONFIG_DEFAULT_CFQ=y
31790 # CONFIG_DEFAULT_NOOP is not set
31791 CONFIG_DEFAULT_IOSCHED="cfq"
31792 +CONFIG_CLASSIC_RCU=y
31793 +# CONFIG_TREE_RCU is not set
31794 +# CONFIG_PREEMPT_RCU is not set
31795 +# CONFIG_TREE_RCU_TRACE is not set
31796 +# CONFIG_PREEMPT_RCU_TRACE is not set
31797 # CONFIG_FREEZER is not set
31798
31799 #
31800 @@ -381,8 +377,8 @@
31801 CONFIG_MTD_PARTITIONS=y
31802 # CONFIG_MTD_TESTS is not set
31803 # CONFIG_MTD_REDBOOT_PARTS is not set
31804 -CONFIG_MTD_CMDLINE_PARTS=y
31805 -CONFIG_MTD_OF_PARTS=y
31806 +# CONFIG_MTD_CMDLINE_PARTS is not set
31807 +# CONFIG_MTD_OF_PARTS is not set
31808 # CONFIG_MTD_AR7_PARTS is not set
31809
31810 #
31811 @@ -456,6 +452,7 @@
31812 # LPDDR flash memory drivers
31813 #
31814 # CONFIG_MTD_LPDDR is not set
31815 +# CONFIG_MTD_QINFO_PROBE is not set
31816
31817 #
31818 # UBI - Unsorted block images
31819 @@ -481,19 +478,13 @@
31820 # CONFIG_BLK_DEV_HD is not set
31821 CONFIG_MISC_DEVICES=y
31822 # CONFIG_PHANTOM is not set
31823 +# CONFIG_EEPROM_93CX6 is not set
31824 # CONFIG_SGI_IOC4 is not set
31825 # CONFIG_TIFM_CORE is not set
31826 # CONFIG_ICS932S401 is not set
31827 # CONFIG_ENCLOSURE_SERVICES is not set
31828 # CONFIG_HP_ILO is not set
31829 # CONFIG_C2PORT is not set
31830 -
31831 -#
31832 -# EEPROM support
31833 -#
31834 -# CONFIG_EEPROM_AT24 is not set
31835 -# CONFIG_EEPROM_LEGACY is not set
31836 -# CONFIG_EEPROM_93CX6 is not set
31837 CONFIG_HAVE_IDE=y
31838 CONFIG_IDE=y
31839
31840 @@ -686,7 +677,6 @@
31841 # CONFIG_QLA3XXX is not set
31842 # CONFIG_ATL1 is not set
31843 # CONFIG_ATL1E is not set
31844 -# CONFIG_ATL1C is not set
31845 # CONFIG_JME is not set
31846 # CONFIG_NETDEV_10000 is not set
31847 # CONFIG_TR is not set
31848 @@ -828,6 +818,8 @@
31849 # Miscellaneous I2C Chip support
31850 #
31851 # CONFIG_DS1682 is not set
31852 +# CONFIG_EEPROM_AT24 is not set
31853 +# CONFIG_EEPROM_LEGACY is not set
31854 # CONFIG_SENSORS_PCF8574 is not set
31855 # CONFIG_PCF8575 is not set
31856 # CONFIG_SENSORS_PCA9539 is not set
31857 @@ -1167,7 +1159,6 @@
31858 # CONFIG_SYSV_FS is not set
31859 # CONFIG_UFS_FS is not set
31860 # CONFIG_NETWORK_FILESYSTEMS is not set
31861 -CONFIG_EXPORTFS=m
31862
31863 #
31864 # Partition Types
31865 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/include/asm/compat.h linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/compat.h
31866 --- linux-2.6.29.owrt/arch/powerpc/include/asm/compat.h 2009-05-10 22:04:39.000000000 +0200
31867 +++ linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/compat.h 2009-05-10 23:48:28.000000000 +0200
31868 @@ -210,10 +210,5 @@
31869 compat_ulong_t __unused6;
31870 };
31871
31872 -static inline int is_compat_task(void)
31873 -{
31874 - return test_thread_flag(TIF_32BIT);
31875 -}
31876 -
31877 #endif /* __KERNEL__ */
31878 #endif /* _ASM_POWERPC_COMPAT_H */
31879 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/include/asm/cputable.h linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/cputable.h
31880 --- linux-2.6.29.owrt/arch/powerpc/include/asm/cputable.h 2009-05-10 22:04:40.000000000 +0200
31881 +++ linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/cputable.h 2009-05-10 23:48:28.000000000 +0200
31882 @@ -241,11 +241,9 @@
31883 /* We need to mark all pages as being coherent if we're SMP or we have a
31884 * 74[45]x and an MPC107 host bridge. Also 83xx and PowerQUICC II
31885 * require it for PCI "streaming/prefetch" to work properly.
31886 - * This is also required by 52xx family.
31887 */
31888 #if defined(CONFIG_SMP) || defined(CONFIG_MPC10X_BRIDGE) \
31889 - || defined(CONFIG_PPC_83xx) || defined(CONFIG_8260) \
31890 - || defined(CONFIG_PPC_MPC52xx)
31891 + || defined(CONFIG_PPC_83xx) || defined(CONFIG_8260)
31892 #define CPU_FTR_COMMON CPU_FTR_NEED_COHERENT
31893 #else
31894 #define CPU_FTR_COMMON 0
31895 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/include/asm/pgtable-4k.h linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/pgtable-4k.h
31896 --- linux-2.6.29.owrt/arch/powerpc/include/asm/pgtable-4k.h 2009-05-10 22:04:39.000000000 +0200
31897 +++ linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/pgtable-4k.h 2009-05-10 23:48:28.000000000 +0200
31898 @@ -60,7 +60,7 @@
31899 /* It should be preserving the high 48 bits and then specifically */
31900 /* preserving _PAGE_SECONDARY | _PAGE_GROUP_IX */
31901 #define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | \
31902 - _PAGE_HPTEFLAGS | _PAGE_SPECIAL)
31903 + _PAGE_HPTEFLAGS)
31904
31905 /* Bits to mask out from a PMD to get to the PTE page */
31906 #define PMD_MASKED_BITS 0
31907 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/include/asm/pgtable-64k.h linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/pgtable-64k.h
31908 --- linux-2.6.29.owrt/arch/powerpc/include/asm/pgtable-64k.h 2009-05-10 22:04:40.000000000 +0200
31909 +++ linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/pgtable-64k.h 2009-05-10 23:48:28.000000000 +0200
31910 @@ -114,7 +114,7 @@
31911 * pgprot changes
31912 */
31913 #define _PAGE_CHG_MASK (PTE_RPN_MASK | _PAGE_HPTEFLAGS | _PAGE_DIRTY | \
31914 - _PAGE_ACCESSED | _PAGE_SPECIAL)
31915 + _PAGE_ACCESSED)
31916
31917 /* Bits to mask out from a PMD to get to the PTE page */
31918 #define PMD_MASKED_BITS 0x1ff
31919 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/include/asm/pgtable-ppc32.h linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/pgtable-ppc32.h
31920 --- linux-2.6.29.owrt/arch/powerpc/include/asm/pgtable-ppc32.h 2009-05-10 22:04:39.000000000 +0200
31921 +++ linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/pgtable-ppc32.h 2009-05-10 23:48:28.000000000 +0200
31922 @@ -429,8 +429,7 @@
31923 #define PMD_PAGE_SIZE(pmd) bad_call_to_PMD_PAGE_SIZE()
31924 #endif
31925
31926 -#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | \
31927 - _PAGE_SPECIAL)
31928 +#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
31929
31930
31931 #define PAGE_PROT_BITS (_PAGE_GUARDED | _PAGE_COHERENT | _PAGE_NO_CACHE | \
31932 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/include/asm/seccomp.h linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/seccomp.h
31933 --- linux-2.6.29.owrt/arch/powerpc/include/asm/seccomp.h 2009-05-10 22:04:40.000000000 +0200
31934 +++ linux-2.6.29-rc3.owrt/arch/powerpc/include/asm/seccomp.h 2009-05-10 23:48:28.000000000 +0200
31935 @@ -1,6 +1,10 @@
31936 #ifndef _ASM_POWERPC_SECCOMP_H
31937 #define _ASM_POWERPC_SECCOMP_H
31938
31939 +#ifdef __KERNEL__
31940 +#include <linux/thread_info.h>
31941 +#endif
31942 +
31943 #include <linux/unistd.h>
31944
31945 #define __NR_seccomp_read __NR_read
31946 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/kernel/align.c linux-2.6.29-rc3.owrt/arch/powerpc/kernel/align.c
31947 --- linux-2.6.29.owrt/arch/powerpc/kernel/align.c 2009-05-10 22:04:40.000000000 +0200
31948 +++ linux-2.6.29-rc3.owrt/arch/powerpc/kernel/align.c 2009-05-10 23:48:28.000000000 +0200
31949 @@ -367,24 +367,27 @@
31950 static int emulate_fp_pair(unsigned char __user *addr, unsigned int reg,
31951 unsigned int flags)
31952 {
31953 - char *ptr0 = (char *) &current->thread.TS_FPR(reg);
31954 - char *ptr1 = (char *) &current->thread.TS_FPR(reg+1);
31955 - int i, ret, sw = 0;
31956 + char *ptr = (char *) &current->thread.TS_FPR(reg);
31957 + int i, ret;
31958
31959 if (!(flags & F))
31960 return 0;
31961 if (reg & 1)
31962 return 0; /* invalid form: FRS/FRT must be even */
31963 - if (flags & SW)
31964 - sw = 7;
31965 - ret = 0;
31966 - for (i = 0; i < 8; ++i) {
31967 - if (!(flags & ST)) {
31968 - ret |= __get_user(ptr0[i^sw], addr + i);
31969 - ret |= __get_user(ptr1[i^sw], addr + i + 8);
31970 - } else {
31971 - ret |= __put_user(ptr0[i^sw], addr + i);
31972 - ret |= __put_user(ptr1[i^sw], addr + i + 8);
31973 + if (!(flags & SW)) {
31974 + /* not byte-swapped - easy */
31975 + if (!(flags & ST))
31976 + ret = __copy_from_user(ptr, addr, 16);
31977 + else
31978 + ret = __copy_to_user(addr, ptr, 16);
31979 + } else {
31980 + /* each FPR value is byte-swapped separately */
31981 + ret = 0;
31982 + for (i = 0; i < 16; ++i) {
31983 + if (!(flags & ST))
31984 + ret |= __get_user(ptr[i^7], addr + i);
31985 + else
31986 + ret |= __put_user(ptr[i^7], addr + i);
31987 }
31988 }
31989 if (ret)
31990 @@ -643,16 +646,11 @@
31991 unsigned int areg, struct pt_regs *regs,
31992 unsigned int flags, unsigned int length)
31993 {
31994 - char *ptr;
31995 + char *ptr = (char *) &current->thread.TS_FPR(reg);
31996 int ret = 0;
31997
31998 flush_vsx_to_thread(current);
31999
32000 - if (reg < 32)
32001 - ptr = (char *) &current->thread.TS_FPR(reg);
32002 - else
32003 - ptr = (char *) &current->thread.vr[reg - 32];
32004 -
32005 if (flags & ST)
32006 ret = __copy_to_user(addr, ptr, length);
32007 else {
32008 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/kernel/ftrace.c linux-2.6.29-rc3.owrt/arch/powerpc/kernel/ftrace.c
32009 --- linux-2.6.29.owrt/arch/powerpc/kernel/ftrace.c 2009-05-10 22:04:40.000000000 +0200
32010 +++ linux-2.6.29-rc3.owrt/arch/powerpc/kernel/ftrace.c 2009-05-10 23:48:28.000000000 +0200
32011 @@ -195,9 +195,8 @@
32012 return -EINVAL;
32013 }
32014
32015 - /* The bottom half is signed extended */
32016 - offset = ((unsigned)((unsigned short)jmp[0]) << 16) +
32017 - (int)((short)jmp[1]);
32018 + offset = (unsigned)((unsigned short)jmp[0]) << 16 |
32019 + (unsigned)((unsigned short)jmp[1]);
32020
32021 DEBUGP(" %x ", offset);
32022
32023 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/kernel/head_32.S linux-2.6.29-rc3.owrt/arch/powerpc/kernel/head_32.S
32024 --- linux-2.6.29.owrt/arch/powerpc/kernel/head_32.S 2009-05-10 22:04:40.000000000 +0200
32025 +++ linux-2.6.29-rc3.owrt/arch/powerpc/kernel/head_32.S 2009-05-10 23:48:28.000000000 +0200
32026 @@ -511,11 +511,8 @@
32027 and r1,r1,r2 /* writable if _RW and _DIRTY */
32028 rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */
32029 rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */
32030 - ori r1,r1,0xe04 /* clear out reserved bits */
32031 + ori r1,r1,0xe14 /* clear out reserved bits and M */
32032 andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */
32033 -BEGIN_FTR_SECTION
32034 - rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */
32035 -END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT)
32036 mtspr SPRN_RPA,r1
32037 mfspr r3,SPRN_IMISS
32038 tlbli r3
32039 @@ -588,11 +585,8 @@
32040 and r1,r1,r2 /* writable if _RW and _DIRTY */
32041 rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */
32042 rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */
32043 - ori r1,r1,0xe04 /* clear out reserved bits */
32044 + ori r1,r1,0xe14 /* clear out reserved bits and M */
32045 andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */
32046 -BEGIN_FTR_SECTION
32047 - rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */
32048 -END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT)
32049 mtspr SPRN_RPA,r1
32050 mfspr r3,SPRN_DMISS
32051 tlbld r3
32052 @@ -659,11 +653,8 @@
32053 stw r3,0(r2) /* update PTE (accessed/dirty bits) */
32054 /* Convert linux-style PTE to low word of PPC-style PTE */
32055 rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */
32056 - li r1,0xe05 /* clear out reserved bits & PP lsb */
32057 + li r1,0xe15 /* clear out reserved bits and M */
32058 andc r1,r3,r1 /* PP = user? 2: 0 */
32059 -BEGIN_FTR_SECTION
32060 - rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */
32061 -END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT)
32062 mtspr SPRN_RPA,r1
32063 mfspr r3,SPRN_DMISS
32064 tlbld r3
32065 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/kernel/pci-common.c linux-2.6.29-rc3.owrt/arch/powerpc/kernel/pci-common.c
32066 --- linux-2.6.29.owrt/arch/powerpc/kernel/pci-common.c 2009-05-10 22:04:40.000000000 +0200
32067 +++ linux-2.6.29-rc3.owrt/arch/powerpc/kernel/pci-common.c 2009-05-10 23:48:28.000000000 +0200
32068 @@ -16,6 +16,8 @@
32069 * 2 of the License, or (at your option) any later version.
32070 */
32071
32072 +#define DEBUG
32073 +
32074 #include <linux/kernel.h>
32075 #include <linux/pci.h>
32076 #include <linux/string.h>
32077 @@ -256,8 +258,7 @@
32078 } else {
32079 pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",
32080 oirq.size, oirq.specifier[0], oirq.specifier[1],
32081 - oirq.controller ? oirq.controller->full_name :
32082 - "<default>");
32083 + oirq.controller->full_name);
32084
32085 virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
32086 oirq.size);
32087 @@ -561,21 +562,8 @@
32088 (unsigned long long)(offset + size - 1));
32089
32090 if (mmap_state == pci_mmap_mem) {
32091 - /* Hack alert !
32092 - *
32093 - * Because X is lame and can fail starting if it gets an error trying
32094 - * to mmap legacy_mem (instead of just moving on without legacy memory
32095 - * access) we fake it here by giving it anonymous memory, effectively
32096 - * behaving just like /dev/zero
32097 - */
32098 - if ((offset + size) > hose->isa_mem_size) {
32099 - printk(KERN_DEBUG
32100 - "Process %s (pid:%d) mapped non-existing PCI legacy memory for 0%04x:%02x\n",
32101 - current->comm, current->pid, pci_domain_nr(bus), bus->number);
32102 - if (vma->vm_flags & VM_SHARED)
32103 - return shmem_zero_setup(vma);
32104 - return 0;
32105 - }
32106 + if ((offset + size) > hose->isa_mem_size)
32107 + return -ENXIO;
32108 offset += hose->isa_mem_phys;
32109 } else {
32110 unsigned long io_offset = (unsigned long)hose->io_base_virt - _IO_BASE;
32111 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/kvm/powerpc.c linux-2.6.29-rc3.owrt/arch/powerpc/kvm/powerpc.c
32112 --- linux-2.6.29.owrt/arch/powerpc/kvm/powerpc.c 2009-05-10 22:04:40.000000000 +0200
32113 +++ linux-2.6.29-rc3.owrt/arch/powerpc/kvm/powerpc.c 2009-05-10 23:48:28.000000000 +0200
32114 @@ -125,10 +125,6 @@
32115 }
32116 }
32117
32118 -void kvm_arch_sync_events(struct kvm *kvm)
32119 -{
32120 -}
32121 -
32122 void kvm_arch_destroy_vm(struct kvm *kvm)
32123 {
32124 kvmppc_free_vcpus(kvm);
32125 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/lib/copyuser_64.S linux-2.6.29-rc3.owrt/arch/powerpc/lib/copyuser_64.S
32126 --- linux-2.6.29.owrt/arch/powerpc/lib/copyuser_64.S 2009-05-10 22:04:40.000000000 +0200
32127 +++ linux-2.6.29-rc3.owrt/arch/powerpc/lib/copyuser_64.S 2009-05-10 23:48:28.000000000 +0200
32128 @@ -62,19 +62,18 @@
32129 72: std r8,8(r3)
32130 beq+ 3f
32131 addi r3,r3,16
32132 +23: ld r9,8(r4)
32133 .Ldo_tail:
32134 bf cr7*4+1,1f
32135 -23: lwz r9,8(r4)
32136 - addi r4,r4,4
32137 + rotldi r9,r9,32
32138 73: stw r9,0(r3)
32139 addi r3,r3,4
32140 1: bf cr7*4+2,2f
32141 -44: lhz r9,8(r4)
32142 - addi r4,r4,2
32143 + rotldi r9,r9,16
32144 74: sth r9,0(r3)
32145 addi r3,r3,2
32146 2: bf cr7*4+3,3f
32147 -45: lbz r9,8(r4)
32148 + rotldi r9,r9,8
32149 75: stb r9,0(r3)
32150 3: li r3,0
32151 blr
32152 @@ -142,24 +141,11 @@
32153 6: cmpwi cr1,r5,8
32154 addi r3,r3,32
32155 sld r9,r9,r10
32156 - ble cr1,7f
32157 + ble cr1,.Ldo_tail
32158 34: ld r0,8(r4)
32159 srd r7,r0,r11
32160 or r9,r7,r9
32161 -7:
32162 - bf cr7*4+1,1f
32163 - rotldi r9,r9,32
32164 -94: stw r9,0(r3)
32165 - addi r3,r3,4
32166 -1: bf cr7*4+2,2f
32167 - rotldi r9,r9,16
32168 -95: sth r9,0(r3)
32169 - addi r3,r3,2
32170 -2: bf cr7*4+3,3f
32171 - rotldi r9,r9,8
32172 -96: stb r9,0(r3)
32173 -3: li r3,0
32174 - blr
32175 + b .Ldo_tail
32176
32177 .Ldst_unaligned:
32178 PPC_MTOCRF 0x01,r6 /* put #bytes to 8B bdry into cr7 */
32179 @@ -232,6 +218,7 @@
32180 121:
32181 132:
32182 addi r3,r3,8
32183 +123:
32184 134:
32185 135:
32186 138:
32187 @@ -239,9 +226,6 @@
32188 140:
32189 141:
32190 142:
32191 -123:
32192 -144:
32193 -145:
32194
32195 /*
32196 * here we have had a fault on a load and r3 points to the first
32197 @@ -325,9 +309,6 @@
32198 187:
32199 188:
32200 189:
32201 -194:
32202 -195:
32203 -196:
32204 1:
32205 ld r6,-24(r1)
32206 ld r5,-8(r1)
32207 @@ -348,9 +329,7 @@
32208 .llong 72b,172b
32209 .llong 23b,123b
32210 .llong 73b,173b
32211 - .llong 44b,144b
32212 .llong 74b,174b
32213 - .llong 45b,145b
32214 .llong 75b,175b
32215 .llong 24b,124b
32216 .llong 25b,125b
32217 @@ -368,9 +347,6 @@
32218 .llong 79b,179b
32219 .llong 80b,180b
32220 .llong 34b,134b
32221 - .llong 94b,194b
32222 - .llong 95b,195b
32223 - .llong 96b,196b
32224 .llong 35b,135b
32225 .llong 81b,181b
32226 .llong 36b,136b
32227 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/lib/memcpy_64.S linux-2.6.29-rc3.owrt/arch/powerpc/lib/memcpy_64.S
32228 --- linux-2.6.29.owrt/arch/powerpc/lib/memcpy_64.S 2009-05-10 22:04:40.000000000 +0200
32229 +++ linux-2.6.29-rc3.owrt/arch/powerpc/lib/memcpy_64.S 2009-05-10 23:48:28.000000000 +0200
32230 @@ -53,19 +53,18 @@
32231 3: std r8,8(r3)
32232 beq 3f
32233 addi r3,r3,16
32234 + ld r9,8(r4)
32235 .Ldo_tail:
32236 bf cr7*4+1,1f
32237 - lwz r9,8(r4)
32238 - addi r4,r4,4
32239 + rotldi r9,r9,32
32240 stw r9,0(r3)
32241 addi r3,r3,4
32242 1: bf cr7*4+2,2f
32243 - lhz r9,8(r4)
32244 - addi r4,r4,2
32245 + rotldi r9,r9,16
32246 sth r9,0(r3)
32247 addi r3,r3,2
32248 2: bf cr7*4+3,3f
32249 - lbz r9,8(r4)
32250 + rotldi r9,r9,8
32251 stb r9,0(r3)
32252 3: ld r3,48(r1) /* return dest pointer */
32253 blr
32254 @@ -134,24 +133,11 @@
32255 cmpwi cr1,r5,8
32256 addi r3,r3,32
32257 sld r9,r9,r10
32258 - ble cr1,6f
32259 + ble cr1,.Ldo_tail
32260 ld r0,8(r4)
32261 srd r7,r0,r11
32262 or r9,r7,r9
32263 -6:
32264 - bf cr7*4+1,1f
32265 - rotldi r9,r9,32
32266 - stw r9,0(r3)
32267 - addi r3,r3,4
32268 -1: bf cr7*4+2,2f
32269 - rotldi r9,r9,16
32270 - sth r9,0(r3)
32271 - addi r3,r3,2
32272 -2: bf cr7*4+3,3f
32273 - rotldi r9,r9,8
32274 - stb r9,0(r3)
32275 -3: ld r3,48(r1) /* return dest pointer */
32276 - blr
32277 + b .Ldo_tail
32278
32279 .Ldst_unaligned:
32280 PPC_MTOCRF 0x01,r6 # put #bytes to 8B bdry into cr7
32281 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/lib/sstep.c linux-2.6.29-rc3.owrt/arch/powerpc/lib/sstep.c
32282 --- linux-2.6.29.owrt/arch/powerpc/lib/sstep.c 2009-05-10 22:04:40.000000000 +0200
32283 +++ linux-2.6.29-rc3.owrt/arch/powerpc/lib/sstep.c 2009-05-10 23:48:28.000000000 +0200
32284 @@ -172,8 +172,6 @@
32285 }
32286 break;
32287 case 0x378: /* orx */
32288 - if (instr & 1)
32289 - break;
32290 rs = (instr >> 21) & 0x1f;
32291 rb = (instr >> 11) & 0x1f;
32292 if (rs == rb) { /* mr */
32293 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/mm/fsl_booke_mmu.c linux-2.6.29-rc3.owrt/arch/powerpc/mm/fsl_booke_mmu.c
32294 --- linux-2.6.29.owrt/arch/powerpc/mm/fsl_booke_mmu.c 2009-05-10 22:04:40.000000000 +0200
32295 +++ linux-2.6.29-rc3.owrt/arch/powerpc/mm/fsl_booke_mmu.c 2009-05-10 23:48:28.000000000 +0200
32296 @@ -73,7 +73,7 @@
32297 /*
32298 * Return PA for this VA if it is mapped by a CAM, or 0
32299 */
32300 -phys_addr_t v_mapped_by_tlbcam(unsigned long va)
32301 +unsigned long v_mapped_by_tlbcam(unsigned long va)
32302 {
32303 int b;
32304 for (b = 0; b < tlbcam_index; ++b)
32305 @@ -85,7 +85,7 @@
32306 /*
32307 * Return VA for a given PA or 0 if not mapped
32308 */
32309 -unsigned long p_mapped_by_tlbcam(phys_addr_t pa)
32310 +unsigned long p_mapped_by_tlbcam(unsigned long pa)
32311 {
32312 int b;
32313 for (b = 0; b < tlbcam_index; ++b)
32314 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/mm/hash_low_32.S linux-2.6.29-rc3.owrt/arch/powerpc/mm/hash_low_32.S
32315 --- linux-2.6.29.owrt/arch/powerpc/mm/hash_low_32.S 2009-05-10 22:04:40.000000000 +0200
32316 +++ linux-2.6.29-rc3.owrt/arch/powerpc/mm/hash_low_32.S 2009-05-10 23:48:28.000000000 +0200
32317 @@ -320,7 +320,7 @@
32318 and r8,r8,r0 /* writable if _RW & _DIRTY */
32319 rlwimi r5,r5,32-1,30,30 /* _PAGE_USER -> PP msb */
32320 rlwimi r5,r5,32-2,31,31 /* _PAGE_USER -> PP lsb */
32321 - ori r8,r8,0xe04 /* clear out reserved bits */
32322 + ori r8,r8,0xe14 /* clear out reserved bits and M */
32323 andc r8,r5,r8 /* PP = user? (rw&dirty? 2: 3): 0 */
32324 BEGIN_FTR_SECTION
32325 rlwinm r8,r8,0,~_PAGE_COHERENT /* clear M (coherence not required) */
32326 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/mm/numa.c linux-2.6.29-rc3.owrt/arch/powerpc/mm/numa.c
32327 --- linux-2.6.29.owrt/arch/powerpc/mm/numa.c 2009-05-10 22:04:40.000000000 +0200
32328 +++ linux-2.6.29-rc3.owrt/arch/powerpc/mm/numa.c 2009-05-10 23:48:28.000000000 +0200
32329 @@ -19,7 +19,6 @@
32330 #include <linux/notifier.h>
32331 #include <linux/lmb.h>
32332 #include <linux/of.h>
32333 -#include <linux/pfn.h>
32334 #include <asm/sparsemem.h>
32335 #include <asm/prom.h>
32336 #include <asm/system.h>
32337 @@ -883,7 +882,7 @@
32338 unsigned long physbase = lmb.reserved.region[i].base;
32339 unsigned long size = lmb.reserved.region[i].size;
32340 unsigned long start_pfn = physbase >> PAGE_SHIFT;
32341 - unsigned long end_pfn = PFN_UP(physbase + size);
32342 + unsigned long end_pfn = ((physbase + size) >> PAGE_SHIFT);
32343 struct node_active_region node_ar;
32344 unsigned long node_end_pfn = node->node_start_pfn +
32345 node->node_spanned_pages;
32346 @@ -909,7 +908,7 @@
32347 */
32348 if (end_pfn > node_ar.end_pfn)
32349 reserve_size = (node_ar.end_pfn << PAGE_SHIFT)
32350 - - physbase;
32351 + - (start_pfn << PAGE_SHIFT);
32352 /*
32353 * Only worry about *this* node, others may not
32354 * yet have valid NODE_DATA().
32355 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/mm/pgtable_32.c linux-2.6.29-rc3.owrt/arch/powerpc/mm/pgtable_32.c
32356 --- linux-2.6.29.owrt/arch/powerpc/mm/pgtable_32.c 2009-05-10 22:04:40.000000000 +0200
32357 +++ linux-2.6.29-rc3.owrt/arch/powerpc/mm/pgtable_32.c 2009-05-10 23:48:28.000000000 +0200
32358 @@ -61,8 +61,8 @@
32359
32360 #ifdef HAVE_TLBCAM
32361 extern unsigned int tlbcam_index;
32362 -extern phys_addr_t v_mapped_by_tlbcam(unsigned long va);
32363 -extern unsigned long p_mapped_by_tlbcam(phys_addr_t pa);
32364 +extern unsigned long v_mapped_by_tlbcam(unsigned long va);
32365 +extern unsigned long p_mapped_by_tlbcam(unsigned long pa);
32366 #else /* !HAVE_TLBCAM */
32367 #define v_mapped_by_tlbcam(x) (0UL)
32368 #define p_mapped_by_tlbcam(x) (0UL)
32369 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/oprofile/cell/spu_profiler.c linux-2.6.29-rc3.owrt/arch/powerpc/oprofile/cell/spu_profiler.c
32370 --- linux-2.6.29.owrt/arch/powerpc/oprofile/cell/spu_profiler.c 2009-05-10 22:04:39.000000000 +0200
32371 +++ linux-2.6.29-rc3.owrt/arch/powerpc/oprofile/cell/spu_profiler.c 2009-05-10 23:48:28.000000000 +0200
32372 @@ -16,7 +16,6 @@
32373 #include <linux/smp.h>
32374 #include <linux/slab.h>
32375 #include <asm/cell-pmu.h>
32376 -#include <asm/time.h>
32377 #include "pr_util.h"
32378
32379 #define SCALE_SHIFT 14
32380 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/52xx/mpc52xx_pci.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/52xx/mpc52xx_pci.c
32381 --- linux-2.6.29.owrt/arch/powerpc/platforms/52xx/mpc52xx_pci.c 2009-05-10 22:04:40.000000000 +0200
32382 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/52xx/mpc52xx_pci.c 2009-05-10 23:48:28.000000000 +0200
32383 @@ -20,6 +20,14 @@
32384
32385
32386 /* ======================================================================== */
32387 +/* PCI windows config */
32388 +/* ======================================================================== */
32389 +
32390 +#define MPC52xx_PCI_TARGET_IO 0xf0000000
32391 +#define MPC52xx_PCI_TARGET_MEM 0x00000000
32392 +
32393 +
32394 +/* ======================================================================== */
32395 /* Structures mapping & Defines for PCI Unit */
32396 /* ======================================================================== */
32397
32398 @@ -236,7 +244,7 @@
32399
32400 static void __init
32401 mpc52xx_pci_setup(struct pci_controller *hose,
32402 - struct mpc52xx_pci __iomem *pci_regs, phys_addr_t pci_phys)
32403 + struct mpc52xx_pci __iomem *pci_regs)
32404 {
32405 struct resource *res;
32406 u32 tmp;
32407 @@ -306,14 +314,10 @@
32408 /* Set all the IWCR fields at once; they're in the same reg */
32409 out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
32410
32411 - /* Map IMMR onto PCI bus */
32412 - pci_phys &= 0xfffc0000; /* bar0 has only 14 significant bits */
32413 - out_be32(&pci_regs->tbatr0, MPC52xx_PCI_TBATR_ENABLE | pci_phys);
32414 - out_be32(&pci_regs->bar0, PCI_BASE_ADDRESS_MEM_PREFETCH | pci_phys);
32415 -
32416 - /* Map memory onto PCI bus */
32417 - out_be32(&pci_regs->tbatr1, MPC52xx_PCI_TBATR_ENABLE);
32418 - out_be32(&pci_regs->bar1, PCI_BASE_ADDRESS_MEM_PREFETCH);
32419 + out_be32(&pci_regs->tbatr0,
32420 + MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
32421 + out_be32(&pci_regs->tbatr1,
32422 + MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
32423
32424 out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD | MPC52xx_PCI_TCR_WCT8);
32425
32426 @@ -410,7 +414,7 @@
32427
32428 /* Finish setting up PCI using values obtained by
32429 * pci_proces_bridge_OF_ranges */
32430 - mpc52xx_pci_setup(hose, pci_regs, rsrc.start);
32431 + mpc52xx_pci_setup(hose, pci_regs);
32432
32433 return 0;
32434 }
32435 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c
32436 --- linux-2.6.29.owrt/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c 2009-05-10 22:04:40.000000000 +0200
32437 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/82xx/pq2ads-pci-pic.c 2009-05-10 23:48:28.000000000 +0200
32438 @@ -186,7 +186,7 @@
32439 iounmap(priv->regs);
32440 out_free_bootmem:
32441 free_bootmem((unsigned long)priv,
32442 - sizeof(struct pq2ads_pci_pic));
32443 + sizeof(sizeof(struct pq2ads_pci_pic)));
32444 of_node_put(np);
32445 out_unmap_irq:
32446 irq_dispose_mapping(irq);
32447 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/86xx/gef_sbc610.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/86xx/gef_sbc610.c
32448 --- linux-2.6.29.owrt/arch/powerpc/platforms/86xx/gef_sbc610.c 2009-05-10 22:04:40.000000000 +0200
32449 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/86xx/gef_sbc610.c 2009-05-10 23:48:28.000000000 +0200
32450 @@ -142,10 +142,6 @@
32451 {
32452 unsigned int val;
32453
32454 - /* Do not do the fixup on other platforms! */
32455 - if (!machine_is(gef_sbc610))
32456 - return;
32457 -
32458 printk(KERN_INFO "Running NEC uPD720101 Fixup\n");
32459
32460 /* Ensure ports 1, 2, 3, 4 & 5 are enabled */
32461 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/embedded6xx/linkstation.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/embedded6xx/linkstation.c
32462 --- linux-2.6.29.owrt/arch/powerpc/platforms/embedded6xx/linkstation.c 2009-05-10 22:04:40.000000000 +0200
32463 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/embedded6xx/linkstation.c 2009-05-10 23:48:28.000000000 +0200
32464 @@ -12,6 +12,7 @@
32465
32466 #include <linux/kernel.h>
32467 #include <linux/initrd.h>
32468 +#include <linux/mtd/physmap.h>
32469 #include <linux/of_platform.h>
32470
32471 #include <asm/time.h>
32472 @@ -21,6 +22,39 @@
32473
32474 #include "mpc10x.h"
32475
32476 +static struct mtd_partition linkstation_physmap_partitions[] = {
32477 + {
32478 + .name = "mtd_firmimg",
32479 + .offset = 0x000000,
32480 + .size = 0x300000,
32481 + },
32482 + {
32483 + .name = "mtd_bootcode",
32484 + .offset = 0x300000,
32485 + .size = 0x070000,
32486 + },
32487 + {
32488 + .name = "mtd_status",
32489 + .offset = 0x370000,
32490 + .size = 0x010000,
32491 + },
32492 + {
32493 + .name = "mtd_conf",
32494 + .offset = 0x380000,
32495 + .size = 0x080000,
32496 + },
32497 + {
32498 + .name = "mtd_allflash",
32499 + .offset = 0x000000,
32500 + .size = 0x400000,
32501 + },
32502 + {
32503 + .name = "mtd_data",
32504 + .offset = 0x310000,
32505 + .size = 0x0f0000,
32506 + },
32507 +};
32508 +
32509 static __initdata struct of_device_id of_bus_ids[] = {
32510 { .type = "soc", },
32511 { .compatible = "simple-bus", },
32512 @@ -65,6 +99,10 @@
32513 static void __init linkstation_setup_arch(void)
32514 {
32515 struct device_node *np;
32516 +#ifdef CONFIG_MTD_PHYSMAP
32517 + physmap_set_partitions(linkstation_physmap_partitions,
32518 + ARRAY_SIZE(linkstation_physmap_partitions));
32519 +#endif
32520
32521 /* Lookup PCI host bridges */
32522 for_each_compatible_node(np, "pci", "mpc10x-pci")
32523 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/embedded6xx/storcenter.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/embedded6xx/storcenter.c
32524 --- linux-2.6.29.owrt/arch/powerpc/platforms/embedded6xx/storcenter.c 2009-05-10 22:04:40.000000000 +0200
32525 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/embedded6xx/storcenter.c 2009-05-10 23:48:28.000000000 +0200
32526 @@ -14,6 +14,7 @@
32527 #include <linux/kernel.h>
32528 #include <linux/pci.h>
32529 #include <linux/initrd.h>
32530 +#include <linux/mtd/physmap.h>
32531 #include <linux/of_platform.h>
32532
32533 #include <asm/system.h>
32534 @@ -25,6 +26,32 @@
32535 #include "mpc10x.h"
32536
32537
32538 +#ifdef CONFIG_MTD_PHYSMAP
32539 +static struct mtd_partition storcenter_physmap_partitions[] = {
32540 + {
32541 + .name = "kernel",
32542 + .offset = 0x000000,
32543 + .size = 0x170000,
32544 + },
32545 + {
32546 + .name = "rootfs",
32547 + .offset = 0x170000,
32548 + .size = 0x590000,
32549 + },
32550 + {
32551 + .name = "uboot",
32552 + .offset = 0x700000,
32553 + .size = 0x040000,
32554 + },
32555 + {
32556 + .name = "config",
32557 + .offset = 0x740000,
32558 + .size = 0x0c0000,
32559 + },
32560 +};
32561 +#endif
32562 +
32563 +
32564 static __initdata struct of_device_id storcenter_of_bus[] = {
32565 { .name = "soc", },
32566 {},
32567 @@ -69,6 +96,11 @@
32568 {
32569 struct device_node *np;
32570
32571 +#ifdef CONFIG_MTD_PHYSMAP
32572 + physmap_set_partitions(storcenter_physmap_partitions,
32573 + ARRAY_SIZE(storcenter_physmap_partitions));
32574 +#endif
32575 +
32576 /* Lookup PCI host bridges */
32577 for_each_compatible_node(np, "pci", "mpc10x-pci")
32578 storcenter_add_bridge(np);
32579 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/ps3/Kconfig linux-2.6.29-rc3.owrt/arch/powerpc/platforms/ps3/Kconfig
32580 --- linux-2.6.29.owrt/arch/powerpc/platforms/ps3/Kconfig 2009-05-10 22:04:40.000000000 +0200
32581 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/ps3/Kconfig 2009-05-10 23:48:28.000000000 +0200
32582 @@ -128,13 +128,6 @@
32583 be disabled on the kernel command line using "ps3flash=off", to
32584 not allocate this fixed buffer.
32585
32586 -config PS3_VRAM
32587 - tristate "PS3 Video RAM Storage Driver"
32588 - depends on FB_PS3=y && BLOCK && m
32589 - help
32590 - This driver allows you to use excess PS3 video RAM as volatile
32591 - storage or system swap.
32592 -
32593 config PS3_LPM
32594 tristate "PS3 Logical Performance Monitor support"
32595 depends on PPC_PS3
32596 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/ps3/mm.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/ps3/mm.c
32597 --- linux-2.6.29.owrt/arch/powerpc/platforms/ps3/mm.c 2009-05-10 22:04:40.000000000 +0200
32598 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/ps3/mm.c 2009-05-10 23:48:28.000000000 +0200
32599 @@ -328,7 +328,7 @@
32600 return result;
32601 }
32602
32603 -device_initcall(ps3_mm_add_memory);
32604 +core_initcall(ps3_mm_add_memory);
32605
32606 /*============================================================================*/
32607 /* dma routines */
32608 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/platforms/pseries/hotplug-memory.c linux-2.6.29-rc3.owrt/arch/powerpc/platforms/pseries/hotplug-memory.c
32609 --- linux-2.6.29.owrt/arch/powerpc/platforms/pseries/hotplug-memory.c 2009-05-10 22:04:40.000000000 +0200
32610 +++ linux-2.6.29-rc3.owrt/arch/powerpc/platforms/pseries/hotplug-memory.c 2009-05-10 23:48:28.000000000 +0200
32611 @@ -14,7 +14,6 @@
32612 #include <asm/firmware.h>
32613 #include <asm/machdep.h>
32614 #include <asm/pSeries_reconfig.h>
32615 -#include <asm/sparsemem.h>
32616
32617 static int pseries_remove_lmb(unsigned long base, unsigned int lmb_size)
32618 {
32619 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/sysdev/cpm2_pic.c linux-2.6.29-rc3.owrt/arch/powerpc/sysdev/cpm2_pic.c
32620 --- linux-2.6.29.owrt/arch/powerpc/sysdev/cpm2_pic.c 2009-05-10 22:04:39.000000000 +0200
32621 +++ linux-2.6.29-rc3.owrt/arch/powerpc/sysdev/cpm2_pic.c 2009-05-10 23:48:28.000000000 +0200
32622 @@ -165,7 +165,7 @@
32623 edibit = (14 - (src - CPM2_IRQ_EXT1));
32624 else
32625 if (src >= CPM2_IRQ_PORTC15 && src <= CPM2_IRQ_PORTC0)
32626 - edibit = (31 - (CPM2_IRQ_PORTC0 - src));
32627 + edibit = (31 - (src - CPM2_IRQ_PORTC15));
32628 else
32629 return (flow_type & IRQ_TYPE_LEVEL_LOW) ? 0 : -EINVAL;
32630
32631 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/sysdev/ipic.c linux-2.6.29-rc3.owrt/arch/powerpc/sysdev/ipic.c
32632 --- linux-2.6.29.owrt/arch/powerpc/sysdev/ipic.c 2009-05-10 22:04:39.000000000 +0200
32633 +++ linux-2.6.29-rc3.owrt/arch/powerpc/sysdev/ipic.c 2009-05-10 23:48:28.000000000 +0200
32634 @@ -890,7 +890,7 @@
32635 return irq_linear_revmap(primary_ipic->irqhost, irq);
32636 }
32637
32638 -#ifdef CONFIG_SUSPEND
32639 +#ifdef CONFIG_PM
32640 static struct {
32641 u32 sicfr;
32642 u32 siprr[2];
32643 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/powerpc/sysdev/ppc4xx_pci.c linux-2.6.29-rc3.owrt/arch/powerpc/sysdev/ppc4xx_pci.c
32644 --- linux-2.6.29.owrt/arch/powerpc/sysdev/ppc4xx_pci.c 2009-05-10 22:04:39.000000000 +0200
32645 +++ linux-2.6.29-rc3.owrt/arch/powerpc/sysdev/ppc4xx_pci.c 2009-05-10 23:48:28.000000000 +0200
32646 @@ -204,23 +204,6 @@
32647 {
32648 u32 ma, pcila, pciha;
32649
32650 - /* Hack warning ! The "old" PCI 2.x cell only let us configure the low
32651 - * 32-bit of incoming PLB addresses. The top 4 bits of the 36-bit
32652 - * address are actually hard wired to a value that appears to depend
32653 - * on the specific SoC. For example, it's 0 on 440EP and 1 on 440EPx.
32654 - *
32655 - * The trick here is we just crop those top bits and ignore them when
32656 - * programming the chip. That means the device-tree has to be right
32657 - * for the specific part used (we don't print a warning if it's wrong
32658 - * but on the other hand, you'll crash quickly enough), but at least
32659 - * this code should work whatever the hard coded value is
32660 - */
32661 - plb_addr &= 0xffffffffull;
32662 -
32663 - /* Note: Due to the above hack, the test below doesn't actually test
32664 - * if you address is above 4G, but it tests that address and
32665 - * (address + size) are both contained in the same 4G
32666 - */
32667 if ((plb_addr + size) > 0xffffffffull || !is_power_of_2(size) ||
32668 size < 0x1000 || (plb_addr & (size - 1)) != 0) {
32669 printk(KERN_WARNING "%s: Resource out of range\n",
32670 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/crypto/aes_s390.c linux-2.6.29-rc3.owrt/arch/s390/crypto/aes_s390.c
32671 --- linux-2.6.29.owrt/arch/s390/crypto/aes_s390.c 2009-05-10 22:04:39.000000000 +0200
32672 +++ linux-2.6.29-rc3.owrt/arch/s390/crypto/aes_s390.c 2009-05-10 23:48:28.000000000 +0200
32673 @@ -556,7 +556,7 @@
32674 module_init(aes_s390_init);
32675 module_exit(aes_s390_fini);
32676
32677 -MODULE_ALIAS("aes-all");
32678 +MODULE_ALIAS("aes");
32679
32680 MODULE_DESCRIPTION("Rijndael (AES) Cipher Algorithm");
32681 MODULE_LICENSE("GPL");
32682 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/defconfig linux-2.6.29-rc3.owrt/arch/s390/defconfig
32683 --- linux-2.6.29.owrt/arch/s390/defconfig 2009-05-10 22:04:39.000000000 +0200
32684 +++ linux-2.6.29-rc3.owrt/arch/s390/defconfig 2009-05-10 23:48:28.000000000 +0200
32685 @@ -1,7 +1,7 @@
32686 #
32687 # Automatically generated make config: don't edit
32688 -# Linux kernel version: 2.6.29-rc4
32689 -# Wed Feb 11 10:07:16 2009
32690 +# Linux kernel version: 2.6.28-rc6
32691 +# Thu Nov 27 11:00:49 2008
32692 #
32693 CONFIG_SCHED_MC=y
32694 CONFIG_MMU=y
32695 @@ -14,14 +14,12 @@
32696 # CONFIG_ARCH_HAS_ILOG2_U64 is not set
32697 CONFIG_GENERIC_HWEIGHT=y
32698 CONFIG_GENERIC_TIME=y
32699 -CONFIG_GENERIC_TIME_VSYSCALL=y
32700 CONFIG_GENERIC_CLOCKEVENTS=y
32701 CONFIG_GENERIC_BUG=y
32702 CONFIG_NO_IOMEM=y
32703 CONFIG_NO_DMA=y
32704 CONFIG_GENERIC_LOCKBREAK=y
32705 CONFIG_PGSTE=y
32706 -CONFIG_VIRT_CPU_ACCOUNTING=y
32707 CONFIG_S390=y
32708 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
32709
32710 @@ -41,29 +39,20 @@
32711 # CONFIG_TASKSTATS is not set
32712 CONFIG_AUDIT=y
32713 # CONFIG_AUDITSYSCALL is not set
32714 -
32715 -#
32716 -# RCU Subsystem
32717 -#
32718 -CONFIG_CLASSIC_RCU=y
32719 -# CONFIG_TREE_RCU is not set
32720 -# CONFIG_PREEMPT_RCU is not set
32721 -# CONFIG_TREE_RCU_TRACE is not set
32722 -# CONFIG_PREEMPT_RCU_TRACE is not set
32723 CONFIG_IKCONFIG=y
32724 CONFIG_IKCONFIG_PROC=y
32725 CONFIG_LOG_BUF_SHIFT=17
32726 -CONFIG_GROUP_SCHED=y
32727 -CONFIG_FAIR_GROUP_SCHED=y
32728 -# CONFIG_RT_GROUP_SCHED is not set
32729 -CONFIG_USER_SCHED=y
32730 -# CONFIG_CGROUP_SCHED is not set
32731 CONFIG_CGROUPS=y
32732 # CONFIG_CGROUP_DEBUG is not set
32733 CONFIG_CGROUP_NS=y
32734 # CONFIG_CGROUP_FREEZER is not set
32735 # CONFIG_CGROUP_DEVICE is not set
32736 # CONFIG_CPUSETS is not set
32737 +CONFIG_GROUP_SCHED=y
32738 +CONFIG_FAIR_GROUP_SCHED=y
32739 +# CONFIG_RT_GROUP_SCHED is not set
32740 +CONFIG_USER_SCHED=y
32741 +# CONFIG_CGROUP_SCHED is not set
32742 # CONFIG_CGROUP_CPUACCT is not set
32743 # CONFIG_RESOURCE_COUNTERS is not set
32744 CONFIG_SYSFS_DEPRECATED=y
32745 @@ -74,7 +63,6 @@
32746 CONFIG_IPC_NS=y
32747 # CONFIG_USER_NS is not set
32748 # CONFIG_PID_NS is not set
32749 -# CONFIG_NET_NS is not set
32750 CONFIG_BLK_DEV_INITRD=y
32751 CONFIG_INITRAMFS_SOURCE=""
32752 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
32753 @@ -103,17 +91,17 @@
32754 # CONFIG_SLUB is not set
32755 # CONFIG_SLOB is not set
32756 # CONFIG_PROFILING is not set
32757 +# CONFIG_MARKERS is not set
32758 CONFIG_HAVE_OPROFILE=y
32759 CONFIG_KPROBES=y
32760 -CONFIG_HAVE_SYSCALL_WRAPPERS=y
32761 CONFIG_KRETPROBES=y
32762 CONFIG_HAVE_KPROBES=y
32763 CONFIG_HAVE_KRETPROBES=y
32764 CONFIG_HAVE_ARCH_TRACEHOOK=y
32765 -CONFIG_USE_GENERIC_SMP_HELPERS=y
32766 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
32767 CONFIG_SLABINFO=y
32768 CONFIG_RT_MUTEXES=y
32769 +# CONFIG_TINY_SHMEM is not set
32770 CONFIG_BASE_SMALL=0
32771 CONFIG_MODULES=y
32772 # CONFIG_MODULE_FORCE_LOAD is not set
32773 @@ -121,7 +109,7 @@
32774 # CONFIG_MODULE_FORCE_UNLOAD is not set
32775 CONFIG_MODVERSIONS=y
32776 # CONFIG_MODULE_SRCVERSION_ALL is not set
32777 -CONFIG_INIT_ALL_POSSIBLE=y
32778 +CONFIG_KMOD=y
32779 CONFIG_STOP_MACHINE=y
32780 CONFIG_BLOCK=y
32781 # CONFIG_BLK_DEV_IO_TRACE is not set
32782 @@ -142,6 +130,7 @@
32783 # CONFIG_DEFAULT_NOOP is not set
32784 CONFIG_DEFAULT_IOSCHED="deadline"
32785 CONFIG_PREEMPT_NOTIFIERS=y
32786 +CONFIG_CLASSIC_RCU=y
32787 # CONFIG_FREEZER is not set
32788
32789 #
32790 @@ -172,7 +161,6 @@
32791 CONFIG_MARCH_Z900=y
32792 # CONFIG_MARCH_Z990 is not set
32793 # CONFIG_MARCH_Z9_109 is not set
32794 -# CONFIG_MARCH_Z10 is not set
32795 CONFIG_PACK_STACK=y
32796 # CONFIG_SMALL_STACK is not set
32797 CONFIG_CHECK_STACK=y
32798 @@ -186,6 +174,7 @@
32799 # CONFIG_PREEMPT_NONE is not set
32800 # CONFIG_PREEMPT_VOLUNTARY is not set
32801 CONFIG_PREEMPT=y
32802 +# CONFIG_PREEMPT_RCU is not set
32803 CONFIG_ARCH_SPARSEMEM_ENABLE=y
32804 CONFIG_ARCH_SPARSEMEM_DEFAULT=y
32805 CONFIG_ARCH_SELECT_MEMORY_MODEL=y
32806 @@ -206,6 +195,7 @@
32807 CONFIG_PAGEFLAGS_EXTENDED=y
32808 CONFIG_SPLIT_PTLOCK_CPUS=4
32809 CONFIG_MIGRATION=y
32810 +CONFIG_RESOURCES_64BIT=y
32811 CONFIG_PHYS_ADDR_T_64BIT=y
32812 CONFIG_ZONE_DMA_FLAG=1
32813 CONFIG_BOUNCE=y
32814 @@ -217,6 +207,7 @@
32815 #
32816 CONFIG_MACHCHK_WARNING=y
32817 CONFIG_QDIO=y
32818 +# CONFIG_QDIO_DEBUG is not set
32819 CONFIG_CHSC_SCH=m
32820
32821 #
32822 @@ -236,13 +227,15 @@
32823 # CONFIG_SHARED_KERNEL is not set
32824 # CONFIG_CMM is not set
32825 # CONFIG_PAGE_STATES is not set
32826 +CONFIG_VIRT_TIMER=y
32827 +CONFIG_VIRT_CPU_ACCOUNTING=y
32828 # CONFIG_APPLDATA_BASE is not set
32829 CONFIG_HZ_100=y
32830 # CONFIG_HZ_250 is not set
32831 # CONFIG_HZ_300 is not set
32832 # CONFIG_HZ_1000 is not set
32833 CONFIG_HZ=100
32834 -CONFIG_SCHED_HRTICK=y
32835 +# CONFIG_SCHED_HRTICK is not set
32836 CONFIG_S390_HYPFS_FS=y
32837 CONFIG_KEXEC=y
32838 # CONFIG_ZFCPDUMP is not set
32839 @@ -252,7 +245,6 @@
32840 #
32841 # Networking options
32842 #
32843 -CONFIG_COMPAT_NET_DEV_OPS=y
32844 CONFIG_PACKET=y
32845 # CONFIG_PACKET_MMAP is not set
32846 CONFIG_UNIX=y
32847 @@ -391,7 +383,6 @@
32848 CONFIG_NET_SCH_GRED=m
32849 CONFIG_NET_SCH_DSMARK=m
32850 # CONFIG_NET_SCH_NETEM is not set
32851 -# CONFIG_NET_SCH_DRR is not set
32852 # CONFIG_NET_SCH_INGRESS is not set
32853
32854 #
32855 @@ -409,7 +400,6 @@
32856 CONFIG_NET_CLS_RSVP=m
32857 CONFIG_NET_CLS_RSVP6=m
32858 CONFIG_NET_CLS_FLOW=m
32859 -# CONFIG_NET_CLS_CGROUP is not set
32860 # CONFIG_NET_EMATCH is not set
32861 CONFIG_NET_CLS_ACT=y
32862 CONFIG_NET_ACT_POLICE=y
32863 @@ -421,7 +411,6 @@
32864 # CONFIG_NET_ACT_SKBEDIT is not set
32865 # CONFIG_NET_CLS_IND is not set
32866 CONFIG_NET_SCH_FIFO=y
32867 -# CONFIG_DCB is not set
32868
32869 #
32870 # Network testing
32871 @@ -439,7 +428,6 @@
32872 # CONFIG_CAN_DEBUG_DEVICES is not set
32873 # CONFIG_AF_RXRPC is not set
32874 # CONFIG_PHONET is not set
32875 -# CONFIG_WIMAX is not set
32876 # CONFIG_RFKILL is not set
32877 # CONFIG_NET_9P is not set
32878 # CONFIG_PCMCIA is not set
32879 @@ -487,15 +475,11 @@
32880 CONFIG_DASD_EER=y
32881 CONFIG_VIRTIO_BLK=m
32882 CONFIG_MISC_DEVICES=y
32883 +# CONFIG_EEPROM_93CX6 is not set
32884 # CONFIG_ENCLOSURE_SERVICES is not set
32885 # CONFIG_C2PORT is not set
32886
32887 #
32888 -# EEPROM support
32889 -#
32890 -# CONFIG_EEPROM_93CX6 is not set
32891 -
32892 -#
32893 # SCSI device support
32894 #
32895 # CONFIG_RAID_ATTRS is not set
32896 @@ -536,7 +520,6 @@
32897 # CONFIG_SCSI_SRP_ATTRS is not set
32898 CONFIG_SCSI_LOWLEVEL=y
32899 # CONFIG_ISCSI_TCP is not set
32900 -# CONFIG_LIBFC is not set
32901 # CONFIG_SCSI_DEBUG is not set
32902 CONFIG_ZFCP=y
32903 CONFIG_SCSI_DH=m
32904 @@ -583,10 +566,6 @@
32905 CONFIG_NETDEV_1000=y
32906 CONFIG_NETDEV_10000=y
32907 # CONFIG_TR is not set
32908 -
32909 -#
32910 -# Enable WiMAX (Networking options) to see the WiMAX drivers
32911 -#
32912 # CONFIG_WAN is not set
32913
32914 #
32915 @@ -614,11 +593,9 @@
32916 #
32917 CONFIG_DEVKMEM=y
32918 CONFIG_UNIX98_PTYS=y
32919 -# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
32920 CONFIG_LEGACY_PTYS=y
32921 CONFIG_LEGACY_PTY_COUNT=256
32922 CONFIG_HVC_DRIVER=y
32923 -CONFIG_HVC_IUCV=y
32924 CONFIG_VIRTIO_CONSOLE=y
32925 CONFIG_HW_RANDOM=m
32926 CONFIG_HW_RANDOM_VIRTIO=m
32927 @@ -668,6 +645,7 @@
32928 # CONFIG_NEW_LEDS is not set
32929 CONFIG_ACCESSIBILITY=y
32930 # CONFIG_STAGING is not set
32931 +CONFIG_STAGING_EXCLUDE_BUILD=y
32932
32933 #
32934 # File systems
32935 @@ -690,7 +668,6 @@
32936 # CONFIG_XFS_FS is not set
32937 # CONFIG_GFS2_FS is not set
32938 # CONFIG_OCFS2_FS is not set
32939 -# CONFIG_BTRFS_FS is not set
32940 CONFIG_DNOTIFY=y
32941 CONFIG_INOTIFY=y
32942 CONFIG_INOTIFY_USER=y
32943 @@ -726,7 +703,10 @@
32944 # CONFIG_HUGETLBFS is not set
32945 # CONFIG_HUGETLB_PAGE is not set
32946 CONFIG_CONFIGFS_FS=m
32947 -CONFIG_MISC_FILESYSTEMS=y
32948 +
32949 +#
32950 +# Miscellaneous filesystems
32951 +#
32952 # CONFIG_ADFS_FS is not set
32953 # CONFIG_AFFS_FS is not set
32954 # CONFIG_HFS_FS is not set
32955 @@ -735,7 +715,6 @@
32956 # CONFIG_BFS_FS is not set
32957 # CONFIG_EFS_FS is not set
32958 # CONFIG_CRAMFS is not set
32959 -# CONFIG_SQUASHFS is not set
32960 # CONFIG_VXFS_FS is not set
32961 # CONFIG_MINIX_FS is not set
32962 # CONFIG_OMFS_FS is not set
32963 @@ -829,7 +808,6 @@
32964 CONFIG_DEBUG_MEMORY_INIT=y
32965 # CONFIG_DEBUG_LIST is not set
32966 # CONFIG_DEBUG_SG is not set
32967 -# CONFIG_DEBUG_NOTIFIERS is not set
32968 # CONFIG_FRAME_POINTER is not set
32969 # CONFIG_RCU_TORTURE_TEST is not set
32970 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
32971 @@ -840,19 +818,15 @@
32972 # CONFIG_FAULT_INJECTION is not set
32973 # CONFIG_LATENCYTOP is not set
32974 CONFIG_SYSCTL_SYSCALL_CHECK=y
32975 -CONFIG_HAVE_FUNCTION_TRACER=y
32976
32977 #
32978 # Tracers
32979 #
32980 -# CONFIG_FUNCTION_TRACER is not set
32981 # CONFIG_IRQSOFF_TRACER is not set
32982 # CONFIG_PREEMPT_TRACER is not set
32983 # CONFIG_SCHED_TRACER is not set
32984 # CONFIG_CONTEXT_SWITCH_TRACER is not set
32985 # CONFIG_BOOT_TRACER is not set
32986 -# CONFIG_TRACE_BRANCH_PROFILING is not set
32987 -# CONFIG_STACK_TRACER is not set
32988 # CONFIG_DYNAMIC_PRINTK_DEBUG is not set
32989 CONFIG_SAMPLES=y
32990 # CONFIG_SAMPLE_KOBJECT is not set
32991 @@ -873,17 +847,11 @@
32992 #
32993 CONFIG_CRYPTO_FIPS=y
32994 CONFIG_CRYPTO_ALGAPI=y
32995 -CONFIG_CRYPTO_ALGAPI2=y
32996 -CONFIG_CRYPTO_AEAD=m
32997 -CONFIG_CRYPTO_AEAD2=y
32998 +CONFIG_CRYPTO_AEAD=y
32999 CONFIG_CRYPTO_BLKCIPHER=y
33000 -CONFIG_CRYPTO_BLKCIPHER2=y
33001 -CONFIG_CRYPTO_HASH=m
33002 -CONFIG_CRYPTO_HASH2=y
33003 -CONFIG_CRYPTO_RNG=m
33004 -CONFIG_CRYPTO_RNG2=y
33005 +CONFIG_CRYPTO_HASH=y
33006 +CONFIG_CRYPTO_RNG=y
33007 CONFIG_CRYPTO_MANAGER=y
33008 -CONFIG_CRYPTO_MANAGER2=y
33009 CONFIG_CRYPTO_GF128MUL=m
33010 # CONFIG_CRYPTO_NULL is not set
33011 # CONFIG_CRYPTO_CRYPTD is not set
33012 @@ -917,7 +885,7 @@
33013 #
33014 # Digest
33015 #
33016 -CONFIG_CRYPTO_CRC32C=m
33017 +# CONFIG_CRYPTO_CRC32C is not set
33018 # CONFIG_CRYPTO_MD4 is not set
33019 CONFIG_CRYPTO_MD5=m
33020 # CONFIG_CRYPTO_MICHAEL_MIC is not set
33021 @@ -974,7 +942,6 @@
33022 # Library routines
33023 #
33024 CONFIG_BITREVERSE=m
33025 -CONFIG_GENERIC_FIND_LAST_BIT=y
33026 # CONFIG_CRC_CCITT is not set
33027 # CONFIG_CRC16 is not set
33028 CONFIG_CRC_T10DIF=y
33029 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/include/asm/cputime.h linux-2.6.29-rc3.owrt/arch/s390/include/asm/cputime.h
33030 --- linux-2.6.29.owrt/arch/s390/include/asm/cputime.h 2009-05-10 22:04:39.000000000 +0200
33031 +++ linux-2.6.29-rc3.owrt/arch/s390/include/asm/cputime.h 2009-05-10 23:48:28.000000000 +0200
33032 @@ -145,7 +145,7 @@
33033 value->tv_usec = rp.subreg.even / 4096;
33034 value->tv_sec = rp.subreg.odd;
33035 #else
33036 - value->tv_usec = (cputime % 4096000000ULL) / 4096;
33037 + value->tv_usec = cputime % 4096000000ULL;
33038 value->tv_sec = cputime / 4096000000ULL;
33039 #endif
33040 }
33041 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/include/asm/lowcore.h linux-2.6.29-rc3.owrt/arch/s390/include/asm/lowcore.h
33042 --- linux-2.6.29.owrt/arch/s390/include/asm/lowcore.h 2009-05-10 22:04:39.000000000 +0200
33043 +++ linux-2.6.29-rc3.owrt/arch/s390/include/asm/lowcore.h 2009-05-10 23:48:28.000000000 +0200
33044 @@ -384,8 +384,8 @@
33045 __u32 panic_magic; /* 0xe00 */
33046
33047 /* Per cpu primary space access list */
33048 - __u8 pad_0xe04[0xe38-0xe04]; /* 0xe04 */
33049 - __u64 vdso_per_cpu_data; /* 0xe38 */
33050 + __u8 pad_0xe04[0xe3c-0xe04]; /* 0xe04 */
33051 + __u32 vdso_per_cpu_data; /* 0xe3c */
33052 __u32 paste[16]; /* 0xe40 */
33053
33054 __u8 pad13[0x11b8-0xe80]; /* 0xe80 */
33055 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/include/asm/mman.h linux-2.6.29-rc3.owrt/arch/s390/include/asm/mman.h
33056 --- linux-2.6.29.owrt/arch/s390/include/asm/mman.h 2009-05-10 22:04:39.000000000 +0200
33057 +++ linux-2.6.29-rc3.owrt/arch/s390/include/asm/mman.h 2009-05-10 23:48:28.000000000 +0200
33058 @@ -22,9 +22,4 @@
33059 #define MCL_CURRENT 1 /* lock all current mappings */
33060 #define MCL_FUTURE 2 /* lock all future mappings */
33061
33062 -#if defined(__KERNEL__) && !defined(__ASSEMBLY__) && defined(CONFIG_64BIT)
33063 -int s390_mmap_check(unsigned long addr, unsigned long len);
33064 -#define arch_mmap_check(addr,len,flags) s390_mmap_check(addr,len)
33065 -#endif
33066 -
33067 #endif /* __S390_MMAN_H__ */
33068 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/include/asm/processor.h linux-2.6.29-rc3.owrt/arch/s390/include/asm/processor.h
33069 --- linux-2.6.29.owrt/arch/s390/include/asm/processor.h 2009-05-10 22:04:39.000000000 +0200
33070 +++ linux-2.6.29-rc3.owrt/arch/s390/include/asm/processor.h 2009-05-10 23:48:28.000000000 +0200
33071 @@ -61,7 +61,7 @@
33072 extern int get_cpu_capability(unsigned int *);
33073
33074 /*
33075 - * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit.
33076 + * User space process size: 2GB for 31 bit, 4TB for 64 bit.
33077 */
33078 #ifndef __s390x__
33079
33080 @@ -70,7 +70,8 @@
33081
33082 #else /* __s390x__ */
33083
33084 -#define TASK_SIZE_OF(tsk) ((tsk)->mm->context.asce_limit)
33085 +#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk,TIF_31BIT) ? \
33086 + (1UL << 31) : (1UL << 53))
33087 #define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \
33088 (1UL << 30) : (1UL << 41))
33089 #define TASK_SIZE TASK_SIZE_OF(current)
33090 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/include/asm/setup.h linux-2.6.29-rc3.owrt/arch/s390/include/asm/setup.h
33091 --- linux-2.6.29.owrt/arch/s390/include/asm/setup.h 2009-05-10 22:04:39.000000000 +0200
33092 +++ linux-2.6.29-rc3.owrt/arch/s390/include/asm/setup.h 2009-05-10 23:48:28.000000000 +0200
33093 @@ -43,8 +43,6 @@
33094
33095 extern struct mem_chunk memory_chunk[];
33096 extern unsigned long real_memory_size;
33097 -extern int memory_end_set;
33098 -extern unsigned long memory_end;
33099
33100 void detect_memory_layout(struct mem_chunk chunk[]);
33101
33102 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/include/asm/topology.h linux-2.6.29-rc3.owrt/arch/s390/include/asm/topology.h
33103 --- linux-2.6.29.owrt/arch/s390/include/asm/topology.h 2009-05-10 22:04:39.000000000 +0200
33104 +++ linux-2.6.29-rc3.owrt/arch/s390/include/asm/topology.h 2009-05-10 23:48:28.000000000 +0200
33105 @@ -30,8 +30,6 @@
33106 };
33107 #endif
33108
33109 -#define SD_MC_INIT SD_CPU_INIT
33110 -
33111 #include <asm-generic/topology.h>
33112
33113 #endif /* _ASM_S390_TOPOLOGY_H */
33114 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/kernel/irq.c linux-2.6.29-rc3.owrt/arch/s390/kernel/irq.c
33115 --- linux-2.6.29.owrt/arch/s390/kernel/irq.c 2009-05-10 22:04:39.000000000 +0200
33116 +++ linux-2.6.29-rc3.owrt/arch/s390/kernel/irq.c 2009-05-10 23:48:28.000000000 +0200
33117 @@ -95,7 +95,6 @@
33118 local_irq_restore(flags);
33119 }
33120
33121 -#ifdef CONFIG_PROC_FS
33122 void init_irq_proc(void)
33123 {
33124 struct proc_dir_entry *root_irq_dir;
33125 @@ -103,4 +102,3 @@
33126 root_irq_dir = proc_mkdir("irq", NULL);
33127 create_prof_cpu_mask(root_irq_dir);
33128 }
33129 -#endif
33130 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/kernel/mcount.S linux-2.6.29-rc3.owrt/arch/s390/kernel/mcount.S
33131 --- linux-2.6.29.owrt/arch/s390/kernel/mcount.S 2009-05-10 22:04:39.000000000 +0200
33132 +++ linux-2.6.29-rc3.owrt/arch/s390/kernel/mcount.S 2009-05-10 23:48:28.000000000 +0200
33133 @@ -5,8 +5,6 @@
33134 *
33135 */
33136
33137 -#include <asm/asm-offsets.h>
33138 -
33139 #ifndef CONFIG_64BIT
33140 .globl _mcount
33141 _mcount:
33142 @@ -16,7 +14,7 @@
33143 ahi %r15,-96
33144 l %r3,100(%r15)
33145 la %r2,0(%r14)
33146 - st %r1,__SF_BACKCHAIN(%r15)
33147 + st %r1,0(%r15)
33148 la %r3,0(%r3)
33149 bras %r14,0f
33150 .long ftrace_trace_function
33151 @@ -40,7 +38,7 @@
33152 stg %r14,112(%r15)
33153 lgr %r1,%r15
33154 aghi %r15,-160
33155 - stg %r1,__SF_BACKCHAIN(%r15)
33156 + stg %r1,0(%r15)
33157 lgr %r2,%r14
33158 lg %r3,168(%r15)
33159 larl %r14,ftrace_trace_function
33160 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/kernel/setup.c linux-2.6.29-rc3.owrt/arch/s390/kernel/setup.c
33161 --- linux-2.6.29.owrt/arch/s390/kernel/setup.c 2009-05-10 22:04:39.000000000 +0200
33162 +++ linux-2.6.29-rc3.owrt/arch/s390/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
33163 @@ -82,9 +82,7 @@
33164
33165 struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS];
33166 volatile int __cpu_logical_map[NR_CPUS]; /* logical cpu to cpu address */
33167 -
33168 -int __initdata memory_end_set;
33169 -unsigned long __initdata memory_end;
33170 +static unsigned long __initdata memory_end;
33171
33172 /*
33173 * This is set up by the setup-routine at boot-time
33174 @@ -283,7 +281,6 @@
33175 static int __init early_parse_mem(char *p)
33176 {
33177 memory_end = memparse(p, &p);
33178 - memory_end_set = 1;
33179 return 0;
33180 }
33181 early_param("mem", early_parse_mem);
33182 @@ -511,10 +508,8 @@
33183 int i;
33184
33185 #if defined(CONFIG_ZFCPDUMP) || defined(CONFIG_ZFCPDUMP_MODULE)
33186 - if (ipl_info.type == IPL_TYPE_FCP_DUMP) {
33187 + if (ipl_info.type == IPL_TYPE_FCP_DUMP)
33188 memory_end = ZFCPDUMP_HSA_SIZE;
33189 - memory_end_set = 1;
33190 - }
33191 #endif
33192 memory_size = 0;
33193 memory_end &= PAGE_MASK;
33194 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/kvm/kvm-s390.c linux-2.6.29-rc3.owrt/arch/s390/kvm/kvm-s390.c
33195 --- linux-2.6.29.owrt/arch/s390/kvm/kvm-s390.c 2009-05-10 22:04:39.000000000 +0200
33196 +++ linux-2.6.29-rc3.owrt/arch/s390/kvm/kvm-s390.c 2009-05-10 23:48:28.000000000 +0200
33197 @@ -212,10 +212,6 @@
33198 }
33199 }
33200
33201 -void kvm_arch_sync_events(struct kvm *kvm)
33202 -{
33203 -}
33204 -
33205 void kvm_arch_destroy_vm(struct kvm *kvm)
33206 {
33207 kvm_free_vcpus(kvm);
33208 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/lib/div64.c linux-2.6.29-rc3.owrt/arch/s390/lib/div64.c
33209 --- linux-2.6.29.owrt/arch/s390/lib/div64.c 2009-05-10 22:04:39.000000000 +0200
33210 +++ linux-2.6.29-rc3.owrt/arch/s390/lib/div64.c 2009-05-10 23:48:28.000000000 +0200
33211 @@ -61,7 +61,7 @@
33212 " clr %0,%3\n"
33213 " jl 0f\n"
33214 " slr %0,%3\n"
33215 - " ahi %1,1\n"
33216 + " alr %1,%2\n"
33217 "0:\n"
33218 : "+d" (reg2), "+d" (reg3), "=d" (tmp)
33219 : "d" (base), "2" (1UL) : "cc" );
33220 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/lib/uaccess_pt.c linux-2.6.29-rc3.owrt/arch/s390/lib/uaccess_pt.c
33221 --- linux-2.6.29.owrt/arch/s390/lib/uaccess_pt.c 2009-05-10 22:04:39.000000000 +0200
33222 +++ linux-2.6.29-rc3.owrt/arch/s390/lib/uaccess_pt.c 2009-05-10 23:48:28.000000000 +0200
33223 @@ -119,6 +119,8 @@
33224 goto fault;
33225
33226 pfn = pte_pfn(*pte);
33227 + if (!pfn_valid(pfn))
33228 + goto out;
33229
33230 offset = uaddr & (PAGE_SIZE - 1);
33231 size = min(n - done, PAGE_SIZE - offset);
33232 @@ -133,6 +135,7 @@
33233 done += size;
33234 uaddr += size;
33235 } while (done < n);
33236 +out:
33237 spin_unlock(&mm->page_table_lock);
33238 return n - done;
33239 fault:
33240 @@ -160,6 +163,9 @@
33241 goto fault;
33242
33243 pfn = pte_pfn(*pte);
33244 + if (!pfn_valid(pfn))
33245 + goto out;
33246 +
33247 ret = (pfn << PAGE_SHIFT) + (uaddr & (PAGE_SIZE - 1));
33248 out:
33249 return ret;
33250 @@ -238,6 +244,11 @@
33251 goto fault;
33252
33253 pfn = pte_pfn(*pte);
33254 + if (!pfn_valid(pfn)) {
33255 + done = -1;
33256 + goto out;
33257 + }
33258 +
33259 offset = uaddr & (PAGE_SIZE-1);
33260 addr = (char *)(pfn << PAGE_SHIFT) + offset;
33261 len = min(count - done, PAGE_SIZE - offset);
33262 @@ -245,6 +256,7 @@
33263 done += len_str;
33264 uaddr += len_str;
33265 } while ((len_str == len) && (done < count));
33266 +out:
33267 spin_unlock(&mm->page_table_lock);
33268 return done + 1;
33269 fault:
33270 @@ -313,7 +325,12 @@
33271 }
33272
33273 pfn_from = pte_pfn(*pte_from);
33274 + if (!pfn_valid(pfn_from))
33275 + goto out;
33276 pfn_to = pte_pfn(*pte_to);
33277 + if (!pfn_valid(pfn_to))
33278 + goto out;
33279 +
33280 offset_from = uaddr_from & (PAGE_SIZE-1);
33281 offset_to = uaddr_from & (PAGE_SIZE-1);
33282 offset_max = max(offset_from, offset_to);
33283 @@ -325,6 +342,7 @@
33284 uaddr_from += size;
33285 uaddr_to += size;
33286 } while (done < n);
33287 +out:
33288 spin_unlock(&mm->page_table_lock);
33289 return n - done;
33290 fault:
33291 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/mm/mmap.c linux-2.6.29-rc3.owrt/arch/s390/mm/mmap.c
33292 --- linux-2.6.29.owrt/arch/s390/mm/mmap.c 2009-05-10 22:04:39.000000000 +0200
33293 +++ linux-2.6.29-rc3.owrt/arch/s390/mm/mmap.c 2009-05-10 23:48:28.000000000 +0200
33294 @@ -35,7 +35,7 @@
33295 * Leave an at least ~128 MB hole.
33296 */
33297 #define MIN_GAP (128*1024*1024)
33298 -#define MAX_GAP (STACK_TOP/6*5)
33299 +#define MAX_GAP (TASK_SIZE/6*5)
33300
33301 static inline unsigned long mmap_base(void)
33302 {
33303 @@ -46,7 +46,7 @@
33304 else if (gap > MAX_GAP)
33305 gap = MAX_GAP;
33306
33307 - return STACK_TOP - (gap & PAGE_MASK);
33308 + return TASK_SIZE - (gap & PAGE_MASK);
33309 }
33310
33311 static inline int mmap_is_legacy(void)
33312 @@ -89,58 +89,42 @@
33313
33314 #else
33315
33316 -int s390_mmap_check(unsigned long addr, unsigned long len)
33317 -{
33318 - if (!test_thread_flag(TIF_31BIT) &&
33319 - len >= TASK_SIZE && TASK_SIZE < (1UL << 53))
33320 - return crst_table_upgrade(current->mm, 1UL << 53);
33321 - return 0;
33322 -}
33323 -
33324 static unsigned long
33325 s390_get_unmapped_area(struct file *filp, unsigned long addr,
33326 unsigned long len, unsigned long pgoff, unsigned long flags)
33327 {
33328 struct mm_struct *mm = current->mm;
33329 - unsigned long area;
33330 int rc;
33331
33332 - area = arch_get_unmapped_area(filp, addr, len, pgoff, flags);
33333 - if (!(area & ~PAGE_MASK))
33334 - return area;
33335 - if (area == -ENOMEM &&
33336 - !test_thread_flag(TIF_31BIT) && TASK_SIZE < (1UL << 53)) {
33337 - /* Upgrade the page table to 4 levels and retry. */
33338 - rc = crst_table_upgrade(mm, 1UL << 53);
33339 + addr = arch_get_unmapped_area(filp, addr, len, pgoff, flags);
33340 + if (addr & ~PAGE_MASK)
33341 + return addr;
33342 + if (unlikely(mm->context.asce_limit < addr + len)) {
33343 + rc = crst_table_upgrade(mm, addr + len);
33344 if (rc)
33345 return (unsigned long) rc;
33346 - area = arch_get_unmapped_area(filp, addr, len, pgoff, flags);
33347 }
33348 - return area;
33349 + return addr;
33350 }
33351
33352 static unsigned long
33353 -s390_get_unmapped_area_topdown(struct file *filp, const unsigned long addr,
33354 +s390_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
33355 const unsigned long len, const unsigned long pgoff,
33356 const unsigned long flags)
33357 {
33358 struct mm_struct *mm = current->mm;
33359 - unsigned long area;
33360 + unsigned long addr = addr0;
33361 int rc;
33362
33363 - area = arch_get_unmapped_area_topdown(filp, addr, len, pgoff, flags);
33364 - if (!(area & ~PAGE_MASK))
33365 - return area;
33366 - if (area == -ENOMEM &&
33367 - !test_thread_flag(TIF_31BIT) && TASK_SIZE < (1UL << 53)) {
33368 - /* Upgrade the page table to 4 levels and retry. */
33369 - rc = crst_table_upgrade(mm, 1UL << 53);
33370 + addr = arch_get_unmapped_area_topdown(filp, addr, len, pgoff, flags);
33371 + if (addr & ~PAGE_MASK)
33372 + return addr;
33373 + if (unlikely(mm->context.asce_limit < addr + len)) {
33374 + rc = crst_table_upgrade(mm, addr + len);
33375 if (rc)
33376 return (unsigned long) rc;
33377 - area = arch_get_unmapped_area_topdown(filp, addr, len,
33378 - pgoff, flags);
33379 }
33380 - return area;
33381 + return addr;
33382 }
33383 /*
33384 * This function, called very early during the creation of a new
33385 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/s390/mm/pgtable.c linux-2.6.29-rc3.owrt/arch/s390/mm/pgtable.c
33386 --- linux-2.6.29.owrt/arch/s390/mm/pgtable.c 2009-05-10 22:04:39.000000000 +0200
33387 +++ linux-2.6.29-rc3.owrt/arch/s390/mm/pgtable.c 2009-05-10 23:48:28.000000000 +0200
33388 @@ -117,7 +117,6 @@
33389 crst_table_init(table, entry);
33390 pgd_populate(mm, (pgd_t *) table, (pud_t *) pgd);
33391 mm->pgd = (pgd_t *) table;
33392 - mm->task_size = mm->context.asce_limit;
33393 table = NULL;
33394 }
33395 spin_unlock(&mm->page_table_lock);
33396 @@ -155,7 +154,6 @@
33397 BUG();
33398 }
33399 mm->pgd = (pgd_t *) (pgd_val(*pgd) & _REGION_ENTRY_ORIGIN);
33400 - mm->task_size = mm->context.asce_limit;
33401 crst_table_free(mm, (unsigned long *) pgd);
33402 }
33403 update_mm(mm, current);
33404 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/boards/board-ap325rxa.c linux-2.6.29-rc3.owrt/arch/sh/boards/board-ap325rxa.c
33405 --- linux-2.6.29.owrt/arch/sh/boards/board-ap325rxa.c 2009-05-10 22:04:41.000000000 +0200
33406 +++ linux-2.6.29-rc3.owrt/arch/sh/boards/board-ap325rxa.c 2009-05-10 23:48:28.000000000 +0200
33407 @@ -22,7 +22,6 @@
33408 #include <linux/gpio.h>
33409 #include <linux/spi/spi.h>
33410 #include <linux/spi/spi_gpio.h>
33411 -#include <media/soc_camera.h>
33412 #include <media/soc_camera_platform.h>
33413 #include <media/sh_mobile_ceu.h>
33414 #include <video/sh_mobile_lcdc.h>
33415 @@ -217,12 +216,6 @@
33416 },
33417 };
33418
33419 -static void camera_power(int val)
33420 -{
33421 - gpio_set_value(GPIO_PTZ5, val); /* RST_CAM/RSTB */
33422 - mdelay(10);
33423 -}
33424 -
33425 #ifdef CONFIG_I2C
33426 static unsigned char camera_ncm03j_magic[] =
33427 {
33428 @@ -252,11 +245,9 @@
33429 int ret = 0;
33430 int i;
33431
33432 - camera_power(0);
33433 if (!enable)
33434 return 0; /* no disable for now */
33435
33436 - camera_power(1);
33437 for (i = 0; i < ARRAY_SIZE(camera_ncm03j_magic); i += 2) {
33438 u_int8_t buf[8];
33439
33440 @@ -435,7 +426,7 @@
33441 gpio_request(GPIO_PTZ6, NULL);
33442 gpio_direction_output(GPIO_PTZ6, 0); /* STBY_CAM */
33443 gpio_request(GPIO_PTZ5, NULL);
33444 - gpio_direction_output(GPIO_PTZ5, 0); /* RST_CAM */
33445 + gpio_direction_output(GPIO_PTZ5, 1); /* RST_CAM */
33446 gpio_request(GPIO_PTZ4, NULL);
33447 gpio_direction_output(GPIO_PTZ4, 0); /* SADDR */
33448
33449 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/configs/ap325rxa_defconfig linux-2.6.29-rc3.owrt/arch/sh/configs/ap325rxa_defconfig
33450 --- linux-2.6.29.owrt/arch/sh/configs/ap325rxa_defconfig 2009-05-10 22:04:41.000000000 +0200
33451 +++ linux-2.6.29-rc3.owrt/arch/sh/configs/ap325rxa_defconfig 2009-05-10 23:48:28.000000000 +0200
33452 @@ -1,7 +1,7 @@
33453 #
33454 # Automatically generated make config: don't edit
33455 -# Linux kernel version: 2.6.29-rc2
33456 -# Tue Jan 27 11:45:08 2009
33457 +# Linux kernel version: 2.6.28
33458 +# Fri Jan 9 16:54:19 2009
33459 #
33460 CONFIG_SUPERH=y
33461 CONFIG_SUPERH32=y
33462 @@ -45,12 +45,12 @@
33463 # CONFIG_AUDIT is not set
33464 # CONFIG_IKCONFIG is not set
33465 CONFIG_LOG_BUF_SHIFT=14
33466 +# CONFIG_CGROUPS is not set
33467 CONFIG_GROUP_SCHED=y
33468 CONFIG_FAIR_GROUP_SCHED=y
33469 # CONFIG_RT_GROUP_SCHED is not set
33470 CONFIG_USER_SCHED=y
33471 # CONFIG_CGROUP_SCHED is not set
33472 -# CONFIG_CGROUPS is not set
33473 CONFIG_SYSFS_DEPRECATED=y
33474 CONFIG_SYSFS_DEPRECATED_V2=y
33475 # CONFIG_RELAY is not set
33476 @@ -378,7 +378,6 @@
33477 # CONFIG_WIRELESS_EXT is not set
33478 # CONFIG_LIB80211 is not set
33479 # CONFIG_MAC80211 is not set
33480 -# CONFIG_WIMAX is not set
33481 # CONFIG_RFKILL is not set
33482 # CONFIG_NET_9P is not set
33483
33484 @@ -401,7 +400,6 @@
33485 # CONFIG_MTD_DEBUG is not set
33486 CONFIG_MTD_CONCAT=y
33487 CONFIG_MTD_PARTITIONS=y
33488 -# CONFIG_MTD_TESTS is not set
33489 # CONFIG_MTD_REDBOOT_PARTS is not set
33490 CONFIG_MTD_CMDLINE_PARTS=y
33491 # CONFIG_MTD_AR7_PARTS is not set
33492 @@ -449,7 +447,9 @@
33493 #
33494 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
33495 CONFIG_MTD_PHYSMAP=y
33496 -# CONFIG_MTD_PHYSMAP_COMPAT is not set
33497 +CONFIG_MTD_PHYSMAP_START=0xffffffff
33498 +CONFIG_MTD_PHYSMAP_LEN=0
33499 +CONFIG_MTD_PHYSMAP_BANKWIDTH=0
33500 # CONFIG_MTD_PLATRAM is not set
33501
33502 #
33503 @@ -480,12 +480,6 @@
33504 # CONFIG_MTD_ONENAND is not set
33505
33506 #
33507 -# LPDDR flash memory drivers
33508 -#
33509 -# CONFIG_MTD_LPDDR is not set
33510 -# CONFIG_MTD_QINFO_PROBE is not set
33511 -
33512 -#
33513 # UBI - Unsorted block images
33514 #
33515 CONFIG_MTD_UBI=y
33516 @@ -613,10 +607,6 @@
33517 # CONFIG_WLAN_PRE80211 is not set
33518 # CONFIG_WLAN_80211 is not set
33519 # CONFIG_IWLWIFI_LEDS is not set
33520 -
33521 -#
33522 -# Enable WiMAX (Networking options) to see the WiMAX drivers
33523 -#
33524 # CONFIG_WAN is not set
33525 # CONFIG_PPP is not set
33526 # CONFIG_SLIP is not set
33527 @@ -800,7 +790,6 @@
33528 # CONFIG_PMIC_DA903X is not set
33529 # CONFIG_MFD_WM8400 is not set
33530 # CONFIG_MFD_WM8350_I2C is not set
33531 -# CONFIG_MFD_PCF50633 is not set
33532 # CONFIG_REGULATOR is not set
33533
33534 #
33535 @@ -848,7 +837,7 @@
33536 # CONFIG_SOC_CAMERA_MT9V022 is not set
33537 # CONFIG_SOC_CAMERA_TW9910 is not set
33538 CONFIG_SOC_CAMERA_PLATFORM=y
33539 -CONFIG_SOC_CAMERA_OV772X=y
33540 +# CONFIG_SOC_CAMERA_OV772X is not set
33541 CONFIG_VIDEO_SH_MOBILE_CEU=y
33542 # CONFIG_RADIO_ADAPTERS is not set
33543 # CONFIG_DAB is not set
33544 @@ -1023,7 +1012,6 @@
33545 CONFIG_FILE_LOCKING=y
33546 # CONFIG_XFS_FS is not set
33547 # CONFIG_OCFS2_FS is not set
33548 -# CONFIG_BTRFS_FS is not set
33549 CONFIG_DNOTIFY=y
33550 CONFIG_INOTIFY=y
33551 CONFIG_INOTIFY_USER=y
33552 @@ -1072,7 +1060,6 @@
33553 # CONFIG_JFFS2_FS is not set
33554 # CONFIG_UBIFS_FS is not set
33555 # CONFIG_CRAMFS is not set
33556 -# CONFIG_SQUASHFS is not set
33557 # CONFIG_VXFS_FS is not set
33558 # CONFIG_MINIX_FS is not set
33559 # CONFIG_OMFS_FS is not set
33560 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/configs/migor_defconfig linux-2.6.29-rc3.owrt/arch/sh/configs/migor_defconfig
33561 --- linux-2.6.29.owrt/arch/sh/configs/migor_defconfig 2009-05-10 22:04:41.000000000 +0200
33562 +++ linux-2.6.29-rc3.owrt/arch/sh/configs/migor_defconfig 2009-05-10 23:48:28.000000000 +0200
33563 @@ -1,7 +1,7 @@
33564 #
33565 # Automatically generated make config: don't edit
33566 -# Linux kernel version: 2.6.29-rc1
33567 -# Thu Jan 22 09:16:16 2009
33568 +# Linux kernel version: 2.6.28
33569 +# Fri Jan 9 17:09:35 2009
33570 #
33571 CONFIG_SUPERH=y
33572 CONFIG_SUPERH32=y
33573 @@ -45,12 +45,8 @@
33574 CONFIG_IKCONFIG=y
33575 CONFIG_IKCONFIG_PROC=y
33576 CONFIG_LOG_BUF_SHIFT=14
33577 -# CONFIG_GROUP_SCHED is not set
33578 -
33579 -#
33580 -# Control Group support
33581 -#
33582 # CONFIG_CGROUPS is not set
33583 +# CONFIG_GROUP_SCHED is not set
33584 CONFIG_SYSFS_DEPRECATED=y
33585 CONFIG_SYSFS_DEPRECATED_V2=y
33586 # CONFIG_RELAY is not set
33587 @@ -393,7 +389,6 @@
33588 CONFIG_WIRELESS_EXT_SYSFS=y
33589 # CONFIG_LIB80211 is not set
33590 # CONFIG_MAC80211 is not set
33591 -# CONFIG_WIMAX is not set
33592 # CONFIG_RFKILL is not set
33593 # CONFIG_NET_9P is not set
33594
33595 @@ -416,7 +411,6 @@
33596 # CONFIG_MTD_DEBUG is not set
33597 CONFIG_MTD_CONCAT=y
33598 CONFIG_MTD_PARTITIONS=y
33599 -# CONFIG_MTD_TESTS is not set
33600 # CONFIG_MTD_REDBOOT_PARTS is not set
33601 CONFIG_MTD_CMDLINE_PARTS=y
33602 # CONFIG_MTD_AR7_PARTS is not set
33603 @@ -464,7 +458,9 @@
33604 #
33605 # CONFIG_MTD_COMPLEX_MAPPINGS is not set
33606 CONFIG_MTD_PHYSMAP=y
33607 -# CONFIG_MTD_PHYSMAP_COMPAT is not set
33608 +CONFIG_MTD_PHYSMAP_START=0xffffffff
33609 +CONFIG_MTD_PHYSMAP_LEN=0
33610 +CONFIG_MTD_PHYSMAP_BANKWIDTH=0
33611 # CONFIG_MTD_PLATRAM is not set
33612
33613 #
33614 @@ -492,12 +488,6 @@
33615 # CONFIG_MTD_ONENAND is not set
33616
33617 #
33618 -# LPDDR flash memory drivers
33619 -#
33620 -# CONFIG_MTD_LPDDR is not set
33621 -# CONFIG_MTD_QINFO_PROBE is not set
33622 -
33623 -#
33624 # UBI - Unsorted block images
33625 #
33626 # CONFIG_MTD_UBI is not set
33627 @@ -597,10 +587,6 @@
33628 # CONFIG_WLAN_PRE80211 is not set
33629 # CONFIG_WLAN_80211 is not set
33630 # CONFIG_IWLWIFI_LEDS is not set
33631 -
33632 -#
33633 -# Enable WiMAX (Networking options) to see the WiMAX drivers
33634 -#
33635 # CONFIG_WAN is not set
33636 # CONFIG_PPP is not set
33637 # CONFIG_SLIP is not set
33638 @@ -775,7 +761,6 @@
33639 # CONFIG_PMIC_DA903X is not set
33640 # CONFIG_MFD_WM8400 is not set
33641 # CONFIG_MFD_WM8350_I2C is not set
33642 -# CONFIG_MFD_PCF50633 is not set
33643 # CONFIG_REGULATOR is not set
33644
33645 #
33646 @@ -821,9 +806,9 @@
33647 # CONFIG_SOC_CAMERA_MT9M111 is not set
33648 # CONFIG_SOC_CAMERA_MT9T031 is not set
33649 # CONFIG_SOC_CAMERA_MT9V022 is not set
33650 -CONFIG_SOC_CAMERA_TW9910=y
33651 -# CONFIG_SOC_CAMERA_PLATFORM is not set
33652 -CONFIG_SOC_CAMERA_OV772X=y
33653 +# CONFIG_SOC_CAMERA_TW9910 is not set
33654 +CONFIG_SOC_CAMERA_PLATFORM=y
33655 +# CONFIG_SOC_CAMERA_OV772X is not set
33656 CONFIG_VIDEO_SH_MOBILE_CEU=y
33657 # CONFIG_RADIO_ADAPTERS is not set
33658 # CONFIG_DAB is not set
33659 @@ -881,13 +866,11 @@
33660 # CONFIG_USB_GADGET_PXA25X is not set
33661 # CONFIG_USB_GADGET_PXA27X is not set
33662 # CONFIG_USB_GADGET_S3C2410 is not set
33663 -# CONFIG_USB_GADGET_IMX is not set
33664 CONFIG_USB_GADGET_M66592=y
33665 CONFIG_USB_M66592=y
33666 CONFIG_SUPERH_BUILT_IN_M66592=y
33667 # CONFIG_USB_GADGET_AMD5536UDC is not set
33668 # CONFIG_USB_GADGET_FSL_QE is not set
33669 -# CONFIG_USB_GADGET_CI13XXX is not set
33670 # CONFIG_USB_GADGET_NET2280 is not set
33671 # CONFIG_USB_GADGET_GOKU is not set
33672 # CONFIG_USB_GADGET_DUMMY_HCD is not set
33673 @@ -900,11 +883,6 @@
33674 # CONFIG_USB_MIDI_GADGET is not set
33675 # CONFIG_USB_G_PRINTER is not set
33676 # CONFIG_USB_CDC_COMPOSITE is not set
33677 -
33678 -#
33679 -# OTG and related infrastructure
33680 -#
33681 -# CONFIG_USB_GPIO_VBUS is not set
33682 # CONFIG_MMC is not set
33683 # CONFIG_MEMSTICK is not set
33684 # CONFIG_NEW_LEDS is not set
33685 @@ -983,7 +961,6 @@
33686 CONFIG_FILE_LOCKING=y
33687 # CONFIG_XFS_FS is not set
33688 # CONFIG_OCFS2_FS is not set
33689 -# CONFIG_BTRFS_FS is not set
33690 # CONFIG_DNOTIFY is not set
33691 # CONFIG_INOTIFY is not set
33692 # CONFIG_QUOTA is not set
33693 @@ -1027,7 +1004,6 @@
33694 # CONFIG_EFS_FS is not set
33695 # CONFIG_JFFS2_FS is not set
33696 # CONFIG_CRAMFS is not set
33697 -# CONFIG_SQUASHFS is not set
33698 # CONFIG_VXFS_FS is not set
33699 # CONFIG_MINIX_FS is not set
33700 # CONFIG_OMFS_FS is not set
33701 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/include/asm/mutex-llsc.h linux-2.6.29-rc3.owrt/arch/sh/include/asm/mutex-llsc.h
33702 --- linux-2.6.29.owrt/arch/sh/include/asm/mutex-llsc.h 2009-05-10 22:04:41.000000000 +0200
33703 +++ linux-2.6.29-rc3.owrt/arch/sh/include/asm/mutex-llsc.h 2009-05-10 23:48:28.000000000 +0200
33704 @@ -21,36 +21,38 @@
33705 static inline void
33706 __mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *))
33707 {
33708 - int __done, __res;
33709 + int __ex_flag, __res;
33710
33711 __asm__ __volatile__ (
33712 "movli.l @%2, %0 \n"
33713 "add #-1, %0 \n"
33714 "movco.l %0, @%2 \n"
33715 "movt %1 \n"
33716 - : "=&z" (__res), "=&r" (__done)
33717 + : "=&z" (__res), "=&r" (__ex_flag)
33718 : "r" (&(count)->counter)
33719 : "t");
33720
33721 - if (unlikely(!__done || __res != 0))
33722 + __res |= !__ex_flag;
33723 + if (unlikely(__res != 0))
33724 fail_fn(count);
33725 }
33726
33727 static inline int
33728 __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *))
33729 {
33730 - int __done, __res;
33731 + int __ex_flag, __res;
33732
33733 __asm__ __volatile__ (
33734 "movli.l @%2, %0 \n"
33735 "add #-1, %0 \n"
33736 "movco.l %0, @%2 \n"
33737 "movt %1 \n"
33738 - : "=&z" (__res), "=&r" (__done)
33739 + : "=&z" (__res), "=&r" (__ex_flag)
33740 : "r" (&(count)->counter)
33741 : "t");
33742
33743 - if (unlikely(!__done || __res != 0))
33744 + __res |= !__ex_flag;
33745 + if (unlikely(__res != 0))
33746 __res = fail_fn(count);
33747
33748 return __res;
33749 @@ -59,18 +61,19 @@
33750 static inline void
33751 __mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *))
33752 {
33753 - int __done, __res;
33754 + int __ex_flag, __res;
33755
33756 __asm__ __volatile__ (
33757 "movli.l @%2, %0 \n\t"
33758 "add #1, %0 \n\t"
33759 "movco.l %0, @%2 \n\t"
33760 "movt %1 \n\t"
33761 - : "=&z" (__res), "=&r" (__done)
33762 + : "=&z" (__res), "=&r" (__ex_flag)
33763 : "r" (&(count)->counter)
33764 : "t");
33765
33766 - if (unlikely(!__done || __res <= 0))
33767 + __res |= !__ex_flag;
33768 + if (unlikely(__res <= 0))
33769 fail_fn(count);
33770 }
33771
33772 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/include/asm/syscall_32.h linux-2.6.29-rc3.owrt/arch/sh/include/asm/syscall_32.h
33773 --- linux-2.6.29.owrt/arch/sh/include/asm/syscall_32.h 2009-05-10 22:04:41.000000000 +0200
33774 +++ linux-2.6.29-rc3.owrt/arch/sh/include/asm/syscall_32.h 2009-05-10 23:48:28.000000000 +0200
33775 @@ -21,10 +21,23 @@
33776 */
33777 }
33778
33779 +static inline bool syscall_has_error(struct pt_regs *regs)
33780 +{
33781 + return (regs->sr & 0x1) ? true : false;
33782 +}
33783 +static inline void syscall_set_error(struct pt_regs *regs)
33784 +{
33785 + regs->sr |= 0x1;
33786 +}
33787 +static inline void syscall_clear_error(struct pt_regs *regs)
33788 +{
33789 + regs->sr &= ~0x1;
33790 +}
33791 +
33792 static inline long syscall_get_error(struct task_struct *task,
33793 struct pt_regs *regs)
33794 {
33795 - return IS_ERR_VALUE(regs->regs[0]) ? regs->regs[0] : 0;
33796 + return syscall_has_error(regs) ? regs->regs[0] : 0;
33797 }
33798
33799 static inline long syscall_get_return_value(struct task_struct *task,
33800 @@ -37,10 +50,13 @@
33801 struct pt_regs *regs,
33802 int error, long val)
33803 {
33804 - if (error)
33805 + if (error) {
33806 + syscall_set_error(regs);
33807 regs->regs[0] = -error;
33808 - else
33809 + } else {
33810 + syscall_clear_error(regs);
33811 regs->regs[0] = val;
33812 + }
33813 }
33814
33815 static inline void syscall_get_arguments(struct task_struct *task,
33816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/include/asm/syscall_64.h linux-2.6.29-rc3.owrt/arch/sh/include/asm/syscall_64.h
33817 --- linux-2.6.29.owrt/arch/sh/include/asm/syscall_64.h 2009-05-10 22:04:41.000000000 +0200
33818 +++ linux-2.6.29-rc3.owrt/arch/sh/include/asm/syscall_64.h 2009-05-10 23:48:28.000000000 +0200
33819 @@ -21,10 +21,23 @@
33820 */
33821 }
33822
33823 +static inline bool syscall_has_error(struct pt_regs *regs)
33824 +{
33825 + return (regs->sr & 0x1) ? true : false;
33826 +}
33827 +static inline void syscall_set_error(struct pt_regs *regs)
33828 +{
33829 + regs->sr |= 0x1;
33830 +}
33831 +static inline void syscall_clear_error(struct pt_regs *regs)
33832 +{
33833 + regs->sr &= ~0x1;
33834 +}
33835 +
33836 static inline long syscall_get_error(struct task_struct *task,
33837 struct pt_regs *regs)
33838 {
33839 - return IS_ERR_VALUE(regs->regs[9]) ? regs->regs[9] : 0;
33840 + return syscall_has_error(regs) ? regs->regs[9] : 0;
33841 }
33842
33843 static inline long syscall_get_return_value(struct task_struct *task,
33844 @@ -37,10 +50,13 @@
33845 struct pt_regs *regs,
33846 int error, long val)
33847 {
33848 - if (error)
33849 + if (error) {
33850 + syscall_set_error(regs);
33851 regs->regs[9] = -error;
33852 - else
33853 + } else {
33854 + syscall_clear_error(regs);
33855 regs->regs[9] = val;
33856 + }
33857 }
33858
33859 static inline void syscall_get_arguments(struct task_struct *task,
33860 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/kernel/cpu/sh2a/clock-sh7201.c linux-2.6.29-rc3.owrt/arch/sh/kernel/cpu/sh2a/clock-sh7201.c
33861 --- linux-2.6.29.owrt/arch/sh/kernel/cpu/sh2a/clock-sh7201.c 2009-05-10 22:04:41.000000000 +0200
33862 +++ linux-2.6.29-rc3.owrt/arch/sh/kernel/cpu/sh2a/clock-sh7201.c 2009-05-10 23:48:28.000000000 +0200
33863 @@ -18,8 +18,8 @@
33864 #include <asm/freq.h>
33865 #include <asm/io.h>
33866
33867 -static const int pll1rate[]={1,2,3,4,6,8};
33868 -static const int pfc_divisors[]={1,2,3,4,6,8,12};
33869 +const static int pll1rate[]={1,2,3,4,6,8};
33870 +const static int pfc_divisors[]={1,2,3,4,6,8,12};
33871 #define ifc_divisors pfc_divisors
33872
33873 #if (CONFIG_SH_CLK_MD == 0)
33874 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/kernel/cpu/sh4/fpu.c linux-2.6.29-rc3.owrt/arch/sh/kernel/cpu/sh4/fpu.c
33875 --- linux-2.6.29.owrt/arch/sh/kernel/cpu/sh4/fpu.c 2009-05-10 22:04:41.000000000 +0200
33876 +++ linux-2.6.29-rc3.owrt/arch/sh/kernel/cpu/sh4/fpu.c 2009-05-10 23:48:28.000000000 +0200
33877 @@ -423,7 +423,7 @@
33878 int m;
33879 unsigned int hx;
33880
33881 - m = (finsn >> 8) & 0x7;
33882 + m = (finsn >> 9) & 0x7;
33883 hx = tsk->thread.fpu.hard.fp_regs[m];
33884
33885 if ((tsk->thread.fpu.hard.fpscr & FPSCR_CAUSE_ERROR)
33886 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/kernel/setup.c linux-2.6.29-rc3.owrt/arch/sh/kernel/setup.c
33887 --- linux-2.6.29.owrt/arch/sh/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
33888 +++ linux-2.6.29-rc3.owrt/arch/sh/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
33889 @@ -262,11 +262,11 @@
33890 BOOTMEM_DEFAULT);
33891
33892 /*
33893 - * Reserve physical pages below CONFIG_ZERO_PAGE_OFFSET.
33894 + * reserve physical page 0 - it's a special BIOS page on many boxes,
33895 + * enabling clean reboots, SMP operation, laptop functions.
33896 */
33897 - if (CONFIG_ZERO_PAGE_OFFSET != 0)
33898 - reserve_bootmem(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET,
33899 - BOOTMEM_DEFAULT);
33900 + reserve_bootmem(__MEMORY_START, CONFIG_ZERO_PAGE_OFFSET,
33901 + BOOTMEM_DEFAULT);
33902
33903 sparse_memory_present_with_active_regions(0);
33904
33905 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/kernel/signal_32.c linux-2.6.29-rc3.owrt/arch/sh/kernel/signal_32.c
33906 --- linux-2.6.29.owrt/arch/sh/kernel/signal_32.c 2009-05-10 22:04:41.000000000 +0200
33907 +++ linux-2.6.29-rc3.owrt/arch/sh/kernel/signal_32.c 2009-05-10 23:48:28.000000000 +0200
33908 @@ -510,6 +510,7 @@
33909 case -ERESTARTNOHAND:
33910 no_system_call_restart:
33911 regs->regs[0] = -EINTR;
33912 + regs->sr |= 1;
33913 break;
33914
33915 case -ERESTARTSYS:
33916 @@ -588,7 +589,8 @@
33917
33918 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
33919 if (signr > 0) {
33920 - handle_syscall_restart(save_r0, regs, &ka.sa);
33921 + if (regs->sr & 1)
33922 + handle_syscall_restart(save_r0, regs, &ka.sa);
33923
33924 /* Whee! Actually deliver the signal. */
33925 if (handle_signal(signr, &ka, &info, oldset,
33926 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/kernel/signal_64.c linux-2.6.29-rc3.owrt/arch/sh/kernel/signal_64.c
33927 --- linux-2.6.29.owrt/arch/sh/kernel/signal_64.c 2009-05-10 22:04:41.000000000 +0200
33928 +++ linux-2.6.29-rc3.owrt/arch/sh/kernel/signal_64.c 2009-05-10 23:48:28.000000000 +0200
33929 @@ -60,6 +60,7 @@
33930 case -ERESTARTNOHAND:
33931 no_system_call_restart:
33932 regs->regs[REG_RET] = -EINTR;
33933 + regs->sr |= 1;
33934 break;
33935
33936 case -ERESTARTSYS:
33937 @@ -108,7 +109,8 @@
33938
33939 signr = get_signal_to_deliver(&info, &ka, regs, 0);
33940 if (signr > 0) {
33941 - handle_syscall_restart(regs, &ka.sa);
33942 + if (regs->sr & 1)
33943 + handle_syscall_restart(regs, &ka.sa);
33944
33945 /* Whee! Actually deliver the signal. */
33946 if (handle_signal(signr, &info, &ka, oldset, regs) == 0) {
33947 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sh/lib/checksum.S linux-2.6.29-rc3.owrt/arch/sh/lib/checksum.S
33948 --- linux-2.6.29.owrt/arch/sh/lib/checksum.S 2009-05-10 22:04:41.000000000 +0200
33949 +++ linux-2.6.29-rc3.owrt/arch/sh/lib/checksum.S 2009-05-10 23:48:28.000000000 +0200
33950 @@ -36,7 +36,8 @@
33951 */
33952
33953 /*
33954 - * asmlinkage __wsum csum_partial(const void *buf, int len, __wsum sum);
33955 + * unsigned int csum_partial(const unsigned char *buf, int len,
33956 + * unsigned int sum);
33957 */
33958
33959 .text
33960 @@ -48,31 +49,11 @@
33961 * Fortunately, it is easy to convert 2-byte alignment to 4-byte
33962 * alignment for the unrolled loop.
33963 */
33964 + mov r5, r1
33965 mov r4, r0
33966 - tst #3, r0 ! Check alignment.
33967 - bt/s 2f ! Jump if alignment is ok.
33968 - mov r4, r7 ! Keep a copy to check for alignment
33969 + tst #2, r0 ! Check alignment.
33970 + bt 2f ! Jump if alignment is ok.
33971 !
33972 - tst #1, r0 ! Check alignment.
33973 - bt 21f ! Jump if alignment is boundary of 2bytes.
33974 -
33975 - ! buf is odd
33976 - tst r5, r5
33977 - add #-1, r5
33978 - bt 9f
33979 - mov.b @r4+, r0
33980 - extu.b r0, r0
33981 - addc r0, r6 ! t=0 from previous tst
33982 - mov r6, r0
33983 - shll8 r6
33984 - shlr16 r0
33985 - shlr8 r0
33986 - or r0, r6
33987 - mov r4, r0
33988 - tst #2, r0
33989 - bt 2f
33990 -21:
33991 - ! buf is 2 byte aligned (len could be 0)
33992 add #-2, r5 ! Alignment uses up two bytes.
33993 cmp/pz r5 !
33994 bt/s 1f ! Jump if we had at least two bytes.
33995 @@ -80,17 +61,16 @@
33996 bra 6f
33997 add #2, r5 ! r5 was < 2. Deal with it.
33998 1:
33999 + mov r5, r1 ! Save new len for later use.
34000 mov.w @r4+, r0
34001 extu.w r0, r0
34002 addc r0, r6
34003 bf 2f
34004 add #1, r6
34005 2:
34006 - ! buf is 4 byte aligned (len could be 0)
34007 - mov r5, r1
34008 mov #-5, r0
34009 - shld r0, r1
34010 - tst r1, r1
34011 + shld r0, r5
34012 + tst r5, r5
34013 bt/s 4f ! if it's =0, go to 4f
34014 clrt
34015 .align 2
34016 @@ -112,31 +92,30 @@
34017 addc r0, r6
34018 addc r2, r6
34019 movt r0
34020 - dt r1
34021 + dt r5
34022 bf/s 3b
34023 cmp/eq #1, r0
34024 - ! here, we know r1==0
34025 - addc r1, r6 ! add carry to r6
34026 + ! here, we know r5==0
34027 + addc r5, r6 ! add carry to r6
34028 4:
34029 - mov r5, r0
34030 + mov r1, r0
34031 and #0x1c, r0
34032 tst r0, r0
34033 - bt 6f
34034 - ! 4 bytes or more remaining
34035 - mov r0, r1
34036 - shlr2 r1
34037 + bt/s 6f
34038 + mov r0, r5
34039 + shlr2 r5
34040 mov #0, r2
34041 5:
34042 addc r2, r6
34043 mov.l @r4+, r2
34044 movt r0
34045 - dt r1
34046 + dt r5
34047 bf/s 5b
34048 cmp/eq #1, r0
34049 addc r2, r6
34050 - addc r1, r6 ! r1==0 here, so it means add carry-bit
34051 + addc r5, r6 ! r5==0 here, so it means add carry-bit
34052 6:
34053 - ! 3 bytes or less remaining
34054 + mov r1, r5
34055 mov #3, r0
34056 and r0, r5
34057 tst r5, r5
34058 @@ -160,18 +139,8 @@
34059 8:
34060 addc r0, r6
34061 mov #0, r0
34062 - addc r0, r6
34063 + addc r0, r6
34064 9:
34065 - ! Check if the buffer was misaligned, if so realign sum
34066 - mov r7, r0
34067 - tst #1, r0
34068 - bt 10f
34069 - mov r6, r0
34070 - shll8 r6
34071 - shlr16 r0
34072 - shlr8 r0
34073 - or r0, r6
34074 -10:
34075 rts
34076 mov r6, r0
34077
34078 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/compat.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/compat.h
34079 --- linux-2.6.29.owrt/arch/sparc/include/asm/compat.h 2009-05-10 22:04:40.000000000 +0200
34080 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/compat.h 2009-05-10 23:48:28.000000000 +0200
34081 @@ -240,9 +240,4 @@
34082 unsigned int __unused2;
34083 };
34084
34085 -static inline int is_compat_task(void)
34086 -{
34087 - return test_thread_flag(TIF_32BIT);
34088 -}
34089 -
34090 #endif /* _ASM_SPARC64_COMPAT_H */
34091 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/cpudata_64.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/cpudata_64.h
34092 --- linux-2.6.29.owrt/arch/sparc/include/asm/cpudata_64.h 2009-05-10 22:04:40.000000000 +0200
34093 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/cpudata_64.h 2009-05-10 23:48:28.000000000 +0200
34094 @@ -17,7 +17,7 @@
34095 typedef struct {
34096 /* Dcache line 1 */
34097 unsigned int __softirq_pending; /* must be 1st, see rtrap.S */
34098 - unsigned int __nmi_count;
34099 + unsigned int __pad0;
34100 unsigned long clock_tick; /* %tick's per second */
34101 unsigned long __pad;
34102 unsigned int __pad1;
34103 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/irq_64.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/irq_64.h
34104 --- linux-2.6.29.owrt/arch/sparc/include/asm/irq_64.h 2009-05-10 22:04:40.000000000 +0200
34105 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/irq_64.h 2009-05-10 23:48:28.000000000 +0200
34106 @@ -66,6 +66,9 @@
34107 extern void __init init_IRQ(void);
34108 extern void fixup_irqs(void);
34109
34110 +extern int register_perfctr_intr(void (*handler)(struct pt_regs *));
34111 +extern void release_perfctr_intr(void (*handler)(struct pt_regs *));
34112 +
34113 static inline void set_softint(unsigned long bits)
34114 {
34115 __asm__ __volatile__("wr %0, 0x0, %%set_softint"
34116 @@ -95,6 +98,5 @@
34117 extern void *hardirq_stack[NR_CPUS];
34118 extern void *softirq_stack[NR_CPUS];
34119 #define __ARCH_HAS_DO_SOFTIRQ
34120 -#define ARCH_HAS_NMI_WATCHDOG
34121
34122 #endif
34123 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/kdebug_64.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/kdebug_64.h
34124 --- linux-2.6.29.owrt/arch/sparc/include/asm/kdebug_64.h 2009-05-10 22:04:40.000000000 +0200
34125 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/kdebug_64.h 2009-05-10 23:48:28.000000000 +0200
34126 @@ -14,8 +14,6 @@
34127 DIE_TRAP,
34128 DIE_TRAP_TL1,
34129 DIE_CALL,
34130 - DIE_NMI,
34131 - DIE_NMIWATCHDOG,
34132 };
34133
34134 #endif
34135 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/nmi.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/nmi.h
34136 --- linux-2.6.29.owrt/arch/sparc/include/asm/nmi.h 2009-05-10 22:04:40.000000000 +0200
34137 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/nmi.h 1970-01-01 01:00:00.000000000 +0100
34138 @@ -1,10 +0,0 @@
34139 -#ifndef __NMI_H
34140 -#define __NMI_H
34141 -
34142 -extern int __init nmi_init(void);
34143 -extern void perfctr_irq(int irq, struct pt_regs *regs);
34144 -extern void nmi_adjust_hz(unsigned int new_hz);
34145 -
34146 -extern int nmi_usable;
34147 -
34148 -#endif /* __NMI_H */
34149 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/pcr.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/pcr.h
34150 --- linux-2.6.29.owrt/arch/sparc/include/asm/pcr.h 2009-05-10 22:04:40.000000000 +0200
34151 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/pcr.h 1970-01-01 01:00:00.000000000 +0100
34152 @@ -1,46 +0,0 @@
34153 -#ifndef __PCR_H
34154 -#define __PCR_H
34155 -
34156 -struct pcr_ops {
34157 - u64 (*read)(void);
34158 - void (*write)(u64);
34159 -};
34160 -extern const struct pcr_ops *pcr_ops;
34161 -
34162 -extern void deferred_pcr_work_irq(int irq, struct pt_regs *regs);
34163 -extern void schedule_deferred_pcr_work(void);
34164 -
34165 -#define PCR_PIC_PRIV 0x00000001 /* PIC access is privileged */
34166 -#define PCR_STRACE 0x00000002 /* Trace supervisor events */
34167 -#define PCR_UTRACE 0x00000004 /* Trace user events */
34168 -#define PCR_N2_HTRACE 0x00000008 /* Trace hypervisor events */
34169 -#define PCR_N2_TOE_OV0 0x00000010 /* Trap if PIC 0 overflows */
34170 -#define PCR_N2_TOE_OV1 0x00000020 /* Trap if PIC 1 overflows */
34171 -#define PCR_N2_MASK0 0x00003fc0
34172 -#define PCR_N2_MASK0_SHIFT 6
34173 -#define PCR_N2_SL0 0x0003c000
34174 -#define PCR_N2_SL0_SHIFT 14
34175 -#define PCR_N2_OV0 0x00040000
34176 -#define PCR_N2_MASK1 0x07f80000
34177 -#define PCR_N2_MASK1_SHIFT 19
34178 -#define PCR_N2_SL1 0x78000000
34179 -#define PCR_N2_SL1_SHIFT 27
34180 -#define PCR_N2_OV1 0x80000000
34181 -
34182 -extern unsigned int picl_shift;
34183 -
34184 -/* In order to commonize as much of the implementation as
34185 - * possible, we use PICH as our counter. Mostly this is
34186 - * to accomodate Niagara-1 which can only count insn cycles
34187 - * in PICH.
34188 - */
34189 -static inline u64 picl_value(unsigned int nmi_hz)
34190 -{
34191 - u32 delta = local_cpu_data().clock_tick / (nmi_hz << picl_shift);
34192 -
34193 - return ((u64)((0 - delta) & 0xffffffff)) << 32;
34194 -}
34195 -
34196 -extern u64 pcr_enable;
34197 -
34198 -#endif /* __PCR_H */
34199 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/pil.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/pil.h
34200 --- linux-2.6.29.owrt/arch/sparc/include/asm/pil.h 2009-05-10 22:04:40.000000000 +0200
34201 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/pil.h 2009-05-10 23:48:28.000000000 +0200
34202 @@ -23,8 +23,6 @@
34203 #define PIL_SMP_CTX_NEW_VERSION 4
34204 #define PIL_DEVICE_IRQ 5
34205 #define PIL_SMP_CALL_FUNC_SNGL 6
34206 -#define PIL_DEFERRED_PCR_WORK 7
34207 -#define PIL_KGDB_CAPTURE 8
34208 #define PIL_NORMAL_MAX 14
34209 #define PIL_NMI 15
34210
34211 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/include/asm/seccomp.h linux-2.6.29-rc3.owrt/arch/sparc/include/asm/seccomp.h
34212 --- linux-2.6.29.owrt/arch/sparc/include/asm/seccomp.h 2009-05-10 22:04:40.000000000 +0200
34213 +++ linux-2.6.29-rc3.owrt/arch/sparc/include/asm/seccomp.h 2009-05-10 23:48:28.000000000 +0200
34214 @@ -1,5 +1,11 @@
34215 #ifndef _ASM_SECCOMP_H
34216
34217 +#include <linux/thread_info.h> /* already defines TIF_32BIT */
34218 +
34219 +#ifndef TIF_32BIT
34220 +#error "unexpected TIF_32BIT on sparc64"
34221 +#endif
34222 +
34223 #include <linux/unistd.h>
34224
34225 #define __NR_seccomp_read __NR_read
34226 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/chmc.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/chmc.c
34227 --- linux-2.6.29.owrt/arch/sparc/kernel/chmc.c 2009-05-10 22:04:40.000000000 +0200
34228 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/chmc.c 2009-05-10 23:48:28.000000000 +0200
34229 @@ -306,7 +306,6 @@
34230 buf[1] = '?';
34231 buf[2] = '?';
34232 buf[3] = '\0';
34233 - return 0;
34234 }
34235 p = dp->controller;
34236 prop = &p->layout;
34237 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/cpu.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/cpu.c
34238 --- linux-2.6.29.owrt/arch/sparc/kernel/cpu.c 2009-05-10 22:04:40.000000000 +0200
34239 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/cpu.c 2009-05-10 23:48:28.000000000 +0200
34240 @@ -26,7 +26,6 @@
34241 struct cpu_info {
34242 int psr_vers;
34243 const char *name;
34244 - const char *pmu_name;
34245 };
34246
34247 struct fpu_info {
34248 @@ -46,9 +45,6 @@
34249 #define CPU(ver, _name) \
34250 { .psr_vers = ver, .name = _name }
34251
34252 -#define CPU_PMU(ver, _name, _pmu_name) \
34253 -{ .psr_vers = ver, .name = _name, .pmu_name = _pmu_name }
34254 -
34255 #define FPU(ver, _name) \
34256 { .fp_vers = ver, .name = _name }
34257
34258 @@ -187,10 +183,10 @@
34259 },{
34260 0x17,
34261 .cpu_info = {
34262 - CPU_PMU(0x10, "TI UltraSparc I (SpitFire)", "ultra12"),
34263 - CPU_PMU(0x11, "TI UltraSparc II (BlackBird)", "ultra12"),
34264 - CPU_PMU(0x12, "TI UltraSparc IIi (Sabre)", "ultra12"),
34265 - CPU_PMU(0x13, "TI UltraSparc IIe (Hummingbird)", "ultra12"),
34266 + CPU(0x10, "TI UltraSparc I (SpitFire)"),
34267 + CPU(0x11, "TI UltraSparc II (BlackBird)"),
34268 + CPU(0x12, "TI UltraSparc IIi (Sabre)"),
34269 + CPU(0x13, "TI UltraSparc IIe (Hummingbird)"),
34270 CPU(-1, NULL)
34271 },
34272 .fpu_info = {
34273 @@ -203,7 +199,7 @@
34274 },{
34275 0x22,
34276 .cpu_info = {
34277 - CPU_PMU(0x10, "TI UltraSparc I (SpitFire)", "ultra12"),
34278 + CPU(0x10, "TI UltraSparc I (SpitFire)"),
34279 CPU(-1, NULL)
34280 },
34281 .fpu_info = {
34282 @@ -213,12 +209,12 @@
34283 },{
34284 0x3e,
34285 .cpu_info = {
34286 - CPU_PMU(0x14, "TI UltraSparc III (Cheetah)", "ultra3"),
34287 - CPU_PMU(0x15, "TI UltraSparc III+ (Cheetah+)", "ultra3+"),
34288 - CPU_PMU(0x16, "TI UltraSparc IIIi (Jalapeno)", "ultra3i"),
34289 - CPU_PMU(0x18, "TI UltraSparc IV (Jaguar)", "ultra3+"),
34290 - CPU_PMU(0x19, "TI UltraSparc IV+ (Panther)", "ultra4+"),
34291 - CPU_PMU(0x22, "TI UltraSparc IIIi+ (Serrano)", "ultra3i"),
34292 + CPU(0x14, "TI UltraSparc III (Cheetah)"),
34293 + CPU(0x15, "TI UltraSparc III+ (Cheetah+)"),
34294 + CPU(0x16, "TI UltraSparc IIIi (Jalapeno)"),
34295 + CPU(0x18, "TI UltraSparc IV (Jaguar)"),
34296 + CPU(0x19, "TI UltraSparc IV+ (Panther)"),
34297 + CPU(0x22, "TI UltraSparc IIIi+ (Serrano)"),
34298 CPU(-1, NULL)
34299 },
34300 .fpu_info = {
34301 @@ -238,7 +234,6 @@
34302
34303 const char *sparc_cpu_type;
34304 const char *sparc_fpu_type;
34305 -const char *sparc_pmu_type;
34306
34307 unsigned int fsr_storage;
34308
34309 @@ -249,7 +244,6 @@
34310
34311 sparc_cpu_type = NULL;
34312 sparc_fpu_type = NULL;
34313 - sparc_pmu_type = NULL;
34314 manuf = NULL;
34315
34316 for (i = 0; i < ARRAY_SIZE(manufacturer_info); i++)
34317 @@ -269,7 +263,6 @@
34318 {
34319 if (cpu->psr_vers == psr_vers) {
34320 sparc_cpu_type = cpu->name;
34321 - sparc_pmu_type = cpu->pmu_name;
34322 sparc_fpu_type = "No FPU";
34323 break;
34324 }
34325 @@ -297,8 +290,6 @@
34326 psr_impl, fpu_vers);
34327 sparc_fpu_type = "Unknown FPU";
34328 }
34329 - if (sparc_pmu_type == NULL)
34330 - sparc_pmu_type = "Unknown PMU";
34331 }
34332
34333 #ifdef CONFIG_SPARC32
34334 @@ -324,13 +315,11 @@
34335 case SUN4V_CHIP_NIAGARA1:
34336 sparc_cpu_type = "UltraSparc T1 (Niagara)";
34337 sparc_fpu_type = "UltraSparc T1 integrated FPU";
34338 - sparc_pmu_type = "niagara";
34339 break;
34340
34341 case SUN4V_CHIP_NIAGARA2:
34342 sparc_cpu_type = "UltraSparc T2 (Niagara2)";
34343 sparc_fpu_type = "UltraSparc T2 integrated FPU";
34344 - sparc_pmu_type = "niagara2";
34345 break;
34346
34347 default:
34348 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/head_64.S linux-2.6.29-rc3.owrt/arch/sparc/kernel/head_64.S
34349 --- linux-2.6.29.owrt/arch/sparc/kernel/head_64.S 2009-05-10 22:04:40.000000000 +0200
34350 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/head_64.S 2009-05-10 23:48:28.000000000 +0200
34351 @@ -891,35 +891,10 @@
34352 tlb_type: .word 0 /* Must NOT end up in BSS */
34353 .section ".fixup",#alloc,#execinstr
34354
34355 - .globl __ret_efault, __retl_efault, __ret_one, __retl_one
34356 -ENTRY(__ret_efault)
34357 + .globl __ret_efault, __retl_efault
34358 +__ret_efault:
34359 ret
34360 restore %g0, -EFAULT, %o0
34361 -ENDPROC(__ret_efault)
34362 -
34363 -ENTRY(__retl_efault)
34364 +__retl_efault:
34365 retl
34366 mov -EFAULT, %o0
34367 -ENDPROC(__retl_efault)
34368 -
34369 -ENTRY(__retl_one)
34370 - retl
34371 - mov 1, %o0
34372 -ENDPROC(__retl_one)
34373 -
34374 -ENTRY(__ret_one_asi)
34375 - wr %g0, ASI_AIUS, %asi
34376 - ret
34377 - restore %g0, 1, %o0
34378 -ENDPROC(__ret_one_asi)
34379 -
34380 -ENTRY(__retl_one_asi)
34381 - wr %g0, ASI_AIUS, %asi
34382 - retl
34383 - mov 1, %o0
34384 -ENDPROC(__retl_one_asi)
34385 -
34386 -ENTRY(__retl_o1)
34387 - retl
34388 - mov %o1, %o0
34389 -ENDPROC(__retl_o1)
34390 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/irq_64.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/irq_64.c
34391 --- linux-2.6.29.owrt/arch/sparc/kernel/irq_64.c 2009-05-10 22:04:40.000000000 +0200
34392 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/irq_64.c 2009-05-10 23:48:28.000000000 +0200
34393 @@ -196,11 +196,6 @@
34394 seq_putc(p, '\n');
34395 skip:
34396 spin_unlock_irqrestore(&irq_desc[i].lock, flags);
34397 - } else if (i == NR_IRQS) {
34398 - seq_printf(p, "NMI: ");
34399 - for_each_online_cpu(j)
34400 - seq_printf(p, "%10u ", cpu_data(j).__nmi_count);
34401 - seq_printf(p, " Non-maskable interrupts\n");
34402 }
34403 return 0;
34404 }
34405 @@ -323,25 +318,17 @@
34406 sun4u_irq_enable(virt_irq);
34407 }
34408
34409 -/* Don't do anything. The desc->status check for IRQ_DISABLED in
34410 - * handler_irq() will skip the handler call and that will leave the
34411 - * interrupt in the sent state. The next ->enable() call will hit the
34412 - * ICLR register to reset the state machine.
34413 - *
34414 - * This scheme is necessary, instead of clearing the Valid bit in the
34415 - * IMAP register, to handle the case of IMAP registers being shared by
34416 - * multiple INOs (and thus ICLR registers). Since we use a different
34417 - * virtual IRQ for each shared IMAP instance, the generic code thinks
34418 - * there is only one user so it prematurely calls ->disable() on
34419 - * free_irq().
34420 - *
34421 - * We have to provide an explicit ->disable() method instead of using
34422 - * NULL to get the default. The reason is that if the generic code
34423 - * sees that, it also hooks up a default ->shutdown method which
34424 - * invokes ->mask() which we do not want. See irq_chip_set_defaults().
34425 - */
34426 static void sun4u_irq_disable(unsigned int virt_irq)
34427 {
34428 + struct irq_handler_data *data = get_irq_chip_data(virt_irq);
34429 +
34430 + if (likely(data)) {
34431 + unsigned long imap = data->imap;
34432 + unsigned long tmp = upa_readq(imap);
34433 +
34434 + tmp &= ~IMAP_VALID;
34435 + upa_writeq(tmp, imap);
34436 + }
34437 }
34438
34439 static void sun4u_irq_eoi(unsigned int virt_irq)
34440 @@ -754,8 +741,7 @@
34441
34442 desc = irq_desc + virt_irq;
34443
34444 - if (!(desc->status & IRQ_DISABLED))
34445 - desc->handle_irq(virt_irq, desc);
34446 + desc->handle_irq(virt_irq, desc);
34447
34448 bucket_pa = next_pa;
34449 }
34450 @@ -792,6 +778,69 @@
34451 local_irq_restore(flags);
34452 }
34453
34454 +static void unhandled_perf_irq(struct pt_regs *regs)
34455 +{
34456 + unsigned long pcr, pic;
34457 +
34458 + read_pcr(pcr);
34459 + read_pic(pic);
34460 +
34461 + write_pcr(0);
34462 +
34463 + printk(KERN_EMERG "CPU %d: Got unexpected perf counter IRQ.\n",
34464 + smp_processor_id());
34465 + printk(KERN_EMERG "CPU %d: PCR[%016lx] PIC[%016lx]\n",
34466 + smp_processor_id(), pcr, pic);
34467 +}
34468 +
34469 +/* Almost a direct copy of the powerpc PMC code. */
34470 +static DEFINE_SPINLOCK(perf_irq_lock);
34471 +static void *perf_irq_owner_caller; /* mostly for debugging */
34472 +static void (*perf_irq)(struct pt_regs *regs) = unhandled_perf_irq;
34473 +
34474 +/* Invoked from level 15 PIL handler in trap table. */
34475 +void perfctr_irq(int irq, struct pt_regs *regs)
34476 +{
34477 + clear_softint(1 << irq);
34478 + perf_irq(regs);
34479 +}
34480 +
34481 +int register_perfctr_intr(void (*handler)(struct pt_regs *))
34482 +{
34483 + int ret;
34484 +
34485 + if (!handler)
34486 + return -EINVAL;
34487 +
34488 + spin_lock(&perf_irq_lock);
34489 + if (perf_irq != unhandled_perf_irq) {
34490 + printk(KERN_WARNING "register_perfctr_intr: "
34491 + "perf IRQ busy (reserved by caller %p)\n",
34492 + perf_irq_owner_caller);
34493 + ret = -EBUSY;
34494 + goto out;
34495 + }
34496 +
34497 + perf_irq_owner_caller = __builtin_return_address(0);
34498 + perf_irq = handler;
34499 +
34500 + ret = 0;
34501 +out:
34502 + spin_unlock(&perf_irq_lock);
34503 +
34504 + return ret;
34505 +}
34506 +EXPORT_SYMBOL_GPL(register_perfctr_intr);
34507 +
34508 +void release_perfctr_intr(void (*handler)(struct pt_regs *))
34509 +{
34510 + spin_lock(&perf_irq_lock);
34511 + perf_irq_owner_caller = NULL;
34512 + perf_irq = unhandled_perf_irq;
34513 + spin_unlock(&perf_irq_lock);
34514 +}
34515 +EXPORT_SYMBOL_GPL(release_perfctr_intr);
34516 +
34517 #ifdef CONFIG_HOTPLUG_CPU
34518 void fixup_irqs(void)
34519 {
34520 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/kernel.h linux-2.6.29-rc3.owrt/arch/sparc/kernel/kernel.h
34521 --- linux-2.6.29.owrt/arch/sparc/kernel/kernel.h 2009-05-10 22:04:40.000000000 +0200
34522 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/kernel.h 2009-05-10 23:48:28.000000000 +0200
34523 @@ -5,7 +5,6 @@
34524
34525 /* cpu.c */
34526 extern const char *sparc_cpu_type;
34527 -extern const char *sparc_pmu_type;
34528 extern const char *sparc_fpu_type;
34529
34530 extern unsigned int fsr_storage;
34531 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/kgdb_64.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/kgdb_64.c
34532 --- linux-2.6.29.owrt/arch/sparc/kernel/kgdb_64.c 2009-05-10 22:04:40.000000000 +0200
34533 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/kgdb_64.c 2009-05-10 23:48:28.000000000 +0200
34534 @@ -108,7 +108,7 @@
34535 }
34536
34537 #ifdef CONFIG_SMP
34538 -void smp_kgdb_capture_client(int irq, struct pt_regs *regs)
34539 +void smp_kgdb_capture_client(struct pt_regs *regs)
34540 {
34541 unsigned long flags;
34542
34543 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/Makefile linux-2.6.29-rc3.owrt/arch/sparc/kernel/Makefile
34544 --- linux-2.6.29.owrt/arch/sparc/kernel/Makefile 2009-05-10 22:04:40.000000000 +0200
34545 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/Makefile 2009-05-10 23:48:28.000000000 +0200
34546 @@ -52,8 +52,6 @@
34547 obj-$(CONFIG_SPARC64) += hvapi.o
34548 obj-$(CONFIG_SPARC64) += sstate.o
34549 obj-$(CONFIG_SPARC64) += mdesc.o
34550 -obj-$(CONFIG_SPARC64) += pcr.o
34551 -obj-$(CONFIG_SPARC64) += nmi.o
34552
34553 # sparc32 do not use GENERIC_HARDIRQS but uses the generic devres implementation
34554 obj-$(CONFIG_SPARC32) += devres.o
34555 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/nmi.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/nmi.c
34556 --- linux-2.6.29.owrt/arch/sparc/kernel/nmi.c 2009-05-10 22:04:40.000000000 +0200
34557 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/nmi.c 1970-01-01 01:00:00.000000000 +0100
34558 @@ -1,225 +0,0 @@
34559 -/* Pseudo NMI support on sparc64 systems.
34560 - *
34561 - * Copyright (C) 2009 David S. Miller <davem@davemloft.net>
34562 - *
34563 - * The NMI watchdog support and infrastructure is based almost
34564 - * entirely upon the x86 NMI support code.
34565 - */
34566 -#include <linux/kernel.h>
34567 -#include <linux/param.h>
34568 -#include <linux/init.h>
34569 -#include <linux/percpu.h>
34570 -#include <linux/nmi.h>
34571 -#include <linux/module.h>
34572 -#include <linux/kprobes.h>
34573 -#include <linux/kernel_stat.h>
34574 -#include <linux/slab.h>
34575 -#include <linux/kdebug.h>
34576 -#include <linux/delay.h>
34577 -#include <linux/smp.h>
34578 -
34579 -#include <asm/ptrace.h>
34580 -#include <asm/local.h>
34581 -#include <asm/pcr.h>
34582 -
34583 -/* We don't have a real NMI on sparc64, but we can fake one
34584 - * up using profiling counter overflow interrupts and interrupt
34585 - * levels.
34586 - *
34587 - * The profile overflow interrupts at level 15, so we use
34588 - * level 14 as our IRQ off level.
34589 - */
34590 -
34591 -static int nmi_watchdog_active;
34592 -static int panic_on_timeout;
34593 -
34594 -int nmi_usable;
34595 -EXPORT_SYMBOL_GPL(nmi_usable);
34596 -
34597 -static unsigned int nmi_hz = HZ;
34598 -
34599 -static DEFINE_PER_CPU(unsigned int, last_irq_sum);
34600 -static DEFINE_PER_CPU(local_t, alert_counter);
34601 -static DEFINE_PER_CPU(int, nmi_touch);
34602 -
34603 -void touch_nmi_watchdog(void)
34604 -{
34605 - if (nmi_watchdog_active) {
34606 - int cpu;
34607 -
34608 - for_each_present_cpu(cpu) {
34609 - if (per_cpu(nmi_touch, cpu) != 1)
34610 - per_cpu(nmi_touch, cpu) = 1;
34611 - }
34612 - }
34613 -
34614 - touch_softlockup_watchdog();
34615 -}
34616 -EXPORT_SYMBOL(touch_nmi_watchdog);
34617 -
34618 -static void die_nmi(const char *str, struct pt_regs *regs, int do_panic)
34619 -{
34620 - if (notify_die(DIE_NMIWATCHDOG, str, regs, 0,
34621 - pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
34622 - return;
34623 -
34624 - console_verbose();
34625 - bust_spinlocks(1);
34626 -
34627 - printk(KERN_EMERG "%s", str);
34628 - printk(" on CPU%d, ip %08lx, registers:\n",
34629 - smp_processor_id(), regs->tpc);
34630 - show_regs(regs);
34631 - dump_stack();
34632 -
34633 - bust_spinlocks(0);
34634 -
34635 - if (do_panic || panic_on_oops)
34636 - panic("Non maskable interrupt");
34637 -
34638 - local_irq_enable();
34639 - do_exit(SIGBUS);
34640 -}
34641 -
34642 -notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)
34643 -{
34644 - unsigned int sum, touched = 0;
34645 - int cpu = smp_processor_id();
34646 -
34647 - clear_softint(1 << irq);
34648 - pcr_ops->write(PCR_PIC_PRIV);
34649 -
34650 - local_cpu_data().__nmi_count++;
34651 -
34652 - if (notify_die(DIE_NMI, "nmi", regs, 0,
34653 - pt_regs_trap_type(regs), SIGINT) == NOTIFY_STOP)
34654 - touched = 1;
34655 -
34656 - sum = kstat_irqs_cpu(0, cpu);
34657 - if (__get_cpu_var(nmi_touch)) {
34658 - __get_cpu_var(nmi_touch) = 0;
34659 - touched = 1;
34660 - }
34661 - if (!touched && __get_cpu_var(last_irq_sum) == sum) {
34662 - local_inc(&__get_cpu_var(alert_counter));
34663 - if (local_read(&__get_cpu_var(alert_counter)) == 5 * nmi_hz)
34664 - die_nmi("BUG: NMI Watchdog detected LOCKUP",
34665 - regs, panic_on_timeout);
34666 - } else {
34667 - __get_cpu_var(last_irq_sum) = sum;
34668 - local_set(&__get_cpu_var(alert_counter), 0);
34669 - }
34670 - if (nmi_usable) {
34671 - write_pic(picl_value(nmi_hz));
34672 - pcr_ops->write(pcr_enable);
34673 - }
34674 -}
34675 -
34676 -static inline unsigned int get_nmi_count(int cpu)
34677 -{
34678 - return cpu_data(cpu).__nmi_count;
34679 -}
34680 -
34681 -static int endflag __initdata;
34682 -
34683 -static __init void nmi_cpu_busy(void *data)
34684 -{
34685 - local_irq_enable_in_hardirq();
34686 - while (endflag == 0)
34687 - mb();
34688 -}
34689 -
34690 -static void report_broken_nmi(int cpu, int *prev_nmi_count)
34691 -{
34692 - printk(KERN_CONT "\n");
34693 -
34694 - printk(KERN_WARNING
34695 - "WARNING: CPU#%d: NMI appears to be stuck (%d->%d)!\n",
34696 - cpu, prev_nmi_count[cpu], get_nmi_count(cpu));
34697 -
34698 - printk(KERN_WARNING
34699 - "Please report this to bugzilla.kernel.org,\n");
34700 - printk(KERN_WARNING
34701 - "and attach the output of the 'dmesg' command.\n");
34702 -
34703 - nmi_usable = 0;
34704 -}
34705 -
34706 -static void stop_watchdog(void *unused)
34707 -{
34708 - pcr_ops->write(PCR_PIC_PRIV);
34709 -}
34710 -
34711 -static int __init check_nmi_watchdog(void)
34712 -{
34713 - unsigned int *prev_nmi_count;
34714 - int cpu, err;
34715 -
34716 - prev_nmi_count = kmalloc(nr_cpu_ids * sizeof(unsigned int), GFP_KERNEL);
34717 - if (!prev_nmi_count) {
34718 - err = -ENOMEM;
34719 - goto error;
34720 - }
34721 -
34722 - printk(KERN_INFO "Testing NMI watchdog ... ");
34723 -
34724 - smp_call_function(nmi_cpu_busy, (void *)&endflag, 0);
34725 -
34726 - for_each_possible_cpu(cpu)
34727 - prev_nmi_count[cpu] = get_nmi_count(cpu);
34728 - local_irq_enable();
34729 - mdelay((20 * 1000) / nmi_hz); /* wait 20 ticks */
34730 -
34731 - for_each_online_cpu(cpu) {
34732 - if (get_nmi_count(cpu) - prev_nmi_count[cpu] <= 5)
34733 - report_broken_nmi(cpu, prev_nmi_count);
34734 - }
34735 - endflag = 1;
34736 - if (!nmi_usable) {
34737 - kfree(prev_nmi_count);
34738 - err = -ENODEV;
34739 - goto error;
34740 - }
34741 - printk("OK.\n");
34742 -
34743 - nmi_hz = 1;
34744 -
34745 - kfree(prev_nmi_count);
34746 - return 0;
34747 -error:
34748 - on_each_cpu(stop_watchdog, NULL, 1);
34749 - return err;
34750 -}
34751 -
34752 -static void start_watchdog(void *unused)
34753 -{
34754 - pcr_ops->write(PCR_PIC_PRIV);
34755 - write_pic(picl_value(nmi_hz));
34756 -
34757 - pcr_ops->write(pcr_enable);
34758 -}
34759 -
34760 -void nmi_adjust_hz(unsigned int new_hz)
34761 -{
34762 - nmi_hz = new_hz;
34763 - on_each_cpu(start_watchdog, NULL, 1);
34764 -}
34765 -EXPORT_SYMBOL_GPL(nmi_adjust_hz);
34766 -
34767 -int __init nmi_init(void)
34768 -{
34769 - nmi_usable = 1;
34770 -
34771 - on_each_cpu(start_watchdog, NULL, 1);
34772 -
34773 - return check_nmi_watchdog();
34774 -}
34775 -
34776 -static int __init setup_nmi_watchdog(char *str)
34777 -{
34778 - if (!strncmp(str, "panic", 5))
34779 - panic_on_timeout = 1;
34780 -
34781 - return 0;
34782 -}
34783 -__setup("nmi_watchdog=", setup_nmi_watchdog);
34784 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/pci_common.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/pci_common.c
34785 --- linux-2.6.29.owrt/arch/sparc/kernel/pci_common.c 2009-05-10 22:04:40.000000000 +0200
34786 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/pci_common.c 2009-05-10 23:48:28.000000000 +0200
34787 @@ -368,7 +368,7 @@
34788 const u32 *vdma = of_get_property(pbm->op->node, "virtual-dma", NULL);
34789
34790 if (vdma) {
34791 - struct resource *rp = kzalloc(sizeof(*rp), GFP_KERNEL);
34792 + struct resource *rp = kmalloc(sizeof(*rp), GFP_KERNEL);
34793
34794 if (!rp) {
34795 prom_printf("Cannot allocate IOMMU resource.\n");
34796 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/pcr.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/pcr.c
34797 --- linux-2.6.29.owrt/arch/sparc/kernel/pcr.c 2009-05-10 22:04:40.000000000 +0200
34798 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/pcr.c 1970-01-01 01:00:00.000000000 +0100
34799 @@ -1,158 +0,0 @@
34800 -/* pcr.c: Generic sparc64 performance counter infrastructure.
34801 - *
34802 - * Copyright (C) 2009 David S. Miller (davem@davemloft.net)
34803 - */
34804 -#include <linux/kernel.h>
34805 -#include <linux/module.h>
34806 -#include <linux/init.h>
34807 -#include <linux/irq.h>
34808 -
34809 -#include <asm/pil.h>
34810 -#include <asm/pcr.h>
34811 -#include <asm/nmi.h>
34812 -
34813 -/* This code is shared between various users of the performance
34814 - * counters. Users will be oprofile, pseudo-NMI watchdog, and the
34815 - * perf_counter support layer.
34816 - */
34817 -
34818 -#define PCR_SUN4U_ENABLE (PCR_PIC_PRIV | PCR_STRACE | PCR_UTRACE)
34819 -#define PCR_N2_ENABLE (PCR_PIC_PRIV | PCR_STRACE | PCR_UTRACE | \
34820 - PCR_N2_TOE_OV1 | \
34821 - (2 << PCR_N2_SL1_SHIFT) | \
34822 - (0xff << PCR_N2_MASK1_SHIFT))
34823 -
34824 -u64 pcr_enable;
34825 -unsigned int picl_shift;
34826 -
34827 -/* Performance counter interrupts run unmasked at PIL level 15.
34828 - * Therefore we can't do things like wakeups and other work
34829 - * that expects IRQ disabling to be adhered to in locking etc.
34830 - *
34831 - * Therefore in such situations we defer the work by signalling
34832 - * a lower level cpu IRQ.
34833 - */
34834 -void deferred_pcr_work_irq(int irq, struct pt_regs *regs)
34835 -{
34836 - clear_softint(1 << PIL_DEFERRED_PCR_WORK);
34837 -}
34838 -
34839 -void schedule_deferred_pcr_work(void)
34840 -{
34841 - set_softint(1 << PIL_DEFERRED_PCR_WORK);
34842 -}
34843 -
34844 -const struct pcr_ops *pcr_ops;
34845 -EXPORT_SYMBOL_GPL(pcr_ops);
34846 -
34847 -static u64 direct_pcr_read(void)
34848 -{
34849 - u64 val;
34850 -
34851 - read_pcr(val);
34852 - return val;
34853 -}
34854 -
34855 -static void direct_pcr_write(u64 val)
34856 -{
34857 - write_pcr(val);
34858 -}
34859 -
34860 -static const struct pcr_ops direct_pcr_ops = {
34861 - .read = direct_pcr_read,
34862 - .write = direct_pcr_write,
34863 -};
34864 -
34865 -static void n2_pcr_write(u64 val)
34866 -{
34867 - unsigned long ret;
34868 -
34869 - ret = sun4v_niagara2_setperf(HV_N2_PERF_SPARC_CTL, val);
34870 - if (val != HV_EOK)
34871 - write_pcr(val);
34872 -}
34873 -
34874 -static const struct pcr_ops n2_pcr_ops = {
34875 - .read = direct_pcr_read,
34876 - .write = n2_pcr_write,
34877 -};
34878 -
34879 -static unsigned long perf_hsvc_group;
34880 -static unsigned long perf_hsvc_major;
34881 -static unsigned long perf_hsvc_minor;
34882 -
34883 -static int __init register_perf_hsvc(void)
34884 -{
34885 - if (tlb_type == hypervisor) {
34886 - switch (sun4v_chip_type) {
34887 - case SUN4V_CHIP_NIAGARA1:
34888 - perf_hsvc_group = HV_GRP_NIAG_PERF;
34889 - break;
34890 -
34891 - case SUN4V_CHIP_NIAGARA2:
34892 - perf_hsvc_group = HV_GRP_N2_CPU;
34893 - break;
34894 -
34895 - default:
34896 - return -ENODEV;
34897 - }
34898 -
34899 -
34900 - perf_hsvc_major = 1;
34901 - perf_hsvc_minor = 0;
34902 - if (sun4v_hvapi_register(perf_hsvc_group,
34903 - perf_hsvc_major,
34904 - &perf_hsvc_minor)) {
34905 - printk("perfmon: Could not register hvapi.\n");
34906 - return -ENODEV;
34907 - }
34908 - }
34909 - return 0;
34910 -}
34911 -
34912 -static void __init unregister_perf_hsvc(void)
34913 -{
34914 - if (tlb_type != hypervisor)
34915 - return;
34916 - sun4v_hvapi_unregister(perf_hsvc_group);
34917 -}
34918 -
34919 -int __init pcr_arch_init(void)
34920 -{
34921 - int err = register_perf_hsvc();
34922 -
34923 - if (err)
34924 - return err;
34925 -
34926 - switch (tlb_type) {
34927 - case hypervisor:
34928 - pcr_ops = &n2_pcr_ops;
34929 - pcr_enable = PCR_N2_ENABLE;
34930 - picl_shift = 2;
34931 - break;
34932 -
34933 - case cheetah:
34934 - case cheetah_plus:
34935 - pcr_ops = &direct_pcr_ops;
34936 - pcr_enable = PCR_SUN4U_ENABLE;
34937 - break;
34938 -
34939 - case spitfire:
34940 - /* UltraSPARC-I/II and derivatives lack a profile
34941 - * counter overflow interrupt so we can't make use of
34942 - * their hardware currently.
34943 - */
34944 - /* fallthrough */
34945 - default:
34946 - err = -ENODEV;
34947 - goto out_unregister;
34948 - }
34949 -
34950 - return nmi_init();
34951 -
34952 -out_unregister:
34953 - unregister_perf_hsvc();
34954 - return err;
34955 -}
34956 -
34957 -arch_initcall(pcr_arch_init);
34958 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/process_64.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/process_64.c
34959 --- linux-2.6.29.owrt/arch/sparc/kernel/process_64.c 2009-05-10 22:04:40.000000000 +0200
34960 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/process_64.c 2009-05-10 23:48:28.000000000 +0200
34961 @@ -29,7 +29,6 @@
34962 #include <linux/cpu.h>
34963 #include <linux/elfcore.h>
34964 #include <linux/sysrq.h>
34965 -#include <linux/nmi.h>
34966
34967 #include <asm/uaccess.h>
34968 #include <asm/system.h>
34969 @@ -53,10 +52,8 @@
34970
34971 static void sparc64_yield(int cpu)
34972 {
34973 - if (tlb_type != hypervisor) {
34974 - touch_nmi_watchdog();
34975 + if (tlb_type != hypervisor)
34976 return;
34977 - }
34978
34979 clear_thread_flag(TIF_POLLING_NRFLAG);
34980 smp_mb__after_clear_bit();
34981 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/setup_64.c linux-2.6.29-rc3.owrt/arch/sparc/kernel/setup_64.c
34982 --- linux-2.6.29.owrt/arch/sparc/kernel/setup_64.c 2009-05-10 22:04:40.000000000 +0200
34983 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/setup_64.c 2009-05-10 23:48:28.000000000 +0200
34984 @@ -354,7 +354,6 @@
34985 seq_printf(m,
34986 "cpu\t\t: %s\n"
34987 "fpu\t\t: %s\n"
34988 - "pmu\t\t: %s\n"
34989 "prom\t\t: %s\n"
34990 "type\t\t: %s\n"
34991 "ncpus probed\t: %d\n"
34992 @@ -367,7 +366,6 @@
34993 ,
34994 sparc_cpu_type,
34995 sparc_fpu_type,
34996 - sparc_pmu_type,
34997 prom_version,
34998 ((tlb_type == hypervisor) ?
34999 "sun4v" :
35000 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/kernel/ttable.S linux-2.6.29-rc3.owrt/arch/sparc/kernel/ttable.S
35001 --- linux-2.6.29.owrt/arch/sparc/kernel/ttable.S 2009-05-10 22:04:40.000000000 +0200
35002 +++ linux-2.6.29-rc3.owrt/arch/sparc/kernel/ttable.S 2009-05-10 23:48:28.000000000 +0200
35003 @@ -63,13 +63,7 @@
35004 #else
35005 tl0_irq6: BTRAP(0x46)
35006 #endif
35007 -tl0_irq7: TRAP_IRQ(deferred_pcr_work_irq, 7)
35008 -#ifdef CONFIG_KGDB
35009 -tl0_irq8: TRAP_IRQ(smp_kgdb_capture_client, 8)
35010 -#else
35011 -tl0_irq8: BTRAP(0x48)
35012 -#endif
35013 -tl0_irq9: BTRAP(0x49)
35014 +tl0_irq7: BTRAP(0x47) BTRAP(0x48) BTRAP(0x49)
35015 tl0_irq10: BTRAP(0x4a) BTRAP(0x4b) BTRAP(0x4c) BTRAP(0x4d)
35016 tl0_irq14: TRAP_IRQ(timer_interrupt, 14)
35017 tl0_irq15: TRAP_NMI_IRQ(perfctr_irq, 15)
35018 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/bzero.S linux-2.6.29-rc3.owrt/arch/sparc/lib/bzero.S
35019 --- linux-2.6.29.owrt/arch/sparc/lib/bzero.S 2009-05-10 22:04:40.000000000 +0200
35020 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/bzero.S 2009-05-10 23:48:28.000000000 +0200
35021 @@ -88,9 +88,13 @@
35022
35023 #define EX_ST(x,y) \
35024 98: x,y; \
35025 + .section .fixup; \
35026 + .align 4; \
35027 +99: retl; \
35028 + mov %o1, %o0; \
35029 .section __ex_table,"a";\
35030 .align 4; \
35031 - .word 98b, __retl_o1; \
35032 + .word 98b, 99b; \
35033 .text; \
35034 .align 4;
35035
35036 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/copy_in_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/copy_in_user.S
35037 --- linux-2.6.29.owrt/arch/sparc/lib/copy_in_user.S 2009-05-10 22:04:40.000000000 +0200
35038 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/copy_in_user.S 2009-05-10 23:48:28.000000000 +0200
35039 @@ -3,16 +3,19 @@
35040 * Copyright (C) 1999, 2000, 2004 David S. Miller (davem@redhat.com)
35041 */
35042
35043 -#include <linux/linkage.h>
35044 #include <asm/asi.h>
35045
35046 #define XCC xcc
35047
35048 #define EX(x,y) \
35049 98: x,y; \
35050 + .section .fixup; \
35051 + .align 4; \
35052 +99: retl; \
35053 + mov 1, %o0; \
35054 .section __ex_table,"a";\
35055 .align 4; \
35056 - .word 98b, __retl_one; \
35057 + .word 98b, 99b; \
35058 .text; \
35059 .align 4;
35060
35061 @@ -28,7 +31,18 @@
35062 * to copy register windows around during thread cloning.
35063 */
35064
35065 -ENTRY(___copy_in_user) /* %o0=dst, %o1=src, %o2=len */
35066 + .globl ___copy_in_user
35067 + .type ___copy_in_user,#function
35068 +___copy_in_user: /* %o0=dst, %o1=src, %o2=len */
35069 + /* Writing to %asi is _expensive_ so we hardcode it.
35070 + * Reading %asi to check for KERNEL_DS is comparatively
35071 + * cheap.
35072 + */
35073 + rd %asi, %g1
35074 + cmp %g1, ASI_AIUS
35075 + bne,pn %icc, memcpy_user_stub
35076 + nop
35077 +
35078 cmp %o2, 0
35079 be,pn %XCC, 85f
35080 or %o0, %o1, %o3
35081 @@ -39,24 +53,22 @@
35082 /* 16 < len <= 64 */
35083 andcc %o3, 0x7, %g0
35084 bne,pn %XCC, 90f
35085 - nop
35086 + sub %o0, %o1, %o3
35087
35088 andn %o2, 0x7, %o4
35089 and %o2, 0x7, %o2
35090 1: subcc %o4, 0x8, %o4
35091 EX(ldxa [%o1] %asi, %o5)
35092 - EX(stxa %o5, [%o0] %asi)
35093 - add %o1, 0x8, %o1
35094 + EX(stxa %o5, [%o1 + %o3] ASI_AIUS)
35095 bgu,pt %XCC, 1b
35096 - add %o0, 0x8, %o0
35097 + add %o1, 0x8, %o1
35098 andcc %o2, 0x4, %g0
35099 be,pt %XCC, 1f
35100 nop
35101 sub %o2, 0x4, %o2
35102 EX(lduwa [%o1] %asi, %o5)
35103 - EX(stwa %o5, [%o0] %asi)
35104 + EX(stwa %o5, [%o1 + %o3] ASI_AIUS)
35105 add %o1, 0x4, %o1
35106 - add %o0, 0x4, %o0
35107 1: cmp %o2, 0
35108 be,pt %XCC, 85f
35109 nop
35110 @@ -66,15 +78,14 @@
35111 80: /* 0 < len <= 16 */
35112 andcc %o3, 0x3, %g0
35113 bne,pn %XCC, 90f
35114 - nop
35115 + sub %o0, %o1, %o3
35116
35117 82:
35118 subcc %o2, 4, %o2
35119 EX(lduwa [%o1] %asi, %g1)
35120 - EX(stwa %g1, [%o0] %asi)
35121 - add %o1, 4, %o1
35122 + EX(stwa %g1, [%o1 + %o3] ASI_AIUS)
35123 bgu,pt %XCC, 82b
35124 - add %o0, 4, %o0
35125 + add %o1, 4, %o1
35126
35127 85: retl
35128 clr %o0
35129 @@ -83,10 +94,26 @@
35130 90:
35131 subcc %o2, 1, %o2
35132 EX(lduba [%o1] %asi, %g1)
35133 - EX(stba %g1, [%o0] %asi)
35134 - add %o1, 1, %o1
35135 + EX(stba %g1, [%o1 + %o3] ASI_AIUS)
35136 bgu,pt %XCC, 90b
35137 - add %o0, 1, %o0
35138 + add %o1, 1, %o1
35139 retl
35140 clr %o0
35141 -ENDPROC(___copy_in_user)
35142 +
35143 + .size ___copy_in_user, .-___copy_in_user
35144 +
35145 + /* Act like copy_{to,in}_user(), ie. return zero instead
35146 + * of original destination pointer. This is invoked when
35147 + * copy_{to,in}_user() finds that %asi is kernel space.
35148 + */
35149 + .globl memcpy_user_stub
35150 + .type memcpy_user_stub,#function
35151 +memcpy_user_stub:
35152 + save %sp, -192, %sp
35153 + mov %i0, %o0
35154 + mov %i1, %o1
35155 + call memcpy
35156 + mov %i2, %o2
35157 + ret
35158 + restore %g0, %g0, %o0
35159 + .size memcpy_user_stub, .-memcpy_user_stub
35160 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/GENbzero.S linux-2.6.29-rc3.owrt/arch/sparc/lib/GENbzero.S
35161 --- linux-2.6.29.owrt/arch/sparc/lib/GENbzero.S 2009-05-10 22:04:40.000000000 +0200
35162 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/GENbzero.S 2009-05-10 23:48:28.000000000 +0200
35163 @@ -6,9 +6,13 @@
35164
35165 #define EX_ST(x,y) \
35166 98: x,y; \
35167 + .section .fixup; \
35168 + .align 4; \
35169 +99: retl; \
35170 + mov %o1, %o0; \
35171 .section __ex_table,"a";\
35172 .align 4; \
35173 - .word 98b, __retl_o1; \
35174 + .word 98b, 99b; \
35175 .text; \
35176 .align 4;
35177
35178 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/GENcopy_from_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/GENcopy_from_user.S
35179 --- linux-2.6.29.owrt/arch/sparc/lib/GENcopy_from_user.S 2009-05-10 22:04:40.000000000 +0200
35180 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/GENcopy_from_user.S 2009-05-10 23:48:28.000000000 +0200
35181 @@ -5,9 +5,13 @@
35182
35183 #define EX_LD(x) \
35184 98: x; \
35185 + .section .fixup; \
35186 + .align 4; \
35187 +99: retl; \
35188 + mov 1, %o0; \
35189 .section __ex_table,"a";\
35190 .align 4; \
35191 - .word 98b, __retl_one; \
35192 + .word 98b, 99b; \
35193 .text; \
35194 .align 4;
35195
35196 @@ -23,7 +27,7 @@
35197 #define PREAMBLE \
35198 rd %asi, %g1; \
35199 cmp %g1, ASI_AIUS; \
35200 - bne,pn %icc, ___copy_in_user; \
35201 + bne,pn %icc, memcpy_user_stub; \
35202 nop
35203 #endif
35204
35205 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/GENcopy_to_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/GENcopy_to_user.S
35206 --- linux-2.6.29.owrt/arch/sparc/lib/GENcopy_to_user.S 2009-05-10 22:04:40.000000000 +0200
35207 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/GENcopy_to_user.S 2009-05-10 23:48:28.000000000 +0200
35208 @@ -5,9 +5,13 @@
35209
35210 #define EX_ST(x) \
35211 98: x; \
35212 + .section .fixup; \
35213 + .align 4; \
35214 +99: retl; \
35215 + mov 1, %o0; \
35216 .section __ex_table,"a";\
35217 .align 4; \
35218 - .word 98b, __retl_one; \
35219 + .word 98b, 99b; \
35220 .text; \
35221 .align 4;
35222
35223 @@ -27,7 +31,7 @@
35224 #define PREAMBLE \
35225 rd %asi, %g1; \
35226 cmp %g1, ASI_AIUS; \
35227 - bne,pn %icc, ___copy_in_user; \
35228 + bne,pn %icc, memcpy_user_stub; \
35229 nop
35230 #endif
35231
35232 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/NG2copy_from_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/NG2copy_from_user.S
35233 --- linux-2.6.29.owrt/arch/sparc/lib/NG2copy_from_user.S 2009-05-10 22:04:40.000000000 +0200
35234 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/NG2copy_from_user.S 2009-05-10 23:48:28.000000000 +0200
35235 @@ -5,9 +5,14 @@
35236
35237 #define EX_LD(x) \
35238 98: x; \
35239 + .section .fixup; \
35240 + .align 4; \
35241 +99: wr %g0, ASI_AIUS, %asi;\
35242 + retl; \
35243 + mov 1, %o0; \
35244 .section __ex_table,"a";\
35245 .align 4; \
35246 - .word 98b, __retl_one_asi;\
35247 + .word 98b, 99b; \
35248 .text; \
35249 .align 4;
35250
35251 @@ -28,7 +33,7 @@
35252 #define PREAMBLE \
35253 rd %asi, %g1; \
35254 cmp %g1, ASI_AIUS; \
35255 - bne,pn %icc, ___copy_in_user; \
35256 + bne,pn %icc, memcpy_user_stub; \
35257 nop
35258 #endif
35259
35260 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/NG2copy_to_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/NG2copy_to_user.S
35261 --- linux-2.6.29.owrt/arch/sparc/lib/NG2copy_to_user.S 2009-05-10 22:04:40.000000000 +0200
35262 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/NG2copy_to_user.S 2009-05-10 23:48:28.000000000 +0200
35263 @@ -5,9 +5,14 @@
35264
35265 #define EX_ST(x) \
35266 98: x; \
35267 + .section .fixup; \
35268 + .align 4; \
35269 +99: wr %g0, ASI_AIUS, %asi;\
35270 + retl; \
35271 + mov 1, %o0; \
35272 .section __ex_table,"a";\
35273 .align 4; \
35274 - .word 98b, __retl_one_asi;\
35275 + .word 98b, 99b; \
35276 .text; \
35277 .align 4;
35278
35279 @@ -37,7 +42,7 @@
35280 #define PREAMBLE \
35281 rd %asi, %g1; \
35282 cmp %g1, ASI_AIUS; \
35283 - bne,pn %icc, ___copy_in_user; \
35284 + bne,pn %icc, memcpy_user_stub; \
35285 nop
35286 #endif
35287
35288 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/NGbzero.S linux-2.6.29-rc3.owrt/arch/sparc/lib/NGbzero.S
35289 --- linux-2.6.29.owrt/arch/sparc/lib/NGbzero.S 2009-05-10 22:04:40.000000000 +0200
35290 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/NGbzero.S 2009-05-10 23:48:28.000000000 +0200
35291 @@ -6,9 +6,13 @@
35292
35293 #define EX_ST(x,y) \
35294 98: x,y; \
35295 + .section .fixup; \
35296 + .align 4; \
35297 +99: retl; \
35298 + mov %o1, %o0; \
35299 .section __ex_table,"a";\
35300 .align 4; \
35301 - .word 98b, __retl_o1; \
35302 + .word 98b, 99b; \
35303 .text; \
35304 .align 4;
35305
35306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/NGcopy_from_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/NGcopy_from_user.S
35307 --- linux-2.6.29.owrt/arch/sparc/lib/NGcopy_from_user.S 2009-05-10 22:04:40.000000000 +0200
35308 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/NGcopy_from_user.S 2009-05-10 23:48:28.000000000 +0200
35309 @@ -5,9 +5,14 @@
35310
35311 #define EX_LD(x) \
35312 98: x; \
35313 + .section .fixup; \
35314 + .align 4; \
35315 +99: wr %g0, ASI_AIUS, %asi;\
35316 + ret; \
35317 + restore %g0, 1, %o0; \
35318 .section __ex_table,"a";\
35319 .align 4; \
35320 - .word 98b, __ret_one_asi;\
35321 + .word 98b, 99b; \
35322 .text; \
35323 .align 4;
35324
35325 @@ -25,7 +30,7 @@
35326 #define PREAMBLE \
35327 rd %asi, %g1; \
35328 cmp %g1, ASI_AIUS; \
35329 - bne,pn %icc, ___copy_in_user; \
35330 + bne,pn %icc, memcpy_user_stub; \
35331 nop
35332 #endif
35333
35334 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/NGcopy_to_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/NGcopy_to_user.S
35335 --- linux-2.6.29.owrt/arch/sparc/lib/NGcopy_to_user.S 2009-05-10 22:04:40.000000000 +0200
35336 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/NGcopy_to_user.S 2009-05-10 23:48:28.000000000 +0200
35337 @@ -5,9 +5,14 @@
35338
35339 #define EX_ST(x) \
35340 98: x; \
35341 + .section .fixup; \
35342 + .align 4; \
35343 +99: wr %g0, ASI_AIUS, %asi;\
35344 + ret; \
35345 + restore %g0, 1, %o0; \
35346 .section __ex_table,"a";\
35347 .align 4; \
35348 - .word 98b, __ret_one_asi;\
35349 + .word 98b, 99b; \
35350 .text; \
35351 .align 4;
35352
35353 @@ -28,7 +33,7 @@
35354 #define PREAMBLE \
35355 rd %asi, %g1; \
35356 cmp %g1, ASI_AIUS; \
35357 - bne,pn %icc, ___copy_in_user; \
35358 + bne,pn %icc, memcpy_user_stub; \
35359 nop
35360 #endif
35361
35362 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/U1copy_from_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/U1copy_from_user.S
35363 --- linux-2.6.29.owrt/arch/sparc/lib/U1copy_from_user.S 2009-05-10 22:04:40.000000000 +0200
35364 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/U1copy_from_user.S 2009-05-10 23:48:28.000000000 +0200
35365 @@ -5,9 +5,13 @@
35366
35367 #define EX_LD(x) \
35368 98: x; \
35369 + .section .fixup; \
35370 + .align 4; \
35371 +99: retl; \
35372 + mov 1, %o0; \
35373 .section __ex_table,"a";\
35374 .align 4; \
35375 - .word 98b, __retl_one; \
35376 + .word 98b, 99b; \
35377 .text; \
35378 .align 4;
35379
35380 @@ -23,7 +27,7 @@
35381 #define PREAMBLE \
35382 rd %asi, %g1; \
35383 cmp %g1, ASI_AIUS; \
35384 - bne,pn %icc, ___copy_in_user; \
35385 + bne,pn %icc, memcpy_user_stub; \
35386 nop; \
35387
35388 #include "U1memcpy.S"
35389 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/U1copy_to_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/U1copy_to_user.S
35390 --- linux-2.6.29.owrt/arch/sparc/lib/U1copy_to_user.S 2009-05-10 22:04:40.000000000 +0200
35391 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/U1copy_to_user.S 2009-05-10 23:48:28.000000000 +0200
35392 @@ -5,9 +5,13 @@
35393
35394 #define EX_ST(x) \
35395 98: x; \
35396 + .section .fixup; \
35397 + .align 4; \
35398 +99: retl; \
35399 + mov 1, %o0; \
35400 .section __ex_table,"a";\
35401 .align 4; \
35402 - .word 98b, __retl_one; \
35403 + .word 98b, 99b; \
35404 .text; \
35405 .align 4;
35406
35407 @@ -23,7 +27,7 @@
35408 #define PREAMBLE \
35409 rd %asi, %g1; \
35410 cmp %g1, ASI_AIUS; \
35411 - bne,pn %icc, ___copy_in_user; \
35412 + bne,pn %icc, memcpy_user_stub; \
35413 nop; \
35414
35415 #include "U1memcpy.S"
35416 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/U3copy_from_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/U3copy_from_user.S
35417 --- linux-2.6.29.owrt/arch/sparc/lib/U3copy_from_user.S 2009-05-10 22:04:40.000000000 +0200
35418 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/U3copy_from_user.S 2009-05-10 23:48:28.000000000 +0200
35419 @@ -5,9 +5,13 @@
35420
35421 #define EX_LD(x) \
35422 98: x; \
35423 + .section .fixup; \
35424 + .align 4; \
35425 +99: retl; \
35426 + mov 1, %o0; \
35427 .section __ex_table,"a";\
35428 .align 4; \
35429 - .word 98b, __retl_one; \
35430 + .word 98b, 99b; \
35431 .text; \
35432 .align 4;
35433
35434 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/lib/U3copy_to_user.S linux-2.6.29-rc3.owrt/arch/sparc/lib/U3copy_to_user.S
35435 --- linux-2.6.29.owrt/arch/sparc/lib/U3copy_to_user.S 2009-05-10 22:04:40.000000000 +0200
35436 +++ linux-2.6.29-rc3.owrt/arch/sparc/lib/U3copy_to_user.S 2009-05-10 23:48:28.000000000 +0200
35437 @@ -5,9 +5,13 @@
35438
35439 #define EX_ST(x) \
35440 98: x; \
35441 + .section .fixup; \
35442 + .align 4; \
35443 +99: retl; \
35444 + mov 1, %o0; \
35445 .section __ex_table,"a";\
35446 .align 4; \
35447 - .word 98b, __retl_one; \
35448 + .word 98b, 99b; \
35449 .text; \
35450 .align 4;
35451
35452 @@ -23,7 +27,7 @@
35453 #define PREAMBLE \
35454 rd %asi, %g1; \
35455 cmp %g1, ASI_AIUS; \
35456 - bne,pn %icc, ___copy_in_user; \
35457 + bne,pn %icc, memcpy_user_stub; \
35458 nop; \
35459
35460 #include "U3memcpy.S"
35461 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/mm/fault_64.c linux-2.6.29-rc3.owrt/arch/sparc/mm/fault_64.c
35462 --- linux-2.6.29.owrt/arch/sparc/mm/fault_64.c 2009-05-10 22:04:40.000000000 +0200
35463 +++ linux-2.6.29-rc3.owrt/arch/sparc/mm/fault_64.c 2009-05-10 23:48:28.000000000 +0200
35464 @@ -19,7 +19,6 @@
35465 #include <linux/interrupt.h>
35466 #include <linux/kprobes.h>
35467 #include <linux/kdebug.h>
35468 -#include <linux/percpu.h>
35469
35470 #include <asm/page.h>
35471 #include <asm/pgtable.h>
35472 @@ -225,30 +224,6 @@
35473 unhandled_fault (address, current, regs);
35474 }
35475
35476 -static void noinline bogus_32bit_fault_tpc(struct pt_regs *regs)
35477 -{
35478 - static int times;
35479 -
35480 - if (times++ < 10)
35481 - printk(KERN_ERR "FAULT[%s:%d]: 32-bit process reports "
35482 - "64-bit TPC [%lx]\n",
35483 - current->comm, current->pid,
35484 - regs->tpc);
35485 - show_regs(regs);
35486 -}
35487 -
35488 -static void noinline bogus_32bit_fault_address(struct pt_regs *regs,
35489 - unsigned long addr)
35490 -{
35491 - static int times;
35492 -
35493 - if (times++ < 10)
35494 - printk(KERN_ERR "FAULT[%s:%d]: 32-bit process "
35495 - "reports 64-bit fault address [%lx]\n",
35496 - current->comm, current->pid, addr);
35497 - show_regs(regs);
35498 -}
35499 -
35500 asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
35501 {
35502 struct mm_struct *mm = current->mm;
35503 @@ -269,19 +244,6 @@
35504 (fault_code & FAULT_CODE_DTLB))
35505 BUG();
35506
35507 - if (test_thread_flag(TIF_32BIT)) {
35508 - if (!(regs->tstate & TSTATE_PRIV)) {
35509 - if (unlikely((regs->tpc >> 32) != 0)) {
35510 - bogus_32bit_fault_tpc(regs);
35511 - goto intr_or_no_mm;
35512 - }
35513 - }
35514 - if (unlikely((address >> 32) != 0)) {
35515 - bogus_32bit_fault_address(regs, address);
35516 - goto intr_or_no_mm;
35517 - }
35518 - }
35519 -
35520 if (regs->tstate & TSTATE_PRIV) {
35521 unsigned long tpc = regs->tpc;
35522
35523 @@ -302,6 +264,12 @@
35524 if (in_atomic() || !mm)
35525 goto intr_or_no_mm;
35526
35527 + if (test_thread_flag(TIF_32BIT)) {
35528 + if (!(regs->tstate & TSTATE_PRIV))
35529 + regs->tpc &= 0xffffffff;
35530 + address &= 0xffffffff;
35531 + }
35532 +
35533 if (!down_read_trylock(&mm->mmap_sem)) {
35534 if ((regs->tstate & TSTATE_PRIV) &&
35535 !search_exception_tables(regs->tpc)) {
35536 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/mm/ultra.S linux-2.6.29-rc3.owrt/arch/sparc/mm/ultra.S
35537 --- linux-2.6.29.owrt/arch/sparc/mm/ultra.S 2009-05-10 22:04:40.000000000 +0200
35538 +++ linux-2.6.29-rc3.owrt/arch/sparc/mm/ultra.S 2009-05-10 23:48:28.000000000 +0200
35539 @@ -679,8 +679,28 @@
35540 #ifdef CONFIG_KGDB
35541 .globl xcall_kgdb_capture
35542 xcall_kgdb_capture:
35543 - wr %g0, (1 << PIL_KGDB_CAPTURE), %set_softint
35544 - retry
35545 +661: rdpr %pstate, %g2
35546 + wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate
35547 + .section .sun4v_2insn_patch, "ax"
35548 + .word 661b
35549 + nop
35550 + nop
35551 + .previous
35552 +
35553 + rdpr %pil, %g2
35554 + wrpr %g0, PIL_NORMAL_MAX, %pil
35555 + sethi %hi(109f), %g7
35556 + ba,pt %xcc, etrap_irq
35557 +109: or %g7, %lo(109b), %g7
35558 +#ifdef CONFIG_TRACE_IRQFLAGS
35559 + call trace_hardirqs_off
35560 + nop
35561 +#endif
35562 + call smp_kgdb_capture_client
35563 + add %sp, PTREGS_OFF, %o0
35564 + /* Has to be a non-v9 branch due to the large distance. */
35565 + ba rtrap_xcall
35566 + ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1
35567 #endif
35568
35569 #endif /* CONFIG_SMP */
35570 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/sparc/oprofile/init.c linux-2.6.29-rc3.owrt/arch/sparc/oprofile/init.c
35571 --- linux-2.6.29.owrt/arch/sparc/oprofile/init.c 2009-05-10 22:04:40.000000000 +0200
35572 +++ linux-2.6.29-rc3.owrt/arch/sparc/oprofile/init.c 2009-05-10 23:48:28.000000000 +0200
35573 @@ -13,57 +13,217 @@
35574 #include <linux/init.h>
35575
35576 #ifdef CONFIG_SPARC64
35577 -#include <linux/notifier.h>
35578 -#include <linux/rcupdate.h>
35579 -#include <linux/kdebug.h>
35580 -#include <asm/nmi.h>
35581 -
35582 -static int profile_timer_exceptions_notify(struct notifier_block *self,
35583 - unsigned long val, void *data)
35584 -{
35585 - struct die_args *args = (struct die_args *)data;
35586 - int ret = NOTIFY_DONE;
35587 -
35588 - switch (val) {
35589 - case DIE_NMI:
35590 - oprofile_add_sample(args->regs, 0);
35591 - ret = NOTIFY_STOP;
35592 - break;
35593 - default:
35594 - break;
35595 - }
35596 - return ret;
35597 +#include <asm/hypervisor.h>
35598 +#include <asm/spitfire.h>
35599 +#include <asm/cpudata.h>
35600 +#include <asm/irq.h>
35601 +
35602 +static int nmi_enabled;
35603 +
35604 +struct pcr_ops {
35605 + u64 (*read)(void);
35606 + void (*write)(u64);
35607 +};
35608 +static const struct pcr_ops *pcr_ops;
35609 +
35610 +static u64 direct_pcr_read(void)
35611 +{
35612 + u64 val;
35613 +
35614 + read_pcr(val);
35615 + return val;
35616 +}
35617 +
35618 +static void direct_pcr_write(u64 val)
35619 +{
35620 + write_pcr(val);
35621 }
35622
35623 -static struct notifier_block profile_timer_exceptions_nb = {
35624 - .notifier_call = profile_timer_exceptions_notify,
35625 +static const struct pcr_ops direct_pcr_ops = {
35626 + .read = direct_pcr_read,
35627 + .write = direct_pcr_write,
35628 };
35629
35630 -static int timer_start(void)
35631 +static void n2_pcr_write(u64 val)
35632 {
35633 - if (register_die_notifier(&profile_timer_exceptions_nb))
35634 - return 1;
35635 - nmi_adjust_hz(HZ);
35636 - return 0;
35637 + unsigned long ret;
35638 +
35639 + ret = sun4v_niagara2_setperf(HV_N2_PERF_SPARC_CTL, val);
35640 + if (val != HV_EOK)
35641 + write_pcr(val);
35642 }
35643
35644 +static const struct pcr_ops n2_pcr_ops = {
35645 + .read = direct_pcr_read,
35646 + .write = n2_pcr_write,
35647 +};
35648
35649 -static void timer_stop(void)
35650 +/* In order to commonize as much of the implementation as
35651 + * possible, we use PICH as our counter. Mostly this is
35652 + * to accomodate Niagara-1 which can only count insn cycles
35653 + * in PICH.
35654 + */
35655 +static u64 picl_value(void)
35656 +{
35657 + u32 delta = local_cpu_data().clock_tick / HZ;
35658 +
35659 + return ((u64)((0 - delta) & 0xffffffff)) << 32;
35660 +}
35661 +
35662 +#define PCR_PIC_PRIV 0x00000001 /* PIC access is privileged */
35663 +#define PCR_STRACE 0x00000002 /* Trace supervisor events */
35664 +#define PCR_UTRACE 0x00000004 /* Trace user events */
35665 +#define PCR_N2_HTRACE 0x00000008 /* Trace hypervisor events */
35666 +#define PCR_N2_TOE_OV0 0x00000010 /* Trap if PIC 0 overflows */
35667 +#define PCR_N2_TOE_OV1 0x00000020 /* Trap if PIC 1 overflows */
35668 +#define PCR_N2_MASK0 0x00003fc0
35669 +#define PCR_N2_MASK0_SHIFT 6
35670 +#define PCR_N2_SL0 0x0003c000
35671 +#define PCR_N2_SL0_SHIFT 14
35672 +#define PCR_N2_OV0 0x00040000
35673 +#define PCR_N2_MASK1 0x07f80000
35674 +#define PCR_N2_MASK1_SHIFT 19
35675 +#define PCR_N2_SL1 0x78000000
35676 +#define PCR_N2_SL1_SHIFT 27
35677 +#define PCR_N2_OV1 0x80000000
35678 +
35679 +#define PCR_SUN4U_ENABLE (PCR_PIC_PRIV | PCR_STRACE | PCR_UTRACE)
35680 +#define PCR_N2_ENABLE (PCR_PIC_PRIV | PCR_STRACE | PCR_UTRACE | \
35681 + PCR_N2_TOE_OV1 | \
35682 + (2 << PCR_N2_SL1_SHIFT) | \
35683 + (0xff << PCR_N2_MASK1_SHIFT))
35684 +
35685 +static u64 pcr_enable = PCR_SUN4U_ENABLE;
35686 +
35687 +static void nmi_handler(struct pt_regs *regs)
35688 {
35689 - nmi_adjust_hz(1);
35690 - unregister_die_notifier(&profile_timer_exceptions_nb);
35691 - synchronize_sched(); /* Allow already-started NMIs to complete. */
35692 + pcr_ops->write(PCR_PIC_PRIV);
35693 +
35694 + if (nmi_enabled) {
35695 + oprofile_add_sample(regs, 0);
35696 +
35697 + write_pic(picl_value());
35698 + pcr_ops->write(pcr_enable);
35699 + }
35700 +}
35701 +
35702 +/* We count "clock cycle" events in the lower 32-bit PIC.
35703 + * Then configure it such that it overflows every HZ, and thus
35704 + * generates a level 15 interrupt at that frequency.
35705 + */
35706 +static void cpu_nmi_start(void *_unused)
35707 +{
35708 + pcr_ops->write(PCR_PIC_PRIV);
35709 + write_pic(picl_value());
35710 +
35711 + pcr_ops->write(pcr_enable);
35712 +}
35713 +
35714 +static void cpu_nmi_stop(void *_unused)
35715 +{
35716 + pcr_ops->write(PCR_PIC_PRIV);
35717 +}
35718 +
35719 +static int nmi_start(void)
35720 +{
35721 + int err = register_perfctr_intr(nmi_handler);
35722 +
35723 + if (!err) {
35724 + nmi_enabled = 1;
35725 + wmb();
35726 + err = on_each_cpu(cpu_nmi_start, NULL, 1);
35727 + if (err) {
35728 + nmi_enabled = 0;
35729 + wmb();
35730 + on_each_cpu(cpu_nmi_stop, NULL, 1);
35731 + release_perfctr_intr(nmi_handler);
35732 + }
35733 + }
35734 +
35735 + return err;
35736 }
35737
35738 -static int op_nmi_timer_init(struct oprofile_operations *ops)
35739 +static void nmi_stop(void)
35740 {
35741 - if (!nmi_usable)
35742 + nmi_enabled = 0;
35743 + wmb();
35744 +
35745 + on_each_cpu(cpu_nmi_stop, NULL, 1);
35746 + release_perfctr_intr(nmi_handler);
35747 + synchronize_sched();
35748 +}
35749 +
35750 +static unsigned long perf_hsvc_group;
35751 +static unsigned long perf_hsvc_major;
35752 +static unsigned long perf_hsvc_minor;
35753 +
35754 +static int __init register_perf_hsvc(void)
35755 +{
35756 + if (tlb_type == hypervisor) {
35757 + switch (sun4v_chip_type) {
35758 + case SUN4V_CHIP_NIAGARA1:
35759 + perf_hsvc_group = HV_GRP_NIAG_PERF;
35760 + break;
35761 +
35762 + case SUN4V_CHIP_NIAGARA2:
35763 + perf_hsvc_group = HV_GRP_N2_CPU;
35764 + break;
35765 +
35766 + default:
35767 + return -ENODEV;
35768 + }
35769 +
35770 +
35771 + perf_hsvc_major = 1;
35772 + perf_hsvc_minor = 0;
35773 + if (sun4v_hvapi_register(perf_hsvc_group,
35774 + perf_hsvc_major,
35775 + &perf_hsvc_minor)) {
35776 + printk("perfmon: Could not register N2 hvapi.\n");
35777 + return -ENODEV;
35778 + }
35779 + }
35780 + return 0;
35781 +}
35782 +
35783 +static void unregister_perf_hsvc(void)
35784 +{
35785 + if (tlb_type != hypervisor)
35786 + return;
35787 + sun4v_hvapi_unregister(perf_hsvc_group);
35788 +}
35789 +
35790 +static int oprofile_nmi_init(struct oprofile_operations *ops)
35791 +{
35792 + int err = register_perf_hsvc();
35793 +
35794 + if (err)
35795 + return err;
35796 +
35797 + switch (tlb_type) {
35798 + case hypervisor:
35799 + pcr_ops = &n2_pcr_ops;
35800 + pcr_enable = PCR_N2_ENABLE;
35801 + break;
35802 +
35803 + case cheetah:
35804 + case cheetah_plus:
35805 + pcr_ops = &direct_pcr_ops;
35806 + break;
35807 +
35808 + default:
35809 return -ENODEV;
35810 + }
35811
35812 - ops->start = timer_start;
35813 - ops->stop = timer_stop;
35814 + ops->create_files = NULL;
35815 + ops->setup = NULL;
35816 + ops->shutdown = NULL;
35817 + ops->start = nmi_start;
35818 + ops->stop = nmi_stop;
35819 ops->cpu_type = "timer";
35820 - printk(KERN_INFO "oprofile: Using perfctr NMI timer interrupt.\n");
35821 +
35822 + printk(KERN_INFO "oprofile: Using perfctr based NMI timer interrupt.\n");
35823 +
35824 return 0;
35825 }
35826 #endif
35827 @@ -73,7 +233,7 @@
35828 int ret = -ENODEV;
35829
35830 #ifdef CONFIG_SPARC64
35831 - ret = op_nmi_timer_init(ops);
35832 + ret = oprofile_nmi_init(ops);
35833 if (!ret)
35834 return ret;
35835 #endif
35836 @@ -81,6 +241,10 @@
35837 return ret;
35838 }
35839
35840 +
35841 void oprofile_arch_exit(void)
35842 {
35843 +#ifdef CONFIG_SPARC64
35844 + unregister_perf_hsvc();
35845 +#endif
35846 }
35847 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/um/drivers/vde_user.c linux-2.6.29-rc3.owrt/arch/um/drivers/vde_user.c
35848 --- linux-2.6.29.owrt/arch/um/drivers/vde_user.c 2009-05-10 22:04:41.000000000 +0200
35849 +++ linux-2.6.29-rc3.owrt/arch/um/drivers/vde_user.c 2009-05-10 23:48:28.000000000 +0200
35850 @@ -78,7 +78,7 @@
35851 {
35852 struct vde_open_args *args;
35853
35854 - vpri->args = uml_kmalloc(sizeof(struct vde_open_args), UM_GFP_KERNEL);
35855 + vpri->args = kmalloc(sizeof(struct vde_open_args), UM_GFP_KERNEL);
35856 if (vpri->args == NULL) {
35857 printk(UM_KERN_ERR "vde_init_libstuff - vde_open_args "
35858 "allocation failed");
35859 @@ -91,8 +91,8 @@
35860 args->group = init->group;
35861 args->mode = init->mode ? init->mode : 0700;
35862
35863 - args->port ? printk("port %d", args->port) :
35864 - printk("undefined port");
35865 + args->port ? printk(UM_KERN_INFO "port %d", args->port) :
35866 + printk(UM_KERN_INFO "undefined port");
35867 }
35868
35869 int vde_user_read(void *conn, void *buf, int len)
35870 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/um/kernel/ptrace.c linux-2.6.29-rc3.owrt/arch/um/kernel/ptrace.c
35871 --- linux-2.6.29.owrt/arch/um/kernel/ptrace.c 2009-05-10 22:04:41.000000000 +0200
35872 +++ linux-2.6.29-rc3.owrt/arch/um/kernel/ptrace.c 2009-05-10 23:48:28.000000000 +0200
35873 @@ -64,11 +64,6 @@
35874 ret = poke_user(child, addr, data);
35875 break;
35876
35877 - case PTRACE_SYSEMU:
35878 - case PTRACE_SYSEMU_SINGLESTEP:
35879 - ret = -EIO;
35880 - break;
35881 -
35882 /* continue and stop at next (return from) syscall */
35883 case PTRACE_SYSCALL:
35884 /* restart after signal. */
35885 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/um/os-Linux/user_syms.c linux-2.6.29-rc3.owrt/arch/um/os-Linux/user_syms.c
35886 --- linux-2.6.29.owrt/arch/um/os-Linux/user_syms.c 2009-05-10 22:04:41.000000000 +0200
35887 +++ linux-2.6.29-rc3.owrt/arch/um/os-Linux/user_syms.c 2009-05-10 23:48:28.000000000 +0200
35888 @@ -14,6 +14,7 @@
35889 #undef memset
35890
35891 extern size_t strlen(const char *);
35892 +extern void *memcpy(void *, const void *, size_t);
35893 extern void *memmove(void *, const void *, size_t);
35894 extern void *memset(void *, int, size_t);
35895 extern int printf(const char *, ...);
35896 @@ -23,11 +24,7 @@
35897 EXPORT_SYMBOL(strstr);
35898 #endif
35899
35900 -#ifndef __x86_64__
35901 -extern void *memcpy(void *, const void *, size_t);
35902 EXPORT_SYMBOL(memcpy);
35903 -#endif
35904 -
35905 EXPORT_SYMBOL(memmove);
35906 EXPORT_SYMBOL(memset);
35907 EXPORT_SYMBOL(printf);
35908 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/boot/video-vesa.c linux-2.6.29-rc3.owrt/arch/x86/boot/video-vesa.c
35909 --- linux-2.6.29.owrt/arch/x86/boot/video-vesa.c 2009-05-10 22:04:41.000000000 +0200
35910 +++ linux-2.6.29-rc3.owrt/arch/x86/boot/video-vesa.c 2009-05-10 23:48:28.000000000 +0200
35911 @@ -269,8 +269,9 @@
35912 we genuinely have to assume all registers are destroyed here. */
35913
35914 asm("pushw %%es; movw %2,%%es; "INT10"; popw %%es"
35915 - : "+a" (ax), "+b" (bx), "+c" (cx), "+D" (di)
35916 - : : "esi", "edx");
35917 + : "+a" (ax), "+b" (bx)
35918 + : "c" (cx), "D" (di)
35919 + : "esi");
35920
35921 if (ax != 0x004f)
35922 return; /* No EDID */
35923 @@ -284,9 +285,9 @@
35924 dx = 0; /* EDID block number */
35925 di =(size_t) &boot_params.edid_info; /* (ES:)Pointer to block */
35926 asm(INT10
35927 - : "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info),
35928 - "+c" (cx), "+D" (di)
35929 - : : "esi");
35930 + : "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info)
35931 + : "c" (cx), "D" (di)
35932 + : "esi");
35933 #endif /* CONFIG_FIRMWARE_EDID */
35934 }
35935
35936 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/ia32/ia32entry.S linux-2.6.29-rc3.owrt/arch/x86/ia32/ia32entry.S
35937 --- linux-2.6.29.owrt/arch/x86/ia32/ia32entry.S 2009-05-10 22:04:41.000000000 +0200
35938 +++ linux-2.6.29-rc3.owrt/arch/x86/ia32/ia32entry.S 2009-05-10 23:48:28.000000000 +0200
35939 @@ -418,9 +418,9 @@
35940 orl $TS_COMPAT,TI_status(%r10)
35941 testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%r10)
35942 jnz ia32_tracesys
35943 +ia32_do_syscall:
35944 cmpl $(IA32_NR_syscalls-1),%eax
35945 - ja ia32_badsys
35946 -ia32_do_call:
35947 + ja int_ret_from_sys_call /* ia32_tracesys has set RAX(%rsp) */
35948 IA32_ARG_FIXUP
35949 call *ia32_sys_call_table(,%rax,8) # xxx: rip relative
35950 ia32_sysret:
35951 @@ -435,9 +435,7 @@
35952 call syscall_trace_enter
35953 LOAD_ARGS32 ARGOFFSET /* reload args from stack in case ptrace changed it */
35954 RESTORE_REST
35955 - cmpl $(IA32_NR_syscalls-1),%eax
35956 - ja int_ret_from_sys_call /* ia32_tracesys has set RAX(%rsp) */
35957 - jmp ia32_do_call
35958 + jmp ia32_do_syscall
35959 END(ia32_syscall)
35960
35961 ia32_badsys:
35962 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/a.out-core.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/a.out-core.h
35963 --- linux-2.6.29.owrt/arch/x86/include/asm/a.out-core.h 2009-05-10 22:04:41.000000000 +0200
35964 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/a.out-core.h 2009-05-10 23:48:28.000000000 +0200
35965 @@ -23,6 +23,8 @@
35966 */
35967 static inline void aout_dump_thread(struct pt_regs *regs, struct user *dump)
35968 {
35969 + u16 gs;
35970 +
35971 /* changed the size calculations - should hopefully work better. lbt */
35972 dump->magic = CMAGIC;
35973 dump->start_code = 0;
35974 @@ -55,7 +57,7 @@
35975 dump->regs.ds = (u16)regs->ds;
35976 dump->regs.es = (u16)regs->es;
35977 dump->regs.fs = (u16)regs->fs;
35978 - savesegment(gs, dump->regs.gs);
35979 + savesegment(gs, gs);
35980 dump->regs.orig_ax = regs->orig_ax;
35981 dump->regs.ip = regs->ip;
35982 dump->regs.cs = (u16)regs->cs;
35983 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/cpufeature.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/cpufeature.h
35984 --- linux-2.6.29.owrt/arch/x86/include/asm/cpufeature.h 2009-05-10 22:04:41.000000000 +0200
35985 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/cpufeature.h 2009-05-10 23:48:28.000000000 +0200
35986 @@ -93,7 +93,6 @@
35987 #define X86_FEATURE_XTOPOLOGY (3*32+22) /* cpu topology enum extensions */
35988 #define X86_FEATURE_TSC_RELIABLE (3*32+23) /* TSC is known to be reliable */
35989 #define X86_FEATURE_NONSTOP_TSC (3*32+24) /* TSC does not stop in C states */
35990 -#define X86_FEATURE_CLFLUSH_MONITOR (3*32+25) /* "" clflush reqd with monitor */
35991
35992 /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
35993 #define X86_FEATURE_XMM3 (4*32+ 0) /* "pni" SSE-3 */
35994 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/dma-mapping.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/dma-mapping.h
35995 --- linux-2.6.29.owrt/arch/x86/include/asm/dma-mapping.h 2009-05-10 22:04:41.000000000 +0200
35996 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/dma-mapping.h 2009-05-10 23:48:28.000000000 +0200
35997 @@ -2,8 +2,8 @@
35998 #define _ASM_X86_DMA_MAPPING_H
35999
36000 /*
36001 - * IOMMU interface. See Documentation/PCI/PCI-DMA-mapping.txt and
36002 - * Documentation/DMA-API.txt for documentation.
36003 + * IOMMU interface. See Documentation/DMA-mapping.txt and DMA-API.txt for
36004 + * documentation.
36005 */
36006
36007 #include <linux/scatterlist.h>
36008 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/e820.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/e820.h
36009 --- linux-2.6.29.owrt/arch/x86/include/asm/e820.h 2009-05-10 22:04:41.000000000 +0200
36010 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/e820.h 2009-05-10 23:48:28.000000000 +0200
36011 @@ -49,7 +49,6 @@
36012 #define E820_RESERVED_KERN 128
36013
36014 #ifndef __ASSEMBLY__
36015 -#include <linux/types.h>
36016 struct e820entry {
36017 __u64 addr; /* start of memory segment */
36018 __u64 size; /* size of memory segment */
36019 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/efi.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/efi.h
36020 --- linux-2.6.29.owrt/arch/x86/include/asm/efi.h 2009-05-10 22:04:41.000000000 +0200
36021 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/efi.h 2009-05-10 23:48:28.000000000 +0200
36022 @@ -37,6 +37,8 @@
36023
36024 #else /* !CONFIG_X86_32 */
36025
36026 +#define MAX_EFI_IO_PAGES 100
36027 +
36028 extern u64 efi_call0(void *fp);
36029 extern u64 efi_call1(void *fp, u64 arg1);
36030 extern u64 efi_call2(void *fp, u64 arg1, u64 arg2);
36031 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/fixmap_64.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/fixmap_64.h
36032 --- linux-2.6.29.owrt/arch/x86/include/asm/fixmap_64.h 2009-05-10 22:04:41.000000000 +0200
36033 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/fixmap_64.h 2009-05-10 23:48:28.000000000 +0200
36034 @@ -16,6 +16,7 @@
36035 #include <asm/apicdef.h>
36036 #include <asm/page.h>
36037 #include <asm/vsyscall.h>
36038 +#include <asm/efi.h>
36039
36040 /*
36041 * Here we define all the compile-time 'special' virtual
36042 @@ -42,6 +43,9 @@
36043 FIX_APIC_BASE, /* local (CPU) APIC) -- required for SMP or not */
36044 FIX_IO_APIC_BASE_0,
36045 FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + MAX_IO_APICS - 1,
36046 + FIX_EFI_IO_MAP_LAST_PAGE,
36047 + FIX_EFI_IO_MAP_FIRST_PAGE = FIX_EFI_IO_MAP_LAST_PAGE
36048 + + MAX_EFI_IO_PAGES - 1,
36049 #ifdef CONFIG_PARAVIRT
36050 FIX_PARAVIRT_BOOTMAP,
36051 #endif
36052 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/i387.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/i387.h
36053 --- linux-2.6.29.owrt/arch/x86/include/asm/i387.h 2009-05-10 22:04:41.000000000 +0200
36054 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/i387.h 2009-05-10 23:48:28.000000000 +0200
36055 @@ -172,13 +172,7 @@
36056
36057 #else /* CONFIG_X86_32 */
36058
36059 -#ifdef CONFIG_MATH_EMULATION
36060 -extern void finit_task(struct task_struct *tsk);
36061 -#else
36062 -static inline void finit_task(struct task_struct *tsk)
36063 -{
36064 -}
36065 -#endif
36066 +extern void finit(void);
36067
36068 static inline void tolerant_fwait(void)
36069 {
36070 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/iomap.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/iomap.h
36071 --- linux-2.6.29.owrt/arch/x86/include/asm/iomap.h 2009-05-10 22:04:41.000000000 +0200
36072 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/iomap.h 2009-05-10 23:48:28.000000000 +0200
36073 @@ -23,9 +23,6 @@
36074 #include <asm/pgtable.h>
36075 #include <asm/tlbflush.h>
36076
36077 -int
36078 -is_io_mapping_possible(resource_size_t base, unsigned long size);
36079 -
36080 void *
36081 iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot);
36082
36083 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/kvm.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/kvm.h
36084 --- linux-2.6.29.owrt/arch/x86/include/asm/kvm.h 2009-05-10 22:04:41.000000000 +0200
36085 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/kvm.h 2009-05-10 23:48:28.000000000 +0200
36086 @@ -6,16 +6,9 @@
36087 *
36088 */
36089
36090 -#include <linux/types.h>
36091 +#include <asm/types.h>
36092 #include <linux/ioctl.h>
36093
36094 -/* Select x86 specific features in <linux/kvm.h> */
36095 -#define __KVM_HAVE_PIT
36096 -#define __KVM_HAVE_IOAPIC
36097 -#define __KVM_HAVE_DEVICE_ASSIGNMENT
36098 -#define __KVM_HAVE_MSI
36099 -#define __KVM_HAVE_USER_NMI
36100 -
36101 /* Architectural interrupt line count. */
36102 #define KVM_NR_INTERRUPTS 256
36103
36104 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/math_emu.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/math_emu.h
36105 --- linux-2.6.29.owrt/arch/x86/include/asm/math_emu.h 2009-05-10 22:04:41.000000000 +0200
36106 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/math_emu.h 2009-05-10 23:48:28.000000000 +0200
36107 @@ -1,18 +1,31 @@
36108 #ifndef _ASM_X86_MATH_EMU_H
36109 #define _ASM_X86_MATH_EMU_H
36110
36111 -#include <asm/ptrace.h>
36112 -#include <asm/vm86.h>
36113 -
36114 /* This structure matches the layout of the data saved to the stack
36115 following a device-not-present interrupt, part of it saved
36116 automatically by the 80386/80486.
36117 */
36118 -struct math_emu_info {
36119 +struct info {
36120 long ___orig_eip;
36121 - union {
36122 - struct pt_regs *regs;
36123 - struct kernel_vm86_regs *vm86;
36124 - };
36125 + long ___ebx;
36126 + long ___ecx;
36127 + long ___edx;
36128 + long ___esi;
36129 + long ___edi;
36130 + long ___ebp;
36131 + long ___eax;
36132 + long ___ds;
36133 + long ___es;
36134 + long ___fs;
36135 + long ___orig_eax;
36136 + long ___eip;
36137 + long ___cs;
36138 + long ___eflags;
36139 + long ___esp;
36140 + long ___ss;
36141 + long ___vm86_es; /* This and the following only in vm86 mode */
36142 + long ___vm86_ds;
36143 + long ___vm86_fs;
36144 + long ___vm86_gs;
36145 };
36146 #endif /* _ASM_X86_MATH_EMU_H */
36147 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/mce.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/mce.h
36148 --- linux-2.6.29.owrt/arch/x86/include/asm/mce.h 2009-05-10 22:04:41.000000000 +0200
36149 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/mce.h 2009-05-10 23:48:28.000000000 +0200
36150 @@ -3,8 +3,8 @@
36151
36152 #ifdef __x86_64__
36153
36154 -#include <linux/types.h>
36155 #include <asm/ioctls.h>
36156 +#include <asm/types.h>
36157
36158 /*
36159 * Machine Check support for x86
36160 @@ -115,6 +115,8 @@
36161
36162 #endif /* !CONFIG_X86_32 */
36163
36164 +
36165 +
36166 #ifdef CONFIG_X86_MCE
36167 extern void mcheck_init(struct cpuinfo_x86 *c);
36168 #else
36169 @@ -124,4 +126,5 @@
36170 extern void restart_mce(void);
36171
36172 #endif /* __KERNEL__ */
36173 +
36174 #endif /* _ASM_X86_MCE_H */
36175 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/mmzone_32.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/mmzone_32.h
36176 --- linux-2.6.29.owrt/arch/x86/include/asm/mmzone_32.h 2009-05-10 22:04:41.000000000 +0200
36177 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/mmzone_32.h 2009-05-10 23:48:28.000000000 +0200
36178 @@ -32,6 +32,8 @@
36179 get_memcfg_numa_flat();
36180 }
36181
36182 +extern int early_pfn_to_nid(unsigned long pfn);
36183 +
36184 extern void resume_map_numa_kva(pgd_t *pgd);
36185
36186 #else /* !CONFIG_NUMA */
36187 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/mmzone_64.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/mmzone_64.h
36188 --- linux-2.6.29.owrt/arch/x86/include/asm/mmzone_64.h 2009-05-10 22:04:41.000000000 +0200
36189 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/mmzone_64.h 2009-05-10 23:48:28.000000000 +0200
36190 @@ -40,6 +40,8 @@
36191 #define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \
36192 NODE_DATA(nid)->node_spanned_pages)
36193
36194 +extern int early_pfn_to_nid(unsigned long pfn);
36195 +
36196 #ifdef CONFIG_NUMA_EMU
36197 #define FAKE_NODE_MIN_SIZE (64 * 1024 * 1024)
36198 #define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
36199 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/mpspec.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/mpspec.h
36200 --- linux-2.6.29.owrt/arch/x86/include/asm/mpspec.h 2009-05-10 22:04:41.000000000 +0200
36201 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/mpspec.h 2009-05-10 23:48:28.000000000 +0200
36202 @@ -60,7 +60,6 @@
36203 u32 gsi);
36204 extern void mp_config_acpi_legacy_irqs(void);
36205 extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low);
36206 -extern int acpi_probe_gsi(void);
36207 #ifdef CONFIG_X86_IO_APIC
36208 extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
36209 u32 gsi, int triggering, int polarity);
36210 @@ -72,11 +71,6 @@
36211 return 0;
36212 }
36213 #endif
36214 -#else /* !CONFIG_ACPI: */
36215 -static inline int acpi_probe_gsi(void)
36216 -{
36217 - return 0;
36218 -}
36219 #endif /* CONFIG_ACPI */
36220
36221 #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
36222 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/mtrr.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/mtrr.h
36223 --- linux-2.6.29.owrt/arch/x86/include/asm/mtrr.h 2009-05-10 22:04:41.000000000 +0200
36224 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/mtrr.h 2009-05-10 23:48:28.000000000 +0200
36225 @@ -23,7 +23,6 @@
36226 #ifndef _ASM_X86_MTRR_H
36227 #define _ASM_X86_MTRR_H
36228
36229 -#include <linux/types.h>
36230 #include <linux/ioctl.h>
36231 #include <linux/errno.h>
36232
36233 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/page.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/page.h
36234 --- linux-2.6.29.owrt/arch/x86/include/asm/page.h 2009-05-10 22:04:41.000000000 +0200
36235 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/page.h 2009-05-10 23:48:28.000000000 +0200
36236 @@ -57,6 +57,7 @@
36237 typedef struct { pgprotval_t pgprot; } pgprot_t;
36238
36239 extern int page_is_ram(unsigned long pagenr);
36240 +extern int pagerange_is_ram(unsigned long start, unsigned long end);
36241 extern int devmem_is_allowed(unsigned long pagenr);
36242 extern void map_devmem(unsigned long pfn, unsigned long size,
36243 pgprot_t vma_prot);
36244 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/paravirt.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/paravirt.h
36245 --- linux-2.6.29.owrt/arch/x86/include/asm/paravirt.h 2009-05-10 22:04:41.000000000 +0200
36246 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/paravirt.h 2009-05-10 23:48:28.000000000 +0200
36247 @@ -1352,7 +1352,14 @@
36248 PVOP_VCALL0(pv_cpu_ops.lazy_mode.leave);
36249 }
36250
36251 -void arch_flush_lazy_cpu_mode(void);
36252 +static inline void arch_flush_lazy_cpu_mode(void)
36253 +{
36254 + if (unlikely(paravirt_get_lazy_mode() == PARAVIRT_LAZY_CPU)) {
36255 + arch_leave_lazy_cpu_mode();
36256 + arch_enter_lazy_cpu_mode();
36257 + }
36258 +}
36259 +
36260
36261 #define __HAVE_ARCH_ENTER_LAZY_MMU_MODE
36262 static inline void arch_enter_lazy_mmu_mode(void)
36263 @@ -1365,7 +1372,13 @@
36264 PVOP_VCALL0(pv_mmu_ops.lazy_mode.leave);
36265 }
36266
36267 -void arch_flush_lazy_mmu_mode(void);
36268 +static inline void arch_flush_lazy_mmu_mode(void)
36269 +{
36270 + if (unlikely(paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU)) {
36271 + arch_leave_lazy_mmu_mode();
36272 + arch_enter_lazy_mmu_mode();
36273 + }
36274 +}
36275
36276 static inline void __set_fixmap(unsigned /* enum fixed_addresses */ idx,
36277 unsigned long phys, pgprot_t flags)
36278 @@ -1389,7 +1402,6 @@
36279 {
36280 return PVOP_CALL1(int, pv_lock_ops.spin_is_contended, lock);
36281 }
36282 -#define __raw_spin_is_contended __raw_spin_is_contended
36283
36284 static __always_inline void __raw_spin_lock(struct raw_spinlock *lock)
36285 {
36286 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/pgtable.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/pgtable.h
36287 --- linux-2.6.29.owrt/arch/x86/include/asm/pgtable.h 2009-05-10 22:04:41.000000000 +0200
36288 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/pgtable.h 2009-05-10 23:48:28.000000000 +0200
36289 @@ -302,30 +302,16 @@
36290
36291 extern pteval_t __supported_pte_mask;
36292
36293 -/*
36294 - * Mask out unsupported bits in a present pgprot. Non-present pgprots
36295 - * can use those bits for other purposes, so leave them be.
36296 - */
36297 -static inline pgprotval_t massage_pgprot(pgprot_t pgprot)
36298 -{
36299 - pgprotval_t protval = pgprot_val(pgprot);
36300 -
36301 - if (protval & _PAGE_PRESENT)
36302 - protval &= __supported_pte_mask;
36303 -
36304 - return protval;
36305 -}
36306 -
36307 static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
36308 {
36309 - return __pte(((phys_addr_t)page_nr << PAGE_SHIFT) |
36310 - massage_pgprot(pgprot));
36311 + return __pte((((phys_addr_t)page_nr << PAGE_SHIFT) |
36312 + pgprot_val(pgprot)) & __supported_pte_mask);
36313 }
36314
36315 static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot)
36316 {
36317 - return __pmd(((phys_addr_t)page_nr << PAGE_SHIFT) |
36318 - massage_pgprot(pgprot));
36319 + return __pmd((((phys_addr_t)page_nr << PAGE_SHIFT) |
36320 + pgprot_val(pgprot)) & __supported_pte_mask);
36321 }
36322
36323 static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
36324 @@ -337,7 +323,7 @@
36325 * the newprot (if present):
36326 */
36327 val &= _PAGE_CHG_MASK;
36328 - val |= massage_pgprot(newprot) & ~_PAGE_CHG_MASK;
36329 + val |= pgprot_val(newprot) & (~_PAGE_CHG_MASK) & __supported_pte_mask;
36330
36331 return __pte(val);
36332 }
36333 @@ -353,7 +339,7 @@
36334
36335 #define pte_pgprot(x) __pgprot(pte_flags(x) & PTE_FLAGS_MASK)
36336
36337 -#define canon_pgprot(p) __pgprot(massage_pgprot(p))
36338 +#define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask)
36339
36340 static inline int is_new_memtype_allowed(unsigned long flags,
36341 unsigned long new_flags)
36342 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/processor.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/processor.h
36343 --- linux-2.6.29.owrt/arch/x86/include/asm/processor.h 2009-05-10 22:04:41.000000000 +0200
36344 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/processor.h 2009-05-10 23:48:28.000000000 +0200
36345 @@ -353,7 +353,7 @@
36346 u8 no_update;
36347 u8 rm;
36348 u8 alimit;
36349 - struct math_emu_info *info;
36350 + struct info *info;
36351 u32 entry_eip;
36352 };
36353
36354 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/ptrace-abi.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/ptrace-abi.h
36355 --- linux-2.6.29.owrt/arch/x86/include/asm/ptrace-abi.h 2009-05-10 22:04:41.000000000 +0200
36356 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/ptrace-abi.h 2009-05-10 23:48:28.000000000 +0200
36357 @@ -83,7 +83,7 @@
36358 #ifdef CONFIG_X86_PTRACE_BTS
36359
36360 #ifndef __ASSEMBLY__
36361 -#include <linux/types.h>
36362 +#include <asm/types.h>
36363
36364 /* configuration/status structure used in PTRACE_BTS_CONFIG and
36365 PTRACE_BTS_STATUS commands.
36366 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/seccomp_32.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/seccomp_32.h
36367 --- linux-2.6.29.owrt/arch/x86/include/asm/seccomp_32.h 2009-05-10 22:04:41.000000000 +0200
36368 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/seccomp_32.h 2009-05-10 23:48:28.000000000 +0200
36369 @@ -1,6 +1,12 @@
36370 #ifndef _ASM_X86_SECCOMP_32_H
36371 #define _ASM_X86_SECCOMP_32_H
36372
36373 +#include <linux/thread_info.h>
36374 +
36375 +#ifdef TIF_32BIT
36376 +#error "unexpected TIF_32BIT on i386"
36377 +#endif
36378 +
36379 #include <linux/unistd.h>
36380
36381 #define __NR_seccomp_read __NR_read
36382 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/seccomp_64.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/seccomp_64.h
36383 --- linux-2.6.29.owrt/arch/x86/include/asm/seccomp_64.h 2009-05-10 22:04:41.000000000 +0200
36384 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/seccomp_64.h 2009-05-10 23:48:28.000000000 +0200
36385 @@ -1,6 +1,14 @@
36386 #ifndef _ASM_X86_SECCOMP_64_H
36387 #define _ASM_X86_SECCOMP_64_H
36388
36389 +#include <linux/thread_info.h>
36390 +
36391 +#ifdef TIF_32BIT
36392 +#error "unexpected TIF_32BIT on x86_64"
36393 +#else
36394 +#define TIF_32BIT TIF_IA32
36395 +#endif
36396 +
36397 #include <linux/unistd.h>
36398 #include <asm/ia32_unistd.h>
36399
36400 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/sigcontext32.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/sigcontext32.h
36401 --- linux-2.6.29.owrt/arch/x86/include/asm/sigcontext32.h 2009-05-10 22:04:41.000000000 +0200
36402 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/sigcontext32.h 2009-05-10 23:48:28.000000000 +0200
36403 @@ -1,8 +1,6 @@
36404 #ifndef _ASM_X86_SIGCONTEXT32_H
36405 #define _ASM_X86_SIGCONTEXT32_H
36406
36407 -#include <linux/types.h>
36408 -
36409 /* signal context for 32bit programs. */
36410
36411 #define X86_FXSR_MAGIC 0x0000
36412 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/sigcontext.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/sigcontext.h
36413 --- linux-2.6.29.owrt/arch/x86/include/asm/sigcontext.h 2009-05-10 22:04:41.000000000 +0200
36414 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/sigcontext.h 2009-05-10 23:48:28.000000000 +0200
36415 @@ -2,7 +2,7 @@
36416 #define _ASM_X86_SIGCONTEXT_H
36417
36418 #include <linux/compiler.h>
36419 -#include <linux/types.h>
36420 +#include <asm/types.h>
36421
36422 #define FP_XSTATE_MAGIC1 0x46505853U
36423 #define FP_XSTATE_MAGIC2 0x46505845U
36424 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/spinlock.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/spinlock.h
36425 --- linux-2.6.29.owrt/arch/x86/include/asm/spinlock.h 2009-05-10 22:04:41.000000000 +0200
36426 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/spinlock.h 2009-05-10 23:48:28.000000000 +0200
36427 @@ -245,7 +245,6 @@
36428 {
36429 return __ticket_spin_is_contended(lock);
36430 }
36431 -#define __raw_spin_is_contended __raw_spin_is_contended
36432
36433 static __always_inline void __raw_spin_lock(raw_spinlock_t *lock)
36434 {
36435 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/swab.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/swab.h
36436 --- linux-2.6.29.owrt/arch/x86/include/asm/swab.h 2009-05-10 22:04:41.000000000 +0200
36437 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/swab.h 2009-05-10 23:48:28.000000000 +0200
36438 @@ -1,7 +1,7 @@
36439 #ifndef _ASM_X86_SWAB_H
36440 #define _ASM_X86_SWAB_H
36441
36442 -#include <linux/types.h>
36443 +#include <asm/types.h>
36444 #include <linux/compiler.h>
36445
36446 static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
36447 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/traps.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/traps.h
36448 --- linux-2.6.29.owrt/arch/x86/include/asm/traps.h 2009-05-10 22:04:41.000000000 +0200
36449 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/traps.h 2009-05-10 23:48:28.000000000 +0200
36450 @@ -41,7 +41,7 @@
36451 dotraplinkage void do_overflow(struct pt_regs *, long);
36452 dotraplinkage void do_bounds(struct pt_regs *, long);
36453 dotraplinkage void do_invalid_op(struct pt_regs *, long);
36454 -dotraplinkage void do_device_not_available(struct pt_regs);
36455 +dotraplinkage void do_device_not_available(struct pt_regs *, long);
36456 dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long);
36457 dotraplinkage void do_invalid_TSS(struct pt_regs *, long);
36458 dotraplinkage void do_segment_not_present(struct pt_regs *, long);
36459 @@ -77,7 +77,7 @@
36460 extern int kstack_depth_to_print;
36461
36462 void math_error(void __user *);
36463 -void math_emulate(struct math_emu_info *);
36464 +asmlinkage void math_emulate(long);
36465 #ifdef CONFIG_X86_32
36466 unsigned long patch_espfix_desc(unsigned long, unsigned long);
36467 #else
36468 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/include/asm/xen/page.h linux-2.6.29-rc3.owrt/arch/x86/include/asm/xen/page.h
36469 --- linux-2.6.29.owrt/arch/x86/include/asm/xen/page.h 2009-05-10 22:04:41.000000000 +0200
36470 +++ linux-2.6.29-rc3.owrt/arch/x86/include/asm/xen/page.h 2009-05-10 23:48:28.000000000 +0200
36471 @@ -137,7 +137,7 @@
36472 pte_t pte;
36473
36474 pte.pte = ((phys_addr_t)page_nr << PAGE_SHIFT) |
36475 - massage_pgprot(pgprot);
36476 + (pgprot_val(pgprot) & __supported_pte_mask);
36477
36478 return pte;
36479 }
36480 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/Kconfig linux-2.6.29-rc3.owrt/arch/x86/Kconfig
36481 --- linux-2.6.29.owrt/arch/x86/Kconfig 2009-05-10 22:04:41.000000000 +0200
36482 +++ linux-2.6.29-rc3.owrt/arch/x86/Kconfig 2009-05-10 23:48:28.000000000 +0200
36483 @@ -1802,17 +1802,6 @@
36484 and include PCI device scope covered by these DMA
36485 remapping devices.
36486
36487 -config DMAR_DEFAULT_ON
36488 - def_bool y
36489 - prompt "Enable DMA Remapping Devices by default"
36490 - depends on DMAR
36491 - help
36492 - Selecting this option will enable a DMAR device at boot time if
36493 - one is found. If this option is not selected, DMAR support can
36494 - be enabled by passing intel_iommu=on to the kernel. It is
36495 - recommended you say N here while the DMAR code remains
36496 - experimental.
36497 -
36498 config DMAR_GFX_WA
36499 def_bool y
36500 prompt "Support for Graphics workaround"
36501 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/Kconfig.cpu linux-2.6.29-rc3.owrt/arch/x86/Kconfig.cpu
36502 --- linux-2.6.29.owrt/arch/x86/Kconfig.cpu 2009-05-10 22:04:41.000000000 +0200
36503 +++ linux-2.6.29-rc3.owrt/arch/x86/Kconfig.cpu 2009-05-10 23:48:28.000000000 +0200
36504 @@ -167,9 +167,9 @@
36505 config MK8
36506 bool "Opteron/Athlon64/Hammer/K8"
36507 help
36508 - Select this for an AMD Opteron or Athlon64 Hammer-family processor.
36509 - Enables use of some extended instructions, and passes appropriate
36510 - optimization flags to GCC.
36511 + Select this for an AMD Opteron or Athlon64 Hammer-family processor. Enables
36512 + use of some extended instructions, and passes appropriate optimization
36513 + flags to GCC.
36514
36515 config MCRUSOE
36516 bool "Crusoe"
36517 @@ -256,11 +256,9 @@
36518 config MCORE2
36519 bool "Core 2/newer Xeon"
36520 help
36521 -
36522 - Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
36523 - 53xx) CPUs. You can distinguish newer from older Xeons by the CPU
36524 - family in /proc/cpuinfo. Newer ones have 6 and older ones 15
36525 - (not a typo)
36526 + Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and 53xx)
36527 + CPUs. You can distinguish newer from older Xeons by the CPU family
36528 + in /proc/cpuinfo. Newer ones have 6 and older ones 15 (not a typo)
36529
36530 config GENERIC_CPU
36531 bool "Generic-x86-64"
36532 @@ -322,14 +320,14 @@
36533 bool "PentiumPro memory ordering errata workaround"
36534 depends on M686 || M586MMX || M586TSC || M586 || M486 || M386 || MGEODEGX1
36535 help
36536 - Old PentiumPro multiprocessor systems had errata that could cause
36537 - memory operations to violate the x86 ordering standard in rare cases.
36538 - Enabling this option will attempt to work around some (but not all)
36539 - occurances of this problem, at the cost of much heavier spinlock and
36540 - memory barrier operations.
36541 + Old PentiumPro multiprocessor systems had errata that could cause memory
36542 + operations to violate the x86 ordering standard in rare cases. Enabling this
36543 + option will attempt to work around some (but not all) occurances of
36544 + this problem, at the cost of much heavier spinlock and memory barrier
36545 + operations.
36546
36547 - If unsure, say n here. Even distro kernels should think twice before
36548 - enabling this: there are few systems, and an unlikely bug.
36549 + If unsure, say n here. Even distro kernels should think twice before enabling
36550 + this: there are few systems, and an unlikely bug.
36551
36552 config X86_F00F_BUG
36553 def_bool y
36554 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/Kconfig.debug linux-2.6.29-rc3.owrt/arch/x86/Kconfig.debug
36555 --- linux-2.6.29.owrt/arch/x86/Kconfig.debug 2009-05-10 22:04:41.000000000 +0200
36556 +++ linux-2.6.29-rc3.owrt/arch/x86/Kconfig.debug 2009-05-10 23:48:28.000000000 +0200
36557 @@ -174,8 +174,28 @@
36558 Add a simple leak tracer to the IOMMU code. This is useful when you
36559 are debugging a buggy device driver that leaks IOMMU mappings.
36560
36561 -config HAVE_MMIOTRACE_SUPPORT
36562 - def_bool y
36563 +config MMIOTRACE
36564 + bool "Memory mapped IO tracing"
36565 + depends on DEBUG_KERNEL && PCI
36566 + select TRACING
36567 + help
36568 + Mmiotrace traces Memory Mapped I/O access and is meant for
36569 + debugging and reverse engineering. It is called from the ioremap
36570 + implementation and works via page faults. Tracing is disabled by
36571 + default and can be enabled at run-time.
36572 +
36573 + See Documentation/tracers/mmiotrace.txt.
36574 + If you are not helping to develop drivers, say N.
36575 +
36576 +config MMIOTRACE_TEST
36577 + tristate "Test module for mmiotrace"
36578 + depends on MMIOTRACE && m
36579 + help
36580 + This is a dumb module for testing mmiotrace. It is very dangerous
36581 + as it will write garbage to IO memory starting at a given address.
36582 + However, it should be safe to use on e.g. unused portion of VRAM.
36583 +
36584 + Say N, unless you absolutely know what you are doing.
36585
36586 #
36587 # IO delay types:
36588 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/acpi/boot.c linux-2.6.29-rc3.owrt/arch/x86/kernel/acpi/boot.c
36589 --- linux-2.6.29.owrt/arch/x86/kernel/acpi/boot.c 2009-05-10 22:04:41.000000000 +0200
36590 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/acpi/boot.c 2009-05-10 23:48:28.000000000 +0200
36591 @@ -973,29 +973,6 @@
36592 nr_ioapics++;
36593 }
36594
36595 -int __init acpi_probe_gsi(void)
36596 -{
36597 - int idx;
36598 - int gsi;
36599 - int max_gsi = 0;
36600 -
36601 - if (acpi_disabled)
36602 - return 0;
36603 -
36604 - if (!acpi_ioapic)
36605 - return 0;
36606 -
36607 - max_gsi = 0;
36608 - for (idx = 0; idx < nr_ioapics; idx++) {
36609 - gsi = mp_ioapic_routing[idx].gsi_end;
36610 -
36611 - if (gsi > max_gsi)
36612 - max_gsi = gsi;
36613 - }
36614 -
36615 - return max_gsi + 1;
36616 -}
36617 -
36618 static void assign_to_mp_irq(struct mp_config_intsrc *m,
36619 struct mp_config_intsrc *mp_irq)
36620 {
36621 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/acpi/sleep.c linux-2.6.29-rc3.owrt/arch/x86/kernel/acpi/sleep.c
36622 --- linux-2.6.29.owrt/arch/x86/kernel/acpi/sleep.c 2009-05-10 22:04:41.000000000 +0200
36623 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/acpi/sleep.c 2009-05-10 23:48:28.000000000 +0200
36624 @@ -156,11 +156,11 @@
36625 #ifdef CONFIG_HIBERNATION
36626 if (strncmp(str, "s4_nohwsig", 10) == 0)
36627 acpi_no_s4_hw_signature();
36628 - if (strncmp(str, "s4_nonvs", 8) == 0)
36629 - acpi_s4_no_nvs();
36630 #endif
36631 if (strncmp(str, "old_ordering", 12) == 0)
36632 acpi_old_suspend_ordering();
36633 + if (strncmp(str, "s4_nonvs", 8) == 0)
36634 + acpi_s4_no_nvs();
36635 str = strchr(str, ',');
36636 if (str != NULL)
36637 str += strspn(str, ", \t");
36638 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/acpi/wakeup_64.S linux-2.6.29-rc3.owrt/arch/x86/kernel/acpi/wakeup_64.S
36639 --- linux-2.6.29.owrt/arch/x86/kernel/acpi/wakeup_64.S 2009-05-10 22:04:41.000000000 +0200
36640 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/acpi/wakeup_64.S 2009-05-10 23:48:28.000000000 +0200
36641 @@ -13,6 +13,7 @@
36642 * Hooray, we are in Long 64-bit mode (but still running in low memory)
36643 */
36644 ENTRY(wakeup_long64)
36645 +wakeup_long64:
36646 movq saved_magic, %rax
36647 movq $0x123456789abcdef0, %rdx
36648 cmpq %rdx, %rax
36649 @@ -33,12 +34,16 @@
36650
36651 movq saved_rip, %rax
36652 jmp *%rax
36653 -ENDPROC(wakeup_long64)
36654
36655 bogus_64_magic:
36656 jmp bogus_64_magic
36657
36658 -ENTRY(do_suspend_lowlevel)
36659 + .align 2
36660 + .p2align 4,,15
36661 +.globl do_suspend_lowlevel
36662 + .type do_suspend_lowlevel,@function
36663 +do_suspend_lowlevel:
36664 +.LFB5:
36665 subq $8, %rsp
36666 xorl %eax, %eax
36667 call save_processor_state
36668 @@ -62,7 +67,7 @@
36669 pushfq
36670 popq pt_regs_flags(%rax)
36671
36672 - movq $resume_point, saved_rip(%rip)
36673 + movq $.L97, saved_rip(%rip)
36674
36675 movq %rsp, saved_rsp
36676 movq %rbp, saved_rbp
36677 @@ -73,12 +78,14 @@
36678 addq $8, %rsp
36679 movl $3, %edi
36680 xorl %eax, %eax
36681 - call acpi_enter_sleep_state
36682 - /* in case something went wrong, restore the machine status and go on */
36683 - jmp resume_point
36684 -
36685 + jmp acpi_enter_sleep_state
36686 +.L97:
36687 + .p2align 4,,7
36688 +.L99:
36689 .align 4
36690 -resume_point:
36691 + movl $24, %eax
36692 + movw %ax, %ds
36693 +
36694 /* We don't restore %rax, it must be 0 anyway */
36695 movq $saved_context, %rax
36696 movq saved_context_cr4(%rax), %rbx
36697 @@ -110,9 +117,12 @@
36698 xorl %eax, %eax
36699 addq $8, %rsp
36700 jmp restore_processor_state
36701 -ENDPROC(do_suspend_lowlevel)
36702 -
36703 +.LFE5:
36704 +.Lfe5:
36705 + .size do_suspend_lowlevel, .Lfe5-do_suspend_lowlevel
36706 +
36707 .data
36708 +ALIGN
36709 ENTRY(saved_rbp) .quad 0
36710 ENTRY(saved_rsi) .quad 0
36711 ENTRY(saved_rdi) .quad 0
36712 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/apic.c linux-2.6.29-rc3.owrt/arch/x86/kernel/apic.c
36713 --- linux-2.6.29.owrt/arch/x86/kernel/apic.c 2009-05-10 22:04:41.000000000 +0200
36714 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/apic.c 2009-05-10 23:48:28.000000000 +0200
36715 @@ -862,7 +862,7 @@
36716 }
36717
36718 /* lets not touch this if we didn't frob it */
36719 -#if defined(CONFIG_X86_MCE_P4THERMAL) || defined(CONFIG_X86_MCE_INTEL)
36720 +#if defined(CONFIG_X86_MCE_P4THERMAL) || defined(X86_MCE_INTEL)
36721 if (maxlvt >= 5) {
36722 v = apic_read(APIC_LVTTHMR);
36723 apic_write(APIC_LVTTHMR, v | APIC_LVT_MASKED);
36724 @@ -1436,7 +1436,7 @@
36725 switch (boot_cpu_data.x86_vendor) {
36726 case X86_VENDOR_AMD:
36727 if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) ||
36728 - (boot_cpu_data.x86 >= 15))
36729 + (boot_cpu_data.x86 == 15))
36730 break;
36731 goto no_apic;
36732 case X86_VENDOR_INTEL:
36733 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/apm_32.c linux-2.6.29-rc3.owrt/arch/x86/kernel/apm_32.c
36734 --- linux-2.6.29.owrt/arch/x86/kernel/apm_32.c 2009-05-10 22:04:41.000000000 +0200
36735 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/apm_32.c 2009-05-10 23:48:28.000000000 +0200
36736 @@ -1192,7 +1192,6 @@
36737 device_suspend(PMSG_SUSPEND);
36738 local_irq_disable();
36739 device_power_down(PMSG_SUSPEND);
36740 - sysdev_suspend(PMSG_SUSPEND);
36741
36742 local_irq_enable();
36743
36744 @@ -1209,7 +1208,6 @@
36745 if (err != APM_SUCCESS)
36746 apm_error("suspend", err);
36747 err = (err == APM_SUCCESS) ? 0 : -EIO;
36748 - sysdev_resume();
36749 device_power_up(PMSG_RESUME);
36750 local_irq_enable();
36751 device_resume(PMSG_RESUME);
36752 @@ -1230,7 +1228,6 @@
36753
36754 local_irq_disable();
36755 device_power_down(PMSG_SUSPEND);
36756 - sysdev_suspend(PMSG_SUSPEND);
36757 local_irq_enable();
36758
36759 err = set_system_power_state(APM_STATE_STANDBY);
36760 @@ -1238,7 +1235,6 @@
36761 apm_error("standby", err);
36762
36763 local_irq_disable();
36764 - sysdev_resume();
36765 device_power_up(PMSG_RESUME);
36766 local_irq_enable();
36767 }
36768 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/cpufreq/Kconfig linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/cpufreq/Kconfig
36769 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/cpufreq/Kconfig 2009-05-10 22:04:41.000000000 +0200
36770 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/cpufreq/Kconfig 2009-05-10 23:48:28.000000000 +0200
36771 @@ -245,6 +245,17 @@
36772
36773 comment "shared options"
36774
36775 +config X86_ACPI_CPUFREQ_PROC_INTF
36776 + bool "/proc/acpi/processor/../performance interface (deprecated)"
36777 + depends on PROC_FS
36778 + depends on X86_ACPI_CPUFREQ || X86_POWERNOW_K7_ACPI || X86_POWERNOW_K8_ACPI
36779 + help
36780 + This enables the deprecated /proc/acpi/processor/../performance
36781 + interface. While it is helpful for debugging, the generic,
36782 + cross-architecture cpufreq interfaces should be used.
36783 +
36784 + If in doubt, say N.
36785 +
36786 config X86_SPEEDSTEP_LIB
36787 tristate
36788 default (X86_SPEEDSTEP_ICH || X86_SPEEDSTEP_SMI || X86_P4_CLOCKMOD)
36789 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
36790 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c 2009-05-10 22:04:41.000000000 +0200
36791 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/cpufreq/p4-clockmod.c 2009-05-10 23:48:28.000000000 +0200
36792 @@ -277,6 +277,7 @@
36793 .name = "p4-clockmod",
36794 .owner = THIS_MODULE,
36795 .attr = p4clockmod_attr,
36796 + .hide_interface = 1,
36797 };
36798
36799
36800 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/cpufreq/powernow-k8.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
36801 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/cpufreq/powernow-k8.c 2009-05-10 22:04:41.000000000 +0200
36802 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/cpufreq/powernow-k8.c 2009-05-10 23:48:28.000000000 +0200
36803 @@ -939,25 +939,10 @@
36804 free_cpumask_var(data->acpi_data.shared_cpu_map);
36805 }
36806
36807 -static int get_transition_latency(struct powernow_k8_data *data)
36808 -{
36809 - int max_latency = 0;
36810 - int i;
36811 - for (i = 0; i < data->acpi_data.state_count; i++) {
36812 - int cur_latency = data->acpi_data.states[i].transition_latency
36813 - + data->acpi_data.states[i].bus_master_latency;
36814 - if (cur_latency > max_latency)
36815 - max_latency = cur_latency;
36816 - }
36817 - /* value in usecs, needs to be in nanoseconds */
36818 - return 1000 * max_latency;
36819 -}
36820 -
36821 #else
36822 static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) { return -ENODEV; }
36823 static void powernow_k8_cpu_exit_acpi(struct powernow_k8_data *data) { return; }
36824 static void powernow_k8_acpi_pst_values(struct powernow_k8_data *data, unsigned int index) { return; }
36825 -static int get_transition_latency(struct powernow_k8_data *data) { return 0; }
36826 #endif /* CONFIG_X86_POWERNOW_K8_ACPI */
36827
36828 /* Take a frequency, and issue the fid/vid transition command */
36829 @@ -1157,7 +1142,8 @@
36830 data->cpu = pol->cpu;
36831 data->currpstate = HW_PSTATE_INVALID;
36832
36833 - if (powernow_k8_cpu_init_acpi(data)) {
36834 + rc = powernow_k8_cpu_init_acpi(data);
36835 + if (rc) {
36836 /*
36837 * Use the PSB BIOS structure. This is only availabe on
36838 * an UP version, and is deprecated by AMD.
36839 @@ -1175,28 +1161,19 @@
36840 "ACPI maintainers and complain to your BIOS "
36841 "vendor.\n");
36842 #endif
36843 - kfree(data);
36844 - return -ENODEV;
36845 + goto err_out;
36846 }
36847 if (pol->cpu != 0) {
36848 printk(KERN_ERR FW_BUG PFX "No ACPI _PSS objects for "
36849 "CPU other than CPU0. Complain to your BIOS "
36850 "vendor.\n");
36851 - kfree(data);
36852 - return -ENODEV;
36853 + goto err_out;
36854 }
36855 rc = find_psb_table(data);
36856 if (rc) {
36857 - kfree(data);
36858 - return -ENODEV;
36859 + goto err_out;
36860 }
36861 - /* Take a crude guess here.
36862 - * That guess was in microseconds, so multiply with 1000 */
36863 - pol->cpuinfo.transition_latency = (
36864 - ((data->rvo + 8) * data->vstable * VST_UNITS_20US) +
36865 - ((1 << data->irt) * 30)) * 1000;
36866 - } else /* ACPI _PSS objects available */
36867 - pol->cpuinfo.transition_latency = get_transition_latency(data);
36868 + }
36869
36870 /* only run on specific CPU from here on */
36871 oldmask = current->cpus_allowed;
36872 @@ -1227,6 +1204,11 @@
36873 cpumask_copy(pol->cpus, &per_cpu(cpu_core_map, pol->cpu));
36874 data->available_cores = pol->cpus;
36875
36876 + /* Take a crude guess here.
36877 + * That guess was in microseconds, so multiply with 1000 */
36878 + pol->cpuinfo.transition_latency = (((data->rvo + 8) * data->vstable * VST_UNITS_20US)
36879 + + (3 * (1 << data->irt) * 10)) * 1000;
36880 +
36881 if (cpu_family == CPU_HW_PSTATE)
36882 pol->cur = find_khz_freq_from_pstate(data->powernow_table, data->currpstate);
36883 else
36884 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/intel.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/intel.c
36885 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/intel.c 2009-05-10 22:04:41.000000000 +0200
36886 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/intel.c 2009-05-10 23:48:28.000000000 +0200
36887 @@ -30,7 +30,7 @@
36888 static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
36889 {
36890 /* Unmask CPUID levels if masked: */
36891 - if (c->x86 > 6 || (c->x86 == 6 && c->x86_model >= 0xd)) {
36892 + if (c->x86 == 6 && c->x86_model >= 15) {
36893 u64 misc_enable;
36894
36895 rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
36896 @@ -291,9 +291,6 @@
36897 ds_init_intel(c);
36898 }
36899
36900 - if (c->x86 == 6 && c->x86_model == 29 && cpu_has_clflush)
36901 - set_cpu_cap(c, X86_FEATURE_CLFLUSH_MONITOR);
36902 -
36903 #ifdef CONFIG_X86_64
36904 if (c->x86 == 15)
36905 c->x86_cache_alignment = c->x86_clflush_size * 2;
36906 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/intel_cacheinfo.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/intel_cacheinfo.c
36907 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/intel_cacheinfo.c 2009-05-10 22:04:41.000000000 +0200
36908 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/intel_cacheinfo.c 2009-05-10 23:48:28.000000000 +0200
36909 @@ -36,11 +36,8 @@
36910 {
36911 { 0x06, LVL_1_INST, 8 }, /* 4-way set assoc, 32 byte line size */
36912 { 0x08, LVL_1_INST, 16 }, /* 4-way set assoc, 32 byte line size */
36913 - { 0x09, LVL_1_INST, 32 }, /* 4-way set assoc, 64 byte line size */
36914 { 0x0a, LVL_1_DATA, 8 }, /* 2 way set assoc, 32 byte line size */
36915 { 0x0c, LVL_1_DATA, 16 }, /* 4-way set assoc, 32 byte line size */
36916 - { 0x0d, LVL_1_DATA, 16 }, /* 4-way set assoc, 64 byte line size */
36917 - { 0x21, LVL_2, 256 }, /* 8-way set assoc, 64 byte line size */
36918 { 0x22, LVL_3, 512 }, /* 4-way set assoc, sectored cache, 64 byte line size */
36919 { 0x23, LVL_3, 1024 }, /* 8-way set assoc, sectored cache, 64 byte line size */
36920 { 0x25, LVL_3, 2048 }, /* 8-way set assoc, sectored cache, 64 byte line size */
36921 @@ -88,18 +85,6 @@
36922 { 0x85, LVL_2, 2048 }, /* 8-way set assoc, 32 byte line size */
36923 { 0x86, LVL_2, 512 }, /* 4-way set assoc, 64 byte line size */
36924 { 0x87, LVL_2, 1024 }, /* 8-way set assoc, 64 byte line size */
36925 - { 0xd0, LVL_3, 512 }, /* 4-way set assoc, 64 byte line size */
36926 - { 0xd1, LVL_3, 1024 }, /* 4-way set assoc, 64 byte line size */
36927 - { 0xd2, LVL_3, 2048 }, /* 4-way set assoc, 64 byte line size */
36928 - { 0xd6, LVL_3, 1024 }, /* 8-way set assoc, 64 byte line size */
36929 - { 0xd7, LVL_3, 2038 }, /* 8-way set assoc, 64 byte line size */
36930 - { 0xd8, LVL_3, 4096 }, /* 12-way set assoc, 64 byte line size */
36931 - { 0xdc, LVL_3, 2048 }, /* 12-way set assoc, 64 byte line size */
36932 - { 0xdd, LVL_3, 4096 }, /* 12-way set assoc, 64 byte line size */
36933 - { 0xde, LVL_3, 8192 }, /* 12-way set assoc, 64 byte line size */
36934 - { 0xe2, LVL_3, 2048 }, /* 16-way set assoc, 64 byte line size */
36935 - { 0xe3, LVL_3, 4096 }, /* 16-way set assoc, 64 byte line size */
36936 - { 0xe4, LVL_3, 8192 }, /* 16-way set assoc, 64 byte line size */
36937 { 0x00, 0, 0}
36938 };
36939
36940 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/mcheck/mce_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mcheck/mce_64.c
36941 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-05-10 22:04:41.000000000 +0200
36942 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mcheck/mce_64.c 2009-05-10 23:48:28.000000000 +0200
36943 @@ -295,11 +295,11 @@
36944 * If we know that the error was in user space, send a
36945 * SIGBUS. Otherwise, panic if tolerance is low.
36946 *
36947 - * force_sig() takes an awful lot of locks and has a slight
36948 + * do_exit() takes an awful lot of locks and has a slight
36949 * risk of deadlocking.
36950 */
36951 if (user_space) {
36952 - force_sig(SIGBUS, current);
36953 + do_exit(SIGBUS);
36954 } else if (panic_on_oops || tolerant < 2) {
36955 mce_panic("Uncorrected machine check",
36956 &panicm, mcestart);
36957 @@ -490,7 +490,7 @@
36958
36959 }
36960
36961 -static void mce_cpu_features(struct cpuinfo_x86 *c)
36962 +static void __cpuinit mce_cpu_features(struct cpuinfo_x86 *c)
36963 {
36964 switch (c->x86_vendor) {
36965 case X86_VENDOR_INTEL:
36966 @@ -734,7 +734,6 @@
36967 static int mce_resume(struct sys_device *dev)
36968 {
36969 mce_init(NULL);
36970 - mce_cpu_features(&current_cpu_data);
36971 return 0;
36972 }
36973
36974 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/mcheck/mce_amd_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mcheck/mce_amd_64.c
36975 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/mcheck/mce_amd_64.c 2009-05-10 22:04:41.000000000 +0200
36976 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mcheck/mce_amd_64.c 2009-05-10 23:48:28.000000000 +0200
36977 @@ -121,7 +121,7 @@
36978 }
36979
36980 /* cpu init entry point, called from mce.c with preempt off */
36981 -void mce_amd_feature_init(struct cpuinfo_x86 *c)
36982 +void __cpuinit mce_amd_feature_init(struct cpuinfo_x86 *c)
36983 {
36984 unsigned int bank, block;
36985 unsigned int cpu = smp_processor_id();
36986 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/mcheck/mce_intel_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mcheck/mce_intel_64.c
36987 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/mcheck/mce_intel_64.c 2009-05-10 22:04:41.000000000 +0200
36988 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mcheck/mce_intel_64.c 2009-05-10 23:48:28.000000000 +0200
36989 @@ -30,7 +30,7 @@
36990 irq_exit();
36991 }
36992
36993 -static void intel_init_thermal(struct cpuinfo_x86 *c)
36994 +static void __cpuinit intel_init_thermal(struct cpuinfo_x86 *c)
36995 {
36996 u32 l, h;
36997 int tm2 = 0;
36998 @@ -84,7 +84,7 @@
36999 return;
37000 }
37001
37002 -void mce_intel_feature_init(struct cpuinfo_x86 *c)
37003 +void __cpuinit mce_intel_feature_init(struct cpuinfo_x86 *c)
37004 {
37005 intel_init_thermal(c);
37006 }
37007 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/cpu/mtrr/main.c linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mtrr/main.c
37008 --- linux-2.6.29.owrt/arch/x86/kernel/cpu/mtrr/main.c 2009-05-10 22:04:41.000000000 +0200
37009 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/cpu/mtrr/main.c 2009-05-10 23:48:28.000000000 +0200
37010 @@ -1594,7 +1594,8 @@
37011
37012 /* kvm/qemu doesn't have mtrr set right, don't trim them all */
37013 if (!highest_pfn) {
37014 - printk(KERN_INFO "CPU MTRRs all blank - virtualized system.\n");
37015 + WARN(!kvm_para_available(), KERN_WARNING
37016 + "WARNING: strange, CPU MTRRs all blank?\n");
37017 return 0;
37018 }
37019
37020 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/ds.c linux-2.6.29-rc3.owrt/arch/x86/kernel/ds.c
37021 --- linux-2.6.29.owrt/arch/x86/kernel/ds.c 2009-05-10 22:04:41.000000000 +0200
37022 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/ds.c 2009-05-10 23:48:28.000000000 +0200
37023 @@ -15,8 +15,8 @@
37024 * - buffer allocation (memory accounting)
37025 *
37026 *
37027 - * Copyright (C) 2007-2009 Intel Corporation.
37028 - * Markus Metzger <markus.t.metzger@intel.com>, 2007-2009
37029 + * Copyright (C) 2007-2008 Intel Corporation.
37030 + * Markus Metzger <markus.t.metzger@intel.com>, 2007-2008
37031 */
37032
37033
37034 @@ -729,7 +729,7 @@
37035
37036 spin_unlock_irqrestore(&ds_lock, irq);
37037
37038 - ds_write_config(tracer->ds.context, &tracer->trace.ds, ds_pebs);
37039 + ds_write_config(tracer->ds.context, &tracer->trace.ds, ds_bts);
37040 ds_resume_pebs(tracer);
37041
37042 return tracer;
37043 @@ -890,7 +890,7 @@
37044 }
37045
37046 static const struct ds_configuration ds_cfg_netburst = {
37047 - .name = "Netburst",
37048 + .name = "netburst",
37049 .ctl[dsf_bts] = (1 << 2) | (1 << 3),
37050 .ctl[dsf_bts_kernel] = (1 << 5),
37051 .ctl[dsf_bts_user] = (1 << 6),
37052 @@ -904,7 +904,7 @@
37053 #endif
37054 };
37055 static const struct ds_configuration ds_cfg_pentium_m = {
37056 - .name = "Pentium M",
37057 + .name = "pentium m",
37058 .ctl[dsf_bts] = (1 << 6) | (1 << 7),
37059
37060 .sizeof_field = sizeof(long),
37061 @@ -915,8 +915,8 @@
37062 .sizeof_rec[ds_pebs] = sizeof(long) * 18,
37063 #endif
37064 };
37065 -static const struct ds_configuration ds_cfg_core2_atom = {
37066 - .name = "Core 2/Atom",
37067 +static const struct ds_configuration ds_cfg_core2 = {
37068 + .name = "core 2",
37069 .ctl[dsf_bts] = (1 << 6) | (1 << 7),
37070 .ctl[dsf_bts_kernel] = (1 << 9),
37071 .ctl[dsf_bts_user] = (1 << 10),
37072 @@ -949,22 +949,19 @@
37073 switch (c->x86) {
37074 case 0x6:
37075 switch (c->x86_model) {
37076 - case 0x9:
37077 - case 0xd: /* Pentium M */
37078 - ds_configure(&ds_cfg_pentium_m);
37079 + case 0 ... 0xC:
37080 + /* sorry, don't know about them */
37081 break;
37082 - case 0xf:
37083 - case 0x17: /* Core2 */
37084 - case 0x1c: /* Atom */
37085 - ds_configure(&ds_cfg_core2_atom);
37086 + case 0xD:
37087 + case 0xE: /* Pentium M */
37088 + ds_configure(&ds_cfg_pentium_m);
37089 break;
37090 - case 0x1a: /* i7 */
37091 - default:
37092 - /* sorry, don't know about them */
37093 + default: /* Core2, Atom, ... */
37094 + ds_configure(&ds_cfg_core2);
37095 break;
37096 }
37097 break;
37098 - case 0xf:
37099 + case 0xF:
37100 switch (c->x86_model) {
37101 case 0x0:
37102 case 0x1:
37103 @@ -1029,4 +1026,5 @@
37104
37105 void ds_exit_thread(struct task_struct *tsk)
37106 {
37107 + WARN_ON(tsk->thread.ds_ctx);
37108 }
37109 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/efi_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/efi_64.c
37110 --- linux-2.6.29.owrt/arch/x86/kernel/efi_64.c 2009-05-10 22:04:41.000000000 +0200
37111 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/efi_64.c 2009-05-10 23:48:28.000000000 +0200
37112 @@ -99,11 +99,24 @@
37113
37114 void __iomem *__init efi_ioremap(unsigned long phys_addr, unsigned long size)
37115 {
37116 - unsigned long last_map_pfn;
37117 + static unsigned pages_mapped __initdata;
37118 + unsigned i, pages;
37119 + unsigned long offset;
37120
37121 - last_map_pfn = init_memory_mapping(phys_addr, phys_addr + size);
37122 - if ((last_map_pfn << PAGE_SHIFT) < phys_addr + size)
37123 + pages = PFN_UP(phys_addr + size) - PFN_DOWN(phys_addr);
37124 + offset = phys_addr & ~PAGE_MASK;
37125 + phys_addr &= PAGE_MASK;
37126 +
37127 + if (pages_mapped + pages > MAX_EFI_IO_PAGES)
37128 return NULL;
37129
37130 - return (void __iomem *)__va(phys_addr);
37131 + for (i = 0; i < pages; i++) {
37132 + __set_fixmap(FIX_EFI_IO_MAP_FIRST_PAGE - pages_mapped,
37133 + phys_addr, PAGE_KERNEL);
37134 + phys_addr += PAGE_SIZE;
37135 + pages_mapped++;
37136 + }
37137 +
37138 + return (void __iomem *)__fix_to_virt(FIX_EFI_IO_MAP_FIRST_PAGE - \
37139 + (pages_mapped - pages)) + offset;
37140 }
37141 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/efi.c linux-2.6.29-rc3.owrt/arch/x86/kernel/efi.c
37142 --- linux-2.6.29.owrt/arch/x86/kernel/efi.c 2009-05-10 22:04:41.000000000 +0200
37143 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/efi.c 2009-05-10 23:48:28.000000000 +0200
37144 @@ -467,7 +467,7 @@
37145 efi_memory_desc_t *md;
37146 efi_status_t status;
37147 unsigned long size;
37148 - u64 end, systab, addr, npages, end_pfn;
37149 + u64 end, systab, addr, npages;
37150 void *p, *va;
37151
37152 efi.systab = NULL;
37153 @@ -479,10 +479,7 @@
37154 size = md->num_pages << EFI_PAGE_SHIFT;
37155 end = md->phys_addr + size;
37156
37157 - end_pfn = PFN_UP(end);
37158 - if (end_pfn <= max_low_pfn_mapped
37159 - || (end_pfn > (1UL << (32 - PAGE_SHIFT))
37160 - && end_pfn <= max_pfn_mapped))
37161 + if (PFN_UP(end) <= max_low_pfn_mapped)
37162 va = __va(md->phys_addr);
37163 else
37164 va = efi_ioremap(md->phys_addr, size);
37165 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/entry_64.S linux-2.6.29-rc3.owrt/arch/x86/kernel/entry_64.S
37166 --- linux-2.6.29.owrt/arch/x86/kernel/entry_64.S 2009-05-10 22:04:41.000000000 +0200
37167 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/entry_64.S 2009-05-10 23:48:28.000000000 +0200
37168 @@ -346,7 +346,6 @@
37169 popq_cfi %rax /* move return address... */
37170 mov %gs:pda_irqstackptr,%rsp
37171 EMPTY_FRAME 0
37172 - pushq_cfi %rbp /* backlink for unwinder */
37173 pushq_cfi %rax /* ... to the new stack */
37174 /*
37175 * We entered an interrupt context - irqs are off:
37176 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/ftrace.c linux-2.6.29-rc3.owrt/arch/x86/kernel/ftrace.c
37177 --- linux-2.6.29.owrt/arch/x86/kernel/ftrace.c 2009-05-10 22:04:41.000000000 +0200
37178 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/ftrace.c 2009-05-10 23:48:28.000000000 +0200
37179 @@ -488,21 +488,20 @@
37180 * ignore such a protection.
37181 */
37182 asm volatile(
37183 - "1: " _ASM_MOV " (%[parent]), %[old]\n"
37184 - "2: " _ASM_MOV " %[return_hooker], (%[parent])\n"
37185 + "1: " _ASM_MOV " (%[parent_old]), %[old]\n"
37186 + "2: " _ASM_MOV " %[return_hooker], (%[parent_replaced])\n"
37187 " movl $0, %[faulted]\n"
37188 - "3:\n"
37189
37190 ".section .fixup, \"ax\"\n"
37191 - "4: movl $1, %[faulted]\n"
37192 - " jmp 3b\n"
37193 + "3: movl $1, %[faulted]\n"
37194 ".previous\n"
37195
37196 - _ASM_EXTABLE(1b, 4b)
37197 - _ASM_EXTABLE(2b, 4b)
37198 + _ASM_EXTABLE(1b, 3b)
37199 + _ASM_EXTABLE(2b, 3b)
37200
37201 - : [old] "=r" (old), [faulted] "=r" (faulted)
37202 - : [parent] "r" (parent), [return_hooker] "r" (return_hooker)
37203 + : [parent_replaced] "=r" (parent), [old] "=r" (old),
37204 + [faulted] "=r" (faulted)
37205 + : [parent_old] "0" (parent), [return_hooker] "r" (return_hooker)
37206 : "memory"
37207 );
37208
37209 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/hpet.c linux-2.6.29-rc3.owrt/arch/x86/kernel/hpet.c
37210 --- linux-2.6.29.owrt/arch/x86/kernel/hpet.c 2009-05-10 22:04:41.000000000 +0200
37211 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/hpet.c 2009-05-10 23:48:28.000000000 +0200
37212 @@ -269,8 +269,6 @@
37213 now = hpet_readl(HPET_COUNTER);
37214 cmp = now + (unsigned long) delta;
37215 cfg = hpet_readl(HPET_Tn_CFG(timer));
37216 - /* Make sure we use edge triggered interrupts */
37217 - cfg &= ~HPET_TN_LEVEL;
37218 cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC |
37219 HPET_TN_SETVAL | HPET_TN_32BIT;
37220 hpet_writel(cfg, HPET_Tn_CFG(timer));
37221 @@ -899,7 +897,7 @@
37222 static int hpet_prev_update_sec;
37223 static struct rtc_time hpet_alarm_time;
37224 static unsigned long hpet_pie_count;
37225 -static u32 hpet_t1_cmp;
37226 +static unsigned long hpet_t1_cmp;
37227 static unsigned long hpet_default_delta;
37228 static unsigned long hpet_pie_delta;
37229 static unsigned long hpet_pie_limit;
37230 @@ -907,14 +905,6 @@
37231 static rtc_irq_handler irq_handler;
37232
37233 /*
37234 - * Check that the hpet counter c1 is ahead of the c2
37235 - */
37236 -static inline int hpet_cnt_ahead(u32 c1, u32 c2)
37237 -{
37238 - return (s32)(c2 - c1) < 0;
37239 -}
37240 -
37241 -/*
37242 * Registers a IRQ handler.
37243 */
37244 int hpet_register_irq_handler(rtc_irq_handler handler)
37245 @@ -1085,7 +1075,7 @@
37246 hpet_t1_cmp += delta;
37247 hpet_writel(hpet_t1_cmp, HPET_T1_CMP);
37248 lost_ints++;
37249 - } while (!hpet_cnt_ahead(hpet_t1_cmp, hpet_readl(HPET_COUNTER)));
37250 + } while ((long)(hpet_readl(HPET_COUNTER) - hpet_t1_cmp) > 0);
37251
37252 if (lost_ints) {
37253 if (hpet_rtc_flags & RTC_PIE)
37254 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/i387.c linux-2.6.29-rc3.owrt/arch/x86/kernel/i387.c
37255 --- linux-2.6.29.owrt/arch/x86/kernel/i387.c 2009-05-10 22:04:41.000000000 +0200
37256 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/i387.c 2009-05-10 23:48:28.000000000 +0200
37257 @@ -136,7 +136,7 @@
37258 #ifdef CONFIG_X86_32
37259 if (!HAVE_HWFP) {
37260 memset(tsk->thread.xstate, 0, xstate_size);
37261 - finit_task(tsk);
37262 + finit();
37263 set_stopped_child_used_math(tsk);
37264 return 0;
37265 }
37266 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/i8237.c linux-2.6.29-rc3.owrt/arch/x86/kernel/i8237.c
37267 --- linux-2.6.29.owrt/arch/x86/kernel/i8237.c 2009-05-10 22:04:41.000000000 +0200
37268 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/i8237.c 2009-05-10 23:48:28.000000000 +0200
37269 @@ -28,10 +28,10 @@
37270
37271 flags = claim_dma_lock();
37272
37273 - dma_outb(0, DMA1_RESET_REG);
37274 - dma_outb(0, DMA2_RESET_REG);
37275 + dma_outb(DMA1_RESET_REG, 0);
37276 + dma_outb(DMA2_RESET_REG, 0);
37277
37278 - for (i = 0; i < 8; i++) {
37279 + for (i = 0;i < 8;i++) {
37280 set_dma_addr(i, 0x000000);
37281 /* DMA count is a bit weird so this is not 0 */
37282 set_dma_count(i, 1);
37283 @@ -51,14 +51,14 @@
37284 }
37285
37286 static struct sysdev_class i8237_sysdev_class = {
37287 - .name = "i8237",
37288 - .suspend = i8237A_suspend,
37289 - .resume = i8237A_resume,
37290 + .name = "i8237",
37291 + .suspend = i8237A_suspend,
37292 + .resume = i8237A_resume,
37293 };
37294
37295 static struct sys_device device_i8237A = {
37296 - .id = 0,
37297 - .cls = &i8237_sysdev_class,
37298 + .id = 0,
37299 + .cls = &i8237_sysdev_class,
37300 };
37301
37302 static int __init i8237A_init_sysfs(void)
37303 @@ -68,4 +68,5 @@
37304 error = sysdev_register(&device_i8237A);
37305 return error;
37306 }
37307 +
37308 device_initcall(i8237A_init_sysfs);
37309 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/io_apic.c linux-2.6.29-rc3.owrt/arch/x86/kernel/io_apic.c
37310 --- linux-2.6.29.owrt/arch/x86/kernel/io_apic.c 2009-05-10 22:04:41.000000000 +0200
37311 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/io_apic.c 2009-05-10 23:48:28.000000000 +0200
37312 @@ -2528,15 +2528,14 @@
37313
37314 vector = ~get_irq_regs()->orig_ax;
37315 me = smp_processor_id();
37316 -
37317 - if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain)) {
37318 #ifdef CONFIG_NUMA_MIGRATE_IRQ_DESC
37319 *descp = desc = move_irq_desc(desc, me);
37320 /* get the new one */
37321 cfg = desc->chip_data;
37322 #endif
37323 +
37324 + if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain))
37325 send_cleanup_vector(cfg);
37326 - }
37327 }
37328 #else
37329 static inline void irq_complete_move(struct irq_desc **descp) {}
37330 @@ -3841,24 +3840,14 @@
37331
37332 void __init probe_nr_irqs_gsi(void)
37333 {
37334 + int idx;
37335 int nr = 0;
37336
37337 - nr = acpi_probe_gsi();
37338 - if (nr > nr_irqs_gsi) {
37339 - nr_irqs_gsi = nr;
37340 - } else {
37341 - /* for acpi=off or acpi is not compiled in */
37342 - int idx;
37343 -
37344 - nr = 0;
37345 - for (idx = 0; idx < nr_ioapics; idx++)
37346 - nr += io_apic_get_redir_entries(idx) + 1;
37347 -
37348 - if (nr > nr_irqs_gsi)
37349 - nr_irqs_gsi = nr;
37350 - }
37351 + for (idx = 0; idx < nr_ioapics; idx++)
37352 + nr += io_apic_get_redir_entries(idx) + 1;
37353
37354 - printk(KERN_DEBUG "nr_irqs_gsi: %d\n", nr_irqs_gsi);
37355 + if (nr > nr_irqs_gsi)
37356 + nr_irqs_gsi = nr;
37357 }
37358
37359 /* --------------------------------------------------------------------------
37360 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/irqinit_32.c linux-2.6.29-rc3.owrt/arch/x86/kernel/irqinit_32.c
37361 --- linux-2.6.29.owrt/arch/x86/kernel/irqinit_32.c 2009-05-10 22:04:41.000000000 +0200
37362 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/irqinit_32.c 2009-05-10 23:48:28.000000000 +0200
37363 @@ -78,6 +78,15 @@
37364 }
37365 }
37366
37367 +/*
37368 + * IRQ2 is cascade interrupt to second interrupt controller
37369 + */
37370 +static struct irqaction irq2 = {
37371 + .handler = no_action,
37372 + .mask = CPU_MASK_NONE,
37373 + .name = "cascade",
37374 +};
37375 +
37376 DEFINE_PER_CPU(vector_irq_t, vector_irq) = {
37377 [0 ... IRQ0_VECTOR - 1] = -1,
37378 [IRQ0_VECTOR] = 0,
37379 @@ -169,6 +178,9 @@
37380 alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt);
37381 #endif
37382
37383 + if (!acpi_ioapic)
37384 + setup_irq(2, &irq2);
37385 +
37386 /* setup after call gates are initialised (usually add in
37387 * the architecture specific gates)
37388 */
37389 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/kprobes.c linux-2.6.29-rc3.owrt/arch/x86/kernel/kprobes.c
37390 --- linux-2.6.29.owrt/arch/x86/kernel/kprobes.c 2009-05-10 22:04:41.000000000 +0200
37391 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/kprobes.c 2009-05-10 23:48:28.000000000 +0200
37392 @@ -193,9 +193,6 @@
37393 kprobe_opcode_t opcode;
37394 kprobe_opcode_t *orig_opcodes = opcodes;
37395
37396 - if (search_exception_tables(opcodes))
37397 - return 0; /* Page fault may occur on this address. */
37398 -
37399 retry:
37400 if (opcodes - orig_opcodes > MAX_INSN_SIZE - 1)
37401 return 0;
37402 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/olpc.c linux-2.6.29-rc3.owrt/arch/x86/kernel/olpc.c
37403 --- linux-2.6.29.owrt/arch/x86/kernel/olpc.c 2009-05-10 22:04:41.000000000 +0200
37404 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/olpc.c 2009-05-10 23:48:28.000000000 +0200
37405 @@ -203,7 +203,7 @@
37406 static void __init platform_detect(void)
37407 {
37408 /* stopgap until OFW support is added to the kernel */
37409 - olpc_platform_info.boardrev = olpc_board(0xc2);
37410 + olpc_platform_info.boardrev = 0xc2;
37411 }
37412 #endif
37413
37414 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/paravirt.c linux-2.6.29-rc3.owrt/arch/x86/kernel/paravirt.c
37415 --- linux-2.6.29.owrt/arch/x86/kernel/paravirt.c 2009-05-10 22:04:41.000000000 +0200
37416 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/paravirt.c 2009-05-10 23:48:28.000000000 +0200
37417 @@ -268,32 +268,6 @@
37418 return __get_cpu_var(paravirt_lazy_mode);
37419 }
37420
37421 -void arch_flush_lazy_mmu_mode(void)
37422 -{
37423 - preempt_disable();
37424 -
37425 - if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU) {
37426 - WARN_ON(preempt_count() == 1);
37427 - arch_leave_lazy_mmu_mode();
37428 - arch_enter_lazy_mmu_mode();
37429 - }
37430 -
37431 - preempt_enable();
37432 -}
37433 -
37434 -void arch_flush_lazy_cpu_mode(void)
37435 -{
37436 - preempt_disable();
37437 -
37438 - if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_CPU) {
37439 - WARN_ON(preempt_count() == 1);
37440 - arch_leave_lazy_cpu_mode();
37441 - arch_enter_lazy_cpu_mode();
37442 - }
37443 -
37444 - preempt_enable();
37445 -}
37446 -
37447 struct pv_info pv_info = {
37448 .name = "bare hardware",
37449 .paravirt_enabled = 0,
37450 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/pci-gart_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/pci-gart_64.c
37451 --- linux-2.6.29.owrt/arch/x86/kernel/pci-gart_64.c 2009-05-10 22:04:41.000000000 +0200
37452 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/pci-gart_64.c 2009-05-10 23:48:28.000000000 +0200
37453 @@ -5,7 +5,7 @@
37454 * This allows to use PCI devices that only support 32bit addresses on systems
37455 * with more than 4GB.
37456 *
37457 - * See Documentation/PCI/PCI-DMA-mapping.txt for the interface specification.
37458 + * See Documentation/DMA-mapping.txt for the interface specification.
37459 *
37460 * Copyright 2002 Andi Kleen, SuSE Labs.
37461 * Subject to the GNU General Public License v2 only.
37462 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/process_32.c linux-2.6.29-rc3.owrt/arch/x86/kernel/process_32.c
37463 --- linux-2.6.29.owrt/arch/x86/kernel/process_32.c 2009-05-10 22:04:41.000000000 +0200
37464 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/process_32.c 2009-05-10 23:48:28.000000000 +0200
37465 @@ -104,6 +104,9 @@
37466 check_pgt_cache();
37467 rmb();
37468
37469 + if (rcu_pending(cpu))
37470 + rcu_check_callbacks(cpu, 0);
37471 +
37472 if (cpu_is_offline(cpu))
37473 play_dead();
37474
37475 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/process_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/process_64.c
37476 --- linux-2.6.29.owrt/arch/x86/kernel/process_64.c 2009-05-10 22:04:41.000000000 +0200
37477 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/process_64.c 2009-05-10 23:48:28.000000000 +0200
37478 @@ -40,7 +40,6 @@
37479 #include <linux/uaccess.h>
37480 #include <linux/io.h>
37481 #include <linux/ftrace.h>
37482 -#include <linux/dmi.h>
37483
37484 #include <asm/pgtable.h>
37485 #include <asm/system.h>
37486 @@ -152,18 +151,14 @@
37487 unsigned long d0, d1, d2, d3, d6, d7;
37488 unsigned int fsindex, gsindex;
37489 unsigned int ds, cs, es;
37490 - const char *board;
37491
37492 printk("\n");
37493 print_modules();
37494 - board = dmi_get_system_info(DMI_PRODUCT_NAME);
37495 - if (!board)
37496 - board = "";
37497 - printk(KERN_INFO "Pid: %d, comm: %.20s %s %s %.*s %s\n",
37498 + printk(KERN_INFO "Pid: %d, comm: %.20s %s %s %.*s\n",
37499 current->pid, current->comm, print_tainted(),
37500 init_utsname()->release,
37501 (int)strcspn(init_utsname()->version, " "),
37502 - init_utsname()->version, board);
37503 + init_utsname()->version);
37504 printk(KERN_INFO "RIP: %04lx:[<%016lx>] ", regs->cs & 0xffff, regs->ip);
37505 printk_address(regs->ip, 1);
37506 printk(KERN_INFO "RSP: %04lx:%016lx EFLAGS: %08lx\n", regs->ss,
37507 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/process.c linux-2.6.29-rc3.owrt/arch/x86/kernel/process.c
37508 --- linux-2.6.29.owrt/arch/x86/kernel/process.c 2009-05-10 22:04:41.000000000 +0200
37509 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/process.c 2009-05-10 23:48:28.000000000 +0200
37510 @@ -180,9 +180,6 @@
37511
37512 trace_power_start(&it, POWER_CSTATE, (ax>>4)+1);
37513 if (!need_resched()) {
37514 - if (cpu_has(&current_cpu_data, X86_FEATURE_CLFLUSH_MONITOR))
37515 - clflush((void *)&current_thread_info()->flags);
37516 -
37517 __monitor((void *)&current_thread_info()->flags, 0, 0);
37518 smp_mb();
37519 if (!need_resched())
37520 @@ -197,9 +194,6 @@
37521 struct power_trace it;
37522 if (!need_resched()) {
37523 trace_power_start(&it, POWER_CSTATE, 1);
37524 - if (cpu_has(&current_cpu_data, X86_FEATURE_CLFLUSH_MONITOR))
37525 - clflush((void *)&current_thread_info()->flags);
37526 -
37527 __monitor((void *)&current_thread_info()->flags, 0, 0);
37528 smp_mb();
37529 if (!need_resched())
37530 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/ptrace.c linux-2.6.29-rc3.owrt/arch/x86/kernel/ptrace.c
37531 --- linux-2.6.29.owrt/arch/x86/kernel/ptrace.c 2009-05-10 22:04:41.000000000 +0200
37532 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/ptrace.c 2009-05-10 23:48:28.000000000 +0200
37533 @@ -810,16 +810,12 @@
37534
37535 static void ptrace_bts_detach(struct task_struct *child)
37536 {
37537 - /*
37538 - * Ptrace_detach() races with ptrace_untrace() in case
37539 - * the child dies and is reaped by another thread.
37540 - *
37541 - * We only do the memory accounting at this point and
37542 - * leave the buffer deallocation and the bts tracer
37543 - * release to ptrace_bts_untrace() which will be called
37544 - * later on with tasklist_lock held.
37545 - */
37546 - release_locked_buffer(child->bts_buffer, child->bts_size);
37547 + if (unlikely(child->bts)) {
37548 + ds_release_bts(child->bts);
37549 + child->bts = NULL;
37550 +
37551 + ptrace_bts_free_buffer(child);
37552 + }
37553 }
37554 #else
37555 static inline void ptrace_bts_fork(struct task_struct *tsk) {}
37556 @@ -1388,7 +1384,7 @@
37557 #ifdef CONFIG_X86_32
37558 # define IS_IA32 1
37559 #elif defined CONFIG_IA32_EMULATION
37560 -# define IS_IA32 is_compat_task()
37561 +# define IS_IA32 test_thread_flag(TIF_IA32)
37562 #else
37563 # define IS_IA32 0
37564 #endif
37565 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/reboot.c linux-2.6.29-rc3.owrt/arch/x86/kernel/reboot.c
37566 --- linux-2.6.29.owrt/arch/x86/kernel/reboot.c 2009-05-10 22:04:41.000000000 +0200
37567 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/reboot.c 2009-05-10 23:48:28.000000000 +0200
37568 @@ -217,14 +217,6 @@
37569 DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq"),
37570 },
37571 },
37572 - { /* Handle problems with rebooting on Dell XPS710 */
37573 - .callback = set_bios_reboot,
37574 - .ident = "Dell XPS710",
37575 - .matches = {
37576 - DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
37577 - DMI_MATCH(DMI_PRODUCT_NAME, "Dell XPS710"),
37578 - },
37579 - },
37580 { }
37581 };
37582
37583 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/setup.c linux-2.6.29-rc3.owrt/arch/x86/kernel/setup.c
37584 --- linux-2.6.29.owrt/arch/x86/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
37585 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
37586 @@ -607,7 +607,7 @@
37587 static int __init dmi_low_memory_corruption(const struct dmi_system_id *d)
37588 {
37589 printk(KERN_NOTICE
37590 - "%s detected: BIOS may corrupt low RAM, working around it.\n",
37591 + "%s detected: BIOS may corrupt low RAM, working it around.\n",
37592 d->ident);
37593
37594 e820_update_range(0, 0x10000, E820_RAM, E820_RESERVED);
37595 @@ -770,9 +770,6 @@
37596
37597 finish_e820_parsing();
37598
37599 - if (efi_enabled)
37600 - efi_init();
37601 -
37602 dmi_scan_machine();
37603
37604 dmi_check_system(bad_bios_dmi_table);
37605 @@ -792,6 +789,8 @@
37606 insert_resource(&iomem_resource, &data_resource);
37607 insert_resource(&iomem_resource, &bss_resource);
37608
37609 + if (efi_enabled)
37610 + efi_init();
37611
37612 #ifdef CONFIG_X86_32
37613 if (ppro_with_ram_bug()) {
37614 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/time_64.c linux-2.6.29-rc3.owrt/arch/x86/kernel/time_64.c
37615 --- linux-2.6.29.owrt/arch/x86/kernel/time_64.c 2009-05-10 22:04:41.000000000 +0200
37616 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/time_64.c 2009-05-10 23:48:28.000000000 +0200
37617 @@ -115,7 +115,7 @@
37618
37619 static struct irqaction irq0 = {
37620 .handler = timer_interrupt,
37621 - .flags = IRQF_DISABLED | IRQF_IRQPOLL | IRQF_NOBALANCING | IRQF_TIMER,
37622 + .flags = IRQF_DISABLED | IRQF_IRQPOLL | IRQF_NOBALANCING,
37623 .mask = CPU_MASK_NONE,
37624 .name = "timer"
37625 };
37626 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/traps.c linux-2.6.29-rc3.owrt/arch/x86/kernel/traps.c
37627 --- linux-2.6.29.owrt/arch/x86/kernel/traps.c 2009-05-10 22:04:41.000000000 +0200
37628 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/traps.c 2009-05-10 23:48:28.000000000 +0200
37629 @@ -99,12 +99,6 @@
37630 local_irq_enable();
37631 }
37632
37633 -static inline void conditional_cli(struct pt_regs *regs)
37634 -{
37635 - if (regs->flags & X86_EFLAGS_IF)
37636 - local_irq_disable();
37637 -}
37638 -
37639 static inline void preempt_conditional_cli(struct pt_regs *regs)
37640 {
37641 if (regs->flags & X86_EFLAGS_IF)
37642 @@ -632,10 +626,8 @@
37643
37644 #ifdef CONFIG_X86_32
37645 debug_vm86:
37646 - /* reenable preemption: handle_vm86_trap() might sleep */
37647 - dec_preempt_count();
37648 handle_vm86_trap((struct kernel_vm86_regs *) regs, error_code, 1);
37649 - conditional_cli(regs);
37650 + preempt_conditional_cli(regs);
37651 return;
37652 #endif
37653
37654 @@ -904,7 +896,7 @@
37655 EXPORT_SYMBOL_GPL(math_state_restore);
37656
37657 #ifndef CONFIG_MATH_EMULATION
37658 -void math_emulate(struct math_emu_info *info)
37659 +asmlinkage void math_emulate(long arg)
37660 {
37661 printk(KERN_EMERG
37662 "math-emulation not enabled and no coprocessor found.\n");
37663 @@ -914,19 +906,16 @@
37664 }
37665 #endif /* CONFIG_MATH_EMULATION */
37666
37667 -dotraplinkage void __kprobes do_device_not_available(struct pt_regs regs)
37668 +dotraplinkage void __kprobes
37669 +do_device_not_available(struct pt_regs *regs, long error)
37670 {
37671 #ifdef CONFIG_X86_32
37672 if (read_cr0() & X86_CR0_EM) {
37673 - struct math_emu_info info = { };
37674 -
37675 - conditional_sti(&regs);
37676 -
37677 - info.regs = &regs;
37678 - math_emulate(&info);
37679 + conditional_sti(regs);
37680 + math_emulate(0);
37681 } else {
37682 math_state_restore(); /* interrupts still off */
37683 - conditional_sti(&regs);
37684 + conditional_sti(regs);
37685 }
37686 #else
37687 math_state_restore();
37688 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/tsc.c linux-2.6.29-rc3.owrt/arch/x86/kernel/tsc.c
37689 --- linux-2.6.29.owrt/arch/x86/kernel/tsc.c 2009-05-10 22:04:41.000000000 +0200
37690 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/tsc.c 2009-05-10 23:48:28.000000000 +0200
37691 @@ -273,43 +273,30 @@
37692 * use the TSC value at the transitions to calculate a pretty
37693 * good value for the TSC frequencty.
37694 */
37695 -static inline int pit_expect_msb(unsigned char val, u64 *tscp, unsigned long *deltap)
37696 +static inline int pit_expect_msb(unsigned char val)
37697 {
37698 - int count;
37699 - u64 tsc = 0;
37700 + int count = 0;
37701
37702 for (count = 0; count < 50000; count++) {
37703 /* Ignore LSB */
37704 inb(0x42);
37705 if (inb(0x42) != val)
37706 break;
37707 - tsc = get_cycles();
37708 }
37709 - *deltap = get_cycles() - tsc;
37710 - *tscp = tsc;
37711 -
37712 - /*
37713 - * We require _some_ success, but the quality control
37714 - * will be based on the error terms on the TSC values.
37715 - */
37716 - return count > 5;
37717 + return count > 50;
37718 }
37719
37720 /*
37721 - * How many MSB values do we want to see? We aim for
37722 - * a maximum error rate of 500ppm (in practice the
37723 - * real error is much smaller), but refuse to spend
37724 - * more than 25ms on it.
37725 + * How many MSB values do we want to see? We aim for a
37726 + * 15ms calibration, which assuming a 2us counter read
37727 + * error should give us roughly 150 ppm precision for
37728 + * the calibration.
37729 */
37730 -#define MAX_QUICK_PIT_MS 25
37731 -#define MAX_QUICK_PIT_ITERATIONS (MAX_QUICK_PIT_MS * PIT_TICK_RATE / 1000 / 256)
37732 +#define QUICK_PIT_MS 15
37733 +#define QUICK_PIT_ITERATIONS (QUICK_PIT_MS * PIT_TICK_RATE / 1000 / 256)
37734
37735 static unsigned long quick_pit_calibrate(void)
37736 {
37737 - int i;
37738 - u64 tsc, delta;
37739 - unsigned long d1, d2;
37740 -
37741 /* Set the Gate high, disable speaker */
37742 outb((inb(0x61) & ~0x02) | 0x01, 0x61);
37743
37744 @@ -328,52 +315,45 @@
37745 outb(0xff, 0x42);
37746 outb(0xff, 0x42);
37747
37748 - /*
37749 - * The PIT starts counting at the next edge, so we
37750 - * need to delay for a microsecond. The easiest way
37751 - * to do that is to just read back the 16-bit counter
37752 - * once from the PIT.
37753 - */
37754 - inb(0x42);
37755 - inb(0x42);
37756 -
37757 - if (pit_expect_msb(0xff, &tsc, &d1)) {
37758 - for (i = 1; i <= MAX_QUICK_PIT_ITERATIONS; i++) {
37759 - if (!pit_expect_msb(0xff-i, &delta, &d2))
37760 - break;
37761 -
37762 - /*
37763 - * Iterate until the error is less than 500 ppm
37764 - */
37765 - delta -= tsc;
37766 - if (d1+d2 < delta >> 11)
37767 - goto success;
37768 + if (pit_expect_msb(0xff)) {
37769 + int i;
37770 + u64 t1, t2, delta;
37771 + unsigned char expect = 0xfe;
37772 +
37773 + t1 = get_cycles();
37774 + for (i = 0; i < QUICK_PIT_ITERATIONS; i++, expect--) {
37775 + if (!pit_expect_msb(expect))
37776 + goto failed;
37777 }
37778 + t2 = get_cycles();
37779 +
37780 + /*
37781 + * Make sure we can rely on the second TSC timestamp:
37782 + */
37783 + if (!pit_expect_msb(expect))
37784 + goto failed;
37785 +
37786 + /*
37787 + * Ok, if we get here, then we've seen the
37788 + * MSB of the PIT decrement QUICK_PIT_ITERATIONS
37789 + * times, and each MSB had many hits, so we never
37790 + * had any sudden jumps.
37791 + *
37792 + * As a result, we can depend on there not being
37793 + * any odd delays anywhere, and the TSC reads are
37794 + * reliable.
37795 + *
37796 + * kHz = ticks / time-in-seconds / 1000;
37797 + * kHz = (t2 - t1) / (QPI * 256 / PIT_TICK_RATE) / 1000
37798 + * kHz = ((t2 - t1) * PIT_TICK_RATE) / (QPI * 256 * 1000)
37799 + */
37800 + delta = (t2 - t1)*PIT_TICK_RATE;
37801 + do_div(delta, QUICK_PIT_ITERATIONS*256*1000);
37802 + printk("Fast TSC calibration using PIT\n");
37803 + return delta;
37804 }
37805 - printk("Fast TSC calibration failed\n");
37806 +failed:
37807 return 0;
37808 -
37809 -success:
37810 - /*
37811 - * Ok, if we get here, then we've seen the
37812 - * MSB of the PIT decrement 'i' times, and the
37813 - * error has shrunk to less than 500 ppm.
37814 - *
37815 - * As a result, we can depend on there not being
37816 - * any odd delays anywhere, and the TSC reads are
37817 - * reliable (within the error). We also adjust the
37818 - * delta to the middle of the error bars, just
37819 - * because it looks nicer.
37820 - *
37821 - * kHz = ticks / time-in-seconds / 1000;
37822 - * kHz = (t2 - t1) / (I * 256 / PIT_TICK_RATE) / 1000
37823 - * kHz = ((t2 - t1) * PIT_TICK_RATE) / (I * 256 * 1000)
37824 - */
37825 - delta += (long)(d2 - d1)/2;
37826 - delta *= PIT_TICK_RATE;
37827 - do_div(delta, i*256*1000);
37828 - printk("Fast TSC calibration using PIT\n");
37829 - return delta;
37830 }
37831
37832 /**
37833 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/vmi_32.c linux-2.6.29-rc3.owrt/arch/x86/kernel/vmi_32.c
37834 --- linux-2.6.29.owrt/arch/x86/kernel/vmi_32.c 2009-05-10 22:04:41.000000000 +0200
37835 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/vmi_32.c 2009-05-10 23:48:28.000000000 +0200
37836 @@ -321,16 +321,6 @@
37837 }
37838
37839 /*
37840 - * We use the pgd_free hook for releasing the pgd page:
37841 - */
37842 -static void vmi_pgd_free(struct mm_struct *mm, pgd_t *pgd)
37843 -{
37844 - unsigned long pfn = __pa(pgd) >> PAGE_SHIFT;
37845 -
37846 - vmi_ops.release_page(pfn, VMI_PAGE_L2);
37847 -}
37848 -
37849 -/*
37850 * Helper macros for MMU update flags. We can defer updates until a flush
37851 * or page invalidation only if the update is to the current address space
37852 * (otherwise, there is no flush). We must check against init_mm, since
37853 @@ -772,7 +762,6 @@
37854 if (vmi_ops.release_page) {
37855 pv_mmu_ops.release_pte = vmi_release_pte;
37856 pv_mmu_ops.release_pmd = vmi_release_pmd;
37857 - pv_mmu_ops.pgd_free = vmi_pgd_free;
37858 }
37859
37860 /* Set linear is needed in all cases */
37861 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kernel/vmiclock_32.c linux-2.6.29-rc3.owrt/arch/x86/kernel/vmiclock_32.c
37862 --- linux-2.6.29.owrt/arch/x86/kernel/vmiclock_32.c 2009-05-10 22:04:41.000000000 +0200
37863 +++ linux-2.6.29-rc3.owrt/arch/x86/kernel/vmiclock_32.c 2009-05-10 23:48:28.000000000 +0200
37864 @@ -202,7 +202,7 @@
37865 static struct irqaction vmi_clock_action = {
37866 .name = "vmi-timer",
37867 .handler = vmi_timer_interrupt,
37868 - .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER,
37869 + .flags = IRQF_DISABLED | IRQF_NOBALANCING,
37870 .mask = CPU_MASK_ALL,
37871 };
37872
37873 @@ -283,13 +283,10 @@
37874 #endif
37875
37876 /** vmi clocksource */
37877 -static struct clocksource clocksource_vmi;
37878
37879 static cycle_t read_real_cycles(void)
37880 {
37881 - cycle_t ret = (cycle_t)vmi_timer_ops.get_cycle_counter(VMI_CYCLES_REAL);
37882 - return ret >= clocksource_vmi.cycle_last ?
37883 - ret : clocksource_vmi.cycle_last;
37884 + return vmi_timer_ops.get_cycle_counter(VMI_CYCLES_REAL);
37885 }
37886
37887 static struct clocksource clocksource_vmi = {
37888 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/i8254.c linux-2.6.29-rc3.owrt/arch/x86/kvm/i8254.c
37889 --- linux-2.6.29.owrt/arch/x86/kvm/i8254.c 2009-05-10 22:04:41.000000000 +0200
37890 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/i8254.c 2009-05-10 23:48:28.000000000 +0200
37891 @@ -207,7 +207,7 @@
37892 hrtimer_add_expires_ns(&pt->timer, pt->period);
37893 pt->scheduled = hrtimer_get_expires_ns(&pt->timer);
37894 if (pt->period)
37895 - ps->channels[0].count_load_time = ktime_get();
37896 + ps->channels[0].count_load_time = hrtimer_get_expires(&pt->timer);
37897
37898 return (pt->period == 0 ? 0 : 1);
37899 }
37900 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/irq.c linux-2.6.29-rc3.owrt/arch/x86/kvm/irq.c
37901 --- linux-2.6.29.owrt/arch/x86/kvm/irq.c 2009-05-10 22:04:41.000000000 +0200
37902 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/irq.c 2009-05-10 23:48:28.000000000 +0200
37903 @@ -87,6 +87,13 @@
37904 }
37905 EXPORT_SYMBOL_GPL(kvm_inject_pending_timer_irqs);
37906
37907 +void kvm_timer_intr_post(struct kvm_vcpu *vcpu, int vec)
37908 +{
37909 + kvm_apic_timer_intr_post(vcpu, vec);
37910 + /* TODO: PIT, RTC etc. */
37911 +}
37912 +EXPORT_SYMBOL_GPL(kvm_timer_intr_post);
37913 +
37914 void __kvm_migrate_timers(struct kvm_vcpu *vcpu)
37915 {
37916 __kvm_migrate_apic_timer(vcpu);
37917 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/irq.h linux-2.6.29-rc3.owrt/arch/x86/kvm/irq.h
37918 --- linux-2.6.29.owrt/arch/x86/kvm/irq.h 2009-05-10 22:04:41.000000000 +0200
37919 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/irq.h 2009-05-10 23:48:28.000000000 +0200
37920 @@ -89,6 +89,7 @@
37921
37922 void kvm_pic_reset(struct kvm_kpic_state *s);
37923
37924 +void kvm_timer_intr_post(struct kvm_vcpu *vcpu, int vec);
37925 void kvm_inject_pending_timer_irqs(struct kvm_vcpu *vcpu);
37926 void kvm_inject_apic_timer_irqs(struct kvm_vcpu *vcpu);
37927 void kvm_apic_nmi_wd_deliver(struct kvm_vcpu *vcpu);
37928 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/lapic.c linux-2.6.29-rc3.owrt/arch/x86/kvm/lapic.c
37929 --- linux-2.6.29.owrt/arch/x86/kvm/lapic.c 2009-05-10 22:04:41.000000000 +0200
37930 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/lapic.c 2009-05-10 23:48:28.000000000 +0200
37931 @@ -35,12 +35,6 @@
37932 #include "kvm_cache_regs.h"
37933 #include "irq.h"
37934
37935 -#ifndef CONFIG_X86_64
37936 -#define mod_64(x, y) ((x) - (y) * div64_u64(x, y))
37937 -#else
37938 -#define mod_64(x, y) ((x) % (y))
37939 -#endif
37940 -
37941 #define PRId64 "d"
37942 #define PRIx64 "llx"
37943 #define PRIu64 "u"
37944 @@ -517,22 +511,52 @@
37945
37946 static u32 apic_get_tmcct(struct kvm_lapic *apic)
37947 {
37948 - ktime_t remaining;
37949 - s64 ns;
37950 + u64 counter_passed;
37951 + ktime_t passed, now;
37952 u32 tmcct;
37953
37954 ASSERT(apic != NULL);
37955
37956 + now = apic->timer.dev.base->get_time();
37957 + tmcct = apic_get_reg(apic, APIC_TMICT);
37958 +
37959 /* if initial count is 0, current count should also be 0 */
37960 - if (apic_get_reg(apic, APIC_TMICT) == 0)
37961 + if (tmcct == 0)
37962 return 0;
37963
37964 - remaining = hrtimer_expires_remaining(&apic->timer.dev);
37965 - if (ktime_to_ns(remaining) < 0)
37966 - remaining = ktime_set(0, 0);
37967 -
37968 - ns = mod_64(ktime_to_ns(remaining), apic->timer.period);
37969 - tmcct = div64_u64(ns, (APIC_BUS_CYCLE_NS * apic->timer.divide_count));
37970 + if (unlikely(ktime_to_ns(now) <=
37971 + ktime_to_ns(apic->timer.last_update))) {
37972 + /* Wrap around */
37973 + passed = ktime_add(( {
37974 + (ktime_t) {
37975 + .tv64 = KTIME_MAX -
37976 + (apic->timer.last_update).tv64}; }
37977 + ), now);
37978 + apic_debug("time elapsed\n");
37979 + } else
37980 + passed = ktime_sub(now, apic->timer.last_update);
37981 +
37982 + counter_passed = div64_u64(ktime_to_ns(passed),
37983 + (APIC_BUS_CYCLE_NS * apic->timer.divide_count));
37984 +
37985 + if (counter_passed > tmcct) {
37986 + if (unlikely(!apic_lvtt_period(apic))) {
37987 + /* one-shot timers stick at 0 until reset */
37988 + tmcct = 0;
37989 + } else {
37990 + /*
37991 + * periodic timers reset to APIC_TMICT when they
37992 + * hit 0. The while loop simulates this happening N
37993 + * times. (counter_passed %= tmcct) would also work,
37994 + * but might be slower or not work on 32-bit??
37995 + */
37996 + while (counter_passed > tmcct)
37997 + counter_passed -= tmcct;
37998 + tmcct -= counter_passed;
37999 + }
38000 + } else {
38001 + tmcct -= counter_passed;
38002 + }
38003
38004 return tmcct;
38005 }
38006 @@ -629,6 +653,8 @@
38007 {
38008 ktime_t now = apic->timer.dev.base->get_time();
38009
38010 + apic->timer.last_update = now;
38011 +
38012 apic->timer.period = apic_get_reg(apic, APIC_TMICT) *
38013 APIC_BUS_CYCLE_NS * apic->timer.divide_count;
38014 atomic_set(&apic->timer.pending, 0);
38015 @@ -1084,6 +1110,16 @@
38016 }
38017 }
38018
38019 +void kvm_apic_timer_intr_post(struct kvm_vcpu *vcpu, int vec)
38020 +{
38021 + struct kvm_lapic *apic = vcpu->arch.apic;
38022 +
38023 + if (apic && apic_lvt_vector(apic, APIC_LVTT) == vec)
38024 + apic->timer.last_update = ktime_add_ns(
38025 + apic->timer.last_update,
38026 + apic->timer.period);
38027 +}
38028 +
38029 int kvm_get_apic_interrupt(struct kvm_vcpu *vcpu)
38030 {
38031 int vector = kvm_apic_has_interrupt(vcpu);
38032 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/lapic.h linux-2.6.29-rc3.owrt/arch/x86/kvm/lapic.h
38033 --- linux-2.6.29.owrt/arch/x86/kvm/lapic.h 2009-05-10 22:04:41.000000000 +0200
38034 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/lapic.h 2009-05-10 23:48:28.000000000 +0200
38035 @@ -12,6 +12,7 @@
38036 atomic_t pending;
38037 s64 period; /* unit: ns */
38038 u32 divide_count;
38039 + ktime_t last_update;
38040 struct hrtimer dev;
38041 } timer;
38042 struct kvm_vcpu *vcpu;
38043 @@ -41,6 +42,7 @@
38044 void kvm_apic_post_state_restore(struct kvm_vcpu *vcpu);
38045 int kvm_lapic_enabled(struct kvm_vcpu *vcpu);
38046 int kvm_lapic_find_highest_irr(struct kvm_vcpu *vcpu);
38047 +void kvm_apic_timer_intr_post(struct kvm_vcpu *vcpu, int vec);
38048
38049 void kvm_lapic_set_vapic_addr(struct kvm_vcpu *vcpu, gpa_t vapic_addr);
38050 void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu);
38051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/mmu.c linux-2.6.29-rc3.owrt/arch/x86/kvm/mmu.c
38052 --- linux-2.6.29.owrt/arch/x86/kvm/mmu.c 2009-05-10 22:04:41.000000000 +0200
38053 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/mmu.c 2009-05-10 23:48:28.000000000 +0200
38054 @@ -1698,13 +1698,8 @@
38055 if (largepage)
38056 spte |= PT_PAGE_SIZE_MASK;
38057 if (mt_mask) {
38058 - if (!kvm_is_mmio_pfn(pfn)) {
38059 - mt_mask = get_memory_type(vcpu, gfn) <<
38060 - kvm_x86_ops->get_mt_mask_shift();
38061 - mt_mask |= VMX_EPT_IGMT_BIT;
38062 - } else
38063 - mt_mask = MTRR_TYPE_UNCACHABLE <<
38064 - kvm_x86_ops->get_mt_mask_shift();
38065 + mt_mask = get_memory_type(vcpu, gfn) <<
38066 + kvm_x86_ops->get_mt_mask_shift();
38067 spte |= mt_mask;
38068 }
38069
38070 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/svm.c linux-2.6.29-rc3.owrt/arch/x86/kvm/svm.c
38071 --- linux-2.6.29.owrt/arch/x86/kvm/svm.c 2009-05-10 22:04:41.000000000 +0200
38072 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/svm.c 2009-05-10 23:48:28.000000000 +0200
38073 @@ -1600,6 +1600,7 @@
38074 /* Okay, we can deliver the interrupt: grab it and update PIC state. */
38075 intr_vector = kvm_cpu_get_interrupt(vcpu);
38076 svm_inject_irq(svm, intr_vector);
38077 + kvm_timer_intr_post(vcpu, intr_vector);
38078 out:
38079 update_cr8_intercept(vcpu);
38080 }
38081 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/vmx.c linux-2.6.29-rc3.owrt/arch/x86/kvm/vmx.c
38082 --- linux-2.6.29.owrt/arch/x86/kvm/vmx.c 2009-05-10 22:04:41.000000000 +0200
38083 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/vmx.c 2009-05-10 23:48:28.000000000 +0200
38084 @@ -903,7 +903,6 @@
38085 data = vmcs_readl(GUEST_SYSENTER_ESP);
38086 break;
38087 default:
38088 - vmx_load_host_state(to_vmx(vcpu));
38089 msr = find_msr_entry(to_vmx(vcpu), msr_index);
38090 if (msr) {
38091 data = msr->data;
38092 @@ -3286,6 +3285,7 @@
38093 }
38094 if (vcpu->arch.interrupt.pending) {
38095 vmx_inject_irq(vcpu, vcpu->arch.interrupt.nr);
38096 + kvm_timer_intr_post(vcpu, vcpu->arch.interrupt.nr);
38097 if (kvm_cpu_has_interrupt(vcpu))
38098 enable_irq_window(vcpu);
38099 }
38100 @@ -3687,7 +3687,8 @@
38101 if (vm_need_ept()) {
38102 bypass_guest_pf = 0;
38103 kvm_mmu_set_base_ptes(VMX_EPT_READABLE_MASK |
38104 - VMX_EPT_WRITABLE_MASK);
38105 + VMX_EPT_WRITABLE_MASK |
38106 + VMX_EPT_IGMT_BIT);
38107 kvm_mmu_set_mask_ptes(0ull, 0ull, 0ull, 0ull,
38108 VMX_EPT_EXECUTABLE_MASK,
38109 VMX_EPT_DEFAULT_MT << VMX_EPT_MT_EPTE_SHIFT);
38110 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/kvm/x86.c linux-2.6.29-rc3.owrt/arch/x86/kvm/x86.c
38111 --- linux-2.6.29.owrt/arch/x86/kvm/x86.c 2009-05-10 22:04:41.000000000 +0200
38112 +++ linux-2.6.29-rc3.owrt/arch/x86/kvm/x86.c 2009-05-10 23:48:28.000000000 +0200
38113 @@ -967,6 +967,7 @@
38114 case KVM_CAP_MMU_SHADOW_CACHE_CONTROL:
38115 case KVM_CAP_SET_TSS_ADDR:
38116 case KVM_CAP_EXT_CPUID:
38117 + case KVM_CAP_CLOCKSOURCE:
38118 case KVM_CAP_PIT:
38119 case KVM_CAP_NOP_IO_DELAY:
38120 case KVM_CAP_MP_STATE:
38121 @@ -991,9 +992,6 @@
38122 case KVM_CAP_IOMMU:
38123 r = iommu_found();
38124 break;
38125 - case KVM_CAP_CLOCKSOURCE:
38126 - r = boot_cpu_has(X86_FEATURE_CONSTANT_TSC);
38127 - break;
38128 default:
38129 r = 0;
38130 break;
38131 @@ -4129,13 +4127,9 @@
38132
38133 }
38134
38135 -void kvm_arch_sync_events(struct kvm *kvm)
38136 -{
38137 - kvm_free_all_assigned_devices(kvm);
38138 -}
38139 -
38140 void kvm_arch_destroy_vm(struct kvm *kvm)
38141 {
38142 + kvm_free_all_assigned_devices(kvm);
38143 kvm_iommu_unmap_guest(kvm);
38144 kvm_free_pit(kvm);
38145 kfree(kvm->arch.vpic);
38146 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/lguest/boot.c linux-2.6.29-rc3.owrt/arch/x86/lguest/boot.c
38147 --- linux-2.6.29.owrt/arch/x86/lguest/boot.c 2009-05-10 22:04:41.000000000 +0200
38148 +++ linux-2.6.29-rc3.owrt/arch/x86/lguest/boot.c 2009-05-10 23:48:28.000000000 +0200
38149 @@ -343,11 +343,6 @@
38150 * flush_tlb_user() for both user and kernel mappings unless
38151 * the Page Global Enable (PGE) feature bit is set. */
38152 *dx |= 0x00002000;
38153 - /* We also lie, and say we're family id 5. 6 or greater
38154 - * leads to a rdmsr in early_init_intel which we can't handle.
38155 - * Family ID is returned as bits 8-12 in ax. */
38156 - *ax &= 0xFFFFF0FF;
38157 - *ax |= 0x00000500;
38158 break;
38159 case 0x80000000:
38160 /* Futureproof this a little: if they ask how much extended
38161 @@ -594,21 +589,19 @@
38162 /* Some systems map "vectors" to interrupts weirdly. Lguest has
38163 * a straightforward 1 to 1 mapping, so force that here. */
38164 __get_cpu_var(vector_irq)[vector] = i;
38165 - if (vector != SYSCALL_VECTOR)
38166 - set_intr_gate(vector, interrupt[i]);
38167 + if (vector != SYSCALL_VECTOR) {
38168 + set_intr_gate(vector,
38169 + interrupt[vector-FIRST_EXTERNAL_VECTOR]);
38170 + set_irq_chip_and_handler_name(i, &lguest_irq_controller,
38171 + handle_level_irq,
38172 + "level");
38173 + }
38174 }
38175 /* This call is required to set up for 4k stacks, where we have
38176 * separate stacks for hard and soft interrupts. */
38177 irq_ctx_init(smp_processor_id());
38178 }
38179
38180 -void lguest_setup_irq(unsigned int irq)
38181 -{
38182 - irq_to_desc_alloc_cpu(irq, 0);
38183 - set_irq_chip_and_handler_name(irq, &lguest_irq_controller,
38184 - handle_level_irq, "level");
38185 -}
38186 -
38187 /*
38188 * Time.
38189 *
38190 @@ -938,7 +931,7 @@
38191 * that we can fit comfortably.
38192 *
38193 * First we need assembly templates of each of the patchable Guest operations,
38194 - * and these are in i386_head.S. */
38195 + * and these are in lguest_asm.S. */
38196
38197 /*G:060 We construct a table from the assembler templates: */
38198 static const struct lguest_insns
38199 @@ -1100,7 +1093,7 @@
38200 acpi_ht = 0;
38201 #endif
38202
38203 - /* We set the preferred console to "hvc". This is the "hypervisor
38204 + /* We set the perferred console to "hvc". This is the "hypervisor
38205 * virtual console" driver written by the PowerPC people, which we also
38206 * adapted for lguest's use. */
38207 add_preferred_console("hvc", 0, NULL);
38208 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mach-default/setup.c linux-2.6.29-rc3.owrt/arch/x86/mach-default/setup.c
38209 --- linux-2.6.29.owrt/arch/x86/mach-default/setup.c 2009-05-10 22:04:41.000000000 +0200
38210 +++ linux-2.6.29-rc3.owrt/arch/x86/mach-default/setup.c 2009-05-10 23:48:28.000000000 +0200
38211 @@ -38,15 +38,6 @@
38212 init_ISA_irqs();
38213 }
38214
38215 -/*
38216 - * IRQ2 is cascade interrupt to second interrupt controller
38217 - */
38218 -static struct irqaction irq2 = {
38219 - .handler = no_action,
38220 - .mask = CPU_MASK_NONE,
38221 - .name = "cascade",
38222 -};
38223 -
38224 /**
38225 * intr_init_hook - post gate setup interrupt initialisation
38226 *
38227 @@ -62,9 +53,6 @@
38228 if (x86_quirks->arch_intr_init())
38229 return;
38230 }
38231 - if (!acpi_ioapic)
38232 - setup_irq(2, &irq2);
38233 -
38234 }
38235
38236 /**
38237 @@ -96,7 +84,7 @@
38238
38239 static struct irqaction irq0 = {
38240 .handler = timer_interrupt,
38241 - .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER,
38242 + .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL,
38243 .mask = CPU_MASK_NONE,
38244 .name = "timer"
38245 };
38246 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mach-voyager/setup.c linux-2.6.29-rc3.owrt/arch/x86/mach-voyager/setup.c
38247 --- linux-2.6.29.owrt/arch/x86/mach-voyager/setup.c 2009-05-10 22:04:41.000000000 +0200
38248 +++ linux-2.6.29-rc3.owrt/arch/x86/mach-voyager/setup.c 2009-05-10 23:48:28.000000000 +0200
38249 @@ -33,30 +33,20 @@
38250 setup_irq(2, &irq2);
38251 }
38252
38253 -static void voyager_disable_tsc(void)
38254 +void __init pre_setup_arch_hook(void)
38255 {
38256 /* Voyagers run their CPUs from independent clocks, so disable
38257 * the TSC code because we can't sync them */
38258 setup_clear_cpu_cap(X86_FEATURE_TSC);
38259 }
38260
38261 -void __init pre_setup_arch_hook(void)
38262 -{
38263 - voyager_disable_tsc();
38264 -}
38265 -
38266 -void __init pre_time_init_hook(void)
38267 -{
38268 - voyager_disable_tsc();
38269 -}
38270 -
38271 void __init trap_init_hook(void)
38272 {
38273 }
38274
38275 static struct irqaction irq0 = {
38276 .handler = timer_interrupt,
38277 - .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER,
38278 + .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL,
38279 .mask = CPU_MASK_NONE,
38280 .name = "timer"
38281 };
38282 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mach-voyager/voyager_smp.c linux-2.6.29-rc3.owrt/arch/x86/mach-voyager/voyager_smp.c
38283 --- linux-2.6.29.owrt/arch/x86/mach-voyager/voyager_smp.c 2009-05-10 22:04:41.000000000 +0200
38284 +++ linux-2.6.29-rc3.owrt/arch/x86/mach-voyager/voyager_smp.c 2009-05-10 23:48:28.000000000 +0200
38285 @@ -65,7 +65,7 @@
38286
38287 /* Bitmask of CPUs present in the system - exported by i386_syms.c, used
38288 * by scheduler but indexed physically */
38289 -static cpumask_t voyager_phys_cpu_present_map = CPU_MASK_NONE;
38290 +cpumask_t phys_cpu_present_map = CPU_MASK_NONE;
38291
38292 /* The internal functions */
38293 static void send_CPI(__u32 cpuset, __u8 cpi);
38294 @@ -81,7 +81,7 @@
38295 static void disable_local_vic_irq(unsigned int irq);
38296 static void before_handle_vic_irq(unsigned int irq);
38297 static void after_handle_vic_irq(unsigned int irq);
38298 -static void set_vic_irq_affinity(unsigned int irq, const struct cpumask *mask);
38299 +static void set_vic_irq_affinity(unsigned int irq, cpumask_t mask);
38300 static void ack_vic_irq(unsigned int irq);
38301 static void vic_enable_cpi(void);
38302 static void do_boot_cpu(__u8 cpuid);
38303 @@ -211,6 +211,8 @@
38304 static cpumask_t smp_commenced_mask = CPU_MASK_NONE;
38305
38306 /* This is for the new dynamic CPU boot code */
38307 +cpumask_t cpu_callin_map = CPU_MASK_NONE;
38308 +cpumask_t cpu_callout_map = CPU_MASK_NONE;
38309
38310 /* The per processor IRQ masks (these are usually kept in sync) */
38311 static __u16 vic_irq_mask[NR_CPUS] __cacheline_aligned;
38312 @@ -366,19 +368,19 @@
38313 /* set up everything for just this CPU, we can alter
38314 * this as we start the other CPUs later */
38315 /* now get the CPU disposition from the extended CMOS */
38316 - cpus_addr(voyager_phys_cpu_present_map)[0] =
38317 + cpus_addr(phys_cpu_present_map)[0] =
38318 voyager_extended_cmos_read(VOYAGER_PROCESSOR_PRESENT_MASK);
38319 - cpus_addr(voyager_phys_cpu_present_map)[0] |=
38320 + cpus_addr(phys_cpu_present_map)[0] |=
38321 voyager_extended_cmos_read(VOYAGER_PROCESSOR_PRESENT_MASK + 1) << 8;
38322 - cpus_addr(voyager_phys_cpu_present_map)[0] |=
38323 + cpus_addr(phys_cpu_present_map)[0] |=
38324 voyager_extended_cmos_read(VOYAGER_PROCESSOR_PRESENT_MASK +
38325 2) << 16;
38326 - cpus_addr(voyager_phys_cpu_present_map)[0] |=
38327 + cpus_addr(phys_cpu_present_map)[0] |=
38328 voyager_extended_cmos_read(VOYAGER_PROCESSOR_PRESENT_MASK +
38329 3) << 24;
38330 - init_cpu_possible(&voyager_phys_cpu_present_map);
38331 - printk("VOYAGER SMP: voyager_phys_cpu_present_map = 0x%lx\n",
38332 - cpus_addr(voyager_phys_cpu_present_map)[0]);
38333 + cpu_possible_map = phys_cpu_present_map;
38334 + printk("VOYAGER SMP: phys_cpu_present_map = 0x%lx\n",
38335 + cpus_addr(phys_cpu_present_map)[0]);
38336 /* Here we set up the VIC to enable SMP */
38337 /* enable the CPIs by writing the base vector to their register */
38338 outb(VIC_DEFAULT_CPI_BASE, VIC_CPI_BASE_REGISTER);
38339 @@ -628,15 +630,15 @@
38340 /* now that the cat has probed the Voyager System Bus, sanity
38341 * check the cpu map */
38342 if (((voyager_quad_processors | voyager_extended_vic_processors)
38343 - & cpus_addr(voyager_phys_cpu_present_map)[0]) !=
38344 - cpus_addr(voyager_phys_cpu_present_map)[0]) {
38345 + & cpus_addr(phys_cpu_present_map)[0]) !=
38346 + cpus_addr(phys_cpu_present_map)[0]) {
38347 /* should panic */
38348 printk("\n\n***WARNING*** "
38349 "Sanity check of CPU present map FAILED\n");
38350 }
38351 } else if (voyager_level == 4)
38352 voyager_extended_vic_processors =
38353 - cpus_addr(voyager_phys_cpu_present_map)[0];
38354 + cpus_addr(phys_cpu_present_map)[0];
38355
38356 /* this sets up the idle task to run on the current cpu */
38357 voyager_extended_cpus = 1;
38358 @@ -670,7 +672,7 @@
38359 /* loop over all the extended VIC CPUs and boot them. The
38360 * Quad CPUs must be bootstrapped by their extended VIC cpu */
38361 for (i = 0; i < nr_cpu_ids; i++) {
38362 - if (i == boot_cpu_id || !cpu_isset(i, voyager_phys_cpu_present_map))
38363 + if (i == boot_cpu_id || !cpu_isset(i, phys_cpu_present_map))
38364 continue;
38365 do_boot_cpu(i);
38366 /* This udelay seems to be needed for the Quad boots
38367 @@ -1597,16 +1599,16 @@
38368 * change the mask and then do an interrupt enable CPI to re-enable on
38369 * the selected processors */
38370
38371 -void set_vic_irq_affinity(unsigned int irq, const struct cpumask *mask)
38372 +void set_vic_irq_affinity(unsigned int irq, cpumask_t mask)
38373 {
38374 /* Only extended processors handle interrupts */
38375 unsigned long real_mask;
38376 unsigned long irq_mask = 1 << irq;
38377 int cpu;
38378
38379 - real_mask = cpus_addr(*mask)[0] & voyager_extended_vic_processors;
38380 + real_mask = cpus_addr(mask)[0] & voyager_extended_vic_processors;
38381
38382 - if (cpus_addr(*mask)[0] == 0)
38383 + if (cpus_addr(mask)[0] == 0)
38384 /* can't have no CPUs to accept the interrupt -- extremely
38385 * bad things will happen */
38386 return;
38387 @@ -1748,11 +1750,10 @@
38388 init_gdt(smp_processor_id());
38389 switch_to_new_gdt();
38390
38391 - cpu_online_map = cpumask_of_cpu(smp_processor_id());
38392 - cpu_callout_map = cpumask_of_cpu(smp_processor_id());
38393 - cpu_callin_map = CPU_MASK_NONE;
38394 - cpu_present_map = cpumask_of_cpu(smp_processor_id());
38395 -
38396 + cpu_set(smp_processor_id(), cpu_online_map);
38397 + cpu_set(smp_processor_id(), cpu_callout_map);
38398 + cpu_set(smp_processor_id(), cpu_possible_map);
38399 + cpu_set(smp_processor_id(), cpu_present_map);
38400 }
38401
38402 static int __cpuinit voyager_cpu_up(unsigned int cpu)
38403 @@ -1782,9 +1783,9 @@
38404 x86_write_percpu(cpu_number, hard_smp_processor_id());
38405 }
38406
38407 -static void voyager_send_call_func(const struct cpumask *callmask)
38408 +static void voyager_send_call_func(cpumask_t callmask)
38409 {
38410 - __u32 mask = cpus_addr(*callmask)[0] & ~(1 << smp_processor_id());
38411 + __u32 mask = cpus_addr(callmask)[0] & ~(1 << smp_processor_id());
38412 send_CPI(mask, VIC_CALL_FUNCTION_CPI);
38413 }
38414
38415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/math-emu/fpu_aux.c linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_aux.c
38416 --- linux-2.6.29.owrt/arch/x86/math-emu/fpu_aux.c 2009-05-10 22:04:41.000000000 +0200
38417 +++ linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_aux.c 2009-05-10 23:48:28.000000000 +0200
38418 @@ -30,29 +30,20 @@
38419 }
38420
38421 /* Needs to be externally visible */
38422 -void finit_task(struct task_struct *tsk)
38423 +void finit(void)
38424 {
38425 - struct i387_soft_struct *soft = &tsk->thread.xstate->soft;
38426 - struct address *oaddr, *iaddr;
38427 - soft->cwd = 0x037f;
38428 - soft->swd = 0;
38429 - soft->ftop = 0; /* We don't keep top in the status word internally. */
38430 - soft->twd = 0xffff;
38431 + control_word = 0x037f;
38432 + partial_status = 0;
38433 + top = 0; /* We don't keep top in the status word internally. */
38434 + fpu_tag_word = 0xffff;
38435 /* The behaviour is different from that detailed in
38436 Section 15.1.6 of the Intel manual */
38437 - oaddr = (struct address *)&soft->foo;
38438 - oaddr->offset = 0;
38439 - oaddr->selector = 0;
38440 - iaddr = (struct address *)&soft->fip;
38441 - iaddr->offset = 0;
38442 - iaddr->selector = 0;
38443 - iaddr->opcode = 0;
38444 - soft->no_update = 1;
38445 -}
38446 -
38447 -void finit(void)
38448 -{
38449 - finit_task(current);
38450 + operand_address.offset = 0;
38451 + operand_address.selector = 0;
38452 + instruction_address.offset = 0;
38453 + instruction_address.selector = 0;
38454 + instruction_address.opcode = 0;
38455 + no_ip_update = 1;
38456 }
38457
38458 /*
38459 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/math-emu/fpu_entry.c linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_entry.c
38460 --- linux-2.6.29.owrt/arch/x86/math-emu/fpu_entry.c 2009-05-10 22:04:41.000000000 +0200
38461 +++ linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_entry.c 2009-05-10 23:48:28.000000000 +0200
38462 @@ -131,7 +131,7 @@
38463 static int valid_prefix(u_char *Byte, u_char __user ** fpu_eip,
38464 overrides * override);
38465
38466 -void math_emulate(struct math_emu_info *info)
38467 +asmlinkage void math_emulate(long arg)
38468 {
38469 u_char FPU_modrm, byte1;
38470 unsigned short code;
38471 @@ -161,7 +161,7 @@
38472 RE_ENTRANT_CHECK_ON;
38473 #endif /* RE_ENTRANT_CHECKING */
38474
38475 - FPU_info = info;
38476 + SETUP_DATA_AREA(arg);
38477
38478 FPU_ORIG_EIP = FPU_EIP;
38479
38480 @@ -659,7 +659,7 @@
38481 }
38482 }
38483
38484 -void math_abort(struct math_emu_info *info, unsigned int signal)
38485 +void math_abort(struct info *info, unsigned int signal)
38486 {
38487 FPU_EIP = FPU_ORIG_EIP;
38488 current->thread.trap_no = 16;
38489 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/math-emu/fpu_proto.h linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_proto.h
38490 --- linux-2.6.29.owrt/arch/x86/math-emu/fpu_proto.h 2009-05-10 22:04:41.000000000 +0200
38491 +++ linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_proto.h 2009-05-10 23:48:28.000000000 +0200
38492 @@ -51,8 +51,8 @@
38493 extern void fst_i_(void);
38494 extern void fstp_i(void);
38495 /* fpu_entry.c */
38496 -extern void math_emulate(struct math_emu_info *info);
38497 -extern void math_abort(struct math_emu_info *info, unsigned int signal);
38498 +asmlinkage extern void math_emulate(long arg);
38499 +extern void math_abort(struct info *info, unsigned int signal);
38500 /* fpu_etc.c */
38501 extern void FPU_etc(void);
38502 /* fpu_tags.c */
38503 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/math-emu/fpu_system.h linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_system.h
38504 --- linux-2.6.29.owrt/arch/x86/math-emu/fpu_system.h 2009-05-10 22:04:41.000000000 +0200
38505 +++ linux-2.6.29-rc3.owrt/arch/x86/math-emu/fpu_system.h 2009-05-10 23:48:28.000000000 +0200
38506 @@ -16,6 +16,10 @@
38507 #include <linux/kernel.h>
38508 #include <linux/mm.h>
38509
38510 +/* This sets the pointer FPU_info to point to the argument part
38511 + of the stack frame of math_emulate() */
38512 +#define SETUP_DATA_AREA(arg) FPU_info = (struct info *) &arg
38513 +
38514 /* s is always from a cpu register, and the cpu does bounds checking
38515 * during register load --> no further bounds checks needed */
38516 #define LDT_DESCRIPTOR(s) (((struct desc_struct *)current->mm->context.ldt)[(s) >> 3])
38517 @@ -34,12 +38,12 @@
38518 #define I387 (current->thread.xstate)
38519 #define FPU_info (I387->soft.info)
38520
38521 -#define FPU_CS (*(unsigned short *) &(FPU_info->regs->cs))
38522 -#define FPU_SS (*(unsigned short *) &(FPU_info->regs->ss))
38523 -#define FPU_DS (*(unsigned short *) &(FPU_info->regs->ds))
38524 -#define FPU_EAX (FPU_info->regs->ax)
38525 -#define FPU_EFLAGS (FPU_info->regs->flags)
38526 -#define FPU_EIP (FPU_info->regs->ip)
38527 +#define FPU_CS (*(unsigned short *) &(FPU_info->___cs))
38528 +#define FPU_SS (*(unsigned short *) &(FPU_info->___ss))
38529 +#define FPU_DS (*(unsigned short *) &(FPU_info->___ds))
38530 +#define FPU_EAX (FPU_info->___eax)
38531 +#define FPU_EFLAGS (FPU_info->___eflags)
38532 +#define FPU_EIP (FPU_info->___eip)
38533 #define FPU_ORIG_EIP (FPU_info->___orig_eip)
38534
38535 #define FPU_lookahead (I387->soft.lookahead)
38536 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/math-emu/get_address.c linux-2.6.29-rc3.owrt/arch/x86/math-emu/get_address.c
38537 --- linux-2.6.29.owrt/arch/x86/math-emu/get_address.c 2009-05-10 22:04:41.000000000 +0200
38538 +++ linux-2.6.29-rc3.owrt/arch/x86/math-emu/get_address.c 2009-05-10 23:48:28.000000000 +0200
38539 @@ -29,43 +29,46 @@
38540 #define FPU_WRITE_BIT 0x10
38541
38542 static int reg_offset[] = {
38543 - offsetof(struct pt_regs, ax),
38544 - offsetof(struct pt_regs, cx),
38545 - offsetof(struct pt_regs, dx),
38546 - offsetof(struct pt_regs, bx),
38547 - offsetof(struct pt_regs, sp),
38548 - offsetof(struct pt_regs, bp),
38549 - offsetof(struct pt_regs, si),
38550 - offsetof(struct pt_regs, di)
38551 + offsetof(struct info, ___eax),
38552 + offsetof(struct info, ___ecx),
38553 + offsetof(struct info, ___edx),
38554 + offsetof(struct info, ___ebx),
38555 + offsetof(struct info, ___esp),
38556 + offsetof(struct info, ___ebp),
38557 + offsetof(struct info, ___esi),
38558 + offsetof(struct info, ___edi)
38559 };
38560
38561 -#define REG_(x) (*(long *)(reg_offset[(x)] + (u_char *)FPU_info->regs))
38562 +#define REG_(x) (*(long *)(reg_offset[(x)]+(u_char *) FPU_info))
38563
38564 static int reg_offset_vm86[] = {
38565 - offsetof(struct pt_regs, cs),
38566 - offsetof(struct kernel_vm86_regs, ds),
38567 - offsetof(struct kernel_vm86_regs, es),
38568 - offsetof(struct kernel_vm86_regs, fs),
38569 - offsetof(struct kernel_vm86_regs, gs),
38570 - offsetof(struct pt_regs, ss),
38571 - offsetof(struct kernel_vm86_regs, ds)
38572 + offsetof(struct info, ___cs),
38573 + offsetof(struct info, ___vm86_ds),
38574 + offsetof(struct info, ___vm86_es),
38575 + offsetof(struct info, ___vm86_fs),
38576 + offsetof(struct info, ___vm86_gs),
38577 + offsetof(struct info, ___ss),
38578 + offsetof(struct info, ___vm86_ds)
38579 };
38580
38581 #define VM86_REG_(x) (*(unsigned short *) \
38582 - (reg_offset_vm86[((unsigned)x)] + (u_char *)FPU_info->regs))
38583 + (reg_offset_vm86[((unsigned)x)]+(u_char *) FPU_info))
38584 +
38585 +/* This dummy, gs is not saved on the stack. */
38586 +#define ___GS ___ds
38587
38588 static int reg_offset_pm[] = {
38589 - offsetof(struct pt_regs, cs),
38590 - offsetof(struct pt_regs, ds),
38591 - offsetof(struct pt_regs, es),
38592 - offsetof(struct pt_regs, fs),
38593 - offsetof(struct pt_regs, ds), /* dummy, not saved on stack */
38594 - offsetof(struct pt_regs, ss),
38595 - offsetof(struct pt_regs, ds)
38596 + offsetof(struct info, ___cs),
38597 + offsetof(struct info, ___ds),
38598 + offsetof(struct info, ___es),
38599 + offsetof(struct info, ___fs),
38600 + offsetof(struct info, ___GS),
38601 + offsetof(struct info, ___ss),
38602 + offsetof(struct info, ___ds)
38603 };
38604
38605 #define PM_REG_(x) (*(unsigned short *) \
38606 - (reg_offset_pm[((unsigned)x)] + (u_char *)FPU_info->regs))
38607 + (reg_offset_pm[((unsigned)x)]+(u_char *) FPU_info))
38608
38609 /* Decode the SIB byte. This function assumes mod != 0 */
38610 static int sib(int mod, unsigned long *fpu_eip)
38611 @@ -346,34 +349,34 @@
38612 }
38613 switch (rm) {
38614 case 0:
38615 - address += FPU_info->regs->bx + FPU_info->regs->si;
38616 + address += FPU_info->___ebx + FPU_info->___esi;
38617 break;
38618 case 1:
38619 - address += FPU_info->regs->bx + FPU_info->regs->di;
38620 + address += FPU_info->___ebx + FPU_info->___edi;
38621 break;
38622 case 2:
38623 - address += FPU_info->regs->bp + FPU_info->regs->si;
38624 + address += FPU_info->___ebp + FPU_info->___esi;
38625 if (addr_modes.override.segment == PREFIX_DEFAULT)
38626 addr_modes.override.segment = PREFIX_SS_;
38627 break;
38628 case 3:
38629 - address += FPU_info->regs->bp + FPU_info->regs->di;
38630 + address += FPU_info->___ebp + FPU_info->___edi;
38631 if (addr_modes.override.segment == PREFIX_DEFAULT)
38632 addr_modes.override.segment = PREFIX_SS_;
38633 break;
38634 case 4:
38635 - address += FPU_info->regs->si;
38636 + address += FPU_info->___esi;
38637 break;
38638 case 5:
38639 - address += FPU_info->regs->di;
38640 + address += FPU_info->___edi;
38641 break;
38642 case 6:
38643 - address += FPU_info->regs->bp;
38644 + address += FPU_info->___ebp;
38645 if (addr_modes.override.segment == PREFIX_DEFAULT)
38646 addr_modes.override.segment = PREFIX_SS_;
38647 break;
38648 case 7:
38649 - address += FPU_info->regs->bx;
38650 + address += FPU_info->___ebx;
38651 break;
38652 }
38653
38654 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/fault.c linux-2.6.29-rc3.owrt/arch/x86/mm/fault.c
38655 --- linux-2.6.29.owrt/arch/x86/mm/fault.c 2009-05-10 22:04:41.000000000 +0200
38656 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/fault.c 2009-05-10 23:48:28.000000000 +0200
38657 @@ -603,6 +603,8 @@
38658
38659 si_code = SEGV_MAPERR;
38660
38661 + if (notify_page_fault(regs))
38662 + return;
38663 if (unlikely(kmmio_fault(regs, address)))
38664 return;
38665
38666 @@ -632,9 +634,6 @@
38667 if (spurious_fault(address, error_code))
38668 return;
38669
38670 - /* kprobes don't want to hook the spurious faults. */
38671 - if (notify_page_fault(regs))
38672 - return;
38673 /*
38674 * Don't take the mm semaphore here. If we fixup a prefetch
38675 * fault we could otherwise deadlock.
38676 @@ -642,9 +641,6 @@
38677 goto bad_area_nosemaphore;
38678 }
38679
38680 - /* kprobes don't want to hook the spurious faults. */
38681 - if (notify_page_fault(regs))
38682 - return;
38683
38684 /*
38685 * It's safe to allow irq's after cr2 has been saved and the
38686 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/init_64.c linux-2.6.29-rc3.owrt/arch/x86/mm/init_64.c
38687 --- linux-2.6.29.owrt/arch/x86/mm/init_64.c 2009-05-10 22:04:41.000000000 +0200
38688 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/init_64.c 2009-05-10 23:48:28.000000000 +0200
38689 @@ -714,8 +714,6 @@
38690 pos = start_pfn << PAGE_SHIFT;
38691 end_pfn = ((pos + (PMD_SIZE - 1)) >> PMD_SHIFT)
38692 << (PMD_SHIFT - PAGE_SHIFT);
38693 - if (end_pfn > (end >> PAGE_SHIFT))
38694 - end_pfn = end >> PAGE_SHIFT;
38695 if (start_pfn < end_pfn) {
38696 nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
38697 pos = end_pfn << PAGE_SHIFT;
38698 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/iomap_32.c linux-2.6.29-rc3.owrt/arch/x86/mm/iomap_32.c
38699 --- linux-2.6.29.owrt/arch/x86/mm/iomap_32.c 2009-05-10 22:04:41.000000000 +0200
38700 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/iomap_32.c 2009-05-10 23:48:28.000000000 +0200
38701 @@ -20,17 +20,6 @@
38702 #include <asm/pat.h>
38703 #include <linux/module.h>
38704
38705 -int is_io_mapping_possible(resource_size_t base, unsigned long size)
38706 -{
38707 -#ifndef CONFIG_X86_PAE
38708 - /* There is no way to map greater than 1 << 32 address without PAE */
38709 - if (base + size > 0x100000000ULL)
38710 - return 0;
38711 -#endif
38712 - return 1;
38713 -}
38714 -EXPORT_SYMBOL_GPL(is_io_mapping_possible);
38715 -
38716 /* Map 'pfn' using fixed map 'type' and protections 'prot'
38717 */
38718 void *
38719 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/ioremap.c linux-2.6.29-rc3.owrt/arch/x86/mm/ioremap.c
38720 --- linux-2.6.29.owrt/arch/x86/mm/ioremap.c 2009-05-10 22:04:41.000000000 +0200
38721 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/ioremap.c 2009-05-10 23:48:28.000000000 +0200
38722 @@ -134,6 +134,25 @@
38723 return 0;
38724 }
38725
38726 +int pagerange_is_ram(unsigned long start, unsigned long end)
38727 +{
38728 + int ram_page = 0, not_rampage = 0;
38729 + unsigned long page_nr;
38730 +
38731 + for (page_nr = (start >> PAGE_SHIFT); page_nr < (end >> PAGE_SHIFT);
38732 + ++page_nr) {
38733 + if (page_is_ram(page_nr))
38734 + ram_page = 1;
38735 + else
38736 + not_rampage = 1;
38737 +
38738 + if (ram_page == not_rampage)
38739 + return -1;
38740 + }
38741 +
38742 + return ram_page;
38743 +}
38744 +
38745 /*
38746 * Fix up the linear direct mapping of the kernel to avoid cache attribute
38747 * conflicts.
38748 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/kmmio.c linux-2.6.29-rc3.owrt/arch/x86/mm/kmmio.c
38749 --- linux-2.6.29.owrt/arch/x86/mm/kmmio.c 2009-05-10 22:04:41.000000000 +0200
38750 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/kmmio.c 2009-05-10 23:48:28.000000000 +0200
38751 @@ -32,14 +32,11 @@
38752 struct list_head list;
38753 struct kmmio_fault_page *release_next;
38754 unsigned long page; /* location of the fault page */
38755 - bool old_presence; /* page presence prior to arming */
38756 - bool armed;
38757
38758 /*
38759 * Number of times this page has been registered as a part
38760 * of a probe. If zero, page is disarmed and this may be freed.
38761 - * Used only by writers (RCU) and post_kmmio_handler().
38762 - * Protected by kmmio_lock, when linked into kmmio_page_table.
38763 + * Used only by writers (RCU).
38764 */
38765 int count;
38766 };
38767 @@ -108,85 +105,57 @@
38768 return NULL;
38769 }
38770
38771 -static void set_pmd_presence(pmd_t *pmd, bool present, bool *old)
38772 -{
38773 - pmdval_t v = pmd_val(*pmd);
38774 - *old = !!(v & _PAGE_PRESENT);
38775 - v &= ~_PAGE_PRESENT;
38776 - if (present)
38777 - v |= _PAGE_PRESENT;
38778 - set_pmd(pmd, __pmd(v));
38779 -}
38780 -
38781 -static void set_pte_presence(pte_t *pte, bool present, bool *old)
38782 -{
38783 - pteval_t v = pte_val(*pte);
38784 - *old = !!(v & _PAGE_PRESENT);
38785 - v &= ~_PAGE_PRESENT;
38786 - if (present)
38787 - v |= _PAGE_PRESENT;
38788 - set_pte_atomic(pte, __pte(v));
38789 -}
38790 -
38791 -static int set_page_presence(unsigned long addr, bool present, bool *old)
38792 +static void set_page_present(unsigned long addr, bool present,
38793 + unsigned int *pglevel)
38794 {
38795 + pteval_t pteval;
38796 + pmdval_t pmdval;
38797 unsigned int level;
38798 + pmd_t *pmd;
38799 pte_t *pte = lookup_address(addr, &level);
38800
38801 if (!pte) {
38802 pr_err("kmmio: no pte for page 0x%08lx\n", addr);
38803 - return -1;
38804 + return;
38805 }
38806
38807 + if (pglevel)
38808 + *pglevel = level;
38809 +
38810 switch (level) {
38811 case PG_LEVEL_2M:
38812 - set_pmd_presence((pmd_t *)pte, present, old);
38813 + pmd = (pmd_t *)pte;
38814 + pmdval = pmd_val(*pmd) & ~_PAGE_PRESENT;
38815 + if (present)
38816 + pmdval |= _PAGE_PRESENT;
38817 + set_pmd(pmd, __pmd(pmdval));
38818 break;
38819 +
38820 case PG_LEVEL_4K:
38821 - set_pte_presence(pte, present, old);
38822 + pteval = pte_val(*pte) & ~_PAGE_PRESENT;
38823 + if (present)
38824 + pteval |= _PAGE_PRESENT;
38825 + set_pte_atomic(pte, __pte(pteval));
38826 break;
38827 +
38828 default:
38829 pr_err("kmmio: unexpected page level 0x%x.\n", level);
38830 - return -1;
38831 + return;
38832 }
38833
38834 __flush_tlb_one(addr);
38835 - return 0;
38836 }
38837
38838 -/*
38839 - * Mark the given page as not present. Access to it will trigger a fault.
38840 - *
38841 - * Struct kmmio_fault_page is protected by RCU and kmmio_lock, but the
38842 - * protection is ignored here. RCU read lock is assumed held, so the struct
38843 - * will not disappear unexpectedly. Furthermore, the caller must guarantee,
38844 - * that double arming the same virtual address (page) cannot occur.
38845 - *
38846 - * Double disarming on the other hand is allowed, and may occur when a fault
38847 - * and mmiotrace shutdown happen simultaneously.
38848 - */
38849 -static int arm_kmmio_fault_page(struct kmmio_fault_page *f)
38850 +/** Mark the given page as not present. Access to it will trigger a fault. */
38851 +static void arm_kmmio_fault_page(unsigned long page, unsigned int *pglevel)
38852 {
38853 - int ret;
38854 - WARN_ONCE(f->armed, KERN_ERR "kmmio page already armed.\n");
38855 - if (f->armed) {
38856 - pr_warning("kmmio double-arm: page 0x%08lx, ref %d, old %d\n",
38857 - f->page, f->count, f->old_presence);
38858 - }
38859 - ret = set_page_presence(f->page, false, &f->old_presence);
38860 - WARN_ONCE(ret < 0, KERN_ERR "kmmio arming 0x%08lx failed.\n", f->page);
38861 - f->armed = true;
38862 - return ret;
38863 + set_page_present(page & PAGE_MASK, false, pglevel);
38864 }
38865
38866 -/** Restore the given page to saved presence state. */
38867 -static void disarm_kmmio_fault_page(struct kmmio_fault_page *f)
38868 +/** Mark the given page as present. */
38869 +static void disarm_kmmio_fault_page(unsigned long page, unsigned int *pglevel)
38870 {
38871 - bool tmp;
38872 - int ret = set_page_presence(f->page, f->old_presence, &tmp);
38873 - WARN_ONCE(ret < 0,
38874 - KERN_ERR "kmmio disarming 0x%08lx failed.\n", f->page);
38875 - f->armed = false;
38876 + set_page_present(page & PAGE_MASK, true, pglevel);
38877 }
38878
38879 /*
38880 @@ -233,32 +202,28 @@
38881
38882 ctx = &get_cpu_var(kmmio_ctx);
38883 if (ctx->active) {
38884 + disarm_kmmio_fault_page(faultpage->page, NULL);
38885 if (addr == ctx->addr) {
38886 /*
38887 - * A second fault on the same page means some other
38888 - * condition needs handling by do_page_fault(), the
38889 - * page really not being present is the most common.
38890 + * On SMP we sometimes get recursive probe hits on the
38891 + * same address. Context is already saved, fall out.
38892 */
38893 - pr_debug("kmmio: secondary hit for 0x%08lx CPU %d.\n",
38894 - addr, smp_processor_id());
38895 -
38896 - if (!faultpage->old_presence)
38897 - pr_info("kmmio: unexpected secondary hit for "
38898 - "address 0x%08lx on CPU %d.\n", addr,
38899 - smp_processor_id());
38900 - } else {
38901 - /*
38902 - * Prevent overwriting already in-flight context.
38903 - * This should not happen, let's hope disarming at
38904 - * least prevents a panic.
38905 - */
38906 - pr_emerg("kmmio: recursive probe hit on CPU %d, "
38907 + pr_debug("kmmio: duplicate probe hit on CPU %d, for "
38908 + "address 0x%08lx.\n",
38909 + smp_processor_id(), addr);
38910 + ret = 1;
38911 + goto no_kmmio_ctx;
38912 + }
38913 + /*
38914 + * Prevent overwriting already in-flight context.
38915 + * This should not happen, let's hope disarming at least
38916 + * prevents a panic.
38917 + */
38918 + pr_emerg("kmmio: recursive probe hit on CPU %d, "
38919 "for address 0x%08lx. Ignoring.\n",
38920 smp_processor_id(), addr);
38921 - pr_emerg("kmmio: previous hit was at 0x%08lx.\n",
38922 - ctx->addr);
38923 - disarm_kmmio_fault_page(faultpage);
38924 - }
38925 + pr_emerg("kmmio: previous hit was at 0x%08lx.\n",
38926 + ctx->addr);
38927 goto no_kmmio_ctx;
38928 }
38929 ctx->active++;
38930 @@ -279,7 +244,7 @@
38931 regs->flags &= ~X86_EFLAGS_IF;
38932
38933 /* Now we set present bit in PTE and single step. */
38934 - disarm_kmmio_fault_page(ctx->fpage);
38935 + disarm_kmmio_fault_page(ctx->fpage->page, NULL);
38936
38937 /*
38938 * If another cpu accesses the same page while we are stepping,
38939 @@ -310,7 +275,7 @@
38940 struct kmmio_context *ctx = &get_cpu_var(kmmio_ctx);
38941
38942 if (!ctx->active) {
38943 - pr_warning("kmmio: spurious debug trap on CPU %d.\n",
38944 + pr_debug("kmmio: spurious debug trap on CPU %d.\n",
38945 smp_processor_id());
38946 goto out;
38947 }
38948 @@ -318,11 +283,7 @@
38949 if (ctx->probe && ctx->probe->post_handler)
38950 ctx->probe->post_handler(ctx->probe, condition, regs);
38951
38952 - /* Prevent racing against release_kmmio_fault_page(). */
38953 - spin_lock(&kmmio_lock);
38954 - if (ctx->fpage->count)
38955 - arm_kmmio_fault_page(ctx->fpage);
38956 - spin_unlock(&kmmio_lock);
38957 + arm_kmmio_fault_page(ctx->fpage->page, NULL);
38958
38959 regs->flags &= ~X86_EFLAGS_TF;
38960 regs->flags |= ctx->saved_flags;
38961 @@ -354,25 +315,21 @@
38962 f = get_kmmio_fault_page(page);
38963 if (f) {
38964 if (!f->count)
38965 - arm_kmmio_fault_page(f);
38966 + arm_kmmio_fault_page(f->page, NULL);
38967 f->count++;
38968 return 0;
38969 }
38970
38971 - f = kzalloc(sizeof(*f), GFP_ATOMIC);
38972 + f = kmalloc(sizeof(*f), GFP_ATOMIC);
38973 if (!f)
38974 return -1;
38975
38976 f->count = 1;
38977 f->page = page;
38978 -
38979 - if (arm_kmmio_fault_page(f)) {
38980 - kfree(f);
38981 - return -1;
38982 - }
38983 -
38984 list_add_rcu(&f->list, kmmio_page_list(f->page));
38985
38986 + arm_kmmio_fault_page(f->page, NULL);
38987 +
38988 return 0;
38989 }
38990
38991 @@ -390,7 +347,7 @@
38992 f->count--;
38993 BUG_ON(f->count < 0);
38994 if (!f->count) {
38995 - disarm_kmmio_fault_page(f);
38996 + disarm_kmmio_fault_page(f->page, NULL);
38997 f->release_next = *release_list;
38998 *release_list = f;
38999 }
39000 @@ -451,24 +408,23 @@
39001
39002 static void remove_kmmio_fault_pages(struct rcu_head *head)
39003 {
39004 - struct kmmio_delayed_release *dr =
39005 - container_of(head, struct kmmio_delayed_release, rcu);
39006 + struct kmmio_delayed_release *dr = container_of(
39007 + head,
39008 + struct kmmio_delayed_release,
39009 + rcu);
39010 struct kmmio_fault_page *p = dr->release_list;
39011 struct kmmio_fault_page **prevp = &dr->release_list;
39012 unsigned long flags;
39013 -
39014 spin_lock_irqsave(&kmmio_lock, flags);
39015 while (p) {
39016 - if (!p->count) {
39017 + if (!p->count)
39018 list_del_rcu(&p->list);
39019 - prevp = &p->release_next;
39020 - } else {
39021 + else
39022 *prevp = p->release_next;
39023 - }
39024 + prevp = &p->release_next;
39025 p = p->release_next;
39026 }
39027 spin_unlock_irqrestore(&kmmio_lock, flags);
39028 -
39029 /* This is the real RCU destroy call. */
39030 call_rcu(&dr->rcu, rcu_free_kmmio_fault_pages);
39031 }
39032 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/numa_64.c linux-2.6.29-rc3.owrt/arch/x86/mm/numa_64.c
39033 --- linux-2.6.29.owrt/arch/x86/mm/numa_64.c 2009-05-10 22:04:41.000000000 +0200
39034 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/numa_64.c 2009-05-10 23:48:28.000000000 +0200
39035 @@ -145,7 +145,7 @@
39036 return shift;
39037 }
39038
39039 -int __meminit __early_pfn_to_nid(unsigned long pfn)
39040 +int early_pfn_to_nid(unsigned long pfn)
39041 {
39042 return phys_to_nid(pfn << PAGE_SHIFT);
39043 }
39044 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/pageattr.c linux-2.6.29-rc3.owrt/arch/x86/mm/pageattr.c
39045 --- linux-2.6.29.owrt/arch/x86/mm/pageattr.c 2009-05-10 22:04:41.000000000 +0200
39046 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/pageattr.c 2009-05-10 23:48:28.000000000 +0200
39047 @@ -508,24 +508,18 @@
39048 #endif
39049
39050 /*
39051 - * Install the new, split up pagetable.
39052 + * Install the new, split up pagetable. Important details here:
39053 *
39054 - * We use the standard kernel pagetable protections for the new
39055 - * pagetable protections, the actual ptes set above control the
39056 - * primary protection behavior:
39057 - */
39058 - __set_pmd_pte(kpte, address, mk_pte(base, __pgprot(_KERNPG_TABLE)));
39059 -
39060 - /*
39061 - * Intel Atom errata AAH41 workaround.
39062 + * On Intel the NX bit of all levels must be cleared to make a
39063 + * page executable. See section 4.13.2 of Intel 64 and IA-32
39064 + * Architectures Software Developer's Manual).
39065 *
39066 - * The real fix should be in hw or in a microcode update, but
39067 - * we also probabilistically try to reduce the window of having
39068 - * a large TLB mixed with 4K TLBs while instruction fetches are
39069 - * going on.
39070 + * Mark the entry present. The current mapping might be
39071 + * set to not present, which we preserved above.
39072 */
39073 - __flush_tlb_all();
39074 -
39075 + ref_prot = pte_pgprot(pte_mkexec(pte_clrhuge(*kpte)));
39076 + pgprot_val(ref_prot) |= _PAGE_PRESENT;
39077 + __set_pmd_pte(kpte, address, mk_pte(base, ref_prot));
39078 base = NULL;
39079
39080 out_unlock:
39081 @@ -581,6 +575,7 @@
39082 address = cpa->vaddr[cpa->curpage];
39083 else
39084 address = *cpa->vaddr;
39085 +
39086 repeat:
39087 kpte = lookup_address(address, &level);
39088 if (!kpte)
39089 @@ -817,13 +812,6 @@
39090
39091 vm_unmap_aliases();
39092
39093 - /*
39094 - * If we're called with lazy mmu updates enabled, the
39095 - * in-memory pte state may be stale. Flush pending updates to
39096 - * bring them up to date.
39097 - */
39098 - arch_flush_lazy_mmu_mode();
39099 -
39100 cpa.vaddr = addr;
39101 cpa.numpages = numpages;
39102 cpa.mask_set = mask_set;
39103 @@ -866,13 +854,6 @@
39104 } else
39105 cpa_flush_all(cache);
39106
39107 - /*
39108 - * If we've been called with lazy mmu updates enabled, then
39109 - * make sure that everything gets flushed out before we
39110 - * return.
39111 - */
39112 - arch_flush_lazy_mmu_mode();
39113 -
39114 out:
39115 return ret;
39116 }
39117 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/pat.c linux-2.6.29-rc3.owrt/arch/x86/mm/pat.c
39118 --- linux-2.6.29.owrt/arch/x86/mm/pat.c 2009-05-10 22:04:41.000000000 +0200
39119 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/pat.c 2009-05-10 23:48:28.000000000 +0200
39120 @@ -11,7 +11,6 @@
39121 #include <linux/bootmem.h>
39122 #include <linux/debugfs.h>
39123 #include <linux/kernel.h>
39124 -#include <linux/module.h>
39125 #include <linux/gfp.h>
39126 #include <linux/mm.h>
39127 #include <linux/fs.h>
39128 @@ -212,33 +211,6 @@
39129 static struct memtype *cached_entry;
39130 static u64 cached_start;
39131
39132 -static int pat_pagerange_is_ram(unsigned long start, unsigned long end)
39133 -{
39134 - int ram_page = 0, not_rampage = 0;
39135 - unsigned long page_nr;
39136 -
39137 - for (page_nr = (start >> PAGE_SHIFT); page_nr < (end >> PAGE_SHIFT);
39138 - ++page_nr) {
39139 - /*
39140 - * For legacy reasons, physical address range in the legacy ISA
39141 - * region is tracked as non-RAM. This will allow users of
39142 - * /dev/mem to map portions of legacy ISA region, even when
39143 - * some of those portions are listed(or not even listed) with
39144 - * different e820 types(RAM/reserved/..)
39145 - */
39146 - if (page_nr >= (ISA_END_ADDRESS >> PAGE_SHIFT) &&
39147 - page_is_ram(page_nr))
39148 - ram_page = 1;
39149 - else
39150 - not_rampage = 1;
39151 -
39152 - if (ram_page == not_rampage)
39153 - return -1;
39154 - }
39155 -
39156 - return ram_page;
39157 -}
39158 -
39159 /*
39160 * For RAM pages, mark the pages as non WB memory type using
39161 * PageNonWB (PG_arch_1). We allow only one set_memory_uc() or
39162 @@ -364,12 +336,20 @@
39163 if (new_type)
39164 *new_type = actual_type;
39165
39166 - is_range_ram = pat_pagerange_is_ram(start, end);
39167 - if (is_range_ram == 1)
39168 - return reserve_ram_pages_type(start, end, req_type,
39169 - new_type);
39170 - else if (is_range_ram < 0)
39171 - return -EINVAL;
39172 + /*
39173 + * For legacy reasons, some parts of the physical address range in the
39174 + * legacy 1MB region is treated as non-RAM (even when listed as RAM in
39175 + * the e820 tables). So we will track the memory attributes of this
39176 + * legacy 1MB region using the linear memtype_list always.
39177 + */
39178 + if (end >= ISA_END_ADDRESS) {
39179 + is_range_ram = pagerange_is_ram(start, end);
39180 + if (is_range_ram == 1)
39181 + return reserve_ram_pages_type(start, end, req_type,
39182 + new_type);
39183 + else if (is_range_ram < 0)
39184 + return -EINVAL;
39185 + }
39186
39187 new = kmalloc(sizeof(struct memtype), GFP_KERNEL);
39188 if (!new)
39189 @@ -466,11 +446,19 @@
39190 if (is_ISA_range(start, end - 1))
39191 return 0;
39192
39193 - is_range_ram = pat_pagerange_is_ram(start, end);
39194 - if (is_range_ram == 1)
39195 - return free_ram_pages_type(start, end);
39196 - else if (is_range_ram < 0)
39197 - return -EINVAL;
39198 + /*
39199 + * For legacy reasons, some parts of the physical address range in the
39200 + * legacy 1MB region is treated as non-RAM (even when listed as RAM in
39201 + * the e820 tables). So we will track the memory attributes of this
39202 + * legacy 1MB region using the linear memtype_list always.
39203 + */
39204 + if (end >= ISA_END_ADDRESS) {
39205 + is_range_ram = pagerange_is_ram(start, end);
39206 + if (is_range_ram == 1)
39207 + return free_ram_pages_type(start, end);
39208 + else if (is_range_ram < 0)
39209 + return -EINVAL;
39210 + }
39211
39212 spin_lock(&memtype_lock);
39213 list_for_each_entry(entry, &memtype_list, nd) {
39214 @@ -638,13 +626,17 @@
39215 unsigned long flags;
39216 unsigned long want_flags = (pgprot_val(*vma_prot) & _PAGE_CACHE_MASK);
39217
39218 - is_ram = pat_pagerange_is_ram(paddr, paddr + size);
39219 + is_ram = pagerange_is_ram(paddr, paddr + size);
39220
39221 - /*
39222 - * reserve_pfn_range() doesn't support RAM pages.
39223 - */
39224 - if (is_ram != 0)
39225 - return -EINVAL;
39226 + if (is_ram != 0) {
39227 + /*
39228 + * For mapping RAM pages, drivers need to call
39229 + * set_memory_[uc|wc|wb] directly, for reserve and free, before
39230 + * setting up the PTE.
39231 + */
39232 + WARN_ON_ONCE(1);
39233 + return 0;
39234 + }
39235
39236 ret = reserve_memtype(paddr, paddr + size, want_flags, &flags);
39237 if (ret)
39238 @@ -701,7 +693,7 @@
39239 {
39240 int is_ram;
39241
39242 - is_ram = pat_pagerange_is_ram(paddr, paddr + size);
39243 + is_ram = pagerange_is_ram(paddr, paddr + size);
39244 if (is_ram == 0)
39245 free_memtype(paddr, paddr + size);
39246 }
39247 @@ -869,7 +861,6 @@
39248 else
39249 return pgprot_noncached(prot);
39250 }
39251 -EXPORT_SYMBOL_GPL(pgprot_writecombine);
39252
39253 #if defined(CONFIG_DEBUG_FS) && defined(CONFIG_X86_PAT)
39254
39255 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/mm/testmmiotrace.c linux-2.6.29-rc3.owrt/arch/x86/mm/testmmiotrace.c
39256 --- linux-2.6.29.owrt/arch/x86/mm/testmmiotrace.c 2009-05-10 22:04:41.000000000 +0200
39257 +++ linux-2.6.29-rc3.owrt/arch/x86/mm/testmmiotrace.c 2009-05-10 23:48:28.000000000 +0200
39258 @@ -1,5 +1,5 @@
39259 /*
39260 - * Written by Pekka Paalanen, 2008-2009 <pq@iki.fi>
39261 + * Written by Pekka Paalanen, 2008 <pq@iki.fi>
39262 */
39263 #include <linux/module.h>
39264 #include <linux/io.h>
39265 @@ -9,74 +9,35 @@
39266
39267 static unsigned long mmio_address;
39268 module_param(mmio_address, ulong, 0);
39269 -MODULE_PARM_DESC(mmio_address, " Start address of the mapping of 16 kB "
39270 - "(or 8 MB if read_far is non-zero).");
39271 -
39272 -static unsigned long read_far = 0x400100;
39273 -module_param(read_far, ulong, 0);
39274 -MODULE_PARM_DESC(read_far, " Offset of a 32-bit read within 8 MB "
39275 - "(default: 0x400100).");
39276 -
39277 -static unsigned v16(unsigned i)
39278 -{
39279 - return i * 12 + 7;
39280 -}
39281 -
39282 -static unsigned v32(unsigned i)
39283 -{
39284 - return i * 212371 + 13;
39285 -}
39286 +MODULE_PARM_DESC(mmio_address, "Start address of the mapping of 16 kB.");
39287
39288 static void do_write_test(void __iomem *p)
39289 {
39290 unsigned int i;
39291 - pr_info(MODULE_NAME ": write test.\n");
39292 mmiotrace_printk("Write test.\n");
39293 -
39294 for (i = 0; i < 256; i++)
39295 iowrite8(i, p + i);
39296 -
39297 for (i = 1024; i < (5 * 1024); i += 2)
39298 - iowrite16(v16(i), p + i);
39299 -
39300 + iowrite16(i * 12 + 7, p + i);
39301 for (i = (5 * 1024); i < (16 * 1024); i += 4)
39302 - iowrite32(v32(i), p + i);
39303 + iowrite32(i * 212371 + 13, p + i);
39304 }
39305
39306 static void do_read_test(void __iomem *p)
39307 {
39308 unsigned int i;
39309 - unsigned errs[3] = { 0 };
39310 - pr_info(MODULE_NAME ": read test.\n");
39311 mmiotrace_printk("Read test.\n");
39312 -
39313 for (i = 0; i < 256; i++)
39314 - if (ioread8(p + i) != i)
39315 - ++errs[0];
39316 -
39317 + ioread8(p + i);
39318 for (i = 1024; i < (5 * 1024); i += 2)
39319 - if (ioread16(p + i) != v16(i))
39320 - ++errs[1];
39321 -
39322 + ioread16(p + i);
39323 for (i = (5 * 1024); i < (16 * 1024); i += 4)
39324 - if (ioread32(p + i) != v32(i))
39325 - ++errs[2];
39326 -
39327 - mmiotrace_printk("Read errors: 8-bit %d, 16-bit %d, 32-bit %d.\n",
39328 - errs[0], errs[1], errs[2]);
39329 + ioread32(p + i);
39330 }
39331
39332 -static void do_read_far_test(void __iomem *p)
39333 +static void do_test(void)
39334 {
39335 - pr_info(MODULE_NAME ": read far test.\n");
39336 - mmiotrace_printk("Read far test.\n");
39337 -
39338 - ioread32(p + read_far);
39339 -}
39340 -
39341 -static void do_test(unsigned long size)
39342 -{
39343 - void __iomem *p = ioremap_nocache(mmio_address, size);
39344 + void __iomem *p = ioremap_nocache(mmio_address, 0x4000);
39345 if (!p) {
39346 pr_err(MODULE_NAME ": could not ioremap, aborting.\n");
39347 return;
39348 @@ -84,15 +45,11 @@
39349 mmiotrace_printk("ioremap returned %p.\n", p);
39350 do_write_test(p);
39351 do_read_test(p);
39352 - if (read_far && read_far < size - 4)
39353 - do_read_far_test(p);
39354 iounmap(p);
39355 }
39356
39357 static int __init init(void)
39358 {
39359 - unsigned long size = (read_far) ? (8 << 20) : (16 << 10);
39360 -
39361 if (mmio_address == 0) {
39362 pr_err(MODULE_NAME ": you have to use the module argument "
39363 "mmio_address.\n");
39364 @@ -101,11 +58,10 @@
39365 return -ENXIO;
39366 }
39367
39368 - pr_warning(MODULE_NAME ": WARNING: mapping %lu kB @ 0x%08lx in PCI "
39369 - "address space, and writing 16 kB of rubbish in there.\n",
39370 - size >> 10, mmio_address);
39371 - do_test(size);
39372 - pr_info(MODULE_NAME ": All done.\n");
39373 + pr_warning(MODULE_NAME ": WARNING: mapping 16 kB @ 0x%08lx "
39374 + "in PCI address space, and writing "
39375 + "rubbish in there.\n", mmio_address);
39376 + do_test();
39377 return 0;
39378 }
39379
39380 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/oprofile/op_model_ppro.c linux-2.6.29-rc3.owrt/arch/x86/oprofile/op_model_ppro.c
39381 --- linux-2.6.29.owrt/arch/x86/oprofile/op_model_ppro.c 2009-05-10 22:04:41.000000000 +0200
39382 +++ linux-2.6.29-rc3.owrt/arch/x86/oprofile/op_model_ppro.c 2009-05-10 23:48:28.000000000 +0200
39383 @@ -78,18 +78,8 @@
39384 if (cpu_has_arch_perfmon) {
39385 union cpuid10_eax eax;
39386 eax.full = cpuid_eax(0xa);
39387 -
39388 - /*
39389 - * For Core2 (family 6, model 15), don't reset the
39390 - * counter width:
39391 - */
39392 - if (!(eax.split.version_id == 0 &&
39393 - current_cpu_data.x86 == 6 &&
39394 - current_cpu_data.x86_model == 15)) {
39395 -
39396 - if (counter_width < eax.split.bit_width)
39397 - counter_width = eax.split.bit_width;
39398 - }
39399 + if (counter_width < eax.split.bit_width)
39400 + counter_width = eax.split.bit_width;
39401 }
39402
39403 /* clear all counters */
39404 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/pci/irq.c linux-2.6.29-rc3.owrt/arch/x86/pci/irq.c
39405 --- linux-2.6.29.owrt/arch/x86/pci/irq.c 2009-05-10 22:04:41.000000000 +0200
39406 +++ linux-2.6.29-rc3.owrt/arch/x86/pci/irq.c 2009-05-10 23:48:28.000000000 +0200
39407 @@ -572,7 +572,6 @@
39408 case PCI_DEVICE_ID_INTEL_ICH7_1:
39409 case PCI_DEVICE_ID_INTEL_ICH7_30:
39410 case PCI_DEVICE_ID_INTEL_ICH7_31:
39411 - case PCI_DEVICE_ID_INTEL_TGP_LPC:
39412 case PCI_DEVICE_ID_INTEL_ESB2_0:
39413 case PCI_DEVICE_ID_INTEL_ICH8_0:
39414 case PCI_DEVICE_ID_INTEL_ICH8_1:
39415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/xen/enlighten.c linux-2.6.29-rc3.owrt/arch/x86/xen/enlighten.c
39416 --- linux-2.6.29.owrt/arch/x86/xen/enlighten.c 2009-05-10 22:04:41.000000000 +0200
39417 +++ linux-2.6.29-rc3.owrt/arch/x86/xen/enlighten.c 2009-05-10 23:48:28.000000000 +0200
39418 @@ -1672,9 +1672,6 @@
39419 possible map and a non-dummy shared_info. */
39420 per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0];
39421
39422 - local_irq_disable();
39423 - early_boot_irqs_off();
39424 -
39425 xen_raw_console_write("mapping kernel into physical memory\n");
39426 pgd = xen_setup_kernel_pagetable(pgd, xen_start_info->nr_pages);
39427
39428 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/x86/xen/multicalls.h linux-2.6.29-rc3.owrt/arch/x86/xen/multicalls.h
39429 --- linux-2.6.29.owrt/arch/x86/xen/multicalls.h 2009-05-10 22:04:41.000000000 +0200
39430 +++ linux-2.6.29-rc3.owrt/arch/x86/xen/multicalls.h 2009-05-10 23:48:28.000000000 +0200
39431 @@ -19,10 +19,8 @@
39432 paired with xen_mc_issue() */
39433 static inline void xen_mc_batch(void)
39434 {
39435 - unsigned long flags;
39436 /* need to disable interrupts until this entry is complete */
39437 - local_irq_save(flags);
39438 - __get_cpu_var(xen_mc_irq_flags) = flags;
39439 + local_irq_save(__get_cpu_var(xen_mc_irq_flags));
39440 }
39441
39442 static inline struct multicall_space xen_mc_entry(size_t args)
39443 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/xtensa/Kconfig linux-2.6.29-rc3.owrt/arch/xtensa/Kconfig
39444 --- linux-2.6.29.owrt/arch/xtensa/Kconfig 2009-05-10 22:04:41.000000000 +0200
39445 +++ linux-2.6.29-rc3.owrt/arch/xtensa/Kconfig 2009-05-10 23:48:28.000000000 +0200
39446 @@ -103,6 +103,9 @@
39447 help
39448 Can we use information of configuration file?
39449
39450 +config HIGHMEM
39451 + bool "High memory support"
39452 +
39453 endmenu
39454
39455 menu "Platform options"
39456 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/xtensa/kernel/setup.c linux-2.6.29-rc3.owrt/arch/xtensa/kernel/setup.c
39457 --- linux-2.6.29.owrt/arch/xtensa/kernel/setup.c 2009-05-10 22:04:41.000000000 +0200
39458 +++ linux-2.6.29-rc3.owrt/arch/xtensa/kernel/setup.c 2009-05-10 23:48:28.000000000 +0200
39459 @@ -44,8 +44,6 @@
39460 #include <asm/setup.h>
39461 #include <asm/param.h>
39462
39463 -#include <platform/hardware.h>
39464 -
39465 #if defined(CONFIG_VGA_CONSOLE) || defined(CONFIG_DUMMY_CONSOLE)
39466 struct screen_info screen_info = { 0, 24, 0, 0, 0, 80, 0, 0, 0, 24, 1, 16};
39467 #endif
39468 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/xtensa/kernel/traps.c linux-2.6.29-rc3.owrt/arch/xtensa/kernel/traps.c
39469 --- linux-2.6.29.owrt/arch/xtensa/kernel/traps.c 2009-05-10 22:04:41.000000000 +0200
39470 +++ linux-2.6.29-rc3.owrt/arch/xtensa/kernel/traps.c 2009-05-10 23:48:28.000000000 +0200
39471 @@ -30,7 +30,6 @@
39472 #include <linux/stringify.h>
39473 #include <linux/kallsyms.h>
39474 #include <linux/delay.h>
39475 -#include <linux/hardirq.h>
39476
39477 #include <asm/ptrace.h>
39478 #include <asm/timex.h>
39479 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/xtensa/mm/fault.c linux-2.6.29-rc3.owrt/arch/xtensa/mm/fault.c
39480 --- linux-2.6.29.owrt/arch/xtensa/mm/fault.c 2009-05-10 22:04:41.000000000 +0200
39481 +++ linux-2.6.29-rc3.owrt/arch/xtensa/mm/fault.c 2009-05-10 23:48:28.000000000 +0200
39482 @@ -14,7 +14,6 @@
39483
39484 #include <linux/mm.h>
39485 #include <linux/module.h>
39486 -#include <linux/hardirq.h>
39487 #include <asm/mmu_context.h>
39488 #include <asm/cacheflush.h>
39489 #include <asm/hardirq.h>
39490 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/arch/xtensa/platforms/iss/console.c linux-2.6.29-rc3.owrt/arch/xtensa/platforms/iss/console.c
39491 --- linux-2.6.29.owrt/arch/xtensa/platforms/iss/console.c 2009-05-10 22:04:41.000000000 +0200
39492 +++ linux-2.6.29-rc3.owrt/arch/xtensa/platforms/iss/console.c 2009-05-10 23:48:28.000000000 +0200
39493 @@ -140,14 +140,16 @@
39494 }
39495
39496
39497 -static int rs_put_char(struct tty_struct *tty, unsigned char ch)
39498 +static void rs_put_char(struct tty_struct *tty, unsigned char ch)
39499 {
39500 char buf[2];
39501
39502 + if (!tty)
39503 + return;
39504 +
39505 buf[0] = ch;
39506 buf[1] = '\0'; /* Is this NULL necessary? */
39507 __simc (SYS_write, 1, (unsigned long) buf, 1, 0, 0);
39508 - return 1;
39509 }
39510
39511 static void rs_flush_chars(struct tty_struct *tty)
39512 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk-barrier.c linux-2.6.29-rc3.owrt/block/blk-barrier.c
39513 --- linux-2.6.29.owrt/block/blk-barrier.c 2009-05-10 22:04:39.000000000 +0200
39514 +++ linux-2.6.29-rc3.owrt/block/blk-barrier.c 2009-05-10 23:48:28.000000000 +0200
39515 @@ -302,7 +302,7 @@
39516 * Description:
39517 * Issue a flush for the block device in question. Caller can supply
39518 * room for storing the error offset in case of a flush error, if they
39519 - * wish to.
39520 + * wish to. Caller must run wait_for_completion() on its own.
39521 */
39522 int blkdev_issue_flush(struct block_device *bdev, sector_t *error_sector)
39523 {
39524 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk-core.c linux-2.6.29-rc3.owrt/block/blk-core.c
39525 --- linux-2.6.29.owrt/block/blk-core.c 2009-05-10 22:04:39.000000000 +0200
39526 +++ linux-2.6.29-rc3.owrt/block/blk-core.c 2009-05-10 23:48:28.000000000 +0200
39527 @@ -64,12 +64,11 @@
39528
39529 static void drive_stat_acct(struct request *rq, int new_io)
39530 {
39531 - struct gendisk *disk = rq->rq_disk;
39532 struct hd_struct *part;
39533 int rw = rq_data_dir(rq);
39534 int cpu;
39535
39536 - if (!blk_fs_request(rq) || !disk || !blk_do_io_stat(disk->queue))
39537 + if (!blk_fs_request(rq) || !rq->rq_disk)
39538 return;
39539
39540 cpu = part_stat_lock();
39541 @@ -600,7 +599,8 @@
39542 q->request_fn = rfn;
39543 q->prep_rq_fn = NULL;
39544 q->unplug_fn = generic_unplug_device;
39545 - q->queue_flags = QUEUE_FLAG_DEFAULT;
39546 + q->queue_flags = (1 << QUEUE_FLAG_CLUSTER |
39547 + 1 << QUEUE_FLAG_STACKABLE);
39548 q->queue_lock = lock;
39549
39550 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);
39551 @@ -1125,8 +1125,6 @@
39552
39553 if (bio_sync(bio))
39554 req->cmd_flags |= REQ_RW_SYNC;
39555 - if (bio_unplug(bio))
39556 - req->cmd_flags |= REQ_UNPLUG;
39557 if (bio_rw_meta(bio))
39558 req->cmd_flags |= REQ_RW_META;
39559
39560 @@ -1143,7 +1141,6 @@
39561 int el_ret, nr_sectors;
39562 const unsigned short prio = bio_prio(bio);
39563 const int sync = bio_sync(bio);
39564 - const int unplug = bio_unplug(bio);
39565 int rw_flags;
39566
39567 nr_sectors = bio_sectors(bio);
39568 @@ -1247,7 +1244,7 @@
39569 blk_plug_device(q);
39570 add_request(q, req);
39571 out:
39572 - if (unplug || blk_queue_nonrot(q))
39573 + if (sync || blk_queue_nonrot(q))
39574 __generic_unplug_device(q);
39575 spin_unlock_irq(q->queue_lock);
39576 return 0;
39577 @@ -1451,11 +1448,6 @@
39578 err = -EOPNOTSUPP;
39579 goto end_io;
39580 }
39581 - if (bio_barrier(bio) && bio_has_data(bio) &&
39582 - (q->next_ordered == QUEUE_ORDERED_NONE)) {
39583 - err = -EOPNOTSUPP;
39584 - goto end_io;
39585 - }
39586
39587 ret = q->make_request_fn(q, bio);
39588 } while (ret);
39589 @@ -1663,55 +1655,6 @@
39590 }
39591 EXPORT_SYMBOL(blkdev_dequeue_request);
39592
39593 -static void blk_account_io_completion(struct request *req, unsigned int bytes)
39594 -{
39595 - struct gendisk *disk = req->rq_disk;
39596 -
39597 - if (!disk || !blk_do_io_stat(disk->queue))
39598 - return;
39599 -
39600 - if (blk_fs_request(req)) {
39601 - const int rw = rq_data_dir(req);
39602 - struct hd_struct *part;
39603 - int cpu;
39604 -
39605 - cpu = part_stat_lock();
39606 - part = disk_map_sector_rcu(req->rq_disk, req->sector);
39607 - part_stat_add(cpu, part, sectors[rw], bytes >> 9);
39608 - part_stat_unlock();
39609 - }
39610 -}
39611 -
39612 -static void blk_account_io_done(struct request *req)
39613 -{
39614 - struct gendisk *disk = req->rq_disk;
39615 -
39616 - if (!disk || !blk_do_io_stat(disk->queue))
39617 - return;
39618 -
39619 - /*
39620 - * Account IO completion. bar_rq isn't accounted as a normal
39621 - * IO on queueing nor completion. Accounting the containing
39622 - * request is enough.
39623 - */
39624 - if (blk_fs_request(req) && req != &req->q->bar_rq) {
39625 - unsigned long duration = jiffies - req->start_time;
39626 - const int rw = rq_data_dir(req);
39627 - struct hd_struct *part;
39628 - int cpu;
39629 -
39630 - cpu = part_stat_lock();
39631 - part = disk_map_sector_rcu(disk, req->sector);
39632 -
39633 - part_stat_inc(cpu, part, ios[rw]);
39634 - part_stat_add(cpu, part, ticks[rw], duration);
39635 - part_round_stats(cpu, part);
39636 - part_dec_in_flight(part);
39637 -
39638 - part_stat_unlock();
39639 - }
39640 -}
39641 -
39642 /**
39643 * __end_that_request_first - end I/O on a request
39644 * @req: the request being processed
39645 @@ -1747,7 +1690,16 @@
39646 (unsigned long long)req->sector);
39647 }
39648
39649 - blk_account_io_completion(req, nr_bytes);
39650 + if (blk_fs_request(req) && req->rq_disk) {
39651 + const int rw = rq_data_dir(req);
39652 + struct hd_struct *part;
39653 + int cpu;
39654 +
39655 + cpu = part_stat_lock();
39656 + part = disk_map_sector_rcu(req->rq_disk, req->sector);
39657 + part_stat_add(cpu, part, sectors[rw], nr_bytes >> 9);
39658 + part_stat_unlock();
39659 + }
39660
39661 total_bytes = bio_nbytes = 0;
39662 while ((bio = req->bio) != NULL) {
39663 @@ -1827,6 +1779,8 @@
39664 */
39665 static void end_that_request_last(struct request *req, int error)
39666 {
39667 + struct gendisk *disk = req->rq_disk;
39668 +
39669 if (blk_rq_tagged(req))
39670 blk_queue_end_tag(req->q, req);
39671
39672 @@ -1838,7 +1792,27 @@
39673
39674 blk_delete_timer(req);
39675
39676 - blk_account_io_done(req);
39677 + /*
39678 + * Account IO completion. bar_rq isn't accounted as a normal
39679 + * IO on queueing nor completion. Accounting the containing
39680 + * request is enough.
39681 + */
39682 + if (disk && blk_fs_request(req) && req != &req->q->bar_rq) {
39683 + unsigned long duration = jiffies - req->start_time;
39684 + const int rw = rq_data_dir(req);
39685 + struct hd_struct *part;
39686 + int cpu;
39687 +
39688 + cpu = part_stat_lock();
39689 + part = disk_map_sector_rcu(disk, req->sector);
39690 +
39691 + part_stat_inc(cpu, part, ios[rw]);
39692 + part_stat_add(cpu, part, ticks[rw], duration);
39693 + part_round_stats(cpu, part);
39694 + part_dec_in_flight(part);
39695 +
39696 + part_stat_unlock();
39697 + }
39698
39699 if (req->end_io)
39700 req->end_io(req, error);
39701 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk.h linux-2.6.29-rc3.owrt/block/blk.h
39702 --- linux-2.6.29.owrt/block/blk.h 2009-05-10 22:04:39.000000000 +0200
39703 +++ linux-2.6.29-rc3.owrt/block/blk.h 2009-05-10 23:48:28.000000000 +0200
39704 @@ -108,12 +108,4 @@
39705 #endif
39706 }
39707
39708 -static inline int blk_do_io_stat(struct request_queue *q)
39709 -{
39710 - if (q)
39711 - return blk_queue_io_stat(q);
39712 -
39713 - return 0;
39714 -}
39715 -
39716 #endif
39717 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk-integrity.c linux-2.6.29-rc3.owrt/block/blk-integrity.c
39718 --- linux-2.6.29.owrt/block/blk-integrity.c 2009-05-10 22:04:39.000000000 +0200
39719 +++ linux-2.6.29-rc3.owrt/block/blk-integrity.c 2009-05-10 23:48:28.000000000 +0200
39720 @@ -309,24 +309,24 @@
39721 /**
39722 * blk_integrity_register - Register a gendisk as being integrity-capable
39723 * @disk: struct gendisk pointer to make integrity-aware
39724 - * @template: optional integrity profile to register
39725 + * @template: integrity profile
39726 *
39727 * Description: When a device needs to advertise itself as being able
39728 * to send/receive integrity metadata it must use this function to
39729 * register the capability with the block layer. The template is a
39730 * blk_integrity struct with values appropriate for the underlying
39731 - * hardware. If template is NULL the new profile is allocated but
39732 - * not filled out. See Documentation/block/data-integrity.txt.
39733 + * hardware. See Documentation/block/data-integrity.txt.
39734 */
39735 int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)
39736 {
39737 struct blk_integrity *bi;
39738
39739 BUG_ON(disk == NULL);
39740 + BUG_ON(template == NULL);
39741
39742 if (disk->integrity == NULL) {
39743 bi = kmem_cache_alloc(integrity_cachep,
39744 - GFP_KERNEL | __GFP_ZERO);
39745 + GFP_KERNEL | __GFP_ZERO);
39746 if (!bi)
39747 return -1;
39748
39749 @@ -346,16 +346,13 @@
39750 bi = disk->integrity;
39751
39752 /* Use the provided profile as template */
39753 - if (template != NULL) {
39754 - bi->name = template->name;
39755 - bi->generate_fn = template->generate_fn;
39756 - bi->verify_fn = template->verify_fn;
39757 - bi->tuple_size = template->tuple_size;
39758 - bi->set_tag_fn = template->set_tag_fn;
39759 - bi->get_tag_fn = template->get_tag_fn;
39760 - bi->tag_size = template->tag_size;
39761 - } else
39762 - bi->name = "unsupported";
39763 + bi->name = template->name;
39764 + bi->generate_fn = template->generate_fn;
39765 + bi->verify_fn = template->verify_fn;
39766 + bi->tuple_size = template->tuple_size;
39767 + bi->set_tag_fn = template->set_tag_fn;
39768 + bi->get_tag_fn = template->get_tag_fn;
39769 + bi->tag_size = template->tag_size;
39770
39771 return 0;
39772 }
39773 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk-merge.c linux-2.6.29-rc3.owrt/block/blk-merge.c
39774 --- linux-2.6.29.owrt/block/blk-merge.c 2009-05-10 22:04:39.000000000 +0200
39775 +++ linux-2.6.29-rc3.owrt/block/blk-merge.c 2009-05-10 23:48:28.000000000 +0200
39776 @@ -38,77 +38,72 @@
39777 }
39778 }
39779
39780 -static unsigned int __blk_recalc_rq_segments(struct request_queue *q,
39781 - struct bio *bio)
39782 +void blk_recalc_rq_segments(struct request *rq)
39783 {
39784 + int nr_phys_segs;
39785 unsigned int phys_size;
39786 struct bio_vec *bv, *bvprv = NULL;
39787 - int cluster, i, high, highprv = 1;
39788 - unsigned int seg_size, nr_phys_segs;
39789 - struct bio *fbio, *bbio;
39790 + int seg_size;
39791 + int cluster;
39792 + struct req_iterator iter;
39793 + int high, highprv = 1;
39794 + struct request_queue *q = rq->q;
39795
39796 - if (!bio)
39797 - return 0;
39798 + if (!rq->bio)
39799 + return;
39800
39801 - fbio = bio;
39802 cluster = test_bit(QUEUE_FLAG_CLUSTER, &q->queue_flags);
39803 seg_size = 0;
39804 phys_size = nr_phys_segs = 0;
39805 - for_each_bio(bio) {
39806 - bio_for_each_segment(bv, bio, i) {
39807 - /*
39808 - * the trick here is making sure that a high page is
39809 - * never considered part of another segment, since that
39810 - * might change with the bounce page.
39811 - */
39812 - high = page_to_pfn(bv->bv_page) > q->bounce_pfn;
39813 - if (high || highprv)
39814 + rq_for_each_segment(bv, rq, iter) {
39815 + /*
39816 + * the trick here is making sure that a high page is never
39817 + * considered part of another segment, since that might
39818 + * change with the bounce page.
39819 + */
39820 + high = page_to_pfn(bv->bv_page) > q->bounce_pfn;
39821 + if (high || highprv)
39822 + goto new_segment;
39823 + if (cluster) {
39824 + if (seg_size + bv->bv_len > q->max_segment_size)
39825 + goto new_segment;
39826 + if (!BIOVEC_PHYS_MERGEABLE(bvprv, bv))
39827 + goto new_segment;
39828 + if (!BIOVEC_SEG_BOUNDARY(q, bvprv, bv))
39829 goto new_segment;
39830 - if (cluster) {
39831 - if (seg_size + bv->bv_len > q->max_segment_size)
39832 - goto new_segment;
39833 - if (!BIOVEC_PHYS_MERGEABLE(bvprv, bv))
39834 - goto new_segment;
39835 - if (!BIOVEC_SEG_BOUNDARY(q, bvprv, bv))
39836 - goto new_segment;
39837 -
39838 - seg_size += bv->bv_len;
39839 - bvprv = bv;
39840 - continue;
39841 - }
39842 -new_segment:
39843 - if (nr_phys_segs == 1 && seg_size >
39844 - fbio->bi_seg_front_size)
39845 - fbio->bi_seg_front_size = seg_size;
39846
39847 - nr_phys_segs++;
39848 + seg_size += bv->bv_len;
39849 bvprv = bv;
39850 - seg_size = bv->bv_len;
39851 - highprv = high;
39852 + continue;
39853 }
39854 - bbio = bio;
39855 +new_segment:
39856 + if (nr_phys_segs == 1 && seg_size > rq->bio->bi_seg_front_size)
39857 + rq->bio->bi_seg_front_size = seg_size;
39858 +
39859 + nr_phys_segs++;
39860 + bvprv = bv;
39861 + seg_size = bv->bv_len;
39862 + highprv = high;
39863 }
39864
39865 - if (nr_phys_segs == 1 && seg_size > fbio->bi_seg_front_size)
39866 - fbio->bi_seg_front_size = seg_size;
39867 - if (seg_size > bbio->bi_seg_back_size)
39868 - bbio->bi_seg_back_size = seg_size;
39869 + if (nr_phys_segs == 1 && seg_size > rq->bio->bi_seg_front_size)
39870 + rq->bio->bi_seg_front_size = seg_size;
39871 + if (seg_size > rq->biotail->bi_seg_back_size)
39872 + rq->biotail->bi_seg_back_size = seg_size;
39873
39874 - return nr_phys_segs;
39875 -}
39876 -
39877 -void blk_recalc_rq_segments(struct request *rq)
39878 -{
39879 - rq->nr_phys_segments = __blk_recalc_rq_segments(rq->q, rq->bio);
39880 + rq->nr_phys_segments = nr_phys_segs;
39881 }
39882
39883 void blk_recount_segments(struct request_queue *q, struct bio *bio)
39884 {
39885 + struct request rq;
39886 struct bio *nxt = bio->bi_next;
39887 -
39888 + rq.q = q;
39889 + rq.bio = rq.biotail = bio;
39890 bio->bi_next = NULL;
39891 - bio->bi_phys_segments = __blk_recalc_rq_segments(q, bio);
39892 + blk_recalc_rq_segments(&rq);
39893 bio->bi_next = nxt;
39894 + bio->bi_phys_segments = rq.nr_phys_segments;
39895 bio->bi_flags |= (1 << BIO_SEG_VALID);
39896 }
39897 EXPORT_SYMBOL(blk_recount_segments);
39898 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk-sysfs.c linux-2.6.29-rc3.owrt/block/blk-sysfs.c
39899 --- linux-2.6.29.owrt/block/blk-sysfs.c 2009-05-10 22:04:39.000000000 +0200
39900 +++ linux-2.6.29-rc3.owrt/block/blk-sysfs.c 2009-05-10 23:48:28.000000000 +0200
39901 @@ -130,27 +130,6 @@
39902 return queue_var_show(max_hw_sectors_kb, (page));
39903 }
39904
39905 -static ssize_t queue_nonrot_show(struct request_queue *q, char *page)
39906 -{
39907 - return queue_var_show(!blk_queue_nonrot(q), page);
39908 -}
39909 -
39910 -static ssize_t queue_nonrot_store(struct request_queue *q, const char *page,
39911 - size_t count)
39912 -{
39913 - unsigned long nm;
39914 - ssize_t ret = queue_var_store(&nm, page, count);
39915 -
39916 - spin_lock_irq(q->queue_lock);
39917 - if (nm)
39918 - queue_flag_clear(QUEUE_FLAG_NONROT, q);
39919 - else
39920 - queue_flag_set(QUEUE_FLAG_NONROT, q);
39921 - spin_unlock_irq(q->queue_lock);
39922 -
39923 - return ret;
39924 -}
39925 -
39926 static ssize_t queue_nomerges_show(struct request_queue *q, char *page)
39927 {
39928 return queue_var_show(blk_queue_nomerges(q), page);
39929 @@ -167,8 +146,8 @@
39930 queue_flag_set(QUEUE_FLAG_NOMERGES, q);
39931 else
39932 queue_flag_clear(QUEUE_FLAG_NOMERGES, q);
39933 - spin_unlock_irq(q->queue_lock);
39934
39935 + spin_unlock_irq(q->queue_lock);
39936 return ret;
39937 }
39938
39939 @@ -197,27 +176,6 @@
39940 return ret;
39941 }
39942
39943 -static ssize_t queue_iostats_show(struct request_queue *q, char *page)
39944 -{
39945 - return queue_var_show(blk_queue_io_stat(q), page);
39946 -}
39947 -
39948 -static ssize_t queue_iostats_store(struct request_queue *q, const char *page,
39949 - size_t count)
39950 -{
39951 - unsigned long stats;
39952 - ssize_t ret = queue_var_store(&stats, page, count);
39953 -
39954 - spin_lock_irq(q->queue_lock);
39955 - if (stats)
39956 - queue_flag_set(QUEUE_FLAG_IO_STAT, q);
39957 - else
39958 - queue_flag_clear(QUEUE_FLAG_IO_STAT, q);
39959 - spin_unlock_irq(q->queue_lock);
39960 -
39961 - return ret;
39962 -}
39963 -
39964 static struct queue_sysfs_entry queue_requests_entry = {
39965 .attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR },
39966 .show = queue_requests_show,
39967 @@ -252,12 +210,6 @@
39968 .show = queue_hw_sector_size_show,
39969 };
39970
39971 -static struct queue_sysfs_entry queue_nonrot_entry = {
39972 - .attr = {.name = "rotational", .mode = S_IRUGO | S_IWUSR },
39973 - .show = queue_nonrot_show,
39974 - .store = queue_nonrot_store,
39975 -};
39976 -
39977 static struct queue_sysfs_entry queue_nomerges_entry = {
39978 .attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR },
39979 .show = queue_nomerges_show,
39980 @@ -270,12 +222,6 @@
39981 .store = queue_rq_affinity_store,
39982 };
39983
39984 -static struct queue_sysfs_entry queue_iostats_entry = {
39985 - .attr = {.name = "iostats", .mode = S_IRUGO | S_IWUSR },
39986 - .show = queue_iostats_show,
39987 - .store = queue_iostats_store,
39988 -};
39989 -
39990 static struct attribute *default_attrs[] = {
39991 &queue_requests_entry.attr,
39992 &queue_ra_entry.attr,
39993 @@ -283,10 +229,8 @@
39994 &queue_max_sectors_entry.attr,
39995 &queue_iosched_entry.attr,
39996 &queue_hw_sector_size_entry.attr,
39997 - &queue_nonrot_entry.attr,
39998 &queue_nomerges_entry.attr,
39999 &queue_rq_affinity_entry.attr,
40000 - &queue_iostats_entry.attr,
40001 NULL,
40002 };
40003
40004 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blk-timeout.c linux-2.6.29-rc3.owrt/block/blk-timeout.c
40005 --- linux-2.6.29.owrt/block/blk-timeout.c 2009-05-10 22:04:39.000000000 +0200
40006 +++ linux-2.6.29-rc3.owrt/block/blk-timeout.c 2009-05-10 23:48:28.000000000 +0200
40007 @@ -209,19 +209,12 @@
40008 {
40009 unsigned long flags;
40010 struct request *rq, *tmp;
40011 - LIST_HEAD(list);
40012
40013 spin_lock_irqsave(q->queue_lock, flags);
40014
40015 elv_abort_queue(q);
40016
40017 - /*
40018 - * Splice entries to local list, to avoid deadlocking if entries
40019 - * get readded to the timeout list by error handling
40020 - */
40021 - list_splice_init(&q->timeout_list, &list);
40022 -
40023 - list_for_each_entry_safe(rq, tmp, &list, timeout_list)
40024 + list_for_each_entry_safe(rq, tmp, &q->timeout_list, timeout_list)
40025 blk_abort_request(rq);
40026
40027 spin_unlock_irqrestore(q->queue_lock, flags);
40028 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/blktrace.c linux-2.6.29-rc3.owrt/block/blktrace.c
40029 --- linux-2.6.29.owrt/block/blktrace.c 2009-05-10 22:04:39.000000000 +0200
40030 +++ linux-2.6.29-rc3.owrt/block/blktrace.c 2009-05-10 23:48:28.000000000 +0200
40031 @@ -142,7 +142,7 @@
40032
40033 what |= ddir_act[rw & WRITE];
40034 what |= MASK_TC_BIT(rw, BARRIER);
40035 - what |= MASK_TC_BIT(rw, SYNCIO);
40036 + what |= MASK_TC_BIT(rw, SYNC);
40037 what |= MASK_TC_BIT(rw, AHEAD);
40038 what |= MASK_TC_BIT(rw, META);
40039 what |= MASK_TC_BIT(rw, DISCARD);
40040 @@ -187,12 +187,59 @@
40041
40042 static struct dentry *blk_tree_root;
40043 static DEFINE_MUTEX(blk_tree_mutex);
40044 +static unsigned int root_users;
40045 +
40046 +static inline void blk_remove_root(void)
40047 +{
40048 + if (blk_tree_root) {
40049 + debugfs_remove(blk_tree_root);
40050 + blk_tree_root = NULL;
40051 + }
40052 +}
40053 +
40054 +static void blk_remove_tree(struct dentry *dir)
40055 +{
40056 + mutex_lock(&blk_tree_mutex);
40057 + debugfs_remove(dir);
40058 + if (--root_users == 0)
40059 + blk_remove_root();
40060 + mutex_unlock(&blk_tree_mutex);
40061 +}
40062 +
40063 +static struct dentry *blk_create_tree(const char *blk_name)
40064 +{
40065 + struct dentry *dir = NULL;
40066 + int created = 0;
40067 +
40068 + mutex_lock(&blk_tree_mutex);
40069 +
40070 + if (!blk_tree_root) {
40071 + blk_tree_root = debugfs_create_dir("block", NULL);
40072 + if (!blk_tree_root)
40073 + goto err;
40074 + created = 1;
40075 + }
40076 +
40077 + dir = debugfs_create_dir(blk_name, blk_tree_root);
40078 + if (dir)
40079 + root_users++;
40080 + else {
40081 + /* Delete root only if we created it */
40082 + if (created)
40083 + blk_remove_root();
40084 + }
40085 +
40086 +err:
40087 + mutex_unlock(&blk_tree_mutex);
40088 + return dir;
40089 +}
40090
40091 static void blk_trace_cleanup(struct blk_trace *bt)
40092 {
40093 + relay_close(bt->rchan);
40094 debugfs_remove(bt->msg_file);
40095 debugfs_remove(bt->dropped_file);
40096 - relay_close(bt->rchan);
40097 + blk_remove_tree(bt->dir);
40098 free_percpu(bt->sequence);
40099 free_percpu(bt->msg_data);
40100 kfree(bt);
40101 @@ -299,18 +346,7 @@
40102
40103 static int blk_remove_buf_file_callback(struct dentry *dentry)
40104 {
40105 - struct dentry *parent = dentry->d_parent;
40106 debugfs_remove(dentry);
40107 -
40108 - /*
40109 - * this will fail for all but the last file, but that is ok. what we
40110 - * care about is the top level buts->name directory going away, when
40111 - * the last trace file is gone. Then we don't have to rmdir() that
40112 - * manually on trace stop, so it nicely solves the issue with
40113 - * force killing of running traces.
40114 - */
40115 -
40116 - debugfs_remove(parent);
40117 return 0;
40118 }
40119
40120 @@ -368,15 +404,7 @@
40121 goto err;
40122
40123 ret = -ENOENT;
40124 -
40125 - if (!blk_tree_root) {
40126 - blk_tree_root = debugfs_create_dir("block", NULL);
40127 - if (!blk_tree_root)
40128 - return -ENOMEM;
40129 - }
40130 -
40131 - dir = debugfs_create_dir(buts->name, blk_tree_root);
40132 -
40133 + dir = blk_create_tree(buts->name);
40134 if (!dir)
40135 goto err;
40136
40137 @@ -430,6 +458,8 @@
40138 atomic_dec(&blk_probes_ref);
40139 mutex_unlock(&blk_probe_mutex);
40140 err:
40141 + if (dir)
40142 + blk_remove_tree(dir);
40143 if (bt) {
40144 if (bt->msg_file)
40145 debugfs_remove(bt->msg_file);
40146 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/bsg.c linux-2.6.29-rc3.owrt/block/bsg.c
40147 --- linux-2.6.29.owrt/block/bsg.c 2009-05-10 22:04:39.000000000 +0200
40148 +++ linux-2.6.29-rc3.owrt/block/bsg.c 2009-05-10 23:48:28.000000000 +0200
40149 @@ -244,8 +244,7 @@
40150 * map sg_io_v4 to a request.
40151 */
40152 static struct request *
40153 -bsg_map_hdr(struct bsg_device *bd, struct sg_io_v4 *hdr, fmode_t has_write_perm,
40154 - u8 *sense)
40155 +bsg_map_hdr(struct bsg_device *bd, struct sg_io_v4 *hdr, fmode_t has_write_perm)
40156 {
40157 struct request_queue *q = bd->queue;
40158 struct request *rq, *next_rq = NULL;
40159 @@ -307,10 +306,6 @@
40160 if (ret)
40161 goto out;
40162 }
40163 -
40164 - rq->sense = sense;
40165 - rq->sense_len = 0;
40166 -
40167 return rq;
40168 out:
40169 if (rq->cmd != rq->__cmd)
40170 @@ -353,6 +348,9 @@
40171 static void bsg_add_command(struct bsg_device *bd, struct request_queue *q,
40172 struct bsg_command *bc, struct request *rq)
40173 {
40174 + rq->sense = bc->sense;
40175 + rq->sense_len = 0;
40176 +
40177 /*
40178 * add bc command to busy queue and submit rq for io
40179 */
40180 @@ -421,7 +419,7 @@
40181 {
40182 int ret = 0;
40183
40184 - dprintk("rq %p bio %p 0x%x\n", rq, bio, rq->errors);
40185 + dprintk("rq %p bio %p %u\n", rq, bio, rq->errors);
40186 /*
40187 * fill in all the output members
40188 */
40189 @@ -637,7 +635,7 @@
40190 /*
40191 * get a request, fill in the blanks, and add to request queue
40192 */
40193 - rq = bsg_map_hdr(bd, &bc->hdr, has_write_perm, bc->sense);
40194 + rq = bsg_map_hdr(bd, &bc->hdr, has_write_perm);
40195 if (IS_ERR(rq)) {
40196 ret = PTR_ERR(rq);
40197 rq = NULL;
40198 @@ -924,12 +922,11 @@
40199 struct request *rq;
40200 struct bio *bio, *bidi_bio = NULL;
40201 struct sg_io_v4 hdr;
40202 - u8 sense[SCSI_SENSE_BUFFERSIZE];
40203
40204 if (copy_from_user(&hdr, uarg, sizeof(hdr)))
40205 return -EFAULT;
40206
40207 - rq = bsg_map_hdr(bd, &hdr, file->f_mode & FMODE_WRITE, sense);
40208 + rq = bsg_map_hdr(bd, &hdr, file->f_mode & FMODE_WRITE);
40209 if (IS_ERR(rq))
40210 return PTR_ERR(rq);
40211
40212 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/cfq-iosched.c linux-2.6.29-rc3.owrt/block/cfq-iosched.c
40213 --- linux-2.6.29.owrt/block/cfq-iosched.c 2009-05-10 22:04:39.000000000 +0200
40214 +++ linux-2.6.29-rc3.owrt/block/cfq-iosched.c 2009-05-10 23:48:28.000000000 +0200
40215 @@ -84,11 +84,6 @@
40216 */
40217 struct cfq_rb_root service_tree;
40218 unsigned int busy_queues;
40219 - /*
40220 - * Used to track any pending rt requests so we can pre-empt current
40221 - * non-RT cfqq in service when this value is non-zero.
40222 - */
40223 - unsigned int busy_rt_queues;
40224
40225 int rq_in_driver;
40226 int sync_flight;
40227 @@ -567,8 +562,6 @@
40228 BUG_ON(cfq_cfqq_on_rr(cfqq));
40229 cfq_mark_cfqq_on_rr(cfqq);
40230 cfqd->busy_queues++;
40231 - if (cfq_class_rt(cfqq))
40232 - cfqd->busy_rt_queues++;
40233
40234 cfq_resort_rr_list(cfqd, cfqq);
40235 }
40236 @@ -588,8 +581,6 @@
40237
40238 BUG_ON(!cfqd->busy_queues);
40239 cfqd->busy_queues--;
40240 - if (cfq_class_rt(cfqq))
40241 - cfqd->busy_rt_queues--;
40242 }
40243
40244 /*
40245 @@ -1014,20 +1005,6 @@
40246 goto expire;
40247
40248 /*
40249 - * If we have a RT cfqq waiting, then we pre-empt the current non-rt
40250 - * cfqq.
40251 - */
40252 - if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues) {
40253 - /*
40254 - * We simulate this as cfqq timed out so that it gets to bank
40255 - * the remaining of its time slice.
40256 - */
40257 - cfq_log_cfqq(cfqd, cfqq, "preempt");
40258 - cfq_slice_expired(cfqd, 1);
40259 - goto new_queue;
40260 - }
40261 -
40262 - /*
40263 * The active queue has requests and isn't expired, allow it to
40264 * dispatch.
40265 */
40266 @@ -1090,13 +1067,6 @@
40267 if (RB_EMPTY_ROOT(&cfqq->sort_list))
40268 break;
40269
40270 - /*
40271 - * If there is a non-empty RT cfqq waiting for current
40272 - * cfqq's timeslice to complete, pre-empt this cfqq
40273 - */
40274 - if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues)
40275 - break;
40276 -
40277 } while (dispatched < max_dispatch);
40278
40279 /*
40280 @@ -1831,12 +1801,6 @@
40281 if (rq_is_meta(rq) && !cfqq->meta_pending)
40282 return 1;
40283
40284 - /*
40285 - * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.
40286 - */
40287 - if (cfq_class_rt(new_cfqq) && !cfq_class_rt(cfqq))
40288 - return 1;
40289 -
40290 if (!cfqd->active_cic || !cfq_cfqq_wait_request(cfqq))
40291 return 0;
40292
40293 @@ -1906,8 +1870,7 @@
40294 /*
40295 * not the active queue - expire current slice if it is
40296 * idle and has expired it's mean thinktime or this new queue
40297 - * has some old slice time left and is of higher priority or
40298 - * this new queue is RT and the current one is BE
40299 + * has some old slice time left and is of higher priority
40300 */
40301 cfq_preempt_queue(cfqd, cfqq);
40302 cfq_mark_cfqq_must_dispatch(cfqq);
40303 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/block/genhd.c linux-2.6.29-rc3.owrt/block/genhd.c
40304 --- linux-2.6.29.owrt/block/genhd.c 2009-05-10 22:04:39.000000000 +0200
40305 +++ linux-2.6.29-rc3.owrt/block/genhd.c 2009-05-10 23:48:28.000000000 +0200
40306 @@ -256,22 +256,6 @@
40307 }
40308 #endif /* CONFIG_PROC_FS */
40309
40310 -/**
40311 - * register_blkdev - register a new block device
40312 - *
40313 - * @major: the requested major device number [1..255]. If @major=0, try to
40314 - * allocate any unused major number.
40315 - * @name: the name of the new block device as a zero terminated string
40316 - *
40317 - * The @name must be unique within the system.
40318 - *
40319 - * The return value depends on the @major input parameter.
40320 - * - if a major device number was requested in range [1..255] then the
40321 - * function returns zero on success, or a negative error code
40322 - * - if any unused major number was requested with @major=0 parameter
40323 - * then the return value is the allocated major number in range
40324 - * [1..255] or a negative error code otherwise
40325 - */
40326 int register_blkdev(unsigned int major, const char *name)
40327 {
40328 struct blk_major_name **n, *p;
40329 @@ -1103,14 +1087,6 @@
40330 if (strcmp(dev_name(dev), name))
40331 continue;
40332
40333 - if (partno < disk->minors) {
40334 - /* We need to return the right devno, even
40335 - * if the partition doesn't exist yet.
40336 - */
40337 - devt = MKDEV(MAJOR(dev->devt),
40338 - MINOR(dev->devt) + partno);
40339 - break;
40340 - }
40341 part = disk_get_part(disk, partno);
40342 if (part) {
40343 devt = part_devt(part);
40344 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/CREDITS linux-2.6.29-rc3.owrt/CREDITS
40345 --- linux-2.6.29.owrt/CREDITS 2009-05-10 22:04:39.000000000 +0200
40346 +++ linux-2.6.29-rc3.owrt/CREDITS 2009-05-10 23:48:28.000000000 +0200
40347 @@ -2166,6 +2166,7 @@
40348
40349 N: Pavel Machek
40350 E: pavel@ucw.cz
40351 +E: pavel@suse.cz
40352 D: Softcursor for vga, hypertech cdrom support, vcsa bugfix, nbd
40353 D: sun4/330 port, capabilities for elf, speedup for rm on ext2, USB,
40354 D: work on suspend-to-ram/disk, killing duplicates from ioctl32
40355 @@ -3738,7 +3739,7 @@
40356 S: Germany
40357
40358 N: Gertjan van Wingerde
40359 -E: gwingerde@gmail.com
40360 +E: gwingerde@home.nl
40361 D: Ralink rt2x00 WLAN driver
40362 D: Minix V2 file-system
40363 D: Misc fixes
40364 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/crypto/ahash.c linux-2.6.29-rc3.owrt/crypto/ahash.c
40365 --- linux-2.6.29.owrt/crypto/ahash.c 2009-05-10 22:04:39.000000000 +0200
40366 +++ linux-2.6.29-rc3.owrt/crypto/ahash.c 2009-05-10 23:48:28.000000000 +0200
40367 @@ -214,7 +214,7 @@
40368 seq_printf(m, "async : %s\n", alg->cra_flags & CRYPTO_ALG_ASYNC ?
40369 "yes" : "no");
40370 seq_printf(m, "blocksize : %u\n", alg->cra_blocksize);
40371 - seq_printf(m, "digestsize : %u\n", alg->cra_ahash.digestsize);
40372 + seq_printf(m, "digestsize : %u\n", alg->cra_hash.digestsize);
40373 }
40374
40375 const struct crypto_type crypto_ahash_type = {
40376 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/crypto/algapi.c linux-2.6.29-rc3.owrt/crypto/algapi.c
40377 --- linux-2.6.29.owrt/crypto/algapi.c 2009-05-10 22:04:39.000000000 +0200
40378 +++ linux-2.6.29-rc3.owrt/crypto/algapi.c 2009-05-10 23:48:28.000000000 +0200
40379 @@ -149,9 +149,6 @@
40380 if (q == alg)
40381 goto err;
40382
40383 - if (crypto_is_moribund(q))
40384 - continue;
40385 -
40386 if (crypto_is_larval(q)) {
40387 if (!strcmp(alg->cra_driver_name, q->cra_driver_name))
40388 goto err;
40389 @@ -200,7 +197,7 @@
40390
40391 down_write(&crypto_alg_sem);
40392 list_for_each_entry(q, &crypto_alg_list, cra_list) {
40393 - if (crypto_is_moribund(q) || !crypto_is_larval(q))
40394 + if (!crypto_is_larval(q))
40395 continue;
40396
40397 test = (struct crypto_larval *)q;
40398 @@ -213,7 +210,6 @@
40399 goto unlock;
40400
40401 found:
40402 - q->cra_flags |= CRYPTO_ALG_DEAD;
40403 alg = test->adult;
40404 if (err || list_empty(&alg->cra_list))
40405 goto complete;
40406 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/crypto/api.c linux-2.6.29-rc3.owrt/crypto/api.c
40407 --- linux-2.6.29.owrt/crypto/api.c 2009-05-10 22:04:39.000000000 +0200
40408 +++ linux-2.6.29-rc3.owrt/crypto/api.c 2009-05-10 23:48:28.000000000 +0200
40409 @@ -215,19 +215,8 @@
40410 mask &= ~(CRYPTO_ALG_LARVAL | CRYPTO_ALG_DEAD);
40411 type &= mask;
40412
40413 - alg = crypto_alg_lookup(name, type, mask);
40414 - if (!alg) {
40415 - char tmp[CRYPTO_MAX_ALG_NAME];
40416 -
40417 - request_module(name);
40418 -
40419 - if (!((type ^ CRYPTO_ALG_NEED_FALLBACK) & mask) &&
40420 - snprintf(tmp, sizeof(tmp), "%s-all", name) < sizeof(tmp))
40421 - request_module(tmp);
40422 -
40423 - alg = crypto_alg_lookup(name, type, mask);
40424 - }
40425 -
40426 + alg = try_then_request_module(crypto_alg_lookup(name, type, mask),
40427 + name);
40428 if (alg)
40429 return crypto_is_larval(alg) ? crypto_larval_wait(alg) : alg;
40430
40431 @@ -568,34 +557,34 @@
40432 return ERR_PTR(err);
40433 }
40434 EXPORT_SYMBOL_GPL(crypto_alloc_tfm);
40435 -
40436 +
40437 /*
40438 - * crypto_destroy_tfm - Free crypto transform
40439 - * @mem: Start of tfm slab
40440 + * crypto_free_tfm - Free crypto transform
40441 * @tfm: Transform to free
40442 *
40443 - * This function frees up the transform and any associated resources,
40444 + * crypto_free_tfm() frees up the transform and any associated resources,
40445 * then drops the refcount on the associated algorithm.
40446 */
40447 -void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm)
40448 +void crypto_free_tfm(struct crypto_tfm *tfm)
40449 {
40450 struct crypto_alg *alg;
40451 int size;
40452
40453 - if (unlikely(!mem))
40454 + if (unlikely(!tfm))
40455 return;
40456
40457 alg = tfm->__crt_alg;
40458 - size = ksize(mem);
40459 + size = sizeof(*tfm) + alg->cra_ctxsize;
40460
40461 if (!tfm->exit && alg->cra_exit)
40462 alg->cra_exit(tfm);
40463 crypto_exit_ops(tfm);
40464 crypto_mod_put(alg);
40465 - memset(mem, 0, size);
40466 - kfree(mem);
40467 + memset(tfm, 0, size);
40468 + kfree(tfm);
40469 }
40470 -EXPORT_SYMBOL_GPL(crypto_destroy_tfm);
40471 +
40472 +EXPORT_SYMBOL_GPL(crypto_free_tfm);
40473
40474 int crypto_has_alg(const char *name, u32 type, u32 mask)
40475 {
40476 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/crypto/lrw.c linux-2.6.29-rc3.owrt/crypto/lrw.c
40477 --- linux-2.6.29.owrt/crypto/lrw.c 2009-05-10 22:04:39.000000000 +0200
40478 +++ linux-2.6.29-rc3.owrt/crypto/lrw.c 2009-05-10 23:48:28.000000000 +0200
40479 @@ -45,13 +45,7 @@
40480
40481 static inline void setbit128_bbe(void *b, int bit)
40482 {
40483 - __set_bit(bit ^ (0x80 -
40484 -#ifdef __BIG_ENDIAN
40485 - BITS_PER_LONG
40486 -#else
40487 - BITS_PER_BYTE
40488 -#endif
40489 - ), b);
40490 + __set_bit(bit ^ 0x78, b);
40491 }
40492
40493 static int setkey(struct crypto_tfm *parent, const u8 *key,
40494 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/crypto/scatterwalk.c linux-2.6.29-rc3.owrt/crypto/scatterwalk.c
40495 --- linux-2.6.29.owrt/crypto/scatterwalk.c 2009-05-10 22:04:39.000000000 +0200
40496 +++ linux-2.6.29-rc3.owrt/crypto/scatterwalk.c 2009-05-10 23:48:28.000000000 +0200
40497 @@ -54,8 +54,7 @@
40498 struct page *page;
40499
40500 page = sg_page(walk->sg) + ((walk->offset - 1) >> PAGE_SHIFT);
40501 - if (!PageSlab(page))
40502 - flush_dcache_page(page);
40503 + flush_dcache_page(page);
40504 }
40505
40506 if (more) {
40507 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/crypto/shash.c linux-2.6.29-rc3.owrt/crypto/shash.c
40508 --- linux-2.6.29.owrt/crypto/shash.c 2009-05-10 22:04:39.000000000 +0200
40509 +++ linux-2.6.29-rc3.owrt/crypto/shash.c 2009-05-10 23:48:28.000000000 +0200
40510 @@ -388,15 +388,10 @@
40511 struct shash_desc *desc = crypto_tfm_ctx(tfm);
40512 struct crypto_shash *shash;
40513
40514 - if (!crypto_mod_get(calg))
40515 - return -EAGAIN;
40516 -
40517 shash = __crypto_shash_cast(crypto_create_tfm(
40518 calg, &crypto_shash_type));
40519 - if (IS_ERR(shash)) {
40520 - crypto_mod_put(calg);
40521 + if (IS_ERR(shash))
40522 return PTR_ERR(shash);
40523 - }
40524
40525 desc->tfm = shash;
40526 tfm->exit = crypto_exit_shash_ops_compat;
40527 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/ABI/testing/sysfs-bus-pci linux-2.6.29-rc3.owrt/Documentation/ABI/testing/sysfs-bus-pci
40528 --- linux-2.6.29.owrt/Documentation/ABI/testing/sysfs-bus-pci 2009-05-10 22:04:39.000000000 +0200
40529 +++ linux-2.6.29-rc3.owrt/Documentation/ABI/testing/sysfs-bus-pci 2009-05-10 23:48:28.000000000 +0200
40530 @@ -1,46 +1,3 @@
40531 -What: /sys/bus/pci/drivers/.../bind
40532 -Date: December 2003
40533 -Contact: linux-pci@vger.kernel.org
40534 -Description:
40535 - Writing a device location to this file will cause
40536 - the driver to attempt to bind to the device found at
40537 - this location. This is useful for overriding default
40538 - bindings. The format for the location is: DDDD:BB:DD.F.
40539 - That is Domain:Bus:Device.Function and is the same as
40540 - found in /sys/bus/pci/devices/. For example:
40541 - # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind
40542 - (Note: kernels before 2.6.28 may require echo -n).
40543 -
40544 -What: /sys/bus/pci/drivers/.../unbind
40545 -Date: December 2003
40546 -Contact: linux-pci@vger.kernel.org
40547 -Description:
40548 - Writing a device location to this file will cause the
40549 - driver to attempt to unbind from the device found at
40550 - this location. This may be useful when overriding default
40551 - bindings. The format for the location is: DDDD:BB:DD.F.
40552 - That is Domain:Bus:Device.Function and is the same as
40553 - found in /sys/bus/pci/devices/. For example:
40554 - # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind
40555 - (Note: kernels before 2.6.28 may require echo -n).
40556 -
40557 -What: /sys/bus/pci/drivers/.../new_id
40558 -Date: December 2003
40559 -Contact: linux-pci@vger.kernel.org
40560 -Description:
40561 - Writing a device ID to this file will attempt to
40562 - dynamically add a new device ID to a PCI device driver.
40563 - This may allow the driver to support more hardware than
40564 - was included in the driver's static device ID support
40565 - table at compile time. The format for the device ID is:
40566 - VVVV DDDD SVVV SDDD CCCC MMMM PPPP. That is Vendor ID,
40567 - Device ID, Subsystem Vendor ID, Subsystem Device ID,
40568 - Class, Class Mask, and Private Driver Data. The Vendor ID
40569 - and Device ID fields are required, the rest are optional.
40570 - Upon successfully adding an ID, the driver will probe
40571 - for the device and attempt to bind to it. For example:
40572 - # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id
40573 -
40574 What: /sys/bus/pci/devices/.../vpd
40575 Date: February 2008
40576 Contact: Ben Hutchings <bhutchings@solarflare.com>
40577 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/ABI/testing/sysfs-firmware-memmap linux-2.6.29-rc3.owrt/Documentation/ABI/testing/sysfs-firmware-memmap
40578 --- linux-2.6.29.owrt/Documentation/ABI/testing/sysfs-firmware-memmap 2009-05-10 22:04:39.000000000 +0200
40579 +++ linux-2.6.29-rc3.owrt/Documentation/ABI/testing/sysfs-firmware-memmap 2009-05-10 23:48:28.000000000 +0200
40580 @@ -1,6 +1,6 @@
40581 What: /sys/firmware/memmap/
40582 Date: June 2008
40583 -Contact: Bernhard Walle <bernhard.walle@gmx.de>
40584 +Contact: Bernhard Walle <bwalle@suse.de>
40585 Description:
40586 On all platforms, the firmware provides a memory map which the
40587 kernel reads. The resources from that memory map are registered
40588 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/block/biodoc.txt linux-2.6.29-rc3.owrt/Documentation/block/biodoc.txt
40589 --- linux-2.6.29.owrt/Documentation/block/biodoc.txt 2009-05-10 22:04:39.000000000 +0200
40590 +++ linux-2.6.29-rc3.owrt/Documentation/block/biodoc.txt 2009-05-10 23:48:28.000000000 +0200
40591 @@ -186,9 +186,8 @@
40592 do not have a corresponding kernel virtual address space mapping) and
40593 low-memory pages.
40594
40595 -Note: Please refer to Documentation/PCI/PCI-DMA-mapping.txt for a discussion
40596 -on PCI high mem DMA aspects and mapping of scatter gather lists, and support
40597 -for 64 bit PCI.
40598 +Note: Please refer to DMA-mapping.txt for a discussion on PCI high mem DMA
40599 +aspects and mapping of scatter gather lists, and support for 64 bit PCI.
40600
40601 Special handling is required only for cases where i/o needs to happen on
40602 pages at physical memory addresses beyond what the device can support. In these
40603 @@ -954,14 +953,14 @@
40604 results in some sort of conflict internally,
40605 this hook allows it to do that.
40606
40607 -elevator_dispatch_fn* fills the dispatch queue with ready requests.
40608 +elevator_dispatch_fn fills the dispatch queue with ready requests.
40609 I/O schedulers are free to postpone requests by
40610 not filling the dispatch queue unless @force
40611 is non-zero. Once dispatched, I/O schedulers
40612 are not allowed to manipulate the requests -
40613 they belong to generic dispatch queue.
40614
40615 -elevator_add_req_fn* called to add a new request into the scheduler
40616 +elevator_add_req_fn called to add a new request into the scheduler
40617
40618 elevator_queue_empty_fn returns true if the merge queue is empty.
40619 Drivers shouldn't use this, but rather check
40620 @@ -991,7 +990,7 @@
40621 elevator_deactivate_req_fn Called when device driver decides to delay
40622 a request by requeueing it.
40623
40624 -elevator_init_fn*
40625 +elevator_init_fn
40626 elevator_exit_fn Allocate and free any elevator specific storage
40627 for a queue.
40628
40629 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/block/queue-sysfs.txt linux-2.6.29-rc3.owrt/Documentation/block/queue-sysfs.txt
40630 --- linux-2.6.29.owrt/Documentation/block/queue-sysfs.txt 2009-05-10 22:04:39.000000000 +0200
40631 +++ linux-2.6.29-rc3.owrt/Documentation/block/queue-sysfs.txt 1970-01-01 01:00:00.000000000 +0100
40632 @@ -1,63 +0,0 @@
40633 -Queue sysfs files
40634 -=================
40635 -
40636 -This text file will detail the queue files that are located in the sysfs tree
40637 -for each block device. Note that stacked devices typically do not export
40638 -any settings, since their queue merely functions are a remapping target.
40639 -These files are the ones found in the /sys/block/xxx/queue/ directory.
40640 -
40641 -Files denoted with a RO postfix are readonly and the RW postfix means
40642 -read-write.
40643 -
40644 -hw_sector_size (RO)
40645 --------------------
40646 -This is the hardware sector size of the device, in bytes.
40647 -
40648 -max_hw_sectors_kb (RO)
40649 -----------------------
40650 -This is the maximum number of kilobytes supported in a single data transfer.
40651 -
40652 -max_sectors_kb (RW)
40653 --------------------
40654 -This is the maximum number of kilobytes that the block layer will allow
40655 -for a filesystem request. Must be smaller than or equal to the maximum
40656 -size allowed by the hardware.
40657 -
40658 -nomerges (RW)
40659 --------------
40660 -This enables the user to disable the lookup logic involved with IO merging
40661 -requests in the block layer. Merging may still occur through a direct
40662 -1-hit cache, since that comes for (almost) free. The IO scheduler will not
40663 -waste cycles doing tree/hash lookups for merges if nomerges is 1. Defaults
40664 -to 0, enabling all merges.
40665 -
40666 -nr_requests (RW)
40667 -----------------
40668 -This controls how many requests may be allocated in the block layer for
40669 -read or write requests. Note that the total allocated number may be twice
40670 -this amount, since it applies only to reads or writes (not the accumulated
40671 -sum).
40672 -
40673 -read_ahead_kb (RW)
40674 -------------------
40675 -Maximum number of kilobytes to read-ahead for filesystems on this block
40676 -device.
40677 -
40678 -rq_affinity (RW)
40679 -----------------
40680 -If this option is enabled, the block layer will migrate request completions
40681 -to the CPU that originally submitted the request. For some workloads
40682 -this provides a significant reduction in CPU cycles due to caching effects.
40683 -
40684 -scheduler (RW)
40685 ---------------
40686 -When read, this file will display the current and available IO schedulers
40687 -for this block device. The currently active IO scheduler will be enclosed
40688 -in [] brackets. Writing an IO scheduler name to this file will switch
40689 -control of this block device to that new IO scheduler. Note that writing
40690 -an IO scheduler name to this file will attempt to load that IO scheduler
40691 -module, if it isn't already present in the system.
40692 -
40693 -
40694 -
40695 -Jens Axboe <jens.axboe@oracle.com>, February 2009
40696 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/cgroups/cgroups.txt linux-2.6.29-rc3.owrt/Documentation/cgroups/cgroups.txt
40697 --- linux-2.6.29.owrt/Documentation/cgroups/cgroups.txt 2009-05-10 22:04:39.000000000 +0200
40698 +++ linux-2.6.29-rc3.owrt/Documentation/cgroups/cgroups.txt 2009-05-10 23:48:28.000000000 +0200
40699 @@ -252,8 +252,10 @@
40700 When a task is moved from one cgroup to another, it gets a new
40701 css_set pointer - if there's an already existing css_set with the
40702 desired collection of cgroups then that group is reused, else a new
40703 -css_set is allocated. The appropriate existing css_set is located by
40704 -looking into a hash table.
40705 +css_set is allocated. Note that the current implementation uses a
40706 +linear search to locate an appropriate existing css_set, so isn't
40707 +very efficient. A future version will use a hash table for better
40708 +performance.
40709
40710 To allow access from a cgroup to the css_sets (and hence tasks)
40711 that comprise it, a set of cg_cgroup_link objects form a lattice;
40712 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/cgroups/cpusets.txt linux-2.6.29-rc3.owrt/Documentation/cgroups/cpusets.txt
40713 --- linux-2.6.29.owrt/Documentation/cgroups/cpusets.txt 2009-05-10 22:04:39.000000000 +0200
40714 +++ linux-2.6.29-rc3.owrt/Documentation/cgroups/cpusets.txt 2009-05-10 23:48:28.000000000 +0200
40715 @@ -142,7 +142,7 @@
40716 - in fork and exit, to attach and detach a task from its cpuset.
40717 - in sched_setaffinity, to mask the requested CPUs by what's
40718 allowed in that tasks cpuset.
40719 - - in sched.c migrate_live_tasks(), to keep migrating tasks within
40720 + - in sched.c migrate_all_tasks(), to keep migrating tasks within
40721 the CPUs allowed by their cpuset, if possible.
40722 - in the mbind and set_mempolicy system calls, to mask the requested
40723 Memory Nodes by what's allowed in that tasks cpuset.
40724 @@ -175,10 +175,6 @@
40725 - mem_exclusive flag: is memory placement exclusive?
40726 - mem_hardwall flag: is memory allocation hardwalled
40727 - memory_pressure: measure of how much paging pressure in cpuset
40728 - - memory_spread_page flag: if set, spread page cache evenly on allowed nodes
40729 - - memory_spread_slab flag: if set, spread slab cache evenly on allowed nodes
40730 - - sched_load_balance flag: if set, load balance within CPUs on that cpuset
40731 - - sched_relax_domain_level: the searching range when migrating tasks
40732
40733 In addition, the root cpuset only has the following file:
40734 - memory_pressure_enabled flag: compute memory_pressure?
40735 @@ -256,7 +252,7 @@
40736
40737 This is useful both on tightly managed systems running a wide mix of
40738 submitted jobs, which may choose to terminate or re-prioritize jobs that
40739 -are trying to use more memory than allowed on the nodes assigned to them,
40740 +are trying to use more memory than allowed on the nodes assigned them,
40741 and with tightly coupled, long running, massively parallel scientific
40742 computing jobs that will dramatically fail to meet required performance
40743 goals if they start to use more memory than allowed to them.
40744 @@ -382,7 +378,7 @@
40745 The algorithmic cost of load balancing and its impact on key shared
40746 kernel data structures such as the task list increases more than
40747 linearly with the number of CPUs being balanced. So the scheduler
40748 -has support to partition the systems CPUs into a number of sched
40749 +has support to partition the systems CPUs into a number of sched
40750 domains such that it only load balances within each sched domain.
40751 Each sched domain covers some subset of the CPUs in the system;
40752 no two sched domains overlap; some CPUs might not be in any sched
40753 @@ -489,22 +485,17 @@
40754 The internal kernel cpuset to scheduler interface passes from the
40755 cpuset code to the scheduler code a partition of the load balanced
40756 CPUs in the system. This partition is a set of subsets (represented
40757 -as an array of struct cpumask) of CPUs, pairwise disjoint, that cover
40758 -all the CPUs that must be load balanced.
40759 +as an array of cpumask_t) of CPUs, pairwise disjoint, that cover all
40760 +the CPUs that must be load balanced.
40761
40762 -The cpuset code builds a new such partition and passes it to the
40763 -scheduler sched domain setup code, to have the sched domains rebuilt
40764 -as necessary, whenever:
40765 - - the 'sched_load_balance' flag of a cpuset with non-empty CPUs changes,
40766 - - or CPUs come or go from a cpuset with this flag enabled,
40767 - - or 'sched_relax_domain_level' value of a cpuset with non-empty CPUs
40768 - and with this flag enabled changes,
40769 - - or a cpuset with non-empty CPUs and with this flag enabled is removed,
40770 - - or a cpu is offlined/onlined.
40771 +Whenever the 'sched_load_balance' flag changes, or CPUs come or go
40772 +from a cpuset with this flag enabled, or a cpuset with this flag
40773 +enabled is removed, the cpuset code builds a new such partition and
40774 +passes it to the scheduler sched domain setup code, to have the sched
40775 +domains rebuilt as necessary.
40776
40777 This partition exactly defines what sched domains the scheduler should
40778 -setup - one sched domain for each element (struct cpumask) in the
40779 -partition.
40780 +setup - one sched domain for each element (cpumask_t) in the partition.
40781
40782 The scheduler remembers the currently active sched domain partitions.
40783 When the scheduler routine partition_sched_domains() is invoked from
40784 @@ -568,7 +559,7 @@
40785 requests 0 and others are -1 then 0 is used.
40786
40787 Note that modifying this file will have both good and bad effects,
40788 -and whether it is acceptable or not depends on your situation.
40789 +and whether it is acceptable or not will be depend on your situation.
40790 Don't modify this file if you are not sure.
40791
40792 If your situation is:
40793 @@ -609,15 +600,19 @@
40794
40795 If a cpuset has its 'cpus' modified, then each task in that cpuset
40796 will have its allowed CPU placement changed immediately. Similarly,
40797 -if a tasks pid is written to another cpusets 'tasks' file, then its
40798 -allowed CPU placement is changed immediately. If such a task had been
40799 -bound to some subset of its cpuset using the sched_setaffinity() call,
40800 -the task will be allowed to run on any CPU allowed in its new cpuset,
40801 -negating the effect of the prior sched_setaffinity() call.
40802 +if a tasks pid is written to a cpusets 'tasks' file, in either its
40803 +current cpuset or another cpuset, then its allowed CPU placement is
40804 +changed immediately. If such a task had been bound to some subset
40805 +of its cpuset using the sched_setaffinity() call, the task will be
40806 +allowed to run on any CPU allowed in its new cpuset, negating the
40807 +affect of the prior sched_setaffinity() call.
40808
40809 In summary, the memory placement of a task whose cpuset is changed is
40810 updated by the kernel, on the next allocation of a page for that task,
40811 -and the processor placement is updated immediately.
40812 +but the processor placement is not updated, until that tasks pid is
40813 +rewritten to the 'tasks' file of its cpuset. This is done to avoid
40814 +impacting the scheduler code in the kernel with a check for changes
40815 +in a tasks processor placement.
40816
40817 Normally, once a page is allocated (given a physical page
40818 of main memory) then that page stays on whatever node it
40819 @@ -686,14 +681,10 @@
40820 # The next line should display '/Charlie'
40821 cat /proc/self/cpuset
40822
40823 -There are ways to query or modify cpusets:
40824 - - via the cpuset file system directly, using the various cd, mkdir, echo,
40825 - cat, rmdir commands from the shell, or their equivalent from C.
40826 - - via the C library libcpuset.
40827 - - via the C library libcgroup.
40828 - (http://sourceforge.net/proects/libcg/)
40829 - - via the python application cset.
40830 - (http://developer.novell.com/wiki/index.php/Cpuset)
40831 +In the future, a C library interface to cpusets will likely be
40832 +available. For now, the only way to query or modify cpusets is
40833 +via the cpuset file system, using the various cd, mkdir, echo, cat,
40834 +rmdir commands from the shell, or their equivalent from C.
40835
40836 The sched_setaffinity calls can also be done at the shell prompt using
40837 SGI's runon or Robert Love's taskset. The mbind and set_mempolicy
40838 @@ -765,7 +756,7 @@
40839
40840 is equivalent to
40841
40842 -mount -t cgroup -ocpuset,noprefix X /dev/cpuset
40843 +mount -t cgroup -ocpuset X /dev/cpuset
40844 echo "/sbin/cpuset_release_agent" > /dev/cpuset/release_agent
40845
40846 2.2 Adding/removing cpus
40847 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/cgroups/memcg_test.txt linux-2.6.29-rc3.owrt/Documentation/cgroups/memcg_test.txt
40848 --- linux-2.6.29.owrt/Documentation/cgroups/memcg_test.txt 2009-05-10 22:04:39.000000000 +0200
40849 +++ linux-2.6.29-rc3.owrt/Documentation/cgroups/memcg_test.txt 2009-05-10 23:48:28.000000000 +0200
40850 @@ -1,6 +1,6 @@
40851 Memory Resource Controller(Memcg) Implementation Memo.
40852 -Last Updated: 2009/1/19
40853 -Base Kernel Version: based on 2.6.29-rc2.
40854 +Last Updated: 2008/12/15
40855 +Base Kernel Version: based on 2.6.28-rc8-mm.
40856
40857 Because VM is getting complex (one of reasons is memcg...), memcg's behavior
40858 is complex. This is a document for memcg's internal behavior.
40859 @@ -340,23 +340,3 @@
40860 # mount -t cgroup none /cgroup -t cpuset,memory,cpu,devices
40861
40862 and do task move, mkdir, rmdir etc...under this.
40863 -
40864 - 9.7 swapoff.
40865 - Besides management of swap is one of complicated parts of memcg,
40866 - call path of swap-in at swapoff is not same as usual swap-in path..
40867 - It's worth to be tested explicitly.
40868 -
40869 - For example, test like following is good.
40870 - (Shell-A)
40871 - # mount -t cgroup none /cgroup -t memory
40872 - # mkdir /cgroup/test
40873 - # echo 40M > /cgroup/test/memory.limit_in_bytes
40874 - # echo 0 > /cgroup/test/tasks
40875 - Run malloc(100M) program under this. You'll see 60M of swaps.
40876 - (Shell-B)
40877 - # move all tasks in /cgroup/test to /cgroup
40878 - # /sbin/swapoff -a
40879 - # rmdir /test/cgroup
40880 - # kill malloc task.
40881 -
40882 - Of course, tmpfs v.s. swapoff test should be tested, too.
40883 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/Changes linux-2.6.29-rc3.owrt/Documentation/Changes
40884 --- linux-2.6.29.owrt/Documentation/Changes 2009-05-10 22:04:39.000000000 +0200
40885 +++ linux-2.6.29-rc3.owrt/Documentation/Changes 2009-05-10 23:48:28.000000000 +0200
40886 @@ -33,12 +33,10 @@
40887 o binutils 2.12 # ld -v
40888 o util-linux 2.10o # fdformat --version
40889 o module-init-tools 0.9.10 # depmod -V
40890 -o e2fsprogs 1.41.4 # e2fsck -V
40891 +o e2fsprogs 1.29 # tune2fs
40892 o jfsutils 1.1.3 # fsck.jfs -V
40893 o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs
40894 o xfsprogs 2.6.0 # xfs_db -V
40895 -o squashfs-tools 4.0 # mksquashfs -version
40896 -o btrfs-progs 0.18 # btrfsck
40897 o pcmciautils 004 # pccardctl -V
40898 o quota-tools 3.09 # quota -V
40899 o PPP 2.4.0 # pppd --version
40900 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/CodingStyle linux-2.6.29-rc3.owrt/Documentation/CodingStyle
40901 --- linux-2.6.29.owrt/Documentation/CodingStyle 2009-05-10 22:04:39.000000000 +0200
40902 +++ linux-2.6.29-rc3.owrt/Documentation/CodingStyle 2009-05-10 23:48:28.000000000 +0200
40903 @@ -483,25 +483,17 @@
40904 (* (max steps 1)
40905 c-basic-offset)))
40906
40907 -(add-hook 'c-mode-common-hook
40908 - (lambda ()
40909 - ;; Add kernel style
40910 - (c-add-style
40911 - "linux-tabs-only"
40912 - '("linux" (c-offsets-alist
40913 - (arglist-cont-nonempty
40914 - c-lineup-gcc-asm-reg
40915 - c-lineup-arglist-tabs-only))))))
40916 -
40917 (add-hook 'c-mode-hook
40918 (lambda ()
40919 (let ((filename (buffer-file-name)))
40920 ;; Enable kernel mode for the appropriate files
40921 (when (and filename
40922 - (string-match (expand-file-name "~/src/linux-trees")
40923 - filename))
40924 + (string-match "~/src/linux-trees" filename))
40925 (setq indent-tabs-mode t)
40926 - (c-set-style "linux-tabs-only")))))
40927 + (c-set-style "linux")
40928 + (c-set-offset 'arglist-cont-nonempty
40929 + '(c-lineup-gcc-asm-reg
40930 + c-lineup-arglist-tabs-only))))))
40931
40932 This will make emacs go better with the kernel coding style for C
40933 files below ~/src/linux-trees.
40934 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/connector/cn_test.c linux-2.6.29-rc3.owrt/Documentation/connector/cn_test.c
40935 --- linux-2.6.29.owrt/Documentation/connector/cn_test.c 2009-05-10 22:04:39.000000000 +0200
40936 +++ linux-2.6.29-rc3.owrt/Documentation/connector/cn_test.c 2009-05-10 23:48:28.000000000 +0200
40937 @@ -137,7 +137,7 @@
40938
40939 memcpy(m + 1, data, m->len);
40940
40941 - cn_netlink_send(m, 0, GFP_ATOMIC);
40942 + cn_netlink_send(m, 0, gfp_any());
40943 kfree(m);
40944 }
40945
40946 @@ -160,8 +160,10 @@
40947 goto err_out;
40948 }
40949
40950 - setup_timer(&cn_test_timer, cn_test_timer_func, 0);
40951 + init_timer(&cn_test_timer);
40952 + cn_test_timer.function = cn_test_timer_func;
40953 cn_test_timer.expires = jiffies + HZ;
40954 + cn_test_timer.data = 0;
40955 add_timer(&cn_test_timer);
40956
40957 return 0;
40958 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/cpu-freq/user-guide.txt linux-2.6.29-rc3.owrt/Documentation/cpu-freq/user-guide.txt
40959 --- linux-2.6.29.owrt/Documentation/cpu-freq/user-guide.txt 2009-05-10 22:04:39.000000000 +0200
40960 +++ linux-2.6.29-rc3.owrt/Documentation/cpu-freq/user-guide.txt 2009-05-10 23:48:28.000000000 +0200
40961 @@ -195,3 +195,19 @@
40962 you can change the speed of the CPU,
40963 but only within the limits of
40964 scaling_min_freq and scaling_max_freq.
40965 +
40966 +
40967 +3.2 Deprecated Interfaces
40968 +-------------------------
40969 +
40970 +Depending on your kernel configuration, you might find the following
40971 +cpufreq-related files:
40972 +/proc/cpufreq
40973 +/proc/sys/cpu/*/speed
40974 +/proc/sys/cpu/*/speed-min
40975 +/proc/sys/cpu/*/speed-max
40976 +
40977 +These are files for deprecated interfaces to cpufreq, which offer far
40978 +less functionality. Because of this, these interfaces aren't described
40979 +here.
40980 +
40981 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/DMA-API.txt linux-2.6.29-rc3.owrt/Documentation/DMA-API.txt
40982 --- linux-2.6.29.owrt/Documentation/DMA-API.txt 2009-05-10 22:04:39.000000000 +0200
40983 +++ linux-2.6.29-rc3.owrt/Documentation/DMA-API.txt 2009-05-10 23:48:28.000000000 +0200
40984 @@ -5,7 +5,7 @@
40985
40986 This document describes the DMA API. For a more gentle introduction
40987 phrased in terms of the pci_ equivalents (and actual examples) see
40988 -Documentation/PCI/PCI-DMA-mapping.txt.
40989 +DMA-mapping.txt
40990
40991 This API is split into two pieces. Part I describes the API and the
40992 corresponding pci_ API. Part II describes the extensions to the API
40993 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/DocBook/device-drivers.tmpl linux-2.6.29-rc3.owrt/Documentation/DocBook/device-drivers.tmpl
40994 --- linux-2.6.29.owrt/Documentation/DocBook/device-drivers.tmpl 2009-05-10 22:04:39.000000000 +0200
40995 +++ linux-2.6.29-rc3.owrt/Documentation/DocBook/device-drivers.tmpl 1970-01-01 01:00:00.000000000 +0100
40996 @@ -1,418 +0,0 @@
40997 -<?xml version="1.0" encoding="UTF-8"?>
40998 -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
40999 - "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
41000 -
41001 -<book id="LinuxDriversAPI">
41002 - <bookinfo>
41003 - <title>Linux Device Drivers</title>
41004 -
41005 - <legalnotice>
41006 - <para>
41007 - This documentation is free software; you can redistribute
41008 - it and/or modify it under the terms of the GNU General Public
41009 - License as published by the Free Software Foundation; either
41010 - version 2 of the License, or (at your option) any later
41011 - version.
41012 - </para>
41013 -
41014 - <para>
41015 - This program is distributed in the hope that it will be
41016 - useful, but WITHOUT ANY WARRANTY; without even the implied
41017 - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
41018 - See the GNU General Public License for more details.
41019 - </para>
41020 -
41021 - <para>
41022 - You should have received a copy of the GNU General Public
41023 - License along with this program; if not, write to the Free
41024 - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
41025 - MA 02111-1307 USA
41026 - </para>
41027 -
41028 - <para>
41029 - For more details see the file COPYING in the source
41030 - distribution of Linux.
41031 - </para>
41032 - </legalnotice>
41033 - </bookinfo>
41034 -
41035 -<toc></toc>
41036 -
41037 - <chapter id="Basics">
41038 - <title>Driver Basics</title>
41039 - <sect1><title>Driver Entry and Exit points</title>
41040 -!Iinclude/linux/init.h
41041 - </sect1>
41042 -
41043 - <sect1><title>Atomic and pointer manipulation</title>
41044 -!Iarch/x86/include/asm/atomic_32.h
41045 -!Iarch/x86/include/asm/unaligned.h
41046 - </sect1>
41047 -
41048 - <sect1><title>Delaying, scheduling, and timer routines</title>
41049 -!Iinclude/linux/sched.h
41050 -!Ekernel/sched.c
41051 -!Ekernel/timer.c
41052 - </sect1>
41053 - <sect1><title>High-resolution timers</title>
41054 -!Iinclude/linux/ktime.h
41055 -!Iinclude/linux/hrtimer.h
41056 -!Ekernel/hrtimer.c
41057 - </sect1>
41058 - <sect1><title>Workqueues and Kevents</title>
41059 -!Ekernel/workqueue.c
41060 - </sect1>
41061 - <sect1><title>Internal Functions</title>
41062 -!Ikernel/exit.c
41063 -!Ikernel/signal.c
41064 -!Iinclude/linux/kthread.h
41065 -!Ekernel/kthread.c
41066 - </sect1>
41067 -
41068 - <sect1><title>Kernel objects manipulation</title>
41069 -<!--
41070 -X!Iinclude/linux/kobject.h
41071 --->
41072 -!Elib/kobject.c
41073 - </sect1>
41074 -
41075 - <sect1><title>Kernel utility functions</title>
41076 -!Iinclude/linux/kernel.h
41077 -!Ekernel/printk.c
41078 -!Ekernel/panic.c
41079 -!Ekernel/sys.c
41080 -!Ekernel/rcupdate.c
41081 - </sect1>
41082 -
41083 - <sect1><title>Device Resource Management</title>
41084 -!Edrivers/base/devres.c
41085 - </sect1>
41086 -
41087 - </chapter>
41088 -
41089 - <chapter id="devdrivers">
41090 - <title>Device drivers infrastructure</title>
41091 - <sect1><title>Device Drivers Base</title>
41092 -<!--
41093 -X!Iinclude/linux/device.h
41094 --->
41095 -!Edrivers/base/driver.c
41096 -!Edrivers/base/core.c
41097 -!Edrivers/base/class.c
41098 -!Edrivers/base/firmware_class.c
41099 -!Edrivers/base/transport_class.c
41100 -<!-- Cannot be included, because
41101 - attribute_container_add_class_device_adapter
41102 - and attribute_container_classdev_to_container
41103 - exceed allowed 44 characters maximum
41104 -X!Edrivers/base/attribute_container.c
41105 --->
41106 -!Edrivers/base/sys.c
41107 -<!--
41108 -X!Edrivers/base/interface.c
41109 --->
41110 -!Edrivers/base/platform.c
41111 -!Edrivers/base/bus.c
41112 - </sect1>
41113 - <sect1><title>Device Drivers Power Management</title>
41114 -!Edrivers/base/power/main.c
41115 - </sect1>
41116 - <sect1><title>Device Drivers ACPI Support</title>
41117 -<!-- Internal functions only
41118 -X!Edrivers/acpi/sleep/main.c
41119 -X!Edrivers/acpi/sleep/wakeup.c
41120 -X!Edrivers/acpi/motherboard.c
41121 -X!Edrivers/acpi/bus.c
41122 --->
41123 -!Edrivers/acpi/scan.c
41124 -!Idrivers/acpi/scan.c
41125 -<!-- No correct structured comments
41126 -X!Edrivers/acpi/pci_bind.c
41127 --->
41128 - </sect1>
41129 - <sect1><title>Device drivers PnP support</title>
41130 -!Idrivers/pnp/core.c
41131 -<!-- No correct structured comments
41132 -X!Edrivers/pnp/system.c
41133 - -->
41134 -!Edrivers/pnp/card.c
41135 -!Idrivers/pnp/driver.c
41136 -!Edrivers/pnp/manager.c
41137 -!Edrivers/pnp/support.c
41138 - </sect1>
41139 - <sect1><title>Userspace IO devices</title>
41140 -!Edrivers/uio/uio.c
41141 -!Iinclude/linux/uio_driver.h
41142 - </sect1>
41143 - </chapter>
41144 -
41145 - <chapter id="parportdev">
41146 - <title>Parallel Port Devices</title>
41147 -!Iinclude/linux/parport.h
41148 -!Edrivers/parport/ieee1284.c
41149 -!Edrivers/parport/share.c
41150 -!Idrivers/parport/daisy.c
41151 - </chapter>
41152 -
41153 - <chapter id="message_devices">
41154 - <title>Message-based devices</title>
41155 - <sect1><title>Fusion message devices</title>
41156 -!Edrivers/message/fusion/mptbase.c
41157 -!Idrivers/message/fusion/mptbase.c
41158 -!Edrivers/message/fusion/mptscsih.c
41159 -!Idrivers/message/fusion/mptscsih.c
41160 -!Idrivers/message/fusion/mptctl.c
41161 -!Idrivers/message/fusion/mptspi.c
41162 -!Idrivers/message/fusion/mptfc.c
41163 -!Idrivers/message/fusion/mptlan.c
41164 - </sect1>
41165 - <sect1><title>I2O message devices</title>
41166 -!Iinclude/linux/i2o.h
41167 -!Idrivers/message/i2o/core.h
41168 -!Edrivers/message/i2o/iop.c
41169 -!Idrivers/message/i2o/iop.c
41170 -!Idrivers/message/i2o/config-osm.c
41171 -!Edrivers/message/i2o/exec-osm.c
41172 -!Idrivers/message/i2o/exec-osm.c
41173 -!Idrivers/message/i2o/bus-osm.c
41174 -!Edrivers/message/i2o/device.c
41175 -!Idrivers/message/i2o/device.c
41176 -!Idrivers/message/i2o/driver.c
41177 -!Idrivers/message/i2o/pci.c
41178 -!Idrivers/message/i2o/i2o_block.c
41179 -!Idrivers/message/i2o/i2o_scsi.c
41180 -!Idrivers/message/i2o/i2o_proc.c
41181 - </sect1>
41182 - </chapter>
41183 -
41184 - <chapter id="snddev">
41185 - <title>Sound Devices</title>
41186 -!Iinclude/sound/core.h
41187 -!Esound/sound_core.c
41188 -!Iinclude/sound/pcm.h
41189 -!Esound/core/pcm.c
41190 -!Esound/core/device.c
41191 -!Esound/core/info.c
41192 -!Esound/core/rawmidi.c
41193 -!Esound/core/sound.c
41194 -!Esound/core/memory.c
41195 -!Esound/core/pcm_memory.c
41196 -!Esound/core/init.c
41197 -!Esound/core/isadma.c
41198 -!Esound/core/control.c
41199 -!Esound/core/pcm_lib.c
41200 -!Esound/core/hwdep.c
41201 -!Esound/core/pcm_native.c
41202 -!Esound/core/memalloc.c
41203 -<!-- FIXME: Removed for now since no structured comments in source
41204 -X!Isound/sound_firmware.c
41205 --->
41206 - </chapter>
41207 -
41208 - <chapter id="uart16x50">
41209 - <title>16x50 UART Driver</title>
41210 -!Iinclude/linux/serial_core.h
41211 -!Edrivers/serial/serial_core.c
41212 -!Edrivers/serial/8250.c
41213 - </chapter>
41214 -
41215 - <chapter id="fbdev">
41216 - <title>Frame Buffer Library</title>
41217 -
41218 - <para>
41219 - The frame buffer drivers depend heavily on four data structures.
41220 - These structures are declared in include/linux/fb.h. They are
41221 - fb_info, fb_var_screeninfo, fb_fix_screeninfo and fb_monospecs.
41222 - The last three can be made available to and from userland.
41223 - </para>
41224 -
41225 - <para>
41226 - fb_info defines the current state of a particular video card.
41227 - Inside fb_info, there exists a fb_ops structure which is a
41228 - collection of needed functions to make fbdev and fbcon work.
41229 - fb_info is only visible to the kernel.
41230 - </para>
41231 -
41232 - <para>
41233 - fb_var_screeninfo is used to describe the features of a video card
41234 - that are user defined. With fb_var_screeninfo, things such as
41235 - depth and the resolution may be defined.
41236 - </para>
41237 -
41238 - <para>
41239 - The next structure is fb_fix_screeninfo. This defines the
41240 - properties of a card that are created when a mode is set and can't
41241 - be changed otherwise. A good example of this is the start of the
41242 - frame buffer memory. This "locks" the address of the frame buffer
41243 - memory, so that it cannot be changed or moved.
41244 - </para>
41245 -
41246 - <para>
41247 - The last structure is fb_monospecs. In the old API, there was
41248 - little importance for fb_monospecs. This allowed for forbidden things
41249 - such as setting a mode of 800x600 on a fix frequency monitor. With
41250 - the new API, fb_monospecs prevents such things, and if used
41251 - correctly, can prevent a monitor from being cooked. fb_monospecs
41252 - will not be useful until kernels 2.5.x.
41253 - </para>
41254 -
41255 - <sect1><title>Frame Buffer Memory</title>
41256 -!Edrivers/video/fbmem.c
41257 - </sect1>
41258 -<!--
41259 - <sect1><title>Frame Buffer Console</title>
41260 -X!Edrivers/video/console/fbcon.c
41261 - </sect1>
41262 --->
41263 - <sect1><title>Frame Buffer Colormap</title>
41264 -!Edrivers/video/fbcmap.c
41265 - </sect1>
41266 -<!-- FIXME:
41267 - drivers/video/fbgen.c has no docs, which stuffs up the sgml. Comment
41268 - out until somebody adds docs. KAO
41269 - <sect1><title>Frame Buffer Generic Functions</title>
41270 -X!Idrivers/video/fbgen.c
41271 - </sect1>
41272 -KAO -->
41273 - <sect1><title>Frame Buffer Video Mode Database</title>
41274 -!Idrivers/video/modedb.c
41275 -!Edrivers/video/modedb.c
41276 - </sect1>
41277 - <sect1><title>Frame Buffer Macintosh Video Mode Database</title>
41278 -!Edrivers/video/macmodes.c
41279 - </sect1>
41280 - <sect1><title>Frame Buffer Fonts</title>
41281 - <para>
41282 - Refer to the file drivers/video/console/fonts.c for more information.
41283 - </para>
41284 -<!-- FIXME: Removed for now since no structured comments in source
41285 -X!Idrivers/video/console/fonts.c
41286 --->
41287 - </sect1>
41288 - </chapter>
41289 -
41290 - <chapter id="input_subsystem">
41291 - <title>Input Subsystem</title>
41292 -!Iinclude/linux/input.h
41293 -!Edrivers/input/input.c
41294 -!Edrivers/input/ff-core.c
41295 -!Edrivers/input/ff-memless.c
41296 - </chapter>
41297 -
41298 - <chapter id="spi">
41299 - <title>Serial Peripheral Interface (SPI)</title>
41300 - <para>
41301 - SPI is the "Serial Peripheral Interface", widely used with
41302 - embedded systems because it is a simple and efficient
41303 - interface: basically a multiplexed shift register.
41304 - Its three signal wires hold a clock (SCK, often in the range
41305 - of 1-20 MHz), a "Master Out, Slave In" (MOSI) data line, and
41306 - a "Master In, Slave Out" (MISO) data line.
41307 - SPI is a full duplex protocol; for each bit shifted out the
41308 - MOSI line (one per clock) another is shifted in on the MISO line.
41309 - Those bits are assembled into words of various sizes on the
41310 - way to and from system memory.
41311 - An additional chipselect line is usually active-low (nCS);
41312 - four signals are normally used for each peripheral, plus
41313 - sometimes an interrupt.
41314 - </para>
41315 - <para>
41316 - The SPI bus facilities listed here provide a generalized
41317 - interface to declare SPI busses and devices, manage them
41318 - according to the standard Linux driver model, and perform
41319 - input/output operations.
41320 - At this time, only "master" side interfaces are supported,
41321 - where Linux talks to SPI peripherals and does not implement
41322 - such a peripheral itself.
41323 - (Interfaces to support implementing SPI slaves would
41324 - necessarily look different.)
41325 - </para>
41326 - <para>
41327 - The programming interface is structured around two kinds of driver,
41328 - and two kinds of device.
41329 - A "Controller Driver" abstracts the controller hardware, which may
41330 - be as simple as a set of GPIO pins or as complex as a pair of FIFOs
41331 - connected to dual DMA engines on the other side of the SPI shift
41332 - register (maximizing throughput). Such drivers bridge between
41333 - whatever bus they sit on (often the platform bus) and SPI, and
41334 - expose the SPI side of their device as a
41335 - <structname>struct spi_master</structname>.
41336 - SPI devices are children of that master, represented as a
41337 - <structname>struct spi_device</structname> and manufactured from
41338 - <structname>struct spi_board_info</structname> descriptors which
41339 - are usually provided by board-specific initialization code.
41340 - A <structname>struct spi_driver</structname> is called a
41341 - "Protocol Driver", and is bound to a spi_device using normal
41342 - driver model calls.
41343 - </para>
41344 - <para>
41345 - The I/O model is a set of queued messages. Protocol drivers
41346 - submit one or more <structname>struct spi_message</structname>
41347 - objects, which are processed and completed asynchronously.
41348 - (There are synchronous wrappers, however.) Messages are
41349 - built from one or more <structname>struct spi_transfer</structname>
41350 - objects, each of which wraps a full duplex SPI transfer.
41351 - A variety of protocol tweaking options are needed, because
41352 - different chips adopt very different policies for how they
41353 - use the bits transferred with SPI.
41354 - </para>
41355 -!Iinclude/linux/spi/spi.h
41356 -!Fdrivers/spi/spi.c spi_register_board_info
41357 -!Edrivers/spi/spi.c
41358 - </chapter>
41359 -
41360 - <chapter id="i2c">
41361 - <title>I<superscript>2</superscript>C and SMBus Subsystem</title>
41362 -
41363 - <para>
41364 - I<superscript>2</superscript>C (or without fancy typography, "I2C")
41365 - is an acronym for the "Inter-IC" bus, a simple bus protocol which is
41366 - widely used where low data rate communications suffice.
41367 - Since it's also a licensed trademark, some vendors use another
41368 - name (such as "Two-Wire Interface", TWI) for the same bus.
41369 - I2C only needs two signals (SCL for clock, SDA for data), conserving
41370 - board real estate and minimizing signal quality issues.
41371 - Most I2C devices use seven bit addresses, and bus speeds of up
41372 - to 400 kHz; there's a high speed extension (3.4 MHz) that's not yet
41373 - found wide use.
41374 - I2C is a multi-master bus; open drain signaling is used to
41375 - arbitrate between masters, as well as to handshake and to
41376 - synchronize clocks from slower clients.
41377 - </para>
41378 -
41379 - <para>
41380 - The Linux I2C programming interfaces support only the master
41381 - side of bus interactions, not the slave side.
41382 - The programming interface is structured around two kinds of driver,
41383 - and two kinds of device.
41384 - An I2C "Adapter Driver" abstracts the controller hardware; it binds
41385 - to a physical device (perhaps a PCI device or platform_device) and
41386 - exposes a <structname>struct i2c_adapter</structname> representing
41387 - each I2C bus segment it manages.
41388 - On each I2C bus segment will be I2C devices represented by a
41389 - <structname>struct i2c_client</structname>. Those devices will
41390 - be bound to a <structname>struct i2c_driver</structname>,
41391 - which should follow the standard Linux driver model.
41392 - (At this writing, a legacy model is more widely used.)
41393 - There are functions to perform various I2C protocol operations; at
41394 - this writing all such functions are usable only from task context.
41395 - </para>
41396 -
41397 - <para>
41398 - The System Management Bus (SMBus) is a sibling protocol. Most SMBus
41399 - systems are also I2C conformant. The electrical constraints are
41400 - tighter for SMBus, and it standardizes particular protocol messages
41401 - and idioms. Controllers that support I2C can also support most
41402 - SMBus operations, but SMBus controllers don't support all the protocol
41403 - options that an I2C controller will.
41404 - There are functions to perform various SMBus protocol operations,
41405 - either using I2C primitives or by issuing SMBus commands to
41406 - i2c_adapter devices which don't support those I2C operations.
41407 - </para>
41408 -
41409 -!Iinclude/linux/i2c.h
41410 -!Fdrivers/i2c/i2c-boardinfo.c i2c_register_board_info
41411 -!Edrivers/i2c/i2c-core.c
41412 - </chapter>
41413 -
41414 -</book>
41415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/DocBook/kernel-api.tmpl linux-2.6.29-rc3.owrt/Documentation/DocBook/kernel-api.tmpl
41416 --- linux-2.6.29.owrt/Documentation/DocBook/kernel-api.tmpl 2009-05-10 22:04:39.000000000 +0200
41417 +++ linux-2.6.29-rc3.owrt/Documentation/DocBook/kernel-api.tmpl 2009-05-10 23:48:28.000000000 +0200
41418 @@ -38,6 +38,58 @@
41419
41420 <toc></toc>
41421
41422 + <chapter id="Basics">
41423 + <title>Driver Basics</title>
41424 + <sect1><title>Driver Entry and Exit points</title>
41425 +!Iinclude/linux/init.h
41426 + </sect1>
41427 +
41428 + <sect1><title>Atomic and pointer manipulation</title>
41429 +!Iarch/x86/include/asm/atomic_32.h
41430 +!Iarch/x86/include/asm/unaligned.h
41431 + </sect1>
41432 +
41433 + <sect1><title>Delaying, scheduling, and timer routines</title>
41434 +!Iinclude/linux/sched.h
41435 +!Ekernel/sched.c
41436 +!Ekernel/timer.c
41437 + </sect1>
41438 + <sect1><title>High-resolution timers</title>
41439 +!Iinclude/linux/ktime.h
41440 +!Iinclude/linux/hrtimer.h
41441 +!Ekernel/hrtimer.c
41442 + </sect1>
41443 + <sect1><title>Workqueues and Kevents</title>
41444 +!Ekernel/workqueue.c
41445 + </sect1>
41446 + <sect1><title>Internal Functions</title>
41447 +!Ikernel/exit.c
41448 +!Ikernel/signal.c
41449 +!Iinclude/linux/kthread.h
41450 +!Ekernel/kthread.c
41451 + </sect1>
41452 +
41453 + <sect1><title>Kernel objects manipulation</title>
41454 +<!--
41455 +X!Iinclude/linux/kobject.h
41456 +-->
41457 +!Elib/kobject.c
41458 + </sect1>
41459 +
41460 + <sect1><title>Kernel utility functions</title>
41461 +!Iinclude/linux/kernel.h
41462 +!Ekernel/printk.c
41463 +!Ekernel/panic.c
41464 +!Ekernel/sys.c
41465 +!Ekernel/rcupdate.c
41466 + </sect1>
41467 +
41468 + <sect1><title>Device Resource Management</title>
41469 +!Edrivers/base/devres.c
41470 + </sect1>
41471 +
41472 + </chapter>
41473 +
41474 <chapter id="adt">
41475 <title>Data Types</title>
41476 <sect1><title>Doubly Linked Lists</title>
41477 @@ -246,6 +298,62 @@
41478 !Ikernel/acct.c
41479 </chapter>
41480
41481 + <chapter id="devdrivers">
41482 + <title>Device drivers infrastructure</title>
41483 + <sect1><title>Device Drivers Base</title>
41484 +<!--
41485 +X!Iinclude/linux/device.h
41486 +-->
41487 +!Edrivers/base/driver.c
41488 +!Edrivers/base/core.c
41489 +!Edrivers/base/class.c
41490 +!Edrivers/base/firmware_class.c
41491 +!Edrivers/base/transport_class.c
41492 +<!-- Cannot be included, because
41493 + attribute_container_add_class_device_adapter
41494 + and attribute_container_classdev_to_container
41495 + exceed allowed 44 characters maximum
41496 +X!Edrivers/base/attribute_container.c
41497 +-->
41498 +!Edrivers/base/sys.c
41499 +<!--
41500 +X!Edrivers/base/interface.c
41501 +-->
41502 +!Edrivers/base/platform.c
41503 +!Edrivers/base/bus.c
41504 + </sect1>
41505 + <sect1><title>Device Drivers Power Management</title>
41506 +!Edrivers/base/power/main.c
41507 + </sect1>
41508 + <sect1><title>Device Drivers ACPI Support</title>
41509 +<!-- Internal functions only
41510 +X!Edrivers/acpi/sleep/main.c
41511 +X!Edrivers/acpi/sleep/wakeup.c
41512 +X!Edrivers/acpi/motherboard.c
41513 +X!Edrivers/acpi/bus.c
41514 +-->
41515 +!Edrivers/acpi/scan.c
41516 +!Idrivers/acpi/scan.c
41517 +<!-- No correct structured comments
41518 +X!Edrivers/acpi/pci_bind.c
41519 +-->
41520 + </sect1>
41521 + <sect1><title>Device drivers PnP support</title>
41522 +!Idrivers/pnp/core.c
41523 +<!-- No correct structured comments
41524 +X!Edrivers/pnp/system.c
41525 + -->
41526 +!Edrivers/pnp/card.c
41527 +!Idrivers/pnp/driver.c
41528 +!Edrivers/pnp/manager.c
41529 +!Edrivers/pnp/support.c
41530 + </sect1>
41531 + <sect1><title>Userspace IO devices</title>
41532 +!Edrivers/uio/uio.c
41533 +!Iinclude/linux/uio_driver.h
41534 + </sect1>
41535 + </chapter>
41536 +
41537 <chapter id="blkdev">
41538 <title>Block Devices</title>
41539 !Eblock/blk-core.c
41540 @@ -273,6 +381,275 @@
41541 !Edrivers/char/misc.c
41542 </chapter>
41543
41544 + <chapter id="parportdev">
41545 + <title>Parallel Port Devices</title>
41546 +!Iinclude/linux/parport.h
41547 +!Edrivers/parport/ieee1284.c
41548 +!Edrivers/parport/share.c
41549 +!Idrivers/parport/daisy.c
41550 + </chapter>
41551 +
41552 + <chapter id="message_devices">
41553 + <title>Message-based devices</title>
41554 + <sect1><title>Fusion message devices</title>
41555 +!Edrivers/message/fusion/mptbase.c
41556 +!Idrivers/message/fusion/mptbase.c
41557 +!Edrivers/message/fusion/mptscsih.c
41558 +!Idrivers/message/fusion/mptscsih.c
41559 +!Idrivers/message/fusion/mptctl.c
41560 +!Idrivers/message/fusion/mptspi.c
41561 +!Idrivers/message/fusion/mptfc.c
41562 +!Idrivers/message/fusion/mptlan.c
41563 + </sect1>
41564 + <sect1><title>I2O message devices</title>
41565 +!Iinclude/linux/i2o.h
41566 +!Idrivers/message/i2o/core.h
41567 +!Edrivers/message/i2o/iop.c
41568 +!Idrivers/message/i2o/iop.c
41569 +!Idrivers/message/i2o/config-osm.c
41570 +!Edrivers/message/i2o/exec-osm.c
41571 +!Idrivers/message/i2o/exec-osm.c
41572 +!Idrivers/message/i2o/bus-osm.c
41573 +!Edrivers/message/i2o/device.c
41574 +!Idrivers/message/i2o/device.c
41575 +!Idrivers/message/i2o/driver.c
41576 +!Idrivers/message/i2o/pci.c
41577 +!Idrivers/message/i2o/i2o_block.c
41578 +!Idrivers/message/i2o/i2o_scsi.c
41579 +!Idrivers/message/i2o/i2o_proc.c
41580 + </sect1>
41581 + </chapter>
41582 +
41583 + <chapter id="snddev">
41584 + <title>Sound Devices</title>
41585 +!Iinclude/sound/core.h
41586 +!Esound/sound_core.c
41587 +!Iinclude/sound/pcm.h
41588 +!Esound/core/pcm.c
41589 +!Esound/core/device.c
41590 +!Esound/core/info.c
41591 +!Esound/core/rawmidi.c
41592 +!Esound/core/sound.c
41593 +!Esound/core/memory.c
41594 +!Esound/core/pcm_memory.c
41595 +!Esound/core/init.c
41596 +!Esound/core/isadma.c
41597 +!Esound/core/control.c
41598 +!Esound/core/pcm_lib.c
41599 +!Esound/core/hwdep.c
41600 +!Esound/core/pcm_native.c
41601 +!Esound/core/memalloc.c
41602 +<!-- FIXME: Removed for now since no structured comments in source
41603 +X!Isound/sound_firmware.c
41604 +-->
41605 + </chapter>
41606 +
41607 + <chapter id="uart16x50">
41608 + <title>16x50 UART Driver</title>
41609 +!Iinclude/linux/serial_core.h
41610 +!Edrivers/serial/serial_core.c
41611 +!Edrivers/serial/8250.c
41612 + </chapter>
41613 +
41614 + <chapter id="fbdev">
41615 + <title>Frame Buffer Library</title>
41616 +
41617 + <para>
41618 + The frame buffer drivers depend heavily on four data structures.
41619 + These structures are declared in include/linux/fb.h. They are
41620 + fb_info, fb_var_screeninfo, fb_fix_screeninfo and fb_monospecs.
41621 + The last three can be made available to and from userland.
41622 + </para>
41623 +
41624 + <para>
41625 + fb_info defines the current state of a particular video card.
41626 + Inside fb_info, there exists a fb_ops structure which is a
41627 + collection of needed functions to make fbdev and fbcon work.
41628 + fb_info is only visible to the kernel.
41629 + </para>
41630 +
41631 + <para>
41632 + fb_var_screeninfo is used to describe the features of a video card
41633 + that are user defined. With fb_var_screeninfo, things such as
41634 + depth and the resolution may be defined.
41635 + </para>
41636 +
41637 + <para>
41638 + The next structure is fb_fix_screeninfo. This defines the
41639 + properties of a card that are created when a mode is set and can't
41640 + be changed otherwise. A good example of this is the start of the
41641 + frame buffer memory. This "locks" the address of the frame buffer
41642 + memory, so that it cannot be changed or moved.
41643 + </para>
41644 +
41645 + <para>
41646 + The last structure is fb_monospecs. In the old API, there was
41647 + little importance for fb_monospecs. This allowed for forbidden things
41648 + such as setting a mode of 800x600 on a fix frequency monitor. With
41649 + the new API, fb_monospecs prevents such things, and if used
41650 + correctly, can prevent a monitor from being cooked. fb_monospecs
41651 + will not be useful until kernels 2.5.x.
41652 + </para>
41653 +
41654 + <sect1><title>Frame Buffer Memory</title>
41655 +!Edrivers/video/fbmem.c
41656 + </sect1>
41657 +<!--
41658 + <sect1><title>Frame Buffer Console</title>
41659 +X!Edrivers/video/console/fbcon.c
41660 + </sect1>
41661 +-->
41662 + <sect1><title>Frame Buffer Colormap</title>
41663 +!Edrivers/video/fbcmap.c
41664 + </sect1>
41665 +<!-- FIXME:
41666 + drivers/video/fbgen.c has no docs, which stuffs up the sgml. Comment
41667 + out until somebody adds docs. KAO
41668 + <sect1><title>Frame Buffer Generic Functions</title>
41669 +X!Idrivers/video/fbgen.c
41670 + </sect1>
41671 +KAO -->
41672 + <sect1><title>Frame Buffer Video Mode Database</title>
41673 +!Idrivers/video/modedb.c
41674 +!Edrivers/video/modedb.c
41675 + </sect1>
41676 + <sect1><title>Frame Buffer Macintosh Video Mode Database</title>
41677 +!Edrivers/video/macmodes.c
41678 + </sect1>
41679 + <sect1><title>Frame Buffer Fonts</title>
41680 + <para>
41681 + Refer to the file drivers/video/console/fonts.c for more information.
41682 + </para>
41683 +<!-- FIXME: Removed for now since no structured comments in source
41684 +X!Idrivers/video/console/fonts.c
41685 +-->
41686 + </sect1>
41687 + </chapter>
41688 +
41689 + <chapter id="input_subsystem">
41690 + <title>Input Subsystem</title>
41691 +!Iinclude/linux/input.h
41692 +!Edrivers/input/input.c
41693 +!Edrivers/input/ff-core.c
41694 +!Edrivers/input/ff-memless.c
41695 + </chapter>
41696 +
41697 + <chapter id="spi">
41698 + <title>Serial Peripheral Interface (SPI)</title>
41699 + <para>
41700 + SPI is the "Serial Peripheral Interface", widely used with
41701 + embedded systems because it is a simple and efficient
41702 + interface: basically a multiplexed shift register.
41703 + Its three signal wires hold a clock (SCK, often in the range
41704 + of 1-20 MHz), a "Master Out, Slave In" (MOSI) data line, and
41705 + a "Master In, Slave Out" (MISO) data line.
41706 + SPI is a full duplex protocol; for each bit shifted out the
41707 + MOSI line (one per clock) another is shifted in on the MISO line.
41708 + Those bits are assembled into words of various sizes on the
41709 + way to and from system memory.
41710 + An additional chipselect line is usually active-low (nCS);
41711 + four signals are normally used for each peripheral, plus
41712 + sometimes an interrupt.
41713 + </para>
41714 + <para>
41715 + The SPI bus facilities listed here provide a generalized
41716 + interface to declare SPI busses and devices, manage them
41717 + according to the standard Linux driver model, and perform
41718 + input/output operations.
41719 + At this time, only "master" side interfaces are supported,
41720 + where Linux talks to SPI peripherals and does not implement
41721 + such a peripheral itself.
41722 + (Interfaces to support implementing SPI slaves would
41723 + necessarily look different.)
41724 + </para>
41725 + <para>
41726 + The programming interface is structured around two kinds of driver,
41727 + and two kinds of device.
41728 + A "Controller Driver" abstracts the controller hardware, which may
41729 + be as simple as a set of GPIO pins or as complex as a pair of FIFOs
41730 + connected to dual DMA engines on the other side of the SPI shift
41731 + register (maximizing throughput). Such drivers bridge between
41732 + whatever bus they sit on (often the platform bus) and SPI, and
41733 + expose the SPI side of their device as a
41734 + <structname>struct spi_master</structname>.
41735 + SPI devices are children of that master, represented as a
41736 + <structname>struct spi_device</structname> and manufactured from
41737 + <structname>struct spi_board_info</structname> descriptors which
41738 + are usually provided by board-specific initialization code.
41739 + A <structname>struct spi_driver</structname> is called a
41740 + "Protocol Driver", and is bound to a spi_device using normal
41741 + driver model calls.
41742 + </para>
41743 + <para>
41744 + The I/O model is a set of queued messages. Protocol drivers
41745 + submit one or more <structname>struct spi_message</structname>
41746 + objects, which are processed and completed asynchronously.
41747 + (There are synchronous wrappers, however.) Messages are
41748 + built from one or more <structname>struct spi_transfer</structname>
41749 + objects, each of which wraps a full duplex SPI transfer.
41750 + A variety of protocol tweaking options are needed, because
41751 + different chips adopt very different policies for how they
41752 + use the bits transferred with SPI.
41753 + </para>
41754 +!Iinclude/linux/spi/spi.h
41755 +!Fdrivers/spi/spi.c spi_register_board_info
41756 +!Edrivers/spi/spi.c
41757 + </chapter>
41758 +
41759 + <chapter id="i2c">
41760 + <title>I<superscript>2</superscript>C and SMBus Subsystem</title>
41761 +
41762 + <para>
41763 + I<superscript>2</superscript>C (or without fancy typography, "I2C")
41764 + is an acronym for the "Inter-IC" bus, a simple bus protocol which is
41765 + widely used where low data rate communications suffice.
41766 + Since it's also a licensed trademark, some vendors use another
41767 + name (such as "Two-Wire Interface", TWI) for the same bus.
41768 + I2C only needs two signals (SCL for clock, SDA for data), conserving
41769 + board real estate and minimizing signal quality issues.
41770 + Most I2C devices use seven bit addresses, and bus speeds of up
41771 + to 400 kHz; there's a high speed extension (3.4 MHz) that's not yet
41772 + found wide use.
41773 + I2C is a multi-master bus; open drain signaling is used to
41774 + arbitrate between masters, as well as to handshake and to
41775 + synchronize clocks from slower clients.
41776 + </para>
41777 +
41778 + <para>
41779 + The Linux I2C programming interfaces support only the master
41780 + side of bus interactions, not the slave side.
41781 + The programming interface is structured around two kinds of driver,
41782 + and two kinds of device.
41783 + An I2C "Adapter Driver" abstracts the controller hardware; it binds
41784 + to a physical device (perhaps a PCI device or platform_device) and
41785 + exposes a <structname>struct i2c_adapter</structname> representing
41786 + each I2C bus segment it manages.
41787 + On each I2C bus segment will be I2C devices represented by a
41788 + <structname>struct i2c_client</structname>. Those devices will
41789 + be bound to a <structname>struct i2c_driver</structname>,
41790 + which should follow the standard Linux driver model.
41791 + (At this writing, a legacy model is more widely used.)
41792 + There are functions to perform various I2C protocol operations; at
41793 + this writing all such functions are usable only from task context.
41794 + </para>
41795 +
41796 + <para>
41797 + The System Management Bus (SMBus) is a sibling protocol. Most SMBus
41798 + systems are also I2C conformant. The electrical constraints are
41799 + tighter for SMBus, and it standardizes particular protocol messages
41800 + and idioms. Controllers that support I2C can also support most
41801 + SMBus operations, but SMBus controllers don't support all the protocol
41802 + options that an I2C controller will.
41803 + There are functions to perform various SMBus protocol operations,
41804 + either using I2C primitives or by issuing SMBus commands to
41805 + i2c_adapter devices which don't support those I2C operations.
41806 + </para>
41807 +
41808 +!Iinclude/linux/i2c.h
41809 +!Fdrivers/i2c/i2c-boardinfo.c i2c_register_board_info
41810 +!Edrivers/i2c/i2c-core.c
41811 + </chapter>
41812 +
41813 <chapter id="clk">
41814 <title>Clock Framework</title>
41815
41816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/DocBook/Makefile linux-2.6.29-rc3.owrt/Documentation/DocBook/Makefile
41817 --- linux-2.6.29.owrt/Documentation/DocBook/Makefile 2009-05-10 22:04:39.000000000 +0200
41818 +++ linux-2.6.29-rc3.owrt/Documentation/DocBook/Makefile 2009-05-10 23:48:28.000000000 +0200
41819 @@ -6,7 +6,7 @@
41820 # To add a new book the only step required is to add the book to the
41821 # list of DOCBOOKS.
41822
41823 -DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
41824 +DOCBOOKS := z8530book.xml mcabook.xml \
41825 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
41826 procfs-guide.xml writing_usb_driver.xml networking.xml \
41827 kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
41828 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/DocBook/uio-howto.tmpl linux-2.6.29-rc3.owrt/Documentation/DocBook/uio-howto.tmpl
41829 --- linux-2.6.29.owrt/Documentation/DocBook/uio-howto.tmpl 2009-05-10 22:04:39.000000000 +0200
41830 +++ linux-2.6.29-rc3.owrt/Documentation/DocBook/uio-howto.tmpl 2009-05-10 23:48:28.000000000 +0200
41831 @@ -42,12 +42,6 @@
41832
41833 <revhistory>
41834 <revision>
41835 - <revnumber>0.7</revnumber>
41836 - <date>2008-12-23</date>
41837 - <authorinitials>hjk</authorinitials>
41838 - <revremark>Added generic platform drivers and offset attribute.</revremark>
41839 - </revision>
41840 - <revision>
41841 <revnumber>0.6</revnumber>
41842 <date>2008-12-05</date>
41843 <authorinitials>hjk</authorinitials>
41844 @@ -318,16 +312,6 @@
41845 pointed to by addr.
41846 </para>
41847 </listitem>
41848 -<listitem>
41849 - <para>
41850 - <filename>offset</filename>: The offset, in bytes, that has to be
41851 - added to the pointer returned by <function>mmap()</function> to get
41852 - to the actual device memory. This is important if the device's memory
41853 - is not page aligned. Remember that pointers returned by
41854 - <function>mmap()</function> are always page aligned, so it is good
41855 - style to always add this offset.
41856 - </para>
41857 -</listitem>
41858 </itemizedlist>
41859
41860 <para>
41861 @@ -610,78 +594,6 @@
41862 </para>
41863 </sect1>
41864
41865 -<sect1 id="using_uio_pdrv">
41866 -<title>Using uio_pdrv for platform devices</title>
41867 - <para>
41868 - In many cases, UIO drivers for platform devices can be handled in a
41869 - generic way. In the same place where you define your
41870 - <varname>struct platform_device</varname>, you simply also implement
41871 - your interrupt handler and fill your
41872 - <varname>struct uio_info</varname>. A pointer to this
41873 - <varname>struct uio_info</varname> is then used as
41874 - <varname>platform_data</varname> for your platform device.
41875 - </para>
41876 - <para>
41877 - You also need to set up an array of <varname>struct resource</varname>
41878 - containing addresses and sizes of your memory mappings. This
41879 - information is passed to the driver using the
41880 - <varname>.resource</varname> and <varname>.num_resources</varname>
41881 - elements of <varname>struct platform_device</varname>.
41882 - </para>
41883 - <para>
41884 - You now have to set the <varname>.name</varname> element of
41885 - <varname>struct platform_device</varname> to
41886 - <varname>"uio_pdrv"</varname> to use the generic UIO platform device
41887 - driver. This driver will fill the <varname>mem[]</varname> array
41888 - according to the resources given, and register the device.
41889 - </para>
41890 - <para>
41891 - The advantage of this approach is that you only have to edit a file
41892 - you need to edit anyway. You do not have to create an extra driver.
41893 - </para>
41894 -</sect1>
41895 -
41896 -<sect1 id="using_uio_pdrv_genirq">
41897 -<title>Using uio_pdrv_genirq for platform devices</title>
41898 - <para>
41899 - Especially in embedded devices, you frequently find chips where the
41900 - irq pin is tied to its own dedicated interrupt line. In such cases,
41901 - where you can be really sure the interrupt is not shared, we can take
41902 - the concept of <varname>uio_pdrv</varname> one step further and use a
41903 - generic interrupt handler. That's what
41904 - <varname>uio_pdrv_genirq</varname> does.
41905 - </para>
41906 - <para>
41907 - The setup for this driver is the same as described above for
41908 - <varname>uio_pdrv</varname>, except that you do not implement an
41909 - interrupt handler. The <varname>.handler</varname> element of
41910 - <varname>struct uio_info</varname> must remain
41911 - <varname>NULL</varname>. The <varname>.irq_flags</varname> element
41912 - must not contain <varname>IRQF_SHARED</varname>.
41913 - </para>
41914 - <para>
41915 - You will set the <varname>.name</varname> element of
41916 - <varname>struct platform_device</varname> to
41917 - <varname>"uio_pdrv_genirq"</varname> to use this driver.
41918 - </para>
41919 - <para>
41920 - The generic interrupt handler of <varname>uio_pdrv_genirq</varname>
41921 - will simply disable the interrupt line using
41922 - <function>disable_irq_nosync()</function>. After doing its work,
41923 - userspace can reenable the interrupt by writing 0x00000001 to the UIO
41924 - device file. The driver already implements an
41925 - <function>irq_control()</function> to make this possible, you must not
41926 - implement your own.
41927 - </para>
41928 - <para>
41929 - Using <varname>uio_pdrv_genirq</varname> not only saves a few lines of
41930 - interrupt handler code. You also do not need to know anything about
41931 - the chip's internal registers to create the kernel part of the driver.
41932 - All you need to know is the irq number of the pin the chip is
41933 - connected to.
41934 - </para>
41935 -</sect1>
41936 -
41937 </chapter>
41938
41939 <chapter id="userspace_driver" xreflabel="Writing a driver in user space">
41940 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/driver-model/device.txt linux-2.6.29-rc3.owrt/Documentation/driver-model/device.txt
41941 --- linux-2.6.29.owrt/Documentation/driver-model/device.txt 2009-05-10 22:04:39.000000000 +0200
41942 +++ linux-2.6.29-rc3.owrt/Documentation/driver-model/device.txt 2009-05-10 23:48:28.000000000 +0200
41943 @@ -127,11 +127,9 @@
41944 Attributes
41945 ~~~~~~~~~~
41946 struct device_attribute {
41947 - struct attribute attr;
41948 - ssize_t (*show)(struct device *dev, struct device_attribute *attr,
41949 - char *buf);
41950 - ssize_t (*store)(struct device *dev, struct device_attribute *attr,
41951 - const char *buf, size_t count);
41952 + struct attribute attr;
41953 + ssize_t (*show)(struct device * dev, char * buf, size_t count, loff_t off);
41954 + ssize_t (*store)(struct device * dev, const char * buf, size_t count, loff_t off);
41955 };
41956
41957 Attributes of devices can be exported via drivers using a simple
41958 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/dvb/README.flexcop linux-2.6.29-rc3.owrt/Documentation/dvb/README.flexcop
41959 --- linux-2.6.29.owrt/Documentation/dvb/README.flexcop 1970-01-01 01:00:00.000000000 +0100
41960 +++ linux-2.6.29-rc3.owrt/Documentation/dvb/README.flexcop 2009-05-10 23:48:28.000000000 +0200
41961 @@ -0,0 +1,205 @@
41962 +This README escorted the skystar2-driver rewriting procedure. It describes the
41963 +state of the new flexcop-driver set and some internals are written down here
41964 +too.
41965 +
41966 +This document hopefully describes things about the flexcop and its
41967 +device-offsprings. Goal was to write an easy-to-write and easy-to-read set of
41968 +drivers based on the skystar2.c and other information.
41969 +
41970 +Remark: flexcop-pci.c was a copy of skystar2.c, but every line has been
41971 +touched and rewritten.
41972 +
41973 +History & News
41974 +==============
41975 + 2005-04-01 - correct USB ISOC transfers (thanks to Vadim Catana)
41976 +
41977 +
41978 +
41979 +
41980 +General coding processing
41981 +=========================
41982 +
41983 +We should proceed as follows (as long as no one complains):
41984 +
41985 +0) Think before start writing code!
41986 +
41987 +1) rewriting the skystar2.c with the help of the flexcop register descriptions
41988 +and splitting up the files to a pci-bus-part and a flexcop-part.
41989 +The new driver will be called b2c2-flexcop-pci.ko/b2c2-flexcop-usb.ko for the
41990 +device-specific part and b2c2-flexcop.ko for the common flexcop-functions.
41991 +
41992 +2) Search for errors in the leftover of flexcop-pci.c (compare with pluto2.c
41993 +and other pci drivers)
41994 +
41995 +3) make some beautification (see 'Improvements when rewriting (refactoring) is
41996 +done')
41997 +
41998 +4) Testing the new driver and maybe substitute the skystar2.c with it, to reach
41999 +a wider tester audience.
42000 +
42001 +5) creating an usb-bus-part using the already written flexcop code for the pci
42002 +card.
42003 +
42004 +Idea: create a kernel-object for the flexcop and export all important
42005 +functions. This option saves kernel-memory, but maybe a lot of functions have
42006 +to be exported to kernel namespace.
42007 +
42008 +
42009 +Current situation
42010 +=================
42011 +
42012 +0) Done :)
42013 +1) Done (some minor issues left)
42014 +2) Done
42015 +3) Not ready yet, more information is necessary
42016 +4) next to be done (see the table below)
42017 +5) USB driver is working (yes, there are some minor issues)
42018 +
42019 +What seems to be ready?
42020 +-----------------------
42021 +
42022 +1) Rewriting
42023 +1a) i2c is cut off from the flexcop-pci.c and seems to work
42024 +1b) moved tuner and demod stuff from flexcop-pci.c to flexcop-tuner-fe.c
42025 +1c) moved lnb and diseqc stuff from flexcop-pci.c to flexcop-tuner-fe.c
42026 +1e) eeprom (reading MAC address)
42027 +1d) sram (no dynamic sll size detection (commented out) (using default as JJ told me))
42028 +1f) misc. register accesses for reading parameters (e.g. resetting, revision)
42029 +1g) pid/mac filter (flexcop-hw-filter.c)
42030 +1i) dvb-stuff initialization in flexcop.c (done)
42031 +1h) dma stuff (now just using the size-irq, instead of all-together, to be done)
42032 +1j) remove flexcop initialization from flexcop-pci.c completely (done)
42033 +1l) use a well working dma IRQ method (done, see 'Known bugs and problems and TODO')
42034 +1k) cleanup flexcop-files (remove unused EXPORT_SYMBOLs, make static from
42035 +non-static where possible, moved code to proper places)
42036 +
42037 +2) Search for errors in the leftover of flexcop-pci.c (partially done)
42038 +5a) add MAC address reading
42039 +5c) feeding of ISOC data to the software demux (format of the isochronous data
42040 +and speed optimization, no real error) (thanks to Vadim Catana)
42041 +
42042 +What to do in the near future?
42043 +--------------------------------------
42044 +(no special order here)
42045 +
42046 +5) USB driver
42047 +5b) optimize isoc-transfer (submitting/killing isoc URBs when transfer is starting)
42048 +
42049 +Testing changes
42050 +---------------
42051 +
42052 +O = item is working
42053 +P = item is partially working
42054 +X = item is not working
42055 +N = item does not apply here
42056 +<empty field> = item need to be examined
42057 +
42058 + | PCI | USB
42059 +item | mt352 | nxt2002 | stv0299 | mt312 | mt352 | nxt2002 | stv0299 | mt312
42060 +-------+-------+---------+---------+-------+-------+---------+---------+-------
42061 +1a) | O | | | | N | N | N | N
42062 +1b) | O | | | | | | O |
42063 +1c) | N | N | | | N | N | O |
42064 +1d) | O | O
42065 +1e) | O | O
42066 +1f) | P
42067 +1g) | O
42068 +1h) | P |
42069 +1i) | O | N
42070 +1j) | O | N
42071 +1l) | O | N
42072 +2) | O | N
42073 +5a) | N | O
42074 +5b)* | N |
42075 +5c) | N | O
42076 +
42077 +* - not done yet
42078 +
42079 +Known bugs and problems and TODO
42080 +--------------------------------
42081 +
42082 +1g/h/l) when pid filtering is enabled on the pci card
42083 +
42084 +DMA usage currently:
42085 + The DMA is splitted in 2 equal-sized subbuffers. The Flexcop writes to first
42086 + address and triggers an IRQ when it's full and starts writing to the second
42087 + address. When the second address is full, the IRQ is triggered again, and
42088 + the flexcop writes to first address again, and so on.
42089 + The buffersize of each address is currently 640*188 bytes.
42090 +
42091 + Problem is, when using hw-pid-filtering and doing some low-bandwidth
42092 + operation (like scanning) the buffers won't be filled enough to trigger
42093 + the IRQ. That's why:
42094 +
42095 + When PID filtering is activated, the timer IRQ is used. Every 1.97 ms the IRQ
42096 + is triggered. Is the current write address of DMA1 different to the one
42097 + during the last IRQ, then the data is passed to the demuxer.
42098 +
42099 + There is an additional DMA-IRQ-method: packet count IRQ. This isn't
42100 + implemented correctly yet.
42101 +
42102 + The solution is to disable HW PID filtering, but I don't know how the DVB
42103 + API software demux behaves on slow systems with 45MBit/s TS.
42104 +
42105 +Solved bugs :)
42106 +--------------
42107 +1g) pid-filtering (somehow pid index 4 and 5 (EMM_PID and ECM_PID) aren't
42108 +working)
42109 +SOLUTION: also index 0 was affected, because net_translation is done for
42110 +these indexes by default
42111 +
42112 +5b) isochronous transfer does only work in the first attempt (for the Sky2PC
42113 +USB, Air2PC is working) SOLUTION: the flexcop was going asleep and never really
42114 +woke up again (don't know if this need fixes, see
42115 +flexcop-fe-tuner.c:flexcop_sleep)
42116 +
42117 +NEWS: when the driver is loaded and unloaded and loaded again (w/o doing
42118 +anything in the while the driver is loaded the first time), no transfers take
42119 +place anymore.
42120 +
42121 +Improvements when rewriting (refactoring) is done
42122 +=================================================
42123 +
42124 +- split sleeping of the flexcop (misc_204.ACPI3_sig = 1;) from lnb_control
42125 + (enable sleeping for other demods than dvb-s)
42126 +- add support for CableStar (stv0297 Microtune 203x/ALPS) (almost done, incompatibilities with the Nexus-CA)
42127 +
42128 +Debugging
42129 +---------
42130 +- add verbose debugging to skystar2.c (dump the reg_dw_data) and compare it
42131 + with this flexcop, this is important, because i2c is now using the
42132 + flexcop_ibi_value union from flexcop-reg.h (do you have a better idea for
42133 + that, please tell us so).
42134 +
42135 +Everything which is identical in the following table, can be put into a common
42136 +flexcop-module.
42137 +
42138 + PCI USB
42139 +-------------------------------------------------------------------------------
42140 +Different:
42141 +Register access: accessing IO memory USB control message
42142 +I2C bus: I2C bus of the FC USB control message
42143 +Data transfer: DMA isochronous transfer
42144 +EEPROM transfer: through i2c bus not clear yet
42145 +
42146 +Identical:
42147 +Streaming: accessing registers
42148 +PID Filtering: accessing registers
42149 +Sram destinations: accessing registers
42150 +Tuner/Demod: I2C bus
42151 +DVB-stuff: can be written for common use
42152 +
42153 +Acknowledgements (just for the rewriting part)
42154 +================
42155 +
42156 +Bjarne Steinsbo thought a lot in the first place of the pci part for this code
42157 +sharing idea.
42158 +
42159 +Andreas Oberritter for providing a recent PCI initialization template
42160 +(pluto2.c).
42161 +
42162 +Boleslaw Ciesielski for pointing out a problem with firmware loader.
42163 +
42164 +Vadim Catana for correcting the USB transfer.
42165 +
42166 +comments, critics and ideas to linux-dvb@linuxtv.org.
42167 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/dvb/technisat.txt linux-2.6.29-rc3.owrt/Documentation/dvb/technisat.txt
42168 --- linux-2.6.29.owrt/Documentation/dvb/technisat.txt 2009-05-10 22:04:39.000000000 +0200
42169 +++ linux-2.6.29-rc3.owrt/Documentation/dvb/technisat.txt 2009-05-10 23:48:28.000000000 +0200
42170 @@ -1,5 +1,5 @@
42171 -How to set up the Technisat/B2C2 Flexcop devices
42172 -================================================
42173 +How to set up the Technisat devices
42174 +===================================
42175
42176 1) Find out what device you have
42177 ================================
42178 @@ -16,60 +16,54 @@
42179
42180 If the Technisat is the only TV device in your box get rid of unnecessary modules and check this one:
42181 "Multimedia devices" => "Customise analog and hybrid tuner modules to build"
42182 -In this directory uncheck every driver which is activated there (except "Simple tuner support" for case 9 only).
42183 +In this directory uncheck every driver which is activated there.
42184
42185 Then please activate:
42186 2a) Main module part:
42187
42188 a.)"Multimedia devices" => "DVB/ATSC adapters" => "Technisat/B2C2 FlexcopII(b) and FlexCopIII adapters"
42189 -b.)"Multimedia devices" => "DVB/ATSC adapters" => "Technisat/B2C2 FlexcopII(b) and FlexCopIII adapters" => "Technisat/B2C2 Air/Sky/Cable2PC PCI" in case of a PCI card
42190 -OR
42191 +b.)"Multimedia devices" => "DVB/ATSC adapters" => "Technisat/B2C2 FlexcopII(b) and FlexCopIII adapters" => "Technisat/B2C2 Air/Sky/Cable2PC PCI" in case of a PCI card OR
42192 c.)"Multimedia devices" => "DVB/ATSC adapters" => "Technisat/B2C2 FlexcopII(b) and FlexCopIII adapters" => "Technisat/B2C2 Air/Sky/Cable2PC USB" in case of an USB 1.1 adapter
42193 d.)"Multimedia devices" => "DVB/ATSC adapters" => "Technisat/B2C2 FlexcopII(b) and FlexCopIII adapters" => "Enable debug for the B2C2 FlexCop drivers"
42194 Notice: d.) is helpful for troubleshooting
42195
42196 2b) Frontend module part:
42197
42198 -1.) SkyStar DVB-S Revision 2.3:
42199 +1.) Revision 2.3:
42200 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42201 b.)"Multimedia devices" => "Customise DVB frontends" => "Zarlink VP310/MT312/ZL10313 based"
42202
42203 -2.) SkyStar DVB-S Revision 2.6:
42204 +2.) Revision 2.6:
42205 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42206 b.)"Multimedia devices" => "Customise DVB frontends" => "ST STV0299 based"
42207
42208 -3.) SkyStar DVB-S Revision 2.7:
42209 +3.) Revision 2.7:
42210 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42211 b.)"Multimedia devices" => "Customise DVB frontends" => "Samsung S5H1420 based"
42212 c.)"Multimedia devices" => "Customise DVB frontends" => "Integrant ITD1000 Zero IF tuner for DVB-S/DSS"
42213 d.)"Multimedia devices" => "Customise DVB frontends" => "ISL6421 SEC controller"
42214
42215 -4.) SkyStar DVB-S Revision 2.8:
42216 +4.) Revision 2.8:
42217 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42218 b.)"Multimedia devices" => "Customise DVB frontends" => "Conexant CX24113/CX24128 tuner for DVB-S/DSS"
42219 c.)"Multimedia devices" => "Customise DVB frontends" => "Conexant CX24123 based"
42220 d.)"Multimedia devices" => "Customise DVB frontends" => "ISL6421 SEC controller"
42221
42222 -5.) AirStar DVB-T card:
42223 +5.) DVB-T card:
42224 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42225 b.)"Multimedia devices" => "Customise DVB frontends" => "Zarlink MT352 based"
42226
42227 -6.) CableStar DVB-C card:
42228 +6.) DVB-C card:
42229 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42230 b.)"Multimedia devices" => "Customise DVB frontends" => "ST STV0297 based"
42231
42232 -7.) AirStar ATSC card 1st generation:
42233 +7.) ATSC card 1st generation:
42234 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42235 b.)"Multimedia devices" => "Customise DVB frontends" => "Broadcom BCM3510"
42236
42237 -8.) AirStar ATSC card 2nd generation:
42238 +8.) ATSC card 2nd generation:
42239 a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42240 b.)"Multimedia devices" => "Customise DVB frontends" => "NxtWave Communications NXT2002/NXT2004 based"
42241 -c.)"Multimedia devices" => "Customise DVB frontends" => "Generic I2C PLL based tuners"
42242 +c.)"Multimedia devices" => "Customise DVB frontends" => "LG Electronics LGDT3302/LGDT3303 based"
42243
42244 -9.) AirStar ATSC card 3rd generation:
42245 -a.)"Multimedia devices" => "Customise DVB frontends" => "Customise the frontend modules to build"
42246 -b.)"Multimedia devices" => "Customise DVB frontends" => "LG Electronics LGDT3302/LGDT3303 based"
42247 -c.)"Multimedia devices" => "Customise analog and hybrid tuner modules to build" => "Simple tuner support"
42248 -
42249 -Author: Uwe Bugla <uwe.bugla@gmx.de> February 2009
42250 +Author: Uwe Bugla <uwe.bugla@gmx.de> December 2008
42251 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/feature-removal-schedule.txt linux-2.6.29-rc3.owrt/Documentation/feature-removal-schedule.txt
42252 --- linux-2.6.29.owrt/Documentation/feature-removal-schedule.txt 2009-05-10 22:04:39.000000000 +0200
42253 +++ linux-2.6.29-rc3.owrt/Documentation/feature-removal-schedule.txt 2009-05-10 23:48:28.000000000 +0200
42254 @@ -335,12 +335,3 @@
42255 Secmark, it is time to deprecate the older mechanism and start the
42256 process of removing the old code.
42257 Who: Paul Moore <paul.moore@hp.com>
42258 ----------------------------
42259 -
42260 -What: sysfs ui for changing p4-clockmod parameters
42261 -When: September 2009
42262 -Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and
42263 - e088e4c9cdb618675874becb91b2fd581ee707e6.
42264 - Removal is subject to fixing any remaining bugs in ACPI which may
42265 - cause the thermal throttling not to happen at the right time.
42266 -Who: Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com>
42267 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/ext2.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/ext2.txt
42268 --- linux-2.6.29.owrt/Documentation/filesystems/ext2.txt 2009-05-10 22:04:39.000000000 +0200
42269 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/ext2.txt 2009-05-10 23:48:28.000000000 +0200
42270 @@ -373,11 +373,10 @@
42271 Compression (*) http://e2compr.sourceforge.net/
42272
42273 Implementations for:
42274 -Windows 95/98/NT/2000 http://www.chrysocome.net/explore2fs
42275 -Windows 95 (*) http://www.yipton.net/content.html#FSDEXT2
42276 +Windows 95/98/NT/2000 http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm
42277 +Windows 95 (*) http://www.yipton.demon.co.uk/content.html#FSDEXT2
42278 DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
42279 -OS/2 (+) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
42280 -RISC OS client http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/
42281 +OS/2 http://perso.wanadoo.fr/matthieu.willm/ext2-os2/
42282 +RISC OS client ftp://ftp.barnet.ac.uk/pub/acorn/armlinux/iscafs/
42283
42284 (*) no longer actively developed/supported (as of Apr 2001)
42285 -(+) no longer actively developed/supported (as of Mar 2009)
42286 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/ext3.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/ext3.txt
42287 --- linux-2.6.29.owrt/Documentation/filesystems/ext3.txt 2009-05-10 22:04:39.000000000 +0200
42288 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/ext3.txt 2009-05-10 23:48:28.000000000 +0200
42289 @@ -198,5 +198,5 @@
42290 programs: http://e2fsprogs.sourceforge.net/
42291 http://ext2resize.sourceforge.net
42292
42293 -useful links: http://www.ibm.com/developerworks/library/l-fs7.html
42294 - http://www.ibm.com/developerworks/library/l-fs8.html
42295 +useful links: http://www-106.ibm.com/developerworks/linux/library/l-fs7/
42296 + http://www-106.ibm.com/developerworks/linux/library/l-fs8/
42297 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/proc.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/proc.txt
42298 --- linux-2.6.29.owrt/Documentation/filesystems/proc.txt 2009-05-10 22:04:39.000000000 +0200
42299 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/proc.txt 2009-05-10 23:48:28.000000000 +0200
42300 @@ -1478,13 +1478,6 @@
42301 this should be enabled, but if the problem persists the messages can be
42302 disabled.
42303
42304 -netdev_budget
42305 --------------
42306 -
42307 -Maximum number of packets taken from all interfaces in one polling cycle (NAPI
42308 -poll). In one polling cycle interfaces which are registered to polling are
42309 -probed in a round-robin manner. The limit of packets in one such probe can be
42310 -set per-device via sysfs class/net/<device>/weight .
42311
42312 netdev_max_backlog
42313 ------------------
42314 @@ -2034,34 +2027,6 @@
42315 values are in the range -16 to +15, plus the special value -17, which disables
42316 oom-killing altogether for this process.
42317
42318 -The process to be killed in an out-of-memory situation is selected among all others
42319 -based on its badness score. This value equals the original memory size of the process
42320 -and is then updated according to its CPU time (utime + stime) and the
42321 -run time (uptime - start time). The longer it runs the smaller is the score.
42322 -Badness score is divided by the square root of the CPU time and then by
42323 -the double square root of the run time.
42324 -
42325 -Swapped out tasks are killed first. Half of each child's memory size is added to
42326 -the parent's score if they do not share the same memory. Thus forking servers
42327 -are the prime candidates to be killed. Having only one 'hungry' child will make
42328 -parent less preferable than the child.
42329 -
42330 -/proc/<pid>/oom_score shows process' current badness score.
42331 -
42332 -The following heuristics are then applied:
42333 - * if the task was reniced, its score doubles
42334 - * superuser or direct hardware access tasks (CAP_SYS_ADMIN, CAP_SYS_RESOURCE
42335 - or CAP_SYS_RAWIO) have their score divided by 4
42336 - * if oom condition happened in one cpuset and checked task does not belong
42337 - to it, its score is divided by 8
42338 - * the resulting score is multiplied by two to the power of oom_adj, i.e.
42339 - points <<= oom_adj when it is positive and
42340 - points >>= -(oom_adj) otherwise
42341 -
42342 -The task with the highest badness score is then selected and its children
42343 -are killed, process itself will be killed in an OOM situation when it does
42344 -not have children or some of them disabled oom like described above.
42345 -
42346 2.13 /proc/<pid>/oom_score - Display current oom-killer score
42347 -------------------------------------------------------------
42348
42349 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/squashfs.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/squashfs.txt
42350 --- linux-2.6.29.owrt/Documentation/filesystems/squashfs.txt 2009-05-10 22:04:39.000000000 +0200
42351 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/squashfs.txt 2009-05-10 23:48:28.000000000 +0200
42352 @@ -22,7 +22,7 @@
42353
42354 Squashfs Cramfs
42355
42356 -Max filesystem size: 2^64 256 MiB
42357 +Max filesystem size: 2^64 16 MiB
42358 Max file size: ~ 2 TiB 16 MiB
42359 Max files: unlimited unlimited
42360 Max directories: unlimited unlimited
42361 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/sysfs-pci.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/sysfs-pci.txt
42362 --- linux-2.6.29.owrt/Documentation/filesystems/sysfs-pci.txt 2009-05-10 22:04:39.000000000 +0200
42363 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/sysfs-pci.txt 2009-05-10 23:48:28.000000000 +0200
42364 @@ -9,7 +9,6 @@
42365 | |-- class
42366 | |-- config
42367 | |-- device
42368 - | |-- enable
42369 | |-- irq
42370 | |-- local_cpus
42371 | |-- resource
42372 @@ -33,7 +32,6 @@
42373 class PCI class (ascii, ro)
42374 config PCI config space (binary, rw)
42375 device PCI device (ascii, ro)
42376 - enable Whether the device is enabled (ascii, rw)
42377 irq IRQ number (ascii, ro)
42378 local_cpus nearby CPU mask (cpumask, ro)
42379 resource PCI resource host addresses (ascii, ro)
42380 @@ -59,19 +57,10 @@
42381 don't support mmapping of certain resources, so be sure to check the return
42382 value from any attempted mmap.
42383
42384 -The 'enable' file provides a counter that indicates how many times the device
42385 -has been enabled. If the 'enable' file currently returns '4', and a '1' is
42386 -echoed into it, it will then return '5'. Echoing a '0' into it will decrease
42387 -the count. Even when it returns to 0, though, some of the initialisation
42388 -may not be reversed.
42389 -
42390 The 'rom' file is special in that it provides read-only access to the device's
42391 ROM file, if available. It's disabled by default, however, so applications
42392 should write the string "1" to the file to enable it before attempting a read
42393 -call, and disable it following the access by writing "0" to the file. Note
42394 -that the device must be enabled for a rom read to return data succesfully.
42395 -In the event a driver is not bound to the device, it can be enabled using the
42396 -'enable' file, documented above.
42397 +call, and disable it following the access by writing "0" to the file.
42398
42399 Accessing legacy resources through sysfs
42400 ----------------------------------------
42401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/sysfs.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/sysfs.txt
42402 --- linux-2.6.29.owrt/Documentation/filesystems/sysfs.txt 2009-05-10 22:04:39.000000000 +0200
42403 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/sysfs.txt 2009-05-10 23:48:28.000000000 +0200
42404 @@ -2,10 +2,8 @@
42405 sysfs - _The_ filesystem for exporting kernel objects.
42406
42407 Patrick Mochel <mochel@osdl.org>
42408 -Mike Murphy <mamurph@cs.clemson.edu>
42409
42410 -Revised: 22 February 2009
42411 -Original: 10 January 2003
42412 +10 January 2003
42413
42414
42415 What it is:
42416 @@ -66,13 +64,12 @@
42417
42418 struct attribute {
42419 char * name;
42420 - struct module *owner;
42421 mode_t mode;
42422 };
42423
42424
42425 -int sysfs_create_file(struct kobject * kobj, const struct attribute * attr);
42426 -void sysfs_remove_file(struct kobject * kobj, const struct attribute * attr);
42427 +int sysfs_create_file(struct kobject * kobj, struct attribute * attr);
42428 +void sysfs_remove_file(struct kobject * kobj, struct attribute * attr);
42429
42430
42431 A bare attribute contains no means to read or write the value of the
42432 @@ -83,11 +80,9 @@
42433 For example, the driver model defines struct device_attribute like:
42434
42435 struct device_attribute {
42436 - struct attribute attr;
42437 - ssize_t (*show)(struct device *dev, struct device_attribute *attr,
42438 - char *buf);
42439 - ssize_t (*store)(struct device *dev, struct device_attribute *attr,
42440 - const char *buf, size_t count);
42441 + struct attribute attr;
42442 + ssize_t (*show)(struct device * dev, char * buf);
42443 + ssize_t (*store)(struct device * dev, const char * buf);
42444 };
42445
42446 int device_create_file(struct device *, struct device_attribute *);
42447 @@ -95,8 +90,12 @@
42448
42449 It also defines this helper for defining device attributes:
42450
42451 -#define DEVICE_ATTR(_name, _mode, _show, _store) \
42452 -struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
42453 +#define DEVICE_ATTR(_name, _mode, _show, _store) \
42454 +struct device_attribute dev_attr_##_name = { \
42455 + .attr = {.name = __stringify(_name) , .mode = _mode }, \
42456 + .show = _show, \
42457 + .store = _store, \
42458 +};
42459
42460 For example, declaring
42461
42462 @@ -108,9 +107,9 @@
42463 .attr = {
42464 .name = "foo",
42465 .mode = S_IWUSR | S_IRUGO,
42466 - .show = show_foo,
42467 - .store = store_foo,
42468 },
42469 + .show = show_foo,
42470 + .store = store_foo,
42471 };
42472
42473
42474 @@ -162,12 +161,10 @@
42475 specified when declaring the attribute. The method types should be as
42476 simple as those defined for device attributes:
42477
42478 -ssize_t (*show)(struct device * dev, struct device_attribute * attr,
42479 - char * buf);
42480 -ssize_t (*store)(struct device * dev, struct device_attribute * attr,
42481 - const char * buf);
42482 + ssize_t (*show)(struct device * dev, char * buf);
42483 + ssize_t (*store)(struct device * dev, const char * buf);
42484
42485 -IOW, they should take only an object, an attribute, and a buffer as parameters.
42486 +IOW, they should take only an object and a buffer as parameters.
42487
42488
42489 sysfs allocates a buffer of size (PAGE_SIZE) and passes it to the
42490 @@ -302,16 +299,14 @@
42491 Structure:
42492
42493 struct device_attribute {
42494 - struct attribute attr;
42495 - ssize_t (*show)(struct device *dev, struct device_attribute *attr,
42496 - char *buf);
42497 - ssize_t (*store)(struct device *dev, struct device_attribute *attr,
42498 - const char *buf, size_t count);
42499 + struct attribute attr;
42500 + ssize_t (*show)(struct device * dev, char * buf);
42501 + ssize_t (*store)(struct device * dev, const char * buf);
42502 };
42503
42504 Declaring:
42505
42506 -DEVICE_ATTR(_name, _mode, _show, _store);
42507 +DEVICE_ATTR(_name, _str, _mode, _show, _store);
42508
42509 Creation/Removal:
42510
42511 @@ -347,8 +342,7 @@
42512 struct driver_attribute {
42513 struct attribute attr;
42514 ssize_t (*show)(struct device_driver *, char * buf);
42515 - ssize_t (*store)(struct device_driver *, const char * buf,
42516 - size_t count);
42517 + ssize_t (*store)(struct device_driver *, const char * buf);
42518 };
42519
42520 Declaring:
42521 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/filesystems/ubifs.txt linux-2.6.29-rc3.owrt/Documentation/filesystems/ubifs.txt
42522 --- linux-2.6.29.owrt/Documentation/filesystems/ubifs.txt 2009-05-10 22:04:39.000000000 +0200
42523 +++ linux-2.6.29-rc3.owrt/Documentation/filesystems/ubifs.txt 2009-05-10 23:48:28.000000000 +0200
42524 @@ -79,6 +79,13 @@
42525
42526 (*) == default.
42527
42528 +norm_unmount (*) commit on unmount; the journal is committed
42529 + when the file-system is unmounted so that the
42530 + next mount does not have to replay the journal
42531 + and it becomes very fast;
42532 +fast_unmount do not commit on unmount; this option makes
42533 + unmount faster, but the next mount slower
42534 + because of the need to replay the journal.
42535 bulk_read read more in one go to take advantage of flash
42536 media that read faster sequentially
42537 no_bulk_read (*) do not bulk-read
42538 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/hwmon/hpfall.c linux-2.6.29-rc3.owrt/Documentation/hwmon/hpfall.c
42539 --- linux-2.6.29.owrt/Documentation/hwmon/hpfall.c 2009-05-10 22:04:39.000000000 +0200
42540 +++ linux-2.6.29-rc3.owrt/Documentation/hwmon/hpfall.c 1970-01-01 01:00:00.000000000 +0100
42541 @@ -1,101 +0,0 @@
42542 -/* Disk protection for HP machines.
42543 - *
42544 - * Copyright 2008 Eric Piel
42545 - * Copyright 2009 Pavel Machek <pavel@suse.cz>
42546 - *
42547 - * GPLv2.
42548 - */
42549 -
42550 -#include <stdio.h>
42551 -#include <stdlib.h>
42552 -#include <unistd.h>
42553 -#include <fcntl.h>
42554 -#include <sys/stat.h>
42555 -#include <sys/types.h>
42556 -#include <string.h>
42557 -#include <stdint.h>
42558 -#include <errno.h>
42559 -#include <signal.h>
42560 -
42561 -void write_int(char *path, int i)
42562 -{
42563 - char buf[1024];
42564 - int fd = open(path, O_RDWR);
42565 - if (fd < 0) {
42566 - perror("open");
42567 - exit(1);
42568 - }
42569 - sprintf(buf, "%d", i);
42570 - if (write(fd, buf, strlen(buf)) != strlen(buf)) {
42571 - perror("write");
42572 - exit(1);
42573 - }
42574 - close(fd);
42575 -}
42576 -
42577 -void set_led(int on)
42578 -{
42579 - write_int("/sys/class/leds/hp::hddprotect/brightness", on);
42580 -}
42581 -
42582 -void protect(int seconds)
42583 -{
42584 - write_int("/sys/block/sda/device/unload_heads", seconds*1000);
42585 -}
42586 -
42587 -int on_ac(void)
42588 -{
42589 -// /sys/class/power_supply/AC0/online
42590 -}
42591 -
42592 -int lid_open(void)
42593 -{
42594 -// /proc/acpi/button/lid/LID/state
42595 -}
42596 -
42597 -void ignore_me(void)
42598 -{
42599 - protect(0);
42600 - set_led(0);
42601 -
42602 -}
42603 -
42604 -int main(int argc, char* argv[])
42605 -{
42606 - int fd, ret;
42607 -
42608 - fd = open("/dev/freefall", O_RDONLY);
42609 - if (fd < 0) {
42610 - perror("open");
42611 - return EXIT_FAILURE;
42612 - }
42613 -
42614 - signal(SIGALRM, ignore_me);
42615 -
42616 - for (;;) {
42617 - unsigned char count;
42618 -
42619 - ret = read(fd, &count, sizeof(count));
42620 - alarm(0);
42621 - if ((ret == -1) && (errno == EINTR)) {
42622 - /* Alarm expired, time to unpark the heads */
42623 - continue;
42624 - }
42625 -
42626 - if (ret != sizeof(count)) {
42627 - perror("read");
42628 - break;
42629 - }
42630 -
42631 - protect(21);
42632 - set_led(1);
42633 - if (1 || on_ac() || lid_open()) {
42634 - alarm(2);
42635 - } else {
42636 - alarm(20);
42637 - }
42638 - }
42639 -
42640 - close(fd);
42641 - return EXIT_SUCCESS;
42642 -}
42643 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/hwmon/lis3lv02d linux-2.6.29-rc3.owrt/Documentation/hwmon/lis3lv02d
42644 --- linux-2.6.29.owrt/Documentation/hwmon/lis3lv02d 2009-05-10 22:04:39.000000000 +0200
42645 +++ linux-2.6.29-rc3.owrt/Documentation/hwmon/lis3lv02d 2009-05-10 23:48:28.000000000 +0200
42646 @@ -33,14 +33,6 @@
42647 This driver also provides an absolute input class device, allowing
42648 the laptop to act as a pinball machine-esque joystick.
42649
42650 -Another feature of the driver is misc device called "freefall" that
42651 -acts similar to /dev/rtc and reacts on free-fall interrupts received
42652 -from the device. It supports blocking operations, poll/select and
42653 -fasync operation modes. You must read 1 bytes from the device. The
42654 -result is number of free-fall interrupts since the last successful
42655 -read (or 255 if number of interrupts would not fit).
42656 -
42657 -
42658 Axes orientation
42659 ----------------
42660
42661 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/hwmon/lm90 linux-2.6.29-rc3.owrt/Documentation/hwmon/lm90
42662 --- linux-2.6.29.owrt/Documentation/hwmon/lm90 2009-05-10 22:04:39.000000000 +0200
42663 +++ linux-2.6.29-rc3.owrt/Documentation/hwmon/lm90 2009-05-10 23:48:28.000000000 +0200
42664 @@ -42,11 +42,6 @@
42665 Addresses scanned: I2C 0x4e
42666 Datasheet: Publicly available at the Maxim website
42667 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
42668 - * Maxim MAX6648
42669 - Prefix: 'max6646'
42670 - Addresses scanned: I2C 0x4c
42671 - Datasheet: Publicly available at the Maxim website
42672 - http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
42673 * Maxim MAX6649
42674 Prefix: 'max6646'
42675 Addresses scanned: I2C 0x4c
42676 @@ -79,11 +74,6 @@
42677 0x4c, 0x4d and 0x4e
42678 Datasheet: Publicly available at the Maxim website
42679 http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370
42680 - * Maxim MAX6692
42681 - Prefix: 'max6646'
42682 - Addresses scanned: I2C 0x4c
42683 - Datasheet: Publicly available at the Maxim website
42684 - http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
42685
42686
42687 Author: Jean Delvare <khali@linux-fr.org>
42688 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/IO-mapping.txt linux-2.6.29-rc3.owrt/Documentation/IO-mapping.txt
42689 --- linux-2.6.29.owrt/Documentation/IO-mapping.txt 2009-05-10 22:04:39.000000000 +0200
42690 +++ linux-2.6.29-rc3.owrt/Documentation/IO-mapping.txt 2009-05-10 23:48:28.000000000 +0200
42691 @@ -1,6 +1,6 @@
42692 [ NOTE: The virt_to_bus() and bus_to_virt() functions have been
42693 - superseded by the functionality provided by the PCI DMA interface
42694 - (see Documentation/PCI/PCI-DMA-mapping.txt). They continue
42695 + superseded by the functionality provided by the PCI DMA
42696 + interface (see Documentation/DMA-mapping.txt). They continue
42697 to be documented below for historical purposes, but new code
42698 must not use them. --davidm 00/12/12 ]
42699
42700 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/ja_JP/stable_kernel_rules.txt linux-2.6.29-rc3.owrt/Documentation/ja_JP/stable_kernel_rules.txt
42701 --- linux-2.6.29.owrt/Documentation/ja_JP/stable_kernel_rules.txt 2009-05-10 22:04:39.000000000 +0200
42702 +++ linux-2.6.29-rc3.owrt/Documentation/ja_JP/stable_kernel_rules.txt 2009-05-10 23:48:28.000000000 +0200
42703 @@ -12,11 +12,11 @@
42704
42705 ==================================
42706 これは、
42707 -linux-2.6.29/Documentation/stable_kernel_rules.txt
42708 +linux-2.6.24/Documentation/stable_kernel_rules.txt
42709 の和訳です。
42710
42711 翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
42712 -翻訳日: 2009/1/14
42713 +翻訳日: 2007/12/30
42714 翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
42715 校正者: 武井伸光さん、<takei at webmasters dot gr dot jp>
42716 かねこさん (Seiji Kaneko) <skaneko at a2 dot mbn dot or dot jp>
42717 @@ -38,15 +38,12 @@
42718 - ビルドエラー(CONFIG_BROKENになっているものを除く), oops, ハング、デー
42719 タ破壊、現実のセキュリティ問題、その他 "ああ、これはダメだね"という
42720 ようなものを修正しなければならない。短く言えば、重大な問題。
42721 - - 新しい device ID とクオークも受け入れられる。
42722 - どのように競合状態が発生するかの説明も一緒に書かれていない限り、
42723 "理論的には競合状態になる"ようなものは不可。
42724 - いかなる些細な修正も含めることはできない。(スペルの修正、空白のクリー
42725 ンアップなど)
42726 + - 対応するサブシステムメンテナが受け入れたものでなければならない。
42727 - Documentation/SubmittingPatches の規則に従ったものでなければならない。
42728 - - パッチ自体か同等の修正が Linus のツリーに既に存在しなければならない。
42729 -  Linus のツリーでのコミットID を -stable へのパッチ投稿の際に引用す
42730 - ること。
42731
42732 -stable ツリーにパッチを送付する手続き-
42733
42734 @@ -55,10 +52,8 @@
42735 - 送信者はパッチがキューに受け付けられた際には ACK を、却下された場合
42736 には NAK を受け取る。この反応は開発者たちのスケジュールによって、数
42737 日かかる場合がある。
42738 - - もし受け取られたら、パッチは他の開発者たちと関連するサブシステムの
42739 - メンテナーによるレビューのために -stable キューに追加される。
42740 - - パッチに stable@kernel.org のアドレスが付加されているときには、それ
42741 - が Linus のツリーに入る時に自動的に stable チームに email される。
42742 + - もし受け取られたら、パッチは他の開発者たちのレビューのために
42743 + -stable キューに追加される。
42744 - セキュリティパッチはこのエイリアス (stable@kernel.org) に送られるべ
42745 きではなく、代わりに security@kernel.org のアドレスに送られる。
42746
42747 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/kernel-doc-nano-HOWTO.txt linux-2.6.29-rc3.owrt/Documentation/kernel-doc-nano-HOWTO.txt
42748 --- linux-2.6.29.owrt/Documentation/kernel-doc-nano-HOWTO.txt 2009-05-10 22:04:39.000000000 +0200
42749 +++ linux-2.6.29-rc3.owrt/Documentation/kernel-doc-nano-HOWTO.txt 2009-05-10 23:48:28.000000000 +0200
42750 @@ -43,8 +43,7 @@
42751 and any comment so marked must be in kernel-doc format. Do not use
42752 "/**" to be begin a comment block unless the comment block contains
42753 kernel-doc formatted comments. The closing comment marker for
42754 -kernel-doc comments can be either "*/" or "**/", but "*/" is
42755 -preferred in the Linux kernel tree.
42756 +kernel-doc comments can be either "*/" or "**/".
42757
42758 Kernel-doc comments should be placed just before the function
42759 or data structure being described.
42760 @@ -64,7 +63,7 @@
42761 * comment lines.
42762 *
42763 * The longer description can have multiple paragraphs.
42764 - */
42765 + **/
42766
42767 The first line, with the short description, must be on a single line.
42768
42769 @@ -86,7 +85,7 @@
42770 * perhaps with more lines and words.
42771 *
42772 * Longer description of this structure.
42773 - */
42774 + **/
42775
42776 The kernel-doc function comments describe each parameter to the
42777 function, in order, with the @name lines.
42778 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/kernel-parameters.txt linux-2.6.29-rc3.owrt/Documentation/kernel-parameters.txt
42779 --- linux-2.6.29.owrt/Documentation/kernel-parameters.txt 2009-05-10 22:04:39.000000000 +0200
42780 +++ linux-2.6.29-rc3.owrt/Documentation/kernel-parameters.txt 2009-05-10 23:48:28.000000000 +0200
42781 @@ -114,7 +114,7 @@
42782 Parameters denoted with BOOT are actually interpreted by the boot
42783 loader, and have no meaning to the kernel directly.
42784 Do not modify the syntax of boot loader parameters without extreme
42785 -need or coordination with <Documentation/x86/boot.txt>.
42786 +need or coordination with <Documentation/x86/i386/boot.txt>.
42787
42788 There are also arch-specific kernel-parameters not documented here.
42789 See for example <Documentation/x86/x86_64/boot-options.txt>.
42790 @@ -134,7 +134,7 @@
42791
42792 acpi= [HW,ACPI,X86-64,i386]
42793 Advanced Configuration and Power Interface
42794 - Format: { force | off | ht | strict | noirq | rsdt }
42795 + Format: { force | off | ht | strict | noirq }
42796 force -- enable ACPI if default was off
42797 off -- disable ACPI if default was on
42798 noirq -- do not use ACPI for IRQ routing
42799 @@ -868,10 +868,8 @@
42800 icn= [HW,ISDN]
42801 Format: <io>[,<membase>[,<icn_id>[,<icn_id2>]]]
42802
42803 - ide-core.nodma= [HW] (E)IDE subsystem
42804 - Format: =0.0 to prevent dma on hda, =0.1 hdb =1.0 hdc
42805 - .vlb_clock .pci_clock .noflush .noprobe .nowerr .cdrom
42806 - .chs .ignore_cable are additional options
42807 + ide= [HW] (E)IDE subsystem
42808 + Format: ide=nodma or ide=doubler
42809 See Documentation/ide/ide.txt.
42810
42811 idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed
42812 @@ -939,8 +937,6 @@
42813
42814
42815 intel_iommu= [DMAR] Intel IOMMU driver (DMAR) option
42816 - on
42817 - Enable intel iommu driver.
42818 off
42819 Disable intel iommu driver.
42820 igfx_off [Default Off]
42821 @@ -2451,7 +2447,7 @@
42822 See Documentation/fb/modedb.txt.
42823
42824 vga= [BOOT,X86-32] Select a particular video mode
42825 - See Documentation/x86/boot.txt and
42826 + See Documentation/x86/i386/boot.txt and
42827 Documentation/svga.txt.
42828 Use vga=ask for menu.
42829 This is actually a boot loader parameter; the value is
42830 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/lguest/Makefile linux-2.6.29-rc3.owrt/Documentation/lguest/Makefile
42831 --- linux-2.6.29.owrt/Documentation/lguest/Makefile 2009-05-10 22:04:39.000000000 +0200
42832 +++ linux-2.6.29-rc3.owrt/Documentation/lguest/Makefile 2009-05-10 23:48:28.000000000 +0200
42833 @@ -1,5 +1,5 @@
42834 # This creates the demonstration utility "lguest" which runs a Linux guest.
42835 -CFLAGS:=-Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE
42836 +CFLAGS:=-Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include
42837 LDLIBS:=-lz
42838
42839 all: lguest
42840 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/logo.svg linux-2.6.29-rc3.owrt/Documentation/logo.svg
42841 --- linux-2.6.29.owrt/Documentation/logo.svg 2009-05-10 22:04:39.000000000 +0200
42842 +++ linux-2.6.29-rc3.owrt/Documentation/logo.svg 1970-01-01 01:00:00.000000000 +0100
42843 @@ -1,2911 +0,0 @@
42844 -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
42845 -<!-- Created with Inkscape (http://www.inkscape.org/) -->
42846 -<svg
42847 - xmlns:dc="http://purl.org/dc/elements/1.1/"
42848 - xmlns:cc="http://creativecommons.org/ns#"
42849 - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
42850 - xmlns:svg="http://www.w3.org/2000/svg"
42851 - xmlns="http://www.w3.org/2000/svg"
42852 - xmlns:xlink="http://www.w3.org/1999/xlink"
42853 - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
42854 - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
42855 - width="1771.6534"
42856 - height="1417.3228"
42857 - id="svg2"
42858 - sodipodi:version="0.32"
42859 - inkscape:version="0.46"
42860 - sodipodi:docname="tuz.svg"
42861 - inkscape:output_extension="org.inkscape.output.svg.inkscape"
42862 - version="1.0"
42863 - style="display:inline;enable-background:new"
42864 - inkscape:export-filename="/home/cheeseness/Documents/LCA09/mascot/tuz_final.png"
42865 - inkscape:export-xdpi="100.03588"
42866 - inkscape:export-ydpi="100.03588">
42867 - <sodipodi:namedview
42868 - id="base"
42869 - pagecolor="#ffffff"
42870 - bordercolor="#666666"
42871 - borderopacity="1.0"
42872 - gridtolerance="10000"
42873 - guidetolerance="10"
42874 - objecttolerance="10"
42875 - inkscape:pageopacity="0.0"
42876 - inkscape:pageshadow="2"
42877 - inkscape:zoom="0.25"
42878 - inkscape:cx="-174.7931"
42879 - inkscape:cy="784.26325"
42880 - inkscape:document-units="px"
42881 - inkscape:current-layer="svg2"
42882 - showgrid="false"
42883 - inkscape:window-width="1280"
42884 - inkscape:window-height="823"
42885 - inkscape:window-x="-4"
42886 - inkscape:window-y="25"
42887 - showguides="true"
42888 - inkscape:guide-bbox="true"
42889 - units="mm" />
42890 - <defs
42891 - id="defs4">
42892 - <filter
42893 - inkscape:collect="always"
42894 - x="-0.084654994"
42895 - width="1.16931"
42896 - y="-0.36592469"
42897 - height="1.7318494"
42898 - id="filter11361">
42899 - <feGaussianBlur
42900 - inkscape:collect="always"
42901 - stdDeviation="4.5740586"
42902 - id="feGaussianBlur11363" />
42903 - </filter>
42904 - <inkscape:perspective
42905 - sodipodi:type="inkscape:persp3d"
42906 - inkscape:vp_x="0 : 564.0976 : 1"
42907 - inkscape:vp_y="0 : 1000 : 0"
42908 - inkscape:vp_z="1445.8591 : 564.0976 : 1"
42909 - inkscape:persp3d-origin="722.92957 : 376.06506 : 1"
42910 - id="perspective8145" />
42911 - <linearGradient
42912 - id="linearGradient7622">
42913 - <stop
42914 - style="stop-color:#ffffff;stop-opacity:1;"
42915 - offset="0"
42916 - id="stop7624" />
42917 - <stop
42918 - style="stop-color:#ffffff;stop-opacity:0;"
42919 - offset="1"
42920 - id="stop7626" />
42921 - </linearGradient>
42922 - <linearGradient
42923 - id="linearGradient4113">
42924 - <stop
42925 - style="stop-color:#000000;stop-opacity:0;"
42926 - offset="0"
42927 - id="stop4115" />
42928 - <stop
42929 - style="stop-color:#000000;stop-opacity:1;"
42930 - offset="1"
42931 - id="stop4117" />
42932 - </linearGradient>
42933 - <linearGradient
42934 - inkscape:collect="always"
42935 - id="linearGradient3660">
42936 - <stop
42937 - style="stop-color:#ffffff;stop-opacity:1;"
42938 - offset="0"
42939 - id="stop3662" />
42940 - <stop
42941 - style="stop-color:#ffffff;stop-opacity:0;"
42942 - offset="1"
42943 - id="stop3664" />
42944 - </linearGradient>
42945 - <linearGradient
42946 - id="linearGradient3627">
42947 - <stop
42948 - style="stop-color:#ffffff;stop-opacity:1;"
42949 - offset="0"
42950 - id="stop3629" />
42951 - <stop
42952 - style="stop-color:#000000;stop-opacity:1;"
42953 - offset="1"
42954 - id="stop3631" />
42955 - </linearGradient>
42956 - <linearGradient
42957 - id="linearGradient2843">
42958 - <stop
42959 - id="stop2845"
42960 - offset="0"
42961 - style="stop-color:#000000;stop-opacity:1;" />
42962 - <stop
42963 - style="stop-color:#000000;stop-opacity:1;"
42964 - offset="0.02188784"
42965 - id="stop2847" />
42966 - <stop
42967 - style="stop-color:#000000;stop-opacity:1;"
42968 - offset="0.75866222"
42969 - id="stop2849" />
42970 - <stop
42971 - id="stop2851"
42972 - offset="0.88508981"
42973 - style="stop-color:#232323;stop-opacity:1;" />
42974 - <stop
42975 - id="stop2853"
42976 - offset="1"
42977 - style="stop-color:#595959;stop-opacity:1;" />
42978 - </linearGradient>
42979 - <linearGradient
42980 - inkscape:collect="always"
42981 - id="linearGradient8964">
42982 - <stop
42983 - style="stop-color:#1a1a1a;stop-opacity:1;"
42984 - offset="0"
42985 - id="stop8966" />
42986 - <stop
42987 - style="stop-color:#1a1a1a;stop-opacity:0;"
42988 - offset="1"
42989 - id="stop8968" />
42990 - </linearGradient>
42991 - <linearGradient
42992 - id="linearGradient8952">
42993 - <stop
42994 - style="stop-color:#0a0c0c;stop-opacity:1;"
42995 - offset="0"
42996 - id="stop8954" />
42997 - <stop
42998 - style="stop-color:#1f2727;stop-opacity:0;"
42999 - offset="1"
43000 - id="stop8956" />
43001 - </linearGradient>
43002 - <linearGradient
43003 - id="linearGradient8430">
43004 - <stop
43005 - style="stop-color:#1e2323;stop-opacity:1;"
43006 - offset="0"
43007 - id="stop8432" />
43008 - <stop
43009 - id="stop8438"
43010 - offset="0.55992389"
43011 - style="stop-color:#181d1d;stop-opacity:1;" />
43012 - <stop
43013 - style="stop-color:#000000;stop-opacity:1;"
43014 - offset="1"
43015 - id="stop8434" />
43016 - </linearGradient>
43017 - <linearGradient
43018 - id="linearGradient8398">
43019 - <stop
43020 - style="stop-color:#283131;stop-opacity:0;"
43021 - offset="0"
43022 - id="stop8400" />
43023 - <stop
43024 - id="stop8402"
43025 - offset="0.5125587"
43026 - style="stop-color:#1e2424;stop-opacity:0;" />
43027 - <stop
43028 - style="stop-color:#000000;stop-opacity:1;"
43029 - offset="1"
43030 - id="stop8404" />
43031 - </linearGradient>
43032 - <linearGradient
43033 - inkscape:collect="always"
43034 - id="linearGradient4870">
43035 - <stop
43036 - style="stop-color:#c7bd80;stop-opacity:1;"
43037 - offset="0"
43038 - id="stop4872" />
43039 - <stop
43040 - style="stop-color:#c7bd80;stop-opacity:0;"
43041 - offset="1"
43042 - id="stop4874" />
43043 - </linearGradient>
43044 - <linearGradient
43045 - inkscape:collect="always"
43046 - id="linearGradient4862">
43047 - <stop
43048 - style="stop-color:#e2e2e2;stop-opacity:1;"
43049 - offset="0"
43050 - id="stop4864" />
43051 - <stop
43052 - style="stop-color:#e2e2e2;stop-opacity:0;"
43053 - offset="1"
43054 - id="stop4866" />
43055 - </linearGradient>
43056 - <linearGradient
43057 - id="linearGradient4478">
43058 - <stop
43059 - style="stop-color:#f9eed3;stop-opacity:1;"
43060 - offset="0"
43061 - id="stop4480" />
43062 - <stop
43063 - style="stop-color:#000000;stop-opacity:0;"
43064 - offset="1"
43065 - id="stop4482" />
43066 - </linearGradient>
43067 - <linearGradient
43068 - id="linearGradient4106">
43069 - <stop
43070 - style="stop-color:#d9e002;stop-opacity:1;"
43071 - offset="0"
43072 - id="stop4108" />
43073 - <stop
43074 - id="stop4114"
43075 - offset="0.5"
43076 - style="stop-color:#a9ae01;stop-opacity:1;" />
43077 - <stop
43078 - style="stop-color:#717501;stop-opacity:1;"
43079 - offset="1"
43080 - id="stop4110" />
43081 - </linearGradient>
43082 - <linearGradient
43083 - id="linearGradient4084">
43084 - <stop
43085 - style="stop-color:#7d7d00;stop-opacity:1;"
43086 - offset="0"
43087 - id="stop4086" />
43088 - <stop
43089 - id="stop4088"
43090 - offset="0.3636601"
43091 - style="stop-color:#c6c700;stop-opacity:1;" />
43092 - <stop
43093 - style="stop-color:#f6f800;stop-opacity:1;"
43094 - offset="1"
43095 - id="stop4090" />
43096 - </linearGradient>
43097 - <linearGradient
43098 - id="linearGradient4041">
43099 - <stop
43100 - id="stop4043"
43101 - offset="0"
43102 - style="stop-color:#ffff00;stop-opacity:1;" />
43103 - <stop
43104 - id="stop4045"
43105 - offset="1"
43106 - style="stop-color:#ffff00;stop-opacity:0;" />
43107 - </linearGradient>
43108 - <linearGradient
43109 - id="linearGradient4025">
43110 - <stop
43111 - style="stop-color:#ffffff;stop-opacity:1;"
43112 - offset="0"
43113 - id="stop4027" />
43114 - <stop
43115 - style="stop-color:#ffffff;stop-opacity:0;"
43116 - offset="1"
43117 - id="stop4031" />
43118 - </linearGradient>
43119 - <linearGradient
43120 - id="linearGradient4013">
43121 - <stop
43122 - style="stop-color:#ffff00;stop-opacity:1;"
43123 - offset="0"
43124 - id="stop4015" />
43125 - <stop
43126 - style="stop-color:#b2b200;stop-opacity:1;"
43127 - offset="1"
43128 - id="stop4017" />
43129 - </linearGradient>
43130 - <linearGradient
43131 - id="linearGradient3985">
43132 - <stop
43133 - style="stop-color:#000000;stop-opacity:1;"
43134 - offset="0"
43135 - id="stop3987" />
43136 - <stop
43137 - style="stop-color:#1d1d1d;stop-opacity:1;"
43138 - offset="1"
43139 - id="stop3989" />
43140 - </linearGradient>
43141 - <linearGradient
43142 - id="linearGradient3961">
43143 - <stop
43144 - style="stop-color:#283131;stop-opacity:0;"
43145 - offset="0"
43146 - id="stop3963" />
43147 - <stop
43148 - id="stop3965"
43149 - offset="0.5"
43150 - style="stop-color:#1e2424;stop-opacity:1;" />
43151 - <stop
43152 - style="stop-color:#000000;stop-opacity:1;"
43153 - offset="1"
43154 - id="stop3967" />
43155 - </linearGradient>
43156 - <linearGradient
43157 - id="linearGradient3951">
43158 - <stop
43159 - id="stop3953"
43160 - offset="0"
43161 - style="stop-color:#344040;stop-opacity:1;" />
43162 - <stop
43163 - style="stop-color:#222929;stop-opacity:1;"
43164 - offset="0.5"
43165 - id="stop3955" />
43166 - <stop
43167 - id="stop3957"
43168 - offset="1"
43169 - style="stop-color:#000000;stop-opacity:1;" />
43170 - </linearGradient>
43171 - <linearGradient
43172 - id="linearGradient3909">
43173 - <stop
43174 - style="stop-color:#283131;stop-opacity:1;"
43175 - offset="0"
43176 - id="stop3911" />
43177 - <stop
43178 - id="stop3917"
43179 - offset="0.5"
43180 - style="stop-color:#1e2424;stop-opacity:1;" />
43181 - <stop
43182 - style="stop-color:#000000;stop-opacity:1;"
43183 - offset="1"
43184 - id="stop3913" />
43185 - </linearGradient>
43186 - <linearGradient
43187 - id="linearGradient3537">
43188 - <stop
43189 - style="stop-color:#ada469;stop-opacity:1;"
43190 - offset="0"
43191 - id="stop3539" />
43192 - <stop
43193 - id="stop3545"
43194 - offset="0.81132078"
43195 - style="stop-color:#ada469;stop-opacity:1;" />
43196 - <stop
43197 - style="stop-color:#ffffff;stop-opacity:1;"
43198 - offset="1"
43199 - id="stop3541" />
43200 - </linearGradient>
43201 - <linearGradient
43202 - id="linearGradient3317">
43203 - <stop
43204 - style="stop-color:#cfc690;stop-opacity:1"
43205 - offset="0"
43206 - id="stop3319" />
43207 - <stop
43208 - id="stop3321"
43209 - offset="0.21161865"
43210 - style="stop-color:#afa775;stop-opacity:1;" />
43211 - <stop
43212 - id="stop3323"
43213 - offset="0.53408515"
43214 - style="stop-color:#615c3a;stop-opacity:1;" />
43215 - <stop
43216 - style="stop-color:#000000;stop-opacity:1;"
43217 - offset="0.76504093"
43218 - id="stop3325" />
43219 - <stop
43220 - id="stop3327"
43221 - offset="1"
43222 - style="stop-color:#403518;stop-opacity:1;" />
43223 - </linearGradient>
43224 - <linearGradient
43225 - id="linearGradient3239">
43226 - <stop
43227 - id="stop3251"
43228 - offset="0"
43229 - style="stop-color:#cfc690;stop-opacity:1;" />
43230 - <stop
43231 - style="stop-color:#afa775;stop-opacity:1;"
43232 - offset="0.21161865"
43233 - id="stop3267" />
43234 - <stop
43235 - style="stop-color:#615c3a;stop-opacity:1;"
43236 - offset="0.53408515"
43237 - id="stop3261" />
43238 - <stop
43239 - id="stop3265"
43240 - offset="0.76504093"
43241 - style="stop-color:#000000;stop-opacity:1;" />
43242 - <stop
43243 - style="stop-color:#403518;stop-opacity:1;"
43244 - offset="1"
43245 - id="stop3243" />
43246 - </linearGradient>
43247 - <radialGradient
43248 - inkscape:collect="always"
43249 - xlink:href="#linearGradient3239"
43250 - id="radialGradient3281"
43251 - gradientUnits="userSpaceOnUse"
43252 - gradientTransform="matrix(1.5480423,1.7414304,-1.9683515,1.7497638,-1130.5586,-1872.5121)"
43253 - spreadMethod="pad"
43254 - cx="806.52582"
43255 - cy="212.68117"
43256 - fx="806.52582"
43257 - fy="212.68117"
43258 - r="48.363216" />
43259 - <radialGradient
43260 - inkscape:collect="always"
43261 - xlink:href="#linearGradient3317"
43262 - id="radialGradient3315"
43263 - cx="543.6698"
43264 - cy="147.3131"
43265 - fx="543.6698"
43266 - fy="147.3131"
43267 - r="47.863216"
43268 - gradientTransform="matrix(2.1382256,0,0,2.3382884,-77.03847,-101.68704)"
43269 - gradientUnits="userSpaceOnUse" />
43270 - <radialGradient
43271 - inkscape:collect="always"
43272 - xlink:href="#linearGradient3537"
43273 - id="radialGradient3543"
43274 - cx="385"
43275 - cy="237.00504"
43276 - fx="385"
43277 - fy="237.00504"
43278 - r="86.928574"
43279 - gradientTransform="matrix(1,0,0,0.8562038,0,34.080427)"
43280 - gradientUnits="userSpaceOnUse" />
43281 - <radialGradient
43282 - inkscape:collect="always"
43283 - xlink:href="#linearGradient3909"
43284 - id="radialGradient3915"
43285 - cx="418.30365"
43286 - cy="342.47794"
43287 - fx="418.30365"
43288 - fy="342.47794"
43289 - r="131.4509"
43290 - gradientTransform="matrix(1.3957347,0.6211056,-0.4244067,0.9537174,-15.061913,-227.96711)"
43291 - gradientUnits="userSpaceOnUse" />
43292 - <radialGradient
43293 - inkscape:collect="always"
43294 - xlink:href="#linearGradient3951"
43295 - id="radialGradient3933"
43296 - cx="397.16388"
43297 - cy="336.95245"
43298 - fx="397.16388"
43299 - fy="336.95245"
43300 - r="36.75"
43301 - gradientUnits="userSpaceOnUse"
43302 - gradientTransform="matrix(1.9449972,2.4894837e-7,-2.4894833e-7,1.9449969,-375.31868,-318.41912)" />
43303 - <linearGradient
43304 - inkscape:collect="always"
43305 - xlink:href="#linearGradient3961"
43306 - id="linearGradient3959"
43307 - x1="398.21429"
43308 - y1="343.52289"
43309 - x2="379.28571"
43310 - y2="265.30862"
43311 - gradientUnits="userSpaceOnUse"
43312 - gradientTransform="translate(450.03125,73.843964)" />
43313 - <filter
43314 - inkscape:collect="always"
43315 - id="filter3981"
43316 - x="-0.30000001"
43317 - width="1.6"
43318 - y="-0.30000001"
43319 - height="1.6">
43320 - <feGaussianBlur
43321 - inkscape:collect="always"
43322 - stdDeviation="2"
43323 - id="feGaussianBlur3983" />
43324 - </filter>
43325 - <radialGradient
43326 - inkscape:collect="always"
43327 - xlink:href="#linearGradient3985"
43328 - id="radialGradient3991"
43329 - cx="402.48898"
43330 - cy="317.23578"
43331 - fx="402.48898"
43332 - fy="317.23578"
43333 - r="23.714285"
43334 - gradientUnits="userSpaceOnUse"
43335 - gradientTransform="matrix(4.3776616,0,0,4.3776616,-1358.3025,-1070.7357)" />
43336 - <clipPath
43337 - clipPathUnits="userSpaceOnUse"
43338 - id="clipPath3999">
43339 - <path
43340 - style="opacity:1;fill:#f5ff04;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
43341 - d="M 179.64286,267.36218 C 157.23242,307.0651 119.02676,383.14247 110.35715,417.00504 C 101.70994,450.78014 101.58516,483.42158 110,503.43362 C 118.3602,523.31575 136.16398,539.06642 150.71428,544.86218 C 150.1179,530.48631 165.08723,501.57635 223.57143,472.36218 C 282.1977,443.07704 301.95306,445.23132 327.14285,425.21932 C 352.77291,404.85756 339.75316,358.17469 330.35714,331.29075 C 320.9229,304.29747 295.38973,272.16627 263.92857,261.6479 C 232.8953,251.27258 198.91081,256.79953 179.64286,267.36218 z"
43342 - id="path4001"
43343 - sodipodi:nodetypes="czzczzzzc" />
43344 - </clipPath>
43345 - <radialGradient
43346 - inkscape:collect="always"
43347 - xlink:href="#linearGradient4013"
43348 - id="radialGradient4056"
43349 - gradientUnits="userSpaceOnUse"
43350 - gradientTransform="matrix(1.1323239,0.7659488,-1.4550286,2.1510098,588.75376,-711.79716)"
43351 - cx="228.81355"
43352 - cy="440.26971"
43353 - fx="228.81355"
43354 - fy="440.26971"
43355 - r="119.17509" />
43356 - <radialGradient
43357 - inkscape:collect="always"
43358 - xlink:href="#linearGradient4041"
43359 - id="radialGradient4060"
43360 - gradientUnits="userSpaceOnUse"
43361 - gradientTransform="matrix(5.911206e-2,2.6869855,-0.7234268,1.5914947e-2,408.72779,-424.56452)"
43362 - cx="275.4422"
43363 - cy="335.34866"
43364 - fx="275.4422"
43365 - fy="335.34866"
43366 - r="36.75" />
43367 - <radialGradient
43368 - inkscape:collect="always"
43369 - xlink:href="#linearGradient4025"
43370 - id="radialGradient4062"
43371 - gradientUnits="userSpaceOnUse"
43372 - gradientTransform="matrix(5.911206e-2,2.6869855,-0.7234268,1.5914947e-2,408.72779,-424.56452)"
43373 - cx="275.4422"
43374 - cy="335.34866"
43375 - fx="275.4422"
43376 - fy="335.34866"
43377 - r="36.75" />
43378 - <linearGradient
43379 - inkscape:collect="always"
43380 - xlink:href="#linearGradient4084"
43381 - id="linearGradient4082"
43382 - gradientUnits="userSpaceOnUse"
43383 - x1="182.35046"
43384 - y1="256.11136"
43385 - x2="145.53348"
43386 - y2="542.20502" />
43387 - <clipPath
43388 - clipPathUnits="userSpaceOnUse"
43389 - id="clipPath4100">
43390 - <path
43391 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9000755px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
43392 - d="M 265.93541,126.68393 L 247.1682,295.54701 L 421.27363,222.42633 L 483.22803,311.08516 L 541.11243,279.09486 L 503.57801,99.035183 L 265.93541,126.68393 z"
43393 - id="path4102"
43394 - sodipodi:nodetypes="ccccccc" />
43395 - </clipPath>
43396 - <radialGradient
43397 - inkscape:collect="always"
43398 - xlink:href="#linearGradient4106"
43399 - id="radialGradient4112"
43400 - cx="250.22678"
43401 - cy="475.09763"
43402 - fx="250.22678"
43403 - fy="475.09763"
43404 - r="95.98877"
43405 - gradientTransform="matrix(1.2259004,-0.7077739,0.1413989,0.2449102,322.22326,608.91815)"
43406 - gradientUnits="userSpaceOnUse" />
43407 - <linearGradient
43408 - inkscape:collect="always"
43409 - xlink:href="#linearGradient4478"
43410 - id="linearGradient4484"
43411 - x1="412.08926"
43412 - y1="404.91574"
43413 - x2="417.375"
43414 - y2="401.82648"
43415 - gradientUnits="userSpaceOnUse" />
43416 - <linearGradient
43417 - inkscape:collect="always"
43418 - xlink:href="#linearGradient4478"
43419 - id="linearGradient4486"
43420 - x1="411.91071"
43421 - y1="404.91577"
43422 - x2="417.375"
43423 - y2="401.82648"
43424 - gradientUnits="userSpaceOnUse" />
43425 - <linearGradient
43426 - inkscape:collect="always"
43427 - xlink:href="#linearGradient4478"
43428 - id="linearGradient4488"
43429 - x1="411.91071"
43430 - y1="405.54077"
43431 - x2="417.375"
43432 - y2="401.82648"
43433 - gradientUnits="userSpaceOnUse" />
43434 - <linearGradient
43435 - inkscape:collect="always"
43436 - xlink:href="#linearGradient4478"
43437 - id="linearGradient4490"
43438 - x1="412.08926"
43439 - y1="405.54077"
43440 - x2="417.375"
43441 - y2="401.82648"
43442 - gradientUnits="userSpaceOnUse" />
43443 - <linearGradient
43444 - inkscape:collect="always"
43445 - xlink:href="#linearGradient4478"
43446 - id="linearGradient4492"
43447 - x1="411.73212"
43448 - y1="405.54077"
43449 - x2="417.375"
43450 - y2="401.82648"
43451 - gradientUnits="userSpaceOnUse" />
43452 - <radialGradient
43453 - inkscape:collect="always"
43454 - xlink:href="#linearGradient4862"
43455 - id="radialGradient4868"
43456 - cx="429.56738"
43457 - cy="377.42877"
43458 - fx="429.56738"
43459 - fy="377.42877"
43460 - r="72.079735"
43461 - gradientTransform="matrix(1,0,0,0.618034,0,144.16496)"
43462 - gradientUnits="userSpaceOnUse" />
43463 - <radialGradient
43464 - inkscape:collect="always"
43465 - xlink:href="#linearGradient4870"
43466 - id="radialGradient4876"
43467 - cx="437.6991"
43468 - cy="391.21735"
43469 - fx="437.6991"
43470 - fy="391.21735"
43471 - r="36.611931"
43472 - gradientTransform="matrix(1,0,0,0.618034,0,149.43174)"
43473 - gradientUnits="userSpaceOnUse" />
43474 - <radialGradient
43475 - inkscape:collect="always"
43476 - xlink:href="#linearGradient4013"
43477 - id="radialGradient3585"
43478 - gradientUnits="userSpaceOnUse"
43479 - gradientTransform="matrix(1.1323239,0.7659488,-1.4550286,2.1510098,588.75376,-711.79716)"
43480 - cx="228.81355"
43481 - cy="440.26971"
43482 - fx="228.81355"
43483 - fy="440.26971"
43484 - r="119.17509" />
43485 - <linearGradient
43486 - inkscape:collect="always"
43487 - xlink:href="#linearGradient4084"
43488 - id="linearGradient3587"
43489 - gradientUnits="userSpaceOnUse"
43490 - x1="182.35046"
43491 - y1="256.11136"
43492 - x2="145.53348"
43493 - y2="542.20502" />
43494 - <radialGradient
43495 - inkscape:collect="always"
43496 - xlink:href="#linearGradient3317"
43497 - id="radialGradient8410"
43498 - gradientUnits="userSpaceOnUse"
43499 - gradientTransform="matrix(1.0036478,-1.0345492e-7,1.7124628e-7,1.6613125,-753.99632,-302.76972)"
43500 - cx="317.78754"
43501 - cy="129.65378"
43502 - fx="317.78754"
43503 - fy="129.65378"
43504 - r="47.863216" />
43505 - <radialGradient
43506 - inkscape:collect="always"
43507 - xlink:href="#linearGradient8398"
43508 - id="radialGradient8412"
43509 - gradientUnits="userSpaceOnUse"
43510 - gradientTransform="matrix(2.0747661,-0.1577957,0.2382425,3.1325183,-1144.2358,-272.29325)"
43511 - cx="325.30847"
43512 - cy="80.909554"
43513 - fx="325.30847"
43514 - fy="80.909554"
43515 - r="26.937988" />
43516 - <clipPath
43517 - clipPathUnits="userSpaceOnUse"
43518 - id="clipPath8514">
43519 - <path
43520 - style="opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43521 - d="M 352.24553,211.99185 C 348.4411,186.72762 335.43581,161.35383 335.08873,136.46662 C 334.90247,123.1111 338.36158,109.89571 348.84426,96.912574 C 385.19128,31.616739 465.78517,12.217889 534.77892,5.447147 C 621.70131,-5.569654 719.69159,23.387219 768.15026,100.84843 C 822.27428,176.58173 824.82502,273.38755 848.7623,360.37638 C 878.20009,487.50398 903.54144,616.59052 909.15454,747.22673 C 906.09106,825.40858 900.7282,912.41088 848.65133,975.36086 C 800.62479,1025.7183 725.86486,1025.4139 661.58145,1034.3632 C 571.02606,1039.0182 477.22992,1018.2174 399.79755,970.16496 C 335.02191,932.22495 304.06736,856.68633 302.51815,784.14538 C 294.12898,704.27022 328.90967,630.33687 354.13855,556.98577 C 361.60916,474.2247 363.55141,390.73802 363.79189,307.60093 C 362.95507,275.40549 356.70236,243.7836 352.24553,211.99185 z"
43522 - id="path8516"
43523 - sodipodi:nodetypes="cscccccccccccc" />
43524 - </clipPath>
43525 - <clipPath
43526 - clipPathUnits="userSpaceOnUse"
43527 - id="clipPath8604">
43528 - <path
43529 - style="opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43530 - d="M 352.24553,211.99185 C 348.4411,186.72762 335.43581,161.35383 335.08873,136.46662 C 334.90247,123.1111 338.36158,109.89571 348.84426,96.912574 C 385.19128,31.616739 465.78517,12.217889 534.77892,5.447147 C 621.70131,-5.569654 719.69159,23.387219 768.15026,100.84843 C 822.27428,176.58173 824.82502,273.38755 848.7623,360.37638 C 878.20009,487.50398 903.54144,616.59052 909.15454,747.22673 C 906.09106,825.40858 900.7282,912.41088 848.65133,975.36086 C 800.62479,1025.7183 725.86486,1025.4139 661.58145,1034.3632 C 571.02606,1039.0182 477.22992,1018.2174 399.79755,970.16496 C 335.02191,932.22495 304.06736,856.68633 302.51815,784.14538 C 294.12898,704.27022 328.90967,630.33687 354.13855,556.98577 C 361.60916,474.2247 363.55141,390.73802 363.79189,307.60093 C 362.95507,275.40549 356.70236,243.7836 352.24553,211.99185 z"
43531 - id="path8606"
43532 - sodipodi:nodetypes="cscccccccccccc" />
43533 - </clipPath>
43534 - <clipPath
43535 - clipPathUnits="userSpaceOnUse"
43536 - id="clipPath8610">
43537 - <path
43538 - style="opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43539 - d="M 352.24553,211.99185 C 348.4411,186.72762 335.43581,161.35383 335.08873,136.46662 C 334.90247,123.1111 338.36158,109.89571 348.84426,96.912574 C 385.19128,31.616739 465.78517,12.217889 534.77892,5.447147 C 621.70131,-5.569654 719.69159,23.387219 768.15026,100.84843 C 822.27428,176.58173 824.82502,273.38755 848.7623,360.37638 C 878.20009,487.50398 903.54144,616.59052 909.15454,747.22673 C 906.09106,825.40858 900.7282,912.41088 848.65133,975.36086 C 800.62479,1025.7183 725.86486,1025.4139 661.58145,1034.3632 C 571.02606,1039.0182 477.22992,1018.2174 399.79755,970.16496 C 335.02191,932.22495 304.06736,856.68633 302.51815,784.14538 C 294.12898,704.27022 328.90967,630.33687 354.13855,556.98577 C 361.60916,474.2247 363.55141,390.73802 363.79189,307.60093 C 362.95507,275.40549 356.70236,243.7836 352.24553,211.99185 z"
43540 - id="path8612"
43541 - sodipodi:nodetypes="cscccccccccccc" />
43542 - </clipPath>
43543 - <clipPath
43544 - clipPathUnits="userSpaceOnUse"
43545 - id="clipPath8616">
43546 - <path
43547 - style="opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43548 - d="M 352.24553,211.99185 C 348.4411,186.72762 335.43581,161.35383 335.08873,136.46662 C 334.90247,123.1111 338.36158,109.89571 348.84426,96.912574 C 385.19128,31.616739 465.78517,12.217889 534.77892,5.447147 C 621.70131,-5.569654 719.69159,23.387219 768.15026,100.84843 C 822.27428,176.58173 824.82502,273.38755 848.7623,360.37638 C 878.20009,487.50398 903.54144,616.59052 909.15454,747.22673 C 906.09106,825.40858 900.7282,912.41088 848.65133,975.36086 C 800.62479,1025.7183 725.86486,1025.4139 661.58145,1034.3632 C 571.02606,1039.0182 477.22992,1018.2174 399.79755,970.16496 C 335.02191,932.22495 304.06736,856.68633 302.51815,784.14538 C 294.12898,704.27022 328.90967,630.33687 354.13855,556.98577 C 361.60916,474.2247 363.55141,390.73802 363.79189,307.60093 C 362.95507,275.40549 356.70236,243.7836 352.24553,211.99185 z"
43549 - id="path8618"
43550 - sodipodi:nodetypes="cscccccccccccc" />
43551 - </clipPath>
43552 - <clipPath
43553 - clipPathUnits="userSpaceOnUse"
43554 - id="clipPath8622">
43555 - <path
43556 - style="opacity:1;fill:#202020;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
43557 - d="M 821.64329,477.88997 C 821.64329,477.88997 844.26276,471.38316 857.38604,472.01724 C 870.50932,472.65133 888.02762,473.95586 901.09489,484.20343 C 914.16216,494.45099 926.16263,511.3435 935.20728,542.57308 C 944.25193,573.80266 936.9056,641.82509 929.03125,685.92043 C 921.1569,730.01577 900.76615,792.03341 884.03125,825.92043 C 867.29635,859.80745 834.23354,903.41563 823.46182,915.79659 C 812.0976,928.85856 767.25593,952.22276 744.03125,958.06326 C 749.33455,947.45666 792.93101,907.47442 779.03125,897.349 C 765.01228,887.13674 733.27116,943.33136 694.7381,926.38217 C 716.12041,913.25005 736.5175,875.19611 728.77871,859.78772 C 720.93846,844.17733 698.07378,908.54529 635.24317,896.8006 C 665.29521,869.27394 690.65023,825.89659 676.50587,813.8209 C 662.09071,801.51403 616.04412,868.11405 616.04412,868.11405 C 616.04412,868.11405 613.22222,826.41287 629.81732,799.50673 C 646.45667,772.52886 709.47029,717.89146 729.37045,687.80331 C 749.2706,657.71517 762.98301,621.79429 771.50587,595.28537 C 780.02873,568.77645 787.30681,518.18583 787.30681,518.18583"
43558 - id="path8624"
43559 - sodipodi:nodetypes="czzzzzzczczczczzzc" />
43560 - </clipPath>
43561 - <clipPath
43562 - clipPathUnits="userSpaceOnUse"
43563 - id="clipPath8642">
43564 - <path
43565 - style="opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43566 - d="M 366.88839,504.13471 C 366.88839,504.13471 337.33433,544.70776 319.03125,578.42042 C 300.72816,612.13309 260.41016,704.77736 248.67411,749.49185 C 236.91471,794.29529 186.17411,873.06329 186.17411,873.06329 L 262.24554,891.27757 C 262.24554,891.27757 274.05266,878.45422 293.31696,845.20614 C 312.58126,811.95806 353.67411,706.63471 353.67411,706.63471 L 366.88839,504.13471 z"
43567 - id="path8644"
43568 - sodipodi:nodetypes="czzcczcc" />
43569 - </clipPath>
43570 - <clipPath
43571 - clipPathUnits="userSpaceOnUse"
43572 - id="clipPath8658">
43573 - <path
43574 - style="opacity:1;fill:#0b0b0b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43575 - d="M 569.03125,1018.7776 C 564.74554,1019.4919 541.4031,1022.3957 511.17411,1028.7776 C 480.94512,1035.1595 411.39918,1054.7395 368.31696,1064.4919 C 325.23474,1074.2443 251.05253,1099.3079 211.40434,1091.7573 C 171.75616,1084.2067 121.88839,1027.349 121.88839,1027.349 L 126.17411,933.06329 C 126.17411,933.06329 212.05962,916.86235 238.31696,899.49186 C 264.57431,882.12137 283.89934,849.82588 297.60268,828.06329 C 311.30602,806.3007 330.45982,756.63471 330.45982,756.63471 L 569.03125,1018.7776 z"
43576 - id="path8660"
43577 - sodipodi:nodetypes="czzzcczzcc" />
43578 - </clipPath>
43579 - <filter
43580 - inkscape:collect="always"
43581 - id="filter8802"
43582 - x="-0.35311759"
43583 - width="1.7062352"
43584 - y="-0.1817714"
43585 - height="1.3635428">
43586 - <feGaussianBlur
43587 - inkscape:collect="always"
43588 - stdDeviation="48.038491"
43589 - id="feGaussianBlur8804" />
43590 - </filter>
43591 - <filter
43592 - inkscape:collect="always"
43593 - id="filter8806"
43594 - x="-0.61142862"
43595 - width="2.2228572"
43596 - y="-0.14930232"
43597 - height="1.2986046">
43598 - <feGaussianBlur
43599 - inkscape:collect="always"
43600 - stdDeviation="37.830213"
43601 - id="feGaussianBlur8808" />
43602 - </filter>
43603 - <filter
43604 - inkscape:collect="always"
43605 - id="filter8810"
43606 - x="-0.23519406"
43607 - width="1.4703881"
43608 - y="-0.24500646"
43609 - height="1.4900129">
43610 - <feGaussianBlur
43611 - inkscape:collect="always"
43612 - stdDeviation="58.328041"
43613 - id="feGaussianBlur8812" />
43614 - </filter>
43615 - <filter
43616 - inkscape:collect="always"
43617 - id="filter8814"
43618 - x="-0.20466694"
43619 - width="1.4093339"
43620 - y="-0.29007819"
43621 - height="1.5801564">
43622 - <feGaussianBlur
43623 - inkscape:collect="always"
43624 - stdDeviation="22.300169"
43625 - id="feGaussianBlur8816" />
43626 - </filter>
43627 - <filter
43628 - inkscape:collect="always"
43629 - id="filter8818"
43630 - x="-0.34381232"
43631 - width="1.6876246"
43632 - y="-0.18433961"
43633 - height="1.3686792">
43634 - <feGaussianBlur
43635 - inkscape:collect="always"
43636 - stdDeviation="34.542167"
43637 - id="feGaussianBlur8820" />
43638 - </filter>
43639 - <filter
43640 - inkscape:collect="always"
43641 - id="filter8822"
43642 - x="-0.2742857"
43643 - width="1.5485713"
43644 - y="-0.21333334"
43645 - height="1.4266667">
43646 - <feGaussianBlur
43647 - inkscape:collect="always"
43648 - stdDeviation="11.313708"
43649 - id="feGaussianBlur8824" />
43650 - </filter>
43651 - <filter
43652 - inkscape:collect="always"
43653 - id="filter8826"
43654 - x="-0.25894088"
43655 - width="1.5178818"
43656 - y="-0.2236412"
43657 - height="1.4472824">
43658 - <feGaussianBlur
43659 - inkscape:collect="always"
43660 - stdDeviation="19.631544"
43661 - id="feGaussianBlur8828" />
43662 - </filter>
43663 - <filter
43664 - inkscape:collect="always"
43665 - id="filter8856"
43666 - x="-0.3253231"
43667 - width="1.6506462"
43668 - y="-0.19013336"
43669 - height="1.3802667">
43670 - <feGaussianBlur
43671 - inkscape:collect="always"
43672 - stdDeviation="28.712591"
43673 - id="feGaussianBlur8858" />
43674 - </filter>
43675 - <filter
43676 - inkscape:collect="always"
43677 - id="filter8860"
43678 - x="-0.38093024"
43679 - width="1.7618605"
43680 - y="-0.17518716"
43681 - height="1.3503743">
43682 - <feGaussianBlur
43683 - inkscape:collect="always"
43684 - stdDeviation="19.304015"
43685 - id="feGaussianBlur8862" />
43686 - </filter>
43687 - <filter
43688 - inkscape:collect="always"
43689 - id="filter8888"
43690 - x="-0.2112188"
43691 - width="1.4224375"
43692 - y="-0.16808605"
43693 - height="1.3361721">
43694 - <feGaussianBlur
43695 - inkscape:collect="always"
43696 - stdDeviation="8.3693583"
43697 - id="feGaussianBlur8890" />
43698 - </filter>
43699 - <filter
43700 - inkscape:collect="always"
43701 - id="filter8892"
43702 - x="-0.18692794"
43703 - width="1.3738559"
43704 - y="-0.23646873"
43705 - height="1.4729375">
43706 - <feGaussianBlur
43707 - inkscape:collect="always"
43708 - stdDeviation="31.21228"
43709 - id="feGaussianBlur8894" />
43710 - </filter>
43711 - <clipPath
43712 - clipPathUnits="userSpaceOnUse"
43713 - id="clipPath8906">
43714 - <path
43715 - style="opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43716 - d="M 352.24553,211.99185 C 348.4411,186.72762 335.43581,161.35383 335.08873,136.46662 C 334.90247,123.1111 338.36158,109.89571 348.84426,96.912574 C 385.19128,31.616739 465.78517,12.217889 534.77892,5.447147 C 621.70131,-5.569654 719.69159,23.387219 768.15026,100.84843 C 822.27428,176.58173 824.82502,273.38755 848.7623,360.37638 C 878.20009,487.50398 903.54144,616.59052 909.15454,747.22673 C 906.09106,825.40858 900.7282,912.41088 848.65133,975.36086 C 800.62479,1025.7183 725.86486,1025.4139 661.58145,1034.3632 C 571.02606,1039.0182 477.22992,1018.2174 399.79755,970.16496 C 335.02191,932.22495 304.06736,856.68633 302.51815,784.14538 C 294.12898,704.27022 328.90967,630.33687 354.13855,556.98577 C 361.60916,474.2247 363.55141,390.73802 363.79189,307.60093 C 362.95507,275.40549 356.70236,243.7836 352.24553,211.99185 z"
43717 - id="path8908"
43718 - sodipodi:nodetypes="cscccccccccccc" />
43719 - </clipPath>
43720 - <filter
43721 - inkscape:collect="always"
43722 - id="filter8940"
43723 - x="-0.25152978"
43724 - width="1.5030596"
43725 - y="-0.053035267"
43726 - height="1.1060705">
43727 - <feGaussianBlur
43728 - inkscape:collect="always"
43729 - stdDeviation="13.024603"
43730 - id="feGaussianBlur8942" />
43731 - </filter>
43732 - <linearGradient
43733 - inkscape:collect="always"
43734 - xlink:href="#linearGradient8952"
43735 - id="linearGradient8958"
43736 - x1="609.31244"
43737 - y1="239.46866"
43738 - x2="560.83142"
43739 - y2="262.86206"
43740 - gradientUnits="userSpaceOnUse"
43741 - gradientTransform="translate(450.03125,73.843964)" />
43742 - <linearGradient
43743 - inkscape:collect="always"
43744 - xlink:href="#linearGradient8964"
43745 - id="linearGradient8970"
43746 - x1="603.84064"
43747 - y1="627.85303"
43748 - x2="616.24396"
43749 - y2="585.42664"
43750 - gradientUnits="userSpaceOnUse"
43751 - gradientTransform="translate(450.03125,73.843964)" />
43752 - <filter
43753 - inkscape:collect="always"
43754 - id="filter9020"
43755 - x="-0.32861114"
43756 - width="1.6572223"
43757 - y="-0.182"
43758 - height="1.364">
43759 - <feGaussianBlur
43760 - inkscape:collect="always"
43761 - stdDeviation="20.912684"
43762 - id="feGaussianBlur9022" />
43763 - </filter>
43764 - <filter
43765 - inkscape:collect="always"
43766 - id="filter9024"
43767 - x="-0.55453134"
43768 - width="2.1090627"
43769 - y="-0.51434779"
43770 - height="2.0286956">
43771 - <feGaussianBlur
43772 - inkscape:collect="always"
43773 - stdDeviation="20.912684"
43774 - id="feGaussianBlur9026" />
43775 - </filter>
43776 - <filter
43777 - inkscape:collect="always"
43778 - id="filter9044"
43779 - x="-0.32631579"
43780 - width="1.6526316"
43781 - y="-0.84545463"
43782 - height="2.6909094">
43783 - <feGaussianBlur
43784 - inkscape:collect="always"
43785 - stdDeviation="21.92031"
43786 - id="feGaussianBlur9046" />
43787 - </filter>
43788 - <filter
43789 - inkscape:collect="always"
43790 - id="filter9048"
43791 - x="-0.40879121"
43792 - width="1.8175824"
43793 - y="-0.71538466"
43794 - height="2.4307692">
43795 - <feGaussianBlur
43796 - inkscape:collect="always"
43797 - stdDeviation="21.92031"
43798 - id="feGaussianBlur9050" />
43799 - </filter>
43800 - <filter
43801 - inkscape:collect="always"
43802 - id="filter3587"
43803 - x="-0.1">
43804 - <feGaussianBlur
43805 - inkscape:collect="always"
43806 - stdDeviation="8.881432"
43807 - id="feGaussianBlur3589" />
43808 - </filter>
43809 - <clipPath
43810 - clipPathUnits="userSpaceOnUse"
43811 - id="clipPath3602">
43812 - <path
43813 - sodipodi:nodetypes="czzzzzzczczczczzzc"
43814 - id="path3604"
43815 - d="M 647.61204,540.04601 C 647.61204,540.04601 670.23151,533.5392 683.35479,534.17328 C 696.47807,534.80737 713.99637,536.1119 727.06364,546.35947 C 740.13091,556.60703 752.13138,573.49954 761.17603,604.72912 C 770.22068,635.9587 762.87435,703.98113 755,748.07647 C 747.12565,792.17181 726.7349,854.18945 710,888.07647 C 693.2651,921.96349 660.20229,965.57167 649.43057,977.95263 C 638.06635,991.0146 593.22468,1014.3788 570,1020.2193 C 575.3033,1009.6127 618.89976,969.63046 605,959.50504 C 590.98103,949.29278 559.23991,1005.4874 520.70685,988.53821 C 542.08916,975.40609 562.48625,937.35215 554.74746,921.94376 C 546.90721,906.33337 524.04253,970.70133 461.21192,958.95664 C 491.26396,931.42998 516.61898,888.05263 502.47462,875.97694 C 488.05946,863.67007 442.01287,930.27009 442.01287,930.27009 C 442.01287,930.27009 439.19097,888.56891 455.78607,861.66277 C 472.42542,834.6849 535.43904,780.0475 555.3392,749.95935 C 575.23935,719.87121 588.95176,683.95033 597.47462,657.44141 C 605.99748,630.93249 613.27556,580.34187 613.27556,580.34187"
43816 - style="opacity:1;fill:#202020;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
43817 - </clipPath>
43818 - <filter
43819 - inkscape:collect="always"
43820 - id="filter4120"
43821 - x="-0.2770822"
43822 - width="1.5541644"
43823 - y="-0.32482043"
43824 - height="1.6496409">
43825 - <feGaussianBlur
43826 - inkscape:collect="always"
43827 - stdDeviation="19.956289"
43828 - id="feGaussianBlur4122" />
43829 - </filter>
43830 - <clipPath
43831 - clipPathUnits="userSpaceOnUse"
43832 - id="clipPath3631">
43833 - <path
43834 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
43835 - d="M 760.16396,935.83377 C 766.95806,954.73656 770.65765,969.13346 772.05426,987.04566 C 773.45088,1004.958 768.27158,1038.8465 769.1538,1057.7018 C 770.03555,1076.547 777.28749,1097.8008 796.49843,1106.6707 C 815.9173,1115.6365 845.81767,1116.882 870.61827,1103.5251 C 895.41887,1090.1681 928.01929,1033.1996 941.59253,1006.2164 C 955.21638,979.13246 980.3536,891.71903 986.25333,856.44781 C 992.15306,821.1766 988.80387,815.14704 981.63585,807.39232 C 984.27615,779.55217 980.13613,752.45689 994.74554,720.20614 C 964.49653,732.03184 957.36325,760.36684 946.42665,785.71122 C 938.42574,734.77829 946.63581,714.43803 949.74554,684.49186 C 920.68078,699.26977 906.88403,731.60588 904.74554,777.349 C 893.82159,776.0448 883.3541,772.91477 871.17411,776.63471 C 870.91007,730.61137 869.71055,699.7453 880.08474,662.42822 C 826.82927,683.45508 817.13746,769.02232 824.03125,775.20614 C 813.14843,775.74114 802.66017,773.90884 791.17411,778.06329 C 791.81303,735.49194 790.91365,693.15468 761.17411,655.20614 C 761.17411,655.20614 730.21605,736.12848 729.74554,758.77757 C 729.27503,781.42666 739.19713,798.94345 739.19713,798.94345 C 739.19713,798.94345 730.62906,835.68396 732.89854,857.17568 C 735.19439,878.91714 753.34144,916.85185 760.16396,935.83377 z"
43836 - id="path3633"
43837 - sodipodi:nodetypes="czzzzzzcccccccccczczz" />
43838 - </clipPath>
43839 - <clipPath
43840 - clipPathUnits="userSpaceOnUse"
43841 - id="clipPath3665">
43842 - <path
43843 - sodipodi:nodetypes="czzcczcc"
43844 - id="path3667"
43845 - d="M 366.88839,504.13471 C 366.88839,504.13471 337.33433,544.70776 319.03125,578.42042 C 300.72816,612.13309 260.41016,704.77736 248.67411,749.49185 C 236.91471,794.29529 186.17411,873.06329 186.17411,873.06329 L 262.24554,891.27757 C 262.24554,891.27757 274.05266,878.45422 293.31696,845.20614 C 312.58126,811.95806 353.67411,706.63471 353.67411,706.63471 L 366.88839,504.13471 z"
43846 - style="opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
43847 - </clipPath>
43848 - <clipPath
43849 - clipPathUnits="userSpaceOnUse"
43850 - id="clipPath3677">
43851 - <path
43852 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
43853 - d="M 586.13271,997.98981 C 592.92681,1016.8926 596.6264,1031.2895 598.02301,1049.2017 C 599.41963,1067.114 594.24033,1101.0025 595.12255,1119.8578 C 596.0043,1138.703 603.25624,1159.9568 622.46718,1168.8267 C 641.88605,1177.7925 671.78642,1179.038 696.58702,1165.6811 C 721.38762,1152.3241 753.98804,1095.3556 767.56128,1068.3724 C 781.18513,1041.2885 806.32235,953.87507 812.22208,918.60385 C 818.12181,883.33264 814.77262,877.30308 807.6046,869.54836 C 810.2449,841.70821 806.10488,814.61293 820.71429,782.36218 C 790.46528,794.18788 783.332,822.52288 772.3954,847.86726 C 764.39449,796.93433 772.60456,776.59407 775.71429,746.6479 C 746.64953,761.42581 732.85278,793.76192 730.71429,839.50504 C 719.79034,838.20084 709.32285,835.07081 697.14286,838.79075 C 696.87882,792.76741 695.6793,761.90134 706.05349,724.58426 C 652.79802,745.61112 643.10621,831.17836 650,837.36218 C 639.11718,837.89718 628.62892,836.06488 617.14286,840.21933 C 617.78178,797.64798 616.8824,755.31072 587.14286,717.36218 C 587.14286,717.36218 556.1848,798.28452 555.71429,820.93361 C 555.24378,843.5827 565.16588,861.09949 565.16588,861.09949 C 565.16588,861.09949 556.59781,897.84 558.86729,919.33172 C 561.16314,941.07318 579.31019,979.00789 586.13271,997.98981 z"
43854 - id="path3679"
43855 - sodipodi:nodetypes="czzzzzzcccccccccczczz" />
43856 - </clipPath>
43857 - <filter
43858 - inkscape:collect="always"
43859 - id="filter3898">
43860 - <feGaussianBlur
43861 - inkscape:collect="always"
43862 - stdDeviation="10.892985"
43863 - id="feGaussianBlur3900" />
43864 - </filter>
43865 - <filter
43866 - inkscape:collect="always"
43867 - id="filter4130"
43868 - x="-0.49509686"
43869 - width="1.9901937"
43870 - y="-0.26708817"
43871 - height="1.5341763">
43872 - <feGaussianBlur
43873 - inkscape:collect="always"
43874 - stdDeviation="10.730622"
43875 - id="feGaussianBlur4132" />
43876 - </filter>
43877 - <filter
43878 - inkscape:collect="always"
43879 - id="filter4141"
43880 - x="-0.40611032"
43881 - width="1.8122206"
43882 - y="-0.30260596"
43883 - height="1.6052119">
43884 - <feGaussianBlur
43885 - inkscape:collect="always"
43886 - stdDeviation="9.8586086"
43887 - id="feGaussianBlur4143" />
43888 - </filter>
43889 - <clipPath
43890 - clipPathUnits="userSpaceOnUse"
43891 - id="clipPath4177">
43892 - <path
43893 - sodipodi:nodetypes="czzzzzzcccccccccczczz"
43894 - id="path4179"
43895 - d="M 586.13271,997.98981 C 592.92681,1016.8926 596.6264,1031.2895 598.02301,1049.2017 C 599.41963,1067.114 594.24033,1101.0025 595.12255,1119.8578 C 596.0043,1138.703 603.25624,1159.9568 622.46718,1168.8267 C 641.88605,1177.7925 671.78642,1179.038 696.58702,1165.6811 C 721.38762,1152.3241 753.98804,1095.3556 767.56128,1068.3724 C 781.18513,1041.2885 806.32235,953.87507 812.22208,918.60385 C 818.12181,883.33264 814.77262,877.30308 807.6046,869.54836 C 810.2449,841.70821 806.10488,814.61293 820.71429,782.36218 C 790.46528,794.18788 783.332,822.52288 772.3954,847.86726 C 764.39449,796.93433 772.60456,776.59407 775.71429,746.6479 C 746.64953,761.42581 732.85278,793.76192 730.71429,839.50504 C 719.79034,838.20084 709.32285,835.07081 697.14286,838.79075 C 696.87882,792.76741 695.6793,761.90134 706.05349,724.58426 C 652.79802,745.61112 643.10621,831.17836 650,837.36218 C 639.11718,837.89718 628.62892,836.06488 617.14286,840.21933 C 617.78178,797.64798 616.8824,755.31072 587.14286,717.36218 C 587.14286,717.36218 556.1848,798.28452 555.71429,820.93361 C 555.24378,843.5827 565.16588,861.09949 565.16588,861.09949 C 565.16588,861.09949 556.59781,897.84 558.86729,919.33172 C 561.16314,941.07318 579.31019,979.00789 586.13271,997.98981 z"
43896 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
43897 - </clipPath>
43898 - <filter
43899 - inkscape:collect="always"
43900 - id="filter4185">
43901 - <feGaussianBlur
43902 - inkscape:collect="always"
43903 - stdDeviation="3.6164709"
43904 - id="feGaussianBlur4187" />
43905 - </filter>
43906 - <filter
43907 - inkscape:collect="always"
43908 - id="filter4105">
43909 - <feGaussianBlur
43910 - inkscape:collect="always"
43911 - stdDeviation="3.8640966"
43912 - id="feGaussianBlur4107" />
43913 - </filter>
43914 - <clipPath
43915 - clipPathUnits="userSpaceOnUse"
43916 - id="clipPath2833">
43917 - <path
43918 - style="opacity:1;fill:#292929;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43919 - d="M 569.03125,1018.7776 C 564.74554,1019.4919 541.4031,1022.3957 511.17411,1028.7776 C 480.94512,1035.1595 453.86016,1033.7437 375.38803,1046.1072 C 295.53625,1058.688 281.32367,1088.6495 267.26578,1093.1715 C 252.56564,1097.9001 121.88839,1027.349 121.88839,1027.349 L 126.17411,933.06329 C 126.17411,933.06329 212.05962,916.86235 238.31696,899.49186 C 264.57431,882.12137 283.89934,849.82588 297.60268,828.06329 C 311.30602,806.3007 330.45982,756.63471 330.45982,756.63471 L 569.03125,1018.7776 z"
43920 - id="path2835"
43921 - sodipodi:nodetypes="czzzcczzcc" />
43922 - </clipPath>
43923 - <linearGradient
43924 - inkscape:collect="always"
43925 - xlink:href="#linearGradient2843"
43926 - id="linearGradient2841"
43927 - gradientUnits="userSpaceOnUse"
43928 - x1="347.89655"
43929 - y1="1070.2124"
43930 - x2="275.58191"
43931 - y2="867.97992" />
43932 - <linearGradient
43933 - inkscape:collect="always"
43934 - xlink:href="#linearGradient3627"
43935 - id="linearGradient3688"
43936 - gradientUnits="userSpaceOnUse"
43937 - x1="699.32867"
43938 - y1="269.76755"
43939 - x2="698.97504"
43940 - y2="346.1351" />
43941 - <mask
43942 - maskUnits="userSpaceOnUse"
43943 - id="mask3684">
43944 - <path
43945 - sodipodi:type="arc"
43946 - style="opacity:1;fill:url(#linearGradient3688);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.43724918px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
43947 - id="path3686"
43948 - sodipodi:cx="579.474"
43949 - sodipodi:cy="260.57516"
43950 - sodipodi:rx="192.6866"
43951 - sodipodi:ry="164.04877"
43952 - d="M 772.1606,260.57516 A 192.6866,164.04877 0 1 1 386.7874,260.57516 A 192.6866,164.04877 0 1 1 772.1606,260.57516 z"
43953 - transform="translate(-174.03125,62.156036)" />
43954 - </mask>
43955 - <clipPath
43956 - clipPathUnits="userSpaceOnUse"
43957 - id="clipPath3622">
43958 - <path
43959 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
43960 - d="M 266.27183,924.57186 C 264.86456,943.37307 265.12693,957.32289 268.35357,973.87514 C 271.58022,990.42748 284.75965,1019.7825 288.68797,1037.0589 C 292.61419,1054.326 291.3821,1075.3685 276.22853,1088.2071 C 260.91092,1101.1845 234.17726,1109.806 208.39623,1103.9409 C 182.61517,1098.0756 138.84716,1054.7175 119.80604,1033.7126 C 100.6939,1012.6293 56.045183,939.86194 41.867508,909.43681 C 27.689836,879.01169 29.207903,872.71824 33.747793,863.90708 C 24.381071,839.38658 21.334081,813.84027 0.035335518,788.33044 C 30.360815,791.44488 43.915625,815.28677 60.161025,835.47019 C 54.631129,787.39416 42.10631,771.05369 31.787073,744.74589 C 61.781368,750.82755 82.366433,776.61829 95.766856,817.45839 C 105.32101,813.54048 114.00462,808.08545 125.95427,808.39719 C 114.65677,766.70139 108.00481,738.48135 89.267015,707.32725 C 142.70898,712.99758 172.92404,787.96657 168.23844,795.28805 C 178.21641,793.04406 187.24409,788.75767 198.67497,789.63638 C 187.42601,751.28936 177.62716,712.76848 195.01526,670.9882 C 195.01526,670.9882 243.30204,736.42507 249.40492,756.79397 C 255.50779,777.16288 250.92373,795.49449 250.92373,795.49449 C 250.92373,795.49449 267.8833,826.57978 271.21765,846.58862 C 274.59075,866.82997 267.68496,905.69194 266.27183,924.57186 z"
43961 - id="path3624"
43962 - sodipodi:nodetypes="czzzzzzcccccccccczczz" />
43963 - </clipPath>
43964 - <clipPath
43965 - clipPathUnits="userSpaceOnUse"
43966 - id="clipPath3636">
43967 - <path
43968 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
43969 - d="M 760.16396,935.83377 C 766.95806,954.73656 770.65765,969.13346 772.05426,987.04566 C 773.45088,1004.958 768.27158,1038.8465 769.1538,1057.7018 C 770.03555,1076.547 777.28749,1097.8008 796.49843,1106.6707 C 815.9173,1115.6365 845.81767,1116.882 870.61827,1103.5251 C 895.41887,1090.1681 928.01929,1033.1996 941.59253,1006.2164 C 955.21638,979.13246 980.3536,891.71903 986.25333,856.44781 C 992.15306,821.1766 988.80387,815.14704 981.63585,807.39232 C 984.27615,779.55217 980.13613,752.45689 994.74554,720.20614 C 964.49653,732.03184 957.36325,760.36684 946.42665,785.71122 C 938.42574,734.77829 946.63581,714.43803 949.74554,684.49186 C 920.68078,699.26977 906.88403,731.60588 904.74554,777.349 C 893.82159,776.0448 883.3541,772.91477 871.17411,776.63471 C 870.91007,730.61137 869.71055,699.7453 880.08474,662.42822 C 826.82927,683.45508 817.13746,769.02232 824.03125,775.20614 C 813.14843,775.74114 802.66017,773.90884 791.17411,778.06329 C 791.81303,735.49194 790.91365,693.15468 761.17411,655.20614 C 761.17411,655.20614 730.21605,736.12848 729.74554,758.77757 C 729.27503,781.42666 739.19713,798.94345 739.19713,798.94345 C 739.19713,798.94345 730.62906,835.68396 732.89854,857.17568 C 735.19439,878.91714 753.34144,916.85185 760.16396,935.83377 z"
43970 - id="path3638"
43971 - sodipodi:nodetypes="czzzzzzcccccccccczczz" />
43972 - </clipPath>
43973 - <linearGradient
43974 - inkscape:collect="always"
43975 - xlink:href="#linearGradient3660"
43976 - id="linearGradient3666"
43977 - x1="1255.7386"
43978 - y1="667.09216"
43979 - x2="893.69995"
43980 - y2="858.01099"
43981 - gradientUnits="userSpaceOnUse" />
43982 - <filter
43983 - inkscape:collect="always"
43984 - id="filter3779"
43985 - x="-0.087980822"
43986 - width="1.1759616"
43987 - y="-0.17728332"
43988 - height="1.3545666">
43989 - <feGaussianBlur
43990 - inkscape:collect="always"
43991 - stdDeviation="16.340344"
43992 - id="feGaussianBlur3781" />
43993 - </filter>
43994 - <filter
43995 - id="filter3785"
43996 - inkscape:label="White Fur">
43997 - <feTurbulence
43998 - id="feTurbulence3787"
43999 - in="SourceAlpha"
44000 - type="fractalNoise"
44001 - baseFrequency="0.24044943820224721"
44002 - numOctaves="10"
44003 - seed="655"
44004 - result="result0" />
44005 - <feDisplacementMap
44006 - id="feDisplacementMap3789"
44007 - in="SourceGraphic"
44008 - in2="result0"
44009 - scale="62"
44010 - xChannelSelector="B"
44011 - yChannelSelector="G" />
44012 - </filter>
44013 - <filter
44014 - inkscape:collect="always"
44015 - id="filter3677">
44016 - <feGaussianBlur
44017 - inkscape:collect="always"
44018 - stdDeviation="2.0397518"
44019 - id="feGaussianBlur3679" />
44020 - </filter>
44021 - <clipPath
44022 - clipPathUnits="userSpaceOnUse"
44023 - id="clipPath3722">
44024 - <path
44025 - style="opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44026 - d="M 709.28572,844.50504 C 763.57143,843.07647 835.32072,829.45305 879.28572,817.71932 C 923.33843,805.96218 1005.172,781.37208 1054.6428,759.86218 C 1103.9821,738.40946 1168.2465,700.58058 1208.9286,667.71933 C 1249.4367,634.99864 1261.3185,611.89952 1269.6429,634.1479 C 1278.012,656.51569 1253.2359,690.47352 1231.7857,715.21933 C 1210.1816,740.14273 1179.0544,767.92466 1132.8571,804.50504 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 C 862.93394,960.20183 791.79666,991.31489 747.85714,1005.5765 C 703.91762,1019.8381 616.42857,1036.6479 616.42857,1036.6479 L 709.28572,844.50504 z"
44027 - id="path3724"
44028 - sodipodi:nodetypes="czzzzzzzzcc" />
44029 - </clipPath>
44030 - <clipPath
44031 - clipPathUnits="userSpaceOnUse"
44032 - id="clipPath3986">
44033 - <path
44034 - style="opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44035 - d="M 709.28572,844.50504 C 763.57143,843.07647 835.32072,829.45305 879.28572,817.71932 C 923.33843,805.96218 1005.172,781.37208 1054.6428,759.86218 C 1103.9821,738.40946 1168.2465,700.58058 1208.9286,667.71933 C 1249.4367,634.99864 1261.3185,611.89952 1269.6429,634.1479 C 1278.012,656.51569 1253.2359,690.47352 1231.7857,715.21933 C 1210.1816,740.14273 1179.0544,767.92466 1132.8571,804.50504 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 C 862.93394,960.20183 791.79666,991.31489 747.85714,1005.5765 C 703.91762,1019.8381 616.42857,1036.6479 616.42857,1036.6479 L 709.28572,844.50504 z"
44036 - id="path3988"
44037 - sodipodi:nodetypes="czzzzzzzzcc" />
44038 - </clipPath>
44039 - <clipPath
44040 - clipPathUnits="userSpaceOnUse"
44041 - id="clipPath3992">
44042 - <path
44043 - style="opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44044 - d="M 709.28572,844.50504 C 763.57143,843.07647 835.32072,829.45305 879.28572,817.71932 C 923.33843,805.96218 1005.172,781.37208 1054.6428,759.86218 C 1103.9821,738.40946 1168.2465,700.58058 1208.9286,667.71933 C 1249.4367,634.99864 1261.3185,611.89952 1269.6429,634.1479 C 1278.012,656.51569 1253.2359,690.47352 1231.7857,715.21933 C 1210.1816,740.14273 1179.0544,767.92466 1132.8571,804.50504 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 C 862.93394,960.20183 791.79666,991.31489 747.85714,1005.5765 C 703.91762,1019.8381 616.42857,1036.6479 616.42857,1036.6479 L 709.28572,844.50504 z"
44045 - id="path3994"
44046 - sodipodi:nodetypes="czzzzzzzzcc" />
44047 - </clipPath>
44048 - <clipPath
44049 - clipPathUnits="userSpaceOnUse"
44050 - id="clipPath3998">
44051 - <path
44052 - style="opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44053 - d="M 178.21428,274.14789 C 174.40985,248.88366 161.40456,223.50987 161.05748,198.62266 C 160.87122,185.26714 164.33033,172.05175 174.81301,159.06861 C 211.16003,93.772775 291.75392,74.373925 360.74767,67.603183 C 447.67006,56.586382 545.66034,85.543255 594.11901,163.00447 C 648.24303,238.73777 650.79377,335.54359 674.73105,422.53242 C 704.16884,549.66002 729.51019,678.74656 735.12329,809.38277 C 732.05981,887.56462 726.69695,974.56692 674.62008,1037.5169 C 626.59354,1087.8743 551.83361,1087.5699 487.5502,1096.5192 C 396.99481,1101.1742 303.19867,1080.3734 225.7663,1032.321 C 160.99066,994.38099 130.03611,918.84237 128.4869,846.30142 C 120.09773,766.42626 154.87842,692.49291 180.1073,619.14181 C 187.57791,536.38074 189.52016,452.89406 189.76064,369.75697 C 188.92382,337.56153 182.67111,305.93964 178.21428,274.14789 z"
44054 - id="path4000"
44055 - sodipodi:nodetypes="cscccccccccccc" />
44056 - </clipPath>
44057 - <filter
44058 - inkscape:collect="always"
44059 - id="filter4002"
44060 - x="-0.24334238"
44061 - width="1.4866848"
44062 - y="-0.39104807"
44063 - height="1.7820961">
44064 - <feGaussianBlur
44065 - inkscape:collect="always"
44066 - stdDeviation="14.589518"
44067 - id="feGaussianBlur4004" />
44068 - </filter>
44069 - <filter
44070 - inkscape:collect="always"
44071 - id="filter4010"
44072 - x="-0.14577261"
44073 - width="1.2915452"
44074 - y="-0.23523259"
44075 - height="1.4704652">
44076 - <feGaussianBlur
44077 - inkscape:collect="always"
44078 - stdDeviation="4.4442907"
44079 - id="feGaussianBlur4012" />
44080 - </filter>
44081 - <filter
44082 - inkscape:collect="always"
44083 - id="filter4053">
44084 - <feGaussianBlur
44085 - inkscape:collect="always"
44086 - stdDeviation="0.6062947"
44087 - id="feGaussianBlur4055" />
44088 - </filter>
44089 - <filter
44090 - inkscape:collect="always"
44091 - id="filter4079">
44092 - <feGaussianBlur
44093 - inkscape:collect="always"
44094 - stdDeviation="6.5887624"
44095 - id="feGaussianBlur4081" />
44096 - </filter>
44097 - <filter
44098 - inkscape:collect="always"
44099 - id="filter4083">
44100 - <feGaussianBlur
44101 - inkscape:collect="always"
44102 - stdDeviation="1.5052066"
44103 - id="feGaussianBlur4085" />
44104 - </filter>
44105 - <radialGradient
44106 - inkscape:collect="always"
44107 - xlink:href="#linearGradient4113"
44108 - id="radialGradient4119"
44109 - cx="296.33783"
44110 - cy="427.17749"
44111 - fx="296.33783"
44112 - fy="427.17749"
44113 - r="19.704132"
44114 - gradientUnits="userSpaceOnUse"
44115 - gradientTransform="matrix(2.9797125,0,0,2.9797125,-599.28727,-827.0855)" />
44116 - <filter
44117 - inkscape:collect="always"
44118 - id="filter6949"
44119 - x="-0.10294895"
44120 - width="1.2058979"
44121 - y="-0.34224695"
44122 - height="1.6844939">
44123 - <feGaussianBlur
44124 - inkscape:collect="always"
44125 - stdDeviation="1.1675612"
44126 - id="feGaussianBlur6951" />
44127 - </filter>
44128 - <filter
44129 - inkscape:collect="always"
44130 - id="filter6953"
44131 - x="-0.098320946"
44132 - width="1.1966419"
44133 - y="-0.19750816"
44134 - height="1.3950163">
44135 - <feGaussianBlur
44136 - inkscape:collect="always"
44137 - stdDeviation="1.1675612"
44138 - id="feGaussianBlur6955" />
44139 - </filter>
44140 - <filter
44141 - inkscape:collect="always"
44142 - id="filter6957"
44143 - x="-0.098213427"
44144 - width="1.1964267"
44145 - y="-0.19838208"
44146 - height="1.3967642">
44147 - <feGaussianBlur
44148 - inkscape:collect="always"
44149 - stdDeviation="1.1675612"
44150 - id="feGaussianBlur6959" />
44151 - </filter>
44152 - <filter
44153 - inkscape:collect="always"
44154 - id="filter6961"
44155 - x="-0.09919104"
44156 - width="1.1983821"
44157 - y="-0.22643611"
44158 - height="1.4528722">
44159 - <feGaussianBlur
44160 - inkscape:collect="always"
44161 - stdDeviation="1.1675612"
44162 - id="feGaussianBlur6963" />
44163 - </filter>
44164 - <filter
44165 - inkscape:collect="always"
44166 - id="filter6965"
44167 - x="-0.099081434"
44168 - width="1.1981629"
44169 - y="-0.22529824"
44170 - height="1.4505965">
44171 - <feGaussianBlur
44172 - inkscape:collect="always"
44173 - stdDeviation="1.1675612"
44174 - id="feGaussianBlur6967" />
44175 - </filter>
44176 - <filter
44177 - inkscape:collect="always"
44178 - id="filter6969"
44179 - x="-0.10450897"
44180 - width="1.2090179"
44181 - y="-0.40468886"
44182 - height="1.8093777">
44183 - <feGaussianBlur
44184 - inkscape:collect="always"
44185 - stdDeviation="1.1675612"
44186 - id="feGaussianBlur6971" />
44187 - </filter>
44188 - <filter
44189 - inkscape:collect="always"
44190 - id="filter6973"
44191 - x="-0.10330495"
44192 - width="1.2066098"
44193 - y="-0.36439717"
44194 - height="1.7287945">
44195 - <feGaussianBlur
44196 - inkscape:collect="always"
44197 - stdDeviation="1.1675612"
44198 - id="feGaussianBlur6975" />
44199 - </filter>
44200 - <filter
44201 - inkscape:collect="always"
44202 - id="filter6977"
44203 - x="-0.10224481"
44204 - width="1.2044896"
44205 - y="-0.32371372"
44206 - height="1.6474274">
44207 - <feGaussianBlur
44208 - inkscape:collect="always"
44209 - stdDeviation="1.1675612"
44210 - id="feGaussianBlur6979" />
44211 - </filter>
44212 - <filter
44213 - inkscape:collect="always"
44214 - id="filter6981"
44215 - x="-0.10052545"
44216 - width="1.2010509"
44217 - y="-0.2742162"
44218 - height="1.5484324">
44219 - <feGaussianBlur
44220 - inkscape:collect="always"
44221 - stdDeviation="1.1675612"
44222 - id="feGaussianBlur6983" />
44223 - </filter>
44224 - <filter
44225 - inkscape:collect="always"
44226 - id="filter6985"
44227 - x="-0.098428868"
44228 - width="1.1968577"
44229 - y="-0.20853186"
44230 - height="1.4170637">
44231 - <feGaussianBlur
44232 - inkscape:collect="always"
44233 - stdDeviation="1.1675612"
44234 - id="feGaussianBlur6987" />
44235 - </filter>
44236 - <filter
44237 - inkscape:collect="always"
44238 - id="filter6989"
44239 - x="-0.098428868"
44240 - width="1.1968577"
44241 - y="-0.20287035"
44242 - height="1.4057407">
44243 - <feGaussianBlur
44244 - inkscape:collect="always"
44245 - stdDeviation="1.1675612"
44246 - id="feGaussianBlur6991" />
44247 - </filter>
44248 - <filter
44249 - inkscape:collect="always"
44250 - id="filter6993"
44251 - x="-0.098213255"
44252 - width="1.1964265"
44253 - y="-0.19838208"
44254 - height="1.3967642">
44255 - <feGaussianBlur
44256 - inkscape:collect="always"
44257 - stdDeviation="1.1675612"
44258 - id="feGaussianBlur6995" />
44259 - </filter>
44260 - <filter
44261 - inkscape:collect="always"
44262 - id="filter6997">
44263 - <feGaussianBlur
44264 - inkscape:collect="always"
44265 - stdDeviation="1.1675612"
44266 - id="feGaussianBlur6999" />
44267 - </filter>
44268 - <filter
44269 - inkscape:collect="always"
44270 - id="filter7001">
44271 - <feGaussianBlur
44272 - inkscape:collect="always"
44273 - stdDeviation="1.1675612"
44274 - id="feGaussianBlur7003" />
44275 - </filter>
44276 - <filter
44277 - inkscape:collect="always"
44278 - id="filter7285"
44279 - x="-0.030884685"
44280 - width="1.0617694"
44281 - y="-0.10267408"
44282 - height="1.2053483">
44283 - <feGaussianBlur
44284 - inkscape:collect="always"
44285 - stdDeviation="0.35026836"
44286 - id="feGaussianBlur7287" />
44287 - </filter>
44288 - <filter
44289 - inkscape:collect="always"
44290 - id="filter7289">
44291 - <feGaussianBlur
44292 - inkscape:collect="always"
44293 - stdDeviation="0.35026836"
44294 - id="feGaussianBlur7291" />
44295 - </filter>
44296 - <filter
44297 - inkscape:collect="always"
44298 - id="filter7293">
44299 - <feGaussianBlur
44300 - inkscape:collect="always"
44301 - stdDeviation="0.35026836"
44302 - id="feGaussianBlur7295" />
44303 - </filter>
44304 - <filter
44305 - inkscape:collect="always"
44306 - id="filter7297">
44307 - <feGaussianBlur
44308 - inkscape:collect="always"
44309 - stdDeviation="0.35026836"
44310 - id="feGaussianBlur7299" />
44311 - </filter>
44312 - <filter
44313 - inkscape:collect="always"
44314 - id="filter7301">
44315 - <feGaussianBlur
44316 - inkscape:collect="always"
44317 - stdDeviation="0.35026836"
44318 - id="feGaussianBlur7303" />
44319 - </filter>
44320 - <filter
44321 - inkscape:collect="always"
44322 - id="filter7305">
44323 - <feGaussianBlur
44324 - inkscape:collect="always"
44325 - stdDeviation="0.35026836"
44326 - id="feGaussianBlur7307" />
44327 - </filter>
44328 - <filter
44329 - inkscape:collect="always"
44330 - id="filter7309">
44331 - <feGaussianBlur
44332 - inkscape:collect="always"
44333 - stdDeviation="0.35026836"
44334 - id="feGaussianBlur7311" />
44335 - </filter>
44336 - <filter
44337 - inkscape:collect="always"
44338 - id="filter7313">
44339 - <feGaussianBlur
44340 - inkscape:collect="always"
44341 - stdDeviation="0.35026836"
44342 - id="feGaussianBlur7315" />
44343 - </filter>
44344 - <filter
44345 - inkscape:collect="always"
44346 - id="filter7317">
44347 - <feGaussianBlur
44348 - inkscape:collect="always"
44349 - stdDeviation="0.35026836"
44350 - id="feGaussianBlur7319" />
44351 - </filter>
44352 - <filter
44353 - inkscape:collect="always"
44354 - id="filter7321">
44355 - <feGaussianBlur
44356 - inkscape:collect="always"
44357 - stdDeviation="0.35026836"
44358 - id="feGaussianBlur7323" />
44359 - </filter>
44360 - <filter
44361 - inkscape:collect="always"
44362 - id="filter7325"
44363 - x="-0.031352691"
44364 - width="1.0627054"
44365 - y="-0.12140666"
44366 - height="1.2428133">
44367 - <feGaussianBlur
44368 - inkscape:collect="always"
44369 - stdDeviation="0.35026836"
44370 - id="feGaussianBlur7327" />
44371 - </filter>
44372 - <filter
44373 - inkscape:collect="always"
44374 - id="filter7329"
44375 - x="-0.030991485"
44376 - width="1.061983"
44377 - y="-0.10931916"
44378 - height="1.2186383">
44379 - <feGaussianBlur
44380 - inkscape:collect="always"
44381 - stdDeviation="0.35026836"
44382 - id="feGaussianBlur7331" />
44383 - </filter>
44384 - <filter
44385 - inkscape:collect="always"
44386 - id="filter7333">
44387 - <feGaussianBlur
44388 - inkscape:collect="always"
44389 - stdDeviation="0.35026836"
44390 - id="feGaussianBlur7335" />
44391 - </filter>
44392 - <filter
44393 - inkscape:collect="always"
44394 - id="filter7337">
44395 - <feGaussianBlur
44396 - inkscape:collect="always"
44397 - stdDeviation="0.35026836"
44398 - id="feGaussianBlur7339" />
44399 - </filter>
44400 - <filter
44401 - inkscape:collect="always"
44402 - id="filter7345">
44403 - <feGaussianBlur
44404 - inkscape:collect="always"
44405 - stdDeviation="1.7233839"
44406 - id="feGaussianBlur7347" />
44407 - </filter>
44408 - <clipPath
44409 - clipPathUnits="userSpaceOnUse"
44410 - id="clipPath7421">
44411 - <path
44412 - sodipodi:type="inkscape:offset"
44413 - inkscape:radius="0"
44414 - inkscape:original="M 1111.4062 -285.9375 L 1107.4688 -284.0625 C 1107.4283 -284.05228 1107.3692 -284.04201 1107.3438 -284.03125 C 1106.925 -283.8184 1107.1791 -283.93067 1106.6875 -283.71875 C 1106.2014 -283.50919 1104.9499 -283.13456 1102.5938 -282.25 C 1099.2626 -280.99942 1096.7895 -280.10016 1095.5938 -279.1875 C 1094.0576 -279.16623 1091.8733 -278.95419 1089.9375 -278.46875 C 1086.956 -277.72108 1085.0823 -277.29474 1083.1875 -276.875 C 1081.2927 -276.45527 1081.512 -276.23281 1080.3125 -276 C 1079.0159 -275.74833 1078.5911 -276.00899 1074.875 -275.21875 C 1071.3851 -274.4766 1065.9802 -273.28768 1064.7188 -272.53125 C 1063.1348 -272.71203 1060.8513 -272.85303 1058.875 -272.5625 C 1055.8346 -272.11554 1053.9588 -271.88974 1052.0312 -271.65625 C 1051.3758 -271.57687 1050.9902 -271.45547 1050.6875 -271.375 C 1050.2613 -271.24334 1050.0017 -271.11498 1049.3125 -271.03125 C 1048.0009 -270.87188 1047.5503 -271.18808 1043.7812 -270.75 C 1040.2273 -270.33691 1034.7758 -269.47718 1033.5312 -268.8125 C 1031.9322 -269.10979 1029.6735 -269.34669 1027.6875 -269.15625 C 1024.6287 -268.86293 1022.7155 -268.67226 1020.7812 -268.5 C 1018.847 -268.32773 1019.0926 -268.07763 1017.875 -267.96875 C 1016.5588 -267.85105 1016.1152 -268.13238 1012.3438 -267.71875 C 1008.8017 -267.3303 1003.3359 -266.50948 1002.0625 -265.84375 C 1000.4636 -266.13844 998.1753 -266.35076 996.1875 -266.15625 C 993.12921 -265.857 991.2463 -265.67601 989.3125 -265.5 C 988.65501 -265.44015 988.27245 -265.32144 987.96875 -265.25 C 987.54105 -265.13104 987.28525 -265.03193 986.59375 -264.96875 C 985.27775 -264.84849 984.834 -265.16363 981.0625 -264.75 C 977.50631 -264.35998 972.0569 -263.51084 970.8125 -262.84375 C 969.21381 -263.13793 966.95265 -263.36747 964.96875 -263.15625 C 961.91305 -262.83092 959.9947 -262.63001 958.0625 -262.4375 C 956.13031 -262.24499 956.37275 -261.99662 955.15625 -261.875 C 953.84137 -261.74353 953.3932 -262.03954 949.625 -261.59375 C 946.08611 -261.17509 940.6473 -260.30158 939.375 -259.625 C 937.77741 -259.90604 935.51505 -260.04543 933.53125 -259.8125 C 930.47927 -259.45413 928.58625 -259.24464 926.65625 -259.03125 C 926.00007 -258.95869 925.6156 -258.85856 925.3125 -258.78125 C 924.88571 -258.65402 924.6276 -258.51405 923.9375 -258.4375 C 922.62411 -258.29181 922.17015 -258.61152 918.40625 -258.125 C 914.85737 -257.66624 909.4276 -256.70598 908.1875 -256 C 906.59441 -256.24424 904.3537 -256.38135 902.375 -256.125 C 899.32741 -255.73018 897.4243 -255.47655 895.5 -255.21875 C 893.57571 -254.96096 893.7739 -254.72522 892.5625 -254.5625 C 891.25301 -254.3866 890.8153 -254.66688 887.0625 -254.09375 C 883.53821 -253.55551 878.1393 -252.39458 876.875 -251.65625 C 875.28751 -251.85979 873.0295 -251.91098 871.0625 -251.5625 C 868.03631 -251.02638 866.1636 -250.70081 864.25 -250.375 C 863.59941 -250.26423 863.2363 -250.10406 862.9375 -250 C 862.51681 -249.83512 862.27405 -249.6687 861.59375 -249.53125 C 860.29905 -249.26966 859.86665 -249.53745 856.15625 -248.71875 C 852.65777 -247.9468 847.31035 -246.33582 846.09375 -245.5 C 844.53085 -245.57745 842.33625 -245.41472 840.40625 -244.90625 C 837.43387 -244.12312 835.58855 -243.67416 833.71875 -243.15625 C 831.84875 -242.63835 832.0521 -242.38897 830.875 -242.0625 C 829.60251 -241.7096 829.17795 -241.95541 825.53125 -240.875 C 822.10657 -239.86037 816.88185 -237.94183 815.65625 -237.03125 C 814.11747 -237.01851 811.93645 -236.75903 810.03125 -236.15625 C 807.10027 -235.22891 805.2809 -234.69783 803.4375 -234.09375 C 802.81071 -233.88837 802.44585 -233.70117 802.15625 -233.5625 C 801.74867 -233.34889 801.50295 -233.15375 800.84375 -232.9375 C 799.58925 -232.52596 799.1576 -232.74846 795.5625 -231.5 C 792.17261 -230.32283 786.96755 -228.2863 785.78125 -227.34375 C 784.25737 -227.28408 782.1312 -226.94888 780.25 -226.28125 C 777.35261 -225.25296 775.55095 -224.60577 773.71875 -223.96875 C 771.88655 -223.33174 772.0909 -223.12021 770.9375 -222.71875 C 769.69071 -222.28479 769.27395 -222.51903 765.71875 -221.15625 C 762.38005 -219.87645 757.23165 -217.6737 756.03125 -216.6875 C 754.52407 -216.57981 752.39555 -216.1887 750.53125 -215.46875 C 747.66307 -214.36115 745.90735 -213.68719 744.09375 -213 C 743.47705 -212.76637 743.0973 -212.55797 742.8125 -212.40625 C 742.81251 -212.40625 742.8125 -212.37673 742.8125 -212.375 L 734.8125 -209.1875 L 736.625 -194.46875 C 736.36701 -194.52956 742.8125 -191.15625 742.8125 -191.15625 C 743.03891 -191.30093 743.26145 -191.42886 743.53125 -191.53125 C 744.61177 -191.94123 745.70285 -191.74702 749.53125 -193.21875 C 753.35977 -194.69049 754.7553 -195.22373 755.4375 -195.625 C 756.11711 -196.02478 757.04925 -196.50437 757.65625 -197.15625 C 759.48317 -197.294 761.22705 -197.64948 762.59375 -198.15625 C 765.56175 -199.25677 767.4691 -199.96244 769.375 -200.625 C 771.28081 -201.28754 771.72915 -202.03987 772.78125 -202.40625 C 773.87287 -202.78636 774.97635 -202.57163 778.84375 -203.9375 C 782.71115 -205.30336 784.1269 -205.76458 784.8125 -206.15625 C 785.51361 -206.55677 786.5133 -207.08923 787.125 -207.75 C 789.09581 -207.80466 790.94195 -208.13463 792.40625 -208.625 C 795.40777 -209.63008 797.3324 -210.24671 799.25 -210.875 C 800.78861 -211.3791 801.42415 -211.92177 802.15625 -212.3125 C 802.38647 -212.44681 802.63215 -212.56623 802.90625 -212.65625 C 804.00457 -213.01673 805.0877 -212.73762 809 -213.96875 C 812.91231 -215.19988 814.366 -215.6417 815.0625 -216 C 815.75641 -216.35697 816.6926 -216.79261 817.3125 -217.40625 C 819.17771 -217.42891 820.94835 -217.67308 822.34375 -218.09375 C 825.37415 -219.00729 827.33615 -219.52385 829.28125 -220.0625 C 831.22637 -220.60114 831.70745 -221.32702 832.78125 -221.625 C 833.89527 -221.93415 835.00125 -221.61761 838.96875 -222.65625 C 842.93625 -223.69488 844.38625 -224.08898 845.09375 -224.40625 C 845.82855 -224.73584 846.90765 -225.15997 847.53125 -225.78125 C 849.52907 -225.66525 851.3887 -225.80134 852.875 -226.15625 C 855.95311 -226.89125 857.9584 -227.25719 859.9375 -227.65625 C 861.52541 -227.97643 862.1818 -228.4468 862.9375 -228.75 C 863.17501 -228.8568 863.4044 -228.94276 863.6875 -229 C 864.82091 -229.22919 865.99215 -228.79107 870.03125 -229.5 C 874.07067 -230.20893 875.5315 -230.42709 876.25 -230.6875 C 876.96581 -230.94694 877.95435 -231.25474 878.59375 -231.78125 C 880.51795 -231.54176 882.34165 -231.55672 883.78125 -231.78125 C 886.90767 -232.26887 888.9358 -232.48192 890.9375 -232.75 C 892.93921 -233.01807 893.42625 -233.69514 894.53125 -233.84375 C 895.67767 -233.99793 896.8071 -233.54218 900.875 -234.0625 C 904.94281 -234.58282 906.43525 -234.75823 907.15625 -235 C 907.89337 -235.24714 908.95435 -235.58623 909.59375 -236.125 C 911.64375 -235.78947 913.56745 -235.72704 915.09375 -235.90625 C 918.23595 -236.27521 920.27375 -236.46561 922.28125 -236.6875 C 923.89207 -236.86552 924.5459 -237.2957 925.3125 -237.53125 C 925.55341 -237.61677 925.80655 -237.68685 926.09375 -237.71875 C 927.24345 -237.84647 928.39505 -237.3721 932.46875 -237.84375 C 936.54245 -238.3154 938.0278 -238.45435 938.75 -238.6875 C 939.46941 -238.91977 940.45025 -239.16096 941.09375 -239.65625 C 943.03005 -239.32279 944.8638 -239.25201 946.3125 -239.40625 C 949.45851 -239.7412 951.49 -239.92484 953.5 -240.125 C 955.50991 -240.32514 955.98415 -240.95139 957.09375 -241.0625 C 958.24485 -241.17778 959.39025 -240.69744 963.46875 -241.125 C 967.54725 -241.55256 969.05765 -241.68709 969.78125 -241.90625 C 970.52047 -242.13011 971.57685 -242.4195 972.21875 -242.9375 C 974.27575 -242.53883 976.2206 -242.4441 977.75 -242.59375 C 980.89871 -242.90185 982.9258 -243.067 984.9375 -243.25 C 986.55151 -243.39682 987.20055 -243.81055 987.96875 -244.03125 C 988.21005 -244.11211 988.4623 -244.16116 988.75 -244.1875 C 989.90211 -244.29295 991.0429 -243.79475 995.125 -244.1875 C 999.20711 -244.58025 1000.7139 -244.71834 1001.4375 -244.9375 C 1002.1584 -245.15583 1003.1371 -245.3852 1003.7812 -245.875 C 1005.7193 -245.52501 1007.5501 -245.42062 1009 -245.5625 C 1012.1487 -245.8706 1014.1758 -246.03575 1016.1875 -246.21875 C 1018.1991 -246.40174 1018.7017 -247.05677 1019.8125 -247.15625 C 1020.9648 -247.25948 1022.1047 -246.77142 1026.1875 -247.15625 C 1030.2704 -247.54107 1031.7762 -247.65725 1032.5 -247.875 C 1033.2393 -248.09743 1034.2956 -248.38949 1034.9375 -248.90625 C 1036.9949 -248.50448 1038.9404 -248.40292 1040.4688 -248.5625 C 1043.6153 -248.89102 1045.6458 -249.0852 1047.6562 -249.28125 C 1049.2692 -249.43854 1049.9219 -249.91273 1050.6875 -250.15625 C 1050.9282 -250.24429 1051.1507 -250.27762 1051.4375 -250.3125 C 1052.5858 -250.4522 1053.7542 -249.97259 1057.8125 -250.5625 C 1061.8708 -251.15242 1063.3743 -251.33964 1064.0938 -251.59375 C 1064.8104 -251.84691 1065.7684 -252.15182 1066.4062 -252.6875 C 1068.3259 -252.47556 1070.1262 -252.53609 1071.5625 -252.78125 C 1074.6816 -253.31365 1076.6741 -253.70986 1078.6562 -254.09375 C 1080.6383 -254.47762 1081.1305 -255.1334 1082.2188 -255.375 C 1083.3475 -255.62566 1084.489 -255.25871 1088.4688 -256.25 C 1092.4483 -257.24127 1093.8983 -257.6693 1094.5938 -258.03125 C 1095.316 -258.40725 1096.3555 -258.90183 1096.9688 -259.5625 C 1098.9317 -259.57454 1100.7625 -259.85355 1102.1875 -260.40625 C 1105.1387 -261.55085 1107.0607 -262.27567 1108.875 -263.15625 C 1110.3307 -263.86277 1111.1941 -264.85828 1111.4062 -265.15625 C 1111.6185 -265.4542 1111.5051 -265.8848 1111.5312 -265.90625 C 1111.5742 -265.94148 1111.8716 -266.00028 1112.0312 -266.34375 C 1112.8902 -268.19082 1114.3544 -271.97139 1114.4688 -272.65625 C 1114.5825 -273.33839 1114.6368 -274.00902 1114.6875 -274.40625 C 1114.7169 -274.63575 1114.5404 -275.28515 1114.5625 -275.34375 C 1114.5934 -275.42579 1114.8508 -275.59432 1114.9062 -275.84375 C 1115.1725 -277.04206 1114.9953 -278.05111 1114.7812 -279.46875 C 1114.5673 -280.88638 1113.8096 -284.08338 1113.1562 -284.9375 C 1112.4973 -285.79922 1111.9314 -285.94801 1111.4062 -285.9375 z "
44415 - style="fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44416 - id="path7423"
44417 - d="M 1111.4062,-285.9375 L 1107.4688,-284.0625 C 1107.4283,-284.05228 1107.3692,-284.04201 1107.3438,-284.03125 C 1106.925,-283.8184 1107.1791,-283.93067 1106.6875,-283.71875 C 1106.2014,-283.50919 1104.9499,-283.13456 1102.5938,-282.25 C 1099.2626,-280.99942 1096.7895,-280.10016 1095.5938,-279.1875 C 1094.0576,-279.16623 1091.8733,-278.95419 1089.9375,-278.46875 C 1086.956,-277.72108 1085.0823,-277.29474 1083.1875,-276.875 C 1081.2927,-276.45527 1081.512,-276.23281 1080.3125,-276 C 1079.0159,-275.74833 1078.5911,-276.00899 1074.875,-275.21875 C 1071.3851,-274.4766 1065.9802,-273.28768 1064.7188,-272.53125 C 1063.1348,-272.71203 1060.8513,-272.85303 1058.875,-272.5625 C 1055.8346,-272.11554 1053.9588,-271.88974 1052.0312,-271.65625 C 1051.3758,-271.57687 1050.9902,-271.45547 1050.6875,-271.375 C 1050.2613,-271.24334 1050.0017,-271.11498 1049.3125,-271.03125 C 1048.0009,-270.87188 1047.5503,-271.18808 1043.7812,-270.75 C 1040.2273,-270.33691 1034.7758,-269.47718 1033.5312,-268.8125 C 1031.9322,-269.10979 1029.6735,-269.34669 1027.6875,-269.15625 C 1024.6287,-268.86293 1022.7155,-268.67226 1020.7812,-268.5 C 1018.847,-268.32773 1019.0926,-268.07763 1017.875,-267.96875 C 1016.5588,-267.85105 1016.1152,-268.13238 1012.3438,-267.71875 C 1008.8017,-267.3303 1003.3359,-266.50948 1002.0625,-265.84375 C 1000.4636,-266.13844 998.1753,-266.35076 996.1875,-266.15625 C 993.12921,-265.857 991.2463,-265.67601 989.3125,-265.5 C 988.65501,-265.44015 988.27245,-265.32144 987.96875,-265.25 C 987.54105,-265.13104 987.28525,-265.03193 986.59375,-264.96875 C 985.27775,-264.84849 984.834,-265.16363 981.0625,-264.75 C 977.50631,-264.35998 972.0569,-263.51084 970.8125,-262.84375 C 969.21381,-263.13793 966.95265,-263.36747 964.96875,-263.15625 C 961.91305,-262.83092 959.9947,-262.63001 958.0625,-262.4375 C 956.13031,-262.24499 956.37275,-261.99662 955.15625,-261.875 C 953.84137,-261.74353 953.3932,-262.03954 949.625,-261.59375 C 946.08611,-261.17509 940.6473,-260.30158 939.375,-259.625 C 937.77741,-259.90604 935.51505,-260.04543 933.53125,-259.8125 C 930.47927,-259.45413 928.58625,-259.24464 926.65625,-259.03125 C 926.00007,-258.95869 925.6156,-258.85856 925.3125,-258.78125 C 924.88571,-258.65402 924.6276,-258.51405 923.9375,-258.4375 C 922.62411,-258.29181 922.17015,-258.61152 918.40625,-258.125 C 914.85737,-257.66624 909.4276,-256.70598 908.1875,-256 C 906.59441,-256.24424 904.3537,-256.38135 902.375,-256.125 C 899.32741,-255.73018 897.4243,-255.47655 895.5,-255.21875 C 893.57571,-254.96096 893.7739,-254.72522 892.5625,-254.5625 C 891.25301,-254.3866 890.8153,-254.66688 887.0625,-254.09375 C 883.53821,-253.55551 878.1393,-252.39458 876.875,-251.65625 C 875.28751,-251.85979 873.0295,-251.91098 871.0625,-251.5625 C 868.03631,-251.02638 866.1636,-250.70081 864.25,-250.375 C 863.59941,-250.26423 863.2363,-250.10406 862.9375,-250 C 862.51681,-249.83512 862.27405,-249.6687 861.59375,-249.53125 C 860.29905,-249.26966 859.86665,-249.53745 856.15625,-248.71875 C 852.65777,-247.9468 847.31035,-246.33582 846.09375,-245.5 C 844.53085,-245.57745 842.33625,-245.41472 840.40625,-244.90625 C 837.43387,-244.12312 835.58855,-243.67416 833.71875,-243.15625 C 831.84875,-242.63835 832.0521,-242.38897 830.875,-242.0625 C 829.60251,-241.7096 829.17795,-241.95541 825.53125,-240.875 C 822.10657,-239.86037 816.88185,-237.94183 815.65625,-237.03125 C 814.11747,-237.01851 811.93645,-236.75903 810.03125,-236.15625 C 807.10027,-235.22891 805.2809,-234.69783 803.4375,-234.09375 C 802.81071,-233.88837 802.44585,-233.70117 802.15625,-233.5625 C 801.74867,-233.34889 801.50295,-233.15375 800.84375,-232.9375 C 799.58925,-232.52596 799.1576,-232.74846 795.5625,-231.5 C 792.17261,-230.32283 786.96755,-228.2863 785.78125,-227.34375 C 784.25737,-227.28408 782.1312,-226.94888 780.25,-226.28125 C 777.35261,-225.25296 775.55095,-224.60577 773.71875,-223.96875 C 771.88655,-223.33174 772.0909,-223.12021 770.9375,-222.71875 C 769.69071,-222.28479 769.27395,-222.51903 765.71875,-221.15625 C 762.38005,-219.87645 757.23165,-217.6737 756.03125,-216.6875 C 754.52407,-216.57981 752.39555,-216.1887 750.53125,-215.46875 C 747.66307,-214.36115 745.90735,-213.68719 744.09375,-213 C 743.47705,-212.76637 743.0973,-212.55797 742.8125,-212.40625 C 742.81251,-212.40625 742.8125,-212.37673 742.8125,-212.375 L 734.8125,-209.1875 L 736.625,-194.46875 C 736.36701,-194.52956 742.8125,-191.15625 742.8125,-191.15625 C 743.03891,-191.30093 743.26145,-191.42886 743.53125,-191.53125 C 744.61177,-191.94123 745.70285,-191.74702 749.53125,-193.21875 C 753.35977,-194.69049 754.7553,-195.22373 755.4375,-195.625 C 756.11711,-196.02478 757.04925,-196.50437 757.65625,-197.15625 C 759.48317,-197.294 761.22705,-197.64948 762.59375,-198.15625 C 765.56175,-199.25677 767.4691,-199.96244 769.375,-200.625 C 771.28081,-201.28754 771.72915,-202.03987 772.78125,-202.40625 C 773.87287,-202.78636 774.97635,-202.57163 778.84375,-203.9375 C 782.71115,-205.30336 784.1269,-205.76458 784.8125,-206.15625 C 785.51361,-206.55677 786.5133,-207.08923 787.125,-207.75 C 789.09581,-207.80466 790.94195,-208.13463 792.40625,-208.625 C 795.40777,-209.63008 797.3324,-210.24671 799.25,-210.875 C 800.78861,-211.3791 801.42415,-211.92177 802.15625,-212.3125 C 802.38647,-212.44681 802.63215,-212.56623 802.90625,-212.65625 C 804.00457,-213.01673 805.0877,-212.73762 809,-213.96875 C 812.91231,-215.19988 814.366,-215.6417 815.0625,-216 C 815.75641,-216.35697 816.6926,-216.79261 817.3125,-217.40625 C 819.17771,-217.42891 820.94835,-217.67308 822.34375,-218.09375 C 825.37415,-219.00729 827.33615,-219.52385 829.28125,-220.0625 C 831.22637,-220.60114 831.70745,-221.32702 832.78125,-221.625 C 833.89527,-221.93415 835.00125,-221.61761 838.96875,-222.65625 C 842.93625,-223.69488 844.38625,-224.08898 845.09375,-224.40625 C 845.82855,-224.73584 846.90765,-225.15997 847.53125,-225.78125 C 849.52907,-225.66525 851.3887,-225.80134 852.875,-226.15625 C 855.95311,-226.89125 857.9584,-227.25719 859.9375,-227.65625 C 861.52541,-227.97643 862.1818,-228.4468 862.9375,-228.75 C 863.17501,-228.8568 863.4044,-228.94276 863.6875,-229 C 864.82091,-229.22919 865.99215,-228.79107 870.03125,-229.5 C 874.07067,-230.20893 875.5315,-230.42709 876.25,-230.6875 C 876.96581,-230.94694 877.95435,-231.25474 878.59375,-231.78125 C 880.51795,-231.54176 882.34165,-231.55672 883.78125,-231.78125 C 886.90767,-232.26887 888.9358,-232.48192 890.9375,-232.75 C 892.93921,-233.01807 893.42625,-233.69514 894.53125,-233.84375 C 895.67767,-233.99793 896.8071,-233.54218 900.875,-234.0625 C 904.94281,-234.58282 906.43525,-234.75823 907.15625,-235 C 907.89337,-235.24714 908.95435,-235.58623 909.59375,-236.125 C 911.64375,-235.78947 913.56745,-235.72704 915.09375,-235.90625 C 918.23595,-236.27521 920.27375,-236.46561 922.28125,-236.6875 C 923.89207,-236.86552 924.5459,-237.2957 925.3125,-237.53125 C 925.55341,-237.61677 925.80655,-237.68685 926.09375,-237.71875 C 927.24345,-237.84647 928.39505,-237.3721 932.46875,-237.84375 C 936.54245,-238.3154 938.0278,-238.45435 938.75,-238.6875 C 939.46941,-238.91977 940.45025,-239.16096 941.09375,-239.65625 C 943.03005,-239.32279 944.8638,-239.25201 946.3125,-239.40625 C 949.45851,-239.7412 951.49,-239.92484 953.5,-240.125 C 955.50991,-240.32514 955.98415,-240.95139 957.09375,-241.0625 C 958.24485,-241.17778 959.39025,-240.69744 963.46875,-241.125 C 967.54725,-241.55256 969.05765,-241.68709 969.78125,-241.90625 C 970.52047,-242.13011 971.57685,-242.4195 972.21875,-242.9375 C 974.27575,-242.53883 976.2206,-242.4441 977.75,-242.59375 C 980.89871,-242.90185 982.9258,-243.067 984.9375,-243.25 C 986.55151,-243.39682 987.20055,-243.81055 987.96875,-244.03125 C 988.21005,-244.11211 988.4623,-244.16116 988.75,-244.1875 C 989.90211,-244.29295 991.0429,-243.79475 995.125,-244.1875 C 999.20711,-244.58025 1000.7139,-244.71834 1001.4375,-244.9375 C 1002.1584,-245.15583 1003.1371,-245.3852 1003.7812,-245.875 C 1005.7193,-245.52501 1007.5501,-245.42062 1009,-245.5625 C 1012.1487,-245.8706 1014.1758,-246.03575 1016.1875,-246.21875 C 1018.1991,-246.40174 1018.7017,-247.05677 1019.8125,-247.15625 C 1020.9648,-247.25948 1022.1047,-246.77142 1026.1875,-247.15625 C 1030.2704,-247.54107 1031.7762,-247.65725 1032.5,-247.875 C 1033.2393,-248.09743 1034.2956,-248.38949 1034.9375,-248.90625 C 1036.9949,-248.50448 1038.9404,-248.40292 1040.4688,-248.5625 C 1043.6153,-248.89102 1045.6458,-249.0852 1047.6562,-249.28125 C 1049.2692,-249.43854 1049.9219,-249.91273 1050.6875,-250.15625 C 1050.9282,-250.24429 1051.1507,-250.27762 1051.4375,-250.3125 C 1052.5858,-250.4522 1053.7542,-249.97259 1057.8125,-250.5625 C 1061.8708,-251.15242 1063.3743,-251.33964 1064.0938,-251.59375 C 1064.8104,-251.84691 1065.7684,-252.15182 1066.4062,-252.6875 C 1068.3259,-252.47556 1070.1262,-252.53609 1071.5625,-252.78125 C 1074.6816,-253.31365 1076.6741,-253.70986 1078.6562,-254.09375 C 1080.6383,-254.47762 1081.1305,-255.1334 1082.2188,-255.375 C 1083.3475,-255.62566 1084.489,-255.25871 1088.4688,-256.25 C 1092.4483,-257.24127 1093.8983,-257.6693 1094.5938,-258.03125 C 1095.316,-258.40725 1096.3555,-258.90183 1096.9688,-259.5625 C 1098.9317,-259.57454 1100.7625,-259.85355 1102.1875,-260.40625 C 1105.1387,-261.55085 1107.0607,-262.27567 1108.875,-263.15625 C 1110.3307,-263.86277 1111.1941,-264.85828 1111.4062,-265.15625 C 1111.6185,-265.4542 1111.5051,-265.8848 1111.5312,-265.90625 C 1111.5742,-265.94148 1111.8716,-266.00028 1112.0312,-266.34375 C 1112.8902,-268.19082 1114.3544,-271.97139 1114.4688,-272.65625 C 1114.5825,-273.33839 1114.6368,-274.00902 1114.6875,-274.40625 C 1114.7169,-274.63575 1114.5404,-275.28515 1114.5625,-275.34375 C 1114.5934,-275.42579 1114.8508,-275.59432 1114.9062,-275.84375 C 1115.1725,-277.04206 1114.9953,-278.05111 1114.7812,-279.46875 C 1114.5673,-280.88638 1113.8096,-284.08338 1113.1562,-284.9375 C 1112.4973,-285.79922 1111.9314,-285.94801 1111.4062,-285.9375 z"
44418 - transform="translate(8.0045714e-2,-3.125e-2)" />
44419 - </clipPath>
44420 - <filter
44421 - inkscape:collect="always"
44422 - id="filter7578"
44423 - x="-0.08160872"
44424 - width="1.1632174"
44425 - y="-0.22659944"
44426 - height="1.4531989">
44427 - <feGaussianBlur
44428 - inkscape:collect="always"
44429 - stdDeviation="2.437399"
44430 - id="feGaussianBlur7580" />
44431 - </filter>
44432 - <filter
44433 - inkscape:collect="always"
44434 - id="filter7594"
44435 - x="-0.040804356"
44436 - width="1.0816087"
44437 - y="-0.11329972"
44438 - height="1.2265995">
44439 - <feGaussianBlur
44440 - inkscape:collect="always"
44441 - stdDeviation="1.2186995"
44442 - id="feGaussianBlur7596" />
44443 - </filter>
44444 - <clipPath
44445 - clipPathUnits="userSpaceOnUse"
44446 - id="clipPath7606">
44447 - <path
44448 - id="path7608"
44449 - d="M 1049.205,-282.26672 L 1049.1152,-282.25891 C 1047.7278,-281.37446 1042.5119,-280.65171 1042.4862,-272.73547 C 1042.462,-265.31022 1057.4991,-255.64401 1059.6425,-254.64172 C 1061.3727,-253.83263 1063.2341,-253.23296 1065.0488,-252.92297 L 1066.4862,-252.70422 C 1068.4059,-252.49228 1070.2062,-252.55281 1071.6425,-252.79797 C 1074.7616,-253.33037 1076.7541,-253.72658 1078.7362,-254.11047 C 1080.7183,-254.49434 1081.2105,-255.15012 1082.2988,-255.39172 C 1083.4275,-255.64238 1084.569,-255.27543 1088.5488,-256.26672 C 1092.5283,-257.258 1093.9782,-257.68602 1094.6738,-258.04797 C 1095.396,-258.42398 1096.4355,-258.91855 1097.0488,-259.57922 C 1099.0117,-259.59127 1100.8425,-259.87027 1102.2675,-260.42297 C 1105.2187,-261.56758 1107.1407,-262.29239 1108.955,-263.17297 C 1110.4107,-263.8795 1111.2741,-264.875 1111.4862,-265.17297 C 1111.6985,-265.47093 1111.5852,-265.90152 1111.6112,-265.92297 C 1111.6542,-265.95821 1111.9517,-266.017 1112.1112,-266.36047 C 1112.9702,-268.20755 1114.4344,-271.98811 1114.5488,-272.67297 C 1114.6625,-273.35512 1114.7168,-274.02574 1114.7675,-274.42297 C 1114.7969,-274.65248 1114.6204,-275.30187 1114.6425,-275.36047 C 1114.6734,-275.44252 1114.9308,-275.61104 1114.9862,-275.86047 C 1115.2525,-277.05879 1115.0754,-278.06783 1114.8612,-279.48547 C 1114.6473,-280.90311 1113.8896,-284.1001 1113.2362,-284.95422 C 1112.8168,-285.50279 1112.4369,-285.74672 1112.08,-285.86047 C 1112.0129,-285.87776 1111.9561,-285.90721 1111.8925,-285.92297 C 1111.8715,-285.92695 1111.8508,-285.91983 1111.83,-285.92297 C 1111.5184,-285.99847 1111.2215,-286.08164 1110.6738,-286.14172 C 1109.6883,-286.24984 1108.2491,-286.40112 1106.705,-286.39172 C 1106.1903,-286.38859 1105.6679,-286.34408 1105.1425,-286.29797 C 1101.5836,-285.98569 1096.1327,-285.30689 1094.9238,-284.67297 C 1093.2907,-285.00699 1090.9756,-285.2852 1088.9862,-285.14172 C 1085.9222,-284.92075 1084.0185,-284.79953 1082.08,-284.67297 C 1080.1416,-284.54642 1080.3939,-284.28433 1079.1738,-284.20422 C 1077.8547,-284.11762 1077.3869,-284.42747 1073.6112,-284.11047 C 1070.0655,-283.81275 1064.6306,-283.1173 1063.3925,-282.48547 C 1061.7591,-282.81998 1059.4466,-283.09786 1057.455,-282.95422 C 1054.3908,-282.73324 1052.4872,-282.58078 1050.5488,-282.45422 C 1049.8896,-282.41119 1049.5064,-282.33029 1049.205,-282.26672 z"
44450 - style="opacity:0.82448976;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44451 - </clipPath>
44452 - <filter
44453 - inkscape:collect="always"
44454 - id="filter7610"
44455 - x="-0.021942979"
44456 - width="1.0438859"
44457 - y="-0.10017137"
44458 - height="1.2003427">
44459 - <feGaussianBlur
44460 - inkscape:collect="always"
44461 - stdDeviation="0.57530213"
44462 - id="feGaussianBlur7612" />
44463 - </filter>
44464 - <clipPath
44465 - clipPathUnits="userSpaceOnUse"
44466 - id="clipPath7616">
44467 - <path
44468 - id="path7618"
44469 - d="M 205.47016,-408.97318 L 205.38003,-408.97164 C 203.9344,-408.18598 198.68082,-407.82829 198.10378,-399.93307 C 197.56244,-392.52754 211.88973,-381.83741 213.95811,-380.68826 C 215.62775,-379.76062 217.44286,-379.03275 219.23156,-378.59711 L 220.65023,-378.27877 C 222.5505,-377.93363 224.35065,-377.86862 225.80054,-378.01314 C 228.94914,-378.32698 230.9644,-378.58345 232.96843,-378.82834 C 234.97245,-379.07322 235.50913,-379.69312 236.61162,-379.85833 C 237.75504,-380.02976 238.86821,-379.58419 242.90739,-380.29586 C 246.94627,-381.00755 248.42246,-381.33354 249.14158,-381.64616 C 249.88822,-381.97095 250.95964,-382.39191 251.61747,-383.00826 C 253.57644,-382.88355 255.42223,-383.03435 256.88227,-383.48645 C 259.90603,-384.42272 261.87384,-385.01189 263.74507,-385.76396 C 265.24645,-386.36738 266.17709,-387.30032 266.40943,-387.58279 C 266.64197,-387.86524 266.55894,-388.30268 266.58637,-388.32227 C 266.63172,-388.35443 266.93259,-388.39235 267.11563,-388.72388 C 268.1012,-390.50664 269.82518,-394.17603 269.987,-394.85126 C 270.14794,-395.52383 270.24882,-396.18904 270.32707,-396.58177 C 270.37238,-396.80868 270.24154,-397.46878 270.26767,-397.5257 C 270.30421,-397.6054 270.57272,-397.75558 270.64536,-398.00055 C 270.99449,-399.17741 270.8881,-400.19633 270.77316,-401.62545 C 270.65853,-403.05454 270.12535,-406.29655 269.53303,-407.1941 C 269.15286,-407.77056 268.79088,-408.04035 268.44277,-408.17869 C 268.37703,-408.20061 268.32242,-408.23394 268.26007,-408.2541 C 268.2394,-408.25953 268.21826,-408.25387 268.19773,-408.25845 C 267.89214,-408.35547 267.60176,-408.45912 267.05957,-408.5572 C 266.084,-408.7337 264.65883,-408.98486 263.11782,-409.08304 C 262.60416,-409.11577 262.07992,-409.10775 261.55259,-409.09835 C 257.98058,-409.03472 252.49564,-408.73725 251.24552,-408.18907 C 249.63965,-408.63604 247.34955,-409.07483 245.35499,-409.07027 C 242.28304,-409.06325 240.37552,-409.07493 238.43292,-409.0837 C 236.49041,-409.09248 236.72384,-408.81345 235.50112,-408.81852 C 234.1792,-408.82401 233.73411,-409.16569 229.9455,-409.11245 C 226.38768,-409.06243 220.91754,-408.74723 219.63844,-408.20318 C 218.0323,-408.65065 215.74477,-409.08893 213.74801,-409.08436 C 210.67586,-409.07735 208.76626,-409.05786 206.82375,-409.06662 C 206.16316,-409.06961 205.77525,-409.0156 205.47016,-408.97318 z"
44470 - style="opacity:0.82448976;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44471 - </clipPath>
44472 - <linearGradient
44473 - inkscape:collect="always"
44474 - xlink:href="#linearGradient7622"
44475 - id="linearGradient7708"
44476 - gradientUnits="userSpaceOnUse"
44477 - gradientTransform="translate(-19.091883,4.2426407)"
44478 - x1="774.97668"
44479 - y1="-211.87105"
44480 - x2="755.11584"
44481 - y2="-202.67865" />
44482 - <mask
44483 - maskUnits="userSpaceOnUse"
44484 - id="mask7704">
44485 - <path
44486 - style="fill:url(#linearGradient7708);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
44487 - d="M 718.40812,-224.31217 L 751.65812,-168.31217 L 1027.6581,-192.31217 L 1187.1581,-240.56217 L 1120.6581,-323.31217 L 718.40812,-224.31217 z"
44488 - id="path7706" />
44489 - </mask>
44490 - <radialGradient
44491 - inkscape:collect="always"
44492 - xlink:href="#linearGradient8430"
44493 - id="radialGradient7904"
44494 - gradientUnits="userSpaceOnUse"
44495 - gradientTransform="matrix(-0.3324832,0.9022288,-0.9582407,-0.3531242,305.29227,19.909497)"
44496 - cx="142.95833"
44497 - cy="107.09234"
44498 - fx="142.95833"
44499 - fy="107.09234"
44500 - r="66.981766" />
44501 - <radialGradient
44502 - inkscape:collect="always"
44503 - xlink:href="#linearGradient3317"
44504 - id="radialGradient7906"
44505 - gradientUnits="userSpaceOnUse"
44506 - gradientTransform="matrix(1.0036478,-1.0345492e-7,1.7124628e-7,1.6613125,-160.53487,-96.205369)"
44507 - cx="317.78754"
44508 - cy="129.65378"
44509 - fx="317.78754"
44510 - fy="129.65378"
44511 - r="47.863216" />
44512 - <radialGradient
44513 - inkscape:collect="always"
44514 - xlink:href="#linearGradient8398"
44515 - id="radialGradient7908"
44516 - gradientUnits="userSpaceOnUse"
44517 - gradientTransform="matrix(2.0747661,-0.1577957,0.2382425,3.1325183,-550.77432,-65.728909)"
44518 - cx="325.30847"
44519 - cy="80.909554"
44520 - fx="325.30847"
44521 - fy="80.909554"
44522 - r="26.937988" />
44523 - <clipPath
44524 - clipPathUnits="userSpaceOnUse"
44525 - id="clipPath8209">
44526 - <path
44527 - sodipodi:nodetypes="czcc"
44528 - id="path8211"
44529 - d="M 734.03125,519.49186 C 734.03125,519.49186 750.78638,556.50992 762.73266,573.44581 C 774.67895,590.3817 815.45982,629.49186 815.45982,629.49186 L 816.05699,490.90211"
44530 - style="opacity:1;fill:#1a1a1a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44531 - </clipPath>
44532 - <filter
44533 - inkscape:collect="always"
44534 - id="filter8225">
44535 - <feGaussianBlur
44536 - inkscape:collect="always"
44537 - stdDeviation="10.661912"
44538 - id="feGaussianBlur8227" />
44539 - </filter>
44540 - <filter
44541 - inkscape:collect="always"
44542 - id="filter8333">
44543 - <feGaussianBlur
44544 - inkscape:collect="always"
44545 - stdDeviation="7.18"
44546 - id="feGaussianBlur8335" />
44547 - </filter>
44548 - <clipPath
44549 - clipPathUnits="userSpaceOnUse"
44550 - id="clipPath8338">
44551 - <path
44552 - sodipodi:nodetypes="czzzzzzcccccccccczczz"
44553 - id="path8340"
44554 - d="M 266.27183,924.57185 C 264.86456,943.37307 265.12693,957.32289 268.35357,973.87513 C 271.58023,990.42751 284.75966,1019.7825 288.68798,1037.0589 C 292.61419,1054.326 291.38211,1075.3686 276.22854,1088.2071 C 260.91093,1101.1846 234.17727,1109.8061 208.39624,1103.9409 C 182.61518,1098.0756 138.84716,1054.7175 119.80605,1033.7126 C 100.6939,1012.6293 56.045182,939.86193 41.867507,909.4368 C 27.689835,879.01168 29.207902,872.71823 33.747792,863.90708 C 24.38107,839.38658 21.33408,813.84026 0.035334479,788.33044 C 30.360814,791.44487 43.915624,815.28676 60.161024,835.47019 C 54.631128,787.39416 42.106309,771.05368 31.787072,744.74589 C 61.781367,750.82754 82.366432,776.61828 95.766855,817.45839 C 105.32101,813.54047 114.00462,808.08545 125.95427,808.39719 C 114.65677,766.70139 108.0048,738.48134 89.267014,707.32725 C 142.70898,712.99757 172.92404,787.96657 168.23844,795.28805 C 178.21641,793.04406 187.24409,788.75767 198.67497,789.63638 C 187.426,751.28935 177.62715,712.76848 195.01526,670.98819 C 195.01526,670.98819 243.30204,736.42507 249.40491,756.79397 C 255.50779,777.16287 250.92373,795.49448 250.92373,795.49448 C 250.92373,795.49448 267.8833,826.57978 271.21765,846.58862 C 274.59075,866.82996 267.68496,905.69193 266.27183,924.57185 z"
44555 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44556 - </clipPath>
44557 - <filter
44558 - inkscape:collect="always"
44559 - id="filter8354">
44560 - <feGaussianBlur
44561 - inkscape:collect="always"
44562 - stdDeviation="6.82"
44563 - id="feGaussianBlur8356" />
44564 - </filter>
44565 - <clipPath
44566 - clipPathUnits="userSpaceOnUse"
44567 - id="clipPath8359">
44568 - <path
44569 - sodipodi:nodetypes="czzzzzzcccccccccczczz"
44570 - id="path8361"
44571 - d="M 266.27183,924.57185 C 264.86456,943.37307 265.12693,957.32289 268.35357,973.87513 C 271.58023,990.42751 284.75966,1019.7825 288.68798,1037.0589 C 292.61419,1054.326 291.38211,1075.3686 276.22854,1088.2071 C 260.91093,1101.1846 234.17727,1109.8061 208.39624,1103.9409 C 182.61518,1098.0756 138.84716,1054.7175 119.80605,1033.7126 C 100.6939,1012.6293 56.045182,939.86193 41.867507,909.4368 C 27.689835,879.01168 29.207902,872.71823 33.747792,863.90708 C 24.38107,839.38658 21.33408,813.84026 0.035334479,788.33044 C 30.360814,791.44487 43.915624,815.28676 60.161024,835.47019 C 54.631128,787.39416 42.106309,771.05368 31.787072,744.74589 C 61.781367,750.82754 82.366432,776.61828 95.766855,817.45839 C 105.32101,813.54047 114.00462,808.08545 125.95427,808.39719 C 114.65677,766.70139 108.0048,738.48134 89.267014,707.32725 C 142.70898,712.99757 172.92404,787.96657 168.23844,795.28805 C 178.21641,793.04406 187.24409,788.75767 198.67497,789.63638 C 187.426,751.28935 177.62715,712.76848 195.01526,670.98819 C 195.01526,670.98819 243.30204,736.42507 249.40491,756.79397 C 255.50779,777.16287 250.92373,795.49448 250.92373,795.49448 C 250.92373,795.49448 267.8833,826.57978 271.21765,846.58862 C 274.59075,866.82996 267.68496,905.69193 266.27183,924.57185 z"
44572 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44573 - </clipPath>
44574 - <filter
44575 - inkscape:collect="always"
44576 - id="filter8379"
44577 - x="-0.14413793"
44578 - width="1.288276"
44579 - y="-0.10278689"
44580 - height="1.2055738">
44581 - <feGaussianBlur
44582 - inkscape:collect="always"
44583 - stdDeviation="7.389266"
44584 - id="feGaussianBlur8381" />
44585 - </filter>
44586 - <clipPath
44587 - clipPathUnits="userSpaceOnUse"
44588 - id="clipPath8392">
44589 - <path
44590 - sodipodi:nodetypes="czzzzzzcccccccccczczz"
44591 - id="path8394"
44592 - d="M 760.16396,935.83377 C 766.95806,954.73656 770.65765,969.13346 772.05426,987.04566 C 773.45088,1004.958 768.27158,1038.8465 769.1538,1057.7018 C 770.03555,1076.547 777.28749,1097.8008 796.49843,1106.6707 C 815.9173,1115.6365 845.81767,1116.882 870.61827,1103.5251 C 895.41887,1090.1681 928.01929,1033.1996 941.59253,1006.2164 C 955.21638,979.13246 980.3536,891.71903 986.25333,856.44781 C 992.15306,821.1766 988.80387,815.14704 981.63585,807.39232 C 984.27615,779.55217 980.13613,752.45689 994.74554,720.20614 C 964.49653,732.03184 957.36325,760.36684 946.42665,785.71122 C 938.42574,734.77829 946.63581,714.43803 949.74554,684.49186 C 920.68078,699.26977 906.88403,731.60588 904.74554,777.349 C 893.82159,776.0448 883.3541,772.91477 871.17411,776.63471 C 870.91007,730.61137 869.71055,699.7453 880.08474,662.42822 C 826.82927,683.45508 817.13746,769.02232 824.03125,775.20614 C 813.14843,775.74114 802.66017,773.90884 791.17411,778.06329 C 791.81303,735.49194 790.91365,693.15468 761.17411,655.20614 C 761.17411,655.20614 730.21605,736.12848 729.74554,758.77757 C 729.27503,781.42666 739.19713,798.94345 739.19713,798.94345 C 739.19713,798.94345 730.62906,835.68396 732.89854,857.17568 C 735.19439,878.91714 753.34144,916.85185 760.16396,935.83377 z"
44593 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44594 - </clipPath>
44595 - <filter
44596 - inkscape:collect="always"
44597 - id="filter8404"
44598 - x="-0.090268657"
44599 - width="1.1805373"
44600 - y="-0.10250848"
44601 - height="1.205017">
44602 - <feGaussianBlur
44603 - inkscape:collect="always"
44604 - stdDeviation="5.3457272"
44605 - id="feGaussianBlur8406" />
44606 - </filter>
44607 - <clipPath
44608 - clipPathUnits="userSpaceOnUse"
44609 - id="clipPath8417">
44610 - <path
44611 - sodipodi:nodetypes="czzzzzzcccccccccczczz"
44612 - id="path8419"
44613 - d="M 760.16396,935.83377 C 766.95806,954.73656 770.65765,969.13346 772.05426,987.04566 C 773.45088,1004.958 768.27158,1038.8465 769.1538,1057.7018 C 770.03555,1076.547 777.28749,1097.8008 796.49843,1106.6707 C 815.9173,1115.6365 845.81767,1116.882 870.61827,1103.5251 C 895.41887,1090.1681 928.01929,1033.1996 941.59253,1006.2164 C 955.21638,979.13246 980.3536,891.71903 986.25333,856.44781 C 992.15306,821.1766 988.80387,815.14704 981.63585,807.39232 C 984.27615,779.55217 980.13613,752.45689 994.74554,720.20614 C 964.49653,732.03184 957.36325,760.36684 946.42665,785.71122 C 938.42574,734.77829 946.63581,714.43803 949.74554,684.49186 C 920.68078,699.26977 906.88403,731.60588 904.74554,777.349 C 893.82159,776.0448 883.3541,772.91477 871.17411,776.63471 C 870.91007,730.61137 869.71055,699.7453 880.08474,662.42822 C 826.82927,683.45508 817.13746,769.02232 824.03125,775.20614 C 813.14843,775.74114 802.66017,773.90884 791.17411,778.06329 C 791.81303,735.49194 790.91365,693.15468 761.17411,655.20614 C 761.17411,655.20614 730.21605,736.12848 729.74554,758.77757 C 729.27503,781.42666 739.19713,798.94345 739.19713,798.94345 C 739.19713,798.94345 730.62906,835.68396 732.89854,857.17568 C 735.19439,878.91714 753.34144,916.85185 760.16396,935.83377 z"
44614 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44615 - </clipPath>
44616 - </defs>
44617 - <metadata
44618 - id="metadata7">
44619 - <rdf:RDF>
44620 - <cc:Work
44621 - rdf:about="">
44622 - <dc:format>image/svg+xml</dc:format>
44623 - <dc:type
44624 - rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
44625 - </cc:Work>
44626 - </rdf:RDF>
44627 - </metadata>
44628 - <g
44629 - inkscape:groupmode="layer"
44630 - id="layer1"
44631 - inkscape:label="Shadow">
44632 - <path
44633 - style="opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter11361);enable-background:new"
44634 - d="M 304.64285,526.6479 C 294.64285,527.00505 286.42857,529.50504 286.42857,529.50504 L 293.92857,535.57647 L 304.28571,539.1479 L 320.35714,539.50504 L 342.85714,534.1479 L 350.71428,535.21933 L 371.07143,533.07647 L 360.71428,539.86219 C 366.17351,538.83858 378.10757,543.4313 370.35714,545.21933 C 368.61714,545.62075 384.28571,540.57648 384.28571,540.57648 L 386.78571,535.93361 L 390.35714,526.6479 L 401.78571,526.6479 L 419.99999,522.00504 L 423.57143,517.00505 L 407.49999,518.07647 L 395.35714,520.21933 L 380.71428,515.21933 L 310.02218,531.92707 L 304.64285,526.6479 z"
44635 - id="path10326"
44636 - sodipodi:nodetypes="cccccccccsccccccccccc"
44637 - transform="matrix(10.726753,0,0,10.726753,-2882.1235,-4565.4583)"
44638 - inkscape:export-filename="/home/cheeseness/Documents/LCA09/mascot/tuz_new.png"
44639 - inkscape:export-xdpi="142.10527"
44640 - inkscape:export-ydpi="142.10527" />
44641 - </g>
44642 - <g
44643 - inkscape:groupmode="layer"
44644 - id="layer20"
44645 - inkscape:label="New Ear">
44646 - <g
44647 - style="opacity:1;display:inline;enable-background:new"
44648 - id="g7882"
44649 - transform="matrix(0.71084,-0.1937433,0.262963,0.9648058,503.68027,136.48399)">
44650 - <path
44651 - sodipodi:nodetypes="czzzzcc"
44652 - id="path7876"
44653 - d="M 245.12255,100.05344 C 245.12255,100.05344 197.99444,68.406519 177.9079,64.252501 C 157.86998,60.108538 139.435,60.934923 125.97426,77.859824 C 112.51352,94.784725 113.89687,139.12502 112.43872,164.82937 C 110.98057,190.53372 114.98817,235.00638 130.04332,253.49489 C 145.09848,271.98339 175.92966,267.07991 179.97027,274.90859 C 182.1831,279.19595 245.12255,100.05344 245.12255,100.05344 z"
44654 - style="opacity:1;fill:url(#radialGradient7904);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44655 - <path
44656 - sodipodi:nodetypes="czzzzzc"
44657 - id="path7878"
44658 - d="M 135.37935,82.017807 C 135.37935,82.017807 161.7229,83.95659 173.01242,95.920995 C 184.42736,108.01833 186.74699,117.25251 188.30828,133.65558 C 189.87165,150.08057 187.45871,162.0737 180.49446,169.69292 C 173.53021,177.31214 179.49017,189.27624 154.57841,181.76399 C 129.66665,174.25174 127.54617,153.98101 128.06318,135.45924 C 128.58039,116.93026 135.37935,82.017807 135.37935,82.017807 z"
44659 - style="opacity:1;fill:url(#radialGradient7906);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44660 - <path
44661 - sodipodi:nodetypes="czccssc"
44662 - id="path7880"
44663 - d="M 135.648,81.927211 C 135.648,81.927211 131.00335,98.292286 136.23625,110.49031 C 141.72419,123.28285 163.4605,154.75038 163.4605,165.14596 L 186.11675,160.14596 C 188.65893,153.17952 189.32727,144.3939 188.30425,133.64596 C 186.74296,117.24289 184.43795,108.02455 173.023,95.927211 C 163.36812,85.695164 141.42989,82.552354 135.648,81.927211 z"
44664 - style="opacity:1;fill:url(#radialGradient7908);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44665 - </g>
44666 - </g>
44667 - <g
44668 - inkscape:groupmode="layer"
44669 - id="layer21"
44670 - inkscape:label="Rendered2"
44671 - style="display:inline">
44672 - <path
44673 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44674 - d="M 845.03125,1154.7776 C 840.74554,1155.4919 817.4031,1158.3957 787.17411,1164.7776 C 756.94512,1171.1595 729.86016,1169.7437 651.38803,1182.1072 C 571.53625,1194.688 557.32367,1224.6495 543.26578,1229.1715 C 528.56564,1233.9001 397.88839,1163.349 397.88839,1163.349 L 402.17411,1069.0633 C 402.17411,1069.0633 488.05962,1052.8624 514.31696,1035.4919 C 540.57431,1018.1214 559.89934,985.82588 573.60268,964.06329 C 587.30602,942.3007 606.45982,892.63471 606.45982,892.63471 L 845.03125,1154.7776 z"
44675 - id="path7917"
44676 - sodipodi:nodetypes="czzzcczzcc" />
44677 - <path
44678 - style="opacity:0.5;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8888);enable-background:accumulate"
44679 - d="M 332.34019,898.38549 L 299.60838,837.08593 L 261.99104,882.19239 C 264.16779,883.5095 267.76529,861.33636 307.59144,817.77531 L 332.34019,898.38549 z"
44680 - id="path7919"
44681 - clip-path="url(#clipPath8658)"
44682 - sodipodi:nodetypes="ccccc"
44683 - transform="translate(276,136)" />
44684 - <path
44685 - style="opacity:1;fill:url(#linearGradient2841);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8892);enable-background:accumulate"
44686 - d="M 200.81833,863.03015 L 347.18943,811.41136 L 591.14127,1037.6855 L 349.31075,1177.6927 L 168.29141,1090.0114 L 200.81833,863.03015 z"
44687 - id="path7923"
44688 - clip-path="url(#clipPath2833)"
44689 - sodipodi:nodetypes="cccccc"
44690 - transform="translate(276,136)" />
44691 - <path
44692 - style="opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44693 - d="M 642.88839,640.13471 C 642.88839,640.13471 613.33433,680.70776 595.03125,714.42042 C 576.72816,748.13309 536.41016,840.77736 524.67411,885.49185 C 512.91471,930.29529 462.17411,1009.0633 462.17411,1009.0633 L 538.24554,1027.2776 C 538.24554,1027.2776 550.05266,1014.4542 569.31696,981.20614 C 588.58126,947.95806 629.67411,842.63471 629.67411,842.63471 L 642.88839,640.13471 z"
44694 - id="path7921"
44695 - sodipodi:nodetypes="czzcczcc" />
44696 - <path
44697 - style="opacity:0.4;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8856);enable-background:accumulate"
44698 - d="M 430.28131,381.94122 C 423.21025,384.76965 194.10007,414.09303 194.10007,414.09303 L 154.46046,773.92607 L 244.65895,866.56568 L 296.98485,752.01438 L 397.45289,565.62246 L 430.28131,381.94122 z"
44699 - id="path7925"
44700 - sodipodi:nodetypes="ccccccc"
44701 - clip-path="url(#clipPath3665)"
44702 - transform="translate(276,136)" />
44703 - <path
44704 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44705 - d="M 969.67051,1164.0346 C 969.67051,1164.0346 992.92679,1175.4283 1005.7383,1184.5107 C 1018.4357,1193.5122 1035.2107,1209.1598 1047.4307,1221.8712 C 1059.7362,1234.6714 1067.5434,1244.4699 1088.9634,1246.032 C 1110.3956,1247.5949 1142.2458,1237.2444 1162.2594,1221.3678 C 1182.2729,1205.4912 1207.9063,1152.135 1207.9063,1152.135 L 1080.7455,1009.0633"
44706 - id="path7927"
44707 - sodipodi:nodetypes="czzzzcc" />
44708 - <path
44709 - style="opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8860);enable-background:accumulate"
44710 - d="M 331.34019,641.50471 L 216.17367,835.36467 L 260.2153,925.96265 L 357.79603,732.21539 L 331.34019,641.50471 z"
44711 - id="path7929"
44712 - clip-path="url(#clipPath8642)"
44713 - sodipodi:nodetypes="ccccc"
44714 - transform="translate(276,136)" />
44715 - <g
44716 - style="opacity:1;display:inline;enable-background:new"
44717 - id="g7931"
44718 - transform="matrix(0.9934486,0.1142802,-0.1142802,0.9934486,-9.24324,588.09054)"
44719 - inkscape:transform-center-x="-347.89063"
44720 - inkscape:transform-center-y="-28.255779">
44721 - <path
44722 - style="opacity:1;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44723 - d="M 1049.205,-282.26672 L 1049.1152,-282.25891 C 1047.7278,-281.37446 1042.5119,-280.65171 1042.4862,-272.73547 C 1042.462,-265.31022 1057.4991,-255.64401 1059.6425,-254.64172 C 1061.3727,-253.83263 1063.2341,-253.23296 1065.0488,-252.92297 L 1066.4862,-252.70422 C 1068.4059,-252.49228 1070.2062,-252.55281 1071.6425,-252.79797 C 1074.7616,-253.33037 1076.7541,-253.72658 1078.7362,-254.11047 C 1080.7183,-254.49434 1081.2105,-255.15012 1082.2988,-255.39172 C 1083.4275,-255.64238 1084.569,-255.27543 1088.5488,-256.26672 C 1092.5283,-257.258 1093.9782,-257.68602 1094.6738,-258.04797 C 1095.396,-258.42398 1096.4355,-258.91855 1097.0488,-259.57922 C 1099.0117,-259.59127 1100.8425,-259.87027 1102.2675,-260.42297 C 1105.2187,-261.56758 1107.1407,-262.29239 1108.955,-263.17297 C 1110.4107,-263.8795 1111.2741,-264.875 1111.4862,-265.17297 C 1111.6985,-265.47093 1111.5852,-265.90152 1111.6112,-265.92297 C 1111.6542,-265.95821 1111.9517,-266.017 1112.1112,-266.36047 C 1112.9702,-268.20755 1114.4344,-271.98811 1114.5488,-272.67297 C 1114.6625,-273.35512 1114.7168,-274.02574 1114.7675,-274.42297 C 1114.7969,-274.65248 1114.6204,-275.30187 1114.6425,-275.36047 C 1114.6734,-275.44252 1114.9308,-275.61104 1114.9862,-275.86047 C 1115.2525,-277.05879 1115.0754,-278.06783 1114.8612,-279.48547 C 1114.6473,-280.90311 1113.8896,-284.1001 1113.2362,-284.95422 C 1112.8168,-285.50279 1112.4369,-285.74672 1112.08,-285.86047 C 1112.0129,-285.87776 1111.9561,-285.90721 1111.8925,-285.92297 C 1111.8715,-285.92695 1111.8508,-285.91983 1111.83,-285.92297 C 1111.5184,-285.99847 1111.2215,-286.08164 1110.6738,-286.14172 C 1109.6883,-286.24984 1108.2491,-286.40112 1106.705,-286.39172 C 1106.1903,-286.38859 1105.6679,-286.34408 1105.1425,-286.29797 C 1101.5836,-285.98569 1096.1327,-285.30689 1094.9238,-284.67297 C 1093.2907,-285.00699 1090.9756,-285.2852 1088.9862,-285.14172 C 1085.9222,-284.92075 1084.0185,-284.79953 1082.08,-284.67297 C 1080.1416,-284.54642 1080.3939,-284.28433 1079.1738,-284.20422 C 1077.8547,-284.11762 1077.3869,-284.42747 1073.6112,-284.11047 C 1070.0655,-283.81275 1064.6306,-283.1173 1063.3925,-282.48547 C 1061.7591,-282.81998 1059.4466,-283.09786 1057.455,-282.95422 C 1054.3908,-282.73324 1052.4872,-282.58078 1050.5488,-282.45422 C 1049.8896,-282.41119 1049.5064,-282.33029 1049.205,-282.26672 z"
44724 - id="path7933" />
44725 - <g
44726 - clip-path="url(#clipPath7616)"
44727 - style="display:inline;filter:url(#filter7610);enable-background:new"
44728 - id="g7935"
44729 - transform="matrix(0.9975712,-6.9654277e-2,6.9654277e-2,0.9975712,872.72062,140.02502)">
44730 - <path
44731 - sodipodi:nodetypes="ccssscsssscscsscsssccscssccsscssscc"
44732 - id="path7937"
44733 - d="M 229.94262,-409.12268 C 226.38481,-409.07267 220.91842,-408.76259 219.63928,-408.21854 C 218.03319,-408.66601 215.73612,-409.09985 213.73933,-409.09528 C 210.66734,-409.08826 208.77464,-409.08651 206.83206,-409.09528 C 206.17159,-409.09827 205.78447,-409.02811 205.47939,-408.98569 C 205.47939,-408.98569 205.47939,-407.88976 205.47939,-407.88976 C 205.59911,-408.06923 205.87191,-408.58022 206.42914,-408.65691 C 207.17672,-408.7598 211.59842,-408.80814 213.73933,-408.76651 C 215.51393,-408.73198 218.19456,-408.49224 220.12854,-407.80756 C 220.44994,-407.69378 220.74779,-407.53378 221.02073,-407.39659 C 222.98415,-406.40966 228.96409,-403.09505 228.96409,-403.09505 C 228.96409,-403.09505 222.33134,-407.04273 221.48122,-407.53358 C 221.27791,-407.65097 220.90658,-407.79127 220.44513,-407.94456 C 221.66576,-408.39235 225.5211,-408.56427 228.27336,-408.65691 C 231.29786,-408.75873 231.62112,-408.7465 233.68405,-408.46512 C 235.81336,-408.17469 237.02256,-407.86236 237.02256,-407.86236 C 237.02255,-407.86236 236.9442,-408.50354 238.05865,-408.65691 C 238.80622,-408.7598 243.22794,-408.80814 245.36884,-408.76651 C 247.43834,-408.72625 250.73489,-408.35935 252.65024,-407.39659 C 253.65356,-406.89226 255.68588,-405.82796 257.44559,-404.86088 L 257.5412,-404.88031 C 257.5412,-404.88031 253.96086,-407.04273 253.11073,-407.53358 C 252.90742,-407.65097 252.5361,-407.79127 252.07464,-407.94456 C 253.29526,-408.39235 257.12183,-408.56427 259.87409,-408.65691 C 262.89859,-408.75873 263.22184,-408.7465 265.28478,-408.46512 C 267.23794,-408.19872 268.2977,-407.93506 268.47939,-407.88976 C 268.47939,-407.88976 268.4523,-408.20122 268.4523,-408.20122 C 268.04327,-408.33767 267.73806,-408.43457 267.05192,-408.5587 C 265.75111,-408.79403 263.6528,-409.16026 261.54335,-409.12268 C 257.9714,-409.05904 252.49007,-408.76672 251.24001,-408.21854 C 249.63418,-408.66549 247.36339,-409.09984 245.36884,-409.09528 C 242.29685,-409.08826 240.37536,-409.08651 238.43279,-409.09528 C 236.49023,-409.10406 236.72011,-408.81621 235.49721,-408.8213 C 234.1753,-408.8268 233.73109,-409.17593 229.94262,-409.12268 C 229.94262,-409.12268 229.94262,-409.12268 229.94262,-409.12268"
44734 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44735 - <path
44736 - id="path7939"
44737 - d="M 206.1989,-407.47878 C 208.11911,-406.66172 210.77605,-405.28595 212.35787,-404.08139 C 213.93971,-402.87683 215.26544,-402.30771 217.91246,-400.16344 C 218.79803,-399.44606 219.66111,-398.81359 220.50439,-398.2417 L 221.04496,-398.43181 C 220.33173,-398.9152 219.5772,-399.45212 218.77587,-400.05384 C 215.95364,-402.17305 215.14932,-402.86357 212.7608,-404.32798 C 210.37226,-405.79238 208.66132,-406.69374 206.1989,-407.47878 C 206.1989,-407.47878 206.1989,-407.47878 206.1989,-407.47878"
44738 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44739 - sodipodi:nodetypes="cssccsscc" />
44740 - <path
44741 - id="path7941"
44742 - d="M 237.79963,-407.47878 C 239.71984,-406.66172 242.40557,-405.28595 243.98738,-404.08139 C 244.80045,-403.46223 245.54587,-403.01097 246.43784,-402.42738 L 247.08684,-402.54404 C 246.28853,-403.12041 245.51507,-403.63839 244.39031,-404.32798 C 242.00177,-405.79238 240.26205,-406.69374 237.79963,-407.47878 C 237.79963,-407.47878 237.79963,-407.47878 237.79963,-407.47878"
44743 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44744 - sodipodi:nodetypes="csccscc" />
44745 - </g>
44746 - <g
44747 - clip-path="url(#clipPath7606)"
44748 - id="g7943">
44749 - <path
44750 - style="opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7578);enable-background:new"
44751 - d="M 1056.25,-278.80481 C 1060.3946,-280.28358 1066.25,-275.67981 1066.25,-275.67981 C 1067.149,-275.39889 1068.9751,-276.57428 1068.8743,-277.36595 C 1068.8743,-277.36595 1067.324,-279.22657 1068.5,-280.30481 C 1069.676,-281.38305 1073.796,-278.79743 1076,-278.67981 C 1078.204,-278.56219 1081.5621,-278.90922 1083,-279.42981 C 1084.4379,-279.9504 1084.1129,-280.8544 1085.625,-281.17981 C 1087.1371,-281.50522 1090.7439,-280.14227 1092.6855,-280.01098 C 1094.6271,-279.87969 1097.3336,-279.67671 1098.5,-280.17981 C 1099.6664,-280.68291 1098.6782,-281.33902 1100.375,-282.05481 C 1102.0718,-282.7706 1108.1352,-283.01143 1110,-282.17981 C 1111.8648,-281.34819 1111.8099,-281.66061 1112.625,-279.17981 C 1113.4401,-276.69901 1120.0648,-274.01696 1111.5,-265.80481 C 1102.9352,-257.59266 1052.1221,-252.01887 1045.875,-263.05481 C 1039.6279,-274.09075 1052.1054,-277.32604 1056.25,-278.80481 z"
44752 - id="path7945"
44753 - sodipodi:nodetypes="czzzzzzzzzzzzzz" />
44754 - <path
44755 - style="opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7594);enable-background:new"
44756 - d="M 1058.5,-275.42981 C 1062.6446,-276.90858 1068.5,-272.30481 1068.5,-272.30481 C 1069.399,-272.02389 1071.2251,-273.19928 1071.1243,-273.99095 C 1071.1243,-273.99095 1069.574,-275.85157 1070.75,-276.92981 C 1071.926,-278.00805 1076.046,-275.42243 1078.25,-275.30481 C 1080.454,-275.18719 1083.8121,-275.53422 1085.25,-276.05481 C 1086.6879,-276.5754 1086.3629,-277.4794 1087.875,-277.80481 C 1089.3871,-278.13022 1092.9939,-276.76727 1094.9355,-276.63598 C 1096.8771,-276.50469 1099.5836,-276.30171 1100.75,-276.80481 C 1101.9164,-277.30791 1100.9282,-277.96402 1102.625,-278.67981 C 1104.3218,-279.3956 1110.3852,-279.63643 1112.25,-278.80481 C 1114.1148,-277.97319 1114.0599,-278.28561 1114.875,-275.80481 C 1115.6901,-273.32401 1122.3148,-270.64196 1113.75,-262.42981 C 1105.1852,-254.21766 1054.3721,-248.64387 1048.125,-259.67981 C 1041.8779,-270.71575 1054.3554,-273.95104 1058.5,-275.42981 z"
44757 - id="path7947"
44758 - sodipodi:nodetypes="czzzzzzzzzzzzzz" />
44759 - </g>
44760 - </g>
44761 - <path
44762 - style="opacity:1;fill:#101414;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44763 - d="M 628.24553,347.99185 C 624.4411,322.72762 611.43581,297.35383 611.08873,272.46662 C 610.90247,259.1111 614.36158,245.89571 624.84426,232.91257 C 661.19128,167.61674 741.78517,148.21789 810.77892,141.44715 C 897.70131,130.43035 995.69159,159.38722 1044.1503,236.84843 C 1098.2743,312.58173 1100.825,409.38755 1124.7623,496.37638 C 1154.2001,623.50398 1179.5414,752.59052 1185.1545,883.22673 C 1182.0911,961.40858 1176.7282,1048.4109 1124.6513,1111.3609 C 1076.6248,1161.7183 1001.8649,1161.4139 937.58145,1170.3632 C 847.02606,1175.0182 753.22992,1154.2174 675.79755,1106.165 C 611.02191,1068.225 580.06736,992.68633 578.51815,920.14538 C 570.12898,840.27022 604.90967,766.33687 630.13855,692.98577 C 637.60916,610.2247 639.55141,526.73802 639.79189,443.60093 C 638.95507,411.40549 632.70236,379.7836 628.24553,347.99185 z"
44764 - id="path7949"
44765 - sodipodi:nodetypes="cscccccccccccc" />
44766 - <path
44767 - style="opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8940);enable-background:accumulate"
44768 - d="M 311.83409,415.43155 L 321.73359,537.05392 L 261.62951,673.52553 L 277.18586,848.1809 C 292.79912,910.0601 309.37131,946.84995 351.56201,965.23473 C 355.88112,928.99475 312.95049,822.27485 312.31937,776.11489 C 311.68792,729.93044 323.14971,667.50703 342.99704,617.81842 C 363.04539,567.62654 379.89378,572.972 385.12193,525.22549 C 390.35008,477.47898 367.69553,375.83357 367.69553,375.83357 L 311.83409,415.43155 z"
44769 - id="path7951"
44770 - sodipodi:nodetypes="ccccczzzcc"
44771 - clip-path="url(#clipPath8616)"
44772 - transform="translate(276,136)" />
44773 - <path
44774 - style="opacity:1;fill:url(#linearGradient8970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44775 - d="M 1010.0312,655.49186 C 1010.0312,655.49186 1026.7864,692.50992 1038.7327,709.44581 C 1050.6789,726.3817 1091.4598,765.49186 1091.4598,765.49186 L 1144.057,637.90211"
44776 - id="path7953"
44777 - sodipodi:nodetypes="czcc" />
44778 - <path
44779 - style="opacity:0.07999998;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8822);enable-background:accumulate"
44780 - d="M 730.31998,536.56864 C 730.31998,545.05392 772.86772,595.03667 772.86772,595.03667 L 785.47431,566.26713 L 730.31998,536.56864 z"
44781 - id="path7955"
44782 - sodipodi:nodetypes="cccc"
44783 - clip-path="url(#clipPath8209)"
44784 - transform="translate(276,136)" />
44785 - <g
44786 - transform="translate(450.03125,73.843964)"
44787 - style="opacity:1;display:inline;enable-background:new"
44788 - id="g7957"
44789 - clip-path="url(#clipPath3998)">
44790 - <g
44791 - transform="translate(-174.03125,62.156036)"
44792 - style="filter:url(#filter3677)"
44793 - id="g7959">
44794 - <g
44795 - id="g7961"
44796 - style="filter:url(#filter3785)">
44797 - <path
44798 - sodipodi:nodetypes="czzzzzzzzzz"
44799 - id="path7963"
44800 - d="M 425.88244,476.99186 C 436.68787,475.5132 450.62645,480.34637 470.5253,480.20614 C 490.42415,480.06591 527.97852,463.29492 552.66815,463.06328 C 577.35778,462.83164 615.41985,475.34734 631.95387,478.06328 C 648.48789,480.77922 654.80219,477.90476 659.45386,485.92043 C 664.10553,493.9361 661.38057,496.66767 649.09672,506.63472 C 636.81287,516.60177 608.30704,519.27104 583.02529,519.49186 C 557.74295,519.71268 512.644,526.57038 487.66815,523.42042 C 462.6923,520.27046 430.73059,515.59775 418.73958,505.56328 C 406.74857,495.52881 398.88874,488.83146 401.23958,481.63471 C 403.59042,474.43796 415.07701,478.47052 425.88244,476.99186 z"
44801 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44802 - <rect
44803 - y="412.60312"
44804 - x="343.6539"
44805 - height="181.01935"
44806 - width="381.83765"
44807 - id="rect7965"
44808 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44809 - </g>
44810 - <g
44811 - id="g7967"
44812 - style="filter:url(#filter3785)">
44813 - <path
44814 - sodipodi:nodetypes="czzzcc"
44815 - id="path7969"
44816 - d="M 687.14286,452.36218 C 676.68117,462.07661 600.16326,471.36732 586.42857,481.6479 C 572.69388,491.92848 571.67605,494.53616 574.28571,501.6479 C 576.89537,508.75964 580.83098,511.05362 600,510.21932 C 619.16902,509.38502 698.57143,482.5976 698.57143,488.79075 L 687.14286,452.36218 z"
44817 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44818 - transform="translate(174.03125,-62.156036)" />
44819 - <rect
44820 - y="344.82138"
44821 - x="702.86414"
44822 - height="162.63455"
44823 - width="207.8894"
44824 - id="rect7971"
44825 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44826 - </g>
44827 - </g>
44828 - <g
44829 - transform="translate(-174.03125,62.156036)"
44830 - style="opacity:0.18000004;display:inline;enable-background:new"
44831 - id="g7973">
44832 - <g
44833 - id="g7975"
44834 - style="filter:url(#filter3785)">
44835 - <path
44836 - sodipodi:nodetypes="czzzzzzzzzz"
44837 - id="path7977"
44838 - d="M 425.88244,476.99186 C 436.68787,475.5132 450.62645,480.34637 470.5253,480.20614 C 490.42415,480.06591 527.97852,463.29492 552.66815,463.06328 C 577.35778,462.83164 615.41985,475.34734 631.95387,478.06328 C 648.48789,480.77922 654.80219,477.90476 659.45386,485.92043 C 664.10553,493.9361 661.38057,496.66767 649.09672,506.63472 C 636.81287,516.60177 608.30704,519.27104 583.02529,519.49186 C 557.74295,519.71268 512.644,526.57038 487.66815,523.42042 C 462.6923,520.27046 430.73059,515.59775 418.73958,505.56328 C 406.74857,495.52881 398.88874,488.83146 401.23958,481.63471 C 403.59042,474.43796 415.07701,478.47052 425.88244,476.99186 z"
44839 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
44840 - <rect
44841 - y="412.60312"
44842 - x="343.6539"
44843 - height="181.01935"
44844 - width="381.83765"
44845 - id="rect7979"
44846 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44847 - </g>
44848 - <g
44849 - id="g7981"
44850 - style="filter:url(#filter3785)">
44851 - <path
44852 - sodipodi:nodetypes="czzzcc"
44853 - id="path7983"
44854 - d="M 687.14286,452.36218 C 676.68117,462.07661 600.16326,471.36732 586.42857,481.6479 C 572.69388,491.92848 571.67605,494.53616 574.28571,501.6479 C 576.89537,508.75964 580.83098,511.05362 600,510.21932 C 619.16902,509.38502 698.57143,482.5976 698.57143,488.79075 L 687.14286,452.36218 z"
44855 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44856 - transform="translate(174.03125,-62.156036)" />
44857 - <rect
44858 - y="344.82138"
44859 - x="702.86414"
44860 - height="162.63455"
44861 - width="207.8894"
44862 - id="rect7985"
44863 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
44864 - </g>
44865 - </g>
44866 - </g>
44867 - <path
44868 - style="opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8802);enable-background:accumulate"
44869 - d="M 582.65599,-7.4183011 L 695.79307,78.848726 L 804.68752,337.64981 L 842.87128,545.5392 L 963.07944,637.46308 C 963.07944,637.46308 950.35151,350.37773 943.28044,323.50767 C 936.20938,296.63761 793.37381,-69.643698 793.37381,-69.643698 L 582.65599,-7.4183011 z"
44870 - id="path7987"
44871 - clip-path="url(#clipPath8604)"
44872 - sodipodi:nodetypes="cccccscc"
44873 - transform="translate(276,136)" />
44874 - <path
44875 - style="opacity:1;fill:url(#linearGradient8958);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44876 - d="M 964.13839,239.599 C 964.13839,239.599 972.81571,250.49562 988.24554,251.56328 C 1003.6754,252.63094 1037.9672,211.61061 1058.4241,199.42043 C 1078.9034,187.2169 1105.4705,172.81818 1122.3527,179.06329 C 1139.2348,185.30839 1144.5105,205.49938 1150.2098,227.099 C 1155.9092,248.69861 1156.9284,288.91289 1147.5313,319.95615 C 1138.1341,350.9994 1097.028,393.0599 1082.1741,423.349 C 1067.3202,453.6381 1070.567,463.17043 1070.567,463.17043"
44877 - id="path7989"
44878 - sodipodi:nodetypes="czzzzzzc" />
44879 - <path
44880 - style="opacity:1;fill:url(#radialGradient3315);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
44881 - d="M 1124.4955,207.63471 C 1108.6027,206.74185 1074.7767,219.74054 1058.4241,231.92043 C 1041.9855,244.16433 1029.2032,256.03483 1029.1384,284.06328 C 1029.0732,312.26932 1042.2575,323.13969 1058.2455,331.02757 C 1074.2335,338.91546 1091.9317,338.14685 1110.2098,319.24186 C 1128.488,300.33686 1124.4955,207.63471 1124.4955,207.63471 z"
44882 - id="path7991"
44883 - sodipodi:nodetypes="czzzzc" />
44884 - <path
44885 - sodipodi:type="arc"
44886 - style="opacity:0.75;fill:url(#radialGradient3543);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4120);enable-background:accumulate"
44887 - id="path7993"
44888 - sodipodi:cx="385"
44889 - sodipodi:cy="237.00504"
44890 - sodipodi:rx="86.428574"
44891 - sodipodi:ry="73.928574"
44892 - d="M 471.42857,237.00504 A 86.428574,73.928574 0 1 1 298.57143,237.00504 A 86.428574,73.928574 0 1 1 471.42857,237.00504 z"
44893 - transform="matrix(0.9434749,-0.1239943,0.1440089,1.0957669,451.94827,134.5988)"
44894 - clip-path="url(#clipPath4100)" />
44895 - <path
44896 - transform="translate(450.03125,73.843964)"
44897 - style="opacity:1;fill:url(#radialGradient3915);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44898 - d="M 527.60588,407.44884 C 527.60588,407.44884 405.56444,445.85232 340.09154,417.08065 C 274.61865,388.30899 265.71429,292.36218 265.71429,292.36218 C 265.71429,292.36218 339.09587,211.85825 395.63507,208.74742 C 451.46212,205.67578 486.20893,228.89074 510.50508,274.59913 C 534.85708,320.41261 527.60588,407.44884 527.60588,407.44884 z"
44899 - id="path7995"
44900 - sodipodi:nodetypes="csczzc"
44901 - mask="url(#mask3684)" />
44902 - <path
44903 - style="opacity:1;fill:url(#linearGradient3959);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44904 - d="M 772.17411,393.349 C 772.17411,393.349 808.39165,365.96653 823.78125,357.45614 C 838.95859,349.06313 849.49553,345.849 859.6741,345.849 L 844.13839,412.81328"
44905 - id="path7997"
44906 - sodipodi:nodetypes="czcc" />
44907 - <path
44908 - sodipodi:type="arc"
44909 - style="opacity:1;fill:url(#radialGradient3933);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44910 - id="path7999"
44911 - sodipodi:cx="409.28571"
44912 - sodipodi:cy="306.64789"
44913 - sodipodi:rx="36.25"
44914 - sodipodi:ry="36.25"
44915 - d="M 445.53571,306.64789 A 36.25,36.25 0 1 1 373.03571,306.64789 A 36.25,36.25 0 1 1 445.53571,306.64789 z"
44916 - transform="translate(449.49554,74.915393)" />
44917 - <path
44918 - style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8806);enable-background:accumulate"
44919 - d="M 311.83409,415.43155 L 321.73359,537.05392 L 261.62951,673.52553 L 277.18586,848.1809 C 292.79912,910.0601 309.37131,946.84995 351.56201,965.23473 C 355.88112,928.99475 360.24362,892.86709 320.31937,742.11489 L 337.99704,672.81842 L 410.12193,534.22549 L 367.69553,375.83357 L 311.83409,415.43155 z"
44920 - id="path8001"
44921 - sodipodi:nodetypes="cccccccccc"
44922 - clip-path="url(#clipPath8616)"
44923 - transform="translate(276,136)" />
44924 - <path
44925 - style="opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8826);enable-background:accumulate"
44926 - d="M 635.21025,581.13004 C 621.06811,593.85796 674.44372,615.71019 711.57778,605.17167 C 748.71184,594.63315 816.22265,569.6073 814.81537,525.97571 C 813.40809,482.34413 738.44784,397.28228 738.44784,397.28228 L 635.21025,581.13004 z"
44927 - id="path8003"
44928 - sodipodi:nodetypes="czzcc" />
44929 - <path
44930 - sodipodi:type="arc"
44931 - style="opacity:1;fill:url(#radialGradient3991);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44932 - id="path8005"
44933 - sodipodi:cx="410"
44934 - sodipodi:cy="306.64789"
44935 - sodipodi:rx="23.214285"
44936 - sodipodi:ry="23.214285"
44937 - d="M 433.21428,306.64789 A 23.214285,23.214285 0 1 1 386.78572,306.64789 A 23.214285,23.214285 0 1 1 433.21428,306.64789 z"
44938 - transform="translate(449.67411,74.915393)" />
44939 - <path
44940 - sodipodi:type="arc"
44941 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter3981);enable-background:accumulate"
44942 - id="path8007"
44943 - sodipodi:cx="414.28571"
44944 - sodipodi:cy="303.07648"
44945 - sodipodi:rx="7.5"
44946 - sodipodi:ry="7.5"
44947 - d="M 421.78571,303.07648 A 7.5,7.5 0 1 1 406.78571,303.07648 A 7.5,7.5 0 1 1 421.78571,303.07648 z"
44948 - transform="translate(451.99554,73.486821)" />
44949 - <path
44950 - style="opacity:1;fill:url(#radialGradient4112);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44951 - d="M 789.31696,478.349 C 789.31696,478.349 796.33977,497.91759 788.24553,513.349 C 780.15129,528.78041 745.92236,552.33722 720.74554,563.349 C 695.43582,574.41891 635.27254,596.31293 618.95982,605.31328 C 602.49834,614.39571 600.74554,617.99185 600.74554,617.99185 C 600.74554,617.99185 593.59861,598.92744 629.49553,566.20615 C 665.66764,533.23401 771.52265,518.15665 789.31696,478.349 z"
44952 - id="path8009"
44953 - sodipodi:nodetypes="czzzczc" />
44954 - <g
44955 - style="opacity:1;display:inline;enable-background:new"
44956 - id="g8011"
44957 - transform="translate(780.74553,74.55825)">
44958 - <path
44959 - transform="translate(-329.81481,0)"
44960 - clip-path="url(#clipPath3999)"
44961 - sodipodi:nodetypes="czzczzzszc"
44962 - id="path8013"
44963 - d="M 179.64286,267.36218 C 157.23242,307.0651 119.02676,383.14247 110.35715,417.00504 C 101.70994,450.78014 101.58516,483.42158 110,503.43362 C 118.3602,523.31575 136.16398,539.06642 150.71428,544.86218 C 150.1179,530.48631 165.08723,501.57635 223.57143,472.36218 C 282.1977,443.07704 301.95306,445.23132 327.14285,425.21932 C 352.77291,404.85756 335.34872,345.57268 330.35714,331.29075 C 325.36556,317.00882 329.12051,327.91101 328.41112,326.19774 C 317.72184,300.38182 294.1968,271.76744 263.92857,261.6479 C 233.66034,251.52836 198.91081,256.79953 179.64286,267.36218 z"
44964 - style="opacity:1;fill:url(#radialGradient3585);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
44965 - <path
44966 - transform="matrix(0.8823874,0.4705236,-0.4705236,0.8823874,-166.62245,2.387362)"
44967 - d="M 248.28731,338.07648 A 64.715881,134.00607 0 1 1 118.85555,338.07648 A 64.715881,134.00607 0 1 1 248.28731,338.07648 z"
44968 - sodipodi:ry="134.00607"
44969 - sodipodi:rx="64.715881"
44970 - sodipodi:cy="338.07648"
44971 - sodipodi:cx="183.57143"
44972 - id="path8015"
44973 - style="opacity:1;fill:url(#radialGradient4060);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44974 - sodipodi:type="arc" />
44975 - <path
44976 - transform="matrix(0.8823874,0.4705236,-0.4705236,0.8823874,-162.19388,-18.755495)"
44977 - d="M 248.28731,338.07648 A 64.715881,134.00607 0 1 1 118.85555,338.07648 A 64.715881,134.00607 0 1 1 248.28731,338.07648 z"
44978 - sodipodi:ry="134.00607"
44979 - sodipodi:rx="64.715881"
44980 - sodipodi:cy="338.07648"
44981 - sodipodi:cx="183.57143"
44982 - id="path8017"
44983 - style="opacity:1;fill:url(#radialGradient4062);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44984 - sodipodi:type="arc" />
44985 - <path
44986 - transform="translate(-329.81481,3e-7)"
44987 - clip-path="url(#clipPath3999)"
44988 - sodipodi:nodetypes="czzczzzszc"
44989 - id="path8019"
44990 - d="M 179.64286,267.36218 C 157.23242,307.0651 119.02676,383.14247 110.35715,417.00504 C 101.70994,450.78014 101.58516,483.42158 110,503.43362 C 118.3602,523.31575 136.16398,539.06642 150.71428,544.86218 C 150.1179,530.48631 165.08723,501.57635 223.57143,472.36218 C 282.1977,443.07704 301.95306,445.23132 327.14285,425.21932 C 352.77291,404.85756 335.34872,345.57268 330.35714,331.29075 C 325.36556,317.00882 329.12051,327.91101 328.41112,326.19774 C 317.72184,300.38182 294.1968,271.76744 263.92857,261.6479 C 233.66034,251.52836 198.91081,256.79953 179.64286,267.36218 z"
44991 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3587);stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter4079);enable-background:new" />
44992 - </g>
44993 - <path
44994 - sodipodi:type="arc"
44995 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
44996 - id="path8021"
44997 - sodipodi:cx="310.71429"
44998 - sodipodi:cy="398.07648"
44999 - sodipodi:rx="19.704132"
45000 - sodipodi:ry="19.704132"
45001 - d="M 330.41843,398.07648 A 19.704132,19.704132 0 1 1 291.01016,398.07648 A 19.704132,19.704132 0 1 1 330.41843,398.07648 z"
45002 - transform="translate(452.55663,72.581273)" />
45003 - <path
45004 - sodipodi:type="arc"
45005 - style="opacity:1;fill:url(#radialGradient4056);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4082);stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4083);enable-background:accumulate"
45006 - id="path8023"
45007 - sodipodi:cx="310.71429"
45008 - sodipodi:cy="398.07648"
45009 - sodipodi:rx="19.704132"
45010 - sodipodi:ry="19.704132"
45011 - d="M 330.41843,398.07648 A 19.704132,19.704132 0 1 1 291.01016,398.07648 A 19.704132,19.704132 0 1 1 330.41843,398.07648 z"
45012 - transform="translate(450.55663,72.581273)" />
45013 - <path
45014 - sodipodi:type="arc"
45015 - style="opacity:1;fill:url(#radialGradient4119);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45016 - id="path8025"
45017 - sodipodi:cx="310.71429"
45018 - sodipodi:cy="398.07648"
45019 - sodipodi:rx="19.704132"
45020 - sodipodi:ry="19.704132"
45021 - d="M 330.41843,398.07648 A 19.704132,19.704132 0 1 1 291.01016,398.07648 A 19.704132,19.704132 0 1 1 330.41843,398.07648 z"
45022 - transform="translate(450.55663,72.581273)" />
45023 - <path
45024 - sodipodi:type="arc"
45025 - style="opacity:1;fill:url(#radialGradient4868);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4002);enable-background:accumulate"
45026 - id="path8027"
45027 - sodipodi:cx="429.56738"
45028 - sodipodi:cy="377.42877"
45029 - sodipodi:rx="72.079735"
45030 - sodipodi:ry="44.547726"
45031 - d="M 501.64712,377.42877 A 72.079735,44.547726 0 1 1 357.48765,377.42877 A 72.079735,44.547726 0 1 1 501.64712,377.42877 z"
45032 - transform="matrix(0.9969564,-7.7961675e-2,7.7961675e-2,0.9969564,436.61877,125.29509)"
45033 - inkscape:transform-center-x="-47.231976"
45034 - inkscape:transform-center-y="-3.6935079" />
45035 - <path
45036 - sodipodi:type="arc"
45037 - style="opacity:1;fill:url(#radialGradient4876);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4010);enable-background:accumulate"
45038 - id="path8029"
45039 - sodipodi:cx="437.6991"
45040 - sodipodi:cy="391.21735"
45041 - sodipodi:rx="36.611931"
45042 - sodipodi:ry="22.627417"
45043 - d="M 474.31103,391.21735 A 36.611931,22.627417 0 1 1 401.08717,391.21735 A 36.611931,22.627417 0 1 1 474.31103,391.21735 z"
45044 - transform="matrix(1.4357951,-6.9991037e-2,6.9991037e-2,1.4357951,235.18065,-63.86546)"
45045 - inkscape:transform-center-x="-20.955902"
45046 - inkscape:transform-center-y="-13.056625" />
45047 - <g
45048 - transform="translate(450.03125,73.843964)"
45049 - id="g8031"
45050 - style="opacity:1;display:inline;filter:url(#filter4053);enable-background:new">
45051 - <path
45052 - d="M 416.87499,401.82648 A 3.2142856,3.2142856 0 1 1 410.44642,401.82648 A 3.2142856,3.2142856 0 1 1 416.87499,401.82648 z"
45053 - sodipodi:ry="3.2142856"
45054 - sodipodi:rx="3.2142856"
45055 - sodipodi:cy="401.82648"
45056 - sodipodi:cx="413.66071"
45057 - id="path8033"
45058 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4484);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45059 - sodipodi:type="arc" />
45060 - <path
45061 - transform="translate(13.125009,8.1249913)"
45062 - d="M 416.87499,401.82648 A 3.2142856,3.2142856 0 1 1 410.44642,401.82648 A 3.2142856,3.2142856 0 1 1 416.87499,401.82648 z"
45063 - sodipodi:ry="3.2142856"
45064 - sodipodi:rx="3.2142856"
45065 - sodipodi:cy="401.82648"
45066 - sodipodi:cx="413.66071"
45067 - id="path8035"
45068 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4486);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45069 - sodipodi:type="arc" />
45070 - <path
45071 - transform="translate(32.946437,7.4999913)"
45072 - d="M 416.87499,401.82648 A 3.2142856,3.2142856 0 1 1 410.44642,401.82648 A 3.2142856,3.2142856 0 1 1 416.87499,401.82648 z"
45073 - sodipodi:ry="3.2142856"
45074 - sodipodi:rx="3.2142856"
45075 - sodipodi:cy="401.82648"
45076 - sodipodi:cx="413.66071"
45077 - id="path8037"
45078 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4488);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45079 - sodipodi:type="arc" />
45080 - <path
45081 - transform="translate(24.910723,-10.267866)"
45082 - d="M 416.87499,401.82648 A 3.2142856,3.2142856 0 1 1 410.44642,401.82648 A 3.2142856,3.2142856 0 1 1 416.87499,401.82648 z"
45083 - sodipodi:ry="3.2142856"
45084 - sodipodi:rx="3.2142856"
45085 - sodipodi:cy="401.82648"
45086 - sodipodi:cx="413.66071"
45087 - id="path8039"
45088 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4490);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45089 - sodipodi:type="arc" />
45090 - <path
45091 - transform="translate(47.589294,-0.6250087)"
45092 - d="M 416.87499,401.82648 A 3.2142856,3.2142856 0 1 1 410.44642,401.82648 A 3.2142856,3.2142856 0 1 1 416.87499,401.82648 z"
45093 - sodipodi:ry="3.2142856"
45094 - sodipodi:rx="3.2142856"
45095 - sodipodi:cy="401.82648"
45096 - sodipodi:cx="413.66071"
45097 - id="path8041"
45098 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4492);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45099 - sodipodi:type="arc" />
45100 - </g>
45101 - <path
45102 - style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45103 - d="M 896.20301,482.92837 C 897.1881,487.27845 900.74008,489.10785 903.58974,490.82019 C 908.05042,493.33311 910.1099,492.3423 912.74425,490.06258 C 914.3462,488.14141 923.42736,485.36393 928.33848,482.99151 C 932.66809,481.5326 937.24178,477.63278 941.723,474.65775 C 945.11814,473.03051 947.06964,475.01239 949.55168,475.6679 C 952.4958,476.38451 953.96285,477.83965 955.6126,479.20344 C 958.00876,480.37863 954.6847,482.34657 958.8956,483.49658 C 960.08651,483.71452 961.31255,484.07303 962.17859,482.99151"
45104 - id="path8043"
45105 - sodipodi:nodetypes="ccccccccc" />
45106 - <path
45107 - style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45108 - d="M 910.85021,475.35223 C 913.16515,475.32025 914.02799,475.99476 916.34292,474.53148 C 919.79856,471.45035 921.74546,471.38671 924.29787,470.11206 C 927.32444,468.79683 930.83357,478.26375 934.3994,479.96105 C 936.79449,479.13963 935.68854,481.75484 935.85149,482.6127 C 935.90862,485.25954 938.65843,486.29076 940.20777,488.04227 C 943.52381,490.29776 947.583,494.33773 951.31945,493.34557 C 957.7647,490.4145 961.59867,492.06411 967.60816,485.95883 C 968.31221,484.77749 967.02391,479.06423 970.70175,478.76149 C 973.22574,479.01487 974.86842,478.81164 976.76267,479.32971 C 982.20367,481.4469 984.50045,485.77971 991.47301,487.28466 C 997.65591,488.25105 999.08565,491.07892 1005.3626,492.33542"
45109 - id="path8045"
45110 - sodipodi:nodetypes="cccccccccccc" />
45111 - <path
45112 - style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45113 - d="M 876.98133,483.52197 C 879.37991,482.72817 883.08746,487.71407 885.15446,490.56765 C 885.74727,493.24717 886.30823,496.0541 885.91207,502.68948 C 886.6972,505.10702 888.59256,505.72043 890.7103,505.97248 C 893.82775,505.4357 896.58699,504.64818 898.0339,502.94202 C 899.9055,501.00035 903.34643,505.33596 906.11512,506.98263 C 909.72521,508.89472 913.8889,508.96149 917.98442,509.25547 C 919.688,509.02483 920.35482,513.77062 921.26741,517.3367 C 921.65155,521.71476 920.38197,524.23239 919.49965,527.18568 C 919.20535,529.68223 922.48815,530.71542 925.8131,531.73137 C 928.99554,532.47261 932.35734,533.39321 934.90447,533.49914 C 940.04633,534.37405 942.99321,536.18966 947.0263,537.53975 C 949.26544,538.3563 950.28649,539.78191 951.57199,541.07528"
45114 - id="path8047"
45115 - sodipodi:nodetypes="ccccccccccccc" />
45116 - <path
45117 - style="opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter8814);enable-background:new"
45118 - d="M 332,187.69519 C 332,187.69519 389.5,162.19519 389.5,159.69519 C 389.5,157.19519 395,107.69519 395,107.69519 C 395,107.69519 486,59.195189 486.5,57.195189 C 487,55.195189 572.5,-4.8048114 572.5,-4.8048114 L 386.5,17.195189 L 311,123.19519 L 332,187.69519 z"
45119 - id="path8049"
45120 - clip-path="url(#clipPath8514)"
45121 - transform="translate(276,136)" />
45122 - <path
45123 - style="opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45124 - d="M 1697.2846,722.5514 C 1697.2846,722.5514 1581.3191,796.0905 1574.2481,800.33314 C 1567.177,804.57578 1343.7312,937.51186 1343.7312,937.51186 L 1347.9739,977.10984 L 1564.3486,876.70067 L 1681.7283,774.8773 L 1697.2846,722.5514 z"
45125 - id="path8051" />
45126 - <path
45127 - style="opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8810);enable-background:accumulate"
45128 - d="M 528.91587,556.85291 C 523.25902,555.4387 347.89654,631.80623 347.89654,631.80623 L 313.95541,812.82557 L 365.05087,1006.7738 L 622.25397,1074.4551 C 622.25397,1074.4551 828.72915,1227.1901 834.386,1222.9475 C 840.04286,1218.7049 1002.6774,1029.2002 1002.6774,1029.2002 L 842.87128,845.35248 L 796.20224,667.16157 L 528.91587,556.85291 z"
45129 - id="path8053"
45130 - clip-path="url(#clipPath8610)"
45131 - sodipodi:nodetypes="cccccscccc"
45132 - transform="translate(276,136)" />
45133 - <path
45134 - style="opacity:1;fill:#0c0c0c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45135 - d="M 1097.6433,613.88997 C 1097.6433,613.88997 1120.2628,607.38316 1133.386,608.01724 C 1146.5093,608.65133 1164.0276,609.95586 1177.0949,620.20343 C 1190.1622,630.45099 1202.1626,647.3435 1211.2073,678.57308 C 1220.2519,709.80266 1212.9056,777.82509 1205.0312,821.92043 C 1197.1569,866.01577 1176.7661,928.03341 1160.0312,961.92043 C 1143.2964,995.80745 1110.2335,1039.4156 1099.4618,1051.7966 C 1088.0976,1064.8586 1043.2559,1088.2228 1020.0312,1094.0633 C 1025.3346,1083.4567 1068.931,1043.4744 1055.0312,1033.349 C 1041.0123,1023.1367 1009.2712,1079.3314 970.7381,1062.3822 C 992.12041,1049.2501 1012.5175,1011.1961 1004.7787,995.78772 C 996.93846,980.17733 974.07378,1044.5453 911.24317,1032.8006 C 941.29521,1005.2739 966.65023,961.89659 952.50587,949.8209 C 938.09071,937.51403 892.04412,1004.1141 892.04412,1004.1141 C 892.04412,1004.1141 889.22222,962.41287 905.81732,935.50673 C 922.45667,908.52886 985.47029,853.89146 1005.3704,823.80331 C 1025.2706,793.71517 1038.983,757.79429 1047.5059,731.28537 C 1056.0287,704.77645 1063.3068,654.18583 1063.3068,654.18583"
45136 - id="path8055"
45137 - sodipodi:nodetypes="czzzzzzczczczczzzc" />
45138 - <path
45139 - style="opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8818);enable-background:accumulate"
45140 - d="M 770.74639,609.17881 L 719.8347,706.75955 L 639.93163,817.77531 L 674.57987,889.19309 L 717.00628,968.38906 L 789.13117,923.13422 L 803.27331,730.80117 L 824.48651,592.20825 L 810.34437,502.05213 L 770.74639,609.17881 z"
45141 - id="path8057"
45142 - clip-path="url(#clipPath8622)"
45143 - sodipodi:nodetypes="cccccccccc"
45144 - transform="translate(276,136)" />
45145 - <path
45146 - style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8810);enable-background:accumulate"
45147 - d="M 295,846.19519 L 301.64488,777.27234 C 301.64488,777.27234 391.96439,866.27691 464,900.19519 C 536.03561,934.11347 772,962.19519 772,962.19519 L 926,936.19519 L 890,1098.1952 L 604,1124.1952 L 306,1035.1952 L 295,846.19519 z"
45148 - id="path8059"
45149 - clip-path="url(#clipPath8906)"
45150 - sodipodi:nodetypes="cczcccccc"
45151 - transform="translate(276,136)" />
45152 - <path
45153 - transform="translate(450.03125,73.843964)"
45154 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter3587);enable-background:new"
45155 - d="M 405.79629,845.99023 L 480.74961,911.04406 L 483.24924,927.92446 L 502.6526,938.08337 L 509.14464,961.13446 L 540.85369,952.76336 L 555.70293,1000.8466 C 567.95945,1013.5745 645.49637,887.7369 611.56436,1039.0304 L 550.75318,1055.2939 L 461.55026,960.60104 L 398.72523,906.80141 L 405.79629,845.99023 z"
45156 - id="path8061"
45157 - sodipodi:nodetypes="cccccccccccc"
45158 - clip-path="url(#clipPath3602)" />
45159 - <path
45160 - style="opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
45161 - d="M 1159.317,918.349 C 1213.6027,916.92043 1285.352,903.29701 1329.317,891.56328 C 1373.3697,879.80614 1455.2033,855.21604 1504.674,833.70614 C 1554.0133,812.25342 1618.2778,774.42454 1658.9599,741.56329 C 1699.468,708.8426 1711.3498,685.74348 1719.6741,707.99186 C 1728.0432,730.35965 1703.2672,764.31748 1681.817,789.06329 C 1660.2128,813.98669 1629.0856,841.76862 1582.8883,878.349 C 1536.691,914.92938 1426.8058,979.93363 1370.0312,1006.9204 C 1312.9652,1034.0458 1241.8279,1065.1589 1197.8884,1079.4205 C 1153.9489,1093.6821 1066.4598,1110.4919 1066.4598,1110.4919 L 1159.317,918.349 z"
45162 - id="path8063"
45163 - sodipodi:nodetypes="czzzzzzzzcc" />
45164 - <path
45165 - transform="translate(450.03125,73.843964)"
45166 - style="opacity:0.5;fill:url(#linearGradient3666);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter3779);enable-background:accumulate"
45167 - d="M 1241.5965,652.95007 C 1241.5965,652.95007 1176.875,707.28713 1095.9326,751.94501 C 1013.9082,797.19985 811.67556,845.28311 811.67556,845.28311 C 811.67556,845.28311 796.57419,866.33507 856.93045,873.56739 C 917.28671,880.79971 1081.0124,820.2667 1135.5306,777.40085 C 1190.0488,734.535 1255.7387,665.67799 1255.7387,665.67799 L 1241.5965,652.95007 z"
45168 - id="path8065"
45169 - sodipodi:nodetypes="czczzcc"
45170 - clip-path="url(#clipPath3992)" />
45171 - <g
45172 - transform="translate(450.03125,73.843964)"
45173 - style="opacity:1;display:inline;enable-background:new"
45174 - id="g8067"
45175 - clip-path="url(#clipPath3986)">
45176 - <g
45177 - transform="translate(-174.03125,62.156036)"
45178 - style="filter:url(#filter3677)"
45179 - id="g8069">
45180 - <g
45181 - style="filter:url(#filter3785)"
45182 - id="g8071">
45183 - <path
45184 - sodipodi:nodetypes="czzccccc"
45185 - id="path8073"
45186 - d="M 1094.2857,725.93361 C 1094.2857,725.93361 1093.9896,752.09452 1098.9285,763.79076 C 1103.8674,775.487 1118.9666,790.27741 1127.5,795.21933 C 1136.0334,800.16125 1146.4286,803.79075 1146.4286,803.79075 L 1264.2857,688.79075 L 1282.1429,613.07647 L 1185.7143,651.6479 L 1094.2857,725.93361 z"
45187 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45188 - transform="translate(174.03125,-62.156036)" />
45189 - <rect
45190 - y="486.14224"
45191 - x="1197.8389"
45192 - height="309.71277"
45193 - width="333.75412"
45194 - id="rect8075"
45195 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45196 - </g>
45197 - </g>
45198 - <g
45199 - transform="translate(-174.03125,62.156036)"
45200 - style="opacity:0.18000004;display:inline;enable-background:new"
45201 - id="g8077">
45202 - <g
45203 - style="filter:url(#filter3785)"
45204 - id="g8079">
45205 - <path
45206 - sodipodi:nodetypes="czzccccc"
45207 - id="path8081"
45208 - d="M 1094.2857,725.93361 C 1094.2857,725.93361 1093.9896,752.09452 1098.9285,763.79076 C 1103.8674,775.487 1118.9666,790.27741 1127.5,795.21933 C 1136.0334,800.16125 1146.4286,803.79075 1146.4286,803.79075 L 1264.2857,688.79075 L 1282.1429,613.07647 L 1185.7143,651.6479 L 1094.2857,725.93361 z"
45209 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45210 - transform="translate(174.03125,-62.156036)" />
45211 - <rect
45212 - y="486.14224"
45213 - x="1197.8389"
45214 - height="309.71277"
45215 - width="333.75412"
45216 - id="rect8083"
45217 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45218 - </g>
45219 - </g>
45220 - </g>
45221 - <path
45222 - transform="translate(450.03125,73.843964)"
45223 - style="opacity:0.83300003;fill:#050505;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter8225);enable-background:accumulate"
45224 - d="M 1264.1875,605 C 1259.6964,605.73268 1256.0305,608.45509 1252.25,611.40625 C 1242.1687,619.27601 1224.0805,645.83149 1204.2188,661.875 C 1164.3514,694.07816 1100.2228,731.85201 1051.6562,752.96875 C 1003.0422,774.10613 921.11498,798.78676 877.34375,810.46875 C 833.94554,822.05121 762.29972,835.59982 709.09375,837 L 704.53125,837.125 L 702.53125,841.25 L 609.6875,1033.375 L 603.1875,1046.8438 L 617.84375,1044 C 617.84375,1044 705.11343,1027.3486 750.1875,1012.7188 C 794.9127,998.20213 865.97836,967.05197 923.21875,939.84375 C 980.82199,912.46306 1090.1551,847.86412 1137.5,810.375 C 1183.8608,773.66518 1215.3049,745.65818 1237.4375,720.125 C 1248.3386,707.549 1260.1823,692.59356 1268.4688,677.375 C 1276.7552,662.15644 1287.6285,633.15692 1282.1562,618.53125 C 1280.9385,615.27651 1279.6048,612.46995 1277.5625,610.03125 C 1275.5202,607.59255 1269.0878,608.45926 1269,605 C 1268.7902,596.73518 1265.6845,604.75577 1264.1875,605 z M 1266.3438,620.21875 C 1266.7586,620.80449 1267.3749,621.77641 1268.125,623.78125 C 1271.0218,631.52338 1266.6843,655.68 1259.3125,669.21875 C 1251.9407,682.7575 1236.6741,698.14269 1226.125,710.3125 C 1205.0496,734.62606 1174.2213,762.17406 1128.1875,798.625 C 1083.1379,834.29659 972.72717,899.71959 916.78125,926.3125 C 859.88952,953.35499 788.68509,984.4309 745.53125,998.4375 C 709.16634,1010.2406 649.68654,1022.2713 629.8125,1026.2188 L 714.09375,851.75 C 768.80066,849.7007 837.88634,836.53365 881.21875,824.96875 C 925.55297,813.1365 1007.2974,788.63242 1057.625,766.75 C 1107.737,744.96129 1170.1594,705.58184 1211.6562,672.0625 C 1232.3026,655.38529 1253.4011,629.51662 1261.4688,623.21875 C 1263.9058,621.31633 1265.5494,620.58295 1266.3438,620.21875 z"
45225 - id="path8085"
45226 - clip-path="url(#clipPath3722)"
45227 - sodipodi:nodetypes="cssssccccccssssssssccssssssccssssc" />
45228 - <g
45229 - style="opacity:1;display:inline;enable-background:new"
45230 - id="g8087"
45231 - mask="url(#mask7704)"
45232 - transform="matrix(0.9934486,0.1142802,-0.1142802,0.9934486,-9.24324,588.09054)"
45233 - inkscape:transform-center-x="-185.09603"
45234 - inkscape:transform-center-y="-12.859654">
45235 - <path
45236 - transform="translate(8.0045714e-2,-3.125e-2)"
45237 - style="fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45238 - d="M 1111.4062,-285.9375 L 1107.4688,-284.0625 C 1107.4283,-284.05228 1107.3692,-284.04201 1107.3438,-284.03125 C 1106.925,-283.8184 1107.1791,-283.93067 1106.6875,-283.71875 C 1106.2014,-283.50919 1104.9499,-283.13456 1102.5938,-282.25 C 1099.2626,-280.99942 1096.7895,-280.10016 1095.5938,-279.1875 C 1094.0576,-279.16623 1091.8733,-278.95419 1089.9375,-278.46875 C 1086.956,-277.72108 1085.0823,-277.29474 1083.1875,-276.875 C 1081.2927,-276.45527 1081.512,-276.23281 1080.3125,-276 C 1079.0159,-275.74833 1078.5911,-276.00899 1074.875,-275.21875 C 1071.3851,-274.4766 1065.9802,-273.28768 1064.7188,-272.53125 C 1063.1348,-272.71203 1060.8513,-272.85303 1058.875,-272.5625 C 1055.8346,-272.11554 1053.9588,-271.88974 1052.0312,-271.65625 C 1051.3758,-271.57687 1050.9902,-271.45547 1050.6875,-271.375 C 1050.2613,-271.24334 1050.0017,-271.11498 1049.3125,-271.03125 C 1048.0009,-270.87188 1047.5503,-271.18808 1043.7812,-270.75 C 1040.2273,-270.33691 1034.7758,-269.47718 1033.5312,-268.8125 C 1031.9322,-269.10979 1029.6735,-269.34669 1027.6875,-269.15625 C 1024.6287,-268.86293 1022.7155,-268.67226 1020.7812,-268.5 C 1018.847,-268.32773 1019.0926,-268.07763 1017.875,-267.96875 C 1016.5588,-267.85105 1016.1152,-268.13238 1012.3438,-267.71875 C 1008.8017,-267.3303 1003.3359,-266.50948 1002.0625,-265.84375 C 1000.4636,-266.13844 998.1753,-266.35076 996.1875,-266.15625 C 993.12921,-265.857 991.2463,-265.67601 989.3125,-265.5 C 988.65501,-265.44015 988.27245,-265.32144 987.96875,-265.25 C 987.54105,-265.13104 987.28525,-265.03193 986.59375,-264.96875 C 985.27775,-264.84849 984.834,-265.16363 981.0625,-264.75 C 977.50631,-264.35998 972.0569,-263.51084 970.8125,-262.84375 C 969.21381,-263.13793 966.95265,-263.36747 964.96875,-263.15625 C 961.91305,-262.83092 959.9947,-262.63001 958.0625,-262.4375 C 956.13031,-262.24499 956.37275,-261.99662 955.15625,-261.875 C 953.84137,-261.74353 953.3932,-262.03954 949.625,-261.59375 C 946.08611,-261.17509 940.6473,-260.30158 939.375,-259.625 C 937.77741,-259.90604 935.51505,-260.04543 933.53125,-259.8125 C 930.47927,-259.45413 928.58625,-259.24464 926.65625,-259.03125 C 926.00007,-258.95869 925.6156,-258.85856 925.3125,-258.78125 C 924.88571,-258.65402 924.6276,-258.51405 923.9375,-258.4375 C 922.62411,-258.29181 922.17015,-258.61152 918.40625,-258.125 C 914.85737,-257.66624 909.4276,-256.70598 908.1875,-256 C 906.59441,-256.24424 904.3537,-256.38135 902.375,-256.125 C 899.32741,-255.73018 897.4243,-255.47655 895.5,-255.21875 C 893.57571,-254.96096 893.7739,-254.72522 892.5625,-254.5625 C 891.25301,-254.3866 890.8153,-254.66688 887.0625,-254.09375 C 883.53821,-253.55551 878.1393,-252.39458 876.875,-251.65625 C 875.28751,-251.85979 873.0295,-251.91098 871.0625,-251.5625 C 868.03631,-251.02638 866.1636,-250.70081 864.25,-250.375 C 863.59941,-250.26423 863.2363,-250.10406 862.9375,-250 C 862.51681,-249.83512 862.27405,-249.6687 861.59375,-249.53125 C 860.29905,-249.26966 859.86665,-249.53745 856.15625,-248.71875 C 852.65777,-247.9468 847.31035,-246.33582 846.09375,-245.5 C 844.53085,-245.57745 842.33625,-245.41472 840.40625,-244.90625 C 837.43387,-244.12312 835.58855,-243.67416 833.71875,-243.15625 C 831.84875,-242.63835 832.0521,-242.38897 830.875,-242.0625 C 829.60251,-241.7096 829.17795,-241.95541 825.53125,-240.875 C 822.10657,-239.86037 816.88185,-237.94183 815.65625,-237.03125 C 814.11747,-237.01851 811.93645,-236.75903 810.03125,-236.15625 C 807.10027,-235.22891 805.2809,-234.69783 803.4375,-234.09375 C 802.81071,-233.88837 802.44585,-233.70117 802.15625,-233.5625 C 801.74867,-233.34889 801.50295,-233.15375 800.84375,-232.9375 C 799.58925,-232.52596 799.1576,-232.74846 795.5625,-231.5 C 792.17261,-230.32283 786.96755,-228.2863 785.78125,-227.34375 C 784.25737,-227.28408 782.1312,-226.94888 780.25,-226.28125 C 777.35261,-225.25296 775.55095,-224.60577 773.71875,-223.96875 C 771.88655,-223.33174 772.0909,-223.12021 770.9375,-222.71875 C 769.69071,-222.28479 769.27395,-222.51903 765.71875,-221.15625 C 762.38005,-219.87645 757.23165,-217.6737 756.03125,-216.6875 C 754.52407,-216.57981 752.39555,-216.1887 750.53125,-215.46875 C 747.66307,-214.36115 745.90735,-213.68719 744.09375,-213 C 743.47705,-212.76637 743.0973,-212.55797 742.8125,-212.40625 C 742.81251,-212.40625 742.8125,-212.37673 742.8125,-212.375 L 734.8125,-209.1875 L 722.3366,-205.69561 L 730.26626,-186.41789 C 729.67463,-184.44432 742.8125,-191.15625 742.8125,-191.15625 C 743.03891,-191.30093 743.26145,-191.42886 743.53125,-191.53125 C 744.61177,-191.94123 745.70285,-191.74702 749.53125,-193.21875 C 753.35977,-194.69049 754.7553,-195.22373 755.4375,-195.625 C 756.11711,-196.02478 757.04925,-196.50437 757.65625,-197.15625 C 759.48317,-197.294 761.22705,-197.64948 762.59375,-198.15625 C 765.56175,-199.25677 767.4691,-199.96244 769.375,-200.625 C 771.28081,-201.28754 771.72915,-202.03987 772.78125,-202.40625 C 773.87287,-202.78636 774.97635,-202.57163 778.84375,-203.9375 C 782.71115,-205.30336 784.1269,-205.76458 784.8125,-206.15625 C 785.51361,-206.55677 786.5133,-207.08923 787.125,-207.75 C 789.09581,-207.80466 790.94195,-208.13463 792.40625,-208.625 C 795.40777,-209.63008 797.3324,-210.24671 799.25,-210.875 C 800.78861,-211.3791 801.42415,-211.92177 802.15625,-212.3125 C 802.38647,-212.44681 802.63215,-212.56623 802.90625,-212.65625 C 804.00457,-213.01673 805.0877,-212.73762 809,-213.96875 C 812.91231,-215.19988 814.366,-215.6417 815.0625,-216 C 815.75641,-216.35697 816.6926,-216.79261 817.3125,-217.40625 C 819.17771,-217.42891 820.94835,-217.67308 822.34375,-218.09375 C 825.37415,-219.00729 827.33615,-219.52385 829.28125,-220.0625 C 831.22637,-220.60114 831.70745,-221.32702 832.78125,-221.625 C 833.89527,-221.93415 835.00125,-221.61761 838.96875,-222.65625 C 842.93625,-223.69488 844.38625,-224.08898 845.09375,-224.40625 C 845.82855,-224.73584 846.90765,-225.15997 847.53125,-225.78125 C 849.52907,-225.66525 851.3887,-225.80134 852.875,-226.15625 C 855.95311,-226.89125 857.9584,-227.25719 859.9375,-227.65625 C 861.52541,-227.97643 862.1818,-228.4468 862.9375,-228.75 C 863.17501,-228.8568 863.4044,-228.94276 863.6875,-229 C 864.82091,-229.22919 865.99215,-228.79107 870.03125,-229.5 C 874.07067,-230.20893 875.5315,-230.42709 876.25,-230.6875 C 876.96581,-230.94694 877.95435,-231.25474 878.59375,-231.78125 C 880.51795,-231.54176 882.34165,-231.55672 883.78125,-231.78125 C 886.90767,-232.26887 888.9358,-232.48192 890.9375,-232.75 C 892.93921,-233.01807 893.42625,-233.69514 894.53125,-233.84375 C 895.67767,-233.99793 896.8071,-233.54218 900.875,-234.0625 C 904.94281,-234.58282 906.43525,-234.75823 907.15625,-235 C 907.89337,-235.24714 908.95435,-235.58623 909.59375,-236.125 C 911.64375,-235.78947 913.56745,-235.72704 915.09375,-235.90625 C 918.23595,-236.27521 920.27375,-236.46561 922.28125,-236.6875 C 923.89207,-236.86552 924.5459,-237.2957 925.3125,-237.53125 C 925.55341,-237.61677 925.80655,-237.68685 926.09375,-237.71875 C 927.24345,-237.84647 928.39505,-237.3721 932.46875,-237.84375 C 936.54245,-238.3154 938.0278,-238.45435 938.75,-238.6875 C 939.46941,-238.91977 940.45025,-239.16096 941.09375,-239.65625 C 943.03005,-239.32279 944.8638,-239.25201 946.3125,-239.40625 C 949.45851,-239.7412 951.49,-239.92484 953.5,-240.125 C 955.50991,-240.32514 955.98415,-240.95139 957.09375,-241.0625 C 958.24485,-241.17778 959.39025,-240.69744 963.46875,-241.125 C 967.54725,-241.55256 969.05765,-241.68709 969.78125,-241.90625 C 970.52047,-242.13011 971.57685,-242.4195 972.21875,-242.9375 C 974.27575,-242.53883 976.2206,-242.4441 977.75,-242.59375 C 980.89871,-242.90185 982.9258,-243.067 984.9375,-243.25 C 986.55151,-243.39682 987.20055,-243.81055 987.96875,-244.03125 C 988.21005,-244.11211 988.4623,-244.16116 988.75,-244.1875 C 989.90211,-244.29295 991.0429,-243.79475 995.125,-244.1875 C 999.20711,-244.58025 1000.7139,-244.71834 1001.4375,-244.9375 C 1002.1584,-245.15583 1003.1371,-245.3852 1003.7812,-245.875 C 1005.7193,-245.52501 1007.5501,-245.42062 1009,-245.5625 C 1012.1487,-245.8706 1014.1758,-246.03575 1016.1875,-246.21875 C 1018.1991,-246.40174 1018.7017,-247.05677 1019.8125,-247.15625 C 1020.9648,-247.25948 1022.1047,-246.77142 1026.1875,-247.15625 C 1030.2704,-247.54107 1031.7762,-247.65725 1032.5,-247.875 C 1033.2393,-248.09743 1034.2956,-248.38949 1034.9375,-248.90625 C 1036.9949,-248.50448 1038.9404,-248.40292 1040.4688,-248.5625 C 1043.6153,-248.89102 1045.6458,-249.0852 1047.6562,-249.28125 C 1049.2692,-249.43854 1049.9219,-249.91273 1050.6875,-250.15625 C 1050.9282,-250.24429 1051.1507,-250.27762 1051.4375,-250.3125 C 1052.5858,-250.4522 1053.7542,-249.97259 1057.8125,-250.5625 C 1061.8708,-251.15242 1063.3743,-251.33964 1064.0938,-251.59375 C 1064.8104,-251.84691 1065.7684,-252.15182 1066.4062,-252.6875 C 1068.3259,-252.47556 1070.1262,-252.53609 1071.5625,-252.78125 C 1074.6816,-253.31365 1076.6741,-253.70986 1078.6562,-254.09375 C 1080.6383,-254.47762 1081.1305,-255.1334 1082.2188,-255.375 C 1083.3475,-255.62566 1084.489,-255.25871 1088.4688,-256.25 C 1092.4483,-257.24127 1093.8983,-257.6693 1094.5938,-258.03125 C 1095.316,-258.40725 1096.3555,-258.90183 1096.9688,-259.5625 C 1098.9317,-259.57454 1100.7625,-259.85355 1102.1875,-260.40625 C 1105.1387,-261.55085 1107.0607,-262.27567 1108.875,-263.15625 C 1110.3307,-263.86277 1111.1941,-264.85828 1111.4062,-265.15625 C 1111.6185,-265.4542 1111.5051,-265.8848 1111.5312,-265.90625 C 1111.5742,-265.94148 1111.8716,-266.00028 1112.0312,-266.34375 C 1112.8902,-268.19082 1114.3544,-271.97139 1114.4688,-272.65625 C 1114.5825,-273.33839 1114.6368,-274.00902 1114.6875,-274.40625 C 1114.7169,-274.63575 1114.5404,-275.28515 1114.5625,-275.34375 C 1114.5934,-275.42579 1114.8508,-275.59432 1114.9062,-275.84375 C 1115.1725,-277.04206 1114.9953,-278.05111 1114.7812,-279.46875 C 1114.5673,-280.88638 1113.8096,-284.08338 1113.1562,-284.9375 C 1112.4973,-285.79922 1111.9314,-285.94801 1111.4062,-285.9375 z"
45239 - id="path8089"
45240 - sodipodi:nodetypes="ccssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssscccccssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssssssssc" />
45241 - <g
45242 - clip-path="url(#clipPath7421)"
45243 - id="g8091">
45244 - <path
45245 - id="path8093"
45246 - d="M 1107.409,-284.04961 C 1106.9903,-283.83678 1107.2534,-283.95572 1106.7618,-283.7438 C 1106.2757,-283.53426 1105.0384,-283.16941 1102.6822,-282.28485 C 1099.3511,-281.03428 1096.852,-280.13141 1095.6563,-279.21875 C 1094.1202,-279.19749 1091.9358,-278.98544 1090,-278.5 C 1087.0185,-277.75234 1085.1448,-277.32599 1083.25,-276.90625 C 1081.3552,-276.48653 1081.5745,-276.26406 1080.375,-276.03125 C 1079.0784,-275.77959 1078.6536,-276.04024 1074.9375,-275.25 C 1071.4476,-274.50786 1066.0427,-273.31893 1064.7813,-272.5625 C 1063.1974,-272.74329 1060.9138,-272.88428 1058.9375,-272.59375 C 1055.8971,-272.1468 1054.0213,-271.92099 1052.0938,-271.6875 C 1051.4384,-271.60813 1051.0527,-271.48672 1050.75,-271.40625 C 1050.3238,-271.2746 1050.0642,-271.14623 1049.375,-271.0625 C 1048.0634,-270.90314 1047.6128,-271.21933 1043.8438,-270.78125 C 1040.2899,-270.36817 1034.8384,-269.50843 1033.5938,-268.84375 C 1031.9948,-269.14105 1029.736,-269.37794 1027.75,-269.1875 C 1024.6912,-268.89419 1022.778,-268.70351 1020.8438,-268.53125 C 1018.9095,-268.35899 1019.1551,-268.10888 1017.9375,-268 C 1016.6213,-267.88231 1016.1777,-268.16363 1012.4063,-267.75 C 1008.8644,-267.36156 1003.3984,-266.54073 1002.125,-265.875 C 1000.5261,-266.1697 998.23783,-266.38201 996.25,-266.1875 C 993.19176,-265.88826 991.30887,-265.70726 989.375,-265.53125 C 988.71751,-265.47141 988.33496,-265.35269 988.03125,-265.28125 C 987.6036,-265.1623 987.34774,-265.06318 986.65625,-265 C 985.34029,-264.87975 984.89649,-265.19488 981.125,-264.78125 C 977.56886,-264.39124 972.11946,-263.54209 970.875,-262.875 C 969.27637,-263.16919 967.01516,-263.39872 965.03125,-263.1875 C 961.97565,-262.86218 960.05721,-262.66126 958.125,-262.46875 C 956.19279,-262.27625 956.43513,-262.02787 955.21875,-261.90625 C 953.90387,-261.77479 953.45577,-262.07079 949.6875,-261.625 C 946.14863,-261.20635 940.70982,-260.33283 939.4375,-259.65625 C 937.83995,-259.9373 935.57754,-260.07668 933.59375,-259.84375 C 930.54177,-259.48539 928.64867,-259.27589 926.71875,-259.0625 C 926.06255,-258.98995 925.67809,-258.88981 925.375,-258.8125 C 924.94823,-258.68528 924.69009,-258.5453 924,-258.46875 C 922.68667,-258.32307 922.23254,-258.64277 918.46875,-258.15625 C 914.91986,-257.6975 909.49012,-256.73723 908.25,-256.03125 C 906.65695,-256.27549 904.41619,-256.4126 902.4375,-256.15625 C 899.38991,-255.76144 897.48679,-255.5078 895.5625,-255.25 C 893.63822,-254.99221 893.83639,-254.75647 892.625,-254.59375 C 891.31554,-254.41785 890.87781,-254.69813 887.125,-254.125 C 883.60071,-253.58676 878.20185,-252.42583 876.9375,-251.6875 C 875.35,-251.89104 873.092,-251.94223 871.125,-251.59375 C 868.09883,-251.05763 866.22611,-250.73206 864.3125,-250.40625 C 863.66189,-250.29548 863.29879,-250.13531 863,-250.03125 C 862.57933,-249.86637 862.33655,-249.69995 861.65625,-249.5625 C 860.3616,-249.30091 859.92913,-249.5687 856.21875,-248.75 C 852.72022,-247.97805 847.3728,-246.36707 846.15625,-245.53125 C 844.59347,-245.6087 842.39867,-245.44597 840.46875,-244.9375 C 837.49631,-244.15437 835.65114,-243.70541 833.78125,-243.1875 C 831.91137,-242.6696 832.11465,-242.42022 830.9375,-242.09375 C 829.66504,-241.74085 829.24047,-241.98666 825.59375,-240.90625 C 822.16905,-239.89162 816.94431,-237.97308 815.71875,-237.0625 C 814.17992,-237.04976 811.99892,-236.79028 810.09375,-236.1875 C 807.16269,-235.26016 805.34344,-234.72908 803.5,-234.125 C 802.87324,-233.91962 802.50827,-233.73242 802.21875,-233.59375 C 801.81112,-233.38014 801.56541,-233.185 800.90625,-232.96875 C 799.65179,-232.55721 799.22014,-232.77971 795.625,-231.53125 C 792.23515,-230.35408 787.03002,-228.31755 785.84375,-227.375 C 784.31986,-227.31533 782.1937,-226.98013 780.3125,-226.3125 C 777.41511,-225.28421 775.61342,-224.63702 773.78125,-224 C 771.94908,-223.36299 772.1534,-223.15146 771,-222.75 C 769.75322,-222.31604 769.33639,-222.55028 765.78125,-221.1875 C 762.44258,-219.9077 757.2941,-217.70495 756.09375,-216.71875 C 754.58657,-216.61106 752.45806,-216.21995 750.59375,-215.5 C 747.72557,-214.3924 745.96995,-213.71844 744.15625,-213.03125 C 743.53959,-212.79762 743.15984,-212.58922 742.875,-212.4375 C 742.875,-212.4375 742.875,-211.34375 742.875,-211.34375 C 742.98678,-211.56611 743.26099,-212.16118 743.78125,-212.4375 C 744.47922,-212.80822 748.59488,-214.43087 750.59375,-215.15625 C 752.25061,-215.7575 754.74764,-216.48493 756.5625,-216.46875 C 756.86412,-216.46606 757.15012,-216.41785 757.40625,-216.375 C 759.24874,-216.06675 764.875,-214.8125 764.875,-214.8125 C 764.87499,-214.8125 758.64151,-216.45925 757.84375,-216.65625 C 757.65296,-216.70336 757.30803,-216.72497 756.875,-216.71875 C 758.02046,-217.58846 761.636,-219.11226 764.21875,-220.15625 C 767.05697,-221.30352 767.33556,-221.40807 769.28125,-221.8125 C 771.28955,-222.22994 772.4375,-222.3125 772.4375,-222.3125 C 772.4375,-222.31249 772.35514,-222.91364 773.40625,-223.4375 C 774.11135,-223.78891 778.29327,-225.3299 780.3125,-226 C 782.2644,-226.64773 785.3699,-227.3585 787.1875,-227 C 789.05073,-226.6325 794.71875,-225.1875 794.71875,-225.1875 C 794.71876,-225.1875 788.43175,-227.05861 787.625,-227.28125 C 787.43208,-227.3345 787.09416,-227.36729 786.65625,-227.375 C 787.81459,-228.20788 791.45069,-229.57032 794.0625,-230.53125 C 796.93266,-231.58726 797.22984,-231.69305 799.1875,-232.0625 C 801.04099,-232.41229 802.04634,-232.48798 802.21875,-232.5 C 802.33235,-232.71724 802.5962,-233.31002 803.125,-233.5625 C 803.83444,-233.90124 808.05107,-235.27525 810.09375,-235.875 C 811.78692,-236.37211 814.33452,-236.91177 816.1875,-236.78125 C 816.49545,-236.75957 816.80099,-236.68399 817.0625,-236.625 C 818.94368,-236.20068 824.65625,-234.59375 824.65625,-234.59375 C 824.65626,-234.59375 818.31451,-236.659 817.5,-236.90625 C 817.30521,-236.96539 816.94212,-237.01019 816.5,-237.03125 C 817.66949,-237.8288 821.36302,-239.08747 824,-239.96875 C 826.89781,-240.93722 827.23301,-240.97207 829.21875,-241.25 C 831.2684,-241.53689 832.40625,-241.5625 832.40625,-241.5625 C 832.40623,-241.5625 832.3335,-242.16947 833.40625,-242.625 C 834.12585,-242.93057 838.39723,-244.12575 840.46875,-244.625 C 842.47119,-245.10758 845.66724,-245.55329 847.53125,-245.03125 C 849.44203,-244.4961 855.25,-242.53125 855.25,-242.53125 C 855.25,-242.53125 848.82734,-244.95476 848,-245.25 C 847.80216,-245.32061 847.41784,-245.39039 846.96875,-245.4375 C 848.15665,-246.16615 851.88402,-247.21158 854.5625,-247.9375 C 857.50592,-248.73525 857.85458,-248.70833 859.875,-248.84375 C 861.78789,-248.97198 862.82205,-248.91484 863,-248.90625 C 863.11728,-249.10991 863.39176,-249.68573 863.9375,-249.875 C 864.66969,-250.12894 869.01602,-250.92289 871.125,-251.25 C 872.87313,-251.52111 875.52588,-251.7347 877.4375,-251.34375 C 877.75516,-251.27879 878.04272,-251.15824 878.3125,-251.0625 C 880.25324,-250.37377 886.15625,-247.96875 886.15625,-247.96875 C 886.15626,-247.96875 879.62154,-250.91952 878.78125,-251.28125 C 878.58028,-251.36776 878.20612,-251.44804 877.75,-251.53125 C 878.9565,-252.16443 882.77956,-252.92685 885.5,-253.4375 C 888.48953,-253.99869 888.80023,-253.96704 890.84375,-253.96875 C 892.95301,-253.97052 894.15625,-253.84375 894.15625,-253.84375 C 894.15625,-253.84374 894.08354,-254.47494 895.1875,-254.78125 C 895.92802,-254.98672 900.31362,-255.61512 902.4375,-255.84375 C 904.49052,-256.06474 907.75613,-256.09597 909.65625,-255.375 C 911.60404,-254.63593 917.5,-252 917.5,-252 C 917.50002,-252 910.93712,-255.17897 910.09375,-255.5625 C 909.89207,-255.65423 909.55154,-255.74871 909.09375,-255.84375 C 910.30467,-256.44563 914.07817,-257.09259 916.8125,-257.5 C 919.8173,-257.94772 920.13801,-257.9517 922.1875,-257.90625 C 924.12795,-257.86323 925.19449,-257.71202 925.375,-257.6875 C 925.49392,-257.88066 925.7589,-258.45333 926.3125,-258.59375 C 927.05521,-258.78213 931.46679,-259.32803 933.59375,-259.53125 C 935.35678,-259.69967 938.01384,-259.76554 939.9375,-259.28125 C 940.25718,-259.20077 940.54101,-259.07766 940.8125,-258.96875 C 942.76543,-258.18526 948.71875,-255.5 948.71875,-255.5 C 948.71873,-255.5 942.12684,-258.75348 941.28125,-259.15625 C 941.07903,-259.25257 940.70899,-259.36328 940.25,-259.46875 C 941.46414,-260.04302 945.29366,-260.59094 948.03125,-260.96875 C 951.03963,-261.38395 951.35432,-261.41138 953.40625,-261.34375 C 955.52423,-261.27394 956.71875,-261.09375 956.71875,-261.09375 C 956.71873,-261.09375 956.6415,-261.73116 957.75,-262 C 958.49362,-262.18035 962.90176,-262.66355 965.03125,-262.84375 C 967.08972,-263.01792 970.37449,-262.96807 972.28125,-262.1875 C 974.23584,-261.38734 980.15625,-258.65625 980.15625,-258.65625 C 980.15623,-258.65625 973.59632,-261.96501 972.75,-262.375 C 972.54763,-262.47305 972.17814,-262.5781 971.71875,-262.6875 C 972.93392,-263.2514 976.72883,-263.8018 979.46875,-264.15625 C 982.47966,-264.54577 982.79006,-264.5539 984.84375,-264.46875 C 986.78814,-264.38815 987.85038,-264.21551 988.03125,-264.1875 C 988.15041,-264.37836 988.41402,-264.93281 988.96875,-265.0625 C 989.71301,-265.2365 994.11868,-265.71297 996.25,-265.875 C 998.01662,-266.00927 1000.6997,-266.00071 1002.625,-265.5 C 1002.945,-265.41679 1003.2283,-265.29873 1003.5,-265.1875 C 1005.4546,-264.38734 1011.4063,-261.625 1011.4063,-261.625 C 1011.4062,-261.625 1004.8151,-264.96501 1003.9688,-265.375 C 1003.7664,-265.47305 1003.3969,-265.57811 1002.9375,-265.6875 C 1004.1526,-266.2514 1007.9788,-266.77056 1010.7188,-267.125 C 1013.7297,-267.51453 1014.0713,-267.5539 1016.125,-267.46875 C 1018.2447,-267.38087 1019.4375,-267.15625 1019.4375,-267.15625 C 1019.4375,-267.15625 1019.3591,-267.80527 1020.4688,-268.0625 C 1021.2131,-268.23506 1025.6183,-268.68586 1027.75,-268.84375 C 1029.8106,-268.99635 1033.0929,-268.94052 1035,-268.15625 C 1036.955,-267.3523 1042.875,-264.65625 1042.875,-264.65625 C 1042.875,-264.65625 1036.3152,-267.93212 1035.4688,-268.34375 C 1035.2663,-268.44219 1034.897,-268.54597 1034.4375,-268.65625 C 1035.6529,-269.21779 1039.4494,-269.78403 1042.1875,-270.15625 C 1045.1965,-270.5653 1045.5102,-270.57183 1047.5625,-270.5 C 1049.5056,-270.43201 1050.5697,-270.33515 1050.75,-270.3125 C 1050.8688,-270.5069 1051.1346,-271.04131 1051.6875,-271.1875 C 1052.4293,-271.38362 1056.8186,-272.01628 1058.9375,-272.28125 C 1060.6939,-272.50086 1063.3428,-272.61356 1065.25,-272.25 C 1065.5669,-272.18959 1065.8558,-272.06062 1066.125,-271.96875 C 1068.0612,-271.30783 1073.9688,-269.03125 1073.9688,-269.03125 C 1073.9687,-269.03125 1067.4321,-271.8378 1066.5938,-272.1875 C 1066.3933,-272.27113 1066.0176,-272.36083 1065.5625,-272.4375 C 1066.7662,-273.08796 1070.5816,-273.80945 1073.2813,-274.4375 C 1076.248,-275.1277 1076.5702,-275.19257 1078.5938,-275.3125 C 1080.6824,-275.4363 1081.875,-275.34375 1081.875,-275.34375 C 1081.875,-275.34374 1081.788,-275.9758 1082.875,-276.375 C 1083.6042,-276.6428 1087.9222,-277.71297 1090,-278.1875 C 1092.0085,-278.64619 1095.1679,-279.2168 1097,-278.8125 C 1098.8781,-278.39804 1110.5782,-275.79687 1110.5782,-275.79687 C 1110.5782,-275.79687 1098.2507,-278.81953 1097.4375,-279.0625 C 1097.243,-279.12062 1096.8789,-279.16876 1096.4375,-279.1875 C 1097.6051,-279.99119 1099.9517,-280.8748 1102.5469,-281.89062 C 1104.2283,-282.5488 1103.4706,-282.26721 1105.3228,-282.89422 C 1107.0764,-283.48788 1107.8082,-283.90493 1107.9532,-284.00721 C 1108.2993,-284.21372 1107.5972,-284.12909 1107.409,-284.04961 z"
45247 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7001);enable-background:new"
45248 - sodipodi:nodetypes="czscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssccsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscc" />
45249 - <path
45250 - id="path8095"
45251 - d="M 1082.625,-275.125 C 1084.498,-274.73152 1087.1211,-273.97945 1088.6563,-273.15625 C 1090.1915,-272.33306 1091.4785,-272.10025 1094.0313,-270.65625 C 1096.5579,-269.22699 1098.8271,-268.64929 1101,-268.125 C 1103.3476,-267.55858 1106.4354,-267.40977 1109.8438,-266.9375 C 1108.7549,-267.77725 1103.2364,-268.10995 1101.4375,-268.5 C 1099.6386,-268.89006 1097.5434,-269.51616 1094.8438,-270.8125 C 1092.1441,-272.10884 1091.3494,-272.61146 1089.0313,-273.5 C 1086.7131,-274.38854 1085.0269,-274.88314 1082.625,-275.125 z"
45252 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6949);enable-background:new" />
45253 - <path
45254 - id="path8097"
45255 - d="M 1051.4688,-270 C 1053.3741,-269.42241 1055.9969,-268.38428 1057.5625,-267.40625 C 1059.1281,-266.42823 1060.4427,-266.04644 1063.0625,-264.28125 C 1065.6555,-262.53409 1068.0484,-261.57198 1070.3125,-260.6875 C 1072.7586,-259.73193 1075.9951,-259.03037 1079.7188,-257.625 C 1078.5292,-258.76284 1072.6557,-260.31175 1070.7813,-261 C 1068.9068,-261.68825 1066.6995,-262.5662 1063.9063,-264.28125 C 1061.113,-265.99629 1060.3327,-266.56515 1057.9688,-267.6875 C 1055.6047,-268.80984 1053.9121,-269.52205 1051.4688,-270 z"
45256 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6961);enable-background:new" />
45257 - <path
45258 - id="path8099"
45259 - d="M 1020.2188,-266.84375 C 1022.1307,-266.20564 1024.8,-265.08839 1026.375,-264.03125 C 1027.9501,-262.9741 1029.2706,-262.52258 1031.9063,-260.625 C 1034.5149,-258.74679 1036.9347,-257.59497 1039.2188,-256.5625 C 1041.6865,-255.44705 1044.9833,-254.3892 1048.75,-252.71875 C 1047.5467,-253.94128 1041.5472,-256.03298 1039.6563,-256.84375 C 1037.7653,-257.65452 1035.5914,-258.73754 1032.7813,-260.59375 C 1029.9711,-262.44995 1029.1595,-263.07068 1026.7813,-264.3125 C 1024.403,-265.5543 1022.6706,-266.28819 1020.2188,-266.84375 z"
45260 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6957);enable-background:new" />
45261 - <path
45262 - id="path8101"
45263 - d="M 1110.1719,-266.89063 C 1110.3227,-266.84207 1110.8599,-266.25963 1110.2813,-265.40625 C 1109.4712,-264.21166 1104.5764,-262.08196 1101.7188,-261.28125 C 1098.8739,-260.48413 1095.4287,-260.30351 1091.1563,-261.65625 C 1086.8547,-263.0182 1085.6866,-264.12497 1080.5,-265.96875 C 1085.164,-263.85358 1086.6953,-262.01642 1090.625,-260.625 C 1092.2457,-260.05113 1093.9921,-259.6854 1095.6875,-259.59375 C 1095.2424,-259.26812 1094.1572,-258.61045 1092.125,-258 C 1089.3295,-257.16031 1085.4759,-256.46622 1083.875,-256.375 C 1082.3604,-256.28868 1080.733,-256.88749 1080.4375,-257 C 1080.6042,-256.89692 1080.8107,-256.62266 1080.1875,-255.96875 C 1079.2882,-255.02512 1074.0401,-254.04575 1071.0625,-253.71875 C 1068.0982,-253.3932 1064.5409,-253.73471 1060.1563,-255.625 C 1056.1783,-257.33997 1054.8173,-258.54036 1050.75,-260.375 C 1050.75,-260.375 1050.75,-260.21875 1050.75,-260.21875 C 1054.3931,-258.12346 1056.034,-256.33548 1059.625,-254.65625 C 1061.3552,-253.84716 1063.2167,-253.24749 1065.0313,-252.9375 C 1064.4964,-252.65074 1063.4735,-252.22599 1061.5938,-251.90625 C 1058.7248,-251.41829 1054.7848,-251.09011 1053.1563,-251.15625 C 1052.3056,-251.19079 1051.4277,-251.34062 1050.75,-251.5625 C 1050.0652,-251.77738 1049.5603,-252.00717 1049.4375,-252.0625 C 1049.6069,-251.95529 1049.8686,-251.65962 1049.2188,-251.03125 C 1048.3091,-250.15163 1042.9727,-249.69487 1039.9688,-249.5625 C 1036.9783,-249.43071 1033.3799,-250.01313 1028.9688,-252.125 C 1024.5276,-254.25126 1023.3273,-255.5266 1018.0625,-257.90625 C 1022.7968,-255.30921 1024.349,-253.27715 1028.4063,-251.1875 C 1030.0796,-250.32565 1031.8915,-249.69325 1033.6563,-249.25 C 1033.193,-249.01668 1032.0669,-248.56186 1029.9688,-248.3125 C 1027.0825,-247.96952 1023.1342,-247.81962 1021.5,-247.9375 C 1019.9538,-248.049 1018.2688,-248.79446 1017.9688,-248.9375 C 1018.1379,-248.81721 1018.3826,-248.52702 1017.75,-247.9375 C 1016.8372,-247.08677 1011.5059,-246.67538 1008.5,-246.5625 C 1005.5075,-246.45013 1001.9103,-247.05293 997.5,-249.15625 C 993.49875,-251.06448 992.11197,-252.29408 988.03125,-254.25 C 988.03122,-254.25 988.03125,-254.09375 988.03125,-254.09375 C 991.68631,-251.88983 993.32546,-250.0412 996.9375,-248.1875 C 998.67779,-247.29435 1000.5745,-246.65923 1002.4063,-246.21875 C 1001.8663,-245.97045 1000.8282,-245.60342 998.9375,-245.375 C 996.05182,-245.02642 992.07145,-244.85405 990.4375,-244.96875 C 989.58405,-245.02865 988.71119,-245.22666 988.03125,-245.46875 C 987.34415,-245.70405 986.8419,-245.94101 986.71875,-246 C 986.88873,-245.88773 987.18323,-245.57775 986.53125,-244.96875 C 985.6186,-244.11625 980.25592,-243.67538 977.25,-243.5625 C 974.25754,-243.45013 970.65654,-244.09055 966.25,-246.15625 C 961.81347,-248.23603 960.60312,-249.48796 955.34375,-251.8125 C 960.07313,-249.26501 961.63449,-247.2347 965.6875,-245.1875 C 967.35905,-244.34317 969.17304,-243.72107 970.9375,-243.28125 C 970.47427,-243.04703 969.3478,-242.59718 967.25,-242.34375 C 964.36431,-241.99517 960.4138,-241.77423 958.78125,-241.875 C 957.23669,-241.97032 955.58094,-242.70385 955.28125,-242.84375 C 955.45024,-242.72522 955.66317,-242.4399 955.03125,-241.84375 C 954.11939,-240.98347 948.7846,-240.5135 945.78125,-240.375 C 942.7913,-240.2371 939.2138,-240.82568 934.8125,-242.84375 C 930.81942,-244.67464 929.44739,-245.87295 925.375,-247.75 C 925.37498,-247.75 925.375,-247.59375 925.375,-247.59375 C 929.02261,-245.46048 930.64533,-243.65888 934.25,-241.875 C 935.98675,-241.01549 937.85727,-240.42486 939.6875,-240 C 939.14803,-239.7471 938.13687,-239.35871 936.25,-239.09375 C 933.37022,-238.68939 929.41187,-238.44813 927.78125,-238.53125 C 926.92953,-238.57466 926.05355,-238.7398 925.375,-238.96875 C 924.68931,-239.19076 924.1854,-239.41214 924.0625,-239.46875 C 924.23209,-239.35976 924.4944,-239.0591 923.84375,-238.4375 C 922.93296,-237.56736 917.59354,-237.04598 914.59375,-236.875 C 911.60742,-236.70479 908.01994,-237.19077 903.625,-239.15625 C 899.20011,-241.13513 898.01904,-242.38444 892.78125,-244.53125 C 897.49122,-242.14358 899.05142,-240.14252 903.09375,-238.1875 C 904.7609,-237.38119 906.55418,-236.79092 908.3125,-236.40625 C 907.85087,-236.15755 906.7155,-235.694 904.625,-235.375 C 901.7494,-234.93624 897.8446,-234.6419 896.21875,-234.6875 C 894.68052,-234.73062 892.98595,-235.43272 892.6875,-235.5625 C 892.85583,-235.44968 893.09807,-235.14875 892.46875,-234.53125 C 891.56063,-233.64015 886.2658,-233.003 883.28125,-232.71875 C 880.31007,-232.43577 876.70783,-232.89455 872.34375,-234.65625 C 868.38441,-236.25456 867.0146,-237.45112 863,-238.96875 C 863.00003,-238.96875 863,-238.8125 863,-238.8125 C 866.5959,-237.00115 868.23831,-235.23017 871.8125,-233.65625 C 873.53457,-232.8979 875.39998,-232.3673 877.21875,-232.03125 C 876.68266,-231.75217 875.65217,-231.34362 873.78125,-230.96875 C 870.92586,-230.39665 866.99183,-229.94936 865.375,-229.9375 C 864.53049,-229.93129 863.66892,-230.01844 863,-230.1875 C 862.32409,-230.34901 861.83991,-230.51673 861.71875,-230.5625 C 861.88597,-230.46848 862.14142,-230.17902 861.5,-229.5 C 860.60213,-228.54948 855.31352,-227.58292 852.375,-227.0625 C 849.44966,-226.54441 845.94285,-226.68826 841.65625,-228.09375 C 837.34045,-229.50882 836.18348,-230.62369 831.09375,-232.0625 C 835.6706,-230.31149 837.1823,-228.50244 841.125,-227.0625 C 842.75108,-226.46861 844.49385,-226.10685 846.21875,-225.90625 C 845.7659,-225.60923 844.66397,-225.02286 842.625,-224.4375 C 839.82028,-223.63233 835.98614,-222.86167 834.40625,-222.6875 C 832.9115,-222.5227 831.29002,-223.00431 831,-223.09375 C 831.16356,-223.00368 831.39278,-222.73382 830.78125,-222.03125 C 829.89878,-221.0174 824.73673,-219.6596 821.84375,-218.96875 C 818.96373,-218.28097 815.50815,-218.20873 811.28125,-219.40625 C 807.4464,-220.4927 806.10867,-221.47862 802.21875,-222.53125 C 802.21874,-222.53125 802.21875,-222.375 802.21875,-222.375 C 805.70293,-220.98015 807.28816,-219.4556 810.75,-218.34375 C 812.41793,-217.80803 814.20578,-217.55701 815.96875,-217.46875 C 815.44911,-217.11663 814.46836,-216.55423 812.65625,-215.9375 C 809.89059,-214.99625 806.06601,-214.00213 804.5,-213.78125 C 803.68206,-213.66586 802.8669,-213.65842 802.21875,-213.75 C 801.56379,-213.83321 801.08615,-213.96827 800.96875,-214 C 801.13079,-213.92536 801.40274,-213.65956 800.78125,-212.90625 C 799.91125,-211.85172 794.77162,-210.247 791.90625,-209.46875 C 789.05372,-208.69399 785.64713,-208.51055 781.46875,-209.5625 C 777.26192,-210.62163 776.11206,-211.60416 771.125,-212.71875 C 775.60954,-211.25929 777.09435,-209.58352 780.9375,-208.46875 C 782.52254,-208.00898 784.22429,-207.8305 785.90625,-207.78125 C 785.46468,-207.44449 784.39374,-206.75352 782.40625,-206 C 779.67232,-204.96351 775.95427,-203.83731 774.40625,-203.5625 C 772.94163,-203.30248 771.34667,-203.67904 771.0625,-203.75 C 771.22275,-203.67035 771.44294,-203.42902 770.84375,-202.6875 C 769.97909,-201.61744 764.92723,-199.86935 762.09375,-199 C 759.27295,-198.13453 755.88625,-197.84369 751.75,-198.78125 C 747.99741,-199.63186 746.70215,-200.49772 742.875,-201.375 C 742.875,-201.375 742.875,-201.21875 742.875,-201.21875 C 746.30296,-199.98096 747.86241,-198.58645 751.25,-197.6875 C 752.88216,-197.25436 754.61704,-197.10449 756.34375,-197.125 C 755.83482,-196.74083 754.867,-196.10318 753.09375,-195.375 C 750.38741,-194.26366 746.65742,-193.06719 745.125,-192.75 C 744.3246,-192.58431 743.51269,-192.53138 742.875,-192.59375 C 742.875,-192.59375 742.875,-192.07823 742.875,-191.67146 C 742.875,-191.40639 742.875,-191.1875 742.875,-191.1875 C 743.10145,-191.33218 743.32391,-191.46011 743.59375,-191.5625 C 744.67427,-191.97248 745.76536,-191.77827 749.59375,-193.25 C 753.42218,-194.72174 754.81787,-195.25498 755.5,-195.65625 C 756.1796,-196.05603 757.11165,-196.53562 757.71875,-197.1875 C 759.5456,-197.32525 761.2895,-197.68073 762.65625,-198.1875 C 765.62437,-199.28802 767.53162,-199.99369 769.4375,-200.65625 C 771.34336,-201.31879 771.79159,-202.07112 772.84375,-202.4375 C 773.9353,-202.81761 775.03886,-202.60288 778.90625,-203.96875 C 782.7737,-205.33461 784.18941,-205.79583 784.875,-206.1875 C 785.57609,-206.58802 786.57581,-207.12048 787.1875,-207.78125 C 789.1583,-207.83591 791.00435,-208.16588 792.46875,-208.65625 C 795.47023,-209.66133 797.3949,-210.27796 799.3125,-210.90625 C 800.8511,-211.41035 801.48652,-211.95302 802.21875,-212.34375 C 802.44891,-212.47806 802.69449,-212.59748 802.96875,-212.6875 C 804.06698,-213.04798 805.1502,-212.76887 809.0625,-214 C 812.97483,-215.23113 814.42855,-215.67295 815.125,-216.03125 C 815.81888,-216.38822 816.75515,-216.82386 817.375,-217.4375 C 819.24021,-217.46016 821.01081,-217.70433 822.40625,-218.125 C 825.43668,-219.03854 827.39863,-219.5551 829.34375,-220.09375 C 831.28886,-220.63239 831.76993,-221.35827 832.84375,-221.65625 C 833.95776,-221.9654 835.06369,-221.64886 839.03125,-222.6875 C 842.99886,-223.72613 844.44883,-224.12023 845.15625,-224.4375 C 845.89112,-224.76709 846.97008,-225.19122 847.59375,-225.8125 C 849.59149,-225.6965 851.45118,-225.83259 852.9375,-226.1875 C 856.01561,-226.9225 858.02094,-227.28844 860,-227.6875 C 861.58792,-228.00768 862.24429,-228.47805 863,-228.78125 C 863.23757,-228.88805 863.46695,-228.97401 863.75,-229.03125 C 864.88347,-229.26044 866.05448,-228.82232 870.09375,-229.53125 C 874.13308,-230.24018 875.594,-230.45834 876.3125,-230.71875 C 877.02836,-230.97819 878.01678,-231.28599 878.65625,-231.8125 C 880.58052,-231.57301 882.40413,-231.58797 883.84375,-231.8125 C 886.97008,-232.30012 888.9983,-232.51317 891,-232.78125 C 893.00171,-233.04932 893.48869,-233.72639 894.59375,-233.875 C 895.74014,-234.02918 896.86967,-233.57343 900.9375,-234.09375 C 905.00534,-234.61407 906.49763,-234.78948 907.21875,-235.03125 C 907.95585,-235.27839 909.01684,-235.61748 909.65625,-236.15625 C 911.70632,-235.82072 913.63003,-235.75829 915.15625,-235.9375 C 918.29856,-236.30646 920.33619,-236.49686 922.34375,-236.71875 C 923.95451,-236.89677 924.60842,-237.32695 925.375,-237.5625 C 925.61594,-237.64802 925.86912,-237.7181 926.15625,-237.75 C 927.30603,-237.87772 928.45754,-237.40335 932.53125,-237.875 C 936.60499,-238.34665 938.09034,-238.4856 938.8125,-238.71875 C 939.53196,-238.95102 940.51274,-239.19221 941.15625,-239.6875 C 943.09262,-239.35404 944.92631,-239.28326 946.375,-239.4375 C 949.52102,-239.77245 951.55256,-239.95609 953.5625,-240.15625 C 955.57246,-240.35639 956.04664,-240.98264 957.15625,-241.09375 C 958.30739,-241.20903 959.45268,-240.72869 963.53125,-241.15625 C 967.60986,-241.58381 969.12011,-241.71834 969.84375,-241.9375 C 970.5829,-242.16136 971.63947,-242.45075 972.28125,-242.96875 C 974.33835,-242.57008 976.28312,-242.47535 977.8125,-242.625 C 980.96123,-242.9331 982.98834,-243.09825 985,-243.28125 C 986.61407,-243.42807 987.2631,-243.8418 988.03125,-244.0625 C 988.27267,-244.14336 988.52478,-244.19241 988.8125,-244.21875 C 989.96461,-244.3242 991.10546,-243.826 995.1875,-244.21875 C 999.26958,-244.6115 1000.7764,-244.74959 1001.5,-244.96875 C 1002.2209,-245.18708 1003.1997,-245.41645 1003.8438,-245.90625 C 1005.7818,-245.55626 1007.6126,-245.45187 1009.0625,-245.59375 C 1012.2112,-245.90185 1014.2383,-246.067 1016.25,-246.25 C 1018.2616,-246.43299 1018.7642,-247.08802 1019.875,-247.1875 C 1021.0273,-247.29073 1022.1672,-246.80267 1026.25,-247.1875 C 1030.3329,-247.57232 1031.8387,-247.6885 1032.5625,-247.90625 C 1033.3018,-248.12868 1034.3581,-248.42074 1035,-248.9375 C 1037.0574,-248.53573 1039.0029,-248.43417 1040.5313,-248.59375 C 1043.6779,-248.92227 1045.7084,-249.11645 1047.7188,-249.3125 C 1049.3318,-249.46979 1049.9844,-249.94398 1050.75,-250.1875 C 1050.9907,-250.27554 1051.2132,-250.30887 1051.5,-250.34375 C 1052.6483,-250.48345 1053.8167,-250.00384 1057.875,-250.59375 C 1061.9333,-251.18367 1063.4368,-251.37089 1064.1563,-251.625 C 1064.873,-251.87816 1065.8308,-252.18307 1066.4688,-252.71875 C 1068.3885,-252.50681 1070.1887,-252.56734 1071.625,-252.8125 C 1074.7441,-253.3449 1076.7366,-253.74111 1078.7188,-254.125 C 1080.7009,-254.50887 1081.1931,-255.16465 1082.2813,-255.40625 C 1083.4101,-255.65691 1084.5516,-255.28996 1088.5313,-256.28125 C 1092.5109,-257.27253 1093.9609,-257.70055 1094.6563,-258.0625 C 1095.3786,-258.43851 1096.4182,-258.93308 1097.0313,-259.59375 C 1098.9943,-259.6058 1100.825,-259.8848 1102.25,-260.4375 C 1105.2012,-261.58211 1107.1232,-262.30692 1108.9375,-263.1875 C 1110.3932,-263.89403 1111.2723,-264.87391 1111.4844,-265.17188 C 1111.6966,-265.46984 1111.5962,-265.91718 1111.6223,-265.93863 C 1111.6652,-265.97387 1111.9416,-266.0236 1112.1013,-266.36707 C 1112.9602,-268.21415 1114.4223,-272.01166 1114.5365,-272.69652 C 1114.6502,-273.37868 1114.7003,-274.04426 1114.751,-274.44149 C 1114.7804,-274.67101 1114.6043,-275.30693 1114.6264,-275.36553 C 1114.6573,-275.44759 1114.9309,-275.63081 1114.9863,-275.88024 C 1115.2526,-277.07857 1115.0752,-278.07153 1114.8612,-279.48917 C 1114.6472,-280.90681 1113.8775,-284.11131 1113.2243,-284.96543 C 1112.5654,-285.82715 1112.0014,-285.9766 1111.4764,-285.96609 C 1111.2678,-285.69633 1111.6132,-285.703 1111.639,-285.65348 C 1112.3196,-285.60269 1112.573,-285.28484 1113.0582,-284.75686 C 1113.5434,-284.22888 1114.501,-280.8173 1114.6376,-279.36691 C 1114.7742,-277.91652 1114.8276,-276.50671 1114.5496,-275.89827 C 1114.2715,-275.28982 1113.6054,-275.46963 1113.313,-275.40375 C 1113.844,-275.21786 1114.2038,-275.19053 1114.2654,-274.34607 C 1114.3247,-273.53269 1114.1322,-272.70638 1113.7456,-271.54045 C 1113.3544,-270.36044 1111.9004,-267.19047 1111.4599,-266.94168 C 1111.0076,-266.68617 1110.5075,-266.75969 1110.1719,-266.89063 z"
45264 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6997);enable-background:new"
45265 - sodipodi:nodetypes="cssscscsscsssccscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssccscsscscssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsszsszssszzcczzzczzzc" />
45266 - <path
45267 - id="path8103"
45268 - d="M 988.75,-263.84375 C 990.66161,-263.20935 993.30027,-262.08534 994.875,-261.03125 C 996.44977,-259.97716 997.7711,-259.54873 1000.4063,-257.65625 C 1003.0145,-255.78311 1005.4332,-254.64103 1007.7188,-253.59375 C 1010.1881,-252.46228 1013.4709,-251.43901 1017.25,-249.65625 C 1016.0428,-250.91465 1010.111,-253.0207 1008.2188,-253.84375 C 1006.3266,-254.66679 1004.0908,-255.77424 1001.2813,-257.625 C 998.47169,-259.47575 997.65906,-260.10654 995.28125,-261.34375 C 992.90343,-262.58094 991.20137,-263.29295 988.75,-263.84375 z"
45269 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6953);enable-background:new" />
45270 - <path
45271 - id="path8105"
45272 - d="M 957.5,-260.78125 C 959.41,-260.16315 962.08288,-259.07191 963.65625,-258.03125 C 965.22964,-256.99059 966.55233,-256.54873 969.1875,-254.65625 C 971.79573,-252.7831 974.21442,-251.64104 976.5,-250.59375 C 978.96931,-249.46228 982.25213,-248.439 986.03125,-246.65625 C 984.82397,-247.91465 978.82971,-250.05195 976.9375,-250.875 C 975.04533,-251.69804 972.84084,-252.8055 970.03125,-254.65625 C 967.22167,-256.507 966.4383,-257.09557 964.0625,-258.3125 C 961.68672,-259.52941 959.94929,-260.25135 957.5,-260.78125 z"
45273 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6993);enable-background:new" />
45274 - <path
45275 - id="path8107"
45276 - d="M 926.09375,-257.375 C 928.00147,-256.77755 930.64723,-255.71116 932.21875,-254.6875 C 933.79025,-253.66385 935.08897,-253.24779 937.71875,-251.40625 C 940.32166,-249.58352 942.74762,-248.43405 945.03125,-247.40625 C 947.49845,-246.29584 950.7866,-245.31302 954.5625,-243.5625 C 953.35627,-244.8106 947.3906,-246.88059 945.5,-247.6875 C 943.60942,-248.4944 941.39758,-249.57854 938.59375,-251.375 C 935.7899,-253.17144 934.96671,-253.77751 932.59375,-254.96875 C 930.22078,-256.15999 928.54013,-256.87158 926.09375,-257.375 z"
45277 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6989);enable-background:new" />
45278 - <path
45279 - id="path8109"
45280 - d="M 894.90625,-253.5625 C 896.80838,-253.00895 899.49326,-251.97363 901.0625,-250.96875 C 902.63173,-249.96388 903.93651,-249.56011 906.5625,-247.75 C 909.16162,-245.95836 911.56284,-244.87811 913.84375,-243.875 C 916.30803,-242.79126 919.60359,-241.83471 923.375,-240.125 C 922.1702,-241.36007 916.20084,-243.36978 914.3125,-244.15625 C 912.42418,-244.94272 910.2373,-245.98705 907.4375,-247.75 C 904.63773,-249.51294 903.83831,-250.11836 901.46875,-251.28125 C 899.09918,-252.44413 897.3455,-253.11537 894.90625,-253.5625 z"
45281 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6985);enable-background:new" />
45282 - <path
45283 - id="path8111"
45284 - d="M 863.71875,-248.65625 C 865.59937,-248.22716 868.22302,-247.27587 869.78125,-246.34375 C 871.33948,-245.41164 872.63358,-245.08599 875.25,-243.34375 C 877.83971,-241.61931 880.23067,-240.63573 882.5,-239.71875 C 884.95176,-238.72806 888.23959,-237.84168 892,-236.21875 C 890.79869,-237.42609 884.84751,-239.28484 882.96875,-240 C 881.09,-240.71517 878.88335,-241.68442 876.09375,-243.375 C 873.30412,-245.06557 872.50914,-245.60322 870.15625,-246.65625 C 867.80333,-247.70926 866.13041,-248.36873 863.71875,-248.65625 z"
45285 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6965);enable-background:new" />
45286 - <path
45287 - id="path8113"
45288 - d="M 833.15625,-241.375 C 835.00461,-241.07856 837.6257,-240.39868 839.15625,-239.59375 C 840.68683,-238.78882 841.96999,-238.53802 844.53125,-237.0625 C 847.06629,-235.60204 849.42193,-234.73741 851.65625,-234 C 854.07024,-233.20332 857.31336,-232.53311 861.03125,-231.15625 C 859.84354,-232.28498 853.94353,-233.746 852.09375,-234.3125 C 850.24398,-234.879 848.09033,-235.68642 845.34375,-237.15625 C 842.59718,-238.62608 841.84239,-239.07653 839.53125,-239.9375 C 837.2201,-240.79845 835.52654,-241.25759 833.15625,-241.375 z"
45289 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6981);enable-background:new" />
45290 - <path
45291 - id="path8115"
45292 - d="M 802.90625,-232.3125 C 804.72845,-232.10123 807.27201,-231.51193 808.78125,-230.78125 C 810.2905,-230.05059 811.53693,-229.85127 814.0625,-228.5 C 816.56226,-227.16254 818.89404,-226.45157 821.09375,-225.84375 C 823.47028,-225.18708 826.65839,-224.77087 830.3125,-223.65625 C 829.14515,-224.70121 823.38362,-225.75954 821.5625,-226.21875 C 819.74139,-226.67796 817.61025,-227.34571 814.90625,-228.65625 C 812.20222,-229.96677 811.43519,-230.37615 809.15625,-231.125 C 806.8773,-231.87383 805.243,-232.30431 802.90625,-232.3125 z"
45293 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6977);enable-background:new" />
45294 - <path
45295 - id="path8117"
45296 - d="M 773.1875,-222.1875 C 774.99859,-222.0088 777.50809,-221.52244 779,-220.84375 C 780.49194,-220.16506 781.7534,-220.04553 784.25,-218.78125 C 786.72107,-217.52987 789.04005,-216.88511 791.21875,-216.34375 C 793.57262,-215.75887 796.71009,-215.44623 800.3125,-214.5 C 799.16166,-215.49116 793.45999,-216.2833 791.65625,-216.6875 C 789.85253,-217.0917 787.74072,-217.70866 785.0625,-218.9375 C 782.38432,-220.16634 781.65905,-220.54839 779.40625,-221.21875 C 777.15346,-221.88909 775.50998,-222.22107 773.1875,-222.1875 z"
45297 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6973);enable-background:new" />
45298 - <path
45299 - id="path8119"
45300 - d="M 743.5625,-211.1875 C 745.35531,-211.05839 747.83563,-210.63785 749.3125,-210 C 750.7894,-209.36215 752.0286,-209.25844 754.5,-208.0625 C 756.94618,-206.87878 759.22054,-206.31584 761.375,-205.84375 C 763.70267,-205.33372 766.7946,-205.16311 770.375,-204.28125 C 769.23121,-205.25185 763.62741,-205.8719 761.84375,-206.21875 C 760.06008,-206.56559 757.9609,-207.10631 755.3125,-208.25 C 752.66409,-209.39368 751.91755,-209.76631 749.6875,-210.375 C 747.45742,-210.98368 745.86156,-211.28466 743.5625,-211.1875 z"
45301 - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter6969);enable-background:new" />
45302 - <g
45303 - id="g8121"
45304 - style="fill:#ffffff;fill-opacity:1;filter:url(#filter7345)">
45305 - <path
45306 - sodipodi:nodetypes="czzzczzc"
45307 - id="path8123"
45308 - d="M 744.9375,-212.11731 C 744.9375,-212.11731 752.15979,-215.34049 754,-215.61731 C 755.84021,-215.89413 757.35225,-215.62054 760,-215.05481 C 762.64775,-214.48908 768.7357,-212.83963 771.1875,-211.67981 C 773.6393,-210.51999 776.5,-208.11731 776.5,-208.11731 C 776.5,-208.11731 769.35356,-210.8975 766.3125,-211.67981 C 763.27144,-212.46212 758.66789,-213.76355 755.9375,-213.99231 C 753.20711,-214.22107 744.9375,-212.11731 744.9375,-212.11731 z"
45309 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
45310 - <path
45311 - sodipodi:nodetypes="czzzczzc"
45312 - id="path8125"
45313 - d="M 735.46875,-206.95416 C 735.46875,-206.95416 739.12854,-209.17734 740.96875,-209.45416 C 742.80896,-209.73098 744.6335,-209.20739 747.28125,-208.64166 C 749.929,-208.07593 756.01695,-206.42648 758.46875,-205.26666 C 760.92055,-204.10684 765.03125,-203.14166 765.03125,-203.14166 C 765.03125,-203.14166 756.63481,-204.48435 753.59375,-205.26666 C 750.55269,-206.04897 745.63664,-207.6004 742.90625,-207.82916 C 740.17586,-208.05792 735.46875,-206.95416 735.46875,-206.95416 z"
45314 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45315 - <path
45316 - sodipodi:nodetypes="czzzczzc"
45317 - id="path8127"
45318 - d="M 759.85042,-217.61116 C 759.85042,-217.61116 768.39412,-220.90973 770.2482,-221.06902 C 772.10229,-221.22832 773.88986,-220.58982 776.4963,-219.85694 C 779.10274,-219.12406 785.07354,-217.091 787.44666,-215.77769 C 789.81978,-214.46438 793.86083,-213.23987 793.86083,-213.23987 C 793.86083,-213.23987 785.5667,-215.11352 782.58152,-216.08754 C 779.59633,-217.06156 774.78883,-218.92232 772.0785,-219.32416 C 769.36817,-219.726 759.85042,-217.61116 759.85042,-217.61116 z"
45319 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45320 - <path
45321 - sodipodi:nodetypes="czzzczzc"
45322 - id="path8129"
45323 - d="M 775.19813,-223.2266 C 775.19813,-223.2266 782.96946,-226.00904 784.82644,-226.13009 C 786.68341,-226.25113 788.45744,-225.57592 791.04822,-224.78947 C 793.63899,-224.00302 799.56662,-221.8473 801.91216,-220.48535 C 804.25771,-219.1234 808.27265,-217.81585 808.27265,-217.81585 C 808.27265,-217.81585 800.01892,-219.86008 797.05444,-220.89543 C 794.08997,-221.93078 789.32185,-223.89024 786.62038,-224.34786 C 783.91891,-224.80549 775.19813,-223.2266 775.19813,-223.2266 z"
45324 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45325 - <path
45326 - inkscape:transform-center-y="-4.3190906"
45327 - inkscape:transform-center-x="13.852145"
45328 - sodipodi:nodetypes="czzzczzc"
45329 - id="path8131"
45330 - d="M 789.64298,-227.95417 C 789.64298,-227.95417 798.32554,-231.47448 800.18452,-231.55952 C 802.04349,-231.64455 803.8041,-230.9351 806.37915,-230.09859 C 808.9542,-229.2621 814.83894,-226.99193 817.15766,-225.58479 C 819.47638,-224.17764 823.46523,-222.79255 823.46523,-222.79255 C 823.46523,-222.79255 815.25266,-224.99632 812.3088,-226.08891 C 809.36494,-227.1815 804.63568,-229.23299 801.94358,-229.74288 C 799.25149,-230.25276 789.64298,-227.95417 789.64298,-227.95417 z"
45331 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45332 - <path
45333 - inkscape:transform-center-y="-4.3190906"
45334 - inkscape:transform-center-x="13.852145"
45335 - sodipodi:nodetypes="czzzczzc"
45336 - id="path8133"
45337 - d="M 804.49513,-233.32948 C 804.49513,-233.32948 812.30269,-235.91229 814.16167,-235.99733 C 816.02064,-236.08236 817.78125,-235.37291 820.3563,-234.5364 C 822.93135,-233.69991 828.81609,-231.42974 831.13481,-230.0226 C 833.45353,-228.61545 837.44238,-227.23036 837.44238,-227.23036 C 837.44238,-227.23036 829.22981,-229.43413 826.28595,-230.52672 C 823.34209,-231.61931 818.61283,-233.6708 815.92073,-234.18069 C 813.22864,-234.69057 804.49513,-233.32948 804.49513,-233.32948 z"
45338 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45339 - <path
45340 - inkscape:transform-center-y="-4.3190906"
45341 - inkscape:transform-center-x="13.852145"
45342 - sodipodi:nodetypes="czzzczzc"
45343 - id="path8135"
45344 - d="M 819.55763,-237.57948 C 819.55763,-237.57948 828.11519,-240.16229 829.97417,-240.24733 C 831.83314,-240.33236 833.59375,-239.62291 836.1688,-238.7864 C 838.74385,-237.94991 844.62859,-235.67974 846.94731,-234.2726 C 849.26603,-232.86545 853.25488,-231.48036 853.25488,-231.48036 C 853.25488,-231.48036 845.04231,-233.68413 842.09845,-234.77672 C 839.15459,-235.86931 834.42533,-237.9208 831.73323,-238.43069 C 829.04114,-238.94057 819.55763,-237.57948 819.55763,-237.57948 z"
45345 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45346 - <path
45347 - inkscape:transform-center-y="-4.9269042"
45348 - inkscape:transform-center-x="13.64141"
45349 - sodipodi:nodetypes="czzzczzc"
45350 - id="path8137"
45351 - d="M 836.23395,-242.60125 C 836.23395,-242.60125 843.20097,-244.58848 845.06179,-244.56882 C 846.9226,-244.54915 848.64052,-243.7418 851.16444,-242.76177 C 853.68837,-241.78177 859.4361,-239.18419 861.672,-237.64886 C 863.9079,-236.11351 867.81253,-234.50625 867.81253,-234.50625 C 867.81253,-234.50625 859.73692,-237.16847 856.85917,-238.42491 C 853.98143,-239.68136 849.37505,-241.99561 846.71589,-242.65612 C 844.05674,-243.31661 836.23395,-242.60125 836.23395,-242.60125 z"
45352 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45353 - <path
45354 - inkscape:transform-center-y="-5.1542119"
45355 - inkscape:transform-center-x="13.55068"
45356 - sodipodi:nodetypes="czzzczzc"
45357 - id="path8139"
45358 - d="M 850.73028,-246.00461 C 850.73028,-246.00461 858.41812,-248.03229 860.2781,-247.97315 C 862.13807,-247.914 863.83848,-247.07036 866.34103,-246.03699 C 868.84358,-245.00365 874.5349,-242.28467 876.73771,-240.70224 C 878.94053,-239.11979 882.81016,-237.43004 882.81016,-237.43004 C 882.81016,-237.43004 874.79287,-240.26302 871.94244,-241.58026 C 869.09201,-242.89749 864.53578,-245.30898 861.89124,-246.02576 C 859.2467,-246.74254 850.73028,-246.00461 850.73028,-246.00461 z"
45359 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45360 - <path
45361 - inkscape:transform-center-y="-5.4740887"
45362 - inkscape:transform-center-x="13.41151"
45363 - sodipodi:nodetypes="czzzczzc"
45364 - id="path8141"
45365 - d="M 864.82496,-249.21081 C 864.82496,-249.21081 872.99448,-251.17987 874.85184,-251.06477 C 876.70919,-250.94965 878.38342,-250.05521 880.85374,-248.94698 C 883.32405,-247.83877 888.93094,-244.94971 891.08512,-243.30167 C 893.2393,-241.65363 897.05632,-239.84815 897.05632,-239.84815 C 897.05632,-239.84815 889.12793,-242.92121 886.31845,-244.32365 C 883.50896,-245.72609 879.02739,-248.27364 876.40562,-249.06971 C 873.78386,-249.86577 864.82496,-249.21081 864.82496,-249.21081 z"
45366 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45367 - <path
45368 - inkscape:transform-center-y="-5.79376"
45369 - inkscape:transform-center-x="13.258805"
45370 - sodipodi:nodetypes="czzzczzc"
45371 - id="path8143"
45372 - d="M 881.38485,-251.60282 C 881.38485,-251.60282 889.47021,-253.51091 891.32322,-253.33946 C 893.17622,-253.16799 894.82252,-252.22313 897.25804,-251.04038 C 899.69357,-249.85767 905.21013,-246.79968 907.31327,-245.08699 C 909.41641,-243.37429 913.17684,-241.45373 913.17684,-241.45373 C 913.17684,-241.45373 905.34544,-244.76613 902.57984,-246.25323 C 899.81423,-247.74035 895.41209,-250.42282 892.8157,-251.29814 C 890.21933,-252.17345 881.38485,-251.60282 881.38485,-251.60282 z"
45373 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45374 - <path
45375 - inkscape:transform-center-y="-5.7433893"
45376 - inkscape:transform-center-x="13.28378"
45377 - sodipodi:nodetypes="czzzczzc"
45378 - id="path8145"
45379 - d="M 896.58415,-254.34724 C 896.58415,-254.34724 904.22581,-255.77494 906.07962,-255.61239 C 907.93342,-255.44983 909.58424,-254.51289 912.02541,-253.34186 C 914.46659,-252.17086 919.99779,-249.1394 922.10913,-247.43684 C 924.22047,-245.73426 927.99009,-243.83179 927.99009,-243.83179 C 927.99009,-243.83179 920.14286,-247.10653 917.37014,-248.58034 C 914.59743,-250.05414 910.18245,-252.71543 907.58189,-253.57827 C 904.98134,-254.44109 896.58415,-254.34724 896.58415,-254.34724 z"
45380 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45381 - <path
45382 - inkscape:transform-center-y="-5.7433893"
45383 - inkscape:transform-center-x="13.28378"
45384 - sodipodi:nodetypes="czzzczzc"
45385 - id="path8147"
45386 - d="M 911.45328,-255.98544 C 911.45328,-255.98544 920.09494,-257.53814 921.94875,-257.37559 C 923.80255,-257.21303 925.45337,-256.27609 927.89454,-255.10506 C 930.33572,-253.93406 935.86692,-250.9026 937.97826,-249.20004 C 940.0896,-247.49746 943.85922,-245.59499 943.85922,-245.59499 C 943.85922,-245.59499 936.01199,-248.86973 933.23927,-250.34354 C 930.46656,-251.81734 926.05158,-254.47863 923.45102,-255.34147 C 920.85047,-256.20429 911.45328,-255.98544 911.45328,-255.98544 z"
45387 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45388 - <path
45389 - inkscape:transform-center-y="-5.7433893"
45390 - inkscape:transform-center-x="13.28378"
45391 - sodipodi:nodetypes="czzzczzc"
45392 - id="path8149"
45393 - d="M 927.70328,-258.29794 C 927.70328,-258.29794 935.34494,-259.16314 937.19875,-259.00059 C 939.05255,-258.83803 940.70337,-257.90109 943.14454,-256.73006 C 945.58572,-255.55906 951.11692,-252.5276 953.22826,-250.82504 C 955.3396,-249.12246 959.10922,-247.21999 959.10922,-247.21999 C 959.10922,-247.21999 951.26199,-250.49473 948.48927,-251.96854 C 945.71656,-253.44234 941.30158,-256.10363 938.70102,-256.96647 C 936.10047,-257.82929 927.70328,-258.29794 927.70328,-258.29794 z"
45394 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45395 - <path
45396 - inkscape:transform-center-y="-5.7433893"
45397 - inkscape:transform-center-x="13.28378"
45398 - sodipodi:nodetypes="czzzczzc"
45399 - id="path8151"
45400 - d="M 942.82828,-259.48544 C 942.82828,-259.48544 951.40744,-260.97564 953.26125,-260.81309 C 955.11505,-260.65053 956.76587,-259.71359 959.20704,-258.54256 C 961.64822,-257.37156 967.17942,-254.3401 969.29076,-252.63754 C 971.4021,-250.93496 975.17172,-249.03249 975.17172,-249.03249 C 975.17172,-249.03249 967.32449,-252.30723 964.55177,-253.78104 C 961.77906,-255.25484 957.36408,-257.91613 954.76352,-258.77897 C 952.16297,-259.64179 942.82828,-259.48544 942.82828,-259.48544 z"
45401 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45402 - <path
45403 - inkscape:transform-center-y="-5.7433893"
45404 - inkscape:transform-center-x="13.28378"
45405 - sodipodi:nodetypes="czzzczzc"
45406 - id="path8153"
45407 - d="M 959.07828,-261.54794 C 959.07828,-261.54794 966.90744,-262.35064 968.76125,-262.18809 C 970.61505,-262.02553 972.26587,-261.08859 974.70704,-259.91756 C 977.14822,-258.74656 982.67942,-255.7151 984.79076,-254.01254 C 986.9021,-252.30996 990.67172,-250.40749 990.67172,-250.40749 C 990.67172,-250.40749 982.82449,-253.68223 980.05177,-255.15604 C 977.27906,-256.62984 972.86408,-259.29113 970.26352,-260.15397 C 967.66297,-261.01679 959.07828,-261.54794 959.07828,-261.54794 z"
45408 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45409 - <path
45410 - inkscape:transform-center-y="-5.7433893"
45411 - inkscape:transform-center-x="13.28378"
45412 - sodipodi:nodetypes="czzzczzc"
45413 - id="path8155"
45414 - d="M 974.45328,-262.79794 C 974.45328,-262.79794 982.84494,-263.97564 984.69875,-263.81309 C 986.55255,-263.65053 988.20337,-262.71359 990.64454,-261.54256 C 993.08572,-260.37156 998.61692,-257.3401 1000.7283,-255.63754 C 1002.8396,-253.93496 1006.6092,-252.03249 1006.6092,-252.03249 C 1006.6092,-252.03249 998.76199,-255.30723 995.98927,-256.78104 C 993.21656,-258.25484 988.80158,-260.91613 986.20102,-261.77897 C 983.60047,-262.64179 974.45328,-262.79794 974.45328,-262.79794 z"
45415 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45416 - <path
45417 - inkscape:transform-center-y="-5.7433893"
45418 - inkscape:transform-center-x="13.28378"
45419 - sodipodi:nodetypes="czzzczzc"
45420 - id="path8157"
45421 - d="M 990.64078,-264.86044 C 990.64078,-264.86044 997.53244,-265.85064 999.38625,-265.68809 C 1001.2401,-265.52553 1002.8909,-264.58859 1005.332,-263.41756 C 1007.7732,-262.24656 1013.3044,-259.2151 1015.4158,-257.51254 C 1017.5271,-255.80996 1021.2967,-253.90749 1021.2967,-253.90749 C 1021.2967,-253.90749 1013.4495,-257.18223 1010.6768,-258.65604 C 1007.9041,-260.12984 1003.4891,-262.79113 1000.8885,-263.65397 C 998.28797,-264.51679 990.64078,-264.86044 990.64078,-264.86044 z"
45422 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45423 - <path
45424 - inkscape:transform-center-y="-5.7433893"
45425 - inkscape:transform-center-x="13.28378"
45426 - sodipodi:nodetypes="czzzczzc"
45427 - id="path8159"
45428 - d="M 1007.7658,-265.79794 C 1007.7658,-265.79794 1014.5949,-266.97564 1016.4488,-266.81309 C 1018.3026,-266.65053 1019.9534,-265.71359 1022.3945,-264.54256 C 1024.8357,-263.37156 1030.3669,-260.3401 1032.4783,-258.63754 C 1034.5896,-256.93496 1038.3592,-255.03249 1038.3592,-255.03249 C 1038.3592,-255.03249 1030.512,-258.30723 1027.7393,-259.78104 C 1024.9666,-261.25484 1020.5516,-263.91613 1017.951,-264.77897 C 1015.3505,-265.64179 1007.7658,-265.79794 1007.7658,-265.79794 z"
45429 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45430 - <path
45431 - inkscape:transform-center-y="-5.7433893"
45432 - inkscape:transform-center-x="13.28378"
45433 - sodipodi:nodetypes="czzzczzc"
45434 - id="path8161"
45435 - d="M 1023.8908,-267.79794 C 1023.8908,-267.79794 1029.9699,-268.22564 1031.8238,-268.06309 C 1033.6776,-267.90053 1035.3284,-266.96359 1037.7695,-265.79256 C 1040.2107,-264.62156 1045.7419,-261.5901 1047.8533,-259.88754 C 1049.9646,-258.18496 1053.7342,-256.28249 1053.7342,-256.28249 C 1053.7342,-256.28249 1045.887,-259.55723 1043.1143,-261.03104 C 1040.3416,-262.50484 1035.9266,-265.16613 1033.326,-266.02897 C 1030.7255,-266.89179 1023.8908,-267.79794 1023.8908,-267.79794 z"
45436 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45437 - <path
45438 - inkscape:transform-center-y="-5.7433893"
45439 - inkscape:transform-center-x="13.28378"
45440 - sodipodi:nodetypes="czzzczzc"
45441 - id="path8163"
45442 - d="M 1039.7033,-269.17294 C 1039.7033,-269.17294 1046.1574,-269.85064 1048.0113,-269.68809 C 1049.8651,-269.52553 1051.5159,-268.58859 1053.957,-267.41756 C 1056.3982,-266.24656 1061.9294,-263.2151 1064.0408,-261.51254 C 1066.1521,-259.80996 1069.9217,-257.90749 1069.9217,-257.90749 C 1069.9217,-257.90749 1062.0745,-261.18223 1059.3018,-262.65604 C 1056.5291,-264.12984 1052.1141,-266.79113 1049.5135,-267.65397 C 1046.913,-268.51679 1039.7033,-269.17294 1039.7033,-269.17294 z"
45443 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45444 - <path
45445 - inkscape:transform-center-y="-5.1360724"
45446 - inkscape:transform-center-x="13.55813"
45447 - sodipodi:nodetypes="czzzczzc"
45448 - id="path8165"
45449 - d="M 1055.2718,-271.03319 C 1055.2718,-271.03319 1060.7694,-271.94264 1062.6296,-271.88667 C 1064.4897,-271.83067 1066.1915,-270.98993 1068.6957,-269.96081 C 1071.2001,-268.93171 1076.896,-266.22241 1079.1015,-264.64372 C 1081.307,-263.06501 1085.1795,-261.38182 1085.1795,-261.38182 C 1085.1795,-261.38182 1077.1575,-264.20121 1074.3047,-265.5136 C 1071.4521,-266.82598 1066.8918,-269.22973 1064.246,-269.94203 C 1061.6003,-270.65431 1055.2718,-271.03319 1055.2718,-271.03319 z"
45450 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45451 - <path
45452 - inkscape:transform-center-y="-4.6370147"
45453 - inkscape:transform-center-x="13.74758"
45454 - sodipodi:nodetypes="czzzczzc"
45455 - id="path8167"
45456 - d="M 1072.7007,-273.48537 C 1072.7007,-273.48537 1077.2479,-274.64118 1079.1087,-274.67158 C 1080.9694,-274.70196 1082.7083,-273.94109 1085.2576,-273.02927 C 1087.807,-272.1175 1093.6225,-269.67541 1095.899,-268.20077 C 1098.1753,-266.72609 1102.1217,-265.22441 1102.1217,-265.22441 C 1102.1217,-265.22441 1093.9775,-267.66852 1091.067,-268.84713 C 1088.1565,-270.02573 1083.4896,-272.21528 1080.8136,-272.80404 C 1078.1377,-273.39279 1072.7007,-273.48537 1072.7007,-273.48537 z"
45457 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45458 - <path
45459 - inkscape:transform-center-y="-4.4842392"
45460 - inkscape:transform-center-x="13.79933"
45461 - sodipodi:nodetypes="czzzczzc"
45462 - id="path8169"
45463 - d="M 1087.1585,-276.5244 C 1087.1585,-276.5244 1093.1185,-278.29795 1094.9787,-278.35464 C 1096.8387,-278.41131 1098.5883,-277.67509 1101.1502,-276.79939 C 1103.7122,-275.92373 1103.6728,-275.94226 1106.4837,-275.30924 C 1109.2806,-274.67938 1113.5604,-273.79611 1113.5604,-273.79611 C 1113.5604,-273.79611 1109.9449,-273.81239 1106.7681,-274.26225 C 1103.6526,-274.70344 1099.3938,-275.9605 1096.7097,-276.51138 C 1094.0258,-277.06226 1087.1585,-276.5244 1087.1585,-276.5244 z"
45464 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" />
45465 - <path
45466 - sodipodi:nodetypes="czczc"
45467 - id="path8171"
45468 - d="M 1099.25,-279.92981 C 1099.4112,-279.66119 1110.4581,-284.53027 1111.4375,-284.61731 C 1112.4169,-284.70435 1113.4375,-281.49231 1113.4375,-281.49231 C 1113.4375,-281.49231 1112.6624,-282.99665 1110.5625,-282.55481 C 1108.4626,-282.11297 1099.2616,-279.8834 1099.25,-279.92981 z"
45469 - style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
45470 - </g>
45471 - <path
45472 - id="path8173"
45473 - d="M 1107.4532,-284.0938 C 1107.0345,-283.88097 1107.2976,-283.99991 1106.806,-283.78799 C 1106.3199,-283.57845 1105.0826,-283.2136 1102.7264,-282.32904 C 1099.3953,-281.07847 1096.8962,-280.1756 1095.7005,-279.26294 C 1094.1644,-279.24168 1091.98,-279.02963 1090.0442,-278.54419 C 1087.0627,-277.79653 1085.189,-277.37018 1083.2942,-276.95044 C 1081.3994,-276.53072 1081.6187,-276.30825 1080.4192,-276.07544 C 1079.1226,-275.82378 1078.6978,-276.08443 1074.9817,-275.29419 C 1071.4918,-274.55205 1066.0869,-273.36312 1064.8255,-272.60669 C 1063.2416,-272.78748 1060.958,-272.92847 1058.9817,-272.63794 C 1055.9413,-272.19099 1054.0655,-271.96518 1052.138,-271.73169 C 1051.4826,-271.65232 1051.0969,-271.53091 1050.7942,-271.45044 C 1050.368,-271.31879 1050.1084,-271.19042 1049.4192,-271.10669 C 1048.1076,-270.94733 1047.657,-271.26352 1043.888,-270.82544 C 1040.3341,-270.41236 1034.8826,-269.55262 1033.638,-268.88794 C 1032.039,-269.18524 1029.7802,-269.42213 1027.7942,-269.23169 C 1024.7354,-268.93838 1022.8222,-268.7477 1020.888,-268.57544 C 1018.9537,-268.40318 1019.1993,-268.15307 1017.9817,-268.04419 C 1016.6655,-267.9265 1016.2219,-268.20782 1012.4505,-267.79419 C 1008.9086,-267.40575 1003.4426,-266.58492 1002.1692,-265.91919 C 1000.5703,-266.21389 998.28202,-266.4262 996.29419,-266.23169 C 993.23595,-265.93245 991.35306,-265.75145 989.41919,-265.57544 C 988.7617,-265.5156 988.37915,-265.39688 988.07544,-265.32544 C 987.64779,-265.20649 987.39193,-265.10737 986.70044,-265.04419 C 985.38448,-264.92394 984.94068,-265.23907 981.16919,-264.82544 C 977.61305,-264.43543 972.16365,-263.58628 970.91919,-262.91919 C 969.32056,-263.21338 967.05935,-263.44291 965.07544,-263.23169 C 962.01984,-262.90637 960.1014,-262.70545 958.16919,-262.51294 C 956.23698,-262.32044 956.47932,-262.07206 955.26294,-261.95044 C 953.94806,-261.81898 953.49996,-262.11498 949.73169,-261.66919 C 946.19282,-261.25054 940.75401,-260.37702 939.48169,-259.70044 C 937.88414,-259.98149 935.62173,-260.12087 933.63794,-259.88794 C 930.58596,-259.52958 928.69286,-259.32008 926.76294,-259.10669 C 926.10674,-259.03414 925.72228,-258.934 925.41919,-258.85669 C 924.99242,-258.72947 924.73428,-258.58949 924.04419,-258.51294 C 922.73086,-258.36726 922.27673,-258.68696 918.51294,-258.20044 C 914.96405,-257.74169 909.53431,-256.78142 908.29419,-256.07544 C 906.70114,-256.31968 904.46038,-256.45679 902.48169,-256.20044 C 899.4341,-255.80563 897.53098,-255.55199 895.60669,-255.29419 C 893.68241,-255.0364 893.88058,-254.80066 892.66919,-254.63794 C 891.35973,-254.46204 890.922,-254.74232 887.16919,-254.16919 C 883.6449,-253.63095 878.24604,-252.47002 876.98169,-251.73169 C 875.39419,-251.93523 873.13619,-251.98642 871.16919,-251.63794 C 868.14302,-251.10182 866.2703,-250.77625 864.35669,-250.45044 C 863.70608,-250.33967 863.34298,-250.1795 863.04419,-250.07544 C 862.62352,-249.91056 862.38074,-249.74414 861.70044,-249.60669 C 860.40579,-249.3451 859.97332,-249.61289 856.26294,-248.79419 C 852.76441,-248.02224 847.41699,-246.41126 846.20044,-245.57544 C 844.63766,-245.65289 842.44286,-245.49016 840.51294,-244.98169 C 837.5405,-244.19856 835.69533,-243.7496 833.82544,-243.23169 C 831.95556,-242.71379 832.15884,-242.46441 830.98169,-242.13794 C 829.70923,-241.78504 829.28466,-242.03085 825.63794,-240.95044 C 822.21324,-239.93581 816.9885,-238.01727 815.76294,-237.10669 C 814.22411,-237.09395 812.04311,-236.83447 810.13794,-236.23169 C 807.20688,-235.30435 805.38763,-234.77327 803.54419,-234.16919 C 802.91743,-233.96381 802.55246,-233.77661 802.26294,-233.63794 C 801.85531,-233.42433 801.6096,-233.22919 800.95044,-233.01294 C 799.69598,-232.6014 799.26433,-232.8239 795.66919,-231.57544 C 792.27934,-230.39827 787.07421,-228.36174 785.88794,-227.41919 C 784.36405,-227.35952 782.23789,-227.02432 780.35669,-226.35669 C 777.4593,-225.3284 775.65761,-224.68121 773.82544,-224.04419 C 771.99327,-223.40718 772.19759,-223.19565 771.04419,-222.79419 C 769.79741,-222.36023 769.38058,-222.59447 765.82544,-221.23169 C 762.48677,-219.95189 757.33829,-217.74914 756.13794,-216.76294 C 754.63076,-216.65525 752.50225,-216.26414 750.63794,-215.54419 C 747.76976,-214.43659 746.01414,-213.76263 744.20044,-213.07544 C 743.58378,-212.84181 743.20403,-212.63341 742.91919,-212.48169 C 742.91919,-212.48169 742.91919,-211.38794 742.91919,-211.38794 C 743.03097,-211.6103 743.30518,-212.20537 743.82544,-212.48169 C 744.52341,-212.85241 748.63907,-214.47506 750.63794,-215.20044 C 752.2948,-215.80169 754.79183,-216.52912 756.60669,-216.51294 C 756.90831,-216.51025 757.19431,-216.46204 757.45044,-216.41919 C 759.29293,-216.11094 764.91919,-214.85669 764.91919,-214.85669 C 764.91918,-214.85669 758.6857,-216.50344 757.88794,-216.70044 C 757.69715,-216.74755 757.35222,-216.76916 756.91919,-216.76294 C 758.06465,-217.63265 761.68019,-219.15645 764.26294,-220.20044 C 767.10116,-221.34771 767.37975,-221.45226 769.32544,-221.85669 C 771.33374,-222.27413 772.48169,-222.35669 772.48169,-222.35669 C 772.48169,-222.35668 772.39933,-222.95783 773.45044,-223.48169 C 774.15554,-223.8331 778.33746,-225.37409 780.35669,-226.04419 C 782.30859,-226.69192 785.41409,-227.40269 787.23169,-227.04419 C 789.09492,-226.67669 794.76294,-225.23169 794.76294,-225.23169 C 794.76295,-225.23169 788.47594,-227.1028 787.66919,-227.32544 C 787.47627,-227.37869 787.13835,-227.41148 786.70044,-227.41919 C 787.85878,-228.25207 791.49488,-229.61451 794.10669,-230.57544 C 796.97685,-231.63145 797.27403,-231.73724 799.23169,-232.10669 C 801.08518,-232.45648 802.09053,-232.53217 802.26294,-232.54419 C 802.37654,-232.76143 802.64039,-233.35421 803.16919,-233.60669 C 803.87863,-233.94543 808.09526,-235.31944 810.13794,-235.91919 C 811.83111,-236.4163 814.37871,-236.95596 816.23169,-236.82544 C 816.53964,-236.80376 816.84518,-236.72818 817.10669,-236.66919 C 818.98787,-236.24487 824.70044,-234.63794 824.70044,-234.63794 C 824.70045,-234.63794 818.3587,-236.70319 817.54419,-236.95044 C 817.3494,-237.00958 816.98631,-237.05438 816.54419,-237.07544 C 817.71368,-237.87299 821.40721,-239.13166 824.04419,-240.01294 C 826.942,-240.98141 827.2772,-241.01626 829.26294,-241.29419 C 831.31259,-241.58108 832.45044,-241.60669 832.45044,-241.60669 C 832.45042,-241.60669 832.37769,-242.21366 833.45044,-242.66919 C 834.17004,-242.97476 838.44142,-244.16994 840.51294,-244.66919 C 842.51538,-245.15177 845.71143,-245.59748 847.57544,-245.07544 C 849.48622,-244.54029 855.29419,-242.57544 855.29419,-242.57544 C 855.29419,-242.57544 848.87153,-244.99895 848.04419,-245.29419 C 847.84635,-245.3648 847.46203,-245.43458 847.01294,-245.48169 C 848.20084,-246.21034 851.92821,-247.25577 854.60669,-247.98169 C 857.55011,-248.77944 857.89877,-248.75252 859.91919,-248.88794 C 861.83208,-249.01617 862.86624,-248.95903 863.04419,-248.95044 C 863.16147,-249.1541 863.43595,-249.72992 863.98169,-249.91919 C 864.71388,-250.17313 869.06021,-250.96708 871.16919,-251.29419 C 872.91732,-251.5653 875.57007,-251.77889 877.48169,-251.38794 C 877.79935,-251.32298 878.08691,-251.20243 878.35669,-251.10669 C 880.29743,-250.41796 886.20044,-248.01294 886.20044,-248.01294 C 886.20045,-248.01294 879.66573,-250.96371 878.82544,-251.32544 C 878.62447,-251.41195 878.25031,-251.49223 877.79419,-251.57544 C 879.00069,-252.20862 882.82375,-252.97104 885.54419,-253.48169 C 888.53372,-254.04288 888.84442,-254.01123 890.88794,-254.01294 C 892.9972,-254.01471 894.20044,-253.88794 894.20044,-253.88794 C 894.20044,-253.88793 894.12773,-254.51913 895.23169,-254.82544 C 895.97221,-255.03091 900.35781,-255.65931 902.48169,-255.88794 C 904.53471,-256.10893 907.80032,-256.14016 909.70044,-255.41919 C 911.64823,-254.68012 917.54419,-252.04419 917.54419,-252.04419 C 917.54421,-252.04419 910.98131,-255.22316 910.13794,-255.60669 C 909.93626,-255.69842 909.59573,-255.7929 909.13794,-255.88794 C 910.34886,-256.48982 914.12236,-257.13678 916.85669,-257.54419 C 919.86149,-257.99191 920.1822,-257.99589 922.23169,-257.95044 C 924.17214,-257.90742 925.23868,-257.75621 925.41919,-257.73169 C 925.53811,-257.92485 925.80309,-258.49752 926.35669,-258.63794 C 927.0994,-258.82632 931.51098,-259.37222 933.63794,-259.57544 C 935.40097,-259.74386 938.05803,-259.80973 939.98169,-259.32544 C 940.30137,-259.24496 940.5852,-259.12185 940.85669,-259.01294 C 942.80962,-258.22945 948.76294,-255.54419 948.76294,-255.54419 C 948.76292,-255.54419 942.17103,-258.79767 941.32544,-259.20044 C 941.12322,-259.29676 940.75318,-259.40747 940.29419,-259.51294 C 941.50833,-260.08721 945.33785,-260.63513 948.07544,-261.01294 C 951.08382,-261.42814 951.39851,-261.45557 953.45044,-261.38794 C 955.56842,-261.31813 956.76294,-261.13794 956.76294,-261.13794 C 956.76292,-261.13794 956.68569,-261.77535 957.79419,-262.04419 C 958.53781,-262.22454 962.94595,-262.70774 965.07544,-262.88794 C 967.13391,-263.06211 970.41868,-263.01226 972.32544,-262.23169 C 974.28003,-261.43153 980.20044,-258.70044 980.20044,-258.70044 C 980.20042,-258.70044 973.64051,-262.0092 972.79419,-262.41919 C 972.59182,-262.51724 972.22233,-262.62229 971.76294,-262.73169 C 972.97811,-263.29559 976.77302,-263.84599 979.51294,-264.20044 C 982.52385,-264.58996 982.83425,-264.59809 984.88794,-264.51294 C 986.83233,-264.43234 987.89457,-264.2597 988.07544,-264.23169 C 988.1946,-264.42255 988.45821,-264.977 989.01294,-265.10669 C 989.7572,-265.28069 994.16287,-265.75716 996.29419,-265.91919 C 998.06081,-266.05346 1000.7439,-266.0449 1002.6692,-265.54419 C 1002.9892,-265.46098 1003.2725,-265.34292 1003.5442,-265.23169 C 1005.4988,-264.43153 1011.4505,-261.66919 1011.4505,-261.66919 C 1011.4504,-261.66919 1004.8593,-265.0092 1004.013,-265.41919 C 1003.8106,-265.51724 1003.4411,-265.6223 1002.9817,-265.73169 C 1004.1968,-266.29559 1008.023,-266.81475 1010.763,-267.16919 C 1013.7739,-267.55872 1014.1155,-267.59809 1016.1692,-267.51294 C 1018.2889,-267.42506 1019.4817,-267.20044 1019.4817,-267.20044 C 1019.4817,-267.20044 1019.4033,-267.84946 1020.513,-268.10669 C 1021.2573,-268.27925 1025.6625,-268.73005 1027.7942,-268.88794 C 1029.8548,-269.04054 1033.1371,-268.98471 1035.0442,-268.20044 C 1036.9992,-267.39649 1042.9192,-264.70044 1042.9192,-264.70044 C 1042.9192,-264.70044 1036.3594,-267.97631 1035.513,-268.38794 C 1035.3105,-268.48638 1034.9412,-268.59016 1034.4817,-268.70044 C 1035.6971,-269.26198 1039.4936,-269.82822 1042.2317,-270.20044 C 1045.2407,-270.60949 1045.5544,-270.61602 1047.6067,-270.54419 C 1049.5498,-270.4762 1050.6139,-270.37934 1050.7942,-270.35669 C 1050.913,-270.55109 1051.1788,-271.0855 1051.7317,-271.23169 C 1052.4735,-271.42781 1056.8628,-272.06047 1058.9817,-272.32544 C 1060.7381,-272.54505 1063.387,-272.65775 1065.2942,-272.29419 C 1065.6111,-272.23378 1065.9,-272.10481 1066.1692,-272.01294 C 1068.1054,-271.35202 1074.013,-269.07544 1074.013,-269.07544 C 1074.0129,-269.07544 1067.4763,-271.88199 1066.638,-272.23169 C 1066.4375,-272.31532 1066.0618,-272.40502 1065.6067,-272.48169 C 1066.8104,-273.13215 1070.6258,-273.85364 1073.3255,-274.48169 C 1076.2922,-275.17189 1076.6144,-275.23676 1078.638,-275.35669 C 1080.7266,-275.48049 1081.9192,-275.38794 1081.9192,-275.38794 C 1081.9192,-275.38793 1081.8322,-276.01999 1082.9192,-276.41919 C 1083.6484,-276.68699 1087.9664,-277.75716 1090.0442,-278.23169 C 1092.0527,-278.69038 1095.2121,-279.26099 1097.0442,-278.85669 C 1098.9223,-278.44223 1110.6224,-275.84106 1110.6224,-275.84106 C 1110.6224,-275.84106 1098.2949,-278.86372 1097.4817,-279.10669 C 1097.2872,-279.16481 1096.9231,-279.21295 1096.4817,-279.23169 C 1097.6493,-280.03538 1099.9959,-280.91899 1102.5911,-281.93481 C 1104.2725,-282.59299 1103.5148,-282.3114 1105.367,-282.93841 C 1107.1206,-283.53207 1107.8524,-283.94912 1107.9974,-284.0514 C 1108.3435,-284.25791 1107.6414,-284.17328 1107.4532,-284.0938 z"
45474 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7333);enable-background:new"
45475 - sodipodi:nodetypes="czscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssccsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscc" />
45476 - <path
45477 - id="path8175"
45478 - d="M 1082.625,-275.125 C 1084.498,-274.73152 1087.1211,-273.97945 1088.6563,-273.15625 C 1090.1915,-272.33306 1091.4785,-272.10025 1094.0313,-270.65625 C 1096.5579,-269.22699 1098.8271,-268.64929 1101,-268.125 C 1103.3476,-267.55858 1106.4354,-267.40977 1109.8438,-266.9375 C 1108.7549,-267.77725 1103.2364,-268.10995 1101.4375,-268.5 C 1099.6386,-268.89006 1097.5434,-269.51616 1094.8438,-270.8125 C 1092.1441,-272.10884 1091.3494,-272.61146 1089.0313,-273.5 C 1086.7131,-274.38854 1085.0269,-274.88314 1082.625,-275.125 z"
45479 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7285);enable-background:new" />
45480 - <path
45481 - id="path8177"
45482 - d="M 1051.4688,-270 C 1053.3741,-269.42241 1055.9969,-268.38428 1057.5625,-267.40625 C 1059.1281,-266.42823 1060.4427,-266.04644 1063.0625,-264.28125 C 1065.6555,-262.53409 1068.0484,-261.57198 1070.3125,-260.6875 C 1072.7586,-259.73193 1075.9951,-259.03037 1079.7188,-257.625 C 1078.5292,-258.76284 1072.6557,-260.31175 1070.7813,-261 C 1068.9068,-261.68825 1066.6995,-262.5662 1063.9063,-264.28125 C 1061.113,-265.99629 1060.3327,-266.56515 1057.9688,-267.6875 C 1055.6047,-268.80984 1053.9121,-269.52205 1051.4688,-270 z"
45483 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7289);enable-background:new" />
45484 - <path
45485 - id="path8179"
45486 - d="M 1020.2188,-266.84375 C 1022.1307,-266.20564 1024.8,-265.08839 1026.375,-264.03125 C 1027.9501,-262.9741 1029.2706,-262.52258 1031.9063,-260.625 C 1034.5149,-258.74679 1036.9347,-257.59497 1039.2188,-256.5625 C 1041.6865,-255.44705 1044.9833,-254.3892 1048.75,-252.71875 C 1047.5467,-253.94128 1041.5472,-256.03298 1039.6563,-256.84375 C 1037.7653,-257.65452 1035.5914,-258.73754 1032.7813,-260.59375 C 1029.9711,-262.44995 1029.1595,-263.07068 1026.7813,-264.3125 C 1024.403,-265.5543 1022.6706,-266.28819 1020.2188,-266.84375 z"
45487 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7293);enable-background:new" />
45488 - <path
45489 - id="path8181"
45490 - d="M 1110.1719,-266.89063 C 1110.3227,-266.84207 1110.8599,-266.25963 1110.2813,-265.40625 C 1109.4712,-264.21166 1104.5764,-262.08196 1101.7188,-261.28125 C 1098.8739,-260.48413 1095.4287,-260.30351 1091.1563,-261.65625 C 1086.8547,-263.0182 1085.6866,-264.12497 1080.5,-265.96875 C 1085.164,-263.85358 1086.6953,-262.01642 1090.625,-260.625 C 1092.2457,-260.05113 1093.9921,-259.6854 1095.6875,-259.59375 C 1095.2424,-259.26812 1094.1572,-258.61045 1092.125,-258 C 1089.3295,-257.16031 1085.4759,-256.46622 1083.875,-256.375 C 1082.3604,-256.28868 1080.733,-256.88749 1080.4375,-257 C 1080.6042,-256.89692 1080.8107,-256.62266 1080.1875,-255.96875 C 1079.2882,-255.02512 1074.0401,-254.04575 1071.0625,-253.71875 C 1068.0982,-253.3932 1064.5409,-253.73471 1060.1563,-255.625 C 1056.1783,-257.33997 1054.8173,-258.54036 1050.75,-260.375 C 1050.75,-260.375 1050.75,-260.21875 1050.75,-260.21875 C 1054.3931,-258.12346 1056.034,-256.33548 1059.625,-254.65625 C 1061.3552,-253.84716 1063.2167,-253.24749 1065.0313,-252.9375 C 1064.4964,-252.65074 1063.4735,-252.22599 1061.5938,-251.90625 C 1058.7248,-251.41829 1054.7848,-251.09011 1053.1563,-251.15625 C 1052.3056,-251.19079 1051.4277,-251.34062 1050.75,-251.5625 C 1050.0652,-251.77738 1049.5603,-252.00717 1049.4375,-252.0625 C 1049.6069,-251.95529 1049.8686,-251.65962 1049.2188,-251.03125 C 1048.3091,-250.15163 1042.9727,-249.69487 1039.9688,-249.5625 C 1036.9783,-249.43071 1033.3799,-250.01313 1028.9688,-252.125 C 1024.5276,-254.25126 1023.3273,-255.5266 1018.0625,-257.90625 C 1022.7968,-255.30921 1024.349,-253.27715 1028.4063,-251.1875 C 1030.0796,-250.32565 1031.8915,-249.69325 1033.6563,-249.25 C 1033.193,-249.01668 1032.0669,-248.56186 1029.9688,-248.3125 C 1027.0825,-247.96952 1023.1342,-247.81962 1021.5,-247.9375 C 1019.9538,-248.049 1018.2688,-248.79446 1017.9688,-248.9375 C 1018.1379,-248.81721 1018.3826,-248.52702 1017.75,-247.9375 C 1016.8372,-247.08677 1011.5059,-246.67538 1008.5,-246.5625 C 1005.5075,-246.45013 1001.9103,-247.05293 997.5,-249.15625 C 993.49875,-251.06448 992.11197,-252.29408 988.03125,-254.25 C 988.03122,-254.25 988.03125,-254.09375 988.03125,-254.09375 C 991.68631,-251.88983 993.32546,-250.0412 996.9375,-248.1875 C 998.67779,-247.29435 1000.5745,-246.65923 1002.4063,-246.21875 C 1001.8663,-245.97045 1000.8282,-245.60342 998.9375,-245.375 C 996.05182,-245.02642 992.07145,-244.85405 990.4375,-244.96875 C 989.58405,-245.02865 988.71119,-245.22666 988.03125,-245.46875 C 987.34415,-245.70405 986.8419,-245.94101 986.71875,-246 C 986.88873,-245.88773 987.18323,-245.57775 986.53125,-244.96875 C 985.6186,-244.11625 980.25592,-243.67538 977.25,-243.5625 C 974.25754,-243.45013 970.65654,-244.09055 966.25,-246.15625 C 961.81347,-248.23603 960.60312,-249.48796 955.34375,-251.8125 C 960.07313,-249.26501 961.63449,-247.2347 965.6875,-245.1875 C 967.35905,-244.34317 969.17304,-243.72107 970.9375,-243.28125 C 970.47427,-243.04703 969.3478,-242.59718 967.25,-242.34375 C 964.36431,-241.99517 960.4138,-241.77423 958.78125,-241.875 C 957.23669,-241.97032 955.58094,-242.70385 955.28125,-242.84375 C 955.45024,-242.72522 955.66317,-242.4399 955.03125,-241.84375 C 954.11939,-240.98347 948.7846,-240.5135 945.78125,-240.375 C 942.7913,-240.2371 939.2138,-240.82568 934.8125,-242.84375 C 930.81942,-244.67464 929.44739,-245.87295 925.375,-247.75 C 925.37498,-247.75 925.375,-247.59375 925.375,-247.59375 C 929.02261,-245.46048 930.64533,-243.65888 934.25,-241.875 C 935.98675,-241.01549 937.85727,-240.42486 939.6875,-240 C 939.14803,-239.7471 938.13687,-239.35871 936.25,-239.09375 C 933.37022,-238.68939 929.41187,-238.44813 927.78125,-238.53125 C 926.92953,-238.57466 926.05355,-238.7398 925.375,-238.96875 C 924.68931,-239.19076 924.1854,-239.41214 924.0625,-239.46875 C 924.23209,-239.35976 924.4944,-239.0591 923.84375,-238.4375 C 922.93296,-237.56736 917.59354,-237.04598 914.59375,-236.875 C 911.60742,-236.70479 908.01994,-237.19077 903.625,-239.15625 C 899.20011,-241.13513 898.01904,-242.38444 892.78125,-244.53125 C 897.49122,-242.14358 899.05142,-240.14252 903.09375,-238.1875 C 904.7609,-237.38119 906.55418,-236.79092 908.3125,-236.40625 C 907.85087,-236.15755 906.7155,-235.694 904.625,-235.375 C 901.7494,-234.93624 897.8446,-234.6419 896.21875,-234.6875 C 894.68052,-234.73062 892.98595,-235.43272 892.6875,-235.5625 C 892.85583,-235.44968 893.09807,-235.14875 892.46875,-234.53125 C 891.56063,-233.64015 886.2658,-233.003 883.28125,-232.71875 C 880.31007,-232.43577 876.70783,-232.89455 872.34375,-234.65625 C 868.38441,-236.25456 867.0146,-237.45112 863,-238.96875 C 863.00003,-238.96875 863,-238.8125 863,-238.8125 C 866.5959,-237.00115 868.23831,-235.23017 871.8125,-233.65625 C 873.53457,-232.8979 875.39998,-232.3673 877.21875,-232.03125 C 876.68266,-231.75217 875.65217,-231.34362 873.78125,-230.96875 C 870.92586,-230.39665 866.99183,-229.94936 865.375,-229.9375 C 864.53049,-229.93129 863.66892,-230.01844 863,-230.1875 C 862.32409,-230.34901 861.83991,-230.51673 861.71875,-230.5625 C 861.88597,-230.46848 862.14142,-230.17902 861.5,-229.5 C 860.60213,-228.54948 855.31352,-227.58292 852.375,-227.0625 C 849.44966,-226.54441 845.94285,-226.68826 841.65625,-228.09375 C 837.34045,-229.50882 836.18348,-230.62369 831.09375,-232.0625 C 835.6706,-230.31149 837.1823,-228.50244 841.125,-227.0625 C 842.75108,-226.46861 844.49385,-226.10685 846.21875,-225.90625 C 845.7659,-225.60923 844.66397,-225.02286 842.625,-224.4375 C 839.82028,-223.63233 835.98614,-222.86167 834.40625,-222.6875 C 832.9115,-222.5227 831.29002,-223.00431 831,-223.09375 C 831.16356,-223.00368 831.39278,-222.73382 830.78125,-222.03125 C 829.89878,-221.0174 824.73673,-219.6596 821.84375,-218.96875 C 818.96373,-218.28097 815.50815,-218.20873 811.28125,-219.40625 C 807.4464,-220.4927 806.10867,-221.47862 802.21875,-222.53125 C 802.21874,-222.53125 802.21875,-222.375 802.21875,-222.375 C 805.70293,-220.98015 807.28816,-219.4556 810.75,-218.34375 C 812.41793,-217.80803 814.20578,-217.55701 815.96875,-217.46875 C 815.44911,-217.11663 814.46836,-216.55423 812.65625,-215.9375 C 809.89059,-214.99625 806.06601,-214.00213 804.5,-213.78125 C 803.68206,-213.66586 802.8669,-213.65842 802.21875,-213.75 C 801.56379,-213.83321 801.08615,-213.96827 800.96875,-214 C 801.13079,-213.92536 801.40274,-213.65956 800.78125,-212.90625 C 799.91125,-211.85172 794.77162,-210.247 791.90625,-209.46875 C 789.05372,-208.69399 785.64713,-208.51055 781.46875,-209.5625 C 777.26192,-210.62163 776.11206,-211.60416 771.125,-212.71875 C 775.60954,-211.25929 777.09435,-209.58352 780.9375,-208.46875 C 782.52254,-208.00898 784.22429,-207.8305 785.90625,-207.78125 C 785.46468,-207.44449 784.39374,-206.75352 782.40625,-206 C 779.67232,-204.96351 775.95427,-203.83731 774.40625,-203.5625 C 772.94163,-203.30248 771.34667,-203.67904 771.0625,-203.75 C 771.22275,-203.67035 771.44294,-203.42902 770.84375,-202.6875 C 769.97909,-201.61744 764.92723,-199.86935 762.09375,-199 C 759.27295,-198.13453 755.88625,-197.84369 751.75,-198.78125 C 747.99741,-199.63186 746.70215,-200.49772 742.875,-201.375 C 742.875,-201.375 742.875,-201.21875 742.875,-201.21875 C 746.30296,-199.98096 747.86241,-198.58645 751.25,-197.6875 C 752.88216,-197.25436 754.61704,-197.10449 756.34375,-197.125 C 755.83482,-196.74083 754.867,-196.10318 753.09375,-195.375 C 750.38741,-194.26366 746.65742,-193.06719 745.125,-192.75 C 744.3246,-192.58431 743.51269,-192.53138 742.875,-192.59375 C 742.875,-192.59375 742.875,-192.07823 742.875,-191.67146 C 742.875,-191.40639 742.875,-191.1875 742.875,-191.1875 C 743.10145,-191.33218 743.32391,-191.46011 743.59375,-191.5625 C 744.67427,-191.97248 745.76536,-191.77827 749.59375,-193.25 C 753.42218,-194.72174 754.81787,-195.25498 755.5,-195.65625 C 756.1796,-196.05603 757.11165,-196.53562 757.71875,-197.1875 C 759.5456,-197.32525 761.2895,-197.68073 762.65625,-198.1875 C 765.62437,-199.28802 767.53162,-199.99369 769.4375,-200.65625 C 771.34336,-201.31879 771.79159,-202.07112 772.84375,-202.4375 C 773.9353,-202.81761 775.03886,-202.60288 778.90625,-203.96875 C 782.7737,-205.33461 784.18941,-205.79583 784.875,-206.1875 C 785.57609,-206.58802 786.57581,-207.12048 787.1875,-207.78125 C 789.1583,-207.83591 791.00435,-208.16588 792.46875,-208.65625 C 795.47023,-209.66133 797.3949,-210.27796 799.3125,-210.90625 C 800.8511,-211.41035 801.48652,-211.95302 802.21875,-212.34375 C 802.44891,-212.47806 802.69449,-212.59748 802.96875,-212.6875 C 804.06698,-213.04798 805.1502,-212.76887 809.0625,-214 C 812.97483,-215.23113 814.42855,-215.67295 815.125,-216.03125 C 815.81888,-216.38822 816.75515,-216.82386 817.375,-217.4375 C 819.24021,-217.46016 821.01081,-217.70433 822.40625,-218.125 C 825.43668,-219.03854 827.39863,-219.5551 829.34375,-220.09375 C 831.28886,-220.63239 831.76993,-221.35827 832.84375,-221.65625 C 833.95776,-221.9654 835.06369,-221.64886 839.03125,-222.6875 C 842.99886,-223.72613 844.44883,-224.12023 845.15625,-224.4375 C 845.89112,-224.76709 846.97008,-225.19122 847.59375,-225.8125 C 849.59149,-225.6965 851.45118,-225.83259 852.9375,-226.1875 C 856.01561,-226.9225 858.02094,-227.28844 860,-227.6875 C 861.58792,-228.00768 862.24429,-228.47805 863,-228.78125 C 863.23757,-228.88805 863.46695,-228.97401 863.75,-229.03125 C 864.88347,-229.26044 866.05448,-228.82232 870.09375,-229.53125 C 874.13308,-230.24018 875.594,-230.45834 876.3125,-230.71875 C 877.02836,-230.97819 878.01678,-231.28599 878.65625,-231.8125 C 880.58052,-231.57301 882.40413,-231.58797 883.84375,-231.8125 C 886.97008,-232.30012 888.9983,-232.51317 891,-232.78125 C 893.00171,-233.04932 893.48869,-233.72639 894.59375,-233.875 C 895.74014,-234.02918 896.86967,-233.57343 900.9375,-234.09375 C 905.00534,-234.61407 906.49763,-234.78948 907.21875,-235.03125 C 907.95585,-235.27839 909.01684,-235.61748 909.65625,-236.15625 C 911.70632,-235.82072 913.63003,-235.75829 915.15625,-235.9375 C 918.29856,-236.30646 920.33619,-236.49686 922.34375,-236.71875 C 923.95451,-236.89677 924.60842,-237.32695 925.375,-237.5625 C 925.61594,-237.64802 925.86912,-237.7181 926.15625,-237.75 C 927.30603,-237.87772 928.45754,-237.40335 932.53125,-237.875 C 936.60499,-238.34665 938.09034,-238.4856 938.8125,-238.71875 C 939.53196,-238.95102 940.51274,-239.19221 941.15625,-239.6875 C 943.09262,-239.35404 944.92631,-239.28326 946.375,-239.4375 C 949.52102,-239.77245 951.55256,-239.95609 953.5625,-240.15625 C 955.57246,-240.35639 956.04664,-240.98264 957.15625,-241.09375 C 958.30739,-241.20903 959.45268,-240.72869 963.53125,-241.15625 C 967.60986,-241.58381 969.12011,-241.71834 969.84375,-241.9375 C 970.5829,-242.16136 971.63947,-242.45075 972.28125,-242.96875 C 974.33835,-242.57008 976.28312,-242.47535 977.8125,-242.625 C 980.96123,-242.9331 982.98834,-243.09825 985,-243.28125 C 986.61407,-243.42807 987.2631,-243.8418 988.03125,-244.0625 C 988.27267,-244.14336 988.52478,-244.19241 988.8125,-244.21875 C 989.96461,-244.3242 991.10546,-243.826 995.1875,-244.21875 C 999.26958,-244.6115 1000.7764,-244.74959 1001.5,-244.96875 C 1002.2209,-245.18708 1003.1997,-245.41645 1003.8438,-245.90625 C 1005.7818,-245.55626 1007.6126,-245.45187 1009.0625,-245.59375 C 1012.2112,-245.90185 1014.2383,-246.067 1016.25,-246.25 C 1018.2616,-246.43299 1018.7642,-247.08802 1019.875,-247.1875 C 1021.0273,-247.29073 1022.1672,-246.80267 1026.25,-247.1875 C 1030.3329,-247.57232 1031.8387,-247.6885 1032.5625,-247.90625 C 1033.3018,-248.12868 1034.3581,-248.42074 1035,-248.9375 C 1037.0574,-248.53573 1039.0029,-248.43417 1040.5313,-248.59375 C 1043.6779,-248.92227 1045.7084,-249.11645 1047.7188,-249.3125 C 1049.3318,-249.46979 1049.9844,-249.94398 1050.75,-250.1875 C 1050.9907,-250.27554 1051.2132,-250.30887 1051.5,-250.34375 C 1052.6483,-250.48345 1053.8167,-250.00384 1057.875,-250.59375 C 1061.9333,-251.18367 1063.4368,-251.37089 1064.1563,-251.625 C 1064.873,-251.87816 1065.8308,-252.18307 1066.4688,-252.71875 C 1068.3885,-252.50681 1070.1887,-252.56734 1071.625,-252.8125 C 1074.7441,-253.3449 1076.7366,-253.74111 1078.7188,-254.125 C 1080.7009,-254.50887 1081.1931,-255.16465 1082.2813,-255.40625 C 1083.4101,-255.65691 1084.5516,-255.28996 1088.5313,-256.28125 C 1092.5109,-257.27253 1093.9609,-257.70055 1094.6563,-258.0625 C 1095.3786,-258.43851 1096.4182,-258.93308 1097.0313,-259.59375 C 1098.9943,-259.6058 1100.825,-259.8848 1102.25,-260.4375 C 1105.2012,-261.58211 1107.1232,-262.30692 1108.9375,-263.1875 C 1110.3932,-263.89403 1111.2723,-264.87391 1111.4844,-265.17188 C 1111.6966,-265.46984 1111.5962,-265.91718 1111.6223,-265.93863 C 1111.6652,-265.97387 1111.9416,-266.0236 1112.1013,-266.36707 C 1112.9602,-268.21415 1114.4223,-272.01166 1114.5365,-272.69652 C 1114.6502,-273.37868 1114.7003,-274.04426 1114.751,-274.44149 C 1114.7804,-274.67101 1114.6043,-275.30693 1114.6264,-275.36553 C 1114.6573,-275.44759 1114.9309,-275.63081 1114.9863,-275.88024 C 1115.2526,-277.07857 1115.0752,-278.07153 1114.8612,-279.48917 C 1114.6472,-280.90681 1113.8775,-284.11131 1113.2243,-284.96543 C 1112.5654,-285.82715 1112.0014,-285.9766 1111.4764,-285.96609 C 1111.2678,-285.69633 1111.6132,-285.703 1111.639,-285.65348 C 1112.3196,-285.60269 1112.573,-285.28484 1113.0582,-284.75686 C 1113.5434,-284.22888 1114.28,-280.90569 1114.4166,-279.4553 C 1114.5532,-278.00491 1114.6066,-276.5951 1114.3286,-275.98666 C 1114.0505,-275.37821 1113.6054,-275.46963 1113.313,-275.40375 C 1113.844,-275.21786 1113.9828,-275.27892 1114.0444,-274.43446 C 1114.1037,-273.62108 1113.9112,-272.79477 1113.5246,-271.62884 C 1113.1334,-270.44883 1111.6794,-267.27886 1111.2389,-267.03007 C 1110.7866,-266.77456 1110.5075,-266.75969 1110.1719,-266.89063 z"
45491 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7337);enable-background:new"
45492 - sodipodi:nodetypes="cssscscsscsssccscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssccscsscscssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsszsszssszzcczzzczzzc" />
45493 - <path
45494 - id="path8183"
45495 - d="M 988.75,-263.84375 C 990.66161,-263.20935 993.30027,-262.08534 994.875,-261.03125 C 996.44977,-259.97716 997.7711,-259.54873 1000.4063,-257.65625 C 1003.0145,-255.78311 1005.4332,-254.64103 1007.7188,-253.59375 C 1010.1881,-252.46228 1013.4709,-251.43901 1017.25,-249.65625 C 1016.0428,-250.91465 1010.111,-253.0207 1008.2188,-253.84375 C 1006.3266,-254.66679 1004.0908,-255.77424 1001.2813,-257.625 C 998.47169,-259.47575 997.65906,-260.10654 995.28125,-261.34375 C 992.90343,-262.58094 991.20137,-263.29295 988.75,-263.84375 z"
45496 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7297);enable-background:new" />
45497 - <path
45498 - id="path8185"
45499 - d="M 957.5,-260.78125 C 959.41,-260.16315 962.08288,-259.07191 963.65625,-258.03125 C 965.22964,-256.99059 966.55233,-256.54873 969.1875,-254.65625 C 971.79573,-252.7831 974.21442,-251.64104 976.5,-250.59375 C 978.96931,-249.46228 982.25213,-248.439 986.03125,-246.65625 C 984.82397,-247.91465 978.82971,-250.05195 976.9375,-250.875 C 975.04533,-251.69804 972.84084,-252.8055 970.03125,-254.65625 C 967.22167,-256.507 966.4383,-257.09557 964.0625,-258.3125 C 961.68672,-259.52941 959.94929,-260.25135 957.5,-260.78125 z"
45500 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7301);enable-background:new" />
45501 - <path
45502 - id="path8187"
45503 - d="M 926.09375,-257.375 C 928.00147,-256.77755 930.64723,-255.71116 932.21875,-254.6875 C 933.79025,-253.66385 935.08897,-253.24779 937.71875,-251.40625 C 940.32166,-249.58352 942.74762,-248.43405 945.03125,-247.40625 C 947.49845,-246.29584 950.7866,-245.31302 954.5625,-243.5625 C 953.35627,-244.8106 947.3906,-246.88059 945.5,-247.6875 C 943.60942,-248.4944 941.39758,-249.57854 938.59375,-251.375 C 935.7899,-253.17144 934.96671,-253.77751 932.59375,-254.96875 C 930.22078,-256.15999 928.54013,-256.87158 926.09375,-257.375 z"
45504 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7305);enable-background:new" />
45505 - <path
45506 - id="path8189"
45507 - d="M 894.90625,-253.5625 C 896.80838,-253.00895 899.49326,-251.97363 901.0625,-250.96875 C 902.63173,-249.96388 903.93651,-249.56011 906.5625,-247.75 C 909.16162,-245.95836 911.56284,-244.87811 913.84375,-243.875 C 916.30803,-242.79126 919.60359,-241.83471 923.375,-240.125 C 922.1702,-241.36007 916.20084,-243.36978 914.3125,-244.15625 C 912.42418,-244.94272 910.2373,-245.98705 907.4375,-247.75 C 904.63773,-249.51294 903.83831,-250.11836 901.46875,-251.28125 C 899.09918,-252.44413 897.3455,-253.11537 894.90625,-253.5625 z"
45508 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7309);enable-background:new" />
45509 - <path
45510 - id="path8191"
45511 - d="M 863.71875,-248.65625 C 865.59937,-248.22716 868.22302,-247.27587 869.78125,-246.34375 C 871.33948,-245.41164 872.63358,-245.08599 875.25,-243.34375 C 877.83971,-241.61931 880.23067,-240.63573 882.5,-239.71875 C 884.95176,-238.72806 888.23959,-237.84168 892,-236.21875 C 890.79869,-237.42609 884.84751,-239.28484 882.96875,-240 C 881.09,-240.71517 878.88335,-241.68442 876.09375,-243.375 C 873.30412,-245.06557 872.50914,-245.60322 870.15625,-246.65625 C 867.80333,-247.70926 866.13041,-248.36873 863.71875,-248.65625 z"
45512 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7313);enable-background:new" />
45513 - <path
45514 - id="path8193"
45515 - d="M 833.15625,-241.375 C 835.00461,-241.07856 837.6257,-240.39868 839.15625,-239.59375 C 840.68683,-238.78882 841.96999,-238.53802 844.53125,-237.0625 C 847.06629,-235.60204 849.42193,-234.73741 851.65625,-234 C 854.07024,-233.20332 857.31336,-232.53311 861.03125,-231.15625 C 859.84354,-232.28498 853.94353,-233.746 852.09375,-234.3125 C 850.24398,-234.879 848.09033,-235.68642 845.34375,-237.15625 C 842.59718,-238.62608 841.84239,-239.07653 839.53125,-239.9375 C 837.2201,-240.79845 835.52654,-241.25759 833.15625,-241.375 z"
45516 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7317);enable-background:new" />
45517 - <path
45518 - id="path8195"
45519 - d="M 802.90625,-232.3125 C 804.72845,-232.10123 807.27201,-231.51193 808.78125,-230.78125 C 810.2905,-230.05059 811.53693,-229.85127 814.0625,-228.5 C 816.56226,-227.16254 818.89404,-226.45157 821.09375,-225.84375 C 823.47028,-225.18708 826.65839,-224.77087 830.3125,-223.65625 C 829.14515,-224.70121 823.38362,-225.75954 821.5625,-226.21875 C 819.74139,-226.67796 817.61025,-227.34571 814.90625,-228.65625 C 812.20222,-229.96677 811.43519,-230.37615 809.15625,-231.125 C 806.8773,-231.87383 805.243,-232.30431 802.90625,-232.3125 z"
45520 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7321);enable-background:new" />
45521 - <path
45522 - id="path8197"
45523 - d="M 773.1875,-222.1875 C 774.99859,-222.0088 777.50809,-221.52244 779,-220.84375 C 780.49194,-220.16506 781.7534,-220.04553 784.25,-218.78125 C 786.72107,-217.52987 789.04005,-216.88511 791.21875,-216.34375 C 793.57262,-215.75887 796.71009,-215.44623 800.3125,-214.5 C 799.16166,-215.49116 793.45999,-216.2833 791.65625,-216.6875 C 789.85253,-217.0917 787.74072,-217.70866 785.0625,-218.9375 C 782.38432,-220.16634 781.65905,-220.54839 779.40625,-221.21875 C 777.15346,-221.88909 775.50998,-222.22107 773.1875,-222.1875 z"
45524 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7329);enable-background:new" />
45525 - <path
45526 - id="path8199"
45527 - d="M 743.5625,-211.1875 C 745.35531,-211.05839 747.83563,-210.63785 749.3125,-210 C 750.7894,-209.36215 752.0286,-209.25844 754.5,-208.0625 C 756.94618,-206.87878 759.22054,-206.31584 761.375,-205.84375 C 763.70267,-205.33372 766.7946,-205.16311 770.375,-204.28125 C 769.23121,-205.25185 763.62741,-205.8719 761.84375,-206.21875 C 760.06008,-206.56559 757.9609,-207.10631 755.3125,-208.25 C 752.66409,-209.39368 751.91755,-209.76631 749.6875,-210.375 C 747.45742,-210.98368 745.86156,-211.28466 743.5625,-211.1875 z"
45528 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;filter:url(#filter7325);enable-background:new" />
45529 - </g>
45530 - </g>
45531 - <path
45532 - style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45533 - d="M 863.87812,475.6679 C 865.52024,472.4499 867.39593,469.93261 868.73948,465.81892 C 869.5382,462.16103 872.05152,463.78819 875.99995,457.42202 C 877.40188,455.18252 881.47648,457.81338 884.96505,455.02291 C 886.23577,454.21972 887.84993,454.6186 889.44761,454.95978 C 893.213,456.27874 895.27337,458.66333 897.78137,460.76815 C 903.92043,466.73838 918.31551,468.71142 921.26741,467.08161 C 922.70146,464.17687 929.14869,461.67273 933.64178,455.96993 C 934.38989,454.84726 945.37114,447.22547 948.28899,449.40394"
45534 - id="path8201"
45535 - sodipodi:nodetypes="ccccccccc" />
45536 - <path
45537 - style="opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45538 - d="M 888.50059,465.25071 C 895.864,462.01774 902.31149,456.34231 909.20872,451.86619 C 912.51929,449.89665 916.07855,455.0822 920.00472,455.46485 C 922.30245,455.24672 923.71762,456.66744 925.68683,457.10635 C 930.84319,458.42414 928.08476,460.97123 935.66209,463.54607 C 941.8177,465.26647 944.56949,456.7476 950.56184,456.22247 C 955.43923,455.71948 958.66076,455.90644 962.17859,455.96993 C 966.10555,456.10882 966.25714,452.47233 968.23951,450.66663 C 971.22007,447.86141 975.39512,448.81691 978.38436,445.92573 C 979.4019,444.54105 980.33894,442.91488 981.11895,440.81764 C 982.00096,438.8173 984.15901,441.12362 985.91718,442.08033"
45539 - id="path8203"
45540 - sodipodi:nodetypes="ccccccccccc" />
45541 - </g>
45542 - <g
45543 - inkscape:groupmode="layer"
45544 - id="layer15"
45545 - inkscape:label="Feet"
45546 - style="display:inline">
45547 - <path
45548 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9048);enable-background:accumulate"
45549 - d="M 403.27922,1056.3058 L 459.84776,1013.8794 L 531.97265,1028.0215 L 485.30361,1080.3474 L 431.56349,1087.4185 L 403.27922,1056.3058 z"
45550 - id="path8994" />
45551 - <path
45552 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45553 - d="M 542.27183,1060.5719 C 540.86456,1079.3731 541.12693,1093.3229 544.35357,1109.8752 C 547.58023,1126.4275 560.75966,1155.7825 564.68798,1173.0589 C 568.61419,1190.326 567.38211,1211.3686 552.22854,1224.2072 C 536.91093,1237.1846 510.17726,1245.8061 484.39623,1239.9409 C 458.61518,1234.0757 414.84716,1190.7175 395.80604,1169.7126 C 376.6939,1148.6293 332.04518,1075.862 317.86751,1045.4368 C 303.68984,1015.0117 305.2079,1008.7182 309.74779,999.90708 C 300.38107,975.38658 297.33408,949.84027 276.03534,924.33044 C 306.36081,927.44488 319.91562,951.28677 336.16102,971.47019 C 330.63113,923.39416 318.10631,907.05369 307.78707,880.74589 C 337.78137,886.82754 358.36643,912.61828 371.76686,953.45839 C 381.32101,949.54048 390.00462,944.08545 401.95427,944.39719 C 390.65677,902.70139 384.00481,874.48135 365.26702,843.32725 C 418.70898,848.99758 448.92404,923.96657 444.23844,931.28805 C 454.21641,929.04406 463.24409,924.75767 474.67497,925.63638 C 463.426,887.28936 453.62716,848.76848 471.01526,806.98819 C 471.01526,806.98819 519.30204,872.42507 525.40492,892.79397 C 531.50779,913.16287 526.92373,931.49448 526.92373,931.49448 C 526.92373,931.49448 543.8833,962.57978 547.21765,982.58862 C 550.59075,1002.83 543.68496,1041.6919 542.27183,1060.5719 z"
45554 - id="path4189"
45555 - sodipodi:nodetypes="czzzzzzcccccccccczczz" />
45556 - <path
45557 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter3587);enable-background:accumulate"
45558 - d="M 719.5,738.69519 L 737.81177,754.12715 L 782.2228,738.73894 L 805.5,713.19519 L 816.96397,732.41584 L 847.63558,745.19938 L 872.73295,750.92775 L 892,723.19519 L 908.02309,747.02126 L 947,752.19519 L 957.24541,745.99667 L 964.00012,754.69487 L 989.5,765.69519 L 991.5,725.19519 L 955.94866,710.6576 L 923.45591,689.1305 L 883.0038,677.66492 L 861.69668,662.13148 L 840,685.19519 L 755.02878,638.61208 L 722,676.69519 L 719.5,738.69519 z"
45559 - id="path4191"
45560 - sodipodi:nodetypes="cccccccccccccccccccccc"
45561 - clip-path="url(#clipPath3631)"
45562 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)" />
45563 - <path
45564 - style="opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter3898);enable-background:new"
45565 - d="M 584,696.5 L 577.4375,713.65625 C 577.4375,713.65625 569.62598,734.02113 561.75,757.3125 C 557.81201,768.95818 553.86698,781.35395 550.8125,792.4375 C 547.75802,803.52105 545.47664,812.81736 545.3125,820.71875 C 544.91443,839.88071 551.05903,855.60705 554.25,862.46875 C 553.47847,866.02398 552.25863,871.92307 550.90625,880.5625 C 548.98583,892.83071 547.18798,907.71691 548.53125,920.4375 C 549.91334,933.52585 555.34347,948.62515 561.125,963.46875 C 566.90653,978.31235 573.17935,992.69586 576.34375,1001.5 C 582.97581,1019.9519 586.33671,1033.0763 587.65625,1050 C 588.2376,1057.4561 587.41398,1070.336 586.40625,1083.375 C 585.39852,1096.414 584.21964,1109.6764 584.71875,1120.3438 C 585.70786,1141.4836 594.04673,1167.1785 618.09375,1178.2812 C 640.86858,1188.7966 673.42057,1189.9834 701.53125,1174.8438 C 717.69117,1166.1404 731.60759,1147.7462 744.90625,1127.9375 C 758.20491,1108.1288 769.87542,1086.8841 776.84375,1073.0312 C 792.19667,1042.51 816.23728,957.56702 822.46875,920.3125 C 825.48734,902.26597 826.39041,891.24695 825.09375,882.28125 C 824.11522,875.51521 821.26556,870.13385 818.21875,866.0625 C 820.26149,838.55459 817.48668,814.69372 830.1875,786.65625 L 840.75,763.375 L 816.9375,772.6875 C 799.44775,779.52503 788.03586,791.73286 780.34375,804.75 C 780.02124,805.29577 779.78061,805.85776 779.46875,806.40625 C 779.69078,783.89104 783.87659,768.76866 786.0625,747.71875 L 788.03125,728.71875 L 771,737.375 C 740.40551,752.93071 725.30511,785.56821 721.28125,827.59375 C 717.03593,826.96828 712.44985,826.5741 707.46875,826.75 C 707.17726,787.56964 707.07246,759.71315 716.0625,727.375 L 721.65625,707.25 L 702.21875,714.90625 C 671.30938,727.11019 654.35921,756.83698 645.59375,783.28125 C 641.21102,796.50339 638.84793,809.08246 638,819.21875 C 637.76797,821.99248 637.68894,824.53007 637.6875,826.9375 C 634.44563,826.90109 631.26698,827.07339 627.625,827.4375 C 627.66662,788.43277 624.14076,747.68335 595.34375,710.9375 L 584,696.5 z M 589.8125,740.3125 C 606.61941,770.95633 607.28701,804.27978 606.75,840.0625 L 606.53125,855.125 L 618.56618,848.58579 C 627.22823,845.45277 638.12676,848.35827 650.5,847.75 L 665.17465,857.1066 L 658.84375,831.3125 C 658.7541,831.08253 658.62329,830.89581 658.59375,830.59375 C 658.39424,828.55389 658.37143,825.12068 658.71875,820.96875 C 659.41339,812.66489 661.50832,801.38351 665.34375,789.8125 C 670.49907,774.25956 678.83176,758.62002 690.46875,747.28125 C 685.78494,775.91923 687.25316,807.54059 687.45711,843.08639 L 684.69118,856.34803 L 700.1875,848.75 C 709.2169,845.99229 717.37647,848.40004 729.46875,849.84375 L 742.71507,859.28798 L 741.09375,840 C 742.54168,809.02823 749.31524,786.32192 761.8125,771.125 C 758.82562,790.90384 756.38207,812.9098 762.125,849.46875 L 763.19052,855.84193 L 760.25237,867.35878 L 770.86948,859.1906 L 780.05921,869.41258 L 778.51093,858.94898 L 781.9375,852 C 787.63852,838.78851 792.11032,825.78663 798.28125,815.34375 C 799.24111,813.71941 800.31278,812.27939 801.34375,810.78125 C 797.66309,831.9366 798.91659,850.9894 797.25,868.5625 L 792.56986,876.36948 L 799.96875,876.59375 C 803.1888,880.07736 803.83625,880.44443 804.53125,885.25 C 805.22625,890.05557 804.84987,899.65035 801.96875,916.875 C 796.40076,950.16292 770.12313,994.71481 758.22835,1018.3614 C 751.62344,1031.4918 739.70002,1075.8473 727.105,1094.6079 C 714.50998,1113.3684 698.57363,1134.3752 689.93296,1139.0288 C 668.44244,1150.603 645.37702,1164.5347 629.31407,1157.1183 C 614.93921,1150.4813 606.27438,1135.9256 605.5,1119.375 C 605.11689,1111.187 606.11279,1098.0658 607.125,1084.9688 C 608.13721,1071.8717 618.41391,1062.398 622.54839,1048.4062 C 627.92068,1030.2254 621.10152,1011.8118 610.04839,994.46875 C 603.56184,984.29097 586.07159,970.21085 580.5,955.90625 C 574.92841,941.60165 570.13249,926.9031 569.21875,918.25 C 568.29254,909.47887 569.64125,895.22498 571.4375,883.75 C 573.23375,872.27503 575.28125,863.46875 575.28125,863.46875 L 584.70403,859.85355 L 574.21875,855.96875 C 574.21875,855.96875 565.71986,840.65865 566.125,821.15625 C 566.19611,817.73309 567.96126,808.4282 570.84375,797.96875 C 573.72624,787.5093 577.60841,775.41604 581.46875,764 C 584.51314,754.99692 587.24938,747.39655 589.8125,740.3125 z"
45566 - id="path4193"
45567 - clip-path="url(#clipPath3677)"
45568 - sodipodi:nodetypes="ccssscsssssssssssssccccscccccccccsscccccccccccssscccccccccccccccsccccssssssssssssscccsssc"
45569 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,822.28931,10.93589)" />
45570 - <g
45571 - id="g3617"
45572 - clip-path="url(#clipPath3622)"
45573 - transform="translate(276,136)">
45574 - <path
45575 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,-52.200498,74.09707)"
45576 - id="path4195"
45577 - d="M -15.66751,843.48852 L -65.16499,827.93217 L -92.03504,880.25807 L -51.02285,925.51291 L -1.52538,887.32914 L -15.66751,843.48852 z"
45578 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9024);enable-background:accumulate" />
45579 - <path
45580 - sodipodi:nodetypes="ccccccccccccc"
45581 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,-46.92842,75.511284)"
45582 - id="path4197"
45583 - d="M 118.70648,859.93048 L 63.552152,813.26144 L 19.711532,850.03099 L 53.652662,903.7711 L 40.055848,989.23313 L 0.61048221,1017.5253 L -40.401718,1028.839 L -43.230138,1075.508 L 13.338402,1100.9639 L 32.282389,1031.3139 L 55.738939,972.45727 L 102.08648,899.84236 L 118.70648,859.93048 z"
45584 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9020);enable-background:accumulate" />
45585 - </g>
45586 - <path
45587 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9044);enable-background:accumulate"
45588 - d="M -70.82184,932.58397 L -10.01066,905.71392 L 90.3985,936.82662 L 26.75889,967.93931 L -55.26549,950.96875 L -70.82184,932.58397 z"
45589 - id="path4199"
45590 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,229.07158,211.51128)" />
45591 - <path
45592 - style="opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter4105);enable-background:new"
45593 - d="M 583.0625,715.75 C 570.95641,750.19974 556.348,784.28333 551.3125,820.59375 C 550.48042,835.52242 555.90165,849.75318 560.15625,863.65625 C 554.24001,890.85751 550.01944,920.5562 561.3125,946.78125 C 574.82967,984.9421 596.31397,1022.4634 593.73529,1064.2495 C 592.78699,1093.5437 584.72085,1125.2436 599.125,1152.5312 C 609.32364,1171.866 632.26456,1179.8429 653.09285,1180.1988 C 680.95504,1181.3729 709.55546,1168.5772 725.09375,1144.9375 C 747.68924,1115.5658 766.89426,1083.4402 780.3324,1048.8777 C 797.22293,1003.3717 810.0042,956.31698 818.26642,908.4788 C 820.09082,895.53774 821.3675,881.00895 813.6875,869.65625 C 810.25635,862.31993 813.72957,854.09611 813.00293,846.34648 C 813.67693,821.35182 817.01525,795.68272 829.65625,773.75 C 811.92312,780.1946 794.58357,790.30971 785.65318,807.61425 C 781.7181,814.3238 778.04836,821.18838 774.28125,828 C 770.73126,797.98592 778.00088,768.35172 781.0625,738.71875 C 760.89646,747.77338 744.18578,764.37397 736.88755,785.40075 C 730.58292,800.98078 728.08533,817.71793 726.625,834.4375 C 718.37166,832.91825 709.94053,832.33595 701.5625,832.9375 C 700.59942,794.23963 701.09554,753.53035 712.53125,717.03125 C 693.85012,723.24901 677.36504,735.76676 666.90322,752.41848 C 653.05068,773.29827 645.64182,798.17243 643.84375,823.03125 C 644.42909,827.35579 643.78249,834.87134 637.5,832.90625 C 632.16882,832.9238 626.87092,833.58508 621.5625,834 C 622.71034,794.61852 618.22106,752.3718 594.5,719.78125 C 591.43929,716.14408 588.86315,712.09687 585.875,708.4375 C 584.9375,710.875 584,713.3125 583.0625,715.75 z M 590.8125,729.59375 C 609.37777,758.89004 613.295,794.41387 612.9375,828.46875 C 613.14159,833.64401 612.42094,840.29795 613.0625,844.53125 C 625.38106,838.4285 639.80162,842.09135 652.84375,842.34375 C 655.16087,843.567 656.03585,843.99618 654.75,840.9375 C 650.58545,826.98465 652.90172,812.3245 656.55504,798.52986 C 662.92191,772.23922 677.18332,747.44188 699.375,731.5 C 690.75791,768.73706 693.65842,808.06161 693.28125,845.46875 C 705.53469,838.55885 720.56004,842.02262 733.3125,845.21875 C 736.70472,848.75355 735.60185,844.48927 735.5,841.40625 C 735.01691,820.03567 739.63133,798.33662 749.1875,779.25 C 755.15016,768.56273 763.43088,759.44621 771.625,750.375 C 763.75344,784.2131 762.4221,819.71093 768.90625,853.875 C 770.6311,852.46382 773.51306,853.42086 774.5625,853.5 C 784.24619,832.26318 790.91362,808.11938 809.45266,792.75815 C 811.32595,792.38693 808.00448,801.2831 807.96875,804.65625 C 804.43387,826.50206 800.79359,848.79859 799.18454,870.87536 C 790.40075,873.21707 802.03289,873.1989 802.65329,874.93786 C 810.5764,885.50366 807.31628,899.34258 806.28494,911.2912 C 799.22089,956.32475 784.14263,998.65314 770.33139,1041.971 C 758.25663,1074.9203 742.95719,1100.8235 722.44331,1129.1725 C 711.49074,1142.7239 699.19859,1157.0238 681.59956,1161.6725 C 661.44355,1167.9138 637.3928,1172.5494 619,1161.7188 C 601.71034,1149.3774 597.97607,1126.0099 599.73774,1106.0324 C 599.78653,1090.2062 604.6766,1077.5203 604.14834,1062.5406 C 603.6101,1047.2777 601.85699,1031.9759 597.60573,1015.6743 C 593.35447,999.37268 588.56248,990.75636 581.48667,974.10092 C 574.24556,957.05636 566.41652,937.35229 563.28125,917.8125 C 561.53177,899.18536 566.17296,880.68988 569.0625,862.5625 C 572.35873,859.72554 567.46451,857.36591 566.75,854.375 C 559.14887,837.35992 558.34253,817.6001 564.00766,799.81502 C 571.13786,774.74272 579.76853,750.18261 588.6875,725.6875 C 589.39583,726.98958 590.10417,728.29167 590.8125,729.59375 z"
45594 - id="path4201"
45595 - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccczzzcccccc"
45596 - clip-path="url(#clipPath4177)"
45597 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,822.28931,10.93589)" />
45598 - <path
45599 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4130);enable-background:accumulate"
45600 - d="M 735.05635,733.03834 L 737.81177,754.12715 L 782.2228,738.73894 L 787.07343,716.34919 L 783.13726,694.29697 L 760.68563,657.70396 L 752.40559,688.0089 L 735.05635,733.03834 z"
45601 - id="path4203"
45602 - sodipodi:nodetypes="cccccccc"
45603 - clip-path="url(#clipPath3631)"
45604 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)" />
45605 - <path
45606 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4141);enable-background:accumulate"
45607 - d="M 831.81321,730.29452 L 847.63558,745.19938 L 868.49031,748.09932 L 866.90002,708.17334 L 875.22563,677.66492 L 868.06064,671.32386 L 846.36395,692.26626 L 831.81321,730.29452 z"
45608 - id="path4205"
45609 - sodipodi:nodetypes="cccccccc"
45610 - clip-path="url(#clipPath3631)"
45611 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)" />
45612 - <g
45613 - id="g8317"
45614 - style="filter:url(#filter8333)"
45615 - clip-path="url(#clipPath8338)"
45616 - transform="translate(276,136)">
45617 - <path
45618 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,719.28646,-112.46507)"
45619 - clip-path="none"
45620 - sodipodi:nodetypes="ccccc"
45621 - id="path4209"
45622 - d="M 964.00012,754.69487 L 982.42893,762.15966 L 991.5,725.19519 L 976.62969,730.03405 L 964.00012,754.69487 z"
45623 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45624 - <rect
45625 - y="757.19519"
45626 - x="-55"
45627 - height="177"
45628 - width="182"
45629 - id="rect8315"
45630 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45631 - </g>
45632 - <g
45633 - id="g8346"
45634 - style="filter:url(#filter8354)"
45635 - clip-path="url(#clipPath8359)"
45636 - transform="translate(276,136)">
45637 - <path
45638 - transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,719.28646,-112.46507)"
45639 - clip-path="none"
45640 - sodipodi:nodetypes="ccccccc"
45641 - id="path4207"
45642 - d="M 910.14441,746.31415 L 942.75736,751.48808 L 942.39617,727.61189 L 949.5847,697.92968 L 941.13358,692.66603 L 919.31164,719.1768 L 910.14441,746.31415 z"
45643 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45644 - <rect
45645 - y="696.19519"
45646 - x="-22"
45647 - height="176"
45648 - width="165"
45649 - id="rect8344"
45650 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45651 - </g>
45652 - </g>
45653 - <g
45654 - inkscape:groupmode="layer"
45655 - id="layer16"
45656 - inkscape:label="Left Foot"
45657 - style="display:inline">
45658 - <path
45659 - style="opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new"
45660 - d="M 1036.164,1071.8338 C 1042.9581,1090.7366 1046.6577,1105.1335 1048.0543,1123.0457 C 1049.4509,1140.958 1044.2716,1174.8465 1045.1538,1193.7018 C 1046.0356,1212.547 1053.2875,1233.8008 1072.4984,1242.6707 C 1091.9173,1251.6365 1121.8177,1252.882 1146.6183,1239.5251 C 1171.4189,1226.1681 1204.0193,1169.1996 1217.5925,1142.2164 C 1231.2164,1115.1325 1256.3536,1027.719 1262.2533,992.44781 C 1268.1531,957.1766 1264.8039,951.14704 1257.6359,943.39232 C 1260.2762,915.55217 1256.1361,888.45689 1270.7455,856.20614 C 1240.4965,868.03184 1233.3632,896.36684 1222.4266,921.71122 C 1214.4257,870.77829 1222.6358,850.43803 1225.7455,820.49186 C 1196.6808,835.26977 1182.884,867.60588 1180.7455,913.349 C 1169.8216,912.0448 1159.3541,908.91477 1147.1741,912.63471 C 1146.9101,866.61137 1145.7106,835.7453 1156.0847,798.42822 C 1102.8293,819.45508 1093.1375,905.02232 1100.0312,911.20614 C 1089.1484,911.74114 1078.6602,909.90884 1067.1741,914.06329 C 1067.813,871.49194 1066.9136,829.15468 1037.1741,791.20614 C 1037.1741,791.20614 1006.2161,872.12848 1005.7455,894.77757 C 1005.275,917.42666 1015.1971,934.94345 1015.1971,934.94345 C 1015.1971,934.94345 1006.6291,971.68396 1008.8985,993.17568 C 1011.1944,1014.9171 1029.3414,1052.8519 1036.164,1071.8338 z"
45661 - id="path8848"
45662 - sodipodi:nodetypes="czzzzzzcccccccccczczz" />
45663 - <path
45664 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter3587);enable-background:accumulate"
45665 - d="M 719.5,738.69519 L 737.81177,754.12715 L 782.2228,738.73894 L 805.5,713.19519 L 816.96397,732.41584 L 847.63558,745.19938 L 872.73295,750.92775 L 892,723.19519 L 908.02309,747.02126 L 947,752.19519 L 957.24541,745.99667 L 964.00012,754.69487 L 989.5,765.69519 L 991.5,725.19519 L 955.94866,710.6576 L 923.45591,689.1305 L 883.0038,677.66492 L 861.69668,662.13148 L 840,685.19519 L 755.02878,638.61208 L 722,676.69519 L 719.5,738.69519 z"
45666 - id="path3635"
45667 - sodipodi:nodetypes="cccccccccccccccccccccc"
45668 - clip-path="url(#clipPath3631)"
45669 - transform="translate(276,136)" />
45670 - <path
45671 - transform="translate(450.03125,73.843964)"
45672 - style="opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter3898);enable-background:new"
45673 - d="M 584,696.5 L 577.4375,713.65625 C 577.4375,713.65625 569.62598,734.02113 561.75,757.3125 C 557.81201,768.95818 553.86698,781.35395 550.8125,792.4375 C 547.75802,803.52105 545.47664,812.81736 545.3125,820.71875 C 544.91443,839.88071 551.05903,855.60705 554.25,862.46875 C 553.47847,866.02398 552.25863,871.92307 550.90625,880.5625 C 548.98583,892.83071 547.18798,907.71691 548.53125,920.4375 C 549.91334,933.52585 555.34347,948.62515 561.125,963.46875 C 566.90653,978.31235 573.17935,992.69586 576.34375,1001.5 C 582.97581,1019.9519 586.33671,1033.0763 587.65625,1050 C 588.2376,1057.4561 587.41398,1070.336 586.40625,1083.375 C 585.39852,1096.414 584.21964,1109.6764 584.71875,1120.3438 C 585.70786,1141.4836 594.04673,1167.1785 618.09375,1178.2812 C 640.86858,1188.7966 673.42057,1189.9834 701.53125,1174.8438 C 717.69117,1166.1404 731.60759,1147.7462 744.90625,1127.9375 C 758.20491,1108.1288 769.87542,1086.8841 776.84375,1073.0312 C 792.19667,1042.51 816.23728,957.56702 822.46875,920.3125 C 825.48734,902.26597 826.39041,891.24695 825.09375,882.28125 C 824.11522,875.51521 821.26556,870.13385 818.21875,866.0625 C 820.26149,838.55459 817.48668,814.69372 830.1875,786.65625 L 840.75,763.375 L 816.9375,772.6875 C 799.44775,779.52503 788.03586,791.73286 780.34375,804.75 C 780.02124,805.29577 779.78061,805.85776 779.46875,806.40625 C 779.69078,783.89104 783.87659,768.76866 786.0625,747.71875 L 788.03125,728.71875 L 771,737.375 C 740.40551,752.93071 725.30511,785.56821 721.28125,827.59375 C 717.03593,826.96828 712.44985,826.5741 707.46875,826.75 C 707.17726,787.56964 707.07246,759.71315 716.0625,727.375 L 721.65625,707.25 L 702.21875,714.90625 C 671.30938,727.11019 654.35921,756.83698 645.59375,783.28125 C 641.21102,796.50339 638.84793,809.08246 638,819.21875 C 637.76797,821.99248 637.68894,824.53007 637.6875,826.9375 C 634.44563,826.90109 631.26698,827.07339 627.625,827.4375 C 627.66662,788.43277 624.14076,747.68335 595.34375,710.9375 L 584,696.5 z M 589.8125,740.3125 C 606.61941,770.95633 607.28701,804.27978 606.75,840.0625 L 606.53125,855.125 L 618.56618,848.58579 C 627.22823,845.45277 638.12676,848.35827 650.5,847.75 L 665.17465,857.1066 L 658.84375,831.3125 C 658.7541,831.08253 658.62329,830.89581 658.59375,830.59375 C 658.39424,828.55389 658.37143,825.12068 658.71875,820.96875 C 659.41339,812.66489 661.50832,801.38351 665.34375,789.8125 C 670.49907,774.25956 678.83176,758.62002 690.46875,747.28125 C 685.78494,775.91923 687.25316,807.54059 687.45711,843.08639 L 684.69118,856.34803 L 700.1875,848.75 C 709.2169,845.99229 717.37647,848.40004 729.46875,849.84375 L 742.71507,859.28798 L 741.09375,840 C 742.54168,809.02823 749.31524,786.32192 761.8125,771.125 C 758.82562,790.90384 756.38207,812.9098 762.125,849.46875 L 763.19052,855.84193 L 760.25237,867.35878 L 770.86948,859.1906 L 780.05921,869.41258 L 778.51093,858.94898 L 781.9375,852 C 787.63852,838.78851 792.11032,825.78663 798.28125,815.34375 C 799.24111,813.71941 800.31278,812.27939 801.34375,810.78125 C 797.66309,831.9366 798.91659,850.9894 797.25,868.5625 L 792.56986,876.36948 L 799.96875,876.59375 C 803.1888,880.07736 803.83625,880.44443 804.53125,885.25 C 805.22625,890.05557 804.84987,899.65035 801.96875,916.875 C 796.40076,950.16292 770.17603,1040.0409 758.28125,1063.6875 C 751.67634,1076.8179 740.25127,1097.5832 727.65625,1116.3438 C 715.06123,1135.1043 700.29692,1151.8776 691.65625,1156.5312 C 670.16573,1168.1054 642.87545,1166.7914 626.8125,1159.375 C 612.43764,1152.738 606.27438,1135.9256 605.5,1119.375 C 605.11689,1111.187 606.11279,1098.0658 607.125,1084.9688 C 608.13721,1071.8717 618.41391,1062.398 622.54839,1048.4062 C 627.92068,1030.2254 621.10152,1011.8118 610.04839,994.46875 C 603.56184,984.29097 586.07159,970.21085 580.5,955.90625 C 574.92841,941.60165 570.13249,926.9031 569.21875,918.25 C 568.29254,909.47887 569.64125,895.22498 571.4375,883.75 C 573.23375,872.27503 575.28125,863.46875 575.28125,863.46875 L 584.70403,859.85355 L 574.21875,855.96875 C 574.21875,855.96875 565.71986,840.65865 566.125,821.15625 C 566.19611,817.73309 567.96126,808.4282 570.84375,797.96875 C 573.72624,787.5093 577.60841,775.41604 581.46875,764 C 584.51314,754.99692 587.24938,747.39655 589.8125,740.3125 z"
45674 - id="path3669"
45675 - clip-path="url(#clipPath3677)"
45676 - sodipodi:nodetypes="ccssscsssssssssssssccccscccccccccsscccccccccccssscccccccccccccccsccccssssssssssssscccsssc" />
45677 - <g
45678 - id="g3628"
45679 - clip-path="url(#clipPath3636)"
45680 - transform="translate(276,136)">
45681 - <path
45682 - id="path8988"
45683 - d="M 824.48651,818.48242 L 774.98903,802.92607 L 748.11898,855.25197 L 789.13117,900.50681 L 838.62864,862.32304 L 824.48651,818.48242 z"
45684 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9024);enable-background:accumulate" />
45685 - <path
45686 - id="path8990"
45687 - d="M 964.49365,855.25197 L 909.33932,808.58293 L 865.4987,845.35248 L 899.43983,899.09259 L 906.51089,965.56063 L 855.59921,1000.916 L 814.58701,1012.2297 L 811.75859,1058.8987 L 868.32713,1084.3546 L 931.96674,1007.987 L 956.00837,913.23473 L 964.49365,855.25197 z"
45688 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9020);enable-background:accumulate" />
45689 - </g>
45690 - <path
45691 - style="opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter9044);enable-background:accumulate"
45692 - d="M 1045.3322,1043.5779 L 1106.1434,1016.7078 L 1206.5525,1047.8205 L 1142.9129,1078.9332 L 1060.8885,1061.9626 L 1045.3322,1043.5779 z"
45693 - id="path8992" />
45694 - <path
45695 - transform="translate(450.03125,73.843964)"
45696 - style="opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline;filter:url(#filter4185);enable-background:new"
45697 - d="M 583.0625,715.75 C 570.95641,750.19974 556.348,784.28333 551.3125,820.59375 C 550.48042,835.52242 555.90165,849.75318 560.15625,863.65625 C 554.24001,890.85751 550.01944,920.5562 561.3125,946.78125 C 574.82967,984.9421 596.31397,1022.4634 593.73529,1064.2495 C 592.78699,1093.5437 584.72085,1125.2436 599.125,1152.5312 C 609.32364,1171.866 632.26456,1179.8429 653.09285,1180.1988 C 680.95504,1181.3729 709.55546,1168.5772 725.09375,1144.9375 C 747.68924,1115.5658 766.89426,1083.4402 780.3324,1048.8777 C 797.22293,1003.3717 810.0042,956.31698 818.26642,908.4788 C 820.09082,895.53774 821.3675,881.00895 813.6875,869.65625 C 810.25635,862.31993 813.72957,854.09611 813.00293,846.34648 C 813.67693,821.35182 817.01525,795.68272 829.65625,773.75 C 811.92312,780.1946 794.58357,790.30971 785.65318,807.61425 C 781.7181,814.3238 778.04836,821.18838 774.28125,828 C 770.73126,797.98592 778.00088,768.35172 781.0625,738.71875 C 760.89646,747.77338 744.18578,764.37397 736.88755,785.40075 C 730.58292,800.98078 728.08533,817.71793 726.625,834.4375 C 718.37166,832.91825 709.94053,832.33595 701.5625,832.9375 C 700.59942,794.23963 701.09554,753.53035 712.53125,717.03125 C 693.85012,723.24901 677.36504,735.76676 666.90322,752.41848 C 653.05068,773.29827 645.64182,798.17243 643.84375,823.03125 C 644.42909,827.35579 643.78249,834.87134 637.5,832.90625 C 632.16882,832.9238 626.87092,833.58508 621.5625,834 C 622.71034,794.61852 618.22106,752.3718 594.5,719.78125 C 591.43929,716.14408 588.86315,712.09687 585.875,708.4375 C 584.9375,710.875 584,713.3125 583.0625,715.75 z M 590.8125,729.59375 C 609.37777,758.89004 613.295,794.41387 612.9375,828.46875 C 613.14159,833.64401 612.42094,840.29795 613.0625,844.53125 C 625.38106,838.4285 639.80162,842.09135 652.84375,842.34375 C 655.16087,843.567 656.03585,843.99618 654.75,840.9375 C 650.58545,826.98465 652.90172,812.3245 656.55504,798.52986 C 662.92191,772.23922 677.18332,747.44188 699.375,731.5 C 690.75791,768.73706 693.65842,808.06161 693.28125,845.46875 C 705.53469,838.55885 720.56004,842.02262 733.3125,845.21875 C 736.70472,848.75355 735.60185,844.48927 735.5,841.40625 C 735.01691,820.03567 739.63133,798.33662 749.1875,779.25 C 755.15016,768.56273 763.43088,759.44621 771.625,750.375 C 763.75344,784.2131 762.4221,819.71093 768.90625,853.875 C 770.6311,852.46382 773.51306,853.42086 774.5625,853.5 C 784.24619,832.26318 790.91362,808.11938 809.45266,792.75815 C 811.32595,792.38693 808.00448,801.2831 807.96875,804.65625 C 804.43387,826.50206 804.67155,848.82948 803.0625,870.90625 C 801.75012,872.28304 805.91085,873.22979 806.53125,874.96875 C 814.45436,885.53455 809.65419,899.80024 808.62285,911.74886 C 801.5588,956.78241 786.85732,1000.1282 773.04608,1043.446 C 760.97132,1076.3953 742.32638,1106.526 721.8125,1134.875 C 710.85993,1148.4264 698.56778,1162.7263 680.96875,1167.375 C 660.81274,1173.6163 637.3928,1172.5494 619,1161.7188 C 601.71034,1149.3774 597.97607,1126.0099 599.73774,1106.0324 C 599.78653,1090.2062 602.10985,1078.2316 607.65521,1063.2271 C 613.20056,1048.2226 610.12626,1031.8954 605.875,1015.5938 C 601.62374,999.2922 593.69597,989.33378 584.05342,973.38963 C 574.41087,957.44548 566.41652,937.35229 563.28125,917.8125 C 561.53177,899.18536 566.17296,880.68988 569.0625,862.5625 C 572.35873,859.72554 567.46451,857.36591 566.75,854.375 C 559.14887,837.35992 558.34253,817.6001 564.00766,799.81502 C 571.13786,774.74272 579.76853,750.18261 588.6875,725.6875 C 589.39583,726.98958 590.10417,728.29167 590.8125,729.59375 z"
45698 - id="path4149"
45699 - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccczzzcccccc"
45700 - clip-path="url(#clipPath4177)" />
45701 - <path
45702 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4130);enable-background:accumulate"
45703 - d="M 735.05635,733.03834 L 737.81177,754.12715 L 782.2228,738.73894 L 787.07343,716.34919 L 783.13726,694.29697 L 760.68563,657.70396 L 752.40559,688.0089 L 735.05635,733.03834 z"
45704 - id="path3902"
45705 - sodipodi:nodetypes="cccccccc"
45706 - clip-path="url(#clipPath3631)"
45707 - transform="translate(276,136)" />
45708 - <path
45709 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;filter:url(#filter4141);enable-background:accumulate"
45710 - d="M 831.81321,730.29452 L 847.63558,745.19938 L 868.49031,748.09932 L 866.90002,708.17334 L 875.22563,677.66492 L 868.06064,671.32386 L 846.36395,692.26626 L 831.81321,730.29452 z"
45711 - id="path4135"
45712 - sodipodi:nodetypes="cccccccc"
45713 - clip-path="url(#clipPath3631)"
45714 - transform="translate(276,136)" />
45715 - <g
45716 - id="g8367"
45717 - style="filter:url(#filter8379)"
45718 - clip-path="url(#clipPath8392)"
45719 - transform="translate(276,136)">
45720 - <path
45721 - clip-path="none"
45722 - sodipodi:nodetypes="ccccccc"
45723 - id="path4145"
45724 - d="M 910.14441,746.31415 L 942.75736,751.48808 L 942.39617,727.61189 L 949.5847,697.92968 L 941.13358,692.66603 L 919.31164,719.1768 L 910.14441,746.31415 z"
45725 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45726 - <rect
45727 - y="650.19098"
45728 - x="877.51953"
45729 - height="172.53406"
45730 - width="123.03658"
45731 - id="rect8365"
45732 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45733 - </g>
45734 - <g
45735 - id="g8400"
45736 - style="filter:url(#filter8404)"
45737 - clip-path="url(#clipPath8417)"
45738 - transform="translate(276,136)">
45739 - <path
45740 - clip-path="none"
45741 - sodipodi:nodetypes="ccccc"
45742 - id="path4147"
45743 - d="M 964.00012,754.69487 L 982.42893,762.15966 L 991.5,725.19519 L 976.62969,730.03405 L 964.00012,754.69487 z"
45744 - style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45745 - <rect
45746 - y="677.06104"
45747 - x="924.89569"
45748 - height="125.1579"
45749 - width="142.12846"
45750 - id="rect8398"
45751 - style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
45752 - </g>
45753 - </g>
45754 -</svg>
45755 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/logo.txt linux-2.6.29-rc3.owrt/Documentation/logo.txt
45756 --- linux-2.6.29.owrt/Documentation/logo.txt 2009-05-10 22:04:39.000000000 +0200
45757 +++ linux-2.6.29-rc3.owrt/Documentation/logo.txt 2009-05-10 23:48:28.000000000 +0200
45758 @@ -1,4 +1,13 @@
45759 -Tux is taking a three month sabbatical to work as a barber, so Tuz is
45760 -standing in. He's taken pains to ensure you'll hardly notice.
45761 +This is the full-colour version of the currently unofficial Linux logo
45762 +("currently unofficial" just means that there has been no paperwork and
45763 +that I have not really announced it yet). It was created by Larry Ewing,
45764 +and is freely usable as long as you acknowledge Larry as the original
45765 +artist.
45766 +
45767 +Note that there are black-and-white versions of this available that
45768 +scale down to smaller sizes and are better for letterheads or whatever
45769 +you want to use it for: for the full range of logos take a look at
45770 +Larry's web-page:
45771 +
45772 + http://www.isc.tamu.edu/~lewing/linux/
45773
45774 -Image by Andrew McGown and Josh Bush. Image is licensed CC BY-SA.
45775 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/networking/alias.txt linux-2.6.29-rc3.owrt/Documentation/networking/alias.txt
45776 --- linux-2.6.29.owrt/Documentation/networking/alias.txt 2009-05-10 22:04:39.000000000 +0200
45777 +++ linux-2.6.29-rc3.owrt/Documentation/networking/alias.txt 2009-05-10 23:48:28.000000000 +0200
45778 @@ -2,14 +2,14 @@
45779 IP-Aliasing:
45780 ============
45781
45782 -IP-aliases are an obsolete way to manage multiple IP-addresses/masks
45783 -per interface. Newer tools such as iproute2 support multiple
45784 -address/prefixes per interface, but aliases are still supported
45785 -for backwards compatibility.
45786 -
45787 -An alias is formed by adding a colon and a string when running ifconfig.
45788 +IP-aliases are additional IP-addresses/masks hooked up to a base
45789 +interface by adding a colon and a string when running ifconfig.
45790 This string is usually numeric, but this is not a must.
45791
45792 +IP-Aliases are avail if CONFIG_INET (`standard' IPv4 networking)
45793 +is configured in the kernel.
45794 +
45795 +
45796 o Alias creation.
45797 Alias creation is done by 'magic' interface naming: eg. to create a
45798 200.1.1.1 alias for eth0 ...
45799 @@ -38,3 +38,16 @@
45800
45801 If the base device is shut down the added aliases will be deleted
45802 too.
45803 +
45804 +
45805 +Contact
45806 +-------
45807 +Please finger or e-mail me:
45808 + Juan Jose Ciarlante <jjciarla@raiz.uncu.edu.ar>
45809 +
45810 +Updated by Erik Schoenfelder <schoenfr@gaertner.DE>
45811 +
45812 +; local variables:
45813 +; mode: indented-text
45814 +; mode: auto-fill
45815 +; end:
45816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/networking/ipv6.txt linux-2.6.29-rc3.owrt/Documentation/networking/ipv6.txt
45817 --- linux-2.6.29.owrt/Documentation/networking/ipv6.txt 2009-05-10 22:04:39.000000000 +0200
45818 +++ linux-2.6.29-rc3.owrt/Documentation/networking/ipv6.txt 1970-01-01 01:00:00.000000000 +0100
45819 @@ -1,35 +0,0 @@
45820 -
45821 -Options for the ipv6 module are supplied as parameters at load time.
45822 -
45823 -Module options may be given as command line arguments to the insmod
45824 -or modprobe command, but are usually specified in either the
45825 -/etc/modules.conf or /etc/modprobe.conf configuration file, or in a
45826 -distro-specific configuration file.
45827 -
45828 -The available ipv6 module parameters are listed below. If a parameter
45829 -is not specified the default value is used.
45830 -
45831 -The parameters are as follows:
45832 -
45833 -disable
45834 -
45835 - Specifies whether to load the IPv6 module, but disable all
45836 - its functionality. This might be used when another module
45837 - has a dependency on the IPv6 module being loaded, but no
45838 - IPv6 addresses or operations are desired.
45839 -
45840 - The possible values and their effects are:
45841 -
45842 - 0
45843 - IPv6 is enabled.
45844 -
45845 - This is the default value.
45846 -
45847 - 1
45848 - IPv6 is disabled.
45849 -
45850 - No IPv6 addresses will be added to interfaces, and
45851 - it will not be possible to open an IPv6 socket.
45852 -
45853 - A reboot is required to enable IPv6.
45854 -
45855 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/PCI/PCIEBUS-HOWTO.txt linux-2.6.29-rc3.owrt/Documentation/PCI/PCIEBUS-HOWTO.txt
45856 --- linux-2.6.29.owrt/Documentation/PCI/PCIEBUS-HOWTO.txt 2009-05-10 22:04:39.000000000 +0200
45857 +++ linux-2.6.29-rc3.owrt/Documentation/PCI/PCIEBUS-HOWTO.txt 2009-05-10 23:48:28.000000000 +0200
45858 @@ -93,7 +93,7 @@
45859
45860 int pcie_port_service_register(struct pcie_port_service_driver *new)
45861
45862 -This API replaces the Linux Driver Model's pci_register_driver API. A
45863 +This API replaces the Linux Driver Model's pci_module_init API. A
45864 service driver should always calls pcie_port_service_register at
45865 module init. Note that after service driver being loaded, calls
45866 such as pci_enable_device(dev) and pci_set_master(dev) are no longer
45867 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/powerpc/dts-bindings/fsl/mpc5200.txt linux-2.6.29-rc3.owrt/Documentation/powerpc/dts-bindings/fsl/mpc5200.txt
45868 --- linux-2.6.29.owrt/Documentation/powerpc/dts-bindings/fsl/mpc5200.txt 2009-05-10 22:04:39.000000000 +0200
45869 +++ linux-2.6.29-rc3.owrt/Documentation/powerpc/dts-bindings/fsl/mpc5200.txt 1970-01-01 01:00:00.000000000 +0100
45870 @@ -1,180 +0,0 @@
45871 -MPC5200 Device Tree Bindings
45872 -----------------------------
45873 -
45874 -(c) 2006-2009 Secret Lab Technologies Ltd
45875 -Grant Likely <grant.likely@secretlab.ca>
45876 -
45877 -Naming conventions
45878 -------------------
45879 -For mpc5200 on-chip devices, the format for each compatible value is
45880 -<chip>-<device>[-<mode>]. The OS should be able to match a device driver
45881 -to the device based solely on the compatible value. If two drivers
45882 -match on the compatible list; the 'most compatible' driver should be
45883 -selected.
45884 -
45885 -The split between the MPC5200 and the MPC5200B leaves a bit of a
45886 -conundrum. How should the compatible property be set up to provide
45887 -maximum compatibility information; but still accurately describe the
45888 -chip? For the MPC5200; the answer is easy. Most of the SoC devices
45889 -originally appeared on the MPC5200. Since they didn't exist anywhere
45890 -else; the 5200 compatible properties will contain only one item;
45891 -"fsl,mpc5200-<device>".
45892 -
45893 -The 5200B is almost the same as the 5200, but not quite. It fixes
45894 -silicon bugs and it adds a small number of enhancements. Most of the
45895 -devices either provide exactly the same interface as on the 5200. A few
45896 -devices have extra functions but still have a backwards compatible mode.
45897 -To express this information as completely as possible, 5200B device trees
45898 -should have two items in the compatible list:
45899 - compatible = "fsl,mpc5200b-<device>","fsl,mpc5200-<device>";
45900 -
45901 -It is *strongly* recommended that 5200B device trees follow this convention
45902 -(instead of only listing the base mpc5200 item).
45903 -
45904 -ie. ethernet on mpc5200: compatible = "fsl,mpc5200-fec";
45905 - ethernet on mpc5200b: compatible = "fsl,mpc5200b-fec", "fsl,mpc5200-fec";
45906 -
45907 -Modal devices, like PSCs, also append the configured function to the
45908 -end of the compatible field. ie. A PSC in i2s mode would specify
45909 -"fsl,mpc5200-psc-i2s", not "fsl,mpc5200-i2s". This convention is chosen to
45910 -avoid naming conflicts with non-psc devices providing the same
45911 -function. For example, "fsl,mpc5200-spi" and "fsl,mpc5200-psc-spi" describe
45912 -the mpc5200 simple spi device and a PSC spi mode respectively.
45913 -
45914 -At the time of writing, exact chip may be either 'fsl,mpc5200' or
45915 -'fsl,mpc5200b'.
45916 -
45917 -The soc node
45918 -------------
45919 -This node describes the on chip SOC peripherals. Every mpc5200 based
45920 -board will have this node, and as such there is a common naming
45921 -convention for SOC devices.
45922 -
45923 -Required properties:
45924 -name description
45925 ----- -----------
45926 -ranges Memory range of the internal memory mapped registers.
45927 - Should be <0 [baseaddr] 0xc000>
45928 -reg Should be <[baseaddr] 0x100>
45929 -compatible mpc5200: "fsl,mpc5200-immr"
45930 - mpc5200b: "fsl,mpc5200b-immr"
45931 -system-frequency 'fsystem' frequency in Hz; XLB, IPB, USB and PCI
45932 - clocks are derived from the fsystem clock.
45933 -bus-frequency IPB bus frequency in Hz. Clock rate
45934 - used by most of the soc devices.
45935 -
45936 -soc child nodes
45937 ----------------
45938 -Any on chip SOC devices available to Linux must appear as soc5200 child nodes.
45939 -
45940 -Note: The tables below show the value for the mpc5200. A mpc5200b device
45941 -tree should use the "fsl,mpc5200b-<device>","fsl,mpc5200-<device>" form.
45942 -
45943 -Required soc5200 child nodes:
45944 -name compatible Description
45945 ----- ---------- -----------
45946 -cdm@<addr> fsl,mpc5200-cdm Clock Distribution
45947 -interrupt-controller@<addr> fsl,mpc5200-pic need an interrupt
45948 - controller to boot
45949 -bestcomm@<addr> fsl,mpc5200-bestcomm Bestcomm DMA controller
45950 -
45951 -Recommended soc5200 child nodes; populate as needed for your board
45952 -name compatible Description
45953 ----- ---------- -----------
45954 -timer@<addr> fsl,mpc5200-gpt General purpose timers
45955 -gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio controller
45956 -gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio controller
45957 -rtc@<addr> fsl,mpc5200-rtc Real time clock
45958 -mscan@<addr> fsl,mpc5200-mscan CAN bus controller
45959 -pci@<addr> fsl,mpc5200-pci PCI bridge
45960 -serial@<addr> fsl,mpc5200-psc-uart PSC in serial mode
45961 -i2s@<addr> fsl,mpc5200-psc-i2s PSC in i2s mode
45962 -ac97@<addr> fsl,mpc5200-psc-ac97 PSC in ac97 mode
45963 -spi@<addr> fsl,mpc5200-psc-spi PSC in spi mode
45964 -irda@<addr> fsl,mpc5200-psc-irda PSC in IrDA mode
45965 -spi@<addr> fsl,mpc5200-spi MPC5200 spi device
45966 -ethernet@<addr> fsl,mpc5200-fec MPC5200 ethernet device
45967 -ata@<addr> fsl,mpc5200-ata IDE ATA interface
45968 -i2c@<addr> fsl,mpc5200-i2c I2C controller
45969 -usb@<addr> fsl,mpc5200-ohci,ohci-be USB controller
45970 -xlb@<addr> fsl,mpc5200-xlb XLB arbitrator
45971 -
45972 -fsl,mpc5200-gpt nodes
45973 ----------------------
45974 -On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board
45975 -design supports the internal wdt, then the device node for GPT0 should
45976 -include the empty property 'fsl,has-wdt'.
45977 -
45978 -An mpc5200-gpt can be used as a single line GPIO controller. To do so,
45979 -add the following properties to the gpt node:
45980 - gpio-controller;
45981 - #gpio-cells = <2>;
45982 -When referencing the GPIO line from another node, the first cell must always
45983 -be zero and the second cell represents the gpio flags and described in the
45984 -gpio device tree binding.
45985 -
45986 -An mpc5200-gpt can be used as a single line edge sensitive interrupt
45987 -controller. To do so, add the following properties to the gpt node:
45988 - interrupt-controller;
45989 - #interrupt-cells = <1>;
45990 -When referencing the IRQ line from another node, the cell represents the
45991 -sense mode; 1 for edge rising, 2 for edge falling.
45992 -
45993 -fsl,mpc5200-psc nodes
45994 ----------------------
45995 -The PSCs should include a cell-index which is the index of the PSC in
45996 -hardware. cell-index is used to determine which shared SoC registers to
45997 -use when setting up PSC clocking. cell-index number starts at '0'. ie:
45998 - PSC1 has 'cell-index = <0>'
45999 - PSC4 has 'cell-index = <3>'
46000 -
46001 -PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in
46002 -i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the
46003 -compatible field.
46004 -
46005 -
46006 -fsl,mpc5200-gpio and fsl,mpc5200-gpio-wkup nodes
46007 -------------------------------------------------
46008 -Each GPIO controller node should have the empty property gpio-controller and
46009 -#gpio-cells set to 2. First cell is the GPIO number which is interpreted
46010 -according to the bit numbers in the GPIO control registers. The second cell
46011 -is for flags which is currently unused.
46012 -
46013 -fsl,mpc5200-fec nodes
46014 ----------------------
46015 -The FEC node can specify one of the following properties to configure
46016 -the MII link:
46017 -- fsl,7-wire-mode - An empty property that specifies the link uses 7-wire
46018 - mode instead of MII
46019 -- current-speed - Specifies that the MII should be configured for a fixed
46020 - speed. This property should contain two cells. The
46021 - first cell specifies the speed in Mbps and the second
46022 - should be '0' for half duplex and '1' for full duplex
46023 -- phy-handle - Contains a phandle to an Ethernet PHY.
46024 -
46025 -Interrupt controller (fsl,mpc5200-pic) node
46026 --------------------------------------------
46027 -The mpc5200 pic binding splits hardware IRQ numbers into two levels. The
46028 -split reflects the layout of the PIC hardware itself, which groups
46029 -interrupts into one of three groups; CRIT, MAIN or PERP. Also, the
46030 -Bestcomm dma engine has it's own set of interrupt sources which are
46031 -cascaded off of peripheral interrupt 0, which the driver interprets as a
46032 -fourth group, SDMA.
46033 -
46034 -The interrupts property for device nodes using the mpc5200 pic consists
46035 -of three cells; <L1 L2 level>
46036 -
46037 - L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]
46038 - L2 := interrupt number; directly mapped from the value in the
46039 - "ICTL PerStat, MainStat, CritStat Encoded Register"
46040 - level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]
46041 -
46042 -For external IRQs, use the following interrupt property values (how to
46043 -specify external interrupts is a frequently asked question):
46044 -External interrupts:
46045 - external irq0: interrupts = <0 0 n>;
46046 - external irq1: interrupts = <1 1 n>;
46047 - external irq2: interrupts = <1 2 n>;
46048 - external irq3: interrupts = <1 3 n>;
46049 -'n' is sense (0: level high, 1: edge rising, 2: edge falling 3: level low)
46050 -
46051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/powerpc/mpc52xx-device-tree-bindings.txt linux-2.6.29-rc3.owrt/Documentation/powerpc/mpc52xx-device-tree-bindings.txt
46052 --- linux-2.6.29.owrt/Documentation/powerpc/mpc52xx-device-tree-bindings.txt 1970-01-01 01:00:00.000000000 +0100
46053 +++ linux-2.6.29-rc3.owrt/Documentation/powerpc/mpc52xx-device-tree-bindings.txt 2009-05-10 23:48:28.000000000 +0200
46054 @@ -0,0 +1,277 @@
46055 +MPC5200 Device Tree Bindings
46056 +----------------------------
46057 +
46058 +(c) 2006-2007 Secret Lab Technologies Ltd
46059 +Grant Likely <grant.likely at secretlab.ca>
46060 +
46061 +********** DRAFT ***********
46062 +* WARNING: Do not depend on the stability of these bindings just yet.
46063 +* The MPC5200 device tree conventions are still in flux
46064 +* Keep an eye on the linuxppc-dev mailing list for more details
46065 +********** DRAFT ***********
46066 +
46067 +I - Introduction
46068 +================
46069 +Boards supported by the arch/powerpc architecture require device tree be
46070 +passed by the boot loader to the kernel at boot time. The device tree
46071 +describes what devices are present on the board and how they are
46072 +connected. The device tree can either be passed as a binary blob (as
46073 +described in Documentation/powerpc/booting-without-of.txt), or passed
46074 +by Open Firmware (IEEE 1275) compatible firmware using an OF compatible
46075 +client interface API.
46076 +
46077 +This document specifies the requirements on the device-tree for mpc5200
46078 +based boards. These requirements are above and beyond the details
46079 +specified in either the Open Firmware spec or booting-without-of.txt
46080 +
46081 +All new mpc5200-based boards are expected to match this document. In
46082 +cases where this document is not sufficient to support a new board port,
46083 +this document should be updated as part of adding the new board support.
46084 +
46085 +II - Philosophy
46086 +===============
46087 +The core of this document is naming convention. The whole point of
46088 +defining this convention is to reduce or eliminate the number of
46089 +special cases required to support a 5200 board. If all 5200 boards
46090 +follow the same convention, then generic 5200 support code will work
46091 +rather than coding special cases for each new board.
46092 +
46093 +This section tries to capture the thought process behind why the naming
46094 +convention is what it is.
46095 +
46096 +1. names
46097 +---------
46098 +There is strong convention/requirements already established for children
46099 +of the root node. 'cpus' describes the processor cores, 'memory'
46100 +describes memory, and 'chosen' provides boot configuration. Other nodes
46101 +are added to describe devices attached to the processor local bus.
46102 +
46103 +Following convention already established with other system-on-chip
46104 +processors, 5200 device trees should use the name 'soc5200' for the
46105 +parent node of on chip devices, and the root node should be its parent.
46106 +
46107 +Child nodes are typically named after the configured function. ie.
46108 +the FEC node is named 'ethernet', and a PSC in uart mode is named 'serial'.
46109 +
46110 +2. device_type property
46111 +-----------------------
46112 +similar to the node name convention above; the device_type reflects the
46113 +configured function of a device. ie. 'serial' for a uart and 'spi' for
46114 +an spi controller. However, while node names *should* reflect the
46115 +configured function, device_type *must* match the configured function
46116 +exactly.
46117 +
46118 +3. compatible property
46119 +----------------------
46120 +Since device_type isn't enough to match devices to drivers, there also
46121 +needs to be a naming convention for the compatible property. Compatible
46122 +is an list of device descriptions sorted from specific to generic. For
46123 +the mpc5200, the required format for each compatible value is
46124 +<chip>-<device>[-<mode>]. The OS should be able to match a device driver
46125 +to the device based solely on the compatible value. If two drivers
46126 +match on the compatible list; the 'most compatible' driver should be
46127 +selected.
46128 +
46129 +The split between the MPC5200 and the MPC5200B leaves a bit of a
46130 +conundrum. How should the compatible property be set up to provide
46131 +maximum compatibility information; but still accurately describe the
46132 +chip? For the MPC5200; the answer is easy. Most of the SoC devices
46133 +originally appeared on the MPC5200. Since they didn't exist anywhere
46134 +else; the 5200 compatible properties will contain only one item;
46135 +"mpc5200-<device>".
46136 +
46137 +The 5200B is almost the same as the 5200, but not quite. It fixes
46138 +silicon bugs and it adds a small number of enhancements. Most of the
46139 +devices either provide exactly the same interface as on the 5200. A few
46140 +devices have extra functions but still have a backwards compatible mode.
46141 +To express this information as completely as possible, 5200B device trees
46142 +should have two items in the compatible list;
46143 +"mpc5200b-<device>\0mpc5200-<device>". It is *strongly* recommended
46144 +that 5200B device trees follow this convention (instead of only listing
46145 +the base mpc5200 item).
46146 +
46147 +If another chip appear on the market with one of the mpc5200 SoC
46148 +devices, then the compatible list should include mpc5200-<device>.
46149 +
46150 +ie. ethernet on mpc5200: compatible = "mpc5200-ethernet"
46151 + ethernet on mpc5200b: compatible = "mpc5200b-ethernet\0mpc5200-ethernet"
46152 +
46153 +Modal devices, like PSCs, also append the configured function to the
46154 +end of the compatible field. ie. A PSC in i2s mode would specify
46155 +"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to
46156 +avoid naming conflicts with non-psc devices providing the same
46157 +function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe
46158 +the mpc5200 simple spi device and a PSC spi mode respectively.
46159 +
46160 +If the soc device is more generic and present on other SOCs, the
46161 +compatible property can specify the more generic device type also.
46162 +
46163 +ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan";
46164 +
46165 +At the time of writing, exact chip may be either 'mpc5200' or
46166 +'mpc5200b'.
46167 +
46168 +Device drivers should always try to match as generically as possible.
46169 +
46170 +III - Structure
46171 +===============
46172 +The device tree for an mpc5200 board follows the structure defined in
46173 +booting-without-of.txt with the following additional notes:
46174 +
46175 +0) the root node
46176 +----------------
46177 +Typical root description node; see booting-without-of
46178 +
46179 +1) The cpus node
46180 +----------------
46181 +The cpus node follows the basic layout described in booting-without-of.
46182 +The bus-frequency property holds the XLB bus frequency
46183 +The clock-frequency property holds the core frequency
46184 +
46185 +2) The memory node
46186 +------------------
46187 +Typical memory description node; see booting-without-of.
46188 +
46189 +3) The soc5200 node
46190 +-------------------
46191 +This node describes the on chip SOC peripherals. Every mpc5200 based
46192 +board will have this node, and as such there is a common naming
46193 +convention for SOC devices.
46194 +
46195 +Required properties:
46196 +name type description
46197 +---- ---- -----------
46198 +device_type string must be "soc"
46199 +ranges int should be <0 baseaddr baseaddr+10000>
46200 +reg int must be <baseaddr 10000>
46201 +compatible string mpc5200: "mpc5200-soc"
46202 + mpc5200b: "mpc5200b-soc\0mpc5200-soc"
46203 +system-frequency int Fsystem frequency; source of all
46204 + other clocks.
46205 +bus-frequency int IPB bus frequency in HZ. Clock rate
46206 + used by most of the soc devices.
46207 +#interrupt-cells int must be <3>.
46208 +
46209 +Recommended properties:
46210 +name type description
46211 +---- ---- -----------
46212 +model string Exact model of the chip;
46213 + ie: model="fsl,mpc5200"
46214 +revision string Silicon revision of chip
46215 + ie: revision="M08A"
46216 +
46217 +The 'model' and 'revision' properties are *strongly* recommended. Having
46218 +them presence acts as a bit of a safety net for working around as yet
46219 +undiscovered bugs on one version of silicon. For example, device drivers
46220 +can use the model and revision properties to decide if a bug fix should
46221 +be turned on.
46222 +
46223 +4) soc5200 child nodes
46224 +----------------------
46225 +Any on chip SOC devices available to Linux must appear as soc5200 child nodes.
46226 +
46227 +Note: The tables below show the value for the mpc5200. A mpc5200b device
46228 +tree should use the "mpc5200b-<device>\0mpc5200-<device> form.
46229 +
46230 +Required soc5200 child nodes:
46231 +name device_type compatible Description
46232 +---- ----------- ---------- -----------
46233 +cdm@<addr> cdm mpc5200-cmd Clock Distribution
46234 +pic@<addr> interrupt-controller mpc5200-pic need an interrupt
46235 + controller to boot
46236 +bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires
46237 + the bestcomm device
46238 +
46239 +Recommended soc5200 child nodes; populate as needed for your board
46240 +name device_type compatible Description
46241 +---- ----------- ---------- -----------
46242 +gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers
46243 +gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose
46244 + timers in GPIO mode
46245 +gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio
46246 + controller
46247 +gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio
46248 + controller
46249 +rtc@<addr> rtc mpc5200-rtc Real time clock
46250 +mscan@<addr> mscan mpc5200-mscan CAN bus controller
46251 +pci@<addr> pci mpc5200-pci PCI bridge
46252 +serial@<addr> serial mpc5200-psc-uart PSC in serial mode
46253 +i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode
46254 +ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode
46255 +spi@<addr> spi mpc5200-psc-spi PSC in spi mode
46256 +irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode
46257 +spi@<addr> spi mpc5200-spi MPC5200 spi device
46258 +ethernet@<addr> network mpc5200-fec MPC5200 ethernet device
46259 +ata@<addr> ata mpc5200-ata IDE ATA interface
46260 +i2c@<addr> i2c mpc5200-i2c I2C controller
46261 +usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller
46262 +xlb@<addr> xlb mpc5200-xlb XLB arbitrator
46263 +
46264 +Important child node properties
46265 +name type description
46266 +---- ---- -----------
46267 +cell-index int When multiple devices are present, is the
46268 + index of the device in the hardware (ie. There
46269 + are 6 PSC on the 5200 numbered PSC1 to PSC6)
46270 + PSC1 has 'cell-index = <0>'
46271 + PSC4 has 'cell-index = <3>'
46272 +
46273 +5) General Purpose Timer nodes (child of soc5200 node)
46274 +On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board
46275 +design supports the internal wdt, then the device node for GPT0 should
46276 +include the empty property 'fsl,has-wdt'.
46277 +
46278 +6) PSC nodes (child of soc5200 node)
46279 +PSC nodes can define the optional 'port-number' property to force assignment
46280 +order of serial ports. For example, PSC5 might be physically connected to
46281 +the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would
46282 +have a "port-number = <0>" property, and PSC1 would have "port-number = <1>".
46283 +
46284 +PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in
46285 +i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the
46286 +compatible field.
46287 +
46288 +7) GPIO controller nodes
46289 +Each GPIO controller node should have the empty property gpio-controller and
46290 +#gpio-cells set to 2. First cell is the GPIO number which is interpreted
46291 +according to the bit numbers in the GPIO control registers. The second cell
46292 +is for flags which is currently unsused.
46293 +
46294 +8) FEC nodes
46295 +The FEC node can specify one of the following properties to configure
46296 +the MII link:
46297 +"fsl,7-wire-mode" - An empty property that specifies the link uses 7-wire
46298 + mode instead of MII
46299 +"current-speed" - Specifies that the MII should be configured for a fixed
46300 + speed. This property should contain two cells. The
46301 + first cell specifies the speed in Mbps and the second
46302 + should be '0' for half duplex and '1' for full duplex
46303 +"phy-handle" - Contains a phandle to an Ethernet PHY.
46304 +
46305 +IV - Extra Notes
46306 +================
46307 +
46308 +1. Interrupt mapping
46309 +--------------------
46310 +The mpc5200 pic driver splits hardware IRQ numbers into two levels. The
46311 +split reflects the layout of the PIC hardware itself, which groups
46312 +interrupts into one of three groups; CRIT, MAIN or PERP. Also, the
46313 +Bestcomm dma engine has it's own set of interrupt sources which are
46314 +cascaded off of peripheral interrupt 0, which the driver interprets as a
46315 +fourth group, SDMA.
46316 +
46317 +The interrupts property for device nodes using the mpc5200 pic consists
46318 +of three cells; <L1 L2 level>
46319 +
46320 + L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]
46321 + L2 := interrupt number; directly mapped from the value in the
46322 + "ICTL PerStat, MainStat, CritStat Encoded Register"
46323 + level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]
46324 +
46325 +2. Shared registers
46326 +-------------------
46327 +Some SoC devices share registers between them. ie. the i2c devices use
46328 +a single clock control register, and almost all device are affected by
46329 +the port_config register. Devices which need to manipulate shared regs
46330 +should look to the parent SoC node. The soc node is responsible
46331 +for arbitrating all shared register access.
46332 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/RCU/checklist.txt linux-2.6.29-rc3.owrt/Documentation/RCU/checklist.txt
46333 --- linux-2.6.29.owrt/Documentation/RCU/checklist.txt 2009-05-10 22:04:39.000000000 +0200
46334 +++ linux-2.6.29-rc3.owrt/Documentation/RCU/checklist.txt 2009-05-10 23:48:28.000000000 +0200
46335 @@ -298,15 +298,3 @@
46336
46337 Note that, rcu_assign_pointer() and rcu_dereference() relate to
46338 SRCU just as they do to other forms of RCU.
46339 -
46340 -15. The whole point of call_rcu(), synchronize_rcu(), and friends
46341 - is to wait until all pre-existing readers have finished before
46342 - carrying out some otherwise-destructive operation. It is
46343 - therefore critically important to -first- remove any path
46344 - that readers can follow that could be affected by the
46345 - destructive operation, and -only- -then- invoke call_rcu(),
46346 - synchronize_rcu(), or friends.
46347 -
46348 - Because these primitives only wait for pre-existing readers,
46349 - it is the caller's responsibility to guarantee safety to
46350 - any subsequent readers.
46351 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/scsi/cxgb3i.txt linux-2.6.29-rc3.owrt/Documentation/scsi/cxgb3i.txt
46352 --- linux-2.6.29.owrt/Documentation/scsi/cxgb3i.txt 2009-05-10 22:04:39.000000000 +0200
46353 +++ linux-2.6.29-rc3.owrt/Documentation/scsi/cxgb3i.txt 2009-05-10 23:48:28.000000000 +0200
46354 @@ -4,7 +4,7 @@
46355 ============
46356
46357 The Chelsio T3 ASIC based Adapters (S310, S320, S302, S304, Mezz cards, etc.
46358 -series of products) support iSCSI acceleration and iSCSI Direct Data Placement
46359 +series of products) supports iSCSI acceleration and iSCSI Direct Data Placement
46360 (DDP) where the hardware handles the expensive byte touching operations, such
46361 as CRC computation and verification, and direct DMA to the final host memory
46362 destination:
46363 @@ -31,9 +31,9 @@
46364 the TCP segments onto the wire. It handles TCP retransmission if
46365 needed.
46366
46367 - On receiving, S3 h/w recovers the iSCSI PDU by reassembling TCP
46368 + On receving, S3 h/w recovers the iSCSI PDU by reassembling TCP
46369 segments, separating the header and data, calculating and verifying
46370 - the digests, then forwarding the header to the host. The payload data,
46371 + the digests, then forwards the header to the host. The payload data,
46372 if possible, will be directly placed into the pre-posted host DDP
46373 buffer. Otherwise, the payload data will be sent to the host too.
46374
46375 @@ -68,8 +68,9 @@
46376 sure the ip address is unique in the network.
46377
46378 3. edit /etc/iscsi/iscsid.conf
46379 - The default setting for MaxRecvDataSegmentLength (131072) is too big;
46380 - replace with a value no bigger than 15360 (for example 8192):
46381 + The default setting for MaxRecvDataSegmentLength (131072) is too big,
46382 + replace "node.conn[0].iscsi.MaxRecvDataSegmentLength" to be a value no
46383 + bigger than 15360 (for example 8192):
46384
46385 node.conn[0].iscsi.MaxRecvDataSegmentLength = 8192
46386
46387 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/tracers/mmiotrace.txt linux-2.6.29-rc3.owrt/Documentation/tracers/mmiotrace.txt
46388 --- linux-2.6.29.owrt/Documentation/tracers/mmiotrace.txt 2009-05-10 22:04:39.000000000 +0200
46389 +++ linux-2.6.29-rc3.owrt/Documentation/tracers/mmiotrace.txt 2009-05-10 23:48:28.000000000 +0200
46390 @@ -78,10 +78,12 @@
46391 events were lost, the trace is incomplete. You should enlarge the buffers and
46392 try again. Buffers are enlarged by first seeing how large the current buffers
46393 are:
46394 -$ cat /debug/tracing/buffer_size_kb
46395 +$ cat /debug/tracing/trace_entries
46396 gives you a number. Approximately double this number and write it back, for
46397 instance:
46398 -$ echo 128000 > /debug/tracing/buffer_size_kb
46399 +$ echo 0 > /debug/tracing/tracing_enabled
46400 +$ echo 128000 > /debug/tracing/trace_entries
46401 +$ echo 1 > /debug/tracing/tracing_enabled
46402 Then start again from the top.
46403
46404 If you are doing a trace for a driver project, e.g. Nouveau, you should also
46405 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/usb/dma.txt linux-2.6.29-rc3.owrt/Documentation/usb/dma.txt
46406 --- linux-2.6.29.owrt/Documentation/usb/dma.txt 2009-05-10 22:04:39.000000000 +0200
46407 +++ linux-2.6.29-rc3.owrt/Documentation/usb/dma.txt 2009-05-10 23:48:28.000000000 +0200
46408 @@ -6,9 +6,8 @@
46409 API OVERVIEW
46410
46411 The big picture is that USB drivers can continue to ignore most DMA issues,
46412 -though they still must provide DMA-ready buffers (see
46413 -Documentation/PCI/PCI-DMA-mapping.txt). That's how they've worked through
46414 -the 2.4 (and earlier) kernels.
46415 +though they still must provide DMA-ready buffers (see DMA-mapping.txt).
46416 +That's how they've worked through the 2.4 (and earlier) kernels.
46417
46418 OR: they can now be DMA-aware.
46419
46420 @@ -63,8 +62,8 @@
46421 force a consistent memory access ordering by using memory barriers. It's
46422 not using a streaming DMA mapping, so it's good for small transfers on
46423 systems where the I/O would otherwise thrash an IOMMU mapping. (See
46424 - Documentation/PCI/PCI-DMA-mapping.txt for definitions of "coherent" and
46425 - "streaming" DMA mappings.)
46426 + Documentation/DMA-mapping.txt for definitions of "coherent" and "streaming"
46427 + DMA mappings.)
46428
46429 Asking for 1/Nth of a page (as well as asking for N pages) is reasonably
46430 space-efficient.
46431 @@ -94,7 +93,7 @@
46432 Existing buffers aren't usable for DMA without first being mapped into the
46433 DMA address space of the device. However, most buffers passed to your
46434 driver can safely be used with such DMA mapping. (See the first section
46435 -of Documentation/PCI/PCI-DMA-mapping.txt, titled "What memory is DMA-able?")
46436 +of DMA-mapping.txt, titled "What memory is DMA-able?")
46437
46438 - When you're using scatterlists, you can map everything at once. On some
46439 systems, this kicks in an IOMMU and turns the scatterlists into single
46440 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Documentation/video4linux/v4lgrab.c linux-2.6.29-rc3.owrt/Documentation/video4linux/v4lgrab.c
46441 --- linux-2.6.29.owrt/Documentation/video4linux/v4lgrab.c 2009-05-10 22:04:39.000000000 +0200
46442 +++ linux-2.6.29-rc3.owrt/Documentation/video4linux/v4lgrab.c 2009-05-10 23:48:28.000000000 +0200
46443 @@ -4,21 +4,12 @@
46444 *
46445 * Compile with:
46446 * gcc -s -Wall -Wstrict-prototypes v4lgrab.c -o v4lgrab
46447 - * Use as:
46448 - * v4lgrab >image.ppm
46449 + * Use as:
46450 + * v4lgrab >image.ppm
46451 *
46452 * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org>
46453 - * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c
46454 - * with minor modifications (Dave Forrest, drf5n@virginia.edu).
46455 - *
46456 - *
46457 - * For some cameras you may need to pre-load libv4l to perform
46458 - * the necessary decompression, e.g.:
46459 - *
46460 - * export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so
46461 - * ./v4lgrab >image.ppm
46462 - *
46463 - * see http://hansdegoede.livejournal.com/3636.html for details.
46464 + * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c
46465 + * with minor modifications (Dave Forrest, drf5n@virginia.edu).
46466 *
46467 */
46468
46469 @@ -33,7 +24,7 @@
46470 #include <linux/types.h>
46471 #include <linux/videodev.h>
46472
46473 -#define VIDEO_DEV "/dev/video0"
46474 +#define FILE "/dev/video0"
46475
46476 /* Stole this from tvset.c */
46477
46478 @@ -99,7 +90,7 @@
46479
46480 int main(int argc, char ** argv)
46481 {
46482 - int fd = open(VIDEO_DEV, O_RDONLY), f;
46483 + int fd = open(FILE, O_RDONLY), f;
46484 struct video_capability cap;
46485 struct video_window win;
46486 struct video_picture vpic;
46487 @@ -109,13 +100,13 @@
46488 unsigned int i, src_depth;
46489
46490 if (fd < 0) {
46491 - perror(VIDEO_DEV);
46492 + perror(FILE);
46493 exit(1);
46494 }
46495
46496 if (ioctl(fd, VIDIOCGCAP, &cap) < 0) {
46497 perror("VIDIOGCAP");
46498 - fprintf(stderr, "(" VIDEO_DEV " not a video4linux device?)\n");
46499 + fprintf(stderr, "(" FILE " not a video4linux device?)\n");
46500 close(fd);
46501 exit(1);
46502 }
46503 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/acpica/tbutils.c linux-2.6.29-rc3.owrt/drivers/acpi/acpica/tbutils.c
46504 --- linux-2.6.29.owrt/drivers/acpi/acpica/tbutils.c 2009-05-10 22:04:38.000000000 +0200
46505 +++ linux-2.6.29-rc3.owrt/drivers/acpi/acpica/tbutils.c 2009-05-10 23:48:28.000000000 +0200
46506 @@ -538,9 +538,10 @@
46507 if (ACPI_FAILURE(status)) {
46508 ACPI_WARNING((AE_INFO,
46509 "Truncating %u table entries!",
46510 - (unsigned) (table_count -
46511 - (acpi_gbl_root_table_list.
46512 - count - 2))));
46513 + (unsigned)
46514 + (acpi_gbl_root_table_list.size -
46515 + acpi_gbl_root_table_list.
46516 + count)));
46517 break;
46518 }
46519 }
46520 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/acpica/uteval.c linux-2.6.29-rc3.owrt/drivers/acpi/acpica/uteval.c
46521 --- linux-2.6.29.owrt/drivers/acpi/acpica/uteval.c 2009-05-10 22:04:38.000000000 +0200
46522 +++ linux-2.6.29-rc3.owrt/drivers/acpi/acpica/uteval.c 2009-05-10 23:48:28.000000000 +0200
46523 @@ -116,9 +116,9 @@
46524 return_ACPI_STATUS(AE_NO_MEMORY);
46525 }
46526
46527 - /* Default return value is 0, NOT-SUPPORTED */
46528 + /* Default return value is SUPPORTED */
46529
46530 - return_desc->integer.value = 0;
46531 + return_desc->integer.value = ACPI_UINT32_MAX;
46532 walk_state->return_desc = return_desc;
46533
46534 /* Compare input string to static table of supported interfaces */
46535 @@ -127,8 +127,10 @@
46536 if (!ACPI_STRCMP
46537 (string_desc->string.pointer,
46538 acpi_interfaces_supported[i])) {
46539 - return_desc->integer.value = ACPI_UINT32_MAX;
46540 - goto done;
46541 +
46542 + /* The interface is supported */
46543 +
46544 + return_ACPI_STATUS(AE_OK);
46545 }
46546 }
46547
46548 @@ -139,14 +141,15 @@
46549 */
46550 status = acpi_os_validate_interface(string_desc->string.pointer);
46551 if (ACPI_SUCCESS(status)) {
46552 - return_desc->integer.value = ACPI_UINT32_MAX;
46553 +
46554 + /* The interface is supported */
46555 +
46556 + return_ACPI_STATUS(AE_OK);
46557 }
46558
46559 -done:
46560 - ACPI_DEBUG_PRINT_RAW((ACPI_DB_INFO, "ACPI: BIOS _OSI(%s) %ssupported\n",
46561 - string_desc->string.pointer,
46562 - return_desc->integer.value == 0 ? "not-" : ""));
46563 + /* The interface is not supported */
46564
46565 + return_desc->integer.value = 0;
46566 return_ACPI_STATUS(AE_OK);
46567 }
46568
46569 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/battery.c linux-2.6.29-rc3.owrt/drivers/acpi/battery.c
46570 --- linux-2.6.29.owrt/drivers/acpi/battery.c 2009-05-10 22:04:38.000000000 +0200
46571 +++ linux-2.6.29-rc3.owrt/drivers/acpi/battery.c 2009-05-10 23:48:28.000000000 +0200
46572 @@ -138,29 +138,6 @@
46573
46574 static int acpi_battery_get_state(struct acpi_battery *battery);
46575
46576 -static int acpi_battery_is_charged(struct acpi_battery *battery)
46577 -{
46578 - /* either charging or discharging */
46579 - if (battery->state != 0)
46580 - return 0;
46581 -
46582 - /* battery not reporting charge */
46583 - if (battery->capacity_now == ACPI_BATTERY_VALUE_UNKNOWN ||
46584 - battery->capacity_now == 0)
46585 - return 0;
46586 -
46587 - /* good batteries update full_charge as the batteries degrade */
46588 - if (battery->full_charge_capacity == battery->capacity_now)
46589 - return 1;
46590 -
46591 - /* fallback to using design values for broken batteries */
46592 - if (battery->design_capacity == battery->capacity_now)
46593 - return 1;
46594 -
46595 - /* we don't do any sort of metric based on percentages */
46596 - return 0;
46597 -}
46598 -
46599 static int acpi_battery_get_property(struct power_supply *psy,
46600 enum power_supply_property psp,
46601 union power_supply_propval *val)
46602 @@ -178,7 +155,7 @@
46603 val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
46604 else if (battery->state & 0x02)
46605 val->intval = POWER_SUPPLY_STATUS_CHARGING;
46606 - else if (acpi_battery_is_charged(battery))
46607 + else if (battery->state == 0)
46608 val->intval = POWER_SUPPLY_STATUS_FULL;
46609 else
46610 val->intval = POWER_SUPPLY_STATUS_UNKNOWN;
46611 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/bus.c linux-2.6.29-rc3.owrt/drivers/acpi/bus.c
46612 --- linux-2.6.29.owrt/drivers/acpi/bus.c 2009-05-10 22:04:38.000000000 +0200
46613 +++ linux-2.6.29-rc3.owrt/drivers/acpi/bus.c 2009-05-10 23:48:28.000000000 +0200
46614 @@ -758,7 +758,8 @@
46615 acpi_status status = AE_OK;
46616 extern acpi_status acpi_os_initialize1(void);
46617
46618 - acpi_os_initialize1();
46619 +
46620 + status = acpi_os_initialize1();
46621
46622 status =
46623 acpi_enable_subsystem(ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE);
46624 @@ -768,6 +769,12 @@
46625 goto error1;
46626 }
46627
46628 + if (ACPI_FAILURE(status)) {
46629 + printk(KERN_ERR PREFIX
46630 + "Unable to initialize ACPI OS objects\n");
46631 + goto error1;
46632 + }
46633 +
46634 /*
46635 * ACPI 2.0 requires the EC driver to be loaded and work before
46636 * the EC device is found in the namespace (i.e. before acpi_initialize_objects()
46637 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/container.c linux-2.6.29-rc3.owrt/drivers/acpi/container.c
46638 --- linux-2.6.29.owrt/drivers/acpi/container.c 2009-05-10 22:04:38.000000000 +0200
46639 +++ linux-2.6.29-rc3.owrt/drivers/acpi/container.c 2009-05-10 23:48:28.000000000 +0200
46640 @@ -163,7 +163,7 @@
46641 case ACPI_NOTIFY_BUS_CHECK:
46642 /* Fall through */
46643 case ACPI_NOTIFY_DEVICE_CHECK:
46644 - printk(KERN_WARNING "Container driver received %s event\n",
46645 + printk("Container driver received %s event\n",
46646 (type == ACPI_NOTIFY_BUS_CHECK) ?
46647 "ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK");
46648 status = acpi_bus_get_device(handle, &device);
46649 @@ -174,8 +174,7 @@
46650 kobject_uevent(&device->dev.kobj,
46651 KOBJ_ONLINE);
46652 else
46653 - printk(KERN_WARNING
46654 - "Failed to add container\n");
46655 + printk("Failed to add container\n");
46656 }
46657 } else {
46658 if (ACPI_SUCCESS(status)) {
46659 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/dock.c linux-2.6.29-rc3.owrt/drivers/acpi/dock.c
46660 --- linux-2.6.29.owrt/drivers/acpi/dock.c 2009-05-10 22:04:38.000000000 +0200
46661 +++ linux-2.6.29-rc3.owrt/drivers/acpi/dock.c 2009-05-10 23:48:28.000000000 +0200
46662 @@ -855,14 +855,10 @@
46663 static ssize_t show_docked(struct device *dev,
46664 struct device_attribute *attr, char *buf)
46665 {
46666 - struct acpi_device *tmp;
46667 -
46668 struct dock_station *dock_station = *((struct dock_station **)
46669 dev->platform_data);
46670 + return snprintf(buf, PAGE_SIZE, "%d\n", dock_present(dock_station));
46671
46672 - if (ACPI_SUCCESS(acpi_bus_get_device(dock_station->handle, &tmp)))
46673 - return snprintf(buf, PAGE_SIZE, "1\n");
46674 - return snprintf(buf, PAGE_SIZE, "0\n");
46675 }
46676 static DEVICE_ATTR(docked, S_IRUGO, show_docked, NULL);
46677
46678 @@ -988,7 +984,7 @@
46679
46680 ret = device_create_file(&dock_device->dev, &dev_attr_docked);
46681 if (ret) {
46682 - printk(KERN_ERR "Error %d adding sysfs file\n", ret);
46683 + printk("Error %d adding sysfs file\n", ret);
46684 platform_device_unregister(dock_device);
46685 kfree(dock_station);
46686 dock_station = NULL;
46687 @@ -996,7 +992,7 @@
46688 }
46689 ret = device_create_file(&dock_device->dev, &dev_attr_undock);
46690 if (ret) {
46691 - printk(KERN_ERR "Error %d adding sysfs file\n", ret);
46692 + printk("Error %d adding sysfs file\n", ret);
46693 device_remove_file(&dock_device->dev, &dev_attr_docked);
46694 platform_device_unregister(dock_device);
46695 kfree(dock_station);
46696 @@ -1005,7 +1001,7 @@
46697 }
46698 ret = device_create_file(&dock_device->dev, &dev_attr_uid);
46699 if (ret) {
46700 - printk(KERN_ERR "Error %d adding sysfs file\n", ret);
46701 + printk("Error %d adding sysfs file\n", ret);
46702 device_remove_file(&dock_device->dev, &dev_attr_docked);
46703 device_remove_file(&dock_device->dev, &dev_attr_undock);
46704 platform_device_unregister(dock_device);
46705 @@ -1015,7 +1011,7 @@
46706 }
46707 ret = device_create_file(&dock_device->dev, &dev_attr_flags);
46708 if (ret) {
46709 - printk(KERN_ERR "Error %d adding sysfs file\n", ret);
46710 + printk("Error %d adding sysfs file\n", ret);
46711 device_remove_file(&dock_device->dev, &dev_attr_docked);
46712 device_remove_file(&dock_device->dev, &dev_attr_undock);
46713 device_remove_file(&dock_device->dev, &dev_attr_uid);
46714 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/ec.c linux-2.6.29-rc3.owrt/drivers/acpi/ec.c
46715 --- linux-2.6.29.owrt/drivers/acpi/ec.c 2009-05-10 22:04:38.000000000 +0200
46716 +++ linux-2.6.29-rc3.owrt/drivers/acpi/ec.c 2009-05-10 23:48:28.000000000 +0200
46717 @@ -120,8 +120,6 @@
46718 spinlock_t curr_lock;
46719 } *boot_ec, *first_ec;
46720
46721 -static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
46722 -
46723 /* --------------------------------------------------------------------------
46724 Transaction Management
46725 -------------------------------------------------------------------------- */
46726 @@ -261,8 +259,6 @@
46727 clear_bit(EC_FLAGS_GPE_MODE, &ec->flags);
46728 acpi_disable_gpe(NULL, ec->gpe);
46729 }
46730 - if (EC_FLAGS_MSI)
46731 - udelay(ACPI_EC_DELAY);
46732 /* start transaction */
46733 spin_lock_irqsave(&ec->curr_lock, tmp);
46734 /* following two actions should be kept atomic */
46735 @@ -971,11 +967,6 @@
46736 /*
46737 * Generate a boot ec context
46738 */
46739 - if (dmi_name_in_vendors("Micro-Star") ||
46740 - dmi_name_in_vendors("Notebook")) {
46741 - pr_info(PREFIX "Enabling special treatment for EC from MSI.\n");
46742 - EC_FLAGS_MSI = 1;
46743 - }
46744 status = acpi_get_table(ACPI_SIG_ECDT, 1,
46745 (struct acpi_table_header **)&ecdt_ptr);
46746 if (ACPI_SUCCESS(status)) {
46747 @@ -991,7 +982,7 @@
46748 saved_ec = kmalloc(sizeof(struct acpi_ec), GFP_KERNEL);
46749 if (!saved_ec)
46750 return -ENOMEM;
46751 - memcpy(saved_ec, boot_ec, sizeof(*saved_ec));
46752 + memcpy(&saved_ec, boot_ec, sizeof(saved_ec));
46753 /* fall through */
46754 }
46755 /* This workaround is needed only on some broken machines,
46756 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/glue.c linux-2.6.29-rc3.owrt/drivers/acpi/glue.c
46757 --- linux-2.6.29.owrt/drivers/acpi/glue.c 2009-05-10 22:04:38.000000000 +0200
46758 +++ linux-2.6.29-rc3.owrt/drivers/acpi/glue.c 2009-05-10 23:48:28.000000000 +0200
46759 @@ -255,12 +255,12 @@
46760 }
46761 type = acpi_get_bus_type(dev->bus);
46762 if (!type) {
46763 - DBG("No ACPI bus support for %s\n", dev_name(dev));
46764 + DBG("No ACPI bus support for %s\n", dev->bus_id);
46765 ret = -EINVAL;
46766 goto end;
46767 }
46768 if ((ret = type->find_device(dev, &handle)) != 0)
46769 - DBG("Can't get handler for %s\n", dev_name(dev));
46770 + DBG("Can't get handler for %s\n", dev->bus_id);
46771 end:
46772 if (!ret)
46773 acpi_bind_one(dev, handle);
46774 @@ -271,10 +271,10 @@
46775
46776 acpi_get_name(dev->archdata.acpi_handle,
46777 ACPI_FULL_PATHNAME, &buffer);
46778 - DBG("Device %s -> %s\n", dev_name(dev), (char *)buffer.pointer);
46779 + DBG("Device %s -> %s\n", dev->bus_id, (char *)buffer.pointer);
46780 kfree(buffer.pointer);
46781 } else
46782 - DBG("Device %s -> No ACPI support\n", dev_name(dev));
46783 + DBG("Device %s -> No ACPI support\n", dev->bus_id);
46784 #endif
46785
46786 return ret;
46787 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/Kconfig linux-2.6.29-rc3.owrt/drivers/acpi/Kconfig
46788 --- linux-2.6.29.owrt/drivers/acpi/Kconfig 2009-05-10 22:04:38.000000000 +0200
46789 +++ linux-2.6.29-rc3.owrt/drivers/acpi/Kconfig 2009-05-10 23:48:28.000000000 +0200
46790 @@ -9,7 +9,6 @@
46791 depends on PCI
46792 depends on PM
46793 select PNP
46794 - select CPU_IDLE
46795 default y
46796 ---help---
46797 Advanced Configuration and Power Interface (ACPI) support for
46798 @@ -254,6 +253,13 @@
46799 help you correlate PCI bus addresses with the physical geography
46800 of your slots. If you are unsure, say N.
46801
46802 +config ACPI_SYSTEM
46803 + bool
46804 + default y
46805 + help
46806 + This driver will enable your system to shut down using ACPI, and
46807 + dump your ACPI DSDT table using /proc/acpi/dsdt.
46808 +
46809 config X86_PM_TIMER
46810 bool "Power Management Timer Support" if EMBEDDED
46811 depends on X86
46812 @@ -281,7 +287,7 @@
46813 support physical cpu/memory hot-plug.
46814
46815 If one selects "m", this driver can be loaded with
46816 - "modprobe container".
46817 + "modprobe acpi_container".
46818
46819 config ACPI_HOTPLUG_MEMORY
46820 tristate "Memory Hotplug"
46821 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/Makefile linux-2.6.29-rc3.owrt/drivers/acpi/Makefile
46822 --- linux-2.6.29.owrt/drivers/acpi/Makefile 2009-05-10 22:04:38.000000000 +0200
46823 +++ linux-2.6.29-rc3.owrt/drivers/acpi/Makefile 2009-05-10 23:48:28.000000000 +0200
46824 @@ -52,7 +52,7 @@
46825 obj-$(CONFIG_ACPI_CONTAINER) += container.o
46826 obj-$(CONFIG_ACPI_THERMAL) += thermal.o
46827 obj-y += power.o
46828 -obj-y += system.o event.o
46829 +obj-$(CONFIG_ACPI_SYSTEM) += system.o event.o
46830 obj-$(CONFIG_ACPI_DEBUG) += debug.o
46831 obj-$(CONFIG_ACPI_NUMA) += numa.o
46832 obj-$(CONFIG_ACPI_HOTPLUG_MEMORY) += acpi_memhotplug.o
46833 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/numa.c linux-2.6.29-rc3.owrt/drivers/acpi/numa.c
46834 --- linux-2.6.29.owrt/drivers/acpi/numa.c 2009-05-10 22:04:38.000000000 +0200
46835 +++ linux-2.6.29-rc3.owrt/drivers/acpi/numa.c 2009-05-10 23:48:28.000000000 +0200
46836 @@ -277,7 +277,7 @@
46837 int pxm, node = -1;
46838
46839 pxm = acpi_get_pxm(handle);
46840 - if (pxm >= 0 && pxm < MAX_PXM_DOMAINS)
46841 + if (pxm >= 0)
46842 node = acpi_map_pxm_to_node(pxm);
46843
46844 return node;
46845 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/osl.c linux-2.6.29-rc3.owrt/drivers/acpi/osl.c
46846 --- linux-2.6.29.owrt/drivers/acpi/osl.c 2009-05-10 22:04:38.000000000 +0200
46847 +++ linux-2.6.29-rc3.owrt/drivers/acpi/osl.c 2009-05-10 23:48:28.000000000 +0200
46848 @@ -228,10 +228,10 @@
46849 if (acpi_in_debugger) {
46850 kdb_printf("%s", buffer);
46851 } else {
46852 - printk(KERN_CONT "%s", buffer);
46853 + printk("%s", buffer);
46854 }
46855 #else
46856 - printk(KERN_CONT "%s", buffer);
46857 + printk("%s", buffer);
46858 #endif
46859 }
46860
46861 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/pci_link.c linux-2.6.29-rc3.owrt/drivers/acpi/pci_link.c
46862 --- linux-2.6.29.owrt/drivers/acpi/pci_link.c 2009-05-10 22:04:38.000000000 +0200
46863 +++ linux-2.6.29-rc3.owrt/drivers/acpi/pci_link.c 2009-05-10 23:48:28.000000000 +0200
46864 @@ -593,7 +593,7 @@
46865 return -ENODEV;
46866 } else {
46867 acpi_irq_penalty[link->irq.active] += PIRQ_PENALTY_PCI_USING;
46868 - printk(KERN_WARNING PREFIX "%s [%s] enabled at IRQ %d\n",
46869 + printk(PREFIX "%s [%s] enabled at IRQ %d\n",
46870 acpi_device_name(link->device),
46871 acpi_device_bid(link->device), link->irq.active);
46872 }
46873 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/processor_idle.c linux-2.6.29-rc3.owrt/drivers/acpi/processor_idle.c
46874 --- linux-2.6.29.owrt/drivers/acpi/processor_idle.c 2009-05-10 22:04:38.000000000 +0200
46875 +++ linux-2.6.29-rc3.owrt/drivers/acpi/processor_idle.c 2009-05-10 23:48:28.000000000 +0200
46876 @@ -66,17 +66,43 @@
46877 #define ACPI_PROCESSOR_FILE_POWER "power"
46878 #define US_TO_PM_TIMER_TICKS(t) ((t * (PM_TIMER_FREQUENCY/1000)) / 1000)
46879 #define PM_TIMER_TICK_NS (1000000000ULL/PM_TIMER_FREQUENCY)
46880 +#ifndef CONFIG_CPU_IDLE
46881 +#define C2_OVERHEAD 4 /* 1us (3.579 ticks per us) */
46882 +#define C3_OVERHEAD 4 /* 1us (3.579 ticks per us) */
46883 +static void (*pm_idle_save) (void) __read_mostly;
46884 +#else
46885 #define C2_OVERHEAD 1 /* 1us */
46886 #define C3_OVERHEAD 1 /* 1us */
46887 +#endif
46888 #define PM_TIMER_TICKS_TO_US(p) (((p) * 1000)/(PM_TIMER_FREQUENCY/1000))
46889
46890 static unsigned int max_cstate __read_mostly = ACPI_PROCESSOR_MAX_POWER;
46891 +#ifdef CONFIG_CPU_IDLE
46892 module_param(max_cstate, uint, 0000);
46893 +#else
46894 +module_param(max_cstate, uint, 0644);
46895 +#endif
46896 static unsigned int nocst __read_mostly;
46897 module_param(nocst, uint, 0000);
46898
46899 +#ifndef CONFIG_CPU_IDLE
46900 +/*
46901 + * bm_history -- bit-mask with a bit per jiffy of bus-master activity
46902 + * 1000 HZ: 0xFFFFFFFF: 32 jiffies = 32ms
46903 + * 800 HZ: 0xFFFFFFFF: 32 jiffies = 40ms
46904 + * 100 HZ: 0x0000000F: 4 jiffies = 40ms
46905 + * reduce history for more aggressive entry into C3
46906 + */
46907 +static unsigned int bm_history __read_mostly =
46908 + (HZ >= 800 ? 0xFFFFFFFF : ((1U << (HZ / 25)) - 1));
46909 +module_param(bm_history, uint, 0644);
46910 +
46911 +static int acpi_processor_set_power_policy(struct acpi_processor *pr);
46912 +
46913 +#else /* CONFIG_CPU_IDLE */
46914 static unsigned int latency_factor __read_mostly = 2;
46915 module_param(latency_factor, uint, 0644);
46916 +#endif
46917
46918 /*
46919 * IBM ThinkPad R40e crashes mysteriously when going into C2 or C3.
46920 @@ -198,6 +224,71 @@
46921 current_thread_info()->status |= TS_POLLING;
46922 }
46923
46924 +#ifndef CONFIG_CPU_IDLE
46925 +
46926 +static void
46927 +acpi_processor_power_activate(struct acpi_processor *pr,
46928 + struct acpi_processor_cx *new)
46929 +{
46930 + struct acpi_processor_cx *old;
46931 +
46932 + if (!pr || !new)
46933 + return;
46934 +
46935 + old = pr->power.state;
46936 +
46937 + if (old)
46938 + old->promotion.count = 0;
46939 + new->demotion.count = 0;
46940 +
46941 + /* Cleanup from old state. */
46942 + if (old) {
46943 + switch (old->type) {
46944 + case ACPI_STATE_C3:
46945 + /* Disable bus master reload */
46946 + if (new->type != ACPI_STATE_C3 && pr->flags.bm_check)
46947 + acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0);
46948 + break;
46949 + }
46950 + }
46951 +
46952 + /* Prepare to use new state. */
46953 + switch (new->type) {
46954 + case ACPI_STATE_C3:
46955 + /* Enable bus master reload */
46956 + if (old->type != ACPI_STATE_C3 && pr->flags.bm_check)
46957 + acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 1);
46958 + break;
46959 + }
46960 +
46961 + pr->power.state = new;
46962 +
46963 + return;
46964 +}
46965 +
46966 +static atomic_t c3_cpu_count;
46967 +
46968 +/* Common C-state entry for C2, C3, .. */
46969 +static void acpi_cstate_enter(struct acpi_processor_cx *cstate)
46970 +{
46971 + /* Don't trace irqs off for idle */
46972 + stop_critical_timings();
46973 + if (cstate->entry_method == ACPI_CSTATE_FFH) {
46974 + /* Call into architectural FFH based C-state */
46975 + acpi_processor_ffh_cstate_enter(cstate);
46976 + } else {
46977 + int unused;
46978 + /* IO port based C-state */
46979 + inb(cstate->address);
46980 + /* Dummy wait op - must do something useless after P_LVL2 read
46981 + because chipsets cannot guarantee that STPCLK# signal
46982 + gets asserted in time to freeze execution properly. */
46983 + unused = inl(acpi_gbl_FADT.xpm_timer_block.address);
46984 + }
46985 + start_critical_timings();
46986 +}
46987 +#endif /* !CONFIG_CPU_IDLE */
46988 +
46989 #ifdef ARCH_APICTIMER_STOPS_ON_C3
46990
46991 /*
46992 @@ -299,6 +390,421 @@
46993 }
46994 #endif
46995
46996 +#ifndef CONFIG_CPU_IDLE
46997 +static void acpi_processor_idle(void)
46998 +{
46999 + struct acpi_processor *pr = NULL;
47000 + struct acpi_processor_cx *cx = NULL;
47001 + struct acpi_processor_cx *next_state = NULL;
47002 + int sleep_ticks = 0;
47003 + u32 t1, t2 = 0;
47004 +
47005 + /*
47006 + * Interrupts must be disabled during bus mastering calculations and
47007 + * for C2/C3 transitions.
47008 + */
47009 + local_irq_disable();
47010 +
47011 + pr = __get_cpu_var(processors);
47012 + if (!pr) {
47013 + local_irq_enable();
47014 + return;
47015 + }
47016 +
47017 + /*
47018 + * Check whether we truly need to go idle, or should
47019 + * reschedule:
47020 + */
47021 + if (unlikely(need_resched())) {
47022 + local_irq_enable();
47023 + return;
47024 + }
47025 +
47026 + cx = pr->power.state;
47027 + if (!cx || acpi_idle_suspend) {
47028 + if (pm_idle_save) {
47029 + pm_idle_save(); /* enables IRQs */
47030 + } else {
47031 + acpi_safe_halt();
47032 + local_irq_enable();
47033 + }
47034 +
47035 + return;
47036 + }
47037 +
47038 + /*
47039 + * Check BM Activity
47040 + * -----------------
47041 + * Check for bus mastering activity (if required), record, and check
47042 + * for demotion.
47043 + */
47044 + if (pr->flags.bm_check) {
47045 + u32 bm_status = 0;
47046 + unsigned long diff = jiffies - pr->power.bm_check_timestamp;
47047 +
47048 + if (diff > 31)
47049 + diff = 31;
47050 +
47051 + pr->power.bm_activity <<= diff;
47052 +
47053 + acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
47054 + if (bm_status) {
47055 + pr->power.bm_activity |= 0x1;
47056 + acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
47057 + }
47058 + /*
47059 + * PIIX4 Erratum #18: Note that BM_STS doesn't always reflect
47060 + * the true state of bus mastering activity; forcing us to
47061 + * manually check the BMIDEA bit of each IDE channel.
47062 + */
47063 + else if (errata.piix4.bmisx) {
47064 + if ((inb_p(errata.piix4.bmisx + 0x02) & 0x01)
47065 + || (inb_p(errata.piix4.bmisx + 0x0A) & 0x01))
47066 + pr->power.bm_activity |= 0x1;
47067 + }
47068 +
47069 + pr->power.bm_check_timestamp = jiffies;
47070 +
47071 + /*
47072 + * If bus mastering is or was active this jiffy, demote
47073 + * to avoid a faulty transition. Note that the processor
47074 + * won't enter a low-power state during this call (to this
47075 + * function) but should upon the next.
47076 + *
47077 + * TBD: A better policy might be to fallback to the demotion
47078 + * state (use it for this quantum only) istead of
47079 + * demoting -- and rely on duration as our sole demotion
47080 + * qualification. This may, however, introduce DMA
47081 + * issues (e.g. floppy DMA transfer overrun/underrun).
47082 + */
47083 + if ((pr->power.bm_activity & 0x1) &&
47084 + cx->demotion.threshold.bm) {
47085 + local_irq_enable();
47086 + next_state = cx->demotion.state;
47087 + goto end;
47088 + }
47089 + }
47090 +
47091 +#ifdef CONFIG_HOTPLUG_CPU
47092 + /*
47093 + * Check for P_LVL2_UP flag before entering C2 and above on
47094 + * an SMP system. We do it here instead of doing it at _CST/P_LVL
47095 + * detection phase, to work cleanly with logical CPU hotplug.
47096 + */
47097 + if ((cx->type != ACPI_STATE_C1) && (num_online_cpus() > 1) &&
47098 + !pr->flags.has_cst && !(acpi_gbl_FADT.flags & ACPI_FADT_C2_MP_SUPPORTED))
47099 + cx = &pr->power.states[ACPI_STATE_C1];
47100 +#endif
47101 +
47102 + /*
47103 + * Sleep:
47104 + * ------
47105 + * Invoke the current Cx state to put the processor to sleep.
47106 + */
47107 + if (cx->type == ACPI_STATE_C2 || cx->type == ACPI_STATE_C3) {
47108 + current_thread_info()->status &= ~TS_POLLING;
47109 + /*
47110 + * TS_POLLING-cleared state must be visible before we
47111 + * test NEED_RESCHED:
47112 + */
47113 + smp_mb();
47114 + if (need_resched()) {
47115 + current_thread_info()->status |= TS_POLLING;
47116 + local_irq_enable();
47117 + return;
47118 + }
47119 + }
47120 +
47121 + switch (cx->type) {
47122 +
47123 + case ACPI_STATE_C1:
47124 + /*
47125 + * Invoke C1.
47126 + * Use the appropriate idle routine, the one that would
47127 + * be used without acpi C-states.
47128 + */
47129 + if (pm_idle_save) {
47130 + pm_idle_save(); /* enables IRQs */
47131 + } else {
47132 + acpi_safe_halt();
47133 + local_irq_enable();
47134 + }
47135 +
47136 + /*
47137 + * TBD: Can't get time duration while in C1, as resumes
47138 + * go to an ISR rather than here. Need to instrument
47139 + * base interrupt handler.
47140 + *
47141 + * Note: the TSC better not stop in C1, sched_clock() will
47142 + * skew otherwise.
47143 + */
47144 + sleep_ticks = 0xFFFFFFFF;
47145 +
47146 + break;
47147 +
47148 + case ACPI_STATE_C2:
47149 + /* Get start time (ticks) */
47150 + t1 = inl(acpi_gbl_FADT.xpm_timer_block.address);
47151 + /* Tell the scheduler that we are going deep-idle: */
47152 + sched_clock_idle_sleep_event();
47153 + /* Invoke C2 */
47154 + acpi_state_timer_broadcast(pr, cx, 1);
47155 + acpi_cstate_enter(cx);
47156 + /* Get end time (ticks) */
47157 + t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
47158 +
47159 +#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
47160 + /* TSC halts in C2, so notify users */
47161 + if (tsc_halts_in_c(ACPI_STATE_C2))
47162 + mark_tsc_unstable("possible TSC halt in C2");
47163 +#endif
47164 + /* Compute time (ticks) that we were actually asleep */
47165 + sleep_ticks = ticks_elapsed(t1, t2);
47166 +
47167 + /* Tell the scheduler how much we idled: */
47168 + sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS);
47169 +
47170 + /* Re-enable interrupts */
47171 + local_irq_enable();
47172 + /* Do not account our idle-switching overhead: */
47173 + sleep_ticks -= cx->latency_ticks + C2_OVERHEAD;
47174 +
47175 + current_thread_info()->status |= TS_POLLING;
47176 + acpi_state_timer_broadcast(pr, cx, 0);
47177 + break;
47178 +
47179 + case ACPI_STATE_C3:
47180 + acpi_unlazy_tlb(smp_processor_id());
47181 + /*
47182 + * Must be done before busmaster disable as we might
47183 + * need to access HPET !
47184 + */
47185 + acpi_state_timer_broadcast(pr, cx, 1);
47186 + /*
47187 + * disable bus master
47188 + * bm_check implies we need ARB_DIS
47189 + * !bm_check implies we need cache flush
47190 + * bm_control implies whether we can do ARB_DIS
47191 + *
47192 + * That leaves a case where bm_check is set and bm_control is
47193 + * not set. In that case we cannot do much, we enter C3
47194 + * without doing anything.
47195 + */
47196 + if (pr->flags.bm_check && pr->flags.bm_control) {
47197 + if (atomic_inc_return(&c3_cpu_count) ==
47198 + num_online_cpus()) {
47199 + /*
47200 + * All CPUs are trying to go to C3
47201 + * Disable bus master arbitration
47202 + */
47203 + acpi_set_register(ACPI_BITREG_ARB_DISABLE, 1);
47204 + }
47205 + } else if (!pr->flags.bm_check) {
47206 + /* SMP with no shared cache... Invalidate cache */
47207 + ACPI_FLUSH_CPU_CACHE();
47208 + }
47209 +
47210 + /* Get start time (ticks) */
47211 + t1 = inl(acpi_gbl_FADT.xpm_timer_block.address);
47212 + /* Invoke C3 */
47213 + /* Tell the scheduler that we are going deep-idle: */
47214 + sched_clock_idle_sleep_event();
47215 + acpi_cstate_enter(cx);
47216 + /* Get end time (ticks) */
47217 + t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
47218 + if (pr->flags.bm_check && pr->flags.bm_control) {
47219 + /* Enable bus master arbitration */
47220 + atomic_dec(&c3_cpu_count);
47221 + acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0);
47222 + }
47223 +
47224 +#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
47225 + /* TSC halts in C3, so notify users */
47226 + if (tsc_halts_in_c(ACPI_STATE_C3))
47227 + mark_tsc_unstable("TSC halts in C3");
47228 +#endif
47229 + /* Compute time (ticks) that we were actually asleep */
47230 + sleep_ticks = ticks_elapsed(t1, t2);
47231 + /* Tell the scheduler how much we idled: */
47232 + sched_clock_idle_wakeup_event(sleep_ticks*PM_TIMER_TICK_NS);
47233 +
47234 + /* Re-enable interrupts */
47235 + local_irq_enable();
47236 + /* Do not account our idle-switching overhead: */
47237 + sleep_ticks -= cx->latency_ticks + C3_OVERHEAD;
47238 +
47239 + current_thread_info()->status |= TS_POLLING;
47240 + acpi_state_timer_broadcast(pr, cx, 0);
47241 + break;
47242 +
47243 + default:
47244 + local_irq_enable();
47245 + return;
47246 + }
47247 + cx->usage++;
47248 + if ((cx->type != ACPI_STATE_C1) && (sleep_ticks > 0))
47249 + cx->time += sleep_ticks;
47250 +
47251 + next_state = pr->power.state;
47252 +
47253 +#ifdef CONFIG_HOTPLUG_CPU
47254 + /* Don't do promotion/demotion */
47255 + if ((cx->type == ACPI_STATE_C1) && (num_online_cpus() > 1) &&
47256 + !pr->flags.has_cst && !(acpi_gbl_FADT.flags & ACPI_FADT_C2_MP_SUPPORTED)) {
47257 + next_state = cx;
47258 + goto end;
47259 + }
47260 +#endif
47261 +
47262 + /*
47263 + * Promotion?
47264 + * ----------
47265 + * Track the number of longs (time asleep is greater than threshold)
47266 + * and promote when the count threshold is reached. Note that bus
47267 + * mastering activity may prevent promotions.
47268 + * Do not promote above max_cstate.
47269 + */
47270 + if (cx->promotion.state &&
47271 + ((cx->promotion.state - pr->power.states) <= max_cstate)) {
47272 + if (sleep_ticks > cx->promotion.threshold.ticks &&
47273 + cx->promotion.state->latency <=
47274 + pm_qos_requirement(PM_QOS_CPU_DMA_LATENCY)) {
47275 + cx->promotion.count++;
47276 + cx->demotion.count = 0;
47277 + if (cx->promotion.count >=
47278 + cx->promotion.threshold.count) {
47279 + if (pr->flags.bm_check) {
47280 + if (!
47281 + (pr->power.bm_activity & cx->
47282 + promotion.threshold.bm)) {
47283 + next_state =
47284 + cx->promotion.state;
47285 + goto end;
47286 + }
47287 + } else {
47288 + next_state = cx->promotion.state;
47289 + goto end;
47290 + }
47291 + }
47292 + }
47293 + }
47294 +
47295 + /*
47296 + * Demotion?
47297 + * ---------
47298 + * Track the number of shorts (time asleep is less than time threshold)
47299 + * and demote when the usage threshold is reached.
47300 + */
47301 + if (cx->demotion.state) {
47302 + if (sleep_ticks < cx->demotion.threshold.ticks) {
47303 + cx->demotion.count++;
47304 + cx->promotion.count = 0;
47305 + if (cx->demotion.count >= cx->demotion.threshold.count) {
47306 + next_state = cx->demotion.state;
47307 + goto end;
47308 + }
47309 + }
47310 + }
47311 +
47312 + end:
47313 + /*
47314 + * Demote if current state exceeds max_cstate
47315 + * or if the latency of the current state is unacceptable
47316 + */
47317 + if ((pr->power.state - pr->power.states) > max_cstate ||
47318 + pr->power.state->latency >
47319 + pm_qos_requirement(PM_QOS_CPU_DMA_LATENCY)) {
47320 + if (cx->demotion.state)
47321 + next_state = cx->demotion.state;
47322 + }
47323 +
47324 + /*
47325 + * New Cx State?
47326 + * -------------
47327 + * If we're going to start using a new Cx state we must clean up
47328 + * from the previous and prepare to use the new.
47329 + */
47330 + if (next_state != pr->power.state)
47331 + acpi_processor_power_activate(pr, next_state);
47332 +}
47333 +
47334 +static int acpi_processor_set_power_policy(struct acpi_processor *pr)
47335 +{
47336 + unsigned int i;
47337 + unsigned int state_is_set = 0;
47338 + struct acpi_processor_cx *lower = NULL;
47339 + struct acpi_processor_cx *higher = NULL;
47340 + struct acpi_processor_cx *cx;
47341 +
47342 +
47343 + if (!pr)
47344 + return -EINVAL;
47345 +
47346 + /*
47347 + * This function sets the default Cx state policy (OS idle handler).
47348 + * Our scheme is to promote quickly to C2 but more conservatively
47349 + * to C3. We're favoring C2 for its characteristics of low latency
47350 + * (quick response), good power savings, and ability to allow bus
47351 + * mastering activity. Note that the Cx state policy is completely
47352 + * customizable and can be altered dynamically.
47353 + */
47354 +
47355 + /* startup state */
47356 + for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) {
47357 + cx = &pr->power.states[i];
47358 + if (!cx->valid)
47359 + continue;
47360 +
47361 + if (!state_is_set)
47362 + pr->power.state = cx;
47363 + state_is_set++;
47364 + break;
47365 + }
47366 +
47367 + if (!state_is_set)
47368 + return -ENODEV;
47369 +
47370 + /* demotion */
47371 + for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) {
47372 + cx = &pr->power.states[i];
47373 + if (!cx->valid)
47374 + continue;
47375 +
47376 + if (lower) {
47377 + cx->demotion.state = lower;
47378 + cx->demotion.threshold.ticks = cx->latency_ticks;
47379 + cx->demotion.threshold.count = 1;
47380 + if (cx->type == ACPI_STATE_C3)
47381 + cx->demotion.threshold.bm = bm_history;
47382 + }
47383 +
47384 + lower = cx;
47385 + }
47386 +
47387 + /* promotion */
47388 + for (i = (ACPI_PROCESSOR_MAX_POWER - 1); i > 0; i--) {
47389 + cx = &pr->power.states[i];
47390 + if (!cx->valid)
47391 + continue;
47392 +
47393 + if (higher) {
47394 + cx->promotion.state = higher;
47395 + cx->promotion.threshold.ticks = cx->latency_ticks;
47396 + if (cx->type >= ACPI_STATE_C2)
47397 + cx->promotion.threshold.count = 4;
47398 + else
47399 + cx->promotion.threshold.count = 10;
47400 + if (higher->type == ACPI_STATE_C3)
47401 + cx->promotion.threshold.bm = bm_history;
47402 + }
47403 +
47404 + higher = cx;
47405 + }
47406 +
47407 + return 0;
47408 +}
47409 +#endif /* !CONFIG_CPU_IDLE */
47410 +
47411 static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
47412 {
47413
47414 @@ -541,7 +1047,11 @@
47415 */
47416 cx->valid = 1;
47417
47418 +#ifndef CONFIG_CPU_IDLE
47419 + cx->latency_ticks = US_TO_PM_TIMER_TICKS(cx->latency);
47420 +#else
47421 cx->latency_ticks = cx->latency;
47422 +#endif
47423
47424 return;
47425 }
47426 @@ -611,6 +1121,7 @@
47427 " for C3 to be enabled on SMP systems\n"));
47428 return;
47429 }
47430 + acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0);
47431 }
47432
47433 /*
47434 @@ -621,16 +1132,11 @@
47435 */
47436 cx->valid = 1;
47437
47438 +#ifndef CONFIG_CPU_IDLE
47439 + cx->latency_ticks = US_TO_PM_TIMER_TICKS(cx->latency);
47440 +#else
47441 cx->latency_ticks = cx->latency;
47442 - /*
47443 - * On older chipsets, BM_RLD needs to be set
47444 - * in order for Bus Master activity to wake the
47445 - * system from C3. Newer chipsets handle DMA
47446 - * during C3 automatically and BM_RLD is a NOP.
47447 - * In either case, the proper way to
47448 - * handle BM_RLD is to set it and leave it set.
47449 - */
47450 - acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 1);
47451 +#endif
47452
47453 return;
47454 }
47455 @@ -695,6 +1201,20 @@
47456
47457 pr->power.count = acpi_processor_power_verify(pr);
47458
47459 +#ifndef CONFIG_CPU_IDLE
47460 + /*
47461 + * Set Default Policy
47462 + * ------------------
47463 + * Now that we know which states are supported, set the default
47464 + * policy. Note that this policy can be changed dynamically
47465 + * (e.g. encourage deeper sleeps to conserve battery life when
47466 + * not on AC).
47467 + */
47468 + result = acpi_processor_set_power_policy(pr);
47469 + if (result)
47470 + return result;
47471 +#endif
47472 +
47473 /*
47474 * if one state of type C2 or C3 is available, mark this
47475 * CPU as being "idle manageable"
47476 @@ -792,6 +1312,69 @@
47477 .release = single_release,
47478 };
47479
47480 +#ifndef CONFIG_CPU_IDLE
47481 +
47482 +int acpi_processor_cst_has_changed(struct acpi_processor *pr)
47483 +{
47484 + int result = 0;
47485 +
47486 + if (boot_option_idle_override)
47487 + return 0;
47488 +
47489 + if (!pr)
47490 + return -EINVAL;
47491 +
47492 + if (nocst) {
47493 + return -ENODEV;
47494 + }
47495 +
47496 + if (!pr->flags.power_setup_done)
47497 + return -ENODEV;
47498 +
47499 + /*
47500 + * Fall back to the default idle loop, when pm_idle_save had
47501 + * been initialized.
47502 + */
47503 + if (pm_idle_save) {
47504 + pm_idle = pm_idle_save;
47505 + /* Relies on interrupts forcing exit from idle. */
47506 + synchronize_sched();
47507 + }
47508 +
47509 + pr->flags.power = 0;
47510 + result = acpi_processor_get_power_info(pr);
47511 + if ((pr->flags.power == 1) && (pr->flags.power_setup_done))
47512 + pm_idle = acpi_processor_idle;
47513 +
47514 + return result;
47515 +}
47516 +
47517 +#ifdef CONFIG_SMP
47518 +static void smp_callback(void *v)
47519 +{
47520 + /* we already woke the CPU up, nothing more to do */
47521 +}
47522 +
47523 +/*
47524 + * This function gets called when a part of the kernel has a new latency
47525 + * requirement. This means we need to get all processors out of their C-state,
47526 + * and then recalculate a new suitable C-state. Just do a cross-cpu IPI; that
47527 + * wakes them all right up.
47528 + */
47529 +static int acpi_processor_latency_notify(struct notifier_block *b,
47530 + unsigned long l, void *v)
47531 +{
47532 + smp_call_function(smp_callback, NULL, 1);
47533 + return NOTIFY_OK;
47534 +}
47535 +
47536 +static struct notifier_block acpi_processor_latency_notifier = {
47537 + .notifier_call = acpi_processor_latency_notify,
47538 +};
47539 +
47540 +#endif
47541 +
47542 +#else /* CONFIG_CPU_IDLE */
47543
47544 /**
47545 * acpi_idle_bm_check - checks if bus master activity was detected
47546 @@ -800,7 +1383,7 @@
47547 {
47548 u32 bm_status = 0;
47549
47550 - acpi_get_register_unlocked(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
47551 + acpi_get_register(ACPI_BITREG_BUS_MASTER_STATUS, &bm_status);
47552 if (bm_status)
47553 acpi_set_register(ACPI_BITREG_BUS_MASTER_STATUS, 1);
47554 /*
47555 @@ -817,6 +1400,25 @@
47556 }
47557
47558 /**
47559 + * acpi_idle_update_bm_rld - updates the BM_RLD bit depending on target state
47560 + * @pr: the processor
47561 + * @target: the new target state
47562 + */
47563 +static inline void acpi_idle_update_bm_rld(struct acpi_processor *pr,
47564 + struct acpi_processor_cx *target)
47565 +{
47566 + if (pr->flags.bm_rld_set && target->type != ACPI_STATE_C3) {
47567 + acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 0);
47568 + pr->flags.bm_rld_set = 0;
47569 + }
47570 +
47571 + if (!pr->flags.bm_rld_set && target->type == ACPI_STATE_C3) {
47572 + acpi_set_register(ACPI_BITREG_BUS_MASTER_RLD, 1);
47573 + pr->flags.bm_rld_set = 1;
47574 + }
47575 +}
47576 +
47577 +/**
47578 * acpi_idle_do_entry - a helper function that does C2 and C3 type entry
47579 * @cx: cstate data
47580 *
47581 @@ -871,6 +1473,9 @@
47582 return 0;
47583 }
47584
47585 + if (pr->flags.bm_check)
47586 + acpi_idle_update_bm_rld(pr, cx);
47587 +
47588 t1 = inl(acpi_gbl_FADT.xpm_timer_block.address);
47589 acpi_idle_do_entry(cx);
47590 t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
47591 @@ -922,6 +1527,9 @@
47592 */
47593 acpi_state_timer_broadcast(pr, cx, 1);
47594
47595 + if (pr->flags.bm_check)
47596 + acpi_idle_update_bm_rld(pr, cx);
47597 +
47598 if (cx->type == ACPI_STATE_C3)
47599 ACPI_FLUSH_CPU_CACHE();
47600
47601 @@ -1013,6 +1621,8 @@
47602 */
47603 acpi_state_timer_broadcast(pr, cx, 1);
47604
47605 + acpi_idle_update_bm_rld(pr, cx);
47606 +
47607 /*
47608 * disable bus master
47609 * bm_check implies we need ARB_DIS
47610 @@ -1185,6 +1795,8 @@
47611 return ret;
47612 }
47613
47614 +#endif /* CONFIG_CPU_IDLE */
47615 +
47616 int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
47617 struct acpi_device *device)
47618 {
47619 @@ -1213,6 +1825,10 @@
47620 "ACPI: processor limited to max C-state %d\n",
47621 max_cstate);
47622 first_run++;
47623 +#if !defined(CONFIG_CPU_IDLE) && defined(CONFIG_SMP)
47624 + pm_qos_add_notifier(PM_QOS_CPU_DMA_LATENCY,
47625 + &acpi_processor_latency_notifier);
47626 +#endif
47627 }
47628
47629 if (!pr)
47630 @@ -1236,9 +1852,11 @@
47631 * platforms that only support C1.
47632 */
47633 if (pr->flags.power) {
47634 +#ifdef CONFIG_CPU_IDLE
47635 acpi_processor_setup_cpuidle(pr);
47636 if (cpuidle_register_device(&pr->power.dev))
47637 return -EIO;
47638 +#endif
47639
47640 printk(KERN_INFO PREFIX "CPU%d (power states:", pr->id);
47641 for (i = 1; i <= pr->power.count; i++)
47642 @@ -1246,6 +1864,13 @@
47643 printk(" C%d[C%d]", i,
47644 pr->power.states[i].type);
47645 printk(")\n");
47646 +
47647 +#ifndef CONFIG_CPU_IDLE
47648 + if (pr->id == 0) {
47649 + pm_idle_save = pm_idle;
47650 + pm_idle = acpi_processor_idle;
47651 + }
47652 +#endif
47653 }
47654
47655 /* 'power' [R] */
47656 @@ -1264,12 +1889,34 @@
47657 if (boot_option_idle_override)
47658 return 0;
47659
47660 +#ifdef CONFIG_CPU_IDLE
47661 cpuidle_unregister_device(&pr->power.dev);
47662 +#endif
47663 pr->flags.power_setup_done = 0;
47664
47665 if (acpi_device_dir(device))
47666 remove_proc_entry(ACPI_PROCESSOR_FILE_POWER,
47667 acpi_device_dir(device));
47668
47669 +#ifndef CONFIG_CPU_IDLE
47670 +
47671 + /* Unregister the idle handler when processor #0 is removed. */
47672 + if (pr->id == 0) {
47673 + if (pm_idle_save)
47674 + pm_idle = pm_idle_save;
47675 +
47676 + /*
47677 + * We are about to unload the current idle thread pm callback
47678 + * (pm_idle), Wait for all processors to update cached/local
47679 + * copies of pm_idle before proceeding.
47680 + */
47681 + cpu_idle_wait();
47682 +#ifdef CONFIG_SMP
47683 + pm_qos_remove_notifier(PM_QOS_CPU_DMA_LATENCY,
47684 + &acpi_processor_latency_notifier);
47685 +#endif
47686 + }
47687 +#endif
47688 +
47689 return 0;
47690 }
47691 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/processor_perflib.c linux-2.6.29-rc3.owrt/drivers/acpi/processor_perflib.c
47692 --- linux-2.6.29.owrt/drivers/acpi/processor_perflib.c 2009-05-10 22:04:38.000000000 +0200
47693 +++ linux-2.6.29-rc3.owrt/drivers/acpi/processor_perflib.c 2009-05-10 23:48:28.000000000 +0200
47694 @@ -31,6 +31,14 @@
47695 #include <linux/init.h>
47696 #include <linux/cpufreq.h>
47697
47698 +#ifdef CONFIG_X86_ACPI_CPUFREQ_PROC_INTF
47699 +#include <linux/proc_fs.h>
47700 +#include <linux/seq_file.h>
47701 +#include <linux/mutex.h>
47702 +
47703 +#include <asm/uaccess.h>
47704 +#endif
47705 +
47706 #ifdef CONFIG_X86
47707 #include <asm/cpufeature.h>
47708 #endif
47709 @@ -426,6 +434,96 @@
47710
47711 EXPORT_SYMBOL(acpi_processor_notify_smm);
47712
47713 +#ifdef CONFIG_X86_ACPI_CPUFREQ_PROC_INTF
47714 +/* /proc/acpi/processor/../performance interface (DEPRECATED) */
47715 +
47716 +static int acpi_processor_perf_open_fs(struct inode *inode, struct file *file);
47717 +static struct file_operations acpi_processor_perf_fops = {
47718 + .owner = THIS_MODULE,
47719 + .open = acpi_processor_perf_open_fs,
47720 + .read = seq_read,
47721 + .llseek = seq_lseek,
47722 + .release = single_release,
47723 +};
47724 +
47725 +static int acpi_processor_perf_seq_show(struct seq_file *seq, void *offset)
47726 +{
47727 + struct acpi_processor *pr = seq->private;
47728 + int i;
47729 +
47730 +
47731 + if (!pr)
47732 + goto end;
47733 +
47734 + if (!pr->performance) {
47735 + seq_puts(seq, "<not supported>\n");
47736 + goto end;
47737 + }
47738 +
47739 + seq_printf(seq, "state count: %d\n"
47740 + "active state: P%d\n",
47741 + pr->performance->state_count, pr->performance->state);
47742 +
47743 + seq_puts(seq, "states:\n");
47744 + for (i = 0; i < pr->performance->state_count; i++)
47745 + seq_printf(seq,
47746 + " %cP%d: %d MHz, %d mW, %d uS\n",
47747 + (i == pr->performance->state ? '*' : ' '), i,
47748 + (u32) pr->performance->states[i].core_frequency,
47749 + (u32) pr->performance->states[i].power,
47750 + (u32) pr->performance->states[i].transition_latency);
47751 +
47752 + end:
47753 + return 0;
47754 +}
47755 +
47756 +static int acpi_processor_perf_open_fs(struct inode *inode, struct file *file)
47757 +{
47758 + return single_open(file, acpi_processor_perf_seq_show,
47759 + PDE(inode)->data);
47760 +}
47761 +
47762 +static void acpi_cpufreq_add_file(struct acpi_processor *pr)
47763 +{
47764 + struct acpi_device *device = NULL;
47765 +
47766 +
47767 + if (acpi_bus_get_device(pr->handle, &device))
47768 + return;
47769 +
47770 + /* add file 'performance' [R/W] */
47771 + proc_create_data(ACPI_PROCESSOR_FILE_PERFORMANCE, S_IFREG | S_IRUGO,
47772 + acpi_device_dir(device),
47773 + &acpi_processor_perf_fops, acpi_driver_data(device));
47774 + return;
47775 +}
47776 +
47777 +static void acpi_cpufreq_remove_file(struct acpi_processor *pr)
47778 +{
47779 + struct acpi_device *device = NULL;
47780 +
47781 +
47782 + if (acpi_bus_get_device(pr->handle, &device))
47783 + return;
47784 +
47785 + /* remove file 'performance' */
47786 + remove_proc_entry(ACPI_PROCESSOR_FILE_PERFORMANCE,
47787 + acpi_device_dir(device));
47788 +
47789 + return;
47790 +}
47791 +
47792 +#else
47793 +static void acpi_cpufreq_add_file(struct acpi_processor *pr)
47794 +{
47795 + return;
47796 +}
47797 +static void acpi_cpufreq_remove_file(struct acpi_processor *pr)
47798 +{
47799 + return;
47800 +}
47801 +#endif /* CONFIG_X86_ACPI_CPUFREQ_PROC_INTF */
47802 +
47803 static int acpi_processor_get_psd(struct acpi_processor *pr)
47804 {
47805 int result = 0;
47806 @@ -649,12 +747,14 @@
47807 }
47808 EXPORT_SYMBOL(acpi_processor_preregister_performance);
47809
47810 +
47811 int
47812 acpi_processor_register_performance(struct acpi_processor_performance
47813 *performance, unsigned int cpu)
47814 {
47815 struct acpi_processor *pr;
47816
47817 +
47818 if (!(acpi_processor_ppc_status & PPC_REGISTERED))
47819 return -EINVAL;
47820
47821 @@ -681,6 +781,8 @@
47822 return -EIO;
47823 }
47824
47825 + acpi_cpufreq_add_file(pr);
47826 +
47827 mutex_unlock(&performance_mutex);
47828 return 0;
47829 }
47830 @@ -693,6 +795,7 @@
47831 {
47832 struct acpi_processor *pr;
47833
47834 +
47835 mutex_lock(&performance_mutex);
47836
47837 pr = per_cpu(processors, cpu);
47838 @@ -705,6 +808,8 @@
47839 kfree(pr->performance->states);
47840 pr->performance = NULL;
47841
47842 + acpi_cpufreq_remove_file(pr);
47843 +
47844 mutex_unlock(&performance_mutex);
47845
47846 return;
47847 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/sleep.c linux-2.6.29-rc3.owrt/drivers/acpi/sleep.c
47848 --- linux-2.6.29.owrt/drivers/acpi/sleep.c 2009-05-10 22:04:38.000000000 +0200
47849 +++ linux-2.6.29-rc3.owrt/drivers/acpi/sleep.c 2009-05-10 23:48:28.000000000 +0200
47850 @@ -90,6 +90,31 @@
47851 old_suspend_ordering = true;
47852 }
47853
47854 +/*
47855 + * According to the ACPI specification the BIOS should make sure that ACPI is
47856 + * enabled and SCI_EN bit is set on wake-up from S1 - S3 sleep states. Still,
47857 + * some BIOSes don't do that and therefore we use acpi_enable() to enable ACPI
47858 + * on such systems during resume. Unfortunately that doesn't help in
47859 + * particularly pathological cases in which SCI_EN has to be set directly on
47860 + * resume, although the specification states very clearly that this flag is
47861 + * owned by the hardware. The set_sci_en_on_resume variable will be set in such
47862 + * cases.
47863 + */
47864 +static bool set_sci_en_on_resume;
47865 +/*
47866 + * The ACPI specification wants us to save NVS memory regions during hibernation
47867 + * and to restore them during the subsequent resume. However, it is not certain
47868 + * if this mechanism is going to work on all machines, so we allow the user to
47869 + * disable this mechanism using the 'acpi_sleep=s4_nonvs' kernel command line
47870 + * option.
47871 + */
47872 +static bool s4_no_nvs;
47873 +
47874 +void __init acpi_s4_no_nvs(void)
47875 +{
47876 + s4_no_nvs = true;
47877 +}
47878 +
47879 /**
47880 * acpi_pm_disable_gpes - Disable the GPEs.
47881 */
47882 @@ -168,18 +193,6 @@
47883 #endif /* CONFIG_ACPI_SLEEP */
47884
47885 #ifdef CONFIG_SUSPEND
47886 -/*
47887 - * According to the ACPI specification the BIOS should make sure that ACPI is
47888 - * enabled and SCI_EN bit is set on wake-up from S1 - S3 sleep states. Still,
47889 - * some BIOSes don't do that and therefore we use acpi_enable() to enable ACPI
47890 - * on such systems during resume. Unfortunately that doesn't help in
47891 - * particularly pathological cases in which SCI_EN has to be set directly on
47892 - * resume, although the specification states very clearly that this flag is
47893 - * owned by the hardware. The set_sci_en_on_resume variable will be set in such
47894 - * cases.
47895 - */
47896 -static bool set_sci_en_on_resume;
47897 -
47898 extern void do_suspend_lowlevel(void);
47899
47900 static u32 acpi_suspend_states[] = {
47901 @@ -378,41 +391,11 @@
47902 DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"),
47903 },
47904 },
47905 - {
47906 - .callback = init_old_suspend_ordering,
47907 - .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)",
47908 - .matches = {
47909 - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."),
47910 - DMI_MATCH(DMI_BOARD_NAME, "M2N8L"),
47911 - },
47912 - },
47913 - {
47914 - .callback = init_set_sci_en_on_resume,
47915 - .ident = "Toshiba Satellite L300",
47916 - .matches = {
47917 - DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
47918 - DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L300"),
47919 - },
47920 - },
47921 {},
47922 };
47923 #endif /* CONFIG_SUSPEND */
47924
47925 #ifdef CONFIG_HIBERNATION
47926 -/*
47927 - * The ACPI specification wants us to save NVS memory regions during hibernation
47928 - * and to restore them during the subsequent resume. However, it is not certain
47929 - * if this mechanism is going to work on all machines, so we allow the user to
47930 - * disable this mechanism using the 'acpi_sleep=s4_nonvs' kernel command line
47931 - * option.
47932 - */
47933 -static bool s4_no_nvs;
47934 -
47935 -void __init acpi_s4_no_nvs(void)
47936 -{
47937 - s4_no_nvs = true;
47938 -}
47939 -
47940 static unsigned long s4_hardware_signature;
47941 static struct acpi_table_facs *facs;
47942 static bool nosigcheck;
47943 @@ -696,7 +679,7 @@
47944 static void acpi_power_off(void)
47945 {
47946 /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */
47947 - printk(KERN_DEBUG "%s called\n", __func__);
47948 + printk("%s called\n", __func__);
47949 local_irq_disable();
47950 acpi_enable_wakeup_device(ACPI_STATE_S5);
47951 acpi_enter_sleep_state(ACPI_STATE_S5);
47952 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/tables.c linux-2.6.29-rc3.owrt/drivers/acpi/tables.c
47953 --- linux-2.6.29.owrt/drivers/acpi/tables.c 2009-05-10 22:04:38.000000000 +0200
47954 +++ linux-2.6.29-rc3.owrt/drivers/acpi/tables.c 2009-05-10 23:48:28.000000000 +0200
47955 @@ -293,12 +293,7 @@
47956
47957 int __init acpi_table_init(void)
47958 {
47959 - acpi_status status;
47960 -
47961 - status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
47962 - if (ACPI_FAILURE(status))
47963 - return 1;
47964 -
47965 + acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
47966 check_multiple_madt();
47967 return 0;
47968 }
47969 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/acpi/video.c linux-2.6.29-rc3.owrt/drivers/acpi/video.c
47970 --- linux-2.6.29.owrt/drivers/acpi/video.c 2009-05-10 22:04:38.000000000 +0200
47971 +++ linux-2.6.29-rc3.owrt/drivers/acpi/video.c 2009-05-10 23:48:28.000000000 +0200
47972 @@ -1020,7 +1020,7 @@
47973 }
47974
47975 seq_printf(seq, "levels: ");
47976 - for (i = 2; i < dev->brightness->count; i++)
47977 + for (i = 0; i < dev->brightness->count; i++)
47978 seq_printf(seq, " %d", dev->brightness->levels[i]);
47979 seq_printf(seq, "\ncurrent: %d\n", dev->brightness->curr);
47980
47981 @@ -1059,7 +1059,7 @@
47982 return -EFAULT;
47983
47984 /* validate through the list of available levels */
47985 - for (i = 2; i < dev->brightness->count; i++)
47986 + for (i = 0; i < dev->brightness->count; i++)
47987 if (level == dev->brightness->levels[i]) {
47988 if (ACPI_SUCCESS
47989 (acpi_video_device_lcd_set_level(dev, level)))
47990 @@ -1260,7 +1260,7 @@
47991 printk(KERN_WARNING PREFIX
47992 "This indicates a BIOS bug. Please contact the manufacturer.\n");
47993 }
47994 - printk(KERN_WARNING "%llx\n", options);
47995 + printk("%llx\n", options);
47996 seq_printf(seq, "can POST: <integrated video>");
47997 if (options & 2)
47998 seq_printf(seq, " <PCI video>");
47999 @@ -1712,7 +1712,7 @@
48000 max = max_below = 0;
48001 min = min_above = 255;
48002 /* Find closest level to level_current */
48003 - for (i = 2; i < device->brightness->count; i++) {
48004 + for (i = 0; i < device->brightness->count; i++) {
48005 l = device->brightness->levels[i];
48006 if (abs(l - level_current) < abs(delta)) {
48007 delta = l - level_current;
48008 @@ -1722,7 +1722,7 @@
48009 }
48010 /* Ajust level_current to closest available level */
48011 level_current += delta;
48012 - for (i = 2; i < device->brightness->count; i++) {
48013 + for (i = 0; i < device->brightness->count; i++) {
48014 l = device->brightness->levels[i];
48015 if (l < min)
48016 min = l;
48017 @@ -2006,12 +2006,6 @@
48018 device->pnp.bus_id[3] = '0' + instance;
48019 instance ++;
48020 }
48021 - /* a hack to fix the duplicate name "VGA" problem on Pa 3553 */
48022 - if (!strcmp(device->pnp.bus_id, "VGA")) {
48023 - if (instance)
48024 - device->pnp.bus_id[3] = '0' + instance;
48025 - instance++;
48026 - }
48027
48028 video->device = device;
48029 strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME);
48030 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/ahci.c linux-2.6.29-rc3.owrt/drivers/ata/ahci.c
48031 --- linux-2.6.29.owrt/drivers/ata/ahci.c 2009-05-10 22:04:38.000000000 +0200
48032 +++ linux-2.6.29-rc3.owrt/drivers/ata/ahci.c 2009-05-10 23:48:28.000000000 +0200
48033 @@ -61,14 +61,9 @@
48034 #define EM_MSG_LED_VALUE_ON 0x00010000
48035
48036 static int ahci_skip_host_reset;
48037 -static int ahci_ignore_sss;
48038 -
48039 module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444);
48040 MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)");
48041
48042 -module_param_named(ignore_sss, ahci_ignore_sss, int, 0444);
48043 -MODULE_PARM_DESC(ignore_sss, "Ignore staggered spinup flag (0=don't ignore, 1=ignore)");
48044 -
48045 static int ahci_enable_alpm(struct ata_port *ap,
48046 enum link_pm policy);
48047 static void ahci_disable_alpm(struct ata_port *ap);
48048 @@ -582,18 +577,18 @@
48049 { PCI_VDEVICE(NVIDIA, 0x0abd), board_ahci }, /* MCP79 */
48050 { PCI_VDEVICE(NVIDIA, 0x0abe), board_ahci }, /* MCP79 */
48051 { PCI_VDEVICE(NVIDIA, 0x0abf), board_ahci }, /* MCP79 */
48052 - { PCI_VDEVICE(NVIDIA, 0x0d84), board_ahci }, /* MCP89 */
48053 - { PCI_VDEVICE(NVIDIA, 0x0d85), board_ahci }, /* MCP89 */
48054 - { PCI_VDEVICE(NVIDIA, 0x0d86), board_ahci }, /* MCP89 */
48055 - { PCI_VDEVICE(NVIDIA, 0x0d87), board_ahci }, /* MCP89 */
48056 - { PCI_VDEVICE(NVIDIA, 0x0d88), board_ahci }, /* MCP89 */
48057 - { PCI_VDEVICE(NVIDIA, 0x0d89), board_ahci }, /* MCP89 */
48058 - { PCI_VDEVICE(NVIDIA, 0x0d8a), board_ahci }, /* MCP89 */
48059 - { PCI_VDEVICE(NVIDIA, 0x0d8b), board_ahci }, /* MCP89 */
48060 - { PCI_VDEVICE(NVIDIA, 0x0d8c), board_ahci }, /* MCP89 */
48061 - { PCI_VDEVICE(NVIDIA, 0x0d8d), board_ahci }, /* MCP89 */
48062 - { PCI_VDEVICE(NVIDIA, 0x0d8e), board_ahci }, /* MCP89 */
48063 - { PCI_VDEVICE(NVIDIA, 0x0d8f), board_ahci }, /* MCP89 */
48064 + { PCI_VDEVICE(NVIDIA, 0x0bc8), board_ahci }, /* MCP7B */
48065 + { PCI_VDEVICE(NVIDIA, 0x0bc9), board_ahci }, /* MCP7B */
48066 + { PCI_VDEVICE(NVIDIA, 0x0bca), board_ahci }, /* MCP7B */
48067 + { PCI_VDEVICE(NVIDIA, 0x0bcb), board_ahci }, /* MCP7B */
48068 + { PCI_VDEVICE(NVIDIA, 0x0bcc), board_ahci }, /* MCP7B */
48069 + { PCI_VDEVICE(NVIDIA, 0x0bcd), board_ahci }, /* MCP7B */
48070 + { PCI_VDEVICE(NVIDIA, 0x0bce), board_ahci }, /* MCP7B */
48071 + { PCI_VDEVICE(NVIDIA, 0x0bcf), board_ahci }, /* MCP7B */
48072 + { PCI_VDEVICE(NVIDIA, 0x0bc4), board_ahci }, /* MCP7B */
48073 + { PCI_VDEVICE(NVIDIA, 0x0bc5), board_ahci }, /* MCP7B */
48074 + { PCI_VDEVICE(NVIDIA, 0x0bc6), board_ahci }, /* MCP7B */
48075 + { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */
48076
48077 /* SiS */
48078 { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */
48079 @@ -2697,10 +2692,8 @@
48080 host->iomap = pcim_iomap_table(pdev);
48081 host->private_data = hpriv;
48082
48083 - if (!(hpriv->cap & HOST_CAP_SSS) || ahci_ignore_sss)
48084 + if (!(hpriv->cap & HOST_CAP_SSS))
48085 host->flags |= ATA_HOST_PARALLEL_SCAN;
48086 - else
48087 - printk(KERN_INFO "ahci: SSS flag set, parallel bus scan disabled\n");
48088
48089 if (pi.flags & ATA_FLAG_EM)
48090 ahci_reset_em(host);
48091 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/ata_piix.c linux-2.6.29-rc3.owrt/drivers/ata/ata_piix.c
48092 --- linux-2.6.29.owrt/drivers/ata/ata_piix.c 2009-05-10 22:04:38.000000000 +0200
48093 +++ linux-2.6.29-rc3.owrt/drivers/ata/ata_piix.c 2009-05-10 23:48:28.000000000 +0200
48094 @@ -1289,39 +1289,6 @@
48095 return map;
48096 }
48097
48098 -static bool piix_no_sidpr(struct ata_host *host)
48099 -{
48100 - struct pci_dev *pdev = to_pci_dev(host->dev);
48101 -
48102 - /*
48103 - * Samsung DB-P70 only has three ATA ports exposed and
48104 - * curiously the unconnected first port reports link online
48105 - * while not responding to SRST protocol causing excessive
48106 - * detection delay.
48107 - *
48108 - * Unfortunately, the system doesn't carry enough DMI
48109 - * information to identify the machine but does have subsystem
48110 - * vendor and device set. As it's unclear whether the
48111 - * subsystem vendor/device is used only for this specific
48112 - * board, the port can't be disabled solely with the
48113 - * information; however, turning off SIDPR access works around
48114 - * the problem. Turn it off.
48115 - *
48116 - * This problem is reported in bnc#441240.
48117 - *
48118 - * https://bugzilla.novell.com/show_bug.cgi?id=441420
48119 - */
48120 - if (pdev->vendor == PCI_VENDOR_ID_INTEL && pdev->device == 0x2920 &&
48121 - pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG &&
48122 - pdev->subsystem_device == 0xb049) {
48123 - dev_printk(KERN_WARNING, host->dev,
48124 - "Samsung DB-P70 detected, disabling SIDPR\n");
48125 - return true;
48126 - }
48127 -
48128 - return false;
48129 -}
48130 -
48131 static int __devinit piix_init_sidpr(struct ata_host *host)
48132 {
48133 struct pci_dev *pdev = to_pci_dev(host->dev);
48134 @@ -1335,10 +1302,6 @@
48135 if (hpriv->map[i] == IDE)
48136 return 0;
48137
48138 - /* is it blacklisted? */
48139 - if (piix_no_sidpr(host))
48140 - return 0;
48141 -
48142 if (!(host->ports[0]->flags & PIIX_FLAG_SIDPR))
48143 return 0;
48144
48145 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/libata-core.c linux-2.6.29-rc3.owrt/drivers/ata/libata-core.c
48146 --- linux-2.6.29.owrt/drivers/ata/libata-core.c 2009-05-10 22:04:38.000000000 +0200
48147 +++ linux-2.6.29-rc3.owrt/drivers/ata/libata-core.c 2009-05-10 23:48:28.000000000 +0200
48148 @@ -164,11 +164,6 @@
48149 MODULE_VERSION(DRV_VERSION);
48150
48151
48152 -static bool ata_sstatus_online(u32 sstatus)
48153 -{
48154 - return (sstatus & 0xf) == 0x3;
48155 -}
48156 -
48157 /**
48158 * ata_link_next - link iteration helper
48159 * @link: the previous link, NULL to start
48160 @@ -1020,6 +1015,18 @@
48161 return spd_str[spd - 1];
48162 }
48163
48164 +void ata_dev_disable(struct ata_device *dev)
48165 +{
48166 + if (ata_dev_enabled(dev)) {
48167 + if (ata_msg_drv(dev->link->ap))
48168 + ata_dev_printk(dev, KERN_WARNING, "disabled\n");
48169 + ata_acpi_on_disable(dev);
48170 + ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO0 |
48171 + ATA_DNXFER_QUIET);
48172 + dev->class++;
48173 + }
48174 +}
48175 +
48176 static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy)
48177 {
48178 struct ata_link *link = dev->link;
48179 @@ -1322,16 +1329,14 @@
48180 {
48181 if (ata_id_has_lba(id)) {
48182 if (ata_id_has_lba48(id))
48183 - return ata_id_u64(id, ATA_ID_LBA_CAPACITY_2);
48184 + return ata_id_u64(id, 100);
48185 else
48186 - return ata_id_u32(id, ATA_ID_LBA_CAPACITY);
48187 + return ata_id_u32(id, 60);
48188 } else {
48189 if (ata_id_current_chs_valid(id))
48190 - return id[ATA_ID_CUR_CYLS] * id[ATA_ID_CUR_HEADS] *
48191 - id[ATA_ID_CUR_SECTORS];
48192 + return ata_id_u32(id, 57);
48193 else
48194 - return id[ATA_ID_CYLS] * id[ATA_ID_HEADS] *
48195 - id[ATA_ID_SECTORS];
48196 + return id[1] * id[3] * id[6];
48197 }
48198 }
48199
48200 @@ -2234,40 +2239,6 @@
48201 return rc;
48202 }
48203
48204 -static int ata_do_link_spd_horkage(struct ata_device *dev)
48205 -{
48206 - struct ata_link *plink = ata_dev_phys_link(dev);
48207 - u32 target, target_limit;
48208 -
48209 - if (!sata_scr_valid(plink))
48210 - return 0;
48211 -
48212 - if (dev->horkage & ATA_HORKAGE_1_5_GBPS)
48213 - target = 1;
48214 - else
48215 - return 0;
48216 -
48217 - target_limit = (1 << target) - 1;
48218 -
48219 - /* if already on stricter limit, no need to push further */
48220 - if (plink->sata_spd_limit <= target_limit)
48221 - return 0;
48222 -
48223 - plink->sata_spd_limit = target_limit;
48224 -
48225 - /* Request another EH round by returning -EAGAIN if link is
48226 - * going faster than the target speed. Forward progress is
48227 - * guaranteed by setting sata_spd_limit to target_limit above.
48228 - */
48229 - if (plink->sata_spd > target) {
48230 - ata_dev_printk(dev, KERN_INFO,
48231 - "applying link speed limit horkage to %s\n",
48232 - sata_spd_string(target));
48233 - return -EAGAIN;
48234 - }
48235 - return 0;
48236 -}
48237 -
48238 static inline u8 ata_dev_knobble(struct ata_device *dev)
48239 {
48240 struct ata_port *ap = dev->link->ap;
48241 @@ -2358,10 +2329,6 @@
48242 return 0;
48243 }
48244
48245 - rc = ata_do_link_spd_horkage(dev);
48246 - if (rc)
48247 - return rc;
48248 -
48249 /* let ACPI work its magic */
48250 rc = ata_acpi_on_devcfg(dev);
48251 if (rc)
48252 @@ -2817,7 +2784,7 @@
48253 /* This is the last chance, better to slow
48254 * down than lose it.
48255 */
48256 - sata_down_spd_limit(&ap->link, 0);
48257 + sata_down_spd_limit(&ap->link);
48258 ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
48259 }
48260 }
48261 @@ -2913,27 +2880,21 @@
48262 /**
48263 * sata_down_spd_limit - adjust SATA spd limit downward
48264 * @link: Link to adjust SATA spd limit for
48265 - * @spd_limit: Additional limit
48266 *
48267 * Adjust SATA spd limit of @link downward. Note that this
48268 * function only adjusts the limit. The change must be applied
48269 * using sata_set_spd().
48270 *
48271 - * If @spd_limit is non-zero, the speed is limited to equal to or
48272 - * lower than @spd_limit if such speed is supported. If
48273 - * @spd_limit is slower than any supported speed, only the lowest
48274 - * supported speed is allowed.
48275 - *
48276 * LOCKING:
48277 * Inherited from caller.
48278 *
48279 * RETURNS:
48280 * 0 on success, negative errno on failure
48281 */
48282 -int sata_down_spd_limit(struct ata_link *link, u32 spd_limit)
48283 +int sata_down_spd_limit(struct ata_link *link)
48284 {
48285 u32 sstatus, spd, mask;
48286 - int rc, bit;
48287 + int rc, highbit;
48288
48289 if (!sata_scr_valid(link))
48290 return -EOPNOTSUPP;
48291 @@ -2942,7 +2903,7 @@
48292 * If not, use cached value in link->sata_spd.
48293 */
48294 rc = sata_scr_read(link, SCR_STATUS, &sstatus);
48295 - if (rc == 0 && ata_sstatus_online(sstatus))
48296 + if (rc == 0)
48297 spd = (sstatus >> 4) & 0xf;
48298 else
48299 spd = link->sata_spd;
48300 @@ -2952,8 +2913,8 @@
48301 return -EINVAL;
48302
48303 /* unconditionally mask off the highest bit */
48304 - bit = fls(mask) - 1;
48305 - mask &= ~(1 << bit);
48306 + highbit = fls(mask) - 1;
48307 + mask &= ~(1 << highbit);
48308
48309 /* Mask off all speeds higher than or equal to the current
48310 * one. Force 1.5Gbps if current SPD is not available.
48311 @@ -2967,15 +2928,6 @@
48312 if (!mask)
48313 return -EINVAL;
48314
48315 - if (spd_limit) {
48316 - if (mask & ((1 << spd_limit) - 1))
48317 - mask &= (1 << spd_limit) - 1;
48318 - else {
48319 - bit = ffs(mask) - 1;
48320 - mask = 1 << bit;
48321 - }
48322 - }
48323 -
48324 link->sata_spd_limit = mask;
48325
48326 ata_link_printk(link, KERN_WARNING, "limiting SATA link speed to %s\n",
48327 @@ -4263,9 +4215,6 @@
48328 /* Devices that do not need bridging limits applied */
48329 { "MTRON MSP-SATA*", NULL, ATA_HORKAGE_BRIDGE_OK, },
48330
48331 - /* Devices which aren't very happy with higher link speeds */
48332 - { "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, },
48333 -
48334 /* End Marker */
48335 { }
48336 };
48337 @@ -4614,7 +4563,7 @@
48338 VPRINTK("unmapping %u sg elements\n", qc->n_elem);
48339
48340 if (qc->n_elem)
48341 - dma_unmap_sg(ap->dev, sg, qc->orig_n_elem, dir);
48342 + dma_unmap_sg(ap->dev, sg, qc->n_elem, dir);
48343
48344 qc->flags &= ~ATA_QCFLAG_DMAMAP;
48345 qc->sg = NULL;
48346 @@ -4729,7 +4678,7 @@
48347 return -1;
48348
48349 DPRINTK("%d sg elements mapped\n", n_elem);
48350 - qc->orig_n_elem = qc->n_elem;
48351 +
48352 qc->n_elem = n_elem;
48353 qc->flags |= ATA_QCFLAG_DMAMAP;
48354
48355 @@ -4760,7 +4709,8 @@
48356
48357 /**
48358 * ata_qc_new - Request an available ATA command, for queueing
48359 - * @ap: target port
48360 + * @ap: Port associated with device @dev
48361 + * @dev: Device from whom we request an available command structure
48362 *
48363 * LOCKING:
48364 * None.
48365 @@ -5225,7 +5175,7 @@
48366 u32 sstatus;
48367
48368 if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0 &&
48369 - ata_sstatus_online(sstatus))
48370 + (sstatus & 0xf) == 0x3)
48371 return true;
48372 return false;
48373 }
48374 @@ -5249,7 +5199,7 @@
48375 u32 sstatus;
48376
48377 if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0 &&
48378 - !ata_sstatus_online(sstatus))
48379 + (sstatus & 0xf) != 0x3)
48380 return true;
48381 return false;
48382 }
48383 @@ -5462,8 +5412,8 @@
48384 dev->horkage = 0;
48385 spin_unlock_irqrestore(ap->lock, flags);
48386
48387 - memset((void *)dev + ATA_DEVICE_CLEAR_BEGIN, 0,
48388 - ATA_DEVICE_CLEAR_END - ATA_DEVICE_CLEAR_BEGIN);
48389 + memset((void *)dev + ATA_DEVICE_CLEAR_OFFSET, 0,
48390 + sizeof(*dev) - ATA_DEVICE_CLEAR_OFFSET);
48391 dev->pio_mask = UINT_MAX;
48392 dev->mwdma_mask = UINT_MAX;
48393 dev->udma_mask = UINT_MAX;
48394 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/libata-eh.c linux-2.6.29-rc3.owrt/drivers/ata/libata-eh.c
48395 --- linux-2.6.29.owrt/drivers/ata/libata-eh.c 2009-05-10 22:04:38.000000000 +0200
48396 +++ linux-2.6.29-rc3.owrt/drivers/ata/libata-eh.c 2009-05-10 23:48:28.000000000 +0200
48397 @@ -82,10 +82,6 @@
48398 ATA_EH_FASTDRAIN_INTERVAL = 3000,
48399
48400 ATA_EH_UA_TRIES = 5,
48401 -
48402 - /* probe speed down parameters, see ata_eh_schedule_probe() */
48403 - ATA_EH_PROBE_TRIAL_INTERVAL = 60000, /* 1 min */
48404 - ATA_EH_PROBE_TRIALS = 2,
48405 };
48406
48407 /* The following table determines how we sequence resets. Each entry
48408 @@ -1180,32 +1176,6 @@
48409 }
48410
48411 /**
48412 - * ata_dev_disable - disable ATA device
48413 - * @dev: ATA device to disable
48414 - *
48415 - * Disable @dev.
48416 - *
48417 - * Locking:
48418 - * EH context.
48419 - */
48420 -void ata_dev_disable(struct ata_device *dev)
48421 -{
48422 - if (!ata_dev_enabled(dev))
48423 - return;
48424 -
48425 - if (ata_msg_drv(dev->link->ap))
48426 - ata_dev_printk(dev, KERN_WARNING, "disabled\n");
48427 - ata_acpi_on_disable(dev);
48428 - ata_down_xfermask_limit(dev, ATA_DNXFER_FORCE_PIO0 | ATA_DNXFER_QUIET);
48429 - dev->class++;
48430 -
48431 - /* From now till the next successful probe, ering is used to
48432 - * track probe failures. Clear accumulated device error info.
48433 - */
48434 - ata_ering_clear(&dev->ering);
48435 -}
48436 -
48437 -/**
48438 * ata_eh_detach_dev - detach ATA device
48439 * @dev: ATA device to detach
48440 *
48441 @@ -1879,7 +1849,7 @@
48442 /* speed down? */
48443 if (verdict & ATA_EH_SPDN_SPEED_DOWN) {
48444 /* speed down SATA link speed if possible */
48445 - if (sata_down_spd_limit(link, 0) == 0) {
48446 + if (sata_down_spd_limit(link) == 0) {
48447 action |= ATA_EH_RESET;
48448 goto done;
48449 }
48450 @@ -2423,14 +2393,11 @@
48451 }
48452
48453 /* prereset() might have cleared ATA_EH_RESET. If so,
48454 - * bang classes, thaw and return.
48455 + * bang classes and return.
48456 */
48457 if (reset && !(ehc->i.action & ATA_EH_RESET)) {
48458 ata_for_each_dev(dev, link, ALL)
48459 classes[dev->devno] = ATA_DEV_NONE;
48460 - if ((ap->pflags & ATA_PFLAG_FROZEN) &&
48461 - ata_is_host_link(link))
48462 - ata_eh_thaw_port(ap);
48463 rc = 0;
48464 goto out;
48465 }
48466 @@ -2634,11 +2601,11 @@
48467 }
48468
48469 if (try == max_tries - 1) {
48470 - sata_down_spd_limit(link, 0);
48471 + sata_down_spd_limit(link);
48472 if (slave)
48473 - sata_down_spd_limit(slave, 0);
48474 + sata_down_spd_limit(slave);
48475 } else if (rc == -EPIPE)
48476 - sata_down_spd_limit(failed_link, 0);
48477 + sata_down_spd_limit(failed_link);
48478
48479 if (hardreset)
48480 reset = hardreset;
48481 @@ -2777,8 +2744,6 @@
48482 readid_flags, dev->id);
48483 switch (rc) {
48484 case 0:
48485 - /* clear error info accumulated during probe */
48486 - ata_ering_clear(&dev->ering);
48487 new_mask |= 1 << dev->devno;
48488 break;
48489 case -ENOENT:
48490 @@ -2904,7 +2869,7 @@
48491 int i;
48492
48493 for (i = 0; i < ATA_EH_UA_TRIES; i++) {
48494 - u8 *sense_buffer = dev->link->ap->sector_buf;
48495 + u8 sense_buffer[SCSI_SENSE_BUFFERSIZE];
48496 u8 sense_key = 0;
48497 unsigned int err_mask;
48498
48499 @@ -2982,24 +2947,9 @@
48500 return 1;
48501 }
48502
48503 -static int ata_count_probe_trials_cb(struct ata_ering_entry *ent, void *void_arg)
48504 -{
48505 - u64 interval = msecs_to_jiffies(ATA_EH_PROBE_TRIAL_INTERVAL);
48506 - u64 now = get_jiffies_64();
48507 - int *trials = void_arg;
48508 -
48509 - if (ent->timestamp < now - min(now, interval))
48510 - return -1;
48511 -
48512 - (*trials)++;
48513 - return 0;
48514 -}
48515 -
48516 static int ata_eh_schedule_probe(struct ata_device *dev)
48517 {
48518 struct ata_eh_context *ehc = &dev->link->eh_context;
48519 - struct ata_link *link = ata_dev_phys_link(dev);
48520 - int trials = 0;
48521
48522 if (!(ehc->i.probe_mask & (1 << dev->devno)) ||
48523 (ehc->did_probe_mask & (1 << dev->devno)))
48524 @@ -3012,25 +2962,6 @@
48525 ehc->saved_xfer_mode[dev->devno] = 0;
48526 ehc->saved_ncq_enabled &= ~(1 << dev->devno);
48527
48528 - /* Record and count probe trials on the ering. The specific
48529 - * error mask used is irrelevant. Because a successful device
48530 - * detection clears the ering, this count accumulates only if
48531 - * there are consecutive failed probes.
48532 - *
48533 - * If the count is equal to or higher than ATA_EH_PROBE_TRIALS
48534 - * in the last ATA_EH_PROBE_TRIAL_INTERVAL, link speed is
48535 - * forced to 1.5Gbps.
48536 - *
48537 - * This is to work around cases where failed link speed
48538 - * negotiation results in device misdetection leading to
48539 - * infinite DEVXCHG or PHRDY CHG events.
48540 - */
48541 - ata_ering_record(&dev->ering, 0, AC_ERR_OTHER);
48542 - ata_ering_map(&dev->ering, ata_count_probe_trials_cb, &trials);
48543 -
48544 - if (trials > ATA_EH_PROBE_TRIALS)
48545 - sata_down_spd_limit(link, 1);
48546 -
48547 return 1;
48548 }
48549
48550 @@ -3038,11 +2969,7 @@
48551 {
48552 struct ata_eh_context *ehc = &dev->link->eh_context;
48553
48554 - /* -EAGAIN from EH routine indicates retry without prejudice.
48555 - * The requester is responsible for ensuring forward progress.
48556 - */
48557 - if (err != -EAGAIN)
48558 - ehc->tries[dev->devno]--;
48559 + ehc->tries[dev->devno]--;
48560
48561 switch (err) {
48562 case -ENODEV:
48563 @@ -3052,13 +2979,12 @@
48564 /* give it just one more chance */
48565 ehc->tries[dev->devno] = min(ehc->tries[dev->devno], 1);
48566 case -EIO:
48567 - if (ehc->tries[dev->devno] == 1) {
48568 + if (ehc->tries[dev->devno] == 1 && dev->pio_mode > XFER_PIO_0) {
48569 /* This is the last chance, better to slow
48570 * down than lose it.
48571 */
48572 - sata_down_spd_limit(ata_dev_phys_link(dev), 0);
48573 - if (dev->pio_mode > XFER_PIO_0)
48574 - ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
48575 + sata_down_spd_limit(ata_dev_phys_link(dev));
48576 + ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
48577 }
48578 }
48579
48580 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/libata.h linux-2.6.29-rc3.owrt/drivers/ata/libata.h
48581 --- linux-2.6.29.owrt/drivers/ata/libata.h 2009-05-10 22:04:38.000000000 +0200
48582 +++ linux-2.6.29-rc3.owrt/drivers/ata/libata.h 2009-05-10 23:48:28.000000000 +0200
48583 @@ -79,6 +79,7 @@
48584 u64 block, u32 n_block, unsigned int tf_flags,
48585 unsigned int tag);
48586 extern u64 ata_tf_read_block(struct ata_taskfile *tf, struct ata_device *dev);
48587 +extern void ata_dev_disable(struct ata_device *dev);
48588 extern void ata_pio_queue_task(struct ata_port *ap, void *data,
48589 unsigned long delay);
48590 extern void ata_port_flush_task(struct ata_port *ap);
48591 @@ -99,7 +100,7 @@
48592 extern int ata_dev_revalidate(struct ata_device *dev, unsigned int new_class,
48593 unsigned int readid_flags);
48594 extern int ata_dev_configure(struct ata_device *dev);
48595 -extern int sata_down_spd_limit(struct ata_link *link, u32 spd_limit);
48596 +extern int sata_down_spd_limit(struct ata_link *link);
48597 extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel);
48598 extern void ata_sg_clean(struct ata_queued_cmd *qc);
48599 extern void ata_qc_free(struct ata_queued_cmd *qc);
48600 @@ -159,7 +160,6 @@
48601 extern void ata_port_wait_eh(struct ata_port *ap);
48602 extern void ata_eh_fastdrain_timerfn(unsigned long arg);
48603 extern void ata_qc_schedule_eh(struct ata_queued_cmd *qc);
48604 -extern void ata_dev_disable(struct ata_device *dev);
48605 extern void ata_eh_detach_dev(struct ata_device *dev);
48606 extern void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev,
48607 unsigned int action);
48608 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/libata-pmp.c linux-2.6.29-rc3.owrt/drivers/ata/libata-pmp.c
48609 --- linux-2.6.29.owrt/drivers/ata/libata-pmp.c 2009-05-10 22:04:38.000000000 +0200
48610 +++ linux-2.6.29-rc3.owrt/drivers/ata/libata-pmp.c 2009-05-10 23:48:28.000000000 +0200
48611 @@ -729,7 +729,7 @@
48612 if (tries) {
48613 /* consecutive revalidation failures? speed down */
48614 if (reval_failed)
48615 - sata_down_spd_limit(link, 0);
48616 + sata_down_spd_limit(link);
48617 else
48618 reval_failed = 1;
48619
48620 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/libata-scsi.c linux-2.6.29-rc3.owrt/drivers/ata/libata-scsi.c
48621 --- linux-2.6.29.owrt/drivers/ata/libata-scsi.c 2009-05-10 22:04:38.000000000 +0200
48622 +++ linux-2.6.29-rc3.owrt/drivers/ata/libata-scsi.c 2009-05-10 23:48:28.000000000 +0200
48623 @@ -415,7 +415,6 @@
48624
48625 /**
48626 * ata_get_identity - Handler for HDIO_GET_IDENTITY ioctl
48627 - * @ap: target port
48628 * @sdev: SCSI device to get identify data for
48629 * @arg: User buffer area for identify data
48630 *
48631 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/libata-sff.c linux-2.6.29-rc3.owrt/drivers/ata/libata-sff.c
48632 --- linux-2.6.29.owrt/drivers/ata/libata-sff.c 2009-05-10 22:04:38.000000000 +0200
48633 +++ linux-2.6.29-rc3.owrt/drivers/ata/libata-sff.c 2009-05-10 23:48:28.000000000 +0200
48634 @@ -773,32 +773,18 @@
48635 else
48636 iowrite32_rep(data_addr, buf, words);
48637
48638 - /* Transfer trailing bytes, if any */
48639 if (unlikely(slop)) {
48640 - unsigned char pad[4];
48641 -
48642 - /* Point buf to the tail of buffer */
48643 - buf += buflen - slop;
48644 -
48645 - /*
48646 - * Use io*_rep() accessors here as well to avoid pointlessly
48647 - * swapping bytes to and fro on the big endian machines...
48648 - */
48649 + __le32 pad;
48650 if (rw == READ) {
48651 - if (slop < 3)
48652 - ioread16_rep(data_addr, pad, 1);
48653 - else
48654 - ioread32_rep(data_addr, pad, 1);
48655 - memcpy(buf, pad, slop);
48656 + pad = cpu_to_le32(ioread32(ap->ioaddr.data_addr));
48657 + memcpy(buf + buflen - slop, &pad, slop);
48658 } else {
48659 - memcpy(pad, buf, slop);
48660 - if (slop < 3)
48661 - iowrite16_rep(data_addr, pad, 1);
48662 - else
48663 - iowrite32_rep(data_addr, pad, 1);
48664 + memcpy(&pad, buf + buflen - slop, slop);
48665 + iowrite32(le32_to_cpu(pad), ap->ioaddr.data_addr);
48666 }
48667 + words++;
48668 }
48669 - return (buflen + 1) & ~1;
48670 + return words << 2;
48671 }
48672 EXPORT_SYMBOL_GPL(ata_sff_data_xfer32);
48673
48674 @@ -2066,7 +2052,6 @@
48675 iowrite8(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
48676 udelay(20); /* FIXME: flush */
48677 iowrite8(ap->ctl, ioaddr->ctl_addr);
48678 - ap->last_ctl = ap->ctl;
48679
48680 /* wait the port to become ready */
48681 return ata_sff_wait_after_reset(&ap->link, devmask, deadline);
48682 @@ -2191,10 +2176,8 @@
48683 }
48684
48685 /* set up device control */
48686 - if (ap->ioaddr.ctl_addr) {
48687 + if (ap->ioaddr.ctl_addr)
48688 iowrite8(ap->ctl, ap->ioaddr.ctl_addr);
48689 - ap->last_ctl = ap->ctl;
48690 - }
48691 }
48692 EXPORT_SYMBOL_GPL(ata_sff_postreset);
48693
48694 @@ -2537,7 +2520,6 @@
48695 if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) {
48696 /* set up device control for ATA_FLAG_SATA_RESET */
48697 iowrite8(ap->ctl, ioaddr->ctl_addr);
48698 - ap->last_ctl = ap->ctl;
48699 }
48700
48701 DPRINTK("EXIT\n");
48702 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/pata_amd.c linux-2.6.29-rc3.owrt/drivers/ata/pata_amd.c
48703 --- linux-2.6.29.owrt/drivers/ata/pata_amd.c 2009-05-10 22:04:38.000000000 +0200
48704 +++ linux-2.6.29-rc3.owrt/drivers/ata/pata_amd.c 2009-05-10 23:48:28.000000000 +0200
48705 @@ -24,7 +24,7 @@
48706 #include <linux/libata.h>
48707
48708 #define DRV_NAME "pata_amd"
48709 -#define DRV_VERSION "0.4.1"
48710 +#define DRV_VERSION "0.3.11"
48711
48712 /**
48713 * timing_setup - shared timing computation and load
48714 @@ -145,13 +145,6 @@
48715 return ata_sff_prereset(link, deadline);
48716 }
48717
48718 -/**
48719 - * amd_cable_detect - report cable type
48720 - * @ap: port
48721 - *
48722 - * AMD controller/BIOS setups record the cable type in word 0x42
48723 - */
48724 -
48725 static int amd_cable_detect(struct ata_port *ap)
48726 {
48727 static const u32 bitmask[2] = {0x03, 0x0C};
48728 @@ -165,40 +158,6 @@
48729 }
48730
48731 /**
48732 - * amd_fifo_setup - set the PIO FIFO for ATA/ATAPI
48733 - * @ap: ATA interface
48734 - * @adev: ATA device
48735 - *
48736 - * Set the PCI fifo for this device according to the devices present
48737 - * on the bus at this point in time. We need to turn the post write buffer
48738 - * off for ATAPI devices as we may need to issue a word sized write to the
48739 - * device as the final I/O
48740 - */
48741 -
48742 -static void amd_fifo_setup(struct ata_port *ap)
48743 -{
48744 - struct ata_device *adev;
48745 - struct pci_dev *pdev = to_pci_dev(ap->host->dev);
48746 - static const u8 fifobit[2] = { 0xC0, 0x30};
48747 - u8 fifo = fifobit[ap->port_no];
48748 - u8 r;
48749 -
48750 -
48751 - ata_for_each_dev(adev, &ap->link, ENABLED) {
48752 - if (adev->class == ATA_DEV_ATAPI)
48753 - fifo = 0;
48754 - }
48755 - if (pdev->device == PCI_DEVICE_ID_AMD_VIPER_7411) /* FIFO is broken */
48756 - fifo = 0;
48757 -
48758 - /* On the later chips the read prefetch bits become no-op bits */
48759 - pci_read_config_byte(pdev, 0x41, &r);
48760 - r &= ~fifobit[ap->port_no];
48761 - r |= fifo;
48762 - pci_write_config_byte(pdev, 0x41, r);
48763 -}
48764 -
48765 -/**
48766 * amd33_set_piomode - set initial PIO mode data
48767 * @ap: ATA interface
48768 * @adev: ATA device
48769 @@ -208,25 +167,21 @@
48770
48771 static void amd33_set_piomode(struct ata_port *ap, struct ata_device *adev)
48772 {
48773 - amd_fifo_setup(ap);
48774 timing_setup(ap, adev, 0x40, adev->pio_mode, 1);
48775 }
48776
48777 static void amd66_set_piomode(struct ata_port *ap, struct ata_device *adev)
48778 {
48779 - amd_fifo_setup(ap);
48780 timing_setup(ap, adev, 0x40, adev->pio_mode, 2);
48781 }
48782
48783 static void amd100_set_piomode(struct ata_port *ap, struct ata_device *adev)
48784 {
48785 - amd_fifo_setup(ap);
48786 timing_setup(ap, adev, 0x40, adev->pio_mode, 3);
48787 }
48788
48789 static void amd133_set_piomode(struct ata_port *ap, struct ata_device *adev)
48790 {
48791 - amd_fifo_setup(ap);
48792 timing_setup(ap, adev, 0x40, adev->pio_mode, 4);
48793 }
48794
48795 @@ -442,16 +397,6 @@
48796 .set_dmamode = nv133_set_dmamode,
48797 };
48798
48799 -static void amd_clear_fifo(struct pci_dev *pdev)
48800 -{
48801 - u8 fifo;
48802 - /* Disable the FIFO, the FIFO logic will re-enable it as
48803 - appropriate */
48804 - pci_read_config_byte(pdev, 0x41, &fifo);
48805 - fifo &= 0x0F;
48806 - pci_write_config_byte(pdev, 0x41, fifo);
48807 -}
48808 -
48809 static int amd_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
48810 {
48811 static const struct ata_port_info info[10] = {
48812 @@ -558,8 +503,14 @@
48813
48814 if (type < 3)
48815 ata_pci_bmdma_clear_simplex(pdev);
48816 - if (pdev->vendor == PCI_VENDOR_ID_AMD)
48817 - amd_clear_fifo(pdev);
48818 +
48819 + /* Check for AMD7411 */
48820 + if (type == 3)
48821 + /* FIFO is broken */
48822 + pci_write_config_byte(pdev, 0x41, fifo & 0x0F);
48823 + else
48824 + pci_write_config_byte(pdev, 0x41, fifo | 0xF0);
48825 +
48826 /* Cable detection on Nvidia chips doesn't work too well,
48827 * cache BIOS programmed UDMA mode.
48828 */
48829 @@ -585,11 +536,18 @@
48830 return rc;
48831
48832 if (pdev->vendor == PCI_VENDOR_ID_AMD) {
48833 - amd_clear_fifo(pdev);
48834 + u8 fifo;
48835 + pci_read_config_byte(pdev, 0x41, &fifo);
48836 + if (pdev->device == PCI_DEVICE_ID_AMD_VIPER_7411)
48837 + /* FIFO is broken */
48838 + pci_write_config_byte(pdev, 0x41, fifo & 0x0F);
48839 + else
48840 + pci_write_config_byte(pdev, 0x41, fifo | 0xF0);
48841 if (pdev->device == PCI_DEVICE_ID_AMD_VIPER_7409 ||
48842 pdev->device == PCI_DEVICE_ID_AMD_COBRA_7401)
48843 ata_pci_bmdma_clear_simplex(pdev);
48844 }
48845 +
48846 ata_host_resume(host);
48847 return 0;
48848 }
48849 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/pata_it821x.c linux-2.6.29-rc3.owrt/drivers/ata/pata_it821x.c
48850 --- linux-2.6.29.owrt/drivers/ata/pata_it821x.c 2009-05-10 22:04:38.000000000 +0200
48851 +++ linux-2.6.29-rc3.owrt/drivers/ata/pata_it821x.c 2009-05-10 23:48:28.000000000 +0200
48852 @@ -557,9 +557,6 @@
48853 id[83] |= 0x4400; /* Word 83 is valid and LBA48 */
48854 id[86] |= 0x0400; /* LBA48 on */
48855 id[ATA_ID_MAJOR_VER] |= 0x1F;
48856 - /* Clear the serial number because it's different each boot
48857 - which breaks validation on resume */
48858 - memset(&id[ATA_ID_SERNO], 0x20, ATA_ID_SERNO_LEN);
48859 }
48860 return err_mask;
48861 }
48862 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/pata_legacy.c linux-2.6.29-rc3.owrt/drivers/ata/pata_legacy.c
48863 --- linux-2.6.29.owrt/drivers/ata/pata_legacy.c 2009-05-10 22:04:38.000000000 +0200
48864 +++ linux-2.6.29-rc3.owrt/drivers/ata/pata_legacy.c 2009-05-10 23:48:28.000000000 +0200
48865 @@ -283,10 +283,9 @@
48866 static unsigned int pdc_data_xfer_vlb(struct ata_device *dev,
48867 unsigned char *buf, unsigned int buflen, int rw)
48868 {
48869 - int slop = buflen & 3;
48870 - /* 32bit I/O capable *and* we need to write a whole number of dwords */
48871 - if (ata_id_has_dword_io(dev->id) && (slop == 0 || slop == 3)) {
48872 + if (ata_id_has_dword_io(dev->id)) {
48873 struct ata_port *ap = dev->link->ap;
48874 + int slop = buflen & 3;
48875 unsigned long flags;
48876
48877 local_irq_save(flags);
48878 @@ -736,7 +735,7 @@
48879 struct ata_port *ap = adev->link->ap;
48880 int slop = buflen & 3;
48881
48882 - if (ata_id_has_dword_io(adev->id) && (slop == 0 || slop == 3)) {
48883 + if (ata_id_has_dword_io(adev->id)) {
48884 if (rw == WRITE)
48885 iowrite32_rep(ap->ioaddr.data_addr, buf, buflen >> 2);
48886 else
48887 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/pata_qdi.c linux-2.6.29-rc3.owrt/drivers/ata/pata_qdi.c
48888 --- linux-2.6.29.owrt/drivers/ata/pata_qdi.c 2009-05-10 22:04:38.000000000 +0200
48889 +++ linux-2.6.29-rc3.owrt/drivers/ata/pata_qdi.c 2009-05-10 23:48:28.000000000 +0200
48890 @@ -12,7 +12,7 @@
48891 *
48892 * Probe code based on drivers/ide/legacy/qd65xx.c
48893 * Rewritten from the work of Colten Edwards <pje120@cs.usask.ca> by
48894 - * Samuel Thibault <samuel.thibault@ens-lyon.org>
48895 + * Samuel Thibault <samuel.thibault@fnac.net>
48896 */
48897
48898 #include <linux/kernel.h>
48899 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/pata_via.c linux-2.6.29-rc3.owrt/drivers/ata/pata_via.c
48900 --- linux-2.6.29.owrt/drivers/ata/pata_via.c 2009-05-10 22:04:38.000000000 +0200
48901 +++ linux-2.6.29-rc3.owrt/drivers/ata/pata_via.c 2009-05-10 23:48:28.000000000 +0200
48902 @@ -110,8 +110,7 @@
48903 { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
48904 { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
48905 { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_SATA_PATA },
48906 - { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_NO_ENABLES },
48907 - { "vt6415", PCI_DEVICE_ID_VIA_6415, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_NO_ENABLES },
48908 + { "vt6410", PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST | VIA_NO_ENABLES},
48909 { "vt8237a", PCI_DEVICE_ID_VIA_8237A, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
48910 { "vt8237", PCI_DEVICE_ID_VIA_8237, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
48911 { "vt8235", PCI_DEVICE_ID_VIA_8235, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST },
48912 @@ -594,7 +593,6 @@
48913 #endif
48914
48915 static const struct pci_device_id via[] = {
48916 - { PCI_VDEVICE(VIA, 0x0415), },
48917 { PCI_VDEVICE(VIA, 0x0571), },
48918 { PCI_VDEVICE(VIA, 0x0581), },
48919 { PCI_VDEVICE(VIA, 0x1571), },
48920 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/sata_mv.c linux-2.6.29-rc3.owrt/drivers/ata/sata_mv.c
48921 --- linux-2.6.29.owrt/drivers/ata/sata_mv.c 2009-05-10 22:04:38.000000000 +0200
48922 +++ linux-2.6.29-rc3.owrt/drivers/ata/sata_mv.c 2009-05-10 23:48:28.000000000 +0200
48923 @@ -663,8 +663,8 @@
48924 { PCI_VDEVICE(MARVELL, 0x5081), chip_508x },
48925 /* RocketRAID 1720/174x have different identifiers */
48926 { PCI_VDEVICE(TTI, 0x1720), chip_6042 },
48927 - { PCI_VDEVICE(TTI, 0x1740), chip_6042 },
48928 - { PCI_VDEVICE(TTI, 0x1742), chip_6042 },
48929 + { PCI_VDEVICE(TTI, 0x1740), chip_508x },
48930 + { PCI_VDEVICE(TTI, 0x1742), chip_508x },
48931
48932 { PCI_VDEVICE(MARVELL, 0x6040), chip_604x },
48933 { PCI_VDEVICE(MARVELL, 0x6041), chip_604x },
48934 @@ -2218,13 +2218,12 @@
48935 else
48936 handled = mv_host_intr(host, pending_irqs);
48937 }
48938 + spin_unlock(&host->lock);
48939
48940 /* for MSI: unmask; interrupt cause bits will retrigger now */
48941 if (using_msi)
48942 writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr);
48943
48944 - spin_unlock(&host->lock);
48945 -
48946 return IRQ_RETVAL(handled);
48947 }
48948
48949 @@ -3115,17 +3114,19 @@
48950 writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS);
48951 }
48952
48953 - /* Clear any currently outstanding host interrupt conditions */
48954 - writelfl(0, mmio + hpriv->irq_cause_ofs);
48955 + if (!IS_SOC(hpriv)) {
48956 + /* Clear any currently outstanding host interrupt conditions */
48957 + writelfl(0, mmio + hpriv->irq_cause_ofs);
48958
48959 - /* and unmask interrupt generation for host regs */
48960 - writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs);
48961 + /* and unmask interrupt generation for host regs */
48962 + writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs);
48963
48964 - /*
48965 - * enable only global host interrupts for now.
48966 - * The per-port interrupts get done later as ports are set up.
48967 - */
48968 - mv_set_main_irq_mask(host, 0, PCI_ERR);
48969 + /*
48970 + * enable only global host interrupts for now.
48971 + * The per-port interrupts get done later as ports are set up.
48972 + */
48973 + mv_set_main_irq_mask(host, 0, PCI_ERR);
48974 + }
48975 done:
48976 return rc;
48977 }
48978 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/sata_nv.c linux-2.6.29-rc3.owrt/drivers/ata/sata_nv.c
48979 --- linux-2.6.29.owrt/drivers/ata/sata_nv.c 2009-05-10 22:04:38.000000000 +0200
48980 +++ linux-2.6.29-rc3.owrt/drivers/ata/sata_nv.c 2009-05-10 23:48:28.000000000 +0200
48981 @@ -421,33 +421,26 @@
48982 .hardreset = ATA_OP_NULL,
48983 };
48984
48985 -/* nf2 is ripe with hardreset related problems.
48986 - *
48987 - * kernel bz#3352 reports nf2/3 controllers can't determine device
48988 - * signature reliably. The following thread reports detection failure
48989 - * on cold boot with the standard debouncing timing.
48990 +/* OSDL bz3352 reports that nf2/3 controllers can't determine device
48991 + * signature reliably. Also, the following thread reports detection
48992 + * failure on cold boot with the standard debouncing timing.
48993 *
48994 * http://thread.gmane.org/gmane.linux.ide/34098
48995 *
48996 - * And bz#12176 reports that hardreset simply doesn't work on nf2.
48997 - * Give up on it and just don't do hardreset.
48998 + * Debounce with hotplug timing and request follow-up SRST.
48999 */
49000 static struct ata_port_operations nv_nf2_ops = {
49001 - .inherits = &nv_generic_ops,
49002 + .inherits = &nv_common_ops,
49003 .freeze = nv_nf2_freeze,
49004 .thaw = nv_nf2_thaw,
49005 + .hardreset = nv_noclassify_hardreset,
49006 };
49007
49008 -/* For initial probing after boot and hot plugging, hardreset mostly
49009 - * works fine on CK804 but curiously, reprobing on the initial port by
49010 - * rescanning or rmmod/insmod fails to acquire the initial D2H Reg FIS
49011 - * in somewhat undeterministic way. Use noclassify hardreset.
49012 - */
49013 +/* CK804 finally gets hardreset right */
49014 static struct ata_port_operations nv_ck804_ops = {
49015 .inherits = &nv_common_ops,
49016 .freeze = nv_ck804_freeze,
49017 .thaw = nv_ck804_thaw,
49018 - .hardreset = nv_noclassify_hardreset,
49019 .host_stop = nv_ck804_host_stop,
49020 };
49021
49022 @@ -2523,7 +2516,7 @@
49023 module_init(nv_init);
49024 module_exit(nv_exit);
49025 module_param_named(adma, adma_enabled, bool, 0444);
49026 -MODULE_PARM_DESC(adma, "Enable use of ADMA (Default: false)");
49027 +MODULE_PARM_DESC(adma, "Enable use of ADMA (Default: true)");
49028 module_param_named(swncq, swncq_enabled, bool, 0444);
49029 MODULE_PARM_DESC(swncq, "Enable use of SWNCQ (Default: true)");
49030
49031 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ata/sata_sil.c linux-2.6.29-rc3.owrt/drivers/ata/sata_sil.c
49032 --- linux-2.6.29.owrt/drivers/ata/sata_sil.c 2009-05-10 22:04:38.000000000 +0200
49033 +++ linux-2.6.29-rc3.owrt/drivers/ata/sata_sil.c 2009-05-10 23:48:28.000000000 +0200
49034 @@ -44,7 +44,6 @@
49035 #include <linux/device.h>
49036 #include <scsi/scsi_host.h>
49037 #include <linux/libata.h>
49038 -#include <linux/dmi.h>
49039
49040 #define DRV_NAME "sata_sil"
49041 #define DRV_VERSION "2.4"
49042 @@ -324,7 +323,7 @@
49043
49044 prd->addr = cpu_to_le32(addr);
49045 prd->flags_len = cpu_to_le32(sg_len);
49046 - VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", si, addr, sg_len);
49047 + VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", pi, addr, sg_len);
49048
49049 last_prd = prd;
49050 prd++;
49051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/atm/fore200e.c linux-2.6.29-rc3.owrt/drivers/atm/fore200e.c
49052 --- linux-2.6.29.owrt/drivers/atm/fore200e.c 2009-05-10 22:04:38.000000000 +0200
49053 +++ linux-2.6.29-rc3.owrt/drivers/atm/fore200e.c 2009-05-10 23:48:28.000000000 +0200
49054 @@ -2519,8 +2519,8 @@
49055 return err;
49056
49057 sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT);
49058 - if ((err = request_firmware(&firmware, buf, device)) < 0) {
49059 - printk(FORE200E "problem loading firmware image %s\n", fore200e->bus->model_name);
49060 + if (request_firmware(&firmware, buf, device) == 1) {
49061 + printk(FORE200E "missing %s firmware image\n", fore200e->bus->model_name);
49062 return err;
49063 }
49064
49065 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/atm/lanai.c linux-2.6.29-rc3.owrt/drivers/atm/lanai.c
49066 --- linux-2.6.29.owrt/drivers/atm/lanai.c 2009-05-10 22:04:38.000000000 +0200
49067 +++ linux-2.6.29-rc3.owrt/drivers/atm/lanai.c 2009-05-10 23:48:28.000000000 +0200
49068 @@ -901,7 +901,7 @@
49069 clock_l(); udelay(5);
49070 for (i = 128; i != 0; i >>= 1) { /* write command out */
49071 tmp = (lanai->conf1 & ~CONFIG1_PROMDATA) |
49072 - ((data & i) ? CONFIG1_PROMDATA : 0);
49073 + (data & i) ? CONFIG1_PROMDATA : 0;
49074 if (lanai->conf1 != tmp) {
49075 set_config1(tmp);
49076 udelay(5); /* Let new data settle */
49077 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/atm/solos-pci.c linux-2.6.29-rc3.owrt/drivers/atm/solos-pci.c
49078 --- linux-2.6.29.owrt/drivers/atm/solos-pci.c 2009-05-10 22:04:38.000000000 +0200
49079 +++ linux-2.6.29-rc3.owrt/drivers/atm/solos-pci.c 2009-05-10 23:48:28.000000000 +0200
49080 @@ -685,7 +685,6 @@
49081 out_release_regions:
49082 pci_release_regions(dev);
49083 out:
49084 - kfree(card);
49085 return err;
49086 }
49087
49088 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/base/base.h linux-2.6.29-rc3.owrt/drivers/base/base.h
49089 --- linux-2.6.29.owrt/drivers/base/base.h 2009-05-10 22:04:39.000000000 +0200
49090 +++ linux-2.6.29-rc3.owrt/drivers/base/base.h 2009-05-10 23:48:28.000000000 +0200
49091 @@ -88,6 +88,8 @@
49092 extern int driver_probe_device(struct device_driver *drv, struct device *dev);
49093
49094 extern void sysdev_shutdown(void);
49095 +extern int sysdev_suspend(pm_message_t state);
49096 +extern int sysdev_resume(void);
49097
49098 extern char *make_class_name(const char *name, struct kobject *kobj);
49099
49100 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/base/core.c linux-2.6.29-rc3.owrt/drivers/base/core.c
49101 --- linux-2.6.29.owrt/drivers/base/core.c 2009-05-10 22:04:39.000000000 +0200
49102 +++ linux-2.6.29-rc3.owrt/drivers/base/core.c 2009-05-10 23:48:28.000000000 +0200
49103 @@ -1280,7 +1280,7 @@
49104
49105 /**
49106 * root_device_unregister - unregister and free a root device
49107 - * @dev: device going away
49108 + * @root: device going away.
49109 *
49110 * This function unregisters and cleans up a device that was created by
49111 * root_device_register().
49112 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/base/dd.c linux-2.6.29-rc3.owrt/drivers/base/dd.c
49113 --- linux-2.6.29.owrt/drivers/base/dd.c 2009-05-10 22:04:39.000000000 +0200
49114 +++ linux-2.6.29-rc3.owrt/drivers/base/dd.c 2009-05-10 23:48:28.000000000 +0200
49115 @@ -18,11 +18,9 @@
49116 */
49117
49118 #include <linux/device.h>
49119 -#include <linux/delay.h>
49120 #include <linux/module.h>
49121 #include <linux/kthread.h>
49122 #include <linux/wait.h>
49123 -#include <linux/async.h>
49124
49125 #include "base.h"
49126 #include "power/power.h"
49127 @@ -170,21 +168,6 @@
49128 }
49129
49130 /**
49131 - * wait_for_device_probe
49132 - * Wait for device probing to be completed.
49133 - *
49134 - * Note: this function polls at 100 msec intervals.
49135 - */
49136 -int wait_for_device_probe(void)
49137 -{
49138 - /* wait for the known devices to complete their probing */
49139 - while (driver_probe_done() != 0)
49140 - msleep(100);
49141 - async_synchronize_full();
49142 - return 0;
49143 -}
49144 -
49145 -/**
49146 * driver_probe_device - attempt to bind device & driver together
49147 * @drv: driver to bind a device to
49148 * @dev: device to try to bind to the driver
49149 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/base/node.c linux-2.6.29-rc3.owrt/drivers/base/node.c
49150 --- linux-2.6.29.owrt/drivers/base/node.c 2009-05-10 22:04:39.000000000 +0200
49151 +++ linux-2.6.29-rc3.owrt/drivers/base/node.c 2009-05-10 23:48:28.000000000 +0200
49152 @@ -303,7 +303,7 @@
49153 sect_start_pfn = section_nr_to_pfn(mem_blk->phys_index);
49154 sect_end_pfn = sect_start_pfn + PAGES_PER_SECTION - 1;
49155 for (pfn = sect_start_pfn; pfn <= sect_end_pfn; pfn++) {
49156 - int nid;
49157 + unsigned int nid;
49158
49159 nid = get_nid_for_pfn(pfn);
49160 if (nid < 0)
49161 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/base/power/main.c linux-2.6.29-rc3.owrt/drivers/base/power/main.c
49162 --- linux-2.6.29.owrt/drivers/base/power/main.c 2009-05-10 22:04:39.000000000 +0200
49163 +++ linux-2.6.29-rc3.owrt/drivers/base/power/main.c 2009-05-10 23:48:28.000000000 +0200
49164 @@ -333,6 +333,7 @@
49165 */
49166 void device_power_up(pm_message_t state)
49167 {
49168 + sysdev_resume();
49169 dpm_power_up(state);
49170 }
49171 EXPORT_SYMBOL_GPL(device_power_up);
49172 @@ -576,6 +577,8 @@
49173 }
49174 dev->power.status = DPM_OFF_IRQ;
49175 }
49176 + if (!error)
49177 + error = sysdev_suspend(state);
49178 if (error)
49179 dpm_power_up(resume_event(state));
49180 return error;
49181 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/base/sys.c linux-2.6.29-rc3.owrt/drivers/base/sys.c
49182 --- linux-2.6.29.owrt/drivers/base/sys.c 2009-05-10 22:04:39.000000000 +0200
49183 +++ linux-2.6.29-rc3.owrt/drivers/base/sys.c 2009-05-10 23:48:28.000000000 +0200
49184 @@ -303,6 +303,7 @@
49185 * is guaranteed by virtue of the fact that child devices are registered
49186 * after their parents.
49187 */
49188 +
49189 void sysdev_shutdown(void)
49190 {
49191 struct sysdev_class * cls;
49192 @@ -362,6 +363,7 @@
49193 * This is only called by the device PM core, so we let them handle
49194 * all synchronization.
49195 */
49196 +
49197 int sysdev_suspend(pm_message_t state)
49198 {
49199 struct sysdev_class * cls;
49200 @@ -430,7 +432,7 @@
49201 }
49202 return ret;
49203 }
49204 -EXPORT_SYMBOL_GPL(sysdev_suspend);
49205 +
49206
49207 /**
49208 * sysdev_resume - Bring system devices back to life.
49209 @@ -440,6 +442,7 @@
49210 *
49211 * Note: Interrupts are disabled when called.
49212 */
49213 +
49214 int sysdev_resume(void)
49215 {
49216 struct sysdev_class * cls;
49217 @@ -460,7 +463,7 @@
49218 }
49219 return 0;
49220 }
49221 -EXPORT_SYMBOL_GPL(sysdev_resume);
49222 +
49223
49224 int __init system_bus_init(void)
49225 {
49226 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/aoe/aoedev.c linux-2.6.29-rc3.owrt/drivers/block/aoe/aoedev.c
49227 --- linux-2.6.29.owrt/drivers/block/aoe/aoedev.c 2009-05-10 22:04:38.000000000 +0200
49228 +++ linux-2.6.29-rc3.owrt/drivers/block/aoe/aoedev.c 2009-05-10 23:48:28.000000000 +0200
49229 @@ -173,7 +173,7 @@
49230 return;
49231 while (atomic_read(&skb_shinfo(skb)->dataref) != 1 && i-- > 0)
49232 msleep(Sms);
49233 - if (i < 0) {
49234 + if (i <= 0) {
49235 printk(KERN_ERR
49236 "aoe: %s holds ref: %s\n",
49237 skb->dev ? skb->dev->name : "netif",
49238 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/aoe/aoe.h linux-2.6.29-rc3.owrt/drivers/block/aoe/aoe.h
49239 --- linux-2.6.29.owrt/drivers/block/aoe/aoe.h 2009-05-10 22:04:38.000000000 +0200
49240 +++ linux-2.6.29-rc3.owrt/drivers/block/aoe/aoe.h 2009-05-10 23:48:28.000000000 +0200
49241 @@ -18,7 +18,6 @@
49242 enum {
49243 AOECMD_ATA,
49244 AOECMD_CFG,
49245 - AOECMD_VEND_MIN = 0xf0,
49246
49247 AOEFL_RSP = (1<<3),
49248 AOEFL_ERR = (1<<2),
49249 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/aoe/aoenet.c linux-2.6.29-rc3.owrt/drivers/block/aoe/aoenet.c
49250 --- linux-2.6.29.owrt/drivers/block/aoe/aoenet.c 2009-05-10 22:04:38.000000000 +0200
49251 +++ linux-2.6.29-rc3.owrt/drivers/block/aoe/aoenet.c 2009-05-10 23:48:28.000000000 +0200
49252 @@ -142,8 +142,6 @@
49253 aoecmd_cfg_rsp(skb);
49254 break;
49255 default:
49256 - if (h->cmd >= AOECMD_VEND_MIN)
49257 - break; /* don't complain about vendor commands */
49258 printk(KERN_INFO "aoe: unknown cmd %d\n", h->cmd);
49259 }
49260 exit:
49261 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/ataflop.c linux-2.6.29-rc3.owrt/drivers/block/ataflop.c
49262 --- linux-2.6.29.owrt/drivers/block/ataflop.c 2009-05-10 22:04:38.000000000 +0200
49263 +++ linux-2.6.29-rc3.owrt/drivers/block/ataflop.c 2009-05-10 23:48:28.000000000 +0200
49264 @@ -1730,7 +1730,7 @@
49265
49266 timeout = jiffies + 2*HZ+HZ/2;
49267 while (time_before(jiffies, timeout))
49268 - if (!(st_mfp.par_dt_reg & 0x20))
49269 + if (!(mfp.par_dt_reg & 0x20))
49270 break;
49271
49272 status = FDC_READ( FDCREG_STATUS );
49273 @@ -1747,7 +1747,7 @@
49274 /* dummy seek command to make WP bit accessible */
49275 FDC_WRITE( FDCREG_DATA, 0 );
49276 FDC_WRITE( FDCREG_CMD, FDCCMD_SEEK );
49277 - while( st_mfp.par_dt_reg & 0x20 )
49278 + while( mfp.par_dt_reg & 0x20 )
49279 ;
49280 status = FDC_READ( FDCREG_STATUS );
49281 }
49282 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/cciss.c linux-2.6.29-rc3.owrt/drivers/block/cciss.c
49283 --- linux-2.6.29.owrt/drivers/block/cciss.c 2009-05-10 22:04:38.000000000 +0200
49284 +++ linux-2.6.29-rc3.owrt/drivers/block/cciss.c 2009-05-10 23:48:28.000000000 +0200
49285 @@ -3390,203 +3390,6 @@
49286 kfree(p);
49287 }
49288
49289 -/* Send a message CDB to the firmware. */
49290 -static __devinit int cciss_message(struct pci_dev *pdev, unsigned char opcode, unsigned char type)
49291 -{
49292 - typedef struct {
49293 - CommandListHeader_struct CommandHeader;
49294 - RequestBlock_struct Request;
49295 - ErrDescriptor_struct ErrorDescriptor;
49296 - } Command;
49297 - static const size_t cmd_sz = sizeof(Command) + sizeof(ErrorInfo_struct);
49298 - Command *cmd;
49299 - dma_addr_t paddr64;
49300 - uint32_t paddr32, tag;
49301 - void __iomem *vaddr;
49302 - int i, err;
49303 -
49304 - vaddr = ioremap_nocache(pci_resource_start(pdev, 0), pci_resource_len(pdev, 0));
49305 - if (vaddr == NULL)
49306 - return -ENOMEM;
49307 -
49308 - /* The Inbound Post Queue only accepts 32-bit physical addresses for the
49309 - CCISS commands, so they must be allocated from the lower 4GiB of
49310 - memory. */
49311 - err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK);
49312 - if (err) {
49313 - iounmap(vaddr);
49314 - return -ENOMEM;
49315 - }
49316 -
49317 - cmd = pci_alloc_consistent(pdev, cmd_sz, &paddr64);
49318 - if (cmd == NULL) {
49319 - iounmap(vaddr);
49320 - return -ENOMEM;
49321 - }
49322 -
49323 - /* This must fit, because of the 32-bit consistent DMA mask. Also,
49324 - although there's no guarantee, we assume that the address is at
49325 - least 4-byte aligned (most likely, it's page-aligned). */
49326 - paddr32 = paddr64;
49327 -
49328 - cmd->CommandHeader.ReplyQueue = 0;
49329 - cmd->CommandHeader.SGList = 0;
49330 - cmd->CommandHeader.SGTotal = 0;
49331 - cmd->CommandHeader.Tag.lower = paddr32;
49332 - cmd->CommandHeader.Tag.upper = 0;
49333 - memset(&cmd->CommandHeader.LUN.LunAddrBytes, 0, 8);
49334 -
49335 - cmd->Request.CDBLen = 16;
49336 - cmd->Request.Type.Type = TYPE_MSG;
49337 - cmd->Request.Type.Attribute = ATTR_HEADOFQUEUE;
49338 - cmd->Request.Type.Direction = XFER_NONE;
49339 - cmd->Request.Timeout = 0; /* Don't time out */
49340 - cmd->Request.CDB[0] = opcode;
49341 - cmd->Request.CDB[1] = type;
49342 - memset(&cmd->Request.CDB[2], 0, 14); /* the rest of the CDB is reserved */
49343 -
49344 - cmd->ErrorDescriptor.Addr.lower = paddr32 + sizeof(Command);
49345 - cmd->ErrorDescriptor.Addr.upper = 0;
49346 - cmd->ErrorDescriptor.Len = sizeof(ErrorInfo_struct);
49347 -
49348 - writel(paddr32, vaddr + SA5_REQUEST_PORT_OFFSET);
49349 -
49350 - for (i = 0; i < 10; i++) {
49351 - tag = readl(vaddr + SA5_REPLY_PORT_OFFSET);
49352 - if ((tag & ~3) == paddr32)
49353 - break;
49354 - schedule_timeout_uninterruptible(HZ);
49355 - }
49356 -
49357 - iounmap(vaddr);
49358 -
49359 - /* we leak the DMA buffer here ... no choice since the controller could
49360 - still complete the command. */
49361 - if (i == 10) {
49362 - printk(KERN_ERR "cciss: controller message %02x:%02x timed out\n",
49363 - opcode, type);
49364 - return -ETIMEDOUT;
49365 - }
49366 -
49367 - pci_free_consistent(pdev, cmd_sz, cmd, paddr64);
49368 -
49369 - if (tag & 2) {
49370 - printk(KERN_ERR "cciss: controller message %02x:%02x failed\n",
49371 - opcode, type);
49372 - return -EIO;
49373 - }
49374 -
49375 - printk(KERN_INFO "cciss: controller message %02x:%02x succeeded\n",
49376 - opcode, type);
49377 - return 0;
49378 -}
49379 -
49380 -#define cciss_soft_reset_controller(p) cciss_message(p, 1, 0)
49381 -#define cciss_noop(p) cciss_message(p, 3, 0)
49382 -
49383 -static __devinit int cciss_reset_msi(struct pci_dev *pdev)
49384 -{
49385 -/* the #defines are stolen from drivers/pci/msi.h. */
49386 -#define msi_control_reg(base) (base + PCI_MSI_FLAGS)
49387 -#define PCI_MSIX_FLAGS_ENABLE (1 << 15)
49388 -
49389 - int pos;
49390 - u16 control = 0;
49391 -
49392 - pos = pci_find_capability(pdev, PCI_CAP_ID_MSI);
49393 - if (pos) {
49394 - pci_read_config_word(pdev, msi_control_reg(pos), &control);
49395 - if (control & PCI_MSI_FLAGS_ENABLE) {
49396 - printk(KERN_INFO "cciss: resetting MSI\n");
49397 - pci_write_config_word(pdev, msi_control_reg(pos), control & ~PCI_MSI_FLAGS_ENABLE);
49398 - }
49399 - }
49400 -
49401 - pos = pci_find_capability(pdev, PCI_CAP_ID_MSIX);
49402 - if (pos) {
49403 - pci_read_config_word(pdev, msi_control_reg(pos), &control);
49404 - if (control & PCI_MSIX_FLAGS_ENABLE) {
49405 - printk(KERN_INFO "cciss: resetting MSI-X\n");
49406 - pci_write_config_word(pdev, msi_control_reg(pos), control & ~PCI_MSIX_FLAGS_ENABLE);
49407 - }
49408 - }
49409 -
49410 - return 0;
49411 -}
49412 -
49413 -/* This does a hard reset of the controller using PCI power management
49414 - * states. */
49415 -static __devinit int cciss_hard_reset_controller(struct pci_dev *pdev)
49416 -{
49417 - u16 pmcsr, saved_config_space[32];
49418 - int i, pos;
49419 -
49420 - printk(KERN_INFO "cciss: using PCI PM to reset controller\n");
49421 -
49422 - /* This is very nearly the same thing as
49423 -
49424 - pci_save_state(pci_dev);
49425 - pci_set_power_state(pci_dev, PCI_D3hot);
49426 - pci_set_power_state(pci_dev, PCI_D0);
49427 - pci_restore_state(pci_dev);
49428 -
49429 - but we can't use these nice canned kernel routines on
49430 - kexec, because they also check the MSI/MSI-X state in PCI
49431 - configuration space and do the wrong thing when it is
49432 - set/cleared. Also, the pci_save/restore_state functions
49433 - violate the ordering requirements for restoring the
49434 - configuration space from the CCISS document (see the
49435 - comment below). So we roll our own .... */
49436 -
49437 - for (i = 0; i < 32; i++)
49438 - pci_read_config_word(pdev, 2*i, &saved_config_space[i]);
49439 -
49440 - pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
49441 - if (pos == 0) {
49442 - printk(KERN_ERR "cciss_reset_controller: PCI PM not supported\n");
49443 - return -ENODEV;
49444 - }
49445 -
49446 - /* Quoting from the Open CISS Specification: "The Power
49447 - * Management Control/Status Register (CSR) controls the power
49448 - * state of the device. The normal operating state is D0,
49449 - * CSR=00h. The software off state is D3, CSR=03h. To reset
49450 - * the controller, place the interface device in D3 then to
49451 - * D0, this causes a secondary PCI reset which will reset the
49452 - * controller." */
49453 -
49454 - /* enter the D3hot power management state */
49455 - pci_read_config_word(pdev, pos + PCI_PM_CTRL, &pmcsr);
49456 - pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
49457 - pmcsr |= PCI_D3hot;
49458 - pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr);
49459 -
49460 - schedule_timeout_uninterruptible(HZ >> 1);
49461 -
49462 - /* enter the D0 power management state */
49463 - pmcsr &= ~PCI_PM_CTRL_STATE_MASK;
49464 - pmcsr |= PCI_D0;
49465 - pci_write_config_word(pdev, pos + PCI_PM_CTRL, pmcsr);
49466 -
49467 - schedule_timeout_uninterruptible(HZ >> 1);
49468 -
49469 - /* Restore the PCI configuration space. The Open CISS
49470 - * Specification says, "Restore the PCI Configuration
49471 - * Registers, offsets 00h through 60h. It is important to
49472 - * restore the command register, 16-bits at offset 04h,
49473 - * last. Do not restore the configuration status register,
49474 - * 16-bits at offset 06h." Note that the offset is 2*i. */
49475 - for (i = 0; i < 32; i++) {
49476 - if (i == 2 || i == 3)
49477 - continue;
49478 - pci_write_config_word(pdev, 2*i, saved_config_space[i]);
49479 - }
49480 - wmb();
49481 - pci_write_config_word(pdev, 4, saved_config_space[2]);
49482 -
49483 - return 0;
49484 -}
49485 -
49486 /*
49487 * This is it. Find all the controllers and register them. I really hate
49488 * stealing all these major device numbers.
49489 @@ -3601,26 +3404,6 @@
49490 int dac, return_code;
49491 InquiryData_struct *inq_buff = NULL;
49492
49493 - if (reset_devices) {
49494 - /* Reset the controller with a PCI power-cycle */
49495 - if (cciss_hard_reset_controller(pdev) || cciss_reset_msi(pdev))
49496 - return -ENODEV;
49497 -
49498 - /* Now try to get the controller to respond to a no-op. Some
49499 - devices (notably the HP Smart Array 5i Controller) need
49500 - up to 30 seconds to respond. */
49501 - for (i=0; i<30; i++) {
49502 - if (cciss_noop(pdev) == 0)
49503 - break;
49504 -
49505 - schedule_timeout_uninterruptible(HZ);
49506 - }
49507 - if (i == 30) {
49508 - printk(KERN_ERR "cciss: controller seems dead\n");
49509 - return -EBUSY;
49510 - }
49511 - }
49512 -
49513 i = alloc_cciss_hba();
49514 if (i < 0)
49515 return -1;
49516 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/floppy.c linux-2.6.29-rc3.owrt/drivers/block/floppy.c
49517 --- linux-2.6.29.owrt/drivers/block/floppy.c 2009-05-10 22:04:38.000000000 +0200
49518 +++ linux-2.6.29-rc3.owrt/drivers/block/floppy.c 2009-05-10 23:48:28.000000000 +0200
49519 @@ -558,8 +558,6 @@
49520 static void recalibrate_floppy(void);
49521 static void floppy_shutdown(unsigned long);
49522
49523 -static int floppy_request_regions(int);
49524 -static void floppy_release_regions(int);
49525 static int floppy_grab_irq_and_dma(void);
49526 static void floppy_release_irq_and_dma(void);
49527
49528 @@ -4276,7 +4274,8 @@
49529 FDCS->rawcmd = 2;
49530 if (user_reset_fdc(-1, FD_RESET_ALWAYS, 0)) {
49531 /* free ioports reserved by floppy_grab_irq_and_dma() */
49532 - floppy_release_regions(fdc);
49533 + release_region(FDCS->address + 2, 4);
49534 + release_region(FDCS->address + 7, 1);
49535 FDCS->address = -1;
49536 FDCS->version = FDC_NONE;
49537 continue;
49538 @@ -4285,7 +4284,8 @@
49539 FDCS->version = get_fdc_version();
49540 if (FDCS->version == FDC_NONE) {
49541 /* free ioports reserved by floppy_grab_irq_and_dma() */
49542 - floppy_release_regions(fdc);
49543 + release_region(FDCS->address + 2, 4);
49544 + release_region(FDCS->address + 7, 1);
49545 FDCS->address = -1;
49546 continue;
49547 }
49548 @@ -4358,47 +4358,6 @@
49549
49550 static DEFINE_SPINLOCK(floppy_usage_lock);
49551
49552 -static const struct io_region {
49553 - int offset;
49554 - int size;
49555 -} io_regions[] = {
49556 - { 2, 1 },
49557 - /* address + 3 is sometimes reserved by pnp bios for motherboard */
49558 - { 4, 2 },
49559 - /* address + 6 is reserved, and may be taken by IDE.
49560 - * Unfortunately, Adaptec doesn't know this :-(, */
49561 - { 7, 1 },
49562 -};
49563 -
49564 -static void floppy_release_allocated_regions(int fdc, const struct io_region *p)
49565 -{
49566 - while (p != io_regions) {
49567 - p--;
49568 - release_region(FDCS->address + p->offset, p->size);
49569 - }
49570 -}
49571 -
49572 -#define ARRAY_END(X) (&((X)[ARRAY_SIZE(X)]))
49573 -
49574 -static int floppy_request_regions(int fdc)
49575 -{
49576 - const struct io_region *p;
49577 -
49578 - for (p = io_regions; p < ARRAY_END(io_regions); p++) {
49579 - if (!request_region(FDCS->address + p->offset, p->size, "floppy")) {
49580 - DPRINT("Floppy io-port 0x%04lx in use\n", FDCS->address + p->offset);
49581 - floppy_release_allocated_regions(fdc, p);
49582 - return -EBUSY;
49583 - }
49584 - }
49585 - return 0;
49586 -}
49587 -
49588 -static void floppy_release_regions(int fdc)
49589 -{
49590 - floppy_release_allocated_regions(fdc, ARRAY_END(io_regions));
49591 -}
49592 -
49593 static int floppy_grab_irq_and_dma(void)
49594 {
49595 unsigned long flags;
49596 @@ -4440,8 +4399,18 @@
49597
49598 for (fdc = 0; fdc < N_FDC; fdc++) {
49599 if (FDCS->address != -1) {
49600 - if (floppy_request_regions(fdc))
49601 - goto cleanup;
49602 + if (!request_region(FDCS->address + 2, 4, "floppy")) {
49603 + DPRINT("Floppy io-port 0x%04lx in use\n",
49604 + FDCS->address + 2);
49605 + goto cleanup1;
49606 + }
49607 + if (!request_region(FDCS->address + 7, 1, "floppy DIR")) {
49608 + DPRINT("Floppy io-port 0x%04lx in use\n",
49609 + FDCS->address + 7);
49610 + goto cleanup2;
49611 + }
49612 + /* address + 6 is reserved, and may be taken by IDE.
49613 + * Unfortunately, Adaptec doesn't know this :-(, */
49614 }
49615 }
49616 for (fdc = 0; fdc < N_FDC; fdc++) {
49617 @@ -4463,11 +4432,15 @@
49618 fdc = 0;
49619 irqdma_allocated = 1;
49620 return 0;
49621 -cleanup:
49622 +cleanup2:
49623 + release_region(FDCS->address + 2, 4);
49624 +cleanup1:
49625 fd_free_irq();
49626 fd_free_dma();
49627 - while (--fdc >= 0)
49628 - floppy_release_regions(fdc);
49629 + while (--fdc >= 0) {
49630 + release_region(FDCS->address + 2, 4);
49631 + release_region(FDCS->address + 7, 1);
49632 + }
49633 spin_lock_irqsave(&floppy_usage_lock, flags);
49634 usage_count--;
49635 spin_unlock_irqrestore(&floppy_usage_lock, flags);
49636 @@ -4528,8 +4501,10 @@
49637 #endif
49638 old_fdc = fdc;
49639 for (fdc = 0; fdc < N_FDC; fdc++)
49640 - if (FDCS->address != -1)
49641 - floppy_release_regions(fdc);
49642 + if (FDCS->address != -1) {
49643 + release_region(FDCS->address + 2, 4);
49644 + release_region(FDCS->address + 7, 1);
49645 + }
49646 fdc = old_fdc;
49647 }
49648
49649 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/loop.c linux-2.6.29-rc3.owrt/drivers/block/loop.c
49650 --- linux-2.6.29.owrt/drivers/block/loop.c 2009-05-10 22:04:38.000000000 +0200
49651 +++ linux-2.6.29-rc3.owrt/drivers/block/loop.c 2009-05-10 23:48:28.000000000 +0200
49652 @@ -392,7 +392,8 @@
49653 struct loop_device *lo = p->lo;
49654 struct page *page = buf->page;
49655 sector_t IV;
49656 - int size, ret;
49657 + size_t size;
49658 + int ret;
49659
49660 ret = buf->ops->confirm(pipe, buf);
49661 if (unlikely(ret))
49662 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/Makefile linux-2.6.29-rc3.owrt/drivers/block/Makefile
49663 --- linux-2.6.29.owrt/drivers/block/Makefile 2009-05-10 22:04:38.000000000 +0200
49664 +++ linux-2.6.29-rc3.owrt/drivers/block/Makefile 2009-05-10 23:48:28.000000000 +0200
49665 @@ -9,7 +9,6 @@
49666 obj-$(CONFIG_BLK_DEV_FD) += floppy.o
49667 obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o
49668 obj-$(CONFIG_PS3_DISK) += ps3disk.o
49669 -obj-$(CONFIG_PS3_VRAM) += ps3vram.o
49670 obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o
49671 obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o
49672 obj-$(CONFIG_BLK_DEV_RAM) += brd.o
49673 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/nbd.c linux-2.6.29-rc3.owrt/drivers/block/nbd.c
49674 --- linux-2.6.29.owrt/drivers/block/nbd.c 2009-05-10 22:04:38.000000000 +0200
49675 +++ linux-2.6.29-rc3.owrt/drivers/block/nbd.c 2009-05-10 23:48:28.000000000 +0200
49676 @@ -549,15 +549,6 @@
49677
49678 BUG_ON(lo->magic != LO_MAGIC);
49679
49680 - if (unlikely(!lo->sock)) {
49681 - printk(KERN_ERR "%s: Attempted send on closed socket\n",
49682 - lo->disk->disk_name);
49683 - req->errors++;
49684 - nbd_end_request(req);
49685 - spin_lock_irq(q->queue_lock);
49686 - continue;
49687 - }
49688 -
49689 spin_lock_irq(&lo->queue_lock);
49690 list_add_tail(&req->queuelist, &lo->waiting_queue);
49691 spin_unlock_irq(&lo->queue_lock);
49692 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/paride/pg.c linux-2.6.29-rc3.owrt/drivers/block/paride/pg.c
49693 --- linux-2.6.29.owrt/drivers/block/paride/pg.c 2009-05-10 22:04:38.000000000 +0200
49694 +++ linux-2.6.29-rc3.owrt/drivers/block/paride/pg.c 2009-05-10 23:48:28.000000000 +0200
49695 @@ -422,7 +422,7 @@
49696
49697 for (k = 0; k < len; k++) {
49698 char c = *buf++;
49699 - if (c != ' ' && c != l)
49700 + if (c != ' ' || c != l)
49701 l = *targ++ = c;
49702 }
49703 if (l == ' ')
49704 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/ps3vram.c linux-2.6.29-rc3.owrt/drivers/block/ps3vram.c
49705 --- linux-2.6.29.owrt/drivers/block/ps3vram.c 2009-05-10 22:04:38.000000000 +0200
49706 +++ linux-2.6.29-rc3.owrt/drivers/block/ps3vram.c 1970-01-01 01:00:00.000000000 +0100
49707 @@ -1,865 +0,0 @@
49708 -/*
49709 - * ps3vram - Use extra PS3 video ram as MTD block device.
49710 - *
49711 - * Copyright 2009 Sony Corporation
49712 - *
49713 - * Based on the MTD ps3vram driver, which is
49714 - * Copyright (c) 2007-2008 Jim Paris <jim@jtan.com>
49715 - * Added support RSX DMA Vivien Chappelier <vivien.chappelier@free.fr>
49716 - */
49717 -
49718 -#include <linux/blkdev.h>
49719 -#include <linux/delay.h>
49720 -#include <linux/proc_fs.h>
49721 -#include <linux/seq_file.h>
49722 -
49723 -#include <asm/firmware.h>
49724 -#include <asm/lv1call.h>
49725 -#include <asm/ps3.h>
49726 -
49727 -
49728 -#define DEVICE_NAME "ps3vram"
49729 -
49730 -
49731 -#define XDR_BUF_SIZE (2 * 1024 * 1024) /* XDR buffer (must be 1MiB aligned) */
49732 -#define XDR_IOIF 0x0c000000
49733 -
49734 -#define FIFO_BASE XDR_IOIF
49735 -#define FIFO_SIZE (64 * 1024)
49736 -
49737 -#define DMA_PAGE_SIZE (4 * 1024)
49738 -
49739 -#define CACHE_PAGE_SIZE (256 * 1024)
49740 -#define CACHE_PAGE_COUNT ((XDR_BUF_SIZE - FIFO_SIZE) / CACHE_PAGE_SIZE)
49741 -
49742 -#define CACHE_OFFSET CACHE_PAGE_SIZE
49743 -#define FIFO_OFFSET 0
49744 -
49745 -#define CTRL_PUT 0x10
49746 -#define CTRL_GET 0x11
49747 -#define CTRL_TOP 0x15
49748 -
49749 -#define UPLOAD_SUBCH 1
49750 -#define DOWNLOAD_SUBCH 2
49751 -
49752 -#define NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN 0x0000030c
49753 -#define NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000104
49754 -
49755 -#define L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT 0x601
49756 -
49757 -#define CACHE_PAGE_PRESENT 1
49758 -#define CACHE_PAGE_DIRTY 2
49759 -
49760 -struct ps3vram_tag {
49761 - unsigned int address;
49762 - unsigned int flags;
49763 -};
49764 -
49765 -struct ps3vram_cache {
49766 - unsigned int page_count;
49767 - unsigned int page_size;
49768 - struct ps3vram_tag *tags;
49769 - unsigned int hit;
49770 - unsigned int miss;
49771 -};
49772 -
49773 -struct ps3vram_priv {
49774 - struct request_queue *queue;
49775 - struct gendisk *gendisk;
49776 -
49777 - u64 size;
49778 -
49779 - u64 memory_handle;
49780 - u64 context_handle;
49781 - u32 *ctrl;
49782 - u32 *reports;
49783 - u8 __iomem *ddr_base;
49784 - u8 *xdr_buf;
49785 -
49786 - u32 *fifo_base;
49787 - u32 *fifo_ptr;
49788 -
49789 - struct ps3vram_cache cache;
49790 -
49791 - /* Used to serialize cache/DMA operations */
49792 - struct mutex lock;
49793 -};
49794 -
49795 -
49796 -static int ps3vram_major;
49797 -
49798 -
49799 -static struct block_device_operations ps3vram_fops = {
49800 - .owner = THIS_MODULE,
49801 -};
49802 -
49803 -
49804 -#define DMA_NOTIFIER_HANDLE_BASE 0x66604200 /* first DMA notifier handle */
49805 -#define DMA_NOTIFIER_OFFSET_BASE 0x1000 /* first DMA notifier offset */
49806 -#define DMA_NOTIFIER_SIZE 0x40
49807 -#define NOTIFIER 7 /* notifier used for completion report */
49808 -
49809 -static char *size = "256M";
49810 -module_param(size, charp, 0);
49811 -MODULE_PARM_DESC(size, "memory size");
49812 -
49813 -static u32 *ps3vram_get_notifier(u32 *reports, int notifier)
49814 -{
49815 - return (void *)reports + DMA_NOTIFIER_OFFSET_BASE +
49816 - DMA_NOTIFIER_SIZE * notifier;
49817 -}
49818 -
49819 -static void ps3vram_notifier_reset(struct ps3_system_bus_device *dev)
49820 -{
49821 - struct ps3vram_priv *priv = dev->core.driver_data;
49822 - u32 *notify = ps3vram_get_notifier(priv->reports, NOTIFIER);
49823 - int i;
49824 -
49825 - for (i = 0; i < 4; i++)
49826 - notify[i] = 0xffffffff;
49827 -}
49828 -
49829 -static int ps3vram_notifier_wait(struct ps3_system_bus_device *dev,
49830 - unsigned int timeout_ms)
49831 -{
49832 - struct ps3vram_priv *priv = dev->core.driver_data;
49833 - u32 *notify = ps3vram_get_notifier(priv->reports, NOTIFIER);
49834 - unsigned long timeout = jiffies + msecs_to_jiffies(timeout_ms);
49835 -
49836 - do {
49837 - if (!notify[3])
49838 - return 0;
49839 - msleep(1);
49840 - } while (time_before(jiffies, timeout));
49841 -
49842 - return -ETIMEDOUT;
49843 -}
49844 -
49845 -static void ps3vram_init_ring(struct ps3_system_bus_device *dev)
49846 -{
49847 - struct ps3vram_priv *priv = dev->core.driver_data;
49848 -
49849 - priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET;
49850 - priv->ctrl[CTRL_GET] = FIFO_BASE + FIFO_OFFSET;
49851 -}
49852 -
49853 -static int ps3vram_wait_ring(struct ps3_system_bus_device *dev,
49854 - unsigned int timeout_ms)
49855 -{
49856 - struct ps3vram_priv *priv = dev->core.driver_data;
49857 - unsigned long timeout = jiffies + msecs_to_jiffies(timeout_ms);
49858 -
49859 - do {
49860 - if (priv->ctrl[CTRL_PUT] == priv->ctrl[CTRL_GET])
49861 - return 0;
49862 - msleep(1);
49863 - } while (time_before(jiffies, timeout));
49864 -
49865 - dev_warn(&dev->core, "FIFO timeout (%08x/%08x/%08x)\n",
49866 - priv->ctrl[CTRL_PUT], priv->ctrl[CTRL_GET],
49867 - priv->ctrl[CTRL_TOP]);
49868 -
49869 - return -ETIMEDOUT;
49870 -}
49871 -
49872 -static void ps3vram_out_ring(struct ps3vram_priv *priv, u32 data)
49873 -{
49874 - *(priv->fifo_ptr)++ = data;
49875 -}
49876 -
49877 -static void ps3vram_begin_ring(struct ps3vram_priv *priv, u32 chan, u32 tag,
49878 - u32 size)
49879 -{
49880 - ps3vram_out_ring(priv, (size << 18) | (chan << 13) | tag);
49881 -}
49882 -
49883 -static void ps3vram_rewind_ring(struct ps3_system_bus_device *dev)
49884 -{
49885 - struct ps3vram_priv *priv = dev->core.driver_data;
49886 - int status;
49887 -
49888 - ps3vram_out_ring(priv, 0x20000000 | (FIFO_BASE + FIFO_OFFSET));
49889 -
49890 - priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET;
49891 -
49892 - /* asking the HV for a blit will kick the FIFO */
49893 - status = lv1_gpu_context_attribute(priv->context_handle,
49894 - L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT, 0,
49895 - 0, 0, 0);
49896 - if (status)
49897 - dev_err(&dev->core,
49898 - "%s: lv1_gpu_context_attribute failed %d\n", __func__,
49899 - status);
49900 -
49901 - priv->fifo_ptr = priv->fifo_base;
49902 -}
49903 -
49904 -static void ps3vram_fire_ring(struct ps3_system_bus_device *dev)
49905 -{
49906 - struct ps3vram_priv *priv = dev->core.driver_data;
49907 - int status;
49908 -
49909 - mutex_lock(&ps3_gpu_mutex);
49910 -
49911 - priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET +
49912 - (priv->fifo_ptr - priv->fifo_base) * sizeof(u32);
49913 -
49914 - /* asking the HV for a blit will kick the FIFO */
49915 - status = lv1_gpu_context_attribute(priv->context_handle,
49916 - L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT, 0,
49917 - 0, 0, 0);
49918 - if (status)
49919 - dev_err(&dev->core,
49920 - "%s: lv1_gpu_context_attribute failed %d\n", __func__,
49921 - status);
49922 -
49923 - if ((priv->fifo_ptr - priv->fifo_base) * sizeof(u32) >
49924 - FIFO_SIZE - 1024) {
49925 - dev_dbg(&dev->core, "FIFO full, rewinding\n");
49926 - ps3vram_wait_ring(dev, 200);
49927 - ps3vram_rewind_ring(dev);
49928 - }
49929 -
49930 - mutex_unlock(&ps3_gpu_mutex);
49931 -}
49932 -
49933 -static void ps3vram_bind(struct ps3_system_bus_device *dev)
49934 -{
49935 - struct ps3vram_priv *priv = dev->core.driver_data;
49936 -
49937 - ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0, 1);
49938 - ps3vram_out_ring(priv, 0x31337303);
49939 - ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0x180, 3);
49940 - ps3vram_out_ring(priv, DMA_NOTIFIER_HANDLE_BASE + NOTIFIER);
49941 - ps3vram_out_ring(priv, 0xfeed0001); /* DMA system RAM instance */
49942 - ps3vram_out_ring(priv, 0xfeed0000); /* DMA video RAM instance */
49943 -
49944 - ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0, 1);
49945 - ps3vram_out_ring(priv, 0x3137c0de);
49946 - ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0x180, 3);
49947 - ps3vram_out_ring(priv, DMA_NOTIFIER_HANDLE_BASE + NOTIFIER);
49948 - ps3vram_out_ring(priv, 0xfeed0000); /* DMA video RAM instance */
49949 - ps3vram_out_ring(priv, 0xfeed0001); /* DMA system RAM instance */
49950 -
49951 - ps3vram_fire_ring(dev);
49952 -}
49953 -
49954 -static int ps3vram_upload(struct ps3_system_bus_device *dev,
49955 - unsigned int src_offset, unsigned int dst_offset,
49956 - int len, int count)
49957 -{
49958 - struct ps3vram_priv *priv = dev->core.driver_data;
49959 -
49960 - ps3vram_begin_ring(priv, UPLOAD_SUBCH,
49961 - NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
49962 - ps3vram_out_ring(priv, XDR_IOIF + src_offset);
49963 - ps3vram_out_ring(priv, dst_offset);
49964 - ps3vram_out_ring(priv, len);
49965 - ps3vram_out_ring(priv, len);
49966 - ps3vram_out_ring(priv, len);
49967 - ps3vram_out_ring(priv, count);
49968 - ps3vram_out_ring(priv, (1 << 8) | 1);
49969 - ps3vram_out_ring(priv, 0);
49970 -
49971 - ps3vram_notifier_reset(dev);
49972 - ps3vram_begin_ring(priv, UPLOAD_SUBCH,
49973 - NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
49974 - ps3vram_out_ring(priv, 0);
49975 - ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0x100, 1);
49976 - ps3vram_out_ring(priv, 0);
49977 - ps3vram_fire_ring(dev);
49978 - if (ps3vram_notifier_wait(dev, 200) < 0) {
49979 - dev_warn(&dev->core, "%s: Notifier timeout\n", __func__);
49980 - return -1;
49981 - }
49982 -
49983 - return 0;
49984 -}
49985 -
49986 -static int ps3vram_download(struct ps3_system_bus_device *dev,
49987 - unsigned int src_offset, unsigned int dst_offset,
49988 - int len, int count)
49989 -{
49990 - struct ps3vram_priv *priv = dev->core.driver_data;
49991 -
49992 - ps3vram_begin_ring(priv, DOWNLOAD_SUBCH,
49993 - NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
49994 - ps3vram_out_ring(priv, src_offset);
49995 - ps3vram_out_ring(priv, XDR_IOIF + dst_offset);
49996 - ps3vram_out_ring(priv, len);
49997 - ps3vram_out_ring(priv, len);
49998 - ps3vram_out_ring(priv, len);
49999 - ps3vram_out_ring(priv, count);
50000 - ps3vram_out_ring(priv, (1 << 8) | 1);
50001 - ps3vram_out_ring(priv, 0);
50002 -
50003 - ps3vram_notifier_reset(dev);
50004 - ps3vram_begin_ring(priv, DOWNLOAD_SUBCH,
50005 - NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
50006 - ps3vram_out_ring(priv, 0);
50007 - ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0x100, 1);
50008 - ps3vram_out_ring(priv, 0);
50009 - ps3vram_fire_ring(dev);
50010 - if (ps3vram_notifier_wait(dev, 200) < 0) {
50011 - dev_warn(&dev->core, "%s: Notifier timeout\n", __func__);
50012 - return -1;
50013 - }
50014 -
50015 - return 0;
50016 -}
50017 -
50018 -static void ps3vram_cache_evict(struct ps3_system_bus_device *dev, int entry)
50019 -{
50020 - struct ps3vram_priv *priv = dev->core.driver_data;
50021 - struct ps3vram_cache *cache = &priv->cache;
50022 -
50023 - if (!(cache->tags[entry].flags & CACHE_PAGE_DIRTY))
50024 - return;
50025 -
50026 - dev_dbg(&dev->core, "Flushing %d: 0x%08x\n", entry,
50027 - cache->tags[entry].address);
50028 - if (ps3vram_upload(dev, CACHE_OFFSET + entry * cache->page_size,
50029 - cache->tags[entry].address, DMA_PAGE_SIZE,
50030 - cache->page_size / DMA_PAGE_SIZE) < 0) {
50031 - dev_err(&dev->core,
50032 - "Failed to upload from 0x%x to " "0x%x size 0x%x\n",
50033 - entry * cache->page_size, cache->tags[entry].address,
50034 - cache->page_size);
50035 - }
50036 - cache->tags[entry].flags &= ~CACHE_PAGE_DIRTY;
50037 -}
50038 -
50039 -static void ps3vram_cache_load(struct ps3_system_bus_device *dev, int entry,
50040 - unsigned int address)
50041 -{
50042 - struct ps3vram_priv *priv = dev->core.driver_data;
50043 - struct ps3vram_cache *cache = &priv->cache;
50044 -
50045 - dev_dbg(&dev->core, "Fetching %d: 0x%08x\n", entry, address);
50046 - if (ps3vram_download(dev, address,
50047 - CACHE_OFFSET + entry * cache->page_size,
50048 - DMA_PAGE_SIZE,
50049 - cache->page_size / DMA_PAGE_SIZE) < 0) {
50050 - dev_err(&dev->core,
50051 - "Failed to download from 0x%x to 0x%x size 0x%x\n",
50052 - address, entry * cache->page_size, cache->page_size);
50053 - }
50054 -
50055 - cache->tags[entry].address = address;
50056 - cache->tags[entry].flags |= CACHE_PAGE_PRESENT;
50057 -}
50058 -
50059 -
50060 -static void ps3vram_cache_flush(struct ps3_system_bus_device *dev)
50061 -{
50062 - struct ps3vram_priv *priv = dev->core.driver_data;
50063 - struct ps3vram_cache *cache = &priv->cache;
50064 - int i;
50065 -
50066 - dev_dbg(&dev->core, "FLUSH\n");
50067 - for (i = 0; i < cache->page_count; i++) {
50068 - ps3vram_cache_evict(dev, i);
50069 - cache->tags[i].flags = 0;
50070 - }
50071 -}
50072 -
50073 -static unsigned int ps3vram_cache_match(struct ps3_system_bus_device *dev,
50074 - loff_t address)
50075 -{
50076 - struct ps3vram_priv *priv = dev->core.driver_data;
50077 - struct ps3vram_cache *cache = &priv->cache;
50078 - unsigned int base;
50079 - unsigned int offset;
50080 - int i;
50081 - static int counter;
50082 -
50083 - offset = (unsigned int) (address & (cache->page_size - 1));
50084 - base = (unsigned int) (address - offset);
50085 -
50086 - /* fully associative check */
50087 - for (i = 0; i < cache->page_count; i++) {
50088 - if ((cache->tags[i].flags & CACHE_PAGE_PRESENT) &&
50089 - cache->tags[i].address == base) {
50090 - cache->hit++;
50091 - dev_dbg(&dev->core, "Found entry %d: 0x%08x\n", i,
50092 - cache->tags[i].address);
50093 - return i;
50094 - }
50095 - }
50096 -
50097 - /* choose a random entry */
50098 - i = (jiffies + (counter++)) % cache->page_count;
50099 - dev_dbg(&dev->core, "Using entry %d\n", i);
50100 -
50101 - ps3vram_cache_evict(dev, i);
50102 - ps3vram_cache_load(dev, i, base);
50103 -
50104 - cache->miss++;
50105 - return i;
50106 -}
50107 -
50108 -static int ps3vram_cache_init(struct ps3_system_bus_device *dev)
50109 -{
50110 - struct ps3vram_priv *priv = dev->core.driver_data;
50111 -
50112 - priv->cache.page_count = CACHE_PAGE_COUNT;
50113 - priv->cache.page_size = CACHE_PAGE_SIZE;
50114 - priv->cache.tags = kzalloc(sizeof(struct ps3vram_tag) *
50115 - CACHE_PAGE_COUNT, GFP_KERNEL);
50116 - if (priv->cache.tags == NULL) {
50117 - dev_err(&dev->core, "Could not allocate cache tags\n");
50118 - return -ENOMEM;
50119 - }
50120 -
50121 - dev_info(&dev->core, "Created ram cache: %d entries, %d KiB each\n",
50122 - CACHE_PAGE_COUNT, CACHE_PAGE_SIZE / 1024);
50123 -
50124 - return 0;
50125 -}
50126 -
50127 -static void ps3vram_cache_cleanup(struct ps3_system_bus_device *dev)
50128 -{
50129 - struct ps3vram_priv *priv = dev->core.driver_data;
50130 -
50131 - ps3vram_cache_flush(dev);
50132 - kfree(priv->cache.tags);
50133 -}
50134 -
50135 -static int ps3vram_read(struct ps3_system_bus_device *dev, loff_t from,
50136 - size_t len, size_t *retlen, u_char *buf)
50137 -{
50138 - struct ps3vram_priv *priv = dev->core.driver_data;
50139 - unsigned int cached, count;
50140 -
50141 - dev_dbg(&dev->core, "%s: from=0x%08x len=0x%zx\n", __func__,
50142 - (unsigned int)from, len);
50143 -
50144 - if (from >= priv->size)
50145 - return -EIO;
50146 -
50147 - if (len > priv->size - from)
50148 - len = priv->size - from;
50149 -
50150 - /* Copy from vram to buf */
50151 - count = len;
50152 - while (count) {
50153 - unsigned int offset, avail;
50154 - unsigned int entry;
50155 -
50156 - offset = (unsigned int) (from & (priv->cache.page_size - 1));
50157 - avail = priv->cache.page_size - offset;
50158 -
50159 - mutex_lock(&priv->lock);
50160 -
50161 - entry = ps3vram_cache_match(dev, from);
50162 - cached = CACHE_OFFSET + entry * priv->cache.page_size + offset;
50163 -
50164 - dev_dbg(&dev->core, "%s: from=%08x cached=%08x offset=%08x "
50165 - "avail=%08x count=%08x\n", __func__,
50166 - (unsigned int)from, cached, offset, avail, count);
50167 -
50168 - if (avail > count)
50169 - avail = count;
50170 - memcpy(buf, priv->xdr_buf + cached, avail);
50171 -
50172 - mutex_unlock(&priv->lock);
50173 -
50174 - buf += avail;
50175 - count -= avail;
50176 - from += avail;
50177 - }
50178 -
50179 - *retlen = len;
50180 - return 0;
50181 -}
50182 -
50183 -static int ps3vram_write(struct ps3_system_bus_device *dev, loff_t to,
50184 - size_t len, size_t *retlen, const u_char *buf)
50185 -{
50186 - struct ps3vram_priv *priv = dev->core.driver_data;
50187 - unsigned int cached, count;
50188 -
50189 - if (to >= priv->size)
50190 - return -EIO;
50191 -
50192 - if (len > priv->size - to)
50193 - len = priv->size - to;
50194 -
50195 - /* Copy from buf to vram */
50196 - count = len;
50197 - while (count) {
50198 - unsigned int offset, avail;
50199 - unsigned int entry;
50200 -
50201 - offset = (unsigned int) (to & (priv->cache.page_size - 1));
50202 - avail = priv->cache.page_size - offset;
50203 -
50204 - mutex_lock(&priv->lock);
50205 -
50206 - entry = ps3vram_cache_match(dev, to);
50207 - cached = CACHE_OFFSET + entry * priv->cache.page_size + offset;
50208 -
50209 - dev_dbg(&dev->core, "%s: to=%08x cached=%08x offset=%08x "
50210 - "avail=%08x count=%08x\n", __func__, (unsigned int)to,
50211 - cached, offset, avail, count);
50212 -
50213 - if (avail > count)
50214 - avail = count;
50215 - memcpy(priv->xdr_buf + cached, buf, avail);
50216 -
50217 - priv->cache.tags[entry].flags |= CACHE_PAGE_DIRTY;
50218 -
50219 - mutex_unlock(&priv->lock);
50220 -
50221 - buf += avail;
50222 - count -= avail;
50223 - to += avail;
50224 - }
50225 -
50226 - *retlen = len;
50227 - return 0;
50228 -}
50229 -
50230 -static int ps3vram_proc_show(struct seq_file *m, void *v)
50231 -{
50232 - struct ps3vram_priv *priv = m->private;
50233 -
50234 - seq_printf(m, "hit:%u\nmiss:%u\n", priv->cache.hit, priv->cache.miss);
50235 - return 0;
50236 -}
50237 -
50238 -static int ps3vram_proc_open(struct inode *inode, struct file *file)
50239 -{
50240 - return single_open(file, ps3vram_proc_show, PDE(inode)->data);
50241 -}
50242 -
50243 -static const struct file_operations ps3vram_proc_fops = {
50244 - .owner = THIS_MODULE,
50245 - .open = ps3vram_proc_open,
50246 - .read = seq_read,
50247 - .llseek = seq_lseek,
50248 - .release = single_release,
50249 -};
50250 -
50251 -static void __devinit ps3vram_proc_init(struct ps3_system_bus_device *dev)
50252 -{
50253 - struct ps3vram_priv *priv = dev->core.driver_data;
50254 - struct proc_dir_entry *pde;
50255 -
50256 - pde = proc_create(DEVICE_NAME, 0444, NULL, &ps3vram_proc_fops);
50257 - if (!pde) {
50258 - dev_warn(&dev->core, "failed to create /proc entry\n");
50259 - return;
50260 - }
50261 -
50262 - pde->owner = THIS_MODULE;
50263 - pde->data = priv;
50264 -}
50265 -
50266 -static int ps3vram_make_request(struct request_queue *q, struct bio *bio)
50267 -{
50268 - struct ps3_system_bus_device *dev = q->queuedata;
50269 - int write = bio_data_dir(bio) == WRITE;
50270 - const char *op = write ? "write" : "read";
50271 - loff_t offset = bio->bi_sector << 9;
50272 - int error = 0;
50273 - struct bio_vec *bvec;
50274 - unsigned int i;
50275 -
50276 - dev_dbg(&dev->core, "%s\n", __func__);
50277 -
50278 - bio_for_each_segment(bvec, bio, i) {
50279 - /* PS3 is ppc64, so we don't handle highmem */
50280 - char *ptr = page_address(bvec->bv_page) + bvec->bv_offset;
50281 - size_t len = bvec->bv_len, retlen;
50282 -
50283 - dev_dbg(&dev->core, " %s %zu bytes at offset %llu\n", op,
50284 - len, offset);
50285 - if (write)
50286 - error = ps3vram_write(dev, offset, len, &retlen, ptr);
50287 - else
50288 - error = ps3vram_read(dev, offset, len, &retlen, ptr);
50289 -
50290 - if (error) {
50291 - dev_err(&dev->core, "%s failed\n", op);
50292 - goto out;
50293 - }
50294 -
50295 - if (retlen != len) {
50296 - dev_err(&dev->core, "Short %s\n", op);
50297 - goto out;
50298 - }
50299 -
50300 - offset += len;
50301 - }
50302 -
50303 - dev_dbg(&dev->core, "%s completed\n", op);
50304 -
50305 -out:
50306 - bio_endio(bio, error);
50307 - return 0;
50308 -}
50309 -
50310 -static int __devinit ps3vram_probe(struct ps3_system_bus_device *dev)
50311 -{
50312 - struct ps3vram_priv *priv;
50313 - int error, status;
50314 - struct request_queue *queue;
50315 - struct gendisk *gendisk;
50316 - u64 ddr_lpar, ctrl_lpar, info_lpar, reports_lpar, ddr_size,
50317 - reports_size;
50318 - char *rest;
50319 -
50320 - priv = kzalloc(sizeof(*priv), GFP_KERNEL);
50321 - if (!priv) {
50322 - error = -ENOMEM;
50323 - goto fail;
50324 - }
50325 -
50326 - mutex_init(&priv->lock);
50327 - dev->core.driver_data = priv;
50328 -
50329 - priv = dev->core.driver_data;
50330 -
50331 - /* Allocate XDR buffer (1MiB aligned) */
50332 - priv->xdr_buf = (void *)__get_free_pages(GFP_KERNEL,
50333 - get_order(XDR_BUF_SIZE));
50334 - if (priv->xdr_buf == NULL) {
50335 - dev_err(&dev->core, "Could not allocate XDR buffer\n");
50336 - error = -ENOMEM;
50337 - goto fail_free_priv;
50338 - }
50339 -
50340 - /* Put FIFO at begginning of XDR buffer */
50341 - priv->fifo_base = (u32 *) (priv->xdr_buf + FIFO_OFFSET);
50342 - priv->fifo_ptr = priv->fifo_base;
50343 -
50344 - /* XXX: Need to open GPU, in case ps3fb or snd_ps3 aren't loaded */
50345 - if (ps3_open_hv_device(dev)) {
50346 - dev_err(&dev->core, "ps3_open_hv_device failed\n");
50347 - error = -EAGAIN;
50348 - goto out_close_gpu;
50349 - }
50350 -
50351 - /* Request memory */
50352 - status = -1;
50353 - ddr_size = ALIGN(memparse(size, &rest), 1024*1024);
50354 - if (!ddr_size) {
50355 - dev_err(&dev->core, "Specified size is too small\n");
50356 - error = -EINVAL;
50357 - goto out_close_gpu;
50358 - }
50359 -
50360 - while (ddr_size > 0) {
50361 - status = lv1_gpu_memory_allocate(ddr_size, 0, 0, 0, 0,
50362 - &priv->memory_handle,
50363 - &ddr_lpar);
50364 - if (!status)
50365 - break;
50366 - ddr_size -= 1024*1024;
50367 - }
50368 - if (status) {
50369 - dev_err(&dev->core, "lv1_gpu_memory_allocate failed %d\n",
50370 - status);
50371 - error = -ENOMEM;
50372 - goto out_free_xdr_buf;
50373 - }
50374 -
50375 - /* Request context */
50376 - status = lv1_gpu_context_allocate(priv->memory_handle, 0,
50377 - &priv->context_handle, &ctrl_lpar,
50378 - &info_lpar, &reports_lpar,
50379 - &reports_size);
50380 - if (status) {
50381 - dev_err(&dev->core, "lv1_gpu_context_allocate failed %d\n",
50382 - status);
50383 - error = -ENOMEM;
50384 - goto out_free_memory;
50385 - }
50386 -
50387 - /* Map XDR buffer to RSX */
50388 - status = lv1_gpu_context_iomap(priv->context_handle, XDR_IOIF,
50389 - ps3_mm_phys_to_lpar(__pa(priv->xdr_buf)),
50390 - XDR_BUF_SIZE, 0);
50391 - if (status) {
50392 - dev_err(&dev->core, "lv1_gpu_context_iomap failed %d\n",
50393 - status);
50394 - error = -ENOMEM;
50395 - goto out_free_context;
50396 - }
50397 -
50398 - priv->ddr_base = ioremap_flags(ddr_lpar, ddr_size, _PAGE_NO_CACHE);
50399 -
50400 - if (!priv->ddr_base) {
50401 - dev_err(&dev->core, "ioremap DDR failed\n");
50402 - error = -ENOMEM;
50403 - goto out_free_context;
50404 - }
50405 -
50406 - priv->ctrl = ioremap(ctrl_lpar, 64 * 1024);
50407 - if (!priv->ctrl) {
50408 - dev_err(&dev->core, "ioremap CTRL failed\n");
50409 - error = -ENOMEM;
50410 - goto out_unmap_vram;
50411 - }
50412 -
50413 - priv->reports = ioremap(reports_lpar, reports_size);
50414 - if (!priv->reports) {
50415 - dev_err(&dev->core, "ioremap REPORTS failed\n");
50416 - error = -ENOMEM;
50417 - goto out_unmap_ctrl;
50418 - }
50419 -
50420 - mutex_lock(&ps3_gpu_mutex);
50421 - ps3vram_init_ring(dev);
50422 - mutex_unlock(&ps3_gpu_mutex);
50423 -
50424 - priv->size = ddr_size;
50425 -
50426 - ps3vram_bind(dev);
50427 -
50428 - mutex_lock(&ps3_gpu_mutex);
50429 - error = ps3vram_wait_ring(dev, 100);
50430 - mutex_unlock(&ps3_gpu_mutex);
50431 - if (error < 0) {
50432 - dev_err(&dev->core, "Failed to initialize channels\n");
50433 - error = -ETIMEDOUT;
50434 - goto out_unmap_reports;
50435 - }
50436 -
50437 - ps3vram_cache_init(dev);
50438 - ps3vram_proc_init(dev);
50439 -
50440 - queue = blk_alloc_queue(GFP_KERNEL);
50441 - if (!queue) {
50442 - dev_err(&dev->core, "blk_alloc_queue failed\n");
50443 - error = -ENOMEM;
50444 - goto out_cache_cleanup;
50445 - }
50446 -
50447 - priv->queue = queue;
50448 - queue->queuedata = dev;
50449 - blk_queue_make_request(queue, ps3vram_make_request);
50450 - blk_queue_max_phys_segments(queue, MAX_PHYS_SEGMENTS);
50451 - blk_queue_max_hw_segments(queue, MAX_HW_SEGMENTS);
50452 - blk_queue_max_segment_size(queue, MAX_SEGMENT_SIZE);
50453 - blk_queue_max_sectors(queue, SAFE_MAX_SECTORS);
50454 -
50455 - gendisk = alloc_disk(1);
50456 - if (!gendisk) {
50457 - dev_err(&dev->core, "alloc_disk failed\n");
50458 - error = -ENOMEM;
50459 - goto fail_cleanup_queue;
50460 - }
50461 -
50462 - priv->gendisk = gendisk;
50463 - gendisk->major = ps3vram_major;
50464 - gendisk->first_minor = 0;
50465 - gendisk->fops = &ps3vram_fops;
50466 - gendisk->queue = queue;
50467 - gendisk->private_data = dev;
50468 - gendisk->driverfs_dev = &dev->core;
50469 - strlcpy(gendisk->disk_name, DEVICE_NAME, sizeof(gendisk->disk_name));
50470 - set_capacity(gendisk, priv->size >> 9);
50471 -
50472 - dev_info(&dev->core, "%s: Using %lu MiB of GPU memory\n",
50473 - gendisk->disk_name, get_capacity(gendisk) >> 11);
50474 -
50475 - add_disk(gendisk);
50476 - return 0;
50477 -
50478 -fail_cleanup_queue:
50479 - blk_cleanup_queue(queue);
50480 -out_cache_cleanup:
50481 - remove_proc_entry(DEVICE_NAME, NULL);
50482 - ps3vram_cache_cleanup(dev);
50483 -out_unmap_reports:
50484 - iounmap(priv->reports);
50485 -out_unmap_ctrl:
50486 - iounmap(priv->ctrl);
50487 -out_unmap_vram:
50488 - iounmap(priv->ddr_base);
50489 -out_free_context:
50490 - lv1_gpu_context_free(priv->context_handle);
50491 -out_free_memory:
50492 - lv1_gpu_memory_free(priv->memory_handle);
50493 -out_close_gpu:
50494 - ps3_close_hv_device(dev);
50495 -out_free_xdr_buf:
50496 - free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
50497 -fail_free_priv:
50498 - kfree(priv);
50499 - dev->core.driver_data = NULL;
50500 -fail:
50501 - return error;
50502 -}
50503 -
50504 -static int ps3vram_remove(struct ps3_system_bus_device *dev)
50505 -{
50506 - struct ps3vram_priv *priv = dev->core.driver_data;
50507 -
50508 - del_gendisk(priv->gendisk);
50509 - put_disk(priv->gendisk);
50510 - blk_cleanup_queue(priv->queue);
50511 - remove_proc_entry(DEVICE_NAME, NULL);
50512 - ps3vram_cache_cleanup(dev);
50513 - iounmap(priv->reports);
50514 - iounmap(priv->ctrl);
50515 - iounmap(priv->ddr_base);
50516 - lv1_gpu_context_free(priv->context_handle);
50517 - lv1_gpu_memory_free(priv->memory_handle);
50518 - ps3_close_hv_device(dev);
50519 - free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
50520 - kfree(priv);
50521 - dev->core.driver_data = NULL;
50522 - return 0;
50523 -}
50524 -
50525 -static struct ps3_system_bus_driver ps3vram = {
50526 - .match_id = PS3_MATCH_ID_GPU,
50527 - .match_sub_id = PS3_MATCH_SUB_ID_GPU_RAMDISK,
50528 - .core.name = DEVICE_NAME,
50529 - .core.owner = THIS_MODULE,
50530 - .probe = ps3vram_probe,
50531 - .remove = ps3vram_remove,
50532 - .shutdown = ps3vram_remove,
50533 -};
50534 -
50535 -
50536 -static int __init ps3vram_init(void)
50537 -{
50538 - int error;
50539 -
50540 - if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
50541 - return -ENODEV;
50542 -
50543 - error = register_blkdev(0, DEVICE_NAME);
50544 - if (error <= 0) {
50545 - pr_err("%s: register_blkdev failed %d\n", DEVICE_NAME, error);
50546 - return error;
50547 - }
50548 - ps3vram_major = error;
50549 -
50550 - pr_info("%s: registered block device major %d\n", DEVICE_NAME,
50551 - ps3vram_major);
50552 -
50553 - error = ps3_system_bus_driver_register(&ps3vram);
50554 - if (error)
50555 - unregister_blkdev(ps3vram_major, DEVICE_NAME);
50556 -
50557 - return error;
50558 -}
50559 -
50560 -static void __exit ps3vram_exit(void)
50561 -{
50562 - ps3_system_bus_driver_unregister(&ps3vram);
50563 - unregister_blkdev(ps3vram_major, DEVICE_NAME);
50564 -}
50565 -
50566 -module_init(ps3vram_init);
50567 -module_exit(ps3vram_exit);
50568 -
50569 -MODULE_LICENSE("GPL");
50570 -MODULE_DESCRIPTION("PS3 Video RAM Storage Driver");
50571 -MODULE_AUTHOR("Sony Corporation");
50572 -MODULE_ALIAS(PS3_MODULE_ALIAS_GPU_RAMDISK);
50573 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/xen-blkfront.c linux-2.6.29-rc3.owrt/drivers/block/xen-blkfront.c
50574 --- linux-2.6.29.owrt/drivers/block/xen-blkfront.c 2009-05-10 22:04:38.000000000 +0200
50575 +++ linux-2.6.29-rc3.owrt/drivers/block/xen-blkfront.c 2009-05-10 23:48:28.000000000 +0200
50576 @@ -40,7 +40,6 @@
50577 #include <linux/hdreg.h>
50578 #include <linux/cdrom.h>
50579 #include <linux/module.h>
50580 -#include <linux/scatterlist.h>
50581
50582 #include <xen/xenbus.h>
50583 #include <xen/grant_table.h>
50584 @@ -83,7 +82,6 @@
50585 enum blkif_state connected;
50586 int ring_ref;
50587 struct blkif_front_ring ring;
50588 - struct scatterlist sg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
50589 unsigned int evtchn, irq;
50590 struct request_queue *rq;
50591 struct work_struct work;
50592 @@ -206,11 +204,12 @@
50593 struct blkfront_info *info = req->rq_disk->private_data;
50594 unsigned long buffer_mfn;
50595 struct blkif_request *ring_req;
50596 + struct req_iterator iter;
50597 + struct bio_vec *bvec;
50598 unsigned long id;
50599 unsigned int fsect, lsect;
50600 - int i, ref;
50601 + int ref;
50602 grant_ref_t gref_head;
50603 - struct scatterlist *sg;
50604
50605 if (unlikely(info->connected != BLKIF_STATE_CONNECTED))
50606 return 1;
50607 @@ -239,13 +238,12 @@
50608 if (blk_barrier_rq(req))
50609 ring_req->operation = BLKIF_OP_WRITE_BARRIER;
50610
50611 - ring_req->nr_segments = blk_rq_map_sg(req->q, req, info->sg);
50612 - BUG_ON(ring_req->nr_segments > BLKIF_MAX_SEGMENTS_PER_REQUEST);
50613 -
50614 - for_each_sg(info->sg, sg, ring_req->nr_segments, i) {
50615 - buffer_mfn = pfn_to_mfn(page_to_pfn(sg_page(sg)));
50616 - fsect = sg->offset >> 9;
50617 - lsect = fsect + (sg->length >> 9) - 1;
50618 + ring_req->nr_segments = 0;
50619 + rq_for_each_segment(bvec, req, iter) {
50620 + BUG_ON(ring_req->nr_segments == BLKIF_MAX_SEGMENTS_PER_REQUEST);
50621 + buffer_mfn = pfn_to_mfn(page_to_pfn(bvec->bv_page));
50622 + fsect = bvec->bv_offset >> 9;
50623 + lsect = fsect + (bvec->bv_len >> 9) - 1;
50624 /* install a grant reference. */
50625 ref = gnttab_claim_grant_reference(&gref_head);
50626 BUG_ON(ref == -ENOSPC);
50627 @@ -256,12 +254,16 @@
50628 buffer_mfn,
50629 rq_data_dir(req) );
50630
50631 - info->shadow[id].frame[i] = mfn_to_pfn(buffer_mfn);
50632 - ring_req->seg[i] =
50633 + info->shadow[id].frame[ring_req->nr_segments] =
50634 + mfn_to_pfn(buffer_mfn);
50635 +
50636 + ring_req->seg[ring_req->nr_segments] =
50637 (struct blkif_request_segment) {
50638 .gref = ref,
50639 .first_sect = fsect,
50640 .last_sect = lsect };
50641 +
50642 + ring_req->nr_segments++;
50643 }
50644
50645 info->ring.req_prod_pvt++;
50646 @@ -620,8 +622,6 @@
50647 SHARED_RING_INIT(sring);
50648 FRONT_RING_INIT(&info->ring, sring, PAGE_SIZE);
50649
50650 - sg_init_table(info->sg, BLKIF_MAX_SEGMENTS_PER_REQUEST);
50651 -
50652 err = xenbus_grant_ring(dev, virt_to_mfn(info->ring.sring));
50653 if (err < 0) {
50654 free_page((unsigned long)sring);
50655 @@ -977,8 +977,6 @@
50656 break;
50657
50658 case XenbusStateClosing:
50659 - if (info->gd == NULL)
50660 - xenbus_dev_fatal(dev, -ENODEV, "gd is NULL");
50661 bd = bdget_disk(info->gd, 0);
50662 if (bd == NULL)
50663 xenbus_dev_fatal(dev, -ENODEV, "bdget failed");
50664 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/block/xsysace.c linux-2.6.29-rc3.owrt/drivers/block/xsysace.c
50665 --- linux-2.6.29.owrt/drivers/block/xsysace.c 2009-05-10 22:04:38.000000000 +0200
50666 +++ linux-2.6.29-rc3.owrt/drivers/block/xsysace.c 2009-05-10 23:48:28.000000000 +0200
50667 @@ -489,28 +489,6 @@
50668 ace->fsm_state, ace->id_req_count);
50669 #endif
50670
50671 - /* Verify that there is actually a CF in the slot. If not, then
50672 - * bail out back to the idle state and wake up all the waiters */
50673 - status = ace_in32(ace, ACE_STATUS);
50674 - if ((status & ACE_STATUS_CFDETECT) == 0) {
50675 - ace->fsm_state = ACE_FSM_STATE_IDLE;
50676 - ace->media_change = 1;
50677 - set_capacity(ace->gd, 0);
50678 - dev_info(ace->dev, "No CF in slot\n");
50679 -
50680 - /* Drop all pending requests */
50681 - while ((req = elv_next_request(ace->queue)) != NULL)
50682 - end_request(req, 0);
50683 -
50684 - /* Drop back to IDLE state and notify waiters */
50685 - ace->fsm_state = ACE_FSM_STATE_IDLE;
50686 - ace->id_result = -EIO;
50687 - while (ace->id_req_count) {
50688 - complete(&ace->id_completion);
50689 - ace->id_req_count--;
50690 - }
50691 - }
50692 -
50693 switch (ace->fsm_state) {
50694 case ACE_FSM_STATE_IDLE:
50695 /* See if there is anything to do */
50696 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/agp/amd64-agp.c linux-2.6.29-rc3.owrt/drivers/char/agp/amd64-agp.c
50697 --- linux-2.6.29.owrt/drivers/char/agp/amd64-agp.c 2009-05-10 22:04:38.000000000 +0200
50698 +++ linux-2.6.29-rc3.owrt/drivers/char/agp/amd64-agp.c 2009-05-10 23:48:28.000000000 +0200
50699 @@ -271,15 +271,15 @@
50700 nb_order = (nb_order >> 1) & 7;
50701 pci_read_config_dword(nb, AMD64_GARTAPERTUREBASE, &nb_base);
50702 nb_aper = nb_base << 25;
50703 + if (agp_aperture_valid(nb_aper, (32*1024*1024)<<nb_order)) {
50704 + return 0;
50705 + }
50706
50707 /* Northbridge seems to contain crap. Try the AGP bridge. */
50708
50709 pci_read_config_word(agp, cap+0x14, &apsize);
50710 - if (apsize == 0xffff) {
50711 - if (agp_aperture_valid(nb_aper, (32*1024*1024)<<nb_order))
50712 - return 0;
50713 + if (apsize == 0xffff)
50714 return -1;
50715 - }
50716
50717 apsize &= 0xfff;
50718 /* Some BIOS use weird encodings not in the AGPv3 table. */
50719 @@ -301,11 +301,6 @@
50720 order = nb_order;
50721 }
50722
50723 - if (nb_order >= order) {
50724 - if (agp_aperture_valid(nb_aper, (32*1024*1024)<<nb_order))
50725 - return 0;
50726 - }
50727 -
50728 dev_info(&agp->dev, "aperture from AGP @ %Lx size %u MB\n",
50729 aper, 32 << order);
50730 if (order < 0 || !agp_aperture_valid(aper, (32*1024*1024)<<order))
50731 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/agp/intel-agp.c linux-2.6.29-rc3.owrt/drivers/char/agp/intel-agp.c
50732 --- linux-2.6.29.owrt/drivers/char/agp/intel-agp.c 2009-05-10 22:04:38.000000000 +0200
50733 +++ linux-2.6.29-rc3.owrt/drivers/char/agp/intel-agp.c 2009-05-10 23:48:28.000000000 +0200
50734 @@ -633,15 +633,13 @@
50735 break;
50736 }
50737 }
50738 - if (gtt_entries > 0) {
50739 + if (gtt_entries > 0)
50740 dev_info(&agp_bridge->dev->dev, "detected %dK %s memory\n",
50741 gtt_entries / KB(1), local ? "local" : "stolen");
50742 - gtt_entries /= KB(4);
50743 - } else {
50744 + else
50745 dev_info(&agp_bridge->dev->dev,
50746 "no pre-allocated video memory detected\n");
50747 - gtt_entries = 0;
50748 - }
50749 + gtt_entries /= KB(4);
50750
50751 intel_private.gtt_entries = gtt_entries;
50752 }
50753 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/agp/parisc-agp.c linux-2.6.29-rc3.owrt/drivers/char/agp/parisc-agp.c
50754 --- linux-2.6.29.owrt/drivers/char/agp/parisc-agp.c 2009-05-10 22:04:38.000000000 +0200
50755 +++ linux-2.6.29-rc3.owrt/drivers/char/agp/parisc-agp.c 2009-05-10 23:48:28.000000000 +0200
50756 @@ -359,16 +359,9 @@
50757 return error;
50758 }
50759
50760 -static int
50761 -find_quicksilver(struct device *dev, void *data)
50762 -{
50763 - struct parisc_device **lba = data;
50764 - struct parisc_device *padev = to_parisc_device(dev);
50765 -
50766 - if (IS_QUICKSILVER(padev))
50767 - *lba = padev;
50768 -
50769 - return 0;
50770 +static struct device *next_device(struct klist_iter *i) {
50771 + struct klist_node * n = klist_next(i);
50772 + return n ? container_of(n, struct device, knode_parent) : NULL;
50773 }
50774
50775 static int
50776 @@ -379,6 +372,8 @@
50777 int err = -1;
50778 struct parisc_device *sba = NULL, *lba = NULL;
50779 struct lba_device *lbadev = NULL;
50780 + struct device *dev = NULL;
50781 + struct klist_iter i;
50782
50783 if (!sba_list)
50784 goto out;
50785 @@ -391,7 +386,13 @@
50786 }
50787
50788 /* Now search our Pluto for our precious AGP device... */
50789 - device_for_each_child(&sba->dev, &lba, find_quicksilver);
50790 + klist_iter_init(&sba->dev.klist_children, &i);
50791 + while ((dev = next_device(&i))) {
50792 + struct parisc_device *padev = to_parisc_device(dev);
50793 + if (IS_QUICKSILVER(padev))
50794 + lba = padev;
50795 + }
50796 + klist_iter_exit(&i);
50797
50798 if (!lba) {
50799 printk(KERN_INFO DRVPFX "No AGP devices found.\n");
50800 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/hvcs.c linux-2.6.29-rc3.owrt/drivers/char/hvcs.c
50801 --- linux-2.6.29.owrt/drivers/char/hvcs.c 2009-05-10 22:04:38.000000000 +0200
50802 +++ linux-2.6.29-rc3.owrt/drivers/char/hvcs.c 2009-05-10 23:48:28.000000000 +0200
50803 @@ -1139,6 +1139,15 @@
50804 hvcsd->tty = tty;
50805 tty->driver_data = hvcsd;
50806
50807 + /*
50808 + * Set this driver to low latency so that we actually have a chance at
50809 + * catching a throttled TTY after we flip_buffer_push. Otherwise the
50810 + * flush_to_async may not execute until after the kernel_thread has
50811 + * yielded and resumed the next flip_buffer_push resulting in data
50812 + * loss.
50813 + */
50814 + tty->low_latency = 1;
50815 +
50816 memset(&hvcsd->buffer[0], 0x00, HVCS_BUFF_LEN);
50817
50818 /*
50819 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/hvsi.c linux-2.6.29-rc3.owrt/drivers/char/hvsi.c
50820 --- linux-2.6.29.owrt/drivers/char/hvsi.c 2009-05-10 22:04:38.000000000 +0200
50821 +++ linux-2.6.29-rc3.owrt/drivers/char/hvsi.c 2009-05-10 23:48:28.000000000 +0200
50822 @@ -810,6 +810,7 @@
50823 hp = &hvsi_ports[line];
50824
50825 tty->driver_data = hp;
50826 + tty->low_latency = 1; /* avoid throttle/tty_flip_buffer_push race */
50827
50828 mb();
50829 if (hp->state == HVSI_FSP_DIED)
50830 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/Kconfig linux-2.6.29-rc3.owrt/drivers/char/Kconfig
50831 --- linux-2.6.29.owrt/drivers/char/Kconfig 2009-05-10 22:04:38.000000000 +0200
50832 +++ linux-2.6.29-rc3.owrt/drivers/char/Kconfig 2009-05-10 23:48:28.000000000 +0200
50833 @@ -761,7 +761,7 @@
50834
50835 config NVRAM
50836 tristate "/dev/nvram support"
50837 - depends on ATARI || X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM
50838 + depends on ATARI || X86 || ARM || GENERIC_NVRAM
50839 ---help---
50840 If you say Y here and create a character special file /dev/nvram
50841 with major number 10 and minor number 144 using mknod ("man mknod"),
50842 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/scc.h linux-2.6.29-rc3.owrt/drivers/char/scc.h
50843 --- linux-2.6.29.owrt/drivers/char/scc.h 2009-05-10 22:04:38.000000000 +0200
50844 +++ linux-2.6.29-rc3.owrt/drivers/char/scc.h 2009-05-10 23:48:28.000000000 +0200
50845 @@ -387,7 +387,7 @@
50846 /* The SCC needs 3.5 PCLK cycles recovery time between to register
50847 * accesses. PCLK runs with 8 MHz on an Atari, so this delay is 3.5 *
50848 * 125 ns = 437.5 ns. This is too short for udelay().
50849 - * 10/16/95: A tstb st_mfp.par_dt_reg takes 600ns (sure?) and thus should be
50850 + * 10/16/95: A tstb mfp.par_dt_reg takes 600ns (sure?) and thus should be
50851 * quite right
50852 */
50853
50854 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/selection.c linux-2.6.29-rc3.owrt/drivers/char/selection.c
50855 --- linux-2.6.29.owrt/drivers/char/selection.c 2009-05-10 22:04:38.000000000 +0200
50856 +++ linux-2.6.29-rc3.owrt/drivers/char/selection.c 2009-05-10 23:48:28.000000000 +0200
50857 @@ -268,7 +268,7 @@
50858
50859 /* Allocate a new buffer before freeing the old one ... */
50860 multiplier = use_unicode ? 3 : 1; /* chars can take up to 3 bytes */
50861 - bp = kmalloc(((sel_end-sel_start)/2+1)*multiplier, GFP_KERNEL);
50862 + bp = kmalloc((sel_end-sel_start)/2*multiplier+1, GFP_KERNEL);
50863 if (!bp) {
50864 printk(KERN_WARNING "selection: kmalloc() failed\n");
50865 clear_selection();
50866 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/sx.c linux-2.6.29-rc3.owrt/drivers/char/sx.c
50867 --- linux-2.6.29.owrt/drivers/char/sx.c 2009-05-10 22:04:38.000000000 +0200
50868 +++ linux-2.6.29-rc3.owrt/drivers/char/sx.c 2009-05-10 23:48:28.000000000 +0200
50869 @@ -1713,8 +1713,8 @@
50870 for (i = 0; i < SX_NBOARDS; i++)
50871 sx_dprintk(SX_DEBUG_FIRMWARE, "<%x> ", boards[i].flags);
50872 sx_dprintk(SX_DEBUG_FIRMWARE, "\n");
50873 - rc = -EIO;
50874 - goto out;
50875 + unlock_kernel();
50876 + return -EIO;
50877 }
50878
50879 switch (cmd) {
50880 @@ -1746,10 +1746,8 @@
50881 sx_dprintk(SX_DEBUG_FIRMWARE, "returning type= %ld\n", rc);
50882 break;
50883 case SXIO_DO_RAMTEST:
50884 - if (sx_initialized) { /* Already initialized: better not ramtest the board. */
50885 - rc = -EPERM;
50886 - break;
50887 - }
50888 + if (sx_initialized) /* Already initialized: better not ramtest the board. */
50889 + return -EPERM;
50890 if (IS_SX_BOARD(board)) {
50891 rc = do_memtest(board, 0, 0x7000);
50892 if (!rc)
50893 @@ -1789,7 +1787,7 @@
50894 nbytes - i : SX_CHUNK_SIZE)) {
50895 kfree(tmp);
50896 rc = -EFAULT;
50897 - goto out;
50898 + break;
50899 }
50900 memcpy_toio(board->base2 + offset + i, tmp,
50901 (i + SX_CHUNK_SIZE > nbytes) ?
50902 @@ -1846,7 +1844,6 @@
50903 rc = -ENOTTY;
50904 break;
50905 }
50906 -out:
50907 unlock_kernel();
50908 func_exit();
50909 return rc;
50910 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/char/tpm/tpm_infineon.c linux-2.6.29-rc3.owrt/drivers/char/tpm/tpm_infineon.c
50911 --- linux-2.6.29.owrt/drivers/char/tpm/tpm_infineon.c 2009-05-10 22:04:38.000000000 +0200
50912 +++ linux-2.6.29-rc3.owrt/drivers/char/tpm/tpm_infineon.c 2009-05-10 23:48:28.000000000 +0200
50913 @@ -4,7 +4,7 @@
50914 * SLD 9630 TT 1.1 and SLB 9635 TT 1.2 Trusted Platform Module
50915 * Specifications at www.trustedcomputinggroup.org
50916 *
50917 - * Copyright (C) 2005, Marcel Selhorst <m.selhorst@sirrix.com>
50918 + * Copyright (C) 2005, Marcel Selhorst <selhorst@crypto.rub.de>
50919 * Sirrix AG - security technologies, http://www.sirrix.com and
50920 * Applied Data Security Group, Ruhr-University Bochum, Germany
50921 * Project-Homepage: http://www.prosec.rub.de/tpm
50922 @@ -636,7 +636,7 @@
50923 module_init(init_inf);
50924 module_exit(cleanup_inf);
50925
50926 -MODULE_AUTHOR("Marcel Selhorst <m.selhorst@sirrix.com>");
50927 +MODULE_AUTHOR("Marcel Selhorst <selhorst@crypto.rub.de>");
50928 MODULE_DESCRIPTION("Driver for Infineon TPM SLD 9630 TT 1.1 / SLB 9635 TT 1.2");
50929 MODULE_VERSION("1.9");
50930 MODULE_LICENSE("GPL");
50931 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/cpufreq/cpufreq.c linux-2.6.29-rc3.owrt/drivers/cpufreq/cpufreq.c
50932 --- linux-2.6.29.owrt/drivers/cpufreq/cpufreq.c 2009-05-10 22:04:38.000000000 +0200
50933 +++ linux-2.6.29-rc3.owrt/drivers/cpufreq/cpufreq.c 2009-05-10 23:48:28.000000000 +0200
50934 @@ -754,6 +754,11 @@
50935 .release = cpufreq_sysfs_release,
50936 };
50937
50938 +static struct kobj_type ktype_empty_cpufreq = {
50939 + .sysfs_ops = &sysfs_ops,
50940 + .release = cpufreq_sysfs_release,
50941 +};
50942 +
50943
50944 /**
50945 * cpufreq_add_dev - add a CPU device
50946 @@ -887,26 +892,36 @@
50947 memcpy(&new_policy, policy, sizeof(struct cpufreq_policy));
50948
50949 /* prepare interface data */
50950 - ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq, &sys_dev->kobj,
50951 - "cpufreq");
50952 - if (ret)
50953 - goto err_out_driver_exit;
50954 -
50955 - /* set up files for this cpu device */
50956 - drv_attr = cpufreq_driver->attr;
50957 - while ((drv_attr) && (*drv_attr)) {
50958 - ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
50959 + if (!cpufreq_driver->hide_interface) {
50960 + ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
50961 + &sys_dev->kobj, "cpufreq");
50962 if (ret)
50963 goto err_out_driver_exit;
50964 - drv_attr++;
50965 - }
50966 - if (cpufreq_driver->get) {
50967 - ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
50968 - if (ret)
50969 - goto err_out_driver_exit;
50970 - }
50971 - if (cpufreq_driver->target) {
50972 - ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
50973 +
50974 + /* set up files for this cpu device */
50975 + drv_attr = cpufreq_driver->attr;
50976 + while ((drv_attr) && (*drv_attr)) {
50977 + ret = sysfs_create_file(&policy->kobj,
50978 + &((*drv_attr)->attr));
50979 + if (ret)
50980 + goto err_out_driver_exit;
50981 + drv_attr++;
50982 + }
50983 + if (cpufreq_driver->get) {
50984 + ret = sysfs_create_file(&policy->kobj,
50985 + &cpuinfo_cur_freq.attr);
50986 + if (ret)
50987 + goto err_out_driver_exit;
50988 + }
50989 + if (cpufreq_driver->target) {
50990 + ret = sysfs_create_file(&policy->kobj,
50991 + &scaling_cur_freq.attr);
50992 + if (ret)
50993 + goto err_out_driver_exit;
50994 + }
50995 + } else {
50996 + ret = kobject_init_and_add(&policy->kobj, &ktype_empty_cpufreq,
50997 + &sys_dev->kobj, "cpufreq");
50998 if (ret)
50999 goto err_out_driver_exit;
51000 }
51001 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/cpufreq/cpufreq_ondemand.c linux-2.6.29-rc3.owrt/drivers/cpufreq/cpufreq_ondemand.c
51002 --- linux-2.6.29.owrt/drivers/cpufreq/cpufreq_ondemand.c 2009-05-10 22:04:38.000000000 +0200
51003 +++ linux-2.6.29-rc3.owrt/drivers/cpufreq/cpufreq_ondemand.c 2009-05-10 23:48:28.000000000 +0200
51004 @@ -117,7 +117,11 @@
51005 busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.irq);
51006 busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.softirq);
51007 busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.steal);
51008 - busy_time = cputime64_add(busy_time, kstat_cpu(cpu).cpustat.nice);
51009 +
51010 + if (!dbs_tuners_ins.ignore_nice) {
51011 + busy_time = cputime64_add(busy_time,
51012 + kstat_cpu(cpu).cpustat.nice);
51013 + }
51014
51015 idle_time = cputime64_sub(cur_wall_time, busy_time);
51016 if (wall)
51017 @@ -133,6 +137,23 @@
51018 if (idle_time == -1ULL)
51019 return get_cpu_idle_time_jiffy(cpu, wall);
51020
51021 + if (dbs_tuners_ins.ignore_nice) {
51022 + cputime64_t cur_nice;
51023 + unsigned long cur_nice_jiffies;
51024 + struct cpu_dbs_info_s *dbs_info;
51025 +
51026 + dbs_info = &per_cpu(cpu_dbs_info, cpu);
51027 + cur_nice = cputime64_sub(kstat_cpu(cpu).cpustat.nice,
51028 + dbs_info->prev_cpu_nice);
51029 + /*
51030 + * Assumption: nice time between sampling periods will be
51031 + * less than 2^32 jiffies for 32 bit sys
51032 + */
51033 + cur_nice_jiffies = (unsigned long)
51034 + cputime64_to_jiffies64(cur_nice);
51035 + dbs_info->prev_cpu_nice = kstat_cpu(cpu).cpustat.nice;
51036 + return idle_time + jiffies_to_usecs(cur_nice_jiffies);
51037 + }
51038 return idle_time;
51039 }
51040
51041 @@ -298,9 +319,6 @@
51042 dbs_info = &per_cpu(cpu_dbs_info, j);
51043 dbs_info->prev_cpu_idle = get_cpu_idle_time(j,
51044 &dbs_info->prev_cpu_wall);
51045 - if (dbs_tuners_ins.ignore_nice)
51046 - dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice;
51047 -
51048 }
51049 mutex_unlock(&dbs_mutex);
51050
51051 @@ -401,23 +419,6 @@
51052 j_dbs_info->prev_cpu_idle);
51053 j_dbs_info->prev_cpu_idle = cur_idle_time;
51054
51055 - if (dbs_tuners_ins.ignore_nice) {
51056 - cputime64_t cur_nice;
51057 - unsigned long cur_nice_jiffies;
51058 -
51059 - cur_nice = cputime64_sub(kstat_cpu(j).cpustat.nice,
51060 - j_dbs_info->prev_cpu_nice);
51061 - /*
51062 - * Assumption: nice time between sampling periods will
51063 - * be less than 2^32 jiffies for 32 bit sys
51064 - */
51065 - cur_nice_jiffies = (unsigned long)
51066 - cputime64_to_jiffies64(cur_nice);
51067 -
51068 - j_dbs_info->prev_cpu_nice = kstat_cpu(j).cpustat.nice;
51069 - idle_time += jiffies_to_usecs(cur_nice_jiffies);
51070 - }
51071 -
51072 if (unlikely(!wall_time || wall_time < idle_time))
51073 continue;
51074
51075 @@ -574,10 +575,6 @@
51076
51077 j_dbs_info->prev_cpu_idle = get_cpu_idle_time(j,
51078 &j_dbs_info->prev_cpu_wall);
51079 - if (dbs_tuners_ins.ignore_nice) {
51080 - j_dbs_info->prev_cpu_nice =
51081 - kstat_cpu(j).cpustat.nice;
51082 - }
51083 }
51084 this_dbs_info->cpu = cpu;
51085 /*
51086 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/crypto/ixp4xx_crypto.c linux-2.6.29-rc3.owrt/drivers/crypto/ixp4xx_crypto.c
51087 --- linux-2.6.29.owrt/drivers/crypto/ixp4xx_crypto.c 2009-05-10 22:04:38.000000000 +0200
51088 +++ linux-2.6.29-rc3.owrt/drivers/crypto/ixp4xx_crypto.c 2009-05-10 23:48:28.000000000 +0200
51089 @@ -457,12 +457,10 @@
51090 if (!ctx_pool) {
51091 goto err;
51092 }
51093 - ret = qmgr_request_queue(SEND_QID, NPE_QLEN_TOTAL, 0, 0,
51094 - "ixp_crypto:out", NULL);
51095 + ret = qmgr_request_queue(SEND_QID, NPE_QLEN_TOTAL, 0, 0);
51096 if (ret)
51097 goto err;
51098 - ret = qmgr_request_queue(RECV_QID, NPE_QLEN, 0, 0,
51099 - "ixp_crypto:in", NULL);
51100 + ret = qmgr_request_queue(RECV_QID, NPE_QLEN, 0, 0);
51101 if (ret) {
51102 qmgr_release_queue(SEND_QID);
51103 goto err;
51104 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/crypto/padlock-aes.c linux-2.6.29-rc3.owrt/drivers/crypto/padlock-aes.c
51105 --- linux-2.6.29.owrt/drivers/crypto/padlock-aes.c 2009-05-10 22:04:38.000000000 +0200
51106 +++ linux-2.6.29-rc3.owrt/drivers/crypto/padlock-aes.c 2009-05-10 23:48:28.000000000 +0200
51107 @@ -489,4 +489,4 @@
51108 MODULE_LICENSE("GPL");
51109 MODULE_AUTHOR("Michal Ludvig");
51110
51111 -MODULE_ALIAS("aes-all");
51112 +MODULE_ALIAS("aes");
51113 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/crypto/padlock-sha.c linux-2.6.29-rc3.owrt/drivers/crypto/padlock-sha.c
51114 --- linux-2.6.29.owrt/drivers/crypto/padlock-sha.c 2009-05-10 22:04:38.000000000 +0200
51115 +++ linux-2.6.29-rc3.owrt/drivers/crypto/padlock-sha.c 2009-05-10 23:48:28.000000000 +0200
51116 @@ -304,7 +304,7 @@
51117 MODULE_LICENSE("GPL");
51118 MODULE_AUTHOR("Michal Ludvig");
51119
51120 -MODULE_ALIAS("sha1-all");
51121 -MODULE_ALIAS("sha256-all");
51122 +MODULE_ALIAS("sha1");
51123 +MODULE_ALIAS("sha256");
51124 MODULE_ALIAS("sha1-padlock");
51125 MODULE_ALIAS("sha256-padlock");
51126 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dca/dca-core.c linux-2.6.29-rc3.owrt/drivers/dca/dca-core.c
51127 --- linux-2.6.29.owrt/drivers/dca/dca-core.c 2009-05-10 22:04:38.000000000 +0200
51128 +++ linux-2.6.29-rc3.owrt/drivers/dca/dca-core.c 2009-05-10 23:48:28.000000000 +0200
51129 @@ -1,5 +1,5 @@
51130 /*
51131 - * Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
51132 + * Copyright(c) 2007 Intel Corporation. All rights reserved.
51133 *
51134 * This program is free software; you can redistribute it and/or modify it
51135 * under the terms of the GNU General Public License as published by the Free
51136 @@ -28,7 +28,7 @@
51137 #include <linux/device.h>
51138 #include <linux/dca.h>
51139
51140 -#define DCA_VERSION "1.8"
51141 +#define DCA_VERSION "1.4"
51142
51143 MODULE_VERSION(DCA_VERSION);
51144 MODULE_LICENSE("GPL");
51145 @@ -60,17 +60,16 @@
51146 {
51147 struct dca_provider *dca;
51148 int err, slot = -ENODEV;
51149 - unsigned long flags;
51150
51151 if (!dev)
51152 return -EFAULT;
51153
51154 - spin_lock_irqsave(&dca_lock, flags);
51155 + spin_lock(&dca_lock);
51156
51157 /* check if the requester has not been added already */
51158 dca = dca_find_provider_by_dev(dev);
51159 if (dca) {
51160 - spin_unlock_irqrestore(&dca_lock, flags);
51161 + spin_unlock(&dca_lock);
51162 return -EEXIST;
51163 }
51164
51165 @@ -79,21 +78,19 @@
51166 if (slot >= 0)
51167 break;
51168 }
51169 -
51170 - spin_unlock_irqrestore(&dca_lock, flags);
51171 -
51172 - if (slot < 0)
51173 + if (slot < 0) {
51174 + spin_unlock(&dca_lock);
51175 return slot;
51176 + }
51177
51178 err = dca_sysfs_add_req(dca, dev, slot);
51179 if (err) {
51180 - spin_lock_irqsave(&dca_lock, flags);
51181 - if (dca == dca_find_provider_by_dev(dev))
51182 - dca->ops->remove_requester(dca, dev);
51183 - spin_unlock_irqrestore(&dca_lock, flags);
51184 + dca->ops->remove_requester(dca, dev);
51185 + spin_unlock(&dca_lock);
51186 return err;
51187 }
51188
51189 + spin_unlock(&dca_lock);
51190 return 0;
51191 }
51192 EXPORT_SYMBOL_GPL(dca_add_requester);
51193 @@ -106,25 +103,25 @@
51194 {
51195 struct dca_provider *dca;
51196 int slot;
51197 - unsigned long flags;
51198
51199 if (!dev)
51200 return -EFAULT;
51201
51202 - spin_lock_irqsave(&dca_lock, flags);
51203 + spin_lock(&dca_lock);
51204 dca = dca_find_provider_by_dev(dev);
51205 if (!dca) {
51206 - spin_unlock_irqrestore(&dca_lock, flags);
51207 + spin_unlock(&dca_lock);
51208 return -ENODEV;
51209 }
51210 slot = dca->ops->remove_requester(dca, dev);
51211 - spin_unlock_irqrestore(&dca_lock, flags);
51212 -
51213 - if (slot < 0)
51214 + if (slot < 0) {
51215 + spin_unlock(&dca_lock);
51216 return slot;
51217 + }
51218
51219 dca_sysfs_remove_req(dca, slot);
51220
51221 + spin_unlock(&dca_lock);
51222 return 0;
51223 }
51224 EXPORT_SYMBOL_GPL(dca_remove_requester);
51225 @@ -138,18 +135,17 @@
51226 {
51227 struct dca_provider *dca;
51228 u8 tag;
51229 - unsigned long flags;
51230
51231 - spin_lock_irqsave(&dca_lock, flags);
51232 + spin_lock(&dca_lock);
51233
51234 dca = dca_find_provider_by_dev(dev);
51235 if (!dca) {
51236 - spin_unlock_irqrestore(&dca_lock, flags);
51237 + spin_unlock(&dca_lock);
51238 return -ENODEV;
51239 }
51240 tag = dca->ops->get_tag(dca, dev, cpu);
51241
51242 - spin_unlock_irqrestore(&dca_lock, flags);
51243 + spin_unlock(&dca_lock);
51244 return tag;
51245 }
51246
51247 @@ -221,16 +217,11 @@
51248 int register_dca_provider(struct dca_provider *dca, struct device *dev)
51249 {
51250 int err;
51251 - unsigned long flags;
51252
51253 err = dca_sysfs_add_provider(dca, dev);
51254 if (err)
51255 return err;
51256 -
51257 - spin_lock_irqsave(&dca_lock, flags);
51258 list_add(&dca->node, &dca_providers);
51259 - spin_unlock_irqrestore(&dca_lock, flags);
51260 -
51261 blocking_notifier_call_chain(&dca_provider_chain,
51262 DCA_PROVIDER_ADD, NULL);
51263 return 0;
51264 @@ -243,15 +234,9 @@
51265 */
51266 void unregister_dca_provider(struct dca_provider *dca)
51267 {
51268 - unsigned long flags;
51269 -
51270 blocking_notifier_call_chain(&dca_provider_chain,
51271 DCA_PROVIDER_REMOVE, NULL);
51272 -
51273 - spin_lock_irqsave(&dca_lock, flags);
51274 list_del(&dca->node);
51275 - spin_unlock_irqrestore(&dca_lock, flags);
51276 -
51277 dca_sysfs_remove_provider(dca);
51278 }
51279 EXPORT_SYMBOL_GPL(unregister_dca_provider);
51280 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dca/dca-sysfs.c linux-2.6.29-rc3.owrt/drivers/dca/dca-sysfs.c
51281 --- linux-2.6.29.owrt/drivers/dca/dca-sysfs.c 2009-05-10 22:04:38.000000000 +0200
51282 +++ linux-2.6.29-rc3.owrt/drivers/dca/dca-sysfs.c 2009-05-10 23:48:28.000000000 +0200
51283 @@ -1,24 +1,3 @@
51284 -/*
51285 - * Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
51286 - *
51287 - * This program is free software; you can redistribute it and/or modify it
51288 - * under the terms of the GNU General Public License as published by the Free
51289 - * Software Foundation; either version 2 of the License, or (at your option)
51290 - * any later version.
51291 - *
51292 - * This program is distributed in the hope that it will be useful, but WITHOUT
51293 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
51294 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
51295 - * more details.
51296 - *
51297 - * You should have received a copy of the GNU General Public License along with
51298 - * this program; if not, write to the Free Software Foundation, Inc., 59
51299 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
51300 - *
51301 - * The full GNU General Public License is included in this distribution in the
51302 - * file called COPYING.
51303 - */
51304 -
51305 #include <linux/kernel.h>
51306 #include <linux/spinlock.h>
51307 #include <linux/device.h>
51308 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/dmaengine.c linux-2.6.29-rc3.owrt/drivers/dma/dmaengine.c
51309 --- linux-2.6.29.owrt/drivers/dma/dmaengine.c 2009-05-10 22:04:38.000000000 +0200
51310 +++ linux-2.6.29-rc3.owrt/drivers/dma/dmaengine.c 2009-05-10 23:48:28.000000000 +0200
51311 @@ -518,7 +518,6 @@
51312 dma_chan_name(chan), err);
51313 else
51314 break;
51315 - chan->private = NULL;
51316 chan = NULL;
51317 }
51318 }
51319 @@ -537,7 +536,6 @@
51320 WARN_ONCE(chan->client_count != 1,
51321 "chan reference count %d != 1\n", chan->client_count);
51322 dma_chan_put(chan);
51323 - chan->private = NULL;
51324 mutex_unlock(&dma_list_mutex);
51325 }
51326 EXPORT_SYMBOL_GPL(dma_release_channel);
51327 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/dmatest.c linux-2.6.29-rc3.owrt/drivers/dma/dmatest.c
51328 --- linux-2.6.29.owrt/drivers/dma/dmatest.c 2009-05-10 22:04:38.000000000 +0200
51329 +++ linux-2.6.29-rc3.owrt/drivers/dma/dmatest.c 2009-05-10 23:48:28.000000000 +0200
51330 @@ -430,15 +430,13 @@
51331 static void __exit dmatest_exit(void)
51332 {
51333 struct dmatest_chan *dtc, *_dtc;
51334 - struct dma_chan *chan;
51335
51336 list_for_each_entry_safe(dtc, _dtc, &dmatest_channels, node) {
51337 list_del(&dtc->node);
51338 - chan = dtc->chan;
51339 dmatest_cleanup_channel(dtc);
51340 pr_debug("dmatest: dropped channel %s\n",
51341 - dma_chan_name(chan));
51342 - dma_release_channel(chan);
51343 + dma_chan_name(dtc->chan));
51344 + dma_release_channel(dtc->chan);
51345 }
51346 }
51347 module_exit(dmatest_exit);
51348 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/dw_dmac.c linux-2.6.29-rc3.owrt/drivers/dma/dw_dmac.c
51349 --- linux-2.6.29.owrt/drivers/dma/dw_dmac.c 2009-05-10 22:04:38.000000000 +0200
51350 +++ linux-2.6.29-rc3.owrt/drivers/dma/dw_dmac.c 2009-05-10 23:48:28.000000000 +0200
51351 @@ -560,7 +560,7 @@
51352 unsigned long flags)
51353 {
51354 struct dw_dma_chan *dwc = to_dw_dma_chan(chan);
51355 - struct dw_dma_slave *dws = chan->private;
51356 + struct dw_dma_slave *dws = dwc->dws;
51357 struct dw_desc *prev;
51358 struct dw_desc *first;
51359 u32 ctllo;
51360 @@ -790,7 +790,7 @@
51361 cfghi = DWC_CFGH_FIFO_MODE;
51362 cfglo = 0;
51363
51364 - dws = chan->private;
51365 + dws = dwc->dws;
51366 if (dws) {
51367 /*
51368 * We need controller-specific data to set up slave
51369 @@ -866,6 +866,7 @@
51370 spin_lock_bh(&dwc->lock);
51371 list_splice_init(&dwc->free_list, &list);
51372 dwc->descs_allocated = 0;
51373 + dwc->dws = NULL;
51374
51375 /* Disable interrupts */
51376 channel_clear_bit(dw, MASK.XFER, dwc->mask);
51377 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/dw_dmac_regs.h linux-2.6.29-rc3.owrt/drivers/dma/dw_dmac_regs.h
51378 --- linux-2.6.29.owrt/drivers/dma/dw_dmac_regs.h 2009-05-10 22:04:38.000000000 +0200
51379 +++ linux-2.6.29-rc3.owrt/drivers/dma/dw_dmac_regs.h 2009-05-10 23:48:28.000000000 +0200
51380 @@ -139,6 +139,8 @@
51381 struct list_head queue;
51382 struct list_head free_list;
51383
51384 + struct dw_dma_slave *dws;
51385 +
51386 unsigned int descs_allocated;
51387 };
51388
51389 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/fsldma.c linux-2.6.29-rc3.owrt/drivers/dma/fsldma.c
51390 --- linux-2.6.29.owrt/drivers/dma/fsldma.c 2009-05-10 22:04:38.000000000 +0200
51391 +++ linux-2.6.29-rc3.owrt/drivers/dma/fsldma.c 2009-05-10 23:48:28.000000000 +0200
51392 @@ -158,8 +158,7 @@
51393
51394 static void dma_halt(struct fsl_dma_chan *fsl_chan)
51395 {
51396 - int i;
51397 -
51398 + int i = 0;
51399 DMA_OUT(fsl_chan, &fsl_chan->reg_base->mr,
51400 DMA_IN(fsl_chan, &fsl_chan->reg_base->mr, 32) | FSL_DMA_MR_CA,
51401 32);
51402 @@ -167,11 +166,8 @@
51403 DMA_IN(fsl_chan, &fsl_chan->reg_base->mr, 32) & ~(FSL_DMA_MR_CS
51404 | FSL_DMA_MR_EMS_EN | FSL_DMA_MR_CA), 32);
51405
51406 - for (i = 0; i < 100; i++) {
51407 - if (dma_is_idle(fsl_chan))
51408 - break;
51409 + while (!dma_is_idle(fsl_chan) && (i++ < 100))
51410 udelay(10);
51411 - }
51412 if (i >= 100 && !dma_is_idle(fsl_chan))
51413 dev_err(fsl_chan->dev, "DMA halt timeout!\n");
51414 }
51415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ioat.c linux-2.6.29-rc3.owrt/drivers/dma/ioat.c
51416 --- linux-2.6.29.owrt/drivers/dma/ioat.c 2009-05-10 22:04:38.000000000 +0200
51417 +++ linux-2.6.29-rc3.owrt/drivers/dma/ioat.c 2009-05-10 23:48:28.000000000 +0200
51418 @@ -1,6 +1,6 @@
51419 /*
51420 * Intel I/OAT DMA Linux driver
51421 - * Copyright(c) 2007 - 2009 Intel Corporation.
51422 + * Copyright(c) 2007 Intel Corporation.
51423 *
51424 * This program is free software; you can redistribute it and/or modify it
51425 * under the terms and conditions of the GNU General Public License,
51426 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ioat_dca.c linux-2.6.29-rc3.owrt/drivers/dma/ioat_dca.c
51427 --- linux-2.6.29.owrt/drivers/dma/ioat_dca.c 2009-05-10 22:04:38.000000000 +0200
51428 +++ linux-2.6.29-rc3.owrt/drivers/dma/ioat_dca.c 2009-05-10 23:48:28.000000000 +0200
51429 @@ -1,6 +1,6 @@
51430 /*
51431 * Intel I/OAT DMA Linux driver
51432 - * Copyright(c) 2007 - 2009 Intel Corporation.
51433 + * Copyright(c) 2007 Intel Corporation.
51434 *
51435 * This program is free software; you can redistribute it and/or modify it
51436 * under the terms and conditions of the GNU General Public License,
51437 @@ -49,23 +49,6 @@
51438
51439 #define DCA_TAG_MAP_MASK 0xDF
51440
51441 -/* expected tag map bytes for I/OAT ver.2 */
51442 -#define DCA2_TAG_MAP_BYTE0 0x80
51443 -#define DCA2_TAG_MAP_BYTE1 0x0
51444 -#define DCA2_TAG_MAP_BYTE2 0x81
51445 -#define DCA2_TAG_MAP_BYTE3 0x82
51446 -#define DCA2_TAG_MAP_BYTE4 0x82
51447 -
51448 -/* verify if tag map matches expected values */
51449 -static inline int dca2_tag_map_valid(u8 *tag_map)
51450 -{
51451 - return ((tag_map[0] == DCA2_TAG_MAP_BYTE0) &&
51452 - (tag_map[1] == DCA2_TAG_MAP_BYTE1) &&
51453 - (tag_map[2] == DCA2_TAG_MAP_BYTE2) &&
51454 - (tag_map[3] == DCA2_TAG_MAP_BYTE3) &&
51455 - (tag_map[4] == DCA2_TAG_MAP_BYTE4));
51456 -}
51457 -
51458 /*
51459 * "Legacy" DCA systems do not implement the DCA register set in the
51460 * I/OAT device. Software needs direct support for their tag mappings.
51461 @@ -469,13 +452,6 @@
51462 ioatdca->tag_map[i] = 0;
51463 }
51464
51465 - if (!dca2_tag_map_valid(ioatdca->tag_map)) {
51466 - dev_err(&pdev->dev, "APICID_TAG_MAP set incorrectly by BIOS, "
51467 - "disabling DCA\n");
51468 - free_dca_provider(dca);
51469 - return NULL;
51470 - }
51471 -
51472 err = register_dca_provider(dca, &pdev->dev);
51473 if (err) {
51474 free_dca_provider(dca);
51475 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ioat_dma.c linux-2.6.29-rc3.owrt/drivers/dma/ioat_dma.c
51476 --- linux-2.6.29.owrt/drivers/dma/ioat_dma.c 2009-05-10 22:04:38.000000000 +0200
51477 +++ linux-2.6.29-rc3.owrt/drivers/dma/ioat_dma.c 2009-05-10 23:48:28.000000000 +0200
51478 @@ -1,6 +1,6 @@
51479 /*
51480 * Intel I/OAT DMA Linux driver
51481 - * Copyright(c) 2004 - 2009 Intel Corporation.
51482 + * Copyright(c) 2004 - 2007 Intel Corporation.
51483 *
51484 * This program is free software; you can redistribute it and/or modify it
51485 * under the terms and conditions of the GNU General Public License,
51486 @@ -189,13 +189,11 @@
51487 ioat_chan->xfercap = xfercap;
51488 ioat_chan->desccount = 0;
51489 INIT_DELAYED_WORK(&ioat_chan->work, ioat_dma_chan_reset_part2);
51490 - if (ioat_chan->device->version == IOAT_VER_2_0)
51491 - writel(IOAT_DCACTRL_CMPL_WRITE_ENABLE |
51492 - IOAT_DMA_DCA_ANY_CPU,
51493 - ioat_chan->reg_base + IOAT_DCACTRL_OFFSET);
51494 - else if (ioat_chan->device->version == IOAT_VER_3_0)
51495 - writel(IOAT_DMA_DCA_ANY_CPU,
51496 - ioat_chan->reg_base + IOAT_DCACTRL_OFFSET);
51497 + if (ioat_chan->device->version != IOAT_VER_1_2) {
51498 + writel(IOAT_DCACTRL_CMPL_WRITE_ENABLE
51499 + | IOAT_DMA_DCA_ANY_CPU,
51500 + ioat_chan->reg_base + IOAT_DCACTRL_OFFSET);
51501 + }
51502 spin_lock_init(&ioat_chan->cleanup_lock);
51503 spin_lock_init(&ioat_chan->desc_lock);
51504 INIT_LIST_HEAD(&ioat_chan->free_desc);
51505 @@ -1171,8 +1169,9 @@
51506 * up if the client is done with the descriptor
51507 */
51508 if (async_tx_test_ack(&desc->async_tx)) {
51509 - list_move_tail(&desc->node,
51510 - &ioat_chan->free_desc);
51511 + list_del(&desc->node);
51512 + list_add_tail(&desc->node,
51513 + &ioat_chan->free_desc);
51514 } else
51515 desc->async_tx.cookie = 0;
51516 } else {
51517 @@ -1363,7 +1362,6 @@
51518 dma_cookie_t cookie;
51519 int err = 0;
51520 struct completion cmp;
51521 - unsigned long tmo;
51522
51523 src = kzalloc(sizeof(u8) * IOAT_TEST_SIZE, GFP_KERNEL);
51524 if (!src)
51525 @@ -1415,10 +1413,9 @@
51526 }
51527 device->common.device_issue_pending(dma_chan);
51528
51529 - tmo = wait_for_completion_timeout(&cmp, msecs_to_jiffies(3000));
51530 + wait_for_completion_timeout(&cmp, msecs_to_jiffies(3000));
51531
51532 - if (tmo == 0 ||
51533 - device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
51534 + if (device->common.device_is_tx_complete(dma_chan, cookie, NULL, NULL)
51535 != DMA_SUCCESS) {
51536 dev_err(&device->pdev->dev,
51537 "Self-test copy timed out, disabling\n");
51538 @@ -1660,13 +1657,6 @@
51539 " %d channels, device version 0x%02x, driver version %s\n",
51540 device->common.chancnt, device->version, IOAT_DMA_VERSION);
51541
51542 - if (!device->common.chancnt) {
51543 - dev_err(&device->pdev->dev,
51544 - "Intel(R) I/OAT DMA Engine problem found: "
51545 - "zero channels detected\n");
51546 - goto err_setup_interrupts;
51547 - }
51548 -
51549 err = ioat_dma_setup_interrupts(device);
51550 if (err)
51551 goto err_setup_interrupts;
51552 @@ -1706,9 +1696,6 @@
51553 struct dma_chan *chan, *_chan;
51554 struct ioat_dma_chan *ioat_chan;
51555
51556 - if (device->version != IOAT_VER_3_0)
51557 - cancel_delayed_work(&device->work);
51558 -
51559 ioat_dma_remove_interrupts(device);
51560
51561 dma_async_device_unregister(&device->common);
51562 @@ -1720,6 +1707,10 @@
51563 pci_release_regions(device->pdev);
51564 pci_disable_device(device->pdev);
51565
51566 + if (device->version != IOAT_VER_3_0) {
51567 + cancel_delayed_work(&device->work);
51568 + }
51569 +
51570 list_for_each_entry_safe(chan, _chan,
51571 &device->common.channels, device_node) {
51572 ioat_chan = to_ioat_chan(chan);
51573 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ioatdma.h linux-2.6.29-rc3.owrt/drivers/dma/ioatdma.h
51574 --- linux-2.6.29.owrt/drivers/dma/ioatdma.h 2009-05-10 22:04:38.000000000 +0200
51575 +++ linux-2.6.29-rc3.owrt/drivers/dma/ioatdma.h 2009-05-10 23:48:28.000000000 +0200
51576 @@ -1,5 +1,5 @@
51577 /*
51578 - * Copyright(c) 2004 - 2009 Intel Corporation. All rights reserved.
51579 + * Copyright(c) 2004 - 2007 Intel Corporation. All rights reserved.
51580 *
51581 * This program is free software; you can redistribute it and/or modify it
51582 * under the terms of the GNU General Public License as published by the Free
51583 @@ -29,7 +29,7 @@
51584 #include <linux/pci_ids.h>
51585 #include <net/tcp.h>
51586
51587 -#define IOAT_DMA_VERSION "3.64"
51588 +#define IOAT_DMA_VERSION "3.30"
51589
51590 enum ioat_interrupt {
51591 none = 0,
51592 @@ -135,14 +135,12 @@
51593 #ifdef CONFIG_NET_DMA
51594 switch (dev->version) {
51595 case IOAT_VER_1_2:
51596 + case IOAT_VER_3_0:
51597 sysctl_tcp_dma_copybreak = 4096;
51598 break;
51599 case IOAT_VER_2_0:
51600 sysctl_tcp_dma_copybreak = 2048;
51601 break;
51602 - case IOAT_VER_3_0:
51603 - sysctl_tcp_dma_copybreak = 262144;
51604 - break;
51605 }
51606 #endif
51607 }
51608 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ioatdma_hw.h linux-2.6.29-rc3.owrt/drivers/dma/ioatdma_hw.h
51609 --- linux-2.6.29.owrt/drivers/dma/ioatdma_hw.h 2009-05-10 22:04:38.000000000 +0200
51610 +++ linux-2.6.29-rc3.owrt/drivers/dma/ioatdma_hw.h 2009-05-10 23:48:28.000000000 +0200
51611 @@ -1,5 +1,5 @@
51612 /*
51613 - * Copyright(c) 2004 - 2009 Intel Corporation. All rights reserved.
51614 + * Copyright(c) 2004 - 2007 Intel Corporation. All rights reserved.
51615 *
51616 * This program is free software; you can redistribute it and/or modify it
51617 * under the terms of the GNU General Public License as published by the Free
51618 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ioatdma_registers.h linux-2.6.29-rc3.owrt/drivers/dma/ioatdma_registers.h
51619 --- linux-2.6.29.owrt/drivers/dma/ioatdma_registers.h 2009-05-10 22:04:38.000000000 +0200
51620 +++ linux-2.6.29-rc3.owrt/drivers/dma/ioatdma_registers.h 2009-05-10 23:48:28.000000000 +0200
51621 @@ -1,5 +1,5 @@
51622 /*
51623 - * Copyright(c) 2004 - 2009 Intel Corporation. All rights reserved.
51624 + * Copyright(c) 2004 - 2007 Intel Corporation. All rights reserved.
51625 *
51626 * This program is free software; you can redistribute it and/or modify it
51627 * under the terms of the GNU General Public License as published by the Free
51628 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/iop-adma.c linux-2.6.29-rc3.owrt/drivers/dma/iop-adma.c
51629 --- linux-2.6.29.owrt/drivers/dma/iop-adma.c 2009-05-10 22:04:38.000000000 +0200
51630 +++ linux-2.6.29-rc3.owrt/drivers/dma/iop-adma.c 2009-05-10 23:48:28.000000000 +0200
51631 @@ -928,19 +928,19 @@
51632
51633 for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) {
51634 xor_srcs[src_idx] = alloc_page(GFP_KERNEL);
51635 - if (!xor_srcs[src_idx]) {
51636 - while (src_idx--)
51637 + if (!xor_srcs[src_idx])
51638 + while (src_idx--) {
51639 __free_page(xor_srcs[src_idx]);
51640 - return -ENOMEM;
51641 - }
51642 + return -ENOMEM;
51643 + }
51644 }
51645
51646 dest = alloc_page(GFP_KERNEL);
51647 - if (!dest) {
51648 - while (src_idx--)
51649 + if (!dest)
51650 + while (src_idx--) {
51651 __free_page(xor_srcs[src_idx]);
51652 - return -ENOMEM;
51653 - }
51654 + return -ENOMEM;
51655 + }
51656
51657 /* Fill in src buffers */
51658 for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) {
51659 @@ -1401,7 +1401,7 @@
51660
51661 static struct platform_driver iop_adma_driver = {
51662 .probe = iop_adma_probe,
51663 - .remove = __devexit_p(iop_adma_remove),
51664 + .remove = iop_adma_remove,
51665 .driver = {
51666 .owner = THIS_MODULE,
51667 .name = "iop-adma",
51668 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/ipu/ipu_idmac.c linux-2.6.29-rc3.owrt/drivers/dma/ipu/ipu_idmac.c
51669 --- linux-2.6.29.owrt/drivers/dma/ipu/ipu_idmac.c 2009-05-10 22:04:38.000000000 +0200
51670 +++ linux-2.6.29-rc3.owrt/drivers/dma/ipu/ipu_idmac.c 2009-05-10 23:48:28.000000000 +0200
51671 @@ -729,7 +729,7 @@
51672
51673 ichan->status = IPU_CHANNEL_READY;
51674
51675 - spin_unlock_irqrestore(&ipu->lock, flags);
51676 + spin_unlock_irqrestore(ipu->lock, flags);
51677
51678 return 0;
51679 }
51680 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/dma/mv_xor.c linux-2.6.29-rc3.owrt/drivers/dma/mv_xor.c
51681 --- linux-2.6.29.owrt/drivers/dma/mv_xor.c 2009-05-10 22:04:38.000000000 +0200
51682 +++ linux-2.6.29-rc3.owrt/drivers/dma/mv_xor.c 2009-05-10 23:48:28.000000000 +0200
51683 @@ -1019,19 +1019,19 @@
51684
51685 for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++) {
51686 xor_srcs[src_idx] = alloc_page(GFP_KERNEL);
51687 - if (!xor_srcs[src_idx]) {
51688 - while (src_idx--)
51689 + if (!xor_srcs[src_idx])
51690 + while (src_idx--) {
51691 __free_page(xor_srcs[src_idx]);
51692 - return -ENOMEM;
51693 - }
51694 + return -ENOMEM;
51695 + }
51696 }
51697
51698 dest = alloc_page(GFP_KERNEL);
51699 - if (!dest) {
51700 - while (src_idx--)
51701 + if (!dest)
51702 + while (src_idx--) {
51703 __free_page(xor_srcs[src_idx]);
51704 - return -ENOMEM;
51705 - }
51706 + return -ENOMEM;
51707 + }
51708
51709 /* Fill in src buffers */
51710 for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++) {
51711 @@ -1287,7 +1287,7 @@
51712
51713 static struct platform_driver mv_xor_driver = {
51714 .probe = mv_xor_probe,
51715 - .remove = __devexit_p(mv_xor_remove),
51716 + .remove = mv_xor_remove,
51717 .driver = {
51718 .owner = THIS_MODULE,
51719 .name = MV_XOR_NAME,
51720 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-card.c linux-2.6.29-rc3.owrt/drivers/firewire/fw-card.c
51721 --- linux-2.6.29.owrt/drivers/firewire/fw-card.c 2009-05-10 22:04:39.000000000 +0200
51722 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-card.c 2009-05-10 23:48:28.000000000 +0200
51723 @@ -232,7 +232,7 @@
51724 root_id = root_node->node_id;
51725 grace = time_after(jiffies, card->reset_jiffies + DIV_ROUND_UP(HZ, 10));
51726
51727 - if (is_next_generation(generation, card->bm_generation) ||
51728 + if (card->bm_generation + 1 == generation ||
51729 (card->bm_generation != generation && grace)) {
51730 /*
51731 * This first step is to figure out who is IRM and
51732 @@ -412,7 +412,6 @@
51733 {
51734 u32 *config_rom;
51735 size_t length;
51736 - int err;
51737
51738 card->max_receive = max_receive;
51739 card->link_speed = link_speed;
51740 @@ -423,13 +422,7 @@
51741 list_add_tail(&card->link, &card_list);
51742 mutex_unlock(&card_mutex);
51743
51744 - err = card->driver->enable(card, config_rom, length);
51745 - if (err < 0) {
51746 - mutex_lock(&card_mutex);
51747 - list_del(&card->link);
51748 - mutex_unlock(&card_mutex);
51749 - }
51750 - return err;
51751 + return card->driver->enable(card, config_rom, length);
51752 }
51753 EXPORT_SYMBOL(fw_card_add);
51754
51755 @@ -519,7 +512,7 @@
51756 fw_core_initiate_bus_reset(card, 1);
51757
51758 mutex_lock(&card_mutex);
51759 - list_del_init(&card->link);
51760 + list_del(&card->link);
51761 mutex_unlock(&card_mutex);
51762
51763 /* Set up the dummy driver. */
51764 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-device.c linux-2.6.29-rc3.owrt/drivers/firewire/fw-device.c
51765 --- linux-2.6.29.owrt/drivers/firewire/fw-device.c 2009-05-10 22:04:39.000000000 +0200
51766 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-device.c 2009-05-10 23:48:28.000000000 +0200
51767 @@ -25,7 +25,6 @@
51768 #include <linux/device.h>
51769 #include <linux/delay.h>
51770 #include <linux/idr.h>
51771 -#include <linux/jiffies.h>
51772 #include <linux/string.h>
51773 #include <linux/rwsem.h>
51774 #include <linux/semaphore.h>
51775 @@ -635,39 +634,12 @@
51776 return device;
51777 }
51778
51779 -/*
51780 - * These defines control the retry behavior for reading the config
51781 - * rom. It shouldn't be necessary to tweak these; if the device
51782 - * doesn't respond to a config rom read within 10 seconds, it's not
51783 - * going to respond at all. As for the initial delay, a lot of
51784 - * devices will be able to respond within half a second after bus
51785 - * reset. On the other hand, it's not really worth being more
51786 - * aggressive than that, since it scales pretty well; if 10 devices
51787 - * are plugged in, they're all getting read within one second.
51788 - */
51789 -
51790 -#define MAX_RETRIES 10
51791 -#define RETRY_DELAY (3 * HZ)
51792 -#define INITIAL_DELAY (HZ / 2)
51793 -#define SHUTDOWN_DELAY (2 * HZ)
51794 -
51795 static void fw_device_shutdown(struct work_struct *work)
51796 {
51797 struct fw_device *device =
51798 container_of(work, struct fw_device, work.work);
51799 int minor = MINOR(device->device.devt);
51800
51801 - if (time_is_after_jiffies(device->card->reset_jiffies + SHUTDOWN_DELAY)
51802 - && !list_empty(&device->card->link)) {
51803 - schedule_delayed_work(&device->work, SHUTDOWN_DELAY);
51804 - return;
51805 - }
51806 -
51807 - if (atomic_cmpxchg(&device->state,
51808 - FW_DEVICE_GONE,
51809 - FW_DEVICE_SHUTDOWN) != FW_DEVICE_GONE)
51810 - return;
51811 -
51812 fw_device_cdev_remove(device);
51813 device_for_each_child(&device->device, NULL, shutdown_unit);
51814 device_unregister(&device->device);
51815 @@ -675,7 +647,6 @@
51816 down_write(&fw_device_rwsem);
51817 idr_remove(&fw_device_idr, minor);
51818 up_write(&fw_device_rwsem);
51819 -
51820 fw_device_put(device);
51821 }
51822
51823 @@ -683,63 +654,25 @@
51824 .release = fw_device_release,
51825 };
51826
51827 -static void fw_device_update(struct work_struct *work);
51828 -
51829 /*
51830 - * If a device was pending for deletion because its node went away but its
51831 - * bus info block and root directory header matches that of a newly discovered
51832 - * device, revive the existing fw_device.
51833 - * The newly allocated fw_device becomes obsolete instead.
51834 + * These defines control the retry behavior for reading the config
51835 + * rom. It shouldn't be necessary to tweak these; if the device
51836 + * doesn't respond to a config rom read within 10 seconds, it's not
51837 + * going to respond at all. As for the initial delay, a lot of
51838 + * devices will be able to respond within half a second after bus
51839 + * reset. On the other hand, it's not really worth being more
51840 + * aggressive than that, since it scales pretty well; if 10 devices
51841 + * are plugged in, they're all getting read within one second.
51842 */
51843 -static int lookup_existing_device(struct device *dev, void *data)
51844 -{
51845 - struct fw_device *old = fw_device(dev);
51846 - struct fw_device *new = data;
51847 - struct fw_card *card = new->card;
51848 - int match = 0;
51849 -
51850 - down_read(&fw_device_rwsem); /* serialize config_rom access */
51851 - spin_lock_irq(&card->lock); /* serialize node access */
51852 -
51853 - if (memcmp(old->config_rom, new->config_rom, 6 * 4) == 0 &&
51854 - atomic_cmpxchg(&old->state,
51855 - FW_DEVICE_GONE,
51856 - FW_DEVICE_RUNNING) == FW_DEVICE_GONE) {
51857 - struct fw_node *current_node = new->node;
51858 - struct fw_node *obsolete_node = old->node;
51859 -
51860 - new->node = obsolete_node;
51861 - new->node->data = new;
51862 - old->node = current_node;
51863 - old->node->data = old;
51864 -
51865 - old->max_speed = new->max_speed;
51866 - old->node_id = current_node->node_id;
51867 - smp_wmb(); /* update node_id before generation */
51868 - old->generation = card->generation;
51869 - old->config_rom_retries = 0;
51870 - fw_notify("rediscovered device %s\n", dev_name(dev));
51871 -
51872 - PREPARE_DELAYED_WORK(&old->work, fw_device_update);
51873 - schedule_delayed_work(&old->work, 0);
51874 -
51875 - if (current_node == card->root_node)
51876 - fw_schedule_bm_work(card, 0);
51877 -
51878 - match = 1;
51879 - }
51880
51881 - spin_unlock_irq(&card->lock);
51882 - up_read(&fw_device_rwsem);
51883 -
51884 - return match;
51885 -}
51886 +#define MAX_RETRIES 10
51887 +#define RETRY_DELAY (3 * HZ)
51888 +#define INITIAL_DELAY (HZ / 2)
51889
51890 static void fw_device_init(struct work_struct *work)
51891 {
51892 struct fw_device *device =
51893 container_of(work, struct fw_device, work.work);
51894 - struct device *revived_dev;
51895 int minor, err;
51896
51897 /*
51898 @@ -763,15 +696,6 @@
51899 return;
51900 }
51901
51902 - revived_dev = device_find_child(device->card->device,
51903 - device, lookup_existing_device);
51904 - if (revived_dev) {
51905 - put_device(revived_dev);
51906 - fw_device_release(&device->device);
51907 -
51908 - return;
51909 - }
51910 -
51911 device_initialize(&device->device);
51912
51913 fw_device_get(device);
51914 @@ -810,10 +734,9 @@
51915 * fw_node_event().
51916 */
51917 if (atomic_cmpxchg(&device->state,
51918 - FW_DEVICE_INITIALIZING,
51919 - FW_DEVICE_RUNNING) == FW_DEVICE_GONE) {
51920 - PREPARE_DELAYED_WORK(&device->work, fw_device_shutdown);
51921 - schedule_delayed_work(&device->work, SHUTDOWN_DELAY);
51922 + FW_DEVICE_INITIALIZING,
51923 + FW_DEVICE_RUNNING) == FW_DEVICE_SHUTDOWN) {
51924 + fw_device_shutdown(work);
51925 } else {
51926 if (device->config_rom_retries)
51927 fw_notify("created device %s: GUID %08x%08x, S%d00, "
51928 @@ -924,8 +847,8 @@
51929
51930 case REREAD_BIB_UNCHANGED:
51931 if (atomic_cmpxchg(&device->state,
51932 - FW_DEVICE_INITIALIZING,
51933 - FW_DEVICE_RUNNING) == FW_DEVICE_GONE)
51934 + FW_DEVICE_INITIALIZING,
51935 + FW_DEVICE_RUNNING) == FW_DEVICE_SHUTDOWN)
51936 goto gone;
51937
51938 fw_device_update(work);
51939 @@ -956,8 +879,8 @@
51940 create_units(device);
51941
51942 if (atomic_cmpxchg(&device->state,
51943 - FW_DEVICE_INITIALIZING,
51944 - FW_DEVICE_RUNNING) == FW_DEVICE_GONE)
51945 + FW_DEVICE_INITIALIZING,
51946 + FW_DEVICE_RUNNING) == FW_DEVICE_SHUTDOWN)
51947 goto gone;
51948
51949 fw_notify("refreshed device %s\n", dev_name(&device->device));
51950 @@ -967,9 +890,8 @@
51951 give_up:
51952 fw_notify("giving up on refresh of device %s\n", dev_name(&device->device));
51953 gone:
51954 - atomic_set(&device->state, FW_DEVICE_GONE);
51955 - PREPARE_DELAYED_WORK(&device->work, fw_device_shutdown);
51956 - schedule_delayed_work(&device->work, SHUTDOWN_DELAY);
51957 + atomic_set(&device->state, FW_DEVICE_SHUTDOWN);
51958 + fw_device_shutdown(work);
51959 out:
51960 if (node_id == card->root_node->node_id)
51961 fw_schedule_bm_work(card, 0);
51962 @@ -1073,10 +995,9 @@
51963 */
51964 device = node->data;
51965 if (atomic_xchg(&device->state,
51966 - FW_DEVICE_GONE) == FW_DEVICE_RUNNING) {
51967 + FW_DEVICE_SHUTDOWN) == FW_DEVICE_RUNNING) {
51968 PREPARE_DELAYED_WORK(&device->work, fw_device_shutdown);
51969 - schedule_delayed_work(&device->work,
51970 - list_empty(&card->link) ? 0 : SHUTDOWN_DELAY);
51971 + schedule_delayed_work(&device->work, 0);
51972 }
51973 break;
51974 }
51975 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-device.h linux-2.6.29-rc3.owrt/drivers/firewire/fw-device.h
51976 --- linux-2.6.29.owrt/drivers/firewire/fw-device.h 2009-05-10 22:04:39.000000000 +0200
51977 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-device.h 2009-05-10 23:48:28.000000000 +0200
51978 @@ -28,7 +28,6 @@
51979 enum fw_device_state {
51980 FW_DEVICE_INITIALIZING,
51981 FW_DEVICE_RUNNING,
51982 - FW_DEVICE_GONE,
51983 FW_DEVICE_SHUTDOWN,
51984 };
51985
51986 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-ohci.c linux-2.6.29-rc3.owrt/drivers/firewire/fw-ohci.c
51987 --- linux-2.6.29.owrt/drivers/firewire/fw-ohci.c 2009-05-10 22:04:39.000000000 +0200
51988 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-ohci.c 2009-05-10 23:48:28.000000000 +0200
51989 @@ -226,7 +226,7 @@
51990 #define CONTEXT_DEAD 0x0800
51991 #define CONTEXT_ACTIVE 0x0400
51992
51993 -#define OHCI1394_MAX_AT_REQ_RETRIES 0xf
51994 +#define OHCI1394_MAX_AT_REQ_RETRIES 0x2
51995 #define OHCI1394_MAX_AT_RESP_RETRIES 0x2
51996 #define OHCI1394_MAX_PHYS_RESP_RETRIES 0x8
51997
51998 @@ -896,11 +896,11 @@
51999 for (i = 0; i < 10; i++) {
52000 reg = reg_read(ctx->ohci, CONTROL_SET(ctx->regs));
52001 if ((reg & CONTEXT_ACTIVE) == 0)
52002 - return;
52003 + break;
52004
52005 + fw_notify("context_stop: still active (0x%08x)\n", reg);
52006 mdelay(1);
52007 }
52008 - fw_error("Error: DMA context still active (0x%08x)\n", reg);
52009 }
52010
52011 struct driver_data {
52012 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-sbp2.c linux-2.6.29-rc3.owrt/drivers/firewire/fw-sbp2.c
52013 --- linux-2.6.29.owrt/drivers/firewire/fw-sbp2.c 2009-05-10 22:04:39.000000000 +0200
52014 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-sbp2.c 2009-05-10 23:48:28.000000000 +0200
52015 @@ -168,7 +168,6 @@
52016 int address_high;
52017 unsigned int workarounds;
52018 unsigned int mgt_orb_timeout;
52019 - unsigned int max_payload;
52020
52021 int dont_block; /* counter for each logical unit */
52022 int blocked; /* ditto */
52023 @@ -311,16 +310,14 @@
52024 dma_addr_t page_table_bus;
52025 };
52026
52027 -#define SBP2_ROM_VALUE_WILDCARD ~0 /* match all */
52028 -#define SBP2_ROM_VALUE_MISSING 0xff000000 /* not present in the unit dir. */
52029 -
52030 /*
52031 * List of devices with known bugs.
52032 *
52033 * The firmware_revision field, masked with 0xffff00, is the best
52034 * indicator for the type of bridge chip of a device. It yields a few
52035 * false positives but this did not break correctly behaving devices
52036 - * so far.
52037 + * so far. We use ~0 as a wildcard, since the 24 bit values we get
52038 + * from the config rom can never match that.
52039 */
52040 static const struct {
52041 u32 firmware_revision;
52042 @@ -342,35 +339,33 @@
52043 },
52044 /* Initio bridges, actually only needed for some older ones */ {
52045 .firmware_revision = 0x000200,
52046 - .model = SBP2_ROM_VALUE_WILDCARD,
52047 + .model = ~0,
52048 .workarounds = SBP2_WORKAROUND_INQUIRY_36,
52049 },
52050 /* PL-3507 bridge with Prolific firmware */ {
52051 .firmware_revision = 0x012800,
52052 - .model = SBP2_ROM_VALUE_WILDCARD,
52053 + .model = ~0,
52054 .workarounds = SBP2_WORKAROUND_POWER_CONDITION,
52055 },
52056 /* Symbios bridge */ {
52057 .firmware_revision = 0xa0b800,
52058 - .model = SBP2_ROM_VALUE_WILDCARD,
52059 + .model = ~0,
52060 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
52061 },
52062 /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ {
52063 .firmware_revision = 0x002600,
52064 - .model = SBP2_ROM_VALUE_WILDCARD,
52065 + .model = ~0,
52066 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
52067 },
52068 +
52069 /*
52070 - * iPod 2nd generation: needs 128k max transfer size workaround
52071 - * iPod 3rd generation: needs fix capacity workaround
52072 + * There are iPods (2nd gen, 3rd gen) with model_id == 0, but
52073 + * these iPods do not feature the read_capacity bug according
52074 + * to one report. Read_capacity behaviour as well as model_id
52075 + * could change due to Apple-supplied firmware updates though.
52076 */
52077 - {
52078 - .firmware_revision = 0x0a2700,
52079 - .model = 0x000000,
52080 - .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS |
52081 - SBP2_WORKAROUND_FIX_CAPACITY,
52082 - },
52083 - /* iPod 4th generation */ {
52084 +
52085 + /* iPod 4th generation. */ {
52086 .firmware_revision = 0x0a2700,
52087 .model = 0x000021,
52088 .workarounds = SBP2_WORKAROUND_FIX_CAPACITY,
52089 @@ -1097,7 +1092,7 @@
52090 continue;
52091
52092 if (sbp2_workarounds_table[i].model != model &&
52093 - sbp2_workarounds_table[i].model != SBP2_ROM_VALUE_WILDCARD)
52094 + sbp2_workarounds_table[i].model != ~0)
52095 continue;
52096
52097 w |= sbp2_workarounds_table[i].workarounds;
52098 @@ -1147,28 +1142,20 @@
52099 fw_device_get(device);
52100 fw_unit_get(unit);
52101
52102 + /* Initialize to values that won't match anything in our table. */
52103 + firmware_revision = 0xff000000;
52104 + model = 0xff000000;
52105 +
52106 /* implicit directory ID */
52107 tgt->directory_id = ((unit->directory - device->config_rom) * 4
52108 + CSR_CONFIG_ROM) & 0xffffff;
52109
52110 - firmware_revision = SBP2_ROM_VALUE_MISSING;
52111 - model = SBP2_ROM_VALUE_MISSING;
52112 -
52113 if (sbp2_scan_unit_dir(tgt, unit->directory, &model,
52114 &firmware_revision) < 0)
52115 goto fail_tgt_put;
52116
52117 sbp2_init_workarounds(tgt, model, firmware_revision);
52118
52119 - /*
52120 - * At S100 we can do 512 bytes per packet, at S200 1024 bytes,
52121 - * and so on up to 4096 bytes. The SBP-2 max_payload field
52122 - * specifies the max payload size as 2 ^ (max_payload + 2), so
52123 - * if we set this to max_speed + 7, we get the right value.
52124 - */
52125 - tgt->max_payload = min(device->max_speed + 7, 10U);
52126 - tgt->max_payload = min(tgt->max_payload, device->card->max_receive - 1);
52127 -
52128 /* Do the login in a workqueue so we can easily reschedule retries. */
52129 list_for_each_entry(lu, &tgt->lu_list, link)
52130 sbp2_queue_work(lu, DIV_ROUND_UP(HZ, 5));
52131 @@ -1286,19 +1273,6 @@
52132 .id_table = sbp2_id_table,
52133 };
52134
52135 -static void sbp2_unmap_scatterlist(struct device *card_device,
52136 - struct sbp2_command_orb *orb)
52137 -{
52138 - if (scsi_sg_count(orb->cmd))
52139 - dma_unmap_sg(card_device, scsi_sglist(orb->cmd),
52140 - scsi_sg_count(orb->cmd),
52141 - orb->cmd->sc_data_direction);
52142 -
52143 - if (orb->request.misc & cpu_to_be32(COMMAND_ORB_PAGE_TABLE_PRESENT))
52144 - dma_unmap_single(card_device, orb->page_table_bus,
52145 - sizeof(orb->page_table), DMA_TO_DEVICE);
52146 -}
52147 -
52148 static unsigned int
52149 sbp2_status_to_sense_data(u8 *sbp2_status, u8 *sense_data)
52150 {
52151 @@ -1378,7 +1352,15 @@
52152
52153 dma_unmap_single(device->card->device, orb->base.request_bus,
52154 sizeof(orb->request), DMA_TO_DEVICE);
52155 - sbp2_unmap_scatterlist(device->card->device, orb);
52156 +
52157 + if (scsi_sg_count(orb->cmd) > 0)
52158 + dma_unmap_sg(device->card->device, scsi_sglist(orb->cmd),
52159 + scsi_sg_count(orb->cmd),
52160 + orb->cmd->sc_data_direction);
52161 +
52162 + if (orb->page_table_bus != 0)
52163 + dma_unmap_single(device->card->device, orb->page_table_bus,
52164 + sizeof(orb->page_table), DMA_TO_DEVICE);
52165
52166 orb->cmd->result = result;
52167 orb->done(orb->cmd);
52168 @@ -1452,6 +1434,7 @@
52169 struct sbp2_logical_unit *lu = cmd->device->hostdata;
52170 struct fw_device *device = fw_device(lu->tgt->unit->device.parent);
52171 struct sbp2_command_orb *orb;
52172 + unsigned int max_payload;
52173 int generation, retval = SCSI_MLQUEUE_HOST_BUSY;
52174
52175 /*
52176 @@ -1479,9 +1462,17 @@
52177 orb->done = done;
52178 orb->cmd = cmd;
52179
52180 - orb->request.next.high = cpu_to_be32(SBP2_ORB_NULL);
52181 + orb->request.next.high = cpu_to_be32(SBP2_ORB_NULL);
52182 + /*
52183 + * At speed 100 we can do 512 bytes per packet, at speed 200,
52184 + * 1024 bytes per packet etc. The SBP-2 max_payload field
52185 + * specifies the max payload size as 2 ^ (max_payload + 2), so
52186 + * if we set this to max_speed + 7, we get the right value.
52187 + */
52188 + max_payload = min(device->max_speed + 7,
52189 + device->card->max_receive - 1);
52190 orb->request.misc = cpu_to_be32(
52191 - COMMAND_ORB_MAX_PAYLOAD(lu->tgt->max_payload) |
52192 + COMMAND_ORB_MAX_PAYLOAD(max_payload) |
52193 COMMAND_ORB_SPEED(device->max_speed) |
52194 COMMAND_ORB_NOTIFY);
52195
52196 @@ -1500,10 +1491,8 @@
52197 orb->base.request_bus =
52198 dma_map_single(device->card->device, &orb->request,
52199 sizeof(orb->request), DMA_TO_DEVICE);
52200 - if (dma_mapping_error(device->card->device, orb->base.request_bus)) {
52201 - sbp2_unmap_scatterlist(device->card->device, orb);
52202 + if (dma_mapping_error(device->card->device, orb->base.request_bus))
52203 goto out;
52204 - }
52205
52206 sbp2_send_orb(&orb->base, lu, lu->tgt->node_id, generation,
52207 lu->command_block_agent_address + SBP2_ORB_POINTER);
52208 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-topology.c linux-2.6.29-rc3.owrt/drivers/firewire/fw-topology.c
52209 --- linux-2.6.29.owrt/drivers/firewire/fw-topology.c 2009-05-10 22:04:39.000000000 +0200
52210 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-topology.c 2009-05-10 23:48:28.000000000 +0200
52211 @@ -518,18 +518,6 @@
52212 struct fw_node *local_node;
52213 unsigned long flags;
52214
52215 - /*
52216 - * If the selfID buffer is not the immediate successor of the
52217 - * previously processed one, we cannot reliably compare the
52218 - * old and new topologies.
52219 - */
52220 - if (!is_next_generation(generation, card->generation) &&
52221 - card->local_node != NULL) {
52222 - fw_notify("skipped bus generations, destroying all nodes\n");
52223 - fw_destroy_nodes(card);
52224 - card->bm_retries = 0;
52225 - }
52226 -
52227 spin_lock_irqsave(&card->lock, flags);
52228
52229 card->node_id = node_id;
52230 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firewire/fw-transaction.h linux-2.6.29-rc3.owrt/drivers/firewire/fw-transaction.h
52231 --- linux-2.6.29.owrt/drivers/firewire/fw-transaction.h 2009-05-10 22:04:39.000000000 +0200
52232 +++ linux-2.6.29-rc3.owrt/drivers/firewire/fw-transaction.h 2009-05-10 23:48:28.000000000 +0200
52233 @@ -276,15 +276,6 @@
52234 extern void fw_schedule_bm_work(struct fw_card *card, unsigned long delay);
52235
52236 /*
52237 - * Check whether new_generation is the immediate successor of old_generation.
52238 - * Take counter roll-over at 255 (as per to OHCI) into account.
52239 - */
52240 -static inline bool is_next_generation(int new_generation, int old_generation)
52241 -{
52242 - return (new_generation & 0xff) == ((old_generation + 1) & 0xff);
52243 -}
52244 -
52245 -/*
52246 * The iso packet format allows for an immediate header/payload part
52247 * stored in 'header' immediately after the packet info plus an
52248 * indirect payload part that is pointer to by the 'payload' field.
52249 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/firmware/memmap.c linux-2.6.29-rc3.owrt/drivers/firmware/memmap.c
52250 --- linux-2.6.29.owrt/drivers/firmware/memmap.c 2009-05-10 22:04:38.000000000 +0200
52251 +++ linux-2.6.29-rc3.owrt/drivers/firmware/memmap.c 2009-05-10 23:48:28.000000000 +0200
52252 @@ -1,7 +1,7 @@
52253 /*
52254 * linux/drivers/firmware/memmap.c
52255 * Copyright (C) 2008 SUSE LINUX Products GmbH
52256 - * by Bernhard Walle <bernhard.walle@gmx.de>
52257 + * by Bernhard Walle <bwalle@suse.de>
52258 *
52259 * This program is free software; you can redistribute it and/or modify
52260 * it under the terms of the GNU General Public License v2.0 as published by
52261 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpio/gpiolib.c linux-2.6.29-rc3.owrt/drivers/gpio/gpiolib.c
52262 --- linux-2.6.29.owrt/drivers/gpio/gpiolib.c 2009-05-10 22:04:39.000000000 +0200
52263 +++ linux-2.6.29-rc3.owrt/drivers/gpio/gpiolib.c 2009-05-10 23:48:28.000000000 +0200
52264 @@ -789,7 +789,6 @@
52265 } else {
52266 status = -EBUSY;
52267 module_put(chip->owner);
52268 - goto done;
52269 }
52270
52271 if (chip->request) {
52272 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_bufs.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_bufs.c
52273 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_bufs.c 2009-05-10 22:04:38.000000000 +0200
52274 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_bufs.c 2009-05-10 23:48:28.000000000 +0200
52275 @@ -420,7 +420,7 @@
52276 dev->sigdata.lock = NULL;
52277 master->lock.hw_lock = NULL; /* SHM removed */
52278 master->lock.file_priv = NULL;
52279 - wake_up_interruptible_all(&master->lock.lock_queue);
52280 + wake_up_interruptible(&master->lock.lock_queue);
52281 }
52282 break;
52283 case _DRM_AGP:
52284 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_crtc.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_crtc.c
52285 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_crtc.c 2009-05-10 22:04:38.000000000 +0200
52286 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_crtc.c 2009-05-10 23:48:28.000000000 +0200
52287 @@ -1741,8 +1741,9 @@
52288 * RETURNS:
52289 * Zero on success, errno on failure.
52290 */
52291 -void drm_fb_release(struct drm_file *priv)
52292 +void drm_fb_release(struct file *filp)
52293 {
52294 + struct drm_file *priv = filp->private_data;
52295 struct drm_device *dev = priv->minor->dev;
52296 struct drm_framebuffer *fb, *tfb;
52297
52298 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_crtc_helper.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_crtc_helper.c
52299 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_crtc_helper.c 2009-05-10 22:04:38.000000000 +0200
52300 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_crtc_helper.c 2009-05-10 23:48:28.000000000 +0200
52301 @@ -452,59 +452,6 @@
52302 kfree(modes);
52303 kfree(enabled);
52304 }
52305 -
52306 -/**
52307 - * drm_encoder_crtc_ok - can a given crtc drive a given encoder?
52308 - * @encoder: encoder to test
52309 - * @crtc: crtc to test
52310 - *
52311 - * Return false if @encoder can't be driven by @crtc, true otherwise.
52312 - */
52313 -static bool drm_encoder_crtc_ok(struct drm_encoder *encoder,
52314 - struct drm_crtc *crtc)
52315 -{
52316 - struct drm_device *dev;
52317 - struct drm_crtc *tmp;
52318 - int crtc_mask = 1;
52319 -
52320 - WARN(!crtc, "checking null crtc?");
52321 -
52322 - dev = crtc->dev;
52323 -
52324 - list_for_each_entry(tmp, &dev->mode_config.crtc_list, head) {
52325 - if (tmp == crtc)
52326 - break;
52327 - crtc_mask <<= 1;
52328 - }
52329 -
52330 - if (encoder->possible_crtcs & crtc_mask)
52331 - return true;
52332 - return false;
52333 -}
52334 -
52335 -/*
52336 - * Check the CRTC we're going to map each output to vs. its current
52337 - * CRTC. If they don't match, we have to disable the output and the CRTC
52338 - * since the driver will have to re-route things.
52339 - */
52340 -static void
52341 -drm_crtc_prepare_encoders(struct drm_device *dev)
52342 -{
52343 - struct drm_encoder_helper_funcs *encoder_funcs;
52344 - struct drm_encoder *encoder;
52345 -
52346 - list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
52347 - encoder_funcs = encoder->helper_private;
52348 - /* Disable unused encoders */
52349 - if (encoder->crtc == NULL)
52350 - (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
52351 - /* Disable encoders whose CRTC is about to change */
52352 - if (encoder_funcs->get_crtc &&
52353 - encoder->crtc != (*encoder_funcs->get_crtc)(encoder))
52354 - (*encoder_funcs->dpms)(encoder, DRM_MODE_DPMS_OFF);
52355 - }
52356 -}
52357 -
52358 /**
52359 * drm_crtc_set_mode - set a mode
52360 * @crtc: CRTC to program
52361 @@ -565,8 +512,8 @@
52362 if (drm_mode_equal(&saved_mode, &crtc->mode)) {
52363 if (saved_x != crtc->x || saved_y != crtc->y ||
52364 depth_changed || bpp_changed) {
52365 - ret = !crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y,
52366 - old_fb);
52367 + crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y,
52368 + old_fb);
52369 goto done;
52370 }
52371 }
52372 @@ -600,16 +547,12 @@
52373 encoder_funcs->prepare(encoder);
52374 }
52375
52376 - drm_crtc_prepare_encoders(dev);
52377 -
52378 crtc_funcs->prepare(crtc);
52379
52380 /* Set up the DPLL and any encoders state that needs to adjust or depend
52381 * on the DPLL.
52382 */
52383 - ret = !crtc_funcs->mode_set(crtc, mode, adjusted_mode, x, y, old_fb);
52384 - if (!ret)
52385 - goto done;
52386 + crtc_funcs->mode_set(crtc, mode, adjusted_mode, x, y, old_fb);
52387
52388 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
52389
52390 @@ -672,7 +615,7 @@
52391 struct drm_device *dev;
52392 struct drm_crtc **save_crtcs, *new_crtc;
52393 struct drm_encoder **save_encoders, *new_encoder;
52394 - struct drm_framebuffer *old_fb = NULL;
52395 + struct drm_framebuffer *old_fb;
52396 bool save_enabled;
52397 bool mode_changed = false;
52398 bool fb_changed = false;
52399 @@ -723,10 +666,9 @@
52400 * and then just flip_or_move it */
52401 if (set->crtc->fb != set->fb) {
52402 /* If we have no fb then treat it as a full mode set */
52403 - if (set->crtc->fb == NULL) {
52404 - DRM_DEBUG("crtc has no fb, full mode set\n");
52405 + if (set->crtc->fb == NULL)
52406 mode_changed = true;
52407 - } else if ((set->fb->bits_per_pixel !=
52408 + else if ((set->fb->bits_per_pixel !=
52409 set->crtc->fb->bits_per_pixel) ||
52410 set->fb->depth != set->crtc->fb->depth)
52411 fb_changed = true;
52412 @@ -738,7 +680,7 @@
52413 fb_changed = true;
52414
52415 if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) {
52416 - DRM_DEBUG("modes are different, full mode set\n");
52417 + DRM_DEBUG("modes are different\n");
52418 drm_mode_debug_printmodeline(&set->crtc->mode);
52419 drm_mode_debug_printmodeline(set->mode);
52420 mode_changed = true;
52421 @@ -764,7 +706,6 @@
52422 }
52423
52424 if (new_encoder != connector->encoder) {
52425 - DRM_DEBUG("encoder changed, full mode switch\n");
52426 mode_changed = true;
52427 connector->encoder = new_encoder;
52428 }
52429 @@ -791,20 +732,10 @@
52430 if (set->connectors[ro] == connector)
52431 new_crtc = set->crtc;
52432 }
52433 -
52434 - /* Make sure the new CRTC will work with the encoder */
52435 - if (new_crtc &&
52436 - !drm_encoder_crtc_ok(connector->encoder, new_crtc)) {
52437 - ret = -EINVAL;
52438 - goto fail_set_mode;
52439 - }
52440 if (new_crtc != connector->encoder->crtc) {
52441 - DRM_DEBUG("crtc changed, full mode switch\n");
52442 mode_changed = true;
52443 connector->encoder->crtc = new_crtc;
52444 }
52445 - DRM_DEBUG("setting connector %d crtc to %p\n",
52446 - connector->base.id, new_crtc);
52447 }
52448
52449 /* mode_set_base is not a required function */
52450 @@ -821,8 +752,6 @@
52451 if (!drm_crtc_helper_set_mode(set->crtc, set->mode,
52452 set->x, set->y,
52453 old_fb)) {
52454 - DRM_ERROR("failed to set mode on crtc %p\n",
52455 - set->crtc);
52456 ret = -EINVAL;
52457 goto fail_set_mode;
52458 }
52459 @@ -836,10 +765,7 @@
52460 old_fb = set->crtc->fb;
52461 if (set->crtc->fb != set->fb)
52462 set->crtc->fb = set->fb;
52463 - ret = crtc_funcs->mode_set_base(set->crtc,
52464 - set->x, set->y, old_fb);
52465 - if (ret != 0)
52466 - goto fail_set_mode;
52467 + crtc_funcs->mode_set_base(set->crtc, set->x, set->y, old_fb);
52468 }
52469
52470 kfree(save_encoders);
52471 @@ -848,14 +774,9 @@
52472
52473 fail_set_mode:
52474 set->crtc->enabled = save_enabled;
52475 - set->crtc->fb = old_fb;
52476 count = 0;
52477 - list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
52478 - if (!connector->encoder)
52479 - continue;
52480 -
52481 + list_for_each_entry(connector, &dev->mode_config.connector_list, head)
52482 connector->encoder->crtc = save_crtcs[count++];
52483 - }
52484 fail_no_encoder:
52485 kfree(save_crtcs);
52486 count = 0;
52487 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_edid.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_edid.c
52488 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_edid.c 2009-05-10 22:04:38.000000000 +0200
52489 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_edid.c 2009-05-10 23:48:28.000000000 +0200
52490 @@ -125,7 +125,7 @@
52491 DRM_ERROR("EDID has major version %d, instead of 1\n", edid->version);
52492 goto bad;
52493 }
52494 - if (edid->revision > 3) {
52495 + if (edid->revision <= 0 || edid->revision > 3) {
52496 DRM_ERROR("EDID has minor version %d, which is not between 0-3\n", edid->revision);
52497 goto bad;
52498 }
52499 @@ -320,10 +320,10 @@
52500 mode->htotal = mode->hdisplay + ((pt->hblank_hi << 8) | pt->hblank_lo);
52501
52502 mode->vdisplay = (pt->vactive_hi << 8) | pt->vactive_lo;
52503 - mode->vsync_start = mode->vdisplay + ((pt->vsync_offset_hi << 4) |
52504 + mode->vsync_start = mode->vdisplay + ((pt->vsync_offset_hi << 8) |
52505 pt->vsync_offset_lo);
52506 mode->vsync_end = mode->vsync_start +
52507 - ((pt->vsync_pulse_width_hi << 4) |
52508 + ((pt->vsync_pulse_width_hi << 8) |
52509 pt->vsync_pulse_width_lo);
52510 mode->vtotal = mode->vdisplay + ((pt->vblank_hi << 8) | pt->vblank_lo);
52511
52512 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_fops.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_fops.c
52513 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_fops.c 2009-05-10 22:04:38.000000000 +0200
52514 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_fops.c 2009-05-10 23:48:28.000000000 +0200
52515 @@ -457,9 +457,6 @@
52516 if (dev->driver->driver_features & DRIVER_GEM)
52517 drm_gem_release(dev, file_priv);
52518
52519 - if (dev->driver->driver_features & DRIVER_MODESET)
52520 - drm_fb_release(file_priv);
52521 -
52522 mutex_lock(&dev->ctxlist_mutex);
52523 if (!list_empty(&dev->ctxlist)) {
52524 struct drm_ctx_list *pos, *n;
52525 @@ -484,7 +481,6 @@
52526 mutex_lock(&dev->struct_mutex);
52527
52528 if (file_priv->is_master) {
52529 - struct drm_master *master = file_priv->master;
52530 struct drm_file *temp;
52531 list_for_each_entry(temp, &dev->filelist, lhead) {
52532 if ((temp->master == file_priv->master) &&
52533 @@ -492,19 +488,6 @@
52534 temp->authenticated = 0;
52535 }
52536
52537 - /**
52538 - * Since the master is disappearing, so is the
52539 - * possibility to lock.
52540 - */
52541 -
52542 - if (master->lock.hw_lock) {
52543 - if (dev->sigdata.lock == master->lock.hw_lock)
52544 - dev->sigdata.lock = NULL;
52545 - master->lock.hw_lock = NULL;
52546 - master->lock.file_priv = NULL;
52547 - wake_up_interruptible_all(&master->lock.lock_queue);
52548 - }
52549 -
52550 if (file_priv->minor->master == file_priv->master) {
52551 /* drop the reference held my the minor */
52552 drm_master_put(&file_priv->minor->master);
52553 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_gem.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_gem.c
52554 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_gem.c 2009-05-10 22:04:38.000000000 +0200
52555 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_gem.c 2009-05-10 23:48:28.000000000 +0200
52556 @@ -104,8 +104,8 @@
52557
52558 if (drm_mm_init(&mm->offset_manager, DRM_FILE_PAGE_OFFSET_START,
52559 DRM_FILE_PAGE_OFFSET_SIZE)) {
52560 - drm_ht_remove(&mm->offset_hash);
52561 drm_free(mm, sizeof(struct drm_gem_mm), DRM_MEM_MM);
52562 + drm_ht_remove(&mm->offset_hash);
52563 return -ENOMEM;
52564 }
52565
52566 @@ -136,7 +136,7 @@
52567 obj = kcalloc(1, sizeof(*obj), GFP_KERNEL);
52568
52569 obj->dev = dev;
52570 - obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);
52571 + obj->filp = shmem_file_setup("drm mm object", size, 0);
52572 if (IS_ERR(obj->filp)) {
52573 kfree(obj);
52574 return NULL;
52575 @@ -295,37 +295,35 @@
52576 return -EBADF;
52577
52578 again:
52579 - if (idr_pre_get(&dev->object_name_idr, GFP_KERNEL) == 0) {
52580 - ret = -ENOMEM;
52581 - goto err;
52582 - }
52583 + if (idr_pre_get(&dev->object_name_idr, GFP_KERNEL) == 0)
52584 + return -ENOMEM;
52585
52586 spin_lock(&dev->object_name_lock);
52587 - if (!obj->name) {
52588 - ret = idr_get_new_above(&dev->object_name_idr, obj, 1,
52589 - &obj->name);
52590 - args->name = (uint64_t) obj->name;
52591 + if (obj->name) {
52592 + args->name = obj->name;
52593 spin_unlock(&dev->object_name_lock);
52594 + return 0;
52595 + }
52596 + ret = idr_get_new_above(&dev->object_name_idr, obj, 1,
52597 + &obj->name);
52598 + spin_unlock(&dev->object_name_lock);
52599 + if (ret == -EAGAIN)
52600 + goto again;
52601
52602 - if (ret == -EAGAIN)
52603 - goto again;
52604 -
52605 - if (ret != 0)
52606 - goto err;
52607 -
52608 - /* Allocate a reference for the name table. */
52609 - drm_gem_object_reference(obj);
52610 - } else {
52611 - args->name = (uint64_t) obj->name;
52612 - spin_unlock(&dev->object_name_lock);
52613 - ret = 0;
52614 + if (ret != 0) {
52615 + mutex_lock(&dev->struct_mutex);
52616 + drm_gem_object_unreference(obj);
52617 + mutex_unlock(&dev->struct_mutex);
52618 + return ret;
52619 }
52620
52621 -err:
52622 - mutex_lock(&dev->struct_mutex);
52623 - drm_gem_object_unreference(obj);
52624 - mutex_unlock(&dev->struct_mutex);
52625 - return ret;
52626 + /*
52627 + * Leave the reference from the lookup around as the
52628 + * name table now holds one
52629 + */
52630 + args->name = (uint64_t) obj->name;
52631 +
52632 + return 0;
52633 }
52634
52635 /**
52636 @@ -450,7 +448,6 @@
52637 spin_lock(&dev->object_name_lock);
52638 if (obj->name) {
52639 idr_remove(&dev->object_name_idr, obj->name);
52640 - obj->name = 0;
52641 spin_unlock(&dev->object_name_lock);
52642 /*
52643 * The object name held a reference to this object, drop
52644 @@ -463,26 +460,6 @@
52645 }
52646 EXPORT_SYMBOL(drm_gem_object_handle_free);
52647
52648 -void drm_gem_vm_open(struct vm_area_struct *vma)
52649 -{
52650 - struct drm_gem_object *obj = vma->vm_private_data;
52651 -
52652 - drm_gem_object_reference(obj);
52653 -}
52654 -EXPORT_SYMBOL(drm_gem_vm_open);
52655 -
52656 -void drm_gem_vm_close(struct vm_area_struct *vma)
52657 -{
52658 - struct drm_gem_object *obj = vma->vm_private_data;
52659 - struct drm_device *dev = obj->dev;
52660 -
52661 - mutex_lock(&dev->struct_mutex);
52662 - drm_gem_object_unreference(obj);
52663 - mutex_unlock(&dev->struct_mutex);
52664 -}
52665 -EXPORT_SYMBOL(drm_gem_vm_close);
52666 -
52667 -
52668 /**
52669 * drm_gem_mmap - memory map routine for GEM objects
52670 * @filp: DRM file pointer
52671 @@ -544,14 +521,6 @@
52672 #endif
52673 vma->vm_page_prot = __pgprot(prot);
52674
52675 - /* Take a ref for this mapping of the object, so that the fault
52676 - * handler can dereference the mmap offset's pointer to the object.
52677 - * This reference is cleaned up by the corresponding vm_close
52678 - * (which should happen whether the vma was created by this call, or
52679 - * by a vm_open due to mremap or partial unmap or whatever).
52680 - */
52681 - drm_gem_object_reference(obj);
52682 -
52683 vma->vm_file = filp; /* Needed for drm_vm_open() */
52684 drm_vm_open_locked(vma);
52685
52686 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_irq.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_irq.c
52687 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_irq.c 2009-05-10 22:04:38.000000000 +0200
52688 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_irq.c 2009-05-10 23:48:28.000000000 +0200
52689 @@ -276,7 +276,6 @@
52690 for (i = 0; i < dev->num_crtcs; i++) {
52691 DRM_WAKEUP(&dev->vbl_queue[i]);
52692 dev->vblank_enabled[i] = 0;
52693 - dev->last_vblank[i] = dev->driver->get_vblank_counter(dev, i);
52694 }
52695 spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
52696
52697 @@ -435,8 +434,6 @@
52698 */
52699 void drm_vblank_put(struct drm_device *dev, int crtc)
52700 {
52701 - BUG_ON (atomic_read (&dev->vblank_refcount[crtc]) == 0);
52702 -
52703 /* Last user schedules interrupt disable */
52704 if (atomic_dec_and_test(&dev->vblank_refcount[crtc]))
52705 mod_timer(&dev->vblank_disable_timer, jiffies + 5*DRM_HZ);
52706 @@ -462,9 +459,8 @@
52707 * so that interrupts remain enabled in the interim.
52708 */
52709 if (!dev->vblank_inmodeset[crtc]) {
52710 - dev->vblank_inmodeset[crtc] = 0x1;
52711 - if (drm_vblank_get(dev, crtc) == 0)
52712 - dev->vblank_inmodeset[crtc] |= 0x2;
52713 + dev->vblank_inmodeset[crtc] = 1;
52714 + drm_vblank_get(dev, crtc);
52715 }
52716 }
52717 EXPORT_SYMBOL(drm_vblank_pre_modeset);
52718 @@ -476,12 +472,9 @@
52719 if (dev->vblank_inmodeset[crtc]) {
52720 spin_lock_irqsave(&dev->vbl_lock, irqflags);
52721 dev->vblank_disable_allowed = 1;
52722 - spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
52723 -
52724 - if (dev->vblank_inmodeset[crtc] & 0x2)
52725 - drm_vblank_put(dev, crtc);
52726 -
52727 dev->vblank_inmodeset[crtc] = 0;
52728 + spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
52729 + drm_vblank_put(dev, crtc);
52730 }
52731 }
52732 EXPORT_SYMBOL(drm_vblank_post_modeset);
52733 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_lock.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_lock.c
52734 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_lock.c 2009-05-10 22:04:38.000000000 +0200
52735 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_lock.c 2009-05-10 23:48:28.000000000 +0200
52736 @@ -80,7 +80,6 @@
52737 __set_current_state(TASK_INTERRUPTIBLE);
52738 if (!master->lock.hw_lock) {
52739 /* Device has been unregistered */
52740 - send_sig(SIGTERM, current, 0);
52741 ret = -EINTR;
52742 break;
52743 }
52744 @@ -94,7 +93,7 @@
52745 /* Contention */
52746 schedule();
52747 if (signal_pending(current)) {
52748 - ret = -EINTR;
52749 + ret = -ERESTARTSYS;
52750 break;
52751 }
52752 }
52753 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_memory.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_memory.c
52754 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_memory.c 2009-05-10 22:04:38.000000000 +0200
52755 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_memory.c 2009-05-10 23:48:28.000000000 +0200
52756 @@ -171,14 +171,9 @@
52757
52758 void drm_core_ioremap_wc(struct drm_map *map, struct drm_device *dev)
52759 {
52760 - if (drm_core_has_AGP(dev) &&
52761 - dev->agp && dev->agp->cant_use_aperture && map->type == _DRM_AGP)
52762 - map->handle = agp_remap(map->offset, map->size, dev);
52763 - else
52764 - map->handle = ioremap_wc(map->offset, map->size);
52765 + map->handle = ioremap_wc(map->offset, map->size);
52766 }
52767 EXPORT_SYMBOL(drm_core_ioremap_wc);
52768 -
52769 void drm_core_ioremapfree(struct drm_map *map, struct drm_device *dev)
52770 {
52771 if (!map->handle || !map->size)
52772 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/drm_stub.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_stub.c
52773 --- linux-2.6.29.owrt/drivers/gpu/drm/drm_stub.c 2009-05-10 22:04:38.000000000 +0200
52774 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/drm_stub.c 2009-05-10 23:48:28.000000000 +0200
52775 @@ -146,6 +146,14 @@
52776
52777 drm_ht_remove(&master->magiclist);
52778
52779 + if (master->lock.hw_lock) {
52780 + if (dev->sigdata.lock == master->lock.hw_lock)
52781 + dev->sigdata.lock = NULL;
52782 + master->lock.hw_lock = NULL;
52783 + master->lock.file_priv = NULL;
52784 + wake_up_interruptible(&master->lock.lock_queue);
52785 + }
52786 +
52787 drm_free(master, sizeof(*master), DRM_MEM_DRIVER);
52788 }
52789
52790 @@ -168,7 +176,7 @@
52791 file_priv->minor->master != file_priv->master) {
52792 mutex_lock(&dev->struct_mutex);
52793 file_priv->minor->master = drm_master_get(file_priv->master);
52794 - mutex_unlock(&dev->struct_mutex);
52795 + mutex_lock(&dev->struct_mutex);
52796 }
52797
52798 return 0;
52799 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_dma.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_dma.c
52800 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_dma.c 2009-05-10 22:04:38.000000000 +0200
52801 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_dma.c 2009-05-10 23:48:28.000000000 +0200
52802 @@ -202,7 +202,7 @@
52803 dev_priv->ring.map.flags = 0;
52804 dev_priv->ring.map.mtrr = 0;
52805
52806 - drm_core_ioremap_wc(&dev_priv->ring.map, dev);
52807 + drm_core_ioremap(&dev_priv->ring.map, dev);
52808
52809 if (dev_priv->ring.map.handle == NULL) {
52810 i915_dma_cleanup(dev);
52811 @@ -731,11 +731,8 @@
52812 case I915_PARAM_HAS_GEM:
52813 value = dev_priv->has_gem;
52814 break;
52815 - case I915_PARAM_NUM_FENCES_AVAIL:
52816 - value = dev_priv->num_fence_regs - dev_priv->fence_reg_start;
52817 - break;
52818 default:
52819 - DRM_DEBUG("Unknown parameter %d\n", param->param);
52820 + DRM_ERROR("Unknown parameter %d\n", param->param);
52821 return -EINVAL;
52822 }
52823
52824 @@ -767,15 +764,8 @@
52825 case I915_SETPARAM_ALLOW_BATCHBUFFER:
52826 dev_priv->allow_batchbuffer = param->value;
52827 break;
52828 - case I915_SETPARAM_NUM_USED_FENCES:
52829 - if (param->value > dev_priv->num_fence_regs ||
52830 - param->value < 0)
52831 - return -EINVAL;
52832 - /* Userspace can use first N regs */
52833 - dev_priv->fence_reg_start = param->value;
52834 - break;
52835 default:
52836 - DRM_DEBUG("unknown parameter %d\n", param->param);
52837 + DRM_ERROR("unknown parameter %d\n", param->param);
52838 return -EINVAL;
52839 }
52840
52841 @@ -811,7 +801,7 @@
52842 dev_priv->hws_map.flags = 0;
52843 dev_priv->hws_map.mtrr = 0;
52844
52845 - drm_core_ioremap_wc(&dev_priv->hws_map, dev);
52846 + drm_core_ioremap(&dev_priv->hws_map, dev);
52847 if (dev_priv->hws_map.handle == NULL) {
52848 i915_dma_cleanup(dev);
52849 dev_priv->status_gfx_addr = 0;
52850 @@ -976,6 +966,10 @@
52851 if (ret)
52852 goto kfree_devname;
52853
52854 + dev_priv->mm.gtt_mapping =
52855 + io_mapping_create_wc(dev->agp->base,
52856 + dev->agp->agp_info.aper_size * 1024*1024);
52857 +
52858 /* Allow hardware batchbuffers unless told otherwise.
52859 */
52860 dev_priv->allow_batchbuffer = 1;
52861 @@ -1087,28 +1081,6 @@
52862 goto free_priv;
52863 }
52864
52865 - dev_priv->mm.gtt_mapping =
52866 - io_mapping_create_wc(dev->agp->base,
52867 - dev->agp->agp_info.aper_size * 1024*1024);
52868 - if (dev_priv->mm.gtt_mapping == NULL) {
52869 - ret = -EIO;
52870 - goto out_rmmap;
52871 - }
52872 -
52873 - /* Set up a WC MTRR for non-PAT systems. This is more common than
52874 - * one would think, because the kernel disables PAT on first
52875 - * generation Core chips because WC PAT gets overridden by a UC
52876 - * MTRR if present. Even if a UC MTRR isn't present.
52877 - */
52878 - dev_priv->mm.gtt_mtrr = mtrr_add(dev->agp->base,
52879 - dev->agp->agp_info.aper_size *
52880 - 1024 * 1024,
52881 - MTRR_TYPE_WRCOMB, 1);
52882 - if (dev_priv->mm.gtt_mtrr < 0) {
52883 - DRM_INFO("MTRR allocation failed. Graphics "
52884 - "performance may suffer.\n");
52885 - }
52886 -
52887 #ifdef CONFIG_HIGHMEM64G
52888 /* don't enable GEM on PAE - needs agp + set_memory_* interface fixes */
52889 dev_priv->has_gem = 0;
52890 @@ -1117,17 +1089,13 @@
52891 dev_priv->has_gem = 1;
52892 #endif
52893
52894 - dev->driver->get_vblank_counter = i915_get_vblank_counter;
52895 - if (IS_GM45(dev))
52896 - dev->driver->get_vblank_counter = gm45_get_vblank_counter;
52897 -
52898 i915_gem_load(dev);
52899
52900 /* Init HWS */
52901 if (!I915_NEED_GFX_HWS(dev)) {
52902 ret = i915_init_phys_hws(dev);
52903 if (ret != 0)
52904 - goto out_iomapfree;
52905 + goto out_rmmap;
52906 }
52907
52908 /* On the 945G/GM, the chipset reports the MSI capability on the
52909 @@ -1166,8 +1134,6 @@
52910
52911 return 0;
52912
52913 -out_iomapfree:
52914 - io_mapping_free(dev_priv->mm.gtt_mapping);
52915 out_rmmap:
52916 iounmap(dev_priv->regs);
52917 free_priv:
52918 @@ -1179,14 +1145,8 @@
52919 {
52920 struct drm_i915_private *dev_priv = dev->dev_private;
52921
52922 - io_mapping_free(dev_priv->mm.gtt_mapping);
52923 - if (dev_priv->mm.gtt_mtrr >= 0) {
52924 - mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base,
52925 - dev->agp->agp_info.aper_size * 1024 * 1024);
52926 - dev_priv->mm.gtt_mtrr = -1;
52927 - }
52928 -
52929 if (drm_core_check_feature(dev, DRIVER_MODESET)) {
52930 + io_mapping_free(dev_priv->mm.gtt_mapping);
52931 drm_irq_uninstall(dev);
52932 }
52933
52934 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_drv.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_drv.c
52935 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_drv.c 2009-05-10 22:04:38.000000000 +0200
52936 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_drv.c 2009-05-10 23:48:28.000000000 +0200
52937 @@ -27,7 +27,6 @@
52938 *
52939 */
52940
52941 -#include <linux/device.h>
52942 #include "drmP.h"
52943 #include "drm.h"
52944 #include "i915_drm.h"
52945 @@ -67,14 +66,6 @@
52946
52947 i915_save_state(dev);
52948
52949 - /* If KMS is active, we do the leavevt stuff here */
52950 - if (drm_core_check_feature(dev, DRIVER_MODESET)) {
52951 - if (i915_gem_idle(dev))
52952 - dev_err(&dev->pdev->dev,
52953 - "GEM idle failed, resume may fail\n");
52954 - drm_irq_uninstall(dev);
52955 - }
52956 -
52957 intel_opregion_free(dev);
52958
52959 if (state.event == PM_EVENT_SUSPEND) {
52960 @@ -88,9 +79,6 @@
52961
52962 static int i915_resume(struct drm_device *dev)
52963 {
52964 - struct drm_i915_private *dev_priv = dev->dev_private;
52965 - int ret = 0;
52966 -
52967 pci_set_power_state(dev->pdev, PCI_D0);
52968 pci_restore_state(dev->pdev);
52969 if (pci_enable_device(dev->pdev))
52970 @@ -101,26 +89,11 @@
52971
52972 intel_opregion_init(dev);
52973
52974 - /* KMS EnterVT equivalent */
52975 - if (drm_core_check_feature(dev, DRIVER_MODESET)) {
52976 - mutex_lock(&dev->struct_mutex);
52977 - dev_priv->mm.suspended = 0;
52978 -
52979 - ret = i915_gem_init_ringbuffer(dev);
52980 - if (ret != 0)
52981 - ret = -1;
52982 - mutex_unlock(&dev->struct_mutex);
52983 -
52984 - drm_irq_install(dev);
52985 - }
52986 -
52987 - return ret;
52988 + return 0;
52989 }
52990
52991 static struct vm_operations_struct i915_gem_vm_ops = {
52992 .fault = i915_gem_fault,
52993 - .open = drm_gem_vm_open,
52994 - .close = drm_gem_vm_close,
52995 };
52996
52997 static struct drm_driver driver = {
52998 @@ -139,6 +112,7 @@
52999 .suspend = i915_suspend,
53000 .resume = i915_resume,
53001 .device_is_agp = i915_driver_device_is_agp,
53002 + .get_vblank_counter = i915_get_vblank_counter,
53003 .enable_vblank = i915_enable_vblank,
53004 .disable_vblank = i915_disable_vblank,
53005 .irq_preinstall = i915_driver_irq_preinstall,
53006 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_drv.h linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_drv.h
53007 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_drv.h 2009-05-10 22:04:38.000000000 +0200
53008 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_drv.h 2009-05-10 23:48:28.000000000 +0200
53009 @@ -184,8 +184,6 @@
53010 unsigned int lvds_dither:1;
53011 unsigned int lvds_vbt:1;
53012 unsigned int int_crt_support:1;
53013 - unsigned int lvds_use_ssc:1;
53014 - int lvds_ssc_freq;
53015
53016 struct drm_i915_fence_reg fence_regs[16]; /* assume 965 */
53017 int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */
53018 @@ -279,13 +277,13 @@
53019 u8 saveAR_INDEX;
53020 u8 saveAR[21];
53021 u8 saveDACMASK;
53022 + u8 saveDACDATA[256*3]; /* 256 3-byte colors */
53023 u8 saveCR[37];
53024
53025 struct {
53026 struct drm_mm gtt_space;
53027
53028 struct io_mapping *gtt_mapping;
53029 - int gtt_mtrr;
53030
53031 /**
53032 * List of objects currently involved in rendering from the
53033 @@ -456,12 +454,6 @@
53034
53035 /** for phy allocated objects */
53036 struct drm_i915_gem_phys_object *phys_obj;
53037 -
53038 - /**
53039 - * Used for checking the object doesn't appear more than once
53040 - * in an execbuffer object list.
53041 - */
53042 - int in_execbuffer;
53043 };
53044
53045 /**
53046 @@ -542,7 +534,6 @@
53047 extern int i915_enable_vblank(struct drm_device *dev, int crtc);
53048 extern void i915_disable_vblank(struct drm_device *dev, int crtc);
53049 extern u32 i915_get_vblank_counter(struct drm_device *dev, int crtc);
53050 -extern u32 gm45_get_vblank_counter(struct drm_device *dev, int crtc);
53051 extern int i915_vblank_swap(struct drm_device *dev, void *data,
53052 struct drm_file *file_priv);
53053 extern void i915_enable_irq(drm_i915_private_t *dev_priv, u32 mask);
53054 @@ -610,7 +601,6 @@
53055 void i915_gem_free_object(struct drm_gem_object *obj);
53056 int i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment);
53057 void i915_gem_object_unpin(struct drm_gem_object *obj);
53058 -int i915_gem_object_unbind(struct drm_gem_object *obj);
53059 void i915_gem_lastclose(struct drm_device *dev);
53060 uint32_t i915_get_gem_seqno(struct drm_device *dev);
53061 void i915_gem_retire_requests(struct drm_device *dev);
53062 @@ -623,7 +613,6 @@
53063 void i915_gem_cleanup_ringbuffer(struct drm_device *dev);
53064 int i915_gem_do_init(struct drm_device *dev, unsigned long start,
53065 unsigned long end);
53066 -int i915_gem_idle(struct drm_device *dev);
53067 int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
53068 int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj,
53069 int write);
53070 @@ -795,11 +784,6 @@
53071 IS_I945GM(dev) || IS_I965GM(dev) || IS_GM45(dev))
53072
53073 #define I915_NEED_GFX_HWS(dev) (IS_G33(dev) || IS_GM45(dev) || IS_G4X(dev))
53074 -/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte
53075 - * rows, which changed the alignment requirements and fence programming.
53076 - */
53077 -#define HAS_128_BYTE_Y_TILING(dev) (IS_I9XX(dev) && !(IS_I915G(dev) || \
53078 - IS_I915GM(dev)))
53079 #define SUPPORTS_INTEGRATED_HDMI(dev) (IS_G4X(dev))
53080
53081 #define PRIMARY_RINGBUFFER_SIZE (128*1024)
53082 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_gem.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_gem.c
53083 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_gem.c 2009-05-10 22:04:38.000000000 +0200
53084 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_gem.c 2009-05-10 23:48:28.000000000 +0200
53085 @@ -34,6 +34,10 @@
53086
53087 #define I915_GEM_GPU_DOMAINS (~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT))
53088
53089 +static void
53090 +i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj,
53091 + uint32_t read_domains,
53092 + uint32_t write_domain);
53093 static void i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj);
53094 static void i915_gem_object_flush_gtt_write_domain(struct drm_gem_object *obj);
53095 static void i915_gem_object_flush_cpu_write_domain(struct drm_gem_object *obj);
53096 @@ -48,7 +52,7 @@
53097 static int i915_gem_object_wait_rendering(struct drm_gem_object *obj);
53098 static int i915_gem_object_bind_to_gtt(struct drm_gem_object *obj,
53099 unsigned alignment);
53100 -static int i915_gem_object_get_fence_reg(struct drm_gem_object *obj, bool write);
53101 +static void i915_gem_object_get_fence_reg(struct drm_gem_object *obj);
53102 static void i915_gem_clear_fence_reg(struct drm_gem_object *obj);
53103 static int i915_gem_evict_something(struct drm_device *dev);
53104 static int i915_gem_phys_pwrite(struct drm_device *dev, struct drm_gem_object *obj,
53105 @@ -563,7 +567,6 @@
53106 pgoff_t page_offset;
53107 unsigned long pfn;
53108 int ret = 0;
53109 - bool write = !!(vmf->flags & FAULT_FLAG_WRITE);
53110
53111 /* We don't use vmf->pgoff since that has the fake offset */
53112 page_offset = ((unsigned long)vmf->virtual_address - vma->vm_start) >>
53113 @@ -582,13 +585,8 @@
53114
53115 /* Need a new fence register? */
53116 if (obj_priv->fence_reg == I915_FENCE_REG_NONE &&
53117 - obj_priv->tiling_mode != I915_TILING_NONE) {
53118 - ret = i915_gem_object_get_fence_reg(obj, write);
53119 - if (ret) {
53120 - mutex_unlock(&dev->struct_mutex);
53121 - return VM_FAULT_SIGBUS;
53122 - }
53123 - }
53124 + obj_priv->tiling_mode != I915_TILING_NONE)
53125 + i915_gem_object_get_fence_reg(obj);
53126
53127 pfn = ((dev->agp->base + obj_priv->gtt_offset) >> PAGE_SHIFT) +
53128 page_offset;
53129 @@ -603,6 +601,8 @@
53130 case -EAGAIN:
53131 return VM_FAULT_OOM;
53132 case -EFAULT:
53133 + case -EBUSY:
53134 + DRM_ERROR("can't insert pfn?? fault or busy...\n");
53135 return VM_FAULT_SIGBUS;
53136 default:
53137 return VM_FAULT_NOPAGE;
53138 @@ -678,30 +678,6 @@
53139 return ret;
53140 }
53141
53142 -static void
53143 -i915_gem_free_mmap_offset(struct drm_gem_object *obj)
53144 -{
53145 - struct drm_device *dev = obj->dev;
53146 - struct drm_i915_gem_object *obj_priv = obj->driver_private;
53147 - struct drm_gem_mm *mm = dev->mm_private;
53148 - struct drm_map_list *list;
53149 -
53150 - list = &obj->map_list;
53151 - drm_ht_remove_item(&mm->offset_hash, &list->hash);
53152 -
53153 - if (list->file_offset_node) {
53154 - drm_mm_put_block(list->file_offset_node);
53155 - list->file_offset_node = NULL;
53156 - }
53157 -
53158 - if (list->map) {
53159 - drm_free(list->map, sizeof(struct drm_map), DRM_MEM_DRIVER);
53160 - list->map = NULL;
53161 - }
53162 -
53163 - obj_priv->mmap_offset = 0;
53164 -}
53165 -
53166 /**
53167 * i915_gem_get_gtt_alignment - return required GTT alignment for an object
53168 * @obj: object to check
53169 @@ -776,11 +752,8 @@
53170
53171 if (!obj_priv->mmap_offset) {
53172 ret = i915_gem_create_mmap_offset(obj);
53173 - if (ret) {
53174 - drm_gem_object_unreference(obj);
53175 - mutex_unlock(&dev->struct_mutex);
53176 + if (ret)
53177 return ret;
53178 - }
53179 }
53180
53181 args->offset = obj_priv->mmap_offset;
53182 @@ -1051,9 +1024,6 @@
53183 drm_i915_private_t *dev_priv = dev->dev_private;
53184 uint32_t seqno;
53185
53186 - if (!dev_priv->hw_status_page)
53187 - return;
53188 -
53189 seqno = i915_get_gem_seqno(dev);
53190
53191 while (!list_empty(&dev_priv->mm.request_list)) {
53192 @@ -1241,7 +1211,7 @@
53193 /**
53194 * Unbinds an object from the GTT aperture.
53195 */
53196 -int
53197 +static int
53198 i915_gem_object_unbind(struct drm_gem_object *obj)
53199 {
53200 struct drm_device *dev = obj->dev;
53201 @@ -1475,26 +1445,21 @@
53202 drm_i915_private_t *dev_priv = dev->dev_private;
53203 struct drm_i915_gem_object *obj_priv = obj->driver_private;
53204 int regnum = obj_priv->fence_reg;
53205 - int tile_width;
53206 - uint32_t fence_reg, val;
53207 + uint32_t val;
53208 uint32_t pitch_val;
53209
53210 if ((obj_priv->gtt_offset & ~I915_FENCE_START_MASK) ||
53211 (obj_priv->gtt_offset & (obj->size - 1))) {
53212 - WARN(1, "%s: object 0x%08x not 1M or size (0x%zx) aligned\n",
53213 - __func__, obj_priv->gtt_offset, obj->size);
53214 + WARN(1, "%s: object not 1M or size aligned\n", __func__);
53215 return;
53216 }
53217
53218 - if (obj_priv->tiling_mode == I915_TILING_Y &&
53219 - HAS_128_BYTE_Y_TILING(dev))
53220 - tile_width = 128;
53221 + if (obj_priv->tiling_mode == I915_TILING_Y && (IS_I945G(dev) ||
53222 + IS_I945GM(dev) ||
53223 + IS_G33(dev)))
53224 + pitch_val = (obj_priv->stride / 128) - 1;
53225 else
53226 - tile_width = 512;
53227 -
53228 - /* Note: pitch better be a power of two tile widths */
53229 - pitch_val = obj_priv->stride / tile_width;
53230 - pitch_val = ffs(pitch_val) - 1;
53231 + pitch_val = (obj_priv->stride / 512) - 1;
53232
53233 val = obj_priv->gtt_offset;
53234 if (obj_priv->tiling_mode == I915_TILING_Y)
53235 @@ -1503,11 +1468,7 @@
53236 val |= pitch_val << I830_FENCE_PITCH_SHIFT;
53237 val |= I830_FENCE_REG_VALID;
53238
53239 - if (regnum < 8)
53240 - fence_reg = FENCE_REG_830_0 + (regnum * 4);
53241 - else
53242 - fence_reg = FENCE_REG_945_8 + ((regnum - 8) * 4);
53243 - I915_WRITE(fence_reg, val);
53244 + I915_WRITE(FENCE_REG_830_0 + (regnum * 4), val);
53245 }
53246
53247 static void i830_write_fence_reg(struct drm_i915_fence_reg *reg)
53248 @@ -1522,8 +1483,7 @@
53249
53250 if ((obj_priv->gtt_offset & ~I915_FENCE_START_MASK) ||
53251 (obj_priv->gtt_offset & (obj->size - 1))) {
53252 - WARN(1, "%s: object 0x%08x not 1M or size aligned\n",
53253 - __func__, obj_priv->gtt_offset);
53254 + WARN(1, "%s: object not 1M or size aligned\n", __func__);
53255 return;
53256 }
53257
53258 @@ -1543,7 +1503,6 @@
53259 /**
53260 * i915_gem_object_get_fence_reg - set up a fence reg for an object
53261 * @obj: object to map through a fence reg
53262 - * @write: object is about to be written
53263 *
53264 * When mapping objects through the GTT, userspace wants to be able to write
53265 * to them without having to worry about swizzling if the object is tiled.
53266 @@ -1554,77 +1513,49 @@
53267 * It then sets up the reg based on the object's properties: address, pitch
53268 * and tiling format.
53269 */
53270 -static int
53271 -i915_gem_object_get_fence_reg(struct drm_gem_object *obj, bool write)
53272 +static void
53273 +i915_gem_object_get_fence_reg(struct drm_gem_object *obj)
53274 {
53275 struct drm_device *dev = obj->dev;
53276 struct drm_i915_private *dev_priv = dev->dev_private;
53277 struct drm_i915_gem_object *obj_priv = obj->driver_private;
53278 struct drm_i915_fence_reg *reg = NULL;
53279 - struct drm_i915_gem_object *old_obj_priv = NULL;
53280 - int i, ret, avail;
53281 + int i, ret;
53282
53283 switch (obj_priv->tiling_mode) {
53284 case I915_TILING_NONE:
53285 WARN(1, "allocating a fence for non-tiled object?\n");
53286 break;
53287 case I915_TILING_X:
53288 - if (!obj_priv->stride)
53289 - return -EINVAL;
53290 - WARN((obj_priv->stride & (512 - 1)),
53291 - "object 0x%08x is X tiled but has non-512B pitch\n",
53292 - obj_priv->gtt_offset);
53293 + WARN(obj_priv->stride & (512 - 1),
53294 + "object is X tiled but has non-512B pitch\n");
53295 break;
53296 case I915_TILING_Y:
53297 - if (!obj_priv->stride)
53298 - return -EINVAL;
53299 - WARN((obj_priv->stride & (128 - 1)),
53300 - "object 0x%08x is Y tiled but has non-128B pitch\n",
53301 - obj_priv->gtt_offset);
53302 + WARN(obj_priv->stride & (128 - 1),
53303 + "object is Y tiled but has non-128B pitch\n");
53304 break;
53305 }
53306
53307 /* First try to find a free reg */
53308 -try_again:
53309 - avail = 0;
53310 for (i = dev_priv->fence_reg_start; i < dev_priv->num_fence_regs; i++) {
53311 reg = &dev_priv->fence_regs[i];
53312 if (!reg->obj)
53313 break;
53314 -
53315 - old_obj_priv = reg->obj->driver_private;
53316 - if (!old_obj_priv->pin_count)
53317 - avail++;
53318 }
53319
53320 /* None available, try to steal one or wait for a user to finish */
53321 if (i == dev_priv->num_fence_regs) {
53322 - uint32_t seqno = dev_priv->mm.next_gem_seqno;
53323 + struct drm_i915_gem_object *old_obj_priv = NULL;
53324 loff_t offset;
53325
53326 - if (avail == 0)
53327 - return -ENOMEM;
53328 -
53329 +try_again:
53330 + /* Could try to use LRU here instead... */
53331 for (i = dev_priv->fence_reg_start;
53332 i < dev_priv->num_fence_regs; i++) {
53333 - uint32_t this_seqno;
53334 -
53335 reg = &dev_priv->fence_regs[i];
53336 old_obj_priv = reg->obj->driver_private;
53337 -
53338 - if (old_obj_priv->pin_count)
53339 - continue;
53340 -
53341 - /* i915 uses fences for GPU access to tiled buffers */
53342 - if (IS_I965G(dev) || !old_obj_priv->active)
53343 + if (!old_obj_priv->pin_count)
53344 break;
53345 -
53346 - /* find the seqno of the first available fence */
53347 - this_seqno = old_obj_priv->last_rendering_seqno;
53348 - if (this_seqno != 0 &&
53349 - reg->obj->write_domain == 0 &&
53350 - i915_seqno_passed(seqno, this_seqno))
53351 - seqno = this_seqno;
53352 }
53353
53354 /*
53355 @@ -1632,25 +1563,14 @@
53356 * objects to finish before trying again.
53357 */
53358 if (i == dev_priv->num_fence_regs) {
53359 - if (seqno == dev_priv->mm.next_gem_seqno) {
53360 - i915_gem_flush(dev,
53361 - I915_GEM_GPU_DOMAINS,
53362 - I915_GEM_GPU_DOMAINS);
53363 - seqno = i915_add_request(dev,
53364 - I915_GEM_GPU_DOMAINS);
53365 - if (seqno == 0)
53366 - return -ENOMEM;
53367 + ret = i915_gem_object_wait_rendering(reg->obj);
53368 + if (ret) {
53369 + WARN(ret, "wait_rendering failed: %d\n", ret);
53370 + return;
53371 }
53372 -
53373 - ret = i915_wait_request(dev, seqno);
53374 - if (ret)
53375 - return ret;
53376 goto try_again;
53377 }
53378
53379 - BUG_ON(old_obj_priv->active ||
53380 - (reg->obj->write_domain & I915_GEM_GPU_DOMAINS));
53381 -
53382 /*
53383 * Zap this virtual mapping so we can set up a fence again
53384 * for this object next time we need it.
53385 @@ -1671,8 +1591,6 @@
53386 i915_write_fence_reg(reg);
53387 else
53388 i830_write_fence_reg(reg);
53389 -
53390 - return 0;
53391 }
53392
53393 /**
53394 @@ -1691,17 +1609,8 @@
53395
53396 if (IS_I965G(dev))
53397 I915_WRITE64(FENCE_REG_965_0 + (obj_priv->fence_reg * 8), 0);
53398 - else {
53399 - uint32_t fence_reg;
53400 -
53401 - if (obj_priv->fence_reg < 8)
53402 - fence_reg = FENCE_REG_830_0 + obj_priv->fence_reg * 4;
53403 - else
53404 - fence_reg = FENCE_REG_945_8 + (obj_priv->fence_reg -
53405 - 8) * 4;
53406 -
53407 - I915_WRITE(fence_reg, 0);
53408 - }
53409 + else
53410 + I915_WRITE(FENCE_REG_830_0 + (obj_priv->fence_reg * 4), 0);
53411
53412 dev_priv->fence_regs[obj_priv->fence_reg].obj = NULL;
53413 obj_priv->fence_reg = I915_FENCE_REG_NONE;
53414 @@ -1722,7 +1631,7 @@
53415 if (dev_priv->mm.suspended)
53416 return -EBUSY;
53417 if (alignment == 0)
53418 - alignment = i915_gem_get_gtt_alignment(obj);
53419 + alignment = PAGE_SIZE;
53420 if (alignment & (PAGE_SIZE - 1)) {
53421 DRM_ERROR("Invalid object alignment requested %u\n", alignment);
53422 return -EINVAL;
53423 @@ -2065,28 +1974,30 @@
53424 * drm_agp_chipset_flush
53425 */
53426 static void
53427 -i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj)
53428 +i915_gem_object_set_to_gpu_domain(struct drm_gem_object *obj,
53429 + uint32_t read_domains,
53430 + uint32_t write_domain)
53431 {
53432 struct drm_device *dev = obj->dev;
53433 struct drm_i915_gem_object *obj_priv = obj->driver_private;
53434 uint32_t invalidate_domains = 0;
53435 uint32_t flush_domains = 0;
53436
53437 - BUG_ON(obj->pending_read_domains & I915_GEM_DOMAIN_CPU);
53438 - BUG_ON(obj->pending_write_domain == I915_GEM_DOMAIN_CPU);
53439 + BUG_ON(read_domains & I915_GEM_DOMAIN_CPU);
53440 + BUG_ON(write_domain == I915_GEM_DOMAIN_CPU);
53441
53442 #if WATCH_BUF
53443 DRM_INFO("%s: object %p read %08x -> %08x write %08x -> %08x\n",
53444 __func__, obj,
53445 - obj->read_domains, obj->pending_read_domains,
53446 - obj->write_domain, obj->pending_write_domain);
53447 + obj->read_domains, read_domains,
53448 + obj->write_domain, write_domain);
53449 #endif
53450 /*
53451 * If the object isn't moving to a new write domain,
53452 * let the object stay in multiple read domains
53453 */
53454 - if (obj->pending_write_domain == 0)
53455 - obj->pending_read_domains |= obj->read_domains;
53456 + if (write_domain == 0)
53457 + read_domains |= obj->read_domains;
53458 else
53459 obj_priv->dirty = 1;
53460
53461 @@ -2096,17 +2007,15 @@
53462 * any read domains which differ from the old
53463 * write domain
53464 */
53465 - if (obj->write_domain &&
53466 - obj->write_domain != obj->pending_read_domains) {
53467 + if (obj->write_domain && obj->write_domain != read_domains) {
53468 flush_domains |= obj->write_domain;
53469 - invalidate_domains |=
53470 - obj->pending_read_domains & ~obj->write_domain;
53471 + invalidate_domains |= read_domains & ~obj->write_domain;
53472 }
53473 /*
53474 * Invalidate any read caches which may have
53475 * stale data. That is, any new read domains.
53476 */
53477 - invalidate_domains |= obj->pending_read_domains & ~obj->read_domains;
53478 + invalidate_domains |= read_domains & ~obj->read_domains;
53479 if ((flush_domains | invalidate_domains) & I915_GEM_DOMAIN_CPU) {
53480 #if WATCH_BUF
53481 DRM_INFO("%s: CPU domain flush %08x invalidate %08x\n",
53482 @@ -2115,15 +2024,9 @@
53483 i915_gem_clflush_object(obj);
53484 }
53485
53486 - /* The actual obj->write_domain will be updated with
53487 - * pending_write_domain after we emit the accumulated flush for all
53488 - * of our domain changes in execbuffers (which clears objects'
53489 - * write_domains). So if we have a current write domain that we
53490 - * aren't changing, set pending_write_domain to that.
53491 - */
53492 - if (flush_domains == 0 && obj->pending_write_domain == 0)
53493 - obj->pending_write_domain = obj->write_domain;
53494 - obj->read_domains = obj->pending_read_domains;
53495 + if ((write_domain | flush_domains) != 0)
53496 + obj->write_domain = write_domain;
53497 + obj->read_domains = read_domains;
53498
53499 dev->invalidate_domains |= invalidate_domains;
53500 dev->flush_domains |= flush_domains;
53501 @@ -2326,8 +2229,6 @@
53502 (int) reloc.offset,
53503 reloc.read_domains,
53504 reloc.write_domain);
53505 - drm_gem_object_unreference(target_obj);
53506 - i915_gem_object_unpin(obj);
53507 return -EINVAL;
53508 }
53509
53510 @@ -2514,7 +2415,6 @@
53511 struct drm_i915_gem_exec_object *exec_list = NULL;
53512 struct drm_gem_object **object_list = NULL;
53513 struct drm_gem_object *batch_obj;
53514 - struct drm_i915_gem_object *obj_priv;
53515 int ret, i, pinned = 0;
53516 uint64_t exec_offset;
53517 uint32_t seqno, flush_domains;
53518 @@ -2558,15 +2458,13 @@
53519 if (dev_priv->mm.wedged) {
53520 DRM_ERROR("Execbuf while wedged\n");
53521 mutex_unlock(&dev->struct_mutex);
53522 - ret = -EIO;
53523 - goto pre_mutex_err;
53524 + return -EIO;
53525 }
53526
53527 if (dev_priv->mm.suspended) {
53528 DRM_ERROR("Execbuf while VT-switched.\n");
53529 mutex_unlock(&dev->struct_mutex);
53530 - ret = -EBUSY;
53531 - goto pre_mutex_err;
53532 + return -EBUSY;
53533 }
53534
53535 /* Look up object handles */
53536 @@ -2579,15 +2477,6 @@
53537 ret = -EBADF;
53538 goto err;
53539 }
53540 -
53541 - obj_priv = object_list[i]->driver_private;
53542 - if (obj_priv->in_execbuffer) {
53543 - DRM_ERROR("Object %p appears more than once in object list\n",
53544 - object_list[i]);
53545 - ret = -EBADF;
53546 - goto err;
53547 - }
53548 - obj_priv->in_execbuffer = true;
53549 }
53550
53551 /* Pin and relocate */
53552 @@ -2643,7 +2532,9 @@
53553 struct drm_gem_object *obj = object_list[i];
53554
53555 /* Compute new gpu domains and update invalidate/flush */
53556 - i915_gem_object_set_to_gpu_domain(obj);
53557 + i915_gem_object_set_to_gpu_domain(obj,
53558 + obj->pending_read_domains,
53559 + obj->pending_write_domain);
53560 }
53561
53562 i915_verify_inactive(dev, __FILE__, __LINE__);
53563 @@ -2662,12 +2553,6 @@
53564 (void)i915_add_request(dev, dev->flush_domains);
53565 }
53566
53567 - for (i = 0; i < args->buffer_count; i++) {
53568 - struct drm_gem_object *obj = object_list[i];
53569 -
53570 - obj->write_domain = obj->pending_write_domain;
53571 - }
53572 -
53573 i915_verify_inactive(dev, __FILE__, __LINE__);
53574
53575 #if WATCH_COHERENCY
53576 @@ -2725,32 +2610,24 @@
53577
53578 i915_verify_inactive(dev, __FILE__, __LINE__);
53579
53580 + /* Copy the new buffer offsets back to the user's exec list. */
53581 + ret = copy_to_user((struct drm_i915_relocation_entry __user *)
53582 + (uintptr_t) args->buffers_ptr,
53583 + exec_list,
53584 + sizeof(*exec_list) * args->buffer_count);
53585 + if (ret)
53586 + DRM_ERROR("failed to copy %d exec entries "
53587 + "back to user (%d)\n",
53588 + args->buffer_count, ret);
53589 err:
53590 for (i = 0; i < pinned; i++)
53591 i915_gem_object_unpin(object_list[i]);
53592
53593 - for (i = 0; i < args->buffer_count; i++) {
53594 - if (object_list[i]) {
53595 - obj_priv = object_list[i]->driver_private;
53596 - obj_priv->in_execbuffer = false;
53597 - }
53598 + for (i = 0; i < args->buffer_count; i++)
53599 drm_gem_object_unreference(object_list[i]);
53600 - }
53601
53602 mutex_unlock(&dev->struct_mutex);
53603
53604 - if (!ret) {
53605 - /* Copy the new buffer offsets back to the user's exec list. */
53606 - ret = copy_to_user((struct drm_i915_relocation_entry __user *)
53607 - (uintptr_t) args->buffers_ptr,
53608 - exec_list,
53609 - sizeof(*exec_list) * args->buffer_count);
53610 - if (ret)
53611 - DRM_ERROR("failed to copy %d exec entries "
53612 - "back to user (%d)\n",
53613 - args->buffer_count, ret);
53614 - }
53615 -
53616 pre_mutex_err:
53617 drm_free(object_list, sizeof(*object_list) * args->buffer_count,
53618 DRM_MEM_DRIVER);
53619 @@ -2772,22 +2649,7 @@
53620 ret = i915_gem_object_bind_to_gtt(obj, alignment);
53621 if (ret != 0) {
53622 if (ret != -EBUSY && ret != -ERESTARTSYS)
53623 - DRM_ERROR("Failure to bind: %d\n", ret);
53624 - return ret;
53625 - }
53626 - }
53627 - /*
53628 - * Pre-965 chips need a fence register set up in order to
53629 - * properly handle tiled surfaces.
53630 - */
53631 - if (!IS_I965G(dev) &&
53632 - obj_priv->fence_reg == I915_FENCE_REG_NONE &&
53633 - obj_priv->tiling_mode != I915_TILING_NONE) {
53634 - ret = i915_gem_object_get_fence_reg(obj, true);
53635 - if (ret != 0) {
53636 - if (ret != -EBUSY && ret != -ERESTARTSYS)
53637 - DRM_ERROR("Failure to install fence: %d\n",
53638 - ret);
53639 + DRM_ERROR("Failure to bind: %d", ret);
53640 return ret;
53641 }
53642 }
53643 @@ -2861,7 +2723,6 @@
53644 if (obj_priv->pin_filp != NULL && obj_priv->pin_filp != file_priv) {
53645 DRM_ERROR("Already pinned in i915_gem_pin_ioctl(): %d\n",
53646 args->handle);
53647 - drm_gem_object_unreference(obj);
53648 mutex_unlock(&dev->struct_mutex);
53649 return -EINVAL;
53650 }
53651 @@ -2942,13 +2803,6 @@
53652 return -EBADF;
53653 }
53654
53655 - /* Update the active list for the hardware's current position.
53656 - * Otherwise this only updates on a delayed timer or when irqs are
53657 - * actually unmasked, and our working set ends up being larger than
53658 - * required.
53659 - */
53660 - i915_gem_retire_requests(dev);
53661 -
53662 obj_priv = obj->driver_private;
53663 /* Don't count being on the flushing list against the object being
53664 * done. Otherwise, a buffer left on the flushing list but not getting
53665 @@ -3001,6 +2855,9 @@
53666 void i915_gem_free_object(struct drm_gem_object *obj)
53667 {
53668 struct drm_device *dev = obj->dev;
53669 + struct drm_gem_mm *mm = dev->mm_private;
53670 + struct drm_map_list *list;
53671 + struct drm_map *map;
53672 struct drm_i915_gem_object *obj_priv = obj->driver_private;
53673
53674 while (obj_priv->pin_count > 0)
53675 @@ -3011,7 +2868,19 @@
53676
53677 i915_gem_object_unbind(obj);
53678
53679 - i915_gem_free_mmap_offset(obj);
53680 + list = &obj->map_list;
53681 + drm_ht_remove_item(&mm->offset_hash, &list->hash);
53682 +
53683 + if (list->file_offset_node) {
53684 + drm_mm_put_block(list->file_offset_node);
53685 + list->file_offset_node = NULL;
53686 + }
53687 +
53688 + map = list->map;
53689 + if (map) {
53690 + drm_free(map, sizeof(*map), DRM_MEM_DRIVER);
53691 + list->map = NULL;
53692 + }
53693
53694 drm_free(obj_priv->page_cpu_valid, 1, DRM_MEM_DRIVER);
53695 drm_free(obj->driver_private, 1, DRM_MEM_DRIVER);
53696 @@ -3050,7 +2919,7 @@
53697 return 0;
53698 }
53699
53700 -int
53701 +static int
53702 i915_gem_idle(struct drm_device *dev)
53703 {
53704 drm_i915_private_t *dev_priv = dev->dev_private;
53705 @@ -3196,7 +3065,6 @@
53706 if (dev_priv->hw_status_page == NULL) {
53707 DRM_ERROR("Failed to map status page.\n");
53708 memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
53709 - i915_gem_object_unpin(obj);
53710 drm_gem_object_unreference(obj);
53711 return -EINVAL;
53712 }
53713 @@ -3209,31 +3077,6 @@
53714 return 0;
53715 }
53716
53717 -static void
53718 -i915_gem_cleanup_hws(struct drm_device *dev)
53719 -{
53720 - drm_i915_private_t *dev_priv = dev->dev_private;
53721 - struct drm_gem_object *obj;
53722 - struct drm_i915_gem_object *obj_priv;
53723 -
53724 - if (dev_priv->hws_obj == NULL)
53725 - return;
53726 -
53727 - obj = dev_priv->hws_obj;
53728 - obj_priv = obj->driver_private;
53729 -
53730 - kunmap(obj_priv->page_list[0]);
53731 - i915_gem_object_unpin(obj);
53732 - drm_gem_object_unreference(obj);
53733 - dev_priv->hws_obj = NULL;
53734 -
53735 - memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
53736 - dev_priv->hw_status_page = NULL;
53737 -
53738 - /* Write high address into HWS_PGA when disabling. */
53739 - I915_WRITE(HWS_PGA, 0x1ffff000);
53740 -}
53741 -
53742 int
53743 i915_gem_init_ringbuffer(struct drm_device *dev)
53744 {
53745 @@ -3251,7 +3094,6 @@
53746 obj = drm_gem_object_alloc(dev, 128 * 1024);
53747 if (obj == NULL) {
53748 DRM_ERROR("Failed to allocate ringbuffer\n");
53749 - i915_gem_cleanup_hws(dev);
53750 return -ENOMEM;
53751 }
53752 obj_priv = obj->driver_private;
53753 @@ -3259,7 +3101,6 @@
53754 ret = i915_gem_object_pin(obj, 4096);
53755 if (ret != 0) {
53756 drm_gem_object_unreference(obj);
53757 - i915_gem_cleanup_hws(dev);
53758 return ret;
53759 }
53760
53761 @@ -3277,9 +3118,7 @@
53762 if (ring->map.handle == NULL) {
53763 DRM_ERROR("Failed to map ringbuffer.\n");
53764 memset(&dev_priv->ring, 0, sizeof(dev_priv->ring));
53765 - i915_gem_object_unpin(obj);
53766 drm_gem_object_unreference(obj);
53767 - i915_gem_cleanup_hws(dev);
53768 return -EINVAL;
53769 }
53770 ring->ring_obj = obj;
53771 @@ -3359,7 +3198,20 @@
53772 dev_priv->ring.ring_obj = NULL;
53773 memset(&dev_priv->ring, 0, sizeof(dev_priv->ring));
53774
53775 - i915_gem_cleanup_hws(dev);
53776 + if (dev_priv->hws_obj != NULL) {
53777 + struct drm_gem_object *obj = dev_priv->hws_obj;
53778 + struct drm_i915_gem_object *obj_priv = obj->driver_private;
53779 +
53780 + kunmap(obj_priv->page_list[0]);
53781 + i915_gem_object_unpin(obj);
53782 + drm_gem_object_unreference(obj);
53783 + dev_priv->hws_obj = NULL;
53784 + memset(&dev_priv->hws_map, 0, sizeof(dev_priv->hws_map));
53785 + dev_priv->hw_status_page = NULL;
53786 +
53787 + /* Write high address into HWS_PGA when disabling. */
53788 + I915_WRITE(HWS_PGA, 0x1ffff000);
53789 + }
53790 }
53791
53792 int
53793 @@ -3377,6 +3229,10 @@
53794 dev_priv->mm.wedged = 0;
53795 }
53796
53797 + dev_priv->mm.gtt_mapping = io_mapping_create_wc(dev->agp->base,
53798 + dev->agp->agp_info.aper_size
53799 + * 1024 * 1024);
53800 +
53801 mutex_lock(&dev->struct_mutex);
53802 dev_priv->mm.suspended = 0;
53803
53804 @@ -3399,6 +3255,7 @@
53805 i915_gem_leavevt_ioctl(struct drm_device *dev, void *data,
53806 struct drm_file *file_priv)
53807 {
53808 + drm_i915_private_t *dev_priv = dev->dev_private;
53809 int ret;
53810
53811 if (drm_core_check_feature(dev, DRIVER_MODESET))
53812 @@ -3407,6 +3264,7 @@
53813 ret = i915_gem_idle(dev);
53814 drm_irq_uninstall(dev);
53815
53816 + io_mapping_free(dev_priv->mm.gtt_mapping);
53817 return ret;
53818 }
53819
53820 @@ -3415,9 +3273,6 @@
53821 {
53822 int ret;
53823
53824 - if (drm_core_check_feature(dev, DRIVER_MODESET))
53825 - return;
53826 -
53827 ret = i915_gem_idle(dev);
53828 if (ret)
53829 DRM_ERROR("failed to idle hardware: %d\n", ret);
53830 @@ -3439,7 +3294,7 @@
53831 /* Old X drivers will take 0-2 for front, back, depth buffers */
53832 dev_priv->fence_reg_start = 3;
53833
53834 - if (IS_I965G(dev) || IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev))
53835 + if (IS_I965G(dev))
53836 dev_priv->num_fence_regs = 16;
53837 else
53838 dev_priv->num_fence_regs = 8;
53839 @@ -3615,7 +3470,7 @@
53840 user_data = (char __user *) (uintptr_t) args->data_ptr;
53841 obj_addr = obj_priv->phys_obj->handle->vaddr + args->offset;
53842
53843 - DRM_DEBUG("obj_addr %p, %lld\n", obj_addr, args->size);
53844 + DRM_ERROR("obj_addr %p, %lld\n", obj_addr, args->size);
53845 ret = copy_from_user(obj_addr, user_data, args->size);
53846 if (ret)
53847 return -EFAULT;
53848 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_gem_tiling.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_gem_tiling.c
53849 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_gem_tiling.c 2009-05-10 22:04:38.000000000 +0200
53850 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_gem_tiling.c 2009-05-10 23:48:28.000000000 +0200
53851 @@ -173,73 +173,6 @@
53852 dev_priv->mm.bit_6_swizzle_y = swizzle_y;
53853 }
53854
53855 -
53856 -/**
53857 - * Returns the size of the fence for a tiled object of the given size.
53858 - */
53859 -static int
53860 -i915_get_fence_size(struct drm_device *dev, int size)
53861 -{
53862 - int i;
53863 - int start;
53864 -
53865 - if (IS_I965G(dev)) {
53866 - /* The 965 can have fences at any page boundary. */
53867 - return ALIGN(size, 4096);
53868 - } else {
53869 - /* Align the size to a power of two greater than the smallest
53870 - * fence size.
53871 - */
53872 - if (IS_I9XX(dev))
53873 - start = 1024 * 1024;
53874 - else
53875 - start = 512 * 1024;
53876 -
53877 - for (i = start; i < size; i <<= 1)
53878 - ;
53879 -
53880 - return i;
53881 - }
53882 -}
53883 -
53884 -/* Check pitch constriants for all chips & tiling formats */
53885 -static bool
53886 -i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode)
53887 -{
53888 - int tile_width;
53889 -
53890 - /* Linear is always fine */
53891 - if (tiling_mode == I915_TILING_NONE)
53892 - return true;
53893 -
53894 - if (tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev))
53895 - tile_width = 128;
53896 - else
53897 - tile_width = 512;
53898 -
53899 - /* 965+ just needs multiples of tile width */
53900 - if (IS_I965G(dev)) {
53901 - if (stride & (tile_width - 1))
53902 - return false;
53903 - return true;
53904 - }
53905 -
53906 - /* Pre-965 needs power of two tile widths */
53907 - if (stride < tile_width)
53908 - return false;
53909 -
53910 - if (stride & (stride - 1))
53911 - return false;
53912 -
53913 - /* We don't handle the aperture area covered by the fence being bigger
53914 - * than the object size.
53915 - */
53916 - if (i915_get_fence_size(dev, size) != size)
53917 - return false;
53918 -
53919 - return true;
53920 -}
53921 -
53922 /**
53923 * Sets the tiling mode of an object, returning the required swizzling of
53924 * bit 6 of addresses in the object.
53925 @@ -258,11 +191,6 @@
53926 return -EINVAL;
53927 obj_priv = obj->driver_private;
53928
53929 - if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) {
53930 - drm_gem_object_unreference(obj);
53931 - return -EINVAL;
53932 - }
53933 -
53934 mutex_lock(&dev->struct_mutex);
53935
53936 if (args->tiling_mode == I915_TILING_NONE) {
53937 @@ -279,29 +207,13 @@
53938 args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE;
53939 }
53940 }
53941 - if (args->tiling_mode != obj_priv->tiling_mode) {
53942 - int ret;
53943 -
53944 - /* Unbind the object, as switching tiling means we're
53945 - * switching the cache organization due to fencing, probably.
53946 - */
53947 - ret = i915_gem_object_unbind(obj);
53948 - if (ret != 0) {
53949 - WARN(ret != -ERESTARTSYS,
53950 - "failed to unbind object for tiling switch");
53951 - args->tiling_mode = obj_priv->tiling_mode;
53952 - mutex_unlock(&dev->struct_mutex);
53953 - drm_gem_object_unreference(obj);
53954 -
53955 - return ret;
53956 - }
53957 - obj_priv->tiling_mode = args->tiling_mode;
53958 - }
53959 + obj_priv->tiling_mode = args->tiling_mode;
53960 obj_priv->stride = args->stride;
53961
53962 - drm_gem_object_unreference(obj);
53963 mutex_unlock(&dev->struct_mutex);
53964
53965 + drm_gem_object_unreference(obj);
53966 +
53967 return 0;
53968 }
53969
53970 @@ -339,8 +251,9 @@
53971 DRM_ERROR("unknown tiling mode\n");
53972 }
53973
53974 - drm_gem_object_unreference(obj);
53975 mutex_unlock(&dev->struct_mutex);
53976
53977 + drm_gem_object_unreference(obj);
53978 +
53979 return 0;
53980 }
53981 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_irq.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_irq.c
53982 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_irq.c 2009-05-10 22:04:38.000000000 +0200
53983 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_irq.c 2009-05-10 23:48:28.000000000 +0200
53984 @@ -174,19 +174,6 @@
53985 return count;
53986 }
53987
53988 -u32 gm45_get_vblank_counter(struct drm_device *dev, int pipe)
53989 -{
53990 - drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
53991 - int reg = pipe ? PIPEB_FRMCOUNT_GM45 : PIPEA_FRMCOUNT_GM45;
53992 -
53993 - if (!i915_pipe_enabled(dev, pipe)) {
53994 - DRM_ERROR("trying to get vblank count for disabled pipe %d\n", pipe);
53995 - return 0;
53996 - }
53997 -
53998 - return I915_READ(reg);
53999 -}
54000 -
54001 irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
54002 {
54003 struct drm_device *dev = (struct drm_device *) arg;
54004 @@ -383,13 +370,12 @@
54005 drm_i915_irq_emit_t *emit = data;
54006 int result;
54007
54008 + RING_LOCK_TEST_WITH_RETURN(dev, file_priv);
54009 +
54010 if (!dev_priv) {
54011 DRM_ERROR("called with no initialization\n");
54012 return -EINVAL;
54013 }
54014 -
54015 - RING_LOCK_TEST_WITH_RETURN(dev, file_priv);
54016 -
54017 mutex_lock(&dev->struct_mutex);
54018 result = i915_emit_irq(dev);
54019 mutex_unlock(&dev->struct_mutex);
54020 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_reg.h linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_reg.h
54021 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_reg.h 2009-05-10 22:04:38.000000000 +0200
54022 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_reg.h 2009-05-10 23:48:28.000000000 +0200
54023 @@ -184,15 +184,14 @@
54024 * Fence registers
54025 */
54026 #define FENCE_REG_830_0 0x2000
54027 -#define FENCE_REG_945_8 0x3000
54028 #define I830_FENCE_START_MASK 0x07f80000
54029 #define I830_FENCE_TILING_Y_SHIFT 12
54030 -#define I830_FENCE_SIZE_BITS(size) ((ffs((size) >> 19) - 1) << 8)
54031 +#define I830_FENCE_SIZE_BITS(size) ((get_order(size >> 19) - 1) << 8)
54032 #define I830_FENCE_PITCH_SHIFT 4
54033 #define I830_FENCE_REG_VALID (1<<0)
54034
54035 #define I915_FENCE_START_MASK 0x0ff00000
54036 -#define I915_FENCE_SIZE_BITS(size) ((ffs((size) >> 20) - 1) << 8)
54037 +#define I915_FENCE_SIZE_BITS(size) ((get_order(size >> 20) - 1) << 8)
54038
54039 #define FENCE_REG_965_0 0x03000
54040 #define I965_FENCE_PITCH_SHIFT 2
54041 @@ -1372,9 +1371,6 @@
54042 #define PIPE_FRAME_LOW_SHIFT 24
54043 #define PIPE_PIXEL_MASK 0x00ffffff
54044 #define PIPE_PIXEL_SHIFT 0
54045 -/* GM45+ just has to be different */
54046 -#define PIPEA_FRMCOUNT_GM45 0x70040
54047 -#define PIPEA_FLIPCOUNT_GM45 0x70044
54048
54049 /* Cursor A & B regs */
54050 #define CURACNTR 0x70080
54051 @@ -1443,9 +1439,6 @@
54052 #define PIPEBSTAT 0x71024
54053 #define PIPEBFRAMEHIGH 0x71040
54054 #define PIPEBFRAMEPIXEL 0x71044
54055 -#define PIPEB_FRMCOUNT_GM45 0x71040
54056 -#define PIPEB_FLIPCOUNT_GM45 0x71044
54057 -
54058
54059 /* Display B control */
54060 #define DSPBCNTR 0x71180
54061 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_suspend.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_suspend.c
54062 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/i915_suspend.c 2009-05-10 22:04:38.000000000 +0200
54063 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/i915_suspend.c 2009-05-10 23:48:28.000000000 +0200
54064 @@ -119,6 +119,11 @@
54065
54066 /* VGA color palette registers */
54067 dev_priv->saveDACMASK = I915_READ8(VGA_DACMASK);
54068 + /* DACCRX automatically increments during read */
54069 + I915_WRITE8(VGA_DACRX, 0);
54070 + /* Read 3 bytes of color data from each index */
54071 + for (i = 0; i < 256 * 3; i++)
54072 + dev_priv->saveDACDATA[i] = I915_READ8(VGA_DACDATA);
54073
54074 /* MSR bits */
54075 dev_priv->saveMSR = I915_READ8(VGA_MSR_READ);
54076 @@ -220,6 +225,12 @@
54077
54078 /* VGA color palette registers */
54079 I915_WRITE8(VGA_DACMASK, dev_priv->saveDACMASK);
54080 + /* DACCRX automatically increments during read */
54081 + I915_WRITE8(VGA_DACWX, 0);
54082 + /* Read 3 bytes of color data from each index */
54083 + for (i = 0; i < 256 * 3; i++)
54084 + I915_WRITE8(VGA_DACDATA, dev_priv->saveDACDATA[i]);
54085 +
54086 }
54087
54088 int i915_save_state(struct drm_device *dev)
54089 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_bios.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_bios.c
54090 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_bios.c 2009-05-10 22:04:38.000000000 +0200
54091 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_bios.c 2009-05-10 23:48:28.000000000 +0200
54092 @@ -111,12 +111,6 @@
54093 panel_fixed_mode->clock = dvo_timing->clock * 10;
54094 panel_fixed_mode->type = DRM_MODE_TYPE_PREFERRED;
54095
54096 - /* Some VBTs have bogus h/vtotal values */
54097 - if (panel_fixed_mode->hsync_end > panel_fixed_mode->htotal)
54098 - panel_fixed_mode->htotal = panel_fixed_mode->hsync_end + 1;
54099 - if (panel_fixed_mode->vsync_end > panel_fixed_mode->vtotal)
54100 - panel_fixed_mode->vtotal = panel_fixed_mode->vsync_end + 1;
54101 -
54102 drm_mode_set_name(panel_fixed_mode);
54103
54104 dev_priv->vbt_mode = panel_fixed_mode;
54105 @@ -141,14 +135,6 @@
54106 if (general) {
54107 dev_priv->int_tv_support = general->int_tv_support;
54108 dev_priv->int_crt_support = general->int_crt_support;
54109 - dev_priv->lvds_use_ssc = general->enable_ssc;
54110 -
54111 - if (dev_priv->lvds_use_ssc) {
54112 - if (IS_I855(dev_priv->dev))
54113 - dev_priv->lvds_ssc_freq = general->ssc_freq ? 66 : 48;
54114 - else
54115 - dev_priv->lvds_ssc_freq = general->ssc_freq ? 100 : 96;
54116 - }
54117 }
54118 }
54119
54120 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_display.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_display.c
54121 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_display.c 2009-05-10 22:04:38.000000000 +0200
54122 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_display.c 2009-05-10 23:48:28.000000000 +0200
54123 @@ -90,12 +90,12 @@
54124 #define I9XX_DOT_MAX 400000
54125 #define I9XX_VCO_MIN 1400000
54126 #define I9XX_VCO_MAX 2800000
54127 -#define I9XX_N_MIN 1
54128 -#define I9XX_N_MAX 6
54129 +#define I9XX_N_MIN 3
54130 +#define I9XX_N_MAX 8
54131 #define I9XX_M_MIN 70
54132 #define I9XX_M_MAX 120
54133 #define I9XX_M1_MIN 10
54134 -#define I9XX_M1_MAX 22
54135 +#define I9XX_M1_MAX 20
54136 #define I9XX_M2_MIN 5
54137 #define I9XX_M2_MAX 9
54138 #define I9XX_P_SDVO_DAC_MIN 5
54139 @@ -189,7 +189,9 @@
54140 return limit;
54141 }
54142
54143 -static void intel_clock(int refclk, intel_clock_t *clock)
54144 +/** Derive the pixel clock for the given refclk and divisors for 8xx chips. */
54145 +
54146 +static void i8xx_clock(int refclk, intel_clock_t *clock)
54147 {
54148 clock->m = 5 * (clock->m1 + 2) + (clock->m2 + 2);
54149 clock->p = clock->p1 * clock->p2;
54150 @@ -197,6 +199,25 @@
54151 clock->dot = clock->vco / clock->p;
54152 }
54153
54154 +/** Derive the pixel clock for the given refclk and divisors for 9xx chips. */
54155 +
54156 +static void i9xx_clock(int refclk, intel_clock_t *clock)
54157 +{
54158 + clock->m = 5 * (clock->m1 + 2) + (clock->m2 + 2);
54159 + clock->p = clock->p1 * clock->p2;
54160 + clock->vco = refclk * clock->m / (clock->n + 2);
54161 + clock->dot = clock->vco / clock->p;
54162 +}
54163 +
54164 +static void intel_clock(struct drm_device *dev, int refclk,
54165 + intel_clock_t *clock)
54166 +{
54167 + if (IS_I9XX(dev))
54168 + i9xx_clock (refclk, clock);
54169 + else
54170 + i8xx_clock (refclk, clock);
54171 +}
54172 +
54173 /**
54174 * Returns whether any output on the specified pipe is of the specified type
54175 */
54176 @@ -217,7 +238,7 @@
54177 return false;
54178 }
54179
54180 -#define INTELPllInvalid(s) do { /* DRM_DEBUG(s); */ return false; } while (0)
54181 +#define INTELPllInvalid(s) { /* ErrorF (s) */; return false; }
54182 /**
54183 * Returns whether the given set of divisors are valid for a given refclk with
54184 * the given connectors.
54185 @@ -297,7 +318,7 @@
54186 clock.p1 <= limit->p1.max; clock.p1++) {
54187 int this_err;
54188
54189 - intel_clock(refclk, &clock);
54190 + intel_clock(dev, refclk, &clock);
54191
54192 if (!intel_PLL_is_valid(crtc, &clock))
54193 continue;
54194 @@ -322,7 +343,7 @@
54195 udelay(20000);
54196 }
54197
54198 -static int
54199 +static void
54200 intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
54201 struct drm_framebuffer *old_fb)
54202 {
54203 @@ -340,21 +361,11 @@
54204 int dspstride = (pipe == 0) ? DSPASTRIDE : DSPBSTRIDE;
54205 int dspcntr_reg = (pipe == 0) ? DSPACNTR : DSPBCNTR;
54206 u32 dspcntr, alignment;
54207 - int ret;
54208
54209 /* no fb bound */
54210 if (!crtc->fb) {
54211 DRM_DEBUG("No FB bound\n");
54212 - return 0;
54213 - }
54214 -
54215 - switch (pipe) {
54216 - case 0:
54217 - case 1:
54218 - break;
54219 - default:
54220 - DRM_ERROR("Can't update pipe %d in SAREA\n", pipe);
54221 - return -EINVAL;
54222 + return;
54223 }
54224
54225 intel_fb = to_intel_framebuffer(crtc->fb);
54226 @@ -366,30 +377,28 @@
54227 alignment = 64 * 1024;
54228 break;
54229 case I915_TILING_X:
54230 - /* pin() will align the object as required by fence */
54231 - alignment = 0;
54232 + if (IS_I9XX(dev))
54233 + alignment = 1024 * 1024;
54234 + else
54235 + alignment = 512 * 1024;
54236 break;
54237 case I915_TILING_Y:
54238 /* FIXME: Is this true? */
54239 DRM_ERROR("Y tiled not allowed for scan out buffers\n");
54240 - return -EINVAL;
54241 + return;
54242 default:
54243 BUG();
54244 }
54245
54246 - mutex_lock(&dev->struct_mutex);
54247 - ret = i915_gem_object_pin(intel_fb->obj, alignment);
54248 - if (ret != 0) {
54249 - mutex_unlock(&dev->struct_mutex);
54250 - return ret;
54251 - }
54252 + if (i915_gem_object_pin(intel_fb->obj, alignment))
54253 + return;
54254
54255 - ret = i915_gem_object_set_to_gtt_domain(intel_fb->obj, 1);
54256 - if (ret != 0) {
54257 - i915_gem_object_unpin(intel_fb->obj);
54258 - mutex_unlock(&dev->struct_mutex);
54259 - return ret;
54260 - }
54261 + i915_gem_object_set_to_gtt_domain(intel_fb->obj, 1);
54262 +
54263 + Start = obj_priv->gtt_offset;
54264 + Offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8);
54265 +
54266 + I915_WRITE(dspstride, crtc->fb->pitch);
54267
54268 dspcntr = I915_READ(dspcntr_reg);
54269 /* Mask out pixel format bits in case we change it */
54270 @@ -410,17 +419,11 @@
54271 break;
54272 default:
54273 DRM_ERROR("Unknown color depth\n");
54274 - i915_gem_object_unpin(intel_fb->obj);
54275 - mutex_unlock(&dev->struct_mutex);
54276 - return -EINVAL;
54277 + return;
54278 }
54279 I915_WRITE(dspcntr_reg, dspcntr);
54280
54281 - Start = obj_priv->gtt_offset;
54282 - Offset = y * crtc->fb->pitch + x * (crtc->fb->bits_per_pixel / 8);
54283 -
54284 DRM_DEBUG("Writing base %08lX %08lX %d %d\n", Start, Offset, x, y);
54285 - I915_WRITE(dspstride, crtc->fb->pitch);
54286 if (IS_I965G(dev)) {
54287 I915_WRITE(dspbase, Offset);
54288 I915_READ(dspbase);
54289 @@ -437,24 +440,27 @@
54290 intel_fb = to_intel_framebuffer(old_fb);
54291 i915_gem_object_unpin(intel_fb->obj);
54292 }
54293 - mutex_unlock(&dev->struct_mutex);
54294
54295 if (!dev->primary->master)
54296 - return 0;
54297 + return;
54298
54299 master_priv = dev->primary->master->driver_priv;
54300 if (!master_priv->sarea_priv)
54301 - return 0;
54302 + return;
54303
54304 - if (pipe) {
54305 - master_priv->sarea_priv->pipeB_x = x;
54306 - master_priv->sarea_priv->pipeB_y = y;
54307 - } else {
54308 + switch (pipe) {
54309 + case 0:
54310 master_priv->sarea_priv->pipeA_x = x;
54311 master_priv->sarea_priv->pipeA_y = y;
54312 + break;
54313 + case 1:
54314 + master_priv->sarea_priv->pipeB_x = x;
54315 + master_priv->sarea_priv->pipeB_y = y;
54316 + break;
54317 + default:
54318 + DRM_ERROR("Can't update pipe %d in SAREA\n", pipe);
54319 + break;
54320 }
54321 -
54322 - return 0;
54323 }
54324
54325
54326 @@ -702,11 +708,11 @@
54327 return 1;
54328 }
54329
54330 -static int intel_crtc_mode_set(struct drm_crtc *crtc,
54331 - struct drm_display_mode *mode,
54332 - struct drm_display_mode *adjusted_mode,
54333 - int x, int y,
54334 - struct drm_framebuffer *old_fb)
54335 +static void intel_crtc_mode_set(struct drm_crtc *crtc,
54336 + struct drm_display_mode *mode,
54337 + struct drm_display_mode *adjusted_mode,
54338 + int x, int y,
54339 + struct drm_framebuffer *old_fb)
54340 {
54341 struct drm_device *dev = crtc->dev;
54342 struct drm_i915_private *dev_priv = dev->dev_private;
54343 @@ -726,14 +732,13 @@
54344 int dspsize_reg = (pipe == 0) ? DSPASIZE : DSPBSIZE;
54345 int dsppos_reg = (pipe == 0) ? DSPAPOS : DSPBPOS;
54346 int pipesrc_reg = (pipe == 0) ? PIPEASRC : PIPEBSRC;
54347 - int refclk, num_outputs = 0;
54348 + int refclk;
54349 intel_clock_t clock;
54350 u32 dpll = 0, fp = 0, dspcntr, pipeconf;
54351 bool ok, is_sdvo = false, is_dvo = false;
54352 bool is_crt = false, is_lvds = false, is_tv = false;
54353 struct drm_mode_config *mode_config = &dev->mode_config;
54354 struct drm_connector *connector;
54355 - int ret;
54356
54357 drm_vblank_pre_modeset(dev, pipe);
54358
54359 @@ -750,8 +755,6 @@
54360 case INTEL_OUTPUT_SDVO:
54361 case INTEL_OUTPUT_HDMI:
54362 is_sdvo = true;
54363 - if (intel_output->needs_tv_clock)
54364 - is_tv = true;
54365 break;
54366 case INTEL_OUTPUT_DVO:
54367 is_dvo = true;
54368 @@ -763,14 +766,9 @@
54369 is_crt = true;
54370 break;
54371 }
54372 -
54373 - num_outputs++;
54374 }
54375
54376 - if (is_lvds && dev_priv->lvds_use_ssc && num_outputs < 2) {
54377 - refclk = dev_priv->lvds_ssc_freq * 1000;
54378 - DRM_DEBUG("using SSC reference clock of %d MHz\n", refclk / 1000);
54379 - } else if (IS_I9XX(dev)) {
54380 + if (IS_I9XX(dev)) {
54381 refclk = 96000;
54382 } else {
54383 refclk = 48000;
54384 @@ -779,7 +777,7 @@
54385 ok = intel_find_best_PLL(crtc, adjusted_mode->clock, refclk, &clock);
54386 if (!ok) {
54387 DRM_ERROR("Couldn't find PLL settings for mode!\n");
54388 - return -EINVAL;
54389 + return;
54390 }
54391
54392 fp = clock.n << 16 | clock.m1 << 8 | clock.m2;
54393 @@ -829,14 +827,11 @@
54394 }
54395 }
54396
54397 - if (is_sdvo && is_tv)
54398 - dpll |= PLL_REF_INPUT_TVCLKINBC;
54399 - else if (is_tv)
54400 + if (is_tv) {
54401 /* XXX: just matching BIOS for now */
54402 - /* dpll |= PLL_REF_INPUT_TVCLKINBC; */
54403 +/* dpll |= PLL_REF_INPUT_TVCLKINBC; */
54404 dpll |= 3;
54405 - else if (is_lvds && dev_priv->lvds_use_ssc && num_outputs < 2)
54406 - dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN;
54407 + }
54408 else
54409 dpll |= PLL_REF_INPUT_DREFCLK;
54410
54411 @@ -953,13 +948,9 @@
54412 I915_WRITE(dspcntr_reg, dspcntr);
54413
54414 /* Flush the plane changes */
54415 - ret = intel_pipe_set_base(crtc, x, y, old_fb);
54416 - if (ret != 0)
54417 - return ret;
54418 + intel_pipe_set_base(crtc, x, y, old_fb);
54419
54420 drm_vblank_post_modeset(dev, pipe);
54421 -
54422 - return 0;
54423 }
54424
54425 /** Loads the palette/gamma unit for the CRTC with the prepared values */
54426 @@ -1008,7 +999,6 @@
54427 temp = CURSOR_MODE_DISABLE;
54428 addr = 0;
54429 bo = NULL;
54430 - mutex_lock(&dev->struct_mutex);
54431 goto finish;
54432 }
54433
54434 @@ -1031,19 +1021,18 @@
54435 }
54436
54437 /* we only need to pin inside GTT if cursor is non-phy */
54438 - mutex_lock(&dev->struct_mutex);
54439 if (!dev_priv->cursor_needs_physical) {
54440 ret = i915_gem_object_pin(bo, PAGE_SIZE);
54441 if (ret) {
54442 DRM_ERROR("failed to pin cursor bo\n");
54443 - goto fail_locked;
54444 + goto fail;
54445 }
54446 addr = obj_priv->gtt_offset;
54447 } else {
54448 ret = i915_gem_attach_phys_object(dev, bo, (pipe == 0) ? I915_GEM_PHYS_CURSOR_0 : I915_GEM_PHYS_CURSOR_1);
54449 if (ret) {
54450 DRM_ERROR("failed to attach phys object\n");
54451 - goto fail_locked;
54452 + goto fail;
54453 }
54454 addr = obj_priv->phys_obj->handle->busaddr;
54455 }
54456 @@ -1063,9 +1052,10 @@
54457 i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo);
54458 } else
54459 i915_gem_object_unpin(intel_crtc->cursor_bo);
54460 + mutex_lock(&dev->struct_mutex);
54461 drm_gem_object_unreference(intel_crtc->cursor_bo);
54462 + mutex_unlock(&dev->struct_mutex);
54463 }
54464 - mutex_unlock(&dev->struct_mutex);
54465
54466 intel_crtc->cursor_addr = addr;
54467 intel_crtc->cursor_bo = bo;
54468 @@ -1073,7 +1063,6 @@
54469 return 0;
54470 fail:
54471 mutex_lock(&dev->struct_mutex);
54472 -fail_locked:
54473 drm_gem_object_unreference(bo);
54474 mutex_unlock(&dev->struct_mutex);
54475 return ret;
54476 @@ -1301,7 +1290,7 @@
54477 }
54478
54479 /* XXX: Handle the 100Mhz refclk */
54480 - intel_clock(96000, &clock);
54481 + i9xx_clock(96000, &clock);
54482 } else {
54483 bool is_lvds = (pipe == 1) && (I915_READ(LVDS) & LVDS_PORT_EN);
54484
54485 @@ -1313,9 +1302,9 @@
54486 if ((dpll & PLL_REF_INPUT_MASK) ==
54487 PLLB_REF_INPUT_SPREADSPECTRUMIN) {
54488 /* XXX: might not be 66MHz */
54489 - intel_clock(66000, &clock);
54490 + i8xx_clock(66000, &clock);
54491 } else
54492 - intel_clock(48000, &clock);
54493 + i8xx_clock(48000, &clock);
54494 } else {
54495 if (dpll & PLL_P1_DIVIDE_BY_TWO)
54496 clock.p1 = 2;
54497 @@ -1328,7 +1317,7 @@
54498 else
54499 clock.p2 = 2;
54500
54501 - intel_clock(48000, &clock);
54502 + i8xx_clock(48000, &clock);
54503 }
54504 }
54505
54506 @@ -1463,7 +1452,6 @@
54507
54508 static void intel_setup_outputs(struct drm_device *dev)
54509 {
54510 - struct drm_i915_private *dev_priv = dev->dev_private;
54511 struct drm_connector *connector;
54512
54513 intel_crt_init(dev);
54514 @@ -1475,16 +1463,13 @@
54515 if (IS_I9XX(dev)) {
54516 int found;
54517
54518 - if (I915_READ(SDVOB) & SDVO_DETECTED) {
54519 - found = intel_sdvo_init(dev, SDVOB);
54520 - if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
54521 - intel_hdmi_init(dev, SDVOB);
54522 - }
54523 - if (!IS_G4X(dev) || (I915_READ(SDVOB) & SDVO_DETECTED)) {
54524 - found = intel_sdvo_init(dev, SDVOC);
54525 - if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
54526 - intel_hdmi_init(dev, SDVOC);
54527 - }
54528 + found = intel_sdvo_init(dev, SDVOB);
54529 + if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
54530 + intel_hdmi_init(dev, SDVOB);
54531 +
54532 + found = intel_sdvo_init(dev, SDVOC);
54533 + if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
54534 + intel_hdmi_init(dev, SDVOC);
54535 } else
54536 intel_dvo_init(dev);
54537
54538 @@ -1607,9 +1592,7 @@
54539
54540 ret = intel_framebuffer_create(dev, mode_cmd, &fb, obj);
54541 if (ret) {
54542 - mutex_lock(&dev->struct_mutex);
54543 drm_gem_object_unreference(obj);
54544 - mutex_unlock(&dev->struct_mutex);
54545 return NULL;
54546 }
54547
54548 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_drv.h linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_drv.h
54549 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_drv.h 2009-05-10 22:04:38.000000000 +0200
54550 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_drv.h 2009-05-10 23:48:28.000000000 +0200
54551 @@ -82,7 +82,6 @@
54552 struct intel_i2c_chan *i2c_bus; /* for control functions */
54553 struct intel_i2c_chan *ddc_bus; /* for DDC only stuff */
54554 bool load_detect_temp;
54555 - bool needs_tv_clock;
54556 void *dev_priv;
54557 };
54558
54559 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_fb.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_fb.c
54560 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_fb.c 2009-05-10 22:04:38.000000000 +0200
54561 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_fb.c 2009-05-10 23:48:28.000000000 +0200
54562 @@ -473,7 +473,7 @@
54563 ret = intel_framebuffer_create(dev, &mode_cmd, &fb, fbo);
54564 if (ret) {
54565 DRM_ERROR("failed to allocate fb.\n");
54566 - goto out_unpin;
54567 + goto out_unref;
54568 }
54569
54570 list_add(&fb->filp_head, &dev->mode_config.fb_kernel_list);
54571 @@ -484,7 +484,7 @@
54572 info = framebuffer_alloc(sizeof(struct intelfb_par), device);
54573 if (!info) {
54574 ret = -ENOMEM;
54575 - goto out_unpin;
54576 + goto out_unref;
54577 }
54578
54579 par = info->par;
54580 @@ -513,7 +513,7 @@
54581 size);
54582 if (!info->screen_base) {
54583 ret = -ENOSPC;
54584 - goto out_unpin;
54585 + goto out_unref;
54586 }
54587 info->screen_size = size;
54588
54589 @@ -608,8 +608,6 @@
54590 mutex_unlock(&dev->struct_mutex);
54591 return 0;
54592
54593 -out_unpin:
54594 - i915_gem_object_unpin(fbo);
54595 out_unref:
54596 drm_gem_object_unreference(fbo);
54597 mutex_unlock(&dev->struct_mutex);
54598 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_lvds.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_lvds.c
54599 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_lvds.c 2009-05-10 22:04:38.000000000 +0200
54600 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_lvds.c 2009-05-10 23:48:28.000000000 +0200
54601 @@ -27,7 +27,6 @@
54602 * Jesse Barnes <jesse.barnes@intel.com>
54603 */
54604
54605 -#include <linux/dmi.h>
54606 #include <linux/i2c.h>
54607 #include "drmP.h"
54608 #include "drm.h"
54609 @@ -312,8 +311,10 @@
54610 if (dev_priv->panel_fixed_mode != NULL) {
54611 struct drm_display_mode *mode;
54612
54613 + mutex_unlock(&dev->mode_config.mutex);
54614 mode = drm_mode_duplicate(dev, dev_priv->panel_fixed_mode);
54615 drm_mode_probed_add(connector, mode);
54616 + mutex_unlock(&dev->mode_config.mutex);
54617
54618 return 1;
54619 }
54620 @@ -404,16 +405,6 @@
54621 u32 lvds;
54622 int pipe;
54623
54624 - /* Blacklist machines that we know falsely report LVDS. */
54625 - /* FIXME: add a check for the Aopen Mini PC */
54626 -
54627 - /* Apple Mac Mini Core Duo and Mac Mini Core 2 Duo */
54628 - if(dmi_match(DMI_PRODUCT_NAME, "Macmini1,1") ||
54629 - dmi_match(DMI_PRODUCT_NAME, "Macmini2,1")) {
54630 - DRM_DEBUG("Skipping LVDS initialization for Apple Mac Mini\n");
54631 - return;
54632 - }
54633 -
54634 intel_output = kzalloc(sizeof(struct intel_output), GFP_KERNEL);
54635 if (!intel_output) {
54636 return;
54637 @@ -467,7 +458,7 @@
54638 dev_priv->panel_fixed_mode =
54639 drm_mode_duplicate(dev, scan);
54640 mutex_unlock(&dev->mode_config.mutex);
54641 - goto out;
54642 + goto out; /* FIXME: check for quirks */
54643 }
54644 mutex_unlock(&dev->mode_config.mutex);
54645 }
54646 @@ -481,6 +472,8 @@
54647 if (dev_priv->panel_fixed_mode) {
54648 dev_priv->panel_fixed_mode->type |=
54649 DRM_MODE_TYPE_PREFERRED;
54650 + drm_mode_probed_add(connector,
54651 + dev_priv->panel_fixed_mode);
54652 goto out;
54653 }
54654 }
54655 @@ -499,7 +492,7 @@
54656 if (dev_priv->panel_fixed_mode) {
54657 dev_priv->panel_fixed_mode->type |=
54658 DRM_MODE_TYPE_PREFERRED;
54659 - goto out;
54660 + goto out; /* FIXME: check for quirks */
54661 }
54662 }
54663
54664 @@ -507,6 +500,38 @@
54665 if (!dev_priv->panel_fixed_mode)
54666 goto failed;
54667
54668 + /* FIXME: detect aopen & mac mini type stuff automatically? */
54669 + /*
54670 + * Blacklist machines with BIOSes that list an LVDS panel without
54671 + * actually having one.
54672 + */
54673 + if (IS_I945GM(dev)) {
54674 + /* aopen mini pc */
54675 + if (dev->pdev->subsystem_vendor == 0xa0a0)
54676 + goto failed;
54677 +
54678 + if ((dev->pdev->subsystem_vendor == 0x8086) &&
54679 + (dev->pdev->subsystem_device == 0x7270)) {
54680 + /* It's a Mac Mini or Macbook Pro.
54681 + *
54682 + * Apple hardware is out to get us. The macbook pro
54683 + * has a real LVDS panel, but the mac mini does not,
54684 + * and they have the same device IDs. We'll
54685 + * distinguish by panel size, on the assumption
54686 + * that Apple isn't about to make any machines with an
54687 + * 800x600 display.
54688 + */
54689 +
54690 + if (dev_priv->panel_fixed_mode != NULL &&
54691 + dev_priv->panel_fixed_mode->hdisplay == 800 &&
54692 + dev_priv->panel_fixed_mode->vdisplay == 600) {
54693 + DRM_DEBUG("Suspected Mac Mini, ignoring the LVDS\n");
54694 + goto failed;
54695 + }
54696 + }
54697 + }
54698 +
54699 +
54700 out:
54701 drm_sysfs_connector_add(connector);
54702 return;
54703 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_sdvo.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_sdvo.c
54704 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_sdvo.c 2009-05-10 22:04:38.000000000 +0200
54705 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_sdvo.c 2009-05-10 23:48:28.000000000 +0200
54706 @@ -40,59 +40,13 @@
54707 struct intel_sdvo_priv {
54708 struct intel_i2c_chan *i2c_bus;
54709 int slaveaddr;
54710 -
54711 - /* Register for the SDVO device: SDVOB or SDVOC */
54712 int output_device;
54713
54714 - /* Active outputs controlled by this SDVO output */
54715 - uint16_t controlled_output;
54716 + u16 active_outputs;
54717
54718 - /*
54719 - * Capabilities of the SDVO device returned by
54720 - * i830_sdvo_get_capabilities()
54721 - */
54722 struct intel_sdvo_caps caps;
54723 -
54724 - /* Pixel clock limitations reported by the SDVO device, in kHz */
54725 int pixel_clock_min, pixel_clock_max;
54726
54727 - /**
54728 - * This is set if we're going to treat the device as TV-out.
54729 - *
54730 - * While we have these nice friendly flags for output types that ought
54731 - * to decide this for us, the S-Video output on our HDMI+S-Video card
54732 - * shows up as RGB1 (VGA).
54733 - */
54734 - bool is_tv;
54735 -
54736 - /**
54737 - * This is set if we treat the device as HDMI, instead of DVI.
54738 - */
54739 - bool is_hdmi;
54740 -
54741 - /**
54742 - * Returned SDTV resolutions allowed for the current format, if the
54743 - * device reported it.
54744 - */
54745 - struct intel_sdvo_sdtv_resolution_reply sdtv_resolutions;
54746 -
54747 - /**
54748 - * Current selected TV format.
54749 - *
54750 - * This is stored in the same structure that's passed to the device, for
54751 - * convenience.
54752 - */
54753 - struct intel_sdvo_tv_format tv_format;
54754 -
54755 - /*
54756 - * supported encoding mode, used to determine whether HDMI is
54757 - * supported
54758 - */
54759 - struct intel_sdvo_encode encode;
54760 -
54761 - /* DDC bus used by this SDVO output */
54762 - uint8_t ddc_bus;
54763 -
54764 int save_sdvo_mult;
54765 u16 save_active_outputs;
54766 struct intel_sdvo_dtd save_input_dtd_1, save_input_dtd_2;
54767 @@ -193,9 +147,9 @@
54768
54769 #define SDVO_CMD_NAME_ENTRY(cmd) {cmd, #cmd}
54770 /** Mapping of command numbers to names, for debug output */
54771 -static const struct _sdvo_cmd_name {
54772 - u8 cmd;
54773 - char *name;
54774 +const static struct _sdvo_cmd_name {
54775 + u8 cmd;
54776 + char *name;
54777 } sdvo_cmd_names[] = {
54778 SDVO_CMD_NAME_ENTRY(SDVO_CMD_RESET),
54779 SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DEVICE_CAPS),
54780 @@ -232,35 +186,8 @@
54781 SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_TV_FORMATS),
54782 SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_FORMAT),
54783 SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_FORMAT),
54784 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_POWER_STATES),
54785 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_POWER_STATE),
54786 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODER_POWER_STATE),
54787 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DISPLAY_POWER_STATE),
54788 + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_RESOLUTION_SUPPORT),
54789 SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTROL_BUS_SWITCH),
54790 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT),
54791 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT),
54792 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS),
54793 - /* HDMI op code */
54794 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPP_ENCODE),
54795 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODE),
54796 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODE),
54797 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_PIXEL_REPLI),
54798 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PIXEL_REPLI),
54799 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY_CAP),
54800 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_COLORIMETRY),
54801 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY),
54802 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER),
54803 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_AUDIO_STAT),
54804 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_STAT),
54805 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INDEX),
54806 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_INDEX),
54807 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INFO),
54808 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_AV_SPLIT),
54809 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_AV_SPLIT),
54810 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_TXRATE),
54811 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_TXRATE),
54812 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_DATA),
54813 - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA),
54814 };
54815
54816 #define SDVO_NAME(dev_priv) ((dev_priv)->output_device == SDVOB ? "SDVOB" : "SDVOC")
54817 @@ -579,50 +506,6 @@
54818 SDVO_CMD_SET_OUTPUT_TIMINGS_PART1, dtd);
54819 }
54820
54821 -static bool
54822 -intel_sdvo_create_preferred_input_timing(struct intel_output *output,
54823 - uint16_t clock,
54824 - uint16_t width,
54825 - uint16_t height)
54826 -{
54827 - struct intel_sdvo_preferred_input_timing_args args;
54828 - uint8_t status;
54829 -
54830 - args.clock = clock;
54831 - args.width = width;
54832 - args.height = height;
54833 - intel_sdvo_write_cmd(output, SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING,
54834 - &args, sizeof(args));
54835 - status = intel_sdvo_read_response(output, NULL, 0);
54836 - if (status != SDVO_CMD_STATUS_SUCCESS)
54837 - return false;
54838 -
54839 - return true;
54840 -}
54841 -
54842 -static bool intel_sdvo_get_preferred_input_timing(struct intel_output *output,
54843 - struct intel_sdvo_dtd *dtd)
54844 -{
54845 - bool status;
54846 -
54847 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1,
54848 - NULL, 0);
54849 -
54850 - status = intel_sdvo_read_response(output, &dtd->part1,
54851 - sizeof(dtd->part1));
54852 - if (status != SDVO_CMD_STATUS_SUCCESS)
54853 - return false;
54854 -
54855 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2,
54856 - NULL, 0);
54857 -
54858 - status = intel_sdvo_read_response(output, &dtd->part2,
54859 - sizeof(dtd->part2));
54860 - if (status != SDVO_CMD_STATUS_SUCCESS)
54861 - return false;
54862 -
54863 - return false;
54864 -}
54865
54866 static int intel_sdvo_get_clock_rate_mult(struct intel_output *intel_output)
54867 {
54868 @@ -653,12 +536,36 @@
54869 return true;
54870 }
54871
54872 -static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd,
54873 - struct drm_display_mode *mode)
54874 +static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder,
54875 + struct drm_display_mode *mode,
54876 + struct drm_display_mode *adjusted_mode)
54877 {
54878 - uint16_t width, height;
54879 - uint16_t h_blank_len, h_sync_len, v_blank_len, v_sync_len;
54880 - uint16_t h_sync_offset, v_sync_offset;
54881 + /* Make the CRTC code factor in the SDVO pixel multiplier. The SDVO
54882 + * device will be told of the multiplier during mode_set.
54883 + */
54884 + adjusted_mode->clock *= intel_sdvo_get_pixel_multiplier(mode);
54885 + return true;
54886 +}
54887 +
54888 +static void intel_sdvo_mode_set(struct drm_encoder *encoder,
54889 + struct drm_display_mode *mode,
54890 + struct drm_display_mode *adjusted_mode)
54891 +{
54892 + struct drm_device *dev = encoder->dev;
54893 + struct drm_i915_private *dev_priv = dev->dev_private;
54894 + struct drm_crtc *crtc = encoder->crtc;
54895 + struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
54896 + struct intel_output *intel_output = enc_to_intel_output(encoder);
54897 + struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
54898 + u16 width, height;
54899 + u16 h_blank_len, h_sync_len, v_blank_len, v_sync_len;
54900 + u16 h_sync_offset, v_sync_offset;
54901 + u32 sdvox;
54902 + struct intel_sdvo_dtd output_dtd;
54903 + int sdvo_pixel_multiply;
54904 +
54905 + if (!mode)
54906 + return;
54907
54908 width = mode->crtc_hdisplay;
54909 height = mode->crtc_vdisplay;
54910 @@ -673,423 +580,93 @@
54911 h_sync_offset = mode->crtc_hsync_start - mode->crtc_hblank_start;
54912 v_sync_offset = mode->crtc_vsync_start - mode->crtc_vblank_start;
54913
54914 - dtd->part1.clock = mode->clock / 10;
54915 - dtd->part1.h_active = width & 0xff;
54916 - dtd->part1.h_blank = h_blank_len & 0xff;
54917 - dtd->part1.h_high = (((width >> 8) & 0xf) << 4) |
54918 + output_dtd.part1.clock = mode->clock / 10;
54919 + output_dtd.part1.h_active = width & 0xff;
54920 + output_dtd.part1.h_blank = h_blank_len & 0xff;
54921 + output_dtd.part1.h_high = (((width >> 8) & 0xf) << 4) |
54922 ((h_blank_len >> 8) & 0xf);
54923 - dtd->part1.v_active = height & 0xff;
54924 - dtd->part1.v_blank = v_blank_len & 0xff;
54925 - dtd->part1.v_high = (((height >> 8) & 0xf) << 4) |
54926 + output_dtd.part1.v_active = height & 0xff;
54927 + output_dtd.part1.v_blank = v_blank_len & 0xff;
54928 + output_dtd.part1.v_high = (((height >> 8) & 0xf) << 4) |
54929 ((v_blank_len >> 8) & 0xf);
54930
54931 - dtd->part2.h_sync_off = h_sync_offset;
54932 - dtd->part2.h_sync_width = h_sync_len & 0xff;
54933 - dtd->part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 |
54934 + output_dtd.part2.h_sync_off = h_sync_offset;
54935 + output_dtd.part2.h_sync_width = h_sync_len & 0xff;
54936 + output_dtd.part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 |
54937 (v_sync_len & 0xf);
54938 - dtd->part2.sync_off_width_high = ((h_sync_offset & 0x300) >> 2) |
54939 + output_dtd.part2.sync_off_width_high = ((h_sync_offset & 0x300) >> 2) |
54940 ((h_sync_len & 0x300) >> 4) | ((v_sync_offset & 0x30) >> 2) |
54941 ((v_sync_len & 0x30) >> 4);
54942
54943 - dtd->part2.dtd_flags = 0x18;
54944 + output_dtd.part2.dtd_flags = 0x18;
54945 if (mode->flags & DRM_MODE_FLAG_PHSYNC)
54946 - dtd->part2.dtd_flags |= 0x2;
54947 + output_dtd.part2.dtd_flags |= 0x2;
54948 if (mode->flags & DRM_MODE_FLAG_PVSYNC)
54949 - dtd->part2.dtd_flags |= 0x4;
54950 -
54951 - dtd->part2.sdvo_flags = 0;
54952 - dtd->part2.v_sync_off_high = v_sync_offset & 0xc0;
54953 - dtd->part2.reserved = 0;
54954 -}
54955 -
54956 -static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode,
54957 - struct intel_sdvo_dtd *dtd)
54958 -{
54959 - uint16_t width, height;
54960 - uint16_t h_blank_len, h_sync_len, v_blank_len, v_sync_len;
54961 - uint16_t h_sync_offset, v_sync_offset;
54962 -
54963 - width = mode->crtc_hdisplay;
54964 - height = mode->crtc_vdisplay;
54965 -
54966 - /* do some mode translations */
54967 - h_blank_len = mode->crtc_hblank_end - mode->crtc_hblank_start;
54968 - h_sync_len = mode->crtc_hsync_end - mode->crtc_hsync_start;
54969 -
54970 - v_blank_len = mode->crtc_vblank_end - mode->crtc_vblank_start;
54971 - v_sync_len = mode->crtc_vsync_end - mode->crtc_vsync_start;
54972 -
54973 - h_sync_offset = mode->crtc_hsync_start - mode->crtc_hblank_start;
54974 - v_sync_offset = mode->crtc_vsync_start - mode->crtc_vblank_start;
54975 -
54976 - mode->hdisplay = dtd->part1.h_active;
54977 - mode->hdisplay += ((dtd->part1.h_high >> 4) & 0x0f) << 8;
54978 - mode->hsync_start = mode->hdisplay + dtd->part2.h_sync_off;
54979 - mode->hsync_start += (dtd->part2.sync_off_width_high & 0xa0) << 2;
54980 - mode->hsync_end = mode->hsync_start + dtd->part2.h_sync_width;
54981 - mode->hsync_end += (dtd->part2.sync_off_width_high & 0x30) << 4;
54982 - mode->htotal = mode->hdisplay + dtd->part1.h_blank;
54983 - mode->htotal += (dtd->part1.h_high & 0xf) << 8;
54984 -
54985 - mode->vdisplay = dtd->part1.v_active;
54986 - mode->vdisplay += ((dtd->part1.v_high >> 4) & 0x0f) << 8;
54987 - mode->vsync_start = mode->vdisplay;
54988 - mode->vsync_start += (dtd->part2.v_sync_off_width >> 4) & 0xf;
54989 - mode->vsync_start += (dtd->part2.sync_off_width_high & 0x0a) << 2;
54990 - mode->vsync_start += dtd->part2.v_sync_off_high & 0xc0;
54991 - mode->vsync_end = mode->vsync_start +
54992 - (dtd->part2.v_sync_off_width & 0xf);
54993 - mode->vsync_end += (dtd->part2.sync_off_width_high & 0x3) << 4;
54994 - mode->vtotal = mode->vdisplay + dtd->part1.v_blank;
54995 - mode->vtotal += (dtd->part1.v_high & 0xf) << 8;
54996 -
54997 - mode->clock = dtd->part1.clock * 10;
54998 -
54999 - mode->flags &= (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
55000 - if (dtd->part2.dtd_flags & 0x2)
55001 - mode->flags |= DRM_MODE_FLAG_PHSYNC;
55002 - if (dtd->part2.dtd_flags & 0x4)
55003 - mode->flags |= DRM_MODE_FLAG_PVSYNC;
55004 -}
55005 -
55006 -static bool intel_sdvo_get_supp_encode(struct intel_output *output,
55007 - struct intel_sdvo_encode *encode)
55008 -{
55009 - uint8_t status;
55010 -
55011 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_SUPP_ENCODE, NULL, 0);
55012 - status = intel_sdvo_read_response(output, encode, sizeof(*encode));
55013 - if (status != SDVO_CMD_STATUS_SUCCESS) { /* non-support means DVI */
55014 - memset(encode, 0, sizeof(*encode));
55015 - return false;
55016 - }
55017 -
55018 - return true;
55019 -}
55020 -
55021 -static bool intel_sdvo_set_encode(struct intel_output *output, uint8_t mode)
55022 -{
55023 - uint8_t status;
55024 -
55025 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_ENCODE, &mode, 1);
55026 - status = intel_sdvo_read_response(output, NULL, 0);
55027 -
55028 - return (status == SDVO_CMD_STATUS_SUCCESS);
55029 -}
55030 -
55031 -static bool intel_sdvo_set_colorimetry(struct intel_output *output,
55032 - uint8_t mode)
55033 -{
55034 - uint8_t status;
55035 -
55036 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_COLORIMETRY, &mode, 1);
55037 - status = intel_sdvo_read_response(output, NULL, 0);
55038 -
55039 - return (status == SDVO_CMD_STATUS_SUCCESS);
55040 -}
55041 -
55042 -#if 0
55043 -static void intel_sdvo_dump_hdmi_buf(struct intel_output *output)
55044 -{
55045 - int i, j;
55046 - uint8_t set_buf_index[2];
55047 - uint8_t av_split;
55048 - uint8_t buf_size;
55049 - uint8_t buf[48];
55050 - uint8_t *pos;
55051 -
55052 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_AV_SPLIT, NULL, 0);
55053 - intel_sdvo_read_response(output, &av_split, 1);
55054 -
55055 - for (i = 0; i <= av_split; i++) {
55056 - set_buf_index[0] = i; set_buf_index[1] = 0;
55057 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_INDEX,
55058 - set_buf_index, 2);
55059 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_INFO, NULL, 0);
55060 - intel_sdvo_read_response(output, &buf_size, 1);
55061 -
55062 - pos = buf;
55063 - for (j = 0; j <= buf_size; j += 8) {
55064 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_HBUF_DATA,
55065 - NULL, 0);
55066 - intel_sdvo_read_response(output, pos, 8);
55067 - pos += 8;
55068 - }
55069 - }
55070 -}
55071 -#endif
55072 -
55073 -static void intel_sdvo_set_hdmi_buf(struct intel_output *output, int index,
55074 - uint8_t *data, int8_t size, uint8_t tx_rate)
55075 -{
55076 - uint8_t set_buf_index[2];
55077 -
55078 - set_buf_index[0] = index;
55079 - set_buf_index[1] = 0;
55080 -
55081 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_INDEX, set_buf_index, 2);
55082 -
55083 - for (; size > 0; size -= 8) {
55084 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_DATA, data, 8);
55085 - data += 8;
55086 - }
55087 -
55088 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_HBUF_TXRATE, &tx_rate, 1);
55089 -}
55090 -
55091 -static uint8_t intel_sdvo_calc_hbuf_csum(uint8_t *data, uint8_t size)
55092 -{
55093 - uint8_t csum = 0;
55094 - int i;
55095 -
55096 - for (i = 0; i < size; i++)
55097 - csum += data[i];
55098 -
55099 - return 0x100 - csum;
55100 -}
55101 -
55102 -#define DIP_TYPE_AVI 0x82
55103 -#define DIP_VERSION_AVI 0x2
55104 -#define DIP_LEN_AVI 13
55105 -
55106 -struct dip_infoframe {
55107 - uint8_t type;
55108 - uint8_t version;
55109 - uint8_t len;
55110 - uint8_t checksum;
55111 - union {
55112 - struct {
55113 - /* Packet Byte #1 */
55114 - uint8_t S:2;
55115 - uint8_t B:2;
55116 - uint8_t A:1;
55117 - uint8_t Y:2;
55118 - uint8_t rsvd1:1;
55119 - /* Packet Byte #2 */
55120 - uint8_t R:4;
55121 - uint8_t M:2;
55122 - uint8_t C:2;
55123 - /* Packet Byte #3 */
55124 - uint8_t SC:2;
55125 - uint8_t Q:2;
55126 - uint8_t EC:3;
55127 - uint8_t ITC:1;
55128 - /* Packet Byte #4 */
55129 - uint8_t VIC:7;
55130 - uint8_t rsvd2:1;
55131 - /* Packet Byte #5 */
55132 - uint8_t PR:4;
55133 - uint8_t rsvd3:4;
55134 - /* Packet Byte #6~13 */
55135 - uint16_t top_bar_end;
55136 - uint16_t bottom_bar_start;
55137 - uint16_t left_bar_end;
55138 - uint16_t right_bar_start;
55139 - } avi;
55140 - struct {
55141 - /* Packet Byte #1 */
55142 - uint8_t channel_count:3;
55143 - uint8_t rsvd1:1;
55144 - uint8_t coding_type:4;
55145 - /* Packet Byte #2 */
55146 - uint8_t sample_size:2; /* SS0, SS1 */
55147 - uint8_t sample_frequency:3;
55148 - uint8_t rsvd2:3;
55149 - /* Packet Byte #3 */
55150 - uint8_t coding_type_private:5;
55151 - uint8_t rsvd3:3;
55152 - /* Packet Byte #4 */
55153 - uint8_t channel_allocation;
55154 - /* Packet Byte #5 */
55155 - uint8_t rsvd4:3;
55156 - uint8_t level_shift:4;
55157 - uint8_t downmix_inhibit:1;
55158 - } audio;
55159 - uint8_t payload[28];
55160 - } __attribute__ ((packed)) u;
55161 -} __attribute__((packed));
55162 -
55163 -static void intel_sdvo_set_avi_infoframe(struct intel_output *output,
55164 - struct drm_display_mode * mode)
55165 -{
55166 - struct dip_infoframe avi_if = {
55167 - .type = DIP_TYPE_AVI,
55168 - .version = DIP_VERSION_AVI,
55169 - .len = DIP_LEN_AVI,
55170 - };
55171 -
55172 - avi_if.checksum = intel_sdvo_calc_hbuf_csum((uint8_t *)&avi_if,
55173 - 4 + avi_if.len);
55174 - intel_sdvo_set_hdmi_buf(output, 1, (uint8_t *)&avi_if, 4 + avi_if.len,
55175 - SDVO_HBUF_TX_VSYNC);
55176 -}
55177 -
55178 -static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder,
55179 - struct drm_display_mode *mode,
55180 - struct drm_display_mode *adjusted_mode)
55181 -{
55182 - struct intel_output *output = enc_to_intel_output(encoder);
55183 - struct intel_sdvo_priv *dev_priv = output->dev_priv;
55184 -
55185 - if (!dev_priv->is_tv) {
55186 - /* Make the CRTC code factor in the SDVO pixel multiplier. The
55187 - * SDVO device will be told of the multiplier during mode_set.
55188 - */
55189 - adjusted_mode->clock *= intel_sdvo_get_pixel_multiplier(mode);
55190 - } else {
55191 - struct intel_sdvo_dtd output_dtd;
55192 - bool success;
55193 -
55194 - /* We need to construct preferred input timings based on our
55195 - * output timings. To do that, we have to set the output
55196 - * timings, even though this isn't really the right place in
55197 - * the sequence to do it. Oh well.
55198 - */
55199 -
55200 -
55201 - /* Set output timings */
55202 - intel_sdvo_get_dtd_from_mode(&output_dtd, mode);
55203 - intel_sdvo_set_target_output(output,
55204 - dev_priv->controlled_output);
55205 - intel_sdvo_set_output_timing(output, &output_dtd);
55206 -
55207 - /* Set the input timing to the screen. Assume always input 0. */
55208 - intel_sdvo_set_target_input(output, true, false);
55209 -
55210 -
55211 - success = intel_sdvo_create_preferred_input_timing(output,
55212 - mode->clock / 10,
55213 - mode->hdisplay,
55214 - mode->vdisplay);
55215 - if (success) {
55216 - struct intel_sdvo_dtd input_dtd;
55217 -
55218 - intel_sdvo_get_preferred_input_timing(output,
55219 - &input_dtd);
55220 - intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd);
55221 -
55222 - } else {
55223 - return false;
55224 - }
55225 - }
55226 - return true;
55227 -}
55228 -
55229 -static void intel_sdvo_mode_set(struct drm_encoder *encoder,
55230 - struct drm_display_mode *mode,
55231 - struct drm_display_mode *adjusted_mode)
55232 -{
55233 - struct drm_device *dev = encoder->dev;
55234 - struct drm_i915_private *dev_priv = dev->dev_private;
55235 - struct drm_crtc *crtc = encoder->crtc;
55236 - struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
55237 - struct intel_output *output = enc_to_intel_output(encoder);
55238 - struct intel_sdvo_priv *sdvo_priv = output->dev_priv;
55239 - u32 sdvox = 0;
55240 - int sdvo_pixel_multiply;
55241 - struct intel_sdvo_in_out_map in_out;
55242 - struct intel_sdvo_dtd input_dtd;
55243 - u8 status;
55244 -
55245 - if (!mode)
55246 - return;
55247 -
55248 - /* First, set the input mapping for the first input to our controlled
55249 - * output. This is only correct if we're a single-input device, in
55250 - * which case the first input is the output from the appropriate SDVO
55251 - * channel on the motherboard. In a two-input device, the first input
55252 - * will be SDVOB and the second SDVOC.
55253 - */
55254 - in_out.in0 = sdvo_priv->controlled_output;
55255 - in_out.in1 = 0;
55256 -
55257 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_IN_OUT_MAP,
55258 - &in_out, sizeof(in_out));
55259 - status = intel_sdvo_read_response(output, NULL, 0);
55260 -
55261 - if (sdvo_priv->is_hdmi) {
55262 - intel_sdvo_set_avi_infoframe(output, mode);
55263 - sdvox |= SDVO_AUDIO_ENABLE;
55264 - }
55265 -
55266 - intel_sdvo_get_dtd_from_mode(&input_dtd, mode);
55267 + output_dtd.part2.dtd_flags |= 0x4;
55268
55269 - /* If it's a TV, we already set the output timing in mode_fixup.
55270 - * Otherwise, the output timing is equal to the input timing.
55271 - */
55272 - if (!sdvo_priv->is_tv) {
55273 - /* Set the output timing to the screen */
55274 - intel_sdvo_set_target_output(output,
55275 - sdvo_priv->controlled_output);
55276 - intel_sdvo_set_output_timing(output, &input_dtd);
55277 - }
55278 + output_dtd.part2.sdvo_flags = 0;
55279 + output_dtd.part2.v_sync_off_high = v_sync_offset & 0xc0;
55280 + output_dtd.part2.reserved = 0;
55281 +
55282 + /* Set the output timing to the screen */
55283 + intel_sdvo_set_target_output(intel_output, sdvo_priv->active_outputs);
55284 + intel_sdvo_set_output_timing(intel_output, &output_dtd);
55285
55286 /* Set the input timing to the screen. Assume always input 0. */
55287 - intel_sdvo_set_target_input(output, true, false);
55288 + intel_sdvo_set_target_input(intel_output, true, false);
55289
55290 - /* We would like to use intel_sdvo_create_preferred_input_timing() to
55291 + /* We would like to use i830_sdvo_create_preferred_input_timing() to
55292 * provide the device with a timing it can support, if it supports that
55293 * feature. However, presumably we would need to adjust the CRTC to
55294 * output the preferred timing, and we don't support that currently.
55295 */
55296 -#if 0
55297 - success = intel_sdvo_create_preferred_input_timing(output, clock,
55298 - width, height);
55299 - if (success) {
55300 - struct intel_sdvo_dtd *input_dtd;
55301 -
55302 - intel_sdvo_get_preferred_input_timing(output, &input_dtd);
55303 - intel_sdvo_set_input_timing(output, &input_dtd);
55304 - }
55305 -#else
55306 - intel_sdvo_set_input_timing(output, &input_dtd);
55307 -#endif
55308 + intel_sdvo_set_input_timing(intel_output, &output_dtd);
55309
55310 switch (intel_sdvo_get_pixel_multiplier(mode)) {
55311 case 1:
55312 - intel_sdvo_set_clock_rate_mult(output,
55313 + intel_sdvo_set_clock_rate_mult(intel_output,
55314 SDVO_CLOCK_RATE_MULT_1X);
55315 break;
55316 case 2:
55317 - intel_sdvo_set_clock_rate_mult(output,
55318 + intel_sdvo_set_clock_rate_mult(intel_output,
55319 SDVO_CLOCK_RATE_MULT_2X);
55320 break;
55321 case 4:
55322 - intel_sdvo_set_clock_rate_mult(output,
55323 + intel_sdvo_set_clock_rate_mult(intel_output,
55324 SDVO_CLOCK_RATE_MULT_4X);
55325 break;
55326 }
55327
55328 /* Set the SDVO control regs. */
55329 - if (IS_I965G(dev)) {
55330 - sdvox |= SDVO_BORDER_ENABLE |
55331 - SDVO_VSYNC_ACTIVE_HIGH |
55332 - SDVO_HSYNC_ACTIVE_HIGH;
55333 - } else {
55334 - sdvox |= I915_READ(sdvo_priv->output_device);
55335 - switch (sdvo_priv->output_device) {
55336 - case SDVOB:
55337 - sdvox &= SDVOB_PRESERVE_MASK;
55338 - break;
55339 - case SDVOC:
55340 - sdvox &= SDVOC_PRESERVE_MASK;
55341 - break;
55342 - }
55343 - sdvox |= (9 << 19) | SDVO_BORDER_ENABLE;
55344 - }
55345 + if (0/*IS_I965GM(dev)*/) {
55346 + sdvox = SDVO_BORDER_ENABLE;
55347 + } else {
55348 + sdvox = I915_READ(sdvo_priv->output_device);
55349 + switch (sdvo_priv->output_device) {
55350 + case SDVOB:
55351 + sdvox &= SDVOB_PRESERVE_MASK;
55352 + break;
55353 + case SDVOC:
55354 + sdvox &= SDVOC_PRESERVE_MASK;
55355 + break;
55356 + }
55357 + sdvox |= (9 << 19) | SDVO_BORDER_ENABLE;
55358 + }
55359 if (intel_crtc->pipe == 1)
55360 sdvox |= SDVO_PIPE_B_SELECT;
55361
55362 sdvo_pixel_multiply = intel_sdvo_get_pixel_multiplier(mode);
55363 if (IS_I965G(dev)) {
55364 - /* done in crtc_mode_set as the dpll_md reg must be written early */
55365 - } else if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) {
55366 - /* done in crtc_mode_set as it lives inside the dpll register */
55367 + /* done in crtc_mode_set as the dpll_md reg must be written
55368 + early */
55369 + } else if (IS_I945G(dev) || IS_I945GM(dev)) {
55370 + /* done in crtc_mode_set as it lives inside the
55371 + dpll register */
55372 } else {
55373 sdvox |= (sdvo_pixel_multiply - 1) << SDVO_PORT_MULTIPLY_SHIFT;
55374 }
55375
55376 - intel_sdvo_write_sdvox(output, sdvox);
55377 + intel_sdvo_write_sdvox(intel_output, sdvox);
55378 }
55379
55380 static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode)
55381 @@ -1137,7 +714,7 @@
55382
55383 if (0)
55384 intel_sdvo_set_encoder_power_state(intel_output, mode);
55385 - intel_sdvo_set_active_outputs(intel_output, sdvo_priv->controlled_output);
55386 + intel_sdvo_set_active_outputs(intel_output, sdvo_priv->active_outputs);
55387 }
55388 return;
55389 }
55390 @@ -1175,9 +752,6 @@
55391 &sdvo_priv->save_output_dtd[o]);
55392 }
55393 }
55394 - if (sdvo_priv->is_tv) {
55395 - /* XXX: Save TV format/enhancements. */
55396 - }
55397
55398 sdvo_priv->save_SDVOX = I915_READ(sdvo_priv->output_device);
55399 }
55400 @@ -1185,6 +759,7 @@
55401 static void intel_sdvo_restore(struct drm_connector *connector)
55402 {
55403 struct drm_device *dev = connector->dev;
55404 + struct drm_i915_private *dev_priv = dev->dev_private;
55405 struct intel_output *intel_output = to_intel_output(connector);
55406 struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
55407 int o;
55408 @@ -1215,11 +790,7 @@
55409
55410 intel_sdvo_set_clock_rate_mult(intel_output, sdvo_priv->save_sdvo_mult);
55411
55412 - if (sdvo_priv->is_tv) {
55413 - /* XXX: Restore TV format/enhancements. */
55414 - }
55415 -
55416 - intel_sdvo_write_sdvox(intel_output, sdvo_priv->save_SDVOX);
55417 + I915_WRITE(sdvo_priv->output_device, sdvo_priv->save_SDVOX);
55418
55419 if (sdvo_priv->save_SDVOX & SDVO_ENABLE)
55420 {
55421 @@ -1345,173 +916,20 @@
55422 status = intel_sdvo_read_response(intel_output, &response, 2);
55423
55424 DRM_DEBUG("SDVO response %d %d\n", response[0], response[1]);
55425 -
55426 - if (status != SDVO_CMD_STATUS_SUCCESS)
55427 - return connector_status_unknown;
55428 -
55429 if ((response[0] != 0) || (response[1] != 0))
55430 return connector_status_connected;
55431 else
55432 return connector_status_disconnected;
55433 }
55434
55435 -static void intel_sdvo_get_ddc_modes(struct drm_connector *connector)
55436 +static int intel_sdvo_get_modes(struct drm_connector *connector)
55437 {
55438 struct intel_output *intel_output = to_intel_output(connector);
55439 - struct intel_sdvo_priv *sdvo_priv = intel_output->dev_priv;
55440
55441 /* set the bus switch and get the modes */
55442 - intel_sdvo_set_control_bus_switch(intel_output, sdvo_priv->ddc_bus);
55443 + intel_sdvo_set_control_bus_switch(intel_output, SDVO_CONTROL_BUS_DDC2);
55444 intel_ddc_get_modes(intel_output);
55445
55446 -#if 0
55447 - struct drm_device *dev = encoder->dev;
55448 - struct drm_i915_private *dev_priv = dev->dev_private;
55449 - /* Mac mini hack. On this device, I get DDC through the analog, which
55450 - * load-detects as disconnected. I fail to DDC through the SDVO DDC,
55451 - * but it does load-detect as connected. So, just steal the DDC bits
55452 - * from analog when we fail at finding it the right way.
55453 - */
55454 - crt = xf86_config->output[0];
55455 - intel_output = crt->driver_private;
55456 - if (intel_output->type == I830_OUTPUT_ANALOG &&
55457 - crt->funcs->detect(crt) == XF86OutputStatusDisconnected) {
55458 - I830I2CInit(pScrn, &intel_output->pDDCBus, GPIOA, "CRTDDC_A");
55459 - edid_mon = xf86OutputGetEDID(crt, intel_output->pDDCBus);
55460 - xf86DestroyI2CBusRec(intel_output->pDDCBus, true, true);
55461 - }
55462 - if (edid_mon) {
55463 - xf86OutputSetEDID(output, edid_mon);
55464 - modes = xf86OutputGetEDIDModes(output);
55465 - }
55466 -#endif
55467 -}
55468 -
55469 -/**
55470 - * This function checks the current TV format, and chooses a default if
55471 - * it hasn't been set.
55472 - */
55473 -static void
55474 -intel_sdvo_check_tv_format(struct intel_output *output)
55475 -{
55476 - struct intel_sdvo_priv *dev_priv = output->dev_priv;
55477 - struct intel_sdvo_tv_format format, unset;
55478 - uint8_t status;
55479 -
55480 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_TV_FORMAT, NULL, 0);
55481 - status = intel_sdvo_read_response(output, &format, sizeof(format));
55482 - if (status != SDVO_CMD_STATUS_SUCCESS)
55483 - return;
55484 -
55485 - memset(&unset, 0, sizeof(unset));
55486 - if (memcmp(&format, &unset, sizeof(format))) {
55487 - DRM_DEBUG("%s: Choosing default TV format of NTSC-M\n",
55488 - SDVO_NAME(dev_priv));
55489 -
55490 - format.ntsc_m = true;
55491 - intel_sdvo_write_cmd(output, SDVO_CMD_SET_TV_FORMAT, NULL, 0);
55492 - status = intel_sdvo_read_response(output, NULL, 0);
55493 - }
55494 -}
55495 -
55496 -/*
55497 - * Set of SDVO TV modes.
55498 - * Note! This is in reply order (see loop in get_tv_modes).
55499 - * XXX: all 60Hz refresh?
55500 - */
55501 -struct drm_display_mode sdvo_tv_modes[] = {
55502 - { DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 5815680, 321, 384, 416,
55503 - 200, 0, 232, 201, 233, 4196112, 0,
55504 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55505 - { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 6814080, 321, 384, 416,
55506 - 240, 0, 272, 241, 273, 4196112, 0,
55507 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55508 - { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 9910080, 401, 464, 496,
55509 - 300, 0, 332, 301, 333, 4196112, 0,
55510 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55511 - { DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 16913280, 641, 704, 736,
55512 - 350, 0, 382, 351, 383, 4196112, 0,
55513 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55514 - { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 19121280, 641, 704, 736,
55515 - 400, 0, 432, 401, 433, 4196112, 0,
55516 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55517 - { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 19121280, 641, 704, 736,
55518 - 400, 0, 432, 401, 433, 4196112, 0,
55519 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55520 - { DRM_MODE("704x480", DRM_MODE_TYPE_DRIVER, 24624000, 705, 768, 800,
55521 - 480, 0, 512, 481, 513, 4196112, 0,
55522 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55523 - { DRM_MODE("704x576", DRM_MODE_TYPE_DRIVER, 29232000, 705, 768, 800,
55524 - 576, 0, 608, 577, 609, 4196112, 0,
55525 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55526 - { DRM_MODE("720x350", DRM_MODE_TYPE_DRIVER, 18751680, 721, 784, 816,
55527 - 350, 0, 382, 351, 383, 4196112, 0,
55528 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55529 - { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 21199680, 721, 784, 816,
55530 - 400, 0, 432, 401, 433, 4196112, 0,
55531 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55532 - { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 25116480, 721, 784, 816,
55533 - 480, 0, 512, 481, 513, 4196112, 0,
55534 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55535 - { DRM_MODE("720x540", DRM_MODE_TYPE_DRIVER, 28054080, 721, 784, 816,
55536 - 540, 0, 572, 541, 573, 4196112, 0,
55537 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55538 - { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 29816640, 721, 784, 816,
55539 - 576, 0, 608, 577, 609, 4196112, 0,
55540 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55541 - { DRM_MODE("768x576", DRM_MODE_TYPE_DRIVER, 31570560, 769, 832, 864,
55542 - 576, 0, 608, 577, 609, 4196112, 0,
55543 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55544 - { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 34030080, 801, 864, 896,
55545 - 600, 0, 632, 601, 633, 4196112, 0,
55546 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55547 - { DRM_MODE("832x624", DRM_MODE_TYPE_DRIVER, 36581760, 833, 896, 928,
55548 - 624, 0, 656, 625, 657, 4196112, 0,
55549 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55550 - { DRM_MODE("920x766", DRM_MODE_TYPE_DRIVER, 48707040, 921, 984, 1016,
55551 - 766, 0, 798, 767, 799, 4196112, 0,
55552 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55553 - { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 53827200, 1025, 1088, 1120,
55554 - 768, 0, 800, 769, 801, 4196112, 0,
55555 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55556 - { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 87265920, 1281, 1344, 1376,
55557 - 1024, 0, 1056, 1025, 1057, 4196112, 0,
55558 - DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },
55559 -};
55560 -
55561 -static void intel_sdvo_get_tv_modes(struct drm_connector *connector)
55562 -{
55563 - struct intel_output *output = to_intel_output(connector);
55564 - uint32_t reply = 0;
55565 - uint8_t status;
55566 - int i = 0;
55567 -
55568 - intel_sdvo_check_tv_format(output);
55569 -
55570 - /* Read the list of supported input resolutions for the selected TV
55571 - * format.
55572 - */
55573 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT,
55574 - NULL, 0);
55575 - status = intel_sdvo_read_response(output, &reply, 3);
55576 - if (status != SDVO_CMD_STATUS_SUCCESS)
55577 - return;
55578 -
55579 - for (i = 0; i < ARRAY_SIZE(sdvo_tv_modes); i++)
55580 - if (reply & (1 << i))
55581 - drm_mode_probed_add(connector, &sdvo_tv_modes[i]);
55582 -}
55583 -
55584 -static int intel_sdvo_get_modes(struct drm_connector *connector)
55585 -{
55586 - struct intel_output *output = to_intel_output(connector);
55587 - struct intel_sdvo_priv *sdvo_priv = output->dev_priv;
55588 -
55589 - if (sdvo_priv->is_tv)
55590 - intel_sdvo_get_tv_modes(connector);
55591 - else
55592 - intel_sdvo_get_ddc_modes(connector);
55593 -
55594 if (list_empty(&connector->probed_modes))
55595 return 0;
55596 return 1;
55597 @@ -1560,65 +978,6 @@
55598 };
55599
55600
55601 -/**
55602 - * Choose the appropriate DDC bus for control bus switch command for this
55603 - * SDVO output based on the controlled output.
55604 - *
55605 - * DDC bus number assignment is in a priority order of RGB outputs, then TMDS
55606 - * outputs, then LVDS outputs.
55607 - */
55608 -static void
55609 -intel_sdvo_select_ddc_bus(struct intel_sdvo_priv *dev_priv)
55610 -{
55611 - uint16_t mask = 0;
55612 - unsigned int num_bits;
55613 -
55614 - /* Make a mask of outputs less than or equal to our own priority in the
55615 - * list.
55616 - */
55617 - switch (dev_priv->controlled_output) {
55618 - case SDVO_OUTPUT_LVDS1:
55619 - mask |= SDVO_OUTPUT_LVDS1;
55620 - case SDVO_OUTPUT_LVDS0:
55621 - mask |= SDVO_OUTPUT_LVDS0;
55622 - case SDVO_OUTPUT_TMDS1:
55623 - mask |= SDVO_OUTPUT_TMDS1;
55624 - case SDVO_OUTPUT_TMDS0:
55625 - mask |= SDVO_OUTPUT_TMDS0;
55626 - case SDVO_OUTPUT_RGB1:
55627 - mask |= SDVO_OUTPUT_RGB1;
55628 - case SDVO_OUTPUT_RGB0:
55629 - mask |= SDVO_OUTPUT_RGB0;
55630 - break;
55631 - }
55632 -
55633 - /* Count bits to find what number we are in the priority list. */
55634 - mask &= dev_priv->caps.output_flags;
55635 - num_bits = hweight16(mask);
55636 - if (num_bits > 3) {
55637 - /* if more than 3 outputs, default to DDC bus 3 for now */
55638 - num_bits = 3;
55639 - }
55640 -
55641 - /* Corresponds to SDVO_CONTROL_BUS_DDCx */
55642 - dev_priv->ddc_bus = 1 << num_bits;
55643 -}
55644 -
55645 -static bool
55646 -intel_sdvo_get_digital_encoding_mode(struct intel_output *output)
55647 -{
55648 - struct intel_sdvo_priv *sdvo_priv = output->dev_priv;
55649 - uint8_t status;
55650 -
55651 - intel_sdvo_set_target_output(output, sdvo_priv->controlled_output);
55652 -
55653 - intel_sdvo_write_cmd(output, SDVO_CMD_GET_ENCODE, NULL, 0);
55654 - status = intel_sdvo_read_response(output, &sdvo_priv->is_hdmi, 1);
55655 - if (status != SDVO_CMD_STATUS_SUCCESS)
55656 - return false;
55657 - return true;
55658 -}
55659 -
55660 bool intel_sdvo_init(struct drm_device *dev, int output_device)
55661 {
55662 struct drm_connector *connector;
55663 @@ -1681,76 +1040,45 @@
55664
55665 intel_sdvo_get_capabilities(intel_output, &sdvo_priv->caps);
55666
55667 - if (sdvo_priv->caps.output_flags &
55668 - (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) {
55669 - if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_TMDS0)
55670 - sdvo_priv->controlled_output = SDVO_OUTPUT_TMDS0;
55671 - else
55672 - sdvo_priv->controlled_output = SDVO_OUTPUT_TMDS1;
55673 -
55674 - connector->display_info.subpixel_order = SubPixelHorizontalRGB;
55675 - encoder_type = DRM_MODE_ENCODER_TMDS;
55676 - connector_type = DRM_MODE_CONNECTOR_DVID;
55677 + memset(&sdvo_priv->active_outputs, 0, sizeof(sdvo_priv->active_outputs));
55678
55679 - if (intel_sdvo_get_supp_encode(intel_output,
55680 - &sdvo_priv->encode) &&
55681 - intel_sdvo_get_digital_encoding_mode(intel_output) &&
55682 - sdvo_priv->is_hdmi) {
55683 - /* enable hdmi encoding mode if supported */
55684 - intel_sdvo_set_encode(intel_output, SDVO_ENCODE_HDMI);
55685 - intel_sdvo_set_colorimetry(intel_output,
55686 - SDVO_COLORIMETRY_RGB256);
55687 - connector_type = DRM_MODE_CONNECTOR_HDMIA;
55688 - }
55689 - }
55690 - else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_SVID0)
55691 + /* TODO, CVBS, SVID, YPRPB & SCART outputs. */
55692 + if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_RGB0)
55693 {
55694 - sdvo_priv->controlled_output = SDVO_OUTPUT_SVID0;
55695 - connector->display_info.subpixel_order = SubPixelHorizontalRGB;
55696 - encoder_type = DRM_MODE_ENCODER_TVDAC;
55697 - connector_type = DRM_MODE_CONNECTOR_SVIDEO;
55698 - sdvo_priv->is_tv = true;
55699 - intel_output->needs_tv_clock = true;
55700 - }
55701 - else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_RGB0)
55702 - {
55703 - sdvo_priv->controlled_output = SDVO_OUTPUT_RGB0;
55704 + sdvo_priv->active_outputs = SDVO_OUTPUT_RGB0;
55705 connector->display_info.subpixel_order = SubPixelHorizontalRGB;
55706 encoder_type = DRM_MODE_ENCODER_DAC;
55707 connector_type = DRM_MODE_CONNECTOR_VGA;
55708 }
55709 else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_RGB1)
55710 {
55711 - sdvo_priv->controlled_output = SDVO_OUTPUT_RGB1;
55712 + sdvo_priv->active_outputs = SDVO_OUTPUT_RGB1;
55713 connector->display_info.subpixel_order = SubPixelHorizontalRGB;
55714 encoder_type = DRM_MODE_ENCODER_DAC;
55715 connector_type = DRM_MODE_CONNECTOR_VGA;
55716 }
55717 - else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_LVDS0)
55718 + else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_TMDS0)
55719 {
55720 - sdvo_priv->controlled_output = SDVO_OUTPUT_LVDS0;
55721 + sdvo_priv->active_outputs = SDVO_OUTPUT_TMDS0;
55722 connector->display_info.subpixel_order = SubPixelHorizontalRGB;
55723 - encoder_type = DRM_MODE_ENCODER_LVDS;
55724 - connector_type = DRM_MODE_CONNECTOR_LVDS;
55725 + encoder_type = DRM_MODE_ENCODER_TMDS;
55726 + connector_type = DRM_MODE_CONNECTOR_DVID;
55727 }
55728 - else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_LVDS1)
55729 + else if (sdvo_priv->caps.output_flags & SDVO_OUTPUT_TMDS1)
55730 {
55731 - sdvo_priv->controlled_output = SDVO_OUTPUT_LVDS1;
55732 + sdvo_priv->active_outputs = SDVO_OUTPUT_TMDS1;
55733 connector->display_info.subpixel_order = SubPixelHorizontalRGB;
55734 - encoder_type = DRM_MODE_ENCODER_LVDS;
55735 - connector_type = DRM_MODE_CONNECTOR_LVDS;
55736 + encoder_type = DRM_MODE_ENCODER_TMDS;
55737 + connector_type = DRM_MODE_CONNECTOR_DVID;
55738 }
55739 else
55740 {
55741 unsigned char bytes[2];
55742
55743 - sdvo_priv->controlled_output = 0;
55744 memcpy (bytes, &sdvo_priv->caps.output_flags, 2);
55745 - DRM_DEBUG("%s: Unknown SDVO output type (0x%02x%02x)\n",
55746 + DRM_DEBUG("%s: No active RGB or TMDS outputs (0x%02x%02x)\n",
55747 SDVO_NAME(sdvo_priv),
55748 bytes[0], bytes[1]);
55749 - encoder_type = DRM_MODE_ENCODER_NONE;
55750 - connector_type = DRM_MODE_CONNECTOR_Unknown;
55751 goto err_i2c;
55752 }
55753
55754 @@ -1761,8 +1089,6 @@
55755 drm_mode_connector_attach_encoder(&intel_output->base, &intel_output->enc);
55756 drm_sysfs_connector_add(connector);
55757
55758 - intel_sdvo_select_ddc_bus(sdvo_priv);
55759 -
55760 /* Set the input timing to the screen. Assume always input 0. */
55761 intel_sdvo_set_target_input(intel_output, true, false);
55762
55763 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_sdvo_regs.h linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_sdvo_regs.h
55764 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_sdvo_regs.h 2009-05-10 22:04:38.000000000 +0200
55765 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_sdvo_regs.h 2009-05-10 23:48:28.000000000 +0200
55766 @@ -173,9 +173,6 @@
55767 * Returns two struct intel_sdvo_output_flags structures.
55768 */
55769 #define SDVO_CMD_GET_IN_OUT_MAP 0x06
55770 -struct intel_sdvo_in_out_map {
55771 - u16 in0, in1;
55772 -};
55773
55774 /**
55775 * Sets the current mapping of SDVO inputs to outputs on the device.
55776 @@ -209,8 +206,7 @@
55777 struct intel_sdvo_get_interrupt_event_source_response {
55778 u16 interrupt_status;
55779 unsigned int ambient_light_interrupt:1;
55780 - unsigned int hdmi_audio_encrypt_change:1;
55781 - unsigned int pad:6;
55782 + unsigned int pad:7;
55783 } __attribute__((packed));
55784
55785 /**
55786 @@ -309,411 +305,23 @@
55787 # define SDVO_CLOCK_RATE_MULT_4X (1 << 3)
55788
55789 #define SDVO_CMD_GET_SUPPORTED_TV_FORMATS 0x27
55790 -/** 5 bytes of bit flags for TV formats shared by all TV format functions */
55791 -struct intel_sdvo_tv_format {
55792 - unsigned int ntsc_m:1;
55793 - unsigned int ntsc_j:1;
55794 - unsigned int ntsc_443:1;
55795 - unsigned int pal_b:1;
55796 - unsigned int pal_d:1;
55797 - unsigned int pal_g:1;
55798 - unsigned int pal_h:1;
55799 - unsigned int pal_i:1;
55800 -
55801 - unsigned int pal_m:1;
55802 - unsigned int pal_n:1;
55803 - unsigned int pal_nc:1;
55804 - unsigned int pal_60:1;
55805 - unsigned int secam_b:1;
55806 - unsigned int secam_d:1;
55807 - unsigned int secam_g:1;
55808 - unsigned int secam_k:1;
55809 -
55810 - unsigned int secam_k1:1;
55811 - unsigned int secam_l:1;
55812 - unsigned int secam_60:1;
55813 - unsigned int hdtv_std_smpte_240m_1080i_59:1;
55814 - unsigned int hdtv_std_smpte_240m_1080i_60:1;
55815 - unsigned int hdtv_std_smpte_260m_1080i_59:1;
55816 - unsigned int hdtv_std_smpte_260m_1080i_60:1;
55817 - unsigned int hdtv_std_smpte_274m_1080i_50:1;
55818 -
55819 - unsigned int hdtv_std_smpte_274m_1080i_59:1;
55820 - unsigned int hdtv_std_smpte_274m_1080i_60:1;
55821 - unsigned int hdtv_std_smpte_274m_1080p_23:1;
55822 - unsigned int hdtv_std_smpte_274m_1080p_24:1;
55823 - unsigned int hdtv_std_smpte_274m_1080p_25:1;
55824 - unsigned int hdtv_std_smpte_274m_1080p_29:1;
55825 - unsigned int hdtv_std_smpte_274m_1080p_30:1;
55826 - unsigned int hdtv_std_smpte_274m_1080p_50:1;
55827 -
55828 - unsigned int hdtv_std_smpte_274m_1080p_59:1;
55829 - unsigned int hdtv_std_smpte_274m_1080p_60:1;
55830 - unsigned int hdtv_std_smpte_295m_1080i_50:1;
55831 - unsigned int hdtv_std_smpte_295m_1080p_50:1;
55832 - unsigned int hdtv_std_smpte_296m_720p_59:1;
55833 - unsigned int hdtv_std_smpte_296m_720p_60:1;
55834 - unsigned int hdtv_std_smpte_296m_720p_50:1;
55835 - unsigned int hdtv_std_smpte_293m_480p_59:1;
55836 -
55837 - unsigned int hdtv_std_smpte_170m_480i_59:1;
55838 - unsigned int hdtv_std_iturbt601_576i_50:1;
55839 - unsigned int hdtv_std_iturbt601_576p_50:1;
55840 - unsigned int hdtv_std_eia_7702a_480i_60:1;
55841 - unsigned int hdtv_std_eia_7702a_480p_60:1;
55842 - unsigned int pad:3;
55843 -} __attribute__((packed));
55844
55845 #define SDVO_CMD_GET_TV_FORMAT 0x28
55846
55847 #define SDVO_CMD_SET_TV_FORMAT 0x29
55848
55849 -/** Returns the resolutiosn that can be used with the given TV format */
55850 -#define SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT 0x83
55851 -struct intel_sdvo_sdtv_resolution_request {
55852 - unsigned int ntsc_m:1;
55853 - unsigned int ntsc_j:1;
55854 - unsigned int ntsc_443:1;
55855 - unsigned int pal_b:1;
55856 - unsigned int pal_d:1;
55857 - unsigned int pal_g:1;
55858 - unsigned int pal_h:1;
55859 - unsigned int pal_i:1;
55860 -
55861 - unsigned int pal_m:1;
55862 - unsigned int pal_n:1;
55863 - unsigned int pal_nc:1;
55864 - unsigned int pal_60:1;
55865 - unsigned int secam_b:1;
55866 - unsigned int secam_d:1;
55867 - unsigned int secam_g:1;
55868 - unsigned int secam_k:1;
55869 -
55870 - unsigned int secam_k1:1;
55871 - unsigned int secam_l:1;
55872 - unsigned int secam_60:1;
55873 - unsigned int pad:5;
55874 -} __attribute__((packed));
55875 -
55876 -struct intel_sdvo_sdtv_resolution_reply {
55877 - unsigned int res_320x200:1;
55878 - unsigned int res_320x240:1;
55879 - unsigned int res_400x300:1;
55880 - unsigned int res_640x350:1;
55881 - unsigned int res_640x400:1;
55882 - unsigned int res_640x480:1;
55883 - unsigned int res_704x480:1;
55884 - unsigned int res_704x576:1;
55885 -
55886 - unsigned int res_720x350:1;
55887 - unsigned int res_720x400:1;
55888 - unsigned int res_720x480:1;
55889 - unsigned int res_720x540:1;
55890 - unsigned int res_720x576:1;
55891 - unsigned int res_768x576:1;
55892 - unsigned int res_800x600:1;
55893 - unsigned int res_832x624:1;
55894 -
55895 - unsigned int res_920x766:1;
55896 - unsigned int res_1024x768:1;
55897 - unsigned int res_1280x1024:1;
55898 - unsigned int pad:5;
55899 -} __attribute__((packed));
55900 -
55901 -/* Get supported resolution with squire pixel aspect ratio that can be
55902 - scaled for the requested HDTV format */
55903 -#define SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT 0x85
55904 -
55905 -struct intel_sdvo_hdtv_resolution_request {
55906 - unsigned int hdtv_std_smpte_240m_1080i_59:1;
55907 - unsigned int hdtv_std_smpte_240m_1080i_60:1;
55908 - unsigned int hdtv_std_smpte_260m_1080i_59:1;
55909 - unsigned int hdtv_std_smpte_260m_1080i_60:1;
55910 - unsigned int hdtv_std_smpte_274m_1080i_50:1;
55911 - unsigned int hdtv_std_smpte_274m_1080i_59:1;
55912 - unsigned int hdtv_std_smpte_274m_1080i_60:1;
55913 - unsigned int hdtv_std_smpte_274m_1080p_23:1;
55914 -
55915 - unsigned int hdtv_std_smpte_274m_1080p_24:1;
55916 - unsigned int hdtv_std_smpte_274m_1080p_25:1;
55917 - unsigned int hdtv_std_smpte_274m_1080p_29:1;
55918 - unsigned int hdtv_std_smpte_274m_1080p_30:1;
55919 - unsigned int hdtv_std_smpte_274m_1080p_50:1;
55920 - unsigned int hdtv_std_smpte_274m_1080p_59:1;
55921 - unsigned int hdtv_std_smpte_274m_1080p_60:1;
55922 - unsigned int hdtv_std_smpte_295m_1080i_50:1;
55923 -
55924 - unsigned int hdtv_std_smpte_295m_1080p_50:1;
55925 - unsigned int hdtv_std_smpte_296m_720p_59:1;
55926 - unsigned int hdtv_std_smpte_296m_720p_60:1;
55927 - unsigned int hdtv_std_smpte_296m_720p_50:1;
55928 - unsigned int hdtv_std_smpte_293m_480p_59:1;
55929 - unsigned int hdtv_std_smpte_170m_480i_59:1;
55930 - unsigned int hdtv_std_iturbt601_576i_50:1;
55931 - unsigned int hdtv_std_iturbt601_576p_50:1;
55932 -
55933 - unsigned int hdtv_std_eia_7702a_480i_60:1;
55934 - unsigned int hdtv_std_eia_7702a_480p_60:1;
55935 - unsigned int pad:6;
55936 -} __attribute__((packed));
55937 -
55938 -struct intel_sdvo_hdtv_resolution_reply {
55939 - unsigned int res_640x480:1;
55940 - unsigned int res_800x600:1;
55941 - unsigned int res_1024x768:1;
55942 - unsigned int res_1280x960:1;
55943 - unsigned int res_1400x1050:1;
55944 - unsigned int res_1600x1200:1;
55945 - unsigned int res_1920x1440:1;
55946 - unsigned int res_2048x1536:1;
55947 -
55948 - unsigned int res_2560x1920:1;
55949 - unsigned int res_3200x2400:1;
55950 - unsigned int res_3840x2880:1;
55951 - unsigned int pad1:5;
55952 -
55953 - unsigned int res_848x480:1;
55954 - unsigned int res_1064x600:1;
55955 - unsigned int res_1280x720:1;
55956 - unsigned int res_1360x768:1;
55957 - unsigned int res_1704x960:1;
55958 - unsigned int res_1864x1050:1;
55959 - unsigned int res_1920x1080:1;
55960 - unsigned int res_2128x1200:1;
55961 -
55962 - unsigned int res_2560x1400:1;
55963 - unsigned int res_2728x1536:1;
55964 - unsigned int res_3408x1920:1;
55965 - unsigned int res_4264x2400:1;
55966 - unsigned int res_5120x2880:1;
55967 - unsigned int pad2:3;
55968 -
55969 - unsigned int res_768x480:1;
55970 - unsigned int res_960x600:1;
55971 - unsigned int res_1152x720:1;
55972 - unsigned int res_1124x768:1;
55973 - unsigned int res_1536x960:1;
55974 - unsigned int res_1680x1050:1;
55975 - unsigned int res_1728x1080:1;
55976 - unsigned int res_1920x1200:1;
55977 -
55978 - unsigned int res_2304x1440:1;
55979 - unsigned int res_2456x1536:1;
55980 - unsigned int res_3072x1920:1;
55981 - unsigned int res_3840x2400:1;
55982 - unsigned int res_4608x2880:1;
55983 - unsigned int pad3:3;
55984 -
55985 - unsigned int res_1280x1024:1;
55986 - unsigned int pad4:7;
55987 -
55988 - unsigned int res_1280x768:1;
55989 - unsigned int pad5:7;
55990 -} __attribute__((packed));
55991 -
55992 -/* Get supported power state returns info for encoder and monitor, rely on
55993 - last SetTargetInput and SetTargetOutput calls */
55994 #define SDVO_CMD_GET_SUPPORTED_POWER_STATES 0x2a
55995 -/* Get power state returns info for encoder and monitor, rely on last
55996 - SetTargetInput and SetTargetOutput calls */
55997 -#define SDVO_CMD_GET_POWER_STATE 0x2b
55998 #define SDVO_CMD_GET_ENCODER_POWER_STATE 0x2b
55999 #define SDVO_CMD_SET_ENCODER_POWER_STATE 0x2c
56000 # define SDVO_ENCODER_STATE_ON (1 << 0)
56001 # define SDVO_ENCODER_STATE_STANDBY (1 << 1)
56002 # define SDVO_ENCODER_STATE_SUSPEND (1 << 2)
56003 # define SDVO_ENCODER_STATE_OFF (1 << 3)
56004 -# define SDVO_MONITOR_STATE_ON (1 << 4)
56005 -# define SDVO_MONITOR_STATE_STANDBY (1 << 5)
56006 -# define SDVO_MONITOR_STATE_SUSPEND (1 << 6)
56007 -# define SDVO_MONITOR_STATE_OFF (1 << 7)
56008 -
56009 -#define SDVO_CMD_GET_MAX_PANEL_POWER_SEQUENCING 0x2d
56010 -#define SDVO_CMD_GET_PANEL_POWER_SEQUENCING 0x2e
56011 -#define SDVO_CMD_SET_PANEL_POWER_SEQUENCING 0x2f
56012 -/**
56013 - * The panel power sequencing parameters are in units of milliseconds.
56014 - * The high fields are bits 8:9 of the 10-bit values.
56015 - */
56016 -struct sdvo_panel_power_sequencing {
56017 - u8 t0;
56018 - u8 t1;
56019 - u8 t2;
56020 - u8 t3;
56021 - u8 t4;
56022 -
56023 - unsigned int t0_high:2;
56024 - unsigned int t1_high:2;
56025 - unsigned int t2_high:2;
56026 - unsigned int t3_high:2;
56027 -
56028 - unsigned int t4_high:2;
56029 - unsigned int pad:6;
56030 -} __attribute__((packed));
56031 -
56032 -#define SDVO_CMD_GET_MAX_BACKLIGHT_LEVEL 0x30
56033 -struct sdvo_max_backlight_reply {
56034 - u8 max_value;
56035 - u8 default_value;
56036 -} __attribute__((packed));
56037 -
56038 -#define SDVO_CMD_GET_BACKLIGHT_LEVEL 0x31
56039 -#define SDVO_CMD_SET_BACKLIGHT_LEVEL 0x32
56040 -
56041 -#define SDVO_CMD_GET_AMBIENT_LIGHT 0x33
56042 -struct sdvo_get_ambient_light_reply {
56043 - u16 trip_low;
56044 - u16 trip_high;
56045 - u16 value;
56046 -} __attribute__((packed));
56047 -#define SDVO_CMD_SET_AMBIENT_LIGHT 0x34
56048 -struct sdvo_set_ambient_light_reply {
56049 - u16 trip_low;
56050 - u16 trip_high;
56051 - unsigned int enable:1;
56052 - unsigned int pad:7;
56053 -} __attribute__((packed));
56054 -
56055 -/* Set display power state */
56056 -#define SDVO_CMD_SET_DISPLAY_POWER_STATE 0x7d
56057 -# define SDVO_DISPLAY_STATE_ON (1 << 0)
56058 -# define SDVO_DISPLAY_STATE_STANDBY (1 << 1)
56059 -# define SDVO_DISPLAY_STATE_SUSPEND (1 << 2)
56060 -# define SDVO_DISPLAY_STATE_OFF (1 << 3)
56061 -
56062 -#define SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS 0x84
56063 -struct intel_sdvo_enhancements_reply {
56064 - unsigned int flicker_filter:1;
56065 - unsigned int flicker_filter_adaptive:1;
56066 - unsigned int flicker_filter_2d:1;
56067 - unsigned int saturation:1;
56068 - unsigned int hue:1;
56069 - unsigned int brightness:1;
56070 - unsigned int contrast:1;
56071 - unsigned int overscan_h:1;
56072 -
56073 - unsigned int overscan_v:1;
56074 - unsigned int position_h:1;
56075 - unsigned int position_v:1;
56076 - unsigned int sharpness:1;
56077 - unsigned int dot_crawl:1;
56078 - unsigned int dither:1;
56079 - unsigned int max_tv_chroma_filter:1;
56080 - unsigned int max_tv_luma_filter:1;
56081 -} __attribute__((packed));
56082 -
56083 -/* Picture enhancement limits below are dependent on the current TV format,
56084 - * and thus need to be queried and set after it.
56085 - */
56086 -#define SDVO_CMD_GET_MAX_FLICKER_FITER 0x4d
56087 -#define SDVO_CMD_GET_MAX_ADAPTIVE_FLICKER_FITER 0x7b
56088 -#define SDVO_CMD_GET_MAX_2D_FLICKER_FITER 0x52
56089 -#define SDVO_CMD_GET_MAX_SATURATION 0x55
56090 -#define SDVO_CMD_GET_MAX_HUE 0x58
56091 -#define SDVO_CMD_GET_MAX_BRIGHTNESS 0x5b
56092 -#define SDVO_CMD_GET_MAX_CONTRAST 0x5e
56093 -#define SDVO_CMD_GET_MAX_OVERSCAN_H 0x61
56094 -#define SDVO_CMD_GET_MAX_OVERSCAN_V 0x64
56095 -#define SDVO_CMD_GET_MAX_POSITION_H 0x67
56096 -#define SDVO_CMD_GET_MAX_POSITION_V 0x6a
56097 -#define SDVO_CMD_GET_MAX_SHARPNESS_V 0x6d
56098 -#define SDVO_CMD_GET_MAX_TV_CHROMA 0x74
56099 -#define SDVO_CMD_GET_MAX_TV_LUMA 0x77
56100 -struct intel_sdvo_enhancement_limits_reply {
56101 - u16 max_value;
56102 - u16 default_value;
56103 -} __attribute__((packed));
56104
56105 -#define SDVO_CMD_GET_LVDS_PANEL_INFORMATION 0x7f
56106 -#define SDVO_CMD_SET_LVDS_PANEL_INFORMATION 0x80
56107 -# define SDVO_LVDS_COLOR_DEPTH_18 (0 << 0)
56108 -# define SDVO_LVDS_COLOR_DEPTH_24 (1 << 0)
56109 -# define SDVO_LVDS_CONNECTOR_SPWG (0 << 2)
56110 -# define SDVO_LVDS_CONNECTOR_OPENLDI (1 << 2)
56111 -# define SDVO_LVDS_SINGLE_CHANNEL (0 << 4)
56112 -# define SDVO_LVDS_DUAL_CHANNEL (1 << 4)
56113 -
56114 -#define SDVO_CMD_GET_FLICKER_FILTER 0x4e
56115 -#define SDVO_CMD_SET_FLICKER_FILTER 0x4f
56116 -#define SDVO_CMD_GET_ADAPTIVE_FLICKER_FITER 0x50
56117 -#define SDVO_CMD_SET_ADAPTIVE_FLICKER_FITER 0x51
56118 -#define SDVO_CMD_GET_2D_FLICKER_FITER 0x53
56119 -#define SDVO_CMD_SET_2D_FLICKER_FITER 0x54
56120 -#define SDVO_CMD_GET_SATURATION 0x56
56121 -#define SDVO_CMD_SET_SATURATION 0x57
56122 -#define SDVO_CMD_GET_HUE 0x59
56123 -#define SDVO_CMD_SET_HUE 0x5a
56124 -#define SDVO_CMD_GET_BRIGHTNESS 0x5c
56125 -#define SDVO_CMD_SET_BRIGHTNESS 0x5d
56126 -#define SDVO_CMD_GET_CONTRAST 0x5f
56127 -#define SDVO_CMD_SET_CONTRAST 0x60
56128 -#define SDVO_CMD_GET_OVERSCAN_H 0x62
56129 -#define SDVO_CMD_SET_OVERSCAN_H 0x63
56130 -#define SDVO_CMD_GET_OVERSCAN_V 0x65
56131 -#define SDVO_CMD_SET_OVERSCAN_V 0x66
56132 -#define SDVO_CMD_GET_POSITION_H 0x68
56133 -#define SDVO_CMD_SET_POSITION_H 0x69
56134 -#define SDVO_CMD_GET_POSITION_V 0x6b
56135 -#define SDVO_CMD_SET_POSITION_V 0x6c
56136 -#define SDVO_CMD_GET_SHARPNESS 0x6e
56137 -#define SDVO_CMD_SET_SHARPNESS 0x6f
56138 -#define SDVO_CMD_GET_TV_CHROMA 0x75
56139 -#define SDVO_CMD_SET_TV_CHROMA 0x76
56140 -#define SDVO_CMD_GET_TV_LUMA 0x78
56141 -#define SDVO_CMD_SET_TV_LUMA 0x79
56142 -struct intel_sdvo_enhancements_arg {
56143 - u16 value;
56144 -}__attribute__((packed));
56145 -
56146 -#define SDVO_CMD_GET_DOT_CRAWL 0x70
56147 -#define SDVO_CMD_SET_DOT_CRAWL 0x71
56148 -# define SDVO_DOT_CRAWL_ON (1 << 0)
56149 -# define SDVO_DOT_CRAWL_DEFAULT_ON (1 << 1)
56150 -
56151 -#define SDVO_CMD_GET_DITHER 0x72
56152 -#define SDVO_CMD_SET_DITHER 0x73
56153 -# define SDVO_DITHER_ON (1 << 0)
56154 -# define SDVO_DITHER_DEFAULT_ON (1 << 1)
56155 +#define SDVO_CMD_SET_TV_RESOLUTION_SUPPORT 0x93
56156
56157 #define SDVO_CMD_SET_CONTROL_BUS_SWITCH 0x7a
56158 -# define SDVO_CONTROL_BUS_PROM (1 << 0)
56159 -# define SDVO_CONTROL_BUS_DDC1 (1 << 1)
56160 -# define SDVO_CONTROL_BUS_DDC2 (1 << 2)
56161 -# define SDVO_CONTROL_BUS_DDC3 (1 << 3)
56162 -
56163 -/* HDMI op codes */
56164 -#define SDVO_CMD_GET_SUPP_ENCODE 0x9d
56165 -#define SDVO_CMD_GET_ENCODE 0x9e
56166 -#define SDVO_CMD_SET_ENCODE 0x9f
56167 - #define SDVO_ENCODE_DVI 0x0
56168 - #define SDVO_ENCODE_HDMI 0x1
56169 -#define SDVO_CMD_SET_PIXEL_REPLI 0x8b
56170 -#define SDVO_CMD_GET_PIXEL_REPLI 0x8c
56171 -#define SDVO_CMD_GET_COLORIMETRY_CAP 0x8d
56172 -#define SDVO_CMD_SET_COLORIMETRY 0x8e
56173 - #define SDVO_COLORIMETRY_RGB256 0x0
56174 - #define SDVO_COLORIMETRY_RGB220 0x1
56175 - #define SDVO_COLORIMETRY_YCrCb422 0x3
56176 - #define SDVO_COLORIMETRY_YCrCb444 0x4
56177 -#define SDVO_CMD_GET_COLORIMETRY 0x8f
56178 -#define SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER 0x90
56179 -#define SDVO_CMD_SET_AUDIO_STAT 0x91
56180 -#define SDVO_CMD_GET_AUDIO_STAT 0x92
56181 -#define SDVO_CMD_SET_HBUF_INDEX 0x93
56182 -#define SDVO_CMD_GET_HBUF_INDEX 0x94
56183 -#define SDVO_CMD_GET_HBUF_INFO 0x95
56184 -#define SDVO_CMD_SET_HBUF_AV_SPLIT 0x96
56185 -#define SDVO_CMD_GET_HBUF_AV_SPLIT 0x97
56186 -#define SDVO_CMD_SET_HBUF_DATA 0x98
56187 -#define SDVO_CMD_GET_HBUF_DATA 0x99
56188 -#define SDVO_CMD_SET_HBUF_TXRATE 0x9a
56189 -#define SDVO_CMD_GET_HBUF_TXRATE 0x9b
56190 - #define SDVO_HBUF_TX_DISABLED (0 << 6)
56191 - #define SDVO_HBUF_TX_ONCE (2 << 6)
56192 - #define SDVO_HBUF_TX_VSYNC (3 << 6)
56193 -#define SDVO_CMD_GET_AUDIO_TX_INFO 0x9c
56194 -
56195 -struct intel_sdvo_encode{
56196 - u8 dvi_rev;
56197 - u8 hdmi_rev;
56198 -} __attribute__ ((packed));
56199 +# define SDVO_CONTROL_BUS_PROM 0x0
56200 +# define SDVO_CONTROL_BUS_DDC1 0x1
56201 +# define SDVO_CONTROL_BUS_DDC2 0x2
56202 +# define SDVO_CONTROL_BUS_DDC3 0x3
56203 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_tv.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_tv.c
56204 --- linux-2.6.29.owrt/drivers/gpu/drm/i915/intel_tv.c 2009-05-10 22:04:38.000000000 +0200
56205 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/i915/intel_tv.c 2009-05-10 23:48:28.000000000 +0200
56206 @@ -411,7 +411,7 @@
56207 * These values account for -1s required.
56208 */
56209
56210 -static const struct tv_mode tv_modes[] = {
56211 +const static struct tv_mode tv_modes[] = {
56212 {
56213 .name = "NTSC-M",
56214 .clock = 107520,
56215 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/Kconfig linux-2.6.29-rc3.owrt/drivers/gpu/drm/Kconfig
56216 --- linux-2.6.29.owrt/drivers/gpu/drm/Kconfig 2009-05-10 22:04:38.000000000 +0200
56217 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/Kconfig 2009-05-10 23:48:28.000000000 +0200
56218 @@ -70,7 +70,7 @@
56219 select FB_CFB_FILLRECT
56220 select FB_CFB_COPYAREA
56221 select FB_CFB_IMAGEBLIT
56222 - select FB
56223 + depends on FB
56224 tristate "i915 driver"
56225 help
56226 Choose this option if you have a system that has Intel 830M, 845G,
56227 @@ -80,17 +80,18 @@
56228 XFree86 4.4 and above. If unsure, build this and i830 as modules and
56229 the X server will load the correct one.
56230
56231 +endchoice
56232 +
56233 config DRM_I915_KMS
56234 bool "Enable modesetting on intel by default"
56235 depends on DRM_I915
56236 help
56237 - Choose this option if you want kernel modesetting enabled by default,
56238 - and you have a new enough userspace to support this. Running old
56239 - userspaces with this enabled will cause pain. Note that this causes
56240 - the driver to bind to PCI devices, which precludes loading things
56241 - like intelfb.
56242 + Choose this option if you want kernel modesetting enabled by default,
56243 + and you have a new enough userspace to support this. Running old
56244 + userspaces with this enabled will cause pain. Note that this causes
56245 + the driver to bind to PCI devices, which precludes loading things
56246 + like intelfb.
56247
56248 -endchoice
56249
56250 config DRM_MGA
56251 tristate "Matrox g200/g400"
56252 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/gpu/drm/radeon/radeon_cp.c linux-2.6.29-rc3.owrt/drivers/gpu/drm/radeon/radeon_cp.c
56253 --- linux-2.6.29.owrt/drivers/gpu/drm/radeon/radeon_cp.c 2009-05-10 22:04:38.000000000 +0200
56254 +++ linux-2.6.29-rc3.owrt/drivers/gpu/drm/radeon/radeon_cp.c 2009-05-10 23:48:28.000000000 +0200
56255 @@ -557,10 +557,8 @@
56256 }
56257
56258 static void radeon_cp_init_ring_buffer(struct drm_device * dev,
56259 - drm_radeon_private_t *dev_priv,
56260 - struct drm_file *file_priv)
56261 + drm_radeon_private_t * dev_priv)
56262 {
56263 - struct drm_radeon_master_private *master_priv;
56264 u32 ring_start, cur_read_ptr;
56265 u32 tmp;
56266
56267 @@ -679,14 +677,6 @@
56268 dev_priv->scratch[2] = 0;
56269 RADEON_WRITE(RADEON_LAST_CLEAR_REG, 0);
56270
56271 - /* reset sarea copies of these */
56272 - master_priv = file_priv->master->driver_priv;
56273 - if (master_priv->sarea_priv) {
56274 - master_priv->sarea_priv->last_frame = 0;
56275 - master_priv->sarea_priv->last_dispatch = 0;
56276 - master_priv->sarea_priv->last_clear = 0;
56277 - }
56278 -
56279 radeon_do_wait_for_idle(dev_priv);
56280
56281 /* Sync everything up */
56282 @@ -1049,9 +1039,9 @@
56283
56284 #if __OS_HAS_AGP
56285 if (dev_priv->flags & RADEON_IS_AGP) {
56286 - drm_core_ioremap_wc(dev_priv->cp_ring, dev);
56287 - drm_core_ioremap_wc(dev_priv->ring_rptr, dev);
56288 - drm_core_ioremap_wc(dev->agp_buffer_map, dev);
56289 + drm_core_ioremap(dev_priv->cp_ring, dev);
56290 + drm_core_ioremap(dev_priv->ring_rptr, dev);
56291 + drm_core_ioremap(dev->agp_buffer_map, dev);
56292 if (!dev_priv->cp_ring->handle ||
56293 !dev_priv->ring_rptr->handle ||
56294 !dev->agp_buffer_map->handle) {
56295 @@ -1225,7 +1215,7 @@
56296 }
56297
56298 radeon_cp_load_microcode(dev_priv);
56299 - radeon_cp_init_ring_buffer(dev, dev_priv, file_priv);
56300 + radeon_cp_init_ring_buffer(dev, dev_priv);
56301
56302 dev_priv->last_buf = 0;
56303
56304 @@ -1291,7 +1281,7 @@
56305 *
56306 * Charl P. Botha <http://cpbotha.net>
56307 */
56308 -static int radeon_do_resume_cp(struct drm_device *dev, struct drm_file *file_priv)
56309 +static int radeon_do_resume_cp(struct drm_device * dev)
56310 {
56311 drm_radeon_private_t *dev_priv = dev->dev_private;
56312
56313 @@ -1314,7 +1304,7 @@
56314 }
56315
56316 radeon_cp_load_microcode(dev_priv);
56317 - radeon_cp_init_ring_buffer(dev, dev_priv, file_priv);
56318 + radeon_cp_init_ring_buffer(dev, dev_priv);
56319
56320 radeon_do_engine_reset(dev);
56321 radeon_irq_set_state(dev, RADEON_SW_INT_ENABLE, 1);
56322 @@ -1489,7 +1479,8 @@
56323 */
56324 int radeon_cp_resume(struct drm_device *dev, void *data, struct drm_file *file_priv)
56325 {
56326 - return radeon_do_resume_cp(dev, file_priv);
56327 +
56328 + return radeon_do_resume_cp(dev);
56329 }
56330
56331 int radeon_engine_reset(struct drm_device *dev, void *data, struct drm_file *file_priv)
56332 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hid/hid-core.c linux-2.6.29-rc3.owrt/drivers/hid/hid-core.c
56333 --- linux-2.6.29.owrt/drivers/hid/hid-core.c 2009-05-10 22:04:38.000000000 +0200
56334 +++ linux-2.6.29-rc3.owrt/drivers/hid/hid-core.c 2009-05-10 23:48:28.000000000 +0200
56335 @@ -1218,7 +1218,6 @@
56336 }
56337 EXPORT_SYMBOL_GPL(hid_connect);
56338
56339 -/* a list of devices for which there is a specialized driver on HID bus */
56340 static const struct hid_device_id hid_blacklist[] = {
56341 { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
56342 { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
56343 @@ -1300,13 +1299,7 @@
56344 { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_PS3_CONTROLLER) },
56345 { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGX_MOUSE) },
56346 { HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) },
56347 - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
56348 - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) },
56349 - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651) },
56350 - { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654) },
56351 { HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED, USB_DEVICE_ID_TOPSEED_CYBERLINK) },
56352 - { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) },
56353 - { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0030) },
56354
56355 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, 0x030c) },
56356 { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
56357 @@ -1483,7 +1476,6 @@
56358 .uevent = hid_uevent,
56359 };
56360
56361 -/* a list of devices that shouldn't be handled by HID core at all */
56362 static const struct hid_device_id hid_ignore_list[] = {
56363 { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR) },
56364 { HID_USB_DEVICE(USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302) },
56365 @@ -1611,14 +1603,15 @@
56366 { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0002) },
56367 { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0003) },
56368 { HID_USB_DEVICE(USB_VENDOR_ID_PANJIT, 0x0004) },
56369 - { HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
56370 { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD) },
56371 { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2) },
56372 { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
56373 - { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4) },
56374 - { HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5) },
56375 { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
56376 { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
56377 + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) },
56378 + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) },
56379 + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651) },
56380 + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654) },
56381 { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) },
56382 { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) },
56383 { HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP) },
56384 @@ -1629,6 +1622,8 @@
56385 { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20) },
56386 { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_8_8_4_IF_KIT) },
56387 { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) },
56388 + { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0005) },
56389 + { HID_USB_DEVICE(USB_VENDOR_ID_ZEROPLUS, 0x0030) },
56390 { }
56391 };
56392
56393 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hid/hid-ids.h linux-2.6.29-rc3.owrt/drivers/hid/hid-ids.h
56394 --- linux-2.6.29.owrt/drivers/hid/hid-ids.h 2009-05-10 22:04:38.000000000 +0200
56395 +++ linux-2.6.29-rc3.owrt/drivers/hid/hid-ids.h 2009-05-10 23:48:28.000000000 +0200
56396 @@ -348,9 +348,6 @@
56397 #define USB_VENDOR_ID_PLAYDOTCOM 0x0b43
56398 #define USB_DEVICE_ID_PLAYDOTCOM_EMS_USBII 0x0003
56399
56400 -#define USB_VENDOR_ID_POWERCOM 0x0d9f
56401 -#define USB_DEVICE_ID_POWERCOM_UPS 0x0002
56402 -
56403 #define USB_VENDOR_ID_SAITEK 0x06a3
56404 #define USB_DEVICE_ID_SAITEK_RUMBLEPAD 0xff17
56405
56406 @@ -365,8 +362,6 @@
56407 #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038
56408 #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD2 0x0036
56409 #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3 0x0034
56410 -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD4 0x0044
56411 -#define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD5 0x0045
56412
56413 #define USB_VENDOR_ID_SUN 0x0430
56414 #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab
56415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hid/hid-microsoft.c linux-2.6.29-rc3.owrt/drivers/hid/hid-microsoft.c
56416 --- linux-2.6.29.owrt/drivers/hid/hid-microsoft.c 2009-05-10 22:04:38.000000000 +0200
56417 +++ linux-2.6.29-rc3.owrt/drivers/hid/hid-microsoft.c 2009-05-10 23:48:28.000000000 +0200
56418 @@ -30,7 +30,7 @@
56419 #define MS_NOGET 0x10
56420
56421 /*
56422 - * Microsoft Wireless Desktop Receiver (Model 1028) has
56423 + * Microsoft Wireless Desktop Receiver (Model 1028) has several
56424 * 'Usage Min/Max' where it ought to have 'Physical Min/Max'
56425 */
56426 static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
56427 @@ -38,12 +38,17 @@
56428 {
56429 unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
56430
56431 - if ((quirks & MS_RDESC) && rsize == 571 && rdesc[557] == 0x19 &&
56432 + if ((quirks & MS_RDESC) && rsize == 571 && rdesc[284] == 0x19 &&
56433 + rdesc[286] == 0x2a && rdesc[304] == 0x19 &&
56434 + rdesc[306] == 0x29 && rdesc[352] == 0x1a &&
56435 + rdesc[355] == 0x2a && rdesc[557] == 0x19 &&
56436 rdesc[559] == 0x29) {
56437 dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver "
56438 "Model 1028 report descriptor\n");
56439 - rdesc[557] = 0x35;
56440 - rdesc[559] = 0x45;
56441 + rdesc[284] = rdesc[304] = rdesc[557] = 0x35;
56442 + rdesc[352] = 0x36;
56443 + rdesc[286] = rdesc[355] = 0x46;
56444 + rdesc[306] = rdesc[559] = 0x45;
56445 }
56446 }
56447
56448 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hid/hidraw.c linux-2.6.29-rc3.owrt/drivers/hid/hidraw.c
56449 --- linux-2.6.29.owrt/drivers/hid/hidraw.c 2009-05-10 22:04:38.000000000 +0200
56450 +++ linux-2.6.29-rc3.owrt/drivers/hid/hidraw.c 2009-05-10 23:48:28.000000000 +0200
56451 @@ -267,10 +267,8 @@
56452 default:
56453 {
56454 struct hid_device *hid = dev->hid;
56455 - if (_IOC_TYPE(cmd) != 'H' || _IOC_DIR(cmd) != _IOC_READ) {
56456 - ret = -EINVAL;
56457 - break;
56458 - }
56459 + if (_IOC_TYPE(cmd) != 'H' || _IOC_DIR(cmd) != _IOC_READ)
56460 + return -EINVAL;
56461
56462 if (_IOC_NR(cmd) == _IOC_NR(HIDIOCGRAWNAME(0))) {
56463 int len;
56464 @@ -279,9 +277,8 @@
56465 len = strlen(hid->name) + 1;
56466 if (len > _IOC_SIZE(cmd))
56467 len = _IOC_SIZE(cmd);
56468 - ret = copy_to_user(user_arg, hid->name, len) ?
56469 + return copy_to_user(user_arg, hid->name, len) ?
56470 -EFAULT : len;
56471 - break;
56472 }
56473
56474 if (_IOC_NR(cmd) == _IOC_NR(HIDIOCGRAWPHYS(0))) {
56475 @@ -291,13 +288,12 @@
56476 len = strlen(hid->phys) + 1;
56477 if (len > _IOC_SIZE(cmd))
56478 len = _IOC_SIZE(cmd);
56479 - ret = copy_to_user(user_arg, hid->phys, len) ?
56480 + return copy_to_user(user_arg, hid->phys, len) ?
56481 -EFAULT : len;
56482 - break;
56483 }
56484 }
56485
56486 - ret = -ENOTTY;
56487 + ret = -ENOTTY;
56488 }
56489 unlock_kernel();
56490 return ret;
56491 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hid/usbhid/hiddev.c linux-2.6.29-rc3.owrt/drivers/hid/usbhid/hiddev.c
56492 --- linux-2.6.29.owrt/drivers/hid/usbhid/hiddev.c 2009-05-10 22:04:38.000000000 +0200
56493 +++ linux-2.6.29-rc3.owrt/drivers/hid/usbhid/hiddev.c 2009-05-10 23:48:28.000000000 +0200
56494 @@ -306,7 +306,7 @@
56495 return 0;
56496 bail:
56497 file->private_data = NULL;
56498 - kfree(list);
56499 + kfree(list->hiddev);
56500 return res;
56501 }
56502
56503 @@ -323,7 +323,7 @@
56504 */
56505 static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t count, loff_t *ppos)
56506 {
56507 - DEFINE_WAIT(wait);
56508 + DECLARE_WAITQUEUE(wait, current);
56509 struct hiddev_list *list = file->private_data;
56510 int event_size;
56511 int retval;
56512 @@ -656,7 +656,7 @@
56513
56514 case HIDIOCGSTRING:
56515 mutex_lock(&hiddev->existancelock);
56516 - if (hiddev->exist)
56517 + if (!hiddev->exist)
56518 r = hiddev_ioctl_string(hiddev, cmd, user_arg);
56519 else
56520 r = -ENODEV;
56521 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/abituguru3.c linux-2.6.29-rc3.owrt/drivers/hwmon/abituguru3.c
56522 --- linux-2.6.29.owrt/drivers/hwmon/abituguru3.c 2009-05-10 22:04:39.000000000 +0200
56523 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/abituguru3.c 2009-05-10 23:48:28.000000000 +0200
56524 @@ -760,11 +760,8 @@
56525
56526 for (i = 0; i < offset_count; i++)
56527 if ((x = abituguru3_read(data, bank, offset + i, count,
56528 - buf + i * count)) != count) {
56529 - if (x < 0)
56530 - return x;
56531 - return i * count + x;
56532 - }
56533 + buf + i * count)) != count)
56534 + return i * count + (i && (x < 0)) ? 0 : x;
56535
56536 return i * count;
56537 }
56538 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/applesmc.c linux-2.6.29-rc3.owrt/drivers/hwmon/applesmc.c
56539 --- linux-2.6.29.owrt/drivers/hwmon/applesmc.c 2009-05-10 22:04:39.000000000 +0200
56540 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/applesmc.c 2009-05-10 23:48:28.000000000 +0200
56541 @@ -83,7 +83,7 @@
56542 /*
56543 * Temperature sensors keys (sp78 - 2 bytes).
56544 */
56545 -static const char *temperature_sensors_sets[][41] = {
56546 +static const char* temperature_sensors_sets[][36] = {
56547 /* Set 0: Macbook Pro */
56548 { "TA0P", "TB0T", "TC0D", "TC0P", "TG0H", "TG0P", "TG0T", "Th0H",
56549 "Th1H", "Tm0P", "Ts0P", "Ts1P", NULL },
56550 @@ -135,13 +135,6 @@
56551 { "TB0T", "TB1S", "TB1T", "TB2S", "TB2T", "TC0D", "TN0D", "TTF0",
56552 "TV0P", "TVFP", "TW0P", "Th0P", "Tp0P", "Tp1P", "TpFP", "Ts0P",
56553 "Ts0S", NULL },
56554 -/* Set 16: Mac Pro 3,1 (2 x Quad-Core) */
56555 - { "TA0P", "TCAG", "TCAH", "TCBG", "TCBH", "TC0C", "TC0D", "TC0P",
56556 - "TC1C", "TC1D", "TC2C", "TC2D", "TC3C", "TC3D", "TH0P", "TH1P",
56557 - "TH2P", "TH3P", "TMAP", "TMAS", "TMBS", "TM0P", "TM0S", "TM1P",
56558 - "TM1S", "TM2P", "TM2S", "TM3S", "TM8P", "TM8S", "TM9P", "TM9S",
56559 - "TN0C", "TN0D", "TN0H", "TS0C", "Tp0C", "Tp1C", "Tv0S", "Tv1S",
56560 - NULL },
56561 };
56562
56563 /* List of keys used to read/write fan speeds */
56564 @@ -1160,16 +1153,6 @@
56565 applesmc_show_temperature, NULL, 33);
56566 static SENSOR_DEVICE_ATTR(temp35_input, S_IRUGO,
56567 applesmc_show_temperature, NULL, 34);
56568 -static SENSOR_DEVICE_ATTR(temp36_input, S_IRUGO,
56569 - applesmc_show_temperature, NULL, 35);
56570 -static SENSOR_DEVICE_ATTR(temp37_input, S_IRUGO,
56571 - applesmc_show_temperature, NULL, 36);
56572 -static SENSOR_DEVICE_ATTR(temp38_input, S_IRUGO,
56573 - applesmc_show_temperature, NULL, 37);
56574 -static SENSOR_DEVICE_ATTR(temp39_input, S_IRUGO,
56575 - applesmc_show_temperature, NULL, 38);
56576 -static SENSOR_DEVICE_ATTR(temp40_input, S_IRUGO,
56577 - applesmc_show_temperature, NULL, 39);
56578
56579 static struct attribute *temperature_attributes[] = {
56580 &sensor_dev_attr_temp1_input.dev_attr.attr,
56581 @@ -1207,11 +1190,6 @@
56582 &sensor_dev_attr_temp33_input.dev_attr.attr,
56583 &sensor_dev_attr_temp34_input.dev_attr.attr,
56584 &sensor_dev_attr_temp35_input.dev_attr.attr,
56585 - &sensor_dev_attr_temp36_input.dev_attr.attr,
56586 - &sensor_dev_attr_temp37_input.dev_attr.attr,
56587 - &sensor_dev_attr_temp38_input.dev_attr.attr,
56588 - &sensor_dev_attr_temp39_input.dev_attr.attr,
56589 - &sensor_dev_attr_temp40_input.dev_attr.attr,
56590 NULL
56591 };
56592
56593 @@ -1334,8 +1312,6 @@
56594 { .accelerometer = 0, .light = 0, .temperature_set = 14 },
56595 /* MacBook Air 2,1: accelerometer, backlight and temperature set 15 */
56596 { .accelerometer = 1, .light = 1, .temperature_set = 15 },
56597 -/* MacPro3,1: temperature set 16 */
56598 - { .accelerometer = 0, .light = 0, .temperature_set = 16 },
56599 };
56600
56601 /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
56602 @@ -1393,10 +1369,6 @@
56603 DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
56604 DMI_MATCH(DMI_PRODUCT_NAME,"MacPro2") },
56605 &applesmc_dmi_data[4]},
56606 - { applesmc_dmi_match, "Apple MacPro3", {
56607 - DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
56608 - DMI_MATCH(DMI_PRODUCT_NAME, "MacPro3") },
56609 - &applesmc_dmi_data[16]},
56610 { applesmc_dmi_match, "Apple MacPro", {
56611 DMI_MATCH(DMI_BOARD_VENDOR, "Apple"),
56612 DMI_MATCH(DMI_PRODUCT_NAME, "MacPro") },
56613 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/f71882fg.c linux-2.6.29-rc3.owrt/drivers/hwmon/f71882fg.c
56614 --- linux-2.6.29.owrt/drivers/hwmon/f71882fg.c 2009-05-10 22:04:39.000000000 +0200
56615 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/f71882fg.c 2009-05-10 23:48:28.000000000 +0200
56616 @@ -1872,7 +1872,7 @@
56617
56618 devid = superio_inw(sioaddr, SIO_REG_MANID);
56619 if (devid != SIO_FINTEK_ID) {
56620 - pr_debug(DRVNAME ": Not a Fintek device\n");
56621 + printk(KERN_INFO DRVNAME ": Not a Fintek device\n");
56622 goto exit;
56623 }
56624
56625 @@ -1932,7 +1932,7 @@
56626 res.name = f71882fg_pdev->name;
56627 err = acpi_check_resource_conflict(&res);
56628 if (err)
56629 - goto exit_device_put;
56630 + return err;
56631
56632 err = platform_device_add_resources(f71882fg_pdev, &res, 1);
56633 if (err) {
56634 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/f75375s.c linux-2.6.29-rc3.owrt/drivers/hwmon/f75375s.c
56635 --- linux-2.6.29.owrt/drivers/hwmon/f75375s.c 2009-05-10 22:04:39.000000000 +0200
56636 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/f75375s.c 2009-05-10 23:48:28.000000000 +0200
56637 @@ -617,7 +617,7 @@
56638 static int f75375_probe(struct i2c_client *client,
56639 const struct i2c_device_id *id)
56640 {
56641 - struct f75375_data *data;
56642 + struct f75375_data *data = i2c_get_clientdata(client);
56643 struct f75375s_platform_data *f75375s_pdata = client->dev.platform_data;
56644 int err;
56645
56646 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/hp_accel.c linux-2.6.29-rc3.owrt/drivers/hwmon/hp_accel.c
56647 --- linux-2.6.29.owrt/drivers/hwmon/hp_accel.c 2009-05-10 22:04:39.000000000 +0200
56648 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/hp_accel.c 2009-05-10 23:48:28.000000000 +0200
56649 @@ -153,10 +153,7 @@
56650 static struct axis_conversion lis3lv02d_axis_x_inverted = {-1, 2, 3};
56651 static struct axis_conversion lis3lv02d_axis_z_inverted = {1, 2, -3};
56652 static struct axis_conversion lis3lv02d_axis_xy_rotated_left = {-2, 1, 3};
56653 -static struct axis_conversion lis3lv02d_axis_xy_rotated_left_usd = {-2, 1, -3};
56654 static struct axis_conversion lis3lv02d_axis_xy_swap_inverted = {-2, -1, 3};
56655 -static struct axis_conversion lis3lv02d_axis_xy_rotated_right = {2, -1, 3};
56656 -static struct axis_conversion lis3lv02d_axis_xy_swap_yz_inverted = {2, -1, -3};
56657
56658 #define AXIS_DMI_MATCH(_ident, _name, _axis) { \
56659 .ident = _ident, \
56660 @@ -166,18 +163,6 @@
56661 }, \
56662 .driver_data = &lis3lv02d_axis_##_axis \
56663 }
56664 -
56665 -#define AXIS_DMI_MATCH2(_ident, _class1, _name1, \
56666 - _class2, _name2, \
56667 - _axis) { \
56668 - .ident = _ident, \
56669 - .callback = lis3lv02d_dmi_matched, \
56670 - .matches = { \
56671 - DMI_MATCH(DMI_##_class1, _name1), \
56672 - DMI_MATCH(DMI_##_class2, _name2), \
56673 - }, \
56674 - .driver_data = &lis3lv02d_axis_##_axis \
56675 -}
56676 static struct dmi_system_id lis3lv02d_dmi_ids[] = {
56677 /* product names are truncated to match all kinds of a same model */
56678 AXIS_DMI_MATCH("NC64x0", "HP Compaq nc64", x_inverted),
56679 @@ -187,22 +172,10 @@
56680 AXIS_DMI_MATCH("NC2510", "HP Compaq 2510", y_inverted),
56681 AXIS_DMI_MATCH("NC8510", "HP Compaq 8510", xy_swap_inverted),
56682 AXIS_DMI_MATCH("HP2133", "HP 2133", xy_rotated_left),
56683 - AXIS_DMI_MATCH("NC653x", "HP Compaq 653", xy_rotated_left_usd),
56684 - AXIS_DMI_MATCH("NC673x", "HP Compaq 673", xy_rotated_left_usd),
56685 - AXIS_DMI_MATCH("NC651xx", "HP Compaq 651", xy_rotated_right),
56686 - AXIS_DMI_MATCH("NC671xx", "HP Compaq 671", xy_swap_yz_inverted),
56687 - /* Intel-based HP Pavilion dv5 */
56688 - AXIS_DMI_MATCH2("HPDV5_I",
56689 - PRODUCT_NAME, "HP Pavilion dv5",
56690 - BOARD_NAME, "3603",
56691 - x_inverted),
56692 - /* AMD-based HP Pavilion dv5 */
56693 - AXIS_DMI_MATCH2("HPDV5_A",
56694 - PRODUCT_NAME, "HP Pavilion dv5",
56695 - BOARD_NAME, "3600",
56696 - y_inverted),
56697 { NULL, }
56698 /* Laptop models without axis info (yet):
56699 + * "NC651xx" "HP Compaq 651"
56700 + * "NC671xx" "HP Compaq 671"
56701 * "NC6910" "HP Compaq 6910"
56702 * HP Compaq 8710x Notebook PC / Mobile Workstation
56703 * "NC2400" "HP Compaq nc2400"
56704 @@ -235,49 +208,9 @@
56705 .set_brightness = hpled_set,
56706 };
56707
56708 -static acpi_status
56709 -lis3lv02d_get_resource(struct acpi_resource *resource, void *context)
56710 -{
56711 - if (resource->type == ACPI_RESOURCE_TYPE_EXTENDED_IRQ) {
56712 - struct acpi_resource_extended_irq *irq;
56713 - u32 *device_irq = context;
56714 -
56715 - irq = &resource->data.extended_irq;
56716 - *device_irq = irq->interrupts[0];
56717 - }
56718 -
56719 - return AE_OK;
56720 -}
56721 -
56722 -static void lis3lv02d_enum_resources(struct acpi_device *device)
56723 -{
56724 - acpi_status status;
56725 -
56726 - status = acpi_walk_resources(device->handle, METHOD_NAME__CRS,
56727 - lis3lv02d_get_resource, &adev.irq);
56728 - if (ACPI_FAILURE(status))
56729 - printk(KERN_DEBUG DRIVER_NAME ": Error getting resources\n");
56730 -}
56731 -
56732 -static s16 lis3lv02d_read_16(acpi_handle handle, int reg)
56733 -{
56734 - u8 lo, hi;
56735 -
56736 - adev.read(handle, reg - 1, &lo);
56737 - adev.read(handle, reg, &hi);
56738 - /* In "12 bit right justified" mode, bit 6, bit 7, bit 8 = bit 5 */
56739 - return (s16)((hi << 8) | lo);
56740 -}
56741 -
56742 -static s16 lis3lv02d_read_8(acpi_handle handle, int reg)
56743 -{
56744 - s8 lo;
56745 - adev.read(handle, reg, &lo);
56746 - return lo;
56747 -}
56748 -
56749 static int lis3lv02d_add(struct acpi_device *device)
56750 {
56751 + u8 val;
56752 int ret;
56753
56754 if (!device)
56755 @@ -291,22 +224,10 @@
56756 strcpy(acpi_device_class(device), ACPI_MDPS_CLASS);
56757 device->driver_data = &adev;
56758
56759 - lis3lv02d_acpi_read(device->handle, WHO_AM_I, &adev.whoami);
56760 - switch (adev.whoami) {
56761 - case LIS_DOUBLE_ID:
56762 - printk(KERN_INFO DRIVER_NAME ": 2-byte sensor found\n");
56763 - adev.read_data = lis3lv02d_read_16;
56764 - adev.mdps_max_val = 2048;
56765 - break;
56766 - case LIS_SINGLE_ID:
56767 - printk(KERN_INFO DRIVER_NAME ": 1-byte sensor found\n");
56768 - adev.read_data = lis3lv02d_read_8;
56769 - adev.mdps_max_val = 128;
56770 - break;
56771 - default:
56772 + lis3lv02d_acpi_read(device->handle, WHO_AM_I, &val);
56773 + if ((val != LIS3LV02DL_ID) && (val != LIS302DL_ID)) {
56774 printk(KERN_ERR DRIVER_NAME
56775 - ": unknown sensor type 0x%X\n", adev.whoami);
56776 - return -EINVAL;
56777 + ": Accelerometer chip not LIS3LV02D{L,Q}\n");
56778 }
56779
56780 /* If possible use a "standard" axes order */
56781 @@ -321,9 +242,6 @@
56782 if (ret)
56783 return ret;
56784
56785 - /* obtain IRQ number of our device from ACPI */
56786 - lis3lv02d_enum_resources(adev.device);
56787 -
56788 ret = lis3lv02d_init_device(&adev);
56789 if (ret) {
56790 flush_work(&hpled_led.work);
56791 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/it87.c linux-2.6.29-rc3.owrt/drivers/hwmon/it87.c
56792 --- linux-2.6.29.owrt/drivers/hwmon/it87.c 2009-05-10 22:04:39.000000000 +0200
56793 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/it87.c 2009-05-10 23:48:28.000000000 +0200
56794 @@ -213,7 +213,7 @@
56795
56796 #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\
56797 ((val)+500)/1000),-128,127))
56798 -#define TEMP_FROM_REG(val) ((val) * 1000)
56799 +#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*1000)
56800
56801 #define PWM_TO_REG(val) ((val) >> 1)
56802 #define PWM_FROM_REG(val) (((val)&0x7f) << 1)
56803 @@ -267,9 +267,9 @@
56804 u8 has_fan; /* Bitfield, fans enabled */
56805 u16 fan[5]; /* Register values, possibly combined */
56806 u16 fan_min[5]; /* Register values, possibly combined */
56807 - s8 temp[3]; /* Register value */
56808 - s8 temp_high[3]; /* Register value */
56809 - s8 temp_low[3]; /* Register value */
56810 + u8 temp[3]; /* Register value */
56811 + u8 temp_high[3]; /* Register value */
56812 + u8 temp_low[3]; /* Register value */
56813 u8 sensor; /* Register value */
56814 u8 fan_div[3]; /* Register encoding, shifted right */
56815 u8 vid; /* Register encoding, combined */
56816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/Kconfig linux-2.6.29-rc3.owrt/drivers/hwmon/Kconfig
56817 --- linux-2.6.29.owrt/drivers/hwmon/Kconfig 2009-05-10 22:04:39.000000000 +0200
56818 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/Kconfig 2009-05-10 23:48:28.000000000 +0200
56819 @@ -543,8 +543,8 @@
56820 help
56821 If you say yes here you get support for National Semiconductor LM90,
56822 LM86, LM89 and LM99, Analog Devices ADM1032 and ADT7461, and Maxim
56823 - MAX6646, MAX6647, MAX6648, MAX6649, MAX6657, MAX6658, MAX6659,
56824 - MAX6680, MAX6681 and MAX6692 sensor chips.
56825 + MAX6646, MAX6647, MAX6649, MAX6657, MAX6658, MAX6659, MAX6680 and
56826 + MAX6681 sensor chips.
56827
56828 This driver can also be built as a module. If so, the module
56829 will be called lm90.
56830 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/lis3lv02d.c linux-2.6.29-rc3.owrt/drivers/hwmon/lis3lv02d.c
56831 --- linux-2.6.29.owrt/drivers/hwmon/lis3lv02d.c 2009-05-10 22:04:39.000000000 +0200
56832 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/lis3lv02d.c 2009-05-10 23:48:28.000000000 +0200
56833 @@ -3,7 +3,7 @@
56834 *
56835 * Copyright (C) 2007-2008 Yan Burman
56836 * Copyright (C) 2008 Eric Piel
56837 - * Copyright (C) 2008-2009 Pavel Machek
56838 + * Copyright (C) 2008 Pavel Machek
56839 *
56840 * This program is free software; you can redistribute it and/or modify
56841 * it under the terms of the GNU General Public License as published by
56842 @@ -35,7 +35,6 @@
56843 #include <linux/poll.h>
56844 #include <linux/freezer.h>
56845 #include <linux/uaccess.h>
56846 -#include <linux/miscdevice.h>
56847 #include <acpi/acpi_drivers.h>
56848 #include <asm/atomic.h>
56849 #include "lis3lv02d.h"
56850 @@ -53,14 +52,24 @@
56851 * joystick.
56852 */
56853
56854 -struct acpi_lis3lv02d adev = {
56855 - .misc_wait = __WAIT_QUEUE_HEAD_INITIALIZER(adev.misc_wait),
56856 -};
56857 +/* Maximum value our axis may get for the input device (signed 12 bits) */
56858 +#define MDPS_MAX_VAL 2048
56859
56860 +struct acpi_lis3lv02d adev;
56861 EXPORT_SYMBOL_GPL(adev);
56862
56863 static int lis3lv02d_add_fs(struct acpi_device *device);
56864
56865 +static s16 lis3lv02d_read_16(acpi_handle handle, int reg)
56866 +{
56867 + u8 lo, hi;
56868 +
56869 + adev.read(handle, reg, &lo);
56870 + adev.read(handle, reg + 1, &hi);
56871 + /* In "12 bit right justified" mode, bit 6, bit 7, bit 8 = bit 5 */
56872 + return (s16)((hi << 8) | lo);
56873 +}
56874 +
56875 /**
56876 * lis3lv02d_get_axis - For the given axis, give the value converted
56877 * @axis: 1,2,3 - can also be negative
56878 @@ -89,9 +98,9 @@
56879 {
56880 int position[3];
56881
56882 - position[0] = adev.read_data(handle, OUTX);
56883 - position[1] = adev.read_data(handle, OUTY);
56884 - position[2] = adev.read_data(handle, OUTZ);
56885 + position[0] = lis3lv02d_read_16(handle, OUTX_L);
56886 + position[1] = lis3lv02d_read_16(handle, OUTY_L);
56887 + position[2] = lis3lv02d_read_16(handle, OUTZ_L);
56888
56889 *x = lis3lv02d_get_axis(adev.ac.x, position);
56890 *y = lis3lv02d_get_axis(adev.ac.y, position);
56891 @@ -101,13 +110,26 @@
56892 void lis3lv02d_poweroff(acpi_handle handle)
56893 {
56894 adev.is_on = 0;
56895 + /* disable X,Y,Z axis and power down */
56896 + adev.write(handle, CTRL_REG1, 0x00);
56897 }
56898 EXPORT_SYMBOL_GPL(lis3lv02d_poweroff);
56899
56900 void lis3lv02d_poweron(acpi_handle handle)
56901 {
56902 + u8 val;
56903 +
56904 adev.is_on = 1;
56905 adev.init(handle);
56906 + adev.write(handle, FF_WU_CFG, 0);
56907 + /*
56908 + * BDU: LSB and MSB values are not updated until both have been read.
56909 + * So the value read will always be correct.
56910 + * IEN: Interrupt for free-fall and DD, not for data-ready.
56911 + */
56912 + adev.read(handle, CTRL_REG2, &val);
56913 + val |= CTRL2_BDU | CTRL2_IEN;
56914 + adev.write(handle, CTRL_REG2, val);
56915 }
56916 EXPORT_SYMBOL_GPL(lis3lv02d_poweron);
56917
56918 @@ -140,140 +162,6 @@
56919 mutex_unlock(&dev->lock);
56920 }
56921
56922 -static irqreturn_t lis302dl_interrupt(int irq, void *dummy)
56923 -{
56924 - /*
56925 - * Be careful: on some HP laptops the bios force DD when on battery and
56926 - * the lid is closed. This leads to interrupts as soon as a little move
56927 - * is done.
56928 - */
56929 - atomic_inc(&adev.count);
56930 -
56931 - wake_up_interruptible(&adev.misc_wait);
56932 - kill_fasync(&adev.async_queue, SIGIO, POLL_IN);
56933 - return IRQ_HANDLED;
56934 -}
56935 -
56936 -static int lis3lv02d_misc_open(struct inode *inode, struct file *file)
56937 -{
56938 - int ret;
56939 -
56940 - if (test_and_set_bit(0, &adev.misc_opened))
56941 - return -EBUSY; /* already open */
56942 -
56943 - atomic_set(&adev.count, 0);
56944 -
56945 - /*
56946 - * The sensor can generate interrupts for free-fall and direction
56947 - * detection (distinguishable with FF_WU_SRC and DD_SRC) but to keep
56948 - * the things simple and _fast_ we activate it only for free-fall, so
56949 - * no need to read register (very slow with ACPI). For the same reason,
56950 - * we forbid shared interrupts.
56951 - *
56952 - * IRQF_TRIGGER_RISING seems pointless on HP laptops because the
56953 - * io-apic is not configurable (and generates a warning) but I keep it
56954 - * in case of support for other hardware.
56955 - */
56956 - ret = request_irq(adev.irq, lis302dl_interrupt, IRQF_TRIGGER_RISING,
56957 - DRIVER_NAME, &adev);
56958 -
56959 - if (ret) {
56960 - clear_bit(0, &adev.misc_opened);
56961 - printk(KERN_ERR DRIVER_NAME ": IRQ%d allocation failed\n", adev.irq);
56962 - return -EBUSY;
56963 - }
56964 - lis3lv02d_increase_use(&adev);
56965 - printk("lis3: registered interrupt %d\n", adev.irq);
56966 - return 0;
56967 -}
56968 -
56969 -static int lis3lv02d_misc_release(struct inode *inode, struct file *file)
56970 -{
56971 - fasync_helper(-1, file, 0, &adev.async_queue);
56972 - lis3lv02d_decrease_use(&adev);
56973 - free_irq(adev.irq, &adev);
56974 - clear_bit(0, &adev.misc_opened); /* release the device */
56975 - return 0;
56976 -}
56977 -
56978 -static ssize_t lis3lv02d_misc_read(struct file *file, char __user *buf,
56979 - size_t count, loff_t *pos)
56980 -{
56981 - DECLARE_WAITQUEUE(wait, current);
56982 - u32 data;
56983 - unsigned char byte_data;
56984 - ssize_t retval = 1;
56985 -
56986 - if (count < 1)
56987 - return -EINVAL;
56988 -
56989 - add_wait_queue(&adev.misc_wait, &wait);
56990 - while (true) {
56991 - set_current_state(TASK_INTERRUPTIBLE);
56992 - data = atomic_xchg(&adev.count, 0);
56993 - if (data)
56994 - break;
56995 -
56996 - if (file->f_flags & O_NONBLOCK) {
56997 - retval = -EAGAIN;
56998 - goto out;
56999 - }
57000 -
57001 - if (signal_pending(current)) {
57002 - retval = -ERESTARTSYS;
57003 - goto out;
57004 - }
57005 -
57006 - schedule();
57007 - }
57008 -
57009 - if (data < 255)
57010 - byte_data = data;
57011 - else
57012 - byte_data = 255;
57013 -
57014 - /* make sure we are not going into copy_to_user() with
57015 - * TASK_INTERRUPTIBLE state */
57016 - set_current_state(TASK_RUNNING);
57017 - if (copy_to_user(buf, &byte_data, sizeof(byte_data)))
57018 - retval = -EFAULT;
57019 -
57020 -out:
57021 - __set_current_state(TASK_RUNNING);
57022 - remove_wait_queue(&adev.misc_wait, &wait);
57023 -
57024 - return retval;
57025 -}
57026 -
57027 -static unsigned int lis3lv02d_misc_poll(struct file *file, poll_table *wait)
57028 -{
57029 - poll_wait(file, &adev.misc_wait, wait);
57030 - if (atomic_read(&adev.count))
57031 - return POLLIN | POLLRDNORM;
57032 - return 0;
57033 -}
57034 -
57035 -static int lis3lv02d_misc_fasync(int fd, struct file *file, int on)
57036 -{
57037 - return fasync_helper(fd, file, on, &adev.async_queue);
57038 -}
57039 -
57040 -static const struct file_operations lis3lv02d_misc_fops = {
57041 - .owner = THIS_MODULE,
57042 - .llseek = no_llseek,
57043 - .read = lis3lv02d_misc_read,
57044 - .open = lis3lv02d_misc_open,
57045 - .release = lis3lv02d_misc_release,
57046 - .poll = lis3lv02d_misc_poll,
57047 - .fasync = lis3lv02d_misc_fasync,
57048 -};
57049 -
57050 -static struct miscdevice lis3lv02d_misc_device = {
57051 - .minor = MISC_DYNAMIC_MINOR,
57052 - .name = "freefall",
57053 - .fops = &lis3lv02d_misc_fops,
57054 -};
57055 -
57056 /**
57057 * lis3lv02d_joystick_kthread - Kthread polling function
57058 * @data: unused - here to conform to threadfn prototype
57059 @@ -315,6 +203,7 @@
57060 lis3lv02d_decrease_use(&adev);
57061 }
57062
57063 +
57064 static inline void lis3lv02d_calibrate_joystick(void)
57065 {
57066 lis3lv02d_get_xyz(adev.device->handle, &adev.xcalib, &adev.ycalib, &adev.zcalib);
57067 @@ -342,9 +231,9 @@
57068 adev.idev->close = lis3lv02d_joystick_close;
57069
57070 set_bit(EV_ABS, adev.idev->evbit);
57071 - input_set_abs_params(adev.idev, ABS_X, -adev.mdps_max_val, adev.mdps_max_val, 3, 3);
57072 - input_set_abs_params(adev.idev, ABS_Y, -adev.mdps_max_val, adev.mdps_max_val, 3, 3);
57073 - input_set_abs_params(adev.idev, ABS_Z, -adev.mdps_max_val, adev.mdps_max_val, 3, 3);
57074 + input_set_abs_params(adev.idev, ABS_X, -MDPS_MAX_VAL, MDPS_MAX_VAL, 3, 3);
57075 + input_set_abs_params(adev.idev, ABS_Y, -MDPS_MAX_VAL, MDPS_MAX_VAL, 3, 3);
57076 + input_set_abs_params(adev.idev, ABS_Z, -MDPS_MAX_VAL, MDPS_MAX_VAL, 3, 3);
57077
57078 err = input_register_device(adev.idev);
57079 if (err) {
57080 @@ -361,7 +250,6 @@
57081 if (!adev.idev)
57082 return;
57083
57084 - misc_deregister(&lis3lv02d_misc_device);
57085 input_unregister_device(adev.idev);
57086 adev.idev = NULL;
57087 }
57088 @@ -380,19 +268,6 @@
57089 if (lis3lv02d_joystick_enable())
57090 printk(KERN_ERR DRIVER_NAME ": joystick initialization failed\n");
57091
57092 - printk("lis3_init_device: irq %d\n", dev->irq);
57093 -
57094 - /* if we did not get an IRQ from ACPI - we have nothing more to do */
57095 - if (!dev->irq) {
57096 - printk(KERN_ERR DRIVER_NAME
57097 - ": No IRQ in ACPI. Disabling /dev/freefall\n");
57098 - goto out;
57099 - }
57100 -
57101 - printk("lis3: registering device\n");
57102 - if (misc_register(&lis3lv02d_misc_device))
57103 - printk(KERN_ERR DRIVER_NAME ": misc_register failed\n");
57104 -out:
57105 lis3lv02d_decrease_use(dev);
57106 return 0;
57107 }
57108 @@ -476,6 +351,6 @@
57109 EXPORT_SYMBOL_GPL(lis3lv02d_remove_fs);
57110
57111 MODULE_DESCRIPTION("ST LIS3LV02Dx three-axis digital accelerometer driver");
57112 -MODULE_AUTHOR("Yan Burman, Eric Piel, Pavel Machek");
57113 +MODULE_AUTHOR("Yan Burman and Eric Piel");
57114 MODULE_LICENSE("GPL");
57115
57116 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/lis3lv02d.h linux-2.6.29-rc3.owrt/drivers/hwmon/lis3lv02d.h
57117 --- linux-2.6.29.owrt/drivers/hwmon/lis3lv02d.h 2009-05-10 22:04:39.000000000 +0200
57118 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/lis3lv02d.h 2009-05-10 23:48:28.000000000 +0200
57119 @@ -22,15 +22,12 @@
57120 /*
57121 * The actual chip is STMicroelectronics LIS3LV02DL or LIS3LV02DQ that seems to
57122 * be connected via SPI. There exists also several similar chips (such as LIS302DL or
57123 - * LIS3L02DQ) and they have slightly different registers, but we can provide a
57124 - * common interface for all of them.
57125 + * LIS3L02DQ) but not in the HP laptops and they have slightly different registers.
57126 * They can also be connected via I²C.
57127 */
57128
57129 -/* 2-byte registers */
57130 -#define LIS_DOUBLE_ID 0x3A /* LIS3LV02D[LQ] */
57131 -/* 1-byte registers */
57132 -#define LIS_SINGLE_ID 0x3B /* LIS[32]02DL and others */
57133 +#define LIS3LV02DL_ID 0x3A /* Also the LIS3LV02DQ */
57134 +#define LIS302DL_ID 0x3B /* Also the LIS202DL! */
57135
57136 enum lis3lv02d_reg {
57137 WHO_AM_I = 0x0F,
57138 @@ -47,13 +44,10 @@
57139 STATUS_REG = 0x27,
57140 OUTX_L = 0x28,
57141 OUTX_H = 0x29,
57142 - OUTX = 0x29,
57143 OUTY_L = 0x2A,
57144 OUTY_H = 0x2B,
57145 - OUTY = 0x2B,
57146 OUTZ_L = 0x2C,
57147 OUTZ_H = 0x2D,
57148 - OUTZ = 0x2D,
57149 FF_WU_CFG = 0x30,
57150 FF_WU_SRC = 0x31,
57151 FF_WU_ACK = 0x32,
57152 @@ -165,10 +159,6 @@
57153 acpi_status (*write) (acpi_handle handle, int reg, u8 val);
57154 acpi_status (*read) (acpi_handle handle, int reg, u8 *ret);
57155
57156 - u8 whoami; /* 3Ah: 2-byte registries, 3Bh: 1-byte registries */
57157 - s16 (*read_data) (acpi_handle handle, int reg);
57158 - int mdps_max_val;
57159 -
57160 struct input_dev *idev; /* input device */
57161 struct task_struct *kthread; /* kthread for input */
57162 struct mutex lock;
57163 @@ -180,11 +170,6 @@
57164 unsigned char is_on; /* whether the device is on or off */
57165 unsigned char usage; /* usage counter */
57166 struct axis_conversion ac; /* hw -> logical axis */
57167 -
57168 - u32 irq; /* IRQ number */
57169 - struct fasync_struct *async_queue; /* queue for the misc device */
57170 - wait_queue_head_t misc_wait; /* Wait queue for the misc device */
57171 - unsigned long misc_opened; /* bit0: whether the device is open */
57172 };
57173
57174 int lis3lv02d_init_device(struct acpi_lis3lv02d *dev);
57175 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/lm85.c linux-2.6.29-rc3.owrt/drivers/hwmon/lm85.c
57176 --- linux-2.6.29.owrt/drivers/hwmon/lm85.c 2009-05-10 22:04:39.000000000 +0200
57177 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/lm85.c 2009-05-10 23:48:28.000000000 +0200
57178 @@ -72,7 +72,6 @@
57179 #define LM85_COMPANY_SMSC 0x5c
57180 #define LM85_VERSTEP_VMASK 0xf0
57181 #define LM85_VERSTEP_GENERIC 0x60
57182 -#define LM85_VERSTEP_GENERIC2 0x70
57183 #define LM85_VERSTEP_LM85C 0x60
57184 #define LM85_VERSTEP_LM85B 0x62
57185 #define LM85_VERSTEP_ADM1027 0x60
57186 @@ -335,7 +334,6 @@
57187 static const struct i2c_device_id lm85_id[] = {
57188 { "adm1027", adm1027 },
57189 { "adt7463", adt7463 },
57190 - { "adt7468", adt7468 },
57191 { "lm85", any_chip },
57192 { "lm85b", lm85b },
57193 { "lm85c", lm85c },
57194 @@ -410,8 +408,7 @@
57195 struct lm85_data *data = lm85_update_device(dev);
57196 int vid;
57197
57198 - if ((data->type == adt7463 || data->type == adt7468) &&
57199 - (data->vid & 0x80)) {
57200 + if (data->type == adt7463 && (data->vid & 0x80)) {
57201 /* 6-pin VID (VRM 10) */
57202 vid = vid_from_reg(data->vid & 0x3f, data->vrm);
57203 } else {
57204 @@ -1156,8 +1153,7 @@
57205 address, company, verstep);
57206
57207 /* All supported chips have the version in common */
57208 - if ((verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC &&
57209 - (verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC2) {
57210 + if ((verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC) {
57211 dev_dbg(&adapter->dev, "Autodetection failed: "
57212 "unsupported version\n");
57213 return -ENODEV;
57214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/lm90.c linux-2.6.29-rc3.owrt/drivers/hwmon/lm90.c
57215 --- linux-2.6.29.owrt/drivers/hwmon/lm90.c 2009-05-10 22:04:39.000000000 +0200
57216 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/lm90.c 2009-05-10 23:48:28.000000000 +0200
57217 @@ -32,10 +32,10 @@
57218 * supported by this driver. These chips lack the remote temperature
57219 * offset feature.
57220 *
57221 - * This driver also supports the MAX6646, MAX6647, MAX6648, MAX6649 and
57222 - * MAX6692 chips made by Maxim. These are again similar to the LM86,
57223 - * but they use unsigned temperature values and can report temperatures
57224 - * from 0 to 145 degrees.
57225 + * This driver also supports the MAX6646, MAX6647 and MAX6649 chips
57226 + * made by Maxim. These are again similar to the LM86, but they use
57227 + * unsigned temperature values and can report temperatures from 0 to
57228 + * 145 degrees.
57229 *
57230 * This driver also supports the MAX6680 and MAX6681, two other sensor
57231 * chips made by Maxim. These are quite similar to the other Maxim
57232 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/vt1211.c linux-2.6.29-rc3.owrt/drivers/hwmon/vt1211.c
57233 --- linux-2.6.29.owrt/drivers/hwmon/vt1211.c 2009-05-10 22:04:39.000000000 +0200
57234 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/vt1211.c 2009-05-10 23:48:28.000000000 +0200
57235 @@ -1262,7 +1262,7 @@
57236 res.name = pdev->name;
57237 err = acpi_check_resource_conflict(&res);
57238 if (err)
57239 - goto EXIT_DEV_PUT;
57240 + goto EXIT;
57241
57242 err = platform_device_add_resources(pdev, &res, 1);
57243 if (err) {
57244 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/hwmon/w83627ehf.c linux-2.6.29-rc3.owrt/drivers/hwmon/w83627ehf.c
57245 --- linux-2.6.29.owrt/drivers/hwmon/w83627ehf.c 2009-05-10 22:04:39.000000000 +0200
57246 +++ linux-2.6.29-rc3.owrt/drivers/hwmon/w83627ehf.c 2009-05-10 23:48:28.000000000 +0200
57247 @@ -1548,7 +1548,7 @@
57248
57249 err = acpi_check_resource_conflict(&res);
57250 if (err)
57251 - goto exit_device_put;
57252 + goto exit;
57253
57254 err = platform_device_add_resources(pdev, &res, 1);
57255 if (err) {
57256 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/busses/i2c-acorn.c linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-acorn.c
57257 --- linux-2.6.29.owrt/drivers/i2c/busses/i2c-acorn.c 2009-05-10 22:04:39.000000000 +0200
57258 +++ linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-acorn.c 2009-05-10 23:48:28.000000000 +0200
57259 @@ -79,11 +79,10 @@
57260 .getsda = ioc_getsda,
57261 .getscl = ioc_getscl,
57262 .udelay = 80,
57263 - .timeout = HZ,
57264 + .timeout = 100
57265 };
57266
57267 static struct i2c_adapter ioc_ops = {
57268 - .nr = 0,
57269 .algo_data = &ioc_data,
57270 };
57271
57272 @@ -91,7 +90,7 @@
57273 {
57274 force_ones = FORCE_ONES | SCL | SDA;
57275
57276 - return i2c_bit_add_numbered_bus(&ioc_ops);
57277 + return i2c_bit_add_bus(&ioc_ops);
57278 }
57279
57280 module_init(i2c_ioc_init);
57281 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/busses/i2c-amd8111.c linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-amd8111.c
57282 --- linux-2.6.29.owrt/drivers/i2c/busses/i2c-amd8111.c 2009-05-10 22:04:39.000000000 +0200
57283 +++ linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-amd8111.c 2009-05-10 23:48:28.000000000 +0200
57284 @@ -72,7 +72,7 @@
57285 {
57286 int timeout = 500;
57287
57288 - while ((inb(smbus->base + AMD_EC_SC) & AMD_EC_SC_IBF) && --timeout)
57289 + while (timeout-- && (inb(smbus->base + AMD_EC_SC) & AMD_EC_SC_IBF))
57290 udelay(1);
57291
57292 if (!timeout) {
57293 @@ -88,7 +88,7 @@
57294 {
57295 int timeout = 500;
57296
57297 - while ((~inb(smbus->base + AMD_EC_SC) & AMD_EC_SC_OBF) && --timeout)
57298 + while (timeout-- && (~inb(smbus->base + AMD_EC_SC) & AMD_EC_SC_OBF))
57299 udelay(1);
57300
57301 if (!timeout) {
57302 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/busses/i2c-ixp2000.c linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-ixp2000.c
57303 --- linux-2.6.29.owrt/drivers/i2c/busses/i2c-ixp2000.c 2009-05-10 22:04:39.000000000 +0200
57304 +++ linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-ixp2000.c 2009-05-10 23:48:28.000000000 +0200
57305 @@ -114,7 +114,7 @@
57306 drv_data->algo_data.getsda = ixp2000_bit_getsda;
57307 drv_data->algo_data.getscl = ixp2000_bit_getscl;
57308 drv_data->algo_data.udelay = 6;
57309 - drv_data->algo_data.timeout = HZ;
57310 + drv_data->algo_data.timeout = 100;
57311
57312 strlcpy(drv_data->adapter.name, plat_dev->dev.driver->name,
57313 sizeof(drv_data->adapter.name));
57314 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/busses/i2c-mv64xxx.c linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-mv64xxx.c
57315 --- linux-2.6.29.owrt/drivers/i2c/busses/i2c-mv64xxx.c 2009-05-10 22:04:39.000000000 +0200
57316 +++ linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-mv64xxx.c 2009-05-10 23:48:28.000000000 +0200
57317 @@ -482,7 +482,7 @@
57318 return 0;
57319 }
57320
57321 -static void
57322 +static void __devexit
57323 mv64xxx_i2c_unmap_regs(struct mv64xxx_i2c_data *drv_data)
57324 {
57325 if (drv_data->reg_base) {
57326 @@ -577,7 +577,7 @@
57327
57328 static struct platform_driver mv64xxx_i2c_driver = {
57329 .probe = mv64xxx_i2c_probe,
57330 - .remove = __devexit_p(mv64xxx_i2c_remove),
57331 + .remove = mv64xxx_i2c_remove,
57332 .driver = {
57333 .owner = THIS_MODULE,
57334 .name = MV64XXX_I2C_CTLR_NAME,
57335 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/busses/i2c-pxa.c linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-pxa.c
57336 --- linux-2.6.29.owrt/drivers/i2c/busses/i2c-pxa.c 2009-05-10 22:04:39.000000000 +0200
57337 +++ linux-2.6.29-rc3.owrt/drivers/i2c/busses/i2c-pxa.c 2009-05-10 23:48:28.000000000 +0200
57338 @@ -644,7 +644,7 @@
57339
57340 i2c_pxa_start_message(i2c);
57341
57342 - while (i2c->msg_num > 0 && --timeout) {
57343 + while (timeout-- && i2c->msg_num > 0) {
57344 i2c_pxa_handler(0, i2c);
57345 udelay(10);
57346 }
57347 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/busses/scx200_i2c.c linux-2.6.29-rc3.owrt/drivers/i2c/busses/scx200_i2c.c
57348 --- linux-2.6.29.owrt/drivers/i2c/busses/scx200_i2c.c 2009-05-10 22:04:39.000000000 +0200
57349 +++ linux-2.6.29-rc3.owrt/drivers/i2c/busses/scx200_i2c.c 2009-05-10 23:48:28.000000000 +0200
57350 @@ -76,7 +76,7 @@
57351 .getsda = scx200_i2c_getsda,
57352 .getscl = scx200_i2c_getscl,
57353 .udelay = 10,
57354 - .timeout = HZ,
57355 + .timeout = 100,
57356 };
57357
57358 static struct i2c_adapter scx200_i2c_ops = {
57359 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/i2c-core.c linux-2.6.29-rc3.owrt/drivers/i2c/i2c-core.c
57360 --- linux-2.6.29.owrt/drivers/i2c/i2c-core.c 2009-05-10 22:04:39.000000000 +0200
57361 +++ linux-2.6.29-rc3.owrt/drivers/i2c/i2c-core.c 2009-05-10 23:48:28.000000000 +0200
57362 @@ -1831,8 +1831,7 @@
57363 case I2C_SMBUS_QUICK:
57364 msg[0].len = 0;
57365 /* Special case: The read/write field is used as data */
57366 - msg[0].flags = flags | (read_write == I2C_SMBUS_READ ?
57367 - I2C_M_RD : 0);
57368 + msg[0].flags = flags | (read_write==I2C_SMBUS_READ)?I2C_M_RD:0;
57369 num = 1;
57370 break;
57371 case I2C_SMBUS_BYTE:
57372 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/i2c/i2c-dev.c linux-2.6.29-rc3.owrt/drivers/i2c/i2c-dev.c
57373 --- linux-2.6.29.owrt/drivers/i2c/i2c-dev.c 2009-05-10 22:04:39.000000000 +0200
57374 +++ linux-2.6.29-rc3.owrt/drivers/i2c/i2c-dev.c 2009-05-10 23:48:28.000000000 +0200
57375 @@ -35,7 +35,6 @@
57376 #include <linux/i2c.h>
57377 #include <linux/i2c-dev.h>
57378 #include <linux/smp_lock.h>
57379 -#include <linux/jiffies.h>
57380 #include <asm/uaccess.h>
57381
57382 static struct i2c_driver i2cdev_driver;
57383 @@ -423,10 +422,7 @@
57384 client->adapter->retries = arg;
57385 break;
57386 case I2C_TIMEOUT:
57387 - /* For historical reasons, user-space sets the timeout
57388 - * value in units of 10 ms.
57389 - */
57390 - client->adapter->timeout = msecs_to_jiffies(arg * 10);
57391 + client->adapter->timeout = arg;
57392 break;
57393 default:
57394 /* NOTE: returning a fault code here could cause trouble
57395 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/amd74xx.c linux-2.6.29-rc3.owrt/drivers/ide/amd74xx.c
57396 --- linux-2.6.29.owrt/drivers/ide/amd74xx.c 2009-05-10 22:04:39.000000000 +0200
57397 +++ linux-2.6.29-rc3.owrt/drivers/ide/amd74xx.c 2009-05-10 23:48:28.000000000 +0200
57398 @@ -166,7 +166,7 @@
57399 * Check for broken FIFO support.
57400 */
57401 if (dev->vendor == PCI_VENDOR_ID_AMD &&
57402 - dev->device == PCI_DEVICE_ID_AMD_VIPER_7411)
57403 + dev->vendor == PCI_DEVICE_ID_AMD_VIPER_7411)
57404 t &= 0x0f;
57405 else
57406 t |= 0xf0;
57407 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/at91_ide.c linux-2.6.29-rc3.owrt/drivers/ide/at91_ide.c
57408 --- linux-2.6.29.owrt/drivers/ide/at91_ide.c 2009-05-10 22:04:39.000000000 +0200
57409 +++ linux-2.6.29-rc3.owrt/drivers/ide/at91_ide.c 1970-01-01 01:00:00.000000000 +0100
57410 @@ -1,467 +0,0 @@
57411 -/*
57412 - * IDE host driver for AT91 (SAM9, CAP9, AT572D940HF) Static Memory Controller
57413 - * with Compact Flash True IDE logic
57414 - *
57415 - * Copyright (c) 2008, 2009 Kelvatek Ltd.
57416 - *
57417 - * This program is free software; you can redistribute it and/or modify
57418 - * it under the terms of the GNU General Public License as published by
57419 - * the Free Software Foundation; either version 2 of the License, or
57420 - * (at your option) any later version.
57421 - *
57422 - * This program is distributed in the hope that it will be useful,
57423 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
57424 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
57425 - * GNU General Public License for more details.
57426 - *
57427 - * You should have received a copy of the GNU General Public License
57428 - * along with this program; if not, write to the Free Software
57429 - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
57430 - *
57431 - */
57432 -
57433 -#include <linux/version.h>
57434 -#include <linux/kernel.h>
57435 -#include <linux/module.h>
57436 -#include <linux/clk.h>
57437 -#include <linux/err.h>
57438 -#include <linux/ide.h>
57439 -#include <linux/platform_device.h>
57440 -
57441 -#include <mach/board.h>
57442 -#include <mach/gpio.h>
57443 -#include <mach/at91sam9263.h>
57444 -#include <mach/at91sam9_smc.h>
57445 -#include <mach/at91sam9263_matrix.h>
57446 -
57447 -#define DRV_NAME "at91_ide"
57448 -
57449 -#define perr(fmt, args...) pr_err(DRV_NAME ": " fmt, ##args)
57450 -#define pdbg(fmt, args...) pr_debug("%s " fmt, __func__, ##args)
57451 -
57452 -/*
57453 - * Access to IDE device is possible through EBI Static Memory Controller
57454 - * with Compact Flash logic. For details see EBI and SMC datasheet sections
57455 - * of any microcontroller from AT91SAM9 family.
57456 - *
57457 - * Within SMC chip select address space, lines A[23:21] distinguish Compact
57458 - * Flash modes (I/O, common memory, attribute memory, True IDE). IDE modes are:
57459 - * 0x00c0000 - True IDE
57460 - * 0x00e0000 - Alternate True IDE (Alt Status Register)
57461 - *
57462 - * On True IDE mode Task File and Data Register are mapped at the same address.
57463 - * To distinguish access between these two different bus data width is used:
57464 - * 8Bit for Task File, 16Bit for Data I/O.
57465 - *
57466 - * After initialization we do 8/16 bit flipping (changes in SMC MODE register)
57467 - * only inside IDE callback routines which are serialized by IDE layer,
57468 - * so no additional locking needed.
57469 - */
57470 -
57471 -#define TASK_FILE 0x00c00000
57472 -#define ALT_MODE 0x00e00000
57473 -#define REGS_SIZE 8
57474 -
57475 -#define enter_16bit(cs, mode) do { \
57476 - mode = at91_sys_read(AT91_SMC_MODE(cs)); \
57477 - at91_sys_write(AT91_SMC_MODE(cs), mode | AT91_SMC_DBW_16); \
57478 -} while (0)
57479 -
57480 -#define leave_16bit(cs, mode) at91_sys_write(AT91_SMC_MODE(cs), mode);
57481 -
57482 -static void set_smc_timings(const u8 chipselect, const u16 cycle,
57483 - const u16 setup, const u16 pulse,
57484 - const u16 data_float, int use_iordy)
57485 -{
57486 - unsigned long mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
57487 - AT91_SMC_BAT_SELECT;
57488 -
57489 - /* disable or enable waiting for IORDY signal */
57490 - if (use_iordy)
57491 - mode |= AT91_SMC_EXNWMODE_READY;
57492 -
57493 - /* add data float cycles if needed */
57494 - if (data_float)
57495 - mode |= AT91_SMC_TDF_(data_float);
57496 -
57497 - at91_sys_write(AT91_SMC_MODE(chipselect), mode);
57498 -
57499 - /* setup timings in SMC */
57500 - at91_sys_write(AT91_SMC_SETUP(chipselect), AT91_SMC_NWESETUP_(setup) |
57501 - AT91_SMC_NCS_WRSETUP_(0) |
57502 - AT91_SMC_NRDSETUP_(setup) |
57503 - AT91_SMC_NCS_RDSETUP_(0));
57504 - at91_sys_write(AT91_SMC_PULSE(chipselect), AT91_SMC_NWEPULSE_(pulse) |
57505 - AT91_SMC_NCS_WRPULSE_(cycle) |
57506 - AT91_SMC_NRDPULSE_(pulse) |
57507 - AT91_SMC_NCS_RDPULSE_(cycle));
57508 - at91_sys_write(AT91_SMC_CYCLE(chipselect), AT91_SMC_NWECYCLE_(cycle) |
57509 - AT91_SMC_NRDCYCLE_(cycle));
57510 -}
57511 -
57512 -static unsigned int calc_mck_cycles(unsigned int ns, unsigned int mck_hz)
57513 -{
57514 - u64 tmp = ns;
57515 -
57516 - tmp *= mck_hz;
57517 - tmp += 1000*1000*1000 - 1; /* round up */
57518 - do_div(tmp, 1000*1000*1000);
57519 - return (unsigned int) tmp;
57520 -}
57521 -
57522 -static void apply_timings(const u8 chipselect, const u8 pio,
57523 - const struct ide_timing *timing, int use_iordy)
57524 -{
57525 - unsigned int t0, t1, t2, t6z;
57526 - unsigned int cycle, setup, pulse, data_float;
57527 - unsigned int mck_hz;
57528 - struct clk *mck;
57529 -
57530 - /* see table 22 of Compact Flash standard 4.1 for the meaning,
57531 - * we do not stretch active (t2) time, so setup (t1) + hold time (th)
57532 - * assure at least minimal recovery (t2i) time */
57533 - t0 = timing->cyc8b;
57534 - t1 = timing->setup;
57535 - t2 = timing->act8b;
57536 - t6z = (pio < 5) ? 30 : 20;
57537 -
57538 - pdbg("t0=%u t1=%u t2=%u t6z=%u\n", t0, t1, t2, t6z);
57539 -
57540 - mck = clk_get(NULL, "mck");
57541 - BUG_ON(IS_ERR(mck));
57542 - mck_hz = clk_get_rate(mck);
57543 - pdbg("mck_hz=%u\n", mck_hz);
57544 -
57545 - cycle = calc_mck_cycles(t0, mck_hz);
57546 - setup = calc_mck_cycles(t1, mck_hz);
57547 - pulse = calc_mck_cycles(t2, mck_hz);
57548 - data_float = calc_mck_cycles(t6z, mck_hz);
57549 -
57550 - pdbg("cycle=%u setup=%u pulse=%u data_float=%u\n",
57551 - cycle, setup, pulse, data_float);
57552 -
57553 - set_smc_timings(chipselect, cycle, setup, pulse, data_float, use_iordy);
57554 -}
57555 -
57556 -static void at91_ide_input_data(ide_drive_t *drive, struct request *rq,
57557 - void *buf, unsigned int len)
57558 -{
57559 - ide_hwif_t *hwif = drive->hwif;
57560 - struct ide_io_ports *io_ports = &hwif->io_ports;
57561 - u8 chipselect = hwif->select_data;
57562 - unsigned long mode;
57563 -
57564 - pdbg("cs %u buf %p len %d\n", chipselect, buf, len);
57565 -
57566 - len++;
57567 -
57568 - enter_16bit(chipselect, mode);
57569 - __ide_mm_insw((void __iomem *) io_ports->data_addr, buf, len / 2);
57570 - leave_16bit(chipselect, mode);
57571 -}
57572 -
57573 -static void at91_ide_output_data(ide_drive_t *drive, struct request *rq,
57574 - void *buf, unsigned int len)
57575 -{
57576 - ide_hwif_t *hwif = drive->hwif;
57577 - struct ide_io_ports *io_ports = &hwif->io_ports;
57578 - u8 chipselect = hwif->select_data;
57579 - unsigned long mode;
57580 -
57581 - pdbg("cs %u buf %p len %d\n", chipselect, buf, len);
57582 -
57583 - enter_16bit(chipselect, mode);
57584 - __ide_mm_outsw((void __iomem *) io_ports->data_addr, buf, len / 2);
57585 - leave_16bit(chipselect, mode);
57586 -}
57587 -
57588 -static u8 ide_mm_inb(unsigned long port)
57589 -{
57590 - return readb((void __iomem *) port);
57591 -}
57592 -
57593 -static void ide_mm_outb(u8 value, unsigned long port)
57594 -{
57595 - writeb(value, (void __iomem *) port);
57596 -}
57597 -
57598 -static void at91_ide_tf_load(ide_drive_t *drive, ide_task_t *task)
57599 -{
57600 - ide_hwif_t *hwif = drive->hwif;
57601 - struct ide_io_ports *io_ports = &hwif->io_ports;
57602 - struct ide_taskfile *tf = &task->tf;
57603 - u8 HIHI = (task->tf_flags & IDE_TFLAG_LBA48) ? 0xE0 : 0xEF;
57604 -
57605 - if (task->tf_flags & IDE_TFLAG_FLAGGED)
57606 - HIHI = 0xFF;
57607 -
57608 - if (task->tf_flags & IDE_TFLAG_OUT_DATA) {
57609 - u16 data = (tf->hob_data << 8) | tf->data;
57610 -
57611 - at91_ide_output_data(drive, NULL, &data, 2);
57612 - }
57613 -
57614 - if (task->tf_flags & IDE_TFLAG_OUT_HOB_FEATURE)
57615 - ide_mm_outb(tf->hob_feature, io_ports->feature_addr);
57616 - if (task->tf_flags & IDE_TFLAG_OUT_HOB_NSECT)
57617 - ide_mm_outb(tf->hob_nsect, io_ports->nsect_addr);
57618 - if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAL)
57619 - ide_mm_outb(tf->hob_lbal, io_ports->lbal_addr);
57620 - if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAM)
57621 - ide_mm_outb(tf->hob_lbam, io_ports->lbam_addr);
57622 - if (task->tf_flags & IDE_TFLAG_OUT_HOB_LBAH)
57623 - ide_mm_outb(tf->hob_lbah, io_ports->lbah_addr);
57624 -
57625 - if (task->tf_flags & IDE_TFLAG_OUT_FEATURE)
57626 - ide_mm_outb(tf->feature, io_ports->feature_addr);
57627 - if (task->tf_flags & IDE_TFLAG_OUT_NSECT)
57628 - ide_mm_outb(tf->nsect, io_ports->nsect_addr);
57629 - if (task->tf_flags & IDE_TFLAG_OUT_LBAL)
57630 - ide_mm_outb(tf->lbal, io_ports->lbal_addr);
57631 - if (task->tf_flags & IDE_TFLAG_OUT_LBAM)
57632 - ide_mm_outb(tf->lbam, io_ports->lbam_addr);
57633 - if (task->tf_flags & IDE_TFLAG_OUT_LBAH)
57634 - ide_mm_outb(tf->lbah, io_ports->lbah_addr);
57635 -
57636 - if (task->tf_flags & IDE_TFLAG_OUT_DEVICE)
57637 - ide_mm_outb((tf->device & HIHI) | drive->select, io_ports->device_addr);
57638 -}
57639 -
57640 -static void at91_ide_tf_read(ide_drive_t *drive, ide_task_t *task)
57641 -{
57642 - ide_hwif_t *hwif = drive->hwif;
57643 - struct ide_io_ports *io_ports = &hwif->io_ports;
57644 - struct ide_taskfile *tf = &task->tf;
57645 -
57646 - if (task->tf_flags & IDE_TFLAG_IN_DATA) {
57647 - u16 data;
57648 -
57649 - at91_ide_input_data(drive, NULL, &data, 2);
57650 - tf->data = data & 0xff;
57651 - tf->hob_data = (data >> 8) & 0xff;
57652 - }
57653 -
57654 - /* be sure we're looking at the low order bits */
57655 - ide_mm_outb(ATA_DEVCTL_OBS & ~0x80, io_ports->ctl_addr);
57656 -
57657 - if (task->tf_flags & IDE_TFLAG_IN_FEATURE)
57658 - tf->feature = ide_mm_inb(io_ports->feature_addr);
57659 - if (task->tf_flags & IDE_TFLAG_IN_NSECT)
57660 - tf->nsect = ide_mm_inb(io_ports->nsect_addr);
57661 - if (task->tf_flags & IDE_TFLAG_IN_LBAL)
57662 - tf->lbal = ide_mm_inb(io_ports->lbal_addr);
57663 - if (task->tf_flags & IDE_TFLAG_IN_LBAM)
57664 - tf->lbam = ide_mm_inb(io_ports->lbam_addr);
57665 - if (task->tf_flags & IDE_TFLAG_IN_LBAH)
57666 - tf->lbah = ide_mm_inb(io_ports->lbah_addr);
57667 - if (task->tf_flags & IDE_TFLAG_IN_DEVICE)
57668 - tf->device = ide_mm_inb(io_ports->device_addr);
57669 -
57670 - if (task->tf_flags & IDE_TFLAG_LBA48) {
57671 - ide_mm_outb(ATA_DEVCTL_OBS | 0x80, io_ports->ctl_addr);
57672 -
57673 - if (task->tf_flags & IDE_TFLAG_IN_HOB_FEATURE)
57674 - tf->hob_feature = ide_mm_inb(io_ports->feature_addr);
57675 - if (task->tf_flags & IDE_TFLAG_IN_HOB_NSECT)
57676 - tf->hob_nsect = ide_mm_inb(io_ports->nsect_addr);
57677 - if (task->tf_flags & IDE_TFLAG_IN_HOB_LBAL)
57678 - tf->hob_lbal = ide_mm_inb(io_ports->lbal_addr);
57679 - if (task->tf_flags & IDE_TFLAG_IN_HOB_LBAM)
57680 - tf->hob_lbam = ide_mm_inb(io_ports->lbam_addr);
57681 - if (task->tf_flags & IDE_TFLAG_IN_HOB_LBAH)
57682 - tf->hob_lbah = ide_mm_inb(io_ports->lbah_addr);
57683 - }
57684 -}
57685 -
57686 -static void at91_ide_set_pio_mode(ide_drive_t *drive, const u8 pio)
57687 -{
57688 - struct ide_timing *timing;
57689 - u8 chipselect = drive->hwif->select_data;
57690 - int use_iordy = 0;
57691 -
57692 - pdbg("chipselect %u pio %u\n", chipselect, pio);
57693 -
57694 - timing = ide_timing_find_mode(XFER_PIO_0 + pio);
57695 - BUG_ON(!timing);
57696 -
57697 - if ((pio > 2 || ata_id_has_iordy(drive->id)) &&
57698 - !(ata_id_is_cfa(drive->id) && pio > 4))
57699 - use_iordy = 1;
57700 -
57701 - apply_timings(chipselect, pio, timing, use_iordy);
57702 -}
57703 -
57704 -static const struct ide_tp_ops at91_ide_tp_ops = {
57705 - .exec_command = ide_exec_command,
57706 - .read_status = ide_read_status,
57707 - .read_altstatus = ide_read_altstatus,
57708 - .set_irq = ide_set_irq,
57709 -
57710 - .tf_load = at91_ide_tf_load,
57711 - .tf_read = at91_ide_tf_read,
57712 -
57713 - .input_data = at91_ide_input_data,
57714 - .output_data = at91_ide_output_data,
57715 -};
57716 -
57717 -static const struct ide_port_ops at91_ide_port_ops = {
57718 - .set_pio_mode = at91_ide_set_pio_mode,
57719 -};
57720 -
57721 -static const struct ide_port_info at91_ide_port_info __initdata = {
57722 - .port_ops = &at91_ide_port_ops,
57723 - .tp_ops = &at91_ide_tp_ops,
57724 - .host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA | IDE_HFLAG_SINGLE |
57725 - IDE_HFLAG_NO_IO_32BIT | IDE_HFLAG_UNMASK_IRQS,
57726 - .pio_mask = ATA_PIO5,
57727 -};
57728 -
57729 -/*
57730 - * If interrupt is delivered through GPIO, IRQ are triggered on falling
57731 - * and rising edge of signal. Whereas IDE device request interrupt on high
57732 - * level (rising edge in our case). This mean we have fake interrupts, so
57733 - * we need to check interrupt pin and exit instantly from ISR when line
57734 - * is on low level.
57735 - */
57736 -
57737 -irqreturn_t at91_irq_handler(int irq, void *dev_id)
57738 -{
57739 - int ntries = 8;
57740 - int pin_val1, pin_val2;
57741 -
57742 - /* additional deglitch, line can be noisy in badly designed PCB */
57743 - do {
57744 - pin_val1 = at91_get_gpio_value(irq);
57745 - pin_val2 = at91_get_gpio_value(irq);
57746 - } while (pin_val1 != pin_val2 && --ntries > 0);
57747 -
57748 - if (pin_val1 == 0 || ntries <= 0)
57749 - return IRQ_HANDLED;
57750 -
57751 - return ide_intr(irq, dev_id);
57752 -}
57753 -
57754 -static int __init at91_ide_probe(struct platform_device *pdev)
57755 -{
57756 - int ret;
57757 - hw_regs_t hw;
57758 - hw_regs_t *hws[] = { &hw, NULL, NULL, NULL };
57759 - struct ide_host *host;
57760 - struct resource *res;
57761 - unsigned long tf_base = 0, ctl_base = 0;
57762 - struct at91_cf_data *board = pdev->dev.platform_data;
57763 -
57764 - if (!board)
57765 - return -ENODEV;
57766 -
57767 - if (board->det_pin && at91_get_gpio_value(board->det_pin) != 0) {
57768 - perr("no device detected\n");
57769 - return -ENODEV;
57770 - }
57771 -
57772 - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
57773 - if (!res) {
57774 - perr("can't get memory resource\n");
57775 - return -ENODEV;
57776 - }
57777 -
57778 - if (!devm_request_mem_region(&pdev->dev, res->start + TASK_FILE,
57779 - REGS_SIZE, "ide") ||
57780 - !devm_request_mem_region(&pdev->dev, res->start + ALT_MODE,
57781 - REGS_SIZE, "alt")) {
57782 - perr("memory resources in use\n");
57783 - return -EBUSY;
57784 - }
57785 -
57786 - pdbg("chipselect %u irq %u res %08lx\n", board->chipselect,
57787 - board->irq_pin, (unsigned long) res->start);
57788 -
57789 - tf_base = (unsigned long) devm_ioremap(&pdev->dev, res->start + TASK_FILE,
57790 - REGS_SIZE);
57791 - ctl_base = (unsigned long) devm_ioremap(&pdev->dev, res->start + ALT_MODE,
57792 - REGS_SIZE);
57793 - if (!tf_base || !ctl_base) {
57794 - perr("can't map memory regions\n");
57795 - return -EBUSY;
57796 - }
57797 -
57798 - memset(&hw, 0, sizeof(hw));
57799 -
57800 - if (board->flags & AT91_IDE_SWAP_A0_A2) {
57801 - /* workaround for stupid hardware bug */
57802 - hw.io_ports.data_addr = tf_base + 0;
57803 - hw.io_ports.error_addr = tf_base + 4;
57804 - hw.io_ports.nsect_addr = tf_base + 2;
57805 - hw.io_ports.lbal_addr = tf_base + 6;
57806 - hw.io_ports.lbam_addr = tf_base + 1;
57807 - hw.io_ports.lbah_addr = tf_base + 5;
57808 - hw.io_ports.device_addr = tf_base + 3;
57809 - hw.io_ports.command_addr = tf_base + 7;
57810 - hw.io_ports.ctl_addr = ctl_base + 3;
57811 - } else
57812 - ide_std_init_ports(&hw, tf_base, ctl_base + 6);
57813 -
57814 - hw.irq = board->irq_pin;
57815 - hw.chipset = ide_generic;
57816 - hw.dev = &pdev->dev;
57817 -
57818 - host = ide_host_alloc(&at91_ide_port_info, hws);
57819 - if (!host) {
57820 - perr("failed to allocate ide host\n");
57821 - return -ENOMEM;
57822 - }
57823 -
57824 - /* setup Static Memory Controller - PIO 0 as default */
57825 - apply_timings(board->chipselect, 0, ide_timing_find_mode(XFER_PIO_0), 0);
57826 -
57827 - /* with GPIO interrupt we have to do quirks in handler */
57828 - if (board->irq_pin >= PIN_BASE)
57829 - host->irq_handler = at91_irq_handler;
57830 -
57831 - host->ports[0]->select_data = board->chipselect;
57832 -
57833 - ret = ide_host_register(host, &at91_ide_port_info, hws);
57834 - if (ret) {
57835 - perr("failed to register ide host\n");
57836 - goto err_free_host;
57837 - }
57838 - platform_set_drvdata(pdev, host);
57839 - return 0;
57840 -
57841 -err_free_host:
57842 - ide_host_free(host);
57843 - return ret;
57844 -}
57845 -
57846 -static int __exit at91_ide_remove(struct platform_device *pdev)
57847 -{
57848 - struct ide_host *host = platform_get_drvdata(pdev);
57849 -
57850 - ide_host_remove(host);
57851 - return 0;
57852 -}
57853 -
57854 -static struct platform_driver at91_ide_driver = {
57855 - .driver = {
57856 - .name = DRV_NAME,
57857 - .owner = THIS_MODULE,
57858 - },
57859 - .remove = __exit_p(at91_ide_remove),
57860 -};
57861 -
57862 -static int __init at91_ide_init(void)
57863 -{
57864 - return platform_driver_probe(&at91_ide_driver, at91_ide_probe);
57865 -}
57866 -
57867 -static void __exit at91_ide_exit(void)
57868 -{
57869 - platform_driver_unregister(&at91_ide_driver);
57870 -}
57871 -
57872 -module_init(at91_ide_init);
57873 -module_exit(at91_ide_exit);
57874 -
57875 -MODULE_LICENSE("GPL");
57876 -MODULE_AUTHOR("Stanislaw Gruszka <stf_xl@wp.pl>");
57877 -
57878 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/atiixp.c linux-2.6.29-rc3.owrt/drivers/ide/atiixp.c
57879 --- linux-2.6.29.owrt/drivers/ide/atiixp.c 2009-05-10 22:04:39.000000000 +0200
57880 +++ linux-2.6.29-rc3.owrt/drivers/ide/atiixp.c 2009-05-10 23:48:28.000000000 +0200
57881 @@ -52,7 +52,7 @@
57882 {
57883 struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
57884 unsigned long flags;
57885 - int timing_shift = (drive->dn ^ 1) * 8;
57886 + int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8;
57887 u32 pio_timing_data;
57888 u16 pio_mode_data;
57889
57890 @@ -85,7 +85,7 @@
57891 {
57892 struct pci_dev *dev = to_pci_dev(drive->hwif->dev);
57893 unsigned long flags;
57894 - int timing_shift = (drive->dn ^ 1) * 8;
57895 + int timing_shift = (drive->dn & 2) ? 16 : 0 + (drive->dn & 1) ? 0 : 8;
57896 u32 tmp32;
57897 u16 tmp16;
57898 u16 udma_ctl = 0;
57899 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/cs5536.c linux-2.6.29-rc3.owrt/drivers/ide/cs5536.c
57900 --- linux-2.6.29.owrt/drivers/ide/cs5536.c 2009-05-10 22:04:39.000000000 +0200
57901 +++ linux-2.6.29-rc3.owrt/drivers/ide/cs5536.c 1970-01-01 01:00:00.000000000 +0100
57902 @@ -1,308 +0,0 @@
57903 -/*
57904 - * CS5536 PATA support
57905 - * (C) 2007 Martin K. Petersen <mkp@mkp.net>
57906 - * (C) 2009 Bartlomiej Zolnierkiewicz
57907 - *
57908 - * This program is free software; you can redistribute it and/or modify
57909 - * it under the terms of the GNU General Public License version 2 as
57910 - * published by the Free Software Foundation.
57911 - *
57912 - * This program is distributed in the hope that it will be useful,
57913 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
57914 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
57915 - * GNU General Public License for more details.
57916 - *
57917 - * You should have received a copy of the GNU General Public License
57918 - * along with this program; if not, write to the Free Software
57919 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
57920 - *
57921 - * Documentation:
57922 - * Available from AMD web site.
57923 - *
57924 - * The IDE timing registers for the CS5536 live in the Geode Machine
57925 - * Specific Register file and not PCI config space. Most BIOSes
57926 - * virtualize the PCI registers so the chip looks like a standard IDE
57927 - * controller. Unfortunately not all implementations get this right.
57928 - * In particular some have problems with unaligned accesses to the
57929 - * virtualized PCI registers. This driver always does full dword
57930 - * writes to work around the issue. Also, in case of a bad BIOS this
57931 - * driver can be loaded with the "msr=1" parameter which forces using
57932 - * the Machine Specific Registers to configure the device.
57933 - */
57934 -
57935 -#include <linux/kernel.h>
57936 -#include <linux/module.h>
57937 -#include <linux/pci.h>
57938 -#include <linux/init.h>
57939 -#include <linux/ide.h>
57940 -#include <asm/msr.h>
57941 -
57942 -#define DRV_NAME "cs5536"
57943 -
57944 -enum {
57945 - MSR_IDE_CFG = 0x51300010,
57946 - PCI_IDE_CFG = 0x40,
57947 -
57948 - CFG = 0,
57949 - DTC = 2,
57950 - CAST = 3,
57951 - ETC = 4,
57952 -
57953 - IDE_CFG_CHANEN = (1 << 1),
57954 - IDE_CFG_CABLE = (1 << 17) | (1 << 16),
57955 -
57956 - IDE_D0_SHIFT = 24,
57957 - IDE_D1_SHIFT = 16,
57958 - IDE_DRV_MASK = 0xff,
57959 -
57960 - IDE_CAST_D0_SHIFT = 6,
57961 - IDE_CAST_D1_SHIFT = 4,
57962 - IDE_CAST_DRV_MASK = 0x3,
57963 -
57964 - IDE_CAST_CMD_SHIFT = 24,
57965 - IDE_CAST_CMD_MASK = 0xff,
57966 -
57967 - IDE_ETC_UDMA_MASK = 0xc0,
57968 -};
57969 -
57970 -static int use_msr;
57971 -
57972 -static int cs5536_read(struct pci_dev *pdev, int reg, u32 *val)
57973 -{
57974 - if (unlikely(use_msr)) {
57975 - u32 dummy;
57976 -
57977 - rdmsr(MSR_IDE_CFG + reg, *val, dummy);
57978 - return 0;
57979 - }
57980 -
57981 - return pci_read_config_dword(pdev, PCI_IDE_CFG + reg * 4, val);
57982 -}
57983 -
57984 -static int cs5536_write(struct pci_dev *pdev, int reg, int val)
57985 -{
57986 - if (unlikely(use_msr)) {
57987 - wrmsr(MSR_IDE_CFG + reg, val, 0);
57988 - return 0;
57989 - }
57990 -
57991 - return pci_write_config_dword(pdev, PCI_IDE_CFG + reg * 4, val);
57992 -}
57993 -
57994 -static void cs5536_program_dtc(ide_drive_t *drive, u8 tim)
57995 -{
57996 - struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
57997 - int dshift = (drive->dn & 1) ? IDE_D1_SHIFT : IDE_D0_SHIFT;
57998 - u32 dtc;
57999 -
58000 - cs5536_read(pdev, DTC, &dtc);
58001 - dtc &= ~(IDE_DRV_MASK << dshift);
58002 - dtc |= tim << dshift;
58003 - cs5536_write(pdev, DTC, dtc);
58004 -}
58005 -
58006 -/**
58007 - * cs5536_cable_detect - detect cable type
58008 - * @hwif: Port to detect on
58009 - *
58010 - * Perform cable detection for ATA66 capable cable.
58011 - *
58012 - * Returns a cable type.
58013 - */
58014 -
58015 -static u8 cs5536_cable_detect(ide_hwif_t *hwif)
58016 -{
58017 - struct pci_dev *pdev = to_pci_dev(hwif->dev);
58018 - u32 cfg;
58019 -
58020 - cs5536_read(pdev, CFG, &cfg);
58021 -
58022 - if (cfg & IDE_CFG_CABLE)
58023 - return ATA_CBL_PATA80;
58024 - else
58025 - return ATA_CBL_PATA40;
58026 -}
58027 -
58028 -/**
58029 - * cs5536_set_pio_mode - PIO timing setup
58030 - * @drive: ATA device
58031 - * @pio: PIO mode number
58032 - */
58033 -
58034 -static void cs5536_set_pio_mode(ide_drive_t *drive, const u8 pio)
58035 -{
58036 - static const u8 drv_timings[5] = {
58037 - 0x98, 0x55, 0x32, 0x21, 0x20,
58038 - };
58039 -
58040 - static const u8 addr_timings[5] = {
58041 - 0x2, 0x1, 0x0, 0x0, 0x0,
58042 - };
58043 -
58044 - static const u8 cmd_timings[5] = {
58045 - 0x99, 0x92, 0x90, 0x22, 0x20,
58046 - };
58047 -
58048 - struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
58049 - ide_drive_t *pair = ide_get_pair_dev(drive);
58050 - int cshift = (drive->dn & 1) ? IDE_CAST_D1_SHIFT : IDE_CAST_D0_SHIFT;
58051 - u32 cast;
58052 - u8 cmd_pio = pio;
58053 -
58054 - if (pair)
58055 - cmd_pio = min(pio, ide_get_best_pio_mode(pair, 255, 4));
58056 -
58057 - drive->drive_data &= (IDE_DRV_MASK << 8);
58058 - drive->drive_data |= drv_timings[pio];
58059 -
58060 - cs5536_program_dtc(drive, drv_timings[pio]);
58061 -
58062 - cs5536_read(pdev, CAST, &cast);
58063 -
58064 - cast &= ~(IDE_CAST_DRV_MASK << cshift);
58065 - cast |= addr_timings[pio] << cshift;
58066 -
58067 - cast &= ~(IDE_CAST_CMD_MASK << IDE_CAST_CMD_SHIFT);
58068 - cast |= cmd_timings[cmd_pio] << IDE_CAST_CMD_SHIFT;
58069 -
58070 - cs5536_write(pdev, CAST, cast);
58071 -}
58072 -
58073 -/**
58074 - * cs5536_set_dma_mode - DMA timing setup
58075 - * @drive: ATA device
58076 - * @mode: DMA mode
58077 - */
58078 -
58079 -static void cs5536_set_dma_mode(ide_drive_t *drive, const u8 mode)
58080 -{
58081 - static const u8 udma_timings[6] = {
58082 - 0xc2, 0xc1, 0xc0, 0xc4, 0xc5, 0xc6,
58083 - };
58084 -
58085 - static const u8 mwdma_timings[3] = {
58086 - 0x67, 0x21, 0x20,
58087 - };
58088 -
58089 - struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
58090 - int dshift = (drive->dn & 1) ? IDE_D1_SHIFT : IDE_D0_SHIFT;
58091 - u32 etc;
58092 -
58093 - cs5536_read(pdev, ETC, &etc);
58094 -
58095 - if (mode >= XFER_UDMA_0) {
58096 - etc &= ~(IDE_DRV_MASK << dshift);
58097 - etc |= udma_timings[mode - XFER_UDMA_0] << dshift;
58098 - } else { /* MWDMA */
58099 - etc &= ~(IDE_ETC_UDMA_MASK << dshift);
58100 - drive->drive_data &= IDE_DRV_MASK;
58101 - drive->drive_data |= mwdma_timings[mode - XFER_MW_DMA_0] << 8;
58102 - }
58103 -
58104 - cs5536_write(pdev, ETC, etc);
58105 -}
58106 -
58107 -static void cs5536_dma_start(ide_drive_t *drive)
58108 -{
58109 - if (drive->current_speed < XFER_UDMA_0 &&
58110 - (drive->drive_data >> 8) != (drive->drive_data & IDE_DRV_MASK))
58111 - cs5536_program_dtc(drive, drive->drive_data >> 8);
58112 -
58113 - ide_dma_start(drive);
58114 -}
58115 -
58116 -static int cs5536_dma_end(ide_drive_t *drive)
58117 -{
58118 - int ret = ide_dma_end(drive);
58119 -
58120 - if (drive->current_speed < XFER_UDMA_0 &&
58121 - (drive->drive_data >> 8) != (drive->drive_data & IDE_DRV_MASK))
58122 - cs5536_program_dtc(drive, drive->drive_data & IDE_DRV_MASK);
58123 -
58124 - return ret;
58125 -}
58126 -
58127 -static const struct ide_port_ops cs5536_port_ops = {
58128 - .set_pio_mode = cs5536_set_pio_mode,
58129 - .set_dma_mode = cs5536_set_dma_mode,
58130 - .cable_detect = cs5536_cable_detect,
58131 -};
58132 -
58133 -static const struct ide_dma_ops cs5536_dma_ops = {
58134 - .dma_host_set = ide_dma_host_set,
58135 - .dma_setup = ide_dma_setup,
58136 - .dma_exec_cmd = ide_dma_exec_cmd,
58137 - .dma_start = cs5536_dma_start,
58138 - .dma_end = cs5536_dma_end,
58139 - .dma_test_irq = ide_dma_test_irq,
58140 - .dma_lost_irq = ide_dma_lost_irq,
58141 - .dma_timeout = ide_dma_timeout,
58142 -};
58143 -
58144 -static const struct ide_port_info cs5536_info = {
58145 - .name = DRV_NAME,
58146 - .port_ops = &cs5536_port_ops,
58147 - .dma_ops = &cs5536_dma_ops,
58148 - .host_flags = IDE_HFLAG_SINGLE,
58149 - .pio_mask = ATA_PIO4,
58150 - .mwdma_mask = ATA_MWDMA2,
58151 - .udma_mask = ATA_UDMA5,
58152 -};
58153 -
58154 -/**
58155 - * cs5536_init_one
58156 - * @dev: PCI device
58157 - * @id: Entry in match table
58158 - */
58159 -
58160 -static int cs5536_init_one(struct pci_dev *dev, const struct pci_device_id *id)
58161 -{
58162 - u32 cfg;
58163 -
58164 - if (use_msr)
58165 - printk(KERN_INFO DRV_NAME ": Using MSR regs instead of PCI\n");
58166 -
58167 - cs5536_read(dev, CFG, &cfg);
58168 -
58169 - if ((cfg & IDE_CFG_CHANEN) == 0) {
58170 - printk(KERN_ERR DRV_NAME ": disabled by BIOS\n");
58171 - return -ENODEV;
58172 - }
58173 -
58174 - return ide_pci_init_one(dev, &cs5536_info, NULL);
58175 -}
58176 -
58177 -static const struct pci_device_id cs5536_pci_tbl[] = {
58178 - { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5536_IDE), },
58179 - { },
58180 -};
58181 -
58182 -static struct pci_driver cs5536_pci_driver = {
58183 - .name = DRV_NAME,
58184 - .id_table = cs5536_pci_tbl,
58185 - .probe = cs5536_init_one,
58186 - .remove = ide_pci_remove,
58187 - .suspend = ide_pci_suspend,
58188 - .resume = ide_pci_resume,
58189 -};
58190 -
58191 -static int __init cs5536_init(void)
58192 -{
58193 - return pci_register_driver(&cs5536_pci_driver);
58194 -}
58195 -
58196 -static void __exit cs5536_exit(void)
58197 -{
58198 - pci_unregister_driver(&cs5536_pci_driver);
58199 -}
58200 -
58201 -MODULE_AUTHOR("Martin K. Petersen, Bartlomiej Zolnierkiewicz");
58202 -MODULE_DESCRIPTION("low-level driver for the CS5536 IDE controller");
58203 -MODULE_LICENSE("GPL");
58204 -MODULE_DEVICE_TABLE(pci, cs5536_pci_tbl);
58205 -
58206 -module_param_named(msr, use_msr, int, 0644);
58207 -MODULE_PARM_DESC(msr, "Force using MSR to configure IDE function (Default: 0)");
58208 -
58209 -module_init(cs5536_init);
58210 -module_exit(cs5536_exit);
58211 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/icside.c linux-2.6.29-rc3.owrt/drivers/ide/icside.c
58212 --- linux-2.6.29.owrt/drivers/ide/icside.c 2009-05-10 22:04:39.000000000 +0200
58213 +++ linux-2.6.29-rc3.owrt/drivers/ide/icside.c 2009-05-10 23:48:28.000000000 +0200
58214 @@ -534,7 +534,7 @@
58215 d.dma_ops = NULL;
58216 }
58217
58218 - ret = ide_host_register(host, &d, hws);
58219 + ret = ide_host_register(host, NULL, hws);
58220 if (ret)
58221 goto err_free;
58222
58223 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-acpi.c linux-2.6.29-rc3.owrt/drivers/ide/ide-acpi.c
58224 --- linux-2.6.29.owrt/drivers/ide/ide-acpi.c 2009-05-10 22:04:39.000000000 +0200
58225 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-acpi.c 2009-05-10 23:48:28.000000000 +0200
58226 @@ -282,7 +282,7 @@
58227 port = hwif->channel ? drive->dn - 2: drive->dn;
58228
58229 DEBPRINT("ENTER: %s at %s, port#: %d, hard_port#: %d\n",
58230 - hwif->name, dev_name(dev), port, hwif->channel);
58231 + hwif->name, dev->bus_id, port, hwif->channel);
58232
58233 if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0) {
58234 DEBPRINT("%s drive %d:%d not present\n",
58235 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-atapi.c linux-2.6.29-rc3.owrt/drivers/ide/ide-atapi.c
58236 --- linux-2.6.29.owrt/drivers/ide/ide-atapi.c 2009-05-10 22:04:39.000000000 +0200
58237 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-atapi.c 2009-05-10 23:48:28.000000000 +0200
58238 @@ -140,12 +140,6 @@
58239 rq->cmd_flags |= REQ_PREEMPT;
58240 rq->buffer = (char *)pc;
58241 rq->rq_disk = disk;
58242 -
58243 - if (pc->req_xfer) {
58244 - rq->data = pc->buf;
58245 - rq->data_len = pc->req_xfer;
58246 - }
58247 -
58248 memcpy(rq->cmd, pc->c, 12);
58249 if (drive->media == ide_tape)
58250 rq->cmd[13] = REQ_IDETAPE_PC1;
58251 @@ -165,12 +159,6 @@
58252 rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
58253 rq->cmd_type = REQ_TYPE_SPECIAL;
58254 rq->buffer = (char *)pc;
58255 -
58256 - if (pc->req_xfer) {
58257 - rq->data = pc->buf;
58258 - rq->data_len = pc->req_xfer;
58259 - }
58260 -
58261 memcpy(rq->cmd, pc->c, 12);
58262 if (drive->media == ide_tape)
58263 rq->cmd[13] = REQ_IDETAPE_PC1;
58264 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide.c linux-2.6.29-rc3.owrt/drivers/ide/ide.c
58265 --- linux-2.6.29.owrt/drivers/ide/ide.c 2009-05-10 22:04:39.000000000 +0200
58266 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide.c 2009-05-10 23:48:28.000000000 +0200
58267 @@ -337,7 +337,6 @@
58268 int a, b, i, j = 1;
58269 unsigned int *dev_param_mask = (unsigned int *)kp->arg;
58270
58271 - /* controller . device (0 or 1) [ : 1 (set) | 0 (clear) ] */
58272 if (sscanf(s, "%d.%d:%d", &a, &b, &j) != 3 &&
58273 sscanf(s, "%d.%d", &a, &b) != 2)
58274 return -EINVAL;
58275 @@ -350,7 +349,7 @@
58276 if (j)
58277 *dev_param_mask |= (1 << i);
58278 else
58279 - *dev_param_mask &= ~(1 << i);
58280 + *dev_param_mask &= (1 << i);
58281
58282 return 0;
58283 }
58284 @@ -393,8 +392,6 @@
58285 {
58286 int a, b, c = 0, h = 0, s = 0, i, j = 1;
58287
58288 - /* controller . device (0 or 1) : Cylinders , Heads , Sectors */
58289 - /* controller . device (0 or 1) : 1 (use CHS) | 0 (ignore CHS) */
58290 if (sscanf(str, "%d.%d:%d,%d,%d", &a, &b, &c, &h, &s) != 5 &&
58291 sscanf(str, "%d.%d:%d", &a, &b, &j) != 3)
58292 return -EINVAL;
58293 @@ -410,7 +407,7 @@
58294 if (j)
58295 ide_disks |= (1 << i);
58296 else
58297 - ide_disks &= ~(1 << i);
58298 + ide_disks &= (1 << i);
58299
58300 ide_disks_chs[i].cyl = c;
58301 ide_disks_chs[i].head = h;
58302 @@ -472,8 +469,6 @@
58303 {
58304 int i, j = 1;
58305
58306 - /* controller (ignore) */
58307 - /* controller : 1 (ignore) | 0 (use) */
58308 if (sscanf(s, "%d:%d", &i, &j) != 2 && sscanf(s, "%d", &i) != 1)
58309 return -EINVAL;
58310
58311 @@ -483,7 +478,7 @@
58312 if (j)
58313 ide_ignore_cable |= (1 << i);
58314 else
58315 - ide_ignore_cable &= ~(1 << i);
58316 + ide_ignore_cable &= (1 << i);
58317
58318 return 0;
58319 }
58320 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-cd.c linux-2.6.29-rc3.owrt/drivers/ide/ide-cd.c
58321 --- linux-2.6.29.owrt/drivers/ide/ide-cd.c 2009-05-10 22:04:39.000000000 +0200
58322 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-cd.c 2009-05-10 23:48:28.000000000 +0200
58323 @@ -55,7 +55,7 @@
58324
58325 static DEFINE_MUTEX(idecd_ref_mutex);
58326
58327 -static void ide_cd_release(struct device *);
58328 +static void ide_cd_release(struct kref *);
58329
58330 static struct cdrom_info *ide_cd_get(struct gendisk *disk)
58331 {
58332 @@ -67,7 +67,7 @@
58333 if (ide_device_get(cd->drive))
58334 cd = NULL;
58335 else
58336 - get_device(&cd->dev);
58337 + kref_get(&cd->kref);
58338
58339 }
58340 mutex_unlock(&idecd_ref_mutex);
58341 @@ -79,7 +79,7 @@
58342 ide_drive_t *drive = cd->drive;
58343
58344 mutex_lock(&idecd_ref_mutex);
58345 - put_device(&cd->dev);
58346 + kref_put(&cd->kref, ide_cd_release);
58347 ide_device_put(drive);
58348 mutex_unlock(&idecd_ref_mutex);
58349 }
58350 @@ -194,14 +194,6 @@
58351 bio_sectors = max(bio_sectors(failed_command->bio), 4U);
58352 sector &= ~(bio_sectors - 1);
58353
58354 - /*
58355 - * The SCSI specification allows for the value
58356 - * returned by READ CAPACITY to be up to 75 2K
58357 - * sectors past the last readable block.
58358 - * Therefore, if we hit a medium error within the
58359 - * last 75 2K sectors, we decrease the saved size
58360 - * value.
58361 - */
58362 if (sector < get_capacity(info->disk) &&
58363 drive->probed_capacity - sector < 4 * 75)
58364 set_capacity(info->disk, sector);
58365 @@ -795,9 +787,6 @@
58366 if (blk_fs_request(rq)) {
58367 ide_end_request(drive, 1, rq->nr_sectors);
58368 return ide_stopped;
58369 - } else if (rq->cmd_type == REQ_TYPE_ATA_PC && !rq->bio) {
58370 - ide_end_request(drive, 1, 1);
58371 - return ide_stopped;
58372 }
58373 goto end_request;
58374 }
58375 @@ -1798,17 +1787,15 @@
58376 ide_debug_log(IDE_DBG_FUNC, "Call %s\n", __func__);
58377
58378 ide_proc_unregister_driver(drive, info->driver);
58379 - device_del(&info->dev);
58380 +
58381 del_gendisk(info->disk);
58382
58383 - mutex_lock(&idecd_ref_mutex);
58384 - put_device(&info->dev);
58385 - mutex_unlock(&idecd_ref_mutex);
58386 + ide_cd_put(info);
58387 }
58388
58389 -static void ide_cd_release(struct device *dev)
58390 +static void ide_cd_release(struct kref *kref)
58391 {
58392 - struct cdrom_info *info = to_ide_drv(dev, cdrom_info);
58393 + struct cdrom_info *info = to_ide_drv(kref, cdrom_info);
58394 struct cdrom_device_info *devinfo = &info->devinfo;
58395 ide_drive_t *drive = info->drive;
58396 struct gendisk *g = info->disk;
58397 @@ -2007,12 +1994,7 @@
58398
58399 ide_init_disk(g, drive);
58400
58401 - info->dev.parent = &drive->gendev;
58402 - info->dev.release = ide_cd_release;
58403 - dev_set_name(&info->dev, dev_name(&drive->gendev));
58404 -
58405 - if (device_register(&info->dev))
58406 - goto out_free_disk;
58407 + kref_init(&info->kref);
58408
58409 info->drive = drive;
58410 info->driver = &ide_cdrom_driver;
58411 @@ -2026,7 +2008,7 @@
58412 g->driverfs_dev = &drive->gendev;
58413 g->flags = GENHD_FL_CD | GENHD_FL_REMOVABLE;
58414 if (ide_cdrom_setup(drive)) {
58415 - put_device(&info->dev);
58416 + ide_cd_release(&info->kref);
58417 goto failed;
58418 }
58419
58420 @@ -2036,8 +2018,6 @@
58421 add_disk(g);
58422 return 0;
58423
58424 -out_free_disk:
58425 - put_disk(g);
58426 out_free_cd:
58427 kfree(info);
58428 failed:
58429 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-cd.h linux-2.6.29-rc3.owrt/drivers/ide/ide-cd.h
58430 --- linux-2.6.29.owrt/drivers/ide/ide-cd.h 2009-05-10 22:04:39.000000000 +0200
58431 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-cd.h 2009-05-10 23:48:28.000000000 +0200
58432 @@ -80,7 +80,7 @@
58433 ide_drive_t *drive;
58434 struct ide_driver *driver;
58435 struct gendisk *disk;
58436 - struct device dev;
58437 + struct kref kref;
58438
58439 /* Buffer for table of contents. NULL if we haven't allocated
58440 a TOC buffer for this device yet. */
58441 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-disk_proc.c linux-2.6.29-rc3.owrt/drivers/ide/ide-disk_proc.c
58442 --- linux-2.6.29.owrt/drivers/ide/ide-disk_proc.c 2009-05-10 22:04:39.000000000 +0200
58443 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-disk_proc.c 2009-05-10 23:48:28.000000000 +0200
58444 @@ -125,5 +125,5 @@
58445 IDE_PROC_DEVSET(multcount, 0, 16),
58446 IDE_PROC_DEVSET(nowerr, 0, 1),
58447 IDE_PROC_DEVSET(wcache, 0, 1),
58448 - { NULL },
58449 + { 0 },
58450 };
58451 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-dma.c linux-2.6.29-rc3.owrt/drivers/ide/ide-dma.c
58452 --- linux-2.6.29.owrt/drivers/ide/ide-dma.c 2009-05-10 22:04:39.000000000 +0200
58453 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-dma.c 2009-05-10 23:48:28.000000000 +0200
58454 @@ -128,7 +128,6 @@
58455 {
58456 ide_hwif_t *hwif = drive->hwif;
58457 struct scatterlist *sg = hwif->sg_table;
58458 - int i;
58459
58460 ide_map_sg(drive, rq);
58461
58462 @@ -137,13 +136,8 @@
58463 else
58464 hwif->sg_dma_direction = DMA_TO_DEVICE;
58465
58466 - i = dma_map_sg(hwif->dev, sg, hwif->sg_nents, hwif->sg_dma_direction);
58467 - if (i) {
58468 - hwif->orig_sg_nents = hwif->sg_nents;
58469 - hwif->sg_nents = i;
58470 - }
58471 -
58472 - return i;
58473 + return dma_map_sg(hwif->dev, sg, hwif->sg_nents,
58474 + hwif->sg_dma_direction);
58475 }
58476 EXPORT_SYMBOL_GPL(ide_build_sglist);
58477
58478 @@ -162,7 +156,7 @@
58479 {
58480 ide_hwif_t *hwif = drive->hwif;
58481
58482 - dma_unmap_sg(hwif->dev, hwif->sg_table, hwif->orig_sg_nents,
58483 + dma_unmap_sg(hwif->dev, hwif->sg_table, hwif->sg_nents,
58484 hwif->sg_dma_direction);
58485 }
58486 EXPORT_SYMBOL_GPL(ide_destroy_dmatable);
58487 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-floppy.c linux-2.6.29-rc3.owrt/drivers/ide/ide-floppy.c
58488 --- linux-2.6.29.owrt/drivers/ide/ide-floppy.c 2009-05-10 22:04:39.000000000 +0200
58489 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-floppy.c 2009-05-10 23:48:28.000000000 +0200
58490 @@ -327,10 +327,8 @@
58491 return ide_stopped;
58492 }
58493
58494 - if (blk_fs_request(rq) || pc->req_xfer) {
58495 - ide_init_sg_cmd(drive, rq);
58496 - ide_map_sg(drive, rq);
58497 - }
58498 + ide_init_sg_cmd(drive, rq);
58499 + ide_map_sg(drive, rq);
58500
58501 pc->sg = hwif->sg_table;
58502 pc->sg_cnt = hwif->sg_nents;
58503 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-floppy_proc.c linux-2.6.29-rc3.owrt/drivers/ide/ide-floppy_proc.c
58504 --- linux-2.6.29.owrt/drivers/ide/ide-floppy_proc.c 2009-05-10 22:04:39.000000000 +0200
58505 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-floppy_proc.c 2009-05-10 23:48:28.000000000 +0200
58506 @@ -29,5 +29,5 @@
58507 IDE_PROC_DEVSET(bios_head, 0, 255),
58508 IDE_PROC_DEVSET(bios_sect, 0, 63),
58509 IDE_PROC_DEVSET(ticks, 0, 255),
58510 - { NULL },
58511 + { 0 },
58512 };
58513 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-gd.c linux-2.6.29-rc3.owrt/drivers/ide/ide-gd.c
58514 --- linux-2.6.29.owrt/drivers/ide/ide-gd.c 2009-05-10 22:04:39.000000000 +0200
58515 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-gd.c 2009-05-10 23:48:28.000000000 +0200
58516 @@ -25,7 +25,7 @@
58517
58518 static DEFINE_MUTEX(ide_disk_ref_mutex);
58519
58520 -static void ide_disk_release(struct device *);
58521 +static void ide_disk_release(struct kref *);
58522
58523 static struct ide_disk_obj *ide_disk_get(struct gendisk *disk)
58524 {
58525 @@ -37,7 +37,7 @@
58526 if (ide_device_get(idkp->drive))
58527 idkp = NULL;
58528 else
58529 - get_device(&idkp->dev);
58530 + kref_get(&idkp->kref);
58531 }
58532 mutex_unlock(&ide_disk_ref_mutex);
58533 return idkp;
58534 @@ -48,7 +48,7 @@
58535 ide_drive_t *drive = idkp->drive;
58536
58537 mutex_lock(&ide_disk_ref_mutex);
58538 - put_device(&idkp->dev);
58539 + kref_put(&idkp->kref, ide_disk_release);
58540 ide_device_put(drive);
58541 mutex_unlock(&ide_disk_ref_mutex);
58542 }
58543 @@ -66,18 +66,17 @@
58544 struct gendisk *g = idkp->disk;
58545
58546 ide_proc_unregister_driver(drive, idkp->driver);
58547 - device_del(&idkp->dev);
58548 +
58549 del_gendisk(g);
58550 +
58551 drive->disk_ops->flush(drive);
58552
58553 - mutex_lock(&ide_disk_ref_mutex);
58554 - put_device(&idkp->dev);
58555 - mutex_unlock(&ide_disk_ref_mutex);
58556 + ide_disk_put(idkp);
58557 }
58558
58559 -static void ide_disk_release(struct device *dev)
58560 +static void ide_disk_release(struct kref *kref)
58561 {
58562 - struct ide_disk_obj *idkp = to_ide_drv(dev, ide_disk_obj);
58563 + struct ide_disk_obj *idkp = to_ide_drv(kref, ide_disk_obj);
58564 ide_drive_t *drive = idkp->drive;
58565 struct gendisk *g = idkp->disk;
58566
58567 @@ -349,12 +348,7 @@
58568
58569 ide_init_disk(g, drive);
58570
58571 - idkp->dev.parent = &drive->gendev;
58572 - idkp->dev.release = ide_disk_release;
58573 - dev_set_name(&idkp->dev, dev_name(&drive->gendev));
58574 -
58575 - if (device_register(&idkp->dev))
58576 - goto out_free_disk;
58577 + kref_init(&idkp->kref);
58578
58579 idkp->drive = drive;
58580 idkp->driver = &ide_gd_driver;
58581 @@ -379,8 +373,6 @@
58582 add_disk(g);
58583 return 0;
58584
58585 -out_free_disk:
58586 - put_disk(g);
58587 out_free_idkp:
58588 kfree(idkp);
58589 failed:
58590 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-gd.h linux-2.6.29-rc3.owrt/drivers/ide/ide-gd.h
58591 --- linux-2.6.29.owrt/drivers/ide/ide-gd.h 2009-05-10 22:04:39.000000000 +0200
58592 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-gd.h 2009-05-10 23:48:28.000000000 +0200
58593 @@ -17,7 +17,7 @@
58594 ide_drive_t *drive;
58595 struct ide_driver *driver;
58596 struct gendisk *disk;
58597 - struct device dev;
58598 + struct kref kref;
58599 unsigned int openers; /* protected by BKL for now */
58600
58601 /* Last failed packet command */
58602 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-io.c linux-2.6.29-rc3.owrt/drivers/ide/ide-io.c
58603 --- linux-2.6.29.owrt/drivers/ide/ide-io.c 2009-05-10 22:04:39.000000000 +0200
58604 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-io.c 2009-05-10 23:48:28.000000000 +0200
58605 @@ -418,14 +418,11 @@
58606 ide_hwif_t *hwif = drive->hwif;
58607 struct scatterlist *sg = hwif->sg_table;
58608
58609 - if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
58610 + if (rq->cmd_type != REQ_TYPE_ATA_TASKFILE) {
58611 + hwif->sg_nents = blk_rq_map_sg(drive->queue, rq, sg);
58612 + } else {
58613 sg_init_one(sg, rq->buffer, rq->nr_sectors * SECTOR_SIZE);
58614 hwif->sg_nents = 1;
58615 - } else if (!rq->bio) {
58616 - sg_init_one(sg, rq->data, rq->data_len);
58617 - hwif->sg_nents = 1;
58618 - } else {
58619 - hwif->sg_nents = blk_rq_map_sg(drive->queue, rq, sg);
58620 }
58621 }
58622
58623 @@ -908,7 +905,7 @@
58624 ide_drive_t *uninitialized_var(drive);
58625 ide_handler_t *handler;
58626 unsigned long flags;
58627 - int wait = -1;
58628 + unsigned long wait = -1;
58629 int plug_device = 0;
58630
58631 spin_lock_irqsave(&hwif->lock, flags);
58632 @@ -1162,7 +1159,6 @@
58633
58634 return irq_ret;
58635 }
58636 -EXPORT_SYMBOL_GPL(ide_intr);
58637
58638 /**
58639 * ide_do_drive_cmd - issue IDE special command
58640 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-iops.c linux-2.6.29-rc3.owrt/drivers/ide/ide-iops.c
58641 --- linux-2.6.29.owrt/drivers/ide/ide-iops.c 2009-05-10 22:04:39.000000000 +0200
58642 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-iops.c 2009-05-10 23:48:28.000000000 +0200
58643 @@ -315,8 +315,6 @@
58644 u8 io_32bit = drive->io_32bit;
58645 u8 mmio = (hwif->host_flags & IDE_HFLAG_MMIO) ? 1 : 0;
58646
58647 - len++;
58648 -
58649 if (io_32bit) {
58650 unsigned long uninitialized_var(flags);
58651
58652 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-probe.c linux-2.6.29-rc3.owrt/drivers/ide/ide-probe.c
58653 --- linux-2.6.29.owrt/drivers/ide/ide-probe.c 2009-05-10 22:04:39.000000000 +0200
58654 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-probe.c 2009-05-10 23:48:28.000000000 +0200
58655 @@ -950,7 +950,6 @@
58656 static int init_irq (ide_hwif_t *hwif)
58657 {
58658 struct ide_io_ports *io_ports = &hwif->io_ports;
58659 - irq_handler_t irq_handler;
58660 int sa = 0;
58661
58662 mutex_lock(&ide_cfg_mtx);
58663 @@ -960,10 +959,6 @@
58664 hwif->timer.function = &ide_timer_expiry;
58665 hwif->timer.data = (unsigned long)hwif;
58666
58667 - irq_handler = hwif->host->irq_handler;
58668 - if (irq_handler == NULL)
58669 - irq_handler = ide_intr;
58670 -
58671 #if defined(__mc68000__)
58672 sa = IRQF_SHARED;
58673 #endif /* __mc68000__ */
58674 @@ -974,7 +969,7 @@
58675 if (io_ports->ctl_addr)
58676 hwif->tp_ops->set_irq(hwif, 1);
58677
58678 - if (request_irq(hwif->irq, irq_handler, sa, hwif->name, hwif))
58679 + if (request_irq(hwif->irq, &ide_intr, sa, hwif->name, hwif))
58680 goto out_up;
58681
58682 if (!hwif->rqsize) {
58683 @@ -1472,30 +1467,6 @@
58684 }
58685 EXPORT_SYMBOL_GPL(ide_host_alloc);
58686
58687 -static void ide_port_free(ide_hwif_t *hwif)
58688 -{
58689 - ide_port_free_devices(hwif);
58690 - ide_free_port_slot(hwif->index);
58691 - kfree(hwif);
58692 -}
58693 -
58694 -static void ide_disable_port(ide_hwif_t *hwif)
58695 -{
58696 - struct ide_host *host = hwif->host;
58697 - int i;
58698 -
58699 - printk(KERN_INFO "%s: disabling port\n", hwif->name);
58700 -
58701 - for (i = 0; i < MAX_HOST_PORTS; i++) {
58702 - if (host->ports[i] == hwif) {
58703 - host->ports[i] = NULL;
58704 - host->n_ports--;
58705 - }
58706 - }
58707 -
58708 - ide_port_free(hwif);
58709 -}
58710 -
58711 int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
58712 hw_regs_t **hws)
58713 {
58714 @@ -1536,12 +1507,8 @@
58715 hwif->present = 1;
58716
58717 if (hwif->chipset != ide_4drives || !hwif->mate ||
58718 - !hwif->mate->present) {
58719 - if (ide_register_port(hwif)) {
58720 - ide_disable_port(hwif);
58721 - continue;
58722 - }
58723 - }
58724 + !hwif->mate->present)
58725 + ide_register_port(hwif);
58726
58727 if (hwif->present)
58728 ide_port_tune_devices(hwif);
58729 @@ -1554,8 +1521,7 @@
58730 if (hwif_init(hwif) == 0) {
58731 printk(KERN_INFO "%s: failed to initialize IDE "
58732 "interface\n", hwif->name);
58733 - device_unregister(&hwif->gendev);
58734 - ide_disable_port(hwif);
58735 + hwif->present = 0;
58736 continue;
58737 }
58738
58739 @@ -1694,8 +1660,12 @@
58740 int i;
58741
58742 ide_host_for_each_port(i, hwif, host) {
58743 - if (hwif)
58744 - ide_port_free(hwif);
58745 + if (hwif == NULL)
58746 + continue;
58747 +
58748 + ide_port_free_devices(hwif);
58749 + ide_free_port_slot(hwif->index);
58750 + kfree(hwif);
58751 }
58752
58753 kfree(host);
58754 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-proc.c linux-2.6.29-rc3.owrt/drivers/ide/ide-proc.c
58755 --- linux-2.6.29.owrt/drivers/ide/ide-proc.c 2009-05-10 22:04:39.000000000 +0200
58756 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-proc.c 2009-05-10 23:48:28.000000000 +0200
58757 @@ -231,7 +231,7 @@
58758 IDE_PROC_DEVSET(pio_mode, 0, 255),
58759 IDE_PROC_DEVSET(unmaskirq, 0, 1),
58760 IDE_PROC_DEVSET(using_dma, 0, 1),
58761 - { NULL },
58762 + { 0 },
58763 };
58764
58765 static void proc_ide_settings_warn(void)
58766 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/ide-tape.c linux-2.6.29-rc3.owrt/drivers/ide/ide-tape.c
58767 --- linux-2.6.29.owrt/drivers/ide/ide-tape.c 2009-05-10 22:04:39.000000000 +0200
58768 +++ linux-2.6.29-rc3.owrt/drivers/ide/ide-tape.c 2009-05-10 23:48:28.000000000 +0200
58769 @@ -169,7 +169,7 @@
58770 ide_drive_t *drive;
58771 struct ide_driver *driver;
58772 struct gendisk *disk;
58773 - struct device dev;
58774 + struct kref kref;
58775
58776 /*
58777 * failed_pc points to the last failed packet command, or contains
58778 @@ -267,7 +267,7 @@
58779
58780 static struct class *idetape_sysfs_class;
58781
58782 -static void ide_tape_release(struct device *);
58783 +static void ide_tape_release(struct kref *);
58784
58785 static struct ide_tape_obj *ide_tape_get(struct gendisk *disk)
58786 {
58787 @@ -279,7 +279,7 @@
58788 if (ide_device_get(tape->drive))
58789 tape = NULL;
58790 else
58791 - get_device(&tape->dev);
58792 + kref_get(&tape->kref);
58793 }
58794 mutex_unlock(&idetape_ref_mutex);
58795 return tape;
58796 @@ -290,7 +290,7 @@
58797 ide_drive_t *drive = tape->drive;
58798
58799 mutex_lock(&idetape_ref_mutex);
58800 - put_device(&tape->dev);
58801 + kref_put(&tape->kref, ide_tape_release);
58802 ide_device_put(drive);
58803 mutex_unlock(&idetape_ref_mutex);
58804 }
58805 @@ -308,7 +308,7 @@
58806 mutex_lock(&idetape_ref_mutex);
58807 tape = idetape_devs[i];
58808 if (tape)
58809 - get_device(&tape->dev);
58810 + kref_get(&tape->kref);
58811 mutex_unlock(&idetape_ref_mutex);
58812 return tape;
58813 }
58814 @@ -2166,7 +2166,7 @@
58815 __IDE_PROC_DEVSET(speed, 0, 0xffff, NULL, NULL),
58816 __IDE_PROC_DEVSET(tdsc, IDETAPE_DSC_RW_MIN, IDETAPE_DSC_RW_MAX,
58817 mulf_tdsc, divf_tdsc),
58818 - { NULL },
58819 + { 0 },
58820 };
58821 #endif
58822
58823 @@ -2256,17 +2256,15 @@
58824 idetape_tape_t *tape = drive->driver_data;
58825
58826 ide_proc_unregister_driver(drive, tape->driver);
58827 - device_del(&tape->dev);
58828 +
58829 ide_unregister_region(tape->disk);
58830
58831 - mutex_lock(&idetape_ref_mutex);
58832 - put_device(&tape->dev);
58833 - mutex_unlock(&idetape_ref_mutex);
58834 + ide_tape_put(tape);
58835 }
58836
58837 -static void ide_tape_release(struct device *dev)
58838 +static void ide_tape_release(struct kref *kref)
58839 {
58840 - struct ide_tape_obj *tape = to_ide_drv(dev, ide_tape_obj);
58841 + struct ide_tape_obj *tape = to_ide_drv(kref, ide_tape_obj);
58842 ide_drive_t *drive = tape->drive;
58843 struct gendisk *g = tape->disk;
58844
58845 @@ -2409,12 +2407,7 @@
58846
58847 ide_init_disk(g, drive);
58848
58849 - tape->dev.parent = &drive->gendev;
58850 - tape->dev.release = ide_tape_release;
58851 - dev_set_name(&tape->dev, dev_name(&drive->gendev));
58852 -
58853 - if (device_register(&tape->dev))
58854 - goto out_free_disk;
58855 + kref_init(&tape->kref);
58856
58857 tape->drive = drive;
58858 tape->driver = &idetape_driver;
58859 @@ -2443,8 +2436,6 @@
58860
58861 return 0;
58862
58863 -out_free_disk:
58864 - put_disk(g);
58865 out_free_tape:
58866 kfree(tape);
58867 failed:
58868 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/it821x.c linux-2.6.29-rc3.owrt/drivers/ide/it821x.c
58869 --- linux-2.6.29.owrt/drivers/ide/it821x.c 2009-05-10 22:04:39.000000000 +0200
58870 +++ linux-2.6.29-rc3.owrt/drivers/ide/it821x.c 2009-05-10 23:48:28.000000000 +0200
58871 @@ -5,8 +5,9 @@
58872 * May be copied or modified under the terms of the GNU General Public License
58873 * Based in part on the ITE vendor provided SCSI driver.
58874 *
58875 - * Documentation:
58876 - * Datasheet is freely available, some other documents under NDA.
58877 + * Documentation available from
58878 + * http://www.ite.com.tw/pc/IT8212F_V04.pdf
58879 + * Some other documents are NDA.
58880 *
58881 * The ITE8212 isn't exactly a standard IDE controller. It has two
58882 * modes. In pass through mode then it is an IDE controller. In its smart
58883 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/Kconfig linux-2.6.29-rc3.owrt/drivers/ide/Kconfig
58884 --- linux-2.6.29.owrt/drivers/ide/Kconfig 2009-05-10 22:04:39.000000000 +0200
58885 +++ linux-2.6.29-rc3.owrt/drivers/ide/Kconfig 2009-05-10 23:48:28.000000000 +0200
58886 @@ -46,7 +46,7 @@
58887 SMART parameters from disk drives.
58888
58889 To compile this driver as a module, choose M here: the
58890 - module will be called ide-core.ko.
58891 + module will be called ide.
58892
58893 For further information, please read <file:Documentation/ide/ide.txt>.
58894
58895 @@ -465,16 +465,6 @@
58896
58897 It is safe to say Y to this question.
58898
58899 -config BLK_DEV_CS5536
58900 - tristate "CS5536 chipset support"
58901 - depends on X86_32
58902 - select BLK_DEV_IDEDMA_PCI
58903 - help
58904 - This option enables support for the AMD CS5536
58905 - companion chip used with the Geode LX processor family.
58906 -
58907 - If unsure, say N.
58908 -
58909 config BLK_DEV_HPT366
58910 tristate "HPT36X/37X chipset support"
58911 select BLK_DEV_IDEDMA_PCI
58912 @@ -721,11 +711,6 @@
58913 depends on SOC_TX4939
58914 select BLK_DEV_IDEDMA_SFF
58915
58916 -config BLK_DEV_IDE_AT91
58917 - tristate "Atmel AT91 (SAM9, CAP9, AT572D940HF) IDE support"
58918 - depends on ARM && ARCH_AT91 && !ARCH_AT91RM9200 && !ARCH_AT91X40
58919 - select IDE_TIMINGS
58920 -
58921 config IDE_ARM
58922 tristate "ARM IDE support"
58923 depends on ARM && (ARCH_RPC || ARCH_SHARK)
58924 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/Makefile linux-2.6.29-rc3.owrt/drivers/ide/Makefile
58925 --- linux-2.6.29.owrt/drivers/ide/Makefile 2009-05-10 22:04:39.000000000 +0200
58926 +++ linux-2.6.29-rc3.owrt/drivers/ide/Makefile 2009-05-10 23:48:28.000000000 +0200
58927 @@ -43,7 +43,6 @@
58928 obj-$(CONFIG_BLK_DEV_CS5520) += cs5520.o
58929 obj-$(CONFIG_BLK_DEV_CS5530) += cs5530.o
58930 obj-$(CONFIG_BLK_DEV_CS5535) += cs5535.o
58931 -obj-$(CONFIG_BLK_DEV_CS5536) += cs5536.o
58932 obj-$(CONFIG_BLK_DEV_SC1200) += sc1200.o
58933 obj-$(CONFIG_BLK_DEV_CY82C693) += cy82c693.o
58934 obj-$(CONFIG_BLK_DEV_DELKIN) += delkin_cb.o
58935 @@ -116,4 +115,3 @@
58936
58937 obj-$(CONFIG_BLK_DEV_IDE_TX4938) += tx4938ide.o
58938 obj-$(CONFIG_BLK_DEV_IDE_TX4939) += tx4939ide.o
58939 -obj-$(CONFIG_BLK_DEV_IDE_AT91) += at91_ide.o
58940 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/qd65xx.c linux-2.6.29-rc3.owrt/drivers/ide/qd65xx.c
58941 --- linux-2.6.29.owrt/drivers/ide/qd65xx.c 2009-05-10 22:04:39.000000000 +0200
58942 +++ linux-2.6.29-rc3.owrt/drivers/ide/qd65xx.c 2009-05-10 23:48:28.000000000 +0200
58943 @@ -16,7 +16,7 @@
58944
58945 /*
58946 * Rewritten from the work of Colten Edwards <pje120@cs.usask.ca> by
58947 - * Samuel Thibault <samuel.thibault@ens-lyon.org>
58948 + * Samuel Thibault <samuel.thibault@fnac.net>
58949 */
58950
58951 #include <linux/module.h>
58952 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/qd65xx.h linux-2.6.29-rc3.owrt/drivers/ide/qd65xx.h
58953 --- linux-2.6.29.owrt/drivers/ide/qd65xx.h 2009-05-10 22:04:39.000000000 +0200
58954 +++ linux-2.6.29-rc3.owrt/drivers/ide/qd65xx.h 2009-05-10 23:48:28.000000000 +0200
58955 @@ -4,7 +4,7 @@
58956
58957 /*
58958 * Authors: Petr Soucek <petr@ryston.cz>
58959 - * Samuel Thibault <samuel.thibault@ens-lyon.org>
58960 + * Samuel Thibault <samuel.thibault@fnac.net>
58961 */
58962
58963 /* truncates a in [b,c] */
58964 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/tx4939ide.c linux-2.6.29-rc3.owrt/drivers/ide/tx4939ide.c
58965 --- linux-2.6.29.owrt/drivers/ide/tx4939ide.c 2009-05-10 22:04:39.000000000 +0200
58966 +++ linux-2.6.29-rc3.owrt/drivers/ide/tx4939ide.c 2009-05-10 23:48:28.000000000 +0200
58967 @@ -261,9 +261,9 @@
58968 bcount = cur_len;
58969 /*
58970 * This workaround for zero count seems required.
58971 - * (standard ide_build_dmatable does it too)
58972 + * (standard ide_build_dmatable do it too)
58973 */
58974 - if (bcount == 0x10000)
58975 + if ((bcount & 0xffff) == 0x0000)
58976 bcount = 0x8000;
58977 *table++ = bcount & 0xffff;
58978 *table++ = cur_addr;
58979 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ide/via82cxxx.c linux-2.6.29-rc3.owrt/drivers/ide/via82cxxx.c
58980 --- linux-2.6.29.owrt/drivers/ide/via82cxxx.c 2009-05-10 22:04:39.000000000 +0200
58981 +++ linux-2.6.29-rc3.owrt/drivers/ide/via82cxxx.c 2009-05-10 23:48:28.000000000 +0200
58982 @@ -448,11 +448,6 @@
58983 d.host_flags |= IDE_HFLAG_FORCE_LEGACY_IRQS;
58984 #endif
58985
58986 -#ifdef CONFIG_AMIGAONE
58987 - if (machine_is(amigaone))
58988 - d.host_flags |= IDE_HFLAG_FORCE_LEGACY_IRQS;
58989 -#endif
58990 -
58991 d.udma_mask = via_config->udma_mask;
58992
58993 vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);
58994 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/dma.h linux-2.6.29-rc3.owrt/drivers/ieee1394/dma.h
58995 --- linux-2.6.29.owrt/drivers/ieee1394/dma.h 2009-05-10 22:04:38.000000000 +0200
58996 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/dma.h 2009-05-10 23:48:28.000000000 +0200
58997 @@ -12,7 +12,6 @@
58998
58999 #include <asm/types.h>
59000
59001 -struct file;
59002 struct pci_dev;
59003 struct scatterlist;
59004 struct vm_area_struct;
59005 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/dv1394.c linux-2.6.29-rc3.owrt/drivers/ieee1394/dv1394.c
59006 --- linux-2.6.29.owrt/drivers/ieee1394/dv1394.c 2009-05-10 22:04:38.000000000 +0200
59007 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/dv1394.c 2009-05-10 23:48:28.000000000 +0200
59008 @@ -1823,10 +1823,6 @@
59009
59010 #endif
59011
59012 - printk(KERN_INFO "%s: NOTE, the dv1394 interface is unsupported "
59013 - "and will not be available in the new firewire driver stack. "
59014 - "Try libraw1394 based programs instead.\n", current->comm);
59015 -
59016 return 0;
59017 }
59018
59019 @@ -2571,6 +2567,10 @@
59020 {
59021 int ret;
59022
59023 + printk(KERN_WARNING
59024 + "NOTE: The dv1394 driver is unsupported and may be removed in a "
59025 + "future Linux release. Use raw1394 instead.\n");
59026 +
59027 cdev_init(&dv1394_cdev, &dv1394_fops);
59028 dv1394_cdev.owner = THIS_MODULE;
59029 ret = cdev_add(&dv1394_cdev, IEEE1394_DV1394_DEV, 16);
59030 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/ieee1394_core.c linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394_core.c
59031 --- linux-2.6.29.owrt/drivers/ieee1394/ieee1394_core.c 2009-05-10 22:04:38.000000000 +0200
59032 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394_core.c 2009-05-10 23:48:28.000000000 +0200
59033 @@ -338,7 +338,6 @@
59034 u8 cldcnt[nodecount];
59035 u8 *map = host->speed_map;
59036 u8 *speedcap = host->speed;
59037 - u8 local_link_speed = host->csr.lnk_spd;
59038 struct selfid *sid;
59039 struct ext_selfid *esid;
59040 int i, j, n;
59041 @@ -374,8 +373,8 @@
59042 if (sid->port2 == SELFID_PORT_CHILD) cldcnt[n]++;
59043
59044 speedcap[n] = sid->speed;
59045 - if (speedcap[n] > local_link_speed)
59046 - speedcap[n] = local_link_speed;
59047 + if (speedcap[n] > host->csr.lnk_spd)
59048 + speedcap[n] = host->csr.lnk_spd;
59049 n--;
59050 }
59051 }
59052 @@ -408,11 +407,12 @@
59053 }
59054 }
59055
59056 - /* assume a maximum speed for 1394b PHYs, nodemgr will correct it */
59057 - if (local_link_speed > SELFID_SPEED_UNKNOWN)
59058 - for (i = 0; i < nodecount; i++)
59059 - if (speedcap[i] == SELFID_SPEED_UNKNOWN)
59060 - speedcap[i] = local_link_speed;
59061 +#if SELFID_SPEED_UNKNOWN != IEEE1394_SPEED_MAX
59062 + /* assume maximum speed for 1394b PHYs, nodemgr will correct it */
59063 + for (n = 0; n < nodecount; n++)
59064 + if (speedcap[n] == SELFID_SPEED_UNKNOWN)
59065 + speedcap[n] = IEEE1394_SPEED_MAX;
59066 +#endif
59067 }
59068
59069
59070 @@ -1275,7 +1275,7 @@
59071 unregister_chrdev_region(IEEE1394_CORE_DEV, 256);
59072 }
59073
59074 -fs_initcall(ieee1394_init);
59075 +module_init(ieee1394_init);
59076 module_exit(ieee1394_cleanup);
59077
59078 /* Exported symbols */
59079 @@ -1314,7 +1314,6 @@
59080 EXPORT_SYMBOL(hpsb_make_phypacket);
59081 EXPORT_SYMBOL(hpsb_read);
59082 EXPORT_SYMBOL(hpsb_write);
59083 -EXPORT_SYMBOL(hpsb_lock);
59084 EXPORT_SYMBOL(hpsb_packet_success);
59085
59086 /** highlevel.c **/
59087 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/ieee1394.h linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394.h
59088 --- linux-2.6.29.owrt/drivers/ieee1394/ieee1394.h 2009-05-10 22:04:38.000000000 +0200
59089 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394.h 2009-05-10 23:48:28.000000000 +0200
59090 @@ -54,7 +54,9 @@
59091 #define IEEE1394_SPEED_800 0x03
59092 #define IEEE1394_SPEED_1600 0x04
59093 #define IEEE1394_SPEED_3200 0x05
59094 -#define IEEE1394_SPEED_MAX IEEE1394_SPEED_3200
59095 +
59096 +/* The current highest tested speed supported by the subsystem */
59097 +#define IEEE1394_SPEED_MAX IEEE1394_SPEED_800
59098
59099 /* Maps speed values above to a string representation */
59100 extern const char *hpsb_speedto_str[];
59101 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/ieee1394_transactions.c linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394_transactions.c
59102 --- linux-2.6.29.owrt/drivers/ieee1394/ieee1394_transactions.c 2009-05-10 22:04:38.000000000 +0200
59103 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394_transactions.c 2009-05-10 23:48:28.000000000 +0200
59104 @@ -501,6 +501,8 @@
59105 if (length == 0)
59106 return -EINVAL;
59107
59108 + BUG_ON(in_interrupt()); // We can't be called in an interrupt, yet
59109 +
59110 packet = hpsb_make_readpacket(host, node, addr, length);
59111
59112 if (!packet) {
59113 @@ -548,6 +550,8 @@
59114 if (length == 0)
59115 return -EINVAL;
59116
59117 + BUG_ON(in_interrupt()); // We can't be called in an interrupt, yet
59118 +
59119 packet = hpsb_make_writepacket(host, node, addr, buffer, length);
59120
59121 if (!packet)
59122 @@ -566,30 +570,3 @@
59123
59124 return retval;
59125 }
59126 -
59127 -int hpsb_lock(struct hpsb_host *host, nodeid_t node, unsigned int generation,
59128 - u64 addr, int extcode, quadlet_t *data, quadlet_t arg)
59129 -{
59130 - struct hpsb_packet *packet;
59131 - int retval = 0;
59132 -
59133 - packet = hpsb_make_lockpacket(host, node, addr, extcode, data, arg);
59134 - if (!packet)
59135 - return -ENOMEM;
59136 -
59137 - packet->generation = generation;
59138 - retval = hpsb_send_packet_and_wait(packet);
59139 - if (retval < 0)
59140 - goto hpsb_lock_fail;
59141 -
59142 - retval = hpsb_packet_success(packet);
59143 -
59144 - if (retval == 0)
59145 - *data = packet->data[0];
59146 -
59147 -hpsb_lock_fail:
59148 - hpsb_free_tlabel(packet);
59149 - hpsb_free_packet(packet);
59150 -
59151 - return retval;
59152 -}
59153 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/ieee1394_transactions.h linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394_transactions.h
59154 --- linux-2.6.29.owrt/drivers/ieee1394/ieee1394_transactions.h 2009-05-10 22:04:38.000000000 +0200
59155 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/ieee1394_transactions.h 2009-05-10 23:48:28.000000000 +0200
59156 @@ -30,8 +30,6 @@
59157 u64 addr, quadlet_t *buffer, size_t length);
59158 int hpsb_write(struct hpsb_host *host, nodeid_t node, unsigned int generation,
59159 u64 addr, quadlet_t *buffer, size_t length);
59160 -int hpsb_lock(struct hpsb_host *host, nodeid_t node, unsigned int generation,
59161 - u64 addr, int extcode, quadlet_t *data, quadlet_t arg);
59162
59163 #ifdef HPSB_DEBUG_TLABELS
59164 extern spinlock_t hpsb_tlabel_lock;
59165 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/iso.h linux-2.6.29-rc3.owrt/drivers/ieee1394/iso.h
59166 --- linux-2.6.29.owrt/drivers/ieee1394/iso.h 2009-05-10 22:04:38.000000000 +0200
59167 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/iso.h 2009-05-10 23:48:28.000000000 +0200
59168 @@ -13,7 +13,6 @@
59169 #define IEEE1394_ISO_H
59170
59171 #include <linux/spinlock_types.h>
59172 -#include <linux/wait.h>
59173 #include <asm/atomic.h>
59174 #include <asm/types.h>
59175
59176 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/nodemgr.c linux-2.6.29-rc3.owrt/drivers/ieee1394/nodemgr.c
59177 --- linux-2.6.29.owrt/drivers/ieee1394/nodemgr.c 2009-05-10 22:04:38.000000000 +0200
59178 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/nodemgr.c 2009-05-10 23:48:28.000000000 +0200
59179 @@ -971,9 +971,6 @@
59180 ud->ud_kv = ud_kv;
59181 ud->id = (*id)++;
59182
59183 - /* inherit vendor_id from root directory if none exists in unit dir */
59184 - ud->vendor_id = ne->vendor_id;
59185 -
59186 csr1212_for_each_dir_entry(ne->csr, kv, ud_kv, dentry) {
59187 switch (kv->key.id) {
59188 case CSR1212_KV_ID_VENDOR:
59189 @@ -1268,8 +1265,7 @@
59190 csr1212_destroy_csr(csr);
59191 }
59192
59193 - /* Finally, mark the node current */
59194 - smp_wmb();
59195 + /* Mark the node current */
59196 ne->generation = generation;
59197
59198 if (ne->in_limbo) {
59199 @@ -1802,7 +1798,7 @@
59200 {
59201 packet->host = ne->host;
59202 packet->generation = ne->generation;
59203 - smp_rmb();
59204 + barrier();
59205 packet->node_id = ne->nodeid;
59206 }
59207
59208 @@ -1811,7 +1807,7 @@
59209 {
59210 unsigned int generation = ne->generation;
59211
59212 - smp_rmb();
59213 + barrier();
59214 return hpsb_write(ne->host, ne->nodeid, generation,
59215 addr, buffer, length);
59216 }
59217 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/nodemgr.h linux-2.6.29-rc3.owrt/drivers/ieee1394/nodemgr.h
59218 --- linux-2.6.29.owrt/drivers/ieee1394/nodemgr.h 2009-05-10 22:04:38.000000000 +0200
59219 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/nodemgr.h 2009-05-10 23:48:28.000000000 +0200
59220 @@ -21,11 +21,9 @@
59221 #define _IEEE1394_NODEMGR_H
59222
59223 #include <linux/device.h>
59224 -#include <asm/system.h>
59225 #include <asm/types.h>
59226
59227 #include "ieee1394_core.h"
59228 -#include "ieee1394_transactions.h"
59229 #include "ieee1394_types.h"
59230
59231 struct csr1212_csr;
59232 @@ -156,22 +154,6 @@
59233 void hpsb_node_fill_packet(struct node_entry *ne, struct hpsb_packet *packet);
59234 int hpsb_node_write(struct node_entry *ne, u64 addr,
59235 quadlet_t *buffer, size_t length);
59236 -static inline int hpsb_node_read(struct node_entry *ne, u64 addr,
59237 - quadlet_t *buffer, size_t length)
59238 -{
59239 - unsigned int g = ne->generation;
59240 -
59241 - smp_rmb();
59242 - return hpsb_read(ne->host, ne->nodeid, g, addr, buffer, length);
59243 -}
59244 -static inline int hpsb_node_lock(struct node_entry *ne, u64 addr, int extcode,
59245 - quadlet_t *buffer, quadlet_t arg)
59246 -{
59247 - unsigned int g = ne->generation;
59248 -
59249 - smp_rmb();
59250 - return hpsb_lock(ne->host, ne->nodeid, g, addr, extcode, buffer, arg);
59251 -}
59252 int nodemgr_for_each_host(void *data, int (*cb)(struct hpsb_host *, void *));
59253
59254 int init_ieee1394_nodemgr(void);
59255 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/ohci1394.h linux-2.6.29-rc3.owrt/drivers/ieee1394/ohci1394.h
59256 --- linux-2.6.29.owrt/drivers/ieee1394/ohci1394.h 2009-05-10 22:04:38.000000000 +0200
59257 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/ohci1394.h 2009-05-10 23:48:28.000000000 +0200
59258 @@ -26,7 +26,7 @@
59259
59260 #define OHCI1394_DRIVER_NAME "ohci1394"
59261
59262 -#define OHCI1394_MAX_AT_REQ_RETRIES 0xf
59263 +#define OHCI1394_MAX_AT_REQ_RETRIES 0x2
59264 #define OHCI1394_MAX_AT_RESP_RETRIES 0x2
59265 #define OHCI1394_MAX_PHYS_RESP_RETRIES 0x8
59266 #define OHCI1394_MAX_SELF_ID_ERRORS 16
59267 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/ieee1394/sbp2.c linux-2.6.29-rc3.owrt/drivers/ieee1394/sbp2.c
59268 --- linux-2.6.29.owrt/drivers/ieee1394/sbp2.c 2009-05-10 22:04:38.000000000 +0200
59269 +++ linux-2.6.29-rc3.owrt/drivers/ieee1394/sbp2.c 2009-05-10 23:48:28.000000000 +0200
59270 @@ -115,8 +115,8 @@
59271 */
59272 static int sbp2_max_speed = IEEE1394_SPEED_MAX;
59273 module_param_named(max_speed, sbp2_max_speed, int, 0644);
59274 -MODULE_PARM_DESC(max_speed, "Limit data transfer speed (5 <= 3200, "
59275 - "4 <= 1600, 3 <= 800, 2 <= 400, 1 <= 200, 0 = 100 Mb/s)");
59276 +MODULE_PARM_DESC(max_speed, "Force max speed "
59277 + "(3 = 800Mb/s, 2 = 400Mb/s, 1 = 200Mb/s, 0 = 100Mb/s)");
59278
59279 /*
59280 * Set serialize_io to 0 or N to use dynamically appended lists of command ORBs.
59281 @@ -256,7 +256,7 @@
59282 static int sbp2_max_speed_and_size(struct sbp2_lu *);
59283
59284
59285 -static const u8 sbp2_speedto_max_payload[] = { 0x7, 0x8, 0x9, 0xa, 0xa, 0xa };
59286 +static const u8 sbp2_speedto_max_payload[] = { 0x7, 0x8, 0x9, 0xA, 0xB, 0xC };
59287
59288 static DEFINE_RWLOCK(sbp2_hi_logical_units_lock);
59289
59290 @@ -347,8 +347,8 @@
59291 .sdev_attrs = sbp2_sysfs_sdev_attrs,
59292 };
59293
59294 -#define SBP2_ROM_VALUE_WILDCARD ~0 /* match all */
59295 -#define SBP2_ROM_VALUE_MISSING 0xff000000 /* not present in the unit dir. */
59296 +/* for match-all entries in sbp2_workarounds_table */
59297 +#define SBP2_ROM_VALUE_WILDCARD 0x1000000
59298
59299 /*
59300 * List of devices with known bugs.
59301 @@ -359,70 +359,60 @@
59302 */
59303 static const struct {
59304 u32 firmware_revision;
59305 - u32 model;
59306 + u32 model_id;
59307 unsigned workarounds;
59308 } sbp2_workarounds_table[] = {
59309 /* DViCO Momobay CX-1 with TSB42AA9 bridge */ {
59310 .firmware_revision = 0x002800,
59311 - .model = 0x001010,
59312 + .model_id = 0x001010,
59313 .workarounds = SBP2_WORKAROUND_INQUIRY_36 |
59314 SBP2_WORKAROUND_MODE_SENSE_8 |
59315 SBP2_WORKAROUND_POWER_CONDITION,
59316 },
59317 /* DViCO Momobay FX-3A with TSB42AA9A bridge */ {
59318 .firmware_revision = 0x002800,
59319 - .model = 0x000000,
59320 + .model_id = 0x000000,
59321 .workarounds = SBP2_WORKAROUND_DELAY_INQUIRY |
59322 SBP2_WORKAROUND_POWER_CONDITION,
59323 },
59324 /* Initio bridges, actually only needed for some older ones */ {
59325 .firmware_revision = 0x000200,
59326 - .model = SBP2_ROM_VALUE_WILDCARD,
59327 + .model_id = SBP2_ROM_VALUE_WILDCARD,
59328 .workarounds = SBP2_WORKAROUND_INQUIRY_36,
59329 },
59330 /* PL-3507 bridge with Prolific firmware */ {
59331 .firmware_revision = 0x012800,
59332 - .model = SBP2_ROM_VALUE_WILDCARD,
59333 + .model_id = SBP2_ROM_VALUE_WILDCARD,
59334 .workarounds = SBP2_WORKAROUND_POWER_CONDITION,
59335 },
59336 /* Symbios bridge */ {
59337 .firmware_revision = 0xa0b800,
59338 - .model = SBP2_ROM_VALUE_WILDCARD,
59339 + .model_id = SBP2_ROM_VALUE_WILDCARD,
59340 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
59341 },
59342 /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ {
59343 .firmware_revision = 0x002600,
59344 - .model = SBP2_ROM_VALUE_WILDCARD,
59345 + .model_id = SBP2_ROM_VALUE_WILDCARD,
59346 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,
59347 },
59348 - /*
59349 - * iPod 2nd generation: needs 128k max transfer size workaround
59350 - * iPod 3rd generation: needs fix capacity workaround
59351 - */
59352 - {
59353 - .firmware_revision = 0x0a2700,
59354 - .model = 0x000000,
59355 - .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS |
59356 - SBP2_WORKAROUND_FIX_CAPACITY,
59357 - },
59358 /* iPod 4th generation */ {
59359 .firmware_revision = 0x0a2700,
59360 - .model = 0x000021,
59361 + .model_id = 0x000021,
59362 .workarounds = SBP2_WORKAROUND_FIX_CAPACITY,
59363 },
59364 /* iPod mini */ {
59365 .firmware_revision = 0x0a2700,
59366 - .model = 0x000022,
59367 + .model_id = 0x000022,
59368 .workarounds = SBP2_WORKAROUND_FIX_CAPACITY,
59369 },
59370 /* iPod mini */ {
59371 .firmware_revision = 0x0a2700,
59372 - .model = 0x000023,
59373 + .model_id = 0x000023,
59374 .workarounds = SBP2_WORKAROUND_FIX_CAPACITY,
59375 },
59376 /* iPod Photo */ {
59377 .firmware_revision = 0x0a2700,
59378 - .model = 0x00007e,
59379 + .model_id = 0x00007e,
59380 .workarounds = SBP2_WORKAROUND_FIX_CAPACITY,
59381 }
59382 };
59383 @@ -1351,15 +1341,13 @@
59384 struct csr1212_keyval *kv;
59385 struct csr1212_dentry *dentry;
59386 u64 management_agent_addr;
59387 - u32 unit_characteristics, firmware_revision, model;
59388 + u32 unit_characteristics, firmware_revision;
59389 unsigned workarounds;
59390 int i;
59391
59392 management_agent_addr = 0;
59393 unit_characteristics = 0;
59394 - firmware_revision = SBP2_ROM_VALUE_MISSING;
59395 - model = ud->flags & UNIT_DIRECTORY_MODEL_ID ?
59396 - ud->model_id : SBP2_ROM_VALUE_MISSING;
59397 + firmware_revision = 0;
59398
59399 csr1212_for_each_dir_entry(ud->ne->csr, kv, ud->ud_kv, dentry) {
59400 switch (kv->key.id) {
59401 @@ -1400,9 +1388,9 @@
59402 sbp2_workarounds_table[i].firmware_revision !=
59403 (firmware_revision & 0xffff00))
59404 continue;
59405 - if (sbp2_workarounds_table[i].model !=
59406 + if (sbp2_workarounds_table[i].model_id !=
59407 SBP2_ROM_VALUE_WILDCARD &&
59408 - sbp2_workarounds_table[i].model != model)
59409 + sbp2_workarounds_table[i].model_id != ud->model_id)
59410 continue;
59411 workarounds |= sbp2_workarounds_table[i].workarounds;
59412 break;
59413 @@ -1415,7 +1403,7 @@
59414 NODE_BUS_ARGS(ud->ne->host, ud->ne->nodeid),
59415 workarounds, firmware_revision,
59416 ud->vendor_id ? ud->vendor_id : ud->ne->vendor_id,
59417 - model);
59418 + ud->model_id);
59419
59420 /* We would need one SCSI host template for each target to adjust
59421 * max_sectors on the fly, therefore warn only. */
59422 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/infiniband/hw/nes/nes_cm.c linux-2.6.29-rc3.owrt/drivers/infiniband/hw/nes/nes_cm.c
59423 --- linux-2.6.29.owrt/drivers/infiniband/hw/nes/nes_cm.c 2009-05-10 22:04:38.000000000 +0200
59424 +++ linux-2.6.29-rc3.owrt/drivers/infiniband/hw/nes/nes_cm.c 2009-05-10 23:48:28.000000000 +0200
59425 @@ -2490,14 +2490,12 @@
59426 int ret = 0;
59427 struct nes_vnic *nesvnic;
59428 struct nes_device *nesdev;
59429 - struct nes_ib_device *nesibdev;
59430
59431 nesvnic = to_nesvnic(nesqp->ibqp.device);
59432 if (!nesvnic)
59433 return -EINVAL;
59434
59435 nesdev = nesvnic->nesdev;
59436 - nesibdev = nesvnic->nesibdev;
59437
59438 nes_debug(NES_DBG_CM, "netdev refcnt = %u.\n",
59439 atomic_read(&nesvnic->netdev->refcnt));
59440 @@ -2509,8 +2507,6 @@
59441 } else {
59442 /* Need to free the Last Streaming Mode Message */
59443 if (nesqp->ietf_frame) {
59444 - if (nesqp->lsmm_mr)
59445 - nesibdev->ibdev.dereg_mr(nesqp->lsmm_mr);
59446 pci_free_consistent(nesdev->pcidev,
59447 nesqp->private_data_len+sizeof(struct ietf_mpa_frame),
59448 nesqp->ietf_frame, nesqp->ietf_frame_pbase);
59449 @@ -2547,12 +2543,6 @@
59450 u32 crc_value;
59451 int ret;
59452 int passive_state;
59453 - struct nes_ib_device *nesibdev;
59454 - struct ib_mr *ibmr = NULL;
59455 - struct ib_phys_buf ibphysbuf;
59456 - struct nes_pd *nespd;
59457 -
59458 -
59459
59460 ibqp = nes_get_qp(cm_id->device, conn_param->qpn);
59461 if (!ibqp)
59462 @@ -2611,26 +2601,6 @@
59463 if (cm_id->remote_addr.sin_addr.s_addr !=
59464 cm_id->local_addr.sin_addr.s_addr) {
59465 u64temp = (unsigned long)nesqp;
59466 - nesibdev = nesvnic->nesibdev;
59467 - nespd = nesqp->nespd;
59468 - ibphysbuf.addr = nesqp->ietf_frame_pbase;
59469 - ibphysbuf.size = conn_param->private_data_len +
59470 - sizeof(struct ietf_mpa_frame);
59471 - ibmr = nesibdev->ibdev.reg_phys_mr((struct ib_pd *)nespd,
59472 - &ibphysbuf, 1,
59473 - IB_ACCESS_LOCAL_WRITE,
59474 - (u64 *)&nesqp->ietf_frame);
59475 - if (!ibmr) {
59476 - nes_debug(NES_DBG_CM, "Unable to register memory region"
59477 - "for lSMM for cm_node = %p \n",
59478 - cm_node);
59479 - return -ENOMEM;
59480 - }
59481 -
59482 - ibmr->pd = &nespd->ibpd;
59483 - ibmr->device = nespd->ibpd.device;
59484 - nesqp->lsmm_mr = ibmr;
59485 -
59486 u64temp |= NES_SW_CONTEXT_ALIGN>>1;
59487 set_wqe_64bit_value(wqe->wqe_words,
59488 NES_IWARP_SQ_WQE_COMP_CTX_LOW_IDX,
59489 @@ -2641,13 +2611,14 @@
59490 wqe->wqe_words[NES_IWARP_SQ_WQE_TOTAL_PAYLOAD_IDX] =
59491 cpu_to_le32(conn_param->private_data_len +
59492 sizeof(struct ietf_mpa_frame));
59493 - set_wqe_64bit_value(wqe->wqe_words,
59494 - NES_IWARP_SQ_WQE_FRAG0_LOW_IDX,
59495 - (u64)nesqp->ietf_frame);
59496 + wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_LOW_IDX] =
59497 + cpu_to_le32((u32)nesqp->ietf_frame_pbase);
59498 + wqe->wqe_words[NES_IWARP_SQ_WQE_FRAG0_HIGH_IDX] =
59499 + cpu_to_le32((u32)((u64)nesqp->ietf_frame_pbase >> 32));
59500 wqe->wqe_words[NES_IWARP_SQ_WQE_LENGTH0_IDX] =
59501 cpu_to_le32(conn_param->private_data_len +
59502 sizeof(struct ietf_mpa_frame));
59503 - wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = ibmr->lkey;
59504 + wqe->wqe_words[NES_IWARP_SQ_WQE_STAG0_IDX] = 0;
59505
59506 nesqp->nesqp_context->ird_ord_sizes |=
59507 cpu_to_le32(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT |
59508 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/infiniband/hw/nes/nes_verbs.c linux-2.6.29-rc3.owrt/drivers/infiniband/hw/nes/nes_verbs.c
59509 --- linux-2.6.29.owrt/drivers/infiniband/hw/nes/nes_verbs.c 2009-05-10 22:04:38.000000000 +0200
59510 +++ linux-2.6.29-rc3.owrt/drivers/infiniband/hw/nes/nes_verbs.c 2009-05-10 23:48:28.000000000 +0200
59511 @@ -1360,10 +1360,8 @@
59512 NES_QPCONTEXT_MISC_RQ_SIZE_SHIFT);
59513 nesqp->nesqp_context->misc |= cpu_to_le32((u32)nesqp->hwqp.sq_encoded_size <<
59514 NES_QPCONTEXT_MISC_SQ_SIZE_SHIFT);
59515 - if (!udata) {
59516 nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_PRIV_EN);
59517 nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_FAST_REGISTER_EN);
59518 - }
59519 nesqp->nesqp_context->cqs = cpu_to_le32(nesqp->nesscq->hw_cq.cq_number +
59520 ((u32)nesqp->nesrcq->hw_cq.cq_number << 16));
59521 u64temp = (u64)nesqp->hwqp.sq_pbase;
59522 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/infiniband/hw/nes/nes_verbs.h linux-2.6.29-rc3.owrt/drivers/infiniband/hw/nes/nes_verbs.h
59523 --- linux-2.6.29.owrt/drivers/infiniband/hw/nes/nes_verbs.h 2009-05-10 22:04:38.000000000 +0200
59524 +++ linux-2.6.29-rc3.owrt/drivers/infiniband/hw/nes/nes_verbs.h 2009-05-10 23:48:28.000000000 +0200
59525 @@ -134,7 +134,6 @@
59526 struct ietf_mpa_frame *ietf_frame;
59527 dma_addr_t ietf_frame_pbase;
59528 wait_queue_head_t state_waitq;
59529 - struct ib_mr *lsmm_mr;
59530 unsigned long socket;
59531 struct nes_hw_qp hwqp;
59532 struct work_struct work;
59533 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/keyboard/atkbd.c linux-2.6.29-rc3.owrt/drivers/input/keyboard/atkbd.c
59534 --- linux-2.6.29.owrt/drivers/input/keyboard/atkbd.c 2009-05-10 22:04:39.000000000 +0200
59535 +++ linux-2.6.29-rc3.owrt/drivers/input/keyboard/atkbd.c 2009-05-10 23:48:28.000000000 +0200
59536 @@ -839,7 +839,7 @@
59537 */
59538 static void atkbd_dell_laptop_keymap_fixup(struct atkbd *atkbd)
59539 {
59540 - static const unsigned int forced_release_keys[] = {
59541 + const unsigned int forced_release_keys[] = {
59542 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8f, 0x93,
59543 };
59544 int i;
59545 @@ -856,7 +856,7 @@
59546 */
59547 static void atkbd_hp_keymap_fixup(struct atkbd *atkbd)
59548 {
59549 - static const unsigned int forced_release_keys[] = {
59550 + const unsigned int forced_release_keys[] = {
59551 0x94,
59552 };
59553 int i;
59554 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/keyboard/bf54x-keys.c linux-2.6.29-rc3.owrt/drivers/input/keyboard/bf54x-keys.c
59555 --- linux-2.6.29.owrt/drivers/input/keyboard/bf54x-keys.c 2009-05-10 22:04:39.000000000 +0200
59556 +++ linux-2.6.29-rc3.owrt/drivers/input/keyboard/bf54x-keys.c 2009-05-10 23:48:28.000000000 +0200
59557 @@ -209,8 +209,8 @@
59558 goto out;
59559 }
59560
59561 - if (!pdata->debounce_time || pdata->debounce_time > MAX_MULT ||
59562 - !pdata->coldrive_time || pdata->coldrive_time > MAX_MULT) {
59563 + if (!pdata->debounce_time || !pdata->debounce_time > MAX_MULT ||
59564 + !pdata->coldrive_time || !pdata->coldrive_time > MAX_MULT) {
59565 printk(KERN_ERR DRV_NAME
59566 ": Invalid Debounce/Columdrive Time from pdata\n");
59567 bfin_write_KPAD_MSEL(0xFF0); /* Default MSEL */
59568 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/keyboard/corgikbd.c linux-2.6.29-rc3.owrt/drivers/input/keyboard/corgikbd.c
59569 --- linux-2.6.29.owrt/drivers/input/keyboard/corgikbd.c 2009-05-10 22:04:39.000000000 +0200
59570 +++ linux-2.6.29-rc3.owrt/drivers/input/keyboard/corgikbd.c 2009-05-10 23:48:28.000000000 +0200
59571 @@ -288,7 +288,7 @@
59572 #define corgikbd_resume NULL
59573 #endif
59574
59575 -static int __devinit corgikbd_probe(struct platform_device *pdev)
59576 +static int __init corgikbd_probe(struct platform_device *pdev)
59577 {
59578 struct corgikbd *corgikbd;
59579 struct input_dev *input_dev;
59580 @@ -368,7 +368,7 @@
59581 return err;
59582 }
59583
59584 -static int __devexit corgikbd_remove(struct platform_device *pdev)
59585 +static int corgikbd_remove(struct platform_device *pdev)
59586 {
59587 int i;
59588 struct corgikbd *corgikbd = platform_get_drvdata(pdev);
59589 @@ -388,7 +388,7 @@
59590
59591 static struct platform_driver corgikbd_driver = {
59592 .probe = corgikbd_probe,
59593 - .remove = __devexit_p(corgikbd_remove),
59594 + .remove = corgikbd_remove,
59595 .suspend = corgikbd_suspend,
59596 .resume = corgikbd_resume,
59597 .driver = {
59598 @@ -397,7 +397,7 @@
59599 },
59600 };
59601
59602 -static int __init corgikbd_init(void)
59603 +static int __devinit corgikbd_init(void)
59604 {
59605 return platform_driver_register(&corgikbd_driver);
59606 }
59607 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/keyboard/omap-keypad.c linux-2.6.29-rc3.owrt/drivers/input/keyboard/omap-keypad.c
59608 --- linux-2.6.29.owrt/drivers/input/keyboard/omap-keypad.c 2009-05-10 22:04:39.000000000 +0200
59609 +++ linux-2.6.29-rc3.owrt/drivers/input/keyboard/omap-keypad.c 2009-05-10 23:48:28.000000000 +0200
59610 @@ -279,7 +279,7 @@
59611 #define omap_kp_resume NULL
59612 #endif
59613
59614 -static int __devinit omap_kp_probe(struct platform_device *pdev)
59615 +static int __init omap_kp_probe(struct platform_device *pdev)
59616 {
59617 struct omap_kp *omap_kp;
59618 struct input_dev *input_dev;
59619 @@ -422,7 +422,7 @@
59620 return -EINVAL;
59621 }
59622
59623 -static int __devexit omap_kp_remove(struct platform_device *pdev)
59624 +static int omap_kp_remove(struct platform_device *pdev)
59625 {
59626 struct omap_kp *omap_kp = platform_get_drvdata(pdev);
59627
59628 @@ -454,7 +454,7 @@
59629
59630 static struct platform_driver omap_kp_driver = {
59631 .probe = omap_kp_probe,
59632 - .remove = __devexit_p(omap_kp_remove),
59633 + .remove = omap_kp_remove,
59634 .suspend = omap_kp_suspend,
59635 .resume = omap_kp_resume,
59636 .driver = {
59637 @@ -463,7 +463,7 @@
59638 },
59639 };
59640
59641 -static int __init omap_kp_init(void)
59642 +static int __devinit omap_kp_init(void)
59643 {
59644 printk(KERN_INFO "OMAP Keypad Driver\n");
59645 return platform_driver_register(&omap_kp_driver);
59646 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/keyboard/spitzkbd.c linux-2.6.29-rc3.owrt/drivers/input/keyboard/spitzkbd.c
59647 --- linux-2.6.29.owrt/drivers/input/keyboard/spitzkbd.c 2009-05-10 22:04:39.000000000 +0200
59648 +++ linux-2.6.29-rc3.owrt/drivers/input/keyboard/spitzkbd.c 2009-05-10 23:48:28.000000000 +0200
59649 @@ -343,7 +343,7 @@
59650 #define spitzkbd_resume NULL
59651 #endif
59652
59653 -static int __devinit spitzkbd_probe(struct platform_device *dev)
59654 +static int __init spitzkbd_probe(struct platform_device *dev)
59655 {
59656 struct spitzkbd *spitzkbd;
59657 struct input_dev *input_dev;
59658 @@ -444,7 +444,7 @@
59659 return err;
59660 }
59661
59662 -static int __devexit spitzkbd_remove(struct platform_device *dev)
59663 +static int spitzkbd_remove(struct platform_device *dev)
59664 {
59665 int i;
59666 struct spitzkbd *spitzkbd = platform_get_drvdata(dev);
59667 @@ -470,7 +470,7 @@
59668
59669 static struct platform_driver spitzkbd_driver = {
59670 .probe = spitzkbd_probe,
59671 - .remove = __devexit_p(spitzkbd_remove),
59672 + .remove = spitzkbd_remove,
59673 .suspend = spitzkbd_suspend,
59674 .resume = spitzkbd_resume,
59675 .driver = {
59676 @@ -479,7 +479,7 @@
59677 },
59678 };
59679
59680 -static int __init spitzkbd_init(void)
59681 +static int __devinit spitzkbd_init(void)
59682 {
59683 return platform_driver_register(&spitzkbd_driver);
59684 }
59685 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/mouse/elantech.c linux-2.6.29-rc3.owrt/drivers/input/mouse/elantech.c
59686 --- linux-2.6.29.owrt/drivers/input/mouse/elantech.c 2009-05-10 22:04:39.000000000 +0200
59687 +++ linux-2.6.29-rc3.owrt/drivers/input/mouse/elantech.c 2009-05-10 23:48:28.000000000 +0200
59688 @@ -542,7 +542,7 @@
59689 ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) ||
59690 ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) ||
59691 ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) {
59692 - pr_debug("elantech.c: sending Elantech magic knock failed.\n");
59693 + pr_err("elantech.c: sending Elantech magic knock failed.\n");
59694 return -1;
59695 }
59696
59697 @@ -551,27 +551,8 @@
59698 * set of magic numbers
59699 */
59700 if (param[0] != 0x3c || param[1] != 0x03 || param[2] != 0xc8) {
59701 - pr_debug("elantech.c: "
59702 - "unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
59703 - param[0], param[1], param[2]);
59704 - return -1;
59705 - }
59706 -
59707 - /*
59708 - * Query touchpad's firmware version and see if it reports known
59709 - * value to avoid mis-detection. Logitech mice are known to respond
59710 - * to Elantech magic knock and there might be more.
59711 - */
59712 - if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) {
59713 - pr_debug("elantech.c: failed to query firmware version.\n");
59714 - return -1;
59715 - }
59716 -
59717 - pr_debug("elantech.c: Elantech version query result 0x%02x, 0x%02x, 0x%02x.\n",
59718 - param[0], param[1], param[2]);
59719 -
59720 - if (param[0] == 0 || param[1] != 0) {
59721 - pr_debug("elantech.c: Probably not a real Elantech touchpad. Aborting.\n");
59722 + pr_info("elantech.c: unexpected magic knock result 0x%02x, 0x%02x, 0x%02x.\n",
59723 + param[0], param[1], param[2]);
59724 return -1;
59725 }
59726
59727 @@ -619,7 +600,8 @@
59728 int i, error;
59729 unsigned char param[3];
59730
59731 - psmouse->private = etd = kzalloc(sizeof(struct elantech_data), GFP_KERNEL);
59732 + etd = kzalloc(sizeof(struct elantech_data), GFP_KERNEL);
59733 + psmouse->private = etd;
59734 if (!etd)
59735 return -1;
59736
59737 @@ -628,12 +610,14 @@
59738 etd->parity[i] = etd->parity[i & (i - 1)] ^ 1;
59739
59740 /*
59741 - * Do the version query again so we can store the result
59742 + * Find out what version hardware this is
59743 */
59744 if (synaptics_send_cmd(psmouse, ETP_FW_VERSION_QUERY, param)) {
59745 pr_err("elantech.c: failed to query firmware version.\n");
59746 goto init_fail;
59747 }
59748 + pr_info("elantech.c: Elantech version query result 0x%02x, 0x%02x, 0x%02x.\n",
59749 + param[0], param[1], param[2]);
59750 etd->fw_version_maj = param[0];
59751 etd->fw_version_min = param[2];
59752
59753 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/mouse/Kconfig linux-2.6.29-rc3.owrt/drivers/input/mouse/Kconfig
59754 --- linux-2.6.29.owrt/drivers/input/mouse/Kconfig 2009-05-10 22:04:39.000000000 +0200
59755 +++ linux-2.6.29-rc3.owrt/drivers/input/mouse/Kconfig 2009-05-10 23:48:28.000000000 +0200
59756 @@ -70,7 +70,7 @@
59757 config MOUSE_PS2_LIFEBOOK
59758 bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
59759 default y
59760 - depends on MOUSE_PS2 && X86
59761 + depends on MOUSE_PS2
59762 help
59763 Say Y here if you have a Fujitsu B-series Lifebook PS/2
59764 TouchScreen connected to your system.
59765 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/mouse/pxa930_trkball.c linux-2.6.29-rc3.owrt/drivers/input/mouse/pxa930_trkball.c
59766 --- linux-2.6.29.owrt/drivers/input/mouse/pxa930_trkball.c 2009-05-10 22:04:39.000000000 +0200
59767 +++ linux-2.6.29-rc3.owrt/drivers/input/mouse/pxa930_trkball.c 2009-05-10 23:48:28.000000000 +0200
59768 @@ -83,7 +83,7 @@
59769
59770 __raw_writel(v, trkball->mmio_base + TBCR);
59771
59772 - while (--i) {
59773 + while (i--) {
59774 if (__raw_readl(trkball->mmio_base + TBCR) == v)
59775 break;
59776 msleep(1);
59777 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/mouse/synaptics.c linux-2.6.29-rc3.owrt/drivers/input/mouse/synaptics.c
59778 --- linux-2.6.29.owrt/drivers/input/mouse/synaptics.c 2009-05-10 22:04:39.000000000 +0200
59779 +++ linux-2.6.29-rc3.owrt/drivers/input/mouse/synaptics.c 2009-05-10 23:48:28.000000000 +0200
59780 @@ -182,6 +182,11 @@
59781
59782 static int synaptics_query_hardware(struct psmouse *psmouse)
59783 {
59784 + int retries = 0;
59785 +
59786 + while ((retries++ < 3) && psmouse_reset(psmouse))
59787 + /* empty */;
59788 +
59789 if (synaptics_identify(psmouse))
59790 return -1;
59791 if (synaptics_model_id(psmouse))
59792 @@ -577,8 +582,6 @@
59793 struct synaptics_data *priv = psmouse->private;
59794 struct synaptics_data old_priv = *priv;
59795
59796 - psmouse_reset(psmouse);
59797 -
59798 if (synaptics_detect(psmouse, 0))
59799 return -1;
59800
59801 @@ -637,8 +640,6 @@
59802 if (!priv)
59803 return -1;
59804
59805 - psmouse_reset(psmouse);
59806 -
59807 if (synaptics_query_hardware(psmouse)) {
59808 printk(KERN_ERR "Unable to query Synaptics hardware.\n");
59809 goto init_fail;
59810 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/serio/ambakmi.c linux-2.6.29-rc3.owrt/drivers/input/serio/ambakmi.c
59811 --- linux-2.6.29.owrt/drivers/input/serio/ambakmi.c 2009-05-10 22:04:39.000000000 +0200
59812 +++ linux-2.6.29-rc3.owrt/drivers/input/serio/ambakmi.c 2009-05-10 23:48:28.000000000 +0200
59813 @@ -57,7 +57,7 @@
59814 struct amba_kmi_port *kmi = io->port_data;
59815 unsigned int timeleft = 10000; /* timeout in 100ms */
59816
59817 - while ((readb(KMISTAT) & KMISTAT_TXEMPTY) == 0 && --timeleft)
59818 + while ((readb(KMISTAT) & KMISTAT_TXEMPTY) == 0 && timeleft--)
59819 udelay(10);
59820
59821 if (timeleft)
59822 @@ -129,8 +129,8 @@
59823 io->write = amba_kmi_write;
59824 io->open = amba_kmi_open;
59825 io->close = amba_kmi_close;
59826 - strlcpy(io->name, dev_name(&dev->dev), sizeof(io->name));
59827 - strlcpy(io->phys, dev_name(&dev->dev), sizeof(io->phys));
59828 + strlcpy(io->name, dev->dev.bus_id, sizeof(io->name));
59829 + strlcpy(io->phys, dev->dev.bus_id, sizeof(io->phys));
59830 io->port_data = kmi;
59831 io->dev.parent = &dev->dev;
59832
59833 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/serio/gscps2.c linux-2.6.29-rc3.owrt/drivers/input/serio/gscps2.c
59834 --- linux-2.6.29.owrt/drivers/input/serio/gscps2.c 2009-05-10 22:04:39.000000000 +0200
59835 +++ linux-2.6.29-rc3.owrt/drivers/input/serio/gscps2.c 2009-05-10 23:48:28.000000000 +0200
59836 @@ -359,7 +359,7 @@
59837
59838 snprintf(serio->name, sizeof(serio->name), "GSC PS/2 %s",
59839 (ps2port->id == GSC_ID_KEYBOARD) ? "keyboard" : "mouse");
59840 - strlcpy(serio->phys, dev_name(&dev->dev), sizeof(serio->phys));
59841 + strlcpy(serio->phys, dev->dev.bus_id, sizeof(serio->phys));
59842 serio->id.type = SERIO_8042;
59843 serio->write = gscps2_write;
59844 serio->open = gscps2_open;
59845 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/serio/sa1111ps2.c linux-2.6.29-rc3.owrt/drivers/input/serio/sa1111ps2.c
59846 --- linux-2.6.29.owrt/drivers/input/serio/sa1111ps2.c 2009-05-10 22:04:39.000000000 +0200
59847 +++ linux-2.6.29-rc3.owrt/drivers/input/serio/sa1111ps2.c 2009-05-10 23:48:28.000000000 +0200
59848 @@ -246,8 +246,8 @@
59849 serio->write = ps2_write;
59850 serio->open = ps2_open;
59851 serio->close = ps2_close;
59852 - strlcpy(serio->name, dev_name(&dev->dev), sizeof(serio->name));
59853 - strlcpy(serio->phys, dev_name(&dev->dev), sizeof(serio->phys));
59854 + strlcpy(serio->name, dev->dev.bus_id, sizeof(serio->name));
59855 + strlcpy(serio->phys, dev->dev.bus_id, sizeof(serio->phys));
59856 serio->port_data = ps2if;
59857 serio->dev.parent = &dev->dev;
59858 ps2if->io = serio;
59859 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/touchscreen/atmel_tsadcc.c linux-2.6.29-rc3.owrt/drivers/input/touchscreen/atmel_tsadcc.c
59860 --- linux-2.6.29.owrt/drivers/input/touchscreen/atmel_tsadcc.c 2009-05-10 22:04:39.000000000 +0200
59861 +++ linux-2.6.29-rc3.owrt/drivers/input/touchscreen/atmel_tsadcc.c 2009-05-10 23:48:28.000000000 +0200
59862 @@ -236,7 +236,7 @@
59863 ts_dev->bufferedmeasure = 0;
59864
59865 snprintf(ts_dev->phys, sizeof(ts_dev->phys),
59866 - "%s/input0", dev_name(&pdev->dev));
59867 + "%s/input0", pdev->dev.bus_id);
59868
59869 input_dev->name = "atmel touch screen controller";
59870 input_dev->phys = ts_dev->phys;
59871 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/touchscreen/corgi_ts.c linux-2.6.29-rc3.owrt/drivers/input/touchscreen/corgi_ts.c
59872 --- linux-2.6.29.owrt/drivers/input/touchscreen/corgi_ts.c 2009-05-10 22:04:39.000000000 +0200
59873 +++ linux-2.6.29-rc3.owrt/drivers/input/touchscreen/corgi_ts.c 2009-05-10 23:48:28.000000000 +0200
59874 @@ -268,7 +268,7 @@
59875 #define corgits_resume NULL
59876 #endif
59877
59878 -static int __devinit corgits_probe(struct platform_device *pdev)
59879 +static int __init corgits_probe(struct platform_device *pdev)
59880 {
59881 struct corgi_ts *corgi_ts;
59882 struct input_dev *input_dev;
59883 @@ -343,7 +343,7 @@
59884 return err;
59885 }
59886
59887 -static int __devexit corgits_remove(struct platform_device *pdev)
59888 +static int corgits_remove(struct platform_device *pdev)
59889 {
59890 struct corgi_ts *corgi_ts = platform_get_drvdata(pdev);
59891
59892 @@ -352,13 +352,12 @@
59893 corgi_ts->machinfo->put_hsync();
59894 input_unregister_device(corgi_ts->input);
59895 kfree(corgi_ts);
59896 -
59897 return 0;
59898 }
59899
59900 static struct platform_driver corgits_driver = {
59901 .probe = corgits_probe,
59902 - .remove = __devexit_p(corgits_remove),
59903 + .remove = corgits_remove,
59904 .suspend = corgits_suspend,
59905 .resume = corgits_resume,
59906 .driver = {
59907 @@ -367,7 +366,7 @@
59908 },
59909 };
59910
59911 -static int __init corgits_init(void)
59912 +static int __devinit corgits_init(void)
59913 {
59914 return platform_driver_register(&corgits_driver);
59915 }
59916 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/touchscreen/tsc2007.c linux-2.6.29-rc3.owrt/drivers/input/touchscreen/tsc2007.c
59917 --- linux-2.6.29.owrt/drivers/input/touchscreen/tsc2007.c 2009-05-10 22:04:39.000000000 +0200
59918 +++ linux-2.6.29-rc3.owrt/drivers/input/touchscreen/tsc2007.c 2009-05-10 23:48:28.000000000 +0200
59919 @@ -289,8 +289,7 @@
59920
59921 pdata->init_platform_hw();
59922
59923 - snprintf(ts->phys, sizeof(ts->phys),
59924 - "%s/input0", dev_name(&client->dev));
59925 + snprintf(ts->phys, sizeof(ts->phys), "%s/input0", client->dev.bus_id);
59926
59927 input_dev->name = "TSC2007 Touchscreen";
59928 input_dev->phys = ts->phys;
59929 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/input/touchscreen/usbtouchscreen.c linux-2.6.29-rc3.owrt/drivers/input/touchscreen/usbtouchscreen.c
59930 --- linux-2.6.29.owrt/drivers/input/touchscreen/usbtouchscreen.c 2009-05-10 22:04:39.000000000 +0200
59931 +++ linux-2.6.29-rc3.owrt/drivers/input/touchscreen/usbtouchscreen.c 2009-05-10 23:48:28.000000000 +0200
59932 @@ -60,10 +60,6 @@
59933 module_param(swap_xy, bool, 0644);
59934 MODULE_PARM_DESC(swap_xy, "If set X and Y axes are swapped.");
59935
59936 -static int hwcalib_xy;
59937 -module_param(hwcalib_xy, bool, 0644);
59938 -MODULE_PARM_DESC(hwcalib_xy, "If set hw-calibrated X/Y are used if available");
59939 -
59940 /* device specifc data/functions */
59941 struct usbtouch_usb;
59942 struct usbtouch_device_info {
59943 @@ -122,7 +118,6 @@
59944
59945 #define USB_DEVICE_HID_CLASS(vend, prod) \
59946 .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS \
59947 - | USB_DEVICE_ID_MATCH_INT_PROTOCOL \
59948 | USB_DEVICE_ID_MATCH_DEVICE, \
59949 .idVendor = (vend), \
59950 .idProduct = (prod), \
59951 @@ -265,13 +260,8 @@
59952
59953 static int mtouch_read_data(struct usbtouch_usb *dev, unsigned char *pkt)
59954 {
59955 - if (hwcalib_xy) {
59956 - dev->x = (pkt[4] << 8) | pkt[3];
59957 - dev->y = 0xffff - ((pkt[6] << 8) | pkt[5]);
59958 - } else {
59959 - dev->x = (pkt[8] << 8) | pkt[7];
59960 - dev->y = (pkt[10] << 8) | pkt[9];
59961 - }
59962 + dev->x = (pkt[8] << 8) | pkt[7];
59963 + dev->y = (pkt[10] << 8) | pkt[9];
59964 dev->touch = (pkt[2] & 0x40) ? 1 : 0;
59965
59966 return 1;
59967 @@ -304,12 +294,6 @@
59968 return ret;
59969 }
59970
59971 - /* Default min/max xy are the raw values, override if using hw-calib */
59972 - if (hwcalib_xy) {
59973 - input_set_abs_params(usbtouch->input, ABS_X, 0, 0xffff, 0, 0);
59974 - input_set_abs_params(usbtouch->input, ABS_Y, 0, 0xffff, 0, 0);
59975 - }
59976 -
59977 return 0;
59978 }
59979 #endif
59980 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/isdn/gigaset/bas-gigaset.c linux-2.6.29-rc3.owrt/drivers/isdn/gigaset/bas-gigaset.c
59981 --- linux-2.6.29.owrt/drivers/isdn/gigaset/bas-gigaset.c 2009-05-10 22:04:38.000000000 +0200
59982 +++ linux-2.6.29-rc3.owrt/drivers/isdn/gigaset/bas-gigaset.c 2009-05-10 23:48:28.000000000 +0200
59983 @@ -46,9 +46,6 @@
59984 /* length limit according to Siemens 3070usb-protokoll.doc ch. 2.1 */
59985 #define IF_WRITEBUF 264
59986
59987 -/* interrupt pipe message size according to ibid. ch. 2.2 */
59988 -#define IP_MSGSIZE 3
59989 -
59990 /* Values for the Gigaset 307x */
59991 #define USB_GIGA_VENDOR_ID 0x0681
59992 #define USB_3070_PRODUCT_ID 0x0001
59993 @@ -113,7 +110,7 @@
59994 unsigned char *rcvbuf; /* AT reply receive buffer */
59995
59996 struct urb *urb_int_in; /* URB for interrupt pipe */
59997 - unsigned char *int_in_buf;
59998 + unsigned char int_in_buf[3];
59999
60000 spinlock_t lock; /* locks all following */
60001 int basstate; /* bitmap (BS_*) */
60002 @@ -660,7 +657,7 @@
60003 }
60004
60005 /* drop incomplete packets even if the missing bytes wouldn't matter */
60006 - if (unlikely(urb->actual_length < IP_MSGSIZE)) {
60007 + if (unlikely(urb->actual_length < 3)) {
60008 dev_warn(cs->dev, "incomplete interrupt packet (%d bytes)\n",
60009 urb->actual_length);
60010 goto resubmit;
60011 @@ -2130,7 +2127,6 @@
60012 static void gigaset_freecshw(struct cardstate *cs)
60013 {
60014 /* timers, URBs and rcvbuf are disposed of in disconnect */
60015 - kfree(cs->hw.bas->int_in_buf);
60016 kfree(cs->hw.bas);
60017 cs->hw.bas = NULL;
60018 }
60019 @@ -2144,12 +2140,6 @@
60020 pr_err("out of memory\n");
60021 return 0;
60022 }
60023 - ucs->int_in_buf = kmalloc(IP_MSGSIZE, GFP_KERNEL);
60024 - if (!ucs->int_in_buf) {
60025 - kfree(ucs);
60026 - pr_err("out of memory\n");
60027 - return 0;
60028 - }
60029
60030 ucs->urb_cmd_in = NULL;
60031 ucs->urb_cmd_out = NULL;
60032 @@ -2302,7 +2292,7 @@
60033 usb_fill_int_urb(ucs->urb_int_in, udev,
60034 usb_rcvintpipe(udev,
60035 (endpoint->bEndpointAddress) & 0x0f),
60036 - ucs->int_in_buf, IP_MSGSIZE, read_int_callback, cs,
60037 + ucs->int_in_buf, 3, read_int_callback, cs,
60038 endpoint->bInterval);
60039 if ((rc = usb_submit_urb(ucs->urb_int_in, GFP_KERNEL)) != 0) {
60040 dev_err(cs->dev, "could not submit interrupt URB: %s\n",
60041 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/isdn/hardware/mISDN/hfcmulti.c linux-2.6.29-rc3.owrt/drivers/isdn/hardware/mISDN/hfcmulti.c
60042 --- linux-2.6.29.owrt/drivers/isdn/hardware/mISDN/hfcmulti.c 2009-05-10 22:04:38.000000000 +0200
60043 +++ linux-2.6.29-rc3.owrt/drivers/isdn/hardware/mISDN/hfcmulti.c 2009-05-10 23:48:28.000000000 +0200
60044 @@ -4599,7 +4599,6 @@
60045 printk(KERN_ERR "%s: no memory for coeffs\n",
60046 __func__);
60047 ret = -ENOMEM;
60048 - kfree(bch);
60049 goto free_chan;
60050 }
60051 bch->nr = ch;
60052 @@ -4768,7 +4767,6 @@
60053 printk(KERN_ERR "%s: no memory for coeffs\n",
60054 __func__);
60055 ret = -ENOMEM;
60056 - kfree(bch);
60057 goto free_chan;
60058 }
60059 bch->nr = ch + 1;
60060 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/isdn/sc/shmem.c linux-2.6.29-rc3.owrt/drivers/isdn/sc/shmem.c
60061 --- linux-2.6.29.owrt/drivers/isdn/sc/shmem.c 2009-05-10 22:04:38.000000000 +0200
60062 +++ linux-2.6.29-rc3.owrt/drivers/isdn/sc/shmem.c 2009-05-10 23:48:28.000000000 +0200
60063 @@ -54,7 +54,7 @@
60064 spin_unlock_irqrestore(&sc_adapter[card]->lock, flags);
60065 pr_debug("%s: set page to %#x\n",sc_adapter[card]->devicename,
60066 ((sc_adapter[card]->shmem_magic + ch * SRAM_PAGESIZE)>>14)|0x80);
60067 - pr_debug("%s: copying %zu bytes from %#lx to %#lx\n",
60068 + pr_debug("%s: copying %d bytes from %#lx to %#lx\n",
60069 sc_adapter[card]->devicename, n,
60070 (unsigned long) src,
60071 sc_adapter[card]->rambase + ((unsigned long) dest %0x4000));
60072 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/lguest/core.c linux-2.6.29-rc3.owrt/drivers/lguest/core.c
60073 --- linux-2.6.29.owrt/drivers/lguest/core.c 2009-05-10 22:04:38.000000000 +0200
60074 +++ linux-2.6.29-rc3.owrt/drivers/lguest/core.c 2009-05-10 23:48:28.000000000 +0200
60075 @@ -224,7 +224,7 @@
60076 break;
60077
60078 /* If the Guest asked to be stopped, we sleep. The Guest's
60079 - * clock timer or LHREQ_BREAK from the Waker will wake us. */
60080 + * clock timer or LHCALL_BREAK from the Waker will wake us. */
60081 if (cpu->halted) {
60082 set_current_state(TASK_INTERRUPTIBLE);
60083 schedule();
60084 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/lguest/lguest_device.c linux-2.6.29-rc3.owrt/drivers/lguest/lguest_device.c
60085 --- linux-2.6.29.owrt/drivers/lguest/lguest_device.c 2009-05-10 22:04:38.000000000 +0200
60086 +++ linux-2.6.29-rc3.owrt/drivers/lguest/lguest_device.c 2009-05-10 23:48:28.000000000 +0200
60087 @@ -212,9 +212,6 @@
60088 hcall(LHCALL_NOTIFY, lvq->config.pfn << PAGE_SHIFT, 0, 0);
60089 }
60090
60091 -/* An extern declaration inside a C file is bad form. Don't do it. */
60092 -extern void lguest_setup_irq(unsigned int irq);
60093 -
60094 /* This routine finds the first virtqueue described in the configuration of
60095 * this device and sets it up.
60096 *
60097 @@ -269,9 +266,6 @@
60098 goto unmap;
60099 }
60100
60101 - /* Make sure the interrupt is allocated. */
60102 - lguest_setup_irq(lvq->config.irq);
60103 -
60104 /* Tell the interrupt for this virtqueue to go to the virtio_ring
60105 * interrupt handler. */
60106 /* FIXME: We used to have a flag for the Host to tell us we could use
60107 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/lguest/lguest_user.c linux-2.6.29-rc3.owrt/drivers/lguest/lguest_user.c
60108 --- linux-2.6.29.owrt/drivers/lguest/lguest_user.c 2009-05-10 22:04:38.000000000 +0200
60109 +++ linux-2.6.29-rc3.owrt/drivers/lguest/lguest_user.c 2009-05-10 23:48:28.000000000 +0200
60110 @@ -307,8 +307,9 @@
60111 * kmalloc()ed string, either of which is ok to hand to kfree(). */
60112 if (!IS_ERR(lg->dead))
60113 kfree(lg->dead);
60114 - /* Free the memory allocated to the lguest_struct */
60115 - kfree(lg);
60116 + /* We clear the entire structure, which also marks it as free for the
60117 + * next user. */
60118 + memset(lg, 0, sizeof(*lg));
60119 /* Release lock and exit. */
60120 mutex_unlock(&lguest_lock);
60121
60122 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/dm.c linux-2.6.29-rc3.owrt/drivers/md/dm.c
60123 --- linux-2.6.29.owrt/drivers/md/dm.c 2009-05-10 22:04:38.000000000 +0200
60124 +++ linux-2.6.29-rc3.owrt/drivers/md/dm.c 2009-05-10 23:48:28.000000000 +0200
60125 @@ -525,12 +525,9 @@
60126 static void dec_pending(struct dm_io *io, int error)
60127 {
60128 unsigned long flags;
60129 - int io_error;
60130 - struct bio *bio;
60131 - struct mapped_device *md = io->md;
60132
60133 /* Push-back supersedes any I/O errors */
60134 - if (error && !(io->error > 0 && __noflush_suspending(md)))
60135 + if (error && !(io->error > 0 && __noflush_suspending(io->md)))
60136 io->error = error;
60137
60138 if (atomic_dec_and_test(&io->io_count)) {
60139 @@ -540,27 +537,24 @@
60140 * This must be handled before the sleeper on
60141 * suspend queue merges the pushback list.
60142 */
60143 - spin_lock_irqsave(&md->pushback_lock, flags);
60144 - if (__noflush_suspending(md))
60145 - bio_list_add(&md->pushback, io->bio);
60146 + spin_lock_irqsave(&io->md->pushback_lock, flags);
60147 + if (__noflush_suspending(io->md))
60148 + bio_list_add(&io->md->pushback, io->bio);
60149 else
60150 /* noflush suspend was interrupted. */
60151 io->error = -EIO;
60152 - spin_unlock_irqrestore(&md->pushback_lock, flags);
60153 + spin_unlock_irqrestore(&io->md->pushback_lock, flags);
60154 }
60155
60156 end_io_acct(io);
60157
60158 - io_error = io->error;
60159 - bio = io->bio;
60160 -
60161 - free_io(md, io);
60162 + if (io->error != DM_ENDIO_REQUEUE) {
60163 + trace_block_bio_complete(io->md->queue, io->bio);
60164
60165 - if (io_error != DM_ENDIO_REQUEUE) {
60166 - trace_block_bio_complete(md->queue, bio);
60167 -
60168 - bio_endio(bio, io_error);
60169 + bio_endio(io->bio, io->error);
60170 }
60171 +
60172 + free_io(io->md, io);
60173 }
60174 }
60175
60176 @@ -568,7 +562,6 @@
60177 {
60178 int r = 0;
60179 struct dm_target_io *tio = bio->bi_private;
60180 - struct dm_io *io = tio->io;
60181 struct mapped_device *md = tio->io->md;
60182 dm_endio_fn endio = tio->ti->type->end_io;
60183
60184 @@ -592,14 +585,15 @@
60185 }
60186 }
60187
60188 + dec_pending(tio->io, error);
60189 +
60190 /*
60191 * Store md for cleanup instead of tio which is about to get freed.
60192 */
60193 bio->bi_private = md->bs;
60194
60195 - free_tio(md, tio);
60196 bio_put(bio);
60197 - dec_pending(io, error);
60198 + free_tio(md, tio);
60199 }
60200
60201 static sector_t max_io_len(struct mapped_device *md,
60202 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/dm-crypt.c linux-2.6.29-rc3.owrt/drivers/md/dm-crypt.c
60203 --- linux-2.6.29.owrt/drivers/md/dm-crypt.c 2009-05-10 22:04:38.000000000 +0200
60204 +++ linux-2.6.29-rc3.owrt/drivers/md/dm-crypt.c 2009-05-10 23:48:28.000000000 +0200
60205 @@ -60,7 +60,6 @@
60206 };
60207
60208 struct dm_crypt_request {
60209 - struct convert_context *ctx;
60210 struct scatterlist sg_in;
60211 struct scatterlist sg_out;
60212 };
60213 @@ -336,18 +335,6 @@
60214 init_completion(&ctx->restart);
60215 }
60216
60217 -static struct dm_crypt_request *dmreq_of_req(struct crypt_config *cc,
60218 - struct ablkcipher_request *req)
60219 -{
60220 - return (struct dm_crypt_request *)((char *)req + cc->dmreq_start);
60221 -}
60222 -
60223 -static struct ablkcipher_request *req_of_dmreq(struct crypt_config *cc,
60224 - struct dm_crypt_request *dmreq)
60225 -{
60226 - return (struct ablkcipher_request *)((char *)dmreq - cc->dmreq_start);
60227 -}
60228 -
60229 static int crypt_convert_block(struct crypt_config *cc,
60230 struct convert_context *ctx,
60231 struct ablkcipher_request *req)
60232 @@ -358,11 +345,10 @@
60233 u8 *iv;
60234 int r = 0;
60235
60236 - dmreq = dmreq_of_req(cc, req);
60237 + dmreq = (struct dm_crypt_request *)((char *)req + cc->dmreq_start);
60238 iv = (u8 *)ALIGN((unsigned long)(dmreq + 1),
60239 crypto_ablkcipher_alignmask(cc->tfm) + 1);
60240
60241 - dmreq->ctx = ctx;
60242 sg_init_table(&dmreq->sg_in, 1);
60243 sg_set_page(&dmreq->sg_in, bv_in->bv_page, 1 << SECTOR_SHIFT,
60244 bv_in->bv_offset + ctx->offset_in);
60245 @@ -409,9 +395,8 @@
60246 cc->req = mempool_alloc(cc->req_pool, GFP_NOIO);
60247 ablkcipher_request_set_tfm(cc->req, cc->tfm);
60248 ablkcipher_request_set_callback(cc->req, CRYPTO_TFM_REQ_MAY_BACKLOG |
60249 - CRYPTO_TFM_REQ_MAY_SLEEP,
60250 - kcryptd_async_done,
60251 - dmreq_of_req(cc, cc->req));
60252 + CRYPTO_TFM_REQ_MAY_SLEEP,
60253 + kcryptd_async_done, ctx);
60254 }
60255
60256 /*
60257 @@ -568,22 +553,19 @@
60258 static void crypt_dec_pending(struct dm_crypt_io *io)
60259 {
60260 struct crypt_config *cc = io->target->private;
60261 - struct bio *base_bio = io->base_bio;
60262 - struct dm_crypt_io *base_io = io->base_io;
60263 - int error = io->error;
60264
60265 if (!atomic_dec_and_test(&io->pending))
60266 return;
60267
60268 - mempool_free(io, cc->io_pool);
60269 -
60270 - if (likely(!base_io))
60271 - bio_endio(base_bio, error);
60272 + if (likely(!io->base_io))
60273 + bio_endio(io->base_bio, io->error);
60274 else {
60275 - if (error && !base_io->error)
60276 - base_io->error = error;
60277 - crypt_dec_pending(base_io);
60278 + if (io->error && !io->base_io->error)
60279 + io->base_io->error = io->error;
60280 + crypt_dec_pending(io->base_io);
60281 }
60282 +
60283 + mempool_free(io, cc->io_pool);
60284 }
60285
60286 /*
60287 @@ -839,8 +821,7 @@
60288 static void kcryptd_async_done(struct crypto_async_request *async_req,
60289 int error)
60290 {
60291 - struct dm_crypt_request *dmreq = async_req->data;
60292 - struct convert_context *ctx = dmreq->ctx;
60293 + struct convert_context *ctx = async_req->data;
60294 struct dm_crypt_io *io = container_of(ctx, struct dm_crypt_io, ctx);
60295 struct crypt_config *cc = io->target->private;
60296
60297 @@ -849,7 +830,7 @@
60298 return;
60299 }
60300
60301 - mempool_free(req_of_dmreq(cc, dmreq), cc->req_pool);
60302 + mempool_free(ablkcipher_request_cast(async_req), cc->req_pool);
60303
60304 if (!atomic_dec_and_test(&ctx->pending))
60305 return;
60306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/dm-io.c linux-2.6.29-rc3.owrt/drivers/md/dm-io.c
60307 --- linux-2.6.29.owrt/drivers/md/dm-io.c 2009-05-10 22:04:38.000000000 +0200
60308 +++ linux-2.6.29-rc3.owrt/drivers/md/dm-io.c 2009-05-10 23:48:28.000000000 +0200
60309 @@ -292,8 +292,6 @@
60310 (PAGE_SIZE >> SECTOR_SHIFT));
60311 num_bvecs = 1 + min_t(int, bio_get_nr_vecs(where->bdev),
60312 num_bvecs);
60313 - if (unlikely(num_bvecs > BIO_MAX_PAGES))
60314 - num_bvecs = BIO_MAX_PAGES;
60315 bio = bio_alloc_bioset(GFP_NOIO, num_bvecs, io->client->bios);
60316 bio->bi_sector = where->sector + (where->count - remaining);
60317 bio->bi_bdev = where->bdev;
60318 @@ -330,7 +328,7 @@
60319 struct dpages old_pages = *dp;
60320
60321 if (sync)
60322 - rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
60323 + rw |= (1 << BIO_RW_SYNC);
60324
60325 /*
60326 * For multiple regions we need to be careful to rewind
60327 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/dm-ioctl.c linux-2.6.29-rc3.owrt/drivers/md/dm-ioctl.c
60328 --- linux-2.6.29.owrt/drivers/md/dm-ioctl.c 2009-05-10 22:04:38.000000000 +0200
60329 +++ linux-2.6.29-rc3.owrt/drivers/md/dm-ioctl.c 2009-05-10 23:48:28.000000000 +0200
60330 @@ -704,8 +704,7 @@
60331 char *new_name = (char *) param + param->data_start;
60332
60333 if (new_name < param->data ||
60334 - invalid_str(new_name, (void *) param + param_size) ||
60335 - strlen(new_name) > DM_NAME_LEN - 1) {
60336 + invalid_str(new_name, (void *) param + param_size)) {
60337 DMWARN("Invalid new logical volume name supplied.");
60338 return -EINVAL;
60339 }
60340 @@ -1064,7 +1063,7 @@
60341
60342 r = populate_table(t, param, param_size);
60343 if (r) {
60344 - dm_table_destroy(t);
60345 + dm_table_put(t);
60346 goto out;
60347 }
60348
60349 @@ -1072,7 +1071,7 @@
60350 hc = dm_get_mdptr(md);
60351 if (!hc || hc->md != md) {
60352 DMWARN("device has been removed from the dev hash table.");
60353 - dm_table_destroy(t);
60354 + dm_table_put(t);
60355 up_write(&_hash_lock);
60356 r = -ENXIO;
60357 goto out;
60358 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/dm-kcopyd.c linux-2.6.29-rc3.owrt/drivers/md/dm-kcopyd.c
60359 --- linux-2.6.29.owrt/drivers/md/dm-kcopyd.c 2009-05-10 22:04:38.000000000 +0200
60360 +++ linux-2.6.29-rc3.owrt/drivers/md/dm-kcopyd.c 2009-05-10 23:48:28.000000000 +0200
60361 @@ -344,7 +344,7 @@
60362 {
60363 int r;
60364 struct dm_io_request io_req = {
60365 - .bi_rw = job->rw | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG),
60366 + .bi_rw = job->rw | (1 << BIO_RW_SYNC),
60367 .mem.type = DM_IO_PAGE_LIST,
60368 .mem.ptr.pl = job->pages,
60369 .mem.offset = job->offset,
60370 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/linear.c linux-2.6.29-rc3.owrt/drivers/md/linear.c
60371 --- linux-2.6.29.owrt/drivers/md/linear.c 2009-05-10 22:04:38.000000000 +0200
60372 +++ linux-2.6.29-rc3.owrt/drivers/md/linear.c 2009-05-10 23:48:28.000000000 +0200
60373 @@ -25,13 +25,13 @@
60374 {
60375 dev_info_t *hash;
60376 linear_conf_t *conf = mddev_to_conf(mddev);
60377 - sector_t idx = sector >> conf->sector_shift;
60378
60379 /*
60380 * sector_div(a,b) returns the remainer and sets a to a/b
60381 */
60382 - (void)sector_div(idx, conf->spacing);
60383 - hash = conf->hash_table[idx];
60384 + sector >>= conf->sector_shift;
60385 + (void)sector_div(sector, conf->spacing);
60386 + hash = conf->hash_table[sector];
60387
60388 while (sector >= hash->num_sectors + hash->start_sector)
60389 hash++;
60390 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/md.c linux-2.6.29-rc3.owrt/drivers/md/md.c
60391 --- linux-2.6.29.owrt/drivers/md/md.c 2009-05-10 22:04:38.000000000 +0200
60392 +++ linux-2.6.29-rc3.owrt/drivers/md/md.c 2009-05-10 23:48:28.000000000 +0200
60393 @@ -214,7 +214,12 @@
60394 return mddev;
60395 }
60396
60397 -static void mddev_delayed_delete(struct work_struct *ws);
60398 +static void mddev_delayed_delete(struct work_struct *ws)
60399 +{
60400 + mddev_t *mddev = container_of(ws, mddev_t, del_work);
60401 + kobject_del(&mddev->kobj);
60402 + kobject_put(&mddev->kobj);
60403 +}
60404
60405 static void mddev_put(mddev_t *mddev)
60406 {
60407 @@ -469,7 +474,7 @@
60408 * causes ENOTSUPP, we allocate a spare bio...
60409 */
60410 struct bio *bio = bio_alloc(GFP_NOIO, 1);
60411 - int rw = (1<<BIO_RW) | (1<<BIO_RW_SYNCIO) | (1<<BIO_RW_UNPLUG);
60412 + int rw = (1<<BIO_RW) | (1<<BIO_RW_SYNC);
60413
60414 bio->bi_bdev = rdev->bdev;
60415 bio->bi_sector = sector;
60416 @@ -526,7 +531,7 @@
60417 struct completion event;
60418 int ret;
60419
60420 - rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
60421 + rw |= (1 << BIO_RW_SYNC);
60422
60423 bio->bi_bdev = bdev;
60424 bio->bi_sector = sector;
60425 @@ -1476,11 +1481,6 @@
60426 if (find_rdev_nr(mddev, rdev->desc_nr))
60427 return -EBUSY;
60428 }
60429 - if (mddev->max_disks && rdev->desc_nr >= mddev->max_disks) {
60430 - printk(KERN_WARNING "md: %s: array is limited to %d devices\n",
60431 - mdname(mddev), mddev->max_disks);
60432 - return -EBUSY;
60433 - }
60434 bdevname(rdev->bdev,b);
60435 while ( (s=strchr(b, '/')) != NULL)
60436 *s = '!';
60437 @@ -2441,15 +2441,6 @@
60438
60439 i = 0;
60440 rdev_for_each(rdev, tmp, mddev) {
60441 - if (rdev->desc_nr >= mddev->max_disks ||
60442 - i > mddev->max_disks) {
60443 - printk(KERN_WARNING
60444 - "md: %s: %s: only %d devices permitted\n",
60445 - mdname(mddev), bdevname(rdev->bdev, b),
60446 - mddev->max_disks);
60447 - kick_rdev_from_array(rdev);
60448 - continue;
60449 - }
60450 if (rdev != freshest)
60451 if (super_types[mddev->major_version].
60452 validate_super(mddev, rdev)) {
60453 @@ -3537,21 +3528,6 @@
60454
60455 int mdp_major = 0;
60456
60457 -static void mddev_delayed_delete(struct work_struct *ws)
60458 -{
60459 - mddev_t *mddev = container_of(ws, mddev_t, del_work);
60460 -
60461 - if (mddev->private == &md_redundancy_group) {
60462 - sysfs_remove_group(&mddev->kobj, &md_redundancy_group);
60463 - if (mddev->sysfs_action)
60464 - sysfs_put(mddev->sysfs_action);
60465 - mddev->sysfs_action = NULL;
60466 - mddev->private = NULL;
60467 - }
60468 - kobject_del(&mddev->kobj);
60469 - kobject_put(&mddev->kobj);
60470 -}
60471 -
60472 static int md_alloc(dev_t dev, char *name)
60473 {
60474 static DEFINE_MUTEX(disks_mutex);
60475 @@ -4043,9 +4019,13 @@
60476 mddev->queue->merge_bvec_fn = NULL;
60477 mddev->queue->unplug_fn = NULL;
60478 mddev->queue->backing_dev_info.congested_fn = NULL;
60479 + if (mddev->pers->sync_request) {
60480 + sysfs_remove_group(&mddev->kobj, &md_redundancy_group);
60481 + if (mddev->sysfs_action)
60482 + sysfs_put(mddev->sysfs_action);
60483 + mddev->sysfs_action = NULL;
60484 + }
60485 module_put(mddev->pers->owner);
60486 - if (mddev->pers->sync_request)
60487 - mddev->private = &md_redundancy_group;
60488 mddev->pers = NULL;
60489 /* tell userspace to handle 'inactive' */
60490 sysfs_notify_dirent(mddev->sysfs_state);
60491 @@ -4634,6 +4614,13 @@
60492 * noticed in interrupt contexts ...
60493 */
60494
60495 + if (rdev->desc_nr == mddev->max_disks) {
60496 + printk(KERN_WARNING "%s: can not hot-add to full array!\n",
60497 + mdname(mddev));
60498 + err = -EBUSY;
60499 + goto abort_unbind_export;
60500 + }
60501 +
60502 rdev->raid_disk = -1;
60503
60504 md_update_sb(mddev, 1);
60505 @@ -4647,6 +4634,9 @@
60506 md_new_event(mddev);
60507 return 0;
60508
60509 +abort_unbind_export:
60510 + unbind_rdev_from_array(rdev);
60511 +
60512 abort_export:
60513 export_rdev(rdev);
60514 return err;
60515 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/raid10.c linux-2.6.29-rc3.owrt/drivers/md/raid10.c
60516 --- linux-2.6.29.owrt/drivers/md/raid10.c 2009-05-10 22:04:38.000000000 +0200
60517 +++ linux-2.6.29-rc3.owrt/drivers/md/raid10.c 2009-05-10 23:48:28.000000000 +0200
60518 @@ -1236,7 +1236,6 @@
60519 /* for reconstruct, we always reschedule after a read.
60520 * for resync, only after all reads
60521 */
60522 - rdev_dec_pending(conf->mirrors[d].rdev, conf->mddev);
60523 if (test_bit(R10BIO_IsRecover, &r10_bio->state) ||
60524 atomic_dec_and_test(&r10_bio->remaining)) {
60525 /* we have read all the blocks,
60526 @@ -1244,6 +1243,7 @@
60527 */
60528 reschedule_retry(r10_bio);
60529 }
60530 + rdev_dec_pending(conf->mirrors[d].rdev, conf->mddev);
60531 }
60532
60533 static void end_sync_write(struct bio *bio, int error)
60534 @@ -1264,13 +1264,11 @@
60535
60536 update_head_pos(i, r10_bio);
60537
60538 - rdev_dec_pending(conf->mirrors[d].rdev, mddev);
60539 while (atomic_dec_and_test(&r10_bio->remaining)) {
60540 if (r10_bio->master_bio == NULL) {
60541 /* the primary of several recovery bios */
60542 - sector_t s = r10_bio->sectors;
60543 + md_done_sync(mddev, r10_bio->sectors, 1);
60544 put_buf(r10_bio);
60545 - md_done_sync(mddev, s, 1);
60546 break;
60547 } else {
60548 r10bio_t *r10_bio2 = (r10bio_t *)r10_bio->master_bio;
60549 @@ -1278,6 +1276,7 @@
60550 r10_bio = r10_bio2;
60551 }
60552 }
60553 + rdev_dec_pending(conf->mirrors[d].rdev, mddev);
60554 }
60555
60556 /*
60557 @@ -1750,6 +1749,8 @@
60558 if (!go_faster && conf->nr_waiting)
60559 msleep_interruptible(1000);
60560
60561 + bitmap_cond_end_sync(mddev->bitmap, sector_nr);
60562 +
60563 /* Again, very different code for resync and recovery.
60564 * Both must result in an r10bio with a list of bios that
60565 * have bi_end_io, bi_sector, bi_bdev set,
60566 @@ -1885,8 +1886,6 @@
60567 /* resync. Schedule a read for every block at this virt offset */
60568 int count = 0;
60569
60570 - bitmap_cond_end_sync(mddev->bitmap, sector_nr);
60571 -
60572 if (!bitmap_start_sync(mddev->bitmap, sector_nr,
60573 &sync_blocks, mddev->degraded) &&
60574 !conf->fullsync && !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) {
60575 @@ -2011,13 +2010,13 @@
60576 /* There is nowhere to write, so all non-sync
60577 * drives must be failed, so try the next chunk...
60578 */
60579 - if (sector_nr + max_sync < max_sector)
60580 - max_sector = sector_nr + max_sync;
60581 -
60582 - sectors_skipped += (max_sector - sector_nr);
60583 + {
60584 + sector_t sec = max_sector - sector_nr;
60585 + sectors_skipped += sec;
60586 chunks_skipped ++;
60587 sector_nr = max_sector;
60588 goto skipped;
60589 + }
60590 }
60591
60592 static int run(mddev_t *mddev)
60593 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/md/raid1.c linux-2.6.29-rc3.owrt/drivers/md/raid1.c
60594 --- linux-2.6.29.owrt/drivers/md/raid1.c 2009-05-10 22:04:38.000000000 +0200
60595 +++ linux-2.6.29-rc3.owrt/drivers/md/raid1.c 2009-05-10 23:48:28.000000000 +0200
60596 @@ -1237,9 +1237,8 @@
60597 update_head_pos(mirror, r1_bio);
60598
60599 if (atomic_dec_and_test(&r1_bio->remaining)) {
60600 - sector_t s = r1_bio->sectors;
60601 + md_done_sync(mddev, r1_bio->sectors, uptodate);
60602 put_buf(r1_bio);
60603 - md_done_sync(mddev, s, uptodate);
60604 }
60605 }
60606
60607 @@ -1641,8 +1640,7 @@
60608 }
60609
60610 bio = r1_bio->bios[r1_bio->read_disk];
60611 - if ((disk=read_balance(conf, r1_bio)) == -1 ||
60612 - disk == r1_bio->read_disk) {
60613 + if ((disk=read_balance(conf, r1_bio)) == -1) {
60614 printk(KERN_ALERT "raid1: %s: unrecoverable I/O"
60615 " read error for block %llu\n",
60616 bdevname(bio->bi_bdev,b),
60617 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/common/saa7146_video.c linux-2.6.29-rc3.owrt/drivers/media/common/saa7146_video.c
60618 --- linux-2.6.29.owrt/drivers/media/common/saa7146_video.c 2009-05-10 22:04:39.000000000 +0200
60619 +++ linux-2.6.29-rc3.owrt/drivers/media/common/saa7146_video.c 2009-05-10 23:48:28.000000000 +0200
60620 @@ -576,7 +576,6 @@
60621 vv->vflip = c->value;
60622 break;
60623 default: {
60624 - mutex_unlock(&dev->lock);
60625 return -EINVAL;
60626 }
60627 }
60628 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/common/tuners/mxl5007t.c linux-2.6.29-rc3.owrt/drivers/media/common/tuners/mxl5007t.c
60629 --- linux-2.6.29.owrt/drivers/media/common/tuners/mxl5007t.c 2009-05-10 22:04:39.000000000 +0200
60630 +++ linux-2.6.29-rc3.owrt/drivers/media/common/tuners/mxl5007t.c 2009-05-10 23:48:28.000000000 +0200
60631 @@ -657,7 +657,7 @@
60632 {
60633 struct mxl5007t_state *state = fe->tuner_priv;
60634 int rf_locked, ref_locked;
60635 - s32 rf_input_level = 0;
60636 + s32 rf_input_level;
60637 int ret;
60638
60639 if (fe->ops.i2c_gate_ctrl)
60640 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/common/tuners/tuner-simple.c linux-2.6.29-rc3.owrt/drivers/media/common/tuners/tuner-simple.c
60641 --- linux-2.6.29.owrt/drivers/media/common/tuners/tuner-simple.c 2009-05-10 22:04:39.000000000 +0200
60642 +++ linux-2.6.29-rc3.owrt/drivers/media/common/tuners/tuner-simple.c 2009-05-10 23:48:28.000000000 +0200
60643 @@ -318,6 +318,7 @@
60644 u8 *config, u8 *cb)
60645 {
60646 struct tuner_simple_priv *priv = fe->tuner_priv;
60647 + u8 tuneraddr;
60648 int rc;
60649
60650 /* tv norm specific stuff for multi-norm tuners */
60651 @@ -386,7 +387,6 @@
60652
60653 case TUNER_PHILIPS_TUV1236D:
60654 {
60655 - struct tuner_i2c_props i2c = priv->i2c_props;
60656 /* 0x40 -> ATSC antenna input 1 */
60657 /* 0x48 -> ATSC antenna input 2 */
60658 /* 0x00 -> NTSC antenna input 1 */
60659 @@ -398,15 +398,17 @@
60660 buffer[1] = 0x04;
60661 }
60662 /* set to the correct mode (analog or digital) */
60663 - i2c.addr = 0x0a;
60664 - rc = tuner_i2c_xfer_send(&i2c, &buffer[0], 2);
60665 + tuneraddr = priv->i2c_props.addr;
60666 + priv->i2c_props.addr = 0x0a;
60667 + rc = tuner_i2c_xfer_send(&priv->i2c_props, &buffer[0], 2);
60668 if (2 != rc)
60669 tuner_warn("i2c i/o error: rc == %d "
60670 "(should be 2)\n", rc);
60671 - rc = tuner_i2c_xfer_send(&i2c, &buffer[2], 2);
60672 + rc = tuner_i2c_xfer_send(&priv->i2c_props, &buffer[2], 2);
60673 if (2 != rc)
60674 tuner_warn("i2c i/o error: rc == %d "
60675 "(should be 2)\n", rc);
60676 + priv->i2c_props.addr = tuneraddr;
60677 break;
60678 }
60679 }
60680 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/b2c2/flexcop.c linux-2.6.29-rc3.owrt/drivers/media/dvb/b2c2/flexcop.c
60681 --- linux-2.6.29.owrt/drivers/media/dvb/b2c2/flexcop.c 2009-05-10 22:04:39.000000000 +0200
60682 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/b2c2/flexcop.c 2009-05-10 23:48:28.000000000 +0200
60683 @@ -212,7 +212,8 @@
60684 v210.sw_reset_210.Block_reset_enable = 0xb2;
60685
60686 fc->write_ibi_reg(fc,sw_reset_210,v210);
60687 - udelay(1000);
60688 + msleep(1);
60689 +
60690 fc->write_ibi_reg(fc,ctrl_208,v208_save);
60691 }
60692
60693 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/b2c2/flexcop-hw-filter.c linux-2.6.29-rc3.owrt/drivers/media/dvb/b2c2/flexcop-hw-filter.c
60694 --- linux-2.6.29.owrt/drivers/media/dvb/b2c2/flexcop-hw-filter.c 2009-05-10 22:04:39.000000000 +0200
60695 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/b2c2/flexcop-hw-filter.c 2009-05-10 23:48:28.000000000 +0200
60696 @@ -192,7 +192,6 @@
60697
60698 return 0;
60699 }
60700 -EXPORT_SYMBOL(flexcop_pid_feed_control);
60701
60702 void flexcop_hw_filter_init(struct flexcop_device *fc)
60703 {
60704 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/b2c2/flexcop-pci.c linux-2.6.29-rc3.owrt/drivers/media/dvb/b2c2/flexcop-pci.c
60705 --- linux-2.6.29.owrt/drivers/media/dvb/b2c2/flexcop-pci.c 2009-05-10 22:04:39.000000000 +0200
60706 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/b2c2/flexcop-pci.c 2009-05-10 23:48:28.000000000 +0200
60707 @@ -13,9 +13,9 @@
60708 module_param(enable_pid_filtering, int, 0444);
60709 MODULE_PARM_DESC(enable_pid_filtering, "enable hardware pid filtering: supported values: 0 (fullts), 1");
60710
60711 -static int irq_chk_intv = 100;
60712 +static int irq_chk_intv;
60713 module_param(irq_chk_intv, int, 0644);
60714 -MODULE_PARM_DESC(irq_chk_intv, "set the interval for IRQ streaming watchdog.");
60715 +MODULE_PARM_DESC(irq_chk_intv, "set the interval for IRQ watchdog (currently just debugging).");
60716
60717 #ifdef CONFIG_DVB_B2C2_FLEXCOP_DEBUG
60718 #define dprintk(level,args...) \
60719 @@ -34,9 +34,7 @@
60720
60721 static int debug;
60722 module_param(debug, int, 0644);
60723 -MODULE_PARM_DESC(debug,
60724 - "set debug level (1=info,2=regs,4=TS,8=irqdma,16=check (|-able))."
60725 - DEBSTATUS);
60726 +MODULE_PARM_DESC(debug, "set debug level (1=info,2=regs,4=TS,8=irqdma (|-able))." DEBSTATUS);
60727
60728 #define DRIVER_VERSION "0.1"
60729 #define DRIVER_NAME "Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver"
60730 @@ -60,8 +58,6 @@
60731 int active_dma1_addr; /* 0 = addr0 of dma1; 1 = addr1 of dma1 */
60732 u32 last_dma1_cur_pos; /* position of the pointer last time the timer/packet irq occured */
60733 int count;
60734 - int count_prev;
60735 - int stream_problem;
60736
60737 spinlock_t irq_lock;
60738
60739 @@ -107,32 +103,18 @@
60740 container_of(work, struct flexcop_pci, irq_check_work.work);
60741 struct flexcop_device *fc = fc_pci->fc_dev;
60742
60743 - if (fc->feedcount) {
60744 + flexcop_ibi_value v = fc->read_ibi_reg(fc,sram_dest_reg_714);
60745
60746 - if (fc_pci->count == fc_pci->count_prev) {
60747 - deb_chk("no IRQ since the last check\n");
60748 - if (fc_pci->stream_problem++ == 3) {
60749 - struct dvb_demux_feed *feed;
60750 -
60751 - spin_lock_irq(&fc->demux.lock);
60752 - list_for_each_entry(feed, &fc->demux.feed_list,
60753 - list_head) {
60754 - flexcop_pid_feed_control(fc, feed, 0);
60755 - }
60756 -
60757 - list_for_each_entry(feed, &fc->demux.feed_list,
60758 - list_head) {
60759 - flexcop_pid_feed_control(fc, feed, 1);
60760 - }
60761 - spin_unlock_irq(&fc->demux.lock);
60762 -
60763 - fc_pci->stream_problem = 0;
60764 - }
60765 - } else {
60766 - fc_pci->stream_problem = 0;
60767 - fc_pci->count_prev = fc_pci->count;
60768 - }
60769 - }
60770 + flexcop_dump_reg(fc_pci->fc_dev,dma1_000,4);
60771 +
60772 + if (v.sram_dest_reg_714.net_ovflow_error)
60773 + deb_chk("sram net_ovflow_error\n");
60774 + if (v.sram_dest_reg_714.media_ovflow_error)
60775 + deb_chk("sram media_ovflow_error\n");
60776 + if (v.sram_dest_reg_714.cai_ovflow_error)
60777 + deb_chk("sram cai_ovflow_error\n");
60778 + if (v.sram_dest_reg_714.cai_ovflow_error)
60779 + deb_chk("sram cai_ovflow_error\n");
60780
60781 schedule_delayed_work(&fc_pci->irq_check_work,
60782 msecs_to_jiffies(irq_chk_intv < 100 ? 100 : irq_chk_intv));
60783 @@ -234,12 +216,16 @@
60784 flexcop_dma_control_timer_irq(fc,FC_DMA_1,1);
60785 deb_irq("IRQ enabled\n");
60786
60787 - fc_pci->count_prev = fc_pci->count;
60788 -
60789 // fc_pci->active_dma1_addr = 0;
60790 // flexcop_dma_control_size_irq(fc,FC_DMA_1,1);
60791
60792 + if (irq_chk_intv > 0)
60793 + schedule_delayed_work(&fc_pci->irq_check_work,
60794 + msecs_to_jiffies(irq_chk_intv < 100 ? 100 : irq_chk_intv));
60795 } else {
60796 + if (irq_chk_intv > 0)
60797 + cancel_delayed_work(&fc_pci->irq_check_work);
60798 +
60799 flexcop_dma_control_timer_irq(fc,FC_DMA_1,0);
60800 deb_irq("IRQ disabled\n");
60801
60802 @@ -313,6 +299,8 @@
60803 IRQF_SHARED, DRIVER_NAME, fc_pci)) != 0)
60804 goto err_pci_iounmap;
60805
60806 +
60807 +
60808 fc_pci->init_state |= FC_PCI_INIT;
60809 return ret;
60810
60811 @@ -387,10 +375,6 @@
60812
60813 INIT_DELAYED_WORK(&fc_pci->irq_check_work, flexcop_pci_irq_check_work);
60814
60815 - if (irq_chk_intv > 0)
60816 - schedule_delayed_work(&fc_pci->irq_check_work,
60817 - msecs_to_jiffies(irq_chk_intv < 100 ? 100 : irq_chk_intv));
60818 -
60819 return ret;
60820
60821 err_fc_exit:
60822 @@ -409,9 +393,6 @@
60823 {
60824 struct flexcop_pci *fc_pci = pci_get_drvdata(pdev);
60825
60826 - if (irq_chk_intv > 0)
60827 - cancel_delayed_work(&fc_pci->irq_check_work);
60828 -
60829 flexcop_pci_dma_exit(fc_pci);
60830 flexcop_device_exit(fc_pci->fc_dev);
60831 flexcop_pci_exit(fc_pci);
60832 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/bt8xx/dst.c linux-2.6.29-rc3.owrt/drivers/media/dvb/bt8xx/dst.c
60833 --- linux-2.6.29.owrt/drivers/media/dvb/bt8xx/dst.c 2009-05-10 22:04:39.000000000 +0200
60834 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/bt8xx/dst.c 2009-05-10 23:48:28.000000000 +0200
60835 @@ -1683,7 +1683,7 @@
60836
60837 static int dst_get_tuning_algo(struct dvb_frontend *fe)
60838 {
60839 - return dst_algo ? DVBFE_ALGO_HW : DVBFE_ALGO_SW;
60840 + return dst_algo;
60841 }
60842
60843 static int dst_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
60844 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dmxdev.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dmxdev.c
60845 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dmxdev.c 2009-05-10 22:04:39.000000000 +0200
60846 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dmxdev.c 2009-05-10 23:48:28.000000000 +0200
60847 @@ -364,15 +364,16 @@
60848 enum dmx_success success)
60849 {
60850 struct dmxdev_filter *dmxdevfilter = filter->priv;
60851 + unsigned long flags;
60852 int ret;
60853
60854 if (dmxdevfilter->buffer.error) {
60855 wake_up(&dmxdevfilter->buffer.queue);
60856 return 0;
60857 }
60858 - spin_lock(&dmxdevfilter->dev->lock);
60859 + spin_lock_irqsave(&dmxdevfilter->dev->lock, flags);
60860 if (dmxdevfilter->state != DMXDEV_STATE_GO) {
60861 - spin_unlock(&dmxdevfilter->dev->lock);
60862 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags);
60863 return 0;
60864 }
60865 del_timer(&dmxdevfilter->timer);
60866 @@ -391,7 +392,7 @@
60867 }
60868 if (dmxdevfilter->params.sec.flags & DMX_ONESHOT)
60869 dmxdevfilter->state = DMXDEV_STATE_DONE;
60870 - spin_unlock(&dmxdevfilter->dev->lock);
60871 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags);
60872 wake_up(&dmxdevfilter->buffer.queue);
60873 return 0;
60874 }
60875 @@ -403,11 +404,12 @@
60876 {
60877 struct dmxdev_filter *dmxdevfilter = feed->priv;
60878 struct dvb_ringbuffer *buffer;
60879 + unsigned long flags;
60880 int ret;
60881
60882 - spin_lock(&dmxdevfilter->dev->lock);
60883 + spin_lock_irqsave(&dmxdevfilter->dev->lock, flags);
60884 if (dmxdevfilter->params.pes.output == DMX_OUT_DECODER) {
60885 - spin_unlock(&dmxdevfilter->dev->lock);
60886 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags);
60887 return 0;
60888 }
60889
60890 @@ -417,7 +419,7 @@
60891 else
60892 buffer = &dmxdevfilter->dev->dvr_buffer;
60893 if (buffer->error) {
60894 - spin_unlock(&dmxdevfilter->dev->lock);
60895 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags);
60896 wake_up(&buffer->queue);
60897 return 0;
60898 }
60899 @@ -428,7 +430,7 @@
60900 dvb_ringbuffer_flush(buffer);
60901 buffer->error = ret;
60902 }
60903 - spin_unlock(&dmxdevfilter->dev->lock);
60904 + spin_unlock_irqrestore(&dmxdevfilter->dev->lock, flags);
60905 wake_up(&buffer->queue);
60906 return 0;
60907 }
60908 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.c
60909 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2009-05-10 22:04:39.000000000 +0200
60910 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.c 2009-05-10 23:48:28.000000000 +0200
60911 @@ -93,9 +93,6 @@
60912 /* current state of the CAM */
60913 int slot_state;
60914
60915 - /* mutex used for serializing access to one CI slot */
60916 - struct mutex slot_lock;
60917 -
60918 /* Number of CAMCHANGES that have occurred since last processing */
60919 atomic_t camchange_count;
60920
60921 @@ -714,20 +711,14 @@
60922 dprintk("%s\n", __func__);
60923
60924
60925 - /* sanity check */
60926 + // sanity check
60927 if (bytes_write > ca->slot_info[slot].link_buf_size)
60928 return -EINVAL;
60929
60930 - /* it is possible we are dealing with a single buffer implementation,
60931 - thus if there is data available for read or if there is even a read
60932 - already in progress, we do nothing but awake the kernel thread to
60933 - process the data if necessary. */
60934 + /* check if interface is actually waiting for us to read from it, or if a read is in progress */
60935 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0)
60936 goto exitnowrite;
60937 if (status & (STATUSREG_DA | STATUSREG_RE)) {
60938 - if (status & STATUSREG_DA)
60939 - dvb_ca_en50221_thread_wakeup(ca);
60940 -
60941 status = -EAGAIN;
60942 goto exitnowrite;
60943 }
60944 @@ -996,8 +987,6 @@
60945 /* go through all the slots processing them */
60946 for (slot = 0; slot < ca->slot_count; slot++) {
60947
60948 - mutex_lock(&ca->slot_info[slot].slot_lock);
60949 -
60950 // check the cam status + deal with CAMCHANGEs
60951 while (dvb_ca_en50221_check_camstatus(ca, slot)) {
60952 /* clear down an old CI slot if necessary */
60953 @@ -1133,7 +1122,7 @@
60954
60955 case DVB_CA_SLOTSTATE_RUNNING:
60956 if (!ca->open)
60957 - break;
60958 + continue;
60959
60960 // poll slots for data
60961 pktcount = 0;
60962 @@ -1157,8 +1146,6 @@
60963 }
60964 break;
60965 }
60966 -
60967 - mutex_unlock(&ca->slot_info[slot].slot_lock);
60968 }
60969 }
60970
60971 @@ -1194,7 +1181,6 @@
60972 switch (cmd) {
60973 case CA_RESET:
60974 for (slot = 0; slot < ca->slot_count; slot++) {
60975 - mutex_lock(&ca->slot_info[slot].slot_lock);
60976 if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) {
60977 dvb_ca_en50221_slot_shutdown(ca, slot);
60978 if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE)
60979 @@ -1202,7 +1188,6 @@
60980 slot,
60981 DVB_CA_EN50221_CAMCHANGE_INSERTED);
60982 }
60983 - mutex_unlock(&ca->slot_info[slot].slot_lock);
60984 }
60985 ca->next_read_slot = 0;
60986 dvb_ca_en50221_thread_wakeup(ca);
60987 @@ -1323,9 +1308,7 @@
60988 goto exit;
60989 }
60990
60991 - mutex_lock(&ca->slot_info[slot].slot_lock);
60992 status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2);
60993 - mutex_unlock(&ca->slot_info[slot].slot_lock);
60994 if (status == (fraglen + 2)) {
60995 written = 1;
60996 break;
60997 @@ -1681,7 +1664,6 @@
60998 ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE;
60999 atomic_set(&ca->slot_info[i].camchange_count, 0);
61000 ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED;
61001 - mutex_init(&ca->slot_info[i].slot_lock);
61002 }
61003
61004 if (signal_pending(current)) {
61005 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.h linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.h
61006 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.h 2009-05-10 22:04:39.000000000 +0200
61007 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_ca_en50221.h 2009-05-10 23:48:28.000000000 +0200
61008 @@ -45,10 +45,8 @@
61009 /* the module owning this structure */
61010 struct module* owner;
61011
61012 - /* NOTE: the read_*, write_* and poll_slot_status functions will be
61013 - * called for different slots concurrently and need to use locks where
61014 - * and if appropriate. There will be no concurrent access to one slot.
61015 - */
61016 + /* NOTE: the read_*, write_* and poll_slot_status functions must use locks as
61017 + * they may be called from several threads at once */
61018
61019 /* functions for accessing attribute memory on the CAM */
61020 int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address);
61021 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_demux.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_demux.c
61022 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_demux.c 2009-05-10 22:04:39.000000000 +0200
61023 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_demux.c 2009-05-10 23:48:28.000000000 +0200
61024 @@ -399,7 +399,9 @@
61025 void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf,
61026 size_t count)
61027 {
61028 - spin_lock(&demux->lock);
61029 + unsigned long flags;
61030 +
61031 + spin_lock_irqsave(&demux->lock, flags);
61032
61033 while (count--) {
61034 if (buf[0] == 0x47)
61035 @@ -407,16 +409,17 @@
61036 buf += 188;
61037 }
61038
61039 - spin_unlock(&demux->lock);
61040 + spin_unlock_irqrestore(&demux->lock, flags);
61041 }
61042
61043 EXPORT_SYMBOL(dvb_dmx_swfilter_packets);
61044
61045 void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count)
61046 {
61047 + unsigned long flags;
61048 int p = 0, i, j;
61049
61050 - spin_lock(&demux->lock);
61051 + spin_lock_irqsave(&demux->lock, flags);
61052
61053 if (demux->tsbufp) {
61054 i = demux->tsbufp;
61055 @@ -449,17 +452,18 @@
61056 }
61057
61058 bailout:
61059 - spin_unlock(&demux->lock);
61060 + spin_unlock_irqrestore(&demux->lock, flags);
61061 }
61062
61063 EXPORT_SYMBOL(dvb_dmx_swfilter);
61064
61065 void dvb_dmx_swfilter_204(struct dvb_demux *demux, const u8 *buf, size_t count)
61066 {
61067 + unsigned long flags;
61068 int p = 0, i, j;
61069 u8 tmppack[188];
61070
61071 - spin_lock(&demux->lock);
61072 + spin_lock_irqsave(&demux->lock, flags);
61073
61074 if (demux->tsbufp) {
61075 i = demux->tsbufp;
61076 @@ -500,7 +504,7 @@
61077 }
61078
61079 bailout:
61080 - spin_unlock(&demux->lock);
61081 + spin_unlock_irqrestore(&demux->lock, flags);
61082 }
61083
61084 EXPORT_SYMBOL(dvb_dmx_swfilter_204);
61085 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_frontend.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_frontend.c
61086 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-core/dvb_frontend.c 2009-05-10 22:04:39.000000000 +0200
61087 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-core/dvb_frontend.c 2009-05-10 23:48:28.000000000 +0200
61088 @@ -1290,6 +1290,9 @@
61089 dprintk("%s() Finalised property cache\n", __func__);
61090 dtv_property_cache_submit(fe);
61091
61092 + /* Request the search algorithm to search */
61093 + fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
61094 +
61095 r |= dvb_frontend_ioctl_legacy(inode, file, FE_SET_FRONTEND,
61096 &fepriv->parameters);
61097 break;
61098 @@ -1714,10 +1717,6 @@
61099 fepriv->min_delay = (dvb_override_tune_delay * HZ) / 1000;
61100
61101 fepriv->state = FESTATE_RETUNE;
61102 -
61103 - /* Request the search algorithm to search */
61104 - fepriv->algo_status |= DVBFE_ALGO_SEARCH_AGAIN;
61105 -
61106 dvb_frontend_wakeup(fe);
61107 dvb_frontend_add_event(fe, 0);
61108 fepriv->status = 0;
61109 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/af9005-fe.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/af9005-fe.c
61110 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/af9005-fe.c 2009-05-10 22:04:39.000000000 +0200
61111 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/af9005-fe.c 2009-05-10 23:48:28.000000000 +0200
61112 @@ -220,7 +220,7 @@
61113 u16 * abort_count)
61114 {
61115 u32 loc_cw_count = 0, loc_err_count;
61116 - u16 loc_abort_count = 0;
61117 + u16 loc_abort_count;
61118 int ret;
61119
61120 ret =
61121 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/af9015.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/af9015.c
61122 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/af9015.c 2009-05-10 22:04:39.000000000 +0200
61123 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/af9015.c 2009-05-10 23:48:28.000000000 +0200
61124 @@ -694,12 +694,7 @@
61125
61126 /* IR remote controller */
61127 req.addr = AF9015_EEPROM_IR_MODE;
61128 - /* first message will timeout often due to possible hw bug */
61129 - for (i = 0; i < 4; i++) {
61130 - ret = af9015_rw_udev(udev, &req);
61131 - if (!ret)
61132 - break;
61133 - }
61134 + ret = af9015_rw_udev(udev, &req);
61135 if (ret)
61136 goto error;
61137 deb_info("%s: IR mode:%d\n", __func__, val);
61138 @@ -840,19 +835,18 @@
61139 if (!dvb_usb_af9015_dual_mode)
61140 af9015_config.dual_mode = 0;
61141
61142 - /* Set adapter0 buffer size according to USB port speed, adapter1 buffer
61143 - size can be static because it is enabled only USB2.0 */
61144 + /* set buffer size according to USB port speed */
61145 for (i = 0; i < af9015_properties_count; i++) {
61146 /* USB1.1 set smaller buffersize and disable 2nd adapter */
61147 if (udev->speed == USB_SPEED_FULL) {
61148 - af9015_properties[i].adapter[0].stream.u.bulk.buffersize
61149 - = TS_USB11_MAX_PACKET_SIZE;
61150 + af9015_properties[i].adapter->stream.u.bulk.buffersize =
61151 + TS_USB11_MAX_PACKET_SIZE;
61152 /* disable 2nd adapter because we don't have
61153 PID-filters */
61154 af9015_config.dual_mode = 0;
61155 } else {
61156 - af9015_properties[i].adapter[0].stream.u.bulk.buffersize
61157 - = TS_USB20_MAX_PACKET_SIZE;
61158 + af9015_properties[i].adapter->stream.u.bulk.buffersize =
61159 + TS_USB20_MAX_PACKET_SIZE;
61160 }
61161 }
61162
61163 @@ -1260,12 +1254,6 @@
61164 .type = USB_BULK,
61165 .count = 6,
61166 .endpoint = 0x85,
61167 - .u = {
61168 - .bulk = {
61169 - .buffersize =
61170 - TS_USB20_MAX_PACKET_SIZE,
61171 - }
61172 - }
61173 },
61174 }
61175 },
61176 @@ -1365,12 +1353,6 @@
61177 .type = USB_BULK,
61178 .count = 6,
61179 .endpoint = 0x85,
61180 - .u = {
61181 - .bulk = {
61182 - .buffersize =
61183 - TS_USB20_MAX_PACKET_SIZE,
61184 - }
61185 - }
61186 },
61187 }
61188 },
61189 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/dib0700_devices.c linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/dib0700_devices.c
61190 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/dib0700_devices.c 2009-05-10 22:04:39.000000000 +0200
61191 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/dib0700_devices.c 2009-05-10 23:48:28.000000000 +0200
61192 @@ -1393,9 +1393,6 @@
61193 { USB_DEVICE(USB_VID_ASUS, USB_PID_ASUS_U3000H) },
61194 /* 40 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E) },
61195 { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E_SE) },
61196 - { USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_EXPRESS) },
61197 - { USB_DEVICE(USB_VID_TERRATEC,
61198 - USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2) },
61199 { 0 } /* Terminating entry */
61200 };
61201 MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
61202 @@ -1540,8 +1537,7 @@
61203 { "DiBcom STK7700D reference design",
61204 { &dib0700_usb_id_table[14], NULL },
61205 { NULL },
61206 - },
61207 -
61208 + }
61209 },
61210
61211 .rc_interval = DEFAULT_RC_INTERVAL,
61212 @@ -1561,7 +1557,7 @@
61213 },
61214 },
61215
61216 - .num_device_descs = 3,
61217 + .num_device_descs = 2,
61218 .devices = {
61219 { "ASUS My Cinema U3000 Mini DVBT Tuner",
61220 { &dib0700_usb_id_table[23], NULL },
61221 @@ -1570,10 +1566,6 @@
61222 { "Yuan EC372S",
61223 { &dib0700_usb_id_table[31], NULL },
61224 { NULL },
61225 - },
61226 - { "Terratec Cinergy T Express",
61227 - { &dib0700_usb_id_table[42], NULL },
61228 - { NULL },
61229 }
61230 },
61231
61232 @@ -1661,7 +1653,7 @@
61233 }
61234 },
61235
61236 - .num_device_descs = 5,
61237 + .num_device_descs = 4,
61238 .devices = {
61239 { "DiBcom STK7070PD reference design",
61240 { &dib0700_usb_id_table[17], NULL },
61241 @@ -1678,10 +1670,6 @@
61242 { "Hauppauge Nova-TD-500 (84xxx)",
61243 { &dib0700_usb_id_table[36], NULL },
61244 { NULL },
61245 - },
61246 - { "Terratec Cinergy DT USB XS Diversity",
61247 - { &dib0700_usb_id_table[43], NULL },
61248 - { NULL },
61249 }
61250 }
61251 }, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
61252 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/dvb-usb-ids.h linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
61253 --- linux-2.6.29.owrt/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2009-05-10 22:04:39.000000000 +0200
61254 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/dvb-usb/dvb-usb-ids.h 2009-05-10 23:48:28.000000000 +0200
61255 @@ -162,10 +162,8 @@
61256 #define USB_PID_AVERMEDIA_A309 0xa309
61257 #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006
61258 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a
61259 -#define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081
61260 #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058
61261 #define USB_PID_TERRATEC_CINERGY_HT_EXPRESS 0x0060
61262 -#define USB_PID_TERRATEC_CINERGY_T_EXPRESS 0x0062
61263 #define USB_PID_TERRATEC_CINERGY_T_XXS 0x0078
61264 #define USB_PID_PINNACLE_EXPRESSCARD_320CX 0x022e
61265 #define USB_PID_PINNACLE_PCTV2000E 0x022c
61266 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-1394.c linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-1394.c
61267 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-1394.c 2009-05-10 22:04:39.000000000 +0200
61268 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-1394.c 1970-01-01 01:00:00.000000000 +0100
61269 @@ -1,285 +0,0 @@
61270 -/*
61271 - * FireDTV driver (formerly known as FireSAT)
61272 - *
61273 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
61274 - * Copyright (C) 2007-2008 Ben Backx <ben@bbackx.com>
61275 - * Copyright (C) 2008 Henrik Kurelid <henrik@kurelid.se>
61276 - *
61277 - * This program is free software; you can redistribute it and/or
61278 - * modify it under the terms of the GNU General Public License as
61279 - * published by the Free Software Foundation; either version 2 of
61280 - * the License, or (at your option) any later version.
61281 - */
61282 -
61283 -#include <linux/device.h>
61284 -#include <linux/errno.h>
61285 -#include <linux/kernel.h>
61286 -#include <linux/list.h>
61287 -#include <linux/spinlock.h>
61288 -#include <linux/types.h>
61289 -
61290 -#include <dma.h>
61291 -#include <csr1212.h>
61292 -#include <highlevel.h>
61293 -#include <hosts.h>
61294 -#include <ieee1394.h>
61295 -#include <iso.h>
61296 -#include <nodemgr.h>
61297 -
61298 -#include "firedtv.h"
61299 -
61300 -static LIST_HEAD(node_list);
61301 -static DEFINE_SPINLOCK(node_list_lock);
61302 -
61303 -#define FIREWIRE_HEADER_SIZE 4
61304 -#define CIP_HEADER_SIZE 8
61305 -
61306 -static void rawiso_activity_cb(struct hpsb_iso *iso)
61307 -{
61308 - struct firedtv *f, *fdtv = NULL;
61309 - unsigned int i, num, packet;
61310 - unsigned char *buf;
61311 - unsigned long flags;
61312 - int count;
61313 -
61314 - spin_lock_irqsave(&node_list_lock, flags);
61315 - list_for_each_entry(f, &node_list, list)
61316 - if (f->backend_data == iso) {
61317 - fdtv = f;
61318 - break;
61319 - }
61320 - spin_unlock_irqrestore(&node_list_lock, flags);
61321 -
61322 - packet = iso->first_packet;
61323 - num = hpsb_iso_n_ready(iso);
61324 -
61325 - if (!fdtv) {
61326 - dev_err(fdtv->device, "received at unknown iso channel\n");
61327 - goto out;
61328 - }
61329 -
61330 - for (i = 0; i < num; i++, packet = (packet + 1) % iso->buf_packets) {
61331 - buf = dma_region_i(&iso->data_buf, unsigned char,
61332 - iso->infos[packet].offset + CIP_HEADER_SIZE);
61333 - count = (iso->infos[packet].len - CIP_HEADER_SIZE) /
61334 - (188 + FIREWIRE_HEADER_SIZE);
61335 -
61336 - /* ignore empty packet */
61337 - if (iso->infos[packet].len <= CIP_HEADER_SIZE)
61338 - continue;
61339 -
61340 - while (count--) {
61341 - if (buf[FIREWIRE_HEADER_SIZE] == 0x47)
61342 - dvb_dmx_swfilter_packets(&fdtv->demux,
61343 - &buf[FIREWIRE_HEADER_SIZE], 1);
61344 - else
61345 - dev_err(fdtv->device,
61346 - "skipping invalid packet\n");
61347 - buf += 188 + FIREWIRE_HEADER_SIZE;
61348 - }
61349 - }
61350 -out:
61351 - hpsb_iso_recv_release_packets(iso, num);
61352 -}
61353 -
61354 -static inline struct node_entry *node_of(struct firedtv *fdtv)
61355 -{
61356 - return container_of(fdtv->device, struct unit_directory, device)->ne;
61357 -}
61358 -
61359 -static int node_lock(struct firedtv *fdtv, u64 addr, void *data, __be32 arg)
61360 -{
61361 - return hpsb_node_lock(node_of(fdtv), addr, EXTCODE_COMPARE_SWAP, data,
61362 - (__force quadlet_t)arg);
61363 -}
61364 -
61365 -static int node_read(struct firedtv *fdtv, u64 addr, void *data, size_t len)
61366 -{
61367 - return hpsb_node_read(node_of(fdtv), addr, data, len);
61368 -}
61369 -
61370 -static int node_write(struct firedtv *fdtv, u64 addr, void *data, size_t len)
61371 -{
61372 - return hpsb_node_write(node_of(fdtv), addr, data, len);
61373 -}
61374 -
61375 -#define FDTV_ISO_BUFFER_PACKETS 256
61376 -#define FDTV_ISO_BUFFER_SIZE (FDTV_ISO_BUFFER_PACKETS * 200)
61377 -
61378 -static int start_iso(struct firedtv *fdtv)
61379 -{
61380 - struct hpsb_iso *iso_handle;
61381 - int ret;
61382 -
61383 - iso_handle = hpsb_iso_recv_init(node_of(fdtv)->host,
61384 - FDTV_ISO_BUFFER_SIZE, FDTV_ISO_BUFFER_PACKETS,
61385 - fdtv->isochannel, HPSB_ISO_DMA_DEFAULT,
61386 - -1, /* stat.config.irq_interval */
61387 - rawiso_activity_cb);
61388 - if (iso_handle == NULL) {
61389 - dev_err(fdtv->device, "cannot initialize iso receive\n");
61390 - return -ENOMEM;
61391 - }
61392 - fdtv->backend_data = iso_handle;
61393 -
61394 - ret = hpsb_iso_recv_start(iso_handle, -1, -1, 0);
61395 - if (ret != 0) {
61396 - dev_err(fdtv->device, "cannot start iso receive\n");
61397 - hpsb_iso_shutdown(iso_handle);
61398 - fdtv->backend_data = NULL;
61399 - }
61400 - return ret;
61401 -}
61402 -
61403 -static void stop_iso(struct firedtv *fdtv)
61404 -{
61405 - struct hpsb_iso *iso_handle = fdtv->backend_data;
61406 -
61407 - if (iso_handle != NULL) {
61408 - hpsb_iso_stop(iso_handle);
61409 - hpsb_iso_shutdown(iso_handle);
61410 - }
61411 - fdtv->backend_data = NULL;
61412 -}
61413 -
61414 -static const struct firedtv_backend fdtv_1394_backend = {
61415 - .lock = node_lock,
61416 - .read = node_read,
61417 - .write = node_write,
61418 - .start_iso = start_iso,
61419 - .stop_iso = stop_iso,
61420 -};
61421 -
61422 -static void fcp_request(struct hpsb_host *host, int nodeid, int direction,
61423 - int cts, u8 *data, size_t length)
61424 -{
61425 - struct firedtv *f, *fdtv = NULL;
61426 - unsigned long flags;
61427 - int su;
61428 -
61429 - if (length == 0 || (data[0] & 0xf0) != 0)
61430 - return;
61431 -
61432 - su = data[1] & 0x7;
61433 -
61434 - spin_lock_irqsave(&node_list_lock, flags);
61435 - list_for_each_entry(f, &node_list, list)
61436 - if (node_of(f)->host == host &&
61437 - node_of(f)->nodeid == nodeid &&
61438 - (f->subunit == su || (f->subunit == 0 && su == 0x7))) {
61439 - fdtv = f;
61440 - break;
61441 - }
61442 - spin_unlock_irqrestore(&node_list_lock, flags);
61443 -
61444 - if (fdtv)
61445 - avc_recv(fdtv, data, length);
61446 -}
61447 -
61448 -static int node_probe(struct device *dev)
61449 -{
61450 - struct unit_directory *ud =
61451 - container_of(dev, struct unit_directory, device);
61452 - struct firedtv *fdtv;
61453 - int kv_len, err;
61454 - void *kv_str;
61455 -
61456 - kv_len = (ud->model_name_kv->value.leaf.len - 2) * sizeof(quadlet_t);
61457 - kv_str = CSR1212_TEXTUAL_DESCRIPTOR_LEAF_DATA(ud->model_name_kv);
61458 -
61459 - fdtv = fdtv_alloc(dev, &fdtv_1394_backend, kv_str, kv_len);
61460 - if (!fdtv)
61461 - return -ENOMEM;
61462 -
61463 - /*
61464 - * Work around a bug in udev's path_id script: Use the fw-host's dev
61465 - * instead of the unit directory's dev as parent of the input device.
61466 - */
61467 - err = fdtv_register_rc(fdtv, dev->parent->parent);
61468 - if (err)
61469 - goto fail_free;
61470 -
61471 - spin_lock_irq(&node_list_lock);
61472 - list_add_tail(&fdtv->list, &node_list);
61473 - spin_unlock_irq(&node_list_lock);
61474 -
61475 - err = avc_identify_subunit(fdtv);
61476 - if (err)
61477 - goto fail;
61478 -
61479 - err = fdtv_dvb_register(fdtv);
61480 - if (err)
61481 - goto fail;
61482 -
61483 - avc_register_remote_control(fdtv);
61484 - return 0;
61485 -fail:
61486 - spin_lock_irq(&node_list_lock);
61487 - list_del(&fdtv->list);
61488 - spin_unlock_irq(&node_list_lock);
61489 - fdtv_unregister_rc(fdtv);
61490 -fail_free:
61491 - kfree(fdtv);
61492 - return err;
61493 -}
61494 -
61495 -static int node_remove(struct device *dev)
61496 -{
61497 - struct firedtv *fdtv = dev->driver_data;
61498 -
61499 - fdtv_dvb_unregister(fdtv);
61500 -
61501 - spin_lock_irq(&node_list_lock);
61502 - list_del(&fdtv->list);
61503 - spin_unlock_irq(&node_list_lock);
61504 -
61505 - cancel_work_sync(&fdtv->remote_ctrl_work);
61506 - fdtv_unregister_rc(fdtv);
61507 -
61508 - kfree(fdtv);
61509 - return 0;
61510 -}
61511 -
61512 -static int node_update(struct unit_directory *ud)
61513 -{
61514 - struct firedtv *fdtv = ud->device.driver_data;
61515 -
61516 - if (fdtv->isochannel >= 0)
61517 - cmp_establish_pp_connection(fdtv, fdtv->subunit,
61518 - fdtv->isochannel);
61519 - return 0;
61520 -}
61521 -
61522 -static struct hpsb_protocol_driver fdtv_driver = {
61523 - .name = "firedtv",
61524 - .update = node_update,
61525 - .driver = {
61526 - .probe = node_probe,
61527 - .remove = node_remove,
61528 - },
61529 -};
61530 -
61531 -static struct hpsb_highlevel fdtv_highlevel = {
61532 - .name = "firedtv",
61533 - .fcp_request = fcp_request,
61534 -};
61535 -
61536 -int __init fdtv_1394_init(struct ieee1394_device_id id_table[])
61537 -{
61538 - int ret;
61539 -
61540 - hpsb_register_highlevel(&fdtv_highlevel);
61541 - fdtv_driver.id_table = id_table;
61542 - ret = hpsb_register_protocol(&fdtv_driver);
61543 - if (ret) {
61544 - printk(KERN_ERR "firedtv: failed to register protocol\n");
61545 - hpsb_unregister_highlevel(&fdtv_highlevel);
61546 - }
61547 - return ret;
61548 -}
61549 -
61550 -void __exit fdtv_1394_exit(void)
61551 -{
61552 - hpsb_unregister_protocol(&fdtv_driver);
61553 - hpsb_unregister_highlevel(&fdtv_highlevel);
61554 -}
61555 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-avc.c linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-avc.c
61556 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-avc.c 2009-05-10 22:04:39.000000000 +0200
61557 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-avc.c 1970-01-01 01:00:00.000000000 +0100
61558 @@ -1,1315 +0,0 @@
61559 -/*
61560 - * FireDTV driver (formerly known as FireSAT)
61561 - *
61562 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
61563 - * Copyright (C) 2008 Ben Backx <ben@bbackx.com>
61564 - * Copyright (C) 2008 Henrik Kurelid <henrik@kurelid.se>
61565 - *
61566 - * This program is free software; you can redistribute it and/or
61567 - * modify it under the terms of the GNU General Public License as
61568 - * published by the Free Software Foundation; either version 2 of
61569 - * the License, or (at your option) any later version.
61570 - */
61571 -
61572 -#include <linux/bug.h>
61573 -#include <linux/crc32.h>
61574 -#include <linux/delay.h>
61575 -#include <linux/device.h>
61576 -#include <linux/jiffies.h>
61577 -#include <linux/kernel.h>
61578 -#include <linux/moduleparam.h>
61579 -#include <linux/mutex.h>
61580 -#include <linux/string.h>
61581 -#include <linux/stringify.h>
61582 -#include <linux/wait.h>
61583 -#include <linux/workqueue.h>
61584 -
61585 -#include "firedtv.h"
61586 -
61587 -#define FCP_COMMAND_REGISTER 0xfffff0000b00ULL
61588 -
61589 -#define AVC_CTYPE_CONTROL 0x0
61590 -#define AVC_CTYPE_STATUS 0x1
61591 -#define AVC_CTYPE_NOTIFY 0x3
61592 -
61593 -#define AVC_RESPONSE_ACCEPTED 0x9
61594 -#define AVC_RESPONSE_STABLE 0xc
61595 -#define AVC_RESPONSE_CHANGED 0xd
61596 -#define AVC_RESPONSE_INTERIM 0xf
61597 -
61598 -#define AVC_SUBUNIT_TYPE_TUNER (0x05 << 3)
61599 -#define AVC_SUBUNIT_TYPE_UNIT (0x1f << 3)
61600 -
61601 -#define AVC_OPCODE_VENDOR 0x00
61602 -#define AVC_OPCODE_READ_DESCRIPTOR 0x09
61603 -#define AVC_OPCODE_DSIT 0xc8
61604 -#define AVC_OPCODE_DSD 0xcb
61605 -
61606 -#define DESCRIPTOR_TUNER_STATUS 0x80
61607 -#define DESCRIPTOR_SUBUNIT_IDENTIFIER 0x00
61608 -
61609 -#define SFE_VENDOR_DE_COMPANYID_0 0x00 /* OUI of Digital Everywhere */
61610 -#define SFE_VENDOR_DE_COMPANYID_1 0x12
61611 -#define SFE_VENDOR_DE_COMPANYID_2 0x87
61612 -
61613 -#define SFE_VENDOR_OPCODE_REGISTER_REMOTE_CONTROL 0x0a
61614 -#define SFE_VENDOR_OPCODE_LNB_CONTROL 0x52
61615 -#define SFE_VENDOR_OPCODE_TUNE_QPSK 0x58 /* for DVB-S */
61616 -
61617 -#define SFE_VENDOR_OPCODE_GET_FIRMWARE_VERSION 0x00
61618 -#define SFE_VENDOR_OPCODE_HOST2CA 0x56
61619 -#define SFE_VENDOR_OPCODE_CA2HOST 0x57
61620 -#define SFE_VENDOR_OPCODE_CISTATUS 0x59
61621 -#define SFE_VENDOR_OPCODE_TUNE_QPSK2 0x60 /* for DVB-S2 */
61622 -
61623 -#define SFE_VENDOR_TAG_CA_RESET 0x00
61624 -#define SFE_VENDOR_TAG_CA_APPLICATION_INFO 0x01
61625 -#define SFE_VENDOR_TAG_CA_PMT 0x02
61626 -#define SFE_VENDOR_TAG_CA_DATE_TIME 0x04
61627 -#define SFE_VENDOR_TAG_CA_MMI 0x05
61628 -#define SFE_VENDOR_TAG_CA_ENTER_MENU 0x07
61629 -
61630 -#define EN50221_LIST_MANAGEMENT_ONLY 0x03
61631 -#define EN50221_TAG_APP_INFO 0x9f8021
61632 -#define EN50221_TAG_CA_INFO 0x9f8031
61633 -
61634 -struct avc_command_frame {
61635 - int length;
61636 - u8 ctype;
61637 - u8 subunit;
61638 - u8 opcode;
61639 - u8 operand[509];
61640 -};
61641 -
61642 -struct avc_response_frame {
61643 - int length;
61644 - u8 response;
61645 - u8 subunit;
61646 - u8 opcode;
61647 - u8 operand[509];
61648 -};
61649 -
61650 -#define AVC_DEBUG_FCP_SUBACTIONS 1
61651 -#define AVC_DEBUG_FCP_PAYLOADS 2
61652 -
61653 -static int avc_debug;
61654 -module_param_named(debug, avc_debug, int, 0644);
61655 -MODULE_PARM_DESC(debug, "Verbose logging (default = 0"
61656 - ", FCP subactions = " __stringify(AVC_DEBUG_FCP_SUBACTIONS)
61657 - ", FCP payloads = " __stringify(AVC_DEBUG_FCP_PAYLOADS)
61658 - ", or all = -1)");
61659 -
61660 -static const char *debug_fcp_ctype(unsigned int ctype)
61661 -{
61662 - static const char *ctypes[] = {
61663 - [0x0] = "CONTROL", [0x1] = "STATUS",
61664 - [0x2] = "SPECIFIC INQUIRY", [0x3] = "NOTIFY",
61665 - [0x4] = "GENERAL INQUIRY", [0x8] = "NOT IMPLEMENTED",
61666 - [0x9] = "ACCEPTED", [0xa] = "REJECTED",
61667 - [0xb] = "IN TRANSITION", [0xc] = "IMPLEMENTED/STABLE",
61668 - [0xd] = "CHANGED", [0xf] = "INTERIM",
61669 - };
61670 - const char *ret = ctype < ARRAY_SIZE(ctypes) ? ctypes[ctype] : NULL;
61671 -
61672 - return ret ? ret : "?";
61673 -}
61674 -
61675 -static const char *debug_fcp_opcode(unsigned int opcode,
61676 - const u8 *data, size_t length)
61677 -{
61678 - switch (opcode) {
61679 - case AVC_OPCODE_VENDOR: break;
61680 - case AVC_OPCODE_READ_DESCRIPTOR: return "ReadDescriptor";
61681 - case AVC_OPCODE_DSIT: return "DirectSelectInfo.Type";
61682 - case AVC_OPCODE_DSD: return "DirectSelectData";
61683 - default: return "?";
61684 - }
61685 -
61686 - if (length < 7 ||
61687 - data[3] != SFE_VENDOR_DE_COMPANYID_0 ||
61688 - data[4] != SFE_VENDOR_DE_COMPANYID_1 ||
61689 - data[5] != SFE_VENDOR_DE_COMPANYID_2)
61690 - return "Vendor";
61691 -
61692 - switch (data[6]) {
61693 - case SFE_VENDOR_OPCODE_REGISTER_REMOTE_CONTROL: return "RegisterRC";
61694 - case SFE_VENDOR_OPCODE_LNB_CONTROL: return "LNBControl";
61695 - case SFE_VENDOR_OPCODE_TUNE_QPSK: return "TuneQPSK";
61696 - case SFE_VENDOR_OPCODE_HOST2CA: return "Host2CA";
61697 - case SFE_VENDOR_OPCODE_CA2HOST: return "CA2Host";
61698 - }
61699 - return "Vendor";
61700 -}
61701 -
61702 -static void debug_fcp(const u8 *data, size_t length)
61703 -{
61704 - unsigned int subunit_type, subunit_id, op;
61705 - const char *prefix = data[0] > 7 ? "FCP <- " : "FCP -> ";
61706 -
61707 - if (avc_debug & AVC_DEBUG_FCP_SUBACTIONS) {
61708 - subunit_type = data[1] >> 3;
61709 - subunit_id = data[1] & 7;
61710 - op = subunit_type == 0x1e || subunit_id == 5 ? ~0 : data[2];
61711 - printk(KERN_INFO "%ssu=%x.%x l=%d: %-8s - %s\n",
61712 - prefix, subunit_type, subunit_id, length,
61713 - debug_fcp_ctype(data[0]),
61714 - debug_fcp_opcode(op, data, length));
61715 - }
61716 -
61717 - if (avc_debug & AVC_DEBUG_FCP_PAYLOADS)
61718 - print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_NONE, 16, 1,
61719 - data, length, false);
61720 -}
61721 -
61722 -static int __avc_write(struct firedtv *fdtv,
61723 - const struct avc_command_frame *c, struct avc_response_frame *r)
61724 -{
61725 - int err, retry;
61726 -
61727 - if (r)
61728 - fdtv->avc_reply_received = false;
61729 -
61730 - for (retry = 0; retry < 6; retry++) {
61731 - if (unlikely(avc_debug))
61732 - debug_fcp(&c->ctype, c->length);
61733 -
61734 - err = fdtv->backend->write(fdtv, FCP_COMMAND_REGISTER,
61735 - (void *)&c->ctype, c->length);
61736 - if (err) {
61737 - fdtv->avc_reply_received = true;
61738 - dev_err(fdtv->device, "FCP command write failed\n");
61739 - return err;
61740 - }
61741 -
61742 - if (!r)
61743 - return 0;
61744 -
61745 - /*
61746 - * AV/C specs say that answers should be sent within 150 ms.
61747 - * Time out after 200 ms.
61748 - */
61749 - if (wait_event_timeout(fdtv->avc_wait,
61750 - fdtv->avc_reply_received,
61751 - msecs_to_jiffies(200)) != 0) {
61752 - r->length = fdtv->response_length;
61753 - memcpy(&r->response, fdtv->response, r->length);
61754 -
61755 - return 0;
61756 - }
61757 - }
61758 - dev_err(fdtv->device, "FCP response timed out\n");
61759 - return -ETIMEDOUT;
61760 -}
61761 -
61762 -static int avc_write(struct firedtv *fdtv,
61763 - const struct avc_command_frame *c, struct avc_response_frame *r)
61764 -{
61765 - int ret;
61766 -
61767 - if (mutex_lock_interruptible(&fdtv->avc_mutex))
61768 - return -EINTR;
61769 -
61770 - ret = __avc_write(fdtv, c, r);
61771 -
61772 - mutex_unlock(&fdtv->avc_mutex);
61773 - return ret;
61774 -}
61775 -
61776 -int avc_recv(struct firedtv *fdtv, void *data, size_t length)
61777 -{
61778 - struct avc_response_frame *r =
61779 - data - offsetof(struct avc_response_frame, response);
61780 -
61781 - if (unlikely(avc_debug))
61782 - debug_fcp(data, length);
61783 -
61784 - if (length >= 8 &&
61785 - r->operand[0] == SFE_VENDOR_DE_COMPANYID_0 &&
61786 - r->operand[1] == SFE_VENDOR_DE_COMPANYID_1 &&
61787 - r->operand[2] == SFE_VENDOR_DE_COMPANYID_2 &&
61788 - r->operand[3] == SFE_VENDOR_OPCODE_REGISTER_REMOTE_CONTROL) {
61789 - if (r->response == AVC_RESPONSE_CHANGED) {
61790 - fdtv_handle_rc(fdtv,
61791 - r->operand[4] << 8 | r->operand[5]);
61792 - schedule_work(&fdtv->remote_ctrl_work);
61793 - } else if (r->response != AVC_RESPONSE_INTERIM) {
61794 - dev_info(fdtv->device,
61795 - "remote control result = %d\n", r->response);
61796 - }
61797 - return 0;
61798 - }
61799 -
61800 - if (fdtv->avc_reply_received) {
61801 - dev_err(fdtv->device, "out-of-order AVC response, ignored\n");
61802 - return -EIO;
61803 - }
61804 -
61805 - memcpy(fdtv->response, data, length);
61806 - fdtv->response_length = length;
61807 -
61808 - fdtv->avc_reply_received = true;
61809 - wake_up(&fdtv->avc_wait);
61810 -
61811 - return 0;
61812 -}
61813 -
61814 -/*
61815 - * tuning command for setting the relative LNB frequency
61816 - * (not supported by the AVC standard)
61817 - */
61818 -static void avc_tuner_tuneqpsk(struct firedtv *fdtv,
61819 - struct dvb_frontend_parameters *params,
61820 - struct avc_command_frame *c)
61821 -{
61822 - c->opcode = AVC_OPCODE_VENDOR;
61823 -
61824 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
61825 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
61826 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
61827 - c->operand[3] = SFE_VENDOR_OPCODE_TUNE_QPSK;
61828 -
61829 - c->operand[4] = (params->frequency >> 24) & 0xff;
61830 - c->operand[5] = (params->frequency >> 16) & 0xff;
61831 - c->operand[6] = (params->frequency >> 8) & 0xff;
61832 - c->operand[7] = params->frequency & 0xff;
61833 -
61834 - c->operand[8] = ((params->u.qpsk.symbol_rate / 1000) >> 8) & 0xff;
61835 - c->operand[9] = (params->u.qpsk.symbol_rate / 1000) & 0xff;
61836 -
61837 - switch (params->u.qpsk.fec_inner) {
61838 - case FEC_1_2: c->operand[10] = 0x1; break;
61839 - case FEC_2_3: c->operand[10] = 0x2; break;
61840 - case FEC_3_4: c->operand[10] = 0x3; break;
61841 - case FEC_5_6: c->operand[10] = 0x4; break;
61842 - case FEC_7_8: c->operand[10] = 0x5; break;
61843 - case FEC_4_5:
61844 - case FEC_8_9:
61845 - case FEC_AUTO:
61846 - default: c->operand[10] = 0x0;
61847 - }
61848 -
61849 - if (fdtv->voltage == 0xff)
61850 - c->operand[11] = 0xff;
61851 - else if (fdtv->voltage == SEC_VOLTAGE_18) /* polarisation */
61852 - c->operand[11] = 0;
61853 - else
61854 - c->operand[11] = 1;
61855 -
61856 - if (fdtv->tone == 0xff)
61857 - c->operand[12] = 0xff;
61858 - else if (fdtv->tone == SEC_TONE_ON) /* band */
61859 - c->operand[12] = 1;
61860 - else
61861 - c->operand[12] = 0;
61862 -
61863 - if (fdtv->type == FIREDTV_DVB_S2) {
61864 - c->operand[13] = 0x1;
61865 - c->operand[14] = 0xff;
61866 - c->operand[15] = 0xff;
61867 - c->length = 20;
61868 - } else {
61869 - c->length = 16;
61870 - }
61871 -}
61872 -
61873 -static void avc_tuner_dsd_dvb_c(struct dvb_frontend_parameters *params,
61874 - struct avc_command_frame *c)
61875 -{
61876 - c->opcode = AVC_OPCODE_DSD;
61877 -
61878 - c->operand[0] = 0; /* source plug */
61879 - c->operand[1] = 0xd2; /* subfunction replace */
61880 - c->operand[2] = 0x20; /* system id = DVB */
61881 - c->operand[3] = 0x00; /* antenna number */
61882 - c->operand[4] = 0x11; /* system_specific_multiplex selection_length */
61883 -
61884 - /* multiplex_valid_flags, high byte */
61885 - c->operand[5] = 0 << 7 /* reserved */
61886 - | 0 << 6 /* Polarisation */
61887 - | 0 << 5 /* Orbital_Pos */
61888 - | 1 << 4 /* Frequency */
61889 - | 1 << 3 /* Symbol_Rate */
61890 - | 0 << 2 /* FEC_outer */
61891 - | (params->u.qam.fec_inner != FEC_AUTO ? 1 << 1 : 0)
61892 - | (params->u.qam.modulation != QAM_AUTO ? 1 << 0 : 0);
61893 -
61894 - /* multiplex_valid_flags, low byte */
61895 - c->operand[6] = 0 << 7 /* NetworkID */
61896 - | 0 << 0 /* reserved */ ;
61897 -
61898 - c->operand[7] = 0x00;
61899 - c->operand[8] = 0x00;
61900 - c->operand[9] = 0x00;
61901 - c->operand[10] = 0x00;
61902 -
61903 - c->operand[11] = (((params->frequency / 4000) >> 16) & 0xff) | (2 << 6);
61904 - c->operand[12] = ((params->frequency / 4000) >> 8) & 0xff;
61905 - c->operand[13] = (params->frequency / 4000) & 0xff;
61906 - c->operand[14] = ((params->u.qpsk.symbol_rate / 1000) >> 12) & 0xff;
61907 - c->operand[15] = ((params->u.qpsk.symbol_rate / 1000) >> 4) & 0xff;
61908 - c->operand[16] = ((params->u.qpsk.symbol_rate / 1000) << 4) & 0xf0;
61909 - c->operand[17] = 0x00;
61910 -
61911 - switch (params->u.qpsk.fec_inner) {
61912 - case FEC_1_2: c->operand[18] = 0x1; break;
61913 - case FEC_2_3: c->operand[18] = 0x2; break;
61914 - case FEC_3_4: c->operand[18] = 0x3; break;
61915 - case FEC_5_6: c->operand[18] = 0x4; break;
61916 - case FEC_7_8: c->operand[18] = 0x5; break;
61917 - case FEC_8_9: c->operand[18] = 0x6; break;
61918 - case FEC_4_5: c->operand[18] = 0x8; break;
61919 - case FEC_AUTO:
61920 - default: c->operand[18] = 0x0;
61921 - }
61922 -
61923 - switch (params->u.qam.modulation) {
61924 - case QAM_16: c->operand[19] = 0x08; break;
61925 - case QAM_32: c->operand[19] = 0x10; break;
61926 - case QAM_64: c->operand[19] = 0x18; break;
61927 - case QAM_128: c->operand[19] = 0x20; break;
61928 - case QAM_256: c->operand[19] = 0x28; break;
61929 - case QAM_AUTO:
61930 - default: c->operand[19] = 0x00;
61931 - }
61932 -
61933 - c->operand[20] = 0x00;
61934 - c->operand[21] = 0x00;
61935 - /* Nr_of_dsd_sel_specs = 0 -> no PIDs are transmitted */
61936 - c->operand[22] = 0x00;
61937 -
61938 - c->length = 28;
61939 -}
61940 -
61941 -static void avc_tuner_dsd_dvb_t(struct dvb_frontend_parameters *params,
61942 - struct avc_command_frame *c)
61943 -{
61944 - struct dvb_ofdm_parameters *ofdm = &params->u.ofdm;
61945 -
61946 - c->opcode = AVC_OPCODE_DSD;
61947 -
61948 - c->operand[0] = 0; /* source plug */
61949 - c->operand[1] = 0xd2; /* subfunction replace */
61950 - c->operand[2] = 0x20; /* system id = DVB */
61951 - c->operand[3] = 0x00; /* antenna number */
61952 - c->operand[4] = 0x0c; /* system_specific_multiplex selection_length */
61953 -
61954 - /* multiplex_valid_flags, high byte */
61955 - c->operand[5] =
61956 - 0 << 7 /* reserved */
61957 - | 1 << 6 /* CenterFrequency */
61958 - | (ofdm->bandwidth != BANDWIDTH_AUTO ? 1 << 5 : 0)
61959 - | (ofdm->constellation != QAM_AUTO ? 1 << 4 : 0)
61960 - | (ofdm->hierarchy_information != HIERARCHY_AUTO ? 1 << 3 : 0)
61961 - | (ofdm->code_rate_HP != FEC_AUTO ? 1 << 2 : 0)
61962 - | (ofdm->code_rate_LP != FEC_AUTO ? 1 << 1 : 0)
61963 - | (ofdm->guard_interval != GUARD_INTERVAL_AUTO ? 1 << 0 : 0);
61964 -
61965 - /* multiplex_valid_flags, low byte */
61966 - c->operand[6] =
61967 - 0 << 7 /* NetworkID */
61968 - | (ofdm->transmission_mode != TRANSMISSION_MODE_AUTO ? 1 << 6 : 0)
61969 - | 0 << 5 /* OtherFrequencyFlag */
61970 - | 0 << 0 /* reserved */ ;
61971 -
61972 - c->operand[7] = 0x0;
61973 - c->operand[8] = (params->frequency / 10) >> 24;
61974 - c->operand[9] = ((params->frequency / 10) >> 16) & 0xff;
61975 - c->operand[10] = ((params->frequency / 10) >> 8) & 0xff;
61976 - c->operand[11] = (params->frequency / 10) & 0xff;
61977 -
61978 - switch (ofdm->bandwidth) {
61979 - case BANDWIDTH_7_MHZ: c->operand[12] = 0x20; break;
61980 - case BANDWIDTH_8_MHZ:
61981 - case BANDWIDTH_6_MHZ: /* not defined by AVC spec */
61982 - case BANDWIDTH_AUTO:
61983 - default: c->operand[12] = 0x00;
61984 - }
61985 -
61986 - switch (ofdm->constellation) {
61987 - case QAM_16: c->operand[13] = 1 << 6; break;
61988 - case QAM_64: c->operand[13] = 2 << 6; break;
61989 - case QPSK:
61990 - default: c->operand[13] = 0x00;
61991 - }
61992 -
61993 - switch (ofdm->hierarchy_information) {
61994 - case HIERARCHY_1: c->operand[13] |= 1 << 3; break;
61995 - case HIERARCHY_2: c->operand[13] |= 2 << 3; break;
61996 - case HIERARCHY_4: c->operand[13] |= 3 << 3; break;
61997 - case HIERARCHY_AUTO:
61998 - case HIERARCHY_NONE:
61999 - default: break;
62000 - }
62001 -
62002 - switch (ofdm->code_rate_HP) {
62003 - case FEC_2_3: c->operand[13] |= 1; break;
62004 - case FEC_3_4: c->operand[13] |= 2; break;
62005 - case FEC_5_6: c->operand[13] |= 3; break;
62006 - case FEC_7_8: c->operand[13] |= 4; break;
62007 - case FEC_1_2:
62008 - default: break;
62009 - }
62010 -
62011 - switch (ofdm->code_rate_LP) {
62012 - case FEC_2_3: c->operand[14] = 1 << 5; break;
62013 - case FEC_3_4: c->operand[14] = 2 << 5; break;
62014 - case FEC_5_6: c->operand[14] = 3 << 5; break;
62015 - case FEC_7_8: c->operand[14] = 4 << 5; break;
62016 - case FEC_1_2:
62017 - default: c->operand[14] = 0x00; break;
62018 - }
62019 -
62020 - switch (ofdm->guard_interval) {
62021 - case GUARD_INTERVAL_1_16: c->operand[14] |= 1 << 3; break;
62022 - case GUARD_INTERVAL_1_8: c->operand[14] |= 2 << 3; break;
62023 - case GUARD_INTERVAL_1_4: c->operand[14] |= 3 << 3; break;
62024 - case GUARD_INTERVAL_1_32:
62025 - case GUARD_INTERVAL_AUTO:
62026 - default: break;
62027 - }
62028 -
62029 - switch (ofdm->transmission_mode) {
62030 - case TRANSMISSION_MODE_8K: c->operand[14] |= 1 << 1; break;
62031 - case TRANSMISSION_MODE_2K:
62032 - case TRANSMISSION_MODE_AUTO:
62033 - default: break;
62034 - }
62035 -
62036 - c->operand[15] = 0x00; /* network_ID[0] */
62037 - c->operand[16] = 0x00; /* network_ID[1] */
62038 - /* Nr_of_dsd_sel_specs = 0 -> no PIDs are transmitted */
62039 - c->operand[17] = 0x00;
62040 -
62041 - c->length = 24;
62042 -}
62043 -
62044 -int avc_tuner_dsd(struct firedtv *fdtv,
62045 - struct dvb_frontend_parameters *params)
62046 -{
62047 - char buffer[sizeof(struct avc_command_frame)];
62048 - struct avc_command_frame *c = (void *)buffer;
62049 - struct avc_response_frame *r = (void *)buffer; /* FIXME: unused */
62050 -
62051 - memset(c, 0, sizeof(*c));
62052 -
62053 - c->ctype = AVC_CTYPE_CONTROL;
62054 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62055 -
62056 - switch (fdtv->type) {
62057 - case FIREDTV_DVB_S:
62058 - case FIREDTV_DVB_S2: avc_tuner_tuneqpsk(fdtv, params, c); break;
62059 - case FIREDTV_DVB_C: avc_tuner_dsd_dvb_c(params, c); break;
62060 - case FIREDTV_DVB_T: avc_tuner_dsd_dvb_t(params, c); break;
62061 - default:
62062 - BUG();
62063 - }
62064 -
62065 - if (avc_write(fdtv, c, r) < 0)
62066 - return -EIO;
62067 -
62068 - msleep(500);
62069 -#if 0
62070 - /* FIXME: */
62071 - /* u8 *status was an out-parameter of avc_tuner_dsd, unused by caller */
62072 - if (status)
62073 - *status = r->operand[2];
62074 -#endif
62075 - return 0;
62076 -}
62077 -
62078 -int avc_tuner_set_pids(struct firedtv *fdtv, unsigned char pidc, u16 pid[])
62079 -{
62080 - char buffer[sizeof(struct avc_command_frame)];
62081 - struct avc_command_frame *c = (void *)buffer;
62082 - struct avc_response_frame *r = (void *)buffer; /* FIXME: unused */
62083 - int pos, k;
62084 -
62085 - if (pidc > 16 && pidc != 0xff)
62086 - return -EINVAL;
62087 -
62088 - memset(c, 0, sizeof(*c));
62089 -
62090 - c->ctype = AVC_CTYPE_CONTROL;
62091 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62092 - c->opcode = AVC_OPCODE_DSD;
62093 -
62094 - c->operand[0] = 0; /* source plug */
62095 - c->operand[1] = 0xd2; /* subfunction replace */
62096 - c->operand[2] = 0x20; /* system id = DVB */
62097 - c->operand[3] = 0x00; /* antenna number */
62098 - c->operand[4] = 0x00; /* system_specific_multiplex selection_length */
62099 - c->operand[5] = pidc; /* Nr_of_dsd_sel_specs */
62100 -
62101 - pos = 6;
62102 - if (pidc != 0xff)
62103 - for (k = 0; k < pidc; k++) {
62104 - c->operand[pos++] = 0x13; /* flowfunction relay */
62105 - c->operand[pos++] = 0x80; /* dsd_sel_spec_valid_flags -> PID */
62106 - c->operand[pos++] = (pid[k] >> 8) & 0x1f;
62107 - c->operand[pos++] = pid[k] & 0xff;
62108 - c->operand[pos++] = 0x00; /* tableID */
62109 - c->operand[pos++] = 0x00; /* filter_length */
62110 - }
62111 -
62112 - c->length = ALIGN(3 + pos, 4);
62113 -
62114 - if (avc_write(fdtv, c, r) < 0)
62115 - return -EIO;
62116 -
62117 - msleep(50);
62118 - return 0;
62119 -}
62120 -
62121 -int avc_tuner_get_ts(struct firedtv *fdtv)
62122 -{
62123 - char buffer[sizeof(struct avc_command_frame)];
62124 - struct avc_command_frame *c = (void *)buffer;
62125 - struct avc_response_frame *r = (void *)buffer; /* FIXME: unused */
62126 - int sl;
62127 -
62128 - memset(c, 0, sizeof(*c));
62129 -
62130 - c->ctype = AVC_CTYPE_CONTROL;
62131 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62132 - c->opcode = AVC_OPCODE_DSIT;
62133 -
62134 - sl = fdtv->type == FIREDTV_DVB_T ? 0x0c : 0x11;
62135 -
62136 - c->operand[0] = 0; /* source plug */
62137 - c->operand[1] = 0xd2; /* subfunction replace */
62138 - c->operand[2] = 0xff; /* status */
62139 - c->operand[3] = 0x20; /* system id = DVB */
62140 - c->operand[4] = 0x00; /* antenna number */
62141 - c->operand[5] = 0x0; /* system_specific_search_flags */
62142 - c->operand[6] = sl; /* system_specific_multiplex selection_length */
62143 - c->operand[7] = 0x00; /* valid_flags [0] */
62144 - c->operand[8] = 0x00; /* valid_flags [1] */
62145 - c->operand[7 + sl] = 0x00; /* nr_of_dsit_sel_specs (always 0) */
62146 -
62147 - c->length = fdtv->type == FIREDTV_DVB_T ? 24 : 28;
62148 -
62149 - if (avc_write(fdtv, c, r) < 0)
62150 - return -EIO;
62151 -
62152 - msleep(250);
62153 - return 0;
62154 -}
62155 -
62156 -int avc_identify_subunit(struct firedtv *fdtv)
62157 -{
62158 - char buffer[sizeof(struct avc_command_frame)];
62159 - struct avc_command_frame *c = (void *)buffer;
62160 - struct avc_response_frame *r = (void *)buffer;
62161 -
62162 - memset(c, 0, sizeof(*c));
62163 -
62164 - c->ctype = AVC_CTYPE_CONTROL;
62165 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62166 - c->opcode = AVC_OPCODE_READ_DESCRIPTOR;
62167 -
62168 - c->operand[0] = DESCRIPTOR_SUBUNIT_IDENTIFIER;
62169 - c->operand[1] = 0xff;
62170 - c->operand[2] = 0x00;
62171 - c->operand[3] = 0x00; /* length highbyte */
62172 - c->operand[4] = 0x08; /* length lowbyte */
62173 - c->operand[5] = 0x00; /* offset highbyte */
62174 - c->operand[6] = 0x0d; /* offset lowbyte */
62175 -
62176 - c->length = 12;
62177 -
62178 - if (avc_write(fdtv, c, r) < 0)
62179 - return -EIO;
62180 -
62181 - if ((r->response != AVC_RESPONSE_STABLE &&
62182 - r->response != AVC_RESPONSE_ACCEPTED) ||
62183 - (r->operand[3] << 8) + r->operand[4] != 8) {
62184 - dev_err(fdtv->device, "cannot read subunit identifier\n");
62185 - return -EINVAL;
62186 - }
62187 - return 0;
62188 -}
62189 -
62190 -#define SIZEOF_ANTENNA_INPUT_INFO 22
62191 -
62192 -int avc_tuner_status(struct firedtv *fdtv, struct firedtv_tuner_status *stat)
62193 -{
62194 - char buffer[sizeof(struct avc_command_frame)];
62195 - struct avc_command_frame *c = (void *)buffer;
62196 - struct avc_response_frame *r = (void *)buffer;
62197 - int length;
62198 -
62199 - memset(c, 0, sizeof(*c));
62200 -
62201 - c->ctype = AVC_CTYPE_CONTROL;
62202 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62203 - c->opcode = AVC_OPCODE_READ_DESCRIPTOR;
62204 -
62205 - c->operand[0] = DESCRIPTOR_TUNER_STATUS;
62206 - c->operand[1] = 0xff; /* read_result_status */
62207 - c->operand[2] = 0x00; /* reserved */
62208 - c->operand[3] = 0; /* SIZEOF_ANTENNA_INPUT_INFO >> 8; */
62209 - c->operand[4] = 0; /* SIZEOF_ANTENNA_INPUT_INFO & 0xff; */
62210 - c->operand[5] = 0x00;
62211 - c->operand[6] = 0x00;
62212 -
62213 - c->length = 12;
62214 -
62215 - if (avc_write(fdtv, c, r) < 0)
62216 - return -EIO;
62217 -
62218 - if (r->response != AVC_RESPONSE_STABLE &&
62219 - r->response != AVC_RESPONSE_ACCEPTED) {
62220 - dev_err(fdtv->device, "cannot read tuner status\n");
62221 - return -EINVAL;
62222 - }
62223 -
62224 - length = r->operand[9];
62225 - if (r->operand[1] != 0x10 || length != SIZEOF_ANTENNA_INPUT_INFO) {
62226 - dev_err(fdtv->device, "got invalid tuner status\n");
62227 - return -EINVAL;
62228 - }
62229 -
62230 - stat->active_system = r->operand[10];
62231 - stat->searching = r->operand[11] >> 7 & 1;
62232 - stat->moving = r->operand[11] >> 6 & 1;
62233 - stat->no_rf = r->operand[11] >> 5 & 1;
62234 - stat->input = r->operand[12] >> 7 & 1;
62235 - stat->selected_antenna = r->operand[12] & 0x7f;
62236 - stat->ber = r->operand[13] << 24 |
62237 - r->operand[14] << 16 |
62238 - r->operand[15] << 8 |
62239 - r->operand[16];
62240 - stat->signal_strength = r->operand[17];
62241 - stat->raster_frequency = r->operand[18] >> 6 & 2;
62242 - stat->rf_frequency = (r->operand[18] & 0x3f) << 16 |
62243 - r->operand[19] << 8 |
62244 - r->operand[20];
62245 - stat->man_dep_info_length = r->operand[21];
62246 - stat->front_end_error = r->operand[22] >> 4 & 1;
62247 - stat->antenna_error = r->operand[22] >> 3 & 1;
62248 - stat->front_end_power_status = r->operand[22] >> 1 & 1;
62249 - stat->power_supply = r->operand[22] & 1;
62250 - stat->carrier_noise_ratio = r->operand[23] << 8 |
62251 - r->operand[24];
62252 - stat->power_supply_voltage = r->operand[27];
62253 - stat->antenna_voltage = r->operand[28];
62254 - stat->firewire_bus_voltage = r->operand[29];
62255 - stat->ca_mmi = r->operand[30] & 1;
62256 - stat->ca_pmt_reply = r->operand[31] >> 7 & 1;
62257 - stat->ca_date_time_request = r->operand[31] >> 6 & 1;
62258 - stat->ca_application_info = r->operand[31] >> 5 & 1;
62259 - stat->ca_module_present_status = r->operand[31] >> 4 & 1;
62260 - stat->ca_dvb_flag = r->operand[31] >> 3 & 1;
62261 - stat->ca_error_flag = r->operand[31] >> 2 & 1;
62262 - stat->ca_initialization_status = r->operand[31] >> 1 & 1;
62263 -
62264 - return 0;
62265 -}
62266 -
62267 -int avc_lnb_control(struct firedtv *fdtv, char voltage, char burst,
62268 - char conttone, char nrdiseq,
62269 - struct dvb_diseqc_master_cmd *diseqcmd)
62270 -{
62271 - char buffer[sizeof(struct avc_command_frame)];
62272 - struct avc_command_frame *c = (void *)buffer;
62273 - struct avc_response_frame *r = (void *)buffer;
62274 - int i, j, k;
62275 -
62276 - memset(c, 0, sizeof(*c));
62277 -
62278 - c->ctype = AVC_CTYPE_CONTROL;
62279 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62280 - c->opcode = AVC_OPCODE_VENDOR;
62281 -
62282 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62283 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62284 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62285 - c->operand[3] = SFE_VENDOR_OPCODE_LNB_CONTROL;
62286 -
62287 - c->operand[4] = voltage;
62288 - c->operand[5] = nrdiseq;
62289 -
62290 - i = 6;
62291 -
62292 - for (j = 0; j < nrdiseq; j++) {
62293 - c->operand[i++] = diseqcmd[j].msg_len;
62294 -
62295 - for (k = 0; k < diseqcmd[j].msg_len; k++)
62296 - c->operand[i++] = diseqcmd[j].msg[k];
62297 - }
62298 -
62299 - c->operand[i++] = burst;
62300 - c->operand[i++] = conttone;
62301 -
62302 - c->length = ALIGN(3 + i, 4);
62303 -
62304 - if (avc_write(fdtv, c, r) < 0)
62305 - return -EIO;
62306 -
62307 - if (r->response != AVC_RESPONSE_ACCEPTED) {
62308 - dev_err(fdtv->device, "LNB control failed\n");
62309 - return -EINVAL;
62310 - }
62311 -
62312 - return 0;
62313 -}
62314 -
62315 -int avc_register_remote_control(struct firedtv *fdtv)
62316 -{
62317 - char buffer[sizeof(struct avc_command_frame)];
62318 - struct avc_command_frame *c = (void *)buffer;
62319 -
62320 - memset(c, 0, sizeof(*c));
62321 -
62322 - c->ctype = AVC_CTYPE_NOTIFY;
62323 - c->subunit = AVC_SUBUNIT_TYPE_UNIT | 7;
62324 - c->opcode = AVC_OPCODE_VENDOR;
62325 -
62326 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62327 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62328 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62329 - c->operand[3] = SFE_VENDOR_OPCODE_REGISTER_REMOTE_CONTROL;
62330 -
62331 - c->length = 8;
62332 -
62333 - return avc_write(fdtv, c, NULL);
62334 -}
62335 -
62336 -void avc_remote_ctrl_work(struct work_struct *work)
62337 -{
62338 - struct firedtv *fdtv =
62339 - container_of(work, struct firedtv, remote_ctrl_work);
62340 -
62341 - /* Should it be rescheduled in failure cases? */
62342 - avc_register_remote_control(fdtv);
62343 -}
62344 -
62345 -#if 0 /* FIXME: unused */
62346 -int avc_tuner_host2ca(struct firedtv *fdtv)
62347 -{
62348 - char buffer[sizeof(struct avc_command_frame)];
62349 - struct avc_command_frame *c = (void *)buffer;
62350 - struct avc_response_frame *r = (void *)buffer; /* FIXME: unused */
62351 -
62352 - memset(c, 0, sizeof(*c));
62353 -
62354 - c->ctype = AVC_CTYPE_CONTROL;
62355 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62356 - c->opcode = AVC_OPCODE_VENDOR;
62357 -
62358 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62359 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62360 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62361 - c->operand[3] = SFE_VENDOR_OPCODE_HOST2CA;
62362 - c->operand[4] = 0; /* slot */
62363 - c->operand[5] = SFE_VENDOR_TAG_CA_APPLICATION_INFO; /* ca tag */
62364 - c->operand[6] = 0; /* more/last */
62365 - c->operand[7] = 0; /* length */
62366 -
62367 - c->length = 12;
62368 -
62369 - if (avc_write(fdtv, c, r) < 0)
62370 - return -EIO;
62371 -
62372 - return 0;
62373 -}
62374 -#endif
62375 -
62376 -static int get_ca_object_pos(struct avc_response_frame *r)
62377 -{
62378 - int length = 1;
62379 -
62380 - /* Check length of length field */
62381 - if (r->operand[7] & 0x80)
62382 - length = (r->operand[7] & 0x7f) + 1;
62383 - return length + 7;
62384 -}
62385 -
62386 -static int get_ca_object_length(struct avc_response_frame *r)
62387 -{
62388 -#if 0 /* FIXME: unused */
62389 - int size = 0;
62390 - int i;
62391 -
62392 - if (r->operand[7] & 0x80)
62393 - for (i = 0; i < (r->operand[7] & 0x7f); i++) {
62394 - size <<= 8;
62395 - size += r->operand[8 + i];
62396 - }
62397 -#endif
62398 - return r->operand[7];
62399 -}
62400 -
62401 -int avc_ca_app_info(struct firedtv *fdtv, char *app_info, unsigned int *len)
62402 -{
62403 - char buffer[sizeof(struct avc_command_frame)];
62404 - struct avc_command_frame *c = (void *)buffer;
62405 - struct avc_response_frame *r = (void *)buffer;
62406 - int pos;
62407 -
62408 - memset(c, 0, sizeof(*c));
62409 -
62410 - c->ctype = AVC_CTYPE_STATUS;
62411 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62412 - c->opcode = AVC_OPCODE_VENDOR;
62413 -
62414 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62415 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62416 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62417 - c->operand[3] = SFE_VENDOR_OPCODE_CA2HOST;
62418 - c->operand[4] = 0; /* slot */
62419 - c->operand[5] = SFE_VENDOR_TAG_CA_APPLICATION_INFO; /* ca tag */
62420 -
62421 - c->length = 12;
62422 -
62423 - if (avc_write(fdtv, c, r) < 0)
62424 - return -EIO;
62425 -
62426 - /* FIXME: check response code and validate response data */
62427 -
62428 - pos = get_ca_object_pos(r);
62429 - app_info[0] = (EN50221_TAG_APP_INFO >> 16) & 0xff;
62430 - app_info[1] = (EN50221_TAG_APP_INFO >> 8) & 0xff;
62431 - app_info[2] = (EN50221_TAG_APP_INFO >> 0) & 0xff;
62432 - app_info[3] = 6 + r->operand[pos + 4];
62433 - app_info[4] = 0x01;
62434 - memcpy(&app_info[5], &r->operand[pos], 5 + r->operand[pos + 4]);
62435 - *len = app_info[3] + 4;
62436 -
62437 - return 0;
62438 -}
62439 -
62440 -int avc_ca_info(struct firedtv *fdtv, char *app_info, unsigned int *len)
62441 -{
62442 - char buffer[sizeof(struct avc_command_frame)];
62443 - struct avc_command_frame *c = (void *)buffer;
62444 - struct avc_response_frame *r = (void *)buffer;
62445 - int pos;
62446 -
62447 - memset(c, 0, sizeof(*c));
62448 -
62449 - c->ctype = AVC_CTYPE_STATUS;
62450 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62451 - c->opcode = AVC_OPCODE_VENDOR;
62452 -
62453 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62454 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62455 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62456 - c->operand[3] = SFE_VENDOR_OPCODE_CA2HOST;
62457 - c->operand[4] = 0; /* slot */
62458 - c->operand[5] = SFE_VENDOR_TAG_CA_APPLICATION_INFO; /* ca tag */
62459 -
62460 - c->length = 12;
62461 -
62462 - if (avc_write(fdtv, c, r) < 0)
62463 - return -EIO;
62464 -
62465 - pos = get_ca_object_pos(r);
62466 - app_info[0] = (EN50221_TAG_CA_INFO >> 16) & 0xff;
62467 - app_info[1] = (EN50221_TAG_CA_INFO >> 8) & 0xff;
62468 - app_info[2] = (EN50221_TAG_CA_INFO >> 0) & 0xff;
62469 - app_info[3] = 2;
62470 - app_info[4] = r->operand[pos + 0];
62471 - app_info[5] = r->operand[pos + 1];
62472 - *len = app_info[3] + 4;
62473 -
62474 - return 0;
62475 -}
62476 -
62477 -int avc_ca_reset(struct firedtv *fdtv)
62478 -{
62479 - char buffer[sizeof(struct avc_command_frame)];
62480 - struct avc_command_frame *c = (void *)buffer;
62481 - struct avc_response_frame *r = (void *)buffer; /* FIXME: unused */
62482 -
62483 - memset(c, 0, sizeof(*c));
62484 -
62485 - c->ctype = AVC_CTYPE_CONTROL;
62486 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62487 - c->opcode = AVC_OPCODE_VENDOR;
62488 -
62489 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62490 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62491 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62492 - c->operand[3] = SFE_VENDOR_OPCODE_HOST2CA;
62493 - c->operand[4] = 0; /* slot */
62494 - c->operand[5] = SFE_VENDOR_TAG_CA_RESET; /* ca tag */
62495 - c->operand[6] = 0; /* more/last */
62496 - c->operand[7] = 1; /* length */
62497 - c->operand[8] = 0; /* force hardware reset */
62498 -
62499 - c->length = 12;
62500 -
62501 - if (avc_write(fdtv, c, r) < 0)
62502 - return -EIO;
62503 -
62504 - return 0;
62505 -}
62506 -
62507 -int avc_ca_pmt(struct firedtv *fdtv, char *msg, int length)
62508 -{
62509 - char buffer[sizeof(struct avc_command_frame)];
62510 - struct avc_command_frame *c = (void *)buffer;
62511 - struct avc_response_frame *r = (void *)buffer;
62512 - int list_management;
62513 - int program_info_length;
62514 - int pmt_cmd_id;
62515 - int read_pos;
62516 - int write_pos;
62517 - int es_info_length;
62518 - int crc32_csum;
62519 -
62520 - memset(c, 0, sizeof(*c));
62521 -
62522 - c->ctype = AVC_CTYPE_CONTROL;
62523 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62524 - c->opcode = AVC_OPCODE_VENDOR;
62525 -
62526 - if (msg[0] != EN50221_LIST_MANAGEMENT_ONLY) {
62527 - dev_info(fdtv->device, "forcing list_management to ONLY\n");
62528 - msg[0] = EN50221_LIST_MANAGEMENT_ONLY;
62529 - }
62530 - /* We take the cmd_id from the programme level only! */
62531 - list_management = msg[0];
62532 - program_info_length = ((msg[4] & 0x0f) << 8) + msg[5];
62533 - if (program_info_length > 0)
62534 - program_info_length--; /* Remove pmt_cmd_id */
62535 - pmt_cmd_id = msg[6];
62536 -
62537 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62538 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62539 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62540 - c->operand[3] = SFE_VENDOR_OPCODE_HOST2CA;
62541 - c->operand[4] = 0; /* slot */
62542 - c->operand[5] = SFE_VENDOR_TAG_CA_PMT; /* ca tag */
62543 - c->operand[6] = 0; /* more/last */
62544 - /* c->operand[7] = XXXprogram_info_length + 17; */ /* length */
62545 - c->operand[8] = list_management;
62546 - c->operand[9] = 0x01; /* pmt_cmd=OK_descramble */
62547 -
62548 - /* TS program map table */
62549 -
62550 - c->operand[10] = 0x02; /* Table id=2 */
62551 - c->operand[11] = 0x80; /* Section syntax + length */
62552 - /* c->operand[12] = XXXprogram_info_length + 12; */
62553 - c->operand[13] = msg[1]; /* Program number */
62554 - c->operand[14] = msg[2];
62555 - c->operand[15] = 0x01; /* Version number=0 + current/next=1 */
62556 - c->operand[16] = 0x00; /* Section number=0 */
62557 - c->operand[17] = 0x00; /* Last section number=0 */
62558 - c->operand[18] = 0x1f; /* PCR_PID=1FFF */
62559 - c->operand[19] = 0xff;
62560 - c->operand[20] = (program_info_length >> 8); /* Program info length */
62561 - c->operand[21] = (program_info_length & 0xff);
62562 -
62563 - /* CA descriptors at programme level */
62564 - read_pos = 6;
62565 - write_pos = 22;
62566 - if (program_info_length > 0) {
62567 - pmt_cmd_id = msg[read_pos++];
62568 - if (pmt_cmd_id != 1 && pmt_cmd_id != 4)
62569 - dev_err(fdtv->device,
62570 - "invalid pmt_cmd_id %d\n", pmt_cmd_id);
62571 -
62572 - memcpy(&c->operand[write_pos], &msg[read_pos],
62573 - program_info_length);
62574 - read_pos += program_info_length;
62575 - write_pos += program_info_length;
62576 - }
62577 - while (read_pos < length) {
62578 - c->operand[write_pos++] = msg[read_pos++];
62579 - c->operand[write_pos++] = msg[read_pos++];
62580 - c->operand[write_pos++] = msg[read_pos++];
62581 - es_info_length =
62582 - ((msg[read_pos] & 0x0f) << 8) + msg[read_pos + 1];
62583 - read_pos += 2;
62584 - if (es_info_length > 0)
62585 - es_info_length--; /* Remove pmt_cmd_id */
62586 - c->operand[write_pos++] = es_info_length >> 8;
62587 - c->operand[write_pos++] = es_info_length & 0xff;
62588 - if (es_info_length > 0) {
62589 - pmt_cmd_id = msg[read_pos++];
62590 - if (pmt_cmd_id != 1 && pmt_cmd_id != 4)
62591 - dev_err(fdtv->device, "invalid pmt_cmd_id %d "
62592 - "at stream level\n", pmt_cmd_id);
62593 -
62594 - memcpy(&c->operand[write_pos], &msg[read_pos],
62595 - es_info_length);
62596 - read_pos += es_info_length;
62597 - write_pos += es_info_length;
62598 - }
62599 - }
62600 -
62601 - /* CRC */
62602 - c->operand[write_pos++] = 0x00;
62603 - c->operand[write_pos++] = 0x00;
62604 - c->operand[write_pos++] = 0x00;
62605 - c->operand[write_pos++] = 0x00;
62606 -
62607 - c->operand[7] = write_pos - 8;
62608 - c->operand[12] = write_pos - 13;
62609 -
62610 - crc32_csum = crc32_be(0, &c->operand[10], c->operand[12] - 1);
62611 - c->operand[write_pos - 4] = (crc32_csum >> 24) & 0xff;
62612 - c->operand[write_pos - 3] = (crc32_csum >> 16) & 0xff;
62613 - c->operand[write_pos - 2] = (crc32_csum >> 8) & 0xff;
62614 - c->operand[write_pos - 1] = (crc32_csum >> 0) & 0xff;
62615 -
62616 - c->length = ALIGN(3 + write_pos, 4);
62617 -
62618 - if (avc_write(fdtv, c, r) < 0)
62619 - return -EIO;
62620 -
62621 - if (r->response != AVC_RESPONSE_ACCEPTED) {
62622 - dev_err(fdtv->device,
62623 - "CA PMT failed with response 0x%x\n", r->response);
62624 - return -EFAULT;
62625 - }
62626 -
62627 - return 0;
62628 -}
62629 -
62630 -int avc_ca_get_time_date(struct firedtv *fdtv, int *interval)
62631 -{
62632 - char buffer[sizeof(struct avc_command_frame)];
62633 - struct avc_command_frame *c = (void *)buffer;
62634 - struct avc_response_frame *r = (void *)buffer;
62635 -
62636 - memset(c, 0, sizeof(*c));
62637 -
62638 - c->ctype = AVC_CTYPE_STATUS;
62639 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62640 - c->opcode = AVC_OPCODE_VENDOR;
62641 -
62642 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62643 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62644 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62645 - c->operand[3] = SFE_VENDOR_OPCODE_CA2HOST;
62646 - c->operand[4] = 0; /* slot */
62647 - c->operand[5] = SFE_VENDOR_TAG_CA_DATE_TIME; /* ca tag */
62648 - c->operand[6] = 0; /* more/last */
62649 - c->operand[7] = 0; /* length */
62650 -
62651 - c->length = 12;
62652 -
62653 - if (avc_write(fdtv, c, r) < 0)
62654 - return -EIO;
62655 -
62656 - /* FIXME: check response code and validate response data */
62657 -
62658 - *interval = r->operand[get_ca_object_pos(r)];
62659 -
62660 - return 0;
62661 -}
62662 -
62663 -int avc_ca_enter_menu(struct firedtv *fdtv)
62664 -{
62665 - char buffer[sizeof(struct avc_command_frame)];
62666 - struct avc_command_frame *c = (void *)buffer;
62667 - struct avc_response_frame *r = (void *)buffer; /* FIXME: unused */
62668 -
62669 - memset(c, 0, sizeof(*c));
62670 -
62671 - c->ctype = AVC_CTYPE_STATUS;
62672 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62673 - c->opcode = AVC_OPCODE_VENDOR;
62674 -
62675 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62676 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62677 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62678 - c->operand[3] = SFE_VENDOR_OPCODE_HOST2CA;
62679 - c->operand[4] = 0; /* slot */
62680 - c->operand[5] = SFE_VENDOR_TAG_CA_ENTER_MENU;
62681 - c->operand[6] = 0; /* more/last */
62682 - c->operand[7] = 0; /* length */
62683 -
62684 - c->length = 12;
62685 -
62686 - if (avc_write(fdtv, c, r) < 0)
62687 - return -EIO;
62688 -
62689 - return 0;
62690 -}
62691 -
62692 -int avc_ca_get_mmi(struct firedtv *fdtv, char *mmi_object, unsigned int *len)
62693 -{
62694 - char buffer[sizeof(struct avc_command_frame)];
62695 - struct avc_command_frame *c = (void *)buffer;
62696 - struct avc_response_frame *r = (void *)buffer;
62697 -
62698 - memset(c, 0, sizeof(*c));
62699 -
62700 - c->ctype = AVC_CTYPE_STATUS;
62701 - c->subunit = AVC_SUBUNIT_TYPE_TUNER | fdtv->subunit;
62702 - c->opcode = AVC_OPCODE_VENDOR;
62703 -
62704 - c->operand[0] = SFE_VENDOR_DE_COMPANYID_0;
62705 - c->operand[1] = SFE_VENDOR_DE_COMPANYID_1;
62706 - c->operand[2] = SFE_VENDOR_DE_COMPANYID_2;
62707 - c->operand[3] = SFE_VENDOR_OPCODE_CA2HOST;
62708 - c->operand[4] = 0; /* slot */
62709 - c->operand[5] = SFE_VENDOR_TAG_CA_MMI;
62710 - c->operand[6] = 0; /* more/last */
62711 - c->operand[7] = 0; /* length */
62712 -
62713 - c->length = 12;
62714 -
62715 - if (avc_write(fdtv, c, r) < 0)
62716 - return -EIO;
62717 -
62718 - /* FIXME: check response code and validate response data */
62719 -
62720 - *len = get_ca_object_length(r);
62721 - memcpy(mmi_object, &r->operand[get_ca_object_pos(r)], *len);
62722 -
62723 - return 0;
62724 -}
62725 -
62726 -#define CMP_OUTPUT_PLUG_CONTROL_REG_0 0xfffff0000904ULL
62727 -
62728 -static int cmp_read(struct firedtv *fdtv, void *buf, u64 addr, size_t len)
62729 -{
62730 - int ret;
62731 -
62732 - if (mutex_lock_interruptible(&fdtv->avc_mutex))
62733 - return -EINTR;
62734 -
62735 - ret = fdtv->backend->read(fdtv, addr, buf, len);
62736 - if (ret < 0)
62737 - dev_err(fdtv->device, "CMP: read I/O error\n");
62738 -
62739 - mutex_unlock(&fdtv->avc_mutex);
62740 - return ret;
62741 -}
62742 -
62743 -static int cmp_lock(struct firedtv *fdtv, void *data, u64 addr, __be32 arg)
62744 -{
62745 - int ret;
62746 -
62747 - if (mutex_lock_interruptible(&fdtv->avc_mutex))
62748 - return -EINTR;
62749 -
62750 - ret = fdtv->backend->lock(fdtv, addr, data, arg);
62751 - if (ret < 0)
62752 - dev_err(fdtv->device, "CMP: lock I/O error\n");
62753 -
62754 - mutex_unlock(&fdtv->avc_mutex);
62755 - return ret;
62756 -}
62757 -
62758 -static inline u32 get_opcr(__be32 opcr, u32 mask, u32 shift)
62759 -{
62760 - return (be32_to_cpu(opcr) >> shift) & mask;
62761 -}
62762 -
62763 -static inline void set_opcr(__be32 *opcr, u32 value, u32 mask, u32 shift)
62764 -{
62765 - *opcr &= ~cpu_to_be32(mask << shift);
62766 - *opcr |= cpu_to_be32((value & mask) << shift);
62767 -}
62768 -
62769 -#define get_opcr_online(v) get_opcr((v), 0x1, 31)
62770 -#define get_opcr_p2p_connections(v) get_opcr((v), 0x3f, 24)
62771 -#define get_opcr_channel(v) get_opcr((v), 0x3f, 16)
62772 -
62773 -#define set_opcr_p2p_connections(p, v) set_opcr((p), (v), 0x3f, 24)
62774 -#define set_opcr_channel(p, v) set_opcr((p), (v), 0x3f, 16)
62775 -#define set_opcr_data_rate(p, v) set_opcr((p), (v), 0x3, 14)
62776 -#define set_opcr_overhead_id(p, v) set_opcr((p), (v), 0xf, 10)
62777 -
62778 -int cmp_establish_pp_connection(struct firedtv *fdtv, int plug, int channel)
62779 -{
62780 - __be32 old_opcr, opcr;
62781 - u64 opcr_address = CMP_OUTPUT_PLUG_CONTROL_REG_0 + (plug << 2);
62782 - int attempts = 0;
62783 - int ret;
62784 -
62785 - ret = cmp_read(fdtv, &opcr, opcr_address, 4);
62786 - if (ret < 0)
62787 - return ret;
62788 -
62789 -repeat:
62790 - if (!get_opcr_online(opcr)) {
62791 - dev_err(fdtv->device, "CMP: output offline\n");
62792 - return -EBUSY;
62793 - }
62794 -
62795 - old_opcr = opcr;
62796 -
62797 - if (get_opcr_p2p_connections(opcr)) {
62798 - if (get_opcr_channel(opcr) != channel) {
62799 - dev_err(fdtv->device, "CMP: cannot change channel\n");
62800 - return -EBUSY;
62801 - }
62802 - dev_info(fdtv->device, "CMP: overlaying connection\n");
62803 -
62804 - /* We don't allocate isochronous resources. */
62805 - } else {
62806 - set_opcr_channel(&opcr, channel);
62807 - set_opcr_data_rate(&opcr, 2); /* S400 */
62808 -
62809 - /* FIXME: this is for the worst case - optimize */
62810 - set_opcr_overhead_id(&opcr, 0);
62811 -
62812 - /*
62813 - * FIXME: allocate isochronous channel and bandwidth at IRM
62814 - * fdtv->backend->alloc_resources(fdtv, channels_mask, bw);
62815 - */
62816 - }
62817 -
62818 - set_opcr_p2p_connections(&opcr, get_opcr_p2p_connections(opcr) + 1);
62819 -
62820 - ret = cmp_lock(fdtv, &opcr, opcr_address, old_opcr);
62821 - if (ret < 0)
62822 - return ret;
62823 -
62824 - if (old_opcr != opcr) {
62825 - /*
62826 - * FIXME: if old_opcr.P2P_Connections > 0,
62827 - * deallocate isochronous channel and bandwidth at IRM
62828 - * if (...)
62829 - * fdtv->backend->dealloc_resources(fdtv, channel, bw);
62830 - */
62831 -
62832 - if (++attempts < 6) /* arbitrary limit */
62833 - goto repeat;
62834 - return -EBUSY;
62835 - }
62836 -
62837 - return 0;
62838 -}
62839 -
62840 -void cmp_break_pp_connection(struct firedtv *fdtv, int plug, int channel)
62841 -{
62842 - __be32 old_opcr, opcr;
62843 - u64 opcr_address = CMP_OUTPUT_PLUG_CONTROL_REG_0 + (plug << 2);
62844 - int attempts = 0;
62845 -
62846 - if (cmp_read(fdtv, &opcr, opcr_address, 4) < 0)
62847 - return;
62848 -
62849 -repeat:
62850 - if (!get_opcr_online(opcr) || !get_opcr_p2p_connections(opcr) ||
62851 - get_opcr_channel(opcr) != channel) {
62852 - dev_err(fdtv->device, "CMP: no connection to break\n");
62853 - return;
62854 - }
62855 -
62856 - old_opcr = opcr;
62857 - set_opcr_p2p_connections(&opcr, get_opcr_p2p_connections(opcr) - 1);
62858 -
62859 - if (cmp_lock(fdtv, &opcr, opcr_address, old_opcr) < 0)
62860 - return;
62861 -
62862 - if (old_opcr != opcr) {
62863 - /*
62864 - * FIXME: if old_opcr.P2P_Connections == 1, i.e. we were last
62865 - * owner, deallocate isochronous channel and bandwidth at IRM
62866 - * if (...)
62867 - * fdtv->backend->dealloc_resources(fdtv, channel, bw);
62868 - */
62869 -
62870 - if (++attempts < 6) /* arbitrary limit */
62871 - goto repeat;
62872 - }
62873 -}
62874 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-ci.c linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-ci.c
62875 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-ci.c 2009-05-10 22:04:39.000000000 +0200
62876 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-ci.c 1970-01-01 01:00:00.000000000 +0100
62877 @@ -1,260 +0,0 @@
62878 -/*
62879 - * FireDTV driver (formerly known as FireSAT)
62880 - *
62881 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
62882 - * Copyright (C) 2008 Henrik Kurelid <henrik@kurelid.se>
62883 - *
62884 - * This program is free software; you can redistribute it and/or
62885 - * modify it under the terms of the GNU General Public License as
62886 - * published by the Free Software Foundation; either version 2 of
62887 - * the License, or (at your option) any later version.
62888 - */
62889 -
62890 -#include <linux/device.h>
62891 -#include <linux/dvb/ca.h>
62892 -#include <linux/fs.h>
62893 -#include <linux/module.h>
62894 -
62895 -#include <dvbdev.h>
62896 -
62897 -#include "firedtv.h"
62898 -
62899 -#define EN50221_TAG_APP_INFO_ENQUIRY 0x9f8020
62900 -#define EN50221_TAG_CA_INFO_ENQUIRY 0x9f8030
62901 -#define EN50221_TAG_CA_PMT 0x9f8032
62902 -#define EN50221_TAG_ENTER_MENU 0x9f8022
62903 -
62904 -static int fdtv_ca_ready(struct firedtv_tuner_status *stat)
62905 -{
62906 - return stat->ca_initialization_status == 1 &&
62907 - stat->ca_error_flag == 0 &&
62908 - stat->ca_dvb_flag == 1 &&
62909 - stat->ca_module_present_status == 1;
62910 -}
62911 -
62912 -static int fdtv_get_ca_flags(struct firedtv_tuner_status *stat)
62913 -{
62914 - int flags = 0;
62915 -
62916 - if (stat->ca_module_present_status == 1)
62917 - flags |= CA_CI_MODULE_PRESENT;
62918 - if (stat->ca_initialization_status == 1 &&
62919 - stat->ca_error_flag == 0 &&
62920 - stat->ca_dvb_flag == 1)
62921 - flags |= CA_CI_MODULE_READY;
62922 - return flags;
62923 -}
62924 -
62925 -static int fdtv_ca_reset(struct firedtv *fdtv)
62926 -{
62927 - return avc_ca_reset(fdtv) ? -EFAULT : 0;
62928 -}
62929 -
62930 -static int fdtv_ca_get_caps(void *arg)
62931 -{
62932 - struct ca_caps *cap = arg;
62933 -
62934 - cap->slot_num = 1;
62935 - cap->slot_type = CA_CI;
62936 - cap->descr_num = 1;
62937 - cap->descr_type = CA_ECD;
62938 - return 0;
62939 -}
62940 -
62941 -static int fdtv_ca_get_slot_info(struct firedtv *fdtv, void *arg)
62942 -{
62943 - struct firedtv_tuner_status stat;
62944 - struct ca_slot_info *slot = arg;
62945 -
62946 - if (avc_tuner_status(fdtv, &stat))
62947 - return -EFAULT;
62948 -
62949 - if (slot->num != 0)
62950 - return -EFAULT;
62951 -
62952 - slot->type = CA_CI;
62953 - slot->flags = fdtv_get_ca_flags(&stat);
62954 - return 0;
62955 -}
62956 -
62957 -static int fdtv_ca_app_info(struct firedtv *fdtv, void *arg)
62958 -{
62959 - struct ca_msg *reply = arg;
62960 -
62961 - return avc_ca_app_info(fdtv, reply->msg, &reply->length) ? -EFAULT : 0;
62962 -}
62963 -
62964 -static int fdtv_ca_info(struct firedtv *fdtv, void *arg)
62965 -{
62966 - struct ca_msg *reply = arg;
62967 -
62968 - return avc_ca_info(fdtv, reply->msg, &reply->length) ? -EFAULT : 0;
62969 -}
62970 -
62971 -static int fdtv_ca_get_mmi(struct firedtv *fdtv, void *arg)
62972 -{
62973 - struct ca_msg *reply = arg;
62974 -
62975 - return avc_ca_get_mmi(fdtv, reply->msg, &reply->length) ? -EFAULT : 0;
62976 -}
62977 -
62978 -static int fdtv_ca_get_msg(struct firedtv *fdtv, void *arg)
62979 -{
62980 - struct firedtv_tuner_status stat;
62981 - int err;
62982 -
62983 - switch (fdtv->ca_last_command) {
62984 - case EN50221_TAG_APP_INFO_ENQUIRY:
62985 - err = fdtv_ca_app_info(fdtv, arg);
62986 - break;
62987 - case EN50221_TAG_CA_INFO_ENQUIRY:
62988 - err = fdtv_ca_info(fdtv, arg);
62989 - break;
62990 - default:
62991 - if (avc_tuner_status(fdtv, &stat))
62992 - err = -EFAULT;
62993 - else if (stat.ca_mmi == 1)
62994 - err = fdtv_ca_get_mmi(fdtv, arg);
62995 - else {
62996 - dev_info(fdtv->device, "unhandled CA message 0x%08x\n",
62997 - fdtv->ca_last_command);
62998 - err = -EFAULT;
62999 - }
63000 - }
63001 - fdtv->ca_last_command = 0;
63002 - return err;
63003 -}
63004 -
63005 -static int fdtv_ca_pmt(struct firedtv *fdtv, void *arg)
63006 -{
63007 - struct ca_msg *msg = arg;
63008 - int data_pos;
63009 - int data_length;
63010 - int i;
63011 -
63012 - data_pos = 4;
63013 - if (msg->msg[3] & 0x80) {
63014 - data_length = 0;
63015 - for (i = 0; i < (msg->msg[3] & 0x7f); i++)
63016 - data_length = (data_length << 8) + msg->msg[data_pos++];
63017 - } else {
63018 - data_length = msg->msg[3];
63019 - }
63020 -
63021 - return avc_ca_pmt(fdtv, &msg->msg[data_pos], data_length) ? -EFAULT : 0;
63022 -}
63023 -
63024 -static int fdtv_ca_send_msg(struct firedtv *fdtv, void *arg)
63025 -{
63026 - struct ca_msg *msg = arg;
63027 - int err;
63028 -
63029 - /* Do we need a semaphore for this? */
63030 - fdtv->ca_last_command =
63031 - (msg->msg[0] << 16) + (msg->msg[1] << 8) + msg->msg[2];
63032 - switch (fdtv->ca_last_command) {
63033 - case EN50221_TAG_CA_PMT:
63034 - err = fdtv_ca_pmt(fdtv, arg);
63035 - break;
63036 - case EN50221_TAG_APP_INFO_ENQUIRY:
63037 - /* handled in ca_get_msg */
63038 - err = 0;
63039 - break;
63040 - case EN50221_TAG_CA_INFO_ENQUIRY:
63041 - /* handled in ca_get_msg */
63042 - err = 0;
63043 - break;
63044 - case EN50221_TAG_ENTER_MENU:
63045 - err = avc_ca_enter_menu(fdtv);
63046 - break;
63047 - default:
63048 - dev_err(fdtv->device, "unhandled CA message 0x%08x\n",
63049 - fdtv->ca_last_command);
63050 - err = -EFAULT;
63051 - }
63052 - return err;
63053 -}
63054 -
63055 -static int fdtv_ca_ioctl(struct inode *inode, struct file *file,
63056 - unsigned int cmd, void *arg)
63057 -{
63058 - struct dvb_device *dvbdev = file->private_data;
63059 - struct firedtv *fdtv = dvbdev->priv;
63060 - struct firedtv_tuner_status stat;
63061 - int err;
63062 -
63063 - switch (cmd) {
63064 - case CA_RESET:
63065 - err = fdtv_ca_reset(fdtv);
63066 - break;
63067 - case CA_GET_CAP:
63068 - err = fdtv_ca_get_caps(arg);
63069 - break;
63070 - case CA_GET_SLOT_INFO:
63071 - err = fdtv_ca_get_slot_info(fdtv, arg);
63072 - break;
63073 - case CA_GET_MSG:
63074 - err = fdtv_ca_get_msg(fdtv, arg);
63075 - break;
63076 - case CA_SEND_MSG:
63077 - err = fdtv_ca_send_msg(fdtv, arg);
63078 - break;
63079 - default:
63080 - dev_info(fdtv->device, "unhandled CA ioctl %u\n", cmd);
63081 - err = -EOPNOTSUPP;
63082 - }
63083 -
63084 - /* FIXME Is this necessary? */
63085 - avc_tuner_status(fdtv, &stat);
63086 -
63087 - return err;
63088 -}
63089 -
63090 -static unsigned int fdtv_ca_io_poll(struct file *file, poll_table *wait)
63091 -{
63092 - return POLLIN;
63093 -}
63094 -
63095 -static struct file_operations fdtv_ca_fops = {
63096 - .owner = THIS_MODULE,
63097 - .ioctl = dvb_generic_ioctl,
63098 - .open = dvb_generic_open,
63099 - .release = dvb_generic_release,
63100 - .poll = fdtv_ca_io_poll,
63101 -};
63102 -
63103 -static struct dvb_device fdtv_ca = {
63104 - .users = 1,
63105 - .readers = 1,
63106 - .writers = 1,
63107 - .fops = &fdtv_ca_fops,
63108 - .kernel_ioctl = fdtv_ca_ioctl,
63109 -};
63110 -
63111 -int fdtv_ca_register(struct firedtv *fdtv)
63112 -{
63113 - struct firedtv_tuner_status stat;
63114 - int err;
63115 -
63116 - if (avc_tuner_status(fdtv, &stat))
63117 - return -EINVAL;
63118 -
63119 - if (!fdtv_ca_ready(&stat))
63120 - return -EFAULT;
63121 -
63122 - err = dvb_register_device(&fdtv->adapter, &fdtv->cadev,
63123 - &fdtv_ca, fdtv, DVB_DEVICE_CA);
63124 -
63125 - if (stat.ca_application_info == 0)
63126 - dev_err(fdtv->device, "CaApplicationInfo is not set\n");
63127 - if (stat.ca_date_time_request == 1)
63128 - avc_ca_get_time_date(fdtv, &fdtv->ca_time_interval);
63129 -
63130 - return err;
63131 -}
63132 -
63133 -void fdtv_ca_release(struct firedtv *fdtv)
63134 -{
63135 - if (fdtv->cadev)
63136 - dvb_unregister_device(fdtv->cadev);
63137 -}
63138 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-dvb.c linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-dvb.c
63139 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-dvb.c 2009-05-10 22:04:39.000000000 +0200
63140 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-dvb.c 1970-01-01 01:00:00.000000000 +0100
63141 @@ -1,364 +0,0 @@
63142 -/*
63143 - * FireDTV driver (formerly known as FireSAT)
63144 - *
63145 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
63146 - * Copyright (C) 2008 Henrik Kurelid <henrik@kurelid.se>
63147 - *
63148 - * This program is free software; you can redistribute it and/or
63149 - * modify it under the terms of the GNU General Public License as
63150 - * published by the Free Software Foundation; either version 2 of
63151 - * the License, or (at your option) any later version.
63152 - */
63153 -
63154 -#include <linux/bitops.h>
63155 -#include <linux/device.h>
63156 -#include <linux/errno.h>
63157 -#include <linux/kernel.h>
63158 -#include <linux/mod_devicetable.h>
63159 -#include <linux/module.h>
63160 -#include <linux/mutex.h>
63161 -#include <linux/slab.h>
63162 -#include <linux/string.h>
63163 -#include <linux/types.h>
63164 -#include <linux/wait.h>
63165 -#include <linux/workqueue.h>
63166 -
63167 -#include <dmxdev.h>
63168 -#include <dvb_demux.h>
63169 -#include <dvbdev.h>
63170 -#include <dvb_frontend.h>
63171 -
63172 -#include "firedtv.h"
63173 -
63174 -static int alloc_channel(struct firedtv *fdtv)
63175 -{
63176 - int i;
63177 -
63178 - for (i = 0; i < 16; i++)
63179 - if (!__test_and_set_bit(i, &fdtv->channel_active))
63180 - break;
63181 - return i;
63182 -}
63183 -
63184 -static void collect_channels(struct firedtv *fdtv, int *pidc, u16 pid[])
63185 -{
63186 - int i, n;
63187 -
63188 - for (i = 0, n = 0; i < 16; i++)
63189 - if (test_bit(i, &fdtv->channel_active))
63190 - pid[n++] = fdtv->channel_pid[i];
63191 - *pidc = n;
63192 -}
63193 -
63194 -static inline void dealloc_channel(struct firedtv *fdtv, int i)
63195 -{
63196 - __clear_bit(i, &fdtv->channel_active);
63197 -}
63198 -
63199 -int fdtv_start_feed(struct dvb_demux_feed *dvbdmxfeed)
63200 -{
63201 - struct firedtv *fdtv = dvbdmxfeed->demux->priv;
63202 - int pidc, c, ret;
63203 - u16 pids[16];
63204 -
63205 - switch (dvbdmxfeed->type) {
63206 - case DMX_TYPE_TS:
63207 - case DMX_TYPE_SEC:
63208 - break;
63209 - default:
63210 - dev_err(fdtv->device, "can't start dmx feed: invalid type %u\n",
63211 - dvbdmxfeed->type);
63212 - return -EINVAL;
63213 - }
63214 -
63215 - if (mutex_lock_interruptible(&fdtv->demux_mutex))
63216 - return -EINTR;
63217 -
63218 - if (dvbdmxfeed->type == DMX_TYPE_TS) {
63219 - switch (dvbdmxfeed->pes_type) {
63220 - case DMX_TS_PES_VIDEO:
63221 - case DMX_TS_PES_AUDIO:
63222 - case DMX_TS_PES_TELETEXT:
63223 - case DMX_TS_PES_PCR:
63224 - case DMX_TS_PES_OTHER:
63225 - c = alloc_channel(fdtv);
63226 - break;
63227 - default:
63228 - dev_err(fdtv->device,
63229 - "can't start dmx feed: invalid pes type %u\n",
63230 - dvbdmxfeed->pes_type);
63231 - ret = -EINVAL;
63232 - goto out;
63233 - }
63234 - } else {
63235 - c = alloc_channel(fdtv);
63236 - }
63237 -
63238 - if (c > 15) {
63239 - dev_err(fdtv->device, "can't start dmx feed: busy\n");
63240 - ret = -EBUSY;
63241 - goto out;
63242 - }
63243 -
63244 - dvbdmxfeed->priv = (typeof(dvbdmxfeed->priv))(unsigned long)c;
63245 - fdtv->channel_pid[c] = dvbdmxfeed->pid;
63246 - collect_channels(fdtv, &pidc, pids);
63247 -
63248 - if (dvbdmxfeed->pid == 8192) {
63249 - ret = avc_tuner_get_ts(fdtv);
63250 - if (ret) {
63251 - dealloc_channel(fdtv, c);
63252 - dev_err(fdtv->device, "can't get TS\n");
63253 - goto out;
63254 - }
63255 - } else {
63256 - ret = avc_tuner_set_pids(fdtv, pidc, pids);
63257 - if (ret) {
63258 - dealloc_channel(fdtv, c);
63259 - dev_err(fdtv->device, "can't set PIDs\n");
63260 - goto out;
63261 - }
63262 - }
63263 -out:
63264 - mutex_unlock(&fdtv->demux_mutex);
63265 -
63266 - return ret;
63267 -}
63268 -
63269 -int fdtv_stop_feed(struct dvb_demux_feed *dvbdmxfeed)
63270 -{
63271 - struct dvb_demux *demux = dvbdmxfeed->demux;
63272 - struct firedtv *fdtv = demux->priv;
63273 - int pidc, c, ret;
63274 - u16 pids[16];
63275 -
63276 - if (dvbdmxfeed->type == DMX_TYPE_TS &&
63277 - !((dvbdmxfeed->ts_type & TS_PACKET) &&
63278 - (demux->dmx.frontend->source != DMX_MEMORY_FE))) {
63279 -
63280 - if (dvbdmxfeed->ts_type & TS_DECODER) {
63281 - if (dvbdmxfeed->pes_type >= DMX_TS_PES_OTHER ||
63282 - !demux->pesfilter[dvbdmxfeed->pes_type])
63283 - return -EINVAL;
63284 -
63285 - demux->pids[dvbdmxfeed->pes_type] |= 0x8000;
63286 - demux->pesfilter[dvbdmxfeed->pes_type] = NULL;
63287 - }
63288 -
63289 - if (!(dvbdmxfeed->ts_type & TS_DECODER &&
63290 - dvbdmxfeed->pes_type < DMX_TS_PES_OTHER))
63291 - return 0;
63292 - }
63293 -
63294 - if (mutex_lock_interruptible(&fdtv->demux_mutex))
63295 - return -EINTR;
63296 -
63297 - c = (unsigned long)dvbdmxfeed->priv;
63298 - dealloc_channel(fdtv, c);
63299 - collect_channels(fdtv, &pidc, pids);
63300 -
63301 - ret = avc_tuner_set_pids(fdtv, pidc, pids);
63302 -
63303 - mutex_unlock(&fdtv->demux_mutex);
63304 -
63305 - return ret;
63306 -}
63307 -
63308 -DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
63309 -
63310 -int fdtv_dvb_register(struct firedtv *fdtv)
63311 -{
63312 - int err;
63313 -
63314 - err = dvb_register_adapter(&fdtv->adapter, fdtv_model_names[fdtv->type],
63315 - THIS_MODULE, fdtv->device, adapter_nr);
63316 - if (err < 0)
63317 - goto fail_log;
63318 -
63319 - /*DMX_TS_FILTERING | DMX_SECTION_FILTERING*/
63320 - fdtv->demux.dmx.capabilities = 0;
63321 -
63322 - fdtv->demux.priv = fdtv;
63323 - fdtv->demux.filternum = 16;
63324 - fdtv->demux.feednum = 16;
63325 - fdtv->demux.start_feed = fdtv_start_feed;
63326 - fdtv->demux.stop_feed = fdtv_stop_feed;
63327 - fdtv->demux.write_to_decoder = NULL;
63328 -
63329 - err = dvb_dmx_init(&fdtv->demux);
63330 - if (err)
63331 - goto fail_unreg_adapter;
63332 -
63333 - fdtv->dmxdev.filternum = 16;
63334 - fdtv->dmxdev.demux = &fdtv->demux.dmx;
63335 - fdtv->dmxdev.capabilities = 0;
63336 -
63337 - err = dvb_dmxdev_init(&fdtv->dmxdev, &fdtv->adapter);
63338 - if (err)
63339 - goto fail_dmx_release;
63340 -
63341 - fdtv->frontend.source = DMX_FRONTEND_0;
63342 -
63343 - err = fdtv->demux.dmx.add_frontend(&fdtv->demux.dmx, &fdtv->frontend);
63344 - if (err)
63345 - goto fail_dmxdev_release;
63346 -
63347 - err = fdtv->demux.dmx.connect_frontend(&fdtv->demux.dmx,
63348 - &fdtv->frontend);
63349 - if (err)
63350 - goto fail_rem_frontend;
63351 -
63352 - dvb_net_init(&fdtv->adapter, &fdtv->dvbnet, &fdtv->demux.dmx);
63353 -
63354 - fdtv_frontend_init(fdtv);
63355 - err = dvb_register_frontend(&fdtv->adapter, &fdtv->fe);
63356 - if (err)
63357 - goto fail_net_release;
63358 -
63359 - err = fdtv_ca_register(fdtv);
63360 - if (err)
63361 - dev_info(fdtv->device,
63362 - "Conditional Access Module not enabled\n");
63363 - return 0;
63364 -
63365 -fail_net_release:
63366 - dvb_net_release(&fdtv->dvbnet);
63367 - fdtv->demux.dmx.close(&fdtv->demux.dmx);
63368 -fail_rem_frontend:
63369 - fdtv->demux.dmx.remove_frontend(&fdtv->demux.dmx, &fdtv->frontend);
63370 -fail_dmxdev_release:
63371 - dvb_dmxdev_release(&fdtv->dmxdev);
63372 -fail_dmx_release:
63373 - dvb_dmx_release(&fdtv->demux);
63374 -fail_unreg_adapter:
63375 - dvb_unregister_adapter(&fdtv->adapter);
63376 -fail_log:
63377 - dev_err(fdtv->device, "DVB initialization failed\n");
63378 - return err;
63379 -}
63380 -
63381 -void fdtv_dvb_unregister(struct firedtv *fdtv)
63382 -{
63383 - fdtv_ca_release(fdtv);
63384 - dvb_unregister_frontend(&fdtv->fe);
63385 - dvb_net_release(&fdtv->dvbnet);
63386 - fdtv->demux.dmx.close(&fdtv->demux.dmx);
63387 - fdtv->demux.dmx.remove_frontend(&fdtv->demux.dmx, &fdtv->frontend);
63388 - dvb_dmxdev_release(&fdtv->dmxdev);
63389 - dvb_dmx_release(&fdtv->demux);
63390 - dvb_unregister_adapter(&fdtv->adapter);
63391 -}
63392 -
63393 -const char *fdtv_model_names[] = {
63394 - [FIREDTV_UNKNOWN] = "unknown type",
63395 - [FIREDTV_DVB_S] = "FireDTV S/CI",
63396 - [FIREDTV_DVB_C] = "FireDTV C/CI",
63397 - [FIREDTV_DVB_T] = "FireDTV T/CI",
63398 - [FIREDTV_DVB_S2] = "FireDTV S2 ",
63399 -};
63400 -
63401 -struct firedtv *fdtv_alloc(struct device *dev,
63402 - const struct firedtv_backend *backend,
63403 - const char *name, size_t name_len)
63404 -{
63405 - struct firedtv *fdtv;
63406 - int i;
63407 -
63408 - fdtv = kzalloc(sizeof(*fdtv), GFP_KERNEL);
63409 - if (!fdtv)
63410 - return NULL;
63411 -
63412 - dev->driver_data = fdtv;
63413 - fdtv->device = dev;
63414 - fdtv->isochannel = -1;
63415 - fdtv->voltage = 0xff;
63416 - fdtv->tone = 0xff;
63417 - fdtv->backend = backend;
63418 -
63419 - mutex_init(&fdtv->avc_mutex);
63420 - init_waitqueue_head(&fdtv->avc_wait);
63421 - fdtv->avc_reply_received = true;
63422 - mutex_init(&fdtv->demux_mutex);
63423 - INIT_WORK(&fdtv->remote_ctrl_work, avc_remote_ctrl_work);
63424 -
63425 - for (i = ARRAY_SIZE(fdtv_model_names); --i; )
63426 - if (strlen(fdtv_model_names[i]) <= name_len &&
63427 - strncmp(name, fdtv_model_names[i], name_len) == 0)
63428 - break;
63429 - fdtv->type = i;
63430 -
63431 - return fdtv;
63432 -}
63433 -
63434 -#define MATCH_FLAGS (IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID | \
63435 - IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION)
63436 -
63437 -#define DIGITAL_EVERYWHERE_OUI 0x001287
63438 -#define AVC_UNIT_SPEC_ID_ENTRY 0x00a02d
63439 -#define AVC_SW_VERSION_ENTRY 0x010001
63440 -
63441 -static struct ieee1394_device_id fdtv_id_table[] = {
63442 - {
63443 - /* FloppyDTV S/CI and FloppyDTV S2 */
63444 - .match_flags = MATCH_FLAGS,
63445 - .vendor_id = DIGITAL_EVERYWHERE_OUI,
63446 - .model_id = 0x000024,
63447 - .specifier_id = AVC_UNIT_SPEC_ID_ENTRY,
63448 - .version = AVC_SW_VERSION_ENTRY,
63449 - }, {
63450 - /* FloppyDTV T/CI */
63451 - .match_flags = MATCH_FLAGS,
63452 - .vendor_id = DIGITAL_EVERYWHERE_OUI,
63453 - .model_id = 0x000025,
63454 - .specifier_id = AVC_UNIT_SPEC_ID_ENTRY,
63455 - .version = AVC_SW_VERSION_ENTRY,
63456 - }, {
63457 - /* FloppyDTV C/CI */
63458 - .match_flags = MATCH_FLAGS,
63459 - .vendor_id = DIGITAL_EVERYWHERE_OUI,
63460 - .model_id = 0x000026,
63461 - .specifier_id = AVC_UNIT_SPEC_ID_ENTRY,
63462 - .version = AVC_SW_VERSION_ENTRY,
63463 - }, {
63464 - /* FireDTV S/CI and FloppyDTV S2 */
63465 - .match_flags = MATCH_FLAGS,
63466 - .vendor_id = DIGITAL_EVERYWHERE_OUI,
63467 - .model_id = 0x000034,
63468 - .specifier_id = AVC_UNIT_SPEC_ID_ENTRY,
63469 - .version = AVC_SW_VERSION_ENTRY,
63470 - }, {
63471 - /* FireDTV T/CI */
63472 - .match_flags = MATCH_FLAGS,
63473 - .vendor_id = DIGITAL_EVERYWHERE_OUI,
63474 - .model_id = 0x000035,
63475 - .specifier_id = AVC_UNIT_SPEC_ID_ENTRY,
63476 - .version = AVC_SW_VERSION_ENTRY,
63477 - }, {
63478 - /* FireDTV C/CI */
63479 - .match_flags = MATCH_FLAGS,
63480 - .vendor_id = DIGITAL_EVERYWHERE_OUI,
63481 - .model_id = 0x000036,
63482 - .specifier_id = AVC_UNIT_SPEC_ID_ENTRY,
63483 - .version = AVC_SW_VERSION_ENTRY,
63484 - }, {}
63485 -};
63486 -MODULE_DEVICE_TABLE(ieee1394, fdtv_id_table);
63487 -
63488 -static int __init fdtv_init(void)
63489 -{
63490 - return fdtv_1394_init(fdtv_id_table);
63491 -}
63492 -
63493 -static void __exit fdtv_exit(void)
63494 -{
63495 - fdtv_1394_exit();
63496 -}
63497 -
63498 -module_init(fdtv_init);
63499 -module_exit(fdtv_exit);
63500 -
63501 -MODULE_AUTHOR("Andreas Monitzer <andy@monitzer.com>");
63502 -MODULE_AUTHOR("Ben Backx <ben@bbackx.com>");
63503 -MODULE_DESCRIPTION("FireDTV DVB Driver");
63504 -MODULE_LICENSE("GPL");
63505 -MODULE_SUPPORTED_DEVICE("FireDTV DVB");
63506 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-fe.c linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-fe.c
63507 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-fe.c 2009-05-10 22:04:39.000000000 +0200
63508 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-fe.c 1970-01-01 01:00:00.000000000 +0100
63509 @@ -1,247 +0,0 @@
63510 -/*
63511 - * FireDTV driver (formerly known as FireSAT)
63512 - *
63513 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
63514 - * Copyright (C) 2008 Henrik Kurelid <henrik@kurelid.se>
63515 - *
63516 - * This program is free software; you can redistribute it and/or
63517 - * modify it under the terms of the GNU General Public License as
63518 - * published by the Free Software Foundation; either version 2 of
63519 - * the License, or (at your option) any later version.
63520 - */
63521 -
63522 -#include <linux/device.h>
63523 -#include <linux/errno.h>
63524 -#include <linux/kernel.h>
63525 -#include <linux/string.h>
63526 -#include <linux/types.h>
63527 -
63528 -#include <dvb_frontend.h>
63529 -
63530 -#include "firedtv.h"
63531 -
63532 -static int fdtv_dvb_init(struct dvb_frontend *fe)
63533 -{
63534 - struct firedtv *fdtv = fe->sec_priv;
63535 - int err;
63536 -
63537 - /* FIXME - allocate free channel at IRM */
63538 - fdtv->isochannel = fdtv->adapter.num;
63539 -
63540 - err = cmp_establish_pp_connection(fdtv, fdtv->subunit,
63541 - fdtv->isochannel);
63542 - if (err) {
63543 - dev_err(fdtv->device,
63544 - "could not establish point to point connection\n");
63545 - return err;
63546 - }
63547 -
63548 - return fdtv->backend->start_iso(fdtv);
63549 -}
63550 -
63551 -static int fdtv_sleep(struct dvb_frontend *fe)
63552 -{
63553 - struct firedtv *fdtv = fe->sec_priv;
63554 -
63555 - fdtv->backend->stop_iso(fdtv);
63556 - cmp_break_pp_connection(fdtv, fdtv->subunit, fdtv->isochannel);
63557 - fdtv->isochannel = -1;
63558 - return 0;
63559 -}
63560 -
63561 -#define LNBCONTROL_DONTCARE 0xff
63562 -
63563 -static int fdtv_diseqc_send_master_cmd(struct dvb_frontend *fe,
63564 - struct dvb_diseqc_master_cmd *cmd)
63565 -{
63566 - struct firedtv *fdtv = fe->sec_priv;
63567 -
63568 - return avc_lnb_control(fdtv, LNBCONTROL_DONTCARE, LNBCONTROL_DONTCARE,
63569 - LNBCONTROL_DONTCARE, 1, cmd);
63570 -}
63571 -
63572 -static int fdtv_diseqc_send_burst(struct dvb_frontend *fe,
63573 - fe_sec_mini_cmd_t minicmd)
63574 -{
63575 - return 0;
63576 -}
63577 -
63578 -static int fdtv_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
63579 -{
63580 - struct firedtv *fdtv = fe->sec_priv;
63581 -
63582 - fdtv->tone = tone;
63583 - return 0;
63584 -}
63585 -
63586 -static int fdtv_set_voltage(struct dvb_frontend *fe,
63587 - fe_sec_voltage_t voltage)
63588 -{
63589 - struct firedtv *fdtv = fe->sec_priv;
63590 -
63591 - fdtv->voltage = voltage;
63592 - return 0;
63593 -}
63594 -
63595 -static int fdtv_read_status(struct dvb_frontend *fe, fe_status_t *status)
63596 -{
63597 - struct firedtv *fdtv = fe->sec_priv;
63598 - struct firedtv_tuner_status stat;
63599 -
63600 - if (avc_tuner_status(fdtv, &stat))
63601 - return -EINVAL;
63602 -
63603 - if (stat.no_rf)
63604 - *status = 0;
63605 - else
63606 - *status = FE_HAS_SIGNAL | FE_HAS_VITERBI | FE_HAS_SYNC |
63607 - FE_HAS_CARRIER | FE_HAS_LOCK;
63608 - return 0;
63609 -}
63610 -
63611 -static int fdtv_read_ber(struct dvb_frontend *fe, u32 *ber)
63612 -{
63613 - struct firedtv *fdtv = fe->sec_priv;
63614 - struct firedtv_tuner_status stat;
63615 -
63616 - if (avc_tuner_status(fdtv, &stat))
63617 - return -EINVAL;
63618 -
63619 - *ber = stat.ber;
63620 - return 0;
63621 -}
63622 -
63623 -static int fdtv_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
63624 -{
63625 - struct firedtv *fdtv = fe->sec_priv;
63626 - struct firedtv_tuner_status stat;
63627 -
63628 - if (avc_tuner_status(fdtv, &stat))
63629 - return -EINVAL;
63630 -
63631 - *strength = stat.signal_strength << 8;
63632 - return 0;
63633 -}
63634 -
63635 -static int fdtv_read_snr(struct dvb_frontend *fe, u16 *snr)
63636 -{
63637 - struct firedtv *fdtv = fe->sec_priv;
63638 - struct firedtv_tuner_status stat;
63639 -
63640 - if (avc_tuner_status(fdtv, &stat))
63641 - return -EINVAL;
63642 -
63643 - /* C/N[dB] = -10 * log10(snr / 65535) */
63644 - *snr = stat.carrier_noise_ratio * 257;
63645 - return 0;
63646 -}
63647 -
63648 -static int fdtv_read_uncorrected_blocks(struct dvb_frontend *fe, u32 *ucblocks)
63649 -{
63650 - return -EOPNOTSUPP;
63651 -}
63652 -
63653 -#define ACCEPTED 0x9
63654 -
63655 -static int fdtv_set_frontend(struct dvb_frontend *fe,
63656 - struct dvb_frontend_parameters *params)
63657 -{
63658 - struct firedtv *fdtv = fe->sec_priv;
63659 -
63660 - /* FIXME: avc_tuner_dsd never returns ACCEPTED. Check status? */
63661 - if (avc_tuner_dsd(fdtv, params) != ACCEPTED)
63662 - return -EINVAL;
63663 - else
63664 - return 0; /* not sure of this... */
63665 -}
63666 -
63667 -static int fdtv_get_frontend(struct dvb_frontend *fe,
63668 - struct dvb_frontend_parameters *params)
63669 -{
63670 - return -EOPNOTSUPP;
63671 -}
63672 -
63673 -void fdtv_frontend_init(struct firedtv *fdtv)
63674 -{
63675 - struct dvb_frontend_ops *ops = &fdtv->fe.ops;
63676 - struct dvb_frontend_info *fi = &ops->info;
63677 -
63678 - ops->init = fdtv_dvb_init;
63679 - ops->sleep = fdtv_sleep;
63680 -
63681 - ops->set_frontend = fdtv_set_frontend;
63682 - ops->get_frontend = fdtv_get_frontend;
63683 -
63684 - ops->read_status = fdtv_read_status;
63685 - ops->read_ber = fdtv_read_ber;
63686 - ops->read_signal_strength = fdtv_read_signal_strength;
63687 - ops->read_snr = fdtv_read_snr;
63688 - ops->read_ucblocks = fdtv_read_uncorrected_blocks;
63689 -
63690 - ops->diseqc_send_master_cmd = fdtv_diseqc_send_master_cmd;
63691 - ops->diseqc_send_burst = fdtv_diseqc_send_burst;
63692 - ops->set_tone = fdtv_set_tone;
63693 - ops->set_voltage = fdtv_set_voltage;
63694 -
63695 - switch (fdtv->type) {
63696 - case FIREDTV_DVB_S:
63697 - case FIREDTV_DVB_S2:
63698 - fi->type = FE_QPSK;
63699 -
63700 - fi->frequency_min = 950000;
63701 - fi->frequency_max = 2150000;
63702 - fi->frequency_stepsize = 125;
63703 - fi->symbol_rate_min = 1000000;
63704 - fi->symbol_rate_max = 40000000;
63705 -
63706 - fi->caps = FE_CAN_INVERSION_AUTO |
63707 - FE_CAN_FEC_1_2 |
63708 - FE_CAN_FEC_2_3 |
63709 - FE_CAN_FEC_3_4 |
63710 - FE_CAN_FEC_5_6 |
63711 - FE_CAN_FEC_7_8 |
63712 - FE_CAN_FEC_AUTO |
63713 - FE_CAN_QPSK;
63714 - break;
63715 -
63716 - case FIREDTV_DVB_C:
63717 - fi->type = FE_QAM;
63718 -
63719 - fi->frequency_min = 47000000;
63720 - fi->frequency_max = 866000000;
63721 - fi->frequency_stepsize = 62500;
63722 - fi->symbol_rate_min = 870000;
63723 - fi->symbol_rate_max = 6900000;
63724 -
63725 - fi->caps = FE_CAN_INVERSION_AUTO |
63726 - FE_CAN_QAM_16 |
63727 - FE_CAN_QAM_32 |
63728 - FE_CAN_QAM_64 |
63729 - FE_CAN_QAM_128 |
63730 - FE_CAN_QAM_256 |
63731 - FE_CAN_QAM_AUTO;
63732 - break;
63733 -
63734 - case FIREDTV_DVB_T:
63735 - fi->type = FE_OFDM;
63736 -
63737 - fi->frequency_min = 49000000;
63738 - fi->frequency_max = 861000000;
63739 - fi->frequency_stepsize = 62500;
63740 -
63741 - fi->caps = FE_CAN_INVERSION_AUTO |
63742 - FE_CAN_FEC_2_3 |
63743 - FE_CAN_TRANSMISSION_MODE_AUTO |
63744 - FE_CAN_GUARD_INTERVAL_AUTO |
63745 - FE_CAN_HIERARCHY_AUTO;
63746 - break;
63747 -
63748 - default:
63749 - dev_err(fdtv->device, "no frontend for model type %d\n",
63750 - fdtv->type);
63751 - }
63752 - strcpy(fi->name, fdtv_model_names[fdtv->type]);
63753 -
63754 - fdtv->fe.dvb = &fdtv->adapter;
63755 - fdtv->fe.sec_priv = fdtv;
63756 -}
63757 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv.h linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv.h
63758 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv.h 2009-05-10 22:04:39.000000000 +0200
63759 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv.h 1970-01-01 01:00:00.000000000 +0100
63760 @@ -1,182 +0,0 @@
63761 -/*
63762 - * FireDTV driver (formerly known as FireSAT)
63763 - *
63764 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
63765 - * Copyright (C) 2008 Henrik Kurelid <henrik@kurelid.se>
63766 - *
63767 - * This program is free software; you can redistribute it and/or
63768 - * modify it under the terms of the GNU General Public License as
63769 - * published by the Free Software Foundation; either version 2 of
63770 - * the License, or (at your option) any later version.
63771 - */
63772 -
63773 -#ifndef _FIREDTV_H
63774 -#define _FIREDTV_H
63775 -
63776 -#include <linux/dvb/dmx.h>
63777 -#include <linux/dvb/frontend.h>
63778 -#include <linux/list.h>
63779 -#include <linux/mutex.h>
63780 -#include <linux/spinlock_types.h>
63781 -#include <linux/types.h>
63782 -#include <linux/wait.h>
63783 -#include <linux/workqueue.h>
63784 -
63785 -#include <demux.h>
63786 -#include <dmxdev.h>
63787 -#include <dvb_demux.h>
63788 -#include <dvb_frontend.h>
63789 -#include <dvb_net.h>
63790 -#include <dvbdev.h>
63791 -
63792 -struct firedtv_tuner_status {
63793 - unsigned active_system:8;
63794 - unsigned searching:1;
63795 - unsigned moving:1;
63796 - unsigned no_rf:1;
63797 - unsigned input:1;
63798 - unsigned selected_antenna:7;
63799 - unsigned ber:32;
63800 - unsigned signal_strength:8;
63801 - unsigned raster_frequency:2;
63802 - unsigned rf_frequency:22;
63803 - unsigned man_dep_info_length:8;
63804 - unsigned front_end_error:1;
63805 - unsigned antenna_error:1;
63806 - unsigned front_end_power_status:1;
63807 - unsigned power_supply:1;
63808 - unsigned carrier_noise_ratio:16;
63809 - unsigned power_supply_voltage:8;
63810 - unsigned antenna_voltage:8;
63811 - unsigned firewire_bus_voltage:8;
63812 - unsigned ca_mmi:1;
63813 - unsigned ca_pmt_reply:1;
63814 - unsigned ca_date_time_request:1;
63815 - unsigned ca_application_info:1;
63816 - unsigned ca_module_present_status:1;
63817 - unsigned ca_dvb_flag:1;
63818 - unsigned ca_error_flag:1;
63819 - unsigned ca_initialization_status:1;
63820 -};
63821 -
63822 -enum model_type {
63823 - FIREDTV_UNKNOWN = 0,
63824 - FIREDTV_DVB_S = 1,
63825 - FIREDTV_DVB_C = 2,
63826 - FIREDTV_DVB_T = 3,
63827 - FIREDTV_DVB_S2 = 4,
63828 -};
63829 -
63830 -struct device;
63831 -struct input_dev;
63832 -struct firedtv;
63833 -
63834 -struct firedtv_backend {
63835 - int (*lock)(struct firedtv *fdtv, u64 addr, void *data, __be32 arg);
63836 - int (*read)(struct firedtv *fdtv, u64 addr, void *data, size_t len);
63837 - int (*write)(struct firedtv *fdtv, u64 addr, void *data, size_t len);
63838 - int (*start_iso)(struct firedtv *fdtv);
63839 - void (*stop_iso)(struct firedtv *fdtv);
63840 -};
63841 -
63842 -struct firedtv {
63843 - struct device *device;
63844 - struct list_head list;
63845 -
63846 - struct dvb_adapter adapter;
63847 - struct dmxdev dmxdev;
63848 - struct dvb_demux demux;
63849 - struct dmx_frontend frontend;
63850 - struct dvb_net dvbnet;
63851 - struct dvb_frontend fe;
63852 -
63853 - struct dvb_device *cadev;
63854 - int ca_last_command;
63855 - int ca_time_interval;
63856 -
63857 - struct mutex avc_mutex;
63858 - wait_queue_head_t avc_wait;
63859 - bool avc_reply_received;
63860 - struct work_struct remote_ctrl_work;
63861 - struct input_dev *remote_ctrl_dev;
63862 -
63863 - enum model_type type;
63864 - char subunit;
63865 - char isochannel;
63866 - fe_sec_voltage_t voltage;
63867 - fe_sec_tone_mode_t tone;
63868 -
63869 - const struct firedtv_backend *backend;
63870 - void *backend_data;
63871 -
63872 - struct mutex demux_mutex;
63873 - unsigned long channel_active;
63874 - u16 channel_pid[16];
63875 -
63876 - size_t response_length;
63877 - u8 response[512];
63878 -};
63879 -
63880 -/* firedtv-1394.c */
63881 -#ifdef CONFIG_DVB_FIREDTV_IEEE1394
63882 -int fdtv_1394_init(struct ieee1394_device_id id_table[]);
63883 -void fdtv_1394_exit(void);
63884 -#else
63885 -static inline int fdtv_1394_init(struct ieee1394_device_id it[]) { return 0; }
63886 -static inline void fdtv_1394_exit(void) {}
63887 -#endif
63888 -
63889 -/* firedtv-avc.c */
63890 -int avc_recv(struct firedtv *fdtv, void *data, size_t length);
63891 -int avc_tuner_status(struct firedtv *fdtv, struct firedtv_tuner_status *stat);
63892 -struct dvb_frontend_parameters;
63893 -int avc_tuner_dsd(struct firedtv *fdtv, struct dvb_frontend_parameters *params);
63894 -int avc_tuner_set_pids(struct firedtv *fdtv, unsigned char pidc, u16 pid[]);
63895 -int avc_tuner_get_ts(struct firedtv *fdtv);
63896 -int avc_identify_subunit(struct firedtv *fdtv);
63897 -struct dvb_diseqc_master_cmd;
63898 -int avc_lnb_control(struct firedtv *fdtv, char voltage, char burst,
63899 - char conttone, char nrdiseq,
63900 - struct dvb_diseqc_master_cmd *diseqcmd);
63901 -void avc_remote_ctrl_work(struct work_struct *work);
63902 -int avc_register_remote_control(struct firedtv *fdtv);
63903 -int avc_ca_app_info(struct firedtv *fdtv, char *app_info, unsigned int *len);
63904 -int avc_ca_info(struct firedtv *fdtv, char *app_info, unsigned int *len);
63905 -int avc_ca_reset(struct firedtv *fdtv);
63906 -int avc_ca_pmt(struct firedtv *fdtv, char *app_info, int length);
63907 -int avc_ca_get_time_date(struct firedtv *fdtv, int *interval);
63908 -int avc_ca_enter_menu(struct firedtv *fdtv);
63909 -int avc_ca_get_mmi(struct firedtv *fdtv, char *mmi_object, unsigned int *len);
63910 -int cmp_establish_pp_connection(struct firedtv *fdtv, int plug, int channel);
63911 -void cmp_break_pp_connection(struct firedtv *fdtv, int plug, int channel);
63912 -
63913 -/* firedtv-ci.c */
63914 -int fdtv_ca_register(struct firedtv *fdtv);
63915 -void fdtv_ca_release(struct firedtv *fdtv);
63916 -
63917 -/* firedtv-dvb.c */
63918 -int fdtv_start_feed(struct dvb_demux_feed *dvbdmxfeed);
63919 -int fdtv_stop_feed(struct dvb_demux_feed *dvbdmxfeed);
63920 -int fdtv_dvb_register(struct firedtv *fdtv);
63921 -void fdtv_dvb_unregister(struct firedtv *fdtv);
63922 -struct firedtv *fdtv_alloc(struct device *dev,
63923 - const struct firedtv_backend *backend,
63924 - const char *name, size_t name_len);
63925 -extern const char *fdtv_model_names[];
63926 -
63927 -/* firedtv-fe.c */
63928 -void fdtv_frontend_init(struct firedtv *fdtv);
63929 -
63930 -/* firedtv-rc.c */
63931 -#ifdef CONFIG_DVB_FIREDTV_INPUT
63932 -int fdtv_register_rc(struct firedtv *fdtv, struct device *dev);
63933 -void fdtv_unregister_rc(struct firedtv *fdtv);
63934 -void fdtv_handle_rc(struct firedtv *fdtv, unsigned int code);
63935 -#else
63936 -static inline int fdtv_register_rc(struct firedtv *fdtv,
63937 - struct device *dev) { return 0; }
63938 -static inline void fdtv_unregister_rc(struct firedtv *fdtv) {}
63939 -static inline void fdtv_handle_rc(struct firedtv *fdtv, unsigned int code) {}
63940 -#endif
63941 -
63942 -#endif /* _FIREDTV_H */
63943 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-rc.c linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-rc.c
63944 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/firedtv-rc.c 2009-05-10 22:04:39.000000000 +0200
63945 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/firedtv-rc.c 1970-01-01 01:00:00.000000000 +0100
63946 @@ -1,190 +0,0 @@
63947 -/*
63948 - * FireDTV driver (formerly known as FireSAT)
63949 - *
63950 - * Copyright (C) 2004 Andreas Monitzer <andy@monitzer.com>
63951 - *
63952 - * This program is free software; you can redistribute it and/or
63953 - * modify it under the terms of the GNU General Public License as
63954 - * published by the Free Software Foundation; either version 2 of
63955 - * the License, or (at your option) any later version.
63956 - */
63957 -
63958 -#include <linux/bitops.h>
63959 -#include <linux/input.h>
63960 -#include <linux/kernel.h>
63961 -#include <linux/string.h>
63962 -#include <linux/types.h>
63963 -
63964 -#include "firedtv.h"
63965 -
63966 -/* fixed table with older keycodes, geared towards MythTV */
63967 -const static u16 oldtable[] = {
63968 -
63969 - /* code from device: 0x4501...0x451f */
63970 -
63971 - KEY_ESC,
63972 - KEY_F9,
63973 - KEY_1,
63974 - KEY_2,
63975 - KEY_3,
63976 - KEY_4,
63977 - KEY_5,
63978 - KEY_6,
63979 - KEY_7,
63980 - KEY_8,
63981 - KEY_9,
63982 - KEY_I,
63983 - KEY_0,
63984 - KEY_ENTER,
63985 - KEY_RED,
63986 - KEY_UP,
63987 - KEY_GREEN,
63988 - KEY_F10,
63989 - KEY_SPACE,
63990 - KEY_F11,
63991 - KEY_YELLOW,
63992 - KEY_DOWN,
63993 - KEY_BLUE,
63994 - KEY_Z,
63995 - KEY_P,
63996 - KEY_PAGEDOWN,
63997 - KEY_LEFT,
63998 - KEY_W,
63999 - KEY_RIGHT,
64000 - KEY_P,
64001 - KEY_M,
64002 -
64003 - /* code from device: 0x4540...0x4542 */
64004 -
64005 - KEY_R,
64006 - KEY_V,
64007 - KEY_C,
64008 -};
64009 -
64010 -/* user-modifiable table for a remote as sold in 2008 */
64011 -const static u16 keytable[] = {
64012 -
64013 - /* code from device: 0x0300...0x031f */
64014 -
64015 - [0x00] = KEY_POWER,
64016 - [0x01] = KEY_SLEEP,
64017 - [0x02] = KEY_STOP,
64018 - [0x03] = KEY_OK,
64019 - [0x04] = KEY_RIGHT,
64020 - [0x05] = KEY_1,
64021 - [0x06] = KEY_2,
64022 - [0x07] = KEY_3,
64023 - [0x08] = KEY_LEFT,
64024 - [0x09] = KEY_4,
64025 - [0x0a] = KEY_5,
64026 - [0x0b] = KEY_6,
64027 - [0x0c] = KEY_UP,
64028 - [0x0d] = KEY_7,
64029 - [0x0e] = KEY_8,
64030 - [0x0f] = KEY_9,
64031 - [0x10] = KEY_DOWN,
64032 - [0x11] = KEY_TITLE, /* "OSD" - fixme */
64033 - [0x12] = KEY_0,
64034 - [0x13] = KEY_F20, /* "16:9" - fixme */
64035 - [0x14] = KEY_SCREEN, /* "FULL" - fixme */
64036 - [0x15] = KEY_MUTE,
64037 - [0x16] = KEY_SUBTITLE,
64038 - [0x17] = KEY_RECORD,
64039 - [0x18] = KEY_TEXT,
64040 - [0x19] = KEY_AUDIO,
64041 - [0x1a] = KEY_RED,
64042 - [0x1b] = KEY_PREVIOUS,
64043 - [0x1c] = KEY_REWIND,
64044 - [0x1d] = KEY_PLAYPAUSE,
64045 - [0x1e] = KEY_NEXT,
64046 - [0x1f] = KEY_VOLUMEUP,
64047 -
64048 - /* code from device: 0x0340...0x0354 */
64049 -
64050 - [0x20] = KEY_CHANNELUP,
64051 - [0x21] = KEY_F21, /* "4:3" - fixme */
64052 - [0x22] = KEY_TV,
64053 - [0x23] = KEY_DVD,
64054 - [0x24] = KEY_VCR,
64055 - [0x25] = KEY_AUX,
64056 - [0x26] = KEY_GREEN,
64057 - [0x27] = KEY_YELLOW,
64058 - [0x28] = KEY_BLUE,
64059 - [0x29] = KEY_CHANNEL, /* "CH.LIST" */
64060 - [0x2a] = KEY_VENDOR, /* "CI" - fixme */
64061 - [0x2b] = KEY_VOLUMEDOWN,
64062 - [0x2c] = KEY_CHANNELDOWN,
64063 - [0x2d] = KEY_LAST,
64064 - [0x2e] = KEY_INFO,
64065 - [0x2f] = KEY_FORWARD,
64066 - [0x30] = KEY_LIST,
64067 - [0x31] = KEY_FAVORITES,
64068 - [0x32] = KEY_MENU,
64069 - [0x33] = KEY_EPG,
64070 - [0x34] = KEY_EXIT,
64071 -};
64072 -
64073 -int fdtv_register_rc(struct firedtv *fdtv, struct device *dev)
64074 -{
64075 - struct input_dev *idev;
64076 - int i, err;
64077 -
64078 - idev = input_allocate_device();
64079 - if (!idev)
64080 - return -ENOMEM;
64081 -
64082 - fdtv->remote_ctrl_dev = idev;
64083 - idev->name = "FireDTV remote control";
64084 - idev->dev.parent = dev;
64085 - idev->evbit[0] = BIT_MASK(EV_KEY);
64086 - idev->keycode = kmemdup(keytable, sizeof(keytable), GFP_KERNEL);
64087 - if (!idev->keycode) {
64088 - err = -ENOMEM;
64089 - goto fail;
64090 - }
64091 - idev->keycodesize = sizeof(keytable[0]);
64092 - idev->keycodemax = ARRAY_SIZE(keytable);
64093 -
64094 - for (i = 0; i < ARRAY_SIZE(keytable); i++)
64095 - set_bit(keytable[i], idev->keybit);
64096 -
64097 - err = input_register_device(idev);
64098 - if (err)
64099 - goto fail_free_keymap;
64100 -
64101 - return 0;
64102 -
64103 -fail_free_keymap:
64104 - kfree(idev->keycode);
64105 -fail:
64106 - input_free_device(idev);
64107 - return err;
64108 -}
64109 -
64110 -void fdtv_unregister_rc(struct firedtv *fdtv)
64111 -{
64112 - kfree(fdtv->remote_ctrl_dev->keycode);
64113 - input_unregister_device(fdtv->remote_ctrl_dev);
64114 -}
64115 -
64116 -void fdtv_handle_rc(struct firedtv *fdtv, unsigned int code)
64117 -{
64118 - u16 *keycode = fdtv->remote_ctrl_dev->keycode;
64119 -
64120 - if (code >= 0x0300 && code <= 0x031f)
64121 - code = keycode[code - 0x0300];
64122 - else if (code >= 0x0340 && code <= 0x0354)
64123 - code = keycode[code - 0x0320];
64124 - else if (code >= 0x4501 && code <= 0x451f)
64125 - code = oldtable[code - 0x4501];
64126 - else if (code >= 0x4540 && code <= 0x4542)
64127 - code = oldtable[code - 0x4521];
64128 - else {
64129 - printk(KERN_DEBUG "firedtv: invalid key code 0x%04x "
64130 - "from remote control\n", code);
64131 - return;
64132 - }
64133 -
64134 - input_report_key(fdtv->remote_ctrl_dev, code, 1);
64135 - input_report_key(fdtv->remote_ctrl_dev, code, 0);
64136 -}
64137 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/Kconfig linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/Kconfig
64138 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/Kconfig 2009-05-10 22:04:39.000000000 +0200
64139 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/Kconfig 1970-01-01 01:00:00.000000000 +0100
64140 @@ -1,22 +0,0 @@
64141 -config DVB_FIREDTV
64142 - tristate "FireDTV and FloppyDTV"
64143 - depends on DVB_CORE && IEEE1394
64144 - help
64145 - Support for DVB receivers from Digital Everywhere
64146 - which are connected via IEEE 1394 (FireWire).
64147 -
64148 - These devices don't have an MPEG decoder built in,
64149 - so you need an external software decoder to watch TV.
64150 -
64151 - To compile this driver as a module, say M here:
64152 - the module will be called firedtv.
64153 -
64154 -if DVB_FIREDTV
64155 -
64156 -config DVB_FIREDTV_IEEE1394
64157 - def_bool IEEE1394
64158 -
64159 -config DVB_FIREDTV_INPUT
64160 - def_bool INPUT = y || (INPUT = m && DVB_FIREDTV = m)
64161 -
64162 -endif # DVB_FIREDTV
64163 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/firewire/Makefile linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/Makefile
64164 --- linux-2.6.29.owrt/drivers/media/dvb/firewire/Makefile 2009-05-10 22:04:39.000000000 +0200
64165 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/firewire/Makefile 1970-01-01 01:00:00.000000000 +0100
64166 @@ -1,8 +0,0 @@
64167 -obj-$(CONFIG_DVB_FIREDTV) += firedtv.o
64168 -
64169 -firedtv-y := firedtv-avc.o firedtv-ci.o firedtv-dvb.o firedtv-fe.o
64170 -firedtv-$(CONFIG_DVB_FIREDTV_IEEE1394) += firedtv-1394.o
64171 -firedtv-$(CONFIG_DVB_FIREDTV_INPUT) += firedtv-rc.o
64172 -
64173 -ccflags-y += -Idrivers/media/dvb/dvb-core
64174 -ccflags-$(CONFIG_DVB_FIREDTV_IEEE1394) += -Idrivers/ieee1394
64175 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/drx397xD.c linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/drx397xD.c
64176 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/drx397xD.c 2009-05-10 22:04:39.000000000 +0200
64177 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/drx397xD.c 2009-05-10 23:48:28.000000000 +0200
64178 @@ -646,7 +646,7 @@
64179 u32 edi = 0, ebx = 0, ebp = 0, edx = 0;
64180 u16 v20 = 0, v1E = 0, v16 = 0, v14 = 0, v12 = 0, v10 = 0, v0E = 0;
64181
64182 - int rc, df_tuner = 0;
64183 + int rc, df_tuner;
64184 int a, b, c, d;
64185 pr_debug("%s %d\n", __func__, s->config.d60);
64186
64187 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/s5h1409.c linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/s5h1409.c
64188 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/s5h1409.c 2009-05-10 22:04:39.000000000 +0200
64189 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/s5h1409.c 2009-05-10 23:48:28.000000000 +0200
64190 @@ -545,6 +545,9 @@
64191
64192 s5h1409_enable_modulation(fe, p->u.vsb.modulation);
64193
64194 + /* Allow the demod to settle */
64195 + msleep(100);
64196 +
64197 if (fe->ops.tuner_ops.set_params) {
64198 if (fe->ops.i2c_gate_ctrl)
64199 fe->ops.i2c_gate_ctrl(fe, 1);
64200 @@ -559,10 +562,6 @@
64201 s5h1409_set_qam_interleave_mode(fe);
64202 }
64203
64204 - /* Issue a reset to the demod so it knows to resync against the
64205 - newly tuned frequency */
64206 - s5h1409_softreset(fe);
64207 -
64208 return 0;
64209 }
64210
64211 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/stb0899_algo.c linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb0899_algo.c
64212 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/stb0899_algo.c 2009-05-10 22:04:39.000000000 +0200
64213 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb0899_algo.c 2009-05-10 23:48:28.000000000 +0200
64214 @@ -31,8 +31,6 @@
64215 return n;
64216 }
64217
64218 -#if 0
64219 -/* These functions are currently unused */
64220 /*
64221 * stb0899_calc_srate
64222 * Compute symbol rate
64223 @@ -65,7 +63,6 @@
64224
64225 return stb0899_calc_srate(internal->master_clk, sfr);
64226 }
64227 -#endif
64228
64229 /*
64230 * stb0899_set_srate
64231 @@ -156,7 +153,7 @@
64232 }
64233
64234 if (range > 0)
64235 - internal->sub_range = min(internal->srch_range, range);
64236 + internal->sub_range = MIN(internal->srch_range, range);
64237 else
64238 internal->sub_range = 0;
64239
64240 @@ -185,7 +182,7 @@
64241 timing = stb0899_read_reg(state, STB0899_RTF);
64242
64243 if (lock >= 42) {
64244 - if ((lock > 48) && (abs(timing) >= 110)) {
64245 + if ((lock > 48) && (ABS(timing) >= 110)) {
64246 internal->status = ANALOGCARRIER;
64247 dprintk(state->verbose, FE_DEBUG, 1, "-->ANALOG Carrier !");
64248 } else {
64249 @@ -222,7 +219,7 @@
64250 index++;
64251 derot_freq += index * internal->direction * derot_step; /* next derot zig zag position */
64252
64253 - if (abs(derot_freq) > derot_limit)
64254 + if (ABS(derot_freq) > derot_limit)
64255 next_loop--;
64256
64257 if (next_loop) {
64258 @@ -298,7 +295,7 @@
64259 last_derot_freq = derot_freq;
64260 derot_freq += index * internal->direction * internal->derot_step; /* next zig zag derotator position */
64261
64262 - if(abs(derot_freq) > derot_limit)
64263 + if(ABS(derot_freq) > derot_limit)
64264 next_loop--;
64265
64266 if (next_loop) {
64267 @@ -400,7 +397,7 @@
64268 if ((internal->status != CARRIEROK) || (stb0899_check_data(state) != DATAOK)) {
64269
64270 derot_freq += index * internal->direction * derot_step; /* next zig zag derotator position */
64271 - if (abs(derot_freq) > derot_limit)
64272 + if (ABS(derot_freq) > derot_limit)
64273 next_loop--;
64274
64275 if (next_loop) {
64276 @@ -467,7 +464,7 @@
64277
64278 if (internal->sub_dir > 0) {
64279 old_sub_range = internal->sub_range;
64280 - internal->sub_range = min((internal->srch_range / 2) -
64281 + internal->sub_range = MIN((internal->srch_range / 2) -
64282 (internal->tuner_offst + internal->sub_range / 2),
64283 internal->sub_range);
64284
64285 @@ -771,7 +768,7 @@
64286 int i;
64287
64288 i = 0;
64289 - while ((1 << i) <= abs(number))
64290 + while ((1 << i) <= ABS(number))
64291 i++;
64292
64293 if (number == 0)
64294 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/stb0899_drv.c linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb0899_drv.c
64295 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/stb0899_drv.c 2009-05-10 22:04:39.000000000 +0200
64296 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb0899_drv.c 2009-05-10 23:48:28.000000000 +0200
64297 @@ -794,7 +794,7 @@
64298 reg = stb0899_read_reg(state, STB0899_DISCNTRL1);
64299 old_state = reg;
64300 /* set to burst mode */
64301 - STB0899_SETFIELD_VAL(DISEQCMODE, reg, 0x03);
64302 + STB0899_SETFIELD_VAL(DISEQCMODE, reg, 0x02);
64303 STB0899_SETFIELD_VAL(DISPRECHARGE, reg, 0x01);
64304 stb0899_write_reg(state, STB0899_DISCNTRL1, reg);
64305 switch (burst) {
64306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/stb0899_priv.h linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb0899_priv.h
64307 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/stb0899_priv.h 2009-05-10 22:04:39.000000000 +0200
64308 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb0899_priv.h 2009-05-10 23:48:28.000000000 +0200
64309 @@ -59,6 +59,10 @@
64310 #define MAKEWORD32(a, b, c, d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d))
64311 #define MAKEWORD16(a, b) (((a) << 8) | (b))
64312
64313 +#define MIN(x, y) ((x) <= (y) ? (x) : (y))
64314 +#define MAX(x, y) ((x) >= (y) ? (x) : (y))
64315 +#define ABS(x) ((x) >= 0 ? (x) : -(x))
64316 +
64317 #define LSB(x) ((x & 0xff))
64318 #define MSB(y) ((y >> 8) & 0xff)
64319
64320 @@ -164,10 +168,10 @@
64321 u32 freq; /* Demod internal Frequency */
64322 u32 srate; /* Demod internal Symbol rate */
64323 enum stb0899_fec fecrate; /* Demod internal FEC rate */
64324 - s32 srch_range; /* Demod internal Search Range */
64325 - s32 sub_range; /* Demod current sub range (Hz) */
64326 - s32 tuner_step; /* Tuner step (Hz) */
64327 - s32 tuner_offst; /* Relative offset to carrier (Hz) */
64328 + u32 srch_range; /* Demod internal Search Range */
64329 + u32 sub_range; /* Demod current sub range (Hz) */
64330 + u32 tuner_step; /* Tuner step (Hz) */
64331 + u32 tuner_offst; /* Relative offset to carrier (Hz) */
64332 u32 tuner_bw; /* Current bandwidth of the tuner (Hz) */
64333
64334 s32 mclk; /* Masterclock Divider factor (binary) */
64335 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/stb6100.c linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb6100.c
64336 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/stb6100.c 2009-05-10 22:04:39.000000000 +0200
64337 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/stb6100.c 2009-05-10 23:48:28.000000000 +0200
64338 @@ -427,11 +427,11 @@
64339 status->refclock = 27000000; /* Hz */
64340 status->iqsense = 1;
64341 status->bandwidth = 36000; /* kHz */
64342 - state->bandwidth = status->bandwidth * 1000; /* Hz */
64343 + state->bandwidth = status->bandwidth * 1000; /* MHz */
64344 state->reference = status->refclock / 1000; /* kHz */
64345
64346 /* Set default bandwidth. */
64347 - return stb6100_set_bandwidth(fe, state->bandwidth);
64348 + return stb6100_set_bandwidth(fe, status->bandwidth);
64349 }
64350
64351 static int stb6100_get_state(struct dvb_frontend *fe,
64352 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/zl10353.c linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/zl10353.c
64353 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/zl10353.c 2009-05-10 22:04:39.000000000 +0200
64354 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/zl10353.c 2009-05-10 23:48:28.000000000 +0200
64355 @@ -590,7 +590,7 @@
64356 struct zl10353_state *state = fe->demodulator_priv;
64357 u8 val = 0x0a;
64358
64359 - if (state->config.disable_i2c_gate_ctrl) {
64360 + if (state->config.no_tuner) {
64361 /* No tuner attached to the internal I2C bus */
64362 /* If set enable I2C bridge, the main I2C bus stopped hardly */
64363 return 0;
64364 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/frontends/zl10353.h linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/zl10353.h
64365 --- linux-2.6.29.owrt/drivers/media/dvb/frontends/zl10353.h 2009-05-10 22:04:39.000000000 +0200
64366 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/frontends/zl10353.h 2009-05-10 23:48:28.000000000 +0200
64367 @@ -38,9 +38,6 @@
64368
64369 /* set if parallel ts output is required */
64370 int parallel_ts;
64371 -
64372 - /* set if i2c_gate_ctrl disable is required */
64373 - u8 disable_i2c_gate_ctrl:1;
64374 };
64375
64376 #if defined(CONFIG_DVB_ZL10353) || (defined(CONFIG_DVB_ZL10353_MODULE) && defined(MODULE))
64377 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/Kconfig linux-2.6.29-rc3.owrt/drivers/media/dvb/Kconfig
64378 --- linux-2.6.29.owrt/drivers/media/dvb/Kconfig 2009-05-10 22:04:39.000000000 +0200
64379 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/Kconfig 2009-05-10 23:48:28.000000000 +0200
64380 @@ -51,10 +51,6 @@
64381 depends on DVB_CORE && PCI && I2C
64382 source "drivers/media/dvb/dm1105/Kconfig"
64383
64384 -comment "Supported FireWire (IEEE 1394) Adapters"
64385 - depends on DVB_CORE && IEEE1394
64386 -source "drivers/media/dvb/firewire/Kconfig"
64387 -
64388 comment "Supported DVB Frontends"
64389 depends on DVB_CORE
64390 source "drivers/media/dvb/frontends/Kconfig"
64391 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/Makefile linux-2.6.29-rc3.owrt/drivers/media/dvb/Makefile
64392 --- linux-2.6.29.owrt/drivers/media/dvb/Makefile 2009-05-10 22:04:39.000000000 +0200
64393 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/Makefile 2009-05-10 23:48:28.000000000 +0200
64394 @@ -3,5 +3,3 @@
64395 #
64396
64397 obj-y := dvb-core/ frontends/ ttpci/ ttusb-dec/ ttusb-budget/ b2c2/ bt8xx/ dvb-usb/ pluto2/ siano/ dm1105/
64398 -
64399 -obj-$(CONFIG_DVB_FIREDTV) += firewire/
64400 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/ttpci/budget.c linux-2.6.29-rc3.owrt/drivers/media/dvb/ttpci/budget.c
64401 --- linux-2.6.29.owrt/drivers/media/dvb/ttpci/budget.c 2009-05-10 22:04:39.000000000 +0200
64402 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/ttpci/budget.c 2009-05-10 23:48:28.000000000 +0200
64403 @@ -470,7 +470,6 @@
64404 budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config, &budget->i2c_adap);
64405 if (budget->dvb_frontend) {
64406 budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params;
64407 - budget->dvb_frontend->tuner_priv = NULL;
64408 break;
64409 }
64410 break;
64411 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/dvb/ttusb-dec/ttusb_dec.c linux-2.6.29-rc3.owrt/drivers/media/dvb/ttusb-dec/ttusb_dec.c
64412 --- linux-2.6.29.owrt/drivers/media/dvb/ttusb-dec/ttusb_dec.c 2009-05-10 22:04:39.000000000 +0200
64413 +++ linux-2.6.29-rc3.owrt/drivers/media/dvb/ttusb-dec/ttusb_dec.c 2009-05-10 23:48:28.000000000 +0200
64414 @@ -1384,7 +1384,7 @@
64415 static int ttusb_dec_init_stb(struct ttusb_dec *dec)
64416 {
64417 int result;
64418 - unsigned int mode = 0, model = 0, version = 0;
64419 + unsigned int mode, model, version;
64420
64421 dprintk("%s\n", __func__);
64422
64423 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/radio/radio-mr800.c linux-2.6.29-rc3.owrt/drivers/media/radio/radio-mr800.c
64424 --- linux-2.6.29.owrt/drivers/media/radio/radio-mr800.c 2009-05-10 22:04:39.000000000 +0200
64425 +++ linux-2.6.29-rc3.owrt/drivers/media/radio/radio-mr800.c 2009-05-10 23:48:28.000000000 +0200
64426 @@ -194,10 +194,10 @@
64427 return retval;
64428 }
64429
64430 - radio->muted = 0;
64431 -
64432 mutex_unlock(&radio->lock);
64433
64434 + radio->muted = 0;
64435 +
64436 return retval;
64437 }
64438
64439 @@ -230,10 +230,10 @@
64440 return retval;
64441 }
64442
64443 - radio->muted = 1;
64444 -
64445 mutex_unlock(&radio->lock);
64446
64447 + radio->muted = 1;
64448 +
64449 return retval;
64450 }
64451
64452 @@ -284,10 +284,10 @@
64453 return retval;
64454 }
64455
64456 - radio->stereo = 0;
64457 -
64458 mutex_unlock(&radio->lock);
64459
64460 + radio->stereo = 0;
64461 +
64462 return retval;
64463 }
64464
64465 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/radio/radio-si470x.c linux-2.6.29-rc3.owrt/drivers/media/radio/radio-si470x.c
64466 --- linux-2.6.29.owrt/drivers/media/radio/radio-si470x.c 2009-05-10 22:04:39.000000000 +0200
64467 +++ linux-2.6.29-rc3.owrt/drivers/media/radio/radio-si470x.c 2009-05-10 23:48:28.000000000 +0200
64468 @@ -98,16 +98,11 @@
64469 * - blacklisted KWorld radio in hid-core.c and hid-ids.h
64470 * 2008-12-03 Mark Lord <mlord@pobox.com>
64471 * - add support for DealExtreme USB Radio
64472 - * 2009-01-31 Bob Ross <pigiron@gmx.com>
64473 - * - correction of stereo detection/setting
64474 - * - correction of signal strength indicator scaling
64475 - * 2009-01-31 Rick Bronson <rick@efn.org>
64476 - * Tobias Lorenz <tobias.lorenz@gmx.net>
64477 - * - add LED status output
64478 *
64479 * ToDo:
64480 * - add firmware download/update support
64481 * - RDS support: interrupt mode, instead of polling
64482 + * - add LED status output (check if that's not already done in firmware)
64483 */
64484
64485
64486 @@ -887,30 +882,6 @@
64487
64488
64489 /**************************************************************************
64490 - * General Driver Functions - LED_REPORT
64491 - **************************************************************************/
64492 -
64493 -/*
64494 - * si470x_set_led_state - sets the led state
64495 - */
64496 -static int si470x_set_led_state(struct si470x_device *radio,
64497 - unsigned char led_state)
64498 -{
64499 - unsigned char buf[LED_REPORT_SIZE];
64500 - int retval;
64501 -
64502 - buf[0] = LED_REPORT;
64503 - buf[1] = LED_COMMAND;
64504 - buf[2] = led_state;
64505 -
64506 - retval = si470x_set_report(radio, (void *) &buf, sizeof(buf));
64507 -
64508 - return (retval < 0) ? -EINVAL : 0;
64509 -}
64510 -
64511 -
64512 -
64513 -/**************************************************************************
64514 * RDS Driver Functions
64515 **************************************************************************/
64516
64517 @@ -1414,22 +1385,20 @@
64518 };
64519
64520 /* stereo indicator == stereo (instead of mono) */
64521 - if ((radio->registers[STATUSRSSI] & STATUSRSSI_ST) == 0)
64522 - tuner->rxsubchans = V4L2_TUNER_SUB_MONO;
64523 - else
64524 + if ((radio->registers[STATUSRSSI] & STATUSRSSI_ST) == 1)
64525 tuner->rxsubchans = V4L2_TUNER_SUB_MONO | V4L2_TUNER_SUB_STEREO;
64526 + else
64527 + tuner->rxsubchans = V4L2_TUNER_SUB_MONO;
64528
64529 /* mono/stereo selector */
64530 - if ((radio->registers[POWERCFG] & POWERCFG_MONO) == 0)
64531 - tuner->audmode = V4L2_TUNER_MODE_STEREO;
64532 - else
64533 + if ((radio->registers[POWERCFG] & POWERCFG_MONO) == 1)
64534 tuner->audmode = V4L2_TUNER_MODE_MONO;
64535 + else
64536 + tuner->audmode = V4L2_TUNER_MODE_STEREO;
64537
64538 /* min is worst, max is best; signal:0..0xffff; rssi: 0..0xff */
64539 - /* measured in units of dbµV in 1 db increments (max at ~75 dbµV) */
64540 - tuner->signal = (radio->registers[STATUSRSSI] & STATUSRSSI_RSSI);
64541 - /* the ideal factor is 0xffff/75 = 873,8 */
64542 - tuner->signal = (tuner->signal * 873) + (8 * tuner->signal / 10);
64543 + tuner->signal = (radio->registers[STATUSRSSI] & STATUSRSSI_RSSI)
64544 + * 0x0101;
64545
64546 /* automatic frequency control: -1: freq to low, 1 freq to high */
64547 /* AFCRL does only indicate that freq. differs, not if too low/high */
64548 @@ -1663,9 +1632,6 @@
64549 /* set initial frequency */
64550 si470x_set_freq(radio, 87.5 * FREQ_MUL); /* available in all regions */
64551
64552 - /* set led to connect state */
64553 - si470x_set_led_state(radio, BLINK_GREEN_LED);
64554 -
64555 /* rds buffer allocation */
64556 radio->buf_size = rds_buf * 3;
64557 radio->buffer = kmalloc(radio->buf_size, GFP_KERNEL);
64558 @@ -1749,9 +1715,6 @@
64559 cancel_delayed_work_sync(&radio->work);
64560 usb_set_intfdata(intf, NULL);
64561 if (radio->users == 0) {
64562 - /* set led to disconnect state */
64563 - si470x_set_led_state(radio, BLINK_ORANGE_LED);
64564 -
64565 video_unregister_device(radio->videodev);
64566 kfree(radio->buffer);
64567 kfree(radio);
64568 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/cs5345.c linux-2.6.29-rc3.owrt/drivers/media/video/cs5345.c
64569 --- linux-2.6.29.owrt/drivers/media/video/cs5345.c 2009-05-10 22:04:38.000000000 +0200
64570 +++ linux-2.6.29-rc3.owrt/drivers/media/video/cs5345.c 2009-05-10 23:48:28.000000000 +0200
64571 @@ -18,6 +18,7 @@
64572 */
64573
64574
64575 +#include <linux/version.h>
64576 #include <linux/module.h>
64577 #include <linux/kernel.h>
64578 #include <linux/i2c.h>
64579 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/cx23885/cx23885-417.c linux-2.6.29-rc3.owrt/drivers/media/video/cx23885/cx23885-417.c
64580 --- linux-2.6.29.owrt/drivers/media/video/cx23885/cx23885-417.c 2009-05-10 22:04:38.000000000 +0200
64581 +++ linux-2.6.29-rc3.owrt/drivers/media/video/cx23885/cx23885-417.c 2009-05-10 23:48:28.000000000 +0200
64582 @@ -1586,8 +1586,7 @@
64583 lock_kernel();
64584 list_for_each(list, &cx23885_devlist) {
64585 h = list_entry(list, struct cx23885_dev, devlist);
64586 - if (h->v4l_device &&
64587 - h->v4l_device->minor == minor) {
64588 + if (h->v4l_device->minor == minor) {
64589 dev = h;
64590 break;
64591 }
64592 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/cx23885/cx23885-video.c linux-2.6.29-rc3.owrt/drivers/media/video/cx23885/cx23885-video.c
64593 --- linux-2.6.29.owrt/drivers/media/video/cx23885/cx23885-video.c 2009-05-10 22:04:38.000000000 +0200
64594 +++ linux-2.6.29-rc3.owrt/drivers/media/video/cx23885/cx23885-video.c 2009-05-10 23:48:28.000000000 +0200
64595 @@ -730,13 +730,12 @@
64596 lock_kernel();
64597 list_for_each(list, &cx23885_devlist) {
64598 h = list_entry(list, struct cx23885_dev, devlist);
64599 - if (h->video_dev &&
64600 - h->video_dev->minor == minor) {
64601 + if (h->video_dev->minor == minor) {
64602 dev = h;
64603 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
64604 }
64605 if (h->vbi_dev &&
64606 - h->vbi_dev->minor == minor) {
64607 + h->vbi_dev->minor == minor) {
64608 dev = h;
64609 type = V4L2_BUF_TYPE_VBI_CAPTURE;
64610 }
64611 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/cx25840/cx25840-core.c linux-2.6.29-rc3.owrt/drivers/media/video/cx25840/cx25840-core.c
64612 --- linux-2.6.29.owrt/drivers/media/video/cx25840/cx25840-core.c 2009-05-10 22:04:38.000000000 +0200
64613 +++ linux-2.6.29-rc3.owrt/drivers/media/video/cx25840/cx25840-core.c 2009-05-10 23:48:28.000000000 +0200
64614 @@ -1382,14 +1382,6 @@
64615
64616 static int cx25840_command(struct i2c_client *client, unsigned cmd, void *arg)
64617 {
64618 - /* ignore this command */
64619 - if (cmd == TUNER_SET_TYPE_ADDR || cmd == TUNER_SET_CONFIG)
64620 - return 0;
64621 -
64622 - /* Old-style drivers rely on initialization on first use, so
64623 - call the init whenever a command is issued to this driver.
64624 - New-style drivers using v4l2_subdev should call init explicitly. */
64625 - cx25840_init(i2c_get_clientdata(client), 0);
64626 return v4l2_subdev_command(i2c_get_clientdata(client), cmd, arg);
64627 }
64628
64629 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/cx88/cx88-dvb.c linux-2.6.29-rc3.owrt/drivers/media/video/cx88/cx88-dvb.c
64630 --- linux-2.6.29.owrt/drivers/media/video/cx88/cx88-dvb.c 2009-05-10 22:04:38.000000000 +0200
64631 +++ linux-2.6.29-rc3.owrt/drivers/media/video/cx88/cx88-dvb.c 2009-05-10 23:48:28.000000000 +0200
64632 @@ -614,41 +614,34 @@
64633 .set_ts_params = cx24116_set_ts_param,
64634 };
64635
64636 -static int cx8802_alloc_frontends(struct cx8802_dev *dev)
64637 +static int dvb_register(struct cx8802_dev *dev)
64638 {
64639 struct cx88_core *core = dev->core;
64640 - struct videobuf_dvb_frontend *fe = NULL;
64641 + struct videobuf_dvb_frontend *fe0, *fe1 = NULL;
64642 + int mfe_shared = 0; /* bus not shared by default */
64643 int i;
64644
64645 - mutex_init(&dev->frontends.lock);
64646 - INIT_LIST_HEAD(&dev->frontends.felist);
64647 + if (0 != core->i2c_rc) {
64648 + printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);
64649 + goto frontend_detach;
64650 + }
64651
64652 if (!core->board.num_frontends)
64653 - return -ENODEV;
64654 + return -EINVAL;
64655 +
64656 + mutex_init(&dev->frontends.lock);
64657 + INIT_LIST_HEAD(&dev->frontends.felist);
64658
64659 printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,
64660 core->board.num_frontends);
64661 for (i = 1; i <= core->board.num_frontends; i++) {
64662 - fe = videobuf_dvb_alloc_frontend(&dev->frontends, i);
64663 - if (!fe) {
64664 + fe0 = videobuf_dvb_alloc_frontend(&dev->frontends, i);
64665 + if (!fe0) {
64666 printk(KERN_ERR "%s() failed to alloc\n", __func__);
64667 videobuf_dvb_dealloc_frontends(&dev->frontends);
64668 - return -ENOMEM;
64669 + goto frontend_detach;
64670 }
64671 }
64672 - return 0;
64673 -}
64674 -
64675 -static int dvb_register(struct cx8802_dev *dev)
64676 -{
64677 - struct cx88_core *core = dev->core;
64678 - struct videobuf_dvb_frontend *fe0, *fe1 = NULL;
64679 - int mfe_shared = 0; /* bus not shared by default */
64680 -
64681 - if (0 != core->i2c_rc) {
64682 - printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);
64683 - goto frontend_detach;
64684 - }
64685
64686 /* Get the first frontend */
64687 fe0 = videobuf_dvb_get_frontend(&dev->frontends, 1);
64688 @@ -1250,8 +1243,6 @@
64689 struct cx88_core *core = drv->core;
64690 struct cx8802_dev *dev = drv->core->dvbdev;
64691 int err;
64692 - struct videobuf_dvb_frontend *fe;
64693 - int i;
64694
64695 dprintk( 1, "%s\n", __func__);
64696 dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",
64697 @@ -1267,34 +1258,39 @@
64698 /* If vp3054 isn't enabled, a stub will just return 0 */
64699 err = vp3054_i2c_probe(dev);
64700 if (0 != err)
64701 - goto fail_core;
64702 + goto fail_probe;
64703
64704 /* dvb stuff */
64705 printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name);
64706 dev->ts_gen_cntrl = 0x0c;
64707
64708 - err = cx8802_alloc_frontends(dev);
64709 - if (err)
64710 - goto fail_core;
64711 -
64712 err = -ENODEV;
64713 - for (i = 1; i <= core->board.num_frontends; i++) {
64714 - fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);
64715 - if (fe == NULL) {
64716 - printk(KERN_ERR "%s() failed to get frontend(%d)\n",
64717 + if (core->board.num_frontends) {
64718 + struct videobuf_dvb_frontend *fe;
64719 + int i;
64720 +
64721 + for (i = 1; i <= core->board.num_frontends; i++) {
64722 + fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);
64723 + if (fe == NULL) {
64724 + printk(KERN_ERR "%s() failed to get frontend(%d)\n",
64725 __func__, i);
64726 - goto fail_probe;
64727 - }
64728 - videobuf_queue_sg_init(&fe->dvb.dvbq, &dvb_qops,
64729 + goto fail_probe;
64730 + }
64731 + videobuf_queue_sg_init(&fe->dvb.dvbq, &dvb_qops,
64732 &dev->pci->dev, &dev->slock,
64733 V4L2_BUF_TYPE_VIDEO_CAPTURE,
64734 V4L2_FIELD_TOP,
64735 sizeof(struct cx88_buffer),
64736 dev);
64737 - /* init struct videobuf_dvb */
64738 - fe->dvb.name = dev->core->name;
64739 + /* init struct videobuf_dvb */
64740 + fe->dvb.name = dev->core->name;
64741 + }
64742 + } else {
64743 + /* no frontends allocated */
64744 + printk(KERN_ERR "%s/2 .num_frontends should be non-zero\n",
64745 + core->name);
64746 + goto fail_core;
64747 }
64748 -
64749 err = dvb_register(dev);
64750 if (err)
64751 /* frontends/adapter de-allocated in dvb_register */
64752 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/cx88/cx88.h linux-2.6.29-rc3.owrt/drivers/media/video/cx88/cx88.h
64753 --- linux-2.6.29.owrt/drivers/media/video/cx88/cx88.h 2009-05-10 22:04:38.000000000 +0200
64754 +++ linux-2.6.29-rc3.owrt/drivers/media/video/cx88/cx88.h 2009-05-10 23:48:28.000000000 +0200
64755 @@ -336,8 +336,8 @@
64756 /* config info -- dvb */
64757 #if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
64758 int (*prev_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);
64759 -#endif
64760 void (*gate_ctrl)(struct cx88_core *core, int open);
64761 +#endif
64762
64763 /* state info */
64764 struct task_struct *kthread;
64765 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-audio.c linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-audio.c
64766 --- linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-audio.c 2009-05-10 22:04:38.000000000 +0200
64767 +++ linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-audio.c 2009-05-10 23:48:28.000000000 +0200
64768 @@ -62,15 +62,9 @@
64769
64770 dprintk("Stopping isoc\n");
64771 for (i = 0; i < EM28XX_AUDIO_BUFS; i++) {
64772 - if (!irqs_disabled())
64773 - usb_kill_urb(dev->adev.urb[i]);
64774 - else
64775 - usb_unlink_urb(dev->adev.urb[i]);
64776 + usb_unlink_urb(dev->adev.urb[i]);
64777 usb_free_urb(dev->adev.urb[i]);
64778 dev->adev.urb[i] = NULL;
64779 -
64780 - kfree(dev->adev.transfer_buffer[i]);
64781 - dev->adev.transfer_buffer[i] = NULL;
64782 }
64783
64784 return 0;
64785 @@ -395,15 +389,11 @@
64786 static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream
64787 *substream)
64788 {
64789 - unsigned long flags;
64790 -
64791 struct em28xx *dev;
64792 - snd_pcm_uframes_t hwptr_done;
64793
64794 + snd_pcm_uframes_t hwptr_done;
64795 dev = snd_pcm_substream_chip(substream);
64796 - spin_lock_irqsave(&dev->adev.slock, flags);
64797 hwptr_done = dev->adev.hwptr_done_capture;
64798 - spin_unlock_irqrestore(&dev->adev.slock, flags);
64799
64800 return hwptr_done;
64801 }
64802 @@ -463,8 +453,6 @@
64803 pcm->info_flags = 0;
64804 pcm->private_data = dev;
64805 strcpy(pcm->name, "Empia 28xx Capture");
64806 -
64807 - snd_card_set_dev(card, &dev->udev->dev);
64808 strcpy(card->driver, "Empia Em28xx Audio");
64809 strcpy(card->shortname, "Em28xx Audio");
64810 strcpy(card->longname, "Empia Em28xx Audio");
64811 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-cards.c linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-cards.c
64812 --- linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-cards.c 2009-05-10 22:04:38.000000000 +0200
64813 +++ linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-cards.c 2009-05-10 23:48:28.000000000 +0200
64814 @@ -102,18 +102,6 @@
64815 /* Board - EM2870 Kworld 355u
64816 Analog - No input analog */
64817
64818 -static struct em28xx_reg_seq kworld_330u_analog[] = {
64819 - {EM28XX_R08_GPIO, 0x6d, ~EM_GPIO_4, 10},
64820 - {EM2880_R04_GPO, 0x00, 0xff, 10},
64821 - { -1, -1, -1, -1},
64822 -};
64823 -
64824 -static struct em28xx_reg_seq kworld_330u_digital[] = {
64825 - {EM28XX_R08_GPIO, 0x6e, ~EM_GPIO_4, 10},
64826 - {EM2880_R04_GPO, 0x08, 0xff, 10},
64827 - { -1, -1, -1, -1},
64828 -};
64829 -
64830 /* Callback for the most boards */
64831 static struct em28xx_reg_seq default_tuner_gpio[] = {
64832 {EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
64833 @@ -1189,33 +1177,29 @@
64834 .gpio = hauppauge_wintv_hvr_900_analog,
64835 } },
64836 },
64837 - [EM2883_BOARD_KWORLD_HYBRID_330U] = {
64838 + [EM2883_BOARD_KWORLD_HYBRID_A316] = {
64839 .name = "Kworld PlusTV HD Hybrid 330",
64840 .tuner_type = TUNER_XC2028,
64841 .tuner_gpio = default_tuner_gpio,
64842 .decoder = EM28XX_TVP5150,
64843 .mts_firmware = 1,
64844 .has_dvb = 1,
64845 - .dvb_gpio = kworld_330u_digital,
64846 - .xclk = EM28XX_XCLK_FREQUENCY_12MHZ,
64847 - .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE | EM28XX_I2C_EEPROM_ON_BOARD | EM28XX_I2C_EEPROM_KEY_VALID,
64848 + .dvb_gpio = default_digital,
64849 .input = { {
64850 .type = EM28XX_VMUX_TELEVISION,
64851 .vmux = TVP5150_COMPOSITE0,
64852 .amux = EM28XX_AMUX_VIDEO,
64853 - .gpio = kworld_330u_analog,
64854 - .aout = EM28XX_AOUT_PCM_IN | EM28XX_AOUT_PCM_STEREO,
64855 + .gpio = default_analog,
64856 }, {
64857 .type = EM28XX_VMUX_COMPOSITE1,
64858 .vmux = TVP5150_COMPOSITE1,
64859 .amux = EM28XX_AMUX_LINE_IN,
64860 - .gpio = kworld_330u_analog,
64861 - .aout = EM28XX_AOUT_PCM_IN | EM28XX_AOUT_PCM_STEREO,
64862 + .gpio = hauppauge_wintv_hvr_900_analog,
64863 }, {
64864 .type = EM28XX_VMUX_SVIDEO,
64865 .vmux = TVP5150_SVIDEO,
64866 .amux = EM28XX_AMUX_LINE_IN,
64867 - .gpio = kworld_330u_analog,
64868 + .gpio = hauppauge_wintv_hvr_900_analog,
64869 } },
64870 },
64871 [EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU] = {
64872 @@ -1265,7 +1249,7 @@
64873 { USB_DEVICE(0xeb1a, 0xe310),
64874 .driver_info = EM2880_BOARD_MSI_DIGIVOX_AD },
64875 { USB_DEVICE(0xeb1a, 0xa316),
64876 - .driver_info = EM2883_BOARD_KWORLD_HYBRID_330U },
64877 + .driver_info = EM2883_BOARD_KWORLD_HYBRID_A316 },
64878 { USB_DEVICE(0xeb1a, 0xe320),
64879 .driver_info = EM2880_BOARD_MSI_DIGIVOX_AD_II },
64880 { USB_DEVICE(0xeb1a, 0xe323),
64881 @@ -1542,10 +1526,6 @@
64882 /* FIXME: Better to specify the needed IF */
64883 ctl->demod = XC3028_FE_DEFAULT;
64884 break;
64885 - case EM2883_BOARD_KWORLD_HYBRID_330U:
64886 - ctl->demod = XC3028_FE_CHINA;
64887 - ctl->fname = XC2028_DEFAULT_FIRMWARE;
64888 - break;
64889 default:
64890 ctl->demod = XC3028_FE_OREN538;
64891 }
64892 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-core.c linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-core.c
64893 --- linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-core.c 2009-05-10 22:04:38.000000000 +0200
64894 +++ linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-core.c 2009-05-10 23:48:28.000000000 +0200
64895 @@ -438,10 +438,6 @@
64896 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) {
64897 int vol;
64898
64899 - em28xx_write_ac97(dev, AC97_POWER_DOWN_CTRL, 0x4200);
64900 - em28xx_write_ac97(dev, AC97_EXT_AUD_CTRL, 0x0031);
64901 - em28xx_write_ac97(dev, AC97_PCM_IN_SRATE, 0xbb80);
64902 -
64903 /* LSB: left channel - both channels with the same level */
64904 vol = (0x1f - dev->volume) | ((0x1f - dev->volume) << 8);
64905
64906 @@ -458,15 +454,6 @@
64907 em28xx_warn("couldn't setup AC97 register %d\n",
64908 outputs[i].reg);
64909 }
64910 -
64911 - if (dev->ctl_aoutput & EM28XX_AOUT_PCM_IN) {
64912 - int sel = ac97_return_record_select(dev->ctl_aoutput);
64913 -
64914 - /* Use the same input for both left and right channels */
64915 - sel |= (sel << 8);
64916 -
64917 - em28xx_write_ac97(dev, AC97_RECORD_SELECT, sel);
64918 - }
64919 }
64920
64921 return ret;
64922 @@ -860,11 +847,8 @@
64923 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {
64924 urb = dev->isoc_ctl.urb[i];
64925 if (urb) {
64926 - if (!irqs_disabled())
64927 - usb_kill_urb(urb);
64928 - else
64929 - usb_unlink_urb(urb);
64930 -
64931 + usb_kill_urb(urb);
64932 + usb_unlink_urb(urb);
64933 if (dev->isoc_ctl.transfer_buffer[i]) {
64934 usb_buffer_free(dev->udev,
64935 urb->transfer_buffer_length,
64936 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-dvb.c linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-dvb.c
64937 --- linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-dvb.c 2009-05-10 22:04:38.000000000 +0200
64938 +++ linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-dvb.c 2009-05-10 23:48:28.000000000 +0200
64939 @@ -28,7 +28,6 @@
64940
64941 #include "lgdt330x.h"
64942 #include "zl10353.h"
64943 -#include "s5h1409.h"
64944 #ifdef EM28XX_DRX397XD_SUPPORT
64945 #include "drx397xD.h"
64946 #endif
64947 @@ -233,15 +232,6 @@
64948 .if2 = 45600,
64949 };
64950
64951 -static struct s5h1409_config em28xx_s5h1409_with_xc3028 = {
64952 - .demod_address = 0x32 >> 1,
64953 - .output_mode = S5H1409_PARALLEL_OUTPUT,
64954 - .gpio = S5H1409_GPIO_OFF,
64955 - .inversion = S5H1409_INVERSION_OFF,
64956 - .status_mode = S5H1409_DEMODLOCKING,
64957 - .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK
64958 -};
64959 -
64960 #ifdef EM28XX_DRX397XD_SUPPORT
64961 /* [TODO] djh - not sure yet what the device config needs to contain */
64962 static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {
64963 @@ -422,6 +412,7 @@
64964 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:
64965 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
64966 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
64967 + case EM2883_BOARD_KWORLD_HYBRID_A316:
64968 case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
64969 dvb->frontend = dvb_attach(lgdt330x_attach,
64970 &em2880_lgdt3303_dev,
64971 @@ -442,15 +433,6 @@
64972 goto out_free;
64973 }
64974 break;
64975 - case EM2883_BOARD_KWORLD_HYBRID_330U:
64976 - dvb->frontend = dvb_attach(s5h1409_attach,
64977 - &em28xx_s5h1409_with_xc3028,
64978 - &dev->i2c_adap);
64979 - if (attach_xc3028(0x61, dev) < 0) {
64980 - result = -EINVAL;
64981 - goto out_free;
64982 - }
64983 - break;
64984 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
64985 #ifdef EM28XX_DRX397XD_SUPPORT
64986 /* We don't have the config structure properly populated, so
64987 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx.h linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx.h
64988 --- linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx.h 2009-05-10 22:04:38.000000000 +0200
64989 +++ linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx.h 2009-05-10 23:48:28.000000000 +0200
64990 @@ -94,7 +94,7 @@
64991 #define EM2882_BOARD_KWORLD_VS_DVBT 54
64992 #define EM2882_BOARD_TERRATEC_HYBRID_XS 55
64993 #define EM2882_BOARD_PINNACLE_HYBRID_PRO 56
64994 -#define EM2883_BOARD_KWORLD_HYBRID_330U 57
64995 +#define EM2883_BOARD_KWORLD_HYBRID_A316 57
64996 #define EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU 58
64997 #define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60
64998 #define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61
64999 @@ -300,32 +300,13 @@
65000 };
65001
65002 enum em28xx_aout {
65003 - /* AC97 outputs */
65004 EM28XX_AOUT_MASTER = 1 << 0,
65005 EM28XX_AOUT_LINE = 1 << 1,
65006 EM28XX_AOUT_MONO = 1 << 2,
65007 EM28XX_AOUT_LFE = 1 << 3,
65008 EM28XX_AOUT_SURR = 1 << 4,
65009 -
65010 - /* PCM IN Mixer - used by AC97_RECORD_SELECT register */
65011 - EM28XX_AOUT_PCM_IN = 1 << 7,
65012 -
65013 - /* Bits 10-8 are used to indicate the PCM IN record select */
65014 - EM28XX_AOUT_PCM_MIC_PCM = 0 << 8,
65015 - EM28XX_AOUT_PCM_CD = 1 << 8,
65016 - EM28XX_AOUT_PCM_VIDEO = 2 << 8,
65017 - EM28XX_AOUT_PCM_AUX = 3 << 8,
65018 - EM28XX_AOUT_PCM_LINE = 4 << 8,
65019 - EM28XX_AOUT_PCM_STEREO = 5 << 8,
65020 - EM28XX_AOUT_PCM_MONO = 6 << 8,
65021 - EM28XX_AOUT_PCM_PHONE = 7 << 8,
65022 };
65023
65024 -static inline int ac97_return_record_select(int a_out)
65025 -{
65026 - return (a_out & 0x700) >> 8;
65027 -}
65028 -
65029 struct em28xx_reg_seq {
65030 int reg;
65031 unsigned char val, mask;
65032 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-video.c linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-video.c
65033 --- linux-2.6.29.owrt/drivers/media/video/em28xx/em28xx-video.c 2009-05-10 22:04:38.000000000 +0200
65034 +++ linux-2.6.29-rc3.owrt/drivers/media/video/em28xx/em28xx-video.c 2009-05-10 23:48:28.000000000 +0200
65035 @@ -886,10 +886,10 @@
65036 if (0 == INPUT(i)->type)
65037 return -EINVAL;
65038
65039 - dev->ctl_input = i;
65040 -
65041 mutex_lock(&dev->lock);
65042 - video_mux(dev, dev->ctl_input);
65043 +
65044 + video_mux(dev, i);
65045 +
65046 mutex_unlock(&dev->lock);
65047 return 0;
65048 }
65049 @@ -939,12 +939,6 @@
65050 struct em28xx_fh *fh = priv;
65051 struct em28xx *dev = fh->dev;
65052
65053 -
65054 - if (a->index >= MAX_EM28XX_INPUT)
65055 - return -EINVAL;
65056 - if (0 == INPUT(a->index)->type)
65057 - return -EINVAL;
65058 -
65059 mutex_lock(&dev->lock);
65060
65061 dev->ctl_ainput = INPUT(a->index)->amux;
65062 @@ -1956,7 +1950,6 @@
65063
65064 int em28xx_register_analog_devices(struct em28xx *dev)
65065 {
65066 - u8 val;
65067 int ret;
65068
65069 printk(KERN_INFO "%s: v4l2 driver version %d.%d.%d\n",
65070 @@ -1964,34 +1957,34 @@
65071 (EM28XX_VERSION_CODE >> 16) & 0xff,
65072 (EM28XX_VERSION_CODE >> 8) & 0xff, EM28XX_VERSION_CODE & 0xff);
65073
65074 - /* set default norm */
65075 - dev->norm = em28xx_video_template.current_norm;
65076 - dev->width = norm_maxw(dev);
65077 - dev->height = norm_maxh(dev);
65078 - dev->interlaced = EM28XX_INTERLACED_DEFAULT;
65079 - dev->hscale = 0;
65080 - dev->vscale = 0;
65081 - dev->ctl_input = 0;
65082 -
65083 /* Analog specific initialization */
65084 dev->format = &format[0];
65085 - video_mux(dev, dev->ctl_input);
65086 -
65087 - /* Audio defaults */
65088 - dev->mute = 1;
65089 - dev->volume = 0x1f;
65090 + video_mux(dev, 0);
65091
65092 /* enable vbi capturing */
65093
65094 /* em28xx_write_reg(dev, EM28XX_R0E_AUDIOSRC, 0xc0); audio register */
65095 - val = (u8)em28xx_read_reg(dev, EM28XX_R0F_XCLK);
65096 - em28xx_write_reg(dev, EM28XX_R0F_XCLK, (EM28XX_XCLK_AUDIO_UNMUTE | val));
65097 +/* em28xx_write_reg(dev, EM28XX_R0F_XCLK, 0x80); clk register */
65098 em28xx_write_reg(dev, EM28XX_R11_VINCTRL, 0x51);
65099
65100 + dev->mute = 1; /* maybe not the right place... */
65101 + dev->volume = 0x1f;
65102 +
65103 em28xx_set_outfmt(dev);
65104 em28xx_colorlevels_set_default(dev);
65105 em28xx_compression_disable(dev);
65106
65107 + /* set default norm */
65108 + dev->norm = em28xx_video_template.current_norm;
65109 + dev->width = norm_maxw(dev);
65110 + dev->height = norm_maxh(dev);
65111 + dev->interlaced = EM28XX_INTERLACED_DEFAULT;
65112 + dev->hscale = 0;
65113 + dev->vscale = 0;
65114 +
65115 + /* FIXME: This is a very bad hack! Not all devices have TV on input 2 */
65116 + dev->ctl_input = 2;
65117 +
65118 /* allocate and fill video video_device struct */
65119 dev->vdev = em28xx_vdev_init(dev, &em28xx_video_template, "video");
65120 if (!dev->vdev) {
65121 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/gspca/gspca.c linux-2.6.29-rc3.owrt/drivers/media/video/gspca/gspca.c
65122 --- linux-2.6.29.owrt/drivers/media/video/gspca/gspca.c 2009-05-10 22:04:38.000000000 +0200
65123 +++ linux-2.6.29-rc3.owrt/drivers/media/video/gspca/gspca.c 2009-05-10 23:48:28.000000000 +0200
65124 @@ -422,10 +422,8 @@
65125 if (urb == NULL)
65126 break;
65127
65128 - BUG_ON(!gspca_dev->dev);
65129 gspca_dev->urb[i] = NULL;
65130 - if (!gspca_dev->present)
65131 - usb_kill_urb(urb);
65132 + usb_kill_urb(urb);
65133 if (urb->transfer_buffer != NULL)
65134 usb_buffer_free(gspca_dev->dev,
65135 urb->transfer_buffer_length,
65136 @@ -1951,12 +1949,9 @@
65137 {
65138 struct gspca_dev *gspca_dev = usb_get_intfdata(intf);
65139
65140 - mutex_lock(&gspca_dev->usb_lock);
65141 gspca_dev->present = 0;
65142 - mutex_unlock(&gspca_dev->usb_lock);
65143 + gspca_dev->streaming = 0;
65144
65145 - destroy_urbs(gspca_dev);
65146 - gspca_dev->dev = NULL;
65147 usb_set_intfdata(intf, NULL);
65148
65149 /* release the device */
65150 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/gspca/m5602/m5602_s5k4aa.c linux-2.6.29-rc3.owrt/drivers/media/video/gspca/m5602/m5602_s5k4aa.c
65151 --- linux-2.6.29.owrt/drivers/media/video/gspca/m5602/m5602_s5k4aa.c 2009-05-10 22:04:38.000000000 +0200
65152 +++ linux-2.6.29-rc3.owrt/drivers/media/video/gspca/m5602/m5602_s5k4aa.c 2009-05-10 23:48:28.000000000 +0200
65153 @@ -102,11 +102,7 @@
65154 }
65155
65156 /* Test some registers, but we don't know their exact meaning yet */
65157 - if (m5602_read_sensor(sd, 0x00, prod_id, 2))
65158 - return -ENODEV;
65159 - if (m5602_read_sensor(sd, 0x02, prod_id+2, 2))
65160 - return -ENODEV;
65161 - if (m5602_read_sensor(sd, 0x04, prod_id+4, 2))
65162 + if (m5602_read_sensor(sd, 0x00, prod_id, sizeof(prod_id)))
65163 return -ENODEV;
65164
65165 if (memcmp(prod_id, expected_prod_id, sizeof(prod_id)))
65166 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/ivtv/ivtv-driver.c linux-2.6.29-rc3.owrt/drivers/media/video/ivtv/ivtv-driver.c
65167 --- linux-2.6.29.owrt/drivers/media/video/ivtv/ivtv-driver.c 2009-05-10 22:04:38.000000000 +0200
65168 +++ linux-2.6.29-rc3.owrt/drivers/media/video/ivtv/ivtv-driver.c 2009-05-10 23:48:28.000000000 +0200
65169 @@ -949,10 +949,8 @@
65170 itv->instance = atomic_inc_return(&ivtv_instance) - 1;
65171
65172 retval = v4l2_device_register(&dev->dev, &itv->device);
65173 - if (retval) {
65174 - kfree(itv);
65175 + if (retval)
65176 return retval;
65177 - }
65178 /* "ivtv + PCI ID" is a bit of a mouthful, so use
65179 "ivtv + instance" instead. */
65180 snprintf(itv->device.name, sizeof(itv->device.name),
65181 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/ivtv/ivtv-ioctl.c linux-2.6.29-rc3.owrt/drivers/media/video/ivtv/ivtv-ioctl.c
65182 --- linux-2.6.29.owrt/drivers/media/video/ivtv/ivtv-ioctl.c 2009-05-10 22:04:38.000000000 +0200
65183 +++ linux-2.6.29-rc3.owrt/drivers/media/video/ivtv/ivtv-ioctl.c 2009-05-10 23:48:28.000000000 +0200
65184 @@ -393,7 +393,7 @@
65185 return 0;
65186 }
65187
65188 - v4l2_subdev_call(itv->sd_video, video, g_fmt, fmt);
65189 + v4l2_subdev_call(itv->sd_video, video, s_fmt, fmt);
65190 vbifmt->service_set = ivtv_get_service_set(vbifmt);
65191 return 0;
65192 }
65193 @@ -1748,18 +1748,6 @@
65194 break;
65195 }
65196
65197 - case IVTV_IOC_DMA_FRAME:
65198 - case VIDEO_GET_PTS:
65199 - case VIDEO_GET_FRAME_COUNT:
65200 - case VIDEO_GET_EVENT:
65201 - case VIDEO_PLAY:
65202 - case VIDEO_STOP:
65203 - case VIDEO_FREEZE:
65204 - case VIDEO_CONTINUE:
65205 - case VIDEO_COMMAND:
65206 - case VIDEO_TRY_COMMAND:
65207 - return ivtv_decoder_ioctls(file, cmd, (void *)arg);
65208 -
65209 default:
65210 return -EINVAL;
65211 }
65212 @@ -1802,6 +1790,18 @@
65213 ivtv_vapi(itv, CX2341X_DEC_SET_AUDIO_MODE, 2, itv->audio_bilingual_mode, itv->audio_stereo_mode);
65214 return 0;
65215
65216 + case IVTV_IOC_DMA_FRAME:
65217 + case VIDEO_GET_PTS:
65218 + case VIDEO_GET_FRAME_COUNT:
65219 + case VIDEO_GET_EVENT:
65220 + case VIDEO_PLAY:
65221 + case VIDEO_STOP:
65222 + case VIDEO_FREEZE:
65223 + case VIDEO_CONTINUE:
65224 + case VIDEO_COMMAND:
65225 + case VIDEO_TRY_COMMAND:
65226 + return ivtv_decoder_ioctls(filp, cmd, (void *)arg);
65227 +
65228 default:
65229 break;
65230 }
65231 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/pwc/pwc-if.c linux-2.6.29-rc3.owrt/drivers/media/video/pwc/pwc-if.c
65232 --- linux-2.6.29.owrt/drivers/media/video/pwc/pwc-if.c 2009-05-10 22:04:38.000000000 +0200
65233 +++ linux-2.6.29-rc3.owrt/drivers/media/video/pwc/pwc-if.c 2009-05-10 23:48:28.000000000 +0200
65234 @@ -62,6 +62,7 @@
65235 #include <linux/poll.h>
65236 #include <linux/slab.h>
65237 #include <linux/vmalloc.h>
65238 +#include <linux/version.h>
65239 #include <asm/io.h>
65240
65241 #include "pwc.h"
65242 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/pxa_camera.c linux-2.6.29-rc3.owrt/drivers/media/video/pxa_camera.c
65243 --- linux-2.6.29.owrt/drivers/media/video/pxa_camera.c 2009-05-10 22:04:38.000000000 +0200
65244 +++ linux-2.6.29-rc3.owrt/drivers/media/video/pxa_camera.c 2009-05-10 23:48:28.000000000 +0200
65245 @@ -1155,24 +1155,24 @@
65246 {
65247 struct soc_camera_host *ici = to_soc_camera_host(icd->dev.parent);
65248 struct pxa_camera_dev *pcdev = ici->priv;
65249 - const struct soc_camera_data_format *cam_fmt = NULL;
65250 - const struct soc_camera_format_xlate *xlate = NULL;
65251 + const struct soc_camera_data_format *host_fmt, *cam_fmt = NULL;
65252 + const struct soc_camera_format_xlate *xlate;
65253 struct soc_camera_sense sense = {
65254 .master_clock = pcdev->mclk,
65255 .pixel_clock_max = pcdev->ciclk / 4,
65256 };
65257 - int ret;
65258 + int ret, buswidth;
65259
65260 - if (pixfmt) {
65261 - xlate = soc_camera_xlate_by_fourcc(icd, pixfmt);
65262 - if (!xlate) {
65263 - dev_warn(&ici->dev, "Format %x not found\n", pixfmt);
65264 - return -EINVAL;
65265 - }
65266 -
65267 - cam_fmt = xlate->cam_fmt;
65268 + xlate = soc_camera_xlate_by_fourcc(icd, pixfmt);
65269 + if (!xlate) {
65270 + dev_warn(&ici->dev, "Format %x not found\n", pixfmt);
65271 + return -EINVAL;
65272 }
65273
65274 + buswidth = xlate->buswidth;
65275 + host_fmt = xlate->host_fmt;
65276 + cam_fmt = xlate->cam_fmt;
65277 +
65278 /* If PCLK is used to latch data from the sensor, check sense */
65279 if (pcdev->platform_flags & PXA_CAMERA_PCLK_EN)
65280 icd->sense = &sense;
65281 @@ -1201,8 +1201,8 @@
65282 }
65283
65284 if (pixfmt && !ret) {
65285 - icd->buswidth = xlate->buswidth;
65286 - icd->current_fmt = xlate->host_fmt;
65287 + icd->buswidth = buswidth;
65288 + icd->current_fmt = host_fmt;
65289 }
65290
65291 return ret;
65292 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/saa7127.c linux-2.6.29-rc3.owrt/drivers/media/video/saa7127.c
65293 --- linux-2.6.29.owrt/drivers/media/video/saa7127.c 2009-05-10 22:04:38.000000000 +0200
65294 +++ linux-2.6.29-rc3.owrt/drivers/media/video/saa7127.c 2009-05-10 23:48:28.000000000 +0200
65295 @@ -149,7 +149,7 @@
65296 { SAA7127_REG_COPYGEN_0, 0x77 },
65297 { SAA7127_REG_COPYGEN_1, 0x41 },
65298 { SAA7127_REG_COPYGEN_2, 0x00 }, /* Macrovision enable/disable */
65299 - { SAA7127_REG_OUTPUT_PORT_CONTROL, 0xbf },
65300 + { SAA7127_REG_OUTPUT_PORT_CONTROL, 0x9e },
65301 { SAA7127_REG_GAIN_LUMINANCE_RGB, 0x00 },
65302 { SAA7127_REG_GAIN_COLORDIFF_RGB, 0x00 },
65303 { SAA7127_REG_INPUT_PORT_CONTROL_1, 0x80 }, /* for color bars */
65304 @@ -488,18 +488,12 @@
65305 break;
65306
65307 case SAA7127_OUTPUT_TYPE_COMPOSITE:
65308 - if (state->ident == V4L2_IDENT_SAA7129)
65309 - state->reg_2d = 0x20; /* CVBS only */
65310 - else
65311 - state->reg_2d = 0x08; /* 00001000 CVBS only, RGB DAC's off (high impedance mode) */
65312 + state->reg_2d = 0x08; /* 00001000 CVBS only, RGB DAC's off (high impedance mode) */
65313 state->reg_3a = 0x13; /* by default switch YUV to RGB-matrix on */
65314 break;
65315
65316 case SAA7127_OUTPUT_TYPE_SVIDEO:
65317 - if (state->ident == V4L2_IDENT_SAA7129)
65318 - state->reg_2d = 0x18; /* Y + C */
65319 - else
65320 - state->reg_2d = 0xff; /*11111111 croma -> R, luma -> CVBS + G + B */
65321 + state->reg_2d = 0xff; /* 11111111 croma -> R, luma -> CVBS + G + B */
65322 state->reg_3a = 0x13; /* by default switch YUV to RGB-matrix on */
65323 break;
65324
65325 @@ -514,10 +508,7 @@
65326 break;
65327
65328 case SAA7127_OUTPUT_TYPE_BOTH:
65329 - if (state->ident == V4L2_IDENT_SAA7129)
65330 - state->reg_2d = 0x38;
65331 - else
65332 - state->reg_2d = 0xbf;
65333 + state->reg_2d = 0xbf;
65334 state->reg_3a = 0x13; /* by default switch YUV to RGB-matrix on */
65335 break;
65336
65337 @@ -740,6 +731,24 @@
65338 return -ENODEV;
65339 }
65340
65341 + /* Configure Encoder */
65342 +
65343 + v4l2_dbg(1, debug, sd, "Configuring encoder\n");
65344 + saa7127_write_inittab(sd, saa7127_init_config_common);
65345 + saa7127_set_std(sd, V4L2_STD_NTSC);
65346 + saa7127_set_output_type(sd, SAA7127_OUTPUT_TYPE_BOTH);
65347 + saa7127_set_vps(sd, &vbi);
65348 + saa7127_set_wss(sd, &vbi);
65349 + saa7127_set_cc(sd, &vbi);
65350 + saa7127_set_xds(sd, &vbi);
65351 + if (test_image == 1)
65352 + /* The Encoder has an internal Colorbar generator */
65353 + /* This can be used for debugging */
65354 + saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_TEST_IMAGE);
65355 + else
65356 + saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_NORMAL);
65357 + saa7127_set_video_enable(sd, 1);
65358 +
65359 if (id->driver_data) { /* Chip type is already known */
65360 state->ident = id->driver_data;
65361 } else { /* Needs detection */
65362 @@ -761,23 +770,6 @@
65363
65364 v4l2_info(sd, "%s found @ 0x%x (%s)\n", client->name,
65365 client->addr << 1, client->adapter->name);
65366 -
65367 - v4l2_dbg(1, debug, sd, "Configuring encoder\n");
65368 - saa7127_write_inittab(sd, saa7127_init_config_common);
65369 - saa7127_set_std(sd, V4L2_STD_NTSC);
65370 - saa7127_set_output_type(sd, SAA7127_OUTPUT_TYPE_BOTH);
65371 - saa7127_set_vps(sd, &vbi);
65372 - saa7127_set_wss(sd, &vbi);
65373 - saa7127_set_cc(sd, &vbi);
65374 - saa7127_set_xds(sd, &vbi);
65375 - if (test_image == 1)
65376 - /* The Encoder has an internal Colorbar generator */
65377 - /* This can be used for debugging */
65378 - saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_TEST_IMAGE);
65379 - else
65380 - saa7127_set_input_type(sd, SAA7127_INPUT_TYPE_NORMAL);
65381 - saa7127_set_video_enable(sd, 1);
65382 -
65383 if (state->ident == V4L2_IDENT_SAA7129)
65384 saa7127_write_inittab(sd, saa7129_init_config_extra);
65385 return 0;
65386 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/saa7134/saa7134-alsa.c linux-2.6.29-rc3.owrt/drivers/media/video/saa7134/saa7134-alsa.c
65387 --- linux-2.6.29.owrt/drivers/media/video/saa7134/saa7134-alsa.c 2009-05-10 22:04:39.000000000 +0200
65388 +++ linux-2.6.29-rc3.owrt/drivers/media/video/saa7134/saa7134-alsa.c 2009-05-10 23:48:28.000000000 +0200
65389 @@ -1089,11 +1089,7 @@
65390
65391 list_for_each(list,&saa7134_devlist) {
65392 dev = list_entry(list, struct saa7134_dev, devlist);
65393 - if (dev->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130)
65394 - printk(KERN_INFO "%s/alsa: %s doesn't support digital audio\n",
65395 - dev->name, saa7134_boards[dev->board].name);
65396 - else
65397 - alsa_device_init(dev);
65398 + alsa_device_init(dev);
65399 }
65400
65401 if (dev == NULL)
65402 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/saa7134/saa7134-core.c linux-2.6.29-rc3.owrt/drivers/media/video/saa7134/saa7134-core.c
65403 --- linux-2.6.29.owrt/drivers/media/video/saa7134/saa7134-core.c 2009-05-10 22:04:39.000000000 +0200
65404 +++ linux-2.6.29-rc3.owrt/drivers/media/video/saa7134/saa7134-core.c 2009-05-10 23:48:28.000000000 +0200
65405 @@ -660,10 +660,6 @@
65406
65407 saa_writel(SAA7134_IRQ1, 0);
65408 saa_writel(SAA7134_IRQ2, 0);
65409 -
65410 - /* Clear any stale IRQ reports */
65411 - saa_writel(SAA7134_IRQ_REPORT, saa_readl(SAA7134_IRQ_REPORT));
65412 -
65413 mutex_init(&dev->lock);
65414 spin_lock_init(&dev->slock);
65415
65416 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/saa7134/saa7134-dvb.c linux-2.6.29-rc3.owrt/drivers/media/video/saa7134/saa7134-dvb.c
65417 --- linux-2.6.29.owrt/drivers/media/video/saa7134/saa7134-dvb.c 2009-05-10 22:04:38.000000000 +0200
65418 +++ linux-2.6.29-rc3.owrt/drivers/media/video/saa7134/saa7134-dvb.c 2009-05-10 23:48:28.000000000 +0200
65419 @@ -860,7 +860,6 @@
65420 .demod_address = 0x1e>>1,
65421 .no_tuner = 1,
65422 .parallel_ts = 1,
65423 - .disable_i2c_gate_ctrl = 1,
65424 };
65425
65426 /* ==================================================================
65427 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/saa717x.c linux-2.6.29-rc3.owrt/drivers/media/video/saa717x.c
65428 --- linux-2.6.29.owrt/drivers/media/video/saa717x.c 2009-05-10 22:04:38.000000000 +0200
65429 +++ linux-2.6.29-rc3.owrt/drivers/media/video/saa717x.c 2009-05-10 23:48:28.000000000 +0200
65430 @@ -30,6 +30,7 @@
65431 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
65432 */
65433
65434 +#include <linux/version.h>
65435 #include <linux/module.h>
65436 #include <linux/kernel.h>
65437 #include <linux/sched.h>
65438 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/sh_mobile_ceu_camera.c linux-2.6.29-rc3.owrt/drivers/media/video/sh_mobile_ceu_camera.c
65439 --- linux-2.6.29.owrt/drivers/media/video/sh_mobile_ceu_camera.c 2009-05-10 22:04:39.000000000 +0200
65440 +++ linux-2.6.29-rc3.owrt/drivers/media/video/sh_mobile_ceu_camera.c 2009-05-10 23:48:28.000000000 +0200
65441 @@ -603,18 +603,21 @@
65442 const struct soc_camera_format_xlate *xlate;
65443 int ret;
65444
65445 - if (!pixfmt)
65446 - return icd->ops->set_fmt(icd, pixfmt, rect);
65447 -
65448 xlate = soc_camera_xlate_by_fourcc(icd, pixfmt);
65449 if (!xlate) {
65450 dev_warn(&ici->dev, "Format %x not found\n", pixfmt);
65451 return -EINVAL;
65452 }
65453
65454 - ret = icd->ops->set_fmt(icd, xlate->cam_fmt->fourcc, rect);
65455 + switch (pixfmt) {
65456 + case 0: /* Only geometry change */
65457 + ret = icd->ops->set_fmt(icd, pixfmt, rect);
65458 + break;
65459 + default:
65460 + ret = icd->ops->set_fmt(icd, xlate->cam_fmt->fourcc, rect);
65461 + }
65462
65463 - if (!ret) {
65464 + if (pixfmt && !ret) {
65465 icd->buswidth = xlate->buswidth;
65466 icd->current_fmt = xlate->host_fmt;
65467 pcdev->camera_fmt = xlate->cam_fmt;
65468 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/tda9875.c linux-2.6.29-rc3.owrt/drivers/media/video/tda9875.c
65469 --- linux-2.6.29.owrt/drivers/media/video/tda9875.c 2009-05-10 22:04:38.000000000 +0200
65470 +++ linux-2.6.29-rc3.owrt/drivers/media/video/tda9875.c 2009-05-10 23:48:28.000000000 +0200
65471 @@ -242,7 +242,7 @@
65472 static int tda9875_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
65473 {
65474 struct tda9875 *t = to_state(sd);
65475 - int chvol = 0, volume = 0, balance = 0, left, right;
65476 + int chvol=0, volume, balance, left, right;
65477
65478 switch (ctrl->id) {
65479 case V4L2_CID_AUDIO_VOLUME:
65480 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/tvaudio.c linux-2.6.29-rc3.owrt/drivers/media/video/tvaudio.c
65481 --- linux-2.6.29.owrt/drivers/media/video/tvaudio.c 2009-05-10 22:04:38.000000000 +0200
65482 +++ linux-2.6.29-rc3.owrt/drivers/media/video/tvaudio.c 2009-05-10 23:48:28.000000000 +0200
65483 @@ -54,7 +54,7 @@
65484 /* ---------------------------------------------------------------------- */
65485 /* our structs */
65486
65487 -#define MAXREGS 256
65488 +#define MAXREGS 64
65489
65490 struct CHIPSTATE;
65491 typedef int (*getvalue)(int);
65492 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/tveeprom.c linux-2.6.29-rc3.owrt/drivers/media/video/tveeprom.c
65493 --- linux-2.6.29.owrt/drivers/media/video/tveeprom.c 2009-05-10 22:04:39.000000000 +0200
65494 +++ linux-2.6.29-rc3.owrt/drivers/media/video/tveeprom.c 2009-05-10 23:48:28.000000000 +0200
65495 @@ -427,9 +427,6 @@
65496 const char *t_fmt_name2[8] = { " none", "", "", "", "", "", "", "" };
65497
65498 memset(tvee, 0, sizeof(*tvee));
65499 - tvee->tuner_type = TUNER_ABSENT;
65500 - tvee->tuner2_type = TUNER_ABSENT;
65501 -
65502 done = len = beenhere = 0;
65503
65504 /* Different eeprom start offsets for em28xx, cx2388x and cx23418 */
65505 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/tvp514x.c linux-2.6.29-rc3.owrt/drivers/media/video/tvp514x.c
65506 --- linux-2.6.29.owrt/drivers/media/video/tvp514x.c 2009-05-10 22:04:38.000000000 +0200
65507 +++ linux-2.6.29-rc3.owrt/drivers/media/video/tvp514x.c 2009-05-10 23:48:28.000000000 +0200
65508 @@ -1401,7 +1401,7 @@
65509
65510 decoder->pdata = client->dev.platform_data;
65511 if (!decoder->pdata) {
65512 - v4l_err(client, "No platform data!!\n");
65513 + v4l_err(client, "No platform data\n!!");
65514 return -ENODEV;
65515 }
65516 /*
65517 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/upd64031a.c linux-2.6.29-rc3.owrt/drivers/media/video/upd64031a.c
65518 --- linux-2.6.29.owrt/drivers/media/video/upd64031a.c 2009-05-10 22:04:38.000000000 +0200
65519 +++ linux-2.6.29-rc3.owrt/drivers/media/video/upd64031a.c 2009-05-10 23:48:28.000000000 +0200
65520 @@ -21,6 +21,7 @@
65521 */
65522
65523
65524 +#include <linux/version.h>
65525 #include <linux/module.h>
65526 #include <linux/kernel.h>
65527 #include <linux/i2c.h>
65528 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/upd64083.c linux-2.6.29-rc3.owrt/drivers/media/video/upd64083.c
65529 --- linux-2.6.29.owrt/drivers/media/video/upd64083.c 2009-05-10 22:04:38.000000000 +0200
65530 +++ linux-2.6.29-rc3.owrt/drivers/media/video/upd64083.c 2009-05-10 23:48:28.000000000 +0200
65531 @@ -21,6 +21,7 @@
65532 * 02110-1301, USA.
65533 */
65534
65535 +#include <linux/version.h>
65536 #include <linux/module.h>
65537 #include <linux/kernel.h>
65538 #include <linux/i2c.h>
65539 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/usbvision/usbvision-i2c.c linux-2.6.29-rc3.owrt/drivers/media/video/usbvision/usbvision-i2c.c
65540 --- linux-2.6.29.owrt/drivers/media/video/usbvision/usbvision-i2c.c 2009-05-10 22:04:38.000000000 +0200
65541 +++ linux-2.6.29-rc3.owrt/drivers/media/video/usbvision/usbvision-i2c.c 2009-05-10 23:48:28.000000000 +0200
65542 @@ -157,7 +157,7 @@
65543 struct i2c_msg *pmsg;
65544 struct usb_usbvision *usbvision;
65545 int i, ret;
65546 - unsigned char addr = 0;
65547 + unsigned char addr;
65548
65549 usbvision = (struct usb_usbvision *)i2c_get_adapdata(i2c_adap);
65550
65551 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_ctrl.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_ctrl.c
65552 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_ctrl.c 2009-05-10 22:04:38.000000000 +0200
65553 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_ctrl.c 2009-05-10 23:48:28.000000000 +0200
65554 @@ -1,7 +1,7 @@
65555 /*
65556 * uvc_ctrl.c -- USB Video Class driver - Controls
65557 *
65558 - * Copyright (C) 2005-2009
65559 + * Copyright (C) 2005-2008
65560 * Laurent Pinchart (laurent.pinchart@skynet.be)
65561 *
65562 * This program is free software; you can redistribute it and/or modify
65563 @@ -12,6 +12,7 @@
65564 */
65565
65566 #include <linux/kernel.h>
65567 +#include <linux/version.h>
65568 #include <linux/list.h>
65569 #include <linux/module.h>
65570 #include <linux/uaccess.h>
65571 @@ -28,7 +29,7 @@
65572 #define UVC_CTRL_DATA_BACKUP 1
65573
65574 /* ------------------------------------------------------------------------
65575 - * Controls
65576 + * Control, formats, ...
65577 */
65578
65579 static struct uvc_control_info uvc_ctrls[] = {
65580 @@ -634,7 +635,7 @@
65581 mask = (1 << bits) - 1;
65582 }
65583
65584 - /* Sign-extend the value if needed. */
65585 + /* Sign-extend the value if needed */
65586 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)
65587 value |= -(value & (1 << (mapping->size - 1)));
65588
65589 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_driver.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_driver.c
65590 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_driver.c 2009-05-10 22:04:38.000000000 +0200
65591 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_driver.c 2009-05-10 23:48:28.000000000 +0200
65592 @@ -1,7 +1,7 @@
65593 /*
65594 * uvc_driver.c -- USB Video Class driver
65595 *
65596 - * Copyright (C) 2005-2009
65597 + * Copyright (C) 2005-2008
65598 * Laurent Pinchart (laurent.pinchart@skynet.be)
65599 *
65600 * This program is free software; you can redistribute it and/or modify
65601 @@ -24,6 +24,7 @@
65602 */
65603
65604 #include <linux/kernel.h>
65605 +#include <linux/version.h>
65606 #include <linux/list.h>
65607 #include <linux/module.h>
65608 #include <linux/usb.h>
65609 @@ -48,7 +49,7 @@
65610 unsigned int uvc_trace_param;
65611
65612 /* ------------------------------------------------------------------------
65613 - * Video formats
65614 + * Control, formats, ...
65615 */
65616
65617 static struct uvc_format_desc uvc_fmts[] = {
65618 @@ -473,7 +474,7 @@
65619
65620 /* Several UVC chipsets screw up dwMaxVideoFrameBufferSize
65621 * completely. Observed behaviours range from setting the
65622 - * value to 1.1x the actual frame size to hardwiring the
65623 + * value to 1.1x the actual frame size of hardwiring the
65624 * 16 low bits to 0. This results in a higher than necessary
65625 * memory usage as well as a wrong image size information. For
65626 * uncompressed formats this can be fixed by computing the
65627 @@ -486,7 +487,7 @@
65628 /* Some bogus devices report dwMinFrameInterval equal to
65629 * dwMaxFrameInterval and have dwFrameIntervalStep set to
65630 * zero. Setting all null intervals to 1 fixes the problem and
65631 - * some other divisions by zero that could happen.
65632 + * some other divisions by zero which could happen.
65633 */
65634 for (i = 0; i < n; ++i) {
65635 interval = get_unaligned_le32(&buffer[26+4*i]);
65636 @@ -1199,13 +1200,13 @@
65637 * Scan the UVC descriptors to locate a chain starting at an Output Terminal
65638 * and containing the following units:
65639 *
65640 - * - one Output Terminal (USB Streaming or Display)
65641 + * - a USB Streaming Output Terminal
65642 * - zero or one Processing Unit
65643 * - zero, one or mode single-input Selector Units
65644 * - zero or one multiple-input Selector Units, provided all inputs are
65645 * connected to input terminals
65646 * - zero, one or mode single-input Extension Units
65647 - * - one or more Input Terminals (Camera, External or USB Streaming)
65648 + * - one Camera Input Terminal, or one or more External terminals.
65649 *
65650 * A side forward scan is made on each detected entity to check for additional
65651 * extension units.
65652 @@ -1530,6 +1531,10 @@
65653
65654 /* Set the driver data before calling video_register_device, otherwise
65655 * uvc_v4l2_open might race us.
65656 + *
65657 + * FIXME: usb_set_intfdata hasn't been called so far. Is that a
65658 + * problem ? Does any function which could be called here get
65659 + * a pointer to the usb_interface ?
65660 */
65661 dev->video.vdev = vdev;
65662 video_set_drvdata(vdev, &dev->video);
65663 @@ -1564,7 +1569,7 @@
65664 struct uvc_device *dev = container_of(kref, struct uvc_device, kref);
65665 struct list_head *p, *n;
65666
65667 - /* Unregister the video device. */
65668 + /* Unregister the video device */
65669 uvc_unregister_video(dev);
65670 usb_put_intf(dev->intf);
65671 usb_put_dev(dev->udev);
65672 @@ -1607,7 +1612,7 @@
65673 uvc_trace(UVC_TRACE_PROBE, "Probing generic UVC device %s\n",
65674 udev->devpath);
65675
65676 - /* Allocate memory for the device and initialize it. */
65677 + /* Allocate memory for the device and initialize it */
65678 if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == NULL)
65679 return -ENOMEM;
65680
65681 @@ -1628,14 +1633,14 @@
65682 le16_to_cpu(udev->descriptor.idVendor),
65683 le16_to_cpu(udev->descriptor.idProduct));
65684
65685 - /* Parse the Video Class control descriptor. */
65686 + /* Parse the Video Class control descriptor */
65687 if (uvc_parse_control(dev) < 0) {
65688 uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "
65689 "descriptors.\n");
65690 goto error;
65691 }
65692
65693 - uvc_printk(KERN_INFO, "Found UVC %u.%02x device %s (%04x:%04x)\n",
65694 + uvc_printk(KERN_INFO, "Found UVC %u.%02u device %s (%04x:%04x)\n",
65695 dev->uvc_version >> 8, dev->uvc_version & 0xff,
65696 udev->product ? udev->product : "<unnamed>",
65697 le16_to_cpu(udev->descriptor.idVendor),
65698 @@ -1648,18 +1653,18 @@
65699 "linux-uvc-devel mailing list.\n");
65700 }
65701
65702 - /* Initialize controls. */
65703 + /* Initialize controls */
65704 if (uvc_ctrl_init_device(dev) < 0)
65705 goto error;
65706
65707 - /* Register the video devices. */
65708 + /* Register the video devices */
65709 if (uvc_register_video(dev) < 0)
65710 goto error;
65711
65712 - /* Save our data pointer in the interface data. */
65713 + /* Save our data pointer in the interface data */
65714 usb_set_intfdata(intf, dev);
65715
65716 - /* Initialize the interrupt URB. */
65717 + /* Initialize the interrupt URB */
65718 if ((ret = uvc_status_init(dev)) < 0) {
65719 uvc_printk(KERN_INFO, "Unable to initialize the status "
65720 "endpoint (%d), status interrupt will not be "
65721 @@ -1834,24 +1839,24 @@
65722 .bInterfaceSubClass = 1,
65723 .bInterfaceProtocol = 0 },
65724 /* Apple Built-In iSight */
65725 - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
65726 + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
65727 | USB_DEVICE_ID_MATCH_INT_INFO,
65728 .idVendor = 0x05ac,
65729 .idProduct = 0x8501,
65730 - .bInterfaceClass = USB_CLASS_VIDEO,
65731 - .bInterfaceSubClass = 1,
65732 - .bInterfaceProtocol = 0,
65733 + .bInterfaceClass = USB_CLASS_VIDEO,
65734 + .bInterfaceSubClass = 1,
65735 + .bInterfaceProtocol = 0,
65736 .driver_info = UVC_QUIRK_PROBE_MINMAX
65737 | UVC_QUIRK_BUILTIN_ISIGHT },
65738 /* Genesys Logic USB 2.0 PC Camera */
65739 - { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
65740 + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
65741 | USB_DEVICE_ID_MATCH_INT_INFO,
65742 - .idVendor = 0x05e3,
65743 - .idProduct = 0x0505,
65744 - .bInterfaceClass = USB_CLASS_VIDEO,
65745 - .bInterfaceSubClass = 1,
65746 - .bInterfaceProtocol = 0,
65747 - .driver_info = UVC_QUIRK_STREAM_NO_FID },
65748 + .idVendor = 0x05e3,
65749 + .idProduct = 0x0505,
65750 + .bInterfaceClass = USB_CLASS_VIDEO,
65751 + .bInterfaceSubClass = 1,
65752 + .bInterfaceProtocol = 0,
65753 + .driver_info = UVC_QUIRK_STREAM_NO_FID },
65754 /* MT6227 */
65755 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
65756 | USB_DEVICE_ID_MATCH_INT_INFO,
65757 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_isight.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_isight.c
65758 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_isight.c 2009-05-10 22:04:38.000000000 +0200
65759 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_isight.c 2009-05-10 23:48:28.000000000 +0200
65760 @@ -3,8 +3,6 @@
65761 *
65762 * Copyright (C) 2006-2007
65763 * Ivan N. Zlatev <contact@i-nz.net>
65764 - * Copyright (C) 2008-2009
65765 - * Laurent Pinchart <laurent.pinchart@skynet.be>
65766 *
65767 * This program is free software; you can redistribute it and/or modify
65768 * it under the terms of the GNU General Public License as published by
65769 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_queue.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_queue.c
65770 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_queue.c 2009-05-10 22:04:38.000000000 +0200
65771 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_queue.c 2009-05-10 23:48:28.000000000 +0200
65772 @@ -1,7 +1,7 @@
65773 /*
65774 * uvc_queue.c -- USB Video Class driver - Buffers management
65775 *
65776 - * Copyright (C) 2005-2009
65777 + * Copyright (C) 2005-2008
65778 * Laurent Pinchart (laurent.pinchart@skynet.be)
65779 *
65780 * This program is free software; you can redistribute it and/or modify
65781 @@ -12,6 +12,7 @@
65782 */
65783
65784 #include <linux/kernel.h>
65785 +#include <linux/version.h>
65786 #include <linux/mm.h>
65787 #include <linux/list.h>
65788 #include <linux/module.h>
65789 @@ -36,22 +37,22 @@
65790 * to user space will return -EBUSY.
65791 *
65792 * Video buffers are managed using two queues. However, unlike most USB video
65793 - * drivers that use an in queue and an out queue, we use a main queue to hold
65794 - * all queued buffers (both 'empty' and 'done' buffers), and an irq queue to
65795 - * hold empty buffers. This design (copied from video-buf) minimizes locking
65796 - * in interrupt, as only one queue is shared between interrupt and user
65797 - * contexts.
65798 + * drivers which use an in queue and an out queue, we use a main queue which
65799 + * holds all queued buffers (both 'empty' and 'done' buffers), and an irq
65800 + * queue which holds empty buffers. This design (copied from video-buf)
65801 + * minimizes locking in interrupt, as only one queue is shared between
65802 + * interrupt and user contexts.
65803 *
65804 * Use cases
65805 * ---------
65806 *
65807 - * Unless stated otherwise, all operations that modify the irq buffers queue
65808 + * Unless stated otherwise, all operations which modify the irq buffers queue
65809 * are protected by the irq spinlock.
65810 *
65811 * 1. The user queues the buffers, starts streaming and dequeues a buffer.
65812 *
65813 * The buffers are added to the main and irq queues. Both operations are
65814 - * protected by the queue lock, and the later is protected by the irq
65815 + * protected by the queue lock, and the latert is protected by the irq
65816 * spinlock as well.
65817 *
65818 * The completion handler fetches a buffer from the irq queue and fills it
65819 @@ -59,7 +60,7 @@
65820 * returns immediately.
65821 *
65822 * When the buffer is full, the completion handler removes it from the irq
65823 - * queue, marks it as ready (UVC_BUF_STATE_DONE) and wakes its wait queue.
65824 + * queue, marks it as ready (UVC_BUF_STATE_DONE) and wake its wait queue.
65825 * At that point, any process waiting on the buffer will be woken up. If a
65826 * process tries to dequeue a buffer after it has been marked ready, the
65827 * dequeing will succeed immediately.
65828 @@ -90,8 +91,8 @@
65829 /*
65830 * Allocate the video buffers.
65831 *
65832 - * Pages are reserved to make sure they will not be swapped, as they will be
65833 - * filled in the URB completion handler.
65834 + * Pages are reserved to make sure they will not be swaped, as they will be
65835 + * filled in URB completion handler.
65836 *
65837 * Buffers will be individually mapped, so they must all be page aligned.
65838 */
65839 @@ -209,8 +210,8 @@
65840 __uvc_query_buffer(&queue->buffer[v4l2_buf->index], v4l2_buf);
65841
65842 done:
65843 - mutex_unlock(&queue->mutex);
65844 - return ret;
65845 + mutex_unlock(&queue->mutex);
65846 + return ret;
65847 }
65848
65849 /*
65850 @@ -235,7 +236,7 @@
65851 }
65852
65853 mutex_lock(&queue->mutex);
65854 - if (v4l2_buf->index >= queue->count) {
65855 + if (v4l2_buf->index >= queue->count) {
65856 uvc_trace(UVC_TRACE_CAPTURE, "[E] Out of range index.\n");
65857 ret = -EINVAL;
65858 goto done;
65859 @@ -428,7 +429,7 @@
65860 * Cancel the video buffers queue.
65861 *
65862 * Cancelling the queue marks all buffers on the irq queue as erroneous,
65863 - * wakes them up and removes them from the queue.
65864 + * wakes them up and remove them from the queue.
65865 *
65866 * If the disconnect parameter is set, further calls to uvc_queue_buffer will
65867 * fail with -ENODEV.
65868 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_status.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_status.c
65869 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_status.c 2009-05-10 22:04:38.000000000 +0200
65870 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_status.c 2009-05-10 23:48:28.000000000 +0200
65871 @@ -1,7 +1,7 @@
65872 /*
65873 * uvc_status.c -- USB Video Class driver - Status endpoint
65874 *
65875 - * Copyright (C) 2007-2009
65876 + * Copyright (C) 2007-2008
65877 * Laurent Pinchart (laurent.pinchart@skynet.be)
65878 *
65879 * This program is free software; you can redistribute it and/or modify
65880 @@ -12,6 +12,7 @@
65881 */
65882
65883 #include <linux/kernel.h>
65884 +#include <linux/version.h>
65885 #include <linux/input.h>
65886 #include <linux/usb.h>
65887 #include <linux/usb/input.h>
65888 @@ -46,8 +47,8 @@
65889 usb_to_input_id(udev, &input->id);
65890 input->dev.parent = &dev->intf->dev;
65891
65892 - __set_bit(EV_KEY, input->evbit);
65893 - __set_bit(KEY_CAMERA, input->keybit);
65894 + set_bit(EV_KEY, input->evbit);
65895 + set_bit(BTN_0, input->keybit);
65896
65897 if ((ret = input_register_device(input)) < 0)
65898 goto error;
65899 @@ -70,10 +71,8 @@
65900 static void uvc_input_report_key(struct uvc_device *dev, unsigned int code,
65901 int value)
65902 {
65903 - if (dev->input) {
65904 + if (dev->input)
65905 input_report_key(dev->input, code, value);
65906 - input_sync(dev->input);
65907 - }
65908 }
65909
65910 #else
65911 @@ -98,7 +97,7 @@
65912 return;
65913 uvc_trace(UVC_TRACE_STATUS, "Button (intf %u) %s len %d\n",
65914 data[1], data[3] ? "pressed" : "released", len);
65915 - uvc_input_report_key(dev, KEY_CAMERA, data[3]);
65916 + uvc_input_report_key(dev, BTN_0, data[3]);
65917 } else {
65918 uvc_trace(UVC_TRACE_STATUS, "Stream %u error event %02x %02x "
65919 "len %d.\n", data[1], data[2], data[3], len);
65920 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_v4l2.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_v4l2.c
65921 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_v4l2.c 2009-05-10 22:04:38.000000000 +0200
65922 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_v4l2.c 2009-05-10 23:48:28.000000000 +0200
65923 @@ -1,7 +1,7 @@
65924 /*
65925 * uvc_v4l2.c -- USB Video Class driver - V4L2 API
65926 *
65927 - * Copyright (C) 2005-2009
65928 + * Copyright (C) 2005-2008
65929 * Laurent Pinchart (laurent.pinchart@skynet.be)
65930 *
65931 * This program is free software; you can redistribute it and/or modify
65932 @@ -37,7 +37,7 @@
65933 * must be grouped (for instance the Red Balance, Blue Balance and Do White
65934 * Balance V4L2 controls use the White Balance Component UVC control) or
65935 * otherwise translated. The approach we take here is to use a translation
65936 - * table for the controls that can be mapped directly, and handle the others
65937 + * table for the controls which can be mapped directly, and handle the others
65938 * manually.
65939 */
65940 static int uvc_v4l2_query_menu(struct uvc_video_device *video,
65941 @@ -189,7 +189,7 @@
65942 probe->dwMaxVideoFrameSize =
65943 video->streaming->ctrl.dwMaxVideoFrameSize;
65944
65945 - /* Probe the device. */
65946 + /* Probe the device */
65947 if ((ret = uvc_probe_video(video, probe)) < 0)
65948 goto done;
65949
65950 @@ -354,11 +354,11 @@
65951 *
65952 * Each open instance of a UVC device can either be in a privileged or
65953 * unprivileged state. Only a single instance can be in a privileged state at
65954 - * a given time. Trying to perform an operation that requires privileges will
65955 + * a given time. Trying to perform an operation which requires privileges will
65956 * automatically acquire the required privileges if possible, or return -EBUSY
65957 * otherwise. Privileges are dismissed when closing the instance.
65958 *
65959 - * Operations that require privileges are:
65960 + * Operations which require privileges are:
65961 *
65962 * - VIDIOC_S_INPUT
65963 * - VIDIOC_S_PARM
65964 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvc_video.c linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_video.c
65965 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvc_video.c 2009-05-10 22:04:38.000000000 +0200
65966 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvc_video.c 2009-05-10 23:48:28.000000000 +0200
65967 @@ -1,7 +1,7 @@
65968 /*
65969 * uvc_video.c -- USB Video Class driver - Video handling
65970 *
65971 - * Copyright (C) 2005-2009
65972 + * Copyright (C) 2005-2008
65973 * Laurent Pinchart (laurent.pinchart@skynet.be)
65974 *
65975 * This program is free software; you can redistribute it and/or modify
65976 @@ -12,6 +12,7 @@
65977 */
65978
65979 #include <linux/kernel.h>
65980 +#include <linux/version.h>
65981 #include <linux/list.h>
65982 #include <linux/module.h>
65983 #include <linux/usb.h>
65984 @@ -114,7 +115,7 @@
65985 ctrl->wCompQuality = le16_to_cpup((__le16 *)data);
65986 ret = 0;
65987 goto out;
65988 - } else if (query == GET_DEF && probe == 1 && ret != size) {
65989 + } else if (query == GET_DEF && probe == 1) {
65990 /* Many cameras don't support the GET_DEF request on their
65991 * video probe control. Warn once and return, the caller will
65992 * fall back to GET_CUR.
65993 @@ -159,7 +160,7 @@
65994 }
65995
65996 /* Some broken devices return a null or wrong dwMaxVideoFrameSize.
65997 - * Try to get the value from the format and frame descriptors.
65998 + * Try to get the value from the format and frame descriptor.
65999 */
66000 uvc_fixup_buffer_size(video, ctrl);
66001 ret = 0;
66002 @@ -190,6 +191,9 @@
66003 *(__le16 *)&data[12] = cpu_to_le16(ctrl->wCompQuality);
66004 *(__le16 *)&data[14] = cpu_to_le16(ctrl->wCompWindowSize);
66005 *(__le16 *)&data[16] = cpu_to_le16(ctrl->wDelay);
66006 + /* Note: Some of the fields below are not required for IN devices (see
66007 + * UVC spec, 4.3.1.1), but we still copy them in case support for OUT
66008 + * devices is added in the future. */
66009 put_unaligned_le32(ctrl->dwMaxVideoFrameSize, &data[18]);
66010 put_unaligned_le32(ctrl->dwMaxPayloadTransferSize, &data[22]);
66011
66012 @@ -396,7 +400,7 @@
66013 *
66014 * Empty buffers (bytesused == 0) don't trigger end of frame detection
66015 * as it doesn't make sense to return an empty buffer. This also
66016 - * avoids detecting end of frame conditions at FID toggling if the
66017 + * avoids detecting and of frame conditions at FID toggling if the
66018 * previous payload had the EOF bit set.
66019 */
66020 if (fid != video->last_fid && buf->buf.bytesused != 0) {
66021 @@ -449,17 +453,6 @@
66022 }
66023 }
66024
66025 -/* Video payload encoding is handled by uvc_video_encode_header() and
66026 - * uvc_video_encode_data(). Only bulk transfers are currently supported.
66027 - *
66028 - * uvc_video_encode_header is called at the start of a payload. It adds header
66029 - * data to the transfer buffer and returns the header size. As the only known
66030 - * UVC output device transfers a whole frame in a single payload, the EOF bit
66031 - * is always set in the header.
66032 - *
66033 - * uvc_video_encode_data is called for every URB and copies the data from the
66034 - * video buffer to the transfer buffer.
66035 - */
66036 static int uvc_video_encode_header(struct uvc_video_device *video,
66037 struct uvc_buffer *buf, __u8 *data, int len)
66038 {
66039 @@ -960,7 +953,7 @@
66040 }
66041
66042 /*
66043 - * Reconfigure the video interface and restart streaming if it was enabled
66044 + * Reconfigure the video interface and restart streaming if it was enable
66045 * before suspend.
66046 *
66047 * If an error occurs, disable the video queue. This will wake all pending
66048 @@ -992,8 +985,8 @@
66049 */
66050
66051 /*
66052 - * Initialize the UVC video device by switching to alternate setting 0 and
66053 - * retrieve the default format.
66054 + * Initialize the UVC video device by retrieving the default format and
66055 + * committing it.
66056 *
66057 * Some cameras (namely the Fuji Finepix) set the format and frame
66058 * indexes to zero. The UVC standard doesn't clearly make this a spec
66059 @@ -1021,7 +1014,7 @@
66060 */
66061 usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);
66062
66063 - /* Some webcams don't suport GET_DEF requests on the probe control. We
66064 + /* Some webcams don't suport GET_DEF request on the probe control. We
66065 * fall back to GET_CUR if GET_DEF fails.
66066 */
66067 if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_DEF)) < 0 &&
66068 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/uvc/uvcvideo.h linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvcvideo.h
66069 --- linux-2.6.29.owrt/drivers/media/video/uvc/uvcvideo.h 2009-05-10 22:04:38.000000000 +0200
66070 +++ linux-2.6.29-rc3.owrt/drivers/media/video/uvc/uvcvideo.h 2009-05-10 23:48:28.000000000 +0200
66071 @@ -72,149 +72,149 @@
66072 * UVC constants
66073 */
66074
66075 -#define SC_UNDEFINED 0x00
66076 -#define SC_VIDEOCONTROL 0x01
66077 -#define SC_VIDEOSTREAMING 0x02
66078 -#define SC_VIDEO_INTERFACE_COLLECTION 0x03
66079 -
66080 -#define PC_PROTOCOL_UNDEFINED 0x00
66081 -
66082 -#define CS_UNDEFINED 0x20
66083 -#define CS_DEVICE 0x21
66084 -#define CS_CONFIGURATION 0x22
66085 -#define CS_STRING 0x23
66086 -#define CS_INTERFACE 0x24
66087 -#define CS_ENDPOINT 0x25
66088 +#define SC_UNDEFINED 0x00
66089 +#define SC_VIDEOCONTROL 0x01
66090 +#define SC_VIDEOSTREAMING 0x02
66091 +#define SC_VIDEO_INTERFACE_COLLECTION 0x03
66092 +
66093 +#define PC_PROTOCOL_UNDEFINED 0x00
66094 +
66095 +#define CS_UNDEFINED 0x20
66096 +#define CS_DEVICE 0x21
66097 +#define CS_CONFIGURATION 0x22
66098 +#define CS_STRING 0x23
66099 +#define CS_INTERFACE 0x24
66100 +#define CS_ENDPOINT 0x25
66101
66102 /* VideoControl class specific interface descriptor */
66103 -#define VC_DESCRIPTOR_UNDEFINED 0x00
66104 -#define VC_HEADER 0x01
66105 -#define VC_INPUT_TERMINAL 0x02
66106 -#define VC_OUTPUT_TERMINAL 0x03
66107 -#define VC_SELECTOR_UNIT 0x04
66108 -#define VC_PROCESSING_UNIT 0x05
66109 -#define VC_EXTENSION_UNIT 0x06
66110 +#define VC_DESCRIPTOR_UNDEFINED 0x00
66111 +#define VC_HEADER 0x01
66112 +#define VC_INPUT_TERMINAL 0x02
66113 +#define VC_OUTPUT_TERMINAL 0x03
66114 +#define VC_SELECTOR_UNIT 0x04
66115 +#define VC_PROCESSING_UNIT 0x05
66116 +#define VC_EXTENSION_UNIT 0x06
66117
66118 /* VideoStreaming class specific interface descriptor */
66119 -#define VS_UNDEFINED 0x00
66120 -#define VS_INPUT_HEADER 0x01
66121 -#define VS_OUTPUT_HEADER 0x02
66122 -#define VS_STILL_IMAGE_FRAME 0x03
66123 -#define VS_FORMAT_UNCOMPRESSED 0x04
66124 -#define VS_FRAME_UNCOMPRESSED 0x05
66125 -#define VS_FORMAT_MJPEG 0x06
66126 -#define VS_FRAME_MJPEG 0x07
66127 -#define VS_FORMAT_MPEG2TS 0x0a
66128 -#define VS_FORMAT_DV 0x0c
66129 -#define VS_COLORFORMAT 0x0d
66130 -#define VS_FORMAT_FRAME_BASED 0x10
66131 -#define VS_FRAME_FRAME_BASED 0x11
66132 -#define VS_FORMAT_STREAM_BASED 0x12
66133 +#define VS_UNDEFINED 0x00
66134 +#define VS_INPUT_HEADER 0x01
66135 +#define VS_OUTPUT_HEADER 0x02
66136 +#define VS_STILL_IMAGE_FRAME 0x03
66137 +#define VS_FORMAT_UNCOMPRESSED 0x04
66138 +#define VS_FRAME_UNCOMPRESSED 0x05
66139 +#define VS_FORMAT_MJPEG 0x06
66140 +#define VS_FRAME_MJPEG 0x07
66141 +#define VS_FORMAT_MPEG2TS 0x0a
66142 +#define VS_FORMAT_DV 0x0c
66143 +#define VS_COLORFORMAT 0x0d
66144 +#define VS_FORMAT_FRAME_BASED 0x10
66145 +#define VS_FRAME_FRAME_BASED 0x11
66146 +#define VS_FORMAT_STREAM_BASED 0x12
66147
66148 /* Endpoint type */
66149 -#define EP_UNDEFINED 0x00
66150 -#define EP_GENERAL 0x01
66151 -#define EP_ENDPOINT 0x02
66152 -#define EP_INTERRUPT 0x03
66153 +#define EP_UNDEFINED 0x00
66154 +#define EP_GENERAL 0x01
66155 +#define EP_ENDPOINT 0x02
66156 +#define EP_INTERRUPT 0x03
66157
66158 /* Request codes */
66159 -#define RC_UNDEFINED 0x00
66160 -#define SET_CUR 0x01
66161 -#define GET_CUR 0x81
66162 -#define GET_MIN 0x82
66163 -#define GET_MAX 0x83
66164 -#define GET_RES 0x84
66165 -#define GET_LEN 0x85
66166 -#define GET_INFO 0x86
66167 -#define GET_DEF 0x87
66168 +#define RC_UNDEFINED 0x00
66169 +#define SET_CUR 0x01
66170 +#define GET_CUR 0x81
66171 +#define GET_MIN 0x82
66172 +#define GET_MAX 0x83
66173 +#define GET_RES 0x84
66174 +#define GET_LEN 0x85
66175 +#define GET_INFO 0x86
66176 +#define GET_DEF 0x87
66177
66178 /* VideoControl interface controls */
66179 -#define VC_CONTROL_UNDEFINED 0x00
66180 -#define VC_VIDEO_POWER_MODE_CONTROL 0x01
66181 -#define VC_REQUEST_ERROR_CODE_CONTROL 0x02
66182 +#define VC_CONTROL_UNDEFINED 0x00
66183 +#define VC_VIDEO_POWER_MODE_CONTROL 0x01
66184 +#define VC_REQUEST_ERROR_CODE_CONTROL 0x02
66185
66186 /* Terminal controls */
66187 -#define TE_CONTROL_UNDEFINED 0x00
66188 +#define TE_CONTROL_UNDEFINED 0x00
66189
66190 /* Selector Unit controls */
66191 -#define SU_CONTROL_UNDEFINED 0x00
66192 -#define SU_INPUT_SELECT_CONTROL 0x01
66193 +#define SU_CONTROL_UNDEFINED 0x00
66194 +#define SU_INPUT_SELECT_CONTROL 0x01
66195
66196 /* Camera Terminal controls */
66197 -#define CT_CONTROL_UNDEFINED 0x00
66198 -#define CT_SCANNING_MODE_CONTROL 0x01
66199 -#define CT_AE_MODE_CONTROL 0x02
66200 -#define CT_AE_PRIORITY_CONTROL 0x03
66201 -#define CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
66202 -#define CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
66203 -#define CT_FOCUS_ABSOLUTE_CONTROL 0x06
66204 -#define CT_FOCUS_RELATIVE_CONTROL 0x07
66205 -#define CT_FOCUS_AUTO_CONTROL 0x08
66206 -#define CT_IRIS_ABSOLUTE_CONTROL 0x09
66207 -#define CT_IRIS_RELATIVE_CONTROL 0x0a
66208 -#define CT_ZOOM_ABSOLUTE_CONTROL 0x0b
66209 -#define CT_ZOOM_RELATIVE_CONTROL 0x0c
66210 -#define CT_PANTILT_ABSOLUTE_CONTROL 0x0d
66211 -#define CT_PANTILT_RELATIVE_CONTROL 0x0e
66212 -#define CT_ROLL_ABSOLUTE_CONTROL 0x0f
66213 -#define CT_ROLL_RELATIVE_CONTROL 0x10
66214 -#define CT_PRIVACY_CONTROL 0x11
66215 +#define CT_CONTROL_UNDEFINED 0x00
66216 +#define CT_SCANNING_MODE_CONTROL 0x01
66217 +#define CT_AE_MODE_CONTROL 0x02
66218 +#define CT_AE_PRIORITY_CONTROL 0x03
66219 +#define CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
66220 +#define CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
66221 +#define CT_FOCUS_ABSOLUTE_CONTROL 0x06
66222 +#define CT_FOCUS_RELATIVE_CONTROL 0x07
66223 +#define CT_FOCUS_AUTO_CONTROL 0x08
66224 +#define CT_IRIS_ABSOLUTE_CONTROL 0x09
66225 +#define CT_IRIS_RELATIVE_CONTROL 0x0a
66226 +#define CT_ZOOM_ABSOLUTE_CONTROL 0x0b
66227 +#define CT_ZOOM_RELATIVE_CONTROL 0x0c
66228 +#define CT_PANTILT_ABSOLUTE_CONTROL 0x0d
66229 +#define CT_PANTILT_RELATIVE_CONTROL 0x0e
66230 +#define CT_ROLL_ABSOLUTE_CONTROL 0x0f
66231 +#define CT_ROLL_RELATIVE_CONTROL 0x10
66232 +#define CT_PRIVACY_CONTROL 0x11
66233
66234 /* Processing Unit controls */
66235 -#define PU_CONTROL_UNDEFINED 0x00
66236 -#define PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
66237 -#define PU_BRIGHTNESS_CONTROL 0x02
66238 -#define PU_CONTRAST_CONTROL 0x03
66239 -#define PU_GAIN_CONTROL 0x04
66240 -#define PU_POWER_LINE_FREQUENCY_CONTROL 0x05
66241 -#define PU_HUE_CONTROL 0x06
66242 -#define PU_SATURATION_CONTROL 0x07
66243 -#define PU_SHARPNESS_CONTROL 0x08
66244 -#define PU_GAMMA_CONTROL 0x09
66245 -#define PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
66246 -#define PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
66247 -#define PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
66248 -#define PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
66249 -#define PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
66250 -#define PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
66251 -#define PU_HUE_AUTO_CONTROL 0x10
66252 -#define PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
66253 -#define PU_ANALOG_LOCK_STATUS_CONTROL 0x12
66254 +#define PU_CONTROL_UNDEFINED 0x00
66255 +#define PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
66256 +#define PU_BRIGHTNESS_CONTROL 0x02
66257 +#define PU_CONTRAST_CONTROL 0x03
66258 +#define PU_GAIN_CONTROL 0x04
66259 +#define PU_POWER_LINE_FREQUENCY_CONTROL 0x05
66260 +#define PU_HUE_CONTROL 0x06
66261 +#define PU_SATURATION_CONTROL 0x07
66262 +#define PU_SHARPNESS_CONTROL 0x08
66263 +#define PU_GAMMA_CONTROL 0x09
66264 +#define PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
66265 +#define PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
66266 +#define PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
66267 +#define PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
66268 +#define PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
66269 +#define PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
66270 +#define PU_HUE_AUTO_CONTROL 0x10
66271 +#define PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
66272 +#define PU_ANALOG_LOCK_STATUS_CONTROL 0x12
66273
66274 #define LXU_MOTOR_PANTILT_RELATIVE_CONTROL 0x01
66275 #define LXU_MOTOR_PANTILT_RESET_CONTROL 0x02
66276 #define LXU_MOTOR_FOCUS_MOTOR_CONTROL 0x03
66277
66278 /* VideoStreaming interface controls */
66279 -#define VS_CONTROL_UNDEFINED 0x00
66280 -#define VS_PROBE_CONTROL 0x01
66281 -#define VS_COMMIT_CONTROL 0x02
66282 -#define VS_STILL_PROBE_CONTROL 0x03
66283 -#define VS_STILL_COMMIT_CONTROL 0x04
66284 -#define VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
66285 -#define VS_STREAM_ERROR_CODE_CONTROL 0x06
66286 -#define VS_GENERATE_KEY_FRAME_CONTROL 0x07
66287 -#define VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
66288 -#define VS_SYNC_DELAY_CONTROL 0x09
66289 +#define VS_CONTROL_UNDEFINED 0x00
66290 +#define VS_PROBE_CONTROL 0x01
66291 +#define VS_COMMIT_CONTROL 0x02
66292 +#define VS_STILL_PROBE_CONTROL 0x03
66293 +#define VS_STILL_COMMIT_CONTROL 0x04
66294 +#define VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
66295 +#define VS_STREAM_ERROR_CODE_CONTROL 0x06
66296 +#define VS_GENERATE_KEY_FRAME_CONTROL 0x07
66297 +#define VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
66298 +#define VS_SYNC_DELAY_CONTROL 0x09
66299
66300 -#define TT_VENDOR_SPECIFIC 0x0100
66301 -#define TT_STREAMING 0x0101
66302 +#define TT_VENDOR_SPECIFIC 0x0100
66303 +#define TT_STREAMING 0x0101
66304
66305 /* Input Terminal types */
66306 -#define ITT_VENDOR_SPECIFIC 0x0200
66307 -#define ITT_CAMERA 0x0201
66308 -#define ITT_MEDIA_TRANSPORT_INPUT 0x0202
66309 +#define ITT_VENDOR_SPECIFIC 0x0200
66310 +#define ITT_CAMERA 0x0201
66311 +#define ITT_MEDIA_TRANSPORT_INPUT 0x0202
66312
66313 /* Output Terminal types */
66314 -#define OTT_VENDOR_SPECIFIC 0x0300
66315 -#define OTT_DISPLAY 0x0301
66316 -#define OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
66317 +#define OTT_VENDOR_SPECIFIC 0x0300
66318 +#define OTT_DISPLAY 0x0301
66319 +#define OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
66320
66321 /* External Terminal types */
66322 -#define EXTERNAL_VENDOR_SPECIFIC 0x0400
66323 -#define COMPOSITE_CONNECTOR 0x0401
66324 -#define SVIDEO_CONNECTOR 0x0402
66325 -#define COMPONENT_CONNECTOR 0x0403
66326 +#define EXTERNAL_VENDOR_SPECIFIC 0x0400
66327 +#define COMPOSITE_CONNECTOR 0x0401
66328 +#define SVIDEO_CONNECTOR 0x0402
66329 +#define COMPONENT_CONNECTOR 0x0403
66330
66331 #define UVC_TERM_INPUT 0x0000
66332 #define UVC_TERM_OUTPUT 0x8000
66333 @@ -541,11 +541,11 @@
66334 };
66335
66336 enum uvc_buffer_state {
66337 - UVC_BUF_STATE_IDLE = 0,
66338 - UVC_BUF_STATE_QUEUED = 1,
66339 - UVC_BUF_STATE_ACTIVE = 2,
66340 - UVC_BUF_STATE_DONE = 3,
66341 - UVC_BUF_STATE_ERROR = 4,
66342 + UVC_BUF_STATE_IDLE = 0,
66343 + UVC_BUF_STATE_QUEUED = 1,
66344 + UVC_BUF_STATE_ACTIVE = 2,
66345 + UVC_BUF_STATE_DONE = 3,
66346 + UVC_BUF_STATE_ERROR = 4,
66347 };
66348
66349 struct uvc_buffer {
66350 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/v4l2-subdev.c linux-2.6.29-rc3.owrt/drivers/media/video/v4l2-subdev.c
66351 --- linux-2.6.29.owrt/drivers/media/video/v4l2-subdev.c 2009-05-10 22:04:38.000000000 +0200
66352 +++ linux-2.6.29-rc3.owrt/drivers/media/video/v4l2-subdev.c 2009-05-10 23:48:28.000000000 +0200
66353 @@ -28,13 +28,13 @@
66354 {
66355 switch (cmd) {
66356 case VIDIOC_QUERYCTRL:
66357 - return v4l2_subdev_call(sd, core, queryctrl, arg);
66358 + return v4l2_subdev_call(sd, core, querymenu, arg);
66359 case VIDIOC_G_CTRL:
66360 return v4l2_subdev_call(sd, core, g_ctrl, arg);
66361 case VIDIOC_S_CTRL:
66362 return v4l2_subdev_call(sd, core, s_ctrl, arg);
66363 case VIDIOC_QUERYMENU:
66364 - return v4l2_subdev_call(sd, core, querymenu, arg);
66365 + return v4l2_subdev_call(sd, core, queryctrl, arg);
66366 case VIDIOC_LOG_STATUS:
66367 return v4l2_subdev_call(sd, core, log_status);
66368 case VIDIOC_DBG_G_CHIP_IDENT:
66369 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/zoran/Kconfig linux-2.6.29-rc3.owrt/drivers/media/video/zoran/Kconfig
66370 --- linux-2.6.29.owrt/drivers/media/video/zoran/Kconfig 2009-05-10 22:04:38.000000000 +0200
66371 +++ linux-2.6.29-rc3.owrt/drivers/media/video/zoran/Kconfig 2009-05-10 23:48:28.000000000 +0200
66372 @@ -68,7 +68,6 @@
66373 tristate "AverMedia 6 Eyes support (EXPERIMENTAL)"
66374 depends on VIDEO_ZORAN_ZR36060 && EXPERIMENTAL && VIDEO_V4L1
66375 select VIDEO_BT856 if VIDEO_HELPER_CHIPS_AUTO
66376 - select VIDEO_BT866 if VIDEO_HELPER_CHIPS_AUTO
66377 select VIDEO_KS0127 if VIDEO_HELPER_CHIPS_AUTO
66378 help
66379 Support for the AverMedia 6 Eyes video surveillance card.
66380 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/zoran/zoran_card.c linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran_card.c
66381 --- linux-2.6.29.owrt/drivers/media/video/zoran/zoran_card.c 2009-05-10 22:04:38.000000000 +0200
66382 +++ linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran_card.c 2009-05-10 23:48:28.000000000 +0200
66383 @@ -61,17 +61,17 @@
66384
66385 extern const struct zoran_format zoran_formats[];
66386
66387 -static int card[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };
66388 +static int card[BUZ_MAX] = { -1, -1, -1, -1 };
66389 module_param_array(card, int, NULL, 0444);
66390 -MODULE_PARM_DESC(card, "Card type");
66391 +MODULE_PARM_DESC(card, "The type of card");
66392
66393 -static int encoder[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };
66394 +static int encoder[BUZ_MAX] = { -1, -1, -1, -1 };
66395 module_param_array(encoder, int, NULL, 0444);
66396 -MODULE_PARM_DESC(encoder, "Video encoder chip");
66397 +MODULE_PARM_DESC(encoder, "i2c TV encoder");
66398
66399 -static int decoder[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };
66400 +static int decoder[BUZ_MAX] = { -1, -1, -1, -1 };
66401 module_param_array(decoder, int, NULL, 0444);
66402 -MODULE_PARM_DESC(decoder, "Video decoder chip");
66403 +MODULE_PARM_DESC(decoder, "i2c TV decoder");
66404
66405 /*
66406 The video mem address of the video card.
66407 @@ -104,9 +104,9 @@
66408 MODULE_PARM_DESC(default_norm, "Default norm (0=PAL, 1=NTSC, 2=SECAM)");
66409
66410 /* /dev/videoN, -1 for autodetect */
66411 -static int video_nr[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };
66412 +static int video_nr[BUZ_MAX] = {-1, -1, -1, -1};
66413 module_param_array(video_nr, int, NULL, 0444);
66414 -MODULE_PARM_DESC(video_nr, "Video device number (-1=Auto)");
66415 +MODULE_PARM_DESC(video_nr, "video device number (-1=Auto)");
66416
66417 /*
66418 Number and size of grab buffers for Video 4 Linux
66419 @@ -153,21 +153,9 @@
66420 MODULE_AUTHOR("Serguei Miridonov");
66421 MODULE_LICENSE("GPL");
66422
66423 -#define ZR_DEVICE(subven, subdev, data) { \
66424 - .vendor = PCI_VENDOR_ID_ZORAN, .device = PCI_DEVICE_ID_ZORAN_36057, \
66425 - .subvendor = (subven), .subdevice = (subdev), .driver_data = (data) }
66426 -
66427 -static struct pci_device_id zr36067_pci_tbl[] = {
66428 - ZR_DEVICE(PCI_VENDOR_ID_MIRO, PCI_DEVICE_ID_MIRO_DC10PLUS, DC10plus),
66429 - ZR_DEVICE(PCI_VENDOR_ID_MIRO, PCI_DEVICE_ID_MIRO_DC30PLUS, DC30plus),
66430 - ZR_DEVICE(PCI_VENDOR_ID_ELECTRONICDESIGNGMBH, PCI_DEVICE_ID_LML_33R10, LML33R10),
66431 - ZR_DEVICE(PCI_VENDOR_ID_IOMEGA, PCI_DEVICE_ID_IOMEGA_BUZ, BUZ),
66432 - ZR_DEVICE(PCI_ANY_ID, PCI_ANY_ID, NUM_CARDS),
66433 - {0}
66434 -};
66435 -MODULE_DEVICE_TABLE(pci, zr36067_pci_tbl);
66436
66437 -static unsigned int zoran_num; /* number of cards found */
66438 +int zoran_num; /* number of Buzs in use */
66439 +struct zoran *zoran[BUZ_MAX];
66440
66441 /* videocodec bus functions ZR36060 */
66442 static u32
66443 @@ -484,6 +472,8 @@
66444 }, {
66445 .type = DC10plus,
66446 .name = "DC10plus",
66447 + .vendor_id = PCI_VENDOR_ID_MIRO,
66448 + .device_id = PCI_DEVICE_ID_MIRO_DC10PLUS,
66449 .i2c_decoder = I2C_DRIVERID_SAA7110,
66450 .i2c_encoder = I2C_DRIVERID_ADV7175,
66451 .video_codec = CODEC_TYPE_ZR36060,
66452 @@ -541,6 +531,8 @@
66453 }, {
66454 .type = DC30plus,
66455 .name = "DC30plus",
66456 + .vendor_id = PCI_VENDOR_ID_MIRO,
66457 + .device_id = PCI_DEVICE_ID_MIRO_DC30PLUS,
66458 .i2c_decoder = I2C_DRIVERID_VPX3220,
66459 .i2c_encoder = I2C_DRIVERID_ADV7175,
66460 .video_codec = CODEC_TYPE_ZR36050,
66461 @@ -597,6 +589,8 @@
66462 }, {
66463 .type = LML33R10,
66464 .name = "LML33R10",
66465 + .vendor_id = PCI_VENDOR_ID_ELECTRONICDESIGNGMBH,
66466 + .device_id = PCI_DEVICE_ID_LML_33R10,
66467 .i2c_decoder = I2C_DRIVERID_SAA7114,
66468 .i2c_encoder = I2C_DRIVERID_ADV7170,
66469 .video_codec = CODEC_TYPE_ZR36060,
66470 @@ -624,6 +618,8 @@
66471 }, {
66472 .type = BUZ,
66473 .name = "Buz",
66474 + .vendor_id = PCI_VENDOR_ID_IOMEGA,
66475 + .device_id = PCI_DEVICE_ID_IOMEGA_BUZ,
66476 .i2c_decoder = I2C_DRIVERID_SAA7111A,
66477 .i2c_encoder = I2C_DRIVERID_SAA7185B,
66478 .video_codec = CODEC_TYPE_ZR36060,
66479 @@ -653,6 +649,8 @@
66480 .name = "6-Eyes",
66481 /* AverMedia chose not to brand the 6-Eyes. Thus it
66482 can't be autodetected, and requires card=x. */
66483 + .vendor_id = -1,
66484 + .device_id = -1,
66485 .i2c_decoder = I2C_DRIVERID_KS0127,
66486 .i2c_encoder = I2C_DRIVERID_BT866,
66487 .video_codec = CODEC_TYPE_ZR36060,
66488 @@ -1140,8 +1138,7 @@
66489 strcpy(zr->video_dev->name, ZR_DEVNAME(zr));
66490 err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]);
66491 if (err < 0)
66492 - goto exit_free;
66493 - video_set_drvdata(zr->video_dev, zr);
66494 + goto exit_unregister;
66495
66496 zoran_init_hardware(zr);
66497 if (zr36067_debug > 2)
66498 @@ -1156,19 +1153,19 @@
66499 zr->initialized = 1;
66500 return 0;
66501
66502 +exit_unregister:
66503 + zoran_unregister_i2c(zr);
66504 exit_free:
66505 kfree(zr->stat_com);
66506 kfree(zr->video_dev);
66507 return err;
66508 }
66509
66510 -static void __devexit zoran_remove(struct pci_dev *pdev)
66511 +static void
66512 +zoran_release (struct zoran *zr)
66513 {
66514 - struct zoran *zr = pci_get_drvdata(pdev);
66515 -
66516 if (!zr->initialized)
66517 goto exit_free;
66518 -
66519 /* unregister videocodec bus */
66520 if (zr->codec) {
66521 struct videocodec_master *master = zr->codec->master_data;
66522 @@ -1197,7 +1194,6 @@
66523 pci_disable_device(zr->pci_dev);
66524 video_unregister_device(zr->video_dev);
66525 exit_free:
66526 - pci_set_drvdata(pdev, NULL);
66527 kfree(zr);
66528 }
66529
66530 @@ -1260,329 +1256,338 @@
66531 * Scan for a Buz card (actually for the PCI controller ZR36057),
66532 * request the irq and map the io memory
66533 */
66534 -static int __devinit zoran_probe(struct pci_dev *pdev,
66535 - const struct pci_device_id *ent)
66536 +static int __devinit
66537 +find_zr36057 (void)
66538 {
66539 unsigned char latency, need_latency;
66540 struct zoran *zr;
66541 + struct pci_dev *dev = NULL;
66542 int result;
66543 struct videocodec_master *master_vfe = NULL;
66544 struct videocodec_master *master_codec = NULL;
66545 int card_num;
66546 char *i2c_enc_name, *i2c_dec_name, *codec_name, *vfe_name;
66547 - unsigned int nr;
66548 -
66549 -
66550 - nr = zoran_num++;
66551 - if (nr >= BUZ_MAX) {
66552 - dprintk(1,
66553 - KERN_ERR
66554 - "%s: driver limited to %d card(s) maximum\n",
66555 - ZORAN_NAME, BUZ_MAX);
66556 - return -ENOENT;
66557 - }
66558
66559 - zr = kzalloc(sizeof(struct zoran), GFP_KERNEL);
66560 - if (!zr) {
66561 - dprintk(1,
66562 - KERN_ERR
66563 - "%s: find_zr36057() - kzalloc failed\n",
66564 - ZORAN_NAME);
66565 - return -ENOMEM;
66566 - }
66567 - zr->pci_dev = pdev;
66568 - zr->id = nr;
66569 - snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);
66570 - spin_lock_init(&zr->spinlock);
66571 - mutex_init(&zr->resource_lock);
66572 - if (pci_enable_device(pdev))
66573 - goto zr_free_mem;
66574 - pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION, &zr->revision);
66575 + zoran_num = 0;
66576 + while (zoran_num < BUZ_MAX &&
66577 + (dev = pci_get_device(PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) {
66578 + card_num = card[zoran_num];
66579 + zr = kzalloc(sizeof(struct zoran), GFP_KERNEL);
66580 + if (!zr) {
66581 + dprintk(1,
66582 + KERN_ERR
66583 + "%s: find_zr36057() - kzalloc failed\n",
66584 + ZORAN_NAME);
66585 + continue;
66586 + }
66587 + zr->pci_dev = dev;
66588 + //zr->zr36057_mem = NULL;
66589 + zr->id = zoran_num;
66590 + snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);
66591 + spin_lock_init(&zr->spinlock);
66592 + mutex_init(&zr->resource_lock);
66593 + if (pci_enable_device(dev))
66594 + goto zr_free_mem;
66595 + zr->zr36057_adr = pci_resource_start(zr->pci_dev, 0);
66596 + pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION,
66597 + &zr->revision);
66598 + if (zr->revision < 2) {
66599 + dprintk(1,
66600 + KERN_INFO
66601 + "%s: Zoran ZR36057 (rev %d) irq: %d, memory: 0x%08x.\n",
66602 + ZR_DEVNAME(zr), zr->revision, zr->pci_dev->irq,
66603 + zr->zr36057_adr);
66604
66605 - dprintk(1,
66606 - KERN_INFO
66607 - "%s: Zoran ZR360%c7 (rev %d), irq: %d, memory: 0x%08llx\n",
66608 - ZR_DEVNAME(zr), zr->revision < 2 ? '5' : '6', zr->revision,
66609 - zr->pci_dev->irq, (uint64_t)pci_resource_start(zr->pci_dev, 0));
66610 - if (zr->revision >= 2) {
66611 - dprintk(1,
66612 - KERN_INFO
66613 - "%s: Subsystem vendor=0x%04x id=0x%04x\n",
66614 - ZR_DEVNAME(zr), zr->pci_dev->subsystem_vendor,
66615 - zr->pci_dev->subsystem_device);
66616 - }
66617 + if (card_num == -1) {
66618 + dprintk(1,
66619 + KERN_ERR
66620 + "%s: find_zr36057() - no card specified, please use the card=X insmod option\n",
66621 + ZR_DEVNAME(zr));
66622 + goto zr_free_mem;
66623 + }
66624 + } else {
66625 + int i;
66626 + unsigned short ss_vendor, ss_device;
66627
66628 - /* Use auto-detected card type? */
66629 - if (card[nr] == -1) {
66630 - if (zr->revision < 2) {
66631 + ss_vendor = zr->pci_dev->subsystem_vendor;
66632 + ss_device = zr->pci_dev->subsystem_device;
66633 dprintk(1,
66634 - KERN_ERR
66635 - "%s: No card type specified, please use the card=X module parameter\n",
66636 - ZR_DEVNAME(zr));
66637 + KERN_INFO
66638 + "%s: Zoran ZR36067 (rev %d) irq: %d, memory: 0x%08x\n",
66639 + ZR_DEVNAME(zr), zr->revision, zr->pci_dev->irq,
66640 + zr->zr36057_adr);
66641 dprintk(1,
66642 + KERN_INFO
66643 + "%s: subsystem vendor=0x%04x id=0x%04x\n",
66644 + ZR_DEVNAME(zr), ss_vendor, ss_device);
66645 + if (card_num == -1) {
66646 + dprintk(3,
66647 + KERN_DEBUG
66648 + "%s: find_zr36057() - trying to autodetect card type\n",
66649 + ZR_DEVNAME(zr));
66650 + for (i=0;i<NUM_CARDS;i++) {
66651 + if (ss_vendor == zoran_cards[i].vendor_id &&
66652 + ss_device == zoran_cards[i].device_id) {
66653 + dprintk(3,
66654 + KERN_DEBUG
66655 + "%s: find_zr36057() - card %s detected\n",
66656 + ZR_DEVNAME(zr),
66657 + zoran_cards[i].name);
66658 + card_num = i;
66659 + break;
66660 + }
66661 + }
66662 + if (i == NUM_CARDS) {
66663 + dprintk(1,
66664 + KERN_ERR
66665 + "%s: find_zr36057() - unknown card\n",
66666 + ZR_DEVNAME(zr));
66667 + goto zr_free_mem;
66668 + }
66669 + }
66670 + }
66671 +
66672 + if (card_num < 0 || card_num >= NUM_CARDS) {
66673 + dprintk(2,
66674 KERN_ERR
66675 - "%s: It is not possible to auto-detect ZR36057 based cards\n",
66676 - ZR_DEVNAME(zr));
66677 + "%s: find_zr36057() - invalid cardnum %d\n",
66678 + ZR_DEVNAME(zr), card_num);
66679 goto zr_free_mem;
66680 }
66681
66682 - card_num = ent->driver_data;
66683 - if (card_num >= NUM_CARDS) {
66684 + /* even though we make this a non pointer and thus
66685 + * theoretically allow for making changes to this struct
66686 + * on a per-individual card basis at runtime, this is
66687 + * strongly discouraged. This structure is intended to
66688 + * keep general card information, no settings or anything */
66689 + zr->card = zoran_cards[card_num];
66690 + snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)),
66691 + "%s[%u]", zr->card.name, zr->id);
66692 +
66693 + zr->zr36057_mem = ioremap_nocache(zr->zr36057_adr, 0x1000);
66694 + if (!zr->zr36057_mem) {
66695 dprintk(1,
66696 KERN_ERR
66697 - "%s: Unknown card, try specifying card=X module parameter\n",
66698 + "%s: find_zr36057() - ioremap failed\n",
66699 ZR_DEVNAME(zr));
66700 goto zr_free_mem;
66701 }
66702 - dprintk(3,
66703 - KERN_DEBUG
66704 - "%s: %s() - card %s detected\n",
66705 - ZR_DEVNAME(zr), __func__, zoran_cards[card_num].name);
66706 - } else {
66707 - card_num = card[nr];
66708 - if (card_num >= NUM_CARDS || card_num < 0) {
66709 - dprintk(1,
66710 - KERN_ERR
66711 - "%s: User specified card type %d out of range (0 .. %d)\n",
66712 - ZR_DEVNAME(zr), card_num, NUM_CARDS - 1);
66713 - goto zr_free_mem;
66714 +
66715 + result = request_irq(zr->pci_dev->irq,
66716 + zoran_irq,
66717 + IRQF_SHARED | IRQF_DISABLED,
66718 + ZR_DEVNAME(zr),
66719 + (void *) zr);
66720 + if (result < 0) {
66721 + if (result == -EINVAL) {
66722 + dprintk(1,
66723 + KERN_ERR
66724 + "%s: find_zr36057() - bad irq number or handler\n",
66725 + ZR_DEVNAME(zr));
66726 + } else if (result == -EBUSY) {
66727 + dprintk(1,
66728 + KERN_ERR
66729 + "%s: find_zr36057() - IRQ %d busy, change your PnP config in BIOS\n",
66730 + ZR_DEVNAME(zr), zr->pci_dev->irq);
66731 + } else {
66732 + dprintk(1,
66733 + KERN_ERR
66734 + "%s: find_zr36057() - can't assign irq, error code %d\n",
66735 + ZR_DEVNAME(zr), result);
66736 + }
66737 + goto zr_unmap;
66738 }
66739 - }
66740
66741 - /* even though we make this a non pointer and thus
66742 - * theoretically allow for making changes to this struct
66743 - * on a per-individual card basis at runtime, this is
66744 - * strongly discouraged. This structure is intended to
66745 - * keep general card information, no settings or anything */
66746 - zr->card = zoran_cards[card_num];
66747 - snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)),
66748 - "%s[%u]", zr->card.name, zr->id);
66749 + /* set PCI latency timer */
66750 + pci_read_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,
66751 + &latency);
66752 + need_latency = zr->revision > 1 ? 32 : 48;
66753 + if (latency != need_latency) {
66754 + dprintk(2,
66755 + KERN_INFO
66756 + "%s: Changing PCI latency from %d to %d.\n",
66757 + ZR_DEVNAME(zr), latency, need_latency);
66758 + pci_write_config_byte(zr->pci_dev,
66759 + PCI_LATENCY_TIMER,
66760 + need_latency);
66761 + }
66762
66763 - zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0);
66764 - if (!zr->zr36057_mem) {
66765 - dprintk(1,
66766 - KERN_ERR
66767 - "%s: %s() - ioremap failed\n",
66768 - ZR_DEVNAME(zr), __func__);
66769 - goto zr_free_mem;
66770 - }
66771 + zr36057_restart(zr);
66772 + /* i2c */
66773 + dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n",
66774 + ZR_DEVNAME(zr));
66775
66776 - result = request_irq(zr->pci_dev->irq, zoran_irq,
66777 - IRQF_SHARED | IRQF_DISABLED, ZR_DEVNAME(zr), zr);
66778 - if (result < 0) {
66779 - if (result == -EINVAL) {
66780 - dprintk(1,
66781 - KERN_ERR
66782 - "%s: find_zr36057() - bad irq number or handler\n",
66783 - ZR_DEVNAME(zr));
66784 - } else if (result == -EBUSY) {
66785 - dprintk(1,
66786 - KERN_ERR
66787 - "%s: find_zr36057() - IRQ %d busy, change your PnP config in BIOS\n",
66788 - ZR_DEVNAME(zr), zr->pci_dev->irq);
66789 + /* i2c decoder */
66790 + if (decoder[zr->id] != -1) {
66791 + i2c_dec_name = i2cid_to_modulename(decoder[zr->id]);
66792 + zr->card.i2c_decoder = decoder[zr->id];
66793 + } else if (zr->card.i2c_decoder != 0) {
66794 + i2c_dec_name =
66795 + i2cid_to_modulename(zr->card.i2c_decoder);
66796 } else {
66797 - dprintk(1,
66798 - KERN_ERR
66799 - "%s: find_zr36057() - can't assign irq, error code %d\n",
66800 - ZR_DEVNAME(zr), result);
66801 + i2c_dec_name = NULL;
66802 }
66803 - goto zr_unmap;
66804 - }
66805
66806 - /* set PCI latency timer */
66807 - pci_read_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,
66808 - &latency);
66809 - need_latency = zr->revision > 1 ? 32 : 48;
66810 - if (latency != need_latency) {
66811 - dprintk(2,
66812 - KERN_INFO
66813 - "%s: Changing PCI latency from %d to %d\n",
66814 - ZR_DEVNAME(zr), latency, need_latency);
66815 - pci_write_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,
66816 - need_latency);
66817 - }
66818 -
66819 - zr36057_restart(zr);
66820 - /* i2c */
66821 - dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n",
66822 - ZR_DEVNAME(zr));
66823 -
66824 - /* i2c decoder */
66825 - if (decoder[zr->id] != -1) {
66826 - i2c_dec_name = i2cid_to_modulename(decoder[zr->id]);
66827 - zr->card.i2c_decoder = decoder[zr->id];
66828 - } else if (zr->card.i2c_decoder != 0) {
66829 - i2c_dec_name = i2cid_to_modulename(zr->card.i2c_decoder);
66830 - } else {
66831 - i2c_dec_name = NULL;
66832 - }
66833 + if (i2c_dec_name) {
66834 + if ((result = request_module(i2c_dec_name)) < 0) {
66835 + dprintk(1,
66836 + KERN_ERR
66837 + "%s: failed to load module %s: %d\n",
66838 + ZR_DEVNAME(zr), i2c_dec_name, result);
66839 + }
66840 + }
66841
66842 - if (i2c_dec_name) {
66843 - result = request_module(i2c_dec_name);
66844 - if (result < 0) {
66845 - dprintk(1,
66846 - KERN_ERR
66847 - "%s: failed to load module %s: %d\n",
66848 - ZR_DEVNAME(zr), i2c_dec_name, result);
66849 + /* i2c encoder */
66850 + if (encoder[zr->id] != -1) {
66851 + i2c_enc_name = i2cid_to_modulename(encoder[zr->id]);
66852 + zr->card.i2c_encoder = encoder[zr->id];
66853 + } else if (zr->card.i2c_encoder != 0) {
66854 + i2c_enc_name =
66855 + i2cid_to_modulename(zr->card.i2c_encoder);
66856 + } else {
66857 + i2c_enc_name = NULL;
66858 }
66859 - }
66860
66861 - /* i2c encoder */
66862 - if (encoder[zr->id] != -1) {
66863 - i2c_enc_name = i2cid_to_modulename(encoder[zr->id]);
66864 - zr->card.i2c_encoder = encoder[zr->id];
66865 - } else if (zr->card.i2c_encoder != 0) {
66866 - i2c_enc_name = i2cid_to_modulename(zr->card.i2c_encoder);
66867 - } else {
66868 - i2c_enc_name = NULL;
66869 - }
66870 + if (i2c_enc_name) {
66871 + if ((result = request_module(i2c_enc_name)) < 0) {
66872 + dprintk(1,
66873 + KERN_ERR
66874 + "%s: failed to load module %s: %d\n",
66875 + ZR_DEVNAME(zr), i2c_enc_name, result);
66876 + }
66877 + }
66878
66879 - if (i2c_enc_name) {
66880 - result = request_module(i2c_enc_name);
66881 - if (result < 0) {
66882 + if (zoran_register_i2c(zr) < 0) {
66883 dprintk(1,
66884 KERN_ERR
66885 - "%s: failed to load module %s: %d\n",
66886 - ZR_DEVNAME(zr), i2c_enc_name, result);
66887 + "%s: find_zr36057() - can't initialize i2c bus\n",
66888 + ZR_DEVNAME(zr));
66889 + goto zr_free_irq;
66890 }
66891 - }
66892
66893 - if (zoran_register_i2c(zr) < 0) {
66894 - dprintk(1,
66895 - KERN_ERR
66896 - "%s: find_zr36057() - can't initialize i2c bus\n",
66897 + dprintk(2,
66898 + KERN_INFO "%s: Initializing videocodec bus...\n",
66899 ZR_DEVNAME(zr));
66900 - goto zr_free_irq;
66901 - }
66902 -
66903 - dprintk(2,
66904 - KERN_INFO "%s: Initializing videocodec bus...\n",
66905 - ZR_DEVNAME(zr));
66906
66907 - if (zr->card.video_codec) {
66908 - codec_name = codecid_to_modulename(zr->card.video_codec);
66909 - if (codec_name) {
66910 - result = request_module(codec_name);
66911 - if (result) {
66912 + if (zr->card.video_codec != 0 &&
66913 + (codec_name =
66914 + codecid_to_modulename(zr->card.video_codec)) != NULL) {
66915 + if ((result = request_module(codec_name)) < 0) {
66916 dprintk(1,
66917 KERN_ERR
66918 "%s: failed to load modules %s: %d\n",
66919 ZR_DEVNAME(zr), codec_name, result);
66920 }
66921 }
66922 - }
66923 - if (zr->card.video_vfe) {
66924 - vfe_name = codecid_to_modulename(zr->card.video_vfe);
66925 - if (vfe_name) {
66926 - result = request_module(vfe_name);
66927 - if (result < 0) {
66928 + if (zr->card.video_vfe != 0 &&
66929 + (vfe_name =
66930 + codecid_to_modulename(zr->card.video_vfe)) != NULL) {
66931 + if ((result = request_module(vfe_name)) < 0) {
66932 dprintk(1,
66933 KERN_ERR
66934 "%s: failed to load modules %s: %d\n",
66935 ZR_DEVNAME(zr), vfe_name, result);
66936 }
66937 }
66938 - }
66939
66940 - /* reset JPEG codec */
66941 - jpeg_codec_sleep(zr, 1);
66942 - jpeg_codec_reset(zr);
66943 - /* video bus enabled */
66944 - /* display codec revision */
66945 - if (zr->card.video_codec != 0) {
66946 - master_codec = zoran_setup_videocodec(zr, zr->card.video_codec);
66947 - if (!master_codec)
66948 - goto zr_unreg_i2c;
66949 - zr->codec = videocodec_attach(master_codec);
66950 - if (!zr->codec) {
66951 - dprintk(1,
66952 - KERN_ERR
66953 - "%s: find_zr36057() - no codec found\n",
66954 - ZR_DEVNAME(zr));
66955 - goto zr_free_codec;
66956 - }
66957 - if (zr->codec->type != zr->card.video_codec) {
66958 - dprintk(1,
66959 - KERN_ERR
66960 - "%s: find_zr36057() - wrong codec\n",
66961 - ZR_DEVNAME(zr));
66962 - goto zr_detach_codec;
66963 - }
66964 - }
66965 - if (zr->card.video_vfe != 0) {
66966 - master_vfe = zoran_setup_videocodec(zr, zr->card.video_vfe);
66967 - if (!master_vfe)
66968 - goto zr_detach_codec;
66969 - zr->vfe = videocodec_attach(master_vfe);
66970 - if (!zr->vfe) {
66971 - dprintk(1,
66972 - KERN_ERR
66973 - "%s: find_zr36057() - no VFE found\n",
66974 - ZR_DEVNAME(zr));
66975 - goto zr_free_vfe;
66976 + /* reset JPEG codec */
66977 + jpeg_codec_sleep(zr, 1);
66978 + jpeg_codec_reset(zr);
66979 + /* video bus enabled */
66980 + /* display codec revision */
66981 + if (zr->card.video_codec != 0) {
66982 + master_codec = zoran_setup_videocodec(zr,
66983 + zr->card.video_codec);
66984 + if (!master_codec)
66985 + goto zr_unreg_i2c;
66986 + zr->codec = videocodec_attach(master_codec);
66987 + if (!zr->codec) {
66988 + dprintk(1,
66989 + KERN_ERR
66990 + "%s: find_zr36057() - no codec found\n",
66991 + ZR_DEVNAME(zr));
66992 + goto zr_free_codec;
66993 + }
66994 + if (zr->codec->type != zr->card.video_codec) {
66995 + dprintk(1,
66996 + KERN_ERR
66997 + "%s: find_zr36057() - wrong codec\n",
66998 + ZR_DEVNAME(zr));
66999 + goto zr_detach_codec;
67000 + }
67001 }
67002 - if (zr->vfe->type != zr->card.video_vfe) {
67003 - dprintk(1,
67004 - KERN_ERR
67005 - "%s: find_zr36057() = wrong VFE\n",
67006 - ZR_DEVNAME(zr));
67007 - goto zr_detach_vfe;
67008 + if (zr->card.video_vfe != 0) {
67009 + master_vfe = zoran_setup_videocodec(zr,
67010 + zr->card.video_vfe);
67011 + if (!master_vfe)
67012 + goto zr_detach_codec;
67013 + zr->vfe = videocodec_attach(master_vfe);
67014 + if (!zr->vfe) {
67015 + dprintk(1,
67016 + KERN_ERR
67017 + "%s: find_zr36057() - no VFE found\n",
67018 + ZR_DEVNAME(zr));
67019 + goto zr_free_vfe;
67020 + }
67021 + if (zr->vfe->type != zr->card.video_vfe) {
67022 + dprintk(1,
67023 + KERN_ERR
67024 + "%s: find_zr36057() = wrong VFE\n",
67025 + ZR_DEVNAME(zr));
67026 + goto zr_detach_vfe;
67027 + }
67028 }
67029 - }
67030 -
67031 - /* take care of Natoma chipset and a revision 1 zr36057 */
67032 - if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {
67033 - zr->jpg_buffers.need_contiguous = 1;
67034 - dprintk(1,
67035 - KERN_INFO
67036 - "%s: ZR36057/Natoma bug, max. buffer size is 128K\n",
67037 - ZR_DEVNAME(zr));
67038 - }
67039 + /* Success so keep the pci_dev referenced */
67040 + pci_dev_get(zr->pci_dev);
67041 + zoran[zoran_num++] = zr;
67042 + continue;
67043
67044 - if (zr36057_init(zr) < 0)
67045 - goto zr_detach_vfe;
67046 -
67047 - zoran_proc_init(zr);
67048 -
67049 - pci_set_drvdata(pdev, zr);
67050 -
67051 - return 0;
67052 -
67053 -zr_detach_vfe:
67054 - videocodec_detach(zr->vfe);
67055 -zr_free_vfe:
67056 - kfree(master_vfe);
67057 -zr_detach_codec:
67058 - videocodec_detach(zr->codec);
67059 -zr_free_codec:
67060 - kfree(master_codec);
67061 -zr_unreg_i2c:
67062 - zoran_unregister_i2c(zr);
67063 -zr_free_irq:
67064 - btwrite(0, ZR36057_SPGPPCR);
67065 - free_irq(zr->pci_dev->irq, zr);
67066 -zr_unmap:
67067 - iounmap(zr->zr36057_mem);
67068 -zr_free_mem:
67069 - kfree(zr);
67070 + // Init errors
67071 + zr_detach_vfe:
67072 + videocodec_detach(zr->vfe);
67073 + zr_free_vfe:
67074 + kfree(master_vfe);
67075 + zr_detach_codec:
67076 + videocodec_detach(zr->codec);
67077 + zr_free_codec:
67078 + kfree(master_codec);
67079 + zr_unreg_i2c:
67080 + zoran_unregister_i2c(zr);
67081 + zr_free_irq:
67082 + btwrite(0, ZR36057_SPGPPCR);
67083 + free_irq(zr->pci_dev->irq, zr);
67084 + zr_unmap:
67085 + iounmap(zr->zr36057_mem);
67086 + zr_free_mem:
67087 + kfree(zr);
67088 + continue;
67089 + }
67090 + if (dev) /* Clean up ref count on early exit */
67091 + pci_dev_put(dev);
67092
67093 - return -ENODEV;
67094 + if (zoran_num == 0) {
67095 + dprintk(1, KERN_INFO "No known MJPEG cards found.\n");
67096 + }
67097 + return zoran_num;
67098 }
67099
67100 -static struct pci_driver zoran_driver = {
67101 - .name = "zr36067",
67102 - .id_table = zr36067_pci_tbl,
67103 - .probe = zoran_probe,
67104 - .remove = zoran_remove,
67105 -};
67106 -
67107 -static int __init zoran_init(void)
67108 +static int __init
67109 +init_dc10_cards (void)
67110 {
67111 - int res;
67112 + int i;
67113
67114 + memset(zoran, 0, sizeof(zoran));
67115 printk(KERN_INFO "Zoran MJPEG board driver version %d.%d.%d\n",
67116 MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION);
67117
67118 + /* Look for cards */
67119 + if (find_zr36057() < 0) {
67120 + return -EIO;
67121 + }
67122 + if (zoran_num == 0)
67123 + return -ENODEV;
67124 + dprintk(1, KERN_INFO "%s: %d card(s) found\n", ZORAN_NAME,
67125 + zoran_num);
67126 /* check the parameters we have been given, adjust if necessary */
67127 if (v4l_nbufs < 2)
67128 v4l_nbufs = 2;
67129 @@ -1624,22 +1629,37 @@
67130 ZORAN_NAME);
67131 }
67132
67133 - res = pci_register_driver(&zoran_driver);
67134 - if (res) {
67135 - dprintk(1,
67136 - KERN_ERR
67137 - "%s: Unable to register ZR36057 driver\n",
67138 - ZORAN_NAME);
67139 - return res;
67140 + /* take care of Natoma chipset and a revision 1 zr36057 */
67141 + for (i = 0; i < zoran_num; i++) {
67142 + struct zoran *zr = zoran[i];
67143 +
67144 + if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {
67145 + zr->jpg_buffers.need_contiguous = 1;
67146 + dprintk(1,
67147 + KERN_INFO
67148 + "%s: ZR36057/Natoma bug, max. buffer size is 128K\n",
67149 + ZR_DEVNAME(zr));
67150 + }
67151 +
67152 + if (zr36057_init(zr) < 0) {
67153 + for (i = 0; i < zoran_num; i++)
67154 + zoran_release(zoran[i]);
67155 + return -EIO;
67156 + }
67157 + zoran_proc_init(zr);
67158 }
67159
67160 return 0;
67161 }
67162
67163 -static void __exit zoran_exit(void)
67164 +static void __exit
67165 +unload_dc10_cards (void)
67166 {
67167 - pci_unregister_driver(&zoran_driver);
67168 + int i;
67169 +
67170 + for (i = 0; i < zoran_num; i++)
67171 + zoran_release(zoran[i]);
67172 }
67173
67174 -module_init(zoran_init);
67175 -module_exit(zoran_exit);
67176 +module_init(init_dc10_cards);
67177 +module_exit(unload_dc10_cards);
67178 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/zoran/zoran_card.h linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran_card.h
67179 --- linux-2.6.29.owrt/drivers/media/video/zoran/zoran_card.h 2009-05-10 22:04:38.000000000 +0200
67180 +++ linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran_card.h 2009-05-10 23:48:28.000000000 +0200
67181 @@ -40,6 +40,8 @@
67182
67183 /* Anybody who uses more than four? */
67184 #define BUZ_MAX 4
67185 +extern int zoran_num;
67186 +extern struct zoran *zoran[BUZ_MAX];
67187
67188 extern struct video_device zoran_template;
67189
67190 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/zoran/zoran_driver.c linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran_driver.c
67191 --- linux-2.6.29.owrt/drivers/media/video/zoran/zoran_driver.c 2009-05-10 22:04:38.000000000 +0200
67192 +++ linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran_driver.c 2009-05-10 23:48:28.000000000 +0200
67193 @@ -1196,54 +1196,83 @@
67194 * Open a zoran card. Right now the flags stuff is just playing
67195 */
67196
67197 -static int zoran_open(struct file *file)
67198 +static int
67199 +zoran_open(struct file *file)
67200 {
67201 - struct zoran *zr = video_drvdata(file);
67202 + unsigned int minor = video_devdata(file)->minor;
67203 + struct zoran *zr = NULL;
67204 struct zoran_fh *fh;
67205 - int res, first_open = 0;
67206 -
67207 - dprintk(2, KERN_INFO "%s: zoran_open(%s, pid=[%d]), users(-)=%d\n",
67208 - ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user + 1);
67209 + int i, res, first_open = 0, have_module_locks = 0;
67210
67211 lock_kernel();
67212 + /* find the device */
67213 + for (i = 0; i < zoran_num; i++) {
67214 + if (zoran[i]->video_dev->minor == minor) {
67215 + zr = zoran[i];
67216 + break;
67217 + }
67218 + }
67219 +
67220 + if (!zr) {
67221 + dprintk(1, KERN_ERR "%s: device not found!\n", ZORAN_NAME);
67222 + res = -ENODEV;
67223 + goto open_unlock_and_return;
67224 + }
67225
67226 /* see fs/device.c - the kernel already locks during open(),
67227 * so locking ourselves only causes deadlocks */
67228 /*mutex_lock(&zr->resource_lock);*/
67229
67230 - if (zr->user >= 2048) {
67231 - dprintk(1, KERN_ERR "%s: too many users (%d) on device\n",
67232 - ZR_DEVNAME(zr), zr->user);
67233 - res = -EBUSY;
67234 - goto fail_unlock;
67235 - }
67236 -
67237 if (!zr->decoder) {
67238 dprintk(1,
67239 KERN_ERR "%s: no TV decoder loaded for device!\n",
67240 ZR_DEVNAME(zr));
67241 res = -EIO;
67242 - goto fail_unlock;
67243 + goto open_unlock_and_return;
67244 }
67245
67246 + /* try to grab a module lock */
67247 + if (!try_module_get(THIS_MODULE)) {
67248 + dprintk(1,
67249 + KERN_ERR
67250 + "%s: failed to acquire my own lock! PANIC!\n",
67251 + ZR_DEVNAME(zr));
67252 + res = -ENODEV;
67253 + goto open_unlock_and_return;
67254 + }
67255 if (!try_module_get(zr->decoder->driver->driver.owner)) {
67256 dprintk(1,
67257 KERN_ERR
67258 - "%s: failed to grab ownership of video decoder\n",
67259 + "%s: failed to grab ownership of i2c decoder\n",
67260 ZR_DEVNAME(zr));
67261 res = -EIO;
67262 - goto fail_unlock;
67263 + module_put(THIS_MODULE);
67264 + goto open_unlock_and_return;
67265 }
67266 if (zr->encoder &&
67267 !try_module_get(zr->encoder->driver->driver.owner)) {
67268 dprintk(1,
67269 KERN_ERR
67270 - "%s: failed to grab ownership of video encoder\n",
67271 + "%s: failed to grab ownership of i2c encoder\n",
67272 ZR_DEVNAME(zr));
67273 res = -EIO;
67274 - goto fail_decoder;
67275 + module_put(zr->decoder->driver->driver.owner);
67276 + module_put(THIS_MODULE);
67277 + goto open_unlock_and_return;
67278 + }
67279 +
67280 + have_module_locks = 1;
67281 +
67282 + if (zr->user >= 2048) {
67283 + dprintk(1, KERN_ERR "%s: too many users (%d) on device\n",
67284 + ZR_DEVNAME(zr), zr->user);
67285 + res = -EBUSY;
67286 + goto open_unlock_and_return;
67287 }
67288
67289 + dprintk(1, KERN_INFO "%s: zoran_open(%s, pid=[%d]), users(-)=%d\n",
67290 + ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user);
67291 +
67292 /* now, create the open()-specific file_ops struct */
67293 fh = kzalloc(sizeof(struct zoran_fh), GFP_KERNEL);
67294 if (!fh) {
67295 @@ -1252,7 +1281,7 @@
67296 "%s: zoran_open() - allocation of zoran_fh failed\n",
67297 ZR_DEVNAME(zr));
67298 res = -ENOMEM;
67299 - goto fail_encoder;
67300 + goto open_unlock_and_return;
67301 }
67302 /* used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows
67303 * on norm-change! */
67304 @@ -1263,8 +1292,9 @@
67305 KERN_ERR
67306 "%s: zoran_open() - allocation of overlay_mask failed\n",
67307 ZR_DEVNAME(zr));
67308 + kfree(fh);
67309 res = -ENOMEM;
67310 - goto fail_fh;
67311 + goto open_unlock_and_return;
67312 }
67313
67314 if (zr->user++ == 0)
67315 @@ -1289,18 +1319,21 @@
67316
67317 return 0;
67318
67319 -fail_fh:
67320 - kfree(fh);
67321 -fail_encoder:
67322 - if (zr->encoder)
67323 - module_put(zr->encoder->driver->driver.owner);
67324 -fail_decoder:
67325 - module_put(zr->decoder->driver->driver.owner);
67326 -fail_unlock:
67327 - unlock_kernel();
67328 +open_unlock_and_return:
67329 + /* if we grabbed locks, release them accordingly */
67330 + if (have_module_locks) {
67331 + module_put(zr->decoder->driver->driver.owner);
67332 + if (zr->encoder) {
67333 + module_put(zr->encoder->driver->driver.owner);
67334 + }
67335 + module_put(THIS_MODULE);
67336 + }
67337
67338 - dprintk(2, KERN_INFO "%s: open failed (%d), users(-)=%d\n",
67339 - ZR_DEVNAME(zr), res, zr->user);
67340 + /* if there's no device found, we didn't obtain the lock either */
67341 + if (zr) {
67342 + /*mutex_unlock(&zr->resource_lock);*/
67343 + }
67344 + unlock_kernel();
67345
67346 return res;
67347 }
67348 @@ -1311,8 +1344,8 @@
67349 struct zoran_fh *fh = file->private_data;
67350 struct zoran *zr = fh->zr;
67351
67352 - dprintk(2, KERN_INFO "%s: zoran_close(%s, pid=[%d]), users(+)=%d\n",
67353 - ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user - 1);
67354 + dprintk(1, KERN_INFO "%s: zoran_close(%s, pid=[%d]), users(+)=%d\n",
67355 + ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user);
67356
67357 /* kernel locks (fs/device.c), so don't do that ourselves
67358 * (prevents deadlocks) */
67359 @@ -1358,8 +1391,10 @@
67360
67361 /* release locks on the i2c modules */
67362 module_put(zr->decoder->driver->driver.owner);
67363 - if (zr->encoder)
67364 - module_put(zr->encoder->driver->driver.owner);
67365 + if (zr->encoder) {
67366 + module_put(zr->encoder->driver->driver.owner);
67367 + }
67368 + module_put(THIS_MODULE);
67369
67370 /*mutex_unlock(&zr->resource_lock);*/
67371
67372 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/media/video/zoran/zoran.h linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran.h
67373 --- linux-2.6.29.owrt/drivers/media/video/zoran/zoran.h 2009-05-10 22:04:38.000000000 +0200
67374 +++ linux-2.6.29-rc3.owrt/drivers/media/video/zoran/zoran.h 2009-05-10 23:48:28.000000000 +0200
67375 @@ -349,6 +349,7 @@
67376 u16 i2c_decoder, i2c_encoder; /* I2C types */
67377 u16 video_vfe, video_codec; /* videocodec types */
67378 u16 audio_chip; /* audio type */
67379 + u16 vendor_id, device_id; /* subsystem vendor/device ID */
67380
67381 int inputs; /* number of video inputs */
67382 struct input {
67383 @@ -400,6 +401,7 @@
67384 char name[32]; /* name of this device */
67385 struct pci_dev *pci_dev; /* PCI device */
67386 unsigned char revision; /* revision of zr36057 */
67387 + unsigned int zr36057_adr; /* bus address of IO mem returned by PCI BIOS */
67388 unsigned char __iomem *zr36057_mem;/* pointer to mapped IO memory */
67389
67390 spinlock_t spinlock; /* Spinlock */
67391 @@ -488,10 +490,16 @@
67392 wait_queue_head_t test_q;
67393 };
67394
67395 -/* There was something called _ALPHA_BUZ that used the PCI address instead of
67396 - * the kernel iomapped address for btread/btwrite. */
67397 +/*The following should be done in more portable way. It depends on define
67398 + of _ALPHA_BUZ in the Makefile.*/
67399 +
67400 +#ifdef _ALPHA_BUZ
67401 +#define btwrite(dat,adr) writel((dat), zr->zr36057_adr+(adr))
67402 +#define btread(adr) readl(zr->zr36057_adr+(adr))
67403 +#else
67404 #define btwrite(dat,adr) writel((dat), zr->zr36057_mem+(adr))
67405 #define btread(adr) readl(zr->zr36057_mem+(adr))
67406 +#endif
67407
67408 #define btand(dat,adr) btwrite((dat) & btread(adr), adr)
67409 #define btor(dat,adr) btwrite((dat) | btread(adr), adr)
67410 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/message/fusion/mptbase.c linux-2.6.29-rc3.owrt/drivers/message/fusion/mptbase.c
67411 --- linux-2.6.29.owrt/drivers/message/fusion/mptbase.c 2009-05-10 22:04:39.000000000 +0200
67412 +++ linux-2.6.29-rc3.owrt/drivers/message/fusion/mptbase.c 2009-05-10 23:48:28.000000000 +0200
67413 @@ -91,9 +91,9 @@
67414 controllers (default=0)");
67415
67416 static int mpt_msi_enable_sas;
67417 -module_param(mpt_msi_enable_sas, int, 0);
67418 +module_param(mpt_msi_enable_sas, int, 1);
67419 MODULE_PARM_DESC(mpt_msi_enable_sas, " Enable MSI Support for SAS \
67420 - controllers (default=0)");
67421 + controllers (default=1)");
67422
67423
67424 static int mpt_channel_mapping;
67425 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mfd/htc-egpio.c linux-2.6.29-rc3.owrt/drivers/mfd/htc-egpio.c
67426 --- linux-2.6.29.owrt/drivers/mfd/htc-egpio.c 2009-05-10 22:04:38.000000000 +0200
67427 +++ linux-2.6.29-rc3.owrt/drivers/mfd/htc-egpio.c 2009-05-10 23:48:28.000000000 +0200
67428 @@ -286,7 +286,7 @@
67429 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
67430 if (!res)
67431 goto fail;
67432 - ei->base_addr = ioremap_nocache(res->start, resource_size(res));
67433 + ei->base_addr = ioremap_nocache(res->start, res->end - res->start);
67434 if (!ei->base_addr)
67435 goto fail;
67436 pr_debug("EGPIO phys=%08x virt=%p\n", (u32)res->start, ei->base_addr);
67437 @@ -307,7 +307,7 @@
67438
67439 ei->nchips = pdata->num_chips;
67440 ei->chip = kzalloc(sizeof(struct egpio_chip) * ei->nchips, GFP_KERNEL);
67441 - if (!ei->chip) {
67442 + if (!ei) {
67443 ret = -ENOMEM;
67444 goto fail;
67445 }
67446 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mfd/pcf50633-core.c linux-2.6.29-rc3.owrt/drivers/mfd/pcf50633-core.c
67447 --- linux-2.6.29.owrt/drivers/mfd/pcf50633-core.c 2009-05-10 22:04:38.000000000 +0200
67448 +++ linux-2.6.29-rc3.owrt/drivers/mfd/pcf50633-core.c 2009-05-10 23:48:28.000000000 +0200
67449 @@ -626,6 +626,7 @@
67450 }
67451
67452 if (client->irq) {
67453 + set_irq_handler(client->irq, handle_level_irq);
67454 ret = request_irq(client->irq, pcf50633_irq,
67455 IRQF_TRIGGER_LOW, "pcf50633", pcf);
67456
67457 @@ -678,7 +679,6 @@
67458
67459 static struct i2c_device_id pcf50633_id_table[] = {
67460 {"pcf50633", 0x73},
67461 - {/* end of list */}
67462 };
67463
67464 static struct i2c_driver pcf50633_driver = {
67465 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mfd/sm501.c linux-2.6.29-rc3.owrt/drivers/mfd/sm501.c
67466 --- linux-2.6.29.owrt/drivers/mfd/sm501.c 2009-05-10 22:04:38.000000000 +0200
67467 +++ linux-2.6.29-rc3.owrt/drivers/mfd/sm501.c 2009-05-10 23:48:28.000000000 +0200
67468 @@ -1050,7 +1050,7 @@
67469 return gpiochip_add(gchip);
67470 }
67471
67472 -static int __devinit sm501_register_gpio(struct sm501_devdata *sm)
67473 +static int sm501_register_gpio(struct sm501_devdata *sm)
67474 {
67475 struct sm501_gpio *gpio = &sm->gpio;
67476 resource_size_t iobase = sm->io_res->start + SM501_GPIO;
67477 @@ -1321,7 +1321,7 @@
67478 * Common init code for an SM501
67479 */
67480
67481 -static int __devinit sm501_init_dev(struct sm501_devdata *sm)
67482 +static int sm501_init_dev(struct sm501_devdata *sm)
67483 {
67484 struct sm501_initdata *idata;
67485 struct sm501_platdata *pdata;
67486 @@ -1397,7 +1397,7 @@
67487 return 0;
67488 }
67489
67490 -static int __devinit sm501_plat_probe(struct platform_device *dev)
67491 +static int sm501_plat_probe(struct platform_device *dev)
67492 {
67493 struct sm501_devdata *sm;
67494 int ret;
67495 @@ -1586,8 +1586,8 @@
67496 .gpio_base = -1,
67497 };
67498
67499 -static int __devinit sm501_pci_probe(struct pci_dev *dev,
67500 - const struct pci_device_id *id)
67501 +static int sm501_pci_probe(struct pci_dev *dev,
67502 + const struct pci_device_id *id)
67503 {
67504 struct sm501_devdata *sm;
67505 int err;
67506 @@ -1693,7 +1693,7 @@
67507 sm501_gpio_remove(sm);
67508 }
67509
67510 -static void __devexit sm501_pci_remove(struct pci_dev *dev)
67511 +static void sm501_pci_remove(struct pci_dev *dev)
67512 {
67513 struct sm501_devdata *sm = pci_get_drvdata(dev);
67514
67515 @@ -1727,16 +1727,16 @@
67516
67517 MODULE_DEVICE_TABLE(pci, sm501_pci_tbl);
67518
67519 -static struct pci_driver sm501_pci_driver = {
67520 +static struct pci_driver sm501_pci_drv = {
67521 .name = "sm501",
67522 .id_table = sm501_pci_tbl,
67523 .probe = sm501_pci_probe,
67524 - .remove = __devexit_p(sm501_pci_remove),
67525 + .remove = sm501_pci_remove,
67526 };
67527
67528 MODULE_ALIAS("platform:sm501");
67529
67530 -static struct platform_driver sm501_plat_driver = {
67531 +static struct platform_driver sm501_plat_drv = {
67532 .driver = {
67533 .name = "sm501",
67534 .owner = THIS_MODULE,
67535 @@ -1749,14 +1749,14 @@
67536
67537 static int __init sm501_base_init(void)
67538 {
67539 - platform_driver_register(&sm501_plat_driver);
67540 - return pci_register_driver(&sm501_pci_driver);
67541 + platform_driver_register(&sm501_plat_drv);
67542 + return pci_register_driver(&sm501_pci_drv);
67543 }
67544
67545 static void __exit sm501_base_exit(void)
67546 {
67547 - platform_driver_unregister(&sm501_plat_driver);
67548 - pci_unregister_driver(&sm501_pci_driver);
67549 + platform_driver_unregister(&sm501_plat_drv);
67550 + pci_unregister_driver(&sm501_pci_drv);
67551 }
67552
67553 module_init(sm501_base_init);
67554 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mfd/twl4030-core.c linux-2.6.29-rc3.owrt/drivers/mfd/twl4030-core.c
67555 --- linux-2.6.29.owrt/drivers/mfd/twl4030-core.c 2009-05-10 22:04:38.000000000 +0200
67556 +++ linux-2.6.29-rc3.owrt/drivers/mfd/twl4030-core.c 2009-05-10 23:48:28.000000000 +0200
67557 @@ -38,7 +38,7 @@
67558 #include <linux/i2c.h>
67559 #include <linux/i2c/twl4030.h>
67560
67561 -#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
67562 +#ifdef CONFIG_ARM
67563 #include <mach/cpu.h>
67564 #endif
67565
67566 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mfd/wm8350-core.c linux-2.6.29-rc3.owrt/drivers/mfd/wm8350-core.c
67567 --- linux-2.6.29.owrt/drivers/mfd/wm8350-core.c 2009-05-10 22:04:38.000000000 +0200
67568 +++ linux-2.6.29-rc3.owrt/drivers/mfd/wm8350-core.c 2009-05-10 23:48:28.000000000 +0200
67569 @@ -1111,7 +1111,7 @@
67570 do {
67571 schedule_timeout_interruptible(1);
67572 reg = wm8350_reg_read(wm8350, WM8350_DIGITISER_CONTROL_1);
67573 - } while (--tries && (reg & WM8350_AUXADC_POLL));
67574 + } while (tries-- && (reg & WM8350_AUXADC_POLL));
67575
67576 if (!tries)
67577 dev_err(wm8350->dev, "adc chn %d read timeout\n", channel);
67578 @@ -1297,29 +1297,14 @@
67579 int wm8350_device_init(struct wm8350 *wm8350, int irq,
67580 struct wm8350_platform_data *pdata)
67581 {
67582 - int ret;
67583 + int ret = -EINVAL;
67584 u16 id1, id2, mask_rev;
67585 u16 cust_id, mode, chip_rev;
67586
67587 /* get WM8350 revision and config mode */
67588 - ret = wm8350->read_dev(wm8350, WM8350_RESET_ID, sizeof(id1), &id1);
67589 - if (ret != 0) {
67590 - dev_err(wm8350->dev, "Failed to read ID: %d\n", ret);
67591 - goto err;
67592 - }
67593 -
67594 - ret = wm8350->read_dev(wm8350, WM8350_ID, sizeof(id2), &id2);
67595 - if (ret != 0) {
67596 - dev_err(wm8350->dev, "Failed to read ID: %d\n", ret);
67597 - goto err;
67598 - }
67599 -
67600 - ret = wm8350->read_dev(wm8350, WM8350_REVISION, sizeof(mask_rev),
67601 - &mask_rev);
67602 - if (ret != 0) {
67603 - dev_err(wm8350->dev, "Failed to read revision: %d\n", ret);
67604 - goto err;
67605 - }
67606 + wm8350->read_dev(wm8350, WM8350_RESET_ID, sizeof(id1), &id1);
67607 + wm8350->read_dev(wm8350, WM8350_ID, sizeof(id2), &id2);
67608 + wm8350->read_dev(wm8350, WM8350_REVISION, sizeof(mask_rev), &mask_rev);
67609
67610 id1 = be16_to_cpu(id1);
67611 id2 = be16_to_cpu(id2);
67612 @@ -1383,11 +1368,6 @@
67613 wm8350->power.rev_g_coeff = 1;
67614 break;
67615
67616 - case 1:
67617 - dev_info(wm8350->dev, "WM8351 Rev B\n");
67618 - wm8350->power.rev_g_coeff = 1;
67619 - break;
67620 -
67621 default:
67622 dev_err(wm8350->dev, "Unknown WM8351 CHIP_REV\n");
67623 ret = -ENODEV;
67624 @@ -1424,12 +1404,14 @@
67625 return ret;
67626 }
67627
67628 - wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0xFFFF);
67629 - wm8350_reg_write(wm8350, WM8350_INT_STATUS_1_MASK, 0xFFFF);
67630 - wm8350_reg_write(wm8350, WM8350_INT_STATUS_2_MASK, 0xFFFF);
67631 - wm8350_reg_write(wm8350, WM8350_UNDER_VOLTAGE_INT_STATUS_MASK, 0xFFFF);
67632 - wm8350_reg_write(wm8350, WM8350_GPIO_INT_STATUS_MASK, 0xFFFF);
67633 - wm8350_reg_write(wm8350, WM8350_COMPARATOR_INT_STATUS_MASK, 0xFFFF);
67634 + if (pdata && pdata->init) {
67635 + ret = pdata->init(wm8350);
67636 + if (ret != 0) {
67637 + dev_err(wm8350->dev, "Platform init() failed: %d\n",
67638 + ret);
67639 + goto err;
67640 + }
67641 + }
67642
67643 mutex_init(&wm8350->auxadc_mutex);
67644 mutex_init(&wm8350->irq_mutex);
67645 @@ -1448,15 +1430,6 @@
67646 }
67647 wm8350->chip_irq = irq;
67648
67649 - if (pdata && pdata->init) {
67650 - ret = pdata->init(wm8350);
67651 - if (ret != 0) {
67652 - dev_err(wm8350->dev, "Platform init() failed: %d\n",
67653 - ret);
67654 - goto err;
67655 - }
67656 - }
67657 -
67658 wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0x0);
67659
67660 wm8350_client_dev_register(wm8350, "wm8350-codec",
67661 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mfd/wm8350-regmap.c linux-2.6.29-rc3.owrt/drivers/mfd/wm8350-regmap.c
67662 --- linux-2.6.29.owrt/drivers/mfd/wm8350-regmap.c 2009-05-10 22:04:38.000000000 +0200
67663 +++ linux-2.6.29-rc3.owrt/drivers/mfd/wm8350-regmap.c 2009-05-10 23:48:28.000000000 +0200
67664 @@ -3188,7 +3188,7 @@
67665 { 0x7CFF, 0x0C00, 0x7FFF }, /* R1 - ID */
67666 { 0x0000, 0x0000, 0x0000 }, /* R2 */
67667 { 0xBE3B, 0xBE3B, 0x8000 }, /* R3 - System Control 1 */
67668 - { 0xFEF7, 0xFEF7, 0xF800 }, /* R4 - System Control 2 */
67669 + { 0xFCF7, 0xFCF7, 0xF800 }, /* R4 - System Control 2 */
67670 { 0x80FF, 0x80FF, 0x8000 }, /* R5 - System Hibernate */
67671 { 0xFB0E, 0xFB0E, 0x0000 }, /* R6 - Interface Control */
67672 { 0x0000, 0x0000, 0x0000 }, /* R7 */
67673 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/atmel-ssc.c linux-2.6.29-rc3.owrt/drivers/misc/atmel-ssc.c
67674 --- linux-2.6.29.owrt/drivers/misc/atmel-ssc.c 2009-05-10 22:04:38.000000000 +0200
67675 +++ linux-2.6.29-rc3.owrt/drivers/misc/atmel-ssc.c 2009-05-10 23:48:28.000000000 +0200
67676 @@ -35,7 +35,7 @@
67677
67678 if (!ssc_valid) {
67679 spin_unlock(&user_lock);
67680 - pr_err("ssc: ssc%d platform device is missing\n", ssc_num);
67681 + dev_dbg(&ssc->pdev->dev, "could not find requested device\n");
67682 return ERR_PTR(-ENODEV);
67683 }
67684
67685 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/hpilo.c linux-2.6.29-rc3.owrt/drivers/misc/hpilo.c
67686 --- linux-2.6.29.owrt/drivers/misc/hpilo.c 2009-05-10 22:04:38.000000000 +0200
67687 +++ linux-2.6.29-rc3.owrt/drivers/misc/hpilo.c 2009-05-10 23:48:28.000000000 +0200
67688 @@ -207,7 +207,7 @@
67689 &device_ccb->recv_ctrl);
67690
67691 /* give iLO some time to process stop request */
67692 - for (retries = MAX_WAIT; retries > 0; retries--) {
67693 + for (retries = 1000; retries > 0; retries--) {
67694 doorbell_set(driver_ccb);
67695 udelay(1);
67696 if (!(ioread32(&device_ccb->send_ctrl) & (1 << CTRL_BITPOS_A))
67697 @@ -309,7 +309,7 @@
67698 doorbell_clr(driver_ccb);
67699
67700 /* make sure iLO is really handling requests */
67701 - for (i = MAX_WAIT; i > 0; i--) {
67702 + for (i = 1000; i > 0; i--) {
67703 if (ilo_pkt_dequeue(hw, driver_ccb, SENDQ, &pkt_id, NULL, NULL))
67704 break;
67705 udelay(1);
67706 @@ -326,7 +326,7 @@
67707
67708 return 0;
67709 free:
67710 - ilo_ccb_close(pdev, data);
67711 + pci_free_consistent(pdev, data->dma_size, data->dma_va, data->dma_pa);
67712 out:
67713 return error;
67714 }
67715 @@ -710,7 +710,6 @@
67716
67717 static struct pci_device_id ilo_devices[] = {
67718 { PCI_DEVICE(PCI_VENDOR_ID_COMPAQ, 0xB204) },
67719 - { PCI_DEVICE(PCI_VENDOR_ID_HP, 0x3307) },
67720 { }
67721 };
67722 MODULE_DEVICE_TABLE(pci, ilo_devices);
67723 @@ -759,7 +758,7 @@
67724 class_destroy(ilo_class);
67725 }
67726
67727 -MODULE_VERSION("1.0");
67728 +MODULE_VERSION("0.05");
67729 MODULE_ALIAS(ILO_NAME);
67730 MODULE_DESCRIPTION(ILO_NAME);
67731 MODULE_AUTHOR("David Altobelli <david.altobelli@hp.com>");
67732 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/hpilo.h linux-2.6.29-rc3.owrt/drivers/misc/hpilo.h
67733 --- linux-2.6.29.owrt/drivers/misc/hpilo.h 2009-05-10 22:04:38.000000000 +0200
67734 +++ linux-2.6.29-rc3.owrt/drivers/misc/hpilo.h 2009-05-10 23:48:28.000000000 +0200
67735 @@ -19,8 +19,6 @@
67736 #define MAX_ILO_DEV 1
67737 /* max number of files */
67738 #define MAX_OPEN (MAX_CCB * MAX_ILO_DEV)
67739 -/* spin counter for open/close delay */
67740 -#define MAX_WAIT 10000
67741
67742 /*
67743 * Per device, used to track global memory allocations.
67744 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/Kconfig linux-2.6.29-rc3.owrt/drivers/misc/Kconfig
67745 --- linux-2.6.29.owrt/drivers/misc/Kconfig 2009-05-10 22:04:38.000000000 +0200
67746 +++ linux-2.6.29-rc3.owrt/drivers/misc/Kconfig 2009-05-10 23:48:28.000000000 +0200
67747 @@ -217,7 +217,6 @@
67748 depends on EXPERIMENTAL
67749 depends on BACKLIGHT_CLASS_DEVICE
67750 depends on RFKILL
67751 - depends on POWER_SUPPLY
67752 default n
67753 ---help---
67754 This driver adds support for rfkill and backlight control to Dell
67755 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc_channel.c linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc_channel.c
67756 --- linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc_channel.c 2009-05-10 22:04:38.000000000 +0200
67757 +++ linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc_channel.c 2009-05-10 23:48:28.000000000 +0200
67758 @@ -49,6 +49,9 @@
67759
67760 if (ch->flags & (XPC_C_CONNECTED | XPC_C_DISCONNECTING))
67761 return;
67762 +
67763 + DBUG_ON(ch->local_msgqueue == NULL);
67764 + DBUG_ON(ch->remote_msgqueue == NULL);
67765 }
67766
67767 if (!(ch->flags & XPC_C_OPENREPLY)) {
67768 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc.h linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc.h
67769 --- linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc.h 2009-05-10 22:04:38.000000000 +0200
67770 +++ linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc.h 2009-05-10 23:48:28.000000000 +0200
67771 @@ -3,7 +3,7 @@
67772 * License. See the file "COPYING" in the main directory of this archive
67773 * for more details.
67774 *
67775 - * Copyright (c) 2004-2009 Silicon Graphics, Inc. All Rights Reserved.
67776 + * Copyright (c) 2004-2008 Silicon Graphics, Inc. All Rights Reserved.
67777 */
67778
67779 /*
67780 @@ -514,8 +514,7 @@
67781 /* partition's notify mq */
67782
67783 struct xpc_send_msg_slot_uv *send_msg_slots;
67784 - void *recv_msg_slots; /* each slot will hold a xpc_notify_mq_msg_uv */
67785 - /* structure plus the user's payload */
67786 + struct xpc_notify_mq_msg_uv *recv_msg_slots;
67787
67788 struct xpc_fifo_head_uv msg_slot_free_list;
67789 struct xpc_fifo_head_uv recv_msg_list; /* deliverable payloads */
67790 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc_sn2.c linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc_sn2.c
67791 --- linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc_sn2.c 2009-05-10 22:04:38.000000000 +0200
67792 +++ linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc_sn2.c 2009-05-10 23:48:28.000000000 +0200
67793 @@ -1106,6 +1106,8 @@
67794 int n_IRQs_expected;
67795 int n_IRQs_detected;
67796
67797 + DBUG_ON(xpc_activate_IRQ_rcvd == 0);
67798 +
67799 spin_lock_irqsave(&xpc_activate_IRQ_rcvd_lock, irq_flags);
67800 n_IRQs_expected = xpc_activate_IRQ_rcvd;
67801 xpc_activate_IRQ_rcvd = 0;
67802 @@ -1724,7 +1726,6 @@
67803 msg = (struct xpc_msg_sn2 *)((u64)ch_sn2->local_msgqueue +
67804 (get % ch->local_nentries) *
67805 ch->entry_size);
67806 - DBUG_ON(!(msg->flags & XPC_M_SN2_READY));
67807 msg->flags = 0;
67808 } while (++get < ch_sn2->remote_GP.get);
67809 }
67810 @@ -1739,18 +1740,11 @@
67811 struct xpc_msg_sn2 *msg;
67812 s64 put;
67813
67814 - /* flags are zeroed when the buffer is allocated */
67815 - if (ch_sn2->remote_GP.put < ch->remote_nentries)
67816 - return;
67817 -
67818 - put = max(ch_sn2->w_remote_GP.put, ch->remote_nentries);
67819 + put = ch_sn2->w_remote_GP.put;
67820 do {
67821 msg = (struct xpc_msg_sn2 *)((u64)ch_sn2->remote_msgqueue +
67822 (put % ch->remote_nentries) *
67823 ch->entry_size);
67824 - DBUG_ON(!(msg->flags & XPC_M_SN2_READY));
67825 - DBUG_ON(!(msg->flags & XPC_M_SN2_DONE));
67826 - DBUG_ON(msg->number != put - ch->remote_nentries);
67827 msg->flags = 0;
67828 } while (++put < ch_sn2->remote_GP.put);
67829 }
67830 @@ -1842,7 +1836,6 @@
67831 */
67832 xpc_clear_remote_msgqueue_flags_sn2(ch);
67833
67834 - smp_wmb(); /* ensure flags have been cleared before bte_copy */
67835 ch_sn2->w_remote_GP.put = ch_sn2->remote_GP.put;
67836
67837 dev_dbg(xpc_chan, "w_remote_GP.put changed to %ld, partid=%d, "
67838 @@ -1941,7 +1934,7 @@
67839 break;
67840
67841 get = ch_sn2->w_local_GP.get;
67842 - smp_rmb(); /* guarantee that .get loads before .put */
67843 + rmb(); /* guarantee that .get loads before .put */
67844 if (get == ch_sn2->w_remote_GP.put)
67845 break;
67846
67847 @@ -1963,13 +1956,11 @@
67848
67849 msg = xpc_pull_remote_msg_sn2(ch, get);
67850
67851 - if (msg != NULL) {
67852 - DBUG_ON(msg->number != get);
67853 - DBUG_ON(msg->flags & XPC_M_SN2_DONE);
67854 - DBUG_ON(!(msg->flags & XPC_M_SN2_READY));
67855 + DBUG_ON(msg != NULL && msg->number != get);
67856 + DBUG_ON(msg != NULL && (msg->flags & XPC_M_SN2_DONE));
67857 + DBUG_ON(msg != NULL && !(msg->flags & XPC_M_SN2_READY));
67858
67859 - payload = &msg->payload;
67860 - }
67861 + payload = &msg->payload;
67862 break;
67863 }
67864
67865 @@ -2062,7 +2053,7 @@
67866 while (1) {
67867
67868 put = ch_sn2->w_local_GP.put;
67869 - smp_rmb(); /* guarantee that .put loads before .get */
67870 + rmb(); /* guarantee that .put loads before .get */
67871 if (put - ch_sn2->w_remote_GP.get < ch->local_nentries) {
67872
67873 /* There are available message entries. We need to try
67874 @@ -2195,7 +2186,7 @@
67875 * The preceding store of msg->flags must occur before the following
67876 * load of local_GP->put.
67877 */
67878 - smp_mb();
67879 + mb();
67880
67881 /* see if the message is next in line to be sent, if so send it */
67882
67883 @@ -2286,9 +2277,8 @@
67884 dev_dbg(xpc_chan, "msg=0x%p, msg_number=%ld, partid=%d, channel=%d\n",
67885 (void *)msg, msg_number, ch->partid, ch->number);
67886
67887 - DBUG_ON((((u64)msg - (u64)ch->sn.sn2.remote_msgqueue) / ch->entry_size) !=
67888 + DBUG_ON((((u64)msg - (u64)ch->remote_msgqueue) / ch->entry_size) !=
67889 msg_number % ch->remote_nentries);
67890 - DBUG_ON(!(msg->flags & XPC_M_SN2_READY));
67891 DBUG_ON(msg->flags & XPC_M_SN2_DONE);
67892
67893 msg->flags |= XPC_M_SN2_DONE;
67894 @@ -2297,7 +2287,7 @@
67895 * The preceding store of msg->flags must occur before the following
67896 * load of local_GP->get.
67897 */
67898 - smp_mb();
67899 + mb();
67900
67901 /*
67902 * See if this message is next in line to be acknowledged as having
67903 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc_uv.c linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc_uv.c
67904 --- linux-2.6.29.owrt/drivers/misc/sgi-xp/xpc_uv.c 2009-05-10 22:04:38.000000000 +0200
67905 +++ linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpc_uv.c 2009-05-10 23:48:28.000000000 +0200
67906 @@ -3,7 +3,7 @@
67907 * License. See the file "COPYING" in the main directory of this archive
67908 * for more details.
67909 *
67910 - * Copyright (c) 2008-2009 Silicon Graphics, Inc. All Rights Reserved.
67911 + * Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved.
67912 */
67913
67914 /*
67915 @@ -1010,8 +1010,8 @@
67916 continue;
67917
67918 for (entry = 0; entry < nentries; entry++) {
67919 - msg_slot = ch_uv->recv_msg_slots +
67920 - entry * ch->entry_size;
67921 + msg_slot = ch_uv->recv_msg_slots + entry *
67922 + ch->entry_size;
67923
67924 msg_slot->hdr.msg_slot_number = entry;
67925 }
67926 @@ -1308,8 +1308,9 @@
67927 /* we're dealing with a normal message sent via the notify_mq */
67928 ch_uv = &ch->sn.uv;
67929
67930 - msg_slot = ch_uv->recv_msg_slots +
67931 - (msg->hdr.msg_slot_number % ch->remote_nentries) * ch->entry_size;
67932 + msg_slot = (struct xpc_notify_mq_msg_uv *)((u64)ch_uv->recv_msg_slots +
67933 + (msg->hdr.msg_slot_number % ch->remote_nentries) *
67934 + ch->entry_size);
67935
67936 BUG_ON(msg->hdr.msg_slot_number != msg_slot->hdr.msg_slot_number);
67937 BUG_ON(msg_slot->hdr.size != 0);
67938 @@ -1422,7 +1423,7 @@
67939 atomic_inc(&ch->n_to_notify);
67940
67941 msg_slot->key = key;
67942 - smp_wmb(); /* a non-NULL func must hit memory after the key */
67943 + wmb(); /* a non-NULL func must hit memory after the key */
67944 msg_slot->func = func;
67945
67946 if (ch->flags & XPC_C_DISCONNECTING) {
67947 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/misc/sgi-xp/xpnet.c linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpnet.c
67948 --- linux-2.6.29.owrt/drivers/misc/sgi-xp/xpnet.c 2009-05-10 22:04:38.000000000 +0200
67949 +++ linux-2.6.29-rc3.owrt/drivers/misc/sgi-xp/xpnet.c 2009-05-10 23:48:28.000000000 +0200
67950 @@ -3,7 +3,7 @@
67951 * License. See the file "COPYING" in the main directory of this archive
67952 * for more details.
67953 *
67954 - * Copyright (C) 1999-2009 Silicon Graphics, Inc. All rights reserved.
67955 + * Copyright (C) 1999-2008 Silicon Graphics, Inc. All rights reserved.
67956 */
67957
67958 /*
67959 @@ -551,7 +551,6 @@
67960
67961 netif_carrier_off(xpnet_device);
67962
67963 - xpnet_device->netdev_ops = &xpnet_netdev_ops;
67964 xpnet_device->mtu = XPNET_DEF_MTU;
67965
67966 /*
67967 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/card/block.c linux-2.6.29-rc3.owrt/drivers/mmc/card/block.c
67968 --- linux-2.6.29.owrt/drivers/mmc/card/block.c 2009-05-10 22:04:38.000000000 +0200
67969 +++ linux-2.6.29-rc3.owrt/drivers/mmc/card/block.c 2009-05-10 23:48:28.000000000 +0200
67970 @@ -584,7 +584,7 @@
67971 if (err)
67972 goto out;
67973
67974 - string_get_size((u64)get_capacity(md->disk) << 9, STRING_UNITS_2,
67975 + string_get_size(get_capacity(md->disk) << 9, STRING_UNITS_2,
67976 cap_str, sizeof(cap_str));
67977 printk(KERN_INFO "%s: %s %s %s %s\n",
67978 md->disk->disk_name, mmc_card_id(card), mmc_card_name(card),
67979 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/card/mmc_test.c linux-2.6.29-rc3.owrt/drivers/mmc/card/mmc_test.c
67980 --- linux-2.6.29.owrt/drivers/mmc/card/mmc_test.c 2009-05-10 22:04:38.000000000 +0200
67981 +++ linux-2.6.29-rc3.owrt/drivers/mmc/card/mmc_test.c 2009-05-10 23:48:28.000000000 +0200
67982 @@ -494,7 +494,7 @@
67983
67984 sg_init_one(&sg, test->buffer, 512);
67985
67986 - ret = mmc_test_simple_transfer(test, &sg, 1, 0, 1, 512, 0);
67987 + ret = mmc_test_simple_transfer(test, &sg, 1, 0, 1, 512, 1);
67988 if (ret)
67989 return ret;
67990
67991 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/core/mmc_ops.c linux-2.6.29-rc3.owrt/drivers/mmc/core/mmc_ops.c
67992 --- linux-2.6.29.owrt/drivers/mmc/core/mmc_ops.c 2009-05-10 22:04:38.000000000 +0200
67993 +++ linux-2.6.29-rc3.owrt/drivers/mmc/core/mmc_ops.c 2009-05-10 23:48:28.000000000 +0200
67994 @@ -248,15 +248,12 @@
67995
67996 sg_init_one(&sg, data_buf, len);
67997
67998 - if (opcode == MMC_SEND_CSD || opcode == MMC_SEND_CID) {
67999 - /*
68000 - * The spec states that CSR and CID accesses have a timeout
68001 - * of 64 clock cycles.
68002 - */
68003 - data.timeout_ns = 0;
68004 - data.timeout_clks = 64;
68005 - } else
68006 - mmc_set_data_timeout(&data, card);
68007 + /*
68008 + * The spec states that CSR and CID accesses have a timeout
68009 + * of 64 clock cycles.
68010 + */
68011 + data.timeout_ns = 0;
68012 + data.timeout_clks = 64;
68013
68014 mmc_wait_for_req(host, &mrq);
68015
68016 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/atmel-mci.c linux-2.6.29-rc3.owrt/drivers/mmc/host/atmel-mci.c
68017 --- linux-2.6.29.owrt/drivers/mmc/host/atmel-mci.c 2009-05-10 22:04:38.000000000 +0200
68018 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/atmel-mci.c 2009-05-10 23:48:28.000000000 +0200
68019 @@ -1548,10 +1548,9 @@
68020 {
68021 struct dw_dma_slave *dws = slave;
68022
68023 - if (dws->dma_dev == chan->device->dev) {
68024 - chan->private = dws;
68025 + if (dws->dma_dev == chan->device->dev)
68026 return true;
68027 - } else
68028 + else
68029 return false;
68030 }
68031 #endif
68032 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/Kconfig linux-2.6.29-rc3.owrt/drivers/mmc/host/Kconfig
68033 --- linux-2.6.29.owrt/drivers/mmc/host/Kconfig 2009-05-10 22:04:38.000000000 +0200
68034 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/Kconfig 2009-05-10 23:48:28.000000000 +0200
68035 @@ -145,16 +145,6 @@
68036
68037 If unsure, say N.
68038
68039 -config MMC_MXC
68040 - tristate "Freescale i.MX2/3 Multimedia Card Interface support"
68041 - depends on ARCH_MXC
68042 - help
68043 - This selects the Freescale i.MX2/3 Multimedia card Interface.
68044 - If you have a i.MX platform with a Multimedia Card slot,
68045 - say Y or M here.
68046 -
68047 - If unsure, say N.
68048 -
68049 config MMC_TIFM_SD
68050 tristate "TI Flash Media MMC/SD Interface support (EXPERIMENTAL)"
68051 depends on EXPERIMENTAL && PCI
68052 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/Makefile linux-2.6.29-rc3.owrt/drivers/mmc/host/Makefile
68053 --- linux-2.6.29.owrt/drivers/mmc/host/Makefile 2009-05-10 22:04:38.000000000 +0200
68054 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/Makefile 2009-05-10 23:48:28.000000000 +0200
68055 @@ -9,7 +9,6 @@
68056 obj-$(CONFIG_MMC_ARMMMCI) += mmci.o
68057 obj-$(CONFIG_MMC_PXA) += pxamci.o
68058 obj-$(CONFIG_MMC_IMX) += imxmmc.o
68059 -obj-$(CONFIG_MMC_MXC) += mxcmmc.o
68060 obj-$(CONFIG_MMC_SDHCI) += sdhci.o
68061 obj-$(CONFIG_MMC_SDHCI_PCI) += sdhci-pci.o
68062 obj-$(CONFIG_MMC_RICOH_MMC) += ricoh_mmc.o
68063 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/mmci.c linux-2.6.29-rc3.owrt/drivers/mmc/host/mmci.c
68064 --- linux-2.6.29.owrt/drivers/mmc/host/mmci.c 2009-05-10 22:04:38.000000000 +0200
68065 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/mmci.c 2009-05-10 23:48:28.000000000 +0200
68066 @@ -430,8 +430,6 @@
68067 clk = 255;
68068 host->cclk = host->mclk / (2 * (clk + 1));
68069 }
68070 - if (host->hw_designer == 0x80)
68071 - clk |= MCI_FCEN; /* Bug fix in ST IP block */
68072 clk |= MCI_CLK_ENABLE;
68073 }
68074
68075 @@ -442,27 +440,15 @@
68076 case MMC_POWER_OFF:
68077 break;
68078 case MMC_POWER_UP:
68079 - /* The ST version does not have this, fall through to POWER_ON */
68080 - if (host->hw_designer != 0x80) {
68081 - pwr |= MCI_PWR_UP;
68082 - break;
68083 - }
68084 + pwr |= MCI_PWR_UP;
68085 + break;
68086 case MMC_POWER_ON:
68087 pwr |= MCI_PWR_ON;
68088 break;
68089 }
68090
68091 - if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN) {
68092 - if (host->hw_designer != 0x80)
68093 - pwr |= MCI_ROD;
68094 - else {
68095 - /*
68096 - * The ST Micro variant use the ROD bit for something
68097 - * else and only has OD (Open Drain).
68098 - */
68099 - pwr |= MCI_OD;
68100 - }
68101 - }
68102 + if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN)
68103 + pwr |= MCI_ROD;
68104
68105 writel(clk, host->base + MMCICLOCK);
68106
68107 @@ -514,12 +500,6 @@
68108 }
68109
68110 host = mmc_priv(mmc);
68111 - /* Bits 12 thru 19 is the designer */
68112 - host->hw_designer = (dev->periphid >> 12) & 0xff;
68113 - /* Bits 20 thru 23 is the revison */
68114 - host->hw_revision = (dev->periphid >> 20) & 0xf;
68115 - DBG(host, "designer ID = 0x%02x\n", host->hw_designer);
68116 - DBG(host, "revision = 0x%01x\n", host->hw_revision);
68117 host->clk = clk_get(&dev->dev, NULL);
68118 if (IS_ERR(host->clk)) {
68119 ret = PTR_ERR(host->clk);
68120 @@ -713,15 +693,6 @@
68121 .id = 0x00041181,
68122 .mask = 0x000fffff,
68123 },
68124 - /* ST Micro variants */
68125 - {
68126 - .id = 0x00180180,
68127 - .mask = 0x00ffffff,
68128 - },
68129 - {
68130 - .id = 0x00280180,
68131 - .mask = 0x00ffffff,
68132 - },
68133 { 0, 0 },
68134 };
68135
68136 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/mmci.h linux-2.6.29-rc3.owrt/drivers/mmc/host/mmci.h
68137 --- linux-2.6.29.owrt/drivers/mmc/host/mmci.h 2009-05-10 22:04:38.000000000 +0200
68138 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/mmci.h 2009-05-10 23:48:28.000000000 +0200
68139 @@ -11,23 +11,13 @@
68140 #define MCI_PWR_OFF 0x00
68141 #define MCI_PWR_UP 0x02
68142 #define MCI_PWR_ON 0x03
68143 -#define MCI_DATA2DIREN (1 << 2)
68144 -#define MCI_CMDDIREN (1 << 3)
68145 -#define MCI_DATA0DIREN (1 << 4)
68146 -#define MCI_DATA31DIREN (1 << 5)
68147 #define MCI_OD (1 << 6)
68148 #define MCI_ROD (1 << 7)
68149 -/* The ST Micro version does not have ROD */
68150 -#define MCI_FBCLKEN (1 << 7)
68151 -#define MCI_DATA74DIREN (1 << 8)
68152
68153 #define MMCICLOCK 0x004
68154 #define MCI_CLK_ENABLE (1 << 8)
68155 #define MCI_CLK_PWRSAVE (1 << 9)
68156 #define MCI_CLK_BYPASS (1 << 10)
68157 -#define MCI_WIDE_BUS (1 << 11)
68158 -/* HW flow control on the ST Micro version */
68159 -#define MCI_FCEN (1 << 13)
68160
68161 #define MMCIARGUMENT 0x008
68162 #define MMCICOMMAND 0x00c
68163 @@ -36,10 +26,6 @@
68164 #define MCI_CPSM_INTERRUPT (1 << 8)
68165 #define MCI_CPSM_PENDING (1 << 9)
68166 #define MCI_CPSM_ENABLE (1 << 10)
68167 -#define MCI_SDIO_SUSP (1 << 11)
68168 -#define MCI_ENCMD_COMPL (1 << 12)
68169 -#define MCI_NIEN (1 << 13)
68170 -#define MCI_CE_ATACMD (1 << 14)
68171
68172 #define MMCIRESPCMD 0x010
68173 #define MMCIRESPONSE0 0x014
68174 @@ -53,11 +39,6 @@
68175 #define MCI_DPSM_DIRECTION (1 << 1)
68176 #define MCI_DPSM_MODE (1 << 2)
68177 #define MCI_DPSM_DMAENABLE (1 << 3)
68178 -#define MCI_DPSM_BLOCKSIZE (1 << 4)
68179 -#define MCI_DPSM_RWSTART (1 << 8)
68180 -#define MCI_DPSM_RWSTOP (1 << 9)
68181 -#define MCI_DPSM_RWMOD (1 << 10)
68182 -#define MCI_DPSM_SDIOEN (1 << 11)
68183
68184 #define MMCIDATACNT 0x030
68185 #define MMCISTATUS 0x034
68186 @@ -82,8 +63,6 @@
68187 #define MCI_RXFIFOEMPTY (1 << 19)
68188 #define MCI_TXDATAAVLBL (1 << 20)
68189 #define MCI_RXDATAAVLBL (1 << 21)
68190 -#define MCI_SDIOIT (1 << 22)
68191 -#define MCI_CEATAEND (1 << 23)
68192
68193 #define MMCICLEAR 0x038
68194 #define MCI_CMDCRCFAILCLR (1 << 0)
68195 @@ -96,8 +75,6 @@
68196 #define MCI_CMDSENTCLR (1 << 7)
68197 #define MCI_DATAENDCLR (1 << 8)
68198 #define MCI_DATABLOCKENDCLR (1 << 10)
68199 -#define MCI_SDIOITC (1 << 22)
68200 -#define MCI_CEATAENDC (1 << 23)
68201
68202 #define MMCIMASK0 0x03c
68203 #define MCI_CMDCRCFAILMASK (1 << 0)
68204 @@ -121,8 +98,6 @@
68205 #define MCI_RXFIFOEMPTYMASK (1 << 19)
68206 #define MCI_TXDATAAVLBLMASK (1 << 20)
68207 #define MCI_RXDATAAVLBLMASK (1 << 21)
68208 -#define MCI_SDIOITMASK (1 << 22)
68209 -#define MCI_CEATAENDMASK (1 << 23)
68210
68211 #define MMCIMASK1 0x040
68212 #define MMCIFIFOCNT 0x048
68213 @@ -161,9 +136,6 @@
68214 u32 pwr;
68215 struct mmc_platform_data *plat;
68216
68217 - u8 hw_designer;
68218 - u8 hw_revision:4;
68219 -
68220 struct timer_list timer;
68221 unsigned int oldstat;
68222
68223 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/mxcmmc.c linux-2.6.29-rc3.owrt/drivers/mmc/host/mxcmmc.c
68224 --- linux-2.6.29.owrt/drivers/mmc/host/mxcmmc.c 2009-05-10 22:04:38.000000000 +0200
68225 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/mxcmmc.c 1970-01-01 01:00:00.000000000 +0100
68226 @@ -1,880 +0,0 @@
68227 -/*
68228 - * linux/drivers/mmc/host/mxcmmc.c - Freescale i.MX MMCI driver
68229 - *
68230 - * This is a driver for the SDHC controller found in Freescale MX2/MX3
68231 - * SoCs. It is basically the same hardware as found on MX1 (imxmmc.c).
68232 - * Unlike the hardware found on MX1, this hardware just works and does
68233 - * not need all the quirks found in imxmmc.c, hence the seperate driver.
68234 - *
68235 - * Copyright (C) 2008 Sascha Hauer, Pengutronix <s.hauer@pengutronix.de>
68236 - * Copyright (C) 2006 Pavel Pisa, PiKRON <ppisa@pikron.com>
68237 - *
68238 - * derived from pxamci.c by Russell King
68239 - *
68240 - * This program is free software; you can redistribute it and/or modify
68241 - * it under the terms of the GNU General Public License version 2 as
68242 - * published by the Free Software Foundation.
68243 - *
68244 - */
68245 -
68246 -#include <linux/module.h>
68247 -#include <linux/init.h>
68248 -#include <linux/ioport.h>
68249 -#include <linux/platform_device.h>
68250 -#include <linux/interrupt.h>
68251 -#include <linux/irq.h>
68252 -#include <linux/blkdev.h>
68253 -#include <linux/dma-mapping.h>
68254 -#include <linux/mmc/host.h>
68255 -#include <linux/mmc/card.h>
68256 -#include <linux/delay.h>
68257 -#include <linux/clk.h>
68258 -#include <linux/io.h>
68259 -#include <linux/gpio.h>
68260 -
68261 -#include <asm/dma.h>
68262 -#include <asm/irq.h>
68263 -#include <asm/sizes.h>
68264 -#include <mach/mmc.h>
68265 -
68266 -#ifdef CONFIG_ARCH_MX2
68267 -#include <mach/dma-mx1-mx2.h>
68268 -#define HAS_DMA
68269 -#endif
68270 -
68271 -#define DRIVER_NAME "imx-mmc"
68272 -
68273 -#define MMC_REG_STR_STP_CLK 0x00
68274 -#define MMC_REG_STATUS 0x04
68275 -#define MMC_REG_CLK_RATE 0x08
68276 -#define MMC_REG_CMD_DAT_CONT 0x0C
68277 -#define MMC_REG_RES_TO 0x10
68278 -#define MMC_REG_READ_TO 0x14
68279 -#define MMC_REG_BLK_LEN 0x18
68280 -#define MMC_REG_NOB 0x1C
68281 -#define MMC_REG_REV_NO 0x20
68282 -#define MMC_REG_INT_CNTR 0x24
68283 -#define MMC_REG_CMD 0x28
68284 -#define MMC_REG_ARG 0x2C
68285 -#define MMC_REG_RES_FIFO 0x34
68286 -#define MMC_REG_BUFFER_ACCESS 0x38
68287 -
68288 -#define STR_STP_CLK_RESET (1 << 3)
68289 -#define STR_STP_CLK_START_CLK (1 << 1)
68290 -#define STR_STP_CLK_STOP_CLK (1 << 0)
68291 -
68292 -#define STATUS_CARD_INSERTION (1 << 31)
68293 -#define STATUS_CARD_REMOVAL (1 << 30)
68294 -#define STATUS_YBUF_EMPTY (1 << 29)
68295 -#define STATUS_XBUF_EMPTY (1 << 28)
68296 -#define STATUS_YBUF_FULL (1 << 27)
68297 -#define STATUS_XBUF_FULL (1 << 26)
68298 -#define STATUS_BUF_UND_RUN (1 << 25)
68299 -#define STATUS_BUF_OVFL (1 << 24)
68300 -#define STATUS_SDIO_INT_ACTIVE (1 << 14)
68301 -#define STATUS_END_CMD_RESP (1 << 13)
68302 -#define STATUS_WRITE_OP_DONE (1 << 12)
68303 -#define STATUS_DATA_TRANS_DONE (1 << 11)
68304 -#define STATUS_READ_OP_DONE (1 << 11)
68305 -#define STATUS_WR_CRC_ERROR_CODE_MASK (3 << 10)
68306 -#define STATUS_CARD_BUS_CLK_RUN (1 << 8)
68307 -#define STATUS_BUF_READ_RDY (1 << 7)
68308 -#define STATUS_BUF_WRITE_RDY (1 << 6)
68309 -#define STATUS_RESP_CRC_ERR (1 << 5)
68310 -#define STATUS_CRC_READ_ERR (1 << 3)
68311 -#define STATUS_CRC_WRITE_ERR (1 << 2)
68312 -#define STATUS_TIME_OUT_RESP (1 << 1)
68313 -#define STATUS_TIME_OUT_READ (1 << 0)
68314 -#define STATUS_ERR_MASK 0x2f
68315 -
68316 -#define CMD_DAT_CONT_CMD_RESP_LONG_OFF (1 << 12)
68317 -#define CMD_DAT_CONT_STOP_READWAIT (1 << 11)
68318 -#define CMD_DAT_CONT_START_READWAIT (1 << 10)
68319 -#define CMD_DAT_CONT_BUS_WIDTH_4 (2 << 8)
68320 -#define CMD_DAT_CONT_INIT (1 << 7)
68321 -#define CMD_DAT_CONT_WRITE (1 << 4)
68322 -#define CMD_DAT_CONT_DATA_ENABLE (1 << 3)
68323 -#define CMD_DAT_CONT_RESPONSE_48BIT_CRC (1 << 0)
68324 -#define CMD_DAT_CONT_RESPONSE_136BIT (2 << 0)
68325 -#define CMD_DAT_CONT_RESPONSE_48BIT (3 << 0)
68326 -
68327 -#define INT_SDIO_INT_WKP_EN (1 << 18)
68328 -#define INT_CARD_INSERTION_WKP_EN (1 << 17)
68329 -#define INT_CARD_REMOVAL_WKP_EN (1 << 16)
68330 -#define INT_CARD_INSERTION_EN (1 << 15)
68331 -#define INT_CARD_REMOVAL_EN (1 << 14)
68332 -#define INT_SDIO_IRQ_EN (1 << 13)
68333 -#define INT_DAT0_EN (1 << 12)
68334 -#define INT_BUF_READ_EN (1 << 4)
68335 -#define INT_BUF_WRITE_EN (1 << 3)
68336 -#define INT_END_CMD_RES_EN (1 << 2)
68337 -#define INT_WRITE_OP_DONE_EN (1 << 1)
68338 -#define INT_READ_OP_EN (1 << 0)
68339 -
68340 -struct mxcmci_host {
68341 - struct mmc_host *mmc;
68342 - struct resource *res;
68343 - void __iomem *base;
68344 - int irq;
68345 - int detect_irq;
68346 - int dma;
68347 - int do_dma;
68348 - unsigned int power_mode;
68349 - struct imxmmc_platform_data *pdata;
68350 -
68351 - struct mmc_request *req;
68352 - struct mmc_command *cmd;
68353 - struct mmc_data *data;
68354 -
68355 - unsigned int dma_nents;
68356 - unsigned int datasize;
68357 - unsigned int dma_dir;
68358 -
68359 - u16 rev_no;
68360 - unsigned int cmdat;
68361 -
68362 - struct clk *clk;
68363 -
68364 - int clock;
68365 -
68366 - struct work_struct datawork;
68367 -};
68368 -
68369 -static inline int mxcmci_use_dma(struct mxcmci_host *host)
68370 -{
68371 - return host->do_dma;
68372 -}
68373 -
68374 -static void mxcmci_softreset(struct mxcmci_host *host)
68375 -{
68376 - int i;
68377 -
68378 - /* reset sequence */
68379 - writew(STR_STP_CLK_RESET, host->base + MMC_REG_STR_STP_CLK);
68380 - writew(STR_STP_CLK_RESET | STR_STP_CLK_START_CLK,
68381 - host->base + MMC_REG_STR_STP_CLK);
68382 -
68383 - for (i = 0; i < 8; i++)
68384 - writew(STR_STP_CLK_START_CLK, host->base + MMC_REG_STR_STP_CLK);
68385 -
68386 - writew(0xff, host->base + MMC_REG_RES_TO);
68387 -}
68388 -
68389 -static void mxcmci_setup_data(struct mxcmci_host *host, struct mmc_data *data)
68390 -{
68391 - unsigned int nob = data->blocks;
68392 - unsigned int blksz = data->blksz;
68393 - unsigned int datasize = nob * blksz;
68394 -#ifdef HAS_DMA
68395 - struct scatterlist *sg;
68396 - int i;
68397 -#endif
68398 - if (data->flags & MMC_DATA_STREAM)
68399 - nob = 0xffff;
68400 -
68401 - host->data = data;
68402 - data->bytes_xfered = 0;
68403 -
68404 - writew(nob, host->base + MMC_REG_NOB);
68405 - writew(blksz, host->base + MMC_REG_BLK_LEN);
68406 - host->datasize = datasize;
68407 -
68408 -#ifdef HAS_DMA
68409 - for_each_sg(data->sg, sg, data->sg_len, i) {
68410 - if (sg->offset & 3 || sg->length & 3) {
68411 - host->do_dma = 0;
68412 - return;
68413 - }
68414 - }
68415 -
68416 - if (data->flags & MMC_DATA_READ) {
68417 - host->dma_dir = DMA_FROM_DEVICE;
68418 - host->dma_nents = dma_map_sg(mmc_dev(host->mmc), data->sg,
68419 - data->sg_len, host->dma_dir);
68420 -
68421 - imx_dma_setup_sg(host->dma, data->sg, host->dma_nents, datasize,
68422 - host->res->start + MMC_REG_BUFFER_ACCESS,
68423 - DMA_MODE_READ);
68424 - } else {
68425 - host->dma_dir = DMA_TO_DEVICE;
68426 - host->dma_nents = dma_map_sg(mmc_dev(host->mmc), data->sg,
68427 - data->sg_len, host->dma_dir);
68428 -
68429 - imx_dma_setup_sg(host->dma, data->sg, host->dma_nents, datasize,
68430 - host->res->start + MMC_REG_BUFFER_ACCESS,
68431 - DMA_MODE_WRITE);
68432 - }
68433 -
68434 - wmb();
68435 -
68436 - imx_dma_enable(host->dma);
68437 -#endif /* HAS_DMA */
68438 -}
68439 -
68440 -static int mxcmci_start_cmd(struct mxcmci_host *host, struct mmc_command *cmd,
68441 - unsigned int cmdat)
68442 -{
68443 - WARN_ON(host->cmd != NULL);
68444 - host->cmd = cmd;
68445 -
68446 - switch (mmc_resp_type(cmd)) {
68447 - case MMC_RSP_R1: /* short CRC, OPCODE */
68448 - case MMC_RSP_R1B:/* short CRC, OPCODE, BUSY */
68449 - cmdat |= CMD_DAT_CONT_RESPONSE_48BIT_CRC;
68450 - break;
68451 - case MMC_RSP_R2: /* long 136 bit + CRC */
68452 - cmdat |= CMD_DAT_CONT_RESPONSE_136BIT;
68453 - break;
68454 - case MMC_RSP_R3: /* short */
68455 - cmdat |= CMD_DAT_CONT_RESPONSE_48BIT;
68456 - break;
68457 - case MMC_RSP_NONE:
68458 - break;
68459 - default:
68460 - dev_err(mmc_dev(host->mmc), "unhandled response type 0x%x\n",
68461 - mmc_resp_type(cmd));
68462 - cmd->error = -EINVAL;
68463 - return -EINVAL;
68464 - }
68465 -
68466 - if (mxcmci_use_dma(host))
68467 - writel(INT_READ_OP_EN | INT_WRITE_OP_DONE_EN |
68468 - INT_END_CMD_RES_EN,
68469 - host->base + MMC_REG_INT_CNTR);
68470 - else
68471 - writel(INT_END_CMD_RES_EN, host->base + MMC_REG_INT_CNTR);
68472 -
68473 - writew(cmd->opcode, host->base + MMC_REG_CMD);
68474 - writel(cmd->arg, host->base + MMC_REG_ARG);
68475 - writew(cmdat, host->base + MMC_REG_CMD_DAT_CONT);
68476 -
68477 - return 0;
68478 -}
68479 -
68480 -static void mxcmci_finish_request(struct mxcmci_host *host,
68481 - struct mmc_request *req)
68482 -{
68483 - writel(0, host->base + MMC_REG_INT_CNTR);
68484 -
68485 - host->req = NULL;
68486 - host->cmd = NULL;
68487 - host->data = NULL;
68488 -
68489 - mmc_request_done(host->mmc, req);
68490 -}
68491 -
68492 -static int mxcmci_finish_data(struct mxcmci_host *host, unsigned int stat)
68493 -{
68494 - struct mmc_data *data = host->data;
68495 - int data_error;
68496 -
68497 -#ifdef HAS_DMA
68498 - if (mxcmci_use_dma(host)) {
68499 - imx_dma_disable(host->dma);
68500 - dma_unmap_sg(mmc_dev(host->mmc), data->sg, host->dma_nents,
68501 - host->dma_dir);
68502 - }
68503 -#endif
68504 -
68505 - if (stat & STATUS_ERR_MASK) {
68506 - dev_dbg(mmc_dev(host->mmc), "request failed. status: 0x%08x\n",
68507 - stat);
68508 - if (stat & STATUS_CRC_READ_ERR) {
68509 - data->error = -EILSEQ;
68510 - } else if (stat & STATUS_CRC_WRITE_ERR) {
68511 - u32 err_code = (stat >> 9) & 0x3;
68512 - if (err_code == 2) /* No CRC response */
68513 - data->error = -ETIMEDOUT;
68514 - else
68515 - data->error = -EILSEQ;
68516 - } else if (stat & STATUS_TIME_OUT_READ) {
68517 - data->error = -ETIMEDOUT;
68518 - } else {
68519 - data->error = -EIO;
68520 - }
68521 - } else {
68522 - data->bytes_xfered = host->datasize;
68523 - }
68524 -
68525 - data_error = data->error;
68526 -
68527 - host->data = NULL;
68528 -
68529 - return data_error;
68530 -}
68531 -
68532 -static void mxcmci_read_response(struct mxcmci_host *host, unsigned int stat)
68533 -{
68534 - struct mmc_command *cmd = host->cmd;
68535 - int i;
68536 - u32 a, b, c;
68537 -
68538 - if (!cmd)
68539 - return;
68540 -
68541 - if (stat & STATUS_TIME_OUT_RESP) {
68542 - dev_dbg(mmc_dev(host->mmc), "CMD TIMEOUT\n");
68543 - cmd->error = -ETIMEDOUT;
68544 - } else if (stat & STATUS_RESP_CRC_ERR && cmd->flags & MMC_RSP_CRC) {
68545 - dev_dbg(mmc_dev(host->mmc), "cmd crc error\n");
68546 - cmd->error = -EILSEQ;
68547 - }
68548 -
68549 - if (cmd->flags & MMC_RSP_PRESENT) {
68550 - if (cmd->flags & MMC_RSP_136) {
68551 - for (i = 0; i < 4; i++) {
68552 - a = readw(host->base + MMC_REG_RES_FIFO);
68553 - b = readw(host->base + MMC_REG_RES_FIFO);
68554 - cmd->resp[i] = a << 16 | b;
68555 - }
68556 - } else {
68557 - a = readw(host->base + MMC_REG_RES_FIFO);
68558 - b = readw(host->base + MMC_REG_RES_FIFO);
68559 - c = readw(host->base + MMC_REG_RES_FIFO);
68560 - cmd->resp[0] = a << 24 | b << 8 | c >> 8;
68561 - }
68562 - }
68563 -}
68564 -
68565 -static int mxcmci_poll_status(struct mxcmci_host *host, u32 mask)
68566 -{
68567 - u32 stat;
68568 - unsigned long timeout = jiffies + HZ;
68569 -
68570 - do {
68571 - stat = readl(host->base + MMC_REG_STATUS);
68572 - if (stat & STATUS_ERR_MASK)
68573 - return stat;
68574 - if (time_after(jiffies, timeout))
68575 - return STATUS_TIME_OUT_READ;
68576 - if (stat & mask)
68577 - return 0;
68578 - cpu_relax();
68579 - } while (1);
68580 -}
68581 -
68582 -static int mxcmci_pull(struct mxcmci_host *host, void *_buf, int bytes)
68583 -{
68584 - unsigned int stat;
68585 - u32 *buf = _buf;
68586 -
68587 - while (bytes > 3) {
68588 - stat = mxcmci_poll_status(host,
68589 - STATUS_BUF_READ_RDY | STATUS_READ_OP_DONE);
68590 - if (stat)
68591 - return stat;
68592 - *buf++ = readl(host->base + MMC_REG_BUFFER_ACCESS);
68593 - bytes -= 4;
68594 - }
68595 -
68596 - if (bytes) {
68597 - u8 *b = (u8 *)buf;
68598 - u32 tmp;
68599 -
68600 - stat = mxcmci_poll_status(host,
68601 - STATUS_BUF_READ_RDY | STATUS_READ_OP_DONE);
68602 - if (stat)
68603 - return stat;
68604 - tmp = readl(host->base + MMC_REG_BUFFER_ACCESS);
68605 - memcpy(b, &tmp, bytes);
68606 - }
68607 -
68608 - return 0;
68609 -}
68610 -
68611 -static int mxcmci_push(struct mxcmci_host *host, void *_buf, int bytes)
68612 -{
68613 - unsigned int stat;
68614 - u32 *buf = _buf;
68615 -
68616 - while (bytes > 3) {
68617 - stat = mxcmci_poll_status(host, STATUS_BUF_WRITE_RDY);
68618 - if (stat)
68619 - return stat;
68620 - writel(*buf++, host->base + MMC_REG_BUFFER_ACCESS);
68621 - bytes -= 4;
68622 - }
68623 -
68624 - if (bytes) {
68625 - u8 *b = (u8 *)buf;
68626 - u32 tmp;
68627 -
68628 - stat = mxcmci_poll_status(host, STATUS_BUF_WRITE_RDY);
68629 - if (stat)
68630 - return stat;
68631 -
68632 - memcpy(&tmp, b, bytes);
68633 - writel(tmp, host->base + MMC_REG_BUFFER_ACCESS);
68634 - }
68635 -
68636 - stat = mxcmci_poll_status(host, STATUS_BUF_WRITE_RDY);
68637 - if (stat)
68638 - return stat;
68639 -
68640 - return 0;
68641 -}
68642 -
68643 -static int mxcmci_transfer_data(struct mxcmci_host *host)
68644 -{
68645 - struct mmc_data *data = host->req->data;
68646 - struct scatterlist *sg;
68647 - int stat, i;
68648 -
68649 - host->datasize = 0;
68650 -
68651 - host->data = data;
68652 - host->datasize = 0;
68653 -
68654 - if (data->flags & MMC_DATA_READ) {
68655 - for_each_sg(data->sg, sg, data->sg_len, i) {
68656 - stat = mxcmci_pull(host, sg_virt(sg), sg->length);
68657 - if (stat)
68658 - return stat;
68659 - host->datasize += sg->length;
68660 - }
68661 - } else {
68662 - for_each_sg(data->sg, sg, data->sg_len, i) {
68663 - stat = mxcmci_push(host, sg_virt(sg), sg->length);
68664 - if (stat)
68665 - return stat;
68666 - host->datasize += sg->length;
68667 - }
68668 - stat = mxcmci_poll_status(host, STATUS_WRITE_OP_DONE);
68669 - if (stat)
68670 - return stat;
68671 - }
68672 - return 0;
68673 -}
68674 -
68675 -static void mxcmci_datawork(struct work_struct *work)
68676 -{
68677 - struct mxcmci_host *host = container_of(work, struct mxcmci_host,
68678 - datawork);
68679 - int datastat = mxcmci_transfer_data(host);
68680 - mxcmci_finish_data(host, datastat);
68681 -
68682 - if (host->req->stop) {
68683 - if (mxcmci_start_cmd(host, host->req->stop, 0)) {
68684 - mxcmci_finish_request(host, host->req);
68685 - return;
68686 - }
68687 - } else {
68688 - mxcmci_finish_request(host, host->req);
68689 - }
68690 -}
68691 -
68692 -#ifdef HAS_DMA
68693 -static void mxcmci_data_done(struct mxcmci_host *host, unsigned int stat)
68694 -{
68695 - struct mmc_data *data = host->data;
68696 - int data_error;
68697 -
68698 - if (!data)
68699 - return;
68700 -
68701 - data_error = mxcmci_finish_data(host, stat);
68702 -
68703 - mxcmci_read_response(host, stat);
68704 - host->cmd = NULL;
68705 -
68706 - if (host->req->stop) {
68707 - if (mxcmci_start_cmd(host, host->req->stop, 0)) {
68708 - mxcmci_finish_request(host, host->req);
68709 - return;
68710 - }
68711 - } else {
68712 - mxcmci_finish_request(host, host->req);
68713 - }
68714 -}
68715 -#endif /* HAS_DMA */
68716 -
68717 -static void mxcmci_cmd_done(struct mxcmci_host *host, unsigned int stat)
68718 -{
68719 - mxcmci_read_response(host, stat);
68720 - host->cmd = NULL;
68721 -
68722 - if (!host->data && host->req) {
68723 - mxcmci_finish_request(host, host->req);
68724 - return;
68725 - }
68726 -
68727 - /* For the DMA case the DMA engine handles the data transfer
68728 - * automatically. For non DMA we have to to it ourselves.
68729 - * Don't do it in interrupt context though.
68730 - */
68731 - if (!mxcmci_use_dma(host) && host->data)
68732 - schedule_work(&host->datawork);
68733 -
68734 -}
68735 -
68736 -static irqreturn_t mxcmci_irq(int irq, void *devid)
68737 -{
68738 - struct mxcmci_host *host = devid;
68739 - u32 stat;
68740 -
68741 - stat = readl(host->base + MMC_REG_STATUS);
68742 - writel(stat, host->base + MMC_REG_STATUS);
68743 -
68744 - dev_dbg(mmc_dev(host->mmc), "%s: 0x%08x\n", __func__, stat);
68745 -
68746 - if (stat & STATUS_END_CMD_RESP)
68747 - mxcmci_cmd_done(host, stat);
68748 -#ifdef HAS_DMA
68749 - if (mxcmci_use_dma(host) &&
68750 - (stat & (STATUS_DATA_TRANS_DONE | STATUS_WRITE_OP_DONE)))
68751 - mxcmci_data_done(host, stat);
68752 -#endif
68753 - return IRQ_HANDLED;
68754 -}
68755 -
68756 -static void mxcmci_request(struct mmc_host *mmc, struct mmc_request *req)
68757 -{
68758 - struct mxcmci_host *host = mmc_priv(mmc);
68759 - unsigned int cmdat = host->cmdat;
68760 -
68761 - WARN_ON(host->req != NULL);
68762 -
68763 - host->req = req;
68764 - host->cmdat &= ~CMD_DAT_CONT_INIT;
68765 -#ifdef HAS_DMA
68766 - host->do_dma = 1;
68767 -#endif
68768 - if (req->data) {
68769 - mxcmci_setup_data(host, req->data);
68770 -
68771 - cmdat |= CMD_DAT_CONT_DATA_ENABLE;
68772 -
68773 - if (req->data->flags & MMC_DATA_WRITE)
68774 - cmdat |= CMD_DAT_CONT_WRITE;
68775 - }
68776 -
68777 - if (mxcmci_start_cmd(host, req->cmd, cmdat))
68778 - mxcmci_finish_request(host, req);
68779 -}
68780 -
68781 -static void mxcmci_set_clk_rate(struct mxcmci_host *host, unsigned int clk_ios)
68782 -{
68783 - unsigned int divider;
68784 - int prescaler = 0;
68785 - unsigned int clk_in = clk_get_rate(host->clk);
68786 -
68787 - while (prescaler <= 0x800) {
68788 - for (divider = 1; divider <= 0xF; divider++) {
68789 - int x;
68790 -
68791 - x = (clk_in / (divider + 1));
68792 -
68793 - if (prescaler)
68794 - x /= (prescaler * 2);
68795 -
68796 - if (x <= clk_ios)
68797 - break;
68798 - }
68799 - if (divider < 0x10)
68800 - break;
68801 -
68802 - if (prescaler == 0)
68803 - prescaler = 1;
68804 - else
68805 - prescaler <<= 1;
68806 - }
68807 -
68808 - writew((prescaler << 4) | divider, host->base + MMC_REG_CLK_RATE);
68809 -
68810 - dev_dbg(mmc_dev(host->mmc), "scaler: %d divider: %d in: %d out: %d\n",
68811 - prescaler, divider, clk_in, clk_ios);
68812 -}
68813 -
68814 -static void mxcmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
68815 -{
68816 - struct mxcmci_host *host = mmc_priv(mmc);
68817 -#ifdef HAS_DMA
68818 - unsigned int blen;
68819 - /*
68820 - * use burstlen of 64 in 4 bit mode (--> reg value 0)
68821 - * use burstlen of 16 in 1 bit mode (--> reg value 16)
68822 - */
68823 - if (ios->bus_width == MMC_BUS_WIDTH_4)
68824 - blen = 0;
68825 - else
68826 - blen = 16;
68827 -
68828 - imx_dma_config_burstlen(host->dma, blen);
68829 -#endif
68830 - if (ios->bus_width == MMC_BUS_WIDTH_4)
68831 - host->cmdat |= CMD_DAT_CONT_BUS_WIDTH_4;
68832 - else
68833 - host->cmdat &= ~CMD_DAT_CONT_BUS_WIDTH_4;
68834 -
68835 - if (host->power_mode != ios->power_mode) {
68836 - if (host->pdata && host->pdata->setpower)
68837 - host->pdata->setpower(mmc_dev(mmc), ios->vdd);
68838 - host->power_mode = ios->power_mode;
68839 - if (ios->power_mode == MMC_POWER_ON)
68840 - host->cmdat |= CMD_DAT_CONT_INIT;
68841 - }
68842 -
68843 - if (ios->clock) {
68844 - mxcmci_set_clk_rate(host, ios->clock);
68845 - writew(STR_STP_CLK_START_CLK, host->base + MMC_REG_STR_STP_CLK);
68846 - } else {
68847 - writew(STR_STP_CLK_STOP_CLK, host->base + MMC_REG_STR_STP_CLK);
68848 - }
68849 -
68850 - host->clock = ios->clock;
68851 -}
68852 -
68853 -static irqreturn_t mxcmci_detect_irq(int irq, void *data)
68854 -{
68855 - struct mmc_host *mmc = data;
68856 -
68857 - dev_dbg(mmc_dev(mmc), "%s\n", __func__);
68858 -
68859 - mmc_detect_change(mmc, msecs_to_jiffies(250));
68860 - return IRQ_HANDLED;
68861 -}
68862 -
68863 -static int mxcmci_get_ro(struct mmc_host *mmc)
68864 -{
68865 - struct mxcmci_host *host = mmc_priv(mmc);
68866 -
68867 - if (host->pdata && host->pdata->get_ro)
68868 - return !!host->pdata->get_ro(mmc_dev(mmc));
68869 - /*
68870 - * Board doesn't support read only detection; let the mmc core
68871 - * decide what to do.
68872 - */
68873 - return -ENOSYS;
68874 -}
68875 -
68876 -
68877 -static const struct mmc_host_ops mxcmci_ops = {
68878 - .request = mxcmci_request,
68879 - .set_ios = mxcmci_set_ios,
68880 - .get_ro = mxcmci_get_ro,
68881 -};
68882 -
68883 -static int mxcmci_probe(struct platform_device *pdev)
68884 -{
68885 - struct mmc_host *mmc;
68886 - struct mxcmci_host *host = NULL;
68887 - struct resource *r;
68888 - int ret = 0, irq;
68889 -
68890 - printk(KERN_INFO "i.MX SDHC driver\n");
68891 -
68892 - r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
68893 - irq = platform_get_irq(pdev, 0);
68894 - if (!r || irq < 0)
68895 - return -EINVAL;
68896 -
68897 - r = request_mem_region(r->start, resource_size(r), pdev->name);
68898 - if (!r)
68899 - return -EBUSY;
68900 -
68901 - mmc = mmc_alloc_host(sizeof(struct mxcmci_host), &pdev->dev);
68902 - if (!mmc) {
68903 - ret = -ENOMEM;
68904 - goto out_release_mem;
68905 - }
68906 -
68907 - mmc->ops = &mxcmci_ops;
68908 - mmc->caps = MMC_CAP_4_BIT_DATA;
68909 -
68910 - /* MMC core transfer sizes tunable parameters */
68911 - mmc->max_hw_segs = 64;
68912 - mmc->max_phys_segs = 64;
68913 - mmc->max_blk_size = 2048;
68914 - mmc->max_blk_count = 65535;
68915 - mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
68916 - mmc->max_seg_size = mmc->max_seg_size;
68917 -
68918 - host = mmc_priv(mmc);
68919 - host->base = ioremap(r->start, resource_size(r));
68920 - if (!host->base) {
68921 - ret = -ENOMEM;
68922 - goto out_free;
68923 - }
68924 -
68925 - host->mmc = mmc;
68926 - host->pdata = pdev->dev.platform_data;
68927 -
68928 - if (host->pdata && host->pdata->ocr_avail)
68929 - mmc->ocr_avail = host->pdata->ocr_avail;
68930 - else
68931 - mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
68932 -
68933 - host->res = r;
68934 - host->irq = irq;
68935 -
68936 - host->clk = clk_get(&pdev->dev, "sdhc_clk");
68937 - if (IS_ERR(host->clk)) {
68938 - ret = PTR_ERR(host->clk);
68939 - goto out_iounmap;
68940 - }
68941 - clk_enable(host->clk);
68942 -
68943 - mxcmci_softreset(host);
68944 -
68945 - host->rev_no = readw(host->base + MMC_REG_REV_NO);
68946 - if (host->rev_no != 0x400) {
68947 - ret = -ENODEV;
68948 - dev_err(mmc_dev(host->mmc), "wrong rev.no. 0x%08x. aborting.\n",
68949 - host->rev_no);
68950 - goto out_clk_put;
68951 - }
68952 -
68953 - mmc->f_min = clk_get_rate(host->clk) >> 7;
68954 - mmc->f_max = clk_get_rate(host->clk) >> 1;
68955 -
68956 - /* recommended in data sheet */
68957 - writew(0x2db4, host->base + MMC_REG_READ_TO);
68958 -
68959 - writel(0, host->base + MMC_REG_INT_CNTR);
68960 -
68961 -#ifdef HAS_DMA
68962 - host->dma = imx_dma_request_by_prio(DRIVER_NAME, DMA_PRIO_LOW);
68963 - if (host->dma < 0) {
68964 - dev_err(mmc_dev(host->mmc), "imx_dma_request_by_prio failed\n");
68965 - ret = -EBUSY;
68966 - goto out_clk_put;
68967 - }
68968 -
68969 - r = platform_get_resource(pdev, IORESOURCE_DMA, 0);
68970 - if (!r) {
68971 - ret = -EINVAL;
68972 - goto out_free_dma;
68973 - }
68974 -
68975 - ret = imx_dma_config_channel(host->dma,
68976 - IMX_DMA_MEMSIZE_32 | IMX_DMA_TYPE_FIFO,
68977 - IMX_DMA_MEMSIZE_32 | IMX_DMA_TYPE_LINEAR,
68978 - r->start, 0);
68979 - if (ret) {
68980 - dev_err(mmc_dev(host->mmc), "failed to config DMA channel\n");
68981 - goto out_free_dma;
68982 - }
68983 -#endif
68984 - INIT_WORK(&host->datawork, mxcmci_datawork);
68985 -
68986 - ret = request_irq(host->irq, mxcmci_irq, 0, DRIVER_NAME, host);
68987 - if (ret)
68988 - goto out_free_dma;
68989 -
68990 - platform_set_drvdata(pdev, mmc);
68991 -
68992 - if (host->pdata && host->pdata->init) {
68993 - ret = host->pdata->init(&pdev->dev, mxcmci_detect_irq,
68994 - host->mmc);
68995 - if (ret)
68996 - goto out_free_irq;
68997 - }
68998 -
68999 - mmc_add_host(mmc);
69000 -
69001 - return 0;
69002 -
69003 -out_free_irq:
69004 - free_irq(host->irq, host);
69005 -out_free_dma:
69006 -#ifdef HAS_DMA
69007 - imx_dma_free(host->dma);
69008 -#endif
69009 -out_clk_put:
69010 - clk_disable(host->clk);
69011 - clk_put(host->clk);
69012 -out_iounmap:
69013 - iounmap(host->base);
69014 -out_free:
69015 - mmc_free_host(mmc);
69016 -out_release_mem:
69017 - release_mem_region(host->res->start, resource_size(host->res));
69018 - return ret;
69019 -}
69020 -
69021 -static int mxcmci_remove(struct platform_device *pdev)
69022 -{
69023 - struct mmc_host *mmc = platform_get_drvdata(pdev);
69024 - struct mxcmci_host *host = mmc_priv(mmc);
69025 -
69026 - platform_set_drvdata(pdev, NULL);
69027 -
69028 - mmc_remove_host(mmc);
69029 -
69030 - if (host->pdata && host->pdata->exit)
69031 - host->pdata->exit(&pdev->dev, mmc);
69032 -
69033 - free_irq(host->irq, host);
69034 - iounmap(host->base);
69035 -#ifdef HAS_DMA
69036 - imx_dma_free(host->dma);
69037 -#endif
69038 - clk_disable(host->clk);
69039 - clk_put(host->clk);
69040 -
69041 - release_mem_region(host->res->start, resource_size(host->res));
69042 - release_resource(host->res);
69043 -
69044 - mmc_free_host(mmc);
69045 -
69046 - return 0;
69047 -}
69048 -
69049 -#ifdef CONFIG_PM
69050 -static int mxcmci_suspend(struct platform_device *dev, pm_message_t state)
69051 -{
69052 - struct mmc_host *mmc = platform_get_drvdata(dev);
69053 - int ret = 0;
69054 -
69055 - if (mmc)
69056 - ret = mmc_suspend_host(mmc, state);
69057 -
69058 - return ret;
69059 -}
69060 -
69061 -static int mxcmci_resume(struct platform_device *dev)
69062 -{
69063 - struct mmc_host *mmc = platform_get_drvdata(dev);
69064 - struct mxcmci_host *host;
69065 - int ret = 0;
69066 -
69067 - if (mmc) {
69068 - host = mmc_priv(mmc);
69069 - ret = mmc_resume_host(mmc);
69070 - }
69071 -
69072 - return ret;
69073 -}
69074 -#else
69075 -#define mxcmci_suspend NULL
69076 -#define mxcmci_resume NULL
69077 -#endif /* CONFIG_PM */
69078 -
69079 -static struct platform_driver mxcmci_driver = {
69080 - .probe = mxcmci_probe,
69081 - .remove = mxcmci_remove,
69082 - .suspend = mxcmci_suspend,
69083 - .resume = mxcmci_resume,
69084 - .driver = {
69085 - .name = DRIVER_NAME,
69086 - .owner = THIS_MODULE,
69087 - }
69088 -};
69089 -
69090 -static int __init mxcmci_init(void)
69091 -{
69092 - return platform_driver_register(&mxcmci_driver);
69093 -}
69094 -
69095 -static void __exit mxcmci_exit(void)
69096 -{
69097 - platform_driver_unregister(&mxcmci_driver);
69098 -}
69099 -
69100 -module_init(mxcmci_init);
69101 -module_exit(mxcmci_exit);
69102 -
69103 -MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver");
69104 -MODULE_AUTHOR("Sascha Hauer, Pengutronix");
69105 -MODULE_LICENSE("GPL");
69106 -MODULE_ALIAS("platform:imx-mmc");
69107 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/omap_hsmmc.c linux-2.6.29-rc3.owrt/drivers/mmc/host/omap_hsmmc.c
69108 --- linux-2.6.29.owrt/drivers/mmc/host/omap_hsmmc.c 2009-05-10 22:04:38.000000000 +0200
69109 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/omap_hsmmc.c 2009-05-10 23:48:28.000000000 +0200
69110 @@ -55,7 +55,6 @@
69111 #define VS30 (1 << 25)
69112 #define SDVS18 (0x5 << 9)
69113 #define SDVS30 (0x6 << 9)
69114 -#define SDVS33 (0x7 << 9)
69115 #define SDVSCLR 0xFFFFF1FF
69116 #define SDVSDET 0x00000400
69117 #define AUTOIDLE 0x1
69118 @@ -376,32 +375,6 @@
69119 }
69120 #endif /* CONFIG_MMC_DEBUG */
69121
69122 -/*
69123 - * MMC controller internal state machines reset
69124 - *
69125 - * Used to reset command or data internal state machines, using respectively
69126 - * SRC or SRD bit of SYSCTL register
69127 - * Can be called from interrupt context
69128 - */
69129 -static inline void mmc_omap_reset_controller_fsm(struct mmc_omap_host *host,
69130 - unsigned long bit)
69131 -{
69132 - unsigned long i = 0;
69133 - unsigned long limit = (loops_per_jiffy *
69134 - msecs_to_jiffies(MMC_TIMEOUT_MS));
69135 -
69136 - OMAP_HSMMC_WRITE(host->base, SYSCTL,
69137 - OMAP_HSMMC_READ(host->base, SYSCTL) | bit);
69138 -
69139 - while ((OMAP_HSMMC_READ(host->base, SYSCTL) & bit) &&
69140 - (i++ < limit))
69141 - cpu_relax();
69142 -
69143 - if (OMAP_HSMMC_READ(host->base, SYSCTL) & bit)
69144 - dev_err(mmc_dev(host->mmc),
69145 - "Timeout waiting on controller reset in %s\n",
69146 - __func__);
69147 -}
69148
69149 /*
69150 * MMC controller IRQ handler
69151 @@ -430,17 +403,21 @@
69152 (status & CMD_CRC)) {
69153 if (host->cmd) {
69154 if (status & CMD_TIMEOUT) {
69155 - mmc_omap_reset_controller_fsm(host, SRC);
69156 + OMAP_HSMMC_WRITE(host->base, SYSCTL,
69157 + OMAP_HSMMC_READ(host->base,
69158 + SYSCTL) | SRC);
69159 + while (OMAP_HSMMC_READ(host->base,
69160 + SYSCTL) & SRC)
69161 + ;
69162 +
69163 host->cmd->error = -ETIMEDOUT;
69164 } else {
69165 host->cmd->error = -EILSEQ;
69166 }
69167 end_cmd = 1;
69168 }
69169 - if (host->data) {
69170 + if (host->data)
69171 mmc_dma_cleanup(host);
69172 - mmc_omap_reset_controller_fsm(host, SRD);
69173 - }
69174 }
69175 if ((status & DATA_TIMEOUT) ||
69176 (status & DATA_CRC)) {
69177 @@ -449,7 +426,12 @@
69178 mmc_dma_cleanup(host);
69179 else
69180 host->data->error = -EILSEQ;
69181 - mmc_omap_reset_controller_fsm(host, SRD);
69182 + OMAP_HSMMC_WRITE(host->base, SYSCTL,
69183 + OMAP_HSMMC_READ(host->base,
69184 + SYSCTL) | SRD);
69185 + while (OMAP_HSMMC_READ(host->base,
69186 + SYSCTL) & SRD)
69187 + ;
69188 end_trans = 1;
69189 }
69190 }
69191 @@ -474,20 +456,13 @@
69192 }
69193
69194 /*
69195 - * Switch MMC interface voltage ... only relevant for MMC1.
69196 - *
69197 - * MMC2 and MMC3 use fixed 1.8V levels, and maybe a transceiver.
69198 - * The MMC2 transceiver controls are used instead of DAT4..DAT7.
69199 - * Some chips, like eMMC ones, use internal transceivers.
69200 + * Switch MMC operating voltage
69201 */
69202 static int omap_mmc_switch_opcond(struct mmc_omap_host *host, int vdd)
69203 {
69204 u32 reg_val = 0;
69205 int ret;
69206
69207 - if (host->id != OMAP_MMC1_DEVID)
69208 - return 0;
69209 -
69210 /* Disable the clocks */
69211 clk_disable(host->fclk);
69212 clk_disable(host->iclk);
69213 @@ -510,26 +485,19 @@
69214 OMAP_HSMMC_WRITE(host->base, HCTL,
69215 OMAP_HSMMC_READ(host->base, HCTL) & SDVSCLR);
69216 reg_val = OMAP_HSMMC_READ(host->base, HCTL);
69217 -
69218 /*
69219 * If a MMC dual voltage card is detected, the set_ios fn calls
69220 * this fn with VDD bit set for 1.8V. Upon card removal from the
69221 * slot, omap_mmc_set_ios sets the VDD back to 3V on MMC_POWER_OFF.
69222 *
69223 - * Cope with a bit of slop in the range ... per data sheets:
69224 - * - "1.8V" for vdds_mmc1/vdds_mmc1a can be up to 2.45V max,
69225 - * but recommended values are 1.71V to 1.89V
69226 - * - "3.0V" for vdds_mmc1/vdds_mmc1a can be up to 3.5V max,
69227 - * but recommended values are 2.7V to 3.3V
69228 - *
69229 - * Board setup code shouldn't permit anything very out-of-range.
69230 - * TWL4030-family VMMC1 and VSIM regulators are fine (avoiding the
69231 - * middle range) but VSIM can't power DAT4..DAT7 at more than 3V.
69232 + * Only MMC1 supports 3.0V. MMC2 will not function if SDVS30 is
69233 + * set in HCTL.
69234 */
69235 - if ((1 << vdd) <= MMC_VDD_23_24)
69236 - reg_val |= SDVS18;
69237 - else
69238 + if (host->id == OMAP_MMC1_DEVID && (((1 << vdd) == MMC_VDD_32_33) ||
69239 + ((1 << vdd) == MMC_VDD_33_34)))
69240 reg_val |= SDVS30;
69241 + if ((1 << vdd) == MMC_VDD_165_195)
69242 + reg_val |= SDVS18;
69243
69244 OMAP_HSMMC_WRITE(host->base, HCTL, reg_val);
69245
69246 @@ -549,15 +517,16 @@
69247 {
69248 struct mmc_omap_host *host = container_of(work, struct mmc_omap_host,
69249 mmc_carddetect_work);
69250 - struct omap_mmc_slot_data *slot = &mmc_slot(host);
69251 -
69252 - host->carddetect = slot->card_detect(slot->card_detect_irq);
69253
69254 sysfs_notify(&host->mmc->class_dev.kobj, NULL, "cover_switch");
69255 if (host->carddetect) {
69256 mmc_detect_change(host->mmc, (HZ * 200) / 1000);
69257 } else {
69258 - mmc_omap_reset_controller_fsm(host, SRD);
69259 + OMAP_HSMMC_WRITE(host->base, SYSCTL,
69260 + OMAP_HSMMC_READ(host->base, SYSCTL) | SRD);
69261 + while (OMAP_HSMMC_READ(host->base, SYSCTL) & SRD)
69262 + ;
69263 +
69264 mmc_detect_change(host->mmc, (HZ * 50) / 1000);
69265 }
69266 }
69267 @@ -569,6 +538,7 @@
69268 {
69269 struct mmc_omap_host *host = (struct mmc_omap_host *)dev_id;
69270
69271 + host->carddetect = mmc_slot(host).card_detect(irq);
69272 schedule_work(&host->mmc_carddetect_work);
69273
69274 return IRQ_HANDLED;
69275 @@ -787,14 +757,10 @@
69276 case MMC_POWER_OFF:
69277 mmc_slot(host).set_power(host->dev, host->slot_id, 0, 0);
69278 /*
69279 - * Reset interface voltage to 3V if it's 1.8V now;
69280 - * only relevant on MMC-1, the others always use 1.8V.
69281 - *
69282 + * Reset bus voltage to 3V if it got set to 1.8V earlier.
69283 * REVISIT: If we are able to detect cards after unplugging
69284 * a 1.8V card, this code should not be needed.
69285 */
69286 - if (host->id != OMAP_MMC1_DEVID)
69287 - break;
69288 if (!(OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET)) {
69289 int vdd = fls(host->mmc->ocr_avail) - 1;
69290 if (omap_mmc_switch_opcond(host, vdd) != 0)
69291 @@ -818,9 +784,7 @@
69292 }
69293
69294 if (host->id == OMAP_MMC1_DEVID) {
69295 - /* Only MMC1 can interface at 3V without some flavor
69296 - * of external transceiver; but they all handle 1.8V.
69297 - */
69298 + /* Only MMC1 can operate at 3V/1.8V */
69299 if ((OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET) &&
69300 (ios->vdd == DUAL_VOLT_OCR_BIT)) {
69301 /*
69302 @@ -1173,9 +1137,7 @@
69303 " level suspend\n");
69304 }
69305
69306 - if (host->id == OMAP_MMC1_DEVID
69307 - && !(OMAP_HSMMC_READ(host->base, HCTL)
69308 - & SDVSDET)) {
69309 + if (!(OMAP_HSMMC_READ(host->base, HCTL) & SDVSDET)) {
69310 OMAP_HSMMC_WRITE(host->base, HCTL,
69311 OMAP_HSMMC_READ(host->base, HCTL)
69312 & SDVSCLR);
69313 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/pxamci.c linux-2.6.29-rc3.owrt/drivers/mmc/host/pxamci.c
69314 --- linux-2.6.29.owrt/drivers/mmc/host/pxamci.c 2009-05-10 22:04:38.000000000 +0200
69315 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/pxamci.c 2009-05-10 23:48:28.000000000 +0200
69316 @@ -180,15 +180,7 @@
69317 else
69318 DALGN &= ~(1 << host->dma);
69319 DDADR(host->dma) = host->sg_dma;
69320 -
69321 - /*
69322 - * workaround for erratum #91:
69323 - * only start DMA now if we are doing a read,
69324 - * otherwise we wait until CMD/RESP has finished
69325 - * before starting DMA.
69326 - */
69327 - if (!cpu_is_pxa27x() || data->flags & MMC_DATA_READ)
69328 - DCSR(host->dma) = DCSR_RUN;
69329 + DCSR(host->dma) = DCSR_RUN;
69330 }
69331
69332 static void pxamci_start_cmd(struct pxamci_host *host, struct mmc_command *cmd, unsigned int cmdat)
69333 @@ -259,28 +251,23 @@
69334 if (stat & STAT_TIME_OUT_RESPONSE) {
69335 cmd->error = -ETIMEDOUT;
69336 } else if (stat & STAT_RES_CRC_ERR && cmd->flags & MMC_RSP_CRC) {
69337 +#ifdef CONFIG_PXA27x
69338 /*
69339 * workaround for erratum #42:
69340 * Intel PXA27x Family Processor Specification Update Rev 001
69341 * A bogus CRC error can appear if the msb of a 136 bit
69342 * response is a one.
69343 */
69344 - if (cpu_is_pxa27x() &&
69345 - (cmd->flags & MMC_RSP_136 && cmd->resp[0] & 0x80000000))
69346 + if (cmd->flags & MMC_RSP_136 && cmd->resp[0] & 0x80000000) {
69347 pr_debug("ignoring CRC from command %d - *risky*\n", cmd->opcode);
69348 - else
69349 - cmd->error = -EILSEQ;
69350 + } else
69351 +#endif
69352 + cmd->error = -EILSEQ;
69353 }
69354
69355 pxamci_disable_irq(host, END_CMD_RES);
69356 if (host->data && !cmd->error) {
69357 pxamci_enable_irq(host, DATA_TRAN_DONE);
69358 - /*
69359 - * workaround for erratum #91, if doing write
69360 - * enable DMA late
69361 - */
69362 - if (cpu_is_pxa27x() && host->data->flags & MMC_DATA_WRITE)
69363 - DCSR(host->dma) = DCSR_RUN;
69364 } else {
69365 pxamci_finish_request(host, host->mrq);
69366 }
69367 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/ricoh_mmc.c linux-2.6.29-rc3.owrt/drivers/mmc/host/ricoh_mmc.c
69368 --- linux-2.6.29.owrt/drivers/mmc/host/ricoh_mmc.c 2009-05-10 22:04:38.000000000 +0200
69369 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/ricoh_mmc.c 2009-05-10 23:48:28.000000000 +0200
69370 @@ -196,7 +196,7 @@
69371 pci_set_drvdata(pdev, NULL);
69372 }
69373
69374 -static int ricoh_mmc_suspend_late(struct pci_dev *pdev, pm_message_t state)
69375 +static int ricoh_mmc_suspend(struct pci_dev *pdev, pm_message_t state)
69376 {
69377 struct pci_dev *fw_dev = NULL;
69378
69379 @@ -210,7 +210,7 @@
69380 return 0;
69381 }
69382
69383 -static int ricoh_mmc_resume_early(struct pci_dev *pdev)
69384 +static int ricoh_mmc_resume(struct pci_dev *pdev)
69385 {
69386 struct pci_dev *fw_dev = NULL;
69387
69388 @@ -229,8 +229,8 @@
69389 .id_table = pci_ids,
69390 .probe = ricoh_mmc_probe,
69391 .remove = __devexit_p(ricoh_mmc_remove),
69392 - .suspend_late = ricoh_mmc_suspend_late,
69393 - .resume_early = ricoh_mmc_resume_early,
69394 + .suspend = ricoh_mmc_suspend,
69395 + .resume = ricoh_mmc_resume,
69396 };
69397
69398 /*****************************************************************************\
69399 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/s3cmci.c linux-2.6.29-rc3.owrt/drivers/mmc/host/s3cmci.c
69400 --- linux-2.6.29.owrt/drivers/mmc/host/s3cmci.c 2009-05-10 22:04:38.000000000 +0200
69401 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/s3cmci.c 2009-05-10 23:48:28.000000000 +0200
69402 @@ -329,7 +329,7 @@
69403
69404 to_ptr = host->base + host->sdidata;
69405
69406 - while ((fifo = fifo_free(host)) > 3) {
69407 + while ((fifo = fifo_free(host))) {
69408 if (!host->pio_bytes) {
69409 res = get_data_buffer(host, &host->pio_bytes,
69410 &host->pio_ptr);
69411 @@ -793,7 +793,8 @@
69412 host->mem->start + host->sdidata);
69413
69414 if (!setup_ok) {
69415 - s3c2410_dma_config(host->dma, 4, 0);
69416 + s3c2410_dma_config(host->dma, 4,
69417 + (S3C2410_DCON_HWTRIG | S3C2410_DCON_CH0_SDI));
69418 s3c2410_dma_set_buffdone_fn(host->dma,
69419 s3cmci_dma_done_callback);
69420 s3c2410_dma_setflags(host->dma, S3C2410_DMAF_AUTOSTART);
69421 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/sdhci.c linux-2.6.29-rc3.owrt/drivers/mmc/host/sdhci.c
69422 --- linux-2.6.29.owrt/drivers/mmc/host/sdhci.c 2009-05-10 22:04:38.000000000 +0200
69423 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/sdhci.c 2009-05-10 23:48:28.000000000 +0200
69424 @@ -1291,11 +1291,8 @@
69425 if (host->cmd->data)
69426 DBG("Cannot wait for busy signal when also "
69427 "doing a data transfer");
69428 - else if (!(host->quirks & SDHCI_QUIRK_NO_BUSY_IRQ))
69429 + else
69430 return;
69431 -
69432 - /* The controller does not support the end-of-busy IRQ,
69433 - * fall through and take the SDHCI_INT_RESPONSE */
69434 }
69435
69436 if (intmask & SDHCI_INT_RESPONSE)
69437 @@ -1639,7 +1636,8 @@
69438 mmc->f_max = host->max_clk;
69439 mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SDIO_IRQ;
69440
69441 - if (caps & SDHCI_CAN_DO_HISPD)
69442 + if ((caps & SDHCI_CAN_DO_HISPD) ||
69443 + (host->quirks & SDHCI_QUIRK_FORCE_HIGHSPEED))
69444 mmc->caps |= MMC_CAP_SD_HIGHSPEED;
69445
69446 mmc->ocr_avail = 0;
69447 @@ -1725,9 +1723,7 @@
69448 #endif
69449
69450 #ifdef SDHCI_USE_LEDS_CLASS
69451 - snprintf(host->led_name, sizeof(host->led_name),
69452 - "%s::", mmc_hostname(mmc));
69453 - host->led.name = host->led_name;
69454 + host->led.name = mmc_hostname(mmc);
69455 host->led.brightness = LED_OFF;
69456 host->led.default_trigger = mmc_hostname(mmc);
69457 host->led.brightness_set = sdhci_led_control;
69458 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/sdhci.h linux-2.6.29-rc3.owrt/drivers/mmc/host/sdhci.h
69459 --- linux-2.6.29.owrt/drivers/mmc/host/sdhci.h 2009-05-10 22:04:38.000000000 +0200
69460 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/sdhci.h 2009-05-10 23:48:28.000000000 +0200
69461 @@ -208,8 +208,8 @@
69462 #define SDHCI_QUIRK_BROKEN_TIMEOUT_VAL (1<<12)
69463 /* Controller has an issue with buffer bits for small transfers */
69464 #define SDHCI_QUIRK_BROKEN_SMALL_PIO (1<<13)
69465 -/* Controller does not provide transfer-complete interrupt when not busy */
69466 -#define SDHCI_QUIRK_NO_BUSY_IRQ (1<<14)
69467 +/* Controller supports high speed but doesn't have the caps bit set */
69468 +#define SDHCI_QUIRK_FORCE_HIGHSPEED (1<<14)
69469
69470 int irq; /* Device IRQ */
69471 void __iomem * ioaddr; /* Mapped address */
69472 @@ -222,7 +222,6 @@
69473
69474 #if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
69475 struct led_classdev led; /* LED control */
69476 - char led_name[32];
69477 #endif
69478
69479 spinlock_t lock; /* Mutex */
69480 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mmc/host/sdhci-pci.c linux-2.6.29-rc3.owrt/drivers/mmc/host/sdhci-pci.c
69481 --- linux-2.6.29.owrt/drivers/mmc/host/sdhci-pci.c 2009-05-10 22:04:38.000000000 +0200
69482 +++ linux-2.6.29-rc3.owrt/drivers/mmc/host/sdhci-pci.c 2009-05-10 23:48:28.000000000 +0200
69483 @@ -107,7 +107,6 @@
69484
69485 static const struct sdhci_pci_fixes sdhci_cafe = {
69486 .quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER |
69487 - SDHCI_QUIRK_NO_BUSY_IRQ |
69488 SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
69489 };
69490
69491 @@ -145,7 +144,8 @@
69492 SDHCI_QUIRK_32BIT_DMA_SIZE |
69493 SDHCI_QUIRK_32BIT_ADMA_SIZE |
69494 SDHCI_QUIRK_RESET_AFTER_REQUEST |
69495 - SDHCI_QUIRK_BROKEN_SMALL_PIO;
69496 + SDHCI_QUIRK_BROKEN_SMALL_PIO |
69497 + SDHCI_QUIRK_FORCE_HIGHSPEED;
69498 }
69499
69500 /*
69501 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/chips/map_rom.c linux-2.6.29-rc3.owrt/drivers/mtd/chips/map_rom.c
69502 --- linux-2.6.29.owrt/drivers/mtd/chips/map_rom.c 2009-05-10 22:04:39.000000000 +0200
69503 +++ linux-2.6.29-rc3.owrt/drivers/mtd/chips/map_rom.c 2009-05-10 23:48:28.000000000 +0200
69504 @@ -19,7 +19,6 @@
69505 static int maprom_write (struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
69506 static void maprom_nop (struct mtd_info *);
69507 static struct mtd_info *map_rom_probe(struct map_info *map);
69508 -static int maprom_erase (struct mtd_info *mtd, struct erase_info *info);
69509
69510 static struct mtd_chip_driver maprom_chipdrv = {
69511 .probe = map_rom_probe,
69512 @@ -43,7 +42,6 @@
69513 mtd->read = maprom_read;
69514 mtd->write = maprom_write;
69515 mtd->sync = maprom_nop;
69516 - mtd->erase = maprom_erase;
69517 mtd->flags = MTD_CAP_ROM;
69518 mtd->erasesize = map->size;
69519 mtd->writesize = 1;
69520 @@ -73,12 +71,6 @@
69521 return -EIO;
69522 }
69523
69524 -static int maprom_erase (struct mtd_info *mtd, struct erase_info *info)
69525 -{
69526 - /* We do our best 8) */
69527 - return -EROFS;
69528 -}
69529 -
69530 static int __init map_rom_init(void)
69531 {
69532 register_mtd_chip_driver(&maprom_chipdrv);
69533 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/devices/Kconfig linux-2.6.29-rc3.owrt/drivers/mtd/devices/Kconfig
69534 --- linux-2.6.29.owrt/drivers/mtd/devices/Kconfig 2009-05-10 22:04:39.000000000 +0200
69535 +++ linux-2.6.29-rc3.owrt/drivers/mtd/devices/Kconfig 2009-05-10 23:48:28.000000000 +0200
69536 @@ -120,6 +120,13 @@
69537 doesn't have access to, memory beyond the mem=xxx limit, nvram,
69538 memory on the video card, etc...
69539
69540 +config MTD_PS3VRAM
69541 + tristate "PS3 video RAM"
69542 + depends on FB_PS3
69543 + help
69544 + This driver allows you to use excess PS3 video RAM as volatile
69545 + storage or system swap.
69546 +
69547 config MTD_LART
69548 tristate "28F160xx flash driver for LART"
69549 depends on SA1100_LART
69550 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/devices/Makefile linux-2.6.29-rc3.owrt/drivers/mtd/devices/Makefile
69551 --- linux-2.6.29.owrt/drivers/mtd/devices/Makefile 2009-05-10 22:04:39.000000000 +0200
69552 +++ linux-2.6.29-rc3.owrt/drivers/mtd/devices/Makefile 2009-05-10 23:48:28.000000000 +0200
69553 @@ -16,3 +16,4 @@
69554 obj-$(CONFIG_MTD_BLOCK2MTD) += block2mtd.o
69555 obj-$(CONFIG_MTD_DATAFLASH) += mtd_dataflash.o
69556 obj-$(CONFIG_MTD_M25P80) += m25p80.o
69557 +obj-$(CONFIG_MTD_PS3VRAM) += ps3vram.o
69558 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/devices/mtd_dataflash.c linux-2.6.29-rc3.owrt/drivers/mtd/devices/mtd_dataflash.c
69559 --- linux-2.6.29.owrt/drivers/mtd/devices/mtd_dataflash.c 2009-05-10 22:04:39.000000000 +0200
69560 +++ linux-2.6.29-rc3.owrt/drivers/mtd/devices/mtd_dataflash.c 2009-05-10 23:48:28.000000000 +0200
69561 @@ -821,8 +821,7 @@
69562 if (!(info->flags & IS_POW2PS))
69563 return info;
69564 }
69565 - } else
69566 - return info;
69567 + }
69568 }
69569 }
69570
69571 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/devices/ps3vram.c linux-2.6.29-rc3.owrt/drivers/mtd/devices/ps3vram.c
69572 --- linux-2.6.29.owrt/drivers/mtd/devices/ps3vram.c 1970-01-01 01:00:00.000000000 +0100
69573 +++ linux-2.6.29-rc3.owrt/drivers/mtd/devices/ps3vram.c 2009-05-10 23:48:28.000000000 +0200
69574 @@ -0,0 +1,768 @@
69575 +/**
69576 + * ps3vram - Use extra PS3 video ram as MTD block device.
69577 + *
69578 + * Copyright (c) 2007-2008 Jim Paris <jim@jtan.com>
69579 + * Added support RSX DMA Vivien Chappelier <vivien.chappelier@free.fr>
69580 + */
69581 +
69582 +#include <linux/io.h>
69583 +#include <linux/mm.h>
69584 +#include <linux/init.h>
69585 +#include <linux/kernel.h>
69586 +#include <linux/list.h>
69587 +#include <linux/module.h>
69588 +#include <linux/moduleparam.h>
69589 +#include <linux/slab.h>
69590 +#include <linux/version.h>
69591 +#include <linux/gfp.h>
69592 +#include <linux/delay.h>
69593 +#include <linux/mtd/mtd.h>
69594 +
69595 +#include <asm/lv1call.h>
69596 +#include <asm/ps3.h>
69597 +
69598 +#define DEVICE_NAME "ps3vram"
69599 +
69600 +#define XDR_BUF_SIZE (2 * 1024 * 1024) /* XDR buffer (must be 1MiB aligned) */
69601 +#define XDR_IOIF 0x0c000000
69602 +
69603 +#define FIFO_BASE XDR_IOIF
69604 +#define FIFO_SIZE (64 * 1024)
69605 +
69606 +#define DMA_PAGE_SIZE (4 * 1024)
69607 +
69608 +#define CACHE_PAGE_SIZE (256 * 1024)
69609 +#define CACHE_PAGE_COUNT ((XDR_BUF_SIZE - FIFO_SIZE) / CACHE_PAGE_SIZE)
69610 +
69611 +#define CACHE_OFFSET CACHE_PAGE_SIZE
69612 +#define FIFO_OFFSET 0
69613 +
69614 +#define CTRL_PUT 0x10
69615 +#define CTRL_GET 0x11
69616 +#define CTRL_TOP 0x15
69617 +
69618 +#define UPLOAD_SUBCH 1
69619 +#define DOWNLOAD_SUBCH 2
69620 +
69621 +#define NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN 0x0000030c
69622 +#define NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000104
69623 +
69624 +#define L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT 0x601
69625 +
69626 +struct mtd_info ps3vram_mtd;
69627 +
69628 +#define CACHE_PAGE_PRESENT 1
69629 +#define CACHE_PAGE_DIRTY 2
69630 +
69631 +struct ps3vram_tag {
69632 + unsigned int address;
69633 + unsigned int flags;
69634 +};
69635 +
69636 +struct ps3vram_cache {
69637 + unsigned int page_count;
69638 + unsigned int page_size;
69639 + struct ps3vram_tag *tags;
69640 +};
69641 +
69642 +struct ps3vram_priv {
69643 + u64 memory_handle;
69644 + u64 context_handle;
69645 + u32 *ctrl;
69646 + u32 *reports;
69647 + u8 __iomem *ddr_base;
69648 + u8 *xdr_buf;
69649 +
69650 + u32 *fifo_base;
69651 + u32 *fifo_ptr;
69652 +
69653 + struct device *dev;
69654 + struct ps3vram_cache cache;
69655 +
69656 + /* Used to serialize cache/DMA operations */
69657 + struct mutex lock;
69658 +};
69659 +
69660 +#define DMA_NOTIFIER_HANDLE_BASE 0x66604200 /* first DMA notifier handle */
69661 +#define DMA_NOTIFIER_OFFSET_BASE 0x1000 /* first DMA notifier offset */
69662 +#define DMA_NOTIFIER_SIZE 0x40
69663 +#define NOTIFIER 7 /* notifier used for completion report */
69664 +
69665 +/* A trailing '-' means to subtract off ps3fb_videomemory.size */
69666 +char *size = "256M-";
69667 +module_param(size, charp, 0);
69668 +MODULE_PARM_DESC(size, "memory size");
69669 +
69670 +static u32 *ps3vram_get_notifier(u32 *reports, int notifier)
69671 +{
69672 + return (void *) reports +
69673 + DMA_NOTIFIER_OFFSET_BASE +
69674 + DMA_NOTIFIER_SIZE * notifier;
69675 +}
69676 +
69677 +static void ps3vram_notifier_reset(struct mtd_info *mtd)
69678 +{
69679 + int i;
69680 +
69681 + struct ps3vram_priv *priv = mtd->priv;
69682 + u32 *notify = ps3vram_get_notifier(priv->reports, NOTIFIER);
69683 + for (i = 0; i < 4; i++)
69684 + notify[i] = 0xffffffff;
69685 +}
69686 +
69687 +static int ps3vram_notifier_wait(struct mtd_info *mtd, unsigned int timeout_ms)
69688 +{
69689 + struct ps3vram_priv *priv = mtd->priv;
69690 + u32 *notify = ps3vram_get_notifier(priv->reports, NOTIFIER);
69691 + unsigned long timeout = jiffies + msecs_to_jiffies(timeout_ms);
69692 +
69693 + do {
69694 + if (!notify[3])
69695 + return 0;
69696 + msleep(1);
69697 + } while (time_before(jiffies, timeout));
69698 +
69699 + return -ETIMEDOUT;
69700 +}
69701 +
69702 +static void ps3vram_init_ring(struct mtd_info *mtd)
69703 +{
69704 + struct ps3vram_priv *priv = mtd->priv;
69705 +
69706 + priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET;
69707 + priv->ctrl[CTRL_GET] = FIFO_BASE + FIFO_OFFSET;
69708 +}
69709 +
69710 +static int ps3vram_wait_ring(struct mtd_info *mtd, unsigned int timeout_ms)
69711 +{
69712 + struct ps3vram_priv *priv = mtd->priv;
69713 + unsigned long timeout = jiffies + msecs_to_jiffies(timeout_ms);
69714 +
69715 + do {
69716 + if (priv->ctrl[CTRL_PUT] == priv->ctrl[CTRL_GET])
69717 + return 0;
69718 + msleep(1);
69719 + } while (time_before(jiffies, timeout));
69720 +
69721 + dev_dbg(priv->dev, "%s:%d: FIFO timeout (%08x/%08x/%08x)\n", __func__,
69722 + __LINE__, priv->ctrl[CTRL_PUT], priv->ctrl[CTRL_GET],
69723 + priv->ctrl[CTRL_TOP]);
69724 +
69725 + return -ETIMEDOUT;
69726 +}
69727 +
69728 +static void ps3vram_out_ring(struct ps3vram_priv *priv, u32 data)
69729 +{
69730 + *(priv->fifo_ptr)++ = data;
69731 +}
69732 +
69733 +static void ps3vram_begin_ring(struct ps3vram_priv *priv, u32 chan,
69734 + u32 tag, u32 size)
69735 +{
69736 + ps3vram_out_ring(priv, (size << 18) | (chan << 13) | tag);
69737 +}
69738 +
69739 +static void ps3vram_rewind_ring(struct mtd_info *mtd)
69740 +{
69741 + struct ps3vram_priv *priv = mtd->priv;
69742 + u64 status;
69743 +
69744 + ps3vram_out_ring(priv, 0x20000000 | (FIFO_BASE + FIFO_OFFSET));
69745 +
69746 + priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET;
69747 +
69748 + /* asking the HV for a blit will kick the fifo */
69749 + status = lv1_gpu_context_attribute(priv->context_handle,
69750 + L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT,
69751 + 0, 0, 0, 0);
69752 + if (status)
69753 + dev_err(priv->dev, "%s:%d: lv1_gpu_context_attribute failed\n",
69754 + __func__, __LINE__);
69755 +
69756 + priv->fifo_ptr = priv->fifo_base;
69757 +}
69758 +
69759 +static void ps3vram_fire_ring(struct mtd_info *mtd)
69760 +{
69761 + struct ps3vram_priv *priv = mtd->priv;
69762 + u64 status;
69763 +
69764 + mutex_lock(&ps3_gpu_mutex);
69765 +
69766 + priv->ctrl[CTRL_PUT] = FIFO_BASE + FIFO_OFFSET +
69767 + (priv->fifo_ptr - priv->fifo_base) * sizeof(u32);
69768 +
69769 + /* asking the HV for a blit will kick the fifo */
69770 + status = lv1_gpu_context_attribute(priv->context_handle,
69771 + L1GPU_CONTEXT_ATTRIBUTE_FB_BLIT,
69772 + 0, 0, 0, 0);
69773 + if (status)
69774 + dev_err(priv->dev, "%s:%d: lv1_gpu_context_attribute failed\n",
69775 + __func__, __LINE__);
69776 +
69777 + if ((priv->fifo_ptr - priv->fifo_base) * sizeof(u32) >
69778 + FIFO_SIZE - 1024) {
69779 + dev_dbg(priv->dev, "%s:%d: fifo full, rewinding\n", __func__,
69780 + __LINE__);
69781 + ps3vram_wait_ring(mtd, 200);
69782 + ps3vram_rewind_ring(mtd);
69783 + }
69784 +
69785 + mutex_unlock(&ps3_gpu_mutex);
69786 +}
69787 +
69788 +static void ps3vram_bind(struct mtd_info *mtd)
69789 +{
69790 + struct ps3vram_priv *priv = mtd->priv;
69791 +
69792 + ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0, 1);
69793 + ps3vram_out_ring(priv, 0x31337303);
69794 + ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0x180, 3);
69795 + ps3vram_out_ring(priv, DMA_NOTIFIER_HANDLE_BASE + NOTIFIER);
69796 + ps3vram_out_ring(priv, 0xfeed0001); /* DMA system RAM instance */
69797 + ps3vram_out_ring(priv, 0xfeed0000); /* DMA video RAM instance */
69798 +
69799 + ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0, 1);
69800 + ps3vram_out_ring(priv, 0x3137c0de);
69801 + ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0x180, 3);
69802 + ps3vram_out_ring(priv, DMA_NOTIFIER_HANDLE_BASE + NOTIFIER);
69803 + ps3vram_out_ring(priv, 0xfeed0000); /* DMA video RAM instance */
69804 + ps3vram_out_ring(priv, 0xfeed0001); /* DMA system RAM instance */
69805 +
69806 + ps3vram_fire_ring(mtd);
69807 +}
69808 +
69809 +static int ps3vram_upload(struct mtd_info *mtd, unsigned int src_offset,
69810 + unsigned int dst_offset, int len, int count)
69811 +{
69812 + struct ps3vram_priv *priv = mtd->priv;
69813 +
69814 + ps3vram_begin_ring(priv, UPLOAD_SUBCH,
69815 + NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
69816 + ps3vram_out_ring(priv, XDR_IOIF + src_offset);
69817 + ps3vram_out_ring(priv, dst_offset);
69818 + ps3vram_out_ring(priv, len);
69819 + ps3vram_out_ring(priv, len);
69820 + ps3vram_out_ring(priv, len);
69821 + ps3vram_out_ring(priv, count);
69822 + ps3vram_out_ring(priv, (1 << 8) | 1);
69823 + ps3vram_out_ring(priv, 0);
69824 +
69825 + ps3vram_notifier_reset(mtd);
69826 + ps3vram_begin_ring(priv, UPLOAD_SUBCH,
69827 + NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
69828 + ps3vram_out_ring(priv, 0);
69829 + ps3vram_begin_ring(priv, UPLOAD_SUBCH, 0x100, 1);
69830 + ps3vram_out_ring(priv, 0);
69831 + ps3vram_fire_ring(mtd);
69832 + if (ps3vram_notifier_wait(mtd, 200) < 0) {
69833 + dev_dbg(priv->dev, "%s:%d: notifier timeout\n", __func__,
69834 + __LINE__);
69835 + return -1;
69836 + }
69837 +
69838 + return 0;
69839 +}
69840 +
69841 +static int ps3vram_download(struct mtd_info *mtd, unsigned int src_offset,
69842 + unsigned int dst_offset, int len, int count)
69843 +{
69844 + struct ps3vram_priv *priv = mtd->priv;
69845 +
69846 + ps3vram_begin_ring(priv, DOWNLOAD_SUBCH,
69847 + NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
69848 + ps3vram_out_ring(priv, src_offset);
69849 + ps3vram_out_ring(priv, XDR_IOIF + dst_offset);
69850 + ps3vram_out_ring(priv, len);
69851 + ps3vram_out_ring(priv, len);
69852 + ps3vram_out_ring(priv, len);
69853 + ps3vram_out_ring(priv, count);
69854 + ps3vram_out_ring(priv, (1 << 8) | 1);
69855 + ps3vram_out_ring(priv, 0);
69856 +
69857 + ps3vram_notifier_reset(mtd);
69858 + ps3vram_begin_ring(priv, DOWNLOAD_SUBCH,
69859 + NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
69860 + ps3vram_out_ring(priv, 0);
69861 + ps3vram_begin_ring(priv, DOWNLOAD_SUBCH, 0x100, 1);
69862 + ps3vram_out_ring(priv, 0);
69863 + ps3vram_fire_ring(mtd);
69864 + if (ps3vram_notifier_wait(mtd, 200) < 0) {
69865 + dev_dbg(priv->dev, "%s:%d: notifier timeout\n", __func__,
69866 + __LINE__);
69867 + return -1;
69868 + }
69869 +
69870 + return 0;
69871 +}
69872 +
69873 +static void ps3vram_cache_evict(struct mtd_info *mtd, int entry)
69874 +{
69875 + struct ps3vram_priv *priv = mtd->priv;
69876 + struct ps3vram_cache *cache = &priv->cache;
69877 +
69878 + if (cache->tags[entry].flags & CACHE_PAGE_DIRTY) {
69879 + dev_dbg(priv->dev, "%s:%d: flushing %d : 0x%08x\n", __func__,
69880 + __LINE__, entry, cache->tags[entry].address);
69881 + if (ps3vram_upload(mtd,
69882 + CACHE_OFFSET + entry * cache->page_size,
69883 + cache->tags[entry].address,
69884 + DMA_PAGE_SIZE,
69885 + cache->page_size / DMA_PAGE_SIZE) < 0) {
69886 + dev_dbg(priv->dev, "%s:%d: failed to upload from "
69887 + "0x%x to 0x%x size 0x%x\n", __func__, __LINE__,
69888 + entry * cache->page_size,
69889 + cache->tags[entry].address, cache->page_size);
69890 + }
69891 + cache->tags[entry].flags &= ~CACHE_PAGE_DIRTY;
69892 + }
69893 +}
69894 +
69895 +static void ps3vram_cache_load(struct mtd_info *mtd, int entry,
69896 + unsigned int address)
69897 +{
69898 + struct ps3vram_priv *priv = mtd->priv;
69899 + struct ps3vram_cache *cache = &priv->cache;
69900 +
69901 + dev_dbg(priv->dev, "%s:%d: fetching %d : 0x%08x\n", __func__, __LINE__,
69902 + entry, address);
69903 + if (ps3vram_download(mtd,
69904 + address,
69905 + CACHE_OFFSET + entry * cache->page_size,
69906 + DMA_PAGE_SIZE,
69907 + cache->page_size / DMA_PAGE_SIZE) < 0) {
69908 + dev_err(priv->dev, "%s:%d: failed to download from "
69909 + "0x%x to 0x%x size 0x%x\n", __func__, __LINE__, address,
69910 + entry * cache->page_size, cache->page_size);
69911 + }
69912 +
69913 + cache->tags[entry].address = address;
69914 + cache->tags[entry].flags |= CACHE_PAGE_PRESENT;
69915 +}
69916 +
69917 +
69918 +static void ps3vram_cache_flush(struct mtd_info *mtd)
69919 +{
69920 + struct ps3vram_priv *priv = mtd->priv;
69921 + struct ps3vram_cache *cache = &priv->cache;
69922 + int i;
69923 +
69924 + dev_dbg(priv->dev, "%s:%d: FLUSH\n", __func__, __LINE__);
69925 + for (i = 0; i < cache->page_count; i++) {
69926 + ps3vram_cache_evict(mtd, i);
69927 + cache->tags[i].flags = 0;
69928 + }
69929 +}
69930 +
69931 +static unsigned int ps3vram_cache_match(struct mtd_info *mtd, loff_t address)
69932 +{
69933 + struct ps3vram_priv *priv = mtd->priv;
69934 + struct ps3vram_cache *cache = &priv->cache;
69935 + unsigned int base;
69936 + unsigned int offset;
69937 + int i;
69938 + static int counter;
69939 +
69940 + offset = (unsigned int) (address & (cache->page_size - 1));
69941 + base = (unsigned int) (address - offset);
69942 +
69943 + /* fully associative check */
69944 + for (i = 0; i < cache->page_count; i++) {
69945 + if ((cache->tags[i].flags & CACHE_PAGE_PRESENT) &&
69946 + cache->tags[i].address == base) {
69947 + dev_dbg(priv->dev, "%s:%d: found entry %d : 0x%08x\n",
69948 + __func__, __LINE__, i, cache->tags[i].address);
69949 + return i;
69950 + }
69951 + }
69952 +
69953 + /* choose a random entry */
69954 + i = (jiffies + (counter++)) % cache->page_count;
69955 + dev_dbg(priv->dev, "%s:%d: using entry %d\n", __func__, __LINE__, i);
69956 +
69957 + ps3vram_cache_evict(mtd, i);
69958 + ps3vram_cache_load(mtd, i, base);
69959 +
69960 + return i;
69961 +}
69962 +
69963 +static int ps3vram_cache_init(struct mtd_info *mtd)
69964 +{
69965 + struct ps3vram_priv *priv = mtd->priv;
69966 +
69967 + priv->cache.page_count = CACHE_PAGE_COUNT;
69968 + priv->cache.page_size = CACHE_PAGE_SIZE;
69969 + priv->cache.tags = kzalloc(sizeof(struct ps3vram_tag) *
69970 + CACHE_PAGE_COUNT, GFP_KERNEL);
69971 + if (priv->cache.tags == NULL) {
69972 + dev_err(priv->dev, "%s:%d: could not allocate cache tags\n",
69973 + __func__, __LINE__);
69974 + return -ENOMEM;
69975 + }
69976 +
69977 + dev_info(priv->dev, "created ram cache: %d entries, %d KiB each\n",
69978 + CACHE_PAGE_COUNT, CACHE_PAGE_SIZE / 1024);
69979 +
69980 + return 0;
69981 +}
69982 +
69983 +static void ps3vram_cache_cleanup(struct mtd_info *mtd)
69984 +{
69985 + struct ps3vram_priv *priv = mtd->priv;
69986 +
69987 + ps3vram_cache_flush(mtd);
69988 + kfree(priv->cache.tags);
69989 +}
69990 +
69991 +static int ps3vram_erase(struct mtd_info *mtd, struct erase_info *instr)
69992 +{
69993 + struct ps3vram_priv *priv = mtd->priv;
69994 +
69995 + if (instr->addr + instr->len > mtd->size)
69996 + return -EINVAL;
69997 +
69998 + mutex_lock(&priv->lock);
69999 +
70000 + ps3vram_cache_flush(mtd);
70001 +
70002 + /* Set bytes to 0xFF */
70003 + memset_io(priv->ddr_base + instr->addr, 0xFF, instr->len);
70004 +
70005 + mutex_unlock(&priv->lock);
70006 +
70007 + instr->state = MTD_ERASE_DONE;
70008 + mtd_erase_callback(instr);
70009 +
70010 + return 0;
70011 +}
70012 +
70013 +static int ps3vram_read(struct mtd_info *mtd, loff_t from, size_t len,
70014 + size_t *retlen, u_char *buf)
70015 +{
70016 + struct ps3vram_priv *priv = mtd->priv;
70017 + unsigned int cached, count;
70018 +
70019 + dev_dbg(priv->dev, "%s:%d: from=0x%08x len=0x%zx\n", __func__, __LINE__,
70020 + (unsigned int)from, len);
70021 +
70022 + if (from >= mtd->size)
70023 + return -EINVAL;
70024 +
70025 + if (len > mtd->size - from)
70026 + len = mtd->size - from;
70027 +
70028 + /* Copy from vram to buf */
70029 + count = len;
70030 + while (count) {
70031 + unsigned int offset, avail;
70032 + unsigned int entry;
70033 +
70034 + offset = (unsigned int) (from & (priv->cache.page_size - 1));
70035 + avail = priv->cache.page_size - offset;
70036 +
70037 + mutex_lock(&priv->lock);
70038 +
70039 + entry = ps3vram_cache_match(mtd, from);
70040 + cached = CACHE_OFFSET + entry * priv->cache.page_size + offset;
70041 +
70042 + dev_dbg(priv->dev, "%s:%d: from=%08x cached=%08x offset=%08x "
70043 + "avail=%08x count=%08x\n", __func__, __LINE__,
70044 + (unsigned int)from, cached, offset, avail, count);
70045 +
70046 + if (avail > count)
70047 + avail = count;
70048 + memcpy(buf, priv->xdr_buf + cached, avail);
70049 +
70050 + mutex_unlock(&priv->lock);
70051 +
70052 + buf += avail;
70053 + count -= avail;
70054 + from += avail;
70055 + }
70056 +
70057 + *retlen = len;
70058 + return 0;
70059 +}
70060 +
70061 +static int ps3vram_write(struct mtd_info *mtd, loff_t to, size_t len,
70062 + size_t *retlen, const u_char *buf)
70063 +{
70064 + struct ps3vram_priv *priv = mtd->priv;
70065 + unsigned int cached, count;
70066 +
70067 + if (to >= mtd->size)
70068 + return -EINVAL;
70069 +
70070 + if (len > mtd->size - to)
70071 + len = mtd->size - to;
70072 +
70073 + /* Copy from buf to vram */
70074 + count = len;
70075 + while (count) {
70076 + unsigned int offset, avail;
70077 + unsigned int entry;
70078 +
70079 + offset = (unsigned int) (to & (priv->cache.page_size - 1));
70080 + avail = priv->cache.page_size - offset;
70081 +
70082 + mutex_lock(&priv->lock);
70083 +
70084 + entry = ps3vram_cache_match(mtd, to);
70085 + cached = CACHE_OFFSET + entry * priv->cache.page_size + offset;
70086 +
70087 + dev_dbg(priv->dev, "%s:%d: to=%08x cached=%08x offset=%08x "
70088 + "avail=%08x count=%08x\n", __func__, __LINE__,
70089 + (unsigned int)to, cached, offset, avail, count);
70090 +
70091 + if (avail > count)
70092 + avail = count;
70093 + memcpy(priv->xdr_buf + cached, buf, avail);
70094 +
70095 + priv->cache.tags[entry].flags |= CACHE_PAGE_DIRTY;
70096 +
70097 + mutex_unlock(&priv->lock);
70098 +
70099 + buf += avail;
70100 + count -= avail;
70101 + to += avail;
70102 + }
70103 +
70104 + *retlen = len;
70105 + return 0;
70106 +}
70107 +
70108 +static int __devinit ps3vram_probe(struct ps3_system_bus_device *dev)
70109 +{
70110 + struct ps3vram_priv *priv;
70111 + int status;
70112 + u64 ddr_lpar;
70113 + u64 ctrl_lpar;
70114 + u64 info_lpar;
70115 + u64 reports_lpar;
70116 + u64 ddr_size;
70117 + u64 reports_size;
70118 + int ret = -ENOMEM;
70119 + char *rest;
70120 +
70121 + ret = -EIO;
70122 + ps3vram_mtd.priv = kzalloc(sizeof(struct ps3vram_priv), GFP_KERNEL);
70123 + if (!ps3vram_mtd.priv)
70124 + goto out;
70125 + priv = ps3vram_mtd.priv;
70126 +
70127 + mutex_init(&priv->lock);
70128 + priv->dev = &dev->core;
70129 +
70130 + /* Allocate XDR buffer (1MiB aligned) */
70131 + priv->xdr_buf = (void *)__get_free_pages(GFP_KERNEL,
70132 + get_order(XDR_BUF_SIZE));
70133 + if (priv->xdr_buf == NULL) {
70134 + dev_dbg(&dev->core, "%s:%d: could not allocate XDR buffer\n",
70135 + __func__, __LINE__);
70136 + ret = -ENOMEM;
70137 + goto out_free_priv;
70138 + }
70139 +
70140 + /* Put FIFO at begginning of XDR buffer */
70141 + priv->fifo_base = (u32 *) (priv->xdr_buf + FIFO_OFFSET);
70142 + priv->fifo_ptr = priv->fifo_base;
70143 +
70144 + /* XXX: Need to open GPU, in case ps3fb or snd_ps3 aren't loaded */
70145 + if (ps3_open_hv_device(dev)) {
70146 + dev_err(&dev->core, "%s:%d: ps3_open_hv_device failed\n",
70147 + __func__, __LINE__);
70148 + ret = -EAGAIN;
70149 + goto out_close_gpu;
70150 + }
70151 +
70152 + /* Request memory */
70153 + status = -1;
70154 + ddr_size = memparse(size, &rest);
70155 + if (*rest == '-')
70156 + ddr_size -= ps3fb_videomemory.size;
70157 + ddr_size = ALIGN(ddr_size, 1024*1024);
70158 + if (ddr_size <= 0) {
70159 + dev_err(&dev->core, "%s:%d: specified size is too small\n",
70160 + __func__, __LINE__);
70161 + ret = -EINVAL;
70162 + goto out_close_gpu;
70163 + }
70164 +
70165 + while (ddr_size > 0) {
70166 + status = lv1_gpu_memory_allocate(ddr_size, 0, 0, 0, 0,
70167 + &priv->memory_handle,
70168 + &ddr_lpar);
70169 + if (!status)
70170 + break;
70171 + ddr_size -= 1024*1024;
70172 + }
70173 + if (status || ddr_size <= 0) {
70174 + dev_err(&dev->core, "%s:%d: lv1_gpu_memory_allocate failed\n",
70175 + __func__, __LINE__);
70176 + ret = -ENOMEM;
70177 + goto out_free_xdr_buf;
70178 + }
70179 +
70180 + /* Request context */
70181 + status = lv1_gpu_context_allocate(priv->memory_handle,
70182 + 0,
70183 + &priv->context_handle,
70184 + &ctrl_lpar,
70185 + &info_lpar,
70186 + &reports_lpar,
70187 + &reports_size);
70188 + if (status) {
70189 + dev_err(&dev->core, "%s:%d: lv1_gpu_context_allocate failed\n",
70190 + __func__, __LINE__);
70191 + ret = -ENOMEM;
70192 + goto out_free_memory;
70193 + }
70194 +
70195 + /* Map XDR buffer to RSX */
70196 + status = lv1_gpu_context_iomap(priv->context_handle, XDR_IOIF,
70197 + ps3_mm_phys_to_lpar(__pa(priv->xdr_buf)),
70198 + XDR_BUF_SIZE, 0);
70199 + if (status) {
70200 + dev_err(&dev->core, "%s:%d: lv1_gpu_context_iomap failed\n",
70201 + __func__, __LINE__);
70202 + ret = -ENOMEM;
70203 + goto out_free_context;
70204 + }
70205 +
70206 + priv->ddr_base = ioremap_flags(ddr_lpar, ddr_size, _PAGE_NO_CACHE);
70207 +
70208 + if (!priv->ddr_base) {
70209 + dev_err(&dev->core, "%s:%d: ioremap failed\n", __func__,
70210 + __LINE__);
70211 + ret = -ENOMEM;
70212 + goto out_free_context;
70213 + }
70214 +
70215 + priv->ctrl = ioremap(ctrl_lpar, 64 * 1024);
70216 + if (!priv->ctrl) {
70217 + dev_err(&dev->core, "%s:%d: ioremap failed\n", __func__,
70218 + __LINE__);
70219 + ret = -ENOMEM;
70220 + goto out_unmap_vram;
70221 + }
70222 +
70223 + priv->reports = ioremap(reports_lpar, reports_size);
70224 + if (!priv->reports) {
70225 + dev_err(&dev->core, "%s:%d: ioremap failed\n", __func__,
70226 + __LINE__);
70227 + ret = -ENOMEM;
70228 + goto out_unmap_ctrl;
70229 + }
70230 +
70231 + mutex_lock(&ps3_gpu_mutex);
70232 + ps3vram_init_ring(&ps3vram_mtd);
70233 + mutex_unlock(&ps3_gpu_mutex);
70234 +
70235 + ps3vram_mtd.name = "ps3vram";
70236 + ps3vram_mtd.size = ddr_size;
70237 + ps3vram_mtd.flags = MTD_CAP_RAM;
70238 + ps3vram_mtd.erase = ps3vram_erase;
70239 + ps3vram_mtd.point = NULL;
70240 + ps3vram_mtd.unpoint = NULL;
70241 + ps3vram_mtd.read = ps3vram_read;
70242 + ps3vram_mtd.write = ps3vram_write;
70243 + ps3vram_mtd.owner = THIS_MODULE;
70244 + ps3vram_mtd.type = MTD_RAM;
70245 + ps3vram_mtd.erasesize = CACHE_PAGE_SIZE;
70246 + ps3vram_mtd.writesize = 1;
70247 +
70248 + ps3vram_bind(&ps3vram_mtd);
70249 +
70250 + mutex_lock(&ps3_gpu_mutex);
70251 + ret = ps3vram_wait_ring(&ps3vram_mtd, 100);
70252 + mutex_unlock(&ps3_gpu_mutex);
70253 + if (ret < 0) {
70254 + dev_err(&dev->core, "%s:%d: failed to initialize channels\n",
70255 + __func__, __LINE__);
70256 + ret = -ETIMEDOUT;
70257 + goto out_unmap_reports;
70258 + }
70259 +
70260 + ps3vram_cache_init(&ps3vram_mtd);
70261 +
70262 + if (add_mtd_device(&ps3vram_mtd)) {
70263 + dev_err(&dev->core, "%s:%d: add_mtd_device failed\n",
70264 + __func__, __LINE__);
70265 + ret = -EAGAIN;
70266 + goto out_cache_cleanup;
70267 + }
70268 +
70269 + dev_info(&dev->core, "reserved %u MiB of gpu memory\n",
70270 + (unsigned int)(ddr_size / 1024 / 1024));
70271 +
70272 + return 0;
70273 +
70274 +out_cache_cleanup:
70275 + ps3vram_cache_cleanup(&ps3vram_mtd);
70276 +out_unmap_reports:
70277 + iounmap(priv->reports);
70278 +out_unmap_ctrl:
70279 + iounmap(priv->ctrl);
70280 +out_unmap_vram:
70281 + iounmap(priv->ddr_base);
70282 +out_free_context:
70283 + lv1_gpu_context_free(priv->context_handle);
70284 +out_free_memory:
70285 + lv1_gpu_memory_free(priv->memory_handle);
70286 +out_close_gpu:
70287 + ps3_close_hv_device(dev);
70288 +out_free_xdr_buf:
70289 + free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
70290 +out_free_priv:
70291 + kfree(ps3vram_mtd.priv);
70292 + ps3vram_mtd.priv = NULL;
70293 +out:
70294 + return ret;
70295 +}
70296 +
70297 +static int ps3vram_shutdown(struct ps3_system_bus_device *dev)
70298 +{
70299 + struct ps3vram_priv *priv;
70300 +
70301 + priv = ps3vram_mtd.priv;
70302 +
70303 + del_mtd_device(&ps3vram_mtd);
70304 + ps3vram_cache_cleanup(&ps3vram_mtd);
70305 + iounmap(priv->reports);
70306 + iounmap(priv->ctrl);
70307 + iounmap(priv->ddr_base);
70308 + lv1_gpu_context_free(priv->context_handle);
70309 + lv1_gpu_memory_free(priv->memory_handle);
70310 + ps3_close_hv_device(dev);
70311 + free_pages((unsigned long) priv->xdr_buf, get_order(XDR_BUF_SIZE));
70312 + kfree(priv);
70313 + return 0;
70314 +}
70315 +
70316 +static struct ps3_system_bus_driver ps3vram_driver = {
70317 + .match_id = PS3_MATCH_ID_GPU,
70318 + .match_sub_id = PS3_MATCH_SUB_ID_GPU_RAMDISK,
70319 + .core.name = DEVICE_NAME,
70320 + .core.owner = THIS_MODULE,
70321 + .probe = ps3vram_probe,
70322 + .remove = ps3vram_shutdown,
70323 + .shutdown = ps3vram_shutdown,
70324 +};
70325 +
70326 +static int __init ps3vram_init(void)
70327 +{
70328 + return ps3_system_bus_driver_register(&ps3vram_driver);
70329 +}
70330 +
70331 +static void __exit ps3vram_exit(void)
70332 +{
70333 + ps3_system_bus_driver_unregister(&ps3vram_driver);
70334 +}
70335 +
70336 +module_init(ps3vram_init);
70337 +module_exit(ps3vram_exit);
70338 +
70339 +MODULE_LICENSE("GPL");
70340 +MODULE_AUTHOR("Jim Paris <jim@jtan.com>");
70341 +MODULE_DESCRIPTION("MTD driver for PS3 video RAM");
70342 +MODULE_ALIAS(PS3_MODULE_ALIAS_GPU_RAMDISK);
70343 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/devices/slram.c linux-2.6.29-rc3.owrt/drivers/mtd/devices/slram.c
70344 --- linux-2.6.29.owrt/drivers/mtd/devices/slram.c 2009-05-10 22:04:39.000000000 +0200
70345 +++ linux-2.6.29-rc3.owrt/drivers/mtd/devices/slram.c 2009-05-10 23:48:28.000000000 +0200
70346 @@ -267,28 +267,22 @@
70347 if (*(szlength) != '+') {
70348 devlength = simple_strtoul(szlength, &buffer, 0);
70349 devlength = handle_unit(devlength, buffer) - devstart;
70350 - if (devlength < devstart)
70351 - goto err_out;
70352 -
70353 - devlength -= devstart;
70354 } else {
70355 devlength = simple_strtoul(szlength + 1, &buffer, 0);
70356 devlength = handle_unit(devlength, buffer);
70357 }
70358 T("slram: devname=%s, devstart=0x%lx, devlength=0x%lx\n",
70359 devname, devstart, devlength);
70360 - if (devlength % SLRAM_BLK_SZ != 0)
70361 - goto err_out;
70362 + if ((devstart < 0) || (devlength < 0) || (devlength % SLRAM_BLK_SZ != 0)) {
70363 + E("slram: Illegal start / length parameter.\n");
70364 + return(-EINVAL);
70365 + }
70366
70367 if ((devstart = register_device(devname, devstart, devlength))){
70368 unregister_devices();
70369 return((int)devstart);
70370 }
70371 return(0);
70372 -
70373 -err_out:
70374 - E("slram: Illegal length parameter.\n");
70375 - return(-EINVAL);
70376 }
70377
70378 #ifndef MODULE
70379 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/lpddr/Kconfig linux-2.6.29-rc3.owrt/drivers/mtd/lpddr/Kconfig
70380 --- linux-2.6.29.owrt/drivers/mtd/lpddr/Kconfig 2009-05-10 22:04:39.000000000 +0200
70381 +++ linux-2.6.29-rc3.owrt/drivers/mtd/lpddr/Kconfig 2009-05-10 23:48:28.000000000 +0200
70382 @@ -12,7 +12,6 @@
70383 DDR memories, intended for battery-operated systems.
70384
70385 config MTD_QINFO_PROBE
70386 - depends on MTD_LPDDR
70387 tristate "Detect flash chips by QINFO probe"
70388 help
70389 Device Information for LPDDR chips is offered through the Overlay
70390 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/maps/bfin-async-flash.c linux-2.6.29-rc3.owrt/drivers/mtd/maps/bfin-async-flash.c
70391 --- linux-2.6.29.owrt/drivers/mtd/maps/bfin-async-flash.c 2009-05-10 22:04:39.000000000 +0200
70392 +++ linux-2.6.29-rc3.owrt/drivers/mtd/maps/bfin-async-flash.c 2009-05-10 23:48:28.000000000 +0200
70393 @@ -152,18 +152,14 @@
70394
70395 if (gpio_request(state->enet_flash_pin, DRIVER_NAME)) {
70396 pr_devinit(KERN_ERR DRIVER_NAME ": Failed to request gpio %d\n", state->enet_flash_pin);
70397 - kfree(state);
70398 return -EBUSY;
70399 }
70400 gpio_direction_output(state->enet_flash_pin, 1);
70401
70402 pr_devinit(KERN_NOTICE DRIVER_NAME ": probing %d-bit flash bus\n", state->map.bankwidth * 8);
70403 state->mtd = do_map_probe(memory->name, &state->map);
70404 - if (!state->mtd) {
70405 - gpio_free(state->enet_flash_pin);
70406 - kfree(state);
70407 + if (!state->mtd)
70408 return -ENXIO;
70409 - }
70410
70411 #ifdef CONFIG_MTD_PARTITIONS
70412 ret = parse_mtd_partitions(state->mtd, part_probe_types, &pdata->parts, 0);
70413 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/maps/ck804xrom.c linux-2.6.29-rc3.owrt/drivers/mtd/maps/ck804xrom.c
70414 --- linux-2.6.29.owrt/drivers/mtd/maps/ck804xrom.c 2009-05-10 22:04:39.000000000 +0200
70415 +++ linux-2.6.29-rc3.owrt/drivers/mtd/maps/ck804xrom.c 2009-05-10 23:48:28.000000000 +0200
70416 @@ -342,9 +342,9 @@
70417 { 0, }
70418 };
70419
70420 -#if 0
70421 MODULE_DEVICE_TABLE(pci, ck804xrom_pci_tbl);
70422
70423 +#if 0
70424 static struct pci_driver ck804xrom_driver = {
70425 .name = MOD_NAME,
70426 .id_table = ck804xrom_pci_tbl,
70427 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/maps/Kconfig linux-2.6.29-rc3.owrt/drivers/mtd/maps/Kconfig
70428 --- linux-2.6.29.owrt/drivers/mtd/maps/Kconfig 2009-05-10 22:04:39.000000000 +0200
70429 +++ linux-2.6.29-rc3.owrt/drivers/mtd/maps/Kconfig 2009-05-10 23:48:28.000000000 +0200
70430 @@ -491,7 +491,7 @@
70431
70432 config MTD_BFIN_ASYNC
70433 tristate "Blackfin BF533-STAMP Flash Chip Support"
70434 - depends on BFIN533_STAMP && MTD_CFI && MTD_COMPLEX_MAPPINGS
70435 + depends on BFIN533_STAMP && MTD_CFI
70436 select MTD_PARTITIONS
70437 default y
70438 help
70439 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/maps/physmap.c linux-2.6.29-rc3.owrt/drivers/mtd/maps/physmap.c
70440 --- linux-2.6.29.owrt/drivers/mtd/maps/physmap.c 2009-05-10 22:04:39.000000000 +0200
70441 +++ linux-2.6.29-rc3.owrt/drivers/mtd/maps/physmap.c 2009-05-10 23:48:28.000000000 +0200
70442 @@ -29,7 +29,6 @@
70443 struct map_info map[MAX_RESOURCES];
70444 #ifdef CONFIG_MTD_PARTITIONS
70445 int nr_parts;
70446 - struct mtd_partition *parts;
70447 #endif
70448 };
70449
70450 @@ -46,29 +45,25 @@
70451
70452 physmap_data = dev->dev.platform_data;
70453
70454 - if (info->cmtd) {
70455 -#ifdef CONFIG_MTD_PARTITIONS
70456 - if (info->nr_parts || physmap_data->nr_parts)
70457 - del_mtd_partitions(info->cmtd);
70458 - else
70459 - del_mtd_device(info->cmtd);
70460 -#else
70461 - del_mtd_device(info->cmtd);
70462 -#endif
70463 - }
70464 -#ifdef CONFIG_MTD_PARTITIONS
70465 - if (info->nr_parts)
70466 - kfree(info->parts);
70467 -#endif
70468 -
70469 #ifdef CONFIG_MTD_CONCAT
70470 - if (info->cmtd != info->mtd[0])
70471 + if (info->cmtd != info->mtd[0]) {
70472 + del_mtd_device(info->cmtd);
70473 mtd_concat_destroy(info->cmtd);
70474 + }
70475 #endif
70476
70477 for (i = 0; i < MAX_RESOURCES; i++) {
70478 - if (info->mtd[i] != NULL)
70479 + if (info->mtd[i] != NULL) {
70480 +#ifdef CONFIG_MTD_PARTITIONS
70481 + if (info->nr_parts || physmap_data->nr_parts)
70482 + del_mtd_partitions(info->mtd[i]);
70483 + else
70484 + del_mtd_device(info->mtd[i]);
70485 +#else
70486 + del_mtd_device(info->mtd[i]);
70487 +#endif
70488 map_destroy(info->mtd[i]);
70489 + }
70490 }
70491 return 0;
70492 }
70493 @@ -91,6 +86,9 @@
70494 int err = 0;
70495 int i;
70496 int devices_found = 0;
70497 +#ifdef CONFIG_MTD_PARTITIONS
70498 + struct mtd_partition *parts;
70499 +#endif
70500
70501 physmap_data = dev->dev.platform_data;
70502 if (physmap_data == NULL)
70503 @@ -169,11 +167,10 @@
70504 goto err_out;
70505
70506 #ifdef CONFIG_MTD_PARTITIONS
70507 - err = parse_mtd_partitions(info->cmtd, part_probe_types,
70508 - &info->parts, 0);
70509 + err = parse_mtd_partitions(info->cmtd, part_probe_types, &parts, 0);
70510 if (err > 0) {
70511 - add_mtd_partitions(info->cmtd, info->parts, err);
70512 - info->nr_parts = err;
70513 + add_mtd_partitions(info->cmtd, parts, err);
70514 + kfree(parts);
70515 return 0;
70516 }
70517
70518 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/maps/sa1100-flash.c linux-2.6.29-rc3.owrt/drivers/mtd/maps/sa1100-flash.c
70519 --- linux-2.6.29.owrt/drivers/mtd/maps/sa1100-flash.c 2009-05-10 22:04:39.000000000 +0200
70520 +++ linux-2.6.29-rc3.owrt/drivers/mtd/maps/sa1100-flash.c 2009-05-10 23:48:28.000000000 +0200
70521 @@ -453,7 +453,7 @@
70522 .resume = sa1100_mtd_resume,
70523 .shutdown = sa1100_mtd_shutdown,
70524 .driver = {
70525 - .name = "sa1100-mtd",
70526 + .name = "flash",
70527 .owner = THIS_MODULE,
70528 },
70529 };
70530 @@ -474,4 +474,4 @@
70531 MODULE_AUTHOR("Nicolas Pitre");
70532 MODULE_DESCRIPTION("SA1100 CFI map driver");
70533 MODULE_LICENSE("GPL");
70534 -MODULE_ALIAS("platform:sa1100-mtd");
70535 +MODULE_ALIAS("platform:flash");
70536 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/nand/atmel_nand.c linux-2.6.29-rc3.owrt/drivers/mtd/nand/atmel_nand.c
70537 --- linux-2.6.29.owrt/drivers/mtd/nand/atmel_nand.c 2009-05-10 22:04:39.000000000 +0200
70538 +++ linux-2.6.29-rc3.owrt/drivers/mtd/nand/atmel_nand.c 2009-05-10 23:48:28.000000000 +0200
70539 @@ -139,8 +139,7 @@
70540 struct nand_chip *nand_chip = mtd->priv;
70541 struct atmel_nand_host *host = nand_chip->priv;
70542
70543 - return gpio_get_value(host->board->rdy_pin) ^
70544 - !!host->board->rdy_pin_active_low;
70545 + return gpio_get_value(host->board->rdy_pin);
70546 }
70547
70548 /*
70549 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/nand/orion_nand.c linux-2.6.29-rc3.owrt/drivers/mtd/nand/orion_nand.c
70550 --- linux-2.6.29.owrt/drivers/mtd/nand/orion_nand.c 2009-05-10 22:04:39.000000000 +0200
70551 +++ linux-2.6.29-rc3.owrt/drivers/mtd/nand/orion_nand.c 2009-05-10 23:48:28.000000000 +0200
70552 @@ -149,7 +149,7 @@
70553
70554 static struct platform_driver orion_nand_driver = {
70555 .probe = orion_nand_probe,
70556 - .remove = __devexit_p(orion_nand_remove),
70557 + .remove = orion_nand_remove,
70558 .driver = {
70559 .name = "orion_nand",
70560 .owner = THIS_MODULE,
70561 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/build.c linux-2.6.29-rc3.owrt/drivers/mtd/ubi/build.c
70562 --- linux-2.6.29.owrt/drivers/mtd/ubi/build.c 2009-05-10 22:04:39.000000000 +0200
70563 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/build.c 2009-05-10 23:48:28.000000000 +0200
70564 @@ -263,12 +263,8 @@
70565 return ret;
70566 }
70567
70568 -static void dev_release(struct device *dev)
70569 -{
70570 - struct ubi_device *ubi = container_of(dev, struct ubi_device, dev);
70571 -
70572 - kfree(ubi);
70573 -}
70574 +/* Fake "release" method for UBI devices */
70575 +static void dev_release(struct device *dev) { }
70576
70577 /**
70578 * ubi_sysfs_init - initialize sysfs for an UBI device.
70579 @@ -384,7 +380,7 @@
70580 */
70581 static int uif_init(struct ubi_device *ubi)
70582 {
70583 - int i, err;
70584 + int i, err, do_free = 0;
70585 dev_t dev;
70586
70587 sprintf(ubi->ubi_name, UBI_NAME_STR "%d", ubi->ubi_num);
70588 @@ -431,10 +427,13 @@
70589
70590 out_volumes:
70591 kill_volumes(ubi);
70592 + do_free = 0;
70593 out_sysfs:
70594 ubi_sysfs_close(ubi);
70595 cdev_del(&ubi->cdev);
70596 out_unreg:
70597 + if (do_free)
70598 + free_user_volumes(ubi);
70599 unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1);
70600 ubi_err("cannot initialize UBI %s, error %d", ubi->ubi_name, err);
70601 return err;
70602 @@ -948,12 +947,6 @@
70603 if (ubi->bgt_thread)
70604 kthread_stop(ubi->bgt_thread);
70605
70606 - /*
70607 - * Get a reference to the device in order to prevent 'dev_release()'
70608 - * from freeing @ubi object.
70609 - */
70610 - get_device(&ubi->dev);
70611 -
70612 uif_close(ubi);
70613 ubi_wl_close(ubi);
70614 free_internal_volumes(ubi);
70615 @@ -965,7 +958,7 @@
70616 vfree(ubi->dbg_peb_buf);
70617 #endif
70618 ubi_msg("mtd%d is detached from ubi%d", ubi->mtd->index, ubi->ubi_num);
70619 - put_device(&ubi->dev);
70620 + kfree(ubi);
70621 return 0;
70622 }
70623
70624 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/cdev.c linux-2.6.29-rc3.owrt/drivers/mtd/ubi/cdev.c
70625 --- linux-2.6.29.owrt/drivers/mtd/ubi/cdev.c 2009-05-10 22:04:39.000000000 +0200
70626 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/cdev.c 2009-05-10 23:48:28.000000000 +0200
70627 @@ -40,9 +40,9 @@
70628 #include <linux/ioctl.h>
70629 #include <linux/capability.h>
70630 #include <linux/uaccess.h>
70631 -#include <linux/compat.h>
70632 -#include <linux/math64.h>
70633 +#include <linux/smp_lock.h>
70634 #include <mtd/ubi-user.h>
70635 +#include <asm/div64.h>
70636 #include "ubi.h"
70637
70638 /**
70639 @@ -195,6 +195,7 @@
70640 int err, lnum, off, len, tbuf_size;
70641 size_t count_save = count;
70642 void *tbuf;
70643 + uint64_t tmp;
70644
70645 dbg_gen("read %zd bytes from offset %lld of volume %d",
70646 count, *offp, vol->vol_id);
70647 @@ -224,7 +225,10 @@
70648 return -ENOMEM;
70649
70650 len = count > tbuf_size ? tbuf_size : count;
70651 - lnum = div_u64_rem(*offp, vol->usable_leb_size, &off);
70652 +
70653 + tmp = *offp;
70654 + off = do_div(tmp, vol->usable_leb_size);
70655 + lnum = tmp;
70656
70657 do {
70658 cond_resched();
70659 @@ -259,9 +263,12 @@
70660 return err ? err : count_save - count;
70661 }
70662
70663 +#ifdef CONFIG_MTD_UBI_DEBUG_USERSPACE_IO
70664 +
70665 /*
70666 * This function allows to directly write to dynamic UBI volumes, without
70667 - * issuing the volume update operation.
70668 + * issuing the volume update operation. Available only as a debugging feature.
70669 + * Very useful for testing UBI.
70670 */
70671 static ssize_t vol_cdev_direct_write(struct file *file, const char __user *buf,
70672 size_t count, loff_t *offp)
70673 @@ -272,9 +279,7 @@
70674 int lnum, off, len, tbuf_size, err = 0;
70675 size_t count_save = count;
70676 char *tbuf;
70677 -
70678 - if (!vol->direct_writes)
70679 - return -EPERM;
70680 + uint64_t tmp;
70681
70682 dbg_gen("requested: write %zd bytes to offset %lld of volume %u",
70683 count, *offp, vol->vol_id);
70684 @@ -282,7 +287,10 @@
70685 if (vol->vol_type == UBI_STATIC_VOLUME)
70686 return -EROFS;
70687
70688 - lnum = div_u64_rem(*offp, vol->usable_leb_size, &off);
70689 + tmp = *offp;
70690 + off = do_div(tmp, vol->usable_leb_size);
70691 + lnum = tmp;
70692 +
70693 if (off & (ubi->min_io_size - 1)) {
70694 dbg_err("unaligned position");
70695 return -EINVAL;
70696 @@ -339,6 +347,10 @@
70697 return err ? err : count_save - count;
70698 }
70699
70700 +#else
70701 +#define vol_cdev_direct_write(file, buf, count, offp) (-EPERM)
70702 +#endif /* CONFIG_MTD_UBI_DEBUG_USERSPACE_IO */
70703 +
70704 static ssize_t vol_cdev_write(struct file *file, const char __user *buf,
70705 size_t count, loff_t *offp)
70706 {
70707 @@ -390,8 +402,8 @@
70708 return count;
70709 }
70710
70711 -static long vol_cdev_ioctl(struct file *file, unsigned int cmd,
70712 - unsigned long arg)
70713 +static int vol_cdev_ioctl(struct inode *inode, struct file *file,
70714 + unsigned int cmd, unsigned long arg)
70715 {
70716 int err = 0;
70717 struct ubi_volume_desc *desc = file->private_data;
70718 @@ -475,6 +487,7 @@
70719 break;
70720 }
70721
70722 +#ifdef CONFIG_MTD_UBI_DEBUG_USERSPACE_IO
70723 /* Logical eraseblock erasure command */
70724 case UBI_IOCEBER:
70725 {
70726 @@ -505,77 +518,13 @@
70727 err = ubi_wl_flush(ubi);
70728 break;
70729 }
70730 -
70731 - /* Logical eraseblock map command */
70732 - case UBI_IOCEBMAP:
70733 - {
70734 - struct ubi_map_req req;
70735 -
70736 - err = copy_from_user(&req, argp, sizeof(struct ubi_map_req));
70737 - if (err) {
70738 - err = -EFAULT;
70739 - break;
70740 - }
70741 - err = ubi_leb_map(desc, req.lnum, req.dtype);
70742 - break;
70743 - }
70744 -
70745 - /* Logical eraseblock un-map command */
70746 - case UBI_IOCEBUNMAP:
70747 - {
70748 - int32_t lnum;
70749 -
70750 - err = get_user(lnum, (__user int32_t *)argp);
70751 - if (err) {
70752 - err = -EFAULT;
70753 - break;
70754 - }
70755 - err = ubi_leb_unmap(desc, lnum);
70756 - break;
70757 - }
70758 -
70759 - /* Check if logical eraseblock is mapped command */
70760 - case UBI_IOCEBISMAP:
70761 - {
70762 - int32_t lnum;
70763 -
70764 - err = get_user(lnum, (__user int32_t *)argp);
70765 - if (err) {
70766 - err = -EFAULT;
70767 - break;
70768 - }
70769 - err = ubi_is_mapped(desc, lnum);
70770 - break;
70771 - }
70772 -
70773 - /* Set volume property command*/
70774 - case UBI_IOCSETPROP:
70775 - {
70776 - struct ubi_set_prop_req req;
70777 -
70778 - err = copy_from_user(&req, argp,
70779 - sizeof(struct ubi_set_prop_req));
70780 - if (err) {
70781 - err = -EFAULT;
70782 - break;
70783 - }
70784 - switch (req.property) {
70785 - case UBI_PROP_DIRECT_WRITE:
70786 - mutex_lock(&ubi->volumes_mutex);
70787 - desc->vol->direct_writes = !!req.value;
70788 - mutex_unlock(&ubi->volumes_mutex);
70789 - break;
70790 - default:
70791 - err = -EINVAL;
70792 - break;
70793 - }
70794 - break;
70795 - }
70796 +#endif
70797
70798 default:
70799 err = -ENOTTY;
70800 break;
70801 }
70802 +
70803 return err;
70804 }
70805
70806 @@ -813,8 +762,8 @@
70807 return err;
70808 }
70809
70810 -static long ubi_cdev_ioctl(struct file *file, unsigned int cmd,
70811 - unsigned long arg)
70812 +static int ubi_cdev_ioctl(struct inode *inode, struct file *file,
70813 + unsigned int cmd, unsigned long arg)
70814 {
70815 int err = 0;
70816 struct ubi_device *ubi;
70817 @@ -824,7 +773,7 @@
70818 if (!capable(CAP_SYS_RESOURCE))
70819 return -EPERM;
70820
70821 - ubi = ubi_get_by_major(imajor(file->f_mapping->host));
70822 + ubi = ubi_get_by_major(imajor(inode));
70823 if (!ubi)
70824 return -ENODEV;
70825
70826 @@ -894,6 +843,7 @@
70827 case UBI_IOCRSVOL:
70828 {
70829 int pebs;
70830 + uint64_t tmp;
70831 struct ubi_rsvol_req req;
70832
70833 dbg_gen("re-size volume");
70834 @@ -913,8 +863,9 @@
70835 break;
70836 }
70837
70838 - pebs = div_u64(req.bytes + desc->vol->usable_leb_size - 1,
70839 - desc->vol->usable_leb_size);
70840 + tmp = req.bytes;
70841 + pebs = !!do_div(tmp, desc->vol->usable_leb_size);
70842 + pebs += tmp;
70843
70844 mutex_lock(&ubi->volumes_mutex);
70845 err = ubi_resize_volume(desc, pebs);
70846 @@ -958,8 +909,8 @@
70847 return err;
70848 }
70849
70850 -static long ctrl_cdev_ioctl(struct file *file, unsigned int cmd,
70851 - unsigned long arg)
70852 +static int ctrl_cdev_ioctl(struct inode *inode, struct file *file,
70853 + unsigned int cmd, unsigned long arg)
70854 {
70855 int err = 0;
70856 void __user *argp = (void __user *)arg;
70857 @@ -1035,59 +986,26 @@
70858 return err;
70859 }
70860
70861 -#ifdef CONFIG_COMPAT
70862 -static long vol_cdev_compat_ioctl(struct file *file, unsigned int cmd,
70863 - unsigned long arg)
70864 -{
70865 - unsigned long translated_arg = (unsigned long)compat_ptr(arg);
70866 -
70867 - return vol_cdev_ioctl(file, cmd, translated_arg);
70868 -}
70869 -
70870 -static long ubi_cdev_compat_ioctl(struct file *file, unsigned int cmd,
70871 - unsigned long arg)
70872 -{
70873 - unsigned long translated_arg = (unsigned long)compat_ptr(arg);
70874 -
70875 - return ubi_cdev_ioctl(file, cmd, translated_arg);
70876 -}
70877 -
70878 -static long ctrl_cdev_compat_ioctl(struct file *file, unsigned int cmd,
70879 - unsigned long arg)
70880 -{
70881 - unsigned long translated_arg = (unsigned long)compat_ptr(arg);
70882 -
70883 - return ctrl_cdev_ioctl(file, cmd, translated_arg);
70884 -}
70885 -#else
70886 -#define vol_cdev_compat_ioctl NULL
70887 -#define ubi_cdev_compat_ioctl NULL
70888 -#define ctrl_cdev_compat_ioctl NULL
70889 -#endif
70890 -
70891 -/* UBI volume character device operations */
70892 -const struct file_operations ubi_vol_cdev_operations = {
70893 - .owner = THIS_MODULE,
70894 - .open = vol_cdev_open,
70895 - .release = vol_cdev_release,
70896 - .llseek = vol_cdev_llseek,
70897 - .read = vol_cdev_read,
70898 - .write = vol_cdev_write,
70899 - .unlocked_ioctl = vol_cdev_ioctl,
70900 - .compat_ioctl = vol_cdev_compat_ioctl,
70901 +/* UBI control character device operations */
70902 +struct file_operations ubi_ctrl_cdev_operations = {
70903 + .ioctl = ctrl_cdev_ioctl,
70904 + .owner = THIS_MODULE,
70905 };
70906
70907 /* UBI character device operations */
70908 -const struct file_operations ubi_cdev_operations = {
70909 - .owner = THIS_MODULE,
70910 - .llseek = no_llseek,
70911 - .unlocked_ioctl = ubi_cdev_ioctl,
70912 - .compat_ioctl = ubi_cdev_compat_ioctl,
70913 +struct file_operations ubi_cdev_operations = {
70914 + .owner = THIS_MODULE,
70915 + .ioctl = ubi_cdev_ioctl,
70916 + .llseek = no_llseek,
70917 };
70918
70919 -/* UBI control character device operations */
70920 -const struct file_operations ubi_ctrl_cdev_operations = {
70921 - .owner = THIS_MODULE,
70922 - .unlocked_ioctl = ctrl_cdev_ioctl,
70923 - .compat_ioctl = ctrl_cdev_compat_ioctl,
70924 +/* UBI volume character device operations */
70925 +struct file_operations ubi_vol_cdev_operations = {
70926 + .owner = THIS_MODULE,
70927 + .open = vol_cdev_open,
70928 + .release = vol_cdev_release,
70929 + .llseek = vol_cdev_llseek,
70930 + .read = vol_cdev_read,
70931 + .write = vol_cdev_write,
70932 + .ioctl = vol_cdev_ioctl,
70933 };
70934 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/gluebi.c linux-2.6.29-rc3.owrt/drivers/mtd/ubi/gluebi.c
70935 --- linux-2.6.29.owrt/drivers/mtd/ubi/gluebi.c 2009-05-10 22:04:39.000000000 +0200
70936 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/gluebi.c 2009-05-10 23:48:28.000000000 +0200
70937 @@ -28,7 +28,7 @@
70938 * eraseblock size is equivalent to the logical eraseblock size of the volume.
70939 */
70940
70941 -#include <linux/math64.h>
70942 +#include <asm/div64.h>
70943 #include "ubi.h"
70944
70945 /**
70946 @@ -109,6 +109,7 @@
70947 int err = 0, lnum, offs, total_read;
70948 struct ubi_volume *vol;
70949 struct ubi_device *ubi;
70950 + uint64_t tmp = from;
70951
70952 dbg_gen("read %zd bytes from offset %lld", len, from);
70953
70954 @@ -118,7 +119,9 @@
70955 vol = container_of(mtd, struct ubi_volume, gluebi_mtd);
70956 ubi = vol->ubi;
70957
70958 - lnum = div_u64_rem(from, mtd->erasesize, &offs);
70959 + offs = do_div(tmp, mtd->erasesize);
70960 + lnum = tmp;
70961 +
70962 total_read = len;
70963 while (total_read) {
70964 size_t to_read = mtd->erasesize - offs;
70965 @@ -157,6 +160,7 @@
70966 int err = 0, lnum, offs, total_written;
70967 struct ubi_volume *vol;
70968 struct ubi_device *ubi;
70969 + uint64_t tmp = to;
70970
70971 dbg_gen("write %zd bytes to offset %lld", len, to);
70972
70973 @@ -169,7 +173,8 @@
70974 if (ubi->ro_mode)
70975 return -EROFS;
70976
70977 - lnum = div_u64_rem(to, mtd->erasesize, &offs);
70978 + offs = do_div(tmp, mtd->erasesize);
70979 + lnum = tmp;
70980
70981 if (len % mtd->writesize || offs % mtd->writesize)
70982 return -EINVAL;
70983 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/Kconfig.debug linux-2.6.29-rc3.owrt/drivers/mtd/ubi/Kconfig.debug
70984 --- linux-2.6.29.owrt/drivers/mtd/ubi/Kconfig.debug 2009-05-10 22:04:39.000000000 +0200
70985 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/Kconfig.debug 2009-05-10 23:48:28.000000000 +0200
70986 @@ -33,6 +33,16 @@
70987 This option switches the background thread off by default. The thread
70988 may be also be enabled/disabled via UBI sysfs.
70989
70990 +config MTD_UBI_DEBUG_USERSPACE_IO
70991 + bool "Direct user-space write/erase support"
70992 + default n
70993 + depends on MTD_UBI_DEBUG
70994 + help
70995 + By default, users cannot directly write and erase individual
70996 + eraseblocks of dynamic volumes, and have to use update operation
70997 + instead. This option enables this capability - it is very useful for
70998 + debugging and testing.
70999 +
71000 config MTD_UBI_DEBUG_EMULATE_BITFLIPS
71001 bool "Emulate flash bit-flips"
71002 depends on MTD_UBI_DEBUG
71003 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/scan.c linux-2.6.29-rc3.owrt/drivers/mtd/ubi/scan.c
71004 --- linux-2.6.29.owrt/drivers/mtd/ubi/scan.c 2009-05-10 22:04:39.000000000 +0200
71005 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/scan.c 2009-05-10 23:48:28.000000000 +0200
71006 @@ -42,7 +42,7 @@
71007
71008 #include <linux/err.h>
71009 #include <linux/crc32.h>
71010 -#include <linux/math64.h>
71011 +#include <asm/div64.h>
71012 #include "ubi.h"
71013
71014 #ifdef CONFIG_MTD_UBI_DEBUG_PARANOID
71015 @@ -904,8 +904,10 @@
71016 dbg_msg("scanning is finished");
71017
71018 /* Calculate mean erase counter */
71019 - if (si->ec_count)
71020 - si->mean_ec = div_u64(si->ec_sum, si->ec_count);
71021 + if (si->ec_count) {
71022 + do_div(si->ec_sum, si->ec_count);
71023 + si->mean_ec = si->ec_sum;
71024 + }
71025
71026 if (si->is_empty)
71027 ubi_msg("empty MTD device detected");
71028 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/ubi.h linux-2.6.29-rc3.owrt/drivers/mtd/ubi/ubi.h
71029 --- linux-2.6.29.owrt/drivers/mtd/ubi/ubi.h 2009-05-10 22:04:39.000000000 +0200
71030 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/ubi.h 2009-05-10 23:48:28.000000000 +0200
71031 @@ -206,7 +206,6 @@
71032 * @upd_marker: %1 if the update marker is set for this volume
71033 * @updating: %1 if the volume is being updated
71034 * @changing_leb: %1 if the atomic LEB change ioctl command is in progress
71035 - * @direct_writes: %1 if direct writes are enabled for this volume
71036 *
71037 * @gluebi_desc: gluebi UBI volume descriptor
71038 * @gluebi_refcount: reference count of the gluebi MTD device
71039 @@ -254,7 +253,6 @@
71040 unsigned int upd_marker:1;
71041 unsigned int updating:1;
71042 unsigned int changing_leb:1;
71043 - unsigned int direct_writes:1;
71044
71045 #ifdef CONFIG_MTD_UBI_GLUEBI
71046 /*
71047 @@ -306,8 +304,7 @@
71048 * @vtbl_size: size of the volume table in bytes
71049 * @vtbl: in-RAM volume table copy
71050 * @volumes_mutex: protects on-flash volume table and serializes volume
71051 - * changes, like creation, deletion, update, re-size,
71052 - * re-name and set property
71053 + * changes, like creation, deletion, update, re-size and re-name
71054 *
71055 * @max_ec: current highest erase counter value
71056 * @mean_ec: current mean erase counter value
71057 @@ -452,9 +449,9 @@
71058 };
71059
71060 extern struct kmem_cache *ubi_wl_entry_slab;
71061 -extern const struct file_operations ubi_ctrl_cdev_operations;
71062 -extern const struct file_operations ubi_cdev_operations;
71063 -extern const struct file_operations ubi_vol_cdev_operations;
71064 +extern struct file_operations ubi_ctrl_cdev_operations;
71065 +extern struct file_operations ubi_cdev_operations;
71066 +extern struct file_operations ubi_vol_cdev_operations;
71067 extern struct class *ubi_class;
71068 extern struct mutex ubi_devices_mutex;
71069
71070 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/upd.c linux-2.6.29-rc3.owrt/drivers/mtd/ubi/upd.c
71071 --- linux-2.6.29.owrt/drivers/mtd/ubi/upd.c 2009-05-10 22:04:39.000000000 +0200
71072 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/upd.c 2009-05-10 23:48:28.000000000 +0200
71073 @@ -40,7 +40,7 @@
71074
71075 #include <linux/err.h>
71076 #include <linux/uaccess.h>
71077 -#include <linux/math64.h>
71078 +#include <asm/div64.h>
71079 #include "ubi.h"
71080
71081 /**
71082 @@ -89,6 +89,7 @@
71083 long long bytes)
71084 {
71085 int err;
71086 + uint64_t tmp;
71087 struct ubi_vtbl_record vtbl_rec;
71088
71089 dbg_gen("clear update marker for volume %d", vol->vol_id);
71090 @@ -100,9 +101,9 @@
71091
71092 if (vol->vol_type == UBI_STATIC_VOLUME) {
71093 vol->corrupted = 0;
71094 - vol->used_bytes = bytes;
71095 - vol->used_ebs = div_u64_rem(bytes, vol->usable_leb_size,
71096 - &vol->last_eb_bytes);
71097 + vol->used_bytes = tmp = bytes;
71098 + vol->last_eb_bytes = do_div(tmp, vol->usable_leb_size);
71099 + vol->used_ebs = tmp;
71100 if (vol->last_eb_bytes)
71101 vol->used_ebs += 1;
71102 else
71103 @@ -130,6 +131,7 @@
71104 long long bytes)
71105 {
71106 int i, err;
71107 + uint64_t tmp;
71108
71109 dbg_gen("start update of volume %d, %llu bytes", vol->vol_id, bytes);
71110 ubi_assert(!vol->updating && !vol->changing_leb);
71111 @@ -159,8 +161,9 @@
71112 if (!vol->upd_buf)
71113 return -ENOMEM;
71114
71115 - vol->upd_ebs = div_u64(bytes + vol->usable_leb_size - 1,
71116 - vol->usable_leb_size);
71117 + tmp = bytes;
71118 + vol->upd_ebs = !!do_div(tmp, vol->usable_leb_size);
71119 + vol->upd_ebs += tmp;
71120 vol->upd_bytes = bytes;
71121 vol->upd_received = 0;
71122 return 0;
71123 @@ -279,6 +282,7 @@
71124 int ubi_more_update_data(struct ubi_device *ubi, struct ubi_volume *vol,
71125 const void __user *buf, int count)
71126 {
71127 + uint64_t tmp;
71128 int lnum, offs, err = 0, len, to_write = count;
71129
71130 dbg_gen("write %d of %lld bytes, %lld already passed",
71131 @@ -287,7 +291,10 @@
71132 if (ubi->ro_mode)
71133 return -EROFS;
71134
71135 - lnum = div_u64_rem(vol->upd_received, vol->usable_leb_size, &offs);
71136 + tmp = vol->upd_received;
71137 + offs = do_div(tmp, vol->usable_leb_size);
71138 + lnum = tmp;
71139 +
71140 if (vol->upd_received + count > vol->upd_bytes)
71141 to_write = count = vol->upd_bytes - vol->upd_received;
71142
71143 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/mtd/ubi/vmt.c linux-2.6.29-rc3.owrt/drivers/mtd/ubi/vmt.c
71144 --- linux-2.6.29.owrt/drivers/mtd/ubi/vmt.c 2009-05-10 22:04:39.000000000 +0200
71145 +++ linux-2.6.29-rc3.owrt/drivers/mtd/ubi/vmt.c 2009-05-10 23:48:28.000000000 +0200
71146 @@ -24,7 +24,7 @@
71147 */
71148
71149 #include <linux/err.h>
71150 -#include <linux/math64.h>
71151 +#include <asm/div64.h>
71152 #include "ubi.h"
71153
71154 #ifdef CONFIG_MTD_UBI_DEBUG_PARANOID
71155 @@ -205,6 +205,7 @@
71156 int i, err, vol_id = req->vol_id, do_free = 1;
71157 struct ubi_volume *vol;
71158 struct ubi_vtbl_record vtbl_rec;
71159 + uint64_t bytes;
71160 dev_t dev;
71161
71162 if (ubi->ro_mode)
71163 @@ -254,8 +255,10 @@
71164
71165 /* Calculate how many eraseblocks are requested */
71166 vol->usable_leb_size = ubi->leb_size - ubi->leb_size % req->alignment;
71167 - vol->reserved_pebs += div_u64(req->bytes + vol->usable_leb_size - 1,
71168 - vol->usable_leb_size);
71169 + bytes = req->bytes;
71170 + if (do_div(bytes, vol->usable_leb_size))
71171 + vol->reserved_pebs = 1;
71172 + vol->reserved_pebs += bytes;
71173
71174 /* Reserve physical eraseblocks */
71175 if (vol->reserved_pebs > ubi->avail_pebs) {
71176 @@ -298,10 +301,10 @@
71177 vol->used_bytes =
71178 (long long)vol->used_ebs * vol->usable_leb_size;
71179 } else {
71180 - vol->used_ebs = div_u64_rem(vol->used_bytes,
71181 - vol->usable_leb_size,
71182 - &vol->last_eb_bytes);
71183 - if (vol->last_eb_bytes != 0)
71184 + bytes = vol->used_bytes;
71185 + vol->last_eb_bytes = do_div(bytes, vol->usable_leb_size);
71186 + vol->used_ebs = bytes;
71187 + if (vol->last_eb_bytes)
71188 vol->used_ebs += 1;
71189 else
71190 vol->last_eb_bytes = vol->usable_leb_size;
71191 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/3c505.c linux-2.6.29-rc3.owrt/drivers/net/3c505.c
71192 --- linux-2.6.29.owrt/drivers/net/3c505.c 2009-05-10 22:04:38.000000000 +0200
71193 +++ linux-2.6.29-rc3.owrt/drivers/net/3c505.c 2009-05-10 23:48:28.000000000 +0200
71194 @@ -493,27 +493,21 @@
71195 }
71196 /* read the data */
71197 spin_lock_irqsave(&adapter->lock, flags);
71198 - for (i = 0; i < MAX_PCB_DATA; i++) {
71199 - for (j = 0; j < 20000; j++) {
71200 - stat = get_status(dev->base_addr);
71201 - if (stat & ACRF)
71202 - break;
71203 - }
71204 - pcb->data.raw[i] = inb_command(dev->base_addr);
71205 - if ((stat & ASF_PCB_MASK) == ASF_PCB_END || j >= 20000)
71206 - break;
71207 - }
71208 + i = 0;
71209 + do {
71210 + j = 0;
71211 + while (((stat = get_status(dev->base_addr)) & ACRF) == 0 && j++ < 20000);
71212 + pcb->data.raw[i++] = inb_command(dev->base_addr);
71213 + if (i > MAX_PCB_DATA)
71214 + INVALID_PCB_MSG(i);
71215 + } while ((stat & ASF_PCB_MASK) != ASF_PCB_END && j < 20000);
71216 spin_unlock_irqrestore(&adapter->lock, flags);
71217 - if (i >= MAX_PCB_DATA) {
71218 - INVALID_PCB_MSG(i);
71219 - return false;
71220 - }
71221 if (j >= 20000) {
71222 TIMEOUT_MSG(__LINE__);
71223 return false;
71224 }
71225 - /* the last "data" byte was really the length! */
71226 - total_length = pcb->data.raw[i];
71227 + /* woops, the last "data" byte was really the length! */
71228 + total_length = pcb->data.raw[--i];
71229
71230 /* safety check total length vs data length */
71231 if (total_length != (pcb->length + 2)) {
71232 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/3c509.c linux-2.6.29-rc3.owrt/drivers/net/3c509.c
71233 --- linux-2.6.29.owrt/drivers/net/3c509.c 2009-05-10 22:04:38.000000000 +0200
71234 +++ linux-2.6.29-rc3.owrt/drivers/net/3c509.c 2009-05-10 23:48:28.000000000 +0200
71235 @@ -1475,7 +1475,6 @@
71236 spin_lock_irqsave(&lp->lock, flags);
71237
71238 outw(PowerUp, ioaddr + EL3_CMD);
71239 - EL3WINDOW(0);
71240 el3_up(dev);
71241
71242 if (netif_running(dev))
71243 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/arm/etherh.c linux-2.6.29-rc3.owrt/drivers/net/arm/etherh.c
71244 --- linux-2.6.29.owrt/drivers/net/arm/etherh.c 2009-05-10 22:04:38.000000000 +0200
71245 +++ linux-2.6.29-rc3.owrt/drivers/net/arm/etherh.c 2009-05-10 23:48:28.000000000 +0200
71246 @@ -641,15 +641,15 @@
71247 .ndo_open = etherh_open,
71248 .ndo_stop = etherh_close,
71249 .ndo_set_config = etherh_set_config,
71250 - .ndo_start_xmit = __ei_start_xmit,
71251 - .ndo_tx_timeout = __ei_tx_timeout,
71252 - .ndo_get_stats = __ei_get_stats,
71253 - .ndo_set_multicast_list = __ei_set_multicast_list,
71254 + .ndo_start_xmit = ei_start_xmit,
71255 + .ndo_tx_timeout = ei_tx_timeout,
71256 + .ndo_get_stats = ei_get_stats,
71257 + .ndo_set_multicast_list = ei_set_multicast_list,
71258 .ndo_validate_addr = eth_validate_addr,
71259 - .ndo_set_mac_address = eth_mac_addr,
71260 + .ndo_set_mac_address = eth_set_mac_addr,
71261 .ndo_change_mtu = eth_change_mtu,
71262 #ifdef CONFIG_NET_POLL_CONTROLLER
71263 - .ndo_poll_controller = __ei_poll,
71264 + .ndo_poll_controller = ei_poll,
71265 #endif
71266 };
71267
71268 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/arm/ks8695net.c linux-2.6.29-rc3.owrt/drivers/net/arm/ks8695net.c
71269 --- linux-2.6.29.owrt/drivers/net/arm/ks8695net.c 2009-05-10 22:04:38.000000000 +0200
71270 +++ linux-2.6.29-rc3.owrt/drivers/net/arm/ks8695net.c 2009-05-10 23:48:28.000000000 +0200
71271 @@ -560,7 +560,7 @@
71272 msleep(1);
71273 }
71274
71275 - if (reset_timeout < 0) {
71276 + if (reset_timeout == 0) {
71277 dev_crit(ksp->dev,
71278 "Timeout waiting for DMA engines to reset\n");
71279 /* And blithely carry on */
71280 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/arm/Makefile linux-2.6.29-rc3.owrt/drivers/net/arm/Makefile
71281 --- linux-2.6.29.owrt/drivers/net/arm/Makefile 2009-05-10 22:04:38.000000000 +0200
71282 +++ linux-2.6.29-rc3.owrt/drivers/net/arm/Makefile 2009-05-10 23:48:28.000000000 +0200
71283 @@ -4,7 +4,7 @@
71284 #
71285
71286 obj-$(CONFIG_ARM_AM79C961A) += am79c961a.o
71287 -obj-$(CONFIG_ARM_ETHERH) += etherh.o
71288 +obj-$(CONFIG_ARM_ETHERH) += etherh.o ../8390.o
71289 obj-$(CONFIG_ARM_ETHER3) += ether3.o
71290 obj-$(CONFIG_ARM_ETHER1) += ether1.o
71291 obj-$(CONFIG_ARM_AT91_ETHER) += at91_ether.o
71292 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/atl1c/atl1c_ethtool.c linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_ethtool.c
71293 --- linux-2.6.29.owrt/drivers/net/atl1c/atl1c_ethtool.c 2009-05-10 22:04:38.000000000 +0200
71294 +++ linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_ethtool.c 1970-01-01 01:00:00.000000000 +0100
71295 @@ -1,317 +0,0 @@
71296 -/*
71297 - * Copyright(c) 2009 - 2009 Atheros Corporation. All rights reserved.
71298 - *
71299 - * Derived from Intel e1000 driver
71300 - * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
71301 - *
71302 - * This program is free software; you can redistribute it and/or modify it
71303 - * under the terms of the GNU General Public License as published by the Free
71304 - * Software Foundation; either version 2 of the License, or (at your option)
71305 - * any later version.
71306 - *
71307 - * This program is distributed in the hope that it will be useful, but WITHOUT
71308 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
71309 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
71310 - * more details.
71311 - *
71312 - * You should have received a copy of the GNU General Public License along with
71313 - * this program; if not, write to the Free Software Foundation, Inc., 59
71314 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
71315 - *
71316 - */
71317 -
71318 -#include <linux/netdevice.h>
71319 -#include <linux/ethtool.h>
71320 -
71321 -#include "atl1c.h"
71322 -
71323 -static int atl1c_get_settings(struct net_device *netdev,
71324 - struct ethtool_cmd *ecmd)
71325 -{
71326 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71327 - struct atl1c_hw *hw = &adapter->hw;
71328 -
71329 - ecmd->supported = (SUPPORTED_10baseT_Half |
71330 - SUPPORTED_10baseT_Full |
71331 - SUPPORTED_100baseT_Half |
71332 - SUPPORTED_100baseT_Full |
71333 - SUPPORTED_Autoneg |
71334 - SUPPORTED_TP);
71335 - if (hw->ctrl_flags & ATL1C_LINK_CAP_1000M)
71336 - ecmd->supported |= SUPPORTED_1000baseT_Full;
71337 -
71338 - ecmd->advertising = ADVERTISED_TP;
71339 -
71340 - ecmd->advertising |= hw->autoneg_advertised;
71341 -
71342 - ecmd->port = PORT_TP;
71343 - ecmd->phy_address = 0;
71344 - ecmd->transceiver = XCVR_INTERNAL;
71345 -
71346 - if (adapter->link_speed != SPEED_0) {
71347 - ecmd->speed = adapter->link_speed;
71348 - if (adapter->link_duplex == FULL_DUPLEX)
71349 - ecmd->duplex = DUPLEX_FULL;
71350 - else
71351 - ecmd->duplex = DUPLEX_HALF;
71352 - } else {
71353 - ecmd->speed = -1;
71354 - ecmd->duplex = -1;
71355 - }
71356 -
71357 - ecmd->autoneg = AUTONEG_ENABLE;
71358 - return 0;
71359 -}
71360 -
71361 -static int atl1c_set_settings(struct net_device *netdev,
71362 - struct ethtool_cmd *ecmd)
71363 -{
71364 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71365 - struct atl1c_hw *hw = &adapter->hw;
71366 - u16 autoneg_advertised;
71367 -
71368 - while (test_and_set_bit(__AT_RESETTING, &adapter->flags))
71369 - msleep(1);
71370 -
71371 - if (ecmd->autoneg == AUTONEG_ENABLE) {
71372 - autoneg_advertised = ADVERTISED_Autoneg;
71373 - } else {
71374 - if (ecmd->speed == SPEED_1000) {
71375 - if (ecmd->duplex != DUPLEX_FULL) {
71376 - if (netif_msg_link(adapter))
71377 - dev_warn(&adapter->pdev->dev,
71378 - "1000M half is invalid\n");
71379 - clear_bit(__AT_RESETTING, &adapter->flags);
71380 - return -EINVAL;
71381 - }
71382 - autoneg_advertised = ADVERTISED_1000baseT_Full;
71383 - } else if (ecmd->speed == SPEED_100) {
71384 - if (ecmd->duplex == DUPLEX_FULL)
71385 - autoneg_advertised = ADVERTISED_100baseT_Full;
71386 - else
71387 - autoneg_advertised = ADVERTISED_100baseT_Half;
71388 - } else {
71389 - if (ecmd->duplex == DUPLEX_FULL)
71390 - autoneg_advertised = ADVERTISED_10baseT_Full;
71391 - else
71392 - autoneg_advertised = ADVERTISED_10baseT_Half;
71393 - }
71394 - }
71395 -
71396 - if (hw->autoneg_advertised != autoneg_advertised) {
71397 - hw->autoneg_advertised = autoneg_advertised;
71398 - if (atl1c_restart_autoneg(hw) != 0) {
71399 - if (netif_msg_link(adapter))
71400 - dev_warn(&adapter->pdev->dev,
71401 - "ethtool speed/duplex setting failed\n");
71402 - clear_bit(__AT_RESETTING, &adapter->flags);
71403 - return -EINVAL;
71404 - }
71405 - }
71406 - clear_bit(__AT_RESETTING, &adapter->flags);
71407 - return 0;
71408 -}
71409 -
71410 -static u32 atl1c_get_tx_csum(struct net_device *netdev)
71411 -{
71412 - return (netdev->features & NETIF_F_HW_CSUM) != 0;
71413 -}
71414 -
71415 -static u32 atl1c_get_msglevel(struct net_device *netdev)
71416 -{
71417 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71418 - return adapter->msg_enable;
71419 -}
71420 -
71421 -static void atl1c_set_msglevel(struct net_device *netdev, u32 data)
71422 -{
71423 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71424 - adapter->msg_enable = data;
71425 -}
71426 -
71427 -static int atl1c_get_regs_len(struct net_device *netdev)
71428 -{
71429 - return AT_REGS_LEN;
71430 -}
71431 -
71432 -static void atl1c_get_regs(struct net_device *netdev,
71433 - struct ethtool_regs *regs, void *p)
71434 -{
71435 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71436 - struct atl1c_hw *hw = &adapter->hw;
71437 - u32 *regs_buff = p;
71438 - u16 phy_data;
71439 -
71440 - memset(p, 0, AT_REGS_LEN);
71441 -
71442 - regs->version = 0;
71443 - AT_READ_REG(hw, REG_VPD_CAP, p++);
71444 - AT_READ_REG(hw, REG_PM_CTRL, p++);
71445 - AT_READ_REG(hw, REG_MAC_HALF_DUPLX_CTRL, p++);
71446 - AT_READ_REG(hw, REG_TWSI_CTRL, p++);
71447 - AT_READ_REG(hw, REG_PCIE_DEV_MISC_CTRL, p++);
71448 - AT_READ_REG(hw, REG_MASTER_CTRL, p++);
71449 - AT_READ_REG(hw, REG_MANUAL_TIMER_INIT, p++);
71450 - AT_READ_REG(hw, REG_IRQ_MODRT_TIMER_INIT, p++);
71451 - AT_READ_REG(hw, REG_GPHY_CTRL, p++);
71452 - AT_READ_REG(hw, REG_LINK_CTRL, p++);
71453 - AT_READ_REG(hw, REG_IDLE_STATUS, p++);
71454 - AT_READ_REG(hw, REG_MDIO_CTRL, p++);
71455 - AT_READ_REG(hw, REG_SERDES_LOCK, p++);
71456 - AT_READ_REG(hw, REG_MAC_CTRL, p++);
71457 - AT_READ_REG(hw, REG_MAC_IPG_IFG, p++);
71458 - AT_READ_REG(hw, REG_MAC_STA_ADDR, p++);
71459 - AT_READ_REG(hw, REG_MAC_STA_ADDR+4, p++);
71460 - AT_READ_REG(hw, REG_RX_HASH_TABLE, p++);
71461 - AT_READ_REG(hw, REG_RX_HASH_TABLE+4, p++);
71462 - AT_READ_REG(hw, REG_RXQ_CTRL, p++);
71463 - AT_READ_REG(hw, REG_TXQ_CTRL, p++);
71464 - AT_READ_REG(hw, REG_MTU, p++);
71465 - AT_READ_REG(hw, REG_WOL_CTRL, p++);
71466 -
71467 - atl1c_read_phy_reg(hw, MII_BMCR, &phy_data);
71468 - regs_buff[73] = (u32) phy_data;
71469 - atl1c_read_phy_reg(hw, MII_BMSR, &phy_data);
71470 - regs_buff[74] = (u32) phy_data;
71471 -}
71472 -
71473 -static int atl1c_get_eeprom_len(struct net_device *netdev)
71474 -{
71475 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71476 -
71477 - if (atl1c_check_eeprom_exist(&adapter->hw))
71478 - return AT_EEPROM_LEN;
71479 - else
71480 - return 0;
71481 -}
71482 -
71483 -static int atl1c_get_eeprom(struct net_device *netdev,
71484 - struct ethtool_eeprom *eeprom, u8 *bytes)
71485 -{
71486 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71487 - struct atl1c_hw *hw = &adapter->hw;
71488 - u32 *eeprom_buff;
71489 - int first_dword, last_dword;
71490 - int ret_val = 0;
71491 - int i;
71492 -
71493 - if (eeprom->len == 0)
71494 - return -EINVAL;
71495 -
71496 - if (!atl1c_check_eeprom_exist(hw)) /* not exist */
71497 - return -EINVAL;
71498 -
71499 - eeprom->magic = adapter->pdev->vendor |
71500 - (adapter->pdev->device << 16);
71501 -
71502 - first_dword = eeprom->offset >> 2;
71503 - last_dword = (eeprom->offset + eeprom->len - 1) >> 2;
71504 -
71505 - eeprom_buff = kmalloc(sizeof(u32) *
71506 - (last_dword - first_dword + 1), GFP_KERNEL);
71507 - if (eeprom_buff == NULL)
71508 - return -ENOMEM;
71509 -
71510 - for (i = first_dword; i < last_dword; i++) {
71511 - if (!atl1c_read_eeprom(hw, i * 4, &(eeprom_buff[i-first_dword]))) {
71512 - kfree(eeprom_buff);
71513 - return -EIO;
71514 - }
71515 - }
71516 -
71517 - memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 3),
71518 - eeprom->len);
71519 - kfree(eeprom_buff);
71520 -
71521 - return ret_val;
71522 - return 0;
71523 -}
71524 -
71525 -static void atl1c_get_drvinfo(struct net_device *netdev,
71526 - struct ethtool_drvinfo *drvinfo)
71527 -{
71528 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71529 -
71530 - strncpy(drvinfo->driver, atl1c_driver_name, sizeof(drvinfo->driver));
71531 - strncpy(drvinfo->version, atl1c_driver_version,
71532 - sizeof(drvinfo->version));
71533 - strncpy(drvinfo->fw_version, "N/A", sizeof(drvinfo->fw_version));
71534 - strncpy(drvinfo->bus_info, pci_name(adapter->pdev),
71535 - sizeof(drvinfo->bus_info));
71536 - drvinfo->n_stats = 0;
71537 - drvinfo->testinfo_len = 0;
71538 - drvinfo->regdump_len = atl1c_get_regs_len(netdev);
71539 - drvinfo->eedump_len = atl1c_get_eeprom_len(netdev);
71540 -}
71541 -
71542 -static void atl1c_get_wol(struct net_device *netdev,
71543 - struct ethtool_wolinfo *wol)
71544 -{
71545 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71546 -
71547 - wol->supported = WAKE_MAGIC | WAKE_PHY;
71548 - wol->wolopts = 0;
71549 -
71550 - if (adapter->wol & AT_WUFC_EX)
71551 - wol->wolopts |= WAKE_UCAST;
71552 - if (adapter->wol & AT_WUFC_MC)
71553 - wol->wolopts |= WAKE_MCAST;
71554 - if (adapter->wol & AT_WUFC_BC)
71555 - wol->wolopts |= WAKE_BCAST;
71556 - if (adapter->wol & AT_WUFC_MAG)
71557 - wol->wolopts |= WAKE_MAGIC;
71558 - if (adapter->wol & AT_WUFC_LNKC)
71559 - wol->wolopts |= WAKE_PHY;
71560 -
71561 - return;
71562 -}
71563 -
71564 -static int atl1c_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
71565 -{
71566 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71567 -
71568 - if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE |
71569 - WAKE_MCAST | WAKE_BCAST | WAKE_MCAST))
71570 - return -EOPNOTSUPP;
71571 - /* these settings will always override what we currently have */
71572 - adapter->wol = 0;
71573 -
71574 - if (wol->wolopts & WAKE_MAGIC)
71575 - adapter->wol |= AT_WUFC_MAG;
71576 - if (wol->wolopts & WAKE_PHY)
71577 - adapter->wol |= AT_WUFC_LNKC;
71578 -
71579 - return 0;
71580 -}
71581 -
71582 -static int atl1c_nway_reset(struct net_device *netdev)
71583 -{
71584 - struct atl1c_adapter *adapter = netdev_priv(netdev);
71585 - if (netif_running(netdev))
71586 - atl1c_reinit_locked(adapter);
71587 - return 0;
71588 -}
71589 -
71590 -static struct ethtool_ops atl1c_ethtool_ops = {
71591 - .get_settings = atl1c_get_settings,
71592 - .set_settings = atl1c_set_settings,
71593 - .get_drvinfo = atl1c_get_drvinfo,
71594 - .get_regs_len = atl1c_get_regs_len,
71595 - .get_regs = atl1c_get_regs,
71596 - .get_wol = atl1c_get_wol,
71597 - .set_wol = atl1c_set_wol,
71598 - .get_msglevel = atl1c_get_msglevel,
71599 - .set_msglevel = atl1c_set_msglevel,
71600 - .nway_reset = atl1c_nway_reset,
71601 - .get_link = ethtool_op_get_link,
71602 - .get_eeprom_len = atl1c_get_eeprom_len,
71603 - .get_eeprom = atl1c_get_eeprom,
71604 - .get_tx_csum = atl1c_get_tx_csum,
71605 - .get_sg = ethtool_op_get_sg,
71606 - .set_sg = ethtool_op_set_sg,
71607 -};
71608 -
71609 -void atl1c_set_ethtool_ops(struct net_device *netdev)
71610 -{
71611 - SET_ETHTOOL_OPS(netdev, &atl1c_ethtool_ops);
71612 -}
71613 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/atl1c/atl1c.h linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c.h
71614 --- linux-2.6.29.owrt/drivers/net/atl1c/atl1c.h 2009-05-10 22:04:38.000000000 +0200
71615 +++ linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c.h 1970-01-01 01:00:00.000000000 +0100
71616 @@ -1,606 +0,0 @@
71617 -/*
71618 - * Copyright(c) 2008 - 2009 Atheros Corporation. All rights reserved.
71619 - *
71620 - * Derived from Intel e1000 driver
71621 - * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
71622 - *
71623 - * This program is free software; you can redistribute it and/or modify it
71624 - * under the terms of the GNU General Public License as published by the Free
71625 - * Software Foundation; either version 2 of the License, or (at your option)
71626 - * any later version.
71627 - *
71628 - * This program is distributed in the hope that it will be useful, but WITHOUT
71629 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
71630 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
71631 - * more details.
71632 - *
71633 - * You should have received a copy of the GNU General Public License along with
71634 - * this program; if not, write to the Free Software Foundation, Inc., 59
71635 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
71636 - */
71637 -
71638 -#ifndef _ATL1C_H_
71639 -#define _ATL1C_H_
71640 -
71641 -#include <linux/version.h>
71642 -#include <linux/init.h>
71643 -#include <linux/types.h>
71644 -#include <linux/errno.h>
71645 -#include <linux/module.h>
71646 -#include <linux/pci.h>
71647 -#include <linux/netdevice.h>
71648 -#include <linux/etherdevice.h>
71649 -#include <linux/skbuff.h>
71650 -#include <linux/ioport.h>
71651 -#include <linux/slab.h>
71652 -#include <linux/list.h>
71653 -#include <linux/delay.h>
71654 -#include <linux/sched.h>
71655 -#include <linux/in.h>
71656 -#include <linux/ip.h>
71657 -#include <linux/ipv6.h>
71658 -#include <linux/udp.h>
71659 -#include <linux/mii.h>
71660 -#include <linux/io.h>
71661 -#include <linux/vmalloc.h>
71662 -#include <linux/pagemap.h>
71663 -#include <linux/tcp.h>
71664 -#include <linux/mii.h>
71665 -#include <linux/ethtool.h>
71666 -#include <linux/if_vlan.h>
71667 -#include <linux/workqueue.h>
71668 -#include <net/checksum.h>
71669 -#include <net/ip6_checksum.h>
71670 -
71671 -#include "atl1c_hw.h"
71672 -
71673 -/* Wake Up Filter Control */
71674 -#define AT_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */
71675 -#define AT_WUFC_MAG 0x00000002 /* Magic Packet Wakeup Enable */
71676 -#define AT_WUFC_EX 0x00000004 /* Directed Exact Wakeup Enable */
71677 -#define AT_WUFC_MC 0x00000008 /* Multicast Wakeup Enable */
71678 -#define AT_WUFC_BC 0x00000010 /* Broadcast Wakeup Enable */
71679 -
71680 -#define AT_VLAN_TO_TAG(_vlan, _tag) \
71681 - _tag = ((((_vlan) >> 8) & 0xFF) |\
71682 - (((_vlan) & 0xFF) << 8))
71683 -
71684 -#define AT_TAG_TO_VLAN(_tag, _vlan) \
71685 - _vlan = ((((_tag) >> 8) & 0xFF) |\
71686 - (((_tag) & 0xFF) << 8))
71687 -
71688 -#define SPEED_0 0xffff
71689 -#define HALF_DUPLEX 1
71690 -#define FULL_DUPLEX 2
71691 -
71692 -#define AT_RX_BUF_SIZE (ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN)
71693 -#define MAX_JUMBO_FRAME_SIZE (9*1024)
71694 -#define MAX_TX_OFFLOAD_THRESH (9*1024)
71695 -
71696 -#define AT_MAX_RECEIVE_QUEUE 4
71697 -#define AT_DEF_RECEIVE_QUEUE 1
71698 -#define AT_MAX_TRANSMIT_QUEUE 2
71699 -
71700 -#define AT_DMA_HI_ADDR_MASK 0xffffffff00000000ULL
71701 -#define AT_DMA_LO_ADDR_MASK 0x00000000ffffffffULL
71702 -
71703 -#define AT_TX_WATCHDOG (5 * HZ)
71704 -#define AT_MAX_INT_WORK 5
71705 -#define AT_TWSI_EEPROM_TIMEOUT 100
71706 -#define AT_HW_MAX_IDLE_DELAY 10
71707 -#define AT_SUSPEND_LINK_TIMEOUT 28
71708 -
71709 -#define AT_ASPM_L0S_TIMER 6
71710 -#define AT_ASPM_L1_TIMER 12
71711 -
71712 -#define ATL1C_PCIE_L0S_L1_DISABLE 0x01
71713 -#define ATL1C_PCIE_PHY_RESET 0x02
71714 -
71715 -#define ATL1C_ASPM_L0s_ENABLE 0x0001
71716 -#define ATL1C_ASPM_L1_ENABLE 0x0002
71717 -
71718 -#define AT_REGS_LEN (75 * sizeof(u32))
71719 -#define AT_EEPROM_LEN 512
71720 -
71721 -#define ATL1C_GET_DESC(R, i, type) (&(((type *)((R)->desc))[i]))
71722 -#define ATL1C_RFD_DESC(R, i) ATL1C_GET_DESC(R, i, struct atl1c_rx_free_desc)
71723 -#define ATL1C_TPD_DESC(R, i) ATL1C_GET_DESC(R, i, struct atl1c_tpd_desc)
71724 -#define ATL1C_RRD_DESC(R, i) ATL1C_GET_DESC(R, i, struct atl1c_recv_ret_status)
71725 -
71726 -/* tpd word 1 bit 0:7 General Checksum task offload */
71727 -#define TPD_L4HDR_OFFSET_MASK 0x00FF
71728 -#define TPD_L4HDR_OFFSET_SHIFT 0
71729 -
71730 -/* tpd word 1 bit 0:7 Large Send task offload (IPv4/IPV6) */
71731 -#define TPD_TCPHDR_OFFSET_MASK 0x00FF
71732 -#define TPD_TCPHDR_OFFSET_SHIFT 0
71733 -
71734 -/* tpd word 1 bit 0:7 Custom Checksum task offload */
71735 -#define TPD_PLOADOFFSET_MASK 0x00FF
71736 -#define TPD_PLOADOFFSET_SHIFT 0
71737 -
71738 -/* tpd word 1 bit 8:17 */
71739 -#define TPD_CCSUM_EN_MASK 0x0001
71740 -#define TPD_CCSUM_EN_SHIFT 8
71741 -#define TPD_IP_CSUM_MASK 0x0001
71742 -#define TPD_IP_CSUM_SHIFT 9
71743 -#define TPD_TCP_CSUM_MASK 0x0001
71744 -#define TPD_TCP_CSUM_SHIFT 10
71745 -#define TPD_UDP_CSUM_MASK 0x0001
71746 -#define TPD_UDP_CSUM_SHIFT 11
71747 -#define TPD_LSO_EN_MASK 0x0001 /* TCP Large Send Offload */
71748 -#define TPD_LSO_EN_SHIFT 12
71749 -#define TPD_LSO_VER_MASK 0x0001
71750 -#define TPD_LSO_VER_SHIFT 13 /* 0 : ipv4; 1 : ipv4/ipv6 */
71751 -#define TPD_CON_VTAG_MASK 0x0001
71752 -#define TPD_CON_VTAG_SHIFT 14
71753 -#define TPD_INS_VTAG_MASK 0x0001
71754 -#define TPD_INS_VTAG_SHIFT 15
71755 -#define TPD_IPV4_PACKET_MASK 0x0001 /* valid when LSO VER is 1 */
71756 -#define TPD_IPV4_PACKET_SHIFT 16
71757 -#define TPD_ETH_TYPE_MASK 0x0001
71758 -#define TPD_ETH_TYPE_SHIFT 17 /* 0 : 802.3 frame; 1 : Ethernet */
71759 -
71760 -/* tpd word 18:25 Custom Checksum task offload */
71761 -#define TPD_CCSUM_OFFSET_MASK 0x00FF
71762 -#define TPD_CCSUM_OFFSET_SHIFT 18
71763 -#define TPD_CCSUM_EPAD_MASK 0x0001
71764 -#define TPD_CCSUM_EPAD_SHIFT 30
71765 -
71766 -/* tpd word 18:30 Large Send task offload (IPv4/IPV6) */
71767 -#define TPD_MSS_MASK 0x1FFF
71768 -#define TPD_MSS_SHIFT 18
71769 -
71770 -#define TPD_EOP_MASK 0x0001
71771 -#define TPD_EOP_SHIFT 31
71772 -
71773 -struct atl1c_tpd_desc {
71774 - __le16 buffer_len; /* include 4-byte CRC */
71775 - __le16 vlan_tag;
71776 - __le32 word1;
71777 - __le64 buffer_addr;
71778 -};
71779 -
71780 -struct atl1c_tpd_ext_desc {
71781 - u32 reservd_0;
71782 - __le32 word1;
71783 - __le32 pkt_len;
71784 - u32 reservd_1;
71785 -};
71786 -/* rrs word 0 bit 0:31 */
71787 -#define RRS_RX_CSUM_MASK 0xFFFF
71788 -#define RRS_RX_CSUM_SHIFT 0
71789 -#define RRS_RX_RFD_CNT_MASK 0x000F
71790 -#define RRS_RX_RFD_CNT_SHIFT 16
71791 -#define RRS_RX_RFD_INDEX_MASK 0x0FFF
71792 -#define RRS_RX_RFD_INDEX_SHIFT 20
71793 -
71794 -/* rrs flag bit 0:16 */
71795 -#define RRS_HEAD_LEN_MASK 0x00FF
71796 -#define RRS_HEAD_LEN_SHIFT 0
71797 -#define RRS_HDS_TYPE_MASK 0x0003
71798 -#define RRS_HDS_TYPE_SHIFT 8
71799 -#define RRS_CPU_NUM_MASK 0x0003
71800 -#define RRS_CPU_NUM_SHIFT 10
71801 -#define RRS_HASH_FLG_MASK 0x000F
71802 -#define RRS_HASH_FLG_SHIFT 12
71803 -
71804 -#define RRS_HDS_TYPE_HEAD 1
71805 -#define RRS_HDS_TYPE_DATA 2
71806 -
71807 -#define RRS_IS_NO_HDS_TYPE(flag) \
71808 - (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == 0)
71809 -
71810 -#define RRS_IS_HDS_HEAD(flag) \
71811 - (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
71812 - RRS_HDS_TYPE_HEAD)
71813 -
71814 -#define RRS_IS_HDS_DATA(flag) \
71815 - (((flag) >> (RRS_HDS_TYPE_SHIFT)) & RRS_HDS_TYPE_MASK == \
71816 - RRS_HDS_TYPE_DATA)
71817 -
71818 -/* rrs word 3 bit 0:31 */
71819 -#define RRS_PKT_SIZE_MASK 0x3FFF
71820 -#define RRS_PKT_SIZE_SHIFT 0
71821 -#define RRS_ERR_L4_CSUM_MASK 0x0001
71822 -#define RRS_ERR_L4_CSUM_SHIFT 14
71823 -#define RRS_ERR_IP_CSUM_MASK 0x0001
71824 -#define RRS_ERR_IP_CSUM_SHIFT 15
71825 -#define RRS_VLAN_INS_MASK 0x0001
71826 -#define RRS_VLAN_INS_SHIFT 16
71827 -#define RRS_PROT_ID_MASK 0x0007
71828 -#define RRS_PROT_ID_SHIFT 17
71829 -#define RRS_RX_ERR_SUM_MASK 0x0001
71830 -#define RRS_RX_ERR_SUM_SHIFT 20
71831 -#define RRS_RX_ERR_CRC_MASK 0x0001
71832 -#define RRS_RX_ERR_CRC_SHIFT 21
71833 -#define RRS_RX_ERR_FAE_MASK 0x0001
71834 -#define RRS_RX_ERR_FAE_SHIFT 22
71835 -#define RRS_RX_ERR_TRUNC_MASK 0x0001
71836 -#define RRS_RX_ERR_TRUNC_SHIFT 23
71837 -#define RRS_RX_ERR_RUNC_MASK 0x0001
71838 -#define RRS_RX_ERR_RUNC_SHIFT 24
71839 -#define RRS_RX_ERR_ICMP_MASK 0x0001
71840 -#define RRS_RX_ERR_ICMP_SHIFT 25
71841 -#define RRS_PACKET_BCAST_MASK 0x0001
71842 -#define RRS_PACKET_BCAST_SHIFT 26
71843 -#define RRS_PACKET_MCAST_MASK 0x0001
71844 -#define RRS_PACKET_MCAST_SHIFT 27
71845 -#define RRS_PACKET_TYPE_MASK 0x0001
71846 -#define RRS_PACKET_TYPE_SHIFT 28
71847 -#define RRS_FIFO_FULL_MASK 0x0001
71848 -#define RRS_FIFO_FULL_SHIFT 29
71849 -#define RRS_802_3_LEN_ERR_MASK 0x0001
71850 -#define RRS_802_3_LEN_ERR_SHIFT 30
71851 -#define RRS_RXD_UPDATED_MASK 0x0001
71852 -#define RRS_RXD_UPDATED_SHIFT 31
71853 -
71854 -#define RRS_ERR_L4_CSUM 0x00004000
71855 -#define RRS_ERR_IP_CSUM 0x00008000
71856 -#define RRS_VLAN_INS 0x00010000
71857 -#define RRS_RX_ERR_SUM 0x00100000
71858 -#define RRS_RX_ERR_CRC 0x00200000
71859 -#define RRS_802_3_LEN_ERR 0x40000000
71860 -#define RRS_RXD_UPDATED 0x80000000
71861 -
71862 -#define RRS_PACKET_TYPE_802_3 1
71863 -#define RRS_PACKET_TYPE_ETH 0
71864 -#define RRS_PACKET_IS_ETH(word) \
71865 - (((word) >> RRS_PACKET_TYPE_SHIFT) & RRS_PACKET_TYPE_MASK == \
71866 - RRS_PACKET_TYPE_ETH)
71867 -#define RRS_RXD_IS_VALID(word) \
71868 - ((((word) >> RRS_RXD_UPDATED_SHIFT) & RRS_RXD_UPDATED_MASK) == 1)
71869 -
71870 -#define RRS_PACKET_PROT_IS_IPV4_ONLY(word) \
71871 - ((((word) >> RRS_PROT_ID_SHIFT) & RRS_PROT_ID_MASK) == 1)
71872 -#define RRS_PACKET_PROT_IS_IPV6_ONLY(word) \
71873 - ((((word) >> RRS_PROT_ID_SHIFT) & RRS_PROT_ID_MASK) == 6)
71874 -
71875 -struct atl1c_recv_ret_status {
71876 - __le32 word0;
71877 - __le32 rss_hash;
71878 - __le16 vlan_tag;
71879 - __le16 flag;
71880 - __le32 word3;
71881 -};
71882 -
71883 -/* RFD desciptor */
71884 -struct atl1c_rx_free_desc {
71885 - __le64 buffer_addr;
71886 -};
71887 -
71888 -/* DMA Order Settings */
71889 -enum atl1c_dma_order {
71890 - atl1c_dma_ord_in = 1,
71891 - atl1c_dma_ord_enh = 2,
71892 - atl1c_dma_ord_out = 4
71893 -};
71894 -
71895 -enum atl1c_dma_rcb {
71896 - atl1c_rcb_64 = 0,
71897 - atl1c_rcb_128 = 1
71898 -};
71899 -
71900 -enum atl1c_mac_speed {
71901 - atl1c_mac_speed_0 = 0,
71902 - atl1c_mac_speed_10_100 = 1,
71903 - atl1c_mac_speed_1000 = 2
71904 -};
71905 -
71906 -enum atl1c_dma_req_block {
71907 - atl1c_dma_req_128 = 0,
71908 - atl1c_dma_req_256 = 1,
71909 - atl1c_dma_req_512 = 2,
71910 - atl1c_dma_req_1024 = 3,
71911 - atl1c_dma_req_2048 = 4,
71912 - atl1c_dma_req_4096 = 5
71913 -};
71914 -
71915 -enum atl1c_rss_mode {
71916 - atl1c_rss_mode_disable = 0,
71917 - atl1c_rss_sig_que = 1,
71918 - atl1c_rss_mul_que_sig_int = 2,
71919 - atl1c_rss_mul_que_mul_int = 4,
71920 -};
71921 -
71922 -enum atl1c_rss_type {
71923 - atl1c_rss_disable = 0,
71924 - atl1c_rss_ipv4 = 1,
71925 - atl1c_rss_ipv4_tcp = 2,
71926 - atl1c_rss_ipv6 = 4,
71927 - atl1c_rss_ipv6_tcp = 8
71928 -};
71929 -
71930 -enum atl1c_nic_type {
71931 - athr_l1c = 0,
71932 - athr_l2c = 1,
71933 -};
71934 -
71935 -enum atl1c_trans_queue {
71936 - atl1c_trans_normal = 0,
71937 - atl1c_trans_high = 1
71938 -};
71939 -
71940 -struct atl1c_hw_stats {
71941 - /* rx */
71942 - unsigned long rx_ok; /* The number of good packet received. */
71943 - unsigned long rx_bcast; /* The number of good broadcast packet received. */
71944 - unsigned long rx_mcast; /* The number of good multicast packet received. */
71945 - unsigned long rx_pause; /* The number of Pause packet received. */
71946 - unsigned long rx_ctrl; /* The number of Control packet received other than Pause frame. */
71947 - unsigned long rx_fcs_err; /* The number of packets with bad FCS. */
71948 - unsigned long rx_len_err; /* The number of packets with mismatch of length field and actual size. */
71949 - unsigned long rx_byte_cnt; /* The number of bytes of good packet received. FCS is NOT included. */
71950 - unsigned long rx_runt; /* The number of packets received that are less than 64 byte long and with good FCS. */
71951 - unsigned long rx_frag; /* The number of packets received that are less than 64 byte long and with bad FCS. */
71952 - unsigned long rx_sz_64; /* The number of good and bad packets received that are 64 byte long. */
71953 - unsigned long rx_sz_65_127; /* The number of good and bad packets received that are between 65 and 127-byte long. */
71954 - unsigned long rx_sz_128_255; /* The number of good and bad packets received that are between 128 and 255-byte long. */
71955 - unsigned long rx_sz_256_511; /* The number of good and bad packets received that are between 256 and 511-byte long. */
71956 - unsigned long rx_sz_512_1023; /* The number of good and bad packets received that are between 512 and 1023-byte long. */
71957 - unsigned long rx_sz_1024_1518; /* The number of good and bad packets received that are between 1024 and 1518-byte long. */
71958 - unsigned long rx_sz_1519_max; /* The number of good and bad packets received that are between 1519-byte and MTU. */
71959 - unsigned long rx_sz_ov; /* The number of good and bad packets received that are more than MTU size truncated by Selene. */
71960 - unsigned long rx_rxf_ov; /* The number of frame dropped due to occurrence of RX FIFO overflow. */
71961 - unsigned long rx_rrd_ov; /* The number of frame dropped due to occurrence of RRD overflow. */
71962 - unsigned long rx_align_err; /* Alignment Error */
71963 - unsigned long rx_bcast_byte_cnt; /* The byte count of broadcast packet received, excluding FCS. */
71964 - unsigned long rx_mcast_byte_cnt; /* The byte count of multicast packet received, excluding FCS. */
71965 - unsigned long rx_err_addr; /* The number of packets dropped due to address filtering. */
71966 -
71967 - /* tx */
71968 - unsigned long tx_ok; /* The number of good packet transmitted. */
71969 - unsigned long tx_bcast; /* The number of good broadcast packet transmitted. */
71970 - unsigned long tx_mcast; /* The number of good multicast packet transmitted. */
71971 - unsigned long tx_pause; /* The number of Pause packet transmitted. */
71972 - unsigned long tx_exc_defer; /* The number of packets transmitted with excessive deferral. */
71973 - unsigned long tx_ctrl; /* The number of packets transmitted is a control frame, excluding Pause frame. */
71974 - unsigned long tx_defer; /* The number of packets transmitted that is deferred. */
71975 - unsigned long tx_byte_cnt; /* The number of bytes of data transmitted. FCS is NOT included. */
71976 - unsigned long tx_sz_64; /* The number of good and bad packets transmitted that are 64 byte long. */
71977 - unsigned long tx_sz_65_127; /* The number of good and bad packets transmitted that are between 65 and 127-byte long. */
71978 - unsigned long tx_sz_128_255; /* The number of good and bad packets transmitted that are between 128 and 255-byte long. */
71979 - unsigned long tx_sz_256_511; /* The number of good and bad packets transmitted that are between 256 and 511-byte long. */
71980 - unsigned long tx_sz_512_1023; /* The number of good and bad packets transmitted that are between 512 and 1023-byte long. */
71981 - unsigned long tx_sz_1024_1518; /* The number of good and bad packets transmitted that are between 1024 and 1518-byte long. */
71982 - unsigned long tx_sz_1519_max; /* The number of good and bad packets transmitted that are between 1519-byte and MTU. */
71983 - unsigned long tx_1_col; /* The number of packets subsequently transmitted successfully with a single prior collision. */
71984 - unsigned long tx_2_col; /* The number of packets subsequently transmitted successfully with multiple prior collisions. */
71985 - unsigned long tx_late_col; /* The number of packets transmitted with late collisions. */
71986 - unsigned long tx_abort_col; /* The number of transmit packets aborted due to excessive collisions. */
71987 - unsigned long tx_underrun; /* The number of transmit packets aborted due to transmit FIFO underrun, or TRD FIFO underrun */
71988 - unsigned long tx_rd_eop; /* The number of times that read beyond the EOP into the next frame area when TRD was not written timely */
71989 - unsigned long tx_len_err; /* The number of transmit packets with length field does NOT match the actual frame size. */
71990 - unsigned long tx_trunc; /* The number of transmit packets truncated due to size exceeding MTU. */
71991 - unsigned long tx_bcast_byte; /* The byte count of broadcast packet transmitted, excluding FCS. */
71992 - unsigned long tx_mcast_byte; /* The byte count of multicast packet transmitted, excluding FCS. */
71993 -};
71994 -
71995 -struct atl1c_hw {
71996 - u8 __iomem *hw_addr; /* inner register address */
71997 - struct atl1c_adapter *adapter;
71998 - enum atl1c_nic_type nic_type;
71999 - enum atl1c_dma_order dma_order;
72000 - enum atl1c_dma_rcb rcb_value;
72001 - enum atl1c_dma_req_block dmar_block;
72002 - enum atl1c_dma_req_block dmaw_block;
72003 -
72004 - u16 device_id;
72005 - u16 vendor_id;
72006 - u16 subsystem_id;
72007 - u16 subsystem_vendor_id;
72008 - u8 revision_id;
72009 -
72010 - u32 intr_mask;
72011 - u8 dmaw_dly_cnt;
72012 - u8 dmar_dly_cnt;
72013 -
72014 - u8 preamble_len;
72015 - u16 max_frame_size;
72016 - u16 min_frame_size;
72017 -
72018 - enum atl1c_mac_speed mac_speed;
72019 - bool mac_duplex;
72020 - bool hibernate;
72021 - u16 media_type;
72022 -#define MEDIA_TYPE_AUTO_SENSOR 0
72023 -#define MEDIA_TYPE_100M_FULL 1
72024 -#define MEDIA_TYPE_100M_HALF 2
72025 -#define MEDIA_TYPE_10M_FULL 3
72026 -#define MEDIA_TYPE_10M_HALF 4
72027 -
72028 - u16 autoneg_advertised;
72029 - u16 mii_autoneg_adv_reg;
72030 - u16 mii_1000t_ctrl_reg;
72031 -
72032 - u16 tx_imt; /* TX Interrupt Moderator timer ( 2us resolution) */
72033 - u16 rx_imt; /* RX Interrupt Moderator timer ( 2us resolution) */
72034 - u16 ict; /* Interrupt Clear timer (2us resolution) */
72035 - u16 ctrl_flags;
72036 -#define ATL1C_INTR_CLEAR_ON_READ 0x0001
72037 -#define ATL1C_INTR_MODRT_ENABLE 0x0002
72038 -#define ATL1C_CMB_ENABLE 0x0004
72039 -#define ATL1C_SMB_ENABLE 0x0010
72040 -#define ATL1C_TXQ_MODE_ENHANCE 0x0020
72041 -#define ATL1C_RX_IPV6_CHKSUM 0x0040
72042 -#define ATL1C_ASPM_L0S_SUPPORT 0x0080
72043 -#define ATL1C_ASPM_L1_SUPPORT 0x0100
72044 -#define ATL1C_ASPM_CTRL_MON 0x0200
72045 -#define ATL1C_HIB_DISABLE 0x0400
72046 -#define ATL1C_LINK_CAP_1000M 0x0800
72047 -#define ATL1C_FPGA_VERSION 0x8000
72048 - u16 cmb_tpd;
72049 - u16 cmb_rrd;
72050 - u16 cmb_rx_timer; /* 2us resolution */
72051 - u16 cmb_tx_timer;
72052 - u32 smb_timer;
72053 -
72054 - u16 rrd_thresh; /* Threshold of number of RRD produced to trigger
72055 - interrupt request */
72056 - u16 tpd_thresh;
72057 - u8 tpd_burst; /* Number of TPD to prefetch in cache-aligned burst. */
72058 - u8 rfd_burst;
72059 - enum atl1c_rss_type rss_type;
72060 - enum atl1c_rss_mode rss_mode;
72061 - u8 rss_hash_bits;
72062 - u32 base_cpu;
72063 - u32 indirect_tab;
72064 - u8 mac_addr[ETH_ALEN];
72065 - u8 perm_mac_addr[ETH_ALEN];
72066 -
72067 - bool phy_configured;
72068 - bool re_autoneg;
72069 - bool emi_ca;
72070 -};
72071 -
72072 -/*
72073 - * atl1c_ring_header represents a single, contiguous block of DMA space
72074 - * mapped for the three descriptor rings (tpd, rfd, rrd) and the two
72075 - * message blocks (cmb, smb) described below
72076 - */
72077 -struct atl1c_ring_header {
72078 - void *desc; /* virtual address */
72079 - dma_addr_t dma; /* physical address*/
72080 - unsigned int size; /* length in bytes */
72081 -};
72082 -
72083 -/*
72084 - * atl1c_buffer is wrapper around a pointer to a socket buffer
72085 - * so a DMA handle can be stored along with the skb
72086 - */
72087 -struct atl1c_buffer {
72088 - struct sk_buff *skb; /* socket buffer */
72089 - u16 length; /* rx buffer length */
72090 - u16 state; /* state of buffer */
72091 -#define ATL1_BUFFER_FREE 0
72092 -#define ATL1_BUFFER_BUSY 1
72093 - dma_addr_t dma;
72094 -};
72095 -
72096 -/* transimit packet descriptor (tpd) ring */
72097 -struct atl1c_tpd_ring {
72098 - void *desc; /* descriptor ring virtual address */
72099 - dma_addr_t dma; /* descriptor ring physical address */
72100 - u16 size; /* descriptor ring length in bytes */
72101 - u16 count; /* number of descriptors in the ring */
72102 - u16 next_to_use; /* this is protectd by adapter->tx_lock */
72103 - atomic_t next_to_clean;
72104 - struct atl1c_buffer *buffer_info;
72105 -};
72106 -
72107 -/* receive free descriptor (rfd) ring */
72108 -struct atl1c_rfd_ring {
72109 - void *desc; /* descriptor ring virtual address */
72110 - dma_addr_t dma; /* descriptor ring physical address */
72111 - u16 size; /* descriptor ring length in bytes */
72112 - u16 count; /* number of descriptors in the ring */
72113 - u16 next_to_use;
72114 - u16 next_to_clean;
72115 - struct atl1c_buffer *buffer_info;
72116 -};
72117 -
72118 -/* receive return desciptor (rrd) ring */
72119 -struct atl1c_rrd_ring {
72120 - void *desc; /* descriptor ring virtual address */
72121 - dma_addr_t dma; /* descriptor ring physical address */
72122 - u16 size; /* descriptor ring length in bytes */
72123 - u16 count; /* number of descriptors in the ring */
72124 - u16 next_to_use;
72125 - u16 next_to_clean;
72126 -};
72127 -
72128 -struct atl1c_cmb {
72129 - void *cmb;
72130 - dma_addr_t dma;
72131 -};
72132 -
72133 -struct atl1c_smb {
72134 - void *smb;
72135 - dma_addr_t dma;
72136 -};
72137 -
72138 -/* board specific private data structure */
72139 -struct atl1c_adapter {
72140 - struct net_device *netdev;
72141 - struct pci_dev *pdev;
72142 - struct vlan_group *vlgrp;
72143 - struct napi_struct napi;
72144 - struct atl1c_hw hw;
72145 - struct atl1c_hw_stats hw_stats;
72146 - struct net_device_stats net_stats;
72147 - struct mii_if_info mii; /* MII interface info */
72148 - u16 rx_buffer_len;
72149 -
72150 - unsigned long flags;
72151 -#define __AT_TESTING 0x0001
72152 -#define __AT_RESETTING 0x0002
72153 -#define __AT_DOWN 0x0003
72154 - u32 msg_enable;
72155 -
72156 - bool have_msi;
72157 - u32 wol;
72158 - u16 link_speed;
72159 - u16 link_duplex;
72160 -
72161 - spinlock_t mdio_lock;
72162 - spinlock_t tx_lock;
72163 - atomic_t irq_sem;
72164 -
72165 - struct work_struct reset_task;
72166 - struct work_struct link_chg_task;
72167 - struct timer_list watchdog_timer;
72168 - struct timer_list phy_config_timer;
72169 -
72170 - /* All Descriptor memory */
72171 - struct atl1c_ring_header ring_header;
72172 - struct atl1c_tpd_ring tpd_ring[AT_MAX_TRANSMIT_QUEUE];
72173 - struct atl1c_rfd_ring rfd_ring[AT_MAX_RECEIVE_QUEUE];
72174 - struct atl1c_rrd_ring rrd_ring[AT_MAX_RECEIVE_QUEUE];
72175 - struct atl1c_cmb cmb;
72176 - struct atl1c_smb smb;
72177 - int num_rx_queues;
72178 - u32 bd_number; /* board number;*/
72179 -};
72180 -
72181 -#define AT_WRITE_REG(a, reg, value) ( \
72182 - writel((value), ((a)->hw_addr + reg)))
72183 -
72184 -#define AT_WRITE_FLUSH(a) (\
72185 - readl((a)->hw_addr))
72186 -
72187 -#define AT_READ_REG(a, reg, pdata) do { \
72188 - if (unlikely((a)->hibernate)) { \
72189 - readl((a)->hw_addr + reg); \
72190 - *(u32 *)pdata = readl((a)->hw_addr + reg); \
72191 - } else { \
72192 - *(u32 *)pdata = readl((a)->hw_addr + reg); \
72193 - } \
72194 - } while (0)
72195 -
72196 -#define AT_WRITE_REGB(a, reg, value) (\
72197 - writeb((value), ((a)->hw_addr + reg)))
72198 -
72199 -#define AT_READ_REGB(a, reg) (\
72200 - readb((a)->hw_addr + reg))
72201 -
72202 -#define AT_WRITE_REGW(a, reg, value) (\
72203 - writew((value), ((a)->hw_addr + reg)))
72204 -
72205 -#define AT_READ_REGW(a, reg) (\
72206 - readw((a)->hw_addr + reg))
72207 -
72208 -#define AT_WRITE_REG_ARRAY(a, reg, offset, value) ( \
72209 - writel((value), (((a)->hw_addr + reg) + ((offset) << 2))))
72210 -
72211 -#define AT_READ_REG_ARRAY(a, reg, offset) ( \
72212 - readl(((a)->hw_addr + reg) + ((offset) << 2)))
72213 -
72214 -extern char atl1c_driver_name[];
72215 -extern char atl1c_driver_version[];
72216 -
72217 -extern int atl1c_up(struct atl1c_adapter *adapter);
72218 -extern void atl1c_down(struct atl1c_adapter *adapter);
72219 -extern void atl1c_reinit_locked(struct atl1c_adapter *adapter);
72220 -extern s32 atl1c_reset_hw(struct atl1c_hw *hw);
72221 -extern void atl1c_set_ethtool_ops(struct net_device *netdev);
72222 -#endif /* _ATL1C_H_ */
72223 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/atl1c/atl1c_hw.c linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_hw.c
72224 --- linux-2.6.29.owrt/drivers/net/atl1c/atl1c_hw.c 2009-05-10 22:04:38.000000000 +0200
72225 +++ linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_hw.c 1970-01-01 01:00:00.000000000 +0100
72226 @@ -1,527 +0,0 @@
72227 -/*
72228 - * Copyright(c) 2007 Atheros Corporation. All rights reserved.
72229 - *
72230 - * Derived from Intel e1000 driver
72231 - * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
72232 - *
72233 - * This program is free software; you can redistribute it and/or modify it
72234 - * under the terms of the GNU General Public License as published by the Free
72235 - * Software Foundation; either version 2 of the License, or (at your option)
72236 - * any later version.
72237 - *
72238 - * This program is distributed in the hope that it will be useful, but WITHOUT
72239 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
72240 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
72241 - * more details.
72242 - *
72243 - * You should have received a copy of the GNU General Public License along with
72244 - * this program; if not, write to the Free Software Foundation, Inc., 59
72245 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
72246 - */
72247 -#include <linux/pci.h>
72248 -#include <linux/delay.h>
72249 -#include <linux/mii.h>
72250 -#include <linux/crc32.h>
72251 -
72252 -#include "atl1c.h"
72253 -
72254 -/*
72255 - * check_eeprom_exist
72256 - * return 1 if eeprom exist
72257 - */
72258 -int atl1c_check_eeprom_exist(struct atl1c_hw *hw)
72259 -{
72260 - u32 data;
72261 -
72262 - AT_READ_REG(hw, REG_TWSI_DEBUG, &data);
72263 - if (data & TWSI_DEBUG_DEV_EXIST)
72264 - return 1;
72265 -
72266 - return 0;
72267 -}
72268 -
72269 -void atl1c_hw_set_mac_addr(struct atl1c_hw *hw)
72270 -{
72271 - u32 value;
72272 - /*
72273 - * 00-0B-6A-F6-00-DC
72274 - * 0: 6AF600DC 1: 000B
72275 - * low dword
72276 - */
72277 - value = (((u32)hw->mac_addr[2]) << 24) |
72278 - (((u32)hw->mac_addr[3]) << 16) |
72279 - (((u32)hw->mac_addr[4]) << 8) |
72280 - (((u32)hw->mac_addr[5])) ;
72281 - AT_WRITE_REG_ARRAY(hw, REG_MAC_STA_ADDR, 0, value);
72282 - /* hight dword */
72283 - value = (((u32)hw->mac_addr[0]) << 8) |
72284 - (((u32)hw->mac_addr[1])) ;
72285 - AT_WRITE_REG_ARRAY(hw, REG_MAC_STA_ADDR, 1, value);
72286 -}
72287 -
72288 -/*
72289 - * atl1c_get_permanent_address
72290 - * return 0 if get valid mac address,
72291 - */
72292 -static int atl1c_get_permanent_address(struct atl1c_hw *hw)
72293 -{
72294 - u32 addr[2];
72295 - u32 i;
72296 - u32 otp_ctrl_data;
72297 - u32 twsi_ctrl_data;
72298 - u8 eth_addr[ETH_ALEN];
72299 -
72300 - /* init */
72301 - addr[0] = addr[1] = 0;
72302 - AT_READ_REG(hw, REG_OTP_CTRL, &otp_ctrl_data);
72303 - if (atl1c_check_eeprom_exist(hw)) {
72304 - /* Enable OTP CLK */
72305 - if (!(otp_ctrl_data & OTP_CTRL_CLK_EN)) {
72306 - otp_ctrl_data |= OTP_CTRL_CLK_EN;
72307 - AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
72308 - AT_WRITE_FLUSH(hw);
72309 - msleep(1);
72310 - }
72311 -
72312 - AT_READ_REG(hw, REG_TWSI_CTRL, &twsi_ctrl_data);
72313 - twsi_ctrl_data |= TWSI_CTRL_SW_LDSTART;
72314 - AT_WRITE_REG(hw, REG_TWSI_CTRL, twsi_ctrl_data);
72315 - for (i = 0; i < AT_TWSI_EEPROM_TIMEOUT; i++) {
72316 - msleep(10);
72317 - AT_READ_REG(hw, REG_TWSI_CTRL, &twsi_ctrl_data);
72318 - if ((twsi_ctrl_data & TWSI_CTRL_SW_LDSTART) == 0)
72319 - break;
72320 - }
72321 - if (i >= AT_TWSI_EEPROM_TIMEOUT)
72322 - return -1;
72323 - }
72324 - /* Disable OTP_CLK */
72325 - if (otp_ctrl_data & OTP_CTRL_CLK_EN) {
72326 - otp_ctrl_data &= ~OTP_CTRL_CLK_EN;
72327 - AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
72328 - AT_WRITE_FLUSH(hw);
72329 - msleep(1);
72330 - }
72331 -
72332 - /* maybe MAC-address is from BIOS */
72333 - AT_READ_REG(hw, REG_MAC_STA_ADDR, &addr[0]);
72334 - AT_READ_REG(hw, REG_MAC_STA_ADDR + 4, &addr[1]);
72335 - *(u32 *) &eth_addr[2] = swab32(addr[0]);
72336 - *(u16 *) &eth_addr[0] = swab16(*(u16 *)&addr[1]);
72337 -
72338 - if (is_valid_ether_addr(eth_addr)) {
72339 - memcpy(hw->perm_mac_addr, eth_addr, ETH_ALEN);
72340 - return 0;
72341 - }
72342 -
72343 - return -1;
72344 -}
72345 -
72346 -bool atl1c_read_eeprom(struct atl1c_hw *hw, u32 offset, u32 *p_value)
72347 -{
72348 - int i;
72349 - int ret = false;
72350 - u32 otp_ctrl_data;
72351 - u32 control;
72352 - u32 data;
72353 -
72354 - if (offset & 3)
72355 - return ret; /* address do not align */
72356 -
72357 - AT_READ_REG(hw, REG_OTP_CTRL, &otp_ctrl_data);
72358 - if (!(otp_ctrl_data & OTP_CTRL_CLK_EN))
72359 - AT_WRITE_REG(hw, REG_OTP_CTRL,
72360 - (otp_ctrl_data | OTP_CTRL_CLK_EN));
72361 -
72362 - AT_WRITE_REG(hw, REG_EEPROM_DATA_LO, 0);
72363 - control = (offset & EEPROM_CTRL_ADDR_MASK) << EEPROM_CTRL_ADDR_SHIFT;
72364 - AT_WRITE_REG(hw, REG_EEPROM_CTRL, control);
72365 -
72366 - for (i = 0; i < 10; i++) {
72367 - udelay(100);
72368 - AT_READ_REG(hw, REG_EEPROM_CTRL, &control);
72369 - if (control & EEPROM_CTRL_RW)
72370 - break;
72371 - }
72372 - if (control & EEPROM_CTRL_RW) {
72373 - AT_READ_REG(hw, REG_EEPROM_CTRL, &data);
72374 - AT_READ_REG(hw, REG_EEPROM_DATA_LO, p_value);
72375 - data = data & 0xFFFF;
72376 - *p_value = swab32((data << 16) | (*p_value >> 16));
72377 - ret = true;
72378 - }
72379 - if (!(otp_ctrl_data & OTP_CTRL_CLK_EN))
72380 - AT_WRITE_REG(hw, REG_OTP_CTRL, otp_ctrl_data);
72381 -
72382 - return ret;
72383 -}
72384 -/*
72385 - * Reads the adapter's MAC address from the EEPROM
72386 - *
72387 - * hw - Struct containing variables accessed by shared code
72388 - */
72389 -int atl1c_read_mac_addr(struct atl1c_hw *hw)
72390 -{
72391 - int err = 0;
72392 -
72393 - err = atl1c_get_permanent_address(hw);
72394 - if (err)
72395 - random_ether_addr(hw->perm_mac_addr);
72396 -
72397 - memcpy(hw->mac_addr, hw->perm_mac_addr, sizeof(hw->perm_mac_addr));
72398 - return 0;
72399 -}
72400 -
72401 -/*
72402 - * atl1c_hash_mc_addr
72403 - * purpose
72404 - * set hash value for a multicast address
72405 - * hash calcu processing :
72406 - * 1. calcu 32bit CRC for multicast address
72407 - * 2. reverse crc with MSB to LSB
72408 - */
72409 -u32 atl1c_hash_mc_addr(struct atl1c_hw *hw, u8 *mc_addr)
72410 -{
72411 - u32 crc32;
72412 - u32 value = 0;
72413 - int i;
72414 -
72415 - crc32 = ether_crc_le(6, mc_addr);
72416 - for (i = 0; i < 32; i++)
72417 - value |= (((crc32 >> i) & 1) << (31 - i));
72418 -
72419 - return value;
72420 -}
72421 -
72422 -/*
72423 - * Sets the bit in the multicast table corresponding to the hash value.
72424 - * hw - Struct containing variables accessed by shared code
72425 - * hash_value - Multicast address hash value
72426 - */
72427 -void atl1c_hash_set(struct atl1c_hw *hw, u32 hash_value)
72428 -{
72429 - u32 hash_bit, hash_reg;
72430 - u32 mta;
72431 -
72432 - /*
72433 - * The HASH Table is a register array of 2 32-bit registers.
72434 - * It is treated like an array of 64 bits. We want to set
72435 - * bit BitArray[hash_value]. So we figure out what register
72436 - * the bit is in, read it, OR in the new bit, then write
72437 - * back the new value. The register is determined by the
72438 - * upper bit of the hash value and the bit within that
72439 - * register are determined by the lower 5 bits of the value.
72440 - */
72441 - hash_reg = (hash_value >> 31) & 0x1;
72442 - hash_bit = (hash_value >> 26) & 0x1F;
72443 -
72444 - mta = AT_READ_REG_ARRAY(hw, REG_RX_HASH_TABLE, hash_reg);
72445 -
72446 - mta |= (1 << hash_bit);
72447 -
72448 - AT_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, hash_reg, mta);
72449 -}
72450 -
72451 -/*
72452 - * Reads the value from a PHY register
72453 - * hw - Struct containing variables accessed by shared code
72454 - * reg_addr - address of the PHY register to read
72455 - */
72456 -int atl1c_read_phy_reg(struct atl1c_hw *hw, u16 reg_addr, u16 *phy_data)
72457 -{
72458 - u32 val;
72459 - int i;
72460 -
72461 - val = ((u32)(reg_addr & MDIO_REG_ADDR_MASK)) << MDIO_REG_ADDR_SHIFT |
72462 - MDIO_START | MDIO_SUP_PREAMBLE | MDIO_RW |
72463 - MDIO_CLK_25_4 << MDIO_CLK_SEL_SHIFT;
72464 -
72465 - AT_WRITE_REG(hw, REG_MDIO_CTRL, val);
72466 -
72467 - for (i = 0; i < MDIO_WAIT_TIMES; i++) {
72468 - udelay(2);
72469 - AT_READ_REG(hw, REG_MDIO_CTRL, &val);
72470 - if (!(val & (MDIO_START | MDIO_BUSY)))
72471 - break;
72472 - }
72473 - if (!(val & (MDIO_START | MDIO_BUSY))) {
72474 - *phy_data = (u16)val;
72475 - return 0;
72476 - }
72477 -
72478 - return -1;
72479 -}
72480 -
72481 -/*
72482 - * Writes a value to a PHY register
72483 - * hw - Struct containing variables accessed by shared code
72484 - * reg_addr - address of the PHY register to write
72485 - * data - data to write to the PHY
72486 - */
72487 -int atl1c_write_phy_reg(struct atl1c_hw *hw, u32 reg_addr, u16 phy_data)
72488 -{
72489 - int i;
72490 - u32 val;
72491 -
72492 - val = ((u32)(phy_data & MDIO_DATA_MASK)) << MDIO_DATA_SHIFT |
72493 - (reg_addr & MDIO_REG_ADDR_MASK) << MDIO_REG_ADDR_SHIFT |
72494 - MDIO_SUP_PREAMBLE | MDIO_START |
72495 - MDIO_CLK_25_4 << MDIO_CLK_SEL_SHIFT;
72496 -
72497 - AT_WRITE_REG(hw, REG_MDIO_CTRL, val);
72498 -
72499 - for (i = 0; i < MDIO_WAIT_TIMES; i++) {
72500 - udelay(2);
72501 - AT_READ_REG(hw, REG_MDIO_CTRL, &val);
72502 - if (!(val & (MDIO_START | MDIO_BUSY)))
72503 - break;
72504 - }
72505 -
72506 - if (!(val & (MDIO_START | MDIO_BUSY)))
72507 - return 0;
72508 -
72509 - return -1;
72510 -}
72511 -
72512 -/*
72513 - * Configures PHY autoneg and flow control advertisement settings
72514 - *
72515 - * hw - Struct containing variables accessed by shared code
72516 - */
72517 -static int atl1c_phy_setup_adv(struct atl1c_hw *hw)
72518 -{
72519 - u16 mii_adv_data = ADVERTISE_DEFAULT_CAP & ~ADVERTISE_SPEED_MASK;
72520 - u16 mii_giga_ctrl_data = GIGA_CR_1000T_DEFAULT_CAP &
72521 - ~GIGA_CR_1000T_SPEED_MASK;
72522 -
72523 - if (hw->autoneg_advertised & ADVERTISED_10baseT_Half)
72524 - mii_adv_data |= ADVERTISE_10HALF;
72525 - if (hw->autoneg_advertised & ADVERTISED_10baseT_Full)
72526 - mii_adv_data |= ADVERTISE_10FULL;
72527 - if (hw->autoneg_advertised & ADVERTISED_100baseT_Half)
72528 - mii_adv_data |= ADVERTISE_100HALF;
72529 - if (hw->autoneg_advertised & ADVERTISED_100baseT_Full)
72530 - mii_adv_data |= ADVERTISE_100FULL;
72531 -
72532 - if (hw->autoneg_advertised & ADVERTISED_Autoneg)
72533 - mii_adv_data |= ADVERTISE_10HALF | ADVERTISE_10FULL |
72534 - ADVERTISE_100HALF | ADVERTISE_100FULL;
72535 -
72536 - if (hw->ctrl_flags & ATL1C_LINK_CAP_1000M) {
72537 - if (hw->autoneg_advertised & ADVERTISED_1000baseT_Half)
72538 - mii_giga_ctrl_data |= ADVERTISE_1000HALF;
72539 - if (hw->autoneg_advertised & ADVERTISED_1000baseT_Full)
72540 - mii_giga_ctrl_data |= ADVERTISE_1000FULL;
72541 - if (hw->autoneg_advertised & ADVERTISED_Autoneg)
72542 - mii_giga_ctrl_data |= ADVERTISE_1000HALF |
72543 - ADVERTISE_1000FULL;
72544 - }
72545 -
72546 - if (atl1c_write_phy_reg(hw, MII_ADVERTISE, mii_adv_data) != 0 ||
72547 - atl1c_write_phy_reg(hw, MII_GIGA_CR, mii_giga_ctrl_data) != 0)
72548 - return -1;
72549 - return 0;
72550 -}
72551 -
72552 -void atl1c_phy_disable(struct atl1c_hw *hw)
72553 -{
72554 - AT_WRITE_REGW(hw, REG_GPHY_CTRL,
72555 - GPHY_CTRL_PW_WOL_DIS | GPHY_CTRL_EXT_RESET);
72556 -}
72557 -
72558 -static void atl1c_phy_magic_data(struct atl1c_hw *hw)
72559 -{
72560 - u16 data;
72561 -
72562 - data = ANA_LOOP_SEL_10BT | ANA_EN_MASK_TB | ANA_EN_10BT_IDLE |
72563 - ((1 & ANA_INTERVAL_SEL_TIMER_MASK) <<
72564 - ANA_INTERVAL_SEL_TIMER_SHIFT);
72565 -
72566 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_18);
72567 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72568 -
72569 - data = (2 & ANA_SERDES_CDR_BW_MASK) | ANA_MS_PAD_DBG |
72570 - ANA_SERDES_EN_DEEM | ANA_SERDES_SEL_HSP | ANA_SERDES_EN_PLL |
72571 - ANA_SERDES_EN_LCKDT;
72572 -
72573 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_5);
72574 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72575 -
72576 - data = (44 & ANA_LONG_CABLE_TH_100_MASK) |
72577 - ((33 & ANA_SHORT_CABLE_TH_100_MASK) <<
72578 - ANA_SHORT_CABLE_TH_100_SHIFT) | ANA_BP_BAD_LINK_ACCUM |
72579 - ANA_BP_SMALL_BW;
72580 -
72581 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_54);
72582 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72583 -
72584 - data = (11 & ANA_IECHO_ADJ_MASK) | ((11 & ANA_IECHO_ADJ_MASK) <<
72585 - ANA_IECHO_ADJ_2_SHIFT) | ((8 & ANA_IECHO_ADJ_MASK) <<
72586 - ANA_IECHO_ADJ_1_SHIFT) | ((8 & ANA_IECHO_ADJ_MASK) <<
72587 - ANA_IECHO_ADJ_0_SHIFT);
72588 -
72589 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_4);
72590 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72591 -
72592 - data = ANA_RESTART_CAL | ((7 & ANA_MANUL_SWICH_ON_MASK) <<
72593 - ANA_MANUL_SWICH_ON_SHIFT) | ANA_MAN_ENABLE |
72594 - ANA_SEL_HSP | ANA_EN_HB | ANA_OEN_125M;
72595 -
72596 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_0);
72597 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72598 -
72599 - if (hw->ctrl_flags & ATL1C_HIB_DISABLE) {
72600 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_41);
72601 - if (atl1c_read_phy_reg(hw, MII_DBG_DATA, &data) != 0)
72602 - return;
72603 - data &= ~ANA_TOP_PS_EN;
72604 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72605 -
72606 - atl1c_write_phy_reg(hw, MII_DBG_ADDR, MII_ANA_CTRL_11);
72607 - if (atl1c_read_phy_reg(hw, MII_DBG_DATA, &data) != 0)
72608 - return;
72609 - data &= ~ANA_PS_HIB_EN;
72610 - atl1c_write_phy_reg(hw, MII_DBG_DATA, data);
72611 - }
72612 -}
72613 -
72614 -int atl1c_phy_reset(struct atl1c_hw *hw)
72615 -{
72616 - struct atl1c_adapter *adapter = hw->adapter;
72617 - struct pci_dev *pdev = adapter->pdev;
72618 - u32 phy_ctrl_data = GPHY_CTRL_DEFAULT;
72619 - u32 mii_ier_data = IER_LINK_UP | IER_LINK_DOWN;
72620 - int err;
72621 -
72622 - if (hw->ctrl_flags & ATL1C_HIB_DISABLE)
72623 - phy_ctrl_data &= ~GPHY_CTRL_HIB_EN;
72624 -
72625 - AT_WRITE_REG(hw, REG_GPHY_CTRL, phy_ctrl_data);
72626 - AT_WRITE_FLUSH(hw);
72627 - msleep(40);
72628 - phy_ctrl_data |= GPHY_CTRL_EXT_RESET;
72629 - AT_WRITE_REG(hw, REG_GPHY_CTRL, phy_ctrl_data);
72630 - AT_WRITE_FLUSH(hw);
72631 - msleep(10);
72632 -
72633 - /*Enable PHY LinkChange Interrupt */
72634 - err = atl1c_write_phy_reg(hw, MII_IER, mii_ier_data);
72635 - if (err) {
72636 - if (netif_msg_hw(adapter))
72637 - dev_err(&pdev->dev,
72638 - "Error enable PHY linkChange Interrupt\n");
72639 - return err;
72640 - }
72641 - if (!(hw->ctrl_flags & ATL1C_FPGA_VERSION))
72642 - atl1c_phy_magic_data(hw);
72643 - return 0;
72644 -}
72645 -
72646 -int atl1c_phy_init(struct atl1c_hw *hw)
72647 -{
72648 - struct atl1c_adapter *adapter = (struct atl1c_adapter *)hw->adapter;
72649 - struct pci_dev *pdev = adapter->pdev;
72650 - int ret_val;
72651 - u16 mii_bmcr_data = BMCR_RESET;
72652 - u16 phy_id1, phy_id2;
72653 -
72654 - if ((atl1c_read_phy_reg(hw, MII_PHYSID1, &phy_id1) != 0) ||
72655 - (atl1c_read_phy_reg(hw, MII_PHYSID2, &phy_id2) != 0)) {
72656 - if (netif_msg_link(adapter))
72657 - dev_err(&pdev->dev, "Error get phy ID\n");
72658 - return -1;
72659 - }
72660 - switch (hw->media_type) {
72661 - case MEDIA_TYPE_AUTO_SENSOR:
72662 - ret_val = atl1c_phy_setup_adv(hw);
72663 - if (ret_val) {
72664 - if (netif_msg_link(adapter))
72665 - dev_err(&pdev->dev,
72666 - "Error Setting up Auto-Negotiation\n");
72667 - return ret_val;
72668 - }
72669 - mii_bmcr_data |= BMCR_AUTO_NEG_EN | BMCR_RESTART_AUTO_NEG;
72670 - break;
72671 - case MEDIA_TYPE_100M_FULL:
72672 - mii_bmcr_data |= BMCR_SPEED_100 | BMCR_FULL_DUPLEX;
72673 - break;
72674 - case MEDIA_TYPE_100M_HALF:
72675 - mii_bmcr_data |= BMCR_SPEED_100;
72676 - break;
72677 - case MEDIA_TYPE_10M_FULL:
72678 - mii_bmcr_data |= BMCR_SPEED_10 | BMCR_FULL_DUPLEX;
72679 - break;
72680 - case MEDIA_TYPE_10M_HALF:
72681 - mii_bmcr_data |= BMCR_SPEED_10;
72682 - break;
72683 - default:
72684 - if (netif_msg_link(adapter))
72685 - dev_err(&pdev->dev, "Wrong Media type %d\n",
72686 - hw->media_type);
72687 - return -1;
72688 - break;
72689 - }
72690 -
72691 - ret_val = atl1c_write_phy_reg(hw, MII_BMCR, mii_bmcr_data);
72692 - if (ret_val)
72693 - return ret_val;
72694 - hw->phy_configured = true;
72695 -
72696 - return 0;
72697 -}
72698 -
72699 -/*
72700 - * Detects the current speed and duplex settings of the hardware.
72701 - *
72702 - * hw - Struct containing variables accessed by shared code
72703 - * speed - Speed of the connection
72704 - * duplex - Duplex setting of the connection
72705 - */
72706 -int atl1c_get_speed_and_duplex(struct atl1c_hw *hw, u16 *speed, u16 *duplex)
72707 -{
72708 - int err;
72709 - u16 phy_data;
72710 -
72711 - /* Read PHY Specific Status Register (17) */
72712 - err = atl1c_read_phy_reg(hw, MII_GIGA_PSSR, &phy_data);
72713 - if (err)
72714 - return err;
72715 -
72716 - if (!(phy_data & GIGA_PSSR_SPD_DPLX_RESOLVED))
72717 - return -1;
72718 -
72719 - switch (phy_data & GIGA_PSSR_SPEED) {
72720 - case GIGA_PSSR_1000MBS:
72721 - *speed = SPEED_1000;
72722 - break;
72723 - case GIGA_PSSR_100MBS:
72724 - *speed = SPEED_100;
72725 - break;
72726 - case GIGA_PSSR_10MBS:
72727 - *speed = SPEED_10;
72728 - break;
72729 - default:
72730 - return -1;
72731 - break;
72732 - }
72733 -
72734 - if (phy_data & GIGA_PSSR_DPLX)
72735 - *duplex = FULL_DUPLEX;
72736 - else
72737 - *duplex = HALF_DUPLEX;
72738 -
72739 - return 0;
72740 -}
72741 -
72742 -int atl1c_restart_autoneg(struct atl1c_hw *hw)
72743 -{
72744 - int err = 0;
72745 - u16 mii_bmcr_data = BMCR_RESET;
72746 -
72747 - err = atl1c_phy_setup_adv(hw);
72748 - if (err)
72749 - return err;
72750 - mii_bmcr_data |= BMCR_AUTO_NEG_EN | BMCR_RESTART_AUTO_NEG;
72751 -
72752 - return atl1c_write_phy_reg(hw, MII_BMCR, mii_bmcr_data);
72753 -}
72754 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/atl1c/atl1c_hw.h linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_hw.h
72755 --- linux-2.6.29.owrt/drivers/net/atl1c/atl1c_hw.h 2009-05-10 22:04:38.000000000 +0200
72756 +++ linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_hw.h 1970-01-01 01:00:00.000000000 +0100
72757 @@ -1,859 +0,0 @@
72758 -/*
72759 - * Copyright(c) 2008 - 2009 Atheros Corporation. All rights reserved.
72760 - *
72761 - * Derived from Intel e1000 driver
72762 - * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
72763 - *
72764 - * This program is free software; you can redistribute it and/or modify it
72765 - * under the terms of the GNU General Public License as published by the Free
72766 - * Software Foundation; either version 2 of the License, or (at your option)
72767 - * any later version.
72768 - *
72769 - * This program is distributed in the hope that it will be useful, but WITHOUT
72770 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
72771 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
72772 - * more details.
72773 - *
72774 - * You should have received a copy of the GNU General Public License along with
72775 - * this program; if not, write to the Free Software Foundation, Inc., 59
72776 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
72777 - */
72778 -
72779 -#ifndef _ATL1C_HW_H_
72780 -#define _ATL1C_HW_H_
72781 -
72782 -#include <linux/types.h>
72783 -#include <linux/mii.h>
72784 -
72785 -struct atl1c_adapter;
72786 -struct atl1c_hw;
72787 -
72788 -/* function prototype */
72789 -void atl1c_phy_disable(struct atl1c_hw *hw);
72790 -void atl1c_hw_set_mac_addr(struct atl1c_hw *hw);
72791 -int atl1c_phy_reset(struct atl1c_hw *hw);
72792 -int atl1c_read_mac_addr(struct atl1c_hw *hw);
72793 -int atl1c_get_speed_and_duplex(struct atl1c_hw *hw, u16 *speed, u16 *duplex);
72794 -u32 atl1c_hash_mc_addr(struct atl1c_hw *hw, u8 *mc_addr);
72795 -void atl1c_hash_set(struct atl1c_hw *hw, u32 hash_value);
72796 -int atl1c_read_phy_reg(struct atl1c_hw *hw, u16 reg_addr, u16 *phy_data);
72797 -int atl1c_write_phy_reg(struct atl1c_hw *hw, u32 reg_addr, u16 phy_data);
72798 -bool atl1c_read_eeprom(struct atl1c_hw *hw, u32 offset, u32 *p_value);
72799 -int atl1c_phy_init(struct atl1c_hw *hw);
72800 -int atl1c_check_eeprom_exist(struct atl1c_hw *hw);
72801 -int atl1c_restart_autoneg(struct atl1c_hw *hw);
72802 -
72803 -/* register definition */
72804 -#define REG_DEVICE_CAP 0x5C
72805 -#define DEVICE_CAP_MAX_PAYLOAD_MASK 0x7
72806 -#define DEVICE_CAP_MAX_PAYLOAD_SHIFT 0
72807 -
72808 -#define REG_DEVICE_CTRL 0x60
72809 -#define DEVICE_CTRL_MAX_PAYLOAD_MASK 0x7
72810 -#define DEVICE_CTRL_MAX_PAYLOAD_SHIFT 5
72811 -#define DEVICE_CTRL_MAX_RREQ_SZ_MASK 0x7
72812 -#define DEVICE_CTRL_MAX_RREQ_SZ_SHIFT 12
72813 -
72814 -#define REG_LINK_CTRL 0x68
72815 -#define LINK_CTRL_L0S_EN 0x01
72816 -#define LINK_CTRL_L1_EN 0x02
72817 -
72818 -#define REG_VPD_CAP 0x6C
72819 -#define VPD_CAP_ID_MASK 0xff
72820 -#define VPD_CAP_ID_SHIFT 0
72821 -#define VPD_CAP_NEXT_PTR_MASK 0xFF
72822 -#define VPD_CAP_NEXT_PTR_SHIFT 8
72823 -#define VPD_CAP_VPD_ADDR_MASK 0x7FFF
72824 -#define VPD_CAP_VPD_ADDR_SHIFT 16
72825 -#define VPD_CAP_VPD_FLAG 0x80000000
72826 -
72827 -#define REG_VPD_DATA 0x70
72828 -
72829 -#define REG_PCIE_UC_SEVERITY 0x10C
72830 -#define PCIE_UC_SERVRITY_TRN 0x00000001
72831 -#define PCIE_UC_SERVRITY_DLP 0x00000010
72832 -#define PCIE_UC_SERVRITY_PSN_TLP 0x00001000
72833 -#define PCIE_UC_SERVRITY_FCP 0x00002000
72834 -#define PCIE_UC_SERVRITY_CPL_TO 0x00004000
72835 -#define PCIE_UC_SERVRITY_CA 0x00008000
72836 -#define PCIE_UC_SERVRITY_UC 0x00010000
72837 -#define PCIE_UC_SERVRITY_ROV 0x00020000
72838 -#define PCIE_UC_SERVRITY_MLFP 0x00040000
72839 -#define PCIE_UC_SERVRITY_ECRC 0x00080000
72840 -#define PCIE_UC_SERVRITY_UR 0x00100000
72841 -
72842 -#define REG_DEV_SERIALNUM_CTRL 0x200
72843 -#define REG_DEV_MAC_SEL_MASK 0x0 /* 0:EUI; 1:MAC */
72844 -#define REG_DEV_MAC_SEL_SHIFT 0
72845 -#define REG_DEV_SERIAL_NUM_EN_MASK 0x1
72846 -#define REG_DEV_SERIAL_NUM_EN_SHIFT 1
72847 -
72848 -#define REG_TWSI_CTRL 0x218
72849 -#define TWSI_CTRL_LD_OFFSET_MASK 0xFF
72850 -#define TWSI_CTRL_LD_OFFSET_SHIFT 0
72851 -#define TWSI_CTRL_LD_SLV_ADDR_MASK 0x7
72852 -#define TWSI_CTRL_LD_SLV_ADDR_SHIFT 8
72853 -#define TWSI_CTRL_SW_LDSTART 0x800
72854 -#define TWSI_CTRL_HW_LDSTART 0x1000
72855 -#define TWSI_CTRL_SMB_SLV_ADDR_MASK 0x7F
72856 -#define TWSI_CTRL_SMB_SLV_ADDR_SHIFT 15
72857 -#define TWSI_CTRL_LD_EXIST 0x400000
72858 -#define TWSI_CTRL_READ_FREQ_SEL_MASK 0x3
72859 -#define TWSI_CTRL_READ_FREQ_SEL_SHIFT 23
72860 -#define TWSI_CTRL_FREQ_SEL_100K 0
72861 -#define TWSI_CTRL_FREQ_SEL_200K 1
72862 -#define TWSI_CTRL_FREQ_SEL_300K 2
72863 -#define TWSI_CTRL_FREQ_SEL_400K 3
72864 -#define TWSI_CTRL_SMB_SLV_ADDR
72865 -#define TWSI_CTRL_WRITE_FREQ_SEL_MASK 0x3
72866 -#define TWSI_CTRL_WRITE_FREQ_SEL_SHIFT 24
72867 -
72868 -
72869 -#define REG_PCIE_DEV_MISC_CTRL 0x21C
72870 -#define PCIE_DEV_MISC_EXT_PIPE 0x2
72871 -#define PCIE_DEV_MISC_RETRY_BUFDIS 0x1
72872 -#define PCIE_DEV_MISC_SPIROM_EXIST 0x4
72873 -#define PCIE_DEV_MISC_SERDES_ENDIAN 0x8
72874 -#define PCIE_DEV_MISC_SERDES_SEL_DIN 0x10
72875 -
72876 -#define REG_PCIE_PHYMISC 0x1000
72877 -#define PCIE_PHYMISC_FORCE_RCV_DET 0x4
72878 -
72879 -#define REG_TWSI_DEBUG 0x1108
72880 -#define TWSI_DEBUG_DEV_EXIST 0x20000000
72881 -
72882 -#define REG_EEPROM_CTRL 0x12C0
72883 -#define EEPROM_CTRL_DATA_HI_MASK 0xFFFF
72884 -#define EEPROM_CTRL_DATA_HI_SHIFT 0
72885 -#define EEPROM_CTRL_ADDR_MASK 0x3FF
72886 -#define EEPROM_CTRL_ADDR_SHIFT 16
72887 -#define EEPROM_CTRL_ACK 0x40000000
72888 -#define EEPROM_CTRL_RW 0x80000000
72889 -
72890 -#define REG_EEPROM_DATA_LO 0x12C4
72891 -
72892 -#define REG_OTP_CTRL 0x12F0
72893 -#define OTP_CTRL_CLK_EN 0x0002
72894 -
72895 -#define REG_PM_CTRL 0x12F8
72896 -#define PM_CTRL_SDES_EN 0x00000001
72897 -#define PM_CTRL_RBER_EN 0x00000002
72898 -#define PM_CTRL_CLK_REQ_EN 0x00000004
72899 -#define PM_CTRL_ASPM_L1_EN 0x00000008
72900 -#define PM_CTRL_SERDES_L1_EN 0x00000010
72901 -#define PM_CTRL_SERDES_PLL_L1_EN 0x00000020
72902 -#define PM_CTRL_SERDES_PD_EX_L1 0x00000040
72903 -#define PM_CTRL_SERDES_BUDS_RX_L1_EN 0x00000080
72904 -#define PM_CTRL_L0S_ENTRY_TIMER_MASK 0xF
72905 -#define PM_CTRL_L0S_ENTRY_TIMER_SHIFT 8
72906 -#define PM_CTRL_ASPM_L0S_EN 0x00001000
72907 -#define PM_CTRL_CLK_SWH_L1 0x00002000
72908 -#define PM_CTRL_CLK_PWM_VER1_1 0x00004000
72909 -#define PM_CTRL_PCIE_RECV 0x00008000
72910 -#define PM_CTRL_L1_ENTRY_TIMER_MASK 0xF
72911 -#define PM_CTRL_L1_ENTRY_TIMER_SHIFT 16
72912 -#define PM_CTRL_PM_REQ_TIMER_MASK 0xF
72913 -#define PM_CTRL_PM_REQ_TIMER_SHIFT 20
72914 -#define PM_CTRL_LCKDET_TIMER_MASK 0x3F
72915 -#define PM_CTRL_LCKDET_TIMER_SHIFT 24
72916 -#define PM_CTRL_MAC_ASPM_CHK 0x40000000
72917 -#define PM_CTRL_HOTRST 0x80000000
72918 -
72919 -/* Selene Master Control Register */
72920 -#define REG_MASTER_CTRL 0x1400
72921 -#define MASTER_CTRL_SOFT_RST 0x1
72922 -#define MASTER_CTRL_TEST_MODE_MASK 0x3
72923 -#define MASTER_CTRL_TEST_MODE_SHIFT 2
72924 -#define MASTER_CTRL_BERT_START 0x10
72925 -#define MASTER_CTRL_MTIMER_EN 0x100
72926 -#define MASTER_CTRL_MANUAL_INT 0x200
72927 -#define MASTER_CTRL_TX_ITIMER_EN 0x400
72928 -#define MASTER_CTRL_RX_ITIMER_EN 0x800
72929 -#define MASTER_CTRL_CLK_SEL_DIS 0x1000
72930 -#define MASTER_CTRL_CLK_SWH_MODE 0x2000
72931 -#define MASTER_CTRL_INT_RDCLR 0x4000
72932 -#define MASTER_CTRL_REV_NUM_SHIFT 16
72933 -#define MASTER_CTRL_REV_NUM_MASK 0xff
72934 -#define MASTER_CTRL_DEV_ID_SHIFT 24
72935 -#define MASTER_CTRL_DEV_ID_MASK 0x7f
72936 -#define MASTER_CTRL_OTP_SEL 0x80000000
72937 -
72938 -/* Timer Initial Value Register */
72939 -#define REG_MANUAL_TIMER_INIT 0x1404
72940 -
72941 -/* IRQ ModeratorTimer Initial Value Register */
72942 -#define REG_IRQ_MODRT_TIMER_INIT 0x1408
72943 -#define IRQ_MODRT_TIMER_MASK 0xffff
72944 -#define IRQ_MODRT_TX_TIMER_SHIFT 0
72945 -#define IRQ_MODRT_RX_TIMER_SHIFT 16
72946 -
72947 -#define REG_GPHY_CTRL 0x140C
72948 -#define GPHY_CTRL_EXT_RESET 0x1
72949 -#define GPHY_CTRL_RTL_MODE 0x2
72950 -#define GPHY_CTRL_LED_MODE 0x4
72951 -#define GPHY_CTRL_ANEG_NOW 0x8
72952 -#define GPHY_CTRL_REV_ANEG 0x10
72953 -#define GPHY_CTRL_GATE_25M_EN 0x20
72954 -#define GPHY_CTRL_LPW_EXIT 0x40
72955 -#define GPHY_CTRL_PHY_IDDQ 0x80
72956 -#define GPHY_CTRL_PHY_IDDQ_DIS 0x100
72957 -#define GPHY_CTRL_GIGA_DIS 0x200
72958 -#define GPHY_CTRL_HIB_EN 0x400
72959 -#define GPHY_CTRL_HIB_PULSE 0x800
72960 -#define GPHY_CTRL_SEL_ANA_RST 0x1000
72961 -#define GPHY_CTRL_PHY_PLL_ON 0x2000
72962 -#define GPHY_CTRL_PWDOWN_HW 0x4000
72963 -#define GPHY_CTRL_PHY_PLL_BYPASS 0x8000
72964 -
72965 -#define GPHY_CTRL_DEFAULT ( \
72966 - GPHY_CTRL_SEL_ANA_RST |\
72967 - GPHY_CTRL_HIB_PULSE |\
72968 - GPHY_CTRL_HIB_EN)
72969 -
72970 -#define GPHY_CTRL_PW_WOL_DIS ( \
72971 - GPHY_CTRL_SEL_ANA_RST |\
72972 - GPHY_CTRL_HIB_PULSE |\
72973 - GPHY_CTRL_HIB_EN |\
72974 - GPHY_CTRL_PWDOWN_HW |\
72975 - GPHY_CTRL_PHY_IDDQ)
72976 -
72977 -/* Block IDLE Status Register */
72978 -#define REG_IDLE_STATUS 0x1410
72979 -#define IDLE_STATUS_MASK 0x00FF
72980 -#define IDLE_STATUS_RXMAC_NO_IDLE 0x1
72981 -#define IDLE_STATUS_TXMAC_NO_IDLE 0x2
72982 -#define IDLE_STATUS_RXQ_NO_IDLE 0x4
72983 -#define IDLE_STATUS_TXQ_NO_IDLE 0x8
72984 -#define IDLE_STATUS_DMAR_NO_IDLE 0x10
72985 -#define IDLE_STATUS_DMAW_NO_IDLE 0x20
72986 -#define IDLE_STATUS_SMB_NO_IDLE 0x40
72987 -#define IDLE_STATUS_CMB_NO_IDLE 0x80
72988 -
72989 -/* MDIO Control Register */
72990 -#define REG_MDIO_CTRL 0x1414
72991 -#define MDIO_DATA_MASK 0xffff /* On MDIO write, the 16-bit
72992 - * control data to write to PHY
72993 - * MII management register */
72994 -#define MDIO_DATA_SHIFT 0 /* On MDIO read, the 16-bit
72995 - * status data that was read
72996 - * from the PHY MII management register */
72997 -#define MDIO_REG_ADDR_MASK 0x1f /* MDIO register address */
72998 -#define MDIO_REG_ADDR_SHIFT 16
72999 -#define MDIO_RW 0x200000 /* 1: read, 0: write */
73000 -#define MDIO_SUP_PREAMBLE 0x400000 /* Suppress preamble */
73001 -#define MDIO_START 0x800000 /* Write 1 to initiate the MDIO
73002 - * master. And this bit is self
73003 - * cleared after one cycle */
73004 -#define MDIO_CLK_SEL_SHIFT 24
73005 -#define MDIO_CLK_25_4 0
73006 -#define MDIO_CLK_25_6 2
73007 -#define MDIO_CLK_25_8 3
73008 -#define MDIO_CLK_25_10 4
73009 -#define MDIO_CLK_25_14 5
73010 -#define MDIO_CLK_25_20 6
73011 -#define MDIO_CLK_25_28 7
73012 -#define MDIO_BUSY 0x8000000
73013 -#define MDIO_AP_EN 0x10000000
73014 -#define MDIO_WAIT_TIMES 10
73015 -
73016 -/* MII PHY Status Register */
73017 -#define REG_PHY_STATUS 0x1418
73018 -#define PHY_GENERAL_STATUS_MASK 0xFFFF
73019 -#define PHY_STATUS_RECV_ENABLE 0x0001
73020 -#define PHY_OE_PWSP_STATUS_MASK 0x07FF
73021 -#define PHY_OE_PWSP_STATUS_SHIFT 16
73022 -#define PHY_STATUS_LPW_STATE 0x80000000
73023 -/* BIST Control and Status Register0 (for the Packet Memory) */
73024 -#define REG_BIST0_CTRL 0x141c
73025 -#define BIST0_NOW 0x1
73026 -#define BIST0_SRAM_FAIL 0x2 /* 1: The SRAM failure is
73027 - * un-repairable because
73028 - * it has address decoder
73029 - * failure or more than 1 cell
73030 - * stuck-to-x failure */
73031 -#define BIST0_FUSE_FLAG 0x4
73032 -
73033 -/* BIST Control and Status Register1(for the retry buffer of PCI Express) */
73034 -#define REG_BIST1_CTRL 0x1420
73035 -#define BIST1_NOW 0x1
73036 -#define BIST1_SRAM_FAIL 0x2
73037 -#define BIST1_FUSE_FLAG 0x4
73038 -
73039 -/* SerDes Lock Detect Control and Status Register */
73040 -#define REG_SERDES_LOCK 0x1424
73041 -#define SERDES_LOCK_DETECT 0x1 /* SerDes lock detected. This signal
73042 - * comes from Analog SerDes */
73043 -#define SERDES_LOCK_DETECT_EN 0x2 /* 1: Enable SerDes Lock detect function */
73044 -
73045 -/* MAC Control Register */
73046 -#define REG_MAC_CTRL 0x1480
73047 -#define MAC_CTRL_TX_EN 0x1
73048 -#define MAC_CTRL_RX_EN 0x2
73049 -#define MAC_CTRL_TX_FLOW 0x4
73050 -#define MAC_CTRL_RX_FLOW 0x8
73051 -#define MAC_CTRL_LOOPBACK 0x10
73052 -#define MAC_CTRL_DUPLX 0x20
73053 -#define MAC_CTRL_ADD_CRC 0x40
73054 -#define MAC_CTRL_PAD 0x80
73055 -#define MAC_CTRL_LENCHK 0x100
73056 -#define MAC_CTRL_HUGE_EN 0x200
73057 -#define MAC_CTRL_PRMLEN_SHIFT 10
73058 -#define MAC_CTRL_PRMLEN_MASK 0xf
73059 -#define MAC_CTRL_RMV_VLAN 0x4000
73060 -#define MAC_CTRL_PROMIS_EN 0x8000
73061 -#define MAC_CTRL_TX_PAUSE 0x10000
73062 -#define MAC_CTRL_SCNT 0x20000
73063 -#define MAC_CTRL_SRST_TX 0x40000
73064 -#define MAC_CTRL_TX_SIMURST 0x80000
73065 -#define MAC_CTRL_SPEED_SHIFT 20
73066 -#define MAC_CTRL_SPEED_MASK 0x3
73067 -#define MAC_CTRL_DBG_TX_BKPRESURE 0x400000
73068 -#define MAC_CTRL_TX_HUGE 0x800000
73069 -#define MAC_CTRL_RX_CHKSUM_EN 0x1000000
73070 -#define MAC_CTRL_MC_ALL_EN 0x2000000
73071 -#define MAC_CTRL_BC_EN 0x4000000
73072 -#define MAC_CTRL_DBG 0x8000000
73073 -#define MAC_CTRL_SINGLE_PAUSE_EN 0x10000000
73074 -
73075 -/* MAC IPG/IFG Control Register */
73076 -#define REG_MAC_IPG_IFG 0x1484
73077 -#define MAC_IPG_IFG_IPGT_SHIFT 0 /* Desired back to back
73078 - * inter-packet gap. The
73079 - * default is 96-bit time */
73080 -#define MAC_IPG_IFG_IPGT_MASK 0x7f
73081 -#define MAC_IPG_IFG_MIFG_SHIFT 8 /* Minimum number of IFG to
73082 - * enforce in between RX frames */
73083 -#define MAC_IPG_IFG_MIFG_MASK 0xff /* Frame gap below such IFP is dropped */
73084 -#define MAC_IPG_IFG_IPGR1_SHIFT 16 /* 64bit Carrier-Sense window */
73085 -#define MAC_IPG_IFG_IPGR1_MASK 0x7f
73086 -#define MAC_IPG_IFG_IPGR2_SHIFT 24 /* 96-bit IPG window */
73087 -#define MAC_IPG_IFG_IPGR2_MASK 0x7f
73088 -
73089 -/* MAC STATION ADDRESS */
73090 -#define REG_MAC_STA_ADDR 0x1488
73091 -
73092 -/* Hash table for multicast address */
73093 -#define REG_RX_HASH_TABLE 0x1490
73094 -
73095 -/* MAC Half-Duplex Control Register */
73096 -#define REG_MAC_HALF_DUPLX_CTRL 0x1498
73097 -#define MAC_HALF_DUPLX_CTRL_LCOL_SHIFT 0 /* Collision Window */
73098 -#define MAC_HALF_DUPLX_CTRL_LCOL_MASK 0x3ff
73099 -#define MAC_HALF_DUPLX_CTRL_RETRY_SHIFT 12
73100 -#define MAC_HALF_DUPLX_CTRL_RETRY_MASK 0xf
73101 -#define MAC_HALF_DUPLX_CTRL_EXC_DEF_EN 0x10000
73102 -#define MAC_HALF_DUPLX_CTRL_NO_BACK_C 0x20000
73103 -#define MAC_HALF_DUPLX_CTRL_NO_BACK_P 0x40000 /* No back-off on backpressure,
73104 - * immediately start the
73105 - * transmission after back pressure */
73106 -#define MAC_HALF_DUPLX_CTRL_ABEBE 0x80000 /* 1: Alternative Binary Exponential Back-off Enabled */
73107 -#define MAC_HALF_DUPLX_CTRL_ABEBT_SHIFT 20 /* Maximum binary exponential number */
73108 -#define MAC_HALF_DUPLX_CTRL_ABEBT_MASK 0xf
73109 -#define MAC_HALF_DUPLX_CTRL_JAMIPG_SHIFT 24 /* IPG to start JAM for collision based flow control in half-duplex */
73110 -#define MAC_HALF_DUPLX_CTRL_JAMIPG_MASK 0xf /* mode. In unit of 8-bit time */
73111 -
73112 -/* Maximum Frame Length Control Register */
73113 -#define REG_MTU 0x149c
73114 -
73115 -/* Wake-On-Lan control register */
73116 -#define REG_WOL_CTRL 0x14a0
73117 -#define WOL_PATTERN_EN 0x00000001
73118 -#define WOL_PATTERN_PME_EN 0x00000002
73119 -#define WOL_MAGIC_EN 0x00000004
73120 -#define WOL_MAGIC_PME_EN 0x00000008
73121 -#define WOL_LINK_CHG_EN 0x00000010
73122 -#define WOL_LINK_CHG_PME_EN 0x00000020
73123 -#define WOL_PATTERN_ST 0x00000100
73124 -#define WOL_MAGIC_ST 0x00000200
73125 -#define WOL_LINKCHG_ST 0x00000400
73126 -#define WOL_CLK_SWITCH_EN 0x00008000
73127 -#define WOL_PT0_EN 0x00010000
73128 -#define WOL_PT1_EN 0x00020000
73129 -#define WOL_PT2_EN 0x00040000
73130 -#define WOL_PT3_EN 0x00080000
73131 -#define WOL_PT4_EN 0x00100000
73132 -#define WOL_PT5_EN 0x00200000
73133 -#define WOL_PT6_EN 0x00400000
73134 -
73135 -/* WOL Length ( 2 DWORD ) */
73136 -#define REG_WOL_PATTERN_LEN 0x14a4
73137 -#define WOL_PT_LEN_MASK 0x7f
73138 -#define WOL_PT0_LEN_SHIFT 0
73139 -#define WOL_PT1_LEN_SHIFT 8
73140 -#define WOL_PT2_LEN_SHIFT 16
73141 -#define WOL_PT3_LEN_SHIFT 24
73142 -#define WOL_PT4_LEN_SHIFT 0
73143 -#define WOL_PT5_LEN_SHIFT 8
73144 -#define WOL_PT6_LEN_SHIFT 16
73145 -
73146 -/* Internal SRAM Partition Register */
73147 -#define RFDX_HEAD_ADDR_MASK 0x03FF
73148 -#define RFDX_HARD_ADDR_SHIFT 0
73149 -#define RFDX_TAIL_ADDR_MASK 0x03FF
73150 -#define RFDX_TAIL_ADDR_SHIFT 16
73151 -
73152 -#define REG_SRAM_RFD0_INFO 0x1500
73153 -#define REG_SRAM_RFD1_INFO 0x1504
73154 -#define REG_SRAM_RFD2_INFO 0x1508
73155 -#define REG_SRAM_RFD3_INFO 0x150C
73156 -
73157 -#define REG_RFD_NIC_LEN 0x1510 /* In 8-bytes */
73158 -#define RFD_NIC_LEN_MASK 0x03FF
73159 -
73160 -#define REG_SRAM_TRD_ADDR 0x1518
73161 -#define TPD_HEAD_ADDR_MASK 0x03FF
73162 -#define TPD_HEAD_ADDR_SHIFT 0
73163 -#define TPD_TAIL_ADDR_MASK 0x03FF
73164 -#define TPD_TAIL_ADDR_SHIFT 16
73165 -
73166 -#define REG_SRAM_TRD_LEN 0x151C /* In 8-bytes */
73167 -#define TPD_NIC_LEN_MASK 0x03FF
73168 -
73169 -#define REG_SRAM_RXF_ADDR 0x1520
73170 -#define REG_SRAM_RXF_LEN 0x1524
73171 -#define REG_SRAM_TXF_ADDR 0x1528
73172 -#define REG_SRAM_TXF_LEN 0x152C
73173 -#define REG_SRAM_TCPH_ADDR 0x1530
73174 -#define REG_SRAM_PKTH_ADDR 0x1532
73175 -
73176 -/*
73177 - * Load Ptr Register
73178 - * Software sets this bit after the initialization of the head and tail */
73179 -#define REG_LOAD_PTR 0x1534
73180 -
73181 -/*
73182 - * addresses of all descriptors, as well as the following descriptor
73183 - * control register, which triggers each function block to load the head
73184 - * pointer to prepare for the operation. This bit is then self-cleared
73185 - * after one cycle.
73186 - */
73187 -#define REG_RX_BASE_ADDR_HI 0x1540
73188 -#define REG_TX_BASE_ADDR_HI 0x1544
73189 -#define REG_SMB_BASE_ADDR_HI 0x1548
73190 -#define REG_SMB_BASE_ADDR_LO 0x154C
73191 -#define REG_RFD0_HEAD_ADDR_LO 0x1550
73192 -#define REG_RFD1_HEAD_ADDR_LO 0x1554
73193 -#define REG_RFD2_HEAD_ADDR_LO 0x1558
73194 -#define REG_RFD3_HEAD_ADDR_LO 0x155C
73195 -#define REG_RFD_RING_SIZE 0x1560
73196 -#define RFD_RING_SIZE_MASK 0x0FFF
73197 -#define REG_RX_BUF_SIZE 0x1564
73198 -#define RX_BUF_SIZE_MASK 0xFFFF
73199 -#define REG_RRD0_HEAD_ADDR_LO 0x1568
73200 -#define REG_RRD1_HEAD_ADDR_LO 0x156C
73201 -#define REG_RRD2_HEAD_ADDR_LO 0x1570
73202 -#define REG_RRD3_HEAD_ADDR_LO 0x1574
73203 -#define REG_RRD_RING_SIZE 0x1578
73204 -#define RRD_RING_SIZE_MASK 0x0FFF
73205 -#define REG_HTPD_HEAD_ADDR_LO 0x157C
73206 -#define REG_NTPD_HEAD_ADDR_LO 0x1580
73207 -#define REG_TPD_RING_SIZE 0x1584
73208 -#define TPD_RING_SIZE_MASK 0xFFFF
73209 -#define REG_CMB_BASE_ADDR_LO 0x1588
73210 -
73211 -/* RSS about */
73212 -#define REG_RSS_KEY0 0x14B0
73213 -#define REG_RSS_KEY1 0x14B4
73214 -#define REG_RSS_KEY2 0x14B8
73215 -#define REG_RSS_KEY3 0x14BC
73216 -#define REG_RSS_KEY4 0x14C0
73217 -#define REG_RSS_KEY5 0x14C4
73218 -#define REG_RSS_KEY6 0x14C8
73219 -#define REG_RSS_KEY7 0x14CC
73220 -#define REG_RSS_KEY8 0x14D0
73221 -#define REG_RSS_KEY9 0x14D4
73222 -#define REG_IDT_TABLE0 0x14E0
73223 -#define REG_IDT_TABLE1 0x14E4
73224 -#define REG_IDT_TABLE2 0x14E8
73225 -#define REG_IDT_TABLE3 0x14EC
73226 -#define REG_IDT_TABLE4 0x14F0
73227 -#define REG_IDT_TABLE5 0x14F4
73228 -#define REG_IDT_TABLE6 0x14F8
73229 -#define REG_IDT_TABLE7 0x14FC
73230 -#define REG_IDT_TABLE REG_IDT_TABLE0
73231 -#define REG_RSS_HASH_VALUE 0x15B0
73232 -#define REG_RSS_HASH_FLAG 0x15B4
73233 -#define REG_BASE_CPU_NUMBER 0x15B8
73234 -
73235 -/* TXQ Control Register */
73236 -#define REG_TXQ_CTRL 0x1590
73237 -#define TXQ_NUM_TPD_BURST_MASK 0xF
73238 -#define TXQ_NUM_TPD_BURST_SHIFT 0
73239 -#define TXQ_CTRL_IP_OPTION_EN 0x10
73240 -#define TXQ_CTRL_EN 0x20
73241 -#define TXQ_CTRL_ENH_MODE 0x40
73242 -#define TXQ_CTRL_LS_8023_EN 0x80
73243 -#define TXQ_TXF_BURST_NUM_SHIFT 16
73244 -#define TXQ_TXF_BURST_NUM_MASK 0xFFFF
73245 -
73246 -/* Jumbo packet Threshold for task offload */
73247 -#define REG_TX_TSO_OFFLOAD_THRESH 0x1594 /* In 8-bytes */
73248 -#define TX_TSO_OFFLOAD_THRESH_MASK 0x07FF
73249 -
73250 -#define REG_TXF_WATER_MARK 0x1598 /* In 8-bytes */
73251 -#define TXF_WATER_MARK_MASK 0x0FFF
73252 -#define TXF_LOW_WATER_MARK_SHIFT 0
73253 -#define TXF_HIGH_WATER_MARK_SHIFT 16
73254 -#define TXQ_CTRL_BURST_MODE_EN 0x80000000
73255 -
73256 -#define REG_THRUPUT_MON_CTRL 0x159C
73257 -#define THRUPUT_MON_RATE_MASK 0x3
73258 -#define THRUPUT_MON_RATE_SHIFT 0
73259 -#define THRUPUT_MON_EN 0x80
73260 -
73261 -/* RXQ Control Register */
73262 -#define REG_RXQ_CTRL 0x15A0
73263 -#define ASPM_THRUPUT_LIMIT_MASK 0x3
73264 -#define ASPM_THRUPUT_LIMIT_SHIFT 0
73265 -#define ASPM_THRUPUT_LIMIT_NO 0x00
73266 -#define ASPM_THRUPUT_LIMIT_1M 0x01
73267 -#define ASPM_THRUPUT_LIMIT_10M 0x02
73268 -#define ASPM_THRUPUT_LIMIT_100M 0x04
73269 -#define RXQ1_CTRL_EN 0x10
73270 -#define RXQ2_CTRL_EN 0x20
73271 -#define RXQ3_CTRL_EN 0x40
73272 -#define IPV6_CHKSUM_CTRL_EN 0x80
73273 -#define RSS_HASH_BITS_MASK 0x00FF
73274 -#define RSS_HASH_BITS_SHIFT 8
73275 -#define RSS_HASH_IPV4 0x10000
73276 -#define RSS_HASH_IPV4_TCP 0x20000
73277 -#define RSS_HASH_IPV6 0x40000
73278 -#define RSS_HASH_IPV6_TCP 0x80000
73279 -#define RXQ_RFD_BURST_NUM_MASK 0x003F
73280 -#define RXQ_RFD_BURST_NUM_SHIFT 20
73281 -#define RSS_MODE_MASK 0x0003
73282 -#define RSS_MODE_SHIFT 26
73283 -#define RSS_NIP_QUEUE_SEL_MASK 0x1
73284 -#define RSS_NIP_QUEUE_SEL_SHIFT 28
73285 -#define RRS_HASH_CTRL_EN 0x20000000
73286 -#define RX_CUT_THRU_EN 0x40000000
73287 -#define RXQ_CTRL_EN 0x80000000
73288 -
73289 -#define REG_RFD_FREE_THRESH 0x15A4
73290 -#define RFD_FREE_THRESH_MASK 0x003F
73291 -#define RFD_FREE_HI_THRESH_SHIFT 0
73292 -#define RFD_FREE_LO_THRESH_SHIFT 6
73293 -
73294 -/* RXF flow control register */
73295 -#define REG_RXQ_RXF_PAUSE_THRESH 0x15A8
73296 -#define RXQ_RXF_PAUSE_TH_HI_SHIFT 0
73297 -#define RXQ_RXF_PAUSE_TH_HI_MASK 0x0FFF
73298 -#define RXQ_RXF_PAUSE_TH_LO_SHIFT 16
73299 -#define RXQ_RXF_PAUSE_TH_LO_MASK 0x0FFF
73300 -
73301 -#define REG_RXD_DMA_CTRL 0x15AC
73302 -#define RXD_DMA_THRESH_MASK 0x0FFF /* In 8-bytes */
73303 -#define RXD_DMA_THRESH_SHIFT 0
73304 -#define RXD_DMA_DOWN_TIMER_MASK 0xFFFF
73305 -#define RXD_DMA_DOWN_TIMER_SHIFT 16
73306 -
73307 -/* DMA Engine Control Register */
73308 -#define REG_DMA_CTRL 0x15C0
73309 -#define DMA_CTRL_DMAR_IN_ORDER 0x1
73310 -#define DMA_CTRL_DMAR_ENH_ORDER 0x2
73311 -#define DMA_CTRL_DMAR_OUT_ORDER 0x4
73312 -#define DMA_CTRL_RCB_VALUE 0x8
73313 -#define DMA_CTRL_DMAR_BURST_LEN_MASK 0x0007
73314 -#define DMA_CTRL_DMAR_BURST_LEN_SHIFT 4
73315 -#define DMA_CTRL_DMAW_BURST_LEN_MASK 0x0007
73316 -#define DMA_CTRL_DMAW_BURST_LEN_SHIFT 7
73317 -#define DMA_CTRL_DMAR_REQ_PRI 0x400
73318 -#define DMA_CTRL_DMAR_DLY_CNT_MASK 0x001F
73319 -#define DMA_CTRL_DMAR_DLY_CNT_SHIFT 11
73320 -#define DMA_CTRL_DMAW_DLY_CNT_MASK 0x000F
73321 -#define DMA_CTRL_DMAW_DLY_CNT_SHIFT 16
73322 -#define DMA_CTRL_CMB_EN 0x100000
73323 -#define DMA_CTRL_SMB_EN 0x200000
73324 -#define DMA_CTRL_CMB_NOW 0x400000
73325 -#define MAC_CTRL_SMB_DIS 0x1000000
73326 -#define DMA_CTRL_SMB_NOW 0x80000000
73327 -
73328 -/* CMB/SMB Control Register */
73329 -#define REG_SMB_STAT_TIMER 0x15C4 /* 2us resolution */
73330 -#define SMB_STAT_TIMER_MASK 0xFFFFFF
73331 -#define REG_CMB_TPD_THRESH 0x15C8
73332 -#define CMB_TPD_THRESH_MASK 0xFFFF
73333 -#define REG_CMB_TX_TIMER 0x15CC /* 2us resolution */
73334 -#define CMB_TX_TIMER_MASK 0xFFFF
73335 -
73336 -/* Mail box */
73337 -#define MB_RFDX_PROD_IDX_MASK 0xFFFF
73338 -#define REG_MB_RFD0_PROD_IDX 0x15E0
73339 -#define REG_MB_RFD1_PROD_IDX 0x15E4
73340 -#define REG_MB_RFD2_PROD_IDX 0x15E8
73341 -#define REG_MB_RFD3_PROD_IDX 0x15EC
73342 -
73343 -#define MB_PRIO_PROD_IDX_MASK 0xFFFF
73344 -#define REG_MB_PRIO_PROD_IDX 0x15F0
73345 -#define MB_HTPD_PROD_IDX_SHIFT 0
73346 -#define MB_NTPD_PROD_IDX_SHIFT 16
73347 -
73348 -#define MB_PRIO_CONS_IDX_MASK 0xFFFF
73349 -#define REG_MB_PRIO_CONS_IDX 0x15F4
73350 -#define MB_HTPD_CONS_IDX_SHIFT 0
73351 -#define MB_NTPD_CONS_IDX_SHIFT 16
73352 -
73353 -#define REG_MB_RFD01_CONS_IDX 0x15F8
73354 -#define MB_RFD0_CONS_IDX_MASK 0x0000FFFF
73355 -#define MB_RFD1_CONS_IDX_MASK 0xFFFF0000
73356 -#define REG_MB_RFD23_CONS_IDX 0x15FC
73357 -#define MB_RFD2_CONS_IDX_MASK 0x0000FFFF
73358 -#define MB_RFD3_CONS_IDX_MASK 0xFFFF0000
73359 -
73360 -/* Interrupt Status Register */
73361 -#define REG_ISR 0x1600
73362 -#define ISR_SMB 0x00000001
73363 -#define ISR_TIMER 0x00000002
73364 -/*
73365 - * Software manual interrupt, for debug. Set when SW_MAN_INT_EN is set
73366 - * in Table 51 Selene Master Control Register (Offset 0x1400).
73367 - */
73368 -#define ISR_MANUAL 0x00000004
73369 -#define ISR_HW_RXF_OV 0x00000008 /* RXF overflow interrupt */
73370 -#define ISR_RFD0_UR 0x00000010 /* RFD0 under run */
73371 -#define ISR_RFD1_UR 0x00000020
73372 -#define ISR_RFD2_UR 0x00000040
73373 -#define ISR_RFD3_UR 0x00000080
73374 -#define ISR_TXF_UR 0x00000100
73375 -#define ISR_DMAR_TO_RST 0x00000200
73376 -#define ISR_DMAW_TO_RST 0x00000400
73377 -#define ISR_TX_CREDIT 0x00000800
73378 -#define ISR_GPHY 0x00001000
73379 -/* GPHY low power state interrupt */
73380 -#define ISR_GPHY_LPW 0x00002000
73381 -#define ISR_TXQ_TO_RST 0x00004000
73382 -#define ISR_TX_PKT 0x00008000
73383 -#define ISR_RX_PKT_0 0x00010000
73384 -#define ISR_RX_PKT_1 0x00020000
73385 -#define ISR_RX_PKT_2 0x00040000
73386 -#define ISR_RX_PKT_3 0x00080000
73387 -#define ISR_MAC_RX 0x00100000
73388 -#define ISR_MAC_TX 0x00200000
73389 -#define ISR_UR_DETECTED 0x00400000
73390 -#define ISR_FERR_DETECTED 0x00800000
73391 -#define ISR_NFERR_DETECTED 0x01000000
73392 -#define ISR_CERR_DETECTED 0x02000000
73393 -#define ISR_PHY_LINKDOWN 0x04000000
73394 -#define ISR_DIS_INT 0x80000000
73395 -
73396 -/* Interrupt Mask Register */
73397 -#define REG_IMR 0x1604
73398 -
73399 -#define IMR_NORMAL_MASK (\
73400 - ISR_MANUAL |\
73401 - ISR_HW_RXF_OV |\
73402 - ISR_RFD0_UR |\
73403 - ISR_TXF_UR |\
73404 - ISR_DMAR_TO_RST |\
73405 - ISR_TXQ_TO_RST |\
73406 - ISR_DMAW_TO_RST |\
73407 - ISR_GPHY |\
73408 - ISR_TX_PKT |\
73409 - ISR_RX_PKT_0 |\
73410 - ISR_GPHY_LPW |\
73411 - ISR_PHY_LINKDOWN)
73412 -
73413 -#define ISR_RX_PKT (\
73414 - ISR_RX_PKT_0 |\
73415 - ISR_RX_PKT_1 |\
73416 - ISR_RX_PKT_2 |\
73417 - ISR_RX_PKT_3)
73418 -
73419 -#define ISR_OVER (\
73420 - ISR_RFD0_UR |\
73421 - ISR_RFD1_UR |\
73422 - ISR_RFD2_UR |\
73423 - ISR_RFD3_UR |\
73424 - ISR_HW_RXF_OV |\
73425 - ISR_TXF_UR)
73426 -
73427 -#define ISR_ERROR (\
73428 - ISR_DMAR_TO_RST |\
73429 - ISR_TXQ_TO_RST |\
73430 - ISR_DMAW_TO_RST |\
73431 - ISR_PHY_LINKDOWN)
73432 -
73433 -#define REG_INT_RETRIG_TIMER 0x1608
73434 -#define INT_RETRIG_TIMER_MASK 0xFFFF
73435 -
73436 -#define REG_HDS_CTRL 0x160C
73437 -#define HDS_CTRL_EN 0x0001
73438 -#define HDS_CTRL_BACKFILLSIZE_SHIFT 8
73439 -#define HDS_CTRL_BACKFILLSIZE_MASK 0x0FFF
73440 -#define HDS_CTRL_MAX_HDRSIZE_SHIFT 20
73441 -#define HDS_CTRL_MAC_HDRSIZE_MASK 0x0FFF
73442 -
73443 -#define REG_MAC_RX_STATUS_BIN 0x1700
73444 -#define REG_MAC_RX_STATUS_END 0x175c
73445 -#define REG_MAC_TX_STATUS_BIN 0x1760
73446 -#define REG_MAC_TX_STATUS_END 0x17c0
73447 -
73448 -/* DEBUG ADDR */
73449 -#define REG_DEBUG_DATA0 0x1900
73450 -#define REG_DEBUG_DATA1 0x1904
73451 -
73452 -/* PHY Control Register */
73453 -#define MII_BMCR 0x00
73454 -#define BMCR_SPEED_SELECT_MSB 0x0040 /* bits 6,13: 10=1000, 01=100, 00=10 */
73455 -#define BMCR_COLL_TEST_ENABLE 0x0080 /* Collision test enable */
73456 -#define BMCR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */
73457 -#define BMCR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */
73458 -#define BMCR_ISOLATE 0x0400 /* Isolate PHY from MII */
73459 -#define BMCR_POWER_DOWN 0x0800 /* Power down */
73460 -#define BMCR_AUTO_NEG_EN 0x1000 /* Auto Neg Enable */
73461 -#define BMCR_SPEED_SELECT_LSB 0x2000 /* bits 6,13: 10=1000, 01=100, 00=10 */
73462 -#define BMCR_LOOPBACK 0x4000 /* 0 = normal, 1 = loopback */
73463 -#define BMCR_RESET 0x8000 /* 0 = normal, 1 = PHY reset */
73464 -#define BMCR_SPEED_MASK 0x2040
73465 -#define BMCR_SPEED_1000 0x0040
73466 -#define BMCR_SPEED_100 0x2000
73467 -#define BMCR_SPEED_10 0x0000
73468 -
73469 -/* PHY Status Register */
73470 -#define MII_BMSR 0x01
73471 -#define BMMSR_EXTENDED_CAPS 0x0001 /* Extended register capabilities */
73472 -#define BMSR_JABBER_DETECT 0x0002 /* Jabber Detected */
73473 -#define BMSR_LINK_STATUS 0x0004 /* Link Status 1 = link */
73474 -#define BMSR_AUTONEG_CAPS 0x0008 /* Auto Neg Capable */
73475 -#define BMSR_REMOTE_FAULT 0x0010 /* Remote Fault Detect */
73476 -#define BMSR_AUTONEG_COMPLETE 0x0020 /* Auto Neg Complete */
73477 -#define BMSR_PREAMBLE_SUPPRESS 0x0040 /* Preamble may be suppressed */
73478 -#define BMSR_EXTENDED_STATUS 0x0100 /* Ext. status info in Reg 0x0F */
73479 -#define BMSR_100T2_HD_CAPS 0x0200 /* 100T2 Half Duplex Capable */
73480 -#define BMSR_100T2_FD_CAPS 0x0400 /* 100T2 Full Duplex Capable */
73481 -#define BMSR_10T_HD_CAPS 0x0800 /* 10T Half Duplex Capable */
73482 -#define BMSR_10T_FD_CAPS 0x1000 /* 10T Full Duplex Capable */
73483 -#define BMSR_100X_HD_CAPS 0x2000 /* 100X Half Duplex Capable */
73484 -#define BMMII_SR_100X_FD_CAPS 0x4000 /* 100X Full Duplex Capable */
73485 -#define BMMII_SR_100T4_CAPS 0x8000 /* 100T4 Capable */
73486 -
73487 -#define MII_PHYSID1 0x02
73488 -#define MII_PHYSID2 0x03
73489 -
73490 -/* Autoneg Advertisement Register */
73491 -#define MII_ADVERTISE 0x04
73492 -#define ADVERTISE_SPEED_MASK 0x01E0
73493 -#define ADVERTISE_DEFAULT_CAP 0x0DE0
73494 -
73495 -/* 1000BASE-T Control Register */
73496 -#define MII_GIGA_CR 0x09
73497 -#define GIGA_CR_1000T_REPEATER_DTE 0x0400 /* 1=Repeater/switch device port 0=DTE device */
73498 -
73499 -#define GIGA_CR_1000T_MS_VALUE 0x0800 /* 1=Configure PHY as Master 0=Configure PHY as Slave */
73500 -#define GIGA_CR_1000T_MS_ENABLE 0x1000 /* 1=Master/Slave manual config value 0=Automatic Master/Slave config */
73501 -#define GIGA_CR_1000T_TEST_MODE_NORMAL 0x0000 /* Normal Operation */
73502 -#define GIGA_CR_1000T_TEST_MODE_1 0x2000 /* Transmit Waveform test */
73503 -#define GIGA_CR_1000T_TEST_MODE_2 0x4000 /* Master Transmit Jitter test */
73504 -#define GIGA_CR_1000T_TEST_MODE_3 0x6000 /* Slave Transmit Jitter test */
73505 -#define GIGA_CR_1000T_TEST_MODE_4 0x8000 /* Transmitter Distortion test */
73506 -#define GIGA_CR_1000T_SPEED_MASK 0x0300
73507 -#define GIGA_CR_1000T_DEFAULT_CAP 0x0300
73508 -
73509 -/* PHY Specific Status Register */
73510 -#define MII_GIGA_PSSR 0x11
73511 -#define GIGA_PSSR_SPD_DPLX_RESOLVED 0x0800 /* 1=Speed & Duplex resolved */
73512 -#define GIGA_PSSR_DPLX 0x2000 /* 1=Duplex 0=Half Duplex */
73513 -#define GIGA_PSSR_SPEED 0xC000 /* Speed, bits 14:15 */
73514 -#define GIGA_PSSR_10MBS 0x0000 /* 00=10Mbs */
73515 -#define GIGA_PSSR_100MBS 0x4000 /* 01=100Mbs */
73516 -#define GIGA_PSSR_1000MBS 0x8000 /* 10=1000Mbs */
73517 -
73518 -/* PHY Interrupt Enable Register */
73519 -#define MII_IER 0x12
73520 -#define IER_LINK_UP 0x0400
73521 -#define IER_LINK_DOWN 0x0800
73522 -
73523 -/* PHY Interrupt Status Register */
73524 -#define MII_ISR 0x13
73525 -#define ISR_LINK_UP 0x0400
73526 -#define ISR_LINK_DOWN 0x0800
73527 -
73528 -/* Cable-Detect-Test Control Register */
73529 -#define MII_CDTC 0x16
73530 -#define CDTC_EN_OFF 0 /* sc */
73531 -#define CDTC_EN_BITS 1
73532 -#define CDTC_PAIR_OFF 8
73533 -#define CDTC_PAIR_BIT 2
73534 -
73535 -/* Cable-Detect-Test Status Register */
73536 -#define MII_CDTS 0x1C
73537 -#define CDTS_STATUS_OFF 8
73538 -#define CDTS_STATUS_BITS 2
73539 -#define CDTS_STATUS_NORMAL 0
73540 -#define CDTS_STATUS_SHORT 1
73541 -#define CDTS_STATUS_OPEN 2
73542 -#define CDTS_STATUS_INVALID 3
73543 -
73544 -#define MII_DBG_ADDR 0x1D
73545 -#define MII_DBG_DATA 0x1E
73546 -
73547 -#define MII_ANA_CTRL_0 0x0
73548 -#define ANA_RESTART_CAL 0x0001
73549 -#define ANA_MANUL_SWICH_ON_SHIFT 0x1
73550 -#define ANA_MANUL_SWICH_ON_MASK 0xF
73551 -#define ANA_MAN_ENABLE 0x0020
73552 -#define ANA_SEL_HSP 0x0040
73553 -#define ANA_EN_HB 0x0080
73554 -#define ANA_EN_HBIAS 0x0100
73555 -#define ANA_OEN_125M 0x0200
73556 -#define ANA_EN_LCKDT 0x0400
73557 -#define ANA_LCKDT_PHY 0x0800
73558 -#define ANA_AFE_MODE 0x1000
73559 -#define ANA_VCO_SLOW 0x2000
73560 -#define ANA_VCO_FAST 0x4000
73561 -#define ANA_SEL_CLK125M_DSP 0x8000
73562 -
73563 -#define MII_ANA_CTRL_4 0x4
73564 -#define ANA_IECHO_ADJ_MASK 0xF
73565 -#define ANA_IECHO_ADJ_3_SHIFT 0
73566 -#define ANA_IECHO_ADJ_2_SHIFT 4
73567 -#define ANA_IECHO_ADJ_1_SHIFT 8
73568 -#define ANA_IECHO_ADJ_0_SHIFT 12
73569 -
73570 -#define MII_ANA_CTRL_5 0x5
73571 -#define ANA_SERDES_CDR_BW_SHIFT 0
73572 -#define ANA_SERDES_CDR_BW_MASK 0x3
73573 -#define ANA_MS_PAD_DBG 0x0004
73574 -#define ANA_SPEEDUP_DBG 0x0008
73575 -#define ANA_SERDES_TH_LOS_SHIFT 4
73576 -#define ANA_SERDES_TH_LOS_MASK 0x3
73577 -#define ANA_SERDES_EN_DEEM 0x0040
73578 -#define ANA_SERDES_TXELECIDLE 0x0080
73579 -#define ANA_SERDES_BEACON 0x0100
73580 -#define ANA_SERDES_HALFTXDR 0x0200
73581 -#define ANA_SERDES_SEL_HSP 0x0400
73582 -#define ANA_SERDES_EN_PLL 0x0800
73583 -#define ANA_SERDES_EN 0x1000
73584 -#define ANA_SERDES_EN_LCKDT 0x2000
73585 -
73586 -#define MII_ANA_CTRL_11 0xB
73587 -#define ANA_PS_HIB_EN 0x8000
73588 -
73589 -#define MII_ANA_CTRL_18 0x12
73590 -#define ANA_TEST_MODE_10BT_01SHIFT 0
73591 -#define ANA_TEST_MODE_10BT_01MASK 0x3
73592 -#define ANA_LOOP_SEL_10BT 0x0004
73593 -#define ANA_RGMII_MODE_SW 0x0008
73594 -#define ANA_EN_LONGECABLE 0x0010
73595 -#define ANA_TEST_MODE_10BT_2 0x0020
73596 -#define ANA_EN_10BT_IDLE 0x0400
73597 -#define ANA_EN_MASK_TB 0x0800
73598 -#define ANA_TRIGGER_SEL_TIMER_SHIFT 12
73599 -#define ANA_TRIGGER_SEL_TIMER_MASK 0x3
73600 -#define ANA_INTERVAL_SEL_TIMER_SHIFT 14
73601 -#define ANA_INTERVAL_SEL_TIMER_MASK 0x3
73602 -
73603 -#define MII_ANA_CTRL_41 0x29
73604 -#define ANA_TOP_PS_EN 0x8000
73605 -
73606 -#define MII_ANA_CTRL_54 0x36
73607 -#define ANA_LONG_CABLE_TH_100_SHIFT 0
73608 -#define ANA_LONG_CABLE_TH_100_MASK 0x3F
73609 -#define ANA_DESERVED 0x0040
73610 -#define ANA_EN_LIT_CH 0x0080
73611 -#define ANA_SHORT_CABLE_TH_100_SHIFT 8
73612 -#define ANA_SHORT_CABLE_TH_100_MASK 0x3F
73613 -#define ANA_BP_BAD_LINK_ACCUM 0x4000
73614 -#define ANA_BP_SMALL_BW 0x8000
73615 -
73616 -#endif /*_ATL1C_HW_H_*/
73617 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/atl1c/atl1c_main.c linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_main.c
73618 --- linux-2.6.29.owrt/drivers/net/atl1c/atl1c_main.c 2009-05-10 22:04:38.000000000 +0200
73619 +++ linux-2.6.29-rc3.owrt/drivers/net/atl1c/atl1c_main.c 1970-01-01 01:00:00.000000000 +0100
73620 @@ -1,2797 +0,0 @@
73621 -/*
73622 - * Copyright(c) 2008 - 2009 Atheros Corporation. All rights reserved.
73623 - *
73624 - * Derived from Intel e1000 driver
73625 - * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
73626 - *
73627 - * This program is free software; you can redistribute it and/or modify it
73628 - * under the terms of the GNU General Public License as published by the Free
73629 - * Software Foundation; either version 2 of the License, or (at your option)
73630 - * any later version.
73631 - *
73632 - * This program is distributed in the hope that it will be useful, but WITHOUT
73633 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
73634 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
73635 - * more details.
73636 - *
73637 - * You should have received a copy of the GNU General Public License along with
73638 - * this program; if not, write to the Free Software Foundation, Inc., 59
73639 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
73640 - */
73641 -
73642 -#include "atl1c.h"
73643 -
73644 -#define ATL1C_DRV_VERSION "1.0.0.1-NAPI"
73645 -char atl1c_driver_name[] = "atl1c";
73646 -char atl1c_driver_version[] = ATL1C_DRV_VERSION;
73647 -#define PCI_DEVICE_ID_ATTANSIC_L2C 0x1062
73648 -#define PCI_DEVICE_ID_ATTANSIC_L1C 0x1063
73649 -/*
73650 - * atl1c_pci_tbl - PCI Device ID Table
73651 - *
73652 - * Wildcard entries (PCI_ANY_ID) should come last
73653 - * Last entry must be all 0s
73654 - *
73655 - * { Vendor ID, Device ID, SubVendor ID, SubDevice ID,
73656 - * Class, Class Mask, private data (not used) }
73657 - */
73658 -static struct pci_device_id atl1c_pci_tbl[] = {
73659 - {PCI_DEVICE(PCI_VENDOR_ID_ATTANSIC, PCI_DEVICE_ID_ATTANSIC_L1C)},
73660 - {PCI_DEVICE(PCI_VENDOR_ID_ATTANSIC, PCI_DEVICE_ID_ATTANSIC_L2C)},
73661 - /* required last entry */
73662 - { 0 }
73663 -};
73664 -MODULE_DEVICE_TABLE(pci, atl1c_pci_tbl);
73665 -
73666 -MODULE_AUTHOR("Jie Yang <jie.yang@atheros.com>");
73667 -MODULE_DESCRIPTION("Atheros 1000M Ethernet Network Driver");
73668 -MODULE_LICENSE("GPL");
73669 -MODULE_VERSION(ATL1C_DRV_VERSION);
73670 -
73671 -static int atl1c_stop_mac(struct atl1c_hw *hw);
73672 -static void atl1c_enable_rx_ctrl(struct atl1c_hw *hw);
73673 -static void atl1c_enable_tx_ctrl(struct atl1c_hw *hw);
73674 -static void atl1c_disable_l0s_l1(struct atl1c_hw *hw);
73675 -static void atl1c_set_aspm(struct atl1c_hw *hw, bool linkup);
73676 -static void atl1c_setup_mac_ctrl(struct atl1c_adapter *adapter);
73677 -static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter, u8 que,
73678 - int *work_done, int work_to_do);
73679 -
73680 -static const u16 atl1c_pay_load_size[] = {
73681 - 128, 256, 512, 1024, 2048, 4096,
73682 -};
73683 -
73684 -static const u16 atl1c_rfd_prod_idx_regs[AT_MAX_RECEIVE_QUEUE] =
73685 -{
73686 - REG_MB_RFD0_PROD_IDX,
73687 - REG_MB_RFD1_PROD_IDX,
73688 - REG_MB_RFD2_PROD_IDX,
73689 - REG_MB_RFD3_PROD_IDX
73690 -};
73691 -
73692 -static const u16 atl1c_rfd_addr_lo_regs[AT_MAX_RECEIVE_QUEUE] =
73693 -{
73694 - REG_RFD0_HEAD_ADDR_LO,
73695 - REG_RFD1_HEAD_ADDR_LO,
73696 - REG_RFD2_HEAD_ADDR_LO,
73697 - REG_RFD3_HEAD_ADDR_LO
73698 -};
73699 -
73700 -static const u16 atl1c_rrd_addr_lo_regs[AT_MAX_RECEIVE_QUEUE] =
73701 -{
73702 - REG_RRD0_HEAD_ADDR_LO,
73703 - REG_RRD1_HEAD_ADDR_LO,
73704 - REG_RRD2_HEAD_ADDR_LO,
73705 - REG_RRD3_HEAD_ADDR_LO
73706 -};
73707 -
73708 -static const u32 atl1c_default_msg = NETIF_MSG_DRV | NETIF_MSG_PROBE |
73709 - NETIF_MSG_LINK | NETIF_MSG_TIMER | NETIF_MSG_IFDOWN | NETIF_MSG_IFUP;
73710 -
73711 -/*
73712 - * atl1c_init_pcie - init PCIE module
73713 - */
73714 -static void atl1c_reset_pcie(struct atl1c_hw *hw, u32 flag)
73715 -{
73716 - u32 data;
73717 - u32 pci_cmd;
73718 - struct pci_dev *pdev = hw->adapter->pdev;
73719 -
73720 - AT_READ_REG(hw, PCI_COMMAND, &pci_cmd);
73721 - pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
73722 - pci_cmd |= (PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER |
73723 - PCI_COMMAND_IO);
73724 - AT_WRITE_REG(hw, PCI_COMMAND, pci_cmd);
73725 -
73726 - /*
73727 - * Clear any PowerSaveing Settings
73728 - */
73729 - pci_enable_wake(pdev, PCI_D3hot, 0);
73730 - pci_enable_wake(pdev, PCI_D3cold, 0);
73731 -
73732 - /*
73733 - * Mask some pcie error bits
73734 - */
73735 - AT_READ_REG(hw, REG_PCIE_UC_SEVERITY, &data);
73736 - data &= ~PCIE_UC_SERVRITY_DLP;
73737 - data &= ~PCIE_UC_SERVRITY_FCP;
73738 - AT_WRITE_REG(hw, REG_PCIE_UC_SEVERITY, data);
73739 -
73740 - if (flag & ATL1C_PCIE_L0S_L1_DISABLE)
73741 - atl1c_disable_l0s_l1(hw);
73742 - if (flag & ATL1C_PCIE_PHY_RESET)
73743 - AT_WRITE_REG(hw, REG_GPHY_CTRL, GPHY_CTRL_DEFAULT);
73744 - else
73745 - AT_WRITE_REG(hw, REG_GPHY_CTRL,
73746 - GPHY_CTRL_DEFAULT | GPHY_CTRL_EXT_RESET);
73747 -
73748 - msleep(1);
73749 -}
73750 -
73751 -/*
73752 - * atl1c_irq_enable - Enable default interrupt generation settings
73753 - * @adapter: board private structure
73754 - */
73755 -static inline void atl1c_irq_enable(struct atl1c_adapter *adapter)
73756 -{
73757 - if (likely(atomic_dec_and_test(&adapter->irq_sem))) {
73758 - AT_WRITE_REG(&adapter->hw, REG_ISR, 0x7FFFFFFF);
73759 - AT_WRITE_REG(&adapter->hw, REG_IMR, adapter->hw.intr_mask);
73760 - AT_WRITE_FLUSH(&adapter->hw);
73761 - }
73762 -}
73763 -
73764 -/*
73765 - * atl1c_irq_disable - Mask off interrupt generation on the NIC
73766 - * @adapter: board private structure
73767 - */
73768 -static inline void atl1c_irq_disable(struct atl1c_adapter *adapter)
73769 -{
73770 - atomic_inc(&adapter->irq_sem);
73771 - AT_WRITE_REG(&adapter->hw, REG_IMR, 0);
73772 - AT_WRITE_FLUSH(&adapter->hw);
73773 - synchronize_irq(adapter->pdev->irq);
73774 -}
73775 -
73776 -/*
73777 - * atl1c_irq_reset - reset interrupt confiure on the NIC
73778 - * @adapter: board private structure
73779 - */
73780 -static inline void atl1c_irq_reset(struct atl1c_adapter *adapter)
73781 -{
73782 - atomic_set(&adapter->irq_sem, 1);
73783 - atl1c_irq_enable(adapter);
73784 -}
73785 -
73786 -/*
73787 - * atl1c_phy_config - Timer Call-back
73788 - * @data: pointer to netdev cast into an unsigned long
73789 - */
73790 -static void atl1c_phy_config(unsigned long data)
73791 -{
73792 - struct atl1c_adapter *adapter = (struct atl1c_adapter *) data;
73793 - struct atl1c_hw *hw = &adapter->hw;
73794 - unsigned long flags;
73795 -
73796 - spin_lock_irqsave(&adapter->mdio_lock, flags);
73797 - atl1c_restart_autoneg(hw);
73798 - spin_unlock_irqrestore(&adapter->mdio_lock, flags);
73799 -}
73800 -
73801 -void atl1c_reinit_locked(struct atl1c_adapter *adapter)
73802 -{
73803 -
73804 - WARN_ON(in_interrupt());
73805 - atl1c_down(adapter);
73806 - atl1c_up(adapter);
73807 - clear_bit(__AT_RESETTING, &adapter->flags);
73808 -}
73809 -
73810 -static void atl1c_reset_task(struct work_struct *work)
73811 -{
73812 - struct atl1c_adapter *adapter;
73813 - struct net_device *netdev;
73814 -
73815 - adapter = container_of(work, struct atl1c_adapter, reset_task);
73816 - netdev = adapter->netdev;
73817 -
73818 - netif_device_detach(netdev);
73819 - atl1c_down(adapter);
73820 - atl1c_up(adapter);
73821 - netif_device_attach(netdev);
73822 -}
73823 -
73824 -static void atl1c_check_link_status(struct atl1c_adapter *adapter)
73825 -{
73826 - struct atl1c_hw *hw = &adapter->hw;
73827 - struct net_device *netdev = adapter->netdev;
73828 - struct pci_dev *pdev = adapter->pdev;
73829 - int err;
73830 - unsigned long flags;
73831 - u16 speed, duplex, phy_data;
73832 -
73833 - spin_lock_irqsave(&adapter->mdio_lock, flags);
73834 - /* MII_BMSR must read twise */
73835 - atl1c_read_phy_reg(hw, MII_BMSR, &phy_data);
73836 - atl1c_read_phy_reg(hw, MII_BMSR, &phy_data);
73837 - spin_unlock_irqrestore(&adapter->mdio_lock, flags);
73838 -
73839 - if ((phy_data & BMSR_LSTATUS) == 0) {
73840 - /* link down */
73841 - if (netif_carrier_ok(netdev)) {
73842 - hw->hibernate = true;
73843 - atl1c_set_aspm(hw, false);
73844 - if (atl1c_stop_mac(hw) != 0)
73845 - if (netif_msg_hw(adapter))
73846 - dev_warn(&pdev->dev,
73847 - "stop mac failed\n");
73848 - }
73849 - netif_carrier_off(netdev);
73850 - } else {
73851 - /* Link Up */
73852 - hw->hibernate = false;
73853 - spin_lock_irqsave(&adapter->mdio_lock, flags);
73854 - err = atl1c_get_speed_and_duplex(hw, &speed, &duplex);
73855 - spin_unlock_irqrestore(&adapter->mdio_lock, flags);
73856 - if (unlikely(err))
73857 - return;
73858 - /* link result is our setting */
73859 - if (adapter->link_speed != speed ||
73860 - adapter->link_duplex != duplex) {
73861 - adapter->link_speed = speed;
73862 - adapter->link_duplex = duplex;
73863 - atl1c_enable_tx_ctrl(hw);
73864 - atl1c_enable_rx_ctrl(hw);
73865 - atl1c_setup_mac_ctrl(adapter);
73866 - atl1c_set_aspm(hw, true);
73867 - if (netif_msg_link(adapter))
73868 - dev_info(&pdev->dev,
73869 - "%s: %s NIC Link is Up<%d Mbps %s>\n",
73870 - atl1c_driver_name, netdev->name,
73871 - adapter->link_speed,
73872 - adapter->link_duplex == FULL_DUPLEX ?
73873 - "Full Duplex" : "Half Duplex");
73874 - }
73875 - if (!netif_carrier_ok(netdev))
73876 - netif_carrier_on(netdev);
73877 - }
73878 -}
73879 -
73880 -/*
73881 - * atl1c_link_chg_task - deal with link change event Out of interrupt context
73882 - * @netdev: network interface device structure
73883 - */
73884 -static void atl1c_link_chg_task(struct work_struct *work)
73885 -{
73886 - struct atl1c_adapter *adapter;
73887 -
73888 - adapter = container_of(work, struct atl1c_adapter, link_chg_task);
73889 - atl1c_check_link_status(adapter);
73890 -}
73891 -
73892 -static void atl1c_link_chg_event(struct atl1c_adapter *adapter)
73893 -{
73894 - struct net_device *netdev = adapter->netdev;
73895 - struct pci_dev *pdev = adapter->pdev;
73896 - u16 phy_data;
73897 - u16 link_up;
73898 -
73899 - spin_lock(&adapter->mdio_lock);
73900 - atl1c_read_phy_reg(&adapter->hw, MII_BMSR, &phy_data);
73901 - atl1c_read_phy_reg(&adapter->hw, MII_BMSR, &phy_data);
73902 - spin_unlock(&adapter->mdio_lock);
73903 - link_up = phy_data & BMSR_LSTATUS;
73904 - /* notify upper layer link down ASAP */
73905 - if (!link_up) {
73906 - if (netif_carrier_ok(netdev)) {
73907 - /* old link state: Up */
73908 - netif_carrier_off(netdev);
73909 - if (netif_msg_link(adapter))
73910 - dev_info(&pdev->dev,
73911 - "%s: %s NIC Link is Down\n",
73912 - atl1c_driver_name, netdev->name);
73913 - adapter->link_speed = SPEED_0;
73914 - }
73915 - }
73916 - schedule_work(&adapter->link_chg_task);
73917 -}
73918 -
73919 -static void atl1c_del_timer(struct atl1c_adapter *adapter)
73920 -{
73921 - del_timer_sync(&adapter->phy_config_timer);
73922 -}
73923 -
73924 -static void atl1c_cancel_work(struct atl1c_adapter *adapter)
73925 -{
73926 - cancel_work_sync(&adapter->reset_task);
73927 - cancel_work_sync(&adapter->link_chg_task);
73928 -}
73929 -
73930 -/*
73931 - * atl1c_tx_timeout - Respond to a Tx Hang
73932 - * @netdev: network interface device structure
73933 - */
73934 -static void atl1c_tx_timeout(struct net_device *netdev)
73935 -{
73936 - struct atl1c_adapter *adapter = netdev_priv(netdev);
73937 -
73938 - /* Do the reset outside of interrupt context */
73939 - schedule_work(&adapter->reset_task);
73940 -}
73941 -
73942 -/*
73943 - * atl1c_set_multi - Multicast and Promiscuous mode set
73944 - * @netdev: network interface device structure
73945 - *
73946 - * The set_multi entry point is called whenever the multicast address
73947 - * list or the network interface flags are updated. This routine is
73948 - * responsible for configuring the hardware for proper multicast,
73949 - * promiscuous mode, and all-multi behavior.
73950 - */
73951 -static void atl1c_set_multi(struct net_device *netdev)
73952 -{
73953 - struct atl1c_adapter *adapter = netdev_priv(netdev);
73954 - struct atl1c_hw *hw = &adapter->hw;
73955 - struct dev_mc_list *mc_ptr;
73956 - u32 mac_ctrl_data;
73957 - u32 hash_value;
73958 -
73959 - /* Check for Promiscuous and All Multicast modes */
73960 - AT_READ_REG(hw, REG_MAC_CTRL, &mac_ctrl_data);
73961 -
73962 - if (netdev->flags & IFF_PROMISC) {
73963 - mac_ctrl_data |= MAC_CTRL_PROMIS_EN;
73964 - } else if (netdev->flags & IFF_ALLMULTI) {
73965 - mac_ctrl_data |= MAC_CTRL_MC_ALL_EN;
73966 - mac_ctrl_data &= ~MAC_CTRL_PROMIS_EN;
73967 - } else {
73968 - mac_ctrl_data &= ~(MAC_CTRL_PROMIS_EN | MAC_CTRL_MC_ALL_EN);
73969 - }
73970 -
73971 - AT_WRITE_REG(hw, REG_MAC_CTRL, mac_ctrl_data);
73972 -
73973 - /* clear the old settings from the multicast hash table */
73974 - AT_WRITE_REG(hw, REG_RX_HASH_TABLE, 0);
73975 - AT_WRITE_REG_ARRAY(hw, REG_RX_HASH_TABLE, 1, 0);
73976 -
73977 - /* comoute mc addresses' hash value ,and put it into hash table */
73978 - for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
73979 - hash_value = atl1c_hash_mc_addr(hw, mc_ptr->dmi_addr);
73980 - atl1c_hash_set(hw, hash_value);
73981 - }
73982 -}
73983 -
73984 -static void atl1c_vlan_rx_register(struct net_device *netdev,
73985 - struct vlan_group *grp)
73986 -{
73987 - struct atl1c_adapter *adapter = netdev_priv(netdev);
73988 - struct pci_dev *pdev = adapter->pdev;
73989 - u32 mac_ctrl_data = 0;
73990 -
73991 - if (netif_msg_pktdata(adapter))
73992 - dev_dbg(&pdev->dev, "atl1c_vlan_rx_register\n");
73993 -
73994 - atl1c_irq_disable(adapter);
73995 -
73996 - adapter->vlgrp = grp;
73997 - AT_READ_REG(&adapter->hw, REG_MAC_CTRL, &mac_ctrl_data);
73998 -
73999 - if (grp) {
74000 - /* enable VLAN tag insert/strip */
74001 - mac_ctrl_data |= MAC_CTRL_RMV_VLAN;
74002 - } else {
74003 - /* disable VLAN tag insert/strip */
74004 - mac_ctrl_data &= ~MAC_CTRL_RMV_VLAN;
74005 - }
74006 -
74007 - AT_WRITE_REG(&adapter->hw, REG_MAC_CTRL, mac_ctrl_data);
74008 - atl1c_irq_enable(adapter);
74009 -}
74010 -
74011 -static void atl1c_restore_vlan(struct atl1c_adapter *adapter)
74012 -{
74013 - struct pci_dev *pdev = adapter->pdev;
74014 -
74015 - if (netif_msg_pktdata(adapter))
74016 - dev_dbg(&pdev->dev, "atl1c_restore_vlan !");
74017 - atl1c_vlan_rx_register(adapter->netdev, adapter->vlgrp);
74018 -}
74019 -/*
74020 - * atl1c_set_mac - Change the Ethernet Address of the NIC
74021 - * @netdev: network interface device structure
74022 - * @p: pointer to an address structure
74023 - *
74024 - * Returns 0 on success, negative on failure
74025 - */
74026 -static int atl1c_set_mac_addr(struct net_device *netdev, void *p)
74027 -{
74028 - struct atl1c_adapter *adapter = netdev_priv(netdev);
74029 - struct sockaddr *addr = p;
74030 -
74031 - if (!is_valid_ether_addr(addr->sa_data))
74032 - return -EADDRNOTAVAIL;
74033 -
74034 - if (netif_running(netdev))
74035 - return -EBUSY;
74036 -
74037 - memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
74038 - memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len);
74039 -
74040 - atl1c_hw_set_mac_addr(&adapter->hw);
74041 -
74042 - return 0;
74043 -}
74044 -
74045 -static void atl1c_set_rxbufsize(struct atl1c_adapter *adapter,
74046 - struct net_device *dev)
74047 -{
74048 - int mtu = dev->mtu;
74049 -
74050 - adapter->rx_buffer_len = mtu > AT_RX_BUF_SIZE ?
74051 - roundup(mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN, 8) : AT_RX_BUF_SIZE;
74052 -}
74053 -/*
74054 - * atl1c_change_mtu - Change the Maximum Transfer Unit
74055 - * @netdev: network interface device structure
74056 - * @new_mtu: new value for maximum frame size
74057 - *
74058 - * Returns 0 on success, negative on failure
74059 - */
74060 -static int atl1c_change_mtu(struct net_device *netdev, int new_mtu)
74061 -{
74062 - struct atl1c_adapter *adapter = netdev_priv(netdev);
74063 - int old_mtu = netdev->mtu;
74064 - int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;
74065 -
74066 - if ((max_frame < ETH_ZLEN + ETH_FCS_LEN) ||
74067 - (max_frame > MAX_JUMBO_FRAME_SIZE)) {
74068 - if (netif_msg_link(adapter))
74069 - dev_warn(&adapter->pdev->dev, "invalid MTU setting\n");
74070 - return -EINVAL;
74071 - }
74072 - /* set MTU */
74073 - if (old_mtu != new_mtu && netif_running(netdev)) {
74074 - while (test_and_set_bit(__AT_RESETTING, &adapter->flags))
74075 - msleep(1);
74076 - netdev->mtu = new_mtu;
74077 - adapter->hw.max_frame_size = new_mtu;
74078 - atl1c_set_rxbufsize(adapter, netdev);
74079 - atl1c_down(adapter);
74080 - atl1c_up(adapter);
74081 - clear_bit(__AT_RESETTING, &adapter->flags);
74082 - if (adapter->hw.ctrl_flags & ATL1C_FPGA_VERSION) {
74083 - u32 phy_data;
74084 -
74085 - AT_READ_REG(&adapter->hw, 0x1414, &phy_data);
74086 - phy_data |= 0x10000000;
74087 - AT_WRITE_REG(&adapter->hw, 0x1414, phy_data);
74088 - }
74089 -
74090 - }
74091 - return 0;
74092 -}
74093 -
74094 -/*
74095 - * caller should hold mdio_lock
74096 - */
74097 -static int atl1c_mdio_read(struct net_device *netdev, int phy_id, int reg_num)
74098 -{
74099 - struct atl1c_adapter *adapter = netdev_priv(netdev);
74100 - u16 result;
74101 -
74102 - atl1c_read_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, &result);
74103 - return result;
74104 -}
74105 -
74106 -static void atl1c_mdio_write(struct net_device *netdev, int phy_id,
74107 - int reg_num, int val)
74108 -{
74109 - struct atl1c_adapter *adapter = netdev_priv(netdev);
74110 -
74111 - atl1c_write_phy_reg(&adapter->hw, reg_num & MDIO_REG_ADDR_MASK, val);
74112 -}
74113 -
74114 -/*
74115 - * atl1c_mii_ioctl -
74116 - * @netdev:
74117 - * @ifreq:
74118 - * @cmd:
74119 - */
74120 -static int atl1c_mii_ioctl(struct net_device *netdev,
74121 - struct ifreq *ifr, int cmd)
74122 -{
74123 - struct atl1c_adapter *adapter = netdev_priv(netdev);
74124 - struct pci_dev *pdev = adapter->pdev;
74125 - struct mii_ioctl_data *data = if_mii(ifr);
74126 - unsigned long flags;
74127 - int retval = 0;
74128 -
74129 - if (!netif_running(netdev))
74130 - return -EINVAL;
74131 -
74132 - spin_lock_irqsave(&adapter->mdio_lock, flags);
74133 - switch (cmd) {
74134 - case SIOCGMIIPHY:
74135 - data->phy_id = 0;
74136 - break;
74137 -
74138 - case SIOCGMIIREG:
74139 - if (!capable(CAP_NET_ADMIN)) {
74140 - retval = -EPERM;
74141 - goto out;
74142 - }
74143 - if (atl1c_read_phy_reg(&adapter->hw, data->reg_num & 0x1F,
74144 - &data->val_out)) {
74145 - retval = -EIO;
74146 - goto out;
74147 - }
74148 - break;
74149 -
74150 - case SIOCSMIIREG:
74151 - if (!capable(CAP_NET_ADMIN)) {
74152 - retval = -EPERM;
74153 - goto out;
74154 - }
74155 - if (data->reg_num & ~(0x1F)) {
74156 - retval = -EFAULT;
74157 - goto out;
74158 - }
74159 -
74160 - dev_dbg(&pdev->dev, "<atl1c_mii_ioctl> write %x %x",
74161 - data->reg_num, data->val_in);
74162 - if (atl1c_write_phy_reg(&adapter->hw,
74163 - data->reg_num, data->val_in)) {
74164 - retval = -EIO;
74165 - goto out;
74166 - }
74167 - break;
74168 -
74169 - default:
74170 - retval = -EOPNOTSUPP;
74171 - break;
74172 - }
74173 -out:
74174 - spin_unlock_irqrestore(&adapter->mdio_lock, flags);
74175 - return retval;
74176 -}
74177 -
74178 -/*
74179 - * atl1c_ioctl -
74180 - * @netdev:
74181 - * @ifreq:
74182 - * @cmd:
74183 - */
74184 -static int atl1c_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
74185 -{
74186 - switch (cmd) {
74187 - case SIOCGMIIPHY:
74188 - case SIOCGMIIREG:
74189 - case SIOCSMIIREG:
74190 - return atl1c_mii_ioctl(netdev, ifr, cmd);
74191 - default:
74192 - return -EOPNOTSUPP;
74193 - }
74194 -}
74195 -
74196 -/*
74197 - * atl1c_alloc_queues - Allocate memory for all rings
74198 - * @adapter: board private structure to initialize
74199 - *
74200 - */
74201 -static int __devinit atl1c_alloc_queues(struct atl1c_adapter *adapter)
74202 -{
74203 - return 0;
74204 -}
74205 -
74206 -static void atl1c_set_mac_type(struct atl1c_hw *hw)
74207 -{
74208 - switch (hw->device_id) {
74209 - case PCI_DEVICE_ID_ATTANSIC_L2C:
74210 - hw->nic_type = athr_l2c;
74211 - break;
74212 -
74213 - case PCI_DEVICE_ID_ATTANSIC_L1C:
74214 - hw->nic_type = athr_l1c;
74215 - break;
74216 -
74217 - default:
74218 - break;
74219 - }
74220 -}
74221 -
74222 -static int atl1c_setup_mac_funcs(struct atl1c_hw *hw)
74223 -{
74224 - u32 phy_status_data;
74225 - u32 link_ctrl_data;
74226 -
74227 - atl1c_set_mac_type(hw);
74228 - AT_READ_REG(hw, REG_PHY_STATUS, &phy_status_data);
74229 - AT_READ_REG(hw, REG_LINK_CTRL, &link_ctrl_data);
74230 -
74231 - hw->ctrl_flags = ATL1C_INTR_CLEAR_ON_READ |
74232 - ATL1C_INTR_MODRT_ENABLE |
74233 - ATL1C_RX_IPV6_CHKSUM |
74234 - ATL1C_TXQ_MODE_ENHANCE;
74235 - if (link_ctrl_data & LINK_CTRL_L0S_EN)
74236 - hw->ctrl_flags |= ATL1C_ASPM_L0S_SUPPORT;
74237 - if (link_ctrl_data & LINK_CTRL_L1_EN)
74238 - hw->ctrl_flags |= ATL1C_ASPM_L1_SUPPORT;
74239 -
74240 - if (hw->nic_type == athr_l1c) {
74241 - hw->ctrl_flags |= ATL1C_ASPM_CTRL_MON;
74242 - hw->ctrl_flags |= ATL1C_LINK_CAP_1000M;
74243 - }
74244 - return 0;
74245 -}
74246 -/*
74247 - * atl1c_sw_init - Initialize general software structures (struct atl1c_adapter)
74248 - * @adapter: board private structure to initialize
74249 - *
74250 - * atl1c_sw_init initializes the Adapter private data structure.
74251 - * Fields are initialized based on PCI device information and
74252 - * OS network device settings (MTU size).
74253 - */
74254 -static int __devinit atl1c_sw_init(struct atl1c_adapter *adapter)
74255 -{
74256 - struct atl1c_hw *hw = &adapter->hw;
74257 - struct pci_dev *pdev = adapter->pdev;
74258 -
74259 - adapter->wol = 0;
74260 - adapter->link_speed = SPEED_0;
74261 - adapter->link_duplex = FULL_DUPLEX;
74262 - adapter->num_rx_queues = AT_DEF_RECEIVE_QUEUE;
74263 - adapter->tpd_ring[0].count = 1024;
74264 - adapter->rfd_ring[0].count = 512;
74265 -
74266 - hw->vendor_id = pdev->vendor;
74267 - hw->device_id = pdev->device;
74268 - hw->subsystem_vendor_id = pdev->subsystem_vendor;
74269 - hw->subsystem_id = pdev->subsystem_device;
74270 -
74271 - /* before link up, we assume hibernate is true */
74272 - hw->hibernate = true;
74273 - hw->media_type = MEDIA_TYPE_AUTO_SENSOR;
74274 - if (atl1c_setup_mac_funcs(hw) != 0) {
74275 - dev_err(&pdev->dev, "set mac function pointers failed\n");
74276 - return -1;
74277 - }
74278 - hw->intr_mask = IMR_NORMAL_MASK;
74279 - hw->phy_configured = false;
74280 - hw->preamble_len = 7;
74281 - hw->max_frame_size = adapter->netdev->mtu;
74282 - if (adapter->num_rx_queues < 2) {
74283 - hw->rss_type = atl1c_rss_disable;
74284 - hw->rss_mode = atl1c_rss_mode_disable;
74285 - } else {
74286 - hw->rss_type = atl1c_rss_ipv4;
74287 - hw->rss_mode = atl1c_rss_mul_que_mul_int;
74288 - hw->rss_hash_bits = 16;
74289 - }
74290 - hw->autoneg_advertised = ADVERTISED_Autoneg;
74291 - hw->indirect_tab = 0xE4E4E4E4;
74292 - hw->base_cpu = 0;
74293 -
74294 - hw->ict = 50000; /* 100ms */
74295 - hw->smb_timer = 200000; /* 400ms */
74296 - hw->cmb_tpd = 4;
74297 - hw->cmb_tx_timer = 1; /* 2 us */
74298 - hw->rx_imt = 200;
74299 - hw->tx_imt = 1000;
74300 -
74301 - hw->tpd_burst = 5;
74302 - hw->rfd_burst = 8;
74303 - hw->dma_order = atl1c_dma_ord_out;
74304 - hw->dmar_block = atl1c_dma_req_1024;
74305 - hw->dmaw_block = atl1c_dma_req_1024;
74306 - hw->dmar_dly_cnt = 15;
74307 - hw->dmaw_dly_cnt = 4;
74308 -
74309 - if (atl1c_alloc_queues(adapter)) {
74310 - dev_err(&pdev->dev, "Unable to allocate memory for queues\n");
74311 - return -ENOMEM;
74312 - }
74313 - /* TODO */
74314 - atl1c_set_rxbufsize(adapter, adapter->netdev);
74315 - atomic_set(&adapter->irq_sem, 1);
74316 - spin_lock_init(&adapter->mdio_lock);
74317 - spin_lock_init(&adapter->tx_lock);
74318 - set_bit(__AT_DOWN, &adapter->flags);
74319 -
74320 - return 0;
74321 -}
74322 -
74323 -/*
74324 - * atl1c_clean_tx_ring - Free Tx-skb
74325 - * @adapter: board private structure
74326 - */
74327 -static void atl1c_clean_tx_ring(struct atl1c_adapter *adapter,
74328 - enum atl1c_trans_queue type)
74329 -{
74330 - struct atl1c_tpd_ring *tpd_ring = &adapter->tpd_ring[type];
74331 - struct atl1c_buffer *buffer_info;
74332 - struct pci_dev *pdev = adapter->pdev;
74333 - u16 index, ring_count;
74334 -
74335 - ring_count = tpd_ring->count;
74336 - for (index = 0; index < ring_count; index++) {
74337 - buffer_info = &tpd_ring->buffer_info[index];
74338 - if (buffer_info->state == ATL1_BUFFER_FREE)
74339 - continue;
74340 - if (buffer_info->dma)
74341 - pci_unmap_single(pdev, buffer_info->dma,
74342 - buffer_info->length,
74343 - PCI_DMA_TODEVICE);
74344 - if (buffer_info->skb)
74345 - dev_kfree_skb(buffer_info->skb);
74346 - buffer_info->dma = 0;
74347 - buffer_info->skb = NULL;
74348 - buffer_info->state = ATL1_BUFFER_FREE;
74349 - }
74350 -
74351 - /* Zero out Tx-buffers */
74352 - memset(tpd_ring->desc, 0, sizeof(struct atl1c_tpd_desc) *
74353 - ring_count);
74354 - atomic_set(&tpd_ring->next_to_clean, 0);
74355 - tpd_ring->next_to_use = 0;
74356 -}
74357 -
74358 -/*
74359 - * atl1c_clean_rx_ring - Free rx-reservation skbs
74360 - * @adapter: board private structure
74361 - */
74362 -static void atl1c_clean_rx_ring(struct atl1c_adapter *adapter)
74363 -{
74364 - struct atl1c_rfd_ring *rfd_ring = adapter->rfd_ring;
74365 - struct atl1c_rrd_ring *rrd_ring = adapter->rrd_ring;
74366 - struct atl1c_buffer *buffer_info;
74367 - struct pci_dev *pdev = adapter->pdev;
74368 - int i, j;
74369 -
74370 - for (i = 0; i < adapter->num_rx_queues; i++) {
74371 - for (j = 0; j < rfd_ring[i].count; j++) {
74372 - buffer_info = &rfd_ring[i].buffer_info[j];
74373 - if (buffer_info->state == ATL1_BUFFER_FREE)
74374 - continue;
74375 - if (buffer_info->dma)
74376 - pci_unmap_single(pdev, buffer_info->dma,
74377 - buffer_info->length,
74378 - PCI_DMA_FROMDEVICE);
74379 - if (buffer_info->skb)
74380 - dev_kfree_skb(buffer_info->skb);
74381 - buffer_info->state = ATL1_BUFFER_FREE;
74382 - buffer_info->skb = NULL;
74383 - }
74384 - /* zero out the descriptor ring */
74385 - memset(rfd_ring[i].desc, 0, rfd_ring[i].size);
74386 - rfd_ring[i].next_to_clean = 0;
74387 - rfd_ring[i].next_to_use = 0;
74388 - rrd_ring[i].next_to_use = 0;
74389 - rrd_ring[i].next_to_clean = 0;
74390 - }
74391 -}
74392 -
74393 -/*
74394 - * Read / Write Ptr Initialize:
74395 - */
74396 -static void atl1c_init_ring_ptrs(struct atl1c_adapter *adapter)
74397 -{
74398 - struct atl1c_tpd_ring *tpd_ring = adapter->tpd_ring;
74399 - struct atl1c_rfd_ring *rfd_ring = adapter->rfd_ring;
74400 - struct atl1c_rrd_ring *rrd_ring = adapter->rrd_ring;
74401 - struct atl1c_buffer *buffer_info;
74402 - int i, j;
74403 -
74404 - for (i = 0; i < AT_MAX_TRANSMIT_QUEUE; i++) {
74405 - tpd_ring[i].next_to_use = 0;
74406 - atomic_set(&tpd_ring[i].next_to_clean, 0);
74407 - buffer_info = tpd_ring[i].buffer_info;
74408 - for (j = 0; j < tpd_ring->count; j++)
74409 - buffer_info[i].state = ATL1_BUFFER_FREE;
74410 - }
74411 - for (i = 0; i < adapter->num_rx_queues; i++) {
74412 - rfd_ring[i].next_to_use = 0;
74413 - rfd_ring[i].next_to_clean = 0;
74414 - rrd_ring[i].next_to_use = 0;
74415 - rrd_ring[i].next_to_clean = 0;
74416 - for (j = 0; j < rfd_ring[i].count; j++) {
74417 - buffer_info = &rfd_ring[i].buffer_info[j];
74418 - buffer_info->state = ATL1_BUFFER_FREE;
74419 - }
74420 - }
74421 -}
74422 -
74423 -/*
74424 - * atl1c_free_ring_resources - Free Tx / RX descriptor Resources
74425 - * @adapter: board private structure
74426 - *
74427 - * Free all transmit software resources
74428 - */
74429 -static void atl1c_free_ring_resources(struct atl1c_adapter *adapter)
74430 -{
74431 - struct pci_dev *pdev = adapter->pdev;
74432 -
74433 - pci_free_consistent(pdev, adapter->ring_header.size,
74434 - adapter->ring_header.desc,
74435 - adapter->ring_header.dma);
74436 - adapter->ring_header.desc = NULL;
74437 -
74438 - /* Note: just free tdp_ring.buffer_info,
74439 - * it contain rfd_ring.buffer_info, do not double free */
74440 - if (adapter->tpd_ring[0].buffer_info) {
74441 - kfree(adapter->tpd_ring[0].buffer_info);
74442 - adapter->tpd_ring[0].buffer_info = NULL;
74443 - }
74444 -}
74445 -
74446 -/*
74447 - * atl1c_setup_mem_resources - allocate Tx / RX descriptor resources
74448 - * @adapter: board private structure
74449 - *
74450 - * Return 0 on success, negative on failure
74451 - */
74452 -static int atl1c_setup_ring_resources(struct atl1c_adapter *adapter)
74453 -{
74454 - struct pci_dev *pdev = adapter->pdev;
74455 - struct atl1c_tpd_ring *tpd_ring = adapter->tpd_ring;
74456 - struct atl1c_rfd_ring *rfd_ring = adapter->rfd_ring;
74457 - struct atl1c_rrd_ring *rrd_ring = adapter->rrd_ring;
74458 - struct atl1c_ring_header *ring_header = &adapter->ring_header;
74459 - int num_rx_queues = adapter->num_rx_queues;
74460 - int size;
74461 - int i;
74462 - int count = 0;
74463 - int rx_desc_count = 0;
74464 - u32 offset = 0;
74465 -
74466 - rrd_ring[0].count = rfd_ring[0].count;
74467 - for (i = 1; i < AT_MAX_TRANSMIT_QUEUE; i++)
74468 - tpd_ring[i].count = tpd_ring[0].count;
74469 -
74470 - for (i = 1; i < adapter->num_rx_queues; i++)
74471 - rfd_ring[i].count = rrd_ring[i].count = rfd_ring[0].count;
74472 -
74473 - /* 2 tpd queue, one high priority queue,
74474 - * another normal priority queue */
74475 - size = sizeof(struct atl1c_buffer) * (tpd_ring->count * 2 +
74476 - rfd_ring->count * num_rx_queues);
74477 - tpd_ring->buffer_info = kzalloc(size, GFP_KERNEL);
74478 - if (unlikely(!tpd_ring->buffer_info)) {
74479 - dev_err(&pdev->dev, "kzalloc failed, size = %d\n",
74480 - size);
74481 - goto err_nomem;
74482 - }
74483 - for (i = 0; i < AT_MAX_TRANSMIT_QUEUE; i++) {
74484 - tpd_ring[i].buffer_info =
74485 - (struct atl1c_buffer *) (tpd_ring->buffer_info + count);
74486 - count += tpd_ring[i].count;
74487 - }
74488 -
74489 - for (i = 0; i < num_rx_queues; i++) {
74490 - rfd_ring[i].buffer_info =
74491 - (struct atl1c_buffer *) (tpd_ring->buffer_info + count);
74492 - count += rfd_ring[i].count;
74493 - rx_desc_count += rfd_ring[i].count;
74494 - }
74495 - /*
74496 - * real ring DMA buffer
74497 - * each ring/block may need up to 8 bytes for alignment, hence the
74498 - * additional bytes tacked onto the end.
74499 - */
74500 - ring_header->size = size =
74501 - sizeof(struct atl1c_tpd_desc) * tpd_ring->count * 2 +
74502 - sizeof(struct atl1c_rx_free_desc) * rx_desc_count +
74503 - sizeof(struct atl1c_recv_ret_status) * rx_desc_count +
74504 - sizeof(struct atl1c_hw_stats) +
74505 - 8 * 4 + 8 * 2 * num_rx_queues;
74506 -
74507 - ring_header->desc = pci_alloc_consistent(pdev, ring_header->size,
74508 - &ring_header->dma);
74509 - if (unlikely(!ring_header->desc)) {
74510 - dev_err(&pdev->dev, "pci_alloc_consistend failed\n");
74511 - goto err_nomem;
74512 - }
74513 - memset(ring_header->desc, 0, ring_header->size);
74514 - /* init TPD ring */
74515 -
74516 - tpd_ring[0].dma = roundup(ring_header->dma, 8);
74517 - offset = tpd_ring[0].dma - ring_header->dma;
74518 - for (i = 0; i < AT_MAX_TRANSMIT_QUEUE; i++) {
74519 - tpd_ring[i].dma = ring_header->dma + offset;
74520 - tpd_ring[i].desc = (u8 *) ring_header->desc + offset;
74521 - tpd_ring[i].size =
74522 - sizeof(struct atl1c_tpd_desc) * tpd_ring[i].count;
74523 - offset += roundup(tpd_ring[i].size, 8);
74524 - }
74525 - /* init RFD ring */
74526 - for (i = 0; i < num_rx_queues; i++) {
74527 - rfd_ring[i].dma = ring_header->dma + offset;
74528 - rfd_ring[i].desc = (u8 *) ring_header->desc + offset;
74529 - rfd_ring[i].size = sizeof(struct atl1c_rx_free_desc) *
74530 - rfd_ring[i].count;
74531 - offset += roundup(rfd_ring[i].size, 8);
74532 - }
74533 -
74534 - /* init RRD ring */
74535 - for (i = 0; i < num_rx_queues; i++) {
74536 - rrd_ring[i].dma = ring_header->dma + offset;
74537 - rrd_ring[i].desc = (u8 *) ring_header->desc + offset;
74538 - rrd_ring[i].size = sizeof(struct atl1c_recv_ret_status) *
74539 - rrd_ring[i].count;
74540 - offset += roundup(rrd_ring[i].size, 8);
74541 - }
74542 -
74543 - adapter->smb.dma = ring_header->dma + offset;
74544 - adapter->smb.smb = (u8 *)ring_header->desc + offset;
74545 - return 0;
74546 -
74547 -err_nomem:
74548 - kfree(tpd_ring->buffer_info);
74549 - return -ENOMEM;
74550 -}
74551 -
74552 -static void atl1c_configure_des_ring(struct atl1c_adapter *adapter)
74553 -{
74554 - struct atl1c_hw *hw = &adapter->hw;
74555 - struct atl1c_rfd_ring *rfd_ring = (struct atl1c_rfd_ring *)
74556 - adapter->rfd_ring;
74557 - struct atl1c_rrd_ring *rrd_ring = (struct atl1c_rrd_ring *)
74558 - adapter->rrd_ring;
74559 - struct atl1c_tpd_ring *tpd_ring = (struct atl1c_tpd_ring *)
74560 - adapter->tpd_ring;
74561 - struct atl1c_cmb *cmb = (struct atl1c_cmb *) &adapter->cmb;
74562 - struct atl1c_smb *smb = (struct atl1c_smb *) &adapter->smb;
74563 - int i;
74564 -
74565 - /* TPD */
74566 - AT_WRITE_REG(hw, REG_TX_BASE_ADDR_HI,
74567 - (u32)((tpd_ring[atl1c_trans_normal].dma &
74568 - AT_DMA_HI_ADDR_MASK) >> 32));
74569 - /* just enable normal priority TX queue */
74570 - AT_WRITE_REG(hw, REG_NTPD_HEAD_ADDR_LO,
74571 - (u32)(tpd_ring[atl1c_trans_normal].dma &
74572 - AT_DMA_LO_ADDR_MASK));
74573 - AT_WRITE_REG(hw, REG_HTPD_HEAD_ADDR_LO,
74574 - (u32)(tpd_ring[atl1c_trans_high].dma &
74575 - AT_DMA_LO_ADDR_MASK));
74576 - AT_WRITE_REG(hw, REG_TPD_RING_SIZE,
74577 - (u32)(tpd_ring[0].count & TPD_RING_SIZE_MASK));
74578 -
74579 -
74580 - /* RFD */
74581 - AT_WRITE_REG(hw, REG_RX_BASE_ADDR_HI,
74582 - (u32)((rfd_ring[0].dma & AT_DMA_HI_ADDR_MASK) >> 32));
74583 - for (i = 0; i < adapter->num_rx_queues; i++)
74584 - AT_WRITE_REG(hw, atl1c_rfd_addr_lo_regs[i],
74585 - (u32)(rfd_ring[i].dma & AT_DMA_LO_ADDR_MASK));
74586 -
74587 - AT_WRITE_REG(hw, REG_RFD_RING_SIZE,
74588 - rfd_ring[0].count & RFD_RING_SIZE_MASK);
74589 - AT_WRITE_REG(hw, REG_RX_BUF_SIZE,
74590 - adapter->rx_buffer_len & RX_BUF_SIZE_MASK);
74591 -
74592 - /* RRD */
74593 - for (i = 0; i < adapter->num_rx_queues; i++)
74594 - AT_WRITE_REG(hw, atl1c_rrd_addr_lo_regs[i],
74595 - (u32)(rrd_ring[i].dma & AT_DMA_LO_ADDR_MASK));
74596 - AT_WRITE_REG(hw, REG_RRD_RING_SIZE,
74597 - (rrd_ring[0].count & RRD_RING_SIZE_MASK));
74598 -
74599 - /* CMB */
74600 - AT_WRITE_REG(hw, REG_CMB_BASE_ADDR_LO, cmb->dma & AT_DMA_LO_ADDR_MASK);
74601 -
74602 - /* SMB */
74603 - AT_WRITE_REG(hw, REG_SMB_BASE_ADDR_HI,
74604 - (u32)((smb->dma & AT_DMA_HI_ADDR_MASK) >> 32));
74605 - AT_WRITE_REG(hw, REG_SMB_BASE_ADDR_LO,
74606 - (u32)(smb->dma & AT_DMA_LO_ADDR_MASK));
74607 - /* Load all of base address above */
74608 - AT_WRITE_REG(hw, REG_LOAD_PTR, 1);
74609 -}
74610 -
74611 -static void atl1c_configure_tx(struct atl1c_adapter *adapter)
74612 -{
74613 - struct atl1c_hw *hw = &adapter->hw;
74614 - u32 dev_ctrl_data;
74615 - u32 max_pay_load;
74616 - u16 tx_offload_thresh;
74617 - u32 txq_ctrl_data;
74618 - u32 extra_size = 0; /* Jumbo frame threshold in QWORD unit */
74619 -
74620 - extra_size = ETH_HLEN + VLAN_HLEN + ETH_FCS_LEN;
74621 - tx_offload_thresh = MAX_TX_OFFLOAD_THRESH;
74622 - AT_WRITE_REG(hw, REG_TX_TSO_OFFLOAD_THRESH,
74623 - (tx_offload_thresh >> 3) & TX_TSO_OFFLOAD_THRESH_MASK);
74624 - AT_READ_REG(hw, REG_DEVICE_CTRL, &dev_ctrl_data);
74625 - max_pay_load = (dev_ctrl_data >> DEVICE_CTRL_MAX_PAYLOAD_SHIFT) &
74626 - DEVICE_CTRL_MAX_PAYLOAD_MASK;
74627 - hw->dmaw_block = min(max_pay_load, hw->dmaw_block);
74628 - max_pay_load = (dev_ctrl_data >> DEVICE_CTRL_MAX_RREQ_SZ_SHIFT) &
74629 - DEVICE_CTRL_MAX_RREQ_SZ_MASK;
74630 - hw->dmar_block = min(max_pay_load, hw->dmar_block);
74631 -
74632 - txq_ctrl_data = (hw->tpd_burst & TXQ_NUM_TPD_BURST_MASK) <<
74633 - TXQ_NUM_TPD_BURST_SHIFT;
74634 - if (hw->ctrl_flags & ATL1C_TXQ_MODE_ENHANCE)
74635 - txq_ctrl_data |= TXQ_CTRL_ENH_MODE;
74636 - txq_ctrl_data |= (atl1c_pay_load_size[hw->dmar_block] &
74637 - TXQ_TXF_BURST_NUM_MASK) << TXQ_TXF_BURST_NUM_SHIFT;
74638 -
74639 - AT_WRITE_REG(hw, REG_TXQ_CTRL, txq_ctrl_data);
74640 -}
74641 -
74642 -static void atl1c_configure_rx(struct atl1c_adapter *adapter)
74643 -{
74644 - struct atl1c_hw *hw = &adapter->hw;
74645 - u32 rxq_ctrl_data;
74646 -
74647 - rxq_ctrl_data = (hw->rfd_burst & RXQ_RFD_BURST_NUM_MASK) <<
74648 - RXQ_RFD_BURST_NUM_SHIFT;
74649 -
74650 - if (hw->ctrl_flags & ATL1C_RX_IPV6_CHKSUM)
74651 - rxq_ctrl_data |= IPV6_CHKSUM_CTRL_EN;
74652 - if (hw->rss_type == atl1c_rss_ipv4)
74653 - rxq_ctrl_data |= RSS_HASH_IPV4;
74654 - if (hw->rss_type == atl1c_rss_ipv4_tcp)
74655 - rxq_ctrl_data |= RSS_HASH_IPV4_TCP;
74656 - if (hw->rss_type == atl1c_rss_ipv6)
74657 - rxq_ctrl_data |= RSS_HASH_IPV6;
74658 - if (hw->rss_type == atl1c_rss_ipv6_tcp)
74659 - rxq_ctrl_data |= RSS_HASH_IPV6_TCP;
74660 - if (hw->rss_type != atl1c_rss_disable)
74661 - rxq_ctrl_data |= RRS_HASH_CTRL_EN;
74662 -
74663 - rxq_ctrl_data |= (hw->rss_mode & RSS_MODE_MASK) <<
74664 - RSS_MODE_SHIFT;
74665 - rxq_ctrl_data |= (hw->rss_hash_bits & RSS_HASH_BITS_MASK) <<
74666 - RSS_HASH_BITS_SHIFT;
74667 - if (hw->ctrl_flags & ATL1C_ASPM_CTRL_MON)
74668 - rxq_ctrl_data |= (ASPM_THRUPUT_LIMIT_100M &
74669 - ASPM_THRUPUT_LIMIT_MASK) << ASPM_THRUPUT_LIMIT_SHIFT;
74670 -
74671 - AT_WRITE_REG(hw, REG_RXQ_CTRL, rxq_ctrl_data);
74672 -}
74673 -
74674 -static void atl1c_configure_rss(struct atl1c_adapter *adapter)
74675 -{
74676 - struct atl1c_hw *hw = &adapter->hw;
74677 -
74678 - AT_WRITE_REG(hw, REG_IDT_TABLE, hw->indirect_tab);
74679 - AT_WRITE_REG(hw, REG_BASE_CPU_NUMBER, hw->base_cpu);
74680 -}
74681 -
74682 -static void atl1c_configure_dma(struct atl1c_adapter *adapter)
74683 -{
74684 - struct atl1c_hw *hw = &adapter->hw;
74685 - u32 dma_ctrl_data;
74686 -
74687 - dma_ctrl_data = DMA_CTRL_DMAR_REQ_PRI;
74688 - if (hw->ctrl_flags & ATL1C_CMB_ENABLE)
74689 - dma_ctrl_data |= DMA_CTRL_CMB_EN;
74690 - if (hw->ctrl_flags & ATL1C_SMB_ENABLE)
74691 - dma_ctrl_data |= DMA_CTRL_SMB_EN;
74692 - else
74693 - dma_ctrl_data |= MAC_CTRL_SMB_DIS;
74694 -
74695 - switch (hw->dma_order) {
74696 - case atl1c_dma_ord_in:
74697 - dma_ctrl_data |= DMA_CTRL_DMAR_IN_ORDER;
74698 - break;
74699 - case atl1c_dma_ord_enh:
74700 - dma_ctrl_data |= DMA_CTRL_DMAR_ENH_ORDER;
74701 - break;
74702 - case atl1c_dma_ord_out:
74703 - dma_ctrl_data |= DMA_CTRL_DMAR_OUT_ORDER;
74704 - break;
74705 - default:
74706 - break;
74707 - }
74708 -
74709 - dma_ctrl_data |= (((u32)hw->dmar_block) & DMA_CTRL_DMAR_BURST_LEN_MASK)
74710 - << DMA_CTRL_DMAR_BURST_LEN_SHIFT;
74711 - dma_ctrl_data |= (((u32)hw->dmaw_block) & DMA_CTRL_DMAW_BURST_LEN_MASK)
74712 - << DMA_CTRL_DMAW_BURST_LEN_SHIFT;
74713 - dma_ctrl_data |= (((u32)hw->dmar_dly_cnt) & DMA_CTRL_DMAR_DLY_CNT_MASK)
74714 - << DMA_CTRL_DMAR_DLY_CNT_SHIFT;
74715 - dma_ctrl_data |= (((u32)hw->dmaw_dly_cnt) & DMA_CTRL_DMAW_DLY_CNT_MASK)
74716 - << DMA_CTRL_DMAW_DLY_CNT_SHIFT;
74717 -
74718 - AT_WRITE_REG(hw, REG_DMA_CTRL, dma_ctrl_data);
74719 -}
74720 -
74721 -/*
74722 - * Stop the mac, transmit and receive units
74723 - * hw - Struct containing variables accessed by shared code
74724 - * return : 0 or idle status (if error)
74725 - */
74726 -static int atl1c_stop_mac(struct atl1c_hw *hw)
74727 -{
74728 - u32 data;
74729 - int timeout;
74730 -
74731 - AT_READ_REG(hw, REG_RXQ_CTRL, &data);
74732 - data &= ~(RXQ1_CTRL_EN | RXQ2_CTRL_EN |
74733 - RXQ3_CTRL_EN | RXQ_CTRL_EN);
74734 - AT_WRITE_REG(hw, REG_RXQ_CTRL, data);
74735 -
74736 - AT_READ_REG(hw, REG_TXQ_CTRL, &data);
74737 - data &= ~TXQ_CTRL_EN;
74738 - AT_WRITE_REG(hw, REG_TWSI_CTRL, data);
74739 -
74740 - for (timeout = 0; timeout < AT_HW_MAX_IDLE_DELAY; timeout++) {
74741 - AT_READ_REG(hw, REG_IDLE_STATUS, &data);
74742 - if ((data & (IDLE_STATUS_RXQ_NO_IDLE |
74743 - IDLE_STATUS_TXQ_NO_IDLE)) == 0)
74744 - break;
74745 - msleep(1);
74746 - }
74747 -
74748 - AT_READ_REG(hw, REG_MAC_CTRL, &data);
74749 - data &= ~(MAC_CTRL_TX_EN | MAC_CTRL_RX_EN);
74750 - AT_WRITE_REG(hw, REG_MAC_CTRL, data);
74751 -
74752 - for (timeout = 0; timeout < AT_HW_MAX_IDLE_DELAY; timeout++) {
74753 - AT_READ_REG(hw, REG_IDLE_STATUS, &data);
74754 - if ((data & IDLE_STATUS_MASK) == 0)
74755 - return 0;
74756 - msleep(1);
74757 - }
74758 - return data;
74759 -}
74760 -
74761 -static void atl1c_enable_rx_ctrl(struct atl1c_hw *hw)
74762 -{
74763 - u32 data;
74764 -
74765 - AT_READ_REG(hw, REG_RXQ_CTRL, &data);
74766 - switch (hw->adapter->num_rx_queues) {
74767 - case 4:
74768 - data |= (RXQ3_CTRL_EN | RXQ2_CTRL_EN | RXQ1_CTRL_EN);
74769 - break;
74770 - case 3:
74771 - data |= (RXQ2_CTRL_EN | RXQ1_CTRL_EN);
74772 - break;
74773 - case 2:
74774 - data |= RXQ1_CTRL_EN;
74775 - break;
74776 - default:
74777 - break;
74778 - }
74779 - data |= RXQ_CTRL_EN;
74780 - AT_WRITE_REG(hw, REG_RXQ_CTRL, data);
74781 -}
74782 -
74783 -static void atl1c_enable_tx_ctrl(struct atl1c_hw *hw)
74784 -{
74785 - u32 data;
74786 -
74787 - AT_READ_REG(hw, REG_TXQ_CTRL, &data);
74788 - data |= TXQ_CTRL_EN;
74789 - AT_WRITE_REG(hw, REG_TXQ_CTRL, data);
74790 -}
74791 -
74792 -/*
74793 - * Reset the transmit and receive units; mask and clear all interrupts.
74794 - * hw - Struct containing variables accessed by shared code
74795 - * return : 0 or idle status (if error)
74796 - */
74797 -static int atl1c_reset_mac(struct atl1c_hw *hw)
74798 -{
74799 - struct atl1c_adapter *adapter = (struct atl1c_adapter *)hw->adapter;
74800 - struct pci_dev *pdev = adapter->pdev;
74801 - u32 idle_status_data = 0;
74802 - int timeout = 0;
74803 - int ret;
74804 -
74805 - AT_WRITE_REG(hw, REG_IMR, 0);
74806 - AT_WRITE_REG(hw, REG_ISR, ISR_DIS_INT);
74807 -
74808 - ret = atl1c_stop_mac(hw);
74809 - if (ret)
74810 - return ret;
74811 - /*
74812 - * Issue Soft Reset to the MAC. This will reset the chip's
74813 - * transmit, receive, DMA. It will not effect
74814 - * the current PCI configuration. The global reset bit is self-
74815 - * clearing, and should clear within a microsecond.
74816 - */
74817 - AT_WRITE_REGW(hw, REG_MASTER_CTRL, MASTER_CTRL_SOFT_RST);
74818 - AT_WRITE_FLUSH(hw);
74819 - msleep(10);
74820 - /* Wait at least 10ms for All module to be Idle */
74821 - for (timeout = 0; timeout < AT_HW_MAX_IDLE_DELAY; timeout++) {
74822 - AT_READ_REG(hw, REG_IDLE_STATUS, &idle_status_data);
74823 - if ((idle_status_data & IDLE_STATUS_MASK) == 0)
74824 - break;
74825 - msleep(1);
74826 - }
74827 - if (timeout >= AT_HW_MAX_IDLE_DELAY) {
74828 - dev_err(&pdev->dev,
74829 - "MAC state machine cann't be idle since"
74830 - " disabled for 10ms second\n");
74831 - return -1;
74832 - }
74833 - return 0;
74834 -}
74835 -
74836 -static void atl1c_disable_l0s_l1(struct atl1c_hw *hw)
74837 -{
74838 - u32 pm_ctrl_data;
74839 -
74840 - AT_READ_REG(hw, REG_PM_CTRL, &pm_ctrl_data);
74841 - pm_ctrl_data &= ~(PM_CTRL_L1_ENTRY_TIMER_MASK <<
74842 - PM_CTRL_L1_ENTRY_TIMER_SHIFT);
74843 - pm_ctrl_data &= ~PM_CTRL_CLK_SWH_L1;
74844 - pm_ctrl_data &= ~PM_CTRL_ASPM_L0S_EN;
74845 - pm_ctrl_data &= ~PM_CTRL_ASPM_L1_EN;
74846 - pm_ctrl_data &= ~PM_CTRL_MAC_ASPM_CHK;
74847 - pm_ctrl_data &= ~PM_CTRL_SERDES_PD_EX_L1;
74848 -
74849 - pm_ctrl_data |= PM_CTRL_SERDES_BUDS_RX_L1_EN;
74850 - pm_ctrl_data |= PM_CTRL_SERDES_PLL_L1_EN;
74851 - pm_ctrl_data |= PM_CTRL_SERDES_L1_EN;
74852 - AT_WRITE_REG(hw, REG_PM_CTRL, pm_ctrl_data);
74853 -}
74854 -
74855 -/*
74856 - * Set ASPM state.
74857 - * Enable/disable L0s/L1 depend on link state.
74858 - */
74859 -static void atl1c_set_aspm(struct atl1c_hw *hw, bool linkup)
74860 -{
74861 - u32 pm_ctrl_data;
74862 -
74863 - AT_READ_REG(hw, REG_PM_CTRL, &pm_ctrl_data);
74864 -
74865 - pm_ctrl_data &= PM_CTRL_SERDES_PD_EX_L1;
74866 - pm_ctrl_data |= ~PM_CTRL_SERDES_BUDS_RX_L1_EN;
74867 - pm_ctrl_data |= ~PM_CTRL_SERDES_L1_EN;
74868 - pm_ctrl_data &= ~(PM_CTRL_L1_ENTRY_TIMER_MASK <<
74869 - PM_CTRL_L1_ENTRY_TIMER_SHIFT);
74870 -
74871 - pm_ctrl_data |= PM_CTRL_MAC_ASPM_CHK;
74872 -
74873 - if (linkup) {
74874 - pm_ctrl_data |= PM_CTRL_SERDES_PLL_L1_EN;
74875 - pm_ctrl_data &= ~PM_CTRL_CLK_SWH_L1;
74876 -
74877 - if (hw->ctrl_flags & ATL1C_ASPM_L1_SUPPORT) {
74878 - pm_ctrl_data |= AT_ASPM_L1_TIMER <<
74879 - PM_CTRL_L1_ENTRY_TIMER_SHIFT;
74880 - pm_ctrl_data |= PM_CTRL_ASPM_L1_EN;
74881 - } else
74882 - pm_ctrl_data &= ~PM_CTRL_ASPM_L1_EN;
74883 -
74884 - if (hw->ctrl_flags & ATL1C_ASPM_L0S_SUPPORT)
74885 - pm_ctrl_data |= PM_CTRL_ASPM_L0S_EN;
74886 - else
74887 - pm_ctrl_data &= ~PM_CTRL_ASPM_L0S_EN;
74888 -
74889 - } else {
74890 - pm_ctrl_data &= ~PM_CTRL_ASPM_L0S_EN;
74891 - pm_ctrl_data &= ~PM_CTRL_SERDES_PLL_L1_EN;
74892 -
74893 - pm_ctrl_data |= PM_CTRL_CLK_SWH_L1;
74894 -
74895 - if (hw->ctrl_flags & ATL1C_ASPM_L1_SUPPORT)
74896 - pm_ctrl_data |= PM_CTRL_ASPM_L1_EN;
74897 - else
74898 - pm_ctrl_data &= ~PM_CTRL_ASPM_L1_EN;
74899 - }
74900 -
74901 - AT_WRITE_REG(hw, REG_PM_CTRL, pm_ctrl_data);
74902 -}
74903 -
74904 -static void atl1c_setup_mac_ctrl(struct atl1c_adapter *adapter)
74905 -{
74906 - struct atl1c_hw *hw = &adapter->hw;
74907 - struct net_device *netdev = adapter->netdev;
74908 - u32 mac_ctrl_data;
74909 -
74910 - mac_ctrl_data = MAC_CTRL_TX_EN | MAC_CTRL_RX_EN;
74911 - mac_ctrl_data |= (MAC_CTRL_TX_FLOW | MAC_CTRL_RX_FLOW);
74912 -
74913 - if (adapter->link_duplex == FULL_DUPLEX) {
74914 - hw->mac_duplex = true;
74915 - mac_ctrl_data |= MAC_CTRL_DUPLX;
74916 - }
74917 -
74918 - if (adapter->link_speed == SPEED_1000)
74919 - hw->mac_speed = atl1c_mac_speed_1000;
74920 - else
74921 - hw->mac_speed = atl1c_mac_speed_10_100;
74922 -
74923 - mac_ctrl_data |= (hw->mac_speed & MAC_CTRL_SPEED_MASK) <<
74924 - MAC_CTRL_SPEED_SHIFT;
74925 -
74926 - mac_ctrl_data |= (MAC_CTRL_ADD_CRC | MAC_CTRL_PAD);
74927 - mac_ctrl_data |= ((hw->preamble_len & MAC_CTRL_PRMLEN_MASK) <<
74928 - MAC_CTRL_PRMLEN_SHIFT);
74929 -
74930 - if (adapter->vlgrp)
74931 - mac_ctrl_data |= MAC_CTRL_RMV_VLAN;
74932 -
74933 - mac_ctrl_data |= MAC_CTRL_BC_EN;
74934 - if (netdev->flags & IFF_PROMISC)
74935 - mac_ctrl_data |= MAC_CTRL_PROMIS_EN;
74936 - if (netdev->flags & IFF_ALLMULTI)
74937 - mac_ctrl_data |= MAC_CTRL_MC_ALL_EN;
74938 -
74939 - mac_ctrl_data |= MAC_CTRL_SINGLE_PAUSE_EN;
74940 - AT_WRITE_REG(hw, REG_MAC_CTRL, mac_ctrl_data);
74941 -}
74942 -
74943 -/*
74944 - * atl1c_configure - Configure Transmit&Receive Unit after Reset
74945 - * @adapter: board private structure
74946 - *
74947 - * Configure the Tx /Rx unit of the MAC after a reset.
74948 - */
74949 -static int atl1c_configure(struct atl1c_adapter *adapter)
74950 -{
74951 - struct atl1c_hw *hw = &adapter->hw;
74952 - u32 master_ctrl_data = 0;
74953 - u32 intr_modrt_data;
74954 -
74955 - /* clear interrupt status */
74956 - AT_WRITE_REG(hw, REG_ISR, 0xFFFFFFFF);
74957 - /* Clear any WOL status */
74958 - AT_WRITE_REG(hw, REG_WOL_CTRL, 0);
74959 - /* set Interrupt Clear Timer
74960 - * HW will enable self to assert interrupt event to system after
74961 - * waiting x-time for software to notify it accept interrupt.
74962 - */
74963 - AT_WRITE_REG(hw, REG_INT_RETRIG_TIMER,
74964 - hw->ict & INT_RETRIG_TIMER_MASK);
74965 -
74966 - atl1c_configure_des_ring(adapter);
74967 -
74968 - if (hw->ctrl_flags & ATL1C_INTR_MODRT_ENABLE) {
74969 - intr_modrt_data = (hw->tx_imt & IRQ_MODRT_TIMER_MASK) <<
74970 - IRQ_MODRT_TX_TIMER_SHIFT;
74971 - intr_modrt_data |= (hw->rx_imt & IRQ_MODRT_TIMER_MASK) <<
74972 - IRQ_MODRT_RX_TIMER_SHIFT;
74973 - AT_WRITE_REG(hw, REG_IRQ_MODRT_TIMER_INIT, intr_modrt_data);
74974 - master_ctrl_data |=
74975 - MASTER_CTRL_TX_ITIMER_EN | MASTER_CTRL_RX_ITIMER_EN;
74976 - }
74977 -
74978 - if (hw->ctrl_flags & ATL1C_INTR_CLEAR_ON_READ)
74979 - master_ctrl_data |= MASTER_CTRL_INT_RDCLR;
74980 -
74981 - AT_WRITE_REG(hw, REG_MASTER_CTRL, master_ctrl_data);
74982 -
74983 - if (hw->ctrl_flags & ATL1C_CMB_ENABLE) {
74984 - AT_WRITE_REG(hw, REG_CMB_TPD_THRESH,
74985 - hw->cmb_tpd & CMB_TPD_THRESH_MASK);
74986 - AT_WRITE_REG(hw, REG_CMB_TX_TIMER,
74987 - hw->cmb_tx_timer & CMB_TX_TIMER_MASK);
74988 - }
74989 -
74990 - if (hw->ctrl_flags & ATL1C_SMB_ENABLE)
74991 - AT_WRITE_REG(hw, REG_SMB_STAT_TIMER,
74992 - hw->smb_timer & SMB_STAT_TIMER_MASK);
74993 - /* set MTU */
74994 - AT_WRITE_REG(hw, REG_MTU, hw->max_frame_size + ETH_HLEN +
74995 - VLAN_HLEN + ETH_FCS_LEN);
74996 - /* HDS, disable */
74997 - AT_WRITE_REG(hw, REG_HDS_CTRL, 0);
74998 -
74999 - atl1c_configure_tx(adapter);
75000 - atl1c_configure_rx(adapter);
75001 - atl1c_configure_rss(adapter);
75002 - atl1c_configure_dma(adapter);
75003 -
75004 - return 0;
75005 -}
75006 -
75007 -static void atl1c_update_hw_stats(struct atl1c_adapter *adapter)
75008 -{
75009 - u16 hw_reg_addr = 0;
75010 - unsigned long *stats_item = NULL;
75011 - u32 data;
75012 -
75013 - /* update rx status */
75014 - hw_reg_addr = REG_MAC_RX_STATUS_BIN;
75015 - stats_item = &adapter->hw_stats.rx_ok;
75016 - while (hw_reg_addr <= REG_MAC_RX_STATUS_END) {
75017 - AT_READ_REG(&adapter->hw, hw_reg_addr, &data);
75018 - *stats_item += data;
75019 - stats_item++;
75020 - hw_reg_addr += 4;
75021 - }
75022 -/* update tx status */
75023 - hw_reg_addr = REG_MAC_TX_STATUS_BIN;
75024 - stats_item = &adapter->hw_stats.tx_ok;
75025 - while (hw_reg_addr <= REG_MAC_TX_STATUS_END) {
75026 - AT_READ_REG(&adapter->hw, hw_reg_addr, &data);
75027 - *stats_item += data;
75028 - stats_item++;
75029 - hw_reg_addr += 4;
75030 - }
75031 -}
75032 -
75033 -/*
75034 - * atl1c_get_stats - Get System Network Statistics
75035 - * @netdev: network interface device structure
75036 - *
75037 - * Returns the address of the device statistics structure.
75038 - * The statistics are actually updated from the timer callback.
75039 - */
75040 -static struct net_device_stats *atl1c_get_stats(struct net_device *netdev)
75041 -{
75042 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75043 - struct atl1c_hw_stats *hw_stats = &adapter->hw_stats;
75044 - struct net_device_stats *net_stats = &adapter->net_stats;
75045 -
75046 - atl1c_update_hw_stats(adapter);
75047 - net_stats->rx_packets = hw_stats->rx_ok;
75048 - net_stats->tx_packets = hw_stats->tx_ok;
75049 - net_stats->rx_bytes = hw_stats->rx_byte_cnt;
75050 - net_stats->tx_bytes = hw_stats->tx_byte_cnt;
75051 - net_stats->multicast = hw_stats->rx_mcast;
75052 - net_stats->collisions = hw_stats->tx_1_col +
75053 - hw_stats->tx_2_col * 2 +
75054 - hw_stats->tx_late_col + hw_stats->tx_abort_col;
75055 - net_stats->rx_errors = hw_stats->rx_frag + hw_stats->rx_fcs_err +
75056 - hw_stats->rx_len_err + hw_stats->rx_sz_ov +
75057 - hw_stats->rx_rrd_ov + hw_stats->rx_align_err;
75058 - net_stats->rx_fifo_errors = hw_stats->rx_rxf_ov;
75059 - net_stats->rx_length_errors = hw_stats->rx_len_err;
75060 - net_stats->rx_crc_errors = hw_stats->rx_fcs_err;
75061 - net_stats->rx_frame_errors = hw_stats->rx_align_err;
75062 - net_stats->rx_over_errors = hw_stats->rx_rrd_ov + hw_stats->rx_rxf_ov;
75063 -
75064 - net_stats->rx_missed_errors = hw_stats->rx_rrd_ov + hw_stats->rx_rxf_ov;
75065 -
75066 - net_stats->tx_errors = hw_stats->tx_late_col + hw_stats->tx_abort_col +
75067 - hw_stats->tx_underrun + hw_stats->tx_trunc;
75068 - net_stats->tx_fifo_errors = hw_stats->tx_underrun;
75069 - net_stats->tx_aborted_errors = hw_stats->tx_abort_col;
75070 - net_stats->tx_window_errors = hw_stats->tx_late_col;
75071 -
75072 - return &adapter->net_stats;
75073 -}
75074 -
75075 -static inline void atl1c_clear_phy_int(struct atl1c_adapter *adapter)
75076 -{
75077 - u16 phy_data;
75078 -
75079 - spin_lock(&adapter->mdio_lock);
75080 - atl1c_read_phy_reg(&adapter->hw, MII_ISR, &phy_data);
75081 - spin_unlock(&adapter->mdio_lock);
75082 -}
75083 -
75084 -static bool atl1c_clean_tx_irq(struct atl1c_adapter *adapter,
75085 - enum atl1c_trans_queue type)
75086 -{
75087 - struct atl1c_tpd_ring *tpd_ring = (struct atl1c_tpd_ring *)
75088 - &adapter->tpd_ring[type];
75089 - struct atl1c_buffer *buffer_info;
75090 - u16 next_to_clean = atomic_read(&tpd_ring->next_to_clean);
75091 - u16 hw_next_to_clean;
75092 - u16 shift;
75093 - u32 data;
75094 -
75095 - if (type == atl1c_trans_high)
75096 - shift = MB_HTPD_CONS_IDX_SHIFT;
75097 - else
75098 - shift = MB_NTPD_CONS_IDX_SHIFT;
75099 -
75100 - AT_READ_REG(&adapter->hw, REG_MB_PRIO_CONS_IDX, &data);
75101 - hw_next_to_clean = (data >> shift) & MB_PRIO_PROD_IDX_MASK;
75102 -
75103 - while (next_to_clean != hw_next_to_clean) {
75104 - buffer_info = &tpd_ring->buffer_info[next_to_clean];
75105 - if (buffer_info->state == ATL1_BUFFER_BUSY) {
75106 - pci_unmap_page(adapter->pdev, buffer_info->dma,
75107 - buffer_info->length, PCI_DMA_TODEVICE);
75108 - buffer_info->dma = 0;
75109 - if (buffer_info->skb) {
75110 - dev_kfree_skb_irq(buffer_info->skb);
75111 - buffer_info->skb = NULL;
75112 - }
75113 - buffer_info->state = ATL1_BUFFER_FREE;
75114 - }
75115 - if (++next_to_clean == tpd_ring->count)
75116 - next_to_clean = 0;
75117 - atomic_set(&tpd_ring->next_to_clean, next_to_clean);
75118 - }
75119 -
75120 - if (netif_queue_stopped(adapter->netdev) &&
75121 - netif_carrier_ok(adapter->netdev)) {
75122 - netif_wake_queue(adapter->netdev);
75123 - }
75124 -
75125 - return true;
75126 -}
75127 -
75128 -/*
75129 - * atl1c_intr - Interrupt Handler
75130 - * @irq: interrupt number
75131 - * @data: pointer to a network interface device structure
75132 - * @pt_regs: CPU registers structure
75133 - */
75134 -static irqreturn_t atl1c_intr(int irq, void *data)
75135 -{
75136 - struct net_device *netdev = data;
75137 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75138 - struct pci_dev *pdev = adapter->pdev;
75139 - struct atl1c_hw *hw = &adapter->hw;
75140 - int max_ints = AT_MAX_INT_WORK;
75141 - int handled = IRQ_NONE;
75142 - u32 status;
75143 - u32 reg_data;
75144 -
75145 - do {
75146 - AT_READ_REG(hw, REG_ISR, &reg_data);
75147 - status = reg_data & hw->intr_mask;
75148 -
75149 - if (status == 0 || (status & ISR_DIS_INT) != 0) {
75150 - if (max_ints != AT_MAX_INT_WORK)
75151 - handled = IRQ_HANDLED;
75152 - break;
75153 - }
75154 - /* link event */
75155 - if (status & ISR_GPHY)
75156 - atl1c_clear_phy_int(adapter);
75157 - /* Ack ISR */
75158 - AT_WRITE_REG(hw, REG_ISR, status | ISR_DIS_INT);
75159 - if (status & ISR_RX_PKT) {
75160 - if (likely(napi_schedule_prep(&adapter->napi))) {
75161 - hw->intr_mask &= ~ISR_RX_PKT;
75162 - AT_WRITE_REG(hw, REG_IMR, hw->intr_mask);
75163 - __napi_schedule(&adapter->napi);
75164 - }
75165 - }
75166 - if (status & ISR_TX_PKT)
75167 - atl1c_clean_tx_irq(adapter, atl1c_trans_normal);
75168 -
75169 - handled = IRQ_HANDLED;
75170 - /* check if PCIE PHY Link down */
75171 - if (status & ISR_ERROR) {
75172 - if (netif_msg_hw(adapter))
75173 - dev_err(&pdev->dev,
75174 - "atl1c hardware error (status = 0x%x)\n",
75175 - status & ISR_ERROR);
75176 - /* reset MAC */
75177 - hw->intr_mask &= ~ISR_ERROR;
75178 - AT_WRITE_REG(hw, REG_IMR, hw->intr_mask);
75179 - schedule_work(&adapter->reset_task);
75180 - break;
75181 - }
75182 -
75183 - if (status & ISR_OVER)
75184 - if (netif_msg_intr(adapter))
75185 - dev_warn(&pdev->dev,
75186 - "TX/RX over flow (status = 0x%x)\n",
75187 - status & ISR_OVER);
75188 -
75189 - /* link event */
75190 - if (status & (ISR_GPHY | ISR_MANUAL)) {
75191 - adapter->net_stats.tx_carrier_errors++;
75192 - atl1c_link_chg_event(adapter);
75193 - break;
75194 - }
75195 -
75196 - } while (--max_ints > 0);
75197 - /* re-enable Interrupt*/
75198 - AT_WRITE_REG(&adapter->hw, REG_ISR, 0);
75199 - return handled;
75200 -}
75201 -
75202 -static inline void atl1c_rx_checksum(struct atl1c_adapter *adapter,
75203 - struct sk_buff *skb, struct atl1c_recv_ret_status *prrs)
75204 -{
75205 - /*
75206 - * The pid field in RRS in not correct sometimes, so we
75207 - * cannot figure out if the packet is fragmented or not,
75208 - * so we tell the KERNEL CHECKSUM_NONE
75209 - */
75210 - skb->ip_summed = CHECKSUM_NONE;
75211 -}
75212 -
75213 -static int atl1c_alloc_rx_buffer(struct atl1c_adapter *adapter, const int ringid)
75214 -{
75215 - struct atl1c_rfd_ring *rfd_ring = &adapter->rfd_ring[ringid];
75216 - struct pci_dev *pdev = adapter->pdev;
75217 - struct atl1c_buffer *buffer_info, *next_info;
75218 - struct sk_buff *skb;
75219 - void *vir_addr = NULL;
75220 - u16 num_alloc = 0;
75221 - u16 rfd_next_to_use, next_next;
75222 - struct atl1c_rx_free_desc *rfd_desc;
75223 -
75224 - next_next = rfd_next_to_use = rfd_ring->next_to_use;
75225 - if (++next_next == rfd_ring->count)
75226 - next_next = 0;
75227 - buffer_info = &rfd_ring->buffer_info[rfd_next_to_use];
75228 - next_info = &rfd_ring->buffer_info[next_next];
75229 -
75230 - while (next_info->state == ATL1_BUFFER_FREE) {
75231 - rfd_desc = ATL1C_RFD_DESC(rfd_ring, rfd_next_to_use);
75232 -
75233 - skb = dev_alloc_skb(adapter->rx_buffer_len);
75234 - if (unlikely(!skb)) {
75235 - if (netif_msg_rx_err(adapter))
75236 - dev_warn(&pdev->dev, "alloc rx buffer failed\n");
75237 - break;
75238 - }
75239 -
75240 - /*
75241 - * Make buffer alignment 2 beyond a 16 byte boundary
75242 - * this will result in a 16 byte aligned IP header after
75243 - * the 14 byte MAC header is removed
75244 - */
75245 - vir_addr = skb->data;
75246 - buffer_info->state = ATL1_BUFFER_BUSY;
75247 - buffer_info->skb = skb;
75248 - buffer_info->length = adapter->rx_buffer_len;
75249 - buffer_info->dma = pci_map_single(pdev, vir_addr,
75250 - buffer_info->length,
75251 - PCI_DMA_FROMDEVICE);
75252 - rfd_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
75253 - rfd_next_to_use = next_next;
75254 - if (++next_next == rfd_ring->count)
75255 - next_next = 0;
75256 - buffer_info = &rfd_ring->buffer_info[rfd_next_to_use];
75257 - next_info = &rfd_ring->buffer_info[next_next];
75258 - num_alloc++;
75259 - }
75260 -
75261 - if (num_alloc) {
75262 - /* TODO: update mailbox here */
75263 - wmb();
75264 - rfd_ring->next_to_use = rfd_next_to_use;
75265 - AT_WRITE_REG(&adapter->hw, atl1c_rfd_prod_idx_regs[ringid],
75266 - rfd_ring->next_to_use & MB_RFDX_PROD_IDX_MASK);
75267 - }
75268 -
75269 - return num_alloc;
75270 -}
75271 -
75272 -static void atl1c_clean_rrd(struct atl1c_rrd_ring *rrd_ring,
75273 - struct atl1c_recv_ret_status *rrs, u16 num)
75274 -{
75275 - u16 i;
75276 - /* the relationship between rrd and rfd is one map one */
75277 - for (i = 0; i < num; i++, rrs = ATL1C_RRD_DESC(rrd_ring,
75278 - rrd_ring->next_to_clean)) {
75279 - rrs->word3 &= ~RRS_RXD_UPDATED;
75280 - if (++rrd_ring->next_to_clean == rrd_ring->count)
75281 - rrd_ring->next_to_clean = 0;
75282 - }
75283 -}
75284 -
75285 -static void atl1c_clean_rfd(struct atl1c_rfd_ring *rfd_ring,
75286 - struct atl1c_recv_ret_status *rrs, u16 num)
75287 -{
75288 - u16 i;
75289 - u16 rfd_index;
75290 - struct atl1c_buffer *buffer_info = rfd_ring->buffer_info;
75291 -
75292 - rfd_index = (rrs->word0 >> RRS_RX_RFD_INDEX_SHIFT) &
75293 - RRS_RX_RFD_INDEX_MASK;
75294 - for (i = 0; i < num; i++) {
75295 - buffer_info[rfd_index].skb = NULL;
75296 - buffer_info[rfd_index].state = ATL1_BUFFER_FREE;
75297 - if (++rfd_index == rfd_ring->count)
75298 - rfd_index = 0;
75299 - }
75300 - rfd_ring->next_to_clean = rfd_index;
75301 -}
75302 -
75303 -static void atl1c_clean_rx_irq(struct atl1c_adapter *adapter, u8 que,
75304 - int *work_done, int work_to_do)
75305 -{
75306 - u16 rfd_num, rfd_index;
75307 - u16 count = 0;
75308 - u16 length;
75309 - struct pci_dev *pdev = adapter->pdev;
75310 - struct net_device *netdev = adapter->netdev;
75311 - struct atl1c_rfd_ring *rfd_ring = &adapter->rfd_ring[que];
75312 - struct atl1c_rrd_ring *rrd_ring = &adapter->rrd_ring[que];
75313 - struct sk_buff *skb;
75314 - struct atl1c_recv_ret_status *rrs;
75315 - struct atl1c_buffer *buffer_info;
75316 -
75317 - while (1) {
75318 - if (*work_done >= work_to_do)
75319 - break;
75320 - rrs = ATL1C_RRD_DESC(rrd_ring, rrd_ring->next_to_clean);
75321 - if (likely(RRS_RXD_IS_VALID(rrs->word3))) {
75322 - rfd_num = (rrs->word0 >> RRS_RX_RFD_CNT_SHIFT) &
75323 - RRS_RX_RFD_CNT_MASK;
75324 - if (unlikely(rfd_num) != 1)
75325 - /* TODO support mul rfd*/
75326 - if (netif_msg_rx_err(adapter))
75327 - dev_warn(&pdev->dev,
75328 - "Multi rfd not support yet!\n");
75329 - goto rrs_checked;
75330 - } else {
75331 - break;
75332 - }
75333 -rrs_checked:
75334 - atl1c_clean_rrd(rrd_ring, rrs, rfd_num);
75335 - if (rrs->word3 & (RRS_RX_ERR_SUM | RRS_802_3_LEN_ERR)) {
75336 - atl1c_clean_rfd(rfd_ring, rrs, rfd_num);
75337 - if (netif_msg_rx_err(adapter))
75338 - dev_warn(&pdev->dev,
75339 - "wrong packet! rrs word3 is %x\n",
75340 - rrs->word3);
75341 - continue;
75342 - }
75343 -
75344 - length = le16_to_cpu((rrs->word3 >> RRS_PKT_SIZE_SHIFT) &
75345 - RRS_PKT_SIZE_MASK);
75346 - /* Good Receive */
75347 - if (likely(rfd_num == 1)) {
75348 - rfd_index = (rrs->word0 >> RRS_RX_RFD_INDEX_SHIFT) &
75349 - RRS_RX_RFD_INDEX_MASK;
75350 - buffer_info = &rfd_ring->buffer_info[rfd_index];
75351 - pci_unmap_single(pdev, buffer_info->dma,
75352 - buffer_info->length, PCI_DMA_FROMDEVICE);
75353 - skb = buffer_info->skb;
75354 - } else {
75355 - /* TODO */
75356 - if (netif_msg_rx_err(adapter))
75357 - dev_warn(&pdev->dev,
75358 - "Multi rfd not support yet!\n");
75359 - break;
75360 - }
75361 - atl1c_clean_rfd(rfd_ring, rrs, rfd_num);
75362 - skb_put(skb, length - ETH_FCS_LEN);
75363 - skb->protocol = eth_type_trans(skb, netdev);
75364 - skb->dev = netdev;
75365 - atl1c_rx_checksum(adapter, skb, rrs);
75366 - if (unlikely(adapter->vlgrp) && rrs->word3 & RRS_VLAN_INS) {
75367 - u16 vlan;
75368 -
75369 - AT_TAG_TO_VLAN(rrs->vlan_tag, vlan);
75370 - vlan = le16_to_cpu(vlan);
75371 - vlan_hwaccel_receive_skb(skb, adapter->vlgrp, vlan);
75372 - } else
75373 - netif_receive_skb(skb);
75374 -
75375 - netdev->last_rx = jiffies;
75376 - (*work_done)++;
75377 - count++;
75378 - }
75379 - if (count)
75380 - atl1c_alloc_rx_buffer(adapter, que);
75381 -}
75382 -
75383 -/*
75384 - * atl1c_clean - NAPI Rx polling callback
75385 - * @adapter: board private structure
75386 - */
75387 -static int atl1c_clean(struct napi_struct *napi, int budget)
75388 -{
75389 - struct atl1c_adapter *adapter =
75390 - container_of(napi, struct atl1c_adapter, napi);
75391 - int work_done = 0;
75392 -
75393 - /* Keep link state information with original netdev */
75394 - if (!netif_carrier_ok(adapter->netdev))
75395 - goto quit_polling;
75396 - /* just enable one RXQ */
75397 - atl1c_clean_rx_irq(adapter, 0, &work_done, budget);
75398 -
75399 - if (work_done < budget) {
75400 -quit_polling:
75401 - napi_complete(napi);
75402 - adapter->hw.intr_mask |= ISR_RX_PKT;
75403 - AT_WRITE_REG(&adapter->hw, REG_IMR, adapter->hw.intr_mask);
75404 - }
75405 - return work_done;
75406 -}
75407 -
75408 -#ifdef CONFIG_NET_POLL_CONTROLLER
75409 -
75410 -/*
75411 - * Polling 'interrupt' - used by things like netconsole to send skbs
75412 - * without having to re-enable interrupts. It's not called while
75413 - * the interrupt routine is executing.
75414 - */
75415 -static void atl1c_netpoll(struct net_device *netdev)
75416 -{
75417 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75418 -
75419 - disable_irq(adapter->pdev->irq);
75420 - atl1c_intr(adapter->pdev->irq, netdev);
75421 - enable_irq(adapter->pdev->irq);
75422 -}
75423 -#endif
75424 -
75425 -static inline u16 atl1c_tpd_avail(struct atl1c_adapter *adapter, enum atl1c_trans_queue type)
75426 -{
75427 - struct atl1c_tpd_ring *tpd_ring = &adapter->tpd_ring[type];
75428 - u16 next_to_use = 0;
75429 - u16 next_to_clean = 0;
75430 -
75431 - next_to_clean = atomic_read(&tpd_ring->next_to_clean);
75432 - next_to_use = tpd_ring->next_to_use;
75433 -
75434 - return (u16)(next_to_clean > next_to_use) ?
75435 - (next_to_clean - next_to_use - 1) :
75436 - (tpd_ring->count + next_to_clean - next_to_use - 1);
75437 -}
75438 -
75439 -/*
75440 - * get next usable tpd
75441 - * Note: should call atl1c_tdp_avail to make sure
75442 - * there is enough tpd to use
75443 - */
75444 -static struct atl1c_tpd_desc *atl1c_get_tpd(struct atl1c_adapter *adapter,
75445 - enum atl1c_trans_queue type)
75446 -{
75447 - struct atl1c_tpd_ring *tpd_ring = &adapter->tpd_ring[type];
75448 - struct atl1c_tpd_desc *tpd_desc;
75449 - u16 next_to_use = 0;
75450 -
75451 - next_to_use = tpd_ring->next_to_use;
75452 - if (++tpd_ring->next_to_use == tpd_ring->count)
75453 - tpd_ring->next_to_use = 0;
75454 - tpd_desc = ATL1C_TPD_DESC(tpd_ring, next_to_use);
75455 - memset(tpd_desc, 0, sizeof(struct atl1c_tpd_desc));
75456 - return tpd_desc;
75457 -}
75458 -
75459 -static struct atl1c_buffer *
75460 -atl1c_get_tx_buffer(struct atl1c_adapter *adapter, struct atl1c_tpd_desc *tpd)
75461 -{
75462 - struct atl1c_tpd_ring *tpd_ring = adapter->tpd_ring;
75463 -
75464 - return &tpd_ring->buffer_info[tpd -
75465 - (struct atl1c_tpd_desc *)tpd_ring->desc];
75466 -}
75467 -
75468 -/* Calculate the transmit packet descript needed*/
75469 -static u16 atl1c_cal_tpd_req(const struct sk_buff *skb)
75470 -{
75471 - u16 tpd_req;
75472 - u16 proto_hdr_len = 0;
75473 -
75474 - tpd_req = skb_shinfo(skb)->nr_frags + 1;
75475 -
75476 - if (skb_is_gso(skb)) {
75477 - proto_hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
75478 - if (proto_hdr_len < skb_headlen(skb))
75479 - tpd_req++;
75480 - if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6)
75481 - tpd_req++;
75482 - }
75483 - return tpd_req;
75484 -}
75485 -
75486 -static int atl1c_tso_csum(struct atl1c_adapter *adapter,
75487 - struct sk_buff *skb,
75488 - struct atl1c_tpd_desc **tpd,
75489 - enum atl1c_trans_queue type)
75490 -{
75491 - struct pci_dev *pdev = adapter->pdev;
75492 - u8 hdr_len;
75493 - u32 real_len;
75494 - unsigned short offload_type;
75495 - int err;
75496 -
75497 - if (skb_is_gso(skb)) {
75498 - if (skb_header_cloned(skb)) {
75499 - err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
75500 - if (unlikely(err))
75501 - return -1;
75502 - }
75503 - offload_type = skb_shinfo(skb)->gso_type;
75504 -
75505 - if (offload_type & SKB_GSO_TCPV4) {
75506 - real_len = (((unsigned char *)ip_hdr(skb) - skb->data)
75507 - + ntohs(ip_hdr(skb)->tot_len));
75508 -
75509 - if (real_len < skb->len)
75510 - pskb_trim(skb, real_len);
75511 -
75512 - hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
75513 - if (unlikely(skb->len == hdr_len)) {
75514 - /* only xsum need */
75515 - if (netif_msg_tx_queued(adapter))
75516 - dev_warn(&pdev->dev,
75517 - "IPV4 tso with zero data??\n");
75518 - goto check_sum;
75519 - } else {
75520 - ip_hdr(skb)->check = 0;
75521 - tcp_hdr(skb)->check = ~csum_tcpudp_magic(
75522 - ip_hdr(skb)->saddr,
75523 - ip_hdr(skb)->daddr,
75524 - 0, IPPROTO_TCP, 0);
75525 - (*tpd)->word1 |= 1 << TPD_IPV4_PACKET_SHIFT;
75526 - }
75527 - }
75528 -
75529 - if (offload_type & SKB_GSO_TCPV6) {
75530 - struct atl1c_tpd_ext_desc *etpd =
75531 - *(struct atl1c_tpd_ext_desc **)(tpd);
75532 -
75533 - memset(etpd, 0, sizeof(struct atl1c_tpd_ext_desc));
75534 - *tpd = atl1c_get_tpd(adapter, type);
75535 - ipv6_hdr(skb)->payload_len = 0;
75536 - /* check payload == 0 byte ? */
75537 - hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
75538 - if (unlikely(skb->len == hdr_len)) {
75539 - /* only xsum need */
75540 - if (netif_msg_tx_queued(adapter))
75541 - dev_warn(&pdev->dev,
75542 - "IPV6 tso with zero data??\n");
75543 - goto check_sum;
75544 - } else
75545 - tcp_hdr(skb)->check = ~csum_ipv6_magic(
75546 - &ipv6_hdr(skb)->saddr,
75547 - &ipv6_hdr(skb)->daddr,
75548 - 0, IPPROTO_TCP, 0);
75549 - etpd->word1 |= 1 << TPD_LSO_EN_SHIFT;
75550 - etpd->word1 |= 1 << TPD_LSO_VER_SHIFT;
75551 - etpd->pkt_len = cpu_to_le32(skb->len);
75552 - (*tpd)->word1 |= 1 << TPD_LSO_VER_SHIFT;
75553 - }
75554 -
75555 - (*tpd)->word1 |= 1 << TPD_LSO_EN_SHIFT;
75556 - (*tpd)->word1 |= (skb_transport_offset(skb) & TPD_TCPHDR_OFFSET_MASK) <<
75557 - TPD_TCPHDR_OFFSET_SHIFT;
75558 - (*tpd)->word1 |= (skb_shinfo(skb)->gso_size & TPD_MSS_MASK) <<
75559 - TPD_MSS_SHIFT;
75560 - return 0;
75561 - }
75562 -
75563 -check_sum:
75564 - if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) {
75565 - u8 css, cso;
75566 - cso = skb_transport_offset(skb);
75567 -
75568 - if (unlikely(cso & 0x1)) {
75569 - if (netif_msg_tx_err(adapter))
75570 - dev_err(&adapter->pdev->dev,
75571 - "payload offset should not an event number\n");
75572 - return -1;
75573 - } else {
75574 - css = cso + skb->csum_offset;
75575 -
75576 - (*tpd)->word1 |= ((cso >> 1) & TPD_PLOADOFFSET_MASK) <<
75577 - TPD_PLOADOFFSET_SHIFT;
75578 - (*tpd)->word1 |= ((css >> 1) & TPD_CCSUM_OFFSET_MASK) <<
75579 - TPD_CCSUM_OFFSET_SHIFT;
75580 - (*tpd)->word1 |= 1 << TPD_CCSUM_EN_SHIFT;
75581 - }
75582 - }
75583 - return 0;
75584 -}
75585 -
75586 -static void atl1c_tx_map(struct atl1c_adapter *adapter,
75587 - struct sk_buff *skb, struct atl1c_tpd_desc *tpd,
75588 - enum atl1c_trans_queue type)
75589 -{
75590 - struct atl1c_tpd_desc *use_tpd = NULL;
75591 - struct atl1c_buffer *buffer_info = NULL;
75592 - u16 buf_len = skb_headlen(skb);
75593 - u16 map_len = 0;
75594 - u16 mapped_len = 0;
75595 - u16 hdr_len = 0;
75596 - u16 nr_frags;
75597 - u16 f;
75598 - int tso;
75599 -
75600 - nr_frags = skb_shinfo(skb)->nr_frags;
75601 - tso = (tpd->word1 >> TPD_LSO_EN_SHIFT) & TPD_LSO_EN_MASK;
75602 - if (tso) {
75603 - /* TSO */
75604 - map_len = hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
75605 - use_tpd = tpd;
75606 -
75607 - buffer_info = atl1c_get_tx_buffer(adapter, use_tpd);
75608 - buffer_info->length = map_len;
75609 - buffer_info->dma = pci_map_single(adapter->pdev,
75610 - skb->data, hdr_len, PCI_DMA_TODEVICE);
75611 - buffer_info->state = ATL1_BUFFER_BUSY;
75612 - mapped_len += map_len;
75613 - use_tpd->buffer_addr = cpu_to_le64(buffer_info->dma);
75614 - use_tpd->buffer_len = cpu_to_le16(buffer_info->length);
75615 - }
75616 -
75617 - if (mapped_len < buf_len) {
75618 - /* mapped_len == 0, means we should use the first tpd,
75619 - which is given by caller */
75620 - if (mapped_len == 0)
75621 - use_tpd = tpd;
75622 - else {
75623 - use_tpd = atl1c_get_tpd(adapter, type);
75624 - memcpy(use_tpd, tpd, sizeof(struct atl1c_tpd_desc));
75625 - use_tpd = atl1c_get_tpd(adapter, type);
75626 - memcpy(use_tpd, tpd, sizeof(struct atl1c_tpd_desc));
75627 - }
75628 - buffer_info = atl1c_get_tx_buffer(adapter, use_tpd);
75629 - buffer_info->length = buf_len - mapped_len;
75630 - buffer_info->dma =
75631 - pci_map_single(adapter->pdev, skb->data + mapped_len,
75632 - buffer_info->length, PCI_DMA_TODEVICE);
75633 - buffer_info->state = ATL1_BUFFER_BUSY;
75634 -
75635 - use_tpd->buffer_addr = cpu_to_le64(buffer_info->dma);
75636 - use_tpd->buffer_len = cpu_to_le16(buffer_info->length);
75637 - }
75638 -
75639 - for (f = 0; f < nr_frags; f++) {
75640 - struct skb_frag_struct *frag;
75641 -
75642 - frag = &skb_shinfo(skb)->frags[f];
75643 -
75644 - use_tpd = atl1c_get_tpd(adapter, type);
75645 - memcpy(use_tpd, tpd, sizeof(struct atl1c_tpd_desc));
75646 -
75647 - buffer_info = atl1c_get_tx_buffer(adapter, use_tpd);
75648 - buffer_info->length = frag->size;
75649 - buffer_info->dma =
75650 - pci_map_page(adapter->pdev, frag->page,
75651 - frag->page_offset,
75652 - buffer_info->length,
75653 - PCI_DMA_TODEVICE);
75654 - buffer_info->state = ATL1_BUFFER_BUSY;
75655 -
75656 - use_tpd->buffer_addr = cpu_to_le64(buffer_info->dma);
75657 - use_tpd->buffer_len = cpu_to_le16(buffer_info->length);
75658 - }
75659 -
75660 - /* The last tpd */
75661 - use_tpd->word1 |= 1 << TPD_EOP_SHIFT;
75662 - /* The last buffer info contain the skb address,
75663 - so it will be free after unmap */
75664 - buffer_info->skb = skb;
75665 -}
75666 -
75667 -static void atl1c_tx_queue(struct atl1c_adapter *adapter, struct sk_buff *skb,
75668 - struct atl1c_tpd_desc *tpd, enum atl1c_trans_queue type)
75669 -{
75670 - struct atl1c_tpd_ring *tpd_ring = &adapter->tpd_ring[type];
75671 - u32 prod_data;
75672 -
75673 - AT_READ_REG(&adapter->hw, REG_MB_PRIO_PROD_IDX, &prod_data);
75674 - switch (type) {
75675 - case atl1c_trans_high:
75676 - prod_data &= 0xFFFF0000;
75677 - prod_data |= tpd_ring->next_to_use & 0xFFFF;
75678 - break;
75679 - case atl1c_trans_normal:
75680 - prod_data &= 0x0000FFFF;
75681 - prod_data |= (tpd_ring->next_to_use & 0xFFFF) << 16;
75682 - break;
75683 - default:
75684 - break;
75685 - }
75686 - wmb();
75687 - AT_WRITE_REG(&adapter->hw, REG_MB_PRIO_PROD_IDX, prod_data);
75688 -}
75689 -
75690 -static int atl1c_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
75691 -{
75692 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75693 - unsigned long flags;
75694 - u16 tpd_req = 1;
75695 - struct atl1c_tpd_desc *tpd;
75696 - enum atl1c_trans_queue type = atl1c_trans_normal;
75697 -
75698 - if (test_bit(__AT_DOWN, &adapter->flags)) {
75699 - dev_kfree_skb_any(skb);
75700 - return NETDEV_TX_OK;
75701 - }
75702 -
75703 - tpd_req = atl1c_cal_tpd_req(skb);
75704 - if (!spin_trylock_irqsave(&adapter->tx_lock, flags)) {
75705 - if (netif_msg_pktdata(adapter))
75706 - dev_info(&adapter->pdev->dev, "tx locked\n");
75707 - return NETDEV_TX_LOCKED;
75708 - }
75709 - if (skb->mark == 0x01)
75710 - type = atl1c_trans_high;
75711 - else
75712 - type = atl1c_trans_normal;
75713 -
75714 - if (atl1c_tpd_avail(adapter, type) < tpd_req) {
75715 - /* no enough descriptor, just stop queue */
75716 - netif_stop_queue(netdev);
75717 - spin_unlock_irqrestore(&adapter->tx_lock, flags);
75718 - return NETDEV_TX_BUSY;
75719 - }
75720 -
75721 - tpd = atl1c_get_tpd(adapter, type);
75722 -
75723 - /* do TSO and check sum */
75724 - if (atl1c_tso_csum(adapter, skb, &tpd, type) != 0) {
75725 - spin_unlock_irqrestore(&adapter->tx_lock, flags);
75726 - dev_kfree_skb_any(skb);
75727 - return NETDEV_TX_OK;
75728 - }
75729 -
75730 - if (unlikely(adapter->vlgrp && vlan_tx_tag_present(skb))) {
75731 - u16 vlan = vlan_tx_tag_get(skb);
75732 - __le16 tag;
75733 -
75734 - vlan = cpu_to_le16(vlan);
75735 - AT_VLAN_TO_TAG(vlan, tag);
75736 - tpd->word1 |= 1 << TPD_INS_VTAG_SHIFT;
75737 - tpd->vlan_tag = tag;
75738 - }
75739 -
75740 - if (skb_network_offset(skb) != ETH_HLEN)
75741 - tpd->word1 |= 1 << TPD_ETH_TYPE_SHIFT; /* Ethernet frame */
75742 -
75743 - atl1c_tx_map(adapter, skb, tpd, type);
75744 - atl1c_tx_queue(adapter, skb, tpd, type);
75745 -
75746 - netdev->trans_start = jiffies;
75747 - spin_unlock_irqrestore(&adapter->tx_lock, flags);
75748 - return NETDEV_TX_OK;
75749 -}
75750 -
75751 -static void atl1c_free_irq(struct atl1c_adapter *adapter)
75752 -{
75753 - struct net_device *netdev = adapter->netdev;
75754 -
75755 - free_irq(adapter->pdev->irq, netdev);
75756 -
75757 - if (adapter->have_msi)
75758 - pci_disable_msi(adapter->pdev);
75759 -}
75760 -
75761 -static int atl1c_request_irq(struct atl1c_adapter *adapter)
75762 -{
75763 - struct pci_dev *pdev = adapter->pdev;
75764 - struct net_device *netdev = adapter->netdev;
75765 - int flags = 0;
75766 - int err = 0;
75767 -
75768 - adapter->have_msi = true;
75769 - err = pci_enable_msi(adapter->pdev);
75770 - if (err) {
75771 - if (netif_msg_ifup(adapter))
75772 - dev_err(&pdev->dev,
75773 - "Unable to allocate MSI interrupt Error: %d\n",
75774 - err);
75775 - adapter->have_msi = false;
75776 - } else
75777 - netdev->irq = pdev->irq;
75778 -
75779 - if (!adapter->have_msi)
75780 - flags |= IRQF_SHARED;
75781 - err = request_irq(adapter->pdev->irq, &atl1c_intr, flags,
75782 - netdev->name, netdev);
75783 - if (err) {
75784 - if (netif_msg_ifup(adapter))
75785 - dev_err(&pdev->dev,
75786 - "Unable to allocate interrupt Error: %d\n",
75787 - err);
75788 - if (adapter->have_msi)
75789 - pci_disable_msi(adapter->pdev);
75790 - return err;
75791 - }
75792 - if (netif_msg_ifup(adapter))
75793 - dev_dbg(&pdev->dev, "atl1c_request_irq OK\n");
75794 - return err;
75795 -}
75796 -
75797 -int atl1c_up(struct atl1c_adapter *adapter)
75798 -{
75799 - struct net_device *netdev = adapter->netdev;
75800 - int num;
75801 - int err;
75802 - int i;
75803 -
75804 - netif_carrier_off(netdev);
75805 - atl1c_init_ring_ptrs(adapter);
75806 - atl1c_set_multi(netdev);
75807 - atl1c_restore_vlan(adapter);
75808 -
75809 - for (i = 0; i < adapter->num_rx_queues; i++) {
75810 - num = atl1c_alloc_rx_buffer(adapter, i);
75811 - if (unlikely(num == 0)) {
75812 - err = -ENOMEM;
75813 - goto err_alloc_rx;
75814 - }
75815 - }
75816 -
75817 - if (atl1c_configure(adapter)) {
75818 - err = -EIO;
75819 - goto err_up;
75820 - }
75821 -
75822 - err = atl1c_request_irq(adapter);
75823 - if (unlikely(err))
75824 - goto err_up;
75825 -
75826 - clear_bit(__AT_DOWN, &adapter->flags);
75827 - napi_enable(&adapter->napi);
75828 - atl1c_irq_enable(adapter);
75829 - atl1c_check_link_status(adapter);
75830 - netif_start_queue(netdev);
75831 - return err;
75832 -
75833 -err_up:
75834 -err_alloc_rx:
75835 - atl1c_clean_rx_ring(adapter);
75836 - return err;
75837 -}
75838 -
75839 -void atl1c_down(struct atl1c_adapter *adapter)
75840 -{
75841 - struct net_device *netdev = adapter->netdev;
75842 -
75843 - atl1c_del_timer(adapter);
75844 - atl1c_cancel_work(adapter);
75845 -
75846 - /* signal that we're down so the interrupt handler does not
75847 - * reschedule our watchdog timer */
75848 - set_bit(__AT_DOWN, &adapter->flags);
75849 - netif_carrier_off(netdev);
75850 - napi_disable(&adapter->napi);
75851 - atl1c_irq_disable(adapter);
75852 - atl1c_free_irq(adapter);
75853 - AT_WRITE_REG(&adapter->hw, REG_ISR, ISR_DIS_INT);
75854 - /* reset MAC to disable all RX/TX */
75855 - atl1c_reset_mac(&adapter->hw);
75856 - msleep(1);
75857 -
75858 - adapter->link_speed = SPEED_0;
75859 - adapter->link_duplex = -1;
75860 - atl1c_clean_tx_ring(adapter, atl1c_trans_normal);
75861 - atl1c_clean_tx_ring(adapter, atl1c_trans_high);
75862 - atl1c_clean_rx_ring(adapter);
75863 -}
75864 -
75865 -/*
75866 - * atl1c_open - Called when a network interface is made active
75867 - * @netdev: network interface device structure
75868 - *
75869 - * Returns 0 on success, negative value on failure
75870 - *
75871 - * The open entry point is called when a network interface is made
75872 - * active by the system (IFF_UP). At this point all resources needed
75873 - * for transmit and receive operations are allocated, the interrupt
75874 - * handler is registered with the OS, the watchdog timer is started,
75875 - * and the stack is notified that the interface is ready.
75876 - */
75877 -static int atl1c_open(struct net_device *netdev)
75878 -{
75879 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75880 - int err;
75881 -
75882 - /* disallow open during test */
75883 - if (test_bit(__AT_TESTING, &adapter->flags))
75884 - return -EBUSY;
75885 -
75886 - /* allocate rx/tx dma buffer & descriptors */
75887 - err = atl1c_setup_ring_resources(adapter);
75888 - if (unlikely(err))
75889 - return err;
75890 -
75891 - err = atl1c_up(adapter);
75892 - if (unlikely(err))
75893 - goto err_up;
75894 -
75895 - if (adapter->hw.ctrl_flags & ATL1C_FPGA_VERSION) {
75896 - u32 phy_data;
75897 -
75898 - AT_READ_REG(&adapter->hw, REG_MDIO_CTRL, &phy_data);
75899 - phy_data |= MDIO_AP_EN;
75900 - AT_WRITE_REG(&adapter->hw, REG_MDIO_CTRL, phy_data);
75901 - }
75902 - return 0;
75903 -
75904 -err_up:
75905 - atl1c_free_irq(adapter);
75906 - atl1c_free_ring_resources(adapter);
75907 - atl1c_reset_mac(&adapter->hw);
75908 - return err;
75909 -}
75910 -
75911 -/*
75912 - * atl1c_close - Disables a network interface
75913 - * @netdev: network interface device structure
75914 - *
75915 - * Returns 0, this is not allowed to fail
75916 - *
75917 - * The close entry point is called when an interface is de-activated
75918 - * by the OS. The hardware is still under the drivers control, but
75919 - * needs to be disabled. A global MAC reset is issued to stop the
75920 - * hardware, and all transmit and receive resources are freed.
75921 - */
75922 -static int atl1c_close(struct net_device *netdev)
75923 -{
75924 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75925 -
75926 - WARN_ON(test_bit(__AT_RESETTING, &adapter->flags));
75927 - atl1c_down(adapter);
75928 - atl1c_free_ring_resources(adapter);
75929 - return 0;
75930 -}
75931 -
75932 -static int atl1c_suspend(struct pci_dev *pdev, pm_message_t state)
75933 -{
75934 - struct net_device *netdev = pci_get_drvdata(pdev);
75935 - struct atl1c_adapter *adapter = netdev_priv(netdev);
75936 - struct atl1c_hw *hw = &adapter->hw;
75937 - u32 ctrl;
75938 - u32 mac_ctrl_data;
75939 - u32 master_ctrl_data;
75940 - u32 wol_ctrl_data;
75941 - u16 mii_bmsr_data;
75942 - u16 save_autoneg_advertised;
75943 - u16 mii_intr_status_data;
75944 - u32 wufc = adapter->wol;
75945 - u32 i;
75946 - int retval = 0;
75947 -
75948 - if (netif_running(netdev)) {
75949 - WARN_ON(test_bit(__AT_RESETTING, &adapter->flags));
75950 - atl1c_down(adapter);
75951 - }
75952 - netif_device_detach(netdev);
75953 - atl1c_disable_l0s_l1(hw);
75954 - retval = pci_save_state(pdev);
75955 - if (retval)
75956 - return retval;
75957 - if (wufc) {
75958 - AT_READ_REG(hw, REG_MASTER_CTRL, &master_ctrl_data);
75959 - master_ctrl_data &= ~MASTER_CTRL_CLK_SEL_DIS;
75960 -
75961 - /* get link status */
75962 - atl1c_read_phy_reg(hw, MII_BMSR, (u16 *)&mii_bmsr_data);
75963 - atl1c_read_phy_reg(hw, MII_BMSR, (u16 *)&mii_bmsr_data);
75964 - save_autoneg_advertised = hw->autoneg_advertised;
75965 - hw->autoneg_advertised = ADVERTISED_10baseT_Half;
75966 - if (atl1c_restart_autoneg(hw) != 0)
75967 - if (netif_msg_link(adapter))
75968 - dev_warn(&pdev->dev, "phy autoneg failed\n");
75969 - hw->phy_configured = false; /* re-init PHY when resume */
75970 - hw->autoneg_advertised = save_autoneg_advertised;
75971 - /* turn on magic packet wol */
75972 - if (wufc & AT_WUFC_MAG)
75973 - wol_ctrl_data = WOL_MAGIC_EN | WOL_MAGIC_PME_EN;
75974 -
75975 - if (wufc & AT_WUFC_LNKC) {
75976 - for (i = 0; i < AT_SUSPEND_LINK_TIMEOUT; i++) {
75977 - msleep(100);
75978 - atl1c_read_phy_reg(hw, MII_BMSR,
75979 - (u16 *)&mii_bmsr_data);
75980 - if (mii_bmsr_data & BMSR_LSTATUS)
75981 - break;
75982 - }
75983 - if ((mii_bmsr_data & BMSR_LSTATUS) == 0)
75984 - if (netif_msg_link(adapter))
75985 - dev_warn(&pdev->dev,
75986 - "%s: Link may change"
75987 - "when suspend\n",
75988 - atl1c_driver_name);
75989 - wol_ctrl_data |= WOL_LINK_CHG_EN | WOL_LINK_CHG_PME_EN;
75990 - /* only link up can wake up */
75991 - if (atl1c_write_phy_reg(hw, MII_IER, IER_LINK_UP) != 0) {
75992 - if (netif_msg_link(adapter))
75993 - dev_err(&pdev->dev,
75994 - "%s: read write phy "
75995 - "register failed.\n",
75996 - atl1c_driver_name);
75997 - goto wol_dis;
75998 - }
75999 - }
76000 - /* clear phy interrupt */
76001 - atl1c_read_phy_reg(hw, MII_ISR, &mii_intr_status_data);
76002 - /* Config MAC Ctrl register */
76003 - mac_ctrl_data = MAC_CTRL_RX_EN;
76004 - /* set to 10/100M halt duplex */
76005 - mac_ctrl_data |= atl1c_mac_speed_10_100 << MAC_CTRL_SPEED_SHIFT;
76006 - mac_ctrl_data |= (((u32)adapter->hw.preamble_len &
76007 - MAC_CTRL_PRMLEN_MASK) <<
76008 - MAC_CTRL_PRMLEN_SHIFT);
76009 -
76010 - if (adapter->vlgrp)
76011 - mac_ctrl_data |= MAC_CTRL_RMV_VLAN;
76012 -
76013 - /* magic packet maybe Broadcast&multicast&Unicast frame */
76014 - if (wufc & AT_WUFC_MAG)
76015 - mac_ctrl_data |= MAC_CTRL_BC_EN;
76016 -
76017 - if (netif_msg_hw(adapter))
76018 - dev_dbg(&pdev->dev,
76019 - "%s: suspend MAC=0x%x\n",
76020 - atl1c_driver_name, mac_ctrl_data);
76021 - AT_WRITE_REG(hw, REG_MASTER_CTRL, master_ctrl_data);
76022 - AT_WRITE_REG(hw, REG_WOL_CTRL, wol_ctrl_data);
76023 - AT_WRITE_REG(hw, REG_MAC_CTRL, mac_ctrl_data);
76024 -
76025 - /* pcie patch */
76026 - AT_READ_REG(hw, REG_PCIE_PHYMISC, &ctrl);
76027 - ctrl |= PCIE_PHYMISC_FORCE_RCV_DET;
76028 - AT_WRITE_REG(hw, REG_PCIE_PHYMISC, ctrl);
76029 -
76030 - pci_enable_wake(pdev, pci_choose_state(pdev, state), 1);
76031 - goto suspend_exit;
76032 - }
76033 -wol_dis:
76034 -
76035 - /* WOL disabled */
76036 - AT_WRITE_REG(hw, REG_WOL_CTRL, 0);
76037 -
76038 - /* pcie patch */
76039 - AT_READ_REG(hw, REG_PCIE_PHYMISC, &ctrl);
76040 - ctrl |= PCIE_PHYMISC_FORCE_RCV_DET;
76041 - AT_WRITE_REG(hw, REG_PCIE_PHYMISC, ctrl);
76042 -
76043 - atl1c_phy_disable(hw);
76044 - hw->phy_configured = false; /* re-init PHY when resume */
76045 -
76046 - pci_enable_wake(pdev, pci_choose_state(pdev, state), 0);
76047 -suspend_exit:
76048 -
76049 - pci_disable_device(pdev);
76050 - pci_set_power_state(pdev, pci_choose_state(pdev, state));
76051 -
76052 - return 0;
76053 -}
76054 -
76055 -static int atl1c_resume(struct pci_dev *pdev)
76056 -{
76057 - struct net_device *netdev = pci_get_drvdata(pdev);
76058 - struct atl1c_adapter *adapter = netdev_priv(netdev);
76059 -
76060 - pci_set_power_state(pdev, PCI_D0);
76061 - pci_restore_state(pdev);
76062 - pci_enable_wake(pdev, PCI_D3hot, 0);
76063 - pci_enable_wake(pdev, PCI_D3cold, 0);
76064 -
76065 - AT_WRITE_REG(&adapter->hw, REG_WOL_CTRL, 0);
76066 -
76067 - atl1c_phy_reset(&adapter->hw);
76068 - atl1c_reset_mac(&adapter->hw);
76069 - netif_device_attach(netdev);
76070 - if (netif_running(netdev))
76071 - atl1c_up(adapter);
76072 -
76073 - return 0;
76074 -}
76075 -
76076 -static void atl1c_shutdown(struct pci_dev *pdev)
76077 -{
76078 - atl1c_suspend(pdev, PMSG_SUSPEND);
76079 -}
76080 -
76081 -static const struct net_device_ops atl1c_netdev_ops = {
76082 - .ndo_open = atl1c_open,
76083 - .ndo_stop = atl1c_close,
76084 - .ndo_validate_addr = eth_validate_addr,
76085 - .ndo_start_xmit = atl1c_xmit_frame,
76086 - .ndo_set_mac_address = atl1c_set_mac_addr,
76087 - .ndo_set_multicast_list = atl1c_set_multi,
76088 - .ndo_change_mtu = atl1c_change_mtu,
76089 - .ndo_do_ioctl = atl1c_ioctl,
76090 - .ndo_tx_timeout = atl1c_tx_timeout,
76091 - .ndo_get_stats = atl1c_get_stats,
76092 - .ndo_vlan_rx_register = atl1c_vlan_rx_register,
76093 -#ifdef CONFIG_NET_POLL_CONTROLLER
76094 - .ndo_poll_controller = atl1c_netpoll,
76095 -#endif
76096 -};
76097 -
76098 -static int atl1c_init_netdev(struct net_device *netdev, struct pci_dev *pdev)
76099 -{
76100 - SET_NETDEV_DEV(netdev, &pdev->dev);
76101 - pci_set_drvdata(pdev, netdev);
76102 -
76103 - netdev->irq = pdev->irq;
76104 - netdev->netdev_ops = &atl1c_netdev_ops;
76105 - netdev->watchdog_timeo = AT_TX_WATCHDOG;
76106 - atl1c_set_ethtool_ops(netdev);
76107 -
76108 - /* TODO: add when ready */
76109 - netdev->features = NETIF_F_SG |
76110 - NETIF_F_HW_CSUM |
76111 - NETIF_F_HW_VLAN_TX |
76112 - NETIF_F_HW_VLAN_RX |
76113 - NETIF_F_TSO |
76114 - NETIF_F_TSO6;
76115 - return 0;
76116 -}
76117 -
76118 -/*
76119 - * atl1c_probe - Device Initialization Routine
76120 - * @pdev: PCI device information struct
76121 - * @ent: entry in atl1c_pci_tbl
76122 - *
76123 - * Returns 0 on success, negative on failure
76124 - *
76125 - * atl1c_probe initializes an adapter identified by a pci_dev structure.
76126 - * The OS initialization, configuring of the adapter private structure,
76127 - * and a hardware reset occur.
76128 - */
76129 -static int __devinit atl1c_probe(struct pci_dev *pdev,
76130 - const struct pci_device_id *ent)
76131 -{
76132 - struct net_device *netdev;
76133 - struct atl1c_adapter *adapter;
76134 - static int cards_found;
76135 -
76136 - int err = 0;
76137 -
76138 - /* enable device (incl. PCI PM wakeup and hotplug setup) */
76139 - err = pci_enable_device_mem(pdev);
76140 - if (err) {
76141 - dev_err(&pdev->dev, "cannot enable PCI device\n");
76142 - return err;
76143 - }
76144 -
76145 - /*
76146 - * The atl1c chip can DMA to 64-bit addresses, but it uses a single
76147 - * shared register for the high 32 bits, so only a single, aligned,
76148 - * 4 GB physical address range can be used at a time.
76149 - *
76150 - * Supporting 64-bit DMA on this hardware is more trouble than it's
76151 - * worth. It is far easier to limit to 32-bit DMA than update
76152 - * various kernel subsystems to support the mechanics required by a
76153 - * fixed-high-32-bit system.
76154 - */
76155 - if ((pci_set_dma_mask(pdev, DMA_32BIT_MASK) != 0) ||
76156 - (pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK) != 0)) {
76157 - dev_err(&pdev->dev, "No usable DMA configuration,aborting\n");
76158 - goto err_dma;
76159 - }
76160 -
76161 - err = pci_request_regions(pdev, atl1c_driver_name);
76162 - if (err) {
76163 - dev_err(&pdev->dev, "cannot obtain PCI resources\n");
76164 - goto err_pci_reg;
76165 - }
76166 -
76167 - pci_set_master(pdev);
76168 -
76169 - netdev = alloc_etherdev(sizeof(struct atl1c_adapter));
76170 - if (netdev == NULL) {
76171 - err = -ENOMEM;
76172 - dev_err(&pdev->dev, "etherdev alloc failed\n");
76173 - goto err_alloc_etherdev;
76174 - }
76175 -
76176 - err = atl1c_init_netdev(netdev, pdev);
76177 - if (err) {
76178 - dev_err(&pdev->dev, "init netdevice failed\n");
76179 - goto err_init_netdev;
76180 - }
76181 - adapter = netdev_priv(netdev);
76182 - adapter->bd_number = cards_found;
76183 - adapter->netdev = netdev;
76184 - adapter->pdev = pdev;
76185 - adapter->hw.adapter = adapter;
76186 - adapter->msg_enable = netif_msg_init(-1, atl1c_default_msg);
76187 - adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0), pci_resource_len(pdev, 0));
76188 - if (!adapter->hw.hw_addr) {
76189 - err = -EIO;
76190 - dev_err(&pdev->dev, "cannot map device registers\n");
76191 - goto err_ioremap;
76192 - }
76193 - netdev->base_addr = (unsigned long)adapter->hw.hw_addr;
76194 -
76195 - /* init mii data */
76196 - adapter->mii.dev = netdev;
76197 - adapter->mii.mdio_read = atl1c_mdio_read;
76198 - adapter->mii.mdio_write = atl1c_mdio_write;
76199 - adapter->mii.phy_id_mask = 0x1f;
76200 - adapter->mii.reg_num_mask = MDIO_REG_ADDR_MASK;
76201 - netif_napi_add(netdev, &adapter->napi, atl1c_clean, 64);
76202 - setup_timer(&adapter->phy_config_timer, atl1c_phy_config,
76203 - (unsigned long)adapter);
76204 - /* setup the private structure */
76205 - err = atl1c_sw_init(adapter);
76206 - if (err) {
76207 - dev_err(&pdev->dev, "net device private data init failed\n");
76208 - goto err_sw_init;
76209 - }
76210 - atl1c_reset_pcie(&adapter->hw, ATL1C_PCIE_L0S_L1_DISABLE |
76211 - ATL1C_PCIE_PHY_RESET);
76212 -
76213 - /* Init GPHY as early as possible due to power saving issue */
76214 - atl1c_phy_reset(&adapter->hw);
76215 -
76216 - err = atl1c_reset_mac(&adapter->hw);
76217 - if (err) {
76218 - err = -EIO;
76219 - goto err_reset;
76220 - }
76221 -
76222 - device_init_wakeup(&pdev->dev, 1);
76223 - /* reset the controller to
76224 - * put the device in a known good starting state */
76225 - err = atl1c_phy_init(&adapter->hw);
76226 - if (err) {
76227 - err = -EIO;
76228 - goto err_reset;
76229 - }
76230 - if (atl1c_read_mac_addr(&adapter->hw) != 0) {
76231 - err = -EIO;
76232 - dev_err(&pdev->dev, "get mac address failed\n");
76233 - goto err_eeprom;
76234 - }
76235 - memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
76236 - memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
76237 - if (netif_msg_probe(adapter))
76238 - dev_dbg(&pdev->dev,
76239 - "mac address : %02x-%02x-%02x-%02x-%02x-%02x\n",
76240 - adapter->hw.mac_addr[0], adapter->hw.mac_addr[1],
76241 - adapter->hw.mac_addr[2], adapter->hw.mac_addr[3],
76242 - adapter->hw.mac_addr[4], adapter->hw.mac_addr[5]);
76243 -
76244 - atl1c_hw_set_mac_addr(&adapter->hw);
76245 - INIT_WORK(&adapter->reset_task, atl1c_reset_task);
76246 - INIT_WORK(&adapter->link_chg_task, atl1c_link_chg_task);
76247 - err = register_netdev(netdev);
76248 - if (err) {
76249 - dev_err(&pdev->dev, "register netdevice failed\n");
76250 - goto err_register;
76251 - }
76252 -
76253 - if (netif_msg_probe(adapter))
76254 - dev_info(&pdev->dev, "version %s\n", ATL1C_DRV_VERSION);
76255 - cards_found++;
76256 - return 0;
76257 -
76258 -err_reset:
76259 -err_register:
76260 -err_sw_init:
76261 -err_eeprom:
76262 - iounmap(adapter->hw.hw_addr);
76263 -err_init_netdev:
76264 -err_ioremap:
76265 - free_netdev(netdev);
76266 -err_alloc_etherdev:
76267 - pci_release_regions(pdev);
76268 -err_pci_reg:
76269 -err_dma:
76270 - pci_disable_device(pdev);
76271 - return err;
76272 -}
76273 -
76274 -/*
76275 - * atl1c_remove - Device Removal Routine
76276 - * @pdev: PCI device information struct
76277 - *
76278 - * atl1c_remove is called by the PCI subsystem to alert the driver
76279 - * that it should release a PCI device. The could be caused by a
76280 - * Hot-Plug event, or because the driver is going to be removed from
76281 - * memory.
76282 - */
76283 -static void __devexit atl1c_remove(struct pci_dev *pdev)
76284 -{
76285 - struct net_device *netdev = pci_get_drvdata(pdev);
76286 - struct atl1c_adapter *adapter = netdev_priv(netdev);
76287 -
76288 - unregister_netdev(netdev);
76289 - atl1c_phy_disable(&adapter->hw);
76290 -
76291 - iounmap(adapter->hw.hw_addr);
76292 -
76293 - pci_release_regions(pdev);
76294 - pci_disable_device(pdev);
76295 - free_netdev(netdev);
76296 -}
76297 -
76298 -/*
76299 - * atl1c_io_error_detected - called when PCI error is detected
76300 - * @pdev: Pointer to PCI device
76301 - * @state: The current pci connection state
76302 - *
76303 - * This function is called after a PCI bus error affecting
76304 - * this device has been detected.
76305 - */
76306 -static pci_ers_result_t atl1c_io_error_detected(struct pci_dev *pdev,
76307 - pci_channel_state_t state)
76308 -{
76309 - struct net_device *netdev = pci_get_drvdata(pdev);
76310 - struct atl1c_adapter *adapter = netdev_priv(netdev);
76311 -
76312 - netif_device_detach(netdev);
76313 -
76314 - if (netif_running(netdev))
76315 - atl1c_down(adapter);
76316 -
76317 - pci_disable_device(pdev);
76318 -
76319 - /* Request a slot slot reset. */
76320 - return PCI_ERS_RESULT_NEED_RESET;
76321 -}
76322 -
76323 -/*
76324 - * atl1c_io_slot_reset - called after the pci bus has been reset.
76325 - * @pdev: Pointer to PCI device
76326 - *
76327 - * Restart the card from scratch, as if from a cold-boot. Implementation
76328 - * resembles the first-half of the e1000_resume routine.
76329 - */
76330 -static pci_ers_result_t atl1c_io_slot_reset(struct pci_dev *pdev)
76331 -{
76332 - struct net_device *netdev = pci_get_drvdata(pdev);
76333 - struct atl1c_adapter *adapter = netdev_priv(netdev);
76334 -
76335 - if (pci_enable_device(pdev)) {
76336 - if (netif_msg_hw(adapter))
76337 - dev_err(&pdev->dev,
76338 - "Cannot re-enable PCI device after reset\n");
76339 - return PCI_ERS_RESULT_DISCONNECT;
76340 - }
76341 - pci_set_master(pdev);
76342 -
76343 - pci_enable_wake(pdev, PCI_D3hot, 0);
76344 - pci_enable_wake(pdev, PCI_D3cold, 0);
76345 -
76346 - atl1c_reset_mac(&adapter->hw);
76347 -
76348 - return PCI_ERS_RESULT_RECOVERED;
76349 -}
76350 -
76351 -/*
76352 - * atl1c_io_resume - called when traffic can start flowing again.
76353 - * @pdev: Pointer to PCI device
76354 - *
76355 - * This callback is called when the error recovery driver tells us that
76356 - * its OK to resume normal operation. Implementation resembles the
76357 - * second-half of the atl1c_resume routine.
76358 - */
76359 -static void atl1c_io_resume(struct pci_dev *pdev)
76360 -{
76361 - struct net_device *netdev = pci_get_drvdata(pdev);
76362 - struct atl1c_adapter *adapter = netdev_priv(netdev);
76363 -
76364 - if (netif_running(netdev)) {
76365 - if (atl1c_up(adapter)) {
76366 - if (netif_msg_hw(adapter))
76367 - dev_err(&pdev->dev,
76368 - "Cannot bring device back up after reset\n");
76369 - return;
76370 - }
76371 - }
76372 -
76373 - netif_device_attach(netdev);
76374 -}
76375 -
76376 -static struct pci_error_handlers atl1c_err_handler = {
76377 - .error_detected = atl1c_io_error_detected,
76378 - .slot_reset = atl1c_io_slot_reset,
76379 - .resume = atl1c_io_resume,
76380 -};
76381 -
76382 -static struct pci_driver atl1c_driver = {
76383 - .name = atl1c_driver_name,
76384 - .id_table = atl1c_pci_tbl,
76385 - .probe = atl1c_probe,
76386 - .remove = __devexit_p(atl1c_remove),
76387 - /* Power Managment Hooks */
76388 - .suspend = atl1c_suspend,
76389 - .resume = atl1c_resume,
76390 - .shutdown = atl1c_shutdown,
76391 - .err_handler = &atl1c_err_handler
76392 -};
76393 -
76394 -/*
76395 - * atl1c_init_module - Driver Registration Routine
76396 - *
76397 - * atl1c_init_module is the first routine called when the driver is
76398 - * loaded. All it does is register with the PCI subsystem.
76399 - */
76400 -static int __init atl1c_init_module(void)
76401 -{
76402 - return pci_register_driver(&atl1c_driver);
76403 -}
76404 -
76405 -/*
76406 - * atl1c_exit_module - Driver Exit Cleanup Routine
76407 - *
76408 - * atl1c_exit_module is called just before the driver is removed
76409 - * from memory.
76410 - */
76411 -static void __exit atl1c_exit_module(void)
76412 -{
76413 - pci_unregister_driver(&atl1c_driver);
76414 -}
76415 -
76416 -module_init(atl1c_init_module);
76417 -module_exit(atl1c_exit_module);
76418 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/atl1c/Makefile linux-2.6.29-rc3.owrt/drivers/net/atl1c/Makefile
76419 --- linux-2.6.29.owrt/drivers/net/atl1c/Makefile 2009-05-10 22:04:38.000000000 +0200
76420 +++ linux-2.6.29-rc3.owrt/drivers/net/atl1c/Makefile 1970-01-01 01:00:00.000000000 +0100
76421 @@ -1,2 +0,0 @@
76422 -obj-$(CONFIG_ATL1C) += atl1c.o
76423 -atl1c-objs := atl1c_main.o atl1c_hw.o atl1c_ethtool.o
76424 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/b44.c linux-2.6.29-rc3.owrt/drivers/net/b44.c
76425 --- linux-2.6.29.owrt/drivers/net/b44.c 2009-05-10 22:04:38.000000000 +0200
76426 +++ linux-2.6.29-rc3.owrt/drivers/net/b44.c 2009-05-10 23:48:28.000000000 +0200
76427 @@ -1264,14 +1264,8 @@
76428 static void b44_chip_reset(struct b44 *bp, int reset_kind)
76429 {
76430 struct ssb_device *sdev = bp->sdev;
76431 - bool was_enabled;
76432
76433 - was_enabled = ssb_device_is_enabled(bp->sdev);
76434 -
76435 - ssb_device_enable(bp->sdev, 0);
76436 - ssb_pcicore_dev_irqvecs_enable(&sdev->bus->pcicore, sdev);
76437 -
76438 - if (was_enabled) {
76439 + if (ssb_device_is_enabled(bp->sdev)) {
76440 bw32(bp, B44_RCV_LAZY, 0);
76441 bw32(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE);
76442 b44_wait_bit(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE, 200, 1);
76443 @@ -1283,8 +1277,10 @@
76444 }
76445 bw32(bp, B44_DMARX_CTRL, 0);
76446 bp->rx_prod = bp->rx_cons = 0;
76447 - }
76448 + } else
76449 + ssb_pcicore_dev_irqvecs_enable(&sdev->bus->pcicore, sdev);
76450
76451 + ssb_device_enable(bp->sdev, 0);
76452 b44_clear_stats(bp);
76453
76454 /*
76455 @@ -2240,7 +2236,6 @@
76456 struct net_device *dev = ssb_get_drvdata(sdev);
76457
76458 unregister_netdev(dev);
76459 - ssb_device_disable(sdev, 0);
76460 ssb_bus_may_powerdown(sdev->bus);
76461 free_netdev(dev);
76462 ssb_pcihost_set_power_state(sdev, PCI_D3hot);
76463 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/be_cmds.c linux-2.6.29-rc3.owrt/drivers/net/benet/be_cmds.c
76464 --- linux-2.6.29.owrt/drivers/net/benet/be_cmds.c 2009-05-10 22:04:38.000000000 +0200
76465 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/be_cmds.c 1970-01-01 01:00:00.000000000 +0100
76466 @@ -1,861 +0,0 @@
76467 -/*
76468 - * Copyright (C) 2005 - 2009 ServerEngines
76469 - * All rights reserved.
76470 - *
76471 - * This program is free software; you can redistribute it and/or
76472 - * modify it under the terms of the GNU General Public License version 2
76473 - * as published by the Free Software Foundation. The full GNU General
76474 - * Public License is included in this distribution in the file called COPYING.
76475 - *
76476 - * Contact Information:
76477 - * linux-drivers@serverengines.com
76478 - *
76479 - * ServerEngines
76480 - * 209 N. Fair Oaks Ave
76481 - * Sunnyvale, CA 94085
76482 - */
76483 -
76484 -#include "be.h"
76485 -
76486 -static int be_mbox_db_ready_wait(void __iomem *db)
76487 -{
76488 - int cnt = 0, wait = 5;
76489 - u32 ready;
76490 -
76491 - do {
76492 - ready = ioread32(db) & MPU_MAILBOX_DB_RDY_MASK;
76493 - if (ready)
76494 - break;
76495 -
76496 - if (cnt > 200000) {
76497 - printk(KERN_WARNING DRV_NAME
76498 - ": mbox_db poll timed out\n");
76499 - return -1;
76500 - }
76501 -
76502 - if (cnt > 50)
76503 - wait = 200;
76504 - cnt += wait;
76505 - udelay(wait);
76506 - } while (true);
76507 -
76508 - return 0;
76509 -}
76510 -
76511 -/*
76512 - * Insert the mailbox address into the doorbell in two steps
76513 - */
76514 -static int be_mbox_db_ring(struct be_ctrl_info *ctrl)
76515 -{
76516 - int status;
76517 - u16 compl_status, extd_status;
76518 - u32 val = 0;
76519 - void __iomem *db = ctrl->db + MPU_MAILBOX_DB_OFFSET;
76520 - struct be_dma_mem *mbox_mem = &ctrl->mbox_mem;
76521 - struct be_mcc_mailbox *mbox = mbox_mem->va;
76522 - struct be_mcc_cq_entry *cqe = &mbox->cqe;
76523 -
76524 - memset(cqe, 0, sizeof(*cqe));
76525 -
76526 - val &= ~MPU_MAILBOX_DB_RDY_MASK;
76527 - val |= MPU_MAILBOX_DB_HI_MASK;
76528 - /* at bits 2 - 31 place mbox dma addr msb bits 34 - 63 */
76529 - val |= (upper_32_bits(mbox_mem->dma) >> 2) << 2;
76530 - iowrite32(val, db);
76531 -
76532 - /* wait for ready to be set */
76533 - status = be_mbox_db_ready_wait(db);
76534 - if (status != 0)
76535 - return status;
76536 -
76537 - val = 0;
76538 - val &= ~MPU_MAILBOX_DB_RDY_MASK;
76539 - val &= ~MPU_MAILBOX_DB_HI_MASK;
76540 - /* at bits 2 - 31 place mbox dma addr lsb bits 4 - 33 */
76541 - val |= (u32)(mbox_mem->dma >> 4) << 2;
76542 - iowrite32(val, db);
76543 -
76544 - status = be_mbox_db_ready_wait(db);
76545 - if (status != 0)
76546 - return status;
76547 -
76548 - /* compl entry has been made now */
76549 - be_dws_le_to_cpu(cqe, sizeof(*cqe));
76550 - if (!(cqe->flags & CQE_FLAGS_VALID_MASK)) {
76551 - printk(KERN_WARNING DRV_NAME ": ERROR invalid mbox compl\n");
76552 - return -1;
76553 - }
76554 -
76555 - compl_status = (cqe->status >> CQE_STATUS_COMPL_SHIFT) &
76556 - CQE_STATUS_COMPL_MASK;
76557 - if (compl_status != MCC_STATUS_SUCCESS) {
76558 - extd_status = (cqe->status >> CQE_STATUS_EXTD_SHIFT) &
76559 - CQE_STATUS_EXTD_MASK;
76560 - printk(KERN_WARNING DRV_NAME
76561 - ": ERROR in cmd compl. status(compl/extd)=%d/%d\n",
76562 - compl_status, extd_status);
76563 - }
76564 -
76565 - return compl_status;
76566 -}
76567 -
76568 -static int be_POST_stage_get(struct be_ctrl_info *ctrl, u16 *stage)
76569 -{
76570 - u32 sem = ioread32(ctrl->csr + MPU_EP_SEMAPHORE_OFFSET);
76571 -
76572 - *stage = sem & EP_SEMAPHORE_POST_STAGE_MASK;
76573 - if ((sem >> EP_SEMAPHORE_POST_ERR_SHIFT) & EP_SEMAPHORE_POST_ERR_MASK)
76574 - return -1;
76575 - else
76576 - return 0;
76577 -}
76578 -
76579 -static int be_POST_stage_poll(struct be_ctrl_info *ctrl, u16 poll_stage)
76580 -{
76581 - u16 stage, cnt, error;
76582 - for (cnt = 0; cnt < 5000; cnt++) {
76583 - error = be_POST_stage_get(ctrl, &stage);
76584 - if (error)
76585 - return -1;
76586 -
76587 - if (stage == poll_stage)
76588 - break;
76589 - udelay(1000);
76590 - }
76591 - if (stage != poll_stage)
76592 - return -1;
76593 - return 0;
76594 -}
76595 -
76596 -
76597 -int be_cmd_POST(struct be_ctrl_info *ctrl)
76598 -{
76599 - u16 stage, error;
76600 -
76601 - error = be_POST_stage_get(ctrl, &stage);
76602 - if (error)
76603 - goto err;
76604 -
76605 - if (stage == POST_STAGE_ARMFW_RDY)
76606 - return 0;
76607 -
76608 - if (stage != POST_STAGE_AWAITING_HOST_RDY)
76609 - goto err;
76610 -
76611 - /* On awaiting host rdy, reset and again poll on awaiting host rdy */
76612 - iowrite32(POST_STAGE_BE_RESET, ctrl->csr + MPU_EP_SEMAPHORE_OFFSET);
76613 - error = be_POST_stage_poll(ctrl, POST_STAGE_AWAITING_HOST_RDY);
76614 - if (error)
76615 - goto err;
76616 -
76617 - /* Now kickoff POST and poll on armfw ready */
76618 - iowrite32(POST_STAGE_HOST_RDY, ctrl->csr + MPU_EP_SEMAPHORE_OFFSET);
76619 - error = be_POST_stage_poll(ctrl, POST_STAGE_ARMFW_RDY);
76620 - if (error)
76621 - goto err;
76622 -
76623 - return 0;
76624 -err:
76625 - printk(KERN_WARNING DRV_NAME ": ERROR, stage=%d\n", stage);
76626 - return -1;
76627 -}
76628 -
76629 -static inline void *embedded_payload(struct be_mcc_wrb *wrb)
76630 -{
76631 - return wrb->payload.embedded_payload;
76632 -}
76633 -
76634 -static inline struct be_sge *nonembedded_sgl(struct be_mcc_wrb *wrb)
76635 -{
76636 - return &wrb->payload.sgl[0];
76637 -}
76638 -
76639 -/* Don't touch the hdr after it's prepared */
76640 -static void be_wrb_hdr_prepare(struct be_mcc_wrb *wrb, int payload_len,
76641 - bool embedded, u8 sge_cnt)
76642 -{
76643 - if (embedded)
76644 - wrb->embedded |= MCC_WRB_EMBEDDED_MASK;
76645 - else
76646 - wrb->embedded |= (sge_cnt & MCC_WRB_SGE_CNT_MASK) <<
76647 - MCC_WRB_SGE_CNT_SHIFT;
76648 - wrb->payload_length = payload_len;
76649 - be_dws_cpu_to_le(wrb, 20);
76650 -}
76651 -
76652 -/* Don't touch the hdr after it's prepared */
76653 -static void be_cmd_hdr_prepare(struct be_cmd_req_hdr *req_hdr,
76654 - u8 subsystem, u8 opcode, int cmd_len)
76655 -{
76656 - req_hdr->opcode = opcode;
76657 - req_hdr->subsystem = subsystem;
76658 - req_hdr->request_length = cpu_to_le32(cmd_len - sizeof(*req_hdr));
76659 -}
76660 -
76661 -static void be_cmd_page_addrs_prepare(struct phys_addr *pages, u32 max_pages,
76662 - struct be_dma_mem *mem)
76663 -{
76664 - int i, buf_pages = min(PAGES_4K_SPANNED(mem->va, mem->size), max_pages);
76665 - u64 dma = (u64)mem->dma;
76666 -
76667 - for (i = 0; i < buf_pages; i++) {
76668 - pages[i].lo = cpu_to_le32(dma & 0xFFFFFFFF);
76669 - pages[i].hi = cpu_to_le32(upper_32_bits(dma));
76670 - dma += PAGE_SIZE_4K;
76671 - }
76672 -}
76673 -
76674 -/* Converts interrupt delay in microseconds to multiplier value */
76675 -static u32 eq_delay_to_mult(u32 usec_delay)
76676 -{
76677 -#define MAX_INTR_RATE 651042
76678 - const u32 round = 10;
76679 - u32 multiplier;
76680 -
76681 - if (usec_delay == 0)
76682 - multiplier = 0;
76683 - else {
76684 - u32 interrupt_rate = 1000000 / usec_delay;
76685 - /* Max delay, corresponding to the lowest interrupt rate */
76686 - if (interrupt_rate == 0)
76687 - multiplier = 1023;
76688 - else {
76689 - multiplier = (MAX_INTR_RATE - interrupt_rate) * round;
76690 - multiplier /= interrupt_rate;
76691 - /* Round the multiplier to the closest value.*/
76692 - multiplier = (multiplier + round/2) / round;
76693 - multiplier = min(multiplier, (u32)1023);
76694 - }
76695 - }
76696 - return multiplier;
76697 -}
76698 -
76699 -static inline struct be_mcc_wrb *wrb_from_mbox(struct be_dma_mem *mbox_mem)
76700 -{
76701 - return &((struct be_mcc_mailbox *)(mbox_mem->va))->wrb;
76702 -}
76703 -
76704 -int be_cmd_eq_create(struct be_ctrl_info *ctrl,
76705 - struct be_queue_info *eq, int eq_delay)
76706 -{
76707 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76708 - struct be_cmd_req_eq_create *req = embedded_payload(wrb);
76709 - struct be_cmd_resp_eq_create *resp = embedded_payload(wrb);
76710 - struct be_dma_mem *q_mem = &eq->dma_mem;
76711 - int status;
76712 -
76713 - spin_lock(&ctrl->cmd_lock);
76714 - memset(wrb, 0, sizeof(*wrb));
76715 -
76716 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76717 -
76718 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
76719 - OPCODE_COMMON_EQ_CREATE, sizeof(*req));
76720 -
76721 - req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
76722 -
76723 - AMAP_SET_BITS(struct amap_eq_context, func, req->context,
76724 - ctrl->pci_func);
76725 - AMAP_SET_BITS(struct amap_eq_context, valid, req->context, 1);
76726 - /* 4byte eqe*/
76727 - AMAP_SET_BITS(struct amap_eq_context, size, req->context, 0);
76728 - AMAP_SET_BITS(struct amap_eq_context, count, req->context,
76729 - __ilog2_u32(eq->len/256));
76730 - AMAP_SET_BITS(struct amap_eq_context, delaymult, req->context,
76731 - eq_delay_to_mult(eq_delay));
76732 - be_dws_cpu_to_le(req->context, sizeof(req->context));
76733 -
76734 - be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem);
76735 -
76736 - status = be_mbox_db_ring(ctrl);
76737 - if (!status) {
76738 - eq->id = le16_to_cpu(resp->eq_id);
76739 - eq->created = true;
76740 - }
76741 - spin_unlock(&ctrl->cmd_lock);
76742 - return status;
76743 -}
76744 -
76745 -int be_cmd_mac_addr_query(struct be_ctrl_info *ctrl, u8 *mac_addr,
76746 - u8 type, bool permanent, u32 if_handle)
76747 -{
76748 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76749 - struct be_cmd_req_mac_query *req = embedded_payload(wrb);
76750 - struct be_cmd_resp_mac_query *resp = embedded_payload(wrb);
76751 - int status;
76752 -
76753 - spin_lock(&ctrl->cmd_lock);
76754 - memset(wrb, 0, sizeof(*wrb));
76755 -
76756 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76757 -
76758 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
76759 - OPCODE_COMMON_NTWK_MAC_QUERY, sizeof(*req));
76760 -
76761 - req->type = type;
76762 - if (permanent) {
76763 - req->permanent = 1;
76764 - } else {
76765 - req->if_id = cpu_to_le16((u16)if_handle);
76766 - req->permanent = 0;
76767 - }
76768 -
76769 - status = be_mbox_db_ring(ctrl);
76770 - if (!status)
76771 - memcpy(mac_addr, resp->mac.addr, ETH_ALEN);
76772 -
76773 - spin_unlock(&ctrl->cmd_lock);
76774 - return status;
76775 -}
76776 -
76777 -int be_cmd_pmac_add(struct be_ctrl_info *ctrl, u8 *mac_addr,
76778 - u32 if_id, u32 *pmac_id)
76779 -{
76780 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76781 - struct be_cmd_req_pmac_add *req = embedded_payload(wrb);
76782 - int status;
76783 -
76784 - spin_lock(&ctrl->cmd_lock);
76785 - memset(wrb, 0, sizeof(*wrb));
76786 -
76787 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76788 -
76789 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
76790 - OPCODE_COMMON_NTWK_PMAC_ADD, sizeof(*req));
76791 -
76792 - req->if_id = cpu_to_le32(if_id);
76793 - memcpy(req->mac_address, mac_addr, ETH_ALEN);
76794 -
76795 - status = be_mbox_db_ring(ctrl);
76796 - if (!status) {
76797 - struct be_cmd_resp_pmac_add *resp = embedded_payload(wrb);
76798 - *pmac_id = le32_to_cpu(resp->pmac_id);
76799 - }
76800 -
76801 - spin_unlock(&ctrl->cmd_lock);
76802 - return status;
76803 -}
76804 -
76805 -int be_cmd_pmac_del(struct be_ctrl_info *ctrl, u32 if_id, u32 pmac_id)
76806 -{
76807 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76808 - struct be_cmd_req_pmac_del *req = embedded_payload(wrb);
76809 - int status;
76810 -
76811 - spin_lock(&ctrl->cmd_lock);
76812 - memset(wrb, 0, sizeof(*wrb));
76813 -
76814 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76815 -
76816 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
76817 - OPCODE_COMMON_NTWK_PMAC_DEL, sizeof(*req));
76818 -
76819 - req->if_id = cpu_to_le32(if_id);
76820 - req->pmac_id = cpu_to_le32(pmac_id);
76821 -
76822 - status = be_mbox_db_ring(ctrl);
76823 - spin_unlock(&ctrl->cmd_lock);
76824 -
76825 - return status;
76826 -}
76827 -
76828 -int be_cmd_cq_create(struct be_ctrl_info *ctrl,
76829 - struct be_queue_info *cq, struct be_queue_info *eq,
76830 - bool sol_evts, bool no_delay, int coalesce_wm)
76831 -{
76832 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76833 - struct be_cmd_req_cq_create *req = embedded_payload(wrb);
76834 - struct be_cmd_resp_cq_create *resp = embedded_payload(wrb);
76835 - struct be_dma_mem *q_mem = &cq->dma_mem;
76836 - void *ctxt = &req->context;
76837 - int status;
76838 -
76839 - spin_lock(&ctrl->cmd_lock);
76840 - memset(wrb, 0, sizeof(*wrb));
76841 -
76842 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76843 -
76844 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
76845 - OPCODE_COMMON_CQ_CREATE, sizeof(*req));
76846 -
76847 - req->num_pages = cpu_to_le16(PAGES_4K_SPANNED(q_mem->va, q_mem->size));
76848 -
76849 - AMAP_SET_BITS(struct amap_cq_context, coalescwm, ctxt, coalesce_wm);
76850 - AMAP_SET_BITS(struct amap_cq_context, nodelay, ctxt, no_delay);
76851 - AMAP_SET_BITS(struct amap_cq_context, count, ctxt,
76852 - __ilog2_u32(cq->len/256));
76853 - AMAP_SET_BITS(struct amap_cq_context, valid, ctxt, 1);
76854 - AMAP_SET_BITS(struct amap_cq_context, solevent, ctxt, sol_evts);
76855 - AMAP_SET_BITS(struct amap_cq_context, eventable, ctxt, 1);
76856 - AMAP_SET_BITS(struct amap_cq_context, eqid, ctxt, eq->id);
76857 - AMAP_SET_BITS(struct amap_cq_context, armed, ctxt, 0);
76858 - AMAP_SET_BITS(struct amap_cq_context, func, ctxt, ctrl->pci_func);
76859 - be_dws_cpu_to_le(ctxt, sizeof(req->context));
76860 -
76861 - be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem);
76862 -
76863 - status = be_mbox_db_ring(ctrl);
76864 - if (!status) {
76865 - cq->id = le16_to_cpu(resp->cq_id);
76866 - cq->created = true;
76867 - }
76868 - spin_unlock(&ctrl->cmd_lock);
76869 -
76870 - return status;
76871 -}
76872 -
76873 -int be_cmd_txq_create(struct be_ctrl_info *ctrl,
76874 - struct be_queue_info *txq,
76875 - struct be_queue_info *cq)
76876 -{
76877 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76878 - struct be_cmd_req_eth_tx_create *req = embedded_payload(wrb);
76879 - struct be_dma_mem *q_mem = &txq->dma_mem;
76880 - void *ctxt = &req->context;
76881 - int status;
76882 - u32 len_encoded;
76883 -
76884 - spin_lock(&ctrl->cmd_lock);
76885 - memset(wrb, 0, sizeof(*wrb));
76886 -
76887 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76888 -
76889 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH, OPCODE_ETH_TX_CREATE,
76890 - sizeof(*req));
76891 -
76892 - req->num_pages = PAGES_4K_SPANNED(q_mem->va, q_mem->size);
76893 - req->ulp_num = BE_ULP1_NUM;
76894 - req->type = BE_ETH_TX_RING_TYPE_STANDARD;
76895 -
76896 - len_encoded = fls(txq->len); /* log2(len) + 1 */
76897 - if (len_encoded == 16)
76898 - len_encoded = 0;
76899 - AMAP_SET_BITS(struct amap_tx_context, tx_ring_size, ctxt, len_encoded);
76900 - AMAP_SET_BITS(struct amap_tx_context, pci_func_id, ctxt,
76901 - ctrl->pci_func);
76902 - AMAP_SET_BITS(struct amap_tx_context, ctx_valid, ctxt, 1);
76903 - AMAP_SET_BITS(struct amap_tx_context, cq_id_send, ctxt, cq->id);
76904 -
76905 - be_dws_cpu_to_le(ctxt, sizeof(req->context));
76906 -
76907 - be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem);
76908 -
76909 - status = be_mbox_db_ring(ctrl);
76910 - if (!status) {
76911 - struct be_cmd_resp_eth_tx_create *resp = embedded_payload(wrb);
76912 - txq->id = le16_to_cpu(resp->cid);
76913 - txq->created = true;
76914 - }
76915 - spin_unlock(&ctrl->cmd_lock);
76916 -
76917 - return status;
76918 -}
76919 -
76920 -int be_cmd_rxq_create(struct be_ctrl_info *ctrl,
76921 - struct be_queue_info *rxq, u16 cq_id, u16 frag_size,
76922 - u16 max_frame_size, u32 if_id, u32 rss)
76923 -{
76924 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76925 - struct be_cmd_req_eth_rx_create *req = embedded_payload(wrb);
76926 - struct be_dma_mem *q_mem = &rxq->dma_mem;
76927 - int status;
76928 -
76929 - spin_lock(&ctrl->cmd_lock);
76930 - memset(wrb, 0, sizeof(*wrb));
76931 -
76932 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76933 -
76934 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH, OPCODE_ETH_RX_CREATE,
76935 - sizeof(*req));
76936 -
76937 - req->cq_id = cpu_to_le16(cq_id);
76938 - req->frag_size = fls(frag_size) - 1;
76939 - req->num_pages = 2;
76940 - be_cmd_page_addrs_prepare(req->pages, ARRAY_SIZE(req->pages), q_mem);
76941 - req->interface_id = cpu_to_le32(if_id);
76942 - req->max_frame_size = cpu_to_le16(max_frame_size);
76943 - req->rss_queue = cpu_to_le32(rss);
76944 -
76945 - status = be_mbox_db_ring(ctrl);
76946 - if (!status) {
76947 - struct be_cmd_resp_eth_rx_create *resp = embedded_payload(wrb);
76948 - rxq->id = le16_to_cpu(resp->id);
76949 - rxq->created = true;
76950 - }
76951 - spin_unlock(&ctrl->cmd_lock);
76952 -
76953 - return status;
76954 -}
76955 -
76956 -/* Generic destroyer function for all types of queues */
76957 -int be_cmd_q_destroy(struct be_ctrl_info *ctrl, struct be_queue_info *q,
76958 - int queue_type)
76959 -{
76960 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
76961 - struct be_cmd_req_q_destroy *req = embedded_payload(wrb);
76962 - u8 subsys = 0, opcode = 0;
76963 - int status;
76964 -
76965 - spin_lock(&ctrl->cmd_lock);
76966 -
76967 - memset(wrb, 0, sizeof(*wrb));
76968 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
76969 -
76970 - switch (queue_type) {
76971 - case QTYPE_EQ:
76972 - subsys = CMD_SUBSYSTEM_COMMON;
76973 - opcode = OPCODE_COMMON_EQ_DESTROY;
76974 - break;
76975 - case QTYPE_CQ:
76976 - subsys = CMD_SUBSYSTEM_COMMON;
76977 - opcode = OPCODE_COMMON_CQ_DESTROY;
76978 - break;
76979 - case QTYPE_TXQ:
76980 - subsys = CMD_SUBSYSTEM_ETH;
76981 - opcode = OPCODE_ETH_TX_DESTROY;
76982 - break;
76983 - case QTYPE_RXQ:
76984 - subsys = CMD_SUBSYSTEM_ETH;
76985 - opcode = OPCODE_ETH_RX_DESTROY;
76986 - break;
76987 - default:
76988 - printk(KERN_WARNING DRV_NAME ":bad Q type in Q destroy cmd\n");
76989 - status = -1;
76990 - goto err;
76991 - }
76992 - be_cmd_hdr_prepare(&req->hdr, subsys, opcode, sizeof(*req));
76993 - req->id = cpu_to_le16(q->id);
76994 -
76995 - status = be_mbox_db_ring(ctrl);
76996 -err:
76997 - spin_unlock(&ctrl->cmd_lock);
76998 -
76999 - return status;
77000 -}
77001 -
77002 -/* Create an rx filtering policy configuration on an i/f */
77003 -int be_cmd_if_create(struct be_ctrl_info *ctrl, u32 flags, u8 *mac,
77004 - bool pmac_invalid, u32 *if_handle, u32 *pmac_id)
77005 -{
77006 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77007 - struct be_cmd_req_if_create *req = embedded_payload(wrb);
77008 - int status;
77009 -
77010 - spin_lock(&ctrl->cmd_lock);
77011 - memset(wrb, 0, sizeof(*wrb));
77012 -
77013 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77014 -
77015 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77016 - OPCODE_COMMON_NTWK_INTERFACE_CREATE, sizeof(*req));
77017 -
77018 - req->capability_flags = cpu_to_le32(flags);
77019 - req->enable_flags = cpu_to_le32(flags);
77020 - if (!pmac_invalid)
77021 - memcpy(req->mac_addr, mac, ETH_ALEN);
77022 -
77023 - status = be_mbox_db_ring(ctrl);
77024 - if (!status) {
77025 - struct be_cmd_resp_if_create *resp = embedded_payload(wrb);
77026 - *if_handle = le32_to_cpu(resp->interface_id);
77027 - if (!pmac_invalid)
77028 - *pmac_id = le32_to_cpu(resp->pmac_id);
77029 - }
77030 -
77031 - spin_unlock(&ctrl->cmd_lock);
77032 - return status;
77033 -}
77034 -
77035 -int be_cmd_if_destroy(struct be_ctrl_info *ctrl, u32 interface_id)
77036 -{
77037 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77038 - struct be_cmd_req_if_destroy *req = embedded_payload(wrb);
77039 - int status;
77040 -
77041 - spin_lock(&ctrl->cmd_lock);
77042 - memset(wrb, 0, sizeof(*wrb));
77043 -
77044 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77045 -
77046 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77047 - OPCODE_COMMON_NTWK_INTERFACE_DESTROY, sizeof(*req));
77048 -
77049 - req->interface_id = cpu_to_le32(interface_id);
77050 - status = be_mbox_db_ring(ctrl);
77051 -
77052 - spin_unlock(&ctrl->cmd_lock);
77053 -
77054 - return status;
77055 -}
77056 -
77057 -/* Get stats is a non embedded command: the request is not embedded inside
77058 - * WRB but is a separate dma memory block
77059 - */
77060 -int be_cmd_get_stats(struct be_ctrl_info *ctrl, struct be_dma_mem *nonemb_cmd)
77061 -{
77062 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77063 - struct be_cmd_req_get_stats *req = nonemb_cmd->va;
77064 - struct be_sge *sge = nonembedded_sgl(wrb);
77065 - int status;
77066 -
77067 - spin_lock(&ctrl->cmd_lock);
77068 - memset(wrb, 0, sizeof(*wrb));
77069 -
77070 - memset(req, 0, sizeof(*req));
77071 -
77072 - be_wrb_hdr_prepare(wrb, sizeof(*req), false, 1);
77073 -
77074 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH,
77075 - OPCODE_ETH_GET_STATISTICS, sizeof(*req));
77076 - sge->pa_hi = cpu_to_le32(upper_32_bits(nonemb_cmd->dma));
77077 - sge->pa_lo = cpu_to_le32(nonemb_cmd->dma & 0xFFFFFFFF);
77078 - sge->len = cpu_to_le32(nonemb_cmd->size);
77079 -
77080 - status = be_mbox_db_ring(ctrl);
77081 - if (!status) {
77082 - struct be_cmd_resp_get_stats *resp = nonemb_cmd->va;
77083 - be_dws_le_to_cpu(&resp->hw_stats, sizeof(resp->hw_stats));
77084 - }
77085 -
77086 - spin_unlock(&ctrl->cmd_lock);
77087 - return status;
77088 -}
77089 -
77090 -int be_cmd_link_status_query(struct be_ctrl_info *ctrl,
77091 - struct be_link_info *link)
77092 -{
77093 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77094 - struct be_cmd_req_link_status *req = embedded_payload(wrb);
77095 - int status;
77096 -
77097 - spin_lock(&ctrl->cmd_lock);
77098 - memset(wrb, 0, sizeof(*wrb));
77099 -
77100 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77101 -
77102 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77103 - OPCODE_COMMON_NTWK_LINK_STATUS_QUERY, sizeof(*req));
77104 -
77105 - status = be_mbox_db_ring(ctrl);
77106 - if (!status) {
77107 - struct be_cmd_resp_link_status *resp = embedded_payload(wrb);
77108 - link->speed = resp->mac_speed;
77109 - link->duplex = resp->mac_duplex;
77110 - link->fault = resp->mac_fault;
77111 - } else {
77112 - link->speed = PHY_LINK_SPEED_ZERO;
77113 - }
77114 -
77115 - spin_unlock(&ctrl->cmd_lock);
77116 - return status;
77117 -}
77118 -
77119 -int be_cmd_get_fw_ver(struct be_ctrl_info *ctrl, char *fw_ver)
77120 -{
77121 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77122 - struct be_cmd_req_get_fw_version *req = embedded_payload(wrb);
77123 - int status;
77124 -
77125 - spin_lock(&ctrl->cmd_lock);
77126 - memset(wrb, 0, sizeof(*wrb));
77127 -
77128 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77129 -
77130 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77131 - OPCODE_COMMON_GET_FW_VERSION, sizeof(*req));
77132 -
77133 - status = be_mbox_db_ring(ctrl);
77134 - if (!status) {
77135 - struct be_cmd_resp_get_fw_version *resp = embedded_payload(wrb);
77136 - strncpy(fw_ver, resp->firmware_version_string, FW_VER_LEN);
77137 - }
77138 -
77139 - spin_unlock(&ctrl->cmd_lock);
77140 - return status;
77141 -}
77142 -
77143 -/* set the EQ delay interval of an EQ to specified value */
77144 -int be_cmd_modify_eqd(struct be_ctrl_info *ctrl, u32 eq_id, u32 eqd)
77145 -{
77146 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77147 - struct be_cmd_req_modify_eq_delay *req = embedded_payload(wrb);
77148 - int status;
77149 -
77150 - spin_lock(&ctrl->cmd_lock);
77151 - memset(wrb, 0, sizeof(*wrb));
77152 -
77153 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77154 -
77155 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77156 - OPCODE_COMMON_MODIFY_EQ_DELAY, sizeof(*req));
77157 -
77158 - req->num_eq = cpu_to_le32(1);
77159 - req->delay[0].eq_id = cpu_to_le32(eq_id);
77160 - req->delay[0].phase = 0;
77161 - req->delay[0].delay_multiplier = cpu_to_le32(eqd);
77162 -
77163 - status = be_mbox_db_ring(ctrl);
77164 -
77165 - spin_unlock(&ctrl->cmd_lock);
77166 - return status;
77167 -}
77168 -
77169 -int be_cmd_vlan_config(struct be_ctrl_info *ctrl, u32 if_id, u16 *vtag_array,
77170 - u32 num, bool untagged, bool promiscuous)
77171 -{
77172 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77173 - struct be_cmd_req_vlan_config *req = embedded_payload(wrb);
77174 - int status;
77175 -
77176 - spin_lock(&ctrl->cmd_lock);
77177 - memset(wrb, 0, sizeof(*wrb));
77178 -
77179 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77180 -
77181 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77182 - OPCODE_COMMON_NTWK_VLAN_CONFIG, sizeof(*req));
77183 -
77184 - req->interface_id = if_id;
77185 - req->promiscuous = promiscuous;
77186 - req->untagged = untagged;
77187 - req->num_vlan = num;
77188 - if (!promiscuous) {
77189 - memcpy(req->normal_vlan, vtag_array,
77190 - req->num_vlan * sizeof(vtag_array[0]));
77191 - }
77192 -
77193 - status = be_mbox_db_ring(ctrl);
77194 -
77195 - spin_unlock(&ctrl->cmd_lock);
77196 - return status;
77197 -}
77198 -
77199 -int be_cmd_promiscuous_config(struct be_ctrl_info *ctrl, u8 port_num, bool en)
77200 -{
77201 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77202 - struct be_cmd_req_promiscuous_config *req = embedded_payload(wrb);
77203 - int status;
77204 -
77205 - spin_lock(&ctrl->cmd_lock);
77206 - memset(wrb, 0, sizeof(*wrb));
77207 -
77208 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77209 -
77210 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_ETH,
77211 - OPCODE_ETH_PROMISCUOUS, sizeof(*req));
77212 -
77213 - if (port_num)
77214 - req->port1_promiscuous = en;
77215 - else
77216 - req->port0_promiscuous = en;
77217 -
77218 - status = be_mbox_db_ring(ctrl);
77219 -
77220 - spin_unlock(&ctrl->cmd_lock);
77221 - return status;
77222 -}
77223 -
77224 -int be_cmd_mcast_mac_set(struct be_ctrl_info *ctrl, u32 if_id, u8 *mac_table,
77225 - u32 num, bool promiscuous)
77226 -{
77227 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77228 - struct be_cmd_req_mcast_mac_config *req = embedded_payload(wrb);
77229 - int status;
77230 -
77231 - spin_lock(&ctrl->cmd_lock);
77232 - memset(wrb, 0, sizeof(*wrb));
77233 -
77234 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77235 -
77236 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77237 - OPCODE_COMMON_NTWK_MULTICAST_SET, sizeof(*req));
77238 -
77239 - req->interface_id = if_id;
77240 - req->promiscuous = promiscuous;
77241 - if (!promiscuous) {
77242 - req->num_mac = cpu_to_le16(num);
77243 - if (num)
77244 - memcpy(req->mac, mac_table, ETH_ALEN * num);
77245 - }
77246 -
77247 - status = be_mbox_db_ring(ctrl);
77248 -
77249 - spin_unlock(&ctrl->cmd_lock);
77250 - return status;
77251 -}
77252 -
77253 -int be_cmd_set_flow_control(struct be_ctrl_info *ctrl, u32 tx_fc, u32 rx_fc)
77254 -{
77255 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77256 - struct be_cmd_req_set_flow_control *req = embedded_payload(wrb);
77257 - int status;
77258 -
77259 - spin_lock(&ctrl->cmd_lock);
77260 -
77261 - memset(wrb, 0, sizeof(*wrb));
77262 -
77263 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77264 -
77265 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77266 - OPCODE_COMMON_SET_FLOW_CONTROL, sizeof(*req));
77267 -
77268 - req->tx_flow_control = cpu_to_le16((u16)tx_fc);
77269 - req->rx_flow_control = cpu_to_le16((u16)rx_fc);
77270 -
77271 - status = be_mbox_db_ring(ctrl);
77272 -
77273 - spin_unlock(&ctrl->cmd_lock);
77274 - return status;
77275 -}
77276 -
77277 -int be_cmd_get_flow_control(struct be_ctrl_info *ctrl, u32 *tx_fc, u32 *rx_fc)
77278 -{
77279 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77280 - struct be_cmd_req_get_flow_control *req = embedded_payload(wrb);
77281 - int status;
77282 -
77283 - spin_lock(&ctrl->cmd_lock);
77284 -
77285 - memset(wrb, 0, sizeof(*wrb));
77286 -
77287 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77288 -
77289 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77290 - OPCODE_COMMON_GET_FLOW_CONTROL, sizeof(*req));
77291 -
77292 - status = be_mbox_db_ring(ctrl);
77293 - if (!status) {
77294 - struct be_cmd_resp_get_flow_control *resp =
77295 - embedded_payload(wrb);
77296 - *tx_fc = le16_to_cpu(resp->tx_flow_control);
77297 - *rx_fc = le16_to_cpu(resp->rx_flow_control);
77298 - }
77299 -
77300 - spin_unlock(&ctrl->cmd_lock);
77301 - return status;
77302 -}
77303 -
77304 -int be_cmd_query_fw_cfg(struct be_ctrl_info *ctrl, u32 *port_num)
77305 -{
77306 - struct be_mcc_wrb *wrb = wrb_from_mbox(&ctrl->mbox_mem);
77307 - struct be_cmd_req_query_fw_cfg *req = embedded_payload(wrb);
77308 - int status;
77309 -
77310 - spin_lock(&ctrl->cmd_lock);
77311 -
77312 - memset(wrb, 0, sizeof(*wrb));
77313 -
77314 - be_wrb_hdr_prepare(wrb, sizeof(*req), true, 0);
77315 -
77316 - be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
77317 - OPCODE_COMMON_QUERY_FIRMWARE_CONFIG, sizeof(*req));
77318 -
77319 - status = be_mbox_db_ring(ctrl);
77320 - if (!status) {
77321 - struct be_cmd_resp_query_fw_cfg *resp = embedded_payload(wrb);
77322 - *port_num = le32_to_cpu(resp->phys_port);
77323 - }
77324 -
77325 - spin_unlock(&ctrl->cmd_lock);
77326 - return status;
77327 -}
77328 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/be_cmds.h linux-2.6.29-rc3.owrt/drivers/net/benet/be_cmds.h
77329 --- linux-2.6.29.owrt/drivers/net/benet/be_cmds.h 2009-05-10 22:04:38.000000000 +0200
77330 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/be_cmds.h 1970-01-01 01:00:00.000000000 +0100
77331 @@ -1,688 +0,0 @@
77332 -/*
77333 - * Copyright (C) 2005 - 2009 ServerEngines
77334 - * All rights reserved.
77335 - *
77336 - * This program is free software; you can redistribute it and/or
77337 - * modify it under the terms of the GNU General Public License version 2
77338 - * as published by the Free Software Foundation. The full GNU General
77339 - * Public License is included in this distribution in the file called COPYING.
77340 - *
77341 - * Contact Information:
77342 - * linux-drivers@serverengines.com
77343 - *
77344 - * ServerEngines
77345 - * 209 N. Fair Oaks Ave
77346 - * Sunnyvale, CA 94085
77347 - */
77348 -
77349 -/*
77350 - * The driver sends configuration and managements command requests to the
77351 - * firmware in the BE. These requests are communicated to the processor
77352 - * using Work Request Blocks (WRBs) submitted to the MCC-WRB ring or via one
77353 - * WRB inside a MAILBOX.
77354 - * The commands are serviced by the ARM processor in the BladeEngine's MPU.
77355 - */
77356 -
77357 -struct be_sge {
77358 - u32 pa_lo;
77359 - u32 pa_hi;
77360 - u32 len;
77361 -};
77362 -
77363 -#define MCC_WRB_EMBEDDED_MASK 1 /* bit 0 of dword 0*/
77364 -#define MCC_WRB_SGE_CNT_SHIFT 3 /* bits 3 - 7 of dword 0 */
77365 -#define MCC_WRB_SGE_CNT_MASK 0x1F /* bits 3 - 7 of dword 0 */
77366 -struct be_mcc_wrb {
77367 - u32 embedded; /* dword 0 */
77368 - u32 payload_length; /* dword 1 */
77369 - u32 tag0; /* dword 2 */
77370 - u32 tag1; /* dword 3 */
77371 - u32 rsvd; /* dword 4 */
77372 - union {
77373 - u8 embedded_payload[236]; /* used by embedded cmds */
77374 - struct be_sge sgl[19]; /* used by non-embedded cmds */
77375 - } payload;
77376 -};
77377 -
77378 -#define CQE_FLAGS_VALID_MASK (1 << 31)
77379 -#define CQE_FLAGS_ASYNC_MASK (1 << 30)
77380 -#define CQE_FLAGS_COMPLETED_MASK (1 << 28)
77381 -#define CQE_FLAGS_CONSUMED_MASK (1 << 27)
77382 -
77383 -/* Completion Status */
77384 -enum {
77385 - MCC_STATUS_SUCCESS = 0x0,
77386 -/* The client does not have sufficient privileges to execute the command */
77387 - MCC_STATUS_INSUFFICIENT_PRIVILEGES = 0x1,
77388 -/* A parameter in the command was invalid. */
77389 - MCC_STATUS_INVALID_PARAMETER = 0x2,
77390 -/* There are insufficient chip resources to execute the command */
77391 - MCC_STATUS_INSUFFICIENT_RESOURCES = 0x3,
77392 -/* The command is completing because the queue was getting flushed */
77393 - MCC_STATUS_QUEUE_FLUSHING = 0x4,
77394 -/* The command is completing with a DMA error */
77395 - MCC_STATUS_DMA_FAILED = 0x5
77396 -};
77397 -
77398 -#define CQE_STATUS_COMPL_MASK 0xFFFF
77399 -#define CQE_STATUS_COMPL_SHIFT 0 /* bits 0 - 15 */
77400 -#define CQE_STATUS_EXTD_MASK 0xFFFF
77401 -#define CQE_STATUS_EXTD_SHIFT 0 /* bits 0 - 15 */
77402 -
77403 -struct be_mcc_cq_entry {
77404 - u32 status; /* dword 0 */
77405 - u32 tag0; /* dword 1 */
77406 - u32 tag1; /* dword 2 */
77407 - u32 flags; /* dword 3 */
77408 -};
77409 -
77410 -struct be_mcc_mailbox {
77411 - struct be_mcc_wrb wrb;
77412 - struct be_mcc_cq_entry cqe;
77413 -};
77414 -
77415 -#define CMD_SUBSYSTEM_COMMON 0x1
77416 -#define CMD_SUBSYSTEM_ETH 0x3
77417 -
77418 -#define OPCODE_COMMON_NTWK_MAC_QUERY 1
77419 -#define OPCODE_COMMON_NTWK_MAC_SET 2
77420 -#define OPCODE_COMMON_NTWK_MULTICAST_SET 3
77421 -#define OPCODE_COMMON_NTWK_VLAN_CONFIG 4
77422 -#define OPCODE_COMMON_NTWK_LINK_STATUS_QUERY 5
77423 -#define OPCODE_COMMON_CQ_CREATE 12
77424 -#define OPCODE_COMMON_EQ_CREATE 13
77425 -#define OPCODE_COMMON_MCC_CREATE 21
77426 -#define OPCODE_COMMON_NTWK_RX_FILTER 34
77427 -#define OPCODE_COMMON_GET_FW_VERSION 35
77428 -#define OPCODE_COMMON_SET_FLOW_CONTROL 36
77429 -#define OPCODE_COMMON_GET_FLOW_CONTROL 37
77430 -#define OPCODE_COMMON_SET_FRAME_SIZE 39
77431 -#define OPCODE_COMMON_MODIFY_EQ_DELAY 41
77432 -#define OPCODE_COMMON_FIRMWARE_CONFIG 42
77433 -#define OPCODE_COMMON_NTWK_INTERFACE_CREATE 50
77434 -#define OPCODE_COMMON_NTWK_INTERFACE_DESTROY 51
77435 -#define OPCODE_COMMON_CQ_DESTROY 54
77436 -#define OPCODE_COMMON_EQ_DESTROY 55
77437 -#define OPCODE_COMMON_QUERY_FIRMWARE_CONFIG 58
77438 -#define OPCODE_COMMON_NTWK_PMAC_ADD 59
77439 -#define OPCODE_COMMON_NTWK_PMAC_DEL 60
77440 -
77441 -#define OPCODE_ETH_ACPI_CONFIG 2
77442 -#define OPCODE_ETH_PROMISCUOUS 3
77443 -#define OPCODE_ETH_GET_STATISTICS 4
77444 -#define OPCODE_ETH_TX_CREATE 7
77445 -#define OPCODE_ETH_RX_CREATE 8
77446 -#define OPCODE_ETH_TX_DESTROY 9
77447 -#define OPCODE_ETH_RX_DESTROY 10
77448 -
77449 -struct be_cmd_req_hdr {
77450 - u8 opcode; /* dword 0 */
77451 - u8 subsystem; /* dword 0 */
77452 - u8 port_number; /* dword 0 */
77453 - u8 domain; /* dword 0 */
77454 - u32 timeout; /* dword 1 */
77455 - u32 request_length; /* dword 2 */
77456 - u32 rsvd; /* dword 3 */
77457 -};
77458 -
77459 -#define RESP_HDR_INFO_OPCODE_SHIFT 0 /* bits 0 - 7 */
77460 -#define RESP_HDR_INFO_SUBSYS_SHIFT 8 /* bits 8 - 15 */
77461 -struct be_cmd_resp_hdr {
77462 - u32 info; /* dword 0 */
77463 - u32 status; /* dword 1 */
77464 - u32 response_length; /* dword 2 */
77465 - u32 actual_resp_len; /* dword 3 */
77466 -};
77467 -
77468 -struct phys_addr {
77469 - u32 lo;
77470 - u32 hi;
77471 -};
77472 -
77473 -/**************************
77474 - * BE Command definitions *
77475 - **************************/
77476 -
77477 -/* Pseudo amap definition in which each bit of the actual structure is defined
77478 - * as a byte: used to calculate offset/shift/mask of each field */
77479 -struct amap_eq_context {
77480 - u8 cidx[13]; /* dword 0*/
77481 - u8 rsvd0[3]; /* dword 0*/
77482 - u8 epidx[13]; /* dword 0*/
77483 - u8 valid; /* dword 0*/
77484 - u8 rsvd1; /* dword 0*/
77485 - u8 size; /* dword 0*/
77486 - u8 pidx[13]; /* dword 1*/
77487 - u8 rsvd2[3]; /* dword 1*/
77488 - u8 pd[10]; /* dword 1*/
77489 - u8 count[3]; /* dword 1*/
77490 - u8 solevent; /* dword 1*/
77491 - u8 stalled; /* dword 1*/
77492 - u8 armed; /* dword 1*/
77493 - u8 rsvd3[4]; /* dword 2*/
77494 - u8 func[8]; /* dword 2*/
77495 - u8 rsvd4; /* dword 2*/
77496 - u8 delaymult[10]; /* dword 2*/
77497 - u8 rsvd5[2]; /* dword 2*/
77498 - u8 phase[2]; /* dword 2*/
77499 - u8 nodelay; /* dword 2*/
77500 - u8 rsvd6[4]; /* dword 2*/
77501 - u8 rsvd7[32]; /* dword 3*/
77502 -} __packed;
77503 -
77504 -struct be_cmd_req_eq_create {
77505 - struct be_cmd_req_hdr hdr;
77506 - u16 num_pages; /* sword */
77507 - u16 rsvd0; /* sword */
77508 - u8 context[sizeof(struct amap_eq_context) / 8];
77509 - struct phys_addr pages[8];
77510 -} __packed;
77511 -
77512 -struct be_cmd_resp_eq_create {
77513 - struct be_cmd_resp_hdr resp_hdr;
77514 - u16 eq_id; /* sword */
77515 - u16 rsvd0; /* sword */
77516 -} __packed;
77517 -
77518 -/******************** Mac query ***************************/
77519 -enum {
77520 - MAC_ADDRESS_TYPE_STORAGE = 0x0,
77521 - MAC_ADDRESS_TYPE_NETWORK = 0x1,
77522 - MAC_ADDRESS_TYPE_PD = 0x2,
77523 - MAC_ADDRESS_TYPE_MANAGEMENT = 0x3
77524 -};
77525 -
77526 -struct mac_addr {
77527 - u16 size_of_struct;
77528 - u8 addr[ETH_ALEN];
77529 -} __packed;
77530 -
77531 -struct be_cmd_req_mac_query {
77532 - struct be_cmd_req_hdr hdr;
77533 - u8 type;
77534 - u8 permanent;
77535 - u16 if_id;
77536 -} __packed;
77537 -
77538 -struct be_cmd_resp_mac_query {
77539 - struct be_cmd_resp_hdr hdr;
77540 - struct mac_addr mac;
77541 -};
77542 -
77543 -/******************** PMac Add ***************************/
77544 -struct be_cmd_req_pmac_add {
77545 - struct be_cmd_req_hdr hdr;
77546 - u32 if_id;
77547 - u8 mac_address[ETH_ALEN];
77548 - u8 rsvd0[2];
77549 -} __packed;
77550 -
77551 -struct be_cmd_resp_pmac_add {
77552 - struct be_cmd_resp_hdr hdr;
77553 - u32 pmac_id;
77554 -};
77555 -
77556 -/******************** PMac Del ***************************/
77557 -struct be_cmd_req_pmac_del {
77558 - struct be_cmd_req_hdr hdr;
77559 - u32 if_id;
77560 - u32 pmac_id;
77561 -};
77562 -
77563 -/******************** Create CQ ***************************/
77564 -/* Pseudo amap definition in which each bit of the actual structure is defined
77565 - * as a byte: used to calculate offset/shift/mask of each field */
77566 -struct amap_cq_context {
77567 - u8 cidx[11]; /* dword 0*/
77568 - u8 rsvd0; /* dword 0*/
77569 - u8 coalescwm[2]; /* dword 0*/
77570 - u8 nodelay; /* dword 0*/
77571 - u8 epidx[11]; /* dword 0*/
77572 - u8 rsvd1; /* dword 0*/
77573 - u8 count[2]; /* dword 0*/
77574 - u8 valid; /* dword 0*/
77575 - u8 solevent; /* dword 0*/
77576 - u8 eventable; /* dword 0*/
77577 - u8 pidx[11]; /* dword 1*/
77578 - u8 rsvd2; /* dword 1*/
77579 - u8 pd[10]; /* dword 1*/
77580 - u8 eqid[8]; /* dword 1*/
77581 - u8 stalled; /* dword 1*/
77582 - u8 armed; /* dword 1*/
77583 - u8 rsvd3[4]; /* dword 2*/
77584 - u8 func[8]; /* dword 2*/
77585 - u8 rsvd4[20]; /* dword 2*/
77586 - u8 rsvd5[32]; /* dword 3*/
77587 -} __packed;
77588 -
77589 -struct be_cmd_req_cq_create {
77590 - struct be_cmd_req_hdr hdr;
77591 - u16 num_pages;
77592 - u16 rsvd0;
77593 - u8 context[sizeof(struct amap_cq_context) / 8];
77594 - struct phys_addr pages[8];
77595 -} __packed;
77596 -
77597 -struct be_cmd_resp_cq_create {
77598 - struct be_cmd_resp_hdr hdr;
77599 - u16 cq_id;
77600 - u16 rsvd0;
77601 -} __packed;
77602 -
77603 -/******************** Create TxQ ***************************/
77604 -#define BE_ETH_TX_RING_TYPE_STANDARD 2
77605 -#define BE_ULP1_NUM 1
77606 -
77607 -/* Pseudo amap definition in which each bit of the actual structure is defined
77608 - * as a byte: used to calculate offset/shift/mask of each field */
77609 -struct amap_tx_context {
77610 - u8 rsvd0[16]; /* dword 0 */
77611 - u8 tx_ring_size[4]; /* dword 0 */
77612 - u8 rsvd1[26]; /* dword 0 */
77613 - u8 pci_func_id[8]; /* dword 1 */
77614 - u8 rsvd2[9]; /* dword 1 */
77615 - u8 ctx_valid; /* dword 1 */
77616 - u8 cq_id_send[16]; /* dword 2 */
77617 - u8 rsvd3[16]; /* dword 2 */
77618 - u8 rsvd4[32]; /* dword 3 */
77619 - u8 rsvd5[32]; /* dword 4 */
77620 - u8 rsvd6[32]; /* dword 5 */
77621 - u8 rsvd7[32]; /* dword 6 */
77622 - u8 rsvd8[32]; /* dword 7 */
77623 - u8 rsvd9[32]; /* dword 8 */
77624 - u8 rsvd10[32]; /* dword 9 */
77625 - u8 rsvd11[32]; /* dword 10 */
77626 - u8 rsvd12[32]; /* dword 11 */
77627 - u8 rsvd13[32]; /* dword 12 */
77628 - u8 rsvd14[32]; /* dword 13 */
77629 - u8 rsvd15[32]; /* dword 14 */
77630 - u8 rsvd16[32]; /* dword 15 */
77631 -} __packed;
77632 -
77633 -struct be_cmd_req_eth_tx_create {
77634 - struct be_cmd_req_hdr hdr;
77635 - u8 num_pages;
77636 - u8 ulp_num;
77637 - u8 type;
77638 - u8 bound_port;
77639 - u8 context[sizeof(struct amap_tx_context) / 8];
77640 - struct phys_addr pages[8];
77641 -} __packed;
77642 -
77643 -struct be_cmd_resp_eth_tx_create {
77644 - struct be_cmd_resp_hdr hdr;
77645 - u16 cid;
77646 - u16 rsvd0;
77647 -} __packed;
77648 -
77649 -/******************** Create RxQ ***************************/
77650 -struct be_cmd_req_eth_rx_create {
77651 - struct be_cmd_req_hdr hdr;
77652 - u16 cq_id;
77653 - u8 frag_size;
77654 - u8 num_pages;
77655 - struct phys_addr pages[2];
77656 - u32 interface_id;
77657 - u16 max_frame_size;
77658 - u16 rsvd0;
77659 - u32 rss_queue;
77660 -} __packed;
77661 -
77662 -struct be_cmd_resp_eth_rx_create {
77663 - struct be_cmd_resp_hdr hdr;
77664 - u16 id;
77665 - u8 cpu_id;
77666 - u8 rsvd0;
77667 -} __packed;
77668 -
77669 -/******************** Q Destroy ***************************/
77670 -/* Type of Queue to be destroyed */
77671 -enum {
77672 - QTYPE_EQ = 1,
77673 - QTYPE_CQ,
77674 - QTYPE_TXQ,
77675 - QTYPE_RXQ
77676 -};
77677 -
77678 -struct be_cmd_req_q_destroy {
77679 - struct be_cmd_req_hdr hdr;
77680 - u16 id;
77681 - u16 bypass_flush; /* valid only for rx q destroy */
77682 -} __packed;
77683 -
77684 -/************ I/f Create (it's actually I/f Config Create)**********/
77685 -
77686 -/* Capability flags for the i/f */
77687 -enum be_if_flags {
77688 - BE_IF_FLAGS_RSS = 0x4,
77689 - BE_IF_FLAGS_PROMISCUOUS = 0x8,
77690 - BE_IF_FLAGS_BROADCAST = 0x10,
77691 - BE_IF_FLAGS_UNTAGGED = 0x20,
77692 - BE_IF_FLAGS_ULP = 0x40,
77693 - BE_IF_FLAGS_VLAN_PROMISCUOUS = 0x80,
77694 - BE_IF_FLAGS_VLAN = 0x100,
77695 - BE_IF_FLAGS_MCAST_PROMISCUOUS = 0x200,
77696 - BE_IF_FLAGS_PASS_L2_ERRORS = 0x400,
77697 - BE_IF_FLAGS_PASS_L3L4_ERRORS = 0x800
77698 -};
77699 -
77700 -/* An RX interface is an object with one or more MAC addresses and
77701 - * filtering capabilities. */
77702 -struct be_cmd_req_if_create {
77703 - struct be_cmd_req_hdr hdr;
77704 - u32 version; /* ignore currntly */
77705 - u32 capability_flags;
77706 - u32 enable_flags;
77707 - u8 mac_addr[ETH_ALEN];
77708 - u8 rsvd0;
77709 - u8 pmac_invalid; /* if set, don't attach the mac addr to the i/f */
77710 - u32 vlan_tag; /* not used currently */
77711 -} __packed;
77712 -
77713 -struct be_cmd_resp_if_create {
77714 - struct be_cmd_resp_hdr hdr;
77715 - u32 interface_id;
77716 - u32 pmac_id;
77717 -};
77718 -
77719 -/****** I/f Destroy(it's actually I/f Config Destroy )**********/
77720 -struct be_cmd_req_if_destroy {
77721 - struct be_cmd_req_hdr hdr;
77722 - u32 interface_id;
77723 -};
77724 -
77725 -/*************** HW Stats Get **********************************/
77726 -struct be_port_rxf_stats {
77727 - u32 rx_bytes_lsd; /* dword 0*/
77728 - u32 rx_bytes_msd; /* dword 1*/
77729 - u32 rx_total_frames; /* dword 2*/
77730 - u32 rx_unicast_frames; /* dword 3*/
77731 - u32 rx_multicast_frames; /* dword 4*/
77732 - u32 rx_broadcast_frames; /* dword 5*/
77733 - u32 rx_crc_errors; /* dword 6*/
77734 - u32 rx_alignment_symbol_errors; /* dword 7*/
77735 - u32 rx_pause_frames; /* dword 8*/
77736 - u32 rx_control_frames; /* dword 9*/
77737 - u32 rx_in_range_errors; /* dword 10*/
77738 - u32 rx_out_range_errors; /* dword 11*/
77739 - u32 rx_frame_too_long; /* dword 12*/
77740 - u32 rx_address_match_errors; /* dword 13*/
77741 - u32 rx_vlan_mismatch; /* dword 14*/
77742 - u32 rx_dropped_too_small; /* dword 15*/
77743 - u32 rx_dropped_too_short; /* dword 16*/
77744 - u32 rx_dropped_header_too_small; /* dword 17*/
77745 - u32 rx_dropped_tcp_length; /* dword 18*/
77746 - u32 rx_dropped_runt; /* dword 19*/
77747 - u32 rx_64_byte_packets; /* dword 20*/
77748 - u32 rx_65_127_byte_packets; /* dword 21*/
77749 - u32 rx_128_256_byte_packets; /* dword 22*/
77750 - u32 rx_256_511_byte_packets; /* dword 23*/
77751 - u32 rx_512_1023_byte_packets; /* dword 24*/
77752 - u32 rx_1024_1518_byte_packets; /* dword 25*/
77753 - u32 rx_1519_2047_byte_packets; /* dword 26*/
77754 - u32 rx_2048_4095_byte_packets; /* dword 27*/
77755 - u32 rx_4096_8191_byte_packets; /* dword 28*/
77756 - u32 rx_8192_9216_byte_packets; /* dword 29*/
77757 - u32 rx_ip_checksum_errs; /* dword 30*/
77758 - u32 rx_tcp_checksum_errs; /* dword 31*/
77759 - u32 rx_udp_checksum_errs; /* dword 32*/
77760 - u32 rx_non_rss_packets; /* dword 33*/
77761 - u32 rx_ipv4_packets; /* dword 34*/
77762 - u32 rx_ipv6_packets; /* dword 35*/
77763 - u32 rx_ipv4_bytes_lsd; /* dword 36*/
77764 - u32 rx_ipv4_bytes_msd; /* dword 37*/
77765 - u32 rx_ipv6_bytes_lsd; /* dword 38*/
77766 - u32 rx_ipv6_bytes_msd; /* dword 39*/
77767 - u32 rx_chute1_packets; /* dword 40*/
77768 - u32 rx_chute2_packets; /* dword 41*/
77769 - u32 rx_chute3_packets; /* dword 42*/
77770 - u32 rx_management_packets; /* dword 43*/
77771 - u32 rx_switched_unicast_packets; /* dword 44*/
77772 - u32 rx_switched_multicast_packets; /* dword 45*/
77773 - u32 rx_switched_broadcast_packets; /* dword 46*/
77774 - u32 tx_bytes_lsd; /* dword 47*/
77775 - u32 tx_bytes_msd; /* dword 48*/
77776 - u32 tx_unicastframes; /* dword 49*/
77777 - u32 tx_multicastframes; /* dword 50*/
77778 - u32 tx_broadcastframes; /* dword 51*/
77779 - u32 tx_pauseframes; /* dword 52*/
77780 - u32 tx_controlframes; /* dword 53*/
77781 - u32 tx_64_byte_packets; /* dword 54*/
77782 - u32 tx_65_127_byte_packets; /* dword 55*/
77783 - u32 tx_128_256_byte_packets; /* dword 56*/
77784 - u32 tx_256_511_byte_packets; /* dword 57*/
77785 - u32 tx_512_1023_byte_packets; /* dword 58*/
77786 - u32 tx_1024_1518_byte_packets; /* dword 59*/
77787 - u32 tx_1519_2047_byte_packets; /* dword 60*/
77788 - u32 tx_2048_4095_byte_packets; /* dword 61*/
77789 - u32 tx_4096_8191_byte_packets; /* dword 62*/
77790 - u32 tx_8192_9216_byte_packets; /* dword 63*/
77791 - u32 rx_fifo_overflow; /* dword 64*/
77792 - u32 rx_input_fifo_overflow; /* dword 65*/
77793 -};
77794 -
77795 -struct be_rxf_stats {
77796 - struct be_port_rxf_stats port[2];
77797 - u32 rx_drops_no_pbuf; /* dword 132*/
77798 - u32 rx_drops_no_txpb; /* dword 133*/
77799 - u32 rx_drops_no_erx_descr; /* dword 134*/
77800 - u32 rx_drops_no_tpre_descr; /* dword 135*/
77801 - u32 management_rx_port_packets; /* dword 136*/
77802 - u32 management_rx_port_bytes; /* dword 137*/
77803 - u32 management_rx_port_pause_frames; /* dword 138*/
77804 - u32 management_rx_port_errors; /* dword 139*/
77805 - u32 management_tx_port_packets; /* dword 140*/
77806 - u32 management_tx_port_bytes; /* dword 141*/
77807 - u32 management_tx_port_pause; /* dword 142*/
77808 - u32 management_rx_port_rxfifo_overflow; /* dword 143*/
77809 - u32 rx_drops_too_many_frags; /* dword 144*/
77810 - u32 rx_drops_invalid_ring; /* dword 145*/
77811 - u32 forwarded_packets; /* dword 146*/
77812 - u32 rx_drops_mtu; /* dword 147*/
77813 - u32 rsvd0[15];
77814 -};
77815 -
77816 -struct be_erx_stats {
77817 - u32 rx_drops_no_fragments[44]; /* dwordS 0 to 43*/
77818 - u32 debug_wdma_sent_hold; /* dword 44*/
77819 - u32 debug_wdma_pbfree_sent_hold; /* dword 45*/
77820 - u32 debug_wdma_zerobyte_pbfree_sent_hold; /* dword 46*/
77821 - u32 debug_pmem_pbuf_dealloc; /* dword 47*/
77822 -};
77823 -
77824 -struct be_hw_stats {
77825 - struct be_rxf_stats rxf;
77826 - u32 rsvd[48];
77827 - struct be_erx_stats erx;
77828 -};
77829 -
77830 -struct be_cmd_req_get_stats {
77831 - struct be_cmd_req_hdr hdr;
77832 - u8 rsvd[sizeof(struct be_hw_stats)];
77833 -};
77834 -
77835 -struct be_cmd_resp_get_stats {
77836 - struct be_cmd_resp_hdr hdr;
77837 - struct be_hw_stats hw_stats;
77838 -};
77839 -
77840 -struct be_cmd_req_vlan_config {
77841 - struct be_cmd_req_hdr hdr;
77842 - u8 interface_id;
77843 - u8 promiscuous;
77844 - u8 untagged;
77845 - u8 num_vlan;
77846 - u16 normal_vlan[64];
77847 -} __packed;
77848 -
77849 -struct be_cmd_req_promiscuous_config {
77850 - struct be_cmd_req_hdr hdr;
77851 - u8 port0_promiscuous;
77852 - u8 port1_promiscuous;
77853 - u16 rsvd0;
77854 -} __packed;
77855 -
77856 -struct macaddr {
77857 - u8 byte[ETH_ALEN];
77858 -};
77859 -
77860 -struct be_cmd_req_mcast_mac_config {
77861 - struct be_cmd_req_hdr hdr;
77862 - u16 num_mac;
77863 - u8 promiscuous;
77864 - u8 interface_id;
77865 - struct macaddr mac[32];
77866 -} __packed;
77867 -
77868 -static inline struct be_hw_stats *
77869 -hw_stats_from_cmd(struct be_cmd_resp_get_stats *cmd)
77870 -{
77871 - return &cmd->hw_stats;
77872 -}
77873 -
77874 -/******************** Link Status Query *******************/
77875 -struct be_cmd_req_link_status {
77876 - struct be_cmd_req_hdr hdr;
77877 - u32 rsvd;
77878 -};
77879 -
77880 -struct be_link_info {
77881 - u8 duplex;
77882 - u8 speed;
77883 - u8 fault;
77884 -};
77885 -
77886 -enum {
77887 - PHY_LINK_DUPLEX_NONE = 0x0,
77888 - PHY_LINK_DUPLEX_HALF = 0x1,
77889 - PHY_LINK_DUPLEX_FULL = 0x2
77890 -};
77891 -
77892 -enum {
77893 - PHY_LINK_SPEED_ZERO = 0x0, /* => No link */
77894 - PHY_LINK_SPEED_10MBPS = 0x1,
77895 - PHY_LINK_SPEED_100MBPS = 0x2,
77896 - PHY_LINK_SPEED_1GBPS = 0x3,
77897 - PHY_LINK_SPEED_10GBPS = 0x4
77898 -};
77899 -
77900 -struct be_cmd_resp_link_status {
77901 - struct be_cmd_resp_hdr hdr;
77902 - u8 physical_port;
77903 - u8 mac_duplex;
77904 - u8 mac_speed;
77905 - u8 mac_fault;
77906 - u8 mgmt_mac_duplex;
77907 - u8 mgmt_mac_speed;
77908 - u16 rsvd0;
77909 -} __packed;
77910 -
77911 -/******************** Get FW Version *******************/
77912 -#define FW_VER_LEN 32
77913 -struct be_cmd_req_get_fw_version {
77914 - struct be_cmd_req_hdr hdr;
77915 - u8 rsvd0[FW_VER_LEN];
77916 - u8 rsvd1[FW_VER_LEN];
77917 -} __packed;
77918 -
77919 -struct be_cmd_resp_get_fw_version {
77920 - struct be_cmd_resp_hdr hdr;
77921 - u8 firmware_version_string[FW_VER_LEN];
77922 - u8 fw_on_flash_version_string[FW_VER_LEN];
77923 -} __packed;
77924 -
77925 -/******************** Set Flow Contrl *******************/
77926 -struct be_cmd_req_set_flow_control {
77927 - struct be_cmd_req_hdr hdr;
77928 - u16 tx_flow_control;
77929 - u16 rx_flow_control;
77930 -} __packed;
77931 -
77932 -/******************** Get Flow Contrl *******************/
77933 -struct be_cmd_req_get_flow_control {
77934 - struct be_cmd_req_hdr hdr;
77935 - u32 rsvd;
77936 -};
77937 -
77938 -struct be_cmd_resp_get_flow_control {
77939 - struct be_cmd_resp_hdr hdr;
77940 - u16 tx_flow_control;
77941 - u16 rx_flow_control;
77942 -} __packed;
77943 -
77944 -/******************** Modify EQ Delay *******************/
77945 -struct be_cmd_req_modify_eq_delay {
77946 - struct be_cmd_req_hdr hdr;
77947 - u32 num_eq;
77948 - struct {
77949 - u32 eq_id;
77950 - u32 phase;
77951 - u32 delay_multiplier;
77952 - } delay[8];
77953 -} __packed;
77954 -
77955 -struct be_cmd_resp_modify_eq_delay {
77956 - struct be_cmd_resp_hdr hdr;
77957 - u32 rsvd0;
77958 -} __packed;
77959 -
77960 -/******************** Get FW Config *******************/
77961 -struct be_cmd_req_query_fw_cfg {
77962 - struct be_cmd_req_hdr hdr;
77963 - u32 rsvd[30];
77964 -};
77965 -
77966 -struct be_cmd_resp_query_fw_cfg {
77967 - struct be_cmd_resp_hdr hdr;
77968 - u32 be_config_number;
77969 - u32 asic_revision;
77970 - u32 phys_port;
77971 - u32 function_mode;
77972 - u32 rsvd[26];
77973 -};
77974 -
77975 -extern int be_pci_fnum_get(struct be_ctrl_info *ctrl);
77976 -extern int be_cmd_POST(struct be_ctrl_info *ctrl);
77977 -extern int be_cmd_mac_addr_query(struct be_ctrl_info *ctrl, u8 *mac_addr,
77978 - u8 type, bool permanent, u32 if_handle);
77979 -extern int be_cmd_pmac_add(struct be_ctrl_info *ctrl, u8 *mac_addr,
77980 - u32 if_id, u32 *pmac_id);
77981 -extern int be_cmd_pmac_del(struct be_ctrl_info *ctrl, u32 if_id, u32 pmac_id);
77982 -extern int be_cmd_if_create(struct be_ctrl_info *ctrl, u32 if_flags, u8 *mac,
77983 - bool pmac_invalid, u32 *if_handle, u32 *pmac_id);
77984 -extern int be_cmd_if_destroy(struct be_ctrl_info *ctrl, u32 if_handle);
77985 -extern int be_cmd_eq_create(struct be_ctrl_info *ctrl,
77986 - struct be_queue_info *eq, int eq_delay);
77987 -extern int be_cmd_cq_create(struct be_ctrl_info *ctrl,
77988 - struct be_queue_info *cq, struct be_queue_info *eq,
77989 - bool sol_evts, bool no_delay,
77990 - int num_cqe_dma_coalesce);
77991 -extern int be_cmd_txq_create(struct be_ctrl_info *ctrl,
77992 - struct be_queue_info *txq,
77993 - struct be_queue_info *cq);
77994 -extern int be_cmd_rxq_create(struct be_ctrl_info *ctrl,
77995 - struct be_queue_info *rxq, u16 cq_id,
77996 - u16 frag_size, u16 max_frame_size, u32 if_id,
77997 - u32 rss);
77998 -extern int be_cmd_q_destroy(struct be_ctrl_info *ctrl, struct be_queue_info *q,
77999 - int type);
78000 -extern int be_cmd_link_status_query(struct be_ctrl_info *ctrl,
78001 - struct be_link_info *link);
78002 -extern int be_cmd_reset(struct be_ctrl_info *ctrl);
78003 -extern int be_cmd_get_stats(struct be_ctrl_info *ctrl,
78004 - struct be_dma_mem *nonemb_cmd);
78005 -extern int be_cmd_get_fw_ver(struct be_ctrl_info *ctrl, char *fw_ver);
78006 -
78007 -extern int be_cmd_modify_eqd(struct be_ctrl_info *ctrl, u32 eq_id, u32 eqd);
78008 -extern int be_cmd_vlan_config(struct be_ctrl_info *ctrl, u32 if_id,
78009 - u16 *vtag_array, u32 num, bool untagged,
78010 - bool promiscuous);
78011 -extern int be_cmd_promiscuous_config(struct be_ctrl_info *ctrl,
78012 - u8 port_num, bool en);
78013 -extern int be_cmd_mcast_mac_set(struct be_ctrl_info *ctrl, u32 if_id,
78014 - u8 *mac_table, u32 num, bool promiscuous);
78015 -extern int be_cmd_set_flow_control(struct be_ctrl_info *ctrl,
78016 - u32 tx_fc, u32 rx_fc);
78017 -extern int be_cmd_get_flow_control(struct be_ctrl_info *ctrl,
78018 - u32 *tx_fc, u32 *rx_fc);
78019 -extern int be_cmd_query_fw_cfg(struct be_ctrl_info *ctrl, u32 *port_num);
78020 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/be_ethtool.c linux-2.6.29-rc3.owrt/drivers/net/benet/be_ethtool.c
78021 --- linux-2.6.29.owrt/drivers/net/benet/be_ethtool.c 2009-05-10 22:04:38.000000000 +0200
78022 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/be_ethtool.c 1970-01-01 01:00:00.000000000 +0100
78023 @@ -1,362 +0,0 @@
78024 -/*
78025 - * Copyright (C) 2005 - 2009 ServerEngines
78026 - * All rights reserved.
78027 - *
78028 - * This program is free software; you can redistribute it and/or
78029 - * modify it under the terms of the GNU General Public License version 2
78030 - * as published by the Free Software Foundation. The full GNU General
78031 - * Public License is included in this distribution in the file called COPYING.
78032 - *
78033 - * Contact Information:
78034 - * linux-drivers@serverengines.com
78035 - *
78036 - * ServerEngines
78037 - * 209 N. Fair Oaks Ave
78038 - * Sunnyvale, CA 94085
78039 - */
78040 -
78041 -#include "be.h"
78042 -#include <linux/ethtool.h>
78043 -
78044 -struct be_ethtool_stat {
78045 - char desc[ETH_GSTRING_LEN];
78046 - int type;
78047 - int size;
78048 - int offset;
78049 -};
78050 -
78051 -enum {NETSTAT, PORTSTAT, MISCSTAT, DRVSTAT, ERXSTAT};
78052 -#define FIELDINFO(_struct, field) FIELD_SIZEOF(_struct, field), \
78053 - offsetof(_struct, field)
78054 -#define NETSTAT_INFO(field) #field, NETSTAT,\
78055 - FIELDINFO(struct net_device_stats,\
78056 - field)
78057 -#define DRVSTAT_INFO(field) #field, DRVSTAT,\
78058 - FIELDINFO(struct be_drvr_stats, field)
78059 -#define MISCSTAT_INFO(field) #field, MISCSTAT,\
78060 - FIELDINFO(struct be_rxf_stats, field)
78061 -#define PORTSTAT_INFO(field) #field, PORTSTAT,\
78062 - FIELDINFO(struct be_port_rxf_stats, \
78063 - field)
78064 -#define ERXSTAT_INFO(field) #field, ERXSTAT,\
78065 - FIELDINFO(struct be_erx_stats, field)
78066 -
78067 -static const struct be_ethtool_stat et_stats[] = {
78068 - {NETSTAT_INFO(rx_packets)},
78069 - {NETSTAT_INFO(tx_packets)},
78070 - {NETSTAT_INFO(rx_bytes)},
78071 - {NETSTAT_INFO(tx_bytes)},
78072 - {NETSTAT_INFO(rx_errors)},
78073 - {NETSTAT_INFO(tx_errors)},
78074 - {NETSTAT_INFO(rx_dropped)},
78075 - {NETSTAT_INFO(tx_dropped)},
78076 - {DRVSTAT_INFO(be_tx_reqs)},
78077 - {DRVSTAT_INFO(be_tx_stops)},
78078 - {DRVSTAT_INFO(be_fwd_reqs)},
78079 - {DRVSTAT_INFO(be_tx_wrbs)},
78080 - {DRVSTAT_INFO(be_polls)},
78081 - {DRVSTAT_INFO(be_tx_events)},
78082 - {DRVSTAT_INFO(be_rx_events)},
78083 - {DRVSTAT_INFO(be_tx_compl)},
78084 - {DRVSTAT_INFO(be_rx_compl)},
78085 - {DRVSTAT_INFO(be_ethrx_post_fail)},
78086 - {DRVSTAT_INFO(be_802_3_dropped_frames)},
78087 - {DRVSTAT_INFO(be_802_3_malformed_frames)},
78088 - {DRVSTAT_INFO(be_tx_rate)},
78089 - {DRVSTAT_INFO(be_rx_rate)},
78090 - {PORTSTAT_INFO(rx_unicast_frames)},
78091 - {PORTSTAT_INFO(rx_multicast_frames)},
78092 - {PORTSTAT_INFO(rx_broadcast_frames)},
78093 - {PORTSTAT_INFO(rx_crc_errors)},
78094 - {PORTSTAT_INFO(rx_alignment_symbol_errors)},
78095 - {PORTSTAT_INFO(rx_pause_frames)},
78096 - {PORTSTAT_INFO(rx_control_frames)},
78097 - {PORTSTAT_INFO(rx_in_range_errors)},
78098 - {PORTSTAT_INFO(rx_out_range_errors)},
78099 - {PORTSTAT_INFO(rx_frame_too_long)},
78100 - {PORTSTAT_INFO(rx_address_match_errors)},
78101 - {PORTSTAT_INFO(rx_vlan_mismatch)},
78102 - {PORTSTAT_INFO(rx_dropped_too_small)},
78103 - {PORTSTAT_INFO(rx_dropped_too_short)},
78104 - {PORTSTAT_INFO(rx_dropped_header_too_small)},
78105 - {PORTSTAT_INFO(rx_dropped_tcp_length)},
78106 - {PORTSTAT_INFO(rx_dropped_runt)},
78107 - {PORTSTAT_INFO(rx_fifo_overflow)},
78108 - {PORTSTAT_INFO(rx_input_fifo_overflow)},
78109 - {PORTSTAT_INFO(rx_ip_checksum_errs)},
78110 - {PORTSTAT_INFO(rx_tcp_checksum_errs)},
78111 - {PORTSTAT_INFO(rx_udp_checksum_errs)},
78112 - {PORTSTAT_INFO(rx_non_rss_packets)},
78113 - {PORTSTAT_INFO(rx_ipv4_packets)},
78114 - {PORTSTAT_INFO(rx_ipv6_packets)},
78115 - {PORTSTAT_INFO(tx_unicastframes)},
78116 - {PORTSTAT_INFO(tx_multicastframes)},
78117 - {PORTSTAT_INFO(tx_broadcastframes)},
78118 - {PORTSTAT_INFO(tx_pauseframes)},
78119 - {PORTSTAT_INFO(tx_controlframes)},
78120 - {MISCSTAT_INFO(rx_drops_no_pbuf)},
78121 - {MISCSTAT_INFO(rx_drops_no_txpb)},
78122 - {MISCSTAT_INFO(rx_drops_no_erx_descr)},
78123 - {MISCSTAT_INFO(rx_drops_no_tpre_descr)},
78124 - {MISCSTAT_INFO(rx_drops_too_many_frags)},
78125 - {MISCSTAT_INFO(rx_drops_invalid_ring)},
78126 - {MISCSTAT_INFO(forwarded_packets)},
78127 - {MISCSTAT_INFO(rx_drops_mtu)},
78128 - {ERXSTAT_INFO(rx_drops_no_fragments)},
78129 -};
78130 -#define ETHTOOL_STATS_NUM ARRAY_SIZE(et_stats)
78131 -
78132 -static void
78133 -be_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
78134 -{
78135 - struct be_adapter *adapter = netdev_priv(netdev);
78136 -
78137 - strcpy(drvinfo->driver, DRV_NAME);
78138 - strcpy(drvinfo->version, DRV_VER);
78139 - strncpy(drvinfo->fw_version, adapter->fw_ver, FW_VER_LEN);
78140 - strcpy(drvinfo->bus_info, pci_name(adapter->pdev));
78141 - drvinfo->testinfo_len = 0;
78142 - drvinfo->regdump_len = 0;
78143 - drvinfo->eedump_len = 0;
78144 -}
78145 -
78146 -static int
78147 -be_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
78148 -{
78149 - struct be_adapter *adapter = netdev_priv(netdev);
78150 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
78151 - struct be_eq_obj *tx_eq = &adapter->tx_eq;
78152 -
78153 - coalesce->rx_max_coalesced_frames = adapter->max_rx_coal;
78154 -
78155 - coalesce->rx_coalesce_usecs = rx_eq->cur_eqd;
78156 - coalesce->rx_coalesce_usecs_high = rx_eq->max_eqd;
78157 - coalesce->rx_coalesce_usecs_low = rx_eq->min_eqd;
78158 -
78159 - coalesce->tx_coalesce_usecs = tx_eq->cur_eqd;
78160 - coalesce->tx_coalesce_usecs_high = tx_eq->max_eqd;
78161 - coalesce->tx_coalesce_usecs_low = tx_eq->min_eqd;
78162 -
78163 - coalesce->use_adaptive_rx_coalesce = rx_eq->enable_aic;
78164 - coalesce->use_adaptive_tx_coalesce = tx_eq->enable_aic;
78165 -
78166 - return 0;
78167 -}
78168 -
78169 -/*
78170 - * This routine is used to set interrup coalescing delay *as well as*
78171 - * the number of pkts to coalesce for LRO.
78172 - */
78173 -static int
78174 -be_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
78175 -{
78176 - struct be_adapter *adapter = netdev_priv(netdev);
78177 - struct be_ctrl_info *ctrl = &adapter->ctrl;
78178 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
78179 - struct be_eq_obj *tx_eq = &adapter->tx_eq;
78180 - u32 tx_max, tx_min, tx_cur;
78181 - u32 rx_max, rx_min, rx_cur;
78182 - int status = 0;
78183 -
78184 - if (coalesce->use_adaptive_tx_coalesce == 1)
78185 - return -EINVAL;
78186 -
78187 - adapter->max_rx_coal = coalesce->rx_max_coalesced_frames;
78188 - if (adapter->max_rx_coal > MAX_SKB_FRAGS)
78189 - adapter->max_rx_coal = MAX_SKB_FRAGS - 1;
78190 -
78191 - /* if AIC is being turned on now, start with an EQD of 0 */
78192 - if (rx_eq->enable_aic == 0 &&
78193 - coalesce->use_adaptive_rx_coalesce == 1) {
78194 - rx_eq->cur_eqd = 0;
78195 - }
78196 - rx_eq->enable_aic = coalesce->use_adaptive_rx_coalesce;
78197 -
78198 - rx_max = coalesce->rx_coalesce_usecs_high;
78199 - rx_min = coalesce->rx_coalesce_usecs_low;
78200 - rx_cur = coalesce->rx_coalesce_usecs;
78201 -
78202 - tx_max = coalesce->tx_coalesce_usecs_high;
78203 - tx_min = coalesce->tx_coalesce_usecs_low;
78204 - tx_cur = coalesce->tx_coalesce_usecs;
78205 -
78206 - if (tx_cur > BE_MAX_EQD)
78207 - tx_cur = BE_MAX_EQD;
78208 - if (tx_eq->cur_eqd != tx_cur) {
78209 - status = be_cmd_modify_eqd(ctrl, tx_eq->q.id, tx_cur);
78210 - if (!status)
78211 - tx_eq->cur_eqd = tx_cur;
78212 - }
78213 -
78214 - if (rx_eq->enable_aic) {
78215 - if (rx_max > BE_MAX_EQD)
78216 - rx_max = BE_MAX_EQD;
78217 - if (rx_min > rx_max)
78218 - rx_min = rx_max;
78219 - rx_eq->max_eqd = rx_max;
78220 - rx_eq->min_eqd = rx_min;
78221 - if (rx_eq->cur_eqd > rx_max)
78222 - rx_eq->cur_eqd = rx_max;
78223 - if (rx_eq->cur_eqd < rx_min)
78224 - rx_eq->cur_eqd = rx_min;
78225 - } else {
78226 - if (rx_cur > BE_MAX_EQD)
78227 - rx_cur = BE_MAX_EQD;
78228 - if (rx_eq->cur_eqd != rx_cur) {
78229 - status = be_cmd_modify_eqd(ctrl, rx_eq->q.id, rx_cur);
78230 - if (!status)
78231 - rx_eq->cur_eqd = rx_cur;
78232 - }
78233 - }
78234 - return 0;
78235 -}
78236 -
78237 -static u32 be_get_rx_csum(struct net_device *netdev)
78238 -{
78239 - struct be_adapter *adapter = netdev_priv(netdev);
78240 -
78241 - return adapter->rx_csum;
78242 -}
78243 -
78244 -static int be_set_rx_csum(struct net_device *netdev, uint32_t data)
78245 -{
78246 - struct be_adapter *adapter = netdev_priv(netdev);
78247 -
78248 - if (data)
78249 - adapter->rx_csum = true;
78250 - else
78251 - adapter->rx_csum = false;
78252 -
78253 - return 0;
78254 -}
78255 -
78256 -static void
78257 -be_get_ethtool_stats(struct net_device *netdev,
78258 - struct ethtool_stats *stats, uint64_t *data)
78259 -{
78260 - struct be_adapter *adapter = netdev_priv(netdev);
78261 - struct be_drvr_stats *drvr_stats = &adapter->stats.drvr_stats;
78262 - struct be_hw_stats *hw_stats = hw_stats_from_cmd(adapter->stats.cmd.va);
78263 - struct be_rxf_stats *rxf_stats = &hw_stats->rxf;
78264 - struct be_port_rxf_stats *port_stats =
78265 - &rxf_stats->port[adapter->port_num];
78266 - struct net_device_stats *net_stats = &adapter->stats.net_stats;
78267 - struct be_erx_stats *erx_stats = &hw_stats->erx;
78268 - void *p = NULL;
78269 - int i;
78270 -
78271 - for (i = 0; i < ETHTOOL_STATS_NUM; i++) {
78272 - switch (et_stats[i].type) {
78273 - case NETSTAT:
78274 - p = net_stats;
78275 - break;
78276 - case DRVSTAT:
78277 - p = drvr_stats;
78278 - break;
78279 - case PORTSTAT:
78280 - p = port_stats;
78281 - break;
78282 - case MISCSTAT:
78283 - p = rxf_stats;
78284 - break;
78285 - case ERXSTAT: /* Currently only one ERX stat is provided */
78286 - p = (u32 *)erx_stats + adapter->rx_obj.q.id;
78287 - break;
78288 - }
78289 -
78290 - p = (u8 *)p + et_stats[i].offset;
78291 - data[i] = (et_stats[i].size == sizeof(u64)) ?
78292 - *(u64 *)p: *(u32 *)p;
78293 - }
78294 -
78295 - return;
78296 -}
78297 -
78298 -static void
78299 -be_get_stat_strings(struct net_device *netdev, uint32_t stringset,
78300 - uint8_t *data)
78301 -{
78302 - int i;
78303 - switch (stringset) {
78304 - case ETH_SS_STATS:
78305 - for (i = 0; i < ETHTOOL_STATS_NUM; i++) {
78306 - memcpy(data, et_stats[i].desc, ETH_GSTRING_LEN);
78307 - data += ETH_GSTRING_LEN;
78308 - }
78309 - break;
78310 - }
78311 -}
78312 -
78313 -static int be_get_stats_count(struct net_device *netdev)
78314 -{
78315 - return ETHTOOL_STATS_NUM;
78316 -}
78317 -
78318 -static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
78319 -{
78320 - ecmd->speed = SPEED_10000;
78321 - ecmd->duplex = DUPLEX_FULL;
78322 - ecmd->autoneg = AUTONEG_DISABLE;
78323 - return 0;
78324 -}
78325 -
78326 -static void
78327 -be_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
78328 -{
78329 - struct be_adapter *adapter = netdev_priv(netdev);
78330 -
78331 - ring->rx_max_pending = adapter->rx_obj.q.len;
78332 - ring->tx_max_pending = adapter->tx_obj.q.len;
78333 -
78334 - ring->rx_pending = atomic_read(&adapter->rx_obj.q.used);
78335 - ring->tx_pending = atomic_read(&adapter->tx_obj.q.used);
78336 -}
78337 -
78338 -static void
78339 -be_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
78340 -{
78341 - struct be_adapter *adapter = netdev_priv(netdev);
78342 -
78343 - be_cmd_get_flow_control(&adapter->ctrl, &ecmd->tx_pause,
78344 - &ecmd->rx_pause);
78345 - ecmd->autoneg = AUTONEG_ENABLE;
78346 -}
78347 -
78348 -static int
78349 -be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
78350 -{
78351 - struct be_adapter *adapter = netdev_priv(netdev);
78352 - int status;
78353 -
78354 - if (ecmd->autoneg != AUTONEG_ENABLE)
78355 - return -EINVAL;
78356 -
78357 - status = be_cmd_set_flow_control(&adapter->ctrl, ecmd->tx_pause,
78358 - ecmd->rx_pause);
78359 - if (!status)
78360 - dev_warn(&adapter->pdev->dev, "Pause param set failed.\n");
78361 -
78362 - return status;
78363 -}
78364 -
78365 -struct ethtool_ops be_ethtool_ops = {
78366 - .get_settings = be_get_settings,
78367 - .get_drvinfo = be_get_drvinfo,
78368 - .get_link = ethtool_op_get_link,
78369 - .get_coalesce = be_get_coalesce,
78370 - .set_coalesce = be_set_coalesce,
78371 - .get_ringparam = be_get_ringparam,
78372 - .get_pauseparam = be_get_pauseparam,
78373 - .set_pauseparam = be_set_pauseparam,
78374 - .get_rx_csum = be_get_rx_csum,
78375 - .set_rx_csum = be_set_rx_csum,
78376 - .get_tx_csum = ethtool_op_get_tx_csum,
78377 - .set_tx_csum = ethtool_op_set_tx_csum,
78378 - .get_sg = ethtool_op_get_sg,
78379 - .set_sg = ethtool_op_set_sg,
78380 - .get_tso = ethtool_op_get_tso,
78381 - .set_tso = ethtool_op_set_tso,
78382 - .get_strings = be_get_stat_strings,
78383 - .get_stats_count = be_get_stats_count,
78384 - .get_ethtool_stats = be_get_ethtool_stats,
78385 -};
78386 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/be.h linux-2.6.29-rc3.owrt/drivers/net/benet/be.h
78387 --- linux-2.6.29.owrt/drivers/net/benet/be.h 2009-05-10 22:04:38.000000000 +0200
78388 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/be.h 1970-01-01 01:00:00.000000000 +0100
78389 @@ -1,328 +0,0 @@
78390 -/*
78391 - * Copyright (C) 2005 - 2009 ServerEngines
78392 - * All rights reserved.
78393 - *
78394 - * This program is free software; you can redistribute it and/or
78395 - * modify it under the terms of the GNU General Public License version 2
78396 - * as published by the Free Software Foundation. The full GNU General
78397 - * Public License is included in this distribution in the file called COPYING.
78398 - *
78399 - * Contact Information:
78400 - * linux-drivers@serverengines.com
78401 - *
78402 - * ServerEngines
78403 - * 209 N. Fair Oaks Ave
78404 - * Sunnyvale, CA 94085
78405 - */
78406 -
78407 -#ifndef BE_H
78408 -#define BE_H
78409 -
78410 -#include <linux/pci.h>
78411 -#include <linux/etherdevice.h>
78412 -#include <linux/version.h>
78413 -#include <linux/delay.h>
78414 -#include <net/tcp.h>
78415 -#include <net/ip.h>
78416 -#include <net/ipv6.h>
78417 -#include <linux/if_vlan.h>
78418 -#include <linux/workqueue.h>
78419 -#include <linux/interrupt.h>
78420 -#include <linux/inet_lro.h>
78421 -
78422 -#include "be_hw.h"
78423 -
78424 -#define DRV_VER "2.0.348"
78425 -#define DRV_NAME "be2net"
78426 -#define BE_NAME "ServerEngines BladeEngine2 10Gbps NIC"
78427 -#define DRV_DESC BE_NAME "Driver"
78428 -
78429 -/* Number of bytes of an RX frame that are copied to skb->data */
78430 -#define BE_HDR_LEN 64
78431 -#define BE_MAX_JUMBO_FRAME_SIZE 9018
78432 -#define BE_MIN_MTU 256
78433 -
78434 -#define BE_NUM_VLANS_SUPPORTED 64
78435 -#define BE_MAX_EQD 96
78436 -#define BE_MAX_TX_FRAG_COUNT 30
78437 -
78438 -#define EVNT_Q_LEN 1024
78439 -#define TX_Q_LEN 2048
78440 -#define TX_CQ_LEN 1024
78441 -#define RX_Q_LEN 1024 /* Does not support any other value */
78442 -#define RX_CQ_LEN 1024
78443 -#define MCC_Q_LEN 64 /* total size not to exceed 8 pages */
78444 -#define MCC_CQ_LEN 256
78445 -
78446 -#define BE_NAPI_WEIGHT 64
78447 -#define MAX_RX_POST BE_NAPI_WEIGHT /* Frags posted at a time */
78448 -#define RX_FRAGS_REFILL_WM (RX_Q_LEN - MAX_RX_POST)
78449 -
78450 -#define BE_MAX_LRO_DESCRIPTORS 16
78451 -#define BE_MAX_FRAGS_PER_FRAME 16
78452 -
78453 -struct be_dma_mem {
78454 - void *va;
78455 - dma_addr_t dma;
78456 - u32 size;
78457 -};
78458 -
78459 -struct be_queue_info {
78460 - struct be_dma_mem dma_mem;
78461 - u16 len;
78462 - u16 entry_size; /* Size of an element in the queue */
78463 - u16 id;
78464 - u16 tail, head;
78465 - bool created;
78466 - atomic_t used; /* Number of valid elements in the queue */
78467 -};
78468 -
78469 -struct be_ctrl_info {
78470 - u8 __iomem *csr;
78471 - u8 __iomem *db; /* Door Bell */
78472 - u8 __iomem *pcicfg; /* PCI config space */
78473 - int pci_func;
78474 -
78475 - /* Mbox used for cmd request/response */
78476 - spinlock_t cmd_lock; /* For serializing cmds to BE card */
78477 - struct be_dma_mem mbox_mem;
78478 - /* Mbox mem is adjusted to align to 16 bytes. The allocated addr
78479 - * is stored for freeing purpose */
78480 - struct be_dma_mem mbox_mem_alloced;
78481 -};
78482 -
78483 -#include "be_cmds.h"
78484 -
78485 -struct be_drvr_stats {
78486 - u32 be_tx_reqs; /* number of TX requests initiated */
78487 - u32 be_tx_stops; /* number of times TX Q was stopped */
78488 - u32 be_fwd_reqs; /* number of send reqs through forwarding i/f */
78489 - u32 be_tx_wrbs; /* number of tx WRBs used */
78490 - u32 be_tx_events; /* number of tx completion events */
78491 - u32 be_tx_compl; /* number of tx completion entries processed */
78492 - u64 be_tx_jiffies;
78493 - ulong be_tx_bytes;
78494 - ulong be_tx_bytes_prev;
78495 - u32 be_tx_rate;
78496 -
78497 - u32 cache_barrier[16];
78498 -
78499 - u32 be_ethrx_post_fail;/* number of ethrx buffer alloc failures */
78500 - u32 be_polls; /* number of times NAPI called poll function */
78501 - u32 be_rx_events; /* number of ucast rx completion events */
78502 - u32 be_rx_compl; /* number of rx completion entries processed */
78503 - u32 be_lro_hgram_data[8]; /* histogram of LRO data packets */
78504 - u32 be_lro_hgram_ack[8]; /* histogram of LRO ACKs */
78505 - u64 be_rx_jiffies;
78506 - ulong be_rx_bytes;
78507 - ulong be_rx_bytes_prev;
78508 - u32 be_rx_rate;
78509 - /* number of non ether type II frames dropped where
78510 - * frame len > length field of Mac Hdr */
78511 - u32 be_802_3_dropped_frames;
78512 - /* number of non ether type II frames malformed where
78513 - * in frame len < length field of Mac Hdr */
78514 - u32 be_802_3_malformed_frames;
78515 - u32 be_rxcp_err; /* Num rx completion entries w/ err set. */
78516 - ulong rx_fps_jiffies; /* jiffies at last FPS calc */
78517 - u32 be_rx_frags;
78518 - u32 be_prev_rx_frags;
78519 - u32 be_rx_fps; /* Rx frags per second */
78520 -};
78521 -
78522 -struct be_stats_obj {
78523 - struct be_drvr_stats drvr_stats;
78524 - struct net_device_stats net_stats;
78525 - struct be_dma_mem cmd;
78526 -};
78527 -
78528 -struct be_eq_obj {
78529 - struct be_queue_info q;
78530 - char desc[32];
78531 -
78532 - /* Adaptive interrupt coalescing (AIC) info */
78533 - bool enable_aic;
78534 - u16 min_eqd; /* in usecs */
78535 - u16 max_eqd; /* in usecs */
78536 - u16 cur_eqd; /* in usecs */
78537 -
78538 - struct napi_struct napi;
78539 -};
78540 -
78541 -struct be_tx_obj {
78542 - struct be_queue_info q;
78543 - struct be_queue_info cq;
78544 - /* Remember the skbs that were transmitted */
78545 - struct sk_buff *sent_skb_list[TX_Q_LEN];
78546 -};
78547 -
78548 -/* Struct to remember the pages posted for rx frags */
78549 -struct be_rx_page_info {
78550 - struct page *page;
78551 - dma_addr_t bus;
78552 - u16 page_offset;
78553 - bool last_page_user;
78554 -};
78555 -
78556 -struct be_rx_obj {
78557 - struct be_queue_info q;
78558 - struct be_queue_info cq;
78559 - struct be_rx_page_info page_info_tbl[RX_Q_LEN];
78560 - struct net_lro_mgr lro_mgr;
78561 - struct net_lro_desc lro_desc[BE_MAX_LRO_DESCRIPTORS];
78562 -};
78563 -
78564 -#define BE_NUM_MSIX_VECTORS 2 /* 1 each for Tx and Rx */
78565 -struct be_adapter {
78566 - struct pci_dev *pdev;
78567 - struct net_device *netdev;
78568 -
78569 - /* Mbox, pci config, csr address information */
78570 - struct be_ctrl_info ctrl;
78571 -
78572 - struct msix_entry msix_entries[BE_NUM_MSIX_VECTORS];
78573 - bool msix_enabled;
78574 - bool isr_registered;
78575 -
78576 - /* TX Rings */
78577 - struct be_eq_obj tx_eq;
78578 - struct be_tx_obj tx_obj;
78579 -
78580 - u32 cache_line_break[8];
78581 -
78582 - /* Rx rings */
78583 - struct be_eq_obj rx_eq;
78584 - struct be_rx_obj rx_obj;
78585 - u32 big_page_size; /* Compounded page size shared by rx wrbs */
78586 - bool rx_post_starved; /* Zero rx frags have been posted to BE */
78587 -
78588 - struct vlan_group *vlan_grp;
78589 - u16 num_vlans;
78590 - u8 vlan_tag[VLAN_GROUP_ARRAY_LEN];
78591 -
78592 - struct be_stats_obj stats;
78593 - /* Work queue used to perform periodic tasks like getting statistics */
78594 - struct delayed_work work;
78595 -
78596 - /* Ethtool knobs and info */
78597 - bool rx_csum; /* BE card must perform rx-checksumming */
78598 - u32 max_rx_coal;
78599 - char fw_ver[FW_VER_LEN];
78600 - u32 if_handle; /* Used to configure filtering */
78601 - u32 pmac_id; /* MAC addr handle used by BE card */
78602 -
78603 - struct be_link_info link;
78604 - u32 port_num;
78605 -};
78606 -
78607 -extern struct ethtool_ops be_ethtool_ops;
78608 -
78609 -#define drvr_stats(adapter) (&adapter->stats.drvr_stats)
78610 -
78611 -#define BE_SET_NETDEV_OPS(netdev, ops) (netdev->netdev_ops = ops)
78612 -
78613 -static inline u32 MODULO(u16 val, u16 limit)
78614 -{
78615 - BUG_ON(limit & (limit - 1));
78616 - return val & (limit - 1);
78617 -}
78618 -
78619 -static inline void index_adv(u16 *index, u16 val, u16 limit)
78620 -{
78621 - *index = MODULO((*index + val), limit);
78622 -}
78623 -
78624 -static inline void index_inc(u16 *index, u16 limit)
78625 -{
78626 - *index = MODULO((*index + 1), limit);
78627 -}
78628 -
78629 -#define PAGE_SHIFT_4K 12
78630 -#define PAGE_SIZE_4K (1 << PAGE_SHIFT_4K)
78631 -
78632 -/* Returns number of pages spanned by the data starting at the given addr */
78633 -#define PAGES_4K_SPANNED(_address, size) \
78634 - ((u32)((((size_t)(_address) & (PAGE_SIZE_4K - 1)) + \
78635 - (size) + (PAGE_SIZE_4K - 1)) >> PAGE_SHIFT_4K))
78636 -
78637 -/* Byte offset into the page corresponding to given address */
78638 -#define OFFSET_IN_PAGE(addr) \
78639 - ((size_t)(addr) & (PAGE_SIZE_4K-1))
78640 -
78641 -/* Returns bit offset within a DWORD of a bitfield */
78642 -#define AMAP_BIT_OFFSET(_struct, field) \
78643 - (((size_t)&(((_struct *)0)->field))%32)
78644 -
78645 -/* Returns the bit mask of the field that is NOT shifted into location. */
78646 -static inline u32 amap_mask(u32 bitsize)
78647 -{
78648 - return (bitsize == 32 ? 0xFFFFFFFF : (1 << bitsize) - 1);
78649 -}
78650 -
78651 -static inline void
78652 -amap_set(void *ptr, u32 dw_offset, u32 mask, u32 offset, u32 value)
78653 -{
78654 - u32 *dw = (u32 *) ptr + dw_offset;
78655 - *dw &= ~(mask << offset);
78656 - *dw |= (mask & value) << offset;
78657 -}
78658 -
78659 -#define AMAP_SET_BITS(_struct, field, ptr, val) \
78660 - amap_set(ptr, \
78661 - offsetof(_struct, field)/32, \
78662 - amap_mask(sizeof(((_struct *)0)->field)), \
78663 - AMAP_BIT_OFFSET(_struct, field), \
78664 - val)
78665 -
78666 -static inline u32 amap_get(void *ptr, u32 dw_offset, u32 mask, u32 offset)
78667 -{
78668 - u32 *dw = (u32 *) ptr;
78669 - return mask & (*(dw + dw_offset) >> offset);
78670 -}
78671 -
78672 -#define AMAP_GET_BITS(_struct, field, ptr) \
78673 - amap_get(ptr, \
78674 - offsetof(_struct, field)/32, \
78675 - amap_mask(sizeof(((_struct *)0)->field)), \
78676 - AMAP_BIT_OFFSET(_struct, field))
78677 -
78678 -#define be_dws_cpu_to_le(wrb, len) swap_dws(wrb, len)
78679 -#define be_dws_le_to_cpu(wrb, len) swap_dws(wrb, len)
78680 -static inline void swap_dws(void *wrb, int len)
78681 -{
78682 -#ifdef __BIG_ENDIAN
78683 - u32 *dw = wrb;
78684 - BUG_ON(len % 4);
78685 - do {
78686 - *dw = cpu_to_le32(*dw);
78687 - dw++;
78688 - len -= 4;
78689 - } while (len);
78690 -#endif /* __BIG_ENDIAN */
78691 -}
78692 -
78693 -static inline u8 is_tcp_pkt(struct sk_buff *skb)
78694 -{
78695 - u8 val = 0;
78696 -
78697 - if (ip_hdr(skb)->version == 4)
78698 - val = (ip_hdr(skb)->protocol == IPPROTO_TCP);
78699 - else if (ip_hdr(skb)->version == 6)
78700 - val = (ipv6_hdr(skb)->nexthdr == NEXTHDR_TCP);
78701 -
78702 - return val;
78703 -}
78704 -
78705 -static inline u8 is_udp_pkt(struct sk_buff *skb)
78706 -{
78707 - u8 val = 0;
78708 -
78709 - if (ip_hdr(skb)->version == 4)
78710 - val = (ip_hdr(skb)->protocol == IPPROTO_UDP);
78711 - else if (ip_hdr(skb)->version == 6)
78712 - val = (ipv6_hdr(skb)->nexthdr == NEXTHDR_UDP);
78713 -
78714 - return val;
78715 -}
78716 -
78717 -#endif /* BE_H */
78718 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/be_hw.h linux-2.6.29-rc3.owrt/drivers/net/benet/be_hw.h
78719 --- linux-2.6.29.owrt/drivers/net/benet/be_hw.h 2009-05-10 22:04:38.000000000 +0200
78720 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/be_hw.h 1970-01-01 01:00:00.000000000 +0100
78721 @@ -1,211 +0,0 @@
78722 -/*
78723 - * Copyright (C) 2005 - 2009 ServerEngines
78724 - * All rights reserved.
78725 - *
78726 - * This program is free software; you can redistribute it and/or
78727 - * modify it under the terms of the GNU General Public License version 2
78728 - * as published by the Free Software Foundation. The full GNU General
78729 - * Public License is included in this distribution in the file called COPYING.
78730 - *
78731 - * Contact Information:
78732 - * linux-drivers@serverengines.com
78733 - *
78734 - * ServerEngines
78735 - * 209 N. Fair Oaks Ave
78736 - * Sunnyvale, CA 94085
78737 - */
78738 -
78739 -/********* Mailbox door bell *************/
78740 -/* Used for driver communication with the FW.
78741 - * The software must write this register twice to post any command. First,
78742 - * it writes the register with hi=1 and the upper bits of the physical address
78743 - * for the MAILBOX structure. Software must poll the ready bit until this
78744 - * is acknowledged. Then, sotware writes the register with hi=0 with the lower
78745 - * bits in the address. It must poll the ready bit until the command is
78746 - * complete. Upon completion, the MAILBOX will contain a valid completion
78747 - * queue entry.
78748 - */
78749 -#define MPU_MAILBOX_DB_OFFSET 0x160
78750 -#define MPU_MAILBOX_DB_RDY_MASK 0x1 /* bit 0 */
78751 -#define MPU_MAILBOX_DB_HI_MASK 0x2 /* bit 1 */
78752 -
78753 -#define MPU_EP_CONTROL 0
78754 -
78755 -/********** MPU semphore ******************/
78756 -#define MPU_EP_SEMAPHORE_OFFSET 0xac
78757 -#define EP_SEMAPHORE_POST_STAGE_MASK 0x0000FFFF
78758 -#define EP_SEMAPHORE_POST_ERR_MASK 0x1
78759 -#define EP_SEMAPHORE_POST_ERR_SHIFT 31
78760 -/* MPU semphore POST stage values */
78761 -#define POST_STAGE_AWAITING_HOST_RDY 0x1 /* FW awaiting goahead from host */
78762 -#define POST_STAGE_HOST_RDY 0x2 /* Host has given go-ahed to FW */
78763 -#define POST_STAGE_BE_RESET 0x3 /* Host wants to reset chip */
78764 -#define POST_STAGE_ARMFW_RDY 0xc000 /* FW is done with POST */
78765 -
78766 -/********* Memory BAR register ************/
78767 -#define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc
78768 -/* Host Interrupt Enable, if set interrupts are enabled although "PCI Interrupt
78769 - * Disable" may still globally block interrupts in addition to individual
78770 - * interrupt masks; a mechanism for the device driver to block all interrupts
78771 - * atomically without having to arbitrate for the PCI Interrupt Disable bit
78772 - * with the OS.
78773 - */
78774 -#define MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK (1 << 29) /* bit 29 */
78775 -/* PCI physical function number */
78776 -#define MEMBAR_CTRL_INT_CTRL_PFUNC_MASK 0x7 /* bits 26 - 28 */
78777 -#define MEMBAR_CTRL_INT_CTRL_PFUNC_SHIFT 26
78778 -
78779 -/********* Event Q door bell *************/
78780 -#define DB_EQ_OFFSET DB_CQ_OFFSET
78781 -#define DB_EQ_RING_ID_MASK 0x1FF /* bits 0 - 8 */
78782 -/* Clear the interrupt for this eq */
78783 -#define DB_EQ_CLR_SHIFT (9) /* bit 9 */
78784 -/* Must be 1 */
78785 -#define DB_EQ_EVNT_SHIFT (10) /* bit 10 */
78786 -/* Number of event entries processed */
78787 -#define DB_EQ_NUM_POPPED_SHIFT (16) /* bits 16 - 28 */
78788 -/* Rearm bit */
78789 -#define DB_EQ_REARM_SHIFT (29) /* bit 29 */
78790 -
78791 -/********* Compl Q door bell *************/
78792 -#define DB_CQ_OFFSET 0x120
78793 -#define DB_CQ_RING_ID_MASK 0x3FF /* bits 0 - 9 */
78794 -/* Number of event entries processed */
78795 -#define DB_CQ_NUM_POPPED_SHIFT (16) /* bits 16 - 28 */
78796 -/* Rearm bit */
78797 -#define DB_CQ_REARM_SHIFT (29) /* bit 29 */
78798 -
78799 -/********** TX ULP door bell *************/
78800 -#define DB_TXULP1_OFFSET 0x60
78801 -#define DB_TXULP_RING_ID_MASK 0x7FF /* bits 0 - 10 */
78802 -/* Number of tx entries posted */
78803 -#define DB_TXULP_NUM_POSTED_SHIFT (16) /* bits 16 - 29 */
78804 -#define DB_TXULP_NUM_POSTED_MASK 0x3FFF /* bits 16 - 29 */
78805 -
78806 -/********** RQ(erx) door bell ************/
78807 -#define DB_RQ_OFFSET 0x100
78808 -#define DB_RQ_RING_ID_MASK 0x3FF /* bits 0 - 9 */
78809 -/* Number of rx frags posted */
78810 -#define DB_RQ_NUM_POSTED_SHIFT (24) /* bits 24 - 31 */
78811 -
78812 -/*
78813 - * BE descriptors: host memory data structures whose formats
78814 - * are hardwired in BE silicon.
78815 - */
78816 -/* Event Queue Descriptor */
78817 -#define EQ_ENTRY_VALID_MASK 0x1 /* bit 0 */
78818 -#define EQ_ENTRY_RES_ID_MASK 0xFFFF /* bits 16 - 31 */
78819 -#define EQ_ENTRY_RES_ID_SHIFT 16
78820 -struct be_eq_entry {
78821 - u32 evt;
78822 -};
78823 -
78824 -/* TX Queue Descriptor */
78825 -#define ETH_WRB_FRAG_LEN_MASK 0xFFFF
78826 -struct be_eth_wrb {
78827 - u32 frag_pa_hi; /* dword 0 */
78828 - u32 frag_pa_lo; /* dword 1 */
78829 - u32 rsvd0; /* dword 2 */
78830 - u32 frag_len; /* dword 3: bits 0 - 15 */
78831 -} __packed;
78832 -
78833 -/* Pseudo amap definition for eth_hdr_wrb in which each bit of the
78834 - * actual structure is defined as a byte : used to calculate
78835 - * offset/shift/mask of each field */
78836 -struct amap_eth_hdr_wrb {
78837 - u8 rsvd0[32]; /* dword 0 */
78838 - u8 rsvd1[32]; /* dword 1 */
78839 - u8 complete; /* dword 2 */
78840 - u8 event;
78841 - u8 crc;
78842 - u8 forward;
78843 - u8 ipsec;
78844 - u8 mgmt;
78845 - u8 ipcs;
78846 - u8 udpcs;
78847 - u8 tcpcs;
78848 - u8 lso;
78849 - u8 vlan;
78850 - u8 gso[2];
78851 - u8 num_wrb[5];
78852 - u8 lso_mss[14];
78853 - u8 len[16]; /* dword 3 */
78854 - u8 vlan_tag[16];
78855 -} __packed;
78856 -
78857 -struct be_eth_hdr_wrb {
78858 - u32 dw[4];
78859 -};
78860 -
78861 -/* TX Compl Queue Descriptor */
78862 -
78863 -/* Pseudo amap definition for eth_tx_compl in which each bit of the
78864 - * actual structure is defined as a byte: used to calculate
78865 - * offset/shift/mask of each field */
78866 -struct amap_eth_tx_compl {
78867 - u8 wrb_index[16]; /* dword 0 */
78868 - u8 ct[2]; /* dword 0 */
78869 - u8 port[2]; /* dword 0 */
78870 - u8 rsvd0[8]; /* dword 0 */
78871 - u8 status[4]; /* dword 0 */
78872 - u8 user_bytes[16]; /* dword 1 */
78873 - u8 nwh_bytes[8]; /* dword 1 */
78874 - u8 lso; /* dword 1 */
78875 - u8 cast_enc[2]; /* dword 1 */
78876 - u8 rsvd1[5]; /* dword 1 */
78877 - u8 rsvd2[32]; /* dword 2 */
78878 - u8 pkts[16]; /* dword 3 */
78879 - u8 ringid[11]; /* dword 3 */
78880 - u8 hash_val[4]; /* dword 3 */
78881 - u8 valid; /* dword 3 */
78882 -} __packed;
78883 -
78884 -struct be_eth_tx_compl {
78885 - u32 dw[4];
78886 -};
78887 -
78888 -/* RX Queue Descriptor */
78889 -struct be_eth_rx_d {
78890 - u32 fragpa_hi;
78891 - u32 fragpa_lo;
78892 -};
78893 -
78894 -/* RX Compl Queue Descriptor */
78895 -
78896 -/* Pseudo amap definition for eth_rx_compl in which each bit of the
78897 - * actual structure is defined as a byte: used to calculate
78898 - * offset/shift/mask of each field */
78899 -struct amap_eth_rx_compl {
78900 - u8 vlan_tag[16]; /* dword 0 */
78901 - u8 pktsize[14]; /* dword 0 */
78902 - u8 port; /* dword 0 */
78903 - u8 ip_opt; /* dword 0 */
78904 - u8 err; /* dword 1 */
78905 - u8 rsshp; /* dword 1 */
78906 - u8 ipf; /* dword 1 */
78907 - u8 tcpf; /* dword 1 */
78908 - u8 udpf; /* dword 1 */
78909 - u8 ipcksm; /* dword 1 */
78910 - u8 l4_cksm; /* dword 1 */
78911 - u8 ip_version; /* dword 1 */
78912 - u8 macdst[6]; /* dword 1 */
78913 - u8 vtp; /* dword 1 */
78914 - u8 rsvd0; /* dword 1 */
78915 - u8 fragndx[10]; /* dword 1 */
78916 - u8 ct[2]; /* dword 1 */
78917 - u8 sw; /* dword 1 */
78918 - u8 numfrags[3]; /* dword 1 */
78919 - u8 rss_flush; /* dword 2 */
78920 - u8 cast_enc[2]; /* dword 2 */
78921 - u8 qnq; /* dword 2 */
78922 - u8 rss_bank; /* dword 2 */
78923 - u8 rsvd1[23]; /* dword 2 */
78924 - u8 lro_pkt; /* dword 2 */
78925 - u8 rsvd2[2]; /* dword 2 */
78926 - u8 valid; /* dword 2 */
78927 - u8 rsshash[32]; /* dword 3 */
78928 -} __packed;
78929 -
78930 -struct be_eth_rx_compl {
78931 - u32 dw[4];
78932 -};
78933 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/be_main.c linux-2.6.29-rc3.owrt/drivers/net/benet/be_main.c
78934 --- linux-2.6.29.owrt/drivers/net/benet/be_main.c 2009-05-10 22:04:38.000000000 +0200
78935 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/be_main.c 1970-01-01 01:00:00.000000000 +0100
78936 @@ -1,1911 +0,0 @@
78937 -/*
78938 - * Copyright (C) 2005 - 2009 ServerEngines
78939 - * All rights reserved.
78940 - *
78941 - * This program is free software; you can redistribute it and/or
78942 - * modify it under the terms of the GNU General Public License version 2
78943 - * as published by the Free Software Foundation. The full GNU General
78944 - * Public License is included in this distribution in the file called COPYING.
78945 - *
78946 - * Contact Information:
78947 - * linux-drivers@serverengines.com
78948 - *
78949 - * ServerEngines
78950 - * 209 N. Fair Oaks Ave
78951 - * Sunnyvale, CA 94085
78952 - */
78953 -
78954 -#include "be.h"
78955 -
78956 -MODULE_VERSION(DRV_VER);
78957 -MODULE_DEVICE_TABLE(pci, be_dev_ids);
78958 -MODULE_DESCRIPTION(DRV_DESC " " DRV_VER);
78959 -MODULE_AUTHOR("ServerEngines Corporation");
78960 -MODULE_LICENSE("GPL");
78961 -
78962 -static unsigned int rx_frag_size = 2048;
78963 -module_param(rx_frag_size, uint, S_IRUGO);
78964 -MODULE_PARM_DESC(rx_frag_size, "Size of a fragment that holds rcvd data.");
78965 -
78966 -#define BE_VENDOR_ID 0x19a2
78967 -#define BE2_DEVICE_ID_1 0x0211
78968 -static DEFINE_PCI_DEVICE_TABLE(be_dev_ids) = {
78969 - { PCI_DEVICE(BE_VENDOR_ID, BE2_DEVICE_ID_1) },
78970 - { 0 }
78971 -};
78972 -MODULE_DEVICE_TABLE(pci, be_dev_ids);
78973 -
78974 -static void be_queue_free(struct be_adapter *adapter, struct be_queue_info *q)
78975 -{
78976 - struct be_dma_mem *mem = &q->dma_mem;
78977 - if (mem->va)
78978 - pci_free_consistent(adapter->pdev, mem->size,
78979 - mem->va, mem->dma);
78980 -}
78981 -
78982 -static int be_queue_alloc(struct be_adapter *adapter, struct be_queue_info *q,
78983 - u16 len, u16 entry_size)
78984 -{
78985 - struct be_dma_mem *mem = &q->dma_mem;
78986 -
78987 - memset(q, 0, sizeof(*q));
78988 - q->len = len;
78989 - q->entry_size = entry_size;
78990 - mem->size = len * entry_size;
78991 - mem->va = pci_alloc_consistent(adapter->pdev, mem->size, &mem->dma);
78992 - if (!mem->va)
78993 - return -1;
78994 - memset(mem->va, 0, mem->size);
78995 - return 0;
78996 -}
78997 -
78998 -static inline void *queue_head_node(struct be_queue_info *q)
78999 -{
79000 - return q->dma_mem.va + q->head * q->entry_size;
79001 -}
79002 -
79003 -static inline void *queue_tail_node(struct be_queue_info *q)
79004 -{
79005 - return q->dma_mem.va + q->tail * q->entry_size;
79006 -}
79007 -
79008 -static inline void queue_head_inc(struct be_queue_info *q)
79009 -{
79010 - index_inc(&q->head, q->len);
79011 -}
79012 -
79013 -static inline void queue_tail_inc(struct be_queue_info *q)
79014 -{
79015 - index_inc(&q->tail, q->len);
79016 -}
79017 -
79018 -static void be_intr_set(struct be_ctrl_info *ctrl, bool enable)
79019 -{
79020 - u8 __iomem *addr = ctrl->pcicfg + PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET;
79021 - u32 reg = ioread32(addr);
79022 - u32 enabled = reg & MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
79023 - if (!enabled && enable) {
79024 - reg |= MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
79025 - } else if (enabled && !enable) {
79026 - reg &= ~MEMBAR_CTRL_INT_CTRL_HOSTINTR_MASK;
79027 - } else {
79028 - printk(KERN_WARNING DRV_NAME
79029 - ": bad value in membar_int_ctrl reg=0x%x\n", reg);
79030 - return;
79031 - }
79032 - iowrite32(reg, addr);
79033 -}
79034 -
79035 -static void be_rxq_notify(struct be_ctrl_info *ctrl, u16 qid, u16 posted)
79036 -{
79037 - u32 val = 0;
79038 - val |= qid & DB_RQ_RING_ID_MASK;
79039 - val |= posted << DB_RQ_NUM_POSTED_SHIFT;
79040 - iowrite32(val, ctrl->db + DB_RQ_OFFSET);
79041 -}
79042 -
79043 -static void be_txq_notify(struct be_ctrl_info *ctrl, u16 qid, u16 posted)
79044 -{
79045 - u32 val = 0;
79046 - val |= qid & DB_TXULP_RING_ID_MASK;
79047 - val |= (posted & DB_TXULP_NUM_POSTED_MASK) << DB_TXULP_NUM_POSTED_SHIFT;
79048 - iowrite32(val, ctrl->db + DB_TXULP1_OFFSET);
79049 -}
79050 -
79051 -static void be_eq_notify(struct be_ctrl_info *ctrl, u16 qid,
79052 - bool arm, bool clear_int, u16 num_popped)
79053 -{
79054 - u32 val = 0;
79055 - val |= qid & DB_EQ_RING_ID_MASK;
79056 - if (arm)
79057 - val |= 1 << DB_EQ_REARM_SHIFT;
79058 - if (clear_int)
79059 - val |= 1 << DB_EQ_CLR_SHIFT;
79060 - val |= 1 << DB_EQ_EVNT_SHIFT;
79061 - val |= num_popped << DB_EQ_NUM_POPPED_SHIFT;
79062 - iowrite32(val, ctrl->db + DB_EQ_OFFSET);
79063 -}
79064 -
79065 -static void be_cq_notify(struct be_ctrl_info *ctrl, u16 qid,
79066 - bool arm, u16 num_popped)
79067 -{
79068 - u32 val = 0;
79069 - val |= qid & DB_CQ_RING_ID_MASK;
79070 - if (arm)
79071 - val |= 1 << DB_CQ_REARM_SHIFT;
79072 - val |= num_popped << DB_CQ_NUM_POPPED_SHIFT;
79073 - iowrite32(val, ctrl->db + DB_CQ_OFFSET);
79074 -}
79075 -
79076 -
79077 -static int be_mac_addr_set(struct net_device *netdev, void *p)
79078 -{
79079 - struct be_adapter *adapter = netdev_priv(netdev);
79080 - struct sockaddr *addr = p;
79081 - int status = 0;
79082 -
79083 - if (netif_running(netdev)) {
79084 - status = be_cmd_pmac_del(&adapter->ctrl, adapter->if_handle,
79085 - adapter->pmac_id);
79086 - if (status)
79087 - return status;
79088 -
79089 - status = be_cmd_pmac_add(&adapter->ctrl, (u8 *)addr->sa_data,
79090 - adapter->if_handle, &adapter->pmac_id);
79091 - }
79092 -
79093 - if (!status)
79094 - memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
79095 -
79096 - return status;
79097 -}
79098 -
79099 -static void netdev_stats_update(struct be_adapter *adapter)
79100 -{
79101 - struct be_hw_stats *hw_stats = hw_stats_from_cmd(adapter->stats.cmd.va);
79102 - struct be_rxf_stats *rxf_stats = &hw_stats->rxf;
79103 - struct be_port_rxf_stats *port_stats =
79104 - &rxf_stats->port[adapter->port_num];
79105 - struct net_device_stats *dev_stats = &adapter->stats.net_stats;
79106 -
79107 - dev_stats->rx_packets = port_stats->rx_total_frames;
79108 - dev_stats->tx_packets = port_stats->tx_unicastframes +
79109 - port_stats->tx_multicastframes + port_stats->tx_broadcastframes;
79110 - dev_stats->rx_bytes = (u64) port_stats->rx_bytes_msd << 32 |
79111 - (u64) port_stats->rx_bytes_lsd;
79112 - dev_stats->tx_bytes = (u64) port_stats->tx_bytes_msd << 32 |
79113 - (u64) port_stats->tx_bytes_lsd;
79114 -
79115 - /* bad pkts received */
79116 - dev_stats->rx_errors = port_stats->rx_crc_errors +
79117 - port_stats->rx_alignment_symbol_errors +
79118 - port_stats->rx_in_range_errors +
79119 - port_stats->rx_out_range_errors + port_stats->rx_frame_too_long;
79120 -
79121 - /* packet transmit problems */
79122 - dev_stats->tx_errors = 0;
79123 -
79124 - /* no space in linux buffers */
79125 - dev_stats->rx_dropped = 0;
79126 -
79127 - /* no space available in linux */
79128 - dev_stats->tx_dropped = 0;
79129 -
79130 - dev_stats->multicast = port_stats->tx_multicastframes;
79131 - dev_stats->collisions = 0;
79132 -
79133 - /* detailed rx errors */
79134 - dev_stats->rx_length_errors = port_stats->rx_in_range_errors +
79135 - port_stats->rx_out_range_errors + port_stats->rx_frame_too_long;
79136 - /* receive ring buffer overflow */
79137 - dev_stats->rx_over_errors = 0;
79138 - dev_stats->rx_crc_errors = port_stats->rx_crc_errors;
79139 -
79140 - /* frame alignment errors */
79141 - dev_stats->rx_frame_errors = port_stats->rx_alignment_symbol_errors;
79142 - /* receiver fifo overrun */
79143 - /* drops_no_pbuf is no per i/f, it's per BE card */
79144 - dev_stats->rx_fifo_errors = port_stats->rx_fifo_overflow +
79145 - port_stats->rx_input_fifo_overflow +
79146 - rxf_stats->rx_drops_no_pbuf;
79147 - /* receiver missed packetd */
79148 - dev_stats->rx_missed_errors = 0;
79149 - /* detailed tx_errors */
79150 - dev_stats->tx_aborted_errors = 0;
79151 - dev_stats->tx_carrier_errors = 0;
79152 - dev_stats->tx_fifo_errors = 0;
79153 - dev_stats->tx_heartbeat_errors = 0;
79154 - dev_stats->tx_window_errors = 0;
79155 -}
79156 -
79157 -static void be_link_status_update(struct be_adapter *adapter)
79158 -{
79159 - struct be_link_info *prev = &adapter->link;
79160 - struct be_link_info now = { 0 };
79161 - struct net_device *netdev = adapter->netdev;
79162 -
79163 - be_cmd_link_status_query(&adapter->ctrl, &now);
79164 -
79165 - /* If link came up or went down */
79166 - if (now.speed != prev->speed && (now.speed == PHY_LINK_SPEED_ZERO ||
79167 - prev->speed == PHY_LINK_SPEED_ZERO)) {
79168 - if (now.speed == PHY_LINK_SPEED_ZERO) {
79169 - netif_stop_queue(netdev);
79170 - netif_carrier_off(netdev);
79171 - printk(KERN_INFO "%s: Link down\n", netdev->name);
79172 - } else {
79173 - netif_start_queue(netdev);
79174 - netif_carrier_on(netdev);
79175 - printk(KERN_INFO "%s: Link up\n", netdev->name);
79176 - }
79177 - }
79178 - *prev = now;
79179 -}
79180 -
79181 -/* Update the EQ delay n BE based on the RX frags consumed / sec */
79182 -static void be_rx_eqd_update(struct be_adapter *adapter)
79183 -{
79184 - u32 eqd;
79185 - struct be_ctrl_info *ctrl = &adapter->ctrl;
79186 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
79187 - struct be_drvr_stats *stats = &adapter->stats.drvr_stats;
79188 -
79189 - /* Update once a second */
79190 - if (((jiffies - stats->rx_fps_jiffies) < HZ) || rx_eq->enable_aic == 0)
79191 - return;
79192 -
79193 - stats->be_rx_fps = (stats->be_rx_frags - stats->be_prev_rx_frags) /
79194 - ((jiffies - stats->rx_fps_jiffies) / HZ);
79195 -
79196 - stats->rx_fps_jiffies = jiffies;
79197 - stats->be_prev_rx_frags = stats->be_rx_frags;
79198 - eqd = stats->be_rx_fps / 110000;
79199 - eqd = eqd << 3;
79200 - if (eqd > rx_eq->max_eqd)
79201 - eqd = rx_eq->max_eqd;
79202 - if (eqd < rx_eq->min_eqd)
79203 - eqd = rx_eq->min_eqd;
79204 - if (eqd < 10)
79205 - eqd = 0;
79206 - if (eqd != rx_eq->cur_eqd)
79207 - be_cmd_modify_eqd(ctrl, rx_eq->q.id, eqd);
79208 -
79209 - rx_eq->cur_eqd = eqd;
79210 -}
79211 -
79212 -static struct net_device_stats *be_get_stats(struct net_device *dev)
79213 -{
79214 - struct be_adapter *adapter = netdev_priv(dev);
79215 -
79216 - return &adapter->stats.net_stats;
79217 -}
79218 -
79219 -static void be_tx_stats_update(struct be_adapter *adapter,
79220 - u32 wrb_cnt, u32 copied, bool stopped)
79221 -{
79222 - struct be_drvr_stats *stats = &adapter->stats.drvr_stats;
79223 - stats->be_tx_reqs++;
79224 - stats->be_tx_wrbs += wrb_cnt;
79225 - stats->be_tx_bytes += copied;
79226 - if (stopped)
79227 - stats->be_tx_stops++;
79228 -
79229 - /* Update tx rate once in two seconds */
79230 - if ((jiffies - stats->be_tx_jiffies) > 2 * HZ) {
79231 - u32 r;
79232 - r = (stats->be_tx_bytes - stats->be_tx_bytes_prev) /
79233 - ((u32) (jiffies - stats->be_tx_jiffies) / HZ);
79234 - r = (r / 1000000); /* M bytes/s */
79235 - stats->be_tx_rate = (r * 8); /* M bits/s */
79236 - stats->be_tx_jiffies = jiffies;
79237 - stats->be_tx_bytes_prev = stats->be_tx_bytes;
79238 - }
79239 -}
79240 -
79241 -/* Determine number of WRB entries needed to xmit data in an skb */
79242 -static u32 wrb_cnt_for_skb(struct sk_buff *skb, bool *dummy)
79243 -{
79244 - int cnt = 0;
79245 - while (skb) {
79246 - if (skb->len > skb->data_len)
79247 - cnt++;
79248 - cnt += skb_shinfo(skb)->nr_frags;
79249 - skb = skb_shinfo(skb)->frag_list;
79250 - }
79251 - /* to account for hdr wrb */
79252 - cnt++;
79253 - if (cnt & 1) {
79254 - /* add a dummy to make it an even num */
79255 - cnt++;
79256 - *dummy = true;
79257 - } else
79258 - *dummy = false;
79259 - BUG_ON(cnt > BE_MAX_TX_FRAG_COUNT);
79260 - return cnt;
79261 -}
79262 -
79263 -static inline void wrb_fill(struct be_eth_wrb *wrb, u64 addr, int len)
79264 -{
79265 - wrb->frag_pa_hi = upper_32_bits(addr);
79266 - wrb->frag_pa_lo = addr & 0xFFFFFFFF;
79267 - wrb->frag_len = len & ETH_WRB_FRAG_LEN_MASK;
79268 -}
79269 -
79270 -static void wrb_fill_hdr(struct be_eth_hdr_wrb *hdr, struct sk_buff *skb,
79271 - bool vlan, u32 wrb_cnt, u32 len)
79272 -{
79273 - memset(hdr, 0, sizeof(*hdr));
79274 -
79275 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, crc, hdr, 1);
79276 -
79277 - if (skb_shinfo(skb)->gso_segs > 1 && skb_shinfo(skb)->gso_size) {
79278 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, lso, hdr, 1);
79279 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, lso_mss,
79280 - hdr, skb_shinfo(skb)->gso_size);
79281 - } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
79282 - if (is_tcp_pkt(skb))
79283 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, tcpcs, hdr, 1);
79284 - else if (is_udp_pkt(skb))
79285 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, udpcs, hdr, 1);
79286 - }
79287 -
79288 - if (vlan && vlan_tx_tag_present(skb)) {
79289 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, vlan, hdr, 1);
79290 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, vlan_tag,
79291 - hdr, vlan_tx_tag_get(skb));
79292 - }
79293 -
79294 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, event, hdr, 1);
79295 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, complete, hdr, 1);
79296 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, num_wrb, hdr, wrb_cnt);
79297 - AMAP_SET_BITS(struct amap_eth_hdr_wrb, len, hdr, len);
79298 -}
79299 -
79300 -
79301 -static int make_tx_wrbs(struct be_adapter *adapter,
79302 - struct sk_buff *skb, u32 wrb_cnt, bool dummy_wrb)
79303 -{
79304 - u64 busaddr;
79305 - u32 i, copied = 0;
79306 - struct pci_dev *pdev = adapter->pdev;
79307 - struct sk_buff *first_skb = skb;
79308 - struct be_queue_info *txq = &adapter->tx_obj.q;
79309 - struct be_eth_wrb *wrb;
79310 - struct be_eth_hdr_wrb *hdr;
79311 -
79312 - atomic_add(wrb_cnt, &txq->used);
79313 - hdr = queue_head_node(txq);
79314 - queue_head_inc(txq);
79315 -
79316 - while (skb) {
79317 - if (skb->len > skb->data_len) {
79318 - int len = skb->len - skb->data_len;
79319 - busaddr = pci_map_single(pdev, skb->data, len,
79320 - PCI_DMA_TODEVICE);
79321 - wrb = queue_head_node(txq);
79322 - wrb_fill(wrb, busaddr, len);
79323 - be_dws_cpu_to_le(wrb, sizeof(*wrb));
79324 - queue_head_inc(txq);
79325 - copied += len;
79326 - }
79327 -
79328 - for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
79329 - struct skb_frag_struct *frag =
79330 - &skb_shinfo(skb)->frags[i];
79331 - busaddr = pci_map_page(pdev, frag->page,
79332 - frag->page_offset,
79333 - frag->size, PCI_DMA_TODEVICE);
79334 - wrb = queue_head_node(txq);
79335 - wrb_fill(wrb, busaddr, frag->size);
79336 - be_dws_cpu_to_le(wrb, sizeof(*wrb));
79337 - queue_head_inc(txq);
79338 - copied += frag->size;
79339 - }
79340 - skb = skb_shinfo(skb)->frag_list;
79341 - }
79342 -
79343 - if (dummy_wrb) {
79344 - wrb = queue_head_node(txq);
79345 - wrb_fill(wrb, 0, 0);
79346 - be_dws_cpu_to_le(wrb, sizeof(*wrb));
79347 - queue_head_inc(txq);
79348 - }
79349 -
79350 - wrb_fill_hdr(hdr, first_skb, adapter->vlan_grp ? true : false,
79351 - wrb_cnt, copied);
79352 - be_dws_cpu_to_le(hdr, sizeof(*hdr));
79353 -
79354 - return copied;
79355 -}
79356 -
79357 -static int be_xmit(struct sk_buff *skb, struct net_device *netdev)
79358 -{
79359 - struct be_adapter *adapter = netdev_priv(netdev);
79360 - struct be_tx_obj *tx_obj = &adapter->tx_obj;
79361 - struct be_queue_info *txq = &tx_obj->q;
79362 - u32 wrb_cnt = 0, copied = 0;
79363 - u32 start = txq->head;
79364 - bool dummy_wrb, stopped = false;
79365 -
79366 - wrb_cnt = wrb_cnt_for_skb(skb, &dummy_wrb);
79367 -
79368 - copied = make_tx_wrbs(adapter, skb, wrb_cnt, dummy_wrb);
79369 -
79370 - /* record the sent skb in the sent_skb table */
79371 - BUG_ON(tx_obj->sent_skb_list[start]);
79372 - tx_obj->sent_skb_list[start] = skb;
79373 -
79374 - /* Ensure that txq has space for the next skb; Else stop the queue
79375 - * *BEFORE* ringing the tx doorbell, so that we serialze the
79376 - * tx compls of the current transmit which'll wake up the queue
79377 - */
79378 - if ((BE_MAX_TX_FRAG_COUNT + atomic_read(&txq->used)) >= txq->len) {
79379 - netif_stop_queue(netdev);
79380 - stopped = true;
79381 - }
79382 -
79383 - be_txq_notify(&adapter->ctrl, txq->id, wrb_cnt);
79384 -
79385 - netdev->trans_start = jiffies;
79386 -
79387 - be_tx_stats_update(adapter, wrb_cnt, copied, stopped);
79388 - return NETDEV_TX_OK;
79389 -}
79390 -
79391 -static int be_change_mtu(struct net_device *netdev, int new_mtu)
79392 -{
79393 - struct be_adapter *adapter = netdev_priv(netdev);
79394 - if (new_mtu < BE_MIN_MTU ||
79395 - new_mtu > BE_MAX_JUMBO_FRAME_SIZE) {
79396 - dev_info(&adapter->pdev->dev,
79397 - "MTU must be between %d and %d bytes\n",
79398 - BE_MIN_MTU, BE_MAX_JUMBO_FRAME_SIZE);
79399 - return -EINVAL;
79400 - }
79401 - dev_info(&adapter->pdev->dev, "MTU changed from %d to %d bytes\n",
79402 - netdev->mtu, new_mtu);
79403 - netdev->mtu = new_mtu;
79404 - return 0;
79405 -}
79406 -
79407 -/*
79408 - * if there are BE_NUM_VLANS_SUPPORTED or lesser number of VLANS configured,
79409 - * program them in BE. If more than BE_NUM_VLANS_SUPPORTED are configured,
79410 - * set the BE in promiscuous VLAN mode.
79411 - */
79412 -static void be_vid_config(struct net_device *netdev)
79413 -{
79414 - struct be_adapter *adapter = netdev_priv(netdev);
79415 - u16 vtag[BE_NUM_VLANS_SUPPORTED];
79416 - u16 ntags = 0, i;
79417 -
79418 - if (adapter->num_vlans <= BE_NUM_VLANS_SUPPORTED) {
79419 - /* Construct VLAN Table to give to HW */
79420 - for (i = 0; i < VLAN_GROUP_ARRAY_LEN; i++) {
79421 - if (adapter->vlan_tag[i]) {
79422 - vtag[ntags] = cpu_to_le16(i);
79423 - ntags++;
79424 - }
79425 - }
79426 - be_cmd_vlan_config(&adapter->ctrl, adapter->if_handle,
79427 - vtag, ntags, 1, 0);
79428 - } else {
79429 - be_cmd_vlan_config(&adapter->ctrl, adapter->if_handle,
79430 - NULL, 0, 1, 1);
79431 - }
79432 -}
79433 -
79434 -static void be_vlan_register(struct net_device *netdev, struct vlan_group *grp)
79435 -{
79436 - struct be_adapter *adapter = netdev_priv(netdev);
79437 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
79438 - struct be_eq_obj *tx_eq = &adapter->tx_eq;
79439 - struct be_ctrl_info *ctrl = &adapter->ctrl;
79440 -
79441 - be_eq_notify(ctrl, rx_eq->q.id, false, false, 0);
79442 - be_eq_notify(ctrl, tx_eq->q.id, false, false, 0);
79443 - adapter->vlan_grp = grp;
79444 - be_eq_notify(ctrl, rx_eq->q.id, true, false, 0);
79445 - be_eq_notify(ctrl, tx_eq->q.id, true, false, 0);
79446 -}
79447 -
79448 -static void be_vlan_add_vid(struct net_device *netdev, u16 vid)
79449 -{
79450 - struct be_adapter *adapter = netdev_priv(netdev);
79451 -
79452 - adapter->num_vlans++;
79453 - adapter->vlan_tag[vid] = 1;
79454 -
79455 - be_vid_config(netdev);
79456 -}
79457 -
79458 -static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
79459 -{
79460 - struct be_adapter *adapter = netdev_priv(netdev);
79461 -
79462 - adapter->num_vlans--;
79463 - adapter->vlan_tag[vid] = 0;
79464 -
79465 - vlan_group_set_device(adapter->vlan_grp, vid, NULL);
79466 - be_vid_config(netdev);
79467 -}
79468 -
79469 -static void be_set_multicast_filter(struct net_device *netdev)
79470 -{
79471 - struct be_adapter *adapter = netdev_priv(netdev);
79472 - struct dev_mc_list *mc_ptr;
79473 - u8 mac_addr[32][ETH_ALEN];
79474 - int i = 0;
79475 -
79476 - if (netdev->flags & IFF_ALLMULTI) {
79477 - /* set BE in Multicast promiscuous */
79478 - be_cmd_mcast_mac_set(&adapter->ctrl,
79479 - adapter->if_handle, NULL, 0, true);
79480 - return;
79481 - }
79482 -
79483 - for (mc_ptr = netdev->mc_list; mc_ptr; mc_ptr = mc_ptr->next) {
79484 - memcpy(&mac_addr[i][0], mc_ptr->dmi_addr, ETH_ALEN);
79485 - if (++i >= 32) {
79486 - be_cmd_mcast_mac_set(&adapter->ctrl,
79487 - adapter->if_handle, &mac_addr[0][0], i, false);
79488 - i = 0;
79489 - }
79490 -
79491 - }
79492 -
79493 - if (i) {
79494 - /* reset the promiscuous mode also. */
79495 - be_cmd_mcast_mac_set(&adapter->ctrl,
79496 - adapter->if_handle, &mac_addr[0][0], i, false);
79497 - }
79498 -}
79499 -
79500 -static void be_set_multicast_list(struct net_device *netdev)
79501 -{
79502 - struct be_adapter *adapter = netdev_priv(netdev);
79503 -
79504 - if (netdev->flags & IFF_PROMISC) {
79505 - be_cmd_promiscuous_config(&adapter->ctrl, adapter->port_num, 1);
79506 - } else {
79507 - be_cmd_promiscuous_config(&adapter->ctrl, adapter->port_num, 0);
79508 - be_set_multicast_filter(netdev);
79509 - }
79510 -}
79511 -
79512 -static void be_rx_rate_update(struct be_adapter *adapter, u32 pktsize,
79513 - u16 numfrags)
79514 -{
79515 - struct be_drvr_stats *stats = &adapter->stats.drvr_stats;
79516 - u32 rate;
79517 -
79518 - stats->be_rx_compl++;
79519 - stats->be_rx_frags += numfrags;
79520 - stats->be_rx_bytes += pktsize;
79521 -
79522 - /* Update the rate once in two seconds */
79523 - if ((jiffies - stats->be_rx_jiffies) < 2 * HZ)
79524 - return;
79525 -
79526 - rate = (stats->be_rx_bytes - stats->be_rx_bytes_prev) /
79527 - ((u32) (jiffies - stats->be_rx_jiffies) / HZ);
79528 - rate = (rate / 1000000); /* MB/Sec */
79529 - stats->be_rx_rate = (rate * 8); /* Mega Bits/Sec */
79530 - stats->be_rx_jiffies = jiffies;
79531 - stats->be_rx_bytes_prev = stats->be_rx_bytes;
79532 -}
79533 -
79534 -static struct be_rx_page_info *
79535 -get_rx_page_info(struct be_adapter *adapter, u16 frag_idx)
79536 -{
79537 - struct be_rx_page_info *rx_page_info;
79538 - struct be_queue_info *rxq = &adapter->rx_obj.q;
79539 -
79540 - rx_page_info = &adapter->rx_obj.page_info_tbl[frag_idx];
79541 - BUG_ON(!rx_page_info->page);
79542 -
79543 - if (rx_page_info->last_page_user)
79544 - pci_unmap_page(adapter->pdev, pci_unmap_addr(rx_page_info, bus),
79545 - adapter->big_page_size, PCI_DMA_FROMDEVICE);
79546 -
79547 - atomic_dec(&rxq->used);
79548 - return rx_page_info;
79549 -}
79550 -
79551 -/* Throwaway the data in the Rx completion */
79552 -static void be_rx_compl_discard(struct be_adapter *adapter,
79553 - struct be_eth_rx_compl *rxcp)
79554 -{
79555 - struct be_queue_info *rxq = &adapter->rx_obj.q;
79556 - struct be_rx_page_info *page_info;
79557 - u16 rxq_idx, i, num_rcvd;
79558 -
79559 - rxq_idx = AMAP_GET_BITS(struct amap_eth_rx_compl, fragndx, rxcp);
79560 - num_rcvd = AMAP_GET_BITS(struct amap_eth_rx_compl, numfrags, rxcp);
79561 -
79562 - for (i = 0; i < num_rcvd; i++) {
79563 - page_info = get_rx_page_info(adapter, rxq_idx);
79564 - put_page(page_info->page);
79565 - memset(page_info, 0, sizeof(*page_info));
79566 - index_inc(&rxq_idx, rxq->len);
79567 - }
79568 -}
79569 -
79570 -/*
79571 - * skb_fill_rx_data forms a complete skb for an ether frame
79572 - * indicated by rxcp.
79573 - */
79574 -static void skb_fill_rx_data(struct be_adapter *adapter,
79575 - struct sk_buff *skb, struct be_eth_rx_compl *rxcp)
79576 -{
79577 - struct be_queue_info *rxq = &adapter->rx_obj.q;
79578 - struct be_rx_page_info *page_info;
79579 - u16 rxq_idx, i, num_rcvd;
79580 - u32 pktsize, hdr_len, curr_frag_len;
79581 - u8 *start;
79582 -
79583 - rxq_idx = AMAP_GET_BITS(struct amap_eth_rx_compl, fragndx, rxcp);
79584 - pktsize = AMAP_GET_BITS(struct amap_eth_rx_compl, pktsize, rxcp);
79585 - num_rcvd = AMAP_GET_BITS(struct amap_eth_rx_compl, numfrags, rxcp);
79586 -
79587 - page_info = get_rx_page_info(adapter, rxq_idx);
79588 -
79589 - start = page_address(page_info->page) + page_info->page_offset;
79590 - prefetch(start);
79591 -
79592 - /* Copy data in the first descriptor of this completion */
79593 - curr_frag_len = min(pktsize, rx_frag_size);
79594 -
79595 - /* Copy the header portion into skb_data */
79596 - hdr_len = min((u32)BE_HDR_LEN, curr_frag_len);
79597 - memcpy(skb->data, start, hdr_len);
79598 - skb->len = curr_frag_len;
79599 - if (curr_frag_len <= BE_HDR_LEN) { /* tiny packet */
79600 - /* Complete packet has now been moved to data */
79601 - put_page(page_info->page);
79602 - skb->data_len = 0;
79603 - skb->tail += curr_frag_len;
79604 - } else {
79605 - skb_shinfo(skb)->nr_frags = 1;
79606 - skb_shinfo(skb)->frags[0].page = page_info->page;
79607 - skb_shinfo(skb)->frags[0].page_offset =
79608 - page_info->page_offset + hdr_len;
79609 - skb_shinfo(skb)->frags[0].size = curr_frag_len - hdr_len;
79610 - skb->data_len = curr_frag_len - hdr_len;
79611 - skb->tail += hdr_len;
79612 - }
79613 - memset(page_info, 0, sizeof(*page_info));
79614 -
79615 - if (pktsize <= rx_frag_size) {
79616 - BUG_ON(num_rcvd != 1);
79617 - return;
79618 - }
79619 -
79620 - /* More frags present for this completion */
79621 - pktsize -= curr_frag_len; /* account for above copied frag */
79622 - for (i = 1; i < num_rcvd; i++) {
79623 - index_inc(&rxq_idx, rxq->len);
79624 - page_info = get_rx_page_info(adapter, rxq_idx);
79625 -
79626 - curr_frag_len = min(pktsize, rx_frag_size);
79627 -
79628 - skb_shinfo(skb)->frags[i].page = page_info->page;
79629 - skb_shinfo(skb)->frags[i].page_offset = page_info->page_offset;
79630 - skb_shinfo(skb)->frags[i].size = curr_frag_len;
79631 - skb->len += curr_frag_len;
79632 - skb->data_len += curr_frag_len;
79633 - skb_shinfo(skb)->nr_frags++;
79634 - pktsize -= curr_frag_len;
79635 -
79636 - memset(page_info, 0, sizeof(*page_info));
79637 - }
79638 -
79639 - be_rx_rate_update(adapter, pktsize, num_rcvd);
79640 - return;
79641 -}
79642 -
79643 -/* Process the RX completion indicated by rxcp when LRO is disabled */
79644 -static void be_rx_compl_process(struct be_adapter *adapter,
79645 - struct be_eth_rx_compl *rxcp)
79646 -{
79647 - struct sk_buff *skb;
79648 - u32 vtp, vid;
79649 - int l4_cksm;
79650 -
79651 - l4_cksm = AMAP_GET_BITS(struct amap_eth_rx_compl, l4_cksm, rxcp);
79652 - vtp = AMAP_GET_BITS(struct amap_eth_rx_compl, vtp, rxcp);
79653 -
79654 - skb = netdev_alloc_skb(adapter->netdev, BE_HDR_LEN + NET_IP_ALIGN);
79655 - if (!skb) {
79656 - if (net_ratelimit())
79657 - dev_warn(&adapter->pdev->dev, "skb alloc failed\n");
79658 - be_rx_compl_discard(adapter, rxcp);
79659 - return;
79660 - }
79661 -
79662 - skb_reserve(skb, NET_IP_ALIGN);
79663 -
79664 - skb_fill_rx_data(adapter, skb, rxcp);
79665 -
79666 - if (l4_cksm && adapter->rx_csum)
79667 - skb->ip_summed = CHECKSUM_UNNECESSARY;
79668 - else
79669 - skb->ip_summed = CHECKSUM_NONE;
79670 -
79671 - skb->truesize = skb->len + sizeof(struct sk_buff);
79672 - skb->protocol = eth_type_trans(skb, adapter->netdev);
79673 - skb->dev = adapter->netdev;
79674 -
79675 - if (vtp) {
79676 - if (!adapter->vlan_grp || adapter->num_vlans == 0) {
79677 - kfree_skb(skb);
79678 - return;
79679 - }
79680 - vid = AMAP_GET_BITS(struct amap_eth_rx_compl, vlan_tag, rxcp);
79681 - vid = be16_to_cpu(vid);
79682 - vlan_hwaccel_receive_skb(skb, adapter->vlan_grp, vid);
79683 - } else {
79684 - netif_receive_skb(skb);
79685 - }
79686 -
79687 - adapter->netdev->last_rx = jiffies;
79688 -
79689 - return;
79690 -}
79691 -
79692 -/* Process the RX completion indicated by rxcp when LRO is enabled */
79693 -static void be_rx_compl_process_lro(struct be_adapter *adapter,
79694 - struct be_eth_rx_compl *rxcp)
79695 -{
79696 - struct be_rx_page_info *page_info;
79697 - struct skb_frag_struct rx_frags[BE_MAX_FRAGS_PER_FRAME];
79698 - struct be_queue_info *rxq = &adapter->rx_obj.q;
79699 - u32 num_rcvd, pkt_size, remaining, vlanf, curr_frag_len;
79700 - u16 i, rxq_idx = 0, vid;
79701 -
79702 - num_rcvd = AMAP_GET_BITS(struct amap_eth_rx_compl, numfrags, rxcp);
79703 - pkt_size = AMAP_GET_BITS(struct amap_eth_rx_compl, pktsize, rxcp);
79704 - vlanf = AMAP_GET_BITS(struct amap_eth_rx_compl, vtp, rxcp);
79705 - rxq_idx = AMAP_GET_BITS(struct amap_eth_rx_compl, fragndx, rxcp);
79706 -
79707 - remaining = pkt_size;
79708 - for (i = 0; i < num_rcvd; i++) {
79709 - page_info = get_rx_page_info(adapter, rxq_idx);
79710 -
79711 - curr_frag_len = min(remaining, rx_frag_size);
79712 -
79713 - rx_frags[i].page = page_info->page;
79714 - rx_frags[i].page_offset = page_info->page_offset;
79715 - rx_frags[i].size = curr_frag_len;
79716 - remaining -= curr_frag_len;
79717 -
79718 - index_inc(&rxq_idx, rxq->len);
79719 -
79720 - memset(page_info, 0, sizeof(*page_info));
79721 - }
79722 -
79723 - if (likely(!vlanf)) {
79724 - lro_receive_frags(&adapter->rx_obj.lro_mgr, rx_frags, pkt_size,
79725 - pkt_size, NULL, 0);
79726 - } else {
79727 - vid = AMAP_GET_BITS(struct amap_eth_rx_compl, vlan_tag, rxcp);
79728 - vid = be16_to_cpu(vid);
79729 -
79730 - if (!adapter->vlan_grp || adapter->num_vlans == 0)
79731 - return;
79732 -
79733 - lro_vlan_hwaccel_receive_frags(&adapter->rx_obj.lro_mgr,
79734 - rx_frags, pkt_size, pkt_size, adapter->vlan_grp,
79735 - vid, NULL, 0);
79736 - }
79737 -
79738 - be_rx_rate_update(adapter, pkt_size, num_rcvd);
79739 - return;
79740 -}
79741 -
79742 -static struct be_eth_rx_compl *be_rx_compl_get(struct be_adapter *adapter)
79743 -{
79744 - struct be_eth_rx_compl *rxcp = queue_tail_node(&adapter->rx_obj.cq);
79745 -
79746 - if (rxcp->dw[offsetof(struct amap_eth_rx_compl, valid) / 32] == 0)
79747 - return NULL;
79748 -
79749 - be_dws_le_to_cpu(rxcp, sizeof(*rxcp));
79750 -
79751 - rxcp->dw[offsetof(struct amap_eth_rx_compl, valid) / 32] = 0;
79752 -
79753 - queue_tail_inc(&adapter->rx_obj.cq);
79754 - return rxcp;
79755 -}
79756 -
79757 -static inline struct page *be_alloc_pages(u32 size)
79758 -{
79759 - gfp_t alloc_flags = GFP_ATOMIC;
79760 - u32 order = get_order(size);
79761 - if (order > 0)
79762 - alloc_flags |= __GFP_COMP;
79763 - return alloc_pages(alloc_flags, order);
79764 -}
79765 -
79766 -/*
79767 - * Allocate a page, split it to fragments of size rx_frag_size and post as
79768 - * receive buffers to BE
79769 - */
79770 -static void be_post_rx_frags(struct be_adapter *adapter)
79771 -{
79772 - struct be_rx_page_info *page_info_tbl = adapter->rx_obj.page_info_tbl;
79773 - struct be_rx_page_info *page_info = NULL;
79774 - struct be_queue_info *rxq = &adapter->rx_obj.q;
79775 - struct page *pagep = NULL;
79776 - struct be_eth_rx_d *rxd;
79777 - u64 page_dmaaddr = 0, frag_dmaaddr;
79778 - u32 posted, page_offset = 0;
79779 -
79780 -
79781 - page_info = &page_info_tbl[rxq->head];
79782 - for (posted = 0; posted < MAX_RX_POST && !page_info->page; posted++) {
79783 - if (!pagep) {
79784 - pagep = be_alloc_pages(adapter->big_page_size);
79785 - if (unlikely(!pagep)) {
79786 - drvr_stats(adapter)->be_ethrx_post_fail++;
79787 - break;
79788 - }
79789 - page_dmaaddr = pci_map_page(adapter->pdev, pagep, 0,
79790 - adapter->big_page_size,
79791 - PCI_DMA_FROMDEVICE);
79792 - page_info->page_offset = 0;
79793 - } else {
79794 - get_page(pagep);
79795 - page_info->page_offset = page_offset + rx_frag_size;
79796 - }
79797 - page_offset = page_info->page_offset;
79798 - page_info->page = pagep;
79799 - pci_unmap_addr_set(page_info, bus, page_dmaaddr);
79800 - frag_dmaaddr = page_dmaaddr + page_info->page_offset;
79801 -
79802 - rxd = queue_head_node(rxq);
79803 - rxd->fragpa_lo = cpu_to_le32(frag_dmaaddr & 0xFFFFFFFF);
79804 - rxd->fragpa_hi = cpu_to_le32(upper_32_bits(frag_dmaaddr));
79805 - queue_head_inc(rxq);
79806 -
79807 - /* Any space left in the current big page for another frag? */
79808 - if ((page_offset + rx_frag_size + rx_frag_size) >
79809 - adapter->big_page_size) {
79810 - pagep = NULL;
79811 - page_info->last_page_user = true;
79812 - }
79813 - page_info = &page_info_tbl[rxq->head];
79814 - }
79815 - if (pagep)
79816 - page_info->last_page_user = true;
79817 -
79818 - if (posted) {
79819 - atomic_add(posted, &rxq->used);
79820 - be_rxq_notify(&adapter->ctrl, rxq->id, posted);
79821 - } else if (atomic_read(&rxq->used) == 0) {
79822 - /* Let be_worker replenish when memory is available */
79823 - adapter->rx_post_starved = true;
79824 - }
79825 -
79826 - return;
79827 -}
79828 -
79829 -static struct be_eth_tx_compl *
79830 -be_tx_compl_get(struct be_adapter *adapter)
79831 -{
79832 - struct be_queue_info *tx_cq = &adapter->tx_obj.cq;
79833 - struct be_eth_tx_compl *txcp = queue_tail_node(tx_cq);
79834 -
79835 - if (txcp->dw[offsetof(struct amap_eth_tx_compl, valid) / 32] == 0)
79836 - return NULL;
79837 -
79838 - be_dws_le_to_cpu(txcp, sizeof(*txcp));
79839 -
79840 - txcp->dw[offsetof(struct amap_eth_tx_compl, valid) / 32] = 0;
79841 -
79842 - queue_tail_inc(tx_cq);
79843 - return txcp;
79844 -}
79845 -
79846 -static void be_tx_compl_process(struct be_adapter *adapter, u16 last_index)
79847 -{
79848 - struct be_queue_info *txq = &adapter->tx_obj.q;
79849 - struct be_eth_wrb *wrb;
79850 - struct sk_buff **sent_skbs = adapter->tx_obj.sent_skb_list;
79851 - struct sk_buff *sent_skb;
79852 - u64 busaddr;
79853 - u16 cur_index, num_wrbs = 0;
79854 -
79855 - cur_index = txq->tail;
79856 - sent_skb = sent_skbs[cur_index];
79857 - BUG_ON(!sent_skb);
79858 - sent_skbs[cur_index] = NULL;
79859 -
79860 - do {
79861 - cur_index = txq->tail;
79862 - wrb = queue_tail_node(txq);
79863 - be_dws_le_to_cpu(wrb, sizeof(*wrb));
79864 - busaddr = ((u64)wrb->frag_pa_hi << 32) | (u64)wrb->frag_pa_lo;
79865 - if (busaddr != 0) {
79866 - pci_unmap_single(adapter->pdev, busaddr,
79867 - wrb->frag_len, PCI_DMA_TODEVICE);
79868 - }
79869 - num_wrbs++;
79870 - queue_tail_inc(txq);
79871 - } while (cur_index != last_index);
79872 -
79873 - atomic_sub(num_wrbs, &txq->used);
79874 -
79875 - kfree_skb(sent_skb);
79876 -}
79877 -
79878 -static void be_rx_q_clean(struct be_adapter *adapter)
79879 -{
79880 - struct be_rx_page_info *page_info;
79881 - struct be_queue_info *rxq = &adapter->rx_obj.q;
79882 - struct be_queue_info *rx_cq = &adapter->rx_obj.cq;
79883 - struct be_eth_rx_compl *rxcp;
79884 - u16 tail;
79885 -
79886 - /* First cleanup pending rx completions */
79887 - while ((rxcp = be_rx_compl_get(adapter)) != NULL) {
79888 - be_rx_compl_discard(adapter, rxcp);
79889 - be_cq_notify(&adapter->ctrl, rx_cq->id, true, 1);
79890 - }
79891 -
79892 - /* Then free posted rx buffer that were not used */
79893 - tail = (rxq->head + rxq->len - atomic_read(&rxq->used)) % rxq->len;
79894 - for (; tail != rxq->head; index_inc(&tail, rxq->len)) {
79895 - page_info = get_rx_page_info(adapter, tail);
79896 - put_page(page_info->page);
79897 - memset(page_info, 0, sizeof(*page_info));
79898 - }
79899 - BUG_ON(atomic_read(&rxq->used));
79900 -}
79901 -
79902 -static void be_tx_q_clean(struct be_adapter *adapter)
79903 -{
79904 - struct sk_buff **sent_skbs = adapter->tx_obj.sent_skb_list;
79905 - struct sk_buff *sent_skb;
79906 - struct be_queue_info *txq = &adapter->tx_obj.q;
79907 - u16 last_index;
79908 - bool dummy_wrb;
79909 -
79910 - while (atomic_read(&txq->used)) {
79911 - sent_skb = sent_skbs[txq->tail];
79912 - last_index = txq->tail;
79913 - index_adv(&last_index,
79914 - wrb_cnt_for_skb(sent_skb, &dummy_wrb) - 1, txq->len);
79915 - be_tx_compl_process(adapter, last_index);
79916 - }
79917 -}
79918 -
79919 -static void be_tx_queues_destroy(struct be_adapter *adapter)
79920 -{
79921 - struct be_queue_info *q;
79922 -
79923 - q = &adapter->tx_obj.q;
79924 - if (q->created)
79925 - be_cmd_q_destroy(&adapter->ctrl, q, QTYPE_TXQ);
79926 - be_queue_free(adapter, q);
79927 -
79928 - q = &adapter->tx_obj.cq;
79929 - if (q->created)
79930 - be_cmd_q_destroy(&adapter->ctrl, q, QTYPE_CQ);
79931 - be_queue_free(adapter, q);
79932 -
79933 - /* No more tx completions can be rcvd now; clean up if there are
79934 - * any pending completions or pending tx requests */
79935 - be_tx_q_clean(adapter);
79936 -
79937 - q = &adapter->tx_eq.q;
79938 - if (q->created)
79939 - be_cmd_q_destroy(&adapter->ctrl, q, QTYPE_EQ);
79940 - be_queue_free(adapter, q);
79941 -}
79942 -
79943 -static int be_tx_queues_create(struct be_adapter *adapter)
79944 -{
79945 - struct be_queue_info *eq, *q, *cq;
79946 -
79947 - adapter->tx_eq.max_eqd = 0;
79948 - adapter->tx_eq.min_eqd = 0;
79949 - adapter->tx_eq.cur_eqd = 96;
79950 - adapter->tx_eq.enable_aic = false;
79951 - /* Alloc Tx Event queue */
79952 - eq = &adapter->tx_eq.q;
79953 - if (be_queue_alloc(adapter, eq, EVNT_Q_LEN, sizeof(struct be_eq_entry)))
79954 - return -1;
79955 -
79956 - /* Ask BE to create Tx Event queue */
79957 - if (be_cmd_eq_create(&adapter->ctrl, eq, adapter->tx_eq.cur_eqd))
79958 - goto tx_eq_free;
79959 - /* Alloc TX eth compl queue */
79960 - cq = &adapter->tx_obj.cq;
79961 - if (be_queue_alloc(adapter, cq, TX_CQ_LEN,
79962 - sizeof(struct be_eth_tx_compl)))
79963 - goto tx_eq_destroy;
79964 -
79965 - /* Ask BE to create Tx eth compl queue */
79966 - if (be_cmd_cq_create(&adapter->ctrl, cq, eq, false, false, 3))
79967 - goto tx_cq_free;
79968 -
79969 - /* Alloc TX eth queue */
79970 - q = &adapter->tx_obj.q;
79971 - if (be_queue_alloc(adapter, q, TX_Q_LEN, sizeof(struct be_eth_wrb)))
79972 - goto tx_cq_destroy;
79973 -
79974 - /* Ask BE to create Tx eth queue */
79975 - if (be_cmd_txq_create(&adapter->ctrl, q, cq))
79976 - goto tx_q_free;
79977 - return 0;
79978 -
79979 -tx_q_free:
79980 - be_queue_free(adapter, q);
79981 -tx_cq_destroy:
79982 - be_cmd_q_destroy(&adapter->ctrl, cq, QTYPE_CQ);
79983 -tx_cq_free:
79984 - be_queue_free(adapter, cq);
79985 -tx_eq_destroy:
79986 - be_cmd_q_destroy(&adapter->ctrl, eq, QTYPE_EQ);
79987 -tx_eq_free:
79988 - be_queue_free(adapter, eq);
79989 - return -1;
79990 -}
79991 -
79992 -static void be_rx_queues_destroy(struct be_adapter *adapter)
79993 -{
79994 - struct be_queue_info *q;
79995 -
79996 - q = &adapter->rx_obj.q;
79997 - if (q->created) {
79998 - be_cmd_q_destroy(&adapter->ctrl, q, QTYPE_RXQ);
79999 - be_rx_q_clean(adapter);
80000 - }
80001 - be_queue_free(adapter, q);
80002 -
80003 - q = &adapter->rx_obj.cq;
80004 - if (q->created)
80005 - be_cmd_q_destroy(&adapter->ctrl, q, QTYPE_CQ);
80006 - be_queue_free(adapter, q);
80007 -
80008 - q = &adapter->rx_eq.q;
80009 - if (q->created)
80010 - be_cmd_q_destroy(&adapter->ctrl, q, QTYPE_EQ);
80011 - be_queue_free(adapter, q);
80012 -}
80013 -
80014 -static int be_rx_queues_create(struct be_adapter *adapter)
80015 -{
80016 - struct be_queue_info *eq, *q, *cq;
80017 - int rc;
80018 -
80019 - adapter->max_rx_coal = BE_MAX_FRAGS_PER_FRAME;
80020 - adapter->big_page_size = (1 << get_order(rx_frag_size)) * PAGE_SIZE;
80021 - adapter->rx_eq.max_eqd = BE_MAX_EQD;
80022 - adapter->rx_eq.min_eqd = 0;
80023 - adapter->rx_eq.cur_eqd = 0;
80024 - adapter->rx_eq.enable_aic = true;
80025 -
80026 - /* Alloc Rx Event queue */
80027 - eq = &adapter->rx_eq.q;
80028 - rc = be_queue_alloc(adapter, eq, EVNT_Q_LEN,
80029 - sizeof(struct be_eq_entry));
80030 - if (rc)
80031 - return rc;
80032 -
80033 - /* Ask BE to create Rx Event queue */
80034 - rc = be_cmd_eq_create(&adapter->ctrl, eq, adapter->rx_eq.cur_eqd);
80035 - if (rc)
80036 - goto rx_eq_free;
80037 -
80038 - /* Alloc RX eth compl queue */
80039 - cq = &adapter->rx_obj.cq;
80040 - rc = be_queue_alloc(adapter, cq, RX_CQ_LEN,
80041 - sizeof(struct be_eth_rx_compl));
80042 - if (rc)
80043 - goto rx_eq_destroy;
80044 -
80045 - /* Ask BE to create Rx eth compl queue */
80046 - rc = be_cmd_cq_create(&adapter->ctrl, cq, eq, false, false, 3);
80047 - if (rc)
80048 - goto rx_cq_free;
80049 -
80050 - /* Alloc RX eth queue */
80051 - q = &adapter->rx_obj.q;
80052 - rc = be_queue_alloc(adapter, q, RX_Q_LEN, sizeof(struct be_eth_rx_d));
80053 - if (rc)
80054 - goto rx_cq_destroy;
80055 -
80056 - /* Ask BE to create Rx eth queue */
80057 - rc = be_cmd_rxq_create(&adapter->ctrl, q, cq->id, rx_frag_size,
80058 - BE_MAX_JUMBO_FRAME_SIZE, adapter->if_handle, false);
80059 - if (rc)
80060 - goto rx_q_free;
80061 -
80062 - return 0;
80063 -rx_q_free:
80064 - be_queue_free(adapter, q);
80065 -rx_cq_destroy:
80066 - be_cmd_q_destroy(&adapter->ctrl, cq, QTYPE_CQ);
80067 -rx_cq_free:
80068 - be_queue_free(adapter, cq);
80069 -rx_eq_destroy:
80070 - be_cmd_q_destroy(&adapter->ctrl, eq, QTYPE_EQ);
80071 -rx_eq_free:
80072 - be_queue_free(adapter, eq);
80073 - return rc;
80074 -}
80075 -static bool event_get(struct be_eq_obj *eq_obj, u16 *rid)
80076 -{
80077 - struct be_eq_entry *entry = queue_tail_node(&eq_obj->q);
80078 - u32 evt = entry->evt;
80079 -
80080 - if (!evt)
80081 - return false;
80082 -
80083 - evt = le32_to_cpu(evt);
80084 - *rid = (evt >> EQ_ENTRY_RES_ID_SHIFT) & EQ_ENTRY_RES_ID_MASK;
80085 - entry->evt = 0;
80086 - queue_tail_inc(&eq_obj->q);
80087 - return true;
80088 -}
80089 -
80090 -static int event_handle(struct be_ctrl_info *ctrl,
80091 - struct be_eq_obj *eq_obj)
80092 -{
80093 - u16 rid = 0, num = 0;
80094 -
80095 - while (event_get(eq_obj, &rid))
80096 - num++;
80097 -
80098 - /* We can see an interrupt and no event */
80099 - be_eq_notify(ctrl, eq_obj->q.id, true, true, num);
80100 - if (num)
80101 - napi_schedule(&eq_obj->napi);
80102 -
80103 - return num;
80104 -}
80105 -
80106 -static irqreturn_t be_intx(int irq, void *dev)
80107 -{
80108 - struct be_adapter *adapter = dev;
80109 - struct be_ctrl_info *ctrl = &adapter->ctrl;
80110 - int rx, tx;
80111 -
80112 - tx = event_handle(ctrl, &adapter->tx_eq);
80113 - rx = event_handle(ctrl, &adapter->rx_eq);
80114 -
80115 - if (rx || tx)
80116 - return IRQ_HANDLED;
80117 - else
80118 - return IRQ_NONE;
80119 -}
80120 -
80121 -static irqreturn_t be_msix_rx(int irq, void *dev)
80122 -{
80123 - struct be_adapter *adapter = dev;
80124 -
80125 - event_handle(&adapter->ctrl, &adapter->rx_eq);
80126 -
80127 - return IRQ_HANDLED;
80128 -}
80129 -
80130 -static irqreturn_t be_msix_tx(int irq, void *dev)
80131 -{
80132 - struct be_adapter *adapter = dev;
80133 -
80134 - event_handle(&adapter->ctrl, &adapter->tx_eq);
80135 -
80136 - return IRQ_HANDLED;
80137 -}
80138 -
80139 -static inline bool do_lro(struct be_adapter *adapter,
80140 - struct be_eth_rx_compl *rxcp)
80141 -{
80142 - int err = AMAP_GET_BITS(struct amap_eth_rx_compl, err, rxcp);
80143 - int tcp_frame = AMAP_GET_BITS(struct amap_eth_rx_compl, tcpf, rxcp);
80144 -
80145 - if (err)
80146 - drvr_stats(adapter)->be_rxcp_err++;
80147 -
80148 - return (!tcp_frame || err || (adapter->max_rx_coal <= 1)) ?
80149 - false : true;
80150 -}
80151 -
80152 -int be_poll_rx(struct napi_struct *napi, int budget)
80153 -{
80154 - struct be_eq_obj *rx_eq = container_of(napi, struct be_eq_obj, napi);
80155 - struct be_adapter *adapter =
80156 - container_of(rx_eq, struct be_adapter, rx_eq);
80157 - struct be_queue_info *rx_cq = &adapter->rx_obj.cq;
80158 - struct be_eth_rx_compl *rxcp;
80159 - u32 work_done;
80160 -
80161 - for (work_done = 0; work_done < budget; work_done++) {
80162 - rxcp = be_rx_compl_get(adapter);
80163 - if (!rxcp)
80164 - break;
80165 -
80166 - if (do_lro(adapter, rxcp))
80167 - be_rx_compl_process_lro(adapter, rxcp);
80168 - else
80169 - be_rx_compl_process(adapter, rxcp);
80170 - }
80171 -
80172 - lro_flush_all(&adapter->rx_obj.lro_mgr);
80173 -
80174 - /* Refill the queue */
80175 - if (atomic_read(&adapter->rx_obj.q.used) < RX_FRAGS_REFILL_WM)
80176 - be_post_rx_frags(adapter);
80177 -
80178 - /* All consumed */
80179 - if (work_done < budget) {
80180 - napi_complete(napi);
80181 - be_cq_notify(&adapter->ctrl, rx_cq->id, true, work_done);
80182 - } else {
80183 - /* More to be consumed; continue with interrupts disabled */
80184 - be_cq_notify(&adapter->ctrl, rx_cq->id, false, work_done);
80185 - }
80186 - return work_done;
80187 -}
80188 -
80189 -/* For TX we don't honour budget; consume everything */
80190 -int be_poll_tx(struct napi_struct *napi, int budget)
80191 -{
80192 - struct be_eq_obj *tx_eq = container_of(napi, struct be_eq_obj, napi);
80193 - struct be_adapter *adapter =
80194 - container_of(tx_eq, struct be_adapter, tx_eq);
80195 - struct be_tx_obj *tx_obj = &adapter->tx_obj;
80196 - struct be_queue_info *tx_cq = &tx_obj->cq;
80197 - struct be_queue_info *txq = &tx_obj->q;
80198 - struct be_eth_tx_compl *txcp;
80199 - u32 num_cmpl = 0;
80200 - u16 end_idx;
80201 -
80202 - while ((txcp = be_tx_compl_get(adapter))) {
80203 - end_idx = AMAP_GET_BITS(struct amap_eth_tx_compl,
80204 - wrb_index, txcp);
80205 - be_tx_compl_process(adapter, end_idx);
80206 - num_cmpl++;
80207 - }
80208 -
80209 - /* As Tx wrbs have been freed up, wake up netdev queue if
80210 - * it was stopped due to lack of tx wrbs.
80211 - */
80212 - if (netif_queue_stopped(adapter->netdev) &&
80213 - atomic_read(&txq->used) < txq->len / 2) {
80214 - netif_wake_queue(adapter->netdev);
80215 - }
80216 -
80217 - napi_complete(napi);
80218 -
80219 - be_cq_notify(&adapter->ctrl, tx_cq->id, true, num_cmpl);
80220 -
80221 - drvr_stats(adapter)->be_tx_events++;
80222 - drvr_stats(adapter)->be_tx_compl += num_cmpl;
80223 -
80224 - return 1;
80225 -}
80226 -
80227 -static void be_worker(struct work_struct *work)
80228 -{
80229 - struct be_adapter *adapter =
80230 - container_of(work, struct be_adapter, work.work);
80231 - int status;
80232 -
80233 - /* Check link */
80234 - be_link_status_update(adapter);
80235 -
80236 - /* Get Stats */
80237 - status = be_cmd_get_stats(&adapter->ctrl, &adapter->stats.cmd);
80238 - if (!status)
80239 - netdev_stats_update(adapter);
80240 -
80241 - /* Set EQ delay */
80242 - be_rx_eqd_update(adapter);
80243 -
80244 - if (adapter->rx_post_starved) {
80245 - adapter->rx_post_starved = false;
80246 - be_post_rx_frags(adapter);
80247 - }
80248 -
80249 - schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
80250 -}
80251 -
80252 -static void be_msix_enable(struct be_adapter *adapter)
80253 -{
80254 - int i, status;
80255 -
80256 - for (i = 0; i < BE_NUM_MSIX_VECTORS; i++)
80257 - adapter->msix_entries[i].entry = i;
80258 -
80259 - status = pci_enable_msix(adapter->pdev, adapter->msix_entries,
80260 - BE_NUM_MSIX_VECTORS);
80261 - if (status == 0)
80262 - adapter->msix_enabled = true;
80263 - return;
80264 -}
80265 -
80266 -static inline int be_msix_vec_get(struct be_adapter *adapter, u32 eq_id)
80267 -{
80268 - return adapter->msix_entries[eq_id -
80269 - 8 * adapter->ctrl.pci_func].vector;
80270 -}
80271 -
80272 -static int be_msix_register(struct be_adapter *adapter)
80273 -{
80274 - struct net_device *netdev = adapter->netdev;
80275 - struct be_eq_obj *tx_eq = &adapter->tx_eq;
80276 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
80277 - int status, vec;
80278 -
80279 - sprintf(tx_eq->desc, "%s-tx", netdev->name);
80280 - vec = be_msix_vec_get(adapter, tx_eq->q.id);
80281 - status = request_irq(vec, be_msix_tx, 0, tx_eq->desc, adapter);
80282 - if (status)
80283 - goto err;
80284 -
80285 - sprintf(rx_eq->desc, "%s-rx", netdev->name);
80286 - vec = be_msix_vec_get(adapter, rx_eq->q.id);
80287 - status = request_irq(vec, be_msix_rx, 0, rx_eq->desc, adapter);
80288 - if (status) { /* Free TX IRQ */
80289 - vec = be_msix_vec_get(adapter, tx_eq->q.id);
80290 - free_irq(vec, adapter);
80291 - goto err;
80292 - }
80293 - return 0;
80294 -err:
80295 - dev_warn(&adapter->pdev->dev,
80296 - "MSIX Request IRQ failed - err %d\n", status);
80297 - pci_disable_msix(adapter->pdev);
80298 - adapter->msix_enabled = false;
80299 - return status;
80300 -}
80301 -
80302 -static int be_irq_register(struct be_adapter *adapter)
80303 -{
80304 - struct net_device *netdev = adapter->netdev;
80305 - int status;
80306 -
80307 - if (adapter->msix_enabled) {
80308 - status = be_msix_register(adapter);
80309 - if (status == 0)
80310 - goto done;
80311 - }
80312 -
80313 - /* INTx */
80314 - netdev->irq = adapter->pdev->irq;
80315 - status = request_irq(netdev->irq, be_intx, IRQF_SHARED, netdev->name,
80316 - adapter);
80317 - if (status) {
80318 - dev_err(&adapter->pdev->dev,
80319 - "INTx request IRQ failed - err %d\n", status);
80320 - return status;
80321 - }
80322 -done:
80323 - adapter->isr_registered = true;
80324 - return 0;
80325 -}
80326 -
80327 -static void be_irq_unregister(struct be_adapter *adapter)
80328 -{
80329 - struct net_device *netdev = adapter->netdev;
80330 - int vec;
80331 -
80332 - if (!adapter->isr_registered)
80333 - return;
80334 -
80335 - /* INTx */
80336 - if (!adapter->msix_enabled) {
80337 - free_irq(netdev->irq, adapter);
80338 - goto done;
80339 - }
80340 -
80341 - /* MSIx */
80342 - vec = be_msix_vec_get(adapter, adapter->tx_eq.q.id);
80343 - free_irq(vec, adapter);
80344 - vec = be_msix_vec_get(adapter, adapter->rx_eq.q.id);
80345 - free_irq(vec, adapter);
80346 -done:
80347 - adapter->isr_registered = false;
80348 - return;
80349 -}
80350 -
80351 -static int be_open(struct net_device *netdev)
80352 -{
80353 - struct be_adapter *adapter = netdev_priv(netdev);
80354 - struct be_ctrl_info *ctrl = &adapter->ctrl;
80355 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
80356 - struct be_eq_obj *tx_eq = &adapter->tx_eq;
80357 - u32 if_flags;
80358 - int status;
80359 -
80360 - if_flags = BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_PROMISCUOUS |
80361 - BE_IF_FLAGS_MCAST_PROMISCUOUS | BE_IF_FLAGS_UNTAGGED |
80362 - BE_IF_FLAGS_PASS_L3L4_ERRORS;
80363 - status = be_cmd_if_create(ctrl, if_flags, netdev->dev_addr,
80364 - false/* pmac_invalid */, &adapter->if_handle,
80365 - &adapter->pmac_id);
80366 - if (status != 0)
80367 - goto do_none;
80368 -
80369 - be_vid_config(netdev);
80370 -
80371 - status = be_cmd_set_flow_control(ctrl, true, true);
80372 - if (status != 0)
80373 - goto if_destroy;
80374 -
80375 - status = be_tx_queues_create(adapter);
80376 - if (status != 0)
80377 - goto if_destroy;
80378 -
80379 - status = be_rx_queues_create(adapter);
80380 - if (status != 0)
80381 - goto tx_qs_destroy;
80382 -
80383 - /* First time posting */
80384 - be_post_rx_frags(adapter);
80385 -
80386 - napi_enable(&rx_eq->napi);
80387 - napi_enable(&tx_eq->napi);
80388 -
80389 - be_irq_register(adapter);
80390 -
80391 - be_intr_set(ctrl, true);
80392 -
80393 - /* The evt queues are created in the unarmed state; arm them */
80394 - be_eq_notify(ctrl, rx_eq->q.id, true, false, 0);
80395 - be_eq_notify(ctrl, tx_eq->q.id, true, false, 0);
80396 -
80397 - /* The compl queues are created in the unarmed state; arm them */
80398 - be_cq_notify(ctrl, adapter->rx_obj.cq.id, true, 0);
80399 - be_cq_notify(ctrl, adapter->tx_obj.cq.id, true, 0);
80400 -
80401 - be_link_status_update(adapter);
80402 -
80403 - schedule_delayed_work(&adapter->work, msecs_to_jiffies(100));
80404 - return 0;
80405 -
80406 -tx_qs_destroy:
80407 - be_tx_queues_destroy(adapter);
80408 -if_destroy:
80409 - be_cmd_if_destroy(ctrl, adapter->if_handle);
80410 -do_none:
80411 - return status;
80412 -}
80413 -
80414 -static int be_close(struct net_device *netdev)
80415 -{
80416 - struct be_adapter *adapter = netdev_priv(netdev);
80417 - struct be_ctrl_info *ctrl = &adapter->ctrl;
80418 - struct be_eq_obj *rx_eq = &adapter->rx_eq;
80419 - struct be_eq_obj *tx_eq = &adapter->tx_eq;
80420 - int vec;
80421 -
80422 - cancel_delayed_work(&adapter->work);
80423 -
80424 - netif_stop_queue(netdev);
80425 - netif_carrier_off(netdev);
80426 - adapter->link.speed = PHY_LINK_SPEED_ZERO;
80427 -
80428 - be_intr_set(ctrl, false);
80429 -
80430 - if (adapter->msix_enabled) {
80431 - vec = be_msix_vec_get(adapter, tx_eq->q.id);
80432 - synchronize_irq(vec);
80433 - vec = be_msix_vec_get(adapter, rx_eq->q.id);
80434 - synchronize_irq(vec);
80435 - } else {
80436 - synchronize_irq(netdev->irq);
80437 - }
80438 - be_irq_unregister(adapter);
80439 -
80440 - napi_disable(&rx_eq->napi);
80441 - napi_disable(&tx_eq->napi);
80442 -
80443 - be_rx_queues_destroy(adapter);
80444 - be_tx_queues_destroy(adapter);
80445 -
80446 - be_cmd_if_destroy(ctrl, adapter->if_handle);
80447 - return 0;
80448 -}
80449 -
80450 -static int be_get_frag_header(struct skb_frag_struct *frag, void **mac_hdr,
80451 - void **ip_hdr, void **tcpudp_hdr,
80452 - u64 *hdr_flags, void *priv)
80453 -{
80454 - struct ethhdr *eh;
80455 - struct vlan_ethhdr *veh;
80456 - struct iphdr *iph;
80457 - u8 *va = page_address(frag->page) + frag->page_offset;
80458 - unsigned long ll_hlen;
80459 -
80460 - prefetch(va);
80461 - eh = (struct ethhdr *)va;
80462 - *mac_hdr = eh;
80463 - ll_hlen = ETH_HLEN;
80464 - if (eh->h_proto != htons(ETH_P_IP)) {
80465 - if (eh->h_proto == htons(ETH_P_8021Q)) {
80466 - veh = (struct vlan_ethhdr *)va;
80467 - if (veh->h_vlan_encapsulated_proto != htons(ETH_P_IP))
80468 - return -1;
80469 -
80470 - ll_hlen += VLAN_HLEN;
80471 - } else {
80472 - return -1;
80473 - }
80474 - }
80475 - *hdr_flags = LRO_IPV4;
80476 - iph = (struct iphdr *)(va + ll_hlen);
80477 - *ip_hdr = iph;
80478 - if (iph->protocol != IPPROTO_TCP)
80479 - return -1;
80480 - *hdr_flags |= LRO_TCP;
80481 - *tcpudp_hdr = (u8 *) (*ip_hdr) + (iph->ihl << 2);
80482 -
80483 - return 0;
80484 -}
80485 -
80486 -static void be_lro_init(struct be_adapter *adapter, struct net_device *netdev)
80487 -{
80488 - struct net_lro_mgr *lro_mgr;
80489 -
80490 - lro_mgr = &adapter->rx_obj.lro_mgr;
80491 - lro_mgr->dev = netdev;
80492 - lro_mgr->features = LRO_F_NAPI;
80493 - lro_mgr->ip_summed = CHECKSUM_UNNECESSARY;
80494 - lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY;
80495 - lro_mgr->max_desc = BE_MAX_LRO_DESCRIPTORS;
80496 - lro_mgr->lro_arr = adapter->rx_obj.lro_desc;
80497 - lro_mgr->get_frag_header = be_get_frag_header;
80498 - lro_mgr->max_aggr = BE_MAX_FRAGS_PER_FRAME;
80499 -}
80500 -
80501 -static struct net_device_ops be_netdev_ops = {
80502 - .ndo_open = be_open,
80503 - .ndo_stop = be_close,
80504 - .ndo_start_xmit = be_xmit,
80505 - .ndo_get_stats = be_get_stats,
80506 - .ndo_set_rx_mode = be_set_multicast_list,
80507 - .ndo_set_mac_address = be_mac_addr_set,
80508 - .ndo_change_mtu = be_change_mtu,
80509 - .ndo_validate_addr = eth_validate_addr,
80510 - .ndo_vlan_rx_register = be_vlan_register,
80511 - .ndo_vlan_rx_add_vid = be_vlan_add_vid,
80512 - .ndo_vlan_rx_kill_vid = be_vlan_rem_vid,
80513 -};
80514 -
80515 -static void be_netdev_init(struct net_device *netdev)
80516 -{
80517 - struct be_adapter *adapter = netdev_priv(netdev);
80518 -
80519 - netdev->features |= NETIF_F_SG | NETIF_F_HW_VLAN_RX | NETIF_F_TSO |
80520 - NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_FILTER | NETIF_F_IP_CSUM |
80521 - NETIF_F_IPV6_CSUM | NETIF_F_TSO6;
80522 -
80523 - netdev->flags |= IFF_MULTICAST;
80524 -
80525 - BE_SET_NETDEV_OPS(netdev, &be_netdev_ops);
80526 -
80527 - SET_ETHTOOL_OPS(netdev, &be_ethtool_ops);
80528 -
80529 - be_lro_init(adapter, netdev);
80530 -
80531 - netif_napi_add(netdev, &adapter->rx_eq.napi, be_poll_rx,
80532 - BE_NAPI_WEIGHT);
80533 - netif_napi_add(netdev, &adapter->tx_eq.napi, be_poll_tx,
80534 - BE_NAPI_WEIGHT);
80535 -
80536 - netif_carrier_off(netdev);
80537 - netif_stop_queue(netdev);
80538 -}
80539 -
80540 -static void be_unmap_pci_bars(struct be_adapter *adapter)
80541 -{
80542 - struct be_ctrl_info *ctrl = &adapter->ctrl;
80543 - if (ctrl->csr)
80544 - iounmap(ctrl->csr);
80545 - if (ctrl->db)
80546 - iounmap(ctrl->db);
80547 - if (ctrl->pcicfg)
80548 - iounmap(ctrl->pcicfg);
80549 -}
80550 -
80551 -static int be_map_pci_bars(struct be_adapter *adapter)
80552 -{
80553 - u8 __iomem *addr;
80554 -
80555 - addr = ioremap_nocache(pci_resource_start(adapter->pdev, 2),
80556 - pci_resource_len(adapter->pdev, 2));
80557 - if (addr == NULL)
80558 - return -ENOMEM;
80559 - adapter->ctrl.csr = addr;
80560 -
80561 - addr = ioremap_nocache(pci_resource_start(adapter->pdev, 4),
80562 - 128 * 1024);
80563 - if (addr == NULL)
80564 - goto pci_map_err;
80565 - adapter->ctrl.db = addr;
80566 -
80567 - addr = ioremap_nocache(pci_resource_start(adapter->pdev, 1),
80568 - pci_resource_len(adapter->pdev, 1));
80569 - if (addr == NULL)
80570 - goto pci_map_err;
80571 - adapter->ctrl.pcicfg = addr;
80572 -
80573 - return 0;
80574 -pci_map_err:
80575 - be_unmap_pci_bars(adapter);
80576 - return -ENOMEM;
80577 -}
80578 -
80579 -
80580 -static void be_ctrl_cleanup(struct be_adapter *adapter)
80581 -{
80582 - struct be_dma_mem *mem = &adapter->ctrl.mbox_mem_alloced;
80583 -
80584 - be_unmap_pci_bars(adapter);
80585 -
80586 - if (mem->va)
80587 - pci_free_consistent(adapter->pdev, mem->size,
80588 - mem->va, mem->dma);
80589 -}
80590 -
80591 -/* Initialize the mbox required to send cmds to BE */
80592 -static int be_ctrl_init(struct be_adapter *adapter)
80593 -{
80594 - struct be_ctrl_info *ctrl = &adapter->ctrl;
80595 - struct be_dma_mem *mbox_mem_alloc = &ctrl->mbox_mem_alloced;
80596 - struct be_dma_mem *mbox_mem_align = &ctrl->mbox_mem;
80597 - int status;
80598 - u32 val;
80599 -
80600 - status = be_map_pci_bars(adapter);
80601 - if (status)
80602 - return status;
80603 -
80604 - mbox_mem_alloc->size = sizeof(struct be_mcc_mailbox) + 16;
80605 - mbox_mem_alloc->va = pci_alloc_consistent(adapter->pdev,
80606 - mbox_mem_alloc->size, &mbox_mem_alloc->dma);
80607 - if (!mbox_mem_alloc->va) {
80608 - be_unmap_pci_bars(adapter);
80609 - return -1;
80610 - }
80611 - mbox_mem_align->size = sizeof(struct be_mcc_mailbox);
80612 - mbox_mem_align->va = PTR_ALIGN(mbox_mem_alloc->va, 16);
80613 - mbox_mem_align->dma = PTR_ALIGN(mbox_mem_alloc->dma, 16);
80614 - memset(mbox_mem_align->va, 0, sizeof(struct be_mcc_mailbox));
80615 - spin_lock_init(&ctrl->cmd_lock);
80616 -
80617 - val = ioread32(ctrl->pcicfg + PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET);
80618 - ctrl->pci_func = (val >> MEMBAR_CTRL_INT_CTRL_PFUNC_SHIFT) &
80619 - MEMBAR_CTRL_INT_CTRL_PFUNC_MASK;
80620 - return 0;
80621 -}
80622 -
80623 -static void be_stats_cleanup(struct be_adapter *adapter)
80624 -{
80625 - struct be_stats_obj *stats = &adapter->stats;
80626 - struct be_dma_mem *cmd = &stats->cmd;
80627 -
80628 - if (cmd->va)
80629 - pci_free_consistent(adapter->pdev, cmd->size,
80630 - cmd->va, cmd->dma);
80631 -}
80632 -
80633 -static int be_stats_init(struct be_adapter *adapter)
80634 -{
80635 - struct be_stats_obj *stats = &adapter->stats;
80636 - struct be_dma_mem *cmd = &stats->cmd;
80637 -
80638 - cmd->size = sizeof(struct be_cmd_req_get_stats);
80639 - cmd->va = pci_alloc_consistent(adapter->pdev, cmd->size, &cmd->dma);
80640 - if (cmd->va == NULL)
80641 - return -1;
80642 - return 0;
80643 -}
80644 -
80645 -static void __devexit be_remove(struct pci_dev *pdev)
80646 -{
80647 - struct be_adapter *adapter = pci_get_drvdata(pdev);
80648 - if (!adapter)
80649 - return;
80650 -
80651 - unregister_netdev(adapter->netdev);
80652 -
80653 - be_stats_cleanup(adapter);
80654 -
80655 - be_ctrl_cleanup(adapter);
80656 -
80657 - if (adapter->msix_enabled) {
80658 - pci_disable_msix(adapter->pdev);
80659 - adapter->msix_enabled = false;
80660 - }
80661 -
80662 - pci_set_drvdata(pdev, NULL);
80663 - pci_release_regions(pdev);
80664 - pci_disable_device(pdev);
80665 -
80666 - free_netdev(adapter->netdev);
80667 -}
80668 -
80669 -static int be_hw_up(struct be_adapter *adapter)
80670 -{
80671 - struct be_ctrl_info *ctrl = &adapter->ctrl;
80672 - int status;
80673 -
80674 - status = be_cmd_POST(ctrl);
80675 - if (status)
80676 - return status;
80677 -
80678 - status = be_cmd_get_fw_ver(ctrl, adapter->fw_ver);
80679 - if (status)
80680 - return status;
80681 -
80682 - status = be_cmd_query_fw_cfg(ctrl, &adapter->port_num);
80683 - return status;
80684 -}
80685 -
80686 -static int __devinit be_probe(struct pci_dev *pdev,
80687 - const struct pci_device_id *pdev_id)
80688 -{
80689 - int status = 0;
80690 - struct be_adapter *adapter;
80691 - struct net_device *netdev;
80692 - struct be_ctrl_info *ctrl;
80693 - u8 mac[ETH_ALEN];
80694 -
80695 - status = pci_enable_device(pdev);
80696 - if (status)
80697 - goto do_none;
80698 -
80699 - status = pci_request_regions(pdev, DRV_NAME);
80700 - if (status)
80701 - goto disable_dev;
80702 - pci_set_master(pdev);
80703 -
80704 - netdev = alloc_etherdev(sizeof(struct be_adapter));
80705 - if (netdev == NULL) {
80706 - status = -ENOMEM;
80707 - goto rel_reg;
80708 - }
80709 - adapter = netdev_priv(netdev);
80710 - adapter->pdev = pdev;
80711 - pci_set_drvdata(pdev, adapter);
80712 - adapter->netdev = netdev;
80713 -
80714 - be_msix_enable(adapter);
80715 -
80716 - status = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
80717 - if (!status) {
80718 - netdev->features |= NETIF_F_HIGHDMA;
80719 - } else {
80720 - status = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
80721 - if (status) {
80722 - dev_err(&pdev->dev, "Could not set PCI DMA Mask\n");
80723 - goto free_netdev;
80724 - }
80725 - }
80726 -
80727 - ctrl = &adapter->ctrl;
80728 - status = be_ctrl_init(adapter);
80729 - if (status)
80730 - goto free_netdev;
80731 -
80732 - status = be_stats_init(adapter);
80733 - if (status)
80734 - goto ctrl_clean;
80735 -
80736 - status = be_hw_up(adapter);
80737 - if (status)
80738 - goto stats_clean;
80739 -
80740 - status = be_cmd_mac_addr_query(ctrl, mac, MAC_ADDRESS_TYPE_NETWORK,
80741 - true /* permanent */, 0);
80742 - if (status)
80743 - goto stats_clean;
80744 - memcpy(netdev->dev_addr, mac, ETH_ALEN);
80745 -
80746 - INIT_DELAYED_WORK(&adapter->work, be_worker);
80747 - be_netdev_init(netdev);
80748 - SET_NETDEV_DEV(netdev, &adapter->pdev->dev);
80749 -
80750 - status = register_netdev(netdev);
80751 - if (status != 0)
80752 - goto stats_clean;
80753 -
80754 - dev_info(&pdev->dev, BE_NAME " port %d\n", adapter->port_num);
80755 - return 0;
80756 -
80757 -stats_clean:
80758 - be_stats_cleanup(adapter);
80759 -ctrl_clean:
80760 - be_ctrl_cleanup(adapter);
80761 -free_netdev:
80762 - free_netdev(adapter->netdev);
80763 -rel_reg:
80764 - pci_release_regions(pdev);
80765 -disable_dev:
80766 - pci_disable_device(pdev);
80767 -do_none:
80768 - dev_warn(&pdev->dev, BE_NAME " initialization failed\n");
80769 - return status;
80770 -}
80771 -
80772 -static int be_suspend(struct pci_dev *pdev, pm_message_t state)
80773 -{
80774 - struct be_adapter *adapter = pci_get_drvdata(pdev);
80775 - struct net_device *netdev = adapter->netdev;
80776 -
80777 - netif_device_detach(netdev);
80778 - if (netif_running(netdev)) {
80779 - rtnl_lock();
80780 - be_close(netdev);
80781 - rtnl_unlock();
80782 - }
80783 -
80784 - pci_save_state(pdev);
80785 - pci_disable_device(pdev);
80786 - pci_set_power_state(pdev, pci_choose_state(pdev, state));
80787 - return 0;
80788 -}
80789 -
80790 -static int be_resume(struct pci_dev *pdev)
80791 -{
80792 - int status = 0;
80793 - struct be_adapter *adapter = pci_get_drvdata(pdev);
80794 - struct net_device *netdev = adapter->netdev;
80795 -
80796 - netif_device_detach(netdev);
80797 -
80798 - status = pci_enable_device(pdev);
80799 - if (status)
80800 - return status;
80801 -
80802 - pci_set_power_state(pdev, 0);
80803 - pci_restore_state(pdev);
80804 -
80805 - if (netif_running(netdev)) {
80806 - rtnl_lock();
80807 - be_open(netdev);
80808 - rtnl_unlock();
80809 - }
80810 - netif_device_attach(netdev);
80811 - return 0;
80812 -}
80813 -
80814 -static struct pci_driver be_driver = {
80815 - .name = DRV_NAME,
80816 - .id_table = be_dev_ids,
80817 - .probe = be_probe,
80818 - .remove = be_remove,
80819 - .suspend = be_suspend,
80820 - .resume = be_resume
80821 -};
80822 -
80823 -static int __init be_init_module(void)
80824 -{
80825 - if (rx_frag_size != 8192 && rx_frag_size != 4096
80826 - && rx_frag_size != 2048) {
80827 - printk(KERN_WARNING DRV_NAME
80828 - " : Module param rx_frag_size must be 2048/4096/8192."
80829 - " Using 2048\n");
80830 - rx_frag_size = 2048;
80831 - }
80832 - /* Ensure rx_frag_size is aligned to chache line */
80833 - if (SKB_DATA_ALIGN(rx_frag_size) != rx_frag_size) {
80834 - printk(KERN_WARNING DRV_NAME
80835 - " : Bad module param rx_frag_size. Using 2048\n");
80836 - rx_frag_size = 2048;
80837 - }
80838 -
80839 - return pci_register_driver(&be_driver);
80840 -}
80841 -module_init(be_init_module);
80842 -
80843 -static void __exit be_exit_module(void)
80844 -{
80845 - pci_unregister_driver(&be_driver);
80846 -}
80847 -module_exit(be_exit_module);
80848 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/Kconfig linux-2.6.29-rc3.owrt/drivers/net/benet/Kconfig
80849 --- linux-2.6.29.owrt/drivers/net/benet/Kconfig 2009-05-10 22:04:38.000000000 +0200
80850 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/Kconfig 1970-01-01 01:00:00.000000000 +0100
80851 @@ -1,7 +0,0 @@
80852 -config BE2NET
80853 - tristate "ServerEngines' 10Gbps NIC - BladeEngine 2"
80854 - depends on PCI && INET
80855 - select INET_LRO
80856 - help
80857 - This driver implements the NIC functionality for ServerEngines'
80858 - 10Gbps network adapter - BladeEngine 2.
80859 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/benet/Makefile linux-2.6.29-rc3.owrt/drivers/net/benet/Makefile
80860 --- linux-2.6.29.owrt/drivers/net/benet/Makefile 2009-05-10 22:04:38.000000000 +0200
80861 +++ linux-2.6.29-rc3.owrt/drivers/net/benet/Makefile 1970-01-01 01:00:00.000000000 +0100
80862 @@ -1,7 +0,0 @@
80863 -#
80864 -# Makefile to build the network driver for ServerEngine's BladeEngine.
80865 -#
80866 -
80867 -obj-$(CONFIG_BE2NET) += be2net.o
80868 -
80869 -be2net-y := be_main.o be_cmds.o be_ethtool.o
80870 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2.c linux-2.6.29-rc3.owrt/drivers/net/bnx2.c
80871 --- linux-2.6.29.owrt/drivers/net/bnx2.c 2009-05-10 22:04:38.000000000 +0200
80872 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2.c 2009-05-10 23:48:28.000000000 +0200
80873 @@ -1,6 +1,6 @@
80874 /* bnx2.c: Broadcom NX2 network driver.
80875 *
80876 - * Copyright (c) 2004-2009 Broadcom Corporation
80877 + * Copyright (c) 2004-2008 Broadcom Corporation
80878 *
80879 * This program is free software; you can redistribute it and/or modify
80880 * it under the terms of the GNU General Public License as published by
80881 @@ -57,8 +57,8 @@
80882
80883 #define DRV_MODULE_NAME "bnx2"
80884 #define PFX DRV_MODULE_NAME ": "
80885 -#define DRV_MODULE_VERSION "1.9.3"
80886 -#define DRV_MODULE_RELDATE "March 17, 2009"
80887 +#define DRV_MODULE_VERSION "1.9.0"
80888 +#define DRV_MODULE_RELDATE "Dec 16, 2008"
80889
80890 #define RUN_AT(x) (jiffies + (x))
80891
80892 @@ -2910,8 +2910,18 @@
80893
80894 rx_hdr = (struct l2_fhdr *) skb->data;
80895 len = rx_hdr->l2_fhdr_pkt_len;
80896 - status = rx_hdr->l2_fhdr_status;
80897
80898 + if ((status = rx_hdr->l2_fhdr_status) &
80899 + (L2_FHDR_ERRORS_BAD_CRC |
80900 + L2_FHDR_ERRORS_PHY_DECODE |
80901 + L2_FHDR_ERRORS_ALIGNMENT |
80902 + L2_FHDR_ERRORS_TOO_SHORT |
80903 + L2_FHDR_ERRORS_GIANT_FRAME)) {
80904 +
80905 + bnx2_reuse_rx_skb(bp, rxr, skb, sw_ring_cons,
80906 + sw_ring_prod);
80907 + goto next_rx;
80908 + }
80909 hdr_len = 0;
80910 if (status & L2_FHDR_STATUS_SPLIT) {
80911 hdr_len = rx_hdr->l2_fhdr_ip_xsum;
80912 @@ -2921,24 +2931,6 @@
80913 pg_ring_used = 1;
80914 }
80915
80916 - if (unlikely(status & (L2_FHDR_ERRORS_BAD_CRC |
80917 - L2_FHDR_ERRORS_PHY_DECODE |
80918 - L2_FHDR_ERRORS_ALIGNMENT |
80919 - L2_FHDR_ERRORS_TOO_SHORT |
80920 - L2_FHDR_ERRORS_GIANT_FRAME))) {
80921 -
80922 - bnx2_reuse_rx_skb(bp, rxr, skb, sw_ring_cons,
80923 - sw_ring_prod);
80924 - if (pg_ring_used) {
80925 - int pages;
80926 -
80927 - pages = PAGE_ALIGN(len - hdr_len) >> PAGE_SHIFT;
80928 -
80929 - bnx2_reuse_rx_skb_pages(bp, rxr, NULL, pages);
80930 - }
80931 - goto next_rx;
80932 - }
80933 -
80934 len -= 4;
80935
80936 if (len <= bp->rx_copy_thresh) {
80937 @@ -5843,6 +5835,9 @@
80938 for (i = 0; i < BNX2_MAX_MSIX_VEC; i++) {
80939 msix_ent[i].entry = i;
80940 msix_ent[i].vector = 0;
80941 +
80942 + snprintf(bp->irq_tbl[i].name, len, "%s-%d", dev->name, i);
80943 + bp->irq_tbl[i].handler = bnx2_msi_1shot;
80944 }
80945
80946 rc = pci_enable_msix(bp->pdev, msix_ent, BNX2_MAX_MSIX_VEC);
80947 @@ -5851,11 +5846,8 @@
80948
80949 bp->irq_nvecs = msix_vecs;
80950 bp->flags |= BNX2_FLAG_USING_MSIX | BNX2_FLAG_ONE_SHOT_MSI;
80951 - for (i = 0; i < BNX2_MAX_MSIX_VEC; i++) {
80952 + for (i = 0; i < BNX2_MAX_MSIX_VEC; i++)
80953 bp->irq_tbl[i].vector = msix_ent[i].vector;
80954 - snprintf(bp->irq_tbl[i].name, len, "%s-%d", dev->name, i);
80955 - bp->irq_tbl[i].handler = bnx2_msi_1shot;
80956 - }
80957 }
80958
80959 static void
80960 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2_fw2.h linux-2.6.29-rc3.owrt/drivers/net/bnx2_fw2.h
80961 --- linux-2.6.29.owrt/drivers/net/bnx2_fw2.h 2009-05-10 22:04:38.000000000 +0200
80962 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2_fw2.h 2009-05-10 23:48:28.000000000 +0200
80963 @@ -15,847 +15,848 @@
80964 */
80965
80966 static u8 bnx2_COM_b09FwText[] = {
80967 - 0xcd, 0x7c, 0x7b, 0x6c, 0x5c, 0xd7, 0x99, 0xdf, 0x77, 0xef, 0xcc, 0x90,
80968 - 0x43, 0x6a, 0x44, 0x5d, 0x32, 0x13, 0x66, 0x1c, 0x33, 0xcd, 0x3c, 0x2e,
80969 - 0x29, 0xda, 0x64, 0x92, 0x31, 0x77, 0xa4, 0xd0, 0xc9, 0xad, 0x3d, 0x99,
80970 - 0x19, 0xc9, 0x4c, 0xa8, 0x0d, 0xe8, 0x44, 0x2e, 0x52, 0x54, 0x28, 0xd8,
80971 - 0x21, 0xe5, 0x28, 0x8b, 0xec, 0xae, 0xf2, 0x28, 0x9a, 0x2e, 0xd2, 0xd5,
80972 - 0x64, 0x48, 0x29, 0xca, 0x62, 0xc4, 0x19, 0xd3, 0x34, 0x93, 0xa2, 0x01,
80973 - 0x32, 0x19, 0x92, 0x72, 0x76, 0x31, 0x12, 0x15, 0xdb, 0xcd, 0x1a, 0x41,
80974 - 0xe2, 0xb0, 0xd4, 0x23, 0xde, 0x20, 0x2d, 0xb4, 0x1b, 0x17, 0x4d, 0xd3,
80975 - 0x45, 0x21, 0xc8, 0x4e, 0x6c, 0x6c, 0xb3, 0x6d, 0x50, 0x2c, 0x10, 0x77,
80976 - 0x91, 0x64, 0xfa, 0xfb, 0x9d, 0x73, 0xee, 0x70, 0x44, 0x31, 0x4e, 0xba,
80977 - 0x7f, 0x95, 0xc0, 0xe0, 0xdc, 0x7b, 0x9e, 0xdf, 0xf9, 0xce, 0xf7, 0x3e,
80978 - 0xdf, 0xe5, 0x43, 0x22, 0xbd, 0x62, 0xfe, 0xf6, 0xe3, 0x97, 0xf9, 0xfd,
80979 - 0x3f, 0x9c, 0x7b, 0xe0, 0x9d, 0x87, 0xdf, 0x89, 0xc7, 0x43, 0xf6, 0x81,
80980 - 0xae, 0x20, 0xeb, 0x03, 0xf8, 0x45, 0xf1, 0x9b, 0x30, 0xcf, 0x7b, 0xfd,
80981 - 0x39, 0xf8, 0x1d, 0xb6, 0x44, 0x66, 0xff, 0x46, 0xc4, 0xda, 0xd5, 0x16,
80982 - 0xfe, 0x35, 0x63, 0xde, 0xe8, 0xcf, 0xfe, 0x2d, 0xfb, 0x39, 0xff, 0x80,
80983 - 0xb9, 0xfd, 0xbf, 0x80, 0x19, 0xbe, 0xdf, 0xfc, 0x24, 0x6c, 0x7b, 0xb7,
80984 - 0x3e, 0x90, 0x73, 0x25, 0x1c, 0xf0, 0x7e, 0x38, 0x3d, 0xe7, 0x8a, 0x64,
80985 - 0x9b, 0x63, 0xf1, 0xbc, 0xfc, 0xb2, 0x55, 0x8a, 0x06, 0x85, 0xf5, 0x6f,
80986 - 0xf3, 0x7e, 0xf1, 0x95, 0x6f, 0xbf, 0x3b, 0xf1, 0xb3, 0x7a, 0x40, 0xc2,
80987 - 0x8e, 0xf7, 0xba, 0x38, 0x23, 0x12, 0x1e, 0xc2, 0x98, 0x2f, 0x1f, 0x9c,
80988 - 0xb5, 0xa5, 0xcf, 0x9f, 0xeb, 0xb5, 0xd6, 0xb7, 0x0f, 0x4a, 0xc9, 0xf6,
80989 - 0x1c, 0xb9, 0xb2, 0x19, 0x95, 0xef, 0x6c, 0x8a, 0x35, 0x93, 0xe9, 0x11,
80990 - 0x7b, 0xf9, 0xad, 0x92, 0x75, 0x2c, 0x09, 0xb8, 0x5c, 0x27, 0x2e, 0xb9,
80991 - 0xca, 0x20, 0xde, 0x13, 0x31, 0x91, 0x7f, 0xbe, 0x5f, 0x8f, 0x0d, 0x4b,
80992 - 0x60, 0x55, 0xc2, 0x5d, 0xde, 0x0b, 0xd3, 0x37, 0x56, 0x62, 0x12, 0x5c,
80993 - 0x1a, 0x97, 0x72, 0x35, 0x22, 0xa1, 0x55, 0x19, 0x0a, 0xc8, 0x70, 0xec,
80994 - 0x71, 0xf4, 0x28, 0x34, 0x83, 0x72, 0xa4, 0x69, 0x49, 0xd0, 0x0d, 0x03,
80995 - 0xb6, 0x08, 0x7e, 0x0e, 0x7e, 0x51, 0xfc, 0x62, 0xf8, 0x9d, 0xc5, 0x3c,
80996 - 0x43, 0x92, 0x6f, 0x72, 0x4e, 0xac, 0x5b, 0xc5, 0xfa, 0xd5, 0x84, 0x33,
80997 - 0x8b, 0x79, 0x6f, 0x05, 0x62, 0xf2, 0xed, 0x83, 0x84, 0xcb, 0x21, 0x3c,
80998 - 0x80, 0x2d, 0x6c, 0xe5, 0x56, 0xe4, 0x74, 0x3e, 0x2d, 0x71, 0xdb, 0xed,
80999 - 0x95, 0xa2, 0x63, 0xc5, 0xe7, 0x47, 0x07, 0xa4, 0x74, 0x1c, 0xed, 0x55,
81000 - 0xc9, 0xda, 0x98, 0xbf, 0xe8, 0xc8, 0xac, 0x6e, 0x63, 0xdd, 0x17, 0x41,
81001 - 0x27, 0x09, 0x87, 0x08, 0xfb, 0x4e, 0xf5, 0x31, 0x3c, 0x73, 0xbe, 0x78,
81002 - 0x50, 0xc3, 0xbd, 0x8a, 0x77, 0xd6, 0xff, 0x41, 0x44, 0xbf, 0xf3, 0x99,
81003 - 0x7d, 0xfd, 0x75, 0xfd, 0xfd, 0x72, 0xfd, 0x51, 0xec, 0x99, 0x30, 0xf8,
81004 - 0x7b, 0x96, 0x52, 0x08, 0xb0, 0x34, 0x56, 0x22, 0xd6, 0xda, 0xca, 0xb8,
81005 - 0x9c, 0xab, 0x3e, 0x24, 0xb9, 0x74, 0xab, 0x35, 0x97, 0x96, 0xa8, 0x2d,
81006 - 0xc3, 0x4e, 0x1e, 0x1d, 0xb6, 0x9b, 0x62, 0x35, 0x2a, 0x12, 0xee, 0x06,
81007 - 0x5e, 0x5e, 0x5d, 0xe1, 0xdc, 0x41, 0xd4, 0x0d, 0xa2, 0x7f, 0x9f, 0xb5,
81008 - 0xbe, 0x02, 0xf8, 0x3d, 0xe2, 0xa7, 0xd5, 0x5a, 0x4c, 0x0f, 0xc7, 0xe6,
81009 - 0xb1, 0xe6, 0xd5, 0xe6, 0xf0, 0xe4, 0x6d, 0x71, 0x30, 0xe7, 0x00, 0xfa,
81010 - 0x10, 0x57, 0x9c, 0x8b, 0x73, 0x72, 0xbe, 0x08, 0xc6, 0x46, 0xd1, 0x46,
81011 - 0xb8, 0x5a, 0xad, 0x5c, 0xda, 0xe1, 0xbb, 0x6c, 0x01, 0x7f, 0x5b, 0xc4,
81012 - 0x5f, 0xef, 0x90, 0x7c, 0xb7, 0xc9, 0x35, 0xda, 0xb0, 0x97, 0xba, 0xbc,
81013 - 0xe7, 0xed, 0xed, 0x0a, 0xcf, 0x2d, 0x2c, 0xef, 0x0b, 0x26, 0x46, 0x4b,
81014 - 0x8a, 0x4e, 0x66, 0xb1, 0x1f, 0x4b, 0xd1, 0x84, 0x85, 0xe7, 0x64, 0x93,
81015 - 0xfd, 0x89, 0xeb, 0xb8, 0x2c, 0xe0, 0x5c, 0xcb, 0x2b, 0x25, 0xfb, 0x6a,
81016 - 0xf3, 0x17, 0xad, 0x9c, 0xbb, 0x68, 0x6f, 0xaf, 0xb3, 0xff, 0x09, 0xf4,
81017 - 0x0f, 0xca, 0x62, 0xa5, 0x4f, 0x08, 0x93, 0x1e, 0x77, 0x02, 0xe3, 0xc4,
81018 - 0xb1, 0xbd, 0x73, 0xf6, 0xd5, 0xf5, 0xf3, 0xf6, 0x35, 0x75, 0x6e, 0x58,
81019 - 0xab, 0x3d, 0x57, 0x27, 0xde, 0xc6, 0xfe, 0x3f, 0xc4, 0x5b, 0x0c, 0xf3,
81020 - 0x47, 0x51, 0xee, 0xb3, 0x1a, 0xb5, 0x16, 0xd6, 0x8f, 0xe1, 0x79, 0x2f,
81021 - 0x1c, 0xde, 0x52, 0x74, 0x77, 0x05, 0x74, 0xe7, 0x78, 0x31, 0x79, 0x66,
81022 - 0x73, 0x08, 0xfb, 0x88, 0xca, 0xd7, 0xc1, 0x17, 0x03, 0x87, 0xf7, 0x49,
81023 - 0x1e, 0x7c, 0x41, 0x7a, 0x7b, 0x74, 0xf5, 0x9f, 0x49, 0x31, 0x9a, 0x18,
81024 - 0xa5, 0xfc, 0x48, 0x4e, 0x80, 0x9e, 0x0d, 0x6b, 0xe7, 0x96, 0xb2, 0x29,
81025 - 0x5b, 0x1e, 0x16, 0xdb, 0xc3, 0xba, 0x99, 0x31, 0xa7, 0x20, 0x41, 0xb4,
81026 - 0x65, 0x25, 0xe0, 0x45, 0x25, 0xb7, 0xfa, 0x5e, 0x0b, 0x74, 0x19, 0x5f,
81027 - 0xc0, 0xa0, 0xc0, 0x92, 0x58, 0xb6, 0xdb, 0x25, 0xc5, 0xe3, 0xac, 0x0f,
81028 - 0x83, 0xc6, 0xc1, 0xb3, 0x2b, 0x07, 0x00, 0x97, 0x0c, 0xdb, 0xc2, 0xba,
81029 - 0x61, 0xa7, 0x2c, 0x25, 0xb1, 0x2f, 0xff, 0xa1, 0x65, 0x64, 0x9e, 0xc1,
81030 - 0xef, 0xa8, 0x59, 0xab, 0xcd, 0x87, 0x96, 0xbd, 0x1a, 0xb1, 0x02, 0xab,
81031 - 0xe3, 0x72, 0x76, 0x0f, 0xbc, 0x36, 0x80, 0x57, 0x7b, 0xc9, 0xe7, 0xd3,
81032 - 0x20, 0xde, 0x07, 0xd1, 0xb7, 0xcf, 0x0a, 0xae, 0xde, 0x8d, 0xd3, 0xb5,
81033 - 0xe6, 0x70, 0x7a, 0x1b, 0x38, 0xb5, 0x57, 0x07, 0xd0, 0xe7, 0x6e, 0x9c,
81034 - 0x36, 0x80, 0x53, 0x7b, 0x55, 0xe3, 0xb3, 0x01, 0x7c, 0xda, 0x4b, 0x51,
81035 - 0x94, 0xfb, 0x2c, 0x7b, 0x59, 0xe3, 0xb3, 0x61, 0x78, 0xfa, 0x62, 0x93,
81036 - 0xb0, 0x66, 0x3b, 0x68, 0x2e, 0x4b, 0xda, 0x81, 0x9c, 0x2a, 0xc8, 0x5c,
81037 - 0xc5, 0x06, 0xbe, 0x82, 0xe2, 0x4e, 0x58, 0x32, 0xa7, 0xda, 0x0a, 0x92,
81038 - 0x02, 0x0d, 0x95, 0x9c, 0xb1, 0x51, 0x5b, 0x12, 0xf1, 0xac, 0x0d, 0x7c,
81039 - 0x57, 0x81, 0xf7, 0x2a, 0x70, 0xae, 0x64, 0xc2, 0x8b, 0xe0, 0xd7, 0x38,
81040 - 0xce, 0x65, 0x77, 0x7d, 0xc2, 0xa9, 0x2b, 0x9e, 0x8d, 0x9b, 0x33, 0x23,
81041 - 0xed, 0xf3, 0x9c, 0x62, 0x38, 0x2f, 0x75, 0x7e, 0xd6, 0x5f, 0x66, 0xf6,
81042 - 0x49, 0x6a, 0x39, 0xa0, 0xce, 0x2b, 0xbd, 0xfa, 0xae, 0xf6, 0x79, 0xd9,
81043 - 0x13, 0x94, 0x65, 0x3c, 0x23, 0x91, 0xd4, 0x12, 0xcf, 0x29, 0x9b, 0x0a,
81044 - 0x08, 0xcf, 0x2a, 0x24, 0xd9, 0x19, 0x9e, 0x4b, 0x54, 0x92, 0xab, 0x3c,
81045 - 0xb3, 0x0d, 0x73, 0x5e, 0xfa, 0x9c, 0x92, 0x7b, 0x9c, 0x53, 0xd2, 0x9c,
81046 - 0xd3, 0x76, 0xf3, 0x8a, 0x39, 0xa7, 0x7f, 0x2b, 0x86, 0xe6, 0xdf, 0x10,
81047 - 0x07, 0x36, 0x70, 0x10, 0xbc, 0x03, 0x07, 0xdd, 0x6d, 0x1c, 0xc4, 0x6d,
81048 - 0xec, 0xe1, 0xae, 0xfd, 0x77, 0xd6, 0x75, 0xee, 0x5d, 0x4a, 0x41, 0x4f,
81049 - 0xac, 0x85, 0x0a, 0xe1, 0x0e, 0x48, 0x71, 0x86, 0x30, 0x52, 0xae, 0x6b,
81050 - 0x58, 0xf3, 0x2b, 0x94, 0x6d, 0x07, 0x04, 0x34, 0xf1, 0xb6, 0x80, 0x1a,
81051 - 0x53, 0x92, 0x85, 0x26, 0xdb, 0x4a, 0x92, 0xcb, 0x80, 0x5e, 0x6b, 0xac,
81052 - 0x03, 0x83, 0x6e, 0x6a, 0x3e, 0xde, 0xd1, 0x07, 0xd1, 0x36, 0x1e, 0xf3,
81053 - 0x95, 0x38, 0xe4, 0x74, 0x10, 0xe5, 0xd7, 0x50, 0xee, 0xb3, 0x66, 0x6a,
81054 - 0x7f, 0x65, 0x49, 0x5f, 0x4b, 0x9c, 0x09, 0xee, 0x31, 0x36, 0x9d, 0x73,
81055 - 0x4b, 0x31, 0x47, 0xde, 0x26, 0xce, 0x3b, 0x43, 0x22, 0x83, 0x09, 0xa7,
81056 - 0x28, 0xff, 0x05, 0xed, 0x89, 0x58, 0x56, 0xfe, 0xb7, 0x4f, 0xbb, 0xc0,
81057 - 0x43, 0xcf, 0xeb, 0x59, 0xf5, 0xc4, 0x7a, 0x8e, 0xcb, 0xa0, 0x2e, 0x24,
81058 - 0xb3, 0xd0, 0x31, 0x05, 0x97, 0xeb, 0x71, 0xfe, 0xf8, 0x2c, 0xd7, 0xcd,
81059 - 0x37, 0x7d, 0x7d, 0x20, 0xd9, 0x80, 0xc7, 0x36, 0xf2, 0xe5, 0xa4, 0x95,
81060 - 0x6f, 0x12, 0x57, 0x19, 0x71, 0x9b, 0x1a, 0x66, 0x0d, 0x6b, 0x1b, 0x4e,
81061 - 0xf0, 0x6b, 0x16, 0x34, 0x49, 0xd8, 0xe2, 0xe0, 0x9b, 0x73, 0x01, 0xff,
81062 - 0x1c, 0x82, 0xde, 0xa4, 0x2c, 0x42, 0x3f, 0x96, 0x2b, 0x9c, 0xef, 0x33,
81063 - 0x56, 0xe0, 0xb2, 0x3f, 0x3f, 0xcf, 0x86, 0x73, 0xeb, 0xf9, 0xca, 0xcd,
81064 - 0xd7, 0x0c, 0xef, 0x2b, 0x3d, 0x88, 0xf9, 0x4a, 0x1d, 0xf3, 0x95, 0xc8,
81065 - 0xb3, 0x07, 0x94, 0xae, 0x39, 0x4e, 0xfc, 0x9d, 0x47, 0xdb, 0x2d, 0xd0,
81066 - 0x08, 0xf9, 0x81, 0xfc, 0x41, 0x5e, 0x7d, 0xb7, 0x8d, 0xfd, 0x76, 0xe0,
81067 - 0x76, 0x06, 0x72, 0x98, 0xbc, 0x11, 0x96, 0x7c, 0x94, 0xf5, 0x8f, 0x1b,
81068 - 0x98, 0x20, 0x13, 0xd4, 0xfb, 0xf1, 0x1e, 0x5f, 0x3e, 0x82, 0x16, 0x01,
81069 - 0xdb, 0xf3, 0x6a, 0x8f, 0xb6, 0xe7, 0x01, 0x37, 0x9d, 0x30, 0x72, 0xdf,
81070 - 0x9e, 0x91, 0xdb, 0x3e, 0xbc, 0x3c, 0x2b, 0xca, 0x55, 0xb1, 0xd6, 0x33,
81071 - 0x61, 0xc8, 0x70, 0x5b, 0xf2, 0x69, 0xd0, 0x66, 0x3a, 0x60, 0xe4, 0xc3,
81072 - 0x8b, 0xc6, 0x56, 0xd2, 0x38, 0x0e, 0x2a, 0x3d, 0xbe, 0x88, 0x79, 0x4f,
81073 - 0x00, 0x46, 0xce, 0x19, 0xb4, 0xd6, 0x2a, 0x11, 0xe8, 0x6c, 0xc0, 0xe6,
81074 - 0x24, 0xe2, 0x80, 0x09, 0xef, 0x7e, 0x9f, 0x88, 0x2c, 0x6c, 0xfa, 0xeb,
81075 - 0x2e, 0xb6, 0xf5, 0x45, 0x49, 0xe1, 0xdb, 0x99, 0x0d, 0xec, 0xd0, 0xc6,
81076 - 0xcc, 0xc9, 0xca, 0x99, 0x96, 0xed, 0x92, 0x06, 0xdd, 0xd1, 0x86, 0x44,
81077 - 0x26, 0x37, 0x32, 0xef, 0x06, 0xbf, 0xa1, 0x1e, 0x63, 0xca, 0xcd, 0x52,
81078 - 0xc4, 0x76, 0x5d, 0x94, 0x94, 0x3f, 0x27, 0xba, 0x6f, 0xb8, 0x3e, 0xbd,
81079 - 0x0c, 0x49, 0xc8, 0x6d, 0xb5, 0x36, 0x70, 0x26, 0x47, 0x9b, 0xbf, 0x6c,
81080 - 0x7d, 0x35, 0xa8, 0xed, 0x15, 0xdb, 0xfb, 0xa9, 0xa5, 0xd7, 0x8c, 0x4f,
81081 - 0x27, 0x15, 0x1e, 0x62, 0x5d, 0xfa, 0xdd, 0x35, 0xef, 0xd7, 0x22, 0x46,
81082 - 0x87, 0x99, 0xf7, 0xf9, 0xa0, 0xb6, 0x7f, 0xc2, 0x3d, 0xe4, 0xa3, 0xa0,
81083 - 0xe7, 0xf4, 0xe0, 0x9c, 0xc3, 0x21, 0x6f, 0x6a, 0x7c, 0x43, 0xf5, 0x2b,
81084 - 0x99, 0x7e, 0xd1, 0x6e, 0x3d, 0xee, 0xd4, 0xf4, 0x88, 0xa2, 0xa1, 0x4f,
81085 - 0x4f, 0x0f, 0xab, 0xf2, 0xb3, 0xd3, 0x29, 0x55, 0x2e, 0x4e, 0xbb, 0xaa,
81086 - 0x3c, 0xaf, 0xfa, 0x5b, 0xde, 0x90, 0xa9, 0x1f, 0x9d, 0x8e, 0xab, 0x72,
81087 - 0xdc, 0x94, 0x69, 0x53, 0x66, 0x4c, 0x39, 0x69, 0x4a, 0xcf, 0x94, 0x59,
81088 - 0x53, 0x16, 0xcc, 0x7c, 0x53, 0xe6, 0xfd, 0x98, 0x29, 0x67, 0x4c, 0x79,
81089 - 0xdc, 0x94, 0x1f, 0x31, 0xe5, 0x09, 0x03, 0xd7, 0xbc, 0x29, 0x3f, 0x6e,
81090 - 0xea, 0x4f, 0x1b, 0x38, 0x3f, 0x03, 0x78, 0x1e, 0x09, 0xed, 0xd0, 0xca,
81091 - 0x69, 0x4d, 0x5f, 0x15, 0x47, 0xca, 0x9b, 0xdc, 0x7f, 0x1c, 0x32, 0x25,
81092 - 0x88, 0xb3, 0x04, 0xbf, 0x3b, 0xa4, 0x09, 0x17, 0x72, 0x38, 0x88, 0x33,
81093 - 0xe4, 0xf3, 0x69, 0xf9, 0x53, 0xf4, 0x1d, 0xbd, 0xe0, 0xc8, 0x62, 0x95,
81094 - 0xfa, 0xf5, 0x5b, 0xf2, 0x6a, 0x85, 0xe7, 0xf1, 0xbc, 0xdc, 0xa8, 0xa4,
81095 - 0xe2, 0x41, 0x8b, 0x74, 0x94, 0x98, 0x7c, 0x45, 0x12, 0x90, 0xfd, 0x63,
81096 - 0x71, 0x96, 0xd7, 0xa8, 0x54, 0xd0, 0xef, 0xa0, 0x5a, 0xfb, 0x79, 0x01,
81097 - 0x4c, 0x72, 0xa5, 0xd2, 0x0d, 0x99, 0xf5, 0x4a, 0x8b, 0x7a, 0xfd, 0xfc,
81098 - 0xa6, 0xc8, 0xc8, 0x05, 0xe2, 0xf9, 0x5b, 0xb2, 0x51, 0x21, 0xde, 0x9f,
81099 - 0x87, 0xad, 0x90, 0x4a, 0xbf, 0x28, 0x89, 0xd1, 0x8b, 0xc2, 0xf9, 0xc6,
81100 - 0xd2, 0x28, 0xe3, 0x65, 0xfc, 0xce, 0x41, 0xde, 0x76, 0x4f, 0xe8, 0xf9,
81101 - 0x86, 0xcd, 0x7c, 0x2e, 0xec, 0xc2, 0x5b, 0x0e, 0x65, 0xe0, 0x7f, 0xb5,
81102 - 0xf4, 0x9e, 0xb4, 0x3c, 0xcc, 0x3a, 0x41, 0x96, 0xb6, 0xcf, 0x23, 0xf6,
81103 - 0xc4, 0xf5, 0x16, 0xe4, 0x31, 0xf9, 0xdf, 0xd4, 0x6d, 0x1b, 0xfe, 0x92,
81104 - 0x9a, 0xed, 0x81, 0x3e, 0x33, 0xc3, 0x58, 0x83, 0xef, 0x71, 0xd8, 0x9a,
81105 - 0x52, 0x22, 0x1e, 0x8a, 0x95, 0x5f, 0xb5, 0xb2, 0x41, 0x6d, 0x9f, 0x6a,
81106 - 0x19, 0xc1, 0x76, 0x4b, 0xf2, 0xe8, 0xbb, 0x60, 0x64, 0x66, 0xa1, 0x79,
81107 - 0x4b, 0xc9, 0x8d, 0xaf, 0x2b, 0x1a, 0x4e, 0x9c, 0x2f, 0x09, 0x75, 0x86,
81108 - 0x1d, 0xa0, 0x4c, 0xbb, 0x92, 0xae, 0xb7, 0x16, 0xaa, 0x94, 0xc1, 0xc3,
81109 - 0x52, 0xac, 0x0d, 0x97, 0x6c, 0x94, 0xa7, 0xeb, 0x31, 0x39, 0x5d, 0xe1,
81110 - 0x3c, 0xfb, 0xd1, 0xc7, 0x45, 0x1d, 0x18, 0x6b, 0x90, 0xf2, 0x98, 0x6b,
81111 - 0xbe, 0x6e, 0xe9, 0x35, 0xb1, 0x07, 0x77, 0xcb, 0xfa, 0x44, 0xf3, 0x9a,
81112 - 0x55, 0xac, 0xd3, 0x4e, 0x42, 0x7d, 0xb3, 0x53, 0x66, 0xfb, 0xf2, 0xfa,
81113 - 0x79, 0xac, 0x5d, 0xc0, 0x7a, 0x59, 0x25, 0xb3, 0xba, 0x21, 0xf7, 0x7e,
81114 - 0x52, 0xf9, 0x72, 0xab, 0x5c, 0x1d, 0x95, 0x8b, 0x9b, 0x71, 0x39, 0x52,
81115 - 0x19, 0x97, 0x8d, 0x4d, 0x4f, 0x0a, 0x95, 0xb4, 0xac, 0xa3, 0x4f, 0xbe,
81116 - 0x92, 0x91, 0xb5, 0xcd, 0x63, 0xea, 0xac, 0x2f, 0x42, 0x2e, 0x6d, 0xa0,
81117 - 0x4f, 0x63, 0x73, 0x12, 0x3f, 0xdf, 0x1e, 0x88, 0xa1, 0xdf, 0x10, 0xfa,
81118 - 0x88, 0xf5, 0xb3, 0xca, 0x3d, 0xc0, 0x21, 0xe6, 0xae, 0xfa, 0xb6, 0xc1,
81119 - 0xb8, 0x2c, 0x54, 0x79, 0x4e, 0x2f, 0x4c, 0x6f, 0xac, 0xc4, 0xb2, 0xd4,
81120 - 0x77, 0xa7, 0x9b, 0xc3, 0xe0, 0x53, 0xe8, 0xef, 0x2a, 0x65, 0x42, 0x50,
81121 - 0x8a, 0x90, 0xb5, 0x0d, 0xc0, 0x46, 0x58, 0x1b, 0xb0, 0xdf, 0x8b, 0xcd,
81122 - 0x21, 0x94, 0x0e, 0x4a, 0xac, 0x03, 0xd8, 0x8b, 0x4d, 0x17, 0x65, 0x0c,
81123 - 0xa5, 0xd6, 0xed, 0x27, 0x9b, 0x9c, 0x3f, 0xab, 0x74, 0x90, 0xc6, 0xf1,
81124 - 0xd4, 0x1d, 0xb6, 0x7a, 0xc0, 0x5b, 0xb4, 0x8a, 0x2b, 0x62, 0xe7, 0xd2,
81125 - 0x21, 0xfa, 0x0b, 0x90, 0x2b, 0x37, 0x0f, 0x68, 0x58, 0x3e, 0x1b, 0xa0,
81126 - 0xdc, 0x09, 0xba, 0xe7, 0x81, 0xaf, 0x5e, 0xc9, 0x06, 0x69, 0x73, 0xf1,
81127 - 0x59, 0x5a, 0x01, 0xcf, 0xa5, 0xad, 0x12, 0x0c, 0x50, 0x5f, 0x45, 0xd9,
81128 - 0xa7, 0xde, 0xa2, 0x5c, 0xca, 0xd5, 0xb4, 0x6d, 0x5e, 0x6a, 0xdb, 0xe6,
81129 - 0xeb, 0xa8, 0xb7, 0x20, 0x3b, 0xe0, 0x9b, 0xd4, 0x79, 0x1e, 0x03, 0x98,
81130 - 0x33, 0x6b, 0x15, 0x2a, 0xfe, 0x79, 0xd6, 0x5b, 0x4f, 0x54, 0x69, 0xaf,
81131 - 0xd1, 0x6e, 0x53, 0xf2, 0x49, 0x92, 0xcb, 0x71, 0x23, 0x83, 0x23, 0x8a,
81132 - 0x37, 0x88, 0x83, 0xe4, 0x72, 0xda, 0xd4, 0x75, 0x77, 0xd4, 0xf9, 0xb2,
81133 - 0xfa, 0x73, 0x80, 0x61, 0x48, 0x9d, 0xad, 0xed, 0x4d, 0x59, 0x39, 0x65,
81134 - 0x2b, 0xb6, 0x5a, 0x79, 0x37, 0x24, 0xc5, 0xf1, 0x3f, 0xc2, 0x9e, 0xd8,
81135 - 0x56, 0x72, 0x40, 0x5a, 0xe0, 0xbb, 0xca, 0x07, 0xe6, 0xdc, 0x84, 0xb2,
81136 - 0xb3, 0x72, 0x15, 0xf8, 0x38, 0x5a, 0xd5, 0x95, 0xfa, 0xa1, 0x87, 0xdc,
81137 - 0x25, 0xd2, 0x53, 0xbd, 0xb5, 0x0c, 0x9c, 0xce, 0x2c, 0x15, 0xac, 0xe4,
81138 - 0x12, 0xe8, 0x63, 0x10, 0xb6, 0x87, 0x1b, 0x91, 0xdc, 0x65, 0xd2, 0x11,
81139 - 0xfb, 0xb0, 0xbe, 0x4b, 0x66, 0xa2, 0xbb, 0x6d, 0x9b, 0x87, 0x0e, 0x68,
81140 - 0x9d, 0x8f, 0xbe, 0x4b, 0x70, 0xe6, 0x7a, 0xb5, 0x9f, 0x92, 0x5c, 0xa5,
81141 - 0x9c, 0x2d, 0x40, 0xd7, 0x53, 0xe7, 0xf4, 0xc0, 0x9e, 0x61, 0x3d, 0xe7,
81142 - 0x44, 0xdb, 0xc5, 0xac, 0x05, 0xfd, 0x66, 0x97, 0x95, 0x8d, 0x3e, 0x89,
81143 - 0xf2, 0xde, 0x20, 0x6d, 0x5b, 0xea, 0x90, 0xe4, 0xaa, 0x3f, 0x47, 0x27,
81144 - 0x3e, 0xf6, 0x29, 0x9d, 0x34, 0xe0, 0x0d, 0xa8, 0x79, 0x61, 0x97, 0x58,
81145 - 0x73, 0x6a, 0xde, 0x58, 0xc7, 0xbc, 0x68, 0xbb, 0xf8, 0xb7, 0x01, 0x3d,
81146 - 0x0f, 0xf0, 0xac, 0xf6, 0xc4, 0x36, 0x8e, 0x29, 0x58, 0x79, 0xd8, 0x4e,
81147 - 0x33, 0x69, 0x5b, 0x02, 0x83, 0x7e, 0x5f, 0xbd, 0xaf, 0x02, 0xf6, 0x95,
81148 - 0xc3, 0xbe, 0xec, 0xc1, 0xdd, 0xfb, 0x2a, 0x05, 0xf4, 0xbe, 0x06, 0x3a,
81149 - 0x60, 0x8a, 0xee, 0x5a, 0xbf, 0x73, 0x5f, 0x68, 0xbb, 0xb8, 0x7b, 0x8e,
81150 - 0xc7, 0x06, 0xf4, 0x1c, 0xd1, 0x8e, 0x39, 0x06, 0x77, 0xcd, 0x01, 0x7a,
81151 - 0x8e, 0x72, 0xfc, 0xe0, 0x1e, 0xe3, 0x5f, 0xef, 0xd5, 0xe3, 0x39, 0xa6,
81152 - 0x0b, 0x7a, 0x58, 0x9d, 0x75, 0x58, 0xc9, 0xd4, 0xb6, 0xad, 0x76, 0x1a,
81153 - 0x3a, 0xaf, 0x73, 0xcc, 0x9d, 0x76, 0xa6, 0xad, 0xec, 0xcc, 0x3b, 0xe8,
81154 - 0xcc, 0x7a, 0x14, 0x3e, 0x73, 0x6a, 0x19, 0xbe, 0x73, 0xe5, 0xed, 0x58,
81155 - 0xf7, 0xcf, 0xe0, 0x87, 0x42, 0x16, 0x8d, 0xd2, 0x2f, 0x98, 0x14, 0xe5,
81156 - 0x97, 0x8e, 0xc2, 0xff, 0x75, 0xf6, 0x29, 0x5b, 0xb4, 0x38, 0x3a, 0xee,
81157 - 0xfb, 0x0b, 0xd6, 0x2c, 0xe4, 0x46, 0x71, 0x14, 0x36, 0x7d, 0x14, 0xf8,
81158 - 0x72, 0x47, 0x30, 0x8e, 0xf0, 0xbc, 0x3b, 0x44, 0x9f, 0xf5, 0x99, 0xea,
81159 - 0x2c, 0xde, 0xf7, 0xa1, 0xfd, 0xe7, 0x06, 0xce, 0x3e, 0xf4, 0xf9, 0x57,
81160 - 0xa8, 0x63, 0x1b, 0xfb, 0x70, 0x8a, 0x1f, 0xe0, 0xfd, 0x41, 0xf4, 0x01,
81161 - 0x4f, 0x81, 0x53, 0x6c, 0xf7, 0x30, 0x7e, 0x2f, 0xa3, 0xee, 0xdd, 0xa8,
81162 - 0xbb, 0x8e, 0xba, 0x43, 0x78, 0xff, 0xe1, 0xae, 0x79, 0xdf, 0x81, 0xf7,
81163 - 0xcf, 0xa1, 0x1d, 0xfb, 0x77, 0x5e, 0x44, 0xfb, 0x83, 0xf8, 0xfd, 0xc5,
81164 - 0xae, 0x3e, 0x8d, 0x5d, 0xef, 0xbe, 0xbc, 0x79, 0xc9, 0xf0, 0xc0, 0x8e,
81165 - 0x6f, 0x07, 0xfe, 0xb1, 0xa8, 0x8f, 0x0a, 0x15, 0xca, 0x9b, 0xb0, 0x3c,
81166 - 0xb2, 0xe2, 0xcb, 0x1c, 0x91, 0x79, 0xc8, 0xfa, 0x42, 0x45, 0xbc, 0x6e,
81167 - 0x19, 0x9e, 0xfc, 0x31, 0x64, 0xfa, 0x3c, 0xf0, 0x5a, 0x80, 0x7d, 0x71,
81168 - 0x74, 0x25, 0x8c, 0xe7, 0x21, 0xc8, 0x3b, 0xc9, 0x74, 0x09, 0x79, 0x3e,
81169 - 0x02, 0xd9, 0xd2, 0x0b, 0x9e, 0x57, 0x3e, 0x88, 0x3c, 0x0e, 0xb9, 0x34,
81170 - 0x8b, 0xbe, 0xb3, 0xe8, 0xf3, 0xd1, 0xe6, 0xff, 0x31, 0xb4, 0xec, 0xc3,
81171 - 0xf0, 0xec, 0x2e, 0x18, 0xc2, 0xe2, 0xae, 0x92, 0x1f, 0x5f, 0x98, 0x9e,
81172 - 0x5b, 0x89, 0xc8, 0xf0, 0xaa, 0x9d, 0xa4, 0xb3, 0x3f, 0xb2, 0xca, 0x98,
81173 - 0x84, 0x8c, 0x04, 0x85, 0xb2, 0x5f, 0xc6, 0x43, 0xb0, 0xd1, 0x02, 0xde,
81174 - 0x30, 0x74, 0x94, 0x7a, 0x97, 0x2c, 0x60, 0xcb, 0x36, 0x77, 0x62, 0x13,
81175 - 0x47, 0xda, 0xb1, 0x89, 0x21, 0xe8, 0x88, 0xd7, 0x83, 0x5a, 0x5e, 0x45,
81176 - 0x40, 0x27, 0x6f, 0x01, 0xfe, 0x29, 0x5b, 0x42, 0xe0, 0x1f, 0x07, 0xbc,
81177 - 0xf3, 0x26, 0xda, 0x6f, 0xd4, 0x5b, 0xa0, 0x77, 0xc8, 0x38, 0x9b, 0xf5,
81178 - 0x2c, 0xd1, 0x96, 0x21, 0x0f, 0xe0, 0xbd, 0xd1, 0xc9, 0x6b, 0xe7, 0xb4,
81179 - 0x8d, 0x75, 0x97, 0x6f, 0xf3, 0xa0, 0xa3, 0x69, 0x91, 0xf6, 0xfa, 0xe1,
81180 - 0xd0, 0x9d, 0x7b, 0xfc, 0xa3, 0x5d, 0x7b, 0x0c, 0x4a, 0x72, 0x89, 0xf8,
81181 - 0x8d, 0xa8, 0xbd, 0xfa, 0xf8, 0x2d, 0x2a, 0x5b, 0x7e, 0x1c, 0x3e, 0x89,
81182 - 0x40, 0x9a, 0x2b, 0x5b, 0x14, 0x3a, 0xb1, 0x0f, 0xb2, 0x9e, 0x72, 0x9e,
81183 - 0xf8, 0x0e, 0x03, 0x87, 0x11, 0xfc, 0x1c, 0xfc, 0x76, 0x70, 0x7a, 0xb2,
81184 - 0xbd, 0x3f, 0x7f, 0x0f, 0xeb, 0x90, 0x55, 0x2c, 0x09, 0x3f, 0xf0, 0x71,
81185 - 0x91, 0xcf, 0x90, 0xaf, 0x7d, 0x94, 0xb7, 0x3e, 0x4c, 0x8f, 0xed, 0x82,
81186 - 0x89, 0xb8, 0x21, 0x4c, 0xf5, 0x16, 0x6c, 0x8b, 0x28, 0xa3, 0x60, 0xa7,
81187 - 0x9b, 0xd4, 0x29, 0x5c, 0x73, 0x92, 0xf6, 0xb6, 0x81, 0x93, 0x7a, 0xc5,
81188 - 0x93, 0x73, 0x95, 0xb7, 0x1b, 0xb8, 0x78, 0xbe, 0xb0, 0xf9, 0x96, 0xb8,
81189 - 0x7e, 0x54, 0xe9, 0x1e, 0x0d, 0xd3, 0x6e, 0xfc, 0xd0, 0x3f, 0x27, 0x7e,
81190 - 0xa8, 0x0f, 0x88, 0x4b, 0xda, 0xd4, 0xc4, 0xe7, 0xef, 0x00, 0x9f, 0xec,
81191 - 0xeb, 0x1a, 0xdd, 0xf2, 0x2e, 0x03, 0xd7, 0xdd, 0xfa, 0xf8, 0xf4, 0x1d,
81192 - 0xfa, 0xd8, 0xc7, 0xf1, 0x5e, 0x67, 0xf1, 0xfb, 0x7d, 0xbe, 0xcc, 0x1d,
81193 - 0x5e, 0xdd, 0xab, 0x7d, 0xd9, 0xb4, 0xb3, 0xad, 0xb3, 0xfe, 0xdb, 0x7d,
81194 - 0xfe, 0x19, 0x0e, 0x2f, 0xef, 0x6e, 0xeb, 0x3b, 0xb0, 0x33, 0x66, 0xf7,
81195 - 0x7c, 0x3f, 0xee, 0xdb, 0xdb, 0xaf, 0xdd, 0xf1, 0xeb, 0xe0, 0xab, 0xd8,
81196 - 0x3b, 0x7b, 0xc9, 0xda, 0xf3, 0xcd, 0x82, 0xad, 0xf7, 0xc2, 0x3e, 0x68,
81197 - 0x6b, 0x6e, 0xf5, 0x07, 0x95, 0x6e, 0xcc, 0xda, 0xf4, 0x63, 0x4a, 0x6b,
81198 - 0x7c, 0xbe, 0x07, 0x65, 0xe7, 0xd8, 0x21, 0xf0, 0x40, 0x16, 0x7d, 0x39,
81199 - 0xc7, 0xee, 0xf1, 0xbe, 0x8d, 0x94, 0x96, 0x85, 0x5a, 0x08, 0xed, 0x89,
81200 - 0x6c, 0x49, 0x1e, 0x86, 0xaf, 0x98, 0x98, 0xa2, 0xdf, 0x00, 0x7f, 0x79,
81201 - 0x46, 0xe4, 0x98, 0x94, 0x6b, 0x1f, 0x94, 0x85, 0x95, 0x96, 0xbc, 0x1f,
81202 - 0x7a, 0xf0, 0xf7, 0xa0, 0x47, 0xe5, 0x12, 0x84, 0xd7, 0x25, 0x1c, 0xc6,
81203 - 0xa5, 0xa8, 0xd8, 0x4f, 0xc1, 0x96, 0xbf, 0x10, 0x93, 0xe0, 0x05, 0xd2,
81204 - 0x5e, 0xca, 0x79, 0xbf, 0x48, 0xbf, 0x2d, 0x57, 0xe1, 0x08, 0x25, 0x26,
81205 - 0xb3, 0x92, 0x82, 0xfd, 0x37, 0xe6, 0x34, 0x50, 0x96, 0x25, 0x35, 0xfa,
81206 - 0xb4, 0xa0, 0xef, 0x25, 0xf4, 0xc5, 0xb8, 0x9e, 0x8d, 0x38, 0x7e, 0x83,
81207 - 0xd2, 0xbb, 0x41, 0x18, 0x92, 0xa6, 0x24, 0x2c, 0x3f, 0x6c, 0xd1, 0xd7,
81208 - 0x7d, 0x66, 0x33, 0x0c, 0xdd, 0x14, 0x97, 0xe7, 0x20, 0x67, 0x9f, 0x55,
81209 - 0xf1, 0x17, 0xb7, 0xed, 0x8f, 0x3e, 0x7a, 0x18, 0x74, 0xb7, 0x2c, 0xe1,
81210 - 0xa8, 0xf7, 0x73, 0x59, 0x59, 0x6e, 0xc1, 0xef, 0xa1, 0xac, 0x7f, 0x00,
81211 - 0xf2, 0x2a, 0xf1, 0xa5, 0x12, 0x6d, 0x49, 0x37, 0x03, 0xd8, 0x4b, 0x32,
81212 - 0x73, 0xf8, 0x5d, 0x03, 0x9a, 0x3e, 0x8e, 0x49, 0x70, 0xb9, 0x00, 0xfb,
81213 - 0xf9, 0x8c, 0x2c, 0xa6, 0xe1, 0x9f, 0xda, 0xa5, 0x56, 0xc0, 0x75, 0x63,
81214 - 0xd0, 0xdb, 0xd0, 0xa7, 0x2b, 0xf4, 0x87, 0xe5, 0xc8, 0x32, 0xfb, 0x9c,
81215 - 0x01, 0x6d, 0x75, 0x01, 0x77, 0xdd, 0x72, 0x36, 0x9a, 0x28, 0xe5, 0xc1,
81216 - 0x4f, 0xb6, 0xdb, 0x0f, 0x5e, 0x66, 0x49, 0xfd, 0xf6, 0x34, 0xe8, 0x87,
81217 - 0xcf, 0x38, 0xce, 0x55, 0xd6, 0x27, 0x51, 0xb2, 0xde, 0x15, 0x7b, 0x29,
81218 - 0x8c, 0xb9, 0xa0, 0x93, 0x2e, 0x97, 0xe4, 0x6c, 0xe6, 0x98, 0x34, 0x6a,
81219 - 0xf0, 0xc9, 0x33, 0xb0, 0xa3, 0xea, 0x9e, 0x34, 0x2a, 0xb4, 0x9f, 0x4e,
81220 - 0x81, 0x1f, 0x5e, 0x41, 0x39, 0x8f, 0xf2, 0x16, 0xca, 0x8f, 0xa3, 0x7c,
81221 - 0x0d, 0x25, 0x61, 0x3f, 0x25, 0x8d, 0xfa, 0x55, 0xcc, 0xcd, 0x39, 0xa6,
81222 - 0x0c, 0xcc, 0xf0, 0x21, 0x0f, 0x9f, 0x82, 0x9d, 0xe3, 0xd7, 0x9f, 0x12,
81223 - 0x69, 0x7c, 0x0c, 0xbf, 0x96, 0x7a, 0xa7, 0x8f, 0xb9, 0x90, 0x99, 0x84,
81224 - 0xbd, 0x2b, 0xd6, 0xd9, 0xcc, 0xc7, 0xcd, 0x3c, 0x1f, 0xc3, 0x7a, 0xd7,
81225 - 0xb1, 0x76, 0x18, 0xe7, 0xd9, 0x92, 0x47, 0xd3, 0x67, 0xe4, 0x93, 0xe9,
81226 - 0x7b, 0x65, 0x62, 0x20, 0x5c, 0x0a, 0x7b, 0xdc, 0x3f, 0xed, 0xda, 0xbd,
81227 - 0xf6, 0xef, 0xef, 0x9b, 0x7b, 0x8e, 0x60, 0x2f, 0xfb, 0xb5, 0xed, 0x66,
81228 - 0xff, 0x13, 0xe3, 0x73, 0x58, 0x92, 0x1c, 0xe1, 0x7c, 0x9e, 0x04, 0x96,
81229 - 0x47, 0x9c, 0x8c, 0x3d, 0x06, 0xeb, 0x3d, 0x85, 0xdf, 0x19, 0xd0, 0x8a,
81230 - 0x7b, 0x3e, 0x69, 0xff, 0x47, 0xc0, 0x84, 0xb6, 0x06, 0xd7, 0x11, 0x2b,
81231 - 0x78, 0xe8, 0x26, 0xf6, 0x56, 0x92, 0xee, 0x43, 0x9e, 0xdc, 0x6e, 0xf2,
81232 - 0x19, 0x92, 0xf2, 0xd2, 0x31, 0xf9, 0x71, 0xed, 0xba, 0x9c, 0xab, 0x1d,
81233 - 0x93, 0x97, 0x51, 0x2e, 0xd6, 0x4a, 0xc0, 0x23, 0x7d, 0x46, 0xce, 0xd1,
81234 - 0xc2, 0xb9, 0x50, 0x2e, 0xdf, 0x1f, 0x9b, 0xc7, 0xf9, 0xcd, 0x3a, 0x2d,
81235 - 0xd9, 0x48, 0x97, 0x64, 0x63, 0x12, 0x63, 0xea, 0x3d, 0x12, 0xfa, 0x2a,
81236 - 0xf7, 0xdb, 0x27, 0xf9, 0x5a, 0x49, 0x0a, 0x19, 0xfa, 0x34, 0xbd, 0x92,
81237 - 0x87, 0x4d, 0x0e, 0x3b, 0xe8, 0x8c, 0x8e, 0xb3, 0xb9, 0xb1, 0x22, 0x6c,
81238 - 0xf8, 0x85, 0xe6, 0xeb, 0x56, 0xa3, 0x6d, 0xff, 0x6f, 0x59, 0xcf, 0xc2,
81239 - 0x76, 0xfd, 0x0e, 0xe4, 0xc6, 0x73, 0xb0, 0x09, 0x9f, 0xbd, 0x83, 0xc7,
81240 - 0x48, 0x23, 0xd7, 0xac, 0x46, 0x7d, 0x94, 0x7c, 0x66, 0xf8, 0x01, 0x63,
81241 - 0xe1, 0xe7, 0x34, 0x6a, 0xb7, 0x0c, 0xfd, 0x29, 0x5b, 0x00, 0xe7, 0x42,
81242 - 0xbd, 0xf2, 0x77, 0xf0, 0xaf, 0x28, 0x77, 0x7c, 0xbd, 0xaf, 0xfd, 0x86,
81243 - 0x3a, 0x60, 0xcd, 0x47, 0x13, 0x80, 0x4a, 0xa4, 0x5e, 0x2f, 0x28, 0x5c,
81244 - 0xb9, 0xcb, 0x43, 0x52, 0xab, 0x12, 0xbf, 0x09, 0xc7, 0xb6, 0x95, 0x5d,
81245 - 0x0b, 0xbc, 0xba, 0x38, 0x1f, 0xbf, 0x3d, 0x01, 0xff, 0xe1, 0x8c, 0x38,
81246 - 0x13, 0xbd, 0xd8, 0x13, 0x9f, 0x45, 0x66, 0x2e, 0xff, 0x3a, 0x19, 0xd0,
81247 - 0x05, 0xbf, 0x3e, 0x84, 0xb3, 0x8c, 0xc8, 0x59, 0xd8, 0xff, 0xe7, 0x40,
81248 - 0x47, 0x9f, 0xaf, 0x0c, 0xc9, 0xf9, 0x4a, 0x1c, 0xfe, 0x16, 0xed, 0x94,
81249 - 0xe5, 0xe9, 0xe4, 0x3a, 0xcb, 0x27, 0xa6, 0x53, 0x75, 0x96, 0x5f, 0x32,
81250 - 0xfe, 0xe2, 0x97, 0x8d, 0x1f, 0xb9, 0x3e, 0xad, 0x7d, 0xb8, 0xaf, 0x4d,
81251 - 0x8f, 0xaa, 0xb2, 0x39, 0xbd, 0x13, 0x3b, 0x09, 0x1b, 0xbd, 0x9d, 0xa1,
81252 - 0x7e, 0x06, 0x8c, 0x12, 0x3c, 0x09, 0x7a, 0x9a, 0x87, 0xdc, 0xce, 0xc1,
81253 - 0xf7, 0x38, 0x0b, 0x1f, 0xa4, 0xd8, 0x84, 0x4c, 0xf0, 0xd2, 0x28, 0xc5,
81254 - 0xfc, 0xf9, 0x63, 0xbb, 0x18, 0xdf, 0xe4, 0x99, 0x19, 0xff, 0x2b, 0x4d,
81255 - 0xff, 0xab, 0xf3, 0x8f, 0xf3, 0x81, 0x36, 0xa9, 0x2b, 0x7f, 0x09, 0x9f,
81256 - 0x51, 0x82, 0xc5, 0x0c, 0xc7, 0xa6, 0xe9, 0xaf, 0xca, 0x36, 0xec, 0x83,
81257 - 0xb0, 0xf7, 0x3d, 0x09, 0x3f, 0xd5, 0x6a, 0xbd, 0x0a, 0x59, 0x53, 0x82,
81258 - 0xcf, 0x68, 0x5b, 0xa8, 0x5f, 0x67, 0x1b, 0xe5, 0xc8, 0x98, 0x73, 0x1b,
81259 - 0x34, 0x97, 0x3d, 0x2e, 0xf2, 0x5d, 0xd4, 0x35, 0x56, 0x78, 0x06, 0xdf,
81260 - 0xc7, 0x19, 0x98, 0x33, 0x51, 0x75, 0xec, 0x07, 0xfb, 0x3d, 0xca, 0x7d,
81261 - 0x8c, 0x39, 0xdd, 0x18, 0x5f, 0x5f, 0xe7, 0x98, 0xc4, 0x24, 0xaf, 0x74,
81262 - 0xbe, 0xbb, 0xae, 0xf7, 0x77, 0x34, 0x33, 0x2a, 0x57, 0x2b, 0x6a, 0x0e,
81263 - 0xd0, 0xfa, 0xaf, 0x30, 0x66, 0x0b, 0x74, 0xcb, 0x18, 0x95, 0x27, 0x65,
81264 - 0xe8, 0xa4, 0x72, 0x25, 0x05, 0xda, 0x09, 0xca, 0x6c, 0x8c, 0x60, 0xbb,
81265 - 0xb2, 0x5d, 0xf9, 0x72, 0x97, 0x8e, 0x8f, 0xf0, 0x19, 0x3a, 0xac, 0x39,
81266 - 0x23, 0xbc, 0x1b, 0x81, 0x7d, 0x83, 0x3d, 0x75, 0xe2, 0x42, 0xff, 0x15,
81267 - 0x71, 0x16, 0x66, 0x8f, 0xea, 0x4f, 0xaf, 0x83, 0xf1, 0x66, 0x9d, 0x02,
81268 - 0x14, 0x77, 0x1e, 0xeb, 0xa7, 0x2e, 0x05, 0x83, 0x8c, 0xa9, 0x27, 0x2f,
81269 - 0x81, 0xad, 0x3c, 0x83, 0x8b, 0xa6, 0x4f, 0x6b, 0xbe, 0x2f, 0x4a, 0xda,
81270 - 0x22, 0x0e, 0x12, 0xa5, 0x2d, 0x20, 0x7b, 0xc0, 0xbb, 0x21, 0x1f, 0x5a,
81271 - 0xd5, 0x7b, 0xb6, 0x2f, 0x0a, 0xef, 0x5b, 0xe4, 0xf6, 0x4a, 0x22, 0x7d,
81272 - 0x0b, 0xb2, 0x39, 0x1f, 0x4d, 0x83, 0x56, 0x3e, 0xd1, 0x05, 0x9e, 0x9e,
81273 - 0xcc, 0xda, 0x3f, 0xe8, 0xd2, 0xb6, 0x20, 0x7c, 0x7e, 0xc6, 0x01, 0x2a,
81274 - 0x59, 0x8c, 0xe9, 0x96, 0x7f, 0x11, 0xc4, 0x73, 0x93, 0xef, 0xb0, 0x73,
81275 - 0x82, 0x1a, 0xbe, 0xb2, 0xc1, 0x21, 0xfc, 0x04, 0xd1, 0xb1, 0x5c, 0x4b,
81276 - 0x3e, 0x04, 0x29, 0x2f, 0x98, 0x3f, 0x69, 0xd6, 0x4a, 0x5e, 0x0c, 0xb7,
81277 - 0x6d, 0xba, 0xd4, 0xaa, 0x07, 0xdb, 0x22, 0x68, 0x7c, 0x22, 0xca, 0x18,
81278 - 0xd9, 0xc3, 0xa6, 0xee, 0xb4, 0x8f, 0xc3, 0x2a, 0x5e, 0xc7, 0x7b, 0x24,
81279 - 0xd2, 0xd6, 0x94, 0xa1, 0xad, 0x8f, 0x81, 0xb6, 0x4e, 0x29, 0xda, 0x6a,
81280 - 0xc9, 0xab, 0xe9, 0xb4, 0x7c, 0x61, 0x4f, 0xfa, 0xda, 0xfd, 0x17, 0x01,
81281 - 0xbc, 0xfc, 0x0d, 0xca, 0xc2, 0x17, 0xb1, 0x2e, 0xf4, 0x4e, 0xb9, 0x92,
81282 - 0xc8, 0xce, 0xd2, 0x16, 0x82, 0x1e, 0x29, 0xc3, 0xe7, 0x4a, 0x5e, 0x1a,
81283 - 0x52, 0x7d, 0x92, 0xd0, 0x29, 0x0d, 0xd0, 0x1b, 0xf1, 0x5b, 0xae, 0x40,
81284 - 0x0e, 0x5f, 0x0a, 0x41, 0x6f, 0x91, 0x67, 0x65, 0xc0, 0x86, 0x6c, 0x60,
81285 - 0xff, 0x06, 0x78, 0x27, 0x79, 0x29, 0x82, 0x32, 0xae, 0xe6, 0x6a, 0x54,
81286 - 0x5c, 0x35, 0xbe, 0x51, 0x19, 0x55, 0xe3, 0x1a, 0xb0, 0x5f, 0x93, 0x97,
81287 - 0x20, 0xdf, 0x33, 0x69, 0x19, 0xb9, 0x94, 0x91, 0xf8, 0x25, 0x4b, 0x8a,
81288 - 0x33, 0xad, 0x56, 0x18, 0xb0, 0x8f, 0x5e, 0xea, 0x97, 0x5b, 0x2a, 0xb6,
81289 - 0x1a, 0x56, 0xf1, 0xd6, 0xc5, 0xcc, 0x0c, 0x78, 0x93, 0xf8, 0xf3, 0x30,
81290 - 0xa6, 0x00, 0xfd, 0x58, 0x90, 0xb3, 0x2b, 0xc4, 0x0f, 0xe3, 0xe5, 0xdb,
81291 - 0xb1, 0x80, 0x24, 0x20, 0xcb, 0x8e, 0xcb, 0x7c, 0xad, 0x1b, 0xb2, 0x2c,
81292 - 0x08, 0x1d, 0xf8, 0x50, 0xb7, 0xf4, 0x0e, 0x93, 0x1e, 0x80, 0x17, 0x0f,
81293 - 0x73, 0x17, 0x24, 0x8f, 0x31, 0x85, 0x95, 0x9d, 0xfe, 0x45, 0xe9, 0x06,
81294 - 0x4f, 0x1d, 0x97, 0x93, 0x35, 0xce, 0x13, 0x74, 0xca, 0x72, 0x10, 0x34,
81295 - 0xe4, 0x3a, 0x47, 0x30, 0x0f, 0xf4, 0x76, 0xc7, 0x1f, 0xf9, 0x2f, 0xfb,
81296 - 0x06, 0x34, 0xe9, 0xf3, 0x5d, 0xb8, 0xd4, 0xe5, 0xcd, 0x58, 0xdb, 0x19,
81297 - 0x09, 0xce, 0x65, 0x3e, 0x60, 0x7d, 0x37, 0x93, 0xb1, 0xae, 0x65, 0xb2,
81298 - 0xd6, 0xf5, 0x4c, 0xc1, 0xba, 0x01, 0xdd, 0xd4, 0xd8, 0x7c, 0x0e, 0xf4,
81299 - 0x03, 0xdd, 0xcf, 0x98, 0x79, 0xfb, 0x0c, 0xa3, 0x26, 0x66, 0xf0, 0x9a,
81300 - 0x6c, 0x54, 0x68, 0x3b, 0xb4, 0x1e, 0x9e, 0x4b, 0x97, 0xee, 0x01, 0x7c,
81301 - 0x80, 0x83, 0xbe, 0xee, 0x8e, 0xee, 0x08, 0x79, 0xa3, 0xb2, 0xa6, 0x74,
81302 - 0x47, 0x84, 0xba, 0x23, 0x9d, 0x97, 0xfd, 0xb2, 0x5d, 0x03, 0xff, 0x89,
81303 - 0xb2, 0x83, 0x65, 0xbb, 0x1e, 0x95, 0x2f, 0x54, 0x7d, 0x5a, 0xe2, 0x7e,
81304 - 0xcb, 0x6f, 0xea, 0x91, 0x80, 0x4c, 0x29, 0x7d, 0xdd, 0x27, 0x57, 0xd7,
81305 - 0xe1, 0x0f, 0xc1, 0x5a, 0xb0, 0xef, 0x63, 0xac, 0xc0, 0x56, 0xbe, 0xb1,
81306 - 0xf4, 0xf3, 0xee, 0xea, 0x2c, 0x70, 0xc5, 0xfb, 0x25, 0xec, 0xb3, 0x9f,
81307 - 0x3b, 0xf2, 0xdf, 0xc7, 0xc1, 0x93, 0x7c, 0xb6, 0x24, 0x0f, 0xbb, 0x91,
81308 - 0xf7, 0x5c, 0x79, 0xd8, 0x3d, 0xdb, 0x95, 0x31, 0xc0, 0x15, 0x80, 0x4d,
81309 - 0x1e, 0x06, 0x1c, 0x55, 0xd5, 0xde, 0xed, 0x8a, 0x35, 0x07, 0x3d, 0x5c,
81310 - 0x54, 0xf7, 0x57, 0x28, 0xd7, 0xf5, 0xda, 0x79, 0xf8, 0xab, 0xc5, 0xf1,
81311 - 0x1e, 0xea, 0xb7, 0xd1, 0x12, 0xf9, 0x5e, 0xd9, 0xf1, 0x19, 0xf0, 0xdc,
81312 - 0x57, 0xba, 0xa9, 0xdb, 0x8f, 0xa6, 0x27, 0xe5, 0x46, 0x85, 0xcf, 0x6c,
81313 - 0x4f, 0xa4, 0x45, 0xc5, 0x8f, 0x2b, 0xd3, 0x8b, 0xee, 0x6b, 0x86, 0xc7,
81314 - 0x6a, 0xa0, 0xf1, 0x53, 0xf2, 0x8d, 0xcd, 0x79, 0xf9, 0xf7, 0x9b, 0xb3,
81315 - 0xb0, 0x4f, 0x4e, 0xc0, 0x3e, 0xf9, 0x08, 0x78, 0xf8, 0x38, 0x78, 0xf8,
81316 - 0xe3, 0xa0, 0xfb, 0x19, 0x15, 0x77, 0xa8, 0x55, 0x12, 0x57, 0x4a, 0x2a,
81317 - 0xce, 0xfd, 0x1a, 0x68, 0x7e, 0x42, 0x82, 0xab, 0x43, 0xc0, 0x6b, 0xa9,
81318 - 0x15, 0x75, 0x5b, 0x0f, 0xc3, 0x06, 0xc1, 0x59, 0x97, 0x12, 0x41, 0x45,
81319 - 0x23, 0xae, 0xf3, 0x69, 0xe0, 0xf2, 0x4d, 0x5e, 0xa2, 0xc6, 0x23, 0xde,
81320 - 0xa8, 0x8d, 0x4a, 0xf1, 0x32, 0xfa, 0x2f, 0x47, 0x80, 0x37, 0xea, 0xc6,
81321 - 0xc4, 0xf9, 0xa2, 0x6c, 0x81, 0x2e, 0xb2, 0xc0, 0xcf, 0x3b, 0xa4, 0x1c,
81322 - 0x4d, 0x7c, 0x4d, 0x64, 0x52, 0x0e, 0x2d, 0x81, 0xa6, 0x97, 0x6c, 0xec,
81323 - 0x99, 0xb8, 0xc4, 0xf3, 0x65, 0x4f, 0xec, 0x65, 0xca, 0xa2, 0x03, 0xc6,
81324 - 0x37, 0xd1, 0xfa, 0xbe, 0x2e, 0x5c, 0x97, 0xeb, 0x7d, 0x46, 0xe6, 0xa1,
81325 - 0x53, 0x61, 0x7f, 0x43, 0x66, 0xbb, 0x31, 0xac, 0x19, 0x9e, 0xbb, 0xec,
81326 - 0x84, 0xe7, 0x2f, 0x73, 0x9e, 0xb0, 0x04, 0x96, 0x78, 0xb6, 0x9c, 0x07,
81327 - 0x3c, 0x80, 0xb9, 0x53, 0x4b, 0xc4, 0xdb, 0x18, 0xc6, 0xfd, 0x63, 0xe8,
81328 - 0x63, 0x4d, 0x57, 0xb9, 0x65, 0x2d, 0x1f, 0x72, 0x8d, 0x4e, 0x9d, 0x88,
81329 - 0x33, 0x80, 0xfc, 0xc8, 0x36, 0xb4, 0x7e, 0x2b, 0x28, 0xfd, 0xa7, 0x75,
81330 - 0xdf, 0x71, 0x81, 0x51, 0xd7, 0xeb, 0xaa, 0xfd, 0x04, 0x96, 0xb7, 0xa8,
81331 - 0xef, 0xb1, 0x06, 0xc7, 0x84, 0x3a, 0xe0, 0xce, 0x40, 0xee, 0xdc, 0x1b,
81332 - 0x26, 0xee, 0x1f, 0x83, 0x7e, 0x4d, 0x2e, 0xe9, 0x98, 0x7c, 0xf2, 0x72,
81333 - 0x1a, 0xfb, 0x91, 0x41, 0x46, 0x17, 0x6c, 0xec, 0xe1, 0x7d, 0x4a, 0x7e,
81334 - 0x4d, 0x40, 0x66, 0x39, 0xb2, 0x7e, 0x90, 0x67, 0x33, 0x28, 0x8d, 0xa7,
81335 - 0xf9, 0xce, 0x33, 0xe2, 0x79, 0x93, 0x17, 0xa3, 0xd0, 0x2f, 0x38, 0xa7,
81336 - 0xbe, 0x21, 0xa9, 0x6f, 0xb2, 0x6d, 0x48, 0xd1, 0x72, 0x10, 0x67, 0xb0,
81337 - 0x58, 0x69, 0x3d, 0x9c, 0x4b, 0x97, 0x40, 0x6d, 0xc4, 0x39, 0xf1, 0x41,
81338 - 0xbc, 0x8f, 0x03, 0x36, 0xe2, 0xb8, 0x8f, 0xba, 0x18, 0x75, 0xfb, 0xa5,
81339 - 0x58, 0x23, 0x3d, 0xa3, 0xac, 0xef, 0x37, 0xbe, 0xde, 0x67, 0x78, 0x27,
81340 - 0x84, 0xbd, 0x6b, 0x3a, 0x2e, 0x80, 0xa6, 0xca, 0xf0, 0xbb, 0xae, 0x2e,
81341 - 0x49, 0xf8, 0x4d, 0x90, 0xcf, 0x9f, 0xa2, 0x0c, 0x05, 0x7d, 0x95, 0xd7,
81342 - 0x27, 0x40, 0x6b, 0x7d, 0x90, 0x97, 0xad, 0xd6, 0x71, 0xd8, 0xc9, 0xa7,
81343 - 0xd3, 0xc4, 0xd1, 0x4d, 0xe0, 0xa8, 0x3b, 0x76, 0x1a, 0xe7, 0xb5, 0xf6,
81344 - 0xf4, 0x43, 0x4a, 0x5e, 0xc0, 0xd6, 0x51, 0x7a, 0x4b, 0xc7, 0x38, 0xd2,
81345 - 0xb4, 0x8d, 0x14, 0x0f, 0xe7, 0x5c, 0xca, 0xc3, 0x3c, 0xf0, 0x30, 0xae,
81346 - 0xe4, 0xb7, 0x96, 0x2d, 0x3d, 0x52, 0x3c, 0x9e, 0xc5, 0x7e, 0x27, 0x77,
81347 - 0xf5, 0xcb, 0xe0, 0x1d, 0xb6, 0x5f, 0xf3, 0x43, 0x61, 0xc6, 0x43, 0x03,
81348 - 0xde, 0xa4, 0x6c, 0x1c, 0x9c, 0x92, 0x8b, 0x07, 0x13, 0x93, 0xb3, 0x36,
81349 - 0x75, 0xc2, 0x94, 0xd4, 0x9f, 0xce, 0xca, 0x5a, 0x55, 0xeb, 0xe6, 0x39,
81350 - 0x77, 0x52, 0xf2, 0xcd, 0x02, 0xde, 0x3d, 0x94, 0xec, 0xef, 0xcb, 0x5d,
81351 - 0x7f, 0x4f, 0x39, 0xee, 0x09, 0x32, 0x42, 0xeb, 0x5e, 0xdb, 0xee, 0xc6,
81352 - 0xf9, 0x50, 0x2e, 0x7c, 0x10, 0xf5, 0x39, 0xc8, 0x36, 0x9e, 0x67, 0x0a,
81353 - 0x67, 0x77, 0x4a, 0x9d, 0x53, 0x3e, 0x4d, 0x7f, 0x80, 0x63, 0x12, 0xb1,
81354 - 0x39, 0xd4, 0xcf, 0x08, 0x75, 0x28, 0xf7, 0xe6, 0xcf, 0xe7, 0x19, 0xf8,
81355 - 0x03, 0x8c, 0x31, 0xe1, 0xef, 0x33, 0x61, 0xf2, 0x64, 0xc0, 0xf5, 0xeb,
81356 - 0xc7, 0xa0, 0x7f, 0x43, 0x6a, 0x8d, 0x72, 0x95, 0x75, 0x29, 0x87, 0xe3,
81357 - 0xf3, 0x69, 0xbe, 0x8b, 0x3c, 0x66, 0xfc, 0xf2, 0xe3, 0xf0, 0x5b, 0xf3,
81358 - 0xcd, 0xae, 0xdf, 0xa0, 0x7f, 0x77, 0x64, 0x9d, 0x96, 0xcb, 0xdb, 0x31,
81359 - 0xc7, 0xc8, 0xde, 0x93, 0x35, 0xc6, 0xac, 0x2d, 0xe9, 0x82, 0x2c, 0x3d,
81360 - 0x2a, 0xc3, 0x46, 0x8e, 0x72, 0x3f, 0x7d, 0x4a, 0xd7, 0xe5, 0x67, 0x62,
81361 - 0x72, 0x6e, 0xed, 0xff, 0x85, 0xae, 0x7f, 0xbd, 0x5d, 0x57, 0xd8, 0xc3,
81362 - 0xae, 0xbb, 0x79, 0x19, 0xf2, 0xa0, 0x0a, 0x59, 0x51, 0x85, 0xac, 0xa8,
81363 - 0x42, 0x56, 0x54, 0x21, 0x2b, 0xaa, 0x90, 0x15, 0x55, 0xc8, 0x8a, 0xea,
81364 - 0x8c, 0xd1, 0x9b, 0xa7, 0x21, 0x73, 0xe9, 0xf3, 0xd0, 0xcf, 0xe9, 0xb4,
81365 - 0x05, 0xe2, 0x90, 0x25, 0xf4, 0x67, 0x12, 0xa5, 0x5b, 0xc0, 0xcd, 0xd7,
81366 - 0xd3, 0xf4, 0xb9, 0x5b, 0xf2, 0x57, 0xe9, 0xce, 0xdd, 0xab, 0xf8, 0x86,
81367 - 0x3c, 0x0a, 0x7c, 0x7d, 0x08, 0xf8, 0xfa, 0xf0, 0x5d, 0x39, 0x16, 0x7e,
81368 - 0x4c, 0x64, 0xb8, 0x14, 0x80, 0xff, 0x39, 0x73, 0x07, 0xee, 0xe8, 0x7b,
81369 - 0x63, 0x8d, 0xbb, 0x6c, 0x63, 0xfa, 0xdc, 0xa3, 0xea, 0xde, 0x7c, 0x03,
81370 - 0x76, 0xf9, 0x8d, 0x74, 0x29, 0x12, 0x50, 0xf7, 0x73, 0x2e, 0x69, 0x67,
81371 - 0x8f, 0xbf, 0x6f, 0x84, 0xb5, 0x5c, 0xd4, 0x67, 0x9f, 0xcf, 0xf4, 0x81,
81372 - 0x0f, 0x68, 0xdf, 0xdd, 0x50, 0xf6, 0xdd, 0xd1, 0x74, 0x50, 0xb6, 0xa2,
81373 - 0xd4, 0xa9, 0x3f, 0x92, 0x93, 0x2b, 0x91, 0x1e, 0xfa, 0xdf, 0x8b, 0xd5,
81374 - 0x83, 0xb2, 0xad, 0x64, 0xca, 0x07, 0xd1, 0xd7, 0x93, 0x79, 0xd0, 0xc4,
81375 - 0x11, 0xf8, 0x8e, 0x17, 0x65, 0x2c, 0x76, 0x11, 0x7b, 0xfd, 0x3c, 0xc6,
81376 - 0xc0, 0x07, 0x68, 0x15, 0x50, 0x77, 0x1d, 0x7e, 0xc6, 0x6d, 0xe1, 0xf3,
81377 - 0x98, 0x73, 0x1e, 0x88, 0xce, 0x3a, 0x29, 0xe7, 0x35, 0xf1, 0xe9, 0x8c,
81378 - 0x34, 0xc5, 0xbb, 0xb6, 0x41, 0xc9, 0xaf, 0xd3, 0x2f, 0xeb, 0x03, 0x1f,
81379 - 0xfe, 0x08, 0x7a, 0x98, 0x6b, 0x50, 0x2e, 0x70, 0x0f, 0xff, 0x0d, 0xf0,
81380 - 0xc5, 0x67, 0xbb, 0xbd, 0xfb, 0xa1, 0x7b, 0x29, 0xf7, 0xb5, 0xef, 0x94,
81381 - 0xc7, 0x18, 0xa5, 0x1b, 0xd2, 0xbc, 0x77, 0xe0, 0xfe, 0xfe, 0x18, 0x76,
81382 - 0x4e, 0x14, 0x74, 0x80, 0xfa, 0x75, 0xdf, 0xce, 0xf5, 0xed, 0x19, 0x1d,
81383 - 0xeb, 0xbb, 0xa2, 0x6c, 0x9a, 0x1c, 0xf4, 0xd8, 0x31, 0xf4, 0x65, 0xac,
81384 - 0xbd, 0xd5, 0x3a, 0x95, 0x86, 0xdf, 0xf1, 0x24, 0x65, 0xd9, 0x7d, 0xe0,
81385 - 0x69, 0xda, 0x45, 0xd4, 0xb9, 0x62, 0xdd, 0xcc, 0x6c, 0x3b, 0x61, 0xe8,
81386 - 0xcb, 0x19, 0xd0, 0x5c, 0x0e, 0x74, 0x18, 0x78, 0x60, 0x0a, 0xfa, 0x57,
81387 - 0xc5, 0x9c, 0x41, 0xeb, 0x5c, 0xf7, 0x83, 0xd6, 0x5f, 0x64, 0xc6, 0xa1,
81388 - 0x8f, 0x1f, 0x82, 0x3e, 0xe6, 0x7d, 0x74, 0x0e, 0x3a, 0x99, 0xfa, 0xd8,
81389 - 0x91, 0x3f, 0xdd, 0xcc, 0x41, 0x76, 0xdd, 0xd7, 0x43, 0x5e, 0x9b, 0x6a,
81390 - 0xf3, 0x54, 0xc1, 0xf0, 0xdc, 0x01, 0x13, 0xfb, 0x28, 0x28, 0xde, 0x2c,
81391 - 0xaf, 0xd3, 0x0e, 0x01, 0x9f, 0xae, 0x53, 0x46, 0xd0, 0xa6, 0xa4, 0xec,
81392 - 0x80, 0xac, 0x59, 0xff, 0x00, 0xca, 0x29, 0x94, 0xda, 0x56, 0xbb, 0x52,
81393 - 0x7d, 0x35, 0xec, 0xdf, 0x23, 0xef, 0xd8, 0x6b, 0x75, 0xec, 0xef, 0x18,
81394 - 0x73, 0x1b, 0x4a, 0xfd, 0xde, 0x47, 0xb0, 0xc7, 0xe3, 0xa0, 0xc1, 0x19,
81395 - 0xd0, 0xe0, 0x14, 0xf6, 0x7a, 0xde, 0x1a, 0x39, 0x1c, 0x80, 0x3e, 0x3f,
81396 - 0x23, 0x85, 0x34, 0x64, 0xee, 0x5a, 0xc9, 0x9a, 0x58, 0x12, 0xf5, 0x9e,
81397 - 0x4f, 0xf3, 0x4e, 0xfd, 0xbd, 0x2a, 0x3e, 0xb8, 0xbc, 0x19, 0x34, 0x71,
81398 - 0xc4, 0x20, 0xea, 0xa8, 0xc3, 0x21, 0xb3, 0x1c, 0xcc, 0x55, 0xfd, 0x59,
81399 - 0xaf, 0xf4, 0x62, 0xbe, 0xea, 0x34, 0xde, 0x19, 0x5b, 0x38, 0x66, 0xdd,
81400 - 0x59, 0xcf, 0xd8, 0x45, 0xc2, 0xc9, 0xc1, 0x17, 0x0d, 0xba, 0x8c, 0x5f,
81401 - 0xb8, 0x38, 0x9f, 0xac, 0xe4, 0x47, 0x60, 0x93, 0x29, 0x99, 0xdc, 0x6b,
81402 - 0x64, 0x32, 0xe4, 0x5d, 0xcd, 0x93, 0xb5, 0x4d, 0xda, 0x4e, 0x9e, 0xf2,
81403 - 0xa7, 0x29, 0xc7, 0x8a, 0x35, 0xd8, 0x3f, 0xe9, 0xdf, 0xb3, 0xb2, 0x6a,
81404 - 0xce, 0xb0, 0xca, 0xd5, 0x28, 0xad, 0x89, 0xe5, 0x1c, 0xbe, 0x09, 0xff,
81405 - 0x35, 0x03, 0x1e, 0xf6, 0x20, 0x37, 0x1d, 0xc8, 0x45, 0xea, 0xb5, 0xaf,
81406 - 0x76, 0x4b, 0x1f, 0xea, 0x2f, 0xc3, 0xe6, 0x79, 0x92, 0x7c, 0x7b, 0x5d,
81407 - 0xec, 0xc6, 0x1b, 0xc5, 0x47, 0x18, 0x1b, 0x19, 0x32, 0x77, 0xb3, 0xff,
81408 - 0x0b, 0xf0, 0xea, 0x35, 0x42, 0xb0, 0xeb, 0xaf, 0xd6, 0xf6, 0xc1, 0x47,
81409 - 0x3c, 0x66, 0xe5, 0xa3, 0xac, 0x2b, 0xc9, 0x7a, 0x86, 0x76, 0x28, 0x63,
81410 - 0x24, 0x61, 0xd4, 0xef, 0xf6, 0x49, 0xa9, 0xff, 0x9f, 0x53, 0x77, 0x34,
81411 - 0x0b, 0x4a, 0xee, 0xfa, 0xf1, 0xe5, 0xe7, 0x24, 0xd9, 0xf4, 0xe3, 0x54,
81412 - 0x5c, 0x7f, 0xcb, 0x2a, 0x36, 0xff, 0x1c, 0xeb, 0x10, 0x06, 0xee, 0x45,
81413 - 0xaf, 0x63, 0x2f, 0x4f, 0x98, 0x75, 0x1c, 0x2b, 0x74, 0x38, 0x86, 0xfd,
81414 - 0xec, 0xef, 0x93, 0xbe, 0x00, 0xe4, 0xd9, 0x28, 0x9e, 0x6f, 0xa1, 0x6e,
81415 - 0xe7, 0xbd, 0x51, 0x15, 0x2b, 0x70, 0x18, 0xde, 0x33, 0xf4, 0x77, 0x03,
81416 - 0x32, 0xc7, 0x86, 0xfe, 0x6c, 0x54, 0x3f, 0x8e, 0x12, 0xe3, 0x9e, 0xbc,
81417 - 0x2e, 0x73, 0xda, 0xdf, 0x86, 0x4d, 0x39, 0xac, 0x74, 0xf0, 0x4c, 0x9a,
81418 - 0xb1, 0x90, 0x33, 0x90, 0x8f, 0xf7, 0xa3, 0x8e, 0x7e, 0x53, 0x49, 0x9c,
81419 - 0xf7, 0x14, 0x8c, 0xbf, 0xaf, 0xcf, 0x25, 0xa0, 0xf4, 0xf5, 0x0a, 0xce,
81420 - 0x83, 0x73, 0x50, 0xdf, 0xfd, 0x5c, 0x3e, 0xd5, 0x11, 0x47, 0xc9, 0xd9,
81421 - 0xed, 0xb8, 0x41, 0x36, 0x0f, 0x1d, 0xbd, 0x56, 0x25, 0x0f, 0x66, 0x70,
81422 - 0xde, 0x59, 0xf9, 0xda, 0xe6, 0x3d, 0xc0, 0x75, 0x54, 0x02, 0x4f, 0xb5,
81423 - 0x40, 0x3f, 0xd4, 0x0d, 0x63, 0x90, 0xc9, 0x8e, 0xb1, 0x25, 0xa2, 0x12,
81424 - 0x7c, 0x6a, 0x48, 0xba, 0x2f, 0xc4, 0xa4, 0xeb, 0x02, 0xf3, 0x4f, 0x52,
81425 - 0x71, 0xd8, 0xc5, 0xb4, 0x87, 0x78, 0x0f, 0xc9, 0xfb, 0xc3, 0xb8, 0xbe,
81426 - 0x8f, 0xe4, 0x5d, 0x24, 0xfa, 0xc1, 0x76, 0xef, 0xba, 0xe4, 0x00, 0x3f,
81427 - 0x7a, 0xce, 0xdd, 0x63, 0xcb, 0x7a, 0x2c, 0xef, 0x31, 0x63, 0x25, 0x49,
81428 - 0x99, 0x7b, 0xcc, 0x14, 0xc6, 0xa6, 0x26, 0x5f, 0x6e, 0x8f, 0xe7, 0x58,
81429 - 0xea, 0xc4, 0x28, 0xf8, 0xfb, 0xad, 0xd2, 0xf8, 0x22, 0xf9, 0xdc, 0xbf,
81430 - 0xeb, 0x1a, 0x32, 0x77, 0x5f, 0xec, 0x13, 0x37, 0xed, 0x49, 0xd3, 0xee,
81431 - 0x2a, 0x3d, 0x19, 0x6c, 0xc7, 0x5b, 0x78, 0x2f, 0x96, 0x38, 0xcf, 0xe4,
81432 - 0x11, 0x7d, 0x47, 0x46, 0x5f, 0x0a, 0xbe, 0xc5, 0x93, 0xb0, 0x31, 0xeb,
81433 - 0x2c, 0x7b, 0xa4, 0x5c, 0x3f, 0x25, 0xb3, 0xea, 0xf9, 0x43, 0xf2, 0xa8,
81434 - 0x43, 0xdc, 0x9d, 0x91, 0xf4, 0x84, 0xb6, 0xc7, 0xc4, 0xd6, 0xb8, 0xed,
81435 - 0x76, 0xcf, 0xc8, 0xd1, 0xb4, 0xd2, 0x21, 0xce, 0x23, 0xc0, 0x71, 0xb1,
81436 - 0xd9, 0x45, 0x7a, 0x07, 0xec, 0x1e, 0x78, 0x2c, 0x2b, 0x17, 0x37, 0xd1,
81437 - 0x17, 0x67, 0xf5, 0x08, 0xdf, 0xeb, 0xc0, 0x27, 0x63, 0x16, 0x4f, 0x11,
81438 - 0x9f, 0xdc, 0x3b, 0x75, 0x28, 0x71, 0x4a, 0x1c, 0x50, 0x2f, 0x33, 0xe6,
81439 - 0x96, 0x98, 0xbc, 0x2d, 0xf4, 0x9b, 0x89, 0x33, 0xce, 0xe3, 0xef, 0x5b,
81440 - 0x8f, 0xb3, 0x37, 0x06, 0x85, 0xe6, 0x98, 0x7d, 0xc1, 0x11, 0xfb, 0x12,
81441 - 0xcb, 0x08, 0x4a, 0xb6, 0x01, 0xa4, 0x8d, 0xa4, 0x69, 0x73, 0x51, 0x07,
81442 - 0x3b, 0xf2, 0x09, 0xf2, 0x96, 0xce, 0xff, 0x4b, 0x8e, 0x4c, 0xca, 0x95,
81443 - 0xb5, 0xbb, 0xf9, 0x2b, 0x70, 0x41, 0xdb, 0x25, 0x77, 0xf2, 0xd7, 0xe4,
81444 - 0x3f, 0x80, 0xbf, 0xb8, 0xc6, 0x19, 0x95, 0xbb, 0xf0, 0xa9, 0x68, 0x22,
81445 - 0x9e, 0xd5, 0xfe, 0x85, 0x93, 0xb2, 0x47, 0xe2, 0xb4, 0x47, 0x1b, 0x4f,
81446 - 0x8e, 0xe3, 0xdc, 0x5b, 0xf2, 0x44, 0xda, 0xa7, 0x2f, 0xe6, 0xf8, 0xb5,
81447 - 0xa4, 0x06, 0xfd, 0x5c, 0x76, 0x2d, 0x59, 0x70, 0xcf, 0x28, 0x7b, 0xf2,
81448 - 0xc3, 0xd1, 0x96, 0x9c, 0x4e, 0xeb, 0xb1, 0x0b, 0x32, 0x62, 0x68, 0x5c,
81449 - 0xf9, 0x6b, 0x90, 0xbf, 0x3c, 0x2f, 0xbe, 0xdf, 0x23, 0xe9, 0x81, 0x33,
81450 - 0x92, 0x9c, 0xd8, 0x22, 0xbe, 0x70, 0x0e, 0x94, 0x3b, 0xbf, 0x36, 0x16,
81451 - 0xa6, 0x72, 0x9e, 0xf2, 0x15, 0xc2, 0xb4, 0x0f, 0x74, 0x9b, 0x85, 0xbf,
81452 - 0xb4, 0x13, 0x0f, 0x4b, 0x8d, 0x94, 0x5a, 0x21, 0xac, 0x5d, 0x84, 0x3f,
81453 - 0xf1, 0xe1, 0xa8, 0x1b, 0x1f, 0xb6, 0x47, 0x62, 0x67, 0xa5, 0xa6, 0x60,
81454 - 0xfd, 0x44, 0x5a, 0xd3, 0xcb, 0x62, 0x66, 0xaf, 0x18, 0x55, 0x67, 0x8c,
81455 - 0x9a, 0x73, 0x6d, 0x59, 0x9f, 0x6c, 0xea, 0x78, 0xd4, 0x4e, 0x9c, 0x7a,
81456 - 0x47, 0xe6, 0x04, 0x8d, 0x2c, 0x28, 0xd7, 0xde, 0x25, 0xbe, 0xcc, 0xa9,
81457 - 0x65, 0x70, 0x56, 0xcb, 0x3c, 0xa3, 0xb8, 0xb9, 0x47, 0x0a, 0x77, 0xd8,
81458 - 0xca, 0x21, 0xe6, 0xfd, 0xc5, 0xb3, 0xf6, 0x32, 0x64, 0xc3, 0x93, 0x12,
81459 - 0x72, 0xfd, 0xb9, 0x98, 0xd3, 0x19, 0x33, 0xf7, 0x11, 0xfb, 0x19, 0xb7,
81460 - 0x42, 0x9f, 0x07, 0xd1, 0x7e, 0x3f, 0xfa, 0x51, 0x57, 0xf2, 0x1e, 0x80,
81461 - 0x7a, 0x93, 0xb1, 0xf6, 0x01, 0xf4, 0xeb, 0x91, 0x7c, 0x7d, 0xbf, 0xa9,
81462 - 0xf3, 0xe7, 0x38, 0xdc, 0xd1, 0xdf, 0xaf, 0xd3, 0xf7, 0x07, 0x59, 0x1b,
81463 - 0x32, 0x7e, 0x99, 0x7d, 0xe3, 0xed, 0x3b, 0x10, 0xbb, 0xf1, 0xa0, 0xa3,
81464 - 0xc7, 0xb3, 0x1f, 0x65, 0x3e, 0x74, 0x4b, 0x15, 0xfa, 0xa6, 0x3a, 0xc5,
81465 - 0xbb, 0x40, 0x63, 0x57, 0xcc, 0x9a, 0x7c, 0x16, 0xda, 0x17, 0xaf, 0x19,
81466 - 0x7d, 0xbb, 0x93, 0x8b, 0x7a, 0x24, 0xe3, 0xe7, 0xf5, 0x30, 0x17, 0x91,
81467 - 0xeb, 0xf2, 0x3c, 0x40, 0x53, 0x9b, 0xda, 0x96, 0xb6, 0x33, 0x5d, 0xbc,
81468 - 0x6b, 0x83, 0x7e, 0xd7, 0xfa, 0xbf, 0x01, 0xfd, 0xbf, 0xb1, 0x02, 0x9d,
81469 - 0xdf, 0x47, 0xdd, 0xaf, 0xf3, 0x4f, 0xec, 0x76, 0xbe, 0x8f, 0x7f, 0x8f,
81470 - 0xbc, 0xa5, 0xee, 0xf1, 0x7a, 0x3c, 0xca, 0xf4, 0x8c, 0xfc, 0x39, 0x6c,
81471 - 0xad, 0x67, 0x36, 0x27, 0xb1, 0x5e, 0x1a, 0x7e, 0xdd, 0x38, 0xfc, 0xba,
81472 - 0x51, 0xf8, 0x75, 0x2e, 0x74, 0xe1, 0x90, 0xca, 0x27, 0xa3, 0xde, 0x9f,
81473 - 0x38, 0x24, 0xd6, 0xd7, 0x32, 0x62, 0x1d, 0xbc, 0x00, 0x1b, 0x61, 0xe9,
81474 - 0x25, 0xd0, 0x7f, 0xe2, 0x79, 0x11, 0xf2, 0x04, 0xf9, 0xef, 0x31, 0xc9,
81475 - 0xc6, 0x86, 0xe4, 0xf3, 0x9b, 0x6c, 0x23, 0x3d, 0x65, 0xe5, 0x15, 0xf7,
81476 - 0x25, 0xc5, 0x67, 0x17, 0x6b, 0xd7, 0x25, 0xf4, 0x84, 0x96, 0xb5, 0x3f,
81477 - 0x80, 0x3d, 0xd5, 0x48, 0x6b, 0xda, 0xbb, 0x2d, 0xa4, 0x3d, 0xe8, 0xa7,
81478 - 0x35, 0xca, 0xd8, 0x9b, 0x12, 0xbd, 0xf0, 0x92, 0xbc, 0xf9, 0x82, 0xab,
81479 - 0xe2, 0x12, 0x6b, 0x4f, 0x2a, 0xdd, 0x07, 0xb9, 0x16, 0x95, 0xf5, 0xcd,
81480 - 0xdf, 0x91, 0x4f, 0x39, 0x89, 0x2b, 0x94, 0x99, 0x94, 0x5d, 0x5a, 0xa7,
81481 - 0x41, 0xc6, 0x56, 0x12, 0xa5, 0x32, 0x6c, 0xef, 0x2b, 0xf6, 0x98, 0x64,
81482 - 0x83, 0xa5, 0x56, 0x3f, 0xfd, 0x82, 0x9a, 0xeb, 0x24, 0x6d, 0x9e, 0xef,
81483 - 0xbd, 0xb0, 0xad, 0x13, 0x75, 0x25, 0xa3, 0xa8, 0x27, 0x33, 0xd4, 0x9b,
81484 - 0xd4, 0x7d, 0xd4, 0x3f, 0x8c, 0x97, 0xe3, 0x79, 0x8d, 0xba, 0xe9, 0xef,
81485 - 0xd4, 0x9d, 0x67, 0x71, 0xc6, 0x91, 0xfa, 0x1a, 0xe5, 0x13, 0xf4, 0xfc,
81486 - 0x93, 0xb4, 0x73, 0x45, 0xd1, 0x3f, 0xed, 0xdc, 0x47, 0xc5, 0xb7, 0x71,
81487 - 0xd9, 0xb6, 0xdb, 0xc6, 0xfd, 0x83, 0x7d, 0xd2, 0x1b, 0x05, 0x7e, 0xc8,
81488 - 0xff, 0x3b, 0x36, 0x60, 0x2e, 0x73, 0x13, 0xb6, 0x26, 0xf7, 0x61, 0xc9,
81489 - 0xa0, 0x7b, 0x1d, 0x74, 0xc4, 0xb5, 0x6f, 0xb6, 0x3e, 0x1c, 0xe5, 0x1e,
81490 - 0x2c, 0x65, 0x23, 0x6c, 0x0f, 0xfe, 0xa6, 0x3b, 0x0a, 0xca, 0x88, 0x7d,
81491 - 0xb0, 0xcd, 0x6d, 0x43, 0xb3, 0x9f, 0x34, 0xbe, 0x04, 0xf8, 0x79, 0x95,
81492 - 0x7b, 0x28, 0xf3, 0x4e, 0x04, 0x36, 0xd7, 0x22, 0x63, 0x52, 0x6a, 0xdd,
81493 - 0xf7, 0x67, 0x22, 0x92, 0xbc, 0xd0, 0x25, 0xa9, 0xa7, 0xec, 0x41, 0x9d,
81494 - 0xb7, 0xf8, 0x30, 0x74, 0xcf, 0x41, 0xb4, 0x1f, 0x90, 0xb2, 0x13, 0x85,
81495 - 0x3f, 0x33, 0x2a, 0xe5, 0xd1, 0x30, 0x78, 0xe6, 0x01, 0xde, 0x75, 0x28,
81496 - 0x38, 0xca, 0xce, 0x30, 0xca, 0x6e, 0x94, 0xf7, 0x48, 0xf9, 0xc9, 0x4b,
81497 - 0xfb, 0xb4, 0x2d, 0xbb, 0xfb, 0xfd, 0x9f, 0x76, 0xab, 0xd8, 0xb9, 0xf5,
81498 - 0x8e, 0x88, 0xb9, 0x47, 0xff, 0x2d, 0x60, 0xf7, 0xfb, 0x12, 0x9e, 0x90,
81499 - 0xb8, 0x4f, 0x44, 0x64, 0x18, 0xb2, 0x77, 0x04, 0x7a, 0xeb, 0xe0, 0x85,
81500 - 0x21, 0x19, 0xbd, 0x10, 0x97, 0xfb, 0x2e, 0xf8, 0xf6, 0xc0, 0xf2, 0x74,
81501 - 0xca, 0xc4, 0x71, 0xdd, 0xdf, 0x32, 0x8e, 0x7b, 0x9f, 0x9a, 0x1f, 0x30,
81502 - 0xae, 0x41, 0x1e, 0x46, 0x3f, 0xa7, 0xec, 0x06, 0x8d, 0xfb, 0x1f, 0xc9,
81503 - 0x91, 0x95, 0x90, 0x1c, 0x55, 0xbc, 0xe8, 0xdb, 0xf0, 0xff, 0x13, 0xfb,
81504 - 0x48, 0x80, 0x47, 0x4e, 0x18, 0xbf, 0xb3, 0x17, 0x78, 0x25, 0x0e, 0xa1,
81505 - 0xeb, 0xe0, 0x8b, 0x32, 0x3f, 0xb5, 0x98, 0xee, 0x1c, 0xcf, 0xb1, 0x3f,
81506 - 0xc5, 0x98, 0x2c, 0x6c, 0x0b, 0xb6, 0xcb, 0x60, 0x40, 0xf6, 0x6a, 0x7f,
81507 - 0x1f, 0xda, 0x29, 0x73, 0x8e, 0x42, 0xe6, 0xec, 0x6e, 0xcf, 0xa1, 0x8d,
81508 - 0xeb, 0xdf, 0x83, 0x75, 0xc9, 0x8f, 0x5c, 0xd7, 0xc7, 0x09, 0xcf, 0x75,
81509 - 0x10, 0xfe, 0x07, 0xcf, 0xb5, 0x4b, 0x0a, 0x0e, 0x73, 0x37, 0x59, 0xf7,
81510 - 0x16, 0x73, 0xd6, 0x13, 0xe6, 0xac, 0x05, 0xb6, 0x31, 0xed, 0x2d, 0x9d,
81511 - 0xaf, 0x50, 0x88, 0x26, 0x4a, 0x22, 0x71, 0x15, 0xbf, 0x5b, 0xaf, 0xf8,
81512 - 0xf6, 0x49, 0xb6, 0x9f, 0xf7, 0x10, 0x8b, 0x69, 0x15, 0x5b, 0x8b, 0x07,
81513 - 0x3c, 0xda, 0x37, 0xe9, 0x30, 0xf3, 0x92, 0x1b, 0x2b, 0xbc, 0x93, 0x0c,
81514 - 0xe0, 0x07, 0x3c, 0x07, 0x2d, 0x71, 0x5c, 0xd6, 0x95, 0xb4, 0x6e, 0x9b,
81515 - 0x01, 0xff, 0xda, 0xaa, 0x4f, 0x3c, 0x97, 0x1e, 0x34, 0xef, 0x31, 0x59,
81516 - 0xab, 0xbc, 0x63, 0xc8, 0xf6, 0xfe, 0xf6, 0x9e, 0x5c, 0xa6, 0x9f, 0xf7,
81517 - 0x49, 0xa8, 0x23, 0x9f, 0xbc, 0xa4, 0x72, 0x15, 0xb5, 0xef, 0x10, 0xe4,
81518 - 0x3d, 0x24, 0xf6, 0xf9, 0x53, 0xd0, 0xf5, 0xee, 0x3d, 0x77, 0x99, 0x3d,
81519 - 0x73, 0xbf, 0xc4, 0x37, 0xc7, 0xfb, 0x7a, 0x8e, 0x38, 0x0f, 0x77, 0xf8,
81520 - 0x1b, 0x91, 0x81, 0x9d, 0xfb, 0x73, 0xca, 0x42, 0xca, 0xbf, 0x49, 0x95,
81521 - 0xef, 0x72, 0xcb, 0x86, 0x1c, 0xaa, 0x42, 0x2e, 0x55, 0x21, 0x8b, 0xaa,
81522 - 0x90, 0x45, 0xb0, 0x41, 0x9e, 0x85, 0x5c, 0x7d, 0x06, 0xbe, 0xda, 0xd7,
81523 - 0xab, 0xbe, 0xfd, 0x9e, 0x85, 0x1c, 0x53, 0x36, 0x1d, 0xed, 0x9f, 0x9a,
81524 - 0xed, 0x75, 0xff, 0xd6, 0xf9, 0x50, 0x01, 0xcf, 0x1f, 0xd7, 0x2d, 0x45,
81525 - 0x35, 0x26, 0x2e, 0xf3, 0xcd, 0xbd, 0xfa, 0x72, 0x7f, 0xa1, 0x8e, 0xfd,
81526 - 0x9a, 0xbb, 0x7e, 0x15, 0x8b, 0xa0, 0x0c, 0xfe, 0x4d, 0x3c, 0xd0, 0x99,
81527 - 0xa7, 0xc9, 0x33, 0x56, 0x39, 0x42, 0x38, 0x53, 0xe2, 0x9d, 0x76, 0x61,
81528 - 0x59, 0x16, 0x26, 0x17, 0xa5, 0x3c, 0x69, 0xc9, 0xdc, 0x38, 0xce, 0x68,
81529 - 0x7c, 0x18, 0x3a, 0x32, 0x0d, 0x5d, 0xbb, 0x80, 0x79, 0xc8, 0x7f, 0x0f,
81530 - 0xe2, 0x5c, 0x1c, 0x73, 0x27, 0xfe, 0xa5, 0xe9, 0x5c, 0x4d, 0xac, 0x6b,
81531 - 0x2a, 0x47, 0x7c, 0x79, 0xfa, 0xd5, 0x95, 0x87, 0x61, 0x3f, 0x4d, 0xc8,
81532 - 0xd5, 0xc9, 0x87, 0x65, 0xfb, 0x8e, 0xf1, 0x38, 0x07, 0xc8, 0xe1, 0xcf,
81533 - 0x6f, 0xf2, 0x1e, 0xb4, 0x4b, 0x66, 0xa3, 0x8c, 0x81, 0xc1, 0xc6, 0x71,
81534 - 0xfb, 0x65, 0x5b, 0xf9, 0xa1, 0x07, 0xe4, 0xb6, 0xa2, 0x2d, 0xd6, 0x85,
81535 - 0x50, 0xa7, 0xed, 0xd1, 0xb5, 0x8a, 0x6f, 0x5b, 0x28, 0x1c, 0x99, 0x98,
81536 - 0x1f, 0xf5, 0x0d, 0xe3, 0x49, 0x8c, 0x2f, 0xad, 0x45, 0x76, 0x64, 0x01,
81537 - 0x4b, 0xff, 0x5c, 0x3b, 0xfd, 0xe3, 0xbf, 0x8e, 0xe8, 0x6f, 0x0b, 0xba,
81538 - 0xa4, 0x1c, 0x2d, 0xb5, 0xca, 0x6e, 0xd0, 0xba, 0xda, 0xce, 0x69, 0xf5,
81539 - 0xdb, 0x48, 0xcb, 0x36, 0x60, 0x25, 0x1d, 0x24, 0x55, 0xee, 0xce, 0x77,
81540 - 0xaa, 0x03, 0xfb, 0xf4, 0x37, 0x0a, 0x01, 0x8c, 0xe3, 0xfb, 0x89, 0x88,
81541 - 0x7e, 0xf7, 0xef, 0xdd, 0xdf, 0x86, 0xbe, 0x31, 0x25, 0xaf, 0xd6, 0x6a,
81542 - 0x01, 0xf0, 0xf0, 0x20, 0x9e, 0x5f, 0x44, 0x9f, 0x30, 0xce, 0x86, 0xb1,
81543 - 0xa4, 0xb7, 0xa8, 0xfc, 0x9b, 0x80, 0xeb, 0xe7, 0xf5, 0x52, 0x77, 0xff,
81544 - 0x67, 0xd5, 0xfe, 0xf4, 0x4a, 0x37, 0xf3, 0x55, 0x51, 0x52, 0xaf, 0xff,
81545 - 0x0a, 0xbe, 0x56, 0x48, 0xf2, 0x35, 0x17, 0xb6, 0x78, 0x88, 0xf4, 0x8b,
81546 - 0xfa, 0x7b, 0xa1, 0xa3, 0x04, 0xfc, 0xd4, 0x05, 0xbd, 0xa9, 0x70, 0x0d,
81547 - 0x4a, 0xa2, 0x4f, 0xef, 0xe7, 0x99, 0x6a, 0x38, 0x42, 0xde, 0xf7, 0x98,
81548 - 0x6f, 0x10, 0x0e, 0x78, 0x2f, 0x4d, 0xcf, 0x55, 0x68, 0x2b, 0xb5, 0x5a,
81549 - 0xd0, 0x65, 0xd8, 0xc9, 0xcf, 0x94, 0x5f, 0xb1, 0x2d, 0xda, 0x57, 0x5b,
81550 - 0x50, 0xf9, 0x96, 0x37, 0xa7, 0x35, 0x8d, 0x74, 0xde, 0x9f, 0xbc, 0xd1,
81551 - 0xdd, 0x49, 0x58, 0xb6, 0xd3, 0x3d, 0x86, 0x2f, 0xc2, 0xc1, 0x62, 0x25,
81552 - 0x12, 0x9c, 0x53, 0xf7, 0x5b, 0x5b, 0x26, 0x1f, 0xf3, 0xda, 0x74, 0xaa,
81553 - 0x19, 0x56, 0xb9, 0x00, 0xbc, 0x4b, 0xc8, 0x57, 0x78, 0x97, 0xa2, 0xdb,
81554 - 0x53, 0xa6, 0x3d, 0xd9, 0x54, 0x6d, 0x2a, 0xde, 0xc5, 0x18, 0x57, 0x37,
81555 - 0xca, 0xdb, 0x15, 0xca, 0x07, 0xcc, 0xaf, 0x65, 0x09, 0x60, 0x7f, 0x71,
81556 - 0x7a, 0x6e, 0x85, 0xf0, 0x7d, 0x7f, 0x3a, 0xb7, 0xc2, 0x1c, 0xc8, 0xff,
81557 - 0x34, 0x7d, 0x63, 0xc5, 0x92, 0x0d, 0x37, 0xa1, 0xe2, 0x57, 0xeb, 0x8c,
81558 - 0xb1, 0x72, 0x9c, 0x9a, 0xf3, 0x45, 0x23, 0x93, 0xbf, 0x37, 0x3d, 0xbc,
81559 - 0x1e, 0x90, 0x73, 0x66, 0x0e, 0xbe, 0xc7, 0xd7, 0xef, 0xa0, 0x6b, 0xd0,
81560 - 0xca, 0x15, 0xd0, 0x4a, 0x2f, 0x6c, 0x09, 0xd2, 0x37, 0x7d, 0xb2, 0x5e,
81561 - 0xc8, 0x01, 0xae, 0xf3, 0x8c, 0x5a, 0x27, 0x80, 0x75, 0xe6, 0x54, 0xce,
81562 - 0x78, 0x80, 0x79, 0xb7, 0xb0, 0x35, 0x61, 0x13, 0xba, 0x8c, 0x59, 0xdb,
81563 - 0xd8, 0xf3, 0x28, 0xf4, 0x12, 0xf3, 0x3f, 0xfe, 0x7b, 0x64, 0x27, 0x6f,
81564 - 0xfc, 0x39, 0x33, 0xee, 0x9b, 0x18, 0xc7, 0x33, 0x51, 0xf9, 0xe6, 0x6f,
81565 - 0xb6, 0x65, 0x58, 0xd9, 0x90, 0x3a, 0x07, 0x89, 0x30, 0xd4, 0xb1, 0x57,
81566 - 0xea, 0xe2, 0x2e, 0xc9, 0xab, 0x7d, 0x7d, 0x53, 0x8d, 0xb3, 0xbc, 0x6f,
81567 - 0x00, 0x76, 0xda, 0x25, 0x98, 0xbb, 0xaa, 0xe3, 0x6d, 0x79, 0xc5, 0xd3,
81568 - 0xe0, 0x91, 0x49, 0x3f, 0x57, 0x4f, 0x8f, 0xf3, 0xfb, 0x27, 0xd7, 0x8f,
81569 - 0x98, 0x9c, 0x8e, 0xbf, 0x6f, 0x65, 0x8f, 0xf7, 0x2a, 0x1b, 0x6c, 0xe7,
81570 - 0x9b, 0x08, 0x7f, 0x8c, 0xdf, 0xc7, 0xcf, 0x31, 0x7e, 0x74, 0xff, 0x0e,
81571 - 0xcc, 0x5b, 0xe6, 0xcc, 0x39, 0x8e, 0xb1, 0x49, 0x95, 0xaf, 0xcb, 0xba,
81572 - 0xe0, 0x7c, 0x86, 0x73, 0x74, 0xde, 0xf7, 0x8c, 0x83, 0x47, 0xb5, 0xcd,
81573 - 0x57, 0x82, 0x9d, 0x55, 0x06, 0xbf, 0x04, 0x3c, 0xca, 0xf1, 0x61, 0x13,
81574 - 0x57, 0x7b, 0xa3, 0x38, 0x1f, 0xef, 0x12, 0xc7, 0x21, 0x7b, 0xfc, 0xf1,
81575 - 0x3c, 0xc7, 0x6b, 0xd3, 0x37, 0x2a, 0xae, 0x9c, 0xad, 0xea, 0x7c, 0x47,
81576 - 0x8d, 0x07, 0xc6, 0x6e, 0x78, 0xb6, 0x71, 0x99, 0x73, 0xa9, 0x67, 0xe3,
81577 - 0xf2, 0x5d, 0xd7, 0x8f, 0xad, 0xf1, 0x7e, 0x0a, 0xfd, 0x61, 0xeb, 0x2d,
81578 - 0x6c, 0x72, 0xff, 0xdf, 0xc4, 0xfe, 0xe9, 0x53, 0x68, 0x5a, 0x3a, 0x08,
81579 - 0xb9, 0xf5, 0x1f, 0x82, 0xf0, 0x19, 0xa0, 0xbb, 0x6f, 0x05, 0x3b, 0xf7,
81580 - 0xe7, 0xeb, 0x6b, 0x4d, 0x97, 0x41, 0xd0, 0xc8, 0x62, 0x1b, 0xef, 0x96,
81581 - 0x04, 0xde, 0x39, 0x02, 0x1d, 0x64, 0x49, 0x61, 0xdc, 0x8d, 0x2d, 0xf0,
81582 - 0x6e, 0xc1, 0x19, 0x73, 0x1c, 0x95, 0xc7, 0x16, 0x07, 0xbc, 0x7c, 0xe6,
81583 - 0xb7, 0x02, 0xcc, 0x39, 0x8b, 0xab, 0x5c, 0xdd, 0x6c, 0xd4, 0x05, 0xbc,
81584 - 0x8e, 0xb2, 0x4f, 0xb4, 0x5e, 0xfe, 0x97, 0xfb, 0x29, 0x6b, 0xfa, 0x5d,
81585 - 0xff, 0xec, 0x39, 0xf7, 0x8b, 0x98, 0x3b, 0x60, 0xda, 0x7d, 0x1a, 0x09,
81586 - 0x30, 0xe5, 0x4d, 0x76, 0xbe, 0x01, 0xf1, 0xe3, 0x7c, 0xec, 0xff, 0x2d,
81587 - 0x05, 0xcb, 0x1c, 0xf4, 0xd0, 0xbc, 0xda, 0xcf, 0x0b, 0xa0, 0x05, 0xca,
81588 - 0x15, 0x9f, 0x7e, 0x5f, 0x00, 0xfd, 0xee, 0x63, 0x0a, 0xdf, 0x1e, 0xb4,
81589 - 0xe6, 0xd3, 0x18, 0xe9, 0x8b, 0xb4, 0xf5, 0x8a, 0xe2, 0xb9, 0x52, 0xfb,
81590 - 0xdc, 0x29, 0xb3, 0x12, 0x4e, 0xdc, 0xf6, 0xcf, 0x9d, 0xcf, 0x7b, 0xe5,
81591 - 0xb8, 0xfa, 0xfc, 0x91, 0xf9, 0x07, 0x9c, 0x6d, 0xda, 0x9c, 0x6d, 0xa6,
81592 - 0xe3, 0x9b, 0x04, 0x7f, 0x3e, 0xfa, 0xfb, 0xd4, 0xaf, 0xbc, 0x0b, 0xe2,
81593 - 0xf7, 0x12, 0xca, 0x44, 0x90, 0x72, 0x9a, 0x7c, 0x94, 0x8b, 0xf3, 0x3e,
81594 - 0xe5, 0xa4, 0x04, 0xfa, 0x60, 0xb7, 0x8c, 0x86, 0xc4, 0xff, 0x2e, 0xa9,
81595 - 0x4b, 0xb6, 0x9c, 0x56, 0xeb, 0x06, 0xef, 0x8d, 0x2b, 0x41, 0xd9, 0x50,
81596 - 0x77, 0x9f, 0xe0, 0xd1, 0xde, 0xa0, 0x2c, 0xba, 0x6d, 0x3d, 0x27, 0x75,
81597 - 0xf4, 0x59, 0x43, 0xdb, 0xb9, 0x36, 0x6c, 0xd4, 0x07, 0xb0, 0x21, 0xdd,
81598 - 0xbf, 0x6f, 0x15, 0xa3, 0x77, 0xf4, 0x35, 0x32, 0x96, 0xb1, 0x47, 0xc6,
81599 - 0xa7, 0x1d, 0xc9, 0xaf, 0x0f, 0xe0, 0x07, 0x19, 0xaf, 0xe4, 0x02, 0x63,
81600 - 0x91, 0x8c, 0xe7, 0x96, 0xe0, 0x9f, 0x6a, 0x3f, 0x9f, 0xf6, 0xf6, 0x95,
81601 - 0xcd, 0x44, 0xa9, 0x24, 0x6e, 0xfc, 0x91, 0xf6, 0x77, 0x3c, 0x7d, 0xa5,
81602 - 0xb0, 0xd7, 0x19, 0xf3, 0x8d, 0xab, 0xfc, 0xd9, 0x1e, 0x2f, 0x11, 0x3b,
81603 - 0x05, 0xdf, 0xf5, 0xeb, 0x69, 0xc6, 0x7a, 0xef, 0x23, 0xbe, 0xbf, 0xc4,
81604 - 0x4d, 0xda, 0x23, 0xe3, 0xe2, 0x5e, 0x72, 0x47, 0x1f, 0x11, 0xfa, 0xa7,
81605 - 0x89, 0xf8, 0x14, 0xf1, 0xd6, 0xfe, 0xbe, 0x20, 0x68, 0xec, 0xa5, 0x71,
81606 - 0x19, 0xbe, 0xf4, 0x23, 0x15, 0x63, 0xff, 0x70, 0x7a, 0x37, 0x6d, 0xa8,
81607 - 0x58, 0xf1, 0x78, 0xbf, 0x0c, 0x8f, 0xae, 0x89, 0x40, 0x5b, 0xf0, 0x7b,
81608 - 0x03, 0x0b, 0x3e, 0xaa, 0x7a, 0x87, 0xbd, 0x1e, 0x57, 0xdf, 0x5c, 0x65,
81609 - 0x55, 0xde, 0x23, 0x63, 0xc9, 0x3c, 0xd3, 0x88, 0xca, 0x85, 0x7b, 0x16,
81610 - 0x67, 0x5b, 0x68, 0xf2, 0x7c, 0x19, 0x57, 0x66, 0xdc, 0x98, 0xb1, 0x65,
81611 - 0xc6, 0x88, 0xf5, 0xf7, 0x53, 0x47, 0x9a, 0x7b, 0xc5, 0x91, 0x89, 0x8b,
81612 - 0x51, 0xf3, 0x4d, 0x9a, 0x58, 0xdb, 0xd0, 0xbb, 0xf9, 0x9a, 0xa3, 0xee,
81613 - 0xfd, 0x8a, 0x4e, 0xbf, 0x9c, 0x1c, 0xed, 0x06, 0xce, 0x07, 0x54, 0x3e,
81614 - 0xa4, 0xed, 0xbe, 0x07, 0x7e, 0x25, 0xfd, 0x38, 0xea, 0x5b, 0x1f, 0xcf,
81615 - 0x87, 0x50, 0xf7, 0x0b, 0xe0, 0x9e, 0x75, 0xf0, 0x39, 0x95, 0xee, 0xfd,
81616 - 0xb4, 0x6c, 0x57, 0x98, 0x9f, 0x5d, 0x3f, 0x90, 0x53, 0xe7, 0xc1, 0x98,
81617 - 0x8d, 0x2f, 0x9b, 0xfc, 0x5c, 0x35, 0xfa, 0xcc, 0x8e, 0xb9, 0xab, 0x66,
81618 - 0xcc, 0x66, 0x40, 0x8a, 0xeb, 0x94, 0x3f, 0x96, 0x5a, 0xeb, 0x56, 0xe0,
81619 - 0xad, 0x52, 0xaa, 0xef, 0x75, 0xef, 0xde, 0x6a, 0x3d, 0x93, 0x56, 0xbe,
81620 - 0xec, 0xf9, 0x92, 0x39, 0x63, 0xfd, 0x1d, 0x64, 0x70, 0x27, 0x7f, 0x38,
81621 - 0xaa, 0xe3, 0x09, 0xd9, 0x81, 0x5e, 0xfa, 0x0f, 0x7d, 0x1a, 0xbf, 0xf4,
81622 - 0x7b, 0x7f, 0x65, 0x6c, 0x51, 0xfa, 0xbc, 0x03, 0x4a, 0x4f, 0xdb, 0x0d,
81623 - 0x9f, 0x4e, 0x98, 0x73, 0x43, 0x7f, 0xf8, 0xa0, 0x64, 0xeb, 0x90, 0x9b,
81624 - 0x83, 0x7c, 0x3f, 0x6b, 0xc6, 0xf2, 0xb9, 0x25, 0x47, 0x27, 0x76, 0xdf,
81625 - 0xa7, 0x4f, 0x6a, 0x3f, 0xbb, 0xd7, 0xbf, 0x53, 0xf7, 0x73, 0x4d, 0x7d,
81626 - 0x78, 0x15, 0x9c, 0xa0, 0x27, 0x1f, 0x06, 0xbd, 0xd6, 0x11, 0xc0, 0xcb,
81627 - 0x18, 0xe4, 0x80, 0xcb, 0x5c, 0x9d, 0x80, 0x4c, 0x0c, 0x24, 0x98, 0xc3,
81628 - 0xa7, 0xe0, 0x69, 0xd4, 0x43, 0x68, 0xf3, 0xe1, 0xd4, 0xfe, 0x79, 0xa3,
81629 - 0xce, 0xf6, 0x38, 0xd6, 0xea, 0x96, 0x89, 0x41, 0xe2, 0x79, 0x37, 0x1c,
81630 - 0x03, 0x81, 0xbd, 0x73, 0xd4, 0x1e, 0xec, 0x80, 0xef, 0xee, 0xef, 0x47,
81631 - 0x73, 0xf0, 0xc3, 0x72, 0x2b, 0x8c, 0x15, 0x10, 0xc6, 0x01, 0xc8, 0x39,
81632 - 0xec, 0x31, 0xed, 0xe7, 0x0e, 0xfb, 0x78, 0xf1, 0x63, 0x0c, 0x21, 0x45,
81633 - 0x17, 0x73, 0x19, 0xee, 0x25, 0x64, 0x62, 0x0e, 0x84, 0x2b, 0x61, 0xf2,
81634 - 0x0f, 0x09, 0x9f, 0x7d, 0x40, 0x9f, 0xff, 0xfd, 0x66, 0xbf, 0x7e, 0xce,
81635 - 0x22, 0xe7, 0xba, 0x17, 0xe3, 0xbf, 0xd2, 0xc2, 0x5a, 0x34, 0xe8, 0xc0,
81636 - 0xff, 0xbe, 0xaf, 0x7f, 0xaf, 0x9e, 0xab, 0xd7, 0xff, 0xa6, 0x2f, 0x66,
81637 - 0xbe, 0xe3, 0x23, 0x9c, 0xe4, 0x2f, 0x1f, 0x87, 0x9c, 0x63, 0xc0, 0xdc,
81638 - 0x23, 0x10, 0x86, 0x9e, 0x5d, 0x30, 0x24, 0xd2, 0x77, 0xca, 0xb8, 0x43,
81639 - 0x1d, 0x7b, 0x27, 0xad, 0xf5, 0xc9, 0x42, 0xad, 0x57, 0xca, 0x35, 0xe6,
81640 - 0x53, 0xf3, 0xfb, 0x32, 0xda, 0x59, 0xe4, 0x4b, 0x95, 0x37, 0x69, 0xf2,
81641 - 0x15, 0x7d, 0xfe, 0xec, 0x43, 0x3f, 0xea, 0x10, 0x94, 0x75, 0x2d, 0x9f,
81642 - 0xea, 0x72, 0x77, 0xce, 0xe2, 0x7c, 0x3b, 0x67, 0x51, 0xe7, 0x25, 0x15,
81643 - 0xdb, 0x79, 0x22, 0xcc, 0x89, 0xeb, 0xcc, 0x41, 0x2a, 0xc9, 0xa3, 0x87,
81644 - 0x7b, 0x24, 0xb9, 0xdc, 0x6b, 0x68, 0xf4, 0x3d, 0x66, 0x1d, 0xac, 0xb7,
81645 - 0x34, 0x29, 0xc9, 0xa5, 0x3f, 0x86, 0x6f, 0xaf, 0xf2, 0x22, 0x3b, 0xf2,
81646 - 0xdb, 0x87, 0xcd, 0xb7, 0x48, 0x59, 0x8b, 0xf9, 0x28, 0xf9, 0x25, 0x9c,
81647 - 0xd7, 0xe1, 0xc4, 0x68, 0xdc, 0xe6, 0xb7, 0xb8, 0x27, 0x24, 0xb9, 0x3a,
81648 - 0xa9, 0xbf, 0x89, 0x4b, 0xf3, 0x46, 0x3e, 0xa1, 0xec, 0xe9, 0xd4, 0x65,
81649 - 0x3d, 0x9f, 0xbb, 0xc4, 0xf6, 0x14, 0x6c, 0x47, 0xb6, 0xe7, 0x63, 0x01,
81650 - 0x75, 0x6b, 0x7f, 0x3f, 0xe8, 0xa9, 0xcb, 0xd8, 0x03, 0xcc, 0xe9, 0xe4,
81651 - 0x78, 0xda, 0x1e, 0xa7, 0x71, 0x66, 0xf9, 0xb8, 0x2d, 0x1c, 0xa3, 0xe6,
81652 - 0xc3, 0xb3, 0x7f, 0x47, 0x44, 0x5c, 0x8f, 0xcb, 0x7a, 0xd3, 0x05, 0x4f,
81653 - 0xe8, 0x9c, 0xf8, 0x62, 0xdd, 0xcf, 0xe5, 0x7c, 0xb4, 0x9d, 0xcb, 0x49,
81654 - 0x18, 0x0b, 0x95, 0xdd, 0xb4, 0x77, 0xc8, 0xe4, 0x54, 0xf6, 0xa8, 0xfb,
81655 - 0xd9, 0x0e, 0xf9, 0x67, 0xfa, 0x3f, 0x73, 0x80, 0x77, 0xf7, 0x22, 0x6c,
81656 - 0x1f, 0x34, 0xed, 0xb0, 0x8f, 0xa2, 0x51, 0xc5, 0x07, 0xc9, 0x86, 0xdf,
81657 - 0xef, 0xfa, 0x01, 0x9d, 0x0b, 0x4a, 0x3c, 0x79, 0x06, 0xe6, 0x09, 0xf8,
81658 - 0xb1, 0xac, 0x3b, 0x88, 0xb1, 0x3c, 0x27, 0x94, 0x8d, 0x83, 0x2a, 0xd7,
81659 - 0x30, 0xe0, 0x4d, 0x99, 0x7b, 0xc1, 0x41, 0xb5, 0x96, 0xe3, 0x71, 0x7e,
81660 - 0x5f, 0x36, 0xf4, 0x74, 0xac, 0xbf, 0x1b, 0x5e, 0xc6, 0xe0, 0xfc, 0xdc,
81661 - 0x51, 0xb6, 0xf3, 0x7d, 0x77, 0x1f, 0x3f, 0x4f, 0x34, 0x6b, 0x05, 0xdb,
81662 - 0x39, 0xf6, 0xc4, 0x25, 0xef, 0x96, 0x51, 0x5e, 0xf6, 0x00, 0x23, 0x9f,
81663 - 0x51, 0x9a, 0x6f, 0x07, 0x82, 0x4b, 0xfc, 0xed, 0x9e, 0x27, 0x88, 0xb9,
81664 - 0x7d, 0x9e, 0xdd, 0x3b, 0xa7, 0xb4, 0xcb, 0x3b, 0x6f, 0x6d, 0x57, 0x98,
81665 - 0x27, 0x51, 0x92, 0x93, 0x99, 0x3e, 0x99, 0xab, 0xd9, 0xfc, 0xc6, 0x93,
81666 - 0x31, 0x7a, 0xde, 0x83, 0xcb, 0xbc, 0x92, 0x71, 0x23, 0xc6, 0xe7, 0xee,
81667 - 0x81, 0x6f, 0x4e, 0x7a, 0x1e, 0x91, 0xf5, 0xfa, 0x4c, 0x47, 0xfe, 0x6d,
81668 - 0x97, 0xa1, 0xb3, 0x7f, 0x1d, 0x92, 0xde, 0x12, 0x7c, 0x32, 0x9f, 0xa7,
81669 - 0x47, 0xa4, 0x50, 0xef, 0xbc, 0x3b, 0x63, 0xae, 0x4f, 0xe7, 0x37, 0xb4,
81670 - 0x4a, 0x0f, 0xd6, 0x4a, 0xb4, 0xab, 0xa2, 0x8c, 0x4b, 0xb0, 0xdf, 0x7e,
81671 - 0xa3, 0x6f, 0xe1, 0x08, 0xf5, 0xbe, 0xc5, 0x12, 0x97, 0xb0, 0x41, 0x47,
81672 - 0xa8, 0x75, 0x52, 0x72, 0x34, 0x5a, 0x82, 0x8f, 0x3a, 0x62, 0xd6, 0x7d,
81673 - 0x3b, 0xde, 0xd9, 0xf7, 0x80, 0x69, 0xbf, 0xd7, 0xbc, 0xf7, 0x9a, 0xf7,
81674 - 0x00, 0xde, 0xeb, 0xad, 0x5a, 0x95, 0x73, 0xb2, 0xe4, 0xf7, 0x22, 0xbc,
81675 - 0xdb, 0xf2, 0x24, 0x74, 0x59, 0xa0, 0xa7, 0x7a, 0xe5, 0xf1, 0xba, 0xc2,
81676 - 0xaf, 0xe5, 0x2e, 0xd1, 0x20, 0xd8, 0x6f, 0x9e, 0xef, 0xe6, 0xc1, 0x4f,
81677 - 0xde, 0x91, 0x37, 0x3c, 0xec, 0x98, 0xdc, 0xec, 0x0e, 0x78, 0xb3, 0x80,
81678 - 0xf5, 0xd7, 0xe5, 0x41, 0x51, 0x47, 0x69, 0x5f, 0xb9, 0x50, 0xd1, 0xf9,
81679 - 0x3e, 0x27, 0x2b, 0x80, 0xb5, 0xf6, 0x3f, 0x0e, 0xe8, 0xdc, 0x14, 0x3f,
81680 - 0x9f, 0x91, 0xf9, 0xee, 0x23, 0x26, 0x27, 0x82, 0x63, 0x99, 0x57, 0xe9,
81681 - 0xdf, 0x39, 0x76, 0xda, 0xaa, 0xd4, 0x45, 0xd4, 0x33, 0xfc, 0x6e, 0x25,
81682 - 0x8d, 0xbe, 0x8b, 0x94, 0x35, 0xd0, 0x53, 0xbe, 0x2d, 0xf1, 0x39, 0xe5,
81683 - 0x1f, 0x76, 0x7e, 0xf7, 0x73, 0x0e, 0xb0, 0xfe, 0x65, 0x93, 0x71, 0xe1,
81684 - 0x1e, 0x09, 0x2c, 0xfb, 0x79, 0x50, 0x3c, 0x63, 0xda, 0x61, 0xfc, 0xb6,
81685 - 0xfa, 0x77, 0x77, 0xc5, 0x8c, 0x7d, 0x5b, 0x81, 0x74, 0x3e, 0xe7, 0x30,
81686 - 0xc7, 0xd4, 0xf1, 0xfc, 0x38, 0x33, 0x73, 0x6b, 0x68, 0x73, 0x1d, 0x14,
81687 - 0x5b, 0xc5, 0x8d, 0xd8, 0x56, 0x92, 0xfe, 0xc3, 0xbf, 0x4b, 0xde, 0xf8,
81688 - 0x47, 0xfc, 0x16, 0x46, 0xe7, 0x79, 0xab, 0x75, 0xa2, 0xda, 0x86, 0xe4,
81689 - 0x37, 0xda, 0x69, 0xf0, 0xd5, 0xbe, 0x2d, 0x9d, 0xf3, 0x1d, 0xc1, 0x7b,
81690 - 0x06, 0x74, 0x0c, 0x99, 0x2a, 0xfc, 0x1e, 0x9b, 0x7c, 0xc7, 0xef, 0xb1,
81691 - 0x3d, 0x95, 0x6f, 0xb2, 0x6d, 0xbe, 0x2f, 0xba, 0xde, 0x0c, 0x8a, 0xbd,
81692 - 0x34, 0xce, 0x6f, 0xd5, 0xf8, 0x6d, 0x23, 0x6c, 0xb5, 0x38, 0xda, 0x99,
81693 - 0xc7, 0x36, 0xa4, 0xf2, 0x54, 0xca, 0xcd, 0x8f, 0xa0, 0xfc, 0x34, 0xfc,
81694 - 0x75, 0x1d, 0x9f, 0x2f, 0x37, 0x99, 0xaf, 0xe2, 0xa8, 0x7b, 0xcf, 0xe4,
81695 - 0x52, 0x01, 0xeb, 0xf9, 0xdf, 0x3e, 0x47, 0x51, 0x47, 0xf8, 0x4a, 0x86,
81696 - 0x47, 0xfd, 0x5c, 0x84, 0x0d, 0x87, 0x3a, 0xa1, 0xd4, 0x8c, 0xa8, 0x1c,
81697 - 0x17, 0x6d, 0x8f, 0xd0, 0xd6, 0x0b, 0xa3, 0x2f, 0xf7, 0xda, 0x4b, 0x7d,
81698 - 0xd5, 0xa2, 0x4c, 0x4a, 0x61, 0x9d, 0x86, 0xca, 0x0f, 0x24, 0x9e, 0x5d,
81699 - 0xa7, 0x48, 0x7f, 0x4d, 0xc9, 0xf8, 0xc4, 0xe8, 0xac, 0xe4, 0x9d, 0x10,
81700 - 0x7c, 0xb1, 0xb2, 0xf2, 0x73, 0x5e, 0x80, 0x0d, 0x1d, 0xd9, 0x0a, 0x78,
81701 - 0xdc, 0x1b, 0xd7, 0xa6, 0x1f, 0xa2, 0xf7, 0xa3, 0xef, 0x8e, 0xc4, 0x2a,
81702 - 0xab, 0xef, 0xf5, 0x58, 0xcf, 0x7b, 0x01, 0xff, 0x7b, 0x6c, 0xe6, 0xef,
81703 - 0xc3, 0x4f, 0x68, 0x4e, 0xc9, 0xd9, 0xca, 0x7e, 0xe6, 0xc6, 0xa7, 0xb7,
81704 - 0x81, 0xb7, 0x93, 0xed, 0x7c, 0x7d, 0xe6, 0xb0, 0xf9, 0xba, 0x87, 0x67,
81705 - 0xc5, 0x5c, 0x79, 0xd2, 0x19, 0xf3, 0xe5, 0x69, 0x87, 0x0d, 0xc9, 0xe3,
81706 - 0x4d, 0x3f, 0x47, 0x7e, 0x2f, 0x3b, 0x9c, 0x34, 0xf8, 0x59, 0xf8, 0x86,
81707 - 0x7e, 0x2e, 0x24, 0x73, 0x36, 0x5b, 0xad, 0x93, 0x69, 0xde, 0xc7, 0xce,
81708 - 0x1c, 0x5d, 0xc3, 0x1e, 0xaf, 0xd5, 0x81, 0xc3, 0xe3, 0xac, 0x63, 0xee,
81709 - 0x56, 0xb7, 0xe4, 0xc6, 0x55, 0xbc, 0xaf, 0x77, 0xcd, 0xdd, 0x2f, 0x57,
81710 - 0x6b, 0x51, 0x95, 0x87, 0x56, 0x84, 0x9d, 0xdf, 0x90, 0xdb, 0x0e, 0xef,
81711 - 0xa3, 0x8f, 0xa8, 0xf1, 0x3e, 0xbf, 0x73, 0x9d, 0xa8, 0x1c, 0x59, 0xd7,
81712 - 0xf2, 0xe4, 0x54, 0x06, 0x76, 0xcb, 0x25, 0xb1, 0x3e, 0x9a, 0x19, 0x82,
81713 - 0xef, 0xcd, 0xb5, 0x52, 0x18, 0x07, 0xda, 0x89, 0x91, 0xd7, 0x7f, 0xd1,
81714 - 0x6a, 0x00, 0xde, 0xdb, 0x4d, 0xda, 0xeb, 0xb0, 0xa1, 0x66, 0x38, 0xc6,
81715 - 0x13, 0xfb, 0x02, 0xfb, 0x0c, 0x80, 0xfe, 0x42, 0xfa, 0x7b, 0xb4, 0xca,
81716 - 0x01, 0x69, 0x38, 0x6c, 0xe3, 0x73, 0x4c, 0x1a, 0x51, 0xdf, 0x4f, 0xf9,
81717 - 0x21, 0xf0, 0x17, 0x57, 0x32, 0xc9, 0xbf, 0xc3, 0x67, 0x4e, 0xe9, 0x5c,
81718 - 0xed, 0x18, 0x78, 0x28, 0x68, 0x6c, 0xb3, 0x20, 0xe6, 0xf8, 0xbe, 0xa3,
81719 - 0x6d, 0x05, 0xde, 0xf1, 0x6b, 0x5b, 0x44, 0xeb, 0x18, 0xde, 0xfb, 0x05,
81720 - 0xe1, 0x0b, 0xf8, 0x7c, 0x79, 0xc8, 0xd8, 0x14, 0x9d, 0xbe, 0x7c, 0x2a,
81721 - 0x76, 0x91, 0xff, 0x0f, 0x62, 0xf3, 0x83, 0x32, 0x0b, 0x98, 0xcf, 0x9b,
81722 - 0x7d, 0x3e, 0x92, 0x71, 0xe5, 0x56, 0x9d, 0x77, 0xf0, 0x07, 0x51, 0x32,
81723 - 0xdf, 0x90, 0x30, 0x8f, 0x99, 0x9c, 0x4a, 0x0f, 0x7b, 0x3d, 0x21, 0x2f,
81724 - 0xc3, 0xbe, 0x7e, 0xa5, 0x92, 0x4a, 0x1f, 0x51, 0x71, 0xe7, 0x44, 0xec,
81725 - 0xaa, 0x8c, 0xc5, 0xe9, 0x03, 0x96, 0x9c, 0x44, 0xec, 0x16, 0xe8, 0xe1,
81726 - 0x76, 0xe5, 0x50, 0x3f, 0xff, 0x27, 0x45, 0x03, 0xfa, 0xf0, 0xb6, 0xca,
81727 - 0x81, 0x49, 0x30, 0x66, 0x82, 0xf7, 0x21, 0x93, 0x87, 0xc3, 0x75, 0xd8,
81728 - 0x36, 0x24, 0x2f, 0x57, 0xda, 0xfa, 0x97, 0xeb, 0xe8, 0xdc, 0x36, 0xa5,
81729 - 0x5f, 0x8f, 0xf6, 0x53, 0x0e, 0x71, 0x3d, 0x3d, 0x87, 0xdf, 0x87, 0x78,
81730 - 0xf5, 0x63, 0x91, 0x8e, 0xfe, 0xbe, 0xc1, 0x62, 0xde, 0x0b, 0xf7, 0xfe,
81731 - 0x13, 0x47, 0xdb, 0x40, 0x1c, 0x97, 0x72, 0x8e, 0xaa, 0xf9, 0x78, 0xdf,
81732 - 0x3b, 0x24, 0x3f, 0x6e, 0xfa, 0xf3, 0x30, 0x1f, 0x87, 0x39, 0x3f, 0x94,
81733 - 0x7d, 0x9d, 0x30, 0x68, 0xfd, 0xff, 0xb2, 0x8a, 0xeb, 0x4d, 0xa2, 0x3f,
81734 - 0x75, 0x34, 0xe8, 0xa5, 0x1e, 0xd3, 0xff, 0xdf, 0xa1, 0x2d, 0xe3, 0xf8,
81735 - 0x4c, 0x7c, 0x72, 0x1d, 0xd8, 0xf8, 0x0f, 0x38, 0xa6, 0xdd, 0xb7, 0x4b,
81736 - 0x87, 0xc0, 0xaf, 0x27, 0xa4, 0xb1, 0x92, 0x8a, 0x3d, 0x2e, 0xfe, 0xbc,
81737 - 0xad, 0x87, 0x79, 0x2f, 0x56, 0xc8, 0x8c, 0x39, 0x0b, 0x0a, 0x1e, 0xde,
81738 - 0xdd, 0x26, 0x9c, 0xab, 0x58, 0xaf, 0xd1, 0xdc, 0x1d, 0x7b, 0x48, 0x64,
81739 - 0xb7, 0x24, 0x95, 0xd6, 0x67, 0x33, 0x22, 0x5b, 0x38, 0x9b, 0x3f, 0x31,
81740 - 0x67, 0xf3, 0x7e, 0xcc, 0xed, 0x5e, 0x18, 0x97, 0xd4, 0x85, 0x54, 0xfc,
81741 - 0xbc, 0xf0, 0x8e, 0xf9, 0x00, 0xef, 0x98, 0xad, 0x47, 0x32, 0x71, 0xec,
81742 - 0x37, 0x81, 0xfd, 0xa2, 0x6c, 0xf2, 0x99, 0xdf, 0xf7, 0xef, 0x23, 0x6f,
81743 - 0x3f, 0x4c, 0x99, 0x49, 0x5c, 0x14, 0x54, 0x1b, 0xec, 0x93, 0xa7, 0x08,
81744 - 0xd3, 0xbf, 0xe3, 0xf9, 0xa8, 0x58, 0xe8, 0xad, 0x26, 0xbf, 0x5b, 0xd5,
81745 - 0xf0, 0xe5, 0x01, 0xdf, 0xbc, 0x86, 0x2f, 0x3e, 0xdb, 0xb6, 0x5d, 0x13,
81746 - 0xb1, 0xb3, 0x42, 0x7b, 0x89, 0xf6, 0x0b, 0xed, 0xfa, 0xbf, 0xe9, 0xd7,
81747 - 0xb1, 0x3d, 0xf8, 0xb1, 0x0f, 0x64, 0xdb, 0x7b, 0xef, 0x42, 0xdf, 0x6b,
81748 - 0x19, 0x95, 0x63, 0xec, 0x4c, 0xc9, 0x7b, 0x25, 0xfb, 0x91, 0x44, 0x3c,
81749 - 0x6b, 0xb9, 0xc6, 0x06, 0x44, 0x59, 0xe7, 0x33, 0x65, 0xae, 0x6b, 0x6c,
81750 - 0x0b, 0x9e, 0x4d, 0x06, 0x6b, 0x29, 0xdc, 0xc2, 0x67, 0x1a, 0x02, 0xcd,
81751 - 0x93, 0xd6, 0xde, 0x05, 0x1e, 0xd2, 0xff, 0x13, 0xe3, 0x2a, 0xf0, 0x58,
81752 - 0x06, 0x1e, 0x4f, 0xdd, 0x65, 0x83, 0x85, 0xda, 0x36, 0xd8, 0xb6, 0x5a,
81753 - 0xef, 0x26, 0x60, 0xca, 0x3b, 0xb4, 0xbf, 0xca, 0x6d, 0x5a, 0x21, 0x4c,
81754 - 0xe3, 0xfc, 0x2e, 0x5b, 0xae, 0x67, 0x78, 0x1e, 0xb0, 0xc1, 0x30, 0xdf,
81755 - 0xda, 0x0e, 0x2d, 0x61, 0xff, 0x8a, 0x7e, 0x41, 0xbb, 0x09, 0x27, 0x68,
81756 - 0xf1, 0x2c, 0x38, 0x9f, 0x58, 0x37, 0x00, 0xcb, 0xb6, 0xa2, 0x03, 0x4d,
81757 - 0x03, 0xdb, 0xf5, 0xde, 0x37, 0xa0, 0x01, 0xee, 0x93, 0xf4, 0xe7, 0xd3,
81758 - 0x5e, 0xfb, 0xbb, 0x75, 0xf8, 0xb7, 0x25, 0xb9, 0xff, 0x90, 0x27, 0xb9,
81759 - 0x0b, 0x2d, 0x59, 0x48, 0x8b, 0x35, 0x76, 0x88, 0x34, 0x49, 0x3b, 0x01,
81760 - 0x36, 0x64, 0x8c, 0x38, 0xd6, 0xf6, 0xe0, 0xec, 0x57, 0xf7, 0xe3, 0xf7,
81761 - 0x6f, 0xfa, 0x79, 0xbf, 0x94, 0xdb, 0xa0, 0xbc, 0x12, 0xeb, 0xbe, 0x43,
81762 - 0xda, 0x3f, 0xbc, 0x1d, 0x05, 0xce, 0xd1, 0x9e, 0x7c, 0xa2, 0xcb, 0xc4,
81763 - 0x51, 0xb5, 0x5e, 0x4e, 0x3e, 0x41, 0xbc, 0xa2, 0xfc, 0xea, 0x4f, 0x1c,
81764 - 0x3f, 0x27, 0x49, 0xc7, 0x04, 0xc9, 0x17, 0x25, 0x99, 0xcf, 0x30, 0x27,
81765 - 0xb4, 0x57, 0x8e, 0x40, 0xae, 0x4d, 0x55, 0x26, 0xe5, 0x0b, 0x95, 0x88,
81766 - 0xb2, 0x1b, 0xfe, 0x2c, 0x9d, 0x8a, 0x8d, 0x5a, 0x2d, 0x79, 0x04, 0xf6,
81767 - 0xcf, 0xec, 0x50, 0x97, 0xbc, 0x32, 0xae, 0xf3, 0x6f, 0x6f, 0x33, 0xb9,
81768 - 0xce, 0x61, 0xce, 0x28, 0xf7, 0x03, 0xb9, 0x6f, 0xc1, 0x17, 0xb0, 0xba,
81769 - 0x65, 0x36, 0x1a, 0x91, 0xe9, 0x34, 0xca, 0x37, 0xa7, 0xd5, 0x37, 0xa4,
81770 - 0xd9, 0x68, 0xa7, 0x1c, 0x21, 0xcc, 0x2c, 0xdf, 0x62, 0xca, 0x9f, 0xf5,
81771 - 0x77, 0xc0, 0x62, 0xcd, 0x67, 0x02, 0x6a, 0x7f, 0xe5, 0x3a, 0xe5, 0x1b,
81772 - 0xc7, 0x40, 0x9e, 0x34, 0x79, 0x0f, 0x59, 0x92, 0x35, 0xc8, 0x97, 0x62,
81773 - 0x4d, 0xac, 0x8d, 0x0c, 0x2c, 0x6a, 0x57, 0xdb, 0x9f, 0x45, 0xd0, 0xd7,
81774 - 0x5c, 0x8d, 0xf2, 0x6f, 0x4a, 0xe5, 0x4e, 0xcf, 0xc1, 0xd6, 0x85, 0x4f,
81775 - 0x3c, 0xdb, 0xed, 0x99, 0x7b, 0xce, 0x5e, 0xc6, 0x43, 0x3a, 0x65, 0x98,
81776 - 0xff, 0x3f, 0x73, 0x0e, 0x0f, 0x48, 0x5f, 0x09, 0xe7, 0xe2, 0xdb, 0xdc,
81777 - 0xc0, 0x29, 0xd6, 0xcc, 0xa9, 0x73, 0xf2, 0xcf, 0x84, 0xb2, 0xa7, 0x33,
81778 - 0x67, 0xdb, 0xb7, 0x39, 0xc8, 0xb3, 0xd4, 0x17, 0x52, 0x0a, 0xc3, 0xa6,
81779 - 0xed, 0xb9, 0x00, 0xdd, 0x5d, 0xf3, 0x40, 0x2b, 0x93, 0xd0, 0x87, 0x93,
81780 - 0x52, 0x86, 0xed, 0xf6, 0xd1, 0xf4, 0x67, 0xc5, 0x7e, 0xea, 0xa0, 0xac,
81781 - 0xd5, 0x7a, 0x80, 0x0f, 0xea, 0x85, 0x90, 0xf2, 0xaf, 0x6f, 0x1f, 0xa7,
81782 - 0xbe, 0xa3, 0x2e, 0xd1, 0x67, 0xb1, 0x5d, 0xff, 0xc4, 0x80, 0xfe, 0x7e,
81783 - 0x65, 0xbf, 0x6c, 0xd5, 0x7d, 0x5d, 0x08, 0xff, 0xb0, 0x16, 0x32, 0x7a,
81784 - 0xb9, 0x17, 0xb2, 0xfb, 0xaf, 0x43, 0x0d, 0xe5, 0xab, 0x73, 0xff, 0xd4,
81785 - 0x41, 0xea, 0xff, 0x70, 0xf4, 0x36, 0x5c, 0xee, 0xbd, 0x53, 0x07, 0x69,
81786 - 0xbb, 0xc3, 0x39, 0xcc, 0xf5, 0x78, 0x1f, 0xc7, 0x3d, 0x46, 0x25, 0x74,
81787 - 0xf1, 0x84, 0xd8, 0xf0, 0x5b, 0x02, 0x4b, 0xb4, 0xf5, 0xee, 0xf4, 0x5d,
81788 - 0x02, 0x97, 0x6d, 0xf3, 0xad, 0xed, 0xb0, 0xb6, 0x65, 0x32, 0x28, 0x1b,
81789 - 0xfe, 0xf7, 0xb7, 0xfc, 0xdd, 0xe1, 0xdb, 0x1d, 0x78, 0x03, 0x5d, 0x8a,
81790 - 0xbf, 0xff, 0x0b, 0xc4, 0xbf, 0x6d, 0x24, 0x80, 0x4a, 0x00, 0x00, 0x00 };
81791 + 0xcd, 0x7c, 0x7f, 0x6c, 0x5c, 0xd7, 0x75, 0xe6, 0x79, 0x6f, 0xde, 0x90,
81792 + 0x43, 0x8a, 0xa2, 0x1e, 0x99, 0x31, 0x33, 0x8e, 0xd8, 0x7a, 0x86, 0xf3,
81793 + 0x48, 0xd1, 0x21, 0xe3, 0x3e, 0x33, 0x63, 0x99, 0x76, 0xa6, 0xd6, 0x64,
81794 + 0x66, 0x28, 0x2b, 0x0e, 0x69, 0xd0, 0x8e, 0x82, 0x4d, 0x01, 0x03, 0xe5,
81795 + 0x0e, 0xa9, 0x54, 0xd9, 0xf5, 0x22, 0xda, 0x34, 0x45, 0x8a, 0xa2, 0x88,
81796 + 0x26, 0x24, 0xe5, 0x2a, 0xcd, 0x88, 0x1c, 0xcb, 0x34, 0x1b, 0x14, 0x5e,
81797 + 0x64, 0x3c, 0xa4, 0x14, 0xb7, 0x1d, 0x89, 0x72, 0xe2, 0x2d, 0xbc, 0x58,
81798 + 0x07, 0x66, 0xa9, 0x1f, 0x4e, 0x83, 0x14, 0xf0, 0x2e, 0xbc, 0x68, 0x60,
81799 + 0xa4, 0x80, 0x20, 0xbb, 0x8d, 0xb3, 0xc8, 0x62, 0x83, 0xdd, 0x00, 0x71,
81800 + 0x02, 0x27, 0x6f, 0xbf, 0xef, 0xde, 0xfb, 0xc8, 0xd1, 0x88, 0x76, 0xd2,
81801 + 0xfc, 0xb5, 0x04, 0x06, 0xf7, 0xfd, 0xb8, 0x3f, 0xce, 0x3d, 0xf7, 0xdc,
81802 + 0x73, 0xbe, 0x73, 0xee, 0x79, 0x7c, 0x40, 0xa4, 0x53, 0xcc, 0xdf, 0x5e,
81803 + 0xfc, 0x32, 0xff, 0xe1, 0xb3, 0xb3, 0x63, 0x77, 0x65, 0xee, 0xc2, 0xe5,
81804 + 0x87, 0xed, 0xf7, 0x3b, 0x0e, 0x9f, 0x47, 0xf0, 0x8b, 0xe3, 0x37, 0x66,
81805 + 0xae, 0x77, 0xfb, 0x73, 0xf1, 0x3b, 0x68, 0x89, 0xcc, 0xfc, 0x4f, 0x11,
81806 + 0xab, 0xe5, 0x5d, 0xec, 0x5d, 0xda, 0xbc, 0xd7, 0x9f, 0xfd, 0x1b, 0xb4,
81807 + 0xf9, 0xd7, 0xfe, 0x45, 0x34, 0xd9, 0x6a, 0xde, 0xfc, 0x49, 0xcc, 0xce,
81808 + 0xce, 0x4c, 0xe6, 0x3d, 0x89, 0x45, 0xb2, 0x47, 0xa7, 0x66, 0x3d, 0x91,
81809 + 0x5c, 0x63, 0x24, 0x59, 0x90, 0x5f, 0x04, 0xe5, 0xb8, 0x23, 0x7c, 0xfe,
81810 + 0x5b, 0xd9, 0x77, 0xbe, 0xf6, 0xad, 0x7b, 0x53, 0x3f, 0xae, 0x45, 0x24,
81811 + 0xe6, 0x66, 0xdf, 0x16, 0x77, 0x48, 0x62, 0xfd, 0x68, 0xf3, 0xcc, 0x81,
81812 + 0x57, 0x6d, 0xe9, 0x0e, 0xfb, 0x72, 0x67, 0x22, 0x59, 0x99, 0x3e, 0x56,
81813 + 0x39, 0x19, 0xd8, 0x9e, 0x94, 0x9d, 0xac, 0x37, 0x5c, 0x97, 0xae, 0xf1,
81814 + 0x73, 0x99, 0x7b, 0x05, 0xf7, 0xd3, 0xc7, 0x1a, 0x31, 0x99, 0x6f, 0x94,
81815 + 0xbb, 0x6c, 0xcf, 0x43, 0x29, 0xb1, 0xb6, 0xec, 0x62, 0xec, 0x9a, 0xc7,
81816 + 0xb1, 0xbf, 0x8a, 0xb1, 0xf7, 0x4b, 0xd4, 0x0b, 0x82, 0x73, 0x18, 0xfb,
81817 + 0x70, 0xe3, 0x17, 0xc1, 0xb3, 0x8e, 0x1e, 0xd7, 0xce, 0x9e, 0x88, 0xb0,
81818 + 0xb4, 0xb2, 0xb5, 0xc9, 0x81, 0x06, 0xef, 0x8b, 0xed, 0x9a, 0x4e, 0xbf,
81819 + 0x13, 0x74, 0xc6, 0x9c, 0xec, 0x89, 0xce, 0x45, 0x94, 0xd1, 0x6c, 0x7c,
81820 + 0xec, 0x9c, 0xaa, 0xb7, 0x6e, 0xea, 0x3d, 0x1e, 0xd5, 0xed, 0xde, 0x9a,
81821 + 0x1c, 0x6a, 0xb0, 0xfc, 0xc9, 0xe4, 0xa0, 0x2a, 0xdf, 0x99, 0x4c, 0xab,
81822 + 0x52, 0xa6, 0x06, 0x54, 0xe9, 0x4c, 0x79, 0xaa, 0x7c, 0xc6, 0x3c, 0x7f,
81823 + 0x6e, 0x32, 0xa9, 0xca, 0x86, 0x29, 0x2f, 0x99, 0xf2, 0x05, 0x53, 0xbe,
81824 + 0x68, 0xca, 0x97, 0x4c, 0xb9, 0x69, 0xca, 0x2b, 0x93, 0xba, 0x9f, 0x6f,
81825 + 0x9b, 0xfb, 0xef, 0x9a, 0xf2, 0x55, 0x53, 0xbe, 0x66, 0xca, 0xef, 0x99,
81826 + 0xf2, 0xfb, 0x86, 0xae, 0xeb, 0xa6, 0x7c, 0xd3, 0x94, 0x3f, 0x32, 0xef,
81827 + 0x7f, 0x6c, 0xe8, 0x7d, 0x1b, 0x74, 0xfd, 0x49, 0xd4, 0xc8, 0x2a, 0xe6,
81828 + 0x9d, 0x94, 0xd9, 0x8a, 0x23, 0xf3, 0xcb, 0x11, 0x29, 0xa8, 0x35, 0xfc,
81829 + 0xca, 0x5e, 0xe9, 0x74, 0x64, 0x61, 0x23, 0x26, 0xd7, 0x95, 0x88, 0xbe,
81830 + 0x15, 0x7c, 0xeb, 0x80, 0x94, 0xed, 0xac, 0x2b, 0x97, 0x36, 0xe2, 0xf2,
81831 + 0xf2, 0x86, 0x58, 0xd3, 0x99, 0x0e, 0xb1, 0xcf, 0x7e, 0x40, 0x72, 0xae,
81832 + 0x25, 0x11, 0xc5, 0xd3, 0xa4, 0xe4, 0x2b, 0x7d, 0xb8, 0x4f, 0x25, 0x44,
81833 + 0xae, 0xee, 0xd5, 0xeb, 0x17, 0x93, 0xc8, 0x2a, 0xd7, 0xe4, 0xfe, 0xa9,
81834 + 0x6b, 0x2b, 0x09, 0x71, 0x96, 0x46, 0x31, 0x46, 0x97, 0x44, 0x57, 0xa5,
81835 + 0x3f, 0x22, 0x83, 0x89, 0x4f, 0xa3, 0x46, 0xb1, 0xe1, 0xc8, 0x44, 0xc3,
81836 + 0x12, 0xc7, 0x8b, 0x41, 0x3e, 0xba, 0xf0, 0x73, 0xf1, 0x8b, 0xe3, 0x97,
81837 + 0xc0, 0xef, 0x47, 0xe8, 0xa7, 0x5f, 0x0a, 0x0d, 0xf6, 0x89, 0x71, 0x97,
81838 + 0x31, 0xfe, 0x72, 0xca, 0x9d, 0x11, 0xd2, 0x95, 0x90, 0x6f, 0x1d, 0x20,
81839 + 0x5d, 0x2e, 0xe9, 0x01, 0x6d, 0x31, 0x2b, 0xbf, 0x22, 0x27, 0x0a, 0xbe,
81840 + 0x24, 0x6d, 0xaf, 0x53, 0x4a, 0xae, 0x95, 0x9c, 0x1b, 0xee, 0x95, 0xf2,
81841 + 0x51, 0xbc, 0x5f, 0x96, 0x9c, 0x8d, 0xfe, 0x4b, 0xae, 0xcc, 0xe8, 0x77,
81842 + 0x7c, 0xf6, 0x36, 0xf6, 0x6a, 0xca, 0xa5, 0xd0, 0xbe, 0xbc, 0xfc, 0xb7,
81843 + 0xb8, 0x66, 0x7f, 0x3f, 0x77, 0x34, 0xdd, 0x3f, 0xc5, 0x3d, 0x9f, 0x0f,
81844 + 0x99, 0x79, 0xf0, 0x9a, 0x75, 0xc3, 0x71, 0xc3, 0xf9, 0x72, 0xfc, 0x61,
81845 + 0xcc, 0x99, 0x34, 0x84, 0x73, 0x96, 0x72, 0x14, 0xb4, 0xd4, 0x57, 0xba,
81846 + 0xac, 0xb5, 0x95, 0x51, 0x79, 0x62, 0xf9, 0x01, 0xc9, 0xfb, 0x41, 0x30,
81847 + 0xeb, 0x4b, 0xdc, 0x96, 0x41, 0xb7, 0x80, 0x0a, 0x5b, 0x0d, 0xb1, 0xea,
81848 + 0x15, 0x89, 0xb5, 0x83, 0x2f, 0x3f, 0x58, 0x61, 0xdf, 0x0e, 0x9e, 0xf5,
81849 + 0xa1, 0x7e, 0xb7, 0xb5, 0xbe, 0x02, 0xfa, 0xb3, 0xe4, 0x4f, 0x10, 0x2c,
81850 + 0xfa, 0x83, 0x89, 0x39, 0x8c, 0x79, 0xb9, 0x31, 0x38, 0x7e, 0x43, 0x5c,
81851 + 0xf4, 0xd9, 0x8b, 0x3a, 0xe4, 0x15, 0xfb, 0x62, 0x9f, 0xec, 0xaf, 0x0b,
81852 + 0x6d, 0xe3, 0x78, 0x47, 0xba, 0x82, 0x20, 0xef, 0xbb, 0xbc, 0x97, 0x4d,
81853 + 0xf0, 0x6f, 0x93, 0xfc, 0xeb, 0xec, 0x97, 0x57, 0x1a, 0x1c, 0x63, 0x37,
81854 + 0xda, 0x47, 0xfe, 0x3f, 0xa4, 0x3d, 0x81, 0xfe, 0xe3, 0x28, 0xf7, 0x58,
81855 + 0xf5, 0x6a, 0x80, 0xf1, 0x13, 0xb8, 0xde, 0x6d, 0x1e, 0xd7, 0xd5, 0xda,
81856 + 0x5f, 0xc2, 0xda, 0xbb, 0xd9, 0xb8, 0x3c, 0xbf, 0xd1, 0x8f, 0x79, 0x24,
81857 + 0xe4, 0x1b, 0x90, 0xcd, 0x9e, 0x83, 0x7b, 0x24, 0x0d, 0xd9, 0xe4, 0x9a,
81858 + 0x8f, 0xad, 0xce, 0x49, 0x29, 0x9e, 0x1a, 0xa6, 0x1e, 0xcd, 0x8f, 0xed,
81859 + 0xc3, 0x7c, 0xb5, 0xb6, 0x1a, 0x58, 0xca, 0xed, 0xb7, 0xe5, 0x90, 0xd8,
81860 + 0x59, 0x8c, 0x9b, 0x19, 0x01, 0x2d, 0x11, 0xbc, 0x8b, 0x8b, 0xb7, 0x9a,
81861 + 0xc3, 0xb3, 0x54, 0xa2, 0x04, 0x1a, 0xe7, 0x41, 0x63, 0x49, 0xca, 0x62,
81862 + 0x5f, 0x7c, 0xce, 0x0a, 0xf7, 0x8a, 0xe6, 0xdd, 0xb0, 0xe9, 0x67, 0x5b,
81863 + 0xce, 0x2d, 0x7b, 0xb5, 0xcb, 0x8a, 0xac, 0x8e, 0xca, 0xa9, 0x5d, 0x78,
81864 + 0x56, 0x07, 0xcf, 0xec, 0xa5, 0x70, 0x1f, 0x38, 0xb8, 0xef, 0x43, 0xdd,
81865 + 0x6e, 0xcb, 0x59, 0xbd, 0x95, 0x5f, 0x6b, 0x8d, 0x41, 0x7f, 0x0b, 0xfc,
81866 + 0xb2, 0x57, 0x7b, 0x51, 0xe7, 0x56, 0x7e, 0xd5, 0xc1, 0x2f, 0x7b, 0x55,
81867 + 0xf3, 0xaa, 0x0e, 0x5e, 0xd9, 0x4b, 0x71, 0x94, 0x7b, 0x2c, 0xfb, 0xac,
81868 + 0xe6, 0x55, 0xdd, 0xec, 0x99, 0xf3, 0x4a, 0x5f, 0xe5, 0x40, 0xab, 0x25,
81869 + 0x5a, 0x67, 0xe5, 0x84, 0xba, 0x29, 0x92, 0x2d, 0x62, 0xaf, 0xdb, 0xe0,
81870 + 0x85, 0x23, 0xc5, 0x31, 0x4b, 0x66, 0xd5, 0xbb, 0xa2, 0xa4, 0x1b, 0x1f,
81871 + 0x00, 0x23, 0x47, 0x86, 0x61, 0x29, 0xca, 0x6d, 0xd9, 0x17, 0xed, 0xad,
81872 + 0x4a, 0x4c, 0x0a, 0x4e, 0x52, 0xbc, 0x25, 0xa5, 0xc7, 0x9b, 0xfa, 0x99,
81873 + 0x41, 0x3f, 0xdf, 0x01, 0x3f, 0x2c, 0xe8, 0x56, 0xbe, 0x7b, 0x4c, 0xed,
81874 + 0xfb, 0xf4, 0xaa, 0x23, 0x83, 0x4b, 0xac, 0x53, 0xb6, 0xaf, 0x34, 0xde,
81875 + 0x09, 0x74, 0xbf, 0x8f, 0x71, 0x4c, 0xd7, 0xce, 0x2e, 0xda, 0x97, 0xd7,
81876 + 0x4f, 0xdb, 0x57, 0x1b, 0xe8, 0xb7, 0xc1, 0xb5, 0xc0, 0x5a, 0x2d, 0x63,
81877 + 0xad, 0x96, 0xb1, 0x6e, 0x66, 0x4f, 0xd7, 0xd4, 0xde, 0x4a, 0x9a, 0x75,
81878 + 0x25, 0x0d, 0x5c, 0xdb, 0x04, 0xd6, 0x94, 0x6b, 0x2b, 0xd6, 0xab, 0x99,
81879 + 0x3d, 0x12, 0x39, 0x1b, 0x51, 0x6b, 0xda, 0xb3, 0xfa, 0x91, 0xed, 0x35,
81880 + 0x1d, 0x68, 0x5a, 0x53, 0xfb, 0x5d, 0xd6, 0xd4, 0xd9, 0x65, 0x4d, 0xb7,
81881 + 0x1a, 0x3f, 0x31, 0x6b, 0xfa, 0x73, 0x31, 0xb2, 0xff, 0x9e, 0xfc, 0x1a,
81882 + 0x00, 0xbf, 0xbc, 0x5f, 0x83, 0x5f, 0xce, 0xae, 0xfc, 0xea, 0xb3, 0x5b,
81883 + 0xf9, 0x15, 0x01, 0xbf, 0xa2, 0xbf, 0x36, 0xbf, 0xc0, 0x87, 0x5d, 0x79,
81884 + 0x15, 0x83, 0xde, 0x2b, 0x4b, 0x3e, 0x23, 0x92, 0xaf, 0x6a, 0x5d, 0x5d,
81885 + 0x56, 0x3a, 0x9b, 0xba, 0x2a, 0xd4, 0xd9, 0xd4, 0xd7, 0x6a, 0x9f, 0x58,
81886 + 0x85, 0x4a, 0x12, 0xba, 0xd4, 0x41, 0xf9, 0x1c, 0xca, 0x3d, 0xd6, 0x74,
81887 + 0xb5, 0x1f, 0x76, 0x36, 0x10, 0x77, 0x2c, 0xb4, 0x97, 0xe5, 0x84, 0x8b,
81888 + 0xb5, 0x71, 0xef, 0x8a, 0x8a, 0xf4, 0xa5, 0xc0, 0xa7, 0x14, 0xde, 0xa7,
81889 + 0x12, 0x39, 0xc9, 0xda, 0x21, 0xae, 0xc9, 0x57, 0x3a, 0xde, 0xce, 0xa9,
81890 + 0x2b, 0x3e, 0x67, 0xbb, 0x0c, 0x9e, 0x45, 0x65, 0x06, 0x76, 0xa0, 0xe8,
81891 + 0x71, 0x3c, 0xf6, 0x9f, 0x9c, 0xe1, 0xb8, 0x85, 0x46, 0xa8, 0xb3, 0x25,
81892 + 0x07, 0x1b, 0x8e, 0x77, 0xdc, 0xb7, 0xe3, 0x56, 0x41, 0xd9, 0xa0, 0x8c,
81893 + 0x78, 0x8d, 0x66, 0xfb, 0xb2, 0x4d, 0x27, 0xf6, 0x73, 0x0e, 0x72, 0x4d,
81894 + 0xda, 0x92, 0xd8, 0x7b, 0xc7, 0x22, 0xe1, 0xfa, 0x38, 0xd9, 0x71, 0x81,
81895 + 0x5d, 0x96, 0xf9, 0x0a, 0xfb, 0xfb, 0x63, 0x2b, 0x72, 0x31, 0xec, 0x9f,
81896 + 0x7c, 0x64, 0xdf, 0xba, 0xbf, 0xf9, 0xc6, 0x5b, 0x46, 0x37, 0x28, 0x5b,
81897 + 0x85, 0xfe, 0xca, 0x4d, 0xfd, 0x95, 0xad, 0xc8, 0x92, 0xec, 0x53, 0xf6,
81898 + 0xe0, 0x28, 0xf9, 0x77, 0x1a, 0xef, 0xae, 0x4b, 0x84, 0x32, 0xa3, 0xf6,
81899 + 0x18, 0xf7, 0xfb, 0x97, 0x38, 0xdf, 0x26, 0xde, 0x4e, 0xc3, 0xc6, 0x71,
81900 + 0x7f, 0x61, 0x8d, 0xe3, 0x7c, 0x7e, 0xc8, 0xd0, 0xe4, 0x48, 0x4e, 0xdd,
81901 + 0x7f, 0x63, 0x4f, 0xa8, 0x3f, 0xb1, 0x9f, 0x41, 0xdb, 0x8b, 0x6a, 0x8e,
81902 + 0x76, 0x36, 0x0b, 0xde, 0x34, 0xd3, 0xc8, 0x79, 0x67, 0xb1, 0xc6, 0xa1,
81903 + 0x0e, 0x0b, 0xd7, 0x8a, 0xb8, 0xc6, 0xb1, 0x16, 0x2a, 0x5d, 0xb0, 0x8f,
81904 + 0x31, 0x63, 0x83, 0xd9, 0x7e, 0x11, 0xed, 0xf9, 0x9c, 0x6d, 0xbb, 0x60,
81905 + 0x8f, 0xd9, 0x7e, 0xd1, 0xb4, 0xdf, 0xb1, 0xcb, 0xdc, 0x2b, 0xb4, 0xc9,
81906 + 0x57, 0x32, 0xc0, 0x42, 0x2b, 0xb6, 0x14, 0x7c, 0xe0, 0x1c, 0xbf, 0xdf,
81907 + 0xec, 0x0b, 0x2d, 0x9b, 0x1f, 0x75, 0x2c, 0x69, 0xf7, 0x76, 0x93, 0xcd,
81908 + 0x7f, 0xb0, 0xb5, 0xad, 0xdb, 0x91, 0xcd, 0x05, 0xe8, 0xa8, 0x53, 0x90,
81909 + 0x95, 0xc5, 0xed, 0x7a, 0x94, 0x4b, 0x25, 0xa3, 0x90, 0xcd, 0xd4, 0x38,
81910 + 0xa7, 0x79, 0xa5, 0xd1, 0x2c, 0xa3, 0x61, 0x1f, 0x31, 0x25, 0x07, 0x7a,
81911 + 0x9c, 0xc5, 0xa6, 0x71, 0x16, 0x9b, 0xc6, 0x59, 0x32, 0xd8, 0x8e, 0xfd,
81912 + 0x68, 0xbb, 0x7a, 0xfd, 0x26, 0x7b, 0xce, 0x35, 0xfb, 0x24, 0xf6, 0xa4,
81913 + 0x96, 0x05, 0x60, 0x35, 0xbd, 0x06, 0x15, 0x57, 0xe6, 0x37, 0x2e, 0x84,
81914 + 0x7b, 0xb5, 0xdc, 0x8e, 0xe7, 0x3f, 0xc4, 0xf3, 0xe1, 0x33, 0x2e, 0xec,
81915 + 0x14, 0xb1, 0xda, 0x4b, 0x72, 0xae, 0x42, 0x19, 0x79, 0x11, 0x74, 0xa7,
81916 + 0xfd, 0x36, 0x8b, 0x7c, 0x4d, 0x0d, 0x9f, 0x97, 0x54, 0x72, 0x5e, 0x46,
81917 + 0x7c, 0x96, 0x4f, 0x88, 0xc2, 0x58, 0xa2, 0x31, 0xd0, 0x8b, 0x90, 0x3f,
81918 + 0x91, 0x1f, 0x57, 0xda, 0xc5, 0x1e, 0xfb, 0x61, 0x40, 0x3b, 0x78, 0x7a,
81919 + 0xa3, 0xb5, 0x1f, 0x91, 0xa1, 0x33, 0xaa, 0x1f, 0xf4, 0x91, 0xf6, 0xbf,
81920 + 0xad, 0xfa, 0x0b, 0xfb, 0xc2, 0x3c, 0xc7, 0x5a, 0xfb, 0x73, 0xe4, 0xba,
81921 + 0x6b, 0xa3, 0xbf, 0xb4, 0x99, 0x23, 0xaf, 0x21, 0x23, 0xae, 0x83, 0xf2,
81922 + 0x61, 0x3b, 0x94, 0x19, 0x7b, 0xec, 0x3b, 0x41, 0x6e, 0x9a, 0x73, 0x2b,
81923 + 0x99, 0x67, 0xff, 0xc3, 0xc8, 0x9b, 0x54, 0xed, 0x2c, 0x78, 0x96, 0x19,
81924 + 0xc4, 0x78, 0xbc, 0x4f, 0x02, 0x1f, 0x49, 0x99, 0xf8, 0xac, 0x54, 0xf9,
81925 + 0x65, 0x90, 0x73, 0x34, 0xa6, 0xd2, 0x6b, 0xcf, 0xf7, 0x96, 0x14, 0x50,
81926 + 0x77, 0xc1, 0xe8, 0x83, 0x62, 0xe3, 0xba, 0xe2, 0xdf, 0xf3, 0x6a, 0x1f,
81927 + 0xa5, 0x4e, 0x97, 0xa9, 0x37, 0x36, 0xdc, 0x08, 0xf7, 0xf8, 0x25, 0xff,
81928 + 0xa5, 0x60, 0x61, 0x39, 0x95, 0x4c, 0xda, 0x83, 0x52, 0xaa, 0x0e, 0x96,
81929 + 0x6d, 0x94, 0x27, 0x6a, 0x09, 0x39, 0x51, 0x61, 0x3f, 0xfb, 0x51, 0x07,
81930 + 0x8a, 0xc8, 0xc6, 0x26, 0xef, 0xa3, 0xae, 0xe1, 0x98, 0x6f, 0x5b, 0x7a,
81931 + 0x4c, 0xcc, 0xc1, 0xdb, 0xb4, 0xfe, 0x63, 0xe3, 0x8a, 0x55, 0xaa, 0x71,
81932 + 0xfd, 0xf1, 0xbc, 0xd1, 0xac, 0x8f, 0x42, 0x5d, 0xb4, 0x83, 0xc5, 0x22,
81933 + 0xd9, 0x45, 0xab, 0xb4, 0x22, 0x76, 0xde, 0x8f, 0x12, 0x0f, 0x26, 0x45,
81934 + 0xee, 0x75, 0xf5, 0x3c, 0x3f, 0x19, 0xa1, 0x1e, 0x74, 0xbc, 0xd3, 0xe8,
81935 + 0xbb, 0x53, 0x72, 0x0e, 0xd7, 0x9f, 0xd7, 0x12, 0x44, 0xb2, 0x1e, 0x6d,
81936 + 0xa5, 0x13, 0xc9, 0x3a, 0xd8, 0x63, 0xac, 0xf3, 0x52, 0xc0, 0xbd, 0x90,
81937 + 0xaf, 0x6a, 0x19, 0x29, 0xef, 0x60, 0x2f, 0xd0, 0x9b, 0x83, 0x8e, 0x11,
81938 + 0x1b, 0x7b, 0xcc, 0x8d, 0x64, 0xf9, 0x7c, 0x1c, 0xd7, 0x9b, 0xa8, 0x4f,
81939 + 0x1d, 0x0b, 0x4c, 0x5a, 0x53, 0xbc, 0xc3, 0x58, 0x39, 0xab, 0x58, 0x09,
81940 + 0x79, 0xf2, 0x52, 0xf0, 0xe4, 0x72, 0x88, 0x11, 0x94, 0x6c, 0xc9, 0xc0,
81941 + 0xd9, 0xa4, 0xd9, 0xd7, 0x5d, 0xdc, 0x73, 0xe4, 0x3f, 0x9e, 0xf9, 0xe6,
81942 + 0x59, 0x7b, 0xd3, 0xb3, 0x70, 0xff, 0x7f, 0x09, 0xb4, 0xf5, 0x2b, 0xfe,
81943 + 0xd8, 0xd9, 0x23, 0x56, 0x5e, 0xe1, 0x93, 0x20, 0x28, 0x78, 0x51, 0x29,
81944 + 0x8d, 0xfe, 0x09, 0xe6, 0xca, 0x77, 0x65, 0x30, 0x9c, 0x76, 0x63, 0x78,
81945 + 0x72, 0xd6, 0x4b, 0x29, 0xfb, 0x9f, 0xc7, 0xfe, 0xd3, 0x3a, 0x53, 0xca,
81946 + 0x3d, 0xa0, 0xdd, 0x5b, 0xe2, 0x9a, 0xbc, 0x14, 0x9c, 0x05, 0x16, 0x9e,
81947 + 0x5e, 0x2a, 0x5a, 0x03, 0xd8, 0x12, 0x76, 0x9f, 0x05, 0x3e, 0x77, 0x49,
81948 + 0xfe, 0x22, 0xd7, 0x82, 0x75, 0xf8, 0xbc, 0x4d, 0xa6, 0xe3, 0xad, 0xb6,
81949 + 0xf2, 0xdc, 0x3e, 0xe9, 0x24, 0xbf, 0x51, 0x77, 0xe9, 0xff, 0x46, 0xb4,
81950 + 0x5e, 0x76, 0x65, 0x60, 0x95, 0x7c, 0x2f, 0x5a, 0xb3, 0x15, 0xea, 0xb1,
81951 + 0x0e, 0xd8, 0x47, 0x3e, 0x67, 0x9f, 0x78, 0x77, 0xbe, 0xb5, 0x8f, 0xdf,
81952 + 0x8b, 0xe8, 0x3e, 0xd8, 0x2e, 0xec, 0xa3, 0x99, 0x1f, 0x7b, 0x94, 0x9e,
81953 + 0xeb, 0xcd, 0xf6, 0xb6, 0xf4, 0x9b, 0x68, 0xea, 0x17, 0xef, 0xce, 0x7f,
81954 + 0x37, 0x42, 0x5c, 0xf6, 0xf2, 0x32, 0xf8, 0xac, 0xe6, 0xc4, 0x77, 0x6c,
81955 + 0x53, 0xb4, 0x0a, 0x4b, 0x41, 0x30, 0xed, 0xdb, 0x12, 0xe9, 0x0b, 0xeb,
81956 + 0xea, 0x79, 0x15, 0x31, 0xaf, 0x3c, 0xe6, 0x65, 0xf7, 0xb5, 0xd2, 0xf4,
81957 + 0xfb, 0x86, 0xa6, 0xde, 0x26, 0x9a, 0xe2, 0xef, 0x31, 0xaf, 0xf8, 0x2e,
81958 + 0xf3, 0x7a, 0xa9, 0x57, 0xf7, 0x11, 0x6f, 0xea, 0xa3, 0xaf, 0xa5, 0x0f,
81959 + 0xe8, 0xfd, 0x38, 0xdb, 0xf7, 0xed, 0xd2, 0xfe, 0x87, 0x1d, 0xba, 0x3d,
81960 + 0xdb, 0xb4, 0x41, 0xb7, 0xf7, 0x1b, 0xbd, 0x78, 0xa2, 0x49, 0x97, 0x9d,
81961 + 0x80, 0x2e, 0x6b, 0x6e, 0xd3, 0x2c, 0xff, 0xa1, 0x8f, 0x44, 0xff, 0x28,
81962 + 0xc4, 0x8a, 0x1f, 0x50, 0x18, 0x64, 0x07, 0x63, 0xc7, 0x80, 0x47, 0xba,
81963 + 0x60, 0xff, 0xbb, 0xe9, 0x07, 0x19, 0x4c, 0x48, 0xbf, 0x88, 0x38, 0x50,
81964 + 0x3c, 0xa0, 0x28, 0xe8, 0x96, 0xc1, 0xc4, 0x31, 0x11, 0xe5, 0x07, 0x11,
81965 + 0x5f, 0xd3, 0x27, 0xe2, 0x38, 0xf4, 0x89, 0xb8, 0xee, 0xbc, 0x2f, 0x6c,
81966 + 0xfb, 0x48, 0xfd, 0xd8, 0xf7, 0xc4, 0xc7, 0xdc, 0x33, 0xa1, 0xad, 0x69,
81967 + 0xd6, 0xa7, 0xbb, 0xd1, 0xd4, 0xdf, 0x42, 0x13, 0x74, 0x12, 0x7c, 0xb3,
81968 + 0x05, 0xc8, 0x23, 0x30, 0x29, 0x74, 0xe0, 0xfd, 0x53, 0xe7, 0x56, 0x44,
81969 + 0x4a, 0x0d, 0xda, 0xc7, 0x51, 0x81, 0x5f, 0x05, 0xba, 0xd8, 0xb7, 0xb2,
81970 + 0x91, 0xd0, 0x4d, 0xdd, 0x39, 0x3b, 0x3b, 0x08, 0x3f, 0xdc, 0x91, 0x39,
81971 + 0x43, 0xdb, 0x8c, 0xf2, 0xe1, 0xba, 0x50, 0x26, 0x94, 0x5c, 0xcd, 0x80,
81972 + 0x3e, 0x5e, 0xcf, 0x18, 0xec, 0x7e, 0xac, 0xd1, 0x4a, 0xdb, 0xf7, 0x40,
81973 + 0x9b, 0x07, 0x1a, 0x92, 0xf2, 0x02, 0xb0, 0xfb, 0x37, 0xd5, 0xbe, 0x0c,
81974 + 0x75, 0x17, 0x65, 0x29, 0x55, 0x2d, 0xcb, 0x66, 0xb0, 0xb2, 0xcc, 0x7d,
81975 + 0x4b, 0x1b, 0xde, 0x25, 0x65, 0xac, 0xd7, 0xc0, 0x52, 0x2a, 0x99, 0xb3,
81976 + 0xc5, 0x7a, 0xdf, 0x41, 0xca, 0xd3, 0xe3, 0x32, 0x70, 0x51, 0x2c, 0x67,
81977 + 0x09, 0x7b, 0xbd, 0x3b, 0xc4, 0x57, 0x9c, 0xdf, 0x6f, 0x63, 0x7e, 0xe8,
81978 + 0x7b, 0x39, 0x9c, 0x5f, 0x97, 0x94, 0x56, 0x39, 0xbf, 0xed, 0xb9, 0xc5,
81979 + 0x19, 0x11, 0xf9, 0x1c, 0xf4, 0x35, 0xe6, 0x08, 0x1a, 0xc7, 0x81, 0x73,
81980 + 0xef, 0x30, 0x73, 0xea, 0xc2, 0x9c, 0x60, 0xa3, 0x97, 0xd8, 0x1e, 0x74,
81981 + 0x81, 0xe6, 0x12, 0xea, 0xcd, 0x2f, 0x71, 0xcd, 0x41, 0x2b, 0xd6, 0xbd,
81982 + 0xd4, 0xe0, 0xda, 0x73, 0x6e, 0xda, 0xae, 0x3b, 0x1e, 0xe7, 0xc7, 0x79,
81983 + 0x0e, 0x63, 0x5e, 0xac, 0xc3, 0x76, 0xad, 0x32, 0x32, 0xfc, 0x1e, 0xeb,
81984 + 0xf1, 0xdb, 0x2d, 0xeb, 0x21, 0x66, 0x3d, 0x62, 0xd2, 0xb6, 0xaa, 0xfc,
81985 + 0x65, 0x45, 0x03, 0x7d, 0x08, 0x07, 0xf4, 0x2f, 0xae, 0xc8, 0x68, 0x54,
81986 + 0x48, 0x7b, 0x82, 0xcf, 0x32, 0x6d, 0x32, 0xe8, 0x5f, 0x81, 0x5c, 0x95,
81987 + 0x20, 0x0b, 0xf4, 0x07, 0x5e, 0x5e, 0xd6, 0x6b, 0x51, 0x6a, 0x74, 0xc2,
81988 + 0x47, 0xe7, 0xf8, 0xe4, 0x37, 0xe7, 0xe6, 0xaa, 0x75, 0x68, 0x5e, 0x97,
81989 + 0x4f, 0xdf, 0xb2, 0x2e, 0xd4, 0xbb, 0xd4, 0x03, 0xc4, 0x3d, 0xd4, 0x05,
81990 + 0x61, 0x4c, 0xa0, 0xe6, 0xea, 0xfd, 0x14, 0xda, 0x9f, 0xeb, 0xdb, 0xf8,
81991 + 0x52, 0xaf, 0x59, 0xc2, 0xc4, 0x05, 0xba, 0xc4, 0x5e, 0xbd, 0x83, 0x7a,
81992 + 0x1f, 0xf6, 0x27, 0x9c, 0xdf, 0xef, 0xe0, 0x3e, 0x71, 0xd3, 0x7a, 0xd8,
81993 + 0x98, 0x93, 0xa3, 0xe6, 0xa8, 0xd6, 0x62, 0x5b, 0xe6, 0xe6, 0x1a, 0x7a,
81994 + 0x5e, 0xce, 0xd2, 0x1e, 0xb3, 0x1e, 0x31, 0x3c, 0xe3, 0xbc, 0x42, 0x9b,
81995 + 0xc3, 0x79, 0x91, 0x5e, 0xd7, 0xc8, 0x1c, 0xe7, 0xc3, 0xfd, 0xd7, 0x2c,
81996 + 0x6b, 0x2f, 0x05, 0xd5, 0xe5, 0xa8, 0x9a, 0x7b, 0xde, 0xef, 0x26, 0x46,
81997 + 0xa3, 0x8e, 0x34, 0xfa, 0x89, 0xcf, 0x69, 0x07, 0xf1, 0x2e, 0x43, 0x19,
81998 + 0xc2, 0x7d, 0x9d, 0xf7, 0xcd, 0x36, 0xed, 0x79, 0x47, 0xeb, 0x01, 0xc6,
81999 + 0x9f, 0xde, 0xdb, 0xd6, 0x45, 0xb3, 0x62, 0xad, 0x57, 0xe8, 0x33, 0x07,
82000 + 0xc0, 0x5d, 0x77, 0x40, 0xaf, 0x1c, 0x92, 0x92, 0x0b, 0x7b, 0x3d, 0x7c,
82001 + 0x3b, 0xe6, 0x3c, 0x2e, 0x2a, 0xde, 0x30, 0xbc, 0x17, 0xd7, 0x7b, 0x94,
82002 + 0xef, 0x52, 0x1a, 0xfe, 0x90, 0xe4, 0xa6, 0x69, 0xd3, 0x7e, 0x5f, 0x66,
82003 + 0x60, 0x5b, 0x4b, 0xc3, 0x77, 0x82, 0x3e, 0xde, 0x43, 0x27, 0x7a, 0x43,
82004 + 0x8c, 0x51, 0xe0, 0xef, 0x71, 0x13, 0x9b, 0x39, 0x80, 0xfb, 0x3d, 0xa8,
82005 + 0xf3, 0x49, 0x53, 0xa7, 0x1b, 0x75, 0x06, 0x5b, 0xea, 0x70, 0xbc, 0xfb,
82006 + 0x50, 0x07, 0xf6, 0x14, 0x56, 0xd2, 0xf6, 0x0e, 0xe2, 0x37, 0x81, 0x67,
82007 + 0xf7, 0xe2, 0xd9, 0x3d, 0x78, 0x76, 0x0f, 0xee, 0x7f, 0xd7, 0xc4, 0x3c,
82008 + 0xc2, 0x36, 0xdd, 0xb8, 0xff, 0x12, 0xde, 0x43, 0xc7, 0xb9, 0xdf, 0xc6,
82009 + 0xfb, 0xfb, 0xf0, 0x1b, 0x6b, 0xa9, 0xe3, 0xb6, 0xdc, 0x9f, 0x76, 0x74,
82010 + 0x8c, 0x84, 0xcf, 0x82, 0xc8, 0xce, 0xf5, 0x7f, 0x35, 0xcf, 0xbd, 0xa6,
82011 + 0xf7, 0x1f, 0x37, 0xd7, 0xad, 0xb2, 0x94, 0x86, 0x2c, 0xf1, 0xfd, 0x57,
82012 + 0xf6, 0xe9, 0xb5, 0xb8, 0x43, 0xc7, 0x1f, 0x6e, 0xc2, 0x1b, 0x4a, 0xfc,
82013 + 0x71, 0xbd, 0x09, 0x9c, 0x41, 0xec, 0xd1, 0x8c, 0x3b, 0x48, 0x8b, 0xab,
82014 + 0xe4, 0xf5, 0xe5, 0xe5, 0xd7, 0xba, 0xf5, 0x18, 0x62, 0xd5, 0x21, 0x73,
82015 + 0x13, 0x2a, 0x16, 0xf1, 0x33, 0xf3, 0xcc, 0xdb, 0xb7, 0xf3, 0x6e, 0xaf,
82016 + 0x4c, 0x54, 0xff, 0x68, 0xdf, 0x0e, 0x6d, 0x93, 0x4d, 0xd7, 0x3b, 0x98,
82017 + 0x02, 0xfe, 0x84, 0xbd, 0x83, 0x77, 0x72, 0xf6, 0x5c, 0xa3, 0x68, 0xeb,
82018 + 0x71, 0x59, 0x07, 0xef, 0x1a, 0x9b, 0x3d, 0x8e, 0x92, 0xfd, 0x9c, 0x4d,
82019 + 0x5f, 0xa3, 0xbc, 0xc6, 0xeb, 0xdb, 0x51, 0x36, 0xb7, 0xed, 0x87, 0x1e,
82020 + 0xcf, 0xd9, 0x9a, 0xee, 0xd6, 0xf6, 0xe1, 0xbe, 0xf1, 0x65, 0xa1, 0x0a,
82021 + 0x99, 0xf3, 0x52, 0xc3, 0x65, 0xac, 0xdd, 0xac, 0x9f, 0x9a, 0xa6, 0x4c,
82022 + 0xc2, 0x9f, 0xfd, 0x94, 0xc8, 0xa4, 0xcc, 0x57, 0x1f, 0x06, 0xfe, 0x0e,
82023 + 0xe4, 0x21, 0xe0, 0x8a, 0x7f, 0x0f, 0x5c, 0x52, 0x83, 0xac, 0xd7, 0x1a,
82024 + 0x1e, 0x7e, 0xfd, 0xf2, 0x57, 0x95, 0x84, 0x3c, 0x07, 0x7f, 0x02, 0xb2,
82025 + 0x06, 0x3d, 0x9c, 0x76, 0x1f, 0x12, 0xe9, 0xb1, 0xe5, 0xf2, 0xbd, 0xb6,
82026 + 0x8c, 0x24, 0x07, 0xac, 0x74, 0x02, 0x3f, 0xb7, 0x0d, 0xbf, 0x22, 0x7c,
82027 + 0xb8, 0xb5, 0x06, 0x63, 0x01, 0x71, 0xf9, 0xeb, 0xf5, 0x24, 0x7e, 0x7d,
82028 + 0xf2, 0x37, 0xeb, 0x1c, 0x7f, 0xc0, 0x94, 0x6a, 0x1f, 0xc3, 0xe7, 0x28,
82029 + 0xcb, 0x62, 0x26, 0x21, 0x0b, 0x95, 0xe0, 0xa4, 0xf6, 0x99, 0x3d, 0xf8,
82030 + 0xc8, 0xdc, 0xb3, 0x2f, 0x60, 0xcf, 0xe2, 0xb9, 0xc2, 0x9e, 0xa1, 0xdd,
82031 + 0x7b, 0x01, 0x76, 0x2f, 0x5c, 0x23, 0xce, 0xb3, 0x75, 0x7d, 0xd8, 0x2f,
82032 + 0xd7, 0x88, 0x7a, 0x9d, 0xba, 0x3c, 0x06, 0xfc, 0x10, 0xea, 0x76, 0xea,
82033 + 0x08, 0x6f, 0xdb, 0x0f, 0x7d, 0xe4, 0x60, 0x17, 0xb0, 0x86, 0xc4, 0xe2,
82034 + 0xd9, 0x9f, 0xca, 0xca, 0x59, 0xee, 0x1b, 0xda, 0xe3, 0xbb, 0x21, 0x6f,
82035 + 0xa9, 0xaf, 0x96, 0x89, 0x99, 0xbd, 0x0c, 0xf8, 0x51, 0x96, 0xe9, 0x83,
82036 + 0xab, 0xbd, 0x5a, 0x4e, 0x26, 0xc5, 0x39, 0xfb, 0x85, 0xa8, 0x74, 0x9f,
82037 + 0x94, 0x45, 0x1f, 0x7e, 0xa9, 0x5d, 0x0e, 0x22, 0x9e, 0x97, 0x28, 0x28,
82038 + 0xbf, 0x69, 0x05, 0x74, 0xc6, 0x64, 0xe2, 0x2c, 0xeb, 0x9c, 0x84, 0x8c,
82039 + 0xb5, 0x81, 0xe6, 0x76, 0x39, 0x15, 0x4f, 0x95, 0x0b, 0xf0, 0xf7, 0x6d,
82040 + 0xaf, 0x47, 0x06, 0xea, 0x2c, 0x89, 0x41, 0xfe, 0x37, 0xe4, 0x87, 0xd7,
82041 + 0xf0, 0x03, 0x57, 0xf9, 0x7c, 0x00, 0x25, 0x9f, 0x7b, 0xd0, 0x2f, 0xe4,
82042 + 0x07, 0x70, 0xc3, 0xc5, 0xb2, 0x9c, 0xca, 0x4c, 0x4a, 0xbd, 0x2a, 0xd6,
82043 + 0x42, 0x06, 0x7b, 0xa0, 0x96, 0x95, 0x3a, 0x78, 0x51, 0x6a, 0x1c, 0x87,
82044 + 0xdf, 0xf9, 0x26, 0xca, 0x39, 0x94, 0xd7, 0x51, 0x3e, 0x8e, 0xf2, 0x2d,
82045 + 0x94, 0xa4, 0xfd, 0xb8, 0xd4, 0x6b, 0x7b, 0xda, 0xa4, 0x93, 0x7d, 0x6c,
82046 + 0x18, 0x9a, 0xe1, 0x3b, 0x1e, 0x3c, 0x0e, 0x2c, 0x1a, 0x3e, 0x3f, 0x2e,
82047 + 0x52, 0xff, 0x0c, 0x7e, 0x0f, 0xaa, 0x7b, 0xfa, 0x96, 0x0b, 0x99, 0x71,
82048 + 0xe0, 0x7a, 0xb1, 0x4e, 0x65, 0x1e, 0x37, 0xfd, 0x7c, 0x06, 0xe3, 0x5d,
82049 + 0xc5, 0xd8, 0x31, 0xc8, 0x48, 0x20, 0x8f, 0xf8, 0x27, 0xe5, 0x73, 0xfe,
82050 + 0x7e, 0x19, 0xeb, 0x8d, 0x95, 0x63, 0x59, 0xce, 0x9f, 0x7a, 0x6a, 0xb7,
82051 + 0xf9, 0x87, 0xf3, 0xe6, 0x9c, 0xa1, 0x5b, 0x97, 0xf6, 0x6a, 0xdc, 0x6d,
82052 + 0x7f, 0x39, 0xaa, 0x69, 0xb1, 0x64, 0x60, 0x88, 0xfd, 0x65, 0x25, 0x72,
82053 + 0x76, 0xc8, 0xcd, 0xd8, 0x23, 0xf0, 0x52, 0xd2, 0xf8, 0x9d, 0x84, 0xfc,
82054 + 0x79, 0xa7, 0x07, 0xec, 0xdb, 0x40, 0x13, 0xde, 0xd5, 0x39, 0x0e, 0xec,
82055 + 0xe9, 0x3d, 0xaf, 0x62, 0x6e, 0x65, 0x69, 0xbf, 0x27, 0x2b, 0x37, 0x1a,
82056 + 0xbc, 0x86, 0x3d, 0xba, 0x30, 0x29, 0xff, 0x5c, 0xbd, 0x2a, 0x4f, 0x54,
82057 + 0x27, 0xe5, 0x0d, 0x94, 0x8b, 0xd5, 0x32, 0xf8, 0xc8, 0x58, 0x3c, 0xfb,
82058 + 0x08, 0xb0, 0x2e, 0x83, 0xf0, 0x8d, 0x3e, 0x98, 0x98, 0xc3, 0xfa, 0xcd,
82059 + 0xb8, 0x81, 0x9c, 0xf3, 0xcb, 0x72, 0x6e, 0x1c, 0x6d, 0x6a, 0x1d, 0x12,
82060 + 0x7d, 0x96, 0xf3, 0xed, 0x96, 0x02, 0x2c, 0x7a, 0x31, 0x43, 0x9d, 0xd9,
82061 + 0x29, 0x85, 0x5a, 0xab, 0xdc, 0x51, 0xde, 0xde, 0xb6, 0xea, 0xdb, 0x3a,
82062 + 0x60, 0xd3, 0xfa, 0x66, 0x83, 0x36, 0x78, 0x37, 0x7b, 0xaa, 0xe5, 0xae,
82063 + 0x5e, 0xa3, 0x4d, 0xdd, 0x91, 0xbd, 0x3a, 0xfc, 0xb9, 0x7a, 0xf5, 0xba,
82064 + 0x91, 0x3f, 0x25, 0xb7, 0x58, 0x17, 0x62, 0xf1, 0x9f, 0x08, 0xb0, 0x1f,
82065 + 0x78, 0x14, 0xc6, 0x09, 0xb5, 0x7f, 0x54, 0x03, 0xad, 0x85, 0x38, 0x71,
82066 + 0x06, 0xac, 0x5b, 0xed, 0x0b, 0x8a, 0x57, 0xde, 0xd9, 0x7e, 0xa9, 0x2e,
82067 + 0x93, 0xbf, 0x29, 0xd7, 0xb6, 0x95, 0x4f, 0x02, 0xbe, 0x7a, 0x58, 0x9f,
82068 + 0xf0, 0x7d, 0x0a, 0x7e, 0xd2, 0x49, 0x71, 0xc7, 0x3a, 0x31, 0x27, 0x5e,
82069 + 0x8b, 0x4c, 0x5f, 0x6c, 0xc5, 0x91, 0xa1, 0x9d, 0x68, 0x83, 0x3f, 0x1e,
82070 + 0xc5, 0x5a, 0x76, 0xc1, 0x9f, 0x86, 0x9f, 0x0a, 0x39, 0xfa, 0x33, 0x60,
82071 + 0xaf, 0xd3, 0xca, 0xb7, 0xe6, 0x9e, 0xea, 0x9e, 0x1a, 0x58, 0x67, 0xb9,
82072 + 0x77, 0x2a, 0x5d, 0x63, 0x19, 0x9f, 0xd2, 0xbe, 0x64, 0x62, 0x4a, 0xc7,
82073 + 0xed, 0x93, 0x53, 0x07, 0x54, 0xe9, 0x4d, 0x0d, 0xab, 0x72, 0x78, 0x6a,
82074 + 0x27, 0x66, 0x42, 0x9e, 0x8a, 0x95, 0xcf, 0x64, 0xa4, 0x58, 0x21, 0x8d,
82075 + 0xe2, 0x1c, 0x83, 0x3c, 0xcd, 0x01, 0xcb, 0xe4, 0x2b, 0xbe, 0x9c, 0xda,
82076 + 0xc8, 0x82, 0x66, 0xe8, 0x99, 0xac, 0x8f, 0x52, 0xcc, 0x5f, 0xd8, 0xb6,
82077 + 0x8d, 0x31, 0x32, 0xae, 0x99, 0xf1, 0x33, 0x7d, 0xfa, 0x99, 0xcd, 0x7f,
82078 + 0xec, 0x0f, 0xb2, 0x49, 0xfb, 0xf9, 0x0b, 0xf8, 0xc6, 0xe2, 0x94, 0x32,
82079 + 0x6c, 0xeb, 0xc3, 0x07, 0x17, 0xd9, 0x5a, 0x91, 0x58, 0x2c, 0xfb, 0x1d,
82080 + 0x89, 0x3d, 0x1d, 0x04, 0x3f, 0xf0, 0x53, 0x47, 0xca, 0x02, 0x5e, 0x59,
82081 + 0x78, 0xbe, 0xce, 0x77, 0xd4, 0x4d, 0x23, 0xee, 0x0d, 0xc8, 0x5c, 0xee,
82082 + 0xa8, 0xc8, 0x2b, 0x78, 0x56, 0x5f, 0xe1, 0x1a, 0x7c, 0x17, 0x6b, 0x60,
82083 + 0xd6, 0x44, 0x3d, 0x63, 0x3d, 0xf8, 0x58, 0x71, 0xce, 0x63, 0xc4, 0x6d,
82084 + 0x47, 0xfb, 0xda, 0x3a, 0xdb, 0xa4, 0xc6, 0x79, 0xe4, 0xf5, 0xca, 0xba,
82085 + 0x9e, 0xdf, 0xe1, 0xcc, 0xb0, 0x5c, 0xae, 0xa8, 0x3e, 0x20, 0xeb, 0xbf,
82086 + 0x44, 0x9b, 0x4d, 0xc8, 0x2d, 0x63, 0x53, 0x59, 0x99, 0x07, 0x4e, 0x9b,
82087 + 0xaf, 0xa4, 0x21, 0x3b, 0x8e, 0xcc, 0x24, 0x48, 0xb6, 0x27, 0x5b, 0x95,
82088 + 0x37, 0xdb, 0x88, 0x85, 0xf3, 0x1e, 0xaf, 0xc7, 0x51, 0x67, 0x5a, 0x88,
82089 + 0xb7, 0xf2, 0x19, 0xce, 0xa9, 0x99, 0x17, 0xfa, 0xaf, 0x84, 0xb5, 0x30,
82090 + 0x73, 0x54, 0x7f, 0x7a, 0x1c, 0xb4, 0x37, 0xe3, 0x14, 0x01, 0x53, 0xe0,
82091 + 0x6b, 0x4a, 0xfa, 0x82, 0xe3, 0xe4, 0x2b, 0x8e, 0x0c, 0x5c, 0xc0, 0xb6,
82092 + 0xca, 0x1a, 0x5e, 0x34, 0x42, 0x59, 0x0b, 0x31, 0x10, 0x65, 0x8b, 0x3c,
82093 + 0x48, 0x95, 0x37, 0xc1, 0xec, 0xde, 0xec, 0x35, 0x79, 0x74, 0x55, 0xcf,
82094 + 0xd9, 0x3e, 0x2f, 0x3c, 0x0b, 0x91, 0x1b, 0x2b, 0x29, 0xff, 0x3a, 0xf4,
82095 + 0x7d, 0x21, 0xee, 0x43, 0x56, 0xfe, 0x4b, 0x1b, 0xf6, 0xf4, 0x78, 0xce,
82096 + 0xde, 0xdf, 0xae, 0x6d, 0xac, 0x83, 0x3d, 0x01, 0xac, 0x59, 0xc9, 0xa1,
82097 + 0x4d, 0xbb, 0xfc, 0x5b, 0x07, 0xd7, 0xc4, 0x9e, 0x78, 0x66, 0xec, 0x22,
82098 + 0xae, 0x75, 0x7f, 0xf3, 0x98, 0x87, 0x8e, 0x03, 0x5b, 0xf2, 0x28, 0x2c,
82099 + 0x88, 0xa0, 0xff, 0x01, 0x33, 0xd6, 0xc0, 0xf9, 0x50, 0x36, 0x40, 0xf7,
82100 + 0x6a, 0x16, 0xf8, 0xdd, 0x31, 0x7e, 0x2b, 0x75, 0x8c, 0xec, 0xe2, 0xf7,
82101 + 0x34, 0xc7, 0x5e, 0x63, 0x2a, 0x4e, 0x47, 0x2c, 0x47, 0xd9, 0x3a, 0x62,
82102 + 0x64, 0xeb, 0x33, 0x90, 0xad, 0xe3, 0x4a, 0xb6, 0x02, 0xf9, 0x81, 0xef,
82103 + 0xcb, 0x97, 0x77, 0x95, 0xaf, 0xd6, 0xbf, 0x2e, 0xd0, 0xcb, 0x5f, 0x9f,
82104 + 0x2c, 0xfc, 0x05, 0xc6, 0xbd, 0xe0, 0xe2, 0x3a, 0x95, 0x9b, 0x11, 0xf2,
82105 + 0x31, 0x81, 0xeb, 0x18, 0xca, 0x7e, 0x55, 0x67, 0xe0, 0x02, 0xec, 0x1a,
82106 + 0xe4, 0x8d, 0xfc, 0x9d, 0x87, 0x8d, 0x1b, 0xb8, 0x10, 0x85, 0x2d, 0xe4,
82107 + 0x9e, 0x95, 0x5e, 0x1b, 0xba, 0x81, 0xf5, 0xeb, 0xd8, 0x3b, 0x03, 0x17,
82108 + 0xba, 0x50, 0x26, 0x55, 0x5f, 0xf5, 0x8a, 0xa7, 0xda, 0xd7, 0x2b, 0xc3,
82109 + 0xaa, 0x5d, 0xbd, 0x32, 0x8a, 0x12, 0xfa, 0x3d, 0xe3, 0xcb, 0xd0, 0x85,
82110 + 0x8c, 0x24, 0x2f, 0x58, 0x52, 0x9a, 0x0e, 0x82, 0x18, 0x68, 0x1f, 0xbe,
82111 + 0xd0, 0x23, 0xd7, 0xa7, 0x39, 0x37, 0xea, 0x62, 0xb1, 0x16, 0x33, 0xd3,
82112 + 0xd8, 0x9b, 0xe4, 0x1f, 0xb0, 0xfe, 0x85, 0x22, 0x6c, 0x6e, 0x51, 0x4e,
82113 + 0xad, 0x90, 0x3f, 0x8c, 0xb5, 0x6f, 0x25, 0x22, 0x92, 0x82, 0x2e, 0x3b,
82114 + 0x2a, 0x73, 0xd5, 0x76, 0xe8, 0x32, 0xc7, 0xad, 0xcb, 0x13, 0x58, 0xa3,
82115 + 0x41, 0xca, 0x03, 0xf8, 0x92, 0x45, 0xdf, 0x45, 0x29, 0xa0, 0x4d, 0x71,
82116 + 0x65, 0xa7, 0x7e, 0x49, 0xda, 0xb1, 0xa7, 0x8e, 0xca, 0xb1, 0x2a, 0xfb,
82117 + 0x71, 0xdc, 0x79, 0x39, 0x00, 0x19, 0xf2, 0xdc, 0x09, 0xf4, 0x03, 0x1b,
82118 + 0xd9, 0xf4, 0xc7, 0xfd, 0x97, 0x7b, 0x0f, 0x99, 0x0c, 0xf7, 0x5d, 0xac,
82119 + 0xdc, 0x96, 0x9d, 0xb6, 0xb6, 0x32, 0xe2, 0xcc, 0x66, 0x1e, 0xb2, 0x5e,
82120 + 0xc9, 0x64, 0xac, 0x2b, 0x99, 0x9c, 0x75, 0x35, 0x53, 0xb4, 0xae, 0xc1,
82121 + 0x36, 0xd5, 0x37, 0xde, 0x81, 0xfc, 0x00, 0x4f, 0x10, 0x7b, 0x6f, 0xaf,
82122 + 0x61, 0xdc, 0xf8, 0x39, 0x6f, 0xc9, 0xb9, 0x0a, 0xed, 0x74, 0x70, 0x68,
82123 + 0xd6, 0x2f, 0xdf, 0x0e, 0xfa, 0x40, 0x07, 0xe3, 0x11, 0x3b, 0xb6, 0x23,
82124 + 0x9a, 0x1d, 0x06, 0x4e, 0xa0, 0xed, 0xe8, 0xa2, 0xed, 0xf0, 0x0b, 0xb2,
82125 + 0x57, 0xb6, 0xaa, 0x3a, 0x2e, 0x97, 0x07, 0x6e, 0xda, 0xaa, 0xc5, 0xe5,
82126 + 0xcb, 0xcb, 0xa1, 0x2c, 0x71, 0xbe, 0xf3, 0xef, 0xeb, 0x90, 0x88, 0x1c,
82127 + 0x51, 0xf6, 0xba, 0x5b, 0x2e, 0xaf, 0x03, 0xd3, 0x02, 0x81, 0xd8, 0x77,
82128 + 0x32, 0xce, 0x63, 0xab, 0xf8, 0x85, 0xf4, 0xf0, 0x3c, 0xf0, 0x1f, 0xc0,
82129 + 0x2b, 0x9e, 0xd9, 0x61, 0x9e, 0x3d, 0x9c, 0x51, 0x78, 0x3f, 0x8a, 0x3d,
82130 + 0xc9, 0x6b, 0x4b, 0x0a, 0xc0, 0xed, 0x5b, 0x15, 0x96, 0x09, 0x94, 0x26,
82131 + 0x56, 0x0f, 0x5d, 0x10, 0xc9, 0xfe, 0xa3, 0x7a, 0xdf, 0xee, 0x89, 0x35,
82132 + 0x0b, 0x3b, 0x5c, 0x5a, 0xa1, 0x4c, 0xa3, 0x5c, 0xd7, 0x63, 0x17, 0x7c,
82133 + 0x60, 0xe6, 0xd1, 0x0e, 0xda, 0x37, 0xe0, 0x27, 0xec, 0x7b, 0x85, 0xed,
82134 + 0x33, 0xd8, 0x73, 0x3f, 0x68, 0xa7, 0x6d, 0x3f, 0xec, 0x8f, 0xcb, 0xb5,
82135 + 0x0a, 0xaf, 0xf9, 0x3e, 0xe5, 0x8b, 0x8a, 0x1b, 0xc7, 0xa6, 0x16, 0x3d,
82136 + 0xdf, 0xec, 0x31, 0x15, 0xd3, 0xb1, 0x3e, 0x06, 0xcc, 0x38, 0x70, 0xa6,
82137 + 0x4d, 0xd2, 0x4f, 0xdb, 0x7d, 0xfa, 0x7c, 0xe5, 0x90, 0x14, 0xfd, 0x03,
82138 + 0x98, 0xc3, 0x3e, 0x99, 0x87, 0x2f, 0xb6, 0xb0, 0x31, 0x2c, 0xf3, 0xc3,
82139 + 0xf0, 0xb9, 0xdd, 0xbb, 0x89, 0xd5, 0xf0, 0xeb, 0xc0, 0xf3, 0x41, 0x94,
82140 + 0xed, 0x28, 0x6f, 0x97, 0xf9, 0xa7, 0xba, 0x63, 0xba, 0xbf, 0x68, 0xcb,
82141 + 0xfd, 0xb3, 0x1c, 0x3b, 0x99, 0xb4, 0x7e, 0x15, 0x2e, 0x6c, 0xc6, 0x84,
82142 + 0xa4, 0x23, 0x2a, 0xde, 0x93, 0x5d, 0x32, 0x78, 0xc6, 0x95, 0xa1, 0x33,
82143 + 0x09, 0x39, 0x70, 0xa6, 0x5f, 0x86, 0xcf, 0x24, 0xe5, 0xce, 0x33, 0x21,
82144 + 0xfe, 0xea, 0x9e, 0x4a, 0x1b, 0x5b, 0xe1, 0xfd, 0x9a, 0xb6, 0xe2, 0xce,
82145 + 0x86, 0xc6, 0xa8, 0xf3, 0x6b, 0xc4, 0x74, 0xaf, 0x62, 0xef, 0x6e, 0xaa,
82146 + 0xf3, 0xca, 0x4b, 0x1b, 0x41, 0x70, 0xc9, 0x6f, 0x77, 0xa7, 0x85, 0xfc,
82147 + 0xce, 0x00, 0x9f, 0xf9, 0xd0, 0x61, 0xa3, 0xd0, 0x61, 0xe3, 0xca, 0x36,
82148 + 0xd6, 0xbf, 0x2e, 0xd6, 0xb1, 0xcc, 0x03, 0xb2, 0x06, 0xd9, 0x7e, 0xd0,
82149 + 0x4f, 0x7d, 0x75, 0x53, 0xf1, 0x47, 0x62, 0x3d, 0xd0, 0x67, 0x77, 0xaf,
82150 + 0xb6, 0xcb, 0x1b, 0xf1, 0x20, 0x38, 0x0b, 0x1d, 0x50, 0xaf, 0x68, 0xf9,
82151 + 0xcd, 0x7b, 0xd4, 0x05, 0x0f, 0x61, 0xfe, 0xa3, 0x78, 0x96, 0x33, 0xba,
82152 + 0xbd, 0x43, 0x6e, 0xc4, 0x13, 0xb2, 0x7e, 0x60, 0xbc, 0xa5, 0x5e, 0x06,
82153 + 0xf7, 0xc0, 0x3d, 0x8d, 0xdf, 0x23, 0xbf, 0xf0, 0xdc, 0x95, 0x73, 0xf0,
82154 + 0x99, 0xcf, 0x1f, 0x48, 0x8d, 0x27, 0x6d, 0xea, 0xc3, 0xa4, 0xd4, 0xbe,
82155 + 0x9e, 0x90, 0xb5, 0x65, 0x6d, 0x97, 0x66, 0xbd, 0x71, 0x29, 0x00, 0xfb,
82156 + 0xae, 0x2d, 0x67, 0x51, 0xb2, 0x7e, 0xa8, 0x73, 0xb4, 0x5c, 0x16, 0x33,
82157 + 0x79, 0xec, 0x63, 0xee, 0x0f, 0x6d, 0x77, 0x6c, 0xbb, 0x1d, 0x72, 0xc4,
82158 + 0x3d, 0xf1, 0x30, 0x9e, 0xe7, 0xb1, 0xaf, 0x69, 0xc7, 0xd3, 0x90, 0xaf,
82159 + 0xcf, 0xc6, 0x28, 0x1f, 0x05, 0x9f, 0xf8, 0x9a, 0x6d, 0x52, 0x89, 0x34,
82160 + 0x9e, 0x4f, 0x4b, 0x5a, 0x9d, 0x0b, 0xcd, 0xfa, 0x61, 0x7f, 0x59, 0xa3,
82161 + 0x17, 0x22, 0x8c, 0x81, 0xe1, 0xef, 0x64, 0x8c, 0xf2, 0x18, 0xf1, 0xc2,
82162 + 0xe7, 0x23, 0xb0, 0x3d, 0x51, 0x35, 0xc6, 0xfc, 0x32, 0x9f, 0xa5, 0x5d,
82163 + 0xb6, 0x2f, 0xf8, 0xbc, 0x17, 0xf9, 0x44, 0x83, 0xf1, 0x9a, 0x98, 0x3c,
82164 + 0xda, 0xe8, 0x02, 0xbd, 0x6d, 0xbf, 0xc2, 0xf6, 0xec, 0xec, 0x73, 0x3b,
82165 + 0xbb, 0x95, 0x70, 0x95, 0x6e, 0xa1, 0x1e, 0xa1, 0x0e, 0x69, 0x17, 0x67,
82166 + 0x8c, 0xfb, 0x0c, 0x6b, 0xb2, 0x8c, 0x35, 0x5a, 0xc6, 0x1a, 0x2d, 0x63,
82167 + 0x8d, 0x96, 0xb1, 0x7e, 0xcb, 0xd4, 0x2d, 0x83, 0xd8, 0xcf, 0x39, 0x73,
82168 + 0x86, 0x40, 0xfd, 0xf2, 0x1c, 0xd6, 0x76, 0x5a, 0xfe, 0x76, 0x63, 0x52,
82169 + 0xfe, 0xf3, 0xc6, 0x11, 0xe0, 0xee, 0x22, 0xd6, 0x35, 0x87, 0x75, 0xcd,
82170 + 0x62, 0x5d, 0x8f, 0x62, 0x5d, 0xc7, 0x55, 0xcc, 0xb3, 0x5a, 0x49, 0x5d,
82171 + 0x2a, 0x2b, 0x8c, 0xff, 0x16, 0xe4, 0x61, 0x4c, 0x9c, 0xd5, 0x7e, 0xe8,
82172 + 0x8b, 0x72, 0x10, 0xf7, 0x82, 0x43, 0xc0, 0xd6, 0x18, 0xbb, 0x9c, 0x72,
82173 + 0x94, 0xee, 0xf3, 0xdc, 0xcf, 0x63, 0xaf, 0xbc, 0x2f, 0x9b, 0xaa, 0x52,
82174 + 0x75, 0x9d, 0xab, 0x0e, 0x4b, 0xe9, 0x22, 0xea, 0x9f, 0xed, 0x02, 0xad,
82175 + 0xc4, 0x7c, 0xa9, 0xd3, 0x25, 0xd9, 0x84, 0xbe, 0xcb, 0x81, 0xc6, 0x0f,
82176 + 0xc9, 0x7c, 0x3c, 0xf5, 0x9c, 0xc8, 0xb8, 0xdc, 0x03, 0x3f, 0x9d, 0xf1,
82177 + 0xcc, 0x9c, 0x8a, 0xb1, 0xe1, 0xfa, 0x62, 0x16, 0xfe, 0x36, 0x6d, 0xec,
82178 + 0x3e, 0xe3, 0x87, 0x6b, 0x1c, 0x5b, 0x13, 0x8e, 0xcb, 0xf1, 0xfe, 0x58,
82179 + 0xe6, 0x80, 0x15, 0xe1, 0xeb, 0x03, 0x8b, 0x78, 0x09, 0x8c, 0x19, 0x9b,
82180 + 0xbd, 0xe8, 0xc6, 0xe6, 0x2e, 0xb2, 0x9f, 0x98, 0x44, 0x96, 0xa8, 0xb3,
82181 + 0xd8, 0x0f, 0x74, 0x3b, 0xfa, 0x4e, 0xab, 0x33, 0xb3, 0x11, 0xb4, 0xfb,
82182 + 0x5d, 0xe0, 0x4c, 0xcd, 0xc7, 0xfc, 0x59, 0x6d, 0xf7, 0xf2, 0xf5, 0x66,
82183 + 0xac, 0x07, 0xdd, 0x02, 0xbb, 0x98, 0xab, 0x6b, 0xdc, 0x56, 0x54, 0xb8,
82184 + 0x4e, 0x63, 0xba, 0xa3, 0x72, 0xa8, 0x43, 0x3a, 0x3d, 0x35, 0x9f, 0xc8,
82185 + 0xd9, 0x4d, 0xe2, 0x58, 0x8c, 0xc1, 0x36, 0xd1, 0x26, 0xba, 0x33, 0xb0,
82186 + 0xa7, 0xb7, 0x77, 0x50, 0x66, 0x3e, 0x09, 0xdc, 0x38, 0xb0, 0xa4, 0xcf,
82187 + 0x98, 0x06, 0x2e, 0xfa, 0x98, 0x8f, 0xf4, 0x31, 0xb2, 0x69, 0x63, 0x0e,
82188 + 0x1f, 0x55, 0x76, 0x79, 0x0c, 0xb6, 0xd8, 0x85, 0xac, 0x53, 0xe7, 0xf4,
82189 + 0x61, 0xff, 0xf0, 0x9e, 0xba, 0x87, 0x7a, 0x8c, 0x32, 0x13, 0x07, 0x6e,
82190 + 0x82, 0xfe, 0xe9, 0xee, 0x97, 0xda, 0x06, 0xdf, 0xf5, 0x2b, 0x1d, 0xed,
82191 + 0x60, 0x0d, 0x16, 0x2b, 0xc1, 0xa1, 0xbc, 0x5f, 0x86, 0x16, 0x25, 0xcf,
82192 + 0xc9, 0x0f, 0xf2, 0x7d, 0x14, 0xb4, 0x91, 0xc7, 0xdd, 0x65, 0x7d, 0x6e,
82193 + 0xb9, 0x57, 0x4a, 0x55, 0xea, 0x69, 0x94, 0xb5, 0xbd, 0xf0, 0x9d, 0x5c,
82194 + 0x85, 0x65, 0x73, 0xd3, 0x9c, 0x7b, 0xac, 0xec, 0x42, 0x6e, 0xdd, 0x83,
82195 + 0x93, 0x2a, 0xa6, 0x72, 0x79, 0x29, 0xe5, 0xd7, 0x6c, 0x8c, 0x09, 0x9d,
82196 + 0x69, 0x9f, 0x1f, 0x93, 0xb9, 0x95, 0x6e, 0x19, 0x5c, 0xe5, 0xf9, 0xf2,
82197 + 0x50, 0x4c, 0xba, 0x83, 0xe0, 0x9c, 0x9f, 0x57, 0xb1, 0xc7, 0x81, 0x55,
82198 + 0x60, 0x82, 0xa3, 0x9a, 0x77, 0x9c, 0x2f, 0x74, 0xc4, 0xbf, 0x82, 0x8f,
82199 + 0xef, 0x8e, 0x8f, 0x8b, 0xbb, 0xe0, 0xe3, 0x57, 0x2f, 0x42, 0xfe, 0x96,
82200 + 0x21, 0x9b, 0xcb, 0x90, 0xcd, 0x65, 0xc8, 0xe6, 0x32, 0x64, 0x73, 0x19,
82201 + 0xb2, 0x89, 0xfd, 0xf3, 0xfc, 0xf2, 0xb8, 0xc1, 0x1f, 0x9f, 0x82, 0x2c,
82202 + 0x7f, 0xdb, 0xe0, 0x8f, 0x51, 0xc8, 0x70, 0x12, 0xb2, 0xeb, 0x43, 0x6e,
82203 + 0x87, 0x21, 0xcb, 0x1e, 0x64, 0xb9, 0x1f, 0x72, 0x9c, 0x50, 0xfe, 0xe3,
82204 + 0x04, 0xb0, 0xe8, 0x83, 0xf0, 0x41, 0xce, 0x57, 0xfb, 0x65, 0x51, 0xd1,
82205 + 0x12, 0xc8, 0x96, 0xbf, 0x49, 0x1e, 0x62, 0x5f, 0xd0, 0x3f, 0x77, 0xe5,
82206 + 0xfc, 0x5a, 0x48, 0xdb, 0xab, 0xf2, 0xcd, 0xca, 0x6b, 0xf2, 0x42, 0x85,
82207 + 0x34, 0xe6, 0x64, 0x11, 0xef, 0xd6, 0x9e, 0xa2, 0x1f, 0xa9, 0xe8, 0x83,
82208 + 0xcc, 0x9d, 0x94, 0xff, 0x03, 0x5e, 0xae, 0x6f, 0x7c, 0x58, 0x3e, 0xe7,
82209 + 0x52, 0x86, 0xe3, 0xd0, 0x35, 0xb8, 0x3f, 0x40, 0xbd, 0x04, 0x3f, 0xb4,
82210 + 0x92, 0x2a, 0x97, 0xa0, 0x27, 0xaa, 0xf6, 0x08, 0x30, 0x58, 0x39, 0xe8,
82211 + 0xa1, 0x0e, 0xab, 0x7a, 0xee, 0x80, 0x4d, 0xde, 0xec, 0x87, 0xbc, 0xa4,
82212 + 0xbe, 0x0a, 0xe1, 0xc5, 0x33, 0xda, 0x73, 0x94, 0x35, 0xe8, 0xcf, 0xa7,
82213 + 0xc8, 0x47, 0xfa, 0xb5, 0xb8, 0x56, 0xba, 0xf7, 0x27, 0x2a, 0x7e, 0x5c,
82214 + 0x9a, 0x86, 0x2f, 0xbf, 0x46, 0x3e, 0x41, 0x56, 0x9e, 0x22, 0x1f, 0x49,
82215 + 0x9f, 0xe6, 0xe3, 0x23, 0x12, 0xf2, 0x90, 0xef, 0x5a, 0x79, 0x08, 0x27,
82216 + 0xaa, 0x33, 0x8e, 0xb9, 0x7f, 0x2d, 0x66, 0x62, 0xc8, 0xc6, 0x26, 0xbf,
82217 + 0x2a, 0xd3, 0x0d, 0xce, 0xc7, 0x92, 0xdb, 0xbc, 0xab, 0xf0, 0xa9, 0x38,
82218 + 0xf6, 0xab, 0xc1, 0xa3, 0x71, 0xce, 0x81, 0xeb, 0xba, 0x47, 0xea, 0x7d,
82219 + 0xbe, 0x89, 0xaf, 0xfc, 0x2a, 0x5b, 0xc4, 0x7a, 0xe0, 0x3b, 0xf4, 0xcb,
82220 + 0x0b, 0xcb, 0xe0, 0x37, 0xfc, 0xae, 0x6f, 0xc0, 0xef, 0x62, 0x9c, 0x53,
82221 + 0xaf, 0xcf, 0xb8, 0x89, 0xd9, 0xb6, 0xc6, 0x6a, 0x93, 0x58, 0x23, 0xfa,
82222 + 0xed, 0xa9, 0xf2, 0x75, 0xe8, 0xc1, 0xe7, 0x7d, 0xc6, 0xf8, 0x02, 0xf9,
82223 + 0xef, 0x7e, 0xb3, 0xa6, 0x53, 0xf1, 0x6d, 0x79, 0x04, 0xba, 0xf1, 0x51,
82224 + 0xe8, 0xc6, 0x4f, 0xdc, 0x92, 0xe7, 0x43, 0x79, 0xbb, 0x7f, 0x6a, 0x76,
82225 + 0x65, 0xb0, 0x1c, 0xb1, 0xfb, 0x31, 0xa7, 0xe6, 0xb6, 0x8c, 0xf1, 0x25,
82226 + 0x4d, 0x2c, 0xb6, 0x19, 0xb3, 0x86, 0xf1, 0x56, 0xca, 0x74, 0x20, 0xd7,
82227 + 0xfc, 0x72, 0x57, 0x44, 0x9d, 0x3f, 0x7b, 0xb4, 0x13, 0xbb, 0xfc, 0xbd,
82228 + 0xd8, 0xa1, 0xed, 0xf3, 0x5b, 0x46, 0xc6, 0x76, 0x72, 0x99, 0x26, 0x32,
82229 + 0xe1, 0x99, 0x73, 0x37, 0x6c, 0x1e, 0xf7, 0x6d, 0x2a, 0x99, 0xc3, 0xde,
82230 + 0x9e, 0xdf, 0xa0, 0x5d, 0x20, 0x9e, 0x6c, 0x63, 0x4c, 0x6f, 0xa6, 0x3d,
82231 + 0xcb, 0xd8, 0x41, 0x37, 0xfc, 0x97, 0xd7, 0xe5, 0xdc, 0xca, 0x3f, 0x75,
82232 + 0xe8, 0xfd, 0xa4, 0x73, 0xcf, 0xec, 0x8b, 0xad, 0x71, 0x54, 0xbd, 0x46,
82233 + 0x85, 0x4c, 0x37, 0x30, 0x0c, 0xfd, 0xa5, 0x6b, 0xca, 0x5f, 0x3a, 0xec,
82234 + 0x3b, 0xb2, 0x19, 0x67, 0x9f, 0xaf, 0xcb, 0xb1, 0x95, 0xe1, 0x4e, 0xc6,
82235 + 0x2b, 0x17, 0x97, 0x0f, 0xc8, 0x96, 0xd2, 0x65, 0x0f, 0xa3, 0x6e, 0x16,
82236 + 0x7b, 0x36, 0x08, 0x26, 0xfc, 0xb4, 0x7b, 0x5e, 0x46, 0x12, 0xe7, 0xc1,
82237 + 0xd3, 0x3f, 0x43, 0x1b, 0xf8, 0xd4, 0x41, 0x11, 0xcf, 0xae, 0xc2, 0x6f,
82238 + 0xbf, 0x21, 0xbc, 0x1e, 0x71, 0x4f, 0x43, 0x18, 0x72, 0x6e, 0xda, 0x7d,
82239 + 0x4b, 0x42, 0xdb, 0x45, 0x3b, 0xc5, 0x33, 0xeb, 0x3e, 0x29, 0xac, 0x6b,
82240 + 0x5a, 0xe7, 0x41, 0xeb, 0xa9, 0x15, 0x8e, 0xc1, 0x79, 0x91, 0xde, 0x7f,
82241 + 0xe2, 0x19, 0x07, 0xe6, 0xf2, 0x41, 0x60, 0x59, 0xe2, 0x28, 0x1d, 0x8b,
82242 + 0x28, 0xa0, 0x8d, 0xc2, 0x5a, 0x3e, 0xcf, 0x2b, 0xc9, 0xc7, 0x2f, 0xc2,
82243 + 0x6f, 0x88, 0x43, 0x8e, 0xf1, 0x7c, 0xbd, 0x39, 0xe6, 0xcb, 0xfa, 0xfa,
82244 + 0x1c, 0xed, 0x92, 0xf2, 0x11, 0xf2, 0xc0, 0x85, 0x93, 0xa8, 0xcb, 0x78,
82245 + 0x67, 0x10, 0x1c, 0xf7, 0xe1, 0xc7, 0x3f, 0x45, 0xd9, 0xbb, 0x53, 0x4a,
82246 + 0xca, 0xe7, 0x20, 0x86, 0x65, 0xfe, 0xc6, 0x96, 0x1b, 0xc3, 0xfe, 0x9c,
82247 + 0x86, 0x6d, 0xcb, 0xc3, 0xb6, 0x45, 0xee, 0x3e, 0x02, 0x3c, 0xab, 0xce,
82248 + 0xd9, 0x60, 0x3f, 0x39, 0xee, 0xc3, 0xd6, 0xdf, 0x67, 0x46, 0x81, 0x6f,
82249 + 0x1f, 0x00, 0xbe, 0x65, 0x1e, 0x59, 0x1e, 0x18, 0x97, 0xf8, 0xd6, 0x95,
82250 + 0xbf, 0xda, 0xc8, 0x43, 0xb7, 0x4d, 0x74, 0x52, 0x17, 0x1f, 0xd9, 0xb6,
82251 + 0xd3, 0x45, 0x63, 0xc7, 0xf7, 0x49, 0x41, 0x9d, 0xbb, 0x15, 0x95, 0xbd,
82252 + 0x9f, 0x5f, 0x27, 0xae, 0x87, 0xed, 0x5f, 0x87, 0xef, 0x57, 0xa1, 0x8f,
82253 + 0x96, 0xc3, 0xfd, 0x03, 0xb8, 0x7f, 0x08, 0xe5, 0x11, 0x94, 0xda, 0xf7,
82254 + 0xb9, 0xb4, 0x1c, 0xe9, 0xd4, 0x31, 0xde, 0x44, 0x93, 0xff, 0x43, 0x39,
82255 + 0x8c, 0x4f, 0xcd, 0x56, 0xc3, 0x38, 0xfd, 0x21, 0x39, 0xee, 0xeb, 0xb3,
82256 + 0xf5, 0x09, 0xf8, 0xeb, 0x9d, 0xc0, 0x60, 0x0f, 0x3d, 0x0d, 0x9b, 0x71,
82257 + 0xdf, 0x21, 0xb1, 0xef, 0xb3, 0x64, 0x76, 0x14, 0x74, 0x8f, 0x0e, 0x42,
82258 + 0x3f, 0xf7, 0xc3, 0xdf, 0x56, 0x7e, 0xb0, 0xc1, 0x9c, 0xd4, 0xfb, 0x71,
82259 + 0xf9, 0xf3, 0x8d, 0x10, 0x7b, 0xb6, 0x01, 0xa7, 0x32, 0x56, 0x98, 0x54,
82260 + 0xb8, 0xd9, 0xbe, 0x8d, 0xeb, 0xdf, 0x25, 0xf9, 0xdb, 0xc8, 0x53, 0x3e,
82261 + 0x03, 0xa6, 0x51, 0xd7, 0x71, 0x49, 0x9f, 0xe1, 0xba, 0xb5, 0x9b, 0x18,
82262 + 0x2f, 0x6d, 0x06, 0xcb, 0xbf, 0xec, 0xdc, 0xc6, 0x96, 0x8c, 0x01, 0x59,
82263 + 0xe3, 0x9d, 0x3b, 0x79, 0x69, 0xa1, 0xdc, 0x87, 0xf9, 0x04, 0x94, 0xff,
82264 + 0x4b, 0xa0, 0x9f, 0xf6, 0x9e, 0xb6, 0xc1, 0xb5, 0xa2, 0x07, 0x89, 0x05,
82265 + 0x22, 0xd2, 0xe6, 0x71, 0x9f, 0xd2, 0x4e, 0x1d, 0xc1, 0x9c, 0x88, 0x0d,
82266 + 0x3e, 0xdf, 0x2d, 0xdd, 0xc4, 0x07, 0x49, 0x3c, 0xbb, 0x8e, 0x7a, 0xbc,
82267 + 0x67, 0x3d, 0xf8, 0x52, 0xcb, 0x62, 0x45, 0x0e, 0xce, 0x41, 0xae, 0x3d,
82268 + 0x5c, 0x1f, 0x47, 0x39, 0x8c, 0xf2, 0x71, 0x94, 0xd4, 0x4f, 0x57, 0x65,
82269 + 0x56, 0xc7, 0x7f, 0x14, 0x0e, 0xa1, 0xed, 0x9c, 0xf6, 0xa9, 0x53, 0x4f,
82270 + 0x8a, 0x3d, 0xf6, 0x41, 0x3c, 0xa3, 0x1f, 0x8f, 0x91, 0xee, 0xff, 0x82,
82271 + 0x89, 0x3f, 0x6d, 0xc7, 0xac, 0x8c, 0x4e, 0x5e, 0x51, 0x31, 0xfc, 0xf5,
82272 + 0xa7, 0xe8, 0x23, 0xff, 0x54, 0x1e, 0xbd, 0x29, 0xb6, 0xb7, 0x1d, 0xcb,
82273 + 0x1a, 0x2f, 0x28, 0x5d, 0x4c, 0x7e, 0x40, 0x0f, 0xbb, 0x19, 0xf9, 0xfa,
82274 + 0x46, 0x0f, 0xf4, 0x5b, 0x5c, 0xde, 0x58, 0x09, 0x80, 0xd5, 0xb9, 0x37,
82275 + 0x47, 0x60, 0x33, 0x5d, 0x83, 0x03, 0xe2, 0xf2, 0x2f, 0x90, 0xf3, 0x7f,
82276 + 0xae, 0x24, 0xe4, 0xcd, 0x4a, 0x10, 0x5c, 0xf3, 0xd3, 0xfe, 0x61, 0x91,
82277 + 0xbb, 0xdb, 0x74, 0x0e, 0x00, 0x6a, 0xe8, 0x73, 0xfb, 0x79, 0x75, 0x76,
82278 + 0x8f, 0x7a, 0xd0, 0x3b, 0x6f, 0x36, 0x7e, 0x01, 0xbe, 0xea, 0x3e, 0x5b,
82279 + 0xdb, 0x6e, 0xe9, 0xb6, 0x3c, 0xfb, 0x4f, 0x6c, 0x4a, 0xda, 0xe4, 0x10,
82280 + 0xa4, 0xd1, 0x36, 0x3d, 0xbc, 0xb6, 0xdd, 0x9e, 0x6d, 0x33, 0xca, 0x5e,
82281 + 0x94, 0xd6, 0x7b, 0xa5, 0xfe, 0x17, 0xdc, 0x2b, 0xf0, 0x63, 0xd5, 0x99,
82282 + 0x11, 0x4b, 0x9e, 0x55, 0xb0, 0x4e, 0xd2, 0xbc, 0x1f, 0x30, 0xef, 0x3d,
82283 + 0x85, 0x5f, 0x9d, 0xed, 0x18, 0x20, 0x7c, 0xdb, 0xe5, 0xd4, 0x69, 0x65,
82284 + 0x47, 0x18, 0xb7, 0x5d, 0xa6, 0x7f, 0x4f, 0x5d, 0x3e, 0x69, 0xec, 0x09,
82285 + 0x7c, 0x8f, 0xda, 0x71, 0x99, 0x51, 0xd7, 0x9f, 0x90, 0x47, 0x5c, 0xf2,
82286 + 0xee, 0xa4, 0xf8, 0x63, 0x1a, 0x4b, 0x89, 0x89, 0x09, 0x76, 0x78, 0x27,
82287 + 0xe1, 0x9b, 0x29, 0x7b, 0xec, 0x7e, 0x4c, 0xc8, 0xe3, 0x36, 0xda, 0x8f,
82288 + 0x9c, 0x6d, 0x01, 0x83, 0x3d, 0x99, 0x91, 0xe7, 0x36, 0x50, 0x17, 0xeb,
82289 + 0xf5, 0x31, 0xc1, 0xfd, 0xb3, 0xb8, 0x67, 0x1c, 0xed, 0xe9, 0xb8, 0x44,
82290 + 0x9e, 0xee, 0x97, 0xf6, 0x33, 0xc4, 0x29, 0xe4, 0x69, 0x42, 0xda, 0xce,
82291 + 0x10, 0x2f, 0x33, 0xb6, 0x9c, 0x1a, 0xbf, 0x21, 0x8c, 0xe5, 0xa4, 0xfc,
82292 + 0x2b, 0xf8, 0x6d, 0x61, 0xde, 0xed, 0xf0, 0xc3, 0xdb, 0x2e, 0xe8, 0x76,
82293 + 0xf6, 0xb9, 0x3e, 0x00, 0xc3, 0x98, 0xd8, 0xf0, 0x59, 0xec, 0x0b, 0x2c,
82294 + 0xbb, 0x50, 0xf2, 0x1d, 0x48, 0x3a, 0x37, 0x60, 0xde, 0x41, 0x37, 0x5e,
82295 + 0xe0, 0xf8, 0xb0, 0x8f, 0xbe, 0xce, 0x17, 0x1d, 0x18, 0xf2, 0xe5, 0xd2,
82296 + 0x1a, 0x65, 0x93, 0x71, 0x74, 0x62, 0x97, 0x57, 0xc5, 0x5e, 0xca, 0x48,
82297 + 0xe4, 0x4c, 0x06, 0x72, 0xe8, 0xc3, 0xee, 0x12, 0xf3, 0xd1, 0xd6, 0xe1,
82298 + 0x39, 0xf0, 0x56, 0xfd, 0x29, 0xce, 0xe9, 0xaa, 0xd8, 0xf5, 0x5f, 0x65,
82299 + 0xc3, 0xc2, 0x7d, 0xc1, 0x31, 0x4e, 0xc2, 0xfe, 0x46, 0xe5, 0x73, 0x71,
82300 + 0xca, 0x8a, 0x96, 0xbd, 0xb4, 0x3d, 0xa4, 0x64, 0xb5, 0x48, 0xbb, 0xfc,
82301 + 0xd4, 0xed, 0x7b, 0xe0, 0xa7, 0x9d, 0x2e, 0x6f, 0xcb, 0x18, 0xf3, 0x42,
82302 + 0x03, 0xa9, 0x02, 0xef, 0xcc, 0x7b, 0x96, 0x2c, 0x78, 0x27, 0x15, 0x1e,
82303 + 0x7c, 0x14, 0xed, 0x4f, 0x98, 0xf6, 0x0b, 0x32, 0x64, 0x64, 0x5d, 0xc5,
82304 + 0x11, 0xa0, 0xc7, 0xb8, 0x66, 0xbc, 0xff, 0x2d, 0xf1, 0x7b, 0xb9, 0x9e,
82305 + 0x27, 0x65, 0x60, 0x4c, 0xe3, 0x90, 0x92, 0x4d, 0x1c, 0xf2, 0xae, 0x71,
82306 + 0x5a, 0x95, 0xcb, 0x57, 0xa8, 0xd0, 0xce, 0xec, 0x85, 0xfc, 0xc2, 0x27,
82307 + 0xda, 0x08, 0x63, 0xb5, 0x6a, 0x5f, 0x25, 0x06, 0x6c, 0x4b, 0xbc, 0xa1,
82308 + 0xa1, 0xe1, 0x12, 0xf0, 0xc9, 0x3c, 0x7c, 0x5e, 0xd2, 0xb1, 0x00, 0x3b,
82309 + 0xb7, 0xe6, 0xff, 0x4b, 0x70, 0x22, 0x9e, 0x3a, 0x3d, 0xf3, 0xae, 0xf1,
82310 + 0xfb, 0x30, 0x6e, 0xdf, 0x7c, 0x9e, 0xb2, 0x69, 0xfd, 0x61, 0xe3, 0x88,
82311 + 0xd2, 0x91, 0x37, 0xe3, 0xae, 0x30, 0x7e, 0x3f, 0x7d, 0x53, 0x1c, 0xb5,
82312 + 0xd4, 0x08, 0x73, 0xf0, 0x42, 0x3d, 0x7f, 0x1a, 0xba, 0x3a, 0x22, 0x37,
82313 + 0x80, 0x41, 0x27, 0xc0, 0xbb, 0x73, 0x6b, 0x65, 0xeb, 0x4a, 0x45, 0xd4,
82314 + 0x7d, 0xc1, 0x67, 0x4e, 0xde, 0x47, 0xc0, 0x3b, 0xd8, 0x98, 0x0d, 0xc7,
82315 + 0x9c, 0x29, 0x39, 0x78, 0x66, 0x2b, 0x9f, 0xb9, 0xa4, 0x74, 0xf3, 0xe1,
82316 + 0x2e, 0x9e, 0xb9, 0x5c, 0x5a, 0xfe, 0x28, 0xee, 0x79, 0xf6, 0x71, 0xa4,
82317 + 0xe5, 0xf9, 0x66, 0x4f, 0x54, 0x63, 0x37, 0xf0, 0x5d, 0xf3, 0xcd, 0x01,
82318 + 0xbf, 0x8b, 0x8c, 0xe7, 0x35, 0x88, 0x83, 0x3b, 0x0d, 0x0e, 0x26, 0xce,
82319 + 0xc2, 0x7a, 0x6d, 0x30, 0x0e, 0x43, 0xac, 0x15, 0x57, 0x7e, 0xa1, 0xc2,
82320 + 0x5e, 0xfe, 0x31, 0x93, 0x7f, 0x71, 0xab, 0x5c, 0xcd, 0x56, 0x42, 0x3c,
82321 + 0xd7, 0x2c, 0x57, 0xee, 0x6f, 0x20, 0x57, 0x13, 0x5d, 0x3a, 0xdf, 0x81,
82322 + 0x36, 0xcd, 0x92, 0x37, 0xaa, 0x7b, 0x64, 0xab, 0xfa, 0x20, 0x70, 0xb4,
82323 + 0xca, 0xfb, 0x90, 0x2d, 0xac, 0xc5, 0x83, 0x95, 0x49, 0x99, 0xa8, 0xc6,
82324 + 0xe4, 0x5a, 0xd5, 0x7e, 0xa0, 0x5d, 0x18, 0x07, 0x27, 0x36, 0xf9, 0x1b,
82325 + 0xa5, 0xdf, 0x7e, 0xe0, 0xef, 0xb4, 0xe7, 0xb9, 0xca, 0x0d, 0xb4, 0x9f,
82326 + 0xad, 0xde, 0x2b, 0x25, 0xd5, 0xbe, 0x7e, 0xcb, 0x18, 0x51, 0x33, 0x46,
82327 + 0xbd, 0x7a, 0x97, 0x89, 0xdf, 0x95, 0xe5, 0x12, 0xb0, 0xaf, 0x7d, 0x96,
82328 + 0xf3, 0xbd, 0xc3, 0xe4, 0x77, 0xc5, 0x9a, 0xfc, 0x91, 0xa8, 0xf1, 0x47,
82329 + 0x7e, 0x06, 0x3d, 0xfe, 0x94, 0x44, 0xbd, 0xb0, 0x2f, 0xe6, 0x6a, 0x27,
82330 + 0x4c, 0x6e, 0xc7, 0x5e, 0xf4, 0x75, 0x10, 0xef, 0xee, 0xc3, 0xef, 0x49,
82331 + 0xd4, 0xa3, 0xbd, 0xe2, 0xd9, 0x28, 0x31, 0x02, 0xcf, 0xeb, 0x7a, 0x51,
82332 + 0xaf, 0x03, 0x58, 0x72, 0xbf, 0x79, 0x16, 0xf6, 0x11, 0xd6, 0x0d, 0xef,
82333 + 0x9b, 0xcf, 0x53, 0x59, 0x2f, 0xd9, 0x74, 0x9e, 0x0a, 0x45, 0xa5, 0xda,
82334 + 0x86, 0xb6, 0x36, 0xb4, 0x51, 0xc9, 0x26, 0x1b, 0xf5, 0x56, 0x53, 0x9e,
82335 + 0xa7, 0xc6, 0x61, 0x57, 0x33, 0x9c, 0x6b, 0x5f, 0x53, 0x0e, 0x4a, 0xaa,
82336 + 0x4c, 0xfb, 0xc8, 0x78, 0xdf, 0x7a, 0x25, 0xb4, 0x1f, 0xb9, 0x1e, 0x9e,
82337 + 0x5b, 0x2c, 0xfa, 0x2a, 0x16, 0x97, 0x8c, 0x64, 0x69, 0x7f, 0xfc, 0xd8,
82338 + 0x16, 0x70, 0x65, 0x5d, 0x9d, 0xeb, 0x47, 0xf0, 0x83, 0x5d, 0x76, 0x2c,
82339 + 0x71, 0x3d, 0x3e, 0x2b, 0x1b, 0xbd, 0x03, 0x5d, 0x6e, 0xab, 0x3a, 0xc9,
82340 + 0xbc, 0xdf, 0x67, 0xee, 0x13, 0xb2, 0x56, 0xf9, 0x50, 0xbf, 0x9d, 0xfd,
82341 + 0x5f, 0xb7, 0xe7, 0x33, 0x3d, 0x3c, 0x7f, 0xc2, 0x33, 0xe2, 0xf5, 0xd7,
82342 + 0x54, 0x4e, 0xa3, 0xc6, 0x46, 0x0e, 0xcf, 0x2f, 0x81, 0x73, 0x7e, 0x04,
82343 + 0x9e, 0x84, 0xb8, 0xfb, 0x75, 0x99, 0x50, 0x98, 0xaa, 0x0d, 0xb6, 0xd2,
82344 + 0x60, 0xaa, 0xee, 0x14, 0x30, 0x15, 0xdb, 0xb7, 0xe2, 0x40, 0xbd, 0x97,
82345 + 0x22, 0x59, 0x1d, 0x57, 0x6d, 0x89, 0x15, 0x5b, 0x8f, 0x64, 0xc4, 0x3a,
82346 + 0x81, 0x1f, 0x65, 0xd4, 0x5e, 0x7a, 0x4d, 0xbc, 0xa5, 0x54, 0x95, 0xf9,
82347 + 0xb1, 0x0b, 0x1b, 0x3c, 0xc7, 0x03, 0x16, 0x4b, 0x50, 0x96, 0xf9, 0x6e,
82348 + 0x1a, 0x63, 0xbc, 0x06, 0xff, 0x73, 0x0f, 0xf8, 0x6d, 0x1b, 0x1e, 0xf9,
82349 + 0x26, 0x46, 0x11, 0x63, 0x2c, 0x18, 0x7b, 0x71, 0x5e, 0x61, 0x89, 0x52,
82350 + 0x7c, 0x11, 0xe5, 0x0f, 0x0d, 0x76, 0x78, 0xbd, 0x2b, 0x3c, 0xb7, 0x2f,
82351 + 0xc5, 0xbf, 0x84, 0xe7, 0xaf, 0xc3, 0x1f, 0x8c, 0x4a, 0x9b, 0x5a, 0xb3,
82352 + 0x10, 0x3b, 0xff, 0x3d, 0xea, 0x90, 0xfe, 0x3b, 0x4d, 0x7e, 0x0d, 0xf3,
82353 + 0x06, 0xd8, 0x1f, 0xec, 0x96, 0xca, 0xe1, 0xca, 0xa1, 0x64, 0x3b, 0xb6,
82354 + 0x79, 0x05, 0x75, 0x73, 0x98, 0x37, 0x9f, 0x4b, 0x5f, 0x44, 0x9a, 0x9f,
82355 + 0x7f, 0x14, 0xcf, 0x29, 0x87, 0xef, 0x37, 0x72, 0x18, 0xbe, 0xcb, 0x1b,
82356 + 0x3e, 0xdd, 0x8e, 0x31, 0xc8, 0xab, 0x66, 0xba, 0x38, 0x9f, 0x70, 0xcd,
82357 + 0xdb, 0x4c, 0xae, 0x01, 0x9f, 0xbd, 0xdf, 0x3c, 0x73, 0xcc, 0x1c, 0x3f,
82358 + 0xde, 0x65, 0xb0, 0x04, 0x76, 0x7b, 0xb8, 0x1f, 0x49, 0x67, 0xac, 0x09,
82359 + 0xb3, 0xfe, 0x61, 0xef, 0x4e, 0x1e, 0x26, 0x65, 0xce, 0x53, 0xb1, 0x23,
82360 + 0xe6, 0x8f, 0xe5, 0x6c, 0x9d, 0xb3, 0xf1, 0x8d, 0x9b, 0xe2, 0xdd, 0x4a,
82361 + 0xd7, 0xf2, 0x0c, 0xa4, 0x6a, 0x67, 0xdb, 0x7f, 0xed, 0xbc, 0xbb, 0x48,
82362 + 0x36, 0x6c, 0x07, 0x9c, 0xa6, 0xda, 0x24, 0x65, 0xae, 0xf1, 0x6e, 0x39,
82363 + 0x7a, 0xca, 0xbf, 0x30, 0x79, 0x10, 0xfb, 0x55, 0x1e, 0x04, 0xf5, 0xe2,
82364 + 0x5a, 0x35, 0x02, 0x5e, 0xf7, 0x31, 0x37, 0x0a, 0x7e, 0x4c, 0x0c, 0x73,
82365 + 0x45, 0x5f, 0xf1, 0xf7, 0xab, 0x5c, 0xa9, 0x88, 0x17, 0xe6, 0xf5, 0x72,
82366 + 0x1f, 0xde, 0xa1, 0xde, 0x7f, 0x7d, 0xa5, 0x9d, 0xf9, 0xaa, 0x28, 0xb9,
82367 + 0x47, 0x7f, 0x09, 0xfd, 0x18, 0x95, 0x42, 0xd5, 0x03, 0xfe, 0x89, 0x52,
82368 + 0x2e, 0xf1, 0x7c, 0x3f, 0xfc, 0x61, 0xc1, 0x3e, 0x69, 0x83, 0x6f, 0xa2,
82369 + 0x7c, 0x1d, 0xcc, 0x68, 0x87, 0x0e, 0x62, 0x70, 0x9d, 0x1f, 0x1a, 0x40,
82370 + 0x87, 0xcf, 0xcb, 0xda, 0xf8, 0xa2, 0xd4, 0xc7, 0x9b, 0x31, 0x2c, 0x30,
82371 + 0xaa, 0x5b, 0x0e, 0xea, 0x9e, 0x8a, 0x65, 0x1a, 0xdd, 0x72, 0xc2, 0xe0,
82372 + 0x4e, 0xae, 0x83, 0x2d, 0x85, 0xd1, 0x05, 0x25, 0x5f, 0x75, 0xb5, 0x1e,
82373 + 0x8e, 0x75, 0x59, 0xe5, 0xf9, 0x72, 0x0c, 0xe6, 0xfa, 0x46, 0x0c, 0x0e,
82374 + 0x3b, 0x65, 0xd6, 0xd5, 0xd9, 0x1b, 0xe6, 0xcc, 0x47, 0xb3, 0x87, 0x99,
82375 + 0xdb, 0x01, 0x6c, 0x3d, 0x3d, 0x35, 0x5b, 0xa1, 0x2d, 0x0c, 0x82, 0xba,
82376 + 0xbf, 0x89, 0x1e, 0x7f, 0xac, 0x30, 0xe4, 0x96, 0x68, 0xdd, 0xbe, 0xa0,
82377 + 0x72, 0x66, 0x27, 0xa7, 0xf2, 0x2a, 0x5e, 0xd8, 0x7c, 0x76, 0xf3, 0x5e,
82378 + 0xe7, 0x36, 0x31, 0xf8, 0xfe, 0x1d, 0x66, 0xfd, 0x63, 0x4e, 0xa9, 0xd2,
82379 + 0xe5, 0xcc, 0xaa, 0xb3, 0xb5, 0xac, 0xf9, 0x16, 0x27, 0x37, 0x95, 0x6e,
82380 + 0x7c, 0x76, 0x2f, 0xb1, 0x3e, 0xcf, 0x31, 0x0a, 0x15, 0x9e, 0xe3, 0xe8,
82381 + 0xf7, 0x69, 0xf3, 0x7e, 0xa0, 0xa1, 0xde, 0xa9, 0x78, 0x23, 0x63, 0x8c,
82382 + 0xed, 0x28, 0x6f, 0x54, 0xa8, 0x6b, 0xd0, 0x7f, 0x5c, 0xcf, 0x21, 0x92,
82383 + 0x2d, 0xc2, 0x3f, 0x25, 0x7d, 0x47, 0xa6, 0xf2, 0x2b, 0xcc, 0xdb, 0x7a,
82384 + 0x68, 0xea, 0x1a, 0xfc, 0xa5, 0x73, 0x9e, 0xce, 0x2b, 0x5f, 0x67, 0x1c,
82385 + 0x8c, 0xed, 0x54, 0x9f, 0x45, 0x13, 0xab, 0x3d, 0x3c, 0x35, 0xb8, 0x1e,
82386 + 0x91, 0x27, 0x4c, 0x1f, 0xbc, 0x4f, 0x6e, 0xfb, 0x52, 0x4a, 0xff, 0xc1,
82387 + 0x3f, 0x18, 0x85, 0x7f, 0xd0, 0x09, 0x5d, 0x4f, 0x3f, 0x83, 0xf8, 0xbb,
82388 + 0x13, 0x7b, 0x85, 0xe3, 0xdc, 0xa5, 0xc6, 0x89, 0x60, 0x9c, 0x59, 0xf8,
82389 + 0x38, 0x8c, 0x47, 0xe6, 0x3d, 0x07, 0x58, 0x02, 0xb6, 0xde, 0x63, 0xbc,
82390 + 0xdc, 0xc6, 0x9c, 0x87, 0xa1, 0x27, 0x98, 0xa3, 0x32, 0x11, 0xe6, 0x0d,
82391 + 0xa1, 0x9d, 0x6f, 0xda, 0x1d, 0x44, 0x3b, 0xfa, 0x07, 0x6c, 0x2b, 0xb7,
82392 + 0xd9, 0x32, 0xa8, 0xb0, 0x81, 0xf6, 0x6b, 0x48, 0x43, 0x0d, 0x73, 0xa5,
82393 + 0x5d, 0xc5, 0x9e, 0x53, 0xf3, 0x3a, 0xa8, 0xda, 0x59, 0xd9, 0x31, 0xd0,
82394 + 0x4e, 0xfc, 0x87, 0xbe, 0x97, 0x75, 0xbc, 0xb3, 0xa0, 0xe4, 0x08, 0x72,
82395 + 0x32, 0x1e, 0xe6, 0xbd, 0xe8, 0x76, 0x61, 0xfd, 0x81, 0xf5, 0x86, 0x19,
82396 + 0xff, 0xe7, 0x41, 0xee, 0x68, 0xa7, 0xf2, 0xad, 0x5f, 0xbe, 0x29, 0x07,
82397 + 0x8d, 0x6d, 0xc2, 0x3a, 0x91, 0x30, 0x2f, 0xb9, 0x89, 0xe6, 0xac, 0x59,
82398 + 0x73, 0xb6, 0x63, 0x6c, 0x58, 0xe5, 0xe2, 0xf3, 0x99, 0x33, 0x97, 0x61,
82399 + 0x1f, 0xcd, 0x67, 0x4d, 0xa3, 0xc0, 0x19, 0xda, 0x86, 0x94, 0x37, 0x3c,
82400 + 0xd8, 0xeb, 0x36, 0xac, 0x1d, 0x6d, 0xc2, 0xa0, 0xf1, 0x2d, 0xde, 0x2b,
82401 + 0xce, 0xca, 0x73, 0xcc, 0x51, 0xf8, 0xf5, 0x61, 0x7b, 0xae, 0x63, 0x6e,
82402 + 0xea, 0x5a, 0xc5, 0x93, 0x53, 0xcb, 0x3a, 0x3f, 0x4c, 0xf3, 0x81, 0x3a,
82403 + 0x9b, 0x6b, 0x9b, 0x94, 0x59, 0x8f, 0xb1, 0x9c, 0xa4, 0xbc, 0xe2, 0x35,
82404 + 0xe7, 0x39, 0xa1, 0xfe, 0xc6, 0xa8, 0xc9, 0xc7, 0x3e, 0x88, 0xf9, 0x13,
82405 + 0x37, 0x6a, 0x59, 0x3a, 0x00, 0x3b, 0xf4, 0x77, 0x0e, 0x70, 0x21, 0xf6,
82406 + 0xd3, 0x75, 0xa7, 0x79, 0x7e, 0xdb, 0xf9, 0xdf, 0x4a, 0x2e, 0x1d, 0xc8,
82407 + 0xc8, 0xe2, 0x36, 0xdf, 0xe1, 0xb7, 0xdf, 0x35, 0x04, 0x7d, 0x6f, 0x49,
82408 + 0x71, 0xd4, 0x4b, 0x2c, 0xf0, 0x5c, 0xc3, 0x1d, 0x01, 0xca, 0xa7, 0x1f,
82409 + 0x9d, 0x04, 0xbd, 0xbc, 0x1e, 0x04, 0x3e, 0x62, 0x4e, 0x22, 0xee, 0x99,
82410 + 0x13, 0x18, 0xf7, 0x40, 0xaf, 0xab, 0xce, 0x2b, 0xb4, 0xce, 0xfe, 0xfe,
82411 + 0x5e, 0xe6, 0xc0, 0xf5, 0x78, 0xe1, 0xda, 0xab, 0xef, 0xda, 0xd0, 0x77,
82412 + 0xc4, 0xbc, 0x9f, 0xd8, 0xe6, 0xbf, 0xf4, 0xb1, 0xdc, 0xce, 0x35, 0x33,
82413 + 0xb1, 0x17, 0xd6, 0x1f, 0x57, 0xb4, 0xcc, 0x42, 0x57, 0xcf, 0xa9, 0xf9,
82414 + 0xdc, 0x0f, 0x59, 0x88, 0xc8, 0xfc, 0xb6, 0xfc, 0xde, 0x0f, 0xf9, 0xdd,
82415 + 0xc3, 0x14, 0xcf, 0x5d, 0x64, 0x2d, 0x94, 0x31, 0xca, 0x17, 0x65, 0xeb,
82416 + 0xe3, 0xdd, 0xdc, 0x73, 0xe5, 0xed, 0x75, 0x77, 0x94, 0xcd, 0x4d, 0xda,
82417 + 0xe1, 0xba, 0xf3, 0x7a, 0xb7, 0xdc, 0xaa, 0x70, 0x7f, 0x64, 0x7e, 0x83,
82418 + 0xb5, 0xf5, 0xcd, 0xda, 0x66, 0x9a, 0xbe, 0x83, 0x08, 0xfb, 0x63, 0x0c,
82419 + 0x94, 0x36, 0x88, 0xe7, 0x50, 0xed, 0x52, 0x56, 0x32, 0x68, 0x29, 0x6c,
82420 + 0x9d, 0x73, 0xf3, 0x49, 0xc6, 0xbc, 0x8f, 0xc9, 0xbf, 0x03, 0xcd, 0xb9,
82421 + 0xe1, 0xa8, 0xe8, 0xb6, 0x33, 0xe0, 0xf7, 0xa6, 0x0b, 0x7f, 0x90, 0x67,
82422 + 0xd6, 0x15, 0x47, 0xce, 0xa9, 0x73, 0x57, 0xec, 0xd1, 0x4e, 0x47, 0x16,
82423 + 0xbd, 0xed, 0x73, 0x78, 0xa9, 0xa1, 0xce, 0x1a, 0xde, 0x3d, 0xb1, 0x4d,
82424 + 0x1b, 0xfd, 0x09, 0xf8, 0x52, 0xde, 0xcf, 0x83, 0x52, 0xfc, 0xa6, 0xba,
82425 + 0x46, 0xaf, 0x33, 0x4e, 0xc3, 0xf3, 0x01, 0x57, 0x0a, 0xf0, 0x0b, 0x0b,
82426 + 0xf0, 0x09, 0x0b, 0x4a, 0x2f, 0x30, 0x6e, 0xc3, 0x18, 0x5b, 0x19, 0x3e,
82427 + 0x48, 0x39, 0x68, 0xf7, 0x4e, 0xaa, 0x18, 0xe2, 0xa5, 0x8d, 0x54, 0xb9,
82428 + 0x2c, 0x5e, 0xf2, 0xc1, 0xed, 0x7c, 0xba, 0xee, 0x72, 0x2c, 0xdb, 0x1c,
82429 + 0x87, 0x4b, 0xaa, 0x5c, 0xb4, 0x0e, 0x60, 0xe4, 0xe3, 0xd0, 0xd5, 0xcf,
82430 + 0xfb, 0x8c, 0xbf, 0xdd, 0x49, 0x7e, 0x7f, 0x95, 0x93, 0xb4, 0x87, 0x46,
82431 + 0xc5, 0xbb, 0xe0, 0x0d, 0x3f, 0x28, 0xf4, 0x3f, 0x52, 0xc9, 0x23, 0xe4,
82432 + 0xdb, 0xf6, 0x37, 0x0d, 0xa1, 0x7d, 0x1d, 0x95, 0xc1, 0x0b, 0xaf, 0xab,
82433 + 0x33, 0x8e, 0x4f, 0xf8, 0xad, 0xb2, 0xa1, 0xe2, 0x77, 0xa3, 0x3d, 0x32,
82434 + 0x08, 0xdf, 0x57, 0x60, 0xa1, 0xf8, 0x8d, 0x83, 0x05, 0xdf, 0x43, 0xdd,
82435 + 0xcb, 0x74, 0x23, 0x69, 0xf2, 0x54, 0x69, 0x5f, 0x19, 0xdf, 0xd3, 0x79,
82436 + 0x7a, 0xcc, 0x4d, 0x65, 0xfe, 0x64, 0x51, 0xe5, 0xeb, 0x31, 0xd6, 0xc7,
82437 + 0x58, 0x1e, 0xe3, 0x7d, 0x8c, 0xdb, 0xe9, 0x5c, 0xbd, 0x89, 0xc6, 0x6e,
82438 + 0xb1, 0xbd, 0x30, 0x5f, 0x52, 0xdb, 0xad, 0xad, 0xcc, 0x3e, 0xd8, 0x3a,
82439 + 0x57, 0xc5, 0x4e, 0x4a, 0x6e, 0x8f, 0x1c, 0x1b, 0x6e, 0x07, 0xcf, 0x7b,
82440 + 0x55, 0x3e, 0x9d, 0xed, 0xdd, 0x0f, 0x1c, 0xcb, 0xf8, 0x1c, 0xb1, 0x69,
82441 + 0xc8, 0xe7, 0x7b, 0xf0, 0xec, 0x1d, 0xf0, 0x9e, 0xcf, 0x80, 0x5b, 0x95,
82442 + 0x1d, 0xfa, 0xbc, 0x6c, 0x55, 0x98, 0x03, 0x5f, 0xdb, 0x97, 0x57, 0xeb,
82443 + 0x41, 0xdf, 0x3c, 0xd4, 0x4d, 0x61, 0xfe, 0x28, 0x7d, 0x2a, 0xd7, 0x9c,
82444 + 0x93, 0xd3, 0x37, 0xef, 0x85, 0xbf, 0x4e, 0xfd, 0x63, 0xa9, 0xb1, 0xae,
82445 + 0x47, 0x3e, 0x20, 0xe5, 0xda, 0x6e, 0x67, 0xfe, 0x41, 0xf0, 0x0d, 0x5f,
82446 + 0xe5, 0xac, 0xc2, 0x9f, 0xd4, 0x6b, 0xac, 0xbf, 0x8f, 0x74, 0x76, 0xf2,
82447 + 0xcb, 0xe3, 0xda, 0x67, 0xcc, 0xf5, 0x02, 0xb3, 0x78, 0xa7, 0xbb, 0x77,
82448 + 0xb0, 0xf3, 0x2f, 0x0d, 0xae, 0x25, 0x6e, 0xee, 0x55, 0xd8, 0xc0, 0xae,
82449 + 0x87, 0x72, 0xc2, 0x7c, 0x1f, 0x62, 0xea, 0x03, 0x92, 0xab, 0x41, 0x6f,
82450 + 0xf6, 0xf1, 0xfe, 0x47, 0xa6, 0x2d, 0xaf, 0x03, 0x39, 0x3c, 0xd6, 0x7a,
82451 + 0x96, 0x3f, 0xae, 0x71, 0x7d, 0x67, 0x78, 0x9e, 0x1f, 0xe6, 0xbc, 0xdf,
82452 + 0x94, 0x5b, 0x0b, 0x79, 0x0a, 0x69, 0xd0, 0x63, 0x4d, 0x80, 0xde, 0x7a,
82453 + 0x35, 0x21, 0xbd, 0x1e, 0xf3, 0x84, 0x22, 0x32, 0xd6, 0x9b, 0x82, 0x13,
82454 + 0xaf, 0xe9, 0xa9, 0xd7, 0x60, 0xf3, 0xab, 0x21, 0x9d, 0x1a, 0xe3, 0xd7,
82455 + 0x6b, 0x7c, 0x9f, 0xc4, 0x58, 0xed, 0x32, 0xd6, 0x47, 0x3e, 0xb7, 0xd2,
82456 + 0x91, 0x34, 0xf9, 0xdc, 0xad, 0xcf, 0xef, 0x6b, 0xa2, 0xef, 0xd6, 0xef,
82457 + 0x4a, 0xf3, 0x8c, 0x8b, 0xad, 0xd0, 0x3f, 0x21, 0x8d, 0xbd, 0xd0, 0x73,
82458 + 0x98, 0xa3, 0x1f, 0xfa, 0x1a, 0x21, 0x5f, 0x42, 0x1f, 0x25, 0xaa, 0xe4,
82459 + 0x62, 0x36, 0xc3, 0xb9, 0x44, 0x8d, 0xcf, 0x42, 0xba, 0x14, 0x6d, 0x11,
82460 + 0x9e, 0x25, 0x46, 0xbd, 0xcf, 0xec, 0xd3, 0xeb, 0xff, 0xa4, 0x99, 0xaf,
82461 + 0x6b, 0xea, 0xb0, 0xaf, 0xfd, 0x68, 0xff, 0xb5, 0x00, 0x63, 0x31, 0x08,
82462 + 0x87, 0xfd, 0x1f, 0x62, 0xf7, 0xfd, 0xba, 0xaf, 0xce, 0x10, 0xbf, 0x87,
82463 + 0xdf, 0xa1, 0x91, 0x4e, 0xee, 0xaf, 0x90, 0x87, 0xec, 0xa3, 0xd7, 0xc4,
82464 + 0x5c, 0x49, 0x43, 0x47, 0x0b, 0x0d, 0x29, 0xff, 0x66, 0x1d, 0x77, 0x4f,
82465 + 0xd3, 0xdc, 0x29, 0x6b, 0xdd, 0xb2, 0x50, 0xed, 0x94, 0xf9, 0xaa, 0xf2,
82466 + 0x75, 0x86, 0x45, 0x88, 0xed, 0xb8, 0x2f, 0x55, 0x2e, 0xb3, 0xc9, 0x99,
82467 + 0x0c, 0xf7, 0x67, 0x37, 0xea, 0xd1, 0x86, 0xa0, 0xac, 0x69, 0xfd, 0x54,
82468 + 0x93, 0x5b, 0xbf, 0xd3, 0x98, 0x6b, 0xb4, 0xe6, 0xe3, 0x5d, 0x6f, 0xca,
82469 + 0xc7, 0x6b, 0xce, 0x7f, 0x2a, 0xcb, 0x23, 0x07, 0x3b, 0x64, 0xe0, 0x6c,
82470 + 0xa7, 0x91, 0xd1, 0xfb, 0xcd, 0x38, 0x18, 0x6f, 0x69, 0x5c, 0x06, 0x96,
82471 + 0xbe, 0x28, 0xa5, 0x69, 0x95, 0xff, 0xde, 0xf4, 0xfd, 0xc3, 0xa0, 0xf9,
82472 + 0xfe, 0x29, 0x67, 0x31, 0x17, 0xa6, 0xb0, 0x84, 0xf5, 0x3a, 0x98, 0x1a,
82473 + 0x4e, 0xda, 0xfc, 0x46, 0xf7, 0x31, 0x19, 0x58, 0x1d, 0x97, 0xf4, 0x12,
82474 + 0x31, 0x03, 0xb3, 0x01, 0x52, 0x2a, 0x2e, 0x9a, 0xbe, 0xa8, 0xfb, 0xf3,
82475 + 0x96, 0xf8, 0x3e, 0x0d, 0xbc, 0xca, 0xf7, 0x85, 0x44, 0x44, 0x65, 0x0c,
82476 + 0x7c, 0x10, 0xf2, 0xd4, 0x66, 0xf0, 0x80, 0x23, 0xf9, 0x25, 0xb6, 0x27,
82477 + 0xf6, 0xf8, 0x47, 0xac, 0x59, 0x21, 0x69, 0x0b, 0xdb, 0xa8, 0xfe, 0x70,
82478 + 0x1d, 0xc6, 0xd3, 0xc9, 0xeb, 0x51, 0x59, 0x6f, 0x78, 0xd8, 0x13, 0xfa,
82479 + 0x9b, 0x89, 0x52, 0x2d, 0xcc, 0x27, 0x7d, 0xc4, 0xc4, 0x00, 0x34, 0x8d,
82480 + 0xc5, 0x4a, 0xab, 0xec, 0x3d, 0x63, 0xbe, 0x9d, 0xe8, 0x50, 0x67, 0x68,
82481 + 0x4d, 0xfa, 0xcf, 0xd4, 0xbf, 0xdd, 0x65, 0xde, 0x80, 0x08, 0xdf, 0x37,
82482 + 0xf9, 0x24, 0xf1, 0xb8, 0xda, 0x07, 0x03, 0xf5, 0xb0, 0xde, 0xa8, 0xab,
82483 + 0x7d, 0x60, 0xf2, 0x29, 0x6b, 0x68, 0x1e, 0x83, 0xcf, 0xc3, 0x67, 0x07,
82484 + 0xd0, 0x96, 0xeb, 0x84, 0xb2, 0x7e, 0x40, 0xe5, 0x39, 0x46, 0xb2, 0x47,
82485 + 0xcc, 0x59, 0x5a, 0x9f, 0x1a, 0xcb, 0xcd, 0xb2, 0xff, 0x50, 0x37, 0x74,
82486 + 0x34, 0x8d, 0xdf, 0x4a, 0x2f, 0x7d, 0xf8, 0x9f, 0x19, 0x79, 0xe1, 0x7b,
82487 + 0xde, 0xb7, 0xd6, 0xf9, 0xa3, 0x7d, 0xe1, 0x7b, 0x67, 0xfb, 0x1b, 0x0c,
82488 + 0xf2, 0x92, 0x67, 0x80, 0x28, 0x2f, 0x32, 0x97, 0x9d, 0xd7, 0x28, 0xcd,
82489 + 0xb7, 0x25, 0xce, 0x12, 0x7f, 0xad, 0xfd, 0x38, 0xe8, 0x3b, 0xdc, 0xb3,
82490 + 0xbb, 0xe5, 0x06, 0x51, 0x17, 0x9f, 0xb6, 0xb6, 0x2a, 0x8c, 0x5d, 0x94,
82491 + 0xe5, 0x58, 0xa6, 0x5b, 0x66, 0xab, 0x36, 0xbf, 0x4d, 0x65, 0x2c, 0x96,
82492 + 0x67, 0x95, 0x32, 0xa7, 0x74, 0xdc, 0x90, 0xe8, 0xef, 0x76, 0x3b, 0xa4,
82493 + 0xe8, 0x52, 0x9e, 0x87, 0x64, 0xbd, 0x36, 0xdd, 0x94, 0x03, 0xdc, 0x66,
82494 + 0xe4, 0xec, 0xef, 0xa2, 0xd2, 0xc9, 0x38, 0x52, 0xb8, 0xa7, 0x87, 0xa4,
82495 + 0x58, 0x6b, 0x3e, 0x67, 0x60, 0x9e, 0x11, 0xe5, 0xb6, 0xbf, 0x69, 0xef,
82496 + 0x31, 0x57, 0x0f, 0xb8, 0x2a, 0x4e, 0x9f, 0x95, 0xf5, 0xf6, 0x1a, 0x7b,
82497 + 0xfb, 0x15, 0xac, 0xc7, 0xfb, 0x2d, 0xf1, 0x48, 0x1b, 0x6c, 0x84, 0xc9,
82498 + 0x35, 0x3e, 0x1c, 0x2f, 0xc3, 0x3f, 0x1b, 0x32, 0xe3, 0xde, 0x81, 0x7b,
82499 + 0xd6, 0xdd, 0x67, 0xde, 0xef, 0x37, 0xf7, 0x9d, 0xe6, 0x3e, 0x82, 0x7b,
82500 + 0xe6, 0x8d, 0xb3, 0x4f, 0x96, 0xfc, 0x9e, 0x88, 0xdf, 0xeb, 0x64, 0x25,
82501 + 0x7a, 0x11, 0xe8, 0xa9, 0xd1, 0x29, 0x9f, 0xae, 0x29, 0xfe, 0x5a, 0xde,
82502 + 0x12, 0x01, 0xc1, 0x7e, 0x73, 0x7d, 0xeb, 0x1e, 0xfc, 0xdc, 0x4d, 0xdf,
82503 + 0x4a, 0x55, 0x8c, 0xac, 0x34, 0xd3, 0x9b, 0x03, 0xad, 0xef, 0x96, 0x83,
82504 + 0x45, 0x1b, 0xa5, 0xfd, 0xc6, 0x62, 0x45, 0xe7, 0x1a, 0x1d, 0x83, 0xdf,
82505 + 0x78, 0xb8, 0xfa, 0xa8, 0xab, 0xf3, 0x62, 0xc2, 0x5c, 0xca, 0x4e, 0xcc,
82506 + 0x6b, 0xc8, 0x9c, 0x5b, 0xb3, 0x2d, 0x73, 0x3a, 0xc3, 0xf3, 0x99, 0x66,
82507 + 0xac, 0x4a, 0x5b, 0x44, 0x3b, 0xc3, 0xef, 0x9a, 0x7c, 0xd4, 0x5d, 0xa4,
82508 + 0xae, 0x69, 0xca, 0xcd, 0xff, 0x52, 0x4b, 0x6e, 0x3e, 0xbf, 0xfb, 0x16,
82509 + 0xf9, 0x6f, 0x0d, 0xc6, 0x95, 0x3a, 0x24, 0x72, 0x36, 0xcc, 0xc1, 0xe2,
82510 + 0x1a, 0x13, 0x87, 0xf1, 0x7b, 0xef, 0xa9, 0x5d, 0x62, 0x4e, 0xa1, 0x9c,
82511 + 0x7f, 0xc7, 0x65, 0x7e, 0xab, 0x9b, 0x0d, 0xe3, 0x54, 0xcc, 0xeb, 0x21,
82512 + 0xe6, 0x3a, 0x60, 0x62, 0x0a, 0x7c, 0x57, 0x96, 0x9e, 0x83, 0x53, 0xdc,
82513 + 0x1b, 0xbf, 0x1d, 0xd9, 0xce, 0xfd, 0x57, 0xe3, 0xc4, 0x35, 0x86, 0xe4,
82514 + 0x77, 0xe3, 0x3e, 0xf6, 0xd5, 0x9e, 0xcd, 0xf0, 0x9b, 0x8c, 0xcb, 0x8d,
82515 + 0x8c, 0xfa, 0xf6, 0x83, 0x67, 0x1e, 0x5b, 0x0d, 0xee, 0x3b, 0x7e, 0x23,
82516 + 0x9e, 0x55, 0x39, 0x01, 0x5b, 0xe6, 0x9b, 0xe7, 0xab, 0x0d, 0xfd, 0x1d,
82517 + 0xcb, 0xe2, 0xb2, 0xca, 0xcb, 0x07, 0x56, 0x4b, 0xe2, 0x3d, 0x73, 0xe8,
82518 + 0xfa, 0x55, 0x2e, 0xc1, 0x7c, 0xe3, 0x53, 0x28, 0x3f, 0x2f, 0x6b, 0x15,
82519 + 0x1d, 0x7f, 0x9d, 0x6f, 0x30, 0xa7, 0xc0, 0x55, 0x67, 0x44, 0x03, 0x4b,
82520 + 0x45, 0x8c, 0x17, 0x7e, 0xb3, 0x1d, 0xc7, 0x33, 0xd2, 0x57, 0x36, 0x7b,
82521 + 0x34, 0xcc, 0x05, 0xe9, 0xea, 0xa1, 0x4d, 0x28, 0x37, 0xba, 0x54, 0x1e,
82522 + 0x82, 0xc6, 0x23, 0xc4, 0x7a, 0x31, 0xd4, 0xe5, 0x5c, 0x3b, 0x69, 0xaf,
82523 + 0x02, 0xea, 0xa4, 0x34, 0xc6, 0xa9, 0xab, 0xdc, 0x44, 0xf2, 0xd9, 0x73,
82524 + 0x4b, 0xf4, 0xd7, 0x94, 0x8e, 0x4f, 0x0d, 0xcf, 0x48, 0xc1, 0x8d, 0xc2,
82525 + 0x17, 0x9b, 0x57, 0x7e, 0xce, 0xfd, 0xc0, 0xd0, 0x5d, 0x9b, 0x91, 0x2c,
82526 + 0xe7, 0xc6, 0xb1, 0xe9, 0x87, 0xe8, 0xf9, 0xe8, 0x33, 0x02, 0xb1, 0xe6,
82527 + 0xd5, 0xf7, 0x8f, 0x7c, 0xce, 0x78, 0x6f, 0xf8, 0xcd, 0x90, 0xfe, 0x26,
82528 + 0x64, 0xa6, 0x71, 0x44, 0x4e, 0x55, 0xf6, 0xf2, 0x5b, 0x09, 0x7f, 0x0b,
82529 + 0x7c, 0x3b, 0xd6, 0xe8, 0x52, 0xdf, 0xa5, 0xcc, 0x34, 0x98, 0x3f, 0x17,
82530 + 0xda, 0x1e, 0xae, 0x55, 0xdc, 0x7c, 0x37, 0x91, 0x30, 0xdf, 0x4d, 0xf0,
82531 + 0xdb, 0x8f, 0x1f, 0xed, 0x0d, 0xf7, 0xfb, 0xad, 0x38, 0x9c, 0x32, 0xf8,
82532 + 0xa7, 0xf0, 0x0d, 0xc3, 0x3c, 0x4c, 0xe6, 0x8b, 0x06, 0xc1, 0x31, 0x9f,
82533 + 0xf1, 0xdb, 0xe9, 0xc3, 0x6b, 0x98, 0xe3, 0x95, 0x1a, 0x78, 0x78, 0x94,
82534 + 0xcf, 0x98, 0x37, 0xd6, 0x2e, 0xf9, 0xd1, 0x76, 0xea, 0xf2, 0xce, 0x35,
82535 + 0x6f, 0xaf, 0x5c, 0xae, 0xc6, 0x55, 0x0e, 0x5c, 0x09, 0x38, 0xbf, 0x2e,
82536 + 0x1f, 0xeb, 0xe1, 0xd9, 0xdd, 0x84, 0x6a, 0x1f, 0xee, 0x77, 0x1d, 0x37,
82537 + 0x98, 0x58, 0xd7, 0xfa, 0xe4, 0x78, 0x06, 0xb8, 0xe5, 0x82, 0x58, 0x7f,
82538 + 0x90, 0xe9, 0x87, 0xef, 0xcd, 0xb1, 0xd2, 0x68, 0x07, 0xd9, 0x49, 0x70,
82539 + 0xaf, 0xbf, 0x13, 0xd4, 0x41, 0xef, 0x8d, 0x06, 0xf1, 0x3a, 0x30, 0xd4,
82540 + 0x34, 0xdb, 0x64, 0xc5, 0x3e, 0xc3, 0x3a, 0xbd, 0x90, 0xbf, 0x28, 0xe6,
82541 + 0xe3, 0xc0, 0x17, 0xd8, 0x27, 0x75, 0x97, 0xef, 0x1c, 0x7d, 0xa6, 0x12,
82542 + 0x0f, 0xfd, 0x94, 0xef, 0x81, 0x7f, 0x49, 0xa5, 0x93, 0xc2, 0xf3, 0x4e,
82543 + 0xe6, 0xb3, 0xce, 0x56, 0x27, 0xb1, 0x87, 0x1c, 0x83, 0xcd, 0x1c, 0xf4,
82544 + 0xf1, 0xe1, 0x1e, 0x8d, 0x15, 0x78, 0x1e, 0xaa, 0xb1, 0x88, 0xb6, 0x31,
82545 + 0x3c, 0xdf, 0x71, 0xe0, 0x0b, 0x84, 0xfb, 0xf2, 0x99, 0x7d, 0x37, 0x7f,
82546 + 0x0b, 0x43, 0x1c, 0x93, 0x4e, 0x9c, 0xe7, 0x79, 0xdc, 0xc6, 0xc3, 0x32,
82547 + 0x03, 0x9a, 0x4f, 0x9b, 0x79, 0x3e, 0x98, 0xf1, 0xe4, 0x7a, 0x8d, 0xe7,
82548 + 0x95, 0x07, 0x50, 0x32, 0xd7, 0x91, 0x34, 0x8f, 0x98, 0x7c, 0xce, 0x2c,
82549 + 0xe6, 0xfa, 0x98, 0xbc, 0x01, 0x7c, 0xfd, 0x66, 0x25, 0xed, 0x4f, 0xa8,
82550 + 0x3c, 0xa4, 0x54, 0xe2, 0xb2, 0x8c, 0x24, 0xe9, 0x03, 0x96, 0xdd, 0x54,
82551 + 0xe2, 0x3a, 0xe4, 0xe1, 0x46, 0xe5, 0x99, 0x1e, 0xfe, 0xaf, 0x8a, 0x3a,
82552 + 0xec, 0xe1, 0x0d, 0x95, 0x83, 0x94, 0x62, 0xcc, 0x04, 0xf7, 0xfd, 0x26,
82553 + 0x0f, 0x8a, 0xe3, 0xf0, 0x5d, 0xbf, 0xbc, 0x51, 0xd9, 0xb6, 0xbf, 0x1c,
82554 + 0xc7, 0x7c, 0x03, 0xcf, 0xb1, 0x2e, 0xf4, 0x50, 0x0f, 0x71, 0x3c, 0xdd,
82555 + 0x47, 0x58, 0x87, 0x7c, 0x0d, 0xe3, 0x9a, 0xea, 0x5b, 0xcb, 0xa4, 0x58,
82556 + 0x96, 0xb4, 0x79, 0x9c, 0xfb, 0x54, 0x8f, 0xc6, 0x40, 0x6c, 0x97, 0x76,
82557 + 0x0f, 0xab, 0xfe, 0x78, 0xb6, 0xc7, 0xf3, 0xaf, 0xb0, 0x1f, 0xe6, 0x43,
82558 + 0x31, 0xe7, 0x8a, 0xba, 0xaf, 0x99, 0x06, 0x6d, 0xff, 0xdf, 0x50, 0xb1,
82559 + 0xf4, 0x71, 0xd4, 0xa7, 0x8d, 0x86, 0xbc, 0xd4, 0x12, 0xdb, 0xdf, 0x7c,
82560 + 0x68, 0x5e, 0xf2, 0xfa, 0x99, 0xed, 0x6f, 0x32, 0xec, 0xbb, 0x5d, 0xf3,
82561 + 0x3e, 0xc4, 0xa5, 0xfd, 0xd8, 0xaf, 0x8f, 0x49, 0x7d, 0x25, 0x9d, 0xf8,
82562 + 0xb4, 0x84, 0xfd, 0x06, 0x87, 0x78, 0xde, 0x51, 0xcc, 0x8c, 0xb8, 0x0b,
82563 + 0x8a, 0x9e, 0x54, 0x82, 0x39, 0xc8, 0x97, 0x31, 0x5e, 0xbd, 0xd1, 0x1a,
82564 + 0x7b, 0x48, 0xe5, 0x36, 0x25, 0xed, 0xeb, 0xb5, 0x19, 0x92, 0x4d, 0xac,
82565 + 0xcd, 0x9f, 0x9b, 0xb5, 0xf9, 0x18, 0xfa, 0xf6, 0xce, 0x8c, 0x4a, 0xfa,
82566 + 0x4c, 0x3a, 0x79, 0x5a, 0x78, 0x96, 0xb8, 0x8f, 0x31, 0x2c, 0xeb, 0xc1,
82567 + 0x4c, 0x12, 0xf3, 0x4d, 0x61, 0xbe, 0x28, 0x1b, 0xbc, 0x1e, 0x81, 0x6f,
82568 + 0xbe, 0x87, 0x7b, 0xfb, 0x10, 0x75, 0x26, 0x79, 0x51, 0x54, 0xef, 0x80,
82569 + 0x4f, 0x9e, 0x26, 0x4d, 0x00, 0xca, 0x9d, 0x29, 0x15, 0x07, 0xbc, 0xde,
82570 + 0xe0, 0xf9, 0xa2, 0xa6, 0xaf, 0x00, 0xfa, 0xe6, 0x34, 0x7d, 0xc9, 0x99,
82571 + 0x6d, 0xec, 0x9a, 0x4a, 0x9c, 0x12, 0xe2, 0x25, 0xe2, 0x17, 0xe2, 0xfa,
82572 + 0x47, 0x7a, 0xc3, 0x6f, 0x5a, 0xf2, 0x77, 0xe7, 0xb6, 0xe7, 0xde, 0x86,
82573 + 0xba, 0x57, 0x32, 0x2a, 0xbf, 0xd9, 0x3d, 0x22, 0x1f, 0x91, 0xdc, 0xa7,
82574 + 0x52, 0xc9, 0x9c, 0xe5, 0x19, 0x0c, 0x88, 0xb2, 0xc6, 0x6b, 0xea, 0x5c,
82575 + 0xcf, 0x60, 0x0b, 0xae, 0x4d, 0x06, 0x63, 0x29, 0xde, 0xc2, 0x67, 0xea,
82576 + 0x87, 0xcc, 0x53, 0xd6, 0x7e, 0x07, 0x7b, 0x48, 0xff, 0x9f, 0x8e, 0xcb,
82577 + 0xe0, 0xe3, 0x3c, 0xf8, 0x78, 0xfc, 0x16, 0x0c, 0x16, 0xdd, 0xc6, 0x60,
82578 + 0x5b, 0x6a, 0xbc, 0x7b, 0x41, 0x53, 0xc1, 0x25, 0xfe, 0x9a, 0xdf, 0x96,
82579 + 0x15, 0xd2, 0x34, 0xca, 0xff, 0xb5, 0x23, 0x57, 0x33, 0x5c, 0x0f, 0x60,
82580 + 0x30, 0xf4, 0xb7, 0xb6, 0x23, 0x4b, 0x98, 0xbf, 0x92, 0x5f, 0xc8, 0x6e,
82581 + 0xca, 0x75, 0x2c, 0xae, 0x05, 0xfb, 0x13, 0xeb, 0x1a, 0x68, 0xd9, 0x52,
82582 + 0x72, 0xa0, 0x65, 0x60, 0xab, 0xd6, 0xf9, 0x1e, 0x32, 0xc0, 0x79, 0x52,
82583 + 0xfe, 0x42, 0xd9, 0xdb, 0xc9, 0xa7, 0xe8, 0x00, 0x4f, 0x3e, 0x78, 0x4f,
82584 + 0x56, 0xf2, 0x67, 0x78, 0x16, 0x26, 0xd6, 0xc8, 0x3d, 0x94, 0x49, 0xe2,
82585 + 0x04, 0x60, 0xc8, 0x04, 0x79, 0xac, 0xf1, 0xe0, 0xcc, 0xb3, 0x7b, 0xf1,
82586 + 0x7b, 0xb3, 0x87, 0x39, 0x33, 0xf9, 0x73, 0xd4, 0x57, 0x62, 0xdd, 0x79,
82587 + 0x8f, 0xf6, 0x0f, 0x6f, 0xc4, 0xc1, 0x73, 0xbc, 0x1f, 0x78, 0xb2, 0x0d,
82588 + 0xfa, 0xca, 0x31, 0xf3, 0xe6, 0x3d, 0xf9, 0x8a, 0xf2, 0xd9, 0x29, 0xa3,
82589 + 0x03, 0xa8, 0x47, 0xc4, 0xec, 0x8b, 0xb2, 0xcc, 0x31, 0x46, 0x9f, 0xe9,
82590 + 0x94, 0x09, 0xe8, 0xb5, 0x23, 0x95, 0x71, 0xf9, 0x72, 0xa5, 0x4b, 0xe1,
82591 + 0x86, 0xbf, 0xf6, 0xd3, 0x89, 0x61, 0x2b, 0x90, 0x07, 0x81, 0x7f, 0x66,
82592 + 0xfa, 0xdb, 0xe4, 0xcd, 0x51, 0x9d, 0xfb, 0x7b, 0x83, 0xc9, 0x8d, 0x2e,
82593 + 0xf3, 0x55, 0x39, 0x1f, 0xe8, 0x7d, 0x0b, 0xbe, 0x80, 0xd5, 0x2e, 0x33,
82594 + 0xf1, 0x2e, 0xf9, 0xb8, 0x8f, 0xf2, 0x36, 0x5f, 0x7d, 0x63, 0x9c, 0x8b,
82595 + 0x37, 0xeb, 0x91, 0x37, 0xcd, 0xd8, 0x5f, 0x34, 0xe5, 0xbf, 0xe9, 0x6d,
82596 + 0xa2, 0xc5, 0x9a, 0xcb, 0x44, 0xd4, 0xfc, 0xe6, 0x6b, 0xd4, 0x6f, 0x6c,
82597 + 0x03, 0x7d, 0xd2, 0xe0, 0x39, 0x51, 0x59, 0xd6, 0xa0, 0x5f, 0x4a, 0x55,
82598 + 0xb1, 0xce, 0x65, 0x80, 0xa8, 0x3d, 0x8d, 0x3f, 0x4b, 0x90, 0xaf, 0xd9,
82599 + 0xaa, 0x8a, 0x59, 0xaa, 0xbc, 0xed, 0x59, 0x60, 0x5d, 0xf8, 0xc4, 0xc0,
82600 + 0x10, 0x26, 0x7f, 0xa5, 0x93, 0xf1, 0x90, 0x66, 0x1d, 0x16, 0xfe, 0x2f,
82601 + 0x9d, 0xff, 0xd4, 0x2b, 0xdd, 0x65, 0xac, 0x4b, 0x88, 0xb9, 0xc1, 0x53,
82602 + 0x8c, 0x99, 0x57, 0xeb, 0x14, 0xae, 0x09, 0x75, 0x4f, 0x73, 0xbe, 0x78,
82603 + 0x88, 0x39, 0xb8, 0x67, 0x69, 0x2f, 0xa4, 0x1c, 0x03, 0xa6, 0xed, 0x38,
82604 + 0x03, 0xdb, 0x5d, 0xcd, 0x42, 0x56, 0xc6, 0x55, 0xde, 0xe7, 0x3c, 0xb0,
82605 + 0xdb, 0x1f, 0xf8, 0x7f, 0x2a, 0xf6, 0xd3, 0x07, 0x64, 0xad, 0xda, 0x01,
82606 + 0x7e, 0xd0, 0x2e, 0x44, 0x95, 0x7f, 0x7d, 0xe3, 0x28, 0xed, 0x1d, 0x6d,
82607 + 0x89, 0x5e, 0x8b, 0xad, 0xda, 0xf7, 0x7a, 0xf5, 0xb7, 0x33, 0x7b, 0x65,
82608 + 0xb3, 0x16, 0xda, 0x42, 0xf8, 0x87, 0xd5, 0xa8, 0xb1, 0xcb, 0x9d, 0xd0,
82609 + 0xdd, 0xdf, 0x8f, 0xd6, 0x95, 0xaf, 0xce, 0xf9, 0xd3, 0x06, 0x45, 0x99,
82610 + 0x17, 0xd7, 0x59, 0xf7, 0x38, 0xf7, 0x66, 0x1b, 0xa4, 0x71, 0x87, 0x7b,
82611 + 0x90, 0xe3, 0x31, 0x87, 0x82, 0x73, 0x8c, 0x4b, 0xf4, 0xfc, 0x63, 0x62,
82612 + 0xc3, 0x6f, 0x89, 0x2c, 0x11, 0xeb, 0xdd, 0xec, 0xbb, 0x44, 0x2e, 0xba,
82613 + 0xe6, 0x5b, 0xec, 0x41, 0x8d, 0x65, 0x32, 0x28, 0xeb, 0xe1, 0xf7, 0xd9,
82614 + 0xfc, 0x35, 0xdb, 0xcd, 0xd0, 0xb7, 0xd8, 0xd5, 0x96, 0xe2, 0xef, 0xff,
82615 + 0x01, 0x37, 0x64, 0x26, 0x2b, 0x1c, 0x4c, 0x00, 0x00, 0x00 };
82616
82617 static const u32 bnx2_COM_b09FwData[(0x0/4) + 1] = { 0x0 };
82618 static const u32 bnx2_COM_b09FwRodata[(0x30/4) + 1] = {
82619 - 0x80080100, 0x80080080, 0x80080000, 0x80080240, 0x08000ea4, 0x08000efc,
82620 - 0x08000f40, 0x08000fd4, 0x08001018, 0x80080100, 0x80080080, 0x80080000,
82621 + 0x80080100, 0x80080080, 0x80080000, 0x80080240, 0x08000e20, 0x08000e78,
82622 + 0x08000ebc, 0x08000f50, 0x08000f94, 0x80080100, 0x80080080, 0x80080000,
82623 0x00000000 };
82624
82625 static struct fw_info bnx2_com_fw_09 = {
82626 - /* Firmware version: 4.6.15 */
82627 + /* Firmware version: 4.4.23 */
82628 .ver_major = 0x4,
82629 - .ver_minor = 0x6,
82630 - .ver_fix = 0xf,
82631 + .ver_minor = 0x4,
82632 + .ver_fix = 0x17,
82633
82634 .start_addr = 0x080000f8,
82635
82636 .text_addr = 0x08000000,
82637 - .text_len = 0x4a7c,
82638 + .text_len = 0x4c18,
82639 .text_index = 0x0,
82640 .gz_text = bnx2_COM_b09FwText,
82641 .gz_text_len = sizeof(bnx2_COM_b09FwText),
82642 @@ -865,1189 +866,1210 @@
82643 .data_index = 0x0,
82644 .data = bnx2_COM_b09FwData,
82645
82646 - .sbss_addr = 0x08004ae0,
82647 + .sbss_addr = 0x08004c60,
82648 .sbss_len = 0x38,
82649 .sbss_index = 0x0,
82650
82651 - .bss_addr = 0x08004b18,
82652 - .bss_len = 0xc0,
82653 + .bss_addr = 0x08004c98,
82654 + .bss_len = 0xbc,
82655 .bss_index = 0x0,
82656
82657 - .rodata_addr = 0x08004a7c,
82658 + .rodata_addr = 0x08004c18,
82659 .rodata_len = 0x30,
82660 .rodata_index = 0x0,
82661 .rodata = bnx2_COM_b09FwRodata,
82662 };
82663
82664 static u8 bnx2_CP_b09FwText[] = {
82665 - 0xa5, 0xbc, 0x0d, 0x74, 0x1c, 0xe5, 0x95, 0x26, 0xfc, 0x54, 0x75, 0xb7,
82666 - 0xd4, 0x92, 0x5a, 0x52, 0x49, 0x6e, 0x8b, 0x36, 0x68, 0x70, 0xb5, 0x55,
82667 - 0x2d, 0x0b, 0x4b, 0x40, 0xb5, 0x24, 0x3b, 0xed, 0x6c, 0x83, 0x3b, 0xb6,
82668 - 0x6c, 0x64, 0x63, 0x40, 0x36, 0x06, 0xc4, 0xb7, 0xfe, 0x3e, 0x7a, 0xfc,
82669 - 0x03, 0x86, 0x38, 0x19, 0x91, 0xcd, 0xce, 0x0a, 0xd6, 0x59, 0x55, 0xe4,
82670 - 0x3f, 0xd9, 0x6e, 0x75, 0x4b, 0x42, 0xfe, 0xe1, 0xec, 0x9c, 0xa5, 0x2d,
82671 - 0xcb, 0x96, 0x21, 0xad, 0x16, 0x24, 0x6c, 0xc6, 0x39, 0x27, 0x09, 0x1a,
82672 - 0x63, 0x83, 0x0d, 0x18, 0xc8, 0x24, 0xf9, 0x86, 0xc9, 0xd9, 0x5d, 0x34,
82673 - 0xc6, 0xfc, 0x19, 0x70, 0x1c, 0x92, 0xc9, 0x9a, 0x19, 0x4c, 0xed, 0x73,
82674 - 0xab, 0xd5, 0xb6, 0xec, 0x30, 0xc9, 0xcc, 0x59, 0x9d, 0xd3, 0xa7, 0xab,
82675 - 0xab, 0xde, 0x9f, 0xfb, 0xde, 0xf7, 0xde, 0xe7, 0x3e, 0xf7, 0x7d, 0xdf,
82676 - 0x92, 0x0e, 0x14, 0x63, 0xf2, 0xaf, 0x94, 0x9f, 0x9b, 0x9a, 0x3b, 0xd6,
82677 - 0xce, 0x0d, 0xdf, 0x34, 0x4f, 0x7e, 0xbb, 0xcb, 0x0b, 0xdc, 0xf8, 0xb2,
82678 - 0xbf, 0x28, 0x22, 0x57, 0xdf, 0xd2, 0xbf, 0xb4, 0xe0, 0xbf, 0xf0, 0x17,
82679 - 0x41, 0x50, 0xe1, 0x57, 0xfd, 0xe4, 0x4f, 0x17, 0xa0, 0xe5, 0xfb, 0x97,
82680 - 0x0f, 0xbc, 0x6a, 0xd4, 0xb8, 0x77, 0xa1, 0x01, 0xaf, 0x2b, 0xba, 0xaa,
82681 - 0x7d, 0xad, 0x01, 0xc4, 0x32, 0xf5, 0xfa, 0x22, 0x5c, 0xb4, 0x2d, 0xbf,
82682 - 0x1b, 0x72, 0xff, 0xcf, 0xa2, 0x9f, 0x3f, 0xf5, 0x93, 0xaf, 0x04, 0xcf,
82683 - 0xa7, 0x5d, 0xf0, 0x6a, 0x51, 0x0b, 0x5a, 0x2d, 0xbc, 0xd5, 0xac, 0xf3,
82684 - 0x57, 0xb3, 0xb7, 0xa9, 0x28, 0xcb, 0xb7, 0x15, 0x0c, 0xa4, 0x11, 0xd4,
82685 - 0x2c, 0x04, 0xeb, 0x2c, 0x20, 0xee, 0x8e, 0x22, 0x5e, 0x18, 0xf5, 0xa2,
82686 - 0xc0, 0x28, 0x40, 0x5c, 0xeb, 0xd4, 0xb7, 0x34, 0x03, 0x0b, 0x13, 0x5e,
82687 - 0xfd, 0x74, 0x06, 0x58, 0x9b, 0xf0, 0x62, 0xc2, 0xe5, 0xd3, 0xdf, 0xc9,
82688 - 0x44, 0xca, 0x72, 0xfa, 0x88, 0xc1, 0x65, 0x20, 0xae, 0x46, 0xe5, 0x3e,
82689 - 0xf4, 0x45, 0x19, 0xa9, 0x0b, 0x6c, 0x4b, 0x7d, 0x5b, 0x7f, 0x37, 0x11,
82690 - 0xd4, 0xb6, 0xa1, 0x3e, 0x30, 0x84, 0x42, 0xc4, 0xfd, 0xc1, 0x3a, 0xe0,
82691 - 0xf3, 0x8b, 0x3b, 0x53, 0x0a, 0x3c, 0xc6, 0x34, 0xb4, 0xec, 0x07, 0x76,
82692 - 0xa4, 0x82, 0x31, 0x83, 0xc3, 0xeb, 0x19, 0x93, 0xba, 0x41, 0x2d, 0xcd,
82693 - 0xe7, 0x5b, 0x52, 0xc0, 0xd6, 0xd4, 0x34, 0x6c, 0xeb, 0xb3, 0xf1, 0xa2,
82694 - 0x59, 0xa3, 0x1d, 0x60, 0x0f, 0xdd, 0xce, 0xf3, 0x69, 0xb0, 0xd2, 0xf2,
82695 - 0xfc, 0x03, 0xfb, 0x27, 0xb3, 0x35, 0x3c, 0x3b, 0xe6, 0xc7, 0x0b, 0x63,
82696 - 0x15, 0xd8, 0xd1, 0x57, 0x81, 0xed, 0x7d, 0x75, 0x50, 0x0d, 0x1b, 0x75,
82697 - 0xe1, 0x3a, 0x14, 0xcc, 0xb7, 0xf1, 0x8e, 0xd9, 0x80, 0xad, 0x6c, 0xf8,
82698 - 0xcd, 0x86, 0x2a, 0xac, 0xd1, 0xaa, 0xb1, 0xc5, 0xf8, 0x0a, 0x72, 0x63,
82699 - 0xfd, 0xfc, 0x62, 0x2a, 0x85, 0xb8, 0x27, 0xea, 0x56, 0x55, 0xe3, 0x56,
82700 - 0x9c, 0xdb, 0x1d, 0xc5, 0x27, 0xbb, 0xb1, 0xba, 0x0c, 0xb6, 0x9d, 0x09,
82701 - 0x87, 0xda, 0x36, 0x2a, 0x9a, 0xfe, 0x4c, 0x86, 0x02, 0xad, 0x74, 0xb3,
82702 - 0x3d, 0xe8, 0x43, 0x99, 0xa9, 0x53, 0xc1, 0xfe, 0x52, 0xec, 0x37, 0x25,
82703 - 0xb2, 0x04, 0xf0, 0x93, 0xd9, 0x7f, 0x41, 0x7b, 0xc8, 0x8d, 0x69, 0x6b,
82704 - 0xea, 0x2d, 0xca, 0xa4, 0x53, 0x9e, 0x6a, 0xfc, 0x60, 0x2c, 0x80, 0xef,
82705 - 0x53, 0xb6, 0xe7, 0xc6, 0x44, 0xc6, 0xe0, 0x3e, 0x0b, 0x15, 0x18, 0xee,
82706 - 0xab, 0xc6, 0xb3, 0x46, 0x03, 0x9e, 0xa3, 0x8c, 0x9b, 0xcd, 0x3a, 0xac,
82707 - 0x89, 0xdc, 0x4f, 0x79, 0x14, 0xac, 0x6c, 0xf8, 0xf3, 0x49, 0xb9, 0x82,
82708 - 0x3a, 0x54, 0x15, 0xb1, 0xca, 0x60, 0x9d, 0xae, 0x4a, 0x9b, 0x97, 0xe5,
82709 - 0xed, 0x4d, 0xc1, 0xf2, 0x46, 0x45, 0xe6, 0x5b, 0x91, 0xa1, 0xbc, 0xdf,
82710 - 0xdb, 0x1d, 0x32, 0x37, 0xa8, 0x58, 0xee, 0xa3, 0xcc, 0x8f, 0x84, 0x43,
82711 - 0x91, 0x39, 0x94, 0x79, 0x24, 0xa3, 0x72, 0x3c, 0x7e, 0xfd, 0x10, 0x65,
82712 - 0x8f, 0xad, 0x54, 0x29, 0x3b, 0x65, 0x49, 0x51, 0x96, 0x14, 0x65, 0x49,
82713 - 0x51, 0x16, 0x47, 0xee, 0x3a, 0xca, 0x9c, 0x9b, 0xa3, 0xa1, 0xcc, 0x04,
82714 - 0xe5, 0x9d, 0x2a, 0x67, 0x35, 0x65, 0x47, 0xbc, 0x22, 0xfa, 0x6d, 0xbd,
82715 - 0x26, 0x49, 0x7d, 0xa7, 0x6c, 0xfb, 0x4d, 0xd3, 0xb6, 0x3f, 0x35, 0x7d,
82716 - 0xd4, 0x5f, 0x8a, 0x76, 0x90, 0x97, 0x67, 0xa6, 0x55, 0x10, 0x45, 0x0b,
82717 - 0x4d, 0xd0, 0x3e, 0xde, 0x1c, 0x8a, 0x54, 0x2a, 0x2a, 0xdc, 0x86, 0xa6,
82718 - 0xcf, 0xce, 0x06, 0x4d, 0xea, 0x47, 0x0f, 0x65, 0xa1, 0x1b, 0x59, 0xb6,
82719 - 0x75, 0x45, 0xbf, 0x41, 0x6d, 0x1c, 0xd2, 0xaf, 0xce, 0xfe, 0x27, 0x26,
82720 - 0xe7, 0x4e, 0xda, 0x0f, 0xb0, 0x4f, 0xe9, 0x5f, 0xda, 0xb6, 0xed, 0xdf,
82721 - 0x98, 0x30, 0x34, 0x84, 0xac, 0x7e, 0xda, 0x9f, 0x2b, 0xaa, 0xe9, 0x1d,
82722 - 0x19, 0x3e, 0xbf, 0xd4, 0x46, 0x6e, 0x3e, 0xd6, 0x64, 0xf4, 0xc9, 0x31,
82723 - 0x04, 0x29, 0x82, 0xd8, 0x41, 0x20, 0xee, 0x8b, 0x6a, 0x22, 0x7b, 0xdb,
82724 - 0xbe, 0xde, 0x2e, 0x7b, 0x86, 0x21, 0xba, 0x32, 0x3a, 0x67, 0xb8, 0x7c,
82725 - 0x91, 0x73, 0x73, 0x1f, 0xb5, 0x4a, 0x9b, 0xc3, 0x28, 0x36, 0xe0, 0x2b,
82726 - 0x32, 0xd0, 0x96, 0x1c, 0x2d, 0xb6, 0x4a, 0xa2, 0x3f, 0xbe, 0xbb, 0x77,
82727 - 0xd4, 0x8b, 0xe2, 0x51, 0x03, 0x45, 0xa3, 0x4f, 0xbb, 0x51, 0xd6, 0x80,
82728 - 0x5d, 0x63, 0x0f, 0xb9, 0x73, 0x63, 0x5b, 0x32, 0x39, 0x46, 0xc7, 0xf6,
82729 - 0xbd, 0xef, 0x26, 0xce, 0xdb, 0x05, 0x46, 0xd1, 0x7d, 0xae, 0xa8, 0xa1,
82730 - 0x1f, 0x02, 0xce, 0xaf, 0x69, 0x5e, 0x84, 0x6e, 0x4d, 0xc1, 0x4c, 0xe3,
82731 - 0x95, 0x12, 0x94, 0x45, 0x60, 0x8d, 0x55, 0xc5, 0x0b, 0xa2, 0xfe, 0x38,
82732 - 0xe7, 0x06, 0x2f, 0x27, 0xd2, 0xf0, 0xf4, 0xda, 0xb6, 0x94, 0x7d, 0x07,
82733 - 0x77, 0xdf, 0xad, 0x46, 0x8f, 0xde, 0xec, 0x41, 0x0b, 0xcb, 0x63, 0xd3,
82734 - 0x89, 0xe6, 0x4f, 0x15, 0x75, 0x77, 0x1b, 0xac, 0x11, 0x17, 0x62, 0x5a,
82735 - 0x9c, 0xdf, 0xd7, 0x5f, 0xbf, 0x3c, 0xd2, 0x86, 0xc4, 0xc8, 0x05, 0xde,
82736 - 0x77, 0xf3, 0x5e, 0x04, 0xc9, 0xd4, 0xf5, 0xd7, 0xdf, 0x11, 0x89, 0xa3,
82737 - 0x77, 0x44, 0xae, 0xdd, 0x18, 0xaf, 0x88, 0x63, 0xfb, 0x5e, 0x1d, 0xe5,
82738 - 0x46, 0x1b, 0x52, 0x23, 0x72, 0x6d, 0xdb, 0x67, 0xcc, 0xef, 0x62, 0x5f,
82739 - 0x03, 0xfd, 0xff, 0x9a, 0x36, 0x6c, 0xdb, 0x6b, 0xa1, 0xd0, 0xb0, 0xa8,
82740 - 0x7b, 0xc5, 0xfd, 0xf7, 0x0d, 0x0a, 0xf4, 0xbb, 0xe1, 0x2e, 0x30, 0x44,
82741 - 0x6f, 0x11, 0xf7, 0xfa, 0x44, 0x54, 0x9b, 0x69, 0xd8, 0xf6, 0x90, 0x39,
82742 - 0x07, 0x0f, 0xb4, 0xad, 0x81, 0x75, 0xc0, 0x07, 0x6b, 0x95, 0x7c, 0xb7,
82743 - 0x51, 0x87, 0x6b, 0xd0, 0x7d, 0x60, 0x0d, 0x7a, 0x9e, 0xa0, 0xe3, 0x56,
82744 - 0x68, 0xce, 0x3c, 0xfd, 0x64, 0xb6, 0xc8, 0x24, 0xf2, 0xb5, 0xf3, 0x23,
82745 - 0xba, 0xfd, 0x4b, 0x7e, 0x4b, 0x99, 0x0b, 0x36, 0xa6, 0x5f, 0x2e, 0xb3,
82746 - 0x9d, 0x65, 0xb6, 0x5d, 0x51, 0x26, 0x82, 0xa7, 0xc6, 0x44, 0x17, 0xa2,
82747 - 0xb2, 0x3f, 0xa5, 0x8b, 0x9f, 0xda, 0xdd, 0x7e, 0xd1, 0x85, 0xd5, 0xee,
82748 - 0x41, 0xb0, 0xed, 0x41, 0xc5, 0x8d, 0xa5, 0xbd, 0x60, 0x1d, 0x3a, 0x41,
82749 - 0x71, 0x30, 0x56, 0xab, 0x44, 0x51, 0xdc, 0xab, 0x60, 0x69, 0xb8, 0x08,
82750 - 0x7a, 0x85, 0xb4, 0xf7, 0x4b, 0xdb, 0xd2, 0x44, 0xde, 0x13, 0x28, 0xe1,
82751 - 0xfd, 0x75, 0xe1, 0x9f, 0x13, 0xcf, 0x44, 0xa6, 0x30, 0xcb, 0xaf, 0xe0,
82752 - 0xfd, 0x37, 0xa6, 0xfc, 0x96, 0x72, 0xb6, 0xbd, 0x99, 0x3e, 0xdf, 0x43,
82753 - 0x1b, 0xdf, 0x9e, 0x8a, 0x05, 0xa9, 0x25, 0xcb, 0x13, 0xe5, 0xfd, 0x68,
82754 - 0xa8, 0xb5, 0x1b, 0xd2, 0x0f, 0x94, 0xe2, 0x28, 0xdc, 0x99, 0xe6, 0x09,
82755 - 0xef, 0xa9, 0x84, 0xd1, 0xfe, 0x8c, 0xe2, 0xa1, 0xb1, 0x4b, 0x3f, 0x13,
82756 - 0xde, 0x37, 0x12, 0x0a, 0xde, 0x37, 0x42, 0x1d, 0x67, 0x95, 0x09, 0xef,
82757 - 0xeb, 0x19, 0x0d, 0x33, 0x7a, 0x83, 0xed, 0x96, 0x12, 0xc1, 0x8f, 0x32,
82758 - 0x7e, 0x04, 0x7a, 0xa3, 0x38, 0x92, 0x31, 0xf1, 0xf4, 0x15, 0x38, 0xf0,
82759 - 0xa5, 0x7f, 0x96, 0x8b, 0x63, 0x5f, 0x97, 0xd0, 0xd1, 0x6d, 0x5e, 0xb4,
82760 - 0x63, 0x1a, 0xe2, 0xe5, 0xd1, 0x09, 0xef, 0x27, 0xbd, 0x50, 0xca, 0xa2,
82761 - 0x46, 0x20, 0xab, 0xfc, 0x83, 0x1d, 0xf7, 0x4b, 0x31, 0xca, 0xe7, 0x60,
82762 - 0x59, 0x94, 0x76, 0x47, 0x8c, 0x4a, 0x9d, 0xb7, 0x4b, 0x68, 0xb3, 0x05,
82763 - 0xd1, 0x6b, 0x31, 0x32, 0x68, 0xe0, 0xe9, 0x84, 0x6d, 0x7f, 0x6c, 0x8e,
82764 - 0x47, 0x7c, 0x30, 0xda, 0x3e, 0x42, 0x30, 0x36, 0x87, 0x7a, 0x39, 0x91,
82765 - 0x31, 0x30, 0x9c, 0x88, 0xe2, 0xc5, 0x44, 0x8d, 0xb6, 0x19, 0x4d, 0x88,
82766 - 0x05, 0x72, 0x31, 0x64, 0x94, 0x72, 0x0f, 0x85, 0xda, 0x50, 0x1e, 0x8d,
82767 - 0xe0, 0x28, 0xe5, 0x3e, 0x37, 0x57, 0xda, 0x31, 0xf1, 0xfa, 0xbf, 0x42,
82768 - 0x56, 0xe2, 0x3b, 0x9e, 0xa4, 0xac, 0x91, 0xa6, 0x8b, 0x36, 0xa6, 0x79,
82769 - 0x71, 0xda, 0xbc, 0x86, 0x76, 0x08, 0xab, 0x28, 0xea, 0x75, 0xf7, 0x24,
82770 - 0x34, 0x1c, 0xce, 0xf8, 0xdc, 0x9b, 0x13, 0x7e, 0x1c, 0xa0, 0xbf, 0xcd,
82771 - 0x88, 0xc2, 0x0a, 0xb0, 0xdd, 0x19, 0xc4, 0xb5, 0xec, 0x60, 0x35, 0xc6,
82772 - 0x06, 0x83, 0xe6, 0x1b, 0x4a, 0x00, 0x87, 0x86, 0xaf, 0xc5, 0xe8, 0xa0,
82773 - 0x82, 0x91, 0x10, 0x65, 0xe7, 0xf5, 0xf7, 0x06, 0xaf, 0x47, 0x66, 0xd0,
82774 - 0x85, 0x5d, 0x8e, 0x5e, 0x1d, 0x9c, 0x99, 0xfc, 0xbe, 0x16, 0xe9, 0x61,
82775 - 0xb8, 0xe7, 0xf4, 0x6a, 0x78, 0x26, 0xe3, 0x76, 0x1b, 0xbd, 0x7e, 0x0c,
82776 - 0x67, 0x7e, 0xca, 0x79, 0x93, 0xb6, 0x75, 0x0c, 0x25, 0x0e, 0x39, 0x73,
82777 - 0x58, 0x1e, 0x65, 0x63, 0xb9, 0xf8, 0xca, 0x58, 0xa6, 0x33, 0xce, 0x34,
82778 - 0x13, 0x87, 0xc4, 0xc7, 0xbd, 0xc4, 0x20, 0xf1, 0xf1, 0xb7, 0x14, 0x94,
82779 - 0x35, 0x63, 0xf3, 0x58, 0xfe, 0xb9, 0x42, 0xfb, 0x77, 0x63, 0x9d, 0xd6,
82780 - 0x80, 0x44, 0x4a, 0xec, 0x34, 0x8f, 0xcb, 0x72, 0x2d, 0xf3, 0x5f, 0x0c,
82781 - 0xeb, 0x60, 0x31, 0x76, 0xd1, 0xc7, 0x76, 0xee, 0x96, 0xfb, 0xb6, 0xfd,
82782 - 0x50, 0xb8, 0x9c, 0x36, 0x86, 0xc5, 0x45, 0x08, 0x99, 0x1f, 0x38, 0xb2,
82783 - 0x59, 0x38, 0x94, 0x91, 0x18, 0xaa, 0x33, 0xbe, 0x9d, 0x60, 0x5f, 0xcd,
82784 - 0xec, 0xc7, 0xc4, 0x4f, 0x39, 0x37, 0x7f, 0x3d, 0x56, 0x87, 0x1f, 0x8e,
82785 - 0x19, 0xf8, 0xef, 0x63, 0x3a, 0x9e, 0xbf, 0x02, 0xd7, 0xef, 0xa6, 0xae,
82786 - 0x04, 0xc3, 0x1a, 0xb0, 0x25, 0x55, 0x80, 0x6d, 0x83, 0xc5, 0xd8, 0x3c,
82787 - 0x58, 0x53, 0xf7, 0x22, 0xf1, 0xf8, 0x87, 0xe6, 0x1d, 0x18, 0xaf, 0x6c,
82788 - 0x76, 0x7c, 0x66, 0x07, 0xef, 0xef, 0x1c, 0xac, 0xe1, 0x1c, 0xda, 0xb6,
82789 - 0x1a, 0xae, 0x8f, 0x1c, 0x25, 0xbe, 0x4f, 0xf8, 0x83, 0xfa, 0xb8, 0x1a,
82790 - 0xd4, 0x63, 0xf0, 0x20, 0xd1, 0xa0, 0xc2, 0x9a, 0x1e, 0x4c, 0xd3, 0x8b,
82791 - 0xe1, 0x37, 0x1e, 0xe2, 0xd8, 0x82, 0xba, 0xa5, 0x36, 0xd0, 0x7e, 0x19,
82792 - 0x33, 0x54, 0x93, 0xf8, 0x52, 0x8c, 0x4f, 0x06, 0x83, 0x3d, 0x96, 0xba,
82793 - 0x02, 0x56, 0xa5, 0x6d, 0x7f, 0x3f, 0x8c, 0x8e, 0x6b, 0xa2, 0x88, 0x4d,
82794 - 0x67, 0x2c, 0xb8, 0x3e, 0x1a, 0x05, 0xe3, 0x18, 0xce, 0xf5, 0x1a, 0x81,
82795 - 0xbf, 0x53, 0xee, 0xc6, 0x7f, 0x6c, 0x0b, 0xea, 0xba, 0x5a, 0x6f, 0x1d,
82796 - 0x50, 0x49, 0x36, 0xaa, 0xa0, 0x07, 0xa2, 0xcb, 0xd0, 0xe9, 0xf0, 0x04,
82797 - 0x05, 0x9a, 0x61, 0x62, 0x73, 0x8a, 0x95, 0xfc, 0x35, 0xed, 0xfd, 0x6a,
82798 - 0xcd, 0x05, 0x53, 0x0d, 0x9e, 0x68, 0x53, 0x89, 0xb7, 0x4d, 0xe7, 0x6c,
82799 - 0xbd, 0xca, 0xb6, 0x1b, 0x9b, 0xa4, 0x4f, 0x1d, 0x95, 0x9c, 0xe7, 0x0a,
82800 - 0xce, 0x73, 0x63, 0xb6, 0x18, 0x67, 0x07, 0x61, 0x5d, 0x13, 0x0d, 0xb6,
82801 - 0x3e, 0xa2, 0x16, 0xe3, 0xc3, 0xe1, 0x62, 0xbc, 0x33, 0xe8, 0xc6, 0x07,
82802 - 0x83, 0xb6, 0xbd, 0xde, 0x2c, 0x47, 0x41, 0x18, 0xd3, 0x0b, 0x10, 0x3a,
82803 - 0x3f, 0x04, 0x0b, 0x5f, 0xb0, 0xec, 0xef, 0x06, 0x03, 0xf8, 0xc7, 0xc1,
82804 - 0xaf, 0xe2, 0xf9, 0xca, 0xd8, 0xc9, 0x69, 0x8c, 0x91, 0x17, 0x68, 0x3f,
82805 - 0xe7, 0x12, 0xc1, 0xf6, 0x19, 0xae, 0x60, 0x27, 0x79, 0xcb, 0x86, 0xc7,
82806 - 0x94, 0x60, 0xfc, 0x0d, 0x25, 0xa8, 0xf7, 0x2a, 0x7e, 0x7c, 0x44, 0x3b,
82807 - 0x3d, 0x93, 0xa9, 0x89, 0xfc, 0x9c, 0xfd, 0xff, 0xde, 0xfc, 0xa1, 0x3d,
82808 - 0x5e, 0x25, 0x3a, 0x14, 0x7d, 0x51, 0xe7, 0x29, 0xea, 0x9c, 0xfe, 0xfb,
82809 - 0xc3, 0x14, 0x75, 0x4e, 0x79, 0x9e, 0xff, 0x83, 0xf8, 0x25, 0xf3, 0x15,
82810 - 0xe1, 0x3c, 0x5e, 0x87, 0xff, 0xe2, 0x8c, 0xed, 0xa4, 0xfd, 0x9f, 0xfc,
82811 - 0x32, 0xbe, 0xcf, 0xfd, 0x39, 0x0c, 0x92, 0x71, 0x9e, 0xb0, 0xe3, 0x9a,
82812 - 0x8c, 0x51, 0xc6, 0xea, 0xe8, 0x52, 0xef, 0x50, 0x1e, 0x55, 0x51, 0x6c,
82813 - 0xdb, 0x4f, 0x98, 0x93, 0xcf, 0xfd, 0xf9, 0xb1, 0x7e, 0x95, 0xf7, 0x65,
82814 - 0xbc, 0x67, 0x5d, 0xa2, 0x7b, 0x5d, 0xbd, 0x89, 0xbf, 0x83, 0x56, 0x0c,
82815 - 0xa7, 0x0b, 0xf9, 0xbb, 0x2e, 0x76, 0xe9, 0xf7, 0x93, 0xa5, 0x57, 0x3e,
82816 - 0xa7, 0x9d, 0x3a, 0xfd, 0xdd, 0xcd, 0xdf, 0x32, 0x96, 0x37, 0x69, 0x37,
82817 - 0x5f, 0x66, 0x27, 0x62, 0x23, 0x75, 0xb4, 0xa7, 0x33, 0x12, 0x57, 0x2c,
82818 - 0x7f, 0xd4, 0x6b, 0xa9, 0x51, 0xe8, 0x74, 0x7d, 0xaf, 0x12, 0xed, 0x80,
82819 - 0x9e, 0xb1, 0x70, 0x4f, 0xb3, 0x0b, 0xdf, 0x6a, 0x56, 0x30, 0xcd, 0xe8,
82820 - 0x40, 0xdf, 0x3c, 0xcb, 0xae, 0x30, 0xf6, 0xab, 0xe2, 0x03, 0x05, 0x49,
82821 - 0x58, 0xf4, 0x3b, 0x44, 0xc8, 0x95, 0xca, 0xff, 0x9d, 0x82, 0xd3, 0xe1,
82822 - 0x10, 0x6d, 0x6e, 0x0b, 0x39, 0x15, 0x50, 0x98, 0x84, 0xb7, 0x94, 0xf3,
82823 - 0x3f, 0xda, 0x0b, 0x6f, 0x31, 0x7d, 0x7f, 0x59, 0x6f, 0x4d, 0xc7, 0x7b,
82824 - 0xc4, 0x8a, 0xac, 0x12, 0x6c, 0xa7, 0xbe, 0xcd, 0x32, 0x25, 0xd8, 0x7a,
82825 - 0x3b, 0xf5, 0x5d, 0xab, 0x48, 0x3f, 0x51, 0xd4, 0x65, 0xb6, 0x10, 0x73,
82826 - 0xe4, 0x3a, 0x02, 0x23, 0xf3, 0xab, 0x49, 0xd9, 0xe1, 0xf5, 0x50, 0x86,
82827 - 0x83, 0x89, 0x77, 0xed, 0xb4, 0x16, 0xd4, 0xd3, 0xce, 0xef, 0x0d, 0xfc,
82828 - 0x0d, 0x6f, 0x41, 0x74, 0x23, 0x5e, 0x4a, 0x3c, 0xe5, 0xcf, 0x97, 0xcb,
82829 - 0xc9, 0x7a, 0xb5, 0x3c, 0xff, 0xd3, 0x8e, 0xf9, 0x73, 0xf2, 0xf8, 0x92,
82830 - 0x5b, 0x40, 0x8e, 0xe2, 0x2d, 0x64, 0x5f, 0xef, 0x3b, 0xf5, 0x23, 0xac,
82831 - 0x5f, 0xd3, 0xde, 0xab, 0x04, 0xeb, 0x3e, 0x42, 0xbd, 0xfe, 0x3d, 0x04,
82832 - 0x5b, 0x8f, 0x92, 0x5b, 0x1a, 0x93, 0xf2, 0x84, 0x32, 0x0e, 0x9f, 0x71,
82833 - 0xe4, 0x99, 0x95, 0x81, 0xe2, 0xea, 0x85, 0x6f, 0xa6, 0x51, 0x8b, 0x2e,
82834 - 0x67, 0x4e, 0xa1, 0x04, 0x7a, 0x75, 0x94, 0x91, 0xbf, 0x04, 0x46, 0x81,
82835 - 0xb1, 0x01, 0x72, 0xb9, 0x70, 0x0d, 0xbe, 0xc9, 0x58, 0x30, 0x83, 0x65,
82836 - 0x1e, 0xd3, 0x2e, 0xe1, 0x97, 0xd2, 0x93, 0x20, 0xc0, 0x4c, 0xcf, 0xf1,
82837 - 0xb2, 0xf8, 0xbd, 0x88, 0xc9, 0xbd, 0x27, 0x13, 0x50, 0x52, 0x89, 0xe0,
82838 - 0x3e, 0xc0, 0x18, 0x0f, 0xbb, 0x62, 0x0f, 0x07, 0xd0, 0x85, 0x73, 0xe1,
82839 - 0x50, 0x3c, 0xab, 0x84, 0xda, 0x07, 0x14, 0xd3, 0xbb, 0x8b, 0xfd, 0x6d,
82840 - 0x67, 0x99, 0x1d, 0xfc, 0x9c, 0x35, 0x0c, 0x73, 0x85, 0x12, 0xbb, 0xa1,
82841 - 0x80, 0x65, 0x6a, 0xc2, 0x21, 0xf2, 0xcc, 0xd0, 0x85, 0x95, 0x30, 0xbd,
82842 - 0x4f, 0x65, 0xa4, 0xad, 0x88, 0xb2, 0x25, 0xfb, 0xa4, 0x9a, 0xc3, 0xa3,
82843 - 0xdf, 0x4f, 0xea, 0xec, 0x1d, 0xf9, 0xed, 0xf4, 0xed, 0xee, 0xfd, 0xaf,
82844 - 0x85, 0x7f, 0x78, 0xef, 0xaf, 0xa7, 0x5d, 0x79, 0xaf, 0x5e, 0x1b, 0xa6,
82845 - 0xff, 0xb9, 0x8c, 0x22, 0xce, 0x9d, 0xf0, 0xa3, 0x58, 0x9d, 0x07, 0x72,
82846 - 0xcf, 0x85, 0xb4, 0x3b, 0x16, 0x70, 0xe1, 0x73, 0x3b, 0xb6, 0x4a, 0xee,
82847 - 0x15, 0x23, 0xde, 0x56, 0x1f, 0x70, 0xa3, 0x3e, 0xb2, 0x95, 0x58, 0x30,
82848 - 0xb1, 0x6a, 0x21, 0x9f, 0x85, 0xcc, 0x17, 0x51, 0xa3, 0x6f, 0x85, 0x5c,
82849 - 0x7f, 0x46, 0x9b, 0x5d, 0x28, 0x75, 0x59, 0x26, 0xc7, 0x7d, 0x04, 0x6b,
82850 - 0xb6, 0x98, 0x36, 0x5e, 0x22, 0x4c, 0x14, 0x46, 0x8f, 0x28, 0xa7, 0x13,
82851 - 0x5f, 0xd8, 0x31, 0x37, 0x96, 0xd3, 0x2f, 0x4d, 0xea, 0x59, 0xf7, 0x46,
82852 - 0x43, 0xfa, 0x09, 0x66, 0x0a, 0xae, 0xa8, 0xa5, 0x4c, 0x64, 0xb6, 0x28,
82853 - 0xef, 0x66, 0x7a, 0x94, 0x33, 0x19, 0xa9, 0x7b, 0x44, 0x79, 0x27, 0x23,
82854 - 0xf1, 0xb0, 0x5a, 0x3f, 0x4e, 0x7e, 0x43, 0x4e, 0xa5, 0x6e, 0x36, 0xa1,
82855 - 0x6c, 0x33, 0xcb, 0xc8, 0xf3, 0x8d, 0xba, 0x21, 0xca, 0x7b, 0xb0, 0x19,
82856 - 0xe6, 0x76, 0xd3, 0x83, 0x09, 0x0d, 0xbe, 0xcd, 0xa6, 0x5b, 0x7e, 0x33,
82857 - 0x1f, 0x90, 0xba, 0xd5, 0xfa, 0xd6, 0xcc, 0x45, 0xfa, 0x57, 0xee, 0xf7,
82858 - 0xc1, 0xe6, 0xfc, 0xbd, 0xdf, 0xda, 0xe3, 0xab, 0x54, 0xfe, 0xfe, 0x77,
82859 - 0x2e, 0x0e, 0x85, 0x75, 0xa7, 0xf2, 0x73, 0xe1, 0x52, 0x2a, 0xf9, 0x63,
82860 - 0x05, 0x2c, 0x2d, 0x68, 0xa5, 0x99, 0x0e, 0x6d, 0x4e, 0x35, 0xd2, 0xdf,
82861 - 0x02, 0x8c, 0x95, 0x51, 0xe2, 0x3b, 0x79, 0x2f, 0xfb, 0x2c, 0x30, 0x7c,
82862 - 0x58, 0x9c, 0xa8, 0x71, 0xe5, 0xf4, 0xa7, 0x12, 0xc3, 0x5c, 0x8c, 0xe9,
82863 - 0xc2, 0xf1, 0xae, 0xe6, 0xdc, 0xd5, 0xfa, 0x07, 0x94, 0xbb, 0xc8, 0x30,
82864 - 0xea, 0x8a, 0x94, 0x6a, 0xfd, 0xdd, 0x4c, 0x94, 0x3e, 0xde, 0xce, 0x7e,
82865 - 0x7d, 0x78, 0x37, 0x51, 0xc6, 0x1c, 0x24, 0x18, 0xb3, 0xd8, 0xe0, 0x92,
82866 - 0xe6, 0x00, 0xc8, 0xf9, 0xa6, 0xfc, 0xb5, 0x81, 0xf1, 0x5f, 0x62, 0xb4,
82867 - 0x7a, 0xdb, 0xdc, 0x08, 0x36, 0x64, 0xe0, 0x5e, 0xd7, 0x1c, 0xc5, 0x7a,
82868 - 0xc6, 0xf6, 0x87, 0x18, 0x2f, 0x37, 0x32, 0x16, 0xee, 0x0a, 0x73, 0x6c,
82869 - 0x15, 0xb6, 0x5d, 0x68, 0x74, 0x49, 0x3e, 0x83, 0x5e, 0xc6, 0xe2, 0xb5,
82870 - 0x8c, 0x2f, 0x5b, 0x78, 0x7d, 0x2a, 0xf3, 0xcf, 0xf6, 0x43, 0xcc, 0xa7,
82871 - 0x5e, 0xba, 0xa2, 0x4d, 0xa8, 0xc3, 0x46, 0x7d, 0xdd, 0x56, 0xc6, 0x62,
82872 - 0xb6, 0x6b, 0x95, 0x45, 0x6d, 0xfb, 0x86, 0x50, 0x30, 0xe6, 0x51, 0x4c,
82873 - 0xbc, 0x38, 0x3a, 0x61, 0xeb, 0xd3, 0x25, 0x97, 0xca, 0xc7, 0x41, 0x19,
82874 - 0xab, 0xe4, 0x08, 0x82, 0x0f, 0x92, 0x27, 0x4c, 0xc5, 0x08, 0x15, 0x4b,
82875 - 0x06, 0x25, 0x4f, 0x08, 0x60, 0x65, 0xe2, 0xbb, 0x78, 0xb1, 0xc1, 0x8d,
82876 - 0x56, 0xe6, 0x58, 0xb7, 0x25, 0x7c, 0x58, 0x41, 0x2c, 0x5d, 0x9a, 0x60,
82877 - 0xee, 0xa4, 0xf9, 0xb1, 0x2c, 0xe1, 0xc6, 0xb1, 0x06, 0xe6, 0x40, 0xfe,
82878 - 0x42, 0x7c, 0x64, 0xba, 0x70, 0xdc, 0xd4, 0x90, 0x76, 0xfc, 0x61, 0x17,
82879 - 0x31, 0x90, 0x7a, 0x54, 0x25, 0x77, 0x10, 0x1d, 0xba, 0xa8, 0x4f, 0x15,
82880 - 0xf1, 0x4b, 0x3a, 0xfc, 0xb2, 0x5c, 0x40, 0xe4, 0x92, 0x7c, 0xe0, 0x37,
82881 - 0x76, 0x7c, 0xba, 0xd4, 0x87, 0xe5, 0x8b, 0xca, 0x38, 0x84, 0xdf, 0x12,
82882 - 0x27, 0x47, 0x4d, 0x72, 0xbb, 0xa9, 0x43, 0x3d, 0x4f, 0x6e, 0x5d, 0x8e,
82883 - 0xb7, 0x0c, 0xe1, 0xd6, 0x6f, 0x42, 0xa3, 0xef, 0xf6, 0x8c, 0x86, 0x3a,
82884 - 0xce, 0x2b, 0x2e, 0x9c, 0x32, 0xca, 0xc8, 0xfb, 0x38, 0x0f, 0xa3, 0x70,
82885 - 0x6f, 0x9d, 0x6b, 0x22, 0x39, 0xda, 0x1d, 0x29, 0xe5, 0x78, 0xdd, 0x73,
82886 - 0x73, 0x9c, 0xe8, 0xeb, 0xd4, 0xed, 0x9a, 0xb0, 0xc3, 0x89, 0x72, 0x7c,
82887 - 0x40, 0xb3, 0xed, 0x77, 0x0c, 0xd1, 0x33, 0x70, 0x78, 0x52, 0xc7, 0x07,
82888 - 0x79, 0xdd, 0x33, 0xa9, 0xe3, 0x2d, 0x6c, 0x8f, 0xfe, 0x87, 0x6d, 0x57,
82889 - 0xf0, 0x18, 0x1d, 0xcc, 0x29, 0xc9, 0x6f, 0x88, 0xc3, 0xc4, 0x95, 0x18,
82890 - 0x75, 0xfc, 0x72, 0x66, 0x83, 0xe0, 0x36, 0xa7, 0xbb, 0xd1, 0xc1, 0xef,
82891 - 0x98, 0x7a, 0x98, 0x76, 0x20, 0x7a, 0x78, 0x6b, 0x32, 0xb7, 0xb1, 0xed,
82892 - 0x01, 0x53, 0x74, 0x9c, 0xcf, 0xcb, 0x44, 0xd7, 0x37, 0x4a, 0x8e, 0xd5,
82893 - 0x03, 0x7c, 0xc1, 0xb2, 0x2e, 0xe2, 0xee, 0x42, 0xfc, 0xa0, 0x4d, 0x6c,
82894 - 0xa7, 0xd4, 0x89, 0x95, 0xf3, 0x6b, 0x6d, 0x3b, 0xdc, 0xa4, 0xe3, 0x82,
82895 - 0x51, 0x1f, 0x69, 0x54, 0x67, 0x51, 0xd6, 0x28, 0xf6, 0x91, 0x0f, 0x74,
82896 - 0xa7, 0x66, 0x22, 0xe6, 0x17, 0x5b, 0x43, 0x47, 0x41, 0x0e, 0xc3, 0x71,
82897 - 0x26, 0x61, 0xd4, 0x6d, 0xc3, 0x0c, 0x1c, 0xf0, 0xb7, 0x90, 0xc7, 0xa9,
82898 - 0x2d, 0x4c, 0xff, 0xc9, 0x9f, 0x0c, 0x6b, 0x07, 0xce, 0xda, 0x69, 0xbf,
82899 - 0xcd, 0x38, 0x49, 0x18, 0xa0, 0x2e, 0x5f, 0xd1, 0x5c, 0x78, 0xb5, 0xee,
82900 - 0x9a, 0x49, 0xbe, 0x29, 0x9c, 0xe5, 0x3d, 0xfb, 0x98, 0x5f, 0xfa, 0x62,
82901 - 0x9e, 0xa7, 0x2e, 0x73, 0x49, 0x1e, 0xe8, 0x36, 0xa4, 0x6d, 0xe6, 0x0b,
82902 - 0x63, 0x57, 0xcb, 0x30, 0x61, 0x4f, 0xf8, 0x45, 0x86, 0xa0, 0xa6, 0xab,
82903 - 0x7f, 0x6c, 0x1e, 0xaf, 0xc3, 0xcf, 0x35, 0x37, 0x7c, 0xe4, 0xc5, 0xaf,
82904 - 0xf9, 0x73, 0x6d, 0xf4, 0x9a, 0xe3, 0x33, 0x4a, 0x1d, 0xac, 0x3c, 0xa2,
82905 - 0x24, 0x89, 0x0f, 0xe3, 0x1e, 0x68, 0xe5, 0x51, 0xb7, 0xae, 0x11, 0x13,
82906 - 0x36, 0x13, 0x13, 0x2c, 0x62, 0x42, 0x5f, 0xe6, 0x88, 0x92, 0xca, 0x7c,
82907 - 0x46, 0x5d, 0x48, 0x1d, 0xb1, 0x9d, 0x2d, 0x94, 0xe5, 0x27, 0x36, 0xaa,
82908 - 0x44, 0x9e, 0x0b, 0xbc, 0xdf, 0x42, 0x1e, 0x92, 0x97, 0x53, 0x7c, 0x95,
82909 - 0x10, 0x54, 0x2c, 0xcf, 0x52, 0xb9, 0xdf, 0xaa, 0x5c, 0xcf, 0x70, 0x4b,
82910 - 0xb9, 0xee, 0xb1, 0xa3, 0x4b, 0xdd, 0x58, 0x80, 0xd9, 0xe1, 0x85, 0x8b,
82911 - 0x44, 0x17, 0x6a, 0x34, 0xa6, 0x7b, 0x61, 0x55, 0xb9, 0x88, 0xe5, 0xef,
82912 - 0x35, 0x34, 0x60, 0x11, 0x73, 0xce, 0xb3, 0x04, 0xa7, 0x6e, 0xc3, 0x85,
82913 - 0x71, 0xea, 0xe7, 0x69, 0x53, 0xd6, 0x1b, 0x6c, 0xdc, 0x16, 0xb6, 0xe2,
82914 - 0xf4, 0x78, 0xab, 0x94, 0xb6, 0x57, 0x6c, 0x08, 0x4f, 0x28, 0x43, 0x49,
82915 - 0xd4, 0x5d, 0x77, 0x16, 0x41, 0x73, 0x17, 0x79, 0x92, 0x5e, 0x31, 0x3b,
82916 - 0xe2, 0xa1, 0xe6, 0x5e, 0x4f, 0x84, 0x22, 0xc7, 0x95, 0x9c, 0x3f, 0xbd,
82917 - 0x4c, 0xdb, 0x78, 0x2b, 0x61, 0x74, 0x16, 0xba, 0x72, 0xbf, 0xdf, 0x70,
82918 - 0xf2, 0xd9, 0xbc, 0x3f, 0x05, 0x26, 0x71, 0xc7, 0xeb, 0x3d, 0x93, 0xc0,
82919 - 0x79, 0xb5, 0x59, 0xf2, 0x5a, 0x9c, 0xdf, 0x6c, 0x8e, 0x2b, 0x1e, 0xa3,
82920 - 0x8c, 0xfa, 0x10, 0x2c, 0x2e, 0x20, 0xa7, 0x14, 0xee, 0xe0, 0xf5, 0x9e,
82921 - 0x65, 0x19, 0x72, 0xc2, 0x89, 0xba, 0xf9, 0xf5, 0x11, 0x2f, 0x62, 0x56,
82922 - 0x21, 0xfd, 0xba, 0x34, 0xea, 0xf7, 0xde, 0x98, 0xb5, 0xaa, 0x7c, 0xf4,
82923 - 0x8b, 0x12, 0xe6, 0xbb, 0xb3, 0x93, 0x0b, 0xcb, 0x24, 0x57, 0xdc, 0x38,
82924 - 0xca, 0x91, 0x55, 0xf6, 0x57, 0xa9, 0x51, 0x59, 0xc3, 0xd0, 0xe0, 0xa9,
82925 - 0xdc, 0x78, 0x8b, 0x1a, 0x9d, 0x40, 0x7b, 0xb3, 0xb7, 0x25, 0x92, 0x85,
82926 - 0xb7, 0x22, 0xba, 0x09, 0xe1, 0xa4, 0xe4, 0xad, 0x82, 0xb1, 0xb1, 0xad,
82927 - 0x44, 0xbd, 0xaa, 0xf2, 0x79, 0xf9, 0xb9, 0x82, 0x5a, 0x16, 0x95, 0xfc,
82928 - 0x55, 0x6f, 0x79, 0xc3, 0xc1, 0x62, 0x8d, 0xf9, 0xc6, 0xaf, 0x02, 0xff,
82929 - 0x77, 0xf5, 0x5b, 0xdd, 0x32, 0x77, 0x1e, 0x43, 0xbe, 0x65, 0xdd, 0x00,
82930 - 0x6e, 0x95, 0x58, 0xda, 0x3d, 0xe2, 0x66, 0x7e, 0x26, 0xf3, 0x25, 0xf1,
82931 - 0xf8, 0xc8, 0xbd, 0x2f, 0xd1, 0xdf, 0x3c, 0xd4, 0xfd, 0x0e, 0xc3, 0x62,
82932 - 0x98, 0xb0, 0x6d, 0x23, 0x1c, 0x0c, 0x14, 0x28, 0x3a, 0xb6, 0x37, 0xfc,
82933 - 0x13, 0xed, 0x0b, 0xc4, 0x41, 0x90, 0x98, 0x97, 0x61, 0xcb, 0x48, 0xc1,
82934 - 0x94, 0x7a, 0x91, 0xfb, 0xf2, 0xf5, 0x7a, 0x0d, 0x2b, 0x2e, 0xf5, 0x86,
82935 - 0xc3, 0xc1, 0xf6, 0x6d, 0xac, 0xb7, 0x93, 0xf5, 0x62, 0x8c, 0xbd, 0xeb,
82936 - 0x47, 0x35, 0x27, 0x1f, 0xb4, 0x46, 0x8a, 0xa7, 0xf6, 0x77, 0xa9, 0xde,
82937 - 0x93, 0x86, 0x35, 0xee, 0xf4, 0xd7, 0x14, 0xec, 0x2c, 0x70, 0xb9, 0x91,
82938 - 0x64, 0xbd, 0x71, 0xd6, 0x7b, 0x77, 0x54, 0xd6, 0x33, 0x70, 0xcb, 0x48,
82939 - 0x22, 0x35, 0xe1, 0x32, 0x0c, 0xed, 0x1d, 0xc4, 0x88, 0xd9, 0xce, 0x5c,
82940 - 0xde, 0x72, 0x28, 0xd3, 0x85, 0xed, 0xc6, 0xd1, 0x70, 0x21, 0xeb, 0x1d,
82941 - 0x37, 0x8e, 0x06, 0x3c, 0xf4, 0x99, 0x75, 0x6c, 0xaf, 0x9b, 0x79, 0x91,
82942 - 0x4a, 0x8c, 0xdc, 0x32, 0x22, 0xdc, 0xc1, 0xc4, 0x6c, 0xe6, 0x67, 0x8e,
82943 - 0x6d, 0xca, 0xda, 0x09, 0x64, 0x4e, 0x65, 0x7c, 0xc1, 0xba, 0x11, 0x67,
82944 - 0x7c, 0xca, 0x35, 0x87, 0x25, 0x57, 0xae, 0xb0, 0xb0, 0xb9, 0x41, 0xe2,
82945 - 0xa7, 0x42, 0xec, 0x0e, 0xd6, 0x8d, 0x33, 0x9e, 0x6c, 0x1b, 0xfb, 0x33,
82946 - 0x8c, 0x6b, 0x95, 0xcc, 0x65, 0x6d, 0xfb, 0x15, 0x63, 0x61, 0x05, 0x43,
82947 - 0xbc, 0xd7, 0x4b, 0x99, 0xbd, 0xa1, 0x62, 0x89, 0xd3, 0x4e, 0x5b, 0x31,
82948 - 0x08, 0x3e, 0x29, 0x48, 0x1a, 0xd6, 0x06, 0x91, 0xff, 0x58, 0x38, 0x18,
82949 - 0x3f, 0xac, 0xd4, 0xb7, 0x6f, 0xc3, 0x3f, 0x11, 0x2f, 0x41, 0xac, 0x9b,
82950 - 0x89, 0x21, 0x93, 0xd6, 0xd2, 0x66, 0x31, 0x42, 0x4a, 0x8c, 0x77, 0x9f,
82951 - 0x58, 0xc4, 0x08, 0xe7, 0x46, 0xb0, 0xb3, 0x95, 0xe5, 0x23, 0xb9, 0x75,
82952 - 0x16, 0x5c, 0x18, 0x0d, 0x32, 0x0e, 0x8b, 0x2e, 0x80, 0xad, 0x99, 0x7c,
82953 - 0x2c, 0xb0, 0xed, 0x83, 0xa6, 0x6d, 0xbf, 0x64, 0xce, 0xc4, 0x61, 0x33,
82954 - 0x18, 0x17, 0x1f, 0x78, 0xdf, 0x5c, 0x78, 0x83, 0xe4, 0xc5, 0x80, 0xc8,
82955 - 0xa6, 0x30, 0x76, 0x29, 0x28, 0xe1, 0x27, 0x10, 0x72, 0xeb, 0x25, 0x8a,
82956 - 0x0d, 0x6f, 0x53, 0x6d, 0x67, 0x2d, 0xf5, 0x5e, 0x36, 0x5f, 0xc1, 0x27,
82957 - 0x37, 0x2a, 0x38, 0x7a, 0x63, 0x28, 0x30, 0xa4, 0x94, 0x32, 0x2e, 0x84,
82958 - 0xda, 0x5a, 0x14, 0xeb, 0x04, 0xeb, 0xc6, 0x1a, 0x5c, 0xc1, 0x00, 0x94,
82959 - 0x72, 0x62, 0xd6, 0x6c, 0x5d, 0x68, 0x8b, 0xbb, 0x37, 0x14, 0xd8, 0xc9,
82960 - 0x6f, 0xd7, 0xa8, 0x82, 0x51, 0x23, 0x18, 0x83, 0xd3, 0x3e, 0xfb, 0x66,
82961 - 0xca, 0x7c, 0x53, 0xc8, 0xb6, 0x4f, 0x86, 0xeb, 0xb5, 0x93, 0x78, 0x9f,
82962 - 0xb8, 0x2c, 0xfd, 0xe4, 0x65, 0x03, 0xf3, 0x70, 0x23, 0xd6, 0xa2, 0xdc,
82963 - 0x24, 0xb4, 0x84, 0x71, 0x52, 0x62, 0x79, 0x5e, 0xde, 0x7c, 0x4c, 0xb7,
82964 - 0xed, 0xf7, 0xcd, 0x5c, 0x5b, 0x5a, 0x73, 0x30, 0x0e, 0xcc, 0xc4, 0x98,
82965 - 0x11, 0x6c, 0x1d, 0xa7, 0x1e, 0x02, 0xf4, 0xf5, 0x19, 0x46, 0x15, 0x26,
82966 - 0x3c, 0x41, 0x6d, 0x42, 0x59, 0xf4, 0x99, 0x8a, 0x39, 0x1b, 0x9e, 0x52,
82967 - 0xea, 0x3b, 0x8a, 0x60, 0x90, 0x9f, 0x5e, 0x23, 0xf3, 0x11, 0xf0, 0x91,
82968 - 0x0b, 0xae, 0x83, 0xc3, 0x2f, 0x70, 0x7b, 0xc2, 0x1d, 0xbb, 0x80, 0x1a,
82969 - 0xfa, 0x9d, 0xd1, 0xfe, 0x90, 0x12, 0x64, 0xf2, 0xf2, 0x35, 0x26, 0x38,
82970 - 0x22, 0x6b, 0x15, 0xe2, 0xf7, 0xd8, 0xf6, 0xc3, 0x94, 0x75, 0x17, 0x65,
82971 - 0xdd, 0x18, 0xfe, 0xd8, 0xfe, 0x07, 0xa7, 0xcd, 0x5b, 0x31, 0x64, 0x5c,
82972 - 0xdd, 0xee, 0x47, 0x36, 0xa6, 0x4b, 0xbb, 0x1e, 0x2c, 0x99, 0xce, 0x5c,
82973 - 0xab, 0x59, 0xf0, 0xaa, 0xd2, 0x43, 0x7c, 0x62, 0x7b, 0x8c, 0x7f, 0xea,
82974 - 0xd5, 0x1c, 0xc2, 0x05, 0xc6, 0xe6, 0x40, 0x5c, 0x51, 0xab, 0x4b, 0xa0,
82975 - 0xc1, 0x6b, 0xd8, 0x78, 0x84, 0x7c, 0x27, 0x36, 0xbd, 0x1c, 0xdf, 0xe4,
82976 - 0x9c, 0x96, 0x86, 0xd4, 0x6b, 0x5d, 0x9c, 0x93, 0xc3, 0x61, 0xf9, 0xed,
82977 - 0xc1, 0xf8, 0x74, 0x17, 0xba, 0x38, 0xcb, 0x5a, 0x48, 0x9d, 0x21, 0xf7,
82978 - 0xbd, 0x8d, 0xf2, 0x9b, 0xf2, 0x5f, 0xa3, 0xe0, 0x61, 0x5a, 0xa4, 0x1a,
82979 - 0xea, 0x0e, 0xc8, 0xfd, 0x56, 0x53, 0x7e, 0x2b, 0xe4, 0x92, 0x6e, 0xce,
82980 - 0x8b, 0x0d, 0x97, 0x2c, 0x4d, 0x84, 0x78, 0x3f, 0x2c, 0xd7, 0xb1, 0x87,
82981 - 0x39, 0xee, 0xd8, 0x01, 0x45, 0x30, 0xee, 0x97, 0xf6, 0x2b, 0x8c, 0x81,
82982 - 0x1a, 0x9f, 0x7f, 0x93, 0x7d, 0x9f, 0x08, 0xbf, 0x64, 0xcf, 0xa8, 0x50,
82983 - 0x70, 0x32, 0xa2, 0x63, 0xe6, 0x8d, 0xd5, 0x98, 0xb8, 0x5b, 0xc6, 0xac,
82984 - 0xa0, 0xd4, 0x38, 0xe8, 0x91, 0x1c, 0xb9, 0xcc, 0xb8, 0x06, 0x4b, 0x56,
82985 - 0xe4, 0xee, 0x15, 0x85, 0x64, 0x8d, 0x53, 0x47, 0xd1, 0x8d, 0x95, 0xd0,
82986 - 0x27, 0xef, 0x2d, 0x0a, 0xb9, 0xdb, 0x4a, 0x15, 0x43, 0xbb, 0x5d, 0x91,
82987 - 0xe7, 0xbf, 0x23, 0x2f, 0xb7, 0xed, 0x47, 0x38, 0x5f, 0xb3, 0xc3, 0x3e,
82988 - 0x9c, 0x63, 0x3f, 0xdd, 0xd4, 0xdf, 0xf2, 0x4b, 0xf3, 0x95, 0xaf, 0xff,
82989 - 0xa9, 0xad, 0xdf, 0x23, 0x75, 0xa5, 0x8d, 0xda, 0xd6, 0x25, 0xca, 0x03,
82990 - 0x1e, 0xc9, 0x91, 0x36, 0x86, 0x1d, 0x9d, 0xb1, 0xec, 0x73, 0xce, 0x6f,
82991 - 0xad, 0xf9, 0xad, 0x4b, 0xeb, 0x75, 0xe7, 0x9d, 0x58, 0xba, 0x70, 0xbe,
82992 - 0x86, 0x09, 0xbb, 0xa2, 0xd1, 0xd2, 0x0a, 0x21, 0x31, 0xb5, 0xa6, 0xee,
82993 - 0x39, 0xb6, 0xfb, 0x73, 0x33, 0x17, 0x6f, 0x0f, 0x9a, 0xc1, 0x3e, 0x8b,
82994 - 0xfe, 0x13, 0x67, 0x8e, 0xdb, 0x22, 0xbc, 0x63, 0xec, 0x16, 0xce, 0xc3,
82995 - 0x4c, 0x14, 0x36, 0x06, 0x7b, 0x66, 0x31, 0xe7, 0x73, 0x35, 0x4b, 0x9c,
82996 - 0x96, 0xf9, 0x71, 0xca, 0xb0, 0xaf, 0x22, 0x2c, 0xa2, 0x8c, 0xe1, 0xc6,
82997 - 0x3f, 0x15, 0xdf, 0xa4, 0x1d, 0xb1, 0xce, 0x60, 0x4f, 0x0c, 0x7f, 0xaa,
82998 - 0x2c, 0xc8, 0x28, 0x64, 0x2d, 0xcc, 0x7b, 0x4b, 0x3c, 0xa3, 0x92, 0x23,
82999 - 0x15, 0x68, 0xdd, 0xcd, 0x55, 0xfc, 0xc8, 0x73, 0xf7, 0x2d, 0x6b, 0x32,
83000 - 0x97, 0xd6, 0x20, 0xd1, 0x67, 0x16, 0x40, 0xbd, 0x49, 0xe2, 0x05, 0x7d,
83001 - 0x59, 0x93, 0xf1, 0x59, 0xb4, 0x72, 0x59, 0x5f, 0x30, 0x56, 0xad, 0x25,
83002 - 0x5e, 0xbc, 0xc8, 0x1e, 0x87, 0xc9, 0xc5, 0x2c, 0xc7, 0x33, 0x9c, 0xf8,
83003 - 0x37, 0x65, 0x4d, 0x52, 0xe2, 0x57, 0x7e, 0x5d, 0xb3, 0x12, 0xfd, 0x7b,
83004 - 0x57, 0x40, 0xaf, 0xca, 0x61, 0xa0, 0x1a, 0x6d, 0xc2, 0xc2, 0xbe, 0x40,
83005 - 0x41, 0x2e, 0x7f, 0x28, 0x43, 0xef, 0xde, 0x30, 0xd2, 0xd3, 0x9d, 0xfa,
83006 - 0xbc, 0xe7, 0x85, 0x60, 0xf4, 0xf6, 0xbd, 0xd7, 0xca, 0x7a, 0x40, 0x40,
83007 - 0xda, 0x8d, 0xd3, 0x77, 0x54, 0xe3, 0x43, 0xdb, 0xd2, 0xa4, 0xfd, 0xa3,
83008 - 0x37, 0x10, 0x47, 0xcc, 0xc5, 0xa8, 0x6f, 0x3f, 0x84, 0x33, 0xe4, 0xa4,
83009 - 0x4e, 0xbe, 0xa4, 0x17, 0x46, 0xc7, 0x1f, 0xf6, 0x20, 0x14, 0x1f, 0x21,
83010 - 0x0e, 0xf8, 0x46, 0xbd, 0xe4, 0x56, 0x33, 0x9d, 0x75, 0xaf, 0x85, 0xc4,
83011 - 0x96, 0x38, 0x79, 0xf9, 0xd7, 0xdc, 0x6e, 0xac, 0x25, 0x66, 0x1c, 0x34,
83012 - 0xea, 0x3b, 0x0e, 0xe1, 0x1f, 0x89, 0xb3, 0x52, 0x5e, 0x65, 0x7f, 0xd2,
83013 - 0xa6, 0x9b, 0xfd, 0xc1, 0x4b, 0x2e, 0x70, 0x2f, 0xf9, 0xac, 0xdb, 0x63,
83014 - 0xfc, 0xc4, 0x23, 0xbc, 0x43, 0x78, 0xf7, 0xae, 0xbd, 0x0a, 0x5a, 0xd8,
83015 - 0xce, 0x4e, 0xda, 0xcc, 0xc3, 0x21, 0xb8, 0x5b, 0x6f, 0x24, 0xbf, 0x02,
83016 - 0x5d, 0x70, 0xba, 0x0f, 0x3b, 0x46, 0x10, 0xc9, 0x18, 0xe3, 0x33, 0x7c,
83017 - 0xa8, 0x62, 0x3b, 0x12, 0x53, 0x0a, 0x26, 0xdb, 0x89, 0xdc, 0x77, 0x65,
83018 - 0x3b, 0x65, 0x78, 0x72, 0xb2, 0x9d, 0x7d, 0x6c, 0xe7, 0xe6, 0xd9, 0x70,
83019 - 0x97, 0xdd, 0x2c, 0x73, 0xd5, 0x40, 0xff, 0x29, 0x43, 0xca, 0x89, 0x2b,
83020 - 0xe4, 0xa3, 0x5f, 0x85, 0x62, 0xd4, 0x4a, 0xee, 0x72, 0xd6, 0xa9, 0xb7,
83021 - 0xb8, 0x61, 0xfc, 0x02, 0x69, 0x91, 0x72, 0x7e, 0xf6, 0x38, 0x1d, 0x35,
83022 - 0xaf, 0x9b, 0x2a, 0x6c, 0xdd, 0x5b, 0x9c, 0x97, 0x97, 0xfd, 0xe4, 0xfb,
83023 - 0xa8, 0xe4, 0x3d, 0x3f, 0x76, 0x30, 0x07, 0x5d, 0xcc, 0x7e, 0x0e, 0x9b,
83024 - 0xc2, 0x23, 0xeb, 0xcd, 0x22, 0x45, 0x72, 0xf2, 0x00, 0x39, 0x45, 0x25,
83025 - 0x36, 0x3b, 0x71, 0x28, 0xc0, 0xfa, 0x0d, 0x65, 0x39, 0x7e, 0x02, 0xcf,
83026 - 0x32, 0x96, 0x6d, 0x09, 0xe7, 0xfa, 0x23, 0x0e, 0x33, 0xcf, 0x6d, 0xc4,
83027 - 0xc1, 0xc1, 0x4b, 0xcf, 0x83, 0x8b, 0x8d, 0xa9, 0xf3, 0x35, 0x1e, 0xf4,
83028 - 0xa0, 0x8d, 0xdf, 0x05, 0x12, 0x67, 0xae, 0x18, 0xfb, 0x96, 0x91, 0x47,
83029 - 0xf8, 0x5d, 0x8c, 0xad, 0x23, 0x36, 0xb6, 0x38, 0x39, 0x4e, 0x01, 0xba,
83030 - 0x1b, 0x04, 0x0f, 0xc5, 0x96, 0xa6, 0x4b, 0xec, 0x88, 0xa4, 0x21, 0xf1,
83031 - 0x55, 0xec, 0x27, 0xea, 0xd8, 0x8f, 0x4b, 0x99, 0x6a, 0x3f, 0x5d, 0x78,
83032 - 0xcd, 0x38, 0xba, 0xa2, 0x10, 0x47, 0xef, 0x97, 0xb5, 0xfb, 0x8e, 0x30,
83033 - 0x8e, 0xdd, 0x46, 0xdf, 0x7c, 0x97, 0xd8, 0xb2, 0x65, 0x36, 0xe3, 0x97,
83034 - 0x83, 0x59, 0x0a, 0x0a, 0xc9, 0x2b, 0xb6, 0xed, 0x0d, 0xea, 0x05, 0xaa,
83035 - 0xc6, 0x3e, 0xaf, 0xc6, 0x2e, 0x91, 0xdf, 0x64, 0x9e, 0x7e, 0xf4, 0xb1,
83036 - 0x42, 0xf8, 0x24, 0x5f, 0x7a, 0xfb, 0x0c, 0xdb, 0x58, 0x6c, 0xe6, 0x75,
83037 - 0xe5, 0xe8, 0x69, 0xb2, 0x9d, 0x4a, 0x24, 0xf7, 0xe6, 0xeb, 0x2b, 0x38,
83038 - 0x15, 0x0a, 0x4c, 0xae, 0x9d, 0x57, 0xa2, 0x77, 0xe4, 0xe8, 0x49, 0xf2,
83039 - 0x1c, 0xc6, 0xa9, 0xa3, 0x9d, 0x01, 0xca, 0x72, 0x3e, 0x9c, 0x9f, 0x53,
83040 - 0xf1, 0xcd, 0xa9, 0x6d, 0x88, 0xed, 0x42, 0x29, 0xab, 0xc5, 0x96, 0x32,
83041 - 0xda, 0x68, 0x26, 0x84, 0x78, 0x49, 0xb4, 0x0c, 0x89, 0x11, 0xfa, 0xd6,
83042 - 0x68, 0x01, 0xdc, 0xf3, 0x24, 0xee, 0x0a, 0xd7, 0x72, 0xdf, 0x72, 0x3a,
83043 - 0x51, 0x80, 0x07, 0xcc, 0x8b, 0xb6, 0xe0, 0xe2, 0x49, 0x03, 0xd7, 0x15,
83044 - 0x10, 0x13, 0x6b, 0xc3, 0xa1, 0xd8, 0x3a, 0xe6, 0xb4, 0xc7, 0x1b, 0xdc,
83045 - 0xb7, 0x7c, 0x90, 0xf9, 0x3d, 0x79, 0xf1, 0xd5, 0xe3, 0x11, 0x7d, 0xe0,
83046 - 0xc4, 0xd2, 0x90, 0xf4, 0x29, 0xfd, 0xe5, 0x6d, 0x54, 0xfa, 0xb7, 0xed,
83047 - 0x50, 0xd8, 0xe7, 0xcc, 0x79, 0x7e, 0x0c, 0xef, 0x19, 0xf9, 0x31, 0xf8,
83048 - 0x9c, 0xf8, 0xcd, 0x1c, 0x98, 0x98, 0x23, 0x79, 0xc1, 0x11, 0xe5, 0xa8,
83049 - 0x93, 0x03, 0x5b, 0x31, 0xe6, 0xbe, 0x91, 0x9e, 0xc9, 0xdc, 0x77, 0x9c,
83050 - 0x3c, 0xf7, 0x38, 0x79, 0xee, 0xcb, 0x93, 0xb9, 0xef, 0x8b, 0x19, 0xa9,
83051 - 0x33, 0xb5, 0x7c, 0x24, 0x26, 0x6b, 0xd6, 0x23, 0x89, 0x50, 0x5d, 0xbe,
83052 - 0xce, 0xcb, 0x2c, 0x7f, 0xfc, 0x52, 0xf9, 0xd5, 0xcc, 0x57, 0x57, 0x61,
83053 - 0x5b, 0xaa, 0x04, 0x0f, 0x6a, 0x4e, 0x6e, 0xe9, 0x2d, 0x8c, 0x9e, 0xb8,
83054 - 0xef, 0x7d, 0x63, 0xbc, 0xce, 0x45, 0x1c, 0x1a, 0xe1, 0xe0, 0x5b, 0x12,
83055 - 0x0a, 0xfd, 0xce, 0x83, 0x1e, 0xad, 0x1c, 0x6b, 0xcd, 0x7f, 0xb2, 0x1f,
83056 - 0x5c, 0x25, 0xcf, 0xf2, 0x7b, 0x14, 0x52, 0xfe, 0x35, 0x96, 0x0f, 0x9a,
83057 - 0x23, 0x93, 0xb9, 0xe0, 0xd1, 0x04, 0xfa, 0x24, 0xcf, 0x5a, 0xd3, 0x1c,
83058 - 0xd2, 0xbb, 0x9d, 0x75, 0x63, 0x1d, 0xeb, 0x32, 0x3a, 0xd6, 0x53, 0x9e,
83059 - 0xb4, 0x7b, 0x32, 0x47, 0xca, 0xc5, 0x62, 0x4b, 0x78, 0xe6, 0x22, 0x96,
83060 - 0xdb, 0x3c, 0x89, 0x33, 0x2d, 0x97, 0x78, 0xae, 0x6d, 0xf7, 0x9b, 0x79,
83061 - 0xae, 0xcb, 0x58, 0x50, 0x29, 0xb9, 0x35, 0x68, 0x17, 0x15, 0x48, 0xfb,
83062 - 0x65, 0x4f, 0x66, 0xea, 0x18, 0x11, 0x2b, 0x8c, 0x86, 0xf4, 0xd9, 0xea,
83063 - 0x54, 0xec, 0x92, 0xb1, 0x0a, 0x6e, 0x59, 0x8e, 0x7e, 0x8e, 0x5d, 0x1a,
83064 - 0x6f, 0x7d, 0xa1, 0x60, 0xd6, 0xc1, 0x44, 0x77, 0x01, 0x6d, 0x4b, 0x2d,
83065 - 0x10, 0x7b, 0x40, 0xee, 0x1e, 0xb2, 0xb6, 0xbd, 0xfd, 0x0a, 0xdd, 0x15,
83066 - 0xc4, 0x98, 0x0a, 0xe0, 0xe9, 0x44, 0x28, 0x76, 0x16, 0x96, 0x72, 0x32,
83067 - 0xe3, 0xa6, 0xad, 0x4b, 0xbb, 0x5b, 0xd8, 0x5e, 0x8f, 0x72, 0xe2, 0x52,
83068 - 0x9b, 0x17, 0x2e, 0x6e, 0x76, 0xd6, 0x71, 0xf3, 0xbe, 0xe2, 0xc5, 0x43,
83069 - 0x7d, 0xf9, 0xbd, 0xc6, 0x18, 0xde, 0x33, 0x05, 0x17, 0xbd, 0xe4, 0x3d,
83070 - 0xcc, 0xd2, 0x13, 0xdb, 0x90, 0xf3, 0x4b, 0xf9, 0xe4, 0xe7, 0xfd, 0xa0,
83071 - 0x5b, 0x30, 0xec, 0x27, 0xb3, 0x63, 0x93, 0x6b, 0x2e, 0x7f, 0xac, 0x4c,
83072 - 0x1e, 0xdb, 0x2f, 0x5c, 0xec, 0x4b, 0x55, 0x4f, 0xc9, 0xb3, 0x69, 0x5f,
83073 - 0x03, 0xc1, 0x1e, 0x0b, 0x95, 0x6c, 0xc3, 0x8d, 0xbf, 0x65, 0xfc, 0x76,
83074 - 0x0f, 0x1c, 0xbd, 0x41, 0x52, 0x32, 0xcf, 0xa1, 0x18, 0x36, 0x37, 0x7b,
83075 - 0xe0, 0x1a, 0xaa, 0x2e, 0xcc, 0xad, 0xf3, 0x91, 0x3c, 0x3b, 0xdf, 0x8a,
83076 - 0x83, 0xd3, 0x6a, 0x56, 0xf2, 0x6a, 0xd2, 0x88, 0x43, 0xa2, 0xd7, 0x4a,
83077 - 0x7e, 0x8b, 0x5e, 0xfc, 0xfc, 0x16, 0x1d, 0x55, 0xf1, 0xbb, 0x1c, 0xb1,
83078 - 0x2a, 0xd9, 0xf3, 0x6a, 0x47, 0x82, 0x98, 0x55, 0x12, 0xed, 0xc4, 0xd7,
83079 - 0x7b, 0x6d, 0xbb, 0x87, 0x7e, 0x59, 0xc4, 0x18, 0xff, 0x48, 0xa8, 0x3e,
83080 - 0x32, 0x47, 0x29, 0x20, 0xdf, 0x69, 0x47, 0xcf, 0x48, 0x41, 0xbc, 0x3c,
83081 - 0x5a, 0xc5, 0x98, 0xae, 0xe1, 0x93, 0xb9, 0x6d, 0xc8, 0x8e, 0x5e, 0xbd,
83082 - 0x57, 0x36, 0x75, 0x9f, 0x2c, 0xbf, 0x3f, 0x26, 0xe3, 0x11, 0xb9, 0x45,
83083 - 0xfe, 0x0b, 0x17, 0xb7, 0xa6, 0x44, 0x36, 0x0f, 0x0e, 0xf4, 0x89, 0xbc,
83084 - 0x36, 0x3a, 0xcc, 0x5b, 0x29, 0x27, 0x91, 0xbe, 0x72, 0xea, 0xfc, 0xe6,
83085 - 0xdb, 0x91, 0x75, 0xf0, 0x4e, 0x65, 0x98, 0xf3, 0x65, 0xb9, 0x0b, 0xc5,
83086 - 0xbf, 0x34, 0xe6, 0x15, 0xca, 0x73, 0x19, 0x69, 0xa3, 0x45, 0x19, 0x49,
83087 - 0x4f, 0xad, 0xd3, 0xa9, 0x1c, 0xca, 0x3c, 0x5c, 0x28, 0x9c, 0xe3, 0xb2,
83088 - 0x1e, 0xf3, 0x32, 0x90, 0xdc, 0xd2, 0x5e, 0x2a, 0x92, 0xa2, 0x7f, 0xd1,
83089 - 0x8f, 0x0e, 0x77, 0x96, 0xbf, 0xb3, 0x5f, 0xd6, 0xe7, 0xd5, 0x3e, 0x36,
83090 - 0xf7, 0x0a, 0x9f, 0x3c, 0x4e, 0x9f, 0x1c, 0xff, 0xa3, 0x3e, 0x39, 0xef,
83091 - 0x4f, 0x94, 0xcf, 0xaf, 0xb7, 0xda, 0xf6, 0x6e, 0x53, 0xd6, 0xe8, 0x65,
83092 - 0xdd, 0xb5, 0xe1, 0x4b, 0xf6, 0x5e, 0x65, 0x3d, 0x7e, 0x36, 0xd2, 0x95,
83093 - 0xc1, 0xb4, 0xac, 0xbf, 0x0c, 0xa4, 0x80, 0x45, 0x49, 0xe9, 0x27, 0x46,
83094 - 0x7d, 0xa9, 0xb7, 0x32, 0x1a, 0x31, 0x43, 0xe8, 0xc2, 0x19, 0xd3, 0xd8,
83095 - 0xf7, 0x20, 0x79, 0x77, 0x37, 0x73, 0xd2, 0x83, 0xe6, 0x72, 0xfa, 0x7b,
83096 - 0x31, 0x36, 0x34, 0xd0, 0x18, 0x57, 0x98, 0xf4, 0x7b, 0xab, 0x9d, 0xae,
83097 - 0xe8, 0xf5, 0x45, 0xdb, 0x57, 0x25, 0x42, 0xc1, 0xb6, 0x8d, 0xc4, 0xf3,
83098 - 0xa5, 0xbd, 0x5e, 0xe8, 0x8a, 0xc3, 0x07, 0x5a, 0x7f, 0xa1, 0x0a, 0x46,
83099 - 0x9d, 0x29, 0xc8, 0xe5, 0xcd, 0xb2, 0xe6, 0x22, 0xfd, 0x2c, 0x67, 0x5e,
83100 - 0x22, 0x75, 0x75, 0xb4, 0xd7, 0x2a, 0x48, 0xd5, 0x06, 0xfb, 0xe0, 0xb2,
83101 - 0xed, 0xdf, 0x91, 0x17, 0x8e, 0x3b, 0xb9, 0x7c, 0x7d, 0xdd, 0x6e, 0xf5,
83102 - 0x7f, 0x10, 0x0b, 0x9d, 0x36, 0x34, 0x59, 0xf3, 0x7f, 0xe1, 0x4f, 0xae,
83103 - 0x7b, 0x9b, 0x90, 0xbd, 0x89, 0x42, 0x63, 0x89, 0x32, 0xe2, 0xcf, 0x71,
83104 - 0x8a, 0xdb, 0x06, 0x3e, 0xbf, 0xf8, 0x64, 0x4a, 0xec, 0x1c, 0x55, 0x01,
83105 - 0x63, 0x06, 0x66, 0x1f, 0x28, 0xc5, 0xb2, 0x01, 0xe1, 0x0a, 0x3e, 0xab,
83106 - 0x30, 0x1a, 0xc0, 0x9c, 0x03, 0x95, 0x68, 0xd9, 0x23, 0xfb, 0x50, 0x76,
83107 - 0x57, 0x45, 0x74, 0x35, 0xdc, 0x87, 0x34, 0x3c, 0xb0, 0xc7, 0xb6, 0x67,
83108 - 0xcd, 0x23, 0xb5, 0x63, 0x4c, 0x7c, 0xb7, 0x69, 0x15, 0x3c, 0xd9, 0x6a,
83109 - 0x2c, 0x49, 0xd6, 0x39, 0x6b, 0xad, 0x1f, 0x26, 0x5a, 0x5b, 0xce, 0xf5,
83110 - 0xd6, 0x6e, 0xa8, 0x55, 0x82, 0xe6, 0x29, 0x25, 0x82, 0x82, 0x6c, 0x04,
83111 - 0xae, 0xa4, 0x82, 0x57, 0x0d, 0x74, 0x95, 0x45, 0xa3, 0x70, 0x65, 0xa3,
83112 - 0xf0, 0x25, 0xdd, 0x68, 0xa0, 0xbe, 0x4b, 0x38, 0xf7, 0xd3, 0x92, 0xd5,
83113 - 0x98, 0x96, 0xbd, 0x0e, 0xfa, 0x81, 0x06, 0xfa, 0x48, 0x25, 0xfb, 0xf3,
83114 - 0xa3, 0x25, 0xd9, 0x86, 0x69, 0x46, 0x33, 0x6d, 0xa3, 0x19, 0x33, 0x93,
83115 - 0x7e, 0x2c, 0xe0, 0x7c, 0x2c, 0x4e, 0xb6, 0xb2, 0x1f, 0x1f, 0xda, 0x07,
83116 - 0xee, 0x44, 0x60, 0xc8, 0x8b, 0xf2, 0x01, 0x1d, 0x1f, 0xce, 0xf5, 0xa2,
83117 - 0x68, 0x28, 0x80, 0xd2, 0xa4, 0xec, 0x8d, 0x21, 0xb6, 0xb1, 0x39, 0x00,
83118 - 0x5f, 0x16, 0x28, 0x19, 0xb0, 0xf1, 0xad, 0xf0, 0xa8, 0x7a, 0x77, 0xa5,
83119 - 0x65, 0x4f, 0x73, 0x62, 0x41, 0x6b, 0xfb, 0x16, 0xe3, 0xce, 0x49, 0xbf,
83120 - 0x77, 0x33, 0xcf, 0x52, 0xc8, 0xd7, 0x25, 0x06, 0xb6, 0xb6, 0x1f, 0x4c,
83121 - 0xc8, 0xda, 0x46, 0x88, 0x7e, 0xeb, 0x81, 0x77, 0xa8, 0x53, 0xe9, 0xa3,
83122 - 0xed, 0xa0, 0x40, 0xf4, 0xaf, 0xd2, 0xbf, 0xa0, 0x95, 0xd2, 0xce, 0xb7,
83123 - 0x66, 0x5a, 0x94, 0x64, 0xba, 0x53, 0xe9, 0xcd, 0x94, 0x78, 0x51, 0x2c,
83124 - 0xf3, 0xf2, 0x15, 0x8c, 0x36, 0x3c, 0x69, 0xa7, 0x2b, 0x9c, 0xb9, 0xb5,
83125 - 0x3c, 0x90, 0x9c, 0xdb, 0x5a, 0x15, 0xae, 0x0d, 0x76, 0x56, 0xa8, 0xb2,
83126 - 0x9f, 0x42, 0x1c, 0x52, 0x72, 0x7d, 0x69, 0x46, 0x12, 0xcf, 0xfa, 0x65,
83127 - 0x7d, 0x55, 0xe6, 0xbf, 0xb5, 0x3d, 0xd1, 0x7b, 0xe1, 0xa2, 0xcc, 0xe9,
83128 - 0xc7, 0xb4, 0xc3, 0xdb, 0x93, 0x9f, 0x5f, 0xdc, 0x97, 0x6a, 0x63, 0x9e,
83129 - 0x66, 0xe2, 0x55, 0xfe, 0x5e, 0xc4, 0x71, 0xbf, 0x98, 0xf1, 0x61, 0x61,
83130 - 0xb2, 0xd9, 0xd9, 0x8b, 0x5b, 0x96, 0x8c, 0xe0, 0x15, 0x7e, 0xb7, 0x24,
83131 - 0x57, 0xe1, 0x18, 0xf3, 0xd4, 0x07, 0x92, 0x51, 0xbc, 0x9d, 0x09, 0xe0,
83132 - 0x7e, 0xea, 0x6f, 0x06, 0xed, 0xf4, 0xae, 0xa4, 0x8e, 0x37, 0x32, 0xc0,
83133 - 0xcf, 0xfa, 0x6c, 0x84, 0x1a, 0xbf, 0xa3, 0x3e, 0xed, 0xac, 0x8d, 0x35,
83134 - 0xe3, 0x67, 0x09, 0x13, 0x6f, 0x24, 0x6a, 0xcc, 0x9b, 0xd5, 0xdf, 0x62,
83135 - 0xdc, 0x9d, 0xa0, 0x4d, 0x9d, 0x47, 0xbc, 0x52, 0xd6, 0xf1, 0x72, 0xf2,
83136 - 0x77, 0x8f, 0x79, 0x98, 0x63, 0x6d, 0xc0, 0x11, 0xbf, 0xb3, 0x2e, 0x71,
83137 - 0x85, 0x5c, 0xb2, 0x36, 0xb1, 0x88, 0x72, 0x3d, 0x95, 0x22, 0x57, 0x34,
83138 - 0xaa, 0x29, 0x8f, 0x17, 0x0b, 0x07, 0xbc, 0xa8, 0xa4, 0x6d, 0x9c, 0x3e,
83139 - 0x10, 0xc5, 0xce, 0x54, 0x11, 0x5a, 0xfa, 0x03, 0x38, 0xc3, 0xeb, 0xad,
83140 - 0xb4, 0xf1, 0x1f, 0xb1, 0x6f, 0xa3, 0x49, 0xc3, 0x80, 0x56, 0x84, 0x9e,
83141 - 0xba, 0x1f, 0x93, 0xef, 0xa9, 0xcc, 0x39, 0x98, 0x1b, 0x18, 0x25, 0xd8,
83142 - 0xc1, 0xb4, 0xbe, 0xb0, 0x39, 0x88, 0xfe, 0x3a, 0xda, 0x7a, 0x15, 0xe3,
83143 - 0x87, 0x11, 0x43, 0x39, 0x31, 0x26, 0xc5, 0x5c, 0xb1, 0x30, 0x6a, 0x51,
83144 - 0x06, 0x15, 0xfb, 0x34, 0x55, 0xd6, 0xe4, 0xf8, 0x2c, 0x80, 0x63, 0x09,
83145 - 0xd8, 0xc5, 0x51, 0xe3, 0xc2, 0x4e, 0x84, 0x4e, 0xbc, 0xcf, 0xb8, 0xfe,
83146 - 0xf7, 0x99, 0x12, 0x7c, 0xbf, 0x6f, 0x36, 0xfe, 0x36, 0x2d, 0xeb, 0xbd,
83147 - 0x3e, 0xac, 0x1f, 0x0c, 0xab, 0xb9, 0xb5, 0x4a, 0x1f, 0x1e, 0x1a, 0x84,
83148 - 0x35, 0x93, 0xf6, 0xf8, 0xf2, 0x70, 0x19, 0xd6, 0xf4, 0xbd, 0x60, 0x33,
83149 - 0x77, 0xa6, 0x5d, 0x7b, 0x71, 0x34, 0x2d, 0x32, 0x96, 0x53, 0xc6, 0x22,
83150 - 0x1c, 0xe3, 0x75, 0x0f, 0x6d, 0xbf, 0xb2, 0xf7, 0xdb, 0xf8, 0x2c, 0x55,
83151 - 0x53, 0x77, 0xbf, 0xda, 0x8e, 0xe3, 0xce, 0x7e, 0x6c, 0x03, 0xde, 0xa2,
83152 - 0x1e, 0xcb, 0x77, 0xdb, 0xf6, 0x6f, 0xc2, 0x31, 0xfc, 0x2c, 0x73, 0x2d,
83153 - 0x8a, 0x78, 0x6d, 0x86, 0x5b, 0xf0, 0x66, 0xa6, 0x1a, 0x65, 0xbd, 0xad,
83154 - 0x78, 0x9d, 0x9c, 0xbf, 0x74, 0x77, 0x27, 0x4e, 0xb1, 0x7d, 0x5f, 0xbf,
83155 - 0x17, 0xaf, 0xa5, 0xbd, 0x78, 0xb5, 0xcf, 0xd0, 0xd6, 0x2a, 0x7f, 0xa7,
83156 - 0xc4, 0x2b, 0x73, 0xfd, 0x0c, 0xa4, 0x72, 0xfa, 0xdc, 0x3e, 0x56, 0x00,
83157 - 0xc1, 0xf2, 0x43, 0x7e, 0x59, 0xbf, 0x95, 0xf3, 0x31, 0xad, 0xed, 0x5a,
83158 - 0xf2, 0x77, 0x17, 0x13, 0xd4, 0xe7, 0x9b, 0xa3, 0x01, 0xdc, 0x91, 0x14,
83159 - 0xdd, 0x7e, 0x7e, 0x71, 0x17, 0xb1, 0xa3, 0x77, 0x34, 0x82, 0x13, 0x09,
83160 - 0x8f, 0xb3, 0xe7, 0xd8, 0x33, 0x2a, 0xfb, 0xb1, 0xdf, 0xe5, 0xdc, 0x00,
83161 - 0x6b, 0x47, 0x73, 0x6d, 0x6d, 0x19, 0x2b, 0xa4, 0xee, 0x6e, 0xc7, 0xd3,
83162 - 0x5a, 0x81, 0xc4, 0xdf, 0x9c, 0x8d, 0x1a, 0x41, 0xda, 0xee, 0x77, 0x9d,
83163 - 0xf5, 0xbd, 0x81, 0x54, 0xbd, 0x36, 0x0d, 0xf9, 0x79, 0xac, 0xc1, 0x4c,
83164 - 0xe3, 0xf7, 0xf6, 0x0b, 0x7e, 0x59, 0x77, 0x15, 0xbe, 0xd8, 0xda, 0xbe,
83165 - 0x36, 0x21, 0xfd, 0xe8, 0xd8, 0x3c, 0x7a, 0xe1, 0x62, 0x3f, 0xf9, 0xfa,
83166 - 0x12, 0xda, 0xc8, 0xba, 0x90, 0x1f, 0x8b, 0x6b, 0xeb, 0x50, 0x9b, 0x95,
83167 - 0x35, 0xdd, 0x08, 0x39, 0xab, 0x89, 0x8e, 0x50, 0xd4, 0xd9, 0xd7, 0x82,
83168 - 0x9a, 0xbf, 0xe7, 0xc5, 0xbb, 0x7f, 0xe0, 0x2b, 0xc0, 0xac, 0x81, 0x36,
83169 - 0xf6, 0x6b, 0x63, 0x99, 0xf9, 0x0f, 0x76, 0xcb, 0x3d, 0xd2, 0x7f, 0x4d,
83170 - 0x59, 0xee, 0x19, 0x27, 0xbc, 0x58, 0x7e, 0x37, 0xd1, 0x97, 0x1a, 0x71,
83171 - 0xd8, 0x2f, 0x3c, 0x43, 0xfc, 0xa0, 0xb5, 0x3d, 0x4c, 0xfb, 0xd9, 0x41,
83172 - 0x19, 0x56, 0xd0, 0x76, 0x96, 0x11, 0x17, 0xca, 0x8d, 0x0b, 0x17, 0x7b,
83173 - 0x53, 0x26, 0xe6, 0x8c, 0xfa, 0x68, 0xcb, 0x45, 0xec, 0xaf, 0x19, 0xc6,
83174 - 0x28, 0x71, 0x84, 0xf6, 0xbd, 0x60, 0xd4, 0x4f, 0x7b, 0xd6, 0x31, 0x7f,
83175 - 0x54, 0x7c, 0xdc, 0x40, 0x88, 0xb1, 0xac, 0x9d, 0x75, 0x22, 0xa3, 0x15,
83176 - 0xb8, 0x79, 0xbf, 0x1b, 0x77, 0x26, 0xc3, 0xd4, 0x4f, 0x1d, 0x63, 0xdc,
83177 - 0x65, 0x7d, 0x6f, 0x1b, 0x9b, 0x85, 0x0a, 0xe3, 0x88, 0xfd, 0x9c, 0x83,
83178 - 0x61, 0x85, 0x8e, 0x9e, 0x02, 0xec, 0x37, 0x90, 0x82, 0x55, 0xce, 0xf8,
83179 - 0x72, 0x61, 0xf4, 0xb9, 0x2f, 0xe2, 0xf7, 0x8a, 0x2e, 0xa7, 0x8e, 0x47,
83180 - 0x30, 0xe5, 0x02, 0xb1, 0x0e, 0x68, 0x7c, 0xc2, 0xc6, 0xe2, 0xc6, 0x8d,
83181 - 0xca, 0x0f, 0x1c, 0x5b, 0x92, 0x76, 0x85, 0x3b, 0xe4, 0xf5, 0x9f, 0xd7,
83182 - 0xf9, 0x6f, 0x0a, 0x72, 0x3a, 0xcf, 0x8f, 0x33, 0xb8, 0x4f, 0x70, 0x7a,
83183 - 0x7d, 0x63, 0x1e, 0xa7, 0xa5, 0xbc, 0xdc, 0x5f, 0x61, 0xf7, 0x6a, 0x70,
83184 - 0x17, 0x1a, 0x2e, 0x6c, 0xaf, 0x7b, 0x46, 0x99, 0xd0, 0xc4, 0xe7, 0x15,
83185 - 0x62, 0xc7, 0xed, 0x36, 0xdd, 0x96, 0x76, 0xfd, 0x12, 0xcb, 0x41, 0x29,
83186 - 0xbc, 0x34, 0x97, 0xc2, 0x3f, 0xba, 0x27, 0xe7, 0x52, 0x78, 0x6f, 0x7e,
83187 - 0x4c, 0x79, 0x59, 0x23, 0xe4, 0x76, 0x22, 0xaf, 0xd8, 0x86, 0x94, 0x79,
83188 - 0xb0, 0xc8, 0x59, 0x8f, 0x46, 0xf7, 0x14, 0x7b, 0xc8, 0x73, 0x18, 0xa7,
83189 - 0x0d, 0x0d, 0x97, 0xec, 0xc1, 0x8d, 0xb6, 0xa4, 0xcc, 0x3b, 0xac, 0x62,
83190 - 0xea, 0xa1, 0x6d, 0xd4, 0xc3, 0xf9, 0x13, 0x2e, 0xae, 0x62, 0x89, 0xb9,
83191 - 0x5d, 0x19, 0xf7, 0xef, 0x64, 0x1b, 0x9f, 0x5f, 0x64, 0x1d, 0xde, 0xeb,
83192 - 0xe5, 0xf5, 0x75, 0xb8, 0x9d, 0x38, 0xba, 0x36, 0x6c, 0x29, 0xb9, 0x73,
83193 - 0x05, 0x45, 0xb8, 0x71, 0xa0, 0x12, 0x3e, 0x43, 0xd6, 0x2d, 0xfe, 0xb3,
83194 - 0xe2, 0xab, 0x90, 0xf1, 0x3b, 0x9c, 0x81, 0x76, 0x72, 0x1d, 0x16, 0x0f,
83195 - 0x30, 0x64, 0x3b, 0x7b, 0x04, 0x0b, 0xf1, 0x74, 0xf3, 0x75, 0x58, 0xea,
83196 - 0x70, 0x9d, 0x10, 0x6e, 0x1a, 0x12, 0x0c, 0xed, 0x54, 0xfa, 0x89, 0x9d,
83197 - 0x4c, 0x38, 0xe8, 0xd7, 0x31, 0xa5, 0x8f, 0x98, 0xb9, 0xcf, 0xf1, 0x11,
83198 - 0x59, 0x2f, 0xee, 0x54, 0x52, 0x99, 0x0a, 0x8e, 0x43, 0x6c, 0xf7, 0xb2,
83199 - 0x8c, 0x33, 0x29, 0xe3, 0x79, 0x62, 0xd1, 0xfc, 0x49, 0x19, 0x67, 0x37,
83200 - 0x49, 0x2e, 0x2b, 0x32, 0x16, 0xa1, 0x96, 0x72, 0x54, 0x52, 0x8e, 0x63,
83201 - 0x66, 0x85, 0x32, 0xa0, 0xe5, 0x64, 0xab, 0x61, 0xff, 0x8c, 0x39, 0x58,
83202 - 0x63, 0xfa, 0x94, 0x65, 0xce, 0xbd, 0xbc, 0x6c, 0x9f, 0x5f, 0xec, 0x49,
83203 - 0x7d, 0x61, 0xfb, 0x8c, 0x9c, 0x9c, 0x65, 0xfd, 0x3a, 0x4e, 0xcd, 0xbd,
83204 - 0x0e, 0xa5, 0xfb, 0x8b, 0xd0, 0x48, 0x5c, 0xaf, 0x1f, 0x30, 0xfa, 0x36,
83205 - 0x2a, 0x22, 0xab, 0x87, 0xbf, 0x9d, 0x75, 0x03, 0xea, 0xf3, 0xff, 0x2f,
83206 - 0xbc, 0xd2, 0x8e, 0xdd, 0x58, 0x91, 0xcc, 0xd9, 0xb0, 0xe3, 0xbf, 0xb5,
83207 - 0x62, 0xbf, 0xb2, 0x46, 0x48, 0x7b, 0xce, 0xb8, 0xb0, 0x84, 0x7d, 0x1f,
83208 - 0x33, 0x1f, 0x56, 0x2c, 0xed, 0xc2, 0x45, 0xd9, 0xaf, 0x57, 0x29, 0x63,
83209 - 0x77, 0xfa, 0x3a, 0xdc, 0x31, 0x30, 0x6e, 0x7b, 0x8d, 0x05, 0xc8, 0x84,
83210 - 0x43, 0xed, 0x3d, 0x8a, 0x17, 0xbb, 0xd2, 0x2e, 0x2c, 0x1a, 0x20, 0x5f,
83211 - 0x33, 0xe3, 0x4a, 0x6c, 0x7a, 0x8e, 0x87, 0x2f, 0x4c, 0x32, 0x1f, 0xcd,
83212 - 0x4a, 0x7e, 0xd8, 0xd6, 0xbe, 0x30, 0xf1, 0x80, 0x12, 0xd3, 0x3e, 0xbf,
83213 - 0x98, 0x4c, 0x1d, 0xfd, 0xae, 0xea, 0xf0, 0x30, 0x1f, 0xde, 0x3c, 0xe8,
83214 - 0xa3, 0x2f, 0x28, 0xf4, 0x13, 0x3f, 0x7d, 0xbf, 0x01, 0x6f, 0xd3, 0x37,
83215 - 0xee, 0x67, 0x5c, 0xfc, 0xfb, 0xd1, 0x2a, 0xdc, 0xb6, 0x27, 0x8a, 0x97,
83216 - 0x0f, 0xfa, 0xd1, 0xbe, 0xe7, 0x56, 0xbc, 0xc5, 0x72, 0x63, 0x8c, 0x07,
83217 - 0x63, 0xc3, 0x95, 0xfc, 0xf8, 0xf9, 0xa9, 0xe2, 0x67, 0x2d, 0xf1, 0xa8,
83218 - 0x02, 0x27, 0xf7, 0xbb, 0xd0, 0x32, 0xa0, 0x62, 0xc0, 0x54, 0x70, 0xf7,
83219 - 0x4d, 0x32, 0x1e, 0x2f, 0xd6, 0xd4, 0x5e, 0xb6, 0x8b, 0x25, 0x49, 0xe1,
83220 - 0x70, 0x5e, 0xce, 0x93, 0x8e, 0x43, 0xf4, 0xcb, 0xdb, 0xc8, 0xc1, 0x76,
83221 - 0xf4, 0xb5, 0xd1, 0x8f, 0x6c, 0xcc, 0x0a, 0xff, 0x18, 0x2b, 0xb4, 0x1e,
83222 - 0xc9, 0x6b, 0x9d, 0x75, 0xfe, 0x14, 0xe7, 0x71, 0xc2, 0x53, 0x6f, 0x4d,
83223 - 0x43, 0x51, 0x2c, 0x10, 0x0d, 0x69, 0x47, 0xb0, 0x1c, 0x7d, 0x63, 0xd0,
83224 - 0x64, 0xcd, 0x7f, 0x1b, 0x79, 0xd4, 0x76, 0xf2, 0xa8, 0xee, 0xcc, 0x11,
83225 - 0xce, 0xb1, 0xcf, 0x2b, 0x7b, 0xdf, 0xdb, 0xa8, 0xbb, 0xc5, 0x0e, 0x27,
83226 - 0xf2, 0x5a, 0x45, 0x6c, 0xff, 0x38, 0x63, 0xd2, 0x82, 0xfe, 0x1c, 0x6e,
83227 - 0x7c, 0xd6, 0xf4, 0x3c, 0x8c, 0x69, 0x3d, 0xf4, 0xf9, 0x5c, 0xdb, 0x3b,
83228 - 0x85, 0x9b, 0x79, 0xca, 0x62, 0x65, 0xd1, 0xd0, 0x86, 0xd7, 0xa9, 0x7c,
83229 - 0x2f, 0xdb, 0xdc, 0x3a, 0xb9, 0x8f, 0xd0, 0xcb, 0x36, 0x7b, 0x58, 0xb7,
83230 - 0xbe, 0xdf, 0xe2, 0x5c, 0xba, 0x59, 0x3f, 0x14, 0xd8, 0xa8, 0x98, 0xac,
83231 - 0xeb, 0xe4, 0x11, 0xa8, 0xd9, 0x7f, 0x79, 0xae, 0xda, 0x88, 0x31, 0xfd,
83232 - 0x93, 0xfe, 0x7e, 0x7e, 0xf4, 0x3a, 0x84, 0x68, 0x24, 0x4f, 0x9b, 0x9b,
83233 - 0xa0, 0xd3, 0x66, 0x5d, 0x93, 0x7d, 0x6d, 0x97, 0x71, 0xb8, 0x67, 0xc6,
83234 - 0x66, 0xb2, 0x8f, 0xbe, 0x4c, 0x48, 0xeb, 0x42, 0xfd, 0x89, 0x69, 0x90,
83235 - 0x71, 0x48, 0x7f, 0xcb, 0xf1, 0xe4, 0xd8, 0xd5, 0xe3, 0xa8, 0x26, 0x3e,
83236 - 0x5d, 0x2c, 0x98, 0x3c, 0x33, 0xe7, 0xe4, 0xe2, 0x31, 0xc7, 0xc7, 0x76,
83237 - 0x38, 0xf2, 0x7b, 0xd8, 0x66, 0x36, 0xb7, 0x07, 0x22, 0x69, 0x95, 0x32,
83238 - 0xc2, 0x58, 0xd1, 0x96, 0x54, 0x62, 0x15, 0xd1, 0xfa, 0xce, 0x69, 0x08,
83239 - 0x45, 0x7e, 0xc6, 0xb6, 0xa7, 0xb1, 0xed, 0x67, 0xd9, 0x76, 0x8a, 0x6d,
83240 - 0x8f, 0xb0, 0xed, 0x1f, 0x5c, 0x6a, 0x5b, 0xc5, 0xfd, 0x7b, 0xf2, 0xb6,
83241 - 0xe5, 0x46, 0xa4, 0x89, 0x59, 0xdf, 0x34, 0xd9, 0x03, 0xad, 0xe6, 0xdc,
83242 - 0x8b, 0xee, 0x74, 0xc6, 0xf6, 0x9c, 0xbd, 0x2d, 0x60, 0xec, 0xb9, 0x6b,
83243 - 0x8f, 0x82, 0xf7, 0xc3, 0xef, 0x63, 0xc2, 0x9f, 0xe3, 0x11, 0x79, 0x1b,
83244 - 0xd2, 0x68, 0x43, 0x5a, 0xf2, 0x7f, 0xd2, 0xf4, 0xa5, 0x8e, 0xd8, 0x8f,
83245 - 0xec, 0x3f, 0x90, 0x3f, 0x27, 0x44, 0x1f, 0xbf, 0x23, 0xee, 0x86, 0x4e,
83246 - 0xbc, 0xc7, 0xd8, 0xf9, 0xa3, 0x8c, 0x07, 0xe9, 0xb4, 0x0f, 0xcf, 0x66,
83247 - 0x04, 0x1b, 0xdb, 0x88, 0x8d, 0x82, 0xf7, 0xe4, 0x81, 0xc3, 0x47, 0x1f,
83248 - 0x0b, 0xb0, 0xf2, 0xb3, 0xb4, 0x9f, 0x67, 0x69, 0x3f, 0xcf, 0x0e, 0xfb,
83249 - 0x70, 0xf3, 0x21, 0x2f, 0xce, 0x11, 0x6b, 0x7a, 0x59, 0x26, 0x91, 0x6a,
83250 - 0xc0, 0x4d, 0xe4, 0x59, 0x87, 0x7b, 0x19, 0x97, 0x19, 0xff, 0xeb, 0xb2,
83251 - 0x1a, 0x76, 0xf5, 0x57, 0xa0, 0x7e, 0x48, 0x62, 0x70, 0x05, 0x1e, 0xe9,
83252 - 0xf3, 0x62, 0xce, 0x7e, 0xd9, 0x87, 0x24, 0x2f, 0xec, 0xbb, 0x13, 0xc3,
83253 - 0x8e, 0x8f, 0x4f, 0xa3, 0x7f, 0x54, 0xa2, 0x76, 0x48, 0xae, 0xc9, 0x53,
83254 - 0x68, 0xb3, 0x0b, 0x0e, 0x55, 0x71, 0xbc, 0xb7, 0x62, 0xfe, 0xa1, 0x00,
83255 - 0xf1, 0xdc, 0x8f, 0x48, 0x76, 0xf9, 0x45, 0xc1, 0xe4, 0xed, 0x63, 0x53,
83256 - 0x63, 0x9a, 0xf8, 0xa1, 0x83, 0x61, 0x91, 0x3c, 0x86, 0x5d, 0x7e, 0x3e,
83257 - 0x15, 0x27, 0x7f, 0xcb, 0x67, 0x52, 0x26, 0x1f, 0x7b, 0xa6, 0xe2, 0xe2,
83258 - 0x65, 0x7c, 0x6a, 0x1c, 0x90, 0x6f, 0x0d, 0xed, 0xf3, 0xc4, 0xd7, 0xaf,
83259 - 0x43, 0xc4, 0x91, 0xe7, 0xfe, 0x62, 0x96, 0x0b, 0xe4, 0xfc, 0x7d, 0x2a,
83260 - 0x9e, 0xfb, 0x26, 0xfd, 0xd4, 0x85, 0x58, 0x45, 0x8e, 0x0b, 0xdf, 0xbe,
83261 - 0xa7, 0x01, 0xbb, 0xa8, 0x8f, 0x56, 0xfa, 0x91, 0x2f, 0x1c, 0xb5, 0xad,
83262 - 0x0a, 0xc9, 0x5b, 0x2b, 0x71, 0xe7, 0x1e, 0x3f, 0x63, 0xf8, 0xb5, 0x48,
83263 - 0x0e, 0xcf, 0x66, 0x5b, 0xd5, 0xe8, 0x9d, 0xcc, 0xe7, 0xb7, 0xa7, 0x96,
83264 - 0xd9, 0x0f, 0x39, 0x7b, 0xf2, 0xb2, 0xf6, 0xff, 0xda, 0x7d, 0xde, 0xd0,
83265 - 0xb8, 0xce, 0x7c, 0xde, 0x64, 0xce, 0x41, 0x0e, 0x76, 0x02, 0xa1, 0x4a,
83266 - 0xe6, 0xe7, 0x46, 0x39, 0x16, 0x31, 0x9f, 0x7f, 0xc8, 0x2f, 0xcf, 0x6e,
83267 - 0x15, 0x59, 0x9c, 0xf2, 0x97, 0xc7, 0xb8, 0x6b, 0xca, 0x18, 0xeb, 0x23,
83268 - 0xd3, 0x90, 0xe7, 0x63, 0x5f, 0xd8, 0x7f, 0x6f, 0x40, 0xe9, 0x0f, 0xd1,
83269 - 0x6a, 0x1b, 0x83, 0x7d, 0x0f, 0x29, 0x86, 0xd6, 0xa4, 0x12, 0xba, 0x46,
83270 - 0xdf, 0xc4, 0x92, 0xec, 0x2f, 0x10, 0xcb, 0xae, 0xf6, 0x8a, 0x2c, 0xf7,
83271 - 0x67, 0x57, 0x61, 0x9c, 0x73, 0x5c, 0xc4, 0x3a, 0x37, 0xf4, 0xfa, 0x68,
83272 - 0xa3, 0x50, 0x0e, 0x37, 0xd7, 0xe1, 0x43, 0xf2, 0x9c, 0xb6, 0xe4, 0x9b,
83273 - 0xd0, 0x18, 0x5f, 0xef, 0x4c, 0xfe, 0x02, 0x65, 0xc4, 0x94, 0x3b, 0x92,
83274 - 0x5f, 0xd8, 0x23, 0xa1, 0x7d, 0x4e, 0xbd, 0xc2, 0xd1, 0x03, 0x17, 0xfb,
83275 - 0x2e, 0xc7, 0x27, 0xad, 0xd0, 0x78, 0xe5, 0x2a, 0x3c, 0x6c, 0x68, 0xd9,
83276 - 0x9c, 0x18, 0xfd, 0x5f, 0x9e, 0xe8, 0xaf, 0x7f, 0xfa, 0xfd, 0xe6, 0x9c,
83277 - 0x5d, 0xea, 0x99, 0xbb, 0xf0, 0x2d, 0x07, 0x77, 0xd7, 0x6c, 0x74, 0x47,
83278 - 0x3b, 0x1e, 0x93, 0xb5, 0xd0, 0x35, 0xce, 0x3a, 0x41, 0x3b, 0x76, 0xee,
83279 - 0x6d, 0xc3, 0xe6, 0xbd, 0x82, 0xad, 0xf5, 0xad, 0x8b, 0x94, 0x19, 0xf4,
83280 - 0xc3, 0x01, 0x27, 0x97, 0x71, 0x1b, 0x9f, 0xca, 0x9a, 0xab, 0xea, 0x71,
83281 - 0xf6, 0xc0, 0x74, 0xac, 0x19, 0xcd, 0xb5, 0x35, 0x2b, 0x53, 0x4a, 0xff,
83282 - 0x8a, 0x22, 0xc9, 0x9c, 0xc5, 0xc7, 0xd8, 0xc9, 0x79, 0xc1, 0xa9, 0x7e,
83283 - 0x89, 0x3b, 0x0a, 0x7c, 0xf7, 0xc8, 0x5e, 0xe6, 0x32, 0xe4, 0xf9, 0x7a,
83284 - 0x4c, 0xdb, 0xcc, 0xdf, 0x3b, 0x8a, 0x73, 0x72, 0x6d, 0xbe, 0x8a, 0x17,
83285 - 0xe5, 0xed, 0x41, 0x74, 0x97, 0xb7, 0xa1, 0x4f, 0x39, 0x06, 0xe6, 0xd8,
83286 - 0xe4, 0x83, 0x97, 0xfd, 0xf9, 0x8b, 0x22, 0x67, 0x5d, 0x30, 0x3b, 0x35,
83287 - 0xbe, 0x6f, 0x9f, 0xd4, 0xfd, 0x75, 0xc5, 0xf9, 0xd8, 0x94, 0x93, 0xd7,
83288 - 0x24, 0x16, 0x5e, 0x83, 0x98, 0x3f, 0xef, 0xff, 0xdf, 0xe4, 0xf3, 0xcd,
83289 - 0x82, 0x01, 0x93, 0x75, 0xef, 0x2e, 0x41, 0xf1, 0x76, 0x87, 0xc3, 0x5d,
83290 - 0x6e, 0x9f, 0x64, 0xf8, 0x8a, 0xf6, 0xa7, 0xda, 0xaf, 0xb4, 0x2f, 0x71,
83291 - 0x5a, 0x74, 0xda, 0xc8, 0xba, 0xa2, 0x3f, 0x07, 0xa3, 0x65, 0x4d, 0x96,
83292 - 0xdc, 0xad, 0xcd, 0xd9, 0xa7, 0x29, 0x26, 0x6f, 0xee, 0x66, 0x0e, 0x55,
83293 - 0xb2, 0x9f, 0xd7, 0xe4, 0x3e, 0x4b, 0x07, 0x02, 0x28, 0xda, 0xef, 0x21,
83294 - 0xae, 0xcf, 0x80, 0x7b, 0x7f, 0x01, 0xed, 0x55, 0x38, 0xc2, 0x6b, 0xf7,
83295 - 0x6d, 0x31, 0xae, 0x85, 0x6b, 0x7f, 0x21, 0x79, 0xb9, 0x70, 0xbe, 0x13,
83296 - 0xf7, 0xad, 0x65, 0x1c, 0x57, 0xf7, 0x7b, 0x19, 0x9f, 0xab, 0xe1, 0x61,
83297 - 0xcc, 0x5b, 0x32, 0xf0, 0x67, 0x28, 0xd8, 0x5f, 0x8c, 0x07, 0x06, 0xae,
83298 - 0xc7, 0xcc, 0xfd, 0x25, 0xb8, 0x7f, 0x60, 0x26, 0x66, 0xec, 0x97, 0xdc,
83299 - 0x49, 0x47, 0x60, 0x7f, 0x29, 0x56, 0x0c, 0x04, 0x51, 0xb1, 0xbf, 0x0c,
83300 - 0x6d, 0x03, 0xb3, 0xa0, 0xed, 0x2f, 0xc7, 0x5d, 0x03, 0x35, 0x28, 0xdf,
83301 - 0xaf, 0xe1, 0xce, 0x01, 0x03, 0x65, 0xfb, 0x2b, 0x18, 0xd3, 0x42, 0x8c,
83302 - 0x9d, 0x7e, 0x2c, 0xdf, 0xc3, 0xb9, 0x39, 0x58, 0x45, 0xbf, 0x58, 0x45,
83303 - 0x4e, 0xbd, 0x1a, 0xfb, 0x52, 0x73, 0x50, 0x72, 0x30, 0x80, 0xa5, 0x7b,
83304 - 0xc6, 0x35, 0x52, 0x1a, 0x2c, 0x0e, 0x35, 0xa0, 0xe8, 0xa0, 0xe4, 0x7e,
83305 - 0xc1, 0x13, 0x2d, 0x08, 0x5e, 0x58, 0x84, 0x72, 0xe6, 0xbe, 0xc0, 0x7b,
83306 - 0x63, 0xc0, 0xec, 0x31, 0x17, 0x8e, 0x68, 0xab, 0xb0, 0x75, 0xec, 0x9b,
83307 - 0x93, 0x36, 0x2f, 0xfb, 0x47, 0xe5, 0x9c, 0x5f, 0xb9, 0x96, 0x7b, 0xab,
83308 - 0xd1, 0x33, 0x96, 0x5f, 0x07, 0x0b, 0xf6, 0x6d, 0xa7, 0x06, 0xc7, 0x33,
83309 - 0xf2, 0x4c, 0x7c, 0x04, 0xb4, 0x6f, 0xa5, 0x5b, 0xce, 0x8f, 0xbb, 0xa2,
83310 - 0x6a, 0x59, 0x77, 0xf3, 0x86, 0x5b, 0xe2, 0x99, 0x4d, 0xcc, 0xbb, 0x24,
83311 - 0x87, 0xdd, 0x78, 0xcb, 0x9a, 0xcc, 0x07, 0x97, 0xf6, 0x13, 0xfa, 0xcc,
83312 - 0x85, 0x01, 0x0d, 0x5f, 0xc3, 0x1a, 0x67, 0x0d, 0x55, 0xe5, 0x9c, 0xc9,
83313 - 0x79, 0x56, 0xe7, 0x2c, 0x39, 0xed, 0x2c, 0x0e, 0xd3, 0xc1, 0xd4, 0x75,
83314 - 0xa8, 0xc9, 0x38, 0x6b, 0xb5, 0x75, 0x71, 0xbc, 0xa0, 0xb6, 0x1a, 0xd6,
83315 - 0xe4, 0xd9, 0x0f, 0x6b, 0xbe, 0x86, 0x98, 0xa9, 0x5d, 0x3a, 0x1f, 0x12,
83316 - 0xd4, 0x47, 0x10, 0x0c, 0x6c, 0xc3, 0x3a, 0xe7, 0x7c, 0xa0, 0x12, 0x6d,
83317 - 0x97, 0x73, 0x46, 0xfc, 0x5e, 0x0d, 0x23, 0x93, 0x5f, 0x6b, 0x94, 0xb3,
83318 - 0xd7, 0xb2, 0x8f, 0x65, 0x33, 0xe7, 0x97, 0x3c, 0xf9, 0x88, 0xa2, 0xf6,
83319 - 0x3a, 0xeb, 0x63, 0xab, 0x5c, 0x8c, 0x01, 0x2d, 0x0a, 0xe2, 0x45, 0xd1,
83320 - 0x90, 0xfe, 0xe1, 0xe4, 0xba, 0x83, 0x67, 0x74, 0x8b, 0x52, 0x30, 0xda,
83321 - 0xa3, 0xb8, 0x47, 0x73, 0xeb, 0x0e, 0x2e, 0xf2, 0xd8, 0x6d, 0xa9, 0x4a,
83322 - 0x96, 0xd1, 0x30, 0x7b, 0xae, 0x1b, 0xaf, 0x26, 0xca, 0x9c, 0xb3, 0xc7,
83323 - 0x5b, 0xe7, 0x16, 0xe0, 0x11, 0xda, 0x7e, 0xeb, 0x8d, 0xc7, 0xf0, 0x41,
83324 - 0x86, 0x5c, 0x23, 0x61, 0x85, 0x87, 0xd9, 0xe7, 0xd1, 0x84, 0x8a, 0x17,
83325 - 0x07, 0xb7, 0x84, 0x87, 0x9c, 0xfe, 0xbf, 0x8d, 0xcd, 0x23, 0x92, 0x77,
83326 - 0xb5, 0xd9, 0xdb, 0x53, 0xed, 0xb6, 0xc4, 0xdd, 0x6c, 0xa2, 0x92, 0xb9,
83327 - 0xb9, 0x86, 0x0f, 0xe6, 0x6e, 0xc0, 0x39, 0x96, 0x19, 0x4d, 0x6c, 0xc4,
83328 - 0x27, 0xe4, 0x08, 0x99, 0xc4, 0x72, 0xbc, 0xc6, 0x5c, 0xf2, 0x7b, 0x89,
83329 - 0x56, 0xe6, 0x96, 0xab, 0xf0, 0xca, 0xa0, 0xf0, 0x8f, 0x16, 0x2c, 0x4c,
83330 - 0x28, 0x58, 0x1a, 0x5a, 0x85, 0x93, 0xc3, 0xcc, 0x29, 0x07, 0xe5, 0xbc,
83331 - 0xeb, 0x35, 0x58, 0x93, 0x3b, 0x0f, 0xc5, 0xe7, 0x31, 0x3e, 0x5f, 0x89,
83332 - 0xa3, 0xc3, 0x01, 0x1c, 0x60, 0x0e, 0xf9, 0x0e, 0x31, 0x64, 0x28, 0xd1,
83333 - 0x80, 0xd3, 0xcc, 0x95, 0x7e, 0x94, 0x88, 0xe0, 0x33, 0xfe, 0x3e, 0x92,
83334 - 0x90, 0xf5, 0xef, 0x66, 0x5c, 0xc8, 0xfc, 0x18, 0x05, 0xbd, 0x33, 0x70,
83335 - 0xbc, 0xed, 0x79, 0x52, 0xc9, 0x23, 0xfc, 0xb4, 0xe2, 0xf4, 0x70, 0x2b,
83336 - 0xce, 0x0c, 0x2e, 0xc3, 0x99, 0xe1, 0x5f, 0xe1, 0x83, 0x41, 0x91, 0x57,
83337 - 0xce, 0x2c, 0x3a, 0xef, 0x16, 0xb0, 0x5d, 0xe2, 0xd4, 0xf0, 0xbf, 0xa5,
83338 - 0xed, 0x8f, 0xec, 0xe3, 0xab, 0xa4, 0xdd, 0xe7, 0xff, 0x48, 0xdb, 0xa2,
83339 - 0x4b, 0x89, 0xf5, 0x5e, 0x9c, 0x4c, 0x78, 0x99, 0x57, 0x8d, 0xdf, 0x50,
83340 - 0x84, 0xf1, 0xf9, 0xcc, 0x36, 0xb1, 0x3d, 0x53, 0x88, 0x17, 0xfb, 0xdc,
83341 - 0xe4, 0x8a, 0x5f, 0x25, 0x7e, 0x74, 0xd2, 0x0e, 0x0b, 0x99, 0xbf, 0x79,
83342 - 0xa9, 0xe3, 0xf9, 0xc4, 0xfb, 0x55, 0xd4, 0x9f, 0x0f, 0xa7, 0x12, 0x7e,
83343 - 0xbc, 0x9e, 0xa8, 0x8f, 0x67, 0x95, 0x46, 0x58, 0x15, 0xb9, 0xbc, 0xf2,
83344 - 0x68, 0xa2, 0xc3, 0x91, 0xe9, 0xd5, 0x44, 0x9b, 0xbd, 0x95, 0x3a, 0xee,
83345 - 0x49, 0x7d, 0xdb, 0x39, 0x6f, 0xf8, 0x4a, 0xe2, 0x82, 0x2d, 0xe7, 0x88,
83346 - 0x9f, 0xa1, 0x4e, 0x4f, 0x26, 0xe2, 0x28, 0x62, 0x9e, 0x72, 0x2c, 0x31,
83347 - 0x8e, 0x61, 0xda, 0xe5, 0x3b, 0x7d, 0xc6, 0x89, 0x35, 0xd8, 0x84, 0xcf,
83348 - 0xd2, 0x85, 0x78, 0x8b, 0x7d, 0x94, 0x37, 0xb9, 0x31, 0xe1, 0xb4, 0xb7,
83349 - 0x09, 0x9f, 0xf4, 0x29, 0xc8, 0xcc, 0xdd, 0x84, 0x8f, 0xf9, 0xec, 0x0d,
83350 - 0x5e, 0x9f, 0x0b, 0x53, 0xc2, 0xc9, 0x67, 0x67, 0xfa, 0x54, 0x27, 0x07,
83351 - 0xee, 0x6e, 0xde, 0x84, 0xd3, 0xe9, 0x8f, 0x71, 0x80, 0xb9, 0xf4, 0x63,
83352 - 0xe6, 0x34, 0x44, 0xa6, 0x11, 0x70, 0x8d, 0x42, 0x9c, 0xe4, 0xf3, 0x5a,
83353 - 0x59, 0xef, 0xd1, 0x72, 0xe5, 0x3f, 0xe2, 0x78, 0x1e, 0x61, 0x5b, 0x67,
83354 - 0xd3, 0xdf, 0x61, 0xbb, 0xc2, 0x39, 0xbf, 0xc3, 0x76, 0x7f, 0x85, 0x91,
83355 - 0x49, 0x7d, 0x9c, 0x36, 0x65, 0x5c, 0x1b, 0x7c, 0x28, 0xf6, 0x73, 0x1c,
83356 - 0x0f, 0xf3, 0xbb, 0x03, 0x13, 0x99, 0x9d, 0xfc, 0x7e, 0x0d, 0x87, 0x33,
83357 - 0x12, 0xdb, 0xf3, 0x67, 0x87, 0x64, 0x7d, 0x4b, 0xfc, 0x47, 0x9f, 0x5c,
83358 - 0x97, 0x9b, 0x8e, 0x54, 0x7f, 0x59, 0x7c, 0x1a, 0xed, 0xe8, 0x3f, 0xcc,
83359 - 0x2b, 0xc7, 0x47, 0x61, 0x0b, 0xbb, 0x0e, 0xb8, 0x91, 0xea, 0x25, 0x9f,
83360 - 0xed, 0xad, 0xc4, 0x53, 0xbb, 0x35, 0x3c, 0xb9, 0xfb, 0x5a, 0x6c, 0xd9,
83361 - 0x7d, 0x3d, 0xf6, 0xed, 0xae, 0x46, 0x92, 0xb9, 0xf2, 0x27, 0x4d, 0xb6,
83362 - 0x3d, 0x87, 0x9f, 0x1d, 0xf4, 0x05, 0x2f, 0xbf, 0x5f, 0x0e, 0x8b, 0x9f,
83363 - 0x18, 0xb8, 0xd1, 0xf1, 0x97, 0x16, 0xdc, 0xe0, 0x7c, 0xc7, 0x30, 0x27,
83364 - 0xd3, 0x19, 0xde, 0x90, 0xdd, 0x14, 0x7e, 0x28, 0x3b, 0x1d, 0x5b, 0xfb,
83365 - 0xab, 0xd0, 0xbf, 0xbb, 0x32, 0x5e, 0xc9, 0x7e, 0x56, 0xce, 0xb3, 0x31,
83366 - 0xc4, 0xba, 0x66, 0x63, 0x4f, 0x78, 0x4d, 0xf6, 0x79, 0xb4, 0x65, 0xfd,
83367 - 0xd8, 0xdc, 0x1f, 0x60, 0x5f, 0xb2, 0x86, 0xef, 0x3e, 0xf1, 0x20, 0x6c,
83368 - 0xfb, 0x42, 0xd3, 0x11, 0xc6, 0xb7, 0x1f, 0xa3, 0x9d, 0xcf, 0x92, 0xfd,
83369 - 0x1b, 0xc8, 0xa9, 0x0a, 0xe2, 0xde, 0xa8, 0x8d, 0x53, 0xe1, 0x71, 0xdc,
83370 - 0xc1, 0xf6, 0x76, 0xf6, 0x97, 0x51, 0xa6, 0xe2, 0x78, 0x21, 0xef, 0x2d,
83371 - 0x0d, 0x6f, 0xc4, 0xae, 0x31, 0x59, 0x03, 0x3c, 0x81, 0xa5, 0xe4, 0x2c,
83372 - 0x15, 0x73, 0x7f, 0x56, 0x82, 0x32, 0xcd, 0x7d, 0xbe, 0x59, 0xec, 0x2f,
83373 - 0x4e, 0xfb, 0x13, 0xac, 0x5c, 0x87, 0xb5, 0xce, 0xd9, 0xc2, 0x76, 0xbc,
83374 - 0x94, 0x10, 0x9c, 0x5e, 0x8d, 0x83, 0x89, 0x75, 0xd8, 0x92, 0x92, 0x7d,
83375 - 0xc0, 0xe5, 0xa8, 0xc9, 0xfe, 0x55, 0x78, 0x3d, 0xe3, 0xa9, 0x2b, 0xfb,
83376 - 0x3f, 0xb0, 0x38, 0x9b, 0xa6, 0x5c, 0xc3, 0xe1, 0xb5, 0xd9, 0x7d, 0xe1,
83377 - 0x07, 0xb3, 0xad, 0x98, 0x95, 0x95, 0xf5, 0xb4, 0x36, 0xe2, 0xbb, 0xac,
83378 - 0xa7, 0x4d, 0x60, 0x61, 0xf6, 0x0c, 0x16, 0x65, 0xdf, 0x62, 0x2c, 0x16,
83379 - 0xdc, 0x90, 0x75, 0xb6, 0x5f, 0x31, 0x39, 0x91, 0x7d, 0xc3, 0xbf, 0xc4,
83380 - 0xd6, 0xbd, 0x71, 0xc6, 0xc2, 0x3c, 0x46, 0xd5, 0x6b, 0x07, 0x04, 0x5f,
83381 - 0xc6, 0x3c, 0x4e, 0x2c, 0xe8, 0x4b, 0xdd, 0x43, 0x7b, 0x54, 0xc9, 0xf3,
83382 - 0x25, 0xce, 0xac, 0xa3, 0x2f, 0x77, 0x92, 0x9f, 0x4b, 0xfc, 0xbb, 0x6b,
83383 - 0xf2, 0xbe, 0xf0, 0x3a, 0x89, 0x7d, 0x3a, 0x8e, 0x66, 0x9c, 0xbd, 0x0c,
83384 - 0xdd, 0x6b, 0xdc, 0xc1, 0x67, 0x52, 0xff, 0x2f, 0x91, 0xdc, 0xbb, 0xca,
83385 - 0xde, 0xe9, 0xac, 0x19, 0x29, 0x38, 0x1e, 0x62, 0x5f, 0xa4, 0x91, 0x4b,
83386 - 0xf7, 0xcb, 0x59, 0xce, 0x75, 0x72, 0x96, 0xd3, 0x72, 0x19, 0x6d, 0xf6,
83387 - 0x96, 0x14, 0x1e, 0x2c, 0x45, 0x00, 0xcb, 0x47, 0x0b, 0x10, 0x3b, 0x58,
83388 - 0x8c, 0xdb, 0x77, 0xb7, 0xd3, 0x96, 0x2d, 0xda, 0xaf, 0x61, 0xae, 0x55,
83389 - 0x8a, 0xb1, 0x84, 0xf7, 0x1e, 0xe8, 0x0f, 0xb6, 0x02, 0xa1, 0x13, 0xa7,
83390 - 0x5d, 0xc5, 0xb8, 0x9f, 0xb1, 0x23, 0x9d, 0x5e, 0x8e, 0xd8, 0xfe, 0xe3,
83391 - 0xb0, 0xd2, 0xb4, 0xc9, 0x3d, 0xc4, 0x99, 0xbd, 0x6e, 0xa8, 0xd1, 0x5f,
83392 - 0x61, 0xdf, 0xb0, 0x8a, 0xf2, 0x3d, 0x2f, 0xd8, 0x01, 0x43, 0x31, 0xce,
83393 - 0x85, 0xb2, 0xe4, 0x40, 0x6e, 0x94, 0x26, 0x5b, 0x30, 0x4a, 0xac, 0xf1,
83394 - 0x25, 0x63, 0xc8, 0x64, 0xda, 0x90, 0x26, 0x96, 0xa4, 0xc9, 0x9b, 0x4a,
83395 - 0x92, 0x26, 0x63, 0x79, 0x1d, 0x76, 0xd1, 0x5f, 0x0a, 0x98, 0xcb, 0x6f,
83396 - 0xcb, 0xdc, 0x0a, 0x6b, 0xf8, 0x4e, 0x6c, 0x1f, 0x6e, 0xe3, 0x87, 0xfc,
83397 - 0x71, 0xf8, 0xdb, 0x58, 0x38, 0x7a, 0x02, 0x3d, 0x99, 0x38, 0xed, 0xf1,
83398 - 0x63, 0x6c, 0x4f, 0x1f, 0xc3, 0x53, 0x7d, 0x5d, 0xcc, 0x11, 0x8e, 0xe1,
83399 - 0x49, 0x5e, 0xf7, 0xf5, 0x19, 0x9d, 0x01, 0xf5, 0x18, 0x52, 0xe9, 0x4d,
83400 - 0xb8, 0xb3, 0x5f, 0x61, 0x0e, 0xb7, 0x09, 0x77, 0xec, 0xa7, 0x2d, 0x3e,
83401 - 0xd1, 0x81, 0xd6, 0xd1, 0xd7, 0x90, 0xc8, 0xbc, 0xc4, 0xfc, 0x6a, 0x23,
83402 - 0x7a, 0x52, 0x1b, 0xc8, 0xbd, 0x9e, 0x67, 0x3b, 0x47, 0xe8, 0xe7, 0x9d,
83403 - 0x1c, 0xe3, 0xe3, 0xfc, 0x5c, 0xc2, 0x70, 0x4d, 0x57, 0xf2, 0x58, 0x4d,
83404 - 0xbf, 0x4f, 0x49, 0xee, 0xb0, 0x8e, 0x38, 0x71, 0x6f, 0x29, 0x8a, 0x45,
83405 - 0xbf, 0xf9, 0x35, 0x69, 0x99, 0x0b, 0xb1, 0x7d, 0x59, 0x9b, 0x76, 0xa3,
83406 - 0x28, 0x29, 0xeb, 0xd1, 0xe3, 0xc1, 0x22, 0x72, 0x00, 0x6f, 0x52, 0x74,
83407 - 0xd8, 0x6e, 0x77, 0xa7, 0x04, 0x4b, 0x72, 0xdc, 0xfc, 0xe5, 0xcc, 0xaf,
83408 - 0xb0, 0x75, 0x70, 0x1a, 0x16, 0xf5, 0x55, 0x23, 0xee, 0xb7, 0xed, 0xe7,
83409 - 0xe8, 0x6b, 0x09, 0xe6, 0x58, 0xbb, 0xfa, 0x63, 0xc4, 0x94, 0x12, 0xe4,
83410 - 0x72, 0x3d, 0xd1, 0x4d, 0xd0, 0xd4, 0xaf, 0xd8, 0x23, 0x99, 0xc5, 0x79,
83411 - 0x13, 0xee, 0x3a, 0x7e, 0x43, 0x29, 0xce, 0x97, 0xe4, 0xd6, 0xc5, 0xff,
83412 - 0xfc, 0x12, 0xb7, 0xf9, 0xd7, 0x95, 0xbf, 0xff, 0xdf, 0x58, 0x7e, 0x62,
83413 - 0xca, 0xd9, 0xb5, 0xfc, 0x7b, 0x39, 0x32, 0xd6, 0xeb, 0xe5, 0xdc, 0x9a,
83414 - 0x25, 0x7c, 0x49, 0xce, 0xdc, 0x1e, 0x4f, 0x14, 0x30, 0x4e, 0xaa, 0x0b,
83415 - 0x3c, 0x50, 0xfd, 0x1e, 0x14, 0x32, 0x9e, 0x55, 0x61, 0xb3, 0xdf, 0xc6,
83416 - 0x62, 0xb3, 0x00, 0x87, 0x1b, 0x62, 0x72, 0xce, 0xa2, 0xdd, 0xe3, 0xf0,
83417 - 0xd1, 0xd5, 0xf7, 0xfc, 0xe1, 0xba, 0xf5, 0x26, 0x72, 0x37, 0x39, 0x5f,
83418 - 0xd0, 0x86, 0x53, 0x15, 0xf2, 0xae, 0xd0, 0x26, 0xe7, 0xdc, 0x59, 0x51,
83419 - 0xad, 0xac, 0xa3, 0xe9, 0x38, 0x61, 0xd4, 0xeb, 0x95, 0x2a, 0xe3, 0xb9,
83420 - 0xf2, 0xae, 0x6d, 0xf9, 0xa3, 0x8c, 0xf5, 0x72, 0x86, 0xe2, 0x5f, 0xda,
83421 - 0xa7, 0x58, 0x83, 0xed, 0x4f, 0x34, 0x63, 0x62, 0x95, 0xc4, 0xff, 0xff,
83422 - 0xe6, 0xcb, 0x73, 0xba, 0x6d, 0xa9, 0x1f, 0x96, 0xca, 0xb9, 0x24, 0x69,
83423 - 0x7b, 0x3b, 0xf3, 0x27, 0x8f, 0x11, 0xc6, 0xbb, 0xc2, 0xd2, 0x9c, 0xfd,
83424 - 0xa4, 0x1c, 0xa7, 0x28, 0x34, 0xce, 0x4f, 0xbe, 0x3b, 0xf2, 0xd7, 0xa5,
83425 - 0xc2, 0x0f, 0xb7, 0xa5, 0x36, 0x91, 0x9b, 0x8b, 0x3c, 0xbf, 0xb7, 0xd7,
83426 - 0xf8, 0x2b, 0x59, 0xf6, 0xee, 0xc9, 0xf6, 0xc4, 0x16, 0xe4, 0x4c, 0x8e,
83427 - 0xdc, 0x93, 0x3a, 0xa2, 0xb3, 0xa9, 0x75, 0x5c, 0xcc, 0x85, 0x6f, 0xc0,
83428 - 0xa3, 0xf4, 0xc1, 0x99, 0xc6, 0xeb, 0x76, 0x97, 0x9c, 0x9f, 0xa9, 0xd5,
83429 - 0xa6, 0xf4, 0xf5, 0x0b, 0x47, 0x96, 0x42, 0xca, 0xd2, 0x9f, 0x92, 0xb3,
83430 - 0xa8, 0x9f, 0xd9, 0xb5, 0x55, 0xf2, 0xfc, 0xc2, 0x64, 0xfb, 0x35, 0xce,
83431 - 0xd9, 0xbe, 0x7d, 0xa9, 0xbc, 0xdc, 0xb2, 0xde, 0xea, 0xcf, 0xf7, 0x55,
83432 - 0x77, 0x79, 0x3c, 0x22, 0x5b, 0xbc, 0xf4, 0x4a, 0x99, 0xe1, 0xcb, 0x9f,
83433 - 0x59, 0x9d, 0xe1, 0xd4, 0xc9, 0xf7, 0x29, 0x32, 0x6e, 0x62, 0x9e, 0x7a,
83434 - 0xf5, 0x18, 0xb5, 0x29, 0x63, 0x92, 0x3a, 0x32, 0x2e, 0x6d, 0xd2, 0x0e,
83435 - 0x4a, 0xcb, 0x50, 0x2c, 0x75, 0x84, 0xbb, 0x6a, 0x0e, 0x07, 0x2f, 0x17,
83436 - 0x5e, 0x2e, 0xb6, 0x51, 0x66, 0xdb, 0xef, 0x39, 0x31, 0x53, 0xda, 0xe1,
83437 - 0x38, 0xc6, 0x56, 0xd1, 0xce, 0xed, 0x2e, 0xe2, 0xa7, 0xfd, 0x5e, 0x73,
83438 - 0x00, 0x5b, 0x13, 0xa2, 0x6b, 0x23, 0x70, 0x88, 0xd8, 0xb1, 0xd9, 0xe1,
83439 - 0x1b, 0x1e, 0x74, 0xa7, 0xf3, 0xfb, 0xa3, 0x85, 0x72, 0xf6, 0x36, 0x20,
83440 - 0x3a, 0xef, 0x36, 0xc9, 0xb3, 0xb4, 0x85, 0xba, 0x9b, 0x5c, 0x69, 0x3d,
83441 - 0xfe, 0x99, 0xf3, 0x2b, 0xe7, 0x8f, 0x73, 0x7b, 0x95, 0x71, 0xda, 0x51,
83442 - 0x2e, 0x5e, 0x81, 0xf1, 0x9d, 0x3c, 0x69, 0xf2, 0x5c, 0x66, 0x77, 0xe6,
83443 - 0x9f, 0xed, 0x71, 0xe7, 0x5c, 0xe6, 0xe5, 0x77, 0x3a, 0xd2, 0x9a, 0x6d,
83444 - 0x1f, 0xe0, 0xb3, 0xcb, 0x67, 0x34, 0x19, 0xd3, 0x0d, 0x39, 0xcb, 0xf9,
83445 - 0x4f, 0x9c, 0xbb, 0xa9, 0x65, 0xc7, 0x2b, 0x72, 0x67, 0x96, 0x63, 0xea,
83446 - 0x42, 0x23, 0x8f, 0xab, 0x41, 0xcb, 0x72, 0x70, 0xf5, 0x0e, 0x67, 0x0f,
83447 - 0x3e, 0x8d, 0x60, 0x6b, 0x1b, 0x2c, 0xbb, 0xd8, 0xc8, 0xe3, 0x80, 0x61,
83448 - 0xce, 0x51, 0xba, 0x30, 0x3b, 0x5c, 0x2c, 0x1c, 0x3b, 0xe8, 0x8e, 0x06,
83449 - 0xb5, 0x0f, 0x10, 0xaa, 0x3b, 0xe6, 0xec, 0x95, 0x0a, 0x36, 0x18, 0x58,
83450 - 0x9f, 0x21, 0xdf, 0x1e, 0x93, 0x77, 0x1d, 0xe5, 0xda, 0x69, 0x9f, 0xd7,
83451 - 0x82, 0xa5, 0xed, 0xc4, 0x52, 0xeb, 0xcf, 0x3d, 0x4e, 0x7b, 0xc1, 0xf6,
83452 - 0x61, 0x25, 0xd8, 0xba, 0x51, 0xc9, 0xb7, 0xe7, 0xfb, 0x92, 0xf6, 0xea,
83453 - 0x58, 0xbf, 0x7a, 0xf2, 0xfd, 0x42, 0x83, 0x6d, 0x5c, 0xbd, 0x9f, 0x3c,
83454 - 0x3d, 0x2e, 0x7b, 0x51, 0x87, 0x27, 0x39, 0xe1, 0xb1, 0x3f, 0xd8, 0x8b,
83455 - 0xfa, 0xd2, 0x3e, 0x63, 0xec, 0xb3, 0xb5, 0x58, 0x89, 0x91, 0x31, 0x74,
83456 - 0xa1, 0x30, 0x1c, 0xaa, 0x7b, 0x19, 0xd0, 0xdd, 0xd1, 0x50, 0x60, 0xd8,
83457 - 0xd9, 0xd3, 0x35, 0xbd, 0x8b, 0x9c, 0xfa, 0xd5, 0xe4, 0xc5, 0x7f, 0x5c,
83458 - 0x27, 0x25, 0x86, 0xd1, 0x56, 0xaf, 0xc4, 0xe6, 0x17, 0xb3, 0x9d, 0xba,
83459 - 0x30, 0xf4, 0x82, 0x68, 0x5e, 0x47, 0xa1, 0xba, 0x0f, 0x38, 0x9f, 0x47,
83460 - 0x9b, 0x43, 0x81, 0x21, 0xe7, 0x8c, 0xa7, 0xe8, 0xc5, 0xf4, 0xe6, 0xe6,
83461 - 0x5e, 0x17, 0xbe, 0xcd, 0x7c, 0x32, 0x8e, 0x91, 0x84, 0x97, 0x63, 0xa9,
83462 - 0xd7, 0xb6, 0xa3, 0x82, 0x36, 0x8e, 0xd8, 0xe6, 0x06, 0xe2, 0x77, 0x02,
83463 - 0x31, 0xd7, 0x8d, 0xe5, 0x88, 0x93, 0x40, 0xbb, 0x8c, 0x38, 0x39, 0x51,
83464 - 0x7d, 0xdd, 0x0e, 0xda, 0x6f, 0xda, 0x1f, 0x0c, 0x58, 0x88, 0xe3, 0xc5,
83465 - 0xc4, 0xc2, 0xff, 0xc7, 0x05, 0xcb, 0x2c, 0x81, 0xbc, 0x5f, 0x90, 0xbe,
83466 - 0x67, 0x59, 0x28, 0xa8, 0xbf, 0x32, 0xb9, 0x27, 0xdd, 0x9d, 0xf8, 0xad,
83467 - 0xbc, 0xc7, 0xc4, 0x7a, 0x7f, 0xac, 0x8c, 0xf4, 0xed, 0xc5, 0xa1, 0xbe,
83468 - 0x3e, 0x6c, 0x79, 0x82, 0x32, 0x1a, 0x36, 0x16, 0x9a, 0x5d, 0xcc, 0xa5,
83469 - 0x7d, 0x58, 0xa7, 0xcd, 0x8e, 0xa8, 0x2c, 0x37, 0x94, 0xce, 0xad, 0x3b,
83470 - 0x6e, 0x75, 0xf6, 0xbc, 0x7b, 0x98, 0xa3, 0x38, 0xf1, 0x53, 0xf3, 0x46,
83471 - 0x63, 0xca, 0xce, 0x4c, 0x8b, 0xb2, 0x23, 0x2d, 0x6d, 0x75, 0x2a, 0x3d,
83472 - 0x99, 0xbf, 0xa5, 0x4f, 0x58, 0x38, 0x6d, 0xca, 0xbb, 0x39, 0xd2, 0xae,
83473 - 0x85, 0xe1, 0xe6, 0x7f, 0xcd, 0x3b, 0x3a, 0xa2, 0xd3, 0x4e, 0x6c, 0x1e,
83474 - 0x7c, 0x1c, 0xdd, 0x83, 0xa7, 0x9c, 0x33, 0x46, 0x1e, 0xc3, 0x6b, 0x5d,
83475 - 0x1f, 0x0d, 0x1e, 0xb1, 0x90, 0x2d, 0x97, 0xf3, 0xf9, 0x55, 0xd1, 0x13,
83476 - 0xd8, 0xa9, 0xc9, 0xbb, 0x27, 0x3d, 0xe4, 0x11, 0xb2, 0x6f, 0xbb, 0x1a,
83477 - 0x5f, 0xef, 0x95, 0x39, 0x2c, 0xb3, 0x0a, 0xa3, 0xc1, 0xd8, 0x3a, 0x67,
83478 - 0x0e, 0x1b, 0x70, 0x32, 0xfb, 0x38, 0xde, 0xdb, 0xd3, 0x05, 0x35, 0x1c,
83479 - 0x0c, 0xdc, 0x06, 0xbb, 0xeb, 0xb8, 0x19, 0xb3, 0x3c, 0x08, 0x1e, 0x76,
83480 - 0xa9, 0xc0, 0x0b, 0x7b, 0xe0, 0x9d, 0xc1, 0xf9, 0x9f, 0xcf, 0x18, 0x5d,
83481 - 0x6e, 0xd8, 0x0b, 0xfe, 0xb1, 0x29, 0xd8, 0x63, 0xb8, 0xac, 0xbf, 0x99,
83482 - 0x8e, 0x60, 0x5f, 0x44, 0x35, 0xda, 0xef, 0x52, 0xa1, 0xf8, 0xa2, 0xf2,
83483 - 0x5e, 0x69, 0x17, 0xee, 0x6c, 0xf4, 0x59, 0xa5, 0xd1, 0x60, 0xdf, 0x29,
83484 - 0x25, 0x58, 0x67, 0xa9, 0x6d, 0x9c, 0xe7, 0x3a, 0xbc, 0x42, 0x0e, 0xd2,
83485 - 0xca, 0xd8, 0xbb, 0x34, 0xa9, 0x3b, 0xeb, 0x4c, 0xaa, 0x51, 0x13, 0x29,
83486 - 0x52, 0x34, 0xdc, 0x96, 0x05, 0x8e, 0xa6, 0x57, 0xe3, 0x9d, 0x3d, 0x26,
83487 - 0xf3, 0x54, 0x9d, 0xb8, 0xf5, 0xbd, 0x32, 0xc1, 0x80, 0x0e, 0xd3, 0xaa,
83488 - 0x57, 0x19, 0xfb, 0x3d, 0x2a, 0x16, 0xce, 0x8c, 0x86, 0xc6, 0x17, 0xb8,
83489 - 0xdc, 0x88, 0x64, 0x65, 0xfd, 0x53, 0x97, 0xb3, 0xc9, 0xb8, 0x2b, 0xe9,
83490 - 0x25, 0xff, 0xac, 0xc6, 0x6f, 0xc8, 0x83, 0x7f, 0x4d, 0xbe, 0x3b, 0xc1,
83491 - 0x78, 0x3e, 0x91, 0x29, 0x66, 0xbe, 0xe8, 0x91, 0x1c, 0x78, 0xdc, 0xc3,
83492 - 0xb9, 0x28, 0x6b, 0xf4, 0xe3, 0xdc, 0xb0, 0x17, 0x77, 0xec, 0x09, 0xee,
83493 - 0x9b, 0x50, 0xab, 0xf0, 0xc9, 0x70, 0x31, 0x96, 0x0f, 0x78, 0x29, 0x9b,
83494 - 0x8d, 0x5d, 0xc4, 0xff, 0x8f, 0xf8, 0xac, 0x65, 0x0f, 0x94, 0xcc, 0xdc,
83495 - 0x59, 0xe4, 0xec, 0x06, 0xeb, 0x97, 0x60, 0xd9, 0x80, 0xf0, 0x34, 0x15,
83496 - 0x1f, 0x0e, 0x2b, 0xf8, 0x20, 0x6d, 0x62, 0x21, 0xfb, 0xdb, 0x9c, 0x7a,
83497 - 0xc1, 0xf6, 0xd2, 0xcf, 0xd7, 0x64, 0x4c, 0x3c, 0x98, 0xd6, 0x19, 0x53,
83498 - 0xde, 0xb6, 0x5d, 0x46, 0x23, 0xde, 0xde, 0x6d, 0x9c, 0x78, 0xd7, 0x15,
83499 - 0x1a, 0x9f, 0xeb, 0x6a, 0xc4, 0x5b, 0x07, 0x1b, 0xf1, 0xb3, 0xfe, 0x05,
83500 - 0xb8, 0xb9, 0x31, 0x86, 0xf3, 0x73, 0x1b, 0xf1, 0xe6, 0x7e, 0x1d, 0x3b,
83501 - 0x52, 0xcd, 0xd0, 0x47, 0xc7, 0xc9, 0x4f, 0x23, 0xa8, 0x67, 0x4e, 0x65,
83502 - 0xf4, 0xdb, 0x5d, 0x25, 0xd1, 0x2e, 0xec, 0x34, 0xa3, 0x98, 0xb3, 0x5f,
83503 - 0xf4, 0x60, 0xdb, 0xeb, 0xe6, 0x46, 0xf1, 0x72, 0x9f, 0x41, 0x3f, 0x8d,
83504 - 0x52, 0x0f, 0x3a, 0x9e, 0x24, 0x36, 0x87, 0x9e, 0x30, 0x2e, 0x1c, 0xe0,
83505 - 0xef, 0x05, 0x07, 0x9a, 0xd1, 0xce, 0xfe, 0x13, 0xa9, 0x18, 0xf6, 0x8d,
83506 - 0x36, 0x70, 0xcc, 0x26, 0xc7, 0x5f, 0x63, 0xfd, 0x46, 0x69, 0x41, 0xdf,
83507 - 0x68, 0x2b, 0xf9, 0x66, 0x17, 0x79, 0x66, 0x2b, 0x7a, 0xd9, 0xd6, 0xd6,
83508 - 0x94, 0x89, 0x65, 0xc9, 0x56, 0x3c, 0x9d, 0x90, 0x33, 0x8d, 0x46, 0x64,
83509 - 0x9e, 0x22, 0xef, 0x7d, 0xb5, 0xe2, 0x10, 0x75, 0xb2, 0x70, 0x60, 0x39,
83510 - 0xed, 0xd0, 0x8b, 0x45, 0x7b, 0x74, 0x3c, 0x95, 0xba, 0x13, 0xef, 0x8c,
83511 - 0x98, 0x68, 0x4b, 0x8a, 0xbe, 0xe5, 0x5c, 0x4d, 0x1c, 0xc7, 0x19, 0x5b,
83512 - 0x7e, 0x33, 0x10, 0xfb, 0x1b, 0x4e, 0xf3, 0x49, 0x15, 0xc1, 0xce, 0x19,
83513 - 0x9c, 0xf0, 0x9b, 0x1a, 0xe5, 0x6c, 0x94, 0x8b, 0xa8, 0x16, 0xb4, 0xca,
83514 - 0x55, 0x4b, 0xe7, 0x7d, 0xcb, 0xad, 0x6e, 0xc2, 0x37, 0x06, 0xdc, 0xe4,
83515 - 0xf4, 0x2a, 0x73, 0x11, 0xab, 0x83, 0xb6, 0x61, 0x95, 0xa9, 0xb9, 0x79,
83516 - 0xdb, 0x2e, 0xef, 0xa1, 0x19, 0x2e, 0xec, 0x32, 0x6b, 0xda, 0x4a, 0x58,
83517 - 0x6f, 0x69, 0x38, 0x18, 0x2b, 0x52, 0x9b, 0x99, 0x27, 0x3e, 0x8e, 0x75,
83518 - 0x7b, 0x1e, 0xc7, 0x1a, 0x7e, 0x3a, 0xf6, 0xd8, 0x5d, 0x4b, 0x4c, 0x05,
83519 - 0x2f, 0x1a, 0x76, 0x57, 0x97, 0x69, 0x70, 0x6e, 0x65, 0x5e, 0x1f, 0x47,
83520 - 0xe7, 0xa1, 0xc7, 0xf1, 0x28, 0xed, 0xab, 0x92, 0x7e, 0xbc, 0x32, 0x69,
83521 - 0x77, 0xdd, 0xdc, 0x58, 0x87, 0x4f, 0x9d, 0xfc, 0x43, 0xec, 0x75, 0xab,
83522 - 0x93, 0x13, 0xa7, 0x55, 0xb9, 0xde, 0xed, 0x5c, 0x5b, 0xea, 0x2b, 0x65,
83523 - 0xf9, 0xd8, 0xf2, 0x5b, 0xb6, 0xfb, 0xbb, 0x3d, 0xe5, 0x78, 0xa2, 0x52,
83524 - 0xe2, 0x87, 0xac, 0xed, 0x42, 0x31, 0xe6, 0x32, 0xcf, 0x7a, 0xe2, 0x38,
83525 - 0xb6, 0x93, 0xb7, 0xf9, 0xc3, 0x92, 0x03, 0xd7, 0x9b, 0x5b, 0xd4, 0x5b,
83526 - 0x89, 0xed, 0x0a, 0x76, 0xd6, 0xf6, 0xa1, 0x97, 0xbe, 0xba, 0xab, 0x36,
83527 - 0x18, 0xef, 0x45, 0xd4, 0xde, 0x35, 0xbd, 0xe7, 0xdf, 0xf0, 0x5e, 0x96,
83528 - 0xbc, 0xb7, 0x9d, 0x7f, 0x37, 0xeb, 0x71, 0x74, 0xed, 0x91, 0xf9, 0x7f,
83529 - 0x1c, 0x8f, 0x51, 0xfe, 0xce, 0x81, 0xc7, 0xf1, 0x4d, 0xda, 0x4e, 0x45,
83530 - 0xd3, 0xd1, 0xc7, 0x2a, 0x30, 0xbb, 0xaf, 0x1c, 0xe3, 0x0f, 0x57, 0xca,
83531 - 0x39, 0x28, 0x62, 0x62, 0xaf, 0xf2, 0x38, 0xd6, 0x0f, 0x1d, 0xa0, 0x2f,
83532 - 0x3a, 0xfe, 0x47, 0x2c, 0xce, 0xc7, 0xab, 0x00, 0xd6, 0x11, 0x93, 0x73,
83533 - 0xb8, 0xee, 0xc7, 0x9a, 0xc4, 0x61, 0xc7, 0xf7, 0x0b, 0xa2, 0xab, 0xe8,
83534 - 0xf7, 0x6d, 0xf4, 0xfb, 0xe5, 0xf4, 0xfb, 0x56, 0xfa, 0x7d, 0x0b, 0xfd,
83535 - 0x3e, 0x46, 0xbf, 0x8f, 0xd2, 0xef, 0x23, 0xf4, 0xfb, 0x66, 0xfa, 0xbd,
83536 - 0x49, 0xbf, 0x87, 0x72, 0xa2, 0xf9, 0x38, 0x3c, 0xfd, 0x5e, 0xda, 0x50,
83537 - 0xee, 0x3d, 0x99, 0x83, 0xc4, 0x9f, 0xd3, 0xe6, 0x9c, 0xc0, 0x62, 0xc6,
83538 - 0xd5, 0x61, 0x62, 0x44, 0x7a, 0xe4, 0xaf, 0x9c, 0x77, 0x2a, 0xd2, 0xc4,
83539 - 0xfd, 0x57, 0xa8, 0x8f, 0xa5, 0xe1, 0x1a, 0xf3, 0x69, 0xc6, 0xb0, 0x5f,
83540 - 0x18, 0xf5, 0x3d, 0x7e, 0x96, 0xf9, 0x41, 0xaa, 0xbe, 0x6f, 0x1a, 0x0c,
83541 - 0xab, 0x51, 0xdd, 0x0a, 0xac, 0xf4, 0x73, 0xcc, 0x72, 0xde, 0x6e, 0x25,
83542 - 0x1e, 0x1b, 0x6c, 0xc3, 0x7f, 0x19, 0xd4, 0xa8, 0x8b, 0x9a, 0xf1, 0x5b,
83543 - 0x5d, 0xf8, 0x71, 0x00, 0x2e, 0xff, 0x35, 0xc0, 0xe7, 0x55, 0x98, 0x73,
83544 - 0x58, 0xde, 0xef, 0x4b, 0x57, 0xb9, 0x1a, 0x66, 0x42, 0x6c, 0x04, 0x44,
83545 - 0x6a, 0x17, 0x33, 0xc1, 0x39, 0xce, 0x3b, 0x40, 0xb1, 0x55, 0x82, 0xe9,
83546 - 0x45, 0xd8, 0x5a, 0xe7, 0xe0, 0xec, 0xb3, 0x72, 0x6e, 0xb0, 0x8a, 0x78,
83547 - 0xe4, 0x8b, 0xb6, 0x62, 0x5b, 0xaf, 0x75, 0x7f, 0x15, 0x96, 0xa3, 0xa7,
83548 - 0x37, 0xa7, 0x83, 0x87, 0xc3, 0x1a, 0xa9, 0x42, 0x48, 0x9f, 0xa3, 0xc0,
83549 - 0xdd, 0xd1, 0x1c, 0xc1, 0x83, 0x99, 0x04, 0xfa, 0x38, 0xc6, 0x0d, 0xf4,
83550 - 0xb3, 0x75, 0x7f, 0xfa, 0xdd, 0x4e, 0x7c, 0x33, 0xa1, 0xd3, 0xfe, 0x2f,
83551 - 0xda, 0xe9, 0x8a, 0x39, 0x7d, 0x55, 0x30, 0x3a, 0x57, 0xa8, 0xf3, 0x98,
83552 - 0xd3, 0x06, 0x8f, 0xc8, 0xc2, 0xf7, 0xf4, 0xa8, 0xd7, 0xaa, 0x20, 0x36,
83553 - 0xcf, 0x1a, 0x80, 0x32, 0x9c, 0x94, 0xf7, 0x20, 0xba, 0xf0, 0xff, 0x99,
83554 - 0x6d, 0x8e, 0xfd, 0x8c, 0xbb, 0x34, 0xcc, 0x4c, 0xca, 0x7d, 0x7b, 0xc1,
83555 - 0x67, 0x4d, 0xc1, 0x3a, 0xdd, 0xb5, 0x81, 0xf7, 0xab, 0xf1, 0x23, 0xc6,
83556 - 0xd9, 0xc0, 0xc0, 0x02, 0xa8, 0x4d, 0x5e, 0xdc, 0xdd, 0x50, 0x8a, 0xf8,
83557 - 0x4a, 0xe1, 0xa1, 0x92, 0xef, 0xbb, 0xa9, 0xcf, 0xff, 0x17, 0x0f, 0x99,
83558 - 0xcf, 0x61, 0xc2, 0x9f, 0x70, 0xf6, 0xdd, 0xd7, 0x99, 0x77, 0x28, 0x16,
83559 - 0xaf, 0xb7, 0xa5, 0x2c, 0x6c, 0x30, 0x99, 0x0b, 0xdd, 0x53, 0xc9, 0x9c,
83560 - 0x44, 0xca, 0x4b, 0xbb, 0x5b, 0x9d, 0xf6, 0x0e, 0xa6, 0xe4, 0x7a, 0xf7,
83561 - 0x64, 0x9f, 0x77, 0x01, 0x95, 0x5e, 0xe2, 0xad, 0x82, 0x33, 0xb5, 0x09,
83562 - 0xfa, 0x34, 0x7e, 0xec, 0x46, 0x4d, 0xba, 0x5f, 0x75, 0xfd, 0xf8, 0x1a,
83563 - 0xcc, 0x31, 0x7f, 0xaf, 0xca, 0x7c, 0xc4, 0xf0, 0x54, 0x48, 0x41, 0xa5,
83564 - 0x61, 0x9c, 0xff, 0x19, 0x7d, 0x6b, 0xc2, 0x95, 0xc0, 0x53, 0x63, 0xa7,
83565 - 0xec, 0xf1, 0x6b, 0xfc, 0x9c, 0x73, 0xa9, 0xdb, 0x86, 0x0f, 0x06, 0x65,
83566 - 0xce, 0x64, 0x9d, 0x9f, 0xb1, 0x5d, 0xd5, 0x51, 0xca, 0x7b, 0xa7, 0x87,
83567 - 0x4d, 0xe6, 0x3a, 0x6d, 0xf8, 0xc7, 0xc1, 0x95, 0xf8, 0xfd, 0x60, 0x4d,
83568 - 0xdb, 0x7f, 0x52, 0x6d, 0x7b, 0x69, 0xf8, 0x6b, 0xf8, 0x65, 0xa5, 0x86,
83569 - 0xa7, 0x69, 0x43, 0xbf, 0x4f, 0x58, 0x4b, 0xaf, 0x21, 0x16, 0xfc, 0xef,
83570 - 0x44, 0xf0, 0xc2, 0x49, 0x67, 0x5f, 0xa9, 0xde, 0xfc, 0xd0, 0x15, 0x8c,
83571 - 0x9f, 0x51, 0x83, 0xd6, 0x36, 0x65, 0x39, 0xec, 0x4c, 0x2b, 0xce, 0x67,
83572 - 0xa6, 0xda, 0x42, 0x97, 0x8d, 0x2a, 0xb1, 0x03, 0xb1, 0x07, 0xda, 0x22,
83573 - 0x73, 0xb9, 0x9f, 0x92, 0x47, 0x77, 0x7f, 0x95, 0xf6, 0x98, 0xa2, 0x3d,
83574 - 0xa6, 0x68, 0x8f, 0xc4, 0xa4, 0xe7, 0x89, 0x55, 0x3f, 0x48, 0xd1, 0x1e,
83575 - 0xe9, 0x3f, 0xcf, 0xd1, 0x7f, 0x72, 0x5c, 0xb9, 0xdd, 0x39, 0xb7, 0xf6,
83576 - 0x06, 0x63, 0x62, 0xe2, 0x09, 0x79, 0x27, 0xad, 0x66, 0x43, 0x16, 0xc1,
83577 - 0xf6, 0x5e, 0xe5, 0xb3, 0x72, 0x39, 0x67, 0xfb, 0xed, 0x90, 0xf8, 0x40,
83578 - 0x6e, 0x3f, 0xe0, 0xc8, 0xc8, 0x63, 0x65, 0xf2, 0x7e, 0xd4, 0xc1, 0xbd,
83579 - 0xff, 0x92, 0xce, 0xfe, 0x3b, 0xe5, 0x10, 0x7d, 0xfd, 0x5b, 0xc7, 0x2e,
83580 - 0xba, 0xfc, 0x1b, 0xfb, 0x97, 0x55, 0x32, 0xfe, 0x55, 0xf8, 0x62, 0xb0,
83581 - 0x05, 0xe7, 0x19, 0x7f, 0xdf, 0x6a, 0x1a, 0xef, 0x0c, 0x20, 0xd8, 0x51,
83582 - 0xae, 0x46, 0x91, 0xcd, 0xb4, 0xe0, 0xb3, 0x44, 0x14, 0x07, 0x12, 0x35,
83583 - 0xed, 0x35, 0xae, 0xb3, 0x6a, 0x7c, 0x86, 0x58, 0x54, 0x0c, 0x9f, 0x92,
83584 - 0x5f, 0x2e, 0xac, 0x8d, 0x60, 0x88, 0x6d, 0x7a, 0xa2, 0x1a, 0x46, 0x9a,
83585 - 0xc5, 0x56, 0x73, 0xef, 0x4e, 0xfd, 0xa9, 0xbf, 0x2e, 0xda, 0xe3, 0x7b,
83586 - 0x4d, 0x17, 0xed, 0x71, 0xcd, 0x6b, 0x69, 0xf4, 0xe1, 0xd2, 0x3d, 0xf2,
83587 - 0x6e, 0xa9, 0xf8, 0xb3, 0x82, 0x1f, 0x84, 0xc7, 0xdb, 0xa6, 0x21, 0xf8,
83588 - 0xec, 0x7d, 0xb4, 0xf5, 0x93, 0x49, 0x59, 0x53, 0x6c, 0xc1, 0xfb, 0x2c,
83589 - 0xef, 0xa6, 0x5f, 0x9c, 0xcc, 0xb8, 0xdd, 0xbf, 0x4c, 0x2a, 0xcc, 0x4b,
83590 - 0x97, 0xe3, 0x97, 0x99, 0x37, 0xd5, 0x8f, 0x35, 0x13, 0x67, 0xb2, 0x2b,
83591 - 0x69, 0x4f, 0x92, 0xff, 0xc7, 0x98, 0xff, 0x07, 0x3b, 0x8f, 0x60, 0x25,
83592 - 0xca, 0x0f, 0xad, 0x42, 0xd9, 0x1e, 0xe2, 0x67, 0x88, 0xf9, 0x3f, 0xaf,
83593 - 0x67, 0xec, 0x91, 0xf7, 0x0d, 0xca, 0xed, 0xed, 0xab, 0x44, 0x2f, 0x82,
83594 - 0x27, 0x7f, 0x57, 0x8e, 0xb2, 0x55, 0xc0, 0x21, 0xa9, 0x67, 0xb0, 0xde,
83595 - 0x4a, 0x54, 0xee, 0xa9, 0x89, 0x2c, 0x46, 0xcd, 0xf9, 0xdb, 0xd4, 0x95,
83596 - 0xb8, 0xfe, 0xd0, 0x3f, 0x73, 0x0e, 0xa4, 0x6c, 0x35, 0x9e, 0xa0, 0xdd,
83597 - 0x16, 0x92, 0x13, 0xb6, 0x24, 0x7f, 0x6d, 0xcf, 0xa4, 0x2f, 0x7e, 0xf6,
83598 - 0x15, 0x60, 0x5d, 0xd6, 0x60, 0xbc, 0x2b, 0x46, 0x7c, 0xe8, 0x29, 0xbb,
83599 - 0x3c, 0xea, 0xc6, 0x9a, 0x6c, 0x03, 0x16, 0x0f, 0xd8, 0xf6, 0xb9, 0xb9,
83600 - 0x31, 0xf8, 0xa2, 0x3e, 0x62, 0x98, 0x0f, 0x8f, 0x26, 0x4b, 0xf8, 0x2d,
83601 - 0xc7, 0x4f, 0x42, 0xe3, 0xb3, 0x55, 0x63, 0xc3, 0x0c, 0x97, 0xd1, 0x9e,
83602 - 0x55, 0x24, 0xee, 0xfb, 0xf0, 0x08, 0xe3, 0xf3, 0xd2, 0x64, 0x00, 0xf1,
83603 - 0xac, 0x6d, 0xbf, 0xd9, 0xec, 0xc7, 0xc3, 0xac, 0xdf, 0x9a, 0xec, 0x41,
83604 - 0x37, 0xed, 0x22, 0x7e, 0xc8, 0xd0, 0x35, 0xc6, 0xfb, 0x75, 0x59, 0x2f,
83605 - 0x63, 0x58, 0x25, 0x6e, 0x63, 0x2c, 0x7a, 0x54, 0xce, 0xca, 0xd0, 0x07,
83606 - 0xdf, 0x31, 0xad, 0x1b, 0x5c, 0x30, 0xd0, 0x99, 0xf5, 0x63, 0x79, 0x32,
83607 - 0x78, 0x41, 0xde, 0xcd, 0xfb, 0xcc, 0xac, 0xc3, 0xc6, 0x6c, 0x00, 0xb7,
83608 - 0x27, 0x8f, 0x3e, 0x3a, 0x13, 0xd6, 0x7f, 0x9e, 0x81, 0x06, 0x7c, 0x3d,
83609 - 0x5b, 0xcd, 0xf6, 0x83, 0x1b, 0xde, 0x50, 0xaa, 0xf1, 0x8d, 0x43, 0x26,
83610 - 0xdb, 0x57, 0xb1, 0x8c, 0xed, 0x2c, 0x49, 0x5e, 0x8f, 0x47, 0x0e, 0x35,
83611 - 0xe3, 0xc1, 0x6c, 0x13, 0x16, 0x31, 0x3e, 0x75, 0x30, 0x37, 0xc4, 0xbd,
83612 - 0xc0, 0xed, 0x03, 0xa2, 0x7b, 0x28, 0x6f, 0x36, 0x8f, 0x33, 0x5f, 0x36,
83613 - 0x41, 0x43, 0x74, 0xf6, 0x92, 0x77, 0xd2, 0x56, 0x6f, 0xdf, 0xdf, 0x84,
83614 - 0xa5, 0x03, 0x2a, 0x6a, 0xc2, 0x85, 0x88, 0xb7, 0x29, 0x68, 0x19, 0x90,
83615 - 0x38, 0x2b, 0xdc, 0xc6, 0x64, 0x5c, 0x0d, 0xb1, 0x0f, 0x93, 0x71, 0x35,
83616 - 0x77, 0xbf, 0x3b, 0x25, 0x6b, 0x0b, 0x6f, 0x93, 0x2f, 0x85, 0xd1, 0xe2,
83617 - 0xc4, 0x68, 0x59, 0x13, 0xb7, 0xe0, 0x66, 0xec, 0x0e, 0xd3, 0xc6, 0x17,
83618 - 0x34, 0x4a, 0xac, 0xd6, 0x9d, 0xbd, 0xa9, 0xb1, 0x7e, 0xa3, 0xe3, 0x82,
83619 - 0x42, 0xfb, 0xda, 0x2f, 0x31, 0xd1, 0x8f, 0x8d, 0xc9, 0x28, 0xde, 0xe9,
83620 - 0x63, 0xbc, 0xb9, 0x31, 0xb6, 0xb4, 0x04, 0x86, 0xf9, 0x08, 0x42, 0xd6,
83621 - 0x49, 0xc6, 0xf6, 0xf3, 0xe9, 0x4a, 0x2c, 0xde, 0x23, 0x65, 0x1a, 0xf1,
83622 - 0xee, 0xb0, 0xec, 0x4d, 0x6e, 0xc2, 0x53, 0x7d, 0x2e, 0x0c, 0x99, 0x35,
83623 - 0x3d, 0x2a, 0xe3, 0xe7, 0xfc, 0xc6, 0xa0, 0xf6, 0x23, 0x72, 0xd5, 0x0b,
83624 - 0x4d, 0x8c, 0xca, 0xd7, 0x34, 0xa3, 0x85, 0x72, 0xb5, 0x18, 0xe2, 0x93,
83625 - 0x16, 0x1e, 0x6c, 0xde, 0x84, 0x93, 0x7d, 0x86, 0xf5, 0xb4, 0xac, 0x03,
83626 - 0x34, 0xf2, 0xf9, 0x74, 0x37, 0x36, 0x1b, 0xc2, 0x69, 0x75, 0xfa, 0x16,
83627 - 0x59, 0xa7, 0xd1, 0x8c, 0x77, 0x68, 0xaf, 0x3d, 0xe9, 0x05, 0x8c, 0xfd,
83628 - 0x12, 0xf3, 0xbd, 0x56, 0x80, 0xf5, 0xca, 0xbf, 0xa2, 0xe0, 0xf4, 0x01,
83629 - 0xe1, 0x58, 0x0b, 0x70, 0xff, 0x80, 0xec, 0x0b, 0xa8, 0x98, 0x7f, 0x68,
83630 - 0x35, 0xce, 0xed, 0xce, 0x71, 0xae, 0x37, 0xc3, 0xd6, 0xd7, 0xc9, 0xb9,
83631 - 0xda, 0x4b, 0xc9, 0xb9, 0xc8, 0xe5, 0xea, 0x36, 0x2a, 0x6e, 0x84, 0xb2,
83632 - 0x11, 0xf2, 0x0a, 0xe1, 0x17, 0x01, 0x3c, 0x93, 0x69, 0xc6, 0x6d, 0xc9,
83633 - 0x6a, 0x8c, 0x90, 0x6f, 0xa5, 0x89, 0x17, 0xe9, 0x0c, 0xe3, 0xca, 0x70,
83634 - 0x15, 0x3f, 0x3a, 0x3f, 0xb3, 0xf8, 0x31, 0x9c, 0x7b, 0x6b, 0x68, 0xcb,
83635 - 0xb1, 0x36, 0xc5, 0xd9, 0xdb, 0x18, 0xca, 0x48, 0xac, 0x56, 0x98, 0xb7,
83636 - 0xde, 0xa5, 0x49, 0x6e, 0x2a, 0xe7, 0x0e, 0x7e, 0xde, 0xa7, 0xe3, 0x5b,
83637 - 0x8d, 0x3b, 0x95, 0x58, 0xa5, 0xf3, 0x5e, 0x92, 0x55, 0x4c, 0xd9, 0x6e,
83638 - 0x9b, 0x2b, 0x6b, 0x94, 0x62, 0x97, 0x6c, 0x83, 0x39, 0xfa, 0xc3, 0x66,
83639 - 0x05, 0xf4, 0x0a, 0x5d, 0xce, 0x50, 0xd2, 0xdf, 0xfd, 0x78, 0x35, 0x11,
83640 - 0x47, 0x26, 0x51, 0xdf, 0xb3, 0x51, 0x71, 0xc9, 0xd9, 0xf3, 0xba, 0xb8,
83641 - 0x22, 0x3e, 0x16, 0x87, 0x27, 0xe9, 0xb5, 0xca, 0x59, 0xff, 0x9d, 0xb9,
83642 - 0x1d, 0x8c, 0x07, 0xf5, 0x9c, 0x62, 0xd5, 0x39, 0x7f, 0x9e, 0x46, 0x07,
83643 - 0xd6, 0x25, 0x0c, 0xc6, 0xc0, 0xd5, 0x76, 0x37, 0xe7, 0xe1, 0x58, 0xa2,
83644 - 0x03, 0xf7, 0x27, 0xea, 0xc7, 0x9f, 0xa4, 0x6d, 0xe1, 0xee, 0x0e, 0xb4,
83645 - 0xf0, 0xd9, 0x50, 0xaa, 0xe6, 0x42, 0x37, 0x75, 0x3d, 0x31, 0xad, 0xce,
83646 - 0x59, 0x97, 0x77, 0x1b, 0x3a, 0xcb, 0xeb, 0xc4, 0xb3, 0xfa, 0xd8, 0x80,
83647 - 0xfa, 0xef, 0x15, 0x4c, 0x97, 0x5c, 0x32, 0x82, 0xe3, 0x09, 0x1f, 0xbe,
83648 - 0x9e, 0xb4, 0xe8, 0x03, 0xc0, 0xfa, 0x6c, 0x33, 0xf3, 0x88, 0xa7, 0xec,
83649 - 0x0a, 0x87, 0xeb, 0xba, 0x69, 0x83, 0x0b, 0x70, 0x82, 0xb1, 0xb7, 0x66,
83650 - 0x9e, 0xa1, 0x2d, 0x52, 0xe4, 0x7d, 0xeb, 0x5f, 0xdb, 0xee, 0x68, 0x09,
83651 - 0x36, 0x0c, 0x85, 0x22, 0x2b, 0x19, 0x67, 0x9f, 0x6a, 0x36, 0xc6, 0x6d,
83652 - 0xc6, 0xc0, 0x19, 0xd1, 0x04, 0xe7, 0x3a, 0x24, 0xff, 0xaf, 0x03, 0x7f,
83653 - 0x41, 0x3b, 0xff, 0x24, 0x21, 0x7e, 0x62, 0x10, 0x37, 0xfd, 0xf8, 0x06,
83654 - 0xed, 0xfc, 0x7c, 0xa2, 0x0e, 0x59, 0xfa, 0x65, 0x07, 0xfd, 0xe3, 0xdd,
83655 - 0x44, 0x30, 0x7e, 0x93, 0xca, 0x7c, 0x8f, 0xfe, 0xf1, 0x51, 0x22, 0x42,
83656 - 0xdf, 0xf9, 0x2a, 0x3f, 0x0d, 0xf4, 0x87, 0x3a, 0xd6, 0xd1, 0xe9, 0x07,
83657 - 0x7e, 0x9c, 0x65, 0xf9, 0x03, 0xa9, 0x9a, 0xd6, 0x15, 0x4a, 0x8d, 0x59,
83658 - 0xa3, 0x54, 0x30, 0x9f, 0xd5, 0x68, 0xff, 0xb7, 0xe0, 0x43, 0x59, 0x4f,
83659 - 0x4e, 0x12, 0x8b, 0x92, 0xe8, 0x2f, 0x22, 0x97, 0x5b, 0xe9, 0x9c, 0xe5,
83660 - 0xaf, 0x3f, 0xf1, 0xa9, 0x12, 0x1c, 0x3f, 0xe3, 0x0a, 0x76, 0xcc, 0x20,
83661 - 0x8f, 0xfe, 0x0b, 0xfa, 0xc1, 0x37, 0x59, 0xf6, 0x93, 0xbe, 0x62, 0x7c,
83662 - 0x63, 0x88, 0x31, 0x37, 0x55, 0x80, 0x82, 0x3d, 0x5e, 0x3c, 0x78, 0x48,
83663 - 0xc7, 0x3e, 0x27, 0x57, 0x17, 0x9d, 0x52, 0x77, 0xc4, 0x88, 0x73, 0x73,
83664 - 0x81, 0x19, 0x07, 0x56, 0xe3, 0xd4, 0x6e, 0x9d, 0x71, 0x2f, 0x67, 0x27,
83665 - 0xcf, 0x86, 0x1d, 0x6e, 0x1e, 0x17, 0x6e, 0x5e, 0xc0, 0x71, 0x6d, 0x4d,
83666 - 0x85, 0xda, 0xb7, 0x51, 0x17, 0xb7, 0x67, 0xc5, 0xfe, 0x22, 0x78, 0x8e,
83667 - 0x63, 0xeb, 0xa7, 0xad, 0x1c, 0x48, 0x54, 0x33, 0x47, 0xf7, 0xc1, 0xa2,
83668 - 0xad, 0x58, 0xf2, 0x0e, 0x13, 0x6d, 0xc5, 0xa2, 0xad, 0x58, 0xb4, 0x15,
83669 - 0x8b, 0xb6, 0x62, 0x65, 0x16, 0xe0, 0x99, 0x3e, 0x03, 0x23, 0xec, 0x73,
83670 - 0xe7, 0x30, 0x39, 0xbc, 0xf3, 0x3e, 0x50, 0x9d, 0xe4, 0x29, 0xca, 0xc4,
83671 - 0xdd, 0xb7, 0x60, 0xa8, 0xef, 0x56, 0x7e, 0x14, 0xb4, 0xd2, 0x66, 0x7a,
83672 - 0xd2, 0x62, 0x83, 0x22, 0x93, 0x17, 0xc3, 0x99, 0x9b, 0x2b, 0x51, 0x2c,
83673 - 0xf1, 0x5d, 0xc1, 0x0e, 0xe7, 0x7e, 0xde, 0xd6, 0xe4, 0x9e, 0x85, 0x9a,
83674 - 0x79, 0x9b, 0xf0, 0x48, 0x9f, 0x8a, 0xdb, 0xc2, 0xf2, 0x7f, 0x08, 0x9a,
83675 - 0x99, 0x0f, 0xc8, 0xfe, 0x7c, 0x82, 0xfe, 0x99, 0xb3, 0x15, 0x19, 0x53,
83676 - 0xa6, 0x7f, 0x13, 0x4e, 0xf4, 0x1b, 0x8c, 0x59, 0x26, 0x32, 0xe9, 0x04,
83677 - 0x7d, 0x42, 0xfc, 0xdc, 0xc0, 0x33, 0x6c, 0x6b, 0xf6, 0x80, 0x0b, 0x95,
83678 - 0x8d, 0x6e, 0x94, 0xd0, 0xdf, 0x6f, 0x4b, 0xd7, 0x04, 0xbe, 0xa5, 0x24,
83679 - 0x9c, 0xf5, 0xd7, 0x5d, 0x29, 0x8c, 0xcf, 0x34, 0x2a, 0xb1, 0x6f, 0xb0,
83680 - 0x11, 0x8f, 0xed, 0x76, 0xd1, 0x46, 0xed, 0x05, 0xe5, 0x4d, 0x46, 0xc7,
83681 - 0x02, 0x97, 0xe0, 0x45, 0x23, 0xbe, 0xc1, 0x1c, 0x60, 0x7d, 0x7f, 0xd0,
83682 - 0x7c, 0x05, 0x41, 0xf3, 0x24, 0x16, 0xe0, 0x59, 0x93, 0xb8, 0x39, 0xaf,
83683 - 0x11, 0x1b, 0xf7, 0x1b, 0xb4, 0x29, 0x37, 0xf3, 0x63, 0xf9, 0xbf, 0x37,
83684 - 0xba, 0xb3, 0xc6, 0xf3, 0x32, 0xe4, 0x9c, 0x43, 0xb3, 0xfc, 0x4f, 0x06,
83685 - 0xa5, 0x87, 0xf8, 0x34, 0xa3, 0xd7, 0xe0, 0xb8, 0x5f, 0xb0, 0x4b, 0x0d,
83686 - 0xf9, 0x7f, 0x1c, 0xc4, 0x11, 0x8e, 0xfb, 0xc2, 0xcd, 0x6f, 0xdb, 0x95,
83687 - 0x86, 0xc4, 0x50, 0xe2, 0x49, 0x5a, 0xfa, 0x8f, 0xed, 0x08, 0x10, 0x3b,
83688 - 0x3a, 0xfa, 0x8d, 0x78, 0x29, 0x63, 0xd8, 0x46, 0x07, 0x63, 0x04, 0x5f,
83689 - 0x8c, 0xb6, 0x6f, 0x21, 0xa4, 0xad, 0x20, 0xee, 0x9c, 0xe6, 0x58, 0x7a,
83690 - 0x52, 0x82, 0x51, 0x3a, 0x8a, 0x7a, 0x63, 0xb8, 0x81, 0x39, 0x63, 0x41,
83691 - 0x6f, 0x0b, 0x6a, 0x99, 0x3f, 0xba, 0x7b, 0x5b, 0x61, 0x30, 0x97, 0x9c,
83692 - 0xd9, 0xbb, 0x1c, 0x0b, 0xc6, 0xf2, 0x1c, 0x5a, 0xc7, 0x11, 0x67, 0xdd,
83693 - 0xea, 0x29, 0x78, 0xee, 0xd3, 0x69, 0x53, 0x72, 0xe6, 0xc5, 0x6b, 0x55,
83694 - 0x12, 0x37, 0xcf, 0x50, 0xd7, 0xed, 0x03, 0xab, 0xed, 0x81, 0x94, 0xf0,
83695 - 0xa6, 0x2e, 0x78, 0x9a, 0x24, 0xf7, 0xd1, 0x31, 0x46, 0x8e, 0x3c, 0xcc,
83696 - 0x1c, 0xec, 0x8d, 0xfd, 0xab, 0x71, 0xff, 0x9e, 0xcb, 0x39, 0x9b, 0xd9,
83697 - 0x64, 0xfd, 0x7b, 0xda, 0xc5, 0x86, 0x12, 0xda, 0x85, 0x97, 0x76, 0xb1,
83698 - 0x2b, 0x15, 0x32, 0x0f, 0xd3, 0x2e, 0x6a, 0x89, 0x21, 0x1d, 0xbd, 0x92,
83699 - 0xef, 0x38, 0xef, 0xed, 0x55, 0x78, 0x10, 0xc0, 0x9b, 0xb4, 0x8f, 0x8d,
83700 - 0xbd, 0x76, 0x97, 0x9b, 0xb1, 0xa7, 0xa7, 0xb9, 0x1a, 0xaf, 0x65, 0x6e,
83701 - 0xc5, 0xa3, 0xfd, 0xd5, 0x78, 0x85, 0xb6, 0xf3, 0x76, 0x02, 0xf3, 0x2b,
83702 - 0xa0, 0xce, 0xac, 0x60, 0xac, 0xbe, 0x4d, 0x09, 0xb5, 0x2e, 0x42, 0xfd,
83703 - 0xf8, 0xcb, 0x4a, 0xb0, 0x93, 0x9c, 0xe5, 0xc4, 0x05, 0x62, 0xff, 0xeb,
83704 - 0x19, 0x39, 0x77, 0xe7, 0xc3, 0x38, 0xed, 0x6a, 0x9c, 0xf5, 0xbe, 0xd1,
83705 - 0x5f, 0xc7, 0x79, 0xf3, 0xa0, 0xd0, 0xf0, 0xe3, 0x14, 0xb1, 0xb4, 0x63,
83706 - 0x37, 0xc6, 0x03, 0x86, 0x71, 0xa2, 0x55, 0xa9, 0xc2, 0x9b, 0xc3, 0xb7,
83707 - 0x62, 0x63, 0x7f, 0x50, 0x8f, 0xd1, 0x37, 0x5f, 0xe3, 0xb3, 0xf5, 0xbb,
83708 - 0x67, 0xe1, 0x38, 0x6d, 0x6f, 0x9c, 0xb6, 0xb7, 0xb6, 0x5f, 0xc5, 0x8b,
83709 - 0xc3, 0xb7, 0xb0, 0x5f, 0x05, 0xb3, 0x6a, 0x15, 0x27, 0xff, 0xda, 0x91,
83710 - 0x72, 0xfe, 0x77, 0x81, 0xf3, 0x8e, 0xde, 0x9c, 0x51, 0x13, 0xb3, 0xf7,
83711 - 0xcb, 0xf8, 0xc8, 0xc3, 0x9c, 0xb5, 0xe9, 0x46, 0xdc, 0xbc, 0xa7, 0x12,
83712 - 0xe7, 0xf6, 0x1a, 0x56, 0xb9, 0xcb, 0x5e, 0x70, 0x2a, 0x1c, 0xe2, 0x3c,
83713 - 0x34, 0xa2, 0xe1, 0x50, 0x23, 0x42, 0x03, 0xb9, 0x18, 0xa1, 0x19, 0x0b,
83714 - 0xf0, 0x3d, 0xce, 0xfb, 0x5a, 0xe6, 0x80, 0x35, 0x43, 0x82, 0xbd, 0x36,
83715 - 0x73, 0xc5, 0x66, 0x4c, 0x8c, 0x8d, 0x73, 0x6c, 0x11, 0x9c, 0x25, 0xbf,
83716 - 0x7d, 0x9f, 0x31, 0xe3, 0x43, 0xe6, 0x80, 0x1f, 0x3a, 0x31, 0x43, 0xde,
83717 - 0xa5, 0xbd, 0x32, 0x6e, 0xec, 0xe2, 0x9c, 0x6e, 0xec, 0x37, 0xea, 0xfa,
83718 - 0xf8, 0x7b, 0xbd, 0x33, 0xc7, 0x31, 0xe2, 0xb9, 0x60, 0x85, 0xe0, 0x7f,
83719 - 0x0b, 0x73, 0xde, 0x56, 0x9c, 0xed, 0x0b, 0x99, 0x0b, 0x95, 0x56, 0xbc,
83720 - 0x47, 0x99, 0xfb, 0x28, 0x5f, 0x92, 0xbc, 0x6c, 0x66, 0xd2, 0x18, 0xff,
83721 - 0xd0, 0x25, 0x18, 0xd3, 0x8a, 0xf2, 0xec, 0xad, 0x38, 0xd5, 0xbf, 0x1c,
83722 - 0xa5, 0x43, 0xc2, 0x35, 0xa5, 0x4d, 0x37, 0xb6, 0xee, 0xbe, 0x13, 0xeb,
83723 - 0x0f, 0xe6, 0x72, 0xbe, 0xf5, 0x89, 0x4d, 0xcc, 0x75, 0x85, 0xbf, 0xd7,
83724 - 0xe1, 0x50, 0x2a, 0x26, 0x47, 0x42, 0x77, 0x30, 0x9f, 0x8b, 0xac, 0x20,
83725 - 0x7e, 0x2e, 0x0d, 0x13, 0x63, 0x2b, 0x82, 0x81, 0x97, 0x61, 0xe9, 0xbc,
83726 - 0x17, 0x58, 0x07, 0xd1, 0x89, 0x85, 0x65, 0x8c, 0x3b, 0xb7, 0xf5, 0xbb,
83727 - 0x29, 0xbb, 0x3c, 0xaf, 0xc3, 0x8f, 0x52, 0x56, 0x5c, 0x9e, 0x6f, 0x84,
83728 - 0xf8, 0x8a, 0xe8, 0xc9, 0x05, 0xb3, 0xa9, 0x26, 0xd6, 0x41, 0x8c, 0x2e,
83729 - 0x0d, 0x07, 0xcd, 0x6f, 0xa0, 0x99, 0x73, 0x2f, 0x32, 0x47, 0xb0, 0xfe,
83730 - 0x10, 0x9c, 0x7d, 0x7f, 0x79, 0x47, 0xe4, 0x3f, 0xf4, 0xed, 0x76, 0xec,
83731 - 0x69, 0x7d, 0xe3, 0x65, 0x1b, 0x3c, 0x90, 0xaa, 0xef, 0x74, 0xa1, 0xc6,
83732 - 0x2a, 0x87, 0x91, 0xee, 0x23, 0x2f, 0x8d, 0x23, 0xd8, 0x13, 0x87, 0xc4,
83733 - 0x8c, 0x7a, 0x4b, 0x43, 0x35, 0xdb, 0x8e, 0xe0, 0xad, 0x84, 0x4b, 0xb0,
83734 - 0x09, 0xf2, 0x4f, 0x8a, 0x22, 0xc4, 0xe1, 0x37, 0x12, 0xc5, 0xd0, 0x87,
83735 - 0x12, 0xce, 0xff, 0x11, 0xba, 0x39, 0x6b, 0x91, 0xaf, 0x2d, 0xc0, 0xab,
83736 - 0xfd, 0x3e, 0xcc, 0x27, 0x4f, 0xa9, 0x4b, 0x3e, 0x65, 0x97, 0x12, 0x87,
83737 - 0xeb, 0x87, 0x42, 0x9a, 0x47, 0xb1, 0xed, 0x03, 0x73, 0x7f, 0x6d, 0x4f,
83738 - 0x8b, 0x4a, 0x59, 0x23, 0xb2, 0x48, 0xfe, 0x9f, 0xd4, 0x3c, 0xa3, 0xf5,
83739 - 0x2c, 0x7c, 0xb8, 0x81, 0x58, 0x7a, 0xac, 0xb7, 0x12, 0x6f, 0xed, 0xee,
83740 - 0x91, 0x35, 0x4b, 0x18, 0xfc, 0xfd, 0x5a, 0x6f, 0x00, 0x3a, 0xb1, 0x4c,
83741 - 0xe7, 0x75, 0x03, 0x31, 0x5a, 0x27, 0x3e, 0xbf, 0xdd, 0x6b, 0x2f, 0xf0,
83742 - 0x35, 0x59, 0x6c, 0xbd, 0x0e, 0x0b, 0x88, 0xd1, 0x6f, 0xf4, 0x06, 0x4f,
83743 - 0x2c, 0x51, 0x15, 0x94, 0x34, 0x99, 0xec, 0xdb, 0x87, 0x17, 0x69, 0xdf,
83744 - 0x4f, 0xa4, 0x8e, 0x7e, 0x6d, 0x06, 0xac, 0xfa, 0x12, 0x04, 0x37, 0x78,
83745 - 0x14, 0x59, 0xe3, 0x90, 0xd8, 0x56, 0x8d, 0x1b, 0xc9, 0x4d, 0x74, 0xe2,
83746 - 0x77, 0x4d, 0x56, 0xe2, 0x1c, 0xb0, 0x66, 0x68, 0x35, 0x3e, 0x1c, 0x14,
83747 - 0x1f, 0xc5, 0x42, 0xb1, 0xff, 0x05, 0xe1, 0x90, 0x79, 0x86, 0xb8, 0x5c,
83748 - 0x3b, 0x96, 0x20, 0xfe, 0xca, 0xb9, 0x3c, 0x8c, 0xab, 0xc4, 0x81, 0xca,
83749 - 0x94, 0x60, 0x57, 0x00, 0x8d, 0xcc, 0xf7, 0xca, 0x53, 0xe2, 0x93, 0x96,
83750 - 0x9c, 0x1b, 0xc1, 0xcd, 0x63, 0x3e, 0xe8, 0x63, 0x1a, 0x3f, 0x7e, 0xe8,
83751 - 0x23, 0x55, 0xfc, 0x50, 0xd6, 0x91, 0x59, 0xfc, 0x50, 0x56, 0xc6, 0x31,
83752 - 0x73, 0x44, 0xc1, 0x4d, 0x8e, 0x6d, 0x89, 0x0f, 0x7a, 0xf1, 0xec, 0x28,
83753 - 0xb0, 0xa1, 0xdf, 0xc4, 0xe1, 0xfd, 0x39, 0x9c, 0xdb, 0xcc, 0x3e, 0x42,
83754 - 0x03, 0x61, 0xac, 0x4f, 0x8b, 0x7d, 0x36, 0xe2, 0xb7, 0x7b, 0x8d, 0xb6,
83755 - 0x35, 0x6a, 0x28, 0xb2, 0x9c, 0x18, 0xf6, 0xfe, 0x48, 0x23, 0x3e, 0x7c,
83756 - 0x62, 0x01, 0x8c, 0x70, 0x23, 0xce, 0x1c, 0xd8, 0x84, 0xf2, 0x27, 0x54,
83757 - 0xe2, 0x8f, 0x8a, 0xf1, 0xe9, 0x82, 0xed, 0x82, 0xa3, 0x5e, 0xab, 0x8c,
83758 - 0xb8, 0xb5, 0x8d, 0xb8, 0xf5, 0xb3, 0xb9, 0xe3, 0x98, 0x9f, 0x94, 0x73,
83759 - 0xad, 0xcc, 0xaf, 0xd4, 0x08, 0x9e, 0x24, 0x6e, 0xed, 0xea, 0x93, 0xf9,
83760 - 0xe2, 0xdc, 0x12, 0xb3, 0xb6, 0xa6, 0x73, 0x9c, 0xe8, 0x70, 0xbf, 0xa1,
83761 - 0xb9, 0x68, 0xcb, 0x43, 0x93, 0x78, 0xf5, 0x5b, 0xc6, 0xff, 0x47, 0xe6,
83762 - 0x45, 0x71, 0x36, 0x2d, 0x7e, 0x25, 0x71, 0x45, 0xc7, 0x87, 0xb4, 0xf1,
83763 - 0xa5, 0xd4, 0xf5, 0x19, 0xe6, 0x16, 0x2d, 0x8c, 0x73, 0x1f, 0xd3, 0x9e,
83764 - 0x97, 0x93, 0x3f, 0xbe, 0x97, 0x12, 0x1b, 0x59, 0x8e, 0x25, 0x59, 0xb1,
83765 - 0x05, 0x67, 0x9d, 0x95, 0xdf, 0x31, 0x9c, 0x4e, 0xfc, 0xb1, 0xb8, 0xb0,
83766 - 0x12, 0xaf, 0x0e, 0xca, 0x79, 0x17, 0x03, 0xde, 0xde, 0xa0, 0x56, 0xa2,
83767 - 0xc8, 0x9e, 0x6e, 0x9e, 0xfb, 0x4e, 0x38, 0x39, 0x76, 0x69, 0x34, 0xbf,
83768 - 0xbf, 0x98, 0xdf, 0x77, 0xb0, 0xf0, 0xfd, 0xb9, 0x01, 0xf2, 0x4f, 0x28,
83769 - 0x87, 0xe7, 0x16, 0xe0, 0xf6, 0x3d, 0x6d, 0x18, 0xd9, 0xfd, 0x31, 0x8a,
83770 - 0xfa, 0xd5, 0x7b, 0x7d, 0xa8, 0xa9, 0x7b, 0x48, 0xe9, 0xc2, 0xa2, 0xb0,
83771 - 0xbc, 0xe7, 0x23, 0x6b, 0xe6, 0x7d, 0xd8, 0x7c, 0x80, 0x79, 0xcc, 0xd8,
83772 - 0x75, 0x38, 0xaa, 0x31, 0x1e, 0x9a, 0x1f, 0xa3, 0xa0, 0xdf, 0xe3, 0x9c,
83773 - 0x05, 0x3c, 0x6a, 0x36, 0x61, 0xe5, 0xe4, 0x59, 0x40, 0x54, 0x5d, 0xbd,
83774 - 0x97, 0x00, 0x5f, 0xe9, 0xe4, 0xff, 0x1f, 0xc8, 0xbd, 0xdb, 0x63, 0xa0,
83775 - 0x77, 0xf4, 0x7f, 0x95, 0xe7, 0xce, 0x06, 0xfd, 0x6b, 0xca, 0x76, 0xa2,
83776 - 0x7d, 0xcf, 0xe3, 0x58, 0xb1, 0xe7, 0x3b, 0xb8, 0x73, 0xa0, 0xb6, 0x33,
83777 - 0xc2, 0x5c, 0xe7, 0x83, 0xf0, 0x38, 0x8e, 0x85, 0x8b, 0x60, 0xf9, 0xc9,
83778 - 0xb1, 0x6e, 0xfc, 0x8a, 0xbc, 0x4e, 0xca, 0xbf, 0xd3, 0xb6, 0x7e, 0xaf,
83779 - 0xb4, 0xf7, 0xf6, 0xa4, 0x7f, 0xfd, 0x7c, 0x9a, 0x9c, 0xa7, 0x79, 0x21,
83780 - 0xf5, 0x2b, 0x5b, 0x77, 0x9e, 0xe7, 0xef, 0xbf, 0x65, 0xc7, 0xfc, 0x72,
83781 - 0x7f, 0xd6, 0x64, 0xbd, 0xef, 0xe0, 0x01, 0xe6, 0xbf, 0xa7, 0x9b, 0xbe,
83782 - 0x83, 0x85, 0x43, 0x97, 0xea, 0xa0, 0x68, 0xf7, 0x3a, 0x07, 0xbb, 0xe9,
83783 - 0x61, 0xe4, 0x48, 0xb2, 0x57, 0x25, 0xfb, 0x27, 0x7f, 0x89, 0xcd, 0x7b,
83784 - 0x65, 0x6d, 0xd3, 0xb6, 0xd7, 0x1b, 0xb2, 0xc7, 0x97, 0x3f, 0x37, 0x27,
83785 - 0xed, 0x58, 0x8a, 0x95, 0x91, 0xba, 0x5b, 0x94, 0xbe, 0xcc, 0xd4, 0x31,
83786 - 0x4d, 0x93, 0xff, 0x97, 0xa7, 0x95, 0x44, 0xa7, 0x8e, 0xad, 0x47, 0xd9,
83787 - 0x9e, 0x39, 0xa2, 0xec, 0xca, 0x5c, 0xad, 0x8f, 0xe7, 0xec, 0x58, 0x9b,
83788 - 0xb4, 0x21, 0x32, 0xc1, 0x8f, 0x62, 0x91, 0x2b, 0xff, 0xec, 0x99, 0x49,
83789 - 0xb9, 0x0b, 0xa1, 0x57, 0xe6, 0xe4, 0xbe, 0x9f, 0x72, 0x9b, 0x4d, 0x31,
83790 - 0xa8, 0xf3, 0xa6, 0xca, 0x9e, 0x1f, 0xe7, 0x7f, 0xbb, 0xd4, 0x56, 0xae,
83791 - 0xdc, 0xcd, 0x7e, 0xb1, 0x21, 0x75, 0xde, 0xd4, 0x35, 0xfb, 0x02, 0xe2,
83792 - 0x47, 0x48, 0xdb, 0x8a, 0x5c, 0xbe, 0xb7, 0xe6, 0xca, 0x7c, 0x4f, 0xb0,
83793 - 0x0b, 0x23, 0x09, 0x0d, 0xef, 0x99, 0x92, 0xdf, 0xc9, 0xad, 0x28, 0xbe,
83794 - 0xc7, 0xfc, 0xf1, 0x99, 0x44, 0xb0, 0x75, 0x9d, 0x52, 0x1f, 0x9b, 0xc3,
83795 - 0x38, 0x87, 0x0a, 0x59, 0x4f, 0x8f, 0x38, 0xff, 0xaf, 0x2a, 0x13, 0x8a,
83796 - 0x20, 0x43, 0x7f, 0x78, 0x23, 0x11, 0xec, 0x38, 0xa3, 0xe4, 0xfe, 0x0f,
83797 - 0xd6, 0xeb, 0xce, 0xfb, 0x1c, 0x79, 0xbb, 0x13, 0xce, 0x39, 0x75, 0x3d,
83798 - 0x57, 0x6c, 0x30, 0xd8, 0x97, 0x46, 0xa5, 0xac, 0x9b, 0x58, 0x16, 0xf3,
83799 - 0xa1, 0xee, 0x94, 0x15, 0x50, 0xf1, 0x15, 0xc4, 0xfd, 0xb2, 0x47, 0x72,
83800 - 0xcb, 0xe4, 0xff, 0xa9, 0x11, 0x7e, 0xf4, 0x2f, 0xaf, 0x4f, 0xc9, 0xff,
83801 - 0x06, 0xca, 0xdb, 0x8b, 0x35, 0x76, 0x3d, 0xd2, 0x9a, 0xac, 0x7d, 0xc0,
83802 - 0x9a, 0x46, 0x5d, 0xfb, 0x8d, 0x4d, 0x1c, 0xb7, 0x07, 0xd3, 0x99, 0xdb,
83803 - 0x85, 0x6b, 0xeb, 0xdb, 0x1a, 0xd5, 0x6b, 0x10, 0xab, 0x08, 0x6a, 0x31,
83804 - 0x72, 0xcd, 0x1e, 0xe7, 0xff, 0xed, 0xc8, 0xb9, 0x14, 0xab, 0xd5, 0x4b,
83805 - 0x4c, 0x6f, 0x52, 0x14, 0x14, 0x84, 0xe0, 0x7e, 0x28, 0xe3, 0x86, 0x56,
83806 - 0xfb, 0x5b, 0xfb, 0x17, 0x7e, 0x03, 0xdb, 0xc6, 0x6e, 0xb9, 0xf4, 0xff,
83807 - 0x87, 0xfe, 0x63, 0xf6, 0xea, 0xec, 0x37, 0xdf, 0xe6, 0xc7, 0x76, 0x6c,
83808 - 0xba, 0xf4, 0x2d, 0xed, 0xfe, 0x31, 0x59, 0xf3, 0xef, 0x7a, 0xd4, 0xe8,
83809 - 0x2e, 0x94, 0x63, 0xab, 0xb9, 0xde, 0x2f, 0x67, 0xe5, 0xd6, 0x43, 0xf6,
83810 - 0xff, 0x65, 0x0e, 0xe4, 0x1d, 0xc3, 0x08, 0xf3, 0x6e, 0xd1, 0x4b, 0x14,
83811 - 0x0f, 0x66, 0xe4, 0x9d, 0xa0, 0x59, 0x90, 0xff, 0xfb, 0xf5, 0x60, 0x26,
83812 - 0xa7, 0xbf, 0x47, 0x33, 0x3e, 0xe6, 0x00, 0x3e, 0xda, 0x60, 0x07, 0xf9,
83813 - 0x0b, 0xf9, 0xd3, 0x25, 0x5d, 0xde, 0xeb, 0x97, 0x75, 0x85, 0xef, 0xd3,
83814 - 0xa7, 0xdd, 0xb5, 0x72, 0x6d, 0xc9, 0xb9, 0x51, 0x25, 0x77, 0x7d, 0xde,
83815 - 0x79, 0x37, 0x52, 0x8d, 0xae, 0xc3, 0xc2, 0xc4, 0x34, 0x39, 0x3f, 0x29,
83816 - 0x6b, 0x36, 0x96, 0x3f, 0x2a, 0xef, 0x61, 0xf8, 0x88, 0xb1, 0x5f, 0xf5,
83817 - 0x4f, 0xbe, 0x73, 0xd5, 0xba, 0x82, 0x38, 0x36, 0x27, 0x6c, 0xc4, 0x9a,
83818 - 0x94, 0xa0, 0xbe, 0x52, 0x69, 0x63, 0xbd, 0x3a, 0xf4, 0x64, 0xa5, 0x0d,
83819 - 0xc5, 0xf9, 0xdf, 0x92, 0x1e, 0xb6, 0x71, 0x30, 0x51, 0xaf, 0x7b, 0xd4,
83820 - 0x4f, 0x6d, 0xcb, 0x39, 0x03, 0x29, 0xfb, 0xf6, 0x71, 0xbc, 0x94, 0x98,
83821 - 0x4e, 0x94, 0xba, 0xba, 0xdd, 0x4b, 0xeb, 0xe7, 0x7f, 0xa3, 0x21, 0xc6,
83822 - 0xb6, 0x82, 0x9d, 0x61, 0x57, 0x70, 0xc3, 0x05, 0xe2, 0x4a, 0x36, 0x6c,
83823 - 0xc4, 0x7f, 0xc0, 0x3e, 0xfe, 0x56, 0xa9, 0x43, 0x62, 0x4a, 0xfb, 0xb9,
83824 - 0xb6, 0xea, 0xdb, 0x0b, 0xd4, 0xf3, 0xce, 0xbb, 0xf8, 0xd2, 0xbe, 0x16,
83825 - 0x5d, 0x0d, 0x2d, 0x69, 0xd9, 0x7e, 0xb6, 0x39, 0x33, 0x1a, 0xdc, 0x57,
83826 - 0x41, 0x30, 0xfa, 0xb6, 0xda, 0x85, 0x35, 0x72, 0x3c, 0x24, 0x1a, 0xd4,
83827 - 0x1f, 0xa0, 0x7d, 0x34, 0x3a, 0x6d, 0xc4, 0xea, 0x0a, 0x20, 0x9c, 0xf2,
83828 - 0x4b, 0xed, 0x84, 0x39, 0x81, 0x70, 0x31, 0x96, 0x73, 0xce, 0x03, 0xc8,
83829 - 0xb9, 0x49, 0xe6, 0x0d, 0x09, 0xf9, 0xbf, 0x7d, 0x4e, 0x37, 0x93, 0x7b,
83830 - 0x5a, 0xcc, 0xd7, 0x19, 0xaf, 0xd7, 0xcb, 0xff, 0x48, 0x2a, 0xf6, 0xe1,
83831 - 0xc1, 0x84, 0xac, 0x81, 0xfc, 0x1f, 0x05, 0x3f, 0x96, 0xb4, 0x1c, 0x54,
83832 - 0x00, 0x00, 0x00 };
83833 + 0xad, 0xbc, 0x0b, 0x74, 0x1c, 0xd5, 0x95, 0x2e, 0xfc, 0x55, 0x75, 0xb7,
83834 + 0xd4, 0x92, 0xda, 0x52, 0x4b, 0x6e, 0xcb, 0x6d, 0xd0, 0xe0, 0x6a, 0xab,
83835 + 0xda, 0x6a, 0x2c, 0x01, 0xd5, 0xb2, 0x0c, 0x4d, 0xa6, 0xc0, 0x1d, 0x5b,
83836 + 0x80, 0x0c, 0x26, 0x11, 0xc6, 0xb9, 0x23, 0xe6, 0x7a, 0xfe, 0xf4, 0x18,
83837 + 0x03, 0x86, 0x90, 0x5c, 0x33, 0x93, 0x9b, 0x71, 0xb8, 0x9e, 0xeb, 0x8a,
83838 + 0xe4, 0x87, 0xc0, 0xa5, 0xee, 0x96, 0x90, 0x1f, 0xac, 0x35, 0xeb, 0xa7,
83839 + 0x2d, 0xcb, 0x92, 0x21, 0xad, 0x16, 0x49, 0x98, 0x19, 0xe7, 0xe6, 0x81,
83840 + 0xc6, 0xd8, 0x60, 0x93, 0xf0, 0xc8, 0x6b, 0xfd, 0x4c, 0xfe, 0xb9, 0x7f,
83841 + 0x3c, 0xb6, 0x79, 0x83, 0xe3, 0x3c, 0x47, 0x9e, 0xc1, 0xa9, 0xff, 0xdb,
83842 + 0xd5, 0xdd, 0xb6, 0xec, 0x40, 0x1e, 0xeb, 0x8e, 0xd6, 0xaa, 0xa5, 0xee,
83843 + 0xaa, 0x73, 0xf6, 0x39, 0x67, 0x9f, 0xbd, 0xbf, 0xfd, 0xed, 0x73, 0x4e,
83844 + 0xb5, 0x06, 0x54, 0xa3, 0xf4, 0x37, 0x8b, 0xd7, 0xd5, 0x1d, 0x1b, 0xee,
83845 + 0x5e, 0xdc, 0x7e, 0x75, 0x87, 0x7c, 0xf7, 0xce, 0xf5, 0x7a, 0xf1, 0x61,
83846 + 0x7f, 0x26, 0x12, 0x97, 0xde, 0xd2, 0x3e, 0xb4, 0xe0, 0x47, 0xfc, 0x25,
83847 + 0x10, 0x91, 0x7f, 0xad, 0xa5, 0xaf, 0x1e, 0x20, 0x58, 0x6e, 0x5f, 0x2e,
83848 + 0xf8, 0x55, 0xb3, 0xf3, 0xbf, 0x2e, 0xd3, 0xe1, 0xf7, 0x98, 0x9f, 0xff,
83849 + 0x8b, 0xbb, 0x75, 0x20, 0x99, 0x6f, 0xd5, 0x96, 0xe3, 0x9c, 0x63, 0x85,
83850 + 0xbc, 0x90, 0xfb, 0x7f, 0x62, 0x7e, 0xf0, 0xc4, 0xb7, 0xae, 0x8b, 0x9c,
83851 + 0xc9, 0x79, 0xe0, 0x0f, 0x9a, 0x16, 0x82, 0x0b, 0xe1, 0x6f, 0x62, 0x9d,
83852 + 0xbf, 0x6b, 0xd9, 0xa6, 0xa2, 0xb6, 0x2c, 0x2b, 0x12, 0xce, 0x21, 0x12,
83853 + 0xb4, 0x10, 0x89, 0x59, 0x40, 0xca, 0x6b, 0x22, 0x55, 0x69, 0xfa, 0x51,
83854 + 0xa1, 0x57, 0x20, 0x15, 0xdc, 0xa8, 0x6d, 0xe1, 0x18, 0x97, 0xd9, 0x7e,
83855 + 0xed, 0x44, 0x1e, 0xb8, 0xdb, 0xf6, 0xe3, 0xb8, 0x27, 0xa0, 0x9d, 0xcc,
83856 + 0xef, 0xab, 0x2b, 0xea, 0x23, 0x09, 0x8f, 0x8e, 0x94, 0x6a, 0xca, 0x7d,
83857 + 0x68, 0xcb, 0xf3, 0x48, 0xf9, 0xcc, 0xcf, 0x6b, 0xe3, 0x36, 0xd0, 0x9b,
83858 + 0x69, 0x36, 0x4e, 0xa0, 0x35, 0x7c, 0x18, 0x95, 0x48, 0x85, 0x22, 0x31,
83859 + 0xe0, 0x83, 0x73, 0x8f, 0x66, 0x14, 0xf8, 0xf4, 0xd9, 0xe8, 0xdc, 0x0b,
83860 + 0x3c, 0x92, 0x89, 0x24, 0x75, 0x05, 0xe8, 0x9f, 0x94, 0xba, 0x91, 0x60,
83861 + 0x8e, 0xcf, 0xb7, 0x64, 0x80, 0xad, 0x99, 0xd9, 0xd8, 0x96, 0x75, 0xf0,
83862 + 0x9c, 0xd1, 0x1c, 0xdc, 0xc7, 0x16, 0x7a, 0xdd, 0xe7, 0xb3, 0x61, 0xe5,
83863 + 0xe4, 0xf9, 0x5b, 0xce, 0xb7, 0x5a, 0x82, 0x78, 0x7a, 0x32, 0x84, 0x67,
83864 + 0x27, 0xeb, 0xf1, 0x48, 0xb6, 0x1e, 0xdb, 0xb3, 0x31, 0xa8, 0xba, 0x83,
83865 + 0x58, 0x3c, 0x86, 0x8a, 0xeb, 0x1d, 0x9c, 0x34, 0xda, 0xb0, 0x95, 0x82,
83866 + 0x5f, 0x6d, 0x6b, 0xc4, 0xda, 0x60, 0x13, 0xb6, 0xe8, 0xd7, 0xa1, 0x38,
83867 + 0xd6, 0x0f, 0xce, 0x65, 0x32, 0xd2, 0x3f, 0xaf, 0xaa, 0xea, 0x37, 0xe2,
83868 + 0xf4, 0x4e, 0x13, 0xef, 0xef, 0xc4, 0x9a, 0x5a, 0x38, 0x4e, 0x3e, 0x1e,
83869 + 0xed, 0x7e, 0x50, 0x09, 0x6a, 0x4f, 0xe5, 0xd9, 0xa1, 0x55, 0x5e, 0xca,
83870 + 0x83, 0x36, 0x92, 0x9f, 0x39, 0x15, 0x6c, 0x2f, 0xc3, 0x76, 0x33, 0xd2,
83871 + 0x97, 0x30, 0xbe, 0xd5, 0xf2, 0xdf, 0x68, 0x0f, 0xc5, 0x31, 0x6d, 0xcd,
83872 + 0xbc, 0xc6, 0x3e, 0x69, 0xec, 0x4f, 0x13, 0xbe, 0x36, 0x19, 0xc6, 0x57,
83873 + 0xd9, 0xb7, 0xaf, 0x4c, 0x4a, 0x1f, 0x23, 0x7b, 0x2c, 0xd4, 0x63, 0x34,
83874 + 0xdb, 0x84, 0xa7, 0xf5, 0x36, 0x7c, 0x85, 0x7d, 0xec, 0x33, 0x62, 0x58,
83875 + 0x9b, 0xb8, 0x8b, 0xfd, 0x51, 0xb0, 0xaa, 0xed, 0x2f, 0x4b, 0xfd, 0x8a,
83876 + 0x68, 0x50, 0x55, 0x24, 0x1b, 0x22, 0x31, 0x4d, 0x15, 0x99, 0x17, 0xfa,
83877 + 0x3b, 0x90, 0x81, 0xe5, 0x37, 0xa5, 0xcf, 0x37, 0x22, 0xcf, 0xfe, 0x7e,
83878 + 0x79, 0x67, 0xd4, 0x58, 0xaf, 0x62, 0x65, 0x80, 0x7d, 0x7e, 0x20, 0x1e,
83879 + 0x4d, 0x2c, 0x62, 0x9f, 0xc7, 0xf3, 0x2a, 0xc7, 0x13, 0xd2, 0xc6, 0xd8,
83880 + 0xf7, 0xe4, 0x2a, 0x95, 0x7d, 0x67, 0x5f, 0x32, 0xec, 0x4b, 0x86, 0x7d,
83881 + 0xc9, 0xb0, 0x2f, 0x6e, 0xbf, 0x63, 0xec, 0x73, 0x71, 0x8e, 0x46, 0xf2,
83882 + 0xc7, 0xd9, 0xdf, 0x99, 0xfd, 0x6c, 0x62, 0xdf, 0x91, 0xaa, 0xe7, 0xbc,
83883 + 0x35, 0xa7, 0x65, 0xde, 0x1c, 0xe7, 0x55, 0xc3, 0x71, 0x7e, 0x6e, 0x04,
83884 + 0xa8, 0xbf, 0x0c, 0xed, 0xa0, 0xdc, 0x9f, 0xf9, 0x56, 0x85, 0x89, 0x4e,
83885 + 0x9a, 0xa0, 0x73, 0xa4, 0x23, 0x9a, 0x68, 0x50, 0x54, 0x78, 0xf5, 0xa0,
83886 + 0xd6, 0x52, 0x88, 0x18, 0xd4, 0x8f, 0x16, 0x2d, 0x40, 0xd3, 0x0b, 0x94,
83887 + 0x75, 0x51, 0xbb, 0x91, 0xe0, 0x14, 0xa4, 0x5d, 0x8d, 0xed, 0x1f, 0x2f,
83888 + 0xcd, 0x9d, 0xc8, 0x0f, 0xb3, 0x4d, 0x69, 0x5f, 0x64, 0x3b, 0xce, 0xcf,
83889 + 0x0c, 0xe8, 0x41, 0x44, 0xad, 0x41, 0xda, 0x9f, 0xc7, 0x0c, 0x6a, 0x1b,
83890 + 0xf2, 0x7c, 0x7e, 0x5e, 0x46, 0x71, 0x3e, 0xd6, 0xe6, 0xb5, 0xd2, 0x18,
83891 + 0x22, 0xec, 0x82, 0xd8, 0x41, 0x38, 0x15, 0x30, 0x83, 0xd2, 0xf7, 0xee,
83892 + 0x3d, 0x03, 0x9b, 0x9d, 0x79, 0xba, 0xe8, 0x4a, 0xdf, 0x38, 0xcf, 0x13,
83893 + 0x48, 0x9c, 0x5e, 0xf2, 0x90, 0x35, 0xab, 0x23, 0x8e, 0x6a, 0x1d, 0x81,
83894 + 0x2a, 0x1d, 0xdd, 0xe9, 0x89, 0x6a, 0xab, 0xc6, 0xfc, 0xe6, 0x9d, 0x03,
83895 + 0x13, 0x7e, 0x54, 0x4f, 0xe8, 0xa8, 0x9a, 0x78, 0xdc, 0x8b, 0x5a, 0x03,
83896 + 0x3b, 0x26, 0xff, 0xcc, 0x5b, 0x1c, 0xdb, 0xcd, 0xa5, 0x31, 0xba, 0xb6,
83897 + 0xef, 0x7f, 0xdd, 0x3e, 0xe3, 0x54, 0xe8, 0x55, 0x7f, 0xe6, 0x31, 0x75,
83898 + 0x6d, 0x0c, 0x38, 0xb3, 0xb6, 0x63, 0x39, 0x7a, 0x83, 0x0a, 0xe6, 0xeb,
83899 + 0x7f, 0x32, 0x0b, 0xb5, 0x26, 0xac, 0xc9, 0xc6, 0x54, 0x85, 0x19, 0x4a,
83900 + 0x71, 0x6e, 0xf0, 0x82, 0x9d, 0x83, 0x6f, 0xc0, 0x71, 0xa4, 0xec, 0x49,
83901 + 0xdc, 0x79, 0xa7, 0x6a, 0x1e, 0xba, 0xc6, 0x87, 0x4e, 0x96, 0xc7, 0xa6,
83902 + 0xa3, 0x1d, 0x3f, 0x57, 0xd4, 0x9d, 0xdd, 0xb0, 0xc6, 0x3d, 0x48, 0x06,
83903 + 0x53, 0xfc, 0x7f, 0xc5, 0x15, 0x2b, 0x13, 0xdd, 0xb0, 0xc7, 0xa7, 0x79,
83904 + 0xdf, 0xcb, 0x7b, 0x26, 0xd2, 0x99, 0x2b, 0xae, 0xb8, 0x3d, 0x91, 0xc2,
83905 + 0xc0, 0xb8, 0x7c, 0xf6, 0x62, 0xaa, 0x3e, 0x85, 0xed, 0xbb, 0x35, 0xd4,
83906 + 0xe9, 0xdd, 0xc8, 0x8c, 0xcb, 0x67, 0xc7, 0x39, 0x65, 0x7c, 0x09, 0x7b,
83907 + 0xda, 0xe8, 0xff, 0x73, 0xbb, 0xb1, 0x6d, 0xb7, 0x85, 0x4a, 0xdd, 0xa2,
83908 + 0xee, 0x15, 0xef, 0x3f, 0xb7, 0x29, 0xd0, 0xee, 0x84, 0xb7, 0x42, 0x17,
83909 + 0xbd, 0x25, 0xbc, 0xf7, 0xd8, 0x66, 0x70, 0xbe, 0xee, 0x38, 0x23, 0xc6,
83910 + 0x22, 0x7c, 0xba, 0x7b, 0x2d, 0xac, 0x7d, 0x01, 0x58, 0xab, 0xe5, 0x7f,
83911 + 0x37, 0x75, 0xb8, 0x16, 0xbd, 0xfb, 0xd6, 0xa2, 0xff, 0x31, 0x3a, 0x6e,
83912 + 0x7d, 0xd0, 0x9d, 0xa7, 0x6f, 0xb5, 0x48, 0x9f, 0xa4, 0x7f, 0x3d, 0xbc,
83913 + 0x44, 0xb7, 0x5f, 0xe0, 0x7f, 0x29, 0x33, 0xed, 0x60, 0xce, 0x85, 0x32,
83914 + 0xdb, 0x59, 0x66, 0xdb, 0x45, 0x65, 0x4c, 0x3c, 0x31, 0x29, 0xba, 0x10,
83915 + 0x95, 0xfd, 0x3e, 0x5d, 0x7c, 0xdb, 0xe9, 0x0d, 0x89, 0x2e, 0xac, 0x1e,
83916 + 0x1f, 0x22, 0xdd, 0xf7, 0x2a, 0x5e, 0xac, 0x18, 0x00, 0xeb, 0xd0, 0x09,
83917 + 0xaa, 0x23, 0xc9, 0x85, 0x8a, 0x89, 0xea, 0x01, 0x05, 0x2b, 0xe2, 0x55,
83918 + 0xd0, 0xea, 0x45, 0xde, 0x8f, 0x1c, 0x2b, 0x28, 0xfd, 0x3d, 0x8a, 0x1a,
83919 + 0xde, 0x5f, 0x17, 0xff, 0x01, 0xf1, 0x4c, 0xfa, 0x14, 0x67, 0xf9, 0x3b,
83920 + 0x78, 0xff, 0x95, 0x19, 0xdf, 0xa5, 0x9c, 0xe3, 0xf4, 0x19, 0x06, 0xfa,
83921 + 0x33, 0x6d, 0xd8, 0x9e, 0x49, 0x46, 0xa8, 0x25, 0xcb, 0x67, 0xf2, 0xbe,
83922 + 0x19, 0xed, 0xea, 0x85, 0xb4, 0x03, 0xa5, 0xda, 0x84, 0x37, 0xdf, 0x71,
83923 + 0xdc, 0xff, 0x92, 0xad, 0xf7, 0x3c, 0xa5, 0xf8, 0x68, 0xec, 0xd2, 0xce,
83924 + 0x71, 0xff, 0x2b, 0xb6, 0x82, 0x37, 0xf5, 0xe8, 0x86, 0x77, 0x94, 0xe3,
83925 + 0xfe, 0x97, 0xf3, 0x41, 0xcc, 0x1b, 0x88, 0xf4, 0x58, 0x4a, 0x02, 0x5f,
83926 + 0xcf, 0x87, 0x10, 0x1e, 0x30, 0x71, 0x30, 0x6f, 0xe0, 0xc9, 0x8b, 0x70,
83927 + 0xe0, 0x43, 0xff, 0x2c, 0x0f, 0xc7, 0xbe, 0xce, 0xd6, 0xd0, 0x6b, 0x9c,
83928 + 0x73, 0x92, 0x41, 0xa4, 0xea, 0xcc, 0xe3, 0xfe, 0xf7, 0x07, 0xa0, 0xd4,
83929 + 0x9a, 0x7a, 0xb8, 0xa0, 0xfc, 0xab, 0x93, 0x0a, 0x49, 0x31, 0xf6, 0xcf,
83930 + 0xc5, 0xb2, 0x24, 0xed, 0xce, 0x20, 0xce, 0x9d, 0x71, 0x6a, 0x68, 0xb3,
83931 + 0x15, 0xe6, 0x65, 0x18, 0x1f, 0xd6, 0xf1, 0xa4, 0xed, 0x38, 0xef, 0x19,
83932 + 0x53, 0x89, 0x00, 0xf4, 0xee, 0x77, 0x11, 0x49, 0x2e, 0xa2, 0x5e, 0x8e,
83933 + 0xe6, 0x75, 0x8c, 0xda, 0x26, 0x9e, 0xb3, 0x9b, 0x83, 0x7d, 0x58, 0x8c,
83934 + 0x64, 0xb8, 0x18, 0x43, 0x26, 0xd8, 0xef, 0x91, 0x68, 0x37, 0xea, 0xcc,
83935 + 0x04, 0x0e, 0xb1, 0xdf, 0xa7, 0x97, 0x88, 0x1c, 0x03, 0x2f, 0xff, 0x01,
83936 + 0x7d, 0x25, 0xbe, 0xe3, 0x71, 0xf6, 0x35, 0xb1, 0xf8, 0x9c, 0x83, 0xd9,
83937 + 0x7e, 0x9c, 0x30, 0xe6, 0xd2, 0x0e, 0x61, 0x55, 0x99, 0x7e, 0x6f, 0xbf,
83938 + 0x1d, 0xc4, 0x81, 0x7c, 0xc0, 0xdb, 0x67, 0x87, 0xb0, 0x8f, 0xfe, 0x36,
83939 + 0x8f, 0xa6, 0x1e, 0xa6, 0xdc, 0x79, 0xc4, 0xb5, 0xc2, 0x70, 0x13, 0x26,
83940 + 0x87, 0x23, 0xc6, 0x2b, 0x4a, 0x18, 0x63, 0xa3, 0x97, 0x61, 0x62, 0x58,
83941 + 0xc1, 0x78, 0x94, 0x7d, 0xe7, 0xe7, 0x2f, 0x0f, 0x5f, 0x81, 0xfc, 0xb0,
83942 + 0x07, 0x3b, 0x5c, 0xbd, 0xba, 0x38, 0x53, 0xfa, 0x7f, 0x19, 0x72, 0xa3,
83943 + 0xf0, 0x2e, 0x1a, 0x08, 0xe2, 0xa9, 0xbc, 0xd7, 0xab, 0x0f, 0x84, 0x30,
83944 + 0x9a, 0xff, 0x36, 0xe7, 0x4d, 0x64, 0x6b, 0x18, 0xb1, 0xc7, 0xdc, 0x39,
83945 + 0xac, 0x33, 0x29, 0xac, 0x18, 0x5f, 0x19, 0xcb, 0x34, 0xc6, 0x99, 0x04,
83946 + 0x71, 0x48, 0x7c, 0xdc, 0x4f, 0x0c, 0x12, 0x1f, 0x7f, 0x4d, 0x41, 0x6d,
83947 + 0x02, 0x7d, 0x93, 0xe5, 0xe7, 0x0a, 0xed, 0xdf, 0x8b, 0x75, 0x41, 0x03,
83948 + 0x76, 0x46, 0xec, 0xb4, 0x8c, 0xcb, 0xf2, 0x59, 0xe6, 0xbf, 0x1a, 0xd6,
83949 + 0xfe, 0x6a, 0xec, 0xa0, 0x8f, 0x3d, 0xba, 0x53, 0xee, 0x3b, 0xce, 0x7d,
83950 + 0xf1, 0x3a, 0xda, 0x18, 0x6e, 0xaa, 0x42, 0xd4, 0x78, 0xcb, 0xed, 0x9b,
83951 + 0x85, 0xb1, 0xbc, 0xc4, 0x50, 0x8d, 0xf1, 0xed, 0x28, 0xdb, 0xea, 0x60,
83952 + 0x3b, 0x06, 0xbe, 0x3d, 0xd9, 0x86, 0x7f, 0x9c, 0x8c, 0xe1, 0x1f, 0x26,
83953 + 0x75, 0xfc, 0xfd, 0xa4, 0x86, 0x67, 0x2e, 0xc2, 0xf5, 0x3b, 0xa9, 0x2b,
83954 + 0xc1, 0x30, 0x03, 0x5b, 0x32, 0x15, 0xd8, 0x36, 0x5c, 0x8d, 0xbe, 0xe1,
83955 + 0xe6, 0xd8, 0x73, 0xc4, 0xe3, 0x7f, 0x30, 0x6e, 0xc7, 0x54, 0x43, 0x87,
83956 + 0xeb, 0x33, 0x8f, 0xf0, 0xfe, 0xa3, 0xc3, 0xcd, 0x9c, 0x43, 0xc7, 0x51,
83957 + 0xe3, 0xad, 0x89, 0x43, 0xc4, 0xf7, 0xe3, 0xa1, 0x88, 0x36, 0xa5, 0x46,
83958 + 0xb4, 0x24, 0x7c, 0xb0, 0xdb, 0x54, 0x58, 0x73, 0x22, 0x39, 0x7a, 0x31,
83959 + 0x42, 0xfa, 0x7d, 0x1c, 0x5b, 0x44, 0xb3, 0x54, 0x83, 0xf6, 0xcb, 0x98,
83960 + 0xa1, 0x76, 0x10, 0x5f, 0xaa, 0xf1, 0xfe, 0x70, 0xa4, 0xdf, 0x52, 0xef,
83961 + 0x80, 0xd5, 0xe0, 0x38, 0x5f, 0x8d, 0x63, 0xc3, 0x5c, 0x13, 0xc9, 0x39,
83962 + 0x8c, 0x05, 0x57, 0x98, 0x49, 0x30, 0x8e, 0xe1, 0xf4, 0x80, 0x1e, 0xfe,
83963 + 0x7f, 0x94, 0x3b, 0xf1, 0xdf, 0xbb, 0x23, 0x9a, 0xa6, 0xb6, 0x5a, 0xfb,
83964 + 0x54, 0x92, 0x8d, 0x46, 0x68, 0x61, 0xf3, 0x56, 0x6c, 0x74, 0x79, 0x82,
83965 + 0x82, 0xa0, 0xde, 0x81, 0xbe, 0x0c, 0x2b, 0x85, 0x9a, 0x7b, 0x06, 0xd5,
83966 + 0xe6, 0x69, 0x43, 0x8d, 0x1c, 0xed, 0x56, 0x89, 0xb7, 0x8b, 0x4f, 0x3b,
83967 + 0x5a, 0xa3, 0xe3, 0xb4, 0x2f, 0x96, 0x36, 0x35, 0x34, 0x70, 0x9e, 0xeb,
83968 + 0x39, 0xcf, 0xed, 0x85, 0x6a, 0xbc, 0x33, 0x0c, 0x6b, 0xae, 0x19, 0xe9,
83969 + 0x7a, 0x40, 0xad, 0xc6, 0xdb, 0xa3, 0xd5, 0x38, 0x39, 0xec, 0xc5, 0x5b,
83970 + 0xc3, 0x8e, 0x73, 0x8f, 0x51, 0x87, 0x8a, 0x38, 0xe6, 0x54, 0x20, 0x7a,
83971 + 0x66, 0x04, 0x16, 0x7e, 0xc3, 0xb2, 0xbf, 0x1c, 0x0e, 0xe3, 0x57, 0xc3,
83972 + 0x1f, 0xc3, 0x33, 0x0d, 0xc9, 0x63, 0xb3, 0x19, 0x23, 0xa7, 0x69, 0x3f,
83973 + 0xa7, 0xed, 0x48, 0xcf, 0x3c, 0x4f, 0x64, 0x23, 0x79, 0xcb, 0xfa, 0x2f,
83974 + 0x2a, 0x91, 0xd4, 0x2b, 0x4a, 0x44, 0x1b, 0x50, 0x42, 0x78, 0x97, 0x76,
83975 + 0x7a, 0x2a, 0xdf, 0x9c, 0xf8, 0x01, 0xdb, 0xff, 0xb5, 0xf1, 0x0f, 0xce,
83976 + 0x54, 0xa3, 0xe8, 0x50, 0xf4, 0x45, 0x9d, 0xd3, 0x77, 0xff, 0x91, 0x31,
83977 + 0xea, 0x1f, 0x32, 0xd4, 0x39, 0xfb, 0xf3, 0xcc, 0x6f, 0xc5, 0x2f, 0x99,
83978 + 0xaf, 0x04, 0xe7, 0xf1, 0x72, 0xfc, 0x4f, 0x77, 0x6c, 0xc7, 0x9c, 0xbf,
83979 + 0x09, 0xc9, 0xf8, 0x3a, 0x1b, 0x8b, 0x18, 0x24, 0xe3, 0x3c, 0xea, 0xa4,
83980 + 0x82, 0x32, 0x46, 0x19, 0xab, 0xab, 0x4b, 0x6d, 0x83, 0xf2, 0x90, 0x8a,
83981 + 0x6a, 0xc7, 0x79, 0xcc, 0x28, 0x3d, 0x0f, 0x95, 0xc7, 0xfa, 0x31, 0xde,
83982 + 0x97, 0xf1, 0xbe, 0xe3, 0x11, 0xdd, 0x6b, 0xea, 0xd5, 0xfc, 0x1e, 0xb1,
83983 + 0x92, 0xb8, 0x33, 0xc0, 0xef, 0xb1, 0xe4, 0xf9, 0xef, 0xde, 0xba, 0x8b,
83984 + 0x9f, 0xd3, 0x4e, 0xdd, 0xf6, 0xee, 0xe4, 0x77, 0x19, 0xcb, 0xab, 0xb4,
83985 + 0x9b, 0x0f, 0xb3, 0x13, 0xb1, 0x91, 0x18, 0xed, 0xe9, 0x94, 0xc4, 0x15,
83986 + 0x2b, 0x64, 0xfa, 0x2d, 0xd5, 0x84, 0x46, 0x9c, 0xf0, 0x2b, 0xe6, 0x06,
83987 + 0x68, 0x79, 0x0b, 0x9f, 0xea, 0xf0, 0xe0, 0xaf, 0x3a, 0x14, 0xcc, 0xd6,
83988 + 0x37, 0x20, 0x7b, 0xad, 0xe5, 0xd4, 0xeb, 0x7b, 0x55, 0xf1, 0x81, 0x8a,
83989 + 0x34, 0x2c, 0xfa, 0x1d, 0x12, 0xe4, 0x4a, 0x75, 0x7f, 0xaa, 0xe0, 0x44,
83990 + 0x3c, 0x4a, 0x9b, 0xdb, 0x82, 0x6d, 0x9c, 0xf3, 0x59, 0x69, 0xf8, 0x03,
83991 + 0xa6, 0x09, 0x7b, 0x00, 0xfe, 0x2a, 0xfa, 0xfe, 0x95, 0x03, 0xcd, 0x1b,
83992 + 0xc6, 0x94, 0x48, 0x22, 0xad, 0x44, 0xba, 0xa9, 0x6f, 0xe3, 0xb4, 0x8b,
83993 + 0x1b, 0x11, 0xad, 0x42, 0x91, 0x76, 0x4c, 0xb4, 0xe4, 0xb7, 0x60, 0x60,
83994 + 0x52, 0x3e, 0x27, 0xa0, 0xe7, 0x7f, 0x5c, 0xea, 0x3b, 0xfc, 0x3e, 0xf6,
83995 + 0x61, 0xbf, 0xfd, 0xba, 0x93, 0x0b, 0x46, 0xb4, 0x9c, 0xfb, 0x7d, 0x3d,
83996 + 0xbf, 0xc3, 0x5f, 0x61, 0x3e, 0x88, 0xe7, 0xed, 0x37, 0xe7, 0x94, 0xcb,
83997 + 0x15, 0xfb, 0x7a, 0x69, 0x7f, 0xfe, 0xb7, 0x93, 0x0c, 0xb9, 0xfd, 0xf1,
83998 + 0xd7, 0xb0, 0x8d, 0xcf, 0x0c, 0xb0, 0x8d, 0x4c, 0xb9, 0x3f, 0x40, 0x20,
83999 + 0x2d, 0x71, 0x38, 0xa2, 0x2d, 0x50, 0x9a, 0x8d, 0x01, 0x25, 0x12, 0xbb,
84000 + 0x57, 0x69, 0x4d, 0x8c, 0x91, 0x5f, 0x6e, 0x47, 0xb1, 0x4f, 0xd1, 0x7c,
84001 + 0xb1, 0x3f, 0x0b, 0xf2, 0x50, 0x3c, 0x03, 0x08, 0xcc, 0xd7, 0x17, 0x62,
84002 + 0xb3, 0x3b, 0xa7, 0x50, 0xc2, 0x03, 0x1a, 0x6a, 0xc9, 0x5f, 0xc2, 0x13,
84003 + 0xc0, 0xe4, 0x10, 0xb9, 0x5c, 0xbc, 0x19, 0x9f, 0x63, 0x2c, 0x98, 0xc7,
84004 + 0x32, 0x5f, 0x0c, 0x9e, 0xc7, 0x2f, 0xa5, 0xdf, 0x26, 0xc0, 0xcc, 0x29,
84005 + 0xf2, 0xb2, 0xd4, 0x7f, 0x41, 0x52, 0xee, 0x3d, 0x6e, 0x43, 0xc9, 0xd8,
84006 + 0x91, 0x3d, 0x80, 0x3e, 0x15, 0xf7, 0x24, 0xef, 0x0f, 0x63, 0x33, 0x4e,
84007 + 0xc7, 0xa3, 0xa9, 0x82, 0x12, 0x35, 0x86, 0x14, 0xc3, 0xbf, 0x8d, 0xed,
84008 + 0xed, 0x60, 0x99, 0xed, 0xbc, 0x1e, 0x88, 0xea, 0x5d, 0x77, 0x28, 0xc9,
84009 + 0x2b, 0xab, 0x58, 0xe6, 0xa4, 0x11, 0x25, 0xcf, 0x8c, 0x4e, 0xaf, 0x82,
84010 + 0xe1, 0x7f, 0x22, 0x2f, 0xb2, 0x12, 0xca, 0x96, 0xc2, 0xe3, 0x6a, 0x11,
84011 + 0x8f, 0x7e, 0x5d, 0xd2, 0xd9, 0x49, 0xf9, 0xee, 0xb6, 0xed, 0x1d, 0x68,
84012 + 0xaa, 0xf9, 0xed, 0x7b, 0xda, 0x9c, 0x8b, 0xef, 0xb5, 0x06, 0x47, 0xe9,
84013 + 0x7f, 0x1e, 0xbd, 0x8a, 0x73, 0x27, 0xfc, 0x28, 0x19, 0xf3, 0x41, 0xee,
84014 + 0x79, 0x90, 0xf3, 0x26, 0xc3, 0x1e, 0x7c, 0xe0, 0x24, 0x57, 0xcb, 0xbd,
84015 + 0x6a, 0xa4, 0xba, 0x5b, 0xc3, 0x5e, 0xb4, 0x26, 0xb6, 0x12, 0x0b, 0x8e,
84016 + 0xaf, 0x5e, 0xc6, 0x67, 0x51, 0xe3, 0x39, 0x34, 0x6b, 0x5b, 0x21, 0x9f,
84017 + 0xcf, 0xd2, 0x66, 0x97, 0x49, 0x5d, 0x96, 0x29, 0x72, 0x1f, 0xc1, 0x9a,
84018 + 0x2d, 0x86, 0x83, 0xe7, 0x0d, 0x58, 0x95, 0xe6, 0x41, 0xe5, 0x84, 0xfd,
84019 + 0x1b, 0x27, 0xe9, 0xc5, 0x4a, 0xfa, 0xa5, 0x41, 0xda, 0xab, 0xf9, 0xcd,
84020 + 0xa8, 0x76, 0x94, 0x99, 0x82, 0xc7, 0xb4, 0x94, 0xe3, 0xf9, 0x2d, 0xca,
84021 + 0xeb, 0xf9, 0x7e, 0xe5, 0x54, 0x5e, 0xea, 0x1e, 0x54, 0x4e, 0xe6, 0x25,
84022 + 0x1e, 0x36, 0x69, 0x47, 0xc8, 0x6f, 0xc8, 0xa9, 0xd4, 0x3e, 0x03, 0xca,
84023 + 0x36, 0xa3, 0x96, 0x3c, 0x5f, 0x8f, 0x8d, 0xb0, 0xbf, 0xfb, 0x3b, 0x60,
84024 + 0x6c, 0x37, 0x7c, 0x38, 0x1e, 0x44, 0xa0, 0xcf, 0xf0, 0xca, 0x77, 0xe6,
84025 + 0x03, 0x52, 0xb7, 0x49, 0xdb, 0x9a, 0x3f, 0x47, 0xff, 0x2a, 0x7e, 0xdf,
84026 + 0xdf, 0x51, 0xbe, 0xf7, 0x0b, 0x67, 0x6a, 0xb5, 0xca, 0xef, 0x7f, 0xea,
84027 + 0xe1, 0x50, 0x58, 0x77, 0x26, 0x3f, 0x17, 0x2e, 0xa5, 0x92, 0x3f, 0xd6,
84028 + 0xc3, 0x0a, 0x46, 0xac, 0x1c, 0x73, 0x85, 0xbe, 0x4c, 0x3b, 0xfd, 0x2d,
84029 + 0xcc, 0x58, 0x99, 0x24, 0xbe, 0x93, 0xf7, 0xb2, 0xcd, 0x0a, 0x3d, 0x80,
84030 + 0x9b, 0xec, 0x66, 0x4f, 0x51, 0x7f, 0x2a, 0x31, 0xcc, 0xc3, 0x98, 0x2e,
84031 + 0x1c, 0xef, 0x52, 0xce, 0xdd, 0xa4, 0xbd, 0xc5, 0x7e, 0x57, 0xe9, 0x7a,
84032 + 0xac, 0x4a, 0x69, 0xd2, 0x5e, 0xcf, 0x27, 0xe9, 0xe3, 0x3d, 0x6c, 0x37,
84033 + 0x80, 0xd7, 0xed, 0x5a, 0xe6, 0x20, 0x91, 0xa4, 0x45, 0x81, 0x37, 0x77,
84034 + 0x84, 0x41, 0xce, 0x37, 0xe3, 0xaf, 0x1b, 0x8c, 0xff, 0x12, 0xa3, 0xd5,
84035 + 0x5b, 0x96, 0x24, 0xb0, 0x3e, 0x0f, 0xef, 0xba, 0x0e, 0x13, 0xf7, 0x30,
84036 + 0xb6, 0xdf, 0xc7, 0x78, 0xf9, 0x20, 0x63, 0xe1, 0x8e, 0x38, 0xc7, 0x56,
84037 + 0xef, 0x38, 0x95, 0xfa, 0x66, 0xc9, 0x67, 0x30, 0xc0, 0x58, 0x7c, 0x37,
84038 + 0xe3, 0xcb, 0x16, 0x7e, 0x7e, 0x29, 0xff, 0x1f, 0xce, 0x7d, 0xcc, 0xa7,
84039 + 0x9e, 0xbf, 0x48, 0x26, 0xd4, 0x51, 0xbd, 0x35, 0xb6, 0x95, 0xb1, 0x98,
84040 + 0x72, 0xad, 0x5a, 0xd3, 0x71, 0xae, 0x8c, 0x46, 0x92, 0x3e, 0xc5, 0xc0,
84041 + 0x73, 0x13, 0xc7, 0x1d, 0x6d, 0x8e, 0xe4, 0x52, 0xe5, 0x38, 0x28, 0x63,
84042 + 0x95, 0x1c, 0x41, 0xf0, 0x41, 0xf2, 0x84, 0x99, 0x18, 0xa1, 0xe2, 0xe6,
84043 + 0x61, 0xc9, 0x13, 0xc2, 0x58, 0x65, 0x7f, 0x09, 0xcf, 0xb5, 0x79, 0xd1,
84044 + 0xc5, 0x1c, 0xeb, 0x16, 0x3b, 0x80, 0x3b, 0x88, 0xa5, 0x2b, 0x6c, 0xe6,
84045 + 0x4e, 0xc1, 0x10, 0x6e, 0xb5, 0xbd, 0x38, 0xdc, 0xc6, 0x1c, 0x28, 0x54,
84046 + 0x89, 0x77, 0x0d, 0x0f, 0x8e, 0x18, 0x41, 0xe4, 0x5c, 0x7f, 0xd8, 0x41,
84047 + 0x0c, 0xa4, 0x1e, 0x55, 0xc9, 0x1d, 0x44, 0x87, 0x1e, 0xea, 0x53, 0x45,
84048 + 0xea, 0xbc, 0x0e, 0x3f, 0x2c, 0x17, 0x90, 0x7e, 0x49, 0x3e, 0xf0, 0x33,
84049 + 0x27, 0x35, 0x47, 0xea, 0xc3, 0x0a, 0x98, 0x32, 0x0e, 0xe1, 0xb7, 0x06,
84050 + 0xfa, 0x26, 0x3a, 0xc8, 0xed, 0x66, 0x0e, 0xf5, 0x0c, 0xb9, 0x75, 0x1d,
84051 + 0x5e, 0xd3, 0x85, 0x5b, 0xbf, 0x8a, 0x20, 0x7d, 0xb7, 0x7f, 0x22, 0xba,
84052 + 0xe1, 0x8c, 0xe2, 0xc1, 0x4b, 0x7a, 0x2d, 0x79, 0x9f, 0x89, 0xed, 0x13,
84053 + 0xf0, 0x6e, 0x5d, 0x62, 0x20, 0x3d, 0xd1, 0x9b, 0x98, 0xc5, 0xb4, 0xd7,
84054 + 0xbb, 0xa4, 0xc8, 0x89, 0x3e, 0x43, 0xdd, 0xae, 0x8d, 0xbb, 0x9c, 0xa8,
84055 + 0xc8, 0x07, 0x82, 0x8e, 0x73, 0x52, 0x17, 0x3d, 0x03, 0x07, 0x4a, 0x3a,
84056 + 0xde, 0xcf, 0xcf, 0xfd, 0x25, 0x1d, 0x6f, 0xa1, 0x3c, 0xfa, 0x1f, 0xb6,
84057 + 0x5d, 0xc4, 0x63, 0x34, 0x54, 0x9a, 0xc2, 0x6f, 0x88, 0xc3, 0xc4, 0x93,
84058 + 0x24, 0x75, 0xfc, 0x42, 0x7e, 0xbd, 0xe0, 0x36, 0xa7, 0xbb, 0xdd, 0xc5,
84059 + 0xef, 0xa4, 0x7a, 0x80, 0x76, 0x20, 0x7a, 0x78, 0xad, 0x94, 0xdb, 0x38,
84060 + 0xce, 0x90, 0x21, 0x3a, 0x2e, 0xe7, 0x65, 0xa2, 0xeb, 0x36, 0xc9, 0xb1,
84061 + 0xfa, 0x81, 0xdf, 0xb0, 0xac, 0x87, 0xb8, 0x6b, 0xe2, 0x6b, 0xdd, 0x62,
84062 + 0x3b, 0xb3, 0xdc, 0x58, 0x79, 0xd5, 0x42, 0xc7, 0xf9, 0x4a, 0x5c, 0xc3,
84063 + 0x7b, 0x7a, 0x6b, 0xa2, 0x5d, 0x8d, 0xb0, 0xaf, 0x49, 0xd8, 0x93, 0x1d,
84064 + 0x9c, 0xbb, 0x2b, 0x90, 0x0c, 0x89, 0xad, 0x61, 0x43, 0x45, 0x11, 0xc3,
84065 + 0x71, 0xca, 0xd6, 0x63, 0xdb, 0x38, 0x67, 0xfb, 0x42, 0x5d, 0xe4, 0x71,
84066 + 0x6a, 0x27, 0xd3, 0x7f, 0xf2, 0x27, 0xdd, 0x7a, 0x04, 0xef, 0x38, 0xb9,
84067 + 0x90, 0xc3, 0x38, 0x29, 0xb9, 0xd1, 0x7c, 0x1c, 0x0e, 0x7a, 0xf0, 0x62,
84068 + 0xac, 0x11, 0xc9, 0x7a, 0x05, 0x35, 0xfa, 0x9b, 0xce, 0x77, 0x42, 0xd2,
84069 + 0x0e, 0x73, 0x3c, 0xf5, 0x56, 0x8f, 0xe4, 0x80, 0x5e, 0x5d, 0xe4, 0x76,
84070 + 0x31, 0xc7, 0xbd, 0xb4, 0xfd, 0x7f, 0x75, 0x8e, 0x87, 0xa4, 0xfd, 0x48,
84071 + 0x50, 0x53, 0x7f, 0xd7, 0x1c, 0x7e, 0xdf, 0xf9, 0x81, 0x2b, 0x33, 0xe3,
84072 + 0xea, 0x01, 0xaa, 0xc8, 0x23, 0x54, 0x54, 0x8b, 0xcc, 0x72, 0x3b, 0xe2,
84073 + 0x67, 0x73, 0x79, 0x4f, 0x9e, 0x89, 0x8d, 0x6c, 0x61, 0xbb, 0xcf, 0x39,
84074 + 0x68, 0x94, 0xef, 0xd3, 0x1e, 0x29, 0x6b, 0x4d, 0x1e, 0x5a, 0xe1, 0xc5,
84075 + 0x52, 0xb4, 0xc4, 0x97, 0x2d, 0x97, 0xb1, 0xa8, 0x66, 0x52, 0xf3, 0xc3,
84076 + 0x6a, 0xf4, 0x10, 0x8b, 0xdf, 0x68, 0x6b, 0xc3, 0x72, 0xe6, 0x8c, 0xef,
84077 + 0x10, 0x5c, 0x7a, 0x75, 0x0f, 0xa6, 0x38, 0xbe, 0x27, 0x0d, 0x59, 0x2f,
84078 + 0x70, 0x70, 0x4b, 0xdc, 0x4a, 0xd1, 0x63, 0xad, 0x59, 0xb4, 0x9d, 0x6a,
84079 + 0x5d, 0xe2, 0x7c, 0x2d, 0x6a, 0x4c, 0x6f, 0xec, 0x1d, 0x44, 0x8c, 0x1d,
84080 + 0xe4, 0x39, 0x5a, 0x7d, 0x4b, 0xc2, 0x47, 0xed, 0xbe, 0x6c, 0x47, 0x13,
84081 + 0x47, 0x94, 0xa2, 0x3f, 0xbc, 0xc0, 0xb9, 0x7d, 0xcd, 0xd6, 0x37, 0x56,
84082 + 0x7a, 0x8a, 0xdf, 0x5f, 0x71, 0xf3, 0xd1, 0xb2, 0x3f, 0x84, 0x4b, 0xb8,
84083 + 0xe1, 0xf7, 0x9f, 0xb2, 0x71, 0x86, 0x54, 0x88, 0x79, 0x29, 0xce, 0xf4,
84084 + 0x19, 0x53, 0x8a, 0x4f, 0xaf, 0x25, 0xae, 0x0a, 0x96, 0x56, 0x90, 0x13,
84085 + 0x4a, 0xec, 0xf7, 0xfb, 0xdf, 0x61, 0x19, 0x72, 0xba, 0xe3, 0xb1, 0xeb,
84086 + 0x5b, 0x13, 0x7e, 0x24, 0xad, 0x4a, 0xfa, 0xe5, 0x2c, 0x33, 0xe4, 0xbf,
84087 + 0xaa, 0x60, 0x35, 0x06, 0x68, 0xd7, 0x35, 0xcc, 0x57, 0x5b, 0xd2, 0x13,
84088 + 0x8c, 0xe1, 0x6d, 0x78, 0x70, 0x82, 0x23, 0x6b, 0x18, 0x6c, 0x54, 0x4d,
84089 + 0x59, 0x83, 0x08, 0xc2, 0xd7, 0xf0, 0xe0, 0x0d, 0xaa, 0x79, 0x1c, 0x3d,
84090 + 0x1d, 0xfe, 0xce, 0x44, 0x01, 0xfe, 0x7a, 0x73, 0x13, 0xe2, 0x69, 0xc9,
84091 + 0x3b, 0x05, 0x23, 0x93, 0x5b, 0x89, 0x5a, 0x8d, 0x75, 0xd7, 0x96, 0xf5,
84092 + 0x0d, 0xb5, 0xd6, 0x94, 0xfc, 0x53, 0xeb, 0x7c, 0xc5, 0xc5, 0xd2, 0x20,
84093 + 0xf3, 0x85, 0x1f, 0x87, 0xff, 0xcf, 0xea, 0x27, 0x38, 0x27, 0xd2, 0x17,
84094 + 0xf9, 0x2f, 0x79, 0x3f, 0xbc, 0x2a, 0xb1, 0xb0, 0x77, 0xdc, 0xcb, 0xfc,
84095 + 0x4a, 0xe6, 0x4c, 0xe2, 0xf1, 0x6b, 0xff, 0xf5, 0x79, 0xfa, 0x8b, 0x8f,
84096 + 0xba, 0x7f, 0x44, 0xb7, 0x08, 0xf3, 0x8e, 0xa3, 0xc7, 0x23, 0xe1, 0x0a,
84097 + 0x45, 0xc3, 0xf6, 0xb6, 0x7f, 0xa7, 0x8d, 0x80, 0x38, 0x06, 0x12, 0xeb,
84098 + 0x5a, 0x6c, 0x19, 0xaf, 0x98, 0x51, 0xaf, 0x67, 0x4d, 0xb9, 0xde, 0x80,
84099 + 0x6e, 0xa5, 0xa4, 0xde, 0x68, 0x3c, 0xd2, 0xb3, 0x8d, 0xf5, 0x1e, 0x65,
84100 + 0xbd, 0x24, 0x63, 0xe7, 0x3d, 0x13, 0x41, 0x37, 0x9f, 0xb3, 0xc6, 0xab,
84101 + 0x67, 0xb6, 0x77, 0xbe, 0xde, 0xe3, 0xba, 0x35, 0xe5, 0xb6, 0xb7, 0x38,
84102 + 0xb2, 0xb1, 0xc2, 0xe3, 0x45, 0x9a, 0xf5, 0xa6, 0x58, 0xef, 0xf5, 0x09,
84103 + 0x59, 0x8f, 0xc0, 0x0d, 0xe3, 0x76, 0xe6, 0xb8, 0x47, 0xd7, 0x83, 0x27,
84104 + 0x91, 0x24, 0xe6, 0xba, 0x73, 0x79, 0xc3, 0x58, 0x7e, 0x33, 0xb6, 0xeb,
84105 + 0x87, 0xe2, 0x95, 0xac, 0x77, 0x44, 0x3f, 0x14, 0xf6, 0xd1, 0xaf, 0xd6,
84106 + 0x51, 0x5e, 0x2f, 0xf3, 0x1a, 0x95, 0xfe, 0xb2, 0x65, 0x5c, 0x62, 0xbf,
84107 + 0x41, 0x5e, 0x12, 0xa2, 0xcd, 0xc9, 0x98, 0xa5, 0x5d, 0x99, 0x53, 0x19,
84108 + 0x5f, 0x24, 0x36, 0xee, 0x8e, 0x4f, 0x99, 0x7b, 0x40, 0x72, 0xdd, 0x7a,
84109 + 0x0b, 0x7d, 0x6d, 0x12, 0xff, 0x14, 0x62, 0x6f, 0x03, 0xf3, 0x4f, 0x69,
84110 + 0x23, 0x84, 0x6d, 0xf4, 0xed, 0xfd, 0x86, 0xe3, 0x3c, 0x6f, 0xcc, 0xc7,
84111 + 0x01, 0x23, 0x92, 0x12, 0x3b, 0x7c, 0xd3, 0x58, 0x76, 0xa5, 0xe4, 0x96,
84112 + 0xc0, 0x9f, 0x60, 0x8a, 0xb6, 0x51, 0xa5, 0x8b, 0xbf, 0x29, 0x08, 0x47,
84113 + 0xbd, 0x5a, 0x8d, 0xe2, 0xc0, 0xbf, 0x78, 0xe1, 0xc6, 0x85, 0x1c, 0x7b,
84114 + 0xed, 0xf5, 0x0a, 0xde, 0xbf, 0x4a, 0xc1, 0xa1, 0xab, 0xa2, 0xe1, 0x11,
84115 + 0x65, 0x16, 0xb1, 0x35, 0xda, 0xdd, 0xa9, 0x58, 0x47, 0x59, 0x37, 0xd9,
84116 + 0xe6, 0x89, 0x84, 0xa1, 0xd4, 0xd1, 0xef, 0x5b, 0x34, 0x09, 0xfd, 0xde,
84117 + 0x81, 0x68, 0xf8, 0x51, 0xfe, 0xf7, 0x4c, 0x28, 0x98, 0xd0, 0x23, 0x49,
84118 + 0xb8, 0xf2, 0xd9, 0x36, 0xd3, 0xce, 0xab, 0xa3, 0x8e, 0x73, 0x2c, 0xde,
84119 + 0x1a, 0x3c, 0x86, 0x37, 0x89, 0x6d, 0xd2, 0x4e, 0x19, 0xeb, 0xc1, 0x5c,
84120 + 0x56, 0x4f, 0x76, 0x2a, 0x8e, 0x57, 0xf8, 0xc3, 0xfa, 0xbc, 0xc4, 0xc3,
84121 + 0x72, 0x7f, 0xcb, 0x71, 0xd1, 0x71, 0xde, 0x34, 0x8a, 0xb2, 0x82, 0x1d,
84122 + 0x91, 0x14, 0x30, 0x1f, 0x93, 0x7a, 0xa4, 0x6b, 0x8a, 0x3a, 0x08, 0xd3,
84123 + 0xdf, 0xe6, 0xe9, 0x8d, 0x38, 0xee, 0x8b, 0x04, 0x8f, 0x2b, 0xcb, 0xcf,
84124 + 0xaa, 0x58, 0xb4, 0xfe, 0x09, 0xa5, 0x75, 0x43, 0x15, 0xf4, 0x64, 0x41,
84125 + 0x99, 0x2b, 0x3a, 0x09, 0x07, 0xc8, 0xa5, 0xd6, 0xc1, 0x8d, 0xd1, 0xb8,
84126 + 0xcd, 0xf6, 0x26, 0xa7, 0xd1, 0x4c, 0xdb, 0xd7, 0x7b, 0xee, 0x23, 0x0f,
84127 + 0x04, 0x3e, 0xce, 0x24, 0x41, 0xfa, 0xda, 0x88, 0xd4, 0xa7, 0x1c, 0xe7,
84128 + 0x7e, 0xf6, 0x75, 0x07, 0xfb, 0xfa, 0x60, 0xfc, 0x3d, 0xe7, 0x5f, 0x5d,
84129 + 0x99, 0x37, 0x62, 0x44, 0xbf, 0x54, 0xee, 0xbb, 0xcc, 0xf5, 0x45, 0xae,
84130 + 0x0f, 0x37, 0xcf, 0x61, 0xbe, 0xd2, 0x21, 0xb8, 0x71, 0xd2, 0x4b, 0xdc,
84131 + 0xa0, 0x3c, 0xc6, 0x10, 0xf5, 0xd2, 0x38, 0xec, 0x01, 0xe3, 0x5b, 0x38,
84132 + 0xa5, 0xa8, 0x24, 0x42, 0x41, 0xf8, 0x75, 0x07, 0x0f, 0x90, 0x33, 0x24,
84133 + 0xe7, 0xd4, 0xe1, 0x73, 0x86, 0x1f, 0xb3, 0xa2, 0xea, 0x65, 0x1e, 0xce,
84134 + 0xc9, 0x81, 0xb8, 0x7c, 0xf7, 0x61, 0x6a, 0x8e, 0x07, 0x9b, 0xc9, 0x25,
84135 + 0x82, 0x51, 0x75, 0x9e, 0xdc, 0xf7, 0xb7, 0xcb, 0x77, 0xf6, 0x7f, 0xae,
84136 + 0x82, 0xfb, 0x69, 0x15, 0x6a, 0xb4, 0x37, 0x2c, 0xf7, 0xbb, 0x0c, 0xf9,
84137 + 0xae, 0xa0, 0x39, 0xee, 0xe5, 0xbc, 0x38, 0xf0, 0x48, 0x7a, 0x1f, 0xe5,
84138 + 0xfd, 0xb8, 0x7c, 0x4e, 0xde, 0xcf, 0x71, 0x27, 0xf7, 0x29, 0x82, 0x33,
84139 + 0x3f, 0x72, 0x5e, 0x64, 0x1c, 0x09, 0xf2, 0xf9, 0xe7, 0xd8, 0xf6, 0xd1,
84140 + 0xf8, 0xf3, 0xce, 0x3c, 0xe2, 0xeb, 0xb1, 0x84, 0x86, 0xf9, 0x57, 0x35,
84141 + 0xe1, 0xf8, 0x9d, 0x32, 0x66, 0x05, 0xb3, 0xf4, 0x2f, 0xf8, 0x24, 0xcf,
84142 + 0xac, 0xd5, 0xe7, 0xe2, 0xe6, 0x3b, 0x8a, 0xf7, 0xaa, 0xa2, 0xb2, 0x4e,
84143 + 0xa8, 0xa1, 0xea, 0xaa, 0x06, 0x68, 0xa5, 0x7b, 0xcb, 0xa3, 0xde, 0xee,
84144 + 0x59, 0x8a, 0x1e, 0xbc, 0x4d, 0x91, 0xe7, 0xbf, 0x24, 0xb7, 0x75, 0x9c,
84145 + 0x07, 0x38, 0x5f, 0x2d, 0xf1, 0x00, 0x4e, 0xb3, 0x9d, 0x5e, 0xea, 0x6f,
84146 + 0xe5, 0xf9, 0xf9, 0x2a, 0xd7, 0xff, 0xb9, 0xa3, 0x7d, 0x4a, 0xea, 0x8a,
84147 + 0x8c, 0x85, 0x5d, 0x37, 0x2b, 0x1c, 0x50, 0xb5, 0xe8, 0xd9, 0xd5, 0x19,
84148 + 0xcb, 0xf6, 0xba, 0xdf, 0x83, 0x1d, 0xaf, 0x9d, 0x5f, 0xf3, 0x3a, 0xe3,
84149 + 0xc6, 0xa3, 0x65, 0xd7, 0x07, 0x71, 0xdc, 0xa9, 0x6f, 0xb7, 0x82, 0x95,
84150 + 0x90, 0xb8, 0xd4, 0x1c, 0xfb, 0x0a, 0xe5, 0xfe, 0xc0, 0x28, 0xc6, 0xac,
84151 + 0xfd, 0x46, 0x24, 0x6b, 0xd1, 0x1f, 0x52, 0xcc, 0x13, 0x3b, 0x25, 0x76,
84152 + 0x4f, 0xd6, 0xfa, 0x50, 0x3b, 0x1f, 0x95, 0xed, 0x91, 0xfe, 0x05, 0xcc,
84153 + 0x9b, 0x3c, 0x1d, 0x12, 0xeb, 0x64, 0x7e, 0xdc, 0x32, 0x6c, 0xab, 0x0a,
84154 + 0xcb, 0xd9, 0xc7, 0x78, 0xfb, 0xef, 0x8b, 0x13, 0x22, 0x47, 0xac, 0x33,
84155 + 0xd2, 0x9f, 0xc4, 0xef, 0x2b, 0x0b, 0x46, 0x65, 0x59, 0x4f, 0xf2, 0xdf,
84156 + 0x90, 0xca, 0xab, 0xe4, 0x19, 0x15, 0xc1, 0xde, 0x8e, 0x46, 0x5e, 0xf2,
84157 + 0xdc, 0x7b, 0xc3, 0xda, 0xfc, 0xf9, 0x75, 0x3c, 0x64, 0x8d, 0x0a, 0xa8,
84158 + 0x57, 0x0b, 0x66, 0x13, 0x7d, 0x83, 0x32, 0x3e, 0x8b, 0x56, 0x2e, 0x39,
84159 + 0x7a, 0xe7, 0x5d, 0x77, 0xd3, 0x9f, 0x9f, 0x63, 0x8b, 0xa3, 0xe4, 0x33,
84160 + 0x96, 0xeb, 0x19, 0xe2, 0xeb, 0x33, 0xd7, 0xf5, 0x24, 0x86, 0x94, 0xd7,
84161 + 0x06, 0x1b, 0x30, 0xb8, 0xfb, 0x0e, 0x68, 0x8d, 0x45, 0x1c, 0x52, 0xcd,
84162 + 0xc5, 0x58, 0x96, 0x7d, 0xdb, 0x57, 0xe4, 0xe0, 0xb5, 0x18, 0xd8, 0x1d,
84163 + 0x47, 0x6e, 0x8e, 0x3c, 0x93, 0x7b, 0x7e, 0x08, 0x4e, 0x6e, 0xdf, 0x7d,
84164 + 0x99, 0xe4, 0xd4, 0x61, 0x91, 0x9b, 0xa2, 0xef, 0xa8, 0xfa, 0xdb, 0x8e,
84165 + 0x15, 0x14, 0xf9, 0x87, 0xae, 0xf4, 0x52, 0x87, 0x37, 0xa1, 0xb5, 0x67,
84166 + 0x0c, 0xa7, 0xc8, 0xeb, 0xdc, 0x35, 0x54, 0xad, 0xd2, 0x9c, 0xba, 0xdf,
84167 + 0x87, 0x68, 0x6a, 0x9c, 0x38, 0x10, 0x98, 0xf0, 0x93, 0x9f, 0xcc, 0x77,
84168 + 0xd7, 0x8e, 0x96, 0x91, 0x7f, 0xa4, 0xc8, 0x6d, 0x3f, 0xee, 0xf5, 0xe2,
84169 + 0x6e, 0x62, 0xc6, 0x7e, 0xbd, 0x75, 0xc3, 0x18, 0x7e, 0x45, 0xac, 0x93,
84170 + 0xf2, 0x3f, 0x60, 0x7b, 0x22, 0xd3, 0xcb, 0xf6, 0xe0, 0xf7, 0x12, 0x8f,
84171 + 0xc9, 0x09, 0xbd, 0x3e, 0x3d, 0xed, 0x93, 0xf8, 0x2d, 0xdc, 0x75, 0xc7,
84172 + 0x6e, 0x05, 0x9d, 0x94, 0xf3, 0x28, 0x6d, 0xe6, 0xfe, 0x28, 0xbc, 0x5d,
84173 + 0x57, 0x91, 0xa3, 0x90, 0xf3, 0x61, 0x4e, 0x00, 0x8f, 0x8c, 0x23, 0x91,
84174 + 0xd7, 0xa7, 0xe6, 0x05, 0xf0, 0x26, 0xe5, 0x08, 0xae, 0x57, 0x94, 0xe4,
84175 + 0xf4, 0xac, 0xb9, 0x58, 0x4e, 0x2d, 0x1e, 0x2f, 0xc9, 0xd9, 0x43, 0x39,
84176 + 0xd7, 0xb4, 0xc0, 0x5b, 0x7b, 0x8d, 0xcc, 0x55, 0x1b, 0xfd, 0xa7, 0x16,
84177 + 0x19, 0x17, 0xdb, 0xc9, 0xe9, 0x3e, 0x06, 0x45, 0x5f, 0x28, 0xfc, 0xff,
84178 + 0x1b, 0x6e, 0xbd, 0x9b, 0xda, 0xa6, 0xa6, 0xeb, 0x09, 0x9e, 0x67, 0x5a,
84179 + 0xa6, 0xe8, 0xa8, 0x65, 0xdd, 0x34, 0x62, 0xeb, 0xee, 0xea, 0x72, 0x7f,
84180 + 0xd9, 0x4e, 0xb9, 0x8d, 0x06, 0xde, 0x0b, 0xe1, 0x11, 0xe6, 0x71, 0x37,
84181 + 0xb1, 0x9d, 0x03, 0x86, 0x70, 0xb1, 0x56, 0xa3, 0x4a, 0x91, 0xbc, 0x36,
84182 + 0xcc, 0xb8, 0xde, 0x80, 0x3e, 0x37, 0x16, 0x84, 0x59, 0x7f, 0x77, 0x5d,
84183 + 0x91, 0x4f, 0xc0, 0x77, 0x2b, 0xcb, 0x76, 0xc6, 0x8b, 0xed, 0xf9, 0x74,
84184 + 0xc9, 0x15, 0xdb, 0xb1, 0x7f, 0xf8, 0xfc, 0xf3, 0xc8, 0x4d, 0xfa, 0xcc,
84185 + 0xf9, 0x9a, 0x8a, 0x10, 0x4b, 0x2b, 0x50, 0x5d, 0x21, 0x58, 0x7f, 0xd1,
84186 + 0xd8, 0xb7, 0x8c, 0xff, 0x29, 0xef, 0x57, 0x63, 0xeb, 0xb8, 0x83, 0x2d,
84187 + 0x6e, 0x9e, 0x50, 0x81, 0xde, 0x36, 0xc1, 0x43, 0xb1, 0xa5, 0x39, 0x92,
84188 + 0x27, 0x25, 0x72, 0x90, 0x18, 0x27, 0xf6, 0xb3, 0xc6, 0xb5, 0x1f, 0x8f,
84189 + 0x32, 0xd3, 0x7e, 0x36, 0xe3, 0xbb, 0xfa, 0xa1, 0x3b, 0x2a, 0x71, 0xe8,
84190 + 0x2e, 0x59, 0xff, 0xde, 0x10, 0xc7, 0xe1, 0x5b, 0xe8, 0x9b, 0xaf, 0x13,
84191 + 0x5b, 0xb6, 0xb4, 0x30, 0x86, 0xb8, 0x98, 0xa5, 0xa0, 0x92, 0xb1, 0x7d,
84192 + 0xdb, 0x6e, 0xe6, 0xc0, 0x6a, 0x90, 0x6d, 0x5e, 0x8a, 0x5d, 0xd2, 0x7f,
84193 + 0x83, 0xb9, 0xee, 0xa1, 0x2f, 0x56, 0x22, 0x20, 0x39, 0xc7, 0x4f, 0x4e,
84194 + 0x51, 0xc6, 0x4d, 0x46, 0x59, 0x57, 0xa2, 0xa7, 0xb2, 0x9c, 0x06, 0xa4,
84195 + 0x77, 0x97, 0xeb, 0x2b, 0x78, 0x29, 0x1a, 0x2e, 0xad, 0x3f, 0x37, 0x60,
84196 + 0x60, 0xfc, 0xd0, 0x31, 0x72, 0x0d, 0x27, 0xd1, 0x72, 0x68, 0x63, 0x98,
84197 + 0x7d, 0x39, 0x13, 0x2f, 0xcf, 0xa9, 0xf8, 0xe6, 0x4c, 0x19, 0x62, 0xbb,
84198 + 0x50, 0x6a, 0x17, 0x62, 0x4b, 0x2d, 0x6d, 0x34, 0x1f, 0x45, 0xaa, 0xc6,
84199 + 0xac, 0x85, 0x3d, 0x4e, 0xdf, 0x9a, 0xa8, 0x80, 0xf7, 0x5a, 0x89, 0x7d,
84200 + 0xc2, 0x77, 0xbc, 0x37, 0x9c, 0xb0, 0x2b, 0xf0, 0x69, 0xe3, 0x9c, 0x23,
84201 + 0xb8, 0x78, 0x4c, 0xc7, 0xe5, 0x15, 0xc4, 0xc4, 0x85, 0xf1, 0x68, 0x72,
84202 + 0x1d, 0xf3, 0xc2, 0x23, 0x6d, 0xde, 0x1b, 0xde, 0xca, 0xff, 0x9a, 0xdc,
84203 + 0xf2, 0xd2, 0xf1, 0x88, 0x3e, 0x70, 0x74, 0x45, 0x54, 0xda, 0x94, 0xf6,
84204 + 0xca, 0x36, 0x2a, 0xed, 0x3b, 0x4e, 0x34, 0x1e, 0x70, 0xe7, 0xbc, 0x3c,
84205 + 0x86, 0x37, 0xf4, 0xf2, 0x18, 0x02, 0x8c, 0xa7, 0x49, 0x72, 0x57, 0xe1,
84206 + 0xd5, 0x7e, 0xe6, 0x91, 0x5e, 0xf2, 0xf1, 0x6e, 0x08, 0xdf, 0x3b, 0x4a,
84207 + 0x7e, 0xf2, 0xa4, 0x0d, 0xbc, 0x93, 0x75, 0xb0, 0x2c, 0x3e, 0x8b, 0xf8,
84208 + 0xd2, 0x4f, 0xd9, 0xb2, 0xa6, 0x76, 0x50, 0x19, 0x67, 0xae, 0x79, 0xdc,
84209 + 0x5b, 0x95, 0x54, 0x99, 0x5b, 0x1e, 0xc8, 0x47, 0xc3, 0x87, 0x98, 0x67,
84210 + 0xfa, 0x99, 0xeb, 0x72, 0x06, 0x94, 0x27, 0x99, 0x67, 0xee, 0x2b, 0xe5,
84211 + 0x99, 0x07, 0xf2, 0x01, 0xe4, 0xb3, 0xc4, 0xc6, 0x38, 0xf3, 0x5b, 0x37,
84212 + 0x4f, 0x0f, 0x60, 0x32, 0xab, 0x32, 0x1f, 0x7f, 0xdf, 0x99, 0xaa, 0x77,
84213 + 0xf7, 0x0b, 0xf0, 0x75, 0xbb, 0x01, 0x07, 0x87, 0x9b, 0x70, 0x36, 0x3f,
84214 + 0x45, 0xbb, 0xb8, 0x0c, 0xd3, 0xa3, 0xb5, 0x98, 0x18, 0x7e, 0x95, 0x9f,
84215 + 0xdb, 0xf0, 0xfe, 0xa8, 0x9b, 0xe3, 0x12, 0x0f, 0xa5, 0x7f, 0x07, 0x95,
84216 + 0x43, 0x6e, 0x8e, 0x6b, 0x25, 0x99, 0xdb, 0x26, 0xfa, 0x4b, 0xb9, 0xed,
84217 + 0x14, 0x73, 0xdb, 0x23, 0x6c, 0xf3, 0x85, 0x52, 0x9b, 0xcf, 0xb9, 0xff,
84218 + 0xa5, 0x2f, 0x52, 0x77, 0x66, 0xbd, 0x44, 0x52, 0xd6, 0xa6, 0xc7, 0xed,
84219 + 0x68, 0xac, 0x5c, 0xf7, 0x05, 0xd6, 0x3b, 0x72, 0xbe, 0xde, 0x6a, 0x0c,
84220 + 0x64, 0xd6, 0x90, 0xe7, 0xcb, 0xda, 0xca, 0x7b, 0x6b, 0x6c, 0xea, 0xf2,
84221 + 0xcb, 0xd1, 0xa9, 0xee, 0x59, 0xa8, 0xc3, 0xfa, 0xb8, 0x70, 0xa2, 0xb7,
84222 + 0xc8, 0x89, 0x22, 0x89, 0x95, 0x8c, 0x0f, 0x9e, 0x68, 0x84, 0x58, 0x0f,
84223 + 0x44, 0x27, 0x98, 0x03, 0xe4, 0xeb, 0x70, 0x37, 0x73, 0x31, 0xb5, 0x7e,
84224 + 0x75, 0x69, 0x0f, 0xab, 0x94, 0xe3, 0x78, 0xd6, 0xa0, 0x6f, 0x52, 0xe4,
84225 + 0xad, 0x26, 0xbf, 0xae, 0xc1, 0x2d, 0xc5, 0x75, 0x0b, 0xbf, 0x9f, 0xb2,
84226 + 0xfd, 0xd1, 0xa9, 0x18, 0x5d, 0xc6, 0x38, 0xc0, 0x1b, 0xcf, 0xd9, 0x0a,
84227 + 0x96, 0xe9, 0x3e, 0xac, 0x0b, 0xd6, 0x61, 0x99, 0xf1, 0xef, 0xce, 0x2d,
84228 + 0xab, 0xe5, 0xd9, 0x79, 0x1e, 0xe1, 0xaf, 0x64, 0xbb, 0x6f, 0x92, 0x53,
84229 + 0x8f, 0xf3, 0xcb, 0x54, 0xbe, 0x78, 0xdf, 0xca, 0x53, 0x36, 0xe5, 0x6e,
84230 + 0xa3, 0xdc, 0x7b, 0x83, 0x6e, 0xbe, 0x5b, 0x2a, 0x37, 0x15, 0xf3, 0x10,
84231 + 0xd7, 0xa5, 0x6c, 0x27, 0xe5, 0xde, 0x4d, 0xb9, 0xfd, 0x41, 0xe9, 0xdf,
84232 + 0xbf, 0x3b, 0xf7, 0xae, 0x96, 0x67, 0xe5, 0x7d, 0x13, 0x29, 0xff, 0x9e,
84233 + 0xc8, 0x35, 0xc6, 0x4b, 0x6d, 0x1d, 0xb2, 0x91, 0x95, 0xdc, 0x6f, 0x6d,
84234 + 0x47, 0x54, 0xeb, 0x75, 0xd7, 0xb2, 0x35, 0xac, 0xcb, 0x6b, 0xb8, 0x87,
84235 + 0xba, 0xcb, 0x79, 0xcb, 0x63, 0x72, 0xfb, 0x64, 0x09, 0x77, 0x5e, 0xce,
84236 + 0x72, 0x7d, 0x25, 0xdc, 0xee, 0xcc, 0x8b, 0x0d, 0xcd, 0xdc, 0x4f, 0x6a,
84237 + 0x2a, 0xf9, 0xb3, 0x17, 0x4f, 0xdb, 0x1f, 0x9c, 0x1b, 0xcc, 0x48, 0x3c,
84238 + 0x93, 0xf5, 0x10, 0x0d, 0xd9, 0xfc, 0xe5, 0x68, 0x1e, 0x0a, 0x62, 0xad,
84239 + 0x31, 0x9b, 0xbe, 0xfe, 0xa5, 0xf3, 0x36, 0x75, 0x80, 0xed, 0xc0, 0xe7,
84240 + 0x8a, 0x57, 0x9e, 0xce, 0xb7, 0x06, 0x1b, 0x70, 0xe9, 0x1e, 0xd2, 0xfc,
84241 + 0x64, 0x8d, 0x19, 0xed, 0xfe, 0x0e, 0xe7, 0xae, 0xca, 0xe5, 0xd0, 0x5b,
84242 + 0x94, 0x1c, 0xe7, 0xef, 0xa9, 0xd2, 0xfc, 0x3d, 0x99, 0xbf, 0xae, 0xb2,
84243 + 0x88, 0x45, 0x97, 0xa3, 0x65, 0x48, 0xfe, 0x07, 0xf1, 0x46, 0xc7, 0xc7,
84244 + 0x79, 0xef, 0x72, 0x2c, 0x1c, 0xf9, 0x54, 0x25, 0xb9, 0xb5, 0x51, 0xcc,
84245 + 0xc1, 0x2f, 0xcd, 0x33, 0x22, 0xfd, 0x16, 0x16, 0xb0, 0x5c, 0x13, 0x75,
84246 + 0x26, 0x18, 0x28, 0xfd, 0x7a, 0xe4, 0x7c, 0xbf, 0xbe, 0xcc, 0x7e, 0xa5,
84247 + 0x7c, 0xb2, 0xd6, 0x2a, 0xfd, 0x52, 0x92, 0xb5, 0x66, 0x13, 0xde, 0x1f,
84248 + 0x40, 0x30, 0x68, 0x46, 0x53, 0x2f, 0xd3, 0xde, 0x27, 0xd8, 0xd7, 0x7a,
84249 + 0xf4, 0x2b, 0x79, 0x77, 0xaf, 0xea, 0x20, 0xcb, 0xcc, 0x8c, 0xa3, 0xd2,
84250 + 0x4f, 0xaf, 0xe4, 0x59, 0x3e, 0xd9, 0x67, 0xf2, 0xe9, 0x22, 0xff, 0x6d,
84251 + 0x72, 0xc5, 0x3e, 0xca, 0x4f, 0x72, 0xfe, 0xfc, 0x6c, 0x03, 0x56, 0xb5,
84252 + 0xd9, 0xed, 0x72, 0x55, 0x2f, 0xfd, 0x6e, 0x19, 0x6d, 0xea, 0xc9, 0x9c,
84253 + 0x82, 0x51, 0x2a, 0xfd, 0x68, 0x56, 0xd6, 0x89, 0xc3, 0x38, 0x90, 0xf3,
84254 + 0xe1, 0x85, 0xec, 0x3c, 0x8c, 0xe7, 0x2a, 0xf0, 0x5c, 0xf6, 0x32, 0xec,
84255 + 0xcb, 0x11, 0xfd, 0xb2, 0x97, 0x63, 0x24, 0xe7, 0xc7, 0x4f, 0xb2, 0xd4,
84256 + 0x53, 0xae, 0x0a, 0xff, 0x9c, 0xfd, 0x13, 0x7c, 0x3d, 0x57, 0x8d, 0xd7,
84257 + 0xb2, 0x57, 0xe0, 0x60, 0xae, 0x06, 0xaf, 0x64, 0xc9, 0x27, 0x73, 0x01,
84258 + 0xbc, 0x9c, 0xd5, 0x50, 0xc8, 0xcd, 0xc2, 0x4b, 0xd9, 0x08, 0x26, 0x72,
84259 + 0xb5, 0xf8, 0x6e, 0x76, 0x01, 0xf2, 0xb9, 0x3a, 0x7c, 0x27, 0xdb, 0x8c,
84260 + 0x2f, 0xe7, 0x82, 0x78, 0x31, 0xab, 0xe3, 0xa9, 0x5c, 0x3d, 0x8e, 0x65,
84261 + 0xa3, 0x6c, 0x37, 0x84, 0xa3, 0xc3, 0x31, 0x1c, 0x18, 0x6d, 0xc4, 0x0b,
84262 + 0xc3, 0x8b, 0x30, 0x3e, 0x1a, 0xc6, 0x73, 0xc3, 0x6d, 0xd8, 0x37, 0xfa,
84263 + 0x6f, 0x15, 0xa2, 0x9f, 0x23, 0xf6, 0xff, 0x38, 0xaf, 0xc7, 0x6d, 0x1f,
84264 + 0x31, 0xdf, 0xaf, 0xda, 0xa2, 0x37, 0xbf, 0x55, 0xcf, 0x39, 0x7a, 0x3a,
84265 + 0xef, 0xce, 0x3b, 0xf4, 0x21, 0x77, 0x7f, 0x06, 0x7d, 0xc6, 0x65, 0xcc,
84266 + 0xd9, 0xfa, 0x25, 0x7e, 0xd0, 0x16, 0x0e, 0x2a, 0xdb, 0x5d, 0x1c, 0xa9,
84267 + 0x4d, 0xce, 0xa2, 0x2e, 0x39, 0xec, 0x60, 0x0d, 0x7d, 0x32, 0x4b, 0x7f,
84268 + 0xb6, 0x38, 0xaf, 0x76, 0xfe, 0xa0, 0xb2, 0x83, 0x39, 0xe2, 0x95, 0x43,
84269 + 0x96, 0x53, 0xed, 0xe2, 0x69, 0x34, 0xb9, 0x88, 0x3e, 0x17, 0x1b, 0x11,
84270 + 0x7d, 0xde, 0x59, 0x21, 0xfa, 0xac, 0xd0, 0x3f, 0xcc, 0x4e, 0xca, 0x7a,
84271 + 0x0f, 0x94, 0xec, 0xe1, 0xfb, 0x95, 0xc5, 0xbc, 0xaa, 0x3c, 0xef, 0x8e,
84272 + 0x33, 0x68, 0x94, 0xe7, 0x9e, 0xfc, 0xaf, 0x41, 0xd6, 0xa4, 0xc0, 0x58,
84273 + 0x50, 0x8f, 0x5c, 0x48, 0xf2, 0xf5, 0x99, 0x98, 0x81, 0x64, 0xa5, 0x19,
84274 + 0xd5, 0x5a, 0xd4, 0x99, 0x7c, 0x45, 0xb0, 0x43, 0xe4, 0x5b, 0x2e, 0xee,
84275 + 0x1c, 0x3e, 0x8f, 0x1f, 0x67, 0x2b, 0x85, 0xa7, 0xec, 0xb7, 0xa5, 0x6f,
84276 + 0x50, 0x2b, 0xa4, 0xcf, 0x28, 0xde, 0x43, 0xa1, 0xac, 0xaf, 0x99, 0x76,
84277 + 0xa7, 0x52, 0xb7, 0x62, 0x7b, 0x5e, 0xfa, 0xc2, 0x72, 0x89, 0x7b, 0xec,
84278 + 0x47, 0x13, 0x5e, 0xb0, 0x8b, 0x7b, 0x33, 0xe3, 0x79, 0xd1, 0xb7, 0x86,
84279 + 0xad, 0xe4, 0x5e, 0x87, 0x87, 0x15, 0xea, 0xee, 0x2f, 0x51, 0xdc, 0x3f,
84280 + 0xf2, 0xd2, 0x57, 0xd7, 0xb2, 0x3c, 0x63, 0x7c, 0x61, 0xda, 0xdd, 0x1b,
84281 + 0xae, 0x73, 0xf3, 0xee, 0x30, 0x0a, 0x03, 0x1f, 0x9c, 0xdb, 0x96, 0xf9,
84282 + 0xe5, 0xb9, 0x3d, 0x99, 0x68, 0x4a, 0xf6, 0x67, 0xf2, 0x13, 0x3e, 0xe4,
84283 + 0xf6, 0x06, 0xf0, 0xd4, 0x84, 0x1f, 0x35, 0x69, 0xc9, 0xf3, 0x83, 0x78,
84284 + 0x6a, 0xff, 0xa1, 0x15, 0x35, 0x68, 0xe0, 0xff, 0x10, 0xaf, 0x46, 0x5e,
84285 + 0x01, 0x1c, 0x1b, 0xf5, 0xe3, 0x2d, 0x5b, 0x7c, 0x58, 0xfc, 0xa3, 0x8d,
84286 + 0xd8, 0x1f, 0x60, 0xbc, 0x55, 0x19, 0x47, 0x9a, 0x70, 0x38, 0x1f, 0xc4,
84287 + 0xf2, 0x6c, 0x3d, 0x9e, 0xcb, 0x25, 0xf1, 0x44, 0xa6, 0x1e, 0x67, 0x1f,
84288 + 0xf3, 0x63, 0xde, 0x3e, 0xf1, 0x87, 0x06, 0x9c, 0x1e, 0xfc, 0x04, 0x0a,
84289 + 0x7b, 0x93, 0xb0, 0x33, 0xb3, 0xb1, 0x63, 0xb0, 0x01, 0xdf, 0x61, 0x99,
84290 + 0x7e, 0xea, 0xa9, 0x7a, 0xa7, 0x89, 0x17, 0x69, 0x43, 0x55, 0x3b, 0x6f,
84291 + 0xa4, 0xec, 0x30, 0x7c, 0x03, 0x21, 0x1c, 0xc9, 0x7b, 0x85, 0xd7, 0x71,
84292 + 0x1e, 0x7f, 0x5a, 0x9c, 0x17, 0x08, 0x6f, 0xbd, 0x98, 0x07, 0x1e, 0x3f,
84293 + 0xcf, 0x03, 0x81, 0x5c, 0x5e, 0xd6, 0x18, 0xdb, 0x3a, 0xfb, 0xec, 0x89,
84294 + 0xff, 0xcf, 0x6f, 0xfe, 0xf4, 0xdb, 0x15, 0x4b, 0x0c, 0x62, 0x9d, 0x8c,
84295 + 0x7f, 0xed, 0x83, 0xd5, 0xe6, 0x86, 0x2f, 0xae, 0x58, 0x52, 0x89, 0xfb,
84296 + 0xdd, 0xf9, 0xea, 0x81, 0xbd, 0xbb, 0x9b, 0xf1, 0xb5, 0xb5, 0x67, 0x40,
84297 + 0xb9, 0x02, 0xa9, 0xfa, 0x21, 0xde, 0x53, 0x4b, 0x3e, 0x07, 0x55, 0x6c,
84298 + 0xad, 0x8e, 0xfa, 0x54, 0x0b, 0x1a, 0x4e, 0xd0, 0xc8, 0x6a, 0xd3, 0x11,
84299 + 0x4c, 0xd5, 0xcb, 0x38, 0x63, 0xcc, 0xb3, 0x3c, 0xb2, 0x77, 0x8d, 0x4f,
84300 + 0x33, 0xc6, 0x9d, 0x5d, 0xac, 0x20, 0xf1, 0x67, 0xe2, 0x83, 0xb7, 0x96,
84301 + 0xf6, 0x80, 0x65, 0x3f, 0x4c, 0xe6, 0xad, 0xac, 0xff, 0xbd, 0xb2, 0xee,
84302 + 0xc9, 0x3f, 0xc1, 0x0a, 0x2f, 0x0e, 0xdb, 0x39, 0xe6, 0x08, 0x32, 0x07,
84303 + 0x32, 0xa6, 0xed, 0xac, 0x27, 0xe3, 0x92, 0xe7, 0xad, 0x89, 0xfa, 0x8f,
84304 + 0x1c, 0x97, 0x8c, 0x67, 0xad, 0x1f, 0xd5, 0x32, 0x86, 0xb2, 0x2e, 0xfa,
84305 + 0x58, 0xf7, 0x51, 0xde, 0x93, 0x7a, 0x8e, 0xb3, 0xfd, 0xa2, 0x98, 0x55,
84306 + 0x91, 0xac, 0x66, 0xdf, 0x9f, 0xb4, 0xa3, 0xc9, 0x77, 0x88, 0x8b, 0xc7,
84307 + 0xa8, 0xc3, 0x51, 0x5b, 0xec, 0x6f, 0x0b, 0xed, 0xae, 0x5f, 0x39, 0x7a,
84308 + 0xde, 0xf6, 0x80, 0x83, 0xb6, 0xcc, 0xaf, 0xf0, 0x29, 0x19, 0xaf, 0x86,
84309 + 0xe9, 0x89, 0xa0, 0xcb, 0xc7, 0xdf, 0xb6, 0xc5, 0x26, 0x62, 0xcc, 0xcf,
84310 + 0xa6, 0xcf, 0xf5, 0x66, 0x0c, 0x1c, 0xe3, 0xdc, 0x9e, 0xb6, 0xab, 0x88,
84311 + 0x37, 0x1d, 0x90, 0xbd, 0xce, 0xf7, 0xed, 0x04, 0x5e, 0x22, 0x66, 0xbd,
84312 + 0x47, 0x5b, 0xfb, 0x2e, 0x31, 0xec, 0x5d, 0x5b, 0xc7, 0x77, 0x68, 0x7b,
84313 + 0xef, 0xd8, 0x31, 0xbc, 0x98, 0xaf, 0xc7, 0x51, 0xe2, 0xd0, 0x49, 0x7e,
84314 + 0x5e, 0x9e, 0xf7, 0xc1, 0x0a, 0xc9, 0xbe, 0xda, 0x1e, 0x3f, 0x6a, 0x7b,
84315 + 0xd9, 0xe7, 0x48, 0x97, 0x1c, 0x44, 0x79, 0x96, 0xe3, 0xd3, 0x94, 0x32,
84316 + 0x0f, 0x29, 0xe7, 0x04, 0x49, 0x64, 0x33, 0x33, 0xb1, 0x21, 0xd2, 0x9f,
84317 + 0xa3, 0xdd, 0xfa, 0xd2, 0xe5, 0x38, 0xc0, 0xd8, 0x59, 0x10, 0xdb, 0xf6,
84318 + 0xc0, 0x33, 0x24, 0xf6, 0x7f, 0x0d, 0x75, 0x3d, 0x7d, 0x4e, 0xf6, 0xd2,
84319 + 0x54, 0x7d, 0x8a, 0xfe, 0x5e, 0x85, 0xde, 0xdc, 0xe5, 0xa8, 0x19, 0x5a,
84320 + 0x8a, 0xfb, 0xe3, 0xe2, 0xf7, 0x7e, 0xf4, 0xe7, 0x3c, 0xa8, 0x1c, 0x22,
84321 + 0x77, 0x61, 0xd9, 0xa9, 0x50, 0x31, 0x1e, 0xa9, 0x69, 0xc3, 0xf5, 0x83,
84322 + 0x05, 0x85, 0x0f, 0xce, 0xd9, 0x99, 0x43, 0xf3, 0x54, 0x4c, 0x9f, 0x4b,
84323 + 0x67, 0x02, 0xe8, 0xa3, 0x4d, 0xab, 0x69, 0x05, 0x75, 0x7a, 0x88, 0xf9,
84324 + 0x5f, 0x1b, 0x7a, 0xa9, 0x8b, 0xf9, 0xe9, 0x26, 0x3c, 0x31, 0xd1, 0x88,
84325 + 0x79, 0xbb, 0x4c, 0x3c, 0x4e, 0xdb, 0x0f, 0xef, 0xba, 0x11, 0x7b, 0x58,
84326 + 0xee, 0x15, 0x3e, 0x7b, 0x65, 0x7f, 0x03, 0xaf, 0x10, 0xaf, 0x46, 0x5e,
84327 + 0xf5, 0x18, 0xd8, 0xab, 0x97, 0xce, 0x61, 0x78, 0xd0, 0x30, 0x24, 0xf8,
84328 + 0xa2, 0xe2, 0x8e, 0x76, 0x05, 0xc6, 0xd5, 0x6c, 0x73, 0xe1, 0x87, 0x61,
84329 + 0x4d, 0xc3, 0x1f, 0xd0, 0xef, 0x1f, 0x38, 0x53, 0xe7, 0xed, 0xc7, 0x0f,
84330 + 0x6f, 0xfa, 0xfb, 0xae, 0xfd, 0x2c, 0x28, 0x48, 0x3b, 0xef, 0x12, 0x33,
84331 + 0xc4, 0x86, 0x7e, 0x17, 0x9e, 0x95, 0xf5, 0xfe, 0xdb, 0x67, 0x2b, 0x70,
84332 + 0xde, 0xbe, 0x2e, 0x5a, 0x77, 0x47, 0x9e, 0x36, 0xb1, 0xc3, 0x3d, 0x3b,
84333 + 0x22, 0xb9, 0x4e, 0xa4, 0x2b, 0x47, 0xfd, 0xf4, 0x33, 0x87, 0xb9, 0x87,
84334 + 0x38, 0xb1, 0x3d, 0x13, 0xb1, 0x2c, 0xb6, 0xe5, 0x23, 0x36, 0x3c, 0x30,
84335 + 0xe8, 0x97, 0xf5, 0x6e, 0xcd, 0xa7, 0xcf, 0xc3, 0x3b, 0x39, 0xb1, 0xf9,
84336 + 0x2a, 0x1c, 0xce, 0x86, 0x71, 0xca, 0xfd, 0x5c, 0xcd, 0x58, 0xe3, 0xa0,
84337 + 0xd3, 0x98, 0x85, 0xbe, 0x60, 0x15, 0x06, 0x62, 0x37, 0x22, 0x77, 0x07,
84338 + 0x73, 0x6c, 0xfa, 0x58, 0xad, 0xee, 0x47, 0x3a, 0x28, 0xf9, 0x8b, 0x07,
84339 + 0x99, 0xd8, 0xed, 0x38, 0x5e, 0xef, 0xc5, 0x3c, 0x59, 0x6f, 0xe1, 0xb3,
84340 + 0x3d, 0x41, 0x28, 0xf4, 0xbd, 0xa4, 0x8f, 0xb8, 0x34, 0x6b, 0x00, 0x4e,
84341 + 0xad, 0xa9, 0xcb, 0x1e, 0x4c, 0xcf, 0x56, 0xe2, 0x52, 0xcd, 0x44, 0x0d,
84342 + 0xe3, 0x4e, 0x0b, 0xaa, 0xf7, 0xca, 0x5e, 0x40, 0x00, 0xeb, 0x86, 0xaf,
84343 + 0x95, 0xbd, 0x81, 0x98, 0xa6, 0x04, 0x70, 0xef, 0xb0, 0xc4, 0x8f, 0x35,
84344 + 0xa8, 0xd8, 0x5f, 0x8b, 0x2f, 0x66, 0xbd, 0xc4, 0x78, 0xe2, 0x0d, 0xcb,
84345 + 0xed, 0xc9, 0xd4, 0xa1, 0xee, 0xb1, 0x67, 0x9d, 0x30, 0x75, 0x5c, 0xb7,
84346 + 0x57, 0xb0, 0x88, 0xb6, 0x9b, 0xf9, 0x3c, 0x0a, 0x76, 0x33, 0xe5, 0xf6,
84347 + 0x70, 0x7c, 0x21, 0xbc, 0x4b, 0xec, 0xaa, 0x99, 0x08, 0xe3, 0x9d, 0xdd,
84348 + 0x92, 0xab, 0x24, 0xe1, 0x9d, 0xb8, 0x0c, 0x6f, 0xf2, 0xf3, 0x09, 0xa3,
84349 + 0x13, 0xea, 0x44, 0x13, 0x4e, 0x66, 0xba, 0xe0, 0x99, 0xa8, 0x2d, 0x62,
84350 + 0xd8, 0x5e, 0x3f, 0xea, 0x06, 0xf5, 0xd8, 0x34, 0xe7, 0xc8, 0xb7, 0x97,
84351 + 0x04, 0xa7, 0x51, 0xda, 0x3f, 0x6f, 0xdb, 0xc6, 0x85, 0x7d, 0x87, 0xf2,
84352 + 0xd9, 0x15, 0xb1, 0xef, 0xef, 0x3a, 0x4f, 0x04, 0xd9, 0xbf, 0x8e, 0x08,
84353 + 0xfa, 0x62, 0xc7, 0x64, 0x3f, 0x9f, 0xe3, 0x4b, 0x72, 0xee, 0x9f, 0x77,
84354 + 0xe4, 0x5c, 0x88, 0xcf, 0x94, 0x33, 0x19, 0xcf, 0x39, 0xdb, 0x57, 0xcb,
84355 + 0xfd, 0xdb, 0xab, 0x50, 0xcd, 0xc4, 0xc9, 0x14, 0x99, 0x3b, 0x64, 0x6e,
84356 + 0x19, 0x75, 0x3e, 0x4c, 0xe6, 0x3f, 0x3a, 0x8f, 0x9f, 0x2f, 0x8f, 0xa0,
84357 + 0xcf, 0x5d, 0x13, 0xbf, 0xe0, 0xcb, 0x35, 0x9c, 0xbb, 0xf5, 0x25, 0x5f,
84358 + 0x7e, 0xc7, 0x96, 0xf9, 0x93, 0xf3, 0x4b, 0x01, 0x72, 0x30, 0x03, 0xd5,
84359 + 0x9c, 0xbb, 0xf7, 0x6d, 0x28, 0xb7, 0x76, 0x74, 0x63, 0xd6, 0x44, 0x80,
84360 + 0xbe, 0x1e, 0x59, 0x6f, 0xc1, 0x66, 0x5b, 0x1d, 0xa8, 0x62, 0x9d, 0x93,
84361 + 0xb6, 0x87, 0x7e, 0x9e, 0xe0, 0x98, 0x83, 0x70, 0x5c, 0x5e, 0xbf, 0x1a,
84362 + 0xf3, 0xa9, 0xa7, 0xb3, 0xb6, 0x89, 0x79, 0xd4, 0xd3, 0xb4, 0xed, 0x25,
84363 + 0x4e, 0x34, 0x11, 0x0f, 0x34, 0xd4, 0x12, 0x1b, 0x2b, 0x06, 0x1d, 0x1c,
84364 + 0x32, 0xea, 0xc8, 0xf5, 0xc5, 0x4e, 0x3b, 0x10, 0x1e, 0x30, 0x30, 0x6f,
84365 + 0xa0, 0x79, 0xe3, 0x3c, 0x8f, 0x07, 0xc7, 0x7d, 0xc5, 0xd8, 0x93, 0x9b,
84366 + 0x23, 0xfa, 0x91, 0x31, 0xb9, 0xb9, 0xfc, 0x87, 0x60, 0xc0, 0x6a, 0x80,
84367 + 0xb2, 0x0a, 0xc4, 0x8c, 0xcf, 0xb1, 0xad, 0x37, 0xec, 0x57, 0x71, 0xf3,
84368 + 0x84, 0xe0, 0xcb, 0x0f, 0xb1, 0x92, 0xfd, 0x78, 0x97, 0xb8, 0x76, 0x5f,
84369 + 0xf4, 0x1b, 0x1c, 0x6b, 0x13, 0x6e, 0x99, 0x98, 0x3e, 0xd7, 0xe7, 0x8e,
84370 + 0xb3, 0x9c, 0xff, 0xf9, 0x71, 0x5f, 0xb6, 0x7c, 0x06, 0x2d, 0x49, 0x9f,
84371 + 0x91, 0x38, 0xe1, 0x87, 0xf8, 0x4d, 0xb7, 0xbd, 0x0d, 0xc5, 0x78, 0x2e,
84372 + 0x57, 0x59, 0x8f, 0x3b, 0xbd, 0x92, 0x97, 0x17, 0x7d, 0x43, 0xfa, 0xf3,
84373 + 0xbb, 0xca, 0x14, 0x7d, 0x43, 0xfc, 0xe2, 0xcb, 0xae, 0x7e, 0x85, 0x77,
84374 + 0x69, 0xb8, 0x6d, 0xe2, 0x97, 0xc4, 0xc7, 0x48, 0x32, 0x47, 0xcc, 0x7e,
84375 + 0x9d, 0xfa, 0xdd, 0x4e, 0xfd, 0x32, 0x07, 0x60, 0xbc, 0x4a, 0x50, 0x9f,
84376 + 0x3e, 0x72, 0x15, 0x2f, 0x31, 0xd3, 0xa4, 0x2e, 0x41, 0x0c, 0x64, 0xee,
84377 + 0x1e, 0x2c, 0x8e, 0x37, 0x77, 0x7e, 0xfe, 0xd8, 0x96, 0x92, 0xc0, 0x09,
84378 + 0xfb, 0x87, 0x55, 0x72, 0x26, 0xe8, 0xa4, 0xed, 0x3e, 0x97, 0x35, 0xcd,
84379 + 0x19, 0x65, 0x2e, 0xb4, 0xbd, 0xcf, 0x16, 0xfe, 0x5c, 0x49, 0xbb, 0xd6,
84380 + 0x28, 0xaf, 0xa6, 0x84, 0xa9, 0x52, 0x57, 0xf6, 0x60, 0xa5, 0xfd, 0x6e,
84381 + 0xe1, 0x20, 0x78, 0x83, 0x3e, 0x77, 0xc4, 0xa8, 0xc0, 0xa8, 0x3b, 0x17,
84382 + 0x62, 0x8f, 0xc5, 0x76, 0x2f, 0xd8, 0x4d, 0xba, 0xae, 0x74, 0x1e, 0xab,
84383 + 0xba, 0xc8, 0xc9, 0x2e, 0x6d, 0xa3, 0xe2, 0x3f, 0xb1, 0x8d, 0x44, 0xa9,
84384 + 0x8d, 0x8f, 0x3a, 0xe3, 0x06, 0x3c, 0x65, 0x4b, 0xec, 0x97, 0xfd, 0x0f,
84385 + 0x0d, 0x8b, 0x26, 0x04, 0x5f, 0xe8, 0xbb, 0x03, 0xd3, 0x2e, 0xf7, 0xcf,
84386 + 0x41, 0xf6, 0xb6, 0x42, 0xf0, 0x45, 0x35, 0x9c, 0xd2, 0x63, 0x58, 0x58,
84387 + 0x90, 0xfd, 0xa9, 0x7d, 0x75, 0xc2, 0xe1, 0xce, 0xe8, 0xc2, 0x3b, 0x64,
84388 + 0xbe, 0xca, 0xf7, 0xfc, 0xd8, 0xaf, 0x17, 0xfb, 0x9a, 0x54, 0x8b, 0xdc,
84389 + 0xd1, 0x43, 0xee, 0xd8, 0x6b, 0xf8, 0x69, 0x97, 0xad, 0xc1, 0xd9, 0xbf,
84390 + 0x73, 0x2f, 0xab, 0xdc, 0xdf, 0xdf, 0x57, 0xee, 0xc2, 0x7a, 0x5c, 0xf6,
84391 + 0xa2, 0xfd, 0x21, 0x19, 0xd3, 0x5c, 0xa0, 0x41, 0xe2, 0x55, 0x91, 0xa3,
84392 + 0x6e, 0x3d, 0x9f, 0xff, 0x58, 0xca, 0x60, 0xfe, 0x31, 0xd4, 0xeb, 0x0b,
84393 + 0x50, 0xdf, 0x50, 0xc3, 0xb8, 0x1c, 0xed, 0xa2, 0x7b, 0x4b, 0x2c, 0xb3,
84394 + 0x82, 0xa6, 0xe4, 0xbf, 0xc2, 0x5b, 0xa5, 0xcd, 0x7e, 0xa5, 0xaa, 0x20,
84395 + 0xed, 0x1e, 0x54, 0xfc, 0x85, 0x0f, 0x6b, 0x5b, 0xce, 0xfb, 0x4d, 0x9f,
84396 + 0x1b, 0xca, 0x74, 0xbb, 0x7b, 0x8c, 0xcb, 0x86, 0x1c, 0xdc, 0x69, 0x34,
84397 + 0xe1, 0xee, 0x06, 0x69, 0xa3, 0x98, 0xc3, 0x68, 0xea, 0x34, 0x39, 0xdc,
84398 + 0x6f, 0x1c, 0x55, 0x97, 0xcf, 0x3e, 0x78, 0x1e, 0xd3, 0xa7, 0xd7, 0x42,
84399 + 0xc5, 0xd9, 0xeb, 0x24, 0x9f, 0xf1, 0x91, 0x7f, 0x6d, 0xaa, 0x2e, 0xee,
84400 + 0x2f, 0x8b, 0x1d, 0x4b, 0x3f, 0xfc, 0xf4, 0xb3, 0x0b, 0xfd, 0xd8, 0xf6,
84401 + 0x07, 0xf5, 0xc3, 0x8f, 0x9b, 0x86, 0x92, 0x18, 0x35, 0x4e, 0x38, 0x56,
84402 + 0x68, 0x66, 0xdb, 0x3e, 0xac, 0x1c, 0xfa, 0x8d, 0x33, 0xcb, 0x6d, 0x5b,
84403 + 0x27, 0xa7, 0x52, 0xf1, 0xc0, 0x12, 0x1f, 0x6e, 0x1d, 0x89, 0x62, 0xc5,
84404 + 0x90, 0x8a, 0xd8, 0x12, 0xe9, 0x43, 0x14, 0x5d, 0x23, 0xbb, 0xbd, 0xc5,
84405 + 0xf2, 0xc0, 0x2d, 0x1c, 0xc3, 0x1b, 0x46, 0x0d, 0x7e, 0x40, 0x0c, 0xac,
84406 + 0x75, 0xb9, 0xfd, 0x46, 0x25, 0x23, 0xdc, 0xde, 0xa7, 0x62, 0xb6, 0x8e,
84407 + 0x60, 0x83, 0x99, 0xa4, 0xee, 0x3a, 0x95, 0xc7, 0x72, 0x1b, 0x95, 0xa1,
84408 + 0x7c, 0xb9, 0xef, 0x01, 0x7c, 0xa2, 0x10, 0xc4, 0x27, 0xc6, 0x1a, 0x78,
84409 + 0x85, 0x78, 0x35, 0xf2, 0x7a, 0xf1, 0xfc, 0xb8, 0xca, 0x67, 0x3c, 0x9f,
84410 + 0x65, 0x4e, 0xb1, 0xcd, 0xf5, 0x4b, 0x89, 0x0b, 0x9a, 0x9c, 0xd5, 0xc1,
84411 + 0x5b, 0x59, 0xc9, 0x27, 0xb6, 0xd1, 0x86, 0x65, 0x4d, 0xb8, 0x92, 0x39,
84412 + 0x45, 0x24, 0x36, 0x85, 0xbf, 0xaa, 0x2e, 0xce, 0x7d, 0xd1, 0x86, 0x71,
84413 + 0xde, 0x86, 0x7d, 0x78, 0x3b, 0xab, 0xa2, 0x25, 0xfe, 0x6f, 0xce, 0xf1,
84414 + 0xa0, 0xe0, 0xc9, 0xa5, 0xcf, 0xcb, 0x9c, 0x65, 0xfa, 0x5c, 0x36, 0xd3,
84415 + 0x34, 0x63, 0x5f, 0x56, 0x41, 0xc5, 0x90, 0xf0, 0xf3, 0xeb, 0x5c, 0xbe,
84416 + 0xf7, 0x7d, 0xc3, 0x07, 0xef, 0xd0, 0xa1, 0x2b, 0xe5, 0x68, 0x93, 0x6f,
84417 + 0x8c, 0x71, 0xab, 0x83, 0xf3, 0x32, 0xf2, 0xf1, 0x92, 0xce, 0xca, 0xba,
84418 + 0x50, 0xdc, 0x35, 0x49, 0xd5, 0x8d, 0xe9, 0x41, 0xa8, 0x63, 0xc2, 0x43,
84419 + 0xc9, 0x0d, 0xc6, 0x24, 0x1f, 0x08, 0xf1, 0xbf, 0xe4, 0x06, 0x8d, 0xfc,
84420 + 0xcf, 0xc4, 0xa2, 0x51, 0xe2, 0x78, 0x0f, 0xfa, 0x19, 0x9f, 0x2a, 0xa3,
84421 + 0x3d, 0xd8, 0x3e, 0xfe, 0x61, 0x31, 0xbf, 0x98, 0x63, 0x3d, 0x7b, 0xde,
84422 + 0xcf, 0xdc, 0x39, 0x62, 0x9f, 0xa6, 0xcf, 0x89, 0xcf, 0xc8, 0x5c, 0xed,
84423 + 0xcb, 0x4a, 0x1f, 0x1c, 0x6c, 0x30, 0x6e, 0x64, 0xdb, 0x3e, 0xa8, 0x0d,
84424 + 0x33, 0xb9, 0xe7, 0x79, 0x3e, 0x4d, 0xdd, 0x6d, 0x54, 0x46, 0x39, 0x27,
84425 + 0x96, 0xb7, 0x52, 0xd6, 0x87, 0x82, 0x15, 0x9c, 0x93, 0xaf, 0xe4, 0x45,
84426 + 0x46, 0xa7, 0x32, 0x9e, 0x9b, 0x59, 0x67, 0xa3, 0x32, 0x96, 0xff, 0x55,
84427 + 0xb5, 0xac, 0x99, 0x5f, 0xd0, 0x4d, 0xb9, 0x0f, 0x62, 0x63, 0x1a, 0xea,
84428 + 0xd3, 0xa2, 0x67, 0x19, 0xb3, 0x06, 0x2f, 0x79, 0x5c, 0x7d, 0xe1, 0x43,
84429 + 0xdb, 0x6c, 0xac, 0x72, 0xcf, 0x62, 0xc6, 0x18, 0x8b, 0x02, 0x56, 0x25,
84430 + 0x39, 0x1f, 0x6d, 0x34, 0xe5, 0x33, 0xbb, 0x3a, 0xf7, 0xd9, 0x0b, 0x83,
84431 + 0x87, 0x4b, 0x6b, 0x11, 0x6b, 0x21, 0xbc, 0x54, 0x71, 0x71, 0xd6, 0xa3,
84432 + 0x47, 0xb1, 0x9c, 0xb9, 0xee, 0x4d, 0xb9, 0x62, 0x7f, 0xc7, 0xd8, 0xdf,
84433 + 0x29, 0xd7, 0xf7, 0x92, 0xca, 0x68, 0x5e, 0x75, 0xfb, 0xed, 0x35, 0xa5,
84434 + 0xbf, 0x52, 0x97, 0xe3, 0xc9, 0xbf, 0x56, 0xca, 0xa9, 0x92, 0x18, 0xcc,
84435 + 0xcc, 0xf4, 0x61, 0xe9, 0x73, 0x2d, 0xda, 0x86, 0x3e, 0xa0, 0x9f, 0xc9,
84436 + 0xbc, 0x0a, 0xfe, 0xcc, 0xc3, 0xca, 0x91, 0x59, 0x68, 0x1d, 0x0a, 0xe3,
84437 + 0xb6, 0x91, 0x06, 0x2c, 0xda, 0xb5, 0x06, 0xd5, 0x63, 0x41, 0x5c, 0xb9,
84438 + 0x4b, 0xd6, 0xf8, 0x57, 0xa3, 0xb2, 0x70, 0x5b, 0x8d, 0xe4, 0xb8, 0x7a,
84439 + 0x3a, 0xc1, 0xf9, 0x4b, 0xa0, 0x22, 0x1d, 0x49, 0x24, 0x21, 0x6b, 0xa4,
84440 + 0x26, 0x2a, 0x0a, 0x26, 0xf9, 0xa4, 0xb3, 0x79, 0xbe, 0xe9, 0x73, 0xcf,
84441 + 0x9b, 0x2d, 0x2b, 0xd0, 0xe6, 0x39, 0x6e, 0x1f, 0x2f, 0x4f, 0xda, 0x71,
84442 + 0xce, 0x5e, 0x87, 0xcd, 0x35, 0x66, 0x13, 0x3c, 0x85, 0xcb, 0x91, 0x1c,
84443 + 0x69, 0xc3, 0xbc, 0x42, 0x03, 0x3a, 0x47, 0x42, 0x88, 0xa5, 0xc5, 0xc7,
84444 + 0x23, 0x5a, 0x4a, 0xed, 0x80, 0xbf, 0xc0, 0x78, 0x9a, 0xfe, 0x8d, 0xf3,
84445 + 0x16, 0xed, 0xa0, 0x87, 0xfa, 0xba, 0x26, 0xdd, 0x85, 0xba, 0x42, 0x00,
84446 + 0x57, 0x0f, 0x7d, 0x02, 0xb5, 0x23, 0x7e, 0xcc, 0x1a, 0xd2, 0x90, 0x5f,
84447 + 0xe2, 0x47, 0x60, 0x24, 0x8c, 0xea, 0xb4, 0xde, 0x75, 0x9b, 0x82, 0xe4,
84448 + 0xc2, 0x25, 0x61, 0xb6, 0x4d, 0x7b, 0xa3, 0x7f, 0x8d, 0x90, 0x7f, 0x2d,
84449 + 0xef, 0x06, 0x36, 0xa7, 0x05, 0x1b, 0x45, 0x27, 0x9f, 0x72, 0xcf, 0x9f,
84450 + 0xac, 0x4b, 0x7f, 0x18, 0xce, 0x95, 0xed, 0x5b, 0xfc, 0xdc, 0x72, 0xcf,
84451 + 0xc4, 0x32, 0x07, 0x52, 0xa6, 0x5b, 0xf4, 0xec, 0x3c, 0xde, 0xfb, 0x39,
84452 + 0xe3, 0xf3, 0x43, 0xe9, 0x80, 0x55, 0x6b, 0x6e, 0xc6, 0x55, 0xed, 0x11,
84453 + 0xab, 0xa0, 0xbc, 0xca, 0xf1, 0xff, 0x90, 0x41, 0xbb, 0x89, 0xfd, 0xfc,
84454 + 0x63, 0xe5, 0x5f, 0xba, 0xce, 0xb6, 0xe4, 0xa2, 0xf5, 0xb9, 0x23, 0xcc,
84455 + 0xe7, 0xa7, 0x2e, 0x5a, 0x9f, 0x13, 0xbc, 0x2f, 0x9f, 0x83, 0x90, 0xb9,
84456 + 0xd2, 0x66, 0xd8, 0xb7, 0xac, 0x17, 0x09, 0x36, 0xca, 0x7c, 0x95, 0xd7,
84457 + 0x8b, 0x7c, 0x58, 0x3e, 0x24, 0xb9, 0x92, 0xca, 0x3c, 0xa1, 0x05, 0xc9,
84458 + 0xd0, 0xa3, 0x9c, 0x03, 0x77, 0x4d, 0x89, 0xf7, 0x06, 0xf8, 0x59, 0xd6,
84459 + 0x7b, 0x34, 0xe2, 0x8f, 0x56, 0xca, 0x0b, 0xaa, 0x70, 0xeb, 0x50, 0x83,
84460 + 0xbb, 0x1f, 0xb5, 0x22, 0x7e, 0x39, 0x62, 0xf5, 0x5f, 0x62, 0x99, 0x0b,
84461 + 0x6b, 0x43, 0x57, 0x31, 0xdf, 0xa8, 0x71, 0xcf, 0x4a, 0x2c, 0xa3, 0xbe,
84462 + 0x2f, 0x47, 0xdb, 0x48, 0x11, 0xcf, 0x6e, 0x1b, 0x29, 0xe2, 0x56, 0x5a,
84463 + 0x6c, 0xce, 0x57, 0xb4, 0xb9, 0x2c, 0x6d, 0x2e, 0xa8, 0x77, 0x2a, 0xd9,
84464 + 0xdc, 0x47, 0xc5, 0x13, 0x04, 0xeb, 0xcc, 0xf2, 0x99, 0x6a, 0x62, 0x5e,
84465 + 0xfe, 0x48, 0xcd, 0x1f, 0x16, 0x7f, 0x2e, 0xd5, 0xd9, 0xb5, 0x7f, 0xa4,
84466 + 0xce, 0xca, 0x31, 0xeb, 0x82, 0xce, 0x06, 0x2f, 0xd1, 0xd9, 0x02, 0xea,
84467 + 0xa0, 0x41, 0x2f, 0xea, 0x6d, 0xb9, 0x71, 0x19, 0x52, 0xae, 0xde, 0xaa,
84468 + 0x64, 0x6d, 0x8c, 0xf7, 0x04, 0xaf, 0xe7, 0xe0, 0xfb, 0xc1, 0x2f, 0xb9,
84469 + 0xf7, 0x16, 0x51, 0x27, 0x45, 0x7d, 0x05, 0xa9, 0xaf, 0x0b, 0xb1, 0x00,
84470 + 0xea, 0x07, 0xcc, 0xa7, 0x8a, 0xb1, 0x40, 0x74, 0xf7, 0xda, 0xa0, 0x86,
84471 + 0xba, 0xeb, 0x2e, 0xc7, 0x2b, 0x7b, 0xab, 0xd0, 0x3e, 0xe2, 0xa3, 0x7f,
84472 + 0x49, 0x7c, 0x28, 0xc6, 0xa4, 0xd6, 0x11, 0x77, 0x3f, 0x8a, 0xf8, 0xda,
84473 + 0x10, 0xf8, 0xc3, 0x63, 0xb0, 0x8c, 0x47, 0xce, 0xe5, 0xc9, 0xb9, 0x39,
84474 + 0x19, 0x97, 0x3e, 0xc3, 0x16, 0x1c, 0xe7, 0x19, 0xce, 0x77, 0xaa, 0x21,
84475 + 0x92, 0x95, 0xf5, 0xa6, 0x2c, 0x39, 0x99, 0x27, 0x2d, 0x3a, 0x13, 0xbe,
84476 + 0xad, 0xde, 0xe8, 0x81, 0xda, 0xe6, 0xc1, 0x66, 0x9c, 0x32, 0xf4, 0xfe,
84477 + 0x7b, 0xf1, 0x27, 0xe8, 0x0d, 0x39, 0xd8, 0x6f, 0xac, 0x64, 0x3e, 0x51,
84478 + 0x8d, 0xf5, 0x6d, 0x34, 0xcf, 0x3b, 0x3a, 0x88, 0x09, 0x56, 0x8f, 0x07,
84479 + 0xb2, 0x9e, 0xbb, 0xf1, 0x2e, 0x3b, 0x1a, 0xe9, 0x7e, 0x50, 0x01, 0x56,
84480 + 0x0c, 0xf8, 0xa1, 0x29, 0x2e, 0xdf, 0x89, 0x0d, 0xa9, 0xb2, 0xb6, 0xfc,
84481 + 0x2f, 0x15, 0xc5, 0xb3, 0x10, 0x2a, 0xb4, 0x46, 0x69, 0x67, 0x25, 0xac,
84482 + 0xc9, 0x0e, 0x17, 0x4f, 0x6a, 0x16, 0x2a, 0xb8, 0x75, 0x61, 0xc4, 0x4a,
84483 + 0x29, 0x8e, 0xb3, 0x2a, 0xee, 0x75, 0x9f, 0xef, 0x98, 0x6c, 0x4d, 0xdd,
84484 + 0xa9, 0xfe, 0x8b, 0x63, 0xb9, 0xeb, 0xd9, 0x91, 0x60, 0x52, 0x65, 0x9f,
84485 + 0x3f, 0xf2, 0xac, 0xa2, 0x8c, 0x93, 0x5c, 0x9c, 0xbc, 0xfb, 0xc9, 0xd2,
84486 + 0xfa, 0xaf, 0xcf, 0x5c, 0xff, 0x17, 0xfb, 0x75, 0xc9, 0xf7, 0xbe, 0xe4,
84487 + 0x9e, 0xfb, 0xc8, 0x66, 0x64, 0xfd, 0xf0, 0xe1, 0x00, 0xaa, 0x57, 0xa2,
84488 + 0x77, 0xf2, 0x3a, 0x4c, 0xb4, 0xfd, 0xab, 0x93, 0x2b, 0xf6, 0x5d, 0xcc,
84489 + 0xd0, 0x3f, 0xcf, 0xcc, 0xdd, 0x75, 0x7d, 0x4b, 0x84, 0x1c, 0x5c, 0xce,
84490 + 0x7a, 0x92, 0x0b, 0x2b, 0x45, 0x1e, 0x3e, 0x5f, 0xbf, 0x09, 0xcf, 0x5e,
84491 + 0x24, 0x53, 0xd6, 0x12, 0xca, 0x32, 0x77, 0x51, 0x9e, 0xc8, 0x65, 0x3c,
84492 + 0xd0, 0xff, 0xcd, 0x19, 0x09, 0xcd, 0x2c, 0x17, 0xab, 0x2a, 0xc6, 0x2a,
84493 + 0x29, 0x57, 0x6e, 0xb7, 0x82, 0xf5, 0xde, 0x77, 0x46, 0x2f, 0x2a, 0xf7,
84494 + 0xd3, 0x52, 0xb9, 0x67, 0x02, 0x72, 0x66, 0x24, 0x9b, 0x11, 0xce, 0x7a,
84495 + 0xca, 0x19, 0xbb, 0xa8, 0x4c, 0x4b, 0xf5, 0xc5, 0x65, 0x9a, 0x89, 0xd1,
84496 + 0xff, 0xaf, 0x33, 0x7e, 0x51, 0x99, 0xe4, 0x25, 0x65, 0x16, 0x10, 0x13,
84497 + 0xbf, 0xef, 0xec, 0xbb, 0xa8, 0x4c, 0xed, 0x25, 0x65, 0x16, 0xd3, 0x1e,
84498 + 0x9f, 0x71, 0x0e, 0x5c, 0x54, 0x66, 0xcc, 0x7f, 0x71, 0x19, 0xd9, 0xe3,
84499 + 0x58, 0xff, 0x17, 0x5b, 0xf4, 0x75, 0x25, 0x9f, 0xbb, 0x70, 0xbf, 0x58,
84500 + 0xfe, 0xf1, 0x4b, 0xfa, 0x1f, 0xb1, 0x64, 0xbe, 0x7d, 0xed, 0xe5, 0xf9,
84501 + 0x7e, 0xb8, 0x74, 0xff, 0x7b, 0x35, 0x17, 0x97, 0xbb, 0x22, 0x70, 0x69,
84502 + 0x3b, 0x45, 0x79, 0x47, 0x2f, 0x69, 0xff, 0xe6, 0xca, 0x8b, 0xbf, 0xbf,
84503 + 0x5d, 0x51, 0xfc, 0x5e, 0xd6, 0xe9, 0xa1, 0x4b, 0x9e, 0xff, 0x7d, 0xc5,
84504 + 0xc5, 0xdf, 0x37, 0x54, 0x7e, 0x78, 0x3b, 0xb5, 0x97, 0xb4, 0xa3, 0xf4,
84505 + 0xca, 0xbb, 0x38, 0x1e, 0x53, 0xad, 0xed, 0xed, 0x58, 0x7f, 0x43, 0x2a,
84506 + 0xbf, 0x89, 0xf6, 0x29, 0xb6, 0xf5, 0xe0, 0x0d, 0x6b, 0xf3, 0x6f, 0xcd,
84507 + 0xe0, 0xb1, 0xcb, 0xc2, 0x41, 0x7c, 0x1c, 0x6b, 0xdd, 0xbd, 0x34, 0x95,
84508 + 0x38, 0x69, 0xb9, 0xb6, 0x40, 0x8e, 0xe9, 0x57, 0xcc, 0x14, 0x0c, 0xf7,
84509 + 0xbc, 0xe5, 0x3a, 0x34, 0xe7, 0xdd, 0x3d, 0xbb, 0x58, 0x0a, 0xcf, 0xaa,
84510 + 0x5d, 0xba, 0x55, 0x3a, 0x47, 0x67, 0x5d, 0x1f, 0x44, 0x72, 0x66, 0x7e,
84511 + 0xaa, 0x8d, 0x23, 0x12, 0xde, 0x86, 0x75, 0xee, 0x59, 0x6b, 0xc5, 0xec,
84512 + 0x29, 0x9d, 0xd7, 0x5c, 0x03, 0x3d, 0x5f, 0xe6, 0x4d, 0xb2, 0x9e, 0x2b,
84513 + 0xe7, 0x19, 0x1c, 0xfa, 0xa0, 0xc4, 0xf9, 0x83, 0x8a, 0x3a, 0xe0, 0xae,
84514 + 0x99, 0xae, 0xf6, 0x20, 0x9a, 0xe8, 0x54, 0x90, 0xaa, 0x32, 0xa3, 0xda,
84515 + 0xdb, 0x25, 0x4c, 0xf3, 0x4d, 0x6c, 0x51, 0x2a, 0x26, 0xfa, 0x15, 0xef,
84516 + 0x44, 0x11, 0xd3, 0x3c, 0x13, 0xb2, 0xb6, 0xd0, 0xc0, 0x32, 0x41, 0xb4,
84517 + 0x2c, 0xf1, 0xe2, 0x3b, 0x76, 0xad, 0xfb, 0x1e, 0xc7, 0xd6, 0x25, 0x15,
84518 + 0x78, 0x20, 0xae, 0xa0, 0xeb, 0xaa, 0xc3, 0x78, 0x2b, 0x2f, 0xeb, 0x6c,
84519 + 0x56, 0x7c, 0x94, 0x6d, 0x1e, 0xb2, 0x65, 0xbd, 0x74, 0x4b, 0x7c, 0xc4,
84520 + 0x6d, 0xff, 0xf3, 0xe8, 0x73, 0xf7, 0xad, 0xba, 0x9d, 0xed, 0x99, 0x1e,
84521 + 0x67, 0x1b, 0x73, 0x8d, 0x82, 0xdd, 0x90, 0xaa, 0x63, 0xfd, 0xb7, 0x96,
84522 + 0xac, 0xc7, 0x69, 0x96, 0x99, 0xb0, 0x1f, 0xc4, 0xfb, 0xf9, 0x20, 0xf2,
84523 + 0xf6, 0x4a, 0x7c, 0x37, 0x1f, 0x60, 0xce, 0xd7, 0x85, 0xef, 0xe4, 0x57,
84524 + 0xe3, 0xc5, 0x61, 0xf7, 0x7d, 0x29, 0x2c, 0xb3, 0x15, 0xac, 0x88, 0xae,
84525 + 0xc6, 0xb1, 0xd1, 0xd5, 0x38, 0x3c, 0x2c, 0xef, 0x0e, 0xcc, 0x25, 0x8f,
84526 + 0x2c, 0xda, 0x9b, 0x4a, 0x8c, 0x59, 0x66, 0xaf, 0xc2, 0xa1, 0xd1, 0x30,
84527 + 0x73, 0x29, 0x03, 0x27, 0xf3, 0x21, 0x8c, 0xd8, 0x6d, 0x38, 0x91, 0x0f,
84528 + 0xe3, 0xeb, 0x76, 0x02, 0x67, 0xf9, 0xfd, 0xa0, 0x2d, 0x9c, 0xa5, 0x03,
84529 + 0xd3, 0xf9, 0x6f, 0x32, 0xcf, 0x99, 0x87, 0x23, 0xdd, 0xcf, 0x30, 0x1c,
84530 + 0x1d, 0xe4, 0xd5, 0x85, 0x13, 0xa3, 0x5d, 0x38, 0x35, 0x7c, 0x2b, 0x4e,
84531 + 0x8d, 0xfe, 0x18, 0x6f, 0x0d, 0x4b, 0x7f, 0xe5, 0xfc, 0xb7, 0xc8, 0xd5,
84532 + 0x29, 0x77, 0x35, 0xa6, 0x46, 0xff, 0x18, 0xd9, 0xef, 0x3a, 0x47, 0x56,
84533 + 0x8b, 0xdc, 0x67, 0x7e, 0x87, 0x6c, 0xd1, 0xa5, 0x60, 0xbf, 0x1f, 0xc7,
84534 + 0x6c, 0x3f, 0x8e, 0xda, 0x53, 0x57, 0x56, 0x61, 0xea, 0x7a, 0x22, 0x1d,
84535 + 0xb6, 0xe7, 0x2b, 0xf1, 0x5c, 0x56, 0xd6, 0xd8, 0x3e, 0x86, 0x64, 0x70,
84536 + 0x23, 0xb6, 0x4e, 0x56, 0xe2, 0x3b, 0x59, 0x3f, 0x75, 0x7c, 0x3d, 0x92,
84537 + 0xf5, 0xab, 0xa9, 0xbf, 0x00, 0x5e, 0xb2, 0x43, 0x78, 0xd9, 0x6e, 0x4d,
84538 + 0x15, 0x94, 0x76, 0x58, 0x2e, 0xfe, 0x07, 0xa8, 0xef, 0x0d, 0x6e, 0x9f,
84539 + 0xbe, 0x63, 0x77, 0x3b, 0x5b, 0xa9, 0xe3, 0xfe, 0xcc, 0xe7, 0xdd, 0xb3,
84540 + 0xdb, 0x2f, 0xda, 0xd3, 0x8e, 0xbc, 0x93, 0xf1, 0x14, 0x75, 0x7a, 0xcc,
84541 + 0x4e, 0x91, 0xdb, 0x35, 0x71, 0x8e, 0xa6, 0x30, 0x4a, 0xbb, 0x3c, 0x99,
84542 + 0xd5, 0x8f, 0xae, 0xc5, 0x26, 0x9c, 0xcd, 0x55, 0xe2, 0x35, 0xb6, 0x51,
84543 + 0xb7, 0xd8, 0x8b, 0xe3, 0xae, 0xbc, 0x4d, 0x78, 0x3f, 0xab, 0x30, 0xde,
84544 + 0x6e, 0xc2, 0x7b, 0x7c, 0xf6, 0x0a, 0x3f, 0x9f, 0x8e, 0xb3, 0x87, 0xa5,
84545 + 0x67, 0xa7, 0xc8, 0xcf, 0x65, 0xcd, 0xa8, 0xb7, 0x63, 0x13, 0x4e, 0xe4,
84546 + 0xde, 0x23, 0xa7, 0x75, 0xf0, 0x45, 0x63, 0x36, 0x12, 0xb3, 0xc9, 0x9b,
84547 + 0xf4, 0x4a, 0x1c, 0xe3, 0xf3, 0x85, 0xc4, 0xdf, 0xe2, 0xfa, 0xd9, 0x26,
84548 + 0xbc, 0xcb, 0xf1, 0x3c, 0x40, 0x59, 0xef, 0xe4, 0xfe, 0x96, 0x72, 0x97,
84549 + 0x22, 0x1f, 0xff, 0x5b, 0xca, 0xfd, 0x31, 0xc6, 0x4b, 0xfa, 0x38, 0x61,
84550 + 0xc8, 0xb8, 0xbe, 0x31, 0x0b, 0xd5, 0x21, 0x8e, 0xe3, 0x9b, 0xfc, 0xbf,
84551 + 0x01, 0xc7, 0xf3, 0xff, 0x9b, 0xff, 0xbf, 0x8b, 0x03, 0x79, 0x59, 0xaf,
84552 + 0x9e, 0x19, 0x4b, 0xc5, 0x7f, 0xca, 0x1c, 0x64, 0x0e, 0x32, 0x83, 0xb5,
84553 + 0xa9, 0xd9, 0xb4, 0xa3, 0xbf, 0xbe, 0xb6, 0x0e, 0xef, 0xc6, 0x2d, 0xec,
84554 + 0xd8, 0xe7, 0x45, 0x86, 0xb8, 0xbb, 0x63, 0xa0, 0x01, 0x4f, 0xec, 0x0c,
84555 + 0xe2, 0xf1, 0x9d, 0x97, 0x61, 0xcb, 0xce, 0x2b, 0xb0, 0x67, 0x67, 0x13,
84556 + 0xd2, 0x3b, 0x1d, 0xe7, 0xfd, 0xc5, 0x8e, 0xb3, 0x88, 0xd7, 0x23, 0xf4,
84557 + 0x05, 0x3f, 0xff, 0xbf, 0x10, 0x17, 0x3f, 0xd1, 0x71, 0x95, 0xeb, 0x2f,
84558 + 0x9d, 0xb8, 0xd2, 0xfd, 0x9f, 0xc4, 0xa2, 0xfc, 0xc6, 0xf8, 0xfa, 0xc2,
84559 + 0xa6, 0xf8, 0x7d, 0x85, 0x39, 0xd8, 0x3a, 0xd8, 0x88, 0xc1, 0x9d, 0x0d,
84560 + 0xa9, 0x06, 0xb6, 0xb3, 0xea, 0x5a, 0xe1, 0x76, 0x8e, 0x63, 0xb4, 0xf7,
84561 + 0xc7, 0xd7, 0x16, 0x9e, 0x41, 0x77, 0x21, 0x84, 0xbe, 0xc1, 0x30, 0xdb,
84562 + 0x92, 0xbd, 0x5c, 0xef, 0xd1, 0x7b, 0xe1, 0x38, 0xd3, 0x8b, 0x0f, 0xe2,
84563 + 0xae, 0xc2, 0x37, 0xc9, 0x1b, 0x43, 0x48, 0x0f, 0xae, 0x47, 0x66, 0xb2,
84564 + 0x22, 0xe5, 0x37, 0x1d, 0xbc, 0x14, 0x9f, 0xc2, 0xed, 0x94, 0xf7, 0xe8,
84565 + 0x60, 0x2d, 0xfb, 0x54, 0x9d, 0xaa, 0x34, 0x25, 0x86, 0x3f, 0xc8, 0x18,
84566 + 0x25, 0xfc, 0xe2, 0x28, 0x56, 0x30, 0xbf, 0xaa, 0x5f, 0xa2, 0xcf, 0x42,
84567 + 0x6d, 0xd0, 0x7b, 0xa6, 0x43, 0xec, 0x2f, 0x45, 0xfb, 0x93, 0x7d, 0xf5,
84568 + 0x75, 0xb8, 0xdb, 0x3d, 0xe7, 0xdd, 0x83, 0xe7, 0x6d, 0xc1, 0x9d, 0x35,
84569 + 0xd8, 0x6f, 0xaf, 0x63, 0xce, 0x25, 0xf1, 0x7a, 0x25, 0x9a, 0x0b, 0x7f,
84570 + 0x17, 0xbf, 0xa7, 0xb0, 0x9a, 0x7c, 0xf6, 0x5f, 0x70, 0x53, 0x21, 0xc7,
84571 + 0x7e, 0x8d, 0xc6, 0xef, 0x2e, 0xec, 0x89, 0xdf, 0x5b, 0xe8, 0xc2, 0x02,
84572 + 0x37, 0xa7, 0x64, 0xfe, 0x55, 0x90, 0x38, 0x77, 0x9c, 0x5c, 0xf8, 0x14,
84573 + 0x96, 0x17, 0x5e, 0xc3, 0xcd, 0x05, 0xc1, 0x0d, 0x89, 0x7f, 0x2f, 0x7a,
84574 + 0x51, 0x2d, 0x71, 0xef, 0x0b, 0xd8, 0xba, 0x3b, 0x85, 0xbe, 0xdd, 0x65,
84575 + 0x8c, 0x6a, 0x0d, 0xee, 0x13, 0x7c, 0x99, 0xf4, 0x95, 0x62, 0xd4, 0xa7,
84576 + 0x68, 0x8f, 0x2a, 0x63, 0xa3, 0xac, 0xd3, 0xaf, 0xa3, 0x2f, 0x6f, 0x24,
84577 + 0x66, 0xca, 0x7a, 0xfc, 0x27, 0x4b, 0xf7, 0x25, 0xd6, 0xcb, 0x5a, 0xbc,
84578 + 0x86, 0x43, 0x79, 0x77, 0x4f, 0x5b, 0xf3, 0xeb, 0xb7, 0xf3, 0x99, 0xd4,
84579 + 0xff, 0x02, 0xd2, 0xbb, 0x57, 0x3b, 0x8f, 0x66, 0x8a, 0xfb, 0x66, 0x47,
84580 + 0xa2, 0x6c, 0x6b, 0x9c, 0xb1, 0x7d, 0x2f, 0xfc, 0xb3, 0x38, 0xb6, 0x89,
84581 + 0x01, 0x58, 0x1e, 0xbd, 0xdb, 0xd9, 0x92, 0xc1, 0xbd, 0xb3, 0x10, 0xc6,
84582 + 0xca, 0x89, 0x0a, 0x24, 0xf7, 0x57, 0xe3, 0xb6, 0x9d, 0x3d, 0xb4, 0x65,
84583 + 0x8b, 0xf6, 0xab, 0x1b, 0x77, 0x2b, 0xd5, 0xb8, 0x99, 0xf7, 0x3e, 0x3d,
84584 + 0x28, 0x6b, 0x58, 0xd1, 0xa3, 0x27, 0x3c, 0xd5, 0xb8, 0x6b, 0xaf, 0x1f,
84585 + 0xb9, 0xdc, 0x4a, 0x24, 0xf7, 0x1e, 0x81, 0x95, 0xa3, 0x4d, 0xee, 0x22,
84586 + 0xce, 0x30, 0xcd, 0x51, 0xcd, 0x1f, 0x63, 0xcf, 0xa8, 0x8a, 0xba, 0x5d,
84587 + 0xb2, 0xfe, 0xa8, 0xe8, 0xa7, 0xa3, 0x05, 0xa4, 0x47, 0xbd, 0x98, 0x95,
84588 + 0xee, 0xc4, 0x04, 0xb1, 0x26, 0x90, 0x4e, 0x22, 0x9f, 0xef, 0x46, 0x8e,
84589 + 0x58, 0x92, 0x1b, 0x0d, 0xa0, 0x26, 0x6d, 0x20, 0xa0, 0xc7, 0xb0, 0x83,
84590 + 0xfe, 0x52, 0x91, 0xd6, 0xb1, 0x2d, 0x7f, 0x23, 0xac, 0xd1, 0x4f, 0x60,
84591 + 0xfb, 0x68, 0x37, 0x2f, 0x13, 0x7d, 0xa3, 0x9f, 0xc7, 0xb2, 0x89, 0xa3,
84592 + 0xe8, 0xcf, 0xa7, 0x68, 0x8f, 0xef, 0x61, 0x7b, 0xee, 0x30, 0x9e, 0xc8,
84593 + 0x6e, 0xc6, 0xd9, 0xc5, 0x87, 0xf1, 0x38, 0x3f, 0x67, 0xb3, 0xfa, 0xc6,
84594 + 0xb0, 0x7a, 0x18, 0x99, 0xdc, 0x26, 0x7c, 0x62, 0x50, 0xc1, 0x4b, 0xb4,
84595 + 0xf5, 0xdb, 0xf7, 0xd2, 0x16, 0x1f, 0xdb, 0x80, 0xae, 0x89, 0xef, 0xc2,
84596 + 0xce, 0x3f, 0x8f, 0x1d, 0xb9, 0x07, 0xd1, 0x9f, 0x59, 0xcf, 0xfc, 0xff,
84597 + 0x19, 0xca, 0x39, 0x48, 0x3f, 0xdf, 0xc8, 0x31, 0x3e, 0xcc, 0xeb, 0xc2,
84598 + 0x1a, 0xe3, 0x85, 0x35, 0x39, 0xfa, 0x7d, 0x46, 0x72, 0xcf, 0x75, 0xc4,
84599 + 0x89, 0x27, 0x6b, 0x65, 0x5d, 0xb2, 0x4a, 0x9f, 0xb9, 0x56, 0x2f, 0xb6,
84600 + 0x1f, 0x76, 0x73, 0xed, 0xaa, 0xb4, 0xe4, 0x75, 0x53, 0x91, 0x2a, 0x72,
84601 + 0x0c, 0x7f, 0x5a, 0x74, 0xd8, 0xe3, 0xf4, 0x66, 0x04, 0x4b, 0x64, 0x3e,
84602 + 0x34, 0xbc, 0x90, 0xff, 0x31, 0xb6, 0x0e, 0xcf, 0xc6, 0xf2, 0x6c, 0x1b,
84603 + 0x39, 0xa5, 0xe3, 0x7c, 0x85, 0xbe, 0x66, 0x93, 0xeb, 0xec, 0x18, 0x4c,
84604 + 0x12, 0x53, 0x66, 0x23, 0x39, 0xa7, 0xc8, 0x4f, 0xc2, 0x69, 0x69, 0xcb,
84605 + 0x57, 0xda, 0xab, 0x9b, 0xba, 0x32, 0xcc, 0x7b, 0x75, 0x69, 0x99, 0xb7,
84606 + 0x88, 0xa1, 0xb9, 0xfb, 0x69, 0x8e, 0xf3, 0x52, 0xb4, 0xcc, 0x95, 0xa6,
84607 + 0xae, 0xac, 0xc3, 0x6c, 0x59, 0x77, 0x4d, 0xc8, 0x39, 0xdf, 0x6f, 0xb5,
84608 + 0x2c, 0xa7, 0xaf, 0x7e, 0x01, 0x03, 0xe3, 0xe5, 0x77, 0x23, 0xff, 0xb3,
84609 + 0xe4, 0xdd, 0xf5, 0x9f, 0x2c, 0xaf, 0xbc, 0x07, 0x2a, 0xe7, 0x8c, 0xcb,
84610 + 0xef, 0x50, 0x8a, 0x2e, 0xaf, 0x90, 0xfd, 0x03, 0xab, 0xb8, 0x4f, 0x0a,
84611 + 0x1c, 0xb1, 0x2b, 0x18, 0x87, 0xd5, 0xa5, 0x64, 0x63, 0x21, 0x1f, 0x2a,
84612 + 0x19, 0x2f, 0x1b, 0xd1, 0x47, 0xbe, 0x7a, 0x93, 0x51, 0x81, 0x03, 0x6d,
84613 + 0x49, 0x39, 0xcf, 0xd7, 0xe3, 0x73, 0x79, 0xea, 0xa6, 0x3f, 0xff, 0x6d,
84614 + 0x9e, 0xba, 0x09, 0xe9, 0x8c, 0x9c, 0x63, 0xeb, 0xc6, 0x4b, 0xf5, 0xf2,
84615 + 0x5e, 0xe7, 0x26, 0xf7, 0x9c, 0x70, 0xd5, 0x42, 0x62, 0x46, 0x5c, 0xc3,
84616 + 0x51, 0xbd, 0x55, 0x6b, 0x50, 0x23, 0x06, 0x94, 0xd7, 0x1d, 0x2b, 0x94,
84617 + 0x44, 0xff, 0xa4, 0x9c, 0xd5, 0xfb, 0xa8, 0x3d, 0x84, 0xb5, 0xd8, 0xfe,
84618 + 0x58, 0x07, 0x8e, 0xaf, 0x96, 0xb5, 0xbc, 0x9f, 0x95, 0xde, 0xdb, 0x93,
84619 + 0x3e, 0x46, 0xea, 0xe4, 0x0c, 0xaa, 0xc8, 0xde, 0x9e, 0x51, 0x19, 0x7b,
84620 + 0xe2, 0x78, 0x3d, 0xe8, 0x8e, 0x37, 0x56, 0x3e, 0x97, 0x59, 0xa9, 0x2f,
84621 + 0x2f, 0x95, 0x5f, 0x50, 0x27, 0xbc, 0x64, 0x5b, 0x66, 0x13, 0xb9, 0xb6,
84622 + 0xf4, 0xe7, 0xd7, 0xce, 0xda, 0x50, 0x03, 0xcb, 0x8e, 0x95, 0x9e, 0x8b,
84623 + 0xad, 0x45, 0x8c, 0x24, 0xe4, 0x9e, 0xd4, 0x11, 0x9d, 0xcd, 0xac, 0xe3,
84624 + 0x41, 0xbd, 0x7e, 0x25, 0x1e, 0xa2, 0x8f, 0xcf, 0xd7, 0x5f, 0x76, 0x36,
84625 + 0xcb, 0x39, 0xcd, 0x85, 0xc1, 0x19, 0x6d, 0x2d, 0x75, 0xfb, 0x52, 0xc9,
84626 + 0xbe, 0x0c, 0x66, 0xe4, 0xbd, 0x81, 0xb3, 0xce, 0xc2, 0x46, 0x79, 0x7e,
84627 + 0x5b, 0x6d, 0x51, 0x7e, 0xb3, 0x7b, 0x0e, 0x7b, 0x4f, 0xa6, 0xdc, 0x6f,
84628 + 0x39, 0xe3, 0x1e, 0x2a, 0xb7, 0x15, 0xbb, 0x30, 0x1e, 0xe9, 0xdb, 0xd7,
84629 + 0x6a, 0x2f, 0xee, 0xf3, 0x9d, 0xb3, 0xca, 0xef, 0x17, 0xcc, 0x73, 0xeb,
84630 + 0x94, 0xdb, 0x94, 0x3e, 0x6e, 0xc2, 0xe3, 0x93, 0x97, 0x8e, 0xf1, 0xee,
84631 + 0x19, 0x63, 0x92, 0x3a, 0x32, 0xae, 0x60, 0xc9, 0x0e, 0x36, 0xb2, 0x8c,
84632 + 0xd4, 0x91, 0x75, 0x82, 0xa0, 0x9b, 0x3f, 0xd4, 0xed, 0x16, 0x79, 0x22,
84633 + 0xc3, 0x71, 0xde, 0x70, 0x63, 0xf2, 0x02, 0xb7, 0xcc, 0xe0, 0xe4, 0x6a,
84634 + 0xfa, 0x91, 0xb3, 0x99, 0xf8, 0xec, 0xbc, 0xd1, 0x11, 0xc6, 0x56, 0x5b,
84635 + 0x74, 0xad, 0x87, 0xc7, 0x88, 0x4d, 0x7d, 0x2e, 0x9f, 0xf1, 0xa1, 0x37,
84636 + 0x57, 0x3e, 0xeb, 0x52, 0x29, 0x7b, 0x21, 0x61, 0xd1, 0x79, 0xaf, 0x41,
84637 + 0x1e, 0x17, 0x5c, 0xa6, 0x79, 0xc9, 0xc5, 0xee, 0xc1, 0x7f, 0xc8, 0xfc,
84638 + 0xc6, 0x7c, 0xa5, 0x75, 0x93, 0x14, 0xed, 0xa8, 0x18, 0x0f, 0x41, 0xfe,
84639 + 0x40, 0x1e, 0x56, 0x3a, 0x43, 0xdf, 0x9b, 0xff, 0x0f, 0x67, 0xca, 0x3d,
84640 + 0x43, 0x7f, 0xe1, 0x2c, 0x4a, 0x2e, 0xe8, 0x38, 0xfb, 0xf8, 0xec, 0xc2,
84641 + 0x79, 0x7a, 0x72, 0x06, 0x5d, 0xce, 0xdd, 0xff, 0x3b, 0xe7, 0x6e, 0x66,
84642 + 0xd9, 0xa9, 0xfa, 0xe2, 0xfb, 0x25, 0x49, 0x75, 0x99, 0x5e, 0xc6, 0x6d,
84643 + 0xd9, 0x27, 0x12, 0xdc, 0x3e, 0x58, 0x57, 0x5c, 0x3f, 0x8e, 0x74, 0x75,
84644 + 0x43, 0xf6, 0xe4, 0xcb, 0x38, 0xa3, 0x1b, 0x8b, 0x94, 0xcd, 0x68, 0x89,
84645 + 0x57, 0xcb, 0xf9, 0xba, 0x88, 0xd7, 0x8c, 0x04, 0xdf, 0x42, 0x34, 0x76,
84646 + 0xd8, 0x3d, 0x43, 0x22, 0xd8, 0xa3, 0xe3, 0x9e, 0xbc, 0x4e, 0x9b, 0x95,
84647 + 0xf7, 0xd2, 0xe5, 0x73, 0xf1, 0xdd, 0xc7, 0x64, 0x5e, 0xb0, 0xba, 0x87,
84648 + 0x58, 0x6d, 0xfd, 0xa5, 0xcf, 0x95, 0x17, 0xe9, 0x19, 0x55, 0x22, 0x5d,
84649 + 0x0f, 0x2a, 0x65, 0x79, 0x81, 0x0f, 0x91, 0x17, 0x63, 0x7d, 0xad, 0xf4,
84650 + 0x2e, 0xb8, 0x4e, 0x19, 0x97, 0x9e, 0x0d, 0x9a, 0x93, 0x92, 0x3c, 0xfa,
84651 + 0x40, 0x89, 0x73, 0x1e, 0xfe, 0xad, 0x3c, 0xfa, 0x43, 0xdb, 0x4c, 0xb2,
84652 + 0xcd, 0xae, 0x6a, 0x25, 0x19, 0x97, 0xf7, 0x80, 0x2a, 0xe3, 0xd1, 0xd8,
84653 + 0x0b, 0x74, 0x72, 0xaf, 0x19, 0x0d, 0x8f, 0xba, 0x67, 0x5d, 0x0c, 0xff,
84654 + 0xf2, 0x7c, 0xd1, 0x7f, 0xac, 0xc9, 0xdf, 0xad, 0x93, 0x1a, 0x5d, 0xef,
84655 + 0x6e, 0x55, 0x92, 0xd7, 0x57, 0x53, 0x4e, 0x2c, 0x0e, 0xad, 0xc2, 0x2c,
84656 + 0xeb, 0x28, 0x1a, 0x7b, 0x8b, 0xf3, 0x79, 0xa8, 0x23, 0x1a, 0x1e, 0x71,
84657 + 0x73, 0x74, 0xd1, 0x8b, 0xe1, 0x2f, 0xce, 0xbd, 0x2e, 0x7c, 0xde, 0xf2,
84658 + 0x31, 0x36, 0x8f, 0xdb, 0x7e, 0x8e, 0xa5, 0x35, 0xb8, 0x1d, 0xf5, 0xb4,
84659 + 0x71, 0x24, 0xfb, 0xda, 0x18, 0x1f, 0x6c, 0x24, 0x3d, 0x57, 0xd5, 0x21,
84660 + 0x45, 0x82, 0xee, 0xd1, 0x53, 0xe4, 0x5c, 0xad, 0xb1, 0x47, 0x68, 0xbf,
84661 + 0xb9, 0x50, 0x24, 0x6c, 0x21, 0x85, 0xe7, 0xec, 0x65, 0x7f, 0xee, 0x81,
84662 + 0x65, 0xd4, 0x70, 0xa2, 0xab, 0xcd, 0xa9, 0x3f, 0xbf, 0x35, 0x1a, 0xd1,
84663 + 0x5e, 0x2c, 0x9d, 0xd5, 0xe9, 0xb5, 0x7f, 0xe1, 0xee, 0x51, 0x79, 0xf4,
84664 + 0xdf, 0x55, 0x46, 0xda, 0xf6, 0x63, 0x2c, 0x9b, 0xc5, 0x96, 0xc7, 0xd8,
84665 + 0x47, 0xdd, 0xc1, 0x32, 0x63, 0x33, 0x96, 0x1b, 0x01, 0xac, 0x0b, 0xb6,
84666 + 0x24, 0xe4, 0x2c, 0xd2, 0x48, 0xae, 0xb8, 0x36, 0x52, 0x5c, 0x0b, 0xef,
84667 + 0xc7, 0xa3, 0x19, 0x37, 0x3e, 0x07, 0xfd, 0x66, 0x52, 0x79, 0x34, 0xdf,
84668 + 0xa9, 0x3c, 0x52, 0x5a, 0x8f, 0xeb, 0xcf, 0xdf, 0x10, 0x44, 0xb5, 0x85,
84669 + 0x13, 0x86, 0xbc, 0x47, 0x29, 0x72, 0x2d, 0x8c, 0x76, 0xfc, 0x21, 0xef,
84670 + 0x53, 0x8a, 0x4e, 0x37, 0xa2, 0x6f, 0xf8, 0x61, 0xf4, 0x0e, 0xbf, 0xe4,
84671 + 0x9e, 0x65, 0xf5, 0xe9, 0x7e, 0xeb, 0x0a, 0x33, 0x72, 0xd0, 0xc2, 0xbc,
84672 + 0x7a, 0x59, 0x13, 0x6e, 0x34, 0x8f, 0xe2, 0xd1, 0xa0, 0xbc, 0x27, 0xd8,
84673 + 0x4f, 0x9e, 0x22, 0xef, 0x9c, 0xad, 0xc1, 0x67, 0x06, 0x64, 0x0e, 0x6b,
84674 + 0xad, 0x4a, 0x33, 0x92, 0x5c, 0xe7, 0xce, 0x61, 0x1b, 0x8e, 0x15, 0x1e,
84675 + 0xc6, 0x1b, 0xbb, 0x36, 0x43, 0x8d, 0x47, 0xc2, 0xb7, 0xc0, 0xd9, 0x7c,
84676 + 0xc4, 0x48, 0x5a, 0x3e, 0x44, 0x0e, 0x78, 0x54, 0xe0, 0xd9, 0x5d, 0x92,
84677 + 0x4f, 0xf7, 0xe0, 0x7a, 0x72, 0x80, 0x3a, 0xdd, 0x59, 0xfa, 0xab, 0xc5,
84678 + 0x91, 0x7e, 0xdd, 0x63, 0xfd, 0xd3, 0x1c, 0x44, 0xb2, 0x09, 0x55, 0xef,
84679 + 0xf9, 0xa4, 0x0a, 0x25, 0x60, 0xca, 0x6f, 0x00, 0x6c, 0xc6, 0x27, 0xda,
84680 + 0x03, 0xd6, 0x2c, 0x33, 0x92, 0x7d, 0x49, 0x89, 0xc4, 0x2c, 0xf5, 0x1b,
84681 + 0x9c, 0xe7, 0x18, 0x5e, 0x24, 0xc7, 0xe9, 0x62, 0x6c, 0x5f, 0x21, 0x31,
84682 + 0xdd, 0xc5, 0xbe, 0xe6, 0x44, 0x95, 0x12, 0xc4, 0x2d, 0x05, 0xe0, 0x50,
84683 + 0x6e, 0x0d, 0x4e, 0xee, 0x32, 0xd0, 0xc9, 0x67, 0x83, 0x19, 0x02, 0x16,
84684 + 0x31, 0x60, 0x83, 0x61, 0xb5, 0xaa, 0xe4, 0x16, 0x3e, 0x15, 0xcb, 0xe6,
84685 + 0x9b, 0xd1, 0xa9, 0xa5, 0x1e, 0x2f, 0x12, 0x05, 0x2f, 0xee, 0x60, 0x99,
84686 + 0xed, 0x8c, 0x0b, 0x9f, 0x4c, 0xfb, 0xc9, 0x6f, 0x9b, 0xf0, 0x33, 0xf2,
84687 + 0xec, 0x9f, 0x92, 0x4f, 0x1f, 0x27, 0x5f, 0x38, 0x9e, 0xaf, 0x46, 0xf7,
84688 + 0x90, 0x4f, 0xce, 0x1f, 0x4d, 0xf9, 0x38, 0x17, 0xb5, 0xed, 0x21, 0x9c,
84689 + 0x1e, 0xf5, 0xe3, 0xf6, 0x5d, 0x91, 0x3d, 0xc7, 0xd5, 0x46, 0xbc, 0x3f,
84690 + 0x5a, 0x8d, 0x95, 0x43, 0x7e, 0xf6, 0xcd, 0xc1, 0x0e, 0xe2, 0xff, 0xbb,
84691 + 0x7c, 0xd6, 0xb9, 0x0b, 0x4a, 0x7e, 0xc9, 0x02, 0xe6, 0x04, 0x3a, 0xeb,
84692 + 0xd7, 0xe0, 0xd6, 0x21, 0xe1, 0x81, 0x2a, 0xde, 0x1e, 0x55, 0xf0, 0x56,
84693 + 0xce, 0xc0, 0x32, 0xb6, 0xd7, 0x97, 0x79, 0xd6, 0xf1, 0xd3, 0xcf, 0xd7,
84694 + 0xe6, 0x0d, 0xdc, 0x9b, 0xd3, 0x19, 0x53, 0x7e, 0xe2, 0x78, 0xf4, 0x76,
84695 + 0xfc, 0x64, 0xa7, 0x7e, 0xf4, 0x75, 0x4f, 0x74, 0x6a, 0x89, 0xa7, 0x1d,
84696 + 0xaf, 0xed, 0x6f, 0xc7, 0xf7, 0x06, 0x97, 0xe2, 0x9a, 0xf6, 0x24, 0xce,
84697 + 0x2c, 0x69, 0xc7, 0xab, 0x7b, 0x75, 0x3c, 0x92, 0xe9, 0x80, 0x36, 0x31,
84698 + 0x45, 0xfe, 0x9b, 0x40, 0xeb, 0x84, 0x09, 0x7d, 0xd0, 0xd9, 0x5c, 0x63,
84699 + 0x6e, 0xc6, 0xa3, 0x86, 0x89, 0x45, 0x7b, 0x45, 0x0f, 0x8e, 0xb3, 0x6e,
84700 + 0x89, 0x89, 0x17, 0xb2, 0x3a, 0xfd, 0xd4, 0xa4, 0x1e, 0x74, 0x3c, 0x9e,
84701 + 0x31, 0x11, 0x7d, 0x4c, 0x9f, 0xde, 0xc7, 0xef, 0x4b, 0xf7, 0x75, 0xa0,
84702 + 0x87, 0xed, 0xdb, 0xc4, 0xeb, 0x3d, 0x13, 0x6d, 0x1c, 0xb3, 0xc1, 0xf1,
84703 + 0x37, 0x5b, 0x3f, 0x53, 0x3a, 0x91, 0x9d, 0xe8, 0x22, 0x9f, 0xdd, 0x4c,
84704 + 0x1e, 0xdb, 0xe5, 0xee, 0xb9, 0x6f, 0xcd, 0x18, 0xb8, 0x35, 0xdd, 0x85,
84705 + 0x27, 0x6d, 0x39, 0x3b, 0xaf, 0x27, 0xae, 0x55, 0xe4, 0x1d, 0xdd, 0x2e,
84706 + 0x8c, 0x51, 0x27, 0xcb, 0x86, 0x56, 0xba, 0xe7, 0x9d, 0x96, 0xef, 0xd2,
84707 + 0xf1, 0x44, 0xe6, 0x13, 0x38, 0x39, 0x6e, 0xa0, 0x3b, 0x2d, 0xfa, 0x96,
84708 + 0xf3, 0x9b, 0x29, 0x1c, 0x61, 0x6c, 0xf9, 0xd9, 0x50, 0xf2, 0x9f, 0x38,
84709 + 0xcd, 0xc7, 0x54, 0xc8, 0x7a, 0x89, 0x8a, 0xab, 0xdb, 0xe5, 0x0c, 0xae,
84710 + 0x87, 0xa8, 0x16, 0xb1, 0xea, 0x54, 0x4b, 0xe3, 0x7d, 0xcb, 0xab, 0x6e,
84711 + 0xc2, 0x67, 0x87, 0xbc, 0xcc, 0x19, 0x54, 0xe6, 0x3a, 0xd6, 0x06, 0xda,
84712 + 0x86, 0x55, 0xab, 0x16, 0xe7, 0xcd, 0xdd, 0x63, 0xd0, 0x3d, 0xd8, 0x61,
84713 + 0x34, 0x77, 0xd7, 0xb0, 0xde, 0x8a, 0x78, 0x24, 0x59, 0xa5, 0x76, 0x30,
84714 + 0x0f, 0x7d, 0x18, 0xeb, 0x76, 0x3d, 0x8c, 0xb5, 0xbc, 0x36, 0xec, 0x72,
84715 + 0x36, 0xdf, 0x6c, 0x28, 0x78, 0x4e, 0x77, 0x36, 0x6f, 0x36, 0x74, 0xce,
84716 + 0xad, 0xcc, 0xeb, 0xc3, 0xd8, 0x38, 0xf6, 0x30, 0x1e, 0xa2, 0x7d, 0x35,
84717 + 0xd0, 0x8f, 0x57, 0xa5, 0x9d, 0xcd, 0xd7, 0xb4, 0xc7, 0xf0, 0x73, 0x37,
84718 + 0xbf, 0x11, 0x7b, 0x3d, 0xe3, 0xe6, 0xdc, 0x39, 0xd5, 0xb5, 0xdd, 0xa0,
84719 + 0x7c, 0xb6, 0xd4, 0x25, 0xc1, 0x72, 0x6c, 0xf9, 0x05, 0xe5, 0xfe, 0x72,
84720 + 0x57, 0x1d, 0x1e, 0x6b, 0x90, 0xf8, 0xe1, 0xb7, 0xaa, 0x4c, 0x28, 0xfa,
84721 + 0x12, 0xe6, 0x71, 0x8f, 0x1d, 0xc1, 0x76, 0xf2, 0xc2, 0x50, 0x5c, 0x72,
84722 + 0xec, 0x56, 0x63, 0x8b, 0x7a, 0x23, 0xb1, 0x5d, 0xc1, 0xa3, 0x0b, 0xb3,
84723 + 0x18, 0xa0, 0xaf, 0xee, 0x58, 0x18, 0x49, 0x0d, 0xc0, 0x74, 0x76, 0xcc,
84724 + 0xe9, 0xff, 0x23, 0xde, 0xa1, 0x2d, 0xef, 0x4b, 0xca, 0x7b, 0xb4, 0x0f,
84725 + 0x63, 0xf3, 0x2e, 0x99, 0xff, 0x87, 0xf1, 0x45, 0xf6, 0x7f, 0xe3, 0xd0,
84726 + 0xc3, 0xf8, 0x1c, 0x6d, 0xa7, 0x7e, 0xf1, 0xa1, 0x2f, 0xd6, 0xa3, 0x25,
84727 + 0x5b, 0x87, 0xa9, 0xfb, 0x1b, 0xe4, 0xbc, 0x2d, 0x31, 0x71, 0x40, 0x79,
84728 + 0x18, 0xf7, 0x8c, 0xd4, 0xd2, 0x17, 0xdd, 0x31, 0x10, 0x8b, 0xcb, 0xf1,
84729 + 0x2a, 0x8c, 0x75, 0xf9, 0xa6, 0x12, 0xae, 0x87, 0xb0, 0xd6, 0x3e, 0xe0,
84730 + 0xfa, 0x7e, 0x85, 0xb9, 0x9a, 0x7e, 0xdf, 0x4d, 0xbf, 0x5f, 0x49, 0xbf,
84731 + 0xef, 0xa2, 0xdf, 0x77, 0xd2, 0xef, 0x93, 0xf4, 0x7b, 0x93, 0x7e, 0x9f,
84732 + 0xa0, 0xdf, 0x77, 0xd0, 0xef, 0x0d, 0xd9, 0x3b, 0x54, 0x8e, 0x76, 0x1c,
84733 + 0x81, 0x6f, 0xd0, 0x4f, 0x1b, 0x2a, 0xbe, 0xd3, 0xb8, 0x9f, 0xf8, 0x73,
84734 + 0xc2, 0x58, 0x14, 0xbe, 0x89, 0xaa, 0x1a, 0x25, 0x46, 0xe4, 0xc6, 0xff,
84735 + 0xce, 0x7d, 0xff, 0x2d, 0x47, 0xdc, 0x7f, 0x91, 0xfa, 0x58, 0x11, 0x6f,
84736 + 0x36, 0x9e, 0x64, 0x0c, 0xfb, 0xa1, 0xde, 0xda, 0x1f, 0x62, 0x99, 0xaf,
84737 + 0x65, 0x5a, 0xb3, 0xb3, 0xa1, 0x5b, 0xed, 0xea, 0x56, 0x60, 0x55, 0x88,
84738 + 0x63, 0x96, 0x73, 0xdd, 0xab, 0xf0, 0xc5, 0xe1, 0x6e, 0xfc, 0xcf, 0xe1,
84739 + 0x20, 0x75, 0xd1, 0x3c, 0x75, 0xa3, 0x07, 0xdf, 0x0c, 0xc3, 0x13, 0x9a,
84740 + 0x0b, 0x7c, 0xd0, 0x88, 0x45, 0x07, 0xe4, 0x5d, 0xec, 0x5c, 0xa3, 0xa7,
84741 + 0x6d, 0x3e, 0xc4, 0x46, 0x40, 0xa4, 0xf6, 0x30, 0xd3, 0x5c, 0xe4, 0xbe,
84742 + 0xaf, 0x99, 0x5c, 0x2d, 0x98, 0x5e, 0x85, 0xad, 0x31, 0x17, 0x67, 0x9f,
84743 + 0x96, 0xf3, 0xe9, 0x8d, 0xc4, 0xa3, 0x80, 0xd9, 0x85, 0x6d, 0x03, 0xd6,
84744 + 0x5d, 0x8d, 0x58, 0x89, 0xfe, 0x81, 0xa2, 0x0e, 0xee, 0x8f, 0x13, 0xf2,
84745 + 0xcc, 0xa8, 0xb6, 0x48, 0x81, 0x77, 0x43, 0x47, 0x02, 0xf7, 0xe6, 0x6d,
84746 + 0x64, 0x39, 0xc6, 0xf5, 0xf4, 0xb3, 0x75, 0xbf, 0xff, 0x3d, 0x7c, 0x7c,
84747 + 0xce, 0xd6, 0x68, 0xff, 0xe7, 0x9c, 0x5c, 0xfd, 0xa2, 0x6c, 0x23, 0xf4,
84748 + 0x8d, 0x77, 0xa8, 0xd7, 0x32, 0x67, 0x8e, 0x1c, 0xe4, 0x23, 0x6b, 0x8e,
84749 + 0x7b, 0x8e, 0xce, 0x8f, 0x05, 0x43, 0x50, 0x46, 0xd3, 0xf2, 0xce, 0xda,
84750 + 0x66, 0xfc, 0x5f, 0xc6, 0x37, 0x5c, 0x5b, 0x9a, 0xf2, 0xc8, 0x99, 0x16,
84751 + 0xb9, 0xef, 0x2c, 0x3d, 0xbb, 0x38, 0x12, 0xd3, 0x3c, 0x3f, 0xa8, 0x93,
84752 + 0xfd, 0x8b, 0xaf, 0x33, 0xce, 0x86, 0x87, 0x96, 0x42, 0x5d, 0xec, 0xc7,
84753 + 0x9d, 0x6d, 0xb3, 0x90, 0x5a, 0x25, 0x3c, 0xd4, 0xdd, 0x5f, 0xa1, 0x3e,
84754 + 0xff, 0x02, 0xf7, 0x19, 0x5f, 0xc1, 0xf1, 0x90, 0x8d, 0x21, 0xe2, 0xd7,
84755 + 0x3a, 0xe3, 0x76, 0xc5, 0xe2, 0x67, 0xe6, 0x44, 0x58, 0x6f, 0x30, 0xd7,
84756 + 0xfa, 0x54, 0x03, 0x1a, 0x76, 0x49, 0x79, 0x91, 0x7b, 0xc6, 0x95, 0xb7,
84757 + 0x3f, 0x23, 0x9f, 0x8b, 0x36, 0x3b, 0xe5, 0xf9, 0x24, 0xd0, 0x20, 0xe7,
84758 + 0x84, 0x15, 0xbc, 0xbd, 0xd0, 0xc6, 0x63, 0x19, 0x7c, 0xb3, 0x0a, 0xcd,
84759 + 0xb9, 0x41, 0xd5, 0xf3, 0xcd, 0xb9, 0x58, 0x64, 0xfc, 0x5a, 0x95, 0xf9,
84760 + 0x48, 0xe2, 0xbe, 0x85, 0x72, 0x1e, 0x4d, 0x3f, 0xf3, 0x3d, 0xfa, 0xd6,
84761 + 0x71, 0xd8, 0xd8, 0x3e, 0xf9, 0x92, 0x33, 0x35, 0x37, 0x84, 0xa7, 0x26,
84762 + 0xa5, 0x6e, 0x37, 0x4e, 0x70, 0x4e, 0xbe, 0xec, 0xee, 0xe7, 0x45, 0x92,
84763 + 0x27, 0x54, 0x79, 0xe7, 0xb0, 0x1b, 0x6f, 0x8d, 0x1a, 0xd8, 0xc7, 0x1c,
84764 + 0xea, 0x57, 0xc3, 0xab, 0xf0, 0xeb, 0xe1, 0x66, 0xed, 0x6f, 0x14, 0x39,
84765 + 0x03, 0xff, 0x71, 0xfc, 0xa8, 0x21, 0x88, 0x83, 0xb4, 0xa1, 0x69, 0xbb,
84766 + 0x0b, 0x6f, 0xdb, 0x56, 0x64, 0x2e, 0x22, 0x7b, 0xbc, 0x9e, 0xc8, 0x01,
84767 + 0x79, 0xcf, 0x79, 0x9d, 0x1a, 0x39, 0xb8, 0x44, 0x89, 0x58, 0x6f, 0xa8,
84768 + 0x2b, 0xf1, 0x8b, 0x7c, 0x17, 0xce, 0xe4, 0x67, 0xda, 0xc2, 0x66, 0x07,
84769 + 0x8d, 0x62, 0x07, 0x62, 0x0f, 0xb4, 0x45, 0xe6, 0x8a, 0xdf, 0x26, 0x8f,
84770 + 0xee, 0xfd, 0x18, 0xed, 0x31, 0x43, 0x7b, 0xcc, 0xd0, 0x1e, 0x89, 0x49,
84771 + 0xcf, 0x10, 0xab, 0xbe, 0x96, 0xa1, 0x3d, 0xd2, 0x7f, 0xbe, 0x42, 0xff,
84772 + 0x29, 0x72, 0xe5, 0x1e, 0x77, 0x4d, 0xff, 0x15, 0xc6, 0x44, 0xfb, 0x31,
84773 + 0x79, 0x7f, 0xb8, 0x79, 0x7d, 0x01, 0x91, 0x9e, 0x01, 0x65, 0x5d, 0xbd,
84774 + 0xbc, 0xcf, 0xf1, 0xf9, 0xa8, 0xf8, 0x80, 0xbc, 0x7b, 0x46, 0xbf, 0x1a,
84775 + 0x3f, 0x55, 0x27, 0xef, 0xb2, 0xee, 0xdf, 0xfd, 0x51, 0x3a, 0xfb, 0x7b,
84776 + 0xf6, 0x43, 0xf4, 0xf5, 0xc7, 0x8e, 0x5d, 0x74, 0xf9, 0x4f, 0xce, 0x8f,
84777 + 0x1a, 0x65, 0xfc, 0xab, 0xf1, 0xf3, 0xe1, 0x4e, 0x9c, 0x65, 0xfc, 0xfd,
84778 + 0x74, 0xfb, 0x94, 0x45, 0x9b, 0xdd, 0x68, 0x78, 0x4c, 0x4c, 0xe6, 0x3b,
84779 + 0x71, 0xda, 0x36, 0x91, 0xb7, 0x9b, 0xd7, 0x7f, 0x57, 0x79, 0x53, 0xcd,
84780 + 0xcd, 0x2b, 0xf2, 0xf9, 0xdf, 0x90, 0x5f, 0x1e, 0x6a, 0x91, 0xf7, 0x5d,
84781 + 0x13, 0x18, 0xc9, 0x8b, 0x9d, 0x06, 0x71, 0xd3, 0x12, 0x43, 0xde, 0x11,
84782 + 0xfb, 0xbd, 0x7f, 0xf7, 0xd9, 0xb2, 0x97, 0x72, 0xce, 0x99, 0x0a, 0xfa,
84783 + 0xad, 0x20, 0x7d, 0xd8, 0xb3, 0x4b, 0x7e, 0x07, 0x40, 0xfc, 0x59, 0xc1,
84784 + 0x67, 0x8c, 0x29, 0xad, 0x06, 0x91, 0xa7, 0x77, 0x33, 0x81, 0x7a, 0x2d,
84785 + 0x2d, 0x67, 0x88, 0x3b, 0xf1, 0x26, 0xcb, 0x57, 0xd1, 0x2f, 0x5e, 0xcb,
84786 + 0x7b, 0xbd, 0x3f, 0x4a, 0xcb, 0x7b, 0xec, 0x2b, 0xf1, 0xa3, 0xfc, 0xcb,
84787 + 0xea, 0x2f, 0x82, 0x06, 0xde, 0x2e, 0xac, 0xc2, 0xfc, 0x5d, 0xb2, 0xbe,
84788 + 0x90, 0xc4, 0x7e, 0x3b, 0x72, 0xf4, 0x59, 0xac, 0xc2, 0xbc, 0xb1, 0xd5,
84789 + 0xcc, 0xa3, 0x15, 0xbc, 0x17, 0x5d, 0x8d, 0x00, 0x3f, 0xd7, 0xee, 0x72,
84790 + 0x9c, 0xc3, 0xf1, 0x3a, 0x67, 0xfb, 0x6a, 0x99, 0x3b, 0xc1, 0x93, 0x65,
84791 + 0xf5, 0xa8, 0x5d, 0x0d, 0x8c, 0x09, 0x57, 0xd1, 0x71, 0xeb, 0xc0, 0x2a,
84792 + 0x5c, 0xb1, 0xab, 0x39, 0x76, 0x2b, 0x9a, 0xb3, 0x47, 0x3c, 0xab, 0xd0,
84793 + 0x30, 0x76, 0x2f, 0xe7, 0x40, 0xca, 0x6a, 0xb4, 0x3f, 0x0b, 0x95, 0xe4,
84794 + 0x84, 0x9d, 0xe9, 0x9f, 0x3a, 0xf3, 0x4d, 0x77, 0x1f, 0x0e, 0xeb, 0x0a,
84795 + 0x3a, 0xe3, 0x5d, 0x35, 0x52, 0x23, 0x4f, 0x38, 0x75, 0xa6, 0x17, 0x6b,
84796 + 0x0b, 0x6d, 0xb8, 0x69, 0xc8, 0x71, 0x4e, 0x2f, 0x49, 0x22, 0x60, 0x06,
84797 + 0x88, 0x61, 0x01, 0x3c, 0x94, 0xae, 0xe1, 0x7f, 0x07, 0x15, 0x8c, 0xc9,
84798 + 0x2d, 0xaa, 0xbe, 0x7e, 0x9e, 0x47, 0xef, 0x29, 0x28, 0x12, 0xf7, 0x03,
84799 + 0x78, 0x80, 0xf1, 0x79, 0x45, 0x3a, 0x8c, 0x54, 0xc1, 0x71, 0x5e, 0xed,
84800 + 0x08, 0xe1, 0x7e, 0xd6, 0xef, 0x4a, 0xf7, 0xa3, 0x97, 0x76, 0x91, 0x1a,
84801 + 0xd3, 0xb5, 0x20, 0xe3, 0xfd, 0xba, 0x82, 0x9f, 0x31, 0xac, 0x01, 0xb7,
84802 + 0xec, 0xd2, 0xf0, 0x50, 0x21, 0xc0, 0xf8, 0xe6, 0x2c, 0x3d, 0x69, 0x58,
84803 + 0x57, 0x7a, 0xa0, 0x63, 0x63, 0x21, 0x84, 0x95, 0xe9, 0xc8, 0xb4, 0xbc,
84804 + 0x47, 0x7d, 0xd6, 0x88, 0xe1, 0xc1, 0x42, 0x18, 0xb7, 0xa5, 0x0f, 0x3d,
84805 + 0x34, 0x1f, 0xd6, 0xff, 0x98, 0x87, 0x36, 0x7c, 0xa6, 0xd0, 0x44, 0xf9,
84806 + 0x91, 0xf5, 0xaf, 0x28, 0x4d, 0xf8, 0xec, 0x98, 0x41, 0xf9, 0x2a, 0x6e,
84807 + 0xa5, 0x9c, 0x9b, 0xd3, 0x57, 0xe0, 0x81, 0xb1, 0x0e, 0xdc, 0x5b, 0x58,
84808 + 0x8c, 0xe5, 0x8c, 0x4f, 0x1b, 0x98, 0x1b, 0xe2, 0xbf, 0x00, 0xb7, 0x0d,
84809 + 0x89, 0xee, 0xa1, 0xbc, 0xda, 0x31, 0xc5, 0x7c, 0xdc, 0x00, 0x0d, 0x91,
84810 + 0xf7, 0x74, 0x72, 0x30, 0x03, 0xb7, 0xed, 0x5d, 0xec, 0xee, 0xc9, 0x37,
84811 + 0xc7, 0x2b, 0x91, 0xea, 0x56, 0xd0, 0x39, 0x24, 0x71, 0x56, 0xb8, 0x8d,
84812 + 0xc1, 0xb8, 0x1a, 0x65, 0x1b, 0x06, 0xe3, 0x6a, 0xf1, 0x7e, 0x6f, 0x46,
84813 + 0xd6, 0x2e, 0x7e, 0x42, 0xbe, 0x14, 0x47, 0xa7, 0x1b, 0xa3, 0xfd, 0xe4,
84814 + 0xd7, 0x16, 0xbc, 0x8c, 0xdd, 0x71, 0xda, 0xf8, 0xd2, 0x76, 0x89, 0xd5,
84815 + 0x3a, 0x06, 0xe8, 0x0f, 0x93, 0x83, 0xfa, 0x86, 0x69, 0xc5, 0x44, 0x61,
84816 + 0xaf, 0xc4, 0xc4, 0x10, 0x1e, 0x4c, 0x9b, 0x38, 0x29, 0xe7, 0xf8, 0xaf,
84817 + 0x4a, 0xae, 0xa8, 0x81, 0x6e, 0x3c, 0x80, 0xa8, 0x75, 0x8c, 0xb1, 0xfd,
84818 + 0x4c, 0xae, 0x01, 0x37, 0xed, 0x92, 0x32, 0xed, 0x78, 0x7d, 0xd4, 0x8b,
84819 + 0x9b, 0xd2, 0x9b, 0xf0, 0x44, 0xd6, 0x83, 0x11, 0xa3, 0xb9, 0x5f, 0x65,
84820 + 0xfc, 0xbc, 0xbe, 0x3d, 0x12, 0xfc, 0x3a, 0xb9, 0xea, 0xf4, 0x62, 0x46,
84821 + 0xe5, 0xb9, 0x1d, 0xe8, 0x64, 0xbf, 0x3a, 0x75, 0xf1, 0x49, 0x0b, 0xf7,
84822 + 0x76, 0x6c, 0xc2, 0xb1, 0xac, 0x6e, 0x3d, 0x29, 0xeb, 0x0c, 0xed, 0x7c,
84823 + 0x3e, 0xc7, 0x8b, 0x3e, 0x5d, 0x38, 0xad, 0x4e, 0xdf, 0x22, 0xeb, 0xd4,
84824 + 0x3b, 0x70, 0x92, 0xf6, 0xda, 0x9f, 0x5b, 0xca, 0xd8, 0x2f, 0x31, 0xdf,
84825 + 0x6f, 0x85, 0x59, 0xaf, 0xee, 0x3a, 0x05, 0x27, 0xf6, 0x09, 0xc7, 0x5a,
84826 + 0x8a, 0xbb, 0xa8, 0xa7, 0xce, 0xb4, 0x8a, 0xeb, 0xc7, 0xd6, 0xe0, 0xf4,
84827 + 0xce, 0x22, 0xe7, 0x7a, 0x35, 0x6e, 0x7d, 0x86, 0x9c, 0xab, 0x67, 0x16,
84828 + 0x39, 0x17, 0xb9, 0x5c, 0xec, 0x41, 0xc5, 0x8b, 0x68, 0x21, 0x41, 0x5e,
84829 + 0x21, 0xfc, 0x22, 0x8c, 0xa7, 0xf2, 0x1d, 0xb8, 0x25, 0xdd, 0x84, 0x71,
84830 + 0xf2, 0xad, 0x1c, 0xf1, 0x22, 0x97, 0x67, 0x5c, 0x19, 0x6d, 0xe4, 0xa5,
84831 + 0xf1, 0x5a, 0xc0, 0x4b, 0x77, 0xef, 0xad, 0xa5, 0x2d, 0x27, 0xbb, 0x25,
84832 + 0x4f, 0x23, 0xff, 0xcd, 0x4b, 0xac, 0x56, 0x98, 0xb7, 0xfe, 0xaf, 0x7a,
84833 + 0xc9, 0x4d, 0x83, 0xba, 0x82, 0xaf, 0x65, 0x35, 0xfc, 0x55, 0xfb, 0x76,
84834 + 0x25, 0xd9, 0xe0, 0xbe, 0x83, 0x4a, 0xdf, 0xb6, 0x70, 0x92, 0x63, 0xba,
84835 + 0x37, 0x2b, 0x76, 0x49, 0x19, 0xcc, 0xd1, 0x8f, 0x19, 0xf5, 0xd0, 0xea,
84836 + 0x35, 0x39, 0xd7, 0xc4, 0xd8, 0xc1, 0xf8, 0x6b, 0xa7, 0xc8, 0xa3, 0x5a,
84837 + 0xbb, 0x5b, 0x55, 0x8f, 0xbc, 0x9f, 0x67, 0x68, 0xaa, 0xf8, 0x58, 0x0a,
84838 + 0x15, 0x69, 0xbf, 0x55, 0x27, 0xf5, 0x97, 0x6c, 0x60, 0x3c, 0x68, 0x5d,
84839 + 0xff, 0xb2, 0xf0, 0xfb, 0x39, 0x11, 0x6d, 0x0a, 0x1b, 0xb0, 0xce, 0xd6,
84840 + 0x19, 0x03, 0xd7, 0x38, 0xbd, 0x9c, 0x87, 0x51, 0x7b, 0x03, 0xee, 0xb2,
84841 + 0x5b, 0xa7, 0x1e, 0xa7, 0x6d, 0xe1, 0xce, 0x0d, 0xe8, 0xe4, 0xb3, 0x91,
84842 + 0x4c, 0xf3, 0x74, 0x2f, 0x75, 0x7d, 0x7c, 0x76, 0xcc, 0x5d, 0xf7, 0x97,
84843 + 0x33, 0xe4, 0xa3, 0xe4, 0xd7, 0x5f, 0xcd, 0xb4, 0x26, 0x87, 0xd4, 0x1e,
84844 + 0x05, 0x73, 0x24, 0x97, 0x4c, 0x90, 0x53, 0x05, 0xf0, 0x99, 0xb4, 0x45,
84845 + 0x1f, 0x00, 0x6d, 0xae, 0x83, 0x79, 0xc5, 0x13, 0x4e, 0xbd, 0x19, 0x35,
84846 + 0x44, 0x3f, 0xeb, 0x0b, 0x4b, 0xf1, 0x14, 0x63, 0x6f, 0xf3, 0xb5, 0x7a,
84847 + 0xf0, 0x39, 0x68, 0xf0, 0x99, 0x3f, 0x75, 0x1a, 0xcc, 0x1a, 0x3c, 0x30,
84848 + 0x12, 0x4d, 0xdc, 0xc4, 0x38, 0xdb, 0x79, 0xad, 0x7e, 0xf4, 0x14, 0x63,
84849 + 0xe0, 0x7c, 0xd3, 0x96, 0xf3, 0x26, 0xe4, 0x3b, 0x01, 0xd7, 0xce, 0x4f,
84850 + 0xdb, 0xe2, 0x27, 0x3a, 0x71, 0x33, 0x84, 0xcf, 0xd1, 0xce, 0xdf, 0xb7,
84851 + 0x63, 0x98, 0x24, 0xdf, 0xf8, 0x2c, 0xfd, 0xe3, 0x8c, 0x1d, 0x49, 0x5d,
84852 + 0xa3, 0xea, 0xd8, 0x40, 0xff, 0x78, 0xd7, 0x4e, 0xd0, 0x77, 0x3e, 0xc6,
84853 + 0xab, 0x8d, 0xfe, 0x10, 0x63, 0x1d, 0x8d, 0x7e, 0x10, 0x72, 0xcf, 0x95,
84854 + 0x8e, 0x65, 0x9a, 0xbb, 0x1f, 0x42, 0x73, 0xec, 0x66, 0xa5, 0x8e, 0x79,
84855 + 0x6a, 0x10, 0xf7, 0x14, 0x6e, 0xc0, 0x89, 0x6c, 0x64, 0x9a, 0x39, 0xf9,
84856 + 0xc6, 0xa5, 0x0a, 0xee, 0x20, 0x67, 0x5b, 0x5f, 0xad, 0xb4, 0x4e, 0x3d,
84857 + 0xa5, 0x44, 0x68, 0x93, 0x8c, 0x97, 0xf4, 0xcf, 0xcf, 0xb2, 0xcc, 0x99,
84858 + 0x6c, 0x35, 0x36, 0x8c, 0xd8, 0xe8, 0xcf, 0x54, 0xa0, 0x6a, 0xa7, 0x1f,
84859 + 0xf7, 0x8f, 0xe9, 0xc8, 0x64, 0x64, 0x1d, 0xd9, 0x6f, 0xd5, 0x12, 0x37,
84860 + 0x46, 0x89, 0x0d, 0x2f, 0x2d, 0x01, 0xa6, 0xf7, 0xae, 0xc1, 0x81, 0x9d,
84861 + 0x3a, 0xe3, 0x5d, 0xd1, 0x3e, 0x82, 0x71, 0x97, 0x93, 0xa7, 0x84, 0x93,
84862 + 0x57, 0x99, 0x12, 0xfb, 0xa2, 0x3d, 0x8f, 0x50, 0x07, 0xb7, 0x15, 0xc4,
84863 + 0xee, 0x12, 0x9c, 0xa3, 0x30, 0x06, 0x69, 0x23, 0xfb, 0xec, 0x26, 0xe6,
84864 + 0xe6, 0x01, 0x58, 0xb4, 0x11, 0x4b, 0xde, 0x53, 0xa5, 0x8d, 0x58, 0xb4,
84865 + 0x11, 0x8b, 0x36, 0x62, 0xd1, 0x46, 0xac, 0xfc, 0x52, 0xe6, 0x4c, 0x3a,
84866 + 0xc6, 0xd9, 0xe6, 0xb6, 0x51, 0x72, 0xf7, 0xa0, 0xd8, 0x4a, 0x0c, 0x5f,
84867 + 0xcf, 0xf4, 0x2b, 0xda, 0x9d, 0x37, 0x60, 0x24, 0x7b, 0x23, 0x2f, 0x05,
84868 + 0xb7, 0xd2, 0x56, 0x1e, 0xcd, 0x89, 0xed, 0xe9, 0xee, 0xef, 0xd3, 0x3c,
84869 + 0x9b, 0xdf, 0x33, 0x1b, 0xd5, 0xe2, 0x03, 0x8c, 0x45, 0xee, 0x7d, 0x39,
84870 + 0x73, 0xec, 0xc7, 0x68, 0xfe, 0x82, 0x5f, 0x7c, 0x4f, 0xce, 0xab, 0xb4,
84871 + 0xcb, 0x6f, 0xc5, 0x74, 0x30, 0x0f, 0x90, 0x73, 0xee, 0x32, 0x4e, 0x19,
84872 + 0x57, 0x71, 0x4c, 0x55, 0x83, 0x9b, 0xf0, 0xf5, 0x41, 0x9d, 0xb1, 0xca,
84873 + 0xc0, 0x93, 0x39, 0x89, 0xe5, 0xe2, 0xdf, 0x32, 0x0f, 0xe2, 0xeb, 0x1e,
84874 + 0xd4, 0xb4, 0x7b, 0x11, 0x70, 0xfd, 0xbc, 0x39, 0xbc, 0x43, 0xb1, 0xe9,
84875 + 0x3b, 0xba, 0x9c, 0x03, 0x9d, 0x0a, 0xeb, 0x0d, 0x38, 0xbd, 0xbb, 0x1d,
84876 + 0xff, 0x6d, 0xa7, 0x87, 0x3c, 0xc0, 0x59, 0xfa, 0x52, 0x5c, 0x4f, 0x4e,
84877 + 0x2b, 0xd1, 0xd8, 0x2c, 0xa5, 0x1d, 0xf7, 0x90, 0xfb, 0x6f, 0x18, 0x8c,
84878 + 0x74, 0x33, 0x66, 0x1b, 0xb7, 0x28, 0x4b, 0x51, 0xc5, 0x1c, 0xa0, 0x8d,
84879 + 0x39, 0xc0, 0x83, 0xc4, 0x80, 0xaf, 0x66, 0xbc, 0x68, 0x59, 0x2c, 0xbf,
84880 + 0x4d, 0xa6, 0xbb, 0x6b, 0x3b, 0x2f, 0x90, 0xa3, 0xce, 0x37, 0x3b, 0xe4,
84881 + 0x2c, 0x8e, 0x72, 0xf6, 0xba, 0x29, 0x24, 0x28, 0x7f, 0xcc, 0xcd, 0x2f,
84882 + 0x12, 0x38, 0x98, 0x27, 0x6e, 0x70, 0xdc, 0xaf, 0xb4, 0xfd, 0x84, 0xf9,
84883 + 0xb0, 0x70, 0x7b, 0x13, 0x13, 0x39, 0x97, 0xff, 0x47, 0xea, 0x88, 0x19,
84884 + 0xd9, 0x41, 0xbd, 0xcb, 0xaf, 0x9a, 0x78, 0x64, 0xaf, 0xf8, 0xb0, 0x89,
84885 + 0xf6, 0x21, 0x3d, 0x7c, 0x9b, 0x1a, 0x0d, 0xae, 0xe3, 0xb3, 0x05, 0x9c,
84886 + 0xcf, 0xc7, 0x33, 0x32, 0x8f, 0x1a, 0x5a, 0x18, 0x9b, 0xdf, 0x9c, 0xd0,
84887 + 0xb1, 0x88, 0x71, 0xfa, 0x9d, 0x89, 0x18, 0x96, 0x32, 0x66, 0x3b, 0xcc,
84888 + 0x1f, 0x12, 0x19, 0xf1, 0x45, 0xf2, 0x81, 0x09, 0x8d, 0x71, 0x56, 0xd6,
84889 + 0x87, 0x9e, 0xc0, 0xd8, 0x6a, 0x0d, 0xfb, 0xdc, 0xf3, 0x7c, 0x7e, 0xab,
84890 + 0x81, 0x58, 0xd9, 0x39, 0xe0, 0xc7, 0xa7, 0x87, 0x36, 0xe3, 0xf5, 0xc5,
84891 + 0xc2, 0x95, 0xd6, 0x38, 0xa2, 0x9f, 0xc7, 0x29, 0x73, 0x8c, 0xbc, 0x78,
84892 + 0x94, 0x79, 0xd7, 0xc2, 0x7d, 0x6b, 0xf0, 0xc9, 0x5d, 0x17, 0xf2, 0xb4,
84893 + 0x33, 0x71, 0xeb, 0x6e, 0xda, 0xc4, 0xfa, 0x00, 0x6d, 0xa2, 0x96, 0x36,
84894 + 0x61, 0x67, 0xa2, 0xc9, 0x02, 0x6d, 0x22, 0x46, 0xdc, 0xc8, 0x0e, 0x48,
84895 + 0x39, 0xf7, 0x9d, 0x99, 0xbb, 0xe4, 0xdd, 0x65, 0x83, 0xbe, 0xb3, 0x75,
84896 + 0xc0, 0xd9, 0xec, 0x65, 0xbc, 0x79, 0xa4, 0xa3, 0x89, 0xd8, 0x72, 0x23,
84897 + 0xf6, 0x0c, 0x36, 0xa1, 0x85, 0x31, 0x63, 0x61, 0x1a, 0x77, 0x84, 0xa1,
84898 + 0xce, 0x0f, 0x23, 0xb2, 0xe1, 0x1d, 0x44, 0xa7, 0xef, 0x56, 0x5a, 0x8f,
84899 + 0xbe, 0xa8, 0x44, 0x36, 0xfe, 0x84, 0x36, 0x7c, 0x56, 0x91, 0xb6, 0x9b,
84900 + 0x70, 0x35, 0xfd, 0xe4, 0x2a, 0xfa, 0x84, 0xc6, 0x5c, 0x52, 0x63, 0xdd,
84901 + 0xfe, 0x41, 0x1f, 0xe6, 0x33, 0xd7, 0x93, 0xb3, 0xca, 0xb1, 0x31, 0x2f,
84902 + 0xb2, 0x3b, 0xf5, 0xa9, 0x47, 0xd0, 0x08, 0x63, 0xec, 0x46, 0x6c, 0x1d,
84903 + 0xd4, 0x10, 0xe5, 0xbd, 0xbe, 0x9d, 0x0b, 0xd0, 0x4c, 0xfb, 0xd6, 0xe8,
84904 + 0xa7, 0xbd, 0x83, 0x2a, 0x16, 0x8c, 0xdd, 0x80, 0x1d, 0x83, 0x0a, 0xee,
84905 + 0x8b, 0x2a, 0x68, 0x19, 0x91, 0x1c, 0x2c, 0x86, 0xa7, 0x32, 0xc2, 0x15,
84906 + 0xa1, 0xb4, 0x5c, 0x4b, 0x8e, 0x4c, 0xee, 0xf9, 0x93, 0x9c, 0xcc, 0xb9,
84907 + 0xe8, 0x53, 0x7e, 0x53, 0xa6, 0x1d, 0x9f, 0xdb, 0xd9, 0x80, 0xab, 0x76,
84908 + 0xeb, 0xd6, 0x69, 0xc5, 0x59, 0x7a, 0x80, 0x7c, 0xde, 0xaf, 0x16, 0xe7,
84909 + 0xfc, 0xc1, 0xc1, 0x67, 0x19, 0x2f, 0x7e, 0xe2, 0x04, 0xf5, 0xa5, 0xe8,
84910 + 0x8b, 0x27, 0xb1, 0xb6, 0xa3, 0x1d, 0x6b, 0xf7, 0x8a, 0xbe, 0x1c, 0xe6,
84911 + 0x87, 0xcc, 0xfd, 0x26, 0xa7, 0xf0, 0x0e, 0xfd, 0x77, 0x11, 0x39, 0xed,
84912 + 0x52, 0xc6, 0x89, 0x37, 0x16, 0x9b, 0xd4, 0x9f, 0xee, 0x9e, 0xf5, 0x9b,
84913 + 0x67, 0x9a, 0xa8, 0x1d, 0xd4, 0x19, 0x67, 0x4c, 0xcc, 0xda, 0x2b, 0xed,
84914 + 0x99, 0xb8, 0x67, 0x50, 0x4f, 0x3d, 0xcd, 0xb9, 0x14, 0xbb, 0x11, 0xcc,
84915 + 0xae, 0x61, 0xec, 0x3f, 0x39, 0x29, 0x38, 0xd5, 0x89, 0x13, 0xcc, 0x03,
84916 + 0xde, 0x7c, 0x2c, 0xda, 0xfd, 0x33, 0xe6, 0x74, 0xef, 0x50, 0x46, 0x96,
84917 + 0xfd, 0x1b, 0xe0, 0xbc, 0x56, 0xa4, 0xf5, 0x8d, 0xff, 0x8c, 0x28, 0xfd,
84918 + 0xbb, 0x0b, 0xb5, 0xd4, 0xc9, 0x81, 0xc1, 0x95, 0xf0, 0xd3, 0x16, 0x1e,
84919 + 0xc9, 0x88, 0xdd, 0x10, 0xbf, 0x77, 0x7e, 0x02, 0x5b, 0xf7, 0x17, 0xf3,
84920 + 0xbc, 0x7b, 0x06, 0x36, 0xd1, 0xc6, 0x85, 0xb3, 0xc7, 0x68, 0xef, 0x98,
84921 + 0xe7, 0x43, 0xb2, 0x9e, 0x18, 0x91, 0x58, 0x4e, 0xcc, 0x7c, 0xd4, 0x20,
84922 + 0xae, 0xd6, 0x47, 0xc2, 0x2d, 0xaa, 0x95, 0x60, 0x5e, 0x17, 0xbe, 0x0f,
84923 + 0xd2, 0xbe, 0x85, 0x75, 0x4b, 0x36, 0x61, 0x4f, 0xd6, 0x8b, 0xaa, 0xc5,
84924 + 0x1e, 0xe2, 0xb1, 0x60, 0x94, 0x15, 0x94, 0xe7, 0x6b, 0x21, 0x7e, 0x22,
84925 + 0xf3, 0xeb, 0xc1, 0x99, 0x78, 0xf3, 0x86, 0xac, 0xfc, 0x96, 0x05, 0x73,
84926 + 0xbe, 0xcf, 0xa2, 0x83, 0x73, 0x2f, 0xfe, 0x98, 0xc0, 0x3d, 0x63, 0xc2,
84927 + 0xd5, 0xc8, 0xe7, 0x6c, 0x3f, 0xfe, 0x3a, 0x2b, 0x9c, 0x6e, 0x33, 0xee,
84928 + 0x69, 0x2f, 0xe7, 0x6e, 0x62, 0x77, 0xad, 0xd3, 0x1e, 0x34, 0x93, 0x93,
84929 + 0xe9, 0xb9, 0xac, 0x1a, 0xb1, 0x52, 0x88, 0xf4, 0xa7, 0x20, 0x71, 0xa2,
84930 + 0xd5, 0xe2, 0x0c, 0x53, 0x36, 0xb9, 0xa5, 0xed, 0x41, 0x1d, 0x7d, 0x5c,
84931 + 0x7e, 0x44, 0xae, 0x9d, 0xf6, 0xf3, 0xac, 0x5d, 0x0d, 0xcd, 0xb5, 0x75,
84932 + 0x2f, 0x96, 0x16, 0x2c, 0xe2, 0xed, 0x52, 0xb4, 0x3d, 0x16, 0xc0, 0x35,
84933 + 0xe4, 0x26, 0x57, 0xa7, 0x9f, 0x70, 0x66, 0x11, 0x7b, 0xdb, 0x46, 0xa2,
84934 + 0xc1, 0x23, 0xe4, 0x81, 0x07, 0x96, 0xfc, 0xd4, 0xf1, 0x98, 0xae, 0x5f,
84935 + 0x68, 0xf4, 0x00, 0xe7, 0x33, 0x1d, 0xfa, 0xd4, 0x0e, 0x04, 0x90, 0x20,
84936 + 0x7e, 0x5e, 0x99, 0x69, 0x40, 0xfb, 0xee, 0x7e, 0xce, 0x7f, 0x10, 0x57,
84937 + 0xf2, 0xfb, 0x62, 0xc6, 0x37, 0x8d, 0xd8, 0xaa, 0xc9, 0xe7, 0x82, 0xd8,
84938 + 0x4b, 0x98, 0x7e, 0xe4, 0x2c, 0xbd, 0xb3, 0xdd, 0xba, 0x63, 0x36, 0xf5,
84939 + 0xd5, 0x42, 0x5c, 0x5e, 0x9a, 0x89, 0x6c, 0xbc, 0x59, 0x51, 0xb0, 0xb2,
84940 + 0xdd, 0x60, 0xdb, 0x01, 0xc4, 0x32, 0xb2, 0x36, 0x70, 0xe8, 0xa1, 0x3a,
84941 + 0x58, 0xad, 0x01, 0xda, 0xe9, 0x11, 0x45, 0xd6, 0x35, 0x44, 0x6f, 0x4d,
84942 + 0xb8, 0x8a, 0x7c, 0x44, 0x23, 0x66, 0xc7, 0x0a, 0xa2, 0x43, 0x60, 0x6d,
84943 + 0x6e, 0x0d, 0xf6, 0x0c, 0x8b, 0x7f, 0x0a, 0x76, 0x3a, 0x4e, 0xe5, 0xe2,
84944 + 0xa8, 0xf1, 0x36, 0x75, 0xf8, 0xc6, 0x84, 0x60, 0x90, 0x82, 0x79, 0xb4,
84945 + 0x63, 0x55, 0x97, 0x58, 0x2b, 0xb8, 0x15, 0xa6, 0xdf, 0x76, 0xe0, 0xd3,
84946 + 0x8c, 0x6d, 0xd5, 0x9c, 0x83, 0x55, 0x4b, 0x9a, 0xe8, 0xbf, 0xc4, 0xc9,
84947 + 0x89, 0x20, 0xaf, 0x10, 0x8e, 0xef, 0x6f, 0xe4, 0xa5, 0xf1, 0x5a, 0xc0,
84948 + 0x4b, 0xe7, 0x3d, 0x15, 0x67, 0xf6, 0x93, 0x33, 0xed, 0x15, 0x0e, 0x22,
84949 + 0x3e, 0xe8, 0xc7, 0xd3, 0x13, 0x20, 0x8f, 0x31, 0xc8, 0x43, 0x04, 0xff,
84950 + 0x64, 0x9e, 0x98, 0xc7, 0x0c, 0xc6, 0x11, 0x1d, 0x29, 0x72, 0x8e, 0x93,
84951 + 0xc3, 0x7a, 0xcf, 0x5a, 0x44, 0xb5, 0xbf, 0x26, 0x7e, 0x9d, 0x1a, 0x6d,
84952 + 0xc7, 0x74, 0x96, 0xb8, 0xb5, 0xb8, 0x1d, 0x6f, 0xe7, 0x36, 0xd1, 0xff,
84953 + 0x55, 0x9c, 0x25, 0x66, 0x69, 0x73, 0x05, 0xd7, 0x05, 0x43, 0xfd, 0xb4,
84954 + 0xd7, 0x0e, 0x59, 0x03, 0x55, 0xe2, 0xc4, 0xac, 0x6b, 0xd2, 0xcf, 0x3a,
84955 + 0xb5, 0x3a, 0x73, 0x2a, 0x35, 0x81, 0x0c, 0x31, 0xcb, 0xce, 0xca, 0x7c,
84956 + 0x6d, 0xc6, 0x56, 0xe2, 0xd5, 0xd6, 0x9c, 0xd8, 0x37, 0x6d, 0x7a, 0x50,
84957 + 0x0f, 0x16, 0x68, 0xdb, 0xea, 0x5e, 0x91, 0x61, 0xa2, 0x8f, 0xb1, 0xfd,
84958 + 0x33, 0x1d, 0x26, 0x76, 0xe4, 0x24, 0x0e, 0x0a, 0x07, 0xd3, 0x98, 0x97,
84959 + 0x24, 0xd1, 0x43, 0x9c, 0x7a, 0xdb, 0xee, 0xc4, 0x0a, 0xe2, 0xd4, 0x2f,
84960 + 0x98, 0xa7, 0xdc, 0x49, 0x9c, 0x7a, 0xc3, 0x2e, 0xe2, 0xd4, 0xcd, 0x13,
84961 + 0x62, 0x0b, 0x45, 0x5e, 0x7e, 0xc2, 0x6e, 0x6b, 0x90, 0xdf, 0x39, 0xab,
84962 + 0x36, 0x7f, 0x57, 0x5c, 0x58, 0x85, 0x97, 0x86, 0xcb, 0x7b, 0xc5, 0x91,
84963 + 0xe4, 0xed, 0xe4, 0xcc, 0x47, 0x47, 0xcb, 0x9c, 0xf7, 0xb8, 0x9b, 0x5b,
84964 + 0xcf, 0x32, 0xcb, 0xfb, 0x96, 0xe5, 0xfd, 0x06, 0x0b, 0x5f, 0x5d, 0x22,
84965 + 0x3c, 0x53, 0xd6, 0x81, 0x2a, 0xc8, 0x27, 0xbb, 0x31, 0xbe, 0xf3, 0x3d,
84966 + 0x3c, 0x32, 0xa8, 0xde, 0x5c, 0xc3, 0xd8, 0x7a, 0x8b, 0xb2, 0x19, 0x9e,
84967 + 0xb8, 0xbc, 0x47, 0x2a, 0x6b, 0xe5, 0xcc, 0x5d, 0x26, 0xb3, 0xe8, 0xdb,
84968 + 0x57, 0x83, 0x43, 0x41, 0xc7, 0x79, 0xda, 0x98, 0x27, 0x3f, 0x13, 0x20,
84969 + 0xb8, 0x19, 0xa8, 0xa0, 0x2f, 0xdc, 0xfc, 0x5b, 0xbf, 0xdd, 0x58, 0xde,
84970 + 0x3b, 0xd8, 0x88, 0xbb, 0x76, 0x3d, 0x8c, 0x9e, 0x5d, 0x7f, 0x8b, 0x4f,
84971 + 0x0e, 0x2d, 0xec, 0x9f, 0xe7, 0x71, 0x9c, 0xab, 0xdb, 0xa7, 0x70, 0x2a,
84972 + 0xce, 0xd8, 0x18, 0x52, 0xf0, 0xbd, 0xab, 0x16, 0x8a, 0x1c, 0xfe, 0xbd,
84973 + 0xef, 0x68, 0xae, 0xbc, 0x5b, 0x4b, 0x3e, 0x92, 0x98, 0xc3, 0xf1, 0x53,
84974 + 0xf6, 0x8a, 0xfa, 0xd2, 0xbb, 0xc2, 0x7f, 0x40, 0x5b, 0x3f, 0x16, 0x19,
84975 + 0xfc, 0x2b, 0xcb, 0x78, 0xcd, 0x49, 0xae, 0x96, 0x7a, 0x15, 0xa5, 0x36,
84976 + 0xfe, 0x96, 0x9c, 0x90, 0xbc, 0xd0, 0xe0, 0xff, 0x91, 0xeb, 0x44, 0x3e,
84977 + 0x9f, 0x95, 0xe5, 0xbf, 0xe4, 0x24, 0xbb, 0xe5, 0xbb, 0x94, 0x59, 0xc7,
84978 + 0x67, 0x52, 0xae, 0xfc, 0xec, 0xf9, 0x92, 0x9c, 0x4a, 0x68, 0x0d, 0x45,
84979 + 0x39, 0x9f, 0xa6, 0x9c, 0x33, 0x8b, 0x93, 0x50, 0xaf, 0x9d, 0x29, 0xab,
84980 + 0xdc, 0xee, 0xff, 0x3a, 0x2f, 0xab, 0x58, 0xee, 0x6f, 0xe6, 0xc8, 0xbe,
84981 + 0x80, 0x7a, 0xed, 0xcc, 0x75, 0xf2, 0x0a, 0xfa, 0x6f, 0x34, 0xb8, 0xd5,
84982 + 0x5d, 0x9f, 0x36, 0xb0, 0xf6, 0xe2, 0x1c, 0x4b, 0xb0, 0x03, 0xe3, 0x76,
84983 + 0xb0, 0x94, 0x53, 0xc9, 0x2d, 0x13, 0x5f, 0x66, 0xce, 0xf6, 0x94, 0x1d,
84984 + 0xe9, 0x5a, 0xa7, 0xb4, 0x26, 0x17, 0x31, 0xce, 0xa0, 0x5e, 0xd6, 0xb0,
84985 + 0x13, 0xee, 0xef, 0xf9, 0xe5, 0xa3, 0x09, 0xe4, 0x69, 0x8f, 0xaf, 0xd8,
84986 + 0x91, 0x0d, 0xa7, 0xdc, 0xfd, 0x3b, 0x13, 0x2f, 0xe7, 0x5f, 0x2d, 0xed,
84987 + 0x33, 0x95, 0x7f, 0x4f, 0x6c, 0xe6, 0x1a, 0xaa, 0xcc, 0xbf, 0x9c, 0xb1,
84988 + 0x6e, 0x90, 0xb5, 0x0a, 0xcb, 0xa2, 0x9f, 0xf7, 0x66, 0xac, 0xb0, 0x8a,
84989 + 0xeb, 0x90, 0x0a, 0xc9, 0xbe, 0xc4, 0xd6, 0xd2, 0x6f, 0x52, 0xb1, 0xde,
84990 + 0xef, 0x58, 0x13, 0x02, 0x8c, 0xd2, 0x39, 0xb6, 0x18, 0xac, 0xc9, 0x2b,
84991 + 0xc8, 0xc5, 0x64, 0xbd, 0x01, 0xd6, 0x6c, 0x53, 0x43, 0x48, 0x3f, 0xcc,
84992 + 0x71, 0xfb, 0x30, 0x87, 0xf9, 0x54, 0x7c, 0x61, 0x6b, 0x77, 0xbb, 0x3a,
84993 + 0x57, 0x70, 0x36, 0x98, 0x54, 0x63, 0x12, 0x07, 0x50, 0x99, 0x96, 0xb3,
84994 + 0x26, 0x56, 0x97, 0x9f, 0x98, 0xba, 0x98, 0xd8, 0x52, 0x11, 0x85, 0xf7,
84995 + 0xbe, 0xbc, 0x17, 0xc1, 0x85, 0xbf, 0x70, 0x7e, 0x18, 0x8a, 0x61, 0xdb,
84996 + 0x64, 0xb9, 0x0f, 0x06, 0xfe, 0x7b, 0xe1, 0xd2, 0x8c, 0xb3, 0x2c, 0xf3,
84997 + 0x3d, 0x27, 0x39, 0x47, 0xda, 0x2e, 0xca, 0xfd, 0xe8, 0xbe, 0x4a, 0x1f,
84998 + 0xa5, 0xaf, 0xcd, 0x1a, 0x51, 0x15, 0x5b, 0x8d, 0x89, 0x39, 0xf2, 0x9b,
84999 + 0x3f, 0xf7, 0xb8, 0x67, 0xd3, 0x65, 0x0e, 0xe4, 0xfd, 0xf1, 0x04, 0xee,
85000 + 0x93, 0xf7, 0x30, 0x19, 0xb3, 0xee, 0xcd, 0xbb, 0xef, 0x77, 0x42, 0x7e,
85001 + 0x17, 0xf1, 0xde, 0x7c, 0x51, 0x7f, 0x0f, 0xe5, 0x03, 0xe4, 0xdd, 0x01,
85002 + 0xcb, 0x6b, 0x6e, 0x80, 0x4f, 0x97, 0x33, 0x67, 0x65, 0x5d, 0xfe, 0xdf,
85003 + 0x73, 0x24, 0x97, 0xff, 0x2a, 0xfd, 0xc9, 0xbb, 0x50, 0x3e, 0x5b, 0xf2,
85004 + 0xae, 0xa2, 0x52, 0xfc, 0x7c, 0xc6, 0x7d, 0xef, 0x5d, 0x35, 0xd7, 0xd1,
85005 + 0x2f, 0x67, 0xbb, 0xef, 0xeb, 0x89, 0x7e, 0x42, 0xa6, 0xe5, 0xcc, 0xd6,
85006 + 0x03, 0xb4, 0x91, 0xde, 0x39, 0xa5, 0x77, 0x0f, 0xba, 0xee, 0x20, 0x8e,
85007 + 0x2c, 0x22, 0xb7, 0x5a, 0xac, 0x44, 0xb4, 0x55, 0x4a, 0x37, 0xeb, 0x51,
85008 + 0x4f, 0x05, 0x91, 0xa1, 0xb8, 0xbf, 0xbd, 0xeb, 0xa3, 0x8c, 0xfd, 0x76,
85009 + 0xab, 0xe6, 0x53, 0x7f, 0x5e, 0x3a, 0x7b, 0x2d, 0x7b, 0xf1, 0x29, 0x3c,
85010 + 0x6f, 0xcf, 0xc1, 0xd4, 0x6f, 0xc9, 0x3d, 0xbf, 0x66, 0xfd, 0x4f, 0x41,
85011 + 0x62, 0x88, 0x4f, 0x8f, 0x6c, 0x8c, 0x7b, 0x22, 0xeb, 0xa7, 0xe9, 0xd3,
85012 + 0x85, 0xb8, 0x9e, 0xfa, 0x1a, 0xdb, 0xf8, 0x3e, 0xb9, 0x85, 0x3d, 0x43,
85013 + 0x7e, 0x51, 0x56, 0x6b, 0x4f, 0x85, 0x7a, 0xc6, 0x29, 0xbe, 0x77, 0x2d,
85014 + 0xbf, 0xfb, 0xbb, 0x06, 0xc1, 0xb4, 0xe5, 0x84, 0x28, 0x73, 0xbe, 0x19,
85015 + 0xd9, 0x53, 0xaf, 0xea, 0xd9, 0xcf, 0xab, 0x9b, 0xb1, 0x56, 0x8e, 0x7c,
85016 + 0x98, 0x11, 0xed, 0xd3, 0xb4, 0x8f, 0x76, 0x57, 0x46, 0x32, 0x56, 0x81,
85017 + 0x8f, 0x3a, 0xd3, 0xc6, 0xf1, 0x41, 0xd6, 0x28, 0x59, 0xce, 0xdd, 0xe3,
85018 + 0x97, 0xf7, 0x77, 0x98, 0x63, 0xdb, 0xf2, 0xbb, 0xa6, 0x6e, 0x33, 0xa5,
85019 + 0x7d, 0x24, 0xe6, 0xc8, 0x8c, 0x97, 0xf7, 0xc8, 0x6f, 0xc8, 0x55, 0x07,
85020 + 0x70, 0xaf, 0x2d, 0xeb, 0x0e, 0xff, 0x3f, 0x45, 0x18, 0xff, 0x64, 0x3c,
85021 + 0x59, 0x00, 0x00, 0x00 };
85022
85023 static const u32 bnx2_CP_b09FwData[(0x84/4) + 1] = {
85024 0x00000000, 0x0000001b, 0x0000000f, 0x0000000a, 0x00000008, 0x00000006,
85025 @@ -2057,1088 +2079,1076 @@
85026 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002,
85027 0x00000001, 0x00000001, 0x00000001, 0x00000000 };
85028 static const u32 bnx2_CP_b09FwRodata[(0x16c/4) + 1] = {
85029 - 0x80080100, 0x80080080, 0x80080000, 0x08001800, 0x08001800, 0x08001838,
85030 - 0x08001838, 0x0800184c, 0x0800181c, 0x08001a74, 0x08001a40, 0x08001acc,
85031 - 0x08001acc, 0x08001b54, 0x08001a84, 0x80080240, 0x080021c4, 0x08002010,
85032 - 0x080021ec, 0x08002284, 0x080023d4, 0x08002420, 0x08002544, 0x0800244c,
85033 - 0x080024d0, 0x08002080, 0x080029f8, 0x0800299c, 0x0800202c, 0x0800202c,
85034 - 0x0800202c, 0x080025b8, 0x080025b8, 0x0800202c, 0x0800202c, 0x08002874,
85035 - 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x080028d4, 0x0800202c,
85036 - 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c,
85037 - 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c,
85038 - 0x0800202c, 0x08002440, 0x0800202c, 0x0800202c, 0x08002944, 0x0800202c,
85039 - 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c,
85040 - 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c,
85041 - 0x0800202c, 0x0800202c, 0x0800202c, 0x0800202c, 0x08002798, 0x0800202c,
85042 - 0x0800202c, 0x08002700, 0x0800265c, 0x080037c0, 0x08003794, 0x08003760,
85043 - 0x08003734, 0x08003714, 0x080036c8, 0x80080100, 0x80080080, 0x80080000,
85044 + 0x80080100, 0x80080080, 0x80080000, 0x08001744, 0x08001744, 0x0800177c,
85045 + 0x0800177c, 0x08001790, 0x08001760, 0x080019b8, 0x08001984, 0x08001a10,
85046 + 0x08001a10, 0x08001a98, 0x080019c8, 0x80080240, 0x08003260, 0x080031cc,
85047 + 0x08003288, 0x080032b0, 0x080032d8, 0x080032fc, 0x08003344, 0x08003320,
85048 + 0x08003368, 0x08003234, 0x0800345c, 0x0800344c, 0x080031e8, 0x080031e8,
85049 + 0x080031e8, 0x080033bc, 0x080033bc, 0x080031e8, 0x080031e8, 0x0800343c,
85050 + 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x0800342c, 0x080031e8,
85051 + 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8,
85052 + 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8,
85053 + 0x080031e8, 0x0800341c, 0x080031e8, 0x080031e8, 0x0800340c, 0x080031e8,
85054 + 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8,
85055 + 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8,
85056 + 0x080031e8, 0x080031e8, 0x080031e8, 0x080031e8, 0x080033f4, 0x080031e8,
85057 + 0x080031e8, 0x080033e4, 0x080033d4, 0x08003d6c, 0x08003d40, 0x08003d0c,
85058 + 0x08003ce0, 0x08003cc0, 0x08003c74, 0x80080100, 0x80080080, 0x80080000,
85059 0x80080080, 0x00000000 };
85060
85061 static struct fw_info bnx2_cp_fw_09 = {
85062 - /* Firmware version: 4.6.15 */
85063 + /* Firmware version: 4.4.23 */
85064 .ver_major = 0x4,
85065 - .ver_minor = 0x6,
85066 - .ver_fix = 0xf,
85067 + .ver_minor = 0x4,
85068 + .ver_fix = 0x17,
85069
85070 .start_addr = 0x08000080,
85071
85072 .text_addr = 0x08000000,
85073 - .text_len = 0x5418,
85074 + .text_len = 0x5938,
85075 .text_index = 0x0,
85076 .gz_text = bnx2_CP_b09FwText,
85077 .gz_text_len = sizeof(bnx2_CP_b09FwText),
85078
85079 - .data_addr = 0x080055a0,
85080 + .data_addr = 0x08005ac0,
85081 .data_len = 0x84,
85082 .data_index = 0x0,
85083 .data = bnx2_CP_b09FwData,
85084
85085 - .sbss_addr = 0x08005624,
85086 + .sbss_addr = 0x08005b44,
85087 .sbss_len = 0x91,
85088 .sbss_index = 0x0,
85089
85090 - .bss_addr = 0x080056b8,
85091 + .bss_addr = 0x08005bd8,
85092 .bss_len = 0x19c,
85093 .bss_index = 0x0,
85094
85095 - .rodata_addr = 0x08005418,
85096 + .rodata_addr = 0x08005938,
85097 .rodata_len = 0x16c,
85098 .rodata_index = 0x0,
85099 .rodata = bnx2_CP_b09FwRodata,
85100 };
85101
85102 static u8 bnx2_RXP_b09FwText[] = {
85103 - 0xec, 0x5c, 0x7d, 0x70, 0x1c, 0xe5, 0x79, 0xff, 0xbd, 0x7b, 0x7b, 0xd2,
85104 - 0x4a, 0x3a, 0x9d, 0x56, 0xa7, 0x93, 0x7c, 0x22, 0x04, 0xef, 0xa2, 0x3d,
85105 - 0xf9, 0xb0, 0x0c, 0xec, 0x9d, 0x4f, 0xb6, 0xa0, 0xdb, 0xb2, 0x83, 0x0d,
85106 - 0x11, 0x21, 0x13, 0x84, 0x4d, 0x52, 0x33, 0x49, 0x27, 0x37, 0xc6, 0x18,
85107 - 0x81, 0x4d, 0x70, 0x0d, 0x6d, 0x55, 0x86, 0x19, 0x6f, 0x2c, 0x7f, 0x01,
85108 - 0x27, 0x9d, 0x62, 0x64, 0x63, 0xd2, 0x0e, 0x68, 0x6c, 0x59, 0x08, 0x7c,
85109 - 0xd2, 0x61, 0x20, 0xad, 0xe8, 0x84, 0xfa, 0x26, 0xd8, 0xe0, 0x94, 0xcf,
85110 - 0x21, 0x0c, 0xc3, 0x1f, 0xcd, 0xa0, 0x62, 0x3e, 0xcc, 0x94, 0xa1, 0x26,
85111 - 0x38, 0xa9, 0xdd, 0xb8, 0x7e, 0xfb, 0x3c, 0x7b, 0x3a, 0x9b, 0x90, 0x26,
85112 - 0x9d, 0xfc, 0xd1, 0xff, 0xf6, 0x99, 0xb9, 0xb9, 0xbd, 0x77, 0xdf, 0xf7,
85113 - 0xf9, 0xfe, 0x7c, 0x3d, 0xf2, 0x5f, 0x47, 0x50, 0x8f, 0x39, 0x68, 0xa4,
85114 - 0x4f, 0x76, 0xc3, 0xc0, 0xc6, 0xf4, 0x65, 0x4b, 0x2e, 0xa3, 0xc7, 0xee,
85115 - 0x50, 0x53, 0x8d, 0xca, 0xeb, 0x02, 0x01, 0x04, 0x10, 0x40, 0x00, 0x01,
85116 - 0x04, 0x10, 0x40, 0x00, 0x01, 0x04, 0x10, 0x40, 0x00, 0x01, 0x04, 0x10,
85117 - 0x40, 0x00, 0x01, 0x04, 0x10, 0x40, 0x00, 0x01, 0x04, 0x10, 0x40, 0x00,
85118 - 0x01, 0x04, 0x10, 0x40, 0x00, 0x01, 0x04, 0x10, 0x40, 0x00, 0x01, 0x04,
85119 - 0x10, 0x40, 0x00, 0x01, 0x04, 0x10, 0x40, 0x00, 0x01, 0x04, 0x10, 0x40,
85120 - 0x00, 0x01, 0x04, 0x10, 0x40, 0x00, 0x01, 0xfc, 0x7f, 0x40, 0x08, 0xd0,
85121 - 0xf9, 0xbb, 0x71, 0xee, 0x03, 0x4d, 0x71, 0xdc, 0x7b, 0xaf, 0xb6, 0xa0,
85122 - 0x85, 0x9c, 0x99, 0x7b, 0x6f, 0xb1, 0x00, 0xb7, 0xd8, 0x65, 0x2c, 0xc3,
85123 - 0x7f, 0x4b, 0x2f, 0xae, 0x82, 0xd7, 0xbf, 0xea, 0x9c, 0x79, 0xec, 0xf9,
85124 - 0xa5, 0xe6, 0x89, 0xb1, 0x10, 0x34, 0xdd, 0x79, 0x27, 0xad, 0x77, 0x42,
85125 - 0xbb, 0x90, 0xce, 0xfc, 0xfd, 0x82, 0x95, 0x31, 0x44, 0xab, 0xb8, 0xe0,
85126 - 0x29, 0x8e, 0x94, 0xfb, 0x6d, 0x89, 0x17, 0x6d, 0x4f, 0x2c, 0xcb, 0xc2,
85127 - 0xd3, 0x9c, 0x19, 0x51, 0x37, 0x74, 0x56, 0x1a, 0xe1, 0x0a, 0xe5, 0x35,
85128 - 0x45, 0x05, 0xaa, 0xa5, 0xe1, 0xd6, 0xf1, 0x7a, 0xac, 0x1d, 0x6b, 0xc0,
85129 - 0x9a, 0xb1, 0x04, 0x6e, 0x2b, 0x42, 0x0f, 0x39, 0x1a, 0x66, 0x43, 0x33,
85130 - 0x22, 0x34, 0x85, 0x5c, 0xd8, 0x39, 0x75, 0xc3, 0xde, 0xfc, 0x59, 0xe9,
85131 - 0xfa, 0x7f, 0x63, 0x52, 0xbe, 0x61, 0xdc, 0x7f, 0x0f, 0x45, 0x75, 0x0e,
85132 - 0xd3, 0x33, 0xef, 0x3b, 0x75, 0xc3, 0xbe, 0xe2, 0x71, 0xf9, 0xfc, 0x82,
85133 - 0x38, 0x0e, 0x95, 0x74, 0x3c, 0x55, 0xda, 0x4f, 0x3c, 0x98, 0x9e, 0x07,
85134 - 0xcd, 0x53, 0x1d, 0x0f, 0x5b, 0xb3, 0x61, 0x4c, 0x8c, 0x9c, 0x95, 0x21,
85135 - 0xcb, 0x34, 0xa0, 0x58, 0xfa, 0x0b, 0xa0, 0x7d, 0x05, 0xda, 0x57, 0x08,
85136 - 0x63, 0xef, 0x58, 0x29, 0x86, 0xfa, 0x04, 0x9e, 0x5f, 0xc0, 0xe7, 0xf9,
85137 - 0x2c, 0xe3, 0x78, 0x3b, 0x5a, 0x3d, 0x5f, 0x43, 0xe7, 0x8f, 0x64, 0x81,
85138 - 0xf1, 0x91, 0x3e, 0x3a, 0x2a, 0x31, 0x68, 0xd7, 0x62, 0xb5, 0x0e, 0xaf,
85139 - 0xce, 0x61, 0x5c, 0x55, 0x3c, 0x9e, 0x30, 0xa6, 0x8e, 0x34, 0x55, 0xf0,
85140 - 0x40, 0x68, 0x16, 0xbc, 0xda, 0x2f, 0xbd, 0x3f, 0x5e, 0xac, 0xbe, 0xdf,
85141 - 0x41, 0x74, 0x34, 0xd2, 0xc3, 0x06, 0xfc, 0x73, 0xa9, 0x1f, 0xff, 0x50,
85142 - 0xca, 0xe1, 0xd9, 0x52, 0x1f, 0xd1, 0xbd, 0x87, 0xe8, 0xae, 0xc7, 0x3f,
85143 - 0x96, 0xd6, 0xe0, 0xc7, 0xa5, 0xef, 0xe2, 0x99, 0xd2, 0x2a, 0x3c, 0x5d,
85144 - 0xba, 0x09, 0x07, 0x4b, 0x1e, 0xc2, 0xdd, 0x8c, 0x2f, 0x25, 0x3e, 0xcb,
85145 - 0xd7, 0x11, 0x1f, 0x5b, 0x30, 0x5b, 0x64, 0x79, 0x24, 0x46, 0x6c, 0x73,
85146 - 0x0c, 0x58, 0x90, 0xa8, 0x81, 0xc0, 0x6a, 0xdb, 0x7c, 0x0a, 0xb8, 0x0d,
85147 - 0x6e, 0xdc, 0x3c, 0xc1, 0x5a, 0x7a, 0x62, 0xc4, 0x40, 0x98, 0xf8, 0xb5,
85148 - 0xd2, 0x6d, 0xd8, 0xaa, 0xf7, 0xa1, 0xde, 0x1a, 0xc2, 0x03, 0xbe, 0x8d,
85149 - 0xa1, 0x45, 0x9c, 0x7f, 0x45, 0x7e, 0x48, 0xe0, 0xc1, 0x24, 0x34, 0x41,
85150 - 0xcf, 0x5d, 0xc5, 0xbf, 0x6b, 0xa9, 0xd8, 0x8c, 0x78, 0x28, 0x10, 0x5f,
85151 - 0x05, 0xe2, 0xa3, 0x40, 0xbc, 0x15, 0x88, 0x97, 0x02, 0xf1, 0x57, 0x20,
85152 - 0x7e, 0x0a, 0xc4, 0x4f, 0x81, 0xf8, 0x29, 0x10, 0xaf, 0x05, 0xd6, 0xf9,
85153 - 0x00, 0xc9, 0x52, 0xb1, 0x71, 0xab, 0x63, 0x63, 0xac, 0xd4, 0x26, 0xf6,
85154 - 0xee, 0x56, 0xc5, 0x73, 0xc3, 0x06, 0xe6, 0x3b, 0x88, 0x3c, 0xbd, 0xc4,
85155 - 0x2a, 0x5f, 0x15, 0xea, 0x9a, 0x49, 0xc0, 0x4d, 0xcf, 0x83, 0x8d, 0x89,
85156 - 0x92, 0x2a, 0xa6, 0x87, 0xa5, 0x5c, 0x69, 0xbb, 0x68, 0x72, 0xcc, 0x9e,
85157 - 0x8d, 0x8a, 0xd5, 0xff, 0xba, 0x68, 0xc4, 0x2f, 0x47, 0x7a, 0x31, 0xd6,
85158 - 0xec, 0xe2, 0x70, 0xd6, 0xc0, 0xb2, 0x8c, 0x82, 0x5c, 0xdc, 0xc3, 0xb6,
85159 - 0xac, 0x69, 0x7b, 0x18, 0x45, 0x39, 0xce, 0xe7, 0x34, 0xd2, 0xb5, 0x87,
85160 - 0x64, 0xb7, 0x86, 0xc9, 0x11, 0x17, 0x35, 0xe9, 0x1a, 0x94, 0xfb, 0x58,
85161 - 0x7f, 0x2a, 0xc9, 0xb4, 0x0f, 0xf5, 0xb1, 0x18, 0x1a, 0xac, 0x4b, 0xd0,
85162 - 0x10, 0xe3, 0x35, 0x88, 0x56, 0xd2, 0xd5, 0x3c, 0xe7, 0x02, 0xf1, 0xf9,
85163 - 0xee, 0x28, 0x3e, 0x1d, 0xd5, 0x50, 0xda, 0xa9, 0xe2, 0x1b, 0x19, 0x29,
85164 - 0xff, 0x2a, 0xa3, 0xf6, 0x7f, 0x2a, 0x1c, 0x4c, 0x95, 0x54, 0x7c, 0x9e,
85165 - 0x4f, 0xc3, 0x6b, 0xd6, 0xf0, 0x9f, 0x79, 0x0f, 0x21, 0xc2, 0x3b, 0x40,
85166 - 0x78, 0x6b, 0x17, 0xa7, 0x30, 0x1b, 0x67, 0x71, 0xfa, 0xb0, 0x31, 0xdf,
85167 - 0xb1, 0x63, 0xa3, 0x52, 0x03, 0xa3, 0x06, 0x64, 0xff, 0x2c, 0x36, 0xe5,
85168 - 0x3b, 0x8e, 0x6e, 0x52, 0xb6, 0xe0, 0xe2, 0x5a, 0x0d, 0x9b, 0x87, 0x79,
85169 - 0x6d, 0x39, 0xca, 0x45, 0x41, 0xfe, 0xf0, 0xc7, 0xea, 0x6b, 0x26, 0x42,
85170 - 0x7e, 0x65, 0xfc, 0xf1, 0x7a, 0x4e, 0x34, 0xa2, 0xde, 0x34, 0xca, 0x58,
85171 - 0x1f, 0xe7, 0xf3, 0x39, 0xe5, 0x5d, 0xe9, 0xc6, 0x99, 0x0f, 0xcd, 0x0b,
85172 - 0x91, 0x6e, 0x6e, 0xc9, 0x66, 0xb1, 0x26, 0xdf, 0xa1, 0xaf, 0x51, 0x48,
85173 - 0xdb, 0x6a, 0xc5, 0xc6, 0x71, 0x07, 0xe9, 0xd1, 0x61, 0x81, 0x91, 0x4e,
85174 - 0xb6, 0x31, 0xd2, 0x76, 0xd1, 0x8f, 0x09, 0xc3, 0x50, 0x2a, 0x31, 0xf1,
85175 - 0x58, 0x36, 0x89, 0xb3, 0x0f, 0xf1, 0x6f, 0x15, 0x3f, 0x5b, 0x9a, 0xc4,
85176 - 0xc7, 0xfb, 0x4a, 0x73, 0x71, 0xfb, 0x68, 0xa4, 0xb2, 0xef, 0x1a, 0xa2,
85177 - 0xc9, 0x32, 0x32, 0xae, 0xc9, 0x7b, 0x47, 0x3b, 0x6b, 0xe9, 0x77, 0xc5,
85178 - 0xd6, 0xfd, 0xf9, 0x0e, 0xbb, 0x5f, 0xd1, 0x50, 0x4e, 0x44, 0x48, 0xf7,
85179 - 0xd0, 0xea, 0x08, 0xff, 0x25, 0x43, 0x67, 0xb0, 0x22, 0x63, 0x4e, 0xf2,
85180 - 0xdf, 0x80, 0x25, 0x93, 0x15, 0x9a, 0xc9, 0xa2, 0x8d, 0x03, 0x25, 0x1b,
85181 - 0x77, 0xe4, 0x3b, 0xdc, 0x95, 0x62, 0x16, 0x68, 0x5f, 0x98, 0x9b, 0x54,
85182 - 0x7e, 0x21, 0xbd, 0x56, 0xa6, 0xb3, 0x10, 0x93, 0xb1, 0x8e, 0x81, 0x49,
85183 - 0xc5, 0xdc, 0xd3, 0xaf, 0x48, 0xf9, 0xab, 0xb4, 0x82, 0xaf, 0x65, 0xb2,
85184 - 0x98, 0xd5, 0x75, 0xdc, 0x9c, 0xd1, 0xbc, 0x16, 0xe2, 0x71, 0xc3, 0x12,
85185 - 0x0d, 0x17, 0xed, 0x74, 0xf1, 0xf6, 0xe2, 0x9f, 0xa3, 0xbc, 0x82, 0x75,
85186 - 0xcf, 0x7c, 0xb1, 0x1c, 0x09, 0xc4, 0xac, 0x3a, 0xc4, 0xf6, 0x86, 0x31,
85187 - 0x6f, 0xe7, 0x59, 0x99, 0xb0, 0x78, 0xdd, 0x9a, 0x3c, 0xa5, 0xb0, 0x0c,
85188 - 0x61, 0xb4, 0xee, 0xbd, 0x82, 0x72, 0x8a, 0x99, 0x02, 0xbe, 0x16, 0xe7,
85189 - 0xbd, 0x35, 0x56, 0x55, 0x96, 0x08, 0x76, 0xef, 0xac, 0xc8, 0xff, 0x68,
85190 - 0xb6, 0x07, 0x2f, 0x15, 0xb0, 0xaf, 0x0d, 0x3f, 0xc0, 0xc8, 0x12, 0xce,
85191 - 0x4f, 0x8c, 0x63, 0x88, 0x64, 0xff, 0xc1, 0x89, 0x70, 0xa6, 0x6a, 0xe3,
85192 - 0xea, 0x39, 0x81, 0x6f, 0x5e, 0x29, 0xf0, 0x6a, 0x7a, 0x5a, 0x8e, 0xb5,
85193 - 0x32, 0xbf, 0x0f, 0x37, 0x56, 0xfe, 0x16, 0xae, 0xee, 0x94, 0x8b, 0x36,
85194 - 0xa2, 0x55, 0xdd, 0xc7, 0x38, 0x2e, 0x69, 0x25, 0xfd, 0xa5, 0x66, 0xf1,
85195 - 0x5f, 0x11, 0xd4, 0xb3, 0x9d, 0xef, 0x96, 0x46, 0x4b, 0x85, 0xe6, 0xfd,
85196 - 0x44, 0xb3, 0x63, 0x48, 0xc5, 0xe6, 0x7c, 0xc7, 0xa9, 0xf7, 0x94, 0xef,
85197 - 0xcb, 0xd9, 0xf9, 0x4c, 0xa7, 0xc3, 0x3e, 0xa6, 0x08, 0xfc, 0x54, 0x35,
85198 - 0x67, 0x72, 0x48, 0x60, 0xb2, 0x04, 0xaf, 0xdd, 0xd1, 0x29, 0xfe, 0xe3,
85199 - 0x94, 0x07, 0x0c, 0xd1, 0xf9, 0xb0, 0x8d, 0x85, 0x43, 0xdf, 0x85, 0xb5,
85200 - 0xcb, 0xc1, 0x4c, 0xc1, 0xc6, 0x54, 0x41, 0xca, 0xed, 0xb6, 0x94, 0xef,
85201 - 0xda, 0xe6, 0x86, 0xe3, 0x21, 0xb8, 0x97, 0x2f, 0xed, 0x4a, 0xd5, 0x86,
85202 - 0x54, 0xd6, 0x4d, 0xee, 0x75, 0x91, 0x5c, 0xb5, 0x5f, 0xf4, 0xe2, 0x89,
85203 - 0x92, 0x81, 0x62, 0x29, 0x85, 0x27, 0x4b, 0xac, 0x7f, 0x8b, 0xbe, 0x17,
85204 - 0x51, 0x7c, 0x66, 0x29, 0xb7, 0x30, 0xbf, 0x3a, 0xc6, 0x17, 0xd8, 0x98,
85205 - 0x2c, 0x28, 0x08, 0x91, 0xce, 0x73, 0x3a, 0xed, 0x2f, 0x9c, 0x25, 0xdb,
85206 - 0x69, 0xe8, 0xf8, 0xa1, 0x8b, 0xdb, 0xed, 0x16, 0x18, 0x37, 0x5a, 0x18,
85207 - 0x2f, 0x68, 0x94, 0xbb, 0x55, 0xf4, 0xe6, 0xc7, 0x31, 0xaf, 0x39, 0x4e,
85208 - 0xb1, 0x26, 0xb0, 0x2a, 0x13, 0x01, 0x56, 0xf2, 0xbb, 0x08, 0xda, 0xad,
85209 - 0x32, 0xda, 0x63, 0x8d, 0x98, 0xbf, 0xf0, 0x9f, 0x30, 0xdb, 0x12, 0x25,
85210 - 0x1d, 0xd7, 0x93, 0x1e, 0x04, 0x54, 0xb2, 0x53, 0x9b, 0x65, 0x11, 0x4e,
85211 - 0x01, 0x2b, 0x49, 0x7b, 0x29, 0x7e, 0x13, 0x24, 0x7b, 0x78, 0x69, 0x1c,
85212 - 0x8f, 0x13, 0xff, 0xa5, 0xbc, 0x94, 0x91, 0xac, 0xb9, 0x61, 0x3b, 0xe5,
85213 - 0x84, 0xe9, 0x62, 0x0f, 0x4a, 0xa5, 0x6f, 0x62, 0x6a, 0x84, 0xf8, 0xcc,
85214 - 0x3b, 0xc4, 0x93, 0xaa, 0x17, 0x85, 0xd9, 0xb7, 0x5a, 0x64, 0xf1, 0x24,
85215 - 0xf9, 0xce, 0x44, 0xc1, 0x34, 0x8e, 0x93, 0x9f, 0xbd, 0x60, 0x37, 0x10,
85216 - 0x9f, 0x2e, 0xe1, 0x32, 0xf0, 0x5c, 0xbe, 0x00, 0xab, 0x85, 0xed, 0x15,
85217 - 0xc1, 0xfd, 0x3b, 0xb3, 0x84, 0x13, 0x83, 0x75, 0xf0, 0xa0, 0x2e, 0xf1,
85218 - 0x4e, 0x6c, 0xb5, 0x87, 0x22, 0x55, 0x1f, 0xaf, 0x27, 0x9a, 0x7d, 0xdd,
85219 - 0x36, 0x42, 0xc3, 0x3d, 0x84, 0x97, 0xfc, 0x15, 0xb7, 0x92, 0xbf, 0x7a,
85220 - 0xb8, 0x9c, 0xe2, 0x21, 0xea, 0xec, 0x49, 0xbf, 0x36, 0xe4, 0xc9, 0x5a,
85221 - 0xcb, 0xea, 0xff, 0x48, 0x6c, 0xc2, 0x27, 0x69, 0xb6, 0x83, 0x4a, 0xf2,
85222 - 0xea, 0x78, 0x39, 0x3d, 0x82, 0x57, 0x8b, 0x7f, 0x82, 0x5c, 0xb3, 0x99,
85223 - 0xda, 0x2c, 0xd6, 0x61, 0x66, 0xe4, 0x0a, 0xe0, 0xcf, 0xd9, 0x7e, 0x02,
85224 - 0xf3, 0xad, 0x75, 0x38, 0x34, 0x76, 0x2f, 0x8e, 0x8c, 0xd6, 0xe3, 0x39,
85225 - 0x2b, 0x86, 0xf6, 0x89, 0x0a, 0x9d, 0x6b, 0xe6, 0x72, 0x93, 0x9e, 0xa6,
85226 - 0xe0, 0x6b, 0xe3, 0x98, 0x14, 0xb8, 0x3e, 0xb3, 0x0e, 0x39, 0xdf, 0xcf,
85227 - 0x3d, 0xac, 0xa1, 0xdc, 0x96, 0xcf, 0xbb, 0x14, 0xd7, 0x75, 0xd8, 0xd9,
85228 - 0x0c, 0x71, 0x0b, 0xd5, 0x93, 0x3b, 0x29, 0x5e, 0xef, 0x54, 0x62, 0x70,
85229 - 0x13, 0x2e, 0xd9, 0x55, 0xe0, 0x22, 0xcb, 0xc0, 0x9e, 0x22, 0x70, 0x77,
85230 - 0x51, 0xc5, 0xdf, 0x14, 0x2f, 0x45, 0xb9, 0x8d, 0xcf, 0x2e, 0x40, 0x79,
85231 - 0x1e, 0x7f, 0x87, 0x31, 0x16, 0x33, 0x13, 0x20, 0x9d, 0xed, 0x2f, 0xa8,
85232 - 0xf8, 0xb1, 0xbd, 0xeb, 0xec, 0xd8, 0x0a, 0x53, 0xcf, 0x51, 0xac, 0x85,
85233 - 0xac, 0xd3, 0xe4, 0x67, 0xfc, 0x0c, 0x7c, 0x3f, 0xff, 0x99, 0xfc, 0xb9,
85234 - 0x4f, 0x53, 0xc5, 0x6d, 0xf9, 0x8e, 0x81, 0x8f, 0x94, 0x8f, 0xe5, 0xbf,
85235 - 0x85, 0x19, 0xff, 0x77, 0xa2, 0x15, 0x7f, 0xdd, 0xc3, 0x79, 0xc4, 0xad,
85236 - 0xf8, 0xed, 0xbc, 0x2f, 0xf8, 0x6d, 0xc5, 0x3f, 0x47, 0xb2, 0xcc, 0x47,
85237 - 0x35, 0xc6, 0x62, 0xb8, 0x68, 0x22, 0x89, 0xba, 0x9d, 0xfc, 0x9b, 0xd7,
85238 - 0x05, 0x2e, 0xee, 0xe6, 0xf8, 0x4a, 0x42, 0xd9, 0x7b, 0x2d, 0xe1, 0x63,
85239 - 0xd9, 0xab, 0xb9, 0xe2, 0x7b, 0x73, 0xf8, 0xcf, 0xe7, 0x98, 0x76, 0xc2,
85240 - 0xb7, 0x74, 0x29, 0x3f, 0xf3, 0x99, 0x3a, 0xfc, 0x7a, 0xaf, 0x69, 0x97,
85241 - 0x95, 0xa5, 0x44, 0x93, 0x63, 0x92, 0x63, 0xf3, 0x2f, 0xe6, 0xce, 0x24,
85242 - 0xc8, 0xce, 0xd3, 0xb2, 0xbc, 0x8a, 0xf1, 0x55, 0xcf, 0x27, 0x11, 0x3a,
85243 - 0x47, 0x57, 0xc5, 0xea, 0xec, 0x97, 0xe9, 0xda, 0x94, 0xf7, 0x5b, 0xd1,
85244 - 0xb0, 0xd0, 0x22, 0x3b, 0xb5, 0xa1, 0x91, 0xe2, 0x3a, 0x62, 0xad, 0x92,
85245 - 0x91, 0x6f, 0xb3, 0x8f, 0x6a, 0x5e, 0xd8, 0xf9, 0x0a, 0x4a, 0x23, 0xcf,
85246 - 0x93, 0x7d, 0xa3, 0xec, 0x8b, 0x1b, 0x3e, 0x12, 0x5f, 0xc1, 0xf4, 0x98,
85247 - 0x88, 0xb2, 0xac, 0xab, 0x28, 0xb6, 0xe7, 0x53, 0x7d, 0xf8, 0xe0, 0xe1,
85248 - 0xbb, 0xe4, 0x58, 0x9f, 0x8e, 0x17, 0xb3, 0x49, 0x5a, 0x67, 0x5f, 0xb2,
85249 - 0xf1, 0x4c, 0x5e, 0xc3, 0xee, 0xe1, 0x84, 0xef, 0xc7, 0xf7, 0x74, 0xd6,
85250 - 0x9d, 0x2a, 0x2b, 0x36, 0x9e, 0x25, 0x3f, 0x3c, 0x58, 0x60, 0x1d, 0xab,
85251 - 0xb8, 0x38, 0xf3, 0x75, 0x59, 0xd3, 0xc6, 0xbe, 0x1d, 0xa1, 0x33, 0x3a,
85252 - 0xe1, 0x8e, 0x42, 0xb7, 0x96, 0xcb, 0x37, 0x56, 0xf0, 0x73, 0x03, 0xad,
85253 - 0xb5, 0xd1, 0xf7, 0x12, 0xd9, 0xf8, 0x3b, 0x7c, 0xe8, 0xff, 0x1b, 0x1f,
85254 - 0xf4, 0x1d, 0xa3, 0x75, 0x90, 0xbf, 0xcc, 0x88, 0xd5, 0x95, 0xfe, 0x46,
85255 - 0x53, 0xad, 0x19, 0xb1, 0xc6, 0xef, 0x69, 0xfc, 0x34, 0x4e, 0x38, 0x7a,
85256 - 0xb1, 0x77, 0x54, 0xca, 0x2d, 0x76, 0x3b, 0x5c, 0x3d, 0x86, 0x2d, 0x16,
85257 - 0xc5, 0xeb, 0x28, 0x9f, 0x91, 0x32, 0x95, 0x5e, 0xd8, 0xa3, 0x8a, 0x16,
85258 - 0xca, 0x99, 0x9e, 0x58, 0x9b, 0x35, 0xc4, 0x9d, 0xa3, 0x2a, 0xf2, 0x85,
85259 - 0x0b, 0x28, 0x27, 0x4b, 0xf9, 0x64, 0x1a, 0xee, 0x60, 0xba, 0x01, 0x2f,
85260 - 0x8f, 0xe9, 0x14, 0x3b, 0x67, 0xe5, 0xf2, 0x64, 0x2f, 0x4a, 0x84, 0xe7,
85261 - 0xd3, 0x74, 0x57, 0xea, 0xb0, 0x88, 0x60, 0x2c, 0x1e, 0xc1, 0x9e, 0x42,
85262 - 0x1c, 0x87, 0xc7, 0x23, 0xd8, 0x46, 0xfe, 0xf7, 0xd3, 0x2c, 0xd3, 0x8c,
85263 - 0x60, 0x73, 0x89, 0x7b, 0x8d, 0x10, 0xe9, 0xc0, 0x13, 0xef, 0xf9, 0x6b,
85264 - 0x0d, 0x58, 0x3e, 0xc6, 0x7b, 0xcf, 0xca, 0x76, 0xcb, 0xd2, 0xdb, 0x43,
85265 - 0xd5, 0x7d, 0xef, 0x50, 0x1f, 0x63, 0x50, 0xef, 0x72, 0x21, 0xe5, 0xaa,
85266 - 0x04, 0xf5, 0x2a, 0x71, 0xea, 0x55, 0xac, 0xb9, 0xfe, 0xcb, 0xa4, 0x48,
85267 - 0x93, 0xf2, 0x19, 0xca, 0x53, 0x6f, 0xd2, 0xe7, 0xa4, 0x4d, 0xe5, 0x96,
85268 - 0x64, 0xbc, 0x78, 0x98, 0x65, 0xf4, 0x84, 0xbd, 0x84, 0x3a, 0xce, 0x69,
85269 - 0xd3, 0x70, 0x95, 0x5f, 0x50, 0x9f, 0x65, 0xa0, 0x63, 0x9a, 0x79, 0x50,
85270 - 0xb1, 0xb5, 0x00, 0x0c, 0x16, 0xe0, 0x1d, 0xa6, 0xd8, 0x6e, 0x99, 0x88,
85271 - 0x22, 0x36, 0xa1, 0x23, 0x3c, 0x91, 0xa2, 0xbd, 0x1a, 0xe2, 0xf4, 0xdb,
85272 - 0xa3, 0xbe, 0xab, 0xc9, 0x69, 0x13, 0x8b, 0x76, 0x9f, 0x91, 0x0f, 0x52,
85273 - 0xac, 0xdd, 0x91, 0x34, 0x7b, 0x6f, 0x14, 0x70, 0x53, 0x43, 0x52, 0xd6,
85274 - 0xa6, 0x6b, 0xa9, 0x7e, 0xcb, 0x43, 0x71, 0x92, 0x3d, 0xea, 0xc8, 0x4d,
85275 - 0xaf, 0x76, 0x5b, 0xf6, 0xab, 0x20, 0xbc, 0x25, 0x3e, 0xc3, 0xeb, 0x9e,
85276 - 0xf8, 0xac, 0xdb, 0xda, 0xf3, 0x16, 0x3a, 0xb1, 0x78, 0x42, 0x15, 0xbf,
85277 - 0x1c, 0x5a, 0x84, 0xcc, 0x34, 0xf4, 0x1a, 0xe2, 0xeb, 0xc3, 0x29, 0xe2,
85278 - 0xbb, 0x40, 0xb2, 0x14, 0x48, 0x96, 0x02, 0xc9, 0x42, 0x7a, 0x39, 0xe8,
85279 - 0xf7, 0x6d, 0x2c, 0x6b, 0x8a, 0xea, 0xef, 0x3b, 0x7e, 0x6f, 0x79, 0xb0,
85280 - 0xc4, 0x72, 0x98, 0xae, 0x07, 0x96, 0x9b, 0xe5, 0x94, 0xf2, 0x2d, 0x9b,
85281 - 0xe5, 0x31, 0x0d, 0x4f, 0x21, 0x6b, 0x4d, 0x1b, 0x48, 0x4d, 0x57, 0xf5,
85282 - 0x21, 0xe5, 0xe7, 0x36, 0xeb, 0x83, 0x65, 0x94, 0xf2, 0x69, 0x92, 0x69,
85283 - 0x2b, 0xc9, 0x38, 0x58, 0x90, 0x87, 0x6a, 0x2c, 0xcb, 0x98, 0x20, 0xde,
85284 - 0x62, 0x24, 0x53, 0x7c, 0x42, 0x23, 0x59, 0x3b, 0xa1, 0x92, 0xac, 0xa1,
85285 - 0x09, 0xe8, 0x0a, 0xeb, 0x69, 0xfa, 0xff, 0xe2, 0x87, 0xfb, 0x6a, 0x4f,
85286 - 0x5c, 0x43, 0xfd, 0xb4, 0x4a, 0xfb, 0x07, 0xc9, 0x77, 0x72, 0x2a, 0x8c,
85287 - 0x5a, 0x4b, 0xa1, 0x3c, 0xac, 0xe1, 0xf1, 0xf1, 0x06, 0x4c, 0x90, 0xdd,
85288 - 0xc7, 0xc6, 0xa1, 0x87, 0xe9, 0xfd, 0xd6, 0x73, 0xfe, 0x04, 0xf2, 0xa7,
85289 - 0x0d, 0x18, 0xa7, 0xfc, 0xf3, 0x40, 0x3e, 0x26, 0x26, 0x46, 0x54, 0x6c,
85290 - 0x29, 0x9c, 0x20, 0xd9, 0x24, 0xe5, 0xd8, 0xcd, 0x09, 0xda, 0x22, 0x36,
85291 - 0xdb, 0x66, 0x0f, 0x70, 0x05, 0xf9, 0x5a, 0x08, 0x6b, 0x2d, 0xb8, 0xdb,
85292 - 0xed, 0x2b, 0x30, 0xdb, 0x07, 0x63, 0x87, 0xed, 0xe9, 0x35, 0x30, 0x8f,
85293 - 0x5e, 0x43, 0xa3, 0xc0, 0xe5, 0x24, 0xc7, 0x80, 0xe5, 0x6d, 0xa0, 0x84,
85294 - 0x44, 0xf9, 0xdb, 0xec, 0x3f, 0x42, 0x36, 0x28, 0x52, 0x5d, 0x2b, 0x52,
85295 - 0x0f, 0x78, 0x60, 0xf4, 0x8c, 0xbc, 0x3d, 0x6d, 0xba, 0x49, 0x5a, 0x0b,
85296 - 0x0f, 0x69, 0xd8, 0x5f, 0xd2, 0x28, 0x5e, 0x4c, 0x1b, 0xe0, 0x98, 0x87,
85297 - 0x56, 0x4b, 0x3d, 0xda, 0x47, 0xd6, 0xa3, 0xd4, 0x0b, 0x6b, 0xa0, 0x3e,
85298 - 0x19, 0x57, 0x8f, 0x08, 0xec, 0xa7, 0xf8, 0x9d, 0x5a, 0x64, 0x1e, 0x5d,
85299 - 0x0d, 0xaf, 0xdc, 0x0e, 0x73, 0xa0, 0x96, 0x18, 0xf9, 0x74, 0xa8, 0x86,
85300 - 0xfa, 0xc2, 0x4e, 0xfb, 0x35, 0x98, 0xfa, 0xfe, 0xd0, 0xaf, 0xe4, 0x64,
85301 - 0x1c, 0x17, 0x84, 0x71, 0x52, 0x1a, 0xdf, 0xe2, 0x33, 0x2c, 0xf7, 0x06,
85302 - 0x6c, 0xcf, 0x42, 0x0b, 0x3b, 0x6a, 0x7a, 0x7f, 0x1e, 0x38, 0x96, 0x37,
85303 - 0x30, 0xb9, 0xa8, 0x0e, 0x68, 0xee, 0xe8, 0xb9, 0x03, 0xde, 0xaa, 0xb0,
85304 - 0xdf, 0xe7, 0x6a, 0xe9, 0x3c, 0xf9, 0xc8, 0x7a, 0x21, 0xf0, 0x24, 0xd1,
85305 - 0x5a, 0x30, 0xc5, 0x7d, 0x89, 0x9a, 0x5e, 0x48, 0x79, 0x76, 0x5b, 0x49,
85306 - 0xa0, 0xd6, 0x32, 0xf5, 0x59, 0xb0, 0x6e, 0x74, 0xd2, 0xe9, 0x19, 0x89,
85307 - 0x66, 0x96, 0xdd, 0xcb, 0x91, 0x9c, 0xab, 0xb6, 0x12, 0xff, 0x6b, 0x48,
85308 - 0xa6, 0xdb, 0x2d, 0xaf, 0x87, 0xb0, 0x52, 0xed, 0x31, 0x13, 0x1f, 0x90,
85309 - 0xec, 0x6b, 0x29, 0x47, 0x8c, 0x95, 0x86, 0x9b, 0x38, 0x1f, 0x4c, 0x94,
85310 - 0x78, 0x4e, 0xea, 0xc1, 0xd5, 0xf9, 0x6a, 0x2c, 0xb0, 0xdd, 0xd9, 0xe6,
85311 - 0x17, 0xfa, 0xf5, 0xfb, 0xa0, 0xef, 0x23, 0xdc, 0x3f, 0xf5, 0x60, 0xb4,
85312 - 0x53, 0xa1, 0xde, 0x5c, 0xca, 0x15, 0x96, 0x39, 0xc2, 0xf9, 0x99, 0x7c,
85313 - 0xdd, 0xdd, 0x67, 0x37, 0x51, 0x6c, 0xc2, 0x7b, 0xc2, 0x36, 0x50, 0xe3,
85314 - 0xb0, 0x4f, 0x34, 0x90, 0x8f, 0x47, 0xb0, 0x9d, 0x7c, 0x44, 0xb3, 0xac,
85315 - 0x14, 0x35, 0x53, 0xfa, 0xb1, 0x2c, 0xed, 0x2d, 0xc1, 0x28, 0xd9, 0xf5,
85316 - 0x98, 0x6d, 0x55, 0xd1, 0xec, 0x1c, 0x92, 0x2d, 0xd6, 0x7f, 0x10, 0x7d,
85317 - 0x4b, 0xbf, 0x1b, 0xab, 0x61, 0xb4, 0x1a, 0x68, 0x70, 0xf8, 0xfd, 0x69,
85318 - 0x39, 0xdb, 0x1c, 0x21, 0xff, 0xe2, 0x3d, 0x96, 0x77, 0x10, 0xbf, 0x96,
85319 - 0x88, 0xf1, 0x5e, 0x97, 0xf2, 0x27, 0xc4, 0x0c, 0xd1, 0x42, 0x0b, 0xc7,
85320 - 0x2d, 0xf7, 0xe7, 0xd6, 0xd1, 0x43, 0x54, 0x53, 0x8c, 0x16, 0x50, 0x2e,
85321 - 0x55, 0x11, 0x72, 0x2c, 0x7d, 0x1f, 0x8e, 0x92, 0xcd, 0xd9, 0x45, 0x2e,
85322 - 0x12, 0xd7, 0xed, 0xba, 0x50, 0xf4, 0xee, 0x92, 0xb2, 0x33, 0x0d, 0x9a,
85323 - 0xc2, 0x92, 0xc6, 0x4b, 0xb4, 0xba, 0x85, 0x7c, 0xbf, 0xd1, 0x89, 0x88,
85324 - 0xe2, 0x2e, 0xe8, 0x07, 0x6c, 0x8d, 0xf2, 0xae, 0x94, 0xdb, 0xd2, 0x06,
85325 - 0xa6, 0x6d, 0xea, 0xc7, 0x5b, 0xc3, 0x68, 0xb6, 0xa0, 0xeb, 0x8e, 0x35,
85326 - 0xf0, 0x14, 0xee, 0x26, 0x3e, 0x11, 0x99, 0x4f, 0x35, 0x90, 0xd6, 0xc4,
85327 - 0x5e, 0xbb, 0x0e, 0xee, 0x4d, 0x02, 0x11, 0x27, 0x4e, 0xbc, 0xd5, 0x20,
85328 - 0xe7, 0x3f, 0xb3, 0x8c, 0x70, 0xdf, 0xb7, 0x7f, 0x44, 0xf2, 0x8a, 0xf9,
85329 - 0xf5, 0x0e, 0xaf, 0x59, 0x76, 0x11, 0xeb, 0xa9, 0xe7, 0xa7, 0x25, 0x7a,
85330 - 0xbf, 0x85, 0xde, 0x3f, 0x44, 0xb8, 0x73, 0x31, 0x7f, 0xd6, 0x6b, 0x6a,
85331 - 0x77, 0xac, 0xf2, 0x73, 0x78, 0x90, 0x64, 0xe0, 0xfc, 0xcd, 0x6b, 0xcc,
85332 - 0xf3, 0x22, 0xe6, 0x99, 0x6a, 0x37, 0xfb, 0x95, 0x8d, 0x8f, 0xf2, 0x77,
85333 - 0x73, 0x0f, 0xef, 0xee, 0xb0, 0x21, 0x26, 0xec, 0x3d, 0x28, 0xeb, 0x68,
85334 - 0x8a, 0x3a, 0x56, 0xff, 0x34, 0xa0, 0x44, 0x9c, 0x51, 0x14, 0x9b, 0x81,
85335 - 0x87, 0x0a, 0x96, 0xb7, 0x51, 0x31, 0x07, 0xe2, 0xd4, 0xf7, 0x9e, 0xfc,
85336 - 0xa1, 0x8a, 0x9d, 0x9d, 0x65, 0x33, 0x46, 0x46, 0x8f, 0x3a, 0x51, 0xf1,
85337 - 0xe2, 0x2e, 0x05, 0x0b, 0x96, 0xa8, 0x78, 0x8b, 0x72, 0xc8, 0x36, 0x9a,
85338 - 0x45, 0xc2, 0x96, 0xda, 0x54, 0xe9, 0x89, 0x7f, 0x5f, 0x3c, 0x9a, 0xa4,
85339 - 0xb1, 0x6a, 0x4c, 0x5a, 0x7d, 0x07, 0xf0, 0xa8, 0x74, 0x9b, 0xd9, 0x16,
85340 - 0x11, 0xca, 0xc3, 0xe7, 0xf2, 0x50, 0x6a, 0x8a, 0xf0, 0x0f, 0x76, 0xbf,
85341 - 0xeb, 0xfb, 0x0c, 0xd9, 0xd2, 0x7d, 0x23, 0x0f, 0xd1, 0x94, 0x71, 0x30,
85342 - 0xdb, 0xcc, 0x76, 0xe1, 0xf9, 0x99, 0x94, 0x37, 0x4c, 0xc3, 0x47, 0x8b,
85343 - 0x8a, 0xc5, 0x19, 0x34, 0x29, 0x8e, 0x75, 0x6a, 0x2f, 0xf1, 0xdc, 0xee,
85344 - 0x34, 0xe1, 0x74, 0x0b, 0xe7, 0xc4, 0xa8, 0xf8, 0xd9, 0xa8, 0xd9, 0x43,
85345 - 0x3d, 0xee, 0xaa, 0x8d, 0x30, 0xfb, 0xee, 0x11, 0xd4, 0x97, 0x11, 0xef,
85346 - 0x56, 0x92, 0xf8, 0xb4, 0x55, 0xc4, 0x93, 0x65, 0x33, 0x8e, 0x2a, 0xbf,
85347 - 0x67, 0x65, 0xcc, 0xb2, 0xbc, 0x98, 0xf2, 0x1b, 0x99, 0xce, 0xb0, 0x8f,
85348 - 0xdf, 0x85, 0xda, 0x98, 0x40, 0x4d, 0x66, 0xc4, 0xd7, 0x6d, 0x94, 0xec,
85349 - 0xdd, 0x94, 0x51, 0x89, 0xb6, 0x4a, 0x39, 0x9d, 0x68, 0x2f, 0x1e, 0xa0,
85350 - 0x9e, 0x85, 0x75, 0xfa, 0x92, 0xcc, 0x7d, 0x9b, 0xe5, 0xbc, 0x65, 0x4e,
85351 - 0x66, 0xd2, 0x6c, 0x3d, 0xff, 0x96, 0x0d, 0xac, 0xfb, 0x43, 0x94, 0xcf,
85352 - 0x17, 0x2f, 0xed, 0xda, 0x31, 0xa0, 0x3c, 0x20, 0x8d, 0x15, 0x6c, 0xdb,
85353 - 0x46, 0x7a, 0xef, 0xdb, 0x9d, 0xfa, 0xa9, 0x77, 0xf0, 0xda, 0x50, 0x54,
85354 - 0x34, 0xed, 0xf6, 0xfc, 0xda, 0xf9, 0x2a, 0xf1, 0xf5, 0x61, 0x9a, 0xf9,
85355 - 0xe1, 0x78, 0x7b, 0x07, 0x97, 0x16, 0xff, 0x94, 0xf6, 0x86, 0x88, 0x17,
85356 - 0x68, 0x31, 0x92, 0x75, 0x05, 0xcd, 0x25, 0x57, 0x67, 0x0e, 0x48, 0x57,
85357 - 0x67, 0xfc, 0xa4, 0xf7, 0x51, 0xd6, 0x3b, 0xcf, 0x45, 0x55, 0xdd, 0xf3,
85358 - 0x7e, 0x3e, 0x3f, 0x4c, 0x31, 0xc9, 0xb6, 0x44, 0x53, 0x83, 0xc3, 0xfa,
85359 - 0x85, 0xa8, 0x73, 0xba, 0x8c, 0x85, 0x62, 0x87, 0xf4, 0xe2, 0xd5, 0x7c,
85360 - 0x16, 0x15, 0x13, 0xfe, 0x79, 0xa6, 0xfd, 0xe5, 0xf3, 0x6d, 0xe2, 0xd8,
85361 - 0xc3, 0x54, 0x7c, 0xeb, 0x7d, 0x7f, 0xe9, 0x7d, 0x92, 0xe2, 0x49, 0x73,
85362 - 0x6e, 0x95, 0xa9, 0x56, 0xf6, 0x37, 0x28, 0x2f, 0xdb, 0xb7, 0xc8, 0x5c,
85363 - 0x2b, 0xfb, 0x1d, 0xbc, 0x38, 0xe1, 0xd9, 0xb9, 0xfb, 0x3c, 0x1f, 0xd7,
85364 - 0x74, 0x4a, 0x39, 0x61, 0x5f, 0x45, 0xba, 0x60, 0x3c, 0x55, 0x5d, 0xfc,
85365 - 0xe5, 0x9c, 0x6e, 0xa8, 0x89, 0xae, 0xaf, 0xd4, 0x2b, 0xce, 0x69, 0x35,
85366 - 0xce, 0x1b, 0x78, 0x31, 0xaf, 0xb4, 0x85, 0xd1, 0x84, 0x3e, 0x5b, 0xe0,
85367 - 0xdd, 0x1e, 0x81, 0xd3, 0x97, 0x47, 0x10, 0xba, 0xcc, 0x2a, 0x77, 0x84,
85368 - 0xfa, 0x25, 0xe6, 0x95, 0xc9, 0x51, 0xce, 0x48, 0xad, 0x53, 0x45, 0xed,
85369 - 0xa5, 0x5c, 0xa7, 0xd8, 0x0e, 0x0a, 0xfe, 0x85, 0xf6, 0x5d, 0x77, 0xa9,
85370 - 0x65, 0x74, 0x50, 0x4b, 0xe0, 0xf5, 0x5d, 0x9d, 0x09, 0x9f, 0xf3, 0x43,
85371 - 0xe6, 0xe1, 0x4a, 0x5f, 0x06, 0xf6, 0xc7, 0xc5, 0x64, 0xc7, 0xdc, 0x0a,
85372 - 0x05, 0xe9, 0x25, 0xf0, 0x22, 0xf4, 0x7e, 0xdb, 0x2e, 0xf6, 0x85, 0x47,
85373 - 0x74, 0x9e, 0x09, 0x81, 0xae, 0x84, 0x0e, 0x6b, 0xd5, 0x0b, 0x44, 0x9b,
85374 - 0xfa, 0x4d, 0xd2, 0x07, 0xd3, 0xaa, 0xe2, 0xa9, 0xe2, 0x88, 0x8a, 0xd3,
85375 - 0x0f, 0xf3, 0x19, 0x08, 0xd6, 0x51, 0x7a, 0x01, 0xc5, 0x76, 0x46, 0x9d,
85376 - 0x93, 0x6d, 0x40, 0xaf, 0xf4, 0x61, 0x51, 0x31, 0x35, 0xca, 0xf8, 0x7c,
85377 - 0x3f, 0x42, 0x91, 0x7d, 0x2b, 0xcd, 0x7b, 0x7e, 0x23, 0x17, 0x64, 0xfe,
85378 - 0x9d, 0xf6, 0x30, 0xde, 0xa8, 0x38, 0xe2, 0xd3, 0xae, 0xe8, 0x68, 0x8a,
85379 - 0x74, 0x3d, 0x91, 0xae, 0xe2, 0xd9, 0x48, 0x7b, 0xd8, 0xe7, 0x98, 0x87,
85380 - 0x5e, 0xf1, 0x78, 0x9e, 0xf2, 0x0a, 0xd5, 0xdc, 0x89, 0xac, 0x62, 0xd5,
85381 - 0x42, 0x62, 0xb3, 0xad, 0x63, 0x99, 0x5e, 0xa9, 0x57, 0xf7, 0xe7, 0xab,
85382 - 0xf7, 0x3f, 0xbd, 0xa2, 0x90, 0x57, 0xa8, 0x7f, 0x83, 0x5e, 0xef, 0x28,
85383 - 0xf7, 0x34, 0x51, 0x2c, 0xbd, 0x46, 0xb5, 0xeb, 0xd5, 0xb1, 0x5e, 0x91,
85384 - 0xcf, 0xeb, 0x78, 0x65, 0x7c, 0xb9, 0x78, 0x30, 0x6f, 0xe1, 0xe5, 0x62,
85385 - 0xe5, 0x2e, 0xe8, 0x81, 0xa2, 0x2b, 0xc6, 0xf3, 0xdc, 0xfb, 0x98, 0xa9,
85386 - 0x32, 0x66, 0xc4, 0x5a, 0xc2, 0x53, 0x56, 0x2f, 0xf4, 0xeb, 0xc8, 0x78,
85387 - 0xb1, 0x01, 0x93, 0x63, 0x95, 0x7a, 0x77, 0xeb, 0xb9, 0x7a, 0xf7, 0xc5,
85388 - 0x3b, 0x9d, 0x48, 0x4e, 0x77, 0xd0, 0xd7, 0x38, 0xbc, 0x49, 0x46, 0xad,
85389 - 0x10, 0xd5, 0x49, 0x2b, 0x37, 0x2d, 0x22, 0x3d, 0x3b, 0xba, 0x99, 0x5f,
85390 - 0xf4, 0x69, 0xd4, 0x63, 0x4c, 0x14, 0xd9, 0x5f, 0x0d, 0x18, 0xc5, 0x6f,
85391 - 0xb5, 0x56, 0xec, 0xdc, 0x96, 0xd3, 0x1c, 0xa0, 0x9e, 0xfa, 0x8b, 0x06,
85392 - 0x9a, 0x0d, 0xea, 0x9c, 0x1b, 0xbd, 0x8e, 0x6e, 0xe4, 0x54, 0xc7, 0xea,
85393 - 0xb9, 0x5e, 0xac, 0x5c, 0xa9, 0x38, 0xf7, 0xad, 0x0c, 0x4d, 0x1b, 0xc6,
85394 - 0x16, 0xbf, 0x0e, 0x9d, 0x1c, 0xd8, 0x4f, 0x33, 0x50, 0x0d, 0xcd, 0xa5,
85395 - 0xef, 0xe9, 0xb8, 0x2f, 0xd4, 0x7d, 0x1f, 0x36, 0xe5, 0x07, 0xf0, 0xb7,
85396 - 0x79, 0xce, 0x13, 0x3a, 0x1e, 0x63, 0x1e, 0x0a, 0x7c, 0xff, 0x73, 0xb0,
85397 - 0x85, 0x6b, 0xdf, 0x23, 0x25, 0x8a, 0xc3, 0x21, 0xe4, 0x12, 0x8e, 0x9f,
85398 - 0x47, 0x12, 0xa7, 0xc4, 0xf9, 0xfd, 0xbf, 0xbb, 0x97, 0xf5, 0x46, 0xfd,
85399 - 0x1c, 0xcd, 0x4e, 0x4a, 0xf6, 0x4a, 0xbe, 0x7f, 0xf2, 0x03, 0x74, 0x3b,
85400 - 0xe5, 0x91, 0x0f, 0x6c, 0x13, 0x63, 0x7a, 0xc5, 0x7e, 0xdb, 0x47, 0xb9,
85401 - 0x1e, 0x7d, 0x42, 0xf5, 0x28, 0x2a, 0xb6, 0xd2, 0x73, 0xa3, 0xf3, 0x4a,
85402 - 0x7a, 0x8a, 0x78, 0x3f, 0x46, 0x39, 0x26, 0xe1, 0x1c, 0x47, 0xa2, 0xc0,
85403 - 0xb3, 0xfa, 0x51, 0x9a, 0xd5, 0xcd, 0xdc, 0x32, 0x8a, 0xe7, 0x03, 0x76,
85404 - 0xd7, 0xc0, 0xa0, 0x30, 0x8f, 0x52, 0x6d, 0x4e, 0x1c, 0xa0, 0xb9, 0x8b,
85405 - 0xbe, 0x37, 0xb4, 0x87, 0xba, 0xec, 0x75, 0x30, 0xdd, 0x85, 0xc2, 0x34,
85406 - 0x5e, 0x17, 0xa6, 0x5e, 0x23, 0x58, 0x27, 0x9f, 0x60, 0x91, 0xaf, 0x9b,
85407 - 0xe3, 0xb0, 0xfc, 0xef, 0x57, 0xd2, 0x1d, 0xfe, 0xf7, 0xd1, 0xf4, 0xc5,
85408 - 0xe7, 0x7b, 0x0b, 0x77, 0x07, 0xd5, 0xc6, 0x7c, 0x21, 0x83, 0x48, 0x33,
85409 - 0xd7, 0x8a, 0xa8, 0x38, 0xb0, 0x0b, 0x5a, 0xbd, 0xf3, 0x3e, 0xbe, 0x3e,
85410 - 0x04, 0x4d, 0x73, 0xa8, 0xd2, 0x12, 0x2f, 0xd4, 0x1b, 0xa4, 0xae, 0x13,
85411 - 0xdc, 0x0f, 0x74, 0xe5, 0x9e, 0x80, 0xd9, 0x53, 0x43, 0x34, 0x3e, 0x01,
85412 - 0xe3, 0x7a, 0x1f, 0x49, 0x1f, 0xe7, 0x2c, 0xce, 0xe3, 0x8c, 0x8a, 0xc1,
85413 - 0xd1, 0xa8, 0xd8, 0x4c, 0xb2, 0xb4, 0x3b, 0x27, 0x71, 0x85, 0xcf, 0xff,
85414 - 0x2b, 0xc4, 0x3f, 0xe7, 0x9c, 0x13, 0x94, 0x73, 0x18, 0xef, 0xd1, 0x34,
85415 - 0xe3, 0x1d, 0xa0, 0x3e, 0xf3, 0x7a, 0xdb, 0x4c, 0xf5, 0x84, 0xcc, 0x44,
85416 - 0x97, 0x30, 0x29, 0xa9, 0xb1, 0x3c, 0x5d, 0xfd, 0x33, 0xe0, 0xb9, 0xd8,
85417 - 0x97, 0xa9, 0xa7, 0x9e, 0x64, 0x1a, 0x22, 0x7a, 0x1f, 0xfa, 0xf4, 0x4e,
85418 - 0xce, 0xd1, 0x3b, 0xf1, 0x07, 0x64, 0x52, 0xdd, 0xfb, 0xc9, 0x1e, 0xdb,
85419 - 0x0a, 0xaf, 0xc8, 0xce, 0xd6, 0x8a, 0x4c, 0x83, 0x3e, 0x2f, 0x3f, 0x49,
85420 - 0x33, 0x2f, 0x51, 0x67, 0x86, 0xe6, 0x48, 0xa6, 0x6d, 0xae, 0x22, 0xba,
85421 - 0x44, 0xb3, 0xcb, 0x18, 0x10, 0x66, 0x3f, 0xe9, 0xad, 0x6f, 0xdc, 0xd7,
85422 - 0xdb, 0x4f, 0xd2, 0x5d, 0x3e, 0xce, 0x19, 0xea, 0x39, 0xbe, 0xe8, 0x93,
85423 - 0xec, 0x73, 0xd5, 0xbb, 0xca, 0x94, 0x78, 0x8a, 0x7a, 0x97, 0xa7, 0x8a,
85424 - 0xaa, 0xd8, 0x47, 0xf6, 0x1c, 0xa7, 0xb8, 0x19, 0xf4, 0xef, 0x1f, 0xa9,
85425 - 0x06, 0x96, 0xbe, 0xd7, 0x3c, 0x97, 0x6f, 0xc8, 0xae, 0x65, 0xb2, 0x6b,
85426 - 0x27, 0x65, 0x65, 0xee, 0xd9, 0xb8, 0xde, 0x1d, 0xa6, 0x7a, 0x27, 0xf0,
85427 - 0xa1, 0x9f, 0x63, 0x0f, 0xa3, 0xb3, 0xc8, 0x3d, 0xa1, 0x25, 0x96, 0xe7,
85428 - 0x8d, 0xdc, 0x7c, 0xc2, 0xfd, 0x7e, 0xa9, 0x92, 0x1f, 0xa9, 0x36, 0xba,
85429 - 0x21, 0xa7, 0x47, 0xbc, 0x50, 0xe4, 0x9f, 0x54, 0x4c, 0x62, 0xec, 0x5b,
85430 - 0xae, 0x68, 0xea, 0xf4, 0xd0, 0xde, 0xe9, 0x49, 0xd5, 0xb2, 0xca, 0xef,
85431 - 0x0b, 0xeb, 0x94, 0x15, 0x72, 0x6f, 0x9f, 0x8f, 0x4d, 0xb8, 0x6c, 0xb1,
85432 - 0x7b, 0x73, 0x02, 0xfe, 0x4c, 0x6c, 0x50, 0x4c, 0xa2, 0xb7, 0x3b, 0xd9,
85433 - 0x33, 0x2d, 0x92, 0xd4, 0x43, 0x25, 0xbd, 0x94, 0x48, 0xa6, 0x8e, 0xc3,
85434 - 0xd6, 0x8e, 0x14, 0x6d, 0xed, 0x8d, 0x62, 0xf5, 0x6e, 0x93, 0xe5, 0x62,
85435 - 0x5f, 0xe5, 0xf8, 0xb0, 0xdc, 0xfb, 0x29, 0x0f, 0xc1, 0xef, 0x43, 0xe4,
85436 - 0xa1, 0x46, 0x8a, 0xb1, 0x3b, 0x51, 0x4b, 0x4d, 0xb3, 0xdc, 0xde, 0x44,
85437 - 0xf3, 0xcf, 0x5d, 0x44, 0xbf, 0xdc, 0x9a, 0x03, 0xd7, 0x93, 0x47, 0xf8,
85438 - 0xc2, 0xb9, 0x85, 0x79, 0x7a, 0x33, 0x52, 0x91, 0x91, 0xca, 0x70, 0xe5,
85439 - 0xff, 0x17, 0xd2, 0x1a, 0x28, 0x06, 0xd7, 0x0d, 0x09, 0xea, 0xef, 0x2b,
85440 - 0xf1, 0xb8, 0x90, 0xef, 0x4e, 0xfd, 0x7b, 0xb3, 0x57, 0x64, 0xa5, 0xde,
85441 - 0x7f, 0xdc, 0xcc, 0x77, 0x51, 0x8a, 0x33, 0x1c, 0xfb, 0xed, 0xb3, 0x15,
85442 - 0xdd, 0xf2, 0x1c, 0x7f, 0xa8, 0xe4, 0x8a, 0x6b, 0xf3, 0xd8, 0x40, 0xbd,
85443 - 0x83, 0x1b, 0x26, 0x1c, 0xd7, 0x16, 0x7b, 0x49, 0x37, 0x96, 0x31, 0x48,
85444 - 0x44, 0xb7, 0xea, 0x5d, 0xfa, 0x38, 0xf5, 0x5a, 0x84, 0xcb, 0xa0, 0x7e,
85445 - 0x94, 0x62, 0x7c, 0x1e, 0x76, 0xcc, 0xc5, 0x54, 0xbd, 0xc3, 0x77, 0xbb,
85446 - 0x03, 0x62, 0xe1, 0x54, 0x25, 0xcd, 0x1f, 0x3a, 0x27, 0xdf, 0x69, 0xb9,
85447 - 0xfd, 0x26, 0x7e, 0x5f, 0x3f, 0x67, 0x93, 0x2b, 0x99, 0x26, 0xfd, 0x7e,
85448 - 0x76, 0x8e, 0x87, 0x3f, 0x74, 0xf6, 0x8e, 0xaf, 0xfe, 0xf6, 0x99, 0x59,
85449 - 0xe2, 0x93, 0x7b, 0x45, 0x78, 0x31, 0x87, 0xfb, 0xc4, 0x0b, 0xe7, 0x7c,
85450 - 0xe1, 0x52, 0xc2, 0xbd, 0x01, 0x37, 0xd2, 0x7c, 0xd4, 0x49, 0x73, 0x28,
85451 - 0xcd, 0x2e, 0x48, 0x0d, 0xb3, 0x3e, 0xce, 0x90, 0x3e, 0xd8, 0xe6, 0xa7,
85452 - 0xc8, 0xe6, 0x1d, 0x39, 0x8a, 0x99, 0xd4, 0x7a, 0x61, 0xf6, 0x92, 0xbf,
85453 - 0x51, 0xed, 0x32, 0x13, 0x1f, 0xc3, 0x34, 0xd6, 0xfa, 0x3e, 0x7d, 0x66,
85454 - 0xce, 0xa7, 0x4f, 0xb1, 0x4f, 0xa3, 0x6f, 0x38, 0x04, 0x25, 0xf3, 0x29,
85455 - 0xe9, 0x8c, 0xe2, 0x4d, 0x30, 0x4e, 0xce, 0x53, 0x67, 0x40, 0xfd, 0xb2,
85456 - 0x36, 0x9f, 0xf6, 0xc8, 0x42, 0x47, 0xe2, 0x28, 0xf5, 0xdb, 0xfb, 0xc0,
85457 - 0x25, 0xa3, 0xeb, 0xe8, 0x31, 0x61, 0x96, 0xdf, 0x0b, 0x71, 0x0e, 0x10,
85458 - 0x68, 0xcc, 0x54, 0xf0, 0x5d, 0x5e, 0x4c, 0x60, 0x47, 0xa9, 0x82, 0xf3,
85459 - 0x32, 0xf2, 0xe1, 0x31, 0xff, 0x7e, 0x41, 0x81, 0x96, 0x79, 0x9b, 0x6b,
85460 - 0x33, 0xc1, 0x25, 0x73, 0xf2, 0x7f, 0x67, 0xce, 0x06, 0x6f, 0xce, 0xe9,
85461 - 0x67, 0x4b, 0x8c, 0x6b, 0x8f, 0x96, 0xe1, 0x7c, 0x0d, 0xb1, 0x26, 0xff,
85462 - 0x67, 0x54, 0x03, 0x34, 0xea, 0x81, 0xfd, 0xbc, 0x8f, 0x5c, 0x11, 0x94,
85463 - 0xbf, 0xcb, 0xb5, 0x47, 0xec, 0xf0, 0x5c, 0xfe, 0xfa, 0x06, 0xad, 0xf5,
85464 - 0xd1, 0x87, 0x75, 0xc6, 0x77, 0x12, 0x37, 0xd1, 0xb3, 0xeb, 0xef, 0xeb,
85465 - 0xcf, 0xa3, 0xa7, 0x36, 0x4d, 0xfd, 0xad, 0xbf, 0xcf, 0xbf, 0xaf, 0xa0,
85466 - 0x3d, 0xcb, 0xf9, 0xdd, 0x08, 0xdf, 0xb5, 0xac, 0xce, 0x26, 0x8d, 0xcd,
85467 - 0x60, 0x3a, 0x06, 0xd6, 0x14, 0x0d, 0xdc, 0x4a, 0x75, 0x61, 0xcc, 0xbf,
85468 - 0x07, 0x3d, 0x3f, 0xf7, 0x28, 0xb4, 0x6f, 0x19, 0xed, 0x1b, 0xf4, 0xd7,
85469 - 0x0c, 0x2c, 0x2f, 0x9e, 0x9f, 0xe9, 0x54, 0x3a, 0x77, 0xe8, 0xdc, 0x1c,
85470 - 0xcb, 0x76, 0x70, 0xc5, 0xce, 0x7c, 0xaf, 0x18, 0xc9, 0x47, 0x89, 0x96,
85471 - 0x42, 0x19, 0x40, 0xa2, 0x23, 0x73, 0x33, 0xe5, 0x5d, 0x2b, 0xa5, 0x2a,
85472 - 0x4d, 0x58, 0x9b, 0x22, 0x3f, 0xd6, 0x97, 0xe2, 0x8e, 0x54, 0x0d, 0xf5,
85473 - 0x34, 0xc3, 0xb8, 0x4d, 0xaf, 0x45, 0x7f, 0xea, 0x52, 0xe0, 0xc6, 0x3a,
85474 - 0xea, 0x41, 0x06, 0xfc, 0x9e, 0xbe, 0x86, 0xe8, 0xd5, 0x59, 0x4f, 0xe1,
85475 - 0xf6, 0x73, 0xff, 0xae, 0x42, 0x34, 0x7e, 0xef, 0x3c, 0x77, 0x33, 0xdc,
85476 - 0xe6, 0x1e, 0xaa, 0x83, 0xdd, 0x58, 0x97, 0x0a, 0x53, 0x6f, 0xcd, 0xf9,
85477 - 0x61, 0x3e, 0x22, 0xd6, 0x67, 0x72, 0xfd, 0xb9, 0x3e, 0x67, 0x46, 0xcc,
85478 - 0x90, 0x5c, 0xa8, 0xf5, 0xc4, 0x73, 0x34, 0xbf, 0x65, 0x4a, 0x7c, 0x1f,
85479 - 0xa5, 0x20, 0x66, 0xf1, 0xcc, 0x48, 0xc3, 0x1f, 0xcd, 0x59, 0xe9, 0xc7,
85480 - 0xeb, 0x71, 0xd5, 0xbe, 0x06, 0x64, 0xf6, 0xe9, 0xb0, 0x1f, 0xb7, 0x68,
85481 - 0x2d, 0x45, 0x9f, 0x19, 0xb1, 0xb7, 0xf8, 0x87, 0x68, 0x77, 0x60, 0x8d,
85482 - 0xfe, 0x3f, 0x95, 0x7d, 0x0b, 0x70, 0x54, 0xe7, 0x95, 0xe6, 0x77, 0xfb,
85483 - 0x21, 0xb5, 0x9e, 0x5c, 0x09, 0x09, 0x5a, 0x20, 0x9b, 0x6e, 0xf7, 0x6d,
85484 - 0xa9, 0x8d, 0x3a, 0xe1, 0x36, 0x88, 0xb5, 0x9c, 0xed, 0x2d, 0x1a, 0x2c,
85485 - 0x8c, 0x08, 0x60, 0xcb, 0xb6, 0x3c, 0x83, 0x77, 0x32, 0x6b, 0xc5, 0x36,
85486 - 0x18, 0x3f, 0x92, 0x91, 0x09, 0x5b, 0x25, 0x53, 0x53, 0xd1, 0x1d, 0x01,
85487 - 0x42, 0x40, 0xbf, 0x24, 0xc1, 0x00, 0x33, 0x53, 0xe3, 0x46, 0x0f, 0x20,
85488 - 0xb8, 0x5b, 0xc2, 0x71, 0x66, 0x4a, 0xc9, 0xd4, 0x56, 0x34, 0x20, 0x0c,
85489 - 0x04, 0x63, 0x3c, 0x93, 0x99, 0x29, 0xb2, 0xeb, 0x2d, 0x13, 0x1c, 0xc0,
85490 - 0x0f, 0xfc, 0x4c, 0xb2, 0x16, 0xf1, 0xc4, 0x77, 0xbf, 0x73, 0xbb, 0x1b,
85491 - 0x04, 0x45, 0x3c, 0x35, 0x54, 0x75, 0xb5, 0x6e, 0xdf, 0xff, 0xfe, 0x8f,
85492 - 0xf3, 0x9f, 0xf3, 0x9d, 0xef, 0x9c, 0xf3, 0xdf, 0xa2, 0x84, 0xfe, 0xfb,
85493 - 0xdf, 0xcc, 0x75, 0x8c, 0x4f, 0xdc, 0x0b, 0x69, 0x66, 0xb3, 0x65, 0xbc,
85494 - 0x0b, 0x5f, 0x0e, 0x24, 0x9c, 0xe8, 0xea, 0x77, 0xe0, 0xda, 0xa2, 0x73,
85495 - 0xa6, 0x67, 0xf6, 0x8d, 0xfc, 0x4e, 0xc4, 0xe6, 0xc4, 0x33, 0xfd, 0xf2,
85496 - 0xed, 0x40, 0x60, 0x71, 0x36, 0xe7, 0xba, 0x61, 0xd0, 0x89, 0xa7, 0xd9,
85497 - 0xf6, 0xa2, 0x6e, 0xcb, 0xed, 0xb1, 0x55, 0x1b, 0xc0, 0x73, 0xfd, 0x8c,
85498 - 0x6d, 0x34, 0x13, 0xcf, 0x86, 0x8a, 0x71, 0x7f, 0x75, 0x76, 0x1d, 0xc3,
85499 - 0x5c, 0x87, 0xe1, 0x30, 0x94, 0x4c, 0xa3, 0x13, 0xe5, 0x9c, 0x3f, 0xb9,
85500 - 0x18, 0x7e, 0x98, 0x29, 0xc1, 0xe8, 0x81, 0x71, 0x25, 0x9d, 0xce, 0xb6,
85501 - 0x19, 0xb2, 0x62, 0x5a, 0x43, 0x19, 0x6b, 0xb4, 0x61, 0x26, 0xfd, 0xfb,
85502 - 0x85, 0x8c, 0x03, 0x9f, 0x65, 0x5c, 0xf8, 0x74, 0xa4, 0x18, 0xbf, 0x3e,
85503 - 0x50, 0xc2, 0x8f, 0x8a, 0x4f, 0x46, 0x34, 0xfe, 0xde, 0xac, 0xbc, 0x12,
85504 - 0x95, 0xd8, 0x23, 0x80, 0x4f, 0x33, 0xe3, 0xca, 0xd1, 0xaf, 0x5c, 0x6b,
85505 - 0xc6, 0xfc, 0x8e, 0x6a, 0x70, 0xcc, 0xbf, 0x36, 0xbf, 0x3b, 0x4d, 0xae,
85506 - 0xd3, 0xc7, 0xaa, 0xd4, 0x4a, 0xf0, 0xd9, 0x01, 0x19, 0x47, 0xfa, 0x6f,
85507 - 0x56, 0x5e, 0x8d, 0x8a, 0x7c, 0x2b, 0xf1, 0xeb, 0x11, 0x91, 0xe3, 0x27,
85508 - 0xd4, 0x69, 0xe9, 0x7f, 0x5c, 0x39, 0x9e, 0x7b, 0xe6, 0xe7, 0xdc, 0x8b,
85509 - 0x8d, 0xa3, 0x0e, 0x90, 0x4c, 0xf0, 0x59, 0x17, 0x5e, 0x38, 0x68, 0x23,
85510 - 0x27, 0x2e, 0xc6, 0xc6, 0xc1, 0x12, 0xbc, 0x30, 0xa8, 0xa2, 0xe3, 0x60,
85511 - 0xb3, 0x42, 0xbe, 0xaf, 0xce, 0x20, 0xef, 0xed, 0x18, 0x0d, 0xb0, 0xdd,
85512 - 0xb8, 0x72, 0x2e, 0xdd, 0x30, 0x33, 0xdb, 0x4f, 0x36, 0xf7, 0x93, 0xe5,
85513 - 0x31, 0x86, 0xc2, 0x38, 0x8d, 0x5c, 0x72, 0xdf, 0xe6, 0xd7, 0x18, 0x21,
85514 - 0x3e, 0x9c, 0xb6, 0x53, 0xc7, 0x24, 0x1e, 0x15, 0xbb, 0x4f, 0x6d, 0xbe,
85515 - 0x12, 0x95, 0xb9, 0x1a, 0xca, 0x91, 0x46, 0x9b, 0xc5, 0xb1, 0x5f, 0x67,
85516 - 0x5c, 0xb8, 0x82, 0xb6, 0xf2, 0x10, 0xe5, 0xb1, 0x9a, 0xf2, 0x68, 0xa6,
85517 - 0x3c, 0x5a, 0x39, 0xdf, 0x97, 0xa3, 0x82, 0x93, 0xde, 0x40, 0x44, 0xd1,
85518 - 0xb0, 0x2a, 0x23, 0x7d, 0x58, 0xe3, 0xb8, 0x1c, 0xe1, 0xbf, 0xd9, 0xbc,
85519 - 0x35, 0x7a, 0xab, 0x5c, 0xa0, 0x96, 0x87, 0xc5, 0xaf, 0x89, 0x6c, 0x02,
85520 - 0xe4, 0x50, 0xe3, 0xca, 0xa8, 0x15, 0x23, 0xef, 0xdb, 0xec, 0x49, 0xe5,
85521 - 0x6d, 0xa7, 0x44, 0xec, 0x53, 0xf2, 0xe1, 0xca, 0x3e, 0x72, 0xb5, 0x1a,
85522 - 0x2d, 0x7b, 0xff, 0xde, 0x94, 0x7c, 0xa7, 0x36, 0x2f, 0xb4, 0xf0, 0xe6,
85523 - 0x6f, 0x36, 0x37, 0x5d, 0x5f, 0xd3, 0xb8, 0xf2, 0x36, 0xd7, 0x73, 0x81,
85524 - 0x7a, 0x7a, 0x92, 0x73, 0x2d, 0x92, 0xbd, 0x4b, 0x73, 0xef, 0x38, 0xd7,
85525 - 0x4f, 0x87, 0x8b, 0xf1, 0x5e, 0xaa, 0x84, 0x1f, 0xca, 0x76, 0x98, 0x7b,
85526 - 0x97, 0x6e, 0x56, 0x4e, 0x59, 0xf2, 0x0d, 0xe0, 0x5d, 0x8e, 0x7d, 0xec,
85527 - 0x7a, 0x1f, 0x59, 0xde, 0x96, 0xad, 0xc3, 0xe5, 0xed, 0x57, 0xf0, 0x54,
85528 - 0xd6, 0x66, 0x28, 0x91, 0xeb, 0xb5, 0x34, 0xc9, 0x8b, 0x49, 0x7d, 0x91,
85529 - 0x3e, 0x46, 0x95, 0xfc, 0xa8, 0x42, 0x8c, 0xa1, 0xfe, 0xa9, 0xcb, 0x3c,
85530 - 0x0e, 0xe2, 0xe2, 0x3a, 0x7c, 0xc1, 0x38, 0x21, 0x42, 0x8b, 0x92, 0xb5,
85531 - 0x48, 0x8e, 0xb4, 0x50, 0x62, 0x42, 0xeb, 0xdf, 0x20, 0xb9, 0xd4, 0x6b,
85532 - 0xe4, 0xb9, 0x54, 0x21, 0x74, 0xa7, 0xbf, 0x30, 0x27, 0xaa, 0xe8, 0x57,
85533 - 0xb5, 0xeb, 0x79, 0x37, 0xae, 0xd9, 0x34, 0x87, 0x78, 0xaf, 0x27, 0x8d,
85534 - 0xdc, 0x3f, 0x72, 0x2f, 0xf2, 0xdd, 0x27, 0xb5, 0xdf, 0x99, 0x4f, 0xdc,
85535 - 0xd4, 0x36, 0x8f, 0xe5, 0xf9, 0x78, 0x5f, 0xb0, 0xbc, 0x14, 0x3d, 0xbb,
85536 - 0xbd, 0xc9, 0x14, 0xaa, 0x90, 0xd4, 0x6c, 0x73, 0x0b, 0x38, 0x3b, 0x3b,
85537 - 0xbc, 0xbd, 0xcd, 0xb0, 0xf2, 0x20, 0x9e, 0x14, 0xfe, 0x61, 0xa6, 0xd8,
85538 - 0x8c, 0x53, 0x6b, 0xf0, 0x54, 0xd8, 0x2a, 0x65, 0xee, 0xd6, 0xac, 0xec,
85539 - 0xfd, 0x45, 0x58, 0x17, 0x2c, 0x42, 0xaa, 0x95, 0x18, 0xd7, 0x6f, 0xb4,
85540 - 0xb0, 0x7b, 0xf2, 0xa7, 0xc0, 0x8b, 0xdf, 0xf4, 0x0b, 0x1f, 0x03, 0x0a,
85541 - 0x63, 0x1c, 0x13, 0x39, 0x0c, 0xec, 0xf7, 0x1a, 0x36, 0x9b, 0x3c, 0xff,
85542 - 0x99, 0x69, 0xb4, 0xc9, 0xb3, 0xd2, 0x47, 0xad, 0xc5, 0x1b, 0x6f, 0xd6,
85543 - 0x7b, 0x0f, 0xe5, 0xf4, 0xaf, 0x33, 0x25, 0xe7, 0xa8, 0xd6, 0x31, 0xee,
85544 - 0xe9, 0x97, 0x9a, 0x4d, 0x04, 0xbb, 0xaa, 0x7d, 0x1d, 0xba, 0xad, 0x18,
85545 - 0x67, 0xbf, 0xf6, 0xdf, 0x88, 0xe9, 0x05, 0x70, 0xd5, 0x01, 0xf7, 0xc5,
85546 - 0x6d, 0xb0, 0xd5, 0x11, 0xab, 0xa9, 0xd3, 0xcd, 0xa3, 0x36, 0xcc, 0xeb,
85547 - 0x57, 0xf0, 0x58, 0xd2, 0x86, 0x07, 0x92, 0x76, 0xac, 0x4a, 0xe2, 0xfb,
85548 - 0xf3, 0x80, 0xc9, 0x1a, 0xf8, 0xdb, 0xa7, 0xe8, 0x9a, 0xcb, 0xe1, 0x6f,
85549 - 0x8d, 0x91, 0x17, 0xac, 0x62, 0x2c, 0xba, 0x72, 0x94, 0x38, 0xc8, 0xb6,
85550 - 0xce, 0x3e, 0xea, 0x66, 0x9f, 0x1d, 0x35, 0x7d, 0xb8, 0xb3, 0x10, 0xa0,
85551 - 0x75, 0xfb, 0xa7, 0xe8, 0x97, 0x2a, 0x1d, 0xf0, 0xd3, 0xaf, 0xf8, 0x3b,
85552 - 0x6b, 0xec, 0x0c, 0xc4, 0xea, 0xfe, 0xd5, 0xe2, 0xb4, 0x0f, 0xd2, 0x5e,
85553 - 0xe6, 0xf5, 0xb3, 0x7d, 0x9d, 0x0d, 0x2a, 0xf5, 0xf9, 0x93, 0x3f, 0x96,
85554 - 0x7c, 0xaf, 0xdc, 0x93, 0xba, 0xab, 0x82, 0xf2, 0x7e, 0x3b, 0xf1, 0xf0,
85555 - 0x8c, 0x79, 0xb6, 0xda, 0xaa, 0x41, 0xe1, 0x31, 0xce, 0xcd, 0xcd, 0xdf,
85556 - 0xd4, 0x3a, 0x17, 0x16, 0xdc, 0xa3, 0x62, 0xed, 0xa0, 0xb4, 0x85, 0xd5,
85557 - 0x8f, 0x93, 0xb8, 0x53, 0xa0, 0x4d, 0x98, 0x07, 0xab, 0xa4, 0xad, 0x8d,
85558 - 0x6b, 0xb4, 0xa3, 0xa4, 0x1f, 0x58, 0x19, 0xc7, 0xc3, 0xa5, 0xf0, 0x47,
85559 - 0x64, 0x8e, 0xf5, 0x8b, 0x1d, 0x7c, 0xb6, 0x14, 0x2d, 0xa3, 0xd9, 0xe7,
85560 - 0x56, 0x8c, 0xbe, 0x37, 0x33, 0x9b, 0xfb, 0xfe, 0xc3, 0x75, 0xe3, 0x2d,
85561 - 0x8d, 0x7e, 0xac, 0x4b, 0x52, 0xe7, 0x6c, 0x1e, 0x0c, 0xe6, 0x72, 0xd0,
85562 - 0x4f, 0xa4, 0xbc, 0xd3, 0xea, 0xba, 0x7f, 0x5b, 0x9a, 0xab, 0xf9, 0xd2,
85563 - 0x8e, 0xa7, 0xd8, 0x8f, 0x65, 0xc3, 0x18, 0x1c, 0x33, 0x11, 0xd5, 0x4d,
85564 - 0x64, 0xf8, 0x79, 0x43, 0x87, 0x51, 0x42, 0x1b, 0x7f, 0x2a, 0x26, 0x98,
85565 - 0x97, 0xd5, 0xa4, 0x1f, 0x24, 0x02, 0xca, 0x86, 0x18, 0x70, 0x84, 0xf1,
85566 - 0xe3, 0x21, 0x7e, 0x86, 0x13, 0x5c, 0x03, 0xe7, 0x6d, 0x23, 0x6e, 0x6c,
85567 - 0x4b, 0x01, 0x43, 0x09, 0x44, 0xf6, 0x2f, 0x96, 0x58, 0xa6, 0x84, 0xe3,
85568 - 0x01, 0xe3, 0x6c, 0x93, 0xe6, 0xe7, 0x20, 0x3f, 0x63, 0xdc, 0x53, 0x8e,
85569 - 0x87, 0x00, 0xf1, 0x30, 0x92, 0xd1, 0x60, 0x64, 0x02, 0x98, 0xa0, 0x6d,
85570 - 0x5d, 0x1b, 0x56, 0x51, 0x76, 0xa8, 0x12, 0x1f, 0x8d, 0x64, 0x63, 0xa5,
85571 - 0x75, 0x19, 0xa9, 0x5d, 0xcb, 0xda, 0xa4, 0x7e, 0x2d, 0xb6, 0x54, 0x84,
85572 - 0x43, 0xc9, 0x4a, 0xab, 0x86, 0xfd, 0x8e, 0xce, 0x7e, 0x55, 0xa9, 0xb1,
85573 - 0xb6, 0xe2, 0x70, 0xd4, 0xe7, 0xe9, 0xa5, 0xbe, 0x1b, 0x0e, 0xb1, 0xaf,
85574 - 0x46, 0x1c, 0x89, 0xe6, 0x6b, 0x67, 0xbe, 0x96, 0x9f, 0x49, 0x8e, 0xc8,
85575 - 0x59, 0x49, 0xd9, 0xca, 0xbd, 0xbc, 0xdf, 0x95, 0xf5, 0x4a, 0x0e, 0x3f,
85576 - 0xcf, 0x71, 0xa6, 0xff, 0x7e, 0x8a, 0xe3, 0x05, 0x69, 0x07, 0xde, 0xde,
85577 - 0x14, 0x74, 0xcb, 0x97, 0x8e, 0xd4, 0x7b, 0x93, 0x06, 0x64, 0x6f, 0x1b,
85578 - 0x39, 0x87, 0xd7, 0xa8, 0xf7, 0x01, 0xca, 0xf9, 0x2f, 0xe8, 0x23, 0x5c,
85579 - 0x8c, 0x65, 0x2b, 0xb0, 0xab, 0xaf, 0x12, 0x3b, 0xfb, 0x0c, 0xf4, 0x2c,
85580 - 0x6e, 0xc3, 0xa9, 0xa8, 0x89, 0x75, 0x21, 0x13, 0x2b, 0x19, 0x23, 0xfc,
85581 - 0x00, 0x0d, 0x4d, 0x87, 0xf1, 0x20, 0x63, 0x65, 0x95, 0xf2, 0xf8, 0x16,
85582 - 0xde, 0xde, 0xed, 0xc0, 0x7a, 0xfd, 0x8f, 0x68, 0xbf, 0xa6, 0xf9, 0xab,
85583 - 0x45, 0xb5, 0x18, 0x4c, 0x34, 0xa8, 0xdd, 0x9c, 0x5f, 0xa4, 0x8d, 0xfb,
85584 - 0x14, 0x74, 0xe0, 0x69, 0xfd, 0xfb, 0x6c, 0xeb, 0xb6, 0x39, 0x34, 0xb9,
85585 - 0x96, 0xba, 0x96, 0xec, 0xa3, 0x41, 0xdd, 0xca, 0xfb, 0xac, 0x6c, 0xad,
85586 - 0x74, 0x7d, 0xa3, 0xe4, 0x44, 0x4a, 0x71, 0x92, 0x32, 0x3b, 0x96, 0x8c,
85587 - 0xd0, 0x55, 0x43, 0x79, 0xba, 0xb1, 0x0b, 0x8f, 0x93, 0x9b, 0xbc, 0x4d,
85588 - 0xd2, 0x70, 0x6f, 0x5c, 0x41, 0x53, 0xbd, 0x8e, 0xf3, 0xe9, 0x6f, 0xe1,
85589 - 0xcd, 0xe1, 0x30, 0xde, 0x20, 0x07, 0x58, 0xf0, 0x97, 0xc2, 0xe9, 0x3d,
85590 - 0x38, 0x9b, 0x0e, 0xe3, 0x4c, 0xd4, 0xdb, 0xfa, 0xbc, 0x52, 0x8b, 0x9f,
85591 - 0x11, 0xd3, 0xee, 0x8e, 0x03, 0xef, 0xb1, 0x1f, 0x7f, 0xdc, 0x81, 0x4b,
85592 - 0x69, 0x15, 0x87, 0xb9, 0x37, 0x8e, 0xd0, 0x02, 0x18, 0x6d, 0x1e, 0x1c,
85593 - 0x1c, 0x78, 0x00, 0x13, 0xa9, 0x07, 0x70, 0x22, 0xf9, 0xb6, 0xe9, 0xd2,
85594 - 0xa4, 0x06, 0xe6, 0xc2, 0x25, 0x62, 0xea, 0x24, 0xa5, 0x51, 0x7a, 0x4f,
85595 - 0x2b, 0x71, 0x51, 0x33, 0x44, 0xee, 0x6f, 0xf2, 0xb7, 0x7b, 0xe3, 0x4d,
85596 - 0xd8, 0x9f, 0xa1, 0x48, 0x13, 0x3a, 0x12, 0x31, 0x19, 0xab, 0x11, 0x31,
85597 - 0x72, 0xc8, 0x5d, 0x7d, 0xe2, 0x37, 0xef, 0xc6, 0xca, 0x0a, 0x28, 0x2d,
85598 - 0x75, 0x63, 0xb9, 0x75, 0x34, 0x4d, 0xab, 0x6d, 0x4a, 0xbc, 0x49, 0xb9,
85599 - 0xf2, 0xb9, 0x1f, 0x26, 0x28, 0xf7, 0x04, 0x65, 0x7b, 0x7d, 0x3f, 0x9a,
85600 - 0xb8, 0x1f, 0xdf, 0xc2, 0xf9, 0xdd, 0x6d, 0x78, 0x93, 0x58, 0x57, 0xbe,
85601 - 0xc8, 0xd7, 0xe9, 0xb4, 0x35, 0xb0, 0xef, 0xb4, 0x99, 0xaa, 0x16, 0x99,
85602 - 0xb6, 0xe1, 0x17, 0x51, 0x91, 0x69, 0x9a, 0xd8, 0xe7, 0xf3, 0xf8, 0xed,
85603 - 0x23, 0x55, 0xd4, 0x65, 0x5b, 0x77, 0x30, 0x5b, 0xaf, 0x2b, 0xbd, 0xc7,
85604 - 0x85, 0xcb, 0xd6, 0xdc, 0x64, 0xae, 0x5f, 0x35, 0xbf, 0x5f, 0x98, 0x2b,
85605 - 0xab, 0x65, 0x7e, 0x86, 0xc9, 0x98, 0x3a, 0xc0, 0x78, 0x91, 0xb6, 0x13,
85606 - 0x80, 0xe4, 0x9c, 0xeb, 0xe3, 0x5d, 0xb0, 0x87, 0x4a, 0x0d, 0x35, 0xec,
85607 - 0x9d, 0xea, 0xc0, 0x9b, 0xb8, 0x42, 0x8e, 0x72, 0x57, 0x5c, 0x63, 0x7c,
85608 - 0x7b, 0x81, 0x63, 0xfd, 0x0b, 0x2e, 0xf2, 0xda, 0x17, 0xcf, 0xda, 0x5a,
85609 - 0x77, 0x63, 0x1b, 0xee, 0x4b, 0xcb, 0xfa, 0xfe, 0x0b, 0x07, 0xd2, 0x11,
85610 - 0x49, 0xcb, 0x3a, 0x63, 0xb4, 0x0b, 0x59, 0x67, 0xe5, 0x7f, 0xb0, 0xce,
85611 - 0x23, 0xec, 0xaf, 0x96, 0x76, 0x94, 0xf7, 0x1b, 0x65, 0x38, 0x98, 0x54,
85612 - 0x71, 0x52, 0x2f, 0xc5, 0x05, 0x55, 0xf2, 0xf5, 0xd9, 0x5a, 0x66, 0x33,
85613 - 0xe3, 0xd3, 0x21, 0x7e, 0x9e, 0x62, 0x0c, 0x75, 0x5a, 0x77, 0xe0, 0x84,
85614 - 0x5e, 0x4b, 0x9c, 0xbf, 0x55, 0x87, 0xe5, 0x1e, 0x03, 0x83, 0x8a, 0x4a,
85615 - 0x9c, 0x91, 0x9c, 0xaa, 0x75, 0x5f, 0xce, 0x16, 0xb8, 0x20, 0x39, 0x8d,
85616 - 0x82, 0xd8, 0x6f, 0xcd, 0xcb, 0x16, 0xce, 0xdc, 0x3a, 0xbf, 0x5b, 0xfb,
85617 - 0x21, 0x55, 0xd0, 0xde, 0x33, 0x9f, 0xad, 0xce, 0xf9, 0x2d, 0x65, 0x47,
85618 - 0x55, 0x16, 0x2b, 0xc4, 0x87, 0x8d, 0xe7, 0x71, 0x83, 0x7c, 0x7c, 0xdf,
85619 - 0xa3, 0xf4, 0x41, 0xf4, 0xcf, 0xcd, 0xdf, 0xdb, 0xaa, 0x49, 0x9c, 0x97,
85620 - 0x7a, 0x74, 0x99, 0x56, 0x00, 0xbb, 0xe5, 0x67, 0x0f, 0x6f, 0xce, 0xf2,
85621 - 0xf9, 0xf4, 0xe6, 0x6c, 0x8c, 0x7a, 0x74, 0xf3, 0x5d, 0xd6, 0xf7, 0x8f,
85622 - 0x36, 0xfb, 0x52, 0x37, 0x7c, 0x55, 0x96, 0x2f, 0x5b, 0x67, 0x6d, 0xd0,
85623 - 0xab, 0x1b, 0xca, 0x8a, 0x46, 0xf1, 0xd7, 0x79, 0x8e, 0x22, 0x6d, 0x02,
85624 - 0xca, 0x89, 0xa8, 0x61, 0xba, 0xb5, 0x62, 0xfa, 0x7a, 0x28, 0x63, 0x8c,
85625 - 0xc5, 0xa6, 0xac, 0xba, 0xa7, 0x86, 0x37, 0xd2, 0x12, 0x13, 0x83, 0xfa,
85626 - 0xfb, 0xbf, 0xb1, 0x6b, 0x37, 0xda, 0x8b, 0x16, 0x93, 0xb3, 0xd3, 0xcf,
85627 - 0x3d, 0x1b, 0x72, 0xe0, 0xfd, 0x74, 0x76, 0x3d, 0xef, 0x0d, 0x97, 0xe0,
85628 - 0xdd, 0x94, 0xf8, 0x6b, 0xa8, 0x85, 0xec, 0xf7, 0x64, 0x5a, 0x63, 0x6c,
85629 - 0x2a, 0xe3, 0xb6, 0x61, 0xdb, 0x98, 0x03, 0xfb, 0xa3, 0x1a, 0x62, 0x89,
85630 - 0x9f, 0x9a, 0x45, 0x9a, 0x6f, 0xc2, 0x6f, 0x77, 0x60, 0x5f, 0x7a, 0x12,
85631 - 0x63, 0x7d, 0x1f, 0x9b, 0x76, 0xad, 0x0b, 0x1f, 0x85, 0x26, 0xc9, 0xeb,
85632 - 0xa4, 0xfe, 0xa9, 0x63, 0xd7, 0x80, 0xc6, 0x58, 0xda, 0x86, 0x9d, 0x8b,
85633 - 0x5b, 0xb0, 0x6b, 0xac, 0x19, 0xc6, 0x21, 0x0f, 0x76, 0x92, 0xf0, 0x4d,
85634 - 0x0c, 0x4f, 0xe2, 0x54, 0x52, 0x6b, 0x2a, 0x52, 0x26, 0x71, 0x92, 0xe3,
85635 - 0x6c, 0x4d, 0xbc, 0x05, 0x83, 0x7d, 0x6c, 0x4b, 0x4a, 0x8e, 0x57, 0xc6,
85636 - 0x99, 0x44, 0x77, 0xea, 0x76, 0x35, 0x8f, 0x36, 0xec, 0x48, 0x6c, 0x69,
85637 - 0xcf, 0xd6, 0x3d, 0x88, 0xab, 0x69, 0x4d, 0xe9, 0xe5, 0x1e, 0x1d, 0x4e,
85638 - 0xe7, 0x6b, 0x20, 0x82, 0xa1, 0x59, 0x3c, 0xdc, 0x96, 0xd6, 0xd1, 0x3b,
85639 - 0xd0, 0xc2, 0xf6, 0x1a, 0xba, 0x13, 0x52, 0x3f, 0xf6, 0x71, 0x3c, 0x13,
85640 - 0xef, 0xe9, 0x5e, 0xf7, 0x5d, 0xfc, 0x1e, 0xd1, 0x3b, 0xb1, 0x81, 0xfd,
85641 - 0x08, 0xe7, 0xd2, 0x14, 0x6f, 0x93, 0x01, 0x3b, 0x7e, 0xa5, 0xdb, 0x61,
85642 - 0x54, 0xd9, 0x71, 0x44, 0x2f, 0x23, 0x3f, 0xb7, 0xa3, 0x21, 0x44, 0xdf,
85643 - 0x9c, 0xf3, 0xd5, 0x1f, 0x26, 0x15, 0x3c, 0x40, 0x2c, 0x3d, 0x16, 0x6a,
85644 - 0x68, 0x5f, 0x2e, 0x6c, 0xf7, 0x80, 0x82, 0x2b, 0xda, 0x35, 0xd3, 0xa0,
85645 - 0xbf, 0x72, 0xf9, 0xf3, 0x7b, 0xf3, 0x6b, 0x33, 0x5b, 0x03, 0xfe, 0xc2,
85646 - 0xcc, 0x3f, 0x37, 0xc5, 0xf9, 0x3d, 0xc6, 0xe7, 0xee, 0x5a, 0xd4, 0xd0,
85647 - 0x29, 0xcf, 0xb9, 0x89, 0xe3, 0xf2, 0x9c, 0xe4, 0xf6, 0x6f, 0x3c, 0xa7,
85648 - 0x63, 0xdb, 0x40, 0xc4, 0x9a, 0xef, 0xf6, 0x04, 0x16, 0x3a, 0x20, 0x76,
85649 - 0xd4, 0xa0, 0x5e, 0x02, 0xba, 0x26, 0xf5, 0x19, 0xe4, 0x37, 0xfe, 0xc0,
85650 - 0x53, 0x10, 0x39, 0x49, 0xbc, 0xf9, 0x16, 0x76, 0x46, 0x87, 0xc1, 0x98,
85651 - 0x93, 0xf8, 0xe6, 0x5f, 0x3b, 0x84, 0x14, 0x9e, 0x4b, 0xa7, 0xf0, 0xbc,
85652 - 0x70, 0x6c, 0x2b, 0xc7, 0x96, 0xc6, 0x77, 0xa2, 0x6f, 0x21, 0x66, 0xc5,
85653 - 0x55, 0x87, 0xf1, 0x44, 0xf4, 0xdd, 0x6a, 0xc9, 0x65, 0x6e, 0x4d, 0x2c,
85654 - 0x65, 0xff, 0x22, 0x53, 0x6f, 0xab, 0x81, 0x2f, 0xd9, 0xff, 0x52, 0x6c,
85655 - 0x19, 0x92, 0x9c, 0x90, 0x89, 0xd7, 0xc9, 0xa9, 0xae, 0x50, 0x8f, 0x5a,
85656 - 0x1a, 0xa5, 0xff, 0x71, 0x45, 0xb3, 0x7c, 0x57, 0x1b, 0xf7, 0x78, 0x16,
85657 - 0xdc, 0x94, 0x73, 0x59, 0x46, 0x53, 0xee, 0x8a, 0xc9, 0x9e, 0x3b, 0x60,
85658 - 0xcb, 0x78, 0xf0, 0x18, 0x79, 0x49, 0xe1, 0xc8, 0x8f, 0x14, 0xf1, 0x5f,
85659 - 0x35, 0xe4, 0xa2, 0xee, 0x03, 0x1e, 0x65, 0xc1, 0x1e, 0x17, 0x1e, 0x88,
85660 - 0x91, 0xa3, 0xc6, 0x9a, 0xb1, 0x65, 0xaf, 0xc6, 0x36, 0x5e, 0xfd, 0x1c,
85661 - 0xe3, 0xd6, 0x93, 0xf0, 0x79, 0x86, 0xc8, 0xa5, 0xdc, 0xc4, 0x60, 0xc7,
85662 - 0x48, 0x39, 0x4a, 0xc8, 0xb3, 0xa5, 0xdc, 0x5c, 0x3a, 0xe2, 0x46, 0x0d,
85663 - 0xfd, 0x99, 0x3b, 0x73, 0x1e, 0x63, 0x7b, 0xa0, 0x96, 0x84, 0x3f, 0x37,
85664 - 0x0b, 0x35, 0xa9, 0x57, 0x06, 0x50, 0x9e, 0xd9, 0x84, 0x74, 0x2c, 0x88,
85665 - 0x52, 0xf2, 0xfb, 0x06, 0x8e, 0x77, 0x7f, 0x4c, 0x63, 0x3f, 0x59, 0x6e,
85666 - 0xb3, 0x9c, 0xcf, 0xf4, 0x26, 0xbc, 0x6b, 0xa5, 0xde, 0x78, 0x45, 0x7f,
85667 - 0x0d, 0x45, 0x7d, 0x37, 0xce, 0x9c, 0x69, 0x21, 0xcc, 0x21, 0xf7, 0x68,
85668 - 0x7d, 0x1a, 0xd9, 0xf3, 0x67, 0x2b, 0x72, 0xeb, 0x09, 0xca, 0x7a, 0x9c,
85669 - 0x6d, 0xd4, 0x83, 0xd9, 0x98, 0xc1, 0xf5, 0x5c, 0xa4, 0xde, 0xdc, 0xcb,
85670 - 0xb9, 0x5e, 0x63, 0xec, 0xd0, 0xc9, 0xb5, 0xbc, 0x3f, 0xfc, 0x23, 0xa5,
85671 - 0x86, 0x6b, 0x99, 0x22, 0x57, 0xfd, 0x38, 0xe5, 0x51, 0x7c, 0x5c, 0xcb,
85672 - 0x77, 0x79, 0xff, 0x3b, 0x5c, 0xcb, 0xd6, 0xbd, 0xde, 0xd6, 0xe3, 0x8a,
85673 - 0xb7, 0x7d, 0x8d, 0xe2, 0x53, 0xb7, 0x2a, 0xa5, 0xb8, 0x38, 0x5c, 0x8e,
85674 - 0x4b, 0xf4, 0xbd, 0xd7, 0x86, 0x2b, 0x71, 0x79, 0xb8, 0x8a, 0x36, 0xa2,
85675 - 0xb1, 0x0f, 0xd3, 0x2c, 0xd3, 0xdc, 0x98, 0x4a, 0x3f, 0x8f, 0x19, 0xb1,
85676 - 0x5a, 0x7c, 0x9c, 0xde, 0x80, 0xf2, 0x98, 0xc4, 0x00, 0x1e, 0x7c, 0xc4,
85677 - 0xfb, 0x1f, 0xa6, 0x47, 0x51, 0xbc, 0xe7, 0x73, 0xb6, 0x31, 0xcd, 0xfb,
85678 - 0xb9, 0xbe, 0xcb, 0xe9, 0x0e, 0x94, 0xee, 0xd9, 0x08, 0xc7, 0x1e, 0xb3,
85679 - 0x6b, 0x4b, 0x08, 0x3f, 0xb3, 0x73, 0x2d, 0xdd, 0xba, 0x77, 0xe2, 0x2e,
85680 - 0x7b, 0x90, 0x7d, 0x8c, 0x2b, 0x0b, 0x32, 0x1b, 0x51, 0xbe, 0xc7, 0x83,
85681 - 0x67, 0x29, 0xc3, 0x51, 0x68, 0x81, 0x35, 0xca, 0x46, 0x14, 0x8c, 0x64,
85682 - 0xd7, 0xbf, 0x2e, 0x93, 0xb5, 0x8b, 0xfb, 0x1b, 0xa7, 0xc7, 0x32, 0x6e,
85683 - 0x8b, 0x77, 0x4f, 0xa6, 0x4b, 0x70, 0x3a, 0x25, 0xf2, 0x81, 0xea, 0x08,
85684 - 0x8f, 0xa2, 0x70, 0x0f, 0x31, 0x71, 0x58, 0xb7, 0xf8, 0x82, 0xd8, 0xc4,
85685 - 0x70, 0xfa, 0x76, 0x36, 0x15, 0xc4, 0xce, 0x44, 0x0d, 0xed, 0xa9, 0x16,
85686 - 0x2b, 0xf7, 0x48, 0x8d, 0x79, 0xe2, 0x5e, 0x17, 0xb5, 0xe8, 0x50, 0xfa,
85687 - 0x56, 0x7b, 0x6a, 0xa4, 0x6e, 0x0a, 0xb6, 0x9a, 0x98, 0xd4, 0xb3, 0x78,
85688 - 0x73, 0xcc, 0xaa, 0x61, 0x8b, 0x4d, 0xb6, 0x62, 0xcb, 0x00, 0xda, 0xf7,
85689 - 0x37, 0x8a, 0x4d, 0x3a, 0x31, 0x44, 0xbe, 0x7f, 0x91, 0xb1, 0xc3, 0x0c,
85690 - 0xed, 0x73, 0x62, 0x42, 0x01, 0x06, 0x87, 0x5d, 0xf8, 0xf1, 0xb0, 0x07,
85691 - 0xee, 0x58, 0x31, 0xc6, 0x29, 0xe3, 0x31, 0x72, 0x9c, 0x8f, 0x18, 0x65,
85692 - 0x8f, 0xd2, 0xa7, 0x7e, 0x18, 0xad, 0x42, 0x26, 0x5d, 0x8b, 0xab, 0xc4,
85693 - 0x94, 0x34, 0xf7, 0xe3, 0x83, 0x68, 0x00, 0x2f, 0xa7, 0x83, 0x78, 0x3f,
85694 - 0x2a, 0xd8, 0x13, 0xc4, 0x11, 0xca, 0xaf, 0x28, 0xe6, 0x66, 0xbf, 0x82,
85695 - 0x43, 0x1e, 0x38, 0x63, 0x9a, 0x67, 0x28, 0xa7, 0x0b, 0x8e, 0x4c, 0x2b,
85696 - 0xed, 0x46, 0xce, 0x44, 0x88, 0x1f, 0x70, 0xe8, 0x43, 0x8c, 0xb9, 0x07,
85697 - 0x83, 0xf9, 0xfc, 0xaf, 0xd7, 0x3d, 0x81, 0x99, 0xb4, 0x9d, 0x2f, 0x4d,
85698 - 0x55, 0x93, 0x98, 0x2a, 0x19, 0xba, 0x12, 0xd5, 0x24, 0x17, 0x48, 0x6c,
85699 - 0x37, 0x14, 0xe7, 0x62, 0x72, 0x89, 0xaa, 0xad, 0x92, 0x17, 0xe6, 0xfc,
85700 - 0xe5, 0x6c, 0x99, 0xc9, 0x76, 0x57, 0x31, 0xff, 0xc0, 0xd6, 0x59, 0xb9,
85701 - 0x1c, 0x93, 0x7a, 0x83, 0xf7, 0xe5, 0x31, 0x5e, 0xe2, 0xb5, 0xdd, 0xa1,
85702 - 0xd7, 0xa2, 0x7f, 0x3f, 0x4b, 0xea, 0x71, 0xc7, 0x11, 0xa4, 0x4c, 0x6e,
85703 - 0x17, 0x0f, 0x98, 0x78, 0x93, 0x18, 0x72, 0x39, 0x29, 0xbc, 0x48, 0xf8,
85704 - 0x50, 0x17, 0x7d, 0x4f, 0x19, 0xf9, 0x80, 0x86, 0x6d, 0xe4, 0xeb, 0xbe,
85705 - 0xf8, 0x04, 0xe3, 0x91, 0xaf, 0x93, 0x93, 0x95, 0xb3, 0x9b, 0x1f, 0x70,
85706 - 0xbc, 0x56, 0xec, 0xa4, 0x2d, 0x16, 0x69, 0x77, 0x61, 0x25, 0xf9, 0x8e,
85707 - 0x43, 0xa3, 0xcb, 0x78, 0x58, 0xfc, 0x86, 0xe4, 0x70, 0x54, 0xa9, 0x95,
85708 - 0xad, 0x7d, 0x1d, 0xf7, 0xa2, 0xbd, 0xda, 0x05, 0xa9, 0x6f, 0xbd, 0x81,
85709 - 0x25, 0x48, 0x3d, 0x2a, 0xbe, 0x93, 0x1c, 0x39, 0xac, 0x19, 0xe7, 0x31,
85710 - 0xcf, 0x62, 0xdd, 0xc5, 0x61, 0x99, 0x4f, 0x15, 0x65, 0xaf, 0xe2, 0x1d,
85711 - 0xca, 0xf5, 0x52, 0xd4, 0x37, 0x75, 0x1f, 0x1a, 0x4e, 0x5d, 0xb2, 0x4b,
85712 - 0xed, 0x4f, 0xda, 0x07, 0xa1, 0xb1, 0xbf, 0x4f, 0xa3, 0x21, 0xf4, 0xa9,
85713 - 0x72, 0x2d, 0xfc, 0xb0, 0x15, 0xdd, 0x43, 0x32, 0x07, 0xd3, 0xac, 0x24,
85714 - 0x1e, 0x3e, 0x6c, 0x8d, 0x2f, 0x63, 0xdf, 0x1a, 0x5b, 0x78, 0x19, 0x49,
85715 - 0xe7, 0xe3, 0x8b, 0x49, 0x1c, 0x4e, 0x52, 0xfe, 0x8b, 0xdf, 0xa6, 0x1c,
85716 - 0x26, 0x31, 0x9c, 0xd2, 0xc8, 0x1d, 0x4b, 0xe0, 0xa9, 0x0e, 0x62, 0x17,
85717 - 0xfd, 0x75, 0x8c, 0xed, 0xd3, 0xb1, 0x12, 0x18, 0xd5, 0xd9, 0x31, 0xbf,
85718 - 0x1e, 0xbf, 0x6a, 0x4e, 0x3c, 0x64, 0xc5, 0xa9, 0xbc, 0xfe, 0x1d, 0x9f,
85719 - 0x99, 0x2d, 0xc7, 0x32, 0xb1, 0x3e, 0x76, 0xd9, 0x9c, 0x68, 0x9d, 0xfe,
85720 - 0x7b, 0x85, 0x75, 0xa6, 0x2a, 0x62, 0xab, 0xe6, 0x77, 0x56, 0x2e, 0xdd,
85721 - 0x94, 0xcb, 0x0c, 0xed, 0x2d, 0xf3, 0x41, 0x6b, 0x5e, 0xef, 0xcd, 0x12,
85722 - 0x2e, 0x5f, 0x17, 0xf7, 0xcc, 0x46, 0x71, 0x15, 0xdb, 0x10, 0x43, 0xc3,
85723 - 0x5a, 0xd3, 0x29, 0xfc, 0x8b, 0x79, 0xe1, 0xa6, 0x7e, 0x66, 0xf2, 0x9e,
85724 - 0xf8, 0x9e, 0x0b, 0xb9, 0x9c, 0x8f, 0x3b, 0xc7, 0xf7, 0x27, 0x71, 0x3c,
85725 - 0x29, 0xd8, 0xef, 0xc1, 0x13, 0x92, 0x9b, 0x52, 0xbd, 0xbd, 0x06, 0x26,
85726 - 0xc8, 0xf1, 0xde, 0xa6, 0xec, 0x25, 0xff, 0x38, 0x41, 0x9e, 0x37, 0xdd,
85727 - 0x37, 0x45, 0x90, 0xaa, 0x92, 0x1a, 0x8c, 0xe0, 0xe7, 0x24, 0xb6, 0x27,
85728 - 0x7f, 0x4a, 0x1c, 0xfb, 0x98, 0xbc, 0xa7, 0x8b, 0x9c, 0x7a, 0x12, 0x5b,
85729 - 0x52, 0xcd, 0x78, 0x69, 0x6f, 0x0b, 0x71, 0x45, 0xb0, 0xd1, 0x77, 0xea,
85730 - 0xa2, 0xbd, 0x19, 0xfb, 0x0f, 0xa5, 0x91, 0x1a, 0x11, 0x7f, 0x28, 0x3e,
85731 - 0x57, 0x7c, 0xa1, 0x86, 0x68, 0xe2, 0x24, 0x0c, 0x7e, 0xef, 0x4c, 0x6c,
85732 - 0x44, 0x64, 0xe4, 0x2d, 0xf2, 0xf8, 0x49, 0x2c, 0xef, 0xd3, 0xd6, 0x1e,
85733 - 0xc4, 0x24, 0x56, 0xd1, 0x57, 0x26, 0x13, 0x2d, 0xec, 0xbf, 0x19, 0x3d,
85734 - 0x7b, 0xbd, 0x56, 0xbe, 0x49, 0x62, 0xf8, 0x6d, 0x63, 0x11, 0x18, 0x43,
85735 - 0x72, 0x36, 0xc3, 0x85, 0x60, 0xdc, 0xa3, 0x7c, 0x48, 0x3e, 0xdc, 0x10,
85736 - 0xf7, 0x32, 0x06, 0xf3, 0x1a, 0xab, 0x14, 0x9f, 0xa7, 0xc0, 0x26, 0xb5,
85737 - 0xc0, 0x19, 0x38, 0xa5, 0x2b, 0x28, 0xba, 0x57, 0x41, 0x88, 0xbe, 0xca,
85738 - 0x33, 0x8b, 0x3e, 0x64, 0x48, 0x47, 0xcf, 0x00, 0xd7, 0x7b, 0x7d, 0xdf,
85739 - 0x64, 0xbf, 0x56, 0xb3, 0x3f, 0xd9, 0xbb, 0x16, 0xf4, 0x8c, 0xf9, 0x3a,
85740 - 0x4e, 0xc1, 0x6d, 0x71, 0xab, 0x9e, 0x81, 0xeb, 0x79, 0x81, 0xd2, 0x8f,
85741 - 0x1b, 0xbd, 0x81, 0x19, 0x8a, 0xb4, 0xdd, 0x4a, 0xcc, 0x9a, 0xde, 0xde,
85742 - 0x50, 0x92, 0x8b, 0xc9, 0x3f, 0x6d, 0x62, 0x17, 0xdd, 0x96, 0xbd, 0x88,
85743 - 0x2c, 0x7a, 0x92, 0x11, 0xea, 0xf4, 0x4f, 0xcc, 0x54, 0x6b, 0x2b, 0xe7,
85744 - 0xd9, 0x28, 0xb5, 0x31, 0x0b, 0x13, 0xce, 0x4a, 0x2e, 0xce, 0x29, 0x98,
85745 - 0xd0, 0xdd, 0xee, 0xa2, 0x3e, 0x15, 0x12, 0x97, 0x8a, 0x46, 0x5d, 0x70,
85746 - 0x1d, 0x2c, 0x41, 0xe1, 0xa0, 0xf0, 0x31, 0xc9, 0x41, 0xa8, 0xb0, 0x8f,
85747 - 0x96, 0xd2, 0x06, 0xb8, 0x87, 0xa3, 0xb4, 0xb1, 0xa8, 0x1b, 0xf3, 0x46,
85748 - 0xdd, 0xf8, 0x31, 0x31, 0xa0, 0x66, 0x54, 0xc3, 0x38, 0x31, 0xc0, 0x3d,
85749 - 0x1a, 0xc0, 0x58, 0x34, 0x88, 0x19, 0xa3, 0xe3, 0xca, 0x1b, 0xe9, 0x66,
85750 - 0xee, 0xb7, 0x8c, 0x23, 0x32, 0xcc, 0xef, 0xa9, 0xec, 0x67, 0x0b, 0xb1,
85751 - 0x4e, 0xf6, 0x36, 0x80, 0x1d, 0x03, 0x69, 0x2c, 0xdb, 0x63, 0xe2, 0x9f,
85752 - 0xf4, 0x06, 0x77, 0x91, 0x22, 0xb1, 0x80, 0x89, 0x34, 0xfd, 0xda, 0x0a,
85753 - 0xdd, 0xbb, 0x56, 0xce, 0x3b, 0xb7, 0x57, 0x99, 0x28, 0x08, 0x79, 0x75,
85754 - 0xa2, 0xfb, 0xda, 0x22, 0x45, 0x7c, 0x54, 0x83, 0x67, 0x03, 0xe6, 0x22,
85755 - 0x5b, 0x57, 0xbc, 0x0f, 0x1b, 0x54, 0x85, 0xb6, 0xd8, 0x82, 0x9d, 0x15,
85756 - 0x86, 0xeb, 0x4a, 0xa3, 0x69, 0xae, 0x0b, 0xd5, 0xcd, 0xb2, 0x72, 0xd0,
85757 - 0xb6, 0xf5, 0xfc, 0x6e, 0xe3, 0x9a, 0x65, 0xdd, 0x1d, 0x88, 0xed, 0x56,
85758 - 0x90, 0xf6, 0x77, 0x20, 0x3a, 0xdc, 0x21, 0xfc, 0x89, 0x78, 0xd0, 0x4b,
85759 - 0x3c, 0x30, 0xbb, 0x9e, 0x0e, 0x3d, 0x88, 0xcb, 0x96, 0xc7, 0x97, 0x67,
85760 - 0xbc, 0x01, 0x8f, 0x6d, 0xfa, 0x1e, 0xe8, 0xb3, 0x25, 0xcf, 0x21, 0x76,
85761 - 0xd3, 0xdc, 0x27, 0xbc, 0xd9, 0xdf, 0xdb, 0xc3, 0xbd, 0x7f, 0xe8, 0x80,
85762 - 0xf8, 0x17, 0xd3, 0xec, 0x25, 0x2f, 0x45, 0x85, 0xac, 0x41, 0x43, 0x3c,
85763 - 0x61, 0x7e, 0x5c, 0xa3, 0xf9, 0xa6, 0x76, 0xd1, 0x8f, 0x9f, 0xdf, 0xd3,
85764 - 0xb0, 0x61, 0x83, 0x70, 0x96, 0x45, 0x1a, 0x63, 0xe9, 0x34, 0xce, 0x8d,
85765 - 0xcc, 0x47, 0xea, 0x21, 0xae, 0x87, 0xfb, 0xe4, 0x8c, 0x7f, 0xc1, 0x38,
85766 - 0x43, 0xb0, 0x4f, 0x53, 0x0f, 0x13, 0xf7, 0x6c, 0xa3, 0x7e, 0x6c, 0xa9,
85767 - 0x80, 0x71, 0xa5, 0x51, 0xc6, 0xbf, 0x3e, 0x7f, 0xae, 0xb7, 0x19, 0xbb,
85768 - 0xf6, 0x0a, 0xaf, 0x10, 0xfe, 0xe5, 0x33, 0x3e, 0x40, 0x0b, 0x92, 0x63,
85769 - 0xd9, 0xb1, 0xa2, 0x89, 0x5b, 0xf5, 0x44, 0xf6, 0xfc, 0x24, 0x76, 0x50,
85770 - 0x27, 0x5d, 0xec, 0x9f, 0x3e, 0x85, 0xfd, 0x69, 0x81, 0x22, 0x19, 0x6f,
85771 - 0xf4, 0x27, 0xe6, 0xce, 0x6a, 0x91, 0x8d, 0xf4, 0xff, 0x9b, 0x6a, 0xc1,
85772 - 0x8b, 0x75, 0xa1, 0xaf, 0x5a, 0xeb, 0x15, 0x7e, 0x4b, 0xce, 0x3a, 0x3f,
85773 - 0x1f, 0x79, 0xe6, 0x76, 0xf3, 0xf9, 0x9c, 0xed, 0x64, 0x4e, 0x1d, 0xd8,
85774 - 0xb1, 0x1b, 0x46, 0xb1, 0xa6, 0x45, 0xe6, 0x2b, 0x1d, 0xe8, 0xa5, 0x7c,
85775 - 0xb7, 0x25, 0x3b, 0xb0, 0x9f, 0xf6, 0x3a, 0xa8, 0x1f, 0xab, 0xb1, 0xa1,
85776 - 0x7e, 0xca, 0x8e, 0x89, 0x7f, 0x94, 0x9a, 0xc5, 0x82, 0x45, 0x7e, 0xda,
85777 - 0x56, 0x07, 0xe2, 0xa9, 0x73, 0xb3, 0xad, 0x9a, 0xa8, 0x4d, 0x7c, 0x9e,
85778 - 0xc8, 0xa2, 0x13, 0xc5, 0x7d, 0x27, 0xe1, 0xec, 0xeb, 0x44, 0x91, 0x7f,
85779 - 0x09, 0x56, 0x84, 0x2e, 0x98, 0x97, 0x35, 0x87, 0xfb, 0x38, 0xe5, 0x73,
85780 - 0x2c, 0x58, 0xc3, 0x98, 0x91, 0x71, 0xca, 0xd0, 0x1c, 0xda, 0x7d, 0x23,
85781 - 0x76, 0x8c, 0xc9, 0x59, 0x08, 0x1b, 0x56, 0x2d, 0x96, 0x58, 0x5c, 0xa1,
85782 - 0x5e, 0xcf, 0x62, 0x3c, 0xa9, 0xa9, 0xcf, 0x59, 0xe7, 0x56, 0xc8, 0xb9,
85783 - 0xaa, 0x3c, 0x78, 0xd2, 0x3a, 0xaf, 0x21, 0xf7, 0x37, 0x31, 0x0e, 0xd8,
85784 - 0x84, 0x9a, 0x98, 0x61, 0x8a, 0xbc, 0x8f, 0x23, 0xf2, 0xa2, 0x8d, 0xf3,
85785 - 0x68, 0x5a, 0xe4, 0xdf, 0x30, 0xa5, 0x88, 0x3e, 0xfb, 0xdb, 0x47, 0x15,
85786 - 0xdd, 0xb5, 0x3a, 0xa3, 0x20, 0xd0, 0xc7, 0xbe, 0x42, 0x23, 0xb3, 0xb3,
85787 - 0xb9, 0xf1, 0x3c, 0xbf, 0xdb, 0x44, 0x5e, 0xb0, 0x09, 0x65, 0x31, 0xe1,
85788 - 0xe4, 0x82, 0x0b, 0x91, 0xa5, 0xe5, 0x7c, 0x3e, 0x1d, 0xf2, 0xb7, 0x96,
85789 - 0x2a, 0xc2, 0x7d, 0xfc, 0x4d, 0xab, 0x14, 0xe1, 0x2a, 0xf2, 0x9c, 0xee,
85790 - 0xaa, 0xcf, 0x9c, 0xcf, 0xd5, 0x31, 0x1b, 0x89, 0x0d, 0x72, 0xce, 0x24,
85791 - 0x7f, 0xd6, 0xea, 0x46, 0xce, 0xda, 0x19, 0x97, 0xd8, 0xe1, 0x68, 0x68,
85792 - 0x59, 0xb4, 0x89, 0x38, 0x67, 0x2e, 0x39, 0x44, 0xbd, 0xbf, 0x88, 0x2a,
85793 - 0xfc, 0x73, 0x54, 0x30, 0xcd, 0x83, 0x9f, 0x47, 0x0b, 0x25, 0x26, 0x4e,
85794 - 0x49, 0x5e, 0xf6, 0x4c, 0xd2, 0x30, 0x29, 0xd7, 0x96, 0x55, 0xd4, 0xa5,
85795 - 0x40, 0xa8, 0x14, 0xa8, 0xee, 0x7e, 0xd2, 0x69, 0xc5, 0xe8, 0x65, 0xa8,
85796 - 0x20, 0xfe, 0xf7, 0x0d, 0xfd, 0xa1, 0xf3, 0x0e, 0xc4, 0xe0, 0x62, 0xc9,
85797 - 0x15, 0xda, 0xb1, 0x2d, 0xf4, 0x1b, 0x33, 0xd5, 0x26, 0xcf, 0xd4, 0xe2,
85798 - 0xdc, 0x6e, 0xd1, 0xd3, 0x00, 0x0a, 0xe3, 0xe7, 0xa9, 0x93, 0x2a, 0xce,
85799 - 0x46, 0x7d, 0xfa, 0x1a, 0xdb, 0xb7, 0xa8, 0xff, 0xf3, 0x6e, 0xc2, 0xed,
85800 - 0x79, 0xda, 0x03, 0x78, 0xdc, 0xc2, 0xed, 0x30, 0xb6, 0xd0, 0x2f, 0x90,
85801 - 0xb7, 0xed, 0x7b, 0xd2, 0xa6, 0xd2, 0x9f, 0xfb, 0x54, 0x1f, 0x63, 0xea,
85802 - 0x2d, 0x1c, 0x43, 0xf8, 0xe4, 0x4c, 0xf2, 0xbd, 0xa7, 0xa3, 0x0d, 0x9e,
85803 - 0x5f, 0xe3, 0x09, 0xda, 0xa3, 0x8c, 0x21, 0x6b, 0xd2, 0x50, 0xca, 0xd8,
85804 - 0xf1, 0x04, 0xd7, 0xb1, 0xad, 0x22, 0x3b, 0x6e, 0x79, 0xae, 0xef, 0xf8,
85805 - 0x90, 0xf0, 0xad, 0x7b, 0xb0, 0xc6, 0xea, 0x3b, 0x68, 0xd9, 0xe6, 0xbe,
85806 - 0xa8, 0x82, 0x19, 0xf5, 0x1a, 0x12, 0xe9, 0x66, 0x6c, 0xac, 0xac, 0xc5,
85807 - 0xfe, 0xc4, 0x26, 0x2c, 0x24, 0xe7, 0x7d, 0xa4, 0xd2, 0xa0, 0x5f, 0x24,
85808 - 0x06, 0xc5, 0x35, 0x75, 0xbe, 0xf2, 0x8d, 0x5c, 0xae, 0xba, 0x0a, 0x8e,
85809 - 0xb8, 0xf8, 0xbb, 0x02, 0xf4, 0xab, 0x73, 0x51, 0x62, 0x9d, 0x81, 0xcc,
85810 - 0xf6, 0xbd, 0x6b, 0xc8, 0x9b, 0xf3, 0x81, 0x44, 0x8d, 0xb8, 0x75, 0x4e,
85811 - 0x25, 0xf0, 0x3c, 0x79, 0x44, 0x8a, 0xde, 0xaf, 0x20, 0xac, 0xa5, 0xd6,
85812 - 0xa3, 0x08, 0xc6, 0x2c, 0xc1, 0x43, 0x79, 0x66, 0xce, 0x2d, 0x73, 0xaa,
85813 - 0xcc, 0xcd, 0x29, 0x7f, 0xff, 0x34, 0xef, 0x89, 0x6e, 0x09, 0xb7, 0x90,
85814 - 0xdf, 0x8b, 0xd1, 0x4a, 0x7d, 0xaa, 0xe2, 0x9c, 0x13, 0x09, 0xb9, 0xef,
85815 - 0xd5, 0x0d, 0x5b, 0x23, 0x3e, 0xdb, 0x93, 0xd5, 0xc1, 0xb5, 0x75, 0xdc,
85816 - 0xff, 0xf2, 0x46, 0x4c, 0x8d, 0x88, 0x2f, 0xfb, 0xc3, 0x67, 0x50, 0x8c,
85817 - 0xeb, 0x67, 0x50, 0x44, 0xae, 0xde, 0x53, 0xef, 0xa0, 0x61, 0xe2, 0x31,
85818 - 0xdb, 0x61, 0x13, 0x33, 0x45, 0xc6, 0x71, 0xb7, 0xc4, 0x9a, 0x36, 0x72,
85819 - 0x08, 0x23, 0x3d, 0xee, 0x16, 0x3f, 0xe9, 0x88, 0x03, 0xf3, 0xe2, 0x06,
85820 - 0x0a, 0xc3, 0xda, 0xbe, 0x2b, 0xf6, 0x6b, 0x66, 0xfb, 0xac, 0x39, 0x8c,
85821 - 0xf9, 0x6e, 0xac, 0xb9, 0x97, 0x73, 0xb7, 0x6b, 0x3f, 0x31, 0xef, 0xab,
85822 - 0x92, 0x39, 0xfe, 0xd2, 0x9d, 0x3d, 0xfb, 0x70, 0x07, 0xe5, 0x92, 0x97,
85823 - 0x89, 0x49, 0xfd, 0xf9, 0x2b, 0xf3, 0x9b, 0x37, 0xdd, 0x17, 0x2e, 0x23,
85824 - 0x7a, 0x3a, 0xfd, 0x3c, 0xa0, 0xe8, 0xac, 0xd4, 0x56, 0x26, 0x71, 0x28,
85825 - 0x29, 0xba, 0x2b, 0x32, 0x8e, 0xe0, 0x22, 0x79, 0x61, 0x41, 0xff, 0x24,
85826 - 0x06, 0xc9, 0x0b, 0xed, 0x71, 0xef, 0x3e, 0x4a, 0x12, 0x1b, 0xd5, 0x25,
85827 - 0xc4, 0xea, 0x32, 0xce, 0x23, 0x3f, 0x87, 0x3a, 0x4b, 0xee, 0xe2, 0x5f,
85828 - 0x76, 0x72, 0xbd, 0x45, 0xe4, 0x48, 0xcd, 0xb1, 0x42, 0x68, 0x15, 0xe5,
85829 - 0x28, 0xd5, 0xe4, 0x0c, 0x7c, 0xb6, 0x5d, 0x94, 0x73, 0x29, 0xd1, 0xe6,
85830 - 0x62, 0x95, 0xd5, 0xd6, 0x63, 0x9d, 0x01, 0xd1, 0x2a, 0xc5, 0xff, 0x8a,
85831 - 0xcf, 0x25, 0xdf, 0x5e, 0x2c, 0x3e, 0x37, 0xcc, 0xb9, 0xcd, 0xc9, 0xd5,
85832 - 0x99, 0x56, 0x59, 0xf7, 0xf7, 0x25, 0x2e, 0x7c, 0xd9, 0x9f, 0xf8, 0x3d,
85833 - 0x9f, 0xe9, 0x80, 0xba, 0xb7, 0x18, 0x0f, 0xfd, 0x65, 0x09, 0xf4, 0xca,
85834 - 0x6c, 0xae, 0x7c, 0x5e, 0x38, 0x1a, 0x32, 0x13, 0xc2, 0x93, 0xee, 0x84,
85835 - 0x67, 0xb6, 0x8c, 0x25, 0x18, 0x20, 0x7b, 0x21, 0x7b, 0x27, 0x39, 0xdc,
85836 - 0xdb, 0xd5, 0x18, 0xbc, 0xea, 0xc4, 0xf5, 0x7d, 0x98, 0x0f, 0xed, 0xe1,
85837 - 0x2a, 0xae, 0x2d, 0xeb, 0x23, 0x76, 0xd0, 0x47, 0x04, 0xfc, 0x59, 0x0c,
85838 - 0x93, 0x1a, 0xbd, 0x93, 0x3e, 0x62, 0x84, 0x3e, 0xe2, 0xa2, 0x5e, 0x8e,
85839 - 0xe5, 0x39, 0x1f, 0xd1, 0x6e, 0xd3, 0xad, 0xfe, 0x9d, 0xda, 0x7d, 0x35,
85840 - 0xc4, 0x30, 0x8e, 0xf1, 0xb5, 0x9b, 0xb8, 0xd8, 0x4c, 0xed, 0x97, 0xe6,
85841 - 0x23, 0x55, 0xb2, 0xc6, 0xe6, 0x9a, 0x6c, 0x8e, 0xbc, 0x03, 0xfb, 0x88,
85842 - 0x8f, 0x35, 0x9a, 0x3c, 0xa3, 0x25, 0x6b, 0xec, 0x1d, 0xe8, 0x67, 0xff,
85843 - 0x7d, 0xc4, 0xc8, 0x18, 0x31, 0x52, 0x5f, 0x78, 0xec, 0x45, 0x15, 0xf5,
85844 - 0x1d, 0x64, 0x0f, 0xdf, 0x16, 0x6c, 0x79, 0x99, 0xd8, 0xf2, 0x3c, 0x31,
85845 - 0x72, 0x67, 0x4a, 0xc6, 0x91, 0xf1, 0xf2, 0xe3, 0x48, 0x9f, 0xff, 0x66,
85846 - 0xae, 0xaf, 0x92, 0xb9, 0xde, 0x6e, 0x1e, 0xf2, 0xdb, 0x9f, 0xf2, 0xef,
85847 - 0x62, 0x8b, 0x43, 0xf5, 0x26, 0xa6, 0x9f, 0xa9, 0x98, 0x24, 0xbe, 0x5a,
85848 - 0x71, 0x00, 0xfd, 0x6b, 0x04, 0x2b, 0x17, 0xab, 0xb8, 0x1c, 0x9d, 0x44,
85849 - 0xd1, 0x81, 0x3c, 0x16, 0x99, 0x4b, 0x4e, 0x10, 0x87, 0x06, 0x21, 0xd8,
85850 - 0xd3, 0xc4, 0x3d, 0x30, 0x68, 0x13, 0x65, 0x18, 0x4d, 0xca, 0xd9, 0x0b,
85851 - 0x13, 0xbb, 0x42, 0x2e, 0x72, 0xd8, 0xee, 0xe3, 0x05, 0x96, 0x4f, 0x28,
85852 - 0x23, 0x5e, 0xe7, 0xf9, 0xb5, 0x70, 0x6b, 0xc1, 0x1a, 0xc6, 0x11, 0x43,
85853 - 0x76, 0x14, 0x2c, 0xca, 0xc6, 0x0e, 0xe7, 0xda, 0xa4, 0x5d, 0x2d, 0x06,
85854 - 0x77, 0x8b, 0xae, 0xf9, 0x50, 0xa3, 0x9d, 0x67, 0x2c, 0x01, 0xbc, 0x1b,
85855 - 0xb5, 0xdd, 0xe9, 0x22, 0x07, 0xee, 0xd2, 0x17, 0xe3, 0xda, 0xcc, 0x2d,
85856 - 0xb4, 0x6f, 0x37, 0x7f, 0x9b, 0xc0, 0xc1, 0xa8, 0x0b, 0x05, 0x56, 0x8d,
85857 - 0xb2, 0x9c, 0xeb, 0xc9, 0xea, 0xcb, 0x36, 0xea, 0x4b, 0x21, 0x63, 0xb3,
85858 - 0x15, 0x96, 0x5d, 0x4a, 0x3f, 0x93, 0xd6, 0xbb, 0x32, 0xda, 0x62, 0xe1,
85859 - 0xad, 0x41, 0xfa, 0xc0, 0x32, 0xc4, 0xfb, 0xba, 0x70, 0x36, 0x54, 0x86,
85860 - 0xd8, 0x01, 0xb1, 0xa7, 0x5a, 0xc1, 0x4d, 0x8e, 0xdb, 0x44, 0xf9, 0xa8,
85861 - 0xc4, 0x95, 0x86, 0x4e, 0xbb, 0xbd, 0x0c, 0x17, 0x2a, 0x18, 0xaf, 0x5a,
85862 - 0xef, 0x13, 0xb5, 0x62, 0x7f, 0x6e, 0x8f, 0x54, 0xf2, 0x9b, 0xd6, 0xeb,
85863 - 0x7c, 0x39, 0xbf, 0x96, 0xbc, 0x7d, 0x66, 0x6b, 0xe4, 0x3d, 0xe4, 0x30,
85864 - 0x2f, 0x49, 0x3e, 0xc8, 0xe6, 0xa3, 0xdf, 0x60, 0x5c, 0x34, 0x26, 0xb2,
85865 - 0xce, 0xeb, 0xd6, 0xeb, 0x35, 0xd9, 0x33, 0x3d, 0xf9, 0x3d, 0xc8, 0x5f,
85866 - 0x6b, 0x6b, 0x8b, 0x95, 0x5f, 0x98, 0xcf, 0x56, 0xcb, 0xfc, 0xae, 0x32,
85867 - 0x0e, 0xfb, 0x31, 0x7f, 0x5f, 0x86, 0x9e, 0xa1, 0xe9, 0x7e, 0x41, 0x6c,
85868 - 0xce, 0x73, 0xd3, 0xd9, 0xc3, 0x8a, 0xb8, 0xbc, 0xbf, 0x75, 0x34, 0xf4,
85869 - 0x24, 0xf7, 0xc1, 0xbf, 0xb0, 0xc1, 0xca, 0xa5, 0x90, 0xe3, 0x32, 0xfe,
85870 - 0x10, 0x3c, 0x35, 0xe8, 0xcf, 0xcb, 0xf0, 0xb3, 0xa4, 0xf8, 0x57, 0x13,
85871 - 0x85, 0xa1, 0x12, 0xfa, 0xbb, 0xee, 0xe7, 0x2a, 0x2c, 0xce, 0x5c, 0x86,
85872 - 0x4a, 0xea, 0x5e, 0xff, 0xd0, 0xed, 0xf4, 0xfc, 0x86, 0x0f, 0x48, 0x87,
85873 - 0x14, 0x62, 0xc2, 0x6f, 0xcc, 0x5d, 0x8f, 0x66, 0x9f, 0x39, 0x97, 0x74,
85874 - 0xe1, 0xa3, 0x50, 0x3b, 0x26, 0x2a, 0xc2, 0x18, 0x48, 0x14, 0xa1, 0x7d,
85875 - 0x56, 0xbd, 0xf5, 0xce, 0x45, 0x4d, 0xdc, 0x83, 0xf3, 0x51, 0x27, 0x9a,
85876 - 0x66, 0x7b, 0xac, 0x7c, 0x92, 0x8d, 0x76, 0xf1, 0x76, 0x34, 0x42, 0x5f,
85877 - 0xe0, 0xb9, 0xc9, 0x3f, 0x14, 0x68, 0x8b, 0x70, 0x7f, 0x0e, 0xc3, 0xf7,
85878 - 0x27, 0x3e, 0x27, 0xc6, 0x94, 0x1b, 0x33, 0xc3, 0x65, 0xb8, 0x7b, 0x40,
85879 - 0xce, 0x29, 0x48, 0x9d, 0x4a, 0x9b, 0x9a, 0xaf, 0x94, 0x61, 0xc9, 0x90,
85880 - 0xe0, 0xb9, 0x9c, 0xfd, 0x48, 0x87, 0x5c, 0xb1, 0x36, 0xee, 0x51, 0x27,
85881 - 0xea, 0xf7, 0x5a, 0x72, 0x55, 0xed, 0x8a, 0xd9, 0x75, 0x49, 0x8f, 0xe8,
85882 - 0xf4, 0x67, 0x9d, 0xf7, 0x53, 0xef, 0xa7, 0x42, 0xde, 0xf6, 0x99, 0x76,
85883 - 0xad, 0xe3, 0x57, 0x4a, 0x10, 0xa3, 0x19, 0xa0, 0x6f, 0x24, 0x80, 0x0f,
85884 - 0x12, 0xc2, 0xed, 0x03, 0x78, 0x7f, 0x2c, 0x88, 0x77, 0xe8, 0x87, 0x8a,
85885 - 0xe2, 0xde, 0xc8, 0x33, 0x8c, 0xdd, 0xde, 0xe5, 0x75, 0x61, 0x5c, 0xc7,
85886 - 0x15, 0xca, 0xcf, 0x19, 0x6f, 0xc4, 0xa5, 0xb1, 0x6f, 0xe0, 0xf2, 0x5e,
85887 - 0x05, 0xc7, 0xb4, 0x6f, 0xe0, 0xe2, 0xa1, 0x4e, 0x2c, 0xda, 0x2b, 0x67,
85888 - 0xf5, 0x8e, 0x86, 0x54, 0xfa, 0x81, 0x27, 0xeb, 0xcc, 0xae, 0x17, 0xf4,
85889 - 0x7a, 0x62, 0x86, 0x57, 0x6f, 0x67, 0x6c, 0x24, 0xf8, 0x1d, 0xb1, 0xc9,
85890 - 0x9e, 0xc9, 0xde, 0x75, 0xe2, 0xb2, 0x85, 0xd9, 0xb7, 0xc7, 0x89, 0x1b,
85891 - 0x78, 0x2d, 0xe3, 0x88, 0x6d, 0xdf, 0x81, 0x57, 0x19, 0x94, 0x6e, 0x61,
85892 - 0x3b, 0x17, 0x71, 0xee, 0xe9, 0x68, 0x11, 0x0a, 0xab, 0xcb, 0x2d, 0x7b,
85893 - 0x2b, 0x8e, 0x07, 0x70, 0x9a, 0xb2, 0x5b, 0x59, 0xed, 0xe5, 0xb5, 0xf8,
85894 - 0xd8, 0x20, 0xe3, 0x93, 0x99, 0xf8, 0xe0, 0x26, 0xdf, 0xfa, 0xaa, 0x85,
85895 - 0x0d, 0x0e, 0xed, 0x81, 0x39, 0x59, 0x6c, 0x20, 0xa0, 0x13, 0x93, 0x25,
85896 - 0x27, 0x58, 0xae, 0x69, 0x1b, 0xbe, 0x4b, 0x1b, 0x4f, 0x87, 0x8e, 0xfd,
85897 - 0x49, 0x29, 0x39, 0xf0, 0x0b, 0xa1, 0x7a, 0xa3, 0x02, 0x2b, 0x78, 0x7f,
85898 - 0x62, 0x91, 0x8a, 0x75, 0xfc, 0xf6, 0xb3, 0x5d, 0x90, 0xf3, 0xb8, 0x6a,
85899 - 0xa6, 0x54, 0x1f, 0xff, 0xae, 0xa5, 0x2f, 0xdf, 0x84, 0xb3, 0xb1, 0x86,
85900 - 0xf6, 0x11, 0xe5, 0x8a, 0x69, 0x54, 0xd7, 0xf1, 0xb7, 0x2a, 0x9c, 0x8b,
85901 - 0x7a, 0x27, 0x0e, 0xa1, 0xc1, 0x33, 0xa5, 0xec, 0x37, 0x0d, 0x55, 0xf6,
85902 - 0x47, 0xd6, 0x2b, 0xcf, 0xdf, 0xc5, 0xfb, 0x17, 0xa6, 0xe9, 0xe1, 0x8d,
85903 - 0xf8, 0xca, 0x79, 0x5d, 0xff, 0x84, 0x83, 0x98, 0x4b, 0x86, 0xf5, 0x06,
85904 - 0x75, 0x0b, 0xb1, 0x20, 0xa2, 0xde, 0x4e, 0xff, 0x8a, 0xa8, 0x7f, 0x61,
85905 - 0xc6, 0x8b, 0x65, 0x50, 0x2d, 0x5f, 0xd4, 0x8a, 0xe4, 0xd0, 0x74, 0x1e,
85906 - 0x29, 0x7a, 0x97, 0xe5, 0xa4, 0xed, 0x15, 0xdd, 0xc7, 0x9d, 0xf4, 0x87,
85907 - 0x09, 0x62, 0x78, 0x9c, 0x18, 0x5e, 0x48, 0x0c, 0xbf, 0xba, 0xa7, 0x18,
85908 - 0x67, 0xf7, 0x34, 0x21, 0x5d, 0x21, 0xcf, 0xd8, 0xe1, 0xe4, 0xea, 0x52,
85909 - 0x96, 0x6f, 0xb7, 0xa1, 0xa6, 0x7f, 0xa9, 0x9c, 0x75, 0x85, 0xf8, 0xd0,
85910 - 0x82, 0x38, 0x11, 0xb1, 0xd5, 0x0e, 0x87, 0xf5, 0x7e, 0xc1, 0x8c, 0x9b,
85911 - 0xf4, 0xcf, 0xa5, 0x15, 0xa2, 0xa5, 0x4a, 0xf0, 0xe1, 0xe2, 0x1c, 0xf1,
85912 - 0x99, 0x3f, 0xe5, 0x5c, 0x8e, 0x53, 0xa7, 0x9f, 0xd2, 0xef, 0x91, 0x1a,
85913 - 0x1d, 0xdb, 0xcb, 0x73, 0x12, 0xc3, 0x98, 0xd8, 0x41, 0x0d, 0xab, 0xaf,
85914 - 0x36, 0x91, 0xd0, 0xc3, 0xf4, 0x4f, 0x21, 0x44, 0x2a, 0x82, 0xf4, 0x4b,
85915 - 0x72, 0xad, 0xe2, 0x12, 0xe3, 0xaf, 0x4c, 0x50, 0xc1, 0x47, 0x5f, 0x13,
85916 - 0xbf, 0xef, 0xd7, 0xcf, 0x2a, 0xa7, 0x67, 0x65, 0xdf, 0x6b, 0x10, 0x8c,
85917 - 0x28, 0xb7, 0x30, 0xa2, 0xd0, 0xe2, 0x40, 0xb3, 0x2d, 0x6c, 0xf1, 0xd8,
85918 - 0xe4, 0x4c, 0x51, 0x34, 0x74, 0x6f, 0xa2, 0x61, 0xc2, 0x67, 0x27, 0x1f,
85919 - 0xfb, 0xe3, 0xaf, 0x91, 0x87, 0x59, 0x7c, 0x60, 0xba, 0xdf, 0x69, 0x02,
85920 - 0xa6, 0xcb, 0x23, 0x7f, 0x76, 0xd9, 0x93, 0xc5, 0xca, 0x72, 0xe1, 0x6d,
85921 - 0xff, 0xcf, 0x6c, 0xbd, 0x69, 0xfe, 0x79, 0x1c, 0xf9, 0x25, 0xaf, 0xe5,
85922 - 0x79, 0xb1, 0x3b, 0xea, 0x45, 0xfc, 0x1f, 0xcd, 0xc7, 0x2d, 0xee, 0x76,
85923 - 0x6c, 0x8e, 0x9c, 0xcb, 0x74, 0xf4, 0xff, 0xfd, 0x1c, 0x79, 0x9f, 0xc1,
85924 - 0x36, 0x8d, 0x03, 0x64, 0xfd, 0xea, 0x3b, 0xe6, 0x2a, 0x6b, 0xae, 0xa7,
85925 - 0x73, 0xed, 0x24, 0x56, 0x96, 0xb9, 0x28, 0xf8, 0x81, 0xd6, 0xa0, 0x9e,
85926 - 0x46, 0xa9, 0xe0, 0x49, 0x44, 0xea, 0x91, 0xc5, 0x9a, 0xcf, 0x7d, 0x90,
85927 - 0xdf, 0xbb, 0x78, 0xff, 0x35, 0xcd, 0xd1, 0xf4, 0x2c, 0xa4, 0x06, 0x6b,
85928 - 0xe3, 0x5e, 0x35, 0xb8, 0x4f, 0xc3, 0x1f, 0x29, 0x54, 0xa6, 0xcc, 0xf6,
85929 - 0x2a, 0x69, 0x93, 0xad, 0xc5, 0x42, 0x39, 0x6f, 0xe5, 0x49, 0xb2, 0x3a,
85930 - 0x53, 0x4b, 0x9d, 0x11, 0xec, 0x12, 0xde, 0xb1, 0x80, 0x6b, 0x57, 0x31,
85931 - 0x34, 0x26, 0x1c, 0xc1, 0x65, 0xf1, 0x20, 0xb5, 0xae, 0xce, 0xb3, 0x1e,
85932 - 0xca, 0x5c, 0x62, 0x2c, 0xb6, 0xea, 0xb8, 0xd3, 0x86, 0xb7, 0xee, 0xb4,
85933 - 0x85, 0x97, 0xfe, 0xd9, 0xfd, 0x8d, 0x77, 0xcf, 0x95, 0x77, 0x5f, 0xc8,
85934 - 0xe6, 0x24, 0x2f, 0xeb, 0x96, 0xba, 0xe1, 0x72, 0xf2, 0xaa, 0x41, 0xc6,
85935 - 0xf2, 0xcb, 0x83, 0xbf, 0x33, 0xbf, 0xed, 0x88, 0x78, 0xec, 0xa8, 0xf3,
85936 - 0xf4, 0xe0, 0x9a, 0x99, 0xaa, 0xb2, 0xee, 0xcf, 0x95, 0xf7, 0x0d, 0x9c,
85937 - 0xd2, 0x3f, 0xb9, 0xc8, 0xdd, 0x75, 0x26, 0xe3, 0x64, 0xdb, 0x32, 0x3b,
85938 - 0xed, 0x82, 0x32, 0x33, 0xeb, 0x67, 0xd5, 0xb9, 0x6d, 0x4a, 0x3d, 0xb5,
85939 - 0xa3, 0x0a, 0x47, 0xa8, 0xbf, 0x47, 0xc6, 0xc4, 0xff, 0xa9, 0x38, 0x4c,
85940 - 0x3b, 0x3d, 0x54, 0xef, 0xeb, 0xbc, 0xcc, 0xb8, 0xf1, 0x43, 0xf2, 0xf9,
85941 - 0x37, 0x34, 0x6f, 0xfb, 0x29, 0xc9, 0x29, 0x86, 0x1c, 0x38, 0x13, 0xbc,
85942 - 0x66, 0xe5, 0x78, 0x63, 0x07, 0x54, 0x0c, 0x26, 0xb2, 0xf6, 0xfe, 0x0a,
85943 - 0xed, 0xf8, 0xc6, 0x99, 0x03, 0x1d, 0x5b, 0x06, 0xc4, 0x3e, 0x1a, 0x2d,
85944 - 0x3b, 0xba, 0x91, 0x13, 0x12, 0xbc, 0x16, 0xbb, 0x78, 0x42, 0x6a, 0x71,
85945 - 0x46, 0x0a, 0x0e, 0xca, 0x77, 0x39, 0xf9, 0xae, 0xf8, 0xd8, 0x00, 0x63,
85946 - 0x5b, 0x07, 0xed, 0xe7, 0x14, 0xe3, 0x0c, 0xce, 0x2d, 0x6c, 0x9a, 0xef,
85947 - 0x30, 0xee, 0x1a, 0x42, 0x83, 0x7a, 0x02, 0x6b, 0xc8, 0x59, 0xc9, 0x67,
85948 - 0xc6, 0x9a, 0xb1, 0xd3, 0x8a, 0x9b, 0x7c, 0xea, 0x0a, 0x65, 0x21, 0xd7,
85949 - 0xdf, 0x8c, 0xee, 0x43, 0xb5, 0xe4, 0x35, 0xa6, 0xb9, 0x5a, 0xff, 0x73,
85950 - 0x54, 0x0e, 0x74, 0x77, 0x56, 0x52, 0x1e, 0x9f, 0x86, 0x8c, 0x0e, 0x62,
85951 - 0xfa, 0x86, 0x13, 0x4a, 0xc3, 0xda, 0x98, 0xf2, 0x6d, 0xee, 0x87, 0xe4,
85952 - 0x41, 0x3c, 0x8c, 0xc7, 0x57, 0xd3, 0x9f, 0xfd, 0x0f, 0xec, 0x50, 0x95,
85953 - 0x25, 0xb6, 0xb0, 0xf0, 0x41, 0xf8, 0xd5, 0xb0, 0x76, 0xea, 0xa2, 0x7d,
85954 - 0x33, 0xbd, 0x4f, 0x23, 0xef, 0x89, 0x5f, 0x97, 0xb6, 0x72, 0xb6, 0xbe,
85955 - 0x13, 0xc7, 0xd3, 0xd4, 0xeb, 0x68, 0x2f, 0x4e, 0xa4, 0x65, 0x4c, 0xe1,
85956 - 0x53, 0x01, 0xc4, 0x06, 0xec, 0x18, 0xd5, 0x7d, 0x91, 0x72, 0xca, 0xa5,
85957 - 0x38, 0xe4, 0x8d, 0xac, 0x51, 0x02, 0xe4, 0x6d, 0x69, 0x9c, 0xd9, 0xed,
85958 - 0x6d, 0xaf, 0x67, 0x8c, 0x18, 0x1d, 0x83, 0xfa, 0xcc, 0xe2, 0x34, 0x4e,
85959 - 0x0f, 0x3f, 0x04, 0xcf, 0x2c, 0xaf, 0x67, 0xb9, 0xd2, 0x82, 0xad, 0x63,
85960 - 0xff, 0x51, 0x2e, 0xc9, 0xc3, 0xb1, 0x5b, 0x60, 0x50, 0xf6, 0xdb, 0xd1,
85961 - 0x3f, 0x57, 0x6c, 0xbe, 0x67, 0xac, 0x14, 0xf3, 0xe8, 0x8f, 0x5e, 0xb2,
85962 - 0xfc, 0x6c, 0xd6, 0x8e, 0x6a, 0xb4, 0x8f, 0xcc, 0xc7, 0x72, 0x3e, 0xfc,
85963 - 0xab, 0xe5, 0xf5, 0x77, 0x66, 0x44, 0x15, 0x79, 0xc9, 0x73, 0x35, 0x28,
85964 - 0x62, 0x3f, 0x3b, 0x72, 0xfe, 0xba, 0x42, 0xfb, 0xbf, 0xe6, 0x43, 0x56,
85965 - 0x1f, 0x4f, 0xcd, 0x95, 0xa0, 0x60, 0x9b, 0x15, 0xd3, 0xcb, 0xba, 0x75,
85966 - 0x7c, 0x16, 0x95, 0x9c, 0x86, 0x8a, 0x13, 0xba, 0xe0, 0x48, 0x0b, 0x6d,
85967 - 0xd5, 0x89, 0x0d, 0x41, 0x9a, 0xa3, 0x95, 0xcf, 0x9f, 0xc4, 0xce, 0xe4,
85968 - 0xbf, 0x9b, 0xcf, 0x51, 0x8f, 0x56, 0x92, 0xc3, 0x78, 0x88, 0x03, 0x4f,
85969 - 0x85, 0x56, 0x93, 0x73, 0x72, 0xcd, 0x09, 0x07, 0x31, 0x48, 0x41, 0xa2,
85970 - 0x89, 0xf6, 0x1f, 0x5a, 0x80, 0x09, 0xab, 0x7d, 0xd5, 0xdc, 0x6c, 0x0e,
85971 - 0xf1, 0x83, 0xb9, 0xd9, 0x38, 0x50, 0xe4, 0xff, 0x9f, 0x91, 0xdf, 0x2b,
85972 - 0xa6, 0xa7, 0x52, 0xe4, 0xe7, 0x80, 0x9b, 0x7e, 0x6b, 0x1f, 0xdb, 0x9c,
85973 - 0xdb, 0xed, 0x40, 0xbf, 0xd6, 0x82, 0xfe, 0x31, 0x78, 0x3e, 0x65, 0x9b,
85974 - 0x7f, 0x1a, 0x1e, 0x98, 0x9b, 0xe5, 0x0a, 0x6f, 0xa1, 0x3b, 0xfa, 0xbc,
85975 - 0xb9, 0xac, 0x52, 0xd6, 0xeb, 0x84, 0x9b, 0xeb, 0xdd, 0x77, 0x3d, 0x9f,
85976 - 0xb7, 0xde, 0x7c, 0xd8, 0xf2, 0x13, 0xbb, 0xe7, 0x4a, 0xbd, 0xec, 0xa7,
85977 - 0x09, 0x13, 0x97, 0xf4, 0xa3, 0x56, 0x1c, 0x2e, 0xd8, 0xd0, 0x93, 0x90,
85978 - 0xbd, 0x95, 0xb9, 0x6d, 0xcd, 0xc9, 0xe3, 0xff, 0x54, 0xdf, 0x3c, 0xef,
85979 - 0x65, 0x39, 0x5d, 0x96, 0x5a, 0x75, 0x9e, 0xe3, 0x8b, 0x2e, 0x8b, 0x1e,
85980 - 0x5b, 0xef, 0xfd, 0x24, 0xe5, 0xfd, 0xd9, 0x27, 0xd4, 0xdf, 0x73, 0x0c,
85981 - 0xc9, 0xa9, 0xb4, 0xb0, 0x0f, 0xd3, 0x5c, 0xaf, 0x37, 0x78, 0x4e, 0xe0,
85982 - 0x8f, 0xa8, 0xdb, 0x3a, 0xb6, 0x0f, 0x48, 0xbe, 0xd5, 0xa3, 0x38, 0xf6,
85983 - 0xac, 0xc1, 0x25, 0xfa, 0xff, 0x9d, 0x96, 0x1e, 0x0a, 0xae, 0xc8, 0x3c,
85984 - 0x04, 0x5b, 0xda, 0xe8, 0xc7, 0xad, 0xb3, 0x2e, 0x91, 0x9a, 0x70, 0xa7,
85985 - 0xf2, 0x61, 0x7d, 0x27, 0x8e, 0x86, 0x0c, 0xb3, 0x5c, 0xf3, 0xaf, 0x65,
85986 - 0xd0, 0x5f, 0x34, 0xd6, 0x58, 0x88, 0xf1, 0x90, 0xf0, 0x47, 0xb8, 0xd2,
85987 - 0x69, 0xaf, 0x31, 0xc3, 0xae, 0xba, 0x5e, 0x4e, 0xe7, 0xb0, 0xd2, 0xf6,
85988 - 0xc0, 0x5c, 0x89, 0x97, 0x92, 0x16, 0x8e, 0x7c, 0x1d, 0xf7, 0x59, 0x7b,
85989 - 0xab, 0xd2, 0x87, 0x4a, 0xbe, 0xf7, 0x68, 0xe8, 0x4a, 0x54, 0x30, 0xc5,
85990 - 0x5c, 0xd2, 0x1c, 0x6a, 0x50, 0xb7, 0xe3, 0x4e, 0x62, 0xd7, 0x12, 0x9c,
85991 - 0xd1, 0xa5, 0xae, 0x61, 0x7c, 0xdb, 0x01, 0xa9, 0xc1, 0x1d, 0x0e, 0x6d,
85992 - 0x8d, 0x2e, 0xc5, 0xbe, 0x01, 0x43, 0x71, 0x86, 0xbd, 0x91, 0x18, 0xb9,
85993 - 0x10, 0xe3, 0x71, 0x2b, 0xdf, 0x27, 0xf9, 0x84, 0xc1, 0xc6, 0x4e, 0x6c,
85994 - 0xd7, 0x0b, 0xd1, 0xa3, 0x47, 0x8a, 0xb6, 0x2c, 0xee, 0xc2, 0x7e, 0xbd,
85995 - 0xd4, 0x98, 0x17, 0x36, 0x88, 0xe9, 0xda, 0x86, 0x24, 0xfc, 0x2d, 0x17,
85996 - 0xc9, 0x39, 0x8e, 0xc3, 0xdb, 0xb1, 0xc4, 0x4e, 0xcc, 0xbd, 0xc7, 0xe1,
85997 - 0x8a, 0x65, 0x9a, 0x90, 0x18, 0xab, 0x72, 0xed, 0xc8, 0x04, 0x11, 0x1f,
85998 - 0xe3, 0x7e, 0x33, 0xae, 0x75, 0x64, 0x96, 0x92, 0x83, 0x8a, 0x1c, 0xed,
85999 - 0xd4, 0xc5, 0x7a, 0x3c, 0xd3, 0x7a, 0xc1, 0x7c, 0xd2, 0x2f, 0xf8, 0x59,
86000 - 0x8b, 0x67, 0x55, 0x9f, 0xc5, 0x29, 0x23, 0xb6, 0xaf, 0xb2, 0x0f, 0x3b,
86001 - 0x75, 0xee, 0x55, 0xd3, 0xf3, 0xa8, 0xc8, 0x8d, 0xc1, 0x56, 0xf1, 0x6a,
86002 - 0xe2, 0xa7, 0xfc, 0x2d, 0xb2, 0x13, 0x19, 0x9a, 0x58, 0xa7, 0x4b, 0x2e,
86003 - 0xaf, 0x91, 0x36, 0xe3, 0xc6, 0xdb, 0xea, 0x8d, 0x7d, 0x78, 0x5a, 0xf7,
86004 - 0xe9, 0x87, 0x20, 0x39, 0xbc, 0xff, 0xce, 0xe7, 0x24, 0xdf, 0xd2, 0x84,
86005 - 0x17, 0x2b, 0xb2, 0xf1, 0x87, 0xc7, 0x56, 0x42, 0xdc, 0xcd, 0xfb, 0x11,
86006 - 0xb9, 0xef, 0x4d, 0x46, 0xa8, 0xa7, 0x1b, 0x83, 0x53, 0x66, 0xa4, 0xd2,
86007 - 0xe8, 0x94, 0xb3, 0x28, 0xee, 0xf0, 0xea, 0x17, 0xdd, 0xf5, 0xde, 0x8e,
86008 - 0x29, 0x05, 0x38, 0x13, 0xa3, 0x1f, 0xb6, 0xfe, 0xbb, 0x47, 0xe9, 0xdb,
86009 - 0x89, 0xa1, 0xe0, 0x1d, 0x68, 0x6f, 0x93, 0xb1, 0x9a, 0xd1, 0xbb, 0xd7,
86010 - 0x34, 0x4b, 0x43, 0x3e, 0x35, 0x0d, 0x27, 0x56, 0x04, 0xed, 0xb8, 0xa0,
86011 - 0x9a, 0x70, 0x84, 0xfe, 0xdd, 0xcc, 0xd0, 0x3f, 0x0e, 0xd3, 0x4e, 0x76,
86012 - 0x50, 0xc7, 0xe4, 0x5d, 0x28, 0x3f, 0xed, 0x24, 0x4e, 0x3b, 0x39, 0x13,
86013 - 0x9a, 0x9f, 0x7b, 0x57, 0x52, 0x23, 0xaf, 0x98, 0xc4, 0x92, 0x01, 0x15,
86014 - 0x9f, 0xde, 0x33, 0x89, 0xd0, 0x50, 0x7e, 0xee, 0x62, 0x97, 0xf9, 0xf9,
86015 - 0x4b, 0x6d, 0x50, 0xe6, 0x2e, 0x73, 0x94, 0xb5, 0xc8, 0xdf, 0xf9, 0x7b,
86016 - 0xf9, 0xdf, 0xc4, 0xcf, 0x3a, 0xd1, 0x6a, 0xad, 0xed, 0x2f, 0x6a, 0xb2,
86017 - 0x98, 0x91, 0x5f, 0x93, 0xeb, 0x96, 0xeb, 0x4b, 0xb7, 0x5c, 0x3f, 0xee,
86018 - 0xbe, 0xf9, 0x7a, 0xfb, 0x9c, 0x9b, 0xaf, 0xf3, 0x36, 0x71, 0x43, 0xae,
86019 - 0x1d, 0xba, 0x6f, 0xe2, 0x28, 0xd7, 0x3a, 0x63, 0xc1, 0x21, 0xf3, 0x42,
86020 - 0x85, 0xcc, 0x45, 0x62, 0xd6, 0xec, 0x5c, 0x97, 0x65, 0xa6, 0xcf, 0xf5,
86021 - 0xcd, 0x5c, 0x6d, 0xc0, 0x3a, 0xf7, 0x4b, 0xbb, 0xd1, 0xe4, 0x1d, 0xdf,
86022 - 0xdc, 0x3b, 0x74, 0xd9, 0xb3, 0x88, 0xa5, 0xe1, 0x80, 0xd2, 0x1b, 0x33,
86023 - 0xcc, 0x19, 0x5a, 0xb1, 0x21, 0xef, 0x4a, 0xa9, 0x7e, 0x03, 0x25, 0x7e,
86024 - 0x6d, 0xc3, 0x0c, 0x5b, 0x17, 0x9c, 0x0b, 0xb5, 0x8e, 0x3f, 0x53, 0x92,
86025 - 0x88, 0x67, 0xbc, 0x81, 0x43, 0x94, 0x55, 0x2c, 0x73, 0x95, 0x71, 0x75,
86026 - 0x17, 0x9e, 0x09, 0x39, 0x8c, 0xe2, 0xb0, 0xd7, 0x3d, 0x5f, 0x59, 0x86,
86027 - 0xed, 0x43, 0x7f, 0x8e, 0xf5, 0x49, 0xe1, 0xf8, 0xb5, 0xd8, 0x32, 0x66,
86028 - 0xc3, 0x31, 0xea, 0x77, 0x2f, 0xc7, 0x21, 0xfe, 0xb9, 0x53, 0x90, 0xb3,
86029 - 0x79, 0x8d, 0x8c, 0x91, 0x75, 0xeb, 0xb3, 0x75, 0xe8, 0x75, 0xac, 0x8f,
86030 - 0x9a, 0xf8, 0x54, 0xa7, 0xef, 0xd1, 0x64, 0x7e, 0x12, 0x3b, 0xb7, 0x5a,
86031 - 0x58, 0xfa, 0x48, 0x9c, 0xfb, 0x39, 0x4b, 0x6c, 0x75, 0x29, 0x6d, 0x56,
86032 - 0xc1, 0x67, 0x52, 0x77, 0xac, 0xe4, 0x9c, 0xc9, 0x0d, 0xc7, 0xa3, 0x9b,
86033 - 0x30, 0x1c, 0x35, 0xe4, 0x7d, 0xc0, 0xde, 0x1a, 0x7b, 0xe4, 0x85, 0x0a,
86034 - 0xf2, 0xec, 0x84, 0xee, 0x6f, 0x3f, 0xa7, 0xc0, 0x53, 0x16, 0xf6, 0xd3,
86035 - 0xcf, 0x7c, 0x89, 0xdf, 0xea, 0x92, 0x4f, 0xd3, 0x5d, 0xab, 0xa8, 0xef,
86036 - 0x7b, 0x86, 0x02, 0x56, 0x7e, 0xe0, 0xef, 0x6e, 0x9b, 0xbf, 0x90, 0x1a,
86037 - 0xb3, 0x9e, 0xcb, 0x35, 0xbe, 0x8e, 0x83, 0x69, 0x17, 0x1e, 0x8b, 0x7b,
86038 - 0x94, 0x79, 0x7b, 0x54, 0xdc, 0x1f, 0xf7, 0x4e, 0x2c, 0xb1, 0x93, 0x7f,
86039 - 0x2c, 0x9a, 0xc1, 0xfe, 0x14, 0xfc, 0x68, 0xa1, 0xf8, 0x82, 0xff, 0x0a,
86040 - 0x63, 0x56, 0x84, 0x7d, 0xa2, 0xb4, 0x60, 0xb1, 0x57, 0x3d, 0x68, 0xf3,
86041 - 0xb9, 0x7f, 0x8b, 0xad, 0xb0, 0x67, 0x56, 0xa3, 0x9b, 0xf3, 0x5f, 0x19,
86042 - 0x97, 0x9a, 0x55, 0x03, 0x50, 0xd1, 0x8c, 0x1d, 0x87, 0xc4, 0x36, 0xe5,
86043 - 0x9d, 0x75, 0x78, 0xaa, 0xc2, 0x2d, 0x77, 0xa0, 0xf8, 0x4b, 0x72, 0xed,
86044 - 0x49, 0x89, 0x3f, 0x37, 0x94, 0xdb, 0x4c, 0xc6, 0x2f, 0xf3, 0x73, 0x35,
86045 - 0x89, 0xa5, 0xd8, 0x3a, 0x20, 0xf9, 0x76, 0xe2, 0xb6, 0xce, 0x38, 0xa8,
86046 - 0x42, 0x0b, 0x3c, 0x65, 0x93, 0x3a, 0xd0, 0x26, 0xf8, 0x62, 0x9b, 0x10,
86047 - 0x88, 0x89, 0xcd, 0x6a, 0x6a, 0x07, 0x22, 0xa7, 0x25, 0xcf, 0x37, 0x2f,
86048 - 0xe4, 0xe7, 0xbc, 0xfc, 0xbd, 0x55, 0x76, 0xdd, 0xf5, 0xca, 0xa8, 0x8a,
86049 - 0x09, 0x35, 0x1b, 0x47, 0x1e, 0x4a, 0x6a, 0x6b, 0x0b, 0x6d, 0x72, 0x26,
86050 - 0xe2, 0xb2, 0x19, 0xb1, 0xfa, 0x55, 0x6a, 0x51, 0xde, 0x8c, 0xbe, 0xbd,
86051 - 0xef, 0xd2, 0x07, 0xc9, 0x18, 0xbf, 0x37, 0x9d, 0xd4, 0xcb, 0xe5, 0x6d,
86052 - 0x1e, 0xdc, 0x17, 0x97, 0x3c, 0x69, 0x4f, 0x75, 0xf6, 0x4c, 0x87, 0x5c,
86053 - 0x3b, 0xd0, 0xa1, 0x13, 0x64, 0x67, 0x7d, 0x61, 0x56, 0x59, 0x71, 0xe9,
86054 - 0x97, 0x59, 0x9d, 0x49, 0xdc, 0x7d, 0x87, 0xd8, 0x78, 0xcf, 0x58, 0x83,
86055 - 0x3b, 0xab, 0x77, 0x4d, 0xbc, 0x96, 0xbe, 0xb4, 0x7d, 0x9b, 0xe4, 0x34,
86056 - 0x2e, 0xf9, 0xcc, 0x23, 0xa3, 0xd3, 0xdb, 0xe7, 0x73, 0x30, 0x55, 0x39,
86057 - 0x4e, 0x95, 0xd7, 0x37, 0xa9, 0xf5, 0x45, 0x94, 0x87, 0xa3, 0x2d, 0xca,
86058 - 0xaa, 0xa8, 0xd4, 0xfb, 0x6c, 0xd1, 0x12, 0xeb, 0x5c, 0xab, 0x89, 0xef,
86059 - 0x85, 0xc6, 0x95, 0x6d, 0xd6, 0x99, 0x59, 0x43, 0x49, 0x36, 0x02, 0x95,
86060 - 0xa3, 0xcd, 0xca, 0xf6, 0xe8, 0x27, 0xe6, 0x53, 0x56, 0x5d, 0x7d, 0xa6,
86061 - 0x75, 0xbe, 0xa6, 0x70, 0xd4, 0x85, 0x8a, 0x83, 0x25, 0x28, 0x18, 0xd4,
86062 - 0x30, 0x73, 0xf4, 0x41, 0xf2, 0x56, 0xe1, 0x3a, 0x46, 0x8b, 0xc3, 0x3a,
86063 - 0xa3, 0xf6, 0xfa, 0xf5, 0x33, 0x6a, 0x0e, 0xe2, 0x82, 0x01, 0xeb, 0x1f,
86064 - 0x63, 0xa5, 0xc3, 0x8c, 0x95, 0xcc, 0x25, 0xdf, 0x0b, 0x19, 0x3b, 0x66,
86065 - 0xc2, 0x1b, 0xa8, 0xb4, 0x19, 0xa6, 0xe4, 0x6e, 0x5e, 0x21, 0x61, 0x5c,
86066 - 0x53, 0x67, 0x60, 0x45, 0x9d, 0xbc, 0x9b, 0xe9, 0x30, 0xec, 0xe1, 0x2e,
86067 - 0x1c, 0x0e, 0x75, 0xe1, 0x3d, 0xbd, 0x0b, 0x3b, 0xf5, 0x62, 0xa3, 0x3c,
86068 - 0x5c, 0x2a, 0x67, 0xd9, 0x27, 0xa2, 0xd0, 0xf4, 0xb4, 0xa2, 0x9d, 0xba,
86069 - 0x0a, 0xef, 0x3e, 0x9f, 0xe2, 0x35, 0x96, 0x29, 0x1a, 0x2e, 0x67, 0xbc,
86070 - 0x53, 0xe5, 0xb4, 0x81, 0x6b, 0x99, 0x00, 0xa6, 0x88, 0xab, 0xc9, 0x31,
86071 - 0x39, 0x4f, 0x52, 0x8b, 0x81, 0xb1, 0xff, 0x29, 0xdc, 0xc0, 0x20, 0x26,
86072 - 0x59, 0x67, 0x2a, 0x9f, 0x93, 0x5a, 0xa6, 0x33, 0x98, 0xe3, 0x30, 0x86,
86073 - 0xb2, 0xae, 0xb1, 0x0c, 0xd7, 0xe8, 0x9d, 0x7e, 0x98, 0xee, 0x64, 0x3c,
86074 - 0x87, 0xd7, 0x6a, 0x60, 0xff, 0xbe, 0x1b, 0xf5, 0xc9, 0x19, 0x38, 0x56,
86075 - 0x5f, 0x89, 0x02, 0x1c, 0x1d, 0xee, 0x20, 0xc7, 0xef, 0x6e, 0x2f, 0x67,
86076 - 0x7c, 0x3a, 0x3a, 0xec, 0x44, 0x2a, 0x25, 0x39, 0x07, 0xab, 0x36, 0x39,
86077 - 0xe9, 0xa0, 0x2d, 0xed, 0x4a, 0xa0, 0xbe, 0x26, 0xec, 0x4f, 0xd6, 0xd8,
86078 - 0x55, 0xf6, 0x51, 0x85, 0x54, 0x5a, 0xe3, 0x27, 0xc0, 0x4f, 0x90, 0x9f,
86079 - 0x26, 0x7c, 0x8f, 0x36, 0x5b, 0x41, 0xbc, 0x7d, 0x35, 0x5d, 0x86, 0x4f,
86080 - 0x92, 0x5a, 0x40, 0xa7, 0x1e, 0x0c, 0x33, 0x46, 0x30, 0x2c, 0x39, 0x95,
86081 - 0xe1, 0x2a, 0xed, 0xf4, 0xa5, 0x50, 0x19, 0xcc, 0xd4, 0xed, 0x62, 0x42,
86082 - 0x79, 0xff, 0x25, 0x7f, 0x0e, 0x33, 0x5b, 0x5f, 0x3d, 0x92, 0x81, 0xf2,
86083 - 0x78, 0x9d, 0x41, 0x7d, 0x61, 0x0c, 0xbb, 0x48, 0x6a, 0x29, 0x5a, 0xe7,
86084 - 0x25, 0x7b, 0xb1, 0x51, 0x13, 0xf6, 0x7a, 0x6a, 0xec, 0x1a, 0xce, 0xa5,
86085 - 0x27, 0x11, 0x4f, 0xca, 0xbb, 0x6d, 0xa2, 0xc7, 0xef, 0x9b, 0x46, 0x85,
86086 - 0x9c, 0xc9, 0xe8, 0x44, 0x5c, 0xab, 0x64, 0x1c, 0x24, 0xef, 0x3e, 0x1e,
86087 - 0x0e, 0x45, 0x63, 0xa5, 0xf2, 0x9e, 0xf0, 0x92, 0x97, 0x43, 0xde, 0x96,
86088 - 0x7e, 0xc5, 0x78, 0xa8, 0xc4, 0x7a, 0xaf, 0xa3, 0x8b, 0x58, 0xac, 0xa9,
86089 - 0x4e, 0xc5, 0xdb, 0xb4, 0x05, 0x01, 0x1c, 0x4b, 0x8b, 0xdc, 0x28, 0xa7,
86090 - 0xb1, 0xac, 0xdc, 0x6e, 0x9c, 0x9d, 0xce, 0xea, 0xc1, 0xc6, 0xa8, 0x83,
86091 - 0xdf, 0xb2, 0xf7, 0x72, 0xae, 0x95, 0x3e, 0xc2, 0xda, 0xff, 0x9f, 0xdf,
86092 - 0x91, 0x3b, 0xbf, 0xda, 0x5e, 0x19, 0x76, 0x05, 0x97, 0xc7, 0xed, 0x9f,
86093 - 0xc8, 0xfb, 0xc8, 0x4f, 0x34, 0xca, 0x7b, 0x6b, 0xae, 0xe0, 0xe3, 0xa3,
86094 - 0xae, 0xe0, 0xda, 0xf8, 0x51, 0x85, 0xf2, 0xda, 0x57, 0x63, 0x77, 0x05,
86095 - 0x1f, 0xb9, 0xd1, 0x9e, 0xfb, 0xde, 0x85, 0xb1, 0x50, 0xb1, 0xa1, 0x86,
86096 - 0xc5, 0xa7, 0x7b, 0x03, 0x9f, 0x28, 0x96, 0x2f, 0x37, 0x4a, 0xe8, 0x63,
86097 - 0x9f, 0xcf, 0x8c, 0x9b, 0xed, 0xb3, 0x04, 0xab, 0xec, 0x1c, 0xeb, 0x2a,
86098 - 0x5e, 0x49, 0xdd, 0x78, 0xae, 0x85, 0xcf, 0x15, 0xf3, 0xb9, 0x92, 0xb0,
86099 - 0xc4, 0x8d, 0x5e, 0x7d, 0x95, 0xa2, 0x79, 0x8a, 0x14, 0xa9, 0x87, 0x69,
86100 - 0xf8, 0x55, 0xfa, 0x9f, 0xef, 0x90, 0x78, 0xb7, 0x67, 0xac, 0x12, 0x6b,
86101 - 0x76, 0x9b, 0x4b, 0xe6, 0x2d, 0x34, 0x97, 0xa4, 0x43, 0x31, 0xf3, 0xa5,
86102 - 0x6a, 0xd9, 0x4f, 0xa9, 0xf1, 0xc9, 0x33, 0x9a, 0xea, 0x63, 0x9c, 0xf9,
86103 - 0x4d, 0x7d, 0xbb, 0xbc, 0xa3, 0x07, 0x79, 0x7f, 0xa9, 0x90, 0x63, 0x9c,
86104 - 0x4c, 0x89, 0x8e, 0x6c, 0x6d, 0x77, 0x31, 0x16, 0x95, 0x77, 0x67, 0x0f,
86105 - 0x73, 0xef, 0x0f, 0xa6, 0xfe, 0xd7, 0x1d, 0x72, 0x76, 0x5d, 0xce, 0x06,
86106 - 0x00, 0xff, 0x1f, 0x17, 0x23, 0xca, 0x76, 0xf8, 0x78, 0x00, 0x00, 0x00 };
86107 + 0xec, 0x5c, 0x7f, 0x70, 0x1c, 0xd5, 0x7d, 0xff, 0xbc, 0xbd, 0xbd, 0xbb,
86108 + 0x95, 0x74, 0x3e, 0xed, 0x9d, 0x4e, 0xb2, 0x04, 0x06, 0xef, 0xa2, 0x95,
86109 + 0x74, 0x58, 0xc6, 0xec, 0x9d, 0x4e, 0xb6, 0x48, 0xb7, 0xc9, 0xd5, 0x36,
86110 + 0x20, 0x17, 0x52, 0x84, 0xa1, 0xc1, 0xcc, 0x30, 0x9d, 0x1b, 0x63, 0x8c,
86111 + 0xb0, 0x1d, 0xa2, 0x00, 0x33, 0xc8, 0x29, 0x13, 0x16, 0xfc, 0xb3, 0xf8,
86112 + 0xa4, 0x93, 0x8d, 0x8c, 0xc9, 0xf4, 0xd7, 0x21, 0xcb, 0x8a, 0x81, 0x93,
86113 + 0xce, 0x04, 0xda, 0x98, 0x69, 0xa8, 0x15, 0x6c, 0x53, 0x87, 0x5f, 0x21,
86114 + 0x19, 0x68, 0x4d, 0x9b, 0x99, 0xa8, 0x06, 0x1c, 0xd3, 0xa6, 0xd4, 0xb4,
86115 + 0x0e, 0xb5, 0x8b, 0xeb, 0xd7, 0xef, 0x77, 0x4f, 0x97, 0x50, 0x42, 0xcb,
86116 + 0x64, 0xa6, 0x7f, 0xee, 0x77, 0xe6, 0xe6, 0xf6, 0xde, 0xfb, 0xbe, 0xef,
86117 + 0x7b, 0xdf, 0xdf, 0x9f, 0xb7, 0x1a, 0xfb, 0xbe, 0x08, 0x6a, 0x31, 0x4b,
86118 + 0x73, 0xe8, 0x93, 0x19, 0x18, 0xbc, 0x27, 0xbd, 0x28, 0xb3, 0x88, 0x1e,
86119 + 0xbb, 0x02, 0x73, 0x55, 0x95, 0xc7, 0x05, 0x7c, 0xf2, 0xc9, 0x27, 0x9f,
86120 + 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xf2,
86121 + 0xc9, 0x27, 0x9f, 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xf2, 0xc9, 0x27,
86122 + 0x9f, 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c,
86123 + 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xf2, 0xc9,
86124 + 0x27, 0x9f, 0x7c, 0xf2, 0xc9, 0x27, 0x9f, 0x7c, 0xfa, 0xff, 0xa4, 0x00,
86125 + 0xa0, 0xf3, 0xf7, 0x9c, 0xd9, 0x0f, 0x34, 0xc5, 0x71, 0x37, 0x2e, 0xb5,
86126 + 0xa0, 0x05, 0x9c, 0x33, 0x1b, 0x6f, 0xb7, 0x80, 0x6c, 0xa9, 0xd3, 0x58,
86127 + 0x86, 0xff, 0x92, 0x6e, 0x42, 0x05, 0x8f, 0x5f, 0xe2, 0x9c, 0xff, 0xf3,
86128 + 0x17, 0x96, 0x98, 0xa7, 0x8b, 0x01, 0x68, 0xba, 0xf3, 0x46, 0x4a, 0x6f,
86129 + 0x87, 0x36, 0x8f, 0xd6, 0xfc, 0x49, 0xc7, 0x95, 0x71, 0x44, 0xab, 0xb2,
86130 + 0xe0, 0x2a, 0x8e, 0x94, 0xfb, 0x6c, 0x89, 0x97, 0x6c, 0x57, 0xf4, 0x66,
86131 + 0xe0, 0x06, 0x9c, 0x83, 0xe2, 0xae, 0xfc, 0x05, 0x69, 0x04, 0x2b, 0x3b,
86132 + 0xab, 0x93, 0x1a, 0x82, 0xfb, 0xa0, 0xab, 0x8e, 0x82, 0xa0, 0x55, 0x8b,
86133 + 0xd0, 0x13, 0x75, 0x08, 0x3e, 0xd1, 0x8c, 0xf0, 0xe4, 0x01, 0x91, 0x2b,
86134 + 0x6a, 0x98, 0x09, 0x1c, 0x14, 0x6b, 0x4a, 0xc8, 0x05, 0x9d, 0xb3, 0x37,
86135 + 0x8c, 0xd1, 0xba, 0xac, 0xf7, 0xef, 0x4b, 0xa6, 0x6f, 0x18, 0x2f, 0x41,
86136 + 0x0f, 0x38, 0x50, 0x54, 0xe7, 0x08, 0x3d, 0x33, 0xdf, 0xd9, 0x1b, 0xf6,
86137 + 0x96, 0x4e, 0xc9, 0x17, 0x3a, 0x12, 0x38, 0x54, 0xd6, 0x71, 0xa0, 0xfc,
86138 + 0x10, 0x9d, 0xc3, 0x74, 0x5d, 0x68, 0xae, 0xea, 0xb8, 0xd8, 0x92, 0x09,
86139 + 0x62, 0x62, 0xe4, 0x82, 0x0c, 0x58, 0xa6, 0x01, 0xc5, 0xd2, 0x0f, 0x83,
86140 + 0xf8, 0x0a, 0xc4, 0x57, 0x08, 0x62, 0xac, 0xb8, 0x23, 0x8e, 0xda, 0x66,
86141 + 0xbc, 0xd0, 0xc1, 0xeb, 0x79, 0x2d, 0xcb, 0xf8, 0x38, 0x5a, 0x5d, 0x1f,
86142 + 0xa2, 0xf5, 0x47, 0x33, 0xc0, 0xf8, 0x48, 0x1f, 0x2d, 0x95, 0xd8, 0x64,
86143 + 0x87, 0xb1, 0x5a, 0x87, 0x5b, 0xe3, 0xb0, 0xac, 0xaa, 0x1c, 0x57, 0x18,
86144 + 0x93, 0xff, 0x5c, 0x5f, 0x91, 0x03, 0xa1, 0x59, 0x70, 0xc3, 0x9f, 0x9a,
86145 + 0x3f, 0x55, 0xaa, 0xce, 0x6f, 0xa7, 0x7d, 0x34, 0x9a, 0xef, 0xc7, 0x5f,
86146 + 0x96, 0xd7, 0xe0, 0x2f, 0xca, 0xb7, 0xe1, 0xd9, 0x72, 0x1f, 0xed, 0x7b,
86147 + 0x1f, 0xed, 0x3b, 0x80, 0xbf, 0x2e, 0x6f, 0xc0, 0x77, 0xcb, 0x39, 0x3c,
86148 + 0x57, 0x5e, 0x85, 0xef, 0x94, 0x6f, 0xc6, 0x33, 0x65, 0x78, 0x67, 0x38,
86149 + 0x95, 0x49, 0x8a, 0x1f, 0xe5, 0x6b, 0xa0, 0xee, 0xdc, 0x8c, 0xe9, 0x52,
86150 + 0x10, 0xc1, 0x9d, 0x12, 0x23, 0xb6, 0xf9, 0x38, 0xd0, 0xa1, 0x07, 0x21,
86151 + 0xb0, 0xcc, 0x36, 0xf7, 0x03, 0x5f, 0x40, 0x2e, 0x61, 0x1e, 0x00, 0x9a,
86152 + 0xc4, 0x8f, 0x47, 0x9b, 0xc4, 0x6b, 0xa3, 0xaa, 0x78, 0x3d, 0x2f, 0x50,
86153 + 0xef, 0x20, 0xf2, 0x72, 0x46, 0xca, 0xeb, 0xd2, 0x52, 0x96, 0x52, 0x56,
86154 + 0xef, 0x0f, 0x85, 0x69, 0x3f, 0x22, 0x2e, 0x85, 0xd1, 0x68, 0x66, 0xd7,
86155 + 0x09, 0xcd, 0xad, 0x25, 0xf9, 0x2b, 0xba, 0x01, 0x6b, 0xa7, 0x41, 0x7e,
86156 + 0x60, 0x1d, 0x37, 0xe1, 0x0e, 0x2f, 0x26, 0xfa, 0xd0, 0x60, 0x2d, 0xc5,
86157 + 0xbd, 0x7d, 0x36, 0x8a, 0x65, 0x68, 0x31, 0xe7, 0x0c, 0x52, 0xc3, 0x02,
86158 + 0x36, 0xf9, 0x5b, 0xd0, 0xb3, 0x5d, 0x5a, 0xdf, 0x50, 0xf1, 0x37, 0x9d,
86159 + 0xbd, 0x40, 0x67, 0x2f, 0xd0, 0xd9, 0x0b, 0xa4, 0x57, 0x81, 0xf4, 0x2a,
86160 + 0x90, 0x0e, 0x05, 0xd2, 0xad, 0x40, 0x7a, 0x14, 0x48, 0x8f, 0x02, 0xe9,
86161 + 0x58, 0x60, 0x5f, 0x0d, 0x92, 0x0d, 0x22, 0xf8, 0xbb, 0xfc, 0x3c, 0x9c,
86162 + 0xe1, 0xcf, 0x4a, 0x1d, 0xc7, 0xe9, 0x8c, 0x8a, 0xf5, 0x9b, 0xca, 0xf8,
86163 + 0x6e, 0x84, 0x7c, 0x64, 0xfc, 0xe6, 0x7b, 0x2f, 0xc4, 0xc9, 0xfc, 0xbb,
86164 + 0x32, 0x34, 0x97, 0xf7, 0xfc, 0x22, 0xe4, 0x28, 0x70, 0xe9, 0x6e, 0x29,
86165 + 0xcf, 0x75, 0xcd, 0xc8, 0xb7, 0x6f, 0x61, 0x59, 0x0e, 0x4e, 0x8c, 0x2a,
86166 + 0x08, 0xd0, 0xd8, 0xb5, 0xf6, 0xdf, 0xcb, 0x3b, 0x13, 0xcc, 0xf7, 0x51,
86167 + 0x04, 0xb5, 0x6c, 0x27, 0x68, 0x0d, 0xce, 0xbb, 0x1b, 0xef, 0x6d, 0x87,
86168 + 0x1b, 0x75, 0x54, 0xf1, 0xe6, 0x90, 0x81, 0xb9, 0x4e, 0x16, 0x73, 0x1c,
86169 + 0x6b, 0x64, 0x8f, 0xd2, 0x39, 0x18, 0x47, 0xf6, 0xf2, 0x7a, 0xd8, 0xd8,
86170 + 0x57, 0x56, 0xc5, 0xab, 0x43, 0x73, 0x10, 0xdf, 0x69, 0xad, 0x1a, 0x12,
86171 + 0x0a, 0x72, 0x8d, 0x59, 0x8c, 0x67, 0x4c, 0xa3, 0x08, 0x03, 0xab, 0xd2,
86172 + 0x0a, 0x30, 0xd7, 0xc5, 0xd6, 0x8c, 0x69, 0xbb, 0x78, 0x08, 0xd3, 0x09,
86173 + 0x1b, 0x13, 0x65, 0x8d, 0x72, 0xc3, 0xc5, 0x9d, 0x19, 0x0d, 0x72, 0x24,
86174 + 0x8b, 0x93, 0x5d, 0x21, 0x4c, 0xf7, 0x71, 0x8c, 0xa8, 0xb4, 0xf7, 0x56,
86175 + 0x28, 0xf1, 0x38, 0xf9, 0xe5, 0xb0, 0x0c, 0xc6, 0x79, 0x0c, 0xe2, 0x5f,
86176 + 0x32, 0xbc, 0xff, 0x45, 0xe2, 0xd5, 0xdd, 0x51, 0xd4, 0xee, 0xd6, 0xf0,
86177 + 0xf4, 0x4e, 0x15, 0x2b, 0xc8, 0xb7, 0x7b, 0x52, 0xaa, 0xb1, 0x4e, 0x38,
86178 + 0x18, 0x2f, 0xab, 0x48, 0x0c, 0xb5, 0xc0, 0x88, 0x69, 0xb8, 0x74, 0xc8,
86179 + 0xc5, 0x3b, 0x24, 0x77, 0x90, 0xe4, 0xd6, 0x77, 0xe9, 0x98, 0x69, 0xac,
86180 + 0xf8, 0xf5, 0xeb, 0xf9, 0x56, 0x77, 0xa7, 0x12, 0x02, 0x42, 0x70, 0x35,
86181 + 0x27, 0x83, 0xfb, 0xf3, 0xad, 0xa4, 0xc3, 0xad, 0x58, 0x1a, 0xd2, 0xb0,
86182 + 0x7a, 0x98, 0xc7, 0x96, 0x03, 0x93, 0x73, 0xe7, 0xa0, 0x96, 0xf5, 0xe7,
86183 + 0x7c, 0x5e, 0x4a, 0xcf, 0x1c, 0x07, 0xbf, 0x9d, 0x60, 0xbb, 0xbb, 0xca,
86184 + 0x7f, 0xc8, 0x6c, 0x82, 0xf9, 0x2a, 0x39, 0x72, 0x38, 0x93, 0xc1, 0xc6,
86185 + 0x7c, 0x6b, 0xf6, 0x5b, 0x4a, 0x03, 0x10, 0x34, 0x0d, 0x43, 0x81, 0x96,
86186 + 0x70, 0x90, 0x1a, 0xa5, 0x78, 0x79, 0xd4, 0x8b, 0x17, 0xa4, 0xba, 0x4a,
86187 + 0x9c, 0x97, 0x9a, 0xab, 0x13, 0xff, 0xfc, 0xc5, 0x6d, 0xf8, 0xe8, 0x51,
86188 + 0xe6, 0x53, 0xf1, 0x03, 0x7a, 0x7e, 0x7f, 0xef, 0x8e, 0xd9, 0xda, 0xf1,
86189 + 0xa7, 0x9e, 0x5f, 0x0d, 0xa5, 0xba, 0xb7, 0x8d, 0x3b, 0xf3, 0xad, 0x67,
86190 + 0xb7, 0x29, 0xe4, 0xbf, 0x8b, 0x23, 0xa8, 0xa1, 0xfa, 0x13, 0x24, 0x59,
86191 + 0xfb, 0xf2, 0xe7, 0xb1, 0x32, 0x6d, 0x1e, 0xe4, 0x7f, 0x6f, 0x36, 0x66,
86192 + 0x55, 0xe4, 0x5f, 0x56, 0xb2, 0xf1, 0x64, 0xd9, 0xc6, 0xed, 0x74, 0x8e,
86193 + 0xfb, 0xf0, 0x8f, 0x40, 0xcb, 0x02, 0xe3, 0x94, 0x72, 0x42, 0xba, 0x37,
86194 + 0xb3, 0xbc, 0x79, 0x38, 0x15, 0x6f, 0xcd, 0x9d, 0x52, 0xcc, 0xe2, 0x76,
86195 + 0x85, 0x6d, 0xa5, 0xe0, 0xcb, 0xe9, 0x0c, 0x8a, 0x31, 0x1d, 0xb7, 0xa6,
86196 + 0x35, 0xf7, 0x52, 0x3a, 0xd3, 0x1b, 0x4b, 0x34, 0x34, 0xed, 0xca, 0xe2,
86197 + 0xad, 0xf4, 0x9b, 0x28, 0xae, 0x64, 0x3b, 0xf0, 0x3a, 0x3e, 0x73, 0x33,
86198 + 0xe2, 0x56, 0x0d, 0xe2, 0x63, 0x41, 0xd4, 0xef, 0xba, 0x20, 0x9b, 0x2d,
86199 + 0x1e, 0xb7, 0x06, 0xce, 0x0a, 0x3e, 0x73, 0x10, 0xd1, 0xb1, 0xab, 0xa0,
86200 + 0x5a, 0x66, 0x92, 0x1c, 0x9b, 0x60, 0xde, 0x90, 0x55, 0x3d, 0xbb, 0xc0,
86201 + 0x75, 0x5f, 0x10, 0x58, 0x97, 0xfa, 0xbe, 0xcc, 0x36, 0xf2, 0x9a, 0x67,
86202 + 0x68, 0x9c, 0xcf, 0x50, 0x73, 0x36, 0x8b, 0x26, 0x5a, 0x53, 0xe5, 0x8b,
86203 + 0xa0, 0x7f, 0x57, 0xe5, 0x0c, 0x6f, 0x2f, 0xc1, 0xb3, 0x1a, 0x7a, 0xd0,
86204 + 0x51, 0x78, 0x08, 0x6f, 0x2d, 0xf6, 0xf6, 0x3f, 0xbd, 0x2f, 0xbd, 0x83,
86205 + 0x6c, 0xc2, 0x75, 0xf4, 0xd3, 0x7e, 0xe1, 0xf9, 0xff, 0x64, 0x7f, 0x24,
86206 + 0x21, 0x9a, 0x69, 0x8c, 0xe3, 0x77, 0xa7, 0x34, 0x6e, 0xaa, 0xf8, 0x25,
86207 + 0x4c, 0xf2, 0xde, 0xcf, 0xf4, 0xa0, 0x75, 0x48, 0x85, 0xcc, 0xb7, 0xda,
86208 + 0x3f, 0x0d, 0x3c, 0x22, 0xa7, 0x6f, 0xe3, 0xb9, 0x56, 0xfd, 0x70, 0x40,
86209 + 0x60, 0xa9, 0x6a, 0x9e, 0xce, 0xa1, 0x19, 0xfb, 0xa9, 0xc6, 0xb4, 0x38,
86210 + 0x3a, 0xd5, 0x9c, 0x04, 0xd5, 0x1e, 0x43, 0x74, 0xec, 0xb1, 0xb1, 0x60,
86211 + 0xe8, 0x36, 0x7c, 0x69, 0xb7, 0x83, 0x83, 0x05, 0x1b, 0x4f, 0x17, 0xa4,
86212 + 0x3c, 0x69, 0x4b, 0xf9, 0xaf, 0x5d, 0x66, 0xff, 0x31, 0x6a, 0x07, 0x8b,
86213 + 0x96, 0x74, 0xe6, 0xea, 0x03, 0x2a, 0xd9, 0xa7, 0xcd, 0xd8, 0x20, 0xcc,
86214 + 0xe6, 0x29, 0x61, 0x53, 0xcc, 0xf5, 0x92, 0xed, 0x0d, 0xec, 0x2d, 0x27,
86215 + 0xf1, 0x54, 0xd9, 0xa2, 0xcf, 0x42, 0x8a, 0x95, 0x0c, 0xd5, 0x33, 0xd6,
86216 + 0x55, 0xc7, 0x78, 0x07, 0xe5, 0x45, 0x41, 0xc1, 0x7e, 0x9b, 0xe2, 0x3f,
86217 + 0x46, 0xbc, 0x85, 0x0b, 0xe4, 0x3f, 0x0d, 0xc9, 0x9d, 0x59, 0xd4, 0xa4,
86218 + 0x1a, 0x60, 0xdc, 0x68, 0x61, 0xbc, 0xa0, 0xb9, 0x41, 0x8a, 0xf9, 0xb1,
86219 + 0xfc, 0x38, 0xfe, 0x40, 0x4f, 0xa0, 0x96, 0xec, 0xb7, 0x2a, 0x1d, 0x01,
86220 + 0x6e, 0xe2, 0xb9, 0x08, 0x5a, 0xac, 0xef, 0xa3, 0x25, 0x3e, 0x07, 0xa1,
86221 + 0x05, 0x7f, 0x85, 0x69, 0x3d, 0x8a, 0x30, 0xf5, 0x8c, 0xf9, 0xc4, 0x33,
86222 + 0x9f, 0x7c, 0xd5, 0x68, 0x59, 0x24, 0x53, 0xc0, 0x6a, 0x23, 0x5e, 0xca,
86223 + 0xa7, 0x66, 0xd2, 0x3d, 0xb8, 0x24, 0x81, 0x32, 0x9d, 0x7f, 0x2a, 0x2f,
86224 + 0x65, 0x24, 0x63, 0xf6, 0x17, 0x28, 0x37, 0x27, 0x4b, 0x3d, 0x98, 0x2a,
86225 + 0xff, 0x1e, 0xd5, 0x73, 0x1b, 0x7b, 0xf3, 0x0e, 0xc6, 0x0a, 0xea, 0xaa,
86226 + 0x3c, 0xcc, 0xbe, 0xf5, 0xc8, 0xe0, 0x29, 0x8a, 0x9f, 0x89, 0x82, 0x69,
86227 + 0xbc, 0x18, 0xd0, 0x70, 0xcc, 0xae, 0xa3, 0x73, 0x52, 0xde, 0x92, 0x4e,
86228 + 0xcf, 0xe7, 0x47, 0x60, 0x35, 0xb0, 0xfd, 0xd9, 0x4f, 0x19, 0x7c, 0xbb,
86229 + 0xe0, 0xc5, 0xf7, 0x75, 0x1a, 0x5c, 0xd8, 0xdd, 0xec, 0x1b, 0xf7, 0x74,
86230 + 0x30, 0x5d, 0xa9, 0xa3, 0x7d, 0xdd, 0x36, 0xc2, 0xc3, 0x3d, 0x24, 0xb7,
86231 + 0xd5, 0x3e, 0x81, 0x3b, 0x30, 0xdd, 0xec, 0x62, 0x11, 0xc5, 0xbf, 0xea,
86232 + 0x3c, 0x9e, 0xda, 0x9c, 0x77, 0x65, 0xbd, 0x65, 0xf5, 0xff, 0x50, 0x3c,
86233 + 0x88, 0x57, 0x53, 0x5c, 0xd7, 0x55, 0xca, 0x7b, 0x1d, 0x3b, 0xec, 0x11,
86234 + 0xbc, 0x56, 0xfa, 0x2d, 0xe4, 0x62, 0x66, 0x72, 0x93, 0x58, 0x8f, 0x83,
86235 + 0x23, 0x57, 0x01, 0xb7, 0x70, 0x9e, 0x90, 0x6e, 0xd6, 0x7a, 0x1c, 0x2a,
86236 + 0x7e, 0x03, 0x47, 0x47, 0x6b, 0xf1, 0xbc, 0x15, 0x47, 0xcb, 0x44, 0x65,
86237 + 0x9f, 0xab, 0xbb, 0x35, 0x8c, 0x51, 0x4e, 0x5f, 0x6b, 0xab, 0x98, 0x49,
86238 + 0x70, 0xfd, 0xa0, 0x58, 0x4b, 0x6f, 0xa0, 0x5a, 0xe3, 0xb5, 0x5e, 0xac,
86239 + 0xc9, 0x18, 0xc8, 0xe7, 0xb3, 0x54, 0xff, 0x6a, 0xb0, 0x2b, 0x06, 0x71,
86240 + 0x3b, 0xf5, 0xb0, 0xbb, 0xf3, 0xad, 0xfd, 0xc3, 0x4a, 0x1c, 0xc5, 0x96,
86241 + 0x2c, 0xf9, 0x42, 0xa0, 0xc9, 0x32, 0xb0, 0xa5, 0x44, 0x15, 0xb4, 0xa4,
86242 + 0xe2, 0x9b, 0xa5, 0x2b, 0x50, 0x6c, 0xe2, 0xb5, 0x1d, 0x98, 0xf6, 0xbe,
86243 + 0x83, 0x98, 0x89, 0x9b, 0xcd, 0x20, 0x9b, 0x8d, 0x17, 0x54, 0xec, 0xb6,
86244 + 0xf7, 0x5c, 0x28, 0xae, 0x34, 0xf5, 0x1c, 0xe5, 0x5b, 0xc0, 0x8b, 0x5b,
86245 + 0x7e, 0x06, 0xbe, 0x96, 0xff, 0x50, 0x9e, 0xf1, 0xf6, 0x54, 0x39, 0xff,
86246 + 0xa7, 0xdf, 0x0e, 0xbc, 0x2f, 0x45, 0x98, 0xe5, 0xdf, 0x1f, 0xad, 0xfc,
86247 + 0x5b, 0xd1, 0x67, 0x99, 0x37, 0x0b, 0x70, 0x1c, 0xcc, 0xfd, 0x44, 0xcc,
86248 + 0x57, 0xea, 0x80, 0xbe, 0x98, 0xcf, 0x51, 0xcd, 0xb3, 0x38, 0x9a, 0x26,
86249 + 0xda, 0x50, 0xb3, 0x8b, 0x7f, 0xf3, 0xb8, 0xc0, 0x65, 0xdd, 0x9c, 0x63,
86250 + 0x6d, 0x50, 0xc6, 0x56, 0x47, 0x2b, 0x35, 0xb8, 0x5a, 0x1f, 0xfe, 0x70,
86251 + 0x56, 0xbe, 0xd7, 0xeb, 0xe9, 0x77, 0xa5, 0x86, 0x7e, 0x33, 0xc3, 0xcf,
86252 + 0xbc, 0xa6, 0x06, 0x6f, 0xed, 0x35, 0xed, 0xa2, 0xb2, 0x84, 0xf7, 0xac,
86253 + 0xe4, 0x08, 0x36, 0xce, 0xae, 0xa1, 0x98, 0x2f, 0x4c, 0x49, 0xdc, 0xca,
86254 + 0xf2, 0xaa, 0xeb, 0xdb, 0x10, 0xfa, 0xe5, 0xbe, 0x2a, 0x5e, 0xcc, 0x7c,
86255 + 0x7a, 0xdf, 0xdb, 0x64, 0xed, 0xca, 0x38, 0xc5, 0x59, 0x23, 0xd4, 0x05,
86256 + 0xd4, 0xe0, 0xf5, 0x26, 0xd4, 0x51, 0xde, 0x06, 0xac, 0x5b, 0x64, 0xe0,
86257 + 0x2b, 0x1c, 0xa7, 0x9a, 0x1b, 0x71, 0x2e, 0xc6, 0xf0, 0xce, 0x17, 0xc8,
86258 + 0xc7, 0x51, 0x8e, 0x47, 0xf2, 0xf3, 0xc5, 0x18, 0x7a, 0xe2, 0x92, 0x28,
86259 + 0xeb, 0xbb, 0x2a, 0x0d, 0x77, 0x3e, 0xd5, 0xec, 0xf7, 0xf6, 0xdc, 0x2d,
86260 + 0x8b, 0x7d, 0x3a, 0x5e, 0xca, 0xfc, 0x0e, 0x8d, 0x73, 0x3c, 0xd9, 0x78,
86261 + 0x2e, 0xaf, 0xe1, 0xfe, 0xe1, 0x66, 0x3a, 0x27, 0xd7, 0xca, 0x9a, 0xb3,
86262 + 0x33, 0x8a, 0x8d, 0x67, 0x29, 0x16, 0x9f, 0x29, 0xb0, 0xad, 0x54, 0x5c,
86263 + 0x96, 0x5e, 0x21, 0xc3, 0x4d, 0x1c, 0xdf, 0x49, 0x5a, 0xa3, 0x93, 0xec,
86264 + 0x28, 0x74, 0x6b, 0x99, 0x3c, 0xb0, 0x92, 0x9f, 0x3b, 0x68, 0xac, 0x89,
86265 + 0xbe, 0xbb, 0x65, 0xdd, 0xaf, 0x9d, 0x43, 0xff, 0xac, 0x73, 0x50, 0xdc,
86266 + 0x9b, 0xf6, 0x5a, 0x74, 0x12, 0x0e, 0x52, 0x91, 0xa5, 0x3e, 0x3f, 0x41,
86267 + 0x31, 0xb0, 0x8d, 0x7a, 0xf0, 0x7b, 0x84, 0xf5, 0xb6, 0x78, 0x78, 0xca,
86268 + 0x83, 0x67, 0x1e, 0x5e, 0x5b, 0x5d, 0xc1, 0x5d, 0x9a, 0x6a, 0x31, 0x16,
86269 + 0xab, 0xce, 0x71, 0x9e, 0xf6, 0x62, 0x6c, 0x54, 0xca, 0xcd, 0x76, 0x0b,
86270 + 0xc9, 0x88, 0x63, 0xb3, 0x45, 0x39, 0x3d, 0xca, 0x6b, 0xa4, 0x4c, 0xa6,
86271 + 0x16, 0xf4, 0xa8, 0xa2, 0x01, 0x33, 0xba, 0x2b, 0xd6, 0x66, 0x0c, 0xf1,
86272 + 0xd5, 0x51, 0x15, 0xf9, 0xc2, 0x45, 0x64, 0x2f, 0x29, 0x9f, 0x4a, 0x21,
86273 + 0xbb, 0x29, 0x55, 0x87, 0x57, 0x8a, 0x3a, 0x72, 0xfa, 0x05, 0xb9, 0xbc,
86274 + 0xad, 0x17, 0x65, 0x92, 0xf3, 0x41, 0xaa, 0x33, 0x79, 0x44, 0x44, 0x50,
86275 + 0x4c, 0x44, 0xf0, 0x78, 0x21, 0x81, 0x23, 0xe3, 0x11, 0x6c, 0xa5, 0x18,
86276 + 0x7d, 0x31, 0xc3, 0x7b, 0x46, 0xf0, 0x70, 0x99, 0x31, 0x55, 0x80, 0x6c,
86277 + 0xe4, 0x8a, 0x13, 0xde, 0x58, 0x1d, 0x96, 0x17, 0x99, 0xf7, 0x82, 0x6c,
86278 + 0xb1, 0x2c, 0xbd, 0x25, 0x50, 0xe5, 0x3b, 0x4e, 0xf8, 0xca, 0xa0, 0x5a,
86279 + 0x36, 0x8f, 0x70, 0x55, 0x33, 0x61, 0xa8, 0x04, 0x61, 0x28, 0x6b, 0x16,
86280 + 0x17, 0x9a, 0x94, 0x8d, 0x52, 0x3e, 0x4b, 0xb5, 0xec, 0xc7, 0xf4, 0x39,
86281 + 0x43, 0xf5, 0x34, 0x46, 0x3a, 0x5e, 0x36, 0xcc, 0x3a, 0xba, 0xc2, 0xa6,
86282 + 0x7a, 0x9b, 0x55, 0x94, 0x7a, 0xee, 0x43, 0x81, 0x29, 0xde, 0x5f, 0xc5,
86283 + 0x96, 0x02, 0xb0, 0xa9, 0x00, 0xf7, 0x08, 0xe5, 0x7e, 0xc3, 0x44, 0x14,
86284 + 0xf1, 0x09, 0x1d, 0xc1, 0x89, 0x24, 0xcd, 0x6b, 0x48, 0xd0, 0x6f, 0x97,
86285 + 0xb0, 0x60, 0xbd, 0xd3, 0x24, 0x16, 0x3e, 0x76, 0x5e, 0xee, 0x48, 0xa9,
86286 + 0x58, 0xd7, 0x66, 0xf6, 0xde, 0x28, 0x90, 0x4d, 0x0e, 0x49, 0x19, 0x4e,
86287 + 0x85, 0x29, 0x37, 0xe5, 0xa1, 0x04, 0xe9, 0x1d, 0x75, 0xe4, 0x83, 0xaf,
86288 + 0x75, 0x5b, 0xf6, 0x6b, 0x20, 0xb9, 0x65, 0x5e, 0xc3, 0xe3, 0xae, 0xf8,
86289 + 0xb0, 0xdb, 0x7a, 0xfc, 0x4d, 0xb4, 0xa3, 0x6b, 0x42, 0x15, 0xff, 0x36,
86290 + 0xb4, 0x10, 0xe9, 0x29, 0xe8, 0x21, 0xe7, 0x80, 0x98, 0x79, 0xe2, 0xa0,
86291 + 0x38, 0x39, 0x49, 0xe7, 0x2e, 0x90, 0x2e, 0x05, 0xd2, 0xa5, 0x40, 0xba,
86292 + 0x90, 0x5d, 0x9e, 0xf1, 0xf0, 0x24, 0xeb, 0x9a, 0x24, 0x2c, 0x73, 0xdc,
86293 + 0xc3, 0xbc, 0x8c, 0x11, 0x63, 0x8e, 0x99, 0x75, 0xc1, 0x7a, 0xb3, 0x9e,
86294 + 0x52, 0xbe, 0x69, 0x57, 0xf4, 0x71, 0xa9, 0xdc, 0x6a, 0x53, 0x55, 0x5b,
86295 + 0x48, 0xf9, 0xef, 0x36, 0xdb, 0x82, 0x75, 0x94, 0xf2, 0x3b, 0xa4, 0xd3,
86296 + 0x16, 0xd2, 0x71, 0x53, 0x41, 0x1e, 0x0a, 0x59, 0x96, 0x31, 0x41, 0x67,
86297 + 0x8b, 0x93, 0x4e, 0x89, 0x09, 0x8d, 0x74, 0x6d, 0x87, 0x4a, 0xba, 0x06,
86298 + 0x26, 0xa0, 0x2b, 0x74, 0x1e, 0x63, 0x8c, 0xec, 0x34, 0xf5, 0x79, 0xe7,
86299 + 0x61, 0xcc, 0xef, 0x8a, 0xab, 0x09, 0x9f, 0xa8, 0x64, 0xd7, 0x4d, 0x14,
86300 + 0x3b, 0x39, 0x15, 0x46, 0xd8, 0x52, 0xa8, 0x27, 0x6a, 0xf8, 0xf6, 0x78,
86301 + 0x1d, 0x26, 0xc8, 0xef, 0xc5, 0x71, 0xe8, 0x41, 0x92, 0xe9, 0x16, 0x0f,
86302 + 0x8a, 0x4f, 0xc6, 0x5b, 0xd0, 0x19, 0x20, 0x9c, 0x04, 0x3c, 0x92, 0x8f,
86303 + 0x8b, 0x89, 0x11, 0x15, 0x9b, 0x0b, 0xa7, 0x49, 0x3f, 0x89, 0xc3, 0xf6,
86304 + 0xc3, 0xcd, 0xc4, 0x22, 0x1e, 0xb6, 0xcd, 0x1e, 0xe0, 0x2a, 0x8a, 0xb7,
86305 + 0x00, 0xd6, 0x5a, 0xc8, 0x6e, 0xb3, 0xaf, 0xc2, 0x4c, 0x1f, 0x8c, 0xed,
86306 + 0xb6, 0xab, 0x87, 0x60, 0x1e, 0xbb, 0x9a, 0x7a, 0xd3, 0x95, 0xa4, 0xcf,
86307 + 0xa0, 0xe5, 0x0e, 0x50, 0xe1, 0x42, 0xb9, 0x6c, 0xf6, 0x1f, 0x25, 0x5f,
86308 + 0x94, 0xa8, 0xff, 0x95, 0xca, 0x4d, 0xe2, 0xe9, 0xd1, 0xf3, 0xf2, 0xae,
86309 + 0x94, 0x99, 0x6d, 0xa3, 0xb1, 0xe0, 0x90, 0x46, 0x38, 0x4d, 0xa3, 0x9c,
86310 + 0x32, 0x6d, 0x80, 0x6b, 0x03, 0xb4, 0x30, 0xd5, 0xe2, 0x9f, 0x59, 0x47,
86311 + 0x08, 0xa7, 0x6b, 0x20, 0x0c, 0x8f, 0xa5, 0x23, 0x02, 0xfb, 0x28, 0xc7,
86312 + 0x27, 0x17, 0x9a, 0xc7, 0x56, 0xc3, 0x9d, 0x6e, 0x81, 0x39, 0x18, 0x0e,
86313 + 0x9c, 0xc6, 0x07, 0x43, 0x21, 0xc2, 0x0d, 0xed, 0xf6, 0xeb, 0x30, 0xf5,
86314 + 0x7d, 0x81, 0x5f, 0xc8, 0xfd, 0x09, 0x5c, 0x14, 0xc4, 0x19, 0x69, 0xfc,
86315 + 0x3e, 0xaf, 0x61, 0xdd, 0x07, 0xb0, 0x2d, 0xc3, 0x38, 0x45, 0x25, 0x9c,
86316 + 0x02, 0xbc, 0x93, 0x37, 0xb0, 0x7f, 0x61, 0x0d, 0xf5, 0x93, 0xd6, 0x9e,
86317 + 0x75, 0x70, 0x57, 0xd1, 0xf5, 0x47, 0x8b, 0xd0, 0x5e, 0x79, 0x8a, 0x95,
86318 + 0x0d, 0x42, 0xe0, 0x29, 0xeb, 0xac, 0xdd, 0x31, 0xc9, 0x18, 0x46, 0x4d,
86319 + 0x2d, 0xa0, 0x5c, 0xdc, 0x5a, 0x16, 0xd4, 0xdb, 0x4c, 0x7d, 0x06, 0x6c,
86320 + 0x1b, 0x9d, 0xec, 0x7a, 0x5e, 0x22, 0xc6, 0xba, 0xbb, 0x39, 0xd2, 0x73,
86321 + 0xd5, 0x16, 0x3a, 0xff, 0x1a, 0xd2, 0xe9, 0x2e, 0xcb, 0xed, 0x21, 0xa9,
86322 + 0xd4, 0xa3, 0xcc, 0xe6, 0xf7, 0x48, 0xf7, 0xb5, 0x54, 0x47, 0x8a, 0xe5,
86323 + 0xe7, 0xea, 0xb9, 0x66, 0x4c, 0x94, 0xf9, 0x1e, 0xd7, 0x83, 0xa5, 0xf9,
86324 + 0x6a, 0x3e, 0xb0, 0xff, 0xd9, 0xf7, 0x1c, 0x0b, 0x1c, 0x33, 0x1c, 0x27,
86325 + 0x8c, 0xd1, 0x7a, 0x30, 0xda, 0xae, 0x20, 0x9b, 0x90, 0x72, 0xa5, 0x65,
86326 + 0x8e, 0x70, 0x1d, 0xa7, 0x98, 0xcf, 0xee, 0xb5, 0xeb, 0x29, 0x3f, 0xe1,
86327 + 0x3e, 0x69, 0x1b, 0x08, 0x39, 0x1c, 0x1b, 0x75, 0x14, 0xeb, 0x11, 0x6c,
86328 + 0xa3, 0x58, 0xd1, 0x2c, 0x2b, 0x49, 0x97, 0x0d, 0xfd, 0x9d, 0x0c, 0xf1,
86329 + 0x96, 0x61, 0x94, 0xed, 0x5a, 0xc2, 0x95, 0x2a, 0x62, 0xce, 0x21, 0xd9,
86330 + 0x60, 0x35, 0xea, 0xd4, 0xb8, 0xf5, 0x7b, 0xb1, 0x9a, 0xee, 0x17, 0x06,
86331 + 0xea, 0x1c, 0x9e, 0x3f, 0x27, 0x67, 0x62, 0x11, 0x8a, 0x33, 0xe6, 0xb1,
86332 + 0xdc, 0x67, 0xf0, 0x91, 0x44, 0x9c, 0x79, 0xb3, 0x58, 0x9d, 0x81, 0x38,
86333 + 0x48, 0x7b, 0xa1, 0x81, 0x73, 0xd7, 0xc0, 0x7c, 0xc7, 0x3a, 0x76, 0x88,
86334 + 0x7a, 0x8f, 0xd1, 0x00, 0xaa, 0xb9, 0x2a, 0x02, 0x8e, 0xa5, 0xef, 0xc5,
86335 + 0x51, 0xaf, 0x4e, 0x11, 0x52, 0x17, 0x2b, 0x76, 0xcf, 0x13, 0xbd, 0x84,
86336 + 0xcd, 0xdb, 0x53, 0x70, 0x34, 0xb4, 0x19, 0x7f, 0x43, 0xa3, 0x9b, 0x29,
86337 + 0xfe, 0xe7, 0x38, 0x11, 0x51, 0xda, 0x0d, 0xfd, 0x69, 0x5b, 0xa3, 0x3e,
86338 + 0x2a, 0xe5, 0xd6, 0x94, 0x81, 0x29, 0x9b, 0x70, 0x74, 0x63, 0x10, 0x31,
86339 + 0x0b, 0xba, 0xee, 0x58, 0x83, 0x07, 0x30, 0xc0, 0xf8, 0x37, 0x3a, 0x9f,
86340 + 0x7a, 0x25, 0x8d, 0x89, 0x31, 0xbb, 0x06, 0xd9, 0x9b, 0x05, 0x22, 0x4e,
86341 + 0x82, 0xce, 0x16, 0x42, 0xce, 0x7b, 0x66, 0x1d, 0x91, 0x7d, 0xd7, 0xde,
86342 + 0x43, 0xfa, 0x8a, 0xf9, 0xb5, 0x0e, 0x8f, 0x59, 0x76, 0x09, 0x77, 0x11,
86343 + 0x56, 0xa7, 0x21, 0x9a, 0xdf, 0x4c, 0xf3, 0x8f, 0x92, 0xec, 0x5c, 0xdc,
86344 + 0xbb, 0x87, 0xd6, 0xb7, 0x38, 0xd6, 0xf4, 0xf3, 0xd8, 0x4e, 0x3a, 0x70,
86345 + 0x8d, 0xe7, 0x31, 0x3e, 0xf3, 0x42, 0x3e, 0x33, 0xf5, 0x78, 0x8e, 0x2b,
86346 + 0x1b, 0x3f, 0xcb, 0xd3, 0xde, 0x09, 0x64, 0xb7, 0xdb, 0x10, 0x13, 0xf6,
86347 + 0x6e, 0xc2, 0x2f, 0xa8, 0x8f, 0x3a, 0x56, 0xff, 0x14, 0xa0, 0x44, 0x9c,
86348 + 0x9d, 0x28, 0xc5, 0x80, 0x47, 0x0b, 0x96, 0x7b, 0x8f, 0x62, 0x0e, 0x26,
86349 + 0x08, 0x13, 0x9f, 0x21, 0x4c, 0xbf, 0xab, 0x7d, 0xda, 0x8c, 0x83, 0xb1,
86350 + 0x7e, 0x54, 0xbc, 0xb4, 0x5b, 0x41, 0xc7, 0x62, 0xea, 0x4b, 0x54, 0x4b,
86351 + 0xae, 0xb1, 0xf9, 0xbe, 0x7c, 0x79, 0x7d, 0x05, 0x2f, 0xff, 0x6f, 0x39,
86352 + 0x69, 0x92, 0xc5, 0xaa, 0x79, 0x69, 0xf5, 0x3d, 0x8d, 0x3f, 0x93, 0xd9,
86353 + 0x18, 0xfb, 0x22, 0x42, 0xb5, 0xf8, 0x97, 0xf5, 0x28, 0x39, 0x49, 0xf2,
86354 + 0x37, 0x75, 0x07, 0x75, 0x8e, 0x19, 0xf2, 0x65, 0xf6, 0x8d, 0x3c, 0x44,
86355 + 0x7d, 0x9a, 0xf2, 0x2a, 0xc6, 0x7e, 0xe1, 0xfb, 0x3d, 0x19, 0x6f, 0x38,
86356 + 0x41, 0xba, 0xa9, 0xe8, 0x4a, 0xa3, 0x5e, 0x71, 0xac, 0xb3, 0x63, 0x74,
86357 + 0xe6, 0x16, 0xa7, 0x1e, 0xe7, 0x1a, 0xb8, 0x36, 0x46, 0xc5, 0x0f, 0x46,
86358 + 0xcd, 0x1e, 0xc2, 0xc3, 0xab, 0xee, 0x21, 0x1c, 0x75, 0x9f, 0x50, 0xd1,
86359 + 0x4b, 0x67, 0xb7, 0xda, 0xc8, 0x07, 0x84, 0x4d, 0x12, 0x6d, 0xd3, 0x66,
86360 + 0x02, 0xd5, 0xf3, 0x5e, 0x90, 0x71, 0xcb, 0x72, 0xe3, 0xca, 0xc7, 0x32,
86361 + 0x95, 0xe6, 0x18, 0xdf, 0x80, 0x70, 0x5c, 0x20, 0x94, 0x1e, 0xf2, 0x6c,
86362 + 0x4b, 0x77, 0x2a, 0xd4, 0xa7, 0x1f, 0x62, 0x1f, 0x11, 0x7e, 0x7b, 0x59,
86363 + 0xe6, 0xbe, 0xc2, 0xba, 0x6d, 0x9f, 0xd5, 0x73, 0x2d, 0xc7, 0x15, 0xfd,
86364 + 0x96, 0x73, 0xd8, 0xde, 0x87, 0xa8, 0x8e, 0x77, 0x2d, 0xe9, 0xdc, 0x3e,
86365 + 0xa8, 0x0c, 0x49, 0x63, 0x25, 0xfb, 0x93, 0x2e, 0x37, 0xb5, 0x9e, 0xaf,
86366 + 0xb5, 0xa8, 0x73, 0x1c, 0xaf, 0x0f, 0x45, 0x45, 0xfd, 0x63, 0xae, 0xd7,
86367 + 0x53, 0x5f, 0xa3, 0xb3, 0x9c, 0x4c, 0xf1, 0x19, 0x38, 0xc7, 0x8e, 0xe3,
86368 + 0x8a, 0xd2, 0xed, 0xc4, 0x1b, 0xa0, 0xfd, 0xa1, 0x51, 0xbc, 0x41, 0x52,
86369 + 0x9f, 0x39, 0xd7, 0x35, 0x25, 0x8d, 0x06, 0x96, 0x4f, 0xb6, 0x1e, 0x65,
86370 + 0x5b, 0xf3, 0xdd, 0xb2, 0x6a, 0x6f, 0xe6, 0xe7, 0xf5, 0x74, 0xe9, 0x8e,
86371 + 0xb1, 0xff, 0x50, 0x5f, 0xe7, 0xb0, 0x4d, 0x21, 0x6a, 0x9c, 0x4e, 0x63,
86372 + 0x81, 0xd8, 0x21, 0xdd, 0x44, 0xb5, 0x86, 0x45, 0xc5, 0x84, 0xb7, 0x9e,
86373 + 0xf7, 0xfe, 0xf4, 0xfa, 0x26, 0xf1, 0xce, 0x9e, 0xdf, 0xa5, 0x67, 0x2f,
86374 + 0x46, 0x7a, 0x9f, 0xa2, 0x1c, 0xd2, 0x9c, 0x7e, 0x99, 0x6c, 0xe4, 0x18,
86375 + 0x83, 0xf2, 0x8a, 0xbd, 0x56, 0xe6, 0x1a, 0x39, 0xd6, 0xe0, 0x26, 0x48,
86376 + 0xce, 0xae, 0xc7, 0x7e, 0x75, 0x8e, 0xab, 0xdb, 0xa5, 0x9c, 0xb0, 0xd7,
86377 + 0x90, 0x2d, 0x58, 0x4e, 0xd5, 0x16, 0x7b, 0x66, 0x6d, 0xd3, 0x5e, 0xf1,
86378 + 0x5f, 0xc1, 0x3b, 0x83, 0x16, 0x72, 0xde, 0xc0, 0x4b, 0x79, 0xa5, 0x89,
86379 + 0x6e, 0x2b, 0xe8, 0xb3, 0x05, 0x7e, 0xda, 0x43, 0xfa, 0x5d, 0x49, 0x58,
86380 + 0x65, 0x91, 0x35, 0xdd, 0x1a, 0x58, 0x2f, 0x31, 0x77, 0x9a, 0x82, 0xe3,
86381 + 0xbc, 0xd4, 0xda, 0x55, 0x84, 0xaf, 0xe0, 0x1e, 0xc5, 0xb6, 0x57, 0xf0,
86382 + 0x32, 0xf1, 0xad, 0xb8, 0xc2, 0x32, 0x5a, 0x05, 0xf5, 0xb5, 0xbe, 0xa5,
86383 + 0xe9, 0xe0, 0x2f, 0x63, 0x8f, 0xcf, 0x90, 0xf3, 0x74, 0xe0, 0x18, 0xec,
86384 + 0x22, 0xdf, 0xe5, 0x56, 0x2a, 0x48, 0x2d, 0x06, 0x61, 0x8d, 0xa8, 0xd8,
86385 + 0xba, 0x9b, 0xfd, 0xff, 0x3d, 0x9a, 0x67, 0xbe, 0xce, 0x66, 0x1d, 0xd6,
86386 + 0xaa, 0xc3, 0x74, 0xb1, 0x24, 0x2c, 0x4a, 0xf6, 0xe0, 0xbd, 0xaa, 0x72,
86387 + 0xaa, 0x32, 0xa2, 0x62, 0x72, 0x94, 0x79, 0x59, 0x17, 0xaa, 0xcd, 0x1c,
86388 + 0x2b, 0x29, 0x8e, 0x8f, 0x8f, 0x65, 0x47, 0x3a, 0x1a, 0x43, 0x2d, 0xaf,
86389 + 0x89, 0x0a, 0x7d, 0x0f, 0xcb, 0x85, 0x60, 0x3b, 0xc6, 0x48, 0xff, 0xf6,
86390 + 0xf4, 0xe5, 0xb3, 0xfa, 0xff, 0xb1, 0x5e, 0xc1, 0x71, 0x51, 0x71, 0xd4,
86391 + 0xdb, 0xbb, 0x62, 0xa3, 0x49, 0xb2, 0xf5, 0x44, 0xaa, 0xca, 0xf3, 0x38,
86392 + 0xf1, 0x70, 0x9c, 0x7d, 0x66, 0x4f, 0x22, 0xea, 0x15, 0x8f, 0xe4, 0xe9,
86393 + 0x92, 0x6a, 0x29, 0xd7, 0xd7, 0x52, 0x9e, 0x3c, 0x49, 0xbd, 0x69, 0x7f,
86394 + 0xb1, 0x57, 0x6c, 0xcb, 0xeb, 0xd4, 0xa7, 0x96, 0x8b, 0xad, 0x79, 0x8b,
86395 + 0x71, 0xd1, 0x6c, 0x9f, 0xaa, 0xbc, 0x8b, 0xda, 0x52, 0xfa, 0xe4, 0x3b,
86396 + 0xa2, 0x48, 0x4e, 0x77, 0xd0, 0x37, 0x7f, 0xf8, 0x41, 0xa9, 0x58, 0xfc,
86397 + 0x3e, 0xc8, 0x3a, 0x76, 0x22, 0x10, 0xe9, 0xe9, 0x59, 0x12, 0x40, 0xbd,
86398 + 0x85, 0xbe, 0x66, 0xc2, 0x07, 0x57, 0x7a, 0x35, 0xdd, 0x80, 0x51, 0x6a,
86399 + 0x6f, 0xac, 0xf8, 0x89, 0xf3, 0x0e, 0x6a, 0xad, 0x83, 0x5c, 0x0d, 0xd5,
86400 + 0x91, 0x6b, 0xba, 0x43, 0xda, 0xd1, 0xee, 0xde, 0x96, 0xf6, 0xc9, 0xa6,
86401 + 0x5c, 0xad, 0x73, 0x7d, 0x4b, 0xdb, 0xa4, 0xdb, 0xb2, 0x70, 0x08, 0xf8,
86402 + 0xf2, 0x90, 0x0e, 0xcd, 0xb9, 0xd1, 0x0d, 0x74, 0x23, 0xa7, 0x52, 0x5c,
86403 + 0xec, 0xe8, 0xb6, 0x7a, 0xa6, 0xc4, 0x4d, 0x37, 0x91, 0x1e, 0x2d, 0x9d,
86404 + 0x93, 0x86, 0xb1, 0x39, 0xf3, 0xc0, 0x4d, 0x81, 0x29, 0xee, 0x2f, 0x1b,
86405 + 0x06, 0xf7, 0xf1, 0x7b, 0x33, 0xba, 0x9b, 0x9e, 0xd0, 0xf1, 0xc0, 0xb2,
86406 + 0xee, 0x41, 0x0c, 0xe4, 0x1f, 0x40, 0x7f, 0x9e, 0xdf, 0x3b, 0x69, 0x18,
86407 + 0xe1, 0x1a, 0x5f, 0xe0, 0x77, 0x4e, 0x0f, 0x35, 0x30, 0x6e, 0xdc, 0x5e,
86408 + 0x56, 0x71, 0xed, 0x10, 0xcf, 0x99, 0xcd, 0xef, 0xa3, 0xca, 0xfb, 0x59,
86409 + 0x7c, 0x9f, 0xd4, 0x93, 0x6b, 0x1e, 0xb2, 0x81, 0x61, 0x29, 0x95, 0x0c,
86410 + 0xdf, 0x63, 0x4e, 0x13, 0xd6, 0xe3, 0xbd, 0x7f, 0x4e, 0xbd, 0x71, 0x2e,
86411 + 0xbf, 0x0b, 0x63, 0xca, 0x86, 0x87, 0x79, 0xee, 0xd4, 0xec, 0xdc, 0xbb,
86412 + 0x34, 0x07, 0x71, 0x92, 0xea, 0xfa, 0x74, 0x25, 0x2f, 0xb2, 0xb5, 0xc3,
86413 + 0x1a, 0xfe, 0xa8, 0xc0, 0x3c, 0x33, 0xb3, 0x3c, 0x3f, 0x21, 0x9e, 0x04,
86414 + 0x56, 0xc4, 0xb8, 0x76, 0x53, 0xce, 0xec, 0xae, 0xbe, 0x2b, 0x93, 0xf2,
86415 + 0x25, 0xfb, 0xc3, 0x68, 0xe5, 0x5d, 0x59, 0x54, 0x68, 0x8f, 0xd1, 0x33,
86416 + 0x61, 0x95, 0x50, 0x2a, 0x2a, 0x42, 0x8f, 0xf1, 0xfa, 0x57, 0x53, 0x95,
86417 + 0xf5, 0xc7, 0x52, 0xbc, 0xfe, 0xd7, 0xd7, 0xa8, 0xd9, 0xc8, 0x30, 0xdd,
86418 + 0xa9, 0x0a, 0xff, 0x24, 0x77, 0x34, 0x56, 0x64, 0x57, 0xd6, 0x7d, 0x6f,
86419 + 0x76, 0xdd, 0x41, 0x5a, 0xb7, 0x8f, 0x62, 0x8c, 0xd7, 0xb2, 0x9e, 0x1c,
86420 + 0xa3, 0xd5, 0xf7, 0x86, 0x49, 0x71, 0x80, 0x7a, 0xf5, 0x81, 0x92, 0x2a,
86421 + 0xf6, 0x52, 0x1d, 0x1c, 0xcf, 0x13, 0x36, 0xf2, 0xde, 0x05, 0x52, 0xcd,
86422 + 0x2f, 0x7f, 0x23, 0x56, 0xf1, 0x21, 0xf7, 0xd5, 0x69, 0xea, 0xab, 0xed,
86423 + 0x54, 0xdf, 0x55, 0x4f, 0xa7, 0xb0, 0x73, 0x84, 0xea, 0xbb, 0xc0, 0x49,
86424 + 0xaf, 0xbe, 0x1c, 0x41, 0x7b, 0x89, 0xfb, 0x80, 0x25, 0xce, 0x15, 0x8c,
86425 + 0x5c, 0x33, 0xc9, 0x6e, 0x29, 0x57, 0x6a, 0x03, 0xf5, 0x82, 0x2c, 0xf5,
86426 + 0x64, 0xf1, 0x62, 0x89, 0x7f, 0x52, 0xf1, 0x8c, 0xf3, 0x19, 0xb2, 0x62,
86427 + 0x4e, 0xbb, 0x8b, 0xfa, 0x76, 0x97, 0x71, 0xec, 0xc0, 0xf3, 0xc2, 0x9a,
86428 + 0x3e, 0x27, 0xb2, 0xb7, 0x36, 0xe3, 0x41, 0xfc, 0x3c, 0x95, 0x5d, 0x11,
86429 + 0xa5, 0x6f, 0xc2, 0xcc, 0x86, 0xc6, 0xef, 0x48, 0xbb, 0xdb, 0x7a, 0x36,
86430 + 0x88, 0x36, 0xaa, 0x37, 0x6d, 0xee, 0x16, 0xb4, 0x51, 0xcf, 0xb7, 0xb5,
86431 + 0xc3, 0x25, 0x5b, 0x7b, 0xa3, 0x54, 0xb5, 0x03, 0xc7, 0x29, 0xdb, 0x80,
86432 + 0x42, 0xdf, 0xb1, 0xb2, 0x0b, 0x04, 0xf5, 0x55, 0xea, 0xbb, 0xc3, 0xd4,
86433 + 0xb3, 0x2b, 0xf7, 0xce, 0x30, 0xe1, 0x16, 0xde, 0x7b, 0xdd, 0xec, 0xbb,
86434 + 0x96, 0x7f, 0x90, 0x95, 0x1e, 0xf5, 0x0a, 0xd9, 0x83, 0xcf, 0xfc, 0xa3,
86435 + 0x48, 0x65, 0xfc, 0x4c, 0x6c, 0xf6, 0xff, 0xf9, 0x21, 0x9c, 0x42, 0xf7,
86436 + 0xc8, 0x21, 0x81, 0x1d, 0x6d, 0x95, 0x58, 0xee, 0xe4, 0xf7, 0x98, 0xde,
86437 + 0x7b, 0xb7, 0x2a, 0x4f, 0xc5, 0x86, 0x0a, 0xe1, 0x99, 0x43, 0xe5, 0xac,
86438 + 0xb8, 0x26, 0x8f, 0x01, 0xea, 0x89, 0xd9, 0x20, 0xf1, 0x5e, 0x53, 0xea,
86439 + 0x15, 0xcb, 0xf3, 0x96, 0xb1, 0x89, 0x74, 0xdd, 0xa2, 0x77, 0xea, 0xe3,
86440 + 0x84, 0x21, 0x68, 0x3f, 0x23, 0x4c, 0xf1, 0xaf, 0x39, 0x73, 0xb1, 0x7d,
86441 + 0x36, 0x76, 0x28, 0x1f, 0x28, 0x7f, 0x06, 0xc5, 0x82, 0x49, 0xfe, 0xa9,
86442 + 0x7b, 0xb1, 0x5b, 0xd1, 0xe3, 0x9c, 0xdc, 0x76, 0x33, 0xcf, 0x5f, 0x31,
86443 + 0x6b, 0xfb, 0xa6, 0x38, 0xed, 0x49, 0xbf, 0x47, 0x66, 0xcf, 0xff, 0x7f,
86444 + 0xad, 0xbd, 0xf6, 0x92, 0xff, 0xb9, 0x66, 0x86, 0xce, 0xc9, 0x18, 0x08,
86445 + 0x6e, 0xdc, 0x61, 0xfc, 0x33, 0x6f, 0xd6, 0xe7, 0xd4, 0x15, 0xa3, 0x03,
86446 + 0xb8, 0x71, 0x31, 0xdd, 0x7c, 0xe9, 0x0e, 0xb6, 0x8d, 0x7c, 0x95, 0x1c,
86447 + 0x66, 0xbd, 0xcf, 0x93, 0xde, 0xd0, 0x6a, 0x9c, 0xb3, 0xb8, 0x7c, 0xa8,
86448 + 0xb5, 0x3f, 0x2c, 0xcc, 0xe4, 0x90, 0x30, 0xfb, 0xa8, 0xbe, 0xd9, 0x93,
86449 + 0x30, 0x9b, 0x17, 0x08, 0xd3, 0x58, 0x0b, 0xb6, 0xc9, 0x79, 0xb4, 0x95,
86450 + 0xf8, 0xfb, 0x2c, 0x2c, 0xf2, 0x6b, 0xdf, 0x70, 0x00, 0x4a, 0xfa, 0x03,
86451 + 0xb2, 0x2b, 0xe1, 0x35, 0xd1, 0x4c, 0xb9, 0xc4, 0xb1, 0x77, 0x1e, 0x9b,
86452 + 0xf3, 0xd0, 0x5a, 0x88, 0xe7, 0x2a, 0xaa, 0xd1, 0xad, 0xc3, 0xe6, 0x59,
86453 + 0xc2, 0x9c, 0x83, 0x5f, 0x0a, 0xb4, 0x26, 0xfb, 0x61, 0x0e, 0x6c, 0x41,
86454 + 0xe7, 0xf4, 0x51, 0x61, 0x66, 0xcf, 0x12, 0x16, 0x0c, 0xa7, 0x2b, 0x32,
86455 + 0x17, 0xcd, 0xca, 0x4c, 0x32, 0x3e, 0xf6, 0x72, 0x88, 0x30, 0x74, 0xfa,
86456 + 0x6f, 0xe5, 0xb4, 0x67, 0xb3, 0xe0, 0xac, 0xfe, 0x4b, 0xe2, 0x15, 0x1f,
86457 + 0x3c, 0x37, 0x6b, 0x1f, 0x42, 0x24, 0xb5, 0xcc, 0xc7, 0xf7, 0x30, 0x88,
86458 + 0x35, 0xf9, 0x2f, 0xe2, 0x61, 0xc2, 0x43, 0x59, 0x6f, 0x7d, 0x2f, 0x72,
86459 + 0x25, 0x88, 0xb5, 0xf9, 0xe9, 0xf0, 0x51, 0x3b, 0x88, 0xa2, 0x27, 0xe7,
86460 + 0x7a, 0x1a, 0xeb, 0xa3, 0x0f, 0xdb, 0x8c, 0xef, 0xe4, 0x37, 0xd3, 0x73,
86461 + 0xd6, 0xe3, 0xeb, 0xcf, 0xa3, 0x27, 0x9c, 0x22, 0xdc, 0xe6, 0xf1, 0x79,
86462 + 0xf7, 0x75, 0xe2, 0x59, 0xce, 0x73, 0x23, 0xfc, 0xae, 0x61, 0x75, 0xa6,
86463 + 0xcd, 0x78, 0xd8, 0xbb, 0x23, 0x1a, 0x58, 0x53, 0x32, 0x70, 0x07, 0xd5,
86464 + 0xd5, 0xa2, 0x57, 0x57, 0x7f, 0x85, 0xe7, 0x15, 0xe2, 0x5b, 0x46, 0x7c,
86465 + 0x9b, 0xbc, 0x31, 0x03, 0xcb, 0x4b, 0xc7, 0xbd, 0x58, 0x51, 0x1d, 0xf6,
86466 + 0x03, 0xdb, 0x9e, 0xf1, 0x68, 0xf5, 0xae, 0xc6, 0x3e, 0xc9, 0x8a, 0x47,
86467 + 0xf3, 0xbd, 0x62, 0x67, 0x3e, 0x4a, 0xfb, 0xb9, 0x62, 0x24, 0xa3, 0x8c,
86468 + 0xc6, 0x20, 0xb1, 0x2c, 0x7d, 0x35, 0xd5, 0x19, 0x2b, 0x69, 0xd1, 0xb5,
86469 + 0x65, 0x6d, 0x72, 0x2e, 0x61, 0xa7, 0x25, 0x58, 0x97, 0x0c, 0x51, 0xff,
86470 + 0xfe, 0x16, 0xee, 0xd4, 0xc3, 0xe8, 0x4f, 0xde, 0x0b, 0xdc, 0x58, 0x43,
86471 + 0xfd, 0xf6, 0x61, 0x0f, 0xb3, 0x86, 0x68, 0xdf, 0x1a, 0xaa, 0x0d, 0x77,
86472 + 0x79, 0x7a, 0x4f, 0xb1, 0xae, 0x74, 0xce, 0xe5, 0x62, 0x84, 0xea, 0x7d,
86473 + 0xa2, 0x82, 0x01, 0x36, 0x66, 0x8a, 0xfc, 0x3d, 0xb3, 0xb1, 0xcb, 0xb3,
86474 + 0xf3, 0x4f, 0x36, 0xda, 0xa5, 0x5f, 0xc4, 0x2b, 0x3d, 0x75, 0x29, 0xb2,
86475 + 0x8d, 0xdd, 0x58, 0x9f, 0xec, 0xc1, 0x1c, 0x6b, 0x39, 0xbe, 0xaa, 0xbb,
86476 + 0x88, 0x5a, 0x63, 0xb8, 0xdb, 0x93, 0xc1, 0xf2, 0xbc, 0xbf, 0x6d, 0x10,
86477 + 0x4d, 0x13, 0xc8, 0xf9, 0xbc, 0xfb, 0x50, 0xe5, 0xdd, 0x42, 0x4e, 0x09,
86478 + 0x62, 0xd3, 0x2e, 0xfe, 0x56, 0x71, 0x77, 0xa6, 0xf2, 0xce, 0x70, 0x78,
86479 + 0x2c, 0x88, 0xa1, 0x5d, 0xd4, 0xfb, 0x52, 0x21, 0xb8, 0x8d, 0x9f, 0x96,
86480 + 0xdd, 0x4f, 0xb2, 0x2b, 0xf7, 0xef, 0xaf, 0x91, 0x5d, 0x67, 0x82, 0x41,
86481 + 0x34, 0x13, 0x0c, 0x4b, 0x10, 0x4f, 0xc3, 0x54, 0x1d, 0x9a, 0xc7, 0xf8,
86482 + 0xef, 0x23, 0x07, 0xc5, 0x7d, 0xa5, 0x0a, 0xcf, 0x46, 0xfe, 0x9b, 0x4a,
86483 + 0x58, 0xc1, 0x7c, 0x8b, 0xd5, 0x55, 0x89, 0x47, 0xa3, 0x7b, 0x5c, 0x2d,
86484 + 0xe6, 0x8f, 0xd5, 0xd1, 0x47, 0x47, 0x6c, 0x82, 0x26, 0xa6, 0x96, 0x8b,
86485 + 0xaf, 0xe7, 0x93, 0x88, 0xd1, 0xfd, 0x32, 0xee, 0x54, 0xd6, 0xdf, 0x53,
86486 + 0xfa, 0xbc, 0xf3, 0x07, 0xff, 0xbb, 0xb2, 0x6f, 0x01, 0x8e, 0xea, 0xbc,
86487 + 0xd2, 0xfc, 0x6e, 0x3f, 0xa4, 0xd6, 0x93, 0xab, 0x27, 0x2d, 0x1e, 0xa6,
86488 + 0x9b, 0xbe, 0x2d, 0xb5, 0xad, 0x4e, 0xb8, 0x0d, 0xa2, 0x90, 0x3d, 0xbd,
86489 + 0xa5, 0x06, 0x0b, 0x5b, 0x04, 0x63, 0xcb, 0xb6, 0x32, 0x83, 0x67, 0x53,
86490 + 0x63, 0x05, 0x03, 0xc6, 0xd8, 0x33, 0x91, 0x09, 0x35, 0x25, 0xef, 0xce,
86491 + 0x44, 0x77, 0x25, 0x10, 0x02, 0xf5, 0x4b, 0x12, 0x04, 0x98, 0xaa, 0x2d,
86492 + 0x37, 0x92, 0x40, 0xd8, 0x69, 0x49, 0x78, 0x92, 0xec, 0x90, 0x4c, 0xd5,
86493 + 0x58, 0x01, 0x61, 0x20, 0x04, 0xe3, 0xec, 0x4e, 0x6d, 0x91, 0x5d, 0xcf,
86494 + 0x98, 0xc2, 0x06, 0x9c, 0x18, 0x3f, 0x33, 0x59, 0x8b, 0x78, 0xe2, 0xbb,
86495 + 0xdf, 0xb9, 0xdd, 0x0d, 0x82, 0x21, 0x99, 0x1a, 0x57, 0x75, 0x89, 0xee,
86496 + 0x7b, 0xff, 0xff, 0x9e, 0xff, 0xfc, 0xe7, 0x7c, 0xe7, 0x3b, 0xe7, 0xfc,
86497 + 0xb7, 0x4c, 0x2e, 0x2d, 0xfb, 0xb5, 0x08, 0xc5, 0xda, 0x94, 0xf9, 0x42,
86498 + 0x96, 0xe3, 0x48, 0x1c, 0xed, 0xbe, 0xd9, 0x8f, 0x11, 0x99, 0x84, 0xcb,
86499 + 0x41, 0xad, 0x08, 0x4b, 0x9e, 0xc7, 0x1f, 0xad, 0x3c, 0x51, 0x64, 0x90,
86500 + 0xb9, 0x0b, 0x91, 0x3f, 0x2c, 0x73, 0x17, 0x21, 0xef, 0xa6, 0x2c, 0xf2,
86501 + 0x1c, 0xa6, 0x5c, 0x13, 0x12, 0x5b, 0xe5, 0x79, 0xc7, 0x95, 0xa1, 0xb4,
86502 + 0xc8, 0x90, 0x7b, 0xee, 0x59, 0x73, 0xa3, 0x5a, 0xc4, 0x18, 0x3e, 0x62,
86503 + 0x6e, 0x62, 0x5e, 0xe2, 0x5f, 0xfa, 0x86, 0x99, 0x6a, 0x93, 0xb5, 0xba,
86504 + 0xcd, 0xbd, 0x09, 0x27, 0xfa, 0xa9, 0xb7, 0xad, 0xa1, 0xa3, 0xc2, 0x67,
86505 + 0xb3, 0xff, 0xe5, 0xf4, 0xf6, 0x97, 0xd4, 0xdb, 0xa9, 0xec, 0x3e, 0x1e,
86506 + 0x57, 0x4e, 0xde, 0x8c, 0xf5, 0x22, 0xa3, 0xc8, 0xa5, 0xa0, 0x42, 0x13,
86507 + 0xb9, 0x6c, 0x28, 0x67, 0xdc, 0xac, 0xa0, 0x7e, 0xca, 0x2d, 0x99, 0x9a,
86508 + 0x95, 0x9f, 0x47, 0xa1, 0xce, 0x21, 0x17, 0x2c, 0x9b, 0xc8, 0xc8, 0x35,
86509 + 0x45, 0xfd, 0x5c, 0xb8, 0x69, 0x13, 0xb3, 0xf5, 0x2c, 0x74, 0x46, 0x7c,
86510 + 0xfa, 0xe2, 0x4b, 0x3b, 0x92, 0x32, 0xaf, 0x5d, 0xf2, 0x04, 0x2b, 0xdf,
86511 + 0xb3, 0xd1, 0x9e, 0x56, 0x45, 0x33, 0x3a, 0xb0, 0x59, 0x7b, 0x20, 0x3e,
86512 + 0x20, 0xeb, 0xcf, 0xad, 0xbd, 0x59, 0x79, 0x3a, 0x2a, 0xe3, 0x35, 0x2c,
86513 + 0xb2, 0xc6, 0x59, 0xfb, 0xce, 0x71, 0x6f, 0x73, 0x5c, 0x80, 0x63, 0x32,
86514 + 0xb6, 0xe9, 0x49, 0x7d, 0x26, 0x7e, 0xcd, 0x7d, 0x3a, 0xae, 0x74, 0xf2,
86515 + 0x99, 0xb0, 0xf6, 0xf6, 0xfd, 0xac, 0xaf, 0x1f, 0xa7, 0x6f, 0xf2, 0x37,
86516 + 0xa7, 0x8d, 0xf6, 0x5e, 0x04, 0xc7, 0xb0, 0xcb, 0xaa, 0x49, 0xc8, 0xdc,
86517 + 0xcf, 0x45, 0xcb, 0x51, 0x70, 0x24, 0x37, 0x36, 0x13, 0xc3, 0x33, 0xbd,
86518 + 0xac, 0x9c, 0x3f, 0x0a, 0x3e, 0x0a, 0x76, 0x1b, 0x4a, 0xe4, 0x66, 0x3f,
86519 + 0x4a, 0x6a, 0x38, 0xd2, 0xa7, 0xcb, 0xa7, 0x3c, 0x52, 0xef, 0x53, 0x88,
86520 + 0x19, 0xcc, 0x07, 0xd5, 0x55, 0x1e, 0x07, 0x71, 0x6e, 0x13, 0xbe, 0x20,
86521 + 0xb7, 0x8d, 0x04, 0x9c, 0x96, 0x0f, 0x4b, 0xcd, 0x2f, 0x1f, 0x19, 0x0c,
86522 + 0x02, 0x86, 0xa3, 0x8c, 0xbb, 0x5c, 0x2b, 0x63, 0x3d, 0xba, 0xd3, 0x5f,
86523 + 0x98, 0x53, 0x95, 0xcc, 0xd9, 0xb5, 0x9b, 0x35, 0x22, 0xfa, 0x9d, 0x69,
86524 + 0x8e, 0xf0, 0x5a, 0x6f, 0x3a, 0xb7, 0x4f, 0xe4, 0x10, 0xe4, 0x68, 0xcf,
86525 + 0x68, 0xbf, 0x35, 0x37, 0xdc, 0x76, 0x6f, 0x0e, 0x9b, 0x73, 0x79, 0xa9,
86526 + 0x60, 0x73, 0x31, 0x7a, 0xf7, 0x7a, 0x93, 0x29, 0x54, 0x22, 0xa9, 0xd9,
86527 + 0xe6, 0xd3, 0x4b, 0x98, 0xf5, 0x7b, 0xfb, 0x9a, 0x61, 0xe5, 0xeb, 0x9e,
86528 + 0x14, 0xfa, 0x2b, 0xc4, 0x8f, 0x9c, 0x5a, 0xbd, 0xa7, 0xcc, 0x56, 0x2e,
86529 + 0xb2, 0x5b, 0x52, 0xd9, 0x07, 0x0b, 0xb0, 0x89, 0xb9, 0x76, 0xaa, 0x95,
86530 + 0x98, 0x35, 0x68, 0xb4, 0x70, 0x7a, 0x57, 0x61, 0x38, 0xd5, 0xf9, 0x35,
86531 + 0xbf, 0x97, 0xf1, 0x10, 0xc8, 0x67, 0xde, 0x7f, 0x09, 0x59, 0x4c, 0x1b,
86532 + 0xf4, 0x1a, 0x36, 0x9b, 0x8c, 0xff, 0xcc, 0x34, 0xda, 0x64, 0xac, 0xcc,
86533 + 0xc1, 0x67, 0xff, 0x1b, 0x5f, 0xf0, 0x50, 0x4f, 0x87, 0x2b, 0xa4, 0x7e,
86534 + 0xa6, 0xd6, 0x92, 0xab, 0x0f, 0x16, 0xa3, 0x88, 0xb9, 0x6b, 0x7f, 0x95,
86535 + 0xaf, 0x43, 0xb7, 0x15, 0xe2, 0xfc, 0x57, 0xfe, 0x13, 0x52, 0x55, 0x79,
86536 + 0x70, 0xd5, 0x02, 0x0f, 0xc6, 0x6d, 0xb0, 0xd5, 0x12, 0x7b, 0x1b, 0x80,
86537 + 0xe6, 0x09, 0xee, 0xdb, 0xa0, 0x82, 0xa7, 0x92, 0x36, 0x3c, 0x9a, 0xb4,
86538 + 0x63, 0x6d, 0x12, 0xdf, 0x59, 0x04, 0x4c, 0xd7, 0xc0, 0xdf, 0x3e, 0xa3,
86539 + 0x60, 0x6b, 0x29, 0xfc, 0xad, 0x31, 0xc5, 0xdf, 0xb2, 0x96, 0x39, 0xd3,
86540 + 0x9a, 0x09, 0xe2, 0x19, 0xef, 0x75, 0x0e, 0x70, 0x5f, 0x07, 0xec, 0xa8,
86541 + 0x19, 0xc0, 0x3d, 0xf9, 0x40, 0x83, 0x13, 0xfe, 0x19, 0xc6, 0x99, 0x72,
86542 + 0x07, 0xfc, 0x53, 0x97, 0xed, 0xfe, 0xce, 0x1a, 0x3b, 0x37, 0xb7, 0x56,
86543 + 0x64, 0x71, 0xe1, 0x31, 0xda, 0xf3, 0xa2, 0x41, 0xde, 0xcf, 0xfc, 0x5d,
86544 + 0x65, 0x9e, 0xf3, 0xc9, 0x9f, 0x48, 0xfd, 0x52, 0xae, 0x49, 0xef, 0x52,
86545 + 0x41, 0xe9, 0xa0, 0x9d, 0x18, 0x76, 0xce, 0x3c, 0x5f, 0x25, 0xf8, 0x0d,
86546 + 0x3c, 0x45, 0xd9, 0xdc, 0xfc, 0x4d, 0xad, 0x25, 0x37, 0x5d, 0xa1, 0x62,
86547 + 0xfd, 0xb0, 0xdc, 0x0b, 0x6b, 0x1e, 0x27, 0x7d, 0x2a, 0x8f, 0x3e, 0x7e,
86548 + 0xc4, 0xea, 0x77, 0xd9, 0xb8, 0x46, 0x3b, 0x8a, 0x06, 0x81, 0x35, 0x71,
86549 + 0x3c, 0x51, 0x0c, 0x7f, 0x44, 0x64, 0xac, 0x5b, 0xee, 0xe0, 0xd8, 0x62,
86550 + 0xb4, 0x4c, 0x64, 0xc6, 0x3d, 0x3c, 0xf1, 0xa3, 0x8a, 0x4c, 0x2d, 0xf7,
86551 + 0xf7, 0xf7, 0x5e, 0x7b, 0x1a, 0xfc, 0xd8, 0x94, 0xa4, 0xcd, 0xd9, 0x3c,
86552 + 0x18, 0xce, 0xd6, 0x54, 0x37, 0xa4, 0xbc, 0xb3, 0x7a, 0xa3, 0xff, 0xbd,
86553 + 0x38, 0xdb, 0x37, 0xa5, 0x2f, 0xcc, 0x70, 0x1e, 0x43, 0xd9, 0x40, 0xdd,
86554 + 0x0d, 0x4f, 0x9a, 0x88, 0xea, 0x26, 0xc6, 0xf9, 0x79, 0x53, 0x87, 0x51,
86555 + 0x44, 0x5f, 0xd8, 0x18, 0xfb, 0xd2, 0x34, 0xb2, 0xfe, 0xfc, 0x4a, 0x22,
86556 + 0xa0, 0x6c, 0x21, 0x57, 0x7e, 0x95, 0xf1, 0x74, 0x8c, 0x9f, 0x51, 0xe6,
86557 + 0x70, 0x4e, 0xca, 0x6d, 0xa3, 0x5f, 0xef, 0x4c, 0x01, 0x23, 0xcc, 0xd1,
86558 + 0x0f, 0x2e, 0x17, 0xfe, 0x5e, 0xc4, 0xe7, 0xd1, 0x6b, 0x78, 0x4f, 0x9a,
86559 + 0x9f, 0x23, 0xfc, 0x4c, 0x72, 0x4f, 0xf9, 0x3c, 0x04, 0xc6, 0x1d, 0x88,
86560 + 0x8c, 0x13, 0x68, 0xc7, 0x03, 0x98, 0x62, 0x0c, 0xbc, 0x31, 0xaa, 0xa2,
86561 + 0x64, 0xac, 0x1c, 0x1f, 0x1d, 0x26, 0x3e, 0x1e, 0xca, 0x70, 0xfe, 0x4d,
86562 + 0xe3, 0xd2, 0xdf, 0x92, 0xf5, 0x49, 0x1f, 0x58, 0xfc, 0xa9, 0x00, 0x63,
86563 + 0xa4, 0x1f, 0xd2, 0x0b, 0x7e, 0x57, 0xe7, 0xdc, 0xaa, 0xf4, 0xf1, 0x5a,
86564 + 0x71, 0x34, 0xea, 0xf3, 0xf4, 0xd1, 0xe6, 0x0d, 0x87, 0xf8, 0x58, 0x03,
86565 + 0x5e, 0x8d, 0xe6, 0x7a, 0x42, 0xbe, 0x96, 0x9f, 0x4a, 0x3d, 0x83, 0x21,
86566 + 0x3b, 0x4f, 0x93, 0x6b, 0xb9, 0x58, 0x2a, 0x6b, 0x96, 0xba, 0x74, 0x8e,
86567 + 0xb7, 0xcc, 0xfe, 0xfd, 0x8c, 0x29, 0x7d, 0xca, 0xd7, 0x26, 0xbd, 0x7d,
86568 + 0x29, 0xe8, 0x56, 0xac, 0x3c, 0x5c, 0xe7, 0x4d, 0x1a, 0x90, 0xfd, 0x6d,
86569 + 0xa0, 0x0c, 0xdf, 0xa5, 0xed, 0x07, 0x44, 0xd7, 0x8c, 0xed, 0x52, 0xef,
86570 + 0x2d, 0x43, 0xff, 0x40, 0x39, 0xf6, 0x0c, 0x18, 0xe8, 0x5d, 0xde, 0x86,
86571 + 0x33, 0x51, 0x13, 0x9b, 0x42, 0x26, 0xd6, 0x84, 0xbc, 0x81, 0x57, 0x50,
86572 + 0xdf, 0x78, 0x14, 0x8f, 0x91, 0x43, 0xa8, 0xd4, 0xc9, 0x37, 0xf0, 0xce,
86573 + 0x5e, 0x07, 0x36, 0xeb, 0x7f, 0x4c, 0x1f, 0x36, 0xcd, 0xf7, 0x96, 0x2d,
86574 + 0xc0, 0x70, 0xa2, 0x5e, 0xed, 0xa6, 0x7c, 0x91, 0x36, 0xee, 0x55, 0xd0,
86575 + 0x81, 0x67, 0xf5, 0xef, 0xf0, 0x5e, 0xb7, 0xcd, 0xa1, 0xc9, 0x77, 0x1b,
86576 + 0xe3, 0xa9, 0xec, 0xa5, 0x41, 0xfb, 0xca, 0xc4, 0xb2, 0x48, 0xb6, 0xce,
86577 + 0xbe, 0xb9, 0x41, 0x30, 0xbf, 0x18, 0xa7, 0xa9, 0xb7, 0x13, 0xc9, 0x08,
86578 + 0xc3, 0x2e, 0x94, 0x67, 0x1b, 0xba, 0xf0, 0x34, 0xf9, 0xc6, 0x3b, 0x24,
86579 + 0x02, 0xf7, 0xc7, 0x15, 0x34, 0xd6, 0xe9, 0xb8, 0x98, 0xfe, 0x06, 0xde,
86580 + 0x1a, 0x0d, 0xe3, 0x4d, 0xc6, 0xf4, 0x25, 0xdf, 0xf5, 0x92, 0x83, 0x7a,
86581 + 0x70, 0x3e, 0x1d, 0xc6, 0xb9, 0xa8, 0xb7, 0xf5, 0x05, 0x65, 0x01, 0x7e,
86582 + 0x9a, 0x76, 0xe0, 0xde, 0x38, 0xf0, 0x4b, 0xce, 0xe3, 0x8f, 0x3b, 0x70,
86583 + 0x25, 0xad, 0xe2, 0x28, 0xf7, 0xc7, 0x11, 0x5a, 0x02, 0xa3, 0xcd, 0x83,
86584 + 0x23, 0x43, 0x8f, 0x62, 0x2a, 0xf5, 0x28, 0x4e, 0x25, 0xdf, 0x31, 0x5d,
86585 + 0x9a, 0xf4, 0x75, 0x5c, 0xb8, 0xc2, 0x7c, 0x6c, 0x9a, 0xda, 0x28, 0x5e,
86586 + 0xd1, 0xca, 0x38, 0xaf, 0x19, 0xa2, 0xf7, 0xb7, 0xf8, 0xdb, 0xfd, 0xf1,
86587 + 0x46, 0x1c, 0x1c, 0xa7, 0x4a, 0x13, 0x3a, 0x12, 0x31, 0x79, 0x56, 0x03,
86588 + 0x62, 0xe4, 0x85, 0xfd, 0x4c, 0xdb, 0xb7, 0x86, 0xee, 0x95, 0x5c, 0x43,
86589 + 0x69, 0xa9, 0xed, 0xcf, 0xae, 0xa3, 0x71, 0x56, 0xcf, 0x4e, 0x72, 0x28,
86590 + 0xea, 0x95, 0xe3, 0xfe, 0x36, 0x11, 0xb4, 0x62, 0xd3, 0xb1, 0x9b, 0xfb,
86591 + 0xd1, 0xc8, 0xfd, 0xf8, 0x06, 0x2e, 0xee, 0x6d, 0xc3, 0x5b, 0xc4, 0xbb,
86592 + 0xd2, 0x65, 0xbe, 0x4e, 0xa7, 0xad, 0x9e, 0x73, 0xa7, 0xcd, 0x54, 0x95,
86593 + 0xe8, 0xb4, 0x0d, 0xbf, 0x88, 0x8a, 0x4e, 0xd3, 0xc4, 0x3f, 0x9f, 0xc7,
86594 + 0x6f, 0xff, 0xcb, 0x4a, 0xda, 0xb3, 0xad, 0x3b, 0x98, 0xe9, 0x41, 0x15,
86595 + 0xaf, 0x70, 0xe1, 0xaa, 0x25, 0x9b, 0xc8, 0xfa, 0x87, 0xe4, 0xfb, 0x85,
86596 + 0xb9, 0xa6, 0x4a, 0xe4, 0x33, 0xcc, 0x3c, 0x4d, 0x0b, 0xe4, 0x29, 0x12,
86597 + 0x67, 0x03, 0x56, 0x3d, 0xbe, 0x2e, 0xde, 0x05, 0x7b, 0xa8, 0x98, 0x79,
86598 + 0x98, 0x77, 0xa6, 0x03, 0x6f, 0xe1, 0xda, 0xa4, 0x0b, 0x8b, 0xe3, 0x1a,
86599 + 0x5e, 0x9e, 0x7c, 0x8d, 0xcf, 0xfa, 0x47, 0x5c, 0xe6, 0x77, 0x5f, 0x3c,
86600 + 0xe3, 0x6f, 0xdd, 0x0d, 0x6d, 0x78, 0x30, 0x2d, 0xeb, 0xcb, 0xe3, 0x83,
86601 + 0x74, 0x44, 0xd2, 0xb2, 0xce, 0x18, 0x7d, 0x43, 0xd6, 0x59, 0xfe, 0xef,
86602 + 0xac, 0xf3, 0xbf, 0x72, 0xbe, 0x05, 0xf4, 0xa5, 0x5c, 0xec, 0x28, 0xc1,
86603 + 0x91, 0xa4, 0x8a, 0xd3, 0x7a, 0x31, 0x2e, 0xa9, 0x52, 0x5f, 0x76, 0x31,
86604 + 0x86, 0x38, 0xd0, 0xcc, 0x9c, 0x71, 0x84, 0x9f, 0x8d, 0xcc, 0x7f, 0xce,
86605 + 0xea, 0x0e, 0x9c, 0xd2, 0x17, 0x10, 0xeb, 0xef, 0xb4, 0x61, 0xb9, 0x46,
86606 + 0xb2, 0x5f, 0x56, 0x8e, 0x73, 0x52, 0xff, 0xb3, 0xae, 0xbb, 0xa4, 0x2f,
86607 + 0x89, 0x31, 0xea, 0x2b, 0x2f, 0xf6, 0x1b, 0xf3, 0xaa, 0x85, 0x35, 0x77,
86608 + 0xca, 0x77, 0xe7, 0x3c, 0x12, 0x82, 0x7f, 0x69, 0x6e, 0xad, 0xca, 0xc6,
86609 + 0x2e, 0xe5, 0x4f, 0x2b, 0x33, 0x78, 0x21, 0x71, 0xec, 0xef, 0x72, 0xd8,
86610 + 0x21, 0xf9, 0x64, 0x1b, 0xe3, 0x10, 0xe3, 0xf2, 0xf1, 0x6d, 0x92, 0xe7,
86611 + 0xd9, 0xc2, 0xef, 0xb5, 0xad, 0xd2, 0xf2, 0x60, 0xb7, 0xf8, 0xde, 0x7b,
86612 + 0x2f, 0x65, 0x38, 0xfa, 0xfb, 0x2f, 0x69, 0xd6, 0xdf, 0xeb, 0x2f, 0x2d,
86613 + 0xb6, 0xfe, 0x7e, 0xf2, 0x92, 0x2f, 0x75, 0x2b, 0x5e, 0x65, 0x38, 0xb0,
86614 + 0x75, 0x6e, 0x05, 0x7d, 0xba, 0xa1, 0x3c, 0xdc, 0x20, 0x5c, 0x72, 0x36,
86615 + 0x8f, 0x08, 0x28, 0x67, 0xa3, 0x92, 0xa7, 0x15, 0x1a, 0xcc, 0xe3, 0x95,
86616 + 0x46, 0xbf, 0x46, 0x3c, 0xee, 0x42, 0xc9, 0x32, 0x0d, 0x17, 0xa8, 0x73,
86617 + 0xc2, 0x28, 0xed, 0xf8, 0xff, 0x20, 0xba, 0x17, 0xed, 0x85, 0x16, 0xf6,
86618 + 0x98, 0x66, 0x7f, 0x48, 0x6a, 0x0c, 0x32, 0xaf, 0x03, 0x1f, 0x70, 0x2f,
86619 + 0x7f, 0x35, 0x5a, 0x84, 0xf7, 0x53, 0x1a, 0x2e, 0xa5, 0xdb, 0xb0, 0x7b,
86620 + 0x32, 0xc3, 0x33, 0x4e, 0x59, 0xfc, 0x5b, 0x63, 0x8e, 0xe9, 0xc0, 0xc1,
86621 + 0xa8, 0x86, 0x58, 0xe2, 0x75, 0xb3, 0x40, 0xf3, 0x4d, 0xf9, 0xed, 0x0e,
86622 + 0x1c, 0x48, 0x4f, 0x63, 0x72, 0xe0, 0x63, 0xd3, 0xae, 0x75, 0xe1, 0xa3,
86623 + 0xd0, 0x34, 0x26, 0x0e, 0x49, 0x5f, 0x4f, 0x47, 0xff, 0x90, 0x86, 0xde,
86624 + 0x84, 0x0d, 0x7b, 0x96, 0xb7, 0xa0, 0x7f, 0xb2, 0x19, 0xc6, 0x98, 0x07,
86625 + 0x7b, 0xd2, 0x69, 0x4c, 0x8d, 0x4e, 0xe3, 0x4c, 0x52, 0x6b, 0x2c, 0x50,
86626 + 0xa6, 0x71, 0x9a, 0xcf, 0xd9, 0x91, 0x78, 0x1b, 0x06, 0xe7, 0xd8, 0x99,
86627 + 0x94, 0x9a, 0xa4, 0x3c, 0x67, 0x1a, 0xdd, 0xa9, 0xbb, 0xd5, 0x44, 0x28,
86628 + 0x4f, 0xa2, 0xa7, 0x3d, 0x53, 0xab, 0x27, 0xbe, 0xa6, 0x35, 0xa5, 0x8f,
86629 + 0xfb, 0x74, 0x34, 0x9d, 0xab, 0xdb, 0xdf, 0x59, 0x0b, 0xd1, 0xd1, 0x37,
86630 + 0xd4, 0xc2, 0x31, 0x1a, 0xba, 0x13, 0xd2, 0x1b, 0xf5, 0xf1, 0x99, 0x26,
86631 + 0x7e, 0xa9, 0x7b, 0xdd, 0x8b, 0xf9, 0xf7, 0xb0, 0xde, 0x89, 0x2d, 0x9c,
86632 + 0x6b, 0x8a, 0x79, 0x90, 0xa6, 0x78, 0x1b, 0x0d, 0xd8, 0xf1, 0x9e, 0x4e,
86633 + 0xce, 0x53, 0x69, 0xc7, 0xab, 0x7a, 0x09, 0x22, 0x65, 0x76, 0xd4, 0x87,
86634 + 0x18, 0xa7, 0xb3, 0x71, 0xfb, 0xc3, 0xa4, 0x82, 0x47, 0x89, 0xa9, 0x27,
86635 + 0x42, 0xf5, 0xed, 0xab, 0x85, 0xd1, 0x1d, 0x52, 0x70, 0x4d, 0xbb, 0x61,
86636 + 0x1a, 0x8c, 0x5d, 0x2e, 0x7f, 0x6e, 0x8f, 0x7e, 0x6d, 0x66, 0xfa, 0x9b,
86637 + 0x5f, 0x98, 0xb9, 0x71, 0x33, 0x94, 0xf1, 0x29, 0x8e, 0x5b, 0xbc, 0xac,
86638 + 0xbe, 0x53, 0xc6, 0xb9, 0x89, 0xe9, 0x32, 0x4e, 0xea, 0xd1, 0xb7, 0xc6,
86639 + 0xe9, 0xd8, 0x39, 0x14, 0xb1, 0xe4, 0xdd, 0x95, 0xc0, 0x52, 0x07, 0xc4,
86640 + 0x9f, 0xea, 0xd5, 0x2b, 0x40, 0xd7, 0xb4, 0x3e, 0x87, 0x5c, 0xc7, 0x1f,
86641 + 0xd8, 0x08, 0xd1, 0x95, 0xe4, 0x92, 0x6f, 0x63, 0x4f, 0x74, 0x14, 0xcc,
86642 + 0x27, 0x89, 0x73, 0xfe, 0xf5, 0x23, 0x48, 0xe1, 0xf9, 0x74, 0x0a, 0x2f,
86643 + 0x50, 0x47, 0x86, 0x75, 0x6e, 0x29, 0x8d, 0x3f, 0x8f, 0xbe, 0x8d, 0x98,
86644 + 0xb5, 0x67, 0x47, 0xb1, 0x21, 0xfa, 0xf7, 0x55, 0xc2, 0x11, 0x77, 0x24,
86645 + 0x56, 0x72, 0x7e, 0xd1, 0xab, 0xb7, 0xd5, 0xc0, 0x97, 0x9c, 0x7f, 0x25,
86646 + 0x7a, 0x46, 0x4c, 0xf3, 0x7b, 0x8c, 0x5f, 0x3f, 0x23, 0xbf, 0xba, 0x96,
86647 + 0x3d, 0x03, 0x55, 0x40, 0x7d, 0x6b, 0x56, 0x1c, 0x6b, 0xe3, 0x3e, 0x57,
86648 + 0x0b, 0xaf, 0x47, 0xc9, 0xb8, 0xa6, 0x2c, 0x8e, 0xc9, 0xbe, 0x93, 0x37,
86649 + 0x8e, 0x7b, 0xf0, 0x14, 0x39, 0x4a, 0xfe, 0xe1, 0x1f, 0x28, 0x12, 0xcb,
86650 + 0x6a, 0x0e, 0x91, 0xef, 0x1f, 0xf2, 0x28, 0x4b, 0xf6, 0xb9, 0xf0, 0x68,
86651 + 0x4c, 0xea, 0x37, 0xcd, 0xe8, 0xd9, 0xaf, 0xf1, 0x1e, 0xaf, 0x7e, 0x81,
86652 + 0x39, 0xe9, 0x69, 0xf8, 0x3c, 0x23, 0xe4, 0x55, 0x6e, 0x62, 0xb1, 0xe3,
86653 + 0x70, 0x29, 0x8a, 0x0e, 0xab, 0xb0, 0x1d, 0x2e, 0x47, 0xf1, 0x61, 0x37,
86654 + 0x6a, 0x18, 0xdb, 0xdc, 0xe3, 0x17, 0x31, 0xb9, 0x0f, 0x6a, 0x51, 0xf8,
86655 + 0x73, 0x33, 0x5f, 0x93, 0x3e, 0x5b, 0x00, 0xa5, 0xe3, 0xdb, 0x91, 0x8e,
86656 + 0x05, 0x51, 0x3c, 0x4e, 0x2a, 0x35, 0x7e, 0x5c, 0xa9, 0xe7, 0x33, 0x1f,
86657 + 0x8a, 0x69, 0x9c, 0x2b, 0xc3, 0x75, 0x56, 0x73, 0x5c, 0x5f, 0xc2, 0xbb,
86658 + 0x5e, 0x7a, 0x65, 0xd7, 0xf4, 0x37, 0x50, 0x30, 0x70, 0xeb, 0x2c, 0x97,
86659 + 0x16, 0xc2, 0x3c, 0x72, 0x91, 0xd6, 0x67, 0x91, 0x39, 0xd7, 0xf5, 0x70,
86660 + 0x76, 0x4d, 0x41, 0x59, 0x93, 0xb3, 0x8d, 0xb6, 0x30, 0x57, 0xea, 0x5f,
86661 + 0xb8, 0x4c, 0xfb, 0xb9, 0x9f, 0xf2, 0xde, 0x60, 0x6e, 0xd8, 0x19, 0x13,
86662 + 0xbb, 0xff, 0x81, 0x42, 0xbf, 0xc1, 0x4c, 0xaa, 0x08, 0x1f, 0xa7, 0x3c,
86663 + 0x8a, 0x8f, 0xeb, 0xf9, 0x0b, 0x5e, 0xff, 0x73, 0xae, 0x67, 0xc7, 0x7e,
86664 + 0x6f, 0xeb, 0x49, 0xc5, 0xdb, 0xbe, 0x4e, 0xf1, 0xa9, 0x3b, 0x94, 0x62,
86665 + 0x5c, 0x1e, 0x2d, 0xc5, 0x15, 0xc6, 0xe2, 0x1b, 0xa3, 0xe5, 0xb8, 0x3a,
86666 + 0x5a, 0x49, 0x5f, 0xd1, 0x38, 0x87, 0x69, 0x96, 0x68, 0x6e, 0xcc, 0xa4,
86667 + 0x5f, 0xc0, 0x9c, 0xd8, 0x02, 0x7c, 0x9c, 0xde, 0x82, 0xd2, 0x98, 0x70,
86668 + 0x76, 0x0f, 0x3e, 0xe2, 0xf5, 0x0f, 0xd3, 0x13, 0x28, 0xdc, 0xf7, 0x39,
86669 + 0xef, 0x31, 0xcd, 0x87, 0xb8, 0xc6, 0xab, 0xe9, 0x0e, 0x14, 0xef, 0xdb,
86670 + 0x06, 0xc7, 0x3e, 0xb3, 0xab, 0x27, 0x84, 0x9f, 0xda, 0xb9, 0x96, 0x6e,
86671 + 0xdd, 0x3b, 0xb5, 0xd8, 0x1e, 0xe4, 0x1c, 0x3a, 0xe7, 0x3c, 0xae, 0x2c,
86672 + 0x19, 0xdf, 0x86, 0xd2, 0x7d, 0x1e, 0x6c, 0xa5, 0x2e, 0x27, 0xa0, 0x05,
86673 + 0xd6, 0x29, 0xdb, 0x90, 0x77, 0x38, 0xa3, 0x83, 0x4d, 0xe3, 0x19, 0x1f,
86674 + 0x79, 0xa8, 0x41, 0xea, 0x43, 0xc7, 0x95, 0x11, 0xcb, 0x47, 0xdc, 0x72,
86675 + 0xfe, 0x04, 0xd3, 0xe9, 0x22, 0x9c, 0x4d, 0x89, 0x8e, 0xe4, 0xec, 0xda,
86676 + 0x04, 0xf2, 0xf7, 0x11, 0x23, 0x47, 0x75, 0x8b, 0x43, 0x88, 0x6f, 0x8c,
86677 + 0xa6, 0xef, 0xe6, 0x5f, 0x41, 0xec, 0x49, 0xd4, 0xd0, 0xb7, 0x16, 0x60,
86678 + 0xcd, 0x3e, 0xe9, 0x91, 0x4e, 0xdd, 0xef, 0xa2, 0x35, 0x8d, 0xa5, 0xef,
86679 + 0xe6, 0x5b, 0x0d, 0xb4, 0x53, 0x6f, 0x8b, 0x01, 0x39, 0xab, 0x61, 0x62,
86680 + 0x5a, 0x3f, 0xae, 0xd8, 0x62, 0x92, 0x6f, 0xb5, 0xd1, 0xe7, 0x5b, 0xd1,
86681 + 0x33, 0x84, 0xf6, 0x83, 0x0d, 0xd2, 0xb7, 0x75, 0x62, 0x84, 0xf9, 0xd3,
86682 + 0x65, 0xe6, 0x1c, 0xd4, 0xb9, 0x9a, 0x17, 0xce, 0xc3, 0xf0, 0xa8, 0x0b,
86683 + 0x3f, 0x1a, 0xf5, 0xa0, 0x31, 0xf6, 0x39, 0x31, 0xa3, 0x10, 0xc7, 0xa9,
86684 + 0xef, 0x49, 0xf2, 0x9f, 0x8f, 0xa2, 0x2a, 0x26, 0x18, 0x6b, 0x3f, 0x8c,
86685 + 0x56, 0x62, 0x9c, 0xb9, 0xd6, 0x75, 0xe2, 0x4c, 0x9a, 0x7b, 0xf3, 0x01,
86686 + 0xf3, 0x8e, 0xef, 0xa5, 0x83, 0xf8, 0x55, 0x34, 0x88, 0x57, 0xa9, 0xc7,
86687 + 0xba, 0x98, 0x9b, 0x32, 0x1d, 0x53, 0x70, 0xe8, 0xb8, 0x92, 0x47, 0xbb,
86688 + 0xf0, 0xc7, 0x34, 0xcf, 0x48, 0xd6, 0x2e, 0xb4, 0xf1, 0x56, 0xfa, 0x91,
86689 + 0xf4, 0xff, 0x25, 0x3e, 0x38, 0xf4, 0x11, 0x90, 0xd3, 0x05, 0x73, 0x75,
86690 + 0x42, 0xaf, 0x7b, 0x0a, 0x15, 0xf4, 0xa5, 0x2f, 0x4d, 0x55, 0x93, 0x9a,
86691 + 0x58, 0x32, 0x74, 0x2d, 0xaa, 0xa9, 0x57, 0xad, 0x35, 0x18, 0x8a, 0x73,
86692 + 0x39, 0x39, 0x46, 0xe5, 0x0e, 0xae, 0x5f, 0x23, 0x66, 0x38, 0xe8, 0x32,
86693 + 0x26, 0xef, 0xbb, 0x8e, 0xfb, 0x0e, 0xfd, 0x69, 0x75, 0x86, 0x03, 0xd1,
86694 + 0x9f, 0x6d, 0x77, 0xd6, 0xb1, 0xa4, 0x96, 0xbd, 0x37, 0xf4, 0x46, 0x34,
86695 + 0x56, 0x2d, 0x3d, 0xa5, 0x93, 0x08, 0x52, 0x2f, 0x77, 0xcb, 0x15, 0x4c,
86696 + 0xbc, 0x45, 0x4c, 0xb9, 0x9a, 0x14, 0xbe, 0x24, 0x3c, 0xa9, 0x8b, 0x31,
86697 + 0xa9, 0x84, 0x3c, 0x41, 0xc3, 0x4e, 0x72, 0x79, 0x5f, 0x7c, 0x8a, 0xb9,
86698 + 0xca, 0x57, 0xc9, 0xd5, 0x4a, 0x39, 0x8d, 0xc1, 0xe7, 0xb5, 0x62, 0x0f,
86699 + 0x7d, 0xb3, 0x40, 0x5b, 0x8c, 0x35, 0xe4, 0x41, 0x0e, 0x8d, 0xa1, 0xe4,
86700 + 0x09, 0x89, 0x27, 0x40, 0x6d, 0x5c, 0x95, 0x7e, 0xcf, 0xfa, 0x9f, 0xe1,
86701 + 0x7e, 0xb4, 0x57, 0xb9, 0x20, 0x3d, 0x9a, 0x37, 0xd1, 0x84, 0xd4, 0xd7,
86702 + 0xad, 0xde, 0x30, 0xdc, 0x61, 0xcd, 0xb8, 0x88, 0x45, 0x16, 0x23, 0x2f,
86703 + 0x0c, 0x8b, 0x3c, 0x95, 0xd4, 0xbf, 0x8a, 0x77, 0xa9, 0xd7, 0x2b, 0x51,
86704 + 0xdf, 0xcc, 0x83, 0xa8, 0x3f, 0x73, 0xc5, 0x2e, 0xfd, 0x2b, 0xb9, 0x3f,
86705 + 0x08, 0x8d, 0xf3, 0x7d, 0x1a, 0x0d, 0x61, 0x40, 0x95, 0xef, 0xc2, 0x1b,
86706 + 0x5b, 0xd1, 0x3d, 0x22, 0x32, 0x98, 0x66, 0x39, 0xf1, 0xf1, 0x09, 0xeb,
86707 + 0xf9, 0xf2, 0xec, 0x3b, 0xf3, 0x0e, 0xaf, 0x6a, 0x20, 0x97, 0x7b, 0x4c,
86708 + 0xe3, 0x68, 0xd2, 0x03, 0xc7, 0xf2, 0xff, 0x41, 0x3d, 0x4c, 0x63, 0x34,
86709 + 0xa5, 0x91, 0x53, 0x16, 0xc1, 0x53, 0x15, 0x44, 0x3f, 0xe3, 0x78, 0x8c,
86710 + 0xf7, 0xa7, 0x63, 0x45, 0x30, 0xaa, 0x32, 0xcf, 0xfc, 0x6a, 0xfc, 0xba,
86711 + 0x39, 0xf5, 0xb8, 0xcc, 0x29, 0xdf, 0x7f, 0xce, 0x31, 0x73, 0xe5, 0xd8,
86712 + 0x23, 0x36, 0xc7, 0xae, 0x9a, 0x53, 0xad, 0xb3, 0x7f, 0x2f, 0xb3, 0xce,
86713 + 0x10, 0x45, 0x6c, 0x55, 0x52, 0x6f, 0xb1, 0xf4, 0xd2, 0x4d, 0xbd, 0xcc,
86714 + 0xd1, 0xde, 0x36, 0x1f, 0xb3, 0xe4, 0x9a, 0xaa, 0x16, 0x9e, 0x5f, 0x1b,
86715 + 0xff, 0xbc, 0x5a, 0xea, 0xa5, 0x12, 0xc3, 0x5c, 0x61, 0xad, 0xf1, 0x0c,
86716 + 0xfe, 0xd1, 0xbc, 0x74, 0xdb, 0x3c, 0x15, 0xbc, 0x26, 0xf1, 0xe8, 0x52,
86717 + 0xb6, 0x1f, 0xed, 0xce, 0xe6, 0x02, 0xd3, 0x38, 0x99, 0x94, 0x58, 0xe0,
86718 + 0xc1, 0x06, 0xa9, 0x43, 0xa9, 0xde, 0x3e, 0x03, 0x53, 0xe4, 0x7e, 0xef,
86719 + 0x50, 0xf7, 0x4c, 0x80, 0xfc, 0x53, 0xe4, 0x7f, 0xb3, 0xe3, 0x55, 0x04,
86720 + 0xa9, 0x4a, 0xe9, 0x29, 0x08, 0x9e, 0x4e, 0x63, 0x57, 0xf2, 0x75, 0xe2,
86721 + 0xda, 0xc7, 0xe4, 0x43, 0x5d, 0xe4, 0xda, 0xd3, 0xe8, 0x49, 0x35, 0xe3,
86722 + 0xe5, 0xfd, 0x2d, 0xc4, 0x18, 0xc1, 0x4a, 0xdf, 0x99, 0xcb, 0xf6, 0x66,
86723 + 0x1c, 0x1c, 0x4b, 0x23, 0x75, 0x58, 0x62, 0xa4, 0x9c, 0xc7, 0x92, 0xf8,
86724 + 0xa8, 0x21, 0x9a, 0x38, 0x0d, 0x83, 0x7f, 0xf7, 0x24, 0xb6, 0x21, 0x72,
86725 + 0xf8, 0x6d, 0x72, 0xfc, 0x69, 0xac, 0x1e, 0xd0, 0xd6, 0x1f, 0xc1, 0x34,
86726 + 0xd6, 0x32, 0x7e, 0x26, 0x13, 0x2d, 0x9c, 0xbf, 0x19, 0xbd, 0xfb, 0xbd,
86727 + 0x01, 0x87, 0x6d, 0x0e, 0x63, 0x94, 0x07, 0x3b, 0x27, 0x23, 0x30, 0x46,
86728 + 0xe4, 0x8c, 0x81, 0x0b, 0xc1, 0xb8, 0x47, 0xf9, 0x90, 0x3c, 0xb9, 0x3e,
86729 + 0xee, 0x65, 0x7e, 0xe6, 0x35, 0xd6, 0x2a, 0x3e, 0x4f, 0x9e, 0x4d, 0xfa,
86730 + 0x59, 0x73, 0x70, 0x46, 0x57, 0x50, 0x70, 0xbf, 0x82, 0x10, 0x63, 0x97,
86731 + 0xa7, 0x9a, 0x31, 0x65, 0x44, 0x47, 0xef, 0x10, 0xd7, 0x7b, 0x73, 0xdf,
86732 + 0x64, 0xbf, 0x1e, 0xe1, 0x7c, 0xb2, 0x77, 0x2d, 0xe8, 0x9d, 0xf4, 0x75,
86733 + 0x9c, 0x81, 0xdb, 0xe2, 0x5c, 0xbd, 0x43, 0xb9, 0x7b, 0x50, 0xfc, 0x71,
86734 + 0x83, 0x37, 0x30, 0x47, 0x91, 0x7b, 0x77, 0x10, 0xbf, 0x66, 0xdf, 0x6f,
86735 + 0x28, 0xc9, 0xe5, 0xe4, 0xa5, 0x36, 0xf1, 0x8b, 0x6e, 0xcb, 0x5f, 0x44,
86736 + 0x17, 0xbd, 0xc9, 0x08, 0x6d, 0xfa, 0xc7, 0x66, 0xaa, 0xb5, 0x95, 0x72,
86737 + 0x36, 0x48, 0xaf, 0xc7, 0xe2, 0x26, 0xe7, 0xa5, 0xee, 0xe6, 0x94, 0xd8,
86738 + 0xdd, 0xdd, 0xee, 0xa2, 0x3d, 0xe5, 0x13, 0x9f, 0x0a, 0x26, 0x5c, 0x70,
86739 + 0x1d, 0x29, 0x42, 0xfe, 0xb0, 0xf0, 0x34, 0xa8, 0xa5, 0xcc, 0xfb, 0xe5,
86740 + 0x3c, 0xc3, 0x30, 0x6d, 0xd4, 0x36, 0x41, 0x1f, 0x8b, 0xba, 0xb1, 0x68,
86741 + 0xc2, 0x8d, 0x1f, 0x11, 0x03, 0x6a, 0x26, 0x34, 0x1c, 0x27, 0x06, 0xb8,
86742 + 0x27, 0x02, 0x98, 0x24, 0x06, 0xcc, 0xc9, 0xd6, 0x3e, 0xde, 0x4c, 0xcf,
86743 + 0x9f, 0x8b, 0x42, 0x79, 0x96, 0xe8, 0x31, 0xb7, 0xaf, 0xb2, 0xa7, 0x2d,
86744 + 0xc4, 0x3d, 0xd9, 0xdf, 0x00, 0x76, 0x0f, 0xa5, 0xb1, 0x6a, 0x9f, 0x89,
86745 + 0x9f, 0xeb, 0xf5, 0xee, 0x02, 0x45, 0xf2, 0x04, 0x13, 0x69, 0x5d, 0xce,
86746 + 0x4d, 0x7a, 0xd7, 0xcb, 0xb9, 0xe2, 0xf6, 0x4a, 0x13, 0x79, 0x21, 0xaf,
86747 + 0x4e, 0xb4, 0x5f, 0x5f, 0xa0, 0x48, 0xdc, 0xaa, 0xf7, 0x6c, 0xc1, 0x7c,
86748 + 0x64, 0x7a, 0x65, 0x0f, 0x62, 0x8b, 0xaa, 0xd0, 0x1f, 0x5b, 0xb0, 0xa7,
86749 + 0xcc, 0x70, 0x5d, 0x6b, 0x30, 0xcd, 0x4d, 0xa1, 0xdf, 0x56, 0x59, 0xb5,
86750 + 0x65, 0xdb, 0x1f, 0x71, 0xed, 0x6d, 0x5c, 0xb7, 0xac, 0xbd, 0x03, 0xb1,
86751 + 0xbd, 0x0a, 0xd2, 0xfe, 0x0e, 0x44, 0x47, 0x3b, 0xd0, 0xbf, 0x57, 0x30,
86752 + 0xa1, 0x8f, 0x98, 0x60, 0x76, 0x3d, 0x1b, 0x7a, 0x0c, 0x57, 0x2d, 0x16,
86753 + 0x20, 0x63, 0xbc, 0x01, 0x8f, 0x6d, 0xf6, 0x3e, 0xe4, 0x53, 0xfe, 0x8c,
86754 + 0xef, 0x34, 0x0f, 0x08, 0xa7, 0xf6, 0xf7, 0xf5, 0x72, 0xff, 0x1f, 0x3f,
86755 + 0x24, 0xf1, 0xc6, 0x34, 0xfb, 0xc8, 0x59, 0x51, 0x26, 0x6b, 0xd0, 0xa4,
86756 + 0x3e, 0xfe, 0x71, 0x8d, 0xe6, 0x9b, 0xe9, 0x67, 0x6c, 0xbf, 0xb8, 0xaf,
86757 + 0x7e, 0xcb, 0x16, 0xe1, 0x31, 0xcb, 0x84, 0xdb, 0xa5, 0x71, 0xe1, 0xf0,
86758 + 0x7d, 0x48, 0x3d, 0xce, 0xf5, 0x70, 0xaf, 0x9c, 0xf1, 0x2f, 0x4c, 0xe1,
86759 + 0x72, 0x76, 0x4d, 0x53, 0x8f, 0x12, 0xfb, 0x6c, 0x13, 0x7e, 0xf4, 0x94,
86760 + 0xc1, 0xb8, 0xd6, 0x20, 0xcf, 0xbf, 0x29, 0x3f, 0xd7, 0xdb, 0x8c, 0xfe,
86761 + 0xfd, 0xc2, 0x35, 0x84, 0x97, 0xf9, 0x8c, 0x0f, 0xd0, 0x82, 0xe4, 0x64,
86762 + 0xe6, 0x59, 0xd1, 0xc4, 0x9d, 0xb6, 0x22, 0xfb, 0x7e, 0x1a, 0xbb, 0x69,
86763 + 0x97, 0x2e, 0xce, 0xcf, 0xf8, 0xc2, 0xf9, 0xb4, 0x40, 0x81, 0x3c, 0x6f,
86764 + 0xe2, 0xc7, 0xe6, 0x9e, 0x2a, 0xd1, 0x8d, 0xcc, 0x7f, 0xba, 0x4a, 0x30,
86765 + 0x63, 0x53, 0xe8, 0x0f, 0xad, 0xf5, 0x75, 0xfe, 0xf5, 0xb6, 0x64, 0xf4,
86766 + 0x21, 0xf7, 0x9e, 0xfe, 0x3d, 0xf2, 0x5c, 0xe0, 0x7d, 0x22, 0x53, 0x07,
86767 + 0x76, 0xef, 0x85, 0x51, 0xa8, 0x49, 0xaf, 0xa0, 0x03, 0x7d, 0xd4, 0xef,
86768 + 0xce, 0x64, 0x07, 0x0e, 0xd2, 0x67, 0x87, 0xf5, 0x13, 0x35, 0x36, 0xd4,
86769 + 0xcd, 0xd8, 0x31, 0xf5, 0x93, 0x45, 0xc4, 0xd3, 0x25, 0xcb, 0xfc, 0xf4,
86770 + 0xaf, 0x0e, 0xc4, 0x53, 0x63, 0x73, 0xad, 0x3e, 0x9f, 0x4d, 0xe2, 0x9f,
86771 + 0xe8, 0xa2, 0x13, 0x85, 0x03, 0xa7, 0xe1, 0x1c, 0xe8, 0x44, 0x81, 0xbf,
86772 + 0x09, 0x0f, 0x87, 0x2e, 0x99, 0x57, 0x35, 0x87, 0xfb, 0x24, 0xf5, 0x73,
86773 + 0x22, 0x58, 0xc3, 0x7c, 0x92, 0x39, 0xcc, 0xc8, 0x3c, 0xfa, 0x7e, 0x03,
86774 + 0xf9, 0xae, 0xf4, 0xf4, 0x6d, 0x58, 0xbb, 0x5c, 0x72, 0x75, 0x85, 0xb6,
86775 + 0x5d, 0xcd, 0x5c, 0x53, 0x53, 0x9f, 0xb7, 0xce, 0x5f, 0x90, 0x87, 0x55,
86776 + 0x7a, 0xf0, 0x8c, 0x75, 0xee, 0x40, 0xae, 0x6f, 0x67, 0x8e, 0xb0, 0x1d,
86777 + 0x35, 0x31, 0xc3, 0x14, 0x7d, 0x9f, 0x44, 0xe4, 0x25, 0x1b, 0xe5, 0x68,
86778 + 0x5c, 0xe6, 0xdf, 0x32, 0xa3, 0x88, 0x4d, 0xfb, 0xdb, 0x27, 0x14, 0xdd,
86779 + 0xf5, 0xc8, 0xb8, 0x82, 0xc0, 0x00, 0xe7, 0x0a, 0xfd, 0xf5, 0xdc, 0x4c,
86780 + 0x7d, 0x2c, 0xc7, 0xf9, 0xb6, 0x93, 0x27, 0x6c, 0x47, 0x09, 0xc7, 0xbb,
86781 + 0x35, 0xc1, 0x86, 0xc8, 0x4a, 0xe9, 0xa5, 0xa4, 0x43, 0xfe, 0xd6, 0x62,
86782 + 0x45, 0xf8, 0x90, 0xbf, 0x71, 0xad, 0x22, 0xdc, 0x45, 0xc6, 0xe9, 0xae,
86783 + 0xba, 0xf1, 0x8b, 0xd9, 0x9e, 0x57, 0x03, 0xf1, 0xc1, 0x63, 0x9d, 0x85,
86784 + 0x7c, 0xed, 0xe6, 0x79, 0x89, 0x4c, 0xbd, 0xda, 0x19, 0x97, 0xbc, 0xe2,
86785 + 0x58, 0x68, 0x55, 0xb4, 0x91, 0x58, 0x67, 0x36, 0x8d, 0xd1, 0xee, 0x2f,
86786 + 0xa3, 0x12, 0xff, 0x33, 0x2a, 0xb8, 0xe6, 0xc1, 0xff, 0x8a, 0xe6, 0x4b,
86787 + 0xbe, 0x9c, 0x92, 0x7a, 0xe4, 0xb9, 0xa4, 0x61, 0x52, 0xaf, 0x2d, 0x6b,
86788 + 0x69, 0x4b, 0x81, 0x50, 0x31, 0x50, 0xd5, 0xfd, 0x8c, 0xd3, 0xca, 0xdf,
86789 + 0x4b, 0x50, 0xc6, 0x18, 0x30, 0x30, 0xf2, 0xfb, 0x6a, 0xaf, 0xc4, 0xe1,
86790 + 0x42, 0xa9, 0x81, 0xda, 0xb1, 0x33, 0xf4, 0x2f, 0x66, 0x2a, 0x7b, 0x76,
86791 + 0xf5, 0xc2, 0x5e, 0xb1, 0xd3, 0x00, 0xf2, 0xe3, 0x17, 0x69, 0x93, 0x2a,
86792 + 0xce, 0x47, 0x7d, 0xfa, 0x3a, 0xdb, 0x37, 0x68, 0xff, 0x8b, 0x6e, 0xc3,
86793 + 0xee, 0x45, 0xda, 0xa3, 0x78, 0xda, 0xc2, 0xee, 0x30, 0x7a, 0x18, 0x1b,
86794 + 0xc8, 0xe3, 0x0e, 0x3c, 0x63, 0x53, 0x51, 0x10, 0xf3, 0xa9, 0x3e, 0xe6,
86795 + 0xdb, 0x3d, 0x7c, 0x86, 0x70, 0xcc, 0x0a, 0x72, 0xc0, 0x67, 0xa3, 0xf5,
86796 + 0x9e, 0x5f, 0x63, 0x03, 0xfd, 0x51, 0x9e, 0x21, 0x6b, 0xd2, 0x50, 0xcc,
86797 + 0xbc, 0xf2, 0x14, 0xd7, 0xb1, 0xb3, 0x2c, 0xf3, 0xdc, 0xd2, 0xec, 0xdc,
86798 + 0xf1, 0x11, 0xe1, 0x5f, 0x2b, 0xb0, 0xce, 0x9a, 0x3b, 0x68, 0xf9, 0xe6,
86799 + 0x01, 0x39, 0x5b, 0x5e, 0xa7, 0x21, 0x91, 0x6e, 0xc6, 0xb6, 0xf2, 0x05,
86800 + 0x38, 0x98, 0xd8, 0x8e, 0xa5, 0xe4, 0xc1, 0x4f, 0x96, 0x1b, 0x8c, 0x8d,
86801 + 0xc4, 0xa1, 0xb8, 0xa6, 0xde, 0xa7, 0x3c, 0x90, 0xed, 0x3f, 0x54, 0xc2,
86802 + 0x11, 0x97, 0x98, 0x97, 0x87, 0x41, 0x75, 0x3e, 0x8a, 0xac, 0x33, 0x7f,
86803 + 0x99, 0xb9, 0xfb, 0x47, 0xbc, 0xd9, 0x38, 0x48, 0xd4, 0x88, 0x5b, 0xe7,
86804 + 0x2d, 0x02, 0x2f, 0x90, 0x4b, 0xa4, 0x18, 0x01, 0xf3, 0xc2, 0x5a, 0x6a,
86805 + 0x33, 0x0a, 0x60, 0x54, 0x0b, 0x26, 0xca, 0x98, 0x79, 0x77, 0xc8, 0x54,
86806 + 0x9e, 0x95, 0x29, 0x77, 0x3d, 0xc5, 0x6b, 0x62, 0x5b, 0xc2, 0x2f, 0xe4,
86807 + 0xf7, 0x42, 0xb4, 0xd2, 0x9e, 0x2a, 0x29, 0x73, 0xc2, 0x3a, 0xb7, 0xe9,
86808 + 0xd5, 0x0d, 0x5b, 0x03, 0x3e, 0xdb, 0x97, 0xb1, 0xc1, 0xf5, 0xb5, 0xdc,
86809 + 0xff, 0xd2, 0x06, 0xcc, 0x1c, 0x96, 0x78, 0xf6, 0xfb, 0xcf, 0x52, 0x18,
86810 + 0x37, 0xcf, 0x52, 0x88, 0x5e, 0xbd, 0x67, 0xde, 0x45, 0xfd, 0xd4, 0x53,
86811 + 0xb6, 0xa3, 0x26, 0x2a, 0x44, 0xc7, 0x9b, 0xdd, 0x92, 0x87, 0xda, 0xc8,
86812 + 0x23, 0x8c, 0x74, 0xd2, 0x2d, 0xb1, 0xd2, 0x11, 0x07, 0x16, 0xc5, 0x0d,
86813 + 0xe4, 0x87, 0xb5, 0x03, 0xd7, 0xec, 0x37, 0xcc, 0xf6, 0xea, 0x79, 0xcc,
86814 + 0x03, 0x6f, 0xad, 0xb9, 0x8f, 0xb2, 0xdb, 0xb5, 0x1f, 0x9b, 0x0f, 0x56,
86815 + 0x8a, 0x8c, 0x3f, 0x72, 0x67, 0xea, 0xcc, 0x0b, 0xa9, 0x97, 0x9c, 0x4e,
86816 + 0x4c, 0xda, 0xcf, 0xdf, 0x98, 0x5f, 0xbb, 0xed, 0xba, 0xf0, 0x19, 0xb1,
86817 + 0xd3, 0xd9, 0x67, 0xdb, 0xc4, 0x66, 0x3d, 0xb4, 0xd3, 0x69, 0x8c, 0x25,
86818 + 0x1b, 0x30, 0x90, 0x10, 0x1d, 0x47, 0x70, 0x99, 0xfc, 0xb0, 0x76, 0x70,
86819 + 0x1a, 0xc3, 0xe4, 0x87, 0xbe, 0xb8, 0xf7, 0x00, 0x35, 0x89, 0x6d, 0x6a,
86820 + 0x93, 0xc5, 0x93, 0x5c, 0x5a, 0x4e, 0x86, 0xaf, 0x5a, 0x7a, 0x97, 0x18,
86821 + 0xb3, 0x87, 0xeb, 0xbd, 0x97, 0x3c, 0xa9, 0x39, 0x96, 0x0f, 0xad, 0xac,
86822 + 0x14, 0xc5, 0x9a, 0xf4, 0x2b, 0x32, 0xf7, 0x45, 0x29, 0x4b, 0x91, 0xe6,
86823 + 0xc3, 0x5a, 0xeb, 0x5e, 0x8f, 0x75, 0xae, 0xc1, 0x51, 0x2e, 0x31, 0x58,
86824 + 0xe2, 0x2e, 0xf9, 0xf7, 0x72, 0x89, 0xbb, 0x61, 0xca, 0xb6, 0x98, 0x7b,
86825 + 0xb6, 0x14, 0xee, 0x07, 0x3c, 0xa8, 0x79, 0x80, 0x31, 0x72, 0x89, 0x82,
86826 + 0xf2, 0x25, 0x7e, 0x63, 0xa9, 0xad, 0x19, 0xa8, 0xd6, 0x88, 0x3f, 0x6e,
86827 + 0xb3, 0x27, 0xf1, 0x3b, 0xce, 0xd1, 0x01, 0x73, 0x6f, 0x21, 0x36, 0xec,
86828 + 0x9d, 0x43, 0x5b, 0xf5, 0x48, 0x7d, 0xdd, 0xe5, 0x0a, 0x47, 0x43, 0xae,
86829 + 0x58, 0xbd, 0xee, 0x54, 0x16, 0x33, 0x1e, 0xcb, 0xfe, 0xc9, 0xf3, 0xbf,
86830 + 0x72, 0x1b, 0x5f, 0xaa, 0x60, 0x7c, 0x7b, 0xd2, 0x92, 0x41, 0x6a, 0xc0,
86831 + 0x32, 0xee, 0xdf, 0xee, 0xd3, 0xd4, 0xcd, 0x7d, 0xba, 0x0f, 0x8e, 0x27,
86832 + 0x2a, 0xc9, 0xbf, 0xee, 0x1e, 0x43, 0x0a, 0x18, 0x43, 0xee, 0x8d, 0x99,
86833 + 0x5d, 0x5b, 0x43, 0x45, 0x52, 0x17, 0xb2, 0x62, 0x48, 0xbb, 0x8d, 0x38,
86834 + 0x5a, 0x2a, 0x76, 0xe1, 0xab, 0x21, 0xc6, 0xe9, 0x99, 0xdf, 0xc4, 0x3e,
86835 + 0xac, 0x3a, 0x5e, 0xf6, 0xb7, 0x0e, 0xec, 0x22, 0x66, 0xca, 0xd9, 0x6e,
86836 + 0xa7, 0xa6, 0xd1, 0xff, 0x3b, 0xd0, 0xc3, 0x39, 0x5f, 0x26, 0x6e, 0x0e,
86837 + 0x10, 0x37, 0x6f, 0x2c, 0x3b, 0xf1, 0x93, 0x1a, 0xd4, 0xd1, 0x08, 0xa6,
86838 + 0xfe, 0x5b, 0xb9, 0xe0, 0xe6, 0x52, 0x7f, 0xc7, 0x27, 0x16, 0x6e, 0xca,
86839 + 0xdc, 0x32, 0xdf, 0xec, 0xb9, 0x17, 0xf2, 0xdf, 0x85, 0x52, 0x4b, 0x34,
86840 + 0x9d, 0xda, 0xff, 0x36, 0x77, 0x56, 0x8a, 0xac, 0x77, 0x93, 0x43, 0xb0,
86841 + 0x76, 0x76, 0x4f, 0x7e, 0x9a, 0x98, 0x6b, 0xe5, 0x08, 0x8c, 0xb9, 0x11,
86842 + 0xac, 0x59, 0xae, 0xe2, 0x6a, 0x74, 0x1a, 0x05, 0x87, 0x72, 0xf8, 0x64,
86843 + 0x36, 0x9d, 0x22, 0x36, 0x0d, 0x43, 0xf0, 0xa8, 0x91, 0xfb, 0x62, 0xd0,
86844 + 0x4f, 0x4a, 0x30, 0x91, 0xd4, 0x88, 0x99, 0x26, 0xfa, 0x43, 0x2e, 0x72,
86845 + 0xdb, 0xee, 0x93, 0x79, 0x56, 0x9c, 0x28, 0x21, 0x86, 0xe7, 0x78, 0xb7,
86846 + 0x70, 0x6e, 0xc1, 0x1f, 0xe6, 0x18, 0x23, 0x76, 0xe4, 0x2d, 0x93, 0xbc,
86847 + 0xe2, 0x73, 0xf3, 0x42, 0x9b, 0xdc, 0xb7, 0x00, 0xc3, 0x7b, 0xc5, 0xfe,
86848 + 0x7c, 0xa8, 0xd1, 0x2e, 0x32, 0xcf, 0x00, 0xde, 0x8f, 0xda, 0xee, 0x71,
86849 + 0x91, 0x1b, 0x77, 0xe9, 0xcb, 0x71, 0xa3, 0xa2, 0x87, 0x3e, 0xef, 0xe6,
86850 + 0x6f, 0x53, 0x38, 0x12, 0x75, 0x21, 0xcf, 0xd2, 0x69, 0x29, 0xd7, 0x90,
86851 + 0xb1, 0xa1, 0x9d, 0xb4, 0xa1, 0x7c, 0xe6, 0x6f, 0x0f, 0x5b, 0xbe, 0x2a,
86852 + 0xf3, 0x4c, 0xe3, 0x15, 0x72, 0x5a, 0x6d, 0xb9, 0xf0, 0xd9, 0x20, 0xe3,
86853 + 0x62, 0x09, 0xe2, 0x03, 0x5d, 0x38, 0x1f, 0x2a, 0x41, 0xec, 0x90, 0xf8,
86854 + 0xd8, 0x02, 0xc1, 0x52, 0x3e, 0xb7, 0x91, 0x3a, 0x51, 0x89, 0x35, 0xf5,
86855 + 0x9d, 0x76, 0x7b, 0x09, 0x2e, 0x95, 0x31, 0xaf, 0xb5, 0xde, 0xe3, 0x69,
86856 + 0xc5, 0xc1, 0xac, 0x5d, 0xa8, 0xb4, 0x8b, 0xd6, 0x9b, 0x3c, 0x3a, 0xb7,
86857 + 0x96, 0x9c, 0xcf, 0x66, 0xfa, 0xe1, 0xbd, 0xe4, 0x36, 0x2f, 0x4b, 0xfd,
86858 + 0xc8, 0xe6, 0x63, 0x2c, 0x61, 0xce, 0x34, 0x29, 0xfa, 0xfd, 0xeb, 0xb9,
86859 + 0x19, 0xac, 0x78, 0xa5, 0x26, 0x73, 0x76, 0x25, 0xa7, 0xf7, 0xdc, 0x77,
86860 + 0x6d, 0x7d, 0xa1, 0xf2, 0x0b, 0x73, 0x6b, 0x95, 0xc8, 0x77, 0x9d, 0x79,
86861 + 0xda, 0x77, 0xf9, 0xfb, 0x2a, 0xf4, 0x8e, 0xcc, 0x8e, 0x15, 0xe2, 0x87,
86862 + 0x9e, 0xdb, 0xce, 0xd5, 0x95, 0xc5, 0xe5, 0xdd, 0xa9, 0x63, 0xa1, 0x67,
86863 + 0xb8, 0x0f, 0xfe, 0xa5, 0xf5, 0x56, 0xdd, 0x85, 0xdc, 0x97, 0x79, 0x89,
86864 + 0x60, 0xac, 0xc1, 0x18, 0x5f, 0x82, 0x9f, 0x26, 0x25, 0xe6, 0x9a, 0xc8,
86865 + 0xa7, 0xfd, 0x5d, 0xaa, 0xec, 0x7e, 0xbe, 0xcc, 0xe2, 0xd2, 0x25, 0x28,
86866 + 0xa7, 0xbd, 0x0f, 0x8e, 0xdc, 0xcd, 0xb6, 0x6f, 0xc5, 0x85, 0x74, 0x48,
86867 + 0x21, 0x4e, 0xfc, 0x8b, 0xd9, 0xff, 0xf5, 0xcc, 0x98, 0x0b, 0x49, 0x17,
86868 + 0x3e, 0x0a, 0xb5, 0x63, 0xaa, 0x2c, 0x8c, 0xa1, 0x44, 0x01, 0xda, 0xab,
86869 + 0xeb, 0xac, 0x77, 0x0a, 0x6a, 0xe2, 0x1e, 0x5c, 0x8c, 0x3a, 0xd1, 0x38,
86870 + 0xd7, 0x63, 0xd5, 0xd3, 0x6c, 0xf4, 0x85, 0x77, 0xa2, 0x11, 0xcb, 0xe7,
86871 + 0x66, 0xc7, 0x8c, 0x3c, 0x6d, 0x19, 0x1e, 0xca, 0xe2, 0xfa, 0xc1, 0xc4,
86872 + 0xe7, 0xc4, 0x9d, 0x52, 0xa3, 0x22, 0x5c, 0x82, 0x7b, 0x87, 0x0c, 0xc1,
86873 + 0x64, 0xa3, 0x24, 0xac, 0xcd, 0xdc, 0xa7, 0x94, 0xa0, 0x69, 0x44, 0x30,
86874 + 0x5e, 0x7c, 0x35, 0x4d, 0x5f, 0x6d, 0xe3, 0x1e, 0x75, 0xa2, 0x6e, 0xbf,
86875 + 0xa5, 0x57, 0xd5, 0xae, 0x98, 0x5d, 0x57, 0xf4, 0x88, 0xce, 0x18, 0xd7,
86876 + 0xf9, 0x10, 0xed, 0x7e, 0x26, 0xe4, 0x6d, 0xaf, 0xb0, 0x6b, 0x1d, 0xef,
86877 + 0x29, 0x41, 0x4c, 0x8c, 0x03, 0x03, 0x87, 0x03, 0xf8, 0x20, 0x21, 0x9c,
86878 + 0x3f, 0x80, 0x5f, 0x4d, 0x06, 0xf1, 0x2e, 0x63, 0x53, 0x41, 0xdc, 0x1b,
86879 + 0x79, 0x8e, 0x39, 0xdd, 0xfb, 0xfc, 0x9e, 0x1f, 0xd7, 0x71, 0x8d, 0xfa,
86880 + 0x73, 0xc6, 0x1b, 0x70, 0x65, 0xf2, 0x01, 0x5c, 0xdd, 0xaf, 0xe0, 0x84,
86881 + 0xf6, 0x00, 0x2e, 0x8f, 0x75, 0x62, 0xd9, 0x7e, 0x39, 0x87, 0x76, 0x2c,
86882 + 0xa4, 0x32, 0x36, 0x3c, 0x53, 0x6b, 0x76, 0xbd, 0xa8, 0xd7, 0x41, 0x2f,
86883 + 0xf7, 0xea, 0xed, 0xcc, 0x99, 0x04, 0xd3, 0x23, 0x36, 0xd9, 0x33, 0xd9,
86884 + 0xbb, 0x4e, 0x5c, 0xb5, 0x70, 0xfc, 0xee, 0xd8, 0x70, 0x0b, 0xc3, 0xe5,
86885 + 0x39, 0x82, 0x27, 0x0b, 0xf1, 0x7d, 0x26, 0xab, 0x3d, 0xbc, 0xcf, 0x45,
86886 + 0xec, 0x7b, 0x36, 0x5a, 0x80, 0xfc, 0xaa, 0x52, 0x2b, 0x97, 0x29, 0x8c,
86887 + 0x07, 0x70, 0x96, 0xba, 0x5b, 0x53, 0xe5, 0xe5, 0x77, 0x89, 0xbb, 0x41,
86888 + 0xe6, 0x2d, 0x15, 0xf8, 0xe0, 0xb6, 0x78, 0xfb, 0x7d, 0xf3, 0x49, 0x0b,
86889 + 0x9f, 0xeb, 0xe7, 0x09, 0xff, 0x7a, 0x3d, 0xf1, 0xeb, 0x1a, 0xc1, 0x69,
86890 + 0xa9, 0x21, 0x96, 0x6a, 0xda, 0x96, 0xbf, 0x80, 0xbc, 0x6f, 0x75, 0xe2,
86891 + 0x3f, 0x17, 0x93, 0x17, 0xbf, 0x18, 0xaa, 0x33, 0xca, 0xa0, 0xf1, 0xbe,
86892 + 0xa9, 0x65, 0x2a, 0x56, 0xf1, 0xaf, 0x9f, 0xf7, 0x05, 0x29, 0xc7, 0x75,
86893 + 0x33, 0xa5, 0xfa, 0xf8, 0xef, 0x05, 0x8c, 0xef, 0xdb, 0x71, 0x3e, 0x56,
86894 + 0xdf, 0x7e, 0x58, 0xb9, 0x66, 0x1a, 0x55, 0xb5, 0xfc, 0xad, 0x12, 0x17,
86895 + 0xa2, 0xde, 0xa9, 0x31, 0xd4, 0x7b, 0x66, 0x94, 0x83, 0xa6, 0xa1, 0xca,
86896 + 0xfe, 0xc8, 0x7a, 0x65, 0xfc, 0x62, 0x5e, 0xbf, 0x34, 0xcb, 0x0e, 0x6f,
86897 + 0xe5, 0x5d, 0xce, 0x9b, 0xf6, 0x27, 0xbc, 0xc4, 0x6c, 0x1a, 0xd5, 0xeb,
86898 + 0xd5, 0x1e, 0x62, 0x41, 0x44, 0xbd, 0x9b, 0xfd, 0x15, 0xd0, 0xfe, 0xc2,
86899 + 0xcc, 0x23, 0x4b, 0xa0, 0x5a, 0xf1, 0xa9, 0x15, 0xc9, 0x91, 0xd9, 0xdc,
86900 + 0x52, 0xec, 0x2e, 0xc3, 0x53, 0xdb, 0xcb, 0xba, 0x4f, 0x3a, 0x89, 0x45,
86901 + 0x09, 0xe2, 0x78, 0x9c, 0x38, 0x9e, 0x4f, 0x1c, 0xbf, 0xbe, 0xaf, 0x10,
86902 + 0xe7, 0xf7, 0x35, 0x22, 0x5d, 0x26, 0x63, 0xec, 0x70, 0x72, 0x75, 0xa9,
86903 + 0xec, 0x79, 0x85, 0x9a, 0xc1, 0x95, 0x72, 0x8e, 0x13, 0x82, 0x5f, 0x79,
86904 + 0x71, 0xe6, 0x59, 0xad, 0x76, 0x38, 0xac, 0x33, 0xf6, 0x73, 0x6e, 0xb3,
86905 + 0x3f, 0x97, 0x96, 0x8f, 0x96, 0x4a, 0xc1, 0x87, 0xd7, 0xe7, 0x49, 0x1c,
86906 + 0x7d, 0x9d, 0xb2, 0x9c, 0xa4, 0x4d, 0x6f, 0xd4, 0x57, 0x48, 0x5f, 0x8f,
86907 + 0xf7, 0xcb, 0x38, 0xc9, 0x6d, 0x4c, 0xec, 0xa6, 0x85, 0xd5, 0x55, 0x99,
86908 + 0x48, 0xe8, 0x61, 0xc6, 0xac, 0x10, 0x22, 0x65, 0x41, 0xc6, 0x2a, 0xf9,
86909 + 0xae, 0xe2, 0x0a, 0xf3, 0xb2, 0xf1, 0xa0, 0x82, 0x8f, 0xbe, 0x22, 0x5c,
86910 + 0xc0, 0xaf, 0x9f, 0x57, 0x84, 0x0b, 0xc8, 0x78, 0xc1, 0x88, 0x52, 0x0b,
86911 + 0x23, 0xf2, 0x2d, 0x5e, 0x34, 0xd7, 0xc2, 0x16, 0x79, 0x47, 0xa9, 0x86,
86912 + 0x71, 0xe7, 0xfe, 0x44, 0xfd, 0x94, 0xcf, 0x4e, 0x8e, 0xf6, 0x27, 0x5f,
86913 + 0x21, 0x37, 0xb3, 0x38, 0x02, 0xf1, 0x3e, 0x87, 0x0d, 0x72, 0xee, 0x76,
86914 + 0xb6, 0x3e, 0x72, 0xe7, 0x72, 0x3d, 0x19, 0xac, 0x2c, 0x15, 0x2e, 0xf7,
86915 + 0xff, 0xcc, 0xd6, 0xdb, 0xe4, 0xcf, 0xe1, 0xc8, 0x3f, 0xf0, 0xbb, 0x8c,
86916 + 0x17, 0xbf, 0xa3, 0x5d, 0xc4, 0x7f, 0x62, 0x3e, 0x6d, 0xf1, 0xb9, 0x97,
86917 + 0xe7, 0xc9, 0xf9, 0x43, 0xc7, 0xe0, 0xd0, 0x3c, 0x39, 0x6f, 0x65, 0x9b,
86918 + 0xc5, 0x0b, 0x32, 0xb1, 0xf6, 0x5d, 0x73, 0xad, 0x25, 0xeb, 0x91, 0xec,
86919 + 0x7d, 0x92, 0x43, 0x8b, 0x2c, 0x0a, 0x5e, 0xd1, 0xea, 0xd5, 0xb3, 0x28,
86920 + 0x16, 0x3c, 0x89, 0x48, 0x0f, 0xb3, 0x50, 0xf3, 0xb9, 0x8f, 0xf0, 0x6f,
86921 + 0x3f, 0xaf, 0xbf, 0xa1, 0x39, 0x1a, 0xb7, 0x42, 0xfa, 0xb6, 0x36, 0xee,
86922 + 0x55, 0xbd, 0xfb, 0x2c, 0xfc, 0x91, 0x7c, 0x65, 0xc6, 0x6c, 0xaf, 0x94,
86923 + 0x7b, 0x32, 0xfd, 0x5b, 0x28, 0x17, 0xad, 0xfa, 0x49, 0xc6, 0x66, 0x16,
86924 + 0xd0, 0x66, 0x04, 0xbb, 0x84, 0x8b, 0x2c, 0xe1, 0xda, 0x55, 0x8c, 0x4c,
86925 + 0x02, 0x79, 0x83, 0x2e, 0x8b, 0x1b, 0xa9, 0xb5, 0xb5, 0x9e, 0xcd, 0xf8,
86926 + 0xe7, 0x79, 0xf2, 0xee, 0xd1, 0x0e, 0x1d, 0xf7, 0xd8, 0xf0, 0xf6, 0x3d,
86927 + 0xb6, 0xf0, 0xca, 0x6f, 0x3d, 0xd4, 0x90, 0x37, 0x5f, 0xde, 0xff, 0x20,
86928 + 0xc3, 0x93, 0xfa, 0xad, 0x5b, 0x7a, 0x8d, 0xab, 0x19, 0xc3, 0x86, 0x99,
86929 + 0xe3, 0xaf, 0x0e, 0xfe, 0xd6, 0xfc, 0xa6, 0x23, 0xe2, 0xb1, 0xa3, 0xd6,
86930 + 0xd3, 0x8b, 0x1b, 0x66, 0xaa, 0x52, 0xae, 0xcb, 0x1c, 0xf2, 0x6e, 0xa1,
86931 + 0xf4, 0x4b, 0x4c, 0xf3, 0xde, 0x5a, 0x93, 0xf9, 0xb3, 0x6d, 0x95, 0x9d,
86932 + 0x7e, 0x91, 0xaf, 0x5d, 0x36, 0xeb, 0xaa, 0x6b, 0xdd, 0x36, 0xa5, 0x8e,
86933 + 0xd6, 0x51, 0x89, 0x57, 0x69, 0xbf, 0xaf, 0x4e, 0x4a, 0xcc, 0x53, 0x71,
86934 + 0x94, 0x7e, 0x3a, 0x56, 0xe7, 0xeb, 0xbc, 0xca, 0x5c, 0xf2, 0x43, 0x72,
86935 + 0xfc, 0x37, 0x35, 0x6f, 0xfb, 0x19, 0xa9, 0x3b, 0x86, 0x1c, 0x38, 0x17,
86936 + 0xbc, 0x61, 0xd5, 0x82, 0x63, 0x87, 0x54, 0x0c, 0x27, 0x32, 0xfe, 0xfe,
86937 + 0x1a, 0xfd, 0xf8, 0xd6, 0xd9, 0x05, 0x1d, 0x3d, 0x43, 0xe2, 0x1f, 0x0d,
86938 + 0x96, 0x1f, 0xdd, 0xaa, 0x15, 0x09, 0x5e, 0x8b, 0x5f, 0x6c, 0x90, 0xde,
86939 + 0x9d, 0x91, 0x02, 0xb9, 0xcc, 0xe0, 0x6a, 0x72, 0x60, 0x89, 0xb1, 0x01,
86940 + 0xe6, 0xbb, 0x0e, 0xfa, 0xcf, 0x19, 0xe6, 0x1e, 0x94, 0x2d, 0x6c, 0x9a,
86941 + 0xef, 0x32, 0x17, 0x1b, 0x41, 0xbd, 0x7a, 0x0a, 0xeb, 0xc8, 0x63, 0xc9,
86942 + 0x71, 0x26, 0x9b, 0xb1, 0xc7, 0xca, 0xa5, 0x7c, 0xea, 0xc3, 0xca, 0x52,
86943 + 0xae, 0xbf, 0x19, 0xdd, 0x63, 0x0b, 0x70, 0x80, 0xeb, 0x7a, 0x44, 0xff,
86944 + 0x2b, 0x94, 0x0f, 0x75, 0x77, 0x96, 0x53, 0x1f, 0x9f, 0x86, 0x8c, 0x0e,
86945 + 0x62, 0xfa, 0x96, 0x53, 0x4a, 0xfd, 0xfa, 0x98, 0xf2, 0x4d, 0xee, 0x87,
86946 + 0xd4, 0x47, 0x3c, 0xcc, 0xd3, 0x1f, 0x61, 0x3c, 0xfb, 0x33, 0xec, 0x56,
86947 + 0x95, 0x26, 0x5b, 0x58, 0x38, 0x22, 0xfc, 0xaa, 0x75, 0x76, 0xf0, 0xbf,
86948 + 0x40, 0x9f, 0xdb, 0xc0, 0x6b, 0x12, 0xd7, 0xe5, 0x5e, 0x39, 0x37, 0xde,
86949 + 0x89, 0x93, 0x69, 0xda, 0x75, 0xb4, 0x0f, 0xa7, 0xd2, 0xf2, 0x4c, 0xe1,
86950 + 0x58, 0x01, 0xc4, 0x86, 0xec, 0x98, 0xd0, 0x7d, 0x91, 0x52, 0xea, 0xa5,
86951 + 0x30, 0xe4, 0x8d, 0xac, 0x53, 0x02, 0xe4, 0x72, 0x69, 0x9c, 0xdb, 0xeb,
86952 + 0x6d, 0xaf, 0x63, 0xde, 0x18, 0x9d, 0x84, 0xfa, 0xdc, 0xf2, 0x34, 0xce,
86953 + 0x8e, 0x3e, 0x0e, 0x4f, 0xb5, 0xd7, 0xb3, 0x5a, 0x69, 0xc1, 0x8e, 0xc9,
86954 + 0x7f, 0xaf, 0xc6, 0xe4, 0xe1, 0xb3, 0x5b, 0x60, 0x50, 0xf7, 0xbb, 0xf0,
86955 + 0xad, 0xf9, 0xe2, 0xf3, 0xbd, 0x93, 0xc5, 0x58, 0xc4, 0x78, 0xf4, 0xb2,
86956 + 0x15, 0x67, 0x33, 0x7e, 0x54, 0xa3, 0x7d, 0x64, 0x3e, 0x95, 0x8d, 0xe1,
86957 + 0x7f, 0x58, 0x5f, 0x3f, 0x34, 0x23, 0xaa, 0xe8, 0x4b, 0xc6, 0xd5, 0xa0,
86958 + 0x80, 0xf3, 0xec, 0xce, 0xc6, 0xeb, 0x32, 0xed, 0x9f, 0xcc, 0xc7, 0xad,
86959 + 0x39, 0x56, 0xce, 0x97, 0x44, 0x61, 0xa7, 0x95, 0xe7, 0xcb, 0xba, 0x75,
86960 + 0x7c, 0x16, 0x95, 0x5a, 0x87, 0x8a, 0x53, 0xba, 0xe0, 0x48, 0x0b, 0x7d,
86961 + 0xd5, 0x89, 0x2d, 0x41, 0xba, 0xa3, 0x55, 0xf7, 0x9f, 0xc6, 0x9e, 0xe4,
86962 + 0xbf, 0x9a, 0xcf, 0xd3, 0x8e, 0xd6, 0x90, 0xc3, 0x78, 0x88, 0x03, 0x1b,
86963 + 0x43, 0x8f, 0x90, 0x87, 0x72, 0xcd, 0x09, 0x07, 0x31, 0x48, 0x41, 0xa2,
86964 + 0x91, 0xfe, 0x1f, 0x5a, 0x82, 0x29, 0xeb, 0xfe, 0x4f, 0xe7, 0x65, 0x6a,
86965 + 0x8b, 0x67, 0xe6, 0x67, 0x72, 0x43, 0xd1, 0xff, 0x7f, 0x44, 0x7f, 0xaf,
86966 + 0x99, 0x9e, 0x72, 0xd1, 0x9f, 0x03, 0x6e, 0xc6, 0xad, 0x03, 0xbc, 0xe7,
86967 + 0xc2, 0x5e, 0x07, 0x06, 0xb5, 0x16, 0x0c, 0x4e, 0xc2, 0xf3, 0x29, 0xef,
86968 + 0xf9, 0xf9, 0x68, 0xc7, 0xfc, 0x0c, 0x57, 0x78, 0x1b, 0xdd, 0xd1, 0x17,
86969 + 0xcc, 0x55, 0xe5, 0xb2, 0x5e, 0x39, 0xaf, 0xd3, 0xca, 0xfb, 0x73, 0x75,
86970 + 0xbe, 0xcd, 0xe6, 0x13, 0x56, 0x9c, 0x78, 0x71, 0xbe, 0xf4, 0xd7, 0x5e,
86971 + 0x4f, 0x98, 0xb8, 0xa2, 0xf7, 0x58, 0xb9, 0xb9, 0x60, 0x43, 0x6f, 0x42,
86972 + 0xf6, 0x56, 0x64, 0xfb, 0x66, 0x56, 0x1f, 0x13, 0x55, 0xb7, 0xcb, 0xbd,
86973 + 0x2a, 0x6b, 0xcb, 0xd2, 0xdf, 0xce, 0xf1, 0x7e, 0xb1, 0x65, 0xb1, 0x63,
86974 + 0xeb, 0xbd, 0x96, 0xa4, 0xbc, 0xd3, 0xb9, 0x41, 0xfd, 0x1d, 0x9f, 0x21,
86975 + 0x75, 0x96, 0x16, 0xce, 0x61, 0x9a, 0x9b, 0xf5, 0x7a, 0xcf, 0x29, 0xfc,
86976 + 0x31, 0x6d, 0x5b, 0xc7, 0xae, 0x21, 0xa9, 0xc3, 0x7a, 0x14, 0xc7, 0xbe,
86977 + 0x75, 0xb8, 0xc2, 0xf8, 0xbf, 0xc7, 0xb2, 0x43, 0xc1, 0x15, 0x91, 0x43,
86978 + 0xb0, 0xa5, 0x8d, 0x71, 0x5c, 0x6a, 0xdd, 0x46, 0xa4, 0x26, 0xdc, 0xa9,
86979 + 0x7c, 0x58, 0xd7, 0x89, 0x63, 0x21, 0xc3, 0x2c, 0xd5, 0xfc, 0xeb, 0x6b,
86980 + 0x6c, 0x28, 0x98, 0x6c, 0xc8, 0xc7, 0xf1, 0x90, 0xf0, 0x47, 0xb8, 0xd2,
86981 + 0x69, 0xaf, 0x31, 0xc7, 0xae, 0xba, 0xbe, 0x97, 0xce, 0x62, 0xa5, 0xad,
86982 + 0x7e, 0xbe, 0xe4, 0x50, 0x49, 0x0b, 0x47, 0xbe, 0x8a, 0x07, 0xad, 0xbd,
86983 + 0x55, 0x19, 0x43, 0xa5, 0x0e, 0x7c, 0x2c, 0x74, 0x2d, 0x2a, 0x98, 0x62,
86984 + 0x36, 0x35, 0x87, 0xea, 0xd5, 0x5d, 0xb8, 0x87, 0xd8, 0xd5, 0x84, 0x73,
86985 + 0xba, 0xf4, 0x3f, 0x8c, 0x6f, 0x3a, 0xac, 0xb3, 0x34, 0x47, 0x43, 0x3b,
86986 + 0xa2, 0x2b, 0x71, 0x60, 0xc8, 0x50, 0x9c, 0x61, 0x6f, 0x24, 0x46, 0x2e,
86987 + 0xc4, 0x1c, 0xdd, 0xaa, 0x03, 0x4a, 0x8d, 0x61, 0xb8, 0xa1, 0x13, 0xbb,
86988 + 0xf4, 0x7c, 0xf4, 0xea, 0x91, 0x82, 0x9e, 0xe5, 0x5d, 0x38, 0xa8, 0x17,
86989 + 0x1b, 0x8b, 0xc2, 0x06, 0x31, 0x5d, 0xdb, 0x92, 0x84, 0xbf, 0xe5, 0x32,
86990 + 0x39, 0xc7, 0x49, 0x78, 0x3b, 0x9a, 0xec, 0xc4, 0xdc, 0x15, 0x0e, 0x57,
86991 + 0x6c, 0xbc, 0x11, 0x89, 0xc9, 0x4a, 0xd7, 0xee, 0xf1, 0x20, 0xe2, 0x93,
86992 + 0xdc, 0x6f, 0xe6, 0xba, 0x8e, 0xf1, 0x95, 0xe4, 0xa0, 0xa2, 0x47, 0x3b,
86993 + 0x6d, 0xb1, 0x0e, 0xcf, 0xb5, 0x5e, 0x32, 0x9f, 0xf1, 0x0b, 0x7e, 0x2e,
86994 + 0xc0, 0x56, 0xd5, 0x67, 0x71, 0xca, 0x88, 0xed, 0x0f, 0xf9, 0x87, 0x9d,
86995 + 0x36, 0xf7, 0x7d, 0xd3, 0xf3, 0x75, 0xd1, 0x9b, 0x63, 0x01, 0x0a, 0x1f,
86996 + 0x21, 0x7e, 0xca, 0xbf, 0x45, 0x77, 0xa2, 0x43, 0x13, 0x9b, 0x74, 0xa9,
86997 + 0xf1, 0x35, 0xd0, 0x67, 0xdc, 0x78, 0x47, 0xbd, 0xb5, 0x0f, 0xcf, 0xea,
86998 + 0x3e, 0x7d, 0x0c, 0x52, 0xdb, 0x5b, 0xc1, 0x71, 0x52, 0x83, 0x69, 0xc4,
86999 + 0x4b, 0xd9, 0x9c, 0xc3, 0x63, 0x2b, 0x22, 0xee, 0xe6, 0xe2, 0x88, 0x5c,
87000 + 0xf7, 0x26, 0x23, 0xb4, 0xd3, 0x6d, 0xc1, 0x19, 0x33, 0x52, 0x6e, 0x74,
87001 + 0xca, 0xf9, 0x15, 0x77, 0x78, 0xba, 0xd3, 0x5d, 0xe7, 0xed, 0x98, 0x51,
87002 + 0x80, 0x73, 0x31, 0xc6, 0x61, 0xeb, 0x7f, 0xb1, 0x28, 0x73, 0x3b, 0x31,
87003 + 0x12, 0x5c, 0x88, 0xf6, 0x36, 0x79, 0x56, 0x33, 0xfa, 0xf6, 0x9b, 0x66,
87004 + 0x71, 0xc8, 0xa7, 0xa6, 0xe1, 0xc4, 0xc3, 0x41, 0x3b, 0x2e, 0xa9, 0x26,
87005 + 0x1c, 0xa1, 0x7f, 0x35, 0xc7, 0x19, 0x1f, 0x47, 0xe9, 0x27, 0xbb, 0x69,
87006 + 0x63, 0xf2, 0xbe, 0x8f, 0x9f, 0x7e, 0x12, 0xa7, 0x9f, 0x9c, 0x0b, 0xdd,
87007 + 0x97, 0x7d, 0x5f, 0x50, 0x23, 0xaf, 0x98, 0x46, 0xd3, 0x90, 0x8a, 0x4f,
87008 + 0x57, 0x4c, 0x23, 0x34, 0x92, 0x93, 0x5d, 0xfc, 0x32, 0x27, 0xbf, 0xf4,
87009 + 0x11, 0x45, 0x76, 0x91, 0x51, 0xd6, 0x22, 0xff, 0xce, 0x5d, 0xcb, 0xfd,
87010 + 0x26, 0x71, 0xd6, 0x89, 0x56, 0x6b, 0x6d, 0x7f, 0x56, 0x93, 0xc1, 0x8c,
87011 + 0xdc, 0x9a, 0x2e, 0xb9, 0x6f, 0xff, 0x7e, 0xe2, 0x8e, 0xeb, 0x2b, 0xee,
87012 + 0xb8, 0xbe, 0x71, 0xde, 0xed, 0xdf, 0x73, 0x3e, 0x71, 0x4b, 0xaf, 0x1d,
87013 + 0xba, 0x6f, 0xea, 0x18, 0xd7, 0x3a, 0x67, 0xc9, 0x98, 0x79, 0xa9, 0x4c,
87014 + 0x64, 0x91, 0x3c, 0x36, 0x23, 0xeb, 0xaa, 0xf1, 0xd9, 0xb2, 0xbe, 0x95,
87015 + 0xed, 0x19, 0x58, 0x67, 0x7c, 0xe9, 0x37, 0x1a, 0x7e, 0x78, 0xdb, 0xb9,
87016 + 0x43, 0xb1, 0xb5, 0x80, 0xd2, 0x17, 0x93, 0xf7, 0x33, 0x0b, 0xad, 0x77,
87017 + 0xac, 0x55, 0xbf, 0x81, 0x22, 0xbf, 0xb6, 0x65, 0x8e, 0xad, 0x0b, 0xce,
87018 + 0xa5, 0x5a, 0xc7, 0xb7, 0x94, 0x24, 0xe2, 0xe3, 0xde, 0xc0, 0x18, 0x75,
87019 + 0x15, 0x1b, 0xbf, 0xce, 0x5c, 0xbb, 0x0b, 0xcf, 0x85, 0x1c, 0x46, 0x61,
87020 + 0x58, 0xce, 0x82, 0xae, 0xc2, 0xae, 0x91, 0xbf, 0xc2, 0xe6, 0xa4, 0x70,
87021 + 0xfc, 0x05, 0xe8, 0x99, 0xb4, 0xe1, 0x04, 0xed, 0xbb, 0x8f, 0xcf, 0x21,
87022 + 0xfe, 0xb9, 0x53, 0x90, 0xf7, 0x6b, 0x1a, 0x98, 0x37, 0xeb, 0xd6, 0x67,
87023 + 0xc7, 0xc8, 0xcf, 0xb0, 0x39, 0x6a, 0xe2, 0x53, 0x9d, 0xb1, 0x47, 0x13,
87024 + 0xf9, 0x1c, 0xd0, 0xca, 0x5b, 0x2d, 0x2c, 0x7d, 0x32, 0xce, 0xfd, 0xac,
87025 + 0x16, 0x5f, 0x5d, 0x49, 0x9f, 0x55, 0xf0, 0x99, 0xf4, 0x27, 0xcb, 0x29,
87026 + 0x33, 0xb9, 0xe1, 0xf1, 0xe8, 0x76, 0x8c, 0x5a, 0xfd, 0x67, 0xad, 0xaf,
87027 + 0xc6, 0x1e, 0x79, 0xb1, 0x8c, 0x3c, 0x3b, 0xa1, 0xfb, 0xdb, 0x2f, 0x28,
87028 + 0xf0, 0x94, 0x84, 0xfd, 0x8c, 0x33, 0x5f, 0xe2, 0x37, 0xba, 0xd4, 0xd8,
87029 + 0x74, 0xd7, 0x5a, 0xda, 0xfb, 0xbe, 0x91, 0x80, 0x55, 0x33, 0xf8, 0xe1,
87030 + 0x5d, 0x6b, 0x1a, 0x99, 0x77, 0xab, 0x33, 0xf5, 0xc7, 0x9f, 0xe1, 0x48,
87031 + 0xda, 0x85, 0xa7, 0xe2, 0x1e, 0x65, 0xd1, 0x3e, 0x15, 0x0f, 0xc5, 0xbd,
87032 + 0x53, 0x4d, 0x76, 0xf2, 0x8f, 0x65, 0x73, 0x38, 0x9f, 0x82, 0x1f, 0x2c,
87033 + 0x95, 0x58, 0xf0, 0x47, 0x30, 0xaa, 0x23, 0x9c, 0x13, 0xc5, 0x79, 0xcb,
87034 + 0xbd, 0xea, 0x11, 0x9b, 0xcf, 0xfd, 0x1b, 0xec, 0x80, 0x7d, 0xfc, 0x11,
87035 + 0x74, 0x53, 0xfe, 0x35, 0x71, 0xe9, 0x69, 0xd5, 0x03, 0x65, 0xcd, 0xd8,
87036 + 0x3d, 0x26, 0xbe, 0x09, 0xa3, 0x2a, 0x0c, 0x4f, 0x65, 0xd8, 0xbf, 0x10,
87037 + 0x85, 0x5f, 0x92, 0x6b, 0x4f, 0x4b, 0xfe, 0xb9, 0xa5, 0xd4, 0x66, 0x32,
87038 + 0x7f, 0xb9, 0x2f, 0xdb, 0xab, 0x58, 0x89, 0x1d, 0x43, 0x52, 0x87, 0x27,
87039 + 0x6e, 0xeb, 0xcc, 0x83, 0xca, 0xb4, 0xc0, 0x46, 0x9b, 0xf4, 0x87, 0xb6,
87040 + 0xc3, 0x17, 0xdb, 0x8e, 0x40, 0x4c, 0x7c, 0x56, 0x53, 0x3b, 0x10, 0x39,
87041 + 0x2b, 0xb5, 0xbf, 0x45, 0x21, 0x3f, 0xe5, 0xf2, 0xf7, 0x55, 0xda, 0x75,
87042 + 0xd7, 0x6b, 0x13, 0x2a, 0xa6, 0xd4, 0x4c, 0x1e, 0x39, 0x96, 0xd4, 0xd6,
87043 + 0xe7, 0xdb, 0xe4, 0x0c, 0xc5, 0x55, 0xeb, 0x3d, 0xeb, 0x88, 0xed, 0x9f,
87044 + 0x89, 0x47, 0xcd, 0x18, 0xd8, 0xff, 0x3e, 0x63, 0x90, 0x3c, 0xe3, 0x77,
87045 + 0xcc, 0xaf, 0x9d, 0x58, 0xdd, 0xe6, 0xc1, 0x83, 0x71, 0xa9, 0x9d, 0xae,
87046 + 0xaf, 0xca, 0x9c, 0x01, 0x91, 0xef, 0x0e, 0x74, 0xe8, 0x04, 0xd9, 0xea,
87047 + 0x2f, 0xcc, 0x4a, 0x2b, 0x2f, 0xfd, 0xbf, 0x19, 0x9b, 0x49, 0xe4, 0x2d,
87048 + 0x14, 0x1f, 0xef, 0x9d, 0x64, 0x02, 0x69, 0xd9, 0x5d, 0x15, 0xbf, 0xcb,
87049 + 0x5c, 0xda, 0x81, 0xed, 0xd8, 0x56, 0x25, 0x7c, 0xe6, 0xc9, 0x89, 0xd9,
87050 + 0xf7, 0xe7, 0xea, 0x32, 0x95, 0x59, 0x4e, 0x95, 0xb3, 0x37, 0xe9, 0x05,
87051 + 0x46, 0x94, 0x27, 0xa2, 0x2d, 0xca, 0xda, 0xa8, 0xf4, 0x03, 0x6d, 0xd1,
87052 + 0x22, 0x72, 0x18, 0xdf, 0x52, 0x13, 0xdf, 0x0e, 0x1d, 0x57, 0x76, 0x5a,
87053 + 0xe7, 0x66, 0xe5, 0xac, 0x2b, 0x50, 0x3e, 0xd1, 0xac, 0xec, 0x8a, 0x7e,
87054 + 0x62, 0x6e, 0xb4, 0x7a, 0xf0, 0x79, 0xd6, 0x79, 0x9c, 0xfc, 0x09, 0x17,
87055 + 0xca, 0x8e, 0xc8, 0xf9, 0x41, 0x0d, 0x15, 0x13, 0x8f, 0x91, 0xb7, 0x0a,
87056 + 0xd7, 0x31, 0x5a, 0x1c, 0xd6, 0xb9, 0xb6, 0xe6, 0x97, 0x72, 0xe7, 0xda,
87057 + 0x1c, 0x31, 0x79, 0x1b, 0xd9, 0xfa, 0x8f, 0xb9, 0xd2, 0x51, 0xe6, 0x4a,
87058 + 0x66, 0xd3, 0xb7, 0x43, 0xc6, 0xee, 0x0a, 0x78, 0x03, 0xe5, 0x36, 0xc3,
87059 + 0x94, 0x7a, 0xce, 0x6b, 0x24, 0x8c, 0xeb, 0x6a, 0x0d, 0x3c, 0x5c, 0x2b,
87060 + 0xef, 0x1f, 0xca, 0xbb, 0xc7, 0x5d, 0x38, 0x1a, 0xea, 0xc2, 0x2f, 0xf5,
87061 + 0x2e, 0xec, 0xd1, 0xe5, 0x4c, 0x43, 0x31, 0x65, 0xd5, 0xa6, 0xa2, 0xd0,
87062 + 0xf4, 0xb4, 0xa2, 0x9d, 0xb9, 0x0e, 0xef, 0x01, 0x9f, 0xe2, 0x35, 0x56,
87063 + 0x29, 0x1a, 0xae, 0x8e, 0x7b, 0x67, 0x4a, 0xe9, 0x03, 0x37, 0xc6, 0x03,
87064 + 0x98, 0x21, 0xae, 0x26, 0x27, 0xe5, 0xfc, 0xc9, 0x02, 0x0c, 0x4d, 0x7e,
87065 + 0x4d, 0xb8, 0x81, 0x41, 0x4c, 0xb2, 0xce, 0x48, 0x3e, 0x2f, 0xbd, 0x4e,
87066 + 0x67, 0x30, 0xcb, 0x61, 0x0c, 0x65, 0x53, 0x43, 0x09, 0x6e, 0x30, 0x3a,
87067 + 0xfd, 0x6d, 0xba, 0x93, 0xf9, 0x1c, 0xde, 0xa8, 0x81, 0xfd, 0x3b, 0x6e,
87068 + 0xd4, 0x25, 0xe7, 0xe0, 0x44, 0x5d, 0x39, 0xf2, 0x70, 0x6c, 0xf4, 0x45,
87069 + 0x72, 0xfc, 0xee, 0xf6, 0x52, 0xe6, 0xa7, 0x13, 0xa3, 0x4e, 0xa4, 0x52,
87070 + 0x52, 0x73, 0xb0, 0x7a, 0x96, 0xd3, 0x0e, 0xfa, 0x52, 0x7f, 0x02, 0x75,
87071 + 0x35, 0x61, 0x7f, 0xb2, 0xc6, 0xae, 0x72, 0x8e, 0x4a, 0xa4, 0xd2, 0x1a,
87072 + 0x3f, 0x01, 0x7e, 0x82, 0xfc, 0x34, 0xe2, 0xdb, 0xf4, 0xd9, 0x32, 0xe2,
87073 + 0xed, 0xf7, 0xd3, 0x25, 0xf8, 0x24, 0xa9, 0x05, 0x74, 0xda, 0xc1, 0x28,
87074 + 0x73, 0x04, 0xc3, 0xd2, 0x53, 0x09, 0xae, 0xd3, 0x4f, 0x5f, 0x0e, 0x95,
87075 + 0xc0, 0x4c, 0xdd, 0x2d, 0x27, 0x94, 0xdc, 0x16, 0x6a, 0x61, 0x58, 0xf8,
87076 + 0xe2, 0x31, 0x25, 0x95, 0x3d, 0xf3, 0xf5, 0xea, 0x38, 0xda, 0xcb, 0xc3,
87077 + 0xae, 0xe0, 0xea, 0xb8, 0xfd, 0x13, 0x79, 0x9f, 0x75, 0x43, 0x83, 0xbc,
87078 + 0xf3, 0xe4, 0x0a, 0x3e, 0x3d, 0xe1, 0x0a, 0xae, 0x8f, 0x1f, 0x53, 0x28,
87079 + 0xcf, 0x81, 0x1a, 0xbb, 0x2b, 0xf8, 0xe4, 0xc4, 0xb1, 0x85, 0x99, 0xbc,
87080 + 0x0f, 0xca, 0xd3, 0xb5, 0x06, 0x6d, 0x8c, 0x79, 0xef, 0x32, 0xe9, 0xcb,
87081 + 0x68, 0x9d, 0x57, 0xec, 0x85, 0x46, 0x4d, 0xd8, 0xeb, 0xa9, 0xb1, 0xcb,
87082 + 0xd9, 0x90, 0x69, 0xc4, 0x93, 0xf2, 0xae, 0x97, 0xd8, 0xfe, 0x3f, 0x99,
87083 + 0x46, 0x99, 0x9c, 0xf5, 0xe8, 0x44, 0x5c, 0x2b, 0x67, 0xee, 0x24, 0x67,
87084 + 0xcd, 0x8f, 0x86, 0xa2, 0xb1, 0x62, 0x79, 0x77, 0xb6, 0xe9, 0x7b, 0x21,
87085 + 0x6f, 0xcb, 0xa0, 0x62, 0x3c, 0x5e, 0x04, 0xd9, 0xd7, 0x2e, 0xe2, 0xb7,
87086 + 0xa6, 0x3a, 0x15, 0x6f, 0x63, 0x0f, 0x02, 0x38, 0x91, 0x16, 0x5d, 0x07,
87087 + 0xe5, 0x8c, 0xba, 0xa5, 0xeb, 0x5b, 0x67, 0xae, 0x33, 0xb6, 0xb3, 0x2d,
87088 + 0xea, 0xe0, 0x5f, 0xb1, 0x17, 0x1b, 0x63, 0x0a, 0xe3, 0x8a, 0x65, 0x33,
87089 + 0xb7, 0x64, 0x5c, 0x57, 0xdb, 0x85, 0xc9, 0x50, 0xa1, 0xbc, 0x77, 0xcd,
87090 + 0xb8, 0xee, 0x0d, 0x7c, 0xa2, 0x58, 0xf1, 0xdc, 0x28, 0x62, 0x9c, 0x7d,
87091 + 0x61, 0xfc, 0xef, 0xcc, 0xf6, 0x6a, 0xc1, 0x2b, 0x3b, 0xc7, 0x5e, 0xc7,
87092 + 0x6b, 0xa9, 0x5b, 0xe3, 0x5a, 0x38, 0xae, 0x90, 0xe3, 0x8a, 0xc2, 0x92,
87093 + 0x3b, 0x7a, 0xf5, 0xb5, 0x8a, 0xe6, 0x29, 0x50, 0xa4, 0x57, 0xa6, 0xe1,
87094 + 0xbd, 0xf4, 0xe4, 0x42, 0xc9, 0x79, 0x7b, 0x27, 0xcb, 0xb1, 0x6e, 0xaf,
87095 + 0xd9, 0xb4, 0x68, 0xa9, 0xd9, 0x94, 0x0e, 0x45, 0xcd, 0x97, 0xab, 0x64,
87096 + 0x4f, 0xa5, 0xff, 0x27, 0x63, 0x34, 0xd5, 0xc7, 0x5c, 0xf3, 0x6b, 0x7a,
87097 + 0x6f, 0xf6, 0xcc, 0x2e, 0xed, 0x9a, 0xcf, 0x38, 0x9d, 0x12, 0x3b, 0xd9,
87098 + 0xd1, 0xee, 0x62, 0x3e, 0x2a, 0xef, 0x87, 0x1e, 0xe5, 0xfe, 0x1f, 0x49,
87099 + 0xfd, 0xcd, 0x42, 0x39, 0xc3, 0x2e, 0x67, 0x08, 0x80, 0xff, 0x0f, 0x1d,
87100 + 0xab, 0x22, 0x97, 0x70, 0x78, 0x00, 0x00, 0x00 };
87101
87102 static const u32 bnx2_RXP_b09FwData[(0x0/4) + 1] = { 0x0 };
87103 -static const u32 bnx2_RXP_b09FwRodata[(0x124/4) + 1] = {
87104 +static const u32 bnx2_RXP_b09FwRodata[(0xf0/4) + 1] = {
87105 0x5f865437, 0xe4ac62cc, 0x50103a45, 0x36621985, 0xbf14c0e8, 0x1bc27a1e,
87106 0x84f4b556, 0x094ea6fe, 0x7dda01e7, 0xc04d7481, 0x80080100, 0x80080080,
87107 - 0x80080000, 0x08004fbc, 0x08004fbc, 0x08005098, 0x0800506c, 0x08005050,
87108 - 0x08004f8c, 0x08004f8c, 0x08004f8c, 0x08004fc4, 0x080072ac, 0x080072f8,
87109 - 0x080072b8, 0x080071dc, 0x080072b8, 0x080072e8, 0x080072b8, 0x080071dc,
87110 - 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc,
87111 - 0x080071dc, 0x080071dc, 0x080071dc, 0x080072d8, 0x080072c8, 0x080071dc,
87112 - 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc,
87113 - 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc, 0x080071dc, 0x080072c8,
87114 - 0x0800787c, 0x08007748, 0x08007844, 0x08007748, 0x08007814, 0x08007630,
87115 - 0x08007748, 0x08007748, 0x08007748, 0x08007748, 0x08007748, 0x08007748,
87116 - 0x08007748, 0x08007748, 0x08007748, 0x08007748, 0x08007748, 0x08007748,
87117 - 0x08007770, 0x00000000 };
87118 + 0x80080000, 0x08004efc, 0x08004efc, 0x08004fd8, 0x08004fac, 0x08004f90,
87119 + 0x08004ecc, 0x08004ecc, 0x08004ecc, 0x08004f04, 0x08007220, 0x0800726c,
87120 + 0x0800722c, 0x08007150, 0x0800722c, 0x0800725c, 0x0800722c, 0x08007150,
87121 + 0x08007150, 0x08007150, 0x08007150, 0x08007150, 0x08007150, 0x08007150,
87122 + 0x08007150, 0x08007150, 0x08007150, 0x0800724c, 0x0800723c, 0x08007150,
87123 + 0x08007150, 0x08007150, 0x08007150, 0x08007150, 0x08007150, 0x08007150,
87124 + 0x08007150, 0x08007150, 0x08007150, 0x08007150, 0x08007150, 0x0800723c,
87125 + 0x080077f4, 0x080076bc, 0x080077bc, 0x08007718, 0x080076e8, 0x080075a4,
87126 + 0x00000000 };
87127
87128 static struct fw_info bnx2_rxp_fw_09 = {
87129 - /* Firmware version: 4.6.15 */
87130 + /* Firmware version: 4.4.23 */
87131 .ver_major = 0x4,
87132 - .ver_minor = 0x6,
87133 - .ver_fix = 0xf,
87134 + .ver_minor = 0x4,
87135 + .ver_fix = 0x17,
87136
87137 - .start_addr = 0x080031d8,
87138 + .start_addr = 0x080031d0,
87139
87140 .text_addr = 0x08000000,
87141 - .text_len = 0x78f4,
87142 + .text_len = 0x786c,
87143 .text_index = 0x0,
87144 .gz_text = bnx2_RXP_b09FwText,
87145 .gz_text_len = sizeof(bnx2_RXP_b09FwText),
87146 @@ -3148,492 +3158,548 @@
87147 .data_index = 0x0,
87148 .data = bnx2_RXP_b09FwData,
87149
87150 - .sbss_addr = 0x08007a40,
87151 + .sbss_addr = 0x08007980,
87152 .sbss_len = 0x58,
87153 .sbss_index = 0x0,
87154
87155 - .bss_addr = 0x08007a98,
87156 - .bss_len = 0x20,
87157 + .bss_addr = 0x080079d8,
87158 + .bss_len = 0x1c,
87159 .bss_index = 0x0,
87160
87161 - .rodata_addr = 0x080078f4,
87162 - .rodata_len = 0x124,
87163 + .rodata_addr = 0x0800786c,
87164 + .rodata_len = 0xf0,
87165 .rodata_index = 0x0,
87166 .rodata = bnx2_RXP_b09FwRodata,
87167 };
87168
87169 static u8 bnx2_xi_rv2p_proc1[] = {
87170 - /* Date: 01/27/2009 19:01 */
87171 -#define XI_RV2P_PROC1_POST_WAIT_TIMEOUT_MSK 0xffff
87172 - 0xa5, 0x56, 0xdd, 0x6b, 0x1c, 0x55, 0x14, 0x3f, 0x33, 0xbb, 0x33, 0xb3,
87173 - 0xd9, 0x9d, 0xd9, 0x5d, 0x9a, 0x34, 0x8e, 0xb1, 0x34, 0xdb, 0x20, 0xca,
87174 - 0xa6, 0x13, 0xdd, 0x68, 0x1f, 0x04, 0x03, 0x2d, 0x01, 0x29, 0x98, 0xe2,
87175 - 0x43, 0xa0, 0x52, 0x8a, 0x60, 0x5c, 0xb4, 0x08, 0xf6, 0x2f, 0x10, 0xc1,
87176 - 0x21, 0x31, 0x11, 0xc4, 0xaf, 0x7d, 0xe8, 0x42, 0x02, 0x6a, 0x40, 0x50,
87177 - 0x09, 0x11, 0x77, 0xdf, 0x24, 0x16, 0x7c, 0x68, 0xf1, 0x41, 0xda, 0xa7,
87178 - 0x16, 0xd4, 0x97, 0x46, 0x11, 0xbf, 0x5e, 0x04, 0xd1, 0xc7, 0x9a, 0xf1,
87179 - 0x9e, 0x8f, 0xbb, 0x3b, 0x73, 0xb3, 0x9b, 0x14, 0x5c, 0x48, 0x7e, 0x9c,
87180 - 0x7b, 0xcf, 0x39, 0xf7, 0x7c, 0x9f, 0xa9, 0x02, 0x80, 0x0d, 0x71, 0x77,
87181 - 0x52, 0x21, 0x58, 0xb9, 0x5c, 0x01, 0x01, 0x60, 0x1b, 0xf8, 0xe7, 0xf8,
87182 - 0x44, 0xc7, 0x8f, 0x0a, 0x7d, 0x92, 0x21, 0x3e, 0x59, 0x55, 0xff, 0x2f,
87183 - 0xc3, 0xe9, 0x1a, 0x62, 0x0e, 0x4e, 0x9f, 0x40, 0x7c, 0x12, 0xbe, 0xae,
87184 - 0x85, 0x0a, 0xff, 0x4d, 0x20, 0x46, 0xfa, 0x68, 0xe7, 0xcb, 0x6e, 0x89,
87185 - 0xf4, 0xef, 0x8a, 0xfc, 0xf7, 0x39, 0xc6, 0x27, 0xa2, 0x02, 0xeb, 0x11,
87186 - 0x84, 0x99, 0x2a, 0xc1, 0xed, 0x16, 0xd2, 0xe7, 0xcf, 0x83, 0x8b, 0x7a,
87187 - 0xde, 0x53, 0x0c, 0x48, 0x1f, 0xb3, 0xe2, 0x19, 0xb1, 0xcb, 0x66, 0xbe,
87188 - 0x3b, 0xad, 0x0a, 0x9e, 0xc3, 0x8f, 0xf3, 0x48, 0xdf, 0x57, 0x7c, 0xa3,
87189 - 0x85, 0x38, 0x0e, 0x97, 0x0a, 0x3e, 0xfb, 0x53, 0x17, 0x9c, 0x64, 0xf5,
87190 - 0xbb, 0xd3, 0x28, 0xaf, 0x64, 0xa6, 0x45, 0xbf, 0x83, 0xfa, 0x7f, 0x4f,
87191 - 0x58, 0x3f, 0xea, 0x4d, 0xeb, 0xbb, 0x5f, 0xe9, 0xc3, 0x73, 0x57, 0xec,
87192 - 0x73, 0x0d, 0xfb, 0x5c, 0x65, 0x0f, 0xca, 0xaf, 0x00, 0xfb, 0x39, 0xaa,
87193 - 0xde, 0x45, 0xfa, 0xaf, 0xbe, 0xbe, 0x2e, 0xa2, 0x6f, 0xb1, 0xbc, 0xfa,
87194 - 0x13, 0xfb, 0x59, 0xee, 0x35, 0x25, 0xa7, 0xe3, 0x92, 0xb5, 0xd3, 0x8b,
87195 - 0xb4, 0x7f, 0x3a, 0xfe, 0xc8, 0x7f, 0x2b, 0xc9, 0xf2, 0xc3, 0x21, 0xfc,
87196 - 0x37, 0x15, 0x7f, 0x56, 0x2f, 0x9f, 0x7f, 0xdb, 0x3f, 0x1f, 0x18, 0x1f,
87197 - 0xc7, 0x88, 0xcf, 0x75, 0xf1, 0xe7, 0x29, 0x78, 0xd0, 0x0e, 0x89, 0x2f,
87198 - 0x0f, 0x21, 0xc5, 0x09, 0x62, 0xc4, 0xe3, 0x82, 0x2f, 0x09, 0x7e, 0x2e,
87199 - 0xb8, 0x2d, 0x08, 0xff, 0x13, 0xff, 0x1e, 0x72, 0x7e, 0x54, 0xf0, 0x01,
87200 - 0xe3, 0xfc, 0x9a, 0xe0, 0x23, 0x86, 0xfc, 0x71, 0x8b, 0xf1, 0x0f, 0xa1,
87201 - 0xe7, 0x85, 0x7e, 0xc6, 0x90, 0x8f, 0x81, 0xe3, 0x63, 0x19, 0x71, 0xfb,
87202 - 0x58, 0xea, 0x19, 0xf3, 0x2f, 0xf7, 0x75, 0xcd, 0x57, 0xa0, 0x38, 0xc2,
87203 - 0x74, 0x9a, 0xff, 0x83, 0x03, 0xf8, 0x99, 0x6d, 0xbe, 0x3e, 0x48, 0xae,
87204 - 0x9d, 0xb0, 0x1d, 0x57, 0x44, 0xbe, 0xd8, 0xb9, 0x3a, 0xa4, 0x7f, 0xe6,
87205 - 0xa2, 0x41, 0xfd, 0x52, 0x17, 0x3f, 0xbe, 0x92, 0xba, 0xdc, 0xb1, 0x9a,
87206 - 0x51, 0xc8, 0x79, 0xa5, 0x3c, 0x06, 0x52, 0x8f, 0x23, 0x46, 0x3d, 0x7b,
87207 - 0xaa, 0x9e, 0xa5, 0xae, 0xea, 0xba, 0xbe, 0xb2, 0x75, 0xc5, 0xf5, 0xe1,
87208 - 0x1a, 0xf5, 0x11, 0x1f, 0x12, 0x97, 0x92, 0xe1, 0xdf, 0xab, 0x09, 0x86,
87209 - 0x18, 0x7f, 0xb6, 0xcd, 0xb8, 0xc1, 0x18, 0xf9, 0x6e, 0x1e, 0xf1, 0x94,
87210 - 0xff, 0x0d, 0xeb, 0x9b, 0x04, 0x44, 0x3f, 0x6c, 0x53, 0x1f, 0xe5, 0xa1,
87211 - 0xed, 0x2a, 0x9b, 0xe1, 0x6e, 0xf2, 0x0e, 0xf3, 0x4d, 0x38, 0x37, 0x09,
87212 - 0xc3, 0x8d, 0x1b, 0xcc, 0xff, 0x5d, 0x8d, 0xed, 0x7e, 0x56, 0xe6, 0x53,
87213 - 0xff, 0xa7, 0xef, 0xa5, 0xff, 0x2a, 0x48, 0xff, 0x63, 0xc5, 0x5d, 0xfd,
87214 - 0x8e, 0xc8, 0xbd, 0xa2, 0xeb, 0x9b, 0x7f, 0xcb, 0x6e, 0x95, 0xfc, 0x7d,
87215 - 0xab, 0x4b, 0xe4, 0x98, 0xbf, 0x56, 0xa5, 0xdb, 0xb7, 0xbb, 0xda, 0x1f,
87216 - 0xe9, 0xf3, 0x69, 0xed, 0x3f, 0xcb, 0x07, 0x72, 0x6d, 0x3b, 0x3a, 0x7e,
87217 - 0x7c, 0x5e, 0x24, 0x3b, 0x46, 0x3b, 0x9b, 0x46, 0x3e, 0x6b, 0xf7, 0x34,
87218 - 0x07, 0xff, 0x4c, 0xfa, 0x73, 0x30, 0x1d, 0x1f, 0x3d, 0x07, 0x0b, 0xb0,
87219 - 0x74, 0xb6, 0x42, 0xf6, 0x94, 0x5d, 0x56, 0x73, 0xa1, 0xc2, 0xf8, 0x62,
87220 - 0x91, 0xf1, 0x97, 0x22, 0xc6, 0x2f, 0x49, 0x2e, 0x95, 0x98, 0x7e, 0x21,
87221 - 0x40, 0xbd, 0xa3, 0xea, 0x61, 0x2d, 0xaf, 0xed, 0x3a, 0xc8, 0x1e, 0x7c,
87222 - 0x5f, 0xbf, 0xa3, 0xed, 0xd0, 0xef, 0x65, 0xeb, 0x65, 0xf8, 0xbb, 0x8c,
87223 - 0x4d, 0x3b, 0x1b, 0x87, 0xfc, 0x2c, 0xe3, 0x46, 0x03, 0xed, 0xba, 0x9a,
87224 - 0xf4, 0xfa, 0xb0, 0x5e, 0x25, 0xbe, 0x29, 0x60, 0x7a, 0x51, 0xea, 0x73,
87225 - 0x91, 0xfa, 0xa7, 0xac, 0xae, 0x10, 0x27, 0x20, 0xa6, 0xbd, 0x60, 0x17,
87226 - 0xaf, 0x53, 0xbd, 0xe4, 0xe4, 0x5c, 0xe5, 0x67, 0x2a, 0xdb, 0x77, 0xbb,
87227 - 0x5c, 0x8f, 0x85, 0x6c, 0x1d, 0x3f, 0x9c, 0x9a, 0xaf, 0x69, 0x7f, 0xad,
87228 - 0x5e, 0xfd, 0xee, 0xcf, 0x53, 0x36, 0x1f, 0xb7, 0x5b, 0xda, 0x7f, 0x73,
87229 - 0x6f, 0x30, 0x7b, 0xdc, 0x90, 0x40, 0xcd, 0xca, 0xfd, 0x8c, 0xd9, 0x2f,
87230 - 0x83, 0xfa, 0xad, 0x6a, 0xf4, 0xcf, 0x11, 0xe9, 0xb7, 0x91, 0xce, 0x66,
87231 - 0xeb, 0xb0, 0x7e, 0x46, 0xfe, 0x2f, 0x64, 0x9e, 0x54, 0xa1, 0xb7, 0x97,
87232 - 0xb6, 0x91, 0x2e, 0x81, 0xf4, 0x61, 0x27, 0xce, 0x65, 0xf2, 0x70, 0x06,
87233 - 0x06, 0xce, 0x95, 0x0f, 0x45, 0x4f, 0x43, 0xe6, 0x8b, 0x9b, 0xda, 0x5f,
87234 - 0xc4, 0x5e, 0x06, 0xb2, 0xc3, 0x33, 0xe6, 0xc3, 0xdd, 0x3d, 0xdd, 0xef,
87235 - 0xcb, 0xee, 0x20, 0x7f, 0x3d, 0xf8, 0xcd, 0xe7, 0xfa, 0x68, 0x52, 0xbf,
87236 - 0x38, 0x63, 0x97, 0x77, 0x32, 0x79, 0x02, 0x38, 0xa1, 0xf7, 0x52, 0xda,
87237 - 0xae, 0xf4, 0x5e, 0x45, 0x7d, 0x21, 0x34, 0x67, 0xd3, 0xfb, 0xf5, 0xfd,
87238 - 0x44, 0xcf, 0xf5, 0x80, 0xfa, 0xa4, 0xbc, 0xaf, 0xef, 0xf4, 0x1c, 0xad,
87239 - 0x45, 0xe9, 0xfe, 0x1d, 0x93, 0xb9, 0x69, 0x03, 0xcf, 0xcd, 0x92, 0xe9,
87240 - 0xa7, 0xda, 0xb7, 0x83, 0xf3, 0xc5, 0xfe, 0xde, 0xd9, 0xbb, 0xb7, 0x39,
87241 - 0x7b, 0x58, 0xde, 0x8b, 0x46, 0xde, 0x6f, 0xf5, 0xe2, 0x68, 0x3b, 0x83,
87242 - 0xbe, 0x2b, 0x4e, 0x29, 0xbd, 0xc2, 0x2f, 0x73, 0xe1, 0x79, 0x9a, 0x77,
87243 - 0x67, 0x84, 0x6f, 0x2e, 0x55, 0xaf, 0x83, 0xf8, 0x62, 0xa3, 0xae, 0x0b,
87244 - 0xfb, 0xf8, 0xb2, 0x73, 0x4c, 0xfb, 0xb3, 0xb5, 0xc5, 0xf5, 0x71, 0x31,
87245 - 0xd5, 0xaf, 0xe9, 0xf9, 0x3f, 0x22, 0xf5, 0xa0, 0xf8, 0xc8, 0x8f, 0x9d,
87246 - 0xbd, 0xfe, 0xbe, 0x48, 0xd7, 0xd7, 0xa2, 0xd4, 0xb5, 0x3d, 0xb7, 0x49,
87247 - 0x7d, 0xe4, 0x35, 0x7f, 0x35, 0xf2, 0x35, 0x1b, 0x61, 0x9d, 0xbc, 0x0e,
87248 - 0x5d, 0xb1, 0xf3, 0x87, 0x8c, 0xbd, 0x81, 0xf4, 0xa1, 0x0b, 0x9f, 0x75,
87249 - 0xb5, 0x5f, 0x7c, 0x5d, 0x8b, 0x18, 0x3f, 0x8d, 0xa4, 0x9f, 0x7a, 0xfe,
87250 - 0xe1, 0xbb, 0x0b, 0xf2, 0x6e, 0x15, 0x3e, 0xe9, 0xed, 0x03, 0x9c, 0x6f,
87251 - 0x1e, 0x34, 0x64, 0x7e, 0x2e, 0xc9, 0x1c, 0xfb, 0xa9, 0xc8, 0x73, 0xb2,
87252 - 0xb9, 0x40, 0xf5, 0x0a, 0xe3, 0x32, 0xcf, 0x9a, 0x01, 0xd3, 0x13, 0x01,
87253 - 0x7f, 0x07, 0x37, 0x3c, 0x9f, 0xf8, 0x26, 0x02, 0xc6, 0xf1, 0x12, 0xca,
87254 - 0x85, 0xf0, 0xf3, 0x39, 0x62, 0x8f, 0xd6, 0x7d, 0xde, 0x73, 0xeb, 0x37,
87255 - 0x64, 0x9e, 0x54, 0x74, 0xdc, 0xc4, 0xcf, 0xc7, 0xf1, 0x7c, 0x5c, 0xcd,
87256 - 0x2d, 0xa6, 0xb9, 0x1e, 0xfc, 0x5e, 0xfd, 0x7f, 0x24, 0x59, 0xa9, 0x55,
87257 - 0xd2, 0x71, 0xd6, 0xfd, 0xf6, 0xae, 0x11, 0x5f, 0x9d, 0x9f, 0x87, 0x12,
87258 - 0x3d, 0xe7, 0xa7, 0xce, 0xa2, 0xbd, 0x15, 0x28, 0x7b, 0x5c, 0x3f, 0x8c,
87259 - 0x4a, 0x8f, 0xed, 0xa1, 0xd8, 0xb1, 0x55, 0x99, 0x9b, 0xab, 0xcb, 0xa4,
87260 - 0xe6, 0xdc, 0xaa, 0x3e, 0x9f, 0xa7, 0x86, 0x59, 0xdc, 0xba, 0x46, 0xe7,
87261 - 0xe5, 0x6e, 0x8e, 0xcf, 0xbd, 0x05, 0x1d, 0xaf, 0x0a, 0xf9, 0xdf, 0xe6,
87262 - 0x78, 0x3d, 0x77, 0x85, 0xf1, 0x22, 0x3c, 0x4d, 0x58, 0x6c, 0x4b, 0x9f,
87263 - 0xaf, 0xfb, 0x05, 0x42, 0xa0, 0x78, 0xd9, 0x8f, 0xf1, 0x7e, 0x77, 0x64,
87264 - 0x2f, 0x17, 0x52, 0xf9, 0x33, 0xf7, 0xe4, 0x41, 0x79, 0x3c, 0x62, 0xec,
87265 - 0x0b, 0xbd, 0xd7, 0x2d, 0xe3, 0xfb, 0x36, 0x30, 0xea, 0xf1, 0xe5, 0x21,
87266 - 0xf5, 0x08, 0x43, 0xea, 0xd9, 0x9c, 0x6f, 0x4b, 0xd2, 0xef, 0x79, 0x70,
87267 - 0x72, 0xb4, 0x78, 0xfd, 0xfc, 0x0a, 0xe5, 0xd5, 0x5e, 0xe5, 0xef, 0x1a,
87268 - 0xdf, 0x59, 0xb3, 0x28, 0x5e, 0xfe, 0x1a, 0xf3, 0xe5, 0xf9, 0x3c, 0xd4,
87269 - 0xf8, 0xe6, 0x0a, 0xf7, 0x95, 0x0d, 0xff, 0x01, 0xd7, 0x0e, 0x41, 0x60,
87270 - 0x88, 0x0d, 0x00, 0x00, 0x00 };
87271 + /* Date: 06/17/2008 16:52 */
87272 + 0xbd, 0x56, 0xcf, 0x6b, 0x1c, 0x75, 0x14, 0x7f, 0x3b, 0xbb, 0x33, 0x3b,
87273 + 0x99, 0x9d, 0xdd, 0x99, 0xda, 0x34, 0x4c, 0xb7, 0x2b, 0xd9, 0x86, 0x5e,
87274 + 0x36, 0x99, 0x62, 0xa2, 0x11, 0x0a, 0x46, 0x5b, 0x72, 0x09, 0xd8, 0x9e,
87275 + 0x02, 0x95, 0x22, 0x82, 0x71, 0xa9, 0x3d, 0xd8, 0x96, 0xe2, 0x5f, 0xe0,
87276 + 0x90, 0x9a, 0x08, 0x45, 0x0f, 0x0b, 0x36, 0x90, 0x20, 0x1a, 0x7b, 0x50,
87277 + 0x09, 0x0a, 0x3b, 0x07, 0x41, 0x44, 0x2d, 0xa8, 0x88, 0x60, 0x3d, 0x08,
87278 + 0x85, 0xda, 0x8b, 0x51, 0x8b, 0x8a, 0x07, 0x0f, 0x01, 0x8f, 0x9a, 0xf1,
87279 + 0xfb, 0x7e, 0x7c, 0x37, 0x33, 0x93, 0xdd, 0x24, 0x27, 0x03, 0xed, 0x87,
87280 + 0xf7, 0x9d, 0xf7, 0x7d, 0xdf, 0xf7, 0xde, 0xf7, 0xf3, 0x3e, 0xdf, 0xf5,
87281 + 0x01, 0xc0, 0x80, 0x28, 0x1e, 0x55, 0x08, 0x87, 0x8c, 0xa2, 0xad, 0xa0,
87282 + 0x00, 0xf0, 0x21, 0xf0, 0x9f, 0xe9, 0x92, 0x1d, 0x3d, 0x22, 0xf6, 0x04,
87283 + 0x43, 0x34, 0xe1, 0xab, 0xff, 0xaf, 0xc2, 0xe9, 0x26, 0x62, 0x11, 0x4e,
87284 + 0x1f, 0x47, 0x7c, 0x12, 0x6e, 0x37, 0x03, 0x85, 0xff, 0x26, 0x10, 0xa1,
87285 + 0x3d, 0xdc, 0xfd, 0x24, 0xae, 0x50, 0xfc, 0x4d, 0xd9, 0xff, 0x63, 0x91,
87286 + 0xf1, 0x54, 0x68, 0x73, 0x1c, 0x41, 0x38, 0xe9, 0x13, 0xdc, 0xed, 0xa0,
87287 + 0x7d, 0xfe, 0x3c, 0x58, 0x18, 0xe7, 0x6d, 0xe5, 0x80, 0x76, 0xa3, 0x10,
87288 + 0x9d, 0x94, 0xbc, 0x0c, 0xf6, 0xfb, 0xa9, 0xe3, 0xe1, 0x3a, 0xfc, 0x3c,
87289 + 0x8b, 0xf6, 0x51, 0xe7, 0xd5, 0x0e, 0x62, 0x00, 0x97, 0x6c, 0x97, 0xeb,
87290 + 0x19, 0xe5, 0xb0, 0x9b, 0xe3, 0xb8, 0x4f, 0xf9, 0x8e, 0x4b, 0x5c, 0x13,
87291 + 0xe3, 0xfe, 0x99, 0x70, 0x5c, 0x8c, 0x97, 0x8e, 0xd3, 0x50, 0x71, 0x70,
87292 + 0xdd, 0x92, 0xbc, 0xac, 0x5c, 0x5e, 0x96, 0xca, 0x43, 0xfa, 0x00, 0x3a,
87293 + 0x0f, 0xc4, 0x23, 0xea, 0x5c, 0x8c, 0xbb, 0x25, 0x75, 0x03, 0x3c, 0xdf,
87294 + 0x94, 0xf8, 0x31, 0xa2, 0x5b, 0xe0, 0x78, 0xea, 0x9f, 0xd4, 0xb1, 0x3b,
87295 + 0x8e, 0xee, 0x53, 0x36, 0xff, 0x72, 0xa8, 0xbf, 0xeb, 0xfb, 0xc0, 0x73,
87296 + 0x7e, 0x50, 0xe7, 0xa4, 0xfd, 0x61, 0x1f, 0xff, 0xef, 0x94, 0x7f, 0x36,
87297 + 0x2e, 0xaf, 0x7f, 0xbb, 0xb3, 0xde, 0xea, 0xd7, 0x37, 0x33, 0xd7, 0xb7,
87298 + 0x2f, 0xa5, 0x6f, 0x73, 0x70, 0xc2, 0x08, 0xc8, 0xaf, 0x04, 0x88, 0xc7,
87299 + 0x54, 0x02, 0x88, 0x0f, 0x0b, 0x5e, 0x13, 0xbc, 0x25, 0xf8, 0xae, 0xe0,
87300 + 0x11, 0xc1, 0x61, 0xc1, 0xc3, 0x82, 0x0f, 0x09, 0x6e, 0x09, 0xfa, 0x82,
87301 + 0x9e, 0x60, 0x4d, 0xf0, 0x2f, 0x41, 0x57, 0xb0, 0x92, 0x8b, 0x57, 0x17,
87302 + 0xb4, 0x05, 0x3f, 0x17, 0x7c, 0x22, 0xb7, 0xff, 0x68, 0x81, 0xf1, 0x81,
87303 + 0xd8, 0x4f, 0x89, 0x7d, 0x41, 0x6c, 0x6c, 0xa8, 0xf0, 0x3e, 0xd3, 0xaf,
87304 + 0x5b, 0xbd, 0xfb, 0xbd, 0xdb, 0x91, 0xef, 0x2d, 0xed, 0x67, 0x53, 0xff,
87305 + 0x60, 0x3c, 0xed, 0xff, 0xd6, 0x1e, 0xfe, 0xec, 0x36, 0xdb, 0xea, 0xb7,
87306 + 0xef, 0x66, 0xc2, 0x79, 0xbc, 0x29, 0xfb, 0x83, 0xee, 0x67, 0x03, 0xe6,
87307 + 0x68, 0x26, 0xcc, 0xf3, 0xab, 0xdf, 0x1c, 0x3d, 0x2e, 0x73, 0x34, 0xbd,
87308 + 0x8b, 0xbf, 0xcc, 0xd3, 0x33, 0xb2, 0x7f, 0x46, 0xf8, 0xd9, 0x18, 0xe0,
87309 + 0x17, 0xa5, 0xe6, 0x95, 0xce, 0x1b, 0x30, 0x0f, 0x1f, 0x15, 0xda, 0x61,
87310 + 0xc0, 0xfc, 0x89, 0xf6, 0xca, 0x0f, 0xf7, 0x0b, 0x7f, 0x5b, 0x9a, 0xc7,
87311 + 0x59, 0xfe, 0x32, 0x0f, 0xad, 0x1c, 0x0f, 0x5f, 0xde, 0xe7, 0x1e, 0x2a,
87312 + 0xb9, 0x7e, 0x5e, 0x56, 0xfe, 0x6c, 0x1a, 0x06, 0xe3, 0x1a, 0x63, 0xe8,
87313 + 0x5a, 0x25, 0xc4, 0x69, 0xf7, 0x1b, 0x8e, 0x37, 0x4a, 0x75, 0xb8, 0xc1,
87314 + 0x0a, 0xcd, 0x6d, 0x09, 0x56, 0xac, 0x21, 0x85, 0xff, 0x24, 0x6f, 0xb0,
87315 + 0x5f, 0xdd, 0xfc, 0x9e, 0x30, 0x58, 0xbb, 0xc3, 0xfe, 0xf7, 0x9a, 0x9c,
87316 + 0xf7, 0x33, 0x13, 0x90, 0xfb, 0xd3, 0xdf, 0x65, 0xde, 0x3d, 0xb4, 0xff,
87317 + 0x2e, 0x44, 0xb1, 0x3e, 0x47, 0xf6, 0x5d, 0xd6, 0x73, 0xc4, 0x7f, 0x8b,
87318 + 0x96, 0x4f, 0xf5, 0xde, 0x88, 0xc9, 0x1c, 0x76, 0x97, 0x7d, 0xfa, 0xfa,
87319 + 0x7a, 0xac, 0xeb, 0x11, 0x5d, 0x19, 0xd7, 0xf5, 0xf3, 0xfe, 0x2a, 0x9d,
87320 + 0x77, 0xb8, 0xbb, 0x9e, 0xe3, 0x49, 0xf3, 0x40, 0x3a, 0xbb, 0x95, 0xec,
87321 + 0xe8, 0x6c, 0xba, 0x0f, 0x5a, 0x67, 0x6d, 0x58, 0x98, 0xf3, 0xe8, 0xdc,
87322 + 0x9a, 0xc5, 0x61, 0x2e, 0x78, 0x8c, 0x17, 0x1d, 0xc6, 0xdf, 0x1c, 0xec,
87323 + 0x53, 0x92, 0x5c, 0xaa, 0xb0, 0xfd, 0x42, 0x55, 0xcf, 0xb7, 0xde, 0xaf,
87324 + 0xf3, 0xda, 0x2b, 0x1f, 0x3c, 0x5f, 0x9f, 0xa3, 0xf3, 0xd0, 0xe7, 0x65,
87325 + 0x79, 0x31, 0xf8, 0x5c, 0xc6, 0xb6, 0x91, 0xed, 0xc3, 0xda, 0x24, 0x63,
87326 + 0x69, 0x0a, 0xf3, 0xba, 0x9d, 0xf4, 0xe6, 0xbb, 0xe5, 0x93, 0xdf, 0x18,
87327 + 0xb0, 0x3d, 0x2f, 0x3c, 0x9c, 0xa7, 0xb9, 0x54, 0xba, 0x63, 0x20, 0xd6,
87328 + 0x21, 0xa2, 0x77, 0xc7, 0x70, 0xbe, 0x26, 0x5e, 0x14, 0x65, 0x5d, 0xdd,
87329 + 0xc3, 0x58, 0x76, 0x9e, 0x37, 0x99, 0x77, 0x76, 0x96, 0xaf, 0xc7, 0x84,
87330 + 0xaf, 0x4e, 0x77, 0xbd, 0xb3, 0xdf, 0x3c, 0x48, 0xc1, 0xbd, 0xfe, 0x6b,
87331 + 0x3d, 0xd4, 0xef, 0xb2, 0xd6, 0x3d, 0xfa, 0xdc, 0x8d, 0x8a, 0x99, 0x3a,
87332 + 0xcf, 0x40, 0xd8, 0xef, 0x7e, 0x3f, 0x16, 0x3d, 0x99, 0x16, 0x7d, 0x53,
87333 + 0x97, 0x18, 0x65, 0xf6, 0xd5, 0x80, 0xf2, 0x29, 0xe7, 0xe6, 0xac, 0xd4,
87334 + 0x9b, 0x9b, 0x45, 0x6b, 0x80, 0xde, 0x99, 0xfc, 0x7e, 0x2e, 0xcc, 0xe1,
87335 + 0xb9, 0x76, 0xe3, 0x06, 0xcd, 0x7f, 0x19, 0xfe, 0x70, 0xf9, 0x5e, 0xda,
87336 + 0x26, 0xda, 0xe6, 0xf0, 0x95, 0x4f, 0x33, 0xfd, 0x01, 0x38, 0xae, 0xdf,
87337 + 0x97, 0xf4, 0x1c, 0x07, 0xd0, 0x9e, 0x3a, 0xe8, 0x7b, 0x99, 0xe6, 0x7d,
87338 + 0x6d, 0x17, 0xef, 0xb5, 0x3e, 0x36, 0xc3, 0xf4, 0x9c, 0xe0, 0x3b, 0xc1,
87339 + 0xf7, 0xcd, 0xfa, 0x54, 0xc9, 0xf7, 0x41, 0xbd, 0x9f, 0xba, 0xbe, 0x7e,
87340 + 0xef, 0xe8, 0xaf, 0xdb, 0x07, 0xd3, 0xb3, 0x74, 0x9f, 0xfa, 0xe9, 0x99,
87341 + 0x93, 0xd3, 0xa7, 0x7b, 0xdb, 0x3d, 0x7d, 0x32, 0xfb, 0xd5, 0xff, 0x7f,
87342 + 0xe8, 0x36, 0xf7, 0xd3, 0x81, 0x74, 0x3d, 0x1b, 0x1b, 0xcc, 0x9f, 0xab,
87343 + 0xa9, 0x79, 0x49, 0xdf, 0xff, 0x90, 0xf0, 0x45, 0xf9, 0x51, 0x1d, 0x5f,
87344 + 0x6c, 0xef, 0xe8, 0x72, 0x9a, 0x7f, 0x2f, 0x0a, 0xff, 0x8d, 0x99, 0x75,
87345 + 0xe6, 0x47, 0xfb, 0xf7, 0xdc, 0x7d, 0x4d, 0x85, 0xc8, 0x97, 0x57, 0x20,
87346 + 0x96, 0x3c, 0xef, 0x67, 0xf2, 0xad, 0x8a, 0x2e, 0x95, 0xe1, 0x83, 0x58,
87347 + 0xd7, 0xc5, 0x9f, 0x9b, 0x21, 0xe3, 0xfb, 0xe4, 0xef, 0xef, 0xf3, 0x2e,
87348 + 0xf9, 0xf0, 0x5e, 0x4f, 0x7f, 0x3d, 0x8a, 0x37, 0x29, 0x3a, 0xb6, 0x20,
87349 + 0x7a, 0xf2, 0x8b, 0xc3, 0x7a, 0xd5, 0x3e, 0x4b, 0xfc, 0x85, 0x11, 0xd1,
87350 + 0x95, 0x76, 0x95, 0xed, 0x7a, 0x95, 0x7f, 0xef, 0x4e, 0x96, 0x5d, 0xf2,
87351 + 0xab, 0x57, 0x19, 0x47, 0x2a, 0xb8, 0x2f, 0x80, 0x07, 0xe7, 0xc8, 0x3d,
87352 + 0x5c, 0x75, 0xf9, 0x5d, 0x59, 0xbd, 0x23, 0x7a, 0xe7, 0xe9, 0xfe, 0x49,
87353 + 0xbd, 0x8f, 0xe1, 0xfa, 0x88, 0xd2, 0x0f, 0xb6, 0x99, 0x17, 0x6e, 0x6f,
87354 + 0x1e, 0xde, 0x91, 0xec, 0x9b, 0x5e, 0xba, 0xdf, 0x7a, 0x2e, 0x3b, 0xb9,
87355 + 0x3e, 0xeb, 0x7b, 0x3a, 0x95, 0x68, 0xbd, 0x1d, 0x9b, 0xc3, 0x7c, 0x3d,
87356 + 0xa8, 0x95, 0x99, 0x47, 0x8c, 0x2a, 0x8e, 0x51, 0xc6, 0x6d, 0x8d, 0x25,
87357 + 0xd1, 0xaf, 0xa5, 0x45, 0x0a, 0x73, 0x6e, 0x49, 0xaf, 0xcf, 0xd2, 0xe0,
87358 + 0xcc, 0x6f, 0x7c, 0x45, 0xeb, 0xb5, 0xb8, 0xc8, 0xeb, 0xe5, 0xb3, 0xba,
87359 + 0x5f, 0x1e, 0xd5, 0xbf, 0xc2, 0xfd, 0x7a, 0xee, 0x26, 0xe3, 0xb3, 0xf0,
87360 + 0x34, 0xa1, 0xb3, 0x22, 0x73, 0xbf, 0xea, 0xda, 0x84, 0x40, 0xfd, 0x32,
87361 + 0x1e, 0xe5, 0xf7, 0xd4, 0x94, 0x77, 0x70, 0x28, 0x75, 0x8f, 0xf9, 0xf7,
87362 + 0xea, 0xa0, 0xf7, 0x99, 0xd6, 0x6f, 0xfd, 0x9e, 0x16, 0x72, 0xbf, 0x5f,
87363 + 0xab, 0x39, 0x7e, 0xbe, 0x34, 0x80, 0x9f, 0x87, 0x06, 0xf0, 0x3b, 0xaf,
87364 + 0x87, 0x6d, 0x99, 0xff, 0x12, 0x98, 0x45, 0x7a, 0x08, 0xdd, 0xd2, 0x75,
87365 + 0xba, 0x5f, 0x63, 0x89, 0x7f, 0x4f, 0xb8, 0xe6, 0x72, 0x81, 0xfa, 0xe6,
87366 + 0x2e, 0xb3, 0x5f, 0x89, 0xd7, 0x03, 0x8d, 0xaf, 0x5d, 0xe7, 0x39, 0x33,
87367 + 0xe0, 0x3f, 0xdd, 0xd1, 0x99, 0x07, 0x78, 0x0d, 0x00, 0x00, 0x00 };
87368
87369 static u8 bnx2_xi_rv2p_proc2[] = {
87370 - /* Date: 01/27/2009 19:01 */
87371 + /* Date: 06/17/2008 16:52 */
87372 #define XI_RV2P_PROC2_MAX_BD_PAGE_LOC 5
87373 #define XI_RV2P_PROC2_BD_PAGE_SIZE_MSK 0xffff
87374 #define XI_RV2P_PROC2_BD_PAGE_SIZE ((BCM_PAGE_SIZE / 16) - 1)
87375 - 0xad, 0x57, 0x4d, 0x68, 0x5c, 0x55, 0x14, 0xbe, 0x33, 0x6f, 0x7e, 0xde,
87376 - 0xcc, 0xbc, 0xc9, 0x4c, 0x93, 0x38, 0x99, 0x26, 0xc5, 0xa4, 0x09, 0x8d,
87377 - 0x4e, 0x9d, 0x69, 0x27, 0x3f, 0x44, 0xb0, 0x42, 0x43, 0x90, 0xb4, 0xb5,
87378 - 0x4a, 0xd3, 0x28, 0xc5, 0x5d, 0x92, 0xa9, 0x1d, 0x8c, 0x69, 0x23, 0x18,
87379 - 0x70, 0xe1, 0xc6, 0x47, 0x5a, 0xd3, 0xcd, 0x2c, 0x4c, 0x31, 0x3f, 0x8a,
87380 - 0xa0, 0xd8, 0x9d, 0xb8, 0x19, 0x50, 0xdb, 0x8a, 0x22, 0x14, 0x0c, 0x52,
87381 - 0x17, 0x45, 0xb0, 0x58, 0x37, 0x8a, 0x58, 0x1b, 0x1a, 0x11, 0x8d, 0x8b,
87382 - 0xae, 0x24, 0xe3, 0xbd, 0xe7, 0x3b, 0xf7, 0xcd, 0xbc, 0xc9, 0x8b, 0x89,
87383 - 0x62, 0x36, 0x27, 0xe7, 0xbe, 0x73, 0xcf, 0x39, 0xf7, 0x9c, 0xef, 0x7c,
87384 - 0xf7, 0x4e, 0x52, 0x08, 0x11, 0x10, 0x76, 0xb9, 0x5d, 0x4a, 0xe1, 0x33,
87385 - 0x0c, 0x53, 0x8a, 0x8a, 0x10, 0xc1, 0xb4, 0xd2, 0x85, 0x5f, 0xf0, 0xdf,
87386 - 0xfe, 0x24, 0x89, 0x6f, 0xcb, 0x96, 0x32, 0x13, 0x76, 0x46, 0xd9, 0x45,
87387 - 0xc4, 0xb3, 0xfe, 0x88, 0x94, 0x87, 0xc5, 0x68, 0x06, 0xf6, 0x01, 0xa1,
87388 - 0xa4, 0xb4, 0xb5, 0x95, 0xdc, 0xc5, 0xf2, 0x38, 0xcb, 0xc7, 0x7d, 0x90,
87389 - 0x87, 0x58, 0x3e, 0x56, 0x27, 0x05, 0xdb, 0x3d, 0xcd, 0xfa, 0x00, 0x4b,
87390 - 0x8b, 0xd7, 0x47, 0x59, 0xff, 0x90, 0xa5, 0xcd, 0xeb, 0x61, 0xd6, 0x1f,
87391 - 0xf0, 0xa9, 0x25, 0xe4, 0xab, 0xf4, 0xb5, 0x4a, 0x55, 0xb7, 0xe0, 0x3e,
87392 - 0x83, 0x73, 0x3c, 0xd3, 0xa1, 0xbe, 0xdf, 0xad, 0xb8, 0xed, 0xef, 0x38,
87393 - 0xfa, 0xac, 0xa1, 0xf4, 0x1f, 0xa5, 0xee, 0x53, 0x6a, 0x73, 0x0a, 0xdb,
87394 - 0x9b, 0xd3, 0x25, 0xb5, 0xdf, 0x10, 0xcb, 0xf3, 0x26, 0x55, 0x67, 0xd1,
87395 - 0x82, 0x6e, 0x97, 0x4d, 0xaa, 0xcb, 0xa2, 0xc5, 0xfe, 0x58, 0xee, 0x8e,
87396 - 0x23, 0xde, 0xa9, 0x0e, 0xd4, 0xed, 0xbb, 0x47, 0x60, 0x67, 0x27, 0x74,
87397 - 0x61, 0xf1, 0xbd, 0x5d, 0xf0, 0xf7, 0x29, 0xa5, 0xaf, 0xfb, 0x9a, 0x7c,
87398 - 0xa8, 0x47, 0x98, 0xad, 0xfc, 0x41, 0xb5, 0xbe, 0xb7, 0x7f, 0x71, 0x1e,
87399 - 0xf6, 0x63, 0x1d, 0x58, 0x7f, 0x30, 0xab, 0xfc, 0x85, 0x84, 0xcd, 0x52,
87400 - 0xe4, 0x28, 0x2f, 0x9f, 0x9d, 0x73, 0xfb, 0xff, 0x61, 0x1e, 0xda, 0x44,
87401 - 0x1c, 0x7e, 0xa3, 0x2e, 0xbf, 0xa9, 0x4d, 0x7e, 0x6f, 0x47, 0x6a, 0xfd,
87402 - 0x37, 0xf8, 0xe0, 0x3f, 0xba, 0xad, 0xff, 0x42, 0x1c, 0xb2, 0x29, 0xeb,
87403 - 0x15, 0x27, 0xb2, 0x4d, 0xfe, 0x2f, 0x6e, 0xeb, 0xff, 0x55, 0x27, 0x7f,
87404 - 0xbd, 0x5e, 0x5f, 0x3f, 0x52, 0x3f, 0xb0, 0x0f, 0xf2, 0xf6, 0xfd, 0xfa,
87405 - 0xdc, 0x9c, 0x9f, 0x01, 0x39, 0x98, 0x25, 0x51, 0x3a, 0xcd, 0x00, 0x1f,
87406 - 0xee, 0x56, 0x71, 0x1b, 0x45, 0xc0, 0xaf, 0xfc, 0x1d, 0x30, 0x43, 0xd7,
87407 - 0xb0, 0xfe, 0x1c, 0xf7, 0xe9, 0x79, 0x3e, 0xc8, 0x2f, 0x51, 0x55, 0x98,
87408 - 0x4a, 0xa5, 0x18, 0x63, 0xff, 0xdc, 0x67, 0x3b, 0x86, 0xfd, 0x2b, 0x96,
87409 - 0xca, 0xef, 0x86, 0xc4, 0x8d, 0x57, 0xdf, 0x8d, 0x7f, 0xe8, 0x3b, 0xf6,
87410 - 0xef, 0x7a, 0x08, 0x5f, 0xdf, 0x28, 0x42, 0x6f, 0xbb, 0x9c, 0xa4, 0xfa,
87411 - 0x2c, 0x97, 0xbd, 0x70, 0x52, 0xef, 0x5f, 0xce, 0x71, 0x02, 0x71, 0x44,
87412 - 0xa7, 0x49, 0xc9, 0xa1, 0xae, 0xd2, 0x26, 0xe7, 0x59, 0x27, 0xb1, 0xb8,
87413 - 0x4f, 0xcf, 0x05, 0xf4, 0x62, 0x88, 0x44, 0x7a, 0x62, 0x4e, 0x9d, 0x33,
87414 - 0x21, 0xc6, 0xfd, 0x2a, 0x61, 0x3f, 0xd7, 0xc5, 0x30, 0xad, 0x4f, 0x60,
87415 - 0xff, 0x45, 0xbb, 0x45, 0x67, 0x28, 0xf6, 0x61, 0x5f, 0x73, 0x2f, 0xe4,
87416 - 0x42, 0x6f, 0x50, 0x89, 0x6c, 0x71, 0x86, 0xd4, 0x03, 0x3f, 0xf7, 0x98,
87417 - 0x64, 0x67, 0xe7, 0xf4, 0xdc, 0xe9, 0xbe, 0xa9, 0x3a, 0xbd, 0x52, 0x9d,
87418 - 0xbf, 0x2e, 0xd4, 0xf5, 0xee, 0x3e, 0x65, 0x2f, 0x8b, 0xdb, 0x89, 0x38,
87419 - 0xa3, 0x93, 0x5e, 0x73, 0xfb, 0x92, 0x53, 0xdf, 0x9d, 0xf6, 0x7f, 0x90,
87420 - 0xea, 0x30, 0xc8, 0xf5, 0xe8, 0x60, 0x9c, 0xed, 0xf1, 0xc0, 0x59, 0x82,
87421 - 0xfe, 0x5f, 0x1b, 0x4a, 0x52, 0x3d, 0x4f, 0x60, 0xfd, 0xd2, 0xf0, 0x15,
87422 - 0xf4, 0xe3, 0x18, 0xd5, 0x41, 0x44, 0x2f, 0x7c, 0x8c, 0x5d, 0x13, 0x34,
87423 - 0xdf, 0xe7, 0xfa, 0x8b, 0x9f, 0x42, 0x2f, 0x18, 0x4a, 0x9f, 0xb2, 0x4e,
87424 - 0x5f, 0x85, 0x7d, 0xf0, 0x7c, 0x92, 0xea, 0x77, 0x82, 0xa3, 0x1c, 0x33,
87425 - 0x88, 0x4f, 0x4a, 0xa1, 0xf3, 0xa4, 0x5a, 0x2b, 0xf4, 0x3d, 0x29, 0x2e,
87426 - 0x96, 0xf1, 0x7d, 0x3a, 0xa6, 0xce, 0x37, 0xe2, 0xf0, 0xce, 0x64, 0x08,
87427 - 0xfb, 0x4b, 0xf3, 0xe0, 0x8d, 0x7b, 0x1f, 0x29, 0x7d, 0x2c, 0x7b, 0x0f,
87428 - 0xf6, 0xd9, 0xc9, 0x39, 0x76, 0xec, 0x47, 0xfd, 0xd6, 0xfc, 0xb0, 0x67,
87429 - 0x58, 0x46, 0x03, 0xd4, 0x3f, 0x9f, 0xb0, 0x86, 0x21, 0x5f, 0xa7, 0xef,
87430 - 0x7f, 0xf9, 0x4a, 0x54, 0xb7, 0x53, 0x0d, 0x81, 0x2b, 0xba, 0x3e, 0x2c,
87431 - 0x13, 0xfa, 0x5c, 0x90, 0x3b, 0xc5, 0xfd, 0x9c, 0xb5, 0x15, 0xde, 0xb9,
87432 - 0x8f, 0x99, 0xed, 0xf0, 0x0e, 0x39, 0xdc, 0x0d, 0x19, 0xea, 0x22, 0xbe,
87433 - 0xf8, 0x17, 0xb8, 0xe7, 0xbc, 0x36, 0xcd, 0x15, 0x56, 0xab, 0xf8, 0x24,
87434 - 0x21, 0x71, 0xe9, 0xc2, 0xa9, 0x9c, 0x03, 0xe2, 0x57, 0xd9, 0x07, 0x8d,
87435 - 0x37, 0xe5, 0x30, 0x2c, 0xa6, 0xd8, 0xef, 0x24, 0xd7, 0xe3, 0x2c, 0xd7,
87436 - 0xe3, 0x37, 0x96, 0xd3, 0x31, 0x5d, 0x07, 0xc8, 0x8b, 0x34, 0xff, 0x69,
87437 - 0x8f, 0x7b, 0x43, 0xdf, 0x0f, 0xe8, 0xcf, 0x32, 0xf7, 0xf3, 0x2d, 0xe7,
87438 - 0x9e, 0xd0, 0x75, 0xdd, 0xea, 0xbe, 0xd0, 0xf8, 0xc7, 0xfa, 0xe8, 0xa4,
87439 - 0xe7, 0x39, 0x4b, 0x5f, 0x76, 0xc2, 0x4d, 0x63, 0x17, 0xa4, 0x53, 0xdf,
87440 - 0x6e, 0x9a, 0xdf, 0x86, 0x96, 0xab, 0xfa, 0x7c, 0x2a, 0xcf, 0x5f, 0xf5,
87441 - 0xfc, 0x35, 0x2c, 0xcd, 0x92, 0x8c, 0x36, 0x5e, 0x56, 0xf1, 0x5a, 0x3d,
87442 - 0xf8, 0xc3, 0x3d, 0xc7, 0xf5, 0xf5, 0x9d, 0x8e, 0x13, 0xb1, 0xf6, 0xdf,
87443 - 0x5c, 0x75, 0xcf, 0x2b, 0xe6, 0x33, 0xec, 0xe0, 0xbb, 0x79, 0x80, 0xfb,
87444 - 0xc0, 0x32, 0xf5, 0xa8, 0xf2, 0x3b, 0xc2, 0x71, 0xf2, 0x1c, 0xc7, 0xaa,
87445 - 0xe1, 0x0b, 0x95, 0xe7, 0xfa, 0x86, 0xe6, 0x09, 0x8d, 0x8f, 0x2a, 0x5f,
87446 - 0xe8, 0x3e, 0x50, 0xfc, 0xec, 0xcd, 0x55, 0xb5, 0xbf, 0x6d, 0x1b, 0xfe,
87447 - 0x58, 0x75, 0xfc, 0xdd, 0x72, 0x78, 0x22, 0x49, 0x71, 0x0f, 0xb3, 0xea,
87448 - 0xe6, 0xc1, 0x3f, 0x24, 0x0f, 0xaa, 0xef, 0xa6, 0x69, 0x39, 0xf3, 0xc2,
87449 - 0xfc, 0x37, 0xa3, 0xe2, 0xa5, 0x39, 0xff, 0xb4, 0xbe, 0xbf, 0x64, 0xfe,
87450 - 0xcc, 0x93, 0x63, 0xb5, 0x7c, 0x77, 0xdb, 0x23, 0xee, 0x7f, 0xf5, 0xc7,
87451 - 0xf3, 0x95, 0x65, 0xbe, 0xcf, 0x51, 0x9e, 0x95, 0xf1, 0x3c, 0xe3, 0x25,
87452 - 0x57, 0xdf, 0x07, 0xf4, 0x15, 0xf6, 0xb2, 0xbf, 0x9a, 0xf7, 0xfa, 0xb4,
87453 - 0x7f, 0xa8, 0x76, 0x4f, 0xad, 0x7d, 0x7d, 0xff, 0x03, 0x5b, 0xf0, 0xf8,
87454 - 0xe7, 0x1b, 0x78, 0x7f, 0x7d, 0xb6, 0x51, 0x7d, 0x4f, 0x79, 0xe2, 0xc4,
87455 - 0x16, 0x74, 0x3f, 0x85, 0x25, 0x9e, 0xe9, 0xbd, 0x26, 0xb4, 0xbd, 0x3f,
87456 - 0x88, 0xf7, 0xa4, 0x60, 0xfc, 0x9e, 0x7b, 0x98, 0xfd, 0x64, 0xc0, 0xc7,
87457 - 0x2f, 0x9c, 0xa1, 0xfe, 0xbe, 0x79, 0xf6, 0x3e, 0xf1, 0xf2, 0x7b, 0x2f,
87458 - 0x5f, 0x53, 0x7e, 0x77, 0x8b, 0xd5, 0x19, 0x8b, 0xf2, 0x1a, 0xda, 0x0b,
87459 - 0xf3, 0xfb, 0x87, 0xea, 0xfb, 0xad, 0xfc, 0x9a, 0x8c, 0x07, 0x69, 0x37,
87460 - 0xe1, 0x7e, 0x97, 0x6c, 0xce, 0x13, 0x73, 0x7f, 0x24, 0x81, 0x7d, 0x9a,
87461 - 0xbf, 0xdc, 0xf8, 0x79, 0x77, 0xa3, 0x7a, 0xff, 0xc0, 0xcd, 0xad, 0x83,
87462 - 0xde, 0x73, 0x71, 0xb2, 0xaf, 0x36, 0x4e, 0x46, 0xac, 0x94, 0xe1, 0x7f,
87463 - 0x84, 0x79, 0x65, 0x9c, 0x13, 0xf9, 0x29, 0x9a, 0xa0, 0x78, 0x85, 0xe3,
87464 - 0x84, 0x6b, 0x91, 0x8a, 0xe1, 0xdc, 0x85, 0xa7, 0xf0, 0xbd, 0x10, 0xc7,
87465 - 0x7a, 0x6b, 0x1c, 0xef, 0xcd, 0x91, 0xb0, 0x45, 0xf6, 0xad, 0x71, 0xc8,
87466 - 0x14, 0xf3, 0xcf, 0x8a, 0xc3, 0xcb, 0x90, 0xcb, 0xa1, 0xad, 0x78, 0x19,
87467 - 0xf7, 0xdb, 0xf5, 0x90, 0x5a, 0x97, 0x8f, 0xa0, 0x0c, 0x78, 0x69, 0xa8,
87468 - 0xdb, 0xa2, 0xef, 0xa3, 0x19, 0xe0, 0x48, 0x74, 0x7a, 0x9f, 0xab, 0x0d,
87469 - 0xfc, 0xd2, 0x5a, 0xe5, 0xef, 0x5a, 0x9e, 0xb7, 0x7a, 0x97, 0x1c, 0x1e,
87470 - 0x75, 0xe7, 0x01, 0xfe, 0x52, 0xfe, 0x49, 0x95, 0x7c, 0xb5, 0x13, 0x7e,
87471 - 0x37, 0x18, 0x2f, 0xbf, 0xf3, 0xbd, 0xdf, 0x24, 0xbe, 0x2a, 0xa3, 0x0e,
87472 - 0x2b, 0xe5, 0xfa, 0xfe, 0xe8, 0x3c, 0x74, 0x1c, 0x9c, 0x4b, 0x9f, 0xb3,
87473 - 0x1a, 0x17, 0x79, 0x9d, 0xe1, 0xfc, 0xef, 0xd0, 0xfb, 0x2f, 0xc5, 0xe7,
87474 - 0x55, 0x7e, 0xb1, 0x7e, 0x94, 0xee, 0xa1, 0xa0, 0x7c, 0xdf, 0x6b, 0xdd,
87475 - 0x7d, 0x3f, 0x8c, 0x50, 0x5e, 0x8d, 0x72, 0x41, 0xef, 0x77, 0x9f, 0xbb,
87476 - 0x39, 0x0f, 0xb9, 0x90, 0xd7, 0x7d, 0xd3, 0xfd, 0xd5, 0xfd, 0x44, 0xdf,
87477 - 0x53, 0x3d, 0x64, 0xd6, 0x5f, 0xe8, 0x21, 0x9c, 0xe7, 0x0b, 0xeb, 0xee,
87478 - 0x77, 0xf2, 0xc9, 0xac, 0xb2, 0x7f, 0x4d, 0x7c, 0x43, 0xf3, 0x28, 0xc4,
87479 - 0xf7, 0x2c, 0xab, 0x7c, 0x29, 0xf8, 0xaf, 0x96, 0x77, 0x0d, 0x71, 0x3d,
87480 - 0xc8, 0xcb, 0x7d, 0x7a, 0xee, 0xdc, 0xf3, 0x5b, 0xad, 0xbb, 0x3a, 0xc7,
87481 - 0x13, 0x1e, 0xfc, 0xa4, 0xcf, 0xa9, 0xec, 0xf3, 0x8c, 0x5f, 0x53, 0x0c,
87482 - 0x1d, 0xc1, 0xfb, 0xb0, 0x21, 0x8c, 0x39, 0x69, 0x08, 0x7b, 0xdd, 0xef,
87483 - 0x12, 0x3f, 0x11, 0xfa, 0x05, 0xb3, 0xa7, 0x31, 0x42, 0xe7, 0xba, 0x74,
87484 - 0xe3, 0x6b, 0x32, 0x7b, 0x7f, 0x29, 0x86, 0xf5, 0x96, 0x21, 0x84, 0x09,
87485 - 0x10, 0xde, 0x0d, 0x71, 0x01, 0xf3, 0xf0, 0xce, 0x02, 0xe4, 0xdb, 0xe2,
87486 - 0x49, 0xf8, 0x69, 0x9c, 0xa5, 0xfb, 0xd4, 0x6c, 0x41, 0x79, 0x4b, 0x4b,
87487 - 0x8c, 0xf3, 0xb4, 0x9f, 0x7e, 0xaf, 0x56, 0x44, 0x9c, 0x7f, 0x47, 0xf0,
87488 - 0xbc, 0x02, 0xcf, 0x81, 0x9a, 0xbe, 0xef, 0x14, 0xdf, 0x4a, 0x8f, 0x4b,
87489 - 0xfc, 0xc2, 0x0d, 0xe3, 0xdc, 0xac, 0xc7, 0xb9, 0xee, 0x6f, 0xda, 0xef,
87490 - 0x89, 0xeb, 0x81, 0xcd, 0xb8, 0xd6, 0xf9, 0xa9, 0x3a, 0xff, 0xe9, 0xbc,
87491 - 0x7b, 0x37, 0xfb, 0x57, 0xfb, 0x62, 0x12, 0xdf, 0xff, 0x17, 0xae, 0x21,
87492 - 0x8f, 0x76, 0xa9, 0xf8, 0x2d, 0x35, 0xf8, 0xf4, 0x9e, 0x3b, 0xf0, 0x9b,
87493 - 0x21, 0x79, 0xfc, 0x6f, 0x6a, 0x8c, 0x09, 0xd0, 0x18, 0x10, 0x00, 0x00,
87494 - 0x00 };
87495 + 0xad, 0x58, 0x4d, 0x4c, 0x54, 0x57, 0x14, 0xbe, 0xf3, 0xc3, 0xcc, 0x30,
87496 + 0xbc, 0x99, 0x41, 0x98, 0x0e, 0x7f, 0xa6, 0x22, 0x28, 0x82, 0x1d, 0x14,
87497 + 0x06, 0xd4, 0xb6, 0x36, 0xa9, 0xc1, 0x06, 0xb5, 0xb5, 0x11, 0x69, 0x63,
87498 + 0xba, 0x68, 0x8a, 0x60, 0x45, 0x06, 0xc1, 0x10, 0x31, 0x2e, 0xdc, 0x74,
87499 + 0x02, 0x16, 0xbb, 0x98, 0x85, 0x98, 0xe2, 0x60, 0xd3, 0x18, 0x52, 0x37,
87500 + 0xa6, 0x3b, 0x92, 0xb6, 0x62, 0xbb, 0x30, 0x31, 0x2d, 0xb1, 0xb6, 0x89,
87501 + 0x36, 0xb1, 0x7f, 0x9b, 0xa6, 0xa6, 0x5a, 0x8a, 0x4a, 0x2d, 0xda, 0xb2,
87502 + 0xaa, 0xd0, 0x77, 0xcf, 0x77, 0xee, 0x9b, 0x37, 0x33, 0x6f, 0x44, 0x53,
87503 + 0xd9, 0x1c, 0xee, 0x7d, 0xe7, 0x9e, 0x7b, 0xce, 0x77, 0x7e, 0xef, 0xe4,
87504 + 0x0b, 0x21, 0x9c, 0x22, 0x36, 0xbe, 0x4c, 0xa7, 0x62, 0x89, 0xdd, 0xe1,
87505 + 0xd1, 0xc9, 0x82, 0x10, 0x39, 0xc5, 0x72, 0x2d, 0xec, 0x82, 0xff, 0x56,
87506 + 0xe7, 0x13, 0xb9, 0x36, 0x2e, 0xbf, 0xbb, 0xc5, 0xeb, 0x76, 0x7c, 0x77,
87507 + 0x0a, 0x49, 0x03, 0x42, 0xc4, 0x24, 0xcd, 0x67, 0xba, 0x9d, 0xe9, 0x4a,
87508 + 0x1b, 0xe8, 0x46, 0xa6, 0x51, 0xa6, 0x2b, 0x98, 0xd6, 0xdb, 0x41, 0x57,
87509 + 0x31, 0xad, 0xe6, 0x7d, 0x8d, 0xcf, 0xd7, 0xf2, 0xfe, 0x7b, 0x4c, 0x8f,
87510 + 0xf2, 0xbe, 0xa6, 0xf3, 0x29, 0xbd, 0xe4, 0x7a, 0x66, 0x41, 0xc4, 0xf4,
87511 + 0x33, 0x42, 0xdf, 0xae, 0x51, 0xfb, 0x1a, 0x91, 0x58, 0x0d, 0xf4, 0x7e,
87512 + 0xad, 0x5c, 0xf2, 0xfd, 0x61, 0xc1, 0x27, 0xf7, 0x6f, 0x2e, 0x28, 0x79,
87513 + 0x03, 0x0e, 0xb9, 0xfe, 0x55, 0x5f, 0xdb, 0xe4, 0x32, 0x18, 0x82, 0x98,
87514 + 0x60, 0x71, 0x5c, 0xca, 0x71, 0x88, 0xd1, 0x61, 0x0f, 0xa1, 0x72, 0x52,
87515 + 0xc3, 0x3a, 0x46, 0x78, 0xd8, 0xf4, 0x35, 0xcb, 0x63, 0x5a, 0xe2, 0xc3,
87516 + 0xbd, 0xbb, 0xca, 0x71, 0xdf, 0x8f, 0xcf, 0x80, 0x2f, 0x16, 0x50, 0x80,
87517 + 0xe2, 0xfb, 0x32, 0xc1, 0xdf, 0xf7, 0xcb, 0xf5, 0xac, 0xad, 0xd0, 0x06,
87518 + 0x5c, 0xdd, 0xcc, 0x65, 0xcf, 0x91, 0xfb, 0xcb, 0x1b, 0x4f, 0x0e, 0x83,
87519 + 0xbf, 0xad, 0x1c, 0xfb, 0x4f, 0x87, 0xa5, 0x3c, 0x97, 0x88, 0x31, 0x15,
87520 + 0xb5, 0xa4, 0x97, 0x2d, 0x56, 0x9b, 0x2a, 0xff, 0x97, 0x61, 0xac, 0xda,
87521 + 0x7d, 0x90, 0xeb, 0x4d, 0x91, 0x1b, 0xca, 0x90, 0xfb, 0x53, 0xae, 0x59,
87522 + 0xbe, 0xdf, 0x06, 0xf9, 0xde, 0x45, 0xe5, 0x77, 0xf8, 0x40, 0x0b, 0xc3,
87523 + 0x56, 0xf7, 0xe4, 0x2e, 0xa2, 0x7f, 0xf7, 0xa2, 0xf2, 0x8f, 0x18, 0xfa,
87524 + 0x2b, 0xff, 0xa9, 0xef, 0xe9, 0x38, 0xd2, 0xf2, 0xe3, 0xd8, 0x5a, 0x16,
87525 + 0xb3, 0x5a, 0xd9, 0xcf, 0x7a, 0x3a, 0x40, 0x37, 0x85, 0x89, 0xc4, 0xf7,
87526 + 0x70, 0x80, 0x37, 0x57, 0xc9, 0xfb, 0x0b, 0x84, 0xd3, 0x2e, 0xe5, 0xd5,
87527 + 0x79, 0x5c, 0xe7, 0xb1, 0xff, 0x06, 0xfb, 0xeb, 0x6d, 0x36, 0xe8, 0xa6,
87528 + 0x57, 0x02, 0xb4, 0xb0, 0xd0, 0x99, 0xc7, 0xf2, 0xd9, 0xdf, 0xb1, 0x3c,
87529 + 0x9c, 0x9f, 0xd4, 0xa4, 0x9e, 0x5f, 0xeb, 0xf1, 0x63, 0xe5, 0x7f, 0xc7,
87530 + 0x43, 0xfc, 0x8f, 0xf3, 0x4b, 0x56, 0xe1, 0xeb, 0xf1, 0x4e, 0xac, 0xcb,
87531 + 0xce, 0xe4, 0x13, 0x4e, 0xa3, 0xe3, 0x56, 0xf1, 0x92, 0x2e, 0x5f, 0xcf,
87532 + 0xe3, 0x00, 0xee, 0x11, 0x15, 0x1e, 0x52, 0x0e, 0xf8, 0xea, 0x3c, 0xb5,
87533 + 0x96, 0x38, 0x89, 0x93, 0x2b, 0xe5, 0xbe, 0x5d, 0xb4, 0x3a, 0x34, 0xba,
87534 + 0xa7, 0x35, 0xaa, 0xf2, 0x06, 0xdf, 0x3b, 0x5d, 0x44, 0x8a, 0xdb, 0x87,
87535 + 0xa4, 0xdd, 0x01, 0xb1, 0xdb, 0x1e, 0x20, 0x7e, 0xe0, 0xe4, 0xf0, 0x68,
87536 + 0x9f, 0x81, 0xff, 0xc2, 0x32, 0x8d, 0x6c, 0xea, 0x6c, 0xc0, 0xb9, 0x60,
87537 + 0x04, 0x74, 0x24, 0x92, 0x23, 0x49, 0xb8, 0xb3, 0x9f, 0x96, 0x6b, 0x7e,
87538 + 0xab, 0xf7, 0x10, 0x5f, 0xac, 0x56, 0xe5, 0xa5, 0xf2, 0xa3, 0xc4, 0xed,
87539 + 0x90, 0x91, 0x87, 0xa2, 0x12, 0x38, 0xff, 0xbe, 0x52, 0xf2, 0xeb, 0x60,
87540 + 0x57, 0xe0, 0x9e, 0xa4, 0x7e, 0xe6, 0xbc, 0xee, 0x35, 0xe5, 0xf5, 0xe3,
87541 + 0xc5, 0xc5, 0x26, 0xc2, 0x67, 0x13, 0xe3, 0x54, 0xce, 0x71, 0xb8, 0xd4,
87542 + 0x22, 0x0e, 0x03, 0xf4, 0xff, 0xad, 0xa6, 0x7c, 0xc2, 0x79, 0x07, 0xf6,
87543 + 0x4f, 0x34, 0x9f, 0x83, 0x9f, 0xb6, 0x11, 0x1e, 0xc2, 0x7b, 0xf4, 0x53,
87544 + 0x9c, 0x6a, 0xa7, 0xfc, 0xef, 0x6d, 0xec, 0xfc, 0x1c, 0xeb, 0x0e, 0x87,
87545 + 0x5c, 0xef, 0xd7, 0xf6, 0x4c, 0x80, 0x3f, 0x67, 0x10, 0xb8, 0xef, 0xe0,
87546 + 0x5b, 0xb6, 0x39, 0xa8, 0xde, 0xc4, 0x5d, 0x83, 0xb4, 0xd4, 0x26, 0xe9,
87547 + 0x7b, 0xbe, 0x38, 0x36, 0x8e, 0xef, 0x07, 0xf2, 0xa4, 0x9d, 0xaf, 0x1a,
87548 + 0x75, 0x29, 0xea, 0xc2, 0xf9, 0xf8, 0x30, 0xea, 0xca, 0xf4, 0x27, 0x72,
87549 + 0xdd, 0x16, 0x9e, 0x06, 0x7f, 0x38, 0x3a, 0xc4, 0x82, 0xed, 0xc0, 0xf1,
87550 + 0x96, 0x1d, 0xfc, 0x1c, 0xae, 0x5e, 0x27, 0xf9, 0xd1, 0x26, 0xb4, 0x66,
87551 + 0xd0, 0x77, 0xe9, 0xfb, 0xbf, 0xb6, 0x38, 0xe1, 0xb6, 0xcb, 0xef, 0x3c,
87552 + 0xa7, 0xf0, 0x61, 0x1a, 0x50, 0x76, 0x81, 0x3e, 0x6a, 0x3e, 0x0c, 0x69,
87553 + 0xd9, 0xf2, 0x80, 0xfd, 0x59, 0xb3, 0x58, 0x1e, 0x80, 0x36, 0x57, 0x81,
87554 + 0xba, 0x2a, 0xa9, 0x9e, 0x3c, 0x46, 0x3e, 0xb0, 0x5e, 0x19, 0xf9, 0x86,
87555 + 0xdd, 0x64, 0x9c, 0x12, 0xd1, 0xe3, 0x33, 0x25, 0x5e, 0x39, 0x3f, 0x96,
87556 + 0xeb, 0x7e, 0x50, 0x71, 0x27, 0x05, 0xba, 0xc5, 0x7e, 0x96, 0x1b, 0x65,
87557 + 0x3c, 0x7a, 0x18, 0x8f, 0x19, 0xa6, 0x07, 0xf2, 0x14, 0x0e, 0xa0, 0xc7,
87558 + 0x34, 0xdc, 0xdb, 0x1a, 0x95, 0x7e, 0x0c, 0x5a, 0xf4, 0x17, 0xd5, 0x47,
87559 + 0xe0, 0xa7, 0x51, 0xf6, 0xeb, 0x29, 0xa3, 0x9f, 0x28, 0x7c, 0xb3, 0xf5,
87560 + 0x95, 0xd4, 0x7c, 0x4a, 0xb3, 0x33, 0xfe, 0x55, 0x05, 0x8e, 0x17, 0x54,
87561 + 0x82, 0x1a, 0xf8, 0x56, 0x51, 0x1e, 0xfb, 0x8b, 0x26, 0x94, 0x7d, 0x52,
87562 + 0xbf, 0x3b, 0x2a, 0x0f, 0xfd, 0x89, 0x01, 0xa2, 0xde, 0x82, 0x33, 0xf2,
87563 + 0x9e, 0x52, 0x8b, 0xba, 0x92, 0x9a, 0xcf, 0xe9, 0xf8, 0x1e, 0xf0, 0x51,
87564 + 0xc1, 0x6d, 0xbc, 0x32, 0x95, 0x9a, 0xb7, 0xc8, 0x4f, 0xb7, 0x11, 0xdf,
87565 + 0xc1, 0xf5, 0xec, 0x07, 0xa6, 0xa1, 0x0d, 0x52, 0x6e, 0x0b, 0xdf, 0x53,
87566 + 0xc7, 0xf7, 0x68, 0xa6, 0xba, 0x21, 0xf5, 0xfc, 0x73, 0x5e, 0xd5, 0x0b,
87567 + 0x15, 0x1f, 0xc9, 0xba, 0xa1, 0xfc, 0x40, 0xf7, 0x87, 0xaf, 0x4c, 0xc9,
87568 + 0xf3, 0x65, 0x8b, 0xd4, 0x91, 0x1b, 0x86, 0xbc, 0xef, 0x8d, 0x3a, 0x21,
87569 + 0xbf, 0xe7, 0x89, 0x17, 0x79, 0x99, 0x5a, 0x0f, 0xff, 0xd2, 0xeb, 0x21,
87570 + 0xd9, 0xe1, 0xd1, 0xce, 0x71, 0xfd, 0xeb, 0x97, 0xf7, 0x14, 0xb3, 0xde,
87571 + 0xc5, 0xaa, 0xaf, 0xe9, 0x7a, 0x73, 0x9d, 0x6c, 0x33, 0xd7, 0xbb, 0x1f,
87572 + 0xe6, 0x93, 0x75, 0x4b, 0xae, 0xaf, 0xcd, 0x67, 0xce, 0x27, 0x96, 0xb8,
87573 + 0xc6, 0x44, 0x00, 0x73, 0x58, 0x2c, 0x20, 0xcf, 0xe5, 0xd8, 0x32, 0xeb,
87574 + 0x5f, 0xba, 0x1d, 0xc0, 0xa5, 0xdd, 0xee, 0x23, 0xbe, 0xeb, 0x7d, 0xf2,
87575 + 0xdc, 0xb4, 0x50, 0xf6, 0xa2, 0x0e, 0x96, 0x73, 0xbf, 0x5f, 0xca, 0x7a,
87576 + 0xeb, 0xf2, 0x6a, 0x29, 0x1f, 0x3c, 0xd7, 0xfb, 0xcc, 0x7a, 0x5f, 0x98,
87577 + 0xcf, 0x7e, 0x9f, 0x75, 0x1c, 0xf4, 0x71, 0x9f, 0xe5, 0x39, 0xc1, 0xb3,
87578 + 0xe7, 0x0b, 0xa5, 0x17, 0xdf, 0x1f, 0x50, 0x7a, 0x68, 0xe4, 0xa7, 0xa9,
87579 + 0x7e, 0x29, 0xa7, 0x50, 0x70, 0xd8, 0x88, 0xde, 0x6a, 0xd4, 0xdf, 0x99,
87580 + 0xbd, 0xb0, 0xa3, 0xb7, 0x4a, 0xea, 0xa1, 0x7b, 0x25, 0x86, 0x3c, 0x17,
87581 + 0xdc, 0x8f, 0xbe, 0x1c, 0xb6, 0xf2, 0xeb, 0xb7, 0xcc, 0x17, 0x64, 0xfb,
87582 + 0xf2, 0xd9, 0xbe, 0xb0, 0x48, 0xaf, 0xf3, 0x6d, 0xe5, 0xd4, 0x0f, 0x98,
87583 + 0xef, 0x05, 0xd5, 0x0f, 0x74, 0x3e, 0xc2, 0x99, 0xe5, 0x58, 0xe1, 0x64,
87584 + 0x25, 0x67, 0x82, 0xe3, 0xa0, 0x8b, 0xf9, 0x9c, 0x59, 0xe7, 0x9b, 0xb9,
87585 + 0x55, 0xd4, 0x57, 0x4e, 0x1f, 0xa1, 0xfe, 0xe0, 0x33, 0xe2, 0x34, 0xd5,
87586 + 0x8e, 0xe3, 0x4f, 0x10, 0x77, 0x9a, 0xff, 0xc4, 0x3e, 0x7f, 0x36, 0x7c,
87587 + 0x9d, 0x72, 0x7b, 0x6c, 0x76, 0x42, 0xf9, 0x47, 0x23, 0x7b, 0xa7, 0xfa,
87588 + 0xd5, 0x9c, 0x6f, 0xc6, 0xdd, 0x6e, 0xc2, 0x1d, 0xfc, 0x98, 0xef, 0xfe,
87589 + 0x0f, 0xde, 0x56, 0xf3, 0x41, 0x9f, 0x91, 0x9f, 0x03, 0x2e, 0xab, 0xfa,
87590 + 0xbf, 0xd6, 0x88, 0x97, 0x83, 0x3c, 0xe7, 0xcd, 0x69, 0xf4, 0x4f, 0x64,
87591 + 0x26, 0x4e, 0x4b, 0xad, 0xe4, 0xac, 0xe4, 0x5b, 0x1d, 0x39, 0xc8, 0x76,
87592 + 0x5d, 0x76, 0xc0, 0xee, 0xae, 0xbd, 0x58, 0x5f, 0xe1, 0x7a, 0x7d, 0x8f,
87593 + 0xeb, 0xe3, 0x4e, 0x0f, 0xe8, 0x4c, 0x35, 0xe1, 0x11, 0x39, 0x78, 0x5e,
87594 + 0xc9, 0x27, 0xb9, 0xda, 0x1c, 0xe3, 0xf9, 0x92, 0x83, 0xed, 0xac, 0x20,
87595 + 0x3f, 0x46, 0xee, 0x52, 0x3d, 0x70, 0x8a, 0xa6, 0xe5, 0x92, 0x96, 0xe8,
87596 + 0xb8, 0xb1, 0x3e, 0x1b, 0x41, 0x5b, 0xd5, 0x80, 0x5f, 0x93, 0xee, 0x67,
87597 + 0x6c, 0xbb, 0x2a, 0xf8, 0x7c, 0x3b, 0xd6, 0x6e, 0xae, 0x67, 0x09, 0xd6,
87598 + 0xeb, 0xfd, 0x6a, 0x50, 0x7f, 0x0d, 0xe6, 0x84, 0x29, 0xea, 0x0b, 0x81,
87599 + 0x48, 0xff, 0x04, 0xec, 0xe9, 0xd9, 0x0c, 0x7b, 0xef, 0x33, 0x0e, 0x4c,
87600 + 0xfd, 0xa7, 0x06, 0xa9, 0xef, 0xf8, 0x87, 0x30, 0x67, 0xf8, 0x5d, 0x83,
87601 + 0xb0, 0xa3, 0x67, 0x0e, 0xeb, 0xfb, 0xcf, 0x81, 0xfe, 0xf3, 0x3c, 0xce,
87602 + 0x1d, 0x3a, 0xc2, 0xf8, 0x6c, 0xb6, 0x3e, 0xd7, 0xf5, 0x37, 0xf8, 0x7a,
87603 + 0xab, 0xe5, 0xfd, 0x6f, 0x8d, 0xf1, 0xfc, 0x21, 0xa2, 0x34, 0xef, 0xbc,
87604 + 0xa9, 0xcd, 0xf1, 0xba, 0x9b, 0xfb, 0xe2, 0x6d, 0x9e, 0x17, 0x7a, 0xd2,
87605 + 0xe6, 0x85, 0x69, 0xd4, 0xe9, 0xb1, 0xb9, 0xb8, 0xdc, 0xd0, 0xeb, 0x65,
87606 + 0xae, 0x95, 0x7f, 0x7d, 0x91, 0x22, 0xf6, 0x5b, 0x70, 0x1d, 0xe8, 0xc8,
87607 + 0x3a, 0xf4, 0xeb, 0x9e, 0xc3, 0x8c, 0x4f, 0x23, 0xf9, 0x69, 0xcd, 0xec,
87608 + 0x44, 0xfa, 0x79, 0x19, 0x3f, 0xed, 0xf3, 0x78, 0x3f, 0x6e, 0xd6, 0xa9,
87609 + 0xba, 0x0f, 0xe7, 0x3a, 0xe8, 0x7d, 0x71, 0xcf, 0x98, 0x3f, 0xa7, 0x49,
87610 + 0xff, 0xb2, 0xb1, 0x39, 0x92, 0x53, 0x2a, 0x0a, 0x29, 0x0e, 0x4b, 0xfc,
87611 + 0xb3, 0xb0, 0x27, 0x92, 0x60, 0x1c, 0xfa, 0x9e, 0x05, 0x3d, 0xcc, 0x71,
87612 + 0xa0, 0xfc, 0x7b, 0x75, 0x83, 0x46, 0xe7, 0xa6, 0xfa, 0x71, 0x8f, 0xca,
87613 + 0xa3, 0xf4, 0xb9, 0x58, 0xc5, 0x45, 0x49, 0x03, 0xad, 0x45, 0xd7, 0x21,
87614 + 0xb2, 0x53, 0xf7, 0xa7, 0x8c, 0x27, 0x1d, 0x2b, 0xee, 0xdb, 0xa9, 0xf1,
87615 + 0x22, 0xe3, 0x49, 0xc5, 0xad, 0x39, 0xce, 0xcc, 0x71, 0x94, 0x1a, 0x3f,
87616 + 0x7e, 0xea, 0x2f, 0x7a, 0x31, 0xa0, 0x77, 0x89, 0x2b, 0x92, 0x18, 0x7e,
87617 + 0x38, 0x8e, 0xa7, 0x80, 0x63, 0x84, 0xf5, 0xd6, 0xa2, 0x34, 0x8f, 0x3e,
87618 + 0x25, 0x86, 0xd8, 0x9f, 0xd3, 0xd5, 0x9c, 0xff, 0x15, 0xf0, 0x67, 0xdf,
87619 + 0x0a, 0xe8, 0xd3, 0xc7, 0x79, 0x74, 0x87, 0xe7, 0x0c, 0xc4, 0x81, 0x5b,
87620 + 0xeb, 0x9c, 0x60, 0xbf, 0x73, 0x3c, 0x76, 0x33, 0x0e, 0xb7, 0x81, 0x83,
87621 + 0xa6, 0x70, 0x88, 0x1a, 0x38, 0xa8, 0x7a, 0x63, 0x96, 0x53, 0xa0, 0xc7,
87622 + 0x93, 0xa4, 0x4b, 0xb4, 0xab, 0x34, 0x8f, 0xe5, 0xb0, 0xdd, 0x3a, 0x5f,
87623 + 0x83, 0xb4, 0xcf, 0xcf, 0xf6, 0xf9, 0xc4, 0xbe, 0x35, 0xe6, 0x73, 0x79,
87624 + 0x7c, 0xce, 0xab, 0x9f, 0xc3, 0x3e, 0xf2, 0x55, 0xcb, 0x82, 0xaf, 0xc4,
87625 + 0x51, 0xc9, 0x4d, 0xcf, 0x4b, 0x33, 0x9e, 0x54, 0xa9, 0xe9, 0x0f, 0xf5,
87626 + 0x48, 0xf7, 0x1b, 0xd5, 0x2d, 0xcd, 0xa8, 0x43, 0xf7, 0xa8, 0xae, 0x7b,
87627 + 0x4f, 0xf7, 0xa2, 0x6e, 0x9c, 0xee, 0x3d, 0xcb, 0x7d, 0x98, 0x71, 0x69,
87628 + 0xa1, 0xf7, 0x83, 0x8e, 0x5d, 0x45, 0x6a, 0x1d, 0x4a, 0xd5, 0xa3, 0xcc,
87629 + 0xa4, 0x87, 0xba, 0x77, 0xb1, 0x39, 0x01, 0x73, 0xea, 0x16, 0x9a, 0x13,
87630 + 0x3c, 0xc6, 0xbc, 0x9d, 0xda, 0x4f, 0x26, 0x1f, 0x3c, 0x6e, 0x3f, 0xd9,
87631 + 0xd9, 0x60, 0xbe, 0xaf, 0x46, 0x4c, 0x8e, 0xe3, 0x9e, 0x16, 0xee, 0xdf,
87632 + 0xbb, 0x39, 0xcf, 0xaf, 0x7b, 0x03, 0x74, 0x6f, 0xc7, 0x2b, 0x64, 0xaf,
87633 + 0x08, 0xe5, 0xc1, 0xbe, 0x8e, 0xed, 0xf8, 0xde, 0xe1, 0xc3, 0x7e, 0xa9,
87634 + 0x0f, 0xbf, 0xa3, 0xb4, 0xb8, 0x35, 0xe2, 0x2f, 0xf5, 0x81, 0x86, 0xb8,
87635 + 0x3e, 0x4c, 0x1a, 0xef, 0x09, 0xd0, 0x51, 0x57, 0xb6, 0xf7, 0x04, 0xde,
87636 + 0x65, 0x17, 0x5d, 0xa8, 0x1f, 0xa2, 0x06, 0x73, 0x74, 0x53, 0x95, 0x46,
87637 + 0xdf, 0x5b, 0x6b, 0xd0, 0xa7, 0x51, 0x9f, 0x33, 0xed, 0x2a, 0x43, 0xbc,
87638 + 0x96, 0x26, 0xdf, 0x1d, 0xe6, 0xf7, 0x89, 0x16, 0x49, 0x18, 0xf3, 0x7f,
87639 + 0xaa, 0x1e, 0xc8, 0x33, 0x29, 0x9f, 0x96, 0xfa, 0x9c, 0xfd, 0x28, 0xef,
87640 + 0x12, 0x07, 0xcf, 0x6d, 0x77, 0xf9, 0x77, 0x82, 0x42, 0x71, 0x69, 0x1c,
87641 + 0x38, 0x4c, 0x8e, 0x5b, 0xe5, 0xb1, 0xd4, 0x43, 0xdd, 0x03, 0xbb, 0x94,
87642 + 0x9d, 0xc9, 0x7b, 0xa1, 0xd7, 0x5e, 0xd6, 0xff, 0x06, 0xfd, 0x9e, 0x11,
87643 + 0x62, 0x7b, 0xa5, 0x5c, 0xec, 0x6f, 0xa5, 0xf7, 0x53, 0x8e, 0x88, 0x19,
87644 + 0xeb, 0xd4, 0x77, 0x4d, 0x0b, 0xe9, 0x55, 0xc0, 0xfd, 0x3d, 0x64, 0x9a,
87645 + 0x43, 0xc0, 0x1f, 0xac, 0x03, 0x1d, 0xa9, 0x53, 0x7e, 0x53, 0xfe, 0x55,
87646 + 0xfe, 0x84, 0xdf, 0x43, 0xf5, 0xc4, 0xd6, 0xd8, 0x51, 0x4f, 0x09, 0x5f,
87647 + 0xd7, 0x31, 0xab, 0xfa, 0x3d, 0xce, 0xef, 0x0c, 0x4b, 0xfe, 0x77, 0xc4,
87648 + 0x77, 0x61, 0x34, 0xd8, 0x9f, 0x99, 0x26, 0xe7, 0x7c, 0xc1, 0x7f, 0xe6,
87649 + 0xf7, 0x82, 0x43, 0x5c, 0xcc, 0xe1, 0xed, 0x06, 0x35, 0xff, 0x66, 0x7b,
87650 + 0xf7, 0x48, 0x3b, 0xba, 0x1f, 0xa4, 0xcf, 0xd3, 0xc9, 0x79, 0x58, 0xd9,
87651 + 0x2b, 0xcf, 0xd5, 0x71, 0x1c, 0x7b, 0x44, 0xd3, 0x16, 0xfc, 0xce, 0xe1,
87652 + 0x77, 0x23, 0x6f, 0xfc, 0x6e, 0xab, 0xf7, 0xa9, 0x1e, 0x47, 0xb9, 0x54,
87653 + 0x30, 0x96, 0x16, 0xe4, 0x92, 0x7d, 0x27, 0x2e, 0x7f, 0x43, 0x6c, 0x1f,
87654 + 0x25, 0xf2, 0xb0, 0x5f, 0xd4, 0x84, 0x6b, 0x9c, 0x14, 0xf7, 0x0e, 0x71,
87655 + 0x14, 0x79, 0xf1, 0xe1, 0x08, 0xe8, 0x07, 0xe2, 0x65, 0xc8, 0x29, 0x18,
87656 + 0xa0, 0xbe, 0xea, 0x29, 0x02, 0xcc, 0xf1, 0x04, 0xc7, 0x7b, 0xb1, 0x9d,
87657 + 0x7e, 0x87, 0x5d, 0x10, 0x3e, 0xfe, 0x9d, 0x8c, 0xf3, 0x17, 0x71, 0xed,
87658 + 0x34, 0xf9, 0xff, 0x51, 0xe3, 0x1c, 0xfd, 0x33, 0xc1, 0x7e, 0xe7, 0x78,
87659 + 0xf7, 0xa4, 0xc7, 0xbb, 0xc2, 0xa9, 0xd8, 0x6e, 0x19, 0xdf, 0xeb, 0x33,
87660 + 0xe3, 0x5b, 0xe9, 0x97, 0xda, 0x3f, 0x33, 0xe5, 0xe3, 0x1d, 0x75, 0xe9,
87661 + 0x89, 0xc5, 0x37, 0xe8, 0xd6, 0x4a, 0x79, 0x7f, 0x51, 0xc6, 0xbc, 0x9c,
87662 + 0x9e, 0x7f, 0xa8, 0x77, 0xd5, 0x7a, 0x3c, 0xfc, 0x07, 0xd7, 0x0d, 0x36,
87663 + 0x4f, 0xf0, 0x16, 0x00, 0x00, 0x00 };
87664
87665 static u8 bnx2_TPAT_b09FwText[] = {
87666 - 0xbd, 0x58, 0x5d, 0x6c, 0x1c, 0x57, 0x15, 0x3e, 0x73, 0xe7, 0xee, 0xee,
87667 - 0x78, 0xb1, 0xe3, 0x71, 0x3b, 0xa4, 0xdb, 0x62, 0xc8, 0x8c, 0x7d, 0xfd,
87668 - 0x03, 0xb6, 0xc2, 0x94, 0x6e, 0xdb, 0xad, 0x18, 0x45, 0xc3, 0xec, 0xda,
87669 - 0xb1, 0xa2, 0x3c, 0xb8, 0x52, 0xa4, 0x46, 0x6a, 0x04, 0x66, 0x1d, 0x93,
87670 - 0x3e, 0xa6, 0x88, 0x07, 0xa4, 0x3e, 0x64, 0x59, 0x3b, 0xa9, 0x1f, 0x96,
87671 - 0x2c, 0xb8, 0xc8, 0x7e, 0x41, 0x28, 0x72, 0x6a, 0xbb, 0x48, 0x8b, 0x37,
87672 - 0x11, 0x48, 0x3c, 0x45, 0x8d, 0x1c, 0x14, 0x55, 0xea, 0x0b, 0x0f, 0xfc,
87673 - 0x3d, 0x46, 0x6a, 0x45, 0xfb, 0x50, 0x90, 0x55, 0xa9, 0xa8, 0x82, 0xe0,
87674 - 0xcb, 0x77, 0x66, 0x67, 0x9c, 0x4d, 0xec, 0x08, 0x9e, 0xb0, 0xb4, 0xba,
87675 - 0x33, 0x73, 0xef, 0x39, 0xf7, 0xdc, 0x73, 0xbe, 0xef, 0x9c, 0x73, 0x3d,
87676 - 0x64, 0x50, 0x9e, 0x92, 0xbf, 0x3e, 0xfc, 0x8a, 0xdf, 0xbd, 0xf8, 0x83,
87677 - 0x67, 0x8f, 0xbf, 0x70, 0x1c, 0x8f, 0xcf, 0x1b, 0xfd, 0x59, 0x49, 0xff,
87678 - 0xc7, 0x3f, 0x93, 0xc8, 0x4e, 0xed, 0xe0, 0x1f, 0x59, 0x22, 0xb8, 0xfd,
87679 - 0x54, 0xa4, 0xc8, 0x32, 0x83, 0xdf, 0x7c, 0x6d, 0x5e, 0x11, 0x85, 0xad,
87680 - 0x09, 0xb7, 0x4c, 0xff, 0xd6, 0x35, 0x47, 0x12, 0x7f, 0xff, 0x72, 0x70,
87681 - 0xff, 0xeb, 0xb7, 0x5e, 0xf4, 0x76, 0xaf, 0x99, 0x64, 0xd9, 0xc1, 0xb2,
87682 - 0xb4, 0x47, 0xc9, 0x1a, 0x84, 0xcc, 0xcf, 0xc7, 0xbe, 0x2d, 0xe8, 0x48,
87683 - 0xaa, 0xab, 0xa6, 0x85, 0xba, 0xa7, 0x6f, 0x8d, 0x29, 0xbb, 0x8e, 0x0d,
87684 - 0x6e, 0xb4, 0x5d, 0x8a, 0xda, 0x05, 0x7a, 0xb7, 0xed, 0xd0, 0xcd, 0xb6,
87685 - 0xa4, 0x85, 0xb7, 0x2e, 0xd1, 0x92, 0xef, 0x15, 0x2a, 0xa6, 0x45, 0x22,
87686 - 0xf0, 0x0a, 0x55, 0x72, 0x69, 0xc3, 0xf7, 0x6a, 0x73, 0xe6, 0x80, 0x61,
87687 - 0x05, 0x16, 0xbd, 0x31, 0x26, 0xe8, 0x9a, 0x73, 0x8e, 0xbe, 0xa7, 0xce,
87688 - 0xe2, 0x27, 0x49, 0xac, 0x48, 0xa3, 0xbc, 0x26, 0x49, 0xae, 0xf4, 0xd3,
87689 - 0x49, 0x5f, 0xeb, 0x79, 0x3f, 0x84, 0xfc, 0xf0, 0xf8, 0x05, 0xea, 0xa1,
87690 - 0x9a, 0xed, 0xcd, 0x10, 0x65, 0x78, 0x0d, 0x45, 0x7e, 0x86, 0x42, 0xbb,
87691 - 0x73, 0xae, 0x6b, 0xf1, 0x78, 0x5f, 0x6f, 0x40, 0xbe, 0x47, 0xa5, 0xf3,
87692 - 0x4f, 0x24, 0xf3, 0x76, 0x32, 0x2f, 0x48, 0xac, 0x7a, 0xee, 0x16, 0x8d,
87693 - 0x84, 0xd2, 0xd8, 0xd3, 0x91, 0x3a, 0x6a, 0x47, 0x5b, 0x92, 0xcc, 0x15,
87694 - 0xb6, 0x5f, 0xd9, 0x65, 0xd2, 0x90, 0x31, 0x59, 0x46, 0x8a, 0xe0, 0xfb,
87695 - 0x88, 0xdb, 0x48, 0x28, 0x0c, 0xa2, 0x9d, 0x46, 0xc1, 0x8e, 0xda, 0x3f,
87696 - 0x34, 0xa2, 0xe6, 0x9e, 0x0e, 0x65, 0x9e, 0x84, 0x0a, 0x8d, 0x68, 0x8b,
87697 - 0x75, 0xf5, 0x90, 0x54, 0x39, 0xc8, 0x0c, 0xdb, 0x82, 0x78, 0x8c, 0x92,
87698 - 0xef, 0xac, 0xbb, 0x82, 0xe7, 0x69, 0x23, 0xdc, 0x92, 0x46, 0xb4, 0x36,
87699 - 0x83, 0x67, 0x0b, 0xf2, 0xf0, 0x8b, 0x6f, 0x50, 0x38, 0x6b, 0x40, 0x8e,
87700 - 0xcf, 0x69, 0xe3, 0x5d, 0x50, 0xe8, 0xd8, 0xb4, 0x58, 0xf4, 0x0a, 0x35,
87701 - 0x3a, 0x65, 0x94, 0xb7, 0x0e, 0x04, 0xcd, 0x9e, 0x69, 0x1f, 0xfc, 0xc6,
87702 - 0xb6, 0x7c, 0x4b, 0x6a, 0x2d, 0x9e, 0xcd, 0x25, 0x67, 0x64, 0x7d, 0x61,
87703 - 0xc7, 0x7e, 0x87, 0xdf, 0x61, 0x73, 0x13, 0xb6, 0xb7, 0xb2, 0xb0, 0x47,
87704 - 0x6b, 0xde, 0x27, 0x52, 0x65, 0xd8, 0x19, 0xe2, 0xe7, 0x2d, 0x57, 0x01,
87705 - 0x85, 0xa1, 0xd5, 0x3e, 0x72, 0x07, 0xb4, 0xae, 0xf8, 0x9e, 0xbd, 0x45,
87706 - 0x01, 0x2d, 0x36, 0x07, 0xed, 0xa9, 0x66, 0x1d, 0xf3, 0x35, 0x5e, 0x03,
87707 - 0x7f, 0x10, 0x4d, 0xb5, 0xb4, 0xde, 0xf4, 0x7f, 0x9b, 0xa1, 0x23, 0x62,
87708 - 0x32, 0x43, 0x9e, 0x1b, 0xe2, 0xdb, 0xd0, 0xe6, 0xa3, 0x3e, 0x3b, 0x96,
87709 - 0xd8, 0xc0, 0x7e, 0xc7, 0x3e, 0xfe, 0x97, 0x92, 0xf7, 0x5e, 0x3b, 0x5a,
87710 - 0x4b, 0xfd, 0x1c, 0xdb, 0x0d, 0xbf, 0xfa, 0x14, 0x15, 0x61, 0xff, 0x63,
87711 - 0xcf, 0x94, 0xca, 0xb1, 0x2d, 0x6c, 0x37, 0xd6, 0xab, 0x07, 0x36, 0xbd,
87712 - 0x7a, 0xc0, 0x26, 0xb6, 0x47, 0x90, 0x5c, 0xb5, 0x68, 0x49, 0x7d, 0x64,
87713 - 0xd0, 0x11, 0xad, 0x97, 0x7c, 0x69, 0x54, 0xd6, 0x3e, 0x4b, 0x9e, 0x81,
87714 - 0xc3, 0x26, 0x70, 0xd8, 0x04, 0x2e, 0x9b, 0x64, 0x8b, 0xc0, 0xa5, 0x5b,
87715 - 0x63, 0x16, 0xdd, 0x33, 0x11, 0xcf, 0x36, 0xcf, 0xe7, 0xa8, 0xee, 0x2b,
87716 - 0xba, 0xdc, 0x64, 0xcf, 0xe4, 0x68, 0x51, 0x7d, 0xae, 0xcf, 0xc3, 0x1f,
87717 - 0x6f, 0x93, 0x3e, 0x16, 0x01, 0xb3, 0x11, 0xdc, 0xf9, 0x86, 0x1a, 0xa7,
87718 - 0xcb, 0x6d, 0x45, 0xf5, 0x36, 0xcb, 0x2d, 0x51, 0x47, 0xae, 0x1f, 0x72,
87719 - 0x93, 0x90, 0x2b, 0xd2, 0x95, 0x58, 0xb6, 0x1f, 0xb2, 0xbb, 0x89, 0xec,
87720 - 0x44, 0x61, 0x9a, 0x7c, 0xc8, 0x0c, 0xbb, 0xd3, 0xc0, 0xdc, 0x9c, 0x33,
87721 - 0x09, 0xd9, 0x49, 0x5a, 0xc2, 0xaf, 0xde, 0xa4, 0x9a, 0x2c, 0xb2, 0x5e,
87722 - 0xaf, 0x70, 0x9e, 0x7d, 0x1e, 0xeb, 0xac, 0x41, 0xa7, 0x83, 0x39, 0x0b,
87723 - 0x7a, 0x24, 0xc6, 0x0f, 0x75, 0xbd, 0x09, 0x6c, 0x3b, 0xfc, 0xfc, 0xae,
87724 - 0x16, 0x01, 0xfc, 0x50, 0x54, 0x6e, 0x9d, 0xf8, 0x3d, 0x4b, 0x65, 0xc4,
87725 - 0x52, 0xa8, 0x7e, 0xaa, 0xda, 0x86, 0x21, 0x02, 0x93, 0xaa, 0xf0, 0x42,
87726 - 0x38, 0x2b, 0xe3, 0x6f, 0x73, 0xb6, 0x01, 0x8e, 0x1d, 0x17, 0x9d, 0x9c,
87727 - 0x93, 0xc1, 0x1a, 0xc4, 0x5f, 0xf5, 0x52, 0xd5, 0x19, 0xc0, 0x5a, 0x10,
87728 - 0x2d, 0x3f, 0x02, 0x8e, 0x0e, 0x60, 0x0d, 0x8f, 0x1c, 0x07, 0xac, 0x57,
87729 - 0xbc, 0xbe, 0x17, 0x36, 0xa6, 0xdf, 0x7a, 0xa9, 0xf6, 0x50, 0x7c, 0xd8,
87730 - 0xc6, 0x38, 0x2e, 0xd8, 0x5f, 0x26, 0xb1, 0xed, 0x8e, 0x57, 0x3a, 0x6f,
87731 - 0x63, 0x7e, 0xe7, 0xab, 0x82, 0x76, 0xf5, 0x75, 0x15, 0x15, 0xf0, 0xe9,
87732 - 0xf3, 0x8a, 0x0a, 0x07, 0xcc, 0x18, 0x4b, 0x29, 0xa6, 0x78, 0xe4, 0x7c,
87733 - 0x43, 0x85, 0x79, 0x65, 0x98, 0x4b, 0x93, 0x4f, 0x52, 0xcd, 0xf1, 0xfc,
87734 - 0x32, 0x15, 0x68, 0xa9, 0x39, 0x01, 0xdf, 0xf5, 0xe3, 0xdc, 0x9e, 0x4f,
87735 - 0x34, 0x8c, 0xe7, 0xf0, 0x69, 0xc8, 0x20, 0x5f, 0xd4, 0xa0, 0x8b, 0xc7,
87736 - 0x41, 0xe8, 0xf7, 0x60, 0x23, 0xfc, 0xa1, 0x26, 0xec, 0x29, 0xf8, 0x23,
87737 - 0x74, 0x78, 0x8e, 0xf3, 0x98, 0xf3, 0x4c, 0xa4, 0x3c, 0xbf, 0x1a, 0xdb,
87738 - 0xe2, 0xd9, 0xb7, 0x89, 0xf3, 0x51, 0x9a, 0x83, 0x38, 0x27, 0x59, 0x73,
87739 - 0x32, 0xa0, 0xd9, 0x7a, 0xe3, 0x92, 0x36, 0x15, 0xcd, 0x65, 0x03, 0xc6,
87740 - 0x6e, 0x6f, 0x09, 0x58, 0x9c, 0xad, 0xb7, 0x06, 0x4f, 0xef, 0x34, 0xa8,
87741 - 0xf6, 0x4c, 0x20, 0x8e, 0x0a, 0xec, 0x1f, 0xf9, 0xcc, 0x29, 0xec, 0xd5,
87742 - 0x1e, 0x3c, 0x7d, 0xa7, 0x71, 0x0c, 0xbe, 0xa2, 0xfb, 0xf0, 0x3f, 0xf6,
87743 - 0xdf, 0x79, 0xda, 0x84, 0x9d, 0x1c, 0x33, 0x70, 0x2b, 0x7c, 0x75, 0xcc,
87744 - 0x00, 0x96, 0xf1, 0x0c, 0x6c, 0xd4, 0xda, 0x83, 0x73, 0x22, 0xa8, 0x51,
87745 - 0xd8, 0x5e, 0xc2, 0xcf, 0xa2, 0xa9, 0x86, 0x65, 0xdd, 0x81, 0x4e, 0x51,
87746 - 0xf4, 0xdc, 0xc8, 0xdc, 0x65, 0xae, 0xf0, 0x39, 0x58, 0x97, 0x65, 0x04,
87747 - 0xae, 0x1c, 0x6a, 0xf5, 0xbc, 0x22, 0x82, 0x00, 0x98, 0x90, 0x88, 0x4d,
87748 - 0x11, 0x58, 0xe1, 0x38, 0x5c, 0x45, 0x1c, 0x80, 0x03, 0xd8, 0x0c, 0xff,
87749 - 0xd7, 0x44, 0x70, 0x91, 0x2a, 0x45, 0xa2, 0xc5, 0x06, 0x61, 0x3f, 0xec,
87750 - 0x55, 0xc2, 0x0f, 0x78, 0x0e, 0xed, 0x12, 0x6c, 0xf0, 0xc2, 0x1a, 0x79,
87751 - 0xfe, 0x1c, 0xbc, 0x9e, 0xfb, 0x31, 0x59, 0x99, 0xe0, 0x9c, 0xdc, 0x68,
87752 - 0x90, 0x25, 0x83, 0xb3, 0x72, 0xa9, 0x31, 0xec, 0xff, 0x15, 0xbe, 0x26,
87753 - 0xf2, 0xc6, 0x37, 0x69, 0xc2, 0xdf, 0x04, 0x6f, 0xeb, 0xf8, 0x5d, 0x21,
87754 - 0xde, 0xfb, 0x9c, 0x1c, 0x69, 0xf1, 0x78, 0x56, 0xaa, 0x56, 0xb7, 0xde,
87755 - 0xbf, 0x69, 0xf6, 0xfb, 0x3d, 0x2a, 0xd1, 0x9b, 0xc9, 0xde, 0xf0, 0x0d,
87756 - 0x9d, 0x6c, 0x94, 0x80, 0xef, 0x03, 0xfa, 0x4b, 0xa9, 0xfe, 0xad, 0x58,
87757 - 0x37, 0x63, 0x77, 0xc2, 0xdf, 0x3a, 0x74, 0x8f, 0xa3, 0x69, 0x7e, 0x42,
87758 - 0x1e, 0xec, 0xe4, 0xeb, 0xc5, 0x66, 0x0e, 0x9c, 0xd0, 0xba, 0xaa, 0x7e,
87759 - 0x8f, 0xf3, 0xe6, 0x81, 0x5f, 0x1b, 0x3f, 0xc4, 0x72, 0x96, 0xe7, 0x0c,
87760 - 0xaa, 0xa2, 0x0e, 0xd5, 0xdb, 0xfc, 0xcc, 0x73, 0x9c, 0xcf, 0x72, 0x18,
87761 - 0xff, 0x8c, 0xb5, 0x1f, 0xea, 0x5a, 0x9b, 0xb9, 0xc6, 0xbe, 0x02, 0x47,
87762 - 0xda, 0x96, 0x51, 0x6e, 0x92, 0x51, 0x69, 0x92, 0x5b, 0xf5, 0x65, 0x1c,
87763 - 0x97, 0xd0, 0xb6, 0xe1, 0x53, 0xc6, 0xc3, 0xa4, 0x8c, 0x1a, 0x46, 0x5c,
87764 - 0xc3, 0x0c, 0x3c, 0x0f, 0xb5, 0x7e, 0x9d, 0x01, 0x27, 0x42, 0xf8, 0x5f,
87765 - 0x2c, 0x20, 0x47, 0x5e, 0x73, 0xa8, 0x5f, 0xa8, 0x39, 0x51, 0x77, 0xa8,
87766 - 0x4f, 0x28, 0xb6, 0xed, 0x3d, 0x01, 0xdb, 0x78, 0x3e, 0xac, 0xfa, 0xbf,
87767 - 0xc2, 0x9e, 0x41, 0xcc, 0xc7, 0x4a, 0x23, 0xcd, 0xfb, 0xd0, 0xa9, 0x38,
87768 - 0x67, 0x58, 0x49, 0xfe, 0x8f, 0x92, 0xdc, 0x2e, 0x81, 0x5b, 0xad, 0x5f,
87769 - 0x46, 0x5e, 0xaf, 0xc7, 0xb8, 0xf1, 0x6a, 0xae, 0xd8, 0xd3, 0xc3, 0xa3,
87770 - 0xcc, 0x51, 0xad, 0x2f, 0xfa, 0xd3, 0x58, 0x2b, 0x4d, 0xca, 0xcf, 0x20,
87771 - 0xb7, 0x73, 0x3d, 0x60, 0xdb, 0x02, 0xd8, 0xd6, 0xd7, 0xc9, 0xfb, 0xa8,
87772 - 0x09, 0xf5, 0xb8, 0x06, 0xf4, 0x90, 0xa9, 0x0c, 0xfc, 0x3c, 0x77, 0x8e,
87773 - 0xf8, 0x3b, 0xf5, 0x08, 0xbc, 0x57, 0xc1, 0xeb, 0xa5, 0xe2, 0x29, 0xa3,
87774 - 0xb2, 0x75, 0xcc, 0x4c, 0xfa, 0x08, 0xd8, 0x0d, 0x5e, 0x3b, 0x2c, 0x97,
87775 - 0x85, 0x5c, 0x1f, 0x64, 0xbe, 0x82, 0xb9, 0x0c, 0xc6, 0x6e, 0x3d, 0x71,
87776 - 0x2d, 0xc1, 0x5e, 0x2e, 0xf6, 0x9a, 0x21, 0x19, 0xe4, 0x51, 0xaf, 0x47,
87777 - 0xdc, 0x0a, 0x3d, 0x97, 0xd4, 0x6d, 0xe6, 0xf2, 0x89, 0x2e, 0x2e, 0xbb,
87778 - 0x64, 0xc6, 0x9c, 0x78, 0x29, 0xc9, 0x41, 0x9c, 0xc7, 0x5f, 0x48, 0xe6,
87779 - 0x1d, 0xe4, 0xe3, 0xe7, 0x92, 0xba, 0x62, 0xe1, 0x39, 0xa0, 0xe5, 0x38,
87780 - 0x37, 0x67, 0x39, 0x37, 0x17, 0x90, 0x9b, 0x4b, 0xe0, 0xa7, 0xff, 0x31,
87781 - 0x19, 0xc8, 0x4d, 0x44, 0xbf, 0x6b, 0x48, 0xe4, 0x21, 0x13, 0xf2, 0xdc,
87782 - 0x1b, 0xcc, 0xc1, 0x36, 0xcf, 0xfe, 0x18, 0x67, 0x0a, 0xcf, 0x70, 0xde,
87783 - 0xd4, 0x3a, 0x13, 0x28, 0xf7, 0x32, 0x8d, 0x16, 0x2e, 0x23, 0x4f, 0x9a,
87784 - 0x34, 0x81, 0xdd, 0x78, 0xdf, 0xb4, 0x96, 0xa7, 0x3d, 0x05, 0xff, 0xbd,
87785 - 0x6f, 0x90, 0xe2, 0xfa, 0xfb, 0x1d, 0xe8, 0x18, 0x71, 0xa7, 0xc0, 0xfb,
87786 - 0xc5, 0xd2, 0x7f, 0x93, 0xf9, 0x43, 0x22, 0x83, 0xba, 0x56, 0xe4, 0x7d,
87787 - 0x89, 0x2a, 0x2d, 0xf6, 0x83, 0xdf, 0x85, 0x07, 0x1f, 0x78, 0x20, 0xaa,
87788 - 0x36, 0xc1, 0x3f, 0xc4, 0x38, 0xc6, 0x1a, 0xd6, 0x8b, 0x22, 0x72, 0xaa,
87789 - 0xc3, 0xb8, 0x66, 0xbc, 0x9f, 0x49, 0xf0, 0x3e, 0x0b, 0xbc, 0x7b, 0xe3,
87790 - 0x37, 0xc0, 0xa3, 0x1b, 0x0f, 0xf1, 0xe8, 0x4c, 0x82, 0xf1, 0x59, 0x60,
87791 - 0xfc, 0x97, 0xc0, 0x96, 0x85, 0x9a, 0x0e, 0xdc, 0x36, 0xc8, 0x88, 0x50,
87792 - 0x1b, 0x80, 0x83, 0x44, 0xcf, 0xe9, 0x44, 0xcf, 0xcc, 0x63, 0xf4, 0x9c,
87793 - 0x4e, 0xf4, 0xcc, 0x74, 0xeb, 0x81, 0x5c, 0x25, 0x91, 0x0b, 0x1f, 0x23,
87794 - 0x57, 0x49, 0xe4, 0xc2, 0x2e, 0x39, 0x0b, 0x67, 0xe2, 0x73, 0x71, 0x1e,
87795 - 0xdb, 0x45, 0x2c, 0x7c, 0x8a, 0xb1, 0x62, 0x87, 0x18, 0xef, 0x61, 0x04,
87796 - 0x66, 0x9a, 0x37, 0xb1, 0x96, 0xfd, 0x90, 0x61, 0x0e, 0x3c, 0xe2, 0xbb,
87797 - 0x3d, 0xf8, 0x6e, 0x1f, 0xef, 0xf8, 0xfb, 0x66, 0x82, 0x15, 0xae, 0x45,
87798 - 0x5e, 0x2d, 0x7c, 0x68, 0x6d, 0x46, 0xb0, 0x9f, 0xc5, 0xd5, 0xc3, 0x62,
87799 - 0x60, 0x61, 0x0e, 0x35, 0xa7, 0x69, 0x52, 0x59, 0x32, 0x57, 0x5f, 0x91,
87800 - 0x31, 0x76, 0xb7, 0xb1, 0x7e, 0xbb, 0xc3, 0xab, 0x99, 0x46, 0x8e, 0x68,
87801 - 0xbd, 0x97, 0x16, 0x50, 0x4f, 0xce, 0x03, 0x4b, 0xd7, 0x7d, 0xb0, 0x90,
87802 - 0x86, 0x81, 0x0b, 0x0d, 0x5c, 0x7b, 0x71, 0x6c, 0x23, 0xb5, 0x08, 0x66,
87803 - 0xfc, 0x88, 0x76, 0x26, 0xf3, 0x94, 0xd9, 0xec, 0xd4, 0x43, 0xb9, 0xde,
87804 - 0xbd, 0x8f, 0x8b, 0x7d, 0x02, 0xd4, 0xe0, 0x3f, 0xa2, 0x17, 0x70, 0x48,
87805 - 0x8e, 0x22, 0x97, 0x36, 0x39, 0x27, 0x80, 0xa3, 0x9b, 0x5c, 0xeb, 0x39,
87806 - 0xe7, 0x5a, 0xc0, 0x62, 0x9a, 0x7f, 0x72, 0xe8, 0x5b, 0x3e, 0x41, 0xed,
87807 - 0x10, 0x34, 0x5f, 0xd4, 0x7a, 0xca, 0xff, 0x04, 0xb8, 0xc2, 0xb7, 0x75,
87808 - 0x9e, 0xdb, 0xc5, 0x77, 0xfe, 0x66, 0x51, 0x76, 0xf5, 0x49, 0xec, 0x89,
87809 - 0xfd, 0xce, 0xf0, 0xfa, 0x1c, 0x7a, 0x1a, 0xce, 0xf3, 0x18, 0xd7, 0xf9,
87810 - 0xdd, 0x48, 0x7c, 0x6a, 0x62, 0xfc, 0x02, 0x46, 0x3e, 0x4f, 0x0f, 0xce,
87811 - 0xa7, 0xf5, 0x5d, 0x9f, 0x9f, 0xb5, 0x96, 0x41, 0x2f, 0x95, 0x1b, 0x0a,
87812 - 0xf5, 0x7d, 0xa4, 0xb0, 0x00, 0x9e, 0x95, 0x5b, 0xe9, 0x3c, 0xcf, 0xd9,
87813 - 0x5d, 0x73, 0x78, 0x6e, 0xf1, 0x77, 0x41, 0x3b, 0x6a, 0x11, 0x75, 0x11,
87814 - 0xfd, 0xd3, 0x3a, 0xf7, 0x61, 0xdc, 0x53, 0xc5, 0xf5, 0x72, 0x9c, 0x7b,
87815 - 0xb0, 0x77, 0x90, 0xff, 0xd7, 0xc1, 0x29, 0xf0, 0xfb, 0x29, 0x41, 0x4f,
87816 - 0x50, 0xd9, 0x49, 0xcf, 0xa3, 0x35, 0x38, 0x5b, 0x30, 0x0d, 0xe6, 0xe2,
87817 - 0xb0, 0x3d, 0x4d, 0xdc, 0x6b, 0x8d, 0x84, 0x55, 0x96, 0x69, 0x21, 0x1f,
87818 - 0xac, 0x68, 0xaa, 0x76, 0xf4, 0xd8, 0xb3, 0xc8, 0xd1, 0xd1, 0x4f, 0xb8,
87819 - 0xb6, 0xb1, 0x6f, 0x4f, 0xc0, 0x1e, 0xf4, 0x05, 0xeb, 0x92, 0xde, 0x6e,
87820 - 0xb0, 0x9e, 0x3c, 0x99, 0xe8, 0x11, 0x97, 0xfd, 0x54, 0xcf, 0x9f, 0xa0,
87821 - 0x87, 0x1c, 0x41, 0xdc, 0xff, 0x4a, 0xe8, 0x62, 0x1f, 0x64, 0xd0, 0x8f,
87822 - 0x8f, 0xd3, 0xbc, 0x5a, 0x8c, 0x6b, 0xf1, 0x79, 0xd4, 0xde, 0xa8, 0x98,
87823 - 0x85, 0xef, 0x72, 0xb1, 0x9e, 0x7a, 0xf3, 0x5f, 0x9a, 0xf3, 0x0f, 0xea,
87824 - 0x24, 0xf4, 0xe3, 0xbd, 0x8d, 0xb9, 0x95, 0x80, 0xde, 0x6c, 0xc6, 0xb5,
87825 - 0xdb, 0xbe, 0x88, 0x9e, 0xbf, 0xd2, 0xf8, 0x47, 0xda, 0xcb, 0x84, 0xc0,
87826 - 0x71, 0xe1, 0x02, 0x7c, 0x23, 0xb7, 0x7b, 0xe9, 0x35, 0xf4, 0xa8, 0x99,
87827 - 0x15, 0xd4, 0x65, 0xf8, 0x4d, 0x5c, 0xad, 0x8d, 0x73, 0x9f, 0x79, 0x03,
87828 - 0x5c, 0x9f, 0x2f, 0x2a, 0xdf, 0x34, 0x46, 0x69, 0xf9, 0x67, 0x5c, 0x67,
87829 - 0xe2, 0x7a, 0x0d, 0xfc, 0xb8, 0x74, 0xa5, 0xa5, 0x68, 0xb9, 0x65, 0xc3,
87830 - 0x2e, 0xfb, 0x41, 0x2f, 0xae, 0x38, 0x1f, 0x57, 0xf0, 0x8b, 0xf3, 0x2d,
87831 - 0xce, 0x04, 0x3e, 0x04, 0xec, 0x0f, 0xee, 0xbd, 0x39, 0x66, 0x9c, 0xff,
87832 - 0x4e, 0xe1, 0x99, 0xcf, 0xca, 0xbd, 0x32, 0xfb, 0x81, 0x7b, 0xe2, 0xee,
87833 - 0xfe, 0x9d, 0x73, 0x23, 0x74, 0x6e, 0x33, 0x87, 0xb8, 0x47, 0xa9, 0xc8,
87834 - 0xf9, 0x86, 0x1d, 0xf3, 0xaa, 0xde, 0xee, 0xf8, 0x3b, 0xf2, 0x59, 0xa7,
87835 - 0x57, 0x0a, 0xe9, 0xce, 0x8b, 0x22, 0xee, 0x3b, 0x42, 0xe4, 0x15, 0x3e,
87836 - 0xcb, 0x04, 0xee, 0x27, 0x1e, 0x7c, 0xe7, 0xa1, 0x2f, 0xe9, 0xf0, 0x73,
87837 - 0x38, 0xe1, 0xe7, 0x50, 0xeb, 0x44, 0x26, 0xed, 0xc7, 0x0e, 0x72, 0xee,
87838 - 0x17, 0xe2, 0x7f, 0xe7, 0xdc, 0x46, 0xc2, 0xb9, 0x6c, 0x8c, 0x4d, 0xb1,
87839 - 0xd2, 0x3d, 0xf7, 0x0e, 0xe6, 0x72, 0x5d, 0xf7, 0xa2, 0xc3, 0x62, 0x12,
87840 - 0xf3, 0x03, 0x9c, 0xe4, 0x75, 0x88, 0xff, 0x4a, 0x2f, 0x99, 0x57, 0x99,
87841 - 0x97, 0x29, 0x46, 0x5c, 0xe0, 0x31, 0xd5, 0xd1, 0x83, 0x3d, 0x70, 0xd7,
87842 - 0x59, 0xcd, 0xc4, 0xf8, 0x37, 0x83, 0x74, 0x4d, 0x81, 0xa6, 0x1b, 0x9e,
87843 - 0x7f, 0x87, 0xc7, 0x16, 0xcf, 0x4b, 0xca, 0xae, 0x58, 0xf4, 0xfa, 0x98,
87844 - 0xe7, 0xba, 0xc2, 0xf3, 0x77, 0x60, 0xf7, 0x5d, 0xe5, 0x50, 0x66, 0x94,
87845 - 0x39, 0xc9, 0x15, 0x2a, 0x0b, 0xdc, 0xe0, 0x0e, 0xd8, 0xd4, 0x97, 0xd0,
87846 - 0x1f, 0xb9, 0x12, 0xb1, 0xfd, 0x29, 0x6c, 0xe1, 0x7c, 0x0b, 0xbb, 0xc6,
87847 - 0xd7, 0x81, 0x83, 0x05, 0x7e, 0xdf, 0xc7, 0x18, 0xdf, 0x2d, 0x78, 0x7f,
87848 - 0x07, 0x67, 0xb0, 0x28, 0xb7, 0xaa, 0x71, 0xf7, 0x7b, 0x20, 0x77, 0x25,
87849 - 0xc1, 0x6b, 0x06, 0xdf, 0xe7, 0x63, 0xbc, 0x72, 0x1c, 0xd9, 0xe7, 0x5a,
87850 - 0x7f, 0x80, 0x38, 0x96, 0xe9, 0x2f, 0x31, 0x8f, 0xef, 0xfa, 0x31, 0x7e,
87851 - 0x61, 0x0f, 0x64, 0x5a, 0x9f, 0xca, 0x98, 0xe7, 0xe0, 0xc3, 0x65, 0x3f,
87852 - 0xc6, 0xd7, 0xf8, 0x4d, 0x1c, 0xbb, 0x83, 0xfd, 0x6e, 0x3d, 0xc3, 0xf6,
87853 - 0x49, 0x8a, 0x39, 0xe5, 0x2e, 0x72, 0x8f, 0xe9, 0x8f, 0x20, 0xdf, 0x62,
87854 - 0x5d, 0x2b, 0xe5, 0x7d, 0x16, 0x7c, 0x67, 0x5f, 0x33, 0xf7, 0x07, 0x92,
87855 - 0xe7, 0x2f, 0x22, 0xb6, 0x36, 0xfc, 0xd8, 0xe9, 0x05, 0xcc, 0x15, 0xb6,
87856 - 0xad, 0x97, 0xd4, 0xd5, 0xd4, 0xae, 0x4f, 0x63, 0x7b, 0x1e, 0xd6, 0x89,
87857 - 0xf9, 0xed, 0xc3, 0xe4, 0xec, 0x2e, 0xb9, 0xbf, 0x1f, 0x22, 0x87, 0xf9,
87858 - 0x6d, 0x96, 0xc9, 0xef, 0xf7, 0x20, 0xe5, 0x7d, 0x3c, 0x87, 0xc0, 0x3b,
87859 - 0xcb, 0x3e, 0x7a, 0xef, 0xec, 0xc6, 0x7e, 0x5a, 0xfb, 0x19, 0xdf, 0xbc,
87860 - 0xa7, 0xe7, 0x72, 0xef, 0xde, 0xc1, 0x76, 0x1e, 0x79, 0x2f, 0xf6, 0x03,
87861 - 0x72, 0xa6, 0x37, 0x3e, 0x47, 0x29, 0xfe, 0x1f, 0x60, 0x7c, 0x01, 0x76,
87862 - 0x55, 0x68, 0xa2, 0xc4, 0xe3, 0xc9, 0x03, 0x18, 0xe7, 0xfb, 0x3a, 0xd7,
87863 - 0xa6, 0x3c, 0xee, 0x61, 0x5c, 0xe7, 0xf9, 0x2e, 0xd6, 0xc9, 0x53, 0x95,
87864 - 0x35, 0x7e, 0xff, 0x2c, 0x79, 0xe7, 0xbc, 0xcc, 0x7d, 0xd4, 0x0d, 0x9c,
87865 - 0x9f, 0xeb, 0xd1, 0x18, 0xd5, 0x1d, 0xf8, 0xd5, 0x67, 0x1b, 0x2e, 0xd0,
87866 - 0x83, 0x1e, 0xec, 0xb0, 0xba, 0xb2, 0x6a, 0x76, 0x71, 0xe5, 0xb0, 0x7e,
87867 - 0x8c, 0xef, 0x27, 0x46, 0x79, 0xcd, 0x48, 0x7a, 0x78, 0xee, 0xbf, 0xf6,
87868 - 0xb4, 0x19, 0xf7, 0x62, 0x9c, 0x17, 0xb8, 0x07, 0x7b, 0x0d, 0xfb, 0xf6,
87869 - 0xc5, 0xef, 0xe1, 0x16, 0x8f, 0xec, 0x17, 0x8a, 0x79, 0xd1, 0xe1, 0x79,
87870 - 0x6a, 0x77, 0x84, 0x75, 0xf0, 0x8f, 0x88, 0x52, 0x9b, 0xa8, 0xfa, 0x16,
87871 - 0xd7, 0x54, 0x3b, 0xc9, 0xff, 0x17, 0x31, 0x3e, 0x9f, 0x60, 0x20, 0x3d,
87872 - 0x4b, 0xec, 0x57, 0xec, 0xaf, 0xf5, 0x2c, 0x30, 0xf5, 0xba, 0x9f, 0xda,
87873 - 0x0a, 0x6c, 0x7f, 0x23, 0xcd, 0x31, 0x88, 0x97, 0xda, 0xd3, 0x72, 0x34,
87874 - 0x84, 0x2d, 0xfc, 0xff, 0x82, 0x0a, 0x7a, 0x3b, 0xb6, 0x65, 0xc6, 0x78,
87875 - 0x79, 0xff, 0x7f, 0x04, 0x8f, 0xf6, 0x71, 0x1c, 0x3f, 0x8e, 0xef, 0x7e,
87876 - 0xfc, 0xac, 0x1c, 0x7c, 0xff, 0x51, 0xc3, 0xb3, 0x07, 0x04, 0xe7, 0x23,
87877 - 0xb2, 0xb2, 0x88, 0xc1, 0x5d, 0xc4, 0x28, 0x24, 0xaf, 0xf4, 0x41, 0xdc,
87878 - 0x9b, 0x13, 0x38, 0x37, 0x11, 0xe2, 0x19, 0x1c, 0xc0, 0xd9, 0x46, 0x3d,
87879 - 0xff, 0x3d, 0xe2, 0x38, 0x58, 0xb8, 0x6b, 0x74, 0x62, 0x37, 0x96, 0xc4,
87880 - 0x6e, 0xb4, 0xf5, 0xf0, 0x99, 0x5d, 0xf1, 0x52, 0xf2, 0xce, 0x67, 0xe2,
87881 - 0x5e, 0xc1, 0xe5, 0x1e, 0x09, 0x3e, 0x28, 0x19, 0x9d, 0x7b, 0x7b, 0x93,
87882 - 0xef, 0x97, 0x35, 0xce, 0xe5, 0xdc, 0xcf, 0x81, 0x6b, 0xa8, 0x96, 0x23,
87883 - 0xb8, 0x6b, 0x68, 0x5d, 0x2f, 0x31, 0x76, 0x27, 0xc6, 0xa7, 0x62, 0x0c,
87884 - 0x8b, 0x41, 0x41, 0x29, 0xb7, 0xba, 0x9f, 0x31, 0x96, 0xf8, 0x9e, 0xc6,
87885 - 0xef, 0x1d, 0x1d, 0x1b, 0xc0, 0x1d, 0x6e, 0x32, 0xb8, 0x1d, 0xb2, 0x7e,
87886 - 0xa3, 0xd3, 0x13, 0xdb, 0x11, 0xf3, 0x1e, 0xb8, 0x7b, 0x1f, 0x76, 0x85,
87887 - 0xe0, 0x6d, 0xe7, 0x6e, 0x37, 0x87, 0x9c, 0x72, 0x1b, 0xb1, 0xbd, 0xab,
87888 - 0x3a, 0x75, 0x71, 0x83, 0xfb, 0xae, 0x16, 0xf2, 0x4d, 0x1e, 0xbd, 0xb2,
87889 - 0x4a, 0xef, 0xa2, 0x16, 0x5d, 0xc3, 0x9a, 0xeb, 0x98, 0xbb, 0xd2, 0x4a,
87890 - 0x71, 0x84, 0x1e, 0x0f, 0xd8, 0x9c, 0x57, 0xff, 0xd4, 0x55, 0xa7, 0x7b,
87891 - 0x2d, 0xff, 0xfd, 0x07, 0x5d, 0xe7, 0x92, 0xbb, 0xa8, 0x13, 0x00, 0x00,
87892 - 0x00 };
87893 + 0xbd, 0x58, 0x5d, 0x6c, 0x1c, 0x57, 0x15, 0x3e, 0x73, 0xe7, 0xee, 0x7a,
87894 + 0x6d, 0x39, 0xf1, 0xb8, 0x99, 0x96, 0x4d, 0x63, 0xd4, 0x99, 0x78, 0xfc,
87895 + 0x43, 0x6d, 0x95, 0x69, 0x59, 0x15, 0x17, 0x56, 0x68, 0xba, 0xbb, 0x71,
87896 + 0xad, 0xaa, 0xaa, 0x5c, 0x29, 0x88, 0x4a, 0x8d, 0x90, 0x59, 0x37, 0x6d,
87897 + 0x79, 0x4b, 0x11, 0x0f, 0x48, 0x45, 0xca, 0xb2, 0x76, 0xd2, 0x08, 0x2d,
87898 + 0x99, 0xd6, 0x85, 0x44, 0x42, 0x7d, 0x88, 0x9c, 0x3a, 0xee, 0xc3, 0xca,
87899 + 0x9b, 0x8a, 0x07, 0x24, 0xa4, 0xa8, 0x55, 0x80, 0xc0, 0x1b, 0x7d, 0xa8,
87900 + 0xf8, 0x79, 0x22, 0x12, 0x0f, 0x54, 0x08, 0x90, 0x85, 0x04, 0x2a, 0xa5,
87901 + 0xe4, 0xf2, 0x7d, 0x77, 0x67, 0x92, 0xc5, 0x4d, 0x41, 0xe5, 0x81, 0x95,
87902 + 0x56, 0x77, 0xe6, 0xde, 0x73, 0xce, 0x3d, 0xf7, 0xfc, 0x7c, 0xe7, 0xdc,
87903 + 0x39, 0xec, 0xc8, 0x88, 0x64, 0xbf, 0x7d, 0xf8, 0x57, 0xbe, 0x72, 0xe2,
87904 + 0xeb, 0x0f, 0xdc, 0x57, 0xb9, 0x0f, 0x8f, 0x0f, 0x3a, 0x77, 0x6b, 0x2d,
87905 + 0xff, 0xc7, 0x9f, 0x2b, 0xe2, 0xe5, 0x7a, 0xf0, 0x2f, 0x25, 0x55, 0x4d,
87906 + 0x0e, 0xd6, 0x22, 0x29, 0xb9, 0xd5, 0xea, 0xfc, 0x6a, 0x24, 0x92, 0x74,
87907 + 0xe7, 0x82, 0xba, 0xfc, 0xd3, 0xb4, 0x7c, 0x2d, 0x9c, 0xff, 0x64, 0xf5,
87908 + 0x83, 0x4f, 0x5f, 0xf9, 0x6c, 0xb8, 0x7b, 0xc1, 0x95, 0x92, 0x57, 0x3d,
87909 + 0xa3, 0xbd, 0x69, 0x29, 0x4d, 0x80, 0xe7, 0xd5, 0x99, 0x6f, 0x17, 0x64,
87910 + 0x7f, 0x2e, 0xab, 0x65, 0x54, 0x74, 0xdd, 0x5c, 0x99, 0x89, 0xbc, 0x36,
87911 + 0x36, 0xb8, 0xdc, 0x0b, 0xa4, 0xd6, 0x2b, 0xcb, 0x9b, 0x3d, 0x5f, 0xde,
87912 + 0xe8, 0x69, 0x39, 0xfe, 0xca, 0x49, 0x59, 0x8f, 0xc3, 0x72, 0xc3, 0x2d,
87913 + 0x89, 0xaa, 0x86, 0xe5, 0xa6, 0x04, 0xb2, 0x15, 0x87, 0xad, 0x15, 0x77,
87914 + 0xdc, 0x29, 0x55, 0x4b, 0xf2, 0xc2, 0x8c, 0x92, 0x0b, 0xfe, 0x31, 0x79,
87915 + 0x26, 0x7a, 0x12, 0x7f, 0x2d, 0x6a, 0x43, 0x3b, 0xf5, 0xf3, 0x5a, 0xf4,
87916 + 0xc6, 0x98, 0x3c, 0x12, 0x1b, 0xb3, 0x1a, 0x27, 0xe0, 0x9f, 0x9c, 0x7d,
87917 + 0x56, 0x86, 0xa5, 0xe5, 0x85, 0x4b, 0x22, 0x05, 0xd2, 0x48, 0x2d, 0x2e,
87918 + 0x48, 0xe2, 0xf5, 0xcf, 0x75, 0xc1, 0x8e, 0x1f, 0x98, 0x2d, 0xf0, 0x0f,
87919 + 0x47, 0xf9, 0xfa, 0x1d, 0xd9, 0xba, 0x97, 0xad, 0x2b, 0x51, 0xe7, 0xc2,
87920 + 0x60, 0x5b, 0xa6, 0x12, 0xed, 0xdc, 0x30, 0xb5, 0xe8, 0x2e, 0xaf, 0xb6,
87921 + 0xad, 0xc5, 0xdd, 0xa0, 0xfe, 0x91, 0x57, 0x17, 0x03, 0x1e, 0x97, 0x3c,
87922 + 0x5a, 0x55, 0xbf, 0x06, 0xbf, 0x4d, 0x25, 0xca, 0x11, 0xb9, 0xda, 0x29,
87923 + 0x7b, 0xb5, 0xde, 0x37, 0x9c, 0x5a, 0x7a, 0xc3, 0x24, 0x7a, 0x44, 0x54,
87924 + 0x94, 0x38, 0xb5, 0x6d, 0xca, 0x1a, 0x16, 0x1d, 0x0d, 0x81, 0x67, 0xd2,
87925 + 0x53, 0xc2, 0xb1, 0x96, 0xcd, 0x53, 0x76, 0x03, 0xcf, 0x8b, 0x4e, 0xb2,
87926 + 0xad, 0x9d, 0xda, 0xf9, 0x25, 0x3c, 0x97, 0xc0, 0x0f, 0xbb, 0xc4, 0x8e,
87927 + 0x24, 0xcb, 0x0e, 0xf8, 0x78, 0x4e, 0x0f, 0xef, 0x4a, 0x12, 0xdf, 0x93,
87928 + 0xb5, 0x4a, 0x58, 0x6e, 0xc9, 0xa3, 0x4e, 0x7d, 0xfb, 0x43, 0x4e, 0xf3,
87929 + 0x96, 0x7a, 0x1f, 0x9e, 0xa3, 0x2e, 0x0f, 0x6b, 0x63, 0xd4, 0xfd, 0x43,
87930 + 0xd9, 0x19, 0x29, 0x2f, 0xe9, 0xeb, 0xef, 0xf3, 0x1d, 0x3a, 0xa7, 0xd0,
87931 + 0xbd, 0x5b, 0x84, 0x3e, 0xc6, 0x70, 0x9f, 0x5a, 0x54, 0x87, 0x9e, 0x09,
87932 + 0xfe, 0xe1, 0x99, 0x26, 0x42, 0xe1, 0xf0, 0xb9, 0x7d, 0x12, 0x8c, 0x1b,
87933 + 0xd3, 0x88, 0x43, 0x6f, 0x5b, 0x26, 0x64, 0x2d, 0x9d, 0xf0, 0x8e, 0xa4,
87934 + 0x6d, 0xac, 0xb7, 0x48, 0x03, 0x7b, 0x88, 0x1c, 0xe9, 0x1a, 0x73, 0x29,
87935 + 0x3e, 0x50, 0x94, 0xfd, 0x6a, 0xbe, 0x20, 0x61, 0x90, 0x60, 0xee, 0xf0,
87936 + 0xa5, 0xbd, 0x36, 0xbb, 0x27, 0xd3, 0x81, 0x76, 0xc7, 0x3e, 0xf1, 0xa1,
87937 + 0xec, 0x7d, 0xd4, 0xab, 0x9d, 0xcf, 0xed, 0x6c, 0xf5, 0x86, 0x5d, 0x63,
87938 + 0xa9, 0x55, 0xa0, 0xff, 0x47, 0x9e, 0x29, 0xe7, 0xa3, 0x2e, 0xd4, 0x1b,
87939 + 0xf4, 0xd1, 0x2d, 0x9d, 0x9e, 0xfa, 0x90, 0x4e, 0xd4, 0x47, 0x89, 0x3e,
87940 + 0x57, 0x92, 0xf5, 0xe8, 0x71, 0x25, 0xfb, 0x8d, 0x59, 0x8f, 0xb5, 0xd3,
87941 + 0x38, 0x7f, 0x2c, 0x7b, 0x46, 0x1c, 0xa6, 0x88, 0xc3, 0x14, 0x71, 0x99,
87942 + 0x8a, 0xa7, 0xaa, 0x81, 0x5c, 0x99, 0x29, 0xc9, 0x75, 0x17, 0xfe, 0xec,
87943 + 0xcd, 0x79, 0xaf, 0x21, 0xa6, 0x12, 0xcf, 0x11, 0x37, 0x4a, 0x66, 0x0b,
87944 + 0xc2, 0x77, 0xc4, 0x92, 0x4e, 0xca, 0x2e, 0x62, 0x29, 0x39, 0xca, 0xb9,
87945 + 0x21, 0x59, 0xb1, 0x67, 0x99, 0xf3, 0x4e, 0x09, 0x7d, 0x55, 0xc3, 0xda,
87946 + 0x64, 0x70, 0x4a, 0x76, 0x11, 0x1f, 0x35, 0xac, 0x53, 0x56, 0xe8, 0xb5,
87947 + 0x40, 0xd1, 0x4e, 0xdf, 0x45, 0x0e, 0xf8, 0x88, 0xfb, 0x99, 0xb2, 0x12,
87948 + 0x47, 0x56, 0xe7, 0x61, 0x8b, 0xf9, 0x29, 0xd8, 0x88, 0x39, 0xc1, 0xb8,
87949 + 0xfa, 0xeb, 0xb4, 0x8e, 0x4e, 0x22, 0x7e, 0x40, 0x8b, 0xf3, 0x9f, 0x4a,
87950 + 0x67, 0xc0, 0x1f, 0x15, 0xa9, 0xe7, 0x56, 0xac, 0x65, 0x3d, 0xbd, 0xa2,
87951 + 0x0a, 0xd1, 0xef, 0x1d, 0xd9, 0x1f, 0xb6, 0x12, 0x09, 0x5b, 0x4a, 0x29,
87952 + 0x9f, 0x5b, 0xbf, 0x84, 0x3c, 0x7a, 0xd3, 0xea, 0xaf, 0xc1, 0x57, 0xce,
87953 + 0xf4, 0xa7, 0xdd, 0x45, 0x36, 0x3b, 0x61, 0xbc, 0x08, 0xdd, 0xae, 0xc2,
87954 + 0xff, 0xb4, 0xf9, 0xa5, 0x2e, 0x64, 0x77, 0x1c, 0xe6, 0xae, 0xb4, 0xbb,
87955 + 0xa4, 0xb3, 0x69, 0xbe, 0xa2, 0xab, 0xb2, 0xdc, 0xee, 0x9c, 0x34, 0x6e,
87956 + 0x24, 0x2b, 0x85, 0x2a, 0xfd, 0x36, 0xba, 0x00, 0x3f, 0x2c, 0xb7, 0xbb,
87957 + 0x13, 0x8f, 0x6d, 0x76, 0xa4, 0x75, 0x77, 0x55, 0x5a, 0x6e, 0x45, 0xdd,
87958 + 0xa5, 0x64, 0x0c, 0x72, 0xab, 0xd8, 0x87, 0x71, 0x15, 0x06, 0x75, 0x77,
87959 + 0xe2, 0xb1, 0x8b, 0x9d, 0x7b, 0x90, 0xb7, 0xf2, 0x41, 0xad, 0x12, 0x21,
87960 + 0x77, 0xaf, 0x1e, 0x74, 0x25, 0x92, 0xb5, 0x5e, 0x49, 0x6a, 0xe9, 0x84,
87961 + 0xac, 0xf7, 0x24, 0x79, 0x6a, 0x06, 0xfb, 0x55, 0xf0, 0xde, 0x9b, 0x97,
87962 + 0x56, 0x6f, 0x62, 0x45, 0x55, 0x5b, 0x92, 0xf4, 0xd6, 0xf1, 0x2f, 0x49,
87963 + 0xa3, 0x53, 0x2a, 0x5d, 0xec, 0xb4, 0xc8, 0x5f, 0x72, 0xaa, 0x81, 0x3e,
87964 + 0xdc, 0xdd, 0x65, 0xdc, 0x40, 0xce, 0xf0, 0x97, 0x54, 0x55, 0x4b, 0xd3,
87965 + 0xf7, 0x21, 0xc3, 0x81, 0x4d, 0xa8, 0xeb, 0x2c, 0xf6, 0xed, 0x8f, 0xad,
87966 + 0x1e, 0x7d, 0x37, 0x24, 0xed, 0x78, 0x1e, 0x76, 0x62, 0xd4, 0x0e, 0xc9,
87967 + 0x5a, 0xf4, 0x9e, 0x79, 0x1a, 0xb1, 0xfa, 0x9a, 0x98, 0x7b, 0x6a, 0xc0,
87968 + 0x93, 0x1a, 0x4c, 0xfa, 0x42, 0x54, 0x96, 0x53, 0xd8, 0xb7, 0xcf, 0xb7,
87969 + 0x0e, 0x1d, 0xc8, 0x37, 0x06, 0xbe, 0x06, 0xf8, 0x7c, 0x39, 0x6d, 0x79,
87970 + 0xc7, 0xc0, 0xbb, 0x9b, 0xf1, 0xce, 0x95, 0x17, 0x25, 0x06, 0xcf, 0x64,
87971 + 0xb0, 0x08, 0x7f, 0xae, 0xf8, 0x0d, 0xf0, 0x36, 0xa0, 0x03, 0xc6, 0x54,
87972 + 0x5a, 0xba, 0x42, 0xb9, 0x61, 0xf9, 0x69, 0xe6, 0x83, 0x95, 0xd9, 0x82,
87973 + 0x4c, 0xe8, 0x95, 0x96, 0x20, 0x67, 0x01, 0xe3, 0x3b, 0xa6, 0x9d, 0x02,
87974 + 0x77, 0x7c, 0x3e, 0xbf, 0x69, 0x54, 0x15, 0x31, 0x5a, 0x89, 0x82, 0xb6,
87975 + 0xf0, 0xbd, 0x28, 0x75, 0xe4, 0x99, 0x8a, 0xc6, 0xa4, 0xe9, 0x39, 0x8e,
87976 + 0xaa, 0xba, 0xd2, 0x44, 0x84, 0x26, 0xcb, 0xda, 0xce, 0xad, 0x20, 0xce,
87977 + 0x54, 0xf5, 0x7b, 0xaa, 0x5f, 0x0f, 0x0a, 0xa0, 0x41, 0x6e, 0x46, 0xa3,
87978 + 0xb0, 0xc1, 0x38, 0x68, 0xcf, 0x62, 0x7e, 0x0a, 0xf8, 0x39, 0x0e, 0x1a,
87979 + 0x8e, 0xcc, 0x11, 0xda, 0x85, 0xf4, 0x15, 0xe8, 0x98, 0xcf, 0x55, 0x60,
87980 + 0x9b, 0xc1, 0xb4, 0xc9, 0x7d, 0x0c, 0x9a, 0x54, 0x67, 0x79, 0x37, 0x98,
87981 + 0x4b, 0xf9, 0x7a, 0x80, 0xf5, 0xab, 0x9f, 0x52, 0xb2, 0x6b, 0x2e, 0x46,
87982 + 0x8c, 0x61, 0x79, 0xaf, 0x11, 0x25, 0xe3, 0xae, 0xcd, 0xf3, 0x3c, 0xdf,
87983 + 0x39, 0xb2, 0x16, 0x9c, 0x39, 0xb8, 0x1a, 0x39, 0xee, 0xfa, 0xfc, 0x01,
87984 + 0x69, 0xf9, 0x61, 0x5c, 0x87, 0xbf, 0xd7, 0x53, 0xe6, 0xc6, 0x18, 0xce,
87985 + 0x1d, 0x22, 0xea, 0x26, 0xf1, 0x9c, 0x1c, 0x04, 0x0f, 0xfc, 0xd8, 0x82,
87986 + 0x2c, 0x8e, 0x88, 0x99, 0x34, 0x84, 0x8e, 0xb0, 0x47, 0x34, 0xe7, 0x1d,
87987 + 0x61, 0x3c, 0xfa, 0x5c, 0x63, 0x8d, 0x79, 0xf5, 0x50, 0x2d, 0x0a, 0xe3,
87988 + 0x66, 0x96, 0x2b, 0x6f, 0xc1, 0xb6, 0xed, 0x94, 0xf5, 0x22, 0xaf, 0x11,
87989 + 0xcc, 0x0f, 0xc6, 0x4a, 0x8e, 0xb1, 0xe0, 0x89, 0x98, 0x9f, 0xa5, 0x0c,
87990 + 0x6b, 0x6b, 0x19, 0x8e, 0x2e, 0x40, 0x0f, 0x63, 0x9e, 0x00, 0x86, 0xb6,
87991 + 0x63, 0x1b, 0x9f, 0xad, 0x40, 0xdd, 0x30, 0x93, 0xd3, 0xb4, 0xb9, 0x31,
87992 + 0x27, 0xe2, 0x45, 0xd0, 0xfe, 0x16, 0xf6, 0x5a, 0x02, 0x8e, 0x12, 0x7b,
87993 + 0xb9, 0x77, 0x55, 0xd7, 0x3a, 0xfb, 0xa0, 0x4b, 0x00, 0x7c, 0x83, 0x0d,
87994 + 0x2c, 0xde, 0x0e, 0x23, 0xdf, 0x99, 0xf3, 0x61, 0xb0, 0x22, 0x9c, 0x97,
87995 + 0x61, 0x85, 0xf7, 0x26, 0xfc, 0xb4, 0x5e, 0x79, 0xd4, 0x69, 0x6c, 0xbf,
87996 + 0x9f, 0xf9, 0x48, 0xc6, 0x14, 0x6a, 0x49, 0xd3, 0x27, 0x5f, 0x11, 0x7c,
87997 + 0xfb, 0xc0, 0xf3, 0x77, 0xac, 0x15, 0x30, 0x0e, 0xca, 0xb1, 0xb8, 0x8d,
87998 + 0xbd, 0x02, 0xec, 0xb5, 0x24, 0xba, 0xfa, 0x3c, 0xb0, 0x67, 0x2a, 0x68,
87999 + 0xc8, 0xf7, 0x55, 0xbf, 0x46, 0xd2, 0x37, 0x5f, 0x18, 0xf0, 0x4d, 0x20,
88000 + 0xae, 0xcd, 0xc1, 0x87, 0xb2, 0x98, 0x22, 0x66, 0x3e, 0x98, 0xad, 0xfb,
88001 + 0xc0, 0xbe, 0xcf, 0x64, 0x18, 0x5e, 0x22, 0x0e, 0xca, 0x19, 0x8b, 0x83,
88002 + 0x45, 0xe2, 0x20, 0x70, 0xa5, 0xb5, 0x00, 0x7b, 0xc7, 0xef, 0x02, 0x5f,
88003 + 0xea, 0xf0, 0xc4, 0x4f, 0x3a, 0x1a, 0x71, 0xe5, 0x82, 0x9f, 0x75, 0xf8,
88004 + 0xf3, 0xae, 0x8c, 0x84, 0xde, 0xbb, 0xc0, 0x9b, 0xe4, 0x28, 0xf3, 0xc0,
88005 + 0x18, 0xe4, 0x3a, 0xb0, 0x6a, 0xba, 0x7c, 0x0a, 0x71, 0xef, 0x02, 0x27,
88006 + 0xb4, 0x70, 0xdf, 0xbc, 0x6e, 0xe6, 0xf5, 0x9b, 0xbf, 0xb7, 0x1d, 0xb8,
88007 + 0x19, 0xb5, 0xee, 0x73, 0x90, 0x31, 0x15, 0x1c, 0x81, 0x1f, 0xd7, 0x16,
88008 + 0xfe, 0x1b, 0xcf, 0x6f, 0x32, 0x1e, 0xd4, 0x90, 0x0a, 0xf7, 0x15, 0x69,
88009 + 0x74, 0x69, 0x87, 0x18, 0x76, 0xb0, 0x18, 0x84, 0x9c, 0x8f, 0x91, 0xf3,
88010 + 0x22, 0x4d, 0x62, 0x05, 0x30, 0x8c, 0xb8, 0xb7, 0x06, 0x7a, 0x55, 0x19,
88011 + 0x82, 0x5d, 0x11, 0x4b, 0x4a, 0x4a, 0xba, 0x7a, 0x54, 0xaf, 0x83, 0xb6,
88012 + 0x50, 0x5d, 0xd6, 0x5b, 0xd1, 0x31, 0x37, 0xef, 0x97, 0xda, 0x1d, 0x71,
88013 + 0x6a, 0x7d, 0x3f, 0x67, 0x74, 0x8f, 0x65, 0x74, 0x4b, 0x83, 0x74, 0x98,
88014 + 0x6f, 0x64, 0xf3, 0x09, 0xe6, 0x3f, 0x91, 0xd9, 0x9c, 0xb5, 0xa0, 0x84,
88015 + 0x3a, 0xcb, 0x3a, 0x10, 0x06, 0x81, 0xfa, 0x4f, 0x75, 0x60, 0x61, 0x00,
88016 + 0xbb, 0x45, 0xd9, 0xbe, 0xc2, 0x67, 0x4c, 0x0e, 0x9e, 0x75, 0x58, 0x49,
88017 + 0x74, 0x33, 0x3e, 0xf1, 0xdb, 0xcc, 0xf6, 0x21, 0x2d, 0xf1, 0x7a, 0x90,
88018 + 0x16, 0x69, 0x04, 0xbb, 0xa8, 0xb3, 0xb7, 0xb3, 0xd9, 0x01, 0xac, 0x21,
88019 + 0xe7, 0x53, 0x57, 0x1e, 0xd6, 0xcc, 0xef, 0x7b, 0xb5, 0x3d, 0xc7, 0x0e,
88020 + 0xe8, 0x77, 0x26, 0x2c, 0xce, 0x2c, 0x75, 0x86, 0x20, 0x7e, 0x54, 0x8e,
88021 + 0x23, 0x9f, 0x9f, 0x86, 0xef, 0x2f, 0xc6, 0x0a, 0xdd, 0x02, 0x6b, 0x8e,
88022 + 0x41, 0x1c, 0x86, 0xd6, 0x17, 0xb5, 0x68, 0x0d, 0x91, 0xfc, 0x2d, 0xb9,
88023 + 0x3a, 0x3f, 0x22, 0x85, 0x4b, 0xd4, 0x01, 0xfd, 0xd2, 0xe6, 0xe0, 0x3e,
88024 + 0x73, 0xd8, 0x67, 0x02, 0x18, 0x78, 0x3f, 0xea, 0x8b, 0x2f, 0x7a, 0x1a,
88025 + 0x58, 0x9b, 0x96, 0x9c, 0x3a, 0xe4, 0xab, 0x4b, 0x3c, 0x3f, 0x31, 0xb8,
88026 + 0x94, 0xd5, 0x36, 0xe6, 0xd6, 0x10, 0x6a, 0xfa, 0x1f, 0x91, 0xbb, 0x4a,
88027 + 0x56, 0x2b, 0xc6, 0x1c, 0x89, 0x7f, 0x00, 0xfb, 0x62, 0x6e, 0x93, 0x6b,
88028 + 0xbb, 0x98, 0xe7, 0x1c, 0x65, 0x30, 0x16, 0x0f, 0xa0, 0xae, 0x61, 0xcf,
88029 + 0xa3, 0xe4, 0x19, 0x42, 0xcd, 0x27, 0xfe, 0x63, 0xdc, 0xe4, 0x3b, 0xcf,
88030 + 0x44, 0x6c, 0x73, 0x31, 0x8e, 0x60, 0xe4, 0x99, 0x7e, 0x91, 0xf9, 0x8a,
88031 + 0xcf, 0xc6, 0xe8, 0xea, 0xa8, 0xd4, 0x3b, 0x11, 0x30, 0x76, 0xaa, 0x7c,
88032 + 0x5c, 0xb8, 0x86, 0xf7, 0x2e, 0xe7, 0xbd, 0x81, 0x79, 0x3c, 0x77, 0xad,
88033 + 0xce, 0xa8, 0xed, 0x79, 0xff, 0xb2, 0x06, 0xc3, 0xa2, 0xc7, 0xd8, 0x64,
88034 + 0xaf, 0xc2, 0xfa, 0x67, 0x71, 0x6b, 0x96, 0x7d, 0xca, 0xeb, 0x1d, 0xd6,
88035 + 0x42, 0xcd, 0xbc, 0x44, 0x00, 0x1c, 0x92, 0xba, 0x9f, 0x9f, 0x0b, 0x71,
88036 + 0x1c, 0x53, 0x36, 0x65, 0x4c, 0xc2, 0x76, 0xec, 0x47, 0xa2, 0xb2, 0x76,
88037 + 0xa6, 0x92, 0x26, 0xf9, 0xba, 0x05, 0x29, 0x6c, 0xcc, 0x8b, 0x7b, 0xd6,
88038 + 0xc8, 0x66, 0x5f, 0x9e, 0xb7, 0x2c, 0xbe, 0xd4, 0x5e, 0xa2, 0x1e, 0x98,
88039 + 0xdf, 0x61, 0x3d, 0x0c, 0x81, 0x67, 0xc5, 0x6c, 0xdf, 0xb2, 0x34, 0x3b,
88040 + 0x91, 0xd7, 0x10, 0x8c, 0xdd, 0x3b, 0xe0, 0xbb, 0x22, 0xce, 0xac, 0xe5,
88041 + 0x62, 0xa7, 0xbf, 0x17, 0x73, 0xee, 0xb9, 0xb8, 0xbf, 0x57, 0x43, 0x7e,
88042 + 0x89, 0xbd, 0xc4, 0x57, 0xc2, 0x3e, 0x12, 0x7d, 0xe3, 0x39, 0x8d, 0xfd,
88043 + 0x68, 0xa3, 0x02, 0x7a, 0xdb, 0xd9, 0xec, 0x3c, 0x21, 0xe8, 0x34, 0x6c,
88044 + 0x4e, 0x5b, 0x73, 0x0f, 0xc6, 0xe2, 0x3f, 0x0c, 0xf1, 0x05, 0x75, 0x05,
88045 + 0xfa, 0xe2, 0xbd, 0xc7, 0x3d, 0x26, 0xe4, 0xc5, 0xd4, 0x62, 0xad, 0x77,
88046 + 0x02, 0x98, 0xd5, 0xe8, 0xfc, 0x2d, 0xaf, 0x3d, 0x49, 0x1b, 0xf8, 0xfb,
88047 + 0xac, 0x8c, 0x8a, 0xde, 0x19, 0x95, 0xe7, 0xd0, 0xef, 0x15, 0x36, 0x50,
88048 + 0xe7, 0x61, 0x63, 0x75, 0xb6, 0x35, 0xcb, 0x9e, 0xed, 0x32, 0x72, 0x79,
88049 + 0xb5, 0x12, 0xc5, 0xae, 0x33, 0x2d, 0x67, 0xbe, 0x1b, 0xce, 0x6e, 0xdb,
88050 + 0x7c, 0xc6, 0xfa, 0x4e, 0x20, 0xa7, 0xbb, 0x91, 0x9c, 0xe9, 0x7a, 0xd0,
88051 + 0xcb, 0xbb, 0xd5, 0xd7, 0x46, 0xc4, 0xdb, 0x06, 0xfe, 0xc4, 0x53, 0x9e,
88052 + 0x0b, 0x3e, 0xa8, 0xd2, 0x6e, 0xec, 0x63, 0xe9, 0x5f, 0xe2, 0xdb, 0xa3,
88053 + 0x78, 0x1e, 0x11, 0xf7, 0x1c, 0xfb, 0x4e, 0xc6, 0x24, 0xfd, 0x33, 0xd8,
88054 + 0x0b, 0x13, 0xfb, 0x20, 0x73, 0x87, 0xb9, 0x9f, 0xe7, 0x66, 0x9e, 0xab,
88055 + 0xc4, 0x01, 0xed, 0x2c, 0xc2, 0x5e, 0xd7, 0x62, 0xe6, 0xeb, 0x0d, 0x73,
88056 + 0xcd, 0xf6, 0x6e, 0x1e, 0xfb, 0xe2, 0x81, 0xde, 0x2d, 0xef, 0x7b, 0x18,
88057 + 0xaf, 0xe5, 0x81, 0x7c, 0xbd, 0x6e, 0x73, 0xf5, 0x0d, 0xe4, 0xed, 0xcb,
88058 + 0x69, 0xd9, 0xe6, 0xec, 0xe1, 0x07, 0x6e, 0x97, 0xb3, 0x97, 0x3f, 0x46,
88059 + 0xce, 0xfe, 0x30, 0xcb, 0xd9, 0xa2, 0x8d, 0x6b, 0xb5, 0x31, 0xb8, 0xf6,
88060 + 0x23, 0xac, 0x0d, 0x65, 0x77, 0x0a, 0x6d, 0x3b, 0xe8, 0xc3, 0x0f, 0xd2,
88061 + 0x47, 0xb9, 0x7f, 0xfa, 0x71, 0x5a, 0xd7, 0xa4, 0x81, 0x0f, 0x37, 0x46,
88062 + 0x11, 0x4f, 0xcc, 0xe9, 0x3c, 0x9e, 0x02, 0xc4, 0x72, 0xce, 0x8f, 0x7e,
88063 + 0xf3, 0x28, 0x63, 0xa1, 0x60, 0xf3, 0xc6, 0xad, 0xe6, 0x34, 0x65, 0x59,
88064 + 0x44, 0x2f, 0xf7, 0x63, 0x8e, 0xdd, 0x7e, 0xac, 0x14, 0x37, 0x4a, 0xf2,
88065 + 0xfc, 0x0c, 0xb1, 0x2b, 0x8c, 0xaf, 0x42, 0xe7, 0x6b, 0x91, 0x2f, 0x85,
88066 + 0x69, 0xe6, 0x33, 0xab, 0x51, 0x11, 0x31, 0x84, 0xbb, 0x55, 0x6a, 0x4e,
88067 + 0xa2, 0xdf, 0x0a, 0x34, 0xfc, 0xfc, 0x32, 0xe2, 0x88, 0xd8, 0x8a, 0x98,
88068 + 0x98, 0xdd, 0x44, 0x4c, 0x1c, 0xe7, 0xbb, 0xdd, 0xb7, 0x60, 0x69, 0x5d,
88069 + 0xbb, 0xbf, 0x0f, 0xfd, 0x4b, 0x32, 0x74, 0xce, 0xe0, 0x4e, 0x75, 0x8b,
88070 + 0xef, 0xb4, 0x8d, 0x5f, 0x60, 0x09, 0xe6, 0x57, 0x6d, 0xfc, 0xd2, 0xa7,
88071 + 0x8c, 0x7b, 0x63, 0x7e, 0x67, 0xf3, 0xe6, 0xd7, 0x16, 0x03, 0xae, 0xc5,
88072 + 0x36, 0x9e, 0x63, 0xf6, 0x9b, 0xa7, 0xbb, 0x3f, 0xd7, 0x16, 0x23, 0x36,
88073 + 0x8c, 0x9c, 0x8a, 0x6d, 0xac, 0xcd, 0xbe, 0x81, 0x63, 0xbf, 0xd6, 0xcf,
88074 + 0x85, 0x01, 0x39, 0x93, 0xde, 0x23, 0x90, 0x83, 0x9a, 0x17, 0xac, 0xb1,
88075 + 0x3f, 0x88, 0xa7, 0xd0, 0x2f, 0x81, 0xae, 0xbb, 0x17, 0x2f, 0xc6, 0x31,
88076 + 0xd2, 0xde, 0x7f, 0x80, 0x5c, 0x0f, 0x36, 0xa4, 0x1c, 0xea, 0x4d, 0xbd,
88077 + 0x46, 0x25, 0x3a, 0x9b, 0xeb, 0xf4, 0x17, 0xab, 0xcb, 0xbf, 0xcb, 0xc3,
88078 + 0xfa, 0xce, 0xed, 0xf8, 0xbc, 0x01, 0xbe, 0x3f, 0xdf, 0x86, 0x0f, 0xeb,
88079 + 0x3b, 0xe4, 0x19, 0xb9, 0xd9, 0x6b, 0xd4, 0x6f, 0xc6, 0x75, 0x82, 0xb8,
88080 + 0x27, 0xef, 0xde, 0xbb, 0xdc, 0x60, 0x0e, 0xe4, 0x35, 0x9e, 0x71, 0xce,
88081 + 0x3d, 0xf3, 0x58, 0xcf, 0x63, 0x3c, 0x8f, 0xf9, 0x3c, 0xd6, 0xc3, 0xf8,
88082 + 0x19, 0xe9, 0xfb, 0x57, 0x6f, 0x84, 0xd8, 0x7f, 0xe4, 0x7f, 0xb8, 0xb7,
88083 + 0x10, 0x23, 0x24, 0xb9, 0x75, 0xd7, 0xfb, 0x69, 0xd6, 0xaf, 0x94, 0x98,
88084 + 0x6b, 0xf8, 0xb3, 0x8f, 0xdf, 0x45, 0x7f, 0x10, 0x67, 0xb6, 0x4d, 0xb2,
88085 + 0xb1, 0x4f, 0xd3, 0xef, 0x07, 0xbf, 0x9a, 0x61, 0xf2, 0x17, 0xfb, 0xf5,
88086 + 0x47, 0xf2, 0x9c, 0x62, 0x0e, 0xd9, 0x9c, 0xe2, 0x79, 0x70, 0x0f, 0x37,
88087 + 0x66, 0x19, 0x7e, 0x7c, 0x3e, 0xce, 0xf3, 0x08, 0xf1, 0xf4, 0x40, 0x9e,
88088 + 0xe3, 0xb0, 0x53, 0x74, 0xc3, 0xe8, 0xe9, 0x04, 0x36, 0xe3, 0xdd, 0xb7,
88089 + 0x81, 0xde, 0x89, 0x76, 0x5a, 0x72, 0x9e, 0xb8, 0x79, 0xdf, 0xdd, 0xdb,
88090 + 0x27, 0xd1, 0x6e, 0xb4, 0xeb, 0xa0, 0xdd, 0xc2, 0x78, 0x5c, 0x11, 0x03,
88091 + 0x6e, 0x87, 0x13, 0x79, 0x3d, 0x07, 0x06, 0x4d, 0xe7, 0x76, 0xfa, 0xd8,
88092 + 0x35, 0x3d, 0xe9, 0x7f, 0x2b, 0xd8, 0x8b, 0x0f, 0xdb, 0xee, 0x00, 0x3e,
88093 + 0xdc, 0xa6, 0xe7, 0xa4, 0x0c, 0xda, 0x00, 0xf5, 0xcd, 0xf6, 0x21, 0xec,
88094 + 0x31, 0x6f, 0x18, 0xd7, 0xf6, 0x9b, 0xc4, 0x46, 0xf6, 0x99, 0xdf, 0x2c,
88095 + 0xc8, 0xc8, 0x3e, 0xfb, 0x9e, 0x6c, 0x73, 0x64, 0x4c, 0x48, 0xbf, 0x6e,
88096 + 0x59, 0xfd, 0x1f, 0xcf, 0xf4, 0xef, 0xeb, 0x2c, 0xea, 0xa3, 0x30, 0x8d,
88097 + 0xba, 0x7a, 0xd0, 0x35, 0xcc, 0xed, 0xd2, 0x52, 0xd5, 0x13, 0xd2, 0xa8,
88098 + 0xb0, 0x5f, 0x12, 0xdc, 0xb5, 0xa0, 0xc3, 0x02, 0xf5, 0x28, 0x43, 0x8f,
88099 + 0x51, 0xdc, 0x4d, 0xc2, 0xa5, 0x96, 0x84, 0xc9, 0x0a, 0x08, 0x67, 0xbe,
88100 + 0x43, 0xbb, 0x1d, 0xd3, 0x5b, 0x1d, 0xda, 0xed, 0x49, 0xbd, 0xde, 0x99,
88101 + 0x44, 0x7f, 0x18, 0xc2, 0xdb, 0xe1, 0xec, 0x25, 0x61, 0x8c, 0xcd, 0xc5,
88102 + 0x1c, 0x4f, 0x0b, 0xfb, 0xb1, 0x63, 0x7a, 0xaa, 0xcb, 0xf1, 0x49, 0x1d,
88103 + 0x75, 0x07, 0xe5, 0xfe, 0xc9, 0x00, 0x13, 0x93, 0xeb, 0xc8, 0xa3, 0x17,
88104 + 0x7b, 0xfd, 0xbd, 0x71, 0x3f, 0xcc, 0xe4, 0x62, 0x2e, 0xcd, 0x65, 0x0b,
88105 + 0x71, 0x8a, 0xb2, 0x21, 0x77, 0x32, 0xfe, 0x99, 0xdd, 0x83, 0xf7, 0xa3,
88106 + 0x8f, 0xda, 0xe3, 0xae, 0xfc, 0xfb, 0x04, 0x72, 0xa7, 0x60, 0xb1, 0x67,
88107 + 0x2d, 0xc5, 0x9d, 0xda, 0x37, 0xa6, 0x19, 0xbd, 0x0d, 0xdb, 0xa1, 0x47,
88108 + 0x98, 0xf7, 0xf0, 0x07, 0xae, 0x2e, 0x73, 0x0d, 0x7d, 0x38, 0xee, 0x82,
88109 + 0xbc, 0xcf, 0xad, 0xa5, 0x5c, 0x63, 0x8c, 0xa3, 0x57, 0x9c, 0xff, 0x15,
88110 + 0x68, 0xdf, 0x31, 0xad, 0x9e, 0xb2, 0xf7, 0x75, 0x15, 0xe1, 0x1e, 0xd6,
88111 + 0x63, 0x3f, 0x23, 0x4e, 0x23, 0x95, 0xa0, 0x19, 0x2f, 0xd8, 0xfb, 0x5a,
88112 + 0xe2, 0x05, 0xbc, 0x93, 0xa2, 0x07, 0x9d, 0x1f, 0xe8, 0x41, 0xe7, 0xd1,
88113 + 0x83, 0x8e, 0x15, 0x11, 0xe7, 0x09, 0xee, 0xa1, 0xaa, 0xd9, 0xcf, 0x9b,
88114 + 0x31, 0xde, 0x39, 0xdb, 0xbe, 0xec, 0x43, 0x77, 0x05, 0xdd, 0x22, 0xec,
88115 + 0xcf, 0xf5, 0x3b, 0xb3, 0xef, 0x5a, 0xa3, 0xa0, 0x4f, 0x6c, 0x3f, 0xd6,
88116 + 0xf6, 0x8b, 0xd2, 0x8c, 0x49, 0x73, 0x28, 0xa3, 0xf9, 0xf2, 0x1e, 0x9a,
88117 + 0x3b, 0x79, 0x46, 0xca, 0x96, 0xe6, 0x2b, 0xcc, 0x3b, 0xd6, 0xd2, 0x62,
88118 + 0x96, 0x6f, 0x27, 0xf0, 0x3c, 0x94, 0x3d, 0xe7, 0xf4, 0xf7, 0xee, 0xe1,
88119 + 0x7f, 0xc8, 0xe9, 0xbf, 0xf3, 0x99, 0x3a, 0x27, 0xec, 0x93, 0x21, 0x6f,
88120 + 0xc1, 0xe9, 0x7f, 0x27, 0xc1, 0x85, 0x73, 0x84, 0x3e, 0xe9, 0xf7, 0x17,
88121 + 0xc0, 0x60, 0x74, 0x5f, 0x53, 0xb0, 0xbb, 0x31, 0xed, 0x05, 0xe2, 0xda,
88122 + 0xdc, 0xec, 0x11, 0x8b, 0x6f, 0x6a, 0x42, 0x49, 0x8e, 0xb9, 0x83, 0xcf,
88123 + 0x18, 0x17, 0xec, 0x37, 0x03, 0xbc, 0xf7, 0x65, 0x6c, 0xe1, 0xfe, 0x2c,
88124 + 0xc8, 0xe1, 0x96, 0xd5, 0xcb, 0xe9, 0xdf, 0x8b, 0xbc, 0x1a, 0xeb, 0x01,
88125 + 0xea, 0xc6, 0x0c, 0xf5, 0xba, 0xf9, 0x6d, 0x63, 0x05, 0xb5, 0xe6, 0x2d,
88126 + 0xc4, 0x3e, 0xf2, 0xd3, 0xf6, 0x58, 0x5b, 0xf6, 0xdb, 0x02, 0xea, 0xd0,
88127 + 0x08, 0xee, 0x4b, 0xd1, 0xcd, 0x6f, 0x0c, 0x72, 0x01, 0x34, 0x17, 0xb1,
88128 + 0x76, 0xba, 0x9b, 0xf7, 0xbc, 0xe8, 0xf3, 0x81, 0x7b, 0xab, 0xd1, 0xfb,
88129 + 0xa6, 0xe9, 0x0f, 0xd2, 0xf2, 0xf7, 0x2f, 0x97, 0xa2, 0x15, 0x3a, 0x18,
88130 + 0x15, 0x00, 0x00, 0x00 };
88131
88132 static const u32 bnx2_TPAT_b09FwData[(0x0/4) + 1] = { 0x0 };
88133 static const u32 bnx2_TPAT_b09FwRodata[(0x4/4) + 1] = {
88134 0x00000001, 0x00000000 };
88135
88136 static struct fw_info bnx2_tpat_fw_09 = {
88137 - /* Firmware version: 4.6.15 */
88138 + /* Firmware version: 4.4.26 */
88139 .ver_major = 0x4,
88140 - .ver_minor = 0x6,
88141 - .ver_fix = 0xf,
88142 + .ver_minor = 0x4,
88143 + .ver_fix = 0x1a,
88144
88145 .start_addr = 0x08000488,
88146
88147 .text_addr = 0x08000400,
88148 - .text_len = 0x13a4,
88149 + .text_len = 0x1514,
88150 .text_index = 0x0,
88151 .gz_text = bnx2_TPAT_b09FwText,
88152 .gz_text_len = sizeof(bnx2_TPAT_b09FwText),
88153 @@ -3643,868 +3709,871 @@
88154 .data_index = 0x0,
88155 .data = bnx2_TPAT_b09FwData,
88156
88157 - .sbss_addr = 0x080017c0,
88158 - .sbss_len = 0x40,
88159 + .sbss_addr = 0x08001940,
88160 + .sbss_len = 0x48,
88161 .sbss_index = 0x0,
88162
88163 - .bss_addr = 0x08001800,
88164 + .bss_addr = 0x08001988,
88165 .bss_len = 0x12b4,
88166 .bss_index = 0x0,
88167
88168 - .rodata_addr = 0x080017a4,
88169 + .rodata_addr = 0x08001914,
88170 .rodata_len = 0x4,
88171 .rodata_index = 0x0,
88172 .rodata = bnx2_TPAT_b09FwRodata,
88173 };
88174
88175 static u8 bnx2_TXP_b09FwText[] = {
88176 - 0xc5, 0x7b, 0x7d, 0x70, 0x1b, 0xe7, 0x79, 0xe7, 0xef, 0xc5, 0x02, 0xe4,
88177 - 0x02, 0x04, 0x41, 0x90, 0x82, 0x64, 0xf0, 0xca, 0x44, 0x58, 0x61, 0x41,
88178 - 0xc1, 0x26, 0x2d, 0x2f, 0x28, 0x50, 0x82, 0xcb, 0x55, 0x85, 0x4a, 0xb4,
88179 - 0x44, 0xc7, 0x74, 0x43, 0x3b, 0x6a, 0x4b, 0x67, 0x3c, 0x09, 0x2a, 0x51,
88180 - 0x16, 0x2d, 0xcb, 0x16, 0xed, 0xf8, 0x7a, 0xec, 0x9c, 0x27, 0xda, 0x50,
88181 - 0x1f, 0x96, 0x25, 0x10, 0x00, 0x3f, 0x64, 0xca, 0x9d, 0xce, 0x19, 0x26,
88182 - 0x29, 0x51, 0xb6, 0xf1, 0x21, 0xc7, 0x4a, 0x6a, 0xcf, 0x24, 0x11, 0x4e,
88183 - 0x96, 0x65, 0xd9, 0x89, 0x3f, 0x92, 0xf8, 0x7a, 0x4e, 0xa7, 0x37, 0xd5,
88184 - 0x48, 0xfe, 0x90, 0x2c, 0xf9, 0xa3, 0x69, 0x6f, 0x2a, 0xb5, 0x4e, 0xf7,
88185 - 0x9e, 0x67, 0x17, 0x94, 0x15, 0xd7, 0x9d, 0x9b, 0xf6, 0xfe, 0x38, 0xce,
88186 - 0x70, 0x00, 0xec, 0xbe, 0xfb, 0xbe, 0xcf, 0xf7, 0xf3, 0x7b, 0x9e, 0xf7,
88187 - 0xdd, 0x56, 0xc0, 0x83, 0xea, 0x5f, 0x3d, 0xfd, 0xc7, 0x87, 0x86, 0x1f,
88188 - 0x8e, 0x2d, 0x5b, 0xb1, 0x8c, 0xbe, 0x76, 0xa2, 0xa1, 0xc6, 0xc9, 0x37,
88189 - 0x57, 0x08, 0x20, 0xf5, 0x21, 0xfe, 0x43, 0x7f, 0x5f, 0xf9, 0x8f, 0x3d,
88190 - 0x66, 0xfd, 0x49, 0x80, 0x7f, 0x9e, 0x2e, 0xfe, 0x87, 0xec, 0xd0, 0x93,
88191 - 0x5d, 0x6b, 0x54, 0xc8, 0x92, 0x7e, 0x79, 0xd5, 0x26, 0x15, 0x48, 0x16,
88192 - 0xda, 0x42, 0x6b, 0xf1, 0x1b, 0xd3, 0x08, 0x38, 0xc1, 0xd7, 0xbf, 0xa2,
88193 - 0x7f, 0xb6, 0xe3, 0xc7, 0x2b, 0x95, 0x4f, 0xf3, 0x12, 0x64, 0xbf, 0x7e,
88194 - 0x10, 0xfe, 0x56, 0xc8, 0x2d, 0xf4, 0xcc, 0x5f, 0x2c, 0x2d, 0x39, 0xe1,
88195 - 0x9b, 0x9f, 0x0b, 0x86, 0x4b, 0xd7, 0xb0, 0x33, 0x3b, 0x84, 0x23, 0x71,
88196 - 0xa0, 0x76, 0x34, 0xa2, 0xed, 0x04, 0x72, 0x0e, 0x3d, 0x12, 0x3a, 0x81,
88197 - 0x10, 0x66, 0x0b, 0x2a, 0x1e, 0x2d, 0xc3, 0x70, 0xea, 0x21, 0x3c, 0x96,
88198 - 0xfe, 0x17, 0x33, 0xe4, 0xe2, 0x47, 0x86, 0xb0, 0x8b, 0xc6, 0xee, 0x4e,
88199 - 0x43, 0x0e, 0xea, 0x8f, 0x20, 0x98, 0x85, 0x5c, 0xaf, 0x0f, 0xa3, 0x38,
88200 - 0x1a, 0x3e, 0x3d, 0x07, 0xa5, 0xaf, 0x59, 0x52, 0x86, 0x80, 0xb6, 0xd4,
88201 - 0x5d, 0x42, 0xe9, 0x2f, 0x09, 0x25, 0xb1, 0x4d, 0x40, 0x16, 0x34, 0xee,
88202 - 0x86, 0x02, 0x7f, 0x0e, 0x63, 0x69, 0x41, 0xc6, 0x19, 0x89, 0xe7, 0x59,
88203 - 0x45, 0xf2, 0x16, 0x70, 0xaa, 0x1a, 0x76, 0x67, 0x79, 0x0d, 0x81, 0x9d,
88204 - 0xf1, 0x88, 0x7f, 0x06, 0x7c, 0x3f, 0x84, 0x11, 0x6b, 0x9c, 0x42, 0x5c,
88205 - 0x9b, 0xe6, 0x2e, 0xcd, 0x34, 0x0f, 0x69, 0xb5, 0x30, 0xfc, 0x4a, 0x10,
88206 - 0x10, 0x18, 0xd1, 0x1c, 0x48, 0xfa, 0xd7, 0x84, 0x9c, 0x50, 0x82, 0x9b,
88207 - 0xf1, 0xcf, 0xc4, 0x73, 0x32, 0xea, 0x82, 0x3d, 0x3e, 0x85, 0x5a, 0x54,
88208 - 0xfc, 0xb6, 0xd4, 0xa6, 0xd3, 0xa6, 0x79, 0x4a, 0x75, 0xe2, 0x10, 0xc9,
88209 - 0x67, 0xa4, 0xf0, 0xcf, 0x66, 0x85, 0x64, 0xb3, 0x4b, 0x9d, 0x5f, 0x5f,
88210 - 0x46, 0xde, 0x6f, 0x9a, 0x33, 0x74, 0x6f, 0x4f, 0x61, 0x5e, 0xce, 0xa6,
88211 - 0xe9, 0x50, 0x4d, 0x73, 0x93, 0xfa, 0x4f, 0xe6, 0xc6, 0xdf, 0x1a, 0x1b,
88212 - 0xc3, 0x33, 0x39, 0x3f, 0x9e, 0xcd, 0x26, 0x51, 0x48, 0x9b, 0x90, 0x74,
88213 - 0x27, 0x06, 0x47, 0x43, 0xd8, 0x56, 0xec, 0x46, 0x31, 0xad, 0xa4, 0xce,
88214 - 0xd0, 0x73, 0x1b, 0xe3, 0x2a, 0xee, 0x2f, 0xf6, 0x60, 0x2e, 0x0d, 0xd3,
88215 - 0xad, 0xab, 0x15, 0xb7, 0x88, 0x62, 0x4b, 0xb1, 0x17, 0xa5, 0xb4, 0x7a,
88216 - 0x7a, 0x44, 0x44, 0x86, 0x9b, 0x25, 0x27, 0xb6, 0x17, 0xdb, 0xf1, 0x40,
88217 - 0x31, 0x41, 0xcf, 0x98, 0xf8, 0x5a, 0xac, 0x85, 0xc6, 0x77, 0xe0, 0xe9,
88218 - 0x49, 0xd3, 0x8c, 0xc6, 0xfc, 0x18, 0x2c, 0x6a, 0x98, 0xcb, 0x39, 0x90,
88219 - 0x3a, 0xe4, 0x44, 0xea, 0x29, 0x60, 0xcb, 0x53, 0x1d, 0x98, 0xc9, 0x99,
88220 - 0xd8, 0xa8, 0x8d, 0x34, 0x3b, 0xe0, 0x42, 0xca, 0x2f, 0xe0, 0x52, 0x7d,
88221 - 0xd8, 0xec, 0xb7, 0x69, 0x3f, 0x23, 0x09, 0x6c, 0x7d, 0x2a, 0x8a, 0x77,
88222 - 0xd2, 0x06, 0xbe, 0xd6, 0x19, 0xc4, 0x70, 0x31, 0x80, 0x37, 0xd3, 0x01,
88223 - 0x5a, 0x43, 0xc3, 0x1b, 0x69, 0x99, 0xd6, 0x69, 0xc7, 0xc9, 0x34, 0x8f,
88224 - 0xe1, 0xb1, 0x5e, 0x0c, 0x14, 0x5b, 0xf0, 0x7a, 0x3a, 0x48, 0x6b, 0x06,
88225 - 0xf0, 0x2a, 0x8d, 0xbb, 0xb7, 0xa8, 0xe2, 0x34, 0x8d, 0x1b, 0x2c, 0x86,
88226 - 0xf0, 0x4a, 0xda, 0x4b, 0xb4, 0x06, 0x70, 0x22, 0x3d, 0x84, 0x9d, 0xe9,
88227 - 0xb6, 0xd3, 0x6b, 0x49, 0x86, 0xa1, 0x05, 0xbc, 0x0e, 0x5f, 0x7b, 0xd7,
88228 - 0xec, 0x0d, 0x58, 0xa6, 0x42, 0xeb, 0xcc, 0xaf, 0x3b, 0x84, 0x91, 0xf4,
88229 - 0xa9, 0xaa, 0xbf, 0x68, 0x78, 0x2c, 0x77, 0xd9, 0xfc, 0xf1, 0xd2, 0x16,
88230 - 0x1c, 0xc9, 0x02, 0x4f, 0xcf, 0x00, 0x33, 0x59, 0xc3, 0xac, 0xd7, 0x4d,
88231 - 0x73, 0xba, 0xb3, 0x9d, 0xe4, 0xa5, 0xf6, 0x6f, 0xa4, 0x51, 0xcf, 0x96,
88232 - 0x9d, 0xc0, 0x53, 0x4a, 0x7f, 0x05, 0x0e, 0xe4, 0xe7, 0x9c, 0xa8, 0x19,
88233 - 0x55, 0x7a, 0xf2, 0x50, 0x4e, 0x6f, 0x21, 0x8f, 0x3a, 0x94, 0x55, 0xfa,
88234 - 0x0c, 0xec, 0x30, 0x83, 0x7a, 0x6b, 0xa8, 0x5d, 0x32, 0xe1, 0x23, 0x5b,
88235 - 0x48, 0xb7, 0x9b, 0x66, 0xc3, 0x4a, 0xd3, 0x7c, 0xbd, 0x13, 0xa6, 0x43,
88236 - 0x57, 0x4f, 0x97, 0xa1, 0x56, 0x3e, 0x82, 0x3a, 0x7c, 0x02, 0x95, 0xaf,
88237 - 0x78, 0x11, 0x19, 0x0c, 0x4b, 0x91, 0xa1, 0xcb, 0xf4, 0x6c, 0x7d, 0x91,
88238 - 0xcc, 0x99, 0x78, 0x51, 0x47, 0x81, 0x62, 0x59, 0x86, 0x93, 0xf8, 0x69,
88239 - 0x1f, 0x35, 0x4d, 0xa7, 0xea, 0x85, 0x97, 0xe4, 0xbb, 0xfe, 0x80, 0x69,
88240 - 0xbe, 0xaf, 0xf9, 0x51, 0x43, 0xba, 0xb9, 0x65, 0xcc, 0xc4, 0xb4, 0x76,
88241 - 0x82, 0xe4, 0x29, 0x90, 0xea, 0x8b, 0xd3, 0x33, 0x01, 0x1a, 0x9f, 0xc0,
88242 - 0xfa, 0xd1, 0x20, 0x9e, 0xc9, 0xca, 0xf8, 0xf1, 0xd2, 0x28, 0xea, 0x68,
88243 - 0x2e, 0x0f, 0xc9, 0xaa, 0x96, 0xe4, 0x87, 0x22, 0x99, 0x5b, 0xd1, 0xb6,
88244 - 0x47, 0x14, 0xcf, 0x10, 0x8f, 0x41, 0x7c, 0xbf, 0x1c, 0xc0, 0x73, 0x65,
88245 - 0x3f, 0x8e, 0x96, 0x5b, 0x70, 0xbc, 0xac, 0xe1, 0x60, 0x4e, 0xd9, 0x5b,
88246 - 0x81, 0x89, 0x7a, 0x7d, 0x07, 0x1a, 0x96, 0x03, 0x6f, 0xe6, 0x63, 0xc8,
88247 - 0xe4, 0x4c, 0xb3, 0x40, 0x74, 0x7b, 0x88, 0x8f, 0x37, 0xf2, 0x5f, 0xc5,
88248 - 0xe1, 0x49, 0x27, 0x42, 0xd3, 0x01, 0x3c, 0x9b, 0x76, 0xe2, 0xfa, 0x8c,
88249 - 0x62, 0xe4, 0xa1, 0x46, 0xb7, 0x09, 0x35, 0x79, 0x83, 0x50, 0x72, 0x06,
88250 - 0x22, 0x21, 0x97, 0x70, 0xa0, 0xf5, 0xb0, 0x13, 0x6a, 0x29, 0x04, 0x57,
88251 - 0xab, 0x0c, 0xb5, 0xf5, 0x21, 0xc0, 0xe7, 0x40, 0x0d, 0xf9, 0xc6, 0xfa,
88252 - 0xf1, 0x28, 0x5d, 0x0b, 0xd0, 0x35, 0x7c, 0xb5, 0x16, 0xd2, 0x22, 0x09,
88253 - 0x24, 0x3b, 0x55, 0x42, 0xd2, 0x69, 0x9a, 0x92, 0xda, 0x81, 0xbb, 0x1e,
88254 - 0x37, 0xcd, 0xf0, 0x72, 0x1e, 0xef, 0x47, 0xb8, 0x44, 0x72, 0x68, 0x25,
88255 - 0xba, 0xb2, 0x44, 0x67, 0x96, 0xe8, 0xcc, 0x12, 0x9d, 0x59, 0x89, 0xec,
88256 - 0x46, 0xd1, 0x80, 0x47, 0x48, 0x5f, 0x21, 0xe2, 0xf1, 0x1d, 0x4b, 0x57,
88257 - 0xcf, 0x95, 0x83, 0xc4, 0x43, 0xc8, 0xe2, 0xe1, 0xe9, 0x9c, 0x80, 0x43,
88258 - 0x55, 0xfa, 0xce, 0x60, 0x35, 0xc2, 0x31, 0x25, 0x99, 0x47, 0x92, 0x9e,
88259 - 0x53, 0xf6, 0x1a, 0x50, 0x7a, 0x2a, 0x64, 0x03, 0x1b, 0xfd, 0x09, 0xcc,
88260 - 0x65, 0x5d, 0xa8, 0x53, 0x95, 0x10, 0xe9, 0x2c, 0x5a, 0xc1, 0x02, 0xdc,
88261 - 0xe7, 0xa7, 0x39, 0x1d, 0xb2, 0xb0, 0x63, 0xc9, 0x23, 0x88, 0x8c, 0x3b,
88262 - 0x30, 0xab, 0x49, 0xe4, 0xa3, 0x1a, 0xa4, 0x56, 0x5a, 0xae, 0x14, 0xa7,
88263 - 0x4f, 0x9a, 0x3f, 0x4b, 0x6b, 0x11, 0x3d, 0x34, 0x1f, 0xf9, 0x26, 0xcb,
88264 - 0x32, 0x4a, 0x34, 0x3c, 0x6a, 0xd1, 0x7b, 0xb4, 0xfc, 0x75, 0x61, 0xdb,
88265 - 0x90, 0x4e, 0x36, 0xa3, 0x84, 0x20, 0x94, 0x68, 0x48, 0x28, 0x5a, 0x52,
88266 - 0xf8, 0x31, 0x53, 0x7e, 0x83, 0xc6, 0x04, 0xae, 0x19, 0xd3, 0x87, 0x91,
88267 - 0xac, 0xc0, 0x5a, 0xd5, 0xc4, 0x1a, 0xad, 0x0f, 0x3b, 0xcb, 0xf3, 0xbe,
88268 - 0xc9, 0x31, 0xcc, 0xef, 0x9b, 0x49, 0x77, 0x63, 0x57, 0x36, 0x84, 0x9d,
88269 - 0x85, 0xa0, 0x6f, 0x3a, 0xcd, 0xf7, 0x54, 0xf2, 0x79, 0xbe, 0x17, 0xb8,
88270 - 0xe6, 0x5e, 0xcb, 0x35, 0xf7, 0x12, 0x18, 0x99, 0xf8, 0x1d, 0x8a, 0x23,
88271 - 0x0d, 0xd8, 0xa9, 0x7e, 0x4a, 0xf6, 0xa2, 0x26, 0x06, 0xd0, 0x8c, 0x33,
88272 - 0xfe, 0x76, 0xec, 0x9f, 0xea, 0xc5, 0xae, 0xa9, 0x65, 0x78, 0x6c, 0xa2,
88273 - 0x25, 0xe5, 0xd1, 0x49, 0x38, 0x9e, 0x70, 0x72, 0x40, 0x28, 0x43, 0x92,
88274 - 0x08, 0x47, 0x07, 0xc8, 0x7e, 0x5b, 0x1b, 0x4d, 0xf3, 0x44, 0x8c, 0xec,
88275 - 0x5b, 0x6b, 0xd3, 0xd6, 0x93, 0x00, 0x2a, 0x7d, 0x4a, 0xcf, 0xbb, 0xf0,
88276 - 0xe2, 0x76, 0xb2, 0xbb, 0x99, 0x18, 0x06, 0x24, 0x48, 0xed, 0x5e, 0xfc,
88277 - 0xbd, 0xf9, 0x94, 0x93, 0xe5, 0x6e, 0xee, 0xd8, 0xa4, 0xed, 0x15, 0x1c,
88278 - 0xeb, 0x6a, 0xae, 0xc6, 0x13, 0x9e, 0x9f, 0x9f, 0x21, 0xdd, 0xd1, 0x3c,
88279 - 0x83, 0xb1, 0xb6, 0xc4, 0x20, 0x2e, 0x9b, 0x67, 0x36, 0xf4, 0x62, 0xe7,
88280 - 0xdc, 0x32, 0xec, 0x9b, 0x70, 0x21, 0xd9, 0x28, 0xd0, 0xa0, 0x86, 0x2b,
88281 - 0xf7, 0x61, 0x19, 0x8c, 0x19, 0x7e, 0xae, 0x17, 0x07, 0xe7, 0xec, 0xdf,
88282 - 0xd9, 0xab, 0xbf, 0xe7, 0xe7, 0x3b, 0x4f, 0x3a, 0x65, 0x79, 0x72, 0xac,
88283 - 0x24, 0x15, 0xe8, 0x6d, 0x38, 0x32, 0x11, 0x20, 0xdd, 0x76, 0x0b, 0xe7,
88284 - 0xe1, 0x45, 0x3e, 0xcf, 0xe3, 0x26, 0x4e, 0x69, 0xa4, 0xe7, 0xec, 0x3a,
88285 - 0xe1, 0x39, 0xdc, 0x23, 0x5c, 0xa5, 0x3b, 0x45, 0xcd, 0xf4, 0x37, 0x85,
88286 - 0x7c, 0x38, 0x25, 0x6a, 0x4b, 0xed, 0x24, 0xfb, 0x7e, 0xe1, 0x3e, 0xac,
88287 - 0x84, 0x42, 0xe2, 0x11, 0xd2, 0xe7, 0x06, 0x21, 0x95, 0xe0, 0x77, 0xe8,
88288 - 0xc3, 0xc2, 0x51, 0xa2, 0x39, 0x2c, 0x1b, 0xe2, 0x75, 0x82, 0xa4, 0x37,
88289 - 0x18, 0x92, 0x3e, 0x84, 0x8d, 0x14, 0xff, 0x6f, 0x4d, 0xeb, 0x78, 0x34,
88290 - 0x5b, 0x4b, 0x31, 0x92, 0x7d, 0xff, 0x32, 0xad, 0xab, 0xe2, 0x31, 0xca,
88291 - 0x15, 0xb2, 0xbe, 0x0f, 0x3e, 0xf2, 0xb9, 0xd7, 0x63, 0xec, 0x8f, 0x40,
88292 - 0x21, 0x1b, 0xee, 0x7f, 0x54, 0x98, 0xe6, 0xd6, 0x88, 0xb9, 0x78, 0x5d,
88293 - 0xac, 0x2d, 0x7a, 0x12, 0xff, 0x68, 0xe6, 0x03, 0x43, 0xa8, 0xef, 0xa4,
88294 - 0x7b, 0xa3, 0x90, 0x5d, 0xfa, 0x2e, 0x1c, 0xa2, 0x5c, 0xe2, 0xd1, 0x29,
88295 - 0xbe, 0x8c, 0x86, 0xfb, 0x1f, 0x13, 0x1c, 0xf3, 0x95, 0xca, 0xb3, 0x18,
88296 - 0x39, 0x5d, 0x0b, 0x25, 0xb4, 0x46, 0xb4, 0x69, 0x75, 0x92, 0x91, 0x68,
88297 - 0xa6, 0x14, 0xe7, 0xee, 0x54, 0x86, 0xf7, 0x40, 0xf1, 0x5f, 0x00, 0xfb,
88298 - 0x2a, 0xe7, 0x93, 0x5d, 0x48, 0x58, 0x79, 0xc5, 0xc0, 0x4d, 0x57, 0xf3,
88299 - 0x8a, 0x4e, 0x76, 0x52, 0x8b, 0x3d, 0x44, 0xd7, 0xcb, 0x9a, 0x12, 0x9c,
88300 - 0x86, 0xb9, 0x78, 0x40, 0xe3, 0x7b, 0x3a, 0x76, 0x95, 0xcd, 0x90, 0xa4,
88301 - 0xb3, 0xac, 0x90, 0xaa, 0xd5, 0x99, 0x56, 0x3f, 0xf9, 0xc6, 0x6f, 0xcc,
88302 - 0x81, 0xb8, 0xac, 0xbd, 0x57, 0xf0, 0x93, 0xbc, 0xe0, 0x73, 0x16, 0xbf,
88303 - 0x2c, 0xff, 0x9a, 0x70, 0xe8, 0xbf, 0x31, 0xbf, 0x1d, 0x87, 0x6f, 0x71,
88304 - 0xd1, 0x99, 0xaa, 0xd3, 0xd1, 0x37, 0x3c, 0xba, 0xc3, 0x6c, 0x56, 0x1d,
88305 - 0x14, 0xab, 0x54, 0x8a, 0xed, 0xde, 0xc4, 0xa5, 0x4e, 0xb7, 0x78, 0xbd,
88306 - 0x33, 0xd8, 0xfb, 0x51, 0xc1, 0x4d, 0x7a, 0x46, 0xdf, 0xb6, 0x62, 0xc2,
88307 - 0xf9, 0x21, 0xd9, 0x5a, 0x0d, 0xc5, 0x55, 0x14, 0x5b, 0x7a, 0x2f, 0x50,
88308 - 0x2e, 0xba, 0x25, 0xe6, 0xfe, 0xe3, 0x1a, 0xdd, 0xf1, 0x55, 0x37, 0x1e,
88309 - 0xbc, 0x69, 0x36, 0xd1, 0x40, 0xb1, 0xdd, 0x8f, 0xd3, 0xf1, 0x1e, 0x8c,
88310 - 0x94, 0x6b, 0xc9, 0x0e, 0x9f, 0xaf, 0xec, 0x56, 0x5b, 0x7a, 0x2f, 0xa6,
88311 - 0x17, 0x53, 0x2c, 0xc1, 0x67, 0x85, 0x4e, 0xb5, 0x6f, 0x9b, 0x38, 0x71,
88312 - 0xab, 0x07, 0x71, 0x92, 0xab, 0x2c, 0x5f, 0x49, 0xe3, 0xd3, 0xc5, 0xaa,
88313 - 0x5a, 0x59, 0x2d, 0xb5, 0x0e, 0xc9, 0x52, 0xeb, 0x70, 0x0d, 0xc5, 0xe1,
88314 - 0xf3, 0x37, 0x0a, 0x9c, 0xba, 0x31, 0x92, 0xa8, 0x11, 0x6e, 0x9c, 0xe9,
88315 - 0x4b, 0x90, 0x9d, 0xb4, 0xa4, 0xdc, 0x3a, 0xc5, 0x8f, 0x51, 0x01, 0x49,
88316 - 0x4d, 0x60, 0xe7, 0x0c, 0x1e, 0x19, 0xd1, 0x7a, 0x61, 0xcc, 0xb1, 0x0d,
88317 - 0xb5, 0x63, 0x64, 0xae, 0x0f, 0x46, 0x59, 0x42, 0x3e, 0x40, 0xcc, 0x97,
88318 - 0x91, 0x72, 0xe9, 0xed, 0xdd, 0xf9, 0xc2, 0x5d, 0x2e, 0xdb, 0x87, 0x89,
88319 - 0xff, 0xec, 0xa4, 0x0f, 0x1e, 0xd6, 0xf3, 0x69, 0x92, 0x51, 0x3b, 0x9e,
88320 - 0x2f, 0x47, 0x29, 0xde, 0x69, 0x24, 0x17, 0x95, 0xe2, 0x45, 0x88, 0xec,
88321 - 0x4b, 0xc6, 0xc6, 0x09, 0xe5, 0x20, 0xc5, 0x85, 0x5c, 0x9e, 0x40, 0x51,
88322 - 0x32, 0xe0, 0xa7, 0xfc, 0xfd, 0x6a, 0x35, 0x06, 0x0c, 0xd2, 0xa7, 0x62,
88323 - 0x24, 0x81, 0x93, 0x0e, 0xa0, 0xa3, 0x59, 0x8f, 0xec, 0x6d, 0x26, 0x7d,
88324 - 0x34, 0x96, 0xdc, 0xd8, 0x3e, 0xd1, 0x84, 0x07, 0xa6, 0x3c, 0xd8, 0x3a,
88325 - 0x61, 0xe2, 0x52, 0x8c, 0x6d, 0x43, 0xe9, 0x27, 0x12, 0xbb, 0xeb, 0x48,
88326 - 0xae, 0xb7, 0xc6, 0x22, 0x09, 0xb7, 0x70, 0xa2, 0xb6, 0xd4, 0x47, 0x38,
88327 - 0x20, 0xc9, 0x7e, 0xa1, 0xd1, 0x1c, 0xa1, 0x9d, 0xda, 0xed, 0x48, 0x05,
88328 - 0x64, 0xb8, 0x4a, 0x5e, 0x8a, 0x25, 0xec, 0xc7, 0x7c, 0xef, 0xeb, 0xd8,
88329 - 0x58, 0xe3, 0x85, 0x94, 0x91, 0x91, 0x23, 0x0c, 0x80, 0x45, 0x35, 0xe8,
88330 - 0x69, 0x75, 0xd0, 0x7f, 0xc0, 0x37, 0x3b, 0xd9, 0xe2, 0x3b, 0x44, 0xf1,
88331 - 0x75, 0x4b, 0xd6, 0xc1, 0xeb, 0x30, 0x66, 0xa0, 0xb9, 0xfd, 0x78, 0x9a,
88332 - 0xe2, 0xf5, 0x43, 0x14, 0x7f, 0x8e, 0x94, 0xcb, 0x82, 0xe3, 0x89, 0xc5,
88333 - 0x4f, 0x96, 0x78, 0xcb, 0x12, 0x6f, 0x59, 0xe2, 0x8b, 0xe2, 0xc2, 0xd1,
88334 - 0x2c, 0xf3, 0xf1, 0x6b, 0xf2, 0xd1, 0x04, 0xf1, 0xee, 0xc6, 0x66, 0xa2,
88335 - 0xf7, 0xc1, 0xa9, 0x3a, 0x6c, 0x23, 0x7a, 0x8b, 0x9a, 0xa2, 0x3d, 0x27,
88336 - 0x4c, 0xec, 0x8f, 0x29, 0xc6, 0x4f, 0x29, 0x10, 0x39, 0x5a, 0x4d, 0xb3,
88337 - 0x4f, 0x63, 0x9e, 0x29, 0x5e, 0x39, 0x2c, 0x9e, 0xf7, 0x26, 0xe1, 0xc6,
88338 - 0x20, 0x3d, 0x33, 0x30, 0x85, 0xcf, 0x1c, 0xc4, 0x93, 0x9b, 0x78, 0xdc,
88339 - 0xa7, 0x29, 0x89, 0x1b, 0x28, 0xae, 0x9f, 0x53, 0x23, 0x95, 0x73, 0x12,
88340 - 0x7e, 0x9f, 0xe4, 0x31, 0xcc, 0xf2, 0xb8, 0x89, 0xf8, 0x79, 0x80, 0xf0,
88341 - 0x4e, 0x3d, 0xc5, 0xa5, 0xc2, 0x81, 0x48, 0xf4, 0x97, 0xc4, 0x7b, 0xa4,
88342 - 0x44, 0xb4, 0x8f, 0xda, 0xb4, 0xdf, 0xc7, 0xb4, 0xc7, 0x4c, 0xdc, 0x43,
88343 - 0xb4, 0x1f, 0x26, 0xda, 0x07, 0xb3, 0x2c, 0x0f, 0xce, 0x3b, 0x36, 0xfd,
88344 - 0x47, 0xca, 0xbc, 0xee, 0x97, 0xf1, 0x30, 0x4f, 0x7f, 0x13, 0x36, 0x4e,
88345 - 0xcd, 0xcb, 0xcb, 0x34, 0xbf, 0xad, 0x1d, 0x33, 0xff, 0x84, 0x64, 0xb6,
88346 - 0xb8, 0xc4, 0x72, 0x83, 0x51, 0xab, 0x47, 0x0e, 0x6e, 0xc1, 0x7d, 0x0e,
88347 - 0x78, 0xbc, 0x58, 0x50, 0xe2, 0x5c, 0x10, 0xc2, 0x31, 0xd2, 0xef, 0x71,
88348 - 0xca, 0x67, 0xcf, 0x97, 0xaf, 0xcd, 0x6f, 0xac, 0xeb, 0x49, 0xd2, 0xb1,
88349 - 0x92, 0x37, 0x28, 0xb6, 0xa5, 0xca, 0x49, 0xec, 0x9e, 0x42, 0x72, 0x56,
88350 - 0xfb, 0x6f, 0x14, 0x60, 0x16, 0x91, 0x7d, 0xd5, 0x26, 0xfd, 0xaa, 0x07,
88351 - 0x9b, 0x66, 0x02, 0x18, 0x2a, 0xaf, 0x41, 0x96, 0xe2, 0xcd, 0x36, 0x8a,
88352 - 0xcf, 0x1f, 0xc7, 0x92, 0x5b, 0x7d, 0x88, 0x90, 0x7e, 0x03, 0xb8, 0x8f,
88353 - 0x9e, 0xd9, 0x37, 0xc5, 0x3c, 0xf8, 0xab, 0x7a, 0x0e, 0x60, 0x0b, 0x5d,
88354 - 0xdb, 0x33, 0x25, 0xe3, 0x25, 0xed, 0x49, 0xc2, 0x34, 0x36, 0xc6, 0xb8,
88355 - 0x27, 0x0b, 0x3f, 0xb9, 0x27, 0x61, 0xc0, 0x48, 0xf4, 0x25, 0xfa, 0xbd,
88356 - 0xb9, 0xec, 0xf1, 0x8d, 0x4c, 0xe2, 0x7b, 0x8b, 0x75, 0x1f, 0x16, 0x10,
88357 - 0x1e, 0xbb, 0x4b, 0x8b, 0x90, 0xdd, 0x3b, 0x31, 0x5c, 0x76, 0xe0, 0x3b,
88358 - 0x33, 0x1e, 0x3c, 0x34, 0xf1, 0x99, 0x59, 0x13, 0x77, 0xe2, 0x8e, 0x56,
88359 - 0x0f, 0x1e, 0x9c, 0x49, 0x62, 0xef, 0x14, 0x42, 0xb5, 0xb1, 0x31, 0x8a,
88360 - 0xdd, 0x76, 0x3e, 0xa8, 0x23, 0xde, 0x1f, 0x9b, 0xf2, 0xfa, 0x06, 0x0f,
88361 - 0xb0, 0x0c, 0xd6, 0x04, 0xdd, 0x40, 0xa5, 0x36, 0x26, 0x61, 0xb3, 0x26,
88362 - 0x2d, 0xa8, 0x25, 0x43, 0x7f, 0x92, 0xe6, 0x9b, 0x86, 0xf4, 0xda, 0x62,
88363 - 0x44, 0x0e, 0x36, 0x4b, 0x95, 0xdc, 0x02, 0x34, 0xe1, 0xa1, 0xb9, 0x24,
88364 - 0xc6, 0xc8, 0x46, 0xb7, 0x4f, 0x8c, 0x7c, 0xaf, 0x91, 0x62, 0x88, 0xaf,
88365 - 0x43, 0x19, 0x7c, 0x53, 0xe8, 0x28, 0x44, 0xdc, 0xd8, 0x36, 0xe3, 0xf5,
88366 - 0x6d, 0x3d, 0x60, 0xae, 0x66, 0x7b, 0xba, 0x77, 0xae, 0x09, 0xf7, 0x4f,
88367 - 0xd1, 0xb5, 0x09, 0xb6, 0x61, 0xb2, 0xb5, 0x48, 0x2d, 0xf1, 0x16, 0x4e,
88368 - 0xba, 0x09, 0x33, 0x49, 0xb1, 0x3a, 0x92, 0x87, 0x1b, 0x5b, 0x2c, 0x5b,
88369 - 0xf0, 0x63, 0xf3, 0x94, 0x89, 0xb3, 0x5a, 0x14, 0x39, 0xb2, 0xeb, 0x83,
88370 - 0x53, 0xca, 0xe5, 0x6e, 0xc2, 0x3b, 0xef, 0x49, 0xca, 0xc1, 0x56, 0x29,
88371 - 0x89, 0xa6, 0xe5, 0x14, 0xe3, 0x9b, 0x4c, 0xf3, 0x9e, 0x8e, 0xb6, 0xa1,
88372 - 0xb7, 0x88, 0xe6, 0x46, 0x7d, 0x11, 0x2a, 0x8d, 0x4a, 0x8e, 0xb0, 0xf3,
88373 - 0x70, 0x8d, 0xe3, 0x46, 0x9c, 0x59, 0x48, 0x7a, 0x06, 0xc7, 0xf2, 0x80,
88374 - 0xaf, 0x29, 0x63, 0xe7, 0xb8, 0x26, 0xb2, 0x93, 0xc6, 0x4c, 0xd0, 0xd7,
88375 - 0x58, 0x82, 0xaf, 0xa6, 0x04, 0xbc, 0x40, 0xf1, 0x65, 0xc1, 0xf2, 0xdf,
88376 - 0x98, 0xa9, 0x26, 0x0b, 0x13, 0xfa, 0x5e, 0x9c, 0x54, 0x8c, 0x0a, 0x94,
88377 - 0xbd, 0x14, 0x2a, 0xf1, 0xc4, 0x9c, 0xd3, 0x77, 0x98, 0xf0, 0x5f, 0x93,
88378 - 0x1a, 0xc5, 0x1e, 0xd2, 0xe7, 0x0e, 0xb2, 0x85, 0xbf, 0x27, 0x7c, 0xf2,
88379 - 0x58, 0x26, 0x1c, 0xd2, 0x44, 0x3f, 0x4d, 0x0c, 0xec, 0x2a, 0x51, 0xcc,
88380 - 0x77, 0xac, 0xa5, 0x20, 0xa6, 0x44, 0x29, 0xad, 0x21, 0x9d, 0x71, 0xc1,
88381 - 0x58, 0x68, 0xeb, 0xe4, 0xfe, 0xec, 0x71, 0xd3, 0xa7, 0xaa, 0xf9, 0x12,
88382 - 0xe9, 0xec, 0xe1, 0xb2, 0x17, 0xc3, 0x84, 0x07, 0x16, 0x10, 0x8e, 0x7c,
88383 - 0x90, 0xec, 0x62, 0xfb, 0x84, 0x44, 0xf4, 0xf1, 0xb8, 0x24, 0x92, 0x8b,
88384 - 0x6c, 0x3c, 0xfa, 0xd0, 0x0c, 0xdb, 0x25, 0xd9, 0x11, 0xd9, 0xe2, 0x31,
88385 - 0xca, 0xf9, 0xcf, 0xff, 0x16, 0x06, 0x51, 0xfc, 0xc6, 0xd5, 0xdc, 0x6f,
88386 - 0xcb, 0x63, 0x64, 0x8a, 0x79, 0x56, 0x0e, 0xc2, 0x91, 0xc4, 0x2d, 0xda,
88387 - 0xaf, 0x28, 0x27, 0x30, 0xef, 0x84, 0x83, 0xa7, 0xa2, 0x94, 0x57, 0x08,
88388 - 0xdb, 0xc4, 0x2e, 0x99, 0x5b, 0x02, 0x2c, 0x03, 0xe6, 0xe7, 0x66, 0x89,
88389 - 0xf3, 0x67, 0x13, 0xe1, 0xdf, 0xff, 0x77, 0xbb, 0xdb, 0x64, 0xa6, 0x2c,
88390 - 0x3c, 0x4b, 0x38, 0x9b, 0xec, 0x29, 0x75, 0xd5, 0x7e, 0x1e, 0x34, 0xcf,
88391 - 0x04, 0x38, 0x5f, 0x37, 0x21, 0x75, 0xd5, 0x16, 0xd8, 0x96, 0xb0, 0x58,
88392 - 0xeb, 0xd8, 0xf9, 0xa0, 0x1f, 0x6c, 0x0f, 0xd1, 0x6b, 0xec, 0xc1, 0x43,
88393 - 0x34, 0xf9, 0xb1, 0x75, 0x8e, 0xed, 0xd7, 0xfc, 0x64, 0xb1, 0xfe, 0x2f,
88394 - 0xe6, 0x95, 0x95, 0xea, 0xc1, 0x5f, 0xe1, 0xeb, 0x74, 0x3d, 0x80, 0xef,
88395 - 0x90, 0x1f, 0xdd, 0x47, 0x7c, 0x6e, 0xed, 0x7c, 0xc0, 0xf2, 0xdb, 0xad,
88396 - 0xe5, 0xdf, 0xa3, 0xeb, 0x2c, 0xef, 0x6e, 0x8a, 0x73, 0x1a, 0xf6, 0x65,
88397 - 0x2b, 0x9c, 0x87, 0xc8, 0xe6, 0xe3, 0xf8, 0x4b, 0x8a, 0xb3, 0xc7, 0xca,
88398 - 0x8c, 0xc9, 0x12, 0x16, 0x1e, 0xfb, 0x61, 0xb9, 0x1d, 0x3f, 0x20, 0x9f,
88399 - 0x7c, 0x9e, 0x62, 0xee, 0xf7, 0x2d, 0x9c, 0xe6, 0x14, 0x8f, 0xa6, 0x55,
88400 - 0x3c, 0x4d, 0x58, 0x7f, 0x5f, 0x21, 0x84, 0x23, 0xe9, 0xf0, 0xde, 0x0b,
88401 - 0x50, 0x5e, 0x20, 0x79, 0xf9, 0xf6, 0x52, 0x8d, 0x76, 0x38, 0xad, 0xe4,
88402 - 0x81, 0xa0, 0x6f, 0x4f, 0xc1, 0xef, 0x1b, 0x49, 0x07, 0x7c, 0x23, 0x84,
88403 - 0x81, 0x76, 0xa6, 0x5b, 0x7c, 0x3b, 0x0b, 0xcb, 0x11, 0x6a, 0x82, 0xb1,
88404 - 0x88, 0x72, 0xc2, 0x7d, 0x13, 0x1b, 0x90, 0x6a, 0xb4, 0xe3, 0xfc, 0x03,
88405 - 0x53, 0x1c, 0x83, 0xdb, 0x52, 0x37, 0x3a, 0xbe, 0x5e, 0xd5, 0xb7, 0x1f,
88406 - 0x43, 0x74, 0xad, 0xa1, 0x03, 0xbe, 0x37, 0xad, 0x58, 0x0b, 0x3c, 0x4f,
88407 - 0xb6, 0xf5, 0x50, 0xc7, 0x6f, 0xcc, 0x64, 0xd5, 0xb6, 0x7e, 0x30, 0xe9,
88408 - 0xa4, 0xf8, 0x6a, 0x9a, 0x47, 0x3b, 0x04, 0x02, 0x1d, 0xdd, 0x30, 0x9a,
88409 - 0xe6, 0x6b, 0xc8, 0x64, 0xbe, 0xb9, 0x83, 0x22, 0x94, 0x7a, 0x0b, 0x12,
88410 - 0x0b, 0x28, 0xb5, 0x74, 0xac, 0xae, 0xde, 0x93, 0xf1, 0x9d, 0x09, 0x37,
88411 - 0x52, 0x4d, 0x7e, 0xcc, 0x12, 0x36, 0xd9, 0x68, 0xc5, 0xa2, 0xb6, 0xd3,
88412 - 0xc7, 0xa9, 0x96, 0x09, 0x7d, 0xc3, 0x4f, 0xbc, 0x26, 0x21, 0x77, 0x10,
88413 - 0x90, 0xa8, 0xd2, 0xc4, 0xbf, 0x73, 0x73, 0x51, 0xec, 0x2e, 0xff, 0xd8,
88414 - 0x61, 0xe7, 0x13, 0x25, 0x9f, 0xc4, 0x4f, 0x28, 0x2f, 0xd2, 0xbd, 0xec,
88415 - 0x9b, 0x66, 0xc8, 0xb2, 0x33, 0x81, 0xc7, 0x97, 0x45, 0xf6, 0xfe, 0x4f,
88416 - 0xc7, 0x75, 0xc4, 0x17, 0xc9, 0x2a, 0x6b, 0xd5, 0x8e, 0x0d, 0xd7, 0xa9,
88417 - 0x0f, 0xe2, 0x2f, 0xfd, 0x2c, 0xcb, 0x61, 0x91, 0xa5, 0x3a, 0xf5, 0x8c,
88418 - 0x0b, 0x0d, 0x41, 0x35, 0x8b, 0x17, 0xfa, 0xf8, 0x5a, 0xc0, 0xf7, 0x44,
88419 - 0x3a, 0xe9, 0x08, 0xa8, 0xf0, 0xbb, 0xf4, 0x6e, 0xf1, 0x04, 0x61, 0xc0,
88420 - 0x89, 0x74, 0x8f, 0x98, 0x28, 0xdc, 0x29, 0x8c, 0xfc, 0x37, 0x85, 0x31,
88421 - 0x9b, 0x12, 0x46, 0xa1, 0x9f, 0x3e, 0x37, 0x88, 0xc9, 0xc2, 0xb0, 0xd8,
88422 - 0x5d, 0xe0, 0x79, 0x49, 0x27, 0x34, 0xf7, 0x0f, 0x29, 0xc6, 0xfe, 0x80,
88423 - 0x62, 0xec, 0x31, 0x8a, 0xb1, 0xcf, 0x93, 0x5d, 0x7f, 0xff, 0x2a, 0x96,
88424 - 0x65, 0x5b, 0x4e, 0x32, 0x06, 0xf1, 0xfd, 0xbc, 0xf4, 0x12, 0xe9, 0x95,
88425 - 0x65, 0xf6, 0x13, 0xb2, 0x61, 0x96, 0xc5, 0x7f, 0xe6, 0x9c, 0x40, 0xfa,
88426 - 0xf8, 0xd0, 0xb2, 0xd9, 0xc7, 0x97, 0x31, 0x66, 0x1a, 0x16, 0x3b, 0x98,
88427 - 0xae, 0x5a, 0xaa, 0xdb, 0x55, 0xc2, 0x21, 0xd9, 0x61, 0xb1, 0xb1, 0xc0,
88428 - 0xd7, 0xf7, 0xe1, 0x3e, 0xaa, 0xff, 0xb6, 0xc6, 0xc2, 0x89, 0x6e, 0xc2,
88429 - 0x48, 0x17, 0x54, 0x73, 0x71, 0x34, 0x46, 0x98, 0xe1, 0xc6, 0x2b, 0x54,
88430 - 0xab, 0x22, 0xb9, 0x2d, 0xae, 0xe4, 0xf3, 0x76, 0x5e, 0xcd, 0xa5, 0xc1,
88431 - 0x75, 0x3a, 0x1a, 0x9c, 0xaa, 0x72, 0x24, 0x89, 0xf0, 0xde, 0xb8, 0x03,
88432 - 0x46, 0x8d, 0xee, 0xc2, 0x80, 0x55, 0x17, 0xae, 0x41, 0x66, 0x42, 0xe0,
88433 - 0x65, 0xf2, 0x01, 0x17, 0xc9, 0xe8, 0x50, 0x27, 0x3e, 0x23, 0xb5, 0x0a,
88434 - 0xaa, 0xe3, 0x4f, 0x9f, 0xa5, 0x9c, 0x73, 0x17, 0xe5, 0xd6, 0x89, 0xec,
88435 - 0x0a, 0x04, 0x3b, 0x64, 0x34, 0x74, 0x38, 0xf1, 0x8d, 0xd2, 0xef, 0xe3,
88436 - 0x4c, 0x63, 0xe4, 0xe0, 0x0b, 0xf0, 0xf8, 0x5e, 0x9a, 0x64, 0x7a, 0xf0,
88437 - 0xbd, 0x3a, 0xaa, 0xd7, 0xb6, 0x12, 0x4e, 0x1a, 0x27, 0x1a, 0x7a, 0x3a,
88438 - 0x22, 0x3d, 0xb7, 0x09, 0xf8, 0x6b, 0xf5, 0x1a, 0x8c, 0xb7, 0xfa, 0xe0,
88439 - 0x57, 0x53, 0xe2, 0xd5, 0x02, 0xe5, 0x0d, 0xc7, 0x37, 0xc5, 0x5b, 0xb3,
88440 - 0x3a, 0xf6, 0x96, 0xfb, 0xc5, 0x2f, 0x66, 0x65, 0x90, 0x4e, 0x28, 0x3e,
88441 - 0x69, 0xc8, 0x10, 0x5d, 0x2e, 0xc2, 0x42, 0x2f, 0xdf, 0x21, 0x70, 0x9d,
88442 - 0x9a, 0xc4, 0x77, 0x56, 0xb0, 0xcd, 0xdb, 0xb1, 0x2b, 0x98, 0x51, 0x42,
88443 - 0x49, 0x47, 0xb7, 0x08, 0x52, 0xec, 0x6a, 0xc8, 0xf4, 0x88, 0x06, 0xc2,
88444 - 0x9e, 0x0b, 0xa7, 0x37, 0x88, 0x05, 0x25, 0xc6, 0x9a, 0xf0, 0x2f, 0x24,
88445 - 0xd9, 0x2c, 0x2c, 0x7d, 0x20, 0xd9, 0x18, 0xdf, 0xc5, 0xb6, 0x43, 0x39,
88446 - 0x4a, 0xf6, 0xfd, 0x7a, 0x32, 0x89, 0x5b, 0x3b, 0xd6, 0x20, 0x64, 0xd9,
88447 - 0xc7, 0xb0, 0xd8, 0x47, 0xf2, 0x4b, 0x5a, 0xfd, 0x07, 0xbf, 0xef, 0xc0,
88448 - 0x24, 0x5c, 0x7e, 0x1d, 0x21, 0x89, 0x72, 0x43, 0xa9, 0x23, 0x32, 0xf8,
88449 - 0x96, 0xe8, 0x15, 0xa3, 0x85, 0x80, 0x2f, 0x9d, 0x86, 0xbf, 0x8e, 0x74,
88450 - 0x9c, 0x26, 0x1d, 0xef, 0x21, 0x1d, 0xef, 0xf9, 0x12, 0x1d, 0xef, 0x24,
88451 - 0x1d, 0xef, 0x2f, 0xfc, 0x9d, 0xa5, 0x33, 0xa7, 0xae, 0x63, 0x94, 0x72,
88452 - 0xee, 0x78, 0xab, 0xcd, 0x4f, 0x81, 0x30, 0xea, 0x9e, 0x58, 0xaf, 0x13,
88453 - 0x1e, 0x9d, 0x62, 0x66, 0x2f, 0x3d, 0xd3, 0x5c, 0xb5, 0x65, 0xbf, 0xef,
88454 - 0xc9, 0x74, 0xb7, 0x78, 0xd2, 0xf2, 0x2b, 0xc6, 0x8d, 0x49, 0x34, 0xaa,
88455 - 0x3d, 0x34, 0x17, 0xdb, 0xca, 0x9d, 0x02, 0x4f, 0xb1, 0xbd, 0x7c, 0x93,
88456 - 0x04, 0xcf, 0x36, 0x93, 0x12, 0x28, 0xb2, 0xdd, 0xf4, 0xd3, 0x6f, 0xb6,
88457 - 0x9d, 0x0d, 0xa2, 0xb1, 0xf8, 0x45, 0xfb, 0x81, 0xdf, 0xa9, 0xb3, 0xfd,
88458 - 0xb0, 0x1d, 0x0d, 0x0b, 0x67, 0x91, 0x7c, 0x96, 0xe6, 0x1f, 0x21, 0xba,
88459 - 0x77, 0xa6, 0xf7, 0x3b, 0x99, 0x36, 0x59, 0x67, 0x3b, 0x62, 0xfb, 0xb9,
88460 - 0x48, 0xb4, 0xb2, 0xcd, 0x5f, 0xed, 0xd9, 0xd0, 0xdf, 0xef, 0x4a, 0x50,
88461 - 0xb7, 0x38, 0x6d, 0x1e, 0x38, 0x87, 0x73, 0xce, 0xe6, 0x78, 0xea, 0xb7,
88462 - 0x6a, 0xba, 0x63, 0x57, 0x73, 0x39, 0xe7, 0x75, 0xc8, 0x0b, 0xf4, 0x80,
88463 - 0xfe, 0x9d, 0xd6, 0x2b, 0x34, 0xdf, 0x10, 0xb4, 0x15, 0x90, 0x03, 0xfa,
88464 - 0xa4, 0x3e, 0xd9, 0x4a, 0xf1, 0x96, 0xe6, 0x94, 0x33, 0x80, 0x9a, 0x11,
88465 - 0xd8, 0x99, 0x10, 0x84, 0x47, 0x17, 0x91, 0xbf, 0xc1, 0xf0, 0xe8, 0x4a,
88466 - 0x4f, 0x92, 0xee, 0x2d, 0x25, 0x7c, 0xbe, 0x58, 0xdf, 0x06, 0x33, 0x0b,
88467 - 0xb9, 0x41, 0x1f, 0xc4, 0x27, 0xa3, 0x61, 0xff, 0x79, 0x28, 0xa9, 0xb3,
88468 - 0x92, 0x52, 0xa1, 0x3c, 0x35, 0x34, 0x22, 0x94, 0xc1, 0xcb, 0x42, 0x49,
88469 - 0x96, 0xac, 0x1e, 0xcf, 0x36, 0xb4, 0x5b, 0x58, 0x7c, 0x10, 0xd1, 0x02,
88470 - 0x70, 0x1b, 0x01, 0xbc, 0x7b, 0x6e, 0x26, 0x9b, 0xd4, 0x3e, 0xe2, 0xd8,
88471 - 0x9e, 0x3c, 0x43, 0x54, 0x2f, 0xce, 0x70, 0xcf, 0x68, 0x5b, 0xb5, 0x67,
88472 - 0x34, 0x68, 0xf5, 0x8c, 0xce, 0x4b, 0x4a, 0x62, 0xbe, 0x67, 0x74, 0x05,
88473 - 0x3c, 0x97, 0xd2, 0xef, 0xad, 0xce, 0xb7, 0xb4, 0x3a, 0x5f, 0x5b, 0x01,
88474 - 0x22, 0x9a, 0x31, 0xcc, 0x1a, 0xd5, 0x43, 0xfc, 0x26, 0x1d, 0xae, 0x88,
88475 - 0xda, 0x73, 0x18, 0x21, 0x44, 0xa9, 0xde, 0xbd, 0x9e, 0xf2, 0xa0, 0x3b,
88476 - 0xb3, 0x03, 0x33, 0x9a, 0xd2, 0x37, 0x00, 0xb6, 0x9d, 0x6e, 0xec, 0xa3,
88477 - 0x18, 0xba, 0xb7, 0xcc, 0xf5, 0xc8, 0xb0, 0x38, 0xcb, 0x76, 0xe3, 0xb4,
88478 - 0xa5, 0x66, 0xaf, 0xff, 0x70, 0x75, 0xfd, 0x21, 0x6b, 0xfd, 0x0b, 0x92,
88479 - 0xd2, 0x5f, 0x5d, 0x5f, 0xfb, 0x33, 0xa1, 0xa4, 0x68, 0xfd, 0x9e, 0x3d,
88480 - 0xb4, 0xbe, 0x4b, 0xe5, 0xb5, 0x1f, 0xe6, 0xb5, 0xe9, 0x73, 0x08, 0xd7,
88481 - 0x93, 0xdd, 0xbc, 0x57, 0x90, 0xc5, 0xbb, 0xb9, 0x35, 0xd8, 0x35, 0xb3,
88482 - 0x06, 0x3b, 0xc9, 0xdf, 0xb6, 0x6a, 0x0d, 0x54, 0xa7, 0xa1, 0xde, 0xa7,
88483 - 0xe2, 0xb2, 0x23, 0x22, 0xa4, 0xf5, 0xed, 0x2d, 0x84, 0x41, 0x4e, 0x34,
88484 - 0xcb, 0xf8, 0xd4, 0x1c, 0x50, 0xd7, 0xf4, 0x39, 0x91, 0xfc, 0x7d, 0x0f,
88485 - 0xfe, 0x5c, 0x22, 0xff, 0x7d, 0x67, 0x81, 0x40, 0xd2, 0x63, 0xd5, 0x1c,
88486 - 0x09, 0xe1, 0x29, 0xfe, 0xd8, 0x69, 0xdb, 0x7b, 0x2b, 0x7c, 0x8d, 0x68,
88487 - 0x68, 0x50, 0x6f, 0x40, 0x43, 0xa3, 0x6c, 0x38, 0xa8, 0x8e, 0x59, 0x4f,
88488 - 0x21, 0xd1, 0xcc, 0xf5, 0x51, 0x3c, 0x35, 0x71, 0x65, 0xf9, 0xdf, 0x9b,
88489 - 0x89, 0xeb, 0xf8, 0x39, 0x02, 0x15, 0x56, 0x4c, 0xfc, 0xb2, 0x39, 0xe2,
88490 - 0xe4, 0xbf, 0x6d, 0x54, 0x97, 0xd6, 0x51, 0xf0, 0xed, 0xc1, 0x9e, 0xac,
88491 - 0x92, 0xda, 0x43, 0x75, 0xe5, 0xfe, 0x48, 0x5b, 0xcf, 0x26, 0x51, 0x83,
88492 - 0xd0, 0xc2, 0xf0, 0xe0, 0x00, 0x92, 0xcd, 0xf5, 0x55, 0x3a, 0x1e, 0x46,
88493 - 0xb3, 0x8b, 0x9e, 0xe3, 0x79, 0xae, 0xb1, 0xa7, 0x22, 0xd9, 0x13, 0xdf,
88494 - 0xe7, 0xef, 0x57, 0xef, 0xcb, 0xbf, 0xa3, 0x4f, 0xae, 0xfa, 0xaf, 0x4b,
88495 - 0xbf, 0xec, 0xfa, 0xb1, 0x2f, 0xb9, 0xfe, 0x6f, 0xd5, 0xe7, 0x95, 0x46,
88496 - 0xa7, 0x95, 0xfb, 0x93, 0x0e, 0xee, 0x4b, 0x3a, 0xf5, 0x42, 0xd7, 0x2e,
88497 - 0xf5, 0x3f, 0x51, 0xcc, 0xe2, 0x7e, 0x04, 0xe7, 0xdb, 0x33, 0x56, 0x3f,
88498 - 0xe2, 0xf8, 0x6f, 0x61, 0x4f, 0x8e, 0x1d, 0x6e, 0x51, 0x37, 0x6e, 0x98,
88499 - 0x4d, 0xea, 0x1f, 0x51, 0x7d, 0xb2, 0x03, 0x03, 0x31, 0x0d, 0x63, 0x59,
88500 - 0xa5, 0xef, 0x0e, 0xa8, 0xc9, 0x3b, 0x05, 0x4d, 0x54, 0x72, 0x0b, 0x69,
88501 - 0xbc, 0x7a, 0x4f, 0x33, 0xa8, 0xe6, 0xaa, 0xa0, 0x96, 0x62, 0x8f, 0x53,
88502 - 0xf5, 0xcb, 0x28, 0x05, 0x64, 0x67, 0x29, 0x28, 0xd7, 0x94, 0x5a, 0xe4,
88503 - 0x5a, 0x1a, 0xe7, 0x1d, 0x57, 0x2e, 0xdf, 0x81, 0x1d, 0xb8, 0xbc, 0xdc,
88504 - 0x63, 0x34, 0xeb, 0x8a, 0xbf, 0x59, 0xda, 0x81, 0x5d, 0x31, 0x7e, 0xb6,
88505 - 0x9b, 0x6a, 0x2f, 0x88, 0xc6, 0x0c, 0x21, 0x5c, 0x5d, 0x60, 0x37, 0xd5,
88506 - 0x97, 0x4b, 0x1c, 0x6a, 0xcf, 0xaf, 0x85, 0x53, 0x76, 0x97, 0x20, 0x7c,
88507 - 0x19, 0x07, 0x0e, 0x76, 0xc2, 0xed, 0x5e, 0xa1, 0x0c, 0x9e, 0x10, 0xc3,
88508 - 0x78, 0x36, 0x16, 0xe9, 0xdb, 0x2c, 0x42, 0xb2, 0x87, 0xee, 0xb9, 0x32,
88509 - 0x10, 0x72, 0xc6, 0x70, 0xbb, 0x56, 0x28, 0x41, 0x87, 0x48, 0x62, 0x40,
88510 - 0x55, 0xb5, 0x71, 0xc8, 0xb4, 0x26, 0x44, 0x6d, 0x46, 0xb9, 0x7c, 0x96,
88511 - 0xb0, 0xd1, 0x95, 0xa5, 0xc3, 0xe8, 0x58, 0x1e, 0xd9, 0xdb, 0xef, 0x50,
88512 - 0x65, 0xc2, 0x6c, 0xc2, 0x99, 0xf1, 0xe2, 0xa6, 0x03, 0xf3, 0xfd, 0x19,
88513 - 0xd3, 0xfc, 0x38, 0x56, 0xb9, 0x97, 0x44, 0x28, 0xd7, 0x97, 0xa2, 0xb2,
88514 - 0x97, 0xf0, 0x79, 0xdb, 0x01, 0xc6, 0x4b, 0x9c, 0x0f, 0x2a, 0x64, 0x37,
88515 - 0xed, 0xc4, 0x63, 0x1f, 0x66, 0xd2, 0x8c, 0x9f, 0x74, 0x4c, 0x53, 0x6d,
88516 - 0xa3, 0x8e, 0xb6, 0x50, 0xae, 0x4f, 0x60, 0x2e, 0xcd, 0x7d, 0x9c, 0x41,
88517 - 0x92, 0x71, 0x3f, 0xd1, 0xbf, 0x81, 0xea, 0xda, 0x14, 0xc5, 0x2b, 0x96,
88518 - 0xf1, 0x00, 0xf7, 0x6b, 0xa9, 0x96, 0xfe, 0x79, 0xd7, 0xd7, 0xc6, 0x20,
88519 - 0xbb, 0xf5, 0xd7, 0xba, 0xae, 0x3f, 0x80, 0x46, 0xca, 0xe7, 0x3a, 0x55,
88520 - 0x2e, 0x88, 0x46, 0x22, 0xda, 0x79, 0x44, 0x82, 0x2f, 0x93, 0x3e, 0x46,
88521 - 0x54, 0x60, 0xa7, 0x55, 0x33, 0x3b, 0x61, 0x14, 0xd8, 0xa6, 0xe0, 0xae,
88522 - 0xed, 0x6c, 0xc4, 0xfb, 0xb9, 0xa8, 0xd5, 0x0b, 0x32, 0xa8, 0x8e, 0x79,
88523 - 0x49, 0x53, 0x52, 0x79, 0x7a, 0x6e, 0xa3, 0xff, 0x7f, 0xed, 0xa9, 0x8b,
88524 - 0x43, 0xae, 0x53, 0xd9, 0xbf, 0xfe, 0xdc, 0x73, 0x96, 0x6c, 0xf4, 0xae,
88525 - 0xc9, 0xbf, 0xf0, 0x7c, 0x12, 0xcf, 0x7b, 0x3e, 0x8a, 0x9b, 0x66, 0x82,
88526 - 0x70, 0x65, 0x3f, 0xd5, 0xcd, 0x1f, 0x8f, 0x1a, 0x9e, 0xf3, 0x71, 0xee,
88527 - 0xe9, 0x3a, 0xf1, 0x07, 0xf4, 0xfb, 0xe9, 0x51, 0x19, 0xb7, 0x16, 0x9b,
88528 - 0xe1, 0x1a, 0x93, 0xc8, 0x3f, 0xd7, 0x52, 0xae, 0x72, 0xe0, 0x9e, 0xe8,
88529 - 0x51, 0x54, 0x02, 0x0e, 0x1a, 0xb3, 0x9f, 0x7e, 0x73, 0x6f, 0xea, 0x71,
88530 - 0x6c, 0xf6, 0xcf, 0x7a, 0xde, 0x8f, 0x33, 0xbd, 0x15, 0xa6, 0x97, 0x72,
88531 - 0xe4, 0xed, 0xd8, 0x78, 0x07, 0x0c, 0x9f, 0x6e, 0xfd, 0xbb, 0x5f, 0xee,
88532 - 0x6c, 0xc2, 0xe1, 0x5c, 0x33, 0x5e, 0xcc, 0x19, 0xee, 0x9f, 0x76, 0x46,
88533 - 0x31, 0x38, 0x6a, 0xe2, 0x15, 0xcd, 0x18, 0xae, 0x25, 0x3b, 0x4f, 0x50,
88534 - 0xad, 0x14, 0x5e, 0xae, 0xf8, 0x2f, 0x0b, 0x44, 0x24, 0x44, 0x86, 0x08,
88535 - 0x2c, 0xde, 0x4d, 0xa1, 0x2b, 0x55, 0xaf, 0x47, 0xb4, 0xd7, 0x85, 0x59,
88536 - 0x73, 0x6f, 0xa7, 0x93, 0x68, 0x00, 0xd6, 0x51, 0x4c, 0x9e, 0x4b, 0x47,
88537 - 0x71, 0x6b, 0x44, 0xc6, 0xfa, 0xa2, 0x86, 0x17, 0xd3, 0x5e, 0xdc, 0x55,
88538 - 0x8c, 0x13, 0x86, 0xf6, 0x13, 0xed, 0x09, 0x94, 0xd3, 0x01, 0x7c, 0xbd,
88539 - 0xd8, 0x42, 0xf2, 0x0e, 0x62, 0x6d, 0x91, 0x31, 0x16, 0xe7, 0x67, 0xdd,
88540 - 0xbd, 0x31, 0xde, 0x82, 0x1e, 0x8a, 0xdf, 0xb3, 0x69, 0xb8, 0xb7, 0xc7,
88541 - 0x43, 0xe8, 0x2e, 0x46, 0x51, 0x24, 0x2c, 0x76, 0x3b, 0xcd, 0x79, 0x17,
88542 - 0xe9, 0xa4, 0x9d, 0xea, 0xfb, 0x25, 0x11, 0x42, 0xa8, 0x45, 0xaf, 0x18,
88543 - 0x26, 0xcc, 0x94, 0x28, 0x36, 0xe1, 0xfc, 0x18, 0xdb, 0xf9, 0x5b, 0x5d,
88544 - 0xbb, 0x72, 0x7e, 0x84, 0x8a, 0xb8, 0x49, 0x06, 0xb6, 0x51, 0x95, 0x97,
88545 - 0x2a, 0x12, 0xbd, 0xfb, 0x3a, 0xed, 0x7e, 0xec, 0x0d, 0xc5, 0xcf, 0xf9,
88546 - 0x6d, 0x20, 0x3d, 0x7d, 0x72, 0x60, 0xd6, 0x73, 0x85, 0x64, 0xe0, 0xd3,
88547 - 0x7f, 0xd4, 0xf5, 0xc6, 0x01, 0x20, 0x3a, 0xc5, 0xbc, 0x71, 0x7c, 0x0d,
88548 - 0x27, 0x28, 0xbe, 0xb6, 0xcb, 0xf8, 0xb5, 0x49, 0xb5, 0x64, 0x68, 0x86,
88549 - 0x7b, 0xff, 0xaa, 0x97, 0xe8, 0xf0, 0x23, 0x49, 0x6b, 0xdf, 0x56, 0xfc,
88550 - 0xa1, 0xb9, 0x71, 0x61, 0x10, 0x5f, 0x8b, 0xd8, 0xb2, 0x7a, 0x9d, 0x74,
88551 - 0x38, 0x3d, 0xd6, 0x8c, 0xb9, 0x31, 0xee, 0xad, 0x9c, 0xea, 0x3a, 0x34,
88552 - 0x69, 0x62, 0x9d, 0x66, 0x78, 0x7e, 0xda, 0x79, 0x03, 0x1e, 0x38, 0x30,
88553 - 0x72, 0xba, 0x86, 0xf4, 0x7a, 0x59, 0xbb, 0x1b, 0x8f, 0x4e, 0xe1, 0xab,
88554 - 0xcd, 0xc0, 0x23, 0x41, 0x70, 0xff, 0x59, 0x09, 0x1d, 0x41, 0xa4, 0x67,
88555 - 0x3b, 0x22, 0x7e, 0x55, 0x28, 0xda, 0x2b, 0x14, 0xab, 0xea, 0x08, 0x3b,
88556 - 0xdc, 0x46, 0xb5, 0x7c, 0x0d, 0x79, 0xf0, 0x5d, 0x45, 0x27, 0xc9, 0x28,
88557 - 0x88, 0xf2, 0x58, 0x0d, 0x24, 0xf2, 0x93, 0x0b, 0x2a, 0xd6, 0x35, 0x90,
88558 - 0xac, 0x25, 0x21, 0x93, 0x9e, 0xdb, 0x71, 0x68, 0x74, 0x5e, 0x56, 0x5e,
88559 - 0xdc, 0x42, 0x32, 0x7c, 0x76, 0xd4, 0xdc, 0xa1, 0xc6, 0x02, 0x24, 0x6b,
88560 - 0x3f, 0xd1, 0x37, 0x2f, 0x27, 0x96, 0xdf, 0xbc, 0x9c, 0xee, 0xc6, 0xae,
88561 - 0x39, 0x96, 0xdb, 0xbf, 0x47, 0x5e, 0xb3, 0x96, 0xdd, 0xad, 0x9b, 0x8c,
88562 - 0xa2, 0xf9, 0xc0, 0x55, 0xd9, 0x31, 0x7d, 0x8f, 0x10, 0x1f, 0xdf, 0xf3,
88563 - 0xad, 0x8c, 0x0c, 0x5e, 0x14, 0x5e, 0xa2, 0xc7, 0x4f, 0xba, 0x39, 0xeb,
88564 - 0x62, 0x0c, 0x4e, 0x32, 0xb9, 0x2a, 0xe3, 0x20, 0xc9, 0x38, 0x38, 0xc5,
88565 - 0xb2, 0xfe, 0x11, 0xc9, 0x1a, 0x78, 0x83, 0x70, 0xd7, 0xcd, 0xb1, 0x28,
88566 - 0xea, 0x0f, 0x28, 0xc9, 0x66, 0x29, 0x9c, 0x68, 0x10, 0xa0, 0xea, 0x02,
88567 - 0xed, 0xf5, 0xf8, 0x98, 0xe5, 0xac, 0x91, 0x9c, 0xbf, 0x37, 0x42, 0xfc,
88568 - 0xac, 0xa1, 0xf9, 0xd6, 0x91, 0x9c, 0x93, 0xc4, 0xff, 0x6d, 0xd6, 0xbc,
88569 - 0x2d, 0x34, 0xef, 0x06, 0xaa, 0x21, 0x66, 0x3d, 0x17, 0x88, 0x9e, 0xe8,
88570 - 0xe7, 0xb4, 0x10, 0xca, 0x8e, 0x04, 0x2f, 0x52, 0xad, 0xbc, 0xd6, 0x1a,
88571 - 0xe7, 0xa7, 0x71, 0x4c, 0xfb, 0x5b, 0xb5, 0x0e, 0xf5, 0xcb, 0x7a, 0xc7,
88572 - 0x77, 0x83, 0x7b, 0x07, 0x06, 0xfa, 0xb1, 0x37, 0xbb, 0x81, 0x6a, 0x1e,
88573 - 0x99, 0x30, 0xa4, 0x81, 0xef, 0xc7, 0x95, 0x68, 0xa3, 0xe0, 0xf8, 0x67,
88574 - 0x90, 0x1f, 0x56, 0xa8, 0xde, 0x09, 0x87, 0xe6, 0x10, 0x94, 0x1d, 0x25,
88575 - 0x99, 0xf0, 0x5e, 0x8b, 0x2c, 0x95, 0xc8, 0x5f, 0x83, 0xfd, 0x84, 0x93,
88576 - 0x9d, 0x78, 0xb9, 0xe0, 0xc4, 0xab, 0xe9, 0x0d, 0x94, 0xe7, 0xdc, 0x84,
88577 - 0x87, 0x0d, 0xb7, 0x73, 0xc5, 0x81, 0x1a, 0x3b, 0x26, 0x2f, 0x45, 0xef,
88578 - 0xf8, 0xc3, 0xa8, 0xcb, 0x38, 0xfb, 0x28, 0x47, 0x6b, 0xb7, 0x91, 0x5c,
88579 - 0xd6, 0x95, 0xf8, 0x7e, 0x0b, 0x32, 0xe9, 0x14, 0xb2, 0xd9, 0x30, 0xd5,
88580 - 0x32, 0x4e, 0xe4, 0x9b, 0x5b, 0xac, 0xfe, 0x6c, 0x8e, 0xae, 0xe5, 0xca,
88581 - 0x5f, 0xec, 0x1b, 0x7f, 0xab, 0xda, 0x2f, 0x1e, 0xa4, 0x9c, 0xd2, 0x4f,
88582 - 0xd8, 0x73, 0x03, 0xc5, 0x77, 0x9b, 0xc6, 0xd9, 0x78, 0x1f, 0xf6, 0x14,
88583 - 0xf4, 0xab, 0xf1, 0x63, 0xba, 0x60, 0xf7, 0x05, 0xb7, 0x90, 0x3c, 0xce,
88584 - 0xa5, 0x4d, 0x3c, 0xaa, 0xb1, 0x3e, 0x29, 0x2e, 0xa5, 0xb9, 0x37, 0x68,
88585 - 0xe2, 0x19, 0x4d, 0x70, 0xbc, 0xa1, 0x3c, 0xba, 0x01, 0x4b, 0x0a, 0x26,
88586 - 0x4e, 0x6b, 0x2a, 0xc5, 0x2e, 0x18, 0x6e, 0xc2, 0x7e, 0x91, 0xd1, 0x7f,
88587 - 0x31, 0xf3, 0xce, 0x21, 0xb4, 0x75, 0x02, 0x9b, 0x47, 0x25, 0xcc, 0xcd,
88588 - 0x5c, 0xcd, 0xd1, 0x78, 0xf1, 0xf3, 0x3c, 0x9d, 0x98, 0x81, 0xb9, 0xc3,
88589 - 0xa9, 0x2b, 0xc3, 0xbc, 0xd7, 0x32, 0x12, 0x57, 0x12, 0xb5, 0x56, 0xce,
88590 - 0x56, 0xfb, 0x97, 0x48, 0x8a, 0x56, 0x12, 0x6d, 0xa9, 0x4f, 0x50, 0x59,
88591 - 0x2f, 0x43, 0x09, 0xfe, 0x0c, 0x91, 0xe8, 0x20, 0xef, 0x29, 0x94, 0xed,
88592 - 0xfc, 0xbd, 0xb4, 0x9a, 0xbf, 0xc3, 0x05, 0x8f, 0x50, 0xc7, 0x1c, 0xc8,
88593 - 0xcf, 0x98, 0x94, 0x67, 0x05, 0x66, 0x49, 0xc1, 0x2f, 0x64, 0x77, 0xe0,
88594 - 0xeb, 0x31, 0xd3, 0xbc, 0x2b, 0xae, 0x0e, 0x36, 0x4b, 0xf8, 0xd3, 0x06,
88595 - 0xc2, 0x14, 0x64, 0xf7, 0x84, 0x01, 0x10, 0xda, 0xda, 0x69, 0x98, 0x32,
88596 - 0xd5, 0x0c, 0x35, 0x3a, 0xf7, 0x1a, 0x7b, 0x45, 0x7b, 0x71, 0x83, 0xb8,
88597 - 0xa1, 0xd8, 0x2f, 0x42, 0x87, 0xee, 0x14, 0xd1, 0xa7, 0x6c, 0xdc, 0xd6,
88598 - 0x5a, 0xfc, 0xbc, 0x1f, 0xda, 0x43, 0x7c, 0xef, 0xd3, 0x4c, 0x3c, 0x4d,
88599 - 0xbc, 0xed, 0x2d, 0xdb, 0xb5, 0xc8, 0xee, 0xb4, 0xcd, 0xdb, 0xa3, 0x74,
88600 - 0xff, 0x62, 0x9a, 0xfd, 0xf1, 0x61, 0xab, 0xd7, 0xd9, 0x4c, 0xcf, 0xdc,
88601 - 0x9c, 0x0d, 0x87, 0x06, 0x85, 0x32, 0x34, 0x0b, 0xee, 0x77, 0xb6, 0x55,
88602 - 0x4e, 0x0a, 0xca, 0x3d, 0x12, 0xc7, 0x57, 0xf6, 0x79, 0x9b, 0xf6, 0x65,
88603 - 0x05, 0x58, 0x71, 0x91, 0xe9, 0xbf, 0x91, 0xea, 0xbe, 0x9f, 0xa5, 0xdb,
88604 - 0xfa, 0xdd, 0x24, 0xb6, 0xf3, 0xf1, 0x6e, 0x71, 0x89, 0xea, 0xbe, 0x57,
88605 - 0xd3, 0xc9, 0x85, 0x75, 0xe8, 0x11, 0x17, 0x0a, 0x7d, 0xe2, 0xc3, 0x7c,
88606 - 0x2f, 0x9c, 0x63, 0xf7, 0x8b, 0x77, 0xf3, 0x4c, 0x5b, 0xbf, 0x38, 0x33,
88607 - 0x7b, 0xde, 0x92, 0xfd, 0x2e, 0x8d, 0xfb, 0x9a, 0xf5, 0xb5, 0xf0, 0x99,
88608 - 0x04, 0x4f, 0x59, 0x8f, 0xdc, 0xe7, 0xb3, 0xfb, 0x43, 0xeb, 0xe2, 0x39,
88609 - 0xd3, 0xa9, 0x72, 0xaf, 0x37, 0x68, 0xf1, 0x38, 0x43, 0x78, 0x79, 0x36,
88610 - 0xbf, 0x41, 0x1c, 0x2e, 0xd8, 0xfc, 0x4d, 0x17, 0xd8, 0x6e, 0x65, 0xca,
88611 - 0x0d, 0x5f, 0xcc, 0xcf, 0x06, 0xfc, 0x9d, 0x41, 0xd4, 0x58, 0xfd, 0x24,
88612 - 0x13, 0xe3, 0x5a, 0x24, 0xf4, 0x0a, 0x82, 0x70, 0x96, 0xd8, 0xa6, 0x4d,
88613 - 0x3c, 0xa7, 0xb9, 0x20, 0x8d, 0xcb, 0x24, 0x17, 0xb2, 0x21, 0x9f, 0x0b,
88614 - 0x8e, 0x69, 0xae, 0x01, 0xe2, 0xb5, 0xdc, 0x67, 0x08, 0x39, 0xf8, 0xfb,
88615 - 0x17, 0x6d, 0xcd, 0x45, 0x79, 0x80, 0xfb, 0xe3, 0x6f, 0xd6, 0xd8, 0x36,
88616 - 0xc7, 0xf9, 0x68, 0xbe, 0xa7, 0x4d, 0x39, 0xb6, 0x93, 0x7b, 0xd9, 0x6e,
88617 - 0xcc, 0xe5, 0x6a, 0xb8, 0xc5, 0xe0, 0xae, 0xe9, 0x34, 0x71, 0x4e, 0x73,
88618 - 0x52, 0x5d, 0xf2, 0x10, 0xe5, 0x26, 0x07, 0x64, 0xf5, 0x6e, 0x94, 0x26,
88619 - 0x9d, 0x0e, 0xde, 0x73, 0xfa, 0x59, 0x8c, 0x7b, 0x00, 0xc0, 0x7e, 0xe2,
88620 - 0xe1, 0x99, 0x5c, 0x88, 0xea, 0x7f, 0xb9, 0x5a, 0x43, 0xfc, 0x01, 0x8e,
88621 - 0xe7, 0x24, 0xd1, 0xac, 0x43, 0x4a, 0xac, 0x34, 0xf1, 0xc9, 0xf2, 0x48,
88622 - 0xf4, 0x32, 0xc5, 0x2f, 0x3f, 0xe5, 0xaa, 0xdd, 0x85, 0x46, 0xfc, 0x2c,
88623 - 0xd7, 0x88, 0x57, 0x73, 0xa4, 0xc3, 0xd8, 0x48, 0xbf, 0x87, 0x62, 0xe4,
88624 - 0xd2, 0x98, 0x0b, 0x5b, 0x23, 0x86, 0xdf, 0x83, 0x28, 0xce, 0x25, 0xae,
88625 - 0x47, 0x2a, 0x10, 0xee, 0x19, 0x41, 0x13, 0xde, 0xcc, 0x81, 0x30, 0x04,
88626 - 0xdc, 0x4b, 0x68, 0x8e, 0xf7, 0x62, 0xc6, 0x90, 0x0b, 0x0a, 0xd5, 0x1f,
88627 - 0x88, 0xd7, 0xc3, 0xac, 0x39, 0x19, 0xa7, 0x1c, 0x5d, 0x6c, 0x44, 0x6f,
88628 - 0xae, 0x09, 0xfd, 0x94, 0xab, 0x56, 0xaf, 0x8c, 0xe3, 0xdd, 0xac, 0x57,
88629 - 0xdc, 0x94, 0x1d, 0xe9, 0xf7, 0xd3, 0x9c, 0xae, 0xe5, 0xca, 0xd0, 0xb3,
88630 - 0x04, 0xd8, 0x64, 0x84, 0xd9, 0xbc, 0xb7, 0xfb, 0x28, 0xde, 0x1e, 0x16,
88631 - 0x9f, 0xe1, 0x49, 0xb2, 0xc1, 0x2d, 0x9a, 0x52, 0xb9, 0x20, 0x45, 0x4e,
88632 - 0xaf, 0x87, 0x32, 0x7c, 0x9b, 0x30, 0xa2, 0x0d, 0x14, 0x47, 0x9a, 0xed,
88633 - 0x18, 0x61, 0x44, 0x84, 0x4c, 0x98, 0xdc, 0x09, 0xb7, 0x6a, 0xa0, 0xa7,
88634 - 0x93, 0x65, 0xea, 0x86, 0xfb, 0x29, 0xb2, 0x1b, 0xc7, 0x17, 0xfb, 0xf3,
88635 - 0x8d, 0x78, 0x83, 0xf2, 0xe4, 0xeb, 0x39, 0xc8, 0xb5, 0x14, 0xfb, 0x3f,
88636 - 0xa0, 0xd8, 0x7f, 0x2a, 0x36, 0x12, 0xe2, 0x98, 0x5f, 0x88, 0xe1, 0x5b,
88637 - 0x04, 0x83, 0x5b, 0xbc, 0xb4, 0xe6, 0x26, 0xc1, 0xeb, 0x20, 0xb9, 0x58,
88638 - 0xe7, 0xbe, 0x9a, 0xc5, 0x0f, 0xc5, 0x61, 0xe6, 0xe9, 0xff, 0x27, 0xed,
88639 - 0xdb, 0x6b, 0xe1, 0x69, 0x22, 0x5d, 0xce, 0xf7, 0x24, 0xaf, 0xed, 0x47,
88640 - 0x72, 0x1d, 0x63, 0xe3, 0xc2, 0x1a, 0xbd, 0x4e, 0xbc, 0x94, 0x63, 0x9b,
88641 - 0x33, 0xf1, 0xbc, 0xa6, 0x51, 0xcd, 0xc2, 0xb5, 0xf6, 0x10, 0xd5, 0x2d,
88642 - 0xdc, 0x27, 0x32, 0xdc, 0x27, 0x89, 0xc2, 0xbd, 0x39, 0xfc, 0x9e, 0x0c,
88643 - 0x69, 0x59, 0x2d, 0xa6, 0x90, 0x77, 0x3a, 0x09, 0x6b, 0x70, 0x8c, 0x65,
88644 - 0x3f, 0x7a, 0xab, 0x4b, 0xcd, 0xc3, 0xf0, 0xea, 0x3d, 0x30, 0x2c, 0xdf,
88645 - 0xad, 0x13, 0x0f, 0x90, 0x8d, 0xbc, 0x1c, 0xab, 0x45, 0x9e, 0xea, 0x1e,
88646 - 0xc2, 0xdf, 0xee, 0x3f, 0xa3, 0xe7, 0x13, 0x13, 0xd8, 0x13, 0x84, 0xf4,
88647 - 0x5d, 0x3f, 0xfe, 0x02, 0x67, 0x5d, 0x8c, 0xcb, 0xe1, 0xee, 0x8b, 0x1b,
88648 - 0x9e, 0xf5, 0xf1, 0x3a, 0x71, 0x7b, 0xae, 0x1d, 0x17, 0x27, 0x1b, 0xc9,
88649 - 0xbe, 0x9b, 0xb0, 0x78, 0x3c, 0x88, 0xf7, 0x88, 0x96, 0x61, 0x8d, 0xb1,
88650 - 0xba, 0x31, 0xdc, 0x0c, 0x65, 0x88, 0xea, 0xa1, 0xbe, 0x9f, 0x0b, 0xf6,
88651 - 0x01, 0xa5, 0xe7, 0x0e, 0xe1, 0x81, 0x1a, 0x49, 0x92, 0xec, 0x4d, 0x73,
88652 - 0x4c, 0x6b, 0xd3, 0xbc, 0xe0, 0xfe, 0xcf, 0xdd, 0xd8, 0x3f, 0xc7, 0xb4,
88653 - 0x9c, 0xea, 0xba, 0x61, 0x96, 0x3f, 0x4f, 0x77, 0x5d, 0x6f, 0x7d, 0xbe,
88654 - 0x56, 0xfd, 0xac, 0x74, 0x85, 0xac, 0xcf, 0x1f, 0xd1, 0x27, 0xf7, 0x99,
88655 - 0xc3, 0x46, 0x8d, 0xf8, 0xbe, 0x8b, 0xfb, 0xcd, 0x49, 0xf0, 0xff, 0x71,
88656 - 0x97, 0xdd, 0xaf, 0xbb, 0x1b, 0x86, 0xd5, 0x13, 0xf9, 0xb5, 0xd5, 0x8b,
88657 - 0x0e, 0x91, 0x1b, 0xc8, 0xc4, 0x9f, 0x4c, 0x58, 0x2b, 0x10, 0xa3, 0xc2,
88658 - 0xbc, 0x49, 0x36, 0x16, 0xeb, 0xfd, 0x54, 0x1b, 0xc8, 0xc4, 0xaf, 0x81,
88659 - 0x3d, 0x9d, 0x02, 0xfb, 0x55, 0x1d, 0x3f, 0x2d, 0x70, 0x0c, 0x77, 0xe2,
88660 - 0x99, 0xb4, 0x12, 0x4a, 0x89, 0x30, 0xd5, 0xf9, 0x0e, 0x84, 0x9a, 0xfb,
88661 - 0xb1, 0x9f, 0xf2, 0xc9, 0x6c, 0x9a, 0xf3, 0x07, 0x7d, 0x52, 0x3c, 0x6f,
88662 - 0xa0, 0xf8, 0xf3, 0xf1, 0xa8, 0x1d, 0xef, 0x8b, 0x71, 0x65, 0xef, 0x1f,
88663 - 0x90, 0x4e, 0x9f, 0x2b, 0xf2, 0x9c, 0x06, 0xae, 0xac, 0x64, 0x1f, 0x56,
88664 - 0xa2, 0x29, 0xc7, 0x7d, 0x08, 0xcd, 0x70, 0x6c, 0xa1, 0xe5, 0x68, 0xad,
88665 - 0x83, 0xd9, 0x1a, 0xf4, 0xc5, 0x7b, 0x45, 0x7f, 0xa9, 0x8f, 0xf7, 0x14,
88666 - 0xfc, 0x0b, 0xf4, 0x3b, 0xc5, 0x9a, 0x69, 0xee, 0x09, 0x6e, 0x10, 0x7d,
88667 - 0x25, 0xee, 0x0b, 0x0e, 0x8b, 0x6f, 0x94, 0xd8, 0xe7, 0xe7, 0xfb, 0x83,
88668 - 0xf3, 0xfa, 0xe7, 0xbe, 0xa0, 0xe1, 0x7e, 0x89, 0x64, 0xbf, 0x3d, 0xc7,
88669 - 0x71, 0x58, 0x7a, 0xc0, 0x87, 0xe5, 0xc8, 0xbb, 0xe0, 0x3e, 0x11, 0xff,
88670 - 0x1d, 0xdc, 0x45, 0xb8, 0x60, 0xb1, 0x6a, 0xeb, 0x6f, 0x75, 0xde, 0x81,
88671 - 0xc4, 0x72, 0x12, 0xfa, 0x02, 0xd6, 0xe9, 0x00, 0xc5, 0xb3, 0x8c, 0x39,
88672 - 0x18, 0x60, 0x5d, 0xb2, 0xbd, 0x59, 0x7d, 0x27, 0xca, 0x2b, 0x06, 0x22,
88673 - 0x9d, 0x6e, 0xcc, 0xe6, 0x16, 0x51, 0x4d, 0x60, 0x62, 0xaf, 0x56, 0x8f,
88674 - 0x5a, 0x2b, 0x06, 0xb8, 0x09, 0x47, 0x42, 0xf6, 0xd2, 0x3c, 0xe9, 0x31,
88675 - 0x19, 0x1e, 0xba, 0x77, 0x92, 0x72, 0xd3, 0xfe, 0x4e, 0x7b, 0xee, 0xb6,
88676 - 0xfc, 0x4d, 0xd8, 0x47, 0x1e, 0x5f, 0xaf, 0x46, 0x31, 0xea, 0xf7, 0x52,
88677 - 0xac, 0xf9, 0x56, 0x75, 0xce, 0xcf, 0xc8, 0x36, 0x79, 0xbd, 0x4d, 0xb5,
88678 - 0xb6, 0x1e, 0x96, 0xc9, 0x76, 0xed, 0x25, 0x1b, 0x75, 0xb4, 0xd6, 0xd6,
88679 - 0xce, 0x0d, 0xe8, 0x19, 0xf5, 0x8a, 0x57, 0xd3, 0xf7, 0x98, 0xa1, 0x46,
88680 - 0x1a, 0x47, 0x36, 0x5b, 0x53, 0xa5, 0xb7, 0x35, 0xff, 0xcf, 0xb5, 0x5c,
88681 - 0xa7, 0x7b, 0x29, 0x8f, 0x3c, 0x98, 0x73, 0x20, 0x50, 0xbd, 0x1e, 0xcf,
88682 - 0x87, 0xa0, 0x75, 0xd4, 0x01, 0x4d, 0x82, 0xae, 0xf1, 0xdc, 0xbc, 0x86,
88683 - 0x8c, 0x46, 0xf2, 0x93, 0x6f, 0xc7, 0x13, 0xf8, 0x20, 0xeb, 0xc4, 0x7a,
88684 - 0xca, 0xef, 0x6b, 0xd3, 0x3a, 0xce, 0x95, 0x6b, 0x79, 0x3d, 0xb2, 0xc3,
88685 - 0xf9, 0x71, 0x4e, 0x1a, 0xe7, 0xc6, 0x74, 0xfe, 0x8b, 0xf4, 0x05, 0x88,
88686 - 0xe6, 0x22, 0x8d, 0xe5, 0x7b, 0xe7, 0xad, 0xbe, 0xc0, 0xf1, 0x6b, 0xea,
88687 - 0x29, 0xc7, 0x38, 0xf7, 0x8a, 0xec, 0x5c, 0xd0, 0xad, 0xb1, 0x2e, 0x7d,
88688 - 0xb8, 0x3c, 0x61, 0xe0, 0xdc, 0xca, 0x06, 0x5c, 0x99, 0x68, 0xc5, 0x03,
88689 - 0x39, 0x0f, 0x2e, 0x4c, 0x98, 0xb8, 0x69, 0x39, 0xee, 0x09, 0x12, 0x06,
88690 - 0x6b, 0x20, 0xbf, 0xff, 0x29, 0xd5, 0x3c, 0x14, 0x4f, 0x89, 0xd2, 0x48,
88691 - 0x62, 0x1d, 0xd9, 0x75, 0x34, 0x86, 0xd4, 0x2d, 0xf1, 0x48, 0xe8, 0x3c,
88692 - 0xbe, 0x67, 0x52, 0x2c, 0xf6, 0x4b, 0x7a, 0xaf, 0x70, 0x5a, 0xfb, 0x84,
88693 - 0x1b, 0xac, 0x7d, 0x45, 0xc7, 0xf4, 0xb0, 0x90, 0x4a, 0xd7, 0xfa, 0xf5,
88694 - 0x97, 0xe5, 0x21, 0xce, 0x3d, 0x9c, 0x23, 0xc7, 0x4d, 0x97, 0xba, 0xc1,
88695 - 0xea, 0xd3, 0xec, 0xce, 0x5f, 0xcd, 0x4d, 0x57, 0xf3, 0xd1, 0xce, 0x6a,
88696 - 0x1e, 0x1a, 0x29, 0xbc, 0xf3, 0x05, 0xfc, 0x14, 0xaa, 0xee, 0x57, 0x70,
88697 - 0xfe, 0x71, 0x8b, 0xb3, 0x64, 0x0e, 0x7b, 0xc8, 0x07, 0x8f, 0x6a, 0x27,
88698 - 0x82, 0x94, 0x21, 0xe0, 0xec, 0x10, 0x78, 0x90, 0xcf, 0x8b, 0x04, 0x4c,
88699 - 0xdc, 0xa9, 0xd9, 0xf6, 0xb0, 0xbc, 0xd3, 0x85, 0x41, 0xca, 0x49, 0xae,
88700 - 0x98, 0x97, 0x7c, 0xdd, 0x8f, 0xd7, 0x34, 0xb6, 0xe1, 0x5b, 0xaa, 0x39,
88701 - 0x89, 0xf7, 0xbf, 0xed, 0xbd, 0xea, 0xdf, 0xee, 0x5b, 0xcf, 0xdb, 0xa6,
88702 - 0x86, 0xe4, 0x42, 0x78, 0xde, 0x8b, 0xab, 0x54, 0x37, 0xc8, 0x54, 0x33,
88703 - 0xac, 0x47, 0x62, 0x81, 0x92, 0x64, 0xfd, 0xfb, 0x68, 0xee, 0x5f, 0x76,
88704 - 0x0e, 0xe2, 0xfe, 0x71, 0x07, 0xea, 0x54, 0x8e, 0xb3, 0x06, 0xf6, 0x37,
88705 - 0x72, 0x9c, 0xea, 0xc5, 0x8e, 0x71, 0xb7, 0x38, 0x99, 0x73, 0xe2, 0xc9,
88706 - 0xbe, 0x47, 0xb0, 0xa0, 0x63, 0x4b, 0xb5, 0xd7, 0xc9, 0xdf, 0xbf, 0x89,
88707 - 0xd4, 0x22, 0x5e, 0x9f, 0x7b, 0x68, 0x02, 0xde, 0x0e, 0xe6, 0x03, 0x9e,
88708 - 0x8b, 0x34, 0xff, 0xe6, 0x51, 0xa7, 0x38, 0x9f, 0xfe, 0x1b, 0xf3, 0x48,
88709 - 0x80, 0x71, 0x01, 0xdf, 0xab, 0x87, 0xd1, 0xc8, 0x63, 0x59, 0x87, 0x5e,
88710 - 0xaa, 0x49, 0x07, 0x31, 0x4a, 0x74, 0xbd, 0x6e, 0xcd, 0x75, 0xb6, 0x4a,
88711 - 0xbf, 0x57, 0x34, 0x64, 0x64, 0x23, 0x48, 0xb4, 0xf8, 0x57, 0xf6, 0xa1,
88712 - 0xa1, 0x74, 0x6d, 0xbe, 0x25, 0xa3, 0xf7, 0x30, 0x7f, 0x9c, 0x13, 0x06,
88713 - 0xf0, 0x41, 0x5a, 0xe0, 0x7d, 0xcb, 0x06, 0x07, 0xd0, 0x5a, 0xa0, 0xfa,
88714 - 0xdf, 0x8a, 0x21, 0x3c, 0x2e, 0x6e, 0xdb, 0xb6, 0x63, 0x10, 0xdb, 0x89,
88715 - 0x97, 0x7a, 0xe2, 0xe5, 0xe3, 0xd8, 0x12, 0x5a, 0x87, 0xaf, 0x1d, 0x93,
88716 - 0xab, 0xfd, 0x87, 0xea, 0x5c, 0xab, 0xc0, 0xbd, 0x29, 0xa7, 0x1a, 0xc1,
88717 - 0xb6, 0xf1, 0x48, 0xbf, 0xd7, 0xc1, 0x76, 0x18, 0xc1, 0x7d, 0xd3, 0x49,
88718 - 0xba, 0xcf, 0x73, 0x05, 0xb1, 0x29, 0xe3, 0x14, 0xef, 0x52, 0x9d, 0x74,
88719 - 0x3c, 0xed, 0x58, 0x24, 0xe1, 0x07, 0xe6, 0x93, 0x81, 0x1d, 0xb8, 0x45,
88720 - 0xeb, 0xc5, 0xbd, 0x64, 0x83, 0xdd, 0xad, 0x3b, 0x30, 0x41, 0x36, 0xb0,
88721 - 0xb9, 0x89, 0x6a, 0xb7, 0x58, 0xd9, 0x1c, 0x08, 0xb0, 0x1c, 0x05, 0x7a,
88722 - 0xe8, 0x7a, 0x23, 0xd5, 0x73, 0x8e, 0x18, 0x59, 0x1b, 0xf9, 0x85, 0xac,
88723 - 0x2a, 0xb9, 0x24, 0xea, 0xad, 0x35, 0x1b, 0x29, 0x4f, 0xbb, 0x18, 0x1f,
88724 - 0xf8, 0x18, 0x27, 0x7c, 0x91, 0x1e, 0xc3, 0xac, 0x55, 0xd5, 0xe8, 0x7a,
88725 - 0x47, 0x6b, 0x6e, 0x8e, 0x6c, 0x76, 0x4d, 0xc7, 0xb5, 0xcf, 0xcd, 0xcb,
88726 - 0x48, 0x43, 0x4d, 0xc7, 0x8c, 0x59, 0xf1, 0x8f, 0xc0, 0xdf, 0x71, 0xad,
88727 - 0xee, 0xe7, 0xe7, 0x60, 0x9a, 0xed, 0xb8, 0x16, 0x72, 0x44, 0xfc, 0xf7,
88728 - 0xe0, 0xaf, 0x68, 0x8d, 0x20, 0x36, 0x96, 0x7a, 0x31, 0x30, 0x2e, 0x7d,
88729 - 0x8e, 0x4f, 0x7c, 0x6c, 0xcb, 0x9f, 0xf3, 0xbf, 0x75, 0x3c, 0xd2, 0xe3,
88730 - 0xa9, 0xf2, 0x7f, 0xef, 0xf4, 0xe7, 0x73, 0x0d, 0x67, 0x38, 0xaf, 0xf2,
88731 - 0x7c, 0xbc, 0xef, 0x37, 0x2f, 0xdf, 0x20, 0xb6, 0x5b, 0xf3, 0xed, 0x75,
88732 - 0xb3, 0x0f, 0xbb, 0xc8, 0xd7, 0xd7, 0x75, 0x18, 0x78, 0x2d, 0xf1, 0x80,
88733 - 0xb9, 0xd5, 0x92, 0xc1, 0x9f, 0x58, 0xcf, 0xf7, 0xb4, 0x56, 0x2c, 0x7b,
88734 - 0xb7, 0xfd, 0x96, 0xf7, 0x04, 0x78, 0x8f, 0x60, 0x7e, 0x5f, 0x20, 0x6a,
88735 - 0xed, 0xd7, 0xd9, 0x7b, 0x03, 0xdf, 0xa2, 0x38, 0xcb, 0xfb, 0x06, 0xb2,
88736 - 0x70, 0x8e, 0xd7, 0x09, 0xd7, 0x38, 0xd3, 0xf6, 0x81, 0x6c, 0xfb, 0xd8,
88737 - 0x5f, 0x21, 0x19, 0xe0, 0xfe, 0xa4, 0x6d, 0xff, 0xd1, 0xce, 0xfb, 0x80,
88738 - 0xa7, 0x0c, 0x77, 0xed, 0x0a, 0x50, 0x8d, 0xdf, 0x67, 0xd9, 0xc3, 0x75,
88739 - 0xfa, 0xdb, 0xab, 0xfe, 0xb1, 0x95, 0xeb, 0x7c, 0xee, 0x09, 0xbe, 0xbb,
88740 - 0x6a, 0xb2, 0x55, 0x22, 0x3c, 0xc5, 0x6b, 0xf2, 0xde, 0x02, 0xe7, 0x55,
88741 - 0x2b, 0xee, 0x7a, 0x1a, 0x57, 0x18, 0xee, 0x05, 0x2b, 0x9c, 0x62, 0x51,
88742 - 0xa6, 0x9f, 0x6c, 0x4f, 0x45, 0x22, 0x63, 0x78, 0x9a, 0x57, 0x84, 0xf0,
88743 - 0x50, 0x66, 0x3e, 0x26, 0xb7, 0xa3, 0x7d, 0x0a, 0xf8, 0xdf, 0x99, 0x20,
88744 - 0xda, 0x26, 0xc2, 0x43, 0xb7, 0x3b, 0xc2, 0xc3, 0xef, 0x38, 0xf8, 0x5e,
88745 - 0xa1, 0xeb, 0x26, 0x0b, 0x7f, 0x1f, 0xed, 0x5a, 0x66, 0x7d, 0xbe, 0xdd,
88746 - 0x75, 0x63, 0xe1, 0x6e, 0xa4, 0xe7, 0xdc, 0x97, 0xf3, 0x0e, 0x13, 0x0f,
88747 - 0xc5, 0x1c, 0xf8, 0x9a, 0xf6, 0xd7, 0xe4, 0x5b, 0x82, 0x6c, 0xe3, 0x18,
88748 - 0xe7, 0x60, 0x4b, 0xa7, 0xae, 0x15, 0x2a, 0xda, 0x32, 0x8d, 0x84, 0xd7,
88749 - 0x9a, 0xa8, 0xe6, 0x6f, 0xc4, 0x0f, 0x73, 0x8c, 0xd7, 0x4c, 0x8a, 0xfb,
88750 - 0x26, 0x5e, 0xef, 0x30, 0x86, 0x82, 0x50, 0x8c, 0x37, 0x85, 0x92, 0xba,
88751 - 0xdd, 0xa1, 0x1c, 0x69, 0x72, 0xf8, 0xb1, 0x2f, 0x62, 0xe7, 0xd1, 0x4e,
88752 - 0x2b, 0x6f, 0xbe, 0xd3, 0x65, 0xf7, 0xec, 0x4e, 0x56, 0xf3, 0xeb, 0xa9,
88753 - 0x2e, 0x6d, 0x56, 0x39, 0x9a, 0x22, 0xff, 0x59, 0x48, 0xf1, 0x73, 0x3c,
88754 - 0x9b, 0xb2, 0xce, 0x82, 0xfc, 0x32, 0x53, 0x43, 0xb6, 0x11, 0xd6, 0xc6,
88755 - 0x11, 0x8e, 0x3e, 0x64, 0xd1, 0xfa, 0xb3, 0xae, 0x58, 0xa1, 0x8c, 0x8a,
88756 - 0x53, 0x39, 0x08, 0x14, 0x09, 0x37, 0xb4, 0xf9, 0x5f, 0x46, 0x99, 0xfb,
88757 - 0xa1, 0x56, 0xa0, 0x67, 0x1e, 0x5a, 0x0b, 0x40, 0x2e, 0xe3, 0xbe, 0x0c,
88758 - 0xab, 0x17, 0xeb, 0xc0, 0x5a, 0x6d, 0x3b, 0xe1, 0x42, 0xde, 0xff, 0x15,
88759 - 0x54, 0x63, 0x37, 0xa2, 0xb2, 0xc1, 0x89, 0xf1, 0x0c, 0xe7, 0xe1, 0x63,
88760 - 0x5d, 0xf2, 0x28, 0x2a, 0x6e, 0x7b, 0x4f, 0x33, 0xe1, 0xa6, 0x0c, 0x3d,
88761 - 0x57, 0x22, 0x4c, 0x4a, 0xb1, 0x63, 0x6b, 0xec, 0x37, 0x66, 0xb2, 0xd1,
88762 - 0xde, 0x53, 0x19, 0x9d, 0x14, 0x58, 0xa0, 0x26, 0x31, 0x3a, 0xe7, 0xf4,
88763 - 0xa5, 0xd3, 0x51, 0xa4, 0xcb, 0xfc, 0xbc, 0xfb, 0x72, 0xd2, 0x9a, 0x3f,
88764 - 0xb2, 0x77, 0x89, 0xc3, 0x81, 0x65, 0x1d, 0x87, 0x50, 0x59, 0x68, 0xd3,
88765 - 0x10, 0x24, 0x4c, 0xc0, 0x35, 0x6c, 0x13, 0xf1, 0x7a, 0xe7, 0xe3, 0x5c,
88766 - 0x47, 0xfc, 0xa4, 0xeb, 0xe6, 0x29, 0xf6, 0xeb, 0x63, 0x5d, 0x1f, 0xa4,
88767 - 0x95, 0x64, 0x93, 0x04, 0xb9, 0x8e, 0xf8, 0xbf, 0x6f, 0x94, 0xfb, 0x08,
88768 - 0xbf, 0xe0, 0x3e, 0x02, 0xe5, 0x65, 0x65, 0xb8, 0x59, 0x78, 0xc5, 0xba,
88769 - 0x0c, 0xd5, 0x15, 0x44, 0xf3, 0xa5, 0x88, 0xd2, 0x53, 0x22, 0x8c, 0xb2,
88770 - 0x45, 0x50, 0x5d, 0x57, 0xb6, 0xe5, 0x65, 0x9f, 0xcd, 0xab, 0x5c, 0xc5,
88771 - 0x21, 0x51, 0x0b, 0x77, 0xf0, 0x3e, 0x34, 0xe7, 0x71, 0x6b, 0x4f, 0x9f,
88772 - 0xae, 0xff, 0xbc, 0x6b, 0x09, 0xd5, 0x16, 0x23, 0x4c, 0x1f, 0x78, 0xaf,
88773 - 0x8f, 0x6a, 0xd0, 0xec, 0xf1, 0x2a, 0x2e, 0xf1, 0x56, 0xe5, 0xc2, 0xdf,
88774 - 0xf9, 0x4c, 0xe2, 0x6b, 0x5d, 0x9b, 0x26, 0xf9, 0x8c, 0xe2, 0x4f, 0xba,
88775 - 0xd6, 0x4c, 0x2a, 0xa1, 0x8d, 0xb4, 0xee, 0x6e, 0xde, 0x5f, 0xa7, 0x39,
88776 - 0x67, 0x35, 0xa6, 0xbb, 0xd0, 0x75, 0x73, 0x96, 0x7b, 0xcb, 0xc7, 0xba,
88777 - 0xcc, 0x6c, 0x98, 0x31, 0xa8, 0x65, 0x2b, 0x89, 0x02, 0x55, 0xf3, 0xd7,
88778 - 0xd9, 0xbc, 0xba, 0x48, 0x1f, 0x87, 0xd2, 0x84, 0x76, 0xe2, 0xb6, 0x6e,
88779 - 0x56, 0x17, 0xd6, 0x20, 0xd5, 0xd4, 0x4d, 0x35, 0xa8, 0xdf, 0xb7, 0x36,
88780 - 0xd3, 0x8d, 0x09, 0xd2, 0xe1, 0xa6, 0x52, 0xd0, 0xd7, 0x9d, 0x51, 0x31,
88781 - 0x50, 0xe2, 0x7a, 0xb3, 0xd2, 0xb5, 0x6b, 0x72, 0xaa, 0x5a, 0xff, 0xf6,
88782 - 0x53, 0xcd, 0x4a, 0x76, 0x91, 0xb1, 0x6d, 0xae, 0xb5, 0x40, 0x34, 0x0b,
88783 - 0x7b, 0x5e, 0x37, 0xad, 0x73, 0xfd, 0xe8, 0x77, 0xcd, 0xd0, 0x42, 0xb6,
88784 - 0x85, 0xbb, 0xf1, 0xf8, 0x94, 0xcf, 0x08, 0xe8, 0x7e, 0x74, 0x76, 0x9c,
88785 - 0xa2, 0x67, 0xdb, 0xf1, 0xf8, 0xe1, 0x5b, 0x90, 0xff, 0x23, 0x27, 0x2e,
88786 - 0x66, 0x92, 0x58, 0xda, 0xf1, 0x55, 0x9c, 0xd9, 0x20, 0xe3, 0xef, 0x32,
88787 - 0x5e, 0x5c, 0x22, 0xfe, 0x0c, 0x6b, 0x8e, 0x7f, 0xcf, 0xfe, 0x90, 0x5b,
88788 - 0xb8, 0xc7, 0x35, 0xc6, 0x9e, 0xbf, 0xe7, 0x06, 0xf7, 0xde, 0x0c, 0xd4,
88789 - 0x10, 0x0e, 0x0a, 0x13, 0xcd, 0x6a, 0x86, 0xcf, 0x38, 0x05, 0x7c, 0x9c,
88790 - 0x2b, 0xa7, 0x89, 0x27, 0x47, 0xa9, 0xc5, 0xe7, 0x24, 0x7e, 0x9c, 0xa5,
88791 - 0x73, 0x14, 0x03, 0xd8, 0x07, 0xdc, 0x97, 0x43, 0x96, 0x1d, 0x5c, 0xbb,
88792 - 0xf6, 0x7e, 0x0f, 0xef, 0xf1, 0x1f, 0xcf, 0x72, 0x6c, 0x14, 0x54, 0xbb,
88793 - 0x84, 0x90, 0x9c, 0x5d, 0x82, 0x9e, 0xd9, 0xed, 0x74, 0x5d, 0x45, 0x5f,
88794 - 0xd5, 0xd7, 0x42, 0x05, 0x8f, 0x87, 0xf1, 0x49, 0x2e, 0x63, 0xff, 0x8e,
88795 - 0x5c, 0xfd, 0xed, 0x16, 0x8d, 0xe3, 0x84, 0x1d, 0x11, 0xb7, 0xf2, 0xb0,
88796 - 0xda, 0xf1, 0xef, 0xe2, 0xe5, 0x72, 0xca, 0xa2, 0x61, 0x37, 0xcd, 0xc5,
88797 - 0xb2, 0x79, 0xce, 0x4c, 0xdd, 0xc9, 0xf2, 0x0b, 0xf8, 0x7e, 0x48, 0xfa,
88798 - 0x98, 0xa4, 0x67, 0x1e, 0x27, 0x1e, 0xca, 0xc4, 0x5b, 0xb6, 0xf4, 0x5d,
88799 - 0x1a, 0xc3, 0xf7, 0x40, 0xfa, 0x32, 0x14, 0x67, 0xf5, 0x6c, 0xe6, 0x08,
88800 - 0xe5, 0xcb, 0x5a, 0x8a, 0x45, 0x67, 0xe3, 0xf7, 0x62, 0x6d, 0x4e, 0x49,
88801 - 0x1a, 0x14, 0x2e, 0x53, 0x7e, 0x08, 0xa7, 0xce, 0x36, 0xfc, 0x36, 0xd9,
88802 - 0x70, 0x0b, 0x61, 0x80, 0x70, 0xe8, 0x1c, 0x8d, 0x37, 0x9c, 0x32, 0x1e,
88803 - 0x9b, 0x90, 0x70, 0x8e, 0xf7, 0x80, 0x85, 0xfd, 0xbc, 0x01, 0x1e, 0x3b,
88804 - 0xff, 0xbd, 0x8e, 0xea, 0xba, 0x70, 0x82, 0xb2, 0xaa, 0x51, 0x4f, 0xb8,
88805 - 0xbd, 0xd0, 0xf9, 0x08, 0xf6, 0x53, 0x7d, 0xbf, 0x35, 0x46, 0x32, 0x69,
88806 - 0x8c, 0x53, 0xbd, 0xd1, 0x36, 0x74, 0x01, 0x7f, 0x67, 0x56, 0x78, 0x1f,
88807 - 0x5d, 0x84, 0x13, 0x17, 0xf0, 0x99, 0x29, 0xa9, 0xea, 0xe9, 0x19, 0xa8,
88808 - 0x95, 0x73, 0x68, 0x1b, 0xbe, 0x82, 0x0f, 0x4d, 0xde, 0x63, 0x97, 0x25,
88809 - 0x89, 0x30, 0x60, 0xd8, 0xef, 0x44, 0x00, 0x95, 0x80, 0x84, 0x5b, 0x35,
88810 - 0xee, 0x49, 0x2b, 0xc3, 0x4f, 0x13, 0x96, 0x7f, 0x5f, 0xb4, 0x0d, 0x7e,
88811 - 0x8c, 0x33, 0x66, 0xbe, 0x91, 0xd7, 0x15, 0x48, 0xdc, 0xd8, 0x76, 0xba,
88812 - 0x06, 0x4a, 0x8f, 0x4b, 0xa8, 0x89, 0x66, 0xe9, 0xaf, 0xcd, 0x33, 0x81,
88813 - 0xcf, 0x4c, 0x35, 0xf2, 0x19, 0xe1, 0x20, 0x35, 0x38, 0x4d, 0x3e, 0x31,
88814 - 0x88, 0x79, 0xda, 0xfe, 0x81, 0xf8, 0xd7, 0x88, 0x06, 0xc6, 0x7d, 0x86,
88815 - 0x7b, 0x0f, 0xd1, 0xf6, 0x53, 0xc2, 0x01, 0x5b, 0x63, 0x17, 0xcc, 0xe4,
88816 - 0x42, 0xeb, 0xfc, 0x5e, 0x9d, 0xdd, 0xfb, 0x66, 0x5f, 0xb9, 0x1b, 0x9b,
88817 - 0xd2, 0x4e, 0x92, 0xd3, 0x3c, 0x5e, 0x73, 0x51, 0x0c, 0x66, 0x8c, 0x53,
88818 - 0xb9, 0x9e, 0x4a, 0x33, 0xc7, 0xac, 0x0a, 0xec, 0xa2, 0xb8, 0xb0, 0xd3,
88819 - 0xca, 0x05, 0xf0, 0x2c, 0x5e, 0xd1, 0x81, 0x2b, 0x53, 0xff, 0xc3, 0x43,
88820 - 0xfa, 0x5b, 0xad, 0x2e, 0x87, 0x08, 0x66, 0x0c, 0xd1, 0xa0, 0x4b, 0xf8,
88821 - 0xb8, 0x53, 0xe9, 0x71, 0x48, 0xc3, 0xb8, 0x31, 0x66, 0x98, 0x5e, 0x55,
88822 - 0xed, 0x6f, 0x17, 0x91, 0xbe, 0x92, 0x88, 0xa2, 0xae, 0xe4, 0x95, 0xeb,
88823 - 0x4a, 0xed, 0xb2, 0xa7, 0x64, 0xb8, 0xfd, 0x2b, 0xee, 0xa5, 0xba, 0x65,
88824 - 0x07, 0xd5, 0xb6, 0x5e, 0xaa, 0xaf, 0x15, 0xb2, 0xc7, 0x1a, 0x92, 0x7f,
88825 - 0x88, 0xe2, 0x80, 0x0e, 0x67, 0x66, 0x1b, 0x5c, 0x99, 0xb0, 0x7f, 0x37,
88826 - 0x76, 0x20, 0x19, 0xb4, 0xb1, 0xad, 0x4c, 0xba, 0xaa, 0xed, 0x64, 0x2c,
88827 - 0x73, 0x2f, 0xce, 0xe4, 0x19, 0x9f, 0x27, 0xb0, 0x31, 0xcd, 0xbf, 0xe1,
88828 - 0x79, 0x39, 0xae, 0xe3, 0x28, 0xd5, 0x4e, 0xee, 0x8e, 0x66, 0xd2, 0x43,
88829 - 0x0b, 0x46, 0xca, 0x82, 0x4d, 0x90, 0x74, 0x01, 0xcf, 0xd1, 0x4e, 0x19,
88830 - 0xfb, 0x66, 0x28, 0x91, 0x50, 0x9e, 0x72, 0x92, 0x9d, 0xef, 0x26, 0x1b,
88831 - 0xf2, 0xaa, 0x5e, 0xfa, 0x1d, 0xe0, 0x73, 0x47, 0x64, 0x93, 0x3f, 0xe9,
88832 - 0x6a, 0xb7, 0x62, 0xcd, 0x2f, 0xa8, 0xc6, 0xf9, 0x15, 0xf1, 0xc2, 0xb2,
88833 - 0xd0, 0x51, 0x37, 0x3e, 0x5f, 0x13, 0xae, 0xb9, 0xa3, 0x0e, 0x41, 0x9a,
88834 - 0x33, 0x58, 0xdd, 0x23, 0x13, 0x58, 0x13, 0xeb, 0x40, 0x31, 0x27, 0xaa,
88835 - 0x18, 0x6b, 0x44, 0xf1, 0x62, 0x35, 0xf6, 0x53, 0xed, 0xef, 0x53, 0x37,
88836 - 0x22, 0xe3, 0xaf, 0x78, 0xde, 0x89, 0x73, 0x0d, 0x00, 0xcf, 0x00, 0x61,
88837 - 0xa8, 0xd1, 0xf4, 0x57, 0x90, 0x5f, 0x08, 0xf7, 0x3d, 0x71, 0x3e, 0x9f,
88838 - 0x49, 0x21, 0x4a, 0x5d, 0x8d, 0x86, 0xe5, 0xbd, 0xf8, 0xb8, 0x91, 0xf1,
88839 - 0xaf, 0x97, 0x62, 0x83, 0x8c, 0xdd, 0x33, 0x01, 0xeb, 0x5c, 0x04, 0xc5,
88840 - 0xc0, 0x2a, 0xcd, 0xd7, 0xd2, 0xfa, 0x65, 0x34, 0xb2, 0x4c, 0xfe, 0x6f,
88841 - 0x34, 0x92, 0xcd, 0x12, 0xe6, 0xc9, 0xa5, 0x07, 0xf0, 0x4a, 0x9a, 0xe7,
88842 - 0x0d, 0x27, 0x35, 0xe1, 0xe7, 0x9e, 0xbc, 0x25, 0x13, 0x63, 0x86, 0xd7,
88843 - 0xf0, 0x5a, 0xb1, 0xc9, 0x5e, 0x27, 0xc0, 0xbd, 0xa2, 0xff, 0xe0, 0x5a,
88844 - 0x1a, 0xe5, 0xc7, 0xd5, 0x54, 0x77, 0x46, 0xa1, 0x7e, 0xa3, 0x42, 0xfa,
88845 - 0xe0, 0x1e, 0xf5, 0x12, 0xc2, 0xbc, 0x70, 0xbf, 0x1a, 0xe7, 0x73, 0xc8,
88846 - 0xe6, 0x0e, 0x59, 0x37, 0x4d, 0x57, 0xa7, 0xea, 0x7f, 0x0f, 0x6c, 0x87,
88847 - 0x5e, 0xde, 0xeb, 0x70, 0xef, 0xee, 0xf4, 0x62, 0x1f, 0xe5, 0xc0, 0x67,
88848 - 0xd3, 0x6d, 0x06, 0xd7, 0x7e, 0x60, 0x1c, 0x2a, 0x52, 0xf4, 0xec, 0x50,
88849 - 0x1d, 0x9f, 0x09, 0xda, 0x55, 0xde, 0x06, 0x47, 0xe6, 0xb6, 0x3a, 0xae,
88850 - 0x37, 0x6a, 0xa8, 0x4e, 0x1e, 0x49, 0x33, 0xbd, 0xdc, 0x7b, 0x33, 0xcd,
88851 - 0x9d, 0x71, 0xf5, 0xf2, 0x5a, 0xb2, 0x8b, 0x66, 0x9d, 0xe5, 0x18, 0xc0,
88852 - 0x93, 0x34, 0x36, 0x54, 0x66, 0x59, 0x7e, 0xb7, 0x8e, 0xfb, 0x9d, 0x7b,
88853 - 0x48, 0xbf, 0x0d, 0x59, 0x7b, 0x9e, 0x6c, 0x79, 0x10, 0x4b, 0x46, 0x5f,
88854 - 0xa8, 0xb3, 0x6b, 0x1f, 0xae, 0xcb, 0x87, 0xb0, 0x27, 0x1d, 0xc0, 0x4c,
88855 - 0xba, 0xcd, 0xff, 0x12, 0x9c, 0xd5, 0xbc, 0xca, 0xe7, 0x88, 0xe7, 0xc7,
88856 - 0x04, 0x30, 0x7d, 0xf5, 0x3b, 0xcb, 0xc7, 0xee, 0x99, 0x1e, 0xb7, 0x30,
88857 - 0xbf, 0x8c, 0x7c, 0xc0, 0xae, 0x63, 0x28, 0x56, 0x78, 0x1e, 0x25, 0xbd,
88858 - 0xbe, 0x4f, 0x7a, 0x75, 0x90, 0x5e, 0x5f, 0xd2, 0xfe, 0x92, 0x31, 0x8b,
88859 - 0x7b, 0x57, 0xdc, 0xcb, 0xfb, 0x43, 0x06, 0x81, 0x16, 0x6b, 0x4c, 0x26,
88860 - 0xee, 0xc4, 0xeb, 0x94, 0x07, 0x6b, 0x28, 0xfe, 0x9d, 0x4a, 0x9b, 0xab,
88861 - 0xe7, 0x62, 0x6d, 0xa9, 0xf7, 0x29, 0x4f, 0x1b, 0x7f, 0xa8, 0x68, 0x67,
88862 - 0xc8, 0x4f, 0xb3, 0x13, 0x7f, 0x8a, 0x33, 0x8d, 0x6d, 0xfe, 0xb7, 0x60,
88863 - 0xb8, 0x9f, 0x88, 0x3f, 0x42, 0x35, 0x3f, 0xd5, 0x0d, 0xcb, 0xff, 0x0b,
88864 - 0x39, 0x59, 0x1c, 0x92, 0xda, 0x76, 0xf9, 0x25, 0xfc, 0x15, 0xce, 0x5c,
88865 - 0x17, 0xd6, 0x5e, 0x02, 0x8f, 0xb1, 0xeb, 0xf1, 0xf0, 0xec, 0xfd, 0x7c,
88866 - 0x1e, 0x2a, 0x48, 0xe9, 0xcc, 0xde, 0xc7, 0x4a, 0xf3, 0xbe, 0x9b, 0x40,
88867 - 0x7e, 0x03, 0xd5, 0xd2, 0xd6, 0x39, 0x54, 0x78, 0x9e, 0x26, 0xbf, 0x88,
88868 - 0x8e, 0xf1, 0xf8, 0x63, 0x5d, 0x6a, 0x21, 0x04, 0x89, 0x30, 0x0e, 0x61,
88869 - 0x84, 0x1e, 0x3e, 0x9f, 0xf1, 0x74, 0x3a, 0x48, 0xb9, 0xa0, 0xad, 0x2f,
88870 - 0x2a, 0xbe, 0x0d, 0x1b, 0x03, 0x70, 0x9e, 0x3b, 0x46, 0x79, 0x4e, 0x49,
88871 - 0x3d, 0x8d, 0xb6, 0x7e, 0xaf, 0xb8, 0x1b, 0xa9, 0xc6, 0xb6, 0xc1, 0xa3,
88872 - 0x08, 0x13, 0x66, 0x50, 0xa2, 0x67, 0x60, 0xcf, 0xb3, 0xb4, 0x20, 0x51,
88873 - 0x9d, 0xc8, 0x71, 0x26, 0x8d, 0xa3, 0x7e, 0x09, 0x37, 0x74, 0xa8, 0x97,
88874 - 0xa7, 0x31, 0x6f, 0x2f, 0xf6, 0x98, 0xd5, 0x05, 0x1a, 0x2f, 0xf9, 0x09,
88875 - 0xdb, 0xd4, 0xc0, 0x49, 0xb5, 0xbf, 0xa4, 0x6f, 0xc3, 0xd6, 0x34, 0xe7,
88876 - 0x69, 0x92, 0x0b, 0xf9, 0x66, 0x5f, 0x64, 0x1b, 0x86, 0x0a, 0x01, 0xec,
88877 - 0xcf, 0x86, 0xf7, 0xee, 0x26, 0x5c, 0x37, 0x56, 0x0e, 0x87, 0x36, 0x8b,
88878 - 0x00, 0xe9, 0x9b, 0xea, 0xff, 0xa6, 0x20, 0xd5, 0xc9, 0x7e, 0xfa, 0xb7,
88879 - 0xeb, 0x99, 0x53, 0x54, 0xcf, 0xbc, 0x4e, 0xbe, 0xe6, 0xad, 0xd6, 0xaa,
88880 - 0x4b, 0xf3, 0x26, 0xe6, 0x62, 0xeb, 0x71, 0xc9, 0xd2, 0x59, 0x90, 0x6c,
88881 - 0x8c, 0x73, 0x08, 0x9f, 0x8d, 0x71, 0x8b, 0xcd, 0x63, 0x86, 0xfb, 0xc1,
88882 - 0xce, 0x20, 0xe5, 0x34, 0xc6, 0x9c, 0x8e, 0x3f, 0x92, 0x48, 0x1e, 0x33,
88883 - 0xea, 0x0e, 0xac, 0x8b, 0xed, 0xc0, 0x90, 0xf6, 0x5d, 0xd4, 0x34, 0x71,
88884 - 0x3c, 0x92, 0x8d, 0x06, 0x9a, 0xf7, 0x42, 0x67, 0x2f, 0xc2, 0x4f, 0x31,
88885 - 0x3e, 0xfa, 0x19, 0xe1, 0x23, 0xf6, 0x5d, 0x9e, 0xbf, 0x51, 0x5f, 0x46,
88886 - 0xb8, 0xa2, 0xbe, 0xd3, 0xce, 0xf3, 0x37, 0x16, 0xf8, 0x4c, 0x26, 0xa8,
88887 - 0x36, 0x85, 0xe7, 0xdd, 0x95, 0x3a, 0x9e, 0xa0, 0x18, 0x93, 0x58, 0xee,
88888 - 0x02, 0x16, 0xf0, 0xd9, 0x63, 0xbb, 0x8e, 0x61, 0x7e, 0x97, 0x14, 0x04,
88889 - 0x66, 0xe3, 0x64, 0x1f, 0xff, 0xea, 0x8c, 0x51, 0xa8, 0x7a, 0x36, 0x94,
88890 - 0xfb, 0x27, 0x07, 0xcc, 0x24, 0xbf, 0x33, 0xe0, 0xa8, 0xf3, 0x52, 0xbc,
88891 - 0x0d, 0x56, 0x20, 0x79, 0x39, 0x2e, 0x4b, 0xea, 0xbc, 0xdc, 0x59, 0xd6,
88892 - 0x47, 0x38, 0xbe, 0x5b, 0xba, 0x70, 0xd2, 0x33, 0xbb, 0x26, 0x95, 0xe1,
88893 - 0xdd, 0x68, 0x1b, 0xfa, 0x40, 0xd4, 0x5a, 0x3b, 0x97, 0xd3, 0xed, 0x48,
88894 - 0x2d, 0xd6, 0x9d, 0x1b, 0xae, 0x64, 0x57, 0x13, 0x1d, 0xe7, 0x4c, 0x5c,
88895 - 0xb7, 0xc6, 0xda, 0xdf, 0x9a, 0x6e, 0xff, 0x73, 0x9a, 0x9b, 0xbf, 0x3f,
88896 - 0xe0, 0xe5, 0x33, 0x93, 0xc7, 0xb3, 0x2f, 0x9a, 0xd1, 0x85, 0xb6, 0x7c,
88897 - 0x4e, 0x90, 0xef, 0x07, 0x75, 0x07, 0x9a, 0xd5, 0xc8, 0xe5, 0x7e, 0xfa,
88898 - 0xfd, 0xb7, 0x05, 0x42, 0xfb, 0x2b, 0x07, 0xf1, 0xab, 0xbc, 0x8e, 0xc7,
88899 - 0x28, 0x0f, 0x34, 0xa8, 0x8a, 0x3f, 0xcf, 0xfb, 0xd7, 0x31, 0x9b, 0xff,
88900 - 0x9b, 0xf2, 0xe4, 0x87, 0x8d, 0x7e, 0xab, 0xc6, 0xb0, 0xf9, 0x2b, 0x10,
88901 - 0x7f, 0x03, 0x5e, 0xf6, 0x85, 0xc5, 0xe4, 0x17, 0x7b, 0xc9, 0x5f, 0x1f,
88902 - 0x23, 0x5b, 0xa3, 0x0a, 0x9e, 0xfc, 0x40, 0xd9, 0x0b, 0xf2, 0xd7, 0xb1,
88903 - 0x34, 0xcb, 0x3f, 0xe8, 0x1b, 0x18, 0xe5, 0xb8, 0x6b, 0xf5, 0x55, 0xb5,
88904 - 0x90, 0x83, 0xe3, 0xae, 0x15, 0x4f, 0x8d, 0x90, 0xe3, 0xd7, 0x75, 0x4c,
88905 - 0xd7, 0x48, 0x39, 0x1c, 0xf4, 0xf0, 0x79, 0x7e, 0x02, 0x87, 0x03, 0x9a,
88906 - 0x9d, 0x2b, 0xe7, 0x28, 0x1f, 0x5d, 0x22, 0x3a, 0xf6, 0xc7, 0x9a, 0x91,
88907 - 0xa2, 0x7c, 0x94, 0x51, 0x6d, 0x5b, 0x52, 0x67, 0x19, 0x63, 0xfe, 0x82,
88908 - 0x30, 0xa6, 0x12, 0x72, 0x49, 0x6d, 0xc3, 0x27, 0xb1, 0xcd, 0x3c, 0xd3,
88909 - 0xc8, 0x36, 0xe5, 0xc2, 0xe1, 0xf6, 0x59, 0xb3, 0x12, 0x60, 0x7e, 0x25,
88910 - 0xbc, 0xa8, 0x91, 0xcd, 0x5c, 0x17, 0x0e, 0xbe, 0x48, 0x39, 0x75, 0xa6,
88911 - 0xaa, 0x8f, 0x70, 0x61, 0xde, 0x1e, 0x63, 0x2c, 0xeb, 0x68, 0x0a, 0x6a,
88912 - 0xa2, 0x80, 0x3f, 0xa6, 0xef, 0xad, 0xc1, 0x4b, 0x55, 0x5b, 0x5d, 0x36,
88913 - 0xfb, 0xdf, 0xbd, 0xd5, 0x77, 0x6c, 0xac, 0x67, 0x42, 0x85, 0xfb, 0xe9,
88914 - 0x37, 0xcf, 0x19, 0xe0, 0xb3, 0x2d, 0x7c, 0xd6, 0xca, 0xb3, 0xb5, 0xb3,
88915 - 0x86, 0xfd, 0xc5, 0xcf, 0xef, 0x15, 0xac, 0x1b, 0xe3, 0xbe, 0x30, 0xf7,
88916 - 0x68, 0x24, 0xec, 0xbe, 0xfa, 0xde, 0x03, 0x7f, 0xf6, 0xe0, 0xd6, 0x31,
88917 - 0xee, 0x45, 0x9c, 0xb8, 0x59, 0xc6, 0x3f, 0x51, 0x1e, 0x96, 0xd9, 0xe7,
88918 - 0xc9, 0xd7, 0x7f, 0xd4, 0x75, 0x6a, 0x92, 0x73, 0xea, 0xdb, 0x5d, 0x9b,
88919 - 0xd2, 0xf3, 0x3a, 0xbe, 0xca, 0xd3, 0xe9, 0x7b, 0x28, 0xee, 0x64, 0xd2,
88920 - 0xca, 0x70, 0x44, 0xb2, 0xf6, 0xd5, 0x52, 0x25, 0xf1, 0x15, 0x2a, 0xd2,
88921 - 0x78, 0xbe, 0x5e, 0xf4, 0x8f, 0x85, 0xa8, 0xb6, 0xf1, 0xfb, 0x1e, 0x38,
88922 - 0x60, 0x52, 0xae, 0x70, 0xe2, 0xe9, 0xd1, 0xb0, 0xf6, 0x26, 0xe1, 0x9d,
88923 - 0x67, 0x46, 0x4d, 0xf3, 0x4d, 0x0d, 0x7f, 0xd2, 0x40, 0x35, 0x72, 0xbb,
88924 - 0x50, 0x12, 0x84, 0x0d, 0x42, 0xeb, 0x45, 0x5b, 0xb0, 0x00, 0xe5, 0xf4,
88925 - 0x4e, 0x9a, 0xef, 0x50, 0x11, 0x78, 0xb1, 0xe8, 0xc1, 0x0b, 0x63, 0xdc,
88926 - 0xfb, 0xf3, 0xa0, 0xf4, 0x54, 0x93, 0x6f, 0xdb, 0x81, 0x10, 0xc5, 0x58,
88927 - 0x19, 0xbd, 0x87, 0x12, 0xb8, 0xf5, 0x80, 0x40, 0x34, 0x92, 0x40, 0xcf,
88928 - 0xa1, 0x7a, 0xac, 0x1f, 0x93, 0x71, 0x31, 0x5e, 0x8f, 0xdb, 0x9e, 0x9a,
88929 - 0xe7, 0xe3, 0x9d, 0x6a, 0x9d, 0x27, 0x5b, 0xe7, 0xd8, 0x8e, 0x66, 0x39,
88930 - 0x66, 0x53, 0xbe, 0xc8, 0x72, 0x0c, 0x34, 0xcd, 0x60, 0xa7, 0xdd, 0xe7,
88931 - 0x78, 0x8e, 0xf2, 0xc7, 0x13, 0x9d, 0x6a, 0x30, 0xe8, 0xd0, 0x71, 0xc3,
88932 - 0x44, 0xe5, 0xdb, 0x0d, 0x30, 0x8f, 0xf3, 0x1e, 0xc6, 0xa7, 0xed, 0xa6,
88933 - 0x79, 0x6b, 0x3c, 0x72, 0x99, 0x2a, 0x3b, 0xf2, 0xa9, 0xb7, 0xc9, 0xa7,
88934 - 0x5a, 0xf0, 0x44, 0x76, 0x7e, 0xaf, 0x4b, 0xed, 0xbf, 0x20, 0x19, 0x3b,
88935 - 0xfc, 0x30, 0x3f, 0xa9, 0xd5, 0xcd, 0x4f, 0x5d, 0x7a, 0x24, 0xb8, 0x5d,
88936 - 0xf0, 0x19, 0x11, 0xee, 0x89, 0x9b, 0xe6, 0xd9, 0xb8, 0x69, 0x16, 0xe3,
88937 - 0x86, 0x7b, 0xd9, 0x0a, 0x3f, 0x0e, 0x2d, 0xe5, 0x77, 0x0d, 0xc2, 0xc9,
88938 - 0x66, 0xb2, 0x2f, 0xcf, 0x52, 0x35, 0xb8, 0x91, 0xea, 0x2b, 0x83, 0x82,
88939 - 0x5c, 0x68, 0xa1, 0xd2, 0x0f, 0xb4, 0xf8, 0xf6, 0x8f, 0x36, 0xe1, 0x99,
88940 - 0xb9, 0xdf, 0xe5, 0xe3, 0x39, 0x56, 0x3f, 0xed, 0x13, 0x0d, 0xab, 0x1b,
88941 - 0x10, 0x49, 0x6e, 0x01, 0xf7, 0x46, 0xf9, 0x4c, 0xaa, 0x81, 0xdb, 0xe2,
88942 - 0x83, 0xd8, 0x3a, 0xc6, 0xfb, 0x6b, 0x3f, 0xef, 0xfa, 0x64, 0xcc, 0xfc,
88943 - 0x5b, 0x37, 0xd1, 0xbf, 0xba, 0xb3, 0x2d, 0xe5, 0xb1, 0xde, 0x55, 0x3a,
88944 - 0x49, 0x75, 0x40, 0x23, 0xca, 0x33, 0x6a, 0x65, 0xb1, 0x48, 0xbe, 0xe9,
88945 - 0x45, 0x24, 0xd8, 0x4c, 0xb1, 0x6a, 0x8e, 0x7c, 0x77, 0xa6, 0xcc, 0x75,
88946 - 0xc0, 0x2f, 0xbb, 0xcc, 0x89, 0x45, 0x98, 0x9e, 0xa3, 0xb9, 0xb2, 0x6a,
88947 - 0xcf, 0x47, 0x84, 0xf3, 0xea, 0x74, 0xb3, 0xc1, 0xa3, 0x47, 0x4e, 0xb7,
88948 - 0x09, 0x09, 0x97, 0x97, 0x9b, 0x66, 0x6f, 0xa7, 0x3a, 0x5c, 0x2f, 0x30,
88949 - 0xe4, 0xd0, 0xd5, 0x44, 0xbb, 0x84, 0xaf, 0x06, 0x11, 0xe9, 0x39, 0x8b,
88950 - 0x48, 0xff, 0x39, 0x8a, 0x61, 0xcf, 0x96, 0xf9, 0x9c, 0xef, 0x23, 0xf8,
88951 - 0xdb, 0xb1, 0x85, 0x38, 0x3e, 0xf3, 0x50, 0xb5, 0x27, 0x06, 0xcf, 0x8d,
88952 - 0x2b, 0x74, 0x1c, 0x26, 0xbd, 0x9e, 0xd4, 0x6a, 0x28, 0xae, 0xcb, 0x70,
88953 - 0xb4, 0x42, 0x6e, 0xa4, 0x3a, 0x21, 0xf6, 0xb8, 0x69, 0x2e, 0x6b, 0xb5,
88954 - 0x6b, 0x9e, 0x65, 0xb3, 0xd7, 0xbe, 0xa3, 0x30, 0xdf, 0xef, 0x09, 0x92,
88955 - 0xfe, 0xda, 0x52, 0x5b, 0xc5, 0x49, 0xd3, 0xf8, 0x43, 0x41, 0x3c, 0xdf,
88956 - 0x56, 0x0f, 0x0f, 0xf3, 0x2d, 0x63, 0xe7, 0x04, 0xf7, 0xe1, 0x58, 0x6f,
88957 - 0xf0, 0xf4, 0xc4, 0x79, 0x9f, 0x9c, 0x75, 0x54, 0xf1, 0xac, 0x8b, 0x53,
88958 - 0x4c, 0x14, 0x3e, 0xc2, 0x53, 0x86, 0xbb, 0x9b, 0xf2, 0x53, 0xed, 0x18,
88959 - 0xbf, 0x2f, 0xe1, 0xc5, 0x63, 0x14, 0x37, 0x2e, 0x69, 0x75, 0xd8, 0xdf,
88960 - 0xc8, 0xb6, 0xc3, 0x74, 0x72, 0xcf, 0x70, 0x1b, 0xee, 0xe5, 0x77, 0x4e,
88961 - 0xca, 0xbf, 0x6b, 0x9d, 0x0d, 0xa4, 0x6b, 0x84, 0x0d, 0x98, 0x8e, 0xf9,
88962 - 0xf5, 0x7b, 0xb0, 0x78, 0x94, 0xf5, 0x78, 0xac, 0x2b, 0x48, 0x32, 0x7a,
88963 - 0x82, 0xec, 0xc2, 0xa1, 0x77, 0x43, 0x26, 0x5b, 0x5c, 0x1b, 0xbf, 0x76,
88964 - 0x0e, 0x75, 0xe8, 0x9c, 0x44, 0xf5, 0x9d, 0xc4, 0xfb, 0x79, 0x4a, 0xe2,
88965 - 0x88, 0xb8, 0x76, 0xce, 0x7c, 0x3d, 0xf7, 0x13, 0x8d, 0x19, 0x3b, 0x2f,
88966 - 0x1d, 0xa6, 0xbc, 0xf4, 0x4a, 0x8e, 0x7d, 0xe4, 0x17, 0x96, 0x8f, 0x38,
88967 - 0x28, 0xd6, 0xae, 0x49, 0x87, 0x70, 0x4e, 0x83, 0x5a, 0x83, 0x18, 0xd1,
88968 - 0x1d, 0xe9, 0xe9, 0xae, 0x62, 0x3e, 0x17, 0xc5, 0xff, 0x99, 0x9c, 0x32,
88969 - 0x68, 0xf5, 0x9f, 0x54, 0xa5, 0x8f, 0x3f, 0x79, 0xef, 0x3f, 0xa8, 0x0f,
88970 - 0xa1, 0x61, 0x25, 0x70, 0x7e, 0x94, 0xfb, 0x55, 0xbc, 0xcf, 0x35, 0x2c,
88971 - 0xae, 0xf0, 0x7b, 0x61, 0xb5, 0x43, 0x78, 0x2f, 0xce, 0xef, 0x5b, 0xb1,
88972 - 0xef, 0x3d, 0x0c, 0xf6, 0xbd, 0x06, 0x1a, 0xfb, 0xc9, 0x68, 0x38, 0xd4,
88973 - 0x43, 0x7e, 0x33, 0x00, 0xeb, 0xbc, 0x90, 0x36, 0x6b, 0xf7, 0xc7, 0x93,
88974 - 0xa7, 0xaa, 0xfb, 0x5b, 0x91, 0xea, 0xde, 0x5c, 0xb4, 0xd0, 0x23, 0x2e,
88975 - 0x15, 0x98, 0xa6, 0xb7, 0x89, 0xa6, 0x6e, 0xf1, 0xe1, 0xec, 0x3a, 0x71,
88976 - 0x71, 0xb6, 0x57, 0x9c, 0x2d, 0x70, 0x4c, 0xfe, 0x79, 0xd7, 0xae, 0x1c,
88977 - 0xe7, 0xb3, 0x3b, 0xc5, 0xbb, 0xf9, 0x0d, 0xe2, 0x42, 0xa1, 0x5f, 0x7c,
88978 - 0x34, 0x6b, 0xe0, 0xfe, 0x78, 0x2f, 0x0a, 0x63, 0xf0, 0xbb, 0xf5, 0xfb,
88979 - 0xc5, 0xa5, 0xbc, 0xdd, 0x27, 0xbc, 0x50, 0x68, 0xf1, 0x15, 0xd2, 0x5c,
88980 - 0x03, 0x1f, 0xa3, 0x1a, 0x78, 0x91, 0xef, 0x99, 0xc9, 0x80, 0xaf, 0x34,
88981 - 0xa9, 0x0c, 0xde, 0x23, 0x4c, 0xf3, 0xb6, 0xd8, 0x69, 0xd6, 0xa1, 0xf9,
88982 - 0x5a, 0xcc, 0xc6, 0x07, 0x3b, 0x49, 0x1e, 0x9b, 0x29, 0xb7, 0x4c, 0x6b,
88983 - 0x6d, 0x55, 0x2c, 0xc2, 0xb6, 0xce, 0xbc, 0x72, 0xae, 0xe6, 0xfd, 0xa7,
88984 - 0x21, 0x38, 0x3b, 0x81, 0xbd, 0xe9, 0xcf, 0x79, 0xbd, 0x44, 0xbc, 0x1a,
88985 - 0xae, 0x21, 0x7c, 0x4c, 0xbc, 0xbe, 0x3e, 0xfa, 0xf9, 0x7e, 0x9e, 0x93,
88986 - 0xc6, 0xee, 0x4a, 0x87, 0x53, 0x47, 0x84, 0x52, 0x29, 0xd8, 0xfb, 0x79,
88987 - 0x9a, 0x57, 0x52, 0x4e, 0x8f, 0x50, 0x1d, 0xd1, 0x2a, 0xd9, 0xbc, 0x26,
88988 - 0xaa, 0xbc, 0xde, 0x44, 0xbc, 0x5e, 0x2c, 0x70, 0x7d, 0xfe, 0x76, 0xd7,
88989 - 0x1b, 0xa3, 0x63, 0x66, 0x3d, 0xd5, 0xff, 0x75, 0x6a, 0xb7, 0xb8, 0x40,
88990 - 0x3c, 0x7f, 0x48, 0x3c, 0x7f, 0x5c, 0xb8, 0x53, 0x7c, 0x44, 0x7c, 0x5e,
88991 - 0x2c, 0xf0, 0x1e, 0x9e, 0x5b, 0x7c, 0x98, 0xb3, 0x79, 0xfc, 0xf0, 0x2a,
88992 - 0x8f, 0x41, 0xdf, 0xfe, 0x74, 0x93, 0xef, 0xd1, 0x49, 0xbf, 0x6f, 0xcf,
88993 - 0xa4, 0x69, 0x7e, 0xa8, 0x49, 0x3e, 0xe6, 0xeb, 0x55, 0xed, 0x8b, 0x7c,
88994 - 0xdd, 0x4c, 0x7c, 0xf1, 0xfe, 0xeb, 0x6f, 0xeb, 0x70, 0x9e, 0xaf, 0xc7,
88995 - 0xac, 0x73, 0x6c, 0xf6, 0x19, 0xa9, 0x7a, 0xde, 0x83, 0x25, 0xbe, 0x7c,
88996 - 0x74, 0xfd, 0x95, 0x7f, 0xcd, 0xd7, 0xe0, 0x05, 0xd2, 0x5f, 0xb1, 0xca,
88997 - 0x57, 0xfd, 0xbf, 0xc9, 0x17, 0xd5, 0xba, 0x63, 0xcc, 0x57, 0xa3, 0xfe,
88998 - 0xc6, 0x98, 0x49, 0xfa, 0x92, 0xac, 0x77, 0xc1, 0x8a, 0xd9, 0x1d, 0x78,
88999 - 0x25, 0xc6, 0xef, 0xc7, 0x45, 0x42, 0x47, 0x28, 0x9e, 0xce, 0x96, 0x3d,
89000 - 0xa2, 0xc6, 0xda, 0x87, 0xc5, 0x1b, 0xb5, 0x44, 0xd3, 0xe1, 0x19, 0x7e,
89001 - 0xff, 0x0b, 0x1a, 0x61, 0x01, 0x3f, 0xbf, 0x37, 0x37, 0x0d, 0xee, 0x97,
89002 - 0xf5, 0x8a, 0x86, 0x22, 0xef, 0xbb, 0x6e, 0x10, 0xbe, 0x22, 0x9f, 0xa3,
89003 - 0xeb, 0x11, 0xde, 0x62, 0xb7, 0xf0, 0x1c, 0x32, 0x4c, 0x8f, 0xba, 0x4e,
89004 - 0xd4, 0x1d, 0xba, 0x53, 0x78, 0xaa, 0x7b, 0xb0, 0xee, 0x62, 0xd0, 0x97,
89005 - 0xbe, 0x46, 0x1e, 0x17, 0xb5, 0x9b, 0x2d, 0x79, 0xbc, 0xa6, 0xcd, 0xef,
89006 - 0x1f, 0x5a, 0xe7, 0x10, 0xf9, 0x1c, 0x9c, 0x27, 0x48, 0xb5, 0x53, 0x43,
89007 - 0xb5, 0x76, 0x7a, 0x37, 0xc6, 0xe7, 0x7b, 0x0c, 0x92, 0x3f, 0x42, 0x4e,
89008 - 0x5d, 0xe9, 0x3f, 0x21, 0xd4, 0xd4, 0xfd, 0x22, 0x79, 0xab, 0x97, 0xea,
89009 - 0x9f, 0xad, 0xb1, 0x48, 0xf2, 0x06, 0x11, 0x49, 0x38, 0x05, 0xe7, 0x15,
89010 - 0x4d, 0xae, 0x2d, 0x19, 0xd8, 0x43, 0xf1, 0xed, 0xe5, 0x9c, 0x83, 0xb0,
89011 - 0x03, 0xbf, 0x43, 0xe6, 0xc4, 0x5a, 0xbf, 0x17, 0x4f, 0x12, 0xee, 0x78,
89012 - 0x22, 0x3b, 0x88, 0x27, 0x0b, 0x03, 0x78, 0xa2, 0xf0, 0xaf, 0xde, 0x95,
89013 - 0x91, 0x3d, 0xfa, 0xf9, 0x95, 0xd5, 0x33, 0x08, 0x89, 0xeb, 0x23, 0x1c,
89014 - 0xa3, 0x1f, 0x6e, 0x97, 0x23, 0x5c, 0xeb, 0xbe, 0x75, 0xf3, 0x07, 0x2a,
89015 - 0xfb, 0xa2, 0xba, 0xe2, 0x94, 0x85, 0x45, 0x1e, 0x59, 0x7e, 0xc8, 0x3a,
89016 - 0x1b, 0x95, 0xbe, 0x69, 0x97, 0xf5, 0x4e, 0xe7, 0x3b, 0x2b, 0x36, 0xa9,
89017 - 0xec, 0x0f, 0x0f, 0xc7, 0xd7, 0x58, 0xf9, 0xf5, 0x6f, 0x56, 0xd9, 0x3d,
89018 - 0x9a, 0x77, 0x56, 0x5d, 0x6f, 0xf7, 0xd1, 0x56, 0x45, 0xad, 0xcf, 0x33,
89019 - 0xab, 0xec, 0xfd, 0xed, 0x4f, 0x57, 0xb5, 0x5a, 0x9f, 0xe7, 0x57, 0xd9,
89020 - 0x3e, 0xf5, 0xee, 0x2a, 0xd5, 0xfa, 0xfc, 0x87, 0x55, 0x76, 0x5e, 0xbe,
89021 - 0xb4, 0x6a, 0xc9, 0xd5, 0xf7, 0x63, 0xf8, 0xef, 0xff, 0x00, 0x88, 0xf4,
89022 - 0x23, 0x6f, 0xec, 0x3a, 0x00, 0x00, 0x00 };
89023 + 0xc5, 0x7b, 0x7b, 0x74, 0x1c, 0x55, 0x9a, 0xdf, 0xef, 0x56, 0x3f, 0x54,
89024 + 0xdd, 0x6a, 0xb5, 0x4a, 0x72, 0xdb, 0x6e, 0xed, 0x68, 0xc6, 0x5d, 0xee,
89025 + 0x6a, 0xb9, 0xb1, 0x84, 0x5d, 0x2d, 0xb5, 0xec, 0x66, 0x5d, 0xb1, 0x7b,
89026 + 0x8c, 0xb0, 0x65, 0x10, 0x3b, 0xc2, 0xeb, 0x9d, 0x88, 0x09, 0x27, 0xf4,
89027 + 0x18, 0x19, 0x64, 0x63, 0x40, 0x30, 0x64, 0xa3, 0xd9, 0x25, 0xeb, 0x1a,
89028 + 0xf9, 0x81, 0x1f, 0xad, 0xee, 0xd6, 0xc3, 0xc8, 0xec, 0xd9, 0x13, 0x64,
89029 + 0x49, 0xb6, 0xcc, 0xd0, 0x0f, 0x33, 0xc0, 0xcc, 0x30, 0x27, 0x13, 0x77,
89030 + 0x8c, 0x01, 0x03, 0x63, 0x98, 0xdd, 0x6c, 0x92, 0x99, 0x3d, 0x49, 0xd6,
89031 + 0x07, 0xf3, 0xb0, 0xc1, 0x60, 0x32, 0x43, 0x12, 0xb1, 0xcb, 0x4c, 0xe5,
89032 + 0xfb, 0xaa, 0x25, 0x63, 0x58, 0xb2, 0x9b, 0x6c, 0xfe, 0x88, 0xce, 0xd1,
89033 + 0xe9, 0xee, 0xaa, 0x5b, 0xf7, 0x7e, 0xef, 0xef, 0xf7, 0x7d, 0xf7, 0x56,
89034 + 0x04, 0xf0, 0x62, 0xee, 0xaf, 0x86, 0xfe, 0xe3, 0xfd, 0x03, 0x0f, 0xb7,
89035 + 0xae, 0x88, 0xaf, 0xa0, 0xaf, 0x6d, 0x58, 0xec, 0x74, 0xf2, 0xcd, 0x55,
89036 + 0x02, 0x48, 0xbd, 0x87, 0x7f, 0xd4, 0xdf, 0x57, 0xff, 0x71, 0x8f, 0xc1,
89037 + 0x01, 0x28, 0xf3, 0x34, 0xf1, 0x3f, 0x64, 0xc9, 0x30, 0xd7, 0xac, 0xd7,
89038 + 0x20, 0x3b, 0x8c, 0xc4, 0xda, 0xbb, 0x34, 0x20, 0x99, 0x6f, 0x0e, 0xdd,
89039 + 0x88, 0xdf, 0x58, 0x66, 0xc0, 0x09, 0xbe, 0xfe, 0x55, 0xe3, 0xd3, 0x5d,
89040 + 0x3f, 0x5d, 0xad, 0x7e, 0x34, 0xe1, 0x80, 0xac, 0x18, 0x63, 0x50, 0x9a,
89041 + 0x20, 0x37, 0xd2, 0x33, 0x7f, 0xb6, 0xec, 0x79, 0x27, 0xfc, 0xf3, 0x73,
89042 + 0xc1, 0x74, 0x19, 0x3a, 0x76, 0x67, 0xfb, 0x31, 0x13, 0x07, 0x2e, 0xa6,
89043 + 0x23, 0xfa, 0x6e, 0x20, 0x27, 0x19, 0x91, 0xd0, 0x69, 0x84, 0x30, 0x9d,
89044 + 0x87, 0x59, 0x65, 0x68, 0xd8, 0x5f, 0x0a, 0xe1, 0x52, 0xfa, 0xb7, 0x56,
89045 + 0xc8, 0xd5, 0x8f, 0xb7, 0xe2, 0x90, 0x83, 0xc6, 0x23, 0x08, 0x66, 0x21,
89046 + 0xd7, 0x18, 0x03, 0x28, 0x0c, 0x01, 0x7b, 0xd3, 0x6a, 0x3f, 0xa0, 0xf6,
89047 + 0x14, 0x45, 0xf8, 0xec, 0x09, 0xa8, 0xdd, 0x0d, 0x8e, 0xe6, 0xd4, 0xed,
89048 + 0x42, 0x4d, 0xee, 0x14, 0x90, 0x05, 0x8d, 0x5d, 0x9e, 0xe7, 0xcf, 0x01,
89049 + 0x44, 0xf3, 0x32, 0xce, 0x3b, 0x78, 0x59, 0x83, 0xe4, 0x2c, 0xe0, 0xd4,
89050 + 0x74, 0xec, 0xcd, 0xc2, 0x74, 0x1a, 0x02, 0xbb, 0xe3, 0x11, 0x65, 0x0a,
89051 + 0x7c, 0x3f, 0x84, 0x41, 0x7b, 0x9c, 0x4a, 0x1c, 0x5b, 0xd6, 0x1e, 0xdd,
89052 + 0xb2, 0x8e, 0xe9, 0x55, 0x30, 0x15, 0x35, 0x08, 0x08, 0x0c, 0xea, 0x12,
89053 + 0x92, 0xca, 0xfa, 0x90, 0x13, 0x6a, 0x70, 0x1b, 0xfe, 0x96, 0xf8, 0x4d,
89054 + 0x46, 0x5d, 0xa8, 0x8c, 0x4f, 0xa1, 0x0a, 0x65, 0xa5, 0x22, 0xb1, 0xc9,
89055 + 0xb4, 0x65, 0xbd, 0xa4, 0x39, 0x71, 0x8c, 0x64, 0x33, 0x98, 0xff, 0x5b,
89056 + 0xab, 0x4c, 0x72, 0xd9, 0xa3, 0xcd, 0xaf, 0x2f, 0x63, 0x42, 0xb1, 0xac,
89057 + 0x29, 0xba, 0xb7, 0x2f, 0x3f, 0x2f, 0x63, 0xcb, 0x92, 0x34, 0xcb, 0xba,
89058 + 0x4b, 0xfb, 0x1b, 0x6b, 0xeb, 0xe7, 0xc6, 0xc6, 0xf0, 0xfd, 0x9c, 0x82,
89059 + 0xa7, 0xb2, 0x49, 0xe4, 0xd3, 0x16, 0x1c, 0x86, 0x13, 0x7d, 0x43, 0x21,
89060 + 0xec, 0x2c, 0x74, 0xa0, 0x90, 0x56, 0x53, 0xe7, 0xe9, 0xb9, 0xad, 0x71,
89061 + 0x0d, 0xf7, 0x15, 0x3a, 0x31, 0x93, 0x86, 0xe5, 0x31, 0xb4, 0xb2, 0x47,
89062 + 0x44, 0x71, 0x4f, 0xa1, 0x0b, 0xc5, 0xb4, 0x76, 0x76, 0x50, 0x44, 0x06,
89063 + 0x1a, 0x1c, 0x4e, 0x3c, 0x50, 0x68, 0xc1, 0xfd, 0x85, 0x04, 0x3d, 0x63,
89064 + 0xe1, 0xe6, 0x58, 0x23, 0x8d, 0x6f, 0xc5, 0x93, 0x63, 0x96, 0x15, 0x8d,
89065 + 0x29, 0xe8, 0x2b, 0xe8, 0x98, 0xc9, 0x49, 0x48, 0x1d, 0x73, 0x22, 0x75,
89066 + 0x14, 0xb8, 0xe7, 0x68, 0x2b, 0xa6, 0x72, 0x16, 0xb6, 0xea, 0x83, 0x0d,
89067 + 0x12, 0x5c, 0x48, 0x29, 0x02, 0x2e, 0xcd, 0x8f, 0x6d, 0x4a, 0x85, 0xf6,
89068 + 0xf3, 0x0e, 0x81, 0x1d, 0x47, 0xa3, 0xf8, 0x45, 0xda, 0xc4, 0xcd, 0xed,
89069 + 0x41, 0x0c, 0x14, 0x02, 0x78, 0x23, 0x1d, 0xa0, 0x35, 0x74, 0xbc, 0x9e,
89070 + 0x96, 0x69, 0x9d, 0x16, 0x9c, 0x49, 0xf3, 0x18, 0x1e, 0xeb, 0x43, 0x6f,
89071 + 0xa1, 0x11, 0xe7, 0xd2, 0x41, 0x5a, 0x33, 0x80, 0x57, 0x68, 0xdc, 0xf6,
89072 + 0x82, 0x86, 0xb3, 0x34, 0xae, 0xaf, 0x10, 0xc2, 0xcb, 0x69, 0x1f, 0xd1,
89073 + 0x1a, 0xc0, 0xe9, 0x74, 0x3f, 0x76, 0xa7, 0x9b, 0xcf, 0xde, 0x48, 0x32,
89074 + 0x0c, 0x2d, 0xe0, 0x75, 0xf8, 0xda, 0x5b, 0x56, 0x57, 0xc0, 0x36, 0x13,
89075 + 0x5a, 0x67, 0x7e, 0xdd, 0x7e, 0x0c, 0xa6, 0xcf, 0xcc, 0xf9, 0x89, 0x8e,
89076 + 0x03, 0xb9, 0x59, 0xeb, 0xa7, 0xcb, 0x1a, 0x71, 0x22, 0x0b, 0x3c, 0x39,
89077 + 0x05, 0x4c, 0x65, 0x4d, 0xab, 0xc6, 0xb0, 0xac, 0xc9, 0xf6, 0x16, 0x92,
89078 + 0x97, 0xd6, 0xb3, 0x95, 0x46, 0x3d, 0x55, 0x72, 0x02, 0x47, 0xd5, 0x9e,
89079 + 0x32, 0x24, 0x4c, 0xcc, 0x38, 0xe1, 0x1e, 0x52, 0x3b, 0x27, 0xa0, 0x9e,
89080 + 0xbd, 0x87, 0x3c, 0xe9, 0x58, 0x56, 0xed, 0x36, 0xb1, 0xcb, 0x0a, 0x1a,
89081 + 0x4d, 0xa1, 0x16, 0x87, 0x05, 0x3f, 0xd9, 0x42, 0xba, 0xc5, 0xb2, 0x6a,
89082 + 0x57, 0x5b, 0xd6, 0xb9, 0x76, 0x58, 0x92, 0xa1, 0x9d, 0x2d, 0x41, 0x2b,
89083 + 0x7f, 0x00, 0x6d, 0xe0, 0x34, 0xca, 0x5f, 0xf5, 0x21, 0xd2, 0x17, 0x76,
89084 + 0x44, 0xfa, 0x67, 0xe9, 0xd9, 0x9a, 0x02, 0x99, 0x32, 0xf1, 0xa2, 0x91,
89085 + 0x0d, 0x16, 0x4a, 0x32, 0x9c, 0xc4, 0x4f, 0xcb, 0x90, 0x65, 0x39, 0x35,
89086 + 0x1f, 0x7c, 0x24, 0xdf, 0x8d, 0x87, 0x2d, 0xeb, 0x1d, 0x5d, 0x81, 0x9b,
89087 + 0x74, 0x73, 0xd3, 0xb0, 0x85, 0x49, 0xfd, 0x34, 0xc9, 0x53, 0x20, 0xd5,
89088 + 0x1d, 0xa7, 0x67, 0x02, 0x34, 0x3e, 0x81, 0x8d, 0x43, 0x41, 0x7c, 0x3f,
89089 + 0x2b, 0xe3, 0xa7, 0xcb, 0xa2, 0xa8, 0xa6, 0xb9, 0xbc, 0x24, 0xab, 0x2a,
89090 + 0x92, 0x1f, 0x0a, 0x64, 0x6e, 0x85, 0x8a, 0x3d, 0xa2, 0x70, 0x9e, 0x78,
89091 + 0x0c, 0xe2, 0x07, 0xa5, 0x00, 0x9e, 0x2e, 0x29, 0x38, 0x59, 0x6a, 0xc4,
89092 + 0xa9, 0x92, 0x8e, 0x6c, 0x4e, 0xdd, 0x5f, 0x86, 0x85, 0x1a, 0x32, 0xe7,
89093 + 0x37, 0x26, 0x62, 0xc8, 0xe4, 0x2c, 0x2b, 0x4f, 0x34, 0x7b, 0x89, 0x87,
89094 + 0xd7, 0x27, 0xbe, 0x86, 0xe3, 0x63, 0x4e, 0x84, 0x26, 0x03, 0x78, 0x2a,
89095 + 0xed, 0xc4, 0x75, 0x19, 0xd5, 0x9c, 0x80, 0x16, 0xdd, 0x29, 0xb4, 0xe4,
89096 + 0x72, 0xa1, 0xe6, 0x4c, 0x44, 0x42, 0x2e, 0x21, 0xa1, 0xe9, 0xb8, 0x13,
89097 + 0x5a, 0x31, 0x04, 0x57, 0x93, 0x0c, 0xad, 0x89, 0xdc, 0xc8, 0x2f, 0xc1,
89098 + 0x4d, 0x7e, 0xb1, 0x71, 0x24, 0x4a, 0xd7, 0x02, 0x74, 0x0d, 0x5f, 0xab,
89099 + 0x82, 0x63, 0x91, 0x03, 0x24, 0x37, 0xcd, 0x81, 0xa4, 0xd3, 0xb2, 0x1c,
89100 + 0x5a, 0x2b, 0x7a, 0x1e, 0xa3, 0xcf, 0x36, 0x1e, 0xaf, 0x20, 0x5c, 0x24,
89101 + 0x19, 0x34, 0x11, 0x4d, 0x59, 0xa2, 0x31, 0x4b, 0x34, 0x66, 0x89, 0xc6,
89102 + 0xac, 0x83, 0x6c, 0x46, 0xd5, 0x81, 0x3f, 0x22, 0x5d, 0x85, 0x88, 0xbf,
89103 + 0x5f, 0xd8, 0x7a, 0x7a, 0xba, 0x14, 0x24, 0xfa, 0x43, 0x36, 0xfd, 0x4f,
89104 + 0xe6, 0x04, 0x24, 0x4d, 0xed, 0x3e, 0x8f, 0x75, 0x08, 0xc7, 0xd4, 0xe4,
89105 + 0x04, 0x92, 0xf4, 0x9c, 0xba, 0xdf, 0x84, 0xda, 0x59, 0x26, 0xfd, 0x6f,
89106 + 0x55, 0x12, 0x98, 0xc9, 0xba, 0x50, 0xad, 0xa9, 0x21, 0xd2, 0x57, 0xb4,
89107 + 0x8c, 0x05, 0xb8, 0x57, 0xa1, 0x39, 0x25, 0xb7, 0xa8, 0xc4, 0x90, 0x47,
89108 + 0x10, 0x19, 0x91, 0x30, 0xad, 0x3b, 0xc8, 0x3f, 0x75, 0x38, 0x9a, 0x68,
89109 + 0xb9, 0x62, 0x9c, 0x3e, 0x69, 0xfe, 0x2c, 0xad, 0x45, 0xf4, 0xd0, 0x7c,
89110 + 0xe4, 0x97, 0x2c, 0xc7, 0x28, 0xd1, 0xb0, 0xd7, 0xa6, 0xf7, 0x64, 0xa9,
89111 + 0x4b, 0x54, 0xec, 0xc7, 0x20, 0x7b, 0x51, 0x43, 0x10, 0x6a, 0x34, 0x24,
89112 + 0x54, 0x3d, 0x29, 0x14, 0x4c, 0x95, 0x7e, 0x46, 0x63, 0x02, 0xd7, 0x8c,
89113 + 0xe9, 0xc6, 0x60, 0x56, 0xe0, 0x46, 0xcd, 0xc2, 0x7a, 0xbd, 0x1b, 0xbb,
89114 + 0x4b, 0xf3, 0x7e, 0xc9, 0xb1, 0x4b, 0xf1, 0x4f, 0xa5, 0x3b, 0xb0, 0x27,
89115 + 0x1b, 0xc2, 0xee, 0x7c, 0xd0, 0x3f, 0x99, 0xe6, 0x7b, 0x1a, 0xf9, 0x3b,
89116 + 0xdf, 0x0b, 0x5c, 0x73, 0xaf, 0xf1, 0x9a, 0x7b, 0x09, 0x0c, 0x8e, 0x7e,
89117 + 0x85, 0x62, 0x48, 0x2d, 0x76, 0x6b, 0x1f, 0x91, 0xad, 0x68, 0x89, 0x5e,
89118 + 0x34, 0xe0, 0xbc, 0xd2, 0x82, 0x43, 0xe3, 0x5d, 0xd8, 0x33, 0xbe, 0x02,
89119 + 0x07, 0x46, 0x1b, 0x53, 0x5e, 0x63, 0x88, 0xd6, 0x0f, 0x27, 0x7b, 0x85,
89120 + 0xda, 0xef, 0x10, 0xe1, 0x68, 0x2f, 0xd9, 0x6e, 0x53, 0x9d, 0x65, 0x9d,
89121 + 0x8e, 0x91, 0x6d, 0xeb, 0xcd, 0xfa, 0x46, 0x12, 0x40, 0xb9, 0x5b, 0xed,
89122 + 0x7c, 0x0b, 0x3e, 0xdc, 0x4a, 0x36, 0x37, 0x15, 0x43, 0xaf, 0x03, 0x8e,
89123 + 0x16, 0x1f, 0x7e, 0x6d, 0x1d, 0x75, 0xb2, 0xdc, 0xad, 0x5d, 0x77, 0xe9,
89124 + 0x7b, 0x05, 0xc7, 0x39, 0xf7, 0xd5, 0x58, 0xc2, 0xf3, 0xf3, 0x33, 0x96,
89125 + 0x15, 0xa6, 0x79, 0xfa, 0x62, 0xcd, 0x89, 0x3e, 0xcc, 0x5a, 0xe7, 0xb7,
89126 + 0x74, 0x61, 0xf7, 0xcc, 0x0a, 0x1c, 0x1c, 0x75, 0x21, 0x59, 0x27, 0x50,
89127 + 0xab, 0x85, 0xcb, 0xf7, 0x62, 0x05, 0xcc, 0x29, 0x7e, 0xae, 0x0b, 0x47,
89128 + 0x66, 0x2a, 0xbf, 0xb3, 0x57, 0x7f, 0xcf, 0xcf, 0x77, 0x91, 0x74, 0xca,
89129 + 0xf2, 0xe4, 0x38, 0x49, 0x2a, 0x30, 0x9a, 0x71, 0x62, 0x34, 0x40, 0xba,
89130 + 0xed, 0x10, 0xce, 0xe3, 0x8b, 0xfc, 0xde, 0xc7, 0x2c, 0xbc, 0xa4, 0x93,
89131 + 0x9e, 0xb3, 0x1b, 0x84, 0xf7, 0x78, 0xa7, 0x70, 0x15, 0x37, 0x0b, 0xf7,
89132 + 0xe4, 0xb7, 0x84, 0x7c, 0x3c, 0x25, 0xaa, 0x8a, 0x2d, 0x24, 0xfb, 0x1e,
89133 + 0xe1, 0x39, 0xae, 0x86, 0x42, 0xe2, 0xbb, 0xa4, 0xcf, 0x2d, 0xc2, 0x51,
89134 + 0x84, 0x22, 0x19, 0x03, 0x42, 0x2a, 0xd2, 0x1c, 0xb6, 0x0d, 0xf1, 0x3a,
89135 + 0x41, 0xd2, 0x1b, 0x4c, 0x87, 0xd1, 0x8f, 0xad, 0x94, 0x23, 0x6e, 0x49,
89136 + 0x1b, 0x38, 0x98, 0xad, 0xa2, 0xf8, 0xc8, 0x7e, 0x3f, 0x4b, 0xeb, 0x6a,
89137 + 0x38, 0x54, 0x82, 0xe9, 0x31, 0x0e, 0x62, 0x05, 0xf9, 0xdb, 0xb9, 0x18,
89138 + 0xfb, 0x22, 0x90, 0xcf, 0x86, 0x93, 0x07, 0x85, 0x65, 0x55, 0x45, 0xac,
89139 + 0x25, 0xef, 0xe8, 0xcd, 0xd1, 0x33, 0xf8, 0x9f, 0xd6, 0x44, 0xa0, 0x1f,
89140 + 0xd1, 0x76, 0xc8, 0x55, 0xc6, 0x1e, 0xbc, 0x9b, 0x86, 0xec, 0x36, 0x4c,
89141 + 0xbc, 0x94, 0x06, 0x7c, 0x43, 0x83, 0x8a, 0x17, 0x64, 0x07, 0x08, 0x07,
89142 + 0x0f, 0x09, 0xb5, 0xfb, 0x02, 0xa5, 0xb3, 0x44, 0xbb, 0x39, 0x20, 0x81,
89143 + 0xe2, 0x91, 0x50, 0x7b, 0xce, 0x90, 0x3d, 0x7e, 0x57, 0xa8, 0xca, 0xac,
89144 + 0x60, 0x3f, 0xe5, 0x5c, 0xb2, 0x67, 0x2e, 0xa7, 0x98, 0xb8, 0xee, 0x9a,
89145 + 0x9c, 0x32, 0x48, 0x74, 0xed, 0x23, 0xba, 0x5e, 0xd4, 0xd5, 0xe0, 0x24,
89146 + 0xac, 0x25, 0xbd, 0x3a, 0xdf, 0x33, 0xb0, 0xa7, 0x64, 0x85, 0x1c, 0x06,
89147 + 0xcb, 0x0a, 0xa9, 0x2a, 0x03, 0xa6, 0x6c, 0x28, 0xe4, 0x1b, 0xbf, 0xb1,
89148 + 0x7a, 0xe3, 0xb2, 0xfe, 0x76, 0x5e, 0x21, 0x79, 0xc1, 0xef, 0x2c, 0x7c,
89149 + 0x59, 0xde, 0xb5, 0x20, 0x19, 0xbf, 0xb1, 0xee, 0x8c, 0xc3, 0xbf, 0xa4,
89150 + 0xe0, 0x4c, 0x55, 0x1b, 0xe8, 0x1e, 0x18, 0xda, 0x65, 0x35, 0x68, 0x12,
89151 + 0xc5, 0x29, 0x8d, 0xe2, 0xba, 0x2f, 0x71, 0xb9, 0xdd, 0x23, 0xce, 0xb5,
89152 + 0x07, 0xbb, 0x3e, 0xc8, 0x7b, 0x48, 0xcf, 0xe8, 0xde, 0x59, 0x48, 0x38,
89153 + 0xdf, 0x23, 0x5b, 0x73, 0x53, 0x4c, 0x45, 0xa1, 0xb1, 0xeb, 0x12, 0xe5,
89154 + 0xa1, 0x9b, 0x62, 0x9e, 0x7f, 0xea, 0x36, 0xa4, 0xaf, 0x79, 0xf0, 0xe0,
89155 + 0xca, 0xe9, 0x44, 0x2d, 0xc5, 0x75, 0x05, 0x67, 0xe3, 0x9d, 0x18, 0x2c,
89156 + 0x55, 0x91, 0x1d, 0x3e, 0x53, 0xde, 0xab, 0x35, 0x76, 0xbd, 0x9f, 0x5e,
89157 + 0xc2, 0x71, 0xe4, 0xd3, 0x7c, 0xbb, 0xd6, 0xbd, 0x53, 0x9c, 0xde, 0xe4,
89158 + 0x45, 0x1c, 0x07, 0x4a, 0xb2, 0xfc, 0x49, 0x1a, 0x1f, 0x2d, 0xd1, 0xb4,
89159 + 0xf2, 0x3a, 0x47, 0x53, 0xbf, 0xec, 0x68, 0x1a, 0x70, 0x53, 0x0c, 0xbe,
89160 + 0x78, 0xbd, 0xc0, 0x4b, 0xd7, 0x47, 0x12, 0x6e, 0xe1, 0xc1, 0xf9, 0xee,
89161 + 0x04, 0xd9, 0x49, 0x63, 0xca, 0x63, 0x50, 0xfc, 0x20, 0x93, 0x75, 0x68,
89162 + 0x09, 0xec, 0x9e, 0xc2, 0x23, 0x83, 0x7a, 0x17, 0xcc, 0x19, 0xb6, 0xa1,
89163 + 0x16, 0x0c, 0xce, 0x74, 0xc3, 0x2c, 0x39, 0x30, 0x11, 0x20, 0xe6, 0x4b,
89164 + 0x48, 0xb9, 0x8c, 0x96, 0x8e, 0x89, 0x7c, 0xaf, 0xab, 0xe2, 0xc3, 0xc4,
89165 + 0x7f, 0xf6, 0xa8, 0x1f, 0x5e, 0xd6, 0xf3, 0x59, 0x92, 0x51, 0x0b, 0x9e,
89166 + 0x29, 0x45, 0x29, 0xd6, 0xe9, 0x24, 0x17, 0x8d, 0xe2, 0x45, 0x88, 0xec,
89167 + 0x4b, 0xc6, 0xd6, 0x51, 0xf5, 0x08, 0xc5, 0x85, 0xdc, 0x04, 0xda, 0x91,
89168 + 0x0c, 0x28, 0x94, 0xbb, 0x5f, 0x9a, 0x8b, 0x01, 0xdb, 0xe8, 0x53, 0x35,
89169 + 0x93, 0xc0, 0x19, 0x09, 0x68, 0x6d, 0x30, 0x22, 0xfb, 0x1b, 0x48, 0x1f,
89170 + 0x75, 0x45, 0x0f, 0x1e, 0x18, 0xad, 0xc7, 0xfd, 0xe3, 0x5e, 0xec, 0x18,
89171 + 0xb5, 0x70, 0x39, 0xc6, 0xb6, 0xa1, 0xf6, 0x10, 0x89, 0x1d, 0xd5, 0x24,
89172 + 0xd7, 0x4d, 0xb1, 0x48, 0xc2, 0x23, 0x9c, 0xa8, 0x2a, 0x76, 0x13, 0x06,
89173 + 0x48, 0xb2, 0x5f, 0xe8, 0x34, 0x47, 0x68, 0xb7, 0x7e, 0x2b, 0x52, 0x01,
89174 + 0x19, 0xae, 0xa2, 0x8f, 0x62, 0x09, 0xfb, 0x31, 0xdf, 0xfb, 0x06, 0xb6,
89175 + 0xba, 0x7d, 0x70, 0x64, 0x64, 0xe4, 0x28, 0xff, 0x63, 0x91, 0x1b, 0x9d,
89176 + 0x4d, 0x12, 0xfd, 0x07, 0xfc, 0xd3, 0x63, 0x8d, 0xfe, 0x63, 0x14, 0x5f,
89177 + 0xef, 0xc9, 0x4a, 0xbc, 0x0e, 0xe3, 0x05, 0x9a, 0x5b, 0xc1, 0x93, 0x14,
89178 + 0xab, 0x1f, 0xa2, 0xf8, 0x73, 0xa2, 0x94, 0x17, 0x1c, 0x4f, 0x6c, 0x7e,
89179 + 0xb2, 0xc4, 0x5b, 0x96, 0x78, 0xcb, 0x12, 0x5f, 0x14, 0x17, 0x4e, 0x66,
89180 + 0x99, 0x8f, 0x2b, 0xe4, 0xa3, 0x09, 0xe2, 0xdd, 0x83, 0x6d, 0x44, 0xef,
89181 + 0x83, 0xe3, 0xd5, 0xb8, 0x8f, 0xe8, 0x2d, 0xea, 0x6a, 0xcf, 0x9f, 0x0b,
89182 + 0x0b, 0xf9, 0x98, 0x6a, 0xee, 0x14, 0x5e, 0x48, 0x4d, 0x96, 0xd5, 0xad,
89183 + 0x33, 0xcf, 0x64, 0xa7, 0x92, 0xcd, 0xf3, 0xfe, 0x24, 0x3c, 0xe8, 0xa3,
89184 + 0x67, 0x7a, 0xc7, 0xf1, 0xa9, 0x44, 0x3c, 0x79, 0x88, 0xc7, 0x83, 0xba,
89185 + 0x9a, 0x58, 0x4e, 0x71, 0xfd, 0x82, 0x16, 0x29, 0x5f, 0x70, 0xe0, 0xeb,
89186 + 0x24, 0x0f, 0x9d, 0xe5, 0xd1, 0x44, 0xfc, 0x3c, 0x40, 0x58, 0xc7, 0x6f,
89187 + 0x30, 0x9f, 0x91, 0xe8, 0xaf, 0x89, 0xf7, 0x48, 0x31, 0xe0, 0x3f, 0x77,
89188 + 0xb8, 0xd1, 0xff, 0xe2, 0x50, 0x85, 0xfe, 0x9d, 0x44, 0xff, 0x74, 0xcc,
89189 + 0xc2, 0x21, 0xa2, 0xff, 0x29, 0xa2, 0xbf, 0x8f, 0xe3, 0xf9, 0x1c, 0xfd,
89190 + 0x27, 0x4a, 0xbc, 0xee, 0x97, 0xf1, 0x30, 0x4f, 0x7f, 0x3d, 0xb6, 0x8e,
89191 + 0xcf, 0xcb, 0xcb, 0xb2, 0xee, 0xd4, 0x9f, 0xb5, 0xbe, 0x4d, 0x32, 0x5b,
89192 + 0x52, 0x64, 0xb9, 0x31, 0x8e, 0x8b, 0x1c, 0xb9, 0x07, 0x7d, 0x12, 0xbc,
89193 + 0x3e, 0x2c, 0x28, 0x72, 0x2e, 0x08, 0xe1, 0x59, 0xd2, 0xef, 0x29, 0xca,
89194 + 0x65, 0xcf, 0x94, 0xae, 0xcd, 0x6d, 0xac, 0xeb, 0x31, 0xd2, 0xb1, 0x3a,
89195 + 0x61, 0x52, 0x6c, 0x4b, 0x95, 0x92, 0xd8, 0x3b, 0x8e, 0xe4, 0xb4, 0xfe,
89196 + 0xaf, 0x29, 0xc0, 0x2c, 0x22, 0xfb, 0xaa, 0x4a, 0x2a, 0x9a, 0x17, 0x77,
89197 + 0x4d, 0x05, 0xd0, 0x5f, 0x5a, 0x8f, 0x2c, 0xc5, 0x9b, 0x9d, 0x14, 0x9f,
89198 + 0x3f, 0x8c, 0x25, 0x77, 0xf8, 0x11, 0x21, 0xfd, 0x06, 0x70, 0x2f, 0x3d,
89199 + 0x73, 0x70, 0x9c, 0xe9, 0x57, 0xe6, 0xf4, 0x1c, 0xc0, 0x3d, 0x74, 0x6d,
89200 + 0xdf, 0xb8, 0x8c, 0x17, 0xf4, 0x27, 0x08, 0xcf, 0x54, 0xf0, 0xc5, 0xdd,
89201 + 0x59, 0x28, 0xe4, 0x9e, 0x84, 0xff, 0x22, 0xd1, 0x17, 0xe8, 0xf7, 0xb6,
89202 + 0x92, 0xd7, 0x3f, 0x38, 0x86, 0xef, 0x2d, 0x31, 0xfc, 0x58, 0x40, 0x58,
89203 + 0xec, 0x76, 0x3d, 0x42, 0x76, 0xef, 0xc4, 0x40, 0x49, 0xc2, 0x77, 0xa6,
89204 + 0xbc, 0x78, 0x68, 0xf4, 0x53, 0xcb, 0x1d, 0x77, 0xe2, 0xb6, 0x26, 0x2f,
89205 + 0x1e, 0x9c, 0x4a, 0x62, 0xff, 0x38, 0x42, 0x55, 0xb1, 0x61, 0x8a, 0xdd,
89206 + 0x95, 0x7c, 0x50, 0x4d, 0xbc, 0x1f, 0x18, 0xf7, 0xf9, 0xfb, 0x0e, 0xb3,
89207 + 0x0c, 0xd6, 0x07, 0x3d, 0x40, 0xb9, 0x2a, 0xe6, 0xc0, 0x36, 0xdd, 0xb1,
89208 + 0xa0, 0x8a, 0x0c, 0xfd, 0x09, 0x9a, 0x6f, 0x12, 0x8e, 0x57, 0x97, 0x20,
89209 + 0x72, 0xa4, 0xc1, 0x51, 0xce, 0x2d, 0x40, 0x3d, 0x1e, 0x9a, 0x49, 0x62,
89210 + 0x98, 0x6c, 0xf4, 0x81, 0xd1, 0xc1, 0xef, 0xd5, 0x51, 0x0c, 0xf1, 0xb7,
89211 + 0xaa, 0x7d, 0x6f, 0x08, 0x03, 0xf9, 0x88, 0x07, 0x3b, 0xa7, 0x7c, 0xfe,
89212 + 0x1d, 0x87, 0xad, 0x75, 0x6c, 0x4f, 0xdb, 0x67, 0xea, 0x71, 0xdf, 0x38,
89213 + 0x5d, 0x1b, 0x65, 0x1b, 0x26, 0x5b, 0x8b, 0x54, 0x11, 0x6f, 0xe1, 0xa4,
89214 + 0x87, 0xf0, 0x92, 0x23, 0x56, 0x4d, 0xf2, 0xf0, 0xe0, 0x1e, 0xdb, 0x16,
89215 + 0x14, 0x6c, 0x1b, 0xb7, 0xf0, 0xa6, 0x1e, 0x45, 0x8e, 0xec, 0xfa, 0xc8,
89216 + 0xb8, 0x3a, 0xdb, 0x41, 0x58, 0xe7, 0x6d, 0x87, 0x7a, 0xa4, 0xc9, 0x91,
89217 + 0x44, 0x7d, 0x1b, 0xc5, 0xf8, 0x7a, 0xcb, 0xba, 0xbb, 0xb5, 0xb9, 0xff,
89218 + 0xe7, 0x44, 0x73, 0x9d, 0xb1, 0x08, 0xe5, 0x3a, 0x35, 0x07, 0x34, 0x0f,
89219 + 0xb8, 0xa5, 0xeb, 0x71, 0x7e, 0x21, 0xc7, 0x41, 0x8e, 0xe5, 0x01, 0x7f,
89220 + 0x7d, 0xa6, 0x92, 0xe3, 0xea, 0x8b, 0x8d, 0xfe, 0xba, 0x4c, 0xd0, 0x5f,
89221 + 0x57, 0x84, 0xdf, 0x5d, 0x04, 0x7e, 0x4c, 0xf1, 0x65, 0x41, 0xdb, 0x6f,
89222 + 0xac, 0x54, 0xbd, 0x8d, 0x07, 0xfd, 0xcf, 0x8f, 0xa9, 0x66, 0x19, 0xea,
89223 + 0x7e, 0x0a, 0x9b, 0x78, 0x7c, 0xc6, 0xe9, 0x3f, 0x4e, 0xd8, 0xaf, 0x5e,
89224 + 0x8b, 0x62, 0x1f, 0xe9, 0x73, 0x17, 0xd9, 0xc2, 0xaf, 0xdb, 0x80, 0x03,
89225 + 0x99, 0x70, 0x48, 0x17, 0x3d, 0x34, 0x31, 0xb0, 0xa7, 0x48, 0x31, 0x5f,
89226 + 0x4a, 0x52, 0x10, 0x53, 0xa3, 0x94, 0xd6, 0x90, 0xce, 0xb8, 0x60, 0x2e,
89227 + 0xac, 0xe8, 0xe4, 0xbe, 0xec, 0x29, 0xcb, 0xaf, 0x69, 0x13, 0x45, 0xd2,
89228 + 0xd9, 0xc3, 0x25, 0x1f, 0x06, 0x08, 0x0f, 0x2c, 0x20, 0x0c, 0xf9, 0x20,
89229 + 0xd9, 0xc5, 0x03, 0xa3, 0x0e, 0xa2, 0x8f, 0xc7, 0x25, 0x91, 0x5c, 0x54,
89230 + 0xc1, 0xa2, 0x0f, 0x4d, 0xb1, 0x5d, 0x92, 0x1d, 0x91, 0x2d, 0x3e, 0x4b,
89231 + 0x39, 0xff, 0x99, 0xcf, 0x61, 0x10, 0x55, 0x31, 0xaf, 0xe6, 0xfe, 0x8a,
89232 + 0x3c, 0x06, 0xc7, 0x99, 0x67, 0xf5, 0x08, 0xa4, 0x24, 0x6e, 0xd2, 0x7f,
89233 + 0x49, 0x39, 0x81, 0x79, 0x27, 0x0c, 0x3c, 0x1e, 0xc5, 0xa3, 0x59, 0xc2,
89234 + 0x34, 0xb1, 0xcb, 0xd6, 0x3d, 0x01, 0x96, 0x01, 0xf3, 0xb3, 0xca, 0xc1,
89235 + 0xf9, 0xb3, 0x9e, 0xb0, 0xef, 0xff, 0xbb, 0xdd, 0xdd, 0x65, 0xa5, 0x6c,
89236 + 0x2c, 0x4b, 0x18, 0x9b, 0xec, 0x29, 0x75, 0xd5, 0x7e, 0x1e, 0xb4, 0xce,
89237 + 0x07, 0x38, 0x5f, 0xd7, 0x23, 0x75, 0xd5, 0x16, 0xd8, 0x96, 0xb0, 0x44,
89238 + 0x6f, 0xdd, 0xfd, 0xa0, 0x02, 0xb6, 0x87, 0xe8, 0x35, 0xf6, 0x50, 0x45,
89239 + 0x34, 0x29, 0xd8, 0x31, 0xc3, 0xf6, 0x6b, 0x5d, 0x59, 0x62, 0xfc, 0xd6,
89240 + 0xfa, 0x64, 0xb5, 0x76, 0xe4, 0x97, 0xe8, 0xa2, 0xeb, 0x01, 0x7c, 0x87,
89241 + 0xfc, 0xe8, 0x5e, 0xe2, 0x73, 0x47, 0xfb, 0xbd, 0xb6, 0xdf, 0xee, 0x28,
89242 + 0xad, 0xa1, 0xeb, 0x2c, 0xef, 0x0e, 0xec, 0xcf, 0xea, 0x48, 0x67, 0xcb,
89243 + 0x9c, 0x87, 0xc8, 0xe6, 0xe3, 0xf8, 0x11, 0xc5, 0xd9, 0x67, 0x4b, 0x8c,
89244 + 0xc9, 0x12, 0x36, 0x1e, 0xfb, 0x61, 0xa9, 0x05, 0xcf, 0x91, 0x4f, 0x3e,
89245 + 0x43, 0x31, 0xf7, 0x07, 0x36, 0x4e, 0x73, 0x8a, 0x43, 0x69, 0xc2, 0xa4,
89246 + 0x43, 0x26, 0xd2, 0xf9, 0x10, 0x3c, 0x87, 0xc3, 0xfb, 0x77, 0x08, 0xf5,
89247 + 0xc7, 0x24, 0x2f, 0xff, 0x81, 0xe9, 0xa5, 0xa8, 0x3a, 0xac, 0x4e, 0x10,
89248 + 0xdd, 0xfe, 0x47, 0xa7, 0x35, 0xc2, 0xd4, 0x41, 0xff, 0xbe, 0xbc, 0xe2,
89249 + 0xdf, 0x3b, 0x16, 0xf0, 0xef, 0x9d, 0xae, 0x27, 0x3f, 0x5a, 0xe4, 0x1f,
89250 + 0x9c, 0x0e, 0xfa, 0x77, 0xa7, 0x1b, 0xfd, 0xbb, 0xf3, 0x6d, 0x08, 0xd5,
89251 + 0xc3, 0x5c, 0x44, 0x39, 0xe2, 0xbe, 0xd1, 0x6f, 0x62, 0xa2, 0xae, 0x12,
89252 + 0xf7, 0xfb, 0xc9, 0x36, 0x6a, 0xc9, 0x0e, 0x57, 0x4a, 0xb7, 0xa1, 0xbc,
89253 + 0xb0, 0x72, 0xed, 0x3b, 0x74, 0xed, 0xa1, 0x56, 0xf8, 0xff, 0xc2, 0x8e,
89254 + 0xbd, 0xc0, 0x73, 0x64, 0x6b, 0xcf, 0xb6, 0x52, 0x5d, 0x79, 0xd5, 0xd6,
89255 + 0x9c, 0x14, 0x6f, 0x2d, 0x4b, 0x6f, 0x13, 0x08, 0xb6, 0x6e, 0x00, 0x16,
89256 + 0xcc, 0xd7, 0x92, 0xc9, 0x09, 0x67, 0x6b, 0x12, 0x4b, 0xb4, 0x8d, 0x78,
89257 + 0x42, 0xa1, 0x54, 0xd3, 0xfa, 0x75, 0xcc, 0x3d, 0x83, 0xef, 0x8c, 0x7a,
89258 + 0x90, 0xda, 0xac, 0x60, 0x9a, 0xb0, 0xca, 0x76, 0x9a, 0x7f, 0x59, 0xac,
89259 + 0x59, 0x99, 0x21, 0x3d, 0x24, 0x15, 0xbe, 0x46, 0x3e, 0xd1, 0xba, 0x8a,
89260 + 0x7c, 0xa2, 0xb2, 0xfe, 0xd3, 0xa4, 0xaf, 0xdc, 0x4c, 0x14, 0x7b, 0x4b,
89261 + 0x3f, 0x91, 0x2a, 0xf9, 0x45, 0x9d, 0x48, 0xe2, 0xac, 0x3d, 0xf6, 0xe9,
89262 + 0xec, 0x1b, 0x56, 0xc8, 0xb6, 0x3b, 0x81, 0xc7, 0x56, 0x44, 0xf6, 0xff,
89263 + 0x27, 0xa9, 0x81, 0xf8, 0x22, 0xd9, 0x65, 0xed, 0x3a, 0xb2, 0x76, 0xb1,
89264 + 0xf6, 0x2f, 0xf0, 0x23, 0x85, 0x65, 0x3b, 0x20, 0xf6, 0x53, 0xbd, 0x4a,
89265 + 0xa5, 0x53, 0xed, 0x02, 0xed, 0x30, 0x9e, 0xe9, 0xe6, 0x6b, 0x01, 0xff,
89266 + 0x81, 0xb1, 0xa4, 0x14, 0xd0, 0xa0, 0xb8, 0x8c, 0x0e, 0x71, 0x60, 0x7a,
89267 + 0x91, 0xff, 0xd1, 0xb1, 0x0d, 0xe2, 0xd1, 0xe9, 0x46, 0xff, 0x60, 0xba,
89268 + 0x53, 0x0c, 0xe6, 0x37, 0x0b, 0x73, 0xe2, 0x5b, 0xc2, 0x9c, 0x4e, 0x09,
89269 + 0x33, 0xdf, 0x43, 0x9f, 0x5b, 0xc4, 0x58, 0x7e, 0x40, 0xec, 0xcd, 0xf3,
89270 + 0xfc, 0xa4, 0x2b, 0x5a, 0xe3, 0x87, 0x14, 0x7b, 0x9f, 0xa3, 0xd8, 0xfb,
89271 + 0x2c, 0xc5, 0xde, 0x67, 0xc8, 0xde, 0x7f, 0x70, 0x15, 0xe3, 0xb2, 0x8d,
89272 + 0x27, 0x19, 0x9b, 0xf8, 0xff, 0xbc, 0x78, 0x86, 0xf4, 0xcd, 0xb2, 0xfb,
89273 + 0x37, 0x64, 0xdb, 0x2c, 0x93, 0x87, 0x38, 0x57, 0x90, 0x9e, 0xde, 0xb7,
89274 + 0x6d, 0xf9, 0xb1, 0x15, 0x8c, 0xa5, 0x06, 0xc4, 0x56, 0xa2, 0x2f, 0xe9,
89275 + 0x24, 0x0c, 0xa4, 0x11, 0x3e, 0xc9, 0x0e, 0x88, 0xbb, 0xf3, 0x7c, 0xfd,
89276 + 0x20, 0x76, 0x52, 0x4d, 0x78, 0x28, 0x16, 0xee, 0xee, 0x25, 0xec, 0xb4,
89277 + 0x89, 0xb0, 0xd3, 0xb2, 0x98, 0x8c, 0x8b, 0x2d, 0x9f, 0x58, 0x58, 0x88,
89278 + 0xe4, 0xfd, 0x71, 0x75, 0x62, 0xa2, 0x92, 0x6f, 0x73, 0x19, 0x70, 0xdd,
89279 + 0x8e, 0xda, 0x1a, 0x4d, 0x3d, 0x91, 0x44, 0x78, 0x7f, 0x5c, 0x82, 0xe9,
89280 + 0x36, 0x5c, 0xb8, 0xcf, 0xae, 0x15, 0xd7, 0x63, 0x74, 0x54, 0x60, 0x5b,
89281 + 0x6b, 0xf2, 0x8f, 0x5c, 0x24, 0xab, 0xb7, 0xdb, 0x11, 0x20, 0xf5, 0x0a,
89282 + 0x99, 0xea, 0xfa, 0x4e, 0x92, 0x5e, 0x07, 0xe5, 0xdc, 0x27, 0xb2, 0xab,
89283 + 0xd0, 0xd0, 0x2a, 0x93, 0x0e, 0x9d, 0xb8, 0xb3, 0x78, 0x13, 0xe9, 0x31,
89284 + 0x72, 0xe4, 0x79, 0x78, 0xfd, 0x2f, 0x8c, 0x19, 0x18, 0xca, 0xe2, 0x7b,
89285 + 0x3e, 0xaa, 0xe1, 0xee, 0x25, 0xfc, 0xf4, 0x03, 0xa2, 0x61, 0x63, 0x6b,
89286 + 0xa4, 0x93, 0x6a, 0x79, 0xc5, 0x6b, 0xb8, 0x31, 0xd2, 0xe4, 0x87, 0xa2,
89287 + 0xa5, 0xc4, 0x2b, 0xf9, 0xc8, 0x91, 0x1d, 0xd2, 0xb7, 0xc4, 0xcf, 0xa7,
89288 + 0x0d, 0x3c, 0x5a, 0xea, 0x11, 0x7f, 0x31, 0x2d, 0x83, 0x74, 0x43, 0x71,
89289 + 0x4b, 0xc7, 0x11, 0xa2, 0xcb, 0x45, 0x18, 0xc9, 0xf5, 0xfb, 0x02, 0x8b,
89290 + 0xb5, 0x24, 0xbe, 0xb3, 0x8a, 0x7d, 0xa1, 0x12, 0xd3, 0x9c, 0xab, 0x80,
89291 + 0xfd, 0x64, 0x93, 0x0d, 0x99, 0x0e, 0xb1, 0x84, 0xbe, 0x5f, 0xa4, 0xbc,
89292 + 0x96, 0x94, 0x3a, 0x45, 0x03, 0x61, 0xd3, 0x85, 0x93, 0x5b, 0xc4, 0x82,
89293 + 0x22, 0x63, 0x51, 0x28, 0x0b, 0x49, 0x46, 0x0b, 0x8b, 0x17, 0x1d, 0x95,
89294 + 0x1a, 0xc0, 0xc5, 0xb6, 0x64, 0xfa, 0x0c, 0xd9, 0x7f, 0x88, 0x62, 0xfb,
89295 + 0x8e, 0x58, 0x27, 0xe1, 0x64, 0xbe, 0x3e, 0x20, 0x86, 0x48, 0x8e, 0x13,
89296 + 0x2e, 0xdb, 0x76, 0xfc, 0x4f, 0x8c, 0xc1, 0xd5, 0x60, 0x20, 0xe4, 0xa6,
89297 + 0xdc, 0xf1, 0xdf, 0xdb, 0x22, 0xe6, 0xf3, 0x52, 0x97, 0xc8, 0xe5, 0x03,
89298 + 0xfe, 0x23, 0x63, 0x9c, 0x67, 0x3a, 0xc4, 0x11, 0xd2, 0x79, 0x96, 0x74,
89299 + 0x9e, 0x25, 0x9d, 0x67, 0x48, 0xe7, 0x99, 0x2f, 0xd1, 0xf9, 0x3e, 0xd2,
89300 + 0xf9, 0xee, 0xfc, 0xaf, 0x6c, 0x1d, 0x3a, 0x0d, 0x03, 0x59, 0xca, 0xcb,
89301 + 0x23, 0x4d, 0x15, 0xfe, 0x3e, 0x24, 0x59, 0xbc, 0x14, 0xfb, 0x86, 0x13,
89302 + 0x5e, 0x83, 0x62, 0x6b, 0x17, 0x3d, 0xf3, 0x95, 0x39, 0x1b, 0x57, 0xfc,
89303 + 0xc3, 0x63, 0x1d, 0x62, 0x98, 0xfc, 0x6e, 0x84, 0xe6, 0x1f, 0x21, 0xbf,
89304 + 0x1b, 0x4c, 0xff, 0x9f, 0xd8, 0x0d, 0xdb, 0x1d, 0x4c, 0x2f, 0xe5, 0xad,
89305 + 0x6a, 0xb2, 0x4b, 0xa7, 0xc1, 0x36, 0xb4, 0x59, 0x24, 0x8f, 0x7e, 0x4b,
89306 + 0x24, 0x8f, 0xa5, 0x44, 0xb2, 0xd0, 0x43, 0x9f, 0x5b, 0xc4, 0x2d, 0x76,
89307 + 0x1d, 0x3a, 0x20, 0x3a, 0x0a, 0x01, 0xff, 0x38, 0xad, 0x33, 0x4e, 0x7c,
89308 + 0x3c, 0x46, 0xeb, 0x3c, 0x66, 0xdb, 0x2e, 0x15, 0x99, 0x5e, 0x5e, 0x8b,
89309 + 0xed, 0x8c, 0xed, 0xeb, 0x32, 0xd1, 0xce, 0xbe, 0x71, 0xb5, 0xc7, 0x43,
89310 + 0x7f, 0x37, 0x38, 0xa0, 0xed, 0x74, 0x56, 0x78, 0xe2, 0xdc, 0xcf, 0xb9,
89311 + 0x9e, 0xe3, 0xb0, 0x62, 0xd7, 0x82, 0xcf, 0x5e, 0xc5, 0x00, 0x8c, 0x07,
89312 + 0x20, 0x2f, 0x30, 0xb6, 0x18, 0xdf, 0x69, 0xfa, 0x1f, 0x34, 0x5f, 0x3f,
89313 + 0xf4, 0x55, 0x90, 0x03, 0xc6, 0x5f, 0x1a, 0x63, 0x4d, 0x14, 0xa7, 0x69,
89314 + 0x4e, 0x39, 0x03, 0x68, 0x19, 0x81, 0xdd, 0x09, 0x41, 0x38, 0x76, 0x11,
89315 + 0xf9, 0x25, 0xd3, 0xaf, 0x76, 0x52, 0x36, 0xc1, 0xd2, 0x21, 0xc8, 0x4b,
89316 + 0x8c, 0x9d, 0xb0, 0xb2, 0x90, 0x6b, 0x8d, 0x3e, 0x5c, 0x19, 0x0a, 0x07,
89317 + 0x3b, 0xa1, 0xa6, 0x2e, 0x38, 0xd4, 0x32, 0xe5, 0xb7, 0xfe, 0xdd, 0x42,
89318 + 0xed, 0x9b, 0x15, 0xdc, 0x27, 0x62, 0xec, 0xbe, 0x13, 0x2d, 0x36, 0x86,
89319 + 0xef, 0x43, 0x73, 0x1e, 0x54, 0x87, 0x0b, 0xbc, 0x43, 0x73, 0xbe, 0xa8,
89320 + 0x7f, 0xc0, 0x39, 0x21, 0x49, 0x58, 0xf0, 0x0b, 0x73, 0x81, 0x70, 0x0c,
89321 + 0xcf, 0xc3, 0x73, 0x84, 0x95, 0x3e, 0x9a, 0xf7, 0x4d, 0x47, 0x73, 0xff,
89322 + 0xa0, 0x50, 0x13, 0x5f, 0x9c, 0x6f, 0x59, 0x1e, 0x62, 0x59, 0xc6, 0xb4,
89323 + 0xaa, 0x35, 0x2f, 0xe3, 0x21, 0xe9, 0x1d, 0x4d, 0x4b, 0xbe, 0x86, 0x10,
89324 + 0x96, 0x51, 0x9d, 0x1c, 0x2d, 0x32, 0x0f, 0xbb, 0x70, 0x46, 0x57, 0xbb,
89325 + 0xa9, 0x1a, 0xa5, 0xba, 0xa5, 0x03, 0x07, 0x29, 0xf6, 0x3e, 0x5a, 0xe2,
89326 + 0x3e, 0xd7, 0x80, 0x58, 0x3e, 0x44, 0x7e, 0x69, 0xdb, 0x13, 0xe4, 0x06,
89327 + 0xe3, 0x61, 0xdc, 0x40, 0xeb, 0xfb, 0xa9, 0xf6, 0x79, 0x9d, 0xd6, 0x97,
89328 + 0x32, 0xea, 0x00, 0xad, 0x9f, 0x7a, 0x43, 0x84, 0x67, 0x89, 0xaf, 0x9e,
89329 + 0x75, 0x8e, 0xe6, 0xbe, 0x5d, 0x42, 0x4d, 0x12, 0xe9, 0xe4, 0xc7, 0xbc,
89330 + 0xf6, 0xc3, 0xcc, 0x0b, 0x7d, 0x52, 0x9d, 0x43, 0x76, 0xd4, 0x54, 0x90,
89331 + 0x45, 0x64, 0x78, 0x3d, 0xf6, 0x4e, 0xad, 0xc7, 0x1e, 0xf2, 0xc7, 0x03,
89332 + 0x7a, 0x2d, 0x42, 0x75, 0xa8, 0xa9, 0xd5, 0x30, 0x7b, 0x41, 0x13, 0x8e,
89333 + 0x1d, 0x2d, 0x8d, 0x64, 0xc7, 0xa7, 0x1b, 0xaa, 0xf0, 0x91, 0xd5, 0xab,
89334 + 0xad, 0xef, 0xa4, 0x88, 0x78, 0x83, 0x07, 0xe3, 0x0e, 0xf2, 0xef, 0x5f,
89335 + 0xfc, 0x9a, 0x02, 0xaa, 0xc7, 0x60, 0xdc, 0x96, 0x10, 0x97, 0xf2, 0x67,
89336 + 0x9d, 0x15, 0x3f, 0x68, 0xc2, 0x15, 0x05, 0xb5, 0x41, 0x6d, 0x39, 0x66,
89337 + 0x15, 0x99, 0xe2, 0x85, 0x69, 0xd7, 0x64, 0x37, 0xe7, 0xba, 0xd1, 0x40,
89338 + 0xf5, 0xf1, 0x9d, 0xb1, 0x5f, 0x5b, 0x9f, 0x2c, 0xe6, 0xe7, 0x4e, 0x7a,
89339 + 0x2a, 0xb1, 0xf3, 0xcb, 0xe6, 0x88, 0x53, 0xbc, 0x69, 0xa6, 0x7a, 0xb6,
89340 + 0x9a, 0x82, 0x74, 0x27, 0xe5, 0x23, 0xb5, 0x27, 0x4d, 0xf5, 0x68, 0x5f,
89341 + 0xa4, 0x59, 0x77, 0x08, 0x37, 0xca, 0x81, 0x70, 0x7f, 0x2f, 0x92, 0xdb,
89342 + 0xfd, 0x73, 0x74, 0x3c, 0x2b, 0x34, 0x17, 0x3d, 0xc7, 0xf3, 0x5c, 0x63,
89343 + 0x4f, 0x27, 0xc9, 0x9e, 0xf8, 0x3e, 0x7f, 0xbf, 0x7a, 0x5f, 0xfe, 0x8a,
89344 + 0xf1, 0x97, 0xff, 0xe4, 0x8f, 0x97, 0x7d, 0xd9, 0xf5, 0x8f, 0xbf, 0xe4,
89345 + 0xfa, 0xff, 0xae, 0xae, 0x2f, 0xd7, 0x39, 0x6d, 0xcc, 0x90, 0x94, 0xb8,
89346 + 0x8f, 0xe9, 0x34, 0x2e, 0xaf, 0xd9, 0xa3, 0xfd, 0x0e, 0xc5, 0x34, 0xee,
89347 + 0x63, 0x70, 0x9e, 0x3e, 0x6f, 0xf7, 0x31, 0x4e, 0x7d, 0x0e, 0xb3, 0x72,
89348 + 0x6c, 0xf1, 0x88, 0xea, 0x11, 0xd3, 0xaa, 0xd7, 0xbe, 0x4d, 0x75, 0xcd,
89349 + 0x2e, 0xf4, 0xc6, 0x74, 0x0c, 0x67, 0xd5, 0xee, 0xdb, 0xa0, 0x25, 0x37,
89350 + 0x0b, 0x9a, 0xa8, 0xe8, 0x11, 0x8e, 0x91, 0xb9, 0x7b, 0xba, 0x49, 0xb5,
89351 + 0x5a, 0x19, 0x55, 0x14, 0x9b, 0x9c, 0x9a, 0x22, 0xa3, 0x18, 0x90, 0x9d,
89352 + 0xc5, 0xa0, 0xec, 0x2e, 0x36, 0xca, 0x55, 0x34, 0xce, 0x37, 0xa2, 0xce,
89353 + 0xde, 0x86, 0x5d, 0x98, 0x6d, 0xf3, 0x9a, 0x0d, 0x86, 0xaa, 0x34, 0x38,
89354 + 0x76, 0x61, 0x4f, 0x8c, 0x9f, 0xed, 0xa0, 0x9a, 0x0d, 0xa2, 0x2e, 0x43,
89355 + 0xc8, 0xd8, 0x10, 0xd8, 0xdb, 0xae, 0x0e, 0x2c, 0x95, 0xb4, 0xce, 0x5f,
89356 + 0x09, 0xa7, 0xec, 0x29, 0x42, 0xf8, 0x33, 0x12, 0x8e, 0xb4, 0xc3, 0xe3,
89357 + 0x59, 0xa5, 0xf6, 0x9d, 0x16, 0x03, 0x78, 0x2a, 0x16, 0xe9, 0xde, 0x26,
89358 + 0x42, 0xb2, 0x97, 0xee, 0xb9, 0x32, 0x14, 0x7f, 0x33, 0xa6, 0xc7, 0xb5,
89359 + 0x4a, 0x0d, 0x4a, 0x22, 0x89, 0x5e, 0x4d, 0xd3, 0x47, 0x20, 0xd3, 0x9a,
89360 + 0x10, 0x55, 0x19, 0x75, 0xf6, 0x4d, 0xc2, 0x54, 0x9f, 0x2c, 0x1b, 0x40,
89361 + 0x6b, 0x5b, 0x64, 0x7f, 0x8f, 0xa4, 0xc9, 0x84, 0xf5, 0x84, 0x33, 0xe3,
89362 + 0xc3, 0xca, 0xc3, 0xf3, 0x7d, 0x1d, 0xcb, 0xfa, 0x30, 0x56, 0x26, 0xbd,
89363 + 0x40, 0xae, 0x29, 0x46, 0x65, 0x1f, 0xe1, 0xfa, 0xe6, 0xc3, 0x8c, 0xb3,
89364 + 0x2c, 0x6b, 0x47, 0xac, 0xfc, 0x75, 0x2f, 0x5a, 0x88, 0xc7, 0x6e, 0x4c,
89365 + 0xa5, 0x19, 0x77, 0x19, 0x98, 0xa4, 0x9a, 0x48, 0x1b, 0x6a, 0xc4, 0x71,
89366 + 0x8a, 0x43, 0x33, 0x69, 0xee, 0xff, 0xf4, 0x91, 0x8c, 0x7b, 0x88, 0xfe,
89367 + 0x2d, 0x54, 0x0f, 0xa7, 0x28, 0x7e, 0xb1, 0x8c, 0x7b, 0xc9, 0xee, 0x21,
89368 + 0x7b, 0x8d, 0x3a, 0xe3, 0xe6, 0x61, 0xc8, 0x1e, 0xc3, 0x6b, 0x5c, 0x77,
89369 + 0x18, 0x75, 0x94, 0xf7, 0x0d, 0xaa, 0x78, 0x10, 0x8d, 0x44, 0xf4, 0x8b,
89370 + 0x88, 0x04, 0x5f, 0x24, 0x7d, 0x0c, 0x6a, 0xc0, 0x6e, 0xbb, 0xd6, 0x76,
89371 + 0xc2, 0xcc, 0x73, 0x0d, 0x0d, 0x4f, 0x55, 0x7b, 0x1d, 0xde, 0xc9, 0x45,
89372 + 0xed, 0x1e, 0x92, 0x49, 0xf5, 0xcf, 0x0b, 0xba, 0x9a, 0x9a, 0xa0, 0xe7,
89373 + 0xb6, 0x2a, 0xff, 0x65, 0x5f, 0x75, 0x1c, 0x32, 0xc5, 0x34, 0xb2, 0xbd,
89374 + 0x3f, 0xf5, 0xbe, 0x49, 0x36, 0x7a, 0xfb, 0xd8, 0x9f, 0x79, 0xaf, 0xc4,
89375 + 0x27, 0xbc, 0x1f, 0xc4, 0x2d, 0x2b, 0x41, 0x78, 0xb4, 0x87, 0xea, 0xed,
89376 + 0x0f, 0x87, 0x4c, 0xef, 0xc5, 0x38, 0xf7, 0x81, 0x9d, 0xf8, 0x3d, 0xfa,
89377 + 0xfd, 0xe4, 0x90, 0x8c, 0x4d, 0x85, 0x06, 0xb8, 0x86, 0x1d, 0x98, 0xd2,
89378 + 0x6f, 0x44, 0xaf, 0x22, 0xe1, 0xee, 0xe8, 0x49, 0xb2, 0x49, 0x89, 0xc6,
89379 + 0x1c, 0xa2, 0xdf, 0xdc, 0xd3, 0x7a, 0x0c, 0xdb, 0x94, 0x69, 0xef, 0x3b,
89380 + 0x71, 0xa6, 0x17, 0x4c, 0xaf, 0x2c, 0x69, 0xb7, 0x62, 0xeb, 0x6d, 0x5c,
89381 + 0x5b, 0xd9, 0xff, 0x9e, 0x17, 0xdb, 0xeb, 0x71, 0x3c, 0xd7, 0x80, 0xe7,
89382 + 0x73, 0xa6, 0xe7, 0xb5, 0xf6, 0x28, 0xfa, 0x86, 0x2c, 0xbc, 0xac, 0x9b,
89383 + 0x03, 0x55, 0x64, 0xe7, 0x09, 0xaa, 0xaf, 0xc2, 0x6d, 0xdc, 0x4b, 0x40,
89384 + 0xc4, 0x81, 0x48, 0x3f, 0x81, 0xcc, 0x3b, 0x28, 0x74, 0xa5, 0x6a, 0xa8,
89385 + 0x4e, 0x3b, 0x27, 0x2c, 0xf7, 0xf6, 0x76, 0x27, 0xd1, 0x00, 0x6c, 0x28,
89386 + 0xb4, 0x90, 0xdc, 0xa2, 0xd8, 0x14, 0x91, 0xb1, 0xb1, 0xa0, 0xe3, 0xf9,
89387 + 0xb4, 0x0f, 0xb7, 0x17, 0xe2, 0x84, 0xbd, 0x15, 0xa2, 0x3d, 0x81, 0x52,
89388 + 0x3a, 0x80, 0x6f, 0x14, 0x1a, 0x49, 0xde, 0x41, 0xdc, 0x58, 0x08, 0xe1,
89389 + 0x44, 0x9a, 0xf3, 0xb7, 0xe1, 0xd9, 0x1a, 0x6f, 0x44, 0x67, 0x41, 0xc3,
89390 + 0x74, 0x1a, 0x9e, 0x07, 0xe2, 0x21, 0x74, 0x14, 0xa2, 0x28, 0x10, 0x86,
89391 + 0xbb, 0x95, 0xe6, 0xbc, 0x9d, 0x74, 0xd2, 0x52, 0x08, 0x60, 0x69, 0x84,
89392 + 0x22, 0x72, 0xc1, 0x27, 0x06, 0x08, 0x5b, 0x25, 0x0a, 0xf5, 0xb8, 0x38,
89393 + 0xcc, 0x76, 0xae, 0x18, 0x7b, 0x72, 0x0a, 0x42, 0x05, 0xac, 0x94, 0x01,
89394 + 0x0a, 0xd6, 0x91, 0x54, 0x81, 0xe8, 0x3d, 0xd8, 0x5e, 0xe9, 0xe1, 0x2e,
89395 + 0x2f, 0x7c, 0xc6, 0x6f, 0x2d, 0xe9, 0xe9, 0xca, 0xe1, 0x69, 0xef, 0x27,
89396 + 0x71, 0x8e, 0x4d, 0x9f, 0xae, 0x79, 0xfd, 0x30, 0x10, 0x1d, 0x67, 0xde,
89397 + 0xec, 0xd8, 0xc8, 0xf1, 0xb0, 0x45, 0xc6, 0xaf, 0x2c, 0xaa, 0x41, 0x43,
89398 + 0x53, 0xbc, 0x57, 0xa0, 0xf9, 0x88, 0x0e, 0x05, 0x49, 0x5a, 0xfb, 0x96,
89399 + 0xc2, 0x0f, 0xad, 0xad, 0x0b, 0x83, 0xb8, 0x39, 0x52, 0x91, 0xd5, 0x39,
89400 + 0xd2, 0xe1, 0xe4, 0x70, 0x03, 0x66, 0x88, 0x06, 0x97, 0xe1, 0x36, 0x8e,
89401 + 0x8d, 0x59, 0xd8, 0xa0, 0x9b, 0xde, 0xd7, 0xda, 0x97, 0xe3, 0xfe, 0xc3,
89402 + 0x83, 0x67, 0xdd, 0xa4, 0xd7, 0x59, 0xfd, 0x0e, 0x3c, 0x3a, 0x8e, 0xaf,
89403 + 0x35, 0x00, 0x8f, 0x04, 0xc1, 0x3d, 0x6b, 0x35, 0x74, 0x02, 0x91, 0xce,
89404 + 0x07, 0x10, 0x51, 0x34, 0xa1, 0xea, 0x2f, 0x0b, 0x24, 0xab, 0x8d, 0xc8,
89405 + 0xd9, 0x5b, 0x80, 0x33, 0x6e, 0xf2, 0xe0, 0xdb, 0x0b, 0x4e, 0x92, 0x51,
89406 + 0x10, 0xa5, 0x61, 0x37, 0x1c, 0xe4, 0x27, 0x97, 0x34, 0x6c, 0xa8, 0x25,
89407 + 0x59, 0x3b, 0x84, 0x4c, 0x7a, 0x6e, 0xc1, 0xb1, 0xa1, 0x79, 0x59, 0xf9,
89408 + 0x70, 0x13, 0xc9, 0xf0, 0xa9, 0x21, 0x6b, 0x97, 0x16, 0x0b, 0x90, 0xac,
89409 + 0x15, 0xa2, 0x6f, 0x5e, 0x4e, 0x2c, 0xbf, 0x79, 0x39, 0xdd, 0x81, 0x3d,
89410 + 0x33, 0x2c, 0xb7, 0xff, 0x1b, 0x79, 0x4d, 0xdb, 0x76, 0xb7, 0x61, 0x2c,
89411 + 0x8a, 0x86, 0xc3, 0x57, 0x65, 0xc7, 0xf4, 0x3d, 0x42, 0x7c, 0x7c, 0xcf,
89412 + 0xbf, 0x3a, 0xd2, 0xf7, 0xbe, 0xf0, 0x11, 0x3d, 0x0a, 0xe9, 0xe6, 0x03,
89413 + 0x17, 0x63, 0x77, 0x92, 0xc9, 0x55, 0x19, 0x07, 0x49, 0xc6, 0xc1, 0x71,
89414 + 0x96, 0xf5, 0xa7, 0x6b, 0xae, 0x90, 0x7c, 0x5f, 0x27, 0x5c, 0x76, 0x43,
89415 + 0x2c, 0x8a, 0x9a, 0xc3, 0x6a, 0xb2, 0xc1, 0x11, 0x4e, 0xd4, 0x0a, 0x50,
89416 + 0x55, 0x82, 0x96, 0x1a, 0x7c, 0xc8, 0x72, 0xd6, 0x49, 0xce, 0xdf, 0x1b,
89417 + 0x24, 0x7e, 0xd6, 0xd3, 0x7c, 0x1b, 0x48, 0xce, 0x49, 0xe2, 0xff, 0x16,
89418 + 0x7b, 0xde, 0x46, 0x9a, 0x77, 0x0b, 0xd5, 0x1e, 0xd3, 0xde, 0x4b, 0x44,
89419 + 0x4f, 0xf4, 0x33, 0x5a, 0x08, 0x8d, 0x47, 0x82, 0xef, 0x53, 0x8d, 0x7d,
89420 + 0xa3, 0x3d, 0x4e, 0xa1, 0x71, 0x4c, 0xfb, 0xcf, 0xab, 0x24, 0xed, 0xcb,
89421 + 0xfa, 0xcd, 0xdf, 0x02, 0xf7, 0x1c, 0x4c, 0xf4, 0x50, 0x1d, 0xb1, 0x85,
89422 + 0x6a, 0x25, 0x99, 0x72, 0x9b, 0x89, 0x1f, 0xc4, 0xd5, 0x68, 0x9d, 0xe0,
89423 + 0xf8, 0x67, 0x92, 0x1f, 0x96, 0xa9, 0x4e, 0x0a, 0x87, 0x66, 0x10, 0x94,
89424 + 0xa5, 0xa2, 0x4c, 0x78, 0xb0, 0x51, 0x76, 0x14, 0xc9, 0x5f, 0x83, 0x3d,
89425 + 0x84, 0xa7, 0x9d, 0x78, 0x31, 0xef, 0xc4, 0x2b, 0xe9, 0x2d, 0x38, 0x50,
89426 + 0xf2, 0x10, 0x6e, 0x36, 0x3d, 0xce, 0x55, 0x13, 0xee, 0x4a, 0x4c, 0x5e,
89427 + 0x86, 0xae, 0x91, 0x87, 0x51, 0x9d, 0x71, 0x76, 0x53, 0x3e, 0xd5, 0x6f,
89428 + 0x21, 0xb9, 0x6c, 0x28, 0xf2, 0xfd, 0x46, 0x64, 0xd2, 0x29, 0xc2, 0x40,
89429 + 0x61, 0xaa, 0x81, 0x9c, 0x98, 0x68, 0x68, 0xb4, 0xfb, 0xba, 0x39, 0xba,
89430 + 0x96, 0x2b, 0x7d, 0xb1, 0xdf, 0x7c, 0xc7, 0x5c, 0x9f, 0xb9, 0x0f, 0xfb,
89431 + 0xb2, 0x3d, 0x84, 0x4d, 0xb7, 0x50, 0x7c, 0xaf, 0xd0, 0x38, 0x1d, 0xef,
89432 + 0xc6, 0xbe, 0xbc, 0x71, 0x35, 0x7e, 0x4c, 0xda, 0xf1, 0xa3, 0x1f, 0x55,
89433 + 0xed, 0xbc, 0x7f, 0xb5, 0x05, 0x77, 0xa5, 0x81, 0xf7, 0xd2, 0xdc, 0x4f,
89434 + 0x24, 0x4c, 0x41, 0xf9, 0xe0, 0x90, 0xce, 0x39, 0x74, 0x0b, 0x96, 0xe6,
89435 + 0x2d, 0xe4, 0x75, 0x0b, 0x67, 0x75, 0x8d, 0x72, 0x34, 0xe7, 0xea, 0x01,
89436 + 0xa1, 0x51, 0x7e, 0x36, 0x9d, 0xfd, 0x88, 0xb4, 0xb3, 0x8e, 0x1e, 0x9e,
89437 + 0xdb, 0x87, 0xea, 0xb7, 0xf7, 0xa1, 0x66, 0xd2, 0x0e, 0x3c, 0x45, 0x8a,
89438 + 0x78, 0x3e, 0x1b, 0x0e, 0xbd, 0x07, 0x6b, 0x97, 0xc3, 0x50, 0x13, 0x4e,
89439 + 0x07, 0xef, 0xcf, 0xf0, 0xfe, 0x94, 0xd6, 0xbd, 0xd4, 0xa1, 0xea, 0x45,
89440 + 0xd1, 0xdc, 0xf3, 0x16, 0xca, 0x1b, 0x65, 0xa8, 0xa1, 0xd7, 0x10, 0x89,
89441 + 0x76, 0xf2, 0x1e, 0x44, 0xa9, 0x92, 0xbb, 0x97, 0xcd, 0xe5, 0x6e, 0x2d,
89442 + 0xef, 0x15, 0xe1, 0x61, 0x09, 0x13, 0x53, 0x96, 0x29, 0x91, 0xfd, 0x4e,
89443 + 0xd1, 0x9c, 0x3f, 0xce, 0xee, 0x42, 0x36, 0x66, 0x59, 0xb7, 0xc7, 0xb5,
89444 + 0xbe, 0x06, 0x07, 0xfe, 0x90, 0x32, 0x39, 0xc8, 0xe6, 0x53, 0xe4, 0x6b,
89445 + 0xa1, 0x1d, 0xed, 0xa6, 0xe5, 0xb6, 0xeb, 0x0a, 0xee, 0x4f, 0x76, 0x89,
89446 + 0x96, 0xc2, 0x16, 0xb1, 0x9c, 0xb0, 0x5b, 0xe8, 0xd8, 0x66, 0xd1, 0x74,
89447 + 0xb4, 0x82, 0xdd, 0x22, 0x85, 0xcf, 0x7a, 0xa8, 0x37, 0xa7, 0x2d, 0xa4,
89448 + 0x89, 0xaf, 0xa7, 0xfe, 0x0e, 0x5f, 0xac, 0x8b, 0x7e, 0x5c, 0xd7, 0xce,
89449 + 0xbe, 0xf8, 0x30, 0x8e, 0xa5, 0xd9, 0xce, 0xfb, 0xb1, 0x87, 0xe4, 0xb3,
89450 + 0x62, 0x88, 0xf7, 0xc3, 0xd4, 0xb3, 0x83, 0x08, 0xf7, 0xbd, 0x2a, 0xd4,
89451 + 0x72, 0x01, 0xcd, 0x7a, 0x8d, 0x83, 0xe3, 0xab, 0x3a, 0xd0, 0xe4, 0xa8,
89452 + 0xd0, 0x9f, 0xc8, 0x83, 0xe2, 0x69, 0x85, 0x87, 0x95, 0xf9, 0xa5, 0x64,
89453 + 0xab, 0xa6, 0xe7, 0x52, 0xbc, 0xb9, 0xbf, 0x1a, 0x1b, 0xc4, 0x07, 0xd3,
89454 + 0x21, 0x78, 0x0f, 0x27, 0x17, 0xfa, 0xd1, 0x21, 0xde, 0xb3, 0xeb, 0xc5,
89455 + 0x4e, 0xf1, 0x4e, 0xbe, 0x5b, 0x5c, 0x9e, 0xe8, 0x42, 0x64, 0xf8, 0x3e,
89456 + 0xf1, 0xf6, 0x04, 0xd3, 0xd9, 0x23, 0xce, 0x4f, 0x73, 0x9f, 0xd4, 0xc2,
89457 + 0x1e, 0x9d, 0xfb, 0xa2, 0x8b, 0xab, 0xe0, 0xb7, 0x70, 0x4c, 0x67, 0x7d,
89458 + 0x72, 0x9f, 0xb0, 0xd2, 0x5f, 0xda, 0x10, 0xcf, 0x59, 0x4e, 0x8d, 0x7b,
89459 + 0xc5, 0x41, 0x9b, 0xdf, 0x29, 0xc2, 0xd1, 0xd3, 0x13, 0x5b, 0xc4, 0xf1,
89460 + 0x7c, 0x85, 0xd7, 0xc9, 0x3c, 0xdb, 0xaf, 0x4c, 0x3a, 0xfe, 0x62, 0x9e,
89461 + 0x36, 0xa1, 0xb4, 0x07, 0xe1, 0xb6, 0xfb, 0x51, 0x16, 0x46, 0xf4, 0x48,
89462 + 0xe8, 0x65, 0x04, 0xe1, 0x2c, 0xb2, 0x6d, 0x5b, 0x78, 0x5a, 0x77, 0xc1,
89463 + 0x31, 0x22, 0x93, 0x8c, 0xc8, 0x96, 0xfc, 0x2e, 0x48, 0x93, 0x5c, 0x1b,
89464 + 0x7c, 0xbd, 0x8a, 0xfb, 0x14, 0x21, 0x89, 0xbf, 0x7f, 0xd1, 0xe6, 0x5c,
89465 + 0x94, 0x0f, 0xb8, 0xbf, 0xfe, 0x57, 0xee, 0x8a, 0xed, 0xb1, 0x5d, 0xcd,
89466 + 0xf7, 0xc4, 0x29, 0xd7, 0xb6, 0x73, 0x2f, 0xdc, 0x83, 0x99, 0x9c, 0x9b,
89467 + 0x5b, 0x14, 0x1e, 0x77, 0xbb, 0x85, 0x0b, 0xba, 0x93, 0xea, 0x97, 0x87,
89468 + 0x28, 0x47, 0x49, 0x90, 0xb5, 0x3b, 0x50, 0x1c, 0x73, 0x4a, 0xbc, 0x5f,
89469 + 0xf5, 0xb3, 0x18, 0xf7, 0x10, 0x80, 0x43, 0xc4, 0xc3, 0xf7, 0x73, 0x21,
89470 + 0x6c, 0xa2, 0xba, 0x2b, 0x64, 0xd7, 0x18, 0xbf, 0x87, 0x53, 0x39, 0x87,
89471 + 0xa0, 0xba, 0xc2, 0x91, 0x58, 0x6d, 0xe1, 0x4a, 0x5b, 0x24, 0xca, 0x7d,
89472 + 0x68, 0x85, 0x72, 0xd6, 0xde, 0x7c, 0x1d, 0x7e, 0x96, 0xab, 0xc3, 0x2b,
89473 + 0x39, 0x0b, 0x07, 0x63, 0x83, 0x3d, 0x5e, 0x8a, 0x95, 0xcb, 0x62, 0x2e,
89474 + 0xec, 0x88, 0x98, 0x8a, 0x17, 0x51, 0x5c, 0x48, 0x5c, 0x87, 0x54, 0x20,
89475 + 0xdc, 0x39, 0x88, 0x7a, 0xbc, 0x91, 0x03, 0x61, 0x09, 0x78, 0x96, 0xd2,
89476 + 0x1c, 0x6f, 0xc7, 0xcc, 0x7e, 0x17, 0xe1, 0xd8, 0x9f, 0x0b, 0xc4, 0x6b,
89477 + 0x60, 0xb9, 0xcf, 0xc4, 0x29, 0x57, 0x17, 0xea, 0xd0, 0x95, 0xab, 0x47,
89478 + 0x0f, 0xe5, 0xac, 0x75, 0xab, 0xe3, 0x78, 0x2b, 0xeb, 0x13, 0x2b, 0xb3,
89479 + 0x83, 0x3d, 0x0a, 0xcd, 0xe9, 0x6a, 0x53, 0xfb, 0x9f, 0x22, 0xe0, 0x26,
89480 + 0x23, 0x4c, 0xe6, 0x8e, 0x07, 0xfc, 0x14, 0x77, 0x8f, 0x8b, 0x4f, 0xf1,
89481 + 0x04, 0xd9, 0xe3, 0x3d, 0xba, 0x5a, 0xbe, 0xe4, 0x88, 0x9c, 0xdd, 0x08,
89482 + 0x75, 0xe0, 0x16, 0x61, 0x46, 0x6b, 0x29, 0x9e, 0x34, 0x54, 0x62, 0x85,
89483 + 0x19, 0x11, 0x32, 0x61, 0x73, 0x27, 0x3c, 0x9a, 0x89, 0xce, 0x76, 0x96,
89484 + 0xa9, 0x07, 0x9e, 0xa3, 0x64, 0x47, 0xd2, 0x17, 0xfb, 0xfb, 0x75, 0x78,
89485 + 0x9d, 0xf2, 0xe5, 0xb9, 0x1c, 0xf7, 0xe6, 0xdd, 0xc6, 0xbb, 0x94, 0x03,
89486 + 0x5e, 0x8a, 0x0d, 0x86, 0x38, 0xf6, 0xe7, 0x63, 0xf8, 0xe7, 0x64, 0x96,
89487 + 0x8d, 0x3e, 0x5a, 0xf3, 0x2e, 0xc1, 0xeb, 0x20, 0xb9, 0xc4, 0xe0, 0xbe,
89488 + 0x9c, 0xcd, 0x0f, 0xc5, 0x63, 0xe6, 0xe9, 0xff, 0x27, 0xed, 0x8f, 0x54,
89489 + 0xc1, 0x5b, 0x4f, 0xba, 0x9c, 0xef, 0x69, 0x5e, 0xdb, 0xcf, 0xe4, 0x7a,
89490 + 0xa6, 0x82, 0x0f, 0xdd, 0x46, 0xb5, 0x78, 0x21, 0xc7, 0x36, 0x67, 0xe1,
89491 + 0x19, 0x5d, 0xa7, 0xda, 0x85, 0x6b, 0xf2, 0x7e, 0xaa, 0x5f, 0xb8, 0xcf,
89492 + 0x64, 0x7a, 0xce, 0x10, 0x85, 0xfb, 0x73, 0x58, 0x2b, 0xc3, 0xb1, 0xa2,
89493 + 0x0a, 0xe3, 0x98, 0x70, 0x3a, 0x09, 0x73, 0x70, 0xac, 0x65, 0x7f, 0x52,
89494 + 0x0c, 0x6d, 0x82, 0xeb, 0xcf, 0x4e, 0x98, 0xb6, 0x1f, 0x57, 0x8b, 0xfb,
89495 + 0xc9, 0x46, 0x5e, 0x8c, 0x55, 0x61, 0x82, 0xea, 0x1f, 0xc9, 0x30, 0x3d,
89496 + 0xdf, 0xa5, 0xe7, 0x13, 0xa3, 0xd8, 0x17, 0x84, 0xe3, 0x4f, 0x14, 0xfc,
89497 + 0x19, 0xde, 0x74, 0xc9, 0x74, 0x1d, 0x9e, 0xee, 0xb8, 0xe9, 0xdd, 0x18,
89498 + 0xaf, 0x16, 0xb7, 0xe6, 0x5a, 0xf0, 0xfe, 0x58, 0x1d, 0xd9, 0x77, 0x3d,
89499 + 0x96, 0x8c, 0x04, 0xf1, 0x36, 0xd1, 0x32, 0x40, 0xb4, 0x7c, 0xd2, 0x66,
89500 + 0x0e, 0x34, 0x40, 0xed, 0xa7, 0xba, 0xa8, 0x9b, 0xfb, 0xcd, 0x4f, 0xeb,
89501 + 0x6a, 0xe7, 0x6d, 0xc2, 0x0b, 0x2d, 0x92, 0x24, 0xd9, 0x5b, 0xd6, 0xb0,
89502 + 0xde, 0xac, 0xfb, 0xc0, 0xfd, 0xa3, 0x3b, 0x70, 0x68, 0x86, 0x69, 0x71,
89503 + 0x1b, 0xcb, 0xa7, 0xf9, 0x53, 0x36, 0xae, 0xb3, 0x3f, 0xbd, 0x73, 0x9f,
89504 + 0x30, 0x42, 0xf6, 0xe7, 0xa7, 0x6b, 0x42, 0xd3, 0xdc, 0xa7, 0x0e, 0x9b,
89505 + 0x6e, 0xf1, 0x53, 0x17, 0xf7, 0xab, 0x93, 0xe0, 0xff, 0x57, 0x5d, 0x95,
89506 + 0x7e, 0xdf, 0x1d, 0x30, 0xed, 0x1e, 0xca, 0x15, 0xbb, 0x97, 0x1d, 0x22,
89507 + 0x37, 0x90, 0x89, 0x3f, 0x99, 0x30, 0x57, 0x20, 0x46, 0x05, 0x7c, 0xbd,
89508 + 0x6c, 0x2e, 0x31, 0x7a, 0xa8, 0x46, 0x90, 0x89, 0x5f, 0x13, 0xfb, 0xda,
89509 + 0x05, 0x0e, 0x69, 0x06, 0x5e, 0xcb, 0x73, 0x2c, 0x77, 0xe2, 0xfb, 0x69,
89510 + 0x35, 0x94, 0x12, 0xe1, 0xce, 0x5b, 0x84, 0x84, 0x50, 0x43, 0x0f, 0x0e,
89511 + 0x51, 0x5e, 0x99, 0x4e, 0x73, 0x1e, 0x71, 0xda, 0xe7, 0x05, 0x6a, 0x29,
89512 + 0x0e, 0x7d, 0x38, 0x54, 0x89, 0xfb, 0x85, 0xb8, 0xba, 0xff, 0xf7, 0x48,
89513 + 0xa7, 0x4f, 0x17, 0x78, 0x4e, 0x13, 0x9f, 0xac, 0x66, 0x1f, 0x56, 0xa3,
89514 + 0x29, 0xe9, 0x5e, 0x84, 0xa6, 0x38, 0xb6, 0xd0, 0x72, 0xb4, 0xd6, 0x91,
89515 + 0xac, 0x1b, 0xdd, 0xf1, 0x2e, 0xd1, 0x53, 0xfc, 0x67, 0xbc, 0x27, 0xa1,
89516 + 0x2c, 0x30, 0x36, 0x8b, 0xf5, 0x93, 0xdc, 0x53, 0xdc, 0x22, 0xba, 0x8b,
89517 + 0xdc, 0x57, 0x1c, 0x10, 0xbf, 0x5f, 0x64, 0x9f, 0x9f, 0xef, 0x2f, 0xce,
89518 + 0xeb, 0x9f, 0xfb, 0x8a, 0xa6, 0xe7, 0x05, 0x92, 0xfd, 0x03, 0x39, 0x8e,
89519 + 0xc9, 0x8e, 0xfb, 0xfd, 0x68, 0xc3, 0x84, 0x0b, 0x9e, 0xd3, 0xf1, 0xaf,
89520 + 0xe0, 0x76, 0xc2, 0x07, 0x4b, 0xb4, 0x8a, 0xfe, 0xd6, 0x4d, 0x48, 0x48,
89521 + 0xb4, 0x91, 0xd0, 0x17, 0xb0, 0x4e, 0x7b, 0x29, 0x9e, 0x65, 0xac, 0xbe,
89522 + 0x00, 0xeb, 0x92, 0xed, 0xcd, 0x2e, 0xf7, 0x28, 0x0e, 0x9b, 0x94, 0x57,
89523 + 0x3c, 0x98, 0xce, 0x2d, 0xa2, 0xda, 0xc0, 0xc2, 0x7e, 0xbd, 0x06, 0x55,
89524 + 0x76, 0x0c, 0xf0, 0x10, 0x9e, 0x84, 0xec, 0xa3, 0x79, 0xd2, 0xc3, 0x32,
89525 + 0xbc, 0x74, 0xef, 0x8c, 0x4e, 0x72, 0x69, 0xaf, 0xcc, 0xdd, 0x3c, 0xb1,
89526 + 0x12, 0x07, 0xc9, 0xe3, 0x6b, 0xb4, 0x28, 0x86, 0x14, 0x1f, 0xc5, 0x9a,
89527 + 0x3b, 0xe6, 0xe6, 0xf4, 0xd0, 0x60, 0x5e, 0xaf, 0xbf, 0xaa, 0xa2, 0x87,
89528 + 0x35, 0x72, 0xa5, 0x06, 0x93, 0xcd, 0x6a, 0x5a, 0x6b, 0x47, 0xfb, 0x16,
89529 + 0x74, 0x0e, 0xf9, 0xc4, 0x2b, 0xe9, 0xbb, 0xad, 0x50, 0x1d, 0x8d, 0x23,
89530 + 0x9b, 0x75, 0xcf, 0xd1, 0xdb, 0x34, 0x21, 0xf3, 0x58, 0xee, 0x79, 0xe0,
89531 + 0xc1, 0x9c, 0x84, 0xc0, 0xdc, 0xf5, 0xf8, 0x44, 0x08, 0x7a, 0x6b, 0x35,
89532 + 0x50, 0x2f, 0xe8, 0x1a, 0xcf, 0xcd, 0x6b, 0xc8, 0xa8, 0x23, 0x3f, 0xb9,
89533 + 0x33, 0x9e, 0xc0, 0xbb, 0x59, 0x27, 0x36, 0x52, 0x9e, 0xbf, 0x31, 0x6d,
89534 + 0xe0, 0x42, 0x29, 0x60, 0xcf, 0x21, 0x19, 0xf3, 0xe3, 0x9c, 0x34, 0xce,
89535 + 0x83, 0xc9, 0x89, 0x2f, 0xd2, 0x17, 0x20, 0x9a, 0x7f, 0x42, 0xdf, 0xf9,
89536 + 0xde, 0x45, 0xbb, 0x3f, 0x70, 0xea, 0x9a, 0xba, 0x4a, 0x1a, 0xe1, 0x9e,
89537 + 0x52, 0x25, 0x17, 0x74, 0xe8, 0xac, 0x4b, 0x3f, 0x66, 0x47, 0x4d, 0x5c,
89538 + 0x58, 0x5d, 0x8b, 0x4f, 0x46, 0x9b, 0x70, 0x7f, 0xce, 0x8b, 0x4b, 0xa3,
89539 + 0x16, 0x56, 0xb6, 0xe1, 0xee, 0x20, 0x61, 0xb1, 0x5a, 0xf2, 0xfb, 0xd7,
89540 + 0xa8, 0xf6, 0xa1, 0x78, 0x4a, 0x94, 0x46, 0x12, 0x1b, 0xc8, 0xae, 0xa3,
89541 + 0x31, 0xa4, 0x6e, 0x8a, 0x47, 0x42, 0x17, 0xf1, 0x3d, 0x8b, 0x62, 0xb1,
89542 + 0xe2, 0x30, 0xba, 0x84, 0xd3, 0xde, 0x67, 0xdc, 0x62, 0xef, 0x4b, 0x4a,
89543 + 0x93, 0x03, 0xc2, 0x51, 0xbc, 0xd6, 0xaf, 0xbf, 0x2c, 0x0f, 0x71, 0xee,
89544 + 0xe1, 0x1e, 0xc6, 0x88, 0xe5, 0xd2, 0xb8, 0x57, 0xb3, 0x59, 0xec, 0x9d,
89545 + 0xb8, 0x9a, 0x9b, 0xae, 0xe6, 0xa3, 0xdd, 0x73, 0x79, 0x68, 0x30, 0xff,
89546 + 0x8b, 0x2f, 0xe0, 0xa8, 0xd0, 0xdc, 0x7e, 0x07, 0xe7, 0x1f, 0x8f, 0x78,
89547 + 0x93, 0xcc, 0x61, 0x1f, 0xf9, 0xe0, 0x49, 0xfd, 0x74, 0x90, 0x32, 0x04,
89548 + 0x9c, 0xad, 0x02, 0x0f, 0xf2, 0x59, 0x93, 0x80, 0x85, 0xcd, 0x7a, 0xc5,
89549 + 0x1e, 0xda, 0xda, 0x5d, 0xe8, 0xa3, 0x9c, 0xe4, 0x8a, 0xf9, 0xc8, 0xd7,
89550 + 0x15, 0xbc, 0xaa, 0xb3, 0x0d, 0x6f, 0x9e, 0xcb, 0x49, 0xbc, 0x7f, 0x5e,
89551 + 0xd9, 0xeb, 0xfe, 0x7c, 0xdf, 0x7b, 0xde, 0x36, 0x75, 0x24, 0x17, 0xc2,
89552 + 0xfb, 0x76, 0x5c, 0xa3, 0xfa, 0x41, 0xa6, 0xda, 0x61, 0x23, 0x12, 0x0b,
89553 + 0x54, 0x6e, 0x6d, 0x10, 0xf6, 0x36, 0xf1, 0xef, 0xdb, 0xfb, 0x70, 0xdf,
89554 + 0x88, 0x84, 0x6a, 0x8d, 0xe3, 0xac, 0x89, 0x43, 0x75, 0x1c, 0xa7, 0xba,
89555 + 0xb0, 0x6b, 0xc4, 0x23, 0xce, 0xe4, 0x9c, 0x78, 0xa2, 0xfb, 0x11, 0x2c,
89556 + 0x68, 0xbd, 0x07, 0xb0, 0x6d, 0x90, 0xbf, 0x7f, 0x0b, 0xa9, 0x45, 0xbc,
89557 + 0x3e, 0xf7, 0xda, 0x04, 0x7c, 0xad, 0xcc, 0x07, 0xbc, 0xef, 0xd3, 0xfc,
89558 + 0xdb, 0x86, 0x9c, 0xe2, 0x62, 0xfa, 0x3f, 0x5b, 0x27, 0x02, 0x8c, 0x13,
89559 + 0xf8, 0x5e, 0x0d, 0xcc, 0x3a, 0x1e, 0xcb, 0x3a, 0xf4, 0x51, 0x6d, 0xda,
89560 + 0x87, 0x21, 0xa2, 0xeb, 0x9c, 0x3d, 0xd7, 0x95, 0x39, 0xfa, 0x7d, 0xa2,
89561 + 0x36, 0x23, 0x9b, 0x41, 0xa2, 0x45, 0x59, 0xdd, 0x8d, 0xda, 0xe2, 0xb5,
89562 + 0xf9, 0xb6, 0xc6, 0xc3, 0xfd, 0x4a, 0xd2, 0x15, 0xe5, 0x84, 0x5e, 0xbc,
89563 + 0x9b, 0x16, 0x78, 0xc7, 0xb6, 0xc1, 0x5e, 0x34, 0xe5, 0x6b, 0x00, 0x3b,
89564 + 0x86, 0xf0, 0xb8, 0xaf, 0x57, 0x6c, 0x5b, 0xea, 0xc3, 0x03, 0xc4, 0x4b,
89565 + 0x0d, 0xf1, 0xf2, 0x61, 0x6c, 0x29, 0xad, 0xc3, 0xd7, 0xfe, 0x9d, 0x3c,
89566 + 0x77, 0xd6, 0x68, 0x6e, 0x2e, 0x4a, 0x18, 0x7e, 0xae, 0xf7, 0x22, 0xd8,
89567 + 0x39, 0x12, 0xe9, 0xf1, 0x49, 0x6c, 0x87, 0x11, 0xdc, 0x3b, 0x79, 0x2b,
89568 + 0xdd, 0xe7, 0xb9, 0x82, 0xb8, 0x2b, 0xe3, 0x14, 0x6f, 0x51, 0xbd, 0x74,
89569 + 0x2a, 0x2d, 0x2d, 0x72, 0xe0, 0x39, 0xeb, 0x89, 0xc0, 0x2e, 0xdc, 0xa4,
89570 + 0x77, 0x61, 0x3b, 0xd9, 0x60, 0x47, 0xd3, 0x2e, 0x8c, 0x92, 0x0d, 0x6c,
89571 + 0xab, 0xa7, 0x1a, 0x2e, 0x56, 0xb2, 0x7a, 0x03, 0x2c, 0x47, 0x81, 0x4e,
89572 + 0xba, 0x5e, 0x47, 0x75, 0x9d, 0x14, 0x23, 0x6b, 0x23, 0xbf, 0x90, 0x35,
89573 + 0x35, 0x97, 0xc4, 0xef, 0xd8, 0x6b, 0xd6, 0x51, 0x9e, 0x76, 0x31, 0x3e,
89574 + 0xf0, 0x33, 0x4e, 0xf8, 0x22, 0x3d, 0xa6, 0x55, 0xa5, 0x69, 0xd1, 0x8d,
89575 + 0x52, 0x53, 0x6e, 0x86, 0x6c, 0x76, 0x7d, 0xeb, 0xb5, 0xcf, 0xcd, 0xcb,
89576 + 0x48, 0x87, 0xbb, 0x75, 0xca, 0x2a, 0x2b, 0x83, 0x50, 0x5a, 0xaf, 0xd5,
89577 + 0xfd, 0xfc, 0x1c, 0x4c, 0x73, 0x25, 0xae, 0x85, 0xa4, 0x88, 0x72, 0x37,
89578 + 0x2e, 0xd0, 0x1a, 0x41, 0x6c, 0x2d, 0x76, 0xa1, 0x77, 0xc4, 0xf1, 0x19,
89579 + 0x3e, 0xf1, 0xb3, 0x2d, 0x7f, 0xc6, 0xff, 0x8e, 0x91, 0x48, 0xa7, 0x77,
89580 + 0x8e, 0xff, 0xed, 0x93, 0x9f, 0xcd, 0x35, 0x90, 0xe1, 0xbc, 0xca, 0xf3,
89581 + 0xf1, 0xb9, 0xa1, 0x79, 0xf9, 0x06, 0xf1, 0x80, 0x3d, 0xdf, 0x61, 0x0f,
89582 + 0xfb, 0xb0, 0x8b, 0x7c, 0x7d, 0x43, 0xab, 0x89, 0x57, 0x13, 0xf7, 0x5b,
89583 + 0x3b, 0x6c, 0x19, 0xdc, 0x6f, 0x3f, 0xdf, 0xd9, 0x74, 0x76, 0x0e, 0xfb,
89584 + 0x54, 0xfa, 0xb0, 0xa7, 0x4a, 0x2d, 0xf6, 0x1e, 0xc3, 0x0f, 0x29, 0x0f,
89585 + 0x3e, 0xf7, 0xb9, 0x3e, 0xdf, 0x76, 0x17, 0xef, 0x4d, 0x3c, 0x5d, 0x92,
89586 + 0x85, 0x73, 0xa4, 0x5a, 0xb8, 0x46, 0x98, 0xb6, 0x8f, 0xe5, 0x8a, 0x8f,
89587 + 0xfd, 0x57, 0x24, 0x03, 0xbc, 0xcf, 0x58, 0xb1, 0xff, 0x68, 0xfb, 0xbd,
89588 + 0xc0, 0x51, 0xd3, 0x53, 0xb5, 0x0a, 0x54, 0xeb, 0x77, 0xdb, 0xf6, 0xb0,
89589 + 0xd0, 0x08, 0xac, 0x7d, 0xae, 0x89, 0xeb, 0x7d, 0xee, 0x0d, 0x6a, 0x6b,
89590 + 0xc7, 0x08, 0x80, 0x6e, 0x55, 0x78, 0x4d, 0xf5, 0x04, 0xf7, 0xeb, 0xb9,
89591 + 0x8f, 0x4f, 0x71, 0xd7, 0x5b, 0xb7, 0xca, 0xf4, 0x2c, 0x58, 0xe5, 0x14,
89592 + 0x8b, 0x33, 0x3d, 0x64, 0x7b, 0x1a, 0x12, 0x19, 0xd3, 0xdb, 0xb0, 0x2a,
89593 + 0x84, 0x87, 0x32, 0xf3, 0x31, 0xb9, 0x05, 0x2d, 0xe3, 0xc0, 0x0f, 0x33,
89594 + 0x41, 0x34, 0x8f, 0x86, 0xfb, 0x6f, 0x95, 0xc2, 0x03, 0xb3, 0x12, 0xdf,
89595 + 0xbb, 0xbc, 0x66, 0xa5, 0x8d, 0xc5, 0x3f, 0x5a, 0xb3, 0xc2, 0xfe, 0x0c,
89596 + 0x18, 0xd7, 0xe7, 0xef, 0x40, 0x7a, 0xc6, 0x33, 0x5b, 0x96, 0x2c, 0x3c,
89597 + 0x14, 0x93, 0x70, 0xb3, 0xfe, 0x6f, 0xc9, 0xb7, 0x04, 0xd9, 0xc6, 0xab,
89598 + 0x9c, 0x83, 0xed, 0x60, 0xb6, 0x64, 0x95, 0x86, 0x55, 0x99, 0x3a, 0x8a,
89599 + 0x49, 0xf5, 0x14, 0x9f, 0xea, 0x70, 0x85, 0x62, 0xd2, 0x8a, 0x36, 0x0b,
89600 + 0x8b, 0xdb, 0xcc, 0xbe, 0xc5, 0xe0, 0x3d, 0x68, 0xd5, 0x2c, 0x0a, 0xb5,
89601 + 0xa7, 0x4b, 0x52, 0xbb, 0xeb, 0x25, 0x05, 0xdb, 0x23, 0x3c, 0x77, 0xd0,
89602 + 0x58, 0x95, 0xaf, 0xe4, 0xd3, 0x4a, 0x5e, 0x75, 0xce, 0xe5, 0x53, 0xb7,
89603 + 0xa1, 0x4f, 0xab, 0x3f, 0x4e, 0x49, 0xbc, 0x6f, 0xd2, 0x83, 0x91, 0x6c,
89604 + 0x0a, 0x7b, 0xb3, 0x21, 0xfc, 0x3a, 0xe3, 0x26, 0xdb, 0x08, 0xeb, 0x3f,
89605 + 0x00, 0x8f, 0xf1, 0x19, 0xb1, 0x7c, 0x38, 0xfa, 0x90, 0xf4, 0x13, 0x94,
89606 + 0x9d, 0xea, 0x11, 0xaa, 0x12, 0x08, 0x37, 0x34, 0x87, 0x5e, 0xc4, 0x4f,
89607 + 0xec, 0x7d, 0x36, 0xa0, 0xc2, 0x43, 0x53, 0x1e, 0xc8, 0x65, 0x3c, 0xb3,
89608 + 0xb0, 0x7b, 0xb2, 0xbc, 0x6f, 0x2c, 0x61, 0xbd, 0x7e, 0x3f, 0xc9, 0x59,
89609 + 0xa0, 0xa9, 0xb5, 0x0e, 0xe5, 0x2d, 0x4e, 0x8c, 0x64, 0x38, 0x0f, 0x7f,
89610 + 0xbc, 0x46, 0x1e, 0x42, 0x79, 0x6e, 0x4f, 0x34, 0xe1, 0xa0, 0x0c, 0xfd,
89611 + 0x72, 0x11, 0x38, 0x48, 0xb1, 0x63, 0x53, 0xec, 0x37, 0x56, 0x05, 0x8f,
89612 + 0xca, 0xfe, 0xf4, 0x98, 0xc0, 0x02, 0x2d, 0x49, 0xf2, 0x70, 0xfa, 0x0f,
89613 + 0xa5, 0xa3, 0x76, 0x0e, 0x1e, 0xa1, 0xf9, 0x93, 0xf6, 0xfc, 0x91, 0xfd,
89614 + 0x4b, 0x25, 0x09, 0xd7, 0xb7, 0x1e, 0xc5, 0xc4, 0xc2, 0x0a, 0x0d, 0x41,
89615 + 0xc2, 0x04, 0x5c, 0xcb, 0xd6, 0x13, 0x8f, 0x9b, 0x1f, 0xe3, 0xbe, 0xe6,
89616 + 0x6f, 0xd7, 0xdc, 0x30, 0xce, 0x7e, 0xfd, 0xf1, 0x9a, 0x77, 0xd3, 0x6a,
89617 + 0xb2, 0x9e, 0xea, 0x87, 0x6a, 0x92, 0xc3, 0xbd, 0x43, 0xdc, 0x4f, 0xa8,
89618 + 0x37, 0x5e, 0x3f, 0xcc, 0x79, 0x59, 0x1d, 0x68, 0x10, 0x3e, 0x71, 0x73,
89619 + 0x46, 0xed, 0x63, 0xc2, 0x2f, 0x47, 0xd4, 0x20, 0xc9, 0xae, 0xf3, 0x1e,
89620 + 0xd1, 0xc7, 0x35, 0x8b, 0x2d, 0xb7, 0xeb, 0xf2, 0x15, 0xdc, 0x11, 0x9e,
89621 + 0xc3, 0x21, 0x51, 0x1b, 0x77, 0x58, 0xd6, 0x9e, 0x18, 0xe7, 0x71, 0xfb,
89622 + 0x4c, 0x00, 0x5d, 0xaf, 0x33, 0x96, 0x52, 0x6d, 0x31, 0xc8, 0xf4, 0xf1,
89623 + 0x19, 0x0f, 0x89, 0x6a, 0xd1, 0xec, 0xab, 0x73, 0xb8, 0xc4, 0x87, 0x7d,
89624 + 0x74, 0xbd, 0x6c, 0xe3, 0x13, 0x3e, 0xa7, 0xe8, 0x35, 0x94, 0xc7, 0xf8,
89625 + 0x6c, 0xe3, 0x6f, 0xd7, 0xac, 0x1f, 0x53, 0x43, 0x12, 0xf1, 0xb1, 0x97,
89626 + 0xf7, 0xe7, 0x69, 0xce, 0x69, 0x9d, 0xe9, 0xbe, 0xbc, 0x86, 0xfb, 0xb1,
89627 + 0x4b, 0x88, 0x6e, 0x2b, 0x1b, 0x66, 0x0c, 0x6a, 0xdb, 0x4a, 0x22, 0x4f,
89628 + 0x55, 0xfd, 0xe2, 0x0a, 0xaf, 0x2e, 0xd2, 0xc9, 0xb1, 0x74, 0x12, 0xa7,
89629 + 0xe2, 0x15, 0xfd, 0xac, 0xcb, 0x7f, 0x03, 0xa9, 0xfa, 0x0e, 0xe4, 0xb2,
89630 + 0x8a, 0x7f, 0x43, 0xa6, 0x03, 0xa3, 0xa4, 0xc3, 0xbb, 0x8b, 0x41, 0x7f,
89631 + 0x47, 0x46, 0x43, 0x6f, 0x91, 0xeb, 0x2b, 0x18, 0x7b, 0xc6, 0x26, 0xe7,
89632 + 0xea, 0xe0, 0x4a, 0x2e, 0x39, 0x90, 0xa9, 0xd8, 0x5c, 0x38, 0xef, 0x99,
89633 + 0x0d, 0x89, 0xca, 0xbc, 0x32, 0xad, 0x23, 0x0f, 0xfd, 0x89, 0x85, 0x85,
89634 + 0x6c, 0x0b, 0x77, 0x60, 0x6c, 0xdc, 0x6f, 0x2e, 0x36, 0x14, 0xac, 0x6a,
89635 + 0xfd, 0x73, 0x7a, 0xb6, 0x05, 0x1f, 0x1f, 0xff, 0x3a, 0xca, 0xdf, 0x24,
89636 + 0x7c, 0x94, 0x49, 0xa2, 0xb9, 0xf5, 0x16, 0xa4, 0xfe, 0x40, 0xc6, 0xd3,
89637 + 0x19, 0x1f, 0x9e, 0xcf, 0x54, 0xf6, 0xec, 0x7f, 0x94, 0x25, 0x3f, 0x24,
89638 + 0x1f, 0x78, 0xee, 0x4b, 0xf7, 0x49, 0x29, 0x9e, 0x3b, 0x78, 0x0f, 0xff,
89639 + 0x1f, 0x1e, 0x77, 0xde, 0x1e, 0xe7, 0x11, 0x75, 0x23, 0xf3, 0xf3, 0x5a,
89640 + 0xd0, 0x5a, 0xff, 0xbe, 0x67, 0x08, 0xf3, 0x81, 0x62, 0x48, 0xe5, 0x8c,
89641 + 0x83, 0x90, 0x47, 0xec, 0x7d, 0x23, 0xc2, 0xb9, 0x11, 0xfd, 0x02, 0x4c,
89642 + 0xb8, 0x09, 0x5f, 0x2d, 0x25, 0x59, 0x68, 0x99, 0x80, 0x5f, 0x2a, 0x2a,
89643 + 0xf4, 0xdf, 0xe8, 0x77, 0x92, 0x7c, 0x9c, 0xc5, 0x8f, 0x28, 0xa6, 0xb0,
89644 + 0x4f, 0x55, 0x72, 0x9c, 0x54, 0x7c, 0xc4, 0x4b, 0xc0, 0x87, 0x3e, 0x2b,
89645 + 0x36, 0x1d, 0xca, 0x2f, 0xf6, 0x32, 0x96, 0xc9, 0x65, 0x2a, 0xbf, 0x23,
89646 + 0x57, 0x7f, 0x93, 0x9e, 0x6d, 0x99, 0x8d, 0xd0, 0x6f, 0x96, 0xc5, 0x73,
89647 + 0x56, 0x6a, 0x33, 0xcb, 0x2b, 0xe0, 0x7f, 0x83, 0xe4, 0x3f, 0x46, 0x34,
89648 + 0x66, 0x69, 0x8d, 0xd7, 0x69, 0xcd, 0x4c, 0xf1, 0x10, 0x8d, 0xe1, 0x7b,
89649 + 0x24, 0x67, 0xdb, 0x76, 0x0f, 0x7b, 0xf9, 0x7c, 0xc2, 0xf3, 0x19, 0x60,
89650 + 0x30, 0x6b, 0xaa, 0xce, 0xb9, 0x73, 0x9d, 0x83, 0x94, 0x2f, 0xab, 0x28,
89651 + 0x16, 0xbd, 0x19, 0xdf, 0x8e, 0x1b, 0x73, 0x6a, 0xd2, 0x24, 0x3c, 0x96,
89652 + 0x52, 0x20, 0x48, 0x77, 0x64, 0xc3, 0x01, 0xe3, 0xdd, 0x74, 0x23, 0xf1,
89653 + 0x14, 0x0e, 0x5d, 0xa0, 0xf1, 0xa6, 0x53, 0xc6, 0x81, 0x51, 0x07, 0x2e,
89654 + 0xf0, 0x1e, 0xb2, 0xa8, 0x3c, 0x6f, 0x82, 0xc7, 0xce, 0x7f, 0xaf, 0xa6,
89655 + 0xba, 0x2e, 0x9c, 0xa0, 0xac, 0x6a, 0xd6, 0x10, 0x6e, 0xcf, 0xb7, 0x3f,
89656 + 0x82, 0x43, 0x54, 0xeb, 0xef, 0x88, 0x85, 0x90, 0xac, 0x8b, 0x53, 0xbd,
89657 + 0xd1, 0xdc, 0x7f, 0x09, 0xff, 0xcd, 0x2a, 0xf3, 0x3e, 0xbc, 0x08, 0x27,
89658 + 0x2e, 0xe1, 0x53, 0xcb, 0xa1, 0x69, 0x67, 0xa7, 0xa0, 0x95, 0x2f, 0xa0,
89659 + 0x79, 0xe0, 0x13, 0xbc, 0x67, 0xf1, 0x1e, 0xbd, 0xec, 0x70, 0x10, 0x06,
89660 + 0x0c, 0x2b, 0x4e, 0x04, 0x50, 0x0e, 0x38, 0xb0, 0x49, 0xe7, 0xde, 0xb4,
89661 + 0x3a, 0xf0, 0x24, 0x61, 0xf9, 0x77, 0x44, 0x73, 0xdf, 0x87, 0x38, 0x6f,
89662 + 0x4d, 0xd4, 0xf1, 0xba, 0x02, 0x89, 0xeb, 0x9b, 0xcf, 0xba, 0xa1, 0x76,
89663 + 0xba, 0x84, 0x96, 0x68, 0x70, 0xfc, 0x95, 0x75, 0x3e, 0xf0, 0xa9, 0xa5,
89664 + 0x45, 0x3e, 0x25, 0x1c, 0xa4, 0x05, 0x27, 0xc9, 0xf6, 0xfb, 0x30, 0x4f,
89665 + 0x9b, 0xa8, 0x86, 0x57, 0x27, 0x1a, 0x18, 0xf7, 0x99, 0x9e, 0x7d, 0x44,
89666 + 0xdb, 0x6b, 0x84, 0x03, 0x76, 0xc4, 0x2e, 0x59, 0xc9, 0x85, 0x7c, 0xfe,
89667 + 0x4f, 0xa9, 0xae, 0xf4, 0xc0, 0xb9, 0x6f, 0x72, 0x07, 0xee, 0x4a, 0x3b,
89668 + 0x49, 0x4e, 0xf3, 0x78, 0xcd, 0x45, 0x31, 0x98, 0x63, 0x7f, 0xf9, 0x3a,
89669 + 0x2a, 0xcd, 0x24, 0x2a, 0xf1, 0xb1, 0x87, 0xe2, 0xc2, 0x6e, 0x3b, 0x17,
89670 + 0xc0, 0xbb, 0x64, 0x55, 0x2b, 0x3e, 0x19, 0x7f, 0xd3, 0x4b, 0xbe, 0xb4,
89671 + 0x4e, 0x6b, 0x83, 0x08, 0x66, 0x4c, 0x51, 0x6b, 0x38, 0xf0, 0x61, 0xbb,
89672 + 0xda, 0x29, 0x39, 0x06, 0x70, 0x7d, 0xcc, 0xb4, 0x7c, 0x9a, 0xd6, 0xd3,
89673 + 0x22, 0x22, 0xdd, 0x45, 0x11, 0x45, 0x75, 0xd1, 0x27, 0x57, 0x17, 0x5b,
89674 + 0x64, 0x6f, 0xd1, 0xf4, 0x28, 0xab, 0xb6, 0x53, 0xdd, 0xb2, 0x8b, 0x6a,
89675 + 0x5b, 0x1f, 0xd5, 0xd7, 0xaa, 0x7e, 0x11, 0x6e, 0x92, 0x7f, 0x08, 0xfb,
89676 + 0x4a, 0x06, 0x9c, 0x99, 0x9d, 0x70, 0x65, 0xc2, 0xca, 0x5e, 0xec, 0x42,
89677 + 0x32, 0x58, 0xc1, 0xb6, 0x32, 0xe9, 0xaa, 0xaa, 0x9d, 0xb1, 0xcc, 0x76,
89678 + 0x9c, 0x9f, 0x60, 0x7c, 0x9e, 0xc0, 0xd6, 0x34, 0xff, 0x86, 0xf7, 0xc5,
89679 + 0xb8, 0x81, 0x93, 0x54, 0x3b, 0x79, 0x5a, 0x1b, 0x48, 0x0f, 0x8d, 0x18,
89680 + 0x2c, 0x09, 0x36, 0x2b, 0xd2, 0x05, 0xbc, 0x27, 0xdb, 0x65, 0x1c, 0x9c,
89681 + 0xa2, 0x44, 0x42, 0xf9, 0xca, 0x99, 0x51, 0x28, 0x4e, 0xc8, 0xf0, 0x69,
89682 + 0x3e, 0xfa, 0x1d, 0xe0, 0x73, 0x4b, 0x64, 0x67, 0xbf, 0x5d, 0xd3, 0x62,
89683 + 0xc7, 0x9a, 0x7a, 0xaa, 0x75, 0xde, 0x21, 0x5e, 0x58, 0x16, 0x06, 0xaa,
89684 + 0x47, 0xe6, 0x6b, 0xc2, 0xf5, 0xb7, 0x55, 0x23, 0x48, 0x73, 0x32, 0x0e,
89685 + 0xac, 0x9c, 0x57, 0x5d, 0x1f, 0x6b, 0x45, 0x21, 0x27, 0xe6, 0x30, 0xd6,
89686 + 0xa0, 0xea, 0xc3, 0x3a, 0x1c, 0xa2, 0xda, 0xdf, 0xaf, 0x6d, 0x45, 0x46,
89687 + 0x29, 0x7b, 0x7f, 0x11, 0xe7, 0x1a, 0x00, 0xde, 0x5e, 0xc2, 0x50, 0x43,
89688 + 0xe9, 0xaf, 0x72, 0xcc, 0xf4, 0xdc, 0x1d, 0xd7, 0x71, 0x24, 0x47, 0x21,
89689 + 0x4a, 0x5b, 0x87, 0xda, 0xb6, 0x2e, 0x7c, 0x58, 0xc7, 0xf8, 0x97, 0x62,
89690 + 0x15, 0xd1, 0xb3, 0x77, 0x2a, 0x60, 0x9f, 0xab, 0xd8, 0x57, 0x9a, 0xa7,
89691 + 0xf9, 0x5a, 0x5a, 0xbf, 0x8c, 0x46, 0x96, 0xc9, 0x3f, 0x44, 0x23, 0xd9,
89692 + 0x2c, 0x61, 0x9e, 0x5c, 0xba, 0x17, 0x2f, 0xa7, 0x79, 0xde, 0x70, 0x52,
89693 + 0x17, 0x0a, 0xf7, 0xe6, 0x6d, 0x99, 0x98, 0x53, 0xbc, 0x06, 0xaf, 0x3f,
89694 + 0xbf, 0x4e, 0x80, 0x6a, 0x85, 0x7f, 0xec, 0x5a, 0x14, 0x37, 0x72, 0xeb,
89695 + 0xa8, 0xee, 0x8c, 0x42, 0xfb, 0xfd, 0x32, 0xe9, 0x83, 0x7b, 0xd5, 0x4b,
89696 + 0x09, 0xf3, 0xc2, 0xf3, 0x4a, 0x9c, 0xcf, 0x30, 0x5b, 0xbb, 0x64, 0xc3,
89697 + 0xb2, 0x5c, 0xed, 0x9a, 0xf2, 0x36, 0xd8, 0x0e, 0x7d, 0xbc, 0xe7, 0xe1,
89698 + 0xd9, 0xdb, 0xee, 0xc3, 0x41, 0xca, 0x81, 0x4f, 0xa5, 0x9b, 0x4d, 0xae,
89699 + 0xfd, 0xc0, 0x38, 0x54, 0xa4, 0xe8, 0xd9, 0x7f, 0x55, 0xcd, 0x3e, 0xbb,
89700 + 0xa7, 0xb4, 0x13, 0x52, 0xa6, 0xa7, 0x9a, 0xeb, 0x0d, 0x37, 0xd5, 0xc9,
89701 + 0x83, 0x69, 0xa6, 0xd7, 0xda, 0xe5, 0xa4, 0xb9, 0x76, 0xc7, 0xb5, 0xd9,
89702 + 0x1b, 0xc9, 0x2e, 0x1a, 0x0c, 0x96, 0x63, 0x00, 0x4f, 0xd0, 0xd8, 0x50,
89703 + 0x89, 0x65, 0x79, 0xa8, 0x9a, 0xfb, 0x9e, 0xfb, 0x48, 0xbf, 0xb5, 0xd9,
89704 + 0xca, 0x3c, 0xd9, 0x52, 0x1f, 0x96, 0x0e, 0xbd, 0x58, 0x5d, 0xa9, 0x7d,
89705 + 0xb8, 0x2e, 0xef, 0xc7, 0xbe, 0x74, 0x00, 0x53, 0xe9, 0x66, 0xe5, 0x05,
89706 + 0xfb, 0xcc, 0x40, 0xa5, 0x47, 0x36, 0x98, 0x9e, 0x1f, 0x13, 0xc0, 0xe4,
89707 + 0xd5, 0xef, 0x2c, 0x9f, 0x4a, 0xef, 0xf4, 0x94, 0x8d, 0xf9, 0x65, 0x4c,
89708 + 0x04, 0x2a, 0x78, 0x88, 0x62, 0x85, 0xf7, 0x51, 0xd2, 0xeb, 0x3b, 0xa4,
89709 + 0x57, 0x89, 0xf4, 0xfa, 0x82, 0xfe, 0x23, 0xc6, 0x2c, 0x9e, 0x3d, 0x71,
89710 + 0x1f, 0xef, 0x13, 0x99, 0x04, 0x5a, 0xec, 0x31, 0x99, 0xb8, 0x13, 0xe7,
89711 + 0x86, 0xf8, 0x6c, 0xe2, 0x47, 0x6b, 0x5e, 0x4a, 0x5b, 0xeb, 0x66, 0x62,
89712 + 0xcd, 0xa9, 0x77, 0x08, 0x4f, 0x9b, 0x7f, 0xa0, 0xea, 0xe7, 0xc9, 0x4f,
89713 + 0xb3, 0xa3, 0x7f, 0x88, 0xf3, 0x75, 0xcd, 0xca, 0xcf, 0x61, 0x7a, 0x1e,
89714 + 0x8f, 0x3f, 0x42, 0x35, 0x3f, 0xd5, 0x0d, 0x6d, 0xff, 0x92, 0x9c, 0x2c,
89715 + 0x0e, 0x87, 0xd6, 0x3c, 0xfb, 0x02, 0xfe, 0x23, 0xce, 0x2f, 0x0e, 0xeb,
89716 + 0x2f, 0x80, 0xc7, 0x54, 0xea, 0xf1, 0xf0, 0xf4, 0x7d, 0x7c, 0x9e, 0x2a,
89717 + 0x48, 0x69, 0xb4, 0xb2, 0x9f, 0x95, 0xe6, 0xfd, 0x37, 0x81, 0x89, 0x2d,
89718 + 0x54, 0x4b, 0xdb, 0xe7, 0x58, 0xe1, 0x7d, 0x92, 0xfc, 0x22, 0x3a, 0xcc,
89719 + 0xe3, 0x3f, 0x5e, 0xa3, 0xe5, 0x43, 0x70, 0x10, 0xc6, 0x49, 0x05, 0xd4,
89720 + 0x4e, 0x20, 0xe8, 0x7f, 0x32, 0x1d, 0xa4, 0x1a, 0xad, 0xb9, 0x3b, 0x2a,
89721 + 0xee, 0x9c, 0xdb, 0xf7, 0xe6, 0x3c, 0xf7, 0xf1, 0x9a, 0x63, 0x69, 0x35,
89722 + 0xf5, 0x24, 0x9a, 0x7b, 0x7c, 0xe2, 0x0e, 0xa4, 0xea, 0x9a, 0xfb, 0x4e,
89723 + 0x22, 0x9c, 0xf0, 0x08, 0x35, 0x7a, 0x1e, 0x95, 0x79, 0x96, 0xe5, 0x1d,
89724 + 0x54, 0x27, 0x72, 0x9c, 0x49, 0xe3, 0xa4, 0xe2, 0xc0, 0xf2, 0x56, 0x6d,
89725 + 0x76, 0x12, 0xf3, 0xf6, 0x52, 0x19, 0xb3, 0x2e, 0x4f, 0xe3, 0x1d, 0x0a,
89726 + 0xd5, 0xfb, 0x6e, 0x38, 0xeb, 0x79, 0x4f, 0x71, 0x27, 0x76, 0xa4, 0x39,
89727 + 0x4f, 0x93, 0x5c, 0xc8, 0x37, 0xbb, 0x23, 0x3b, 0xd1, 0x9f, 0x0f, 0xe0,
89728 + 0x50, 0x36, 0xbc, 0x7f, 0x2f, 0xe1, 0xba, 0xe1, 0x52, 0x38, 0xb4, 0x4d,
89729 + 0x04, 0x48, 0xdf, 0x54, 0xff, 0xd7, 0x07, 0xa9, 0x4e, 0x56, 0xe8, 0xbf,
89730 + 0x52, 0xcf, 0xbc, 0x44, 0xf5, 0xcc, 0x39, 0xf2, 0x35, 0xdf, 0x5c, 0xad,
89731 + 0xba, 0x6c, 0xc2, 0xc2, 0x4c, 0x6c, 0x23, 0x2e, 0xdb, 0x3a, 0x0b, 0x92,
89732 + 0x8d, 0x71, 0x2e, 0xe2, 0xb3, 0x35, 0x1e, 0xb1, 0x6d, 0xd8, 0xf4, 0x3c,
89733 + 0xd8, 0x1e, 0x44, 0x38, 0xc3, 0x98, 0x53, 0xfa, 0xa6, 0x83, 0xe4, 0x31,
89734 + 0xa5, 0xed, 0xc2, 0x86, 0xd8, 0x2e, 0xf4, 0xeb, 0x7f, 0x02, 0x77, 0x3d,
89735 + 0xc7, 0x23, 0xd9, 0xac, 0xa5, 0x79, 0x2f, 0xb5, 0x77, 0x21, 0x7c, 0x94,
89736 + 0x73, 0x30, 0x55, 0xc3, 0x43, 0xec, 0xbb, 0x3c, 0xff, 0x6d, 0xc6, 0x0a,
89737 + 0xc2, 0x15, 0x35, 0xed, 0x95, 0x3c, 0x7f, 0x7d, 0x9e, 0xcf, 0x74, 0x82,
89738 + 0x6a, 0x53, 0x78, 0xdf, 0x5a, 0x6d, 0xe0, 0x71, 0x8a, 0x31, 0x89, 0x36,
89739 + 0x17, 0xb0, 0x80, 0xcf, 0x2e, 0x57, 0xea, 0x18, 0xe6, 0x77, 0x69, 0x5e,
89740 + 0x60, 0x3a, 0x4e, 0xf6, 0xf1, 0x77, 0xce, 0x28, 0x85, 0xe6, 0xce, 0x96,
89741 + 0x72, 0xff, 0xe4, 0xb0, 0x95, 0xe4, 0xf7, 0x0d, 0xa4, 0xa0, 0x8f, 0xe2,
89742 + 0x6d, 0xb0, 0x0c, 0x2a, 0xea, 0x29, 0x2e, 0x3b, 0xb4, 0x79, 0xb9, 0xb3,
89743 + 0xac, 0x4f, 0x58, 0x13, 0x73, 0xba, 0x70, 0xd2, 0x33, 0x7b, 0xc6, 0xd4,
89744 + 0x81, 0xbd, 0x68, 0xee, 0x7f, 0x57, 0x54, 0xd9, 0x3b, 0x98, 0x93, 0x2d,
89745 + 0x48, 0x2d, 0x31, 0x9c, 0x5b, 0x3e, 0xc9, 0xae, 0x23, 0x3a, 0x2e, 0x10,
89746 + 0x08, 0x5d, 0x6f, 0xef, 0x73, 0x4d, 0xb6, 0xfc, 0x29, 0xcd, 0xcd, 0xdf,
89747 + 0xff, 0xd8, 0xc7, 0x67, 0x2e, 0x4f, 0x65, 0x9f, 0xb7, 0xa2, 0x0b, 0x2b,
89748 + 0xf2, 0x39, 0x4d, 0xbe, 0x1f, 0x34, 0x24, 0x34, 0x68, 0x91, 0xd9, 0x1e,
89749 + 0xfa, 0xfd, 0xd7, 0x79, 0x42, 0xfb, 0xab, 0xfb, 0xf0, 0xcb, 0x09, 0x03,
89750 + 0x07, 0x28, 0x0f, 0xd4, 0x6a, 0xaa, 0x32, 0x81, 0x10, 0xd7, 0xd2, 0x36,
89751 + 0xff, 0x2b, 0x27, 0xc8, 0x0f, 0xeb, 0x14, 0xbb, 0xc6, 0xa8, 0xf0, 0x77,
89752 + 0x99, 0xf8, 0x7b, 0xd0, 0xc7, 0xbe, 0xb0, 0x84, 0xfc, 0x62, 0x3f, 0xf9,
89753 + 0xeb, 0x01, 0xb2, 0x35, 0xaa, 0xe0, 0xc9, 0x0f, 0xd4, 0xfd, 0x20, 0x7f,
89754 + 0x1d, 0x4e, 0xb3, 0xfc, 0x83, 0xfe, 0x5e, 0x3e, 0xde, 0xac, 0xd9, 0x7d,
89755 + 0x55, 0x3d, 0x24, 0x71, 0xdc, 0xb5, 0xe3, 0xa9, 0x19, 0x92, 0xac, 0x6a,
89756 + 0xa6, 0x6b, 0xb0, 0x14, 0x0e, 0x7a, 0xf9, 0x5d, 0x00, 0x02, 0x87, 0xbd,
89757 + 0x7a, 0x25, 0x57, 0xce, 0x50, 0x3e, 0xba, 0x4c, 0x74, 0x1c, 0x8a, 0x35,
89758 + 0x20, 0x45, 0xf9, 0x28, 0xa3, 0x55, 0x6c, 0x49, 0x9b, 0x66, 0x8c, 0x59,
89759 + 0x6f, 0x04, 0xc7, 0xd5, 0x90, 0xcb, 0xd1, 0x3c, 0x70, 0x06, 0x3b, 0xad,
89760 + 0xf3, 0x75, 0x6c, 0x53, 0x2e, 0x1c, 0x6f, 0x99, 0xb6, 0xca, 0x01, 0xe6,
89761 + 0xd7, 0x81, 0xe7, 0x75, 0xb2, 0x99, 0xc5, 0xe1, 0xe0, 0xf3, 0x94, 0x53,
89762 + 0xa7, 0xe6, 0xf4, 0x11, 0xce, 0xcf, 0xdb, 0xe3, 0x5a, 0x96, 0x75, 0x34,
89763 + 0x05, 0x2d, 0x91, 0x47, 0x2f, 0x7d, 0x6f, 0x0a, 0x5e, 0x9e, 0xb3, 0xd5,
89764 + 0x15, 0xd3, 0xaf, 0xfb, 0xe6, 0xde, 0xcb, 0xb1, 0x9f, 0x09, 0xe5, 0xff,
89765 + 0x88, 0x7e, 0xf3, 0x9c, 0x01, 0xc6, 0x32, 0x7c, 0x56, 0xcb, 0xbb, 0xa3,
89766 + 0xdd, 0xcd, 0xfe, 0xa2, 0xf0, 0x3b, 0x09, 0x1b, 0x86, 0xb9, 0x2f, 0xcc,
89767 + 0x3d, 0x1a, 0x07, 0xf6, 0x5e, 0x7d, 0x67, 0x82, 0x3f, 0x3b, 0xb1, 0x69,
89768 + 0x98, 0x7b, 0x11, 0xa7, 0x6f, 0x90, 0xf1, 0x37, 0x94, 0x87, 0x65, 0xf6,
89769 + 0x79, 0xf2, 0xf5, 0x4f, 0xd7, 0xbc, 0x34, 0xc6, 0x39, 0x35, 0x60, 0xdc,
89770 + 0x95, 0x9e, 0xd7, 0xf1, 0x55, 0x9e, 0xce, 0xde, 0x4d, 0x71, 0x27, 0x93,
89771 + 0x56, 0x07, 0x22, 0x0e, 0x7b, 0x7f, 0x2d, 0x55, 0x14, 0x5f, 0xa5, 0x22,
89772 + 0x8d, 0xe7, 0x53, 0xfc, 0x03, 0x87, 0x43, 0xc8, 0x64, 0xbb, 0xf0, 0x8d,
89773 + 0x61, 0xcb, 0x72, 0xb7, 0x39, 0xf1, 0xca, 0x90, 0x85, 0x0f, 0x62, 0xc0,
89774 + 0xcb, 0x43, 0xe1, 0x81, 0x73, 0xc0, 0xb7, 0x6b, 0xa9, 0x46, 0x6e, 0x11,
89775 + 0x6a, 0x37, 0x61, 0x83, 0xd0, 0x7b, 0x68, 0x0e, 0xe6, 0xa1, 0x9e, 0xdd,
89776 + 0x4d, 0xf3, 0xbd, 0x58, 0x00, 0x7e, 0x59, 0xf0, 0xe2, 0x17, 0xc3, 0x3c,
89777 + 0xa7, 0x17, 0xe7, 0x8e, 0xd6, 0xfb, 0x77, 0xd2, 0x5c, 0x07, 0x29, 0xbe,
89778 + 0x77, 0x1d, 0x4b, 0x60, 0xd3, 0x61, 0x81, 0x68, 0x24, 0x81, 0xce, 0x63,
89779 + 0x35, 0xd8, 0x38, 0x2c, 0xe3, 0xfd, 0x78, 0x0d, 0x6e, 0x39, 0x3a, 0xcf,
89780 + 0x47, 0xa5, 0xaf, 0xc1, 0x67, 0x35, 0xf9, 0x1c, 0xdc, 0xc9, 0x2c, 0xc7,
89781 + 0x6c, 0xca, 0x17, 0x59, 0x8e, 0x81, 0x96, 0x15, 0x6c, 0xaf, 0xf4, 0x39,
89782 + 0x9e, 0xa6, 0xfc, 0xf1, 0x78, 0xbb, 0x16, 0x0c, 0x4a, 0x06, 0x96, 0x8f,
89783 + 0x96, 0xef, 0xac, 0x85, 0x75, 0x8a, 0xf7, 0x33, 0x3e, 0x6a, 0xb1, 0xac,
89784 + 0x4d, 0xf1, 0xc8, 0xec, 0xbd, 0x36, 0xae, 0x0d, 0x90, 0x4f, 0x35, 0xe2,
89785 + 0xf1, 0xec, 0xfc, 0x9e, 0x97, 0xd6, 0x73, 0xc9, 0x61, 0xee, 0x52, 0x60,
89786 + 0x5d, 0xa9, 0x32, 0xac, 0x8f, 0x5c, 0x46, 0x24, 0xf8, 0x80, 0xe0, 0xb3,
89787 + 0x22, 0xdc, 0x13, 0xb7, 0xac, 0x37, 0xe3, 0x96, 0x55, 0x88, 0x9b, 0x9e,
89788 + 0x15, 0xab, 0x14, 0x1c, 0x5b, 0xc6, 0xef, 0x2a, 0x84, 0x93, 0x0d, 0x64,
89789 + 0x5f, 0xde, 0x65, 0x5a, 0x70, 0x2b, 0x54, 0xd3, 0xa4, 0x20, 0x17, 0x5a,
89790 + 0xa8, 0xf6, 0x00, 0x8d, 0xfe, 0x43, 0x43, 0xf5, 0xf8, 0xfe, 0xcc, 0xef,
89791 + 0xf2, 0xf1, 0x1d, 0xbb, 0x9f, 0x76, 0x45, 0xc7, 0xba, 0x5a, 0x44, 0x92,
89792 + 0xf7, 0x80, 0x7b, 0xa3, 0x7c, 0xa6, 0xd5, 0xc4, 0x2d, 0xf1, 0x3e, 0xec,
89793 + 0x18, 0xe6, 0x7d, 0xb6, 0x3a, 0xe3, 0xca, 0xb0, 0xf5, 0xd7, 0x1e, 0xa2,
89794 + 0x7f, 0x5d, 0x7b, 0x73, 0xca, 0x6b, 0xbf, 0xe3, 0xe4, 0x34, 0xd6, 0x8f,
89795 + 0xd5, 0xa1, 0x34, 0xa5, 0x95, 0x97, 0x88, 0xe4, 0x1b, 0x3e, 0x44, 0x82,
89796 + 0x0d, 0x14, 0xab, 0x66, 0xc8, 0x77, 0xa7, 0x4a, 0x5c, 0x07, 0x2c, 0x30,
89797 + 0xac, 0xd1, 0x45, 0x98, 0x9c, 0xa1, 0xb9, 0xb2, 0x5a, 0xe7, 0x07, 0x84,
89798 + 0xf3, 0xaa, 0x0d, 0xab, 0xd6, 0x6b, 0x44, 0xce, 0x36, 0x0b, 0x07, 0x66,
89799 + 0xdb, 0x2c, 0xab, 0xab, 0x5d, 0x1b, 0xa8, 0x11, 0xe8, 0x97, 0x0c, 0x2d,
89800 + 0xd1, 0xe2, 0xc0, 0xd7, 0x82, 0x88, 0x74, 0xbe, 0x89, 0x48, 0xcf, 0x05,
89801 + 0x8a, 0x61, 0x4f, 0x95, 0xf8, 0x9c, 0xf0, 0x23, 0xf8, 0xeb, 0xe1, 0x85,
89802 + 0x38, 0x35, 0xd5, 0x3f, 0xd7, 0x13, 0x83, 0xf7, 0xfa, 0x55, 0x06, 0x8e,
89803 + 0x0f, 0x87, 0xc8, 0x7e, 0xdc, 0x14, 0xd7, 0x65, 0x48, 0x4d, 0x90, 0xeb,
89804 + 0xa8, 0x4e, 0x88, 0x3d, 0x66, 0x59, 0x2b, 0x9a, 0x2a, 0x35, 0xcf, 0x8a,
89805 + 0xe9, 0x6b, 0xdf, 0x71, 0x98, 0xef, 0xf7, 0x04, 0x49, 0x7f, 0xcd, 0xa9,
89806 + 0x1d, 0xe2, 0x8c, 0x65, 0xfe, 0x81, 0x20, 0x9e, 0x7b, 0x6a, 0xe0, 0x65,
89807 + 0xbe, 0x65, 0xec, 0x1e, 0xe5, 0x3e, 0x1c, 0xeb, 0x0d, 0xde, 0xce, 0x38,
89808 + 0xef, 0x97, 0xb3, 0x8e, 0xca, 0xde, 0x0d, 0x71, 0x8a, 0x89, 0xc2, 0x4f,
89809 + 0x78, 0xca, 0xf4, 0x74, 0x50, 0x7e, 0xaa, 0x1a, 0xe6, 0xf7, 0x2d, 0x7c,
89810 + 0x38, 0x40, 0x71, 0xe3, 0xb2, 0x5e, 0x8d, 0x43, 0x75, 0x6a, 0x82, 0xeb,
89811 + 0xe9, 0x27, 0x4b, 0xdc, 0x33, 0xdc, 0x89, 0xed, 0xfc, 0xbe, 0x4a, 0x69,
89812 + 0xb5, 0x7d, 0xb6, 0x90, 0xae, 0x11, 0x36, 0x60, 0x3a, 0xe6, 0xd7, 0xef,
89813 + 0xc4, 0x92, 0x21, 0xd6, 0xe3, 0xc7, 0x6b, 0x82, 0x24, 0xa3, 0xc7, 0xc9,
89814 + 0x2e, 0x24, 0xa3, 0x03, 0xf2, 0x90, 0x65, 0xdd, 0x18, 0xbf, 0x76, 0x0e,
89815 + 0xad, 0xff, 0x82, 0x83, 0xea, 0x3b, 0x07, 0xef, 0xeb, 0xa9, 0x89, 0x13,
89816 + 0xe2, 0xda, 0x39, 0x0b, 0x35, 0xdc, 0x4f, 0x34, 0xa7, 0x2a, 0x79, 0xe9,
89817 + 0x38, 0xe5, 0xa5, 0x97, 0x73, 0xec, 0x23, 0xf5, 0x06, 0xfb, 0x88, 0x44,
89818 + 0xb1, 0x76, 0x7d, 0x3a, 0x84, 0x0b, 0x3a, 0x34, 0x37, 0x62, 0x44, 0x77,
89819 + 0xa4, 0xbb, 0x63, 0x0e, 0xf3, 0xb9, 0x28, 0xfe, 0x4f, 0xe5, 0x78, 0xaf,
89820 + 0x4d, 0xa0, 0x46, 0x63, 0x1b, 0xb0, 0x73, 0x01, 0xc5, 0xb4, 0x7e, 0xd4,
89821 + 0xae, 0x06, 0x2e, 0x0d, 0xf1, 0xfe, 0x8c, 0x86, 0x03, 0xa5, 0x01, 0xd1,
89822 + 0x30, 0xf4, 0x5b, 0x2b, 0x54, 0x35, 0xbf, 0x07, 0xf8, 0x30, 0xef, 0x01,
89823 + 0x92, 0x0d, 0xf4, 0xdb, 0xe7, 0x7c, 0xde, 0x4c, 0xf3, 0x39, 0x9f, 0x70,
89824 + 0x68, 0x13, 0xf9, 0x4e, 0x2f, 0x9a, 0xf5, 0x69, 0xc2, 0xce, 0xb3, 0x44,
89825 + 0x67, 0x93, 0xa8, 0xec, 0x73, 0x45, 0xe6, 0xf6, 0xe9, 0x96, 0xe5, 0x3b,
89826 + 0x45, 0x4d, 0x81, 0x69, 0x0a, 0x10, 0x4d, 0x1d, 0xa2, 0xfa, 0xd8, 0x06,
89827 + 0xe1, 0x3b, 0xd6, 0x25, 0xa4, 0x02, 0xc7, 0xe4, 0x3a, 0x63, 0x4f, 0x8e,
89828 + 0xf3, 0xd9, 0x66, 0xe1, 0x3c, 0xba, 0x45, 0x78, 0x0b, 0x3d, 0xc2, 0x7f,
89829 + 0xcc, 0xc4, 0xfd, 0xf1, 0x2e, 0x9c, 0x1b, 0xe6, 0xb3, 0x6c, 0xf7, 0x89,
89830 + 0x9a, 0xb9, 0xbd, 0x39, 0x6f, 0xa1, 0xd1, 0x5f, 0x48, 0x73, 0x7f, 0xf7,
89831 + 0xe3, 0x35, 0xe9, 0xa1, 0x45, 0xfe, 0xa7, 0xc6, 0x02, 0xfe, 0x27, 0xc7,
89832 + 0xd4, 0xfe, 0x7d, 0xc2, 0xb2, 0x76, 0xc6, 0xfe, 0x03, 0xeb, 0xd0, 0x6a,
89833 + 0x8e, 0x55, 0xf0, 0xc1, 0x6e, 0x92, 0xc7, 0x36, 0xca, 0x2d, 0x93, 0x7a,
89834 + 0xf3, 0x1c, 0x16, 0x51, 0x53, 0xfc, 0xee, 0x1b, 0xfd, 0x77, 0x73, 0x6e,
89835 + 0xe3, 0x7d, 0x4d, 0x67, 0x3b, 0x28, 0xee, 0x7e, 0xc6, 0x6b, 0xcd, 0x10,
89836 + 0x9f, 0x51, 0xeb, 0x87, 0xff, 0x4b, 0xf6, 0xf5, 0xce, 0x7d, 0xb6, 0xaf,
89837 + 0x97, 0x78, 0x52, 0xa8, 0xe5, 0x19, 0xe2, 0xb7, 0xca, 0xf1, 0xb9, 0x3d,
89838 + 0xbd, 0xb9, 0xfd, 0xbc, 0x4e, 0xe1, 0x2b, 0x70, 0x7d, 0x1e, 0x30, 0x5e,
89839 + 0x1f, 0xea, 0x10, 0xde, 0x63, 0xc3, 0x94, 0x1f, 0x37, 0x10, 0xcf, 0x7c,
89840 + 0x76, 0xac, 0x4b, 0xf8, 0x0b, 0x9b, 0x85, 0x8f, 0xf8, 0xac, 0x26, 0x3e,
89841 + 0x71, 0xcc, 0x23, 0xbc, 0xc4, 0xa3, 0x87, 0x78, 0xf4, 0xce, 0xf1, 0xe8,
89842 + 0x29, 0x04, 0xfd, 0xe9, 0x74, 0xbd, 0xff, 0xd1, 0x31, 0xc5, 0xbf, 0x6f,
89843 + 0xcc, 0xb2, 0xde, 0xd7, 0x15, 0x3f, 0xf3, 0xf5, 0xaa, 0xfe, 0x45, 0xbe,
89844 + 0x6e, 0x20, 0xbe, 0x2a, 0x7b, 0xb1, 0xa4, 0xc3, 0x14, 0xeb, 0x90, 0xcf,
89845 + 0x71, 0xcc, 0xf3, 0x75, 0x30, 0xcd, 0xfb, 0x95, 0xbc, 0x6f, 0x39, 0x20,
89846 + 0x56, 0x10, 0x5f, 0x65, 0xe2, 0x6b, 0xe5, 0x97, 0xf0, 0xf5, 0xe1, 0x35,
89847 + 0x7c, 0xbd, 0xfa, 0xf7, 0xf2, 0xe5, 0x11, 0xcb, 0x87, 0x39, 0x0e, 0xdd,
89848 + 0x66, 0xc8, 0xc3, 0x16, 0x61, 0x47, 0x07, 0xbe, 0x3f, 0x05, 0x14, 0xb3,
89849 + 0xbb, 0x20, 0x53, 0xbc, 0x39, 0x1d, 0x8f, 0x84, 0x5e, 0xa1, 0x7a, 0x72,
89850 + 0xba, 0xe4, 0x15, 0xcb, 0xec, 0x3d, 0x59, 0xac, 0x90, 0x89, 0xa6, 0x19,
89851 + 0xfb, 0x5d, 0x33, 0xe8, 0xb5, 0x1a, 0xeb, 0x52, 0x3b, 0xbb, 0x15, 0x91,
89852 + 0x72, 0xc4, 0xd1, 0x25, 0x12, 0x05, 0xde, 0x83, 0xdd, 0x22, 0x56, 0xda,
89853 + 0xfb, 0xaf, 0x9d, 0xe2, 0xfa, 0x42, 0x87, 0x68, 0x21, 0xbb, 0x68, 0x3e,
89854 + 0xc6, 0xe7, 0xc1, 0x36, 0x8b, 0xe6, 0x39, 0x79, 0x2c, 0x27, 0x79, 0x0c,
89855 + 0x7d, 0x4e, 0x1e, 0x1b, 0x6c, 0x79, 0xfc, 0x4c, 0xbf, 0x78, 0x4d, 0x0f,
89856 + 0x8d, 0xeb, 0x2a, 0xca, 0x86, 0x54, 0x3b, 0xd5, 0xce, 0xd5, 0x4e, 0x6f,
89857 + 0xc5, 0xf8, 0x9c, 0x8f, 0x69, 0xd5, 0x68, 0x08, 0x39, 0x0d, 0xb5, 0xe7,
89858 + 0xb4, 0xd0, 0x52, 0xf7, 0x89, 0xe4, 0x26, 0x1f, 0xd5, 0x3f, 0x3b, 0x62,
89859 + 0x91, 0xe4, 0x72, 0x11, 0x49, 0x38, 0x05, 0xe7, 0x15, 0x5d, 0xae, 0x2a,
89860 + 0x9a, 0xd8, 0x47, 0xf1, 0xed, 0xc5, 0x9c, 0x44, 0xd8, 0x81, 0xdf, 0x3f,
89861 + 0x73, 0xe2, 0x46, 0x82, 0x12, 0x4f, 0x10, 0xee, 0x78, 0x3c, 0xdb, 0x87,
89862 + 0x27, 0xf2, 0xbd, 0x78, 0x3c, 0xff, 0x77, 0xde, 0xb5, 0x91, 0xbd, 0x46,
89863 + 0x63, 0xa2, 0x72, 0x16, 0xe1, 0xe3, 0xc4, 0x75, 0x11, 0x96, 0xcd, 0x89,
89864 + 0x16, 0x39, 0xc2, 0xb5, 0xae, 0xf3, 0x77, 0xdf, 0xd5, 0xd8, 0x17, 0x7b,
89865 + 0x56, 0xbd, 0x64, 0x63, 0x91, 0x93, 0x6d, 0xc7, 0xec, 0x33, 0x52, 0xe5,
89866 + 0x95, 0x7b, 0xec, 0x77, 0x41, 0x7d, 0xab, 0xef, 0xd2, 0xd8, 0x1f, 0x4e,
89867 + 0xc4, 0xd7, 0xdb, 0xf9, 0xb5, 0x71, 0x6d, 0xe5, 0x3d, 0x99, 0xe0, 0xda,
89868 + 0x4a, 0xaf, 0x26, 0xb0, 0x36, 0x6a, 0x7f, 0x86, 0xd6, 0x56, 0xf6, 0xba,
89869 + 0xf5, 0xb5, 0x4d, 0xf6, 0x67, 0x74, 0x6d, 0xc5, 0xa7, 0xb4, 0xb5, 0x9a,
89870 + 0xfd, 0x19, 0x5f, 0x5b, 0xc9, 0xcb, 0x2d, 0x6b, 0x97, 0x5e, 0x7d, 0xbf,
89871 + 0x86, 0xff, 0xfe, 0x17, 0x9f, 0xed, 0x4e, 0xb2, 0x20, 0x3b, 0x00, 0x00,
89872 + 0x00 };
89873
89874 static const u32 bnx2_TXP_b09FwData[(0x0/4) + 1] = { 0x0 };
89875 static const u32 bnx2_TXP_b09FwRodata[(0x30/4) + 1] = {
89876 @@ -4513,15 +4582,15 @@
89877 0x00000000 };
89878
89879 static struct fw_info bnx2_txp_fw_09 = {
89880 - /* Firmware version: 4.6.15 */
89881 + /* Firmware version: 4.4.23 */
89882 .ver_major = 0x4,
89883 - .ver_minor = 0x6,
89884 - .ver_fix = 0xf,
89885 + .ver_minor = 0x4,
89886 + .ver_fix = 0x17,
89887
89888 - .start_addr = 0x08000098,
89889 + .start_addr = 0x08000094,
89890
89891 .text_addr = 0x08000000,
89892 - .text_len = 0x3ae8,
89893 + .text_len = 0x3b1c,
89894 .text_index = 0x0,
89895 .gz_text = bnx2_TXP_b09FwText,
89896 .gz_text_len = sizeof(bnx2_TXP_b09FwText),
89897 @@ -4531,15 +4600,15 @@
89898 .data_index = 0x0,
89899 .data = bnx2_TXP_b09FwData,
89900
89901 - .sbss_addr = 0x08003b40,
89902 + .sbss_addr = 0x08003b80,
89903 .sbss_len = 0x6c,
89904 .sbss_index = 0x0,
89905
89906 - .bss_addr = 0x08003bac,
89907 + .bss_addr = 0x08003bec,
89908 .bss_len = 0x24c,
89909 .bss_index = 0x0,
89910
89911 - .rodata_addr = 0x08003ae8,
89912 + .rodata_addr = 0x08003b1c,
89913 .rodata_len = 0x30,
89914 .rodata_index = 0x0,
89915 .rodata = bnx2_TXP_b09FwRodata,
89916 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2_fw.h linux-2.6.29-rc3.owrt/drivers/net/bnx2_fw.h
89917 --- linux-2.6.29.owrt/drivers/net/bnx2_fw.h 2009-05-10 22:04:38.000000000 +0200
89918 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2_fw.h 2009-05-10 23:48:28.000000000 +0200
89919 @@ -15,849 +15,854 @@
89920 */
89921
89922 static u8 bnx2_COM_b06FwText[] = {
89923 - 0xcd, 0x7c, 0x0d, 0x70, 0x5c, 0xd7, 0x75, 0xde, 0xd9, 0xb7, 0xbb, 0xc0,
89924 - 0x12, 0x04, 0xc1, 0x07, 0x68, 0x05, 0xad, 0x24, 0x24, 0xde, 0x87, 0x7d,
89925 - 0x00, 0x56, 0x22, 0xe4, 0x3c, 0x32, 0x10, 0x0d, 0xb9, 0x5b, 0x72, 0xbd,
89926 - 0x0b, 0x50, 0x90, 0x43, 0x23, 0x90, 0x84, 0x28, 0x6a, 0x86, 0xe3, 0x41,
89927 - 0x97, 0xa0, 0x62, 0x69, 0xdc, 0x86, 0x1e, 0x2b, 0x29, 0xe5, 0x2a, 0xe6,
89928 - 0x6a, 0x01, 0xca, 0x94, 0x02, 0x72, 0x61, 0x12, 0x04, 0xd5, 0x54, 0x6d,
89929 - 0xd7, 0x0b, 0x80, 0x54, 0xd4, 0x25, 0x97, 0x94, 0xfc, 0xa3, 0x99, 0xd8,
89930 - 0x21, 0x4a, 0xd1, 0x92, 0xed, 0x71, 0xa7, 0x92, 0xc7, 0x9d, 0xaa, 0x33,
89931 - 0x9a, 0x94, 0xa5, 0xe4, 0xda, 0xf1, 0x34, 0x8d, 0x6a, 0x7b, 0x1a, 0x25,
89932 - 0xb1, 0xf3, 0xfa, 0x7d, 0xf7, 0xdd, 0x0b, 0x2c, 0x20, 0x48, 0x56, 0x92,
89933 - 0xf1, 0x4c, 0x30, 0xb3, 0xbc, 0xef, 0xde, 0x77, 0x7f, 0xcf, 0x39, 0xf7,
89934 - 0x9c, 0xef, 0x9c, 0x7b, 0x1f, 0x77, 0x89, 0xb4, 0x88, 0xfe, 0xdb, 0x82,
89935 - 0xdf, 0xc0, 0xbf, 0xf8, 0x9d, 0xfd, 0xdb, 0x3f, 0xb8, 0xf3, 0x83, 0x78,
89936 - 0xdc, 0x69, 0xd9, 0x4d, 0x11, 0x96, 0x87, 0xf1, 0x8b, 0xe3, 0xb7, 0x43,
89937 - 0x3f, 0x6f, 0xf4, 0x67, 0xb3, 0x41, 0x48, 0x64, 0xe2, 0x87, 0x22, 0xa1,
89938 - 0x75, 0xef, 0x62, 0xef, 0xd2, 0xe6, 0xbd, 0xfe, 0xac, 0xf7, 0x59, 0xcf,
89939 - 0xfe, 0x7b, 0xf4, 0x6d, 0xfe, 0xc2, 0xba, 0xf9, 0x16, 0xfd, 0x93, 0x98,
89940 - 0x95, 0xb9, 0xfa, 0xb1, 0x9c, 0x2b, 0xb1, 0x70, 0xe6, 0xbb, 0xa3, 0xfb,
89941 - 0x5d, 0x91, 0x6c, 0x6d, 0x5b, 0x32, 0x2f, 0x3f, 0xf3, 0x8b, 0xf1, 0x88,
89942 - 0xb0, 0xfc, 0x97, 0x32, 0x3f, 0x3d, 0xfc, 0xb5, 0x0f, 0x39, 0x6f, 0x55,
89943 - 0xc2, 0x12, 0xb3, 0x33, 0x6f, 0x8b, 0xdd, 0x2b, 0xb1, 0x2e, 0xb4, 0x79,
89944 - 0xba, 0xef, 0x59, 0x4b, 0xda, 0x4c, 0x5f, 0xf6, 0x44, 0x38, 0x23, 0x63,
89945 - 0x93, 0x33, 0x87, 0x7d, 0xcb, 0x95, 0xe2, 0x4d, 0x19, 0x37, 0x59, 0x92,
89946 - 0xd6, 0xc1, 0xe9, 0x81, 0x0f, 0x09, 0xf2, 0x63, 0x93, 0xb5, 0x98, 0xe4,
89947 - 0xea, 0xc5, 0x56, 0xcb, 0x75, 0x91, 0xc6, 0x8a, 0x37, 0x67, 0x24, 0xd6,
89948 - 0x94, 0x79, 0xba, 0xf9, 0x25, 0x97, 0xe3, 0x27, 0x46, 0x73, 0xee, 0xcd,
89949 - 0x12, 0x71, 0x7d, 0x7f, 0x1a, 0xe3, 0xef, 0xa9, 0xfd, 0xcc, 0x7f, 0x2c,
89950 - 0x12, 0x8c, 0x6d, 0x65, 0x8a, 0x61, 0xa6, 0xa1, 0x4c, 0x72, 0xb4, 0xbb,
89951 - 0xa6, 0xf2, 0x4d, 0x41, 0xde, 0x35, 0xf9, 0x2d, 0x41, 0x7e, 0x42, 0xe7,
89952 - 0xed, 0x96, 0x60, 0x2d, 0xb1, 0x4d, 0x58, 0x4b, 0x2c, 0x92, 0x19, 0xda,
89953 - 0x84, 0x3e, 0x63, 0xd1, 0x8c, 0x9b, 0x59, 0x52, 0xf5, 0x3e, 0xa1, 0xeb,
89954 - 0x1d, 0x8c, 0x06, 0xed, 0x26, 0x47, 0x7b, 0x6b, 0x4c, 0x1f, 0x1e, 0xed,
89955 - 0x51, 0xe9, 0xa3, 0xa3, 0x29, 0x95, 0x16, 0x55, 0xbd, 0x50, 0x66, 0x7a,
89956 - 0xd4, 0x55, 0x69, 0x97, 0x2e, 0x4f, 0x8f, 0x26, 0x55, 0xda, 0xaf, 0x53,
89957 - 0x4f, 0xa7, 0x03, 0x3a, 0x1d, 0xd4, 0x69, 0x46, 0xa7, 0x59, 0x9d, 0x0e,
89958 - 0xe9, 0x7e, 0x46, 0x74, 0x7e, 0xaf, 0x4e, 0xc7, 0x74, 0x3a, 0xae, 0xd3,
89959 - 0xfb, 0x75, 0xba, 0x4f, 0xcf, 0xeb, 0x93, 0x3a, 0x7f, 0x50, 0xcf, 0xef,
89960 - 0x10, 0xe6, 0xf1, 0x93, 0x26, 0x2d, 0xbf, 0x58, 0x67, 0x52, 0xf6, 0xcf,
89961 - 0xc4, 0xa4, 0x54, 0x0e, 0x4b, 0x5e, 0xf1, 0xb5, 0x3f, 0x2a, 0x2d, 0x31,
89962 - 0x99, 0xaa, 0xc7, 0xe4, 0xaa, 0x12, 0xdb, 0x1f, 0xf8, 0x5f, 0xeb, 0xb3,
89963 - 0xe5, 0x42, 0x3d, 0x2e, 0x97, 0xea, 0x12, 0x1a, 0xeb, 0xdb, 0x24, 0xd6,
89964 - 0x89, 0x9b, 0x24, 0x6b, 0x87, 0x24, 0xac, 0xe8, 0x9b, 0x94, 0xdc, 0x4c,
89965 - 0x27, 0xf2, 0x4e, 0x42, 0x64, 0x32, 0x1a, 0xf0, 0x33, 0x26, 0xe1, 0x79,
89966 - 0xf2, 0x67, 0x7e, 0xf4, 0xa5, 0xb9, 0x84, 0x44, 0x8e, 0x27, 0xd1, 0x7f,
89967 - 0xab, 0x44, 0xe7, 0xa5, 0x2b, 0x2c, 0x3d, 0x89, 0x07, 0x50, 0x63, 0xa8,
89968 - 0x16, 0x91, 0xe1, 0x5a, 0x08, 0x3c, 0x8b, 0x41, 0x5e, 0x5a, 0xf1, 0xb3,
89969 - 0xf1, 0x8b, 0xe3, 0x97, 0xc0, 0xef, 0x09, 0xf4, 0xd3, 0x25, 0xf9, 0x1a,
89970 - 0xfb, 0xc4, 0xb8, 0x65, 0x8c, 0x5f, 0x76, 0xec, 0x09, 0xe1, 0x9c, 0x12,
89971 - 0xf2, 0xb5, 0xbe, 0x60, 0x4e, 0x97, 0xea, 0xb1, 0x50, 0xee, 0xb4, 0x1c,
89972 - 0xcc, 0x7b, 0x92, 0xb4, 0xdc, 0x16, 0x29, 0xd8, 0xa1, 0xe4, 0x64, 0xba,
89973 - 0x43, 0x8a, 0xe3, 0x78, 0x57, 0x96, 0xac, 0x85, 0xbe, 0x0b, 0xb6, 0x4c,
89974 - 0x04, 0xef, 0x58, 0xf6, 0x37, 0xd8, 0xb7, 0x8e, 0x4d, 0x01, 0xbe, 0x54,
89975 - 0xfe, 0x63, 0x3c, 0xb3, 0xaf, 0xff, 0x17, 0x0e, 0xe6, 0xfc, 0xd7, 0xc8,
89976 - 0xb3, 0xfc, 0xcb, 0x5b, 0x83, 0x3c, 0x9f, 0x59, 0xd7, 0x8c, 0x69, 0xd6,
89977 - 0xca, 0xb1, 0xfb, 0xb0, 0x5e, 0x8e, 0xbf, 0xb2, 0x5e, 0xcc, 0xa3, 0x35,
89978 - 0x94, 0x3f, 0x9d, 0x94, 0x23, 0xe5, 0x5d, 0x92, 0xf3, 0x7c, 0x7f, 0xbf,
89979 - 0x27, 0x71, 0x4b, 0x7a, 0xec, 0x3c, 0xde, 0x56, 0x6b, 0x12, 0xca, 0x95,
89980 - 0x0d, 0x3d, 0xd8, 0x6f, 0x04, 0x65, 0x9d, 0xa8, 0xdf, 0x16, 0x1a, 0x3a,
89981 - 0x8d, 0xb9, 0x67, 0x48, 0x17, 0xc8, 0xae, 0xd7, 0x93, 0x98, 0xc4, 0x78,
89982 - 0x0b, 0xb5, 0x1e, 0xef, 0xb2, 0xd8, 0xe8, 0xb3, 0x03, 0x75, 0x48, 0x23,
89983 - 0xf6, 0xc5, 0x3e, 0xd9, 0x5f, 0x2b, 0xda, 0xc6, 0xf1, 0x8e, 0x73, 0xf2,
89984 - 0xfd, 0x9c, 0x67, 0x33, 0x2f, 0x15, 0xd0, 0xad, 0x42, 0xba, 0xb5, 0x74,
89985 - 0xc9, 0x99, 0x1a, 0xc7, 0xd8, 0x68, 0xde, 0xb7, 0xfe, 0x23, 0x9b, 0x77,
89986 - 0x02, 0xfd, 0xc7, 0x91, 0x6e, 0x0e, 0xe5, 0x4e, 0xfa, 0x18, 0x3f, 0x81,
89987 - 0xe7, 0x8d, 0xd6, 0x70, 0x55, 0xcb, 0x60, 0x02, 0x73, 0x8f, 0xcb, 0x45,
89988 - 0x25, 0x87, 0x9b, 0x25, 0x0c, 0x39, 0x24, 0x8f, 0xdb, 0xe7, 0x6f, 0x97,
89989 - 0x42, 0xdc, 0x49, 0x52, 0x87, 0x76, 0xef, 0xd8, 0x84, 0x35, 0x6a, 0x6d,
89990 - 0x78, 0x3c, 0x0e, 0x39, 0xbc, 0xdc, 0x6e, 0xa1, 0xc4, 0x12, 0xc7, 0xfe,
89991 - 0x2d, 0x29, 0x4a, 0x7e, 0xf1, 0x91, 0x90, 0xb4, 0x58, 0xa8, 0xb7, 0x2d,
89992 - 0x14, 0xd0, 0x80, 0xf4, 0xc9, 0x82, 0x3e, 0x21, 0x09, 0xf6, 0x73, 0x56,
89993 - 0xba, 0x6b, 0xea, 0x7d, 0xd2, 0x52, 0xef, 0x86, 0xf0, 0x2e, 0x22, 0xa9,
89994 - 0x1d, 0xe6, 0xfd, 0x10, 0xde, 0xdf, 0x24, 0x13, 0x36, 0xe6, 0x52, 0x7e,
89995 - 0xc1, 0xca, 0x61, 0x8e, 0x1f, 0x89, 0xa8, 0xb5, 0xa2, 0xee, 0x44, 0x43,
89996 - 0x3f, 0x13, 0xa8, 0xf7, 0x34, 0xc6, 0xc2, 0x7c, 0xcb, 0x49, 0xcc, 0xa5,
89997 - 0x13, 0x73, 0xe1, 0x1c, 0x8b, 0x56, 0xae, 0x1e, 0x41, 0x7e, 0xda, 0xca,
89998 - 0x9f, 0x3d, 0x8a, 0x67, 0xb1, 0xad, 0xcc, 0x0b, 0x4c, 0xd1, 0x7e, 0x5f,
89999 - 0x43, 0xfb, 0x7d, 0x68, 0xcf, 0x31, 0xd8, 0x3e, 0x90, 0xff, 0xa2, 0x92,
90000 - 0xc5, 0xe4, 0x7b, 0xd0, 0x23, 0xfc, 0xf7, 0xa0, 0xc7, 0xd7, 0x34, 0x3d,
90001 - 0x7e, 0x26, 0xbf, 0x78, 0x7a, 0x5c, 0xfd, 0x05, 0xd1, 0x43, 0xa4, 0x70,
90002 - 0x92, 0xcf, 0x11, 0x29, 0x2a, 0xbd, 0xc5, 0x7d, 0x4b, 0x79, 0xa7, 0xce,
90003 - 0x22, 0x9d, 0x28, 0xc7, 0xd8, 0x03, 0xf5, 0x08, 0xd2, 0x67, 0x90, 0x6e,
90004 - 0x0e, 0x8d, 0x9d, 0x7c, 0x13, 0xfc, 0xf7, 0xc5, 0xde, 0x61, 0xec, 0x47,
90005 - 0x31, 0x61, 0x4b, 0x97, 0xd8, 0x1f, 0x84, 0xf1, 0xee, 0x74, 0xec, 0x82,
90006 - 0x7c, 0x9f, 0xef, 0x43, 0xc6, 0xce, 0xe7, 0x66, 0x36, 0xbd, 0x9d, 0x55,
90007 - 0x4f, 0x51, 0xd2, 0x33, 0x6b, 0x65, 0x22, 0xa1, 0x7c, 0x39, 0x39, 0x61,
90008 - 0x65, 0xe2, 0xd0, 0x53, 0xcc, 0x0f, 0x86, 0x82, 0x39, 0x0f, 0xa0, 0xae,
90009 - 0xd1, 0x59, 0x66, 0xee, 0x03, 0x98, 0xfb, 0x7a, 0xdd, 0x95, 0xc5, 0x5c,
90010 - 0x38, 0x07, 0xce, 0xab, 0xa8, 0x75, 0x10, 0xfb, 0x39, 0xa4, 0xfa, 0x09,
90011 - 0x67, 0x06, 0x85, 0xb6, 0xb4, 0x30, 0xc3, 0x7d, 0xc0, 0x76, 0xec, 0x2b,
90012 - 0xd0, 0xc9, 0x85, 0x9a, 0xe9, 0xa3, 0xd8, 0xd8, 0x07, 0xe6, 0x23, 0x5b,
90013 - 0x2d, 0x37, 0x0a, 0xde, 0xb3, 0xab, 0xa3, 0x78, 0xf7, 0xb4, 0xe4, 0xce,
90014 - 0xde, 0x61, 0x61, 0x0d, 0xe8, 0x97, 0x34, 0x1a, 0x83, 0xce, 0xe6, 0x3e,
90015 - 0x8b, 0x49, 0x3e, 0xce, 0xb2, 0x49, 0x3d, 0x6e, 0x44, 0xb2, 0x2a, 0x9f,
90016 - 0x6b, 0x5b, 0x9d, 0xc7, 0x0b, 0x7a, 0x3d, 0x19, 0xac, 0x87, 0x73, 0x30,
90017 - 0x6b, 0xc9, 0x34, 0xac, 0xc5, 0xd0, 0x9a, 0xb4, 0xb0, 0xa1, 0xe3, 0x63,
90018 - 0xda, 0x86, 0xb0, 0xdd, 0x74, 0x03, 0xef, 0xa6, 0xd1, 0x86, 0xb4, 0x47,
90019 - 0x9d, 0x75, 0x76, 0x85, 0x36, 0x65, 0x08, 0xfd, 0x94, 0xe6, 0x2c, 0xc9,
90020 - 0x7b, 0xb0, 0xd9, 0xde, 0xcd, 0x5a, 0x5e, 0x57, 0x65, 0x29, 0xba, 0xa1,
90021 - 0x2c, 0x3d, 0x66, 0x05, 0xfa, 0x1a, 0xb6, 0x05, 0xf6, 0x67, 0x6a, 0xce,
90022 - 0x49, 0x1b, 0x59, 0x2a, 0xcd, 0xbc, 0x1f, 0x59, 0x32, 0xed, 0x63, 0x90,
90023 - 0x5d, 0x33, 0xc6, 0xfa, 0x39, 0x9b, 0x3a, 0x98, 0x63, 0x79, 0x48, 0x63,
90024 - 0x15, 0x8e, 0x13, 0xd8, 0x86, 0xca, 0x1a, 0xdb, 0x70, 0x14, 0x6d, 0x25,
90025 - 0x94, 0xef, 0x6b, 0x95, 0x03, 0x73, 0xa6, 0x8f, 0xa3, 0x4a, 0x66, 0x27,
90026 - 0x67, 0x1c, 0x7b, 0x38, 0x2c, 0xd9, 0xe1, 0xd9, 0x41, 0x19, 0xaa, 0x77,
90027 - 0x81, 0xa7, 0x6f, 0xfb, 0xb0, 0x9d, 0x1f, 0x8c, 0x8a, 0x0b, 0xbd, 0x88,
90028 - 0x35, 0x0f, 0x80, 0xc6, 0xf5, 0xa8, 0x58, 0x19, 0x0f, 0x69, 0x23, 0xd6,
90029 - 0x8a, 0x44, 0x86, 0xd7, 0xe4, 0x9b, 0x50, 0x07, 0x7d, 0x0f, 0xac, 0xaf,
90030 - 0x07, 0xf9, 0x04, 0x6d, 0x73, 0xde, 0xcf, 0x7c, 0xd8, 0x61, 0x6d, 0xb3,
90031 - 0x58, 0x4a, 0x3d, 0x61, 0x74, 0xc4, 0x6f, 0x60, 0x7f, 0xab, 0xbd, 0x50,
90032 - 0x04, 0x76, 0x41, 0x1f, 0xa2, 0xe4, 0xb4, 0x54, 0x7f, 0xce, 0xec, 0x7b,
90033 - 0x55, 0xbe, 0x67, 0x80, 0xb2, 0x57, 0x01, 0x26, 0xe0, 0x9a, 0x16, 0xd5,
90034 - 0x5e, 0xcf, 0xdb, 0x71, 0x99, 0x2e, 0x73, 0x3d, 0x8b, 0x92, 0xaa, 0xfd,
90035 - 0x7b, 0xc9, 0x9f, 0x15, 0xf9, 0xd6, 0x0c, 0xeb, 0x7d, 0x55, 0xd7, 0x7b,
90036 - 0x01, 0xf5, 0x52, 0xc9, 0xa1, 0x90, 0x03, 0x3b, 0xe0, 0x60, 0x9b, 0x6c,
90037 - 0x4b, 0x22, 0xb5, 0x47, 0xf0, 0x1b, 0xa2, 0x91, 0x41, 0xbd, 0x00, 0xfb,
90038 - 0xbc, 0x00, 0x7a, 0x88, 0xdc, 0x5d, 0x6e, 0x86, 0x3e, 0xf9, 0x9f, 0x98,
90039 - 0x6b, 0x5c, 0x9e, 0xc4, 0x3a, 0x5e, 0x9a, 0x21, 0xbe, 0xfa, 0xaa, 0x2c,
90040 - 0xcd, 0x10, 0x6f, 0xbd, 0x20, 0xd3, 0x33, 0x29, 0xef, 0x5b, 0xa0, 0xf3,
90041 - 0x19, 0xe1, 0x5a, 0xb6, 0x79, 0x48, 0x81, 0x05, 0x9d, 0xe4, 0xe3, 0xd0,
90042 - 0x67, 0x7d, 0x3b, 0x82, 0xfe, 0x7a, 0x74, 0x7f, 0x6e, 0xcd, 0x91, 0xab,
90043 - 0x36, 0xf5, 0xd3, 0x3b, 0xf7, 0x78, 0x4e, 0xef, 0xf1, 0x31, 0xaf, 0x4b,
90044 - 0x2c, 0xec, 0xeb, 0xec, 0x78, 0x11, 0xd6, 0x8f, 0xfb, 0xfa, 0x6d, 0x6b,
90045 - 0x15, 0xff, 0x24, 0x80, 0x59, 0x1d, 0x65, 0xef, 0xfe, 0x6e, 0x7b, 0xbc,
90046 - 0x71, 0x6f, 0x73, 0xfc, 0x36, 0xb4, 0x89, 0x20, 0x7d, 0xef, 0x7d, 0x8d,
90047 - 0x3e, 0x1a, 0xda, 0x0e, 0x72, 0x5f, 0xa0, 0xcd, 0xbf, 0x05, 0x2d, 0x48,
90048 - 0xff, 0xf7, 0xb3, 0x9f, 0x6f, 0x0b, 0xbf, 0xaf, 0xfd, 0x3c, 0xfe, 0x5e,
90049 - 0xfb, 0xb9, 0x71, 0x2f, 0x5f, 0x20, 0x2d, 0x30, 0xb6, 0xcc, 0x06, 0xb2,
90050 - 0xd5, 0x03, 0x5a, 0x27, 0x21, 0xa7, 0x98, 0x43, 0xf9, 0x6f, 0xfd, 0x6c,
90051 - 0x24, 0xc0, 0x73, 0x81, 0x3c, 0xb1, 0x9e, 0xa9, 0x13, 0xe8, 0xde, 0xa1,
90052 - 0xfa, 0x55, 0xa5, 0x67, 0x2f, 0x2a, 0x3d, 0xeb, 0x1c, 0x2d, 0x0a, 0xe5,
90053 - 0xed, 0xf6, 0x30, 0xe9, 0x7e, 0xc1, 0xfb, 0x7d, 0xcc, 0xd1, 0x49, 0x26,
90054 - 0xad, 0x9e, 0xa2, 0x65, 0xfd, 0xbe, 0x1c, 0x5c, 0x78, 0x58, 0x0e, 0x96,
90055 - 0xd9, 0xc7, 0x2e, 0xbc, 0x77, 0x51, 0xb6, 0x09, 0xba, 0x96, 0x3a, 0xfd,
90056 - 0xed, 0x50, 0x30, 0x96, 0x05, 0xfb, 0xb5, 0x1c, 0xba, 0xbb, 0x7e, 0x25,
90057 - 0x94, 0x5b, 0xe0, 0xde, 0x45, 0x79, 0xbd, 0x51, 0xe7, 0x1b, 0x7d, 0xff,
90058 - 0x0a, 0xc6, 0x34, 0x72, 0xee, 0x35, 0xe8, 0xd4, 0x69, 0xe2, 0x41, 0x2b,
90059 - 0xe7, 0x91, 0x7f, 0xb4, 0x2d, 0x8f, 0xd8, 0xc1, 0xfa, 0x0f, 0x81, 0x66,
90060 - 0xb4, 0x49, 0xa4, 0x21, 0xec, 0x61, 0x84, 0xfb, 0x97, 0xcf, 0xe2, 0x87,
90061 - 0x33, 0xdc, 0x83, 0x12, 0x09, 0x67, 0x80, 0x7f, 0xe3, 0xac, 0xb3, 0x0b,
90062 - 0x73, 0x0e, 0xf6, 0x77, 0x71, 0x65, 0x7f, 0x77, 0xcb, 0xc4, 0x42, 0x16,
90063 - 0x3a, 0x20, 0xaf, 0xfa, 0x89, 0xba, 0x6b, 0x6c, 0x0b, 0xea, 0x27, 0x35,
90064 - 0x1f, 0x36, 0x1b, 0xfd, 0x87, 0x32, 0x4f, 0x97, 0x35, 0x35, 0x94, 0x19,
90065 - 0x7e, 0x15, 0x30, 0x16, 0x6d, 0xc4, 0x88, 0xc6, 0x3d, 0xbe, 0x9f, 0x27,
90066 - 0x9f, 0xfb, 0xf7, 0x09, 0xf7, 0xc4, 0xa5, 0x72, 0xd1, 0x0e, 0x2b, 0xd9,
90067 - 0x5c, 0xfc, 0xd8, 0xaa, 0x6c, 0x02, 0x27, 0xab, 0x5e, 0x48, 0x5b, 0xce,
90068 - 0xa5, 0x15, 0xb4, 0x1c, 0xc2, 0x1a, 0x40, 0xb3, 0xce, 0x10, 0xe8, 0xd6,
90069 - 0x2a, 0x85, 0xfa, 0x2e, 0xfd, 0x8e, 0xe5, 0x11, 0x19, 0x8b, 0x1b, 0x3b,
90070 - 0xf4, 0xe7, 0x5b, 0x03, 0xac, 0x8b, 0x3a, 0xe5, 0xff, 0x1d, 0x0e, 0x64,
90071 - 0xdf, 0x96, 0xc2, 0xe9, 0x21, 0xc8, 0x18, 0xb1, 0xd8, 0x26, 0x2d, 0x63,
90072 - 0xec, 0x07, 0xe5, 0x67, 0x29, 0xc3, 0xa2, 0xf5, 0xe7, 0x20, 0xd2, 0x1f,
90073 - 0x87, 0x69, 0xb7, 0xd9, 0x57, 0xe1, 0xb4, 0x69, 0x6f, 0xe6, 0xd1, 0xb1,
90074 - 0xd2, 0xcf, 0x98, 0x67, 0x49, 0x58, 0xcd, 0x05, 0x65, 0x67, 0xd7, 0xce,
90075 - 0xc5, 0xea, 0x34, 0x73, 0x79, 0x34, 0x1c, 0xcc, 0xa5, 0xa3, 0xa1, 0xaf,
90076 - 0x78, 0xc3, 0x5c, 0x9a, 0x30, 0x97, 0xb8, 0xb2, 0x37, 0x9c, 0xcb, 0x05,
90077 - 0xf0, 0xbe, 0x70, 0xf6, 0xc6, 0xeb, 0x82, 0x36, 0xf1, 0x86, 0x36, 0x9d,
90078 - 0xeb, 0xda, 0xb0, 0xbe, 0x19, 0x03, 0xef, 0xce, 0x5e, 0xdd, 0x1c, 0xb4,
90079 - 0x61, 0xbd, 0x26, 0xd8, 0x37, 0xbe, 0x53, 0x7e, 0x5b, 0x83, 0xfc, 0x1f,
90080 - 0x84, 0xfc, 0x1b, 0xb9, 0x32, 0xb6, 0xd9, 0xf0, 0x75, 0x53, 0x28, 0x7f,
90081 - 0xf2, 0x03, 0xf4, 0x3d, 0x43, 0x63, 0xe5, 0x25, 0xf8, 0x0f, 0x49, 0x29,
90082 - 0xa4, 0xe1, 0x9b, 0xd8, 0x83, 0xa2, 0xfc, 0x89, 0x34, 0x7c, 0x16, 0x7b,
90083 - 0xb3, 0xc2, 0x5b, 0x85, 0x74, 0xbf, 0xb6, 0x59, 0xdf, 0x97, 0x09, 0xc8,
90084 - 0x70, 0x21, 0x9d, 0xc6, 0x78, 0xd0, 0xd5, 0x6e, 0x2f, 0xda, 0x71, 0xdc,
90085 - 0xb7, 0x22, 0xb4, 0x23, 0x17, 0xca, 0x1f, 0x47, 0x7e, 0x33, 0xde, 0xff,
90086 - 0xa9, 0x9e, 0x4f, 0x1b, 0xea, 0x7c, 0x5a, 0xf9, 0x26, 0x17, 0x54, 0x1d,
90087 - 0xf6, 0x71, 0x19, 0xf9, 0x3b, 0x50, 0x07, 0x9b, 0x1c, 0x12, 0x68, 0xb9,
90088 - 0x3b, 0xf1, 0xfb, 0x36, 0xca, 0x3e, 0x84, 0xb2, 0x2f, 0xa3, 0xec, 0x76,
90089 - 0xe4, 0x5f, 0x5c, 0xd7, 0xef, 0x36, 0xe4, 0x1f, 0xc3, 0x7b, 0xac, 0xd3,
90090 - 0xfe, 0x06, 0xde, 0xdf, 0x81, 0xdf, 0x97, 0xd7, 0xd5, 0xf9, 0x37, 0xeb,
90091 - 0xf2, 0xc6, 0x2f, 0xf8, 0x63, 0x2d, 0x73, 0xc6, 0x27, 0x08, 0xf4, 0xe8,
90092 - 0x54, 0xb9, 0x35, 0x34, 0x7c, 0x3a, 0x16, 0xda, 0x73, 0x9a, 0x78, 0x23,
90093 - 0xa2, 0xfc, 0x80, 0x08, 0xfc, 0x80, 0xe9, 0x39, 0x3a, 0x88, 0x11, 0x94,
90094 - 0x11, 0xbb, 0xcb, 0x40, 0x93, 0xf4, 0x78, 0x57, 0xb0, 0x4f, 0x0a, 0xb5,
90095 - 0x2e, 0xe4, 0xb9, 0x7f, 0x20, 0x63, 0xb5, 0x16, 0xc8, 0x75, 0x4f, 0xba,
90096 - 0x0a, 0x19, 0x3b, 0x00, 0xdf, 0x64, 0x02, 0x36, 0x70, 0xa2, 0xd6, 0x25,
90097 - 0x0f, 0xd4, 0xae, 0x44, 0x02, 0x39, 0x32, 0x63, 0x3f, 0xbd, 0x6e, 0xec,
90098 - 0x18, 0xfd, 0x0a, 0xc8, 0xfd, 0xfc, 0xe8, 0xfe, 0x39, 0x8e, 0x6f, 0x75,
90099 - 0x47, 0xa4, 0x0d, 0x73, 0xa0, 0xff, 0x28, 0xbd, 0x11, 0xe9, 0x49, 0x4e,
90100 - 0x29, 0x07, 0xb5, 0x28, 0xe1, 0x4c, 0x0f, 0xec, 0x83, 0xca, 0xc3, 0x5f,
90101 - 0x84, 0xbe, 0xab, 0xad, 0xfa, 0x91, 0xc3, 0x2b, 0x7e, 0x64, 0x17, 0xfc,
90102 - 0xcc, 0x17, 0x23, 0xc1, 0xde, 0x6f, 0x85, 0x6e, 0xb8, 0x9e, 0x38, 0x47,
90103 - 0xe9, 0x77, 0xee, 0xf1, 0x9c, 0xd7, 0xae, 0xf3, 0x94, 0x65, 0xe8, 0x0b,
90104 - 0x2b, 0xaa, 0xf4, 0x95, 0x58, 0x78, 0x37, 0x40, 0xf9, 0x45, 0x7e, 0xa1,
90105 - 0x71, 0x7f, 0xff, 0x0e, 0xf6, 0x32, 0xdf, 0x1b, 0x39, 0xc3, 0x3f, 0x4a,
90106 - 0xc6, 0x18, 0xbf, 0xf8, 0x8b, 0x75, 0x6b, 0x3b, 0xb0, 0x6e, 0x6d, 0x91,
90107 - 0x15, 0xba, 0x72, 0x8d, 0x51, 0xac, 0x71, 0x69, 0x8e, 0xb4, 0xed, 0x87,
90108 - 0x7c, 0x8a, 0x1b, 0x11, 0xca, 0x31, 0xf5, 0x6a, 0x1b, 0x74, 0x35, 0x69,
90109 - 0x17, 0x11, 0xc6, 0x3c, 0x26, 0xb0, 0xa6, 0x09, 0xac, 0x69, 0xa2, 0x81,
90110 - 0x8e, 0x07, 0x56, 0xd6, 0x64, 0xe6, 0x8d, 0x7a, 0x6a, 0xbf, 0xf1, 0x99,
90111 - 0x3f, 0xe8, 0xa9, 0x36, 0x83, 0x69, 0x38, 0x97, 0xdc, 0xba, 0xb9, 0x90,
90112 - 0x16, 0x9c, 0xcb, 0xca, 0x3c, 0xe2, 0x8c, 0x1c, 0x1d, 0xac, 0x91, 0xaf,
90113 - 0x1c, 0x73, 0xaf, 0x4c, 0x96, 0x3f, 0xa0, 0xe7, 0xd1, 0x8a, 0x79, 0x8c,
90114 - 0x41, 0x6f, 0x70, 0x3c, 0xec, 0xff, 0xda, 0x38, 0x9e, 0xe3, 0xe4, 0xbf,
90115 - 0x9e, 0x8b, 0xa1, 0x05, 0xfd, 0xb6, 0x84, 0xc6, 0xe2, 0x86, 0x5e, 0xae,
90116 - 0xc2, 0x0e, 0x97, 0xca, 0xff, 0x6d, 0x6b, 0x30, 0xb7, 0xa4, 0x9e, 0x47,
90117 - 0x40, 0x63, 0x60, 0x78, 0x60, 0xa9, 0xbc, 0xd6, 0x07, 0x8d, 0x74, 0xbd,
90118 - 0xbb, 0x49, 0xeb, 0x2b, 0xc8, 0x40, 0x63, 0xf9, 0xa7, 0x9a, 0x56, 0xeb,
90119 - 0x32, 0x3f, 0xaf, 0xf3, 0x5b, 0x42, 0xc3, 0x27, 0x4d, 0xd9, 0xd5, 0xa6,
90120 - 0x77, 0xf6, 0xf7, 0xd5, 0x26, 0xa3, 0x3f, 0x2e, 0x95, 0x1b, 0xf7, 0xfb,
90121 - 0x21, 0x2b, 0xb0, 0x3b, 0x45, 0x29, 0x0d, 0x64, 0xa1, 0xe7, 0x68, 0x7f,
90122 - 0x86, 0xac, 0xc0, 0xf6, 0xb0, 0xce, 0x21, 0x85, 0x1d, 0x23, 0x99, 0x2a,
90123 - 0xe5, 0x1e, 0xb4, 0xac, 0x8d, 0xe6, 0x66, 0x7c, 0x7f, 0xca, 0x5b, 0x4e,
90124 - 0x84, 0x85, 0x7a, 0x99, 0xb8, 0x8d, 0xe5, 0xcf, 0xa0, 0x1c, 0x76, 0xbd,
90125 - 0x3e, 0x26, 0x6c, 0xb7, 0x31, 0x3e, 0x4b, 0x6a, 0x7c, 0x16, 0x00, 0xbb,
90126 - 0x9c, 0xc2, 0x53, 0x4f, 0x8d, 0xc2, 0xfe, 0xeb, 0xe7, 0xa7, 0xf1, 0x9c,
90127 - 0x6c, 0xc4, 0x80, 0xe8, 0xb7, 0x32, 0x9a, 0x9b, 0x53, 0x76, 0x00, 0xfb,
90128 - 0x81, 0xbc, 0x3a, 0x03, 0x5e, 0x85, 0x64, 0x5a, 0xd9, 0x04, 0xce, 0x83,
90129 - 0xed, 0x2a, 0xa3, 0xdd, 0x8b, 0x4c, 0xab, 0xa3, 0xee, 0x62, 0x58, 0x0e,
90130 - 0xc4, 0x83, 0xb6, 0xcc, 0x27, 0x17, 0x8d, 0xdd, 0x6e, 0x91, 0x68, 0x86,
90131 - 0xba, 0xcd, 0x49, 0x03, 0x87, 0x62, 0x3d, 0x47, 0x47, 0xa7, 0x5d, 0xda,
90132 - 0xcb, 0xff, 0x03, 0x79, 0x68, 0x91, 0x26, 0x25, 0x27, 0x4f, 0xea, 0xb1,
90133 - 0xce, 0x60, 0xac, 0xad, 0x98, 0x6b, 0x18, 0x3a, 0x32, 0x92, 0xc0, 0x38,
90134 - 0x87, 0x2d, 0x77, 0x1b, 0xc6, 0xa3, 0xd7, 0xd8, 0x25, 0x53, 0x75, 0xca,
90135 - 0xfa, 0xdf, 0x44, 0x56, 0x7d, 0xc5, 0x13, 0x68, 0x67, 0x7c, 0x14, 0x8e,
90136 - 0x57, 0x05, 0x46, 0x69, 0xc1, 0x3a, 0x1c, 0x3b, 0x17, 0x86, 0xed, 0x9b,
90137 - 0x33, 0x75, 0x38, 0xa7, 0xe3, 0xa3, 0xa9, 0xc5, 0x14, 0xfa, 0xea, 0xa2,
90138 - 0xec, 0x41, 0xe6, 0xc2, 0xf8, 0xb1, 0x6f, 0xb6, 0x83, 0x4e, 0x1e, 0x34,
90139 - 0x76, 0x7c, 0xb5, 0xbd, 0x69, 0xd7, 0xbd, 0x38, 0xa2, 0x65, 0xf7, 0xaf,
90140 - 0xfc, 0xec, 0x38, 0xdf, 0x37, 0xc6, 0x07, 0x4c, 0x3b, 0x53, 0x27, 0xac,
90141 - 0xf5, 0xf1, 0x7d, 0xd1, 0xd5, 0x79, 0x3e, 0x35, 0x1a, 0xf8, 0x31, 0x12,
90142 - 0xc9, 0xf7, 0x0d, 0x6a, 0xbe, 0x3d, 0x8d, 0x32, 0xb6, 0xc7, 0x5e, 0xa8,
90143 - 0x37, 0x62, 0xf0, 0xa0, 0xdf, 0x22, 0xb0, 0x47, 0xa9, 0xdc, 0x04, 0x5d,
90144 - 0x93, 0x6d, 0x0f, 0x62, 0x22, 0xef, 0x85, 0xbb, 0xc1, 0x53, 0xf4, 0x53,
90145 - 0x5a, 0x69, 0xab, 0xe2, 0x93, 0xa3, 0x2f, 0xa1, 0xff, 0x23, 0xe5, 0x60,
90146 - 0xaf, 0x05, 0x74, 0x20, 0x5e, 0x0a, 0xc9, 0x92, 0x9b, 0x84, 0x7f, 0x47,
90147 - 0x3b, 0x94, 0x94, 0x97, 0x5d, 0x83, 0x9f, 0x88, 0x9d, 0x50, 0xbf, 0xce,
90148 - 0xf9, 0x70, 0xdd, 0x27, 0xb0, 0x6e, 0x5f, 0x66, 0xbd, 0x40, 0x3e, 0xfa,
90149 - 0xb0, 0x37, 0xff, 0x53, 0xc4, 0x39, 0x4a, 0x3f, 0xe0, 0x6a, 0xa4, 0x71,
90150 - 0x5d, 0xc6, 0x9e, 0x3d, 0xa5, 0x63, 0x93, 0x27, 0x34, 0x2f, 0x2b, 0xe0,
90151 - 0xe5, 0xb6, 0xa4, 0x2d, 0xbd, 0x98, 0x3b, 0xea, 0xf4, 0xf7, 0x00, 0x8f,
90152 - 0xd3, 0xd7, 0x4b, 0x60, 0x3e, 0x36, 0x64, 0x7d, 0xab, 0xb6, 0xfb, 0x9f,
90153 - 0x89, 0x52, 0x5f, 0xb4, 0xab, 0xb8, 0xe7, 0x09, 0x25, 0x6b, 0x81, 0xec,
90154 - 0x85, 0xf5, 0x7b, 0xc3, 0xef, 0x30, 0xcd, 0xae, 0xac, 0xc6, 0xf9, 0x8c,
90155 - 0xae, 0x66, 0xfd, 0x39, 0xd4, 0x0f, 0x61, 0x4d, 0xbe, 0x3f, 0xa9, 0xe6,
90156 - 0x3b, 0x0f, 0x5e, 0x87, 0xa5, 0xb4, 0x22, 0x8f, 0xf3, 0x90, 0xc7, 0x26,
90157 - 0x91, 0x8e, 0x46, 0xb9, 0xa1, 0xac, 0xbc, 0x1e, 0x65, 0x4c, 0x2e, 0x69,
90158 - 0x19, 0xde, 0x45, 0x88, 0xdd, 0x90, 0x37, 0xbc, 0xe3, 0xf3, 0x46, 0x18,
90159 - 0x90, 0x71, 0x27, 0xdf, 0x5f, 0xf2, 0x18, 0x23, 0x6c, 0x96, 0xa2, 0x1d,
90160 - 0xe0, 0x97, 0x92, 0x47, 0x39, 0xcd, 0x25, 0x23, 0xe2, 0x24, 0x0e, 0xc8,
90161 - 0x9b, 0xe8, 0x3b, 0x9b, 0x8e, 0x4a, 0xe0, 0xa7, 0x4e, 0x80, 0x6e, 0xcb,
90162 - 0xb6, 0xef, 0xbf, 0x04, 0xbf, 0xba, 0x0a, 0xbf, 0x66, 0x09, 0x69, 0xa9,
90163 - 0x86, 0x3d, 0xd0, 0x12, 0xc1, 0x9e, 0x32, 0x7b, 0x25, 0x26, 0x15, 0xd4,
90164 - 0x59, 0xc0, 0xbb, 0xc7, 0x6b, 0x86, 0xcb, 0xbe, 0x6f, 0x61, 0x5d, 0xfb,
90165 - 0xdd, 0xbf, 0xf6, 0x0b, 0xf1, 0xc6, 0xba, 0x06, 0x77, 0x11, 0x33, 0x11,
90166 - 0xf3, 0x10, 0xab, 0xf0, 0x1d, 0xf1, 0xc7, 0x61, 0xcc, 0x85, 0x32, 0xdc,
90167 - 0x26, 0xb1, 0x8c, 0x93, 0x18, 0x11, 0xa3, 0x8b, 0x5f, 0x03, 0xff, 0x8b,
90168 - 0x7e, 0xb3, 0xdb, 0x25, 0xcf, 0x83, 0xd7, 0xcf, 0xd5, 0x0d, 0xef, 0x93,
90169 - 0xe0, 0xbd, 0x53, 0x2c, 0x8a, 0x2f, 0x17, 0x3d, 0x37, 0xf9, 0x39, 0xa4,
90170 - 0xdf, 0xf1, 0x7e, 0x85, 0xb4, 0x78, 0x0a, 0x26, 0x0f, 0x38, 0x1b, 0x7a,
90171 - 0x75, 0xd6, 0xe0, 0xc7, 0x36, 0xe2, 0x7d, 0x4d, 0xc7, 0xab, 0xe8, 0xd3,
90172 - 0xb1, 0x2d, 0x80, 0xa5, 0x3b, 0x51, 0x2f, 0x90, 0x6b, 0x53, 0x76, 0x18,
90173 - 0x75, 0x39, 0x07, 0xfa, 0x62, 0xdf, 0xc5, 0x5e, 0xf2, 0xfd, 0x7b, 0xbd,
90174 - 0xc9, 0x86, 0x3d, 0x31, 0x0f, 0x1e, 0x28, 0xd9, 0x1c, 0x68, 0x17, 0xc6,
90175 - 0xee, 0xa4, 0xbf, 0x43, 0xf9, 0x0a, 0x7c, 0x86, 0x8c, 0x0e, 0xd0, 0x26,
90176 - 0x24, 0x55, 0xdc, 0x8f, 0xb6, 0xe7, 0x39, 0xd0, 0xfe, 0xd3, 0x35, 0xf2,
90177 - 0xa1, 0x55, 0xe9, 0xfe, 0xe7, 0xcb, 0xb4, 0xef, 0x01, 0x46, 0x9b, 0x50,
90178 - 0xb1, 0x5c, 0xda, 0x84, 0x34, 0x78, 0x13, 0xc4, 0xf0, 0x1e, 0x50, 0x6d,
90179 - 0x59, 0x8f, 0x6d, 0x1b, 0xf9, 0xc7, 0x3a, 0x5b, 0x81, 0xaf, 0x28, 0x83,
90180 - 0x6d, 0xc0, 0x25, 0xed, 0x72, 0x20, 0xdd, 0x0c, 0xba, 0x77, 0x28, 0x3c,
90181 - 0x65, 0xb9, 0x1f, 0x86, 0xed, 0x02, 0xa6, 0xb3, 0x1d, 0x6f, 0xd5, 0xf7,
90182 - 0xb8, 0x1d, 0x65, 0x3f, 0x05, 0xfd, 0x59, 0xb6, 0x49, 0xc7, 0xaf, 0x1f,
90183 - 0xc6, 0xfe, 0xab, 0x6c, 0x0d, 0xe2, 0x22, 0xe4, 0x83, 0xd1, 0x03, 0xc6,
90184 - 0xfe, 0xd9, 0x1a, 0x47, 0x92, 0x37, 0x41, 0x0c, 0xc5, 0x52, 0x75, 0x89,
90185 - 0xe7, 0x1b, 0xfd, 0x16, 0xee, 0x3b, 0xdf, 0xbf, 0xe8, 0x29, 0x7b, 0x0a,
90186 - 0x1e, 0xec, 0x86, 0x0d, 0x8b, 0x68, 0x5a, 0xb7, 0x82, 0xd6, 0x81, 0x8d,
90187 - 0x4d, 0x76, 0x40, 0xef, 0xb8, 0x56, 0x53, 0x40, 0x3f, 0x62, 0x85, 0xbf,
90188 - 0x85, 0x1f, 0x4f, 0xff, 0x81, 0x38, 0x81, 0x73, 0x47, 0xbb, 0x05, 0xd6,
90189 - 0xa5, 0x2d, 0x7e, 0x0c, 0x63, 0x84, 0x25, 0xd9, 0xc9, 0xfc, 0x03, 0xba,
90190 - 0x0d, 0x9f, 0x7d, 0xe9, 0xdd, 0xd1, 0x28, 0xcf, 0x83, 0x98, 0x27, 0xd7,
90191 - 0x63, 0xe2, 0x7a, 0x5d, 0x4a, 0x07, 0xac, 0xca, 0x85, 0x99, 0x93, 0x19,
90192 - 0x97, 0x73, 0x4b, 0x48, 0x07, 0xe6, 0x76, 0x37, 0x74, 0xf4, 0x8e, 0x0e,
90193 - 0xf6, 0x69, 0xc6, 0x6e, 0x9c, 0x93, 0xc1, 0x2f, 0x81, 0xdd, 0x8d, 0xba,
90194 - 0xcd, 0xb2, 0xa3, 0x93, 0xb4, 0xeb, 0x52, 0xba, 0x7a, 0x95, 0x1f, 0xb4,
90195 - 0xbf, 0x1c, 0x7b, 0x7d, 0xf9, 0x1d, 0x0d, 0xf3, 0x6a, 0x3c, 0x03, 0x20,
90196 - 0x76, 0xd8, 0x89, 0x77, 0x9c, 0x13, 0x9c, 0xe4, 0xb8, 0x2f, 0x7b, 0x14,
90197 - 0xdd, 0x38, 0xb7, 0xc6, 0x79, 0x10, 0x43, 0x71, 0xce, 0x9c, 0xc3, 0x7a,
90198 - 0x6c, 0xc2, 0xf9, 0xfc, 0x57, 0xcd, 0xc3, 0x4d, 0x7a, 0x5d, 0x06, 0xcb,
90199 - 0xa4, 0xd0, 0xf6, 0x3f, 0x60, 0x0d, 0x7c, 0xe6, 0x3a, 0x8c, 0xcd, 0x4e,
90200 - 0x05, 0xfd, 0xb4, 0x98, 0x78, 0xb0, 0x89, 0x6b, 0x70, 0x5e, 0xdc, 0x33,
90201 - 0x86, 0x4e, 0x1d, 0x9a, 0x47, 0xbb, 0xd7, 0x8d, 0xeb, 0x78, 0x6b, 0xf5,
90202 - 0xc8, 0xed, 0x0d, 0xeb, 0xeb, 0x97, 0xe2, 0x02, 0xe5, 0xe2, 0x36, 0xa4,
90203 - 0x06, 0x13, 0x0c, 0x40, 0xf7, 0xbf, 0x2b, 0x26, 0xe0, 0x59, 0xd5, 0x78,
90204 - 0x01, 0x3e, 0x99, 0xd2, 0xfd, 0x6a, 0x2f, 0xc6, 0x90, 0x87, 0x3e, 0xa9,
90205 - 0xdf, 0x43, 0x19, 0x1b, 0x9f, 0xa8, 0x79, 0xe3, 0x93, 0xb5, 0x81, 0x71,
90206 - 0xe2, 0xa9, 0x40, 0xe6, 0x50, 0xbf, 0x26, 0x13, 0xf0, 0xb3, 0xc7, 0x73,
90207 - 0xaa, 0x9d, 0x8a, 0x31, 0x6c, 0xd0, 0x8f, 0x70, 0x3f, 0x4e, 0x04, 0x63,
90208 - 0xc5, 0xc6, 0xf3, 0xd0, 0x41, 0x0b, 0xb3, 0xb0, 0x4b, 0xae, 0x93, 0xa5,
90209 - 0x5c, 0xee, 0xf7, 0x9c, 0x11, 0x25, 0x7b, 0x71, 0x67, 0x8c, 0xbc, 0xac,
90210 - 0xce, 0xfe, 0xb2, 0x2c, 0xcc, 0xf9, 0x72, 0x17, 0x74, 0xe1, 0x43, 0x90,
90211 - 0x55, 0x39, 0x07, 0x45, 0x78, 0x0e, 0xca, 0xeb, 0x5c, 0x5c, 0xac, 0x53,
90212 - 0x5d, 0x12, 0x3d, 0x96, 0x90, 0xc8, 0x31, 0x62, 0xcb, 0x94, 0x7d, 0x97,
90213 - 0x08, 0xec, 0xd8, 0x8b, 0x1f, 0xb2, 0xc4, 0x19, 0xcc, 0x4a, 0x2a, 0xf9,
90214 - 0x38, 0x6c, 0x6f, 0x15, 0x69, 0x49, 0x52, 0xe9, 0xb3, 0xe8, 0x2b, 0x7a,
90215 - 0x0e, 0x75, 0xd1, 0x6e, 0xd3, 0x52, 0x12, 0xbf, 0x4e, 0x69, 0x59, 0x0a,
90216 - 0xf6, 0x4a, 0xcb, 0xd2, 0x5a, 0xff, 0x7c, 0x68, 0xc5, 0x3f, 0xe7, 0xfb,
90217 - 0xb7, 0x75, 0x5c, 0xe1, 0x8b, 0xfa, 0x8c, 0x81, 0x32, 0x42, 0x7b, 0xa4,
90218 - 0x7c, 0x63, 0xe8, 0xfd, 0x2f, 0xc2, 0xc7, 0x02, 0x0e, 0x2c, 0xc3, 0x97,
90219 - 0xca, 0xf8, 0xf2, 0xac, 0x57, 0xf4, 0x73, 0x03, 0xbe, 0xbc, 0xe6, 0xb9,
90220 - 0xc5, 0x82, 0x38, 0x6f, 0x53, 0xdf, 0xfd, 0x85, 0xf7, 0x4f, 0xe4, 0xfe,
90221 - 0x76, 0xe7, 0xfe, 0x6c, 0xa8, 0xe8, 0xb7, 0xc2, 0xb7, 0xba, 0x31, 0x73,
90222 - 0x58, 0xf6, 0x6f, 0x5f, 0x86, 0x0f, 0x9c, 0xbd, 0x11, 0x38, 0x2b, 0x51,
90223 - 0x50, 0xba, 0xea, 0x75, 0xe5, 0xb7, 0x7d, 0xa2, 0xe7, 0xb0, 0x6c, 0xd9,
90224 - 0xee, 0xd8, 0xd7, 0xc2, 0xc4, 0x40, 0x87, 0x25, 0x0f, 0xfd, 0x9f, 0x0f,
90225 - 0xbb, 0xf6, 0x5e, 0x71, 0x46, 0x1e, 0x11, 0x9e, 0x0d, 0xba, 0xd2, 0x7d,
90226 - 0xcc, 0x4d, 0x7c, 0x32, 0xd4, 0x7b, 0xf0, 0x93, 0xc0, 0xae, 0xdd, 0xe7,
90227 - 0x98, 0xf7, 0x25, 0xb6, 0xdd, 0xc6, 0x73, 0x5c, 0xba, 0x4f, 0x25, 0x25,
90228 - 0x05, 0xba, 0xf4, 0x29, 0x9a, 0xf0, 0x6c, 0x22, 0x21, 0xbd, 0xc7, 0x88,
90229 - 0x49, 0x14, 0x6d, 0xfa, 0x40, 0x9b, 0x34, 0x68, 0x03, 0x9f, 0x66, 0x9b,
90230 - 0x7d, 0x0d, 0xe9, 0x65, 0x49, 0x0d, 0x7e, 0x0f, 0xb4, 0xe9, 0x03, 0x6d,
90231 - 0x7a, 0xcf, 0x25, 0xd1, 0x1e, 0x7d, 0x2c, 0x75, 0x23, 0x6d, 0x91, 0x5f,
90232 - 0xbb, 0xbe, 0x13, 0xcf, 0xae, 0xa4, 0x8e, 0xc5, 0x30, 0x46, 0x48, 0xf6,
90233 - 0xf4, 0x14, 0x65, 0x78, 0x3b, 0x30, 0x74, 0xfc, 0xb0, 0x5c, 0x81, 0x1d,
90234 - 0x2a, 0xc3, 0x7f, 0x7b, 0x76, 0xd0, 0x19, 0x5b, 0x86, 0x2e, 0xad, 0xdf,
90235 - 0xed, 0xcb, 0x37, 0xb6, 0x7f, 0xd3, 0x4f, 0x5c, 0xef, 0xdc, 0x2f, 0xa1,
90236 - 0x01, 0x99, 0x2e, 0x2b, 0xfb, 0x90, 0xc8, 0x85, 0x15, 0xd6, 0xc1, 0x1a,
90237 - 0x8b, 0xb0, 0x31, 0x3c, 0xf3, 0x74, 0xa1, 0xeb, 0x1f, 0x91, 0x87, 0x2a,
90238 - 0x53, 0xf8, 0x01, 0x77, 0xcf, 0xb0, 0xee, 0x41, 0xe0, 0xed, 0x87, 0xe5,
90239 - 0xc0, 0x0c, 0xb0, 0x58, 0x06, 0xf3, 0x1e, 0x70, 0x81, 0xcb, 0x33, 0xcd,
90240 - 0xd2, 0x86, 0x32, 0xd0, 0x76, 0xac, 0xbe, 0x1e, 0xd7, 0x2e, 0x83, 0x0f,
90241 - 0x83, 0xf2, 0x27, 0xf5, 0x01, 0xf9, 0x4a, 0xbd, 0x5f, 0xbe, 0x04, 0xdb,
90242 - 0xf2, 0x5c, 0xbd, 0x0b, 0x7b, 0x25, 0x01, 0x9e, 0x64, 0xc0, 0x1f, 0x4f,
90243 - 0xbe, 0x5c, 0x4f, 0xcb, 0x17, 0x41, 0xab, 0xe7, 0xf1, 0x1b, 0x2e, 0xa7,
90244 - 0x65, 0x4f, 0xb9, 0x5f, 0xf3, 0x88, 0xfc, 0x71, 0x31, 0x1f, 0x17, 0x6b,
90245 - 0x77, 0x9e, 0x29, 0x62, 0xff, 0x2d, 0xd4, 0xdd, 0xb7, 0xaa, 0x34, 0xb2,
90246 - 0x6d, 0xb6, 0x9c, 0x59, 0xb1, 0x2f, 0x45, 0xdf, 0x76, 0x9d, 0xa3, 0x13,
90247 - 0xe0, 0x43, 0x15, 0xfb, 0x74, 0x4c, 0xd1, 0x7e, 0xd5, 0xf6, 0x54, 0x03,
90248 - 0xdb, 0x63, 0xd6, 0x37, 0x5b, 0x90, 0xef, 0x48, 0xee, 0xc4, 0xb4, 0xec,
90249 - 0x3f, 0xe9, 0xcb, 0x6f, 0x7a, 0x3e, 0xe4, 0x98, 0xba, 0x78, 0x80, 0x3a,
90250 - 0x3e, 0x39, 0x11, 0xb6, 0x94, 0x9f, 0x1b, 0x60, 0x8d, 0xef, 0x75, 0x60,
90251 - 0xcf, 0xa6, 0xb3, 0xd6, 0x94, 0xa4, 0x4e, 0x4c, 0x49, 0xf7, 0x09, 0xc8,
90252 - 0x82, 0xc7, 0xbe, 0x96, 0x6d, 0xeb, 0x1d, 0xf2, 0xc0, 0x71, 0x9c, 0xc1,
90253 - 0xbc, 0xb8, 0xf6, 0x5b, 0x92, 0xc6, 0xf8, 0x87, 0xa4, 0x07, 0x6d, 0x5c,
90254 - 0xb4, 0xb9, 0xa6, 0xc6, 0x6e, 0xc5, 0xd8, 0xcd, 0x72, 0x24, 0xee, 0x40,
90255 - 0xd6, 0x68, 0xc3, 0xff, 0xaf, 0xe4, 0xaa, 0x4c, 0x7f, 0x24, 0xb9, 0x33,
90256 - 0x6f, 0x37, 0x4b, 0x0b, 0x9f, 0xa1, 0x1a, 0xe6, 0x59, 0xde, 0x8d, 0x94,
90257 - 0xe5, 0xae, 0x58, 0xc7, 0x7f, 0x22, 0xb9, 0xf3, 0x1c, 0xfb, 0x2d, 0x94,
90258 - 0x7f, 0x43, 0x72, 0xc7, 0x7f, 0x8a, 0xfc, 0x15, 0xa4, 0x6f, 0x23, 0x1d,
90259 - 0x93, 0xee, 0xe3, 0xf0, 0x91, 0xcf, 0x7f, 0x1b, 0x79, 0xf8, 0x74, 0xe7,
90260 - 0x8f, 0xa0, 0xde, 0x6e, 0xcc, 0xef, 0xde, 0x18, 0xb0, 0x06, 0x74, 0x5e,
90261 - 0xec, 0xba, 0x60, 0xfe, 0x2c, 0x67, 0x19, 0xdf, 0x1d, 0x81, 0x4e, 0xfb,
90262 - 0x1f, 0xd0, 0x69, 0xfa, 0x79, 0x81, 0x79, 0xea, 0x36, 0x3e, 0x4f, 0x81,
90263 - 0x26, 0x87, 0x90, 0xf7, 0xe5, 0x61, 0x8f, 0xf6, 0x66, 0xa7, 0x8c, 0xdb,
90264 - 0x45, 0xbf, 0x05, 0xb8, 0xa2, 0x15, 0xfb, 0x60, 0x6a, 0xc7, 0xc6, 0xfb,
90265 - 0xe0, 0x68, 0xef, 0x61, 0xd9, 0xb4, 0xdd, 0xac, 0xdf, 0xac, 0xd7, 0xb5,
90266 - 0x7f, 0xa8, 0xe8, 0xe0, 0x14, 0x3f, 0x29, 0x5c, 0x87, 0x9b, 0x78, 0xd2,
90267 - 0xea, 0xbd, 0xff, 0x21, 0xec, 0x03, 0xeb, 0x3c, 0xf3, 0xc1, 0x3e, 0xb0,
90268 - 0xce, 0x43, 0x37, 0xcc, 0xc3, 0x47, 0x9b, 0xef, 0x92, 0xe6, 0xe3, 0xab,
90269 - 0xfb, 0xa0, 0xe9, 0xf8, 0xcf, 0xdf, 0x07, 0xcd, 0xe7, 0x51, 0xef, 0x3c,
90270 - 0x69, 0x86, 0x3e, 0xce, 0x90, 0x66, 0x9d, 0x48, 0x1f, 0xc1, 0x5a, 0x39,
90271 - 0xf7, 0x66, 0xcc, 0x3d, 0xc0, 0x45, 0x1f, 0x82, 0xbc, 0x7f, 0x62, 0xfb,
90272 - 0x21, 0x5d, 0xfe, 0x9f, 0xfd, 0x91, 0xb8, 0x53, 0x91, 0x10, 0x69, 0x8a,
90273 - 0xba, 0x55, 0xd2, 0xf0, 0x79, 0xd0, 0xe6, 0xa0, 0x74, 0x93, 0x7e, 0xd5,
90274 - 0xbd, 0xc8, 0x17, 0xfd, 0x28, 0x7d, 0x74, 0x45, 0x4f, 0xe0, 0xa4, 0x01,
90275 - 0x96, 0xbf, 0x0a, 0x99, 0x21, 0xc6, 0x7c, 0x5d, 0xf6, 0xcf, 0xf8, 0x32,
90276 - 0xee, 0x71, 0xfd, 0x6f, 0x62, 0xfd, 0xd9, 0xed, 0x71, 0x59, 0x4e, 0xc6,
90277 - 0x41, 0x93, 0x05, 0xe8, 0xf6, 0x2b, 0x12, 0xd0, 0x81, 0x31, 0xe7, 0x3d,
90278 - 0xe2, 0x26, 0x86, 0xc5, 0x4d, 0x7f, 0x0f, 0x74, 0x18, 0x86, 0xec, 0xe7,
90279 - 0xeb, 0x94, 0x9d, 0x57, 0x64, 0x08, 0x32, 0xf1, 0x86, 0xe7, 0xa4, 0x81,
90280 - 0x85, 0xa0, 0x2f, 0x28, 0x17, 0x94, 0x89, 0x36, 0xa5, 0x93, 0xe6, 0x3d,
90281 - 0xe7, 0xa9, 0xaa, 0xdc, 0x2a, 0xf3, 0x0a, 0x9b, 0xe2, 0xdd, 0x71, 0x65,
90282 - 0x2f, 0xd2, 0x13, 0x56, 0x0f, 0x74, 0x74, 0x5a, 0xec, 0xde, 0x9b, 0x9b,
90283 - 0xcd, 0x3d, 0x85, 0xc2, 0x89, 0x90, 0x4c, 0xf5, 0x92, 0x57, 0xec, 0x17,
90284 - 0xf9, 0x6a, 0xd1, 0x8f, 0xb8, 0x6f, 0xf9, 0xa7, 0x3b, 0x93, 0xf2, 0xe9,
90285 - 0xde, 0x15, 0xb9, 0xac, 0x88, 0x04, 0xfb, 0x62, 0x48, 0xf1, 0xc3, 0xcc,
90286 - 0xdb, 0xac, 0xc5, 0xbc, 0xeb, 0x6f, 0x78, 0xc7, 0xb5, 0x50, 0xd6, 0x57,
90287 - 0xf6, 0x4e, 0xf2, 0x9d, 0x73, 0xfd, 0x5d, 0xd0, 0xcc, 0x79, 0xaa, 0x24,
90288 - 0xaf, 0x41, 0xf6, 0x40, 0xc3, 0xf3, 0x4c, 0x49, 0xc3, 0x29, 0xc8, 0xfd,
90289 - 0xab, 0xb2, 0xe7, 0x04, 0xf7, 0xcc, 0xab, 0x58, 0xab, 0xd2, 0x25, 0xd0,
90290 - 0x11, 0xec, 0xcf, 0x97, 0x69, 0x8f, 0xb1, 0x92, 0x5b, 0x13, 0x93, 0xf0,
90291 - 0xe1, 0x26, 0x6c, 0x5f, 0x96, 0xbc, 0xa2, 0x2c, 0x0d, 0xa2, 0x4d, 0xf5,
90292 - 0x11, 0xfc, 0xda, 0xf4, 0xda, 0x3e, 0x0b, 0xba, 0x3b, 0xc9, 0x8a, 0xf5,
90293 - 0x19, 0xd0, 0xfd, 0x61, 0x49, 0x1d, 0x5f, 0xd1, 0x35, 0x90, 0xbb, 0x40,
90294 - 0xd7, 0xa4, 0xce, 0xdb, 0x52, 0x2d, 0xbb, 0xf2, 0x71, 0xea, 0x90, 0x32,
90295 - 0xd7, 0x05, 0x1d, 0xc3, 0xf3, 0xdb, 0x32, 0xf4, 0x4c, 0x19, 0x3a, 0x05,
90296 - 0x3a, 0xe4, 0x4b, 0x28, 0xff, 0x22, 0xea, 0x3c, 0x0f, 0x9f, 0xe7, 0x39,
90297 - 0x60, 0xbf, 0x8b, 0xc0, 0x14, 0x17, 0xca, 0x59, 0xed, 0x1b, 0xaa, 0xf5,
90298 - 0xc2, 0x66, 0x29, 0x7f, 0x45, 0xaa, 0x15, 0xd2, 0xe3, 0x27, 0x8a, 0xb7,
90299 - 0x39, 0x6f, 0x2b, 0x71, 0x16, 0x66, 0x26, 0x52, 0xa9, 0x18, 0x9a, 0x50,
90300 - 0xf7, 0x31, 0xf6, 0x6f, 0x74, 0x65, 0xeb, 0x3a, 0x5d, 0x29, 0xf2, 0x62,
90301 - 0x2d, 0xc0, 0x93, 0xc4, 0xc7, 0xa5, 0x99, 0xe4, 0xca, 0x19, 0x59, 0x09,
90302 - 0x76, 0xf3, 0x32, 0xfc, 0x92, 0x58, 0xe6, 0x5b, 0x12, 0x3b, 0xe5, 0xfb,
90303 - 0xdf, 0x87, 0xdd, 0x2c, 0x82, 0x27, 0x56, 0x08, 0xe5, 0x8b, 0x7c, 0x47,
90304 - 0xb9, 0xa7, 0x6c, 0x87, 0x18, 0x2b, 0x97, 0x97, 0x51, 0x56, 0x55, 0x3e,
90305 - 0xd3, 0xb7, 0x31, 0x1f, 0x3d, 0x3f, 0x55, 0xc6, 0x7a, 0xcd, 0x92, 0x1f,
90306 - 0x4f, 0xcb, 0xe3, 0xe5, 0x6d, 0x76, 0x33, 0xda, 0x57, 0x16, 0xd9, 0xc6,
90307 - 0x19, 0xe4, 0x95, 0x9d, 0x97, 0x17, 0x59, 0xde, 0x25, 0x57, 0x66, 0x32,
90308 - 0x6a, 0x0e, 0xd5, 0xb9, 0x8c, 0x04, 0x31, 0x49, 0xea, 0x2b, 0xce, 0x15,
90309 - 0x79, 0xfa, 0x96, 0x65, 0xda, 0xd9, 0x88, 0x14, 0x13, 0xa4, 0x75, 0x42,
90310 - 0x2e, 0xcf, 0xc4, 0x37, 0x31, 0x86, 0x93, 0x73, 0xf9, 0x6c, 0x62, 0x07,
90311 - 0xf6, 0xfb, 0x88, 0x1d, 0x30, 0x5e, 0x10, 0x81, 0x2d, 0x53, 0x31, 0x04,
90312 - 0xa4, 0xc9, 0x06, 0x9f, 0x95, 0xef, 0x03, 0x6c, 0xb4, 0x8a, 0x1f, 0x89,
90313 - 0x27, 0xb9, 0x5e, 0xa7, 0xb8, 0x0c, 0xfd, 0xd1, 0x91, 0x79, 0x49, 0xee,
90314 - 0x99, 0x0f, 0xd6, 0x67, 0x9d, 0x11, 0xde, 0xd3, 0x90, 0x6b, 0x73, 0x8e,
90315 - 0x77, 0x15, 0x98, 0x22, 0x1f, 0xf7, 0xc0, 0xaf, 0x3f, 0x8b, 0x41, 0x7f,
90316 - 0x0d, 0x66, 0xad, 0x3d, 0x9b, 0x02, 0x7c, 0x16, 0x91, 0xa9, 0x19, 0x9e,
90317 - 0xa9, 0x41, 0xb7, 0x01, 0x43, 0xfe, 0xf3, 0x08, 0x9e, 0x6b, 0xcc, 0xc3,
90318 - 0x4f, 0x0b, 0x7c, 0x50, 0x3c, 0x07, 0xfd, 0x91, 0xe6, 0xd6, 0x3c, 0xd7,
90319 - 0x1e, 0x92, 0x7b, 0x80, 0x4e, 0x04, 0xfd, 0x77, 0xeb, 0xb1, 0xba, 0xcf,
90320 - 0xa4, 0x19, 0xc3, 0x93, 0x14, 0xf4, 0x45, 0x6e, 0x2e, 0x82, 0xb1, 0xba,
90321 - 0x34, 0x36, 0xe7, 0xbb, 0xf5, 0xd8, 0xd3, 0xf8, 0x78, 0x69, 0x79, 0xa2,
90322 - 0x6c, 0xb0, 0x5e, 0x1a, 0x36, 0x56, 0x22, 0x23, 0x7d, 0xbe, 0x7c, 0xdf,
90323 - 0x23, 0xbd, 0xfa, 0x91, 0xf7, 0xe4, 0x68, 0xfd, 0xdd, 0xce, 0xce, 0x1a,
90324 - 0xff, 0x5a, 0x31, 0x47, 0xfe, 0x30, 0x3f, 0xe0, 0x23, 0xce, 0xdd, 0x82,
90325 - 0x3d, 0x2f, 0x01, 0x77, 0x59, 0xe7, 0xba, 0xd4, 0x3b, 0x0b, 0xd8, 0xa0,
90326 - 0x3a, 0x03, 0xdd, 0x78, 0x8e, 0xe7, 0x89, 0xd0, 0x6d, 0xe7, 0xa2, 0x52,
90327 - 0x9a, 0xa5, 0x5c, 0x4a, 0x87, 0x05, 0x7e, 0xb1, 0x7e, 0x75, 0xa6, 0x0b,
90328 - 0x69, 0x2b, 0xd2, 0xa4, 0xea, 0xa7, 0x3a, 0xe3, 0xaa, 0xf6, 0xd5, 0x99,
90329 - 0xb4, 0x6a, 0x57, 0x9d, 0xe9, 0x47, 0xea, 0x49, 0xd3, 0x39, 0x38, 0x4e,
90330 - 0xe7, 0x7a, 0x65, 0xea, 0x34, 0xec, 0xcb, 0x80, 0xa5, 0xce, 0xe2, 0x27,
90331 - 0x60, 0x7f, 0x22, 0xf0, 0xb2, 0xae, 0xda, 0x83, 0xc0, 0x58, 0x3b, 0x81,
90332 - 0x41, 0x76, 0x8a, 0x7b, 0x8a, 0xeb, 0xa7, 0xee, 0xbd, 0xcc, 0x78, 0x52,
90333 - 0xe2, 0x41, 0xc9, 0xca, 0x81, 0xd9, 0x66, 0xec, 0xd7, 0x88, 0x5d, 0x92,
90334 - 0x1e, 0x7b, 0x18, 0xf9, 0x42, 0x85, 0x74, 0xbb, 0x4f, 0xf9, 0x6e, 0x39,
90335 - 0xef, 0x1c, 0x78, 0x92, 0xc1, 0x18, 0xef, 0xa7, 0x7d, 0x1f, 0xe4, 0xcf,
90336 - 0xd5, 0x7d, 0x64, 0x30, 0x9f, 0x46, 0x7a, 0xf0, 0x1c, 0x31, 0xfb, 0x73,
90337 - 0xce, 0x11, 0x29, 0xd7, 0xa4, 0xef, 0x7d, 0x72, 0xd9, 0xcd, 0xc8, 0xcb,
90338 - 0x6e, 0x5a, 0xae, 0xb8, 0x3b, 0xe4, 0xeb, 0xb0, 0xd3, 0x2f, 0xb9, 0x7d,
90339 - 0x9b, 0x88, 0x05, 0xaa, 0xea, 0x6c, 0xc6, 0xf0, 0xca, 0xd5, 0xf1, 0xc4,
90340 - 0x1f, 0xc8, 0xd2, 0x0c, 0xb1, 0xb3, 0xbf, 0x7b, 0xbf, 0x57, 0xa4, 0xdd,
90341 - 0xc2, 0x1c, 0x88, 0xd5, 0x8a, 0xb0, 0x7f, 0x87, 0x65, 0xd8, 0xa3, 0xdd,
90342 - 0x53, 0x36, 0x2a, 0x31, 0x1c, 0xec, 0x67, 0xaf, 0x00, 0xbd, 0x7a, 0x79,
90343 - 0x16, 0xfb, 0x49, 0x28, 0xff, 0x78, 0xae, 0x90, 0xef, 0xae, 0x3c, 0x59,
90344 - 0xe6, 0x3a, 0x4b, 0xd7, 0xb5, 0x48, 0x58, 0x46, 0x14, 0x5e, 0x68, 0x93,
90345 - 0x17, 0x17, 0x37, 0x8b, 0x05, 0x0b, 0x65, 0xdd, 0x12, 0x55, 0xb7, 0x18,
90346 - 0xe8, 0x7f, 0x4b, 0x3b, 0xef, 0x22, 0xbd, 0x05, 0xda, 0x30, 0x16, 0x80,
90347 - 0xb5, 0xb5, 0x73, 0x25, 0x26, 0xdf, 0x8f, 0xfd, 0xf5, 0x96, 0xda, 0x6b,
90348 - 0x79, 0x37, 0x8e, 0x67, 0xa6, 0xdc, 0x73, 0x8c, 0x3b, 0x85, 0x75, 0xfc,
90349 - 0xf7, 0xaf, 0xd4, 0xfb, 0x66, 0x77, 0x17, 0x70, 0x1d, 0xe5, 0x15, 0xe9,
90350 - 0x52, 0x30, 0x6e, 0x1e, 0x38, 0xae, 0xd0, 0xcf, 0x3b, 0x14, 0x4e, 0xba,
90351 - 0x88, 0xbd, 0x30, 0xa1, 0xea, 0xef, 0xc4, 0x7e, 0xda, 0xd4, 0x42, 0xfc,
90352 - 0xb0, 0x07, 0xb2, 0xf8, 0xd2, 0x0c, 0x9f, 0xf9, 0x9e, 0xfe, 0x15, 0xe3,
90353 - 0x6b, 0x17, 0x46, 0xa7, 0xdd, 0xdf, 0xd2, 0xfb, 0x47, 0x42, 0x77, 0xf5,
90354 - 0x01, 0x87, 0x1e, 0x6b, 0xc2, 0x5a, 0x9c, 0x64, 0x32, 0x64, 0x75, 0x5a,
90355 - 0xc0, 0xf1, 0xc3, 0xca, 0xe6, 0xf6, 0x61, 0xfe, 0x69, 0x39, 0x93, 0x6e,
90356 - 0x93, 0xaa, 0xed, 0xaa, 0x3b, 0x57, 0xcb, 0xf6, 0x76, 0x62, 0x7d, 0xfc,
90357 - 0x36, 0xa1, 0xac, 0x07, 0x69, 0x33, 0xd2, 0xdb, 0xa4, 0x74, 0xb2, 0xaf,
90358 - 0x25, 0xe8, 0x2f, 0xba, 0x2e, 0xff, 0x75, 0x3d, 0xce, 0x5f, 0x6a, 0x7f,
90359 - 0x8a, 0xe3, 0x44, 0xc5, 0xfd, 0x7c, 0xab, 0xf4, 0x1c, 0xb3, 0x81, 0x6d,
90360 - 0x13, 0xc0, 0xba, 0x5d, 0x92, 0x3e, 0x96, 0x94, 0x5b, 0x8e, 0x99, 0x38,
90361 - 0xd1, 0x97, 0x47, 0x53, 0x2a, 0x66, 0xf8, 0xa5, 0x51, 0xb7, 0xa2, 0xce,
90362 - 0x53, 0xf5, 0xdd, 0xb0, 0x65, 0x7d, 0x67, 0xec, 0x1b, 0xa3, 0x7d, 0x2a,
90363 - 0xfd, 0xf6, 0x68, 0x5a, 0xa5, 0xaf, 0x8c, 0xde, 0x52, 0x0b, 0xfc, 0xa3,
90364 - 0xd2, 0x42, 0x5a, 0x3e, 0x57, 0x26, 0xbe, 0x1c, 0x00, 0x76, 0xf4, 0xa0,
90365 - 0x67, 0xfa, 0xa1, 0x67, 0xd2, 0xd0, 0x33, 0x83, 0xd4, 0x33, 0xd0, 0xdb,
90366 - 0xaf, 0x40, 0x6f, 0x7b, 0xf2, 0x06, 0xe4, 0xf5, 0x82, 0xd7, 0x0c, 0x5c,
90367 - 0xe8, 0xfb, 0xc1, 0x5a, 0x9d, 0xa7, 0x96, 0xc1, 0xdf, 0xea, 0x59, 0x89,
90368 - 0xb5, 0x43, 0x07, 0x6d, 0x9f, 0x6f, 0x92, 0x85, 0xb8, 0xef, 0x9f, 0xf0,
90369 - 0x5c, 0xb9, 0x86, 0xfa, 0x39, 0x97, 0xfb, 0x78, 0xa2, 0x85, 0xfe, 0xd8,
90370 - 0xb5, 0x99, 0x1d, 0xd0, 0x49, 0x94, 0xf7, 0x98, 0x54, 0xc7, 0x13, 0xb2,
90371 - 0x08, 0xff, 0x6c, 0xb5, 0x4e, 0x1a, 0xcf, 0xdc, 0xff, 0xff, 0x12, 0x75,
90372 - 0xd3, 0xb0, 0x0f, 0xb6, 0x2c, 0xf5, 0x25, 0xe5, 0x4c, 0x9f, 0x33, 0x98,
90373 - 0xb4, 0xa8, 0xbb, 0x92, 0x52, 0x81, 0xaf, 0x5f, 0x2d, 0xb3, 0x3e, 0xeb,
90374 - 0x61, 0x7f, 0x96, 0x83, 0x76, 0xd3, 0x65, 0xa3, 0x27, 0x20, 0x9f, 0x73,
90375 - 0x8c, 0x03, 0x06, 0x36, 0xc0, 0xb2, 0x9a, 0x21, 0x07, 0x1e, 0xe8, 0x3f,
90376 - 0x8e, 0xf2, 0x01, 0xde, 0x25, 0x40, 0x19, 0xb1, 0x50, 0x49, 0xf1, 0x38,
90377 - 0xef, 0x8d, 0xa3, 0x8c, 0x6d, 0x9c, 0x44, 0x0a, 0xe5, 0x63, 0x92, 0x4a,
90378 - 0x14, 0xd4, 0xbd, 0xa6, 0x4e, 0x94, 0xb1, 0x8f, 0xb0, 0x8e, 0xc7, 0xcc,
90379 - 0xb6, 0x50, 0x8e, 0xc2, 0xae, 0x29, 0xdf, 0xa6, 0x62, 0x03, 0x59, 0xdb,
90380 - 0xc3, 0x7e, 0x60, 0x59, 0xca, 0x66, 0xbb, 0xbc, 0xe7, 0x29, 0x5d, 0x78,
90381 - 0xaf, 0x3e, 0xb7, 0xb8, 0xa7, 0xd6, 0x2a, 0xf9, 0x5a, 0xd3, 0x7b, 0xe8,
90382 - 0x7f, 0xb3, 0x27, 0x2f, 0x27, 0x6c, 0xe1, 0x19, 0x7b, 0xb0, 0xcf, 0x23,
90383 - 0x3b, 0xb8, 0x27, 0x40, 0x77, 0xd8, 0xdf, 0xe7, 0xb1, 0xde, 0xe7, 0x60,
90384 - 0x7f, 0x2f, 0xc2, 0xfe, 0x5e, 0x28, 0xaf, 0xea, 0x8f, 0xc0, 0xee, 0x52,
90385 - 0x07, 0x3c, 0x03, 0x9e, 0x8d, 0x01, 0xf7, 0xef, 0x85, 0x3f, 0x30, 0x02,
90386 - 0xec, 0x3f, 0x04, 0xfe, 0x65, 0xc0, 0xbb, 0x71, 0xde, 0x45, 0x01, 0x1f,
90387 - 0x07, 0xd5, 0x59, 0xe6, 0xac, 0x3a, 0xcf, 0xff, 0x81, 0xb2, 0xbd, 0x8f,
90388 - 0x97, 0x2d, 0xd8, 0x87, 0xa2, 0x7f, 0x9d, 0xeb, 0x00, 0xff, 0xad, 0xec,
90389 - 0xe7, 0xc1, 0x17, 0xa1, 0x57, 0x7e, 0x8c, 0x79, 0x3d, 0x37, 0x4b, 0x7b,
90390 - 0x8e, 0x3a, 0x01, 0xde, 0xf6, 0x18, 0xeb, 0xc2, 0x7e, 0x3e, 0x7a, 0x59,
90391 - 0x96, 0x81, 0x3b, 0xb2, 0x94, 0x63, 0xf8, 0x0f, 0xce, 0x85, 0x8a, 0xf4,
90392 - 0x52, 0x07, 0x02, 0x13, 0x0d, 0xca, 0xc0, 0xf1, 0x04, 0xb0, 0x1e, 0x90,
90393 - 0xbc, 0x3a, 0xaf, 0xc3, 0xf3, 0xf9, 0x2d, 0x62, 0x11, 0xef, 0x79, 0x3c,
90394 - 0x9b, 0xa1, 0xde, 0x30, 0x18, 0x69, 0x79, 0xb0, 0x43, 0xb2, 0xdb, 0x3b,
90395 - 0x94, 0xee, 0x70, 0xbc, 0x97, 0x31, 0xee, 0x1e, 0xb8, 0x20, 0x6f, 0x00,
90396 - 0x21, 0x58, 0x99, 0x43, 0xf2, 0xbf, 0x3c, 0xc6, 0xa8, 0x02, 0xdf, 0x0f,
90397 - 0x73, 0x89, 0x81, 0x66, 0x9b, 0xf6, 0xbb, 0x76, 0x6c, 0x4f, 0x9d, 0xfd,
90398 - 0xc7, 0x14, 0xc6, 0xca, 0x0b, 0xfb, 0x87, 0x9d, 0xc0, 0x98, 0xa9, 0xe3,
90399 - 0x94, 0xfd, 0x6d, 0xe0, 0xdb, 0x3f, 0x05, 0x06, 0x22, 0x55, 0x87, 0x36,
90400 - 0x07, 0xfb, 0x85, 0xf3, 0x5f, 0x26, 0x9e, 0x60, 0x4c, 0x3d, 0xf0, 0xcb,
90401 - 0x57, 0xe6, 0xb6, 0x13, 0xf6, 0xeb, 0xb6, 0xcd, 0x94, 0x81, 0x71, 0x0f,
90402 - 0x7e, 0xdf, 0xf1, 0xc0, 0x5e, 0x77, 0x9f, 0x47, 0xab, 0x13, 0xd2, 0xc9,
90403 - 0xd3, 0x4e, 0x4b, 0x6e, 0x91, 0x8f, 0x44, 0x82, 0x7e, 0xac, 0x79, 0x1b,
90404 - 0xb2, 0x4a, 0x3d, 0xd0, 0x09, 0x39, 0x67, 0x9e, 0x3a, 0x85, 0x3a, 0x81,
90405 - 0xb2, 0xe0, 0x4a, 0xa9, 0x0e, 0x9d, 0xd0, 0xd6, 0x25, 0x15, 0xd2, 0x6c,
90406 - 0x9e, 0x7a, 0xe2, 0x07, 0x32, 0xbd, 0x4e, 0x57, 0x0e, 0x89, 0xf1, 0x6b,
90407 - 0x5b, 0x25, 0x9a, 0x71, 0xed, 0x7b, 0xd5, 0x1a, 0x03, 0x7d, 0x79, 0x80,
90408 - 0xf8, 0x73, 0x36, 0xeb, 0x74, 0x88, 0xc6, 0x9e, 0x0a, 0x3f, 0xbd, 0x89,
90409 - 0xb5, 0xb2, 0x0f, 0x45, 0xa7, 0xc1, 0xa1, 0xc0, 0x17, 0x50, 0x31, 0x3f,
90410 - 0xe0, 0xe0, 0xc4, 0x8f, 0xa1, 0x6b, 0xf3, 0xc4, 0x25, 0xa0, 0x73, 0xf7,
90411 - 0x09, 0xca, 0xd1, 0x75, 0xea, 0x6c, 0xbc, 0x62, 0xa5, 0xa9, 0xaf, 0x65,
90412 - 0xf1, 0x38, 0x30, 0x97, 0xb5, 0x4b, 0x0a, 0x94, 0x57, 0x9e, 0x7d, 0x2f,
90413 - 0x5a, 0x32, 0x3d, 0xd7, 0x26, 0x3d, 0xf3, 0x8c, 0xaf, 0xee, 0x6e, 0x91,
90414 - 0x36, 0xc6, 0x58, 0x69, 0x83, 0x06, 0x24, 0x8f, 0xf2, 0xee, 0xf9, 0xb0,
90415 - 0x8a, 0x87, 0x55, 0x2c, 0xd2, 0xa8, 0x1f, 0xfa, 0xc0, 0x49, 0x2f, 0x5b,
90416 - 0xff, 0x25, 0x16, 0x60, 0x48, 0xc8, 0x52, 0x19, 0x32, 0x56, 0x86, 0x8c,
90417 - 0x95, 0x21, 0x63, 0x65, 0xc8, 0x18, 0xb0, 0xdf, 0x73, 0xd8, 0x7f, 0x17,
90418 - 0xcb, 0x83, 0xda, 0xae, 0xdf, 0xaf, 0xec, 0xfa, 0x91, 0x32, 0xcf, 0xf0,
90419 - 0xe9, 0x83, 0x26, 0x95, 0x0e, 0xb9, 0xa4, 0x7c, 0x51, 0xe3, 0xa3, 0xbe,
90420 - 0x22, 0xcf, 0xcc, 0xbe, 0x2a, 0x67, 0x66, 0x57, 0x71, 0xe0, 0x54, 0xd9,
90421 - 0x97, 0x97, 0x3d, 0xf8, 0x9f, 0x0b, 0xc4, 0x54, 0xd9, 0xf6, 0x66, 0x85,
90422 - 0xad, 0x0e, 0x4b, 0x41, 0xe1, 0x64, 0x65, 0x47, 0x80, 0xaf, 0x14, 0x2e,
90423 - 0xe4, 0xde, 0x94, 0x8e, 0xed, 0xaf, 0xc9, 0x45, 0xd8, 0xf1, 0xc5, 0xfa,
90424 - 0xeb, 0xf2, 0xbc, 0xc2, 0xe3, 0xa4, 0xc3, 0x07, 0xe4, 0x47, 0x76, 0x70,
90425 - 0x4e, 0x7c, 0x06, 0x58, 0x63, 0xb1, 0x8f, 0xba, 0x23, 0x02, 0x5b, 0xe0,
90426 - 0x14, 0xbb, 0xb1, 0xaf, 0x0f, 0x5a, 0x37, 0x00, 0xd3, 0xf0, 0xfd, 0x16,
90427 - 0x79, 0x71, 0xb6, 0xd8, 0x20, 0x13, 0xd4, 0x0f, 0xce, 0x51, 0xb1, 0x68,
90428 - 0xa7, 0x68, 0x37, 0xb9, 0x5e, 0xda, 0xa9, 0x3f, 0xd8, 0xcc, 0xb3, 0xd4,
90429 - 0xea, 0xc9, 0x73, 0x2d, 0x8c, 0x37, 0xc6, 0x5d, 0xd2, 0xf4, 0x35, 0x39,
90430 - 0x58, 0x63, 0xd9, 0xab, 0xe0, 0x0f, 0xd3, 0xef, 0xf9, 0xf7, 0xc4, 0x39,
90431 - 0x1e, 0xfb, 0x05, 0x6e, 0xea, 0xc4, 0x5a, 0xcb, 0x7f, 0xa9, 0x63, 0x5e,
90432 - 0xfd, 0x0a, 0x47, 0xbf, 0x13, 0x2f, 0x9b, 0x7b, 0x0d, 0xaf, 0xa9, 0x78,
90433 - 0xe0, 0x06, 0x71, 0xe2, 0xa7, 0xb0, 0xaf, 0x8a, 0x57, 0x85, 0x31, 0x4b,
90434 - 0xc6, 0x73, 0x19, 0x2b, 0x6e, 0xd4, 0x18, 0xea, 0xbc, 0x54, 0xee, 0x86,
90435 - 0x7e, 0xb9, 0x07, 0xfa, 0xe5, 0xde, 0x77, 0xdc, 0xaf, 0x35, 0x71, 0xfb,
90436 - 0x9e, 0x62, 0xd8, 0xea, 0x92, 0xb1, 0x5a, 0x63, 0x5b, 0xc6, 0x71, 0x37,
90437 - 0x8a, 0xdb, 0x32, 0xa6, 0x9b, 0x5e, 0x17, 0x0b, 0xa4, 0x6c, 0xf8, 0xf2,
90438 - 0x92, 0xc7, 0xb8, 0x9b, 0xb9, 0x9b, 0xbd, 0x11, 0xfe, 0xfa, 0xc3, 0xcd,
90439 - 0x26, 0xe6, 0x1c, 0xc9, 0x5c, 0x15, 0xde, 0xd1, 0x2e, 0xcd, 0x10, 0x0f,
90440 - 0xa8, 0xb3, 0x40, 0x15, 0xbb, 0xce, 0x07, 0xf1, 0x03, 0x94, 0xc3, 0xea,
90441 - 0xc2, 0xdf, 0x61, 0xec, 0xda, 0xde, 0xe1, 0xd8, 0x63, 0xe1, 0xe0, 0xae,
90442 - 0x1f, 0xf7, 0x72, 0xa0, 0xcb, 0x20, 0x8b, 0xf5, 0xd5, 0x3b, 0x74, 0x43,
90443 - 0x4a, 0x5f, 0x5c, 0xc5, 0x1e, 0x20, 0xbf, 0xe0, 0x2f, 0x60, 0x9f, 0x4c,
90444 - 0x41, 0x3f, 0x15, 0x54, 0x7f, 0x31, 0xca, 0x45, 0x36, 0x17, 0xb6, 0x24,
90445 - 0x7a, 0x8a, 0xbe, 0x50, 0x10, 0x6b, 0xc9, 0x87, 0x1d, 0xa5, 0xbf, 0x31,
90446 - 0x77, 0xe0, 0x33, 0xee, 0xcf, 0xe4, 0x44, 0x73, 0xa6, 0x09, 0x76, 0x15,
90447 - 0xfc, 0xab, 0x33, 0x26, 0x80, 0xbd, 0xbb, 0xf4, 0x5d, 0x39, 0x30, 0x77,
90448 - 0x69, 0x73, 0x20, 0xff, 0x8c, 0x23, 0x73, 0x7d, 0x66, 0x0e, 0x6b, 0xfb,
90449 - 0xb6, 0x4e, 0x49, 0xac, 0x05, 0x36, 0xed, 0xa3, 0xa7, 0x88, 0x07, 0x9a,
90450 - 0x65, 0x39, 0xce, 0x7e, 0x83, 0x3d, 0x33, 0x5d, 0x66, 0xdf, 0xdf, 0x95,
90451 - 0xe1, 0xb9, 0x74, 0x2b, 0xf5, 0xc8, 0x12, 0xf4, 0xc0, 0x65, 0x9b, 0x36,
90452 - 0x74, 0x1c, 0x36, 0xae, 0x53, 0xde, 0x9c, 0xa3, 0x7d, 0x4c, 0xd9, 0x67,
90453 - 0x64, 0x5b, 0xe2, 0x0c, 0xe6, 0xf4, 0x84, 0x17, 0xa1, 0x8f, 0xe6, 0x0f,
90454 - 0xa1, 0xec, 0xeb, 0x92, 0xb2, 0xbb, 0x43, 0x7c, 0xde, 0x66, 0x3f, 0x29,
90455 - 0xbc, 0x6f, 0x90, 0xb2, 0x6f, 0x0d, 0x51, 0x8e, 0xe0, 0x73, 0x2f, 0xad,
90456 - 0xce, 0xf3, 0x7b, 0x73, 0xca, 0x4f, 0x52, 0x7a, 0x66, 0xc9, 0xe3, 0x78,
90457 - 0x97, 0xb4, 0x6e, 0xbb, 0x15, 0xfa, 0x24, 0xa6, 0xcf, 0xc2, 0xd0, 0x86,
90458 - 0xd8, 0xc6, 0x8b, 0xe8, 0xfc, 0x67, 0x25, 0x77, 0x3a, 0x0e, 0x7d, 0xc6,
90459 - 0xbe, 0x8c, 0xef, 0x40, 0x1b, 0x69, 0xf0, 0x36, 0xed, 0xdd, 0x2e, 0xd8,
90460 - 0xbd, 0x9b, 0xd4, 0x7c, 0x46, 0xbc, 0x7e, 0x99, 0x3a, 0xc9, 0xb1, 0xfb,
90461 - 0xa0, 0xcb, 0x13, 0x4a, 0x6e, 0x4b, 0xe5, 0xcb, 0x89, 0x18, 0x74, 0x72,
90462 - 0x6c, 0x3b, 0xe9, 0xf9, 0x61, 0xb9, 0xd3, 0x1d, 0x97, 0xbb, 0x20, 0x3b,
90463 - 0x43, 0xae, 0x27, 0xc3, 0xe0, 0xc5, 0x1e, 0x17, 0x76, 0x47, 0x61, 0xe8,
90464 - 0x66, 0xf8, 0x5d, 0x1c, 0x9b, 0xf7, 0xc4, 0xd9, 0x36, 0xc0, 0x8f, 0x7f,
90465 - 0x54, 0x0f, 0x68, 0x94, 0x9b, 0xfb, 0x88, 0xa2, 0xcd, 0x88, 0xb7, 0x53,
90466 - 0xdb, 0xd9, 0x36, 0xc9, 0xab, 0x7a, 0x3b, 0x95, 0x3d, 0x2e, 0x2d, 0xde,
90467 - 0x87, 0x14, 0xb6, 0x79, 0x11, 0xfa, 0x06, 0x98, 0xbb, 0x54, 0xdb, 0x81,
90468 - 0x3c, 0x6c, 0xe8, 0x62, 0x06, 0xe9, 0x87, 0x91, 0xb2, 0x6e, 0xa8, 0x35,
90469 - 0x88, 0xe5, 0x1a, 0x3c, 0xba, 0x7a, 0xbf, 0xf0, 0xa3, 0x0a, 0x97, 0x5e,
90470 - 0x55, 0xf7, 0xcb, 0x2c, 0x60, 0x9d, 0x1c, 0xf4, 0x4a, 0x2b, 0x30, 0xd0,
90471 - 0xcc, 0x29, 0x27, 0x3d, 0x1c, 0xda, 0x2d, 0xbf, 0x06, 0x5f, 0xbe, 0xea,
90472 - 0x91, 0x97, 0x3b, 0xe4, 0xc1, 0x3b, 0x28, 0x23, 0xbb, 0x65, 0xff, 0x1d,
90473 - 0x21, 0xd9, 0xdf, 0xef, 0x64, 0x39, 0xef, 0x5b, 0x6e, 0x33, 0xfe, 0x74,
90474 - 0xcf, 0x48, 0x2a, 0x34, 0x20, 0x4f, 0x42, 0xc6, 0x8a, 0x90, 0xaf, 0xe1,
90475 - 0x3a, 0x69, 0x4e, 0x7d, 0x4f, 0x3d, 0x9f, 0x06, 0x56, 0x36, 0xd8, 0xcf,
90476 - 0x95, 0x99, 0x7a, 0x93, 0x24, 0xaf, 0x67, 0x3c, 0x39, 0x19, 0x9c, 0x71,
90477 - 0x5c, 0x4f, 0x99, 0x80, 0x0f, 0x72, 0x7d, 0xb0, 0x3f, 0xd5, 0xbd, 0x2e,
90478 - 0xf5, 0x1c, 0xa7, 0xff, 0xeb, 0x13, 0xe7, 0x15, 0x14, 0x5f, 0x68, 0x23,
90479 - 0x98, 0xfe, 0xbb, 0xd6, 0x15, 0x7c, 0xd7, 0x46, 0xff, 0x61, 0x67, 0xeb,
90480 - 0xea, 0xbd, 0xf4, 0xf5, 0xb2, 0x68, 0xe2, 0x6e, 0x15, 0xac, 0x99, 0x36,
90481 - 0xdd, 0xb1, 0xa9, 0x0b, 0xdb, 0xdd, 0xfb, 0xe5, 0x4f, 0x60, 0xdf, 0xbf,
90482 - 0xb2, 0x62, 0xdf, 0xf7, 0x81, 0x1e, 0xeb, 0x31, 0x80, 0x6b, 0xdf, 0x8d,
90483 - 0xb5, 0x8c, 0x80, 0x9f, 0x77, 0xe1, 0x77, 0x67, 0x79, 0x4d, 0x1c, 0x6f,
90484 - 0xb6, 0x08, 0x3c, 0xd9, 0xe4, 0xb2, 0xbf, 0x35, 0xf1, 0xbc, 0x62, 0x41,
90485 - 0x56, 0x62, 0x85, 0x83, 0xd7, 0x84, 0x76, 0xef, 0x2d, 0x89, 0xf6, 0xba,
90486 - 0x6f, 0x75, 0x87, 0xdc, 0x17, 0xac, 0x10, 0xcf, 0x95, 0x3d, 0x39, 0x5b,
90487 - 0x27, 0x0e, 0xbb, 0x22, 0xd6, 0x79, 0x62, 0xb0, 0x6f, 0xa8, 0x18, 0x54,
90488 - 0xb5, 0xfc, 0x6d, 0xa4, 0xa8, 0x0f, 0xfd, 0x18, 0x0e, 0xe2, 0x14, 0x0a,
90489 - 0xab, 0x50, 0xcf, 0xde, 0x05, 0x3e, 0x4c, 0xe1, 0xd7, 0xbd, 0xfd, 0x56,
90490 - 0xec, 0x5f, 0xca, 0x29, 0x63, 0x5f, 0xbd, 0xf6, 0xf6, 0x10, 0xdf, 0x6d,
90491 - 0x14, 0x07, 0xfb, 0x8e, 0x44, 0x4e, 0xc0, 0xd6, 0x59, 0xd4, 0x0f, 0x5c,
90492 - 0x07, 0xed, 0xa4, 0x2d, 0x0b, 0x27, 0xb9, 0xd7, 0x37, 0xaa, 0x6f, 0xea,
90493 - 0x9a, 0xb5, 0x28, 0xbb, 0x91, 0x2d, 0x30, 0xc6, 0x59, 0x26, 0x0f, 0x3c,
90494 - 0xf0, 0xc0, 0x97, 0x53, 0x5e, 0x3b, 0xf4, 0x76, 0x5c, 0xc2, 0xa7, 0x7c,
90495 - 0x19, 0x52, 0xd8, 0x75, 0x1b, 0x30, 0xd7, 0x16, 0x8d, 0x1b, 0xe2, 0x12,
90496 - 0x39, 0xd5, 0x25, 0xcd, 0xc0, 0xd5, 0x4d, 0xc7, 0x68, 0x23, 0x53, 0xc9,
90497 - 0x21, 0x08, 0x41, 0x44, 0xdd, 0x55, 0x74, 0x06, 0xdf, 0x94, 0x6d, 0xc9,
90498 - 0x37, 0x85, 0x78, 0xe9, 0x86, 0x2d, 0xf0, 0x09, 0xbc, 0x2b, 0x1b, 0xd4,
90499 - 0x2f, 0xad, 0xd6, 0x87, 0x1c, 0x31, 0xb6, 0xc6, 0x36, 0x8c, 0xb5, 0xa5,
90500 - 0x06, 0xdf, 0x60, 0x8c, 0x0d, 0xbe, 0x66, 0xd3, 0xb9, 0x60, 0x0e, 0xd6,
90501 - 0x52, 0x87, 0x54, 0x4f, 0x73, 0x8f, 0x32, 0xce, 0x62, 0x07, 0x7e, 0x6a,
90502 - 0x99, 0xfe, 0x2a, 0xdf, 0x27, 0xf5, 0xfb, 0x6e, 0xfd, 0x9e, 0xfe, 0x68,
90503 - 0xd1, 0x6f, 0x02, 0x4d, 0xf7, 0x40, 0x7f, 0xde, 0xb7, 0xc3, 0x55, 0xb8,
90504 - 0xe1, 0xbe, 0x15, 0x9e, 0xed, 0x15, 0xeb, 0x38, 0xfc, 0xd4, 0xf2, 0x61,
90505 - 0x71, 0xb7, 0x2f, 0xa7, 0x23, 0x32, 0x06, 0x5e, 0x30, 0x9f, 0xe5, 0x7c,
90506 - 0xd2, 0x47, 0xe4, 0xa0, 0xe2, 0x4d, 0xf5, 0xa4, 0x73, 0x34, 0x19, 0x9a,
90507 - 0x12, 0xab, 0xca, 0xe7, 0x47, 0x90, 0x1e, 0x01, 0xde, 0x09, 0x62, 0x97,
90508 - 0x56, 0x75, 0x2d, 0x2d, 0x81, 0x31, 0xec, 0x3d, 0x6b, 0xe2, 0x58, 0xab,
90509 - 0x31, 0x2e, 0xbe, 0x1f, 0x52, 0xef, 0xd3, 0x6b, 0xe2, 0x5c, 0x79, 0x8b,
90510 - 0x58, 0xc6, 0xbc, 0x27, 0x2f, 0xc8, 0x2f, 0xd8, 0xe2, 0x93, 0x26, 0xe6,
90511 - 0xd5, 0xa6, 0xf9, 0x42, 0xfe, 0xcc, 0xc8, 0x45, 0xdb, 0x19, 0xa1, 0xfc,
90512 - 0xfd, 0xea, 0x8e, 0x1b, 0x65, 0xa2, 0x93, 0xf1, 0xb6, 0xc6, 0x39, 0xac,
90513 - 0x8f, 0xa3, 0x35, 0x8e, 0xbf, 0x3e, 0xfe, 0xc6, 0xb1, 0x83, 0x18, 0x5b,
90514 - 0x6e, 0x4d, 0x8c, 0xad, 0x71, 0x3c, 0x8e, 0xb5, 0x05, 0xfe, 0x53, 0xd1,
90515 - 0x8f, 0xbb, 0xe4, 0x51, 0x4f, 0x72, 0x8e, 0xf9, 0x2f, 0x58, 0xe0, 0x63,
90516 - 0x1c, 0x76, 0x84, 0xbc, 0x34, 0x67, 0xcf, 0xe4, 0x69, 0x2a, 0x79, 0x24,
90517 - 0xe0, 0xe7, 0x60, 0xc0, 0xf7, 0x80, 0xff, 0x57, 0x56, 0xf8, 0x48, 0xfb,
90518 - 0x40, 0x3e, 0x76, 0x8a, 0x40, 0xcf, 0x5a, 0xc7, 0xc8, 0x43, 0xa6, 0xe4,
90519 - 0x21, 0xdf, 0x91, 0x87, 0xdd, 0xfa, 0x1d, 0xf9, 0x07, 0x9c, 0xf6, 0x79,
90520 - 0x60, 0x0c, 0x2f, 0xa7, 0xbe, 0xb1, 0xe9, 0xee, 0x35, 0x7b, 0x31, 0x2d,
90521 - 0xcf, 0x2f, 0xb4, 0x88, 0x9d, 0x09, 0xd6, 0x35, 0xbe, 0x26, 0xde, 0xce,
90522 - 0xf3, 0xab, 0x7e, 0x62, 0x4f, 0xb3, 0xae, 0x04, 0xd7, 0x75, 0x50, 0x5e,
90523 - 0x93, 0xc2, 0x4c, 0x04, 0x3e, 0x60, 0x1a, 0x38, 0xa7, 0x1f, 0xfa, 0x96,
90524 - 0xf1, 0x51, 0x94, 0xd5, 0x88, 0x57, 0x68, 0xeb, 0xd2, 0xd8, 0x2b, 0xd4,
90525 - 0xc1, 0xc4, 0x23, 0xaf, 0x4a, 0xbe, 0x62, 0x74, 0x0c, 0xfa, 0xb7, 0x4c,
90526 - 0xff, 0xa4, 0x73, 0xf6, 0x96, 0xeb, 0x64, 0x39, 0x79, 0x9d, 0x38, 0xc9,
90527 - 0x45, 0x59, 0xe5, 0xeb, 0xf8, 0xc6, 0x74, 0xf7, 0xee, 0x0b, 0xaf, 0xca,
90528 - 0xc6, 0xf8, 0x06, 0xbc, 0x9f, 0x14, 0xf3, 0xde, 0xf0, 0x7e, 0x43, 0x3e,
90529 - 0x14, 0x5f, 0x11, 0xf2, 0x82, 0x34, 0x20, 0x1e, 0x8e, 0xca, 0xef, 0xc6,
90530 - 0xb9, 0x1f, 0x8b, 0xea, 0x7c, 0x33, 0x65, 0xf5, 0x2a, 0x9d, 0x31, 0xe4,
90531 - 0x05, 0xf2, 0x5a, 0xc4, 0x38, 0xb1, 0x9e, 0xdf, 0xf3, 0x87, 0xe2, 0xf0,
90532 - 0x73, 0x7b, 0xa8, 0x5f, 0xcc, 0x9e, 0x6e, 0x51, 0x7b, 0xfa, 0x09, 0x2f,
90533 - 0x24, 0x25, 0x37, 0x24, 0x53, 0xee, 0x61, 0x85, 0xf1, 0x7f, 0x03, 0x7d,
90534 - 0x3d, 0xa8, 0xfb, 0x9a, 0x92, 0x5e, 0xad, 0x7f, 0x0e, 0x41, 0xce, 0x7d,
90535 - 0xb9, 0xd7, 0xdb, 0x21, 0xbf, 0xda, 0xce, 0x3d, 0x60, 0xd6, 0x7f, 0x58,
90536 - 0x7a, 0x76, 0x2c, 0x27, 0xe1, 0x19, 0xdc, 0x12, 0x5d, 0xa1, 0x01, 0xf7,
90537 - 0x99, 0x91, 0xef, 0x80, 0x0e, 0xc1, 0xfa, 0xd7, 0xac, 0x55, 0xaf, 0x93,
90538 - 0x6b, 0x66, 0x3d, 0xae, 0x35, 0xc0, 0xf2, 0xab, 0x6b, 0x35, 0xf5, 0x5b,
90539 - 0x21, 0x4b, 0x4e, 0x52, 0x42, 0x8d, 0xb4, 0x59, 0xd1, 0x51, 0x23, 0x8c,
90540 - 0x91, 0x2c, 0xdb, 0x4e, 0x3a, 0x19, 0x32, 0xb1, 0xe8, 0x00, 0xeb, 0x76,
90541 - 0x03, 0x87, 0xbb, 0xbd, 0xbd, 0xe9, 0x82, 0x8a, 0x91, 0x5a, 0x6a, 0x5d,
90542 - 0x53, 0xc0, 0x64, 0x0b, 0xde, 0x2b, 0xfe, 0xa7, 0x81, 0x59, 0x27, 0xe4,
90543 - 0x61, 0x09, 0xaf, 0x89, 0xe5, 0x22, 0x7f, 0x9e, 0xf1, 0x5c, 0x27, 0x99,
90544 - 0x05, 0x8f, 0x7f, 0x13, 0x3e, 0x7c, 0x15, 0x7a, 0xff, 0xe3, 0xb4, 0x0d,
90545 - 0x65, 0xd8, 0x0b, 0xe0, 0x92, 0xaf, 0xbc, 0x27, 0x86, 0x9f, 0x68, 0x88,
90546 - 0xe5, 0x06, 0xf8, 0xf4, 0xa2, 0xc2, 0xa4, 0xc4, 0xed, 0x47, 0x43, 0x77,
90547 - 0xf7, 0x85, 0xe1, 0x67, 0x14, 0xfd, 0x98, 0x4b, 0x1c, 0x77, 0x58, 0xee,
90548 - 0x04, 0x7f, 0xce, 0x2e, 0x14, 0x43, 0x7b, 0xca, 0x46, 0x56, 0xe1, 0x57,
90549 - 0xd6, 0x9d, 0xf4, 0x65, 0xd0, 0xe3, 0x19, 0x8d, 0xf9, 0x78, 0x5e, 0x53,
90550 - 0xd5, 0x3e, 0x0b, 0x63, 0x43, 0xa5, 0xfa, 0x61, 0x99, 0xf6, 0x18, 0xdb,
90551 - 0xe9, 0x91, 0x52, 0x3c, 0x7b, 0x63, 0xf3, 0x0a, 0x8d, 0x1c, 0x1b, 0x3e,
90552 - 0x5f, 0x9a, 0xfa, 0xbb, 0xaa, 0xcf, 0x3b, 0x9e, 0x51, 0xf2, 0x65, 0xe2,
90553 - 0xc2, 0xf4, 0x8f, 0x78, 0x5e, 0xd5, 0x63, 0x8f, 0xf0, 0xb9, 0x42, 0x19,
90554 - 0x50, 0x3e, 0x13, 0x68, 0xf9, 0x90, 0x64, 0xc7, 0x92, 0x0a, 0xb7, 0x3c,
90555 - 0x5e, 0xe6, 0x7e, 0x21, 0xfe, 0x7f, 0x0d, 0xd8, 0x3f, 0x02, 0x9e, 0xd1,
90556 - 0x0f, 0xe0, 0xd8, 0xdc, 0x17, 0x28, 0xab, 0xd9, 0xef, 0xb2, 0x2f, 0x5e,
90557 - 0x6b, 0x23, 0xc6, 0xb8, 0x54, 0x16, 0x45, 0xbf, 0x65, 0x31, 0xb1, 0x73,
90558 - 0x85, 0x05, 0x8b, 0xb9, 0x70, 0x48, 0x52, 0x27, 0xfe, 0x35, 0x64, 0xe8,
90559 - 0xd7, 0xe1, 0x23, 0xa9, 0x7a, 0xea, 0xfc, 0x6a, 0x08, 0x98, 0xcb, 0x72,
90560 - 0x6f, 0x90, 0x92, 0x1d, 0x95, 0x92, 0xba, 0xa3, 0xc9, 0xf3, 0xdc, 0xb0,
90561 - 0x8a, 0xed, 0x94, 0x6c, 0x62, 0xfe, 0xff, 0xde, 0x16, 0xd8, 0xfa, 0x0e,
90562 - 0xe4, 0xd9, 0x8e, 0x79, 0x96, 0x4f, 0x49, 0xf4, 0xc4, 0x21, 0x69, 0x3a,
90563 - 0xf1, 0xb0, 0x34, 0x1f, 0x27, 0xc6, 0x63, 0xec, 0xde, 0xda, 0xd5, 0x2c,
90564 - 0xc4, 0xdc, 0x43, 0x18, 0xfb, 0xb0, 0x7c, 0xdf, 0x33, 0x73, 0x5a, 0xc4,
90565 - 0x1c, 0x59, 0xc7, 0xe4, 0x0d, 0x1e, 0xdf, 0x85, 0xf9, 0x70, 0xfd, 0x49,
90566 - 0x8d, 0xfb, 0x76, 0x35, 0xf8, 0xae, 0x4d, 0xda, 0x77, 0x65, 0xbb, 0x4f,
90567 - 0x61, 0xad, 0x27, 0x25, 0xea, 0x9a, 0xf6, 0xbb, 0x51, 0x2f, 0xd1, 0x70,
90568 - 0x07, 0x82, 0x75, 0xf4, 0x9d, 0x80, 0x36, 0xe2, 0x1e, 0x9e, 0xb7, 0xb3,
90569 - 0x2c, 0x38, 0xf3, 0xb7, 0xaa, 0xbb, 0xc2, 0x6b, 0xc7, 0xdf, 0xd9, 0x50,
90570 - 0xd7, 0x94, 0x99, 0x36, 0xd1, 0xc0, 0xe7, 0x1f, 0x88, 0x36, 0xb4, 0x83,
90571 - 0x71, 0x53, 0x69, 0xe0, 0x7b, 0x04, 0x7e, 0x10, 0xd7, 0x90, 0x6e, 0xc0,
90572 - 0x39, 0x6b, 0xbf, 0x45, 0xcc, 0xa3, 0xbc, 0x30, 0x67, 0xee, 0x91, 0x59,
90573 - 0x58, 0x8b, 0x53, 0xa4, 0xff, 0x62, 0xf3, 0x4e, 0xee, 0x5c, 0x11, 0xf3,
90574 - 0xbe, 0x49, 0xdd, 0x25, 0xe2, 0xdd, 0x0d, 0xd4, 0x4b, 0x06, 0xf8, 0x93,
90575 - 0xf9, 0x04, 0x78, 0x7e, 0x5b, 0x97, 0x95, 0xf9, 0xf3, 0x1b, 0x73, 0x03,
90576 - 0xc4, 0x37, 0x5b, 0x79, 0x0e, 0x09, 0xdc, 0x4c, 0x39, 0xfb, 0x2e, 0xe4,
90577 - 0xac, 0x59, 0x9d, 0xfb, 0x94, 0xca, 0xf4, 0xe7, 0x0a, 0x90, 0x1f, 0xde,
90578 - 0x87, 0xa3, 0xdf, 0x57, 0xd0, 0xf1, 0x58, 0xce, 0x93, 0x98, 0xde, 0xf8,
90579 - 0x07, 0xec, 0x73, 0xfd, 0x19, 0x6c, 0xe3, 0xfd, 0x12, 0xca, 0x5b, 0x42,
90580 - 0xcd, 0x79, 0x78, 0x9d, 0xbf, 0x72, 0x04, 0xba, 0x60, 0x01, 0xf2, 0x3c,
90581 - 0x09, 0x1d, 0x38, 0x14, 0xe6, 0xfe, 0x6c, 0xd1, 0xbe, 0xac, 0x4b, 0xbf,
90582 - 0x3d, 0x34, 0x86, 0x3e, 0xac, 0xe3, 0xaf, 0xcb, 0x14, 0xf4, 0xff, 0x74,
90583 - 0x3d, 0xa5, 0xbe, 0x17, 0xc9, 0x26, 0x78, 0x07, 0x8c, 0xe5, 0x63, 0x18,
90584 - 0xff, 0x75, 0xe0, 0xe1, 0xcd, 0xa0, 0xa7, 0xa5, 0x79, 0xf5, 0x2b, 0x3a,
90585 - 0x16, 0x15, 0x63, 0x2c, 0x1e, 0x7a, 0xb3, 0x14, 0x60, 0xcd, 0xf8, 0x34,
90586 - 0xd2, 0xcd, 0x2d, 0x81, 0xbc, 0x4e, 0x6e, 0xd5, 0x77, 0x2f, 0x50, 0xfe,
90587 - 0x98, 0x8a, 0x41, 0x06, 0x6b, 0x72, 0xb4, 0xaf, 0x12, 0x85, 0xcc, 0x71,
90588 - 0x5d, 0xf7, 0xa2, 0x1e, 0x65, 0xad, 0x4f, 0x9f, 0xcd, 0xb6, 0x28, 0xfd,
90589 - 0x98, 0x87, 0x2c, 0x15, 0x94, 0x1f, 0x01, 0x7c, 0xef, 0xb1, 0xdd, 0xaf,
90590 - 0x6f, 0xe5, 0xd9, 0x67, 0x93, 0xab, 0x7c, 0x8b, 0xce, 0xb0, 0x98, 0xb2,
90591 - 0x8f, 0xa0, 0x8c, 0x72, 0x76, 0x03, 0x78, 0xc3, 0xb2, 0x1c, 0xf2, 0x1c,
90592 - 0xeb, 0x46, 0x3d, 0x0e, 0xc7, 0xb8, 0xb4, 0x79, 0xed, 0x9c, 0xb8, 0x96,
90593 - 0xce, 0x75, 0x77, 0xe7, 0x59, 0x76, 0x83, 0x2e, 0x8b, 0xe8, 0xf5, 0xfd,
90594 - 0xa9, 0xfe, 0xb6, 0xc1, 0x39, 0x9a, 0x5d, 0xc1, 0xc6, 0x9c, 0x5f, 0x4c,
90595 - 0xb5, 0xcb, 0xda, 0x81, 0xec, 0x1c, 0x01, 0x3f, 0x22, 0x99, 0xaf, 0xf1,
90596 - 0x4c, 0x19, 0xf4, 0x35, 0x7b, 0x22, 0xa1, 0xfc, 0xce, 0xa4, 0x15, 0xdc,
90597 - 0x5d, 0xba, 0x58, 0x6e, 0xf4, 0x19, 0xcc, 0xfd, 0x6f, 0x57, 0xc6, 0x56,
90598 - 0x78, 0x45, 0xbe, 0x91, 0x5f, 0xef, 0xc6, 0x2b, 0xf2, 0x91, 0xfc, 0x2a,
90599 - 0x48, 0x69, 0x96, 0x7c, 0xa2, 0xbc, 0x8c, 0x29, 0x79, 0x29, 0x55, 0x0c,
90600 - 0x4e, 0xa6, 0x2e, 0xe1, 0x37, 0x0f, 0x1b, 0x9d, 0xd7, 0x9b, 0xbb, 0x61,
90601 - 0xbf, 0x44, 0xfa, 0x85, 0x86, 0xe1, 0x1e, 0x2d, 0xcc, 0x2a, 0x9d, 0x02,
90602 - 0xbb, 0x98, 0x50, 0xba, 0xa2, 0x30, 0xce, 0xfc, 0xd2, 0x56, 0x7e, 0x9b,
90603 - 0x8b, 0x79, 0xa0, 0xbc, 0x53, 0xf3, 0xf5, 0x06, 0x75, 0xbf, 0x89, 0x7b,
90604 - 0xb0, 0x54, 0xa9, 0xab, 0xf7, 0x67, 0xe7, 0x9a, 0x54, 0xfd, 0xb3, 0x73,
90605 - 0xeb, 0xef, 0x28, 0xb1, 0xec, 0x66, 0xc6, 0x55, 0x64, 0x71, 0xa6, 0x49,
90606 - 0x96, 0xe6, 0xfe, 0x90, 0x7e, 0x22, 0x8c, 0xc1, 0xca, 0xf7, 0x1d, 0xfa,
90607 - 0x5b, 0x2c, 0x5f, 0x86, 0x21, 0x37, 0x0b, 0x83, 0xd3, 0x52, 0x1d, 0xa4,
90608 - 0x1f, 0xa4, 0xee, 0x0e, 0x62, 0xbd, 0x4d, 0xc0, 0xc0, 0xc0, 0x85, 0x2e,
90609 - 0xe3, 0xcf, 0x5b, 0xb4, 0x3e, 0x79, 0xb0, 0x75, 0x25, 0x2e, 0x1d, 0x2f,
90610 - 0xfa, 0x55, 0xd7, 0x7c, 0x33, 0xc3, 0x3e, 0xf9, 0xdd, 0x0c, 0x79, 0x66,
90611 - 0xa1, 0x3d, 0xef, 0x64, 0x76, 0x33, 0xae, 0xad, 0xf9, 0x1c, 0x46, 0x7d,
90612 - 0xa6, 0xbf, 0xa7, 0xf3, 0x73, 0x3a, 0xfd, 0xac, 0xec, 0x3f, 0xf9, 0x19,
90613 - 0xcc, 0x7b, 0x53, 0x70, 0xef, 0x4a, 0x1a, 0xbf, 0x9b, 0x88, 0xe8, 0x6f,
90614 - 0x34, 0x3e, 0x8b, 0x32, 0xc6, 0xe2, 0x3e, 0xab, 0xd6, 0xc4, 0xbb, 0x7d,
90615 - 0x45, 0xf9, 0x79, 0x77, 0x54, 0x8c, 0x3f, 0xc8, 0xfb, 0x53, 0x2d, 0xba,
90616 - 0xbf, 0x3d, 0x5a, 0x96, 0xc6, 0x65, 0x3f, 0xec, 0x5d, 0x01, 0xb8, 0x98,
90617 - 0x77, 0xce, 0x26, 0xc2, 0x8d, 0x63, 0x9a, 0xfd, 0x14, 0xc4, 0x1a, 0xcc,
90618 - 0xdd, 0x87, 0xb0, 0xf2, 0x89, 0x56, 0xe2, 0x16, 0xba, 0x7c, 0x5c, 0x0e,
90619 - 0x94, 0x55, 0xfc, 0x42, 0x9d, 0x59, 0x4e, 0x43, 0x2f, 0x0c, 0x29, 0x9b,
90620 - 0x16, 0x0b, 0x0d, 0xd7, 0x32, 0x52, 0x38, 0xbd, 0x17, 0xe3, 0x30, 0x16,
90621 - 0x98, 0xd5, 0x67, 0x83, 0xfb, 0x64, 0x7f, 0x3d, 0x18, 0x7b, 0xb2, 0xcc,
90622 - 0xf7, 0x29, 0xe0, 0x04, 0xbe, 0xcf, 0x27, 0xc2, 0xea, 0x74, 0xe3, 0x56,
90623 - 0xb4, 0x6d, 0xd2, 0x74, 0xe6, 0xbd, 0x6b, 0xb6, 0xa7, 0x0e, 0x00, 0xc0,
90624 - 0x69, 0xc9, 0xe3, 0x3d, 0xdb, 0x98, 0xfe, 0x26, 0x61, 0xb7, 0xe8, 0x9f,
90625 - 0x3f, 0x2a, 0xcb, 0x95, 0x69, 0xb9, 0x5c, 0x31, 0xb2, 0xce, 0xbb, 0xd7,
90626 - 0x9c, 0xfb, 0x5d, 0xc1, 0xb7, 0xbf, 0xe5, 0x2c, 0xf8, 0xb3, 0x96, 0x56,
90627 - 0xf9, 0x35, 0xdf, 0xdb, 0xfc, 0x2b, 0x3b, 0xf8, 0xe6, 0x6d, 0xb7, 0xba,
90628 - 0xc3, 0xb5, 0x76, 0xcf, 0xb1, 0x9f, 0xfd, 0x36, 0xcf, 0x3a, 0x82, 0x7b,
90629 - 0x68, 0x9d, 0x0d, 0xef, 0xe3, 0xfa, 0xee, 0xd7, 0xa7, 0xec, 0x80, 0x8f,
90630 - 0xa4, 0xe7, 0x98, 0x9e, 0xef, 0xad, 0xd8, 0xff, 0xec, 0xf3, 0x31, 0xcd,
90631 - 0x37, 0xa4, 0x0b, 0x7c, 0xe6, 0xfe, 0x5a, 0xd6, 0xe7, 0xbf, 0xb6, 0x1e,
90632 - 0xa3, 0xf1, 0xee, 0x5d, 0x53, 0xc3, 0xb8, 0x6c, 0x4f, 0xfb, 0x64, 0xee,
90633 - 0x80, 0xb3, 0xec, 0xa4, 0xbe, 0xe3, 0x77, 0xb5, 0xa1, 0xcc, 0xdc, 0x45,
90634 - 0x23, 0xbd, 0x18, 0xd3, 0x44, 0x5a, 0x1f, 0xd3, 0xcf, 0x63, 0x0d, 0xdf,
90635 - 0xc8, 0x98, 0x3e, 0x23, 0xe8, 0xc3, 0xdc, 0x41, 0x6f, 0xbc, 0x53, 0xcc,
90636 - 0xef, 0x83, 0x28, 0x8b, 0x16, 0xbf, 0x61, 0xa6, 0x1f, 0x08, 0xec, 0xb6,
90637 - 0x45, 0x26, 0xd5, 0x7c, 0x8a, 0xea, 0xbe, 0x06, 0xbf, 0x9b, 0x19, 0xb2,
90638 - 0x83, 0xfc, 0xe4, 0xc2, 0x7a, 0x39, 0x65, 0xf9, 0x33, 0xcd, 0xd2, 0x52,
90639 - 0xc4, 0x38, 0x7c, 0xbf, 0xd1, 0xf7, 0xf4, 0x51, 0xfd, 0x9d, 0x90, 0x87,
90640 - 0x36, 0x4f, 0x50, 0xde, 0x8b, 0xc5, 0x95, 0x7b, 0xa2, 0xc5, 0xe0, 0x1b,
90641 - 0x26, 0xcb, 0xdc, 0xd7, 0xe4, 0x37, 0xda, 0x22, 0x17, 0x6a, 0xfc, 0x3e,
90642 - 0x69, 0xb7, 0xba, 0x47, 0x13, 0x9c, 0x4d, 0x72, 0x5e, 0x3d, 0xca, 0x2e,
90643 - 0x54, 0x6b, 0x25, 0xd2, 0x54, 0xdb, 0xf6, 0xa8, 0xb6, 0xed, 0xa4, 0xf1,
90644 - 0x08, 0x68, 0xfc, 0x25, 0xcd, 0x17, 0xb6, 0xcf, 0xaa, 0xfb, 0xdd, 0xd9,
90645 - 0x38, 0xcf, 0xc7, 0x1e, 0x53, 0x6b, 0xa1, 0x9d, 0x40, 0xdb, 0x5f, 0x0e,
90646 - 0xab, 0x78, 0xa7, 0xfa, 0x06, 0x1c, 0xf2, 0xc9, 0x6f, 0xba, 0xa1, 0xe3,
90647 - 0xcb, 0xfc, 0x76, 0x7b, 0x04, 0x29, 0xbf, 0xd9, 0xde, 0xab, 0xee, 0xff,
90648 - 0x57, 0xd5, 0x37, 0x01, 0x46, 0x1e, 0xc3, 0x7a, 0xac, 0x6f, 0x62, 0x8c,
90649 - 0x80, 0xef, 0x85, 0x32, 0xbf, 0xe5, 0x36, 0x77, 0x4c, 0x37, 0x2f, 0x73,
90650 - 0x4f, 0x88, 0xf2, 0xf3, 0x83, 0x6f, 0xfb, 0xab, 0xea, 0x3b, 0x82, 0x24,
90651 - 0xbf, 0x2b, 0x84, 0xfd, 0xba, 0x1f, 0xcf, 0x3c, 0x57, 0xde, 0x87, 0x14,
90652 - 0xfa, 0xa7, 0x36, 0x81, 0xf4, 0x61, 0xc9, 0xab, 0xb8, 0x5f, 0x2b, 0xf2,
90653 - 0x93, 0x6a, 0xec, 0x52, 0xed, 0x13, 0xb2, 0xff, 0xf4, 0x43, 0xfc, 0x5e,
90654 - 0x42, 0x7d, 0x77, 0x9e, 0xf3, 0x38, 0xc7, 0xb8, 0x4c, 0xa9, 0x75, 0x17,
90655 - 0x35, 0xed, 0xcd, 0x59, 0xcc, 0xcf, 0xd4, 0xb7, 0x19, 0xc5, 0x5a, 0x2b,
90656 - 0xe6, 0x18, 0xd2, 0xf7, 0x4c, 0xe9, 0x0f, 0x98, 0xf5, 0xb7, 0xf0, 0xee,
90657 - 0xa2, 0xcf, 0xf3, 0xc3, 0xfd, 0x65, 0xde, 0x23, 0x4d, 0xe9, 0x38, 0x01,
90658 - 0x63, 0x87, 0x3c, 0x9f, 0xa0, 0x8c, 0x3b, 0xe9, 0x09, 0x58, 0xa0, 0xa8,
90659 - 0x24, 0x78, 0xb6, 0xad, 0xd7, 0xd2, 0xda, 0xb0, 0x16, 0xde, 0x9d, 0x0d,
90660 - 0xd6, 0xc3, 0xef, 0x21, 0x0a, 0xe5, 0xc6, 0x6f, 0x2a, 0xd4, 0x37, 0xd0,
90661 - 0xfc, 0x76, 0x46, 0x26, 0x6a, 0x9f, 0x94, 0x07, 0xca, 0x5b, 0xf4, 0xf7,
90662 - 0x14, 0x31, 0x79, 0xa0, 0xf6, 0xba, 0xa2, 0x69, 0x41, 0x7d, 0xd7, 0x11,
90663 - 0xd5, 0x3c, 0x33, 0xdf, 0x54, 0x04, 0xfd, 0x1d, 0xa8, 0x39, 0x0d, 0xdf,
90664 - 0x2f, 0x44, 0x65, 0x62, 0xe1, 0x47, 0x91, 0x8d, 0xbf, 0x61, 0x78, 0x54,
90665 - 0x72, 0xa7, 0x69, 0xa3, 0xa7, 0xe5, 0xf1, 0x8a, 0xef, 0xdf, 0xe9, 0x11,
90666 - 0x5b, 0x6e, 0x96, 0xcb, 0xf1, 0xb1, 0x3d, 0x6f, 0xb8, 0x1d, 0xa1, 0xea,
90667 - 0x6c, 0x33, 0x74, 0x2f, 0xf1, 0x8c, 0xb4, 0x30, 0xbf, 0x30, 0xcb, 0x7d,
90668 - 0x1a, 0xc1, 0x1a, 0x1d, 0xfb, 0x9a, 0xdc, 0xde, 0xce, 0xb8, 0xdb, 0x9d,
90669 - 0xf0, 0x65, 0x7f, 0xdb, 0x0b, 0xf4, 0xf5, 0xe7, 0x16, 0xf7, 0xca, 0xe7,
90670 - 0x6a, 0xb1, 0x50, 0x75, 0x86, 0xf7, 0x0d, 0x9d, 0x91, 0x8a, 0xa4, 0x50,
90671 - 0x8f, 0xfd, 0x43, 0x5e, 0x12, 0xd7, 0xc9, 0xb3, 0x27, 0x7f, 0xea, 0x5f,
90672 - 0x73, 0xf1, 0x1e, 0xba, 0xe6, 0xb2, 0x67, 0x62, 0x8b, 0x63, 0xf0, 0x5d,
90673 - 0x59, 0xef, 0x3a, 0xc8, 0x01, 0xb0, 0x03, 0xf6, 0x1c, 0xfd, 0xdc, 0x6b,
90674 - 0x5a, 0x6f, 0x59, 0xc7, 0x6e, 0x92, 0x6b, 0x2b, 0xf7, 0x95, 0x5f, 0x83,
90675 - 0x6c, 0x27, 0x03, 0xfa, 0xab, 0x58, 0xfc, 0x21, 0x09, 0x7f, 0x1e, 0x36,
90676 - 0xe5, 0xf3, 0x4d, 0x4a, 0xb7, 0xd3, 0xb6, 0xc1, 0x07, 0x82, 0x9f, 0x13,
90677 - 0x41, 0x3f, 0xa9, 0xf6, 0x40, 0x66, 0xa7, 0x45, 0xbe, 0xb0, 0x49, 0xb2,
90678 - 0xed, 0xf4, 0xa3, 0xe5, 0xe7, 0xe8, 0xaf, 0xc6, 0x7d, 0x96, 0x96, 0x3f,
90679 - 0xe2, 0x1e, 0xaf, 0x73, 0x2d, 0xa9, 0xc4, 0x9f, 0xc9, 0xa7, 0x65, 0x22,
90680 - 0xc1, 0xb5, 0x3c, 0x2a, 0xc5, 0xca, 0x63, 0xf8, 0x71, 0x9d, 0x9c, 0xf7,
90681 - 0xc7, 0xf4, 0x5d, 0x86, 0x31, 0x29, 0xcd, 0x64, 0x64, 0x6a, 0x6e, 0x92,
90682 - 0xdf, 0xa0, 0x8e, 0xdc, 0xa9, 0xce, 0xf8, 0x9c, 0x44, 0x2a, 0xb4, 0x2d,
90683 - 0x39, 0xc5, 0xbb, 0x1b, 0x6a, 0x3d, 0x93, 0x58, 0xcf, 0xe3, 0xed, 0xbc,
90684 - 0xb3, 0x7e, 0x0d, 0xfa, 0xd7, 0x3a, 0x45, 0x39, 0x74, 0xec, 0xee, 0x10,
90685 - 0xf3, 0xfb, 0xe0, 0xbf, 0xb3, 0x6c, 0x9f, 0x84, 0x8f, 0xad, 0xe8, 0x79,
90686 - 0x94, 0xeb, 0xb3, 0x66, 0xd5, 0xfe, 0x14, 0xda, 0xa2, 0xde, 0x31, 0xd3,
90687 - 0xd6, 0xd4, 0x61, 0x5b, 0xae, 0x73, 0xaf, 0x34, 0x9f, 0x33, 0xf3, 0x82,
90688 - 0x1c, 0x26, 0x1a, 0xe9, 0xdd, 0xb2, 0x8e, 0xde, 0x11, 0x62, 0x5e, 0xd0,
90689 - 0x8b, 0x34, 0x0e, 0x6b, 0x1a, 0x7f, 0x05, 0xfd, 0x1b, 0x1e, 0xdc, 0x89,
90690 - 0x32, 0x5b, 0x7f, 0x93, 0xf4, 0x7e, 0xe8, 0x4e, 0x9a, 0xb3, 0x3e, 0xe9,
90691 - 0x4e, 0xd9, 0xe2, 0x7c, 0x36, 0xa2, 0xf9, 0xeb, 0x9a, 0x2f, 0xfb, 0x40,
90692 - 0x2f, 0xde, 0x2b, 0xdd, 0xa6, 0xbe, 0x2f, 0xc8, 0x8e, 0xef, 0x83, 0xec,
90693 - 0x98, 0x75, 0x6d, 0x83, 0x8c, 0xf1, 0xdc, 0x84, 0xf5, 0x1b, 0x69, 0x12,
90694 - 0xd8, 0xbd, 0x30, 0x63, 0x1f, 0x2e, 0xd7, 0x0a, 0x5c, 0xfa, 0x05, 0xda,
90695 - 0x28, 0x7e, 0x63, 0x7d, 0xb3, 0xb6, 0x51, 0x3f, 0x8f, 0xc7, 0x3f, 0x6a,
90696 - 0x0f, 0x6c, 0x94, 0x0d, 0x9a, 0xb4, 0xe9, 0x36, 0xfb, 0x80, 0x91, 0x19,
90697 - 0x0f, 0x4e, 0x25, 0x1e, 0x14, 0x33, 0x8e, 0xbf, 0x9b, 0x7e, 0xef, 0xd0,
90698 - 0xc0, 0x36, 0xa0, 0x16, 0x75, 0x67, 0x27, 0xc1, 0x3b, 0x40, 0xa9, 0xd0,
90699 - 0x3e, 0x75, 0x7f, 0x63, 0xed, 0xf7, 0x23, 0x69, 0x79, 0x76, 0x55, 0x56,
90700 - 0x46, 0x7e, 0x28, 0x8e, 0x24, 0x6f, 0xa4, 0xac, 0xb0, 0xdf, 0x49, 0xae,
90701 - 0x33, 0xf1, 0x90, 0x5a, 0xa7, 0x0d, 0x3f, 0x92, 0x77, 0x2d, 0xec, 0x50,
90702 - 0x75, 0x8e, 0x7c, 0x47, 0xba, 0xc8, 0x67, 0x73, 0xde, 0xab, 0xf4, 0x0a,
90703 - 0xc6, 0x65, 0x19, 0x75, 0x23, 0xdf, 0x67, 0xf4, 0x79, 0x70, 0x7b, 0x07,
90704 - 0xef, 0x24, 0x14, 0x50, 0x56, 0x59, 0xdc, 0x78, 0x6e, 0xbf, 0xad, 0xe4,
90705 - 0xe0, 0x51, 0xd0, 0xfd, 0x9f, 0xa1, 0xee, 0x63, 0x48, 0xb9, 0xc6, 0xcc,
90706 - 0x0a, 0xdf, 0x49, 0xef, 0x8f, 0xca, 0x20, 0xe4, 0x82, 0xf9, 0x47, 0x81,
90707 - 0x37, 0x69, 0x4f, 0x91, 0x56, 0xf8, 0x4c, 0x5d, 0xef, 0x6a, 0x7b, 0xca,
90708 - 0xb9, 0xec, 0xc3, 0x5c, 0xd4, 0x3a, 0xb5, 0x3c, 0xdd, 0xaf, 0xdb, 0x8d,
90709 - 0xaf, 0xd0, 0xea, 0xa1, 0x77, 0xe0, 0x8d, 0xe8, 0x0a, 0xde, 0x08, 0xc6,
90710 - 0xca, 0x76, 0x18, 0xac, 0x11, 0xac, 0x21, 0xc0, 0x1a, 0x81, 0x9c, 0x4f,
90711 - 0x4a, 0x04, 0x72, 0x1c, 0x5e, 0x95, 0x63, 0xe0, 0x9e, 0x60, 0xcf, 0x4c,
90712 - 0xf1, 0x1c, 0x53, 0xd1, 0x99, 0x72, 0x48, 0xf9, 0x25, 0x1f, 0x1b, 0x79,
90713 - 0x7d, 0xfb, 0xbb, 0xf0, 0xba, 0xd4, 0x61, 0xf0, 0xc3, 0x3f, 0x6c, 0x1f,
90714 - 0x3c, 0xd2, 0xb1, 0xba, 0x0f, 0x6e, 0xfa, 0x05, 0xed, 0x83, 0xf5, 0x72,
90715 - 0xd9, 0x28, 0x53, 0x36, 0xe4, 0x89, 0xfc, 0xa2, 0x3c, 0x51, 0x8e, 0x48,
90716 - 0x4b, 0xea, 0xd3, 0x66, 0xfa, 0x6f, 0x89, 0xab, 0xea, 0xdb, 0x91, 0x69,
90717 - 0xe8, 0xa0, 0x8e, 0x50, 0xa5, 0x12, 0x97, 0xd2, 0xe2, 0x4f, 0x94, 0x4c,
90718 - 0x3f, 0x5b, 0xa7, 0x5e, 0x7a, 0xaf, 0xb5, 0xaf, 0xd5, 0xb9, 0x85, 0x75,
90719 - 0x3a, 0xb7, 0xb0, 0xa2, 0x73, 0xdb, 0xb5, 0xcf, 0xf6, 0x0f, 0xd1, 0xb9,
90720 - 0xf1, 0x86, 0xb3, 0x21, 0x73, 0x2e, 0x24, 0xa1, 0x5c, 0x5f, 0x8b, 0xec,
90721 - 0x81, 0x1d, 0x19, 0x99, 0xd9, 0x2b, 0x7f, 0x30, 0x33, 0xad, 0xee, 0x49,
90722 - 0x7d, 0xd3, 0x4b, 0x25, 0x3e, 0x11, 0xf2, 0xe5, 0xa3, 0xf0, 0xb9, 0x27,
90723 - 0xba, 0x9a, 0x64, 0xcf, 0x6d, 0xea, 0xbc, 0xd3, 0xce, 0x85, 0x3a, 0x85,
90724 - 0x91, 0xf8, 0xbc, 0xe7, 0x78, 0xc9, 0x10, 0xef, 0xcc, 0x35, 0xcb, 0x44,
90725 - 0xbc, 0x55, 0xf6, 0x02, 0x3b, 0x15, 0xaf, 0xf7, 0xd4, 0x37, 0xd3, 0x59,
90726 - 0x75, 0x9e, 0xf4, 0x86, 0xe6, 0x3b, 0xe8, 0xd0, 0x66, 0xcb, 0x7f, 0xac,
90727 - 0x33, 0xcf, 0xf2, 0x07, 0xd7, 0xe5, 0xf9, 0xfc, 0x04, 0xfc, 0xb9, 0x38,
90728 - 0x68, 0xd5, 0x78, 0xff, 0x28, 0xac, 0xe8, 0x59, 0xaa, 0x8c, 0xab, 0x7b,
90729 - 0x5d, 0x57, 0xc3, 0xa4, 0x97, 0xf2, 0xa1, 0x12, 0xb9, 0x30, 0x30, 0xce,
90730 - 0x2c, 0x90, 0xb4, 0x4b, 0xbf, 0x53, 0xe3, 0x4f, 0xe8, 0xff, 0xfd, 0xea,
90731 - 0x7c, 0x79, 0x19, 0xb4, 0xf1, 0x55, 0xfc, 0xb9, 0x10, 0x27, 0xae, 0x5f,
90732 - 0xbd, 0xc3, 0xfc, 0x4e, 0x7c, 0xaf, 0xb0, 0xbd, 0x39, 0x0b, 0xd1, 0xf1,
90733 - 0x2a, 0x1d, 0x07, 0x50, 0x67, 0x7b, 0x1b, 0xfd, 0xbf, 0x0b, 0xc4, 0x7a,
90734 - 0xfc, 0xae, 0x9f, 0xd8, 0xce, 0x39, 0x5a, 0x91, 0x1f, 0x2a, 0x5f, 0x34,
90735 - 0x4b, 0xfa, 0x56, 0xc1, 0xa7, 0xe3, 0x09, 0x63, 0xcf, 0x43, 0xdd, 0xe7,
90736 - 0x1b, 0x7d, 0x51, 0xf6, 0x11, 0x53, 0x77, 0x42, 0x56, 0xff, 0x9f, 0x17,
90737 - 0xc6, 0x98, 0xb2, 0xa1, 0xbb, 0xcb, 0xd3, 0x12, 0x3e, 0x31, 0x26, 0x91,
90738 - 0xe3, 0x8c, 0xe7, 0x67, 0xa5, 0x14, 0xf7, 0xe5, 0x01, 0x6f, 0xad, 0x6f,
90739 - 0xd2, 0x6d, 0xad, 0x9f, 0xfb, 0xa3, 0x32, 0x74, 0xfa, 0x31, 0x89, 0x9e,
90740 - 0xe0, 0xbb, 0x35, 0x67, 0x39, 0xd0, 0x47, 0x9b, 0xa5, 0x12, 0x67, 0x4c,
90741 - 0x3b, 0xaa, 0xce, 0xc6, 0x2f, 0x8f, 0xbf, 0x1e, 0x2d, 0x01, 0x2b, 0x14,
90742 - 0x94, 0x6e, 0x41, 0xba, 0xe2, 0x4b, 0xe4, 0xae, 0xe3, 0x9e, 0x82, 0xbf,
90743 - 0x19, 0x9a, 0xa8, 0x44, 0xd5, 0x1d, 0xa5, 0xcb, 0x71, 0xd6, 0x7d, 0x0c,
90744 - 0x7e, 0x37, 0x71, 0x06, 0x74, 0xc7, 0x98, 0xb4, 0x30, 0x1f, 0x3e, 0xb1,
90745 - 0x8a, 0x33, 0xa8, 0x13, 0x86, 0xbc, 0xb8, 0x44, 0xce, 0x04, 0x6b, 0xe7,
90746 - 0x7f, 0x1c, 0x64, 0xcd, 0xef, 0x95, 0xf0, 0x71, 0x3e, 0x37, 0xfa, 0x43,
90747 - 0xc4, 0xee, 0xb0, 0x0d, 0xe7, 0x7f, 0x1f, 0xfd, 0xf1, 0x5d, 0x56, 0x7f,
90748 - 0x87, 0x8b, 0x7c, 0xf5, 0xef, 0xfa, 0x7f, 0x04, 0x50, 0xf6, 0xff, 0x3f,
90749 - 0xc3, 0x8e, 0xbb, 0xb0, 0xa8, 0x4d, 0x00, 0x00, 0x00 };
90750 + 0xcd, 0x7c, 0x0d, 0x70, 0x5b, 0xd7, 0x95, 0xde, 0xc1, 0x03, 0x40, 0x82,
90751 + 0x10, 0x45, 0x3d, 0x52, 0x30, 0x0d, 0x3b, 0x4c, 0x82, 0x47, 0x3c, 0x92,
90752 + 0xb0, 0xc9, 0x64, 0x9f, 0x64, 0x46, 0x66, 0x12, 0xac, 0x05, 0x03, 0xa4,
90753 + 0x4c, 0x27, 0xea, 0x92, 0xb6, 0x19, 0x47, 0x6d, 0x35, 0x09, 0x17, 0x92,
90754 + 0x12, 0xdb, 0x4d, 0xa7, 0x9a, 0xc6, 0xe9, 0x2a, 0x1b, 0xc7, 0x82, 0x41,
90755 + 0xca, 0x51, 0x52, 0x8a, 0x60, 0x24, 0x4a, 0xf2, 0x74, 0xb3, 0xbb, 0x0c,
90756 + 0x48, 0x4a, 0x8e, 0x03, 0x09, 0x96, 0xec, 0x75, 0xdc, 0xad, 0xb3, 0x62,
90757 + 0x68, 0xad, 0xec, 0x4d, 0xb3, 0xad, 0x9d, 0x49, 0x3a, 0x9a, 0xa9, 0xb7,
90758 + 0x55, 0x95, 0xa4, 0xf9, 0x99, 0xfe, 0xb8, 0x49, 0xa6, 0x75, 0xbb, 0xf1,
90759 + 0xbe, 0x7e, 0xdf, 0x7d, 0xf7, 0x11, 0x20, 0xc5, 0x28, 0xde, 0xec, 0x64,
90760 + 0x66, 0x39, 0x83, 0xb9, 0xef, 0xde, 0x77, 0x7f, 0xce, 0x3d, 0xf7, 0xfc,
90761 + 0x7c, 0xe7, 0xde, 0xfb, 0x78, 0x87, 0x48, 0x54, 0xf4, 0xdf, 0x46, 0xfc,
90762 + 0xfa, 0xff, 0xe9, 0x3f, 0xdb, 0xb3, 0xf5, 0xdd, 0xfd, 0xef, 0x66, 0xde,
90763 + 0x30, 0x42, 0x21, 0xa6, 0x41, 0xfc, 0x62, 0xf8, 0x6d, 0xd5, 0xcf, 0xeb,
90764 + 0xfd, 0x99, 0xf8, 0x6d, 0x0b, 0x88, 0x8c, 0xff, 0x44, 0x24, 0xb0, 0xe6,
90765 + 0x5d, 0x64, 0x9d, 0xfa, 0xae, 0xfb, 0x4b, 0x3a, 0xd2, 0x7f, 0x06, 0x7e,
90766 + 0x89, 0xeb, 0x57, 0x59, 0x19, 0xf7, 0xd7, 0xfd, 0x0b, 0xea, 0xe6, 0x1b,
90767 + 0xf5, 0x4f, 0x22, 0x46, 0x5a, 0x46, 0xb2, 0xb6, 0x44, 0x82, 0xe9, 0x9f,
90768 + 0x8f, 0xec, 0xb1, 0x45, 0x32, 0x95, 0xde, 0x44, 0x4e, 0xde, 0x74, 0x0b,
90769 + 0xb1, 0x90, 0xb0, 0xfc, 0xed, 0xe9, 0x5f, 0x1c, 0xfc, 0xfa, 0xed, 0xd6,
90770 + 0xeb, 0x73, 0x41, 0x89, 0x98, 0xe9, 0x37, 0xc4, 0xec, 0x96, 0x48, 0x07,
90771 + 0xda, 0x7c, 0xa9, 0xe7, 0x49, 0x43, 0x5a, 0xfc, 0xbe, 0xcc, 0xf1, 0x60,
90772 + 0x5a, 0x46, 0xf7, 0x4e, 0x1d, 0x74, 0x0d, 0x5b, 0x0a, 0x37, 0xa7, 0xed,
90773 + 0x44, 0x51, 0x9a, 0x07, 0x26, 0xfb, 0x6f, 0x17, 0xe4, 0x47, 0xf7, 0x56,
90774 + 0x22, 0x92, 0xad, 0x16, 0x9a, 0x0d, 0xdb, 0x46, 0x1a, 0x29, 0xbc, 0x2d,
90775 + 0x2d, 0x91, 0x86, 0xf4, 0x6c, 0xe3, 0x25, 0x9b, 0xe3, 0x0f, 0x60, 0xfc,
90776 + 0xb7, 0x49, 0xc8, 0x76, 0xdd, 0x49, 0x8c, 0xbf, 0xa3, 0xf2, 0xa6, 0xfb,
90777 + 0x58, 0xc8, 0x1b, 0xdb, 0x48, 0x1f, 0x08, 0x32, 0x0d, 0xa4, 0x33, 0x23,
90778 + 0x9d, 0x15, 0x95, 0x6f, 0xf0, 0xf2, 0x83, 0x3a, 0x1f, 0x89, 0x7a, 0xb4,
90779 + 0x4b, 0x13, 0x68, 0x8f, 0x84, 0xd2, 0xe9, 0x26, 0xf4, 0x11, 0x09, 0xa7,
90780 + 0x97, 0x7e, 0x7b, 0x51, 0xd5, 0x3b, 0xac, 0xeb, 0x3d, 0x10, 0xf6, 0xda,
90781 + 0x4d, 0x8e, 0x74, 0x57, 0x98, 0xce, 0x8e, 0x74, 0xa9, 0xf4, 0x4b, 0x23,
90782 + 0x49, 0x95, 0xce, 0xa9, 0x7a, 0x81, 0xf4, 0xc2, 0x88, 0xad, 0xd2, 0xb4,
90783 + 0x2e, 0x1f, 0x1e, 0x49, 0xa8, 0x74, 0xa7, 0x4e, 0x47, 0x75, 0x3a, 0xa6,
90784 + 0xd3, 0x5d, 0x3a, 0xdd, 0xad, 0xd3, 0x71, 0x9d, 0xee, 0xd5, 0xfd, 0x3c,
90785 + 0xa0, 0xf3, 0x9f, 0xd0, 0xe9, 0x7e, 0x9d, 0x3e, 0xac, 0xd3, 0x03, 0x3a,
90786 + 0x7d, 0x44, 0xd3, 0x55, 0xd0, 0xe9, 0x94, 0x2e, 0x9f, 0xd1, 0x74, 0x3e,
90787 + 0x01, 0x7a, 0xfe, 0x71, 0xa3, 0x96, 0x5b, 0xcc, 0x37, 0x21, 0x7b, 0xa6,
90788 + 0x22, 0x52, 0x2c, 0x05, 0x25, 0xa7, 0xd6, 0xf3, 0xe3, 0x61, 0x89, 0x46,
90789 + 0x64, 0xa2, 0x1a, 0x91, 0x2b, 0x4a, 0x5c, 0x7f, 0xe4, 0x7e, 0xbd, 0xc7,
90790 + 0x94, 0xa7, 0xab, 0x31, 0xb9, 0x50, 0x95, 0xc0, 0x68, 0x4f, 0x93, 0x18,
90791 + 0x47, 0x6f, 0x96, 0x8c, 0x19, 0x90, 0xa0, 0xe2, 0x6b, 0x42, 0xb2, 0x53,
90792 + 0xed, 0xc8, 0x5b, 0x71, 0x91, 0xc5, 0xb0, 0xb7, 0x8e, 0x11, 0x09, 0x9e,
90793 + 0xe0, 0xba, 0x3c, 0x37, 0x72, 0x69, 0x36, 0x2e, 0xa1, 0xe9, 0x04, 0xfa,
90794 + 0x6f, 0x96, 0xf0, 0x09, 0xe9, 0x08, 0x4a, 0x57, 0xfc, 0x63, 0xa8, 0x31,
90795 + 0x58, 0x09, 0xc9, 0x50, 0x25, 0x80, 0xb5, 0x8a, 0x40, 0x4e, 0x9a, 0xf1,
90796 + 0x33, 0xf1, 0x8b, 0xe1, 0x17, 0xc7, 0xef, 0xaf, 0xd0, 0x4f, 0x87, 0xe4,
90797 + 0x2a, 0xec, 0x13, 0xe3, 0x96, 0x30, 0x7e, 0xc9, 0x32, 0xc7, 0x85, 0x34,
90798 + 0xc5, 0xe5, 0xeb, 0x3d, 0x1e, 0x4d, 0x17, 0xaa, 0x91, 0x40, 0xf6, 0xa4,
90799 + 0xec, 0xcf, 0x39, 0x92, 0x30, 0xec, 0xa8, 0xe4, 0xcd, 0x40, 0x62, 0x6f,
90800 + 0xaa, 0x4d, 0x0a, 0x63, 0x78, 0x57, 0x92, 0x8c, 0x81, 0xbe, 0xf3, 0xa6,
90801 + 0x8c, 0x7b, 0xef, 0x58, 0xf6, 0x7f, 0xa1, 0xaf, 0x96, 0x49, 0xc1, 0xbd,
90802 + 0x50, 0xfa, 0xd7, 0x78, 0x66, 0x5f, 0x2f, 0x86, 0x3c, 0x9a, 0xdf, 0x40,
90803 + 0x9e, 0xe5, 0xee, 0x26, 0x2f, 0xcf, 0x67, 0xd6, 0xf5, 0xc7, 0xf4, 0xe7,
90804 + 0xca, 0xb1, 0x7b, 0x30, 0x5f, 0x8e, 0xbf, 0x32, 0x5f, 0xd0, 0xd1, 0x1c,
90805 + 0xc8, 0x9d, 0x4c, 0xc8, 0xa1, 0xd2, 0x1d, 0x92, 0x75, 0x5c, 0x77, 0x8f,
90806 + 0x23, 0x31, 0x43, 0xba, 0xcc, 0x1c, 0xde, 0x96, 0x2b, 0x12, 0xc8, 0x96,
90807 + 0x7c, 0x7e, 0xb0, 0xdf, 0x10, 0xca, 0xda, 0x51, 0xbf, 0x25, 0x30, 0x78,
90808 + 0x12, 0xb4, 0xa7, 0xc9, 0x17, 0xc8, 0xac, 0xd3, 0x15, 0xdf, 0x8b, 0xf1,
90809 + 0xe6, 0x2b, 0x5d, 0xce, 0xb2, 0x98, 0xe8, 0xb3, 0x0d, 0x75, 0xc8, 0x23,
90810 + 0xf6, 0xc5, 0x3e, 0xd9, 0x5f, 0x33, 0xda, 0xc6, 0xf0, 0x8e, 0x34, 0xb9,
90811 + 0x6e, 0xd6, 0x31, 0x99, 0x97, 0x39, 0xf0, 0x6d, 0x8e, 0x7c, 0x8b, 0x76,
90812 + 0xc8, 0xa9, 0x0a, 0xc7, 0x58, 0x8f, 0xee, 0x5b, 0xff, 0x9e, 0xd1, 0x1d,
90813 + 0x47, 0xff, 0x31, 0xa4, 0x1b, 0x02, 0xd9, 0x63, 0x2e, 0xc6, 0x8f, 0xe3,
90814 + 0x79, 0xbd, 0x39, 0x5c, 0xd1, 0x32, 0x18, 0x07, 0xed, 0x31, 0x39, 0xa7,
90815 + 0xe4, 0x70, 0x83, 0x04, 0x21, 0x87, 0x5c, 0xe3, 0xd6, 0x13, 0xef, 0x91,
90816 + 0x7c, 0xcc, 0x4a, 0xd0, 0x76, 0x76, 0x6e, 0x6d, 0xc2, 0x1c, 0xb5, 0x15,
90817 + 0x9c, 0x8e, 0x41, 0x0e, 0x97, 0x5b, 0x0d, 0x94, 0x18, 0x62, 0x99, 0xff,
90818 + 0x48, 0x0a, 0x92, 0x5b, 0xf8, 0xbd, 0x80, 0x44, 0x0d, 0xd4, 0xbb, 0x25,
90819 + 0xe0, 0xf1, 0x80, 0xfc, 0xc9, 0x80, 0x3f, 0x01, 0xd1, 0xf6, 0x41, 0x3a,
90820 + 0x2b, 0x7c, 0xdf, 0x9b, 0x30, 0xd4, 0xbb, 0x41, 0xbc, 0x0b, 0x49, 0x72,
90821 + 0xab, 0xff, 0x7e, 0x10, 0xef, 0x6f, 0x96, 0x71, 0x13, 0xb4, 0x94, 0x9e,
90822 + 0x37, 0xb2, 0xa0, 0xf1, 0xce, 0x90, 0x9a, 0x2b, 0xea, 0x8e, 0xd7, 0xf5,
90823 + 0x33, 0x8e, 0x7a, 0xff, 0x0a, 0x63, 0x81, 0xde, 0x52, 0x02, 0xb4, 0xb4,
90824 + 0x83, 0x16, 0xd2, 0x58, 0x30, 0xb2, 0xd5, 0x10, 0xf2, 0x93, 0x46, 0xee,
90825 + 0xf4, 0x61, 0x3c, 0x8b, 0x69, 0xa4, 0x9f, 0x67, 0x8a, 0xf6, 0xbb, 0xeb,
90826 + 0xda, 0xef, 0x46, 0x7b, 0x8e, 0xc1, 0xf6, 0x9e, 0xfc, 0x17, 0x94, 0x2c,
90827 + 0x26, 0xae, 0xc3, 0x8f, 0xe0, 0xaf, 0xc1, 0x8f, 0x7f, 0xa3, 0xf9, 0xf1,
90828 + 0xd7, 0xf2, 0x9b, 0xe7, 0xc7, 0x7f, 0xfa, 0x0d, 0xf1, 0x43, 0x24, 0x7f,
90829 + 0x8c, 0xcf, 0x21, 0x29, 0x28, 0xbb, 0x45, 0xbd, 0xa5, 0xbc, 0xd3, 0x66,
90830 + 0x91, 0x4f, 0x94, 0x63, 0xe8, 0x40, 0x35, 0x84, 0xf4, 0x49, 0xa4, 0x1b,
90831 + 0x02, 0xa3, 0xc7, 0xae, 0x62, 0xfd, 0x5d, 0x31, 0xb7, 0xfa, 0x7e, 0xa3,
90832 + 0x10, 0x37, 0xa5, 0x43, 0xcc, 0x77, 0xc3, 0x69, 0xb7, 0x5b, 0x66, 0x5e,
90833 + 0x7e, 0x80, 0xf7, 0x6f, 0x06, 0x7c, 0xff, 0x9e, 0x9d, 0x6a, 0x7a, 0x23,
90834 + 0xa3, 0x9e, 0xc2, 0xe4, 0x67, 0xc6, 0x48, 0x87, 0x02, 0xb9, 0x52, 0x62,
90835 + 0xdc, 0x48, 0xc7, 0x60, 0xa7, 0x98, 0x1f, 0x08, 0x78, 0x34, 0xf7, 0xa3,
90836 + 0xae, 0x6f, 0xb3, 0x7c, 0xda, 0xfb, 0x41, 0xfb, 0x5a, 0xdb, 0x95, 0x01,
90837 + 0x2d, 0xa4, 0x81, 0x74, 0x15, 0x82, 0x9a, 0xf7, 0xe8, 0xe7, 0x80, 0xea,
90838 + 0x27, 0x98, 0x1e, 0x10, 0xfa, 0xd0, 0xfc, 0x14, 0xf5, 0x80, 0xed, 0xd8,
90839 + 0x97, 0x67, 0x93, 0xf3, 0x15, 0xbf, 0x8f, 0x42, 0x7d, 0x1f, 0xa0, 0x47,
90840 + 0x36, 0x19, 0x76, 0x18, 0x6b, 0xcf, 0xae, 0x0e, 0xe3, 0xdd, 0x97, 0x24,
90841 + 0x7b, 0xfa, 0x76, 0x03, 0x73, 0x40, 0xbf, 0xe4, 0xd1, 0x28, 0x6c, 0x36,
90842 + 0xf5, 0x2c, 0x22, 0xb9, 0x18, 0xcb, 0x3e, 0xa2, 0xc7, 0x0d, 0x49, 0x46,
90843 + 0xe5, 0xbf, 0xd2, 0x52, 0xa3, 0xe3, 0x79, 0x3d, 0x9f, 0x34, 0xe6, 0x43,
90844 + 0x1a, 0xfc, 0xb9, 0xa4, 0xeb, 0xe6, 0xe2, 0xf3, 0x9a, 0xbc, 0x30, 0x61,
90845 + 0xe3, 0x23, 0xda, 0x87, 0xb0, 0xdd, 0x64, 0xdd, 0xda, 0x4d, 0xa2, 0x0d,
90846 + 0x79, 0x8f, 0x3a, 0x6b, 0xfc, 0x0a, 0x7d, 0xca, 0x20, 0xfa, 0x29, 0xce,
90847 + 0x1a, 0x92, 0x73, 0xe0, 0xab, 0x9d, 0xb7, 0x69, 0x79, 0xad, 0xc9, 0x52,
90848 + 0x78, 0x5d, 0x59, 0x3a, 0x68, 0x78, 0xf6, 0x1a, 0xbe, 0x05, 0xfe, 0x67,
90849 + 0x62, 0xd6, 0x4a, 0xf9, 0xb2, 0x54, 0x9c, 0x7a, 0x2b, 0xb2, 0xe4, 0xb7,
90850 + 0x8f, 0x40, 0x76, 0xfd, 0x31, 0xd6, 0xd2, 0xec, 0xd7, 0x01, 0x8d, 0xa5,
90851 + 0xac, 0xc6, 0x28, 0x1c, 0xc7, 0xf3, 0x0d, 0x73, 0xab, 0x7c, 0xc3, 0x61,
90852 + 0xb4, 0x95, 0x40, 0xae, 0xa7, 0x59, 0xf6, 0xcd, 0xfa, 0x7d, 0x1c, 0x56,
90853 + 0x32, 0xbb, 0x77, 0xca, 0x32, 0x87, 0x82, 0x92, 0x19, 0x9a, 0x19, 0x90,
90854 + 0xc1, 0x6a, 0x07, 0xd6, 0xf4, 0x0d, 0x17, 0xbe, 0xf3, 0xdd, 0x61, 0xb1,
90855 + 0x61, 0x17, 0x31, 0xe7, 0x7e, 0xf0, 0xb8, 0x1a, 0x16, 0x23, 0xed, 0x20,
90856 + 0xad, 0xc7, 0x58, 0xa1, 0xd0, 0xd0, 0xaa, 0x7c, 0x03, 0xea, 0xa0, 0xef,
90857 + 0xfe, 0xb5, 0xf5, 0x20, 0x9f, 0xe0, 0x6d, 0xd6, 0x79, 0xd3, 0x85, 0x1f,
90858 + 0xd6, 0x3e, 0x8b, 0xa5, 0xb4, 0x13, 0xbe, 0x8d, 0xf8, 0x10, 0xf4, 0x5b,
90859 + 0xe9, 0x42, 0xc1, 0x48, 0xef, 0x47, 0x1f, 0xa2, 0xe4, 0xb4, 0x58, 0x7d,
90860 + 0xda, 0xd7, 0x7b, 0x55, 0xbe, 0xa3, 0x9f, 0xb2, 0x37, 0x07, 0x4c, 0xc0,
90861 + 0x39, 0x2d, 0x28, 0x5d, 0xcf, 0x99, 0x31, 0x99, 0x2c, 0x29, 0x4c, 0x23,
90862 + 0xc9, 0xca, 0x1f, 0x49, 0xee, 0xb4, 0xc8, 0x37, 0xa7, 0x58, 0xef, 0x05,
90863 + 0x5d, 0xef, 0x79, 0xd4, 0x4b, 0x26, 0x06, 0x03, 0x16, 0xfc, 0x80, 0x05,
90864 + 0x35, 0xe9, 0x4d, 0x20, 0x35, 0x87, 0xf1, 0x1b, 0xa4, 0x93, 0x41, 0x3d,
90865 + 0x0f, 0x03, 0x3d, 0x0f, 0x7e, 0x88, 0xdc, 0x53, 0x6a, 0x84, 0x3d, 0xf9,
90866 + 0x2f, 0xa0, 0x35, 0x26, 0x5f, 0xc0, 0x3c, 0x2e, 0x4d, 0x11, 0x67, 0xbd,
90867 + 0x20, 0x8b, 0x53, 0xc4, 0x5d, 0xcf, 0xcb, 0xe4, 0x54, 0xd2, 0xf9, 0x26,
90868 + 0xf8, 0x7c, 0x4a, 0x38, 0x97, 0x5e, 0x07, 0x29, 0x30, 0xa0, 0x95, 0x78,
90869 + 0x1c, 0xf6, 0xac, 0x67, 0xab, 0xd7, 0x5f, 0x97, 0xee, 0xcf, 0xae, 0x58,
90870 + 0x72, 0xc5, 0xa4, 0x7d, 0xba, 0x56, 0xc7, 0xb3, 0x5a, 0xc7, 0x47, 0x9d,
90871 + 0x0e, 0x31, 0xa0, 0xd7, 0x99, 0xb1, 0x02, 0xbc, 0x1f, 0xf5, 0xfa, 0x7f,
90872 + 0x1b, 0x35, 0xfc, 0x33, 0x00, 0xac, 0x6a, 0x29, 0x7f, 0xf7, 0xb7, 0xd3,
90873 + 0xf1, 0x7a, 0xdd, 0xe6, 0xf8, 0x2d, 0x68, 0x13, 0x42, 0x7a, 0x7d, 0xbd,
90874 + 0x46, 0x1f, 0x75, 0x6d, 0x07, 0xa8, 0x17, 0x68, 0xf3, 0x07, 0xe0, 0x05,
90875 + 0xf9, 0xff, 0x56, 0xf4, 0xb9, 0x37, 0xf8, 0x96, 0xf4, 0x79, 0xec, 0x7a,
90876 + 0xfa, 0x5c, 0xaf, 0xcb, 0x67, 0xc9, 0x0b, 0x8c, 0x2d, 0x33, 0x9e, 0x6c,
90877 + 0x75, 0x81, 0xd7, 0x09, 0xc8, 0x29, 0x68, 0x28, 0xfd, 0x8d, 0x9b, 0x09,
90878 + 0x79, 0x78, 0xce, 0x93, 0x27, 0xd6, 0xf3, 0xeb, 0x78, 0xb6, 0x77, 0xb0,
90879 + 0x7a, 0x45, 0xd9, 0xd9, 0x73, 0xca, 0xce, 0x5a, 0x87, 0x0b, 0x42, 0x79,
90880 + 0xbb, 0x2d, 0x48, 0xbe, 0x3f, 0xed, 0x7c, 0x16, 0x34, 0x5a, 0x89, 0x84,
90881 + 0xd1, 0x55, 0x30, 0x8c, 0xcf, 0xca, 0xfe, 0xf9, 0x87, 0x65, 0x7f, 0x89,
90882 + 0x7d, 0xa4, 0xf1, 0xde, 0x46, 0x59, 0x13, 0x6c, 0x2d, 0x6d, 0xfa, 0x1b,
90883 + 0x01, 0x6f, 0x2c, 0x03, 0xfe, 0x6b, 0x29, 0x70, 0x4f, 0xf5, 0x62, 0x20,
90884 + 0x3b, 0x4f, 0xdd, 0x45, 0x79, 0xb5, 0xde, 0xe6, 0xfb, 0xf6, 0xbe, 0x66,
90885 + 0xff, 0x06, 0x4b, 0x93, 0xc4, 0x80, 0x46, 0xd6, 0xe1, 0x9a, 0x51, 0x37,
90886 + 0x2f, 0x98, 0xde, 0x9c, 0x3f, 0x09, 0x3e, 0x51, 0xaf, 0xc9, 0x37, 0xf8,
90887 + 0xc0, 0x10, 0x75, 0x96, 0xcf, 0xe2, 0x06, 0xd3, 0xd4, 0x3b, 0x09, 0x05,
90888 + 0x41, 0x46, 0x2e, 0xc6, 0x3a, 0x77, 0x80, 0xce, 0xb5, 0x3a, 0xcd, 0x75,
90889 + 0x14, 0x6d, 0x43, 0x58, 0x36, 0x80, 0xe7, 0x4e, 0x19, 0x9f, 0xcf, 0x60,
90890 + 0xcc, 0x3b, 0x75, 0xdf, 0xab, 0x7c, 0x0c, 0xfa, 0x48, 0xe8, 0xf5, 0xd8,
90891 + 0xe0, 0xdb, 0x41, 0x94, 0x39, 0xba, 0xac, 0xa1, 0xae, 0xcc, 0x5f, 0xb7,
90892 + 0x8f, 0x62, 0x7c, 0xfa, 0x8a, 0x61, 0x8d, 0x7f, 0x5c, 0x37, 0xc7, 0xf5,
90893 + 0xee, 0xfb, 0x87, 0x42, 0xdd, 0xb8, 0x50, 0x2a, 0x98, 0x41, 0x25, 0xa3,
90894 + 0x2f, 0xfc, 0x4e, 0x4d, 0x46, 0x81, 0x97, 0x55, 0x2f, 0xe4, 0x31, 0x69,
90895 + 0x69, 0x06, 0x4f, 0x07, 0x41, 0x2b, 0x78, 0xd7, 0x1e, 0x00, 0xff, 0x9a,
90896 + 0x25, 0x5f, 0x4d, 0xeb, 0x77, 0x2c, 0x0f, 0xc9, 0x68, 0xcc, 0xf7, 0x47,
90897 + 0xb7, 0x99, 0x1e, 0xe6, 0x45, 0x9d, 0xd2, 0x8f, 0x83, 0x9e, 0x0e, 0x98,
90898 + 0x92, 0x3f, 0x39, 0x08, 0x59, 0x23, 0x26, 0x6b, 0x80, 0xac, 0xc5, 0x94,
90899 + 0xad, 0x37, 0x6c, 0xd6, 0xc7, 0xbb, 0xd3, 0xbf, 0x17, 0xf4, 0xda, 0xb0,
90900 + 0x9e, 0xdf, 0xc6, 0x1f, 0xbb, 0x6d, 0xa5, 0xed, 0xa8, 0x63, 0x48, 0x50,
90901 + 0x8d, 0x8f, 0xb2, 0xd3, 0xab, 0xc7, 0x37, 0xda, 0xfd, 0xf1, 0x1f, 0xd1,
90902 + 0x7d, 0xb5, 0xd5, 0xf5, 0x15, 0xbb, 0xce, 0xf8, 0x78, 0x77, 0xfa, 0xa3,
90903 + 0x9b, 0xbd, 0x36, 0xb1, 0xba, 0x36, 0xed, 0x6b, 0xda, 0xb0, 0xbe, 0x3f,
90904 + 0x06, 0xde, 0x9d, 0xbe, 0xab, 0xd9, 0x6b, 0xc3, 0x7a, 0x0d, 0xf0, 0x6d,
90905 + 0x7c, 0x47, 0xd9, 0xdf, 0x5f, 0x27, 0xfb, 0xfb, 0x21, 0xfb, 0xbe, 0x4c,
90906 + 0xad, 0xc5, 0xc9, 0x7e, 0xbc, 0xc3, 0x38, 0x87, 0xd8, 0xaa, 0x16, 0xd7,
90907 + 0x84, 0x4e, 0x34, 0x03, 0xb7, 0xb4, 0x30, 0x96, 0xd1, 0xb8, 0x98, 0xb1,
90908 + 0x0d, 0x71, 0xb0, 0xd8, 0x21, 0xe9, 0x82, 0x8d, 0xea, 0x8a, 0xef, 0xa3,
90909 + 0xc2, 0x55, 0x62, 0x0a, 0x2f, 0x67, 0xf4, 0x18, 0x8c, 0x6b, 0xc8, 0x77,
90910 + 0xe6, 0x73, 0x2b, 0x71, 0x4e, 0x07, 0xe2, 0x20, 0xe2, 0x5d, 0xe2, 0x25,
90911 + 0x9f, 0x7e, 0x9f, 0x9e, 0x03, 0x46, 0x4d, 0x27, 0x32, 0xc6, 0x60, 0x75,
90912 + 0xd0, 0xf0, 0x74, 0x82, 0xef, 0x0f, 0x68, 0x9f, 0xb6, 0x96, 0xde, 0xb7,
90913 + 0xaf, 0xa1, 0x97, 0xb8, 0x2a, 0x21, 0x13, 0x90, 0x91, 0xd0, 0x09, 0xda,
90914 + 0xd8, 0xe7, 0x46, 0x16, 0x67, 0x89, 0x1f, 0xfa, 0xc0, 0x17, 0xd2, 0x4b,
90915 + 0xfe, 0x51, 0x97, 0x5b, 0x60, 0x1f, 0xba, 0x52, 0x65, 0xd4, 0x67, 0x7c,
90916 + 0x3d, 0xae, 0xe2, 0xb2, 0x66, 0xa4, 0x08, 0x9e, 0x40, 0xeb, 0x38, 0x68,
90917 + 0x1d, 0xd7, 0x31, 0xd9, 0x3e, 0xd8, 0xef, 0xd0, 0xb4, 0x4f, 0xeb, 0x8d,
90918 + 0x21, 0x7f, 0x6d, 0x56, 0xd3, 0x5e, 0xef, 0x77, 0x3c, 0xfc, 0x75, 0x4f,
90919 + 0x0f, 0x65, 0xc6, 0x2a, 0x10, 0xb3, 0x8d, 0x2b, 0xf9, 0x00, 0xf6, 0x33,
90920 + 0xc4, 0xd3, 0xa5, 0x16, 0xdf, 0xff, 0x72, 0x3e, 0xf4, 0xff, 0xd4, 0x79,
90921 + 0x7f, 0x0e, 0xcd, 0xd2, 0x79, 0x82, 0x73, 0x58, 0xa1, 0x3f, 0xc6, 0xdd,
90922 + 0x8d, 0xfd, 0xb0, 0x9b, 0x79, 0x45, 0xeb, 0x4e, 0xd9, 0x5b, 0x7a, 0xa7,
90923 + 0xa6, 0xbf, 0x19, 0xf4, 0x8f, 0x42, 0xb6, 0x6b, 0x36, 0x23, 0x5f, 0x19,
90924 + 0x43, 0xde, 0xc3, 0x62, 0xe4, 0x71, 0xbe, 0x42, 0xfb, 0xa1, 0xe7, 0x13,
90925 + 0xe5, 0x7c, 0xd6, 0xda, 0x96, 0xf5, 0xf8, 0xfa, 0x8e, 0x35, 0x7c, 0x15,
90926 + 0xcd, 0xd7, 0x88, 0x34, 0x9c, 0x50, 0x71, 0x2d, 0xfa, 0x25, 0xaf, 0xe9,
90927 + 0xbf, 0x9e, 0x1b, 0x99, 0x9c, 0x95, 0xbe, 0xb0, 0x90, 0xbe, 0x38, 0xcb,
90928 + 0xfa, 0x1b, 0xa4, 0xcb, 0xb9, 0x88, 0x79, 0xe7, 0xb1, 0xde, 0xc6, 0xb4,
90929 + 0x27, 0xdf, 0xe4, 0x6f, 0xbe, 0x12, 0x45, 0x2c, 0xcd, 0xb1, 0xc9, 0x33,
90930 + 0xd2, 0x6f, 0x2a, 0x7a, 0x56, 0xf8, 0x0d, 0xfa, 0x3e, 0x56, 0x59, 0xcb,
90931 + 0xdb, 0x7a, 0x3b, 0xe3, 0xc7, 0xec, 0xdf, 0x35, 0x3d, 0xbd, 0x58, 0x2f,
90932 + 0x66, 0x6f, 0x86, 0x7d, 0x0c, 0xd1, 0x36, 0x82, 0xf7, 0xdc, 0x5f, 0x59,
90933 + 0x0a, 0x11, 0x83, 0x5f, 0x28, 0x85, 0x95, 0xcd, 0xcb, 0x3a, 0x2d, 0x5a,
90934 + 0x3f, 0x6e, 0xd3, 0xbe, 0x23, 0xac, 0x6c, 0xb6, 0x18, 0x26, 0x71, 0x09,
90935 + 0xca, 0x90, 0x9f, 0x67, 0xde, 0xa7, 0xe3, 0xde, 0x5d, 0x61, 0xfb, 0x0f,
90936 + 0x43, 0xbe, 0x4d, 0xa8, 0xd1, 0x55, 0x1f, 0x93, 0xbb, 0xc0, 0x72, 0xef,
90937 + 0x84, 0xdc, 0xde, 0x89, 0xb8, 0x3b, 0x21, 0xf9, 0x14, 0xf5, 0x68, 0x40,
90938 + 0xc5, 0x26, 0x86, 0xbd, 0x0f, 0x65, 0x4d, 0x28, 0x83, 0x13, 0x33, 0x31,
90939 + 0x7f, 0xfb, 0x77, 0x65, 0x1c, 0x32, 0x9e, 0x4f, 0xf5, 0x82, 0x0e, 0xda,
90940 + 0x60, 0x60, 0x1c, 0x3b, 0xc5, 0xb8, 0x1d, 0x7f, 0xfd, 0x61, 0x6f, 0x5e,
90941 + 0xbb, 0x90, 0x47, 0x0c, 0x9f, 0xea, 0xd4, 0x75, 0x36, 0x08, 0xf7, 0x7f,
90942 + 0xf2, 0x66, 0x0b, 0xd2, 0xee, 0x35, 0x75, 0xdf, 0x8f, 0xfc, 0x7b, 0x75,
90943 + 0xff, 0x05, 0xbc, 0xdf, 0x86, 0xdf, 0x20, 0xca, 0x6e, 0x47, 0x99, 0x83,
90944 + 0xb2, 0xf7, 0x20, 0xff, 0x7e, 0xbd, 0x1f, 0xe0, 0xb7, 0x69, 0x41, 0xfe,
90945 + 0x31, 0xbc, 0x87, 0xad, 0x30, 0x5f, 0xc6, 0xfb, 0xf7, 0xe2, 0xf7, 0xee,
90946 + 0x35, 0x75, 0xda, 0xd6, 0xe4, 0x3f, 0xb5, 0xc2, 0x83, 0x0b, 0xa5, 0x9f,
90947 + 0x69, 0xbb, 0x46, 0x79, 0x66, 0xfe, 0x94, 0x7e, 0xf7, 0xce, 0xd0, 0xea,
90948 + 0xf2, 0x1d, 0x7e, 0xbe, 0x6e, 0x0d, 0x3b, 0xb1, 0x86, 0x3e, 0xc6, 0x7c,
90949 + 0xbb, 0xf6, 0x5d, 0x6f, 0xf7, 0xe2, 0xf4, 0x92, 0xdf, 0x8e, 0x7e, 0xed,
90950 + 0xce, 0x35, 0x63, 0x3c, 0xdf, 0x50, 0xcb, 0x37, 0x07, 0x86, 0x4e, 0xb2,
90951 + 0xec, 0x72, 0xc3, 0xea, 0x3a, 0x6f, 0xd6, 0xe5, 0x37, 0x06, 0x86, 0x94,
90952 + 0x8f, 0xbb, 0xab, 0x71, 0x75, 0x9d, 0x64, 0x63, 0x6d, 0x1e, 0x35, 0x5b,
90953 + 0x18, 0x4a, 0x2f, 0x53, 0x8e, 0xa1, 0x0b, 0xdf, 0x1a, 0xc9, 0x4e, 0xb9,
90954 + 0xee, 0x84, 0xb3, 0x14, 0x0f, 0x0a, 0x7d, 0x10, 0xb1, 0x2a, 0xcb, 0x5f,
90955 + 0x46, 0x39, 0xb0, 0x4c, 0x75, 0x54, 0x68, 0x93, 0xd6, 0xc7, 0xa4, 0x09,
90956 + 0x8d, 0x49, 0x55, 0x36, 0x94, 0x55, 0x18, 0xf2, 0xf9, 0x11, 0x60, 0x1e,
90957 + 0xfd, 0xfc, 0x02, 0x9e, 0x13, 0xf5, 0xb8, 0x17, 0xfd, 0x2e, 0x8d, 0x64,
90958 + 0x67, 0xe9, 0xf3, 0x2e, 0x8e, 0xec, 0x99, 0xa5, 0xce, 0x5f, 0x82, 0xce,
90959 + 0x07, 0x64, 0x52, 0xf9, 0x3f, 0xd2, 0xc1, 0x76, 0x4b, 0x23, 0x9d, 0x0b,
90960 + 0x4c, 0x97, 0x47, 0xec, 0x85, 0xa0, 0xec, 0x8b, 0x79, 0x6d, 0x99, 0x4f,
90961 + 0x2c, 0xf8, 0x3a, 0x10, 0x95, 0x70, 0x9a, 0x32, 0x69, 0xa5, 0x80, 0xbd,
90962 + 0x31, 0x9f, 0x27, 0x47, 0x26, 0x6d, 0xca, 0xe7, 0x87, 0x1a, 0xa4, 0x25,
90963 + 0x2a, 0x0d, 0xca, 0xde, 0x3c, 0xa5, 0xc7, 0xba, 0x84, 0xb1, 0x36, 0x29,
90964 + 0x7d, 0xca, 0xda, 0xa1, 0x38, 0xc6, 0x39, 0x68, 0xd8, 0xbd, 0x18, 0x8f,
90965 + 0x91, 0x72, 0x87, 0x4c, 0x54, 0xa9, 0x37, 0xdb, 0xc2, 0xb5, 0xf8, 0xf8,
90966 + 0x3c, 0xda, 0xf9, 0x71, 0x19, 0xc7, 0x2b, 0x03, 0x97, 0x41, 0x96, 0xd3,
90967 + 0x96, 0x99, 0x0d, 0xc2, 0xcf, 0xcf, 0xfa, 0x75, 0x48, 0xd3, 0xd9, 0x91,
90968 + 0xe4, 0x42, 0x12, 0x7d, 0x75, 0xd0, 0x86, 0xc1, 0x76, 0x05, 0xf1, 0x63,
90969 + 0xdf, 0x6c, 0x07, 0x5f, 0x34, 0x40, 0x3f, 0x72, 0x1e, 0x7e, 0xa4, 0x43,
90970 + 0x0e, 0x95, 0x54, 0x1f, 0x09, 0xf6, 0x51, 0xd4, 0x6d, 0x3b, 0x17, 0x1a,
90971 + 0x10, 0xdb, 0x24, 0xcd, 0x17, 0xa5, 0xd6, 0x76, 0x48, 0xbc, 0x76, 0x5e,
90972 + 0xdf, 0x3f, 0x77, 0x33, 0xb1, 0x7a, 0xdd, 0x8f, 0x4a, 0x10, 0x74, 0xe4,
90973 + 0xd0, 0x07, 0xc7, 0xaf, 0xf5, 0xed, 0xf7, 0x97, 0x34, 0x97, 0xaf, 0xe9,
90974 + 0x6b, 0x93, 0x8e, 0xb9, 0xac, 0x44, 0xee, 0xd7, 0x1a, 0x5b, 0xc5, 0x00,
90975 + 0x90, 0x07, 0x09, 0xe5, 0x7a, 0x60, 0x17, 0xab, 0x03, 0x5a, 0x46, 0x5e,
90976 + 0x40, 0x59, 0x7d, 0x6c, 0xe3, 0xc9, 0x57, 0x01, 0x98, 0xae, 0x08, 0x3d,
90977 + 0x0f, 0xa6, 0x33, 0xad, 0xde, 0x5e, 0xd3, 0xf5, 0xe2, 0x19, 0xc8, 0x0d,
90978 + 0xfa, 0x2c, 0xae, 0xb4, 0xe5, 0x9c, 0x5e, 0x18, 0xb9, 0x34, 0x15, 0xc7,
90979 + 0x9c, 0x3c, 0xbf, 0xe0, 0xf1, 0x9a, 0x3e, 0x27, 0x20, 0x8b, 0x76, 0x02,
90980 + 0x71, 0x33, 0x7d, 0x7c, 0x42, 0x5e, 0xb2, 0x7d, 0xff, 0x43, 0x5f, 0x84,
90981 + 0xfa, 0x55, 0xd2, 0x46, 0xda, 0xcf, 0x63, 0x6e, 0xae, 0xcc, 0x38, 0x9e,
90982 + 0x0c, 0xf6, 0xc0, 0x8f, 0x7c, 0x23, 0x64, 0x1d, 0x66, 0x7c, 0x75, 0x25,
90983 + 0x54, 0x3f, 0x1f, 0x1f, 0x2b, 0x3c, 0xaf, 0xf7, 0x7e, 0xcf, 0x6b, 0x79,
90984 + 0x59, 0x82, 0xbc, 0xf4, 0x26, 0x4c, 0xe9, 0x06, 0xed, 0xa8, 0xd3, 0xd7,
90985 + 0x85, 0x38, 0x87, 0x31, 0x74, 0x1c, 0xf4, 0x98, 0xb0, 0x1d, 0x9b, 0x34,
90986 + 0x66, 0xff, 0x77, 0x61, 0xfa, 0xb6, 0x56, 0xb5, 0xaf, 0x7c, 0x5e, 0xc9,
90987 + 0xb3, 0x27, 0xdf, 0x41, 0xfd, 0xde, 0x97, 0xa9, 0x20, 0x21, 0x8d, 0xd4,
90988 + 0xf6, 0x4f, 0x59, 0xff, 0x39, 0x5d, 0xff, 0x59, 0xd4, 0x0f, 0x60, 0x4e,
90989 + 0xae, 0xbb, 0x57, 0xd1, 0xfb, 0x1c, 0xf8, 0x1e, 0x94, 0xe2, 0x8a, 0xcc,
90990 + 0x3f, 0x07, 0x99, 0xa7, 0x7c, 0x9f, 0x87, 0xbe, 0x82, 0xf8, 0x7b, 0x29,
90991 + 0xf7, 0x65, 0x19, 0x3c, 0x9d, 0x6b, 0xe0, 0x5e, 0x67, 0xc2, 0x60, 0xec,
90992 + 0x49, 0x99, 0xec, 0x90, 0xc7, 0x4b, 0x49, 0x73, 0xa2, 0x6e, 0x2d, 0x77,
90993 + 0xac, 0x5a, 0x4b, 0xca, 0x80, 0xaa, 0x9f, 0x62, 0xfd, 0x72, 0x9d, 0x0c,
90994 + 0xcc, 0xcf, 0x5e, 0xaf, 0x1d, 0x65, 0x80, 0xed, 0xd6, 0xc3, 0xe9, 0xdc,
90995 + 0x1b, 0x74, 0xdd, 0x45, 0x87, 0xfb, 0xb8, 0x8d, 0x52, 0x50, 0x32, 0x16,
90996 + 0x90, 0xa2, 0x43, 0xbd, 0xca, 0x26, 0x42, 0x62, 0x01, 0x2b, 0x7d, 0x10,
90997 + 0x74, 0x66, 0x52, 0x61, 0xf1, 0xf6, 0x12, 0xc6, 0xb1, 0x06, 0x4b, 0xa6,
90998 + 0xeb, 0x5e, 0xb2, 0x45, 0xca, 0x88, 0x3d, 0x17, 0x91, 0x16, 0x2b, 0xd0,
90999 + 0xd9, 0x68, 0x08, 0x36, 0xc0, 0x97, 0xf1, 0x88, 0xcc, 0xa1, 0xce, 0x3c,
91000 + 0xde, 0x3d, 0x5e, 0xf1, 0x25, 0xc6, 0x75, 0x0d, 0xf0, 0x68, 0x8f, 0xfd,
91001 + 0xff, 0xdc, 0x7c, 0xac, 0xbe, 0xae, 0x8f, 0x89, 0x89, 0x65, 0x89, 0x4d,
91002 + 0x89, 0x29, 0xf9, 0x8e, 0x38, 0xf1, 0x20, 0x68, 0xa1, 0xce, 0xb6, 0x48,
91003 + 0x24, 0x6d, 0xc5, 0x87, 0xc5, 0xf7, 0xfd, 0x97, 0x21, 0x4b, 0x05, 0xb7,
91004 + 0xd1, 0xee, 0x90, 0x67, 0x20, 0x37, 0xe7, 0x57, 0x70, 0x4c, 0x02, 0x72,
91005 + 0x44, 0x3f, 0xea, 0xca, 0x39, 0xc7, 0x4e, 0x7c, 0x0e, 0xe9, 0xb7, 0x9d,
91006 + 0xdf, 0x22, 0xdf, 0x9e, 0x10, 0xe9, 0x43, 0x2c, 0x04, 0xbb, 0x3e, 0xe3,
91007 + 0x63, 0xfb, 0x16, 0xc6, 0x64, 0x5a, 0x96, 0xae, 0xa0, 0x4f, 0xcb, 0x34,
91008 + 0x00, 0x6a, 0xef, 0x42, 0x3d, 0x4f, 0x37, 0xfc, 0xb2, 0x83, 0xa8, 0x4b,
91009 + 0x1a, 0x18, 0x2f, 0x7f, 0x07, 0x3a, 0xeb, 0xba, 0xf7, 0x39, 0x8b, 0x75,
91010 + 0xb6, 0xe6, 0x39, 0xac, 0xbf, 0x92, 0xf3, 0xfe, 0x56, 0xe1, 0xfe, 0xaa,
91011 + 0xf4, 0xb5, 0xa9, 0x78, 0x8e, 0xcf, 0x90, 0xf7, 0x7e, 0x62, 0xa1, 0x84,
91012 + 0xc2, 0x9a, 0xc4, 0x0d, 0xe7, 0xc1, 0xfb, 0x4f, 0x2a, 0x4c, 0x43, 0xfc,
91013 + 0x06, 0xfa, 0x4b, 0xc4, 0x14, 0x1e, 0x96, 0xf6, 0x70, 0x1d, 0xb1, 0x45,
91014 + 0x0a, 0x6b, 0xe3, 0xe3, 0x0b, 0xb6, 0x65, 0x3d, 0xb6, 0xad, 0x5f, 0x3f,
91015 + 0xd6, 0xd9, 0x14, 0xc8, 0x1d, 0xa3, 0x3c, 0xd3, 0x3f, 0xb6, 0xca, 0xbe,
91016 + 0x54, 0x23, 0xf8, 0xde, 0xa6, 0xfd, 0xf8, 0xfb, 0x80, 0xd9, 0x80, 0xbd,
91017 + 0x4d, 0xcb, 0xa9, 0xd9, 0x9e, 0xf7, 0xa0, 0xec, 0x17, 0xe0, 0x3f, 0xcb,
91018 + 0xf6, 0x37, 0x78, 0x7e, 0xf2, 0x61, 0xe8, 0xf2, 0xdc, 0x26, 0x6f, 0xef,
91019 + 0x8a, 0xeb, 0xe0, 0xe3, 0x04, 0x1f, 0xf7, 0x99, 0x1a, 0xef, 0x73, 0x6d,
91020 + 0xbc, 0x7d, 0x2e, 0x43, 0xd5, 0x65, 0xac, 0x55, 0x1f, 0x5b, 0x52, 0x87,
91021 + 0x5d, 0xf7, 0x9c, 0xe3, 0xe3, 0xc8, 0xed, 0xf0, 0xa1, 0x21, 0xcd, 0xeb,
91022 + 0x66, 0xf0, 0x9a, 0x18, 0x25, 0x22, 0x89, 0x36, 0x62, 0x8a, 0x07, 0x1b,
91023 + 0x6a, 0x58, 0xe6, 0x6f, 0xdc, 0xa0, 0xcd, 0x78, 0x8f, 0x38, 0x86, 0xb4,
91024 + 0x6f, 0xd7, 0x78, 0x86, 0xd8, 0xe6, 0x31, 0x8c, 0x11, 0x94, 0x44, 0x3b,
91025 + 0xf3, 0x7f, 0xa9, 0xdb, 0xf0, 0xd9, 0x95, 0xee, 0xad, 0xf5, 0xf2, 0x3c,
91026 + 0x00, 0x3a, 0x39, 0x1f, 0x7f, 0xef, 0xb5, 0x43, 0xd9, 0x93, 0x9a, 0x5c,
91027 + 0xf8, 0x34, 0xf9, 0xe3, 0x92, 0xb6, 0xb8, 0xb4, 0x81, 0xb6, 0x7b, 0xe0,
91028 + 0x53, 0xb6, 0xb6, 0xb1, 0x4f, 0x7f, 0xec, 0x7a, 0x9a, 0xea, 0xf1, 0x55,
91029 + 0x02, 0x63, 0x34, 0xca, 0xd6, 0x76, 0xf2, 0xae, 0x43, 0xf9, 0x96, 0xda,
91030 + 0x7a, 0xd0, 0xf7, 0x73, 0xec, 0xb5, 0xe5, 0xef, 0xad, 0xa3, 0x6b, 0x2d,
91031 + 0xe6, 0xdb, 0x86, 0x77, 0xa4, 0xc9, 0x84, 0x5d, 0x72, 0x65, 0x87, 0xe3,
91032 + 0xe3, 0xbb, 0x7a, 0x3a, 0x88, 0xf1, 0x48, 0x33, 0x69, 0xf0, 0x31, 0x39,
91033 + 0x7f, 0x5c, 0x1b, 0xd2, 0x93, 0xd6, 0xe7, 0x44, 0xfb, 0xf5, 0xbc, 0x6e,
91034 + 0xd3, 0x75, 0x92, 0x68, 0xfb, 0xc7, 0x98, 0x03, 0x9f, 0x39, 0x0f, 0x1f,
91035 + 0x1b, 0x26, 0xbd, 0x7e, 0xa2, 0xeb, 0xc5, 0x00, 0xd4, 0x19, 0x9f, 0x4f,
91036 + 0x6d, 0x7a, 0x8d, 0xb6, 0xaf, 0x19, 0xd7, 0x72, 0x56, 0xdb, 0x91, 0xf7,
91037 + 0xd4, 0xcd, 0xaf, 0x4f, 0x0a, 0xf3, 0x94, 0x8b, 0x77, 0x21, 0xf5, 0x63,
91038 + 0xa3, 0x7e, 0xf8, 0x91, 0x0c, 0x62, 0x21, 0xc6, 0x48, 0xd7, 0xc4, 0x47,
91039 + 0x3c, 0x47, 0x1c, 0xcb, 0x23, 0x5e, 0x56, 0x7e, 0xc4, 0xf3, 0x91, 0xc8,
91040 + 0xc3, 0x9e, 0x54, 0xef, 0xa5, 0x8c, 0x8d, 0x8d, 0x57, 0x9c, 0xb1, 0xbd,
91041 + 0x95, 0xfe, 0x31, 0xc6, 0x11, 0x9e, 0xcc, 0xa1, 0x7e, 0x45, 0xc6, 0x0d,
91042 + 0xb4, 0xcb, 0xaa, 0x76, 0x6a, 0x1f, 0x68, 0x9d, 0x7e, 0x84, 0xfa, 0x38,
91043 + 0xee, 0x8d, 0x15, 0x19, 0xcb, 0xc1, 0x06, 0xcd, 0xcf, 0xc0, 0xc7, 0xd9,
91044 + 0x56, 0x86, 0x72, 0xb9, 0xc7, 0xb1, 0x86, 0x95, 0xec, 0xc5, 0xac, 0x51,
91045 + 0xae, 0x65, 0x79, 0xe6, 0x1d, 0xb0, 0xa1, 0xae, 0xdc, 0x0d, 0x5b, 0xf8,
91046 + 0x10, 0x64, 0x55, 0xce, 0xc0, 0x10, 0x9e, 0x81, 0xf1, 0x3a, 0x13, 0x13,
91047 + 0xe3, 0x78, 0x87, 0x84, 0x8f, 0xc4, 0x25, 0x74, 0x84, 0xb1, 0x58, 0xd2,
91048 + 0xbc, 0x5b, 0x04, 0x3e, 0xf1, 0xc5, 0xdb, 0x0d, 0xb1, 0x06, 0x32, 0x92,
91049 + 0x44, 0x3c, 0xd9, 0x6b, 0x96, 0x91, 0x16, 0x25, 0x99, 0x3a, 0x8d, 0xbe,
91050 + 0xc2, 0x67, 0x50, 0x17, 0xed, 0x9a, 0x16, 0x13, 0xf8, 0xb5, 0x4b, 0x74,
91051 + 0xd1, 0xd3, 0x95, 0xe8, 0xe2, 0xea, 0x3d, 0x94, 0xc1, 0x95, 0x3d, 0x14,
91052 + 0xbe, 0x7f, 0x43, 0xef, 0xfd, 0x3c, 0xab, 0xe3, 0x1a, 0xca, 0x08, 0x7d,
91053 + 0x9b, 0x8a, 0xcd, 0x60, 0xc7, 0x9f, 0x45, 0x2c, 0x6c, 0x4b, 0xae, 0x04,
91054 + 0xcc, 0x9e, 0x76, 0xe5, 0x29, 0xa7, 0xe0, 0x66, 0xfb, 0x5d, 0xb9, 0xec,
91055 + 0xd8, 0x85, 0xbc, 0x58, 0x6f, 0xd0, 0xde, 0xfd, 0x4f, 0xe7, 0xfd, 0xb2,
91056 + 0xab, 0xd5, 0xda, 0x95, 0x09, 0x14, 0xdc, 0x66, 0x3b, 0x2a, 0x37, 0xa5,
91057 + 0x0f, 0xca, 0x9e, 0x2d, 0x4b, 0x66, 0x50, 0x32, 0x37, 0x01, 0x17, 0xc6,
91058 + 0xf3, 0xca, 0x56, 0xbd, 0xa6, 0xe2, 0xeb, 0x07, 0xba, 0x0e, 0xca, 0xc6,
91059 + 0x2d, 0x96, 0x79, 0x35, 0x48, 0xcc, 0x76, 0x10, 0xb1, 0x80, 0x15, 0xcf,
91060 + 0x05, 0x6d, 0x73, 0xa7, 0x58, 0xc3, 0x9f, 0x16, 0x9e, 0xdb, 0xda, 0xd2,
91061 + 0x79, 0xc4, 0x8e, 0x7f, 0x22, 0xd0, 0xbd, 0xff, 0x13, 0x8c, 0xef, 0xce,
91062 + 0x30, 0xef, 0x4a, 0x64, 0x8b, 0x89, 0xe7, 0x98, 0x74, 0x1e, 0x4f, 0x48,
91063 + 0x12, 0x7c, 0xe9, 0x51, 0x3c, 0xe1, 0xf9, 0x51, 0x5c, 0xba, 0x8f, 0x10,
91064 + 0x43, 0x29, 0xde, 0xf4, 0x80, 0x37, 0x29, 0xf0, 0x06, 0x31, 0x55, 0xaf,
91065 + 0x79, 0x15, 0xe9, 0xb2, 0x24, 0x07, 0x7e, 0x00, 0xde, 0xf4, 0x80, 0x37,
91066 + 0xdd, 0x67, 0x12, 0x68, 0x8f, 0x3e, 0x16, 0x3b, 0x91, 0x46, 0xe5, 0x83,
91067 + 0x37, 0xb4, 0xe3, 0xd9, 0x96, 0xe4, 0x91, 0x08, 0xc6, 0x08, 0xc8, 0x8e,
91068 + 0xae, 0x82, 0x0c, 0x6d, 0x41, 0x6c, 0x16, 0x3b, 0x28, 0x17, 0xe1, 0x87,
91069 + 0x4a, 0x88, 0x11, 0x9e, 0x1a, 0xb0, 0x46, 0x97, 0x60, 0x4b, 0xab, 0xf7,
91070 + 0xb8, 0xf2, 0xf2, 0x96, 0xbf, 0x70, 0xe3, 0x37, 0x58, 0xbb, 0x24, 0xd0,
91071 + 0x2f, 0x93, 0x25, 0xe5, 0x1f, 0xe2, 0xd9, 0xa0, 0xc2, 0x65, 0x98, 0x63,
91072 + 0x01, 0x3e, 0x86, 0xe7, 0xd1, 0x36, 0x6c, 0xfd, 0xa7, 0xe5, 0xa1, 0xb9,
91073 + 0x09, 0xfc, 0x10, 0x6f, 0x4e, 0xb1, 0xee, 0x7e, 0xc4, 0x73, 0x0f, 0xcb,
91074 + 0xbe, 0x29, 0x60, 0xc7, 0x34, 0xe8, 0xee, 0xb7, 0x11, 0xcf, 0xcd, 0x37,
91075 + 0x4a, 0x0b, 0xca, 0xc0, 0xdb, 0xd1, 0xea, 0xda, 0x38, 0x6e, 0x09, 0xeb,
91076 + 0x30, 0x20, 0x7f, 0x56, 0xed, 0x97, 0xaf, 0x55, 0xfb, 0xe4, 0x4f, 0xe0,
91077 + 0x5b, 0xce, 0x57, 0x3b, 0xa0, 0x2b, 0x71, 0xac, 0x49, 0x1a, 0xeb, 0xe3,
91078 + 0xc8, 0x73, 0xd5, 0x94, 0x3c, 0x0b, 0x5e, 0x3d, 0x83, 0xdf, 0x50, 0x29,
91079 + 0x25, 0x3b, 0x4a, 0x7d, 0x7a, 0x8d, 0xb8, 0x3e, 0x36, 0xe8, 0xb1, 0x31,
91080 + 0x77, 0xeb, 0xc9, 0x02, 0xf4, 0x6f, 0xbe, 0x6a, 0xbf, 0x5e, 0x96, 0x8f,
91081 + 0x37, 0x72, 0x8f, 0xf7, 0xd4, 0x8a, 0x7f, 0x29, 0xb8, 0xa6, 0x6d, 0x1d,
91082 + 0x1e, 0xc7, 0x3a, 0x94, 0xa1, 0xa7, 0xa3, 0x8a, 0xf7, 0x35, 0xdf, 0x53,
91083 + 0xf6, 0x7c, 0x8f, 0x3f, 0xbf, 0x99, 0xbc, 0x7c, 0x5b, 0xb2, 0x47, 0x27,
91084 + 0x65, 0xcf, 0x31, 0x57, 0x3e, 0xec, 0xb8, 0x90, 0x63, 0xda, 0xe2, 0x7e,
91085 + 0xda, 0xf8, 0xc4, 0x78, 0xd0, 0x50, 0xb1, 0x94, 0x87, 0x5b, 0x7a, 0x37,
91086 + 0x43, 0x67, 0x53, 0x19, 0x63, 0x42, 0x92, 0x47, 0x27, 0xa4, 0xf3, 0x28,
91087 + 0x64, 0xc1, 0x61, 0x5f, 0x4b, 0xa6, 0x71, 0x8d, 0x3c, 0x70, 0x1c, 0x6b,
91088 + 0x20, 0x27, 0xb6, 0xf9, 0xba, 0xa4, 0x30, 0xfe, 0x01, 0xe9, 0x42, 0x1b,
91089 + 0x1b, 0x6d, 0xae, 0xaa, 0xb1, 0x9b, 0x31, 0x76, 0xa3, 0x1c, 0x8a, 0x59,
91090 + 0x90, 0x35, 0xfa, 0xf0, 0xff, 0x25, 0xd9, 0x32, 0xd3, 0x9f, 0x4a, 0xf6,
91091 + 0xd4, 0x47, 0x23, 0x12, 0xe5, 0x33, 0x4c, 0xc3, 0x09, 0x96, 0x77, 0x22,
91092 + 0x65, 0xb9, 0x8d, 0x38, 0xfa, 0xe7, 0x92, 0x3d, 0xcb, 0xb1, 0x5f, 0x47,
91093 + 0xf9, 0xcb, 0x92, 0x9d, 0xfe, 0x05, 0xf2, 0x17, 0x91, 0xbe, 0x81, 0x74,
91094 + 0x54, 0x3a, 0xa7, 0x25, 0x90, 0x3d, 0xfb, 0x2d, 0xe4, 0x43, 0x48, 0x0f,
91095 + 0xa1, 0xde, 0x76, 0xd0, 0xf7, 0xa7, 0xe8, 0x2f, 0x03, 0x9b, 0xf7, 0x3b,
91096 + 0x9a, 0x7e, 0x96, 0xb3, 0x8c, 0xef, 0x0e, 0xc1, 0xa6, 0xfd, 0x67, 0xd8,
91097 + 0x34, 0xfd, 0x3c, 0xcf, 0x3c, 0x6d, 0x1b, 0x9f, 0x27, 0xc0, 0x93, 0x03,
91098 + 0xc8, 0xbb, 0xf2, 0xb0, 0x43, 0x7f, 0xb3, 0x4d, 0xc6, 0xcc, 0x82, 0x1b,
91099 + 0x05, 0xae, 0x68, 0x86, 0x1e, 0x4c, 0x6c, 0x5d, 0x5f, 0x0f, 0x0e, 0x77,
91100 + 0x1f, 0x94, 0xa6, 0x2d, 0xfe, 0xfc, 0xfd, 0xf9, 0xda, 0xe6, 0x4f, 0x14,
91101 + 0x1f, 0xac, 0xc2, 0x27, 0x84, 0xf3, 0xb0, 0xe3, 0x5f, 0x30, 0xba, 0x77,
91102 + 0x3d, 0x04, 0x3d, 0x30, 0xce, 0x32, 0xef, 0xe9, 0x81, 0x71, 0x16, 0xb6,
91103 + 0xe1, 0x04, 0x62, 0xc4, 0x13, 0x1d, 0xd2, 0x38, 0x5d, 0xd3, 0x83, 0x86,
91104 + 0xe9, 0x5f, 0xad, 0x07, 0x8d, 0x67, 0x51, 0xef, 0x2c, 0x79, 0x86, 0x3e,
91105 + 0x4e, 0x91, 0x67, 0xed, 0x48, 0x3f, 0x8d, 0xb9, 0x92, 0xf6, 0x46, 0xd0,
91106 + 0xee, 0xe1, 0xa2, 0xdb, 0x21, 0xef, 0x0f, 0x6c, 0x39, 0xa0, 0xcb, 0xff,
91107 + 0xd2, 0x1d, 0x8e, 0x59, 0x73, 0x12, 0x20, 0x4f, 0x51, 0xb7, 0x4c, 0x1e,
91108 + 0xde, 0xdc, 0x24, 0xd1, 0xfd, 0xd2, 0x49, 0xfe, 0x95, 0x77, 0x22, 0x5f,
91109 + 0x70, 0xc3, 0x76, 0xb3, 0xe6, 0x27, 0x70, 0x52, 0x3f, 0xcb, 0x5f, 0x85,
91110 + 0xcc, 0x10, 0xaf, 0xbe, 0x26, 0x7b, 0xa6, 0x5c, 0x19, 0x73, 0x38, 0xff,
91111 + 0xef, 0x63, 0xfe, 0x99, 0x2d, 0x31, 0x59, 0x4a, 0xc4, 0xc0, 0x93, 0x79,
91112 + 0xd8, 0xf6, 0x8b, 0xe2, 0xf1, 0x81, 0xe7, 0x02, 0x3b, 0xc4, 0x8e, 0x0f,
91113 + 0x89, 0x9d, 0xfa, 0x01, 0xf8, 0x30, 0x04, 0xd9, 0xcf, 0x55, 0x29, 0x3b,
91114 + 0xaf, 0xc8, 0x20, 0x64, 0xe2, 0x7b, 0x8e, 0x95, 0x02, 0x16, 0x82, 0xbd,
91115 + 0xa0, 0x5c, 0x50, 0x26, 0x5a, 0x94, 0x4d, 0x3a, 0xe1, 0x58, 0x4f, 0x94,
91116 + 0xe5, 0x56, 0x39, 0xd1, 0x46, 0xda, 0xf1, 0x6e, 0x5a, 0xf9, 0x8b, 0xd4,
91117 + 0xb8, 0xd1, 0x05, 0x1b, 0x9d, 0x12, 0xb3, 0xbb, 0xd8, 0xe8, 0xdf, 0x21,
91118 + 0xc9, 0x1f, 0x0d, 0xc8, 0x44, 0x37, 0xd7, 0x8a, 0xfd, 0x22, 0x5f, 0x2e,
91119 + 0xb8, 0x21, 0xfb, 0x75, 0xf7, 0x64, 0x7b, 0x42, 0x3e, 0xd9, 0xbd, 0x22,
91120 + 0x97, 0x73, 0x22, 0x9e, 0x5e, 0x0c, 0xaa, 0xf5, 0xf0, 0xe9, 0xf6, 0xe7,
91121 + 0xe2, 0xbf, 0xeb, 0xab, 0x7b, 0xc7, 0xb9, 0x50, 0xd6, 0x57, 0x74, 0x27,
91122 + 0x71, 0x2d, 0xad, 0xaf, 0x41, 0x9e, 0xac, 0x27, 0x8a, 0x72, 0x19, 0xb2,
91123 + 0x07, 0x1e, 0x9e, 0x65, 0x4a, 0x1e, 0x4e, 0x40, 0xee, 0x5f, 0x95, 0x1d,
91124 + 0x47, 0xa9, 0x33, 0xaf, 0x62, 0xae, 0xca, 0x96, 0xc0, 0x46, 0xb0, 0x3f,
91125 + 0x57, 0x26, 0x9d, 0xae, 0xd4, 0x29, 0xb9, 0x35, 0xbe, 0x17, 0x31, 0xe7,
91126 + 0xb8, 0xe9, 0xca, 0xa2, 0x53, 0x90, 0xc5, 0x01, 0xb4, 0x29, 0x7f, 0x1a,
91127 + 0xbf, 0x4f, 0xe9, 0xb9, 0x3d, 0x0a, 0xbe, 0x5b, 0x89, 0x39, 0xe3, 0xf7,
91128 + 0xc1, 0xf7, 0x87, 0x25, 0x39, 0xbd, 0x62, 0x6b, 0x20, 0x77, 0x9e, 0xad,
91129 + 0x49, 0x9e, 0x35, 0xa5, 0x5c, 0xb2, 0xe5, 0x23, 0xb4, 0x21, 0x25, 0xce,
91130 + 0x0b, 0x36, 0x86, 0x67, 0xec, 0x25, 0xd8, 0x99, 0x12, 0x6c, 0x0a, 0x6c,
91131 + 0xc8, 0x9f, 0xa0, 0xfc, 0x59, 0xd4, 0x79, 0x06, 0xf1, 0xd3, 0x79, 0x60,
91132 + 0xbf, 0x73, 0xc0, 0x14, 0x4f, 0x97, 0x32, 0x3a, 0x96, 0x55, 0xf3, 0x85,
91133 + 0xcf, 0x52, 0xb1, 0x8f, 0x94, 0xe7, 0xd4, 0x7d, 0x1e, 0xb5, 0xb6, 0x59,
91134 + 0x67, 0x13, 0x71, 0x16, 0x28, 0x13, 0x99, 0x9b, 0xf3, 0x79, 0x42, 0xdb,
91135 + 0xc7, 0xf3, 0x19, 0xdf, 0x56, 0x36, 0xaf, 0xb1, 0x95, 0x22, 0x2f, 0x56,
91136 + 0x3c, 0x3c, 0x49, 0x7c, 0x5c, 0x9c, 0x4a, 0xac, 0x9c, 0x63, 0x16, 0xe1,
91137 + 0x37, 0x97, 0x11, 0x67, 0x44, 0xd2, 0xdf, 0x94, 0xc8, 0x71, 0xd7, 0xfd,
91138 + 0x21, 0xfc, 0x66, 0x01, 0x6b, 0x62, 0x04, 0x50, 0xbe, 0xc0, 0x77, 0x94,
91139 + 0x7b, 0xca, 0x76, 0x80, 0xe7, 0x19, 0xf2, 0x12, 0xca, 0xca, 0x2a, 0xfe,
91140 + 0xfa, 0x16, 0xe8, 0xd1, 0xf4, 0xa9, 0x32, 0xd6, 0x6b, 0x94, 0xdc, 0x58,
91141 + 0x0a, 0x31, 0x4e, 0xaf, 0xd9, 0x88, 0xf6, 0x73, 0x0b, 0x6c, 0x63, 0x0d,
91142 + 0xf0, 0x3a, 0xd5, 0x4b, 0x0b, 0x2c, 0xef, 0x90, 0x8b, 0x88, 0x45, 0x49,
91143 + 0x43, 0x79, 0x36, 0x2d, 0xde, 0xde, 0x31, 0xed, 0x15, 0x69, 0x45, 0x1e,
91144 + 0xfc, 0xca, 0x96, 0xe8, 0x67, 0x43, 0x52, 0x88, 0x93, 0xd7, 0x71, 0x59,
91145 + 0x9e, 0xfa, 0x4c, 0x13, 0xf7, 0x66, 0xb3, 0x36, 0x9f, 0xfd, 0xbd, 0x0e,
91146 + 0xf3, 0x2d, 0xec, 0x75, 0x70, 0x7f, 0x23, 0x04, 0x5f, 0xa6, 0xf6, 0x3c,
91147 + 0x90, 0x26, 0xea, 0xe2, 0x5f, 0xbe, 0xf7, 0xb0, 0x51, 0x0d, 0x3f, 0x12,
91148 + 0x4f, 0x72, 0xbe, 0x56, 0x61, 0x09, 0xf6, 0xa3, 0x2d, 0x7d, 0x49, 0xee,
91149 + 0x3d, 0xe1, 0xcd, 0xcf, 0x38, 0x25, 0xbc, 0x4b, 0x23, 0x57, 0x67, 0x2d,
91150 + 0xe7, 0x0a, 0x30, 0x45, 0x2e, 0xe6, 0x60, 0xbd, 0x46, 0x9b, 0x60, 0xbf,
91151 + 0x06, 0x32, 0xc6, 0x99, 0x26, 0x0f, 0x9f, 0x85, 0x64, 0x62, 0x8a, 0xe7,
91152 + 0x9e, 0xb0, 0x6d, 0xc0, 0x90, 0xbf, 0x1b, 0xc2, 0x73, 0x85, 0x79, 0xc4,
91153 + 0xa4, 0x5e, 0x3c, 0x8b, 0x67, 0xaf, 0x3f, 0xf2, 0xdc, 0x38, 0xc1, 0xb9,
91154 + 0x07, 0xe4, 0x5e, 0xa0, 0x13, 0x41, 0xff, 0x9d, 0x7a, 0xac, 0xce, 0x53,
91155 + 0x29, 0xee, 0x65, 0x4b, 0x12, 0xf6, 0x22, 0x8b, 0x58, 0x32, 0x17, 0xeb,
91156 + 0xd0, 0xd8, 0x9c, 0xef, 0xd6, 0x62, 0x4f, 0x3f, 0xc6, 0x4b, 0xc9, 0xe7,
91157 + 0x4b, 0x3e, 0xd6, 0x4b, 0xc1, 0xc7, 0x4a, 0x68, 0xb8, 0xc7, 0x95, 0x1f,
91158 + 0x3a, 0xe4, 0x57, 0x1f, 0xf2, 0x8e, 0x1c, 0xae, 0xfe, 0xb2, 0xf3, 0xcd,
91159 + 0xfa, 0xbf, 0x66, 0xd0, 0xc8, 0x1f, 0xe8, 0x03, 0x3e, 0x22, 0xed, 0x06,
91160 + 0xfc, 0x79, 0x11, 0xb8, 0xcb, 0x38, 0xd3, 0xa1, 0xde, 0x19, 0xc0, 0x06,
91161 + 0xe5, 0x29, 0xd8, 0xc6, 0x33, 0x3c, 0xf3, 0x85, 0x6d, 0x3b, 0x13, 0x96,
91162 + 0xe2, 0x0c, 0xe5, 0x52, 0xda, 0x0c, 0xac, 0x17, 0xeb, 0x97, 0xa7, 0x3a,
91163 + 0x90, 0x36, 0x23, 0x4d, 0xa8, 0x7e, 0xca, 0x53, 0xb6, 0x6a, 0x5f, 0x9e,
91164 + 0x4a, 0xa9, 0x76, 0xe5, 0xa9, 0x3e, 0xa4, 0x8e, 0x34, 0x9c, 0x41, 0xe0,
91165 + 0x74, 0xa6, 0x5b, 0x26, 0x4e, 0xc2, 0xbf, 0xf4, 0x1b, 0xea, 0xbe, 0xc4,
91166 + 0x38, 0xfc, 0x4f, 0x08, 0x51, 0xd6, 0x15, 0x73, 0x00, 0x18, 0x6b, 0x1b,
91167 + 0x30, 0xc8, 0x36, 0xb1, 0x8f, 0x73, 0xfe, 0xb4, 0xbd, 0xcb, 0xdc, 0xff,
91168 + 0x8a, 0x3f, 0x28, 0x19, 0xd9, 0x37, 0xd3, 0x08, 0x7d, 0x0d, 0x99, 0x45,
91169 + 0xe9, 0x32, 0x87, 0x90, 0xcf, 0xcf, 0x91, 0x6f, 0xf7, 0xab, 0xd8, 0x2d,
91170 + 0xeb, 0xc4, 0xa2, 0x12, 0x4d, 0x63, 0x8c, 0xb7, 0xd2, 0xbe, 0x07, 0xf2,
91171 + 0x67, 0xeb, 0x3e, 0xd2, 0xa0, 0xa7, 0x9e, 0x1f, 0x3c, 0xeb, 0xcd, 0xfc,
91172 + 0x8a, 0xb3, 0x5e, 0xca, 0x35, 0xf9, 0x7b, 0xbf, 0x2c, 0xdb, 0x69, 0x79,
91173 + 0xc9, 0x4e, 0xc9, 0x45, 0x7b, 0xab, 0xfc, 0x39, 0xfc, 0xf4, 0x25, 0x7b,
91174 + 0xba, 0x89, 0x58, 0xa0, 0xac, 0xce, 0xcf, 0xfc, 0xb5, 0xb2, 0xf5, 0x3e,
91175 + 0xfa, 0x8f, 0x64, 0x71, 0x8a, 0xd8, 0xd9, 0xdd, 0xbe, 0xc7, 0x29, 0xd0,
91176 + 0x6f, 0x81, 0x06, 0x62, 0xb5, 0x02, 0xfc, 0xdf, 0x41, 0x19, 0x72, 0xe8,
91177 + 0xf7, 0x94, 0x8f, 0x8a, 0x0f, 0x79, 0xfa, 0xec, 0xe4, 0x61, 0x57, 0x97,
91178 + 0x67, 0xa0, 0x4f, 0x42, 0xf9, 0xc7, 0xf3, 0x1c, 0xd7, 0xdd, 0x96, 0x2f,
91179 + 0x94, 0x38, 0xcf, 0xe2, 0xe6, 0xa8, 0x04, 0x65, 0x58, 0xe1, 0x85, 0x16,
91180 + 0x79, 0x71, 0x61, 0x83, 0x18, 0xf0, 0x50, 0xc6, 0x2d, 0x61, 0x75, 0xd3,
91181 + 0x84, 0xf1, 0xb7, 0xb4, 0xf2, 0xbe, 0xd8, 0x87, 0xc1, 0x1b, 0xee, 0x05,
91182 + 0x60, 0x6e, 0xad, 0x9c, 0x89, 0x9f, 0xef, 0x83, 0x7e, 0xf1, 0x39, 0x20,
91183 + 0x39, 0x3b, 0x86, 0x67, 0xa6, 0xd4, 0x39, 0xee, 0x93, 0x05, 0xc5, 0xc3,
91184 + 0xdc, 0xe3, 0xea, 0x7d, 0xa3, 0x7d, 0x07, 0x70, 0x1d, 0xe5, 0x15, 0xe9,
91185 + 0xa2, 0x37, 0x6e, 0x0e, 0x38, 0x2e, 0xdf, 0xd7, 0xa4, 0xce, 0xff, 0x0a,
91186 + 0xd0, 0x85, 0x71, 0x55, 0xbf, 0x5f, 0x2e, 0x4d, 0xed, 0x8f, 0x7a, 0xfa,
91187 + 0x31, 0xa0, 0x9f, 0xf9, 0x9e, 0xf1, 0x15, 0xf7, 0x4b, 0x5e, 0x19, 0x99,
91188 + 0xb4, 0xbf, 0xa1, 0xf5, 0x47, 0x02, 0x77, 0xf7, 0x00, 0x87, 0x1e, 0x69,
91189 + 0xc0, 0x5c, 0xac, 0x44, 0x22, 0x60, 0xb4, 0x1b, 0xc0, 0xf1, 0x43, 0xca,
91190 + 0xe7, 0xf6, 0xa8, 0xfd, 0xe8, 0x53, 0xa9, 0x16, 0x29, 0x9b, 0xb6, 0xba,
91191 + 0x17, 0xb7, 0x64, 0x6e, 0x21, 0xd6, 0xc7, 0xaf, 0x09, 0x65, 0x5d, 0x48,
91192 + 0x1b, 0x91, 0xbe, 0x4b, 0x8a, 0xc7, 0xa6, 0xf5, 0x78, 0xe1, 0x35, 0xf9,
91193 + 0x3e, 0x9d, 0x7e, 0x44, 0xc7, 0x53, 0x1c, 0x27, 0x2c, 0xf6, 0x17, 0x9b,
91194 + 0xa5, 0xeb, 0x88, 0x09, 0x6c, 0x1b, 0x07, 0xd6, 0xed, 0x90, 0xd4, 0x91,
91195 + 0x84, 0xdc, 0x72, 0xc4, 0xdf, 0x73, 0xfa, 0x0f, 0x23, 0x49, 0xb5, 0xc7,
91196 + 0xf9, 0xdd, 0x11, 0x7b, 0x8e, 0xe9, 0x6b, 0xfa, 0xfe, 0xde, 0x15, 0x7d,
91197 + 0xaf, 0xef, 0x47, 0x23, 0x3d, 0x2a, 0xfd, 0x6f, 0x23, 0x29, 0x95, 0xbe,
91198 + 0x3e, 0x72, 0x4b, 0xc5, 0x8b, 0x8f, 0x8a, 0xf3, 0x29, 0xf9, 0x5c, 0x89,
91199 + 0xf8, 0xb2, 0x1f, 0xd8, 0xd1, 0x81, 0x9d, 0xe9, 0x83, 0x9d, 0x49, 0xc1,
91200 + 0xce, 0x0c, 0xd0, 0xce, 0xc0, 0x6e, 0xbf, 0x02, 0xbb, 0xed, 0xc8, 0xf7,
91201 + 0x20, 0xaf, 0x4f, 0x3b, 0x8d, 0xc0, 0x85, 0xae, 0xeb, 0xcd, 0xd5, 0x7a,
91202 + 0x62, 0x09, 0xeb, 0x5b, 0x3e, 0x2d, 0x91, 0x56, 0xd8, 0xa0, 0x2d, 0x27,
91203 + 0x1a, 0x64, 0x3e, 0xe6, 0xba, 0x47, 0x1d, 0x5b, 0xae, 0xa2, 0x7e, 0xd6,
91204 + 0xa6, 0x1e, 0xbf, 0x14, 0x65, 0x3c, 0x76, 0x75, 0x6a, 0x2b, 0x6c, 0x12,
91205 + 0xe5, 0x3d, 0x22, 0xe5, 0xb1, 0xb8, 0x2c, 0x20, 0x3e, 0xab, 0xd5, 0x49,
91206 + 0xe1, 0x99, 0xfa, 0xff, 0x5d, 0xd4, 0x4d, 0xc1, 0x3f, 0x98, 0xb2, 0xd8,
91207 + 0x93, 0x90, 0x53, 0x3d, 0xd6, 0x40, 0xc2, 0xa0, 0xed, 0x4a, 0xc8, 0x1c,
91208 + 0x62, 0xfd, 0x72, 0x89, 0xf5, 0x59, 0x0f, 0xfa, 0x59, 0xf2, 0xda, 0x4d,
91209 + 0x96, 0x7c, 0x3b, 0xd1, 0xcf, 0x7d, 0xc8, 0x50, 0xae, 0xc7, 0xf3, 0x01,
91210 + 0x86, 0xd1, 0x08, 0x39, 0x70, 0xc0, 0xff, 0x31, 0x94, 0xf7, 0xf3, 0xbe,
91211 + 0x07, 0xca, 0x88, 0x85, 0x7e, 0x1c, 0x25, 0x46, 0xcc, 0x39, 0x63, 0x28,
91212 + 0x63, 0x1b, 0x2b, 0x9e, 0x44, 0xf9, 0xa8, 0x24, 0xe3, 0x79, 0x75, 0xf7,
91213 + 0xac, 0x1d, 0x65, 0xec, 0x23, 0xa8, 0xf7, 0x63, 0xfe, 0x8f, 0x92, 0xa3,
91214 + 0xa0, 0xed, 0x97, 0xf7, 0xaa, 0xbd, 0x81, 0x8c, 0xe9, 0x40, 0x1f, 0x58,
91215 + 0x96, 0x34, 0xd9, 0x2e, 0xe7, 0x38, 0xca, 0x16, 0xde, 0x57, 0xe1, 0x19,
91216 + 0x5e, 0x44, 0xee, 0xad, 0x34, 0x4b, 0xae, 0xd2, 0x70, 0x1d, 0xfb, 0xef,
91217 + 0xeb, 0xe4, 0x72, 0xdc, 0x14, 0xde, 0x83, 0xf0, 0xf4, 0x3c, 0xb4, 0x95,
91218 + 0x3a, 0x31, 0xc0, 0x73, 0x03, 0xf8, 0x5b, 0xac, 0x05, 0xfc, 0xef, 0x39,
91219 + 0xf8, 0xdf, 0xa7, 0x4b, 0x35, 0xfb, 0xe1, 0xf9, 0x5d, 0xda, 0x80, 0x27,
91220 + 0xb1, 0x66, 0xa3, 0xc0, 0xfd, 0x3b, 0x11, 0x0f, 0x0c, 0x03, 0xfb, 0x0f,
91221 + 0x62, 0xfd, 0xd2, 0x58, 0xbb, 0x31, 0xde, 0x17, 0xc2, 0x3a, 0x0e, 0xa8,
91222 + 0x73, 0xe6, 0x19, 0x75, 0xe7, 0xe2, 0x47, 0xca, 0xf7, 0x3e, 0x5e, 0x32,
91223 + 0xe0, 0x1f, 0x0a, 0xee, 0x66, 0xdb, 0x02, 0xfe, 0x5b, 0xd1, 0xe7, 0x81,
91224 + 0x17, 0x61, 0x57, 0x7e, 0x06, 0xba, 0xce, 0xcf, 0xd0, 0x9f, 0xa3, 0x8e,
91225 + 0x87, 0xb7, 0x1d, 0xee, 0x75, 0x41, 0x9f, 0x0f, 0x2f, 0xcb, 0x12, 0x70,
91226 + 0x47, 0x86, 0x72, 0x8c, 0xf8, 0xc1, 0x7a, 0x7a, 0x4e, 0xba, 0x69, 0x03,
91227 + 0xe7, 0xa8, 0x2b, 0xfd, 0xd3, 0x71, 0x60, 0x3d, 0x20, 0x79, 0x75, 0xae,
91228 + 0x8a, 0xe7, 0xb3, 0x1b, 0xc5, 0x20, 0xde, 0x73, 0x6e, 0x40, 0x19, 0xed,
91229 + 0x86, 0x8f, 0x91, 0x96, 0x06, 0xda, 0x24, 0xb3, 0xa5, 0x4d, 0xd9, 0x0e,
91230 + 0xcb, 0x79, 0x09, 0xe3, 0xee, 0x90, 0x46, 0x60, 0xb8, 0x02, 0xc6, 0x38,
91231 + 0x20, 0xff, 0xd5, 0xe1, 0x1e, 0x95, 0x17, 0xfb, 0x81, 0x96, 0x08, 0x78,
91232 + 0xd6, 0xb4, 0xc7, 0x36, 0x23, 0x3b, 0xaa, 0xec, 0x3f, 0xa2, 0x30, 0x56,
91233 + 0x4e, 0xd8, 0x3f, 0xfc, 0x04, 0xc6, 0x4c, 0x4e, 0x53, 0xf6, 0x7b, 0xb1,
91234 + 0x6e, 0xbf, 0x0d, 0x0c, 0x44, 0xae, 0x7e, 0x75, 0x83, 0xa7, 0x2f, 0xa4,
91235 + 0x7f, 0x89, 0x78, 0x82, 0x67, 0x00, 0x5e, 0x5c, 0xbe, 0x42, 0x5b, 0x3f,
91236 + 0xe8, 0x9d, 0xdd, 0xe0, 0x9f, 0x25, 0x77, 0x4e, 0x7b, 0xfe, 0xba, 0xf3,
91237 + 0x2c, 0x5a, 0x1d, 0x95, 0x76, 0x9e, 0x4a, 0x1b, 0x72, 0x8b, 0xdc, 0x19,
91238 + 0xf2, 0xfa, 0x31, 0x4e, 0x98, 0x90, 0x55, 0xda, 0x81, 0x76, 0xc8, 0x39,
91239 + 0xf3, 0xb4, 0x29, 0xb4, 0x09, 0x94, 0x05, 0x5b, 0x8a, 0x55, 0xd8, 0x84,
91240 + 0x96, 0x0e, 0x99, 0x23, 0xcf, 0x4e, 0xd0, 0x4e, 0xfc, 0x48, 0x26, 0xd7,
91241 + 0xd8, 0xca, 0x41, 0xf1, 0xe3, 0xda, 0x66, 0x09, 0xa7, 0x6d, 0xf3, 0x3e,
91242 + 0x35, 0x47, 0xcf, 0x5e, 0xee, 0x23, 0xfe, 0x9c, 0xc9, 0x58, 0x6d, 0xa2,
91243 + 0xb1, 0xa7, 0xc2, 0x4f, 0xdf, 0xc7, 0x5c, 0xd9, 0x87, 0xe2, 0xd3, 0xc0,
91244 + 0xa0, 0x17, 0x0b, 0xa8, 0x3d, 0x3f, 0xe0, 0xe0, 0xf8, 0xcf, 0x60, 0x6b,
91245 + 0x73, 0xc4, 0x25, 0xe0, 0x73, 0xe7, 0x51, 0xca, 0xd1, 0x66, 0xda, 0x32,
91246 + 0xe0, 0xbc, 0x14, 0xed, 0xb5, 0x2c, 0x4c, 0x03, 0x73, 0x19, 0x77, 0x48,
91247 + 0x9e, 0xf2, 0xca, 0xbb, 0x0a, 0x0b, 0x86, 0x4c, 0xce, 0xb6, 0x48, 0xd7,
91248 + 0x09, 0xee, 0xaf, 0x9e, 0x8a, 0x4a, 0x0b, 0xf7, 0x58, 0xe9, 0x83, 0xfa,
91249 + 0x25, 0x87, 0xf2, 0xce, 0x13, 0x41, 0xb5, 0x1f, 0x36, 0x67, 0x90, 0x47,
91250 + 0x7d, 0xb0, 0x07, 0x56, 0x6a, 0xc9, 0xd8, 0xd6, 0xe4, 0x61, 0x48, 0xc8,
91251 + 0x52, 0x09, 0x32, 0x56, 0x82, 0x8c, 0x95, 0x20, 0x63, 0x25, 0xc8, 0x18,
91252 + 0xb0, 0xdf, 0x79, 0xe8, 0xdf, 0xb9, 0xd2, 0x80, 0xf6, 0xeb, 0xbb, 0x94,
91253 + 0x5f, 0x3f, 0x54, 0x7a, 0xc5, 0x65, 0xfa, 0xac, 0x8a, 0x4d, 0xfb, 0x20,
91254 + 0x83, 0x8c, 0x45, 0xfd, 0x18, 0xf5, 0x15, 0x79, 0x72, 0xe6, 0x55, 0x39,
91255 + 0x35, 0x53, 0xc3, 0x81, 0x13, 0x25, 0x57, 0x5e, 0x72, 0x10, 0x7f, 0xce,
91256 + 0x13, 0x53, 0x65, 0x5a, 0x1b, 0x15, 0xb6, 0x3a, 0x28, 0x79, 0x85, 0x93,
91257 + 0x95, 0x1f, 0x01, 0xbe, 0x52, 0xb8, 0x90, 0xba, 0x29, 0x6d, 0x5b, 0x2e,
91258 + 0xcb, 0x39, 0xf8, 0xf1, 0x85, 0xea, 0x6b, 0xf2, 0x8c, 0xc2, 0xe3, 0xe4,
91259 + 0xc3, 0x3b, 0xe5, 0xa7, 0xa6, 0x77, 0x9e, 0x7f, 0x0a, 0x58, 0x63, 0xa1,
91260 + 0x87, 0xb6, 0x23, 0x04, 0x5f, 0x60, 0x15, 0x3a, 0xa1, 0xd7, 0xfb, 0x8d,
91261 + 0x1b, 0x81, 0x69, 0xf8, 0x7e, 0xa3, 0xbc, 0x38, 0x53, 0xa8, 0x93, 0x09,
91262 + 0xda, 0x07, 0xeb, 0xb0, 0x18, 0xf4, 0x53, 0xf4, 0x9b, 0x9c, 0x2f, 0xfd,
91263 + 0xd4, 0x4f, 0x37, 0xf0, 0x0e, 0x57, 0xf9, 0x58, 0x6c, 0x03, 0xf7, 0x1b,
91264 + 0x63, 0x36, 0x79, 0x7a, 0x59, 0xf6, 0x57, 0x58, 0xf6, 0x2a, 0xd6, 0x87,
91265 + 0xe9, 0x0f, 0xdc, 0x7b, 0x63, 0x1c, 0x8f, 0xfd, 0x02, 0x37, 0xb5, 0x63,
91266 + 0xae, 0xa5, 0x8f, 0x68, 0xcc, 0xdd, 0xa7, 0x70, 0xf4, 0xb5, 0x78, 0x99,
91267 + 0x7c, 0x72, 0xc0, 0xa7, 0xcb, 0x6a, 0x3f, 0x70, 0x9d, 0x7d, 0xe2, 0x27,
91268 + 0xa0, 0x57, 0x85, 0x2b, 0xc2, 0x3d, 0x4b, 0xee, 0xe7, 0x72, 0xaf, 0xb8,
91269 + 0xde, 0x62, 0xa8, 0x7b, 0x03, 0x72, 0x0f, 0xec, 0xcb, 0xbd, 0xb0, 0x2f,
91270 + 0xf7, 0x5d, 0x73, 0x07, 0xda, 0x3f, 0x03, 0xe8, 0x2a, 0x04, 0x8d, 0x0e,
91271 + 0x19, 0xad, 0xd4, 0xb7, 0xe5, 0x3e, 0xee, 0x7a, 0xfb, 0xb6, 0xdc, 0xd3,
91272 + 0x4d, 0xad, 0xd9, 0x0b, 0xa4, 0x6c, 0xb8, 0x72, 0xc9, 0xe1, 0xbe, 0x9b,
91273 + 0x7f, 0x6f, 0x7e, 0x3d, 0xfc, 0x15, 0x68, 0xf6, 0xf7, 0x9c, 0x43, 0xe9,
91274 + 0x2b, 0xc2, 0xfb, 0xf3, 0xc5, 0x29, 0xe2, 0x81, 0x98, 0xba, 0x17, 0x63,
91275 + 0xa8, 0x7d, 0x3e, 0xaf, 0x6d, 0x71, 0x4a, 0x9d, 0x31, 0x15, 0xb8, 0x77,
91276 + 0x6d, 0x6e, 0xb5, 0xcc, 0xd1, 0xa0, 0x77, 0x1f, 0x93, 0xba, 0xec, 0xd9,
91277 + 0x32, 0xc8, 0x62, 0xb5, 0x76, 0xcf, 0x71, 0x50, 0xd9, 0x8b, 0x2b, 0xd0,
91278 + 0x01, 0xae, 0x17, 0xe2, 0x05, 0xe8, 0xc9, 0x04, 0xec, 0x53, 0x5e, 0xf5,
91279 + 0x17, 0xa1, 0x5c, 0x64, 0xb2, 0x41, 0x43, 0xc2, 0xc7, 0x19, 0x0b, 0x79,
91280 + 0x7b, 0x2d, 0xb9, 0xa0, 0xa5, 0xec, 0x37, 0x68, 0x07, 0x3e, 0xa3, 0x7e,
91281 + 0x26, 0xc6, 0x1b, 0xd3, 0x0d, 0xf0, 0xab, 0x58, 0xbf, 0x2a, 0xf7, 0x04,
91282 + 0xa0, 0xbb, 0x8b, 0xdf, 0x91, 0x7d, 0xb3, 0xdd, 0xcd, 0x9e, 0xfc, 0x73,
91283 + 0x1f, 0x99, 0xf3, 0xf3, 0x69, 0x58, 0xdd, 0xb7, 0x71, 0x5c, 0x22, 0x51,
91284 + 0xf8, 0xb4, 0x0f, 0x20, 0xce, 0xd8, 0x01, 0x59, 0x59, 0x8a, 0xb1, 0x5f,
91285 + 0x4f, 0x67, 0x26, 0x4b, 0xec, 0xfb, 0x3b, 0x32, 0x34, 0x5b, 0x6a, 0xa6,
91286 + 0x2f, 0x59, 0x84, 0x1d, 0x58, 0x36, 0xe9, 0x43, 0xc7, 0xe0, 0xe3, 0xda,
91287 + 0xe5, 0xfb, 0xb3, 0xf4, 0x8f, 0x49, 0xf3, 0x94, 0xf4, 0xc6, 0x4f, 0x81,
91288 + 0xa6, 0xcf, 0x3b, 0x21, 0xc6, 0x68, 0xee, 0x20, 0xca, 0xfe, 0x5c, 0x92,
91289 + 0x66, 0x67, 0x80, 0xcf, 0xbd, 0xe6, 0x17, 0x80, 0x61, 0x33, 0x66, 0xd2,
91290 + 0xbc, 0x35, 0x40, 0x39, 0x42, 0xcc, 0xbd, 0x58, 0xa3, 0xf3, 0x07, 0xb3,
91291 + 0x2a, 0x4e, 0x52, 0x76, 0x66, 0xd1, 0xe1, 0x78, 0xa0, 0x5b, 0xd9, 0xac,
91292 + 0x5b, 0x61, 0x4f, 0x22, 0xfa, 0xfc, 0x0d, 0x6d, 0x88, 0x6d, 0x9c, 0x90,
91293 + 0xce, 0x3f, 0x2a, 0xd9, 0x93, 0x31, 0xd8, 0x33, 0xf6, 0xe5, 0xc7, 0x0e,
91294 + 0xf4, 0x91, 0x3e, 0xde, 0xa6, 0xbf, 0xbb, 0x03, 0x7e, 0xef, 0x66, 0x45,
91295 + 0xcf, 0xb0, 0xd3, 0x27, 0x13, 0xc7, 0x38, 0x76, 0x0f, 0x6c, 0x79, 0x5c,
91296 + 0xc9, 0x6d, 0xb1, 0xb4, 0x1c, 0x8f, 0xc0, 0x26, 0x47, 0xb6, 0x90, 0x9f,
91297 + 0xef, 0x93, 0xbb, 0xec, 0x31, 0xb9, 0x1b, 0xb2, 0x33, 0x68, 0x3b, 0x32,
91298 + 0x84, 0xb5, 0xd8, 0x61, 0xc3, 0xef, 0x28, 0x0c, 0xdd, 0x88, 0xb8, 0x8b,
91299 + 0x63, 0xb7, 0xeb, 0xfb, 0x17, 0x1e, 0x7e, 0xfc, 0x4a, 0xd5, 0xe3, 0x51,
91300 + 0x76, 0xf6, 0x49, 0xc5, 0x9b, 0x61, 0x67, 0x9b, 0xf6, 0xb3, 0x2d, 0x92,
91301 + 0x53, 0xf5, 0xb6, 0x29, 0x7f, 0x5c, 0x5c, 0xb8, 0x1f, 0x29, 0x7c, 0xf3,
91302 + 0x02, 0xec, 0x0d, 0x30, 0x77, 0xb1, 0xb2, 0x15, 0x79, 0xf8, 0xd0, 0x85,
91303 + 0x34, 0xd2, 0xf7, 0x21, 0x65, 0xdd, 0x07, 0x9a, 0xbd, 0xbd, 0xdc, 0xb5,
91304 + 0xf7, 0xb8, 0x24, 0xf0, 0x01, 0x85, 0x4b, 0xaf, 0xa8, 0x3b, 0x80, 0x88,
91305 + 0xa1, 0x47, 0xb2, 0xb0, 0x2b, 0xcd, 0xc0, 0x40, 0x53, 0xc7, 0xad, 0xd4,
91306 + 0x50, 0x60, 0xbb, 0x7c, 0x10, 0xb1, 0x7c, 0xd9, 0xe1, 0x5a, 0x6e, 0x95,
91307 + 0x07, 0xdf, 0x4b, 0x19, 0xd9, 0x2e, 0x7b, 0xde, 0x1b, 0x90, 0x3d, 0x7d,
91308 + 0x56, 0x86, 0x74, 0xdf, 0xf2, 0x2e, 0x3f, 0x9e, 0xee, 0x1a, 0x4e, 0x06,
91309 + 0xfa, 0xe5, 0x0b, 0x90, 0xb1, 0x02, 0xe4, 0x6b, 0xa8, 0x4a, 0x9e, 0xd3,
91310 + 0xde, 0xd3, 0xce, 0xa7, 0x80, 0x95, 0x7d, 0xec, 0x67, 0xcb, 0x54, 0xb5,
91311 + 0x41, 0x12, 0x37, 0x70, 0x3f, 0x39, 0xe1, 0x9d, 0x71, 0xdc, 0x40, 0x99,
91312 + 0x40, 0x0c, 0x72, 0x83, 0xa7, 0x9f, 0xea, 0xee, 0xdd, 0x0d, 0x9e, 0x5f,
91313 + 0x41, 0xfc, 0xeb, 0x12, 0xe7, 0x79, 0x77, 0x0d, 0xbe, 0xa1, 0x6d, 0x69,
91314 + 0x68, 0xe3, 0x0a, 0xbe, 0x6b, 0x61, 0xfc, 0xf0, 0x87, 0xcd, 0xb5, 0x6f,
91315 + 0x07, 0xd6, 0xca, 0xa2, 0xbf, 0xef, 0x36, 0x87, 0x39, 0xd3, 0xa7, 0x5b,
91316 + 0x26, 0x6d, 0x61, 0xab, 0xbd, 0x4b, 0xfe, 0x0c, 0xfe, 0xfd, 0x6b, 0x2b,
91317 + 0xfe, 0x7d, 0x37, 0xf8, 0xb1, 0x16, 0x03, 0xd8, 0xe6, 0x3d, 0x98, 0xcb,
91318 + 0x30, 0xd6, 0xf3, 0x6e, 0xfc, 0xee, 0x2a, 0xad, 0xda, 0xc7, 0x9b, 0x29,
91319 + 0x00, 0x4f, 0x36, 0xd8, 0xec, 0x6f, 0xd5, 0x7e, 0x5e, 0x21, 0x2f, 0x2b,
91320 + 0x7b, 0x85, 0x03, 0x57, 0x85, 0x7e, 0xef, 0x75, 0x09, 0x77, 0xdb, 0xaf,
91321 + 0x77, 0x06, 0xec, 0xe7, 0x8d, 0x00, 0xcf, 0xc1, 0x1d, 0x39, 0x5d, 0x25,
91322 + 0x0e, 0xbb, 0x28, 0xc6, 0x59, 0x62, 0xb0, 0x97, 0xd5, 0x1e, 0x54, 0xb9,
91323 + 0xf4, 0x2d, 0xa4, 0xa8, 0x0f, 0xfb, 0x18, 0xf4, 0xf6, 0x29, 0x14, 0x56,
91324 + 0xa1, 0x9d, 0xbd, 0x1b, 0xeb, 0x30, 0x81, 0x5f, 0xe7, 0x96, 0x5b, 0xa1,
91325 + 0xbf, 0x94, 0x53, 0xee, 0x7d, 0x75, 0x9b, 0x5b, 0x02, 0x7c, 0xb7, 0xde,
91326 + 0x3e, 0xd8, 0xb7, 0x25, 0x74, 0x14, 0xbe, 0xce, 0xa0, 0x7d, 0xe0, 0x3c,
91327 + 0xe8, 0x27, 0x4d, 0x99, 0x3f, 0x46, 0x5d, 0x5f, 0xaf, 0xbe, 0x5f, 0xd7,
91328 + 0x9f, 0x8b, 0xf2, 0x1b, 0x99, 0x3c, 0xf7, 0x38, 0x4b, 0x5c, 0x03, 0x07,
91329 + 0x6b, 0xe0, 0xca, 0x71, 0xa7, 0x95, 0x36, 0x5d, 0x82, 0xc7, 0x5d, 0x19,
91330 + 0x54, 0xd8, 0xb5, 0x17, 0x98, 0x6b, 0xa3, 0xc6, 0x0d, 0x31, 0x09, 0x1d,
91331 + 0xef, 0x90, 0x46, 0xe0, 0xea, 0x86, 0x23, 0xf4, 0x91, 0xc9, 0xc4, 0x20,
91332 + 0x84, 0x20, 0xa4, 0xee, 0x93, 0x5a, 0x03, 0xdf, 0x97, 0xde, 0xc4, 0xf7,
91333 + 0x85, 0x78, 0xe9, 0x51, 0xac, 0x9f, 0xe5, 0x5c, 0x5c, 0xa7, 0x7e, 0xb1,
91334 + 0x56, 0x1f, 0x72, 0xc4, 0xbd, 0x35, 0xb6, 0xe1, 0x5e, 0x5b, 0x72, 0xe0,
91335 + 0x7b, 0xdc, 0x63, 0x43, 0xac, 0xd9, 0x70, 0xc6, 0xa3, 0xc1, 0x58, 0x6c,
91336 + 0x93, 0xf2, 0x49, 0xea, 0x28, 0xf7, 0x59, 0x4c, 0x2f, 0x4e, 0x2d, 0x31,
91337 + 0x5e, 0xe5, 0xfb, 0x84, 0x7e, 0xdf, 0xa9, 0xdf, 0x33, 0x1e, 0x2d, 0xb8,
91338 + 0x0d, 0xe0, 0xe9, 0x0e, 0xd8, 0xcf, 0xfb, 0xb7, 0xda, 0x0a, 0x37, 0xdc,
91339 + 0xbf, 0xb2, 0x66, 0x3b, 0xd5, 0xdd, 0xa2, 0x72, 0xe9, 0xa0, 0xd8, 0x5b,
91340 + 0x96, 0x52, 0x21, 0x19, 0xc5, 0x5a, 0x30, 0x9f, 0x21, 0x3d, 0xa9, 0x43,
91341 + 0xb2, 0x5f, 0xad, 0x4d, 0xf9, 0x98, 0x75, 0x38, 0x11, 0x98, 0x10, 0xa3,
91342 + 0xcc, 0xe7, 0x4f, 0x23, 0x3d, 0x04, 0xbc, 0xe3, 0xed, 0x5d, 0x1a, 0xe5,
91343 + 0xd5, 0xbc, 0x04, 0xc6, 0x30, 0x77, 0xac, 0xda, 0xc7, 0xaa, 0xed, 0x71,
91344 + 0xf1, 0xfd, 0xa0, 0x7a, 0x9f, 0x5a, 0xb5, 0xcf, 0x95, 0x33, 0x88, 0x65,
91345 + 0xfc, 0xf7, 0x5c, 0x0b, 0xae, 0x17, 0x7c, 0xf1, 0x31, 0x7f, 0xcf, 0xab,
91346 + 0x45, 0xaf, 0x0b, 0xd7, 0x67, 0x4a, 0xce, 0x99, 0xd6, 0x30, 0xe5, 0xef,
91347 + 0xb6, 0xad, 0x37, 0xc9, 0x78, 0x3b, 0xf7, 0xdb, 0xea, 0x69, 0x58, 0xbb,
91348 + 0x8f, 0x56, 0x3f, 0xfe, 0xda, 0xfd, 0x37, 0x8e, 0xed, 0xed, 0xb1, 0x65,
91349 + 0x57, 0xed, 0xb1, 0xd5, 0x8f, 0xc7, 0xb1, 0x36, 0x22, 0x7e, 0x2a, 0xb8,
91350 + 0x31, 0x9b, 0x6b, 0xd4, 0x95, 0x98, 0x65, 0xfe, 0xcb, 0x06, 0xd6, 0x31,
91351 + 0x06, 0x3f, 0xc2, 0xb5, 0xf4, 0xcf, 0x9e, 0xb9, 0xa6, 0xc9, 0xc4, 0x21,
91352 + 0x6f, 0x3d, 0x07, 0xbc, 0x75, 0xf7, 0xd6, 0xff, 0xe2, 0xca, 0x3a, 0xd2,
91353 + 0x3f, 0x70, 0x1d, 0xdb, 0x45, 0x60, 0x67, 0x8d, 0x23, 0x5c, 0x43, 0xa6,
91354 + 0x5c, 0x43, 0xbe, 0xe3, 0x1a, 0x76, 0xea, 0x77, 0x5c, 0x3f, 0xe0, 0xb4,
91355 + 0x2f, 0x02, 0x63, 0x38, 0x59, 0xf5, 0x1d, 0x54, 0x67, 0xb7, 0xaf, 0x8b,
91356 + 0x29, 0x79, 0x66, 0x3e, 0x2a, 0x66, 0xda, 0x9b, 0xd7, 0xd8, 0xaa, 0xfd,
91357 + 0x76, 0x9e, 0x5f, 0xf5, 0x11, 0x7b, 0xfa, 0xf3, 0x8a, 0x73, 0x5e, 0xfb,
91358 + 0xe5, 0xb2, 0xe4, 0xa7, 0x42, 0x88, 0x01, 0x53, 0xc0, 0x39, 0x7d, 0xb0,
91359 + 0xb7, 0xdc, 0x1f, 0x45, 0x59, 0x85, 0x78, 0x85, 0xbe, 0x2e, 0x05, 0x5d,
91360 + 0xa1, 0x0d, 0x26, 0x1e, 0x79, 0x55, 0x72, 0x73, 0xbe, 0x8d, 0x41, 0xff,
91361 + 0x86, 0xdf, 0x3f, 0xf9, 0x9c, 0xb9, 0x65, 0xb3, 0x2c, 0x25, 0x36, 0x8b,
91362 + 0x95, 0x58, 0x90, 0xda, 0xba, 0x8e, 0xad, 0xcf, 0x77, 0xe7, 0xfe, 0x60,
91363 + 0x4d, 0x36, 0xc6, 0xd6, 0x59, 0xfb, 0xbd, 0xe2, 0xbf, 0xf7, 0xd7, 0x7e,
91364 + 0xdd, 0x75, 0x28, 0xbc, 0x22, 0x5c, 0x0b, 0xf2, 0x80, 0x78, 0x38, 0x2c,
91365 + 0x9f, 0x8a, 0x51, 0x1f, 0x0b, 0xea, 0x7c, 0x33, 0x69, 0x74, 0x2b, 0x9b,
91366 + 0x31, 0xe8, 0x78, 0xf2, 0x5a, 0xc0, 0x38, 0x91, 0xae, 0x7f, 0xe1, 0x0e,
91367 + 0xc6, 0x10, 0xe7, 0x76, 0xd1, 0xbe, 0xf8, 0x3a, 0x1d, 0x55, 0x3a, 0xfd,
91368 + 0x79, 0x27, 0x20, 0x45, 0x3b, 0x20, 0x13, 0xf6, 0x41, 0x85, 0xf1, 0x3f,
91369 + 0x84, 0xbe, 0x1e, 0xd4, 0x7d, 0x4d, 0x48, 0xb7, 0xb6, 0x3f, 0x07, 0x20,
91370 + 0xe7, 0xae, 0xdc, 0xe7, 0x6c, 0x95, 0xdb, 0x5a, 0xa9, 0x03, 0xfe, 0xfc,
91371 + 0x0f, 0x4a, 0xd7, 0xd6, 0xa5, 0x04, 0x22, 0x83, 0x5b, 0xc2, 0x2b, 0x3c,
91372 + 0xa0, 0x9e, 0xf9, 0xf2, 0xed, 0xf1, 0xc1, 0x9b, 0xff, 0xaa, 0xb9, 0xea,
91373 + 0x79, 0x72, 0xce, 0xac, 0xc7, 0xb9, 0x7a, 0x58, 0xbe, 0x36, 0x57, 0xbf,
91374 + 0x7e, 0x33, 0x64, 0xc9, 0x4a, 0x48, 0xa0, 0x9e, 0x37, 0x2b, 0x36, 0x6a,
91375 + 0x98, 0x7b, 0x24, 0x4b, 0xa6, 0x95, 0x4a, 0x04, 0xfc, 0xbd, 0x68, 0x0f,
91376 + 0xeb, 0x76, 0x02, 0x87, 0xdb, 0xdd, 0xdd, 0xa9, 0xbc, 0xda, 0x23, 0x35,
91377 + 0xd4, 0xbc, 0x26, 0x80, 0xc9, 0xe6, 0x9d, 0x57, 0xdc, 0x4f, 0x02, 0xb3,
91378 + 0x8e, 0xcb, 0xc3, 0x12, 0x5c, 0xb5, 0x97, 0x8b, 0xfc, 0x59, 0xee, 0xe7,
91379 + 0x5a, 0x89, 0x0c, 0xd6, 0xf8, 0xc3, 0x88, 0xe1, 0xcb, 0xb0, 0xfb, 0x1f,
91380 + 0xa1, 0x6f, 0x28, 0xc1, 0x5f, 0x00, 0x97, 0x7c, 0xed, 0xba, 0x18, 0x7e,
91381 + 0xbc, 0x6e, 0x2f, 0xd7, 0xc3, 0xa7, 0xe7, 0x14, 0x26, 0x25, 0x6e, 0x3f,
91382 + 0x1c, 0xb8, 0xa7, 0x27, 0x88, 0x38, 0xa3, 0xe0, 0x46, 0x6c, 0xe2, 0xb8,
91383 + 0x83, 0x72, 0x17, 0xd6, 0xe7, 0xf4, 0x7c, 0x21, 0xb0, 0xa3, 0xe4, 0xcb,
91384 + 0x2a, 0xe2, 0xca, 0xaa, 0x95, 0x5a, 0x06, 0x3f, 0x9e, 0xd4, 0x98, 0x8f,
91385 + 0xe7, 0x35, 0x65, 0x1d, 0xb3, 0x70, 0x6f, 0xa8, 0x58, 0x3d, 0x28, 0x93,
91386 + 0x0e, 0xf7, 0x76, 0xba, 0xa4, 0x18, 0xcb, 0xdc, 0xd4, 0xb8, 0xc2, 0x23,
91387 + 0xcb, 0x44, 0xcc, 0x97, 0xa2, 0xfd, 0x2e, 0xeb, 0xf3, 0x8e, 0x27, 0x95,
91388 + 0x7c, 0xf9, 0xfb, 0xc2, 0x8c, 0x8f, 0x78, 0x5e, 0xd5, 0x65, 0x0e, 0xf3,
91389 + 0x79, 0x8e, 0x32, 0xa0, 0x62, 0x26, 0xf0, 0xf2, 0x21, 0xc9, 0x8c, 0x26,
91390 + 0x14, 0x6e, 0x79, 0xbc, 0x44, 0x7d, 0x21, 0xfe, 0xbf, 0x0c, 0xec, 0x1f,
91391 + 0xc2, 0x9a, 0x31, 0x0e, 0xe0, 0xd8, 0xd4, 0x0b, 0x94, 0x55, 0xcc, 0x5f,
91392 + 0xa2, 0x17, 0xdb, 0x37, 0x11, 0x63, 0x5c, 0x28, 0x7d, 0x5c, 0xf1, 0x6f,
91393 + 0x49, 0xfc, 0xbd, 0x73, 0x85, 0x05, 0x0b, 0xd9, 0x60, 0x40, 0x92, 0x47,
91394 + 0x3f, 0x03, 0x19, 0x1a, 0x41, 0x8c, 0xc4, 0x7a, 0xa2, 0xce, 0xaf, 0x06,
91395 + 0x81, 0xb9, 0x0c, 0xfb, 0x46, 0x29, 0x9a, 0x61, 0x29, 0xaa, 0x7b, 0x80,
91396 + 0x3c, 0xcf, 0x0d, 0xaa, 0xbd, 0x9d, 0xa2, 0x49, 0xcc, 0x9f, 0xd9, 0xe4,
91397 + 0xdf, 0x03, 0x2c, 0x9a, 0x6c, 0xc7, 0x3c, 0xcb, 0x27, 0x24, 0x7c, 0xf4,
91398 + 0x80, 0x34, 0x1c, 0x7d, 0x58, 0x1a, 0xa7, 0x89, 0xf1, 0xb8, 0x77, 0x6f,
91399 + 0xdc, 0xd1, 0x28, 0xc4, 0xdc, 0x5f, 0xc5, 0xd8, 0x07, 0xe5, 0x87, 0x8e,
91400 + 0x4f, 0xd3, 0x86, 0x8d, 0xd2, 0xc2, 0x3a, 0x7e, 0xde, 0xc7, 0xe3, 0x77,
91401 + 0x80, 0x1e, 0xce, 0x3f, 0xa1, 0x71, 0xdf, 0x1d, 0x75, 0xb1, 0x6b, 0x83,
91402 + 0x8e, 0x5d, 0xd9, 0xee, 0x32, 0x7c, 0xf6, 0x31, 0x09, 0xdb, 0x7e, 0xfb,
91403 + 0xed, 0xa8, 0x17, 0xaf, 0xbb, 0x03, 0xc1, 0x3a, 0xfa, 0x4e, 0x40, 0x0b,
91404 + 0x71, 0x0f, 0xcf, 0xdb, 0x59, 0xe6, 0x9d, 0xf9, 0x1b, 0xe5, 0x74, 0x70,
91405 + 0xf5, 0xf8, 0xdb, 0xea, 0xea, 0xfa, 0x65, 0x7e, 0x9b, 0xb0, 0x17, 0xf3,
91406 + 0xf7, 0x87, 0xeb, 0xda, 0x7d, 0xd7, 0xf4, 0x52, 0x2f, 0xf6, 0xf0, 0xe2,
91407 + 0x20, 0xce, 0x21, 0x55, 0x87, 0x73, 0x56, 0x7f, 0x2f, 0x9a, 0x43, 0x79,
91408 + 0x7e, 0xd6, 0xbf, 0x3b, 0x64, 0x60, 0x2e, 0x56, 0x81, 0xf1, 0x8b, 0xc9,
91409 + 0x6f, 0x33, 0x67, 0x0b, 0xa0, 0xfb, 0x66, 0x75, 0xef, 0x88, 0x77, 0x37,
91410 + 0x50, 0x2f, 0xe1, 0xe1, 0x4f, 0xe6, 0xe3, 0x58, 0xf3, 0x77, 0x75, 0x18,
91411 + 0xe9, 0xff, 0x7e, 0x53, 0xb6, 0x9f, 0xf8, 0x66, 0x13, 0xcf, 0x21, 0x81,
91412 + 0x9b, 0x29, 0x67, 0xdf, 0x81, 0x9c, 0x35, 0xaa, 0x73, 0x9f, 0x62, 0x89,
91413 + 0xf1, 0x5c, 0x1e, 0xf2, 0xc3, 0xfb, 0x7b, 0x8c, 0xfb, 0xf2, 0x7a, 0x3f,
91414 + 0x96, 0x74, 0x12, 0xd3, 0xfb, 0xf1, 0x01, 0xfb, 0x5c, 0xef, 0x9e, 0xb2,
91415 + 0x1f, 0xb3, 0x51, 0xde, 0xe2, 0x8a, 0xe6, 0xa1, 0x35, 0xf1, 0xca, 0x21,
91416 + 0xd8, 0x82, 0x79, 0xc8, 0xf3, 0x5e, 0xd8, 0xc0, 0xc1, 0x20, 0xf5, 0x33,
91417 + 0xaa, 0x63, 0x59, 0x9b, 0x71, 0x7b, 0x60, 0x14, 0x7d, 0x18, 0xd3, 0xaf,
91418 + 0xc9, 0x04, 0xec, 0xff, 0x64, 0x35, 0xa9, 0xbe, 0xe9, 0xc9, 0xc4, 0x79,
91419 + 0x9f, 0x8c, 0xe5, 0x5f, 0x83, 0xbc, 0xbe, 0x06, 0x3c, 0xbc, 0x01, 0xfc,
91420 + 0x34, 0xf4, 0x5a, 0xfd, 0x96, 0xde, 0x8b, 0x8a, 0x70, 0x2f, 0x1e, 0x76,
91421 + 0xb3, 0xe8, 0x61, 0xcd, 0xd8, 0x24, 0xd2, 0x7f, 0x1e, 0xf5, 0xe4, 0xf5,
91422 + 0xdf, 0x6a, 0x79, 0x6b, 0x42, 0xf9, 0x63, 0x6a, 0x0f, 0xd2, 0x9b, 0x93,
91423 + 0xa5, 0x63, 0x95, 0x30, 0x64, 0x8e, 0xf3, 0xfa, 0x53, 0xd4, 0xa3, 0xac,
91424 + 0xf5, 0xe8, 0xb3, 0xd9, 0xa8, 0xb2, 0x8f, 0x39, 0xc8, 0x52, 0x5e, 0xc5,
91425 + 0x11, 0xc0, 0xf7, 0x0e, 0xdb, 0x3d, 0xb7, 0x89, 0x67, 0x9f, 0x0d, 0xb6,
91426 + 0x8a, 0x2d, 0xda, 0x83, 0xe2, 0x97, 0xdd, 0x89, 0x32, 0xca, 0xd9, 0x8d,
91427 + 0x58, 0x1b, 0x96, 0x65, 0x91, 0xe7, 0x58, 0x37, 0xe9, 0x71, 0x38, 0x46,
91428 + 0x77, 0xf3, 0x6a, 0x9a, 0x38, 0x97, 0xf6, 0x35, 0xdf, 0x35, 0xb0, 0xec,
91429 + 0x46, 0x5d, 0x16, 0xd2, 0xf3, 0x1b, 0xd2, 0xdf, 0xd2, 0x5a, 0x87, 0x33,
91430 + 0x2b, 0xd8, 0x98, 0xf4, 0x45, 0x54, 0xbb, 0x8c, 0xe9, 0xc9, 0xce, 0x21,
91431 + 0xac, 0x47, 0x28, 0x1d, 0xe4, 0x99, 0x2c, 0xf8, 0xeb, 0xeb, 0x44, 0x5c,
91432 + 0xc5, 0x9d, 0x09, 0xc3, 0xbb, 0xbb, 0x74, 0xee, 0x9a, 0xfb, 0xd9, 0xde,
91433 + 0x5d, 0xf7, 0xa1, 0x9e, 0x26, 0x99, 0x9f, 0x89, 0xe8, 0x7b, 0x93, 0x71,
91434 + 0xa5, 0xb3, 0xf9, 0x31, 0xe6, 0xff, 0xc7, 0x26, 0x7e, 0xc7, 0x6c, 0xd8,
91435 + 0x2c, 0x6f, 0xd7, 0xfc, 0xbd, 0x51, 0xdd, 0x33, 0xa2, 0x2e, 0x14, 0xe7,
91436 + 0xde, 0x50, 0xef, 0x4f, 0xcf, 0x36, 0xa8, 0xfa, 0xa7, 0x67, 0xd7, 0xde,
91437 + 0x15, 0x62, 0xd9, 0xdb, 0xb8, 0xbf, 0x21, 0x0b, 0x53, 0x0d, 0xb2, 0x38,
91438 + 0x1b, 0x60, 0xbc, 0x96, 0x6e, 0xac, 0x7d, 0x0b, 0xa3, 0xbf, 0x5b, 0x73,
91439 + 0x65, 0x08, 0xeb, 0x37, 0x3f, 0x30, 0x29, 0xe5, 0x01, 0xc6, 0x23, 0xea,
91440 + 0x3e, 0x20, 0x64, 0xa4, 0x01, 0x58, 0xb4, 0xe0, 0x96, 0x6d, 0xee, 0x03,
91441 + 0xb7, 0x68, 0xbd, 0x7e, 0x45, 0xc7, 0x7c, 0xe4, 0x91, 0x21, 0xb9, 0xbe,
91442 + 0x09, 0x45, 0x57, 0x59, 0xf1, 0xca, 0xff, 0xd6, 0x88, 0xfd, 0xf3, 0x7b,
91443 + 0xa3, 0xa0, 0xc6, 0xb2, 0xfb, 0x35, 0xcf, 0xff, 0x4a, 0xa7, 0x8f, 0xca,
91444 + 0x9e, 0x63, 0xbf, 0x0f, 0x5a, 0x9b, 0xbc, 0x3b, 0x4f, 0x52, 0xff, 0x3d,
91445 + 0x49, 0x48, 0x7d, 0xcf, 0x12, 0xb2, 0x1f, 0x45, 0x19, 0xf7, 0xc1, 0x1e,
91446 + 0x55, 0xf3, 0xe0, 0xbd, 0xba, 0x82, 0xfc, 0xaa, 0xfb, 0x21, 0x7e, 0x2c,
91447 + 0xc6, 0xbb, 0x4b, 0x51, 0xdd, 0xdf, 0x0e, 0xbd, 0x8e, 0x63, 0xb2, 0x07,
91448 + 0xbe, 0x26, 0x0f, 0x4c, 0xca, 0xfb, 0x5e, 0xe3, 0xc1, 0xfa, 0x31, 0x7d,
91449 + 0x59, 0xf6, 0xe2, 0x7c, 0xff, 0xde, 0x41, 0x50, 0xc5, 0x23, 0x2b, 0x7b,
91450 + 0x06, 0xba, 0x7c, 0x4c, 0xf6, 0x95, 0xd4, 0xde, 0x81, 0x3a, 0x2f, 0x9c,
91451 + 0x84, 0x4e, 0x0e, 0x2a, 0x7f, 0x12, 0x09, 0x0c, 0x55, 0xd2, 0x92, 0x3f,
91452 + 0xb9, 0x13, 0xe3, 0x70, 0x1f, 0x2e, 0xa3, 0xcf, 0xe5, 0x76, 0xcb, 0x9e,
91453 + 0xaa, 0x37, 0xf6, 0xde, 0x12, 0xdf, 0x27, 0xe1, 0xa3, 0xf9, 0x3e, 0x17,
91454 + 0x0f, 0xaa, 0x93, 0x85, 0x5b, 0xd1, 0xb6, 0x41, 0xf3, 0x96, 0xf7, 0xfc,
91455 + 0xd9, 0x9e, 0xfa, 0xf7, 0x4f, 0x4c, 0x89, 0xe6, 0xf0, 0x9e, 0x6d, 0xfc,
91456 + 0xfe, 0xf6, 0xc2, 0x67, 0x30, 0x36, 0x7e, 0x44, 0x96, 0xe6, 0x26, 0x65,
91457 + 0x79, 0xce, 0x97, 0x33, 0xde, 0xb9, 0x26, 0xed, 0x77, 0xeb, 0x3b, 0xd7,
91458 + 0x19, 0xac, 0xc3, 0x6a, 0x5e, 0xe5, 0x56, 0x7d, 0x8f, 0xf4, 0x75, 0xd3,
91459 + 0xfb, 0x26, 0x70, 0xbb, 0xba, 0x3f, 0xb5, 0x5a, 0xde, 0xd9, 0xcf, 0x57,
91460 + 0x4c, 0x9e, 0x33, 0x78, 0x77, 0xc0, 0xda, 0xeb, 0xde, 0xc7, 0xf4, 0xbd,
91461 + 0xab, 0xaf, 0xe9, 0xbb, 0xfa, 0xe4, 0xe7, 0xa8, 0xa6, 0xf7, 0x56, 0xe8,
91462 + 0x1e, 0xfb, 0x7c, 0x4c, 0xaf, 0x1b, 0xd2, 0x79, 0x3e, 0xab, 0xbb, 0xa6,
91463 + 0xfa, 0xec, 0xd5, 0xd4, 0x63, 0xd4, 0xdf, 0x7b, 0x6b, 0xa8, 0x1b, 0x97,
91464 + 0xed, 0xe9, 0x1b, 0xfc, 0x3b, 0xe0, 0x2c, 0x3b, 0xa6, 0xef, 0xd7, 0xf9,
91465 + 0x77, 0xbe, 0x59, 0xe6, 0xdf, 0x03, 0x23, 0xbf, 0xb8, 0x9f, 0x88, 0xb4,
91466 + 0x3a, 0xaa, 0x9f, 0x47, 0xeb, 0xbe, 0x1d, 0xf2, 0xfb, 0x0c, 0xa1, 0x8f,
91467 + 0x3b, 0x83, 0xd7, 0xde, 0x11, 0xe7, 0xb7, 0x54, 0x94, 0x45, 0x83, 0xdf,
91468 + 0x78, 0x33, 0x06, 0x03, 0x6e, 0xda, 0x28, 0x7b, 0x15, 0x3d, 0x05, 0x75,
91469 + 0x57, 0x22, 0xeb, 0x34, 0xc9, 0xa0, 0xe9, 0xe5, 0xf7, 0xce, 0xaf, 0x95,
91470 + 0x53, 0x96, 0x6f, 0x8a, 0x48, 0x94, 0xdf, 0x70, 0xf1, 0xfd, 0x7a, 0xdf,
91471 + 0x2e, 0x84, 0xf5, 0xf7, 0x53, 0x0e, 0xda, 0x7c, 0x9e, 0xf2, 0x5e, 0x28,
91472 + 0xac, 0xdc, 0xd1, 0x2c, 0xa8, 0x3d, 0x52, 0x00, 0x73, 0x7d, 0x57, 0x92,
91473 + 0xdf, 0xb0, 0x8b, 0x3c, 0x5d, 0xe1, 0xb7, 0x5c, 0xdb, 0xd5, 0x1d, 0x16,
91474 + 0xef, 0x5c, 0x90, 0x74, 0x75, 0x29, 0x9b, 0x5c, 0xae, 0x14, 0xc9, 0x53,
91475 + 0xed, 0x57, 0xc3, 0xda, 0xaf, 0x92, 0xc7, 0xc3, 0xe0, 0xf1, 0x5f, 0xeb,
91476 + 0x75, 0x61, 0xfb, 0x8c, 0xba, 0x0b, 0x9e, 0x89, 0xf1, 0x6c, 0xea, 0x31,
91477 + 0x35, 0x17, 0xda, 0x68, 0xb4, 0x7d, 0x47, 0x50, 0xe9, 0xae, 0xfa, 0x46,
91478 + 0x1e, 0xf2, 0xc9, 0x6f, 0xde, 0x61, 0x5f, 0x4b, 0xfc, 0xb6, 0x7d, 0x58,
91479 + 0x7d, 0x67, 0x52, 0xae, 0x70, 0x5d, 0xf9, 0x4d, 0xfb, 0x68, 0x9d, 0x3c,
91480 + 0x06, 0xf5, 0x58, 0x9b, 0x5a, 0x25, 0xea, 0xad, 0x3b, 0xbf, 0x51, 0x29,
91481 + 0x57, 0xfc, 0xfb, 0x9d, 0x1b, 0x96, 0xa8, 0x13, 0xa2, 0x62, 0x6c, 0xef,
91482 + 0x3b, 0x9b, 0xb2, 0xfa, 0x6e, 0x25, 0xc1, 0xef, 0x2e, 0xe1, 0x3b, 0x76,
91483 + 0xe1, 0x99, 0x67, 0xba, 0xbb, 0x91, 0xc2, 0xe6, 0x54, 0xc6, 0x91, 0x3e,
91484 + 0x2c, 0x39, 0xb5, 0xe7, 0xd6, 0x8c, 0xfc, 0x5e, 0x35, 0x76, 0xb1, 0xf2,
91485 + 0x80, 0xec, 0x39, 0xf9, 0x10, 0xbf, 0xed, 0x51, 0xdf, 0xe5, 0x67, 0x1d,
91486 + 0xd2, 0x18, 0x93, 0x09, 0x35, 0xef, 0x42, 0xed, 0x9b, 0x11, 0xc5, 0xfb,
91487 + 0x5c, 0x2b, 0xd7, 0xb4, 0x50, 0x69, 0x06, 0x8d, 0x01, 0x7d, 0xc7, 0x93,
91488 + 0x58, 0xdc, 0x9f, 0x7f, 0x94, 0xf7, 0x06, 0x5d, 0x9e, 0xdd, 0xed, 0x29,
91489 + 0xf1, 0x0e, 0x67, 0x52, 0xc7, 0xe8, 0xdc, 0xb7, 0xe3, 0xd9, 0x00, 0x65,
91490 + 0xdc, 0x4a, 0x8d, 0xc3, 0xfa, 0x87, 0x25, 0xce, 0x73, 0x65, 0x3d, 0x97,
91491 + 0xe6, 0xba, 0xb9, 0xf0, 0xde, 0xaa, 0x37, 0x1f, 0x7e, 0x0b, 0x93, 0x2f,
91492 + 0xd5, 0x7f, 0xc7, 0xa3, 0xbe, 0x11, 0x57, 0xdf, 0xcd, 0x8c, 0x57, 0x3e,
91493 + 0x21, 0x1f, 0x2b, 0x6d, 0xd4, 0xdf, 0xf0, 0x44, 0xe4, 0x63, 0x95, 0xd7,
91494 + 0x14, 0x4f, 0xf3, 0xea, 0xfb, 0xa3, 0xb0, 0x5e, 0xb3, 0x98, 0xea, 0xa3,
91495 + 0xf6, 0x1d, 0x92, 0x55, 0xf7, 0x4d, 0x4a, 0x58, 0xc6, 0xe7, 0x7f, 0xd9,
91496 + 0xb7, 0x48, 0x8f, 0x08, 0xbf, 0x47, 0xb9, 0xe4, 0x4c, 0xca, 0xe3, 0x73,
91497 + 0xae, 0x7b, 0x97, 0x43, 0x5c, 0xb7, 0x41, 0x96, 0x63, 0xa3, 0x3b, 0xbe,
91498 + 0x67, 0xb7, 0x05, 0xca, 0x33, 0x8d, 0xb0, 0xd7, 0xc4, 0x12, 0x12, 0x65,
91499 + 0x7e, 0x7e, 0x86, 0x7a, 0x1a, 0xc2, 0x1c, 0x2d, 0xf3, 0xaa, 0x7c, 0xa6,
91500 + 0x95, 0x7b, 0x5e, 0x77, 0x21, 0x8e, 0xfc, 0xb8, 0xe3, 0xd9, 0xe5, 0xcf,
91501 + 0x2d, 0xec, 0x94, 0xcf, 0x55, 0x22, 0x81, 0xf2, 0x14, 0xef, 0xfa, 0x59,
91502 + 0xc3, 0x73, 0x92, 0x44, 0x3d, 0xf6, 0x0f, 0x79, 0x89, 0x6f, 0x96, 0xa7,
91503 + 0x8e, 0xfd, 0xc2, 0xbd, 0x6a, 0xe3, 0x3d, 0x6c, 0xcd, 0xb2, 0xe3, 0xef,
91504 + 0xeb, 0x21, 0x86, 0x3f, 0xc2, 0x7a, 0x9b, 0x21, 0x07, 0xf0, 0xdb, 0xd0,
91505 + 0x39, 0xc6, 0x98, 0x57, 0xb5, 0xdd, 0x32, 0x8e, 0xdc, 0x2c, 0x57, 0x57,
91506 + 0xee, 0x0a, 0x5f, 0x86, 0x6c, 0x27, 0x3c, 0xfe, 0xab, 0x7d, 0xf0, 0x03,
91507 + 0x12, 0xfc, 0x22, 0xfc, 0xc4, 0x17, 0x1b, 0x94, 0x6d, 0xa7, 0x3f, 0x43,
91508 + 0xfc, 0x81, 0x18, 0x23, 0x84, 0x7e, 0x1e, 0x6c, 0xf5, 0x64, 0x76, 0x52,
91509 + 0xe4, 0xcb, 0x4d, 0x92, 0x69, 0x65, 0x0c, 0x2b, 0xbf, 0xc2, 0x7e, 0xd5,
91510 + 0xeb, 0x59, 0x4a, 0xbe, 0x42, 0x1d, 0xaf, 0x72, 0x2e, 0xc9, 0xf8, 0x8f,
91511 + 0xe5, 0x93, 0x32, 0x1e, 0xe7, 0x5c, 0x1e, 0x91, 0xc2, 0xdc, 0x63, 0xf8,
91512 + 0x71, 0x9e, 0xa4, 0xfb, 0x1f, 0xe8, 0x7b, 0x04, 0xa3, 0x52, 0x9c, 0x4a,
91513 + 0xcb, 0xc4, 0xec, 0x5e, 0x7e, 0xa3, 0x3b, 0x7c, 0x97, 0x3a, 0x5f, 0xb3,
91514 + 0xe2, 0xc9, 0x40, 0x6f, 0x62, 0x82, 0xf7, 0x26, 0xd4, 0x7c, 0xf6, 0x62,
91515 + 0x3e, 0xdf, 0x6a, 0xe5, 0xdd, 0xf3, 0xab, 0xb0, 0xbf, 0xc6, 0x71, 0xca,
91516 + 0xa1, 0x65, 0x76, 0x06, 0x98, 0xdf, 0x8d, 0xd8, 0x99, 0x65, 0xbb, 0x25,
91517 + 0x78, 0x64, 0xc5, 0xce, 0xa3, 0x5c, 0x9f, 0xf3, 0xaa, 0xf6, 0xff, 0x11,
91518 + 0x6d, 0x51, 0xef, 0x88, 0xdf, 0xd6, 0xaf, 0xc3, 0xb6, 0x9c, 0xe7, 0x4e,
91519 + 0xc4, 0xec, 0x3e, 0x5d, 0x90, 0xc3, 0x78, 0x3d, 0xbf, 0xa3, 0x6b, 0xf8,
91520 + 0x1d, 0x22, 0xde, 0x04, 0xbf, 0xc8, 0xe3, 0xa0, 0xe6, 0xf1, 0x9b, 0xe8,
91521 + 0xdf, 0x5f, 0x83, 0xbb, 0x50, 0x66, 0xea, 0x6f, 0x03, 0xdf, 0x0a, 0xdf,
91522 + 0xc9, 0x73, 0xd6, 0x7f, 0xb0, 0xd5, 0x93, 0x35, 0xd2, 0xb3, 0x1e, 0xcf,
91523 + 0x3b, 0xdb, 0xbc, 0x75, 0xd9, 0x0d, 0x7e, 0xf1, 0x4e, 0x67, 0xaf, 0xfa,
91524 + 0x4e, 0x20, 0x33, 0xb6, 0x1b, 0xb2, 0xe3, 0xcf, 0xab, 0x17, 0x32, 0xc6,
91525 + 0x33, 0x0b, 0xd6, 0xaf, 0xe7, 0x89, 0xe7, 0xf7, 0x82, 0xdc, 0x77, 0xb0,
91526 + 0x39, 0x57, 0x60, 0xc2, 0x2f, 0xab, 0xef, 0x82, 0x60, 0x27, 0xdf, 0xb6,
91527 + 0xf2, 0x5d, 0xd0, 0xf5, 0xd7, 0x78, 0xa0, 0xcd, 0xf3, 0x51, 0x26, 0x78,
91528 + 0xd2, 0xa2, 0xdb, 0xec, 0x06, 0x3e, 0xe5, 0x5e, 0x6c, 0x32, 0xfe, 0xa0,
91529 + 0xf8, 0xe3, 0xb8, 0xdb, 0x19, 0x73, 0x0e, 0xf6, 0xf7, 0x22, 0xbe, 0x56,
91530 + 0xf7, 0x65, 0xe2, 0xbc, 0x7f, 0x93, 0x0c, 0xec, 0x56, 0x77, 0x27, 0x2e,
91531 + 0xac, 0xfa, 0xb6, 0x2b, 0x25, 0x4f, 0xd5, 0x64, 0x65, 0xf8, 0x27, 0x62,
91532 + 0x49, 0xe2, 0x26, 0xca, 0x0a, 0xfb, 0xdd, 0xcb, 0x79, 0xc6, 0x1f, 0x52,
91533 + 0xf3, 0x34, 0x11, 0xc3, 0xf1, 0x9e, 0x83, 0x19, 0x28, 0xcf, 0x72, 0xdd,
91534 + 0x91, 0x2e, 0xf0, 0xd9, 0x3f, 0x6b, 0x55, 0x76, 0x05, 0xe3, 0xb2, 0x8c,
91535 + 0xb6, 0x91, 0xef, 0xd3, 0xfa, 0x2c, 0xf6, 0xc3, 0x6d, 0xbc, 0x0f, 0x90,
91536 + 0x47, 0xd9, 0xdc, 0xc2, 0xfa, 0xb4, 0x7d, 0x5c, 0xc9, 0xc1, 0x23, 0xe0,
91537 + 0xfb, 0x1f, 0xa3, 0xee, 0x63, 0x48, 0x39, 0xc7, 0xf4, 0xca, 0xba, 0x93,
91538 + 0xdf, 0x1f, 0x90, 0x01, 0xc8, 0x05, 0xf3, 0x8f, 0x48, 0x51, 0xdd, 0x63,
91539 + 0x42, 0x3a, 0xc7, 0x67, 0xda, 0x7a, 0x5b, 0xfb, 0x53, 0xd2, 0xb2, 0x5b,
91540 + 0x7f, 0x4f, 0xe6, 0xcb, 0xd3, 0x2e, 0xdd, 0x6e, 0x6c, 0x85, 0x57, 0x0f,
91541 + 0x5d, 0x83, 0x37, 0xc2, 0x2b, 0x78, 0xc3, 0x1b, 0xeb, 0xf1, 0x36, 0x1f,
91542 + 0x6b, 0x78, 0x73, 0xf0, 0xb0, 0x86, 0x27, 0xe7, 0x7b, 0x25, 0x04, 0x39,
91543 + 0x0e, 0xd6, 0xe4, 0x18, 0xb8, 0xc7, 0xd3, 0x99, 0x09, 0x9e, 0x21, 0x2a,
91544 + 0x3e, 0x53, 0x0e, 0x29, 0xbf, 0x5c, 0xc7, 0xfa, 0xb5, 0x7e, 0xcf, 0x2f,
91545 + 0x59, 0xeb, 0x97, 0xdb, 0x7c, 0xfc, 0xf0, 0x77, 0xd3, 0x83, 0x0b, 0x6d,
91546 + 0x35, 0x3d, 0xb8, 0xf9, 0x37, 0xa4, 0x07, 0x6b, 0xe5, 0xb2, 0x5e, 0xa6,
91547 + 0x4c, 0xc8, 0x13, 0xd7, 0x8b, 0xf2, 0x44, 0x39, 0x22, 0x2f, 0x69, 0x4f,
91548 + 0x1b, 0x19, 0x3b, 0xc5, 0xaf, 0xa8, 0xef, 0x36, 0x26, 0x61, 0x83, 0xda,
91549 + 0x02, 0x73, 0x73, 0x31, 0x29, 0x2e, 0xbc, 0x4f, 0xc9, 0xf4, 0x53, 0x55,
91550 + 0xda, 0xa5, 0xeb, 0xcd, 0x7d, 0xb5, 0xcd, 0xcd, 0xaf, 0xb1, 0xb9, 0xf9,
91551 + 0x15, 0x9b, 0xdb, 0xaa, 0xe3, 0xa5, 0xbf, 0x8b, 0xcd, 0x8d, 0xd5, 0x9d,
91552 + 0xcb, 0xf8, 0x67, 0x32, 0x12, 0xc8, 0xf6, 0x44, 0x65, 0x07, 0xfc, 0xc8,
91553 + 0xf0, 0xd4, 0x4e, 0xf9, 0x97, 0x53, 0x93, 0xea, 0x8e, 0xd2, 0x5f, 0x38,
91554 + 0xc9, 0xf8, 0x03, 0x01, 0x57, 0x3e, 0x80, 0x78, 0x77, 0xbc, 0xa3, 0x41,
91555 + 0x76, 0xbc, 0x4b, 0x9d, 0x35, 0x9a, 0xd9, 0x40, 0xbb, 0x70, 0x17, 0x3c,
91556 + 0xe7, 0x58, 0x4e, 0x22, 0xc0, 0xfb, 0x6a, 0x8d, 0x32, 0x1e, 0x6b, 0x96,
91557 + 0x9d, 0xc0, 0x4e, 0x85, 0x1b, 0x1c, 0xf5, 0x2d, 0x79, 0x46, 0x9d, 0xe5,
91558 + 0xdc, 0xb2, 0xd9, 0x1b, 0x17, 0x7c, 0x68, 0x31, 0xe5, 0xab, 0xd5, 0x5b,
91559 + 0xd4, 0x77, 0xd1, 0x17, 0x4a, 0xd5, 0xd6, 0xd5, 0x79, 0x3e, 0xff, 0x7b,
91560 + 0xd4, 0x89, 0x81, 0x57, 0xf5, 0x77, 0x7f, 0x82, 0x8a, 0x9f, 0xc5, 0xb9,
91561 + 0x31, 0x75, 0xa7, 0xea, 0x4a, 0x90, 0xfc, 0x52, 0x71, 0x53, 0x3c, 0x1b,
91562 + 0x04, 0xc6, 0x99, 0x01, 0x92, 0xb6, 0x19, 0xf3, 0x69, 0xfc, 0x09, 0xfb,
91563 + 0xbf, 0x47, 0x9d, 0xed, 0x2e, 0x81, 0x37, 0xae, 0xda, 0xfb, 0xcd, 0xc7,
91564 + 0x88, 0xeb, 0x6b, 0xf7, 0x87, 0xaf, 0xc5, 0xf7, 0xde, 0xb7, 0x67, 0xfa,
91565 + 0x1c, 0x42, 0xef, 0x15, 0xe9, 0x18, 0x5c, 0x9d, 0xab, 0xad, 0xf7, 0x7f,
91566 + 0x29, 0x88, 0xf5, 0xf8, 0x7f, 0x0f, 0x88, 0xed, 0xac, 0xc3, 0x73, 0xe2,
91567 + 0xa8, 0x38, 0x30, 0x43, 0xfe, 0x96, 0xb1, 0x4e, 0xd3, 0x71, 0xdf, 0x9f,
91568 + 0x07, 0x3a, 0xcf, 0xd6, 0xc7, 0x81, 0xec, 0x23, 0xa2, 0xee, 0x63, 0xd4,
91569 + 0xfe, 0x0f, 0x0e, 0xf7, 0x77, 0x32, 0x81, 0x7b, 0x4a, 0x93, 0x12, 0x3c,
91570 + 0x3a, 0x2a, 0xa1, 0x69, 0xee, 0xa5, 0x67, 0xa4, 0x18, 0x73, 0xe5, 0x63,
91571 + 0xce, 0xea, 0xd8, 0xa4, 0xd3, 0x58, 0x4b, 0xfb, 0x23, 0x32, 0x78, 0xf2,
91572 + 0x31, 0x09, 0x1f, 0xe5, 0xbb, 0x55, 0xe7, 0x28, 0xb0, 0x47, 0x1b, 0x64,
91573 + 0x2e, 0xc6, 0xfd, 0xe4, 0xb0, 0x3a, 0x97, 0x5e, 0x1e, 0x7b, 0x2d, 0x5c,
91574 + 0x04, 0x56, 0xc8, 0x2b, 0xdb, 0x82, 0x74, 0x25, 0x96, 0x38, 0xbc, 0x99,
91575 + 0x3a, 0x85, 0x18, 0x33, 0x30, 0x3e, 0x17, 0x56, 0xf7, 0x83, 0x96, 0x63,
91576 + 0xac, 0x8b, 0xf8, 0xfd, 0x28, 0x71, 0x06, 0x6c, 0xc7, 0xa8, 0x44, 0x99,
91577 + 0x0f, 0x1e, 0xad, 0xe1, 0x0c, 0xda, 0x84, 0x41, 0x27, 0x26, 0xa1, 0x53,
91578 + 0xde, 0xdc, 0xf9, 0x8f, 0x95, 0x8c, 0x13, 0x3b, 0x25, 0x38, 0xcd, 0xe7,
91579 + 0xfa, 0x78, 0x88, 0xd8, 0x1d, 0xbe, 0xe1, 0xec, 0x67, 0xd1, 0x1f, 0xdf,
91580 + 0x65, 0xf4, 0x37, 0xba, 0xc8, 0x97, 0xff, 0xb6, 0xff, 0x43, 0x81, 0xb2,
91581 + 0xff, 0xff, 0x01, 0xe6, 0x8e, 0x9a, 0x21, 0xc0, 0x4e, 0x00, 0x00, 0x00 };
91582
91583 static const u32 bnx2_COM_b06FwData[(0x0/4) + 1] = { 0x0 };
91584 static const u32 bnx2_COM_b06FwRodata[(0x14/4) + 1] = {
91585 - 0x08000e7c, 0x08000ec4, 0x08000f04, 0x08000f50, 0x08000f84, 0x00000000
91586 + 0x08000e7c, 0x08000ec4, 0x08000ef8, 0x08000f44, 0x08000f78, 0x00000000
91587 };
91588
91589 static struct fw_info bnx2_com_fw_06 = {
91590 - /* Firmware version: 4.6.16 */
91591 + /* Firmware version: 4.4.2 */
91592 .ver_major = 0x4,
91593 - .ver_minor = 0x6,
91594 - .ver_fix = 0x10,
91595 + .ver_minor = 0x4,
91596 + .ver_fix = 0x2,
91597
91598 .start_addr = 0x080000f8,
91599
91600 .text_addr = 0x08000000,
91601 - .text_len = 0x4da4,
91602 + .text_len = 0x4ebc,
91603 .text_index = 0x0,
91604 .gz_text = bnx2_COM_b06FwText,
91605 .gz_text_len = sizeof(bnx2_COM_b06FwText),
91606 @@ -867,15 +872,15 @@
91607 .data_index = 0x0,
91608 .data = bnx2_COM_b06FwData,
91609
91610 - .sbss_addr = 0x08004de0,
91611 + .sbss_addr = 0x08004f00,
91612 .sbss_len = 0x38,
91613 .sbss_index = 0x0,
91614
91615 - .bss_addr = 0x08004e18,
91616 + .bss_addr = 0x08004f38,
91617 .bss_len = 0xbc,
91618 .bss_index = 0x0,
91619
91620 - .rodata_addr = 0x08004da4,
91621 + .rodata_addr = 0x08004ebc,
91622 .rodata_len = 0x14,
91623 .rodata_index = 0x0,
91624 .rodata = bnx2_COM_b06FwRodata,
91625 @@ -898,1219 +903,1232 @@
91626 };
91627
91628 static u8 bnx2_CP_b06FwText[] = {
91629 - 0x9d, 0xbc, 0x0d, 0x7c, 0x1b, 0xe5, 0x95, 0x2e, 0xfe, 0xcc, 0x48, 0xb2,
91630 - 0x65, 0x5b, 0xb6, 0xc7, 0x8e, 0x92, 0x28, 0xac, 0x37, 0xd1, 0xc4, 0x23,
91631 - 0x47, 0xc1, 0xa6, 0x8c, 0x12, 0x27, 0xa8, 0xac, 0x4a, 0x54, 0xc7, 0x24,
91632 - 0x4e, 0x48, 0xc1, 0x29, 0x69, 0x6b, 0xb8, 0x2d, 0xa8, 0xf9, 0xc2, 0x84,
91633 - 0x40, 0x43, 0xcb, 0xde, 0x6b, 0xee, 0xed, 0xae, 0x55, 0xdb, 0x49, 0x9c,
91634 - 0x44, 0x96, 0x6c, 0xc7, 0x24, 0xa1, 0xdb, 0xff, 0xa2, 0xc4, 0xce, 0x07,
91635 - 0x54, 0xb6, 0xd2, 0x96, 0xee, 0x86, 0xde, 0x74, 0xd1, 0x4d, 0x02, 0x18,
91636 - 0xca, 0x47, 0xda, 0xe5, 0x76, 0x69, 0x7f, 0xbd, 0xc5, 0x97, 0x42, 0x08,
91637 - 0x5b, 0x0a, 0xe9, 0xe7, 0x86, 0x7e, 0x30, 0xf7, 0x39, 0x23, 0x29, 0x31,
91638 - 0x2c, 0xdb, 0x76, 0xff, 0xfa, 0xfd, 0xe6, 0x27, 0xcd, 0xe8, 0xfd, 0x38,
91639 - 0xef, 0x79, 0xcf, 0x79, 0xce, 0x73, 0xde, 0x79, 0x67, 0xfc, 0x40, 0x39,
91640 - 0x0a, 0x9f, 0x4a, 0x1e, 0x1f, 0x6a, 0xde, 0xb6, 0x61, 0x69, 0xe8, 0x43,
91641 - 0x4b, 0xe5, 0xdc, 0xa9, 0x95, 0x38, 0xf1, 0x67, 0x7e, 0xfc, 0x7f, 0x6e,
91642 - 0xc1, 0xc2, 0x47, 0xe1, 0xd1, 0x58, 0xf8, 0xed, 0x00, 0xb4, 0x62, 0xff,
91643 - 0x72, 0xc0, 0xad, 0x46, 0xc6, 0x3a, 0x5a, 0x0c, 0xb8, 0x1d, 0x91, 0x6d,
91644 - 0xb7, 0x6f, 0x30, 0x80, 0x68, 0xa6, 0xd1, 0xbf, 0x1c, 0x7f, 0xb0, 0xe2,
91645 - 0x5e, 0x27, 0xe4, 0xfa, 0x5f, 0x46, 0x7e, 0xdf, 0xfd, 0xed, 0x6b, 0xf4,
91646 - 0x0b, 0x69, 0x07, 0xdc, 0x5a, 0x24, 0x0e, 0xad, 0x01, 0xee, 0x3a, 0xd6,
91647 - 0xf9, 0xca, 0x82, 0xaf, 0x28, 0xa8, 0x2a, 0xb6, 0x75, 0xde, 0xfa, 0xf6,
91648 - 0x02, 0x5f, 0xac, 0x2c, 0xa2, 0xe1, 0xf1, 0x2c, 0xda, 0x9b, 0x06, 0xba,
91649 - 0xad, 0x4a, 0x23, 0x04, 0xb7, 0x61, 0x74, 0x0c, 0x28, 0x9e, 0xf0, 0x96,
91650 - 0x25, 0xf0, 0x94, 0x1a, 0x88, 0x5f, 0x11, 0x41, 0xfb, 0x95, 0xe3, 0xe5,
91651 - 0x71, 0x67, 0xc4, 0x8d, 0xb6, 0xac, 0x3b, 0xfe, 0x17, 0x11, 0x03, 0x2b,
91652 - 0xb3, 0x46, 0x19, 0xaa, 0x34, 0xf4, 0x65, 0x5f, 0x77, 0xe7, 0xdb, 0x6b,
91653 - 0x2e, 0x7c, 0xdf, 0x56, 0x9b, 0xff, 0x9e, 0x15, 0x73, 0x46, 0x80, 0xed,
91654 - 0x09, 0xcb, 0x2a, 0x89, 0xdc, 0x7c, 0xb3, 0x1a, 0x31, 0x7c, 0x47, 0xb0,
91655 - 0x0c, 0xeb, 0x35, 0x7c, 0x71, 0x47, 0xf3, 0x2f, 0x94, 0x53, 0x23, 0x4d,
91656 - 0x88, 0x1f, 0x75, 0x20, 0xaa, 0x3d, 0xcb, 0xef, 0xb9, 0x73, 0x3b, 0xc2,
91657 - 0x4d, 0x38, 0x70, 0xf4, 0x22, 0xaf, 0x3b, 0xed, 0x6b, 0xbd, 0xfb, 0xe7,
91658 - 0xce, 0xbd, 0x25, 0xfc, 0x2c, 0x1e, 0x3c, 0x2a, 0xbf, 0xef, 0x40, 0x77,
91659 - 0x93, 0x82, 0xa9, 0x9b, 0x37, 0xc3, 0x61, 0x34, 0xa1, 0x6f, 0xbf, 0xe2,
91660 - 0xec, 0x69, 0x52, 0x11, 0xf5, 0xea, 0xc1, 0x18, 0x27, 0xc1, 0x69, 0x20,
91661 - 0x56, 0x1a, 0x09, 0x3b, 0xdf, 0x48, 0x44, 0x34, 0x87, 0x61, 0x59, 0xc1,
91662 - 0xd0, 0x6c, 0x38, 0x6a, 0x2c, 0xeb, 0x31, 0xd3, 0x03, 0xff, 0xa7, 0x9e,
91663 - 0x47, 0x7c, 0xb4, 0x1d, 0xaa, 0xf1, 0x3c, 0x7a, 0x46, 0x9f, 0xc7, 0x43,
91664 - 0x7b, 0xcb, 0x31, 0x35, 0x83, 0xe3, 0x4d, 0xf9, 0xf0, 0xed, 0x05, 0xd2,
91665 - 0xb7, 0xc8, 0xd1, 0xcc, 0xc3, 0x8d, 0x29, 0xc7, 0x39, 0x7e, 0x4b, 0x99,
91666 - 0x8b, 0xd6, 0xd4, 0xec, 0xcb, 0x65, 0xb6, 0xb3, 0x4c, 0xdf, 0xfb, 0xca,
91667 - 0xc4, 0x47, 0x23, 0xf8, 0x4e, 0x42, 0xc1, 0x96, 0x50, 0x15, 0xa2, 0x35,
91668 - 0x32, 0x5e, 0xcb, 0x3a, 0x6a, 0x9e, 0xb3, 0xa6, 0x34, 0xe9, 0x6b, 0x12,
91669 - 0xcf, 0xf2, 0xbf, 0x1d, 0xa1, 0x57, 0xad, 0x9c, 0x57, 0xda, 0xfb, 0x3c,
91670 - 0x6d, 0x68, 0x2d, 0xaf, 0x3b, 0x91, 0x4a, 0x20, 0x56, 0x15, 0xf9, 0x04,
91671 - 0xcf, 0x75, 0xf3, 0x2d, 0xc5, 0xed, 0x7e, 0x3b, 0xe1, 0xfe, 0x54, 0xa5,
91672 - 0xa1, 0xde, 0x57, 0x0d, 0x27, 0x9e, 0xa3, 0xcc, 0x27, 0xcc, 0xcd, 0x70,
91673 - 0x19, 0x5f, 0x10, 0x9b, 0xe3, 0xb8, 0x5e, 0xb4, 0x30, 0xbb, 0x58, 0x5f,
91674 - 0xda, 0xd5, 0xb0, 0x23, 0x65, 0x59, 0xbb, 0xcc, 0xe8, 0x87, 0xcb, 0x68,
91675 - 0x10, 0xa7, 0x13, 0xed, 0x70, 0x47, 0x02, 0xfe, 0xf3, 0x08, 0x63, 0x79,
91676 - 0xd6, 0x8b, 0x27, 0x12, 0x70, 0xb6, 0x2c, 0xa8, 0x43, 0x4f, 0x36, 0x82,
91677 - 0xeb, 0xb3, 0x26, 0x5a, 0xb3, 0x7f, 0xda, 0xca, 0x6e, 0x48, 0xf9, 0x39,
91678 - 0x86, 0x3f, 0x58, 0xf9, 0x31, 0xc8, 0xf8, 0xe4, 0x9b, 0xf3, 0x9a, 0xba,
91679 - 0x02, 0xbb, 0x47, 0x0c, 0xec, 0xe4, 0xfc, 0xad, 0x0a, 0xe5, 0xa2, 0x65,
91680 - 0xd0, 0xcd, 0xf3, 0x88, 0x60, 0x45, 0xd6, 0xe0, 0x9c, 0x46, 0xb0, 0x3c,
91681 - 0x55, 0xaf, 0x8d, 0x62, 0x21, 0xa2, 0xbe, 0xbc, 0x6d, 0xef, 0xe1, 0x78,
91682 - 0xd7, 0x07, 0xda, 0x51, 0x49, 0x1b, 0xc9, 0x2c, 0x09, 0xa3, 0x85, 0xfd,
91683 - 0xaf, 0xf9, 0x33, 0xfa, 0xbf, 0x89, 0xfd, 0xbf, 0xc5, 0xfe, 0x73, 0x76,
91684 - 0xff, 0x70, 0xae, 0xe6, 0xb9, 0x9b, 0xf6, 0xb8, 0x3b, 0xe3, 0x74, 0xae,
91685 - 0x4a, 0x79, 0xb1, 0x2b, 0x63, 0xd2, 0xe6, 0xe4, 0x2f, 0x1f, 0x76, 0x8c,
91686 - 0xd4, 0x61, 0xe7, 0x88, 0xee, 0x7b, 0x8a, 0xbf, 0x7b, 0xc7, 0xae, 0xc0,
91687 - 0xf6, 0x11, 0x05, 0x87, 0x8c, 0x2b, 0xd0, 0xc3, 0xdf, 0x07, 0x46, 0xe6,
91688 - 0xe2, 0xc1, 0x11, 0x07, 0xc2, 0x33, 0xa6, 0x8f, 0x43, 0xbe, 0xaf, 0x40,
91689 - 0x7c, 0xcc, 0x8f, 0x9e, 0xc4, 0xb3, 0xb6, 0x0e, 0x2b, 0x23, 0xdf, 0x2e,
91690 - 0xfa, 0x33, 0x7d, 0xc7, 0x8f, 0x0d, 0x09, 0x1f, 0x7a, 0x52, 0xe2, 0x07,
91691 - 0x6e, 0xda, 0xa6, 0xf8, 0xc1, 0xaf, 0x80, 0x2a, 0xb6, 0x9f, 0x2d, 0xfe,
91692 - 0xaf, 0xc0, 0xc9, 0x79, 0xdb, 0xc8, 0xff, 0x76, 0xa5, 0xc4, 0x26, 0xa4,
91693 - 0x4d, 0xb1, 0x0b, 0xf9, 0x5d, 0x4b, 0xbb, 0x2b, 0x87, 0xff, 0x70, 0x39,
91694 - 0x82, 0x0f, 0x68, 0x78, 0xad, 0x59, 0xae, 0xd3, 0xde, 0x43, 0x52, 0x66,
91695 - 0x10, 0x47, 0x32, 0xe2, 0xa7, 0x7e, 0xb4, 0x24, 0x26, 0xd9, 0x7e, 0x33,
91696 - 0xdb, 0x36, 0xf1, 0x4f, 0xd9, 0x26, 0xfc, 0x63, 0x36, 0x88, 0x7f, 0xa0,
91697 - 0x1e, 0xbf, 0x99, 0xf5, 0xe3, 0xd1, 0x6c, 0x1d, 0xbe, 0x91, 0xf5, 0xe1,
91698 - 0xeb, 0x9c, 0xbf, 0xaf, 0x65, 0xdb, 0x69, 0xfb, 0x1a, 0x8e, 0x67, 0x45,
91699 - 0xff, 0x25, 0x1c, 0x6f, 0x39, 0x7a, 0x47, 0xea, 0x83, 0xa7, 0x69, 0x5b,
91700 - 0xff, 0x60, 0xae, 0x46, 0xae, 0xb6, 0xd9, 0xb6, 0xc9, 0x5d, 0xbc, 0xbe,
91701 - 0x7b, 0xa4, 0x3e, 0x7a, 0xa5, 0x62, 0x59, 0x6a, 0xa8, 0x31, 0x7c, 0x4a,
91702 - 0x55, 0x31, 0xe5, 0xd5, 0xfd, 0x39, 0x55, 0xf7, 0x47, 0xe1, 0x42, 0x82,
91703 - 0xbe, 0x11, 0x9f, 0xa9, 0xa7, 0xe3, 0xb4, 0x29, 0xaf, 0x31, 0xca, 0xf1,
91704 - 0xe8, 0xfe, 0xb8, 0xaa, 0x61, 0x67, 0x4a, 0x3f, 0x10, 0x57, 0xbd, 0x88,
91705 - 0x67, 0xcb, 0xf1, 0xb3, 0x11, 0xbd, 0x3f, 0xae, 0xde, 0x88, 0x78, 0xad,
91706 - 0x65, 0x7d, 0x3d, 0x84, 0x6d, 0xb3, 0x23, 0x88, 0xce, 0x8c, 0x20, 0x36,
91707 - 0x37, 0x52, 0x87, 0x54, 0x0a, 0x78, 0x6b, 0xc0, 0xf0, 0xfd, 0x8b, 0xd2,
91708 - 0x8e, 0xbf, 0x6e, 0xd7, 0xfd, 0x7e, 0xb5, 0x31, 0x3e, 0xaa, 0x2e, 0xa1,
91709 - 0x4b, 0xc3, 0xef, 0x8b, 0xac, 0x44, 0x97, 0x7d, 0x4d, 0x81, 0x66, 0x78,
91710 - 0xd1, 0x9b, 0xfa, 0x30, 0x62, 0xde, 0xfa, 0x8e, 0x21, 0xb5, 0xfe, 0xa2,
91711 - 0xa9, 0xea, 0x93, 0xed, 0xaa, 0x65, 0xfd, 0x7c, 0xf1, 0x5b, 0x96, 0x7f,
91712 - 0x96, 0x65, 0x2d, 0x5a, 0x2c, 0x7d, 0xfa, 0x51, 0x13, 0x31, 0xb1, 0xd6,
91713 - 0x9e, 0xc3, 0x72, 0x9c, 0x1b, 0xa9, 0x65, 0x1f, 0x1a, 0xfe, 0xf7, 0x35,
91714 - 0x7a, 0x70, 0xb3, 0x5a, 0x8e, 0xd7, 0xc6, 0xca, 0xf1, 0x0a, 0xc7, 0xf3,
91715 - 0x8b, 0x11, 0x1f, 0x7e, 0x35, 0x62, 0x59, 0x9f, 0x32, 0xff, 0x0a, 0xc3,
91716 - 0xb5, 0x83, 0xf8, 0xc7, 0x09, 0x2f, 0x7e, 0x96, 0xd0, 0xf0, 0x6a, 0x22,
91717 - 0x7a, 0xef, 0x0c, 0xe8, 0xd1, 0x09, 0xe5, 0xf4, 0xed, 0x55, 0x68, 0x6c,
91718 - 0xaf, 0x52, 0xf4, 0xb6, 0x3d, 0xd0, 0x7d, 0x57, 0x2a, 0x5e, 0x9c, 0xcf,
91719 - 0x68, 0xf8, 0x49, 0xa6, 0x3e, 0xfc, 0xcf, 0xec, 0xf3, 0x37, 0xe6, 0x63,
91720 - 0x56, 0x6e, 0x96, 0xe8, 0x4d, 0x74, 0x44, 0x3d, 0xa7, 0xa8, 0xe7, 0x14,
91721 - 0xf5, 0x9c, 0xa2, 0x9e, 0x29, 0xc3, 0xa3, 0x29, 0xea, 0x99, 0xba, 0xfb,
91722 - 0x3a, 0x6d, 0xea, 0x6b, 0x9c, 0xc7, 0xe3, 0xf6, 0x3c, 0x86, 0x39, 0x5f,
91723 - 0x7f, 0x81, 0xbf, 0xb5, 0xb1, 0xf5, 0x59, 0xeb, 0xbf, 0x79, 0x65, 0x4c,
91724 - 0x0f, 0xcf, 0xcc, 0xe3, 0x97, 0x8c, 0xed, 0x3b, 0x56, 0x4c, 0x93, 0x71,
91725 - 0xc9, 0xf8, 0x6c, 0xfd, 0xf9, 0xb7, 0x29, 0x3b, 0x15, 0x94, 0x5b, 0xd6,
91726 - 0x5e, 0xb3, 0xf0, 0xbf, 0xb7, 0x38, 0xbe, 0x9b, 0x95, 0xbc, 0x5d, 0xfd,
91727 - 0x5d, 0x29, 0xf5, 0x1d, 0x8c, 0xaa, 0x2b, 0x79, 0xae, 0xc7, 0xa3, 0xf8,
91728 - 0xa8, 0xe3, 0xbd, 0xe7, 0xf7, 0x7a, 0x65, 0x3e, 0xfc, 0x97, 0xce, 0x69,
91729 - 0x8f, 0x76, 0x7f, 0x77, 0xf2, 0x5c, 0xc6, 0x22, 0xb6, 0x28, 0x36, 0xe0,
91730 - 0xa5, 0xbd, 0x5c, 0x53, 0xf8, 0x0f, 0x71, 0x35, 0xb2, 0x0d, 0xed, 0xcd,
91731 - 0x8f, 0xd8, 0x7d, 0x94, 0x24, 0xc5, 0x6f, 0x14, 0xbc, 0xf5, 0x61, 0x05,
91732 - 0xa7, 0x42, 0x06, 0x6d, 0xe6, 0x18, 0x71, 0x01, 0x28, 0x4d, 0xc2, 0xed,
91733 - 0x89, 0x44, 0x90, 0x18, 0x80, 0xbb, 0x2c, 0x12, 0xc6, 0xc2, 0x81, 0xfa,
91734 - 0xce, 0x73, 0xd0, 0x83, 0x03, 0x8a, 0xde, 0xce, 0x58, 0x62, 0x8e, 0x53,
91735 - 0x8f, 0x57, 0x2a, 0xba, 0xbf, 0x44, 0x81, 0x5b, 0x61, 0xb9, 0x40, 0xe6,
91736 - 0x18, 0x76, 0x66, 0xe5, 0x77, 0x18, 0x46, 0xe6, 0x37, 0xc5, 0xbe, 0x24,
91737 - 0xa6, 0xd0, 0xee, 0xcf, 0x71, 0xec, 0xba, 0x9f, 0xf8, 0xea, 0x76, 0x45,
91738 - 0x3a, 0x71, 0x38, 0x01, 0x77, 0x49, 0x64, 0x2b, 0x9e, 0x4c, 0x84, 0x67,
91739 - 0x16, 0xcb, 0x29, 0x2c, 0xe7, 0xcf, 0x4c, 0x97, 0xe5, 0xc7, 0x56, 0xd4,
91740 - 0x9b, 0x97, 0xa5, 0x3c, 0x79, 0x0c, 0x7b, 0x52, 0x52, 0x37, 0x62, 0xd7,
91741 - 0x75, 0xb2, 0x8f, 0xbe, 0x44, 0x7d, 0xdb, 0x0d, 0x8a, 0x1e, 0x7e, 0x98,
91742 - 0xf3, 0xd7, 0x83, 0xc6, 0xe8, 0x1b, 0xd0, 0xb5, 0x4e, 0xe4, 0x65, 0x59,
91743 - 0x90, 0xc9, 0xcb, 0x31, 0x3f, 0x03, 0xe5, 0xf6, 0x14, 0xac, 0x39, 0x06,
91744 - 0x3c, 0x3e, 0xc3, 0xf0, 0xbf, 0xe3, 0xa8, 0xc5, 0x01, 0xce, 0x4f, 0x1f,
91745 - 0x7d, 0x45, 0xf0, 0xec, 0xee, 0xbd, 0x7e, 0x78, 0x0c, 0x0b, 0x47, 0x42,
91746 - 0xb5, 0x78, 0x96, 0x58, 0x5b, 0x45, 0xdf, 0x7c, 0x5e, 0x43, 0x74, 0x4e,
91747 - 0x24, 0xac, 0xdc, 0x92, 0x1d, 0x2d, 0xcc, 0xc1, 0x8b, 0x35, 0x05, 0x19,
91748 - 0xdf, 0x77, 0xbd, 0x5a, 0xf9, 0xe0, 0xeb, 0x50, 0x3a, 0x52, 0x7a, 0x30,
91749 - 0x0e, 0x0b, 0xd5, 0x8b, 0x75, 0xff, 0x94, 0xf2, 0x96, 0x8a, 0x2a, 0x62,
91750 - 0x75, 0xf6, 0xfd, 0xe5, 0x1a, 0xb5, 0x31, 0xc6, 0x65, 0x07, 0x43, 0x5f,
91751 - 0x54, 0xd3, 0x4d, 0x36, 0x13, 0x74, 0xd9, 0xd7, 0x1c, 0x48, 0x3b, 0xa3,
91752 - 0x3e, 0x07, 0x7e, 0x6f, 0x45, 0xd7, 0xc9, 0xb5, 0x72, 0xc4, 0xda, 0x1b,
91753 - 0x7d, 0x4e, 0x34, 0x86, 0xb7, 0xd3, 0x07, 0xa7, 0xd6, 0xb5, 0xf0, 0xbf,
91754 - 0x80, 0x79, 0x1a, 0xf5, 0xfe, 0xed, 0x90, 0xdf, 0xef, 0xd0, 0x6e, 0x5a,
91755 - 0xa4, 0x2e, 0xcb, 0x88, 0x1d, 0xea, 0x9a, 0xf8, 0x78, 0x9f, 0x69, 0x59,
91756 - 0x87, 0xcd, 0x13, 0x4a, 0x4b, 0xea, 0x5d, 0x2b, 0xea, 0x8c, 0x47, 0x4b,
91757 - 0x23, 0x01, 0x73, 0x27, 0xc1, 0xd8, 0x11, 0x89, 0x2b, 0xd1, 0x6c, 0x9f,
91758 - 0x72, 0x7d, 0xb6, 0x5f, 0x59, 0x91, 0x95, 0xf2, 0x27, 0x94, 0xe5, 0x59,
91759 - 0x29, 0x5f, 0x2c, 0x1b, 0x66, 0x59, 0xe0, 0x48, 0x22, 0x10, 0x2c, 0x96,
91760 - 0x5f, 0xc1, 0xb2, 0xd7, 0x5f, 0x2a, 0x1b, 0xa6, 0xad, 0x9a, 0x9c, 0x97,
91761 - 0x0a, 0x6c, 0xd6, 0xf4, 0x68, 0x9c, 0x3a, 0x2f, 0x8d, 0xf8, 0x6e, 0x7d,
91762 - 0xdd, 0xc8, 0x05, 0x1d, 0x9c, 0x83, 0xa3, 0x1c, 0x59, 0x2b, 0x71, 0x6e,
91763 - 0x83, 0xe1, 0x42, 0xbf, 0x56, 0x8d, 0x0d, 0xe6, 0x6f, 0xad, 0xcd, 0xeb,
91764 - 0xe4, 0xbf, 0xbc, 0x6c, 0xb0, 0xcb, 0xd7, 0xb1, 0xbc, 0x6e, 0x1e, 0x2d,
91765 - 0x60, 0xeb, 0xa9, 0x04, 0x06, 0x1d, 0x11, 0x62, 0x7e, 0x73, 0xc0, 0xdf,
91766 - 0x03, 0x99, 0x1b, 0x3f, 0xae, 0xa7, 0x2c, 0x69, 0xe7, 0x74, 0xfc, 0x45,
91767 - 0xfc, 0x72, 0x19, 0xb9, 0x26, 0xe5, 0xa6, 0x68, 0xdf, 0x82, 0x75, 0x96,
91768 - 0x35, 0x64, 0x8a, 0x9d, 0xfb, 0x68, 0xe7, 0x33, 0xe1, 0xaf, 0xd5, 0xe3,
91769 - 0x69, 0x56, 0x38, 0x9c, 0x98, 0x81, 0xb4, 0xa6, 0x12, 0x73, 0xef, 0xf2,
91770 - 0xa0, 0x2a, 0xaa, 0x94, 0x90, 0xdb, 0x60, 0x42, 0xc6, 0x59, 0x89, 0xa8,
91771 - 0x53, 0x0f, 0xca, 0xdc, 0x95, 0x30, 0xe6, 0x35, 0xa8, 0xac, 0x77, 0xc9,
91772 - 0x97, 0x65, 0xcc, 0x7e, 0xfa, 0x72, 0xdc, 0xd6, 0x51, 0xeb, 0xa5, 0x71,
91773 - 0x4b, 0x7b, 0x45, 0x1d, 0xfd, 0x67, 0xea, 0x59, 0xd6, 0x8e, 0x4b, 0xba,
91774 - 0x2d, 0x89, 0x96, 0x51, 0xb7, 0xc7, 0x12, 0x81, 0xf0, 0xd3, 0x88, 0x2b,
91775 - 0x6d, 0x59, 0x27, 0xc6, 0x12, 0x52, 0xaf, 0x8f, 0xe5, 0xfb, 0x95, 0x95,
91776 - 0x97, 0xea, 0x4c, 0x15, 0xfc, 0x56, 0xc6, 0x23, 0xe3, 0xbb, 0x0e, 0x1b,
91777 - 0xf6, 0xea, 0xf1, 0x38, 0xc4, 0xae, 0xa2, 0x58, 0x6f, 0xea, 0x7e, 0xda,
91778 - 0x1f, 0xed, 0x06, 0xa8, 0x49, 0xc6, 0xdc, 0x79, 0x0c, 0x00, 0xee, 0xd8,
91779 - 0xdb, 0xce, 0xb1, 0x5a, 0x78, 0xcd, 0xac, 0xc5, 0x18, 0xbd, 0xb4, 0x3a,
91780 - 0x29, 0xd7, 0xa7, 0xcb, 0x18, 0x51, 0xd6, 0x1f, 0xf5, 0x97, 0xa1, 0x5c,
91781 - 0xe4, 0xfc, 0x1b, 0x35, 0x6f, 0xbf, 0x1f, 0x54, 0xff, 0x17, 0xd6, 0x98,
91782 - 0x37, 0x7f, 0xad, 0x3a, 0x29, 0x9c, 0xaf, 0x1d, 0x5a, 0xd2, 0xc3, 0x78,
91783 - 0x17, 0xb7, 0x2a, 0x0c, 0xbd, 0xfd, 0x82, 0xd2, 0x8d, 0x1b, 0x43, 0x7a,
91784 - 0xec, 0x87, 0x8a, 0x1e, 0x1d, 0x50, 0x0c, 0xfa, 0x61, 0x10, 0xab, 0xb2,
91785 - 0xef, 0xef, 0xeb, 0xfb, 0x50, 0x0f, 0x4b, 0x3f, 0xd2, 0xdf, 0x59, 0xf4,
91786 - 0xdb, 0x63, 0x2a, 0x8e, 0x47, 0xc6, 0xa6, 0x60, 0xb3, 0x3d, 0xa6, 0x15,
91787 - 0xb6, 0x7f, 0x7c, 0xd7, 0x74, 0x61, 0xe3, 0xde, 0x53, 0x0b, 0xc5, 0x40,
91788 - 0x36, 0x1d, 0x8d, 0xa2, 0xb7, 0xd9, 0x85, 0x0d, 0xa3, 0x37, 0xa9, 0x22,
91789 - 0x1b, 0xd4, 0xf9, 0x65, 0xf9, 0x6f, 0x85, 0xbc, 0xc5, 0x83, 0xf5, 0x59,
91790 - 0xce, 0x1d, 0x31, 0x74, 0xfd, 0x51, 0x99, 0xdb, 0x5a, 0x7e, 0xcb, 0xdc,
91791 - 0x7a, 0xf9, 0x2d, 0xf3, 0x3c, 0x8b, 0xdf, 0xd5, 0xf0, 0xcf, 0x12, 0x59,
91792 - 0x9a, 0x91, 0xd8, 0x0f, 0x77, 0x45, 0xa4, 0x0b, 0x77, 0x0d, 0x58, 0x56,
91793 - 0x7f, 0xc0, 0xb2, 0xca, 0x42, 0xe4, 0x59, 0x81, 0xc6, 0xf0, 0x95, 0x4a,
91794 - 0x09, 0xa6, 0xb4, 0x66, 0xf4, 0x1f, 0x2d, 0x89, 0x55, 0x47, 0x66, 0xd1,
91795 - 0xf7, 0x35, 0xfc, 0x6c, 0x49, 0x3b, 0x26, 0xc6, 0xa7, 0x8f, 0x21, 0x6f,
91796 - 0x67, 0xdf, 0x5e, 0x50, 0xb4, 0x33, 0x91, 0x5f, 0x64, 0xd7, 0xfb, 0xd3,
91797 - 0xf4, 0xcb, 0xb8, 0x86, 0x18, 0xfd, 0x83, 0x32, 0xd5, 0xa2, 0xe7, 0x12,
91798 - 0xa7, 0xfe, 0xa0, 0xfa, 0x17, 0x1b, 0x3b, 0x13, 0xef, 0x5a, 0x0c, 0xa7,
91799 - 0xfc, 0xe4, 0x1a, 0xef, 0xcd, 0xbc, 0xd7, 0x6e, 0xca, 0x6c, 0xbb, 0x91,
91800 - 0xb2, 0x17, 0x1b, 0xef, 0xcc, 0xac, 0xb0, 0xc7, 0x9c, 0x66, 0xe1, 0x4d,
91801 - 0x7b, 0x45, 0xa7, 0xa2, 0x03, 0x0b, 0xc7, 0xcd, 0xeb, 0x88, 0x15, 0xaf,
91802 - 0x5b, 0x8e, 0x59, 0xd2, 0x46, 0x97, 0xd2, 0x4a, 0x7b, 0x8a, 0x3b, 0x4b,
91803 - 0x41, 0x4e, 0xad, 0x95, 0x44, 0xa2, 0xca, 0x5a, 0x5b, 0xff, 0xad, 0xca,
91804 - 0xca, 0xd1, 0xe9, 0x6d, 0x77, 0xd1, 0x77, 0x1f, 0x57, 0xf3, 0xf3, 0x7d,
91805 - 0xde, 0x1e, 0x43, 0x5e, 0x7e, 0x3f, 0xda, 0x53, 0xd2, 0x8e, 0xe8, 0x35,
91806 - 0xef, 0x6f, 0xed, 0x12, 0x23, 0x2e, 0xc9, 0x9c, 0xe7, 0x1e, 0x97, 0x31,
91807 - 0x61, 0xc9, 0x7b, 0xf0, 0xe3, 0x7a, 0xe2, 0x47, 0xf4, 0x3f, 0xc4, 0x8f,
91808 - 0xa5, 0x7f, 0xa2, 0xec, 0x59, 0xca, 0x21, 0x3c, 0x45, 0xe2, 0x9e, 0xf0,
91809 - 0x16, 0xe1, 0x2b, 0x41, 0xca, 0x25, 0xfc, 0xa5, 0x68, 0x1b, 0x96, 0xf5,
91810 - 0x4d, 0x73, 0x01, 0x62, 0xb5, 0xfa, 0x20, 0x50, 0x87, 0x41, 0xca, 0xea,
91811 - 0x48, 0x22, 0xce, 0x71, 0x52, 0xd7, 0xea, 0x75, 0x0e, 0xa8, 0x4d, 0x0e,
91812 - 0x74, 0xe3, 0x55, 0xd3, 0xe8, 0xdf, 0x8c, 0xbf, 0x44, 0x8f, 0xd7, 0xc2,
91813 - 0x61, 0x33, 0x48, 0x5c, 0x2a, 0x47, 0x67, 0x13, 0x27, 0x62, 0xad, 0x17,
91814 - 0x43, 0xa9, 0x78, 0x07, 0x61, 0x83, 0x31, 0xec, 0xd9, 0x4f, 0x26, 0x02,
91815 - 0x7a, 0xfb, 0x56, 0xa6, 0x40, 0xab, 0x06, 0xdc, 0xf0, 0x4b, 0x2a, 0xc4,
91816 - 0x98, 0xf1, 0x75, 0xc6, 0xf9, 0x4d, 0xe6, 0x15, 0xd4, 0x6d, 0x1f, 0x6d,
91817 - 0x48, 0xa5, 0xbd, 0x48, 0x3f, 0x41, 0xf2, 0x19, 0xa9, 0xcb, 0xb8, 0xd0,
91818 - 0xa0, 0xe0, 0x86, 0x06, 0xda, 0x27, 0x79, 0xd1, 0xe7, 0x43, 0x4e, 0xfb,
91819 - 0xff, 0x44, 0xb6, 0x31, 0x7a, 0xb3, 0xfa, 0x23, 0x0b, 0x33, 0xed, 0x36,
91820 - 0xb4, 0xa8, 0x4a, 0xb9, 0xff, 0x28, 0x27, 0x30, 0x21, 0x5c, 0xad, 0xd2,
91821 - 0xf8, 0x0d, 0xc6, 0xbd, 0x52, 0xa7, 0x0a, 0x15, 0xc3, 0xf1, 0x59, 0xe5,
91822 - 0xb4, 0xe1, 0xd2, 0x88, 0x8e, 0xbb, 0x46, 0x2b, 0xe1, 0x18, 0xd6, 0x2f,
91823 - 0xae, 0x74, 0x20, 0x56, 0x22, 0xfc, 0x70, 0xb4, 0x16, 0x35, 0xfb, 0xac,
91824 - 0x6e, 0x77, 0xc4, 0xb2, 0x3c, 0x4b, 0x22, 0xb8, 0xf7, 0xa8, 0x06, 0x75,
91825 - 0x9f, 0x0b, 0x15, 0xcc, 0x43, 0xd6, 0x99, 0x7d, 0xb8, 0x8f, 0xfc, 0x6e,
91826 - 0x4e, 0x32, 0x88, 0xd5, 0xc4, 0xa2, 0x8b, 0xa9, 0xb6, 0xd6, 0x17, 0x12,
91827 - 0x0d, 0xdb, 0xe6, 0x38, 0x84, 0xfb, 0xaf, 0xc1, 0xe6, 0xec, 0x1a, 0xdc,
91828 - 0xc9, 0xd8, 0xf9, 0x9c, 0x81, 0xee, 0x39, 0xf4, 0xd7, 0x3b, 0xc9, 0xff,
91829 - 0x36, 0xa6, 0xd6, 0x61, 0x63, 0x76, 0x1b, 0xff, 0xeb, 0xc0, 0xdd, 0x3c,
91830 - 0x36, 0xa5, 0xc4, 0xbf, 0x3f, 0x8d, 0x4d, 0xd9, 0x7a, 0xc4, 0x46, 0x37,
91831 - 0x62, 0x2b, 0x39, 0xc1, 0x5d, 0xa3, 0x5e, 0xea, 0xb6, 0x0d, 0x1b, 0xb2,
91832 - 0x6d, 0xb8, 0x97, 0x63, 0xb9, 0x97, 0xf3, 0xa1, 0x26, 0xb7, 0xd2, 0xc7,
91833 - 0x3c, 0xf0, 0x0e, 0x2f, 0xc5, 0x7d, 0xa3, 0xd7, 0x61, 0x0b, 0xe3, 0xe4,
91834 - 0xed, 0x4b, 0xae, 0x43, 0xf7, 0xe8, 0x7d, 0xe8, 0x4a, 0x19, 0x5d, 0x73,
91835 - 0x98, 0x6a, 0xbd, 0xb5, 0xe4, 0x3e, 0xdc, 0x43, 0x39, 0xb6, 0xed, 0xb5,
91836 - 0x50, 0xb6, 0x68, 0xb1, 0x6a, 0xd4, 0xc4, 0x2d, 0x9f, 0x21, 0xb1, 0xf9,
91837 - 0xc0, 0xad, 0x7d, 0xc6, 0xee, 0x02, 0xb6, 0x38, 0x51, 0x62, 0x28, 0x62,
91838 - 0xa3, 0xf9, 0xeb, 0x89, 0xbf, 0xc1, 0xe6, 0x51, 0x17, 0xee, 0x18, 0xed,
91839 - 0x52, 0x56, 0x8b, 0xad, 0xb8, 0x54, 0xce, 0x67, 0x94, 0xd8, 0xd7, 0xaa,
91840 - 0xb4, 0x8c, 0xda, 0xf3, 0xac, 0x79, 0x23, 0x5d, 0xca, 0xba, 0xec, 0x9d,
91841 - 0x0e, 0x94, 0xcb, 0x5c, 0x5c, 0x83, 0xf1, 0xa6, 0xaf, 0x58, 0xe9, 0xfc,
91842 - 0x7c, 0xa6, 0xe9, 0x3e, 0x6e, 0x5f, 0xe4, 0x57, 0x9f, 0xf4, 0x2d, 0xd0,
91843 - 0xbb, 0x0e, 0xa8, 0xc2, 0x2b, 0xdd, 0xc8, 0xd9, 0xf3, 0x59, 0xc2, 0x7e,
91844 - 0x6a, 0x70, 0xc4, 0x9b, 0xe7, 0x12, 0xf3, 0xd8, 0x97, 0x95, 0x72, 0x71,
91845 - 0xac, 0x94, 0x9b, 0xe3, 0x99, 0x93, 0xf4, 0xe1, 0x7e, 0xea, 0xa7, 0x8b,
91846 - 0x73, 0xd4, 0x45, 0xbd, 0x7c, 0x2e, 0x75, 0x8a, 0x31, 0x62, 0x1b, 0x3e,
91847 - 0x57, 0xe8, 0xa7, 0x2f, 0x5b, 0x8a, 0x72, 0xa3, 0x0f, 0x8f, 0x68, 0x25,
91848 - 0xf4, 0x31, 0xe1, 0x19, 0x07, 0x6e, 0x3d, 0x6c, 0xac, 0xe3, 0x18, 0xbe,
91849 - 0xc4, 0x36, 0x44, 0xae, 0x46, 0xad, 0x06, 0xf9, 0xb2, 0x3d, 0xc4, 0xec,
91850 - 0x72, 0xe3, 0x37, 0xd6, 0x23, 0xde, 0x76, 0xbb, 0x6c, 0x15, 0xcb, 0x3e,
91851 - 0x3f, 0xe0, 0xc7, 0x8d, 0xb4, 0xef, 0xb2, 0x64, 0x94, 0x7a, 0x77, 0x93,
91852 - 0x53, 0xb5, 0x52, 0xe7, 0x9c, 0x63, 0xea, 0xf5, 0x0e, 0xda, 0xb3, 0x33,
91853 - 0xb9, 0x86, 0xf3, 0xa0, 0xa1, 0x32, 0xd9, 0xc7, 0x79, 0xf0, 0xc2, 0x9d,
91854 - 0x6c, 0x47, 0x27, 0xe5, 0x72, 0x25, 0xd7, 0x71, 0x2e, 0xea, 0xe0, 0x49,
91855 - 0x76, 0x70, 0x2e, 0x80, 0xbb, 0xa8, 0xcb, 0xfb, 0x42, 0xbf, 0x56, 0x7a,
91856 - 0x6b, 0x65, 0x18, 0x6d, 0x9c, 0xbf, 0x28, 0x36, 0xa7, 0xea, 0xc3, 0x3b,
91857 - 0x24, 0xee, 0x3b, 0x99, 0x90, 0x19, 0x3f, 0x26, 0x17, 0xa6, 0xf5, 0x1b,
91858 - 0x3d, 0xfc, 0x5d, 0x94, 0xb3, 0x88, 0xe3, 0x22, 0xa7, 0xc4, 0xd7, 0xa2,
91859 - 0x9c, 0x2e, 0x94, 0x19, 0xcf, 0x5a, 0x0f, 0x7b, 0xe1, 0x77, 0xb1, 0x6c,
91860 - 0x39, 0xcb, 0xae, 0xa6, 0x9c, 0xab, 0x29, 0xff, 0xbc, 0xe4, 0xa7, 0xd1,
91861 - 0x4d, 0x39, 0xe7, 0x0c, 0xbb, 0xc9, 0x51, 0x75, 0xdc, 0x4f, 0xdd, 0x1f,
91862 - 0x48, 0x95, 0xa1, 0x9a, 0xf3, 0xfc, 0x39, 0xfe, 0xde, 0x41, 0x3f, 0x7a,
91863 - 0x7e, 0xd0, 0xc2, 0x99, 0x90, 0x86, 0x41, 0xad, 0x0c, 0xbd, 0xc1, 0xad,
91864 - 0xe4, 0xe5, 0x32, 0x57, 0xcc, 0xa7, 0x8c, 0x0a, 0xc6, 0x75, 0xc4, 0x5d,
91865 - 0xcd, 0x3a, 0xb6, 0x07, 0xdd, 0x48, 0x7b, 0x11, 0x75, 0x19, 0x51, 0xda,
91866 - 0xb8, 0x0b, 0x03, 0x9a, 0x02, 0x17, 0xf1, 0xb0, 0x94, 0xfe, 0xb4, 0x93,
91867 - 0x71, 0xd7, 0x15, 0x91, 0xff, 0x68, 0x27, 0xe4, 0x60, 0xd5, 0x11, 0x23,
91868 - 0xfe, 0x82, 0x12, 0x68, 0x73, 0xa9, 0xf7, 0x51, 0x47, 0x15, 0x38, 0x33,
91869 - 0xf8, 0x25, 0x6c, 0x64, 0x5f, 0x7d, 0x29, 0x0f, 0x73, 0x93, 0xbf, 0x53,
91870 - 0x72, 0x36, 0x7e, 0x7a, 0x90, 0x1c, 0x79, 0xdc, 0x9a, 0x67, 0x88, 0xdd,
91871 - 0x44, 0x70, 0xcf, 0xd1, 0x2a, 0x0c, 0x0e, 0x5e, 0x87, 0x6d, 0x2c, 0xb7,
91872 - 0x2b, 0x55, 0x0d, 0x63, 0x68, 0x99, 0x5d, 0x67, 0x84, 0xfe, 0x35, 0x90,
91873 - 0xbc, 0x0f, 0x2b, 0x53, 0xf5, 0xc1, 0xa3, 0x4a, 0x8c, 0x3a, 0xf4, 0xa2,
91874 - 0x3f, 0xb9, 0xd1, 0xd6, 0x69, 0x62, 0x5f, 0x27, 0xb6, 0x1e, 0xbd, 0x02,
91875 - 0x7b, 0xf6, 0x6d, 0xc1, 0x5d, 0x47, 0x99, 0xbf, 0xda, 0xb6, 0xac, 0xa2,
91876 - 0x77, 0xdf, 0x75, 0xca, 0x06, 0xb6, 0xb7, 0x7b, 0x98, 0xf6, 0x4c, 0x9b,
91877 - 0xbe, 0x7f, 0xaf, 0x91, 0x5b, 0xe6, 0xd8, 0xa2, 0xf8, 0x6b, 0xaf, 0x43,
91878 - 0x97, 0x6d, 0x7b, 0x79, 0xbd, 0xed, 0xc8, 0xce, 0x67, 0x9e, 0xf3, 0xb7,
91879 - 0xd6, 0xa3, 0xde, 0x52, 0x7b, 0x7e, 0x55, 0xea, 0xad, 0x25, 0xc1, 0xdc,
91880 - 0xbf, 0x96, 0xb9, 0x57, 0xc1, 0x5e, 0x7a, 0xb3, 0x8b, 0xc9, 0x1b, 0xbd,
91881 - 0xc8, 0x68, 0x41, 0xea, 0xa3, 0x38, 0x0f, 0x0d, 0x05, 0x7b, 0x79, 0x8b,
91882 - 0x65, 0x6c, 0x5b, 0x7e, 0x9f, 0x2f, 0xc8, 0xfc, 0xb6, 0xa3, 0x86, 0xf1,
91883 - 0x75, 0x43, 0x68, 0x9d, 0x72, 0xaf, 0x76, 0x69, 0xce, 0x7c, 0xc5, 0x39,
91884 - 0x93, 0x3c, 0xd1, 0x6e, 0x2b, 0xf1, 0x25, 0xdb, 0x76, 0xaf, 0xcf, 0x36,
91885 - 0xa3, 0x73, 0x74, 0x7a, 0xfb, 0xc5, 0x3a, 0x65, 0x9c, 0x8b, 0xe2, 0x3c,
91886 - 0xeb, 0xfd, 0x82, 0x65, 0x81, 0x45, 0x45, 0x2c, 0xbb, 0xb3, 0xd0, 0xff,
91887 - 0x41, 0x8b, 0x31, 0xc9, 0xe9, 0x32, 0x1c, 0x18, 0x09, 0xfe, 0x57, 0x25,
91888 - 0x5e, 0xeb, 0xa4, 0xcc, 0x0a, 0xb1, 0xe4, 0xef, 0xac, 0x3d, 0xeb, 0x64,
91889 - 0x5e, 0x3e, 0x42, 0x43, 0x86, 0xe2, 0xba, 0xe4, 0xb3, 0x6b, 0xb0, 0x3e,
91890 - 0x25, 0xb2, 0xb6, 0x63, 0x43, 0xca, 0x96, 0xcb, 0x5f, 0x94, 0xab, 0x8f,
91891 - 0x36, 0xa3, 0x25, 0x77, 0xdb, 0x32, 0xb5, 0xd3, 0xae, 0xee, 0xd9, 0xab,
91892 - 0xe2, 0xe9, 0xd0, 0x26, 0xc5, 0x3f, 0x53, 0xe2, 0x70, 0x3d, 0xba, 0xf6,
91893 - 0xca, 0xb7, 0x9f, 0x7c, 0x37, 0xa6, 0x4c, 0xcd, 0x1c, 0x60, 0xb9, 0x65,
91894 - 0x58, 0xbf, 0xb7, 0x16, 0x73, 0x38, 0xd6, 0xdb, 0xcd, 0xff, 0xa2, 0xbc,
91895 - 0x33, 0x43, 0xc6, 0xb3, 0xa2, 0x10, 0xcb, 0xeb, 0x71, 0xdf, 0x5e, 0xf1,
91896 - 0x21, 0xf9, 0xdd, 0x82, 0xde, 0xa5, 0xf5, 0x85, 0x38, 0xff, 0x37, 0x9c,
91897 - 0x97, 0x2e, 0xe5, 0x06, 0xe2, 0x42, 0x8c, 0xb8, 0x40, 0x9b, 0x52, 0xda,
91898 - 0x89, 0x0b, 0xd7, 0x17, 0x70, 0xc1, 0x43, 0x5c, 0x58, 0x93, 0x7d, 0x9b,
91899 - 0xf2, 0x88, 0x2f, 0xbe, 0x57, 0x9e, 0xbb, 0x29, 0xcf, 0xb1, 0xd0, 0x1c,
91900 - 0xc0, 0x96, 0x67, 0x19, 0x79, 0x4c, 0x2d, 0xe7, 0xd0, 0x62, 0x7c, 0x50,
91901 - 0x94, 0x11, 0x5b, 0xcf, 0xcb, 0x28, 0xb3, 0xd8, 0x94, 0x45, 0xb9, 0x7f,
91902 - 0x8f, 0x06, 0x7b, 0x7d, 0xe0, 0xb2, 0x3c, 0xeb, 0xf7, 0xbe, 0xcb, 0x1c,
91903 - 0x41, 0x7e, 0x13, 0x2f, 0x9a, 0xeb, 0x89, 0x73, 0xcb, 0x88, 0x7b, 0x2e,
91904 - 0x8e, 0x4b, 0xb0, 0x4e, 0x64, 0x73, 0xd1, 0x2f, 0xa4, 0x6d, 0xd1, 0xc9,
91905 - 0x52, 0x47, 0x7e, 0x1e, 0x8a, 0xf3, 0xec, 0xa4, 0x1f, 0xbb, 0x51, 0x1d,
91906 - 0xd1, 0xa3, 0x37, 0x39, 0x64, 0xce, 0x88, 0xf2, 0x43, 0xed, 0x85, 0xbe,
91907 - 0xfe, 0xbb, 0xd2, 0x50, 0xd3, 0x4f, 0x39, 0x4f, 0x28, 0xb7, 0x70, 0x5c,
91908 - 0xfe, 0xd2, 0xaa, 0xa8, 0x27, 0x12, 0xe8, 0x48, 0xbc, 0x2f, 0x36, 0xde,
91909 - 0x90, 0xcd, 0xf3, 0x4b, 0x75, 0x28, 0x6e, 0x95, 0xd3, 0xf6, 0x9d, 0x46,
91910 - 0xe0, 0xe2, 0x6a, 0xf6, 0x30, 0xef, 0xa0, 0xf0, 0x19, 0x93, 0x6d, 0x15,
91911 - 0xfb, 0xaa, 0x23, 0x96, 0x84, 0x0a, 0x76, 0xb0, 0x46, 0x61, 0xde, 0xd0,
91912 - 0x16, 0xb5, 0xed, 0x61, 0x17, 0xf5, 0x75, 0x42, 0xf9, 0x98, 0x70, 0x66,
91913 - 0x9b, 0x63, 0xc4, 0x95, 0x55, 0xc4, 0x95, 0xea, 0xa4, 0x12, 0xf5, 0x46,
91914 - 0x1a, 0xb7, 0xd5, 0x20, 0xd0, 0xf6, 0x28, 0xfb, 0xac, 0x21, 0xcf, 0xbc,
91915 - 0x89, 0xb1, 0x36, 0xc9, 0x3e, 0x57, 0xb1, 0xcf, 0xb5, 0xd9, 0x2d, 0x6c,
91916 - 0x57, 0xb0, 0x55, 0xc5, 0x9c, 0x7d, 0x70, 0x7b, 0x69, 0x07, 0x23, 0x0d,
91917 - 0x4e, 0x84, 0x17, 0xff, 0x02, 0x98, 0x81, 0x98, 0xca, 0xfc, 0x7d, 0x5e,
91918 - 0x52, 0x72, 0xa9, 0x03, 0xb7, 0x2e, 0xcb, 0x08, 0x96, 0x6a, 0xf0, 0x0c,
91919 - 0x7b, 0x25, 0x1e, 0xa1, 0x2f, 0x54, 0xa7, 0xec, 0xb1, 0xf1, 0x56, 0x45,
91920 - 0xd9, 0x3e, 0x05, 0x57, 0x85, 0xbe, 0xae, 0xa4, 0x67, 0xe6, 0x31, 0x5f,
91921 - 0xa5, 0x3e, 0x7a, 0x26, 0x04, 0x1b, 0xd3, 0xc4, 0xc6, 0x63, 0x4a, 0x7e,
91922 - 0x3d, 0x86, 0x7e, 0x9f, 0x42, 0xbc, 0x2a, 0x22, 0x6b, 0x20, 0x81, 0xce,
91923 - 0x0f, 0x29, 0xf7, 0x11, 0x0b, 0x5d, 0x8c, 0x43, 0x1e, 0x62, 0xa3, 0xc4,
91924 - 0xe9, 0xf4, 0xad, 0x89, 0x81, 0x3a, 0xf4, 0xd3, 0xb7, 0x37, 0x1e, 0x3d,
91925 - 0x75, 0x8b, 0x07, 0xb5, 0xfc, 0xf6, 0xf2, 0x98, 0xc5, 0xc3, 0x4d, 0x5f,
91926 - 0x76, 0xc3, 0x31, 0x20, 0x7c, 0xaf, 0x89, 0xb1, 0xca, 0x83, 0xf2, 0x01,
91927 - 0x13, 0x5b, 0x28, 0x4f, 0xe9, 0x50, 0x33, 0xe3, 0x09, 0xfd, 0x3c, 0x55,
91928 - 0x83, 0xeb, 0x07, 0x97, 0x60, 0x93, 0x8d, 0x5f, 0xb5, 0x38, 0x3b, 0xb8,
91929 - 0xd4, 0xc6, 0x8d, 0x87, 0x52, 0x33, 0xf0, 0xce, 0xde, 0x6b, 0x6c, 0x8c,
91930 - 0x1b, 0x64, 0x6c, 0xf6, 0xed, 0x0b, 0xa3, 0x8b, 0x6d, 0x7a, 0xf7, 0x5d,
91931 - 0x8b, 0xfb, 0x8e, 0xfa, 0xa8, 0x23, 0x83, 0x71, 0x40, 0x7d, 0xd7, 0xff,
91932 - 0x49, 0xb1, 0xf3, 0xe9, 0xd8, 0x2f, 0x73, 0x2d, 0x75, 0x32, 0x34, 0x56,
91933 - 0xf9, 0xed, 0xb4, 0xb9, 0x70, 0x5e, 0x47, 0x79, 0x9d, 0x5c, 0x4d, 0x9d,
91934 - 0xdc, 0x94, 0xa5, 0x39, 0x0c, 0x3b, 0x39, 0xd7, 0xe4, 0x10, 0x35, 0xb5,
91935 - 0xf4, 0xcb, 0x12, 0x1e, 0xb4, 0xff, 0xd1, 0xbf, 0x60, 0x6c, 0xcf, 0x71,
91936 - 0x3e, 0xf9, 0xdb, 0x94, 0xf9, 0x94, 0xf8, 0xe9, 0x20, 0xe6, 0x2a, 0xd4,
91937 - 0xef, 0xff, 0x02, 0x66, 0xe7, 0x73, 0x9b, 0xa2, 0xae, 0x54, 0x8e, 0xbf,
91938 - 0x25, 0x91, 0xb3, 0x39, 0x3d, 0x33, 0x22, 0x5d, 0xe5, 0x7f, 0x1b, 0x8f,
91939 - 0x92, 0x73, 0x27, 0xc5, 0x67, 0xbd, 0xb4, 0xe7, 0x26, 0xea, 0x4b, 0x63,
91940 - 0xec, 0x30, 0x89, 0x73, 0xb3, 0xe0, 0xe2, 0x38, 0x36, 0x51, 0x3f, 0x1e,
91941 - 0x8e, 0x63, 0x2b, 0xcb, 0xdd, 0xc5, 0xff, 0xee, 0x3a, 0x5a, 0xcb, 0xc3,
91942 - 0xcb, 0x63, 0x16, 0x8f, 0x9f, 0x12, 0xb3, 0x9a, 0x69, 0xc7, 0x0e, 0x94,
91943 - 0x0c, 0xab, 0x78, 0xca, 0x54, 0x70, 0xa1, 0x89, 0xfd, 0x35, 0x5c, 0xc6,
91944 - 0x3a, 0x89, 0x65, 0xde, 0xe4, 0x97, 0x88, 0x73, 0x7e, 0xac, 0x23, 0x27,
91945 - 0xe8, 0xdc, 0xab, 0xc1, 0x15, 0xca, 0x30, 0x67, 0x12, 0x19, 0x4e, 0x14,
91946 - 0x38, 0xe6, 0x3c, 0xe6, 0x3a, 0x8d, 0x61, 0xda, 0x90, 0xb6, 0xd9, 0xb6,
91947 - 0xa1, 0x38, 0xe3, 0x73, 0x90, 0xb9, 0x7e, 0xde, 0x76, 0x5b, 0xde, 0x63,
91948 - 0x47, 0xf4, 0x31, 0x8e, 0x67, 0x4e, 0x44, 0xf7, 0xdf, 0x42, 0x5f, 0x10,
91949 - 0xce, 0x57, 0x9a, 0x04, 0x0e, 0x0c, 0xb6, 0xa3, 0x9a, 0x36, 0xe3, 0x5d,
91950 - 0x7c, 0x14, 0xa9, 0xda, 0x7e, 0xdb, 0x56, 0xf3, 0x6d, 0x97, 0x45, 0x2b,
91951 - 0x23, 0x8d, 0x31, 0x69, 0x7b, 0xbc, 0xd0, 0xf6, 0x0a, 0xb6, 0x9d, 0x60,
91952 - 0xdb, 0x2b, 0xff, 0x5d, 0xdb, 0xd3, 0xe3, 0x5d, 0x4f, 0x21, 0x2e, 0x4b,
91953 - 0xde, 0x5c, 0xc4, 0xed, 0x22, 0xc7, 0xf8, 0x8d, 0xf7, 0x32, 0x4e, 0xee,
91954 - 0x90, 0xb9, 0xf3, 0xe5, 0x7d, 0xf6, 0xbd, 0xd8, 0x7c, 0xb9, 0xad, 0x3d,
91955 - 0xc5, 0x18, 0x6f, 0xd6, 0x4c, 0x6b, 0x6b, 0x0e, 0xff, 0xff, 0x70, 0x4a,
91956 - 0xb8, 0x44, 0x3b, 0x2c, 0xca, 0xfa, 0xac, 0xa1, 0x77, 0x2d, 0x73, 0x18,
91957 - 0xdb, 0x2e, 0x32, 0xd7, 0xb9, 0xf1, 0x52, 0x5f, 0xb2, 0x36, 0xd2, 0x8e,
91958 - 0x85, 0x03, 0x7a, 0xe7, 0x2e, 0xf2, 0xd1, 0xc3, 0x21, 0x3d, 0xfa, 0x2d,
91959 - 0xe8, 0xf1, 0x52, 0xe5, 0x25, 0x94, 0x4c, 0x9c, 0xc5, 0x60, 0xf6, 0x47,
91960 - 0x92, 0x6f, 0xb2, 0x4d, 0xb7, 0xe2, 0x99, 0xe8, 0x43, 0x8c, 0xf5, 0xdc,
91961 - 0xac, 0xe7, 0x1e, 0x80, 0xbb, 0x92, 0xf5, 0xc6, 0x07, 0xe2, 0x96, 0x8b,
91962 - 0x5c, 0x50, 0x8d, 0xe8, 0x1d, 0x95, 0x8a, 0x11, 0xdb, 0xc4, 0xb6, 0xd7,
91963 - 0x30, 0x96, 0x95, 0x27, 0xbb, 0xc9, 0x03, 0x74, 0xdf, 0x97, 0x55, 0xbd,
91964 - 0x6b, 0x3d, 0x5e, 0xc2, 0xbf, 0x92, 0x3c, 0xce, 0x4b, 0x9e, 0x45, 0x8a,
91965 - 0xed, 0x59, 0xe3, 0x1a, 0xf9, 0xcc, 0xbb, 0x56, 0x78, 0x41, 0x85, 0x53,
91966 - 0xda, 0xbd, 0x38, 0xbe, 0xe0, 0xdd, 0xc4, 0x65, 0x3c, 0xd7, 0x5c, 0x46,
91967 - 0xe3, 0xfb, 0xf0, 0xa9, 0xa9, 0x75, 0x45, 0x62, 0xfd, 0x56, 0x57, 0x64,
91968 - 0xdb, 0xfd, 0xc7, 0x9b, 0xf3, 0x76, 0xeb, 0xcf, 0xb8, 0x71, 0xd6, 0x2b,
91969 - 0xbe, 0xc4, 0xfc, 0x67, 0x7f, 0x13, 0x76, 0xef, 0x67, 0x5e, 0xa9, 0x36,
91970 - 0x86, 0xcb, 0x95, 0x1a, 0xe6, 0x44, 0xc3, 0x36, 0x1f, 0x76, 0x1a, 0xbb,
91971 - 0xec, 0x9c, 0x59, 0xe2, 0x83, 0xd4, 0x99, 0x9f, 0x91, 0xf8, 0x27, 0xeb,
91972 - 0x39, 0x07, 0x6e, 0xdd, 0x90, 0xa0, 0xdf, 0x6a, 0xbd, 0x2c, 0xb3, 0xae,
91973 - 0xb0, 0x4e, 0x2f, 0x6b, 0x18, 0xbd, 0xd3, 0x38, 0xc9, 0xba, 0x69, 0xb1,
91974 - 0xaa, 0xd1, 0x5f, 0x73, 0x29, 0x8e, 0x74, 0x14, 0xca, 0x33, 0xd9, 0xb3,
91975 - 0x65, 0x73, 0x4f, 0xc3, 0xb3, 0x1d, 0xbc, 0x96, 0xf7, 0x85, 0xcb, 0xf1,
91976 - 0x6e, 0x67, 0x61, 0x6e, 0x0e, 0xb9, 0xf2, 0xb8, 0xff, 0x69, 0x77, 0x71,
91977 - 0xbd, 0x28, 0x5f, 0xe6, 0xda, 0x12, 0x94, 0xef, 0xb9, 0x14, 0x5b, 0xe2,
91978 - 0xc4, 0xf2, 0x6d, 0x7b, 0xf3, 0xeb, 0x93, 0x95, 0x4b, 0x05, 0xb7, 0xeb,
91979 - 0x71, 0xb7, 0xed, 0xf7, 0x5f, 0x75, 0xe5, 0xed, 0xc0, 0x59, 0x18, 0x97,
91980 - 0x49, 0x1b, 0xbc, 0x52, 0xd6, 0xfc, 0x0b, 0xf8, 0x39, 0x9b, 0xff, 0xf7,
91981 - 0x42, 0xe6, 0xc2, 0x45, 0xff, 0x7c, 0xdc, 0x74, 0x60, 0x6a, 0x46, 0x9e,
91982 - 0xaf, 0xab, 0xfb, 0x9a, 0xd0, 0x33, 0x46, 0xbc, 0xa1, 0x0f, 0xb5, 0x85,
91983 - 0xd6, 0x5a, 0xa8, 0x91, 0x75, 0x83, 0x5a, 0x54, 0xec, 0x13, 0xde, 0x4c,
91984 - 0x9e, 0x31, 0x76, 0xca, 0x1e, 0x4b, 0x6f, 0x26, 0xbf, 0x2e, 0xb2, 0x33,
91985 - 0xd5, 0xf7, 0xee, 0x1d, 0x9a, 0xe0, 0x85, 0xd8, 0x46, 0xdd, 0xad, 0x0b,
91986 - 0x03, 0x39, 0xbf, 0x03, 0xba, 0xb9, 0x4b, 0x56, 0x92, 0x12, 0xb7, 0x61,
91987 - 0x7b, 0xad, 0x82, 0x2e, 0xa3, 0x1a, 0x8e, 0xc5, 0xbf, 0xb5, 0xee, 0x58,
91988 - 0x27, 0xff, 0xbd, 0x5b, 0xc0, 0x97, 0x0f, 0xb2, 0x6f, 0x19, 0xb7, 0x70,
91989 - 0x3a, 0x37, 0x2a, 0xe8, 0x53, 0x37, 0x38, 0x84, 0x73, 0x2a, 0x8c, 0x9d,
91990 - 0xf6, 0x5c, 0xa0, 0x37, 0xad, 0x60, 0x77, 0x5a, 0x30, 0xd3, 0x49, 0x1c,
91991 - 0xf4, 0x61, 0x67, 0x5a, 0x70, 0xd0, 0x45, 0x1c, 0x9c, 0x83, 0xed, 0x69,
91992 - 0xc1, 0xc1, 0x12, 0xbc, 0x3c, 0x78, 0x05, 0x1e, 0xe2, 0xef, 0x07, 0x53,
91993 - 0xa5, 0x08, 0xef, 0xfd, 0x0b, 0x1c, 0x48, 0x0b, 0x7f, 0x72, 0x23, 0x35,
91994 - 0x5c, 0x87, 0x54, 0x3a, 0xcf, 0x25, 0xaa, 0x86, 0xff, 0x12, 0x49, 0xfe,
91995 - 0x1e, 0x20, 0xef, 0xcb, 0x0c, 0xcd, 0x45, 0x82, 0xbf, 0x65, 0xbd, 0xcd,
91996 - 0x43, 0xf9, 0x13, 0x81, 0x0a, 0x6c, 0x18, 0x92, 0x1c, 0xda, 0x77, 0xeb,
91997 - 0x5d, 0x81, 0x79, 0xec, 0xb3, 0x0e, 0xbb, 0xc9, 0xd9, 0xda, 0x86, 0xfc,
91998 - 0xe8, 0xe7, 0xef, 0x9d, 0xa9, 0x4a, 0xbc, 0x36, 0xa8, 0xdb, 0xfd, 0xf5,
91999 - 0xa4, 0x56, 0xac, 0x70, 0x19, 0x55, 0x58, 0x31, 0x38, 0x1f, 0x3b, 0xd2,
92000 - 0x82, 0xbd, 0xd5, 0xc4, 0xde, 0x7a, 0x3c, 0x98, 0x16, 0x7e, 0xa9, 0xc1,
92001 - 0xbb, 0xd7, 0xc0, 0x48, 0x5a, 0xd6, 0x84, 0x6b, 0x70, 0x61, 0x28, 0x80,
92002 - 0x41, 0xbb, 0x7f, 0x13, 0xc9, 0x54, 0x98, 0xf2, 0x79, 0x51, 0xb9, 0x2f,
92003 - 0xe7, 0xab, 0x82, 0x82, 0xc9, 0x40, 0x10, 0x03, 0x63, 0xb3, 0x50, 0xbe,
92004 - 0x4f, 0x37, 0xb7, 0x42, 0xbf, 0x78, 0x17, 0xae, 0xc4, 0xee, 0x31, 0x1f,
92005 - 0x4a, 0xf7, 0x55, 0xc3, 0x1d, 0x6a, 0xc2, 0xce, 0xb1, 0x0f, 0x61, 0xfb,
92006 - 0x58, 0x1d, 0xb1, 0x13, 0x78, 0x3a, 0x63, 0xa2, 0x9f, 0x18, 0x3c, 0x87,
92007 - 0x31, 0xe6, 0x95, 0xac, 0xcc, 0xa3, 0xcc, 0x8f, 0x02, 0x4f, 0xa0, 0x9a,
92008 - 0x31, 0x4a, 0x7e, 0xcb, 0xb5, 0xb0, 0x8d, 0xed, 0xf9, 0x75, 0x2a, 0x3d,
92009 - 0xbe, 0x13, 0xb6, 0xbe, 0x91, 0xcb, 0x88, 0xee, 0x65, 0x4d, 0x68, 0xba,
92010 - 0x3d, 0xed, 0xb4, 0xd7, 0xe8, 0x2f, 0xdb, 0xe5, 0x5f, 0x15, 0xec, 0xd2,
92011 - 0x5e, 0x53, 0xc3, 0x93, 0x97, 0xf2, 0x5c, 0xb4, 0x96, 0x20, 0x60, 0x3a,
92012 - 0x15, 0xf8, 0x99, 0xef, 0xfa, 0x9f, 0x7a, 0xdf, 0xda, 0xda, 0xe5, 0xf5,
92013 - 0x9f, 0xe9, 0x6b, 0xb0, 0x72, 0x6f, 0x49, 0x65, 0x3c, 0x2f, 0x41, 0x5c,
92014 - 0x93, 0x35, 0xaa, 0x46, 0x8d, 0x5a, 0x79, 0x5f, 0xde, 0x5d, 0x15, 0x2b,
92015 - 0x8b, 0x34, 0xc3, 0x3f, 0x5e, 0xe7, 0x7f, 0x2d, 0x21, 0x3a, 0xfd, 0xbd,
92016 - 0xe5, 0x36, 0x0c, 0xdf, 0x31, 0xd4, 0xf9, 0x7f, 0x92, 0x79, 0xbb, 0x04,
92017 - 0x55, 0x1e, 0x5c, 0x9f, 0xf8, 0xe0, 0x7a, 0x6a, 0x04, 0xca, 0xca, 0x66,
92018 - 0x1f, 0x79, 0x3f, 0x9c, 0xab, 0x17, 0x60, 0xda, 0x87, 0x7c, 0x24, 0x02,
92019 - 0xf5, 0x74, 0x73, 0x98, 0xb9, 0x7e, 0xfe, 0x7e, 0xce, 0xf2, 0xac, 0xee,
92020 - 0x8b, 0x2a, 0xf9, 0x7b, 0x36, 0x9d, 0xa1, 0x3f, 0xd0, 0xae, 0xbb, 0x85,
92021 - 0xb3, 0xb0, 0x2f, 0x60, 0x6b, 0xc2, 0xb2, 0x9e, 0xa4, 0x0e, 0xe4, 0x5e,
92022 - 0xe0, 0x9b, 0x99, 0xdf, 0x59, 0x93, 0x5e, 0x27, 0x5e, 0x37, 0xa6, 0xb7,
92023 - 0x47, 0xae, 0x17, 0x31, 0x19, 0xfb, 0xec, 0x13, 0x75, 0xdc, 0x68, 0xdc,
92024 - 0x76, 0x98, 0x79, 0xf2, 0xc2, 0x80, 0xee, 0x4f, 0xe2, 0xff, 0x5a, 0xc2,
92025 - 0x0b, 0xd3, 0x4a, 0x71, 0xdd, 0xee, 0xfd, 0x6b, 0x27, 0x55, 0x31, 0x17,
92026 - 0xc7, 0x77, 0x28, 0xa1, 0xf7, 0xc7, 0x99, 0xb7, 0x45, 0xbd, 0x88, 0x39,
92027 - 0x23, 0x75, 0xfe, 0x9d, 0x09, 0x7b, 0x9c, 0xe6, 0x79, 0xce, 0xdd, 0xe9,
92028 - 0xe6, 0x3a, 0x7f, 0x6f, 0x46, 0x6c, 0x50, 0xe1, 0x58, 0x9a, 0xf1, 0x70,
92029 - 0x46, 0xc5, 0x9d, 0x0f, 0x78, 0xb1, 0x69, 0xc0, 0x83, 0x6d, 0x03, 0x5f,
92030 - 0x82, 0x71, 0x95, 0x13, 0x77, 0x30, 0xf7, 0xdb, 0x3c, 0x50, 0x4a, 0x3d,
92031 - 0x6a, 0xd8, 0x32, 0xe0, 0x44, 0xd3, 0x55, 0x55, 0x88, 0xcf, 0x2c, 0xc5,
92032 - 0xf3, 0xf4, 0xdd, 0xab, 0x42, 0x15, 0x48, 0xdb, 0x9c, 0x43, 0xb0, 0x41,
92033 - 0x78, 0x9b, 0xe8, 0x8d, 0x71, 0xd0, 0x10, 0x0c, 0xf9, 0xa0, 0xf5, 0x99,
92034 - 0xdf, 0x58, 0xb9, 0x99, 0x7b, 0x6c, 0x3e, 0xe9, 0x88, 0x88, 0x6e, 0xa4,
92035 - 0xae, 0xac, 0x35, 0x79, 0x19, 0x23, 0xdf, 0xa3, 0x47, 0x65, 0x5e, 0x24,
92036 - 0x30, 0xb9, 0x4c, 0x71, 0x20, 0x1c, 0xa8, 0x8a, 0x55, 0x47, 0xc2, 0x58,
92037 - 0x99, 0xed, 0xf1, 0xf9, 0xec, 0x7b, 0x59, 0x11, 0x9c, 0x5f, 0x62, 0xe2,
92038 - 0x96, 0x2c, 0x9c, 0x2b, 0xa9, 0xfb, 0x56, 0xea, 0x75, 0x87, 0xf9, 0x07,
92039 - 0x2b, 0x9f, 0xd7, 0xb8, 0x89, 0x97, 0x96, 0xb5, 0x99, 0xfa, 0x65, 0x4e,
92040 - 0x81, 0x9f, 0x16, 0xf4, 0x2b, 0x3a, 0xad, 0x18, 0xff, 0x9d, 0x75, 0x9a,
92041 - 0xfa, 0x75, 0xb3, 0x3d, 0x37, 0xdb, 0x2b, 0x1b, 0x7f, 0xaf, 0x9e, 0x4b,
92042 - 0x29, 0xcf, 0x4a, 0x5b, 0x86, 0xd9, 0x72, 0x2f, 0xc0, 0x1f, 0x55, 0x8a,
92043 - 0x3c, 0xf4, 0x4f, 0x8d, 0xe9, 0x25, 0x7b, 0xbd, 0xed, 0xeb, 0x59, 0xcb,
92044 - 0x1a, 0x36, 0x45, 0xff, 0x7e, 0xea, 0x5f, 0xd6, 0x5d, 0x64, 0x0e, 0x9a,
92045 - 0x10, 0xad, 0xd5, 0xfb, 0x01, 0x49, 0x7c, 0x15, 0xcc, 0x60, 0xae, 0xf5,
92046 - 0x8d, 0x76, 0x0f, 0x5e, 0x4b, 0x54, 0xda, 0xe3, 0xbe, 0xaa, 0xc1, 0xb2,
92047 - 0xbe, 0x16, 0xf2, 0xe3, 0x4d, 0xa3, 0x31, 0xbc, 0x48, 0xd5, 0x19, 0x13,
92048 - 0x64, 0xed, 0x83, 0xba, 0x48, 0xcd, 0xe5, 0x7c, 0x89, 0xcf, 0x63, 0x1b,
92049 - 0xed, 0xc9, 0xef, 0x88, 0x00, 0xaf, 0x26, 0x8c, 0xe0, 0x0e, 0xf6, 0x3f,
92050 - 0xea, 0x8d, 0x60, 0x7b, 0x4a, 0x6d, 0x75, 0x92, 0x7c, 0x96, 0x31, 0xd7,
92051 - 0xdb, 0x85, 0x7f, 0xb5, 0xd2, 0x5e, 0x0b, 0x25, 0x21, 0x89, 0x25, 0xf3,
92052 - 0x70, 0x46, 0x73, 0xe0, 0x99, 0xe0, 0x2c, 0x44, 0x6b, 0x1c, 0xe4, 0x33,
92053 - 0xaf, 0x5b, 0xff, 0xec, 0x95, 0x7e, 0x64, 0x2c, 0x7f, 0xe0, 0x38, 0x14,
92054 - 0x1b, 0xef, 0x76, 0xa6, 0x22, 0xd4, 0xf7, 0xfb, 0xfb, 0xff, 0xbf, 0xd6,
92055 - 0x94, 0x57, 0xfa, 0xd7, 0x35, 0x3f, 0xf9, 0xf9, 0xe3, 0x1f, 0xb8, 0xce,
92056 - 0x12, 0xe4, 0x78, 0xbf, 0x67, 0x7d, 0xc7, 0x6e, 0xf3, 0x23, 0xa5, 0x79,
92057 - 0x5e, 0x2f, 0xed, 0x3d, 0xcd, 0xf1, 0x49, 0x9b, 0xc5, 0x7e, 0x44, 0x6f,
92058 - 0x93, 0xa5, 0x82, 0xd7, 0x3b, 0x53, 0xa2, 0x3f, 0xc9, 0x97, 0x4e, 0x5b,
92059 - 0x98, 0x25, 0xe7, 0x0f, 0xdb, 0x65, 0xe3, 0xd4, 0x57, 0x0f, 0x6d, 0x88,
92060 - 0xb1, 0x81, 0xf1, 0x42, 0xee, 0xb2, 0x6a, 0xc4, 0x5c, 0x0b, 0xdb, 0x19,
92061 - 0xb2, 0xd2, 0xde, 0x6a, 0xec, 0x34, 0x69, 0x77, 0x86, 0x3a, 0xdf, 0x09,
92062 - 0x0b, 0xa7, 0x4d, 0x39, 0x77, 0x61, 0xca, 0xeb, 0xc0, 0x2e, 0xd3, 0x89,
92063 - 0x4e, 0x43, 0xd5, 0xe5, 0xba, 0x23, 0x24, 0xe7, 0x2e, 0xf8, 0x67, 0x2a,
92064 - 0xd8, 0x13, 0x56, 0xb1, 0xc5, 0xe8, 0xf1, 0xcb, 0xf5, 0xe5, 0x21, 0x39,
92065 - 0x57, 0xb0, 0x91, 0x3a, 0x89, 0x33, 0x57, 0xde, 0xca, 0x76, 0x7b, 0x43,
92066 - 0xf9, 0x75, 0xf1, 0x18, 0x2c, 0x6b, 0x8f, 0xd9, 0xf2, 0xe1, 0x0a, 0x96,
92067 - 0x3b, 0x67, 0x4a, 0xec, 0x38, 0x70, 0xcb, 0xc2, 0x40, 0x3c, 0x5a, 0x02,
92068 - 0x3d, 0x56, 0x46, 0x3f, 0xdd, 0x39, 0x30, 0x8f, 0xf5, 0x04, 0xfb, 0x9d,
92069 - 0xbe, 0xdd, 0x90, 0xf5, 0xae, 0x80, 0xff, 0x27, 0xe4, 0xde, 0x69, 0xef,
92070 - 0x02, 0x6a, 0xd6, 0xf0, 0xbf, 0xc2, 0x79, 0xab, 0x36, 0x9c, 0xdb, 0x5e,
92071 - 0x80, 0xde, 0x59, 0xa6, 0x2c, 0x08, 0x56, 0xc1, 0x85, 0x38, 0xf9, 0xf9,
92072 - 0xd8, 0x38, 0xf3, 0xeb, 0x94, 0xa1, 0x1d, 0xb1, 0xd7, 0xcc, 0x3d, 0xd4,
92073 - 0x85, 0x87, 0xf1, 0x22, 0xa0, 0x4d, 0x2a, 0xc5, 0xf3, 0x79, 0x82, 0x0d,
92074 - 0x31, 0x47, 0x44, 0xf0, 0x2d, 0x6e, 0x3d, 0xd1, 0x4c, 0xd5, 0x19, 0x6e,
92075 - 0x7f, 0x2c, 0xe3, 0xe1, 0xa1, 0xf1, 0xf0, 0xfa, 0x37, 0x65, 0x7c, 0xfe,
92076 - 0x8d, 0x19, 0xf8, 0xd7, 0x67, 0x8a, 0x76, 0x59, 0xf4, 0x6d, 0xc1, 0x36,
92077 - 0xcb, 0x92, 0x7b, 0xc9, 0x8f, 0x67, 0xa5, 0xad, 0x7c, 0x1c, 0x2b, 0xa1,
92078 - 0xec, 0x4f, 0xd2, 0xd6, 0x5d, 0x8c, 0x55, 0xbb, 0x8c, 0x38, 0xa1, 0xd2,
92079 - 0xb2, 0x0c, 0xf2, 0x99, 0x12, 0xc5, 0x8f, 0x9d, 0x4d, 0xbf, 0xe5, 0x7c,
92080 - 0x02, 0x9b, 0x32, 0x01, 0x77, 0x7e, 0x3e, 0xc4, 0xcf, 0x04, 0x03, 0xfc,
92081 - 0x8c, 0xbf, 0x3e, 0x7f, 0x0f, 0xfb, 0xd9, 0x9e, 0x99, 0xee, 0x03, 0x0a,
92082 - 0x56, 0xb3, 0xad, 0x96, 0x10, 0x9c, 0x2b, 0x9a, 0xfe, 0xcd, 0xca, 0x79,
92083 - 0xa7, 0xdf, 0x37, 0x75, 0x33, 0xe6, 0xc2, 0xb9, 0xbe, 0x49, 0xce, 0x15,
92084 - 0xb4, 0x84, 0xe5, 0x5c, 0xc1, 0x7a, 0x43, 0xce, 0x89, 0xd9, 0x59, 0x39,
92085 - 0xb7, 0xac, 0xcb, 0xe7, 0xef, 0xc7, 0x22, 0x13, 0x77, 0xa5, 0x64, 0xed,
92086 - 0x4d, 0xb0, 0xc8, 0xed, 0xff, 0x4e, 0xa6, 0x09, 0x5b, 0x52, 0x72, 0x7f,
92087 - 0x8c, 0xb9, 0x86, 0xe1, 0xf1, 0x3f, 0x93, 0xb9, 0x16, 0x77, 0xee, 0x0f,
92088 - 0xa3, 0x73, 0x3f, 0x9a, 0xca, 0x38, 0x86, 0xd2, 0x50, 0xc0, 0x7f, 0x14,
92089 - 0x9a, 0xff, 0x0c, 0x75, 0x72, 0x8a, 0x72, 0x9e, 0x7e, 0x8f, 0x9c, 0xa2,
92090 - 0x43, 0xf8, 0xef, 0x4e, 0xb8, 0x91, 0x09, 0xbd, 0x63, 0xc5, 0xed, 0x5c,
92091 - 0xc8, 0xeb, 0xbf, 0x27, 0xe1, 0x47, 0xce, 0xce, 0xc9, 0xde, 0x28, 0x15,
92092 - 0xec, 0xee, 0x4b, 0xc5, 0xa3, 0x2a, 0x8a, 0xf3, 0xab, 0x87, 0x65, 0x6e,
92093 - 0x5f, 0x4d, 0xc8, 0x7f, 0xd1, 0x2f, 0xa9, 0x8c, 0x4b, 0x2a, 0x73, 0xf9,
92094 - 0x41, 0x59, 0xdf, 0x57, 0x4b, 0x45, 0x3f, 0x72, 0x8f, 0x22, 0x2e, 0x39,
92095 - 0x63, 0x13, 0xaf, 0x6b, 0x8b, 0x10, 0xab, 0xa1, 0x9e, 0xca, 0x0d, 0xaf,
92096 - 0xbf, 0x71, 0xc2, 0xe7, 0x37, 0x27, 0xe0, 0xbf, 0x72, 0x62, 0xba, 0x08,
92097 - 0xe4, 0x0a, 0xea, 0x07, 0x61, 0x81, 0xd7, 0xbf, 0x39, 0x31, 0x8f, 0x3c,
92098 - 0x33, 0x6e, 0x2d, 0x6f, 0x3e, 0x6f, 0xcd, 0x8b, 0x18, 0xb9, 0xd3, 0x94,
92099 - 0xe1, 0x9d, 0x6b, 0xf4, 0xf8, 0x1c, 0xc7, 0xa9, 0xfb, 0xb5, 0x69, 0x7d,
92100 - 0x5c, 0x08, 0xfd, 0xff, 0xed, 0xa3, 0x18, 0xe7, 0x68, 0x0f, 0xcd, 0x32,
92101 - 0x06, 0x89, 0x77, 0xcc, 0x85, 0x6a, 0x65, 0x2c, 0x81, 0x02, 0x6f, 0x2b,
92102 - 0x8e, 0x4b, 0xe1, 0x5c, 0xbb, 0xa9, 0x8b, 0x62, 0x0c, 0xb3, 0xac, 0x5e,
92103 - 0xc3, 0x57, 0x58, 0x03, 0xe7, 0x9c, 0x65, 0x4f, 0x7d, 0xd8, 0xc9, 0x9c,
92104 - 0xfd, 0x9c, 0xd9, 0xf2, 0x57, 0x4e, 0x44, 0x7d, 0xa5, 0x8c, 0xad, 0xb2,
92105 - 0xf6, 0x74, 0xa6, 0x69, 0xca, 0x9a, 0x64, 0x1e, 0xd4, 0x92, 0x95, 0xfb,
92106 - 0x4b, 0x0e, 0xda, 0xb7, 0x85, 0x87, 0x4d, 0xf9, 0x5f, 0x70, 0x26, 0x1e,
92107 - 0x73, 0xd0, 0x56, 0xdc, 0x86, 0xde, 0xf1, 0x65, 0xa5, 0x8a, 0xae, 0xec,
92108 - 0x0c, 0x4e, 0x42, 0x0f, 0x6f, 0x51, 0xe8, 0x87, 0x35, 0x0b, 0x4c, 0x99,
92109 - 0x82, 0x37, 0x12, 0x01, 0x33, 0x50, 0x88, 0x4b, 0xe7, 0x38, 0x77, 0x6f,
92110 - 0x25, 0x8c, 0xce, 0x27, 0x0b, 0xe7, 0x3f, 0xcb, 0x4c, 0x5f, 0x1f, 0x17,
92111 - 0x7b, 0x74, 0xbb, 0xb7, 0x27, 0x70, 0xc1, 0xd1, 0x8c, 0x0b, 0x87, 0xcc,
92112 - 0x12, 0x2c, 0x6f, 0x17, 0x3b, 0x75, 0xbb, 0x77, 0x26, 0x30, 0xe5, 0xe4,
92113 - 0xb5, 0x73, 0xe6, 0x5c, 0x62, 0x9a, 0xbd, 0x7e, 0x29, 0x31, 0x22, 0xa6,
92114 - 0x31, 0xbe, 0x96, 0x47, 0xbc, 0xee, 0xf2, 0x09, 0x68, 0x65, 0xe4, 0x40,
92115 - 0xee, 0x08, 0x5a, 0x1d, 0x49, 0xdd, 0xdf, 0xe6, 0x68, 0xc2, 0xaa, 0xac,
92116 - 0x9f, 0x3c, 0xfa, 0x05, 0xf2, 0x4e, 0xfb, 0x3e, 0x1f, 0x6d, 0xd2, 0xc9,
92117 - 0x0a, 0x43, 0xb3, 0xd4, 0x88, 0xe4, 0x76, 0x55, 0xb8, 0x4b, 0xdb, 0xfa,
92118 - 0x11, 0x35, 0x32, 0x88, 0x9b, 0x9a, 0xdd, 0xad, 0xd5, 0x13, 0x45, 0x9d,
92119 - 0x20, 0xe6, 0x89, 0x40, 0xab, 0x32, 0xa0, 0x56, 0x46, 0x44, 0x37, 0xfe,
92120 - 0xd6, 0xe4, 0xb8, 0xc8, 0xaa, 0xb9, 0x07, 0xc6, 0x7f, 0xe3, 0x46, 0x79,
92121 - 0x94, 0x58, 0xf5, 0x43, 0xdf, 0x7f, 0xae, 0xde, 0x33, 0x6e, 0xc1, 0x7b,
92122 - 0x97, 0x21, 0xdf, 0xb6, 0x6d, 0x31, 0x1f, 0x19, 0xfb, 0x8c, 0x3b, 0x60,
92123 - 0x59, 0x8c, 0x93, 0x3e, 0x28, 0x73, 0x39, 0x1e, 0xfa, 0x1a, 0xe3, 0xd2,
92124 - 0xc6, 0xcc, 0x1f, 0xac, 0x8f, 0x3a, 0x6d, 0x0e, 0x40, 0xde, 0xe4, 0xbf,
92125 - 0xed, 0x75, 0xe3, 0xf7, 0x96, 0xf0, 0x11, 0x27, 0x7d, 0xba, 0x84, 0x78,
92126 - 0xbe, 0xdb, 0x74, 0xb6, 0xad, 0x50, 0x14, 0xf4, 0x19, 0x0b, 0xb4, 0x32,
92127 - 0xc6, 0xa9, 0x5e, 0xfa, 0x75, 0xcc, 0x6b, 0x04, 0x0f, 0x81, 0xe5, 0x32,
92128 - 0x9b, 0x37, 0xbb, 0x22, 0xf7, 0x7c, 0x76, 0xac, 0x59, 0xb0, 0x60, 0xea,
92129 - 0xb6, 0x27, 0x8d, 0x0e, 0xf2, 0xaf, 0xaf, 0x90, 0xa7, 0xe5, 0xfb, 0xc9,
92130 - 0x61, 0xde, 0x07, 0xf4, 0xb3, 0x79, 0x73, 0x69, 0x44, 0x78, 0x58, 0xfa,
92131 - 0xb6, 0xc3, 0x46, 0x1b, 0x73, 0xb0, 0x7b, 0x3e, 0x7b, 0xae, 0xf9, 0x00,
92132 - 0xbf, 0xf3, 0x75, 0xd2, 0xa8, 0xfe, 0xc0, 0x3a, 0x15, 0x11, 0xe9, 0xc3,
92133 - 0xcf, 0x3e, 0xee, 0xf9, 0x6c, 0xe7, 0x92, 0x31, 0x6c, 0xcf, 0x6e, 0xfb,
92134 - 0x93, 0xfd, 0x54, 0x46, 0x64, 0x3d, 0x34, 0x76, 0xfb, 0xea, 0xc0, 0x3d,
92135 - 0x9f, 0xcd, 0x2c, 0x19, 0x64, 0x1f, 0x9f, 0x66, 0x7c, 0xc9, 0xd7, 0x89,
92136 - 0x2a, 0x8e, 0x0f, 0xd4, 0x41, 0x59, 0x64, 0xdb, 0xed, 0x0b, 0x03, 0xbf,
92137 - 0xb7, 0x16, 0x0c, 0x94, 0xd8, 0x3a, 0x70, 0x51, 0x07, 0x0f, 0x9a, 0xce,
92138 - 0x5c, 0xc0, 0x61, 0xeb, 0xa0, 0xcb, 0x47, 0x1d, 0x24, 0xa9, 0x83, 0xdc,
92139 - 0x4c, 0x23, 0xfc, 0x36, 0x75, 0xb0, 0x60, 0x7c, 0xf3, 0xe6, 0xb2, 0x08,
92140 - 0x9c, 0x0e, 0xe3, 0x47, 0x0e, 0xe6, 0x45, 0xaa, 0xcb, 0xd8, 0x4c, 0xbd,
92141 - 0xdd, 0xf3, 0xd9, 0xf9, 0x4b, 0x6c, 0x9d, 0xdf, 0xea, 0x0e, 0xdc, 0x47,
92142 - 0xbb, 0x69, 0xa5, 0xad, 0x6f, 0xe5, 0xd1, 0xce, 0xa3, 0x8f, 0x47, 0x02,
92143 - 0xbb, 0xb3, 0x1b, 0xa9, 0xab, 0x35, 0x1c, 0xc7, 0x3a, 0xca, 0xd5, 0xc5,
92144 - 0xdf, 0x31, 0xfe, 0x8e, 0xf3, 0xb7, 0xcc, 0x8f, 0x7a, 0x49, 0xb6, 0xd8,
92145 - 0x25, 0xd9, 0x1c, 0x94, 0xc7, 0x63, 0xaf, 0x55, 0x96, 0x47, 0x8e, 0xdf,
92146 - 0xba, 0x3a, 0xd0, 0xc9, 0x36, 0xfe, 0xbf, 0x32, 0xd9, 0x57, 0xe0, 0x32,
92147 - 0xe2, 0x3e, 0x27, 0x44, 0x3e, 0xbd, 0xa3, 0x13, 0x39, 0x62, 0xef, 0xef,
92148 - 0xf2, 0xd8, 0x4b, 0xd9, 0xaa, 0x38, 0x3f, 0xcf, 0x2d, 0x49, 0xcf, 0xf6,
92149 - 0x18, 0xf0, 0xb9, 0x8d, 0x7e, 0x0c, 0x64, 0x47, 0xa8, 0x03, 0xb1, 0x93,
92150 - 0x2f, 0x52, 0x7f, 0xdd, 0xac, 0x73, 0x8a, 0xb1, 0x4c, 0x8f, 0xd2, 0x67,
92151 - 0x69, 0xb3, 0x7a, 0x98, 0x07, 0xed, 0xe5, 0x51, 0xb6, 0x9b, 0xa6, 0x4c,
92152 - 0x25, 0xb4, 0x5f, 0x05, 0x72, 0x0f, 0xf7, 0x0c, 0xdb, 0x3f, 0x6c, 0xfc,
92153 - 0xba, 0xe2, 0x14, 0xc7, 0x1e, 0xf5, 0x6e, 0xc6, 0x68, 0x93, 0xe8, 0x2a,
92154 - 0x46, 0x5d, 0xe9, 0x3e, 0xff, 0x34, 0x5d, 0x5e, 0x96, 0xf7, 0x0a, 0xf2,
92155 - 0x09, 0xcb, 0xfa, 0x89, 0xd1, 0xb2, 0x90, 0x49, 0x21, 0xd2, 0x76, 0xae,
92156 - 0x64, 0x59, 0x25, 0xf6, 0xfe, 0xb3, 0xd8, 0xed, 0x1b, 0x0c, 0x91, 0xb7,
92157 - 0xb1, 0x7d, 0x3b, 0x8d, 0x73, 0x73, 0x86, 0xfe, 0x1c, 0xf8, 0x9d, 0x15,
92158 - 0x9d, 0x29, 0xf5, 0xe6, 0xe1, 0x15, 0xc6, 0xde, 0xa8, 0x16, 0xef, 0x74,
92159 - 0x0b, 0xbf, 0x37, 0x9c, 0xe1, 0x35, 0x88, 0x33, 0xa1, 0xd4, 0x83, 0x77,
92160 - 0x92, 0x7b, 0x9e, 0x33, 0xf2, 0x7e, 0x7c, 0x24, 0xa3, 0x47, 0x1f, 0xe6,
92161 - 0x39, 0x39, 0x30, 0xb9, 0x54, 0x31, 0x4e, 0x05, 0xc9, 0x7b, 0x3d, 0x70,
92162 - 0x32, 0x87, 0x6a, 0x75, 0xf4, 0x04, 0x5d, 0xa0, 0x2f, 0x96, 0xcb, 0xb8,
92163 - 0xe2, 0x1c, 0xa3, 0xe0, 0xb6, 0x5b, 0xdb, 0x68, 0x63, 0x79, 0x7c, 0xa1,
92164 - 0x0b, 0x1e, 0x6d, 0x53, 0xa6, 0x18, 0xe3, 0x3c, 0xda, 0xfa, 0x84, 0xe0,
92165 - 0x82, 0xdc, 0x77, 0x0d, 0x53, 0xcf, 0x82, 0x0f, 0xaf, 0xda, 0x7b, 0xd5,
92166 - 0x88, 0x11, 0x55, 0x4e, 0x23, 0xdf, 0xae, 0xc6, 0x76, 0xdb, 0x1d, 0x1a,
92167 - 0x2e, 0xfb, 0xb8, 0xae, 0xb5, 0x3b, 0x64, 0x1f, 0x1d, 0xd1, 0x2b, 0x53,
92168 - 0xa8, 0x97, 0xc7, 0xb9, 0x65, 0x2e, 0x1b, 0xe7, 0xd8, 0x06, 0xf3, 0x8e,
92169 - 0xe5, 0x89, 0xf7, 0xf7, 0x2f, 0xfd, 0x49, 0xbf, 0x3d, 0x35, 0x2a, 0x64,
92170 - 0x9f, 0x8f, 0xdc, 0x13, 0xeb, 0x64, 0xbe, 0x36, 0x7d, 0xaf, 0x8f, 0x7e,
92171 - 0x82, 0xed, 0x1f, 0x8f, 0x73, 0x3e, 0xe7, 0x1a, 0xb2, 0x0f, 0x48, 0xee,
92172 - 0xa1, 0x4d, 0xdf, 0xf7, 0x63, 0xdf, 0x9f, 0x2c, 0x17, 0x2e, 0x73, 0x98,
92173 - 0x38, 0x19, 0x6d, 0x97, 0xfa, 0x96, 0xf5, 0xe3, 0x05, 0x41, 0xe4, 0x66,
92174 - 0x38, 0x31, 0xd2, 0x00, 0x0c, 0x27, 0x45, 0xd7, 0xe9, 0xcf, 0x6c, 0x30,
92175 - 0xfe, 0xcd, 0x8a, 0xd6, 0x36, 0x6a, 0xbd, 0xaa, 0xac, 0x67, 0x8c, 0xdd,
92176 - 0xda, 0x67, 0xd4, 0x6b, 0x7d, 0x6a, 0xee, 0x18, 0xe3, 0xd0, 0x01, 0xe6,
92177 - 0xe8, 0xe5, 0x82, 0x15, 0x35, 0x46, 0xb4, 0xbf, 0x06, 0x0d, 0xf0, 0xdb,
92178 - 0xf7, 0x24, 0xf4, 0xf8, 0x37, 0x54, 0x23, 0xb8, 0x56, 0xf8, 0xa7, 0xfa,
92179 - 0x8e, 0x95, 0xa6, 0x0d, 0x7c, 0xa1, 0xe1, 0x67, 0x65, 0x79, 0x6c, 0x8f,
92180 - 0x76, 0xce, 0xe2, 0xbc, 0xbc, 0xb9, 0x48, 0xf7, 0x67, 0x14, 0xd1, 0x91,
92181 - 0x70, 0xae, 0x11, 0xec, 0x62, 0x3c, 0xfe, 0xb7, 0x86, 0x08, 0x8e, 0xf0,
92182 - 0xfb, 0xa7, 0xd7, 0xca, 0x1e, 0x37, 0xcb, 0x0a, 0x06, 0x16, 0x84, 0x6b,
92183 - 0x38, 0x86, 0x67, 0xf8, 0x7f, 0x7f, 0xf6, 0x75, 0xeb, 0xdc, 0x2c, 0x63,
92184 - 0x70, 0x25, 0x83, 0xe2, 0xf0, 0x84, 0xae, 0x4d, 0xa9, 0xff, 0xd9, 0x3d,
92185 - 0x37, 0xf6, 0x3a, 0xe3, 0x67, 0x9e, 0x0f, 0x34, 0x6a, 0x49, 0xb5, 0xae,
92186 - 0x5c, 0xf4, 0x3a, 0x3c, 0xf1, 0x52, 0x21, 0xce, 0xe7, 0xef, 0x75, 0x3e,
92187 - 0x7e, 0x49, 0x3f, 0x72, 0xdf, 0x76, 0x1e, 0x6d, 0x2e, 0x1a, 0xa7, 0xde,
92188 - 0xdd, 0x33, 0x38, 0xe6, 0x2f, 0x34, 0xdc, 0x69, 0x8f, 0xb3, 0xd6, 0x98,
92189 - 0xc3, 0x31, 0x2a, 0xd0, 0x1a, 0x9c, 0xe5, 0x79, 0xfe, 0xd8, 0x42, 0x96,
92190 - 0x96, 0xb6, 0x5a, 0xe9, 0x43, 0x25, 0xac, 0x73, 0xbd, 0x79, 0x70, 0x76,
92191 - 0x4f, 0x93, 0xee, 0xfb, 0x02, 0x6d, 0x35, 0xd4, 0xf0, 0x2b, 0x2b, 0xaa,
92192 - 0x39, 0xcd, 0xaf, 0x73, 0xd4, 0x77, 0x26, 0xa4, 0xac, 0xcc, 0xab, 0x11,
92193 - 0x6d, 0x50, 0xde, 0xb2, 0x30, 0x33, 0x10, 0x6e, 0xb0, 0xc7, 0x0f, 0xdc,
92194 - 0x91, 0x19, 0x61, 0xae, 0x2c, 0x6d, 0x2a, 0x58, 0x19, 0x78, 0xc3, 0xf2,
92195 - 0xcf, 0x1a, 0xc1, 0xce, 0xec, 0x1f, 0xe3, 0xb0, 0x5f, 0x21, 0x87, 0xd6,
92196 - 0x3b, 0xe2, 0x79, 0xbf, 0x6b, 0x03, 0xfb, 0x2d, 0x37, 0xec, 0x3c, 0xfc,
92197 - 0xb6, 0x44, 0x40, 0xd6, 0x8c, 0xc6, 0x3e, 0x33, 0x1e, 0x90, 0xbd, 0x19,
92198 - 0x5e, 0xe4, 0xda, 0xa5, 0x4c, 0xbd, 0x36, 0x8e, 0x1c, 0x19, 0xa6, 0xec,
92199 - 0x23, 0x39, 0x54, 0x9e, 0x5f, 0x47, 0x70, 0xc8, 0x3a, 0xb8, 0xf6, 0x2a,
92200 - 0x39, 0x61, 0x9b, 0x21, 0x6d, 0x28, 0x58, 0x18, 0x98, 0x81, 0xc6, 0xb5,
92201 - 0x3f, 0x7a, 0xb9, 0x24, 0x90, 0xf7, 0xdb, 0x3e, 0xc3, 0xd8, 0x76, 0x1a,
92202 - 0xbf, 0x26, 0x56, 0xc9, 0x3e, 0x93, 0xb4, 0xd4, 0x63, 0x5b, 0x0d, 0xc8,
92203 - 0x68, 0x4e, 0x8c, 0x1a, 0xb2, 0x0f, 0xd2, 0xb2, 0x56, 0x07, 0x5e, 0xa3,
92204 - 0xdf, 0x51, 0x9e, 0xac, 0xb3, 0x50, 0x57, 0xca, 0x14, 0xf6, 0x70, 0x28,
92205 - 0x2d, 0x9f, 0x15, 0x9d, 0x3c, 0x61, 0xc6, 0x99, 0x35, 0x48, 0x7c, 0x18,
92206 - 0xfb, 0xcc, 0xeb, 0x86, 0x70, 0x78, 0xdd, 0x5c, 0xa9, 0x54, 0x33, 0xde,
92207 - 0x3a, 0xfd, 0x63, 0xf6, 0x7a, 0x86, 0x9f, 0x58, 0x2e, 0x3c, 0x54, 0x72,
92208 - 0x43, 0x27, 0x9e, 0x34, 0x6a, 0xf0, 0x84, 0x96, 0xe7, 0x74, 0xc4, 0x44,
92209 - 0xbc, 0x90, 0x58, 0x90, 0xa3, 0x87, 0x90, 0x1b, 0x1b, 0x9d, 0x17, 0x95,
92210 - 0x5f, 0x33, 0x6f, 0x04, 0x9e, 0xcb, 0x74, 0xe1, 0x41, 0xb9, 0x8f, 0xa5,
92211 - 0xd4, 0xb7, 0x35, 0x3a, 0xa4, 0xbf, 0x2e, 0xec, 0xb2, 0xd7, 0x65, 0xc7,
92212 - 0x3e, 0x73, 0xd8, 0x78, 0xa4, 0x20, 0xab, 0x60, 0xfe, 0xd8, 0x67, 0x9e,
92213 - 0x34, 0x4e, 0xdb, 0x73, 0x27, 0x7b, 0x16, 0xfa, 0x4d, 0xc1, 0xc6, 0x72,
92214 - 0xa8, 0xcc, 0x2f, 0x1c, 0xc6, 0xa7, 0xe1, 0xa8, 0x19, 0xa3, 0xed, 0xc9,
92215 - 0x7a, 0xcf, 0xed, 0x70, 0xd6, 0xb8, 0xe8, 0x9b, 0x77, 0xc0, 0x55, 0x23,
92216 - 0x9c, 0xbe, 0xc8, 0xb7, 0xdb, 0xf8, 0xbf, 0xe8, 0x76, 0xca, 0xd6, 0xad,
92217 - 0x93, 0xd8, 0xd3, 0x27, 0xf9, 0x9f, 0x51, 0x4d, 0x1d, 0xe9, 0x1d, 0xb2,
92218 - 0xae, 0x5d, 0x49, 0x6c, 0x65, 0x1c, 0x75, 0x57, 0xb3, 0xcc, 0xdb, 0xd4,
92219 - 0xfb, 0x82, 0x81, 0x0a, 0x72, 0x7d, 0xcb, 0x7a, 0x87, 0x5c, 0x7f, 0x61,
92220 - 0xa0, 0x31, 0x67, 0x30, 0xfe, 0xe1, 0x66, 0xbd, 0x4d, 0xee, 0x11, 0x6f,
92221 - 0x30, 0x2e, 0x5a, 0xb1, 0x75, 0x52, 0x46, 0xf7, 0xc5, 0x94, 0x62, 0x1f,
92222 - 0x8b, 0xe0, 0x9f, 0x61, 0xc1, 0x15, 0xb1, 0x88, 0x5d, 0xba, 0x19, 0x45,
92223 - 0x8b, 0xec, 0xf5, 0x69, 0x97, 0xf1, 0xbb, 0xe4, 0x7e, 0x03, 0xa2, 0x93,
92224 - 0x2e, 0x18, 0xb9, 0x23, 0x32, 0x67, 0xb3, 0x2d, 0x04, 0x16, 0xff, 0x8e,
92225 - 0x39, 0x93, 0xcc, 0x4f, 0x7d, 0xae, 0x49, 0xc9, 0x05, 0x7d, 0xe4, 0xfe,
92226 - 0x8f, 0x40, 0x6f, 0x4f, 0x50, 0xd7, 0xad, 0x21, 0x1b, 0xf3, 0x7c, 0x09,
92227 - 0xd8, 0x7c, 0xdf, 0x7c, 0x05, 0x1f, 0x45, 0x25, 0x73, 0xdc, 0x86, 0xf1,
92228 - 0x35, 0xa8, 0xaa, 0x89, 0xfa, 0xca, 0xb1, 0x94, 0xe7, 0x5b, 0x99, 0xc7,
92229 - 0x7c, 0x12, 0x55, 0x6b, 0x63, 0x48, 0x70, 0xec, 0x95, 0xc6, 0xad, 0xbc,
92230 - 0xd6, 0x87, 0x64, 0xca, 0xc5, 0x71, 0xfc, 0xd0, 0xaa, 0x9a, 0x29, 0xb2,
92231 - 0x99, 0xde, 0x0a, 0x83, 0x79, 0xb7, 0xad, 0x0b, 0x62, 0x79, 0x4a, 0xb8,
92232 - 0x54, 0x63, 0x74, 0x0b, 0xfe, 0x40, 0xdb, 0xd5, 0x3b, 0x36, 0x2a, 0x71,
92233 - 0xda, 0x6c, 0x82, 0x3a, 0x97, 0xb2, 0x96, 0xb5, 0x2a, 0xf0, 0x5b, 0xea,
92234 - 0x38, 0xce, 0x73, 0xc3, 0xff, 0x1a, 0xd4, 0xa5, 0xa5, 0x38, 0x6b, 0xc5,
92235 - 0x35, 0x1f, 0xed, 0x52, 0x5d, 0x27, 0xbc, 0x6b, 0x45, 0x48, 0xad, 0x40,
92236 - 0xb9, 0x56, 0xb0, 0xd3, 0x74, 0x41, 0x97, 0x53, 0xb7, 0xf5, 0x19, 0x6f,
92237 - 0x94, 0xcb, 0x75, 0x87, 0x7d, 0xdd, 0x5f, 0xb8, 0x9e, 0xe6, 0xf5, 0xf3,
92238 - 0xbc, 0x3e, 0x48, 0xdd, 0xab, 0x57, 0x48, 0xfd, 0xcd, 0xa6, 0xd4, 0x27,
92239 - 0x1d, 0x31, 0x12, 0x85, 0xf9, 0x88, 0xdd, 0x9e, 0x2f, 0xbb, 0xed, 0xf6,
92240 - 0x7c, 0x1b, 0x4e, 0xb6, 0x11, 0x8f, 0x96, 0xc3, 0x44, 0x45, 0x40, 0x70,
92241 - 0x5e, 0xe4, 0xe2, 0xdc, 0x65, 0x45, 0xae, 0xad, 0x8c, 0x8b, 0x3d, 0x4f,
92242 - 0x97, 0x23, 0xde, 0x35, 0xc7, 0xb6, 0xc3, 0x34, 0x79, 0x8a, 0xee, 0x7f,
92243 - 0x5d, 0x69, 0xf1, 0xc9, 0xb2, 0x4e, 0x8a, 0x9c, 0xf7, 0x7e, 0xd3, 0x19,
92244 - 0x6e, 0x72, 0x2c, 0xc8, 0x95, 0xc2, 0x88, 0x5d, 0x54, 0x66, 0x57, 0x08,
92245 - 0x3e, 0x24, 0x32, 0x2d, 0xcc, 0xd0, 0xe2, 0x41, 0xe6, 0x56, 0xc1, 0x2c,
92246 - 0x75, 0xbb, 0x9e, 0x88, 0x7d, 0xc2, 0xde, 0xb3, 0xe4, 0x9c, 0x5c, 0x83,
92247 - 0x16, 0xdd, 0x81, 0x05, 0xe1, 0x39, 0xcc, 0xd0, 0x68, 0x97, 0x66, 0xa9,
92248 - 0x43, 0xf7, 0xdf, 0x84, 0xff, 0x62, 0xd7, 0x3b, 0x92, 0xc9, 0x75, 0x96,
92249 - 0x73, 0x4e, 0xbf, 0x4a, 0x39, 0x76, 0x07, 0x44, 0x8e, 0xb1, 0x82, 0x1c,
92250 - 0x31, 0xc6, 0x5c, 0x53, 0xbb, 0x21, 0x30, 0x78, 0x49, 0x6f, 0x4f, 0xdb,
92251 - 0x7a, 0xeb, 0xe3, 0x79, 0x29, 0x76, 0x90, 0x3f, 0x9e, 0x6a, 0xf2, 0x16,
92252 - 0xd6, 0xf6, 0x25, 0xa7, 0x13, 0xfc, 0x3d, 0xfb, 0xa9, 0x0d, 0x86, 0x1e,
92253 - 0x76, 0xd8, 0xfc, 0xdf, 0x8d, 0xb8, 0xcd, 0xad, 0x1d, 0x10, 0xee, 0xf8,
92254 - 0xb0, 0x5d, 0xce, 0x45, 0x9d, 0x54, 0xe0, 0x91, 0x82, 0xbf, 0x54, 0x30,
92255 - 0xbe, 0x7d, 0xd5, 0xfe, 0x9d, 0xe6, 0xdc, 0xba, 0xe8, 0xab, 0xc5, 0x18,
92256 - 0x25, 0xeb, 0x83, 0xfd, 0xb6, 0xef, 0xa7, 0xf1, 0x7d, 0xfb, 0x3b, 0x97,
92257 - 0xcf, 0xcb, 0xd0, 0x47, 0x9f, 0x70, 0xb0, 0x8d, 0x5e, 0x7b, 0x2f, 0xaa,
92258 - 0xac, 0x15, 0x5c, 0x8b, 0x1d, 0x1c, 0x95, 0xdb, 0xe8, 0x44, 0xbf, 0x26,
92259 - 0x36, 0xd1, 0x8d, 0xa4, 0x66, 0x7a, 0xb3, 0x4d, 0xd3, 0x73, 0x2a, 0x13,
92260 - 0x87, 0x9a, 0x7e, 0xcf, 0x58, 0x2e, 0xd7, 0xce, 0x5a, 0x87, 0x8d, 0x53,
92261 - 0x21, 0x7a, 0x70, 0x67, 0x89, 0xad, 0xdf, 0xa9, 0xdb, 0xec, 0x7d, 0x5b,
92262 - 0x94, 0xf9, 0xe9, 0x84, 0xc4, 0xd1, 0x79, 0xc8, 0x98, 0x22, 0x9b, 0xb3,
92263 - 0x7d, 0x0f, 0xe7, 0xa4, 0x2f, 0x15, 0x88, 0x5e, 0xc9, 0xff, 0x26, 0x19,
92264 - 0xcb, 0x7a, 0xa9, 0xcf, 0x58, 0xbb, 0xf0, 0xb8, 0xad, 0x38, 0x40, 0x1b,
92265 - 0x9b, 0x30, 0x2d, 0xeb, 0x08, 0x31, 0xa2, 0x7a, 0x81, 0x8a, 0xdc, 0xcc,
92266 - 0xad, 0x48, 0x31, 0x36, 0x1d, 0x31, 0x5a, 0x3e, 0x5a, 0x82, 0xb8, 0x9f,
92267 - 0x31, 0xdc, 0xb7, 0x93, 0xa3, 0xb9, 0x9f, 0xf3, 0x75, 0xca, 0x14, 0x7e,
92268 - 0xe9, 0xbc, 0xb8, 0x02, 0x46, 0x78, 0x99, 0xe3, 0x87, 0xd6, 0x94, 0xc8,
92269 - 0x9e, 0xea, 0xf9, 0x5f, 0x94, 0x61, 0x9b, 0x38, 0x6f, 0x35, 0xe7, 0xf8,
92270 - 0xed, 0x80, 0xde, 0xf6, 0x02, 0xfb, 0x69, 0x1c, 0x68, 0xe9, 0x14, 0x19,
92271 - 0x0e, 0x87, 0x9c, 0xb1, 0x23, 0x08, 0xb4, 0x6f, 0x55, 0x8a, 0x39, 0x04,
92272 - 0x70, 0xe5, 0xb8, 0x89, 0xa3, 0x4d, 0xcf, 0x90, 0xef, 0x48, 0xfd, 0x52,
92273 - 0x3c, 0x66, 0x3e, 0x65, 0xd5, 0xcf, 0x7e, 0xde, 0x3a, 0x66, 0xa8, 0x5b,
92274 - 0xa8, 0xed, 0x58, 0x25, 0x64, 0x4d, 0x33, 0x7d, 0xdb, 0x5d, 0x01, 0xdd,
92275 - 0xdc, 0xc3, 0xb6, 0xce, 0x24, 0x4e, 0x05, 0xdd, 0x6c, 0xeb, 0x11, 0x53,
92276 - 0x72, 0x08, 0x67, 0x5b, 0x1b, 0xe7, 0xb6, 0x27, 0x15, 0xf0, 0xc9, 0xba,
92277 - 0xad, 0xe4, 0x79, 0xb7, 0x27, 0x64, 0xcf, 0xf8, 0x18, 0xc7, 0x13, 0xdd,
92278 - 0xe6, 0x42, 0xcb, 0xfd, 0x55, 0xb4, 0x9f, 0x6a, 0x14, 0x6d, 0x5d, 0xf7,
92279 - 0x11, 0xef, 0x70, 0x17, 0xcb, 0xbc, 0x1c, 0x98, 0x87, 0xe7, 0x42, 0x2d,
92280 - 0x6b, 0xe7, 0xc1, 0x19, 0x3b, 0xa6, 0x04, 0xda, 0xb6, 0x2a, 0x71, 0x4d,
92281 - 0x6c, 0xf1, 0xce, 0x8c, 0x1e, 0x6c, 0x85, 0x60, 0x77, 0x8c, 0xfa, 0x98,
92282 - 0x87, 0x77, 0x16, 0x8b, 0x5c, 0xce, 0x70, 0xd0, 0x11, 0xe8, 0x7a, 0x8a,
92283 - 0xf3, 0x5b, 0xb5, 0x40, 0x64, 0x07, 0xb2, 0x19, 0x91, 0x3f, 0x86, 0x64,
92284 - 0xf6, 0xec, 0xdb, 0x87, 0x0d, 0x38, 0x4f, 0x34, 0x3d, 0x68, 0xc1, 0xde,
92285 - 0x63, 0xde, 0x22, 0xf3, 0xd0, 0x21, 0xf3, 0x50, 0x4e, 0x7f, 0x5a, 0x4d,
92286 - 0xb9, 0xb7, 0xd8, 0x72, 0xcf, 0xc3, 0xa8, 0x29, 0xeb, 0x64, 0x4e, 0xed,
92287 - 0x4e, 0x0c, 0x12, 0x3b, 0x03, 0x17, 0x7b, 0xd8, 0xcf, 0xcb, 0x94, 0x79,
92288 - 0x01, 0xf5, 0x3e, 0xd5, 0x2e, 0xfc, 0xb6, 0x0f, 0x03, 0xa9, 0xe2, 0x1e,
92289 - 0x74, 0x05, 0x92, 0x7a, 0x4f, 0x39, 0xfa, 0xc8, 0xf7, 0x7a, 0xac, 0xa9,
92290 - 0x99, 0x72, 0x3d, 0x8d, 0x1d, 0xa9, 0xa8, 0x46, 0x7f, 0xa0, 0xde, 0xa1,
92291 - 0xcf, 0x83, 0x3e, 0xf9, 0xaa, 0x23, 0x4a, 0x1f, 0x30, 0xbd, 0x17, 0x89,
92292 - 0x0d, 0x27, 0xd0, 0x65, 0xa1, 0xc6, 0xb6, 0x87, 0x9f, 0x8e, 0x19, 0x0e,
92293 - 0x59, 0x6b, 0x0f, 0xe6, 0xa8, 0x03, 0x95, 0x73, 0x22, 0x3a, 0xa8, 0xa4,
92294 - 0xcf, 0x8e, 0x07, 0x74, 0xff, 0x73, 0x94, 0x67, 0x0f, 0xe5, 0x59, 0x93,
92295 - 0x9f, 0x43, 0xdf, 0x0e, 0x45, 0x7c, 0x3a, 0xd0, 0xbe, 0x81, 0xd7, 0x77,
92296 - 0x53, 0x9e, 0xc0, 0x80, 0x82, 0x34, 0xd1, 0xac, 0x8f, 0x7c, 0xf6, 0xc0,
92297 - 0x34, 0x79, 0xdc, 0xf6, 0x9c, 0xc5, 0xc9, 0x05, 0x4a, 0x71, 0xd8, 0x14,
92298 - 0xfc, 0xd6, 0x30, 0x4a, 0x3b, 0x3d, 0xc4, 0x19, 0x89, 0x7a, 0x55, 0x94,
92299 - 0x1a, 0x82, 0x01, 0x33, 0x79, 0xcd, 0xc5, 0xb9, 0xa9, 0xc6, 0x31, 0x2d,
92300 - 0xcd, 0x38, 0x59, 0xe4, 0x76, 0x7f, 0xb0, 0x8e, 0x7a, 0x85, 0x9f, 0xc9,
92301 - 0x3a, 0x9a, 0xac, 0x35, 0x7d, 0xb9, 0x22, 0xbf, 0xbf, 0x52, 0xf6, 0x3f,
92302 - 0xe4, 0xaf, 0x3f, 0xad, 0x09, 0x47, 0x2e, 0x96, 0xff, 0xb9, 0xf5, 0x84,
92303 - 0x5d, 0x5e, 0xca, 0xb9, 0x6c, 0x2e, 0x5f, 0x6e, 0x97, 0xfb, 0xb9, 0xf5,
92304 - 0x8c, 0xe6, 0x9c, 0x56, 0xae, 0xb8, 0x07, 0xef, 0xd4, 0x97, 0x5c, 0xc4,
92305 - 0x3c, 0x47, 0xc3, 0x32, 0x3c, 0x61, 0x9c, 0xad, 0x5f, 0xdf, 0xd4, 0xcd,
92306 - 0x38, 0x56, 0xe4, 0x5a, 0x75, 0xf4, 0x2b, 0x0b, 0x43, 0xe6, 0xa9, 0xa1,
92307 - 0x12, 0xf4, 0x90, 0x3b, 0x0a, 0x17, 0x10, 0x8e, 0x2a, 0xeb, 0x7c, 0xb7,
92308 - 0x96, 0x5f, 0xce, 0x79, 0xf5, 0xa0, 0x5f, 0x6d, 0xb3, 0xb9, 0x61, 0x54,
92309 - 0x15, 0xdc, 0xad, 0xb3, 0xc7, 0x7e, 0x39, 0xfe, 0x4b, 0xac, 0x98, 0xbe,
92310 - 0x6e, 0xd7, 0x8d, 0x43, 0x46, 0x91, 0xb3, 0x9c, 0x7a, 0x50, 0x25, 0x4e,
92311 - 0x0e, 0x9b, 0xcb, 0x24, 0x36, 0xfb, 0x59, 0x3f, 0x18, 0x53, 0xa7, 0x73,
92312 - 0x9b, 0xbf, 0xa9, 0x40, 0x55, 0xcf, 0x2e, 0x07, 0x64, 0xff, 0xaf, 0xec,
92313 - 0xd9, 0x96, 0xbe, 0xca, 0x0a, 0xeb, 0x57, 0x1f, 0xc4, 0x35, 0x8a, 0x7d,
92314 - 0x09, 0xdf, 0xa8, 0x28, 0xca, 0x18, 0x8c, 0xda, 0x72, 0xfe, 0xd2, 0x5a,
92315 - 0xab, 0xe5, 0xe6, 0x68, 0x78, 0xaf, 0xec, 0xd1, 0x82, 0xec, 0xb1, 0x0f,
92316 - 0x5c, 0x7f, 0x93, 0x7e, 0xa6, 0xb7, 0x59, 0xdc, 0x7b, 0x2a, 0x6b, 0xb3,
92317 - 0xf2, 0x9f, 0x82, 0x1e, 0xe2, 0x50, 0x54, 0x6b, 0x61, 0x9c, 0xd7, 0x7d,
92318 - 0x9b, 0x38, 0x1f, 0x71, 0xaf, 0xec, 0x6b, 0x2d, 0xc6, 0xc8, 0x52, 0xe4,
92319 - 0xd7, 0x48, 0x81, 0x43, 0x85, 0x75, 0x51, 0xda, 0x3d, 0x7a, 0x32, 0xbf,
92320 - 0xb3, 0x72, 0x5e, 0x27, 0x63, 0xe1, 0xe5, 0xfd, 0xf7, 0x69, 0xea, 0x75,
92321 - 0x94, 0xff, 0xed, 0xb8, 0xb4, 0xee, 0x22, 0x6b, 0x4f, 0x12, 0x7b, 0x7f,
92322 - 0x6b, 0xad, 0x7f, 0x4f, 0xd9, 0xe9, 0x7b, 0x5f, 0x67, 0xc6, 0x64, 0x3f,
92323 - 0xda, 0xd1, 0xc2, 0xfa, 0x7c, 0xeb, 0xbf, 0xdf, 0x8f, 0x46, 0x5b, 0x42,
92324 - 0x74, 0x07, 0xb9, 0x5d, 0x1c, 0x7d, 0x38, 0x9a, 0x68, 0xd4, 0x76, 0x42,
92325 - 0x93, 0x75, 0x69, 0x7e, 0xfa, 0x70, 0x2c, 0x81, 0x68, 0xc9, 0x55, 0xd5,
92326 - 0xe4, 0x5b, 0x88, 0x3a, 0x64, 0x8f, 0x50, 0xa2, 0xb1, 0x6d, 0x37, 0xc7,
92327 - 0xe4, 0x5f, 0xdb, 0x87, 0xd1, 0x44, 0xcb, 0xad, 0x8c, 0x23, 0xfe, 0x8a,
92328 - 0x3c, 0xd7, 0xe9, 0x38, 0x4c, 0x1c, 0xd8, 0x5e, 0x58, 0x1b, 0x5b, 0x9f,
92329 - 0xf8, 0x15, 0xe5, 0xb7, 0x85, 0x64, 0xbd, 0x3f, 0x56, 0xee, 0x2c, 0x7a,
92330 - 0x53, 0x67, 0xb1, 0x79, 0x50, 0x11, 0xfb, 0xc2, 0xa6, 0xb4, 0xc8, 0x73,
92331 - 0x16, 0x1b, 0x07, 0xbf, 0x87, 0x43, 0x83, 0xb3, 0xd1, 0x6a, 0xeb, 0xa6,
92332 - 0x0b, 0x5b, 0xf7, 0x9e, 0xc4, 0x9e, 0x94, 0x85, 0xdd, 0x21, 0x0f, 0xb6,
92333 - 0x1c, 0x54, 0xb0, 0x2a, 0x70, 0x06, 0x3b, 0xf7, 0x5a, 0x98, 0x1f, 0xea,
92334 - 0x46, 0x9b, 0x59, 0x81, 0xd2, 0x9a, 0x05, 0x9d, 0x2a, 0xcb, 0xad, 0x1f,
92335 - 0xed, 0x52, 0x6e, 0xe4, 0xb8, 0x73, 0xae, 0xe3, 0xc4, 0x02, 0x15, 0x3e,
92336 - 0x03, 0x5a, 0x75, 0x24, 0xaa, 0xdc, 0x92, 0x6d, 0x55, 0x3a, 0x46, 0x6d,
92337 - 0x3e, 0xa5, 0xdc, 0x94, 0xf5, 0x55, 0x4a, 0x4c, 0x3f, 0x14, 0x3a, 0x8b,
92338 - 0x74, 0xba, 0xaa, 0x32, 0xef, 0x2f, 0x67, 0xc9, 0x1d, 0x24, 0xe7, 0x30,
92339 - 0x69, 0x53, 0x7f, 0xec, 0xb9, 0x02, 0xb1, 0xbb, 0x29, 0xfc, 0x64, 0xe4,
92340 - 0x15, 0xbc, 0x32, 0xf2, 0x2f, 0x58, 0xae, 0x49, 0x9e, 0x69, 0x75, 0x3b,
92341 - 0x23, 0x96, 0xb5, 0xbf, 0x39, 0x6e, 0xcd, 0x34, 0x2c, 0xb6, 0x57, 0x85,
92342 - 0x59, 0x91, 0xef, 0x62, 0xb7, 0xc6, 0xb6, 0x52, 0xc7, 0xed, 0x7b, 0xb7,
92343 - 0xbe, 0xc8, 0xa7, 0xe1, 0x4b, 0xe5, 0xcc, 0x5a, 0x44, 0x87, 0x6a, 0xa1,
92344 - 0x6f, 0xab, 0x71, 0x18, 0x5d, 0xff, 0x5b, 0x69, 0xc2, 0x4d, 0xd9, 0x57,
92345 - 0xf0, 0xe6, 0x48, 0x37, 0x31, 0x53, 0xef, 0xf8, 0x96, 0x62, 0x75, 0xef,
92346 - 0x0e, 0xe9, 0x6d, 0xff, 0x55, 0x89, 0xc6, 0xcb, 0x69, 0x53, 0x65, 0xcc,
92347 - 0x09, 0x6e, 0x1e, 0x91, 0x7c, 0xb9, 0x03, 0xee, 0x01, 0x3d, 0xb7, 0x82,
92348 - 0x3c, 0xfb, 0x0b, 0x8b, 0xe2, 0x73, 0x66, 0xd0, 0x2e, 0x1d, 0x8a, 0x1e,
92349 - 0x34, 0xd4, 0x6e, 0x3c, 0x6e, 0xea, 0x93, 0xbf, 0x75, 0x18, 0xe9, 0x6f,
92350 - 0xa2, 0x09, 0xeb, 0xb2, 0x7a, 0x7a, 0x29, 0xf3, 0xb0, 0x9d, 0x49, 0x13,
92351 - 0xa9, 0xa4, 0xde, 0xd1, 0xe5, 0xe8, 0xc7, 0xdd, 0x81, 0xfa, 0x6d, 0x6f,
92352 - 0x93, 0xcb, 0x79, 0x88, 0x29, 0xc9, 0x89, 0x0c, 0xf3, 0xdc, 0x7e, 0x6c,
92353 - 0x3d, 0x18, 0xc1, 0x96, 0xfd, 0x26, 0xfa, 0x92, 0x19, 0xca, 0xf6, 0x1a,
92354 - 0x6d, 0xdb, 0xb2, 0xda, 0x43, 0xf1, 0x1b, 0x54, 0x04, 0xa2, 0xec, 0xb3,
92355 - 0x45, 0x8d, 0x04, 0xfc, 0xaa, 0xc2, 0xe8, 0x3f, 0xe1, 0x44, 0x2f, 0xcb,
92356 - 0x0c, 0xa4, 0x68, 0x73, 0x49, 0x37, 0xe3, 0x65, 0x1d, 0x46, 0xc7, 0x7d,
92357 - 0x38, 0x32, 0xee, 0x41, 0x7a, 0x5c, 0xe3, 0x51, 0x8e, 0x87, 0x86, 0x2d,
92358 - 0x62, 0xb9, 0x17, 0x8f, 0x1d, 0x76, 0x63, 0xfb, 0x3e, 0x0f, 0xe6, 0x45,
92359 - 0x66, 0xe1, 0xf0, 0xe1, 0x72, 0x1c, 0xe0, 0xf5, 0x9a, 0xc5, 0x7e, 0x7c,
92360 - 0x8d, 0xd7, 0x07, 0xf7, 0xb9, 0x38, 0x0f, 0xf3, 0x71, 0x9c, 0x86, 0x9d,
92361 - 0x1e, 0xaf, 0x40, 0x6a, 0x98, 0x26, 0x4f, 0xce, 0xfa, 0x3a, 0x33, 0x8c,
92362 - 0xa3, 0x87, 0x19, 0x1b, 0x0f, 0x9a, 0x48, 0xb0, 0x9f, 0x3d, 0xd4, 0x55,
92363 - 0x1f, 0x71, 0x6d, 0xeb, 0xb8, 0x60, 0xfc, 0x3a, 0xac, 0x1e, 0xd0, 0xdb,
92364 - 0x5a, 0x15, 0x23, 0xba, 0x44, 0x09, 0xca, 0x73, 0x2b, 0x6e, 0x95, 0xd7,
92365 - 0x5a, 0x12, 0xba, 0xd9, 0x8a, 0x6e, 0x9c, 0xe6, 0xb8, 0xff, 0x3b, 0xfd,
92366 - 0x76, 0x99, 0x43, 0xef, 0xbf, 0x5e, 0x3d, 0x89, 0xa1, 0x6c, 0x8e, 0x5c,
92367 - 0x1d, 0x08, 0x1f, 0x3a, 0x49, 0xfe, 0xf6, 0x38, 0xf1, 0xe7, 0x65, 0xcb,
92368 - 0x67, 0xa8, 0xb8, 0xe9, 0x01, 0x23, 0x7c, 0x41, 0x09, 0x6c, 0xfb, 0x25,
92369 - 0x75, 0x70, 0xe3, 0x61, 0x15, 0x1f, 0x1b, 0x5a, 0x86, 0x4c, 0x28, 0x8a,
92370 - 0x3d, 0x4b, 0x54, 0xdc, 0x70, 0xf0, 0x24, 0x71, 0xff, 0xac, 0xcd, 0x93,
92371 - 0x73, 0x99, 0x2f, 0x22, 0x38, 0x20, 0x6b, 0xf7, 0x6e, 0xc6, 0xef, 0x4a,
92372 - 0x9c, 0x19, 0xec, 0xa6, 0xdf, 0x56, 0xe2, 0x54, 0xfa, 0x24, 0xed, 0xb1,
92373 - 0x12, 0x8f, 0x0f, 0x1a, 0x93, 0x3f, 0x71, 0x54, 0xe2, 0x31, 0x9e, 0x0f,
92374 - 0xf1, 0x7c, 0xf1, 0xb0, 0x31, 0xd8, 0xa5, 0x56, 0x62, 0xd1, 0xa1, 0x66,
92375 - 0x0c, 0x26, 0xc5, 0x36, 0x35, 0x6c, 0x1b, 0x6f, 0x2a, 0xe8, 0x5e, 0x74,
92376 - 0xee, 0xc5, 0x3d, 0xd4, 0xd5, 0xdd, 0x43, 0xdd, 0xec, 0xcf, 0x47, 0x9d,
92377 - 0x9f, 0xc4, 0x43, 0xcc, 0xeb, 0x76, 0x27, 0x7d, 0x38, 0x9f, 0x32, 0xfc,
92378 - 0x9f, 0x52, 0x0c, 0xb3, 0x4c, 0x09, 0x68, 0x67, 0xe0, 0xc3, 0x2b, 0xd9,
92379 - 0x72, 0xf4, 0x0e, 0xd7, 0xe1, 0x27, 0xb4, 0xcf, 0x07, 0xf7, 0x9d, 0xb4,
92380 - 0xed, 0xff, 0x40, 0x6a, 0x2e, 0x1e, 0x1b, 0x33, 0xd9, 0xb6, 0xcc, 0x93,
92381 - 0xc3, 0xde, 0xdb, 0xe4, 0x4a, 0x89, 0x6f, 0x44, 0x87, 0x68, 0x16, 0xc4,
92382 - 0xc4, 0x93, 0xc8, 0x0e, 0xea, 0xfd, 0x37, 0xab, 0xc2, 0xab, 0x55, 0xea,
92383 - 0xd2, 0x81, 0x29, 0x4d, 0x8f, 0xd7, 0xa8, 0xf1, 0x41, 0xe6, 0xaf, 0xf1,
92384 - 0x5a, 0xea, 0xe4, 0xb1, 0x41, 0x27, 0x16, 0x2c, 0x56, 0x79, 0x3d, 0x7e,
92385 - 0x91, 0xb1, 0x2d, 0x3e, 0x4f, 0x35, 0x71, 0xc0, 0x96, 0x15, 0xf1, 0x12,
92386 - 0x72, 0xfb, 0xea, 0xc5, 0xf5, 0x8c, 0x5f, 0x0e, 0xb1, 0xbd, 0x58, 0xa5,
92387 - 0xea, 0xa4, 0xde, 0x5f, 0xc1, 0x18, 0xed, 0xfa, 0x11, 0x1e, 0xc7, 0x47,
92388 - 0xac, 0xee, 0x55, 0xe4, 0xdc, 0xf3, 0x03, 0x56, 0xf7, 0xcd, 0xa6, 0xe1,
92389 - 0x2b, 0x51, 0x03, 0xd1, 0x2f, 0xe0, 0x15, 0x1c, 0x1b, 0x93, 0x32, 0xb2,
92390 - 0x0f, 0x24, 0x86, 0x91, 0xa4, 0xd5, 0x3d, 0x64, 0xce, 0x47, 0xb3, 0x9d,
92391 - 0x1b, 0xbb, 0x2a, 0xf3, 0x98, 0x29, 0x7e, 0x24, 0x6b, 0x25, 0x53, 0xf8,
92392 - 0x25, 0xdb, 0xb9, 0x30, 0x52, 0x8d, 0x19, 0xb5, 0xe2, 0x07, 0x67, 0xf1,
92393 - 0xc6, 0xe0, 0x77, 0x71, 0x7e, 0xd0, 0xc2, 0xa2, 0x90, 0x05, 0x67, 0xa8,
92394 - 0xd1, 0x6c, 0x55, 0x97, 0x12, 0x23, 0x14, 0xac, 0x6e, 0xf8, 0x1e, 0xde,
92395 - 0x1a, 0x94, 0xfd, 0xa6, 0x96, 0x2d, 0xcb, 0x00, 0x16, 0x5b, 0x7b, 0x66,
92396 - 0x8a, 0xdf, 0x48, 0xbd, 0x3f, 0x95, 0x07, 0xeb, 0x8c, 0x86, 0xc5, 0x5c,
92397 - 0xf8, 0x15, 0x8c, 0x8e, 0x18, 0xd1, 0xcd, 0x45, 0x39, 0x07, 0x5f, 0xa1,
92398 - 0x0e, 0xec, 0xf8, 0x74, 0xb0, 0x06, 0x0b, 0x2e, 0x32, 0x6b, 0xfc, 0xf0,
92399 - 0x3c, 0xda, 0xce, 0xa2, 0xc5, 0x01, 0x73, 0xa5, 0xfa, 0x6f, 0xf4, 0xd3,
92400 - 0x57, 0x70, 0x24, 0x5d, 0xc4, 0x6b, 0x1f, 0x5a, 0xe9, 0xe7, 0xf9, 0x7d,
92401 - 0xfe, 0x5e, 0xb4, 0xa4, 0x4e, 0xd8, 0xeb, 0x0f, 0xc7, 0x89, 0x8f, 0x83,
92402 - 0x29, 0x29, 0xa3, 0x61, 0x2c, 0xdb, 0x4a, 0x6c, 0x88, 0xe2, 0x9f, 0xb2,
92403 - 0x11, 0xe2, 0x43, 0x98, 0xf8, 0xd0, 0x4c, 0x7c, 0x30, 0x89, 0x0f, 0x4d,
92404 - 0xc4, 0x87, 0x20, 0xf1, 0xc1, 0xb0, 0xd7, 0xd6, 0xd3, 0x47, 0xbf, 0x8b,
92405 - 0x92, 0xe1, 0xb3, 0x70, 0xd1, 0x07, 0xce, 0x98, 0x16, 0xf9, 0x49, 0xa3,
92406 - 0xb6, 0x11, 0xf3, 0x95, 0xa8, 0xe6, 0x45, 0x9a, 0xed, 0x95, 0x0d, 0x6b,
92407 - 0x1c, 0x8b, 0x85, 0x60, 0xa8, 0x3e, 0xdc, 0x4f, 0xac, 0xfe, 0x95, 0xd1,
92408 - 0xd8, 0xef, 0x45, 0xe3, 0x81, 0x99, 0x30, 0x06, 0x17, 0xab, 0x0d, 0x4a,
92409 - 0xf4, 0xe3, 0x5e, 0x8e, 0xb3, 0x16, 0x73, 0xf7, 0x69, 0x98, 0xc7, 0xe3,
92410 - 0x1f, 0x53, 0xf5, 0x93, 0x2f, 0x3b, 0xe0, 0x9d, 0x4d, 0xba, 0x33, 0x87,
92411 - 0x4c, 0x80, 0xac, 0xd6, 0xeb, 0xc3, 0x95, 0xc7, 0x5f, 0x51, 0x15, 0xe4,
92412 - 0x3e, 0x2e, 0x31, 0xaf, 0x31, 0xd8, 0xa7, 0xaa, 0xb2, 0x96, 0x44, 0x0c,
92413 - 0xe7, 0xa1, 0x22, 0x42, 0x16, 0x51, 0xc7, 0xfc, 0xc2, 0xda, 0x68, 0x96,
92414 - 0x61, 0x47, 0x13, 0x39, 0xa7, 0x57, 0x3f, 0x21, 0x31, 0x6a, 0x36, 0x63,
92415 - 0x44, 0x79, 0x32, 0x7e, 0xe7, 0x6c, 0x78, 0x50, 0x96, 0xb4, 0xac, 0xaf,
92416 - 0x86, 0x34, 0x78, 0x22, 0x81, 0xe8, 0x56, 0xa6, 0x91, 0x1f, 0x5f, 0x10,
92417 - 0xc6, 0xea, 0xec, 0x09, 0x0c, 0x73, 0x7c, 0xab, 0xb2, 0xc5, 0x67, 0xc5,
92418 - 0xfe, 0xf8, 0xe7, 0xf2, 0x33, 0x67, 0x57, 0x1e, 0x98, 0x0d, 0x43, 0xbb,
92419 - 0x57, 0x1d, 0xae, 0x22, 0x07, 0x3f, 0xce, 0xb8, 0xa7, 0x4c, 0x7d, 0x42,
92420 - 0x41, 0xc7, 0x70, 0x1c, 0x33, 0x42, 0x2f, 0x28, 0xb1, 0x5a, 0xdd, 0xef,
92421 - 0x57, 0x6a, 0xf1, 0x89, 0x7d, 0xd4, 0xf5, 0xa2, 0x1f, 0x7a, 0xe4, 0xb9,
92422 - 0xb0, 0x6f, 0x1e, 0x15, 0xdd, 0xd6, 0xa7, 0x87, 0x38, 0x8e, 0xc9, 0x86,
92423 - 0x13, 0x82, 0x93, 0x8f, 0xba, 0xe1, 0x78, 0x74, 0x16, 0xa2, 0x68, 0x6a,
92424 - 0xb8, 0xb2, 0xeb, 0x5f, 0x54, 0xd1, 0x8b, 0xf0, 0x6b, 0x7d, 0x30, 0xae,
92425 - 0x18, 0xda, 0xcf, 0x95, 0x13, 0xf6, 0x7d, 0xb8, 0xaf, 0x66, 0x4f, 0x52,
92426 - 0x97, 0xc7, 0x0b, 0xf9, 0xd2, 0x3a, 0x24, 0x06, 0x64, 0x5f, 0xfe, 0x59,
92427 - 0xcc, 0x1d, 0xd6, 0xdb, 0x77, 0x29, 0x46, 0xf0, 0x06, 0xe5, 0x2c, 0xe6,
92428 - 0x0c, 0x07, 0x39, 0x97, 0x1a, 0x56, 0x26, 0x8b, 0xf8, 0x29, 0x18, 0xbc,
92429 - 0x8e, 0x18, 0x6c, 0x2d, 0xfb, 0x89, 0x19, 0xd7, 0x65, 0x4f, 0x82, 0x53,
92430 - 0xd1, 0x3b, 0x1a, 0x94, 0x38, 0x63, 0xa8, 0x71, 0x71, 0x3d, 0xeb, 0x78,
92431 - 0x86, 0x9b, 0x70, 0x3b, 0xc7, 0xdc, 0xc6, 0x79, 0xfb, 0xee, 0x62, 0x0b,
92432 - 0x4b, 0x16, 0xeb, 0x07, 0xca, 0x1c, 0xd1, 0x7b, 0x6b, 0x90, 0xeb, 0x9a,
92433 - 0x49, 0xbb, 0xb9, 0x7b, 0x91, 0x1e, 0x7e, 0x81, 0xb8, 0x4b, 0x9c, 0x46,
92434 - 0x2f, 0xe3, 0xce, 0x46, 0xc6, 0xa2, 0xf2, 0x88, 0xde, 0xcf, 0x1c, 0xf5,
92435 - 0xc2, 0x1d, 0x8e, 0x68, 0x48, 0x9e, 0xff, 0xf8, 0x32, 0x96, 0xc1, 0x1d,
92436 - 0xaa, 0x22, 0x0e, 0xea, 0xb9, 0xef, 0x42, 0x3f, 0x70, 0x3b, 0xfa, 0xf1,
92437 - 0x03, 0xf2, 0xbb, 0x99, 0x57, 0xe5, 0x88, 0x51, 0x19, 0x3c, 0x98, 0x3d,
92438 - 0x89, 0x03, 0xd9, 0x47, 0xb1, 0x37, 0xbb, 0x5b, 0x49, 0xdb, 0xf7, 0x20,
92439 - 0x15, 0x79, 0xee, 0x26, 0x5a, 0xa5, 0x7c, 0x06, 0x95, 0xa1, 0xaf, 0x5b,
92440 - 0xe9, 0x1a, 0x15, 0xd5, 0xa1, 0x20, 0x56, 0x27, 0xe3, 0x70, 0x44, 0xde,
92441 - 0xb6, 0xe4, 0xb9, 0xcf, 0x2d, 0x13, 0x06, 0xae, 0x4f, 0x96, 0x23, 0x76,
92442 - 0xc8, 0xb2, 0xfa, 0x9b, 0x9d, 0xd8, 0x34, 0xd1, 0x84, 0x95, 0xc3, 0x0f,
92443 - 0x59, 0xf3, 0x18, 0x73, 0xde, 0xbd, 0xc6, 0x83, 0x3b, 0x0e, 0x79, 0xb0,
92444 - 0x3e, 0x19, 0x85, 0x2f, 0x52, 0xc1, 0xdf, 0x01, 0x73, 0x39, 0x8c, 0xc9,
92445 - 0x49, 0x18, 0xfd, 0xd7, 0x39, 0x02, 0xc7, 0xc2, 0xaa, 0x07, 0x7f, 0x4d,
92446 - 0x1c, 0x5f, 0x45, 0xdc, 0x89, 0x4d, 0x58, 0xa8, 0x8e, 0x78, 0x71, 0x27,
92447 - 0xeb, 0x7f, 0x8c, 0x73, 0xff, 0xd6, 0x92, 0xe3, 0xc4, 0x02, 0x23, 0x36,
92448 - 0xa1, 0x68, 0xd8, 0x3a, 0xe1, 0xa6, 0xae, 0xdc, 0x88, 0x1d, 0xa9, 0xc5,
92449 - 0xf5, 0xfb, 0xfc, 0xb8, 0x63, 0xc2, 0x83, 0x96, 0xa4, 0xb5, 0xec, 0xb8,
92450 - 0x19, 0x5f, 0xab, 0xc1, 0xc0, 0xfa, 0x09, 0x2f, 0x6e, 0x4b, 0xea, 0xbe,
92451 - 0x1b, 0x98, 0xf3, 0x8f, 0x99, 0x41, 0xfc, 0xed, 0x84, 0x0f, 0xb7, 0x24,
92452 - 0x4f, 0x49, 0x1e, 0xb9, 0xdc, 0xc9, 0xd8, 0x73, 0xff, 0x44, 0x1d, 0xd6,
92453 - 0x26, 0xf5, 0x8b, 0x93, 0xe4, 0x76, 0xdd, 0x47, 0x4c, 0xdc, 0x3b, 0xa1,
92454 - 0xa2, 0x83, 0xed, 0x7c, 0x22, 0x39, 0x17, 0x5d, 0x47, 0x9a, 0x29, 0xc3,
92455 - 0x62, 0xac, 0x1a, 0x76, 0xc2, 0x24, 0x8b, 0xc7, 0x27, 0x81, 0x76, 0xfa,
92456 - 0x47, 0x22, 0xf5, 0x45, 0xec, 0x19, 0x30, 0x71, 0xd7, 0x84, 0x9c, 0x9f,
92457 - 0xb4, 0x9f, 0x95, 0xbb, 0x70, 0x70, 0x31, 0x6e, 0x1c, 0x56, 0x89, 0x03,
92458 - 0xa5, 0x48, 0xaf, 0x55, 0x70, 0x1b, 0xaf, 0xef, 0x4a, 0xd9, 0x7b, 0xab,
92459 - 0x11, 0x1a, 0x0a, 0x1c, 0xab, 0x21, 0x67, 0x58, 0x72, 0x30, 0x7f, 0xfd,
92460 - 0x41, 0xe2, 0x7c, 0x19, 0x71, 0xbe, 0x82, 0x1c, 0xf6, 0xba, 0xd1, 0x93,
92461 - 0x78, 0x80, 0xb8, 0x7c, 0x62, 0xb8, 0x9b, 0x71, 0xa7, 0x12, 0x5f, 0x63,
92462 - 0x1c, 0x48, 0xf2, 0xfc, 0xec, 0x90, 0xd1, 0x55, 0x46, 0x9c, 0x7e, 0x81,
92463 - 0xf8, 0xdb, 0x4f, 0xcc, 0xb8, 0x3b, 0x49, 0xb7, 0x1f, 0x62, 0x0e, 0x70,
92464 - 0x55, 0x74, 0xa1, 0x87, 0x39, 0xd6, 0x0d, 0x4a, 0xc0, 0xf7, 0x1a, 0x2a,
92465 - 0xe1, 0x38, 0x58, 0x8b, 0x96, 0x7d, 0x52, 0x46, 0xf0, 0x4b, 0x85, 0x7a,
92466 - 0xd8, 0x49, 0x9d, 0x9f, 0x84, 0x35, 0xe8, 0xe0, 0x78, 0xeb, 0x4d, 0x32,
92467 - 0x70, 0xfc, 0xd8, 0xd4, 0xb5, 0x7f, 0x22, 0xd6, 0xbe, 0x43, 0x4c, 0xf5,
92468 - 0xcf, 0x6e, 0x46, 0xab, 0x61, 0xf2, 0x38, 0x89, 0x57, 0x06, 0x0d, 0xf3,
92469 - 0x10, 0x9c, 0x78, 0x99, 0x3c, 0x6f, 0x6a, 0x36, 0x63, 0xa6, 0x21, 0x7e,
92470 - 0x98, 0xe1, 0x78, 0x54, 0xc9, 0x4b, 0xe0, 0x18, 0x07, 0xde, 0x38, 0xb8,
92471 - 0x8c, 0xe3, 0x92, 0x58, 0x2a, 0xf1, 0x2e, 0x43, 0x59, 0x97, 0x61, 0x0d,
92472 - 0xf5, 0xd1, 0x9a, 0x54, 0x91, 0x39, 0x12, 0xc1, 0x5d, 0xfb, 0xf3, 0x71,
92473 - 0x78, 0x5b, 0x28, 0x7e, 0x33, 0xe3, 0x70, 0xb8, 0x9c, 0x71, 0xd8, 0x15,
92474 - 0x11, 0xd9, 0x9c, 0x18, 0x65, 0xdc, 0xde, 0x91, 0x0a, 0xa3, 0x8d, 0x73,
92475 - 0x38, 0x99, 0x61, 0xbf, 0xc9, 0x3a, 0x9c, 0xc9, 0x78, 0x18, 0xb3, 0x34,
92476 - 0x1e, 0x44, 0xb5, 0xb1, 0x59, 0x3c, 0xfc, 0x3c, 0xe6, 0xf3, 0x30, 0xec,
92477 - 0x6b, 0x1b, 0x93, 0x0a, 0xe2, 0xed, 0x8a, 0xcd, 0xe7, 0xcf, 0x64, 0x04,
92478 - 0x9b, 0x65, 0x2d, 0x73, 0x7b, 0x95, 0x3c, 0x8b, 0x32, 0x98, 0xfa, 0x1e,
92479 - 0xaa, 0xa9, 0xff, 0xaa, 0x02, 0x0e, 0xfd, 0x34, 0x24, 0xb8, 0x5b, 0x4f,
92480 - 0xdc, 0x95, 0xe7, 0x04, 0x2c, 0x6b, 0x5d, 0x60, 0x3a, 0x1e, 0xfd, 0x9f,
92481 - 0x77, 0xa3, 0xf6, 0x33, 0x17, 0x82, 0x49, 0xc4, 0xbf, 0x14, 0xf1, 0x8f,
92482 - 0x63, 0xe8, 0xb9, 0x96, 0x18, 0x48, 0x99, 0xfe, 0x21, 0x45, 0x0c, 0x24,
92483 - 0x4e, 0x3f, 0x4a, 0x9c, 0xfe, 0x06, 0x71, 0xfa, 0xeb, 0xc4, 0xe9, 0xaf,
92484 - 0x11, 0x13, 0xf2, 0x6b, 0x7a, 0x6d, 0x72, 0xff, 0x85, 0xf3, 0xf1, 0x96,
92485 - 0xbd, 0xb6, 0x38, 0x93, 0xba, 0x9a, 0x3b, 0xac, 0x60, 0x9e, 0xa1, 0x1f,
92486 - 0x13, 0xbb, 0xff, 0x01, 0xe7, 0xc9, 0x3f, 0xa3, 0xce, 0x7e, 0x26, 0xa6,
92487 - 0x35, 0xd9, 0x07, 0x77, 0xb2, 0x51, 0xeb, 0x87, 0xfd, 0x2c, 0xb2, 0x29,
92488 - 0x5c, 0xb4, 0x24, 0xb9, 0x11, 0x8e, 0x64, 0xe3, 0xb1, 0xd3, 0x72, 0x9f,
92489 - 0x77, 0x96, 0xe4, 0xf5, 0x1b, 0xe1, 0x4c, 0xea, 0xc7, 0xe2, 0x94, 0x65,
92490 - 0x25, 0xff, 0x73, 0x25, 0x1b, 0xcd, 0xd7, 0x60, 0x63, 0x9b, 0x7f, 0xca,
92491 - 0xfe, 0xaf, 0xfe, 0xc2, 0x03, 0xd4, 0x57, 0x8e, 0x6d, 0x66, 0xa8, 0xfb,
92492 - 0x72, 0xf2, 0x95, 0x47, 0xb2, 0xf2, 0xbb, 0xb1, 0x23, 0xa1, 0x1e, 0x43,
92493 - 0x6c, 0xa6, 0xf0, 0xf1, 0x30, 0x6e, 0x4a, 0x7a, 0x68, 0x07, 0x71, 0x54,
92494 - 0xd1, 0xb7, 0x3e, 0x37, 0xd1, 0x4c, 0x5f, 0x7b, 0xc8, 0xd2, 0x22, 0x81,
92495 - 0x8e, 0x09, 0x72, 0x9e, 0x2d, 0x13, 0xcb, 0xb0, 0x62, 0xd8, 0xb2, 0x3c,
92496 - 0x4b, 0x8d, 0xf0, 0x56, 0xc5, 0x0f, 0x17, 0x7d, 0xd0, 0x41, 0xbf, 0xda,
92497 - 0x7c, 0x28, 0xa0, 0xbd, 0x46, 0x3c, 0xed, 0x6c, 0x3e, 0x41, 0xfb, 0x30,
92498 - 0x2e, 0xb6, 0x11, 0x4b, 0x9d, 0x91, 0x00, 0xf3, 0x44, 0x0f, 0x6d, 0xdf,
92499 - 0x8b, 0x8b, 0x09, 0xf1, 0x2f, 0xbd, 0xeb, 0x9f, 0x98, 0x9b, 0x74, 0xd1,
92500 - 0x37, 0x7e, 0x9e, 0xa8, 0xa3, 0x0f, 0xb8, 0xf1, 0x46, 0xc2, 0xa0, 0xbf,
92501 - 0x79, 0xf0, 0x56, 0xa2, 0x89, 0x7d, 0x05, 0x59, 0xc6, 0x8f, 0x7b, 0x26,
92502 - 0xc2, 0xf4, 0xb3, 0x6b, 0x79, 0xc8, 0x73, 0x99, 0xf5, 0xf1, 0x6f, 0x2a,
92503 - 0xf5, 0x83, 0x73, 0xd5, 0x1a, 0x44, 0x6b, 0x35, 0x7c, 0x7e, 0xe2, 0x23,
92504 - 0xf8, 0x57, 0xc6, 0xed, 0x4d, 0x49, 0x70, 0x0e, 0x11, 0x22, 0x0f, 0x9c,
92505 - 0x3c, 0x22, 0xf7, 0x1c, 0xd1, 0x18, 0x6d, 0x70, 0xe8, 0xcc, 0x6d, 0xf5,
92506 - 0xdc, 0x79, 0x87, 0x93, 0x7d, 0x92, 0x15, 0xb3, 0xec, 0xcf, 0x07, 0xcb,
92507 - 0x71, 0xef, 0xa1, 0x13, 0xf4, 0x91, 0x12, 0x2c, 0x7a, 0xc0, 0x8d, 0xcf,
92508 - 0x1f, 0xc9, 0x90, 0x3b, 0xa8, 0x90, 0xfd, 0xbc, 0x69, 0x12, 0x85, 0x39,
92509 - 0xa3, 0x11, 0xdc, 0xb9, 0x3f, 0x83, 0xe1, 0x02, 0xcf, 0x0b, 0x85, 0xe2,
92510 - 0xff, 0x43, 0xc5, 0x09, 0xf2, 0x88, 0x40, 0xe7, 0xd5, 0xb4, 0xb1, 0xaa,
92511 - 0x48, 0x20, 0x2e, 0xe3, 0x6e, 0xa7, 0x8d, 0xf5, 0x71, 0x3e, 0x33, 0x1c,
92512 - 0x47, 0x82, 0x36, 0xf6, 0x55, 0xca, 0xbf, 0x87, 0x36, 0x16, 0xa7, 0x8d,
92513 - 0xc5, 0x69, 0x4f, 0x71, 0xda, 0x98, 0x3c, 0xfb, 0x1b, 0xa7, 0x8d, 0xc5,
92514 - 0x69, 0x63, 0xf1, 0xcc, 0x32, 0x1c, 0x25, 0xd3, 0xd8, 0x39, 0xd6, 0x4c,
92515 - 0x1c, 0x53, 0xec, 0xa8, 0x94, 0xbb, 0xf9, 0x23, 0xe4, 0xec, 0xd7, 0xf1,
92516 - 0x50, 0xd0, 0x46, 0x9f, 0xec, 0x4f, 0x67, 0xc8, 0x79, 0xdc, 0xf8, 0x75,
92517 - 0x56, 0x38, 0x7e, 0x33, 0xf3, 0xd8, 0x93, 0xe4, 0xf9, 0x2a, 0x9e, 0x30,
92518 - 0x25, 0x0f, 0x36, 0x79, 0xce, 0x58, 0x93, 0x12, 0xbe, 0x76, 0x12, 0x77,
92519 - 0x0f, 0x02, 0x37, 0x90, 0x17, 0xd6, 0x92, 0x97, 0x1c, 0x5e, 0xc4, 0xdf,
92520 - 0x07, 0x4f, 0xd0, 0xe6, 0x4f, 0xda, 0x7b, 0xbb, 0x54, 0xb6, 0x75, 0x66,
92521 - 0xb0, 0xde, 0x77, 0x3d, 0x7d, 0xf0, 0x7e, 0xd6, 0x75, 0x1e, 0x94, 0x3a,
92522 - 0x27, 0xd8, 0xb6, 0x1e, 0xfe, 0x35, 0xe7, 0xbf, 0xe3, 0x81, 0x5a, 0xbc,
92523 - 0xb1, 0x5f, 0x0f, 0xbf, 0x43, 0xcc, 0xab, 0x75, 0x58, 0xcb, 0xae, 0x0e,
92524 - 0x05, 0xb6, 0x5d, 0xad, 0xe6, 0xf9, 0x5e, 0xfb, 0x90, 0x13, 0xc7, 0x42,
92525 - 0xcb, 0xe0, 0x59, 0x54, 0xe4, 0x7c, 0xb4, 0xa5, 0x5a, 0xe1, 0x58, 0x7a,
92526 - 0xf8, 0x3c, 0xb9, 0x4a, 0x92, 0xed, 0x1f, 0xcd, 0x3c, 0x4e, 0x0c, 0xf9,
92527 - 0x22, 0x9e, 0x63, 0x7e, 0x3e, 0xf6, 0xa1, 0x97, 0xc9, 0x1d, 0xdd, 0x18,
92528 - 0x27, 0x07, 0x3c, 0x3e, 0x18, 0xfd, 0xa8, 0x93, 0xb8, 0xef, 0x59, 0x54,
92529 - 0x89, 0x4c, 0x5a, 0xb8, 0x62, 0x25, 0x9e, 0x19, 0x34, 0xb4, 0x1b, 0x94,
92530 - 0x3c, 0x2f, 0xcc, 0xef, 0xfd, 0x32, 0x2e, 0x8e, 0x22, 0x30, 0x79, 0x9e,
92531 - 0xdc, 0xf0, 0x9d, 0xb4, 0xc4, 0xb0, 0x93, 0xf4, 0x71, 0x3f, 0xc2, 0x49,
92532 - 0x0d, 0x27, 0xc6, 0x0d, 0x2c, 0x4c, 0x7a, 0xf1, 0xf0, 0x78, 0x10, 0x57,
92533 - 0xd3, 0x77, 0xb3, 0xe4, 0x87, 0x1f, 0x4a, 0x8a, 0x2f, 0xd6, 0x61, 0x62,
92534 - 0xbc, 0x8e, 0x3e, 0x22, 0xbc, 0xfc, 0x67, 0xf0, 0xd4, 0x9e, 0xb5, 0xf7,
92535 - 0x36, 0x8f, 0xa6, 0xf4, 0xfe, 0x18, 0xc7, 0x13, 0xf3, 0xea, 0xc7, 0x62,
92536 - 0xd0, 0xd3, 0xc0, 0x87, 0xdf, 0x4d, 0x7f, 0x52, 0xe2, 0xa3, 0xf8, 0xa3,
92537 - 0x86, 0x09, 0xf2, 0x9d, 0x52, 0x62, 0x6a, 0x79, 0xa4, 0xfe, 0xc2, 0xf7,
92538 - 0x15, 0x3d, 0xf7, 0x94, 0x6a, 0x59, 0xdf, 0x5b, 0xac, 0xc1, 0x77, 0x44,
92539 - 0x23, 0xf7, 0x30, 0xed, 0xe7, 0x62, 0xe4, 0x79, 0xf3, 0xd9, 0xfb, 0x6a,
92540 - 0x31, 0x63, 0x5f, 0x12, 0xff, 0xad, 0x36, 0xfe, 0xd1, 0x59, 0x8c, 0xf3,
92541 - 0xb3, 0x64, 0x7f, 0x76, 0xf2, 0xf4, 0x6c, 0xb9, 0x57, 0x34, 0xa9, 0x36,
92542 - 0x76, 0x1c, 0x83, 0x7e, 0xec, 0x15, 0x45, 0xf7, 0x7d, 0x95, 0xb1, 0xc1,
92543 - 0x45, 0x1b, 0x75, 0x4c, 0x68, 0xf4, 0xdd, 0xc6, 0x13, 0x33, 0x60, 0xc4,
92544 - 0xaf, 0x51, 0x5d, 0x16, 0x6c, 0x79, 0x6e, 0xa8, 0xca, 0xe7, 0x45, 0x82,
92545 - 0x3b, 0x12, 0x17, 0xc8, 0x17, 0x89, 0xc1, 0x9d, 0xf4, 0x97, 0x35, 0x76,
92546 - 0x2c, 0x3a, 0x61, 0xef, 0xfd, 0xde, 0x3a, 0x11, 0xa7, 0x8f, 0x2c, 0x43,
92547 - 0xc5, 0xb0, 0x07, 0x9f, 0xb3, 0xe3, 0xd0, 0x43, 0x56, 0x0d, 0xfd, 0xe5,
92548 - 0xae, 0x43, 0x81, 0xce, 0xeb, 0xe9, 0x2f, 0xf5, 0x4b, 0x25, 0x86, 0x31,
92549 - 0x6e, 0xa7, 0x0c, 0x73, 0x94, 0xd8, 0xf2, 0x50, 0xb3, 0x31, 0xf9, 0x32,
92550 - 0xf2, 0x3e, 0xb3, 0x6b, 0xa0, 0x16, 0x7f, 0xff, 0xc0, 0x71, 0x7b, 0x2d,
92551 - 0xe4, 0x4e, 0x9e, 0x27, 0x07, 0x7c, 0xb6, 0x7f, 0xc4, 0xf8, 0xfb, 0x1e,
92552 - 0xc6, 0xbc, 0x18, 0xfd, 0x68, 0xe7, 0x80, 0xb5, 0xec, 0xf9, 0xc5, 0xf1,
92553 - 0xb5, 0x55, 0x08, 0x32, 0x26, 0xb9, 0xd1, 0x3f, 0xa0, 0x0f, 0x76, 0x30,
92554 - 0x06, 0x9d, 0x5d, 0x6c, 0x52, 0x16, 0x0f, 0x86, 0x06, 0x04, 0x53, 0x4f,
92555 - 0xdd, 0x52, 0x8b, 0xf8, 0xff, 0xd0, 0x38, 0xbe, 0xcf, 0xd9, 0xf7, 0x08,
92556 - 0xeb, 0xb0, 0xe9, 0xc8, 0x52, 0xca, 0xdc, 0x44, 0x1f, 0x64, 0x5e, 0xcd,
92557 - 0x7c, 0x67, 0xc3, 0x7e, 0xf1, 0x0b, 0xb4, 0x48, 0x9e, 0xd6, 0x6d, 0x06,
92558 - 0xcc, 0x57, 0xe9, 0x43, 0x25, 0xe4, 0x3a, 0x0f, 0xa6, 0xec, 0xe7, 0x73,
92559 - 0x72, 0x15, 0x46, 0x18, 0x8b, 0x69, 0xa3, 0x25, 0x86, 0x0f, 0x33, 0xc8,
92560 - 0xeb, 0x16, 0x72, 0x3e, 0xca, 0xb2, 0x1e, 0x80, 0x1c, 0x02, 0xc4, 0x27,
92561 - 0x1c, 0x25, 0x08, 0x1e, 0xf5, 0xf3, 0x98, 0xcf, 0x83, 0x8a, 0xc8, 0xaa,
92562 - 0x98, 0x79, 0x94, 0x75, 0x47, 0x33, 0xb6, 0x2d, 0xfe, 0x3d, 0xe7, 0x3d,
92563 - 0x41, 0x5b, 0xff, 0x04, 0xb1, 0x7e, 0x72, 0x2f, 0xd0, 0x7f, 0x30, 0x6f,
92564 - 0xdb, 0x29, 0xb6, 0xdf, 0x4e, 0xcc, 0xbb, 0x40, 0x9b, 0xed, 0xe3, 0x7c,
92565 - 0x0f, 0x8d, 0x18, 0xc1, 0x46, 0x35, 0xa0, 0x4d, 0x70, 0x9e, 0x7b, 0xc6,
92566 - 0x54, 0x0c, 0x0c, 0x2e, 0xc3, 0x28, 0xf3, 0xa0, 0xde, 0xb4, 0xf8, 0x88,
92567 - 0x94, 0x39, 0x89, 0x6e, 0xfa, 0xc8, 0x2f, 0x17, 0x2b, 0x88, 0x7d, 0x5c,
92568 - 0xf6, 0xbe, 0x3b, 0x99, 0xef, 0x7f, 0x11, 0x9b, 0x12, 0x8f, 0x5b, 0x95,
92569 - 0x86, 0xde, 0x9f, 0x56, 0x99, 0x67, 0xd1, 0x36, 0x7b, 0x98, 0x9f, 0x2c,
92570 - 0x67, 0x7e, 0xd2, 0x5b, 0xb0, 0xcb, 0x33, 0xb4, 0xc3, 0x01, 0xc6, 0xb1,
92571 - 0x97, 0xd3, 0xf9, 0xb8, 0xf7, 0x83, 0x21, 0x3f, 0x16, 0x5e, 0x53, 0x89,
92572 - 0xa7, 0x0f, 0xe6, 0x65, 0xdb, 0x4b, 0x9b, 0x7c, 0x8a, 0x7a, 0xbe, 0x83,
92573 - 0x7a, 0x7d, 0x29, 0x25, 0x18, 0x15, 0xc4, 0x33, 0xe4, 0xd1, 0x5b, 0xc8,
92574 - 0x05, 0xbe, 0x97, 0xca, 0xdb, 0xe4, 0xe7, 0x27, 0xd6, 0x68, 0xf9, 0xf8,
92575 - 0xe0, 0x85, 0xba, 0x4f, 0xf6, 0x00, 0x5a, 0xd6, 0x72, 0x33, 0xd7, 0x49,
92576 - 0x5e, 0xc3, 0xb6, 0x23, 0xe4, 0x46, 0x4e, 0xcc, 0x49, 0x46, 0xb0, 0x22,
92577 - 0x55, 0xdf, 0xd6, 0x20, 0x9b, 0x3d, 0xe6, 0xe4, 0x39, 0xa0, 0x2b, 0x29,
92578 - 0xef, 0x0e, 0xd0, 0x50, 0xc1, 0xdc, 0xe9, 0xaf, 0x0b, 0xef, 0x2b, 0xf8,
92579 - 0xc4, 0x9f, 0xc1, 0x1d, 0xd7, 0x50, 0xa6, 0x14, 0xb9, 0xe3, 0x54, 0xe1,
92580 - 0x7d, 0x05, 0x37, 0xdb, 0xef, 0x2b, 0x70, 0x63, 0xc6, 0x84, 0xd3, 0xf9,
92581 - 0xa9, 0x94, 0x07, 0xb3, 0x27, 0x2e, 0x71, 0x50, 0x77, 0x49, 0xa4, 0x15,
92582 - 0x4f, 0x26, 0x14, 0xcc, 0x32, 0xfe, 0x27, 0xbe, 0x6f, 0xaf, 0x09, 0xd4,
92583 - 0xda, 0x7b, 0xf6, 0x5d, 0x91, 0x28, 0x0e, 0x27, 0xf4, 0xb6, 0xc7, 0x78,
92584 - 0x5e, 0x46, 0x3c, 0xad, 0xda, 0xa7, 0xe0, 0xa9, 0x80, 0x17, 0xa5, 0x47,
92585 - 0x64, 0xaf, 0xbb, 0x65, 0x39, 0x17, 0xaf, 0xb2, 0x76, 0xac, 0x13, 0xfb,
92586 - 0xe6, 0x1c, 0x1e, 0x09, 0x54, 0x09, 0x06, 0x1e, 0x36, 0x65, 0xdd, 0xd2,
92587 - 0x40, 0x5f, 0xa2, 0x96, 0xfc, 0xba, 0xbe, 0xb3, 0x15, 0xf5, 0xe6, 0xcf,
92588 - 0x1c, 0xb5, 0x28, 0x39, 0x72, 0x87, 0x26, 0x6b, 0xf6, 0xdf, 0xe0, 0x9c,
92589 - 0xf5, 0x12, 0xbb, 0x7a, 0x52, 0xf9, 0xf8, 0xd9, 0x9a, 0xb1, 0xaa, 0x45,
92590 - 0x2f, 0xbd, 0xe4, 0x27, 0x6a, 0xf2, 0xa2, 0x5d, 0xa6, 0x22, 0x92, 0x23,
92591 - 0xfe, 0xd4, 0xe1, 0x04, 0xf9, 0x82, 0xc4, 0xd2, 0x0a, 0x1e, 0x95, 0xe4,
92592 - 0x8d, 0x3f, 0x67, 0x2c, 0xbd, 0x27, 0x94, 0x0b, 0xca, 0x9b, 0x2c, 0x6a,
92593 - 0xc8, 0xc5, 0xe9, 0x03, 0x38, 0x12, 0xd2, 0xdb, 0x37, 0x38, 0xa2, 0x4f,
92594 - 0x33, 0x07, 0x0b, 0x2f, 0x63, 0x4e, 0xbe, 0x2a, 0x90, 0xc1, 0x2e, 0xf2,
92595 - 0xc0, 0x9d, 0xcc, 0xc5, 0x3b, 0x68, 0x9b, 0x9d, 0xfb, 0x19, 0xdb, 0x1c,
92596 - 0x97, 0x73, 0x71, 0x2d, 0x14, 0xdf, 0x40, 0x0e, 0xd0, 0xe5, 0x51, 0xc5,
92597 - 0x5e, 0xc5, 0x77, 0x02, 0x1d, 0xaf, 0x12, 0xa3, 0x1b, 0x19, 0x37, 0xc4,
92598 - 0xde, 0xf7, 0xa4, 0xf4, 0x4e, 0x2a, 0xa0, 0xa6, 0x92, 0xb9, 0xe3, 0xbd,
92599 - 0xe3, 0xcd, 0xf4, 0x9b, 0xfc, 0x33, 0x73, 0xce, 0x25, 0x75, 0xcc, 0x39,
92600 - 0xaf, 0x43, 0xef, 0x10, 0xed, 0x9f, 0xbe, 0x74, 0xff, 0x00, 0xc8, 0xcf,
92601 - 0xd4, 0x9d, 0x9c, 0xbf, 0xdc, 0x11, 0x04, 0x2e, 0xb6, 0xa3, 0xb1, 0xad,
92602 - 0xc4, 0x21, 0x32, 0xe8, 0xed, 0x6f, 0x90, 0xa7, 0x75, 0x31, 0x3f, 0xdd,
92603 - 0xc2, 0x5c, 0x3e, 0xc6, 0x5c, 0x3e, 0xc6, 0x7a, 0xa9, 0x21, 0xb9, 0x4f,
92604 - 0x64, 0xb4, 0x9f, 0x61, 0xfe, 0xf3, 0x39, 0xf2, 0x9f, 0xa1, 0x07, 0x44,
92605 - 0xae, 0x59, 0xb8, 0xf7, 0xf0, 0x75, 0x48, 0xd2, 0x9e, 0xee, 0xe1, 0xb5,
92606 - 0x81, 0x07, 0xe6, 0xe3, 0x6e, 0xe6, 0xf1, 0xb1, 0xf1, 0x65, 0x18, 0x64,
92607 - 0x26, 0xba, 0xed, 0xf0, 0x47, 0xd0, 0x43, 0x3e, 0xb5, 0x9c, 0x18, 0xbd,
92608 - 0xe1, 0x60, 0xc6, 0xc6, 0x6c, 0xc1, 0xfc, 0x1f, 0x67, 0x80, 0xd7, 0xc8,
92609 - 0xc9, 0x06, 0x53, 0x27, 0x6c, 0x9e, 0xe6, 0x62, 0x7c, 0x28, 0x25, 0x2e,
92610 - 0x85, 0xf7, 0x1b, 0x5d, 0x2b, 0x55, 0x6b, 0x59, 0xd9, 0xe2, 0x40, 0xff,
92611 - 0x1b, 0xf4, 0xd5, 0x9a, 0x23, 0x2a, 0x6a, 0x87, 0x25, 0x57, 0x27, 0x3f,
92612 - 0x22, 0x46, 0x3f, 0x47, 0x8c, 0xae, 0x3c, 0x94, 0xcf, 0xcb, 0x13, 0xcc,
92613 - 0xbb, 0x6a, 0x8d, 0x7c, 0x6e, 0xbe, 0x67, 0x40, 0xf6, 0xe8, 0xb8, 0xf1,
92614 - 0x1d, 0xda, 0xfe, 0xa9, 0x82, 0xed, 0x9f, 0x2e, 0x60, 0xb0, 0xc5, 0xdc,
92615 - 0xfc, 0x35, 0x1b, 0x7f, 0xf3, 0xb9, 0xf9, 0xc2, 0x61, 0xa3, 0x2b, 0x4c,
92616 - 0x8c, 0xbe, 0xfa, 0x90, 0xf4, 0xaf, 0xa1, 0x96, 0x78, 0x32, 0x93, 0x58,
92617 - 0x52, 0x35, 0x2c, 0xeb, 0x33, 0x81, 0xce, 0x09, 0xd5, 0x67, 0xf7, 0xb1,
92618 - 0x9d, 0xb2, 0xf5, 0xd2, 0x07, 0xbe, 0x9a, 0x30, 0xb4, 0xad, 0x4a, 0xc0,
92619 - 0x5c, 0x4d, 0x7d, 0x1e, 0xc9, 0x5c, 0x87, 0xce, 0xc1, 0x3a, 0x1c, 0x4b,
92620 - 0x4b, 0x7c, 0x91, 0xf6, 0x25, 0x17, 0x77, 0xe2, 0x9d, 0xfd, 0x73, 0xf1,
92621 - 0xce, 0xd8, 0xe5, 0x3c, 0x7c, 0x47, 0x2a, 0x7a, 0x3f, 0xc3, 0xeb, 0x2a,
92622 - 0xc9, 0xc3, 0xbf, 0xc7, 0x3c, 0xfc, 0x0d, 0x45, 0xd6, 0x10, 0x55, 0x7c,
92623 - 0x62, 0x91, 0x83, 0xf1, 0x45, 0xf7, 0x7f, 0xd7, 0x11, 0x97, 0xfb, 0xc8,
92624 - 0xfe, 0x07, 0xf8, 0xff, 0xb3, 0x8c, 0xe7, 0xc3, 0x9c, 0x89, 0x68, 0xad,
92625 - 0x03, 0x4f, 0x2f, 0x8e, 0x47, 0x65, 0x9d, 0xb4, 0x9f, 0x3c, 0x65, 0x0e,
92626 - 0xe3, 0xe1, 0xdf, 0xa7, 0xea, 0xc3, 0x0b, 0x1d, 0x0e, 0x5c, 0x34, 0xf5,
92627 - 0xf6, 0x03, 0xbc, 0xf6, 0x4c, 0x56, 0x7c, 0x31, 0x4c, 0xfc, 0x5a, 0x59,
92628 - 0xf0, 0xc5, 0x5a, 0x94, 0xd3, 0xce, 0xe7, 0xd2, 0x5e, 0x7f, 0x9c, 0xd2,
92629 - 0x07, 0x9f, 0xa1, 0x9d, 0xd6, 0x5e, 0xb2, 0x53, 0x59, 0xa3, 0x95, 0xbc,
92630 - 0xa6, 0x9d, 0x79, 0xcd, 0xf4, 0xe7, 0xa5, 0x8f, 0xa3, 0x2f, 0x7b, 0x1f,
92631 - 0xee, 0xdd, 0xab, 0x77, 0x39, 0x1d, 0x71, 0x4b, 0x33, 0xba, 0x99, 0xa3,
92632 - 0x75, 0x23, 0xb0, 0xc8, 0xe8, 0xb8, 0xa0, 0xe8, 0x9d, 0x3f, 0x54, 0xca,
92633 - 0x99, 0xf3, 0x9d, 0xc1, 0xf6, 0x51, 0x3d, 0x98, 0x51, 0x0c, 0xdc, 0x40,
92634 - 0x8c, 0x7b, 0x78, 0xa4, 0x84, 0x76, 0xb8, 0x1e, 0x47, 0x06, 0xf5, 0x70,
92635 - 0x1c, 0x26, 0x31, 0xb4, 0xde, 0x5f, 0xa6, 0x5c, 0xc0, 0x69, 0xf3, 0x2c,
92636 - 0xb6, 0x67, 0xe7, 0x60, 0xbd, 0x26, 0x7b, 0x9a, 0xd6, 0x63, 0x62, 0xf0,
92637 - 0x02, 0x71, 0xa8, 0x9d, 0xdc, 0x4a, 0xf2, 0x06, 0x0b, 0x7b, 0x42, 0x57,
92638 - 0x63, 0x8b, 0xed, 0xbf, 0xa5, 0xf2, 0x4e, 0x0b, 0xcf, 0x3c, 0xc3, 0x20,
92639 - 0x4e, 0x48, 0x6e, 0xee, 0x9b, 0xb6, 0x3f, 0x57, 0xd6, 0x75, 0x1b, 0xab,
92640 - 0xf2, 0xf7, 0x95, 0xff, 0x58, 0x99, 0x29, 0x1c, 0x1a, 0x91, 0xf5, 0x85,
92641 - 0x19, 0xca, 0xe3, 0x83, 0x0d, 0xbe, 0x1e, 0xc6, 0x8f, 0xfb, 0xcd, 0x1c,
92642 - 0x5e, 0x5f, 0x5c, 0x86, 0x29, 0xaf, 0x82, 0xd0, 0xd5, 0x61, 0xe9, 0x83,
92643 - 0x9f, 0x73, 0x96, 0xff, 0x93, 0xd2, 0xce, 0x82, 0xc2, 0x9a, 0xc3, 0x3b,
92644 - 0x35, 0x8c, 0x55, 0x3c, 0x97, 0xe7, 0x03, 0xe5, 0xbc, 0x78, 0xfd, 0x47,
92645 - 0x56, 0xd4, 0x2b, 0xd7, 0x89, 0xd9, 0xb3, 0xc4, 0x7f, 0x67, 0x28, 0x77,
92646 - 0x12, 0x6f, 0xe7, 0x87, 0x66, 0x28, 0xeb, 0xd3, 0xc5, 0x3a, 0x2f, 0x22,
92647 - 0x3b, 0xf2, 0x22, 0xe7, 0x53, 0x0f, 0x4e, 0xc1, 0x55, 0x78, 0x56, 0x5e,
92648 - 0xf6, 0x81, 0xb9, 0xc8, 0x43, 0x65, 0x2d, 0xfe, 0x1c, 0x86, 0xf6, 0x0b,
92649 - 0x6f, 0xb4, 0xac, 0x40, 0xc3, 0x39, 0x6c, 0x3f, 0x7a, 0x42, 0xe9, 0x48,
92650 - 0xbd, 0x6b, 0xa1, 0x74, 0x46, 0x6c, 0x8e, 0xbd, 0xdf, 0x59, 0xda, 0xe8,
92651 - 0x53, 0xda, 0xb3, 0x81, 0xf0, 0xfd, 0x0c, 0xbe, 0x5a, 0x44, 0x9e, 0x63,
92652 - 0x97, 0xb1, 0x9d, 0xe0, 0x35, 0xc3, 0x7e, 0x66, 0xe8, 0xb8, 0x3d, 0xce,
92653 - 0xf7, 0xeb, 0xe1, 0x9b, 0x56, 0xb4, 0x5d, 0xea, 0x16, 0xe5, 0x9a, 0xcf,
92654 - 0x89, 0x16, 0xd9, 0x8a, 0xff, 0x8f, 0x17, 0x64, 0x2f, 0x25, 0x77, 0xce,
92655 - 0x97, 0xe9, 0xa4, 0xec, 0x25, 0xa1, 0x28, 0x4e, 0x35, 0x4f, 0x97, 0xbf,
92656 - 0x38, 0xd6, 0x83, 0xef, 0x69, 0x2f, 0x5f, 0xf6, 0xe3, 0xb5, 0xb2, 0x4f,
92657 - 0xea, 0x54, 0xf3, 0x24, 0xfe, 0xce, 0x5e, 0xd7, 0x78, 0xd3, 0xde, 0xdf,
92658 - 0xb9, 0xcb, 0x6c, 0x89, 0x96, 0xe1, 0xa3, 0x50, 0xaf, 0x8a, 0x2f, 0x2c,
92659 - 0xb3, 0xf9, 0x76, 0xb4, 0xbd, 0x8c, 0x39, 0xb7, 0xdb, 0x88, 0xde, 0xef,
92660 - 0x46, 0x2e, 0x47, 0x9e, 0xd0, 0x71, 0x51, 0x39, 0xa6, 0xdc, 0x11, 0xd0,
92661 - 0xb7, 0xbd, 0x4d, 0xfe, 0xf3, 0x6c, 0x20, 0xce, 0x39, 0x37, 0x7c, 0x03,
92662 - 0x8a, 0x6e, 0x6e, 0x62, 0x8c, 0x7d, 0x86, 0x39, 0xed, 0xc6, 0x40, 0xbf,
92663 - 0x7d, 0xcf, 0x53, 0x89, 0xac, 0xc1, 0x95, 0xf6, 0xfb, 0x26, 0xda, 0x61,
92664 - 0x64, 0x5e, 0x94, 0x35, 0x38, 0xfe, 0x8e, 0x61, 0xa1, 0x7d, 0x6d, 0x23,
92665 - 0x82, 0xf6, 0xf7, 0xba, 0xc2, 0x3b, 0x29, 0x3a, 0x50, 0x6f, 0x7f, 0x7f,
92666 - 0x1a, 0x0d, 0x99, 0x4b, 0x6b, 0xd5, 0xe8, 0x35, 0x2d, 0xeb, 0x49, 0x53,
92667 - 0x9e, 0x57, 0xbb, 0xb4, 0xb7, 0x7c, 0x8d, 0x83, 0x39, 0x10, 0x21, 0x25,
92668 - 0x96, 0x7f, 0x27, 0xcf, 0xe5, 0xe7, 0xc5, 0x56, 0xbc, 0x67, 0x6f, 0xb9,
92669 - 0xfd, 0xac, 0x93, 0xfd, 0xce, 0xa5, 0x05, 0x4b, 0x9c, 0xf8, 0x4e, 0xa2,
92670 - 0x2a, 0xe6, 0xe1, 0xef, 0xed, 0x4b, 0x4a, 0xb0, 0x25, 0x44, 0x0e, 0x7a,
92671 - 0xd5, 0x19, 0x9c, 0xcf, 0x38, 0x71, 0x26, 0x11, 0x0f, 0x8d, 0xb1, 0xbf,
92672 - 0x53, 0x09, 0x15, 0xa7, 0x47, 0xfa, 0x42, 0x87, 0xec, 0xbe, 0x5f, 0x45,
92673 - 0xef, 0x51, 0xb9, 0x0f, 0xd9, 0x8e, 0x0d, 0x89, 0xf3, 0x8c, 0xbb, 0xd2,
92674 - 0x96, 0xac, 0x05, 0xe8, 0xb9, 0x8d, 0xcc, 0x9f, 0x55, 0x47, 0x10, 0xb7,
92675 - 0x30, 0xde, 0x3d, 0x97, 0xe8, 0x86, 0x6b, 0xb1, 0xde, 0xf5, 0x2d, 0x72,
92676 - 0x96, 0xaa, 0x88, 0x1e, 0x7c, 0x4b, 0xe9, 0x20, 0x37, 0x74, 0x63, 0x32,
92677 - 0x21, 0x7e, 0x21, 0xef, 0xac, 0xf9, 0x34, 0x8e, 0x91, 0x23, 0x3f, 0x9b,
92678 - 0xd0, 0x70, 0xbe, 0xd9, 0x83, 0x0c, 0x39, 0xf3, 0x77, 0x12, 0x6e, 0x7c,
92679 - 0x95, 0x9c, 0xf9, 0x91, 0x11, 0x59, 0xb3, 0x6c, 0x45, 0x4b, 0x42, 0xd6,
92680 - 0xab, 0xc9, 0x03, 0xc7, 0xbc, 0xb4, 0x6d, 0xcb, 0xea, 0x35, 0x67, 0xd3,
92681 - 0x9f, 0xce, 0xb2, 0x4f, 0x59, 0xe7, 0x8c, 0x62, 0x35, 0x79, 0xd0, 0x23,
92682 - 0x63, 0x3e, 0x3c, 0xcf, 0x5c, 0x21, 0xc9, 0x7a, 0xcf, 0x25, 0xfc, 0x18,
92683 - 0xc8, 0xf8, 0xf0, 0x14, 0x73, 0x86, 0x9d, 0x3c, 0x97, 0xf7, 0x1f, 0x95,
92684 - 0x18, 0x41, 0xf2, 0xf2, 0x93, 0xa8, 0x18, 0xb8, 0x02, 0x9b, 0xd7, 0x3e,
92685 - 0x0a, 0x75, 0xe0, 0x04, 0x8f, 0x6b, 0xc9, 0x21, 0xae, 0x45, 0x6a, 0x24,
92686 - 0x82, 0xd4, 0xd8, 0x8b, 0xe8, 0x1f, 0x91, 0x71, 0xc9, 0x7b, 0x6c, 0x64,
92687 - 0x0f, 0x12, 0xb9, 0xe7, 0x80, 0x17, 0xe9, 0x31, 0xe9, 0xa7, 0x96, 0x7d,
92688 - 0xff, 0xb9, 0xed, 0xff, 0xab, 0xb5, 0xf9, 0x13, 0xd2, 0xf6, 0xa3, 0x7f,
92689 - 0xa4, 0x7d, 0xd1, 0x95, 0xac, 0xbd, 0xb4, 0x17, 0xd6, 0x5e, 0xdc, 0x6c,
92690 - 0xd3, 0x03, 0x47, 0x24, 0xb7, 0xb6, 0x12, 0x7a, 0x74, 0xb7, 0x62, 0xb4,
92691 - 0x55, 0x28, 0xe7, 0xb1, 0x3b, 0x2b, 0xef, 0x45, 0x28, 0xc5, 0x53, 0xc4,
92692 - 0x6b, 0x57, 0x48, 0xd7, 0xbe, 0x45, 0xdb, 0x59, 0x4e, 0x8c, 0x7b, 0xd5,
92693 - 0xbc, 0x1a, 0x71, 0x4d, 0xf4, 0x57, 0x8a, 0x17, 0x06, 0xdd, 0xc4, 0xa6,
92694 - 0x08, 0xf2, 0xcf, 0xc8, 0x79, 0xf0, 0x83, 0x84, 0x97, 0xf3, 0xd5, 0x98,
92695 - 0x33, 0x1c, 0x0d, 0xf2, 0x0c, 0x9e, 0x7d, 0xed, 0x54, 0x62, 0x23, 0x0e,
92696 - 0x51, 0xde, 0xe7, 0x12, 0x17, 0x39, 0x3f, 0x9d, 0xd4, 0xbf, 0xe8, 0x3b,
92697 - 0x5e, 0xd0, 0x75, 0x1f, 0x75, 0x5d, 0x87, 0x67, 0x12, 0x5f, 0xc4, 0x23,
92698 - 0x94, 0xff, 0xe1, 0x41, 0x23, 0x3a, 0x5f, 0x39, 0x49, 0xfc, 0x2e, 0xc5,
92699 - 0x69, 0xb6, 0x7d, 0x07, 0x33, 0xf7, 0x29, 0xe9, 0x2b, 0x25, 0xeb, 0xa5,
92700 - 0x0a, 0xde, 0x5a, 0x72, 0x12, 0x13, 0xfc, 0xef, 0x07, 0x83, 0xf2, 0x1c,
92701 - 0x5a, 0x35, 0xfb, 0x10, 0xfd, 0xf8, 0xed, 0xdc, 0xa4, 0x87, 0xbc, 0x6b,
92702 - 0x55, 0xf3, 0x49, 0xec, 0x4a, 0xcb, 0xb5, 0xf5, 0xe8, 0x1f, 0xbc, 0x00,
92703 - 0x47, 0xa8, 0x04, 0x77, 0x78, 0x9b, 0x69, 0xeb, 0x39, 0xec, 0xce, 0x34,
92704 - 0xcf, 0xc8, 0x73, 0xe2, 0xaa, 0x19, 0xf2, 0x4c, 0xd6, 0xa9, 0x44, 0x29,
92705 - 0xbe, 0xc3, 0x3a, 0x9b, 0x89, 0x15, 0xf9, 0x7b, 0x38, 0xe4, 0xfe, 0xc4,
92706 - 0xfa, 0x0c, 0xfb, 0x48, 0xd8, 0x6d, 0xcc, 0x50, 0x0e, 0xd0, 0x0f, 0xab,
92707 - 0x17, 0xcf, 0x50, 0x52, 0x69, 0xc9, 0x35, 0x5e, 0xc4, 0x13, 0x0f, 0xe4,
92708 - 0x75, 0x78, 0xc8, 0xdc, 0x88, 0x74, 0xa6, 0xba, 0xd0, 0xde, 0x4b, 0x85,
92709 - 0x7b, 0x6d, 0xf2, 0x3c, 0x88, 0x51, 0x78, 0x17, 0xc0, 0xe5, 0x7b, 0x6c,
92710 - 0xdf, 0xc8, 0x56, 0x91, 0xcf, 0x97, 0xd3, 0xd6, 0x4a, 0x62, 0x5e, 0xc6,
92711 - 0xf9, 0x8d, 0x8b, 0x34, 0xec, 0x5d, 0xfa, 0xd9, 0x5a, 0x54, 0x69, 0xce,
92712 - 0x5f, 0x35, 0xbf, 0xc8, 0x7e, 0xaa, 0x62, 0x35, 0x91, 0x47, 0xec, 0x7d,
92713 - 0x59, 0xa1, 0xa5, 0x33, 0x19, 0xe7, 0xe4, 0x5e, 0x75, 0x0c, 0xaf, 0x27,
92714 - 0x6a, 0x63, 0xb5, 0x91, 0x6a, 0xe6, 0xf6, 0x17, 0x30, 0x30, 0xea, 0x44,
92715 - 0x15, 0x79, 0x7c, 0x65, 0xb2, 0x16, 0x6e, 0x7b, 0x5d, 0xf1, 0x0a, 0xf2,
92716 - 0xa7, 0xb9, 0xe4, 0x48, 0x75, 0xa8, 0x26, 0x4f, 0xf2, 0x84, 0x2c, 0xeb,
92717 - 0xa7, 0x8b, 0x2d, 0xeb, 0x4a, 0x1e, 0x65, 0x3c, 0xce, 0x85, 0xc4, 0x4f,
92718 - 0xa3, 0x68, 0xb4, 0xfd, 0xd5, 0x40, 0x93, 0xfd, 0xdd, 0x4a, 0x5f, 0xef,
92719 - 0x0a, 0x2d, 0x9c, 0xf8, 0x62, 0xa8, 0x61, 0x62, 0x26, 0xd4, 0xe1, 0x59,
92720 - 0x70, 0xb0, 0xad, 0x8f, 0x2f, 0xb5, 0xd0, 0x6a, 0xca, 0xfb, 0x04, 0x84,
92721 - 0xa7, 0x6d, 0x24, 0x4f, 0xeb, 0x0f, 0x19, 0x13, 0x8f, 0xe2, 0x7a, 0xc6,
92722 - 0x5d, 0xf7, 0xb0, 0x8f, 0xfd, 0x48, 0xce, 0xef, 0xcc, 0xcd, 0x23, 0xff,
92723 - 0xbf, 0x7a, 0xb1, 0x70, 0xb6, 0x0e, 0x79, 0x97, 0x08, 0x3a, 0x26, 0x4e,
92724 - 0xe2, 0x26, 0x96, 0xf1, 0x0c, 0xbf, 0x84, 0x64, 0xf6, 0x47, 0x18, 0xc8,
92725 - 0x4a, 0x3c, 0xc9, 0xe1, 0x06, 0xb6, 0x5d, 0x3e, 0xdc, 0x46, 0xae, 0xba,
92726 - 0x06, 0x9b, 0x27, 0x2c, 0xac, 0x0a, 0x4d, 0x62, 0xd5, 0x04, 0x39, 0xf0,
92727 - 0x44, 0xd1, 0x5f, 0x85, 0xbf, 0xad, 0x81, 0x3c, 0x7f, 0xe6, 0x26, 0xb6,
92728 - 0xc8, 0xda, 0x9e, 0x4a, 0x3f, 0x6c, 0xa1, 0x7d, 0x3f, 0x9e, 0x8a, 0x63,
92729 - 0xc3, 0x84, 0x60, 0xee, 0x7d, 0xe8, 0x9d, 0x90, 0xb5, 0xe2, 0xaf, 0x84,
92730 - 0xe6, 0x4f, 0xfc, 0x08, 0x2d, 0x13, 0xe9, 0xd0, 0x82, 0x89, 0x31, 0xca,
92731 - 0x9d, 0xa0, 0x6c, 0x83, 0xa1, 0xfa, 0x89, 0x91, 0x50, 0x70, 0xe2, 0x40,
92732 - 0x28, 0x30, 0xd1, 0x8e, 0x9d, 0x13, 0xeb, 0xb0, 0x63, 0x62, 0x1b, 0xb6,
92733 - 0x4f, 0x08, 0x6e, 0x4f, 0x61, 0xe5, 0xc4, 0xab, 0x58, 0x31, 0xf1, 0x2c,
92734 - 0x5a, 0x27, 0xce, 0x62, 0xf9, 0xc4, 0x8b, 0x68, 0x9b, 0x78, 0x89, 0x63,
92735 - 0x91, 0xb5, 0x67, 0x59, 0x77, 0x2e, 0xde, 0xe7, 0x9b, 0xbe, 0x97, 0x5a,
92736 - 0xd6, 0x56, 0xe4, 0x59, 0x30, 0x99, 0x43, 0x17, 0xd6, 0x6a, 0xe7, 0xd0,
92737 - 0xb7, 0x5f, 0xde, 0xb5, 0xd6, 0xa8, 0xf5, 0x42, 0xee, 0xe1, 0xbe, 0x28,
92738 - 0xcf, 0x06, 0xd0, 0xc6, 0xa6, 0xef, 0x1b, 0xd6, 0xb5, 0xa9, 0x4b, 0xf7,
92739 - 0x3c, 0xe5, 0x99, 0x2c, 0x89, 0x3d, 0xe7, 0xd1, 0x93, 0xfd, 0x8d, 0x15,
92740 - 0xd5, 0xa4, 0xac, 0x3c, 0x2b, 0x26, 0xf6, 0x70, 0x0e, 0x0f, 0xed, 0x3f,
92741 - 0x4f, 0x0e, 0x35, 0x69, 0xaf, 0x1d, 0xbd, 0xbd, 0x40, 0xde, 0xd3, 0xe3,
92742 - 0x27, 0x36, 0x9d, 0x43, 0xea, 0x28, 0x30, 0x71, 0x50, 0xfc, 0x70, 0x23,
92743 - 0xfd, 0x70, 0x52, 0x7c, 0x32, 0x4e, 0x4c, 0xbe, 0xcd, 0x83, 0xfb, 0xc8,
92744 - 0x93, 0x4a, 0x90, 0x1b, 0x2b, 0xc7, 0xd3, 0x23, 0x71, 0x6b, 0x9e, 0x21,
92745 - 0xef, 0x2e, 0x31, 0x72, 0x57, 0x32, 0xee, 0xbf, 0xc4, 0x6b, 0x93, 0x83,
92746 - 0xf0, 0xfb, 0x8c, 0x80, 0x6f, 0x1e, 0xcf, 0x4f, 0xa7, 0x27, 0xc9, 0x71,
92747 - 0xba, 0x30, 0xc5, 0x6f, 0xc9, 0x89, 0x81, 0x5e, 0xa4, 0xd3, 0xa2, 0xcf,
92748 - 0x76, 0xea, 0x53, 0x70, 0x51, 0xef, 0x6a, 0x25, 0x1e, 0x5a, 0x8a, 0xe0,
92749 - 0xa1, 0x8a, 0x8a, 0x7d, 0xc2, 0x25, 0xec, 0x77, 0x9f, 0x98, 0x03, 0xca,
92750 - 0x8b, 0xf8, 0x0e, 0x73, 0x98, 0xf2, 0x7d, 0xe4, 0x43, 0xc4, 0xca, 0xaa,
92751 - 0x88, 0x62, 0xac, 0x0a, 0x9c, 0xc3, 0xd3, 0x63, 0x4e, 0xb8, 0x93, 0x4e,
92752 - 0x4c, 0x12, 0x27, 0x1d, 0x49, 0xd9, 0x3f, 0xa0, 0x51, 0x16, 0x59, 0xa7,
92753 - 0x3a, 0x8b, 0x9c, 0x7d, 0x7f, 0x4f, 0xee, 0xcf, 0x7c, 0xd7, 0xee, 0xc7,
92754 - 0x49, 0xd9, 0xfb, 0x88, 0xa5, 0x3d, 0xa9, 0xef, 0xa1, 0x35, 0xed, 0xb1,
92755 - 0x9f, 0xf3, 0xdb, 0x9d, 0x7a, 0x15, 0xa9, 0xfd, 0x75, 0xb8, 0xdd, 0x7e,
92756 - 0xd6, 0xcf, 0x84, 0x46, 0xbd, 0xdd, 0x32, 0x6e, 0x22, 0x7a, 0x78, 0x1d,
92757 - 0xd6, 0x1e, 0xfe, 0x24, 0x8f, 0x59, 0xb8, 0xe9, 0x70, 0x27, 0x6e, 0x1c,
92758 - 0x8f, 0xa3, 0x63, 0xbc, 0x8f, 0xc7, 0x7a, 0x7c, 0x6c, 0xa8, 0x1a, 0x99,
92759 - 0x90, 0xc6, 0x1c, 0x7f, 0x3d, 0x73, 0x7c, 0xe1, 0x67, 0x1b, 0xf0, 0x34,
92760 - 0x71, 0x27, 0x18, 0xda, 0x80, 0x49, 0xdb, 0x17, 0x65, 0x8f, 0xe5, 0x06,
92761 - 0x6c, 0x67, 0xfe, 0x3e, 0x8a, 0x0d, 0xe8, 0xe1, 0xb5, 0x21, 0x7b, 0x0e,
92762 - 0x4e, 0x62, 0x19, 0xf3, 0xb3, 0x77, 0xae, 0x39, 0x89, 0x0f, 0x1f, 0x92,
92763 - 0xbe, 0x2f, 0x20, 0xb5, 0x77, 0x23, 0xdb, 0xcc, 0xa1, 0x7d, 0xfc, 0x9f,
92764 - 0x71, 0xe3, 0x10, 0xee, 0xac, 0x46, 0x35, 0x9e, 0x0d, 0x05, 0x3a, 0x06,
92765 - 0x94, 0x7f, 0xb6, 0xdb, 0xde, 0x9e, 0xfa, 0x11, 0x76, 0xa5, 0xce, 0xe3,
92766 - 0xe1, 0xcc, 0x4b, 0xe8, 0x4f, 0x4d, 0x9f, 0x53, 0x99, 0xcb, 0x37, 0x19,
92767 - 0x0f, 0xbe, 0x8f, 0x23, 0x63, 0x53, 0xc4, 0xde, 0x57, 0x78, 0xbc, 0xff,
92768 - 0x7e, 0x7a, 0xfe, 0x39, 0xdc, 0xbc, 0xdd, 0x48, 0x3e, 0x55, 0xe4, 0x6f,
92769 - 0x71, 0xab, 0xda, 0xc8, 0xed, 0x9a, 0x03, 0x7d, 0x5b, 0x58, 0x95, 0xfb,
92770 - 0x81, 0x46, 0xec, 0x05, 0x45, 0x6f, 0xff, 0x96, 0xe2, 0x61, 0xae, 0x21,
92771 - 0xcf, 0x45, 0xea, 0xd1, 0x1b, 0xa8, 0xef, 0xb2, 0x07, 0xbe, 0x0f, 0xe7,
92772 - 0x03, 0x4e, 0x94, 0x26, 0x65, 0x2d, 0x47, 0xde, 0x2b, 0x23, 0xef, 0x30,
92773 - 0xc9, 0xe9, 0xa5, 0xf2, 0xae, 0x89, 0xe4, 0x24, 0x63, 0x7f, 0x6e, 0x61,
92774 - 0x09, 0xe4, 0x39, 0xec, 0xeb, 0xb0, 0x71, 0x30, 0x8a, 0x1e, 0x53, 0x9e,
92775 - 0x31, 0xca, 0x8f, 0x7f, 0x5e, 0xf3, 0xf7, 0xd1, 0xcb, 0xf8, 0xb3, 0x9e,
92776 - 0x98, 0x78, 0xbb, 0x7d, 0x6f, 0xf6, 0xfb, 0xe8, 0x1b, 0xf9, 0x47, 0xb7,
92777 - 0xf0, 0x9d, 0x3e, 0x53, 0x9e, 0xe3, 0xd6, 0xcd, 0xf7, 0xbe, 0xc3, 0x66,
92778 - 0xbe, 0xec, 0x69, 0xa3, 0x4d, 0xe4, 0x16, 0xba, 0xb0, 0xbd, 0x36, 0xff,
92779 - 0x1e, 0x95, 0x0f, 0x7a, 0xe7, 0xd0, 0x5f, 0xda, 0xef, 0x1c, 0x92, 0xfb,
92780 - 0xfa, 0xf2, 0xbe, 0xaa, 0x27, 0x12, 0xf2, 0x1e, 0x09, 0x75, 0x99, 0x0b,
92781 - 0xaa, 0xd7, 0x45, 0x5e, 0xf8, 0xaa, 0x39, 0x13, 0xbd, 0x5e, 0x0b, 0xd7,
92782 - 0x53, 0x96, 0x63, 0x4d, 0x1f, 0x63, 0xe6, 0x12, 0xef, 0x70, 0xd9, 0xef,
92783 - 0x26, 0x39, 0xff, 0xa9, 0x7f, 0xff, 0x6e, 0x92, 0x37, 0x89, 0x93, 0x0a,
92784 - 0x2a, 0x8d, 0x5b, 0xf0, 0x9c, 0x1d, 0x13, 0x14, 0x54, 0x34, 0xc8, 0xba,
92785 - 0xa8, 0x1f, 0xcf, 0x18, 0x8d, 0xfe, 0x1a, 0xb9, 0xdf, 0xa5, 0x9c, 0xb3,
92786 - 0xe2, 0xde, 0x3a, 0xc6, 0x97, 0xff, 0x68, 0x2f, 0xfe, 0xf3, 0xd8, 0xb9,
92787 - 0x37, 0x4c, 0xce, 0xe8, 0x95, 0x67, 0x23, 0x67, 0x14, 0x9f, 0xc5, 0xdc,
92788 - 0x91, 0x92, 0x3d, 0xec, 0x0c, 0x8a, 0xe5, 0x6f, 0xd2, 0xcf, 0xde, 0x94,
92789 - 0x3d, 0x58, 0xe4, 0x3c, 0x7f, 0x85, 0x60, 0xcd, 0x8c, 0xfc, 0x73, 0x52,
92790 - 0xf6, 0x5e, 0x5f, 0x59, 0x0f, 0xd8, 0x5e, 0x78, 0xef, 0xa2, 0x94, 0x95,
92791 - 0x7a, 0x6f, 0xda, 0x6b, 0xc2, 0x2e, 0xe3, 0x37, 0xd6, 0x6b, 0xde, 0x5a,
92792 - 0x96, 0xfd, 0x45, 0xe1, 0xff, 0xf3, 0xe2, 0x33, 0x66, 0x14, 0x72, 0x4d,
92793 - 0xea, 0x88, 0xae, 0x2e, 0xd7, 0xe9, 0x4d, 0x39, 0x88, 0x7b, 0x67, 0xad,
92794 - 0x6e, 0xaf, 0x8c, 0x61, 0xec, 0x7d, 0x75, 0x54, 0xfb, 0x1d, 0x84, 0x79,
92795 - 0xfd, 0x8a, 0x3c, 0xff, 0xbe, 0x4f, 0x59, 0x3f, 0x2e, 0x31, 0x2a, 0x70,
92796 - 0xae, 0x26, 0xbf, 0xae, 0x73, 0x59, 0xc6, 0x47, 0xbc, 0xb2, 0xef, 0xaf,
92797 - 0xd4, 0x3e, 0xb7, 0xfb, 0x35, 0x2f, 0xd7, 0xfb, 0x46, 0x61, 0xbc, 0xb5,
92798 - 0xf6, 0xb3, 0x4a, 0x0f, 0xda, 0xbc, 0xc6, 0x31, 0x6d, 0xdc, 0xcb, 0xbc,
92799 - 0xef, 0xed, 0x67, 0xa4, 0xd0, 0xaf, 0x6a, 0x3f, 0xef, 0x75, 0xb9, 0x0f,
92800 - 0x91, 0xeb, 0xa9, 0x42, 0x1d, 0x3d, 0x1c, 0xb5, 0xfb, 0x57, 0x99, 0xbf,
92801 - 0x15, 0xfb, 0xa4, 0x3f, 0x2d, 0x2e, 0xb6, 0x31, 0x29, 0xf6, 0xd5, 0x5d,
92802 - 0xca, 0xd8, 0x74, 0xae, 0xf9, 0x3e, 0x6c, 0x4f, 0x88, 0x9e, 0xe5, 0x1d,
92803 - 0x95, 0xc4, 0x60, 0x9b, 0x6b, 0xb9, 0xe8, 0x6f, 0x4b, 0x91, 0xd6, 0xe2,
92804 - 0x38, 0xd4, 0x24, 0xcf, 0xe6, 0xb9, 0x68, 0xd3, 0x71, 0x94, 0x91, 0xdb,
92805 - 0x46, 0x79, 0x4d, 0xf6, 0xb4, 0x1c, 0x31, 0xf5, 0xe8, 0x13, 0xf8, 0x12,
92806 - 0x1c, 0x57, 0xd9, 0xeb, 0x5f, 0x6d, 0x69, 0xc8, 0x75, 0x93, 0xb9, 0xc9,
92807 - 0xf4, 0x15, 0x83, 0x32, 0xda, 0x8e, 0xbd, 0x17, 0xdb, 0x94, 0x67, 0xf7,
92808 - 0x06, 0x12, 0xf2, 0x0c, 0x59, 0x63, 0x8c, 0xfc, 0x10, 0xcf, 0x65, 0x64,
92809 - 0xff, 0xc3, 0x6f, 0xad, 0xf8, 0x4c, 0xd9, 0x67, 0x39, 0xbd, 0x4e, 0x09,
92810 - 0x71, 0x29, 0x10, 0xae, 0x52, 0x8a, 0xcf, 0x91, 0x5d, 0xfe, 0xdc, 0x44,
92811 - 0x9b, 0x39, 0x6f, 0x3f, 0xfb, 0x27, 0x67, 0x11, 0xb4, 0xa4, 0xe4, 0x5d,
92812 - 0x8c, 0xfa, 0xe4, 0x2a, 0x34, 0xe6, 0xea, 0x1d, 0xce, 0x02, 0xff, 0x08,
92813 - 0x63, 0x0d, 0xed, 0x66, 0x47, 0x20, 0x6c, 0x3f, 0xe3, 0x26, 0xef, 0xdc,
92814 - 0x78, 0x18, 0x7a, 0xe7, 0x1b, 0x2c, 0xff, 0xb1, 0xec, 0xf3, 0x56, 0xda,
92815 - 0x2b, 0x63, 0x2a, 0xfa, 0xb8, 0xbc, 0xdb, 0x87, 0x7a, 0x8c, 0x88, 0x7f,
92816 - 0x78, 0x50, 0x13, 0x09, 0xd3, 0x0f, 0x25, 0x7e, 0xcb, 0xf3, 0x71, 0xfa,
92817 - 0x01, 0xc9, 0xab, 0x5a, 0xb2, 0xf2, 0xfc, 0xb7, 0xec, 0x9b, 0xd6, 0xfd,
92818 - 0x6b, 0x1d, 0xc1, 0xc2, 0xfe, 0xe5, 0x62, 0xbc, 0xb7, 0xbc, 0x85, 0xbd,
92819 - 0xd5, 0xee, 0x79, 0x8c, 0x6f, 0x96, 0xbd, 0x6f, 0x60, 0xa3, 0x8d, 0x0d,
92820 - 0x9a, 0xa1, 0x1f, 0xfb, 0xa5, 0xa3, 0x1b, 0x8f, 0x2d, 0x32, 0xba, 0x8e,
92821 - 0xab, 0xb9, 0xb4, 0x8f, 0x38, 0x71, 0xad, 0x23, 0x3a, 0xc4, 0x6f, 0xff,
92822 - 0x77, 0x89, 0xcd, 0x37, 0xd9, 0x75, 0xf5, 0xe0, 0x3a, 0xb5, 0xf8, 0x6c,
92823 - 0xb5, 0x3c, 0x73, 0xa1, 0x77, 0x7c, 0x43, 0xe9, 0xc6, 0xd6, 0x90, 0xd1,
92824 - 0xbe, 0x4d, 0xd1, 0xdb, 0xbe, 0xac, 0xe8, 0xfe, 0x90, 0x22, 0xe5, 0xec,
92825 - 0x77, 0xe8, 0x5c, 0x8a, 0x9d, 0x2e, 0xf6, 0x71, 0x38, 0xa1, 0x87, 0x67,
92826 - 0xb0, 0xec, 0x39, 0xd3, 0xf0, 0x5d, 0x60, 0x9b, 0x3f, 0xe4, 0x31, 0x84,
92827 - 0x20, 0x96, 0xdb, 0xed, 0x46, 0x17, 0xba, 0xec, 0xf7, 0xa4, 0x76, 0x30,
92828 - 0x26, 0xc8, 0xfb, 0xb0, 0x62, 0xd0, 0x92, 0x75, 0x34, 0x31, 0xbd, 0xff,
92829 - 0x66, 0x48, 0x4e, 0xdd, 0xc3, 0x80, 0xed, 0x81, 0x37, 0xd2, 0x8d, 0x86,
92830 - 0x45, 0x86, 0x6f, 0x89, 0x6a, 0xd7, 0x0f, 0xca, 0xfb, 0x81, 0x96, 0x73,
92831 - 0x9c, 0x23, 0x90, 0x36, 0x72, 0x96, 0xd6, 0x50, 0x6d, 0xd7, 0x59, 0xa4,
92832 - 0x7e, 0x14, 0xae, 0x0f, 0xfd, 0xca, 0x4a, 0x6b, 0xd0, 0x6a, 0x0d, 0xa9,
92833 - 0x13, 0x1f, 0xd2, 0xf0, 0x1f, 0xd5, 0x13, 0x5c, 0xf9, 0xa5, 0x85, 0x59,
92834 - 0x52, 0x4f, 0xf6, 0xac, 0x7d, 0x1a, 0x77, 0x0d, 0xc8, 0x7b, 0x22, 0xc4,
92835 - 0x1f, 0xf5, 0xe8, 0x17, 0xc8, 0x35, 0xcb, 0xed, 0xf7, 0x6f, 0x49, 0x2c,
92836 - 0x59, 0x4f, 0x3c, 0xeb, 0x86, 0x16, 0xd2, 0xfb, 0xaf, 0x50, 0xe5, 0x1d,
92837 - 0x43, 0x8f, 0xc9, 0xbe, 0x9d, 0x03, 0x0b, 0xd4, 0xfc, 0xfe, 0x9e, 0xd8,
92838 - 0x1f, 0x7d, 0x5f, 0x11, 0xfb, 0x2a, 0x97, 0xf7, 0x15, 0xd5, 0xd9, 0xcf,
92839 - 0xa7, 0xac, 0x4f, 0x38, 0x0a, 0xfb, 0x15, 0x2f, 0xbf, 0xc7, 0x73, 0x23,
92840 - 0x79, 0xfd, 0x26, 0x79, 0x67, 0x1f, 0xc7, 0xba, 0x39, 0x21, 0x4b, 0x5a,
92841 - 0xff, 0x0f, 0xdd, 0x0f, 0x6b, 0xf2, 0xd0, 0x56, 0x00, 0x00, 0x00 };
92842 + 0x9d, 0xbc, 0x0d, 0x78, 0x1b, 0xe5, 0x95, 0x36, 0x7c, 0xcf, 0x48, 0xb2,
92843 + 0x65, 0x5b, 0xb6, 0xc7, 0x8e, 0x9c, 0x28, 0x6c, 0x9a, 0x68, 0xf0, 0x28,
92844 + 0x51, 0xb0, 0x69, 0x47, 0x89, 0x03, 0x82, 0x55, 0x89, 0xea, 0x98, 0xc4,
92845 + 0x81, 0x50, 0x9c, 0x12, 0x5a, 0xb3, 0x4b, 0x5b, 0xe1, 0xfc, 0x60, 0x42,
92846 + 0xa0, 0xa1, 0xb0, 0xef, 0x9a, 0xef, 0x65, 0x5f, 0xab, 0xb6, 0x93, 0x38,
92847 + 0x89, 0x2c, 0x39, 0x8e, 0x21, 0x61, 0xbf, 0x5e, 0x8b, 0x89, 0x9d, 0x38,
92848 + 0x80, 0x6c, 0x85, 0x36, 0xdd, 0x0d, 0x7d, 0xd3, 0x8d, 0x36, 0x09, 0x60,
92849 + 0xfe, 0xda, 0x40, 0xbb, 0x2c, 0xed, 0xcb, 0x07, 0xde, 0x14, 0x42, 0xd8,
92850 + 0xb6, 0x40, 0xb7, 0x3f, 0x1b, 0x5a, 0xca, 0xbc, 0xf7, 0x19, 0x49, 0x89,
92851 + 0x13, 0x28, 0xed, 0x7e, 0xbe, 0xae, 0xb9, 0xac, 0x99, 0x79, 0x7e, 0xce,
92852 + 0x73, 0x9e, 0x73, 0xee, 0x73, 0x9f, 0x67, 0x9e, 0x19, 0x3f, 0x50, 0x8a,
92853 + 0xfc, 0x5f, 0x39, 0x8f, 0x4f, 0x37, 0x6c, 0x5c, 0xbd, 0x60, 0xc1, 0xa7,
92854 + 0x1b, 0xe4, 0xdc, 0x39, 0xdd, 0xe9, 0xc4, 0x9f, 0xf9, 0xe7, 0xff, 0x73,
92855 + 0x0b, 0x7e, 0xcc, 0x9f, 0x03, 0xd0, 0x0a, 0xfd, 0xcb, 0x01, 0xb7, 0x1a,
92856 + 0x71, 0xde, 0xdc, 0x68, 0xc0, 0xed, 0x88, 0x4c, 0xb4, 0xad, 0x36, 0x80,
92857 + 0x68, 0xba, 0xce, 0xbf, 0x04, 0x7f, 0xb0, 0xe2, 0x5e, 0x27, 0xe4, 0xfa,
92858 + 0xa7, 0x22, 0x1f, 0x74, 0x7e, 0xef, 0x72, 0xfd, 0xbd, 0x21, 0x07, 0xdc,
92859 + 0x5a, 0x24, 0x0e, 0x6d, 0x2e, 0xdc, 0xb3, 0x58, 0xe7, 0x9b, 0xf3, 0xbe,
92860 + 0xa9, 0xa0, 0xa2, 0xd0, 0xd6, 0x69, 0xeb, 0x7b, 0xf3, 0x7c, 0xb1, 0x92,
92861 + 0x88, 0x86, 0x23, 0x19, 0xb4, 0xd4, 0xf7, 0x75, 0x5a, 0xe5, 0x46, 0x08,
92862 + 0x6e, 0xc3, 0x68, 0xed, 0x53, 0x3c, 0xe1, 0xf5, 0x8b, 0xe0, 0x29, 0x36,
92863 + 0x10, 0xbf, 0x28, 0x82, 0x96, 0x4b, 0xc6, 0x4a, 0xe3, 0xce, 0x88, 0x1b,
92864 + 0xcd, 0x19, 0x77, 0xfc, 0x2f, 0x22, 0x06, 0x96, 0x65, 0x66, 0x95, 0xa2,
92865 + 0xc2, 0x8d, 0x9e, 0xcc, 0xeb, 0x25, 0xb9, 0xf6, 0xea, 0xf3, 0xff, 0x83,
92866 + 0xd3, 0x72, 0xff, 0xa7, 0xc7, 0x9c, 0x11, 0x60, 0x53, 0xc2, 0xb2, 0x8a,
92867 + 0x22, 0x37, 0xdc, 0xa0, 0x46, 0x0c, 0xdf, 0x3e, 0x2c, 0x46, 0x9b, 0x86,
92868 + 0xfb, 0x36, 0x37, 0xfc, 0xa7, 0x72, 0x74, 0x90, 0x0d, 0x8f, 0x3a, 0x10,
92869 + 0xd5, 0x8e, 0xf3, 0xff, 0xec, 0xd9, 0xad, 0x61, 0x03, 0xbb, 0x47, 0xcf,
92870 + 0xf0, 0xba, 0xd3, 0xbe, 0xd6, 0xbd, 0x6b, 0xf6, 0xec, 0x9b, 0xc2, 0xc7,
92871 + 0xf1, 0xe0, 0xa8, 0xfc, 0xbe, 0x15, 0x9d, 0xf5, 0x0a, 0x26, 0x6f, 0x58,
92872 + 0x07, 0x87, 0x61, 0xa0, 0x67, 0x97, 0xe2, 0xec, 0xaa, 0x57, 0x11, 0xf5,
92873 + 0xea, 0xc1, 0x18, 0x27, 0xc1, 0x69, 0x20, 0x56, 0x1c, 0x09, 0x3b, 0xdf,
92874 + 0x4e, 0x44, 0x34, 0x87, 0x61, 0x59, 0xc1, 0xd0, 0x0c, 0x38, 0xaa, 0x2c,
92875 + 0xeb, 0x09, 0xd3, 0x03, 0xff, 0x97, 0x9e, 0x42, 0x7c, 0xb8, 0x05, 0xaa,
92876 + 0xf1, 0x14, 0xba, 0x86, 0x9f, 0xc2, 0x43, 0x3b, 0x4b, 0x31, 0x39, 0x8d,
92877 + 0xe3, 0x4d, 0xf9, 0xf0, 0xbd, 0x79, 0xd2, 0xb7, 0xc8, 0x51, 0xcf, 0xc3,
92878 + 0x8d, 0x49, 0xc7, 0x6b, 0xfc, 0x2f, 0x65, 0xce, 0x58, 0x93, 0x33, 0xce,
92879 + 0x95, 0xd9, 0xc4, 0x32, 0x3d, 0x17, 0x94, 0x89, 0x0f, 0x47, 0xf0, 0x5c,
92880 + 0x42, 0xc1, 0xfa, 0x50, 0x05, 0xa2, 0x55, 0x32, 0x5e, 0xcb, 0x1a, 0x35,
92881 + 0x4f, 0x59, 0x93, 0x9a, 0xf4, 0x35, 0x81, 0xe7, 0x79, 0x6f, 0x73, 0xe8,
92882 + 0x0d, 0x2b, 0xeb, 0x95, 0xf6, 0xbe, 0x4e, 0x1b, 0x5a, 0xc9, 0xeb, 0x4e,
92883 + 0xa4, 0x12, 0x88, 0x55, 0x44, 0x6e, 0xe4, 0xb9, 0x6e, 0xbe, 0xa3, 0xb8,
92884 + 0xdd, 0xef, 0x26, 0xdc, 0x5f, 0x2a, 0x37, 0xd4, 0x7b, 0x2a, 0xe1, 0xc4,
92885 + 0x0b, 0x94, 0xf9, 0x90, 0xb9, 0x0e, 0x2e, 0xe3, 0x6e, 0xb1, 0x39, 0x8e,
92886 + 0xeb, 0x47, 0x16, 0x66, 0x14, 0xea, 0x4b, 0xbb, 0x6e, 0x6c, 0x4e, 0x59,
92887 + 0xd6, 0x56, 0x33, 0x7a, 0x45, 0x09, 0x0d, 0xe2, 0x58, 0xa2, 0x05, 0xee,
92888 + 0x48, 0xc0, 0x7f, 0x1a, 0x61, 0x2c, 0xc9, 0x78, 0xf1, 0x64, 0x02, 0xce,
92889 + 0xc6, 0x79, 0x5e, 0x74, 0x65, 0x22, 0xb8, 0x3a, 0x63, 0xa2, 0x29, 0xf3,
92890 + 0xa7, 0x2d, 0xeb, 0xda, 0x94, 0x9f, 0x63, 0xf8, 0x83, 0x95, 0x1b, 0x83,
92891 + 0x8c, 0x2f, 0xf7, 0xbf, 0x27, 0x75, 0x11, 0xb6, 0x71, 0x8e, 0xb6, 0x70,
92892 + 0xfe, 0x96, 0x87, 0xb2, 0xd1, 0x12, 0xe8, 0xe6, 0x69, 0x44, 0xb0, 0x34,
92893 + 0x63, 0x70, 0x4e, 0x23, 0x58, 0x92, 0xaa, 0xd5, 0x86, 0x31, 0x1f, 0x51,
92894 + 0x5f, 0xce, 0xb6, 0xb7, 0x73, 0xbc, 0x6d, 0x81, 0x16, 0x94, 0xd3, 0x46,
92895 + 0xd2, 0x8b, 0xc2, 0x68, 0x64, 0xff, 0x2b, 0xfe, 0x8c, 0xfe, 0xaf, 0x67,
92896 + 0xff, 0xef, 0xb0, 0xff, 0xac, 0xdd, 0x3f, 0x9c, 0xd7, 0xf0, 0xdc, 0x4d,
92897 + 0x7b, 0xdc, 0x96, 0x76, 0x3a, 0x97, 0xa7, 0xbc, 0xd8, 0x9a, 0x36, 0x69,
92898 + 0x73, 0x72, 0xcb, 0x87, 0xcd, 0x83, 0xb3, 0xb0, 0x65, 0x50, 0xf7, 0x3d,
92899 + 0xcd, 0xdf, 0xdd, 0x23, 0x17, 0x61, 0xd3, 0xa0, 0x82, 0x3d, 0xc6, 0x45,
92900 + 0xe8, 0xe2, 0xef, 0xdd, 0x83, 0xb3, 0xf1, 0xe0, 0xa0, 0x03, 0xe1, 0x69,
92901 + 0xe7, 0x8f, 0x63, 0xd2, 0x71, 0x11, 0xe2, 0x23, 0x7e, 0x74, 0x25, 0x9e,
92902 + 0xb7, 0x75, 0x58, 0x1e, 0xf9, 0x5e, 0xc1, 0x9f, 0xe9, 0x3b, 0x7e, 0xac,
92903 + 0x4e, 0x68, 0xe8, 0x4a, 0x89, 0x1f, 0xb8, 0x69, 0x9b, 0xe2, 0x07, 0xbf,
92904 + 0x06, 0x2a, 0x34, 0x74, 0x67, 0x0a, 0xf7, 0x15, 0x38, 0x39, 0x6f, 0x6b,
92905 + 0x34, 0x37, 0xb6, 0xa6, 0xc4, 0x26, 0xa4, 0x4d, 0xb1, 0x0b, 0xf9, 0x5d,
92906 + 0x4d, 0xbb, 0x2b, 0x85, 0x7f, 0x6f, 0x29, 0x82, 0xf7, 0x6b, 0x78, 0xb3,
92907 + 0x41, 0xae, 0xd3, 0xde, 0x43, 0x52, 0xa6, 0x1f, 0xfb, 0xd2, 0xe2, 0xa7,
92908 + 0x7e, 0x34, 0x26, 0x26, 0xd8, 0x7e, 0x03, 0xdb, 0x36, 0xf1, 0xcf, 0x99,
92909 + 0x7a, 0xfc, 0x53, 0x26, 0x88, 0x7f, 0xa4, 0x1e, 0xbf, 0x93, 0xf1, 0xe3,
92910 + 0x60, 0x66, 0x16, 0xbe, 0x9d, 0xf1, 0xe1, 0x5b, 0x9c, 0xbf, 0xc7, 0x33,
92911 + 0x2d, 0xb4, 0x7d, 0x0d, 0x07, 0x32, 0xa2, 0xff, 0x22, 0x8e, 0xb7, 0x14,
92912 + 0xdd, 0x83, 0xb5, 0xc1, 0x63, 0xb4, 0xad, 0x7f, 0x34, 0xaf, 0x41, 0xb6,
92913 + 0xba, 0xc1, 0xb6, 0xc9, 0xad, 0xbc, 0xbe, 0x6d, 0xb0, 0x36, 0x7a, 0x89,
92914 + 0x62, 0x59, 0x6a, 0xa8, 0x2e, 0x7c, 0x54, 0x55, 0x31, 0xe9, 0xd5, 0xfd,
92915 + 0x59, 0x55, 0xf7, 0x47, 0xe1, 0x42, 0x82, 0xbe, 0x11, 0xaf, 0xd1, 0x87,
92916 + 0xe2, 0xb4, 0x29, 0xaf, 0x31, 0xcc, 0xf1, 0xe8, 0xfe, 0xb8, 0xea, 0xc6,
92917 + 0x96, 0x94, 0xbe, 0x3b, 0xae, 0x7a, 0x10, 0xcf, 0x94, 0xe2, 0x17, 0x83,
92918 + 0x7a, 0x6f, 0x5c, 0xfd, 0x3c, 0xe2, 0xd5, 0x96, 0xf5, 0xad, 0x10, 0x36,
92919 + 0xce, 0x88, 0x20, 0x5a, 0x13, 0x41, 0x6c, 0x76, 0xc4, 0x8b, 0x54, 0x0a,
92920 + 0x78, 0xa7, 0xcf, 0xf0, 0xfd, 0x9b, 0xd2, 0x82, 0xbf, 0x69, 0xd1, 0xfd,
92921 + 0x7e, 0xb5, 0x2e, 0x3e, 0xac, 0x2e, 0xa2, 0x4b, 0xc3, 0xef, 0x8b, 0x2c,
92922 + 0x43, 0x87, 0x7d, 0x4d, 0x81, 0x66, 0x78, 0xd0, 0x9d, 0xba, 0x02, 0x31,
92923 + 0x6f, 0x6d, 0xeb, 0x0e, 0xb5, 0xf6, 0x8c, 0xa9, 0xea, 0x13, 0x2d, 0xaa,
92924 + 0x65, 0xfd, 0x72, 0xe1, 0x3b, 0x96, 0x7f, 0xba, 0x65, 0x2d, 0x58, 0x28,
92925 + 0x7d, 0xfa, 0x51, 0x15, 0x31, 0xb1, 0xd2, 0x9e, 0xc3, 0x52, 0x9c, 0x1a,
92926 + 0xac, 0x66, 0x1f, 0x1a, 0xfe, 0xf5, 0x72, 0x3d, 0xb8, 0x4e, 0x2d, 0xc5,
92927 + 0x9b, 0x23, 0xa5, 0x38, 0xc9, 0xf1, 0xfc, 0xe7, 0xa0, 0x0f, 0xbf, 0x1e,
92928 + 0xb4, 0xac, 0x2f, 0x99, 0x7f, 0x89, 0x81, 0xea, 0x7e, 0xfc, 0xd3, 0xb8,
92929 + 0x17, 0xbf, 0xe0, 0xdc, 0xbc, 0x91, 0x88, 0xde, 0x35, 0x0d, 0x7a, 0x74,
92930 + 0x5c, 0x39, 0xf6, 0xd5, 0x0a, 0xd4, 0xb5, 0x54, 0x28, 0x7a, 0xf3, 0x76,
92931 + 0xe8, 0xbe, 0x4b, 0x14, 0x2f, 0x4e, 0xa7, 0x35, 0xfc, 0x34, 0x5d, 0x1b,
92932 + 0xfe, 0x21, 0xfb, 0xfc, 0xad, 0xf9, 0x84, 0x95, 0x9d, 0x2e, 0x7a, 0x13,
92933 + 0x1d, 0x51, 0xcf, 0x29, 0xea, 0x39, 0x45, 0x3d, 0xa7, 0xa8, 0x67, 0xca,
92934 + 0x70, 0x30, 0x45, 0x3d, 0x53, 0x77, 0xdf, 0xa2, 0x4d, 0x3d, 0xce, 0x79,
92935 + 0x3c, 0x60, 0xcf, 0x63, 0x98, 0xf3, 0xf5, 0x17, 0xf8, 0x5f, 0x36, 0xb6,
92936 + 0x3e, 0x6f, 0xfd, 0xad, 0x57, 0xc6, 0xd4, 0x3d, 0x3d, 0x87, 0x5f, 0x32,
92937 + 0xb6, 0xe7, 0xac, 0x98, 0x26, 0xe3, 0x92, 0xf1, 0xd9, 0xfa, 0xf3, 0x6f,
92938 + 0x54, 0xb6, 0x28, 0x28, 0xb5, 0xac, 0x9d, 0x66, 0xfe, 0xbe, 0xb7, 0x30,
92939 + 0xbe, 0x1b, 0x94, 0x9c, 0x5d, 0xed, 0x74, 0x53, 0xdf, 0xc1, 0xa8, 0xba,
92940 + 0x8c, 0xe7, 0x7a, 0x3c, 0x8a, 0xb9, 0xc5, 0xe7, 0x9f, 0x5f, 0x5b, 0x23,
92941 + 0xf3, 0xe1, 0x3f, 0x7b, 0x4e, 0x7b, 0xb4, 0xfb, 0xbb, 0x8d, 0xe7, 0x32,
92942 + 0x16, 0xb1, 0x45, 0xb1, 0x01, 0x2f, 0xed, 0xe5, 0xf2, 0xfc, 0x3d, 0xc4,
92943 + 0xd5, 0xc8, 0x46, 0xb4, 0x34, 0x3c, 0x6a, 0xf7, 0x51, 0x94, 0x14, 0xbf,
92944 + 0x51, 0xf0, 0xce, 0x15, 0x0a, 0x8e, 0x86, 0x0c, 0xda, 0xcc, 0x10, 0x71,
92945 + 0x01, 0x28, 0x4e, 0xc2, 0xed, 0x89, 0x44, 0x90, 0xe8, 0x83, 0xbb, 0x24,
92946 + 0x12, 0xc6, 0xfc, 0xbe, 0xda, 0xf6, 0x53, 0xd0, 0x83, 0x7d, 0x8a, 0xde,
92947 + 0x02, 0xd4, 0x99, 0x63, 0xd4, 0xe3, 0x25, 0x8a, 0xee, 0x2f, 0x52, 0xe0,
92948 + 0x56, 0x58, 0x2e, 0x90, 0x1e, 0xc2, 0x96, 0x8c, 0xfc, 0x0e, 0xc3, 0x48,
92949 + 0xff, 0xb6, 0xd0, 0x17, 0xed, 0x7e, 0x23, 0xed, 0xfe, 0x14, 0xc7, 0xae,
92950 + 0xfb, 0x89, 0xaf, 0x6e, 0x57, 0xa4, 0x1d, 0x7b, 0x13, 0x70, 0x17, 0x45,
92951 + 0x36, 0xe0, 0xa9, 0x44, 0xf5, 0xf4, 0x42, 0x39, 0x85, 0xe5, 0xfc, 0xe9,
92952 + 0xa9, 0xb2, 0xbc, 0x66, 0x45, 0xbd, 0x39, 0x59, 0x4a, 0x93, 0x43, 0xd8,
92953 + 0x9e, 0x92, 0xba, 0x11, 0xbb, 0xae, 0x93, 0x7d, 0xf4, 0x24, 0x6a, 0x9b,
92954 + 0xaf, 0x55, 0xf4, 0xf0, 0x23, 0xa8, 0x8b, 0xbe, 0xcd, 0x39, 0xec, 0x82,
92955 + 0x7e, 0xa6, 0x1d, 0x39, 0x59, 0xe6, 0xa5, 0x73, 0x72, 0x2c, 0x4e, 0x43,
92956 + 0xb9, 0x29, 0x05, 0x8f, 0xcf, 0x98, 0x96, 0xf7, 0x65, 0x28, 0xd7, 0x71,
92957 + 0xfe, 0x54, 0xc3, 0x8f, 0xeb, 0x68, 0x43, 0x1b, 0x76, 0x5a, 0xe8, 0x0e,
92958 + 0x55, 0xd3, 0x57, 0x5b, 0x50, 0x41, 0xbf, 0xbc, 0x53, 0x43, 0xb4, 0x32,
92959 + 0x12, 0x56, 0xae, 0xcf, 0x0c, 0xe7, 0xf5, 0x7f, 0xb4, 0x9a, 0xf2, 0x29,
92960 + 0x4d, 0xa9, 0x0b, 0xaf, 0x57, 0xe6, 0xe3, 0xde, 0x85, 0xd7, 0x3d, 0x45,
92961 + 0x1f, 0x5f, 0xbe, 0x4e, 0x1b, 0x81, 0xc2, 0x78, 0x53, 0x42, 0xfd, 0xea,
92962 + 0x26, 0xab, 0x05, 0x5d, 0xf6, 0x35, 0x07, 0x86, 0x9c, 0x51, 0x9f, 0x03,
92963 + 0x1f, 0x58, 0xd1, 0x55, 0x72, 0xad, 0x14, 0xb1, 0x96, 0x3a, 0x9f, 0x13,
92964 + 0x75, 0xe1, 0x4d, 0xf4, 0xb7, 0xc9, 0x55, 0x8d, 0xbc, 0x17, 0x30, 0x8f,
92965 + 0xa1, 0xd6, 0xbf, 0x09, 0xf2, 0xfb, 0x7d, 0xda, 0x48, 0xa3, 0xd4, 0x65,
92966 + 0x19, 0xb1, 0x39, 0x5d, 0x3b, 0x06, 0x2f, 0x36, 0xd1, 0xfe, 0x8a, 0x23,
92967 + 0xba, 0xb9, 0xcc, 0xe1, 0xc4, 0x7e, 0xe2, 0xb8, 0xc3, 0xe8, 0x45, 0x31,
92968 + 0xc7, 0xc8, 0xf8, 0x8a, 0x47, 0x12, 0xc0, 0xb3, 0xfd, 0x16, 0x1a, 0x43,
92969 + 0x1e, 0x2c, 0xb1, 0x6d, 0xf3, 0x90, 0x72, 0x75, 0xea, 0x43, 0x6b, 0xc8,
92970 + 0x59, 0x12, 0x55, 0x23, 0x01, 0xdf, 0x49, 0xb2, 0x81, 0xa2, 0x48, 0x9d,
92971 + 0xe6, 0x44, 0x5c, 0x69, 0xce, 0xf4, 0x28, 0xcb, 0x33, 0xbd, 0xca, 0x92,
92972 + 0x8c, 0xb4, 0x7d, 0x48, 0x59, 0x9a, 0xf1, 0x20, 0xdd, 0xaf, 0x60, 0x7b,
92973 + 0x88, 0x72, 0xd5, 0xe4, 0xec, 0x38, 0xd3, 0xaf, 0x12, 0x63, 0xdf, 0x21,
92974 + 0xc6, 0xea, 0x61, 0xb0, 0xef, 0x27, 0x12, 0xd5, 0x38, 0x44, 0x2c, 0xfd,
92975 + 0x71, 0x5a, 0x57, 0x51, 0x7a, 0x11, 0x5e, 0x19, 0xa9, 0xc0, 0xd8, 0xa0,
92976 + 0xc9, 0xdf, 0xf5, 0x78, 0x61, 0xc4, 0xb2, 0x7a, 0x4c, 0xcb, 0xda, 0x6b,
92977 + 0x1e, 0x52, 0x1a, 0xd9, 0x67, 0xd4, 0x19, 0x8f, 0x16, 0x47, 0x02, 0xe6,
92978 + 0x16, 0xf6, 0xe9, 0x88, 0xc4, 0x95, 0x28, 0xfb, 0xbb, 0x9a, 0xfd, 0x2d,
92979 + 0xcd, 0xf7, 0x97, 0xeb, 0x57, 0x64, 0x91, 0x7a, 0x85, 0x3a, 0x61, 0xd6,
92980 + 0x01, 0xf6, 0x25, 0x02, 0xc1, 0x42, 0xbd, 0xa5, 0xac, 0x73, 0xf5, 0xd9,
92981 + 0x3a, 0xc0, 0x70, 0x22, 0xc8, 0x39, 0x15, 0x5b, 0xf7, 0x33, 0x76, 0x7d,
92982 + 0x83, 0x18, 0xdb, 0x80, 0xb6, 0x61, 0xc1, 0xdf, 0x6b, 0xd4, 0xdc, 0x3c,
92983 + 0xe5, 0xb0, 0x56, 0x62, 0x5e, 0x0e, 0x6f, 0x83, 0xe8, 0xa3, 0x5f, 0x77,
92984 + 0xa5, 0xc4, 0xc6, 0xef, 0xf9, 0x72, 0x22, 0xa0, 0xe0, 0xb1, 0x40, 0xb6,
92985 + 0xa5, 0x1c, 0x95, 0x68, 0x0f, 0x89, 0x6d, 0x6e, 0xfc, 0xf2, 0x53, 0x86,
92986 + 0x1e, 0x5e, 0xa1, 0x70, 0xce, 0x02, 0x7a, 0xf3, 0x52, 0x05, 0x08, 0x8c,
92987 + 0x01, 0x6f, 0xa4, 0x2b, 0xb1, 0xda, 0x74, 0x40, 0xad, 0x0a, 0xa2, 0x37,
92988 + 0x33, 0x35, 0x2e, 0x98, 0xc4, 0x78, 0x69, 0x2f, 0x48, 0xbf, 0x2e, 0xc3,
92989 + 0x32, 0x2d, 0x67, 0xd3, 0x6e, 0xb6, 0xed, 0x0e, 0x64, 0x83, 0x2a, 0xe3,
92990 + 0xdd, 0x7e, 0x5e, 0x38, 0x46, 0xfc, 0x6f, 0x34, 0x5c, 0xc4, 0xff, 0x4a,
92991 + 0x34, 0x9a, 0xbf, 0xb3, 0x96, 0xad, 0x92, 0x7b, 0x85, 0x76, 0xe0, 0x2e,
92992 + 0x66, 0xbf, 0x6f, 0x19, 0xba, 0x7f, 0x94, 0x27, 0xd9, 0x74, 0xee, 0x7a,
92993 + 0x9c, 0x31, 0xab, 0x9b, 0xed, 0x6e, 0x66, 0xbb, 0xeb, 0x34, 0x3d, 0x1a,
92994 + 0x3f, 0x5b, 0x2e, 0x1b, 0x74, 0x40, 0xd7, 0xa4, 0x6c, 0x13, 0xdb, 0x5d,
92995 + 0xcd, 0x76, 0x7b, 0x35, 0x91, 0xef, 0x77, 0xd6, 0xba, 0x55, 0x72, 0x2f,
92996 + 0x67, 0x1f, 0xb9, 0x76, 0xef, 0x91, 0x76, 0xcd, 0xd1, 0x7c, 0x5f, 0x47,
92997 + 0x13, 0xe8, 0x77, 0x44, 0x18, 0x63, 0x1b, 0x02, 0xfe, 0x2e, 0xc6, 0xdb,
92998 + 0x26, 0xc6, 0x8e, 0x9c, 0x4d, 0x4c, 0x8d, 0x77, 0x88, 0x9f, 0x2b, 0x23,
92999 + 0xd7, 0xa4, 0x9c, 0xd8, 0xda, 0x24, 0xf5, 0x2c, 0xf1, 0xc5, 0x47, 0xfd,
93000 + 0x0a, 0xb6, 0x38, 0x71, 0x20, 0x41, 0xfc, 0xc7, 0x37, 0x68, 0x77, 0x7e,
93001 + 0xb4, 0x64, 0x6a, 0xb1, 0x66, 0x27, 0xe3, 0xa0, 0x59, 0x45, 0x5b, 0xcf,
93002 + 0xd9, 0xdb, 0x32, 0xb6, 0x3d, 0x69, 0xb7, 0x1d, 0x57, 0x5a, 0x32, 0x75,
93003 + 0x5a, 0x15, 0x63, 0xee, 0x91, 0xb3, 0xd8, 0x39, 0x27, 0x5a, 0x1a, 0x09,
93004 + 0x34, 0xaf, 0xe7, 0x24, 0xb9, 0x19, 0xdf, 0xbe, 0x37, 0xaf, 0x87, 0x76,
93005 + 0xd1, 0x4b, 0x3b, 0xcc, 0xcd, 0x6f, 0x73, 0x66, 0x8f, 0x2a, 0x18, 0x07,
93006 + 0xb5, 0x16, 0xeb, 0x76, 0xca, 0x7f, 0x72, 0x95, 0x86, 0xc7, 0x78, 0xad,
93007 + 0x16, 0xab, 0x87, 0xbf, 0x47, 0x3b, 0xd3, 0x7d, 0x62, 0x87, 0x5d, 0x67,
93008 + 0xe5, 0x12, 0x99, 0x44, 0x36, 0x91, 0xa9, 0x8f, 0xe5, 0x66, 0x51, 0x3f,
93009 + 0x82, 0x8d, 0xd5, 0x94, 0x67, 0x2b, 0xf9, 0xd0, 0x21, 0xe5, 0xf3, 0x94,
93010 + 0x27, 0xeb, 0xf2, 0xe2, 0xa1, 0x94, 0xc8, 0xa3, 0x44, 0x67, 0x46, 0x66,
93011 + 0xe1, 0x4c, 0x2a, 0x10, 0x7f, 0x02, 0x22, 0x5b, 0x8f, 0xd2, 0x2a, 0xf5,
93012 + 0x53, 0xbd, 0xbc, 0x57, 0x90, 0x11, 0x5a, 0xa5, 0x2d, 0x5b, 0x4e, 0xa6,
93013 + 0xeb, 0x39, 0xd7, 0x2e, 0xe3, 0x6f, 0xcb, 0x51, 0xe1, 0xa4, 0xad, 0x49,
93014 + 0xdb, 0xff, 0x61, 0x45, 0xb5, 0x6e, 0x5e, 0xf3, 0x72, 0x9e, 0xdc, 0xe4,
93015 + 0x05, 0x7a, 0xf0, 0x3a, 0x87, 0xd2, 0xe2, 0x91, 0x78, 0x4d, 0xfb, 0x4c,
93016 + 0xa7, 0x9d, 0x38, 0x9e, 0x58, 0xba, 0xb4, 0xcc, 0xf8, 0x34, 0x1e, 0x1b,
93017 + 0xf1, 0x61, 0x84, 0x73, 0xfb, 0x6c, 0x42, 0xe2, 0xeb, 0x2c, 0x3c, 0x9a,
93018 + 0xf6, 0xe0, 0x99, 0x84, 0x1f, 0x8f, 0x30, 0xfe, 0x4c, 0x24, 0x0c, 0xec,
93019 + 0x4f, 0x7b, 0xf1, 0x34, 0xed, 0x79, 0x34, 0xed, 0xa3, 0xbd, 0xd4, 0x63,
93020 + 0x38, 0xdd, 0x66, 0x8f, 0xe1, 0xc9, 0xc4, 0xbf, 0xcb, 0x58, 0x83, 0x32,
93021 + 0xd6, 0xcd, 0xf6, 0x58, 0x0b, 0x71, 0x7e, 0xd6, 0xd9, 0x79, 0x38, 0x91,
93022 + 0xb0, 0x71, 0xa0, 0x77, 0x99, 0x43, 0xe6, 0x81, 0x36, 0x3b, 0x20, 0x58,
93023 + 0xa0, 0xf7, 0xc7, 0x61, 0x61, 0x8f, 0x39, 0x93, 0xfe, 0xdf, 0x4b, 0x79,
93024 + 0xa9, 0x53, 0x8e, 0x1f, 0xae, 0x8a, 0x68, 0x79, 0x24, 0x10, 0xeb, 0xa3,
93025 + 0xde, 0x9d, 0x11, 0xd1, 0x43, 0x4e, 0xef, 0x2b, 0x32, 0x87, 0x14, 0xe1,
93026 + 0x7a, 0x97, 0x0c, 0xc4, 0xad, 0x32, 0x43, 0xf4, 0x1d, 0x20, 0xce, 0x02,
93027 + 0xf3, 0xf7, 0x38, 0x39, 0xbe, 0x9b, 0x38, 0x66, 0x13, 0x45, 0x46, 0x9d,
93028 + 0x56, 0x4d, 0xd9, 0x8f, 0x7c, 0x24, 0x06, 0x8a, 0x8e, 0xfe, 0x36, 0x3f,
93029 + 0x5f, 0xba, 0x83, 0xf2, 0xfa, 0x81, 0xc2, 0xbc, 0x58, 0xd6, 0x0e, 0xb3,
93030 + 0x30, 0x37, 0x35, 0xf0, 0x57, 0xeb, 0xf1, 0x21, 0x5a, 0xc4, 0x48, 0x62,
93031 + 0x1a, 0xe2, 0x9a, 0x9a, 0x6f, 0x3b, 0xaa, 0x14, 0x31, 0xff, 0xc0, 0xb8,
93032 + 0xf8, 0x7e, 0x39, 0xa2, 0x4e, 0xa9, 0x8f, 0x68, 0x51, 0x24, 0x10, 0x9c,
93033 + 0xab, 0x4e, 0xb5, 0x19, 0xc1, 0x01, 0xe9, 0x2b, 0x4e, 0x59, 0xcf, 0xc7,
93034 + 0x82, 0x91, 0x44, 0x01, 0x37, 0xfe, 0x3b, 0xf5, 0x2e, 0xd4, 0xa9, 0xc8,
93035 + 0x29, 0x7a, 0x55, 0x71, 0x74, 0x50, 0xf4, 0xe7, 0xc4, 0x4a, 0x73, 0x7a,
93036 + 0x5e, 0xe6, 0x59, 0x9c, 0x17, 0x62, 0x0e, 0xe7, 0xeb, 0x85, 0x7e, 0x2f,
93037 + 0xe5, 0xb6, 0x90, 0x0e, 0x5d, 0x8c, 0x4d, 0x36, 0xe7, 0x5c, 0x95, 0xcf,
93038 + 0x5b, 0x38, 0x4f, 0xea, 0x76, 0xea, 0xfa, 0xb3, 0x8e, 0xdc, 0x79, 0x9d,
93039 + 0xef, 0xa3, 0xfa, 0xd2, 0xb5, 0x18, 0x0a, 0x3a, 0x03, 0x86, 0xd2, 0x88,
93040 + 0xb9, 0x23, 0xf5, 0x4d, 0xce, 0xbe, 0xb6, 0x0d, 0xf4, 0xef, 0x7b, 0x4f,
93041 + 0x35, 0x7c, 0x16, 0x9b, 0xa9, 0x17, 0xa7, 0x6d, 0x67, 0x51, 0xc5, 0x65,
93042 + 0x2c, 0xb1, 0xfd, 0x49, 0x1d, 0x5f, 0x91, 0xef, 0x23, 0x6a, 0xe7, 0x2c,
93043 + 0x50, 0x5b, 0xf2, 0xe7, 0x77, 0x53, 0xdf, 0x32, 0x0e, 0x15, 0x3f, 0x20,
93044 + 0x97, 0x7d, 0x27, 0xf4, 0x59, 0x64, 0x6d, 0xcc, 0x76, 0xd2, 0xdf, 0xaf,
93045 + 0x62, 0x5d, 0xe2, 0xdf, 0xb8, 0xc4, 0x52, 0xc4, 0x4b, 0xe8, 0xd7, 0x45,
93046 + 0xf4, 0xd5, 0x6b, 0x32, 0xf7, 0xa0, 0x3d, 0x15, 0x08, 0x97, 0x28, 0xf7,
93047 + 0xe0, 0xd6, 0x8c, 0x0b, 0xb1, 0x61, 0x0f, 0xd6, 0x51, 0x27, 0xce, 0xa4,
93048 + 0xf8, 0xb9, 0x86, 0x75, 0xa3, 0x47, 0x67, 0x3a, 0xe9, 0x37, 0xeb, 0x46,
93049 + 0xbd, 0x3c, 0xa6, 0xf3, 0x70, 0x63, 0x35, 0x8f, 0x3d, 0xb4, 0xcb, 0x36,
93050 + 0xc6, 0x86, 0x23, 0x09, 0x13, 0x9d, 0xd4, 0xd5, 0x13, 0x89, 0x06, 0xdc,
93051 + 0x4b, 0xbd, 0x1d, 0x4a, 0x7c, 0x8a, 0x3a, 0x0a, 0xa3, 0x83, 0x73, 0xfc,
93052 + 0x58, 0x42, 0xb5, 0xf3, 0xab, 0xdb, 0x33, 0xff, 0x62, 0x45, 0xa7, 0x8b,
93053 + 0x9c, 0xa2, 0x0b, 0x99, 0xcf, 0x8f, 0xe8, 0x81, 0xfe, 0x3b, 0x55, 0x17,
93054 + 0xf5, 0xd8, 0xb6, 0xcb, 0xc0, 0xf6, 0x5d, 0x75, 0xb4, 0xbb, 0x8c, 0xe5,
93055 + 0xaf, 0x1a, 0xa0, 0x0e, 0xa6, 0xea, 0xe1, 0x08, 0x79, 0x81, 0xe8, 0x41,
93056 + 0xda, 0xbc, 0x8f, 0x63, 0xee, 0xe6, 0x3d, 0x1f, 0x1e, 0x4f, 0x7c, 0x97,
93057 + 0xbf, 0xc3, 0xca, 0x5d, 0x19, 0xf1, 0x79, 0xf1, 0xb7, 0x7f, 0x70, 0xe4,
93058 + 0x62, 0x6f, 0xa1, 0xdc, 0x16, 0x96, 0xb3, 0xac, 0xcd, 0x67, 0xe3, 0x4a,
93059 + 0x51, 0xb4, 0x84, 0x71, 0x65, 0x7f, 0x22, 0x10, 0x7e, 0xc6, 0x8e, 0x7d,
93060 + 0x4e, 0xda, 0x8e, 0xd8, 0x47, 0x8f, 0x6d, 0x1b, 0xcb, 0xce, 0xda, 0xc6,
93061 + 0xe4, 0x59, 0x0e, 0xd5, 0x9f, 0x9a, 0xea, 0x73, 0x39, 0xbb, 0x70, 0x26,
93062 + 0xf5, 0x5e, 0xdb, 0x8e, 0xd3, 0x82, 0x8f, 0x0e, 0x38, 0x06, 0x9c, 0x68,
93063 + 0x33, 0x2f, 0xa5, 0xbe, 0xab, 0x19, 0x6f, 0x8a, 0x78, 0x30, 0x4f, 0x1d,
93064 + 0xfe, 0x0b, 0x94, 0x0e, 0x64, 0xad, 0x12, 0xfe, 0x6e, 0x0e, 0x89, 0xbe,
93065 + 0xaf, 0xc2, 0xad, 0xc3, 0x0e, 0x14, 0x0d, 0x28, 0x78, 0xd2, 0xac, 0xc7,
93066 + 0x90, 0x37, 0x87, 0xbb, 0x6a, 0xf2, 0x52, 0x7b, 0x9e, 0x2e, 0x1e, 0x3f,
93067 + 0xfa, 0x8c, 0xc4, 0x85, 0x7b, 0x47, 0x3d, 0xf0, 0x25, 0x15, 0x78, 0x88,
93068 + 0x2b, 0x65, 0x46, 0x3d, 0xf5, 0xaa, 0xa1, 0x32, 0x69, 0xe2, 0x6b, 0x19,
93069 + 0xd2, 0xa6, 0x07, 0xc2, 0xb8, 0x93, 0xf3, 0x52, 0xfe, 0xc0, 0x95, 0xb8,
93070 + 0x83, 0xe5, 0x36, 0xf0, 0xde, 0x86, 0xd1, 0x6a, 0x1e, 0x5e, 0x1e, 0xd3,
93071 + 0x79, 0x34, 0xe0, 0xf6, 0xe1, 0x5a, 0x44, 0xab, 0xf5, 0xa0, 0x5f, 0x75,
93072 + 0xa0, 0x7a, 0x40, 0xf4, 0xae, 0x62, 0xe5, 0x02, 0x05, 0xe6, 0xa7, 0x8b,
93073 + 0xa1, 0xce, 0xfd, 0x38, 0xdf, 0xfd, 0x53, 0xb2, 0xbe, 0x6c, 0x0d, 0xd9,
93074 + 0x98, 0x2e, 0x3a, 0x16, 0x3b, 0xf9, 0x57, 0xce, 0x85, 0xc8, 0x2b, 0x7d,
93075 + 0x48, 0xac, 0x15, 0x1d, 0x7f, 0x12, 0x36, 0x30, 0xb2, 0x54, 0x74, 0xb1,
93076 + 0xcc, 0x47, 0x7d, 0x01, 0x67, 0xe7, 0x7f, 0x2a, 0x67, 0x95, 0xb8, 0xaf,
93077 + 0x87, 0x87, 0x6c, 0x8e, 0xe3, 0x67, 0xbe, 0xa8, 0xc7, 0x45, 0xe7, 0xe4,
93078 + 0x34, 0x6e, 0xd5, 0x80, 0xbf, 0xc8, 0xb8, 0x19, 0xb7, 0x71, 0x9e, 0xf6,
93079 + 0x26, 0xd4, 0xa5, 0x2e, 0xa8, 0xb3, 0x5c, 0x4c, 0x9c, 0x47, 0x4c, 0x1d,
93080 + 0xed, 0xc3, 0xcc, 0xb5, 0x86, 0xcb, 0xd1, 0xa5, 0x29, 0xee, 0x6d, 0xf5,
93081 + 0x8b, 0x24, 0xa7, 0xf6, 0x57, 0x1a, 0x50, 0xcb, 0x18, 0xff, 0xb7, 0x6b,
93082 + 0x70, 0x16, 0x19, 0x8a, 0x9a, 0xa8, 0x6f, 0x42, 0xbc, 0x0a, 0xce, 0x0a,
93083 + 0x03, 0x0a, 0x73, 0x66, 0xf4, 0x69, 0x10, 0xec, 0x89, 0x16, 0x19, 0xf7,
93084 + 0xe0, 0xb6, 0x14, 0xac, 0xd2, 0x08, 0xf3, 0xa1, 0x88, 0x41, 0x8e, 0x1b,
93085 + 0xf0, 0x15, 0xd1, 0x3f, 0x56, 0x93, 0x57, 0xac, 0x1d, 0x16, 0x39, 0x3c,
93086 + 0xe4, 0x1b, 0x86, 0xbf, 0x0d, 0xcc, 0xe1, 0x5b, 0xf4, 0xe0, 0x24, 0xf3,
93087 + 0xd8, 0xd5, 0xd4, 0xfd, 0x48, 0xe2, 0x1e, 0x34, 0xa6, 0x8e, 0x58, 0x1e,
93088 + 0xf2, 0xc8, 0x22, 0xa3, 0xf6, 0x4c, 0x17, 0x62, 0xf4, 0x0d, 0xe1, 0x47,
93089 + 0x6b, 0xe8, 0x1b, 0x3e, 0x64, 0x12, 0xea, 0x71, 0xb2, 0x0b, 0x74, 0x8c,
93090 + 0xae, 0xc7, 0xd7, 0x46, 0x67, 0x61, 0x3c, 0xb1, 0x01, 0x77, 0x66, 0xc8,
93091 + 0x95, 0xfa, 0xaf, 0xc2, 0x1d, 0xc3, 0x57, 0xe1, 0xf6, 0x9d, 0x46, 0x70,
93092 + 0x03, 0x75, 0xbd, 0x76, 0x98, 0x81, 0x72, 0xba, 0xb4, 0x5b, 0xd0, 0x95,
93093 + 0xf0, 0x45, 0xea, 0x22, 0xaf, 0xa7, 0x2c, 0x0a, 0x1c, 0xe6, 0x5f, 0x2d,
93094 + 0x5e, 0x8a, 0x17, 0x35, 0x28, 0xfe, 0xdd, 0xf5, 0x2f, 0x31, 0xb7, 0x17,
93095 + 0xd9, 0x11, 0x9d, 0x69, 0xfc, 0xc0, 0x7a, 0x50, 0xa3, 0x7f, 0x47, 0x10,
93096 + 0x9f, 0xd3, 0xf0, 0xbc, 0xf5, 0xd0, 0x2a, 0xb9, 0x7e, 0x9b, 0x13, 0xa5,
93097 + 0x2a, 0xaf, 0x49, 0x9b, 0x82, 0x4b, 0x75, 0x44, 0xe2, 0x8f, 0x6b, 0x33,
93098 + 0x6b, 0x25, 0xcf, 0x96, 0x27, 0x2f, 0x24, 0x16, 0x3f, 0x91, 0xf0, 0xa2,
93099 + 0x37, 0x95, 0xe3, 0x56, 0x37, 0x65, 0x84, 0x53, 0xb9, 0x51, 0xda, 0x27,
93100 + 0x71, 0x25, 0x8a, 0xf5, 0xfc, 0x5d, 0xd2, 0xa7, 0xb7, 0xc4, 0x91, 0x60,
93101 + 0x9b, 0x4d, 0x9c, 0x0b, 0xda, 0x6b, 0x9f, 0x03, 0x25, 0x46, 0x73, 0xce,
93102 + 0x56, 0xfb, 0x56, 0xd0, 0x56, 0x35, 0x54, 0xf4, 0xf5, 0x70, 0xac, 0xb4,
93103 + 0x55, 0xd6, 0xbb, 0x83, 0xba, 0xf0, 0xf4, 0xad, 0xa2, 0xbd, 0xce, 0x42,
93104 + 0x59, 0x5f, 0x2b, 0xf1, 0x01, 0x8c, 0xeb, 0x16, 0x8e, 0x9a, 0x95, 0x79,
93105 + 0x7e, 0xda, 0x8c, 0x5b, 0x53, 0x51, 0xb4, 0xa5, 0x6a, 0xa3, 0x27, 0x65,
93106 + 0xad, 0xca, 0x95, 0xc3, 0xb0, 0x68, 0x8d, 0xe8, 0x62, 0x32, 0x8f, 0xa7,
93107 + 0x7a, 0x73, 0x8e, 0xd3, 0xe9, 0x9a, 0x5f, 0x29, 0xc8, 0xde, 0x83, 0x18,
93108 + 0xf3, 0x8f, 0x39, 0x91, 0x16, 0x58, 0x29, 0x91, 0x3b, 0x6e, 0xf9, 0x98,
93109 + 0x53, 0x7a, 0x22, 0xfa, 0xc6, 0xc5, 0x0e, 0xa3, 0xe3, 0x15, 0x25, 0x88,
93110 + 0xeb, 0x29, 0x43, 0x59, 0x5f, 0x27, 0x5e, 0x08, 0xe9, 0xbe, 0xef, 0x2a,
93111 + 0xfa, 0x99, 0x0d, 0x78, 0x05, 0x3f, 0xe3, 0xb5, 0xa2, 0xbe, 0x09, 0x3c,
93112 + 0x94, 0x79, 0x15, 0xa7, 0x28, 0xab, 0xda, 0xf7, 0xa1, 0xb5, 0xcc, 0x78,
93113 + 0x86, 0xe3, 0x77, 0x2b, 0x6f, 0x65, 0xa6, 0xda, 0xe2, 0x55, 0x58, 0xbd,
93114 + 0x53, 0xec, 0x4f, 0x0f, 0xc6, 0x89, 0xbd, 0x6d, 0x66, 0x85, 0x70, 0x79,
93115 + 0x89, 0x4f, 0x94, 0xbf, 0x45, 0xb0, 0x85, 0xfe, 0x41, 0x3b, 0xb0, 0xc7,
93116 + 0xd0, 0x6a, 0x63, 0xb2, 0x33, 0x09, 0x1b, 0x4b, 0x73, 0x7a, 0x8e, 0x28,
93117 + 0x6d, 0xa3, 0xbe, 0x52, 0x94, 0xfa, 0xf2, 0x7e, 0x90, 0x5b, 0xb3, 0x38,
93118 + 0x57, 0xf7, 0x3f, 0xad, 0x11, 0xef, 0xf9, 0x75, 0x2b, 0x98, 0x83, 0x55,
93119 + 0x72, 0x3c, 0xef, 0xf6, 0xc5, 0xad, 0xd2, 0xdc, 0x58, 0x9a, 0x7f, 0xa0,
93120 + 0x88, 0x4d, 0x06, 0xc9, 0xed, 0x3b, 0x71, 0x69, 0x48, 0x6f, 0xfd, 0xae,
93121 + 0x22, 0x65, 0xf5, 0xf0, 0x06, 0xa5, 0xd0, 0xcf, 0xcb, 0x38, 0x39, 0x22,
93122 + 0x7d, 0x48, 0x5f, 0x13, 0xcc, 0xc9, 0x72, 0x63, 0x10, 0x5f, 0x7a, 0xc4,
93123 + 0x9e, 0x4b, 0xf1, 0x27, 0x3f, 0x96, 0x73, 0x4c, 0xae, 0x3e, 0x1f, 0x0f,
93124 + 0x17, 0xed, 0xd5, 0x87, 0xb5, 0x99, 0x15, 0x58, 0xcd, 0xbc, 0x76, 0x75,
93125 + 0xa6, 0x85, 0xba, 0xdf, 0x48, 0x7c, 0x67, 0x46, 0xa0, 0xe5, 0x74, 0x7c,
93126 + 0xce, 0x3e, 0x74, 0xff, 0x24, 0x56, 0xf0, 0xfe, 0xcf, 0x9d, 0xa8, 0x68,
93127 + 0x61, 0x79, 0xfb, 0xbe, 0x29, 0xf8, 0x7d, 0xae, 0xcc, 0x47, 0x78, 0x98,
93128 + 0x1d, 0xe7, 0xf7, 0xda, 0x1c, 0xb1, 0xc5, 0xce, 0xbd, 0xae, 0xb6, 0xe7,
93129 + 0x5c, 0x38, 0x82, 0x85, 0x63, 0x66, 0x31, 0xf3, 0xaf, 0xba, 0xe0, 0xf9,
93130 + 0x9c, 0x50, 0x67, 0x16, 0x5a, 0xc0, 0x03, 0xe9, 0x4b, 0xf4, 0x72, 0xa2,
93131 + 0x26, 0xa7, 0x97, 0x4f, 0x2a, 0x7b, 0x3e, 0x76, 0xec, 0x49, 0x48, 0xdf,
93132 + 0x45, 0x36, 0x2f, 0x6d, 0xcc, 0x94, 0x22, 0xee, 0x15, 0x1d, 0x49, 0x7b,
93133 + 0xba, 0x5f, 0x64, 0x5a, 0xbb, 0x53, 0xec, 0xd8, 0xc2, 0x08, 0x65, 0xe8,
93134 + 0xb6, 0xe7, 0x2d, 0xc7, 0x25, 0x8f, 0x9c, 0x17, 0x9f, 0x65, 0x4c, 0x85,
93135 + 0xbe, 0x6f, 0x73, 0xe5, 0xf8, 0x66, 0x81, 0x2b, 0x58, 0xd6, 0x80, 0x59,
93136 + 0xe0, 0x0a, 0x32, 0xe6, 0xbf, 0x00, 0x63, 0x9d, 0x3d, 0xde, 0x35, 0xf9,
93137 + 0xb6, 0xbb, 0xcc, 0x00, 0xed, 0x5a, 0xb8, 0x54, 0x44, 0x59, 0xb3, 0x2b,
93138 + 0xc3, 0xb9, 0x95, 0xdc, 0x06, 0xb8, 0x93, 0xf7, 0xcb, 0x79, 0xff, 0xc5,
93139 + 0x90, 0x0b, 0x97, 0x4e, 0x97, 0xbe, 0xaf, 0x42, 0xc7, 0xce, 0x28, 0x2a,
93140 + 0x17, 0x06, 0x30, 0x69, 0x73, 0x89, 0x02, 0xef, 0x75, 0xe1, 0x8e, 0x9d,
93141 + 0x1f, 0x5a, 0x15, 0x36, 0x17, 0x33, 0x62, 0xe3, 0x8a, 0x8a, 0xed, 0x8b,
93142 + 0x84, 0xff, 0xba, 0x88, 0xef, 0xe4, 0xa2, 0xc2, 0xad, 0x5d, 0x65, 0xe4,
93143 + 0xb0, 0xc2, 0xe1, 0x02, 0xd9, 0x9b, 0x54, 0x68, 0x5a, 0x44, 0xb8, 0xdc,
93144 + 0x2c, 0x9b, 0xc3, 0x0a, 0x97, 0xfd, 0x56, 0xea, 0xd0, 0x14, 0x2e, 0x7b,
93145 + 0x96, 0x73, 0x30, 0xf7, 0x69, 0x61, 0x7e, 0xef, 0x81, 0x3b, 0xa2, 0xb7,
93146 + 0x6c, 0x52, 0x3a, 0xb1, 0x3c, 0x64, 0x98, 0x92, 0x53, 0x5f, 0xa9, 0xe8,
93147 + 0xc1, 0xd3, 0x08, 0x12, 0x6f, 0x5f, 0xc6, 0xc8, 0x60, 0xdc, 0x25, 0x76,
93148 + 0xb4, 0x29, 0x73, 0x4e, 0x9e, 0x5b, 0x29, 0x8f, 0x3b, 0x27, 0x8f, 0x79,
93149 + 0x1a, 0x2a, 0x9e, 0x6c, 0x70, 0x11, 0xb7, 0xfe, 0x0e, 0x6d, 0x3b, 0x55,
93150 + 0x2c, 0xb1, 0xb9, 0xf9, 0xdf, 0x11, 0x7f, 0x2f, 0x2a, 0xcd, 0x95, 0x07,
93151 + 0x3a, 0xe9, 0xdf, 0xef, 0x2f, 0x2c, 0x41, 0x68, 0x9a, 0x82, 0x2a, 0xa3,
93152 + 0x83, 0xf9, 0xf1, 0x87, 0x56, 0xdc, 0x49, 0x3a, 0x6b, 0x40, 0x2b, 0x89,
93153 + 0x44, 0x29, 0x5b, 0x93, 0x72, 0xcd, 0xf0, 0x20, 0xfb, 0xe9, 0x20, 0xef,
93154 + 0xf7, 0xe0, 0x2e, 0xda, 0xce, 0x5d, 0x8c, 0x65, 0x77, 0x31, 0x96, 0xdd,
93155 + 0x35, 0xfa, 0x2f, 0xbc, 0x3e, 0xdd, 0xfe, 0xbd, 0x29, 0x55, 0xb0, 0x65,
93156 + 0x27, 0xe3, 0x82, 0xe8, 0x77, 0x33, 0x7d, 0x47, 0xe2, 0x02, 0x28, 0x93,
93157 + 0x85, 0x93, 0x9c, 0xc7, 0x25, 0x9a, 0x1e, 0xcc, 0xe2, 0xeb, 0xae, 0x73,
93158 + 0x79, 0x5f, 0x21, 0xb6, 0xc8, 0x3c, 0xba, 0x70, 0x1b, 0x65, 0x0c, 0x86,
93159 + 0xfe, 0xcb, 0x42, 0x95, 0xf8, 0xee, 0x85, 0xf7, 0x73, 0xf3, 0x7a, 0xe4,
93160 + 0x2c, 0x07, 0x54, 0xc4, 0x4e, 0xe9, 0xf3, 0x7b, 0x6c, 0x4e, 0xf1, 0xa2,
93161 + 0xc9, 0xdc, 0x6d, 0xe7, 0xd1, 0xf9, 0x62, 0x2a, 0x6b, 0x47, 0xa3, 0xe8,
93162 + 0xe6, 0xb8, 0x57, 0x0f, 0x3f, 0x96, 0xd7, 0x4b, 0x61, 0xbc, 0x0a, 0xd5,
93163 + 0xe2, 0xa1, 0xff, 0xe4, 0x72, 0x95, 0xb6, 0x51, 0xe1, 0xb6, 0xd5, 0xfc,
93164 + 0x2f, 0xdc, 0xd6, 0xcb, 0xff, 0xc2, 0x73, 0xa7, 0xf3, 0xbf, 0x13, 0xfe,
93165 + 0xe9, 0x62, 0xc7, 0xf5, 0xe8, 0xdd, 0x65, 0x59, 0xc5, 0x81, 0x7a, 0x6c,
93166 + 0x19, 0xfd, 0x48, 0xbc, 0xbc, 0x40, 0x1e, 0x7b, 0x0e, 0xe8, 0x47, 0x2e,
93167 + 0xc1, 0x22, 0xbf, 0x5f, 0x95, 0xbe, 0x2d, 0x6c, 0x34, 0xaf, 0x62, 0x9f,
93168 + 0x8c, 0x80, 0xd5, 0x53, 0xfd, 0xa2, 0xd0, 0x46, 0x41, 0xdf, 0xc5, 0xf4,
93169 + 0x73, 0x68, 0x2e, 0xea, 0x7b, 0x65, 0x46, 0xea, 0x36, 0x29, 0x4b, 0x87,
93170 + 0xa7, 0x96, 0xef, 0x20, 0x1f, 0x3e, 0x4d, 0x5d, 0x17, 0xfc, 0xc8, 0x9b,
93171 + 0xcf, 0x2b, 0x98, 0x4b, 0xa4, 0x44, 0x97, 0x32, 0xbe, 0x5c, 0xae, 0x28,
93172 + 0xb6, 0x74, 0xe4, 0x6c, 0x1f, 0xa2, 0xb7, 0xf8, 0xf4, 0x12, 0x43, 0xec,
93173 + 0x28, 0x48, 0x5c, 0xd1, 0xc3, 0xcd, 0x84, 0xed, 0x53, 0x09, 0xc4, 0x1c,
93174 + 0x91, 0xe6, 0xa6, 0xb5, 0x89, 0xb9, 0xda, 0xf1, 0x7c, 0x2e, 0xba, 0x87,
93175 + 0x38, 0xae, 0x1a, 0xb2, 0x0e, 0x42, 0x5b, 0x19, 0x16, 0xdd, 0x75, 0x28,
93176 + 0xe7, 0xf2, 0xce, 0x28, 0x79, 0x97, 0x6a, 0xcb, 0xe8, 0x8c, 0x88, 0x6c,
93177 + 0x52, 0x87, 0xb2, 0x5f, 0xc0, 0xbf, 0x72, 0xba, 0xa8, 0x80, 0x67, 0x40,
93178 + 0x78, 0x97, 0x8e, 0x0d, 0x8c, 0xf3, 0x65, 0x03, 0x7e, 0xfa, 0x42, 0x35,
93179 + 0x4a, 0x1f, 0x88, 0x60, 0xfd, 0xa8, 0x86, 0x92, 0x07, 0x2c, 0x6b, 0x6e,
93180 + 0xa8, 0x87, 0x5c, 0xf6, 0xb2, 0x22, 0xc9, 0x9d, 0x9c, 0x49, 0x62, 0x16,
93181 + 0xf1, 0xad, 0x3d, 0xa5, 0xe0, 0x6a, 0xc6, 0xd3, 0x28, 0x71, 0xa8, 0xdd,
93182 + 0xc6, 0x39, 0xab, 0x73, 0x4e, 0xc4, 0x45, 0x1b, 0x5a, 0xc5, 0xfb, 0xad,
93183 + 0xc4, 0xc0, 0x56, 0x62, 0x9a, 0x65, 0xbd, 0x7f, 0x39, 0x3a, 0xcb, 0x22,
93184 + 0x37, 0x13, 0x0b, 0x6b, 0xc9, 0x89, 0x25, 0x7e, 0x5f, 0x8e, 0x35, 0x8c,
93185 + 0xfd, 0xc5, 0x49, 0x3b, 0x9f, 0xa2, 0xee, 0x18, 0xa3, 0x32, 0x8c, 0x71,
93186 + 0x94, 0xfd, 0x69, 0x72, 0x5c, 0xe1, 0xbb, 0x95, 0xc9, 0x0d, 0x8c, 0x75,
93187 + 0x1e, 0x54, 0x0c, 0x5c, 0x86, 0x3b, 0x19, 0xcf, 0xef, 0xd8, 0xe9, 0x47,
93188 + 0x7a, 0xd1, 0x55, 0x94, 0xef, 0x1e, 0xac, 0x4f, 0x19, 0x92, 0x43, 0x45,
93189 + 0x83, 0x8b, 0xc8, 0xb7, 0x33, 0x82, 0x3b, 0x92, 0x8f, 0x95, 0x61, 0x49,
93190 + 0x0b, 0x10, 0x4c, 0x16, 0xf0, 0x2d, 0x2a, 0x6b, 0x47, 0x30, 0x92, 0xe7,
93191 + 0x63, 0xdb, 0x39, 0x5e, 0x24, 0xeb, 0x70, 0x2d, 0x98, 0xcf, 0x58, 0x20,
93192 + 0xf6, 0xa5, 0x31, 0xc7, 0x2c, 0x51, 0x0c, 0xdf, 0x1e, 0xfa, 0xa9, 0xe4,
93193 + 0x3d, 0x57, 0x24, 0x0b, 0xb1, 0x4f, 0xcf, 0x2e, 0x76, 0x74, 0x12, 0x47,
93194 + 0xf4, 0x8d, 0xbf, 0x53, 0xf4, 0xf6, 0x13, 0xca, 0x2b, 0xd8, 0x37, 0xf6,
93195 + 0x2a, 0x86, 0xc6, 0xdc, 0xca, 0xe8, 0x98, 0xf4, 0x35, 0x81, 0xbe, 0xcc,
93196 + 0x9f, 0xea, 0x6b, 0xea, 0xfa, 0xcb, 0xa2, 0xf3, 0xd6, 0x6c, 0xae, 0xce,
93197 + 0xe7, 0x89, 0x4b, 0xcf, 0xe3, 0xc7, 0x32, 0x27, 0x62, 0x97, 0x5e, 0xf4,
93198 + 0xa4, 0xce, 0xad, 0x0b, 0xf4, 0x27, 0xb6, 0xd9, 0xfe, 0xd9, 0x92, 0x11,
93199 + 0x7b, 0x55, 0x19, 0x33, 0x2f, 0xce, 0xe7, 0x2c, 0xb5, 0xd4, 0x41, 0x9f,
93200 + 0x7d, 0x6f, 0x9f, 0xf9, 0x29, 0x64, 0xed, 0x6b, 0x8b, 0xe9, 0x9b, 0xd5,
93201 + 0x28, 0x26, 0x26, 0x06, 0x43, 0x3e, 0x14, 0x57, 0xc9, 0x3a, 0xce, 0xb9,
93202 + 0xdc, 0x7f, 0xc3, 0x4e, 0x86, 0x64, 0x1b, 0x73, 0x1a, 0x89, 0x7f, 0xb5,
93203 + 0x9c, 0xef, 0x1c, 0xce, 0xac, 0xa7, 0x0d, 0x5d, 0x27, 0x36, 0xe4, 0xca,
93204 + 0xd9, 0xd0, 0x47, 0xd7, 0x17, 0x54, 0x90, 0xfb, 0x69, 0x15, 0x76, 0xde,
93205 + 0xd7, 0xa4, 0x5c, 0x9f, 0xb7, 0xab, 0xcf, 0x67, 0x1e, 0x2d, 0xca, 0xe7,
93206 + 0x66, 0x17, 0x94, 0xff, 0x38, 0x1d, 0x5c, 0xf6, 0x67, 0xe8, 0x40, 0xe2,
93207 + 0x81, 0xe4, 0x04, 0xa2, 0x83, 0xf3, 0xf3, 0xf2, 0xfe, 0x44, 0x35, 0x71,
93208 + 0xef, 0x42, 0x5d, 0xcc, 0xcc, 0xeb, 0x62, 0x31, 0xb1, 0x4b, 0xfe, 0x5b,
93209 + 0x38, 0x65, 0x7a, 0xf1, 0xa2, 0x26, 0xe3, 0x5e, 0x8c, 0xf5, 0x1c, 0xaf,
93210 + 0x9b, 0xba, 0x58, 0x1e, 0xaa, 0x44, 0xf0, 0xbc, 0x78, 0x50, 0xcb, 0xd8,
93211 + 0xf1, 0x21, 0x79, 0xa6, 0xfc, 0xf6, 0xe3, 0x05, 0xea, 0xe2, 0x8e, 0xe1,
93212 + 0xc5, 0xb8, 0x8b, 0xfe, 0x94, 0xe3, 0x90, 0xb9, 0xd8, 0xb0, 0x76, 0x58,
93213 + 0xda, 0x14, 0x8c, 0xfb, 0xd9, 0xd9, 0x71, 0xfe, 0x71, 0x5e, 0xfe, 0x0a,
93214 + 0xe5, 0x97, 0x67, 0x07, 0xb2, 0x16, 0x2d, 0xcf, 0x11, 0x64, 0x2c, 0xc6,
93215 + 0x14, 0xdc, 0xb1, 0xac, 0x83, 0xe6, 0x3c, 0xc4, 0xaa, 0xf5, 0x7e, 0x89,
93216 + 0x8f, 0xfd, 0xc4, 0x03, 0x07, 0xf3, 0xc8, 0xa2, 0x48, 0x94, 0xfe, 0xac,
93217 + 0x5e, 0xe5, 0x80, 0x5a, 0xef, 0x40, 0x27, 0xde, 0x30, 0x8d, 0xde, 0x75,
93218 + 0xf8, 0x14, 0xba, 0xbc, 0x16, 0xf6, 0xb2, 0x9d, 0xee, 0x54, 0x09, 0xda,
93219 + 0xeb, 0x69, 0x56, 0x2b, 0x3d, 0xd8, 0x91, 0x8a, 0xb7, 0x12, 0x16, 0x18,
93220 + 0x73, 0x1a, 0xfe, 0x2a, 0x11, 0xd0, 0x5b, 0x36, 0x90, 0xb7, 0x2c, 0xef,
93221 + 0x73, 0xc3, 0xaf, 0xe4, 0x72, 0xb4, 0x01, 0x55, 0xd6, 0x09, 0x23, 0x94,
93222 + 0xbd, 0xc7, 0xce, 0xf7, 0xfc, 0xd3, 0xa5, 0x1f, 0x3f, 0xe2, 0x19, 0xa9,
93223 + 0xeb, 0x47, 0xe9, 0x5c, 0x05, 0xcb, 0xe7, 0xea, 0xf1, 0xa8, 0x62, 0x59,
93224 + 0x0b, 0x42, 0x4e, 0xfb, 0xfe, 0xb6, 0x4c, 0x5d, 0xeb, 0x0d, 0xea, 0xab,
93225 + 0x56, 0x6e, 0x6d, 0x52, 0xd7, 0xa2, 0x4c, 0x0a, 0x8e, 0xfc, 0xd1, 0xf5,
93226 + 0xf9, 0x20, 0xe4, 0xb9, 0x89, 0xdb, 0x58, 0x89, 0xfd, 0xf9, 0xf5, 0x39,
93227 + 0x57, 0xe4, 0xbd, 0x2f, 0xef, 0x35, 0x24, 0x6f, 0x11, 0x9d, 0x4b, 0x7f,
93228 + 0x62, 0x0b, 0xd7, 0x15, 0x0b, 0x06, 0x76, 0x65, 0x16, 0xd2, 0x16, 0x7f,
93229 + 0x6b, 0x8d, 0x7a, 0xa7, 0x96, 0xbd, 0x51, 0xcd, 0xad, 0xb7, 0x4b, 0xd9,
93230 + 0x42, 0xb9, 0x8b, 0x89, 0x09, 0x8d, 0x18, 0x3e, 0xaf, 0x4d, 0xc9, 0x75,
93231 + 0x0b, 0x6d, 0xde, 0xc6, 0x72, 0xd2, 0xae, 0xe0, 0xef, 0x7f, 0x59, 0xfb,
93232 + 0xce, 0x6b, 0xaf, 0xd5, 0x95, 0x6b, 0xef, 0xee, 0x62, 0xc9, 0xdd, 0xfb,
93233 + 0x53, 0x45, 0xac, 0xf3, 0x4e, 0x9e, 0x07, 0x16, 0xca, 0x7c, 0xea, 0x82,
93234 + 0x32, 0xc4, 0x79, 0xe3, 0x4d, 0x6b, 0xcf, 0x79, 0x65, 0x96, 0x3b, 0xcf,
93235 + 0x2f, 0xe3, 0xc4, 0x1c, 0xe3, 0x55, 0xeb, 0xc8, 0x79, 0x65, 0xd2, 0x17,
93236 + 0x94, 0xb9, 0x1c, 0x63, 0xf5, 0x8f, 0x58, 0x43, 0xb9, 0xb9, 0xc9, 0xd2,
93237 + 0x7d, 0xdc, 0x33, 0x23, 0xad, 0x7f, 0x75, 0xc5, 0x3c, 0xbd, 0x63, 0xa6,
93238 + 0x43, 0x9e, 0xd9, 0xb8, 0x91, 0xcd, 0xcd, 0x4d, 0x5c, 0xe6, 0xc6, 0xb5,
93239 + 0xa0, 0x30, 0x37, 0xd7, 0xe5, 0xeb, 0x17, 0xda, 0xbd, 0xae, 0xe8, 0xfc,
93240 + 0x76, 0x0b, 0xd7, 0xaf, 0xb8, 0x40, 0xee, 0xef, 0x5c, 0x50, 0xee, 0xb7,
93241 + 0x7f, 0xa4, 0xde, 0x2f, 0x1c, 0xe7, 0x5f, 0x3f, 0xa0, 0x9e, 0x7f, 0xde,
93242 + 0x9c, 0x3f, 0x2f, 0xe8, 0xbf, 0xea, 0x82, 0xf2, 0x35, 0x17, 0x94, 0x7f,
93243 + 0x59, 0xfd, 0xf8, 0x7e, 0xd6, 0x5d, 0x50, 0xcf, 0x5e, 0xab, 0xc6, 0x53,
93244 + 0x67, 0x7d, 0x1e, 0x4d, 0x45, 0x08, 0x98, 0x4e, 0x05, 0x7e, 0xfa, 0xbe,
93245 + 0xff, 0xe9, 0x0b, 0xd6, 0xac, 0x9b, 0xce, 0xfa, 0xfe, 0x79, 0x9c, 0x33,
93246 + 0x56, 0x1c, 0x91, 0x18, 0x56, 0x44, 0xee, 0x2c, 0x3c, 0xb0, 0x4e, 0x3b,
93247 + 0x97, 0x67, 0x15, 0x62, 0x65, 0x45, 0xac, 0x24, 0xd2, 0x00, 0xff, 0xd8,
93248 + 0x2c, 0xff, 0x9b, 0x09, 0x59, 0xb7, 0xfc, 0x80, 0x5c, 0xca, 0xf0, 0xed,
93249 + 0xc7, 0x2c, 0xff, 0x4f, 0xd3, 0x6f, 0x15, 0xa3, 0xc2, 0x83, 0xab, 0x13,
93250 + 0x1f, 0x5f, 0x4f, 0x8d, 0x40, 0x59, 0xd6, 0xe0, 0x63, 0x7e, 0x05, 0xe7,
93251 + 0x35, 0xf3, 0x30, 0xe5, 0xaf, 0x45, 0xf2, 0x3d, 0xf5, 0x58, 0x43, 0x98,
93252 + 0xf1, 0x39, 0xf7, 0xbc, 0x76, 0x49, 0x46, 0xf7, 0x45, 0x95, 0xdc, 0x33,
93253 + 0xd9, 0xf6, 0xd0, 0x1f, 0xc8, 0x77, 0x3a, 0x29, 0x97, 0xc5, 0xbe, 0x80,
93254 + 0x0d, 0x09, 0xcb, 0x7a, 0x8a, 0x79, 0xaa, 0x3c, 0xeb, 0xff, 0x79, 0xfa,
93255 + 0xf7, 0xd6, 0x84, 0xd7, 0x89, 0xb7, 0x8c, 0xa9, 0xed, 0xf9, 0x51, 0x19,
93256 + 0x31, 0x99, 0x2f, 0xd9, 0x27, 0xea, 0x98, 0x51, 0xb7, 0x71, 0x2f, 0xfd,
93257 + 0x6e, 0x7e, 0x40, 0xf7, 0x27, 0xf1, 0xef, 0x96, 0xbf, 0x46, 0x0f, 0x0e,
93258 + 0x29, 0x85, 0x75, 0xe2, 0x0b, 0xd7, 0x83, 0x2b, 0x62, 0x2e, 0x8e, 0x6f,
93259 + 0x8f, 0xcd, 0xf7, 0x8b, 0x88, 0x71, 0x88, 0x39, 0x23, 0xb3, 0xfc, 0x5b,
93260 + 0x12, 0xf6, 0x38, 0xc9, 0x17, 0x15, 0x1c, 0x6b, 0x98, 0xe5, 0xef, 0x4e,
93261 + 0x7b, 0xb1, 0x9d, 0xf1, 0xb8, 0xc4, 0x68, 0xc0, 0x23, 0x69, 0x15, 0xb7,
93262 + 0xdd, 0xef, 0xc5, 0x5a, 0x72, 0xd1, 0x8d, 0x7d, 0xdf, 0x80, 0x71, 0xa9,
93263 + 0x13, 0xb7, 0xd2, 0xfe, 0xd6, 0xf5, 0x15, 0xdb, 0x39, 0xc8, 0xfa, 0x3e,
93264 + 0x27, 0xea, 0x2f, 0xad, 0x40, 0xbc, 0xa6, 0x18, 0xdf, 0x37, 0x1d, 0xcc,
93265 + 0x7b, 0xca, 0x30, 0x64, 0x63, 0xa2, 0xe4, 0xb2, 0x82, 0x73, 0xa2, 0x37,
93266 + 0x87, 0xbd, 0x2e, 0xf9, 0xf1, 0x58, 0xfe, 0x5b, 0x2b, 0x5b, 0xb3, 0xdd,
93267 + 0xc6, 0x5f, 0x47, 0xc4, 0xb4, 0xe3, 0x25, 0x90, 0xe3, 0x69, 0x5d, 0xe7,
93268 + 0x3d, 0x57, 0x6e, 0x51, 0xe6, 0x44, 0x02, 0x13, 0x8b, 0x15, 0x07, 0xc2,
93269 + 0x81, 0x8a, 0x58, 0x65, 0x24, 0x8c, 0x65, 0x99, 0x2e, 0x9f, 0xcf, 0x7e,
93270 + 0x56, 0x1d, 0xc1, 0xe9, 0x45, 0x26, 0x73, 0x60, 0x38, 0x97, 0x51, 0xf7,
93271 + 0x4d, 0xd4, 0xeb, 0x66, 0xf3, 0x0f, 0x56, 0xd6, 0xf6, 0x7b, 0x37, 0x62,
93272 + 0x9a, 0x65, 0xad, 0xa3, 0x7e, 0x1d, 0xd4, 0xe3, 0xcf, 0xf2, 0xfa, 0x15,
93273 + 0x9d, 0x96, 0x8d, 0xfd, 0xde, 0x3a, 0x46, 0xfd, 0xba, 0xd9, 0x9e, 0x9b,
93274 + 0xed, 0x95, 0x8c, 0x9d, 0xaf, 0xe7, 0x62, 0xca, 0xb3, 0xcc, 0x96, 0xa1,
93275 + 0x52, 0x9e, 0xf5, 0xf9, 0xa3, 0x4a, 0x01, 0xb7, 0xff, 0xd4, 0x98, 0x5e,
93276 + 0x99, 0x92, 0x83, 0x88, 0xfe, 0xfd, 0xd4, 0xbf, 0x60, 0xb8, 0xcc, 0x41,
93277 + 0xbd, 0xac, 0xfb, 0xf4, 0x02, 0xa3, 0x4c, 0xd6, 0x15, 0x4c, 0x33, 0x22,
93278 + 0xf8, 0x76, 0x8b, 0x07, 0x6f, 0x26, 0xca, 0xed, 0x71, 0x5f, 0x3a, 0xd7,
93279 + 0xb2, 0x1e, 0x0f, 0xf9, 0xf1, 0x73, 0xa3, 0x2e, 0xbc, 0x40, 0xd5, 0x31,
93280 + 0xa9, 0x79, 0x91, 0x20, 0xce, 0x76, 0xa5, 0x66, 0x73, 0xbe, 0xbc, 0xd8,
93281 + 0x92, 0xc2, 0x46, 0xda, 0x93, 0xdf, 0x11, 0x01, 0xde, 0x48, 0x18, 0xc1,
93282 + 0xcd, 0xec, 0x7f, 0xd8, 0xdb, 0x40, 0xfe, 0xad, 0x36, 0x91, 0xaa, 0xc5,
93283 + 0x4b, 0x22, 0x46, 0x7c, 0x2b, 0xfe, 0xc3, 0x1a, 0x22, 0xce, 0x17, 0x85,
93284 + 0x64, 0x6d, 0x6e, 0x0e, 0x8e, 0x6b, 0x0e, 0x3c, 0x1b, 0x9c, 0x8e, 0x28,
93285 + 0xdd, 0xb1, 0xcc, 0x78, 0xcb, 0xfa, 0xa1, 0x57, 0xfa, 0x91, 0xb1, 0xfc,
93286 + 0x86, 0xe3, 0x50, 0x6c, 0x2c, 0xdc, 0x92, 0x6a, 0xa0, 0xbe, 0x2f, 0xec,
93287 + 0xff, 0xdf, 0xad, 0x49, 0xaf, 0xf4, 0xcf, 0x5c, 0x9e, 0xf1, 0xec, 0xc8,
93288 + 0x1f, 0xc5, 0xee, 0x97, 0xac, 0xe7, 0xec, 0x36, 0x17, 0xb9, 0x73, 0x71,
93289 + 0x50, 0xda, 0xfb, 0x17, 0x8e, 0x4f, 0xda, 0x2c, 0xf4, 0x23, 0x7a, 0xcb,
93290 + 0xba, 0xc5, 0x9f, 0xb7, 0xa4, 0x44, 0x7f, 0x82, 0x57, 0xc7, 0x2c, 0x4c,
93291 + 0x97, 0xf3, 0x87, 0xed, 0xb2, 0x71, 0xea, 0xab, 0x8b, 0x36, 0xc4, 0xd8,
93292 + 0xcb, 0x3c, 0x4e, 0x76, 0x51, 0x68, 0x76, 0x9e, 0xb6, 0x89, 0xdc, 0x7e,
93293 + 0xc8, 0x5b, 0x89, 0x2d, 0x26, 0xed, 0xce, 0x50, 0x2f, 0x76, 0x42, 0x72,
93294 + 0x53, 0x39, 0x77, 0x61, 0xd2, 0xeb, 0xc0, 0x56, 0xd3, 0x89, 0x76, 0x43,
93295 + 0xd5, 0xe5, 0xba, 0x23, 0x24, 0xe7, 0x2e, 0xf8, 0x6b, 0x14, 0x6c, 0x0f,
93296 + 0xab, 0x58, 0x6f, 0x74, 0xf9, 0xe5, 0xfa, 0x92, 0x90, 0x9c, 0x2b, 0x58,
93297 + 0x43, 0x9d, 0xc4, 0x35, 0x05, 0x1b, 0x0c, 0x79, 0xbe, 0x98, 0xe3, 0xbe,
93298 + 0x31, 0x58, 0xd6, 0x76, 0xb3, 0xf1, 0x8a, 0x32, 0x48, 0x9c, 0x17, 0x2e,
93299 + 0xf7, 0xde, 0xcd, 0xf3, 0x03, 0x71, 0x12, 0x31, 0x3d, 0x56, 0x42, 0x3f,
93300 + 0xdd, 0xd2, 0x37, 0x87, 0xf5, 0x14, 0x72, 0x1c, 0xa7, 0x6f, 0x1b, 0x24,
93301 + 0x7e, 0x06, 0xfc, 0x3f, 0x65, 0xf2, 0x34, 0xe4, 0x9d, 0x47, 0xcd, 0x1a,
93302 + 0xfe, 0x93, 0x9c, 0xb7, 0x4a, 0xc3, 0xb9, 0xf1, 0x07, 0xd0, 0xdb, 0x4b,
93303 + 0x94, 0x79, 0xc1, 0x0a, 0xe6, 0x00, 0x71, 0xe2, 0xfb, 0xc8, 0x98, 0x13,
93304 + 0x9b, 0x53, 0x86, 0xb6, 0xcf, 0xe6, 0x6e, 0x4e, 0xea, 0xc2, 0xc9, 0x1c,
93305 + 0x3f, 0xa0, 0x4d, 0x28, 0x85, 0xf3, 0x39, 0x82, 0x0d, 0xe4, 0xe2, 0x82,
93306 + 0x6f, 0x71, 0xeb, 0xc9, 0x06, 0x49, 0xdb, 0xdc, 0xfe, 0x58, 0xda, 0xc3,
93307 + 0x43, 0xe3, 0xe1, 0xf5, 0xaf, 0x4d, 0xfb, 0xfc, 0x6b, 0xd2, 0xf0, 0xb7,
93308 + 0xa5, 0x0b, 0x76, 0x59, 0xf0, 0x6d, 0xc1, 0x36, 0x8b, 0x7c, 0x33, 0x97,
93309 + 0x73, 0x75, 0x49, 0x4e, 0x03, 0x79, 0x3e, 0xf6, 0xde, 0xcd, 0x4f, 0xd1,
93310 + 0xd6, 0x5d, 0xe4, 0xf2, 0x5b, 0x8d, 0x78, 0x54, 0x9e, 0xd7, 0x19, 0x21,
93311 + 0xdd, 0x57, 0xa4, 0xf8, 0xb1, 0xa5, 0xfe, 0x77, 0x9c, 0x4f, 0x72, 0xdc,
93312 + 0xf4, 0xa7, 0x4a, 0x72, 0xf3, 0x21, 0x7e, 0x26, 0x18, 0xe0, 0x67, 0x1e,
93313 + 0xe4, 0xf3, 0x77, 0xb1, 0x9f, 0x4d, 0xe9, 0xa9, 0x3e, 0xa0, 0xe0, 0x1a,
93314 + 0xb6, 0xd5, 0x18, 0x82, 0x73, 0x69, 0xfd, 0x7f, 0x59, 0x59, 0xef, 0xd4,
93315 + 0x7d, 0x11, 0x20, 0x87, 0x80, 0xb3, 0xad, 0x5e, 0xce, 0x15, 0x34, 0x86,
93316 + 0xe5, 0x5c, 0x41, 0x9b, 0x91, 0x93, 0x4f, 0x7c, 0xb7, 0x9b, 0xb8, 0x7d,
93317 + 0xee, 0xfc, 0x42, 0x2c, 0x32, 0x71, 0x7b, 0x0a, 0xb1, 0xa2, 0x88, 0x60,
93318 + 0x91, 0xdb, 0xff, 0x5c, 0xba, 0x9e, 0x5c, 0x5c, 0x9e, 0x7f, 0xbb, 0x39,
93319 + 0xe7, 0x1e, 0xff, 0xb3, 0xe9, 0x2b, 0x71, 0xdb, 0xae, 0x30, 0xda, 0x77,
93320 + 0xc9, 0x86, 0x23, 0xe6, 0x60, 0xa1, 0x80, 0x7f, 0x14, 0x9a, 0xff, 0x38,
93321 + 0x75, 0x72, 0x94, 0x72, 0x1e, 0x3b, 0x4f, 0x4e, 0xd1, 0x21, 0xfc, 0x77,
93322 + 0x24, 0xdc, 0x48, 0x87, 0xde, 0xb7, 0xe2, 0x36, 0xe7, 0xf0, 0xfa, 0xef,
93323 + 0x4c, 0xf8, 0x91, 0xb5, 0xb9, 0xe7, 0xbf, 0xbb, 0x25, 0x47, 0xec, 0x49,
93324 + 0xc5, 0xa3, 0x4c, 0x79, 0xf3, 0xf3, 0xab, 0x87, 0x65, 0x6e, 0xdf, 0x48,
93325 + 0xc8, 0xbd, 0xe8, 0x37, 0x54, 0xe8, 0x7e, 0x95, 0xb1, 0xb4, 0xdf, 0x14,
93326 + 0xfb, 0xb5, 0xec, 0x67, 0xfb, 0xac, 0x18, 0xf7, 0x44, 0x02, 0xad, 0xf5,
93327 + 0xbc, 0xae, 0x2d, 0x40, 0xac, 0x8a, 0x7a, 0x2a, 0x35, 0xbc, 0xfe, 0xba,
93328 + 0x71, 0x9f, 0xdf, 0x1c, 0x87, 0xff, 0x92, 0xf1, 0xa9, 0x22, 0x90, 0xa3,
93329 + 0xab, 0x1f, 0x87, 0x05, 0x5e, 0xff, 0xba, 0xc4, 0x1c, 0xa8, 0x91, 0xb8,
93330 + 0xb5, 0xa4, 0xe1, 0xb4, 0x35, 0x27, 0x62, 0x64, 0x8f, 0x51, 0x86, 0xf7,
93331 + 0x2f, 0xd7, 0xe3, 0x33, 0x1d, 0x47, 0xef, 0xd5, 0xa6, 0xf4, 0xf1, 0x5e,
93332 + 0xe8, 0xff, 0x6f, 0x1f, 0x85, 0x38, 0x47, 0x7b, 0x68, 0x90, 0x31, 0x48,
93333 + 0xbc, 0x2b, 0x62, 0xce, 0x29, 0x63, 0xf9, 0x54, 0xe1, 0xb9, 0x47, 0x7e,
93334 + 0x5c, 0x0a, 0xe7, 0x1a, 0x36, 0x0f, 0xce, 0xc5, 0x30, 0xcb, 0xea, 0x36,
93335 + 0x7c, 0xf9, 0xe7, 0x67, 0x9c, 0xb3, 0xcc, 0xd1, 0x2b, 0x9c, 0x58, 0x4c,
93336 + 0x3f, 0x68, 0xfc, 0x4b, 0x27, 0xa2, 0xbe, 0x62, 0xc6, 0x56, 0x59, 0x17,
93337 + 0x3a, 0x5e, 0x3f, 0x69, 0x4d, 0x18, 0xf5, 0x68, 0xcc, 0xc8, 0xf3, 0x4c,
93338 + 0x07, 0xed, 0xdb, 0xc2, 0x23, 0xa6, 0xdc, 0x17, 0x9c, 0x89, 0xc7, 0x1c,
93339 + 0xb4, 0x15, 0xb7, 0xa1, 0xb7, 0xfe, 0xbd, 0x52, 0x81, 0xd2, 0x88, 0x33,
93340 + 0x38, 0x01, 0x3d, 0xbc, 0x5e, 0xa1, 0x1f, 0x56, 0xcd, 0x33, 0x65, 0x0a,
93341 + 0xde, 0x4e, 0x04, 0xcc, 0x40, 0x3e, 0x2e, 0x9d, 0xe2, 0xdc, 0xbd, 0x93,
93342 + 0x30, 0xda, 0x9f, 0xca, 0x9f, 0xff, 0x22, 0x3d, 0x35, 0xa7, 0x15, 0x7b,
93343 + 0x74, 0xbb, 0x37, 0x25, 0xf0, 0x9e, 0xa3, 0x01, 0xef, 0xed, 0x31, 0x8b,
93344 + 0x98, 0x8b, 0x89, 0x9d, 0xba, 0xdd, 0x5b, 0x12, 0x98, 0x74, 0xf2, 0xda,
93345 + 0x29, 0x73, 0x36, 0x31, 0x4d, 0xe5, 0xb5, 0xb0, 0xd8, 0x59, 0x4c, 0x63,
93346 + 0x7c, 0x2d, 0x8d, 0x78, 0xdd, 0xa5, 0xe3, 0xd0, 0x4a, 0x8c, 0x0a, 0xe6,
93347 + 0xba, 0x68, 0x72, 0x24, 0x75, 0x7f, 0xb3, 0xa3, 0x9e, 0x39, 0xaf, 0x5f,
93348 + 0x71, 0x19, 0xdf, 0x63, 0x5e, 0x2f, 0x6b, 0x61, 0x61, 0xda, 0xa4, 0x93,
93349 + 0x15, 0x76, 0x4c, 0x57, 0x23, 0x0a, 0xb1, 0xb0, 0x02, 0xb7, 0x6b, 0x1b,
93350 + 0x3e, 0xab, 0x46, 0xfa, 0x71, 0x7d, 0x83, 0xbb, 0xa9, 0x72, 0xbc, 0xa0,
93351 + 0x13, 0xc4, 0x3c, 0x11, 0xe6, 0x25, 0x06, 0xd4, 0xf2, 0x88, 0xe8, 0xc6,
93352 + 0xdf, 0x94, 0x1c, 0x13, 0x59, 0x35, 0x77, 0xdf, 0xd8, 0x3b, 0x25, 0x28,
93353 + 0x0d, 0x13, 0xab, 0x7e, 0xe2, 0xfb, 0xef, 0xd5, 0x3b, 0x5a, 0x22, 0x78,
93354 + 0xef, 0x32, 0xe4, 0xbf, 0x6d, 0x5b, 0x6e, 0x77, 0xe4, 0x83, 0x98, 0x3b,
93355 + 0x60, 0x59, 0x8c, 0x93, 0x3e, 0x28, 0xb3, 0x39, 0x1e, 0xfa, 0x1a, 0xe7,
93356 + 0x66, 0x4d, 0xfa, 0x0f, 0xd6, 0xe7, 0x9c, 0x36, 0x07, 0x70, 0x17, 0x47,
93357 + 0x3a, 0x6e, 0x79, 0xcb, 0xf8, 0xc0, 0x7a, 0x33, 0xc1, 0x5c, 0xd9, 0x90,
93358 + 0x67, 0x43, 0x73, 0xb0, 0xcd, 0x74, 0x36, 0x2f, 0x55, 0x14, 0xf4, 0x18,
93359 + 0xf3, 0xb4, 0x12, 0xc6, 0xa9, 0x6e, 0xfa, 0x75, 0xcc, 0x6b, 0x04, 0xf7,
93360 + 0x80, 0xe5, 0xd2, 0xeb, 0xd6, 0xb9, 0x22, 0x77, 0xde, 0x32, 0xd2, 0x20,
93361 + 0x58, 0x10, 0x6e, 0x7b, 0xca, 0x68, 0x41, 0x4f, 0x66, 0x10, 0xbd, 0x99,
93362 + 0x5c, 0x3f, 0x59, 0xcc, 0xf9, 0x98, 0x7e, 0xd6, 0xad, 0x2b, 0x8e, 0x08,
93363 + 0xf7, 0x3a, 0x73, 0xcb, 0x5e, 0x23, 0x8a, 0xcd, 0x99, 0x3b, 0x6f, 0x39,
93364 + 0xd5, 0xd0, 0xcf, 0xff, 0xb9, 0x3a, 0x43, 0xa8, 0xfc, 0xd8, 0x3a, 0x65,
93365 + 0x11, 0xe9, 0xa3, 0xe3, 0x96, 0xa7, 0x8c, 0x3b, 0x6f, 0x69, 0x5f, 0xf4,
93366 + 0x4d, 0x6c, 0xca, 0xb4, 0xff, 0xc9, 0x7e, 0xca, 0x59, 0xa7, 0x34, 0x72,
93367 + 0xa8, 0xed, 0x9a, 0xc0, 0x9d, 0xb7, 0xa4, 0x17, 0xf5, 0xb2, 0x8f, 0x55,
93368 + 0x8c, 0x2f, 0xb9, 0x3a, 0x51, 0xc6, 0xf6, 0x8f, 0xd3, 0x41, 0x49, 0x64,
93369 + 0xa2, 0x6d, 0x7e, 0xe0, 0x03, 0x6b, 0x5e, 0x5f, 0x91, 0xad, 0x03, 0x17,
93370 + 0x75, 0xf0, 0xa0, 0xe9, 0xcc, 0x06, 0x1c, 0xb6, 0x0e, 0x3a, 0x7c, 0xd4,
93371 + 0x41, 0x92, 0x3a, 0xc8, 0xd6, 0x18, 0xe1, 0x77, 0xa9, 0x83, 0x79, 0x63,
93372 + 0xeb, 0xd6, 0x95, 0x44, 0xe0, 0x74, 0x18, 0xaf, 0x3a, 0x9c, 0x9c, 0x0b,
93373 + 0x97, 0xb1, 0x8e, 0x7a, 0xbb, 0xf3, 0x96, 0x8b, 0x17, 0xd9, 0x3a, 0xff,
93374 + 0xb2, 0x3b, 0xb0, 0xc1, 0xde, 0x3b, 0xd7, 0x9d, 0x59, 0xc3, 0xa3, 0x99,
93375 + 0xc7, 0x7d, 0x3c, 0x7a, 0x98, 0xb3, 0xdc, 0x4c, 0x5d, 0x35, 0x71, 0x1c,
93376 + 0x2b, 0x28, 0xd7, 0x46, 0xfe, 0x6e, 0xe5, 0xef, 0x0e, 0xfe, 0x96, 0xf9,
93377 + 0x51, 0xcf, 0xca, 0x16, 0x3b, 0x2b, 0x9b, 0x83, 0xf2, 0x78, 0x88, 0x57,
93378 + 0x32, 0x26, 0xf7, 0x57, 0xae, 0x09, 0xc4, 0xd8, 0xc6, 0xfd, 0xa5, 0xb2,
93379 + 0x6f, 0xc8, 0x65, 0xc4, 0x7d, 0x4e, 0x88, 0x7c, 0x7a, 0x6b, 0x3b, 0xb2,
93380 + 0xc4, 0xde, 0xdf, 0xe7, 0xb0, 0x97, 0xb2, 0x55, 0x70, 0x7e, 0x5e, 0x58,
93381 + 0x34, 0x34, 0xc3, 0x63, 0xc0, 0xe7, 0x36, 0xe2, 0xcc, 0xf9, 0x13, 0xd4,
93382 + 0x81, 0xd8, 0xc9, 0x3d, 0xd4, 0x5f, 0x27, 0xeb, 0x1c, 0x65, 0x2c, 0xdb,
93383 + 0xcd, 0xfe, 0xed, 0xf5, 0xdb, 0xb0, 0xfd, 0x9c, 0x0c, 0xba, 0x79, 0x9c,
93384 + 0xed, 0xed, 0x35, 0x7e, 0x53, 0x76, 0xb4, 0x5e, 0xf6, 0x53, 0x3a, 0x31,
93385 + 0x6c, 0xcf, 0xbb, 0x42, 0x2e, 0x73, 0x11, 0x79, 0x82, 0x65, 0xfd, 0xd4,
93386 + 0x68, 0x9c, 0xef, 0xb0, 0xed, 0xea, 0x50, 0x9b, 0x3b, 0xe0, 0xc6, 0x90,
93387 + 0xbd, 0x06, 0x6e, 0x59, 0x45, 0xb6, 0x7d, 0x89, 0x2c, 0x75, 0xcd, 0x9b,
93388 + 0x68, 0x78, 0xeb, 0xd2, 0x1f, 0x90, 0x27, 0x8a, 0xfc, 0x73, 0x70, 0x92,
93389 + 0x31, 0x35, 0xaa, 0xc5, 0xdb, 0x45, 0xd6, 0x32, 0xc3, 0x19, 0xbe, 0x16,
93390 + 0xf1, 0x16, 0x27, 0xfb, 0x6b, 0x26, 0xa7, 0x3c, 0x95, 0xc7, 0xee, 0x7d,
93391 + 0x69, 0x3d, 0xb6, 0x5f, 0xc9, 0xf1, 0xd3, 0xde, 0xb1, 0x42, 0xfc, 0x09,
93392 + 0x92, 0xcf, 0x7a, 0xe0, 0x8c, 0xe8, 0xfe, 0x26, 0x47, 0x57, 0xd0, 0x05,
93393 + 0xfa, 0x58, 0xa9, 0xc8, 0x1b, 0xa7, 0xec, 0x82, 0xc7, 0x6e, 0x6d, 0x8d,
93394 + 0x8d, 0xd1, 0xf1, 0xf9, 0x2e, 0x78, 0xb4, 0xb5, 0xe9, 0x42, 0xec, 0xf2,
93395 + 0x68, 0x6d, 0x09, 0xf1, 0x77, 0x59, 0xab, 0x0f, 0xdb, 0xdc, 0xe3, 0x48,
93396 + 0xe6, 0xa5, 0x52, 0xd9, 0x8b, 0x47, 0xdf, 0xaf, 0x70, 0x1a, 0xb9, 0x76,
93397 + 0x35, 0xb6, 0xdb, 0xe2, 0xd0, 0x70, 0xce, 0x77, 0x75, 0xad, 0xc5, 0x21,
93398 + 0xfb, 0x5f, 0x89, 0x4a, 0xe9, 0x7c, 0xbd, 0x1c, 0x7e, 0x2d, 0x76, 0xd9,
93399 + 0xf8, 0xc5, 0x36, 0x4a, 0x81, 0x25, 0x89, 0x0b, 0xfb, 0x97, 0xfe, 0xa4,
93400 + 0xdf, 0xae, 0x2a, 0x15, 0x13, 0xf6, 0xb3, 0x92, 0x83, 0x99, 0x18, 0x06,
93401 + 0x53, 0x53, 0xf7, 0xe8, 0xe9, 0x87, 0xd8, 0xfe, 0x81, 0x38, 0xe7, 0x69,
93402 + 0xb6, 0x21, 0xfb, 0xf7, 0x64, 0xcf, 0xde, 0xd4, 0xfd, 0x7a, 0x22, 0x5b,
93403 + 0x65, 0x19, 0x81, 0x0d, 0x7b, 0x89, 0x7f, 0xd1, 0x16, 0xa9, 0x6f, 0x59,
93404 + 0xaf, 0xcd, 0x0b, 0x22, 0x3b, 0xcd, 0x89, 0xc1, 0xb9, 0xc0, 0x40, 0x52,
93405 + 0xf6, 0x53, 0x9d, 0x89, 0xad, 0x66, 0x1e, 0x19, 0xad, 0xae, 0xd3, 0xba,
93406 + 0x55, 0xd9, 0x0b, 0xf5, 0xc1, 0x97, 0x7b, 0x8c, 0x5a, 0xad, 0x47, 0xcd,
93407 + 0xee, 0x67, 0x7c, 0xd9, 0x0d, 0xcc, 0x2e, 0x13, 0x0c, 0xa8, 0x32, 0xa2,
93408 + 0xbd, 0x55, 0x98, 0x0b, 0x7f, 0xb5, 0x8d, 0xcb, 0xf1, 0x6f, 0xab, 0x46,
93409 + 0x70, 0xa5, 0xf0, 0x4a, 0xf5, 0x7d, 0x6b, 0x88, 0xdc, 0xe4, 0xee, 0xb9,
93410 + 0xff, 0xa7, 0x34, 0xbf, 0xee, 0xd4, 0x3e, 0x9d, 0xf3, 0xf2, 0xf3, 0x05,
93411 + 0xba, 0x3f, 0xad, 0x88, 0x8e, 0x84, 0x4b, 0x25, 0xb0, 0x95, 0x71, 0xf6,
93412 + 0xbf, 0xe6, 0x46, 0xb0, 0x8f, 0xff, 0x7f, 0x76, 0xa5, 0xec, 0x4d, 0xb5,
93413 + 0xac, 0x60, 0x60, 0x5e, 0xb8, 0x8a, 0x63, 0x78, 0x96, 0xf7, 0x7b, 0x33,
93414 + 0x6f, 0x59, 0xa7, 0xa6, 0x1b, 0xfd, 0xcb, 0x18, 0xec, 0x06, 0xc6, 0x75,
93415 + 0x6d, 0x52, 0xfd, 0xef, 0xee, 0x95, 0x83, 0xbb, 0x82, 0x63, 0xf9, 0x7e,
93416 + 0xa0, 0x4e, 0x4b, 0xaa, 0xa5, 0x65, 0xa2, 0xd7, 0x81, 0xf1, 0x57, 0xa6,
93417 + 0x3c, 0x3b, 0x28, 0xf0, 0x59, 0x7b, 0x5d, 0xa5, 0x77, 0x88, 0xbe, 0x3e,
93418 + 0xa4, 0x45, 0xe3, 0xd4, 0xbb, 0x7b, 0x1a, 0xc7, 0x7c, 0xf7, 0xdc, 0x2f,
93419 + 0xd9, 0xe3, 0xac, 0x36, 0x66, 0x72, 0x8c, 0x0a, 0xb4, 0xb9, 0xff, 0x99,
93420 + 0x5f, 0x7f, 0x6d, 0x24, 0xfb, 0x1a, 0xb2, 0x9a, 0xe8, 0x1b, 0x45, 0xac,
93421 + 0x73, 0xb5, 0xf9, 0xf0, 0x8c, 0xae, 0x7a, 0xdd, 0x77, 0x37, 0x6d, 0x34,
93422 + 0x34, 0xf7, 0xd7, 0x16, 0x6d, 0xda, 0xfc, 0x16, 0x47, 0x7d, 0x5b, 0xc2,
93423 + 0x8e, 0x55, 0x9c, 0x57, 0x23, 0x3a, 0x57, 0x79, 0xc7, 0x42, 0x4d, 0x20,
93424 + 0x3c, 0xd7, 0x1e, 0x3f, 0x70, 0x6b, 0x3a, 0x81, 0x6d, 0x29, 0x69, 0x53,
93425 + 0xc1, 0xb2, 0xc0, 0xdb, 0x96, 0x7f, 0x7a, 0x02, 0x5b, 0x32, 0x9f, 0xc4,
93426 + 0x4d, 0x07, 0xc9, 0x8d, 0xf5, 0xd6, 0x38, 0xf4, 0x68, 0xee, 0xd9, 0xd4,
93427 + 0x1c, 0x59, 0xdb, 0x96, 0xbd, 0x45, 0xb7, 0x24, 0x02, 0x70, 0x97, 0x13,
93428 + 0x83, 0xc7, 0x02, 0xf2, 0x2c, 0xd3, 0x8b, 0x6c, 0x8b, 0x94, 0xa9, 0xd5,
93429 + 0xc6, 0x90, 0x25, 0x73, 0x94, 0xb5, 0xd0, 0xfe, 0xb2, 0xdc, 0x3e, 0x09,
93430 + 0x1a, 0x5e, 0x8d, 0xae, 0xbd, 0x41, 0xae, 0xd7, 0x6c, 0x48, 0x1b, 0x0a,
93431 + 0xe6, 0x07, 0xa6, 0xa1, 0x6e, 0xe5, 0xab, 0xaf, 0x17, 0x05, 0x8a, 0x18,
93432 + 0x4f, 0xc4, 0xb7, 0x8c, 0x8d, 0xc7, 0xf0, 0x1b, 0x62, 0x90, 0xec, 0x19,
93433 + 0x4b, 0x4a, 0x3d, 0xb6, 0x35, 0x17, 0x69, 0xf1, 0x53, 0x43, 0xf6, 0x2f,
93434 + 0x5b, 0xd6, 0x35, 0x81, 0x37, 0xad, 0x68, 0x0d, 0xe5, 0x21, 0x5f, 0xcb,
93435 + 0xd5, 0x95, 0x32, 0xf9, 0xbd, 0x40, 0x4a, 0xe3, 0x2d, 0xa2, 0x93, 0x27,
93436 + 0xcd, 0x38, 0xb3, 0x01, 0xc1, 0xfd, 0x0f, 0x62, 0x6f, 0x19, 0x8a, 0xfd,
93437 + 0x8c, 0x71, 0x99, 0x52, 0xc9, 0x38, 0xea, 0xf4, 0x8f, 0xd8, 0xeb, 0x05,
93438 + 0x1d, 0xc4, 0x68, 0xe1, 0x97, 0x92, 0xf3, 0x39, 0xf1, 0x94, 0x51, 0x85,
93439 + 0x27, 0xb5, 0x1c, 0x57, 0x23, 0xd6, 0xe1, 0x07, 0x89, 0x79, 0x59, 0x7a,
93440 + 0x08, 0x39, 0xaf, 0xd1, 0x7e, 0x46, 0xf9, 0x0d, 0xfd, 0x1c, 0x78, 0x21,
93441 + 0xbd, 0x11, 0x0f, 0xca, 0x1a, 0xa2, 0x52, 0xdb, 0x5c, 0xe7, 0x90, 0xfe,
93442 + 0x36, 0x62, 0x6b, 0x46, 0xda, 0xfa, 0x20, 0xb6, 0xd7, 0xd8, 0x9d, 0x97,
93443 + 0x55, 0xb0, 0xfc, 0x83, 0xd8, 0x53, 0xc6, 0xe3, 0xf6, 0xdc, 0xc9, 0x73,
93444 + 0xaf, 0x5e, 0x53, 0x30, 0xaf, 0x14, 0x2a, 0xf3, 0x06, 0x87, 0x71, 0x33,
93445 + 0x1c, 0x55, 0xdf, 0xa4, 0xed, 0xc9, 0xbe, 0x9a, 0xaf, 0xc2, 0x59, 0xe5,
93446 + 0xa2, 0x6f, 0xde, 0x0a, 0x57, 0x95, 0x70, 0xf5, 0x02, 0x8f, 0x8e, 0xf2,
93447 + 0xbe, 0xe8, 0x36, 0xdc, 0x26, 0xba, 0x75, 0x12, 0x87, 0x7a, 0x24, 0xaf,
93448 + 0x33, 0x2a, 0xa9, 0x23, 0xbd, 0x95, 0x9c, 0x1e, 0xe5, 0xc4, 0x4c, 0xc6,
93449 + 0x47, 0x37, 0xf3, 0xb7, 0xb6, 0x77, 0xa9, 0xf7, 0x79, 0x7d, 0x65, 0xe4,
93450 + 0xf0, 0x96, 0xf5, 0x3e, 0x39, 0xfc, 0xfc, 0x40, 0x5d, 0xd6, 0x20, 0x4e,
93451 + 0xe1, 0x06, 0xbd, 0x39, 0x4e, 0xbc, 0x59, 0x6d, 0x9c, 0xb1, 0x62, 0xab,
93452 + 0xa4, 0x8c, 0xee, 0x8b, 0x29, 0x85, 0x3e, 0x16, 0xc0, 0x3f, 0xcd, 0x82,
93453 + 0x2b, 0x22, 0xcf, 0x14, 0x64, 0xbd, 0xb8, 0x51, 0x9e, 0xf5, 0xb5, 0xc8,
93454 + 0xf8, 0x5d, 0xb2, 0xee, 0x86, 0xe8, 0x84, 0x0b, 0x46, 0x76, 0x9f, 0xcc,
93455 + 0xd9, 0x0c, 0x0b, 0x81, 0x85, 0xbf, 0x67, 0x2e, 0x24, 0xf3, 0x53, 0x9b,
93456 + 0xad, 0x57, 0xb2, 0x41, 0x1f, 0x39, 0xfd, 0xa3, 0xd0, 0x5b, 0x12, 0xd4,
93457 + 0x75, 0x53, 0x48, 0x9e, 0xdf, 0x3b, 0x7d, 0x09, 0xd8, 0x3c, 0xde, 0x3c,
93458 + 0x89, 0xcf, 0xa1, 0x9c, 0xb9, 0xeb, 0xdc, 0xb1, 0x15, 0xa8, 0xa8, 0x8a,
93459 + 0xfa, 0x4a, 0x71, 0x19, 0xcf, 0xd7, 0x30, 0x3f, 0xf9, 0x22, 0x2a, 0x56,
93460 + 0xb6, 0x22, 0xc1, 0xb1, 0x97, 0x1b, 0x7f, 0xc5, 0x6b, 0xf7, 0x21, 0x99,
93461 + 0x72, 0x71, 0x1c, 0x3f, 0xb1, 0x2a, 0x6a, 0x44, 0x36, 0xd3, 0x5b, 0x66,
93462 + 0x30, 0x9f, 0xb6, 0x75, 0x41, 0xdc, 0x4e, 0x09, 0x47, 0xaa, 0x8b, 0xae,
93463 + 0x07, 0x73, 0xfb, 0x1a, 0xbd, 0x75, 0x8d, 0xd2, 0x41, 0x9b, 0xed, 0xa1,
93464 + 0xce, 0xa5, 0xac, 0x65, 0x2d, 0x0f, 0x9c, 0xa6, 0x8e, 0x3b, 0x78, 0x6e,
93465 + 0xf8, 0xdf, 0x84, 0x7a, 0x59, 0x31, 0x4e, 0x58, 0x71, 0xcd, 0x47, 0xbb,
93466 + 0x54, 0x57, 0x09, 0x9f, 0x5a, 0x1a, 0x7a, 0x8f, 0xf7, 0xb5, 0xbc, 0x9d,
93467 + 0x9e, 0xb9, 0x25, 0xa7, 0xcb, 0x30, 0x75, 0xf9, 0x6f, 0xf6, 0x75, 0x87,
93468 + 0x7d, 0xbd, 0x23, 0x7f, 0xfd, 0xcc, 0x2d, 0x3d, 0xc6, 0xcb, 0xbc, 0xde,
93469 + 0x4b, 0xdd, 0xab, 0x17, 0x49, 0xfd, 0x75, 0xa6, 0xd4, 0x67, 0x4a, 0x65,
93470 + 0xf4, 0xe4, 0xe7, 0xe3, 0x50, 0x7e, 0x3e, 0x26, 0xf2, 0x6d, 0x38, 0xd9,
93471 + 0x46, 0x3c, 0x5a, 0x0a, 0x13, 0x65, 0x01, 0xc1, 0x79, 0x91, 0x8b, 0x73,
93472 + 0x97, 0x11, 0xb9, 0xd6, 0x30, 0xde, 0x75, 0x3d, 0x53, 0x8a, 0x78, 0xc7,
93473 + 0x4c, 0xdb, 0x0e, 0xcf, 0xdc, 0x22, 0xfb, 0xde, 0xde, 0x52, 0x1a, 0x7d,
93474 + 0xb2, 0x65, 0x23, 0x45, 0x2e, 0x7b, 0xaf, 0xe9, 0x0c, 0xd7, 0x3b, 0xe6,
93475 + 0x65, 0x8b, 0x61, 0xc4, 0xce, 0x28, 0x2e, 0x8f, 0xe0, 0x43, 0x22, 0xdd,
93476 + 0xc8, 0xcc, 0x2b, 0x1e, 0x64, 0xce, 0x14, 0xcc, 0x50, 0xb7, 0x6d, 0x44,
93477 + 0xec, 0x43, 0xf6, 0xde, 0x37, 0xe7, 0xc4, 0x0a, 0x34, 0xea, 0x0e, 0xcc,
93478 + 0x0b, 0xcf, 0x64, 0xe6, 0x45, 0xbb, 0x34, 0x8b, 0x1d, 0xba, 0xff, 0x7a,
93479 + 0x2c, 0xb7, 0xeb, 0xed, 0x4b, 0x67, 0xdb, 0x4b, 0x39, 0xa7, 0x8f, 0x51,
93480 + 0x8e, 0x6d, 0x01, 0x91, 0xe3, 0x9b, 0x79, 0x39, 0x5a, 0x19, 0x4b, 0x4d,
93481 + 0xed, 0xda, 0x40, 0xef, 0x59, 0xbd, 0x3d, 0x63, 0xeb, 0xed, 0x3e, 0x9e,
93482 + 0x17, 0x33, 0xbf, 0x2f, 0xc2, 0xd1, 0x7a, 0x6f, 0x7e, 0x1f, 0x9b, 0xe4,
93483 + 0x6a, 0x82, 0xbf, 0x0d, 0x7f, 0xbd, 0xda, 0xd0, 0xc3, 0x0e, 0x9b, 0xd7,
93484 + 0xbb, 0x11, 0xb7, 0x39, 0xb3, 0x3c, 0xf3, 0xae, 0xc0, 0x23, 0x76, 0x39,
93485 + 0x17, 0x75, 0x52, 0x86, 0x47, 0xf3, 0xfe, 0x22, 0x7b, 0x0e, 0x1e, 0xb3,
93486 + 0x7f, 0xef, 0xe6, 0xdc, 0xba, 0xe8, 0xab, 0x85, 0x18, 0x25, 0xeb, 0xed,
93487 + 0xff, 0xc3, 0xf6, 0xfd, 0x21, 0x1c, 0xb7, 0xff, 0x67, 0x73, 0xf9, 0x16,
93488 + 0x7a, 0x4c, 0xd9, 0x3b, 0x53, 0x86, 0x6e, 0x7b, 0x0f, 0xb9, 0xac, 0x01,
93489 + 0x5c, 0x89, 0xcd, 0x9a, 0xac, 0x07, 0x93, 0xfb, 0x68, 0x62, 0x13, 0x9d,
93490 + 0x48, 0x6a, 0xa6, 0x37, 0x53, 0x3f, 0x35, 0x57, 0x32, 0xb1, 0xa7, 0xfe,
93491 + 0x03, 0x2b, 0x6a, 0xe7, 0x4f, 0x27, 0xac, 0xbd, 0xc6, 0xd1, 0x10, 0x3d,
93492 + 0xb8, 0xbd, 0xc8, 0xd6, 0x6f, 0xb8, 0xcd, 0xde, 0xff, 0x47, 0x99, 0x9f,
93493 + 0x49, 0x48, 0x1c, 0x9d, 0x83, 0xb4, 0x69, 0xc7, 0xe2, 0x96, 0xed, 0x9c,
93494 + 0x93, 0x9e, 0x54, 0x20, 0x7a, 0x09, 0xef, 0x4d, 0x30, 0x96, 0x75, 0x53,
93495 + 0x9f, 0xb1, 0x16, 0xe1, 0x67, 0x6b, 0xb0, 0x9b, 0x36, 0x36, 0x6e, 0x5a,
93496 + 0xd6, 0x3e, 0x62, 0x44, 0xe5, 0x3c, 0x15, 0xd9, 0x9a, 0x35, 0x48, 0x31,
93497 + 0x36, 0xed, 0x33, 0x1a, 0x3f, 0x57, 0x84, 0xb8, 0xdf, 0x0d, 0xdd, 0xb7,
93498 + 0x85, 0xa3, 0xb9, 0x97, 0xf3, 0x75, 0xd4, 0x14, 0xde, 0xe8, 0x3c, 0xb3,
93499 + 0x14, 0x46, 0x78, 0xb1, 0xe3, 0x27, 0xd6, 0xa4, 0xfd, 0xec, 0xb8, 0xeb,
93500 + 0x5f, 0x28, 0xc3, 0x46, 0x71, 0xde, 0x4a, 0xce, 0xf1, 0xbb, 0x01, 0x79,
93501 + 0x7e, 0x0d, 0xd4, 0xf5, 0x35, 0xb6, 0x8b, 0x0c, 0x7b, 0x43, 0xce, 0xd8,
93502 + 0x3e, 0x04, 0x5a, 0x36, 0x28, 0xe7, 0x72, 0x83, 0x4b, 0xc6, 0x4c, 0x8c,
93503 + 0xd6, 0x3f, 0x4b, 0x1e, 0x23, 0xf5, 0x8b, 0xf1, 0x84, 0xf9, 0xb4, 0x55,
93504 + 0x3b, 0xe3, 0xfb, 0xd6, 0x7e, 0x43, 0x5d, 0x4f, 0x6d, 0xc7, 0xca, 0xd9,
93505 + 0x56, 0x19, 0xdb, 0xba, 0x3d, 0xa0, 0x9b, 0xdb, 0xd9, 0xd6, 0xf1, 0xc4,
93506 + 0xd1, 0xa0, 0x9b, 0x6d, 0x3d, 0x6a, 0x4a, 0x6e, 0xe0, 0x6c, 0x6e, 0xe6,
93507 + 0xdc, 0x76, 0xa5, 0x02, 0xbe, 0xad, 0x94, 0x4b, 0xf2, 0xb7, 0xaf, 0x26,
93508 + 0xe4, 0x5d, 0x8f, 0x6f, 0x72, 0x3c, 0xd1, 0x8d, 0x2e, 0x34, 0xde, 0x5b,
93509 + 0x41, 0xfb, 0xa9, 0x44, 0xc1, 0xd6, 0x75, 0x1f, 0xf1, 0x0e, 0xb7, 0xb3,
93510 + 0xcc, 0xeb, 0x81, 0x39, 0x78, 0x21, 0xd4, 0xb8, 0x72, 0x0e, 0x9c, 0xe4,
93511 + 0x21, 0x81, 0xe6, 0x0d, 0x4a, 0x5c, 0x13, 0x5b, 0xbc, 0x2d, 0xad, 0x07,
93512 + 0x9b, 0x20, 0xd8, 0xdd, 0x4a, 0x7d, 0xcc, 0xc1, 0xfb, 0x0b, 0x45, 0x2e,
93513 + 0x67, 0x38, 0xe8, 0x08, 0x74, 0x3c, 0xcd, 0xf9, 0xad, 0x98, 0x97, 0xcb,
93514 + 0x53, 0x33, 0xf6, 0x7e, 0xcd, 0x56, 0x24, 0x33, 0x27, 0xde, 0xdd, 0x6b,
93515 + 0xc0, 0x79, 0xa8, 0xfe, 0x41, 0x0b, 0xf6, 0xbb, 0x21, 0x8d, 0x32, 0x0f,
93516 + 0xad, 0x32, 0x0f, 0xa5, 0xf4, 0xa7, 0x6b, 0x28, 0xf7, 0x7a, 0x5b, 0xee,
93517 + 0x39, 0x18, 0x36, 0x65, 0xfd, 0xcb, 0xa9, 0xdd, 0x86, 0x5e, 0x62, 0x67,
93518 + 0xe0, 0x4c, 0x17, 0xfb, 0x79, 0x9d, 0x32, 0xcf, 0xa3, 0xde, 0x27, 0x5b,
93519 + 0x84, 0xb7, 0xde, 0x87, 0xbe, 0x54, 0xe1, 0xdd, 0x11, 0x05, 0xe9, 0x80,
93520 + 0xf4, 0x71, 0x1f, 0x79, 0x5c, 0x97, 0x35, 0x59, 0x23, 0xd7, 0x77, 0x33,
93521 + 0xf7, 0x8f, 0x6a, 0xf4, 0x07, 0xea, 0x1d, 0xfa, 0x1c, 0xe8, 0x13, 0x6f,
93522 + 0x38, 0xa2, 0xf4, 0x01, 0xd3, 0x7b, 0x86, 0xd8, 0x70, 0x08, 0x1d, 0x16,
93523 + 0xaa, 0x6c, 0x7b, 0xf8, 0xd9, 0x88, 0xf1, 0xa1, 0x22, 0xb1, 0x3d, 0x4b,
93524 + 0x1d, 0xa8, 0x9c, 0x13, 0xd1, 0x41, 0x39, 0x7d, 0x76, 0x2c, 0xa0, 0xfb,
93525 + 0x5f, 0xa0, 0x3c, 0xdb, 0x29, 0xcf, 0x8a, 0xdc, 0x1c, 0xfa, 0x36, 0x2b,
93526 + 0xe2, 0xd3, 0x81, 0x96, 0xd5, 0xbc, 0xbe, 0x8d, 0xf2, 0x04, 0xfa, 0x14,
93527 + 0x0c, 0xb5, 0xf4, 0x90, 0x2b, 0x76, 0x50, 0x07, 0xe7, 0xe4, 0x71, 0xdb,
93528 + 0x73, 0xd6, 0x41, 0x2e, 0x50, 0x8c, 0xbd, 0xa6, 0xe0, 0xb7, 0x86, 0x61,
93529 + 0xda, 0xe9, 0x1e, 0xce, 0x48, 0xd4, 0xab, 0xa2, 0xd8, 0x10, 0x0c, 0xa8,
93530 + 0xe1, 0x35, 0x17, 0xe7, 0xa6, 0x12, 0xfb, 0xb5, 0xdd, 0xf6, 0x5e, 0xe5,
93531 + 0x1c, 0xb7, 0xfb, 0x83, 0x35, 0xea, 0x15, 0x7e, 0x26, 0xeb, 0x63, 0xb2,
93532 + 0x86, 0xd4, 0xeb, 0xc9, 0xed, 0xd7, 0x72, 0x51, 0x27, 0xb9, 0xeb, 0xcf,
93533 + 0x68, 0xc2, 0x7d, 0x0b, 0xe5, 0x7f, 0x69, 0x3d, 0x69, 0x97, 0x97, 0x72,
93534 + 0x2e, 0x9b, 0xa3, 0x97, 0xda, 0xe5, 0x7e, 0x69, 0x3d, 0xab, 0x39, 0xa7,
93535 + 0x94, 0x2b, 0x3c, 0x2f, 0x3c, 0xfa, 0x0d, 0x27, 0x31, 0xaf, 0x78, 0xee,
93536 + 0x62, 0x1c, 0x33, 0x4e, 0xd4, 0x9e, 0xac, 0xef, 0x64, 0x1c, 0x9b, 0xba,
93537 + 0x7f, 0xcb, 0xc2, 0xe3, 0x76, 0x1e, 0xde, 0x45, 0x3e, 0x7b, 0x74, 0x47,
93538 + 0x11, 0x84, 0xa3, 0xca, 0xfa, 0x5d, 0x73, 0xd9, 0xb9, 0x5c, 0x56, 0xf6,
93539 + 0x35, 0x5d, 0x66, 0x73, 0xc3, 0xa8, 0x2a, 0xb8, 0xfb, 0x49, 0x7b, 0xf8,
93540 + 0x84, 0xbb, 0x74, 0x62, 0x8f, 0x51, 0xe0, 0x2c, 0x47, 0x1f, 0x54, 0x89,
93541 + 0x93, 0x03, 0xe6, 0x62, 0x89, 0xcd, 0x7e, 0xd6, 0x0f, 0xc6, 0xd4, 0xa9,
93542 + 0xdc, 0xe6, 0x76, 0x0f, 0x2a, 0xba, 0xb6, 0x3a, 0x20, 0xfb, 0x47, 0x65,
93543 + 0x2f, 0xa8, 0xf4, 0x55, 0x92, 0x5f, 0x97, 0xfa, 0x38, 0xae, 0x51, 0xe8,
93544 + 0x4b, 0xf8, 0xc6, 0xfb, 0xa5, 0x85, 0x7d, 0x86, 0x51, 0x5b, 0xce, 0x5f,
93545 + 0x59, 0x2b, 0xb5, 0xec, 0x4c, 0x0d, 0xe7, 0xcb, 0x1e, 0xcd, 0xcb, 0x1e,
93546 + 0xfb, 0xd8, 0x75, 0xb5, 0xa9, 0xfb, 0xee, 0x82, 0xf9, 0xe7, 0x5d, 0xf2,
93547 + 0x0c, 0x46, 0xd6, 0x5c, 0xe5, 0x9e, 0x82, 0x2e, 0xe2, 0x50, 0x54, 0x6b,
93548 + 0x64, 0x9c, 0xd7, 0x7d, 0x6b, 0x39, 0x1f, 0x71, 0xaf, 0xec, 0x51, 0x2f,
93549 + 0xc4, 0xc8, 0x62, 0xe4, 0xd6, 0x3e, 0x65, 0x9f, 0x45, 0x6e, 0xbd, 0x93,
93550 + 0x76, 0x8f, 0xae, 0xf4, 0xef, 0xad, 0xac, 0xd7, 0xc9, 0x58, 0x78, 0x6e,
93551 + 0x7f, 0xf4, 0x10, 0xf5, 0x3a, 0xcc, 0x7b, 0x9b, 0xcf, 0xae, 0xa7, 0xc8,
93552 + 0x9a, 0x92, 0xc4, 0xde, 0xdf, 0x59, 0x6d, 0xe7, 0x95, 0x9d, 0xba, 0x57,
93553 + 0xbc, 0x26, 0x26, 0xcf, 0xdc, 0x46, 0xf3, 0xeb, 0xee, 0x4d, 0x1f, 0x79,
93554 + 0xe6, 0x36, 0x41, 0x5b, 0x42, 0x74, 0x33, 0xb9, 0x5d, 0x1c, 0x3d, 0x18,
93555 + 0x4d, 0xd4, 0x69, 0x5b, 0xa0, 0xc9, 0x7a, 0x33, 0xff, 0x7a, 0xb0, 0x3f,
93556 + 0x81, 0x68, 0xd1, 0xa5, 0x95, 0xe4, 0x5b, 0x88, 0x3a, 0x18, 0xa3, 0x1e,
93557 + 0x4d, 0xd4, 0x35, 0x6f, 0xe3, 0x98, 0xfc, 0x2b, 0x7b, 0x30, 0x9c, 0x68,
93558 + 0xfc, 0x2b, 0xc6, 0x11, 0x7f, 0x99, 0xcd, 0x75, 0xe2, 0x7f, 0xbd, 0x97,
93559 + 0x38, 0xb0, 0x29, 0xbf, 0xe6, 0xd5, 0x96, 0xf8, 0x35, 0xe5, 0xb7, 0x85,
93560 + 0x64, 0xbd, 0x4f, 0x2a, 0x37, 0xc1, 0x3c, 0xff, 0x04, 0xd6, 0xf5, 0x2b,
93561 + 0x78, 0xd2, 0x38, 0x81, 0xb5, 0x43, 0x22, 0xcf, 0x09, 0xac, 0xe9, 0x7f,
93562 + 0x09, 0x7b, 0xfa, 0x67, 0xa0, 0xc9, 0xd6, 0x4d, 0x07, 0x36, 0xec, 0x3c,
93563 + 0x88, 0xed, 0x29, 0x0b, 0xdb, 0x42, 0x1e, 0xac, 0x7f, 0x58, 0xc1, 0xf2,
93564 + 0xc0, 0x61, 0x6c, 0xd9, 0x69, 0xe1, 0xe2, 0x50, 0x27, 0x9a, 0xcd, 0x32,
93565 + 0x14, 0x57, 0xcd, 0x6b, 0x57, 0x59, 0xae, 0x6d, 0xb8, 0x23, 0xbf, 0x2f,
93566 + 0x79, 0x3f, 0xb1, 0x40, 0x85, 0xcf, 0x90, 0x3d, 0xc7, 0x51, 0xe5, 0xa6,
93567 + 0x4c, 0x93, 0xd2, 0x9a, 0x7f, 0x66, 0x79, 0x7d, 0xa6, 0xa8, 0x02, 0xa5,
93568 + 0x71, 0xec, 0x09, 0x9d, 0xc0, 0xd0, 0xd0, 0x07, 0xe5, 0x39, 0x7f, 0x99,
93569 + 0x20, 0x77, 0x90, 0x9c, 0xc3, 0xa4, 0x4d, 0x7d, 0xd2, 0xfb, 0x40, 0x62,
93570 + 0x77, 0x93, 0xf8, 0xe9, 0xe0, 0x49, 0x9c, 0x1c, 0xfc, 0x37, 0x2c, 0xd1,
93571 + 0x24, 0x7f, 0xb4, 0x3a, 0x9d, 0x11, 0xcb, 0xda, 0xd5, 0x10, 0xb7, 0x6a,
93572 + 0x8c, 0x5f, 0xb0, 0xed, 0x0a, 0x4c, 0x8f, 0xbc, 0x88, 0x6d, 0x1a, 0xdb,
93573 + 0x4a, 0xed, 0xc7, 0x0e, 0xc6, 0x75, 0x5f, 0xe4, 0x66, 0xf8, 0x52, 0x59,
93574 + 0xb3, 0x1a, 0xd1, 0x1d, 0xd5, 0xd0, 0x37, 0x56, 0x39, 0x8c, 0x8e, 0x7f,
93575 + 0x55, 0xea, 0x71, 0x7d, 0xe6, 0x24, 0x7e, 0x3e, 0x68, 0xef, 0xa5, 0x6a,
93576 + 0xfd, 0xae, 0x62, 0x75, 0x6e, 0x0b, 0xe9, 0xcd, 0xff, 0x43, 0x89, 0xc6,
93577 + 0x4b, 0x69, 0x53, 0x25, 0xcc, 0x09, 0x6e, 0x18, 0x94, 0x1c, 0xb1, 0x15,
93578 + 0xee, 0x3e, 0x3d, 0xbb, 0x94, 0x3c, 0xfb, 0xee, 0x05, 0xf1, 0x99, 0xd3,
93579 + 0x68, 0x97, 0x0e, 0x45, 0x0f, 0x1a, 0x6a, 0x27, 0x8e, 0x98, 0xfa, 0xc4,
93580 + 0xef, 0x1c, 0xc6, 0xd0, 0x77, 0x50, 0x8f, 0x55, 0x19, 0x7d, 0xe8, 0x32,
93581 + 0xe6, 0x61, 0x5b, 0x92, 0x26, 0x52, 0x49, 0xbd, 0xb5, 0xc3, 0xd1, 0x8b,
93582 + 0x3b, 0x02, 0xb5, 0x1b, 0xdf, 0x25, 0x97, 0xf3, 0x10, 0x53, 0x92, 0xe3,
93583 + 0x23, 0xcc, 0x5f, 0x7b, 0xb1, 0xe1, 0xe1, 0x08, 0xd6, 0xef, 0x32, 0xd1,
93584 + 0x93, 0x1c, 0xa1, 0x6c, 0x3f, 0x2c, 0x97, 0xbd, 0x34, 0x2d, 0xa1, 0xf8,
93585 + 0xb5, 0x2a, 0x02, 0x51, 0xf6, 0xd9, 0xa8, 0x46, 0x02, 0x7e, 0x55, 0x61,
93586 + 0xf4, 0x1f, 0x77, 0xa2, 0x9b, 0x65, 0xfa, 0x52, 0xb4, 0xb9, 0xa4, 0x9b,
93587 + 0xf1, 0x72, 0x16, 0x86, 0xc7, 0x7c, 0xd8, 0x37, 0xe6, 0xc1, 0xd0, 0x98,
93588 + 0xc6, 0xa3, 0x14, 0x0f, 0x0d, 0xc8, 0x9e, 0x14, 0x2f, 0x9e, 0xd8, 0xeb,
93589 + 0xc6, 0xa6, 0x07, 0x3c, 0x98, 0x13, 0x99, 0x8e, 0xbd, 0x7b, 0x4b, 0xb1,
93590 + 0x9b, 0xd7, 0xab, 0x16, 0xfa, 0xf1, 0x38, 0xaf, 0xf7, 0x3f, 0xe0, 0xe2,
93591 + 0x3c, 0x5c, 0x8c, 0x03, 0x34, 0xec, 0xa1, 0xb1, 0x32, 0xa4, 0x06, 0x68,
93592 + 0xf2, 0xe4, 0xac, 0x6f, 0x31, 0xc3, 0x18, 0xdd, 0xcb, 0xd8, 0xf8, 0xb0,
93593 + 0x89, 0x04, 0xfb, 0xd9, 0x4e, 0x5d, 0xf5, 0x10, 0xd7, 0x36, 0x8c, 0x09,
93594 + 0xc6, 0xaf, 0xc2, 0x35, 0x7d, 0x7a, 0x73, 0x93, 0x62, 0x44, 0x17, 0xd9,
93595 + 0xfb, 0xb4, 0xe4, 0xbd, 0xad, 0x55, 0x68, 0x4c, 0xe8, 0x66, 0x13, 0x3a,
93596 + 0x71, 0x8c, 0xe3, 0xfe, 0x7f, 0xe8, 0xb7, 0x8b, 0x1d, 0x7a, 0xef, 0xd5,
93597 + 0xea, 0x41, 0xec, 0xc8, 0x1c, 0x22, 0x57, 0x07, 0xc2, 0x7b, 0x0e, 0x92,
93598 + 0xbf, 0x1d, 0x21, 0xfe, 0xbc, 0x6e, 0xf9, 0x0c, 0x15, 0xd7, 0xdf, 0x6f,
93599 + 0x84, 0xdf, 0x53, 0x02, 0x1b, 0x7f, 0x45, 0x1d, 0x7c, 0x7e, 0xaf, 0x8a,
93600 + 0xeb, 0x76, 0x2c, 0x46, 0x3a, 0x14, 0xc5, 0xf6, 0x45, 0x2a, 0xae, 0x7d,
93601 + 0xf8, 0x20, 0x71, 0x7f, 0xc2, 0xe6, 0xc9, 0xd9, 0xf4, 0x7d, 0x08, 0xf6,
93602 + 0xc9, 0x9a, 0xbc, 0x9b, 0xf1, 0xbb, 0x1c, 0xc7, 0xfb, 0x3b, 0xe9, 0xb7,
93603 + 0xe5, 0x38, 0x3a, 0x74, 0x90, 0xf6, 0x58, 0x8e, 0x23, 0xfd, 0xc6, 0xc4,
93604 + 0x4f, 0x1d, 0xe5, 0x78, 0x82, 0xe7, 0x3b, 0x78, 0xbe, 0x70, 0xc0, 0xe8,
93605 + 0xef, 0x50, 0xcb, 0xb1, 0x60, 0x4f, 0x03, 0xfa, 0x93, 0x62, 0x9b, 0x1a,
93606 + 0x36, 0x8e, 0xd5, 0xe7, 0x75, 0x2f, 0x3a, 0xf7, 0xe2, 0x4e, 0xea, 0xea,
93607 + 0x8e, 0x1d, 0x9d, 0xec, 0xcf, 0x47, 0x9d, 0x1f, 0xc4, 0x43, 0xcc, 0xeb,
93608 + 0xb6, 0x25, 0x7d, 0x38, 0x9d, 0x32, 0xfc, 0x5f, 0x52, 0x0c, 0xb3, 0x44,
93609 + 0x09, 0x68, 0xc7, 0xe1, 0xc3, 0xc9, 0x4c, 0x29, 0xba, 0x07, 0x66, 0xe1,
93610 + 0xa7, 0xb4, 0xcf, 0x07, 0x1f, 0x90, 0xfe, 0x26, 0x18, 0x1f, 0x66, 0xe3,
93611 + 0x89, 0x11, 0x93, 0x6d, 0xcb, 0x3c, 0x49, 0xcc, 0xe9, 0x81, 0x2b, 0x25,
93612 + 0xbe, 0x11, 0xdd, 0x41, 0xb3, 0x20, 0x26, 0x1e, 0x46, 0xa6, 0x5f, 0xef,
93613 + 0xbd, 0x41, 0x15, 0x5e, 0xad, 0x52, 0x97, 0x0e, 0x4c, 0x6a, 0x7a, 0xbc,
93614 + 0x4a, 0x8d, 0xf7, 0x33, 0x7f, 0x8d, 0x57, 0xab, 0x87, 0xf1, 0x44, 0xbf,
93615 + 0x13, 0xf3, 0x16, 0xaa, 0xbc, 0x1e, 0x3f, 0xc3, 0xd8, 0x16, 0x9f, 0xa3,
93616 + 0x9a, 0xd8, 0x6d, 0xcb, 0x8a, 0x78, 0x11, 0xb9, 0x7d, 0xe5, 0xc2, 0x5a,
93617 + 0xc6, 0x2f, 0x87, 0xd8, 0x5e, 0xac, 0x5c, 0x75, 0x52, 0xef, 0x27, 0x31,
93618 + 0x42, 0xbb, 0x7e, 0x94, 0xc7, 0x81, 0x41, 0xab, 0x73, 0x39, 0x39, 0xf7,
93619 + 0xc5, 0x01, 0xab, 0xf3, 0x06, 0xd3, 0xf0, 0x15, 0xa9, 0x81, 0xe8, 0xdd,
93620 + 0x38, 0x89, 0xfd, 0x23, 0x52, 0x06, 0x6e, 0x6f, 0x84, 0x79, 0x75, 0xd2,
93621 + 0xea, 0xdc, 0x61, 0x5e, 0x8c, 0x06, 0x3b, 0x37, 0xfe, 0x55, 0x79, 0x0e,
93622 + 0x33, 0xc5, 0x8f, 0x64, 0x0d, 0x64, 0x12, 0xbf, 0x62, 0x3b, 0xef, 0x0d,
93623 + 0x56, 0x62, 0x5a, 0xb5, 0xf8, 0xc1, 0x09, 0xbc, 0xdd, 0xff, 0x22, 0x4e,
93624 + 0xf7, 0x5b, 0x58, 0x10, 0xb2, 0xe0, 0x0c, 0xd5, 0x99, 0x4d, 0xea, 0x65,
93625 + 0xc4, 0x08, 0x05, 0xd7, 0xcc, 0x7d, 0x09, 0xef, 0xd0, 0xff, 0xaf, 0x9d,
93626 + 0x6b, 0xd9, 0xb2, 0xf4, 0x61, 0xa1, 0xb5, 0xbd, 0x46, 0xfc, 0xc6, 0xb4,
93627 + 0xf7, 0xf5, 0x7c, 0x72, 0x1e, 0x5c, 0xd8, 0xb7, 0x26, 0xb9, 0xf0, 0x49,
93628 + 0x0c, 0x0f, 0x1a, 0xd1, 0x75, 0x05, 0x39, 0xfb, 0x4f, 0x52, 0x07, 0x16,
93629 + 0x76, 0x98, 0x47, 0x1f, 0xae, 0xc2, 0xbc, 0x33, 0xcc, 0x1a, 0xaf, 0x98,
93630 + 0x43, 0xdb, 0x59, 0xb0, 0x30, 0x60, 0x2e, 0x53, 0xdf, 0xa4, 0x9f, 0x9e,
93631 + 0xc4, 0xbe, 0xa1, 0x02, 0x5e, 0xfb, 0xd0, 0x44, 0x3f, 0xcf, 0xed, 0x65,
93632 + 0xf7, 0xa2, 0x31, 0x75, 0xc8, 0x5e, 0x7f, 0x38, 0x40, 0x7c, 0xcc, 0x3d,
93633 + 0xd3, 0xd4, 0x30, 0x92, 0x69, 0x22, 0x36, 0x44, 0xf1, 0xcf, 0x99, 0x08,
93634 + 0xf1, 0x21, 0x4c, 0x7c, 0x68, 0x20, 0x3e, 0x98, 0xc4, 0x87, 0x7a, 0xe2,
93635 + 0x43, 0xd0, 0x7e, 0xd6, 0x2f, 0x6b, 0xe6, 0x43, 0xa3, 0x2f, 0xa2, 0x68,
93636 + 0xe0, 0x04, 0x5c, 0xf4, 0x81, 0xe3, 0xa6, 0x45, 0x7e, 0x52, 0xa7, 0xad,
93637 + 0xc1, 0xc5, 0x4a, 0x54, 0xf3, 0x62, 0x28, 0x73, 0x02, 0x25, 0x03, 0x1a,
93638 + 0xc7, 0x22, 0xfb, 0x33, 0x6a, 0xc3, 0xbd, 0xc4, 0xea, 0x5f, 0x1b, 0x75,
93639 + 0xbd, 0x5e, 0xd4, 0xed, 0xae, 0x81, 0xd1, 0xbf, 0x50, 0x9d, 0xab, 0x44,
93640 + 0xbf, 0xe0, 0xe5, 0x38, 0xab, 0x31, 0xfb, 0x01, 0x0d, 0x73, 0x78, 0xfc,
93641 + 0x53, 0xaa, 0x76, 0xe2, 0x75, 0x07, 0xbc, 0x33, 0x48, 0x77, 0x66, 0x92,
93642 + 0x09, 0x90, 0xd5, 0x7a, 0x7d, 0xb8, 0xe4, 0xc0, 0x49, 0x55, 0x41, 0xf6,
93643 + 0x0b, 0x12, 0xf3, 0xea, 0x82, 0x3d, 0xaa, 0x2a, 0x6b, 0x48, 0xc4, 0x70,
93644 + 0x1e, 0x2a, 0x22, 0x64, 0x11, 0xb3, 0x98, 0x5f, 0x58, 0x6b, 0xcc, 0x12,
93645 + 0x6c, 0xae, 0x57, 0x65, 0x6f, 0xc8, 0x21, 0x89, 0x51, 0x33, 0x18, 0x23,
93646 + 0x4a, 0x93, 0xf1, 0xdb, 0x66, 0xc0, 0x83, 0x92, 0xa4, 0x65, 0x3d, 0x16,
93647 + 0xd2, 0xe0, 0x89, 0x04, 0xa2, 0x1b, 0x98, 0x46, 0x7e, 0x61, 0x5e, 0x18,
93648 + 0xd7, 0x64, 0x0e, 0x60, 0x80, 0xe3, 0x5b, 0x9e, 0x29, 0xbc, 0xe3, 0xf9,
93649 + 0xc9, 0x7f, 0xe7, 0xde, 0x15, 0xbd, 0x64, 0xf7, 0x0c, 0x18, 0xda, 0x5d,
93650 + 0x6a, 0xbc, 0x92, 0x1c, 0xfc, 0x00, 0xe3, 0x9e, 0x32, 0x79, 0xa3, 0x82,
93651 + 0xd6, 0x81, 0x38, 0xa6, 0x85, 0x7e, 0xa0, 0xc4, 0xaa, 0x75, 0xbf, 0x5f,
93652 + 0xa9, 0xc6, 0x8d, 0x0f, 0x50, 0xd7, 0x0b, 0x26, 0x68, 0x2b, 0x3e, 0x7c,
93653 + 0x67, 0x54, 0x74, 0x5b, 0x3b, 0xb4, 0x83, 0xe3, 0x98, 0x98, 0x7b, 0x40,
93654 + 0x70, 0xf2, 0xa0, 0x1b, 0x8e, 0x83, 0xd3, 0x99, 0x9b, 0xd6, 0xcf, 0xbd,
93655 + 0xa4, 0xe3, 0xdf, 0x54, 0xd1, 0x8b, 0xf0, 0x6b, 0xbd, 0x3f, 0xae, 0x18,
93656 + 0xda, 0x2f, 0x95, 0x03, 0xe4, 0x6c, 0x5e, 0x3c, 0x96, 0x39, 0x4c, 0x5d,
93657 + 0xee, 0xcf, 0xe7, 0x4b, 0xab, 0x90, 0xe8, 0x93, 0x7d, 0x81, 0x27, 0x30,
93658 + 0x7b, 0x40, 0x6f, 0xd9, 0xaa, 0x18, 0xc1, 0x6b, 0x95, 0x13, 0x98, 0x39,
93659 + 0x10, 0xe4, 0x5c, 0x6a, 0x58, 0x96, 0x2c, 0xe0, 0xa7, 0x60, 0xf0, 0x2a,
93660 + 0x62, 0xb0, 0xb5, 0xf8, 0xa7, 0x66, 0x9c, 0x39, 0x8e, 0x6e, 0x3a, 0x15,
93661 + 0xbd, 0x75, 0xae, 0x22, 0xfb, 0x80, 0x8c, 0x33, 0x6d, 0xac, 0xe3, 0x19,
93662 + 0xa8, 0xc7, 0x57, 0x39, 0xe6, 0x66, 0xce, 0xdb, 0x8b, 0x0b, 0x2d, 0x2c,
93663 + 0x5a, 0xa8, 0xef, 0x2e, 0x71, 0x44, 0xef, 0xaa, 0x42, 0xb6, 0xa3, 0x86,
93664 + 0x76, 0x73, 0xc7, 0x02, 0x3d, 0xfc, 0x03, 0xe2, 0x2e, 0x71, 0x1a, 0xdd,
93665 + 0x8c, 0x3b, 0x6b, 0x18, 0x8b, 0x4a, 0x23, 0x7a, 0x2f, 0x73, 0xd4, 0xf7,
93666 + 0x6e, 0x75, 0x44, 0x43, 0xf2, 0x1e, 0xd1, 0xdf, 0x63, 0x31, 0xdc, 0xa1,
93667 + 0x0a, 0xe2, 0xa0, 0x9e, 0x7d, 0x11, 0xfa, 0xee, 0xaf, 0x92, 0x93, 0xfe,
93668 + 0x98, 0xfc, 0xae, 0xe6, 0xd2, 0x43, 0xc4, 0xa8, 0x11, 0x3c, 0x98, 0x39,
93669 + 0x88, 0xdd, 0x99, 0x34, 0x76, 0x66, 0xb6, 0x29, 0x43, 0xf6, 0xb3, 0x45,
93670 + 0x45, 0xde, 0x99, 0x8b, 0x56, 0x28, 0x5f, 0x46, 0x79, 0xe8, 0x5b, 0xd6,
93671 + 0x50, 0x95, 0x8a, 0xca, 0x50, 0x10, 0xd7, 0x24, 0xe3, 0x70, 0x44, 0xde,
93672 + 0xb5, 0xe4, 0x7d, 0xed, 0xf5, 0xe3, 0x06, 0xae, 0x4e, 0x96, 0x22, 0xb6,
93673 + 0xc7, 0xb2, 0x7a, 0x1b, 0x9c, 0x58, 0x3b, 0x5e, 0x8f, 0x65, 0x03, 0x0f,
93674 + 0x59, 0x73, 0x18, 0x73, 0x3e, 0xbc, 0xdc, 0x83, 0x5b, 0xf7, 0x78, 0xd0,
93675 + 0x96, 0x8c, 0xc2, 0x17, 0x29, 0xe3, 0xef, 0x80, 0xb9, 0x04, 0xc6, 0xc4,
93676 + 0x04, 0x8c, 0xde, 0xab, 0x1c, 0x81, 0xfd, 0x61, 0xd5, 0x83, 0xbf, 0x21,
93677 + 0x8e, 0x2f, 0x27, 0xee, 0xc4, 0xc6, 0x2d, 0x54, 0x46, 0xbc, 0xb8, 0x8d,
93678 + 0xf5, 0xaf, 0xe3, 0xdc, 0xbf, 0xb3, 0x68, 0x3f, 0xb1, 0x40, 0xf6, 0x42,
93679 + 0x6a, 0xd8, 0x30, 0xee, 0xa6, 0xae, 0xdc, 0x88, 0xed, 0xab, 0xc6, 0xd5,
93680 + 0x0f, 0xf8, 0x71, 0xeb, 0xb8, 0x07, 0x8d, 0x49, 0x6b, 0xf1, 0x01, 0x33,
93681 + 0xbe, 0x52, 0x83, 0x81, 0xb6, 0x71, 0x2f, 0xbe, 0x92, 0xd4, 0x7d, 0xd7,
93682 + 0x32, 0xe7, 0x1f, 0x31, 0x83, 0xf8, 0x5f, 0xe3, 0x3e, 0xdc, 0x94, 0x3c,
93683 + 0x2a, 0x79, 0xe4, 0x12, 0x27, 0x63, 0xcf, 0xbd, 0xe3, 0xb3, 0xb0, 0x32,
93684 + 0xa9, 0x9f, 0x99, 0x20, 0xb7, 0xeb, 0xdc, 0x67, 0xe2, 0xae, 0x71, 0x15,
93685 + 0xad, 0x6c, 0xe7, 0xc6, 0xe4, 0x6c, 0x74, 0xec, 0x6b, 0xa0, 0x0c, 0x0b,
93686 + 0xb1, 0x7c, 0xc0, 0x09, 0x93, 0x2c, 0x1e, 0x5f, 0x04, 0x5a, 0x06, 0x26,
93687 + 0x98, 0xc7, 0xdd, 0x87, 0xed, 0x7d, 0x26, 0x6e, 0x1f, 0x97, 0xf3, 0x83,
93688 + 0xf6, 0x3b, 0xae, 0xef, 0x3d, 0xbc, 0x10, 0x9f, 0x1f, 0x50, 0x89, 0x03,
93689 + 0xc5, 0x18, 0x5a, 0xa9, 0xe0, 0x2b, 0xbc, 0xbe, 0x35, 0x25, 0x7b, 0x90,
93690 + 0x81, 0xd0, 0x8e, 0xc0, 0xfe, 0x2a, 0x72, 0x86, 0x45, 0x0f, 0xe7, 0xae,
93691 + 0x3f, 0x48, 0x9c, 0x2f, 0x21, 0xce, 0x97, 0x91, 0xc3, 0x5e, 0x35, 0x7c,
93692 + 0x10, 0xf7, 0x13, 0x97, 0x0f, 0x0d, 0x74, 0x32, 0xee, 0x94, 0xe3, 0x71,
93693 + 0xc6, 0x81, 0x24, 0xcf, 0x4f, 0xec, 0x30, 0x3a, 0x4a, 0x88, 0xd3, 0x3f,
93694 + 0x20, 0xfe, 0xf6, 0x12, 0x33, 0xee, 0x48, 0x32, 0xdc, 0xef, 0x60, 0x0e,
93695 + 0x70, 0x69, 0x74, 0xbe, 0x87, 0x39, 0xd6, 0xb5, 0x4a, 0xc0, 0xf7, 0x26,
93696 + 0xca, 0xe1, 0x78, 0xb8, 0x1a, 0x8d, 0x0f, 0x48, 0x19, 0xc1, 0x2f, 0x15,
93697 + 0xea, 0x5e, 0x27, 0x75, 0x7e, 0x18, 0x56, 0xbf, 0x83, 0xe3, 0xad, 0x35,
93698 + 0xc9, 0xc0, 0xf1, 0x9a, 0xa9, 0x6b, 0xff, 0x4c, 0xac, 0x7d, 0x9f, 0x98,
93699 + 0xea, 0x9f, 0xd1, 0x80, 0x26, 0xc3, 0xe4, 0x71, 0x18, 0x27, 0xfb, 0x0d,
93700 + 0x53, 0xf6, 0xe4, 0xbd, 0x4e, 0x9e, 0x37, 0x39, 0x83, 0x31, 0xd3, 0x10,
93701 + 0x3f, 0x1c, 0xe1, 0x78, 0x54, 0xc9, 0x4b, 0xe0, 0x18, 0x03, 0xde, 0x7e,
93702 + 0x78, 0x31, 0xc7, 0x25, 0xb1, 0x54, 0xe2, 0xdd, 0x08, 0x65, 0x5d, 0x8c,
93703 + 0x15, 0xd4, 0x47, 0x53, 0x52, 0x45, 0x7a, 0x5f, 0x04, 0xb7, 0xef, 0xca,
93704 + 0xc5, 0xe1, 0x8d, 0xa1, 0xf8, 0x0d, 0x8c, 0xc3, 0xe1, 0x52, 0xc6, 0x61,
93705 + 0x57, 0x44, 0x64, 0x73, 0x62, 0x98, 0x71, 0x7b, 0x73, 0x2a, 0x8c, 0x66,
93706 + 0xce, 0xe1, 0x44, 0x9a, 0xfd, 0x26, 0x67, 0xe1, 0x78, 0xda, 0xc3, 0x98,
93707 + 0xa5, 0xf1, 0x20, 0xaa, 0x8d, 0x4c, 0xe7, 0xe1, 0xe7, 0x71, 0x31, 0x0f,
93708 + 0xc3, 0xbe, 0xb6, 0x26, 0xa9, 0x20, 0xde, 0xa2, 0xd8, 0x7c, 0xfe, 0x78,
93709 + 0x5a, 0xb0, 0x59, 0xd6, 0x32, 0xef, 0xae, 0x94, 0x3d, 0xa8, 0xfd, 0xa9,
93710 + 0x97, 0x50, 0x49, 0x7c, 0xaa, 0xc8, 0xe3, 0xd0, 0xcf, 0x42, 0x82, 0xbb,
93711 + 0xb5, 0xc4, 0x5d, 0xd9, 0x4f, 0x64, 0x59, 0xab, 0x02, 0x53, 0xf1, 0xe8,
93712 + 0xff, 0xfb, 0x30, 0x6a, 0xef, 0xab, 0x15, 0x4c, 0x22, 0xfe, 0xa5, 0x88,
93713 + 0x7f, 0x1c, 0x43, 0xd7, 0x95, 0xc4, 0x40, 0xca, 0xf4, 0x8f, 0x29, 0x62,
93714 + 0x20, 0x71, 0xfa, 0x20, 0x71, 0xfa, 0xdb, 0xc4, 0xe9, 0x6f, 0x11, 0xa7,
93715 + 0x1f, 0x27, 0x26, 0xe4, 0xd6, 0xf4, 0x9a, 0xe5, 0xb9, 0x0a, 0xe7, 0xe3,
93716 + 0x1d, 0x7b, 0x6d, 0xb1, 0x86, 0xba, 0x9a, 0x3d, 0xa0, 0x60, 0x8e, 0xa1,
93717 + 0xef, 0x17, 0xbb, 0xff, 0x31, 0xe7, 0xc9, 0x3f, 0x2d, 0xb7, 0xe7, 0xb7,
93718 + 0x29, 0xd9, 0x03, 0x77, 0xb2, 0x4e, 0xeb, 0x85, 0xfd, 0x0d, 0x01, 0x53,
93719 + 0xb8, 0x68, 0x51, 0x72, 0x0d, 0x1c, 0xc9, 0xba, 0xfd, 0xc7, 0xe4, 0xf9,
93720 + 0xed, 0x74, 0xc9, 0xeb, 0xd7, 0xc8, 0x1e, 0xed, 0xfd, 0xb2, 0x37, 0x6c,
93721 + 0x19, 0xef, 0xb9, 0x92, 0x75, 0xe6, 0x9b, 0xb0, 0xb1, 0xcd, 0x3f, 0x69,
93722 + 0xdf, 0xab, 0x7d, 0xef, 0x7e, 0xea, 0x2b, 0xcb, 0x36, 0xd3, 0x29, 0xd9,
93723 + 0x17, 0x3b, 0x0b, 0x8f, 0x66, 0xe4, 0x77, 0x5d, 0x6b, 0x42, 0xdd, 0x8f,
93724 + 0x58, 0x8d, 0xf0, 0xf1, 0x30, 0xae, 0x4f, 0x7a, 0x68, 0x07, 0x71, 0x54,
93725 + 0xd0, 0xb7, 0xbe, 0x36, 0xde, 0x40, 0x5f, 0x7b, 0xc8, 0xd2, 0x22, 0x81,
93726 + 0xd6, 0x71, 0x72, 0x9e, 0xf5, 0xe3, 0x8b, 0xb1, 0x74, 0xc0, 0xb2, 0x3c,
93727 + 0x97, 0x19, 0xe1, 0x0d, 0x8a, 0x1f, 0x2e, 0xfa, 0xa0, 0x83, 0x7e, 0xb5,
93728 + 0x6e, 0x4f, 0x40, 0x7b, 0x93, 0x78, 0xda, 0xde, 0x70, 0x80, 0xf6, 0x61,
93729 + 0x9c, 0x69, 0x26, 0x96, 0x3a, 0x23, 0x01, 0xe6, 0x89, 0x1e, 0xda, 0xbe,
93730 + 0x17, 0x67, 0x12, 0xe2, 0x5f, 0x7a, 0xc7, 0x3f, 0x33, 0x37, 0xe9, 0xa0,
93731 + 0x6f, 0xfc, 0x32, 0x31, 0x8b, 0x3e, 0xe0, 0xc6, 0xdb, 0x09, 0x83, 0xfe,
93732 + 0xe6, 0xc1, 0x3b, 0x89, 0x7a, 0xf6, 0x15, 0x64, 0x19, 0x3f, 0xee, 0x1c,
93733 + 0x0f, 0xd3, 0xcf, 0xae, 0xe4, 0x21, 0xef, 0x53, 0xd7, 0xc6, 0xbf, 0xa3,
93734 + 0xd4, 0xf6, 0xcf, 0x56, 0xab, 0x10, 0xad, 0xd6, 0xf0, 0xf5, 0xf1, 0xcf,
93735 + 0xe2, 0x3f, 0x18, 0xb7, 0xd7, 0x26, 0xc1, 0x39, 0x44, 0x88, 0x3c, 0x70,
93736 + 0x62, 0x9f, 0x3c, 0x4b, 0x44, 0x5d, 0x74, 0xae, 0x43, 0x67, 0x6e, 0xab,
93737 + 0x67, 0x4f, 0x3b, 0x9c, 0xec, 0x93, 0xac, 0x98, 0x65, 0x7f, 0xd9, 0x5f,
93738 + 0x8a, 0xbb, 0xf6, 0x1c, 0xa0, 0x8f, 0x14, 0x61, 0xc1, 0xfd, 0x6e, 0x7c,
93739 + 0x7d, 0xdf, 0x08, 0xb9, 0x83, 0x8a, 0x99, 0xcc, 0x95, 0x86, 0x48, 0x14,
93740 + 0x66, 0x0e, 0x47, 0x70, 0xdb, 0xae, 0x11, 0x0c, 0xe4, 0x79, 0x5e, 0x28,
93741 + 0x14, 0xff, 0x9f, 0x2a, 0x0e, 0x90, 0x47, 0x04, 0xda, 0x3f, 0x43, 0x1b,
93742 + 0xab, 0x88, 0x04, 0xe2, 0x32, 0xee, 0x16, 0xda, 0x58, 0x0f, 0xe7, 0x33,
93743 + 0xcd, 0x71, 0x24, 0x68, 0x63, 0x8f, 0x51, 0xfe, 0xed, 0xb4, 0xb1, 0x38,
93744 + 0x6d, 0x2c, 0x4e, 0x7b, 0x8a, 0xd3, 0xc6, 0xe4, 0x9d, 0xfd, 0x38, 0x6d,
93745 + 0x2c, 0x4e, 0x1b, 0x8b, 0xa7, 0x17, 0x63, 0x94, 0x4c, 0x63, 0xcb, 0x48,
93746 + 0x03, 0x71, 0x4c, 0xb1, 0xa3, 0x52, 0xf6, 0x86, 0xcf, 0x92, 0xb3, 0x5f,
93747 + 0xc5, 0x43, 0x41, 0x33, 0x7d, 0xb2, 0x77, 0x68, 0x84, 0x9c, 0xc7, 0x8d,
93748 + 0xdf, 0x64, 0x84, 0xe3, 0x37, 0x30, 0x8f, 0x3d, 0x4c, 0x9e, 0xaf, 0xe2,
93749 + 0x49, 0x53, 0xf2, 0x60, 0x93, 0xe7, 0x8c, 0x35, 0x29, 0xe1, 0x6b, 0x87,
93750 + 0x71, 0x47, 0x3f, 0x70, 0x2d, 0x79, 0x61, 0x35, 0x79, 0xc9, 0xde, 0x05,
93751 + 0xfc, 0xfd, 0xf0, 0x01, 0xda, 0xbc, 0xf8, 0x63, 0x6e, 0xaf, 0xeb, 0xf1,
93752 + 0xfe, 0x5a, 0xdf, 0xd5, 0xf4, 0xc1, 0x7b, 0x59, 0xd7, 0xf9, 0xb0, 0xd4,
93753 + 0x39, 0xc0, 0xb6, 0xf5, 0xf0, 0x6f, 0x38, 0xff, 0xad, 0xf7, 0x57, 0xe3,
93754 + 0xed, 0x5d, 0x7a, 0xf8, 0x7d, 0x62, 0x5e, 0xb5, 0xc3, 0x5a, 0xfc, 0x99,
93755 + 0x50, 0x60, 0xe3, 0x67, 0xd4, 0x1c, 0xdf, 0x6b, 0xd9, 0xe1, 0xc4, 0xfe,
93756 + 0xd0, 0x62, 0x78, 0x16, 0x14, 0x38, 0x1f, 0x6d, 0xa9, 0x5a, 0x38, 0x96,
93757 + 0x1e, 0x3e, 0x4d, 0xae, 0x92, 0x64, 0xfb, 0xa3, 0xe9, 0x23, 0xc4, 0x90,
93758 + 0xfb, 0xf0, 0x02, 0xf3, 0xf3, 0x91, 0x4f, 0xbf, 0x4e, 0xee, 0xe8, 0xc6,
93759 + 0x18, 0x39, 0xe0, 0x81, 0xfe, 0xe8, 0xe7, 0x9c, 0xc4, 0x7d, 0xcf, 0x82,
93760 + 0x72, 0xa4, 0x87, 0x84, 0x2b, 0x96, 0xe3, 0xd9, 0x7e, 0x43, 0xbb, 0x56,
93761 + 0xc9, 0xf1, 0xc2, 0x2d, 0x3c, 0x7f, 0xb3, 0xdf, 0x38, 0x33, 0x8c, 0xc0,
93762 + 0xc4, 0x69, 0x72, 0xc3, 0xf7, 0x87, 0x24, 0x86, 0x1d, 0xa4, 0x8f, 0xfb,
93763 + 0x11, 0x4e, 0x6a, 0x38, 0x34, 0x66, 0x60, 0x7e, 0xd2, 0x8b, 0x47, 0xc6,
93764 + 0x82, 0xf8, 0x0c, 0x7d, 0x37, 0x43, 0x7e, 0xf8, 0xe9, 0xa4, 0xf8, 0xe2,
93765 + 0x2c, 0x8c, 0x8f, 0xcd, 0xb2, 0xf7, 0x54, 0x7a, 0x8c, 0x5f, 0xc0, 0x53,
93766 + 0x2d, 0x3e, 0x49, 0x6e, 0x9d, 0xd2, 0x7b, 0x63, 0x1c, 0x4f, 0xcc, 0xab,
93767 + 0xef, 0x8f, 0x41, 0x1f, 0x02, 0xae, 0xf8, 0x70, 0xe8, 0x8b, 0x12, 0x1f,
93768 + 0xc5, 0x1f, 0x35, 0x8c, 0x93, 0xef, 0x14, 0x13, 0x53, 0x4b, 0x23, 0xb5,
93769 + 0xef, 0xbd, 0xac, 0xe8, 0xd9, 0xa7, 0x55, 0xcb, 0x7a, 0x69, 0xa1, 0x06,
93770 + 0xdf, 0x3e, 0x8d, 0xdc, 0xc3, 0x64, 0xec, 0x16, 0x3f, 0xd5, 0x30, 0xe3,
93771 + 0x81, 0x6a, 0x4c, 0x7b, 0x20, 0x89, 0xbf, 0xad, 0x8e, 0x7f, 0x6e, 0x3a,
93772 + 0xe3, 0xfc, 0x74, 0xe2, 0x7a, 0x65, 0xf2, 0xd8, 0x0c, 0x37, 0xf9, 0xf2,
93773 + 0x84, 0x5a, 0xd7, 0xba, 0x1f, 0xfa, 0xfe, 0x93, 0x8a, 0xee, 0x7b, 0x8c,
93774 + 0xb1, 0xc1, 0x45, 0x1b, 0x75, 0x8c, 0x6b, 0xf4, 0xdd, 0xba, 0x43, 0xd3,
93775 + 0x60, 0xc4, 0x2f, 0x57, 0x5d, 0x16, 0x6c, 0x79, 0xae, 0xa8, 0xcc, 0xe5,
93776 + 0x45, 0x82, 0x3b, 0x12, 0x17, 0x1c, 0xb2, 0xff, 0x13, 0xed, 0xf4, 0x97,
93777 + 0x15, 0x76, 0x2c, 0x3a, 0x60, 0xef, 0x8f, 0xdb, 0x30, 0x1e, 0xa7, 0x8f,
93778 + 0x2c, 0x46, 0xd9, 0x80, 0x07, 0x5f, 0xb3, 0xe3, 0xd0, 0x43, 0x56, 0x15,
93779 + 0xfd, 0xe5, 0xf6, 0x3d, 0x81, 0xf6, 0xab, 0xe9, 0x2f, 0xb5, 0x97, 0x49,
93780 + 0x0c, 0x63, 0xdc, 0x4e, 0x19, 0xe6, 0x30, 0xb1, 0xe5, 0xa1, 0x06, 0x63,
93781 + 0xe2, 0x75, 0xe4, 0x7c, 0x66, 0x6b, 0x5f, 0x35, 0xfe, 0xe1, 0xfe, 0xfd,
93782 + 0xf6, 0x5a, 0xc8, 0x6d, 0x3c, 0x4f, 0xf6, 0xf9, 0x6c, 0xff, 0x88, 0xf1,
93783 + 0xf7, 0x9d, 0x8c, 0x79, 0x31, 0xfa, 0xd1, 0x96, 0x3e, 0x6b, 0xf1, 0xf7,
93784 + 0x17, 0xc6, 0x57, 0x56, 0x20, 0xc8, 0x98, 0xe4, 0x46, 0x6f, 0x9f, 0xde,
93785 + 0xdf, 0xca, 0x18, 0x74, 0x62, 0xa1, 0x49, 0x59, 0x3c, 0xd8, 0xd1, 0x27,
93786 + 0x98, 0x7a, 0xf4, 0xa6, 0x6a, 0xc4, 0xff, 0xa7, 0xc6, 0xf1, 0x7d, 0xcd,
93787 + 0x7e, 0xf6, 0x37, 0x0b, 0x6b, 0xf7, 0x5d, 0x46, 0x99, 0xeb, 0xe9, 0x83,
93788 + 0xcc, 0xab, 0x99, 0xef, 0xac, 0xde, 0x25, 0x7e, 0x81, 0x46, 0xc9, 0xd3,
93789 + 0x3a, 0xcd, 0x80, 0xf9, 0x06, 0x7d, 0xa8, 0x88, 0x5c, 0xe7, 0x41, 0x62,
93790 + 0x59, 0x31, 0x21, 0xb3, 0xcc, 0x08, 0x63, 0x21, 0x6d, 0x54, 0xde, 0xe1,
93791 + 0x98, 0x46, 0x5e, 0x37, 0x9f, 0xf3, 0x51, 0x92, 0xf1, 0x00, 0xe4, 0x10,
93792 + 0x20, 0x3e, 0x61, 0x94, 0x20, 0x38, 0xea, 0xe7, 0x71, 0x31, 0x0f, 0x2a,
93793 + 0x22, 0xa3, 0xa2, 0x66, 0x94, 0x75, 0x87, 0x47, 0x6c, 0x5b, 0xfc, 0x07,
93794 + 0xce, 0x7b, 0x82, 0xb6, 0x7e, 0x23, 0xb1, 0x7e, 0x62, 0x27, 0xd0, 0xfb,
93795 + 0x70, 0xce, 0xb6, 0x53, 0x6c, 0xbf, 0x85, 0x98, 0xf7, 0x1e, 0x6d, 0xb6,
93796 + 0x87, 0xf3, 0xbd, 0x63, 0xd0, 0x08, 0xd6, 0xa9, 0x01, 0x6d, 0x9c, 0xf3,
93797 + 0xdc, 0x35, 0xa2, 0xa2, 0xaf, 0x7f, 0x31, 0x86, 0x99, 0x07, 0x75, 0x0f,
93798 + 0x89, 0x8f, 0x48, 0x99, 0xc3, 0xe8, 0xa4, 0x8f, 0xfc, 0x6a, 0xa1, 0x82,
93799 + 0xd8, 0x17, 0xe4, 0x1d, 0x51, 0x27, 0xf3, 0xfd, 0xfb, 0xb0, 0x36, 0x71,
93800 + 0xc4, 0x2a, 0x37, 0xf4, 0xde, 0x21, 0x95, 0x79, 0x16, 0x6d, 0xb3, 0x8b,
93801 + 0xf9, 0xc9, 0x12, 0xe6, 0x27, 0xdd, 0x79, 0xbb, 0x3c, 0x4e, 0x3b, 0xec,
93802 + 0x63, 0x1c, 0x7b, 0x7d, 0x28, 0x17, 0xf7, 0x7e, 0xbc, 0xc3, 0x8f, 0xf9,
93803 + 0x97, 0x97, 0xe3, 0x99, 0x87, 0x73, 0xb2, 0xed, 0xa4, 0x4d, 0x3e, 0x4d,
93804 + 0x3d, 0xdf, 0x4a, 0xbd, 0xbe, 0x92, 0x12, 0x8c, 0x0a, 0xe2, 0x59, 0xf2,
93805 + 0xe8, 0xf5, 0xe4, 0x02, 0x2f, 0xa5, 0x72, 0x36, 0xf9, 0xf5, 0xf1, 0x2b,
93806 + 0xab, 0x72, 0xf1, 0xc1, 0x0b, 0xf5, 0x01, 0x79, 0x27, 0xcf, 0xb2, 0x96,
93807 + 0x98, 0xd9, 0x76, 0xf2, 0x1a, 0xb6, 0x1d, 0x21, 0x37, 0x72, 0x62, 0x66,
93808 + 0x32, 0x82, 0xa5, 0xa9, 0xda, 0xe6, 0xb9, 0xb2, 0x89, 0x63, 0x66, 0x8e,
93809 + 0x03, 0xba, 0x92, 0xf2, 0xcd, 0x0f, 0x0d, 0x65, 0xcc, 0x9d, 0xfe, 0x26,
93810 + 0xff, 0x9d, 0x91, 0x1b, 0xff, 0x0c, 0xee, 0xb8, 0x82, 0x32, 0xa5, 0xc8,
93811 + 0x1d, 0x27, 0xf3, 0xdf, 0x19, 0xb9, 0xc1, 0xfe, 0xce, 0x88, 0x1b, 0xd3,
93812 + 0xc6, 0x9d, 0xce, 0x2f, 0xa5, 0x3c, 0x98, 0x31, 0x7e, 0x96, 0x83, 0xba,
93813 + 0x8b, 0x22, 0x4d, 0x78, 0x2a, 0xa1, 0x60, 0xba, 0xf1, 0xbf, 0xf1, 0xb2,
93814 + 0xbd, 0x26, 0x50, 0x8d, 0x99, 0x0f, 0xc8, 0x7a, 0x42, 0x54, 0xde, 0x89,
93815 + 0x69, 0x7e, 0x82, 0xe7, 0x25, 0xc4, 0xd3, 0x8a, 0x07, 0x14, 0x3c, 0x1d,
93816 + 0xf0, 0xa2, 0x98, 0xbf, 0x7d, 0xe4, 0x9a, 0xce, 0x85, 0xcb, 0xad, 0xcd,
93817 + 0xab, 0xc4, 0xbe, 0x39, 0x87, 0xfb, 0xa6, 0x55, 0x0a, 0x06, 0xee, 0x35,
93818 + 0x65, 0xdd, 0xd2, 0x40, 0x4f, 0xa2, 0x9a, 0xfc, 0xba, 0xb6, 0xbd, 0x09,
93819 + 0xb5, 0xe6, 0x2f, 0x1c, 0xd5, 0x28, 0xda, 0x77, 0x63, 0x95, 0xac, 0xd9,
93820 + 0x7f, 0x9b, 0x73, 0xd6, 0x4d, 0xec, 0xea, 0x4a, 0xe5, 0xe2, 0x67, 0x53,
93821 + 0xfa, 0x17, 0x9a, 0xe8, 0xa5, 0x9b, 0xfc, 0x44, 0x4d, 0x9e, 0xb2, 0xcb,
93822 + 0x94, 0x45, 0x0e, 0x11, 0x7f, 0x66, 0xe1, 0x10, 0xf3, 0x1a, 0x89, 0xa5,
93823 + 0x65, 0x3c, 0xca, 0xc9, 0x1b, 0x7f, 0xc9, 0x58, 0x7a, 0x67, 0x28, 0x1b,
93824 + 0x94, 0x2f, 0xd0, 0x54, 0x91, 0x8b, 0xd3, 0x07, 0xb0, 0x2f, 0xa4, 0xb7,
93825 + 0xac, 0x76, 0x44, 0x9f, 0x61, 0x0e, 0x16, 0x5e, 0xcc, 0x9c, 0x7c, 0x79,
93826 + 0x60, 0x04, 0x5b, 0xc9, 0x03, 0xb7, 0x30, 0x17, 0x6f, 0xa5, 0x6d, 0xb6,
93827 + 0xef, 0x62, 0x6c, 0x73, 0x9c, 0xcb, 0xc5, 0xb5, 0x50, 0x7c, 0x35, 0x39,
93828 + 0x40, 0x87, 0x47, 0x15, 0x7b, 0x15, 0xdf, 0x09, 0xb4, 0xbe, 0x41, 0x8c,
93829 + 0xae, 0x63, 0xdc, 0x10, 0x7b, 0xdf, 0x9e, 0xd2, 0xdb, 0xa9, 0x80, 0xaa,
93830 + 0x72, 0xe6, 0x8e, 0x77, 0x8d, 0x35, 0xd0, 0x6f, 0xac, 0x4e, 0x37, 0xed,
93831 + 0xda, 0xb9, 0x68, 0x16, 0x73, 0xce, 0xab, 0xd0, 0xbd, 0x83, 0xf6, 0x4f,
93832 + 0x5f, 0xba, 0xb7, 0x0f, 0xe4, 0x67, 0xea, 0x16, 0xce, 0x5f, 0x76, 0x1f,
93833 + 0x02, 0x67, 0x5a, 0x50, 0xd7, 0x5c, 0xe4, 0x10, 0x19, 0xf4, 0x96, 0xb7,
93834 + 0xc9, 0xd3, 0x3a, 0x98, 0x9f, 0xae, 0x67, 0x2e, 0x1f, 0x63, 0x2e, 0x1f,
93835 + 0x63, 0xbd, 0xd4, 0x0e, 0x79, 0x4e, 0x64, 0xb4, 0x1c, 0x67, 0xfe, 0xf3,
93836 + 0x35, 0xf2, 0x9f, 0x1d, 0xf7, 0x8b, 0x5c, 0xd3, 0x71, 0xd7, 0xde, 0xab,
93837 + 0x90, 0xa4, 0x3d, 0xdd, 0xc9, 0x6b, 0x7d, 0xf7, 0x5f, 0x8c, 0x3b, 0x98,
93838 + 0xc7, 0xc7, 0xc6, 0x16, 0xa3, 0x9f, 0x99, 0xe8, 0xc6, 0xbd, 0x9f, 0x45,
93839 + 0x17, 0xf9, 0xd4, 0x12, 0x62, 0xf4, 0xea, 0x87, 0x47, 0x6c, 0xcc, 0x16,
93840 + 0xcc, 0x7f, 0x2d, 0x0d, 0xbc, 0x49, 0x4e, 0xd6, 0x9f, 0x3a, 0x60, 0xf3,
93841 + 0x34, 0x17, 0xe3, 0x43, 0x31, 0x71, 0x29, 0xbc, 0xcb, 0xe8, 0x58, 0xa6,
93842 + 0x5a, 0x8b, 0x4b, 0x16, 0x06, 0x7a, 0xdf, 0xa6, 0xaf, 0x56, 0xed, 0x53,
93843 + 0x51, 0x3d, 0x20, 0xb9, 0x3a, 0xf9, 0x11, 0x31, 0xfa, 0x05, 0x62, 0x74,
93844 + 0xf9, 0x9e, 0x5c, 0x5e, 0x9e, 0x60, 0xde, 0x55, 0x6d, 0xe4, 0x72, 0xf3,
93845 + 0xed, 0x7d, 0xb2, 0xf7, 0xc6, 0x8d, 0xe7, 0x68, 0xfb, 0x47, 0xf3, 0xb6,
93846 + 0x7f, 0x2c, 0x8f, 0xc1, 0x16, 0x73, 0xf3, 0x37, 0x6d, 0xfc, 0xcd, 0xe5,
93847 + 0xe6, 0xf3, 0x07, 0x8c, 0x8e, 0x30, 0x31, 0xfa, 0x33, 0x7b, 0xa4, 0x7f,
93848 + 0x0d, 0xd5, 0xc4, 0x93, 0x1a, 0x62, 0x49, 0xc5, 0x80, 0xac, 0xcf, 0x04,
93849 + 0xda, 0xc7, 0x55, 0x9f, 0xdd, 0xc7, 0x26, 0xca, 0xd6, 0x9d, 0x92, 0x77,
93850 + 0x6c, 0x0d, 0x6d, 0x83, 0x12, 0x30, 0xaf, 0xa1, 0x3e, 0xf7, 0xa5, 0xaf,
93851 + 0x42, 0x7b, 0xff, 0x2c, 0xec, 0x1f, 0x92, 0xf8, 0x22, 0xed, 0x4b, 0x2e,
93852 + 0xee, 0xc4, 0xfb, 0xbb, 0x66, 0xe3, 0xfd, 0x91, 0x73, 0x79, 0xf8, 0xe6,
93853 + 0x54, 0xf4, 0x5e, 0x86, 0xd7, 0xe5, 0x92, 0x87, 0xbf, 0xc4, 0x3c, 0xfc,
93854 + 0x6d, 0x45, 0xd6, 0x10, 0x55, 0xdc, 0xb8, 0xc0, 0xc1, 0xf8, 0xa2, 0xfb,
93855 + 0x5f, 0x74, 0xc4, 0xe5, 0x39, 0xb2, 0xff, 0x7e, 0xde, 0x7f, 0x9e, 0xf1,
93856 + 0x7c, 0x80, 0x33, 0x11, 0xad, 0x76, 0xe0, 0x99, 0x85, 0xf1, 0xa8, 0x8b,
93857 + 0xd7, 0x7b, 0xc9, 0x53, 0x66, 0x1a, 0x07, 0xe9, 0x9b, 0xb5, 0xe1, 0xf9,
93858 + 0x0e, 0x07, 0xce, 0x98, 0x7a, 0xcb, 0x6e, 0x5e, 0x7b, 0x36, 0x23, 0xbe,
93859 + 0x18, 0x26, 0x7e, 0x2d, 0xca, 0xfb, 0xa2, 0xbc, 0x8f, 0x01, 0xf7, 0x6c,
93860 + 0xda, 0xeb, 0x6b, 0x29, 0xbd, 0xff, 0x59, 0xda, 0x69, 0xf5, 0x59, 0x3b,
93861 + 0x2d, 0xec, 0xd3, 0x82, 0xbb, 0x2a, 0xd2, 0x82, 0x50, 0xb2, 0xb0, 0x5f,
93862 + 0x6b, 0x3f, 0x7a, 0x32, 0xf7, 0x60, 0xe3, 0x4e, 0x7d, 0xa3, 0xac, 0x11,
93863 + 0xbd, 0x10, 0x8a, 0x5b, 0x95, 0x46, 0x27, 0x5c, 0x0b, 0x8c, 0x16, 0xe6,
93864 + 0x2f, 0xb1, 0xef, 0x2a, 0xa5, 0xb4, 0xdf, 0xc3, 0xd8, 0x34, 0xac, 0x07,
93865 + 0xb7, 0x2b, 0x06, 0xe3, 0x86, 0x86, 0xfd, 0x83, 0x45, 0xb8, 0x75, 0x57,
93866 + 0x1b, 0xf6, 0xf5, 0x9b, 0xc4, 0xcf, 0x5a, 0xff, 0x69, 0xbc, 0x87, 0x63,
93867 + 0xa6, 0xbc, 0xaf, 0x54, 0x82, 0x36, 0x4d, 0xf6, 0x29, 0x31, 0xfb, 0x9c,
93868 + 0x7e, 0xde, 0x3b, 0xe0, 0x9e, 0x12, 0xa3, 0xf0, 0x2e, 0xbf, 0xc1, 0x7c,
93869 + 0x71, 0x12, 0x7b, 0x06, 0x65, 0x6d, 0x60, 0x9a, 0x72, 0xa4, 0x7f, 0xae,
93870 + 0xaf, 0x8b, 0xd8, 0x7f, 0xaf, 0x99, 0xc5, 0x99, 0x85, 0xd5, 0xc0, 0x0c,
93871 + 0x05, 0xa1, 0xcf, 0x04, 0xe4, 0x5b, 0x35, 0xfc, 0x7b, 0xd7, 0xf2, 0x7f,
93872 + 0x51, 0xda, 0xa9, 0xa9, 0xc8, 0xad, 0x17, 0xbc, 0x5e, 0x2d, 0xef, 0xf2,
93873 + 0x1d, 0x49, 0xcd, 0xac, 0xcc, 0x3d, 0x77, 0xfe, 0xa4, 0x3e, 0x5e, 0xb3,
93874 + 0xfc, 0x76, 0x1b, 0x85, 0xba, 0xaf, 0x5a, 0x51, 0xaf, 0x94, 0x2f, 0x62,
93875 + 0xdb, 0xe2, 0x9f, 0xd3, 0x94, 0x76, 0xe2, 0xa9, 0x1a, 0x9a, 0xa6, 0xb4,
93876 + 0x0d, 0x5d, 0xd8, 0xee, 0x8b, 0x56, 0xb4, 0x45, 0xce, 0x0b, 0xe5, 0xdc,
93877 + 0xd3, 0x50, 0x2a, 0x65, 0x0b, 0xf7, 0x9f, 0xc9, 0xb7, 0x55, 0x4c, 0xae,
93878 + 0x9a, 0x2b, 0x73, 0x6b, 0xbf, 0xec, 0xad, 0x8a, 0xe2, 0x68, 0xc3, 0xd4,
93879 + 0xf6, 0x0a, 0x7d, 0x7f, 0xef, 0xbc, 0xf6, 0x72, 0x65, 0x67, 0xb1, 0x4d,
93880 + 0x29, 0x9f, 0xc5, 0xff, 0x6b, 0xaf, 0x23, 0xbc, 0x61, 0xef, 0x93, 0xdc,
93881 + 0x6a, 0x36, 0x46, 0x4b, 0xf0, 0x39, 0xa8, 0x97, 0xc6, 0xe7, 0x97, 0xd8,
93882 + 0xfc, 0x36, 0xda, 0x52, 0xc2, 0x1c, 0xd7, 0x6d, 0x44, 0xef, 0x75, 0x23,
93883 + 0x9b, 0x65, 0x5c, 0x6e, 0x3d, 0xa3, 0xec, 0x57, 0x6e, 0x0d, 0xe8, 0x1b,
93884 + 0xdf, 0x25, 0xdf, 0x78, 0x3e, 0x10, 0x27, 0xd6, 0x1b, 0xbe, 0x3e, 0x45,
93885 + 0x37, 0xd7, 0x32, 0xa6, 0x3d, 0xcb, 0x1c, 0x72, 0x4d, 0xa0, 0xd7, 0x7e,
93886 + 0xc6, 0xa8, 0x44, 0x56, 0xe0, 0x12, 0xfb, 0xbb, 0x2c, 0x2d, 0x30, 0xd2,
93887 + 0xcf, 0xcb, 0x9a, 0x17, 0x7f, 0xc7, 0x30, 0xdf, 0xbe, 0xb6, 0x06, 0x41,
93888 + 0xfb, 0xff, 0xaa, 0xfc, 0xb7, 0x5b, 0x5a, 0x51, 0x6b, 0xff, 0xbf, 0x19,
93889 + 0x73, 0xd3, 0x67, 0xd7, 0x86, 0xd1, 0x6d, 0x5a, 0xd6, 0x53, 0xa6, 0x85,
93890 + 0x37, 0xce, 0xed, 0xd1, 0x5e, 0xe1, 0x60, 0xce, 0x41, 0x17, 0x8e, 0xe5,
93891 + 0xbe, 0x5d, 0x75, 0xee, 0xfd, 0x8c, 0xa5, 0xe7, 0xed, 0xd1, 0x96, 0xf7,
93892 + 0xe2, 0xab, 0xed, 0x6f, 0x93, 0xcd, 0x5b, 0xe4, 0xc4, 0x73, 0x89, 0x8a,
93893 + 0x98, 0x87, 0xbf, 0x37, 0x2d, 0x2a, 0xc2, 0xfa, 0x10, 0x39, 0xdf, 0xa5,
93894 + 0xc7, 0x71, 0xda, 0xfe, 0x46, 0x43, 0x3c, 0x24, 0xdf, 0x66, 0x38, 0x9a,
93895 + 0x50, 0x71, 0x6c, 0xb0, 0x27, 0xb4, 0xc7, 0xee, 0xfb, 0x55, 0x74, 0x8f,
93896 + 0xca, 0x73, 0xbf, 0x16, 0xac, 0x4e, 0x4c, 0xda, 0x7b, 0xda, 0x36, 0xa7,
93897 + 0x24, 0xf7, 0xd6, 0xb3, 0x6b, 0x98, 0xaf, 0xaa, 0x8e, 0x20, 0x6e, 0x62,
93898 + 0x7c, 0x79, 0x21, 0x41, 0x3b, 0x5d, 0xa8, 0x77, 0x7c, 0x97, 0x1c, 0xa1,
93899 + 0x22, 0xa2, 0x07, 0xdf, 0x51, 0x5a, 0xc9, 0xc5, 0xdc, 0x98, 0x48, 0x88,
93900 + 0x2d, 0xca, 0xb7, 0x9d, 0x6e, 0xc6, 0x7e, 0x72, 0xd2, 0xe7, 0x13, 0x1a,
93901 + 0x4e, 0x37, 0x78, 0x90, 0x26, 0x47, 0x7d, 0x2e, 0xe1, 0xc6, 0x63, 0xe4,
93902 + 0xa8, 0x8f, 0x0e, 0xca, 0x1a, 0x61, 0x13, 0x1a, 0x13, 0xb2, 0x3e, 0x4c,
93903 + 0xde, 0x35, 0xe2, 0xa5, 0x3d, 0x5a, 0x56, 0x37, 0x6d, 0xb7, 0x4d, 0x9b,
93904 + 0x60, 0x9f, 0xb2, 0xae, 0x18, 0xc5, 0x35, 0xe4, 0x1d, 0x8f, 0x8e, 0xf8,
93905 + 0xf0, 0x7d, 0x72, 0xf3, 0x24, 0xeb, 0xbd, 0x90, 0xf0, 0xa3, 0x2f, 0xed,
93906 + 0xc3, 0xd3, 0xe4, 0xe8, 0x5b, 0x78, 0x2e, 0xdf, 0x09, 0x2b, 0x32, 0x82,
93907 + 0xe4, 0xc1, 0x87, 0x51, 0xd6, 0x77, 0x11, 0xd6, 0xad, 0x3c, 0x08, 0xb5,
93908 + 0xef, 0x10, 0x8f, 0x2b, 0x19, 0xb3, 0xaf, 0x44, 0x6a, 0x30, 0x82, 0xd4,
93909 + 0xc8, 0x8f, 0xd0, 0x3b, 0x28, 0xe3, 0x92, 0xef, 0x3d, 0xc9, 0xbe, 0x27,
93910 + 0x72, 0xbd, 0x3e, 0x2f, 0x86, 0x46, 0xa4, 0x9f, 0x6a, 0xf6, 0xfd, 0xe7,
93911 + 0xb6, 0xff, 0x1f, 0xd6, 0xba, 0x1b, 0xa5, 0xed, 0x83, 0x9f, 0xd0, 0xbe,
93912 + 0xe8, 0xaa, 0xf0, 0x9e, 0xa1, 0xac, 0x75, 0xb8, 0xd9, 0xa6, 0x07, 0x8e,
93913 + 0x48, 0x76, 0x65, 0x39, 0xf4, 0xe8, 0x36, 0xc5, 0x68, 0x2e, 0x53, 0x26,
93914 + 0xb1, 0x2d, 0x23, 0xef, 0x8d, 0x15, 0xe3, 0x69, 0xe2, 0xa3, 0x2b, 0xa4,
93915 + 0x6b, 0xdf, 0xa5, 0xed, 0x2c, 0x21, 0xa6, 0xbc, 0x61, 0x7e, 0x06, 0x71,
93916 + 0x4d, 0xf4, 0x57, 0x8c, 0x1f, 0xf4, 0xbb, 0xf1, 0x4e, 0x28, 0x82, 0xdc,
93917 + 0xb7, 0xbd, 0x3c, 0xf8, 0x71, 0xc2, 0xcb, 0xf9, 0xaa, 0xcb, 0x1a, 0x8e,
93918 + 0xb9, 0xc0, 0xb4, 0xdc, 0xb5, 0xa3, 0x89, 0x35, 0xd8, 0x43, 0x79, 0x5f,
93919 + 0x48, 0x9c, 0xe1, 0xfc, 0xb4, 0x53, 0xff, 0xa2, 0xef, 0x78, 0x5e, 0xd7,
93920 + 0x3d, 0xd4, 0xf5, 0x2c, 0x3c, 0x9b, 0xb8, 0x0f, 0x8f, 0x52, 0xfe, 0x47,
93921 + 0xfa, 0x8d, 0xe8, 0xc5, 0xca, 0x61, 0xe2, 0x65, 0x31, 0x8e, 0xb1, 0xed,
93922 + 0x5b, 0x99, 0x29, 0x4f, 0x4a, 0x5f, 0x29, 0x59, 0x9f, 0x54, 0xf0, 0xce,
93923 + 0xa2, 0xc3, 0x18, 0xe7, 0xbd, 0x1f, 0xf3, 0x77, 0x78, 0x61, 0x25, 0xfb,
93924 + 0x10, 0xfd, 0xf8, 0xed, 0x5c, 0xa0, 0x8b, 0x3c, 0x67, 0x79, 0xc3, 0x61,
93925 + 0x6c, 0x1d, 0x92, 0x6b, 0x6d, 0xe8, 0xed, 0x7f, 0x0f, 0x8e, 0x10, 0x71,
93926 + 0xc8, 0xdb, 0x40, 0x5b, 0xcf, 0x62, 0x5b, 0xfa, 0xc3, 0x69, 0x39, 0x0e,
93927 + 0xfa, 0xca, 0x34, 0xd9, 0x8b, 0x7c, 0x34, 0x51, 0x8c, 0xe7, 0x58, 0x67,
93928 + 0x5d, 0xc8, 0x95, 0x7f, 0x66, 0x72, 0x98, 0xfc, 0xc9, 0x89, 0x34, 0xfb,
93929 + 0x48, 0xd8, 0x6d, 0x4c, 0x53, 0x76, 0xd3, 0x0f, 0x2b, 0x17, 0x4e, 0x53,
93930 + 0x52, 0x43, 0xc2, 0xed, 0x7f, 0x84, 0x27, 0xef, 0xcf, 0xe9, 0x70, 0x8f,
93931 + 0xb9, 0x06, 0x43, 0xe9, 0x1f, 0x17, 0xda, 0x9b, 0xf2, 0x2e, 0x9c, 0xbc,
93932 + 0x9f, 0x53, 0x78, 0x57, 0x27, 0xf7, 0x4c, 0xeb, 0xdb, 0x99, 0x0a, 0xf2,
93933 + 0xe7, 0x52, 0xda, 0x5a, 0x51, 0xcc, 0xcb, 0xb8, 0xba, 0x66, 0x81, 0x86,
93934 + 0x9d, 0x97, 0xd5, 0x4d, 0x43, 0x85, 0xe6, 0xfc, 0x75, 0xc3, 0xf3, 0xec,
93935 + 0xa7, 0x22, 0x56, 0x15, 0xd9, 0x63, 0xef, 0x83, 0x0a, 0x5d, 0x56, 0xc3,
93936 + 0xb8, 0x22, 0xcf, 0x86, 0x63, 0x78, 0x2b, 0x51, 0x1d, 0xab, 0x8e, 0x54,
93937 + 0x12, 0x6f, 0x4f, 0xa3, 0x6f, 0xd8, 0x89, 0x0a, 0xf2, 0xe6, 0xf2, 0x64,
93938 + 0x35, 0xdc, 0xf6, 0x3a, 0xde, 0x45, 0xe4, 0x2b, 0xb3, 0xc9, 0x49, 0x66,
93939 + 0xa1, 0x92, 0xbc, 0xc4, 0x13, 0xb2, 0xac, 0x9f, 0x2d, 0xb4, 0xac, 0x4b,
93940 + 0x78, 0x94, 0xf0, 0x38, 0x15, 0x12, 0x3f, 0x8d, 0xa2, 0xce, 0xf6, 0x57,
93941 + 0x03, 0xf5, 0xf6, 0xff, 0x26, 0xfa, 0x7a, 0x47, 0x68, 0xfe, 0xf8, 0x7d,
93942 + 0xa1, 0xb9, 0xe3, 0x35, 0x50, 0x07, 0xa6, 0xc3, 0xc1, 0xb6, 0xbe, 0x70,
93943 + 0x99, 0x85, 0x26, 0xfa, 0xf0, 0x5a, 0x53, 0x78, 0xd1, 0x1a, 0xf2, 0xa2,
93944 + 0xde, 0x90, 0x31, 0x7e, 0x10, 0x57, 0x33, 0xce, 0xb9, 0x07, 0x7c, 0xec,
93945 + 0x47, 0x72, 0x6c, 0x67, 0x76, 0x0e, 0xf9, 0xf6, 0x67, 0x16, 0x0a, 0x47,
93946 + 0x6a, 0x25, 0x47, 0x3a, 0x84, 0xd6, 0xf1, 0xc3, 0xb8, 0x9e, 0x65, 0x3c,
93947 + 0xe4, 0x2a, 0xc9, 0xcc, 0x8f, 0xd0, 0x97, 0xb1, 0xb0, 0x3d, 0x94, 0xc5,
93948 + 0xb5, 0x6c, 0xbb, 0x74, 0xa0, 0x99, 0xdc, 0x70, 0x05, 0xd6, 0x8d, 0xcb,
93949 + 0xbb, 0x52, 0x13, 0x58, 0x3e, 0x4e, 0xce, 0x39, 0x5e, 0xf0, 0x57, 0xe1,
93950 + 0x4b, 0x2b, 0xc8, 0x97, 0x64, 0x2d, 0x6d, 0x95, 0xbd, 0x96, 0xa6, 0xd2,
93951 + 0x0f, 0x1b, 0x13, 0xf2, 0x9e, 0x50, 0x1c, 0xab, 0xc7, 0x05, 0xab, 0xef,
93952 + 0x41, 0xf7, 0xb8, 0xac, 0xcd, 0x7e, 0x33, 0x74, 0xf1, 0xf8, 0xab, 0x68,
93953 + 0x1c, 0x1f, 0x0a, 0xcd, 0x1b, 0x1f, 0xa1, 0xdc, 0x09, 0xca, 0xd6, 0x1f,
93954 + 0xaa, 0x1d, 0x1f, 0x0c, 0x05, 0xc7, 0x77, 0x87, 0x02, 0xe3, 0x2d, 0xd8,
93955 + 0x32, 0xbe, 0x0a, 0x9b, 0xc7, 0x37, 0x62, 0xd3, 0xb8, 0xe0, 0xfc, 0x24,
93956 + 0x96, 0x8d, 0xbf, 0x81, 0xa5, 0xe3, 0xcf, 0xa3, 0x69, 0xfc, 0x04, 0x96,
93957 + 0x8c, 0xff, 0x08, 0xcd, 0xe3, 0xaf, 0x70, 0x2c, 0xb2, 0xd6, 0x2b, 0xeb,
93958 + 0xbc, 0x85, 0xe7, 0x6a, 0x53, 0xf7, 0x24, 0xcb, 0x5a, 0x86, 0x7c, 0xbf,
93959 + 0x43, 0xe6, 0xd0, 0x85, 0x95, 0xda, 0x6b, 0xe8, 0xd9, 0x25, 0xdf, 0x24,
93960 + 0xac, 0xd3, 0xba, 0xe5, 0xf9, 0xa3, 0xf7, 0x79, 0xd9, 0x63, 0x4f, 0x1b,
93961 + 0x3b, 0xff, 0xbd, 0xbc, 0xc9, 0xb3, 0xcf, 0x18, 0xe5, 0x1b, 0x18, 0xf2,
93962 + 0xec, 0x73, 0x12, 0x5d, 0x99, 0xdf, 0x5a, 0x51, 0x4d, 0xca, 0xca, 0xf7,
93963 + 0x3f, 0xc4, 0x1e, 0x5e, 0xc3, 0x43, 0xbb, 0x26, 0xc9, 0x59, 0xb2, 0xf6,
93964 + 0x5a, 0xcd, 0xbb, 0xf3, 0xe4, 0x9b, 0x56, 0xf2, 0xce, 0xfe, 0x6b, 0x48,
93965 + 0x8d, 0x02, 0xe3, 0x0f, 0x8b, 0x1f, 0xae, 0xa1, 0x1f, 0x66, 0xc5, 0x27,
93966 + 0xe3, 0xc4, 0xe4, 0xaf, 0x78, 0x70, 0x0f, 0x79, 0x49, 0x11, 0xb2, 0x23,
93967 + 0xa5, 0x78, 0x66, 0x30, 0x6e, 0xcd, 0x31, 0x3c, 0x28, 0x8f, 0x18, 0xd9,
93968 + 0x4b, 0x18, 0x67, 0x5f, 0xe1, 0xb5, 0x89, 0x7e, 0xf8, 0x7d, 0x46, 0xc0,
93969 + 0x37, 0x87, 0xe7, 0xc7, 0x86, 0xb2, 0xe4, 0x14, 0x1d, 0x98, 0xe4, 0x7f,
93970 + 0xc9, 0x41, 0x81, 0x6e, 0x0c, 0x0d, 0x89, 0x3e, 0x5b, 0xa8, 0x4f, 0xc1,
93971 + 0x45, 0xbd, 0xa3, 0x89, 0x78, 0x68, 0x29, 0x82, 0x87, 0x2a, 0xca, 0x1e,
93972 + 0xe8, 0xa4, 0xbf, 0xea, 0xb1, 0x9f, 0x30, 0x16, 0xf4, 0x29, 0x3f, 0xc2,
93973 + 0x73, 0xcc, 0x19, 0x4a, 0x1f, 0x20, 0xff, 0x20, 0x56, 0x56, 0x44, 0x14,
93974 + 0x63, 0x79, 0xe0, 0x14, 0x9e, 0x19, 0x71, 0xc2, 0x9d, 0x74, 0x62, 0x82,
93975 + 0x38, 0xe9, 0x48, 0xca, 0xf3, 0x7a, 0x8d, 0xb2, 0xc8, 0xba, 0xd0, 0x09,
93976 + 0x64, 0xed, 0xe7, 0x69, 0xf2, 0x3c, 0xe4, 0x45, 0xbb, 0x1f, 0x27, 0x65,
93977 + 0xef, 0x21, 0x96, 0x76, 0xa5, 0x5e, 0x42, 0xd3, 0x90, 0x07, 0x73, 0x92,
93978 + 0x13, 0xcc, 0x5f, 0x5e, 0x45, 0x6a, 0xd7, 0x2c, 0x7c, 0x95, 0x3c, 0x70,
93979 + 0x66, 0xd2, 0x84, 0x46, 0xbd, 0xdd, 0x34, 0x66, 0x22, 0xba, 0x77, 0x15,
93980 + 0x56, 0xee, 0xfd, 0x22, 0x8f, 0xe9, 0xb8, 0x7e, 0x6f, 0x3b, 0x3e, 0x3f,
93981 + 0x16, 0x47, 0xeb, 0x58, 0x0f, 0x8f, 0x36, 0x5c, 0xb7, 0xa3, 0x12, 0xe9,
93982 + 0x90, 0xc6, 0x9c, 0xba, 0x8d, 0x39, 0xb5, 0xf0, 0xa1, 0xd5, 0x78, 0x86,
93983 + 0xb8, 0x13, 0x0c, 0xad, 0xc6, 0x84, 0xed, 0x8b, 0xb2, 0x97, 0x71, 0x35,
93984 + 0x36, 0x31, 0x5f, 0x1e, 0xc6, 0x6a, 0x74, 0xf1, 0xda, 0x0e, 0x7b, 0x0e,
93985 + 0x0e, 0x63, 0x31, 0xf3, 0xa1, 0xf7, 0x2f, 0x3f, 0x8c, 0x2b, 0xf6, 0x48,
93986 + 0xdf, 0xa7, 0x91, 0xda, 0xb9, 0x86, 0x6d, 0x66, 0xd1, 0x32, 0xf6, 0x43,
93987 + 0x7c, 0x7e, 0x07, 0x6e, 0xab, 0x44, 0x25, 0x9e, 0x0f, 0x05, 0x5a, 0xfb,
93988 + 0x94, 0x1f, 0xda, 0x6d, 0x6f, 0xa2, 0x1f, 0x6f, 0x65, 0xb9, 0x47, 0xd2,
93989 + 0x27, 0xd0, 0x9b, 0x9a, 0x3a, 0xa7, 0xf6, 0x7b, 0xed, 0x8c, 0x07, 0x2f,
93990 + 0x63, 0xdf, 0xc8, 0x24, 0xb1, 0xf7, 0x24, 0x8f, 0x0b, 0x9f, 0x5f, 0x7b,
93991 + 0xed, 0x7c, 0x26, 0x67, 0x37, 0x92, 0xbf, 0xc8, 0x3a, 0x70, 0x0b, 0x7c,
93992 + 0x29, 0xe1, 0x44, 0xd9, 0xad, 0x33, 0xa1, 0x6f, 0x0c, 0xdb, 0x1c, 0xc9,
93993 + 0x88, 0x91, 0x1b, 0xb5, 0x7c, 0x57, 0xf1, 0x90, 0x1b, 0x05, 0xb1, 0x22,
93994 + 0xa3, 0x47, 0xaf, 0xa5, 0xbe, 0x4b, 0xee, 0x7f, 0x19, 0xce, 0xfb, 0x9d,
93995 + 0x28, 0x4e, 0xca, 0xda, 0xc9, 0x04, 0x7a, 0x33, 0xf2, 0xfe, 0x6e, 0x56,
93996 + 0x2f, 0x26, 0xae, 0x16, 0x25, 0xb3, 0x8c, 0xfd, 0xd9, 0xf9, 0x45, 0x90,
93997 + 0x77, 0xf1, 0xaf, 0xc2, 0x9a, 0xfe, 0x28, 0xba, 0x4c, 0x79, 0x57, 0x27,
93998 + 0x37, 0xfe, 0x39, 0x0d, 0x2f, 0xa3, 0x9b, 0xf1, 0xa7, 0x8d, 0x98, 0xf8,
93999 + 0x55, 0xfb, 0x59, 0xe8, 0xcb, 0xe8, 0x19, 0x2c, 0xbc, 0xbb, 0x2e, 0x6d,
94000 + 0x3e, 0x4f, 0xbd, 0xb9, 0xf2, 0xdf, 0xec, 0x91, 0x36, 0x75, 0xd3, 0xaf,
94001 + 0x4e, 0xcb, 0xbd, 0x8b, 0x03, 0xfb, 0x19, 0x36, 0xed, 0xe3, 0x35, 0xf4,
94002 + 0xee, 0x2a, 0x8c, 0x99, 0xb9, 0x41, 0xe0, 0x35, 0xf4, 0x8f, 0xca, 0xd8,
94003 + 0xaf, 0x9f, 0x96, 0x7b, 0xc7, 0x78, 0xaa, 0x3e, 0x0a, 0x75, 0x1d, 0xb4,
94004 + 0xe7, 0xc2, 0xfd, 0x8f, 0xfb, 0x6e, 0xd0, 0xa7, 0xec, 0x6f, 0xf0, 0xe4,
94005 + 0xbe, 0x81, 0x04, 0x3c, 0x99, 0x90, 0x77, 0xfb, 0xd5, 0xc5, 0x2e, 0xa8,
94006 + 0x5e, 0x17, 0x8a, 0x19, 0x2f, 0x6a, 0xd0, 0xed, 0xb5, 0x70, 0x35, 0xc7,
94007 + 0xb2, 0xbf, 0xfe, 0x3a, 0x66, 0x1a, 0xf1, 0x56, 0x97, 0xfd, 0xce, 0xe1,
94008 + 0x8a, 0xbf, 0xfe, 0xe8, 0x3b, 0x87, 0x6f, 0x10, 0x67, 0x15, 0x94, 0x1b,
94009 + 0x37, 0xe1, 0x05, 0x3b, 0xa6, 0x28, 0x28, 0x9b, 0x2b, 0xeb, 0x98, 0x7e,
94010 + 0x3c, 0x6b, 0xd4, 0xf9, 0xab, 0xe4, 0xf9, 0x94, 0x72, 0xca, 0x92, 0x6f,
94011 + 0x06, 0x6c, 0xcb, 0xfc, 0xb1, 0x3d, 0xf1, 0x4f, 0x61, 0xcb, 0xce, 0x30,
94012 + 0xe4, 0xfd, 0x15, 0xa7, 0xa1, 0x79, 0x73, 0xfc, 0x4a, 0x64, 0x93, 0xbd,
94013 + 0xe4, 0xb7, 0x12, 0x9c, 0xde, 0xa0, 0x9f, 0xbe, 0x21, 0x7b, 0xa6, 0xc8,
94014 + 0x99, 0xfe, 0x12, 0xc1, 0xaa, 0xc2, 0x38, 0x65, 0xaf, 0xa9, 0x92, 0x1b,
94015 + 0xab, 0x5d, 0x47, 0xca, 0x4a, 0xbd, 0x37, 0xec, 0x35, 0x5c, 0x97, 0xf1,
94016 + 0x5b, 0xeb, 0x4d, 0x6f, 0x35, 0xcb, 0x1e, 0xce, 0xdf, 0x9f, 0x14, 0x9f,
94017 + 0x33, 0xe5, 0x1b, 0x56, 0x4e, 0xbb, 0x8e, 0xe8, 0xf7, 0x5c, 0x9d, 0xee,
94018 + 0x94, 0x83, 0xb8, 0x79, 0xc2, 0xea, 0xf4, 0xca, 0x18, 0xee, 0xbc, 0xa0,
94019 + 0x8e, 0xac, 0x2b, 0x68, 0xd2, 0x6f, 0x58, 0xc6, 0xdc, 0x95, 0xf9, 0x68,
94020 + 0x9f, 0xb2, 0xde, 0x5b, 0x64, 0x94, 0xe1, 0x54, 0x55, 0x6e, 0x1d, 0xe6,
94021 + 0x9c, 0x8c, 0x3d, 0x35, 0xb2, 0x4f, 0xaf, 0xd8, 0x3e, 0xb7, 0xfb, 0x35,
94022 + 0xcf, 0xd5, 0xfb, 0xbb, 0xfc, 0x78, 0xab, 0xed, 0x77, 0x86, 0x1e, 0xb4,
94023 + 0x79, 0x91, 0x63, 0xca, 0xb8, 0x4b, 0x6a, 0xce, 0xef, 0xe7, 0x2b, 0xf9,
94024 + 0x7e, 0x45, 0x1e, 0xef, 0x94, 0x3e, 0x44, 0xae, 0x87, 0xf3, 0x75, 0xf4,
94025 + 0x70, 0xd4, 0xee, 0x5f, 0x65, 0xbe, 0x55, 0xe8, 0x93, 0xfe, 0xb8, 0xb0,
94026 + 0xd0, 0x46, 0x56, 0xec, 0xb3, 0xb3, 0x98, 0xb1, 0xed, 0x54, 0xc3, 0x3d,
94027 + 0xd8, 0x94, 0x10, 0x3d, 0xcb, 0xb7, 0x60, 0x89, 0xe1, 0x36, 0x57, 0x73,
94028 + 0xd1, 0x5f, 0x2f, 0xc3, 0x90, 0x16, 0xc7, 0x9e, 0x7a, 0x79, 0x47, 0xce,
94029 + 0x45, 0x9f, 0x88, 0xa3, 0xc4, 0x28, 0x96, 0xfd, 0xc7, 0xf6, 0x1e, 0x94,
94030 + 0x7d, 0xa6, 0x1e, 0x7d, 0x52, 0xbe, 0x55, 0x76, 0xa9, 0xbd, 0x5e, 0xd5,
94031 + 0x3c, 0x04, 0xb9, 0x6e, 0xe2, 0xda, 0xf3, 0xf2, 0xfe, 0x12, 0xda, 0x8e,
94032 + 0xbd, 0x27, 0xda, 0x94, 0x77, 0xe8, 0xfa, 0x12, 0xf2, 0x2e, 0x57, 0x5d,
94033 + 0x8c, 0xfc, 0x12, 0x2f, 0xa4, 0x65, 0xbf, 0xc2, 0xef, 0xac, 0x78, 0x8d,
94034 + 0xec, 0x8b, 0x9c, 0x5a, 0xa7, 0x88, 0xb8, 0x16, 0x08, 0x57, 0x28, 0x85,
94035 + 0xf7, 0xb9, 0xce, 0xfd, 0x5d, 0x4f, 0x9b, 0x39, 0x6d, 0xbf, 0x83, 0x27,
94036 + 0x67, 0x11, 0x34, 0xa6, 0xe4, 0x9b, 0xa7, 0xfa, 0xc4, 0x72, 0xd4, 0x65,
94037 + 0x6b, 0x1d, 0xce, 0x3c, 0x7f, 0x09, 0x63, 0x05, 0xed, 0x66, 0x73, 0x20,
94038 + 0x6c, 0xbf, 0x6b, 0xb6, 0x2c, 0x55, 0x1b, 0x7c, 0x04, 0x7a, 0xfb, 0xdb,
94039 + 0x2c, 0x7f, 0x5d, 0xe6, 0xfb, 0xd6, 0x90, 0x57, 0xc6, 0x54, 0xc0, 0x88,
94040 + 0x13, 0xf4, 0x0d, 0xea, 0x31, 0x22, 0xfe, 0xe1, 0x41, 0x55, 0x24, 0x4c,
94041 + 0x3f, 0x96, 0xf8, 0x2f, 0xef, 0xa9, 0xe9, 0xbb, 0xe3, 0x30, 0xd1, 0xc8,
94042 + 0x1c, 0xdd, 0x65, 0xef, 0x73, 0xd6, 0xfd, 0x2b, 0x19, 0x87, 0x8e, 0x9c,
94043 + 0xdd, 0x13, 0x20, 0x7c, 0xe1, 0xc7, 0x35, 0xf9, 0xbd, 0xd0, 0xee, 0x39,
94044 + 0x8c, 0x8f, 0x96, 0xfd, 0x9c, 0x7f, 0x8d, 0x8d, 0x2d, 0x9a, 0xa1, 0xef,
94045 + 0xff, 0x95, 0xa3, 0x13, 0x4f, 0x2c, 0x30, 0x3a, 0x0e, 0xa8, 0xd9, 0x21,
94046 + 0x1f, 0x71, 0xe6, 0x4a, 0x47, 0x74, 0x07, 0xff, 0xfb, 0x5f, 0xb4, 0xbf,
94047 + 0xa1, 0x22, 0x75, 0xf5, 0xe0, 0x2a, 0x55, 0xf6, 0x0f, 0xb5, 0x60, 0xac,
94048 + 0x4f, 0xde, 0x7d, 0xd0, 0x5b, 0xbf, 0xad, 0x74, 0x62, 0x43, 0xc8, 0x68,
94049 + 0xd9, 0xa8, 0xe8, 0xcd, 0x7f, 0xaf, 0xe8, 0xfe, 0x90, 0x22, 0xe5, 0x82,
94050 + 0xb2, 0xb6, 0x77, 0x36, 0xf6, 0xba, 0xd8, 0xc7, 0xde, 0x84, 0x1e, 0x9e,
94051 + 0xc6, 0xb2, 0xa7, 0x4c, 0xc3, 0xf7, 0x1e, 0xdb, 0xfc, 0x09, 0x8f, 0x1d,
94052 + 0xf6, 0x3b, 0xec, 0x52, 0x3e, 0x3a, 0xdf, 0x65, 0x7f, 0x8f, 0xb8, 0x95,
94053 + 0x31, 0x45, 0xbe, 0x35, 0x1c, 0x83, 0x96, 0x9c, 0x45, 0x13, 0xd3, 0x7b,
94054 + 0x6f, 0x80, 0xe4, 0xc0, 0x37, 0x4f, 0x47, 0xa9, 0x07, 0xde, 0x48, 0x27,
94055 + 0xe6, 0x2e, 0x30, 0x7c, 0x8b, 0x54, 0xbb, 0x7e, 0x30, 0xaa, 0x4a, 0x7d,
94056 + 0xdd, 0x3f, 0x08, 0x69, 0x23, 0x6b, 0x69, 0x73, 0x2b, 0xed, 0x3a, 0x0b,
94057 + 0xd4, 0xcf, 0xc1, 0xf5, 0xe9, 0x5f, 0xcb, 0x37, 0x8b, 0xb4, 0x6a, 0x43,
94058 + 0xea, 0xc4, 0x77, 0x68, 0xf8, 0x63, 0xf5, 0x04, 0x57, 0x7e, 0x65, 0x61,
94059 + 0xba, 0xd4, 0x93, 0x3d, 0x66, 0x37, 0xe3, 0x76, 0xfb, 0xbb, 0x2b, 0xe2,
94060 + 0x8f, 0x7a, 0xf4, 0x6e, 0x72, 0xd5, 0x52, 0x45, 0x78, 0xaa, 0xc4, 0xa2,
94061 + 0x36, 0xe2, 0x61, 0x27, 0xb4, 0x90, 0xde, 0x7b, 0x91, 0xea, 0x41, 0x71,
94062 + 0x64, 0x54, 0xf6, 0xd9, 0xec, 0x9e, 0xa7, 0xe6, 0xf6, 0xe3, 0xc4, 0xd8,
94063 + 0xee, 0x91, 0x3f, 0xfa, 0xdc, 0x97, 0x7d, 0x95, 0x9a, 0xf2, 0xce, 0x8e,
94064 + 0xfd, 0x9e, 0x48, 0x5b, 0xc2, 0x91, 0xdf, 0x5f, 0x58, 0x98, 0x5b, 0x0d,
94065 + 0x6b, 0x98, 0x17, 0xac, 0x95, 0x6f, 0x63, 0x72, 0xac, 0xeb, 0x12, 0xb2,
94066 + 0x0a, 0xf5, 0x7f, 0x01, 0x28, 0xfc, 0xfc, 0x40, 0x38, 0x5a, 0x00, 0x00,
94067 + 0x00 };
94068
94069 static const u32 bnx2_CP_b06FwData[(0x84/4) + 1] = {
94070 0x00000000, 0x0000001b, 0x0000000f, 0x0000000a, 0x00000008, 0x00000006,
94071 @@ -2119,51 +2137,50 @@
94072 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002,
94073 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002, 0x00000002,
94074 0x00000001, 0x00000001, 0x00000001, 0x00000000 };
94075 -static const u32 bnx2_CP_b06FwRodata[(0x134/4) + 1] = {
94076 - 0x08000f30, 0x08000d88, 0x08000fc4, 0x0800106c, 0x08000f58, 0x08000f98,
94077 - 0x080011a4, 0x08000da4, 0x080011c8, 0x08000df4, 0x08001498, 0x08001440,
94078 - 0x08000da4, 0x08000da4, 0x08000da4, 0x08001254, 0x08001254, 0x08000da4,
94079 - 0x08000da4, 0x080016e0, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4,
94080 - 0x080013d4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4,
94081 - 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4,
94082 - 0x08000da4, 0x08000da4, 0x08000da4, 0x08000fb8, 0x08000da4, 0x08000da4,
94083 - 0x08001690, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4,
94084 - 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4,
94085 - 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4, 0x08000da4,
94086 - 0x080015bc, 0x08000da4, 0x08000da4, 0x08001348, 0x080012b8, 0x08002e50,
94087 - 0x08002e58, 0x08002e20, 0x08002e2c, 0x08002e38, 0x08002e44, 0x0800532c,
94088 - 0x080052ec, 0x080052b8, 0x0800528c, 0x08005268, 0x08005224, 0x00000000
94089 -};
94090 +static const u32 bnx2_CP_b06FwRodata[(0x130/4) + 1] = {
94091 + 0x08001e8c, 0x08001d18, 0x08001e68, 0x08001e44, 0x08001e20, 0x08001dfc,
94092 + 0x08001dd4, 0x08001dac, 0x08001d80, 0x08001f84, 0x08001f74, 0x08001d34,
94093 + 0x08001d34, 0x08001d34, 0x08001eb4, 0x08001eb4, 0x08001d34, 0x08001d34,
94094 + 0x08001f64, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001f54,
94095 + 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34,
94096 + 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34,
94097 + 0x08001d34, 0x08001d34, 0x08001f44, 0x08001d34, 0x08001d34, 0x08001f34,
94098 + 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34,
94099 + 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34,
94100 + 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001d34, 0x08001f1c,
94101 + 0x08001d34, 0x08001d34, 0x08001f0c, 0x08001efc, 0x08003208, 0x08003210,
94102 + 0x080031d8, 0x080031e4, 0x080031f0, 0x080031fc, 0x08005694, 0x08005654,
94103 + 0x08005620, 0x080055f4, 0x080055d0, 0x0800558c, 0x00000000 };
94104
94105 static struct fw_info bnx2_cp_fw_06 = {
94106 - /* Firmware version: 4.6.16 */
94107 + /* Firmware version: 4.4.22 */
94108 .ver_major = 0x4,
94109 - .ver_minor = 0x6,
94110 - .ver_fix = 0x10,
94111 + .ver_minor = 0x4,
94112 + .ver_fix = 0x16,
94113
94114 .start_addr = 0x08000080,
94115
94116 .text_addr = 0x08000000,
94117 - .text_len = 0x56cc,
94118 + .text_len = 0x5a34,
94119 .text_index = 0x0,
94120 .gz_text = bnx2_CP_b06FwText,
94121 .gz_text_len = sizeof(bnx2_CP_b06FwText),
94122
94123 - .data_addr = 0x08005820,
94124 + .data_addr = 0x08005b80,
94125 .data_len = 0x84,
94126 .data_index = 0x0,
94127 .data = bnx2_CP_b06FwData,
94128
94129 - .sbss_addr = 0x080058a4,
94130 - .sbss_len = 0xf1,
94131 + .sbss_addr = 0x08005c04,
94132 + .sbss_len = 0xe9,
94133 .sbss_index = 0x0,
94134
94135 - .bss_addr = 0x08005998,
94136 + .bss_addr = 0x08005cf0,
94137 .bss_len = 0x5d8,
94138 .bss_index = 0x0,
94139
94140 - .rodata_addr = 0x080056cc,
94141 - .rodata_len = 0x134,
94142 + .rodata_addr = 0x08005a34,
94143 + .rodata_len = 0x130,
94144 .rodata_index = 0x0,
94145 .rodata = bnx2_CP_b06FwRodata,
94146 };
94147 @@ -2185,747 +2202,761 @@
94148 };
94149
94150 static u8 bnx2_RXP_b06FwText[] = {
94151 - 0xec, 0x5b, 0x5d, 0x6c, 0x1c, 0xd7, 0x75, 0x3e, 0x33, 0x3b, 0x24, 0x57,
94152 - 0x14, 0x45, 0x8e, 0xa8, 0x15, 0xb5, 0xb2, 0x99, 0x64, 0x97, 0x1c, 0x89,
94153 - 0x1b, 0x93, 0x50, 0x86, 0xec, 0x5a, 0x66, 0x92, 0x45, 0xbc, 0x59, 0x52,
94154 - 0x16, 0x53, 0x08, 0xf0, 0xda, 0x56, 0x5c, 0xa3, 0x31, 0x90, 0xc5, 0x92,
94155 - 0x76, 0xd2, 0x37, 0xc9, 0xa9, 0x5d, 0x21, 0xb1, 0xab, 0xf5, 0x92, 0x91,
94156 - 0x15, 0x75, 0xc5, 0x61, 0x24, 0x26, 0x72, 0x1b, 0xb7, 0xa0, 0xf9, 0x23,
94157 - 0xaa, 0xc1, 0x4a, 0xe3, 0x9f, 0xd8, 0xf5, 0x43, 0x64, 0x31, 0xb2, 0xad,
94158 - 0xfa, 0xa5, 0x80, 0xd3, 0x1f, 0xc0, 0x28, 0x8c, 0x56, 0x90, 0x6b, 0xd9,
94159 - 0x68, 0x81, 0x42, 0x6d, 0x51, 0xd4, 0x6d, 0x64, 0x4d, 0xbf, 0xef, 0xce,
94160 - 0x0c, 0xb9, 0x22, 0x94, 0xc6, 0x2f, 0x7d, 0x9b, 0x0b, 0x2c, 0xee, 0xdc,
94161 - 0x3b, 0xe7, 0x9e, 0x7b, 0xce, 0xb9, 0xe7, 0xf7, 0x0e, 0xf9, 0x44, 0x9b,
94162 - 0xb4, 0x4a, 0xd0, 0x36, 0xe1, 0x97, 0x3d, 0x70, 0xe8, 0xb1, 0xc1, 0x5d,
94163 - 0xbb, 0x77, 0xe1, 0x71, 0x77, 0xcc, 0x6c, 0x36, 0x38, 0xaf, 0x49, 0xd4,
94164 - 0xa2, 0x16, 0xb5, 0xa8, 0x45, 0x2d, 0x6a, 0x51, 0x8b, 0x5a, 0xd4, 0xa2,
94165 - 0x16, 0xb5, 0xa8, 0x45, 0x2d, 0x6a, 0x51, 0x8b, 0x5a, 0xd4, 0xa2, 0x16,
94166 - 0xb5, 0xa8, 0x45, 0x2d, 0x6a, 0x51, 0x8b, 0x5a, 0xd4, 0xa2, 0x16, 0xb5,
94167 - 0xa8, 0x45, 0x2d, 0x6a, 0x51, 0x8b, 0x5a, 0xd4, 0xa2, 0x16, 0xb5, 0xa8,
94168 - 0x45, 0x2d, 0x6a, 0x51, 0x8b, 0x5a, 0xd4, 0xa2, 0x16, 0xb5, 0xa8, 0x45,
94169 - 0x2d, 0x6a, 0x51, 0x8b, 0x5a, 0xd4, 0xfe, 0x3f, 0x5a, 0x4c, 0xc4, 0x64,
94170 - 0xbf, 0x29, 0xf8, 0x49, 0x5c, 0xcf, 0xa5, 0x0e, 0x16, 0x2c, 0x89, 0xc7,
94171 - 0x72, 0x6f, 0x3f, 0x3e, 0x6e, 0x89, 0xe4, 0xeb, 0xfd, 0xa9, 0x11, 0xf9,
94172 - 0xc4, 0xab, 0x24, 0x0c, 0xe1, 0xfc, 0x67, 0x72, 0xd7, 0x0f, 0x9f, 0xbf,
94173 - 0x2b, 0x7d, 0x6d, 0x2e, 0x26, 0x71, 0x33, 0xf7, 0xee, 0xa0, 0xb9, 0x53,
94174 - 0xe2, 0xdd, 0x58, 0xf3, 0x5c, 0xdf, 0xc4, 0x66, 0x69, 0x0f, 0x71, 0x79,
94175 - 0xde, 0x92, 0xed, 0xc9, 0x25, 0xbb, 0xa2, 0x8d, 0xf4, 0xbd, 0xa6, 0x15,
94176 - 0x9c, 0x1b, 0x5e, 0xde, 0xd0, 0x45, 0x07, 0xbe, 0x89, 0x7a, 0x5c, 0x1e,
94177 - 0x59, 0x6c, 0x95, 0x47, 0xe7, 0x36, 0x4a, 0x79, 0x4e, 0x4c, 0x3d, 0x97,
94178 - 0x94, 0x6f, 0x61, 0xee, 0x72, 0x0c, 0x70, 0xae, 0x94, 0x62, 0xb9, 0x8f,
94179 - 0xef, 0x2d, 0xd7, 0x08, 0x2f, 0xba, 0x9e, 0x5b, 0xb9, 0x77, 0xa2, 0xfe,
94180 - 0xe6, 0xbd, 0xe5, 0x3a, 0xe1, 0x08, 0x83, 0x77, 0xf5, 0x8f, 0xbc, 0xf3,
94181 - 0x7d, 0x09, 0xb9, 0xe0, 0x9a, 0xf2, 0x82, 0xfb, 0x32, 0xf6, 0x4c, 0x57,
94182 - 0x2a, 0xd2, 0x24, 0xe5, 0x93, 0x37, 0xbc, 0x98, 0x95, 0x4e, 0x61, 0x13,
94183 - 0x73, 0x44, 0xf0, 0xde, 0xc1, 0x7b, 0x07, 0xf3, 0x0b, 0x3f, 0xdf, 0x2c,
94184 - 0xad, 0x49, 0x39, 0xdf, 0xc7, 0x75, 0x5c, 0xc3, 0xb5, 0x8b, 0xed, 0xfe,
94185 - 0x3a, 0xc1, 0xba, 0xa2, 0xc4, 0x2c, 0x4f, 0x0a, 0xb6, 0x21, 0x23, 0x09,
94186 - 0xd1, 0x74, 0xab, 0x02, 0x3a, 0x7e, 0xd1, 0x26, 0xad, 0xc4, 0x55, 0xd1,
94187 - 0xf2, 0x2e, 0xfb, 0x10, 0xdf, 0x53, 0x1d, 0x3e, 0xae, 0x67, 0x81, 0xab,
94188 - 0x24, 0xaf, 0xbb, 0x0f, 0xcb, 0x5f, 0xb8, 0x63, 0xf2, 0x92, 0x3b, 0x01,
94189 - 0x9c, 0x0f, 0xc9, 0xab, 0xee, 0x7e, 0x79, 0xc5, 0x2d, 0xca, 0xcf, 0xdc,
94190 - 0x7d, 0xf2, 0xb2, 0x3b, 0x2a, 0x2f, 0xba, 0x79, 0xec, 0x97, 0xd1, 0x8a,
94191 - 0xce, 0xdd, 0x32, 0x7e, 0x92, 0x34, 0xa6, 0xaf, 0x41, 0x36, 0xf2, 0x98,
94192 - 0xdd, 0x67, 0xea, 0xa2, 0x61, 0xcf, 0xf4, 0x6b, 0x22, 0x8f, 0x4a, 0x3e,
94193 - 0x31, 0x2c, 0x73, 0x6e, 0x97, 0x56, 0x38, 0xd9, 0xa9, 0x8d, 0x9c, 0x24,
94194 - 0x2d, 0x9e, 0x8c, 0xdb, 0xe9, 0x54, 0x21, 0x96, 0x36, 0x47, 0x62, 0x92,
94195 - 0xdf, 0x03, 0xb9, 0x55, 0x9d, 0xa4, 0xe4, 0x4d, 0xc9, 0x1f, 0xb5, 0x0c,
94196 - 0xc8, 0x53, 0x93, 0x58, 0x8e, 0x7c, 0x6e, 0xe1, 0x1c, 0x5a, 0x9b, 0x2c,
94197 - 0xd4, 0x6c, 0x29, 0x3b, 0xf3, 0x5a, 0x39, 0xa1, 0x51, 0x04, 0x18, 0x0f,
94198 - 0x60, 0xfc, 0x67, 0xc1, 0xf8, 0x4b, 0x52, 0x3e, 0x25, 0xf9, 0xc9, 0x59,
94199 - 0xcf, 0x2b, 0xd8, 0x7f, 0x1c, 0xcc, 0x0d, 0x63, 0x4e, 0x97, 0xd8, 0x8f,
94200 - 0x38, 0x37, 0x1b, 0xcc, 0x51, 0x1e, 0x9e, 0x8c, 0xd8, 0x14, 0x23, 0xe8,
94201 - 0x35, 0x8b, 0xe8, 0x9b, 0xd1, 0x73, 0x8f, 0x8d, 0x9b, 0xfc, 0xff, 0x03,
94202 - 0xe2, 0xf9, 0x26, 0xf0, 0x6c, 0x83, 0x66, 0x89, 0x7f, 0x36, 0x77, 0xf4,
94203 - 0xe0, 0x3f, 0xf4, 0xad, 0x8d, 0xf5, 0xdc, 0x7b, 0x52, 0xa8, 0x69, 0x4a,
94204 - 0x57, 0x34, 0x3c, 0xf7, 0xd4, 0x9f, 0xea, 0xf4, 0xf5, 0xc2, 0x69, 0x97,
94205 - 0x56, 0xc8, 0xc9, 0x21, 0xfd, 0x29, 0xd0, 0xbf, 0x49, 0xb6, 0xfc, 0x90,
94206 - 0x3c, 0xf4, 0xa7, 0x74, 0xc9, 0xa7, 0x0d, 0xb1, 0x65, 0xd1, 0x35, 0xb4,
94207 - 0x11, 0x27, 0x2f, 0x7a, 0xce, 0x4a, 0x96, 0x45, 0x97, 0x52, 0x22, 0x2f,
94208 - 0xcf, 0x64, 0xd3, 0xc3, 0x15, 0x49, 0x49, 0x79, 0xc8, 0x96, 0x65, 0x17,
94209 - 0x90, 0x89, 0x8a, 0x5c, 0xcd, 0xa6, 0xed, 0xcb, 0xb2, 0x51, 0x56, 0x4c,
94210 - 0x5b, 0x4e, 0xbb, 0x71, 0x79, 0xeb, 0xe4, 0x3e, 0xf9, 0x96, 0xc3, 0x73,
94211 - 0x92, 0xfe, 0x26, 0x79, 0x5a, 0x96, 0xb2, 0x4f, 0x5f, 0x5b, 0xb2, 0x8f,
94212 - 0xb7, 0x49, 0x3b, 0x75, 0xb0, 0xd6, 0xee, 0xd3, 0xfd, 0x15, 0xf0, 0x96,
94213 - 0x87, 0x6c, 0xdb, 0x21, 0x33, 0x43, 0xf1, 0x55, 0x78, 0xb0, 0x13, 0x3d,
94214 - 0xd7, 0xfd, 0xfd, 0x16, 0xe8, 0x83, 0x2d, 0x5a, 0x48, 0x63, 0x93, 0x14,
94215 - 0xba, 0xb8, 0xe6, 0x25, 0xe0, 0xc0, 0xfb, 0x55, 0xda, 0x6f, 0xd3, 0x0a,
94216 - 0xa7, 0xda, 0xc5, 0xf8, 0xd1, 0x9d, 0x38, 0x4f, 0x43, 0x1e, 0x19, 0xf2,
94217 - 0xbc, 0xaf, 0xdb, 0x46, 0x6a, 0x42, 0x72, 0xa4, 0x5d, 0x36, 0x1f, 0xdf,
94218 - 0x2a, 0x73, 0x66, 0x5c, 0x12, 0xc7, 0xc3, 0xbd, 0x5a, 0x82, 0xf3, 0xf9,
94219 - 0x32, 0xf1, 0xa7, 0x52, 0xfa, 0xa6, 0x60, 0x1c, 0xd2, 0x34, 0x8a, 0x33,
94220 - 0xea, 0x35, 0x7b, 0xf4, 0x21, 0x2d, 0xaf, 0xfe, 0x8f, 0x6a, 0x2c, 0x18,
94221 - 0xef, 0xd2, 0xbe, 0x6a, 0x74, 0x89, 0x61, 0xcd, 0x43, 0xae, 0x86, 0x5c,
94222 - 0x74, 0xc2, 0xf9, 0xb8, 0xf8, 0x70, 0x94, 0xb3, 0x0c, 0xae, 0xc9, 0x59,
94223 - 0x06, 0x7b, 0xea, 0x4f, 0x07, 0x38, 0xf3, 0x01, 0xec, 0x06, 0xc9, 0x27,
94224 - 0xdb, 0x78, 0xa6, 0x01, 0xec, 0x75, 0xf9, 0xce, 0x50, 0xfa, 0x0c, 0xff,
94225 - 0x57, 0x6b, 0x6d, 0x0d, 0xdf, 0xdb, 0x32, 0xef, 0xaa, 0x35, 0xc9, 0xfb,
94226 - 0x70, 0xb6, 0xa5, 0xe4, 0x1d, 0xe6, 0x82, 0x1e, 0xd3, 0xf2, 0x09, 0xe2,
94227 - 0x6a, 0x96, 0xc7, 0x13, 0xbd, 0x18, 0x6b, 0x52, 0xfe, 0x12, 0xf5, 0xf5,
94228 - 0x13, 0xf1, 0xe7, 0x39, 0x97, 0x3e, 0xda, 0xab, 0x1f, 0x03, 0x7d, 0x94,
94229 - 0x41, 0x3a, 0x29, 0x10, 0x7e, 0x79, 0xe8, 0x36, 0xf0, 0x67, 0xa2, 0x0f,
94230 - 0xf9, 0xdf, 0x2c, 0xf9, 0x22, 0xe9, 0x57, 0x76, 0x0a, 0x39, 0x27, 0xb1,
94231 - 0xdf, 0xdd, 0xb0, 0xc9, 0xf5, 0xf6, 0x0a, 0x1b, 0x6d, 0xa7, 0xad, 0x7e,
94232 - 0x11, 0x3c, 0xa7, 0x33, 0x22, 0x16, 0xe4, 0x95, 0x94, 0x66, 0x6b, 0x1a,
94233 - 0x3c, 0x51, 0x2f, 0xb7, 0x61, 0x7e, 0xc3, 0xc7, 0x79, 0xc5, 0x7a, 0x38,
94234 - 0xf7, 0x41, 0x20, 0xcb, 0x7d, 0x32, 0xe1, 0xec, 0x57, 0x3c, 0x57, 0xf5,
94235 - 0xcb, 0x92, 0xef, 0xee, 0x35, 0xa7, 0x40, 0x6f, 0xc1, 0x48, 0xcf, 0x55,
94236 - 0x24, 0x29, 0x0b, 0xf0, 0x13, 0x2f, 0xc2, 0xe6, 0x5f, 0x71, 0x53, 0xb0,
94237 - 0xaf, 0xbc, 0x3c, 0xea, 0xe4, 0x64, 0xe2, 0x14, 0x6d, 0x2c, 0x9d, 0x29,
94238 - 0xc4, 0x72, 0x32, 0xef, 0xa4, 0x33, 0x0b, 0xd0, 0xbd, 0x05, 0xc7, 0xf3,
94239 - 0xa6, 0xec, 0xfe, 0xd4, 0x28, 0x30, 0x5e, 0x74, 0x76, 0x24, 0x27, 0x20,
94240 - 0xc8, 0x25, 0x2b, 0x25, 0x4b, 0x6e, 0x06, 0x3a, 0x86, 0xf7, 0xae, 0x85,
94241 - 0x7e, 0x00, 0x3a, 0x9e, 0x85, 0x7d, 0x93, 0x16, 0x53, 0x16, 0xfb, 0x20,
94242 - 0x3b, 0x47, 0x07, 0x2e, 0x4d, 0xf2, 0xfb, 0x6f, 0x40, 0xbe, 0x21, 0xdf,
94243 - 0x77, 0x81, 0xb6, 0x04, 0x70, 0x92, 0xae, 0xdb, 0xa4, 0xda, 0x05, 0xf9,
94244 - 0x0d, 0x25, 0x94, 0x5d, 0x16, 0x3a, 0xb7, 0x4a, 0xe1, 0x8e, 0x66, 0xbc,
94245 - 0xef, 0xc2, 0x98, 0xf2, 0x6f, 0xc1, 0x1c, 0xdf, 0xff, 0x4b, 0x60, 0x5f,
94246 - 0x4d, 0xeb, 0xc6, 0x57, 0xd1, 0xb7, 0xcb, 0x36, 0x8b, 0xbd, 0x89, 0xfe,
94247 - 0x9f, 0xd1, 0x77, 0xa2, 0xef, 0xc5, 0x5e, 0xe7, 0x21, 0x43, 0xca, 0x0f,
94248 - 0xcf, 0x0b, 0x5c, 0xb3, 0x3d, 0xd8, 0x97, 0x78, 0xdb, 0x81, 0x67, 0x53,
94249 - 0xb0, 0x57, 0x3b, 0xc6, 0xad, 0xc1, 0x5e, 0x16, 0x68, 0x8e, 0x29, 0x19,
94250 - 0x16, 0xac, 0xf8, 0xba, 0xb1, 0x86, 0x3e, 0x0e, 0xdc, 0x84, 0xd7, 0xe5,
94251 - 0x4a, 0x57, 0x17, 0x9e, 0xb9, 0x27, 0x61, 0xf8, 0x1e, 0xbd, 0x4b, 0xfc,
94252 - 0x1c, 0xe7, 0xe5, 0x09, 0x07, 0xfe, 0x89, 0xfa, 0xe6, 0x52, 0x8e, 0xbb,
94253 - 0x65, 0x02, 0xbc, 0x8f, 0x3b, 0xe9, 0x99, 0xaa, 0xee, 0x79, 0x7a, 0xd6,
94254 - 0x30, 0xab, 0x92, 0x86, 0x1d, 0x8f, 0xc9, 0x38, 0xe4, 0x77, 0xda, 0x89,
94255 - 0xcb, 0x45, 0x65, 0x7b, 0xe4, 0xe9, 0x21, 0xc8, 0x05, 0xf1, 0xa4, 0x8b,
94256 - 0xf6, 0x49, 0x9b, 0x82, 0xfc, 0x8a, 0xa6, 0x5c, 0xca, 0xd2, 0x96, 0xb3,
94257 - 0xb2, 0xbc, 0x6a, 0xcb, 0x15, 0xd8, 0x32, 0xed, 0xb8, 0x02, 0x7b, 0xf6,
94258 - 0xf5, 0xfa, 0x41, 0xd9, 0x06, 0xbd, 0x4e, 0x62, 0x3f, 0xea, 0xf5, 0xb3,
94259 - 0xd0, 0x6b, 0xc8, 0xd4, 0x86, 0xae, 0x9b, 0xd4, 0x89, 0x6f, 0xc3, 0xa7,
94260 - 0x81, 0xdf, 0x44, 0xf0, 0xbc, 0xfc, 0x5d, 0x29, 0x9c, 0x6a, 0x05, 0xdd,
94261 - 0x7b, 0xdb, 0x29, 0xb3, 0xf2, 0x32, 0x7f, 0xa1, 0x2e, 0x3e, 0x05, 0xf9,
94262 - 0xc1, 0x8f, 0x2a, 0x1d, 0x04, 0x6f, 0xd9, 0x3d, 0x80, 0x19, 0xc6, 0x39,
94263 - 0xb7, 0x02, 0x3f, 0x69, 0xbc, 0x15, 0x1c, 0xdf, 0x83, 0xee, 0x2c, 0xf5,
94264 - 0x15, 0xf3, 0x0b, 0xe1, 0x79, 0xb7, 0xa9, 0x3d, 0xcb, 0x43, 0xad, 0x01,
94265 - 0x7f, 0x94, 0x03, 0xf5, 0x3e, 0x09, 0xbd, 0xd5, 0x64, 0x5c, 0xe9, 0x6e,
94266 - 0x5e, 0xc9, 0x61, 0xde, 0xa1, 0xfe, 0x02, 0x87, 0x4d, 0x19, 0x98, 0x72,
94267 - 0xbf, 0x82, 0x4f, 0xae, 0xd9, 0x77, 0x37, 0x69, 0xe7, 0x78, 0x83, 0xf4,
94268 - 0x28, 0x1f, 0xd4, 0x1d, 0xe8, 0x76, 0x13, 0x6c, 0x9f, 0xef, 0x1e, 0x92,
94269 - 0xc7, 0xdc, 0x61, 0x9c, 0x43, 0x52, 0x0e, 0xba, 0xdd, 0xf2, 0xfb, 0xee,
94270 - 0x46, 0xb9, 0xdc, 0x09, 0xba, 0x56, 0x6d, 0xec, 0x6e, 0xf9, 0x03, 0xc6,
94271 - 0x3c, 0xf5, 0x0c, 0x3f, 0xa9, 0xdf, 0x05, 0x1a, 0x68, 0x4f, 0xb4, 0x2b,
94272 - 0xc2, 0xc5, 0xa4, 0xa4, 0xf6, 0xfc, 0x89, 0xef, 0xdb, 0x80, 0x77, 0xae,
94273 - 0x93, 0xf6, 0x4b, 0xda, 0x8c, 0xc0, 0x66, 0xd3, 0x66, 0x49, 0xc8, 0x33,
94274 - 0x69, 0xe5, 0x73, 0xa3, 0x2c, 0xd8, 0x37, 0xca, 0x20, 0xc4, 0x13, 0xda,
94275 - 0xe5, 0xa8, 0xe4, 0x5d, 0xf6, 0xf4, 0x97, 0x88, 0x91, 0x0e, 0x62, 0xa4,
94276 - 0x83, 0xd8, 0x08, 0x5b, 0x78, 0xc5, 0x41, 0x6c, 0x74, 0x10, 0x1b, 0xe1,
94277 - 0xcf, 0x5e, 0x72, 0x10, 0x1f, 0xa1, 0x43, 0x2f, 0x38, 0x8c, 0xeb, 0xdf,
94278 - 0x46, 0x4c, 0x35, 0xe4, 0x99, 0x9a, 0xc8, 0x91, 0x5a, 0x1a, 0xd4, 0xa5,
94279 - 0x87, 0x3f, 0x90, 0xfe, 0xcc, 0x07, 0x92, 0xb6, 0x2f, 0xe2, 0xf7, 0x96,
94280 - 0xe0, 0x9d, 0xca, 0x11, 0xf0, 0xbe, 0x1e, 0xe6, 0x13, 0x38, 0x7f, 0x8b,
94281 - 0x39, 0x83, 0x3f, 0x0f, 0x97, 0x88, 0xb8, 0x41, 0x9b, 0x1e, 0x93, 0xf9,
94282 - 0x59, 0xda, 0xf2, 0xed, 0x38, 0x8b, 0x4e, 0x99, 0xb2, 0xfc, 0x71, 0xc1,
94283 - 0xbe, 0xc3, 0x1c, 0xa5, 0xee, 0x98, 0x31, 0xd0, 0x76, 0x1b, 0x7e, 0x29,
94284 - 0xc4, 0xda, 0x3f, 0xd2, 0x0a, 0x0b, 0x71, 0xc4, 0x56, 0xc6, 0x5b, 0xc9,
94285 - 0xfb, 0x7a, 0x74, 0xc3, 0x1b, 0x5f, 0x5d, 0xd3, 0x0f, 0xfd, 0x86, 0xdc,
94286 - 0x13, 0x09, 0xc0, 0xcc, 0x6a, 0x23, 0xcb, 0x6f, 0xfb, 0x76, 0x92, 0xe5,
94287 - 0xf8, 0x46, 0x60, 0x7b, 0xdc, 0x1f, 0x63, 0x97, 0x78, 0xf9, 0x4c, 0x9c,
94288 - 0x97, 0x91, 0x1f, 0x24, 0x91, 0x17, 0x24, 0xe0, 0x7b, 0x98, 0x73, 0x74,
94289 - 0x23, 0x3f, 0xf0, 0xbc, 0x17, 0x6d, 0xcf, 0x7b, 0x07, 0xbf, 0x7f, 0xb7,
94290 - 0x57, 0x79, 0x40, 0xab, 0x68, 0xa3, 0x6e, 0x4a, 0x46, 0xdd, 0x9f, 0xb6,
94291 - 0xfb, 0x72, 0x8c, 0xcb, 0xa4, 0x93, 0x90, 0x29, 0xa7, 0xa6, 0xdd, 0xb7,
94292 - 0x3c, 0xad, 0x15, 0x97, 0x67, 0xb0, 0xaf, 0x81, 0x39, 0xa9, 0x54, 0xed,
94293 - 0x33, 0xda, 0x88, 0x7b, 0x54, 0xbb, 0x7f, 0xb9, 0x5d, 0xd9, 0x79, 0xd5,
94294 - 0x61, 0xce, 0x70, 0x5d, 0xe5, 0x2e, 0x05, 0x2b, 0x6d, 0xfe, 0x2e, 0x14,
94295 - 0xaf, 0x50, 0x23, 0xdd, 0xcd, 0x01, 0xcd, 0xb0, 0xc3, 0x9c, 0x77, 0xb8,
94296 - 0x90, 0xb5, 0x60, 0x8b, 0xa4, 0x51, 0xcd, 0x5d, 0xf0, 0xe9, 0x3e, 0xad,
94297 - 0x15, 0x96, 0xdb, 0xb4, 0x91, 0x53, 0x8c, 0xc7, 0xd2, 0x1d, 0x13, 0xae,
94298 - 0xdb, 0x01, 0x7b, 0xad, 0x63, 0x0f, 0xe6, 0x5b, 0x94, 0x2d, 0xe8, 0x86,
94299 - 0x0e, 0xbf, 0x04, 0x7a, 0x5e, 0x54, 0xf9, 0x0f, 0xf9, 0x4b, 0xe1, 0xac,
94300 - 0x42, 0xfe, 0x3c, 0xef, 0xaf, 0xed, 0x90, 0xfe, 0x74, 0x2a, 0xaf, 0x87,
94301 - 0xfc, 0x7a, 0xde, 0xbf, 0xd9, 0xe4, 0x99, 0x3c, 0x79, 0xde, 0x0b, 0x76,
94302 - 0x02, 0xf4, 0x7b, 0x17, 0x74, 0xab, 0x06, 0x7e, 0x18, 0xdb, 0x29, 0xf3,
94303 - 0x69, 0xf0, 0x71, 0x14, 0x3c, 0x9e, 0x06, 0x7f, 0x33, 0xa0, 0xe5, 0x37,
94304 - 0xed, 0xd9, 0x98, 0x4b, 0x4a, 0x8a, 0xb2, 0x2e, 0x2f, 0x32, 0xa7, 0x64,
94305 - 0x1e, 0x69, 0x4a, 0x69, 0x31, 0x5c, 0x1f, 0xea, 0xc3, 0x01, 0xd9, 0xeb,
94306 - 0x74, 0x42, 0x3e, 0x94, 0xe7, 0x35, 0xd0, 0x4b, 0x9f, 0x5f, 0xcd, 0xe8,
94307 - 0x08, 0x80, 0x65, 0x1b, 0xb1, 0x5e, 0x46, 0x94, 0x2e, 0x2c, 0x5a, 0x92,
94308 - 0x2f, 0xdb, 0x26, 0xed, 0x36, 0x55, 0xb6, 0x2b, 0xc8, 0x0c, 0x7c, 0x39,
94309 - 0x8e, 0xd4, 0x0c, 0xbc, 0xe3, 0x58, 0x60, 0xf3, 0xa1, 0x6c, 0x0d, 0xd8,
94310 - 0x5d, 0x28, 0xf3, 0x70, 0xee, 0xc1, 0x0e, 0xfa, 0xcc, 0x79, 0xf7, 0x0b,
94311 - 0xc0, 0x41, 0xbc, 0xbf, 0x09, 0x47, 0x1c, 0x31, 0x84, 0x78, 0xe2, 0x72,
94312 - 0xc6, 0x21, 0x3c, 0xf3, 0x8b, 0xb8, 0xb4, 0x22, 0x26, 0x6f, 0xc8, 0x89,
94313 - 0xf6, 0xf9, 0x1d, 0x69, 0x73, 0x31, 0x16, 0x93, 0x63, 0x09, 0xb9, 0xc3,
94314 - 0x60, 0x00, 0xd8, 0xec, 0x67, 0xea, 0x85, 0x19, 0x0d, 0xba, 0xdc, 0x26,
94315 - 0x93, 0x03, 0x69, 0x73, 0x1e, 0x7b, 0xe8, 0xd8, 0xe3, 0x6b, 0x9c, 0xaf,
94316 - 0xfd, 0x87, 0x57, 0x4a, 0xec, 0x84, 0x9d, 0x48, 0xdc, 0xc8, 0x19, 0x83,
94317 - 0x53, 0xb5, 0x03, 0xc2, 0xfc, 0x6a, 0x72, 0x60, 0x03, 0xec, 0xbc, 0x77,
94318 - 0x78, 0xaf, 0x30, 0x97, 0x8f, 0x0f, 0x8e, 0x5b, 0x3e, 0x5d, 0x23, 0xb0,
94319 - 0xeb, 0x49, 0xe4, 0x79, 0x7b, 0xeb, 0xcc, 0x01, 0x8c, 0xc1, 0xde, 0xba,
94320 - 0x21, 0x47, 0x60, 0xaf, 0xcd, 0xd0, 0x9f, 0x15, 0xa5, 0xcb, 0x26, 0x64,
94321 - 0x4d, 0xdf, 0x3a, 0x0c, 0xdc, 0xef, 0x40, 0x6e, 0x16, 0x62, 0x67, 0x37,
94322 - 0xf2, 0xd9, 0x0c, 0xce, 0x33, 0x85, 0xd8, 0xd7, 0xa8, 0xd7, 0x12, 0xdf,
94323 - 0x0a, 0xb8, 0x57, 0x76, 0x32, 0x2f, 0xf3, 0xbc, 0x07, 0xac, 0xf4, 0xb3,
94324 - 0xe4, 0x65, 0xca, 0x91, 0x7c, 0xd5, 0x56, 0xbe, 0x10, 0x3a, 0x9b, 0x62,
94325 - 0x3e, 0x07, 0xfd, 0x83, 0x4e, 0x16, 0x39, 0x5e, 0xd5, 0xc1, 0xe4, 0xa4,
94326 - 0xcc, 0x43, 0x76, 0x62, 0x16, 0xb2, 0x84, 0x0d, 0xe1, 0x5a, 0x02, 0xdd,
94327 - 0xf6, 0xbc, 0x18, 0x74, 0x77, 0x3c, 0x4b, 0x38, 0xa9, 0x28, 0x9b, 0x83,
94328 - 0xcc, 0x26, 0xdd, 0x5d, 0x1d, 0x7e, 0x3e, 0x09, 0x5f, 0x99, 0xe0, 0x5e,
94329 - 0x9f, 0x85, 0x0e, 0x77, 0x23, 0x86, 0x78, 0x1e, 0x6c, 0x38, 0xa1, 0x0b,
94330 - 0x75, 0x18, 0xf6, 0xe2, 0xf2, 0x5d, 0x1b, 0xe6, 0xc5, 0x9c, 0x84, 0x4f,
94331 - 0x2b, 0x99, 0x9e, 0x77, 0x0f, 0x68, 0xa9, 0xda, 0x1d, 0x58, 0xd7, 0x24,
94332 - 0x08, 0x7b, 0xa6, 0xbf, 0xdf, 0x46, 0x15, 0x3b, 0x30, 0x6e, 0xc7, 0x7e,
94333 - 0x9b, 0x98, 0x7b, 0x4e, 0xd2, 0x16, 0xb2, 0xb4, 0x7d, 0x23, 0xf0, 0xe7,
94334 - 0x6f, 0x82, 0x4e, 0xae, 0x51, 0x70, 0xf1, 0xa6, 0x5c, 0x56, 0x96, 0x6a,
94335 - 0xdb, 0x65, 0x6e, 0x3f, 0xf7, 0xe8, 0xa6, 0x1d, 0x22, 0xfe, 0xf3, 0x99,
94336 - 0x74, 0xd3, 0x8f, 0x74, 0x06, 0x63, 0xed, 0x73, 0xfe, 0x1e, 0x62, 0x32,
94337 - 0xdf, 0x1d, 0x51, 0xf4, 0x8a, 0x7e, 0xd1, 0xde, 0xe8, 0xc7, 0xa8, 0x5c,
94338 - 0xbb, 0x76, 0x0f, 0x72, 0xf0, 0xbd, 0xbb, 0xa9, 0x03, 0x86, 0x5c, 0xb2,
94339 - 0x3c, 0xef, 0x92, 0xdd, 0x04, 0xfe, 0x74, 0x69, 0xb2, 0x8e, 0x9b, 0xd2,
94340 - 0x0a, 0x99, 0x3b, 0x5a, 0x20, 0x97, 0x36, 0x25, 0x97, 0x49, 0x15, 0xf7,
94341 - 0xde, 0xc5, 0xd9, 0x70, 0x6d, 0x45, 0xc5, 0x97, 0x82, 0x5a, 0xc7, 0x35,
94342 - 0x3c, 0xd3, 0x77, 0x91, 0x73, 0x1f, 0xc3, 0xda, 0x98, 0xb4, 0x28, 0xdd,
94343 - 0x66, 0xfc, 0x27, 0xaf, 0xd2, 0xe1, 0xe3, 0x61, 0xac, 0xa5, 0x0e, 0x87,
94344 - 0xfc, 0x8f, 0x06, 0x3c, 0x12, 0xaf, 0x0d, 0xbc, 0x6d, 0xaa, 0xce, 0x28,
94345 - 0xfb, 0xe7, 0xd7, 0x11, 0x53, 0xf2, 0x40, 0x5d, 0x94, 0x0b, 0x7d, 0x21,
94346 - 0x41, 0x43, 0xba, 0x9f, 0xc1, 0x3e, 0xa4, 0x61, 0x13, 0xf2, 0x5e, 0xd1,
94347 - 0xaa, 0xe4, 0xcb, 0x0c, 0xf7, 0x11, 0x3d, 0x96, 0x6b, 0x91, 0x11, 0x68,
94348 - 0x5d, 0xd5, 0xb1, 0xcc, 0x07, 0xa0, 0x7b, 0x5f, 0x07, 0x8f, 0x85, 0x19,
94349 - 0xfa, 0xaa, 0x2f, 0x61, 0xdd, 0x4a, 0x5a, 0xf7, 0xb7, 0x95, 0x23, 0x0e,
94350 - 0x65, 0xfa, 0x0e, 0x64, 0xaa, 0x77, 0x35, 0x4b, 0x87, 0x14, 0x91, 0x4f,
94351 - 0xcd, 0x0f, 0x83, 0xaf, 0x81, 0x36, 0x89, 0xed, 0xa2, 0xaf, 0x42, 0xed,
94352 - 0x93, 0x58, 0x41, 0x60, 0xb8, 0xee, 0xe9, 0x3b, 0xb1, 0x7e, 0x20, 0x01,
94353 - 0xf9, 0x52, 0x66, 0x7a, 0x00, 0x47, 0x18, 0x14, 0x4a, 0x66, 0xa1, 0xb3,
94354 - 0x59, 0x88, 0x9b, 0xef, 0xfa, 0x93, 0xa6, 0x70, 0x1e, 0x3e, 0xbd, 0xc8,
94355 - 0xb5, 0xa4, 0xd9, 0x5f, 0xd3, 0x64, 0x85, 0xb2, 0xfe, 0x2b, 0xf8, 0xa7,
94356 - 0x5f, 0x79, 0x7b, 0x87, 0xc2, 0xf7, 0xe4, 0x87, 0x7c, 0xe1, 0x0c, 0x41,
94357 - 0xd3, 0xe6, 0x9c, 0x25, 0x83, 0xd3, 0xa2, 0x15, 0x90, 0x7b, 0x50, 0x47,
94358 - 0x7a, 0x86, 0xd2, 0x95, 0x94, 0xbe, 0x0d, 0xbc, 0x1a, 0xb2, 0x7f, 0x88,
94359 - 0xfc, 0x6e, 0x0d, 0xf2, 0x8e, 0x46, 0x9e, 0x3b, 0x02, 0x9e, 0xd5, 0x7e,
94360 - 0xc3, 0x79, 0x7d, 0x8d, 0xf7, 0xd1, 0x99, 0x70, 0x5f, 0x03, 0xb6, 0xbc,
94361 - 0x82, 0x9a, 0x87, 0xfb, 0x93, 0x9e, 0x1b, 0x9e, 0x6e, 0x59, 0x95, 0x1e,
94362 - 0xfd, 0x57, 0xde, 0xfd, 0x43, 0x9a, 0xca, 0xd3, 0x74, 0xe4, 0x8c, 0xfa,
94363 - 0x10, 0x78, 0x1d, 0xe2, 0x79, 0xe9, 0x72, 0xff, 0x6e, 0xe2, 0x3b, 0x42,
94364 - 0xde, 0x80, 0xb3, 0xd5, 0xaf, 0x61, 0x86, 0xc2, 0x3d, 0x1a, 0xf5, 0x27,
94365 - 0xc4, 0x49, 0x5c, 0x84, 0xe1, 0x99, 0xd0, 0xdf, 0x4a, 0xbc, 0x60, 0xc7,
94366 - 0x83, 0xb3, 0x0e, 0xd7, 0x89, 0x66, 0x58, 0xeb, 0xd7, 0xc1, 0x68, 0x1f,
94367 - 0xa4, 0xde, 0xf5, 0x04, 0x76, 0x16, 0xea, 0x21, 0xf7, 0x64, 0x7f, 0x2b,
94368 - 0x9d, 0xe5, 0x3a, 0xae, 0x27, 0x3c, 0x61, 0xe0, 0x33, 0xe0, 0x83, 0x7e,
94369 - 0x06, 0xdb, 0x78, 0xf9, 0x26, 0x5f, 0xce, 0xd8, 0x4e, 0x1f, 0x63, 0xaf,
94370 - 0xf7, 0xe7, 0xac, 0x7d, 0xf0, 0xac, 0xc3, 0x7e, 0x1b, 0xfd, 0x3a, 0xe7,
94371 - 0x50, 0x4f, 0x2c, 0x8e, 0xa2, 0xb7, 0x64, 0xed, 0x1e, 0x80, 0x7e, 0x3e,
94372 - 0xac, 0xe7, 0xdb, 0x4a, 0x46, 0x8e, 0x35, 0xbd, 0x14, 0xab, 0xb5, 0xc3,
94373 - 0x88, 0xc9, 0x52, 0xb9, 0x4d, 0xd5, 0xc6, 0x6d, 0xc3, 0x85, 0x2c, 0xe6,
94374 - 0xea, 0x8c, 0xcb, 0x30, 0x7f, 0xac, 0x43, 0x6c, 0x88, 0xeb, 0xd3, 0xf1,
94375 - 0xca, 0xed, 0x39, 0xda, 0x49, 0x4a, 0x52, 0xf5, 0x6b, 0x88, 0x79, 0xc8,
94376 - 0x1f, 0x95, 0x0e, 0x7d, 0xf1, 0x76, 0xd2, 0x5f, 0x45, 0xec, 0x32, 0x72,
94377 - 0x62, 0xe8, 0xb9, 0xe6, 0xf8, 0x64, 0xb6, 0x0d, 0xb1, 0x7e, 0x6c, 0xbb,
94378 - 0x7e, 0x6e, 0xdf, 0xf6, 0xd8, 0xb9, 0xae, 0x52, 0x53, 0xae, 0xb2, 0x5d,
94379 - 0x9f, 0x86, 0x2f, 0xaf, 0x89, 0x8e, 0x98, 0x8a, 0x1a, 0x01, 0xe3, 0x73,
94380 - 0x0f, 0x3c, 0xa0, 0xe7, 0x62, 0x52, 0x4e, 0xc8, 0x93, 0x8b, 0x59, 0xf8,
94381 - 0xf5, 0x5a, 0x3a, 0x55, 0x94, 0x27, 0xa5, 0x5a, 0x3b, 0x24, 0x93, 0xb5,
94382 - 0xf0, 0xde, 0x80, 0x77, 0x06, 0x49, 0xe5, 0xbf, 0xe8, 0x5f, 0x27, 0x03,
94383 - 0xda, 0x41, 0x73, 0x7e, 0x84, 0x31, 0x3a, 0x4b, 0xdf, 0x7d, 0x0d, 0x3a,
94384 - 0xd1, 0x12, 0xd4, 0xda, 0xbe, 0xfe, 0x19, 0xb9, 0x8f, 0x30, 0x47, 0xfd,
94385 - 0xdb, 0xb0, 0x7a, 0x6e, 0x7b, 0x4e, 0xfd, 0x89, 0x8a, 0xa9, 0x4b, 0x36,
94386 - 0x9f, 0x09, 0xf3, 0xf6, 0xe0, 0x94, 0x75, 0xdd, 0x64, 0x6d, 0x70, 0xc1,
94387 - 0x21, 0x3e, 0x53, 0x9d, 0xb5, 0x91, 0xbb, 0x8c, 0xb5, 0xad, 0xa4, 0x0b,
94388 - 0xcd, 0xc0, 0x3c, 0xf6, 0x77, 0x9a, 0x83, 0x71, 0xb8, 0xf6, 0xb5, 0x86,
94389 - 0xb5, 0x9c, 0x63, 0x4f, 0xdc, 0xd8, 0xa3, 0xe1, 0xce, 0xe4, 0x82, 0x9b,
94390 - 0x51, 0x35, 0x7b, 0xc1, 0x55, 0xb9, 0x02, 0x6a, 0x74, 0xe8, 0x93, 0xba,
94391 - 0x43, 0x81, 0x3f, 0x72, 0xff, 0xce, 0xf4, 0xcf, 0x9d, 0xfe, 0x63, 0x45,
94392 - 0x18, 0xdf, 0xa8, 0x6f, 0x53, 0xca, 0x4f, 0xbd, 0xd9, 0x70, 0x17, 0xf0,
94393 - 0x26, 0xfc, 0xd2, 0x9d, 0x9b, 0xfd, 0x9a, 0xc6, 0x0c, 0x7c, 0x5a, 0xab,
94394 - 0xca, 0x53, 0x7c, 0x9f, 0x96, 0x6a, 0x80, 0x4d, 0xf1, 0xde, 0xa0, 0xc3,
94395 - 0xaf, 0xbd, 0x7f, 0x2b, 0x58, 0xc3, 0xfc, 0xc1, 0x32, 0x99, 0x3b, 0xf8,
94396 - 0xb2, 0xf0, 0x9e, 0x59, 0x1d, 0x27, 0x4a, 0x01, 0xbe, 0xa6, 0xe0, 0xdd,
94397 - 0x5b, 0x6d, 0x3e, 0x4d, 0xe1, 0xda, 0x3f, 0x0d, 0xee, 0xa6, 0x94, 0x2f,
94398 - 0xcc, 0x03, 0x16, 0x3c, 0xa4, 0x4a, 0x3a, 0xf4, 0x66, 0xa4, 0xee, 0xcb,
94399 - 0x1b, 0xf1, 0x8e, 0xf7, 0x4f, 0x8a, 0xb6, 0x0b, 0x2a, 0xe7, 0x68, 0xe4,
94400 - 0x3f, 0x4f, 0xbe, 0xf3, 0x06, 0x69, 0x74, 0xc7, 0xb0, 0x56, 0x0e, 0xf8,
94401 - 0x77, 0x14, 0xa6, 0x4c, 0x98, 0xfd, 0xe6, 0x24, 0xf1, 0x26, 0x04, 0xf8,
94402 - 0x90, 0x97, 0xe4, 0xc2, 0x33, 0xfc, 0x26, 0xf7, 0x06, 0xde, 0x8d, 0x1c,
94403 - 0xa3, 0xff, 0x66, 0x40, 0xcb, 0x8f, 0x03, 0x79, 0x85, 0xef, 0x7f, 0xb1,
94404 - 0xf9, 0xe6, 0xf1, 0x3d, 0xb7, 0x07, 0xf2, 0xc4, 0xf3, 0xa1, 0x5f, 0x43,
94405 - 0x13, 0xf5, 0xfd, 0x34, 0xf0, 0xa8, 0x18, 0x5c, 0xd1, 0x73, 0x88, 0xf9,
94406 - 0x59, 0x64, 0x34, 0x35, 0xd8, 0xb4, 0x20, 0xf6, 0xbb, 0x69, 0xbb, 0x84,
94407 - 0x55, 0x1f, 0xd5, 0xe8, 0x57, 0xaf, 0xc3, 0xaf, 0xf2, 0xac, 0x3f, 0x96,
94408 - 0xa9, 0x5a, 0xaf, 0xdd, 0xac, 0xa9, 0xfc, 0x3a, 0x73, 0x5a, 0xfa, 0xed,
94409 - 0xd3, 0xc8, 0x3d, 0x50, 0xa3, 0xa5, 0x8e, 0x08, 0x65, 0x7e, 0x5d, 0x76,
94410 - 0xa8, 0x9c, 0xe0, 0x63, 0xb1, 0x20, 0x93, 0x22, 0xea, 0x04, 0x7d, 0xe8,
94411 - 0x5f, 0x3d, 0x95, 0xd3, 0x68, 0xa8, 0x42, 0x6f, 0x81, 0xeb, 0x6d, 0x85,
94412 - 0x87, 0xf8, 0x1a, 0x71, 0x69, 0xd2, 0x32, 0x14, 0xe2, 0x4b, 0xc9, 0x51,
94413 - 0x37, 0xc4, 0x69, 0xc8, 0x65, 0x64, 0x2d, 0xfa, 0x90, 0x17, 0xf0, 0xcf,
94414 - 0xe7, 0x5f, 0x7a, 0xcc, 0x09, 0xf4, 0xdc, 0xdd, 0x81, 0x0c, 0x7e, 0x8f,
94415 - 0x32, 0xc0, 0x18, 0x3a, 0xef, 0x7c, 0xc5, 0xaf, 0x45, 0x54, 0x2d, 0x37,
94416 - 0x86, 0x9a, 0x82, 0x73, 0x2b, 0x2d, 0x05, 0x3b, 0x3c, 0xe3, 0x7d, 0x98,
94417 - 0x2b, 0xe2, 0x47, 0xb9, 0x10, 0x66, 0x3f, 0x9e, 0xf3, 0x01, 0x9c, 0x0c,
94418 - 0xfb, 0x35, 0x79, 0x58, 0x8b, 0x84, 0x39, 0xa1, 0xcc, 0xe8, 0x39, 0xe6,
94419 - 0xef, 0x3b, 0x40, 0x2b, 0x73, 0x56, 0x9c, 0xe7, 0xaa, 0xff, 0x59, 0x85,
94420 - 0xa9, 0xac, 0xc1, 0xf8, 0xb9, 0xe7, 0xa8, 0x1b, 0xe6, 0xbb, 0xcc, 0x69,
94421 - 0xc3, 0xdc, 0x27, 0xaf, 0x15, 0x9d, 0x31, 0xed, 0x3e, 0x87, 0xf0, 0xfa,
94422 - 0xec, 0x66, 0xb1, 0x52, 0x3d, 0xba, 0x27, 0x23, 0x43, 0xac, 0x9d, 0x8f,
94423 - 0xe1, 0xcc, 0x3b, 0xa4, 0x9c, 0x41, 0x1e, 0x60, 0xde, 0x85, 0xbe, 0x19,
94424 - 0x73, 0x5f, 0xc6, 0x1c, 0x74, 0x23, 0xc3, 0xfc, 0x66, 0x83, 0xaa, 0x41,
94425 - 0x4a, 0x2a, 0x76, 0xec, 0x08, 0xf4, 0xe5, 0x89, 0x4e, 0x5f, 0x3f, 0xbe,
94426 - 0x87, 0xf1, 0x46, 0xcc, 0x7f, 0x03, 0xbd, 0xe7, 0xf5, 0x0c, 0x85, 0xf3,
94427 - 0xd4, 0xfb, 0x61, 0xcc, 0xdf, 0x09, 0x1c, 0x15, 0x3c, 0x7f, 0x0e, 0xcf,
94428 - 0x7f, 0xb8, 0x6e, 0xed, 0x77, 0x31, 0xae, 0x60, 0xbe, 0xb0, 0x6e, 0x3e,
94429 - 0xf4, 0xb3, 0xdc, 0xaf, 0xa2, 0x15, 0xdd, 0x29, 0x2d, 0xaf, 0xea, 0x88,
94430 - 0x63, 0xa8, 0x55, 0xe8, 0x6b, 0x59, 0xb3, 0xcc, 0x20, 0x17, 0xa7, 0x9f,
94431 - 0x3d, 0x88, 0x35, 0x8b, 0xd0, 0xbb, 0x56, 0x95, 0x65, 0xea, 0xca, 0x1e,
94432 - 0x0f, 0x1d, 0xec, 0x99, 0x63, 0x5f, 0x39, 0x68, 0xd7, 0x09, 0xc3, 0xe7,
94433 - 0x27, 0x0f, 0xf6, 0xd4, 0x0f, 0x01, 0x96, 0xf9, 0x7a, 0xe3, 0x1d, 0xef,
94434 - 0x37, 0xd6, 0xed, 0xe9, 0xd7, 0x38, 0x45, 0x75, 0x37, 0x78, 0xe8, 0x60,
94435 - 0x61, 0x86, 0x71, 0x9a, 0xf5, 0x26, 0xf3, 0xd2, 0xca, 0xc1, 0xf1, 0xda,
94436 - 0x54, 0x50, 0xd3, 0x84, 0xef, 0xf9, 0x8e, 0xf2, 0xbf, 0x15, 0x6d, 0xa4,
94437 - 0xab, 0x11, 0x8f, 0xca, 0x6b, 0x80, 0xe7, 0x49, 0xe0, 0x61, 0x6d, 0xa4,
94438 - 0xee, 0x90, 0x15, 0xbd, 0xa9, 0xb9, 0x5b, 0xd1, 0x46, 0x5c, 0xdc, 0x2b,
94439 - 0xc4, 0x77, 0x02, 0x75, 0xc7, 0x77, 0x48, 0x2f, 0xf0, 0x7c, 0x26, 0xc8,
94440 - 0x6d, 0x78, 0x37, 0x65, 0xf8, 0x77, 0x38, 0x6a, 0x1c, 0xd6, 0xbe, 0x4d,
94441 - 0xeb, 0x6a, 0xdf, 0xa6, 0xe0, 0x1e, 0x8b, 0xb0, 0x7a, 0x00, 0xab, 0xee,
94442 - 0xd0, 0x31, 0x97, 0x0a, 0xee, 0x94, 0xe3, 0xbc, 0x53, 0x6e, 0x90, 0x45,
94443 - 0x53, 0x20, 0x7f, 0xd2, 0x11, 0xd6, 0x2b, 0x8d, 0xf4, 0xf1, 0xbe, 0x79,
94444 - 0x0a, 0xef, 0xc3, 0xb3, 0x09, 0x79, 0x5f, 0xc4, 0x3c, 0xe9, 0x3d, 0x03,
94445 - 0xf8, 0x90, 0xde, 0x4f, 0x7b, 0xa6, 0x5c, 0x7b, 0x06, 0xbf, 0x70, 0xbf,
94446 - 0x50, 0x2e, 0xa4, 0xf5, 0xd7, 0xd5, 0x5a, 0xa1, 0xdf, 0x5b, 0x0c, 0x62,
94447 - 0x3a, 0xe9, 0xa2, 0x0f, 0xa2, 0x3f, 0x0e, 0xef, 0xc0, 0x59, 0x63, 0x33,
94448 - 0x56, 0xf0, 0xbc, 0x5a, 0xa0, 0x2b, 0x84, 0xd3, 0x90, 0x5f, 0xeb, 0xcc,
94449 - 0xc3, 0x52, 0xa8, 0x35, 0x92, 0x8f, 0xc8, 0x0f, 0xb0, 0x57, 0x3e, 0xd3,
94450 - 0xa4, 0xec, 0x88, 0xf7, 0x08, 0xcd, 0xb2, 0x02, 0x9d, 0xbe, 0x84, 0xfa,
94451 - 0x63, 0x1e, 0xb5, 0xd1, 0x12, 0xef, 0xb5, 0xeb, 0x27, 0x3b, 0x79, 0x1f,
94452 - 0x32, 0x65, 0xad, 0xd5, 0xf1, 0x73, 0x80, 0x59, 0xb0, 0x58, 0xeb, 0x4b,
94453 - 0xd0, 0x10, 0x23, 0x91, 0x67, 0x8c, 0x5b, 0xff, 0xe3, 0x95, 0x13, 0x8d,
94454 - 0xb0, 0xb7, 0xaa, 0xb3, 0xdb, 0xa4, 0x3a, 0x9b, 0x3e, 0x3a, 0x87, 0x7a,
94455 - 0x77, 0xc6, 0xd2, 0xb7, 0xe8, 0x7e, 0xad, 0x34, 0x03, 0xdf, 0xa4, 0x6a,
94456 - 0xad, 0x39, 0x79, 0xae, 0x93, 0x67, 0xd7, 0x64, 0xf5, 0x9b, 0x9d, 0xfa,
94457 - 0xef, 0x50, 0x17, 0x15, 0xe5, 0xb1, 0x13, 0x1b, 0xa4, 0x3c, 0x70, 0x1f,
94458 - 0x72, 0x2d, 0xc8, 0xf3, 0x44, 0x05, 0x95, 0x21, 0xf5, 0xea, 0xbd, 0x03,
94459 - 0xe3, 0x16, 0x6b, 0x26, 0xf1, 0xe3, 0x9a, 0xf8, 0x3c, 0xc6, 0x4e, 0xb4,
94460 - 0x29, 0x9f, 0xe4, 0xdf, 0x99, 0xf7, 0x9a, 0x45, 0xe4, 0x63, 0x85, 0x01,
94461 - 0x24, 0x8d, 0xc8, 0x5e, 0xcc, 0x9d, 0x22, 0x3d, 0xcc, 0x19, 0xe1, 0x8f,
94462 - 0x7b, 0xce, 0xc1, 0xcb, 0x9d, 0x20, 0xbc, 0x2e, 0xc6, 0x89, 0x98, 0x34,
94463 - 0x9d, 0x60, 0x9d, 0x2d, 0x5d, 0xa8, 0x51, 0x88, 0xb3, 0xc7, 0x40, 0x3f,
94464 - 0x8a, 0xdf, 0x1e, 0xe4, 0x51, 0x26, 0xf2, 0xda, 0x5b, 0xc0, 0x03, 0x96,
94465 - 0x6b, 0x6e, 0x05, 0xff, 0x6a, 0x27, 0xeb, 0xce, 0x9e, 0x73, 0x84, 0xe7,
94466 - 0x7d, 0x76, 0x17, 0xe8, 0xf1, 0xf7, 0x27, 0x0e, 0xe3, 0x84, 0x48, 0xef,
94467 - 0xb4, 0x74, 0xea, 0x6a, 0x8d, 0x21, 0xe3, 0x59, 0xbe, 0x6b, 0x03, 0xfc,
94468 - 0xab, 0xca, 0x3e, 0x7b, 0xd5, 0x3a, 0xff, 0xce, 0xa2, 0xbc, 0x46, 0x37,
94469 - 0xe6, 0x34, 0x3c, 0x23, 0x57, 0xca, 0x9a, 0xd2, 0x3b, 0xef, 0xc3, 0xf6,
94470 - 0x9c, 0xeb, 0xd8, 0xe2, 0xdf, 0xed, 0xf8, 0xb4, 0xf1, 0x6e, 0xb0, 0x0c,
94471 - 0xa9, 0x1a, 0x3b, 0x59, 0xf3, 0x13, 0x86, 0xdf, 0x52, 0xd8, 0x73, 0x2d,
94472 - 0xe5, 0xe7, 0xcf, 0xe9, 0xfa, 0xff, 0xa5, 0x5f, 0xeb, 0xbf, 0xe1, 0x84,
94473 - 0x77, 0x4b, 0xa9, 0x86, 0xbb, 0xa5, 0x74, 0xc3, 0xb7, 0x97, 0x9f, 0xb4,
94474 - 0x05, 0x7a, 0x27, 0x93, 0xb6, 0x27, 0xe1, 0xf7, 0xa5, 0xbd, 0x37, 0xe5,
94475 - 0x90, 0x19, 0x15, 0xa7, 0xc7, 0x21, 0xfb, 0x2b, 0x75, 0xd2, 0x8b, 0x98,
94476 - 0x53, 0x8f, 0xcb, 0xfb, 0x8b, 0xad, 0x72, 0x65, 0xce, 0xcf, 0x29, 0xaf,
94477 - 0xa8, 0x6f, 0x4e, 0xa6, 0x7c, 0x80, 0xc2, 0xff, 0x72, 0x3d, 0x83, 0x5f,
94478 - 0xa7, 0x5c, 0x5d, 0xbc, 0x39, 0xa7, 0xbc, 0xe0, 0xde, 0x0d, 0x5a, 0x3a,
94479 - 0x03, 0x1b, 0x46, 0xdd, 0x86, 0x18, 0x58, 0x09, 0xee, 0xea, 0x55, 0xce,
94480 - 0x62, 0xd0, 0x16, 0x78, 0x27, 0x1f, 0xde, 0x57, 0xf7, 0x9a, 0x17, 0x21,
94481 - 0xe3, 0xaf, 0x1a, 0x9d, 0xa8, 0xa3, 0x79, 0xd7, 0x16, 0xc6, 0xec, 0x30,
94482 - 0xf6, 0x90, 0xee, 0xb7, 0x81, 0x7b, 0x00, 0x7a, 0x4a, 0xdd, 0xb4, 0xa1,
94483 - 0xb3, 0xa6, 0x2c, 0xf5, 0xa5, 0x67, 0x2a, 0xc2, 0xef, 0x02, 0x59, 0xec,
94484 - 0xb9, 0x0c, 0xbd, 0xcc, 0x40, 0x1e, 0xcc, 0xf5, 0x28, 0x57, 0x9c, 0xed,
94485 - 0xf4, 0x94, 0x94, 0xdd, 0xad, 0xc0, 0x97, 0x97, 0x92, 0x3b, 0x8c, 0xbd,
94486 - 0x8e, 0x43, 0x6f, 0x7f, 0xb9, 0x85, 0x77, 0x99, 0xcd, 0x56, 0x16, 0x34,
94487 - 0xde, 0x25, 0xe3, 0x27, 0xa7, 0x64, 0xc2, 0x59, 0xfd, 0x66, 0x94, 0xe1,
94488 - 0xf7, 0x94, 0x45, 0xd4, 0xb4, 0xbe, 0x3d, 0xe6, 0x64, 0xfc, 0x14, 0x70,
94489 - 0x38, 0xac, 0x8d, 0x7b, 0xa1, 0x37, 0xfd, 0xaa, 0x36, 0x2e, 0x29, 0x9f,
94490 - 0xc4, 0xf9, 0xef, 0x01, 0x57, 0x6f, 0x65, 0x0f, 0xe0, 0xca, 0xa8, 0x9f,
94491 - 0x8b, 0xc8, 0x85, 0x17, 0x1c, 0x43, 0xca, 0x36, 0x7c, 0x6b, 0x31, 0xa9,
94492 - 0xeb, 0xbb, 0xba, 0x65, 0xde, 0xe9, 0x37, 0x75, 0xde, 0x3d, 0x26, 0x7c,
94493 - 0xdf, 0x57, 0x56, 0xf6, 0x9d, 0xd4, 0x0d, 0xab, 0x5b, 0x16, 0x9d, 0x8a,
94494 - 0x54, 0x07, 0x38, 0xe6, 0xf9, 0x55, 0xc4, 0xb4, 0x7c, 0x5f, 0x99, 0xd7,
94495 - 0x35, 0x75, 0xb7, 0x5d, 0x76, 0xd5, 0xfd, 0x68, 0xca, 0x94, 0xc3, 0xa0,
94496 - 0x0f, 0xcf, 0x0b, 0xd0, 0xf1, 0x69, 0xe6, 0x78, 0xfe, 0x9d, 0xf1, 0x81,
94497 - 0xe5, 0x22, 0x68, 0x68, 0x97, 0xde, 0x1f, 0xd3, 0xc6, 0x1e, 0xc2, 0x1c,
94498 - 0xc7, 0x69, 0xe8, 0xeb, 0xc3, 0x78, 0x26, 0x6c, 0x12, 0x3d, 0xe5, 0xd0,
94499 - 0x8d, 0xde, 0x04, 0x2d, 0xd0, 0x4b, 0xd6, 0xa5, 0xfb, 0x53, 0x32, 0x7f,
94500 - 0x72, 0xb7, 0x94, 0x16, 0x76, 0x03, 0xff, 0x3f, 0x22, 0xe7, 0xbf, 0x33,
94501 - 0xb8, 0x8b, 0x65, 0xde, 0xcf, 0x7d, 0x5e, 0xdc, 0xa2, 0x6c, 0x63, 0x9a,
94502 - 0xf3, 0xec, 0xf7, 0x61, 0x3d, 0xea, 0x07, 0x47, 0xdd, 0x4f, 0x03, 0x06,
94503 - 0x67, 0xe7, 0x36, 0x7e, 0xfb, 0xeb, 0x84, 0x9f, 0xae, 0xb0, 0x76, 0x40,
94504 - 0x6c, 0x99, 0x1b, 0x2c, 0xd4, 0xd2, 0x66, 0x41, 0x7d, 0x97, 0xc8, 0x88,
94505 - 0x1f, 0x6f, 0x38, 0x17, 0x17, 0x6b, 0x1a, 0xf5, 0x68, 0x8e, 0xef, 0x0e,
94506 - 0xab, 0xfb, 0x1f, 0xf5, 0x7d, 0x4e, 0xde, 0x95, 0x51, 0xe8, 0x58, 0xef,
94507 - 0x74, 0x06, 0x39, 0xf1, 0x7b, 0xc8, 0x27, 0x7f, 0x1e, 0xc8, 0x60, 0x38,
94508 - 0xd0, 0x8d, 0xd6, 0x06, 0x9d, 0xc0, 0x39, 0x3b, 0x38, 0x7b, 0x07, 0x7a,
94509 - 0xe0, 0xe0, 0xac, 0x57, 0xf5, 0x63, 0xb8, 0xc1, 0xe7, 0x6e, 0x92, 0xbf,
94510 - 0x9c, 0x49, 0x67, 0x56, 0xa0, 0x3f, 0x57, 0xc1, 0xeb, 0x0a, 0xea, 0xbc,
94511 - 0x2b, 0x88, 0x23, 0x0b, 0x35, 0x7e, 0x4b, 0xe0, 0xb7, 0x38, 0x8e, 0xb7,
94512 - 0xe1, 0x3c, 0x42, 0x7f, 0xfc, 0x52, 0x60, 0x17, 0x9b, 0xd4, 0x7d, 0xe7,
94513 - 0xfb, 0x38, 0xc3, 0x15, 0xd3, 0xcf, 0x17, 0xfd, 0x35, 0x9b, 0x24, 0xfc,
94514 - 0xde, 0xe7, 0xeb, 0x0f, 0x69, 0xa1, 0xfe, 0x7c, 0xb2, 0xc5, 0xcf, 0xfb,
94515 - 0xf9, 0x0d, 0x8c, 0xf5, 0x0b, 0x9f, 0xef, 0xdf, 0xe2, 0xe3, 0x6a, 0xd4,
94516 - 0xdb, 0x8f, 0x3d, 0xd6, 0x6a, 0x85, 0x3e, 0xf8, 0x6c, 0xd7, 0x93, 0x63,
94517 - 0xf6, 0xcd, 0xf6, 0x76, 0x8f, 0x13, 0xca, 0x87, 0xf2, 0x2b, 0xca, 0x11,
94518 - 0x37, 0x0d, 0x5b, 0xa0, 0xec, 0xac, 0x06, 0xd9, 0x89, 0xfc, 0xb9, 0x23,
94519 - 0xbc, 0xef, 0xc2, 0x3b, 0x25, 0xbb, 0x64, 0x21, 0xd6, 0xca, 0xfb, 0x5a,
94520 - 0xe8, 0xe3, 0xdf, 0xca, 0xc4, 0xac, 0xc8, 0x32, 0xde, 0x2f, 0x39, 0xb4,
94521 - 0xd1, 0x0c, 0xf2, 0xd7, 0x8d, 0x32, 0x3f, 0x87, 0x3a, 0xcb, 0x91, 0x52,
94522 - 0xe1, 0x4e, 0xc6, 0x99, 0xb8, 0x5c, 0x51, 0xf7, 0x7b, 0x22, 0x3b, 0xcf,
94523 - 0x1a, 0x62, 0x9c, 0x45, 0x41, 0x07, 0x99, 0x9f, 0xef, 0x0b, 0xef, 0xfb,
94524 - 0x7c, 0x5b, 0xaf, 0xd6, 0xb0, 0xd6, 0xe9, 0x55, 0xfe, 0xb1, 0x5a, 0x1f,
94525 - 0x97, 0xf2, 0x0c, 0xf7, 0x42, 0x3f, 0x97, 0xc2, 0x3b, 0x5b, 0x26, 0x4f,
94526 - 0x66, 0xe4, 0xfb, 0xfc, 0x5e, 0x93, 0x1d, 0xc5, 0x1e, 0x05, 0xa9, 0x2c,
94527 - 0x63, 0xbe, 0xfe, 0x4f, 0x32, 0xb7, 0x38, 0x2e, 0xf3, 0x33, 0x17, 0x1a,
94528 - 0xee, 0x73, 0x31, 0x9e, 0x6b, 0xac, 0x4f, 0x8b, 0xac, 0xa9, 0x50, 0x7f,
94529 - 0x5a, 0x18, 0xc3, 0x06, 0xea, 0x93, 0xa5, 0x9b, 0xef, 0x1f, 0x1b, 0xeb,
94530 - 0xd2, 0x51, 0x39, 0x8a, 0x33, 0xae, 0x9e, 0xcc, 0xa8, 0xba, 0xa6, 0x25,
94531 - 0x37, 0xfb, 0xf8, 0x87, 0x88, 0x11, 0x63, 0x42, 0x3d, 0xbb, 0x2e, 0x5f,
94532 - 0xb3, 0x8f, 0xca, 0x23, 0x88, 0x1d, 0x47, 0x90, 0x5f, 0xff, 0x36, 0xea,
94533 - 0xba, 0xd4, 0x66, 0x9e, 0x21, 0xe8, 0xb5, 0x58, 0x57, 0x7a, 0x32, 0x6a,
94534 - 0xdf, 0x61, 0xfe, 0x00, 0x92, 0x7d, 0xbf, 0xce, 0xf8, 0xf8, 0xdf, 0x5e,
94535 - 0x1e, 0xf1, 0xee, 0x43, 0x0b, 0x3e, 0x41, 0xc1, 0x69, 0x3e, 0xdc, 0x0c,
94536 - 0xe1, 0xfa, 0xcd, 0x63, 0x84, 0x9b, 0xd3, 0x02, 0x38, 0x0d, 0x70, 0x31,
94537 - 0xb9, 0x68, 0x1b, 0xd0, 0x8d, 0x51, 0xf0, 0x09, 0xdf, 0x3e, 0x18, 0x7e,
94538 - 0x6f, 0xdc, 0x80, 0x98, 0xba, 0xb6, 0xfe, 0x8d, 0x60, 0xfd, 0xf7, 0x83,
94539 - 0xf5, 0x97, 0x56, 0xd7, 0x87, 0x71, 0xf5, 0x13, 0x4f, 0x1a, 0xe8, 0x7a,
94540 - 0xa3, 0xe6, 0xc3, 0x1f, 0x0d, 0xe8, 0xba, 0xb4, 0x4a, 0x57, 0x08, 0x0f,
94541 - 0x79, 0x2a, 0x9e, 0xe9, 0x93, 0xe9, 0x9b, 0x7b, 0x21, 0x47, 0x7e, 0x47,
94542 - 0x86, 0x4d, 0x38, 0xfc, 0x7e, 0x4b, 0x3b, 0xd1, 0x65, 0x25, 0x71, 0x54,
94543 - 0xc6, 0xac, 0xf4, 0xf0, 0xa4, 0xc4, 0xa0, 0xc3, 0xf4, 0x29, 0x31, 0x99,
94544 - 0xa7, 0xaf, 0x41, 0x5f, 0xb6, 0x6f, 0x4d, 0xeb, 0xfb, 0x0d, 0xb4, 0xc6,
94545 - 0x9e, 0x27, 0x8d, 0x3e, 0xad, 0xf1, 0x1d, 0x6b, 0xb4, 0xfa, 0xf0, 0x3e,
94546 - 0xad, 0xef, 0xd7, 0x1a, 0xe0, 0xcf, 0x1a, 0x01, 0xbc, 0xd1, 0x00, 0x4f,
94547 - 0x7d, 0x66, 0x3e, 0x41, 0x7d, 0x26, 0x6d, 0x5f, 0x50, 0xf7, 0x66, 0x1b,
94548 - 0x72, 0xb3, 0x07, 0x3f, 0xbf, 0xc3, 0x93, 0x38, 0xf2, 0x8c, 0x66, 0xbc,
94549 - 0xbb, 0x32, 0xc3, 0x1c, 0x44, 0xef, 0x69, 0x96, 0x9d, 0xd0, 0x59, 0x9e,
94550 - 0x5d, 0xe3, 0x9d, 0xab, 0x27, 0x8f, 0xd8, 0xa4, 0xe5, 0x3f, 0xbd, 0x33,
94551 - 0x89, 0x9d, 0x76, 0x55, 0xfa, 0xcc, 0x66, 0xe1, 0x9d, 0xae, 0xc2, 0x99,
94552 - 0x21, 0x2d, 0xa7, 0xfb, 0x7a, 0xcd, 0xb7, 0xc0, 0xe7, 0xe8, 0x8c, 0x26,
94553 - 0xf3, 0x56, 0x3a, 0x79, 0x1e, 0x38, 0xf6, 0xe0, 0x6c, 0xe6, 0x07, 0x48,
94554 - 0x8f, 0xc8, 0x04, 0xf4, 0x7b, 0x5e, 0xc5, 0x43, 0xea, 0x71, 0x7a, 0xac,
94555 - 0x82, 0x1c, 0xe7, 0xa7, 0x2a, 0xa6, 0x79, 0xde, 0x87, 0x88, 0x6b, 0x63,
94556 - 0xeb, 0x74, 0x4f, 0x3f, 0xeb, 0xeb, 0x9e, 0x7e, 0x16, 0xb5, 0xf1, 0xf1,
94557 - 0xb8, 0xb4, 0x2c, 0xc1, 0x7e, 0x9e, 0xef, 0x52, 0xfa, 0xa7, 0x3f, 0xcf,
94558 - 0x6f, 0x19, 0xf0, 0x73, 0xc7, 0x0d, 0xb1, 0x8e, 0xab, 0x38, 0x00, 0x79,
94559 - 0x17, 0x64, 0xf2, 0x14, 0x7d, 0xa9, 0x25, 0x3b, 0x8e, 0xf3, 0x3c, 0x98,
94560 - 0xcf, 0xcc, 0x0d, 0x8e, 0xc3, 0x46, 0xa6, 0xf8, 0x7d, 0x70, 0xe9, 0x23,
94561 - 0x19, 0xb7, 0x28, 0x07, 0x94, 0xfa, 0x4b, 0xa6, 0xc4, 0x96, 0xe0, 0x13,
94562 - 0x96, 0x92, 0xd2, 0x04, 0xdb, 0xd2, 0xcf, 0x26, 0xb4, 0xea, 0xec, 0x7f,
94563 - 0xc1, 0x1e, 0xf8, 0x4d, 0x20, 0x83, 0x71, 0x52, 0xab, 0xd6, 0x06, 0xd0,
94564 - 0x53, 0xcf, 0x91, 0x46, 0x9d, 0xa5, 0x9e, 0x93, 0x8e, 0xd0, 0x5e, 0xf0,
94565 - 0x7c, 0x36, 0xa3, 0xee, 0x6c, 0x3f, 0xb4, 0xc9, 0xcb, 0xdf, 0x48, 0x61,
94566 - 0x26, 0xfc, 0x1b, 0x10, 0xd9, 0x8c, 0x1c, 0xa6, 0xa3, 0x60, 0xef, 0x18,
94567 - 0xbe, 0x22, 0x9f, 0x96, 0xaf, 0x6d, 0x9f, 0x82, 0x2f, 0xf2, 0xd1, 0xc8,
94568 - 0x17, 0x79, 0x6a, 0x97, 0x26, 0xc5, 0x57, 0xc8, 0x0f, 0x04, 0x0d, 0x7e,
94569 - 0x7a, 0x8e, 0x27, 0x81, 0xff, 0x61, 0xf8, 0x80, 0x6e, 0xf4, 0x0f, 0xa1,
94570 - 0x47, 0x28, 0x3b, 0x4b, 0xde, 0xc9, 0xeb, 0x55, 0xe4, 0x8b, 0x21, 0x9f,
94571 - 0x25, 0x3c, 0xbf, 0x2e, 0x93, 0xb3, 0xde, 0x61, 0xc4, 0x53, 0xde, 0x27,
94572 - 0x77, 0xea, 0x4a, 0x77, 0xd7, 0xf3, 0xfe, 0xba, 0xf8, 0xf2, 0xe1, 0x5d,
94573 - 0x3c, 0x9e, 0x17, 0xd7, 0xcb, 0xa2, 0xd1, 0x77, 0x24, 0x83, 0xbf, 0x7b,
94574 - 0xa1, 0x9f, 0xa0, 0x8c, 0xae, 0x4a, 0x61, 0x96, 0x77, 0x5a, 0x3e, 0xbe,
94575 - 0xd2, 0xea, 0xdf, 0xbe, 0x34, 0xae, 0x19, 0x00, 0x5c, 0x37, 0xe0, 0x48,
94576 - 0xd7, 0x0a, 0xe5, 0x07, 0x9f, 0xb3, 0xbd, 0xc1, 0xd7, 0x34, 0xae, 0xcb,
94577 - 0xca, 0x33, 0x88, 0xff, 0x6f, 0xd8, 0x37, 0xc9, 0xb5, 0xc4, 0x1c, 0x68,
94578 - 0xbe, 0xbe, 0x0f, 0x36, 0xd9, 0x04, 0x5f, 0x66, 0xca, 0x95, 0x5a, 0xb3,
94579 - 0xcc, 0x23, 0xcf, 0x59, 0x58, 0xa4, 0x2f, 0x24, 0xed, 0xad, 0x98, 0xf7,
94580 - 0xfd, 0x17, 0x7d, 0xed, 0x95, 0x1a, 0xe2, 0x2b, 0x6c, 0xfb, 0x4a, 0x2d,
94581 - 0x81, 0xbe, 0x1b, 0xbd, 0x85, 0x3e, 0x85, 0x3e, 0x83, 0x7e, 0x00, 0xfd,
94582 - 0x00, 0x7a, 0x0b, 0x6b, 0x93, 0xe8, 0xc3, 0x5a, 0x82, 0xb8, 0xd6, 0xf8,
94583 - 0xae, 0xaa, 0xfd, 0xf8, 0xdd, 0x90, 0xb1, 0xcc, 0xb0, 0x47, 0x50, 0x63,
94584 - 0x17, 0x06, 0xc2, 0xbf, 0xb9, 0xb9, 0xe1, 0x99, 0x16, 0x6b, 0xf7, 0x8a,
94585 - 0xb6, 0x47, 0x7d, 0x5f, 0x98, 0x41, 0x5c, 0x78, 0x6e, 0xab, 0xb4, 0x5a,
94586 - 0xe6, 0x3d, 0xea, 0xee, 0x68, 0x16, 0x63, 0x3e, 0xa3, 0x3e, 0x4e, 0x4c,
94587 - 0x21, 0x3e, 0xd1, 0x7f, 0xfe, 0x6f, 0xe7, 0xd6, 0x1b, 0xdb, 0xc6, 0x59,
94588 - 0xc6, 0x1f, 0x9f, 0x9d, 0x34, 0xe9, 0x9a, 0xf6, 0x92, 0x38, 0xa9, 0x93,
94589 - 0x85, 0xcd, 0x8e, 0x2f, 0xad, 0x45, 0xd2, 0x71, 0xed, 0x2c, 0x16, 0xa6,
94590 - 0x8c, 0x78, 0x76, 0x92, 0x76, 0x30, 0xa6, 0xb4, 0x74, 0xd3, 0x84, 0x10,
94591 - 0x58, 0xc9, 0xba, 0x75, 0x13, 0xd2, 0x28, 0x30, 0x34, 0x89, 0xa2, 0x18,
94592 - 0x27, 0x61, 0x19, 0x18, 0xc7, 0x0b, 0x81, 0x4e, 0xf0, 0xc5, 0x38, 0xd1,
94593 - 0x06, 0x22, 0x4a, 0x3a, 0x8d, 0x0f, 0x08, 0x6d, 0x74, 0xb8, 0x83, 0xef,
94594 - 0xfc, 0x11, 0x62, 0x12, 0x1f, 0xaa, 0xa8, 0x63, 0x20, 0x21, 0xe0, 0x23,
94595 - 0xd2, 0x98, 0x8e, 0xdf, 0xef, 0x79, 0xef, 0x12, 0xc7, 0x64, 0x54, 0xf0,
94596 - 0xc1, 0x3a, 0xbf, 0x77, 0xf7, 0xbe, 0xf7, 0xde, 0xfb, 0x3c, 0xef, 0xef,
94597 - 0xf9, 0x3d, 0x7f, 0xce, 0x43, 0x9f, 0x19, 0xe0, 0xf8, 0x11, 0x61, 0x0c,
94598 - 0x36, 0x9b, 0xc6, 0xff, 0xea, 0xc5, 0x1e, 0x63, 0x4b, 0xc1, 0xdb, 0x77,
94599 - 0xb8, 0x61, 0x60, 0xab, 0x46, 0xd0, 0x67, 0x3f, 0x9f, 0x00, 0x36, 0xb0,
94600 - 0x92, 0xa8, 0x54, 0xb1, 0x07, 0x7f, 0xed, 0xce, 0x29, 0xa7, 0xa3, 0x2c,
94601 - 0x16, 0xc1, 0x4d, 0x73, 0x65, 0x72, 0x97, 0xcb, 0xf0, 0x47, 0xe0, 0xcb,
94602 - 0x45, 0xe9, 0xbb, 0xd3, 0x16, 0x90, 0x83, 0xfe, 0x12, 0x73, 0xa3, 0x1d,
94603 - 0xf8, 0x26, 0x9e, 0x87, 0xf7, 0x5a, 0xf3, 0xb0, 0x66, 0xa7, 0xc1, 0x05,
94604 - 0x3d, 0x2f, 0xe2, 0x4c, 0x4a, 0xfc, 0x1c, 0x31, 0x47, 0xd0, 0xdf, 0xc4,
94605 - 0xb2, 0xc8, 0xab, 0x32, 0xd3, 0x9a, 0x83, 0x84, 0x72, 0xfd, 0x0e, 0x7d,
94606 - 0x7b, 0xc4, 0xc4, 0xa7, 0x18, 0x7f, 0x16, 0x99, 0x2c, 0x1b, 0x2e, 0x0b,
94607 - 0xbf, 0xac, 0x61, 0xbc, 0xbb, 0xfd, 0xf1, 0x78, 0xdd, 0xd2, 0x71, 0x6a,
94608 - 0xd2, 0x6b, 0x62, 0xbb, 0x63, 0x23, 0xb0, 0x11, 0x51, 0xa9, 0x43, 0x2e,
94609 - 0xd7, 0x21, 0x93, 0x37, 0x4b, 0xd4, 0xf5, 0x61, 0xe8, 0x7d, 0x0b, 0xf3,
94610 - 0xb3, 0x18, 0x6b, 0x44, 0x9f, 0x5d, 0x2f, 0x01, 0x3b, 0x6d, 0xf5, 0x4f,
94611 - 0x7b, 0xc9, 0x0b, 0x69, 0x07, 0xcd, 0x38, 0x03, 0xe6, 0x3e, 0x09, 0xae,
94612 - 0x75, 0xeb, 0x7c, 0x6a, 0x1a, 0x03, 0xe3, 0x3a, 0x41, 0x07, 0x4b, 0xdd,
94613 - 0xfe, 0x3d, 0x5e, 0x8f, 0xa9, 0x77, 0xe2, 0x39, 0xbe, 0xc7, 0x88, 0x64,
94614 - 0xcb, 0x41, 0xbf, 0x4e, 0xf4, 0x6b, 0x6f, 0x18, 0xeb, 0x68, 0xd3, 0x3b,
94615 - 0x58, 0xfe, 0x3b, 0xf0, 0x7a, 0x33, 0xdf, 0x4f, 0xd8, 0x05, 0x09, 0x38,
94616 - 0x3f, 0xed, 0x2f, 0x65, 0x93, 0xd6, 0xfc, 0xb6, 0x91, 0xcf, 0x80, 0xef,
94617 - 0x03, 0x24, 0x96, 0x0a, 0x02, 0xbe, 0x18, 0xa5, 0x8c, 0xd2, 0xd8, 0xd7,
94618 - 0x3f, 0x89, 0xca, 0x61, 0x57, 0x2a, 0xa5, 0x03, 0x62, 0x75, 0xb5, 0x68,
94619 - 0x8d, 0x4e, 0xdc, 0x6a, 0x7c, 0xe6, 0x67, 0xfd, 0x67, 0xc2, 0xf7, 0x5e,
94620 - 0x69, 0xd7, 0xb8, 0x34, 0xec, 0x0c, 0xee, 0x39, 0xd4, 0x34, 0xb7, 0x87,
94621 - 0xfd, 0xfb, 0x78, 0xdd, 0x91, 0x02, 0xf8, 0x67, 0xae, 0x0c, 0x26, 0x0f,
94622 - 0xfc, 0xb6, 0xc6, 0x98, 0xe3, 0x61, 0x0c, 0x6f, 0x38, 0x3e, 0x8f, 0x39,
94623 - 0x16, 0xec, 0x31, 0xc6, 0xcd, 0x30, 0x46, 0x5f, 0xd3, 0x18, 0x13, 0xfe,
94624 - 0x18, 0x59, 0x29, 0x5e, 0x99, 0xc0, 0x5e, 0x1b, 0x83, 0x7d, 0x4f, 0xda,
94625 - 0xa7, 0xe5, 0x23, 0x22, 0x9d, 0x38, 0xf7, 0x72, 0x0a, 0x72, 0xf2, 0xbc,
94626 - 0x49, 0x77, 0x1a, 0xf3, 0x7e, 0x0d, 0xb6, 0x35, 0xe0, 0x3c, 0xc5, 0x58,
94627 - 0x18, 0x36, 0xec, 0xf3, 0x2e, 0xe3, 0x62, 0x05, 0x30, 0xb2, 0x84, 0x6d,
94628 - 0x85, 0x86, 0x53, 0x35, 0xf0, 0xba, 0x2a, 0x2c, 0x69, 0xd1, 0xe1, 0x7b,
94629 - 0x76, 0x48, 0xd1, 0x0e, 0x8d, 0x87, 0xc1, 0x6b, 0xb2, 0x65, 0xee, 0x23,
94630 - 0x19, 0x0a, 0x8f, 0xb5, 0x82, 0x8b, 0x7a, 0xf2, 0x36, 0xa0, 0xa6, 0x58,
94631 - 0x5a, 0x92, 0xfa, 0x86, 0x8d, 0xe3, 0x05, 0xc8, 0xe1, 0x45, 0xfc, 0x7f,
94632 - 0x3e, 0xaa, 0x75, 0x4a, 0xe0, 0xeb, 0x8b, 0x78, 0x1f, 0xf2, 0x19, 0xf2,
94633 - 0x88, 0x1a, 0xec, 0xad, 0x05, 0x5b, 0x03, 0x5e, 0x35, 0x4a, 0xde, 0xf5,
94634 - 0xdc, 0xda, 0x4d, 0x79, 0x73, 0x35, 0x81, 0x67, 0xd1, 0x2e, 0x9f, 0x21,
94635 - 0x1e, 0xd8, 0x0b, 0x69, 0x9c, 0x5b, 0x37, 0xdc, 0xb7, 0xb8, 0x85, 0x0d,
94636 - 0xd4, 0x05, 0x8e, 0x00, 0x8e, 0xbd, 0x0d, 0x0c, 0x2c, 0xe2, 0xfe, 0xfa,
94637 - 0x6a, 0x44, 0xd6, 0x1c, 0xf2, 0x22, 0x89, 0x67, 0x71, 0x6f, 0x7d, 0x7d,
94638 - 0xb1, 0xd7, 0xe4, 0x51, 0xd8, 0x7f, 0x42, 0x0a, 0xe0, 0x75, 0xa7, 0xb5,
94639 - 0xef, 0xad, 0xe4, 0xcc, 0x39, 0x35, 0xfa, 0x77, 0xb3, 0x52, 0xe7, 0x7e,
94640 - 0xd2, 0xdc, 0x03, 0xb9, 0xc1, 0x65, 0xe8, 0x2c, 0x39, 0x3b, 0xfd, 0x00,
94641 - 0xfc, 0xdf, 0xe0, 0x75, 0xbe, 0x3b, 0x8e, 0xd5, 0x24, 0xd6, 0x86, 0xfb,
94642 - 0xbe, 0x10, 0x9a, 0x3e, 0x0e, 0x3b, 0x6a, 0x71, 0xaf, 0x17, 0x15, 0x0b,
94643 - 0x8a, 0xcb, 0xb3, 0xb0, 0x29, 0xac, 0xb5, 0xe8, 0x83, 0x2e, 0x3e, 0x08,
94644 - 0x59, 0xa6, 0x71, 0x5f, 0x93, 0x2d, 0xd9, 0x2c, 0x2a, 0x2f, 0xb3, 0x5e,
94645 - 0x32, 0xb8, 0x66, 0xd5, 0xc0, 0xd1, 0xb0, 0x7f, 0xac, 0x4d, 0xe8, 0x16,
94646 - 0xf6, 0x90, 0xb5, 0x19, 0xc5, 0x11, 0x78, 0xbc, 0x09, 0xbf, 0x02, 0xf8,
94647 - 0x66, 0x6d, 0xc2, 0x27, 0x00, 0xbe, 0x59, 0x9b, 0x29, 0x1c, 0x81, 0xf1,
94648 - 0x9b, 0x01, 0xae, 0x71, 0xfc, 0x94, 0xe6, 0xe1, 0x0d, 0xbe, 0x90, 0x4b,
94649 - 0x12, 0x5f, 0x02, 0x3e, 0x69, 0x74, 0xe1, 0xeb, 0xcb, 0xc4, 0x10, 0xea,
94650 - 0x75, 0x12, 0xb8, 0x45, 0x5d, 0x30, 0x5c, 0x72, 0xbd, 0x62, 0xd6, 0x6c,
94651 - 0x7e, 0xeb, 0x9a, 0xda, 0x88, 0x29, 0x71, 0xa0, 0x63, 0x5c, 0x3b, 0x5c,
94652 - 0x53, 0x1b, 0xf0, 0xba, 0x64, 0xf4, 0xc8, 0x35, 0xfb, 0xb9, 0x64, 0xd6,
94653 - 0x53, 0xf2, 0x0d, 0xc5, 0xad, 0x00, 0xb3, 0xc8, 0x21, 0x63, 0x58, 0x3f,
94654 - 0x47, 0x9e, 0xff, 0xf6, 0x4d, 0xc9, 0x7e, 0x87, 0xb8, 0x35, 0x1c, 0x6b,
94655 - 0x0f, 0x11, 0xab, 0x3c, 0xd9, 0x80, 0x6d, 0x3a, 0xed, 0x26, 0x1e, 0x65,
94656 - 0xfd, 0x66, 0x1e, 0xba, 0xd2, 0x7a, 0x32, 0xe1, 0xc6, 0x43, 0xc9, 0x47,
94657 - 0xdb, 0x43, 0xb4, 0x8d, 0xc3, 0xf6, 0x45, 0x39, 0xe5, 0xc7, 0xa3, 0x0e,
94658 - 0xc8, 0x45, 0xe5, 0xfe, 0x2c, 0xcf, 0x78, 0x57, 0x73, 0x23, 0xef, 0xa4,
94659 - 0xb9, 0xd6, 0x68, 0x6f, 0x6a, 0xdc, 0xa8, 0xed, 0x9d, 0x74, 0x8b, 0x14,
94660 - 0x7b, 0x3c, 0xef, 0xc2, 0xc9, 0xb7, 0xa2, 0x26, 0xce, 0xd5, 0x7f, 0xd4,
94661 - 0x60, 0x01, 0x00, 0x4c, 0xdb, 0x9f, 0xc0, 0x91, 0xba, 0x4d, 0x7b, 0x4b,
94662 - 0xfb, 0x48, 0xb9, 0xe1, 0xb8, 0xce, 0xff, 0xb4, 0xbd, 0x4b, 0xb0, 0xbd,
94663 - 0xb4, 0x97, 0x47, 0x24, 0xc7, 0x9c, 0x9c, 0xa5, 0xe7, 0x0b, 0x86, 0x4b,
94664 - 0xfb, 0xf7, 0x55, 0xf2, 0x32, 0x5f, 0x21, 0x87, 0xaa, 0xc3, 0x96, 0xb1,
94665 - 0xf6, 0x91, 0x36, 0x6d, 0x0e, 0xf6, 0x9c, 0xb9, 0x5a, 0x5c, 0xab, 0xb2,
94666 - 0x5f, 0x22, 0x15, 0xb7, 0xf0, 0xce, 0x3b, 0x3a, 0x55, 0x82, 0xfe, 0x51,
94667 - 0x9f, 0x20, 0xf7, 0x17, 0xe8, 0x5b, 0x0c, 0xa9, 0x8e, 0x64, 0x7f, 0xc0,
94668 - 0xb5, 0xf7, 0xbc, 0x33, 0x2e, 0xd4, 0xb0, 0xd3, 0xec, 0x01, 0xf2, 0x80,
94669 - 0x8f, 0x63, 0x5d, 0xa6, 0xdc, 0x9b, 0xb4, 0xdd, 0x7f, 0xb7, 0x9c, 0xe1,
94670 - 0xd4, 0xc5, 0x10, 0xf7, 0x36, 0xda, 0xeb, 0x61, 0xa9, 0x46, 0xf9, 0xfe,
94671 - 0x58, 0xaf, 0x10, 0xf7, 0xce, 0x7e, 0xeb, 0xd0, 0xbc, 0x06, 0x59, 0xac,
94672 - 0x01, 0xd7, 0x32, 0x58, 0x03, 0xfe, 0x9f, 0x80, 0xbc, 0xe8, 0x33, 0x10,
94673 - 0x87, 0xf1, 0x7f, 0xcb, 0x3c, 0x9b, 0x75, 0x99, 0xbb, 0x73, 0xe6, 0x7c,
94674 - 0x29, 0xd3, 0xd7, 0x25, 0xa7, 0xf2, 0x5d, 0x92, 0x5c, 0xe5, 0x75, 0x99,
94675 - 0xac, 0x2c, 0xc9, 0x03, 0xce, 0x38, 0xde, 0xf7, 0x86, 0x37, 0xeb, 0xa8,
94676 - 0xaf, 0x32, 0x3a, 0x83, 0x67, 0xcf, 0x8e, 0xf4, 0xc9, 0x9f, 0x5d, 0x47,
94677 - 0x16, 0xd7, 0x6c, 0xc9, 0xdb, 0x69, 0x79, 0x5e, 0x63, 0xf9, 0xf4, 0x4f,
94678 - 0x42, 0xe0, 0xa4, 0xcc, 0xc9, 0xb7, 0x89, 0xf4, 0x38, 0xb1, 0x6d, 0x21,
94679 - 0xa7, 0x6c, 0x81, 0xac, 0xe3, 0x86, 0x37, 0xdb, 0xe6, 0xfa, 0xb1, 0x17,
94680 - 0xc0, 0xdd, 0xdd, 0xb7, 0x7a, 0x83, 0xf8, 0xb0, 0xe1, 0xb7, 0x7f, 0xf0,
94681 - 0xf3, 0x62, 0x69, 0xa9, 0x30, 0x07, 0xa7, 0x38, 0xeb, 0x40, 0x97, 0x98,
94682 - 0xc3, 0x8f, 0x69, 0xdc, 0xa1, 0xa5, 0x4c, 0x8c, 0xba, 0x0a, 0x8c, 0x1a,
94683 - 0x25, 0x76, 0x8d, 0xaf, 0xb9, 0x8c, 0x0b, 0x44, 0xe5, 0xb7, 0x25, 0xe2,
94684 - 0x70, 0x5c, 0x7e, 0x53, 0x7a, 0x16, 0xf3, 0x49, 0x54, 0x19, 0xcf, 0xbc,
94685 - 0x5e, 0x29, 0x90, 0x27, 0x29, 0x9f, 0xcf, 0xba, 0x5f, 0x54, 0x3b, 0x10,
94686 - 0xb7, 0x8a, 0xdd, 0x2d, 0x8a, 0x37, 0x4f, 0x6b, 0x1e, 0x36, 0x6e, 0x0d,
94687 - 0xc8, 0xf5, 0x55, 0xbe, 0x6f, 0x0a, 0x63, 0x47, 0x43, 0xb9, 0x75, 0xda,
94688 - 0xa5, 0x64, 0x6c, 0xc6, 0x3a, 0x20, 0x17, 0xa2, 0x8c, 0x53, 0x8f, 0x11,
94689 - 0x9f, 0x61, 0x0b, 0x87, 0xed, 0x19, 0xd6, 0x38, 0xa9, 0xfd, 0x89, 0x35,
94690 - 0xe1, 0xec, 0xd3, 0x3e, 0xce, 0xf2, 0xda, 0x18, 0x64, 0x4a, 0x5b, 0x94,
94691 - 0xa8, 0x4c, 0x58, 0x49, 0xd8, 0x3c, 0xfc, 0xdf, 0xe0, 0xf8, 0x71, 0xf9,
94692 - 0xc2, 0xc6, 0x45, 0xf0, 0xef, 0x61, 0xfb, 0x1c, 0xed, 0xaa, 0x3d, 0x8a,
94693 - 0x7b, 0xf9, 0xfc, 0x0f, 0x34, 0x8d, 0xf5, 0x69, 0x7f, 0x2c, 0x5e, 0xc7,
94694 - 0x3e, 0x2f, 0x3b, 0x32, 0x5b, 0x62, 0x2e, 0xda, 0xcc, 0x75, 0xef, 0xbd,
94695 - 0x67, 0x77, 0x9e, 0xbb, 0xb0, 0x4c, 0x7e, 0x63, 0xea, 0xdc, 0x8a, 0xe0,
94696 - 0x42, 0x9f, 0xec, 0xe2, 0x33, 0xf9, 0xbc, 0xc3, 0x92, 0x7d, 0x04, 0xf8,
94697 - 0x52, 0xe6, 0xaf, 0xe0, 0xd7, 0xde, 0xc2, 0x5f, 0x89, 0xf6, 0xef, 0x63,
94698 - 0x9b, 0xee, 0xf3, 0xc7, 0xfb, 0x3d, 0x74, 0x28, 0xda, 0x70, 0x3f, 0x63,
94699 - 0x2a, 0x6c, 0xc7, 0xa5, 0xb0, 0xc1, 0xa3, 0xe7, 0x75, 0x39, 0xad, 0x72,
94700 - 0xce, 0xbe, 0xbd, 0x69, 0x8c, 0x13, 0x38, 0x67, 0x38, 0x41, 0xb8, 0x1c,
94701 - 0xf2, 0xb9, 0xc5, 0x9d, 0xe4, 0x4d, 0xfe, 0xff, 0x36, 0x8d, 0xc5, 0xc4,
94702 - 0xad, 0xfe, 0xa6, 0xf7, 0xb8, 0x73, 0xc7, 0x0e, 0xc7, 0x2d, 0x62, 0xe7,
94703 - 0x8f, 0x71, 0x8d, 0x3a, 0xe4, 0x29, 0x8f, 0x8f, 0x80, 0xe7, 0xe7, 0x80,
94704 - 0x05, 0x51, 0xe7, 0xb6, 0x18, 0x8b, 0x4d, 0xae, 0x2d, 0x9b, 0x7a, 0x54,
94705 - 0x72, 0xe0, 0x6b, 0xfb, 0xe6, 0x6a, 0x53, 0xd0, 0x65, 0x8c, 0x7f, 0x90,
94706 - 0xe3, 0x8f, 0xf8, 0xeb, 0x9c, 0x70, 0x0b, 0xd6, 0x87, 0x65, 0x66, 0xd5,
94707 - 0xe8, 0x5f, 0xd6, 0x81, 0xee, 0x1d, 0x46, 0x7b, 0x9d, 0x36, 0xe1, 0xfd,
94708 - 0xc6, 0x09, 0x6c, 0x43, 0x4a, 0x6d, 0xc3, 0xfc, 0x32, 0xf5, 0x93, 0x7a,
94709 - 0x19, 0xe8, 0x63, 0x80, 0x79, 0xd4, 0x51, 0xe2, 0x6c, 0x5a, 0x5e, 0x58,
94710 - 0xe6, 0xda, 0x64, 0x34, 0xa7, 0x35, 0xb4, 0x32, 0xab, 0xf5, 0x3d, 0x83,
94711 - 0xe5, 0xc4, 0x8b, 0x05, 0x19, 0x97, 0xab, 0x2e, 0xd7, 0x2c, 0x51, 0xcd,
94712 - 0x87, 0x3b, 0x1a, 0xde, 0xff, 0x9c, 0xbf, 0x66, 0x29, 0xd5, 0xab, 0xc1,
94713 - 0xf2, 0xe5, 0x1d, 0x79, 0xe7, 0xad, 0xc3, 0x4d, 0xeb, 0x14, 0x70, 0xb8,
94714 - 0xb8, 0x90, 0x3f, 0x44, 0xba, 0xd8, 0x87, 0xcf, 0x25, 0xe7, 0xe3, 0xb3,
94715 - 0x68, 0x5b, 0xef, 0x60, 0x3d, 0x83, 0xd0, 0x8f, 0x8b, 0x3c, 0x62, 0xb8,
94716 - 0x45, 0xde, 0x7a, 0x18, 0xeb, 0x76, 0x50, 0xeb, 0x28, 0xe7, 0xbf, 0xfb,
94717 - 0x1e, 0xfa, 0xe7, 0x7d, 0x7e, 0x9e, 0xc6, 0x78, 0x7c, 0x77, 0xee, 0xa9,
94718 - 0xd2, 0x49, 0xea, 0xe6, 0xa4, 0xe6, 0x03, 0xd9, 0x87, 0xfb, 0x96, 0x6b,
94719 - 0x44, 0x39, 0x5c, 0x8e, 0x19, 0x7b, 0x7a, 0xa2, 0x69, 0x3e, 0x49, 0x7f,
94720 - 0x3e, 0xc1, 0xf5, 0x16, 0x89, 0xf4, 0xa6, 0xb4, 0x96, 0x24, 0x59, 0xa6,
94721 - 0x8f, 0x02, 0x5b, 0x35, 0xcd, 0xb1, 0x6e, 0x8d, 0xbd, 0xf9, 0xff, 0x13,
94722 - 0x7b, 0xf3, 0x56, 0x49, 0xe7, 0xd8, 0xe2, 0xfc, 0x2f, 0x72, 0x6c, 0xac,
94723 - 0xa7, 0x37, 0x72, 0x7b, 0x6e, 0x99, 0xf6, 0x29, 0xa3, 0xb1, 0xe3, 0x3f,
94724 - 0x95, 0xb8, 0x96, 0x9c, 0xe3, 0x55, 0xce, 0x71, 0xbc, 0xae, 0xb5, 0x74,
94725 - 0x0f, 0xe9, 0x9e, 0x5d, 0x5c, 0x26, 0xa6, 0x74, 0xc8, 0x5a, 0x25, 0xc0,
94726 - 0x95, 0x07, 0x7c, 0x4e, 0x5b, 0xec, 0x6e, 0xc5, 0x3e, 0x39, 0xe3, 0x5a,
94727 - 0x5a, 0x47, 0x68, 0x3d, 0xcc, 0x73, 0x03, 0x52, 0x5b, 0xa5, 0x9d, 0x4d,
94728 - 0xc2, 0xaf, 0x88, 0x86, 0x6a, 0xeb, 0xcc, 0x45, 0xb2, 0x4e, 0x64, 0x5c,
94729 - 0x98, 0xbb, 0xcf, 0xd9, 0xf3, 0xd8, 0x5f, 0x31, 0xf8, 0xfd, 0xe4, 0xf0,
94730 - 0x8c, 0x8f, 0x35, 0xcb, 0x7b, 0x74, 0x87, 0x03, 0xee, 0x95, 0xf3, 0x2f,
94731 - 0xb0, 0xde, 0xd4, 0x6b, 0xc7, 0xbe, 0x0e, 0x3b, 0x99, 0x8b, 0xf2, 0xff,
94732 - 0x0c, 0xb8, 0x3f, 0x7d, 0x8d, 0xb8, 0xfa, 0x1a, 0xb5, 0x6a, 0x46, 0x96,
94733 - 0x54, 0xf7, 0x3b, 0xfc, 0x58, 0x52, 0x87, 0xea, 0x07, 0x75, 0x2c, 0xaf,
94734 - 0x9c, 0x7b, 0x54, 0x71, 0xaa, 0x58, 0x1a, 0x36, 0x75, 0x26, 0x76, 0xcc,
94735 - 0xaf, 0x27, 0x6f, 0x7c, 0x7e, 0xcc, 0x7f, 0xfe, 0x5f, 0x7c, 0xf9, 0xda,
94736 - 0x8a, 0x31, 0xba, 0xd6, 0x56, 0x52, 0x7d, 0xcb, 0xf9, 0x65, 0xea, 0x07,
94737 - 0xf5, 0x84, 0x38, 0x17, 0xdc, 0x17, 0xc8, 0x24, 0x68, 0xf3, 0x7e, 0xea,
94738 - 0x7c, 0x63, 0x4d, 0x41, 0xb0, 0x3f, 0x83, 0x73, 0x81, 0x8c, 0x78, 0xad,
94739 - 0xd1, 0x0e, 0x70, 0xaf, 0xc5, 0x21, 0xa7, 0xdd, 0xfd, 0xd6, 0x55, 0xde,
94740 - 0x95, 0x4d, 0xf6, 0x14, 0xe7, 0x7f, 0x99, 0x71, 0x5c, 0xec, 0xb1, 0xfd,
94741 - 0xe4, 0xf3, 0x65, 0x95, 0x4f, 0x1e, 0xf2, 0xe9, 0x52, 0xdc, 0xa7, 0x8f,
94742 - 0x77, 0xc9, 0xd7, 0xb9, 0x0e, 0xac, 0x19, 0xe3, 0xb2, 0xc0, 0xb7, 0xf3,
94743 - 0xc4, 0xf9, 0xbe, 0x3e, 0xe2, 0x0b, 0x63, 0x8a, 0x99, 0xe9, 0x43, 0xc0,
94744 - 0x30, 0xb6, 0x8f, 0x2b, 0x07, 0x31, 0x3e, 0x56, 0x5c, 0x63, 0x8b, 0x61,
94745 - 0x60, 0x72, 0xad, 0x04, 0x7e, 0xc6, 0xba, 0xaf, 0x3d, 0xf2, 0x7a, 0xca,
94746 - 0x5f, 0xaf, 0x89, 0x3e, 0xca, 0x87, 0xfb, 0x80, 0x58, 0xd9, 0x89, 0xf1,
94747 - 0xce, 0x46, 0x53, 0xd0, 0xb1, 0x71, 0x9c, 0x1f, 0x52, 0x1f, 0x22, 0x8c,
94748 - 0x7d, 0xbe, 0x5d, 0xea, 0xf5, 0xfd, 0x36, 0x07, 0x6d, 0xf8, 0xaa, 0xa5,
94749 - 0x2e, 0xfa, 0x11, 0x1a, 0x47, 0x6c, 0x2d, 0xc3, 0x67, 0x05, 0x76, 0xd7,
94750 - 0xd5, 0x06, 0x8d, 0xe0, 0xfa, 0x6d, 0xac, 0x89, 0xd3, 0xda, 0xe0, 0x6d,
94751 - 0x95, 0x19, 0x7d, 0xcd, 0x63, 0xba, 0xa6, 0xb5, 0x52, 0x22, 0xf6, 0xb8,
94752 - 0xf8, 0xe7, 0xa6, 0xf9, 0xdc, 0xc1, 0x86, 0x79, 0x4d, 0xca, 0xd9, 0x1d,
94753 - 0x1b, 0x41, 0xdf, 0x19, 0xbc, 0xbd, 0x62, 0x6c, 0x40, 0xb1, 0x9a, 0xd2,
94754 - 0xfa, 0xa5, 0xf0, 0xd8, 0x06, 0xd6, 0x92, 0x3c, 0xf4, 0x06, 0xb8, 0xf7,
94755 - 0x08, 0xd6, 0x90, 0x5c, 0xdb, 0x9b, 0x5b, 0x70, 0x33, 0xcc, 0x85, 0xc1,
94756 - 0x86, 0xcd, 0x49, 0x0e, 0xbe, 0x40, 0x2e, 0x7c, 0x98, 0x31, 0x64, 0xf0,
94757 - 0xc1, 0x82, 0x1f, 0x6f, 0x1c, 0x61, 0x9c, 0x54, 0x56, 0xd6, 0x39, 0x77,
94758 - 0xee, 0x6f, 0xe3, 0x6f, 0xd7, 0x4a, 0x9c, 0xaf, 0x89, 0x3d, 0xb0, 0x6d,
94759 - 0x95, 0x5d, 0x1c, 0xb9, 0x16, 0x69, 0x1c, 0xef, 0xc5, 0x9e, 0xe0, 0xbd,
94760 - 0x38, 0xae, 0xdf, 0x90, 0x5f, 0xad, 0x06, 0xf6, 0x3c, 0x24, 0x6f, 0x3a,
94761 - 0xde, 0xdc, 0xbc, 0xdb, 0xcd, 0x35, 0x70, 0x0b, 0xcc, 0x65, 0x3b, 0x8e,
94762 - 0x5b, 0x14, 0xcf, 0xab, 0xbb, 0xf5, 0x6e, 0x4b, 0x65, 0x49, 0x0c, 0xf8,
94763 - 0x1a, 0xd6, 0xf0, 0x8d, 0xbb, 0x2d, 0x31, 0xf2, 0xa3, 0x6c, 0xae, 0xfd,
94764 - 0x57, 0xfc, 0x0f, 0x30, 0x90, 0xfa, 0x48, 0xbd, 0xbc, 0x21, 0x53, 0x8a,
94765 - 0xf9, 0xfb, 0xf5, 0x6b, 0xc4, 0x89, 0x80, 0xd3, 0x12, 0xd3, 0xa9, 0x8b,
94766 - 0x31, 0xf5, 0x09, 0x8e, 0x95, 0x9b, 0x71, 0xe1, 0x33, 0x7e, 0x0e, 0x61,
94767 - 0x3f, 0xdd, 0x7b, 0xd4, 0xc7, 0x86, 0x31, 0xe5, 0xcb, 0x19, 0x9b, 0x18,
94768 - 0xc1, 0xf9, 0x1c, 0x94, 0xd9, 0x2b, 0x8d, 0x38, 0x4c, 0x5f, 0xcf, 0xe0,
94769 - 0x87, 0x7e, 0xe3, 0xa1, 0xfc, 0xd7, 0x92, 0xc1, 0x15, 0xf2, 0x25, 0x07,
94770 - 0x58, 0xda, 0x23, 0xf9, 0xe9, 0xb0, 0x24, 0x57, 0x7e, 0xd6, 0x67, 0xf8,
94771 - 0x2d, 0xf5, 0x0f, 0xfb, 0x4d, 0xcf, 0xb1, 0x5d, 0xc7, 0xf9, 0x23, 0xc2,
94772 - 0x67, 0x1b, 0x7d, 0xc6, 0x7e, 0x3e, 0x1f, 0x5c, 0xb3, 0x9b, 0x74, 0xf4,
94773 - 0x5e, 0x5f, 0x47, 0x79, 0xdd, 0x32, 0xb9, 0x0e, 0xdc, 0x3b, 0xb8, 0xc2,
94774 - 0x39, 0x9a, 0x7e, 0x83, 0x2b, 0xc6, 0x47, 0xdf, 0xdb, 0x6f, 0x64, 0xa7,
94775 - 0x1f, 0xae, 0x83, 0xef, 0x9a, 0xb1, 0xa7, 0x46, 0xc1, 0xe3, 0x46, 0x58,
94776 - 0x83, 0x44, 0x9b, 0x3d, 0xe4, 0x4e, 0x09, 0xf5, 0x3d, 0xe1, 0xeb, 0x1c,
94777 - 0xf1, 0xa6, 0xcb, 0xc7, 0x9b, 0x5d, 0x1b, 0x93, 0x33, 0x35, 0x27, 0x8c,
94778 - 0x83, 0x34, 0xd8, 0x18, 0xe9, 0xff, 0x4f, 0x1b, 0x73, 0xc4, 0x1f, 0x27,
94779 - 0xb8, 0x16, 0xe0, 0x4a, 0xd0, 0x0e, 0x70, 0xa5, 0x99, 0xc7, 0x06, 0xb2,
94780 - 0x6f, 0x3c, 0xdf, 0xe8, 0xe7, 0x65, 0x7c, 0x7f, 0xde, 0xd2, 0xfd, 0xf3,
94781 - 0xca, 0x8e, 0x1f, 0x4f, 0x19, 0x27, 0xa0, 0x7a, 0x25, 0xec, 0xed, 0xf7,
94782 - 0xd4, 0x6f, 0x5e, 0xbc, 0x32, 0xa1, 0xb1, 0x9c, 0x9a, 0xca, 0xfa, 0xab,
94783 - 0x58, 0x9f, 0x33, 0xd8, 0x47, 0x0f, 0x46, 0x77, 0xeb, 0x86, 0x56, 0x9f,
94784 - 0xc9, 0xfa, 0xbc, 0x25, 0x23, 0x5d, 0x98, 0x5f, 0x5a, 0xeb, 0xb0, 0xda,
94785 - 0x9d, 0xaf, 0xc8, 0x03, 0x66, 0xee, 0x6d, 0x6d, 0x63, 0xeb, 0xcf, 0xb4,
94786 - 0x7d, 0x2b, 0xd0, 0x73, 0xea, 0xcf, 0xea, 0x33, 0xb3, 0x15, 0x6f, 0x3c,
94787 - 0x72, 0x72, 0xd8, 0x2e, 0x0a, 0x6b, 0xbd, 0xc7, 0xe5, 0x09, 0x97, 0xd7,
94788 - 0x7f, 0x88, 0xeb, 0xd3, 0xf4, 0x21, 0x13, 0x11, 0xfd, 0xfe, 0x20, 0x11,
94789 - 0x7b, 0x0c, 0x7b, 0x6f, 0x46, 0xbf, 0xf7, 0x38, 0xa4, 0x35, 0xe2, 0x35,
94790 - 0x21, 0x97, 0x62, 0x8d, 0xc1, 0xb3, 0xf2, 0xb8, 0x3b, 0xe4, 0xd6, 0xc5,
94791 - 0x70, 0xdc, 0x19, 0xcd, 0xf7, 0x1c, 0x90, 0xc7, 0xdc, 0x48, 0x5b, 0x76,
94792 - 0xcb, 0xe8, 0xfc, 0x44, 0x38, 0xd3, 0xbe, 0xe0, 0x44, 0xdb, 0xa6, 0xb6,
94793 - 0xb0, 0xa7, 0xb7, 0x80, 0xf7, 0x5b, 0xb1, 0x50, 0x6e, 0x83, 0xef, 0x1e,
94794 - 0x36, 0x35, 0x1d, 0xea, 0x5f, 0x11, 0x43, 0xee, 0x93, 0x6d, 0xfb, 0xb8,
94795 - 0x6c, 0xa7, 0xf8, 0x4d, 0xd6, 0x29, 0xb4, 0x07, 0x35, 0xe7, 0xb2, 0x0d,
94796 - 0xbc, 0xd9, 0x4e, 0xb5, 0xa9, 0x0e, 0xaa, 0x1f, 0x06, 0x9c, 0xda, 0xb6,
94797 - 0x89, 0x4f, 0x77, 0xf0, 0x88, 0x77, 0x9e, 0x83, 0x1c, 0x58, 0xef, 0x71,
94798 - 0x02, 0x6d, 0xe2, 0x9a, 0xdd, 0x74, 0xbe, 0x1f, 0xed, 0xbb, 0x31, 0x46,
94799 - 0xab, 0xbe, 0xa3, 0xe5, 0x9c, 0x34, 0x79, 0xcc, 0x3d, 0xf7, 0x74, 0x36,
94800 - 0xb5, 0x3f, 0x77, 0xd4, 0x7c, 0x6f, 0xf4, 0x3d, 0xca, 0xb8, 0x90, 0x91,
94801 - 0xbf, 0xc5, 0xf6, 0xb6, 0x97, 0xfb, 0xf6, 0xb6, 0x0f, 0x4b, 0x7b, 0x0f,
94802 - 0x45, 0xd1, 0xdd, 0x74, 0x5f, 0xa0, 0x43, 0x41, 0xfb, 0x28, 0x71, 0x85,
94803 - 0x76, 0x4b, 0x7d, 0xa6, 0xed, 0x28, 0x9f, 0xb5, 0xd8, 0xd4, 0x87, 0xff,
94804 - 0xd9, 0x87, 0x7d, 0x19, 0xbf, 0xfb, 0xbe, 0xd1, 0x33, 0x8b, 0xbe, 0x3f,
94805 - 0xe3, 0x17, 0xd4, 0xd3, 0xfd, 0xfc, 0xa9, 0x84, 0x7e, 0x1f, 0xb4, 0xbf,
94806 - 0xae, 0x05, 0x38, 0x12, 0xf3, 0x63, 0x0a, 0x26, 0xef, 0x64, 0xe2, 0xbe,
94807 - 0x94, 0x9d, 0xe6, 0x9d, 0x62, 0xd7, 0x21, 0xe7, 0x0b, 0x90, 0xf3, 0x64,
94808 - 0x98, 0xbe, 0x1f, 0xf3, 0x4b, 0x8e, 0xe4, 0xb6, 0x28, 0x6f, 0xda, 0x75,
94809 - 0xea, 0x26, 0x78, 0xc4, 0x16, 0x31, 0xc5, 0x02, 0x07, 0xca, 0x60, 0x8e,
94810 - 0xaf, 0xe1, 0xbc, 0xe5, 0xd7, 0x6f, 0xa4, 0x61, 0xd3, 0x5c, 0xfc, 0x28,
94811 - 0x77, 0xf8, 0xf4, 0x6b, 0x94, 0x31, 0xeb, 0xd9, 0x18, 0x0b, 0xe0, 0xfc,
94812 - 0x98, 0x63, 0x77, 0xa1, 0xd3, 0x13, 0xd0, 0xdd, 0x88, 0x38, 0xe5, 0x13,
94813 - 0x52, 0x98, 0x9e, 0x50, 0xfb, 0x3f, 0x08, 0xfb, 0x34, 0xef, 0x66, 0x65,
94814 - 0xe1, 0xe5, 0x3b, 0xb1, 0x4f, 0xe9, 0xe7, 0x6b, 0x0c, 0xc3, 0x6b, 0x51,
94815 - 0x9d, 0x26, 0xe7, 0x60, 0xdc, 0xcd, 0xe4, 0x92, 0xfd, 0xef, 0xaa, 0xfa,
94816 - 0xe5, 0x70, 0x56, 0x2a, 0x57, 0x6c, 0xad, 0x85, 0xc9, 0xc8, 0x7b, 0x1e,
94817 - 0x65, 0x38, 0x73, 0x3e, 0x0e, 0x9c, 0x22, 0x77, 0xff, 0x60, 0xd4, 0xac,
94818 - 0xe9, 0x5f, 0xfb, 0xe9, 0x03, 0x27, 0xcb, 0x8d, 0x63, 0x68, 0xfd, 0x0c,
94819 - 0xae, 0x3d, 0x74, 0xd4, 0xec, 0x1f, 0xfa, 0xc3, 0x37, 0xbd, 0x4c, 0x94,
94820 - 0xcf, 0xe4, 0xbd, 0xcc, 0xd1, 0x52, 0x57, 0x38, 0xb7, 0x77, 0x7d, 0xbd,
94821 - 0xfe, 0x28, 0xc6, 0x8b, 0xcb, 0xe0, 0xe6, 0x84, 0xfa, 0xf1, 0xf3, 0x7b,
94822 - 0x7c, 0x56, 0x13, 0x1f, 0x30, 0x7e, 0xeb, 0x1b, 0xf2, 0xd8, 0x06, 0xe5,
94823 - 0x44, 0xfb, 0x1e, 0x92, 0x1f, 0x39, 0xc3, 0xf6, 0x93, 0x5a, 0x77, 0x9c,
94824 - 0xc8, 0x30, 0x1f, 0x73, 0xd0, 0x49, 0xda, 0x6b, 0x12, 0x19, 0xfd, 0x98,
94825 - 0xf0, 0x9b, 0x16, 0xd6, 0x7a, 0x0c, 0xbb, 0x4f, 0x4a, 0x50, 0xef, 0x31,
94826 - 0x94, 0x39, 0x10, 0xfa, 0xa7, 0xf7, 0xc6, 0x79, 0xde, 0x63, 0xea, 0x3d,
94827 - 0x24, 0x44, 0xb9, 0xfd, 0xf1, 0x0e, 0x7e, 0xe3, 0xb9, 0x37, 0xde, 0x77,
94828 - 0xff, 0xd3, 0xe7, 0xd2, 0x89, 0x25, 0xfa, 0xac, 0x2d, 0xce, 0xbf, 0xfa,
94829 - 0xcd, 0xbb, 0x16, 0x0a, 0x9d, 0xa2, 0xf9, 0xb2, 0x4b, 0xef, 0x38, 0xac,
94830 - 0x7b, 0x48, 0xc4, 0x0e, 0x58, 0x8c, 0x7b, 0x13, 0xdf, 0x98, 0x43, 0x61,
94831 - 0x8c, 0x0d, 0x6d, 0x70, 0x86, 0x97, 0x46, 0x2c, 0xb9, 0x3f, 0x92, 0x89,
94832 - 0x5b, 0x72, 0x2c, 0xbe, 0x22, 0x78, 0x26, 0xf3, 0x29, 0x1b, 0x89, 0x02,
94833 - 0xef, 0x8f, 0x94, 0x39, 0x5e, 0x5c, 0xfd, 0x93, 0xe4, 0x31, 0xcf, 0xbb,
94834 - 0xe4, 0x4a, 0x28, 0x79, 0xd7, 0xdb, 0x1e, 0x73, 0xde, 0xd6, 0xe6, 0xfb,
94835 - 0xd5, 0x23, 0x10, 0x37, 0x16, 0x9e, 0x32, 0xb5, 0x87, 0x4b, 0x97, 0x06,
94836 - 0x37, 0xf4, 0x9b, 0xb9, 0x69, 0xd3, 0x2e, 0xa1, 0xdd, 0xea, 0xd7, 0x41,
94837 - 0x55, 0x2e, 0x0d, 0x56, 0x8f, 0xdc, 0x6e, 0xfc, 0x6d, 0xf2, 0xab, 0xc0,
94838 - 0x87, 0x89, 0xef, 0xa9, 0x0b, 0x3b, 0xbb, 0x7c, 0x26, 0x74, 0x66, 0xd9,
94839 - 0x5a, 0x6d, 0x63, 0x0e, 0xec, 0x94, 0x27, 0xdd, 0x27, 0x83, 0x38, 0x15,
94840 - 0xe3, 0x5a, 0x22, 0x9d, 0x9b, 0x13, 0x26, 0xe7, 0xb1, 0x69, 0x29, 0x17,
94841 - 0xea, 0x7a, 0x89, 0xb1, 0xaa, 0xa8, 0x62, 0x43, 0xf7, 0x26, 0xeb, 0xc1,
94842 - 0x7a, 0x64, 0x46, 0x31, 0xa3, 0x47, 0xf1, 0xc0, 0xe8, 0x5d, 0x97, 0xc6,
94843 - 0x61, 0xc9, 0x97, 0xae, 0x2d, 0xbb, 0x03, 0xac, 0xe1, 0x79, 0x75, 0xf9,
94844 - 0x09, 0xb4, 0x89, 0x33, 0xf7, 0x34, 0x9d, 0x6f, 0xcc, 0xc9, 0x26, 0xec,
94845 - 0x41, 0xab, 0x39, 0x1f, 0xcb, 0x73, 0xcd, 0x79, 0xd8, 0x57, 0x25, 0xdf,
94846 - 0xcb, 0xdc, 0x6b, 0x10, 0x6f, 0x77, 0xfd, 0x78, 0xfb, 0x87, 0x06, 0xa8,
94847 - 0x83, 0xf0, 0x6f, 0xf2, 0x91, 0xb1, 0xb6, 0x91, 0xf9, 0x52, 0xf8, 0x1f,
94848 - 0xbb, 0xb1, 0x53, 0xb4, 0x37, 0x76, 0xf2, 0xe3, 0xb8, 0xf6, 0x25, 0x70,
94849 - 0x92, 0x22, 0xf8, 0x45, 0xc1, 0xaf, 0xc3, 0xe7, 0xf5, 0x9d, 0xfe, 0xb7,
94850 - 0x98, 0xd3, 0x41, 0xcd, 0xad, 0x0f, 0xee, 0xc9, 0xad, 0xdf, 0x35, 0xc0,
94851 - 0xda, 0xe3, 0xe2, 0xd6, 0x6e, 0xdf, 0x88, 0xdf, 0x77, 0xe2, 0x96, 0xef,
94852 - 0x63, 0xf6, 0x4c, 0x51, 0xf7, 0xcc, 0x65, 0x8d, 0x11, 0xcf, 0x6f, 0x2d,
94853 - 0xc9, 0x8c, 0xd3, 0x25, 0xb9, 0xd5, 0xc0, 0x4e, 0x78, 0xe3, 0xb3, 0x6e,
94854 - 0xa1, 0x2f, 0x2c, 0xec, 0xcf, 0xe7, 0x29, 0x47, 0x8b, 0xe5, 0xc2, 0x1c,
94855 - 0xff, 0x90, 0x44, 0xc6, 0x68, 0x3b, 0x68, 0x13, 0x3e, 0x05, 0x2c, 0x03,
94856 - 0x4f, 0xdf, 0x6a, 0xcc, 0x7d, 0xbf, 0x9f, 0x1c, 0x29, 0xc3, 0xe0, 0x9d,
94857 - 0x0b, 0x5e, 0x2b, 0xf6, 0xdf, 0x31, 0xd6, 0xb4, 0xec, 0xcc, 0x95, 0x36,
94858 - 0x4b, 0x6d, 0x93, 0xbe, 0xc7, 0x94, 0xff, 0x1e, 0x61, 0xcc, 0x67, 0xb6,
94859 - 0x14, 0xdc, 0x33, 0x27, 0xc7, 0x4f, 0x25, 0x62, 0x49, 0x4b, 0xe7, 0xa5,
94860 - 0xf6, 0x2b, 0xeb, 0xce, 0xc1, 0x2e, 0xd1, 0x86, 0x29, 0xae, 0x81, 0xab,
94861 - 0x12, 0xd7, 0x68, 0x9f, 0xd4, 0xa6, 0xc5, 0x8b, 0x98, 0x67, 0x6e, 0x4b,
94862 - 0xf3, 0x0f, 0xb1, 0xd3, 0xe1, 0x44, 0x65, 0x46, 0xb1, 0x0e, 0x7c, 0x55,
94863 - 0xe7, 0x0e, 0x7b, 0x1c, 0x6a, 0xcc, 0x2d, 0xd1, 0xbf, 0x64, 0x1e, 0xa6,
94864 - 0x43, 0xb2, 0x15, 0x91, 0x57, 0xa0, 0xdf, 0x57, 0xd7, 0xb9, 0xe7, 0xc2,
94865 - 0xbd, 0xc6, 0x47, 0xac, 0xdf, 0x63, 0x49, 0xaf, 0xe6, 0x6b, 0x8b, 0x58,
94866 - 0x2f, 0xf0, 0xab, 0xf1, 0xf0, 0x29, 0xf8, 0x09, 0x5a, 0x27, 0xc1, 0x18,
94867 - 0xeb, 0x2c, 0x7c, 0xca, 0xc6, 0xb8, 0x10, 0x30, 0x62, 0x9a, 0xe7, 0x67,
94868 - 0xc0, 0x8b, 0x77, 0x73, 0x35, 0xc5, 0xea, 0x82, 0xc6, 0x63, 0x6b, 0xeb,
94869 - 0x1d, 0x6a, 0x2f, 0x6a, 0xd5, 0x3e, 0xac, 0x8b, 0x1c, 0xb7, 0xc6, 0x8a,
94870 - 0xfe, 0xf9, 0x16, 0xa9, 0x56, 0xd9, 0x96, 0x81, 0x56, 0xd5, 0x97, 0x20,
94871 - 0x1f, 0x65, 0xcb, 0x1a, 0xb8, 0x6e, 0x75, 0xc3, 0xc1, 0x2f, 0x85, 0xdf,
94872 - 0x08, 0x7e, 0x0f, 0x4a, 0xb6, 0x4c, 0xfe, 0xcd, 0xfc, 0x53, 0x47, 0xd3,
94873 - 0xf3, 0x5b, 0xf4, 0xfb, 0x11, 0xd6, 0xb4, 0x15, 0x7d, 0x3f, 0xad, 0x58,
94874 - 0xdd, 0x8f, 0x9b, 0x32, 0xbe, 0x9b, 0xf2, 0xb1, 0xee, 0xa7, 0x7e, 0x6d,
94875 - 0xed, 0xbf, 0x01, 0x17, 0x24, 0x5e, 0x9d, 0xe0, 0x70, 0x00, 0x00, 0x00 };
94876 + 0xec, 0x5b, 0x5f, 0x6c, 0x5b, 0xd7, 0x79, 0xff, 0xee, 0x21, 0x25, 0x51,
94877 + 0xb2, 0xfe, 0x5c, 0xc9, 0x8c, 0x43, 0x27, 0x4a, 0x43, 0x4a, 0x57, 0x12,
94878 + 0x13, 0x69, 0xe9, 0x95, 0xc6, 0x26, 0x2a, 0x46, 0x34, 0x2c, 0x29, 0xdb,
94879 + 0x4a, 0xe3, 0x07, 0xc5, 0xf5, 0xda, 0xac, 0xeb, 0x30, 0x81, 0xb2, 0xb1,
94880 + 0xec, 0x61, 0x83, 0x67, 0xac, 0x41, 0xb6, 0xb9, 0x30, 0x41, 0x29, 0x8e,
94881 + 0x92, 0xd2, 0x22, 0x67, 0x2b, 0x73, 0xb1, 0x65, 0x80, 0x42, 0x49, 0x76,
94882 + 0xb6, 0xd1, 0x62, 0xda, 0xbd, 0x74, 0x45, 0x1c, 0x0b, 0x8a, 0xe7, 0xe5,
94883 + 0xa1, 0x0f, 0x69, 0x17, 0x60, 0xed, 0xd0, 0x61, 0x86, 0xe2, 0xda, 0x79,
94884 + 0x28, 0xb6, 0x6c, 0x40, 0x96, 0x6c, 0x71, 0x73, 0xf7, 0xfb, 0x9d, 0x7b,
94885 + 0xaf, 0x4c, 0x2b, 0x1a, 0x9a, 0x87, 0x3d, 0xde, 0x03, 0x08, 0xe7, 0x9e,
94886 + 0x73, 0xbe, 0xf3, 0x9d, 0xef, 0xfb, 0xce, 0xf7, 0xf7, 0xd0, 0xfe, 0xc3,
94887 + 0x76, 0x69, 0x13, 0xaf, 0x75, 0xe0, 0x2f, 0x75, 0xec, 0x99, 0xe3, 0x63,
94888 + 0x0f, 0xa5, 0x1e, 0xe2, 0x38, 0xa4, 0xc2, 0x61, 0xf6, 0x86, 0x04, 0x2d,
94889 + 0x68, 0x41, 0x0b, 0x5a, 0xd0, 0x82, 0x16, 0xb4, 0xa0, 0x05, 0x2d, 0x68,
94890 + 0x41, 0x0b, 0x5a, 0xd0, 0x82, 0x16, 0xb4, 0xa0, 0x05, 0x2d, 0x68, 0x41,
94891 + 0x0b, 0x5a, 0xd0, 0x82, 0x16, 0xb4, 0xa0, 0x05, 0x2d, 0x68, 0x41, 0x0b,
94892 + 0x5a, 0xd0, 0x82, 0x16, 0xb4, 0xa0, 0x05, 0x2d, 0x68, 0x41, 0x0b, 0x5a,
94893 + 0xd0, 0x82, 0x16, 0xb4, 0xa0, 0x05, 0x2d, 0x68, 0x41, 0x0b, 0x5a, 0xd0,
94894 + 0x82, 0x16, 0xb4, 0xa0, 0x05, 0xed, 0xff, 0xb3, 0x85, 0x44, 0x4c, 0xf6,
94895 + 0x1d, 0xde, 0x9f, 0x44, 0x54, 0x3a, 0x7e, 0x3c, 0x6b, 0x49, 0x24, 0x94,
94896 + 0xbe, 0xf2, 0xf4, 0x8c, 0x25, 0x92, 0xa9, 0x0d, 0xc7, 0x73, 0xf2, 0x0b,
94897 + 0xa7, 0x10, 0x0d, 0x0b, 0xe7, 0xef, 0x4b, 0xdf, 0x3a, 0x79, 0xe9, 0x91,
94898 + 0xc4, 0x7b, 0x4b, 0x21, 0x89, 0x98, 0xe9, 0xb7, 0x46, 0xcd, 0x41, 0x89,
94899 + 0xf4, 0x62, 0xcf, 0x4b, 0x43, 0x97, 0xbb, 0xa4, 0xd3, 0xc7, 0x25, 0x52,
94900 + 0x2d, 0x25, 0xec, 0xfd, 0x32, 0x6c, 0x6e, 0x48, 0x58, 0x32, 0x38, 0xe3,
94901 + 0x7c, 0x4d, 0xa4, 0x58, 0x32, 0x88, 0x43, 0x8a, 0xb5, 0x88, 0x5c, 0x0b,
94902 + 0x11, 0xea, 0x7b, 0x46, 0xb6, 0xfc, 0xb1, 0x93, 0x09, 0xe3, 0x5c, 0x0b,
94903 + 0xdf, 0x75, 0x7f, 0x3e, 0x22, 0x2a, 0x9d, 0x48, 0x66, 0x43, 0x93, 0x52,
94904 + 0x5d, 0x74, 0x9c, 0x39, 0xfb, 0x5e, 0xe0, 0xe8, 0x91, 0x39, 0xcb, 0x1d,
94905 + 0x67, 0xed, 0x07, 0xcd, 0x09, 0xb9, 0x1b, 0x73, 0x21, 0x51, 0xd6, 0x3d,
94906 + 0xf8, 0x8b, 0x1b, 0xb9, 0xb3, 0xdf, 0x32, 0xb2, 0xcb, 0xed, 0x52, 0x2c,
94907 + 0x3b, 0x32, 0x63, 0x4b, 0x26, 0x6b, 0xb7, 0x62, 0xfd, 0x63, 0x67, 0x66,
94908 + 0x6b, 0xcf, 0xb0, 0x99, 0x93, 0x26, 0xc9, 0x44, 0x63, 0x80, 0x59, 0x34,
94909 + 0x72, 0x17, 0xfe, 0xae, 0x5d, 0xda, 0x40, 0x4f, 0x8a, 0xe3, 0x8f, 0x9d,
94910 + 0x90, 0x65, 0x61, 0x9d, 0xe7, 0x63, 0x5c, 0x27, 0x5e, 0x7e, 0x13, 0xe7,
94911 + 0x35, 0xe7, 0xd2, 0x50, 0x4c, 0xbe, 0x5b, 0x8f, 0xca, 0x77, 0xea, 0xa6,
94912 + 0xbc, 0x5a, 0xef, 0x95, 0xcb, 0x75, 0xc7, 0xf9, 0x8e, 0xed, 0x38, 0x6f,
94913 + 0xe1, 0xef, 0x3f, 0xed, 0x2d, 0x1e, 0xd0, 0x0a, 0xc6, 0x44, 0xfd, 0x2f,
94914 + 0xda, 0xa5, 0x33, 0x11, 0x17, 0xd5, 0x2e, 0xb3, 0xe5, 0x98, 0xcc, 0x95,
94915 + 0x4b, 0xc6, 0x13, 0x17, 0x16, 0x8c, 0xa9, 0x0b, 0x15, 0x9c, 0x19, 0xc6,
94916 + 0x9c, 0x14, 0x8a, 0xf6, 0x2b, 0x46, 0xae, 0x3e, 0x6f, 0x1c, 0xba, 0xd0,
94917 + 0x09, 0x1a, 0x79, 0xfe, 0x1e, 0x23, 0x7b, 0xf6, 0x96, 0x64, 0x6d, 0xca,
94918 + 0x38, 0x61, 0x7e, 0x0d, 0x62, 0xcf, 0x96, 0x48, 0x73, 0xb3, 0x47, 0xaf,
94919 + 0xe3, 0xa8, 0xb4, 0x73, 0x32, 0x9b, 0xb2, 0xcc, 0xa2, 0x90, 0x3e, 0x3d,
94920 + 0x77, 0xd9, 0xa5, 0xf9, 0xbc, 0x91, 0xbd, 0xd0, 0x6e, 0xe4, 0xce, 0x85,
94921 + 0x41, 0x87, 0xf4, 0x86, 0x84, 0xfb, 0x06, 0x62, 0x79, 0xa9, 0xe1, 0x0c,
94922 + 0x31, 0x55, 0x9a, 0x72, 0x05, 0xcd, 0xa0, 0xe5, 0xbb, 0x65, 0xf0, 0x50,
94923 + 0x06, 0x0f, 0x65, 0xf2, 0x16, 0x97, 0x4b, 0x43, 0x3e, 0x6f, 0x8e, 0xf3,
94924 + 0x23, 0x9b, 0xb4, 0x27, 0xe2, 0x19, 0xe5, 0xf3, 0xe9, 0x38, 0xff, 0x61,
94925 + 0x93, 0x57, 0xf2, 0xe3, 0x38, 0xaf, 0xda, 0x31, 0xd0, 0xee, 0x5c, 0x56,
94926 + 0x56, 0x09, 0xbc, 0x58, 0xc0, 0x4f, 0x59, 0x2f, 0x80, 0x87, 0x79, 0xf0,
94927 + 0x77, 0x1e, 0xbc, 0x55, 0x40, 0xc7, 0x2f, 0x3b, 0xaf, 0x60, 0xe4, 0x86,
94928 + 0xb6, 0xe4, 0x15, 0xa7, 0x8c, 0xf3, 0x2b, 0x0a, 0xb2, 0xde, 0x25, 0xf9,
94929 + 0x25, 0x53, 0xa6, 0x57, 0xfc, 0xfd, 0xbe, 0x1e, 0x1c, 0x93, 0x83, 0xe5,
94930 + 0x1e, 0xc8, 0x86, 0xb2, 0x4c, 0xd8, 0x22, 0x0e, 0x64, 0x54, 0x4c, 0x2a,
94931 + 0x11, 0x23, 0x6f, 0x9f, 0xd4, 0xf7, 0xbf, 0x62, 0x49, 0x26, 0x6f, 0x53,
94932 + 0x8e, 0x12, 0xcf, 0xdb, 0x85, 0x58, 0x18, 0xfa, 0xb6, 0x62, 0x15, 0xcc,
94933 + 0xb0, 0x50, 0x8e, 0x89, 0xd8, 0x1f, 0x43, 0x96, 0x47, 0x4b, 0x92, 0xf9,
94934 + 0x52, 0xc9, 0x97, 0xb1, 0x2b, 0xdf, 0xc7, 0x4b, 0x5f, 0xec, 0x90, 0x36,
94935 + 0xf5, 0x99, 0x26, 0xf9, 0x3d, 0xec, 0x25, 0xee, 0x3b, 0xf6, 0x62, 0x9f,
94936 + 0x0b, 0xe7, 0xee, 0x4d, 0x3c, 0x29, 0x42, 0xd8, 0x62, 0x7f, 0x93, 0xb6,
94937 + 0x11, 0x31, 0xb2, 0x56, 0x21, 0x16, 0x02, 0x5c, 0x5e, 0x8a, 0xa3, 0xde,
94938 + 0x5c, 0x53, 0xd6, 0xba, 0x15, 0x9a, 0xb3, 0x13, 0xf1, 0xa2, 0xdc, 0x0a,
94939 + 0x5d, 0xb5, 0xf5, 0x5c, 0x6b, 0xd6, 0x72, 0x64, 0x15, 0xd8, 0x9f, 0x83,
94940 + 0x3d, 0x6c, 0x80, 0xa3, 0xdf, 0x2d, 0xe9, 0xf9, 0x0e, 0xec, 0x4f, 0x36,
94941 + 0x01, 0x67, 0x9b, 0x24, 0x92, 0x55, 0xcc, 0x5f, 0x75, 0xe7, 0xbb, 0x5d,
94942 + 0xbc, 0xc5, 0xfe, 0x36, 0x8d, 0x5b, 0xe4, 0x15, 0x77, 0xfe, 0x2e, 0x17,
94943 + 0x77, 0xf1, 0x01, 0xcc, 0x03, 0xff, 0xe0, 0xe4, 0x90, 0xa1, 0xe7, 0xf7,
94944 + 0xd2, 0x9e, 0x7e, 0xa7, 0x74, 0x2b, 0xb4, 0x6a, 0x3b, 0x92, 0x1b, 0x1d,
94945 + 0x9c, 0x1c, 0x34, 0x5c, 0x7c, 0xa7, 0xdc, 0x7d, 0xf7, 0xb9, 0xf8, 0x06,
94946 + 0x27, 0x93, 0x86, 0x8b, 0x6f, 0xa5, 0xa4, 0xf7, 0x4a, 0xbe, 0x44, 0xd8,
94947 + 0xc1, 0x49, 0xcb, 0xb8, 0x4f, 0xa6, 0xbb, 0x07, 0x27, 0xfb, 0x0c, 0xf5,
94948 + 0x99, 0x5d, 0x2e, 0x1f, 0x09, 0x9f, 0x86, 0x5d, 0x9a, 0x06, 0x9e, 0xab,
94949 + 0xe7, 0x07, 0xb2, 0x56, 0xf1, 0x81, 0x5d, 0xfa, 0x7c, 0x9e, 0xa9, 0xe7,
94950 + 0x1e, 0x20, 0x5d, 0x3c, 0x7b, 0x66, 0xf4, 0x8e, 0x73, 0x7f, 0xe5, 0xb6,
94951 + 0x7c, 0x76, 0x3a, 0x93, 0xe7, 0x49, 0x24, 0x9c, 0x0e, 0x8f, 0xce, 0x95,
94952 + 0x8e, 0x49, 0xb6, 0x1c, 0x97, 0xd9, 0x91, 0x56, 0x99, 0x36, 0xfb, 0xa7,
94953 + 0x0f, 0x0a, 0x7d, 0x4f, 0x64, 0x74, 0xc6, 0xbb, 0xc3, 0x9c, 0x18, 0x32,
94954 + 0x0b, 0x1e, 0x0f, 0xd6, 0x24, 0x62, 0x00, 0xbe, 0xbf, 0x16, 0x96, 0xe7,
94955 + 0xeb, 0x86, 0x34, 0x6b, 0xfb, 0x4c, 0x98, 0xeb, 0xd0, 0xc3, 0x67, 0xcb,
94956 + 0xd4, 0x63, 0xea, 0xac, 0x64, 0xaa, 0x5a, 0x67, 0x7d, 0x7b, 0x6d, 0xe3,
94957 + 0xdd, 0x16, 0x0a, 0x02, 0x73, 0x4c, 0x5b, 0x66, 0x55, 0x5a, 0x24, 0x33,
94958 + 0x25, 0x85, 0xaa, 0xbd, 0x65, 0x3f, 0xb1, 0x65, 0xd9, 0x80, 0x1e, 0x88,
94959 + 0x99, 0x4d, 0x71, 0x9e, 0xf0, 0x0d, 0xb0, 0xa6, 0x6b, 0x7b, 0x21, 0xd8,
94960 + 0xde, 0x4c, 0x8a, 0xb0, 0x52, 0xd0, 0xfe, 0xa2, 0x0e, 0x7d, 0xac, 0xdf,
94961 + 0xd7, 0xe1, 0xfa, 0xbb, 0x08, 0x6c, 0xb4, 0x1d, 0x76, 0xfe, 0x19, 0xd8,
94962 + 0x60, 0xaf, 0x91, 0x3d, 0xe7, 0x38, 0xf0, 0x3f, 0x51, 0x25, 0xb4, 0x41,
94963 + 0xd8, 0x7b, 0x9d, 0x6b, 0xed, 0x98, 0x17, 0x73, 0xd6, 0xee, 0x06, 0x8f,
94964 + 0x8e, 0x33, 0x69, 0xc7, 0xa5, 0x68, 0x77, 0x61, 0x5f, 0x93, 0xf4, 0x58,
94965 + 0xd4, 0x79, 0xda, 0xf5, 0x2e, 0x9c, 0x67, 0x70, 0xdc, 0x89, 0xf3, 0x3a,
94966 + 0x30, 0x17, 0x9b, 0xa5, 0x2d, 0xa7, 0xe8, 0xb7, 0x5c, 0x1f, 0x2a, 0x72,
94967 + 0x1d, 0xb4, 0x72, 0x8f, 0x86, 0x8b, 0xb4, 0xa4, 0x53, 0x72, 0xb3, 0xb4,
94968 + 0x57, 0xae, 0x45, 0x29, 0x03, 0xe0, 0x2c, 0xc3, 0x27, 0x46, 0x0d, 0xd0,
94969 + 0x4f, 0xba, 0xe9, 0x03, 0x77, 0x7b, 0x63, 0xe3, 0x7e, 0xf7, 0x0c, 0x31,
94970 + 0x43, 0xe9, 0x4e, 0xc9, 0xe9, 0x39, 0x51, 0x6a, 0x74, 0x97, 0xb7, 0xde,
94971 + 0x69, 0xec, 0x3f, 0xa7, 0xe4, 0xc0, 0xc3, 0xf0, 0x5b, 0x38, 0xeb, 0xaa,
94972 + 0xe5, 0x38, 0x57, 0xed, 0xf7, 0x61, 0xf7, 0x4a, 0x9a, 0xac, 0x6b, 0x9d,
94973 + 0xd2, 0x46, 0x7b, 0x36, 0x1a, 0x64, 0x18, 0x93, 0x53, 0x65, 0xee, 0x29,
94974 + 0x48, 0xd8, 0x22, 0x0c, 0xe1, 0xff, 0x05, 0x70, 0x21, 0x69, 0x81, 0x3d,
94975 + 0x6e, 0xd8, 0x51, 0xd2, 0xdb, 0xe5, 0xc2, 0x77, 0xe3, 0x0c, 0xd2, 0x4e,
94976 + 0xfb, 0x73, 0xb4, 0xfd, 0x65, 0x43, 0x2a, 0x33, 0xb1, 0x08, 0x6b, 0x1a,
94977 + 0xa1, 0xbc, 0xb3, 0xdd, 0x70, 0xff, 0x32, 0x3b, 0x54, 0x30, 0x95, 0xbe,
94978 + 0x6f, 0x91, 0x5c, 0xe9, 0x7e, 0x99, 0xb3, 0x71, 0x9e, 0x15, 0x06, 0xcd,
94979 + 0xf4, 0x35, 0x03, 0x85, 0x90, 0x82, 0x95, 0xf5, 0x50, 0x56, 0x3e, 0xad,
94980 + 0xff, 0x8c, 0xf3, 0x0a, 0x46, 0xd8, 0xe2, 0x19, 0xbf, 0xe5, 0xc9, 0x87,
94981 + 0xba, 0x67, 0x4b, 0xb6, 0xd4, 0xce, 0x31, 0xe8, 0x68, 0xd3, 0x74, 0x84,
94982 + 0xd2, 0xfa, 0xee, 0x0c, 0x95, 0xf6, 0x63, 0x00, 0x41, 0xef, 0xc0, 0x03,
94983 + 0x3e, 0xb8, 0xd7, 0xc2, 0xde, 0x08, 0x68, 0xec, 0x68, 0xa0, 0xbf, 0x8d,
94984 + 0xf0, 0x90, 0x55, 0xc4, 0x3b, 0x43, 0xf3, 0x6d, 0xb8, 0x7c, 0xfb, 0xb2,
94985 + 0x7a, 0x1d, 0xb2, 0xfa, 0xc8, 0x39, 0x30, 0x46, 0x1c, 0x29, 0xe0, 0x80,
94986 + 0xdc, 0x4d, 0xfa, 0x2c, 0xfa, 0x29, 0x73, 0x0b, 0x17, 0x6c, 0x41, 0x85,
94987 + 0xd2, 0xed, 0x92, 0x33, 0x75, 0x1c, 0x00, 0xec, 0xb8, 0x68, 0x3f, 0x6f,
94988 + 0x91, 0x47, 0x6f, 0x6c, 0x25, 0xb4, 0xde, 0xe4, 0x2b, 0x8c, 0x05, 0x45,
94989 + 0xd0, 0xb6, 0x9e, 0x50, 0x9a, 0xb5, 0x76, 0xc8, 0x5c, 0x22, 0x4d, 0xe9,
94990 + 0xb7, 0x64, 0xb5, 0xa4, 0xf6, 0x34, 0x4b, 0x97, 0x4c, 0x41, 0x46, 0xd5,
94991 + 0x71, 0xc4, 0xb0, 0x91, 0x76, 0x09, 0x3d, 0xc4, 0x58, 0x10, 0x03, 0xad,
94992 + 0xeb, 0x09, 0x53, 0x6e, 0x39, 0x6a, 0x10, 0xfb, 0x47, 0x70, 0x0f, 0x87,
94993 + 0x79, 0xa7, 0xca, 0x83, 0x23, 0x4c, 0x88, 0x32, 0xef, 0x69, 0x16, 0xe2,
94994 + 0xe6, 0xda, 0x70, 0xcc, 0x14, 0xce, 0x23, 0x5e, 0x4e, 0x71, 0x2f, 0xf9,
94995 + 0x73, 0xf7, 0x7c, 0x92, 0x3f, 0x7f, 0x9d, 0x32, 0xa3, 0xec, 0xa0, 0x63,
94996 + 0xa0, 0xa9, 0x1b, 0x72, 0x1b, 0x5d, 0x80, 0x4f, 0xb4, 0x1f, 0xd7, 0x3a,
94997 + 0xdc, 0x37, 0x76, 0xaf, 0x5c, 0x83, 0xdd, 0xc5, 0x95, 0x18, 0x55, 0x7b,
94998 + 0xaf, 0x9e, 0x53, 0x96, 0x2f, 0x4f, 0xca, 0x60, 0xf7, 0x36, 0x19, 0x10,
94999 + 0xe7, 0xce, 0x72, 0x38, 0x52, 0x21, 0x0d, 0x2e, 0x2d, 0x73, 0xd6, 0x7a,
95000 + 0x22, 0x2c, 0x8d, 0xf4, 0x7c, 0xec, 0x28, 0xcb, 0x2a, 0xf4, 0x29, 0xe2,
95001 + 0x6f, 0x16, 0xb5, 0x27, 0x2c, 0x4f, 0x8c, 0x19, 0x12, 0x3f, 0xa4, 0xe4,
95002 + 0xd0, 0xc3, 0xc4, 0xf9, 0x13, 0xf2, 0x38, 0x9e, 0xe1, 0xfa, 0x18, 0x75,
95003 + 0x21, 0x8c, 0x5e, 0xf3, 0x87, 0xb9, 0x46, 0x5d, 0x7f, 0xdd, 0xd3, 0xf5,
95004 + 0x8f, 0x9c, 0x43, 0x63, 0x61, 0x0f, 0x36, 0xd2, 0x00, 0x2b, 0xb8, 0xef,
95005 + 0x9d, 0x60, 0x09, 0xd3, 0xa8, 0x17, 0x84, 0x2d, 0xec, 0x00, 0x8b, 0xe0,
95006 + 0xf4, 0x15, 0xda, 0x50, 0xb7, 0xe7, 0x33, 0x7c, 0x9b, 0xe2, 0x39, 0xec,
95007 + 0x77, 0xb2, 0x3f, 0xee, 0xe3, 0x7e, 0xc2, 0x6f, 0x8f, 0xa7, 0xb8, 0x06,
95008 + 0xd9, 0x31, 0xa6, 0xa2, 0x4d, 0xe2, 0x5b, 0xc1, 0xff, 0x34, 0xc6, 0x56,
95009 + 0xce, 0x99, 0x18, 0x4f, 0xa0, 0xb7, 0x24, 0x5f, 0xa3, 0x1d, 0x71, 0x3f,
95010 + 0x63, 0xed, 0xbb, 0x9e, 0xef, 0x6c, 0x9f, 0x0e, 0xa7, 0xa3, 0xf0, 0x9d,
95011 + 0x32, 0x55, 0x2c, 0x9d, 0x44, 0x3e, 0x24, 0x85, 0x7b, 0xd2, 0xd4, 0x8b,
95012 + 0xf6, 0x71, 0xf8, 0xc6, 0xa9, 0x62, 0x8d, 0x39, 0x11, 0xdc, 0x17, 0xf6,
95013 + 0x21, 0x3e, 0x47, 0xd4, 0x42, 0xa4, 0x70, 0x6f, 0x9a, 0x3e, 0x39, 0x2e,
95014 + 0xf1, 0xda, 0x7b, 0xc8, 0x39, 0x4c, 0xc9, 0x6a, 0x1d, 0xfb, 0xf6, 0x5e,
95015 + 0xd2, 0x5c, 0x44, 0xfe, 0x10, 0x4e, 0x4b, 0x58, 0xa5, 0x9b, 0x23, 0xb3,
95016 + 0xa9, 0x76, 0xe4, 0x59, 0x93, 0x7b, 0xd5, 0xda, 0xc1, 0xbd, 0xa1, 0xb5,
95017 + 0x3d, 0xd3, 0x4d, 0xe9, 0xc2, 0x5e, 0xb5, 0x20, 0xb2, 0x5c, 0x12, 0x85,
95018 + 0x9c, 0x26, 0x76, 0x44, 0x30, 0x5e, 0xfb, 0xf2, 0x97, 0x55, 0x3a, 0x24,
95019 + 0xf9, 0xa8, 0x9c, 0x58, 0x49, 0x85, 0x99, 0x3f, 0xc6, 0xa7, 0xe4, 0x04,
95020 + 0x72, 0xc6, 0x67, 0x64, 0xb6, 0x04, 0xba, 0x34, 0xdf, 0x31, 0xf0, 0xdb,
95021 + 0x0b, 0xdc, 0xa4, 0x3d, 0x0a, 0xdf, 0xea, 0xd2, 0x0e, 0x9a, 0x33, 0x39,
95022 + 0xe6, 0x48, 0x29, 0xc6, 0x94, 0xf7, 0xa0, 0x27, 0xb4, 0x93, 0x9f, 0xcb,
95023 + 0xaa, 0xd5, 0x2a, 0x79, 0xd7, 0x2f, 0x68, 0x3d, 0x0d, 0xa7, 0xdf, 0xf5,
95024 + 0xd6, 0xae, 0x63, 0x8d, 0xfa, 0xba, 0xab, 0xe1, 0xee, 0xbe, 0xa5, 0xf3,
95025 + 0x9c, 0xab, 0x36, 0xbf, 0x09, 0xfb, 0x83, 0x51, 0x17, 0xf6, 0xcd, 0xd1,
95026 + 0x55, 0xeb, 0x2b, 0x5d, 0xd2, 0x86, 0x73, 0xca, 0x3c, 0x27, 0x4a, 0xdf,
95027 + 0x8a, 0xf5, 0x6b, 0x1e, 0xae, 0x9f, 0x02, 0x57, 0x3b, 0xe9, 0x46, 0x0b,
95028 + 0x63, 0x1d, 0xf4, 0x21, 0xdf, 0xc9, 0x6f, 0xf9, 0x18, 0xc2, 0xbe, 0xe6,
95029 + 0xe1, 0xfa, 0x5e, 0x03, 0x2e, 0xae, 0xb1, 0xe7, 0x99, 0x38, 0xbb, 0x8d,
95030 + 0xbc, 0x91, 0x1f, 0xde, 0x01, 0xef, 0x23, 0x69, 0x4c, 0xc1, 0xa7, 0x4f,
95031 + 0xd5, 0x75, 0x5e, 0x67, 0xe4, 0xca, 0xc8, 0xb7, 0xea, 0x2f, 0x82, 0x46,
95032 + 0xe4, 0x61, 0xf5, 0x01, 0x2f, 0xd7, 0xa6, 0xad, 0xac, 0x6b, 0x9f, 0x45,
95033 + 0x7f, 0x53, 0xd4, 0xf6, 0x74, 0x05, 0x63, 0x9d, 0x67, 0xe3, 0x6e, 0xae,
95034 + 0x48, 0x5f, 0xad, 0xdc, 0xe5, 0xfe, 0xbf, 0x6d, 0x53, 0x42, 0xfa, 0x3e,
95035 + 0x19, 0xd7, 0xa8, 0x67, 0x77, 0xc3, 0x9f, 0x3b, 0x1f, 0x30, 0xbe, 0x4c,
95036 + 0x31, 0xf6, 0x4c, 0x31, 0x66, 0x18, 0x9e, 0x1f, 0x8c, 0x37, 0xe0, 0x88,
95037 + 0x03, 0xc7, 0x79, 0x4f, 0x6f, 0x4f, 0x7b, 0xb8, 0xfc, 0xdc, 0xd3, 0xf7,
95038 + 0xa5, 0x2f, 0xdd, 0x73, 0xe7, 0xba, 0x61, 0xba, 0xe3, 0x66, 0xed, 0x87,
95039 + 0x61, 0xf7, 0xa0, 0x3f, 0x3e, 0xad, 0xa0, 0x5f, 0xb9, 0x9a, 0x7b, 0x1f,
95040 + 0xb0, 0x71, 0xe8, 0x1e, 0x3f, 0xfd, 0xbb, 0x75, 0x73, 0x6f, 0x57, 0x06,
95041 + 0xbc, 0xd3, 0x0c, 0xf9, 0xce, 0x84, 0x49, 0x4b, 0x7d, 0x12, 0xfb, 0xe5,
95042 + 0x18, 0x63, 0x62, 0x1e, 0x7c, 0x1c, 0x31, 0x87, 0xcd, 0x59, 0xe2, 0x8e,
95043 + 0x0a, 0x70, 0x22, 0x8f, 0x4c, 0xb7, 0x78, 0xf7, 0xfc, 0x7d, 0x9e, 0x0f,
95044 + 0xdc, 0xbb, 0x38, 0x46, 0xff, 0x7d, 0x8f, 0x9e, 0x1b, 0x9d, 0x2e, 0x3d,
95045 + 0xfe, 0xfa, 0x80, 0x79, 0xe7, 0x78, 0x75, 0xaf, 0x27, 0x4f, 0x7c, 0x3f,
95046 + 0xe3, 0xd1, 0xc5, 0xbb, 0x69, 0xa4, 0x89, 0xf7, 0xf2, 0x5f, 0xc0, 0xa3,
95047 + 0xf3, 0x8c, 0x82, 0x4a, 0x23, 0x6f, 0x49, 0x31, 0x56, 0xc1, 0xe6, 0xc5,
95048 + 0xc2, 0x9d, 0x24, 0xec, 0x69, 0xec, 0x7a, 0xb7, 0xc4, 0x7b, 0xbe, 0x05,
95049 + 0x1f, 0xcd, 0x7b, 0xff, 0x50, 0xe6, 0x4a, 0xfd, 0x76, 0xb3, 0x41, 0x7b,
95050 + 0x4d, 0x24, 0xcf, 0xcb, 0xb0, 0x7d, 0x5e, 0xe7, 0x4f, 0x89, 0xf8, 0x29,
95051 + 0xa1, 0x6c, 0x6f, 0xc9, 0x80, 0xce, 0x6b, 0x3e, 0x14, 0x0b, 0x72, 0x99,
95052 + 0x2a, 0xc3, 0xc6, 0xc6, 0xfe, 0xcd, 0xd1, 0xf9, 0x28, 0xf2, 0xa5, 0x1b,
95053 + 0x3b, 0xe0, 0x7a, 0x53, 0xe3, 0x21, 0xbe, 0x46, 0x5c, 0x86, 0xb4, 0x8c,
95054 + 0xf9, 0xf8, 0x2c, 0x99, 0xaf, 0xfb, 0x38, 0xc3, 0xf0, 0xc3, 0xf0, 0x01,
95055 + 0x63, 0xbf, 0xe1, 0xe9, 0x0b, 0xbf, 0x7f, 0xe8, 0x30, 0x07, 0x52, 0xe9,
95056 + 0x3f, 0xf7, 0xe6, 0xae, 0x50, 0x06, 0x18, 0xfb, 0x72, 0x7f, 0xd1, 0xf3,
95057 + 0x39, 0x05, 0x23, 0x53, 0xa7, 0x0c, 0xa8, 0x2b, 0xb8, 0x7f, 0xad, 0x9f,
95058 + 0xb0, 0x99, 0xf2, 0x17, 0x10, 0x1f, 0xbb, 0xdd, 0xbc, 0x01, 0xb5, 0x55,
95059 + 0xa6, 0xce, 0xb9, 0xf5, 0x96, 0xac, 0xdd, 0xe4, 0xd9, 0xd2, 0x41, 0xcc,
95060 + 0x4d, 0xe1, 0x8f, 0xb2, 0x23, 0xcc, 0x61, 0x7c, 0x67, 0x3c, 0x38, 0x19,
95061 + 0xcf, 0x22, 0x66, 0x65, 0x0e, 0x4f, 0x60, 0x6c, 0x78, 0x35, 0x96, 0x96,
95062 + 0x7b, 0x05, 0x39, 0x0a, 0xe4, 0x39, 0x00, 0x7e, 0xe2, 0x32, 0x51, 0xc7,
95063 + 0x9d, 0x6f, 0xf9, 0xb3, 0x2d, 0x98, 0xc2, 0x6d, 0x18, 0xd7, 0xf7, 0x4d,
95064 + 0xd4, 0x7f, 0xec, 0xd0, 0x1f, 0xfc, 0xad, 0xb6, 0x97, 0x78, 0x43, 0xde,
95065 + 0x97, 0x31, 0x9e, 0x28, 0x4f, 0x1a, 0x87, 0xca, 0xdc, 0xa3, 0x5e, 0xea,
95066 + 0x11, 0x2b, 0x9e, 0x55, 0xc8, 0x51, 0xc7, 0x3a, 0x71, 0xe6, 0x29, 0xe8,
95067 + 0x46, 0xc1, 0x98, 0x1a, 0xea, 0x92, 0x7c, 0xb2, 0x07, 0x34, 0x3f, 0x82,
95068 + 0x1e, 0xb1, 0xc3, 0xfa, 0x35, 0xcc, 0x43, 0x8f, 0x92, 0xb4, 0x8f, 0x56,
95069 + 0x5d, 0x57, 0x4e, 0xeb, 0xb8, 0x35, 0xe0, 0xe9, 0xd6, 0x3f, 0x99, 0xae,
95070 + 0x2e, 0x3d, 0x8d, 0xf1, 0x2e, 0xcc, 0xff, 0x26, 0x7a, 0xc4, 0xac, 0x31,
95071 + 0x7f, 0x9e, 0x36, 0x38, 0x8e, 0xf9, 0xcf, 0x01, 0xc7, 0x9f, 0xe0, 0xfb,
95072 + 0x7e, 0x7c, 0xff, 0xd1, 0xb6, 0xbd, 0xdf, 0xe0, 0xd9, 0x98, 0xcf, 0x6e,
95073 + 0x9b, 0xf7, 0xfd, 0xb7, 0x8e, 0x93, 0xd2, 0xbd, 0x06, 0xc6, 0xd7, 0x22,
95074 + 0xb2, 0xfb, 0x7c, 0x9b, 0xa8, 0xaa, 0xeb, 0xc3, 0x55, 0xd5, 0x94, 0x9e,
95075 + 0xf3, 0xf4, 0xdf, 0x3f, 0xc2, 0x1e, 0x4b, 0xd4, 0x1a, 0x2e, 0x8d, 0x77,
95076 + 0xab, 0x6d, 0xf4, 0x99, 0xe3, 0x7d, 0x4b, 0xec, 0x0b, 0xc7, 0x47, 0x6b,
95077 + 0x84, 0xe1, 0xf7, 0x89, 0xe3, 0x7d, 0xb5, 0x9f, 0x00, 0x16, 0x72, 0x29,
95078 + 0xfb, 0xf8, 0x09, 0xff, 0xda, 0xb6, 0x33, 0xb5, 0x6c, 0x71, 0x26, 0xed,
95079 + 0xfe, 0x99, 0xe3, 0xd9, 0x0a, 0xf3, 0x83, 0x44, 0x4c, 0x74, 0x1e, 0x5e,
95080 + 0x38, 0x3e, 0x53, 0x0a, 0x4b, 0x48, 0xd3, 0xe2, 0xaf, 0x73, 0x8d, 0xf7,
95081 + 0xb0, 0x13, 0x6d, 0xa4, 0xab, 0x11, 0x0f, 0xe3, 0x0c, 0xf1, 0x9c, 0x00,
95082 + 0x9e, 0x24, 0xf0, 0x30, 0xde, 0xb8, 0xf4, 0xc6, 0x97, 0x76, 0xa2, 0x8d,
95083 + 0xb8, 0x78, 0x96, 0x8f, 0xaf, 0x47, 0xd4, 0xf9, 0xb7, 0x49, 0xaf, 0xc9,
95084 + 0x9c, 0xd6, 0xf5, 0x35, 0x4d, 0x92, 0x3f, 0x8b, 0xdc, 0xc6, 0x1e, 0xf3,
95085 + 0xc6, 0x77, 0x9b, 0xac, 0xb7, 0xe3, 0x8a, 0xf3, 0xec, 0xb1, 0x96, 0x8a,
95086 + 0x63, 0x0e, 0xe3, 0x65, 0x1f, 0x56, 0x79, 0xb0, 0x1d, 0x0d, 0x7c, 0x37,
95087 + 0x79, 0xb2, 0xe6, 0x99, 0x7e, 0xdd, 0xd9, 0x48, 0x0b, 0x40, 0x71, 0x0f,
95088 + 0xdd, 0x5b, 0xf7, 0xe0, 0xf3, 0x89, 0x85, 0x35, 0xd2, 0x96, 0x04, 0xaf,
95089 + 0x3e, 0x6d, 0x9f, 0xf6, 0xfe, 0xb8, 0x37, 0x89, 0x3f, 0xff, 0x3c, 0x5f,
95090 + 0x06, 0xa4, 0x8b, 0x3d, 0x74, 0xf9, 0x13, 0x75, 0x73, 0x12, 0x76, 0xc7,
95091 + 0x37, 0x10, 0xc7, 0x59, 0xb5, 0x29, 0xfb, 0x16, 0xdc, 0xbb, 0xf6, 0xb1,
95092 + 0xa8, 0x21, 0x14, 0x73, 0xb9, 0x38, 0xeb, 0xd5, 0xa3, 0xb2, 0x09, 0x5c,
95093 + 0x19, 0xd4, 0x94, 0x6e, 0x5d, 0x34, 0x0d, 0xff, 0xb8, 0x0e, 0xfd, 0xbc,
95094 + 0x6a, 0xf1, 0x2d, 0x26, 0xcc, 0x78, 0x27, 0xc5, 0xda, 0xcf, 0x01, 0xc3,
95095 + 0x3c, 0xea, 0xf6, 0x3b, 0xcb, 0x12, 0x60, 0x96, 0xb1, 0x76, 0xca, 0xf5,
95096 + 0xcb, 0xf4, 0xed, 0xc8, 0xa9, 0x50, 0xc3, 0x58, 0xff, 0xe3, 0xe4, 0xa3,
95097 + 0x8d, 0xb0, 0x3b, 0xbd, 0x83, 0x20, 0xe6, 0x2c, 0x26, 0xe6, 0x97, 0xe0,
95098 + 0xc3, 0x2b, 0x96, 0xda, 0xad, 0xb4, 0x46, 0x26, 0x2a, 0xf0, 0x49, 0xa8,
95099 + 0x78, 0x13, 0xf1, 0x25, 0x79, 0x5f, 0xdf, 0x43, 0x93, 0x35, 0x6c, 0xf6,
95100 + 0xa8, 0xaf, 0x52, 0xaf, 0x34, 0xe5, 0xa1, 0x33, 0x88, 0xcb, 0x23, 0x4f,
95101 + 0x20, 0xe6, 0x40, 0x5e, 0x67, 0x0a, 0xa8, 0xe2, 0xa9, 0x23, 0x3f, 0xf8,
95102 + 0x83, 0x19, 0xcb, 0xcd, 0xff, 0x75, 0x3c, 0x13, 0x97, 0xc7, 0xd0, 0x99,
95103 + 0x76, 0xed, 0x67, 0xf2, 0xda, 0xdf, 0xf4, 0x9b, 0x53, 0xaa, 0x0d, 0x39,
95104 + 0x06, 0x12, 0x4f, 0x64, 0x38, 0xe6, 0xa0, 0x48, 0x1f, 0xf3, 0x4e, 0xf8,
95105 + 0xe1, 0xbe, 0x35, 0x78, 0xb7, 0x33, 0x84, 0x57, 0x12, 0x3e, 0x13, 0x92,
95106 + 0xa6, 0x33, 0x7c, 0x0b, 0x91, 0x3d, 0xa8, 0xc3, 0x88, 0xb3, 0x2f, 0x8c,
95107 + 0x7e, 0x02, 0x7f, 0xfb, 0x90, 0x5f, 0x99, 0xc8, 0x8d, 0x77, 0x80, 0x07,
95108 + 0x2c, 0xf7, 0xec, 0x04, 0xdf, 0xd5, 0x2d, 0x6d, 0x11, 0xec, 0x21, 0x3c,
95109 + 0xf2, 0x43, 0x6b, 0x0f, 0xe8, 0x71, 0xcf, 0x27, 0x8e, 0xf0, 0x19, 0x91,
95110 + 0xfe, 0x05, 0xe9, 0x51, 0x7a, 0x4f, 0x58, 0x66, 0x52, 0x5c, 0x6b, 0x07,
95111 + 0x3c, 0xf7, 0x61, 0x4d, 0xef, 0x73, 0xdf, 0x94, 0xf2, 0xb7, 0xe9, 0xc6,
95112 + 0x9c, 0x81, 0x6f, 0xe4, 0x53, 0x29, 0x53, 0xfa, 0xab, 0x2e, 0x6c, 0xdf,
95113 + 0xda, 0x53, 0xdd, 0x7c, 0x97, 0x52, 0x96, 0x4b, 0x9b, 0x42, 0xee, 0x9b,
95114 + 0x87, 0x54, 0xc3, 0x83, 0x7c, 0x9b, 0x21, 0x0c, 0xeb, 0xd9, 0x2e, 0x0d,
95115 + 0x63, 0x0e, 0x52, 0x7e, 0xee, 0x9c, 0x52, 0xff, 0xd7, 0x9b, 0x4b, 0x63,
95116 + 0x4e, 0xa1, 0x6d, 0x05, 0xfb, 0xbf, 0xa9, 0x6d, 0x45, 0x54, 0xdc, 0xb3,
95117 + 0x15, 0x8c, 0x97, 0x39, 0xf6, 0x63, 0xf1, 0xf1, 0x7b, 0x5c, 0x7f, 0xef,
95118 + 0xc8, 0xac, 0xcd, 0xf7, 0x0b, 0x47, 0xae, 0xda, 0x05, 0xe3, 0xc0, 0x1d,
95119 + 0x79, 0x66, 0x52, 0xc7, 0xe7, 0x19, 0xc8, 0x7e, 0xb3, 0xa6, 0x6b, 0x35,
95120 + 0xb9, 0x56, 0x8b, 0xc8, 0x3b, 0x2b, 0x6d, 0xb2, 0xb9, 0xe4, 0xea, 0xfc,
95121 + 0xe6, 0x12, 0xf5, 0xdc, 0x94, 0x9f, 0xad, 0x58, 0x58, 0x4b, 0xe2, 0xaf,
95122 + 0x47, 0x6e, 0xac, 0xdc, 0x99, 0x77, 0x5e, 0xae, 0x3f, 0x0a, 0x5a, 0x7a,
95123 + 0x24, 0x64, 0x39, 0xba, 0xee, 0xca, 0x21, 0xf6, 0x15, 0x64, 0x42, 0xf2,
95124 + 0xe5, 0x7e, 0xd4, 0x7e, 0x08, 0xce, 0x61, 0xc6, 0x20, 0xdc, 0x7f, 0xf9,
95125 + 0xf3, 0xc8, 0x4d, 0x12, 0x30, 0x9e, 0x7e, 0xfd, 0xa6, 0xf8, 0xc5, 0x70,
95126 + 0x8f, 0x34, 0x5b, 0xdf, 0xec, 0x76, 0x63, 0x95, 0xe9, 0xd6, 0xa7, 0x96,
95127 + 0x1f, 0xaf, 0xdf, 0x04, 0xee, 0x11, 0xe8, 0x29, 0x75, 0xd3, 0x86, 0xce,
95128 + 0x9a, 0xb2, 0x3a, 0x94, 0xa8, 0x14, 0x84, 0xfe, 0x21, 0xc5, 0x7c, 0x11,
95129 + 0xfb, 0x92, 0x90, 0x47, 0xab, 0xce, 0x85, 0x32, 0x0a, 0x77, 0xbb, 0x30,
95130 + 0x27, 0xf9, 0xfa, 0xef, 0x63, 0x3e, 0x23, 0xd3, 0xf5, 0x71, 0x9c, 0x75,
95131 + 0x1a, 0x7a, 0xfb, 0x60, 0x8f, 0xb4, 0xf1, 0x9c, 0x14, 0x68, 0x7c, 0x44,
95132 + 0x66, 0xce, 0xce, 0xc9, 0x91, 0x32, 0xe9, 0xe4, 0x1b, 0x63, 0x22, 0x99,
95133 + 0x93, 0xe1, 0xf8, 0x0a, 0x72, 0x27, 0xd7, 0x1e, 0xd3, 0x32, 0x73, 0x0e,
95134 + 0x38, 0xca, 0xac, 0xff, 0xfb, 0xa1, 0x37, 0xc3, 0xba, 0x7e, 0x99, 0xd6,
95135 + 0x7e, 0x87, 0xf3, 0x6f, 0xe3, 0x9e, 0xfa, 0x0b, 0xfb, 0x00, 0x97, 0x47,
95136 + 0xad, 0x33, 0x85, 0x7c, 0x79, 0xb9, 0x8c, 0x3a, 0xcf, 0x0e, 0x31, 0xf7,
95137 + 0x52, 0xea, 0xa1, 0x5e, 0xa9, 0x96, 0x87, 0x4d, 0xa5, 0x98, 0x53, 0xf1,
95138 + 0x2e, 0xb8, 0x46, 0xfb, 0x8e, 0xa9, 0xb0, 0xd5, 0x2b, 0x2b, 0xe5, 0x02,
95139 + 0xea, 0x65, 0xe5, 0xbd, 0x67, 0x14, 0xc4, 0xb4, 0x5c, 0xbf, 0xa7, 0x6b,
95140 + 0x1b, 0xe6, 0x9f, 0xf5, 0x2f, 0x80, 0xc6, 0x0c, 0x2e, 0xf3, 0x24, 0xe8,
95141 + 0xc3, 0xf7, 0x32, 0x74, 0x7c, 0x81, 0x39, 0x5c, 0x06, 0x6b, 0x69, 0x39,
95142 + 0x76, 0x61, 0x0a, 0x34, 0x74, 0x4a, 0xff, 0x9f, 0xd1, 0xc6, 0x9e, 0xc4,
95143 + 0x1c, 0xc7, 0x09, 0xe8, 0xeb, 0xd7, 0xf1, 0x4d, 0xd8, 0x18, 0x7a, 0xca,
95144 + 0xa1, 0x17, 0xbd, 0x09, 0x5a, 0x58, 0x07, 0x43, 0xfe, 0x87, 0xe3, 0x52,
95145 + 0x3d, 0xfb, 0xb0, 0x4c, 0x2f, 0x3f, 0x0c, 0xfc, 0xff, 0x8a, 0xba, 0x00,
95146 + 0xf1, 0x6d, 0x99, 0x67, 0x31, 0xff, 0xe3, 0x39, 0x10, 0x10, 0x6d, 0x63,
95147 + 0x81, 0xf3, 0xec, 0x0f, 0x62, 0x3f, 0x6a, 0x8c, 0x72, 0x46, 0x66, 0xca,
95148 + 0x3c, 0x0b, 0x77, 0x87, 0x7c, 0x2a, 0x7f, 0x76, 0xca, 0xbb, 0xe3, 0x1e,
95149 + 0xc9, 0x45, 0x0b, 0xac, 0x2f, 0x10, 0x27, 0x96, 0x46, 0xb3, 0xa5, 0x84,
95150 + 0x99, 0x55, 0xc4, 0x95, 0x14, 0xc6, 0x06, 0x77, 0x2e, 0x22, 0xd6, 0x02,
95151 + 0x6a, 0xda, 0x34, 0xd7, 0x4e, 0x7a, 0x6f, 0x06, 0xc4, 0xf5, 0x63, 0x99,
95152 + 0x80, 0x8e, 0xf5, 0x2f, 0x8c, 0x20, 0x17, 0xfe, 0x29, 0x72, 0xc9, 0xb8,
95153 + 0x27, 0x83, 0x71, 0x4f, 0x37, 0xda, 0x1a, 0x74, 0x02, 0xf7, 0x5c, 0xc6,
95154 + 0xdd, 0x97, 0xa1, 0x07, 0xf0, 0xd5, 0xaf, 0x6e, 0xe9, 0xc7, 0x78, 0x43,
95155 + 0x8e, 0xd9, 0x21, 0xff, 0x50, 0x49, 0x24, 0xd7, 0xa1, 0x3f, 0x37, 0x50,
95156 + 0x0b, 0xac, 0xa3, 0x3e, 0xdc, 0xb4, 0x23, 0xa8, 0x4b, 0x0e, 0x83, 0x7e,
95157 + 0xe6, 0x94, 0x1c, 0xc7, 0x74, 0xae, 0xd3, 0x62, 0x3d, 0x7f, 0x8f, 0x7e,
95158 + 0xd7, 0x95, 0xaf, 0xf6, 0xb0, 0xa6, 0x64, 0x3d, 0xce, 0x37, 0xe9, 0x77,
95159 + 0x70, 0x8f, 0xeb, 0x26, 0xd7, 0xfd, 0x7d, 0xac, 0x05, 0x7c, 0xfd, 0x21,
95160 + 0x2d, 0xd4, 0x1f, 0xee, 0x21, 0x4c, 0x8f, 0xb6, 0x93, 0xbc, 0xc6, 0x47,
95161 + 0x9d, 0xfd, 0x9b, 0x6e, 0xd7, 0xce, 0x74, 0x9e, 0x65, 0x5e, 0x13, 0x5f,
95162 + 0x7f, 0x3f, 0x74, 0x58, 0xd7, 0x65, 0x87, 0xe0, 0xbb, 0xeb, 0x8e, 0xbc,
95163 + 0x60, 0xdf, 0x69, 0x77, 0xfb, 0xcb, 0xbe, 0x9c, 0x28, 0xc7, 0xc3, 0x72,
95164 + 0xaa, 0x9e, 0x80, 0x4d, 0x50, 0x86, 0x56, 0x83, 0x0c, 0x45, 0xfe, 0xaa,
95165 + 0x2c, 0xf2, 0x4a, 0x99, 0x6b, 0x5a, 0x86, 0xb1, 0x6c, 0xa8, 0x8d, 0xef,
95166 + 0xea, 0xd0, 0xcb, 0xb7, 0xe5, 0xc8, 0xa2, 0xc8, 0x05, 0xac, 0xaf, 0x96,
95167 + 0x69, 0xab, 0x23, 0xc8, 0x5f, 0x77, 0x49, 0x75, 0x09, 0x35, 0x59, 0x59,
95168 + 0xa6, 0xb3, 0x9f, 0x63, 0xbc, 0x89, 0xc8, 0xa6, 0x7e, 0x8f, 0x15, 0x19,
95169 + 0xbc, 0x18, 0x96, 0xf0, 0x45, 0x14, 0x7f, 0x90, 0xfd, 0xa5, 0x21, 0xff,
95170 + 0x7d, 0xd6, 0xb5, 0xf9, 0x62, 0x09, 0x7b, 0xcb, 0xfd, 0xda, 0x4f, 0x16,
95171 + 0x6b, 0x33, 0x92, 0xaf, 0xf0, 0x2c, 0xf4, 0x4b, 0x71, 0xac, 0xa5, 0x64,
95172 + 0xf6, 0xec, 0x88, 0x3c, 0x8b, 0x33, 0x50, 0xff, 0xe1, 0x8c, 0x09, 0x29,
95173 + 0x5c, 0xc0, 0x7c, 0xed, 0xba, 0x2c, 0xad, 0xcc, 0x48, 0xb5, 0x72, 0xb9,
95174 + 0xe1, 0xdd, 0x1d, 0xe3, 0xa5, 0xc6, 0x5a, 0xf6, 0x30, 0xeb, 0x19, 0xd4,
95175 + 0xaa, 0x16, 0xc6, 0x90, 0x59, 0x6d, 0x76, 0xfa, 0xce, 0xf7, 0xe2, 0xc6,
95176 + 0x1a, 0x76, 0x52, 0xe6, 0xcb, 0x29, 0x29, 0x9e, 0x1d, 0xd1, 0x6f, 0x0a,
95177 + 0x2d, 0xe9, 0xca, 0xd3, 0x37, 0x11, 0x2b, 0x26, 0xf5, 0x7b, 0xf1, 0x2d,
95178 + 0x79, 0xcc, 0x9e, 0x97, 0xa3, 0xd6, 0x41, 0x39, 0x85, 0xfc, 0xfa, 0x4b,
95179 + 0x76, 0xab, 0xc4, 0xbb, 0x79, 0x8f, 0xa0, 0xd7, 0x62, 0x0d, 0xea, 0xc8,
95180 + 0x84, 0xfd, 0xa0, 0xf9, 0x3c, 0x24, 0xfb, 0x4e, 0x8d, 0x71, 0xf2, 0xbf,
95181 + 0x9d, 0x0c, 0xe2, 0xde, 0x4d, 0xd4, 0x8e, 0x19, 0x0d, 0x67, 0xb8, 0x70,
95182 + 0x15, 0xc2, 0x0d, 0x9b, 0x2f, 0x10, 0x6e, 0xc9, 0xf0, 0xe0, 0x0c, 0xc0,
95183 + 0x85, 0x64, 0xc3, 0x0e, 0x43, 0x47, 0x26, 0xc1, 0x27, 0x7c, 0xfc, 0x68,
95184 + 0x87, 0x97, 0x07, 0xb7, 0x22, 0xb6, 0xde, 0xde, 0xff, 0x86, 0xb7, 0xff,
95185 + 0x59, 0x6f, 0xff, 0xd5, 0xad, 0xfd, 0x7e, 0x7c, 0xfd, 0x85, 0x23, 0x0d,
95186 + 0x74, 0xbd, 0x51, 0x72, 0xe1, 0xe7, 0x3d, 0xba, 0xae, 0x6e, 0xd1, 0xe5,
95187 + 0xc3, 0x43, 0x9e, 0x9a, 0x67, 0xfa, 0x66, 0xfa, 0xe8, 0x7e, 0xc8, 0xd1,
95188 + 0x91, 0x9c, 0x0d, 0xdb, 0x28, 0x27, 0xc6, 0x0b, 0xfa, 0x2d, 0x4d, 0xc9,
95189 + 0x7a, 0x74, 0x5e, 0x26, 0xad, 0xc4, 0xf8, 0xac, 0x84, 0xa0, 0xcb, 0xf4,
95190 + 0x2d, 0x21, 0xa9, 0xd2, 0xe7, 0xa0, 0xcf, 0xdb, 0x3b, 0xd3, 0xfa, 0x4e,
95191 + 0x03, 0xad, 0xa1, 0x97, 0x49, 0xa3, 0x4b, 0x6b, 0x64, 0xe0, 0x36, 0xad,
95192 + 0x2e, 0xbc, 0x4b, 0xeb, 0x3b, 0xa5, 0x06, 0xf8, 0x8b, 0x61, 0x0f, 0x3e,
95193 + 0xdc, 0x00, 0x4f, 0x7d, 0x66, 0x5e, 0x41, 0x7d, 0x26, 0x6d, 0x9f, 0x85,
95194 + 0x6d, 0x48, 0xa4, 0x35, 0x5d, 0x39, 0xfe, 0xc0, 0x80, 0x23, 0x11, 0xe4,
95195 + 0x1b, 0xcd, 0x58, 0xdb, 0xac, 0x30, 0x17, 0x51, 0x7d, 0xcd, 0x32, 0x08,
95196 + 0x9d, 0xe5, 0xdd, 0xb9, 0x6f, 0x82, 0x8f, 0xe9, 0x9c, 0xc0, 0x91, 0xa3,
95197 + 0x36, 0x69, 0x79, 0xdf, 0x79, 0x25, 0x3a, 0x68, 0x17, 0x65, 0xc8, 0x6c,
95198 + 0xc6, 0xf9, 0xd5, 0xba, 0xc6, 0x99, 0x24, 0x2d, 0xe7, 0x87, 0xfa, 0xcd,
95199 + 0xbf, 0x07, 0x9f, 0x13, 0x15, 0x43, 0xaa, 0x56, 0x22, 0x76, 0x09, 0x38,
95200 + 0xf6, 0xe1, 0x6e, 0xaa, 0x23, 0xa4, 0x47, 0xe4, 0x08, 0xf4, 0xbb, 0xaa,
95201 + 0xe3, 0x22, 0xf5, 0x38, 0x31, 0x59, 0x40, 0xae, 0xf3, 0xd7, 0x3a, 0xb6,
95202 + 0x39, 0xce, 0x4d, 0xc4, 0xb7, 0xc9, 0x6d, 0xba, 0xa7, 0x2e, 0xba, 0xba,
95203 + 0xa7, 0x2e, 0xa2, 0x06, 0x3e, 0x1d, 0x91, 0x96, 0x55, 0xd8, 0xcf, 0xcb,
95204 + 0x7b, 0xdc, 0x7c, 0xee, 0x65, 0xfe, 0xe6, 0x04, 0x7f, 0x77, 0x3a, 0x2c,
95205 + 0xd6, 0x69, 0x1d, 0x0f, 0x20, 0xef, 0x09, 0x99, 0x3d, 0x47, 0x9f, 0x6a,
95206 + 0xc9, 0xc0, 0x69, 0xde, 0x07, 0xf3, 0x9a, 0xa5, 0xd1, 0x19, 0xd8, 0xc8,
95207 + 0x1c, 0xfc, 0x82, 0x5a, 0x7d, 0x57, 0x66, 0x2c, 0xca, 0xa1, 0x53, 0xda,
95208 + 0x56, 0x51, 0x8f, 0xaf, 0xc2, 0x37, 0xac, 0xc6, 0xa4, 0x09, 0xb6, 0xa5,
95209 + 0x2e, 0x46, 0x8d, 0xe2, 0xe2, 0x07, 0xb0, 0x07, 0xfe, 0x7e, 0x83, 0xdc,
95210 + 0xf2, 0x62, 0xcc, 0xa0, 0x6d, 0xa9, 0x8b, 0xd4, 0x73, 0xa4, 0x53, 0x17,
95211 + 0xa9, 0xe7, 0xa4, 0xc3, 0xb7, 0x17, 0x7c, 0x5f, 0x1c, 0xd1, 0xef, 0xd3,
95212 + 0x37, 0x6d, 0xf2, 0xf2, 0x8f, 0x92, 0xad, 0x30, 0x47, 0x24, 0x3f, 0xd2,
95213 + 0x8d, 0x5c, 0xa6, 0x2b, 0x6b, 0x0f, 0x8c, 0x6f, 0xca, 0xa7, 0xe5, 0xeb,
95214 + 0xee, 0x4f, 0xc1, 0x17, 0xf9, 0x68, 0xe4, 0x8b, 0x3c, 0x75, 0x4a, 0x93,
95215 + 0xe6, 0xcb, 0xe7, 0x07, 0x82, 0x06, 0x3f, 0x7d, 0xa7, 0x63, 0xc0, 0xff,
95216 + 0x75, 0xf8, 0x80, 0x5e, 0xf4, 0x4f, 0xa2, 0x47, 0x48, 0xbb, 0x48, 0xde,
95217 + 0xc9, 0xeb, 0x0d, 0xe4, 0x8d, 0x3e, 0x9f, 0xd3, 0xf8, 0x7e, 0x5d, 0x66,
95218 + 0x17, 0x9d, 0x93, 0x88, 0xab, 0x7c, 0x3b, 0xef, 0x71, 0xdf, 0x81, 0xb7,
95219 + 0xf3, 0xfe, 0xba, 0xb8, 0xf2, 0x49, 0x98, 0x55, 0xc1, 0xf7, 0xca, 0x76,
95220 + 0x59, 0x34, 0xfa, 0x8e, 0x98, 0xce, 0xc3, 0x8f, 0xd4, 0xe8, 0x27, 0x28,
95221 + 0xa3, 0x1b, 0x92, 0x5d, 0xe4, 0xfb, 0x97, 0x8b, 0x6f, 0xba, 0xe6, 0xfb,
95222 + 0x8d, 0xc6, 0x3d, 0x36, 0xe0, 0x7a, 0x01, 0x47, 0xba, 0xd6, 0x29, 0x3f,
95223 + 0xf8, 0x9c, 0xbd, 0x0d, 0xbe, 0xa6, 0x71, 0xdf, 0xb8, 0x3c, 0x87, 0x3c,
95224 + 0xe0, 0x0d, 0xfb, 0x0e, 0xb9, 0x4e, 0x33, 0x17, 0xaa, 0xd6, 0xa6, 0x60,
95225 + 0x93, 0x4d, 0xf0, 0x65, 0xa6, 0x6c, 0x96, 0x9a, 0xa5, 0x8a, 0x7c, 0x67,
95226 + 0x79, 0x85, 0xbe, 0x90, 0xb4, 0xb7, 0x61, 0xde, 0xf5, 0x5f, 0xf4, 0xb5,
95227 + 0x9b, 0x25, 0xc4, 0x59, 0xd8, 0xf6, 0x66, 0x29, 0x8a, 0xbe, 0x17, 0xbd,
95228 + 0x85, 0x3e, 0x8e, 0x3e, 0x89, 0x7e, 0x04, 0xfd, 0x08, 0x7a, 0x0b, 0x7b,
95229 + 0x63, 0xe8, 0xfd, 0x9a, 0x81, 0xb8, 0x6e, 0xf3, 0x5d, 0xd4, 0xe7, 0x21,
95230 + 0x57, 0xb4, 0x18, 0xd3, 0xc2, 0x76, 0x0e, 0x75, 0x44, 0x76, 0x84, 0xb9,
95231 + 0x1e, 0x73, 0xbe, 0x8f, 0x1d, 0xd3, 0x62, 0x5d, 0x5e, 0x30, 0xf6, 0x0d,
95232 + 0x31, 0x2e, 0x54, 0x10, 0x17, 0x3e, 0xd8, 0x8d, 0xfa, 0xd1, 0xdc, 0xaf,
95233 + 0xdf, 0x8e, 0x16, 0x31, 0xe6, 0x37, 0x6a, 0xde, 0xe8, 0x1c, 0xe2, 0x14,
95234 + 0xfd, 0xa7, 0x83, 0x3d, 0x79, 0xf8, 0xf1, 0x2e, 0xd8, 0x5f, 0x06, 0x7e,
95235 + 0x1b, 0xdf, 0x4b, 0x6f, 0xec, 0x76, 0x63, 0x2a, 0xf2, 0x77, 0xb5, 0xfd,
95236 + 0xbd, 0xc6, 0xc6, 0x9e, 0x9d, 0x6a, 0x83, 0x0e, 0xe0, 0x48, 0x54, 0x96,
95237 + 0x60, 0x83, 0x3f, 0xb4, 0x4f, 0xea, 0xdc, 0x8e, 0x77, 0xf1, 0x2c, 0x72,
95238 + 0xd4, 0xdc, 0x02, 0x73, 0x98, 0x13, 0xa8, 0x4b, 0x50, 0x9f, 0x45, 0x59,
95239 + 0x93, 0x33, 0x16, 0xe8, 0x5c, 0x34, 0x2a, 0x6d, 0x8c, 0x03, 0x37, 0x70,
95240 + 0x1e, 0xf8, 0x5a, 0x76, 0x20, 0xb3, 0x03, 0xc8, 0x09, 0x1d, 0x27, 0x6c,
95241 + 0xed, 0x93, 0xf8, 0x21, 0xfa, 0x1c, 0xc1, 0x7e, 0x53, 0xdc, 0xf7, 0x74,
95242 + 0xf8, 0xdd, 0x29, 0xfd, 0x5b, 0x31, 0x94, 0xeb, 0xb3, 0xd8, 0x7b, 0x17,
95243 + 0x70, 0x71, 0x9e, 0x6f, 0xd9, 0x22, 0xfb, 0x16, 0xdc, 0x9c, 0x56, 0x59,
95244 + 0x8d, 0xf8, 0x7e, 0xd5, 0xc3, 0xc7, 0x75, 0xe5, 0xfd, 0xa6, 0xb1, 0xc7,
95245 + 0x7d, 0x1b, 0xc6, 0x1d, 0x9f, 0x42, 0xfe, 0xbc, 0x81, 0x7b, 0x79, 0x03,
95246 + 0x77, 0x72, 0xa5, 0x44, 0x5d, 0x1f, 0x86, 0xde, 0x43, 0x86, 0x53, 0xc4,
95247 + 0x35, 0xa2, 0xcf, 0xde, 0x28, 0xc1, 0x77, 0xd2, 0xff, 0x29, 0x64, 0x77,
95248 + 0x6d, 0x6e, 0x4c, 0x77, 0xf1, 0xf4, 0xba, 0x70, 0xe2, 0xaf, 0xed, 0xd6,
95249 + 0xf4, 0x54, 0xf5, 0x3b, 0x18, 0xe5, 0x04, 0x1d, 0xe4, 0x6f, 0x03, 0x1a,
95250 + 0xe6, 0x6b, 0x51, 0xfd, 0xfe, 0xae, 0x38, 0x47, 0x3e, 0x46, 0x24, 0xbb,
95251 + 0xe0, 0xef, 0xeb, 0xc6, 0xbe, 0xd6, 0x06, 0x5c, 0x77, 0x6f, 0xe3, 0x41,
95252 + 0x79, 0x3c, 0x70, 0xfd, 0x93, 0x6f, 0xc3, 0x85, 0xad, 0xb7, 0x61, 0xc6,
95253 + 0x5f, 0xde, 0x4d, 0x0a, 0xfb, 0xfd, 0xfb, 0xe9, 0xf5, 0x6a, 0x81, 0xc4,
95254 + 0x7c, 0x41, 0x98, 0xab, 0xf0, 0x8e, 0xc6, 0x61, 0xd7, 0x5d, 0xc0, 0x6f,
95255 + 0x4b, 0xa5, 0xd4, 0x22, 0xaa, 0x87, 0xb5, 0x31, 0x73, 0xe5, 0xc6, 0x33,
95256 + 0x7f, 0xdb, 0x3b, 0x13, 0xf5, 0xf4, 0x19, 0xe6, 0xcd, 0x3a, 0xce, 0x00,
95257 + 0xa6, 0x7d, 0x1b, 0x6d, 0xbf, 0xee, 0xc1, 0x71, 0x3d, 0x29, 0x05, 0xe4,
95258 + 0xa1, 0xb9, 0x05, 0x64, 0xf4, 0xf0, 0xdf, 0x2a, 0xcd, 0xdf, 0xb3, 0xf8,
95259 + 0x86, 0x37, 0x1c, 0x9f, 0x05, 0x8d, 0x05, 0x33, 0xc3, 0x77, 0x33, 0xe0,
95260 + 0xd8, 0xbb, 0x0d, 0xc7, 0x84, 0x87, 0x63, 0x42, 0x8a, 0xe7, 0x26, 0x61,
95261 + 0x6b, 0x19, 0xc4, 0xf7, 0x7e, 0xf3, 0x80, 0x7c, 0x1e, 0xc5, 0x35, 0xe6,
95262 + 0x2e, 0x8c, 0xe0, 0x9e, 0x1c, 0x67, 0x9f, 0x7d, 0x18, 0x74, 0xbf, 0x86,
95263 + 0xd8, 0xea, 0xe7, 0x3c, 0xc5, 0x58, 0x08, 0x31, 0xec, 0x98, 0xfe, 0x0d,
95264 + 0xb6, 0x60, 0x9a, 0xd0, 0x57, 0x65, 0x0c, 0x27, 0x51, 0xde, 0x23, 0xbe,
95265 + 0xcd, 0x23, 0x56, 0x91, 0xcf, 0x0e, 0x29, 0x9a, 0xc6, 0xa3, 0x21, 0xe4,
95266 + 0x35, 0xd9, 0x05, 0xda, 0x91, 0x0c, 0x84, 0xd2, 0xcd, 0xc8, 0x49, 0x1d,
95267 + 0xf9, 0x99, 0xcd, 0x7f, 0xa3, 0x30, 0x2f, 0x1b, 0x35, 0x13, 0xfd, 0x3a,
95268 + 0xee, 0xe1, 0xdb, 0xf8, 0xbe, 0xde, 0x83, 0xbc, 0x0f, 0x2b, 0x19, 0xe8,
95269 + 0x6e, 0x52, 0xe7, 0x33, 0xcc, 0x23, 0xaa, 0x88, 0xb7, 0x0a, 0xb1, 0x06,
95270 + 0x79, 0xd5, 0x38, 0x73, 0xd7, 0xe7, 0x96, 0xaf, 0xcb, 0x95, 0x45, 0xfe,
95271 + 0x06, 0xca, 0xb8, 0x7c, 0x90, 0xfe, 0xc0, 0x9c, 0x4b, 0x61, 0x6e, 0x85,
95272 + 0xbe, 0x0c, 0xe3, 0x3a, 0x0c, 0xa8, 0x07, 0x39, 0x02, 0x72, 0xed, 0x4d,
95273 + 0x2b, 0x09, 0x3e, 0xaf, 0xcb, 0xc6, 0x62, 0x58, 0x96, 0x2d, 0xe6, 0x45,
95274 + 0x12, 0xcf, 0x02, 0x76, 0x63, 0xe5, 0x9a, 0xab, 0x13, 0x84, 0x47, 0xcd,
95275 + 0x53, 0x40, 0x5e, 0x77, 0x40, 0xef, 0xfd, 0x65, 0xf7, 0x4c, 0x9a, 0x1a,
95276 + 0xeb, 0xbc, 0x19, 0xd9, 0xa0, 0x3d, 0xd9, 0x7c, 0x93, 0x62, 0x6e, 0x70,
95277 + 0x02, 0x3a, 0xcb, 0xdc, 0x9d, 0xf5, 0x00, 0xbe, 0x6b, 0x5c, 0x27, 0xef,
95278 + 0xe8, 0x97, 0xfa, 0x21, 0x1b, 0xda, 0x3d, 0xdf, 0xc4, 0x10, 0x47, 0x15,
95279 + 0x6d, 0xbd, 0xa8, 0x7d, 0x41, 0xb1, 0x3c, 0x83, 0x98, 0x02, 0x1f, 0xc0,
95280 + 0xdf, 0x70, 0xa6, 0xa6, 0x70, 0x97, 0xe3, 0x80, 0xdb, 0x16, 0x4b, 0xd6,
95281 + 0x8a, 0x3a, 0x2f, 0x53, 0xe7, 0x6f, 0xbf, 0xdf, 0xe4, 0x61, 0x3f, 0x6a,
95282 + 0x0d, 0xba, 0x05, 0x1b, 0x52, 0x6b, 0x51, 0xf4, 0xf0, 0xc7, 0x6b, 0xa8,
95283 + 0x2f, 0x4a, 0x7c, 0x1f, 0x42, 0x6d, 0x50, 0xe2, 0xdb, 0x49, 0x12, 0xfd,
95284 + 0x08, 0xdf, 0x8b, 0x3c, 0xbf, 0x46, 0xfc, 0xa4, 0xc3, 0xf7, 0x2f, 0xcc,
95285 + 0x25, 0xe9, 0x5f, 0xfc, 0x7c, 0xd2, 0xd5, 0x85, 0x53, 0x65, 0xfa, 0x10,
95286 + 0xea, 0x75, 0x3f, 0xfc, 0x16, 0x75, 0xc1, 0xcd, 0x25, 0x57, 0x2a, 0xae,
95287 + 0xcc, 0x66, 0xeb, 0x97, 0x75, 0x8c, 0xd8, 0x2f, 0x16, 0x74, 0x8c, 0xb2,
95288 + 0xc3, 0x9a, 0x8e, 0x01, 0x97, 0x24, 0xa3, 0x7b, 0xca, 0xec, 0x75, 0xc9,
95289 + 0xac, 0x8c, 0xc8, 0x0b, 0xda, 0x6f, 0xf9, 0x3e, 0x8b, 0x39, 0x64, 0x0c,
95290 + 0xf2, 0x4b, 0xca, 0xf3, 0x67, 0xaf, 0x4b, 0xf6, 0x45, 0xfa, 0xad, 0xe1,
95291 + 0x58, 0xab, 0x41, 0x5f, 0xe5, 0x48, 0x0d, 0xb1, 0xe9, 0x80, 0xcd, 0x7f,
95292 + 0x07, 0x10, 0x42, 0x4d, 0xe7, 0x48, 0xf3, 0x68, 0xc2, 0x8e, 0x1b, 0xfd,
95293 + 0x4f, 0xb6, 0x1a, 0x8c, 0x8d, 0xc3, 0xe6, 0x53, 0xe2, 0xbf, 0x47, 0xb5,
95294 + 0xc8, 0x53, 0xfa, 0xad, 0x02, 0x66, 0xbb, 0xf0, 0x91, 0xfe, 0x1d, 0xe5,
95295 + 0x66, 0x8a, 0xb2, 0xc6, 0x78, 0x8d, 0xf3, 0x85, 0xc8, 0xcd, 0x54, 0x93,
95296 + 0x14, 0xef, 0x72, 0x9c, 0xa3, 0xa3, 0xa9, 0xdd, 0xee, 0xbf, 0x15, 0xf9,
95297 + 0xc6, 0x5d, 0xae, 0x2f, 0x38, 0xea, 0x8d, 0x5f, 0x41, 0x4f, 0xdd, 0x66,
95298 + 0xbc, 0x65, 0x7c, 0xe4, 0xbd, 0xa1, 0x5f, 0xe1, 0x37, 0x63, 0xef, 0x3c,
95299 + 0x62, 0x2f, 0xe3, 0x65, 0x97, 0xe4, 0x0e, 0x6b, 0x9f, 0xc1, 0xf9, 0x82,
95300 + 0x9b, 0x4b, 0x7b, 0x70, 0x95, 0x69, 0x99, 0xad, 0x30, 0x87, 0xda, 0x40,
95301 + 0x2c, 0x1b, 0x82, 0xae, 0x32, 0xa6, 0x9d, 0x44, 0x3c, 0xe7, 0xef, 0xd2,
95302 + 0x58, 0x5b, 0xe2, 0xbe, 0x44, 0x32, 0xae, 0xc0, 0xf3, 0x96, 0x4e, 0xdd,
95303 + 0x8c, 0xf2, 0x3d, 0xea, 0xd2, 0x10, 0xee, 0xfd, 0x4f, 0x59, 0x5b, 0x0c,
95304 + 0x68, 0x1d, 0xc9, 0xbe, 0x4c, 0xd9, 0xbb, 0xbf, 0x5b, 0x4b, 0xb7, 0x6b,
95305 + 0x03, 0xcc, 0x03, 0x1e, 0x87, 0x5c, 0xf6, 0xdb, 0xd7, 0x19, 0xbb, 0xff,
95306 + 0x5d, 0x59, 0xc3, 0xc9, 0xa7, 0x0c, 0xda, 0x36, 0xc6, 0x2b, 0x21, 0x59,
95307 + 0x8a, 0x92, 0x7f, 0xc8, 0xcb, 0xa0, 0xed, 0xec, 0x24, 0x87, 0xed, 0x32,
95308 + 0xf8, 0x4b, 0xc8, 0x80, 0xb2, 0xf4, 0x65, 0xc0, 0xef, 0x49, 0xdc, 0x17,
95309 + 0x6b, 0x86, 0x7e, 0x5d, 0x47, 0x16, 0xeb, 0xee, 0xd9, 0xc5, 0x72, 0x23,
95310 + 0xcd, 0xa4, 0x97, 0x77, 0x7a, 0x49, 0x72, 0xfa, 0x7e, 0xe7, 0x25, 0x57,
95311 + 0xb9, 0x24, 0xfb, 0x2a, 0xf3, 0xf2, 0x98, 0xf5, 0x28, 0xf8, 0xbd, 0xe6,
95312 + 0xcc, 0x58, 0xba, 0x56, 0x19, 0xcf, 0xff, 0x6f, 0xe7, 0x56, 0x1b, 0xdb,
95313 + 0x56, 0x75, 0x86, 0x5f, 0x5f, 0xdb, 0x69, 0x1a, 0x9a, 0x70, 0xeb, 0x3a,
95314 + 0x89, 0x9b, 0x66, 0xad, 0x1d, 0xdf, 0x7e, 0x88, 0xa4, 0xe8, 0x36, 0x64,
95315 + 0x34, 0xea, 0x82, 0x62, 0x9c, 0x50, 0xc2, 0xe8, 0x44, 0xda, 0x75, 0x55,
95316 + 0xb5, 0x31, 0x64, 0x39, 0xe9, 0x07, 0xd3, 0x06, 0xa3, 0xb0, 0x82, 0x18,
95317 + 0x52, 0x8d, 0xdb, 0x6a, 0x9d, 0x96, 0xc6, 0xe9, 0x07, 0x6b, 0x37, 0x69,
95318 + 0x9a, 0xe5, 0xa4, 0x2d, 0x48, 0x11, 0x2e, 0x88, 0x6e, 0xfb, 0xb1, 0x8d,
95319 + 0x2a, 0x65, 0xec, 0xff, 0xf6, 0x67, 0xda, 0xd0, 0x16, 0x15, 0x18, 0xfc,
95320 + 0xd8, 0xa4, 0xfe, 0xe0, 0x47, 0x25, 0xe8, 0xbc, 0xe7, 0x79, 0xcf, 0xbd,
95321 + 0x8e, 0x6d, 0x82, 0x26, 0x2d, 0x52, 0xe4, 0x7b, 0xce, 0x3d, 0xf7, 0x9c,
95322 + 0x73, 0xcf, 0xfb, 0xfd, 0xbe, 0xcf, 0xc5, 0xda, 0x13, 0x7d, 0x6b, 0xe5,
95323 + 0x63, 0xf8, 0x1d, 0x27, 0x67, 0x6d, 0xc9, 0xd8, 0x83, 0xf2, 0x63, 0xcd,
95324 + 0xe5, 0x33, 0x3e, 0x09, 0xc0, 0x27, 0x35, 0xb8, 0x02, 0x69, 0x77, 0x62,
95325 + 0x37, 0x85, 0x3e, 0x65, 0x18, 0xb4, 0x8e, 0x1b, 0xbf, 0xd9, 0x36, 0xf7,
95326 + 0x37, 0x9d, 0x81, 0xef, 0xee, 0x0e, 0xb4, 0xfb, 0x39, 0x5f, 0xe3, 0xdf,
95327 + 0xfe, 0xc5, 0xab, 0xa1, 0x0d, 0xca, 0x0c, 0xf6, 0xf3, 0x96, 0xea, 0x59,
95328 + 0x07, 0xbc, 0xc4, 0xdc, 0x74, 0x4c, 0xf3, 0x0f, 0xe1, 0x69, 0xea, 0xa8,
95329 + 0xab, 0xd0, 0x51, 0x43, 0xd4, 0x5d, 0xc3, 0xb3, 0x2e, 0xf3, 0x03, 0x51,
95330 + 0xf9, 0xf3, 0x14, 0xf5, 0x70, 0x5c, 0xfe, 0x34, 0xf5, 0x02, 0xf6, 0x93,
95331 + 0x28, 0x32, 0x47, 0x79, 0x63, 0x26, 0x47, 0x3f, 0x49, 0xfd, 0xf9, 0xb4,
95332 + 0xfb, 0xac, 0xda, 0x81, 0xb8, 0x95, 0x5f, 0x13, 0x56, 0x7d, 0xf3, 0xb4,
95333 + 0xd6, 0x74, 0xe3, 0x56, 0xb7, 0xdc, 0x38, 0x6f, 0x74, 0x6c, 0x78, 0x3a,
95334 + 0x1a, 0x18, 0x99, 0xa3, 0x5d, 0x4a, 0xc6, 0xb2, 0xd6, 0x0a, 0x39, 0x10,
95335 + 0x65, 0xee, 0x39, 0x45, 0xfd, 0x0c, 0x5b, 0xd8, 0x6b, 0x67, 0xad, 0x66,
95336 + 0xcf, 0xfe, 0xc4, 0x1a, 0xf4, 0xec, 0xd3, 0x9e, 0x9e, 0xe5, 0xbd, 0x14,
95337 + 0x68, 0x4a, 0x5b, 0x94, 0x98, 0x19, 0xb5, 0x92, 0xb0, 0x79, 0xb8, 0x9e,
95338 + 0xe7, 0xfc, 0x71, 0x39, 0x32, 0x7f, 0x18, 0xfe, 0x77, 0xaf, 0xbd, 0x87,
95339 + 0x76, 0xd5, 0x1e, 0x22, 0x16, 0x07, 0xeb, 0x7f, 0xa9, 0x61, 0xae, 0xc7,
95340 + 0xbd, 0xb9, 0x78, 0x1f, 0x72, 0x3e, 0xed, 0xc8, 0x04, 0x6c, 0xc9, 0x88,
95341 + 0x6d, 0xf6, 0x5a, 0x3f, 0x76, 0x77, 0x75, 0xdd, 0x13, 0x05, 0xc7, 0xc3,
95342 + 0x85, 0xe1, 0x17, 0xbe, 0xd0, 0xd7, 0x23, 0x5c, 0x93, 0xeb, 0xb5, 0x49,
95343 + 0x7a, 0x1f, 0xf4, 0xcb, 0x34, 0xff, 0x73, 0x5e, 0xed, 0x0a, 0xf1, 0x4a,
95344 + 0xb4, 0x6b, 0x19, 0xdb, 0xf4, 0x80, 0x37, 0xdf, 0xb6, 0x0e, 0x69, 0x89,
95345 + 0xd6, 0x8c, 0x67, 0x6e, 0x85, 0xed, 0xb8, 0xe4, 0xe6, 0xf9, 0x5b, 0xa9,
95346 + 0x44, 0x9c, 0x26, 0xd9, 0x63, 0xaf, 0x6b, 0x98, 0x63, 0x2b, 0xfa, 0x8c,
95347 + 0x4f, 0x10, 0x9c, 0x0e, 0x78, 0xbe, 0xc5, 0x06, 0xfa, 0x4d, 0xde, 0x75,
95348 + 0xb3, 0xe6, 0x64, 0xe2, 0x56, 0x57, 0xc3, 0x7b, 0x6c, 0xa8, 0xda, 0xe1,
95349 + 0xb8, 0x45, 0xdd, 0xd9, 0x14, 0x95, 0x36, 0xf2, 0x50, 0x45, 0xfd, 0xf8,
95350 + 0x90, 0x63, 0xb0, 0x16, 0x51, 0xe7, 0x60, 0x07, 0x73, 0xf6, 0x6f, 0xeb,
95351 + 0xb9, 0xb5, 0xd2, 0x27, 0xc0, 0x35, 0xf8, 0xe4, 0x73, 0xf9, 0x5e, 0xe6,
95352 + 0x7a, 0x31, 0x7f, 0x0b, 0xe7, 0x77, 0xbd, 0x73, 0x4e, 0xb8, 0x39, 0xeb,
95353 + 0x7e, 0xc9, 0x9e, 0x37, 0xfc, 0x97, 0x76, 0xc0, 0x7b, 0x6d, 0x68, 0xcf,
95354 + 0xd1, 0x26, 0x7c, 0xd1, 0x3c, 0xbe, 0x6d, 0xd8, 0xa2, 0xb6, 0xe1, 0x78,
95355 + 0x81, 0xfc, 0x49, 0xbe, 0xf4, 0xf9, 0xd1, 0xd7, 0x79, 0xe4, 0x51, 0xea,
95356 + 0xd9, 0x41, 0x39, 0x53, 0xe0, 0xd9, 0xa4, 0xb4, 0xa6, 0xb5, 0xf1, 0xec,
95357 + 0x84, 0xe2, 0xb1, 0x7a, 0xa6, 0x13, 0x17, 0x73, 0x32, 0x2c, 0x57, 0x5d,
95358 + 0x9e, 0x59, 0xa2, 0x98, 0x09, 0xb6, 0xd6, 0xbc, 0xff, 0x3e, 0x3d, 0xb3,
95359 + 0xb0, 0xfa, 0x8c, 0x31, 0x8c, 0x7d, 0xc9, 0xa3, 0x77, 0x9b, 0x9e, 0x6d,
95360 + 0xa6, 0x8e, 0x3e, 0x8f, 0xea, 0x39, 0x85, 0xa1, 0x13, 0x59, 0xc7, 0x0f,
95361 + 0x47, 0xf8, 0x0c, 0xd7, 0xa5, 0xcf, 0xc7, 0xb5, 0xc8, 0x7b, 0x3d, 0xb0,
95362 + 0xd8, 0xfd, 0x12, 0xdc, 0x01, 0xd1, 0xdf, 0xc1, 0x3a, 0x72, 0x00, 0xb2,
95363 + 0xba, 0xd1, 0x60, 0x5f, 0xc6, 0x8d, 0xaf, 0x91, 0xb1, 0xde, 0xc2, 0x39,
95364 + 0x22, 0x56, 0x81, 0x1f, 0x7d, 0xfc, 0xa7, 0x77, 0x30, 0x5f, 0xc6, 0xf3,
95365 + 0xd7, 0x07, 0x30, 0x3f, 0xcf, 0x82, 0x32, 0x36, 0xb5, 0x8d, 0xbc, 0x3a,
95366 + 0xaa, 0xf5, 0x41, 0x3e, 0x43, 0x39, 0xe6, 0x99, 0x91, 0x2e, 0x7f, 0xc3,
95367 + 0xf3, 0x6c, 0x6f, 0x6d, 0xa0, 0x63, 0xd2, 0xdb, 0x9f, 0x7f, 0x3f, 0x2c,
95368 + 0xe1, 0x0e, 0xea, 0xb8, 0xa8, 0x24, 0xa7, 0x19, 0xb3, 0xc0, 0x76, 0x8d,
95369 + 0x73, 0xae, 0xff, 0xad, 0x8b, 0x33, 0xff, 0xa7, 0x2e, 0xce, 0x58, 0x1f,
95370 + 0x29, 0xef, 0x84, 0x35, 0x8f, 0xf5, 0xc5, 0x74, 0x2d, 0xd6, 0xd1, 0xd5,
95371 + 0xaf, 0xdd, 0x47, 0xab, 0x74, 0xfc, 0x51, 0x81, 0xf6, 0x2a, 0xa5, 0x39,
95372 + 0xe5, 0x7f, 0x4e, 0xf1, 0x6c, 0xb9, 0xc7, 0xab, 0xdc, 0xe3, 0xf0, 0x82,
95373 + 0x62, 0x20, 0xbf, 0xa6, 0x32, 0x7c, 0xb2, 0x40, 0x1d, 0xd3, 0x2a, 0xb3,
95374 + 0x33, 0xbe, 0x9e, 0x19, 0xf3, 0x7c, 0xdc, 0xfc, 0x9a, 0x26, 0xd5, 0x33,
95375 + 0xf0, 0x6e, 0x9c, 0x11, 0xcf, 0xbe, 0x74, 0x4b, 0xe9, 0x3c, 0xed, 0x6e,
95376 + 0x12, 0x7d, 0xd1, 0x40, 0x69, 0x8e, 0xb5, 0x49, 0x62, 0x50, 0x86, 0x85,
95377 + 0x75, 0xff, 0x11, 0xfb, 0x38, 0xe4, 0x2d, 0x26, 0xef, 0x4f, 0xd1, 0xa7,
95378 + 0x6f, 0x82, 0x6f, 0xdc, 0xd6, 0x70, 0xbe, 0xdb, 0xab, 0x3e, 0x61, 0x3d,
95379 + 0xdd, 0x37, 0x74, 0x4a, 0x0b, 0xf9, 0xdc, 0xb1, 0x6f, 0x08, 0x7d, 0x30,
95380 + 0x5e, 0x67, 0x11, 0x0b, 0x30, 0xf6, 0x88, 0x6b, 0xec, 0x51, 0x2a, 0xb2,
95381 + 0xaf, 0xd5, 0xcb, 0x2b, 0xb5, 0x2a, 0xaf, 0x90, 0xdf, 0x32, 0xea, 0x7f,
95382 + 0x0f, 0xa9, 0xce, 0xca, 0x4f, 0xf5, 0x1a, 0xfc, 0x8a, 0x1d, 0x53, 0xde,
95383 + 0x93, 0x3a, 0xde, 0x8b, 0x79, 0x6b, 0x3f, 0xdc, 0x69, 0x7c, 0x2b, 0x5b,
95384 + 0xf5, 0x4d, 0x58, 0xc7, 0xd1, 0xae, 0x70, 0x7e, 0xf2, 0x06, 0x79, 0x84,
95385 + 0x3a, 0xcf, 0x1f, 0xe7, 0xd3, 0xc3, 0x6f, 0x73, 0x3c, 0xf9, 0xbf, 0x16,
95386 + 0x8b, 0xe0, 0xcb, 0xaa, 0xdf, 0xe7, 0xcb, 0x1d, 0xef, 0xd5, 0xda, 0x04,
95387 + 0xca, 0x5d, 0x6d, 0x7d, 0xd2, 0x96, 0xc8, 0xf4, 0x12, 0x5d, 0xd2, 0xfd,
95388 + 0xdc, 0xff, 0x4b, 0xcc, 0xed, 0x42, 0xde, 0x96, 0xa3, 0xcd, 0x51, 0xa5,
95389 + 0x4d, 0x06, 0xb4, 0x89, 0x28, 0x6d, 0x18, 0xef, 0x3d, 0xe3, 0xf1, 0x5b,
95390 + 0x2b, 0xce, 0x8b, 0xb9, 0x5a, 0xe8, 0xba, 0xbd, 0xd4, 0xf9, 0xcf, 0x77,
95391 + 0x6a, 0x7d, 0xd0, 0xa1, 0xee, 0x5b, 0x05, 0x7d, 0xc6, 0xf6, 0x66, 0xf5,
95392 + 0x47, 0x4c, 0xbc, 0x15, 0xd7, 0x3c, 0x68, 0x10, 0xfa, 0xb9, 0x34, 0x05,
95393 + 0x5f, 0x8d, 0x78, 0xb7, 0x3a, 0x5a, 0x7d, 0xc7, 0x3b, 0xaf, 0x92, 0xd2,
95394 + 0x86, 0x32, 0x40, 0xbd, 0xb9, 0x1a, 0xf3, 0xed, 0x8e, 0xf6, 0x81, 0xbf,
95395 + 0x7e, 0x81, 0xfe, 0x8d, 0x1a, 0x4f, 0x04, 0x21, 0xf3, 0x37, 0xa7, 0x3a,
95396 + 0xbc, 0x18, 0xce, 0x41, 0x1b, 0x71, 0xeb, 0x54, 0x84, 0x31, 0x05, 0xda,
95397 + 0x5b, 0xa4, 0x69, 0x1a, 0xf1, 0x2b, 0xf4, 0xf8, 0x82, 0xda, 0xa3, 0x3e,
95398 + 0xdc, 0xbf, 0x8b, 0x18, 0x3f, 0x5c, 0x1f, 0xc6, 0x73, 0xbd, 0x06, 0x8b,
95399 + 0x10, 0xdd, 0xa4, 0x67, 0x5a, 0x9a, 0x4a, 0xc4, 0x0e, 0x8a, 0xd7, 0x37,
95400 + 0xee, 0xaa, 0x3e, 0x58, 0xda, 0xd7, 0x43, 0xb2, 0xbb, 0x6a, 0x2f, 0x18,
95401 + 0x47, 0xc3, 0x87, 0x9f, 0x31, 0xf6, 0x20, 0x5f, 0xec, 0x53, 0x5c, 0x54,
95402 + 0x70, 0x68, 0x1e, 0x67, 0x49, 0x9f, 0x74, 0x11, 0x7e, 0xb8, 0x8b, 0x33,
95403 + 0xa4, 0xdf, 0x5d, 0x39, 0x76, 0xc2, 0x4d, 0xb1, 0x3e, 0x06, 0x7d, 0x70,
95404 + 0x4c, 0x46, 0x10, 0x17, 0x8c, 0x04, 0xdb, 0x98, 0x57, 0x86, 0x6f, 0x98,
95405 + 0xf3, 0x72, 0x8f, 0x7d, 0xcc, 0x99, 0xca, 0xd9, 0x39, 0xee, 0x9d, 0xb2,
95406 + 0x6d, 0x62, 0xef, 0xd2, 0x14, 0xf7, 0x6b, 0xf2, 0x10, 0x6c, 0x5b, 0xd3,
95407 + 0x2e, 0x7e, 0x79, 0x16, 0x03, 0xf8, 0x1d, 0x84, 0x3c, 0x70, 0x2c, 0x7e,
95408 + 0xe7, 0x16, 0xe5, 0xdd, 0xf3, 0xbe, 0x6d, 0x0f, 0xc8, 0x3b, 0x4e, 0xe5,
95409 + 0xd8, 0x71, 0x77, 0x0d, 0xcf, 0xc0, 0xcd, 0xb1, 0x66, 0xed, 0x38, 0x6e,
95410 + 0x5e, 0x2a, 0x95, 0x05, 0x77, 0x61, 0x8d, 0xa5, 0xb4, 0xa4, 0xfc, 0xff,
95411 + 0x03, 0x67, 0x78, 0xfd, 0x3e, 0x4b, 0x0c, 0xfd, 0x48, 0x9b, 0xcf, 0xd7,
95412 + 0xfe, 0x6a, 0x6d, 0x81, 0xaf, 0xff, 0xc8, 0x8f, 0xe4, 0xcb, 0x45, 0xd9,
95413 + 0xa9, 0xfa, 0x7f, 0xb9, 0xe7, 0x6a, 0x75, 0xbf, 0xef, 0xdf, 0x52, 0xbf,
95414 + 0x93, 0x17, 0x63, 0x1a, 0x1f, 0x6c, 0x9a, 0x6e, 0xd4, 0x09, 0x4f, 0x78,
95415 + 0x75, 0x85, 0xe5, 0x78, 0x6f, 0xbf, 0xa7, 0x17, 0x52, 0xea, 0x3b, 0xa7,
95416 + 0x6c, 0xea, 0x07, 0xee, 0xa7, 0x45, 0x26, 0x2e, 0xdc, 0x01, 0x4d, 0x7c,
95417 + 0x1d, 0xcc, 0xb8, 0xcf, 0xd7, 0x1d, 0x6d, 0x9e, 0x2f, 0x6c, 0x49, 0xcf,
95418 + 0x59, 0xfa, 0x4e, 0x0e, 0xf4, 0x68, 0xbb, 0x64, 0xc6, 0x83, 0x92, 0x3c,
95419 + 0x1b, 0x8b, 0x19, 0x5f, 0x97, 0xfc, 0x07, 0x79, 0xd3, 0x3e, 0xad, 0x45,
95420 + 0xa1, 0xff, 0x6e, 0xe1, 0xda, 0x86, 0x9f, 0x21, 0xcf, 0x7b, 0xfd, 0x7b,
95421 + 0x76, 0x03, 0x8f, 0xee, 0xf0, 0x78, 0x94, 0xf7, 0x2d, 0x53, 0xff, 0xc0,
95422 + 0xd8, 0x9e, 0xb3, 0xdc, 0xa3, 0x79, 0xae, 0xe7, 0xac, 0x89, 0xd7, 0xeb,
95423 + 0x9f, 0xeb, 0xab, 0x3e, 0x87, 0xfb, 0xf0, 0x7d, 0xcd, 0xdc, 0x3b, 0x07,
95424 + 0xe1, 0xd3, 0xf5, 0xd1, 0xe6, 0xd0, 0x7e, 0x6f, 0x74, 0x77, 0x0a, 0xf9,
95425 + 0x3d, 0xe1, 0xf1, 0x1c, 0xf5, 0x4d, 0xc4, 0xd3, 0x37, 0x4b, 0xf6, 0x65,
95426 + 0xc4, 0xe0, 0x4f, 0x98, 0x13, 0xa9, 0xb1, 0x2f, 0x4f, 0x98, 0x77, 0xab,
95427 + 0xb3, 0x2f, 0x77, 0x7b, 0xf3, 0xf8, 0xf7, 0x7c, 0xbd, 0xe2, 0xb7, 0x7d,
95428 + 0xbd, 0xd2, 0xe8, 0xd3, 0xfa, 0xb4, 0xaf, 0xed, 0xaf, 0x8f, 0xf9, 0xf2,
95429 + 0xcb, 0xe6, 0x5d, 0xb2, 0x88, 0xd9, 0xe8, 0x53, 0x26, 0x72, 0x06, 0x2f,
95430 + 0x6d, 0x9d, 0xb1, 0x88, 0xfb, 0x70, 0x7e, 0x22, 0xe9, 0xc8, 0x1d, 0x8d,
95431 + 0xad, 0x4f, 0x5e, 0x18, 0xd3, 0x3c, 0x4f, 0xc9, 0xf5, 0xf4, 0x4e, 0x74,
95432 + 0x17, 0xe4, 0xea, 0x4a, 0x64, 0x09, 0x53, 0x34, 0x73, 0x34, 0x0d, 0x3b,
95433 + 0x94, 0xd2, 0x7a, 0xd9, 0xf7, 0xb0, 0xdf, 0x41, 0xc5, 0x73, 0xad, 0x74,
95434 + 0x5e, 0x94, 0x47, 0xec, 0x8a, 0xd6, 0x6e, 0x9a, 0x87, 0x8a, 0x47, 0x9b,
95435 + 0x4f, 0xfb, 0x7c, 0x4f, 0x7e, 0x9a, 0x39, 0x3a, 0x31, 0x53, 0x19, 0x0e,
95436 + 0x6d, 0xeb, 0xb5, 0xf3, 0x42, 0xbc, 0xfe, 0xb0, 0x1c, 0x52, 0xdc, 0xf0,
95437 + 0xab, 0xb8, 0xbf, 0x97, 0xf1, 0x65, 0x22, 0xa4, 0x78, 0xe0, 0x44, 0x6c,
95438 + 0x12, 0xb2, 0x98, 0x75, 0x89, 0xef, 0x5f, 0xa5, 0x38, 0xff, 0x92, 0xd0,
95439 + 0xcf, 0x22, 0xa6, 0xe0, 0x05, 0x39, 0xe8, 0x6e, 0x74, 0x17, 0xc4, 0xf8,
95440 + 0xbf, 0x59, 0xad, 0x09, 0xad, 0x90, 0x49, 0x37, 0xd4, 0x9c, 0x2e, 0x1b,
95441 + 0x19, 0x18, 0x0d, 0xa6, 0x56, 0x9e, 0x70, 0xa2, 0xcd, 0x3b, 0xcb, 0x90,
95442 + 0xf1, 0x32, 0xf4, 0x7f, 0x39, 0x16, 0x18, 0x51, 0x6c, 0xda, 0x57, 0x24,
95443 + 0xdd, 0x41, 0x3f, 0x9f, 0xfa, 0xe4, 0x01, 0xb9, 0x69, 0x6f, 0x96, 0x9b,
95444 + 0x5b, 0x88, 0xc3, 0xec, 0x47, 0x9b, 0xba, 0x64, 0x10, 0x7d, 0x49, 0xf4,
95445 + 0x35, 0x2b, 0x3f, 0x6a, 0x7c, 0x06, 0x9d, 0x75, 0xd3, 0xa6, 0xae, 0x5a,
95446 + 0xcf, 0x5f, 0xbc, 0xeb, 0x22, 0x68, 0x42, 0x6c, 0xc7, 0x56, 0xb4, 0xa9,
95447 + 0xe3, 0xec, 0x86, 0xfe, 0x2e, 0xb4, 0xef, 0xc3, 0x1c, 0x4d, 0xfa, 0x7e,
95448 + 0x96, 0xb3, 0xcd, 0xd4, 0x39, 0xeb, 0xc6, 0xac, 0x6e, 0x68, 0xff, 0xb1,
95449 + 0xdd, 0xe0, 0x13, 0x3e, 0x25, 0xbd, 0x73, 0x29, 0xd9, 0xd5, 0x59, 0xdf,
95450 + 0xfe, 0x77, 0x43, 0xbb, 0x4d, 0x56, 0xb6, 0x93, 0x0c, 0x4f, 0x75, 0xd4,
95451 + 0xf7, 0xfb, 0xfc, 0xe4, 0xb7, 0x3b, 0xf1, 0xbe, 0x09, 0x18, 0xbc, 0xa4,
95452 + 0xc6, 0x52, 0x37, 0xa3, 0x5c, 0xeb, 0x83, 0x86, 0x67, 0x78, 0xcd, 0x67,
95453 + 0xf8, 0x2c, 0xf3, 0x7a, 0x9f, 0xb1, 0x1f, 0xcf, 0x30, 0x27, 0xc0, 0xbc,
95454 + 0x06, 0x79, 0x76, 0xb9, 0x38, 0x8b, 0x63, 0x3e, 0x9f, 0x6f, 0xc8, 0x54,
95455 + 0x79, 0xcf, 0xd7, 0x2b, 0xb1, 0x2a, 0x56, 0x6d, 0x67, 0xc1, 0xcf, 0x09,
95456 + 0x93, 0x76, 0x5a, 0x93, 0x8a, 0xdd, 0x00, 0x9d, 0x0f, 0x80, 0xce, 0x0f,
95457 + 0x05, 0x19, 0x17, 0xb6, 0x78, 0xb4, 0x76, 0x64, 0xa4, 0xfc, 0x5b, 0xc8,
95458 + 0x38, 0x79, 0x14, 0x3e, 0x45, 0xd9, 0xf2, 0xf0, 0x19, 0x03, 0xb0, 0x69,
95459 + 0xae, 0x04, 0x35, 0xef, 0x80, 0xf8, 0x7e, 0xf6, 0xba, 0x8c, 0x4c, 0x31,
95460 + 0x27, 0x40, 0x7e, 0x66, 0x5c, 0x9f, 0xc2, 0xbd, 0x5b, 0x18, 0xeb, 0x42,
95461 + 0x86, 0xc7, 0xc0, 0xaf, 0x21, 0x71, 0xa6, 0xb7, 0x4a, 0x6e, 0x7c, 0x4c,
95462 + 0x7d, 0x80, 0x1e, 0xd8, 0xa8, 0xe3, 0xee, 0xa8, 0x9c, 0xb8, 0xb2, 0x01,
95463 + 0xb2, 0xca, 0xb8, 0x5f, 0x73, 0x1a, 0x95, 0xb0, 0xfa, 0xe6, 0xf4, 0x39,
95464 + 0x98, 0x87, 0x33, 0x35, 0x66, 0x23, 0xb7, 0x93, 0x31, 0x69, 0x1b, 0x95,
95465 + 0x99, 0x0b, 0xb6, 0xe2, 0x5d, 0x52, 0x72, 0xa7, 0x42, 0xda, 0x65, 0xf7,
95466 + 0xc6, 0xa1, 0xab, 0xe8, 0xcb, 0x9f, 0x8c, 0x98, 0xb3, 0x7c, 0x74, 0x2d,
95467 + 0x63, 0xe2, 0xe4, 0x74, 0xed, 0x1c, 0x8a, 0x91, 0xc1, 0xbd, 0xd7, 0xda,
95468 + 0x8d, 0xcc, 0x30, 0x3e, 0xfe, 0xa0, 0x92, 0x8a, 0x72, 0x4d, 0x8e, 0x65,
95469 + 0xed, 0x96, 0x3c, 0xc2, 0xbd, 0x7d, 0xea, 0xf1, 0xf2, 0xcf, 0x30, 0x5f,
95470 + 0x5c, 0x7a, 0x5e, 0x1f, 0xd3, 0xb8, 0xfe, 0x78, 0x5d, 0x0c, 0x6b, 0xf2,
95471 + 0x05, 0x26, 0x8e, 0xbd, 0x2e, 0x93, 0xf3, 0xa4, 0x0f, 0x6d, 0x7c, 0x40,
95472 + 0x5e, 0x73, 0x7a, 0xed, 0x27, 0xb5, 0xd6, 0x98, 0x48, 0xb1, 0x3e, 0xd3,
95473 + 0xe2, 0x24, 0xed, 0x59, 0x09, 0x0d, 0x7e, 0x15, 0xd7, 0x8c, 0x6b, 0xf3,
95474 + 0x6e, 0xaf, 0xfb, 0xa4, 0xf8, 0x38, 0x90, 0x8d, 0xa9, 0x15, 0x81, 0xdb,
95475 + 0x95, 0xeb, 0x7b, 0x39, 0xc6, 0xe0, 0x40, 0x24, 0x40, 0x5a, 0xbd, 0xb7,
95476 + 0x9e, 0xf8, 0x99, 0xfa, 0xfc, 0xdf, 0x83, 0x4f, 0xef, 0x19, 0x48, 0x9c,
95477 + 0x62, 0x0c, 0x1b, 0x76, 0xbe, 0xb5, 0xd6, 0xbc, 0x6b, 0x2e, 0xb7, 0x5a,
95478 + 0xb4, 0x7e, 0x76, 0xe4, 0x23, 0x87, 0x78, 0x88, 0x44, 0x6c, 0x85, 0xc5,
95479 + 0x3c, 0x38, 0x75, 0x1c, 0x6b, 0x2a, 0xcc, 0xb9, 0x11, 0xc7, 0xdf, 0x2c,
95480 + 0x97, 0xfb, 0x2c, 0x79, 0x30, 0x94, 0x8a, 0x5b, 0xb2, 0x29, 0x7e, 0x56,
95481 + 0xb0, 0x26, 0xeb, 0x2b, 0xf3, 0x89, 0x1c, 0xc7, 0x87, 0xa6, 0x39, 0x5f,
95482 + 0x5c, 0xe3, 0x95, 0xe4, 0xa6, 0x4a, 0xe5, 0x19, 0x57, 0x02, 0xc9, 0x7b,
95483 + 0x3f, 0xac, 0xb0, 0x16, 0x6e, 0xbd, 0xfe, 0x45, 0x38, 0x05, 0xea, 0x8a,
95484 + 0x55, 0x93, 0x06, 0x73, 0x78, 0xe2, 0x48, 0xcf, 0x3c, 0xdb, 0xdf, 0x7d,
95485 + 0xc4, 0xb4, 0x4f, 0xa1, 0xdd, 0xe4, 0x61, 0x9d, 0xa6, 0x8e, 0xf4, 0x14,
95486 + 0x9f, 0x5a, 0x6b, 0xe2, 0xef, 0x45, 0xc5, 0x7f, 0xbd, 0x5d, 0x17, 0xd3,
95487 + 0xa4, 0x02, 0xe3, 0x85, 0xb1, 0xc0, 0x58, 0xc1, 0xea, 0x6b, 0x06, 0xad,
95488 + 0xe6, 0x5c, 0xe6, 0x6a, 0xfc, 0x9c, 0x15, 0xf3, 0xfd, 0x22, 0xdf, 0x57,
95489 + 0x8c, 0x14, 0x6b, 0x8a, 0x96, 0xfa, 0x42, 0x07, 0xe6, 0x98, 0xe3, 0x8f,
95490 + 0xa8, 0x3e, 0x38, 0x38, 0xdf, 0x26, 0x79, 0x7b, 0x8d, 0xe4, 0x55, 0xc6,
95491 + 0xa3, 0xaa, 0x03, 0x2c, 0xe7, 0x5e, 0xf4, 0x71, 0xdf, 0x4f, 0x28, 0x2e,
95492 + 0xe2, 0xcd, 0x42, 0x17, 0xda, 0xcc, 0x35, 0x6f, 0x6f, 0xe8, 0xaf, 0xad,
95493 + 0xcb, 0x26, 0x6c, 0xcb, 0x6a, 0xac, 0xc9, 0xb2, 0xaf, 0xb1, 0x16, 0x7b,
95494 + 0x52, 0xae, 0x93, 0x6f, 0xca, 0x7e, 0xce, 0xdd, 0xf5, 0x72, 0xee, 0xdf,
95495 + 0xee, 0x32, 0x18, 0x61, 0xc9, 0x84, 0x86, 0x9a, 0xfb, 0x8e, 0x4f, 0x05,
95496 + 0x6f, 0x2d, 0xe5, 0x4f, 0xd1, 0x9e, 0xaf, 0xd6, 0xca, 0x71, 0xef, 0x39,
95497 + 0x62, 0xc5, 0xe1, 0x57, 0xe4, 0xbc, 0xef, 0x0e, 0x78, 0xbf, 0xfa, 0xfc,
95498 + 0xff, 0xd8, 0x53, 0x8b, 0xd6, 0xd9, 0xad, 0xba, 0x3a, 0xfb, 0xe3, 0x78,
95499 + 0x96, 0x35, 0xf6, 0x5c, 0xa5, 0x09, 0xbc, 0xdb, 0x44, 0x9c, 0x48, 0x75,
95500 + 0x3c, 0x75, 0xbc, 0xea, 0x72, 0x9d, 0x6b, 0xa7, 0x37, 0x57, 0x10, 0x7a,
95501 + 0x7e, 0x62, 0xca, 0x1f, 0x73, 0x4c, 0x56, 0xf4, 0x27, 0x62, 0x41, 0x8b,
95502 + 0x63, 0x8c, 0xbe, 0x4f, 0xbb, 0xc7, 0xa0, 0xc7, 0xa9, 0xf3, 0xf9, 0xde,
95503 + 0x0e, 0x7c, 0x3d, 0xea, 0x02, 0xea, 0x73, 0xb5, 0x01, 0xf1, 0x3c, 0x74,
95504 + 0xfd, 0x48, 0x59, 0x73, 0xf9, 0xb1, 0x87, 0x83, 0x89, 0x99, 0xac, 0xea,
95505 + 0x06, 0xf8, 0x7b, 0xe5, 0x6b, 0xcc, 0x07, 0x9d, 0x92, 0x40, 0x6d, 0x9d,
95506 + 0x86, 0xb1, 0x19, 0x6b, 0x1a, 0xad, 0xd0, 0x0d, 0x22, 0x57, 0xc1, 0x1b,
95507 + 0x6f, 0xcc, 0x91, 0x5f, 0x83, 0x1d, 0x26, 0xbe, 0x5a, 0xd8, 0x6e, 0x49,
95508 + 0x87, 0xd6, 0x3e, 0xf3, 0x4e, 0x84, 0xfe, 0xc9, 0x70, 0xb2, 0x1f, 0x7e,
95509 + 0xb6, 0x62, 0x0f, 0x98, 0xaf, 0x9c, 0x40, 0x3c, 0x56, 0x9b, 0x63, 0x81,
95510 + 0x7c, 0x8d, 0xb3, 0x3f, 0x0b, 0xbf, 0x72, 0xa9, 0xee, 0x91, 0x2f, 0x9e,
95511 + 0xd0, 0xdc, 0x66, 0x69, 0xae, 0x55, 0x75, 0x6c, 0xa9, 0xf8, 0x30, 0xce,
95512 + 0x45, 0x36, 0x5b, 0x43, 0x79, 0xaf, 0x3f, 0x2c, 0xc5, 0x22, 0xdb, 0xd2,
95513 + 0xdd, 0xa4, 0xe7, 0xee, 0xd7, 0x76, 0x6c, 0x99, 0x85, 0xaf, 0x58, 0x9c,
95514 + 0x77, 0xf0, 0xbf, 0x05, 0xff, 0x7d, 0xf8, 0xdf, 0x25, 0xe9, 0x69, 0xfa,
95515 + 0xaf, 0xac, 0xe5, 0xb4, 0x36, 0xac, 0x1f, 0xf6, 0x70, 0xe0, 0xf4, 0x6b,
95516 + 0x4d, 0x9c, 0x93, 0x2f, 0x36, 0xca, 0x09, 0xf3, 0xa4, 0xbe, 0x8e, 0x60,
95517 + 0xbe, 0xd4, 0xaf, 0xf5, 0xd5, 0xd6, 0xb0, 0x2c, 0xaf, 0xee, 0x45, 0x9e,
95518 + 0x6e, 0x91, 0x83, 0x45, 0xbf, 0x76, 0x15, 0x93, 0x43, 0xd5, 0xda, 0x95,
95519 + 0x64, 0x82, 0x43, 0xb7, 0x1f, 0xcb, 0x4e, 0x29, 0x9e, 0xc0, 0xb2, 0x86,
95520 + 0xae, 0x3f, 0x36, 0x39, 0xff, 0xce, 0x63, 0x4b, 0x98, 0x70, 0xdc, 0x9b,
95521 + 0x5f, 0x0e, 0x33, 0x44, 0x2c, 0x1d, 0xbf, 0x93, 0x53, 0xdf, 0x0d, 0xfb,
95522 + 0xf6, 0x63, 0x1e, 0xe2, 0xec, 0xe2, 0xf6, 0x12, 0x7e, 0xd9, 0x8f, 0x47,
95523 + 0x89, 0x23, 0xe5, 0x73, 0xb5, 0xd8, 0x8f, 0x10, 0xce, 0x5f, 0x02, 0x96,
95524 + 0x93, 0xc3, 0x3e, 0x2e, 0x76, 0x19, 0x3f, 0x90, 0x38, 0xd3, 0x44, 0x0d,
95525 + 0xf6, 0xc8, 0xc7, 0x9a, 0x5e, 0xc4, 0x5c, 0x19, 0xf9, 0x7d, 0xf9, 0x71,
95526 + 0xf9, 0x75, 0x79, 0x0c, 0xf2, 0x3d, 0x89, 0x39, 0xf7, 0xcb, 0xaf, 0xca,
95527 + 0x7b, 0xe5, 0x5a, 0x79, 0x5c, 0xde, 0x2a, 0xef, 0x42, 0x4c, 0x35, 0x4a,
95528 + 0xac, 0xa7, 0x87, 0x95, 0x1e, 0x96, 0x89, 0x73, 0x8a, 0x01, 0xbc, 0x45,
95529 + 0xbf, 0xe7, 0x88, 0xfa, 0xd9, 0x01, 0xf2, 0xf4, 0x6f, 0x18, 0xcf, 0x13,
95530 + 0x9b, 0x59, 0x2c, 0xfb, 0x18, 0x8e, 0x43, 0xdd, 0x58, 0xdb, 0xe6, 0x37,
95531 + 0x29, 0x23, 0xe7, 0x22, 0x81, 0xd1, 0x73, 0xa1, 0xc0, 0x43, 0xfa, 0x7d,
95532 + 0x0b, 0xeb, 0x9d, 0x15, 0x39, 0xe1, 0x3a, 0xe4, 0xcd, 0xc1, 0x11, 0xc8,
95533 + 0xc2, 0x28, 0x54, 0xfd, 0x23, 0xce, 0x1a, 0x01, 0x49, 0x53, 0x1f, 0xc3,
95534 + 0xcf, 0x4c, 0x9e, 0x76, 0x25, 0x5b, 0x98, 0x0d, 0x18, 0x3c, 0x9a, 0x8d,
95535 + 0x76, 0x1f, 0xda, 0xbf, 0xf4, 0xda, 0x3b, 0x24, 0x7b, 0x41, 0x52, 0xef,
95536 + 0xab, 0x3f, 0xfc, 0x73, 0xaf, 0x6f, 0x10, 0x7d, 0xe0, 0xcc, 0x57, 0xd8,
95537 + 0xf7, 0x8a, 0xd7, 0xc7, 0x33, 0x61, 0xad, 0x3e, 0xae, 0x7c, 0x95, 0xb5,
95538 + 0xc7, 0x85, 0xdf, 0x2f, 0x18, 0x4c, 0xe8, 0xfb, 0x5d, 0x46, 0xb7, 0x11,
95539 + 0x13, 0xf8, 0xaf, 0x2e, 0xc6, 0x60, 0x45, 0xc8, 0xd7, 0x7a, 0xe8, 0xc4,
95540 + 0xbf, 0x6f, 0x5e, 0x6a, 0x5b, 0x43, 0x9f, 0xd4, 0x60, 0xb4, 0x3f, 0x91,
95541 + 0x9e, 0xf9, 0xdb, 0x1e, 0x9e, 0xf7, 0x30, 0xde, 0x0d, 0x67, 0x55, 0x20,
95542 + 0x6e, 0x3c, 0x0e, 0xd9, 0x6e, 0x95, 0x35, 0x67, 0x48, 0xaf, 0x5e, 0xe8,
95543 + 0xea, 0x14, 0xe4, 0xd6, 0x95, 0xb9, 0x72, 0x28, 0x30, 0x52, 0x48, 0x89,
95544 + 0xc1, 0x53, 0x5b, 0x92, 0x89, 0xa6, 0xe4, 0xe4, 0x40, 0x62, 0x0b, 0xf3,
95545 + 0x90, 0xd9, 0x7e, 0x57, 0x2e, 0x95, 0x69, 0x8f, 0x73, 0x72, 0x79, 0x20,
95546 + 0xe1, 0x16, 0x85, 0xb8, 0x18, 0x57, 0x2e, 0x43, 0x36, 0xff, 0x70, 0x6e,
95547 + 0x97, 0x1c, 0x2a, 0xa8, 0x1f, 0xdc, 0x1b, 0x96, 0x97, 0xe5, 0xd2, 0xc0,
95548 + 0xcb, 0xb7, 0x2e, 0xb9, 0x93, 0x38, 0x53, 0xf2, 0xe1, 0x81, 0x6e, 0xb3,
95549 + 0x6f, 0xc5, 0x21, 0x09, 0xf3, 0x21, 0x5a, 0x53, 0x73, 0x56, 0x48, 0x7a,
95550 + 0x5f, 0xc4, 0x8b, 0xcb, 0xe1, 0x73, 0x07, 0xee, 0x33, 0xf5, 0x94, 0x80,
95551 + 0xbf, 0xcf, 0x30, 0xfc, 0x18, 0x3e, 0xe7, 0xd3, 0xc6, 0x9f, 0xa7, 0x2b,
95552 + 0x90, 0xbe, 0xd0, 0x26, 0xa1, 0x57, 0xbe, 0x0c, 0xba, 0x86, 0xe4, 0x40,
95553 + 0x7f, 0xa5, 0xf2, 0x0d, 0x37, 0x14, 0x9f, 0x44, 0x8c, 0x82, 0xfd, 0xcb,
95554 + 0xea, 0xd3, 0xed, 0xa0, 0x49, 0xb3, 0x44, 0x4f, 0xfb, 0xeb, 0xad, 0xf0,
95555 + 0xb0, 0x0c, 0xe7, 0x57, 0x1b, 0x5b, 0xe6, 0x63, 0x1b, 0xfc, 0xf9, 0x0c,
95556 + 0xa6, 0xac, 0xc7, 0xea, 0x0f, 0x78, 0xdf, 0x49, 0x78, 0xed, 0x7b, 0x03,
95557 + 0x0f, 0x86, 0x3a, 0x24, 0xe4, 0xfc, 0x70, 0x1d, 0xb1, 0x91, 0x0b, 0x05,
95558 + 0xbf, 0x1f, 0x7e, 0x62, 0xc8, 0xf7, 0x87, 0x65, 0xdb, 0xd2, 0x59, 0xcb,
95559 + 0xb6, 0x9e, 0xf9, 0x6f, 0x7a, 0x73, 0xa6, 0xbc, 0xb1, 0x88, 0x39, 0x62,
95560 + 0xab, 0xd4, 0x3e, 0x99, 0xb1, 0x9f, 0xc9, 0xb3, 0xfd, 0x89, 0x57, 0x15,
95561 + 0x27, 0x5b, 0x7d, 0x86, 0xf7, 0x11, 0x43, 0x96, 0xf5, 0x99, 0xd8, 0x6e,
95562 + 0xd0, 0x37, 0x13, 0xbb, 0xc7, 0x9e, 0xb5, 0x82, 0x01, 0xe3, 0x8f, 0x34,
95563 + 0xc9, 0x0f, 0xa2, 0xb0, 0xdb, 0x88, 0xf1, 0xb2, 0xcc, 0x7f, 0xb9, 0x77,
95564 + 0x3c, 0x3f, 0x85, 0x7d, 0x89, 0x53, 0x49, 0x6b, 0x02, 0xfb, 0xe3, 0x19,
95565 + 0x10, 0x03, 0x6a, 0x81, 0x4e, 0x5d, 0x78, 0x3f, 0xc4, 0x4f, 0xfd, 0xfe,
95566 + 0xfb, 0xaf, 0x86, 0x0e, 0xe3, 0xfe, 0x0d, 0x2e, 0x4c, 0x2c, 0xe6, 0x42,
95567 + 0x86, 0x3d, 0x0c, 0x6c, 0xad, 0xdc, 0xfa, 0xd8, 0x58, 0x1f, 0x4f, 0x47,
95568 + 0x8c, 0x52, 0x0c, 0x7e, 0x20, 0x65, 0x82, 0xbc, 0xd9, 0x89, 0xfe, 0x95,
95569 + 0xb7, 0x53, 0xfa, 0xea, 0x7e, 0xdf, 0x87, 0x55, 0x6c, 0xf7, 0x64, 0x61,
95570 + 0xaf, 0xc1, 0xe6, 0x59, 0x8b, 0x92, 0xea, 0x4e, 0xda, 0x27, 0xb0, 0xdf,
95571 + 0x74, 0x28, 0x51, 0xcc, 0x49, 0x4c, 0x66, 0xa1, 0x2f, 0xde, 0x80, 0xec,
95572 + 0x5f, 0x2b, 0xc7, 0x03, 0x69, 0xec, 0xe9, 0x60, 0x61, 0x48, 0x26, 0x2f,
95573 + 0xe8, 0x37, 0x5f, 0xd0, 0xfb, 0x43, 0x52, 0x2a, 0x24, 0xb6, 0xcc, 0x82,
95574 + 0xff, 0x66, 0x0b, 0xc4, 0x17, 0xf5, 0xc6, 0x47, 0x31, 0xe3, 0x42, 0x61,
95575 + 0x23, 0xec, 0x83, 0xa4, 0x2e, 0xc1, 0xff, 0xb9, 0x54, 0xde, 0x02, 0x3e,
95576 + 0xc3, 0xfd, 0xb2, 0x83, 0x5f, 0xe8, 0xcc, 0xf2, 0x00, 0xe4, 0x9c, 0x7b,
95577 + 0xb1, 0x65, 0x6e, 0x33, 0xce, 0x8e, 0x38, 0x22, 0xc5, 0x8f, 0xff, 0x07,
95578 + 0xe7, 0xeb, 0xbf, 0xf7, 0x76, 0xb5, 0xd3, 0xb3, 0xba, 0x2f, 0xd8, 0x65,
95579 + 0xc4, 0x00, 0xd9, 0x7e, 0x63, 0xb7, 0xd3, 0x91, 0x76, 0x49, 0xdf, 0x43,
95580 + 0x3b, 0xde, 0xa1, 0x31, 0xa2, 0xf2, 0x62, 0x84, 0xf7, 0xdf, 0x59, 0x67,
95581 + 0xe8, 0x17, 0x6e, 0x68, 0xbf, 0x8d, 0xdf, 0x36, 0xe9, 0x74, 0xf8, 0x6b,
95582 + 0xe3, 0xf7, 0xc6, 0x3a, 0xd6, 0x77, 0x3b, 0x9d, 0x24, 0xd6, 0xfa, 0x9d,
95583 + 0x97, 0x2f, 0xc0, 0xf5, 0x2c, 0x9f, 0x59, 0xeb, 0xad, 0xcb, 0x79, 0xdb,
95584 + 0x30, 0x4f, 0xab, 0xb7, 0x56, 0x9b, 0xe6, 0x27, 0xcd, 0x5a, 0x88, 0x71,
95585 + 0x0b, 0xef, 0xad, 0xd3, 0xef, 0x8c, 0x61, 0x2f, 0xea, 0xdb, 0x7f, 0x5d,
95586 + 0x47, 0xdc, 0x5c, 0xa7, 0xd3, 0xa6, 0x18, 0xcf, 0x9b, 0x1d, 0x1d, 0xb8,
95587 + 0xe6, 0x9a, 0x1c, 0x63, 0xf2, 0xe1, 0xa5, 0x32, 0xe7, 0x67, 0x3b, 0x25,
95588 + 0x47, 0x35, 0x9f, 0x61, 0xb0, 0x7c, 0xa5, 0xc2, 0xfd, 0x32, 0x79, 0x4e,
95589 + 0xf1, 0x75, 0x33, 0x79, 0x8b, 0xdf, 0xbd, 0xf0, 0x3b, 0x39, 0xfa, 0x12,
95590 + 0x63, 0x32, 0x81, 0xf3, 0xbb, 0x0c, 0x9f, 0x6a, 0xc1, 0x7c, 0x13, 0x8b,
95591 + 0xbf, 0xfd, 0x38, 0x97, 0x10, 0x64, 0x8c, 0x32, 0x4a, 0x99, 0xc2, 0xf9,
95592 + 0x8d, 0xdb, 0xf2, 0xee, 0x00, 0xe5, 0x79, 0x40, 0xae, 0x54, 0xe5, 0x39,
95593 + 0x07, 0x79, 0xa6, 0x2c, 0xe7, 0x20, 0xd3, 0x86, 0xaf, 0xf7, 0xf1, 0x1b,
95594 + 0x6b, 0x84, 0xeb, 0x25, 0xf5, 0x21, 0x2e, 0x82, 0xaf, 0x6d, 0x13, 0x97,
95595 + 0x2b, 0x2e, 0xfe, 0x30, 0xf4, 0x5a, 0x93, 0xf7, 0x1d, 0x00, 0xae, 0xaf,
95596 + 0xbc, 0x28, 0xe9, 0x0b, 0x2d, 0xd8, 0x77, 0xbc, 0x9b, 0x67, 0x96, 0xbd,
95597 + 0xc2, 0x7f, 0x9f, 0x17, 0x89, 0x37, 0xa5, 0x3f, 0xcb, 0x6b, 0xc6, 0x79,
95598 + 0xeb, 0x31, 0x66, 0x10, 0x74, 0x6e, 0xc1, 0xfc, 0xdc, 0xe3, 0x72, 0xe3,
95599 + 0x78, 0x3f, 0x54, 0x83, 0x4f, 0xf5, 0xe9, 0xbd, 0x4a, 0xd7, 0xcc, 0xea,
95600 + 0x37, 0x5a, 0x46, 0x06, 0x27, 0x0a, 0xe4, 0xfb, 0x18, 0xf8, 0x96, 0x3e,
95601 + 0x31, 0xf9, 0x25, 0xa5, 0xe7, 0x50, 0x2a, 0x90, 0x7f, 0x43, 0x9a, 0xc3,
95602 + 0xc8, 0xc2, 0xb6, 0xec, 0xd1, 0xf1, 0xb1, 0x25, 0xf9, 0xee, 0x0e, 0x68,
95603 + 0xdc, 0x9d, 0x2d, 0xac, 0x94, 0x1e, 0xd5, 0x41, 0xdd, 0x1e, 0x6f, 0xc3,
95604 + 0x5e, 0x28, 0x96, 0x7b, 0xbf, 0x1c, 0x29, 0x0f, 0x82, 0x0e, 0x31, 0x79,
95605 + 0x06, 0x7e, 0xf3, 0x73, 0xe5, 0xbb, 0x64, 0x31, 0x82, 0x7d, 0x55, 0x65,
95606 + 0x6c, 0x58, 0x9e, 0x9f, 0x8d, 0x7b, 0xd7, 0x09, 0x77, 0xd1, 0xda, 0x8e,
95607 + 0x3d, 0x50, 0x9e, 0x28, 0x57, 0x1c, 0x17, 0x44, 0x2c, 0xc2, 0x79, 0x8f,
95608 + 0x18, 0xdd, 0x86, 0x79, 0x8b, 0x11, 0xca, 0x2f, 0xf7, 0x16, 0xf2, 0x64,
95609 + 0x96, 0x71, 0x15, 0xdf, 0xd9, 0xd8, 0xa4, 0x4c, 0xdd, 0x59, 0x24, 0x14,
95610 + 0x07, 0xba, 0x74, 0x06, 0xfe, 0x3c, 0xbe, 0x5c, 0xfa, 0xdf, 0x51, 0x50,
95611 + 0x8f, 0xc2, 0x56, 0x16, 0x60, 0x2b, 0x0b, 0xb0, 0x91, 0x90, 0x85, 0x6b,
95612 + 0x05, 0xd8, 0xc8, 0x02, 0x6c, 0x24, 0xf4, 0xd9, 0x9b, 0x88, 0xed, 0xde,
95613 + 0x00, 0x0f, 0x19, 0x5f, 0xfb, 0x30, 0x7d, 0x6d, 0xfc, 0xfd, 0x17, 0xea,
95614 + 0x52, 0x61, 0x78, 0xd0, 0x71, 0x00, 0x00, 0x00 };
95615
95616 static const u32 bnx2_RXP_b06FwData[(0x0/4) + 1] = { 0x0 };
95617 static const u32 bnx2_RXP_b06FwRodata[(0x24/4) + 1] = {
95618 - 0x08004c28, 0x08004c28, 0x08004ba0, 0x08004bd8, 0x08004c0c, 0x08004c30,
95619 - 0x08004c30, 0x08004c30, 0x08004b10, 0x00000000 };
95620 + 0x0800458c, 0x0800458c, 0x08004504, 0x0800453c, 0x08004570, 0x08004594,
95621 + 0x08004594, 0x08004594, 0x08004474, 0x00000000 };
95622
95623 static struct fw_info bnx2_rxp_fw_06 = {
95624 - /* Firmware version: 4.6.16 */
95625 + /* Firmware version: 4.4.2 */
95626 .ver_major = 0x4,
95627 - .ver_minor = 0x6,
95628 - .ver_fix = 0x10,
95629 + .ver_minor = 0x4,
95630 + .ver_fix = 0x2,
95631
95632 - .start_addr = 0x080031d8,
95633 + .start_addr = 0x080031d0,
95634
95635 .text_addr = 0x08000000,
95636 - .text_len = 0x70dc,
95637 + .text_len = 0x71cc,
95638 .text_index = 0x0,
95639 .gz_text = bnx2_RXP_b06FwText,
95640 .gz_text_len = sizeof(bnx2_RXP_b06FwText),
95641 @@ -2935,15 +2966,15 @@
95642 .data_index = 0x0,
95643 .data = bnx2_RXP_b06FwData,
95644
95645 - .sbss_addr = 0x08007120,
95646 - .sbss_len = 0x54,
95647 + .sbss_addr = 0x08007220,
95648 + .sbss_len = 0x58,
95649 .sbss_index = 0x0,
95650
95651 - .bss_addr = 0x08007178,
95652 - .bss_len = 0x450,
95653 + .bss_addr = 0x08007278,
95654 + .bss_len = 0x44c,
95655 .bss_index = 0x0,
95656
95657 - .rodata_addr = 0x080070dc,
95658 + .rodata_addr = 0x080071cc,
95659 .rodata_len = 0x24,
95660 .rodata_index = 0x0,
95661 .rodata = bnx2_RXP_b06FwRodata,
95662 @@ -2966,571 +2997,639 @@
95663 };
95664
95665 static u8 bnx2_rv2p_proc1[] = {
95666 - /* Date: 02/03/2009 14:20 */
95667 - 0xa5, 0x56, 0x4f, 0x68, 0x14, 0x67, 0x14, 0x7f, 0x33, 0xbb, 0xb3, 0xb3,
95668 - 0x99, 0x9d, 0xd9, 0xdd, 0x92, 0x18, 0x96, 0x18, 0xcc, 0x1a, 0x84, 0x92,
95669 - 0x75, 0xb7, 0x6e, 0x6c, 0x0f, 0x42, 0x03, 0x29, 0xb9, 0x08, 0x35, 0x87,
95670 - 0x12, 0x11, 0x8a, 0x2d, 0x68, 0xb7, 0x22, 0x14, 0x0a, 0xa5, 0x07, 0x8f,
95671 - 0xa5, 0x83, 0x71, 0x53, 0x5a, 0xbc, 0xe4, 0xd0, 0x80, 0x42, 0x35, 0x27,
95672 - 0x5b, 0x62, 0x0e, 0x3b, 0xe0, 0xa1, 0x88, 0xe0, 0x41, 0x8f, 0x7a, 0xaa,
95673 - 0x7f, 0x5a, 0x28, 0x46, 0x29, 0xb5, 0x87, 0x82, 0xc7, 0xde, 0x9a, 0xe9,
95674 - 0xf7, 0xfe, 0x7c, 0xbb, 0x33, 0x5f, 0x66, 0x13, 0xa1, 0x42, 0xfc, 0xf1,
95675 - 0xbd, 0x79, 0xef, 0xfb, 0xde, 0x9f, 0xdf, 0x7b, 0x6f, 0xab, 0x00, 0x60,
95676 - 0x43, 0x18, 0x4d, 0x29, 0x04, 0x2b, 0x67, 0x15, 0x11, 0x00, 0x36, 0x81,
95677 - 0xff, 0x39, 0x3e, 0x9d, 0xc3, 0x23, 0x72, 0x3e, 0xcc, 0x10, 0x1e, 0xae,
95678 - 0xaa, 0xff, 0x3f, 0x85, 0xf9, 0x3a, 0x62, 0x0e, 0xe6, 0x0f, 0x22, 0x1e,
95679 - 0x85, 0xbb, 0xf5, 0x9a, 0xc2, 0x7f, 0x63, 0x08, 0xf1, 0x1c, 0xf4, 0x7e,
95680 - 0x8e, 0x4a, 0x74, 0xff, 0x96, 0xd8, 0xff, 0x9a, 0x63, 0x3c, 0xd6, 0xac,
95681 - 0x12, 0x3e, 0x5a, 0xc5, 0xf7, 0x4e, 0x9d, 0x82, 0x02, 0xda, 0x5d, 0x50,
95682 - 0x17, 0x23, 0x96, 0xd4, 0x83, 0x45, 0xb2, 0x03, 0xbb, 0xa2, 0x70, 0x12,
95683 - 0x9e, 0x2f, 0xa0, 0xfe, 0x1b, 0xde, 0xa5, 0x55, 0xc4, 0x12, 0x74, 0x9a,
95684 - 0xa8, 0x77, 0x00, 0xb2, 0xf5, 0x6a, 0x4a, 0x0f, 0xe5, 0x11, 0x84, 0x4d,
95685 - 0xc4, 0x11, 0x80, 0x56, 0xf2, 0x3d, 0xd7, 0x0a, 0x5b, 0x68, 0xff, 0x85,
95686 - 0xbc, 0xb7, 0x4f, 0xee, 0x51, 0x71, 0x47, 0x88, 0x3d, 0xb1, 0x53, 0x7f,
95687 - 0x2d, 0x96, 0xb3, 0xfe, 0x67, 0x4a, 0x4f, 0xc7, 0xe3, 0x73, 0xde, 0xa6,
95688 - 0x38, 0x1e, 0x57, 0xe2, 0x79, 0xb6, 0xaa, 0xf3, 0x86, 0xfa, 0xbf, 0xc7,
95689 - 0x69, 0x7d, 0xd8, 0x43, 0xff, 0x89, 0xd2, 0x4f, 0xdf, 0xcb, 0xf2, 0x5f,
95690 - 0x06, 0xf2, 0x99, 0xf4, 0xf7, 0xad, 0x06, 0xfa, 0xe7, 0x00, 0x34, 0x24,
95691 - 0x8f, 0xa4, 0xff, 0x30, 0xe6, 0x78, 0xe6, 0xe0, 0x90, 0x5d, 0x23, 0xbd,
95692 - 0x3c, 0xd4, 0x28, 0x3f, 0x1c, 0xef, 0x01, 0xc1, 0x25, 0xc1, 0x6b, 0x82,
95693 - 0x3f, 0x08, 0xc2, 0xff, 0xc4, 0xad, 0x21, 0xf2, 0x7d, 0x82, 0xfb, 0x0d,
95694 - 0xf9, 0x2d, 0xc1, 0xb7, 0x0c, 0x7b, 0xcf, 0x62, 0x7c, 0xac, 0xbf, 0xcb,
95695 - 0xf9, 0x5d, 0xc3, 0xfe, 0x4b, 0xe0, 0xfc, 0x58, 0x46, 0xde, 0x36, 0x85,
95696 - 0x87, 0x58, 0x77, 0xf9, 0x3e, 0xa3, 0xf5, 0x84, 0x37, 0x8d, 0xa4, 0xfe,
95697 - 0x8d, 0x5d, 0xf4, 0x59, 0x6d, 0x61, 0x26, 0xcb, 0xee, 0x7a, 0x2c, 0x79,
95698 - 0x14, 0x7b, 0xaf, 0x77, 0x67, 0x08, 0xef, 0xe7, 0x32, 0x79, 0x3f, 0x2e,
95699 - 0x71, 0xa8, 0xa6, 0x23, 0xfb, 0xdb, 0x16, 0xf3, 0xdb, 0x11, 0x5e, 0xee,
95700 - 0xc6, 0x63, 0xe1, 0xd5, 0x8c, 0xe6, 0x57, 0x9a, 0x57, 0xcc, 0x8f, 0x82,
95701 - 0xc1, 0x8f, 0x6f, 0xf7, 0xc8, 0x4b, 0xc9, 0x88, 0x6f, 0x39, 0xd6, 0xf9,
95702 - 0xb6, 0x45, 0x7c, 0xb1, 0x50, 0xa5, 0x7b, 0xbf, 0x8b, 0xe8, 0x38, 0xe6,
95703 - 0xaf, 0xe0, 0x39, 0x0f, 0x97, 0x23, 0x6d, 0x27, 0xfd, 0xd4, 0xd0, 0xef,
95704 - 0xb0, 0x7d, 0x20, 0x9f, 0x6d, 0x47, 0xfb, 0xc9, 0x72, 0x0f, 0xf0, 0x3c,
95705 - 0xda, 0x5b, 0x37, 0xf2, 0x56, 0xa7, 0xb8, 0x41, 0xe2, 0x07, 0x23, 0x7e,
95706 - 0x9d, 0xbf, 0x57, 0xc2, 0xf7, 0x49, 0x95, 0x0f, 0xfe, 0x3e, 0x05, 0xfa,
95707 - 0x7e, 0x9c, 0x0b, 0x45, 0x38, 0x7b, 0xbc, 0x42, 0xfe, 0x94, 0x0b, 0x7c,
95708 - 0xcd, 0x87, 0x15, 0xc6, 0x73, 0x1e, 0xe3, 0x9f, 0x9e, 0xca, 0x2d, 0xc4,
95709 - 0xf1, 0xf9, 0x12, 0x9f, 0x3f, 0x09, 0xf0, 0xde, 0x51, 0xf5, 0xb0, 0xb6,
95710 - 0xd7, 0x7e, 0xed, 0xe6, 0x0f, 0xbe, 0xaf, 0xdf, 0xd1, 0x7e, 0xe8, 0xf7,
95711 - 0xd2, 0x75, 0x19, 0xfe, 0x2e, 0x63, 0xc7, 0x4e, 0xe7, 0x21, 0x3f, 0xcb,
95712 - 0x78, 0xb5, 0x4d, 0x50, 0x5b, 0xf3, 0xd9, 0xee, 0x8a, 0x9f, 0xc7, 0xf3,
95713 - 0x3b, 0x57, 0x1e, 0xe0, 0xfd, 0xf6, 0xd1, 0xb5, 0x48, 0xfc, 0xab, 0xe8,
95714 - 0xba, 0x92, 0x1c, 0xa6, 0x81, 0xcf, 0x4b, 0xc2, 0x93, 0x25, 0xe2, 0x71,
95715 - 0x59, 0x7d, 0x42, 0x9c, 0x80, 0xd0, 0x26, 0x3d, 0xef, 0x3e, 0xd9, 0xe7,
95716 - 0x44, 0xae, 0xea, 0x37, 0x9d, 0xe6, 0xff, 0x16, 0xf3, 0xa2, 0x98, 0xe6,
95717 - 0xd3, 0x7c, 0x62, 0xce, 0x25, 0xf3, 0x61, 0xf5, 0x79, 0xb4, 0xb3, 0x8e,
95718 - 0xe9, 0x7a, 0x3d, 0x5a, 0xd5, 0xf9, 0x61, 0xbe, 0xb2, 0x9e, 0x2a, 0x56,
95719 - 0x8b, 0xd5, 0xc3, 0xb6, 0x24, 0x72, 0x56, 0xbe, 0xb7, 0x4c, 0xde, 0x66,
95720 - 0xf1, 0xbe, 0x6a, 0xf0, 0xb8, 0x21, 0xbc, 0x1f, 0xe9, 0xad, 0xbf, 0xd6,
95721 - 0x7e, 0xb8, 0x29, 0xbc, 0xaf, 0x0e, 0xf6, 0xc3, 0x26, 0xed, 0x27, 0x75,
95722 - 0x26, 0xf5, 0x5e, 0x98, 0x4b, 0xd5, 0xe9, 0x3d, 0xc8, 0xec, 0xef, 0xab,
95723 - 0x72, 0x4f, 0x5b, 0xfa, 0xbc, 0x90, 0xd8, 0x23, 0xa4, 0x5e, 0x06, 0xf2,
95724 - 0xc3, 0x35, 0xfa, 0x74, 0x2c, 0x96, 0x77, 0x54, 0xbf, 0x65, 0xc5, 0xeb,
95725 - 0xc2, 0x5f, 0xc2, 0x83, 0x0e, 0xf5, 0x93, 0x33, 0xf6, 0xf9, 0xed, 0x54,
95726 - 0x9d, 0x00, 0x0e, 0xea, 0xfd, 0x90, 0xf4, 0x2b, 0xb9, 0xdf, 0xf0, 0xbe,
95727 - 0x1a, 0x74, 0x66, 0x93, 0x7b, 0xee, 0x72, 0xbf, 0xdf, 0x03, 0xea, 0xa3,
95728 - 0xf2, 0x8e, 0xbe, 0xd4, 0xf3, 0xac, 0xde, 0x4c, 0xf6, 0xf7, 0x98, 0xcc,
95729 - 0x2f, 0x5b, 0xf6, 0x73, 0xc9, 0x8c, 0x53, 0xed, 0xbd, 0xec, 0x7a, 0x71,
95730 - 0xbc, 0xff, 0x6c, 0xbf, 0xde, 0xbc, 0xdb, 0xab, 0xee, 0x9e, 0x51, 0xf7,
95731 - 0xbf, 0xb7, 0x75, 0x1e, 0x6d, 0x27, 0x6b, 0xbf, 0x7f, 0xa0, 0xee, 0x15,
95732 - 0x7d, 0x99, 0x1b, 0x67, 0xea, 0x59, 0x7c, 0x2d, 0xee, 0xd0, 0x4b, 0xcf,
95733 - 0x2f, 0xed, 0xe7, 0xc6, 0x06, 0xd7, 0xfd, 0xa3, 0xb8, 0xbf, 0x97, 0x52,
95734 - 0xf3, 0x75, 0x44, 0xea, 0xac, 0xf4, 0xc8, 0xbf, 0xa7, 0xdb, 0x83, 0x79,
95735 - 0x9c, 0xe4, 0xcd, 0x49, 0xe1, 0xab, 0x3d, 0xb7, 0x4e, 0xfd, 0xe1, 0x76,
95736 - 0x5e, 0x1a, 0x75, 0x98, 0x6d, 0x62, 0xfd, 0xbf, 0x86, 0x48, 0xfc, 0xfc,
95737 - 0x2d, 0xe5, 0x6f, 0x20, 0xfd, 0x55, 0x80, 0x9f, 0x22, 0x1d, 0x97, 0xae,
95738 - 0x1b, 0xe3, 0x8f, 0x4d, 0xe9, 0x93, 0x7e, 0x7c, 0xf8, 0xee, 0xa2, 0xbc,
95739 - 0x5b, 0x85, 0x1b, 0x91, 0x9e, 0x63, 0x38, 0xd7, 0x5c, 0x68, 0xcb, 0xdc,
95740 - 0x3c, 0x2b, 0xf3, 0xeb, 0x85, 0xc7, 0xf3, 0xb1, 0x73, 0x82, 0x78, 0x08,
95741 - 0xe3, 0x32, 0xc7, 0x3a, 0x01, 0x9f, 0x27, 0x02, 0xfe, 0x7d, 0xd8, 0x76,
95742 - 0x7d, 0xd2, 0x9b, 0x08, 0x18, 0xc7, 0x4b, 0x68, 0x57, 0x83, 0x3f, 0x16,
95743 - 0x49, 0xbd, 0x39, 0x98, 0x63, 0xe6, 0xfc, 0x92, 0x38, 0xdf, 0x46, 0xb9,
95744 - 0xda, 0x93, 0xd3, 0x7c, 0xe6, 0x3a, 0xfb, 0x7d, 0x5e, 0x5f, 0x97, 0xaa,
95745 - 0xd4, 0x2b, 0xc9, 0x3c, 0xeb, 0x3e, 0xba, 0x69, 0xe4, 0x57, 0xd7, 0xe7,
95746 - 0xcd, 0x58, 0xcf, 0xf7, 0xe9, 0xe3, 0xe8, 0x6f, 0x05, 0xca, 0x2e, 0xf3,
95747 - 0x82, 0x51, 0xdd, 0x63, 0xbb, 0x68, 0x36, 0xd9, 0x95, 0x79, 0xd8, 0xbd,
95748 - 0x48, 0xd7, 0x2c, 0x76, 0xb5, 0x7c, 0x81, 0x1a, 0x61, 0x69, 0xe3, 0x1e,
95749 - 0xc9, 0xcb, 0x51, 0x8e, 0xe5, 0xee, 0x09, 0x9d, 0xaf, 0x0a, 0xc5, 0xbf,
95750 - 0xc6, 0xf9, 0xfa, 0xf8, 0x7b, 0xc6, 0xd3, 0xf0, 0x3e, 0xa1, 0x37, 0x98,
95751 - 0xe3, 0x45, 0x42, 0x08, 0x92, 0x73, 0xdc, 0x51, 0xee, 0x55, 0xc9, 0x9f,
95752 - 0x41, 0xfd, 0xcc, 0xfd, 0xb8, 0x5b, 0x1d, 0x47, 0x13, 0xfc, 0xd3, 0x75,
95753 - 0x34, 0xe7, 0x39, 0xf1, 0xc4, 0xe0, 0x63, 0x77, 0x08, 0x1f, 0xad, 0x21,
95754 - 0x7c, 0x36, 0xe7, 0xd6, 0x57, 0xd2, 0xc7, 0x79, 0x70, 0x72, 0xb4, 0x70,
95755 - 0xfd, 0xfc, 0x32, 0xd5, 0xd5, 0xee, 0xf2, 0x0f, 0x08, 0xdf, 0x59, 0xb1,
95756 - 0x28, 0x5f, 0xfe, 0x0a, 0xeb, 0xe5, 0x59, 0x5e, 0xd3, 0xf8, 0xcd, 0xb2,
95757 - 0xfe, 0xbd, 0xf1, 0x1f, 0xb6, 0x34, 0x9b, 0xb9, 0xa0, 0x0c, 0x00, 0x00,
95758 - 0x00 };
95759 + /* Date: 05/13/2008 13:50 */
95760 + 0xa5, 0x56, 0x4f, 0x48, 0x14, 0x61, 0x14, 0x7f, 0x3b, 0xfb, 0x67, 0xd6,
95761 + 0xdd, 0xd9, 0x9d, 0x25, 0xff, 0x6d, 0x66, 0xb8, 0x49, 0x97, 0xd5, 0x15,
95762 + 0xb5, 0x22, 0x3a, 0x18, 0x86, 0x17, 0x21, 0x3b, 0x84, 0x20, 0x45, 0x04,
95763 + 0xd9, 0x12, 0xde, 0x82, 0x0e, 0xd1, 0x29, 0x68, 0xd1, 0x34, 0x8a, 0x0a,
95764 + 0x16, 0x52, 0x30, 0xa2, 0xa4, 0x43, 0x85, 0x04, 0xed, 0x74, 0x0a, 0x12,
95765 + 0x82, 0x8a, 0x88, 0xea, 0x12, 0x78, 0xa8, 0x4b, 0x16, 0x61, 0xd0, 0xa1,
95766 + 0x83, 0x9d, 0xba, 0xe4, 0xf4, 0xbd, 0xef, 0xbd, 0xcf, 0x9d, 0xf9, 0x9c,
95767 + 0x55, 0x21, 0x41, 0x7f, 0xbc, 0x6f, 0xde, 0x7b, 0xdf, 0x9b, 0xdf, 0x7b,
95768 + 0xef, 0x37, 0x66, 0x00, 0xc0, 0x80, 0x92, 0xd3, 0x26, 0x10, 0x52, 0x46,
95769 + 0x28, 0x2e, 0x20, 0x04, 0xf0, 0x18, 0xe8, 0x27, 0x6a, 0x49, 0xbb, 0xd4,
95770 + 0xcd, 0x76, 0x27, 0x41, 0xa9, 0x33, 0x23, 0xfe, 0x9e, 0x85, 0xfe, 0x1c,
95771 + 0x62, 0x18, 0xfa, 0x77, 0x21, 0x1e, 0x84, 0x17, 0xb9, 0xac, 0xc0, 0xbf,
95772 + 0x2e, 0x94, 0xd0, 0x6e, 0xa8, 0x3c, 0x73, 0x92, 0x32, 0xff, 0x12, 0xc7,
95773 + 0x7f, 0x0a, 0x13, 0x1e, 0x28, 0xc4, 0x29, 0x0f, 0x23, 0x74, 0x65, 0x24,
95774 + 0x2c, 0x96, 0xd1, 0x1e, 0x19, 0x81, 0x18, 0xe6, 0x99, 0x12, 0x0e, 0x68,
95775 + 0xb7, 0x86, 0x4a, 0x5d, 0x5c, 0x97, 0x41, 0x7e, 0x5f, 0xca, 0x36, 0x9e,
95776 + 0xc3, 0xd7, 0x01, 0xb4, 0xb7, 0x27, 0x2e, 0x97, 0x11, 0xb3, 0x30, 0x16,
95777 + 0xb7, 0xe8, 0x7d, 0xda, 0x28, 0xed, 0x52, 0x07, 0xc6, 0x09, 0xdf, 0x0e,
95778 + 0xce, 0x1b, 0xc5, 0xbc, 0x3f, 0x5d, 0xca, 0x8b, 0xf9, 0xbc, 0x79, 0x5a,
95779 + 0x45, 0x1e, 0x3c, 0x8f, 0x71, 0x5d, 0x31, 0xad, 0xae, 0x98, 0xa8, 0x83,
95780 + 0x79, 0x00, 0x55, 0x07, 0x62, 0xa3, 0xb8, 0x17, 0xf3, 0xae, 0xf0, 0x7b,
95781 + 0x03, 0x9c, 0xca, 0x71, 0x7e, 0x07, 0xb1, 0xc2, 0xf9, 0xc4, 0x2f, 0xbf,
95782 + 0xc7, 0xfa, 0x3c, 0x8a, 0x27, 0x7f, 0xfd, 0x66, 0x41, 0x3d, 0x57, 0xfd,
95783 + 0xc0, 0x7b, 0x3e, 0x8a, 0x7b, 0xbc, 0xfe, 0xb0, 0x89, 0xff, 0x7b, 0xe1,
95784 + 0xef, 0xcf, 0x4b, 0xe7, 0x6f, 0xab, 0xe7, 0xf9, 0x20, 0xde, 0xa2, 0x1a,
95785 + 0x6f, 0x2f, 0x99, 0xb7, 0x41, 0xd8, 0x6d, 0x64, 0xa5, 0x5f, 0x04, 0x10,
95786 + 0x77, 0x88, 0x02, 0x10, 0x77, 0x32, 0x1e, 0x63, 0xbc, 0xc9, 0x78, 0x83,
95787 + 0xb1, 0x91, 0xb1, 0x81, 0xb1, 0x9e, 0x71, 0x1b, 0xe3, 0x3b, 0xc6, 0x0c,
95788 + 0xa3, 0xcd, 0x98, 0x66, 0x7c, 0xc3, 0x68, 0x31, 0x26, 0xb5, 0x7c, 0x2d,
95789 + 0x8c, 0x71, 0xc6, 0xbb, 0x8c, 0xfb, 0xb5, 0xf8, 0xdf, 0x8c, 0x0b, 0x8c,
95790 + 0xcd, 0x21, 0xc2, 0x43, 0x6c, 0x23, 0xa1, 0x3c, 0xf7, 0x3e, 0xbe, 0xee,
95791 + 0xaf, 0xf5, 0x77, 0xb1, 0xcc, 0xcf, 0xf3, 0xca, 0x2f, 0x2e, 0xf9, 0x83,
95792 + 0x0e, 0xaf, 0xff, 0x9d, 0x0d, 0xfc, 0xc9, 0x6d, 0x20, 0x1f, 0x14, 0x37,
95793 + 0xed, 0x52, 0x1d, 0xb7, 0x38, 0xbe, 0xbe, 0xb2, 0x50, 0x63, 0x8f, 0xfa,
95794 + 0x0a, 0xfa, 0x7c, 0x05, 0xed, 0xd1, 0x4e, 0xde, 0xa3, 0xa3, 0xeb, 0xe6,
95795 + 0x97, 0xe6, 0xd4, 0xbb, 0x87, 0x32, 0x4f, 0x8d, 0x39, 0x7f, 0x1a, 0x2a,
95796 + 0x16, 0xb2, 0x34, 0x17, 0xa5, 0x8d, 0xee, 0xc5, 0x78, 0x9e, 0xcb, 0xbc,
95797 + 0x9a, 0x4f, 0xff, 0x5c, 0xd2, 0x7c, 0xc5, 0xb4, 0xf9, 0xba, 0xb0, 0x09,
95798 + 0xbf, 0x49, 0x8d, 0xa7, 0x73, 0xae, 0xea, 0x97, 0xc1, 0xc7, 0xe3, 0xb1,
95799 + 0x8c, 0xcc, 0x7b, 0xcd, 0x91, 0x66, 0x83, 0x35, 0x85, 0x76, 0x04, 0xae,
95800 + 0x3b, 0x2a, 0x8e, 0xf7, 0xb2, 0x43, 0xdd, 0x43, 0xf1, 0x29, 0x20, 0x9e,
95801 + 0xe7, 0x34, 0x9e, 0x73, 0x5b, 0xd2, 0xa9, 0x15, 0xb7, 0xaa, 0x53, 0xf4,
95802 + 0xbc, 0x0d, 0xbc, 0x3a, 0x15, 0x87, 0xd1, 0x41, 0x5b, 0xde, 0x9b, 0x8e,
95803 + 0x51, 0x9a, 0xe3, 0x36, 0xe1, 0x99, 0x04, 0xe1, 0x72, 0xa2, 0x4e, 0xfc,
95804 + 0x75, 0xdd, 0xb1, 0x24, 0xd9, 0xa7, 0x53, 0x6a, 0x3f, 0x54, 0xbc, 0xaa,
95805 + 0x6b, 0xa3, 0x7a, 0xf0, 0x7e, 0x75, 0x8f, 0xaa, 0x43, 0xdd, 0xe7, 0xe7,
95806 + 0xbf, 0xf6, 0xbd, 0x84, 0x45, 0xc3, 0xcf, 0xc3, 0xed, 0x1e, 0xc2, 0x48,
95807 + 0xaf, 0x84, 0xec, 0x8c, 0x45, 0x71, 0xb3, 0x56, 0x04, 0xed, 0x7d, 0xb3,
95808 + 0x1f, 0x30, 0xbf, 0xb1, 0x67, 0xc6, 0xe1, 0xfa, 0x6c, 0xd5, 0x3f, 0x79,
95809 + 0x0e, 0xed, 0x40, 0xf6, 0x30, 0xcf, 0xc3, 0xb0, 0x9c, 0x7b, 0xb1, 0xd7,
95810 + 0x06, 0x62, 0x0b, 0x94, 0xa4, 0xae, 0x1b, 0x89, 0xd7, 0x32, 0x3e, 0xcc,
95811 + 0xe7, 0xa2, 0x4f, 0xed, 0xfe, 0x7d, 0x59, 0xa2, 0xfe, 0xc7, 0xfd, 0x73,
95812 + 0xd3, 0xed, 0x06, 0xcf, 0x63, 0xa2, 0x32, 0x57, 0x0e, 0xea, 0xd7, 0x73,
95813 + 0xd6, 0xbd, 0x2c, 0x14, 0x7b, 0x6b, 0xe9, 0xb1, 0xfa, 0x0e, 0x2a, 0x3d,
95814 + 0x92, 0xc7, 0x95, 0x52, 0xd8, 0xc7, 0xcb, 0x21, 0x28, 0x04, 0xe5, 0x7f,
95815 + 0xa2, 0xbe, 0x2f, 0x01, 0x7b, 0xb4, 0xd9, 0xbd, 0xbe, 0xfc, 0x69, 0x28,
95816 + 0x04, 0xed, 0x81, 0xa9, 0xed, 0x8d, 0xcd, 0x7b, 0xd3, 0xbc, 0x6e, 0x7e,
95817 + 0x95, 0x4e, 0xe4, 0x36, 0xd4, 0x89, 0xff, 0xd5, 0x05, 0x03, 0x48, 0x17,
95818 + 0x50, 0x8f, 0xfd, 0xf7, 0x9b, 0xaa, 0x7e, 0x6d, 0xff, 0xa9, 0xee, 0x3f,
95819 + 0xab, 0x5b, 0xd3, 0x11, 0xef, 0xfb, 0x07, 0xe9, 0x48, 0x42, 0xd3, 0x85,
95820 + 0x5f, 0xab, 0x55, 0x1d, 0xc1, 0xe7, 0xf3, 0xf3, 0xd4, 0x97, 0x8b, 0xee,
95821 + 0x9a, 0xae, 0xfb, 0xf8, 0xac, 0x63, 0x3e, 0x85, 0x9f, 0x8c, 0x5f, 0xd6,
95822 + 0xe2, 0x55, 0x5f, 0xcf, 0x33, 0xcf, 0x46, 0x1f, 0xcd, 0x95, 0x59, 0xfc,
95823 + 0xa1, 0xf1, 0xdd, 0x5b, 0xc0, 0xbd, 0xb8, 0x04, 0x0e, 0xf3, 0xf6, 0xd9,
95824 + 0xc7, 0x5f, 0x8a, 0xf5, 0xc1, 0x84, 0x47, 0x8e, 0xe2, 0x59, 0xf5, 0x87,
95825 + 0xf0, 0xa1, 0xf4, 0xcf, 0x6c, 0xc2, 0x77, 0x06, 0x1e, 0x38, 0x6a, 0xbf,
95826 + 0x6d, 0x99, 0xaf, 0x87, 0xf5, 0x64, 0x94, 0xf7, 0xfa, 0x5b, 0x82, 0x74,
95827 + 0xa3, 0x38, 0x24, 0xf7, 0x14, 0x9a, 0x78, 0xbf, 0x8b, 0x29, 0xb2, 0x5b,
95828 + 0x52, 0xf4, 0x7f, 0x5b, 0x8f, 0x69, 0x49, 0xbf, 0x96, 0x14, 0x61, 0x53,
95829 + 0x12, 0xe3, 0xb2, 0xf0, 0xfd, 0x88, 0x74, 0x2f, 0x54, 0xf7, 0x5b, 0xdf,
95830 + 0x6b, 0x7e, 0xdf, 0xbd, 0x78, 0xde, 0x24, 0xf6, 0xd4, 0xdb, 0x0f, 0x6b,
95831 + 0x4d, 0x5f, 0xef, 0x71, 0xf5, 0x39, 0xdb, 0xcb, 0xb7, 0x9a, 0xdb, 0x67,
95832 + 0x35, 0xfa, 0x34, 0xe8, 0x2a, 0xdd, 0x6b, 0x1f, 0xc4, 0x7a, 0x6d, 0x48,
95833 + 0x9b, 0x34, 0x1f, 0x84, 0x22, 0x8f, 0x61, 0x62, 0x58, 0xeb, 0x24, 0xeb,
95834 + 0xc4, 0xe4, 0xb8, 0x4c, 0x73, 0x64, 0x52, 0x9d, 0x0f, 0xc8, 0xc1, 0x1f,
95835 + 0x9e, 0x7f, 0x25, 0xcf, 0xd3, 0x4e, 0x98, 0xce, 0xcd, 0x21, 0xc5, 0x97,
95836 + 0x2d, 0xdf, 0x7f, 0x86, 0xf8, 0x3a, 0x39, 0x4d, 0x78, 0x02, 0x0e, 0x4b,
95837 + 0x4c, 0x54, 0xf5, 0x2d, 0x2e, 0x11, 0x52, 0x5e, 0x7d, 0x8b, 0x8a, 0xf2,
95838 + 0xd0, 0xae, 0xf3, 0xf4, 0x51, 0xff, 0x6e, 0x6c, 0xb5, 0x9f, 0x5e, 0x9d,
95839 + 0xc4, 0x7e, 0xea, 0x7a, 0x27, 0xe7, 0x46, 0x9b, 0xcf, 0x72, 0x8d, 0xf9,
95840 + 0xcc, 0xd5, 0x98, 0x6f, 0x5d, 0x2f, 0xae, 0xf2, 0xde, 0x45, 0x20, 0x1a,
95841 + 0x96, 0x1f, 0x24, 0x2b, 0x32, 0x21, 0xfb, 0x6b, 0x4c, 0xd2, 0x87, 0xd4,
95842 + 0x8a, 0x4e, 0x85, 0x24, 0x6f, 0xd6, 0x14, 0xf9, 0x45, 0xe8, 0x3c, 0xab,
95843 + 0xf0, 0xca, 0x84, 0xfa, 0xee, 0xfe, 0x03, 0x65, 0x6c, 0x9a, 0x59, 0x40,
95844 + 0x0c, 0x00, 0x00, 0x00 };
95845
95846 static u8 bnx2_rv2p_proc2[] = {
95847 - /* Date: 02/03/2009 14:20 */
95848 - 0xad, 0x57, 0x4d, 0x68, 0x5c, 0x55, 0x14, 0x3e, 0xf3, 0xe6, 0xef, 0xcd,
95849 - 0xcc, 0x9b, 0xcc, 0x34, 0x8d, 0x93, 0x31, 0x29, 0x26, 0x4d, 0x68, 0xea,
95850 - 0xc8, 0x44, 0xf3, 0x47, 0x05, 0x5d, 0x18, 0x46, 0x48, 0x7f, 0x2c, 0x34,
95851 - 0x8d, 0x2e, 0x8a, 0x9b, 0x36, 0x53, 0x3b, 0x3a, 0x6d, 0xed, 0xc2, 0xec,
95852 - 0xdc, 0xf8, 0xb0, 0x35, 0x41, 0x98, 0x45, 0x53, 0x4c, 0x13, 0x44, 0xa8,
95853 - 0xe8, 0xce, 0xdd, 0x88, 0x9a, 0xd6, 0x8d, 0x50, 0x68, 0x28, 0x76, 0x51,
95854 - 0x04, 0x05, 0xed, 0x42, 0x10, 0xad, 0xa1, 0x15, 0x41, 0x51, 0xb3, 0x92,
95855 - 0x8c, 0xf7, 0x9e, 0xef, 0xdc, 0x37, 0xef, 0x4d, 0xa6, 0xa4, 0x0b, 0x67,
95856 - 0xf3, 0xe5, 0xdc, 0x77, 0xee, 0xb9, 0xe7, 0xe7, 0x3b, 0xe7, 0xde, 0x64,
95857 - 0x89, 0x28, 0x42, 0x6e, 0xbd, 0x4f, 0x21, 0x85, 0xc2, 0x21, 0x5b, 0x41,
95858 - 0x83, 0x28, 0x9a, 0xd7, 0x32, 0x59, 0x24, 0xbf, 0x27, 0xb2, 0x0c, 0xdf,
95859 - 0xd6, 0x1d, 0xad, 0x46, 0x6e, 0x41, 0xeb, 0xd9, 0xf4, 0x92, 0x05, 0xbd,
95860 - 0x08, 0x69, 0x54, 0x3a, 0xae, 0xc6, 0x1d, 0x82, 0xcf, 0x08, 0x46, 0x42,
95861 - 0xc0, 0xb0, 0xa0, 0xd5, 0x82, 0x24, 0x7a, 0x5d, 0x22, 0x6f, 0x8a, 0xec,
95862 - 0x08, 0xe6, 0x65, 0xfd, 0xb4, 0xe0, 0xab, 0xb2, 0x7e, 0x47, 0x70, 0x5d,
95863 - 0xa1, 0xf1, 0x53, 0xcb, 0xbf, 0x35, 0x9a, 0xb2, 0x03, 0xf3, 0x05, 0xf8,
95864 - 0xff, 0x62, 0x3f, 0xeb, 0x37, 0x82, 0xfa, 0x77, 0x1b, 0xc6, 0x0f, 0x13,
95865 - 0xaf, 0x15, 0xd5, 0xfa, 0xbb, 0x27, 0x2e, 0x2f, 0x62, 0xdf, 0xf1, 0x7e,
95866 - 0xac, 0x3f, 0x56, 0xd4, 0x71, 0xc7, 0xc8, 0x15, 0xa4, 0x61, 0x9b, 0xe3,
95867 - 0x70, 0x87, 0x4d, 0xa2, 0xa0, 0xff, 0xe3, 0x22, 0xa4, 0xd9, 0x34, 0xec,
95868 - 0x26, 0x03, 0x76, 0x73, 0x5b, 0xec, 0x7e, 0x9f, 0xf0, 0xdb, 0xff, 0x54,
95869 - 0xec, 0x27, 0xb7, 0xb5, 0x5f, 0x4e, 0x03, 0x77, 0x16, 0xdb, 0x9d, 0x93,
95870 - 0xd8, 0xc6, 0xff, 0xd3, 0xdb, 0xda, 0x7f, 0xd3, 0xf3, 0xdf, 0xac, 0x03,
95871 - 0xfb, 0xf0, 0xf9, 0x13, 0xf7, 0x29, 0x93, 0x47, 0x13, 0xaf, 0xf8, 0x15,
95872 - 0x06, 0x4e, 0x16, 0x19, 0x6a, 0x27, 0x25, 0xb1, 0x53, 0x43, 0xfa, 0xbc,
95873 - 0x4e, 0x8a, 0x58, 0xda, 0xce, 0x5e, 0x3b, 0x76, 0x0d, 0xeb, 0xc7, 0x32,
95874 - 0xc0, 0x57, 0x24, 0x80, 0xbb, 0x49, 0x9d, 0x90, 0x46, 0xa3, 0x92, 0x12,
95875 - 0xfb, 0x28, 0x23, 0xb9, 0x29, 0xec, 0x5f, 0x73, 0xb4, 0x5f, 0xb7, 0x54,
95876 - 0xdd, 0xb4, 0x1c, 0x26, 0x37, 0x13, 0xf4, 0xff, 0x0a, 0x41, 0x6f, 0xc7,
95877 - 0x5e, 0xac, 0x5e, 0xac, 0x40, 0xee, 0xfd, 0x38, 0xcb, 0xfa, 0x2b, 0x75,
95878 - 0x13, 0x87, 0x5e, 0x57, 0xfc, 0xcf, 0xc0, 0x0e, 0x0d, 0xd8, 0x7c, 0x18,
95879 - 0xf2, 0xa3, 0x0e, 0x1d, 0x36, 0xf6, 0xf0, 0xbb, 0xbc, 0xc7, 0xf0, 0x09,
95880 - 0x72, 0x25, 0xc6, 0x90, 0x9f, 0x9d, 0xd7, 0xfe, 0x66, 0xe8, 0x84, 0xa5,
95881 - 0x1d, 0xb1, 0x24, 0xbe, 0xb0, 0xed, 0x7c, 0x01, 0xfd, 0xaf, 0xfa, 0x1c,
95882 - 0xf6, 0xad, 0x32, 0x8e, 0x7d, 0x5d, 0x63, 0xc0, 0xa5, 0xb1, 0xa8, 0x86,
95883 - 0x62, 0x65, 0x8e, 0xc5, 0x27, 0x7f, 0x1e, 0xb5, 0x59, 0xcf, 0x1d, 0x36,
95884 - 0x7c, 0x35, 0x79, 0xd7, 0xf1, 0x5e, 0x6c, 0xf2, 0x76, 0x10, 0xf9, 0xf9,
95885 - 0x75, 0x8f, 0xd6, 0x57, 0x49, 0x1a, 0xc0, 0x39, 0x33, 0xd5, 0x76, 0x7c,
95886 - 0x7f, 0x57, 0xed, 0x7b, 0xb8, 0xfa, 0x4d, 0x72, 0xdc, 0x93, 0x12, 0x7f,
95887 - 0xbf, 0xf0, 0x63, 0x57, 0x1b, 0x7e, 0x64, 0xf8, 0xef, 0xfb, 0xa5, 0x2c,
95888 - 0xe7, 0xef, 0x08, 0xd6, 0x2f, 0x4d, 0xad, 0x22, 0xcf, 0x07, 0x39, 0x7e,
95889 - 0x4a, 0x5e, 0xf8, 0x1c, 0xbb, 0x66, 0xd3, 0x5a, 0x7e, 0x79, 0xa2, 0xf2,
95890 - 0x25, 0xe4, 0x72, 0x58, 0xcb, 0xc7, 0x9c, 0x93, 0x57, 0xa1, 0x1f, 0x3d,
95891 - 0x9f, 0xe5, 0xbc, 0x1d, 0x91, 0x53, 0x0e, 0xaa, 0x51, 0xa1, 0x7e, 0xb5,
95892 - 0xd8, 0x79, 0x16, 0x9d, 0x35, 0xfe, 0x9e, 0xa5, 0x85, 0x3a, 0xbe, 0x9f,
95893 - 0x4b, 0xe9, 0xb8, 0xce, 0xa8, 0xb8, 0x58, 0xaf, 0xab, 0x1a, 0xc3, 0xfe,
95894 - 0xda, 0xa2, 0xb6, 0x17, 0xa2, 0x7b, 0x9f, 0x69, 0xf9, 0x70, 0xf1, 0x1e,
95895 - 0xf4, 0x8b, 0xd5, 0x79, 0x31, 0x6c, 0x21, 0x6f, 0xf7, 0x2d, 0xe8, 0x0b,
95896 - 0xad, 0x92, 0x11, 0xae, 0x5b, 0x88, 0x9c, 0x29, 0xe0, 0x3b, 0xfc, 0xfd,
95897 - 0xdf, 0x50, 0x8d, 0xf3, 0xf5, 0x7c, 0x47, 0x64, 0xd5, 0xe4, 0x47, 0x30,
95898 - 0x63, 0xe2, 0x02, 0x3e, 0x2c, 0x6f, 0xe7, 0x1d, 0xc3, 0x57, 0xa9, 0x57,
95899 - 0xe1, 0x41, 0x7c, 0x05, 0x4e, 0x0d, 0x01, 0x63, 0x83, 0x5a, 0x2f, 0xda,
95900 - 0x86, 0xb7, 0xc1, 0xba, 0x48, 0x5d, 0x7d, 0xfc, 0x62, 0x50, 0xbc, 0x0a,
95901 - 0xf0, 0x4c, 0xf1, 0x98, 0xe7, 0x90, 0xca, 0xa7, 0xe1, 0x8b, 0x36, 0x14,
95902 - 0xa7, 0x33, 0x62, 0xaf, 0x2a, 0x71, 0x9d, 0x95, 0xb8, 0x7e, 0x4f, 0x9a,
95903 - 0xbc, 0x9b, 0x78, 0x80, 0x0b, 0x5e, 0x3c, 0x86, 0x6f, 0xb8, 0x1f, 0x66,
95904 - 0xaa, 0x01, 0x7f, 0x6a, 0x37, 0x06, 0xf0, 0x47, 0xef, 0x20, 0xd0, 0x8b,
95905 - 0x73, 0x88, 0xfb, 0xa4, 0xa3, 0xfb, 0xaa, 0xf1, 0x43, 0xd7, 0x75, 0x43,
95906 - 0xf8, 0x6a, 0xa9, 0x78, 0xfd, 0xfd, 0xd9, 0xd3, 0xa6, 0x3f, 0x83, 0xfd,
95907 - 0x62, 0xe2, 0x3f, 0x97, 0xe6, 0x01, 0x34, 0x71, 0x7b, 0x3d, 0xd8, 0x0f,
95908 - 0xe0, 0x7f, 0xdc, 0xe3, 0x51, 0xd7, 0x3e, 0xc9, 0x93, 0x60, 0xee, 0x69,
95909 - 0x6d, 0x6f, 0x5a, 0xec, 0x8f, 0x88, 0x7d, 0xc7, 0xd7, 0x8f, 0xda, 0xbf,
95910 - 0x3e, 0xaf, 0x0f, 0x4d, 0x7d, 0x9a, 0xfd, 0x68, 0xf2, 0xc4, 0xe7, 0x17,
95911 - 0x6f, 0xaf, 0xeb, 0xfd, 0xbd, 0xdb, 0xf4, 0xe7, 0x23, 0x9e, 0xbd, 0xef,
95912 - 0xbc, 0x7e, 0xd4, 0xdf, 0x53, 0xf4, 0x9c, 0x88, 0xc1, 0x39, 0xf3, 0x87,
95913 - 0x9a, 0x33, 0x1c, 0x87, 0xed, 0xac, 0xca, 0x5c, 0x99, 0xd3, 0xe7, 0xe4,
95914 - 0xc5, 0xef, 0xbc, 0x99, 0xeb, 0xca, 0x6f, 0x99, 0x3f, 0xc7, 0xfd, 0x73,
95915 - 0x24, 0xde, 0xe6, 0x3c, 0xc0, 0x64, 0xb1, 0x35, 0x5f, 0xc8, 0x3b, 0xec,
95916 - 0xaa, 0xfc, 0x9b, 0x39, 0x30, 0x6e, 0xec, 0x43, 0x74, 0x47, 0xfd, 0xfa,
95917 - 0xad, 0xf5, 0x89, 0x3c, 0x60, 0x9e, 0x6d, 0x6c, 0xe2, 0xde, 0xfd, 0x67,
95918 - 0xb3, 0x79, 0x1f, 0x07, 0xea, 0xe8, 0x12, 0xd7, 0x3d, 0xae, 0xea, 0xcf,
95919 - 0xef, 0x03, 0xef, 0x9e, 0xb7, 0xa2, 0x7a, 0x5d, 0xe5, 0x42, 0x78, 0xf5,
95920 - 0xfa, 0xe3, 0xb2, 0xbf, 0x80, 0xb9, 0xf4, 0xda, 0x29, 0xce, 0xff, 0x7b,
95921 - 0x67, 0x37, 0x78, 0x3e, 0x7d, 0xf8, 0xc6, 0x35, 0x1d, 0xd7, 0xa3, 0xb4,
95922 - 0x3e, 0xe7, 0xb0, 0x3f, 0xa5, 0xdd, 0x50, 0xdf, 0x78, 0xb6, 0xb5, 0x1e,
95923 - 0x78, 0xd7, 0xa0, 0x5e, 0x4a, 0x6f, 0x36, 0x78, 0xaf, 0x36, 0xfd, 0x43,
95924 - 0xbf, 0xec, 0xcf, 0x40, 0xdf, 0xf4, 0x73, 0xb0, 0xae, 0x77, 0x36, 0x9b,
95925 - 0x73, 0xd7, 0xe4, 0x3b, 0xc8, 0xd3, 0xa3, 0xe3, 0x7e, 0xbb, 0x83, 0xb4,
95926 - 0x56, 0x87, 0xdd, 0x69, 0xe9, 0xc3, 0x13, 0x72, 0xf0, 0x4f, 0xc9, 0x0c,
95927 - 0x9f, 0x53, 0x7e, 0x81, 0x79, 0x46, 0xb9, 0x14, 0xe2, 0x2c, 0x1f, 0xc6,
95928 - 0xf7, 0x72, 0x1a, 0xeb, 0x3d, 0x69, 0xdc, 0x6f, 0xd3, 0x71, 0x87, 0xf5,
95929 - 0x7b, 0xd2, 0xc0, 0x9c, 0xf4, 0xeb, 0x9a, 0x37, 0x8f, 0x80, 0x2b, 0x31,
95930 - 0x7f, 0xff, 0x46, 0xe8, 0x7a, 0x4c, 0x2b, 0xa8, 0xcb, 0xba, 0x80, 0xfe,
95931 - 0x2b, 0x0d, 0x39, 0xfc, 0x7d, 0xa6, 0x80, 0xb9, 0x4a, 0x03, 0xc1, 0xfb,
95932 - 0x50, 0xfa, 0xb9, 0xa7, 0x39, 0xb7, 0xfc, 0x73, 0x2d, 0x31, 0xb6, 0x5c,
95933 - 0x0f, 0xde, 0x97, 0x2b, 0x31, 0xff, 0x9c, 0xd0, 0x76, 0x59, 0x54, 0xf3,
95934 - 0xc1, 0x3f, 0xd7, 0xc2, 0x52, 0xef, 0xbf, 0x64, 0x0e, 0xec, 0xa4, 0x9b,
95935 - 0x75, 0xc4, 0xb5, 0x56, 0x6f, 0xcd, 0xb3, 0x39, 0xcf, 0xd8, 0x83, 0xdf,
95936 - 0x26, 0x8e, 0xa6, 0x7d, 0x9c, 0x7f, 0x4a, 0xfc, 0xfc, 0x85, 0xdf, 0x21,
95937 - 0x39, 0x89, 0x47, 0xdb, 0xc5, 0xfa, 0x01, 0x99, 0xb3, 0xae, 0x27, 0x07,
95938 - 0xe7, 0xe3, 0x34, 0xfb, 0xd5, 0x49, 0x78, 0x77, 0xe4, 0xbc, 0xbe, 0x36,
95939 - 0xf1, 0x75, 0x8d, 0x00, 0x97, 0x46, 0x4c, 0x1d, 0x4c, 0xbd, 0x4c, 0x7d,
95940 - 0x50, 0xc7, 0xdc, 0x28, 0xab, 0x4d, 0x94, 0x47, 0x99, 0xa7, 0x23, 0xe5,
95941 - 0x3f, 0x83, 0xef, 0xb4, 0xa3, 0x45, 0xad, 0xff, 0x16, 0x7d, 0xc3, 0x7d,
95942 - 0x44, 0xf4, 0x83, 0x60, 0x73, 0x1e, 0x49, 0x01, 0x02, 0xef, 0xb2, 0x30,
95943 - 0x5d, 0x8f, 0xca, 0xf2, 0xb8, 0xe9, 0x9b, 0x60, 0xdf, 0x5d, 0xe1, 0x77,
95944 - 0xfa, 0xc2, 0xe6, 0xd6, 0xfe, 0x37, 0xf1, 0x69, 0xbd, 0x61, 0xe1, 0xa1,
95945 - 0x4d, 0xa5, 0xfd, 0x78, 0xd7, 0x74, 0xc4, 0xc1, 0xf3, 0x8e, 0xb8, 0xbf,
95946 - 0x4e, 0x8a, 0x0f, 0x89, 0xb8, 0x16, 0x77, 0x75, 0x26, 0x38, 0x8e, 0x4b,
95947 - 0x5f, 0xdf, 0xe2, 0xcf, 0x1f, 0x2d, 0xa7, 0xb0, 0xde, 0x5d, 0x82, 0xf9,
95948 - 0x08, 0xf3, 0x35, 0x4c, 0x17, 0xc0, 0xe7, 0x0f, 0x96, 0x80, 0xef, 0xd3,
95949 - 0x21, 0xd8, 0xe9, 0x7c, 0x9b, 0xef, 0x71, 0xbb, 0x1b, 0xe9, 0xac, 0x2d,
95950 - 0x0b, 0x4f, 0xf3, 0x16, 0xff, 0x3f, 0xd2, 0xa0, 0xb4, 0xbc, 0x5b, 0xa5,
95951 - 0xcf, 0xc0, 0xcf, 0x88, 0xaf, 0xce, 0xdb, 0xf1, 0x55, 0xa3, 0xa3, 0xf8,
95952 - 0x88, 0xed, 0xc2, 0x5b, 0xbb, 0x95, 0xb7, 0xa6, 0x8e, 0x79, 0xab, 0x2d,
95953 - 0x4f, 0xf7, 0x05, 0x79, 0x1a, 0x13, 0x9e, 0xfe, 0xed, 0xcd, 0xd3, 0xad,
95954 - 0x76, 0x31, 0xc7, 0x6f, 0xfe, 0x6f, 0xbc, 0x05, 0x1e, 0x18, 0xd4, 0xe7,
95955 - 0x77, 0xfb, 0xf8, 0x67, 0xfc, 0xf2, 0xcf, 0x9f, 0x43, 0x6a, 0xae, 0xfe,
95956 - 0x07, 0x92, 0xe2, 0x88, 0x7c, 0xe0, 0x0d, 0x00, 0x00, 0x00 };
95957 + /* Date: 05/13/2008 13:50 */
95958 + 0xad, 0x58, 0x4d, 0x6c, 0x54, 0x55, 0x14, 0xbe, 0x7d, 0xf3, 0xdb, 0x99,
95959 + 0x37, 0x3f, 0xb4, 0xb5, 0xbf, 0x68, 0xa1, 0x95, 0xd2, 0x92, 0x29, 0x94,
95960 + 0x69, 0x01, 0x95, 0x44, 0x49, 0x31, 0x05, 0x94, 0x84, 0x52, 0x5d, 0x10,
95961 + 0x37, 0xd0, 0x22, 0xa5, 0x83, 0x2d, 0x69, 0x28, 0x61, 0xc1, 0xc6, 0x09,
95962 + 0xc5, 0xe2, 0x62, 0x12, 0x2d, 0xb1, 0x14, 0x8c, 0xc1, 0x46, 0x37, 0xc4,
95963 + 0xb8, 0x19, 0x83, 0x52, 0xd4, 0xc4, 0x84, 0x60, 0x43, 0x70, 0x01, 0x26,
95964 + 0x9a, 0xe0, 0x42, 0x13, 0xa2, 0x50, 0x0b, 0x36, 0x58, 0x7e, 0x46, 0x17,
95965 + 0xca, 0x78, 0xef, 0xf9, 0xce, 0x7d, 0x7d, 0x6f, 0x3a, 0xb5, 0x2c, 0xe8,
95966 + 0xe6, 0xeb, 0xbd, 0xef, 0xdc, 0x73, 0xcf, 0xcf, 0x77, 0xcf, 0x39, 0x6d,
95967 + 0x54, 0x08, 0xe1, 0x16, 0xc9, 0x74, 0xb5, 0x44, 0x11, 0x32, 0x0a, 0xfc,
95968 + 0x12, 0xb2, 0x42, 0x78, 0xca, 0xd5, 0x5a, 0x18, 0x82, 0x7f, 0x56, 0x44,
95969 + 0x09, 0x7e, 0x48, 0xab, 0xef, 0x3e, 0xf1, 0xaa, 0x81, 0xef, 0x6e, 0xa1,
95970 + 0x30, 0x22, 0x44, 0x52, 0x61, 0x94, 0x71, 0x3d, 0x63, 0x86, 0x31, 0x58,
95971 + 0x00, 0x6c, 0x66, 0x7c, 0xc0, 0xfb, 0x77, 0x78, 0x7d, 0x93, 0xf1, 0x6f,
95972 + 0xde, 0x37, 0x19, 0x6f, 0xf3, 0xfe, 0xf3, 0x06, 0x30, 0xc1, 0xfb, 0x3f,
95973 + 0x4b, 0xd4, 0x76, 0xa9, 0xf5, 0x74, 0x56, 0x24, 0xe5, 0x19, 0x21, 0xc5,
95974 + 0x1b, 0xf4, 0xbe, 0x49, 0x90, 0x6c, 0x80, 0xdd, 0xaf, 0x2c, 0x51, 0x72,
95975 + 0xbf, 0xe7, 0x91, 0x53, 0xfb, 0x37, 0xb2, 0xd0, 0x3b, 0xeb, 0xaf, 0xe1,
95976 + 0x51, 0xe7, 0x96, 0xb6, 0x9c, 0x18, 0xc6, 0xf9, 0x9d, 0x4b, 0xb0, 0xff,
95977 + 0x54, 0x4c, 0xf9, 0xef, 0x15, 0x49, 0x46, 0xd1, 0xa8, 0xd0, 0x28, 0x48,
95978 + 0x36, 0xea, 0x40, 0x41, 0xfe, 0x97, 0x61, 0xac, 0x3a, 0x43, 0xd0, 0x1b,
95979 + 0x70, 0xe8, 0x2d, 0x9d, 0xa3, 0xf7, 0x5a, 0xa1, 0x5d, 0xff, 0x67, 0xac,
95980 + 0x3f, 0xb0, 0xa0, 0xfe, 0xae, 0x10, 0xb0, 0x38, 0x96, 0xef, 0x9e, 0xc2,
95981 + 0x05, 0xec, 0xdf, 0xb7, 0xa0, 0xfe, 0xc3, 0x96, 0xfd, 0x3a, 0x6e, 0xfa,
95982 + 0x3b, 0xb0, 0x1a, 0x62, 0x9f, 0x24, 0x57, 0xe9, 0x78, 0x6a, 0xbf, 0xd9,
95983 + 0x3e, 0x17, 0x70, 0x43, 0x8c, 0x20, 0xb5, 0x9b, 0x03, 0xdc, 0x56, 0xa7,
95984 + 0xee, 0x2d, 0x12, 0x6e, 0x43, 0xe9, 0x59, 0xee, 0xf7, 0x9e, 0xc7, 0xfe,
95985 + 0x8e, 0x08, 0xf0, 0x75, 0x76, 0xe4, 0x46, 0x40, 0x05, 0x26, 0x9b, 0xed,
95986 + 0x0e, 0xb2, 0x7e, 0xa4, 0x55, 0x24, 0x83, 0x38, 0x3f, 0x61, 0x2a, 0xfb,
95987 + 0x2e, 0xcb, 0xfc, 0xa9, 0xb5, 0x4b, 0x24, 0x23, 0x4e, 0x3f, 0x3e, 0x14,
95988 + 0x90, 0x5b, 0xb4, 0x1c, 0xbb, 0xef, 0x76, 0x63, 0x5d, 0xf5, 0x71, 0x94,
95989 + 0xe4, 0x4f, 0xa6, 0xb5, 0x1f, 0x6a, 0x5f, 0xbe, 0x83, 0x08, 0xf4, 0x88,
95990 + 0x1a, 0x3f, 0x5d, 0x86, 0x38, 0xc9, 0x4b, 0x1b, 0xb5, 0x3e, 0xfc, 0x9c,
95991 + 0x58, 0xa6, 0xf9, 0x85, 0x75, 0xb7, 0x97, 0xa0, 0xbc, 0x73, 0x48, 0xd9,
95992 + 0x1b, 0x11, 0xbb, 0x0c, 0x65, 0x88, 0xc1, 0xfe, 0xb9, 0xfc, 0xe6, 0x17,
95993 + 0x90, 0xff, 0xa6, 0xda, 0x24, 0xdb, 0xba, 0x9b, 0x71, 0xae, 0x24, 0x0e,
95994 + 0x1c, 0x89, 0x7b, 0x14, 0xc4, 0xba, 0x07, 0x68, 0xb9, 0xf2, 0xd7, 0xd5,
95995 + 0x7e, 0x92, 0x4b, 0x36, 0x6a, 0xfe, 0xea, 0xb8, 0x2b, 0x7f, 0xdf, 0xc9,
95996 + 0x5a, 0xfc, 0xaf, 0x45, 0x7c, 0x6e, 0x2e, 0x53, 0xf2, 0x32, 0x48, 0x35,
95997 + 0xb8, 0xa7, 0x23, 0x91, 0x8f, 0xff, 0x6f, 0xdb, 0xf8, 0xff, 0x68, 0x79,
95998 + 0xdc, 0x40, 0xfe, 0x6f, 0xe0, 0x38, 0x2c, 0x61, 0xbe, 0x2c, 0xce, 0xc3,
95999 + 0x97, 0x08, 0xfd, 0x7e, 0xab, 0x35, 0x4a, 0x71, 0xdc, 0x86, 0xfd, 0xe3,
96000 + 0x6d, 0xe7, 0x10, 0xef, 0x2d, 0x14, 0x07, 0x11, 0x38, 0xfa, 0x39, 0x4e,
96001 + 0x75, 0x86, 0xd4, 0xfa, 0xb5, 0x96, 0xee, 0x2f, 0xb1, 0xee, 0x72, 0xa9,
96002 + 0xf5, 0x0e, 0x73, 0xf7, 0x38, 0xe4, 0x3d, 0x83, 0x51, 0x8a, 0xdf, 0x36,
96003 + 0xbe, 0x65, 0x8b, 0xab, 0x40, 0x41, 0xca, 0x3b, 0x48, 0x4b, 0x73, 0x82,
96004 + 0xbe, 0x47, 0xc5, 0xb1, 0x34, 0xbe, 0xef, 0x0f, 0x52, 0x7d, 0x90, 0xfe,
96005 + 0x91, 0x5c, 0x49, 0xc2, 0x8b, 0xf3, 0xa9, 0x61, 0x3f, 0xf9, 0x3b, 0x75,
96006 + 0x56, 0xad, 0xb7, 0xc6, 0xa6, 0x20, 0x1f, 0x4b, 0x0c, 0xb1, 0x62, 0x03,
96007 + 0xf1, 0xbb, 0x65, 0x40, 0x9e, 0xe9, 0x15, 0x70, 0x53, 0xfe, 0x0a, 0x84,
96008 + 0xd9, 0x06, 0x7c, 0x8b, 0xbe, 0xff, 0x53, 0x90, 0xa2, 0x78, 0x6d, 0x0c,
96009 + 0xbb, 0xcf, 0xe9, 0xf8, 0x30, 0x46, 0xb4, 0x5f, 0xc0, 0x47, 0xe5, 0xef,
96010 + 0x90, 0xa9, 0x79, 0xcb, 0x79, 0x6b, 0x98, 0x8f, 0xb7, 0xc0, 0xb6, 0x3a,
96011 + 0xa0, 0xb7, 0x56, 0xc9, 0x79, 0xf2, 0xf0, 0xd7, 0x99, 0x17, 0xce, 0xab,
96012 + 0x8d, 0x67, 0x04, 0x92, 0x5f, 0x0e, 0xbe, 0x49, 0x3e, 0x53, 0x5d, 0x92,
96013 + 0xf1, 0xd4, 0xbc, 0x51, 0x8a, 0x7c, 0xe2, 0x0d, 0xd6, 0x97, 0x60, 0xbf,
96014 + 0x7a, 0xd9, 0xaf, 0xe9, 0x80, 0x8e, 0xbb, 0xf6, 0x07, 0x78, 0xcc, 0x04,
96015 + 0xbf, 0x3a, 0x12, 0xda, 0x2f, 0x27, 0x7f, 0xd9, 0x9e, 0xd4, 0xb7, 0x35,
96016 + 0xf8, 0xa5, 0xaa, 0x16, 0x68, 0xf9, 0x59, 0x47, 0xef, 0x25, 0x5c, 0x36,
96017 + 0xae, 0xed, 0x50, 0x79, 0xfd, 0x4b, 0xe6, 0x15, 0xf9, 0x39, 0x99, 0xb6,
96018 + 0xbf, 0xd3, 0xca, 0x3c, 0xef, 0xd4, 0xf9, 0x6e, 0xb4, 0xff, 0xfb, 0x43,
96019 + 0x54, 0x88, 0x5a, 0xae, 0x4c, 0x3a, 0xdf, 0x05, 0xf8, 0xef, 0xb3, 0x78,
96020 + 0x54, 0xb2, 0x96, 0xe3, 0xc4, 0x58, 0xba, 0x4e, 0xe9, 0x6b, 0x67, 0xfd,
96021 + 0x4d, 0xac, 0xdf, 0xb4, 0xbd, 0x4b, 0x65, 0xdf, 0x93, 0xd6, 0x7b, 0xd4,
96022 + 0xf9, 0x99, 0x7d, 0x97, 0x3a, 0x4e, 0x74, 0x7f, 0xec, 0xca, 0xa4, 0x3a,
96023 + 0x5f, 0xb5, 0xc0, 0x3b, 0x2d, 0xb6, 0xf4, 0xfd, 0x68, 0xbd, 0x47, 0xf5,
96024 + 0x3d, 0x28, 0x5e, 0xe0, 0xa5, 0xb3, 0xde, 0xfc, 0x29, 0xeb, 0x0d, 0xf9,
96025 + 0xe1, 0x37, 0xcf, 0x71, 0x7d, 0x19, 0x50, 0xf7, 0x94, 0xb3, 0xdd, 0xe5,
96026 + 0xba, 0xce, 0x4b, 0xbb, 0xb9, 0x0e, 0xed, 0xb4, 0xd7, 0x13, 0x8f, 0xad,
96027 + 0x2e, 0xa8, 0xb5, 0x2b, 0x4f, 0x9f, 0x74, 0xc4, 0x33, 0x29, 0x22, 0x98,
96028 + 0x03, 0x92, 0x11, 0x25, 0x7f, 0x4f, 0xcc, 0xad, 0x2b, 0xb9, 0xf6, 0x23,
96029 + 0x1e, 0x9d, 0x46, 0x88, 0xe4, 0xae, 0xf7, 0xab, 0x73, 0xd7, 0xac, 0x3e,
96030 + 0x8e, 0x3a, 0x73, 0x91, 0xed, 0x5d, 0xcc, 0xf6, 0x4a, 0x7d, 0x8d, 0xc4,
96031 + 0x53, 0xff, 0xf5, 0x7e, 0xbb, 0xbd, 0x77, 0x1e, 0xce, 0x7f, 0x9f, 0x33,
96032 + 0xef, 0xfd, 0xdc, 0x6f, 0xb8, 0x4f, 0xfa, 0x77, 0x7f, 0xa5, 0xed, 0xe1,
96033 + 0x7b, 0x23, 0xfa, 0x7e, 0x93, 0xf2, 0x32, 0x39, 0xa0, 0xce, 0x87, 0x05,
96034 + 0xd3, 0x44, 0xf4, 0xd5, 0xa3, 0xae, 0x4d, 0xef, 0x81, 0xfd, 0x7d, 0x75,
96035 + 0xea, 0xfe, 0x16, 0x81, 0x7e, 0xe3, 0x96, 0x21, 0x45, 0x7d, 0xbf, 0x38,
96036 + 0x9c, 0x2f, 0x8f, 0x5f, 0xb3, 0xdc, 0x38, 0xfb, 0x15, 0x65, 0xbf, 0x36,
96037 + 0x4b, 0xbf, 0x28, 0xee, 0xfc, 0x3d, 0x9f, 0xdf, 0x6c, 0xa7, 0xd0, 0xfd,
96038 + 0x9b, 0xcf, 0x91, 0x5c, 0x0f, 0xcb, 0xb9, 0xe7, 0xed, 0xdb, 0x99, 0xe5,
96039 + 0x54, 0x87, 0x4f, 0x1f, 0xa6, 0x7a, 0x1a, 0xb2, 0xf8, 0xe6, 0xb4, 0x6f,
96040 + 0xe2, 0x31, 0xc4, 0x51, 0xc9, 0x2d, 0x12, 0x7b, 0xc3, 0xf3, 0xc5, 0xcb,
96041 + 0xad, 0xb6, 0xc7, 0x66, 0xc6, 0x75, 0xbc, 0x4d, 0xf2, 0x73, 0x72, 0x80,
96042 + 0xe6, 0xc2, 0x9c, 0x38, 0x1a, 0xb6, 0x38, 0x42, 0x1e, 0xf3, 0x4a, 0xbe,
96043 + 0xf8, 0xe5, 0xeb, 0x8b, 0x9f, 0x3e, 0xd4, 0x7c, 0x3a, 0xe2, 0xd5, 0xf6,
96044 + 0x2b, 0x5c, 0x65, 0xe5, 0xf3, 0x00, 0xcf, 0x23, 0x19, 0x93, 0x7e, 0x89,
96045 + 0x4f, 0xa7, 0x68, 0x69, 0x56, 0x9c, 0x51, 0x72, 0x2b, 0xe2, 0x07, 0xd8,
96046 + 0xce, 0xcb, 0x2e, 0xf8, 0xd1, 0xb3, 0x07, 0xeb, 0x2b, 0x5c, 0xdf, 0xee,
96047 + 0x72, 0x9d, 0xda, 0xee, 0x07, 0x4e, 0xd7, 0x93, 0x7f, 0xf1, 0x03, 0xe7,
96048 + 0xb5, 0x7e, 0xd2, 0x6b, 0x66, 0x38, 0x3e, 0x2f, 0xba, 0xd8, 0xee, 0x1a,
96049 + 0xca, 0x47, 0xfc, 0x0e, 0xbd, 0x4f, 0xb7, 0x68, 0x5d, 0xaa, 0xb0, 0x42,
96050 + 0xc6, 0x81, 0xed, 0x59, 0x0f, 0xec, 0xf0, 0x71, 0x5c, 0x1b, 0x72, 0xf3,
96051 + 0x85, 0x6d, 0x6f, 0x0d, 0x9f, 0xef, 0xc4, 0xda, 0xc7, 0xf5, 0x65, 0x94,
96052 + 0xed, 0x7a, 0xaf, 0x1e, 0x18, 0x6e, 0x40, 0x7f, 0x9c, 0x34, 0x15, 0x46,
96053 + 0xe2, 0x03, 0xe3, 0xf0, 0xa7, 0x77, 0x23, 0xfc, 0xbd, 0xc7, 0x71, 0x60,
96054 + 0x0c, 0x9f, 0x1a, 0xa4, 0xbe, 0x19, 0x1e, 0x42, 0x7f, 0x0d, 0x7b, 0x07,
96055 + 0xe1, 0x47, 0x6f, 0x06, 0xeb, 0x7b, 0xcf, 0x02, 0x1f, 0x3c, 0x87, 0x73,
96056 + 0x07, 0x0f, 0x73, 0x7c, 0x36, 0xe6, 0x3f, 0xd7, 0x73, 0x1f, 0x72, 0x7d,
96057 + 0xf5, 0xd4, 0xe7, 0xc7, 0xb8, 0xef, 0x8a, 0x04, 0xf7, 0xf9, 0x0c, 0xaf,
96058 + 0xf7, 0x71, 0x1f, 0xb9, 0xcd, 0x7d, 0xb2, 0x37, 0xa7, 0x4f, 0x4e, 0xa1,
96059 + 0x6e, 0x8e, 0x65, 0x52, 0x6a, 0x43, 0xd6, 0xaf, 0x42, 0xdd, 0x1f, 0x15,
96060 + 0x06, 0xe2, 0x65, 0x9c, 0xaf, 0x92, 0x35, 0xc0, 0x91, 0x35, 0xe8, 0x6b,
96061 + 0xbd, 0x87, 0x38, 0x2e, 0x2d, 0x94, 0x9f, 0x95, 0x33, 0xe3, 0x9a, 0x0f,
96062 + 0x34, 0x3f, 0x3d, 0xd4, 0xbc, 0x43, 0xfd, 0xca, 0x58, 0xf5, 0x76, 0x8a,
96063 + 0xec, 0xab, 0x1a, 0xcb, 0x90, 0x7c, 0xa5, 0x28, 0x26, 0x7e, 0x55, 0x84,
96064 + 0x67, 0x60, 0x6f, 0x7c, 0x94, 0xfd, 0xec, 0x7f, 0x06, 0x78, 0x88, 0xf3,
96065 + 0xac, 0xf3, 0x77, 0x75, 0x9d, 0x49, 0xe7, 0x26, 0x07, 0x60, 0xb7, 0xe6,
96066 + 0x7d, 0xee, 0x9c, 0xa7, 0xf3, 0x5e, 0xd1, 0x4c, 0x6b, 0xd1, 0x73, 0x50,
96067 + 0xdd, 0x13, 0x92, 0xf9, 0x52, 0x76, 0xc9, 0x58, 0x70, 0x7f, 0x74, 0xf2,
96068 + 0x41, 0xf1, 0x45, 0xf3, 0xd2, 0xce, 0x23, 0x3b, 0x4f, 0x9c, 0xfc, 0x08,
96069 + 0x53, 0x3d, 0x97, 0x8f, 0x97, 0xfa, 0xa7, 0x37, 0x3e, 0x3a, 0xfc, 0xff,
96070 + 0xf1, 0x3a, 0x85, 0x78, 0xc5, 0xd9, 0x6e, 0x33, 0x41, 0x73, 0xd6, 0x13,
96071 + 0x62, 0x88, 0xf3, 0x35, 0x55, 0xcf, 0xef, 0xb5, 0x06, 0xf9, 0xea, 0x7f,
96072 + 0x1a, 0xf6, 0xf4, 0xf3, 0x3b, 0xf9, 0x83, 0xfb, 0x39, 0xf2, 0xec, 0x33,
96073 + 0xbb, 0xc7, 0x39, 0xaf, 0xcc, 0xb7, 0x7d, 0x1c, 0x87, 0xdb, 0x88, 0x83,
96074 + 0xa9, 0xe3, 0x90, 0xb0, 0xe2, 0xa0, 0xeb, 0x83, 0x5d, 0x4f, 0x91, 0xe4,
96075 + 0x0b, 0xd5, 0x19, 0xf3, 0x2a, 0xcd, 0x27, 0x1e, 0xf6, 0x5b, 0xca, 0x35,
96076 + 0x2b, 0xff, 0xc2, 0xec, 0x5f, 0x48, 0xec, 0x5d, 0x69, 0x3f, 0x17, 0xe4,
96077 + 0x73, 0x01, 0x79, 0x0e, 0xfb, 0x78, 0x8f, 0xe6, 0x3c, 0xf1, 0x55, 0x71,
96078 + 0xd4, 0x7a, 0x73, 0xdf, 0x9d, 0x3d, 0x9e, 0x54, 0x51, 0xe9, 0x07, 0x75,
96079 + 0x46, 0xe6, 0x8d, 0xea, 0x91, 0x69, 0xd5, 0x99, 0xbb, 0x54, 0x7f, 0x03,
96080 + 0xa7, 0xfb, 0x50, 0x17, 0x4e, 0xf7, 0x9d, 0xe1, 0xfe, 0xc7, 0x71, 0x69,
96081 + 0xa7, 0xb9, 0x58, 0xc6, 0xae, 0xc6, 0x59, 0x67, 0x9c, 0x76, 0x54, 0xd9,
96082 + 0xec, 0xd0, 0xf7, 0xce, 0xd7, 0x97, 0x31, 0xaf, 0x6d, 0xa2, 0xbe, 0xec,
96083 + 0xb7, 0xe6, 0x49, 0x67, 0xbd, 0xf7, 0x3f, 0x72, 0xbd, 0xdf, 0xde, 0x6c,
96084 + 0xd7, 0x5f, 0x2b, 0x26, 0xd2, 0xd0, 0xdf, 0xce, 0xfd, 0x72, 0x17, 0xbf,
96085 + 0xdb, 0xeb, 0x81, 0x08, 0xdd, 0xd7, 0xf5, 0x32, 0xf9, 0x27, 0x4a, 0x83,
96086 + 0xf0, 0xa7, 0x6b, 0x2b, 0xbe, 0x77, 0x85, 0xb0, 0x5f, 0x19, 0xc2, 0xdf,
96087 + 0x5b, 0xed, 0x3e, 0x93, 0xe4, 0x2b, 0x43, 0xc0, 0x52, 0x7e, 0xef, 0x13,
96088 + 0xd6, 0x5c, 0x0c, 0x3c, 0xe9, 0xb5, 0xcf, 0x8f, 0x6e, 0x71, 0xc1, 0x8b,
96089 + 0xf7, 0x2f, 0x1a, 0x30, 0x07, 0xb6, 0xd6, 0x99, 0xf4, 0xbd, 0xa3, 0x01,
96090 + 0xfd, 0x12, 0xf5, 0x75, 0xf6, 0xef, 0x33, 0x9e, 0x2b, 0x2b, 0x67, 0xe7,
96091 + 0x67, 0xfb, 0x7c, 0x5d, 0x18, 0x1f, 0xb5, 0xe6, 0x5c, 0x7d, 0x9f, 0xfd,
96092 + 0xfd, 0x28, 0xbd, 0xb4, 0x94, 0x73, 0xaa, 0x7d, 0xbe, 0x76, 0xe9, 0x79,
96093 + 0x87, 0xe7, 0xd1, 0x62, 0x71, 0x29, 0x0d, 0xbf, 0x26, 0xd2, 0xf9, 0xde,
96094 + 0xa1, 0xba, 0x4f, 0xeb, 0x83, 0xdd, 0xda, 0x8f, 0x59, 0xfd, 0xb8, 0x7f,
96095 + 0x0f, 0xdb, 0xf9, 0x1b, 0xfd, 0x5d, 0x5c, 0xca, 0xfe, 0x28, 0xbd, 0xd8,
96096 + 0xdf, 0xcc, 0xf3, 0x7e, 0xd2, 0x5a, 0x3b, 0xe7, 0xf4, 0x76, 0xb2, 0xab,
96097 + 0x88, 0xfb, 0x69, 0xa9, 0xad, 0xdf, 0x43, 0xbe, 0xa4, 0x09, 0x38, 0xd2,
96098 + 0xa4, 0xf3, 0xa0, 0xf3, 0xa5, 0xf3, 0x83, 0x3c, 0x96, 0xae, 0x26, 0xb1,
96099 + 0x96, 0xae, 0xd5, 0xf4, 0x60, 0x9b, 0xba, 0x66, 0x9c, 0xff, 0x3f, 0xd8,
96100 + 0x1e, 0x53, 0xf2, 0x6f, 0x8a, 0xef, 0x63, 0x68, 0x80, 0x3f, 0x31, 0xce,
96101 + 0xce, 0xc5, 0x9c, 0x00, 0x6b, 0x1e, 0xc1, 0x7d, 0x17, 0x3c, 0xbc, 0xdd,
96102 + 0xac, 0xe7, 0x46, 0x67, 0xff, 0xfe, 0x90, 0xea, 0xf2, 0xd9, 0x7f, 0x73,
96103 + 0xe7, 0xce, 0xd9, 0xf9, 0x51, 0xfb, 0xa9, 0xe4, 0x1b, 0x99, 0x8f, 0x7e,
96104 + 0xd1, 0xba, 0x09, 0x7f, 0x6f, 0x87, 0x7d, 0xe0, 0x7d, 0xd8, 0x67, 0xcf,
96105 + 0x97, 0xe4, 0x45, 0x21, 0x3d, 0xf0, 0xc5, 0x45, 0x85, 0xe4, 0xcf, 0xf1,
96106 + 0xcb, 0xdf, 0xd1, 0xe7, 0x8f, 0x46, 0x83, 0xd8, 0x2f, 0x6b, 0x85, 0x7a,
96107 + 0x37, 0xf1, 0xd6, 0x25, 0x8e, 0x82, 0xd7, 0x1f, 0x8c, 0x00, 0xdf, 0x17,
96108 + 0x2f, 0x41, 0x4f, 0xd1, 0x11, 0xea, 0x73, 0xfe, 0x32, 0x84, 0x35, 0x35,
96109 + 0xca, 0x7c, 0x2d, 0x37, 0xe8, 0xff, 0x65, 0x59, 0x11, 0xe2, 0xff, 0xab,
96110 + 0xf0, 0xbb, 0x03, 0x4f, 0xdd, 0xb6, 0x7c, 0x2f, 0xc4, 0x5b, 0xaa, 0x1f,
96111 + 0x92, 0x97, 0x38, 0xce, 0xfc, 0xf5, 0xe7, 0xf2, 0x57, 0xc7, 0xa5, 0xdc,
96112 + 0xc8, 0xcb, 0xd7, 0xb5, 0x4e, 0xbe, 0x7a, 0x99, 0xaf, 0xf7, 0xad, 0xfe,
96113 + 0x36, 0x57, 0x2f, 0xfe, 0xae, 0xb8, 0xf4, 0xd8, 0xf8, 0x0b, 0xdc, 0x5c,
96114 + 0xab, 0xee, 0x2f, 0x9b, 0x33, 0x77, 0x56, 0x0b, 0x7b, 0x3d, 0x3a, 0x24,
96115 + 0xf3, 0xfd, 0x1f, 0xfe, 0xac, 0x5e, 0x92, 0x80, 0x14, 0x00, 0x00, 0x00 };
96116
96117 static u8 bnx2_TPAT_b06FwText[] = {
96118 - 0xbd, 0x58, 0x6d, 0x70, 0x5c, 0xd5, 0x79, 0x7e, 0xce, 0xbd, 0x77, 0xb5,
96119 - 0xd7, 0xd2, 0x4a, 0xba, 0xb2, 0xd6, 0x66, 0x5d, 0xdc, 0xfa, 0x1e, 0x74,
96120 - 0x57, 0x52, 0x58, 0x01, 0x77, 0x6d, 0x01, 0xeb, 0xe6, 0xb6, 0xbe, 0xc8,
96121 - 0xb2, 0xbc, 0xfe, 0x00, 0xe4, 0xc0, 0x4c, 0xe4, 0x96, 0x8e, 0x37, 0xc6,
96122 - 0x18, 0xd9, 0x90, 0xa9, 0x28, 0xfc, 0x58, 0x37, 0x4c, 0xbd, 0x95, 0x65,
96123 - 0x63, 0xc3, 0x4a, 0x6b, 0x0c, 0xb1, 0x4c, 0xda, 0x99, 0x78, 0x84, 0xb1,
96124 - 0x4c, 0x22, 0x7b, 0x0d, 0xe4, 0x07, 0x49, 0xc3, 0xa0, 0xc1, 0x0e, 0x08,
96125 - 0x06, 0xf3, 0x31, 0x6d, 0x67, 0x98, 0xe9, 0xa4, 0xf5, 0x18, 0xf3, 0x11,
96126 - 0x92, 0x18, 0x87, 0x4e, 0x3a, 0xa2, 0x10, 0x9f, 0x3e, 0x67, 0x77, 0xc5,
96127 - 0x57, 0x32, 0xd3, 0xfe, 0xaa, 0x66, 0x56, 0x7b, 0xf7, 0xec, 0xf9, 0x78,
96128 - 0xcf, 0xfb, 0x3e, 0xef, 0xf3, 0x3e, 0xef, 0x5e, 0x21, 0x50, 0x8f, 0xda,
96129 - 0x5f, 0x23, 0x5f, 0xdd, 0xdf, 0x1a, 0xba, 0x2f, 0x7d, 0xf5, 0x75, 0x57,
96130 - 0xf3, 0xf1, 0x3a, 0xe1, 0xd4, 0x59, 0xf8, 0x7f, 0xfc, 0x33, 0x01, 0x67,
96131 - 0xce, 0x0e, 0xfd, 0x82, 0x6d, 0x04, 0x85, 0xcb, 0x7b, 0x3c, 0xd8, 0x66,
96132 - 0x10, 0x77, 0x6f, 0xf7, 0x80, 0x70, 0x2a, 0xe5, 0xae, 0xc4, 0xef, 0x54,
96133 - 0x21, 0x6e, 0x41, 0x8f, 0xff, 0x71, 0xf0, 0xe9, 0x35, 0xcf, 0x5d, 0x2f,
96134 - 0x2f, 0x1e, 0x36, 0x61, 0x3b, 0xc1, 0x5e, 0xcb, 0x69, 0x87, 0xbd, 0x98,
96135 - 0x6b, 0xfe, 0xb1, 0xe3, 0x2f, 0x04, 0x9a, 0xe6, 0xf6, 0x52, 0x6a, 0xc4,
96136 - 0x8f, 0x62, 0xd8, 0x4f, 0x60, 0x77, 0xc9, 0x40, 0xe8, 0x44, 0xb1, 0xcb,
96137 - 0x9b, 0x55, 0x5b, 0x7c, 0xe9, 0xef, 0x86, 0x5a, 0x72, 0xda, 0x97, 0x89,
96138 - 0x5e, 0x13, 0xe1, 0x77, 0xbc, 0xc5, 0xd8, 0x5d, 0x4e, 0x60, 0xa4, 0x6c,
96139 - 0xe3, 0xac, 0x39, 0x82, 0xde, 0xf2, 0xdc, 0x3a, 0x97, 0xeb, 0x3a, 0xb1,
96140 - 0xe7, 0xcb, 0x6b, 0xdd, 0xdd, 0x48, 0x25, 0xf6, 0xc0, 0x40, 0x2e, 0xee,
96141 - 0x71, 0x5d, 0x9b, 0xbb, 0x07, 0xb2, 0x93, 0xfb, 0x14, 0xea, 0xba, 0x5d,
96142 - 0xee, 0x51, 0xe0, 0x7a, 0xe9, 0x1e, 0x85, 0xde, 0x2b, 0xc3, 0xcf, 0x6f,
96143 - 0xa9, 0xe7, 0x3a, 0x16, 0xe3, 0x19, 0xee, 0xff, 0x74, 0xd9, 0xc1, 0xc9,
96144 - 0xb2, 0x87, 0xe7, 0xcb, 0x2e, 0x7e, 0x54, 0x8e, 0xe3, 0xa9, 0xb2, 0x9d,
96145 - 0xb3, 0x03, 0xf4, 0xc7, 0x47, 0x77, 0xaa, 0x84, 0x87, 0xc2, 0x1f, 0x05,
96146 - 0xde, 0xa1, 0x43, 0x46, 0x2c, 0xf3, 0x37, 0xd7, 0xa1, 0x7f, 0xfe, 0x71,
96147 - 0x1b, 0x1b, 0x4a, 0x8b, 0x73, 0xd1, 0x00, 0x9c, 0x23, 0xe0, 0x5f, 0x67,
96148 - 0xa3, 0x9f, 0x7b, 0x14, 0xb8, 0x7f, 0x58, 0x1e, 0xe1, 0xcb, 0xc6, 0xbb,
96149 - 0x45, 0xdb, 0x6e, 0x1e, 0x5d, 0xa8, 0xe7, 0xe0, 0x57, 0xc5, 0x8b, 0xea,
96150 - 0x42, 0xda, 0xc1, 0x2b, 0xcb, 0x95, 0x6a, 0x0c, 0x50, 0x68, 0xe8, 0x2e,
96151 - 0xc0, 0x0c, 0x64, 0x76, 0x9d, 0x29, 0xd0, 0x7b, 0x95, 0xd7, 0x39, 0x2a,
96152 - 0x6e, 0xb9, 0xc5, 0x08, 0x60, 0x8b, 0xc0, 0xb5, 0xda, 0xa6, 0x32, 0xd8,
96153 - 0x57, 0xe6, 0xbd, 0x68, 0xcf, 0x48, 0x19, 0xe1, 0x5f, 0x76, 0x98, 0x98,
96154 - 0x88, 0xe3, 0xfe, 0xb7, 0xbb, 0x2d, 0x7c, 0x5c, 0x94, 0x89, 0x4e, 0xf3,
96155 - 0x7e, 0xec, 0x2c, 0xe6, 0x71, 0x47, 0x11, 0x05, 0x23, 0x18, 0xc2, 0x37,
96156 - 0xba, 0x03, 0xde, 0x33, 0xc4, 0xf7, 0xcb, 0xb0, 0x5b, 0x83, 0xd3, 0x97,
96157 - 0xdf, 0xdb, 0x2e, 0x0f, 0x87, 0x06, 0x90, 0x1d, 0x03, 0xfa, 0x4a, 0x02,
96158 - 0xa7, 0x32, 0x02, 0x5b, 0xfc, 0xcb, 0x50, 0x70, 0xba, 0xb1, 0xb7, 0x2c,
96159 - 0xb3, 0x05, 0x7e, 0x77, 0xd5, 0x28, 0xec, 0x45, 0xc1, 0x6d, 0xd6, 0xf2,
96160 - 0x12, 0xec, 0x96, 0x60, 0xc0, 0x4a, 0x8f, 0xb5, 0xcd, 0x1e, 0x13, 0x32,
96161 - 0xbf, 0xc2, 0x94, 0x21, 0x20, 0x33, 0x9d, 0x46, 0xaa, 0xa0, 0x84, 0x1c,
96162 - 0xba, 0x08, 0x6d, 0xd3, 0x6d, 0xd6, 0x35, 0x53, 0xfa, 0x7d, 0xc0, 0xba,
96163 - 0x7a, 0x0a, 0x58, 0xcf, 0x3d, 0x1f, 0x5a, 0x2e, 0xb0, 0x3d, 0xfd, 0x6b,
96164 - 0x15, 0x2e, 0x90, 0xe1, 0x61, 0xd1, 0x8d, 0xd1, 0x32, 0x70, 0xd3, 0x18,
96165 - 0xec, 0x18, 0xe7, 0x16, 0xb9, 0x77, 0x3d, 0xe7, 0xae, 0x1d, 0x6d, 0x1b,
96166 - 0x9c, 0x11, 0x92, 0x77, 0x93, 0x03, 0x40, 0xca, 0x3f, 0x0e, 0xe9, 0xae,
96167 - 0x13, 0xd2, 0xd9, 0x53, 0xdb, 0x33, 0x59, 0xdb, 0xf3, 0x8a, 0x29, 0x5b,
96168 - 0xac, 0x2a, 0x41, 0xf4, 0x96, 0xe0, 0x3e, 0xe9, 0x83, 0x77, 0x89, 0xf1,
96169 - 0xde, 0xf5, 0x70, 0x5b, 0xa4, 0x7f, 0x98, 0x73, 0xa3, 0x41, 0x97, 0xf5,
96170 - 0x5e, 0x51, 0xe0, 0x43, 0x4f, 0xcf, 0xef, 0xd2, 0xb6, 0x84, 0x4e, 0x90,
96171 - 0x11, 0xfd, 0xe5, 0xfd, 0x73, 0x39, 0x62, 0x9c, 0xf4, 0xe3, 0xc0, 0x42,
96172 - 0x34, 0xb7, 0x78, 0xf3, 0xf1, 0xb0, 0x83, 0xc6, 0xa8, 0xb7, 0xcc, 0x78,
96173 - 0xc0, 0xa9, 0xc3, 0x49, 0xff, 0xb7, 0x0a, 0xdf, 0xd0, 0xf3, 0x81, 0x6f,
96174 - 0x3f, 0xe2, 0x20, 0xe6, 0x5d, 0xc4, 0xd1, 0xf4, 0x36, 0xe3, 0x55, 0x67,
96175 - 0x08, 0x4d, 0xde, 0xcf, 0x8d, 0xd7, 0x9c, 0x38, 0x1e, 0xe2, 0x7d, 0xee,
96176 - 0x4c, 0xc6, 0xf1, 0x40, 0xf9, 0xab, 0xfb, 0x5a, 0x22, 0x3b, 0xfe, 0x8e,
96177 - 0x42, 0x4b, 0x65, 0x7d, 0xf8, 0xac, 0x3f, 0x01, 0x5c, 0xa6, 0xc7, 0xf3,
96178 - 0x62, 0x63, 0xe9, 0x92, 0x72, 0xa3, 0x19, 0x3c, 0x50, 0xb2, 0x31, 0x8f,
96179 - 0x76, 0x45, 0x3c, 0x1b, 0x6f, 0x17, 0xf3, 0x62, 0x55, 0x39, 0x14, 0x6b,
96180 - 0x26, 0x7b, 0x44, 0x38, 0x69, 0x89, 0x9e, 0x71, 0x10, 0x9b, 0x4a, 0xad,
96181 - 0xf1, 0x05, 0xfe, 0xc3, 0xff, 0x57, 0xe3, 0x6c, 0xab, 0x0c, 0x5d, 0x71,
96182 - 0x49, 0x79, 0x49, 0x03, 0xf5, 0x5e, 0x9f, 0x58, 0x3b, 0xa9, 0xd4, 0x5e,
96183 - 0x3f, 0x2b, 0x7a, 0x27, 0x61, 0x37, 0x04, 0x81, 0x75, 0xd7, 0xe8, 0x69,
96184 - 0x23, 0xb7, 0x20, 0x86, 0x52, 0xc9, 0xc5, 0x29, 0x5f, 0xe3, 0x77, 0x1e,
96185 - 0x2c, 0x4f, 0xf0, 0x85, 0xd8, 0x19, 0x1f, 0x56, 0x8c, 0xcf, 0x53, 0x1b,
96186 - 0x2c, 0x8c, 0x74, 0xaf, 0xad, 0xac, 0x89, 0x10, 0x2b, 0x4f, 0x14, 0xb3,
96187 - 0x30, 0x88, 0xbf, 0x45, 0x41, 0x72, 0x76, 0x82, 0x98, 0x7f, 0xcb, 0x4f,
96188 - 0x76, 0x7e, 0x6c, 0x92, 0x1c, 0x5a, 0x65, 0x82, 0x86, 0x0a, 0x2b, 0x48,
96189 - 0x76, 0x1e, 0x81, 0x80, 0xe9, 0x59, 0x78, 0xc5, 0x8f, 0x20, 0xdc, 0x60,
96190 - 0x63, 0x17, 0x71, 0x55, 0xc7, 0xf1, 0xa3, 0x95, 0x71, 0xfd, 0x19, 0xce,
96191 - 0xaa, 0xf2, 0x57, 0x73, 0x9e, 0xe3, 0xa5, 0x36, 0xe4, 0x2a, 0x79, 0x0f,
96192 - 0x67, 0x1d, 0xef, 0xfb, 0xad, 0x88, 0x7e, 0xfc, 0x93, 0xcf, 0xc6, 0x6e,
96193 - 0xa4, 0x9d, 0x66, 0xe0, 0xe5, 0x1e, 0x17, 0x8b, 0x50, 0x68, 0x01, 0xed,
96194 - 0x36, 0x70, 0x21, 0xbd, 0x10, 0xd3, 0x2d, 0xfa, 0xeb, 0xb8, 0xd3, 0x3f,
96195 - 0xde, 0xaa, 0x63, 0xa2, 0xf7, 0x72, 0x56, 0x8d, 0x2b, 0xf5, 0xbc, 0x5f,
96196 - 0x87, 0xd9, 0x8e, 0xe1, 0x19, 0x66, 0x89, 0xbf, 0x88, 0x39, 0xf9, 0x12,
96197 - 0xcf, 0x6f, 0x59, 0x66, 0xc2, 0x5c, 0xe6, 0x9a, 0xee, 0x7c, 0x60, 0xa2,
96198 - 0xa8, 0x39, 0x41, 0xce, 0xbe, 0xc4, 0xff, 0xe7, 0xca, 0x1a, 0x9f, 0x3e,
96199 - 0xf1, 0x29, 0xd0, 0xde, 0xa1, 0xe3, 0xee, 0x5b, 0xed, 0xc4, 0xde, 0x76,
96200 - 0xfa, 0x33, 0xc2, 0x3c, 0x78, 0x90, 0xf6, 0x9e, 0x2b, 0x7e, 0xcf, 0x58,
96201 - 0xe5, 0x48, 0x57, 0x9f, 0xf0, 0x4e, 0x11, 0xe2, 0x79, 0xff, 0xef, 0xb4,
96202 - 0x8f, 0x5d, 0x6e, 0x4b, 0xcc, 0xdc, 0x47, 0xcc, 0x68, 0xee, 0x59, 0x6f,
96203 - 0x39, 0x63, 0x72, 0xe0, 0x7d, 0x1a, 0x91, 0x08, 0x86, 0xac, 0x44, 0x29,
96204 - 0xb5, 0x77, 0x90, 0xdf, 0xdb, 0x41, 0xd6, 0xb2, 0x47, 0x65, 0x9e, 0xe7,
96205 - 0xe5, 0x2c, 0x43, 0x26, 0x9a, 0xcd, 0xd4, 0xd0, 0x88, 0x90, 0x83, 0xcd,
96206 - 0x42, 0xf6, 0xdf, 0x03, 0xe9, 0x9c, 0x10, 0xfa, 0xcc, 0xf5, 0x56, 0x57,
96207 - 0x05, 0xa3, 0x59, 0x62, 0x54, 0xbf, 0xdf, 0x67, 0xa5, 0x2a, 0xef, 0x43,
96208 - 0xd6, 0x95, 0x53, 0x09, 0x8c, 0x96, 0xa4, 0xef, 0x8a, 0x28, 0xbe, 0x96,
96209 - 0xb6, 0x71, 0x22, 0xa9, 0x96, 0xbc, 0x90, 0x96, 0xb9, 0x1e, 0x73, 0x31,
96210 - 0x73, 0x21, 0x81, 0x61, 0x62, 0xe9, 0x1f, 0x92, 0x23, 0xe8, 0x29, 0x9b,
96211 - 0xc4, 0xb1, 0x8b, 0xfd, 0xa5, 0x28, 0x66, 0xc8, 0x4f, 0x75, 0xe9, 0x4e,
96212 - 0x8c, 0x94, 0x64, 0xe7, 0x1b, 0x48, 0xe5, 0x8f, 0x30, 0x5e, 0x67, 0x17,
96213 - 0x78, 0xd8, 0x5f, 0x6e, 0x63, 0x8c, 0xa4, 0xbb, 0x8a, 0x1c, 0x65, 0x76,
96214 - 0x4b, 0x67, 0x17, 0x7d, 0x5b, 0x17, 0x90, 0xdb, 0xca, 0x19, 0xee, 0x53,
96215 - 0xc0, 0xaa, 0x72, 0x5e, 0xf4, 0x95, 0xe7, 0x70, 0xfa, 0x73, 0x62, 0x53,
96216 - 0x63, 0xd5, 0xc6, 0xe6, 0x12, 0x70, 0x67, 0xc9, 0x47, 0x8b, 0x67, 0xbc,
96217 - 0x18, 0xc5, 0x45, 0xfa, 0x71, 0x02, 0xf7, 0x38, 0x21, 0x16, 0x79, 0xeb,
96218 - 0xd4, 0x8e, 0xb8, 0x9e, 0x9f, 0x17, 0x6b, 0x19, 0xb7, 0x30, 0x02, 0x63,
96219 - 0xd2, 0x37, 0x71, 0x36, 0x3e, 0x3c, 0x3f, 0x52, 0xe1, 0x5d, 0xfd, 0x6e,
96220 - 0xa2, 0xdf, 0xc7, 0x1a, 0x07, 0x72, 0xc8, 0x17, 0x85, 0xc1, 0x26, 0xfa,
96221 - 0xe1, 0xa4, 0x28, 0x0c, 0xc4, 0x20, 0x0b, 0xf7, 0x0a, 0x3a, 0x6b, 0x8c,
96222 - 0x24, 0xb1, 0x60, 0x8e, 0xa7, 0x2d, 0xfc, 0x75, 0xe9, 0x29, 0xe3, 0x5c,
96223 - 0xa4, 0x0e, 0xe6, 0x81, 0x08, 0xa2, 0x07, 0x2c, 0x34, 0x1f, 0x10, 0xc4,
96224 - 0x5d, 0xa1, 0x33, 0xaa, 0xd7, 0x21, 0x81, 0x7d, 0xa3, 0x36, 0xee, 0xe9,
96225 - 0x88, 0xe0, 0x42, 0x52, 0x0e, 0x5e, 0x21, 0x86, 0xfd, 0x26, 0x8e, 0x8d,
96226 - 0x1e, 0x97, 0xae, 0x6b, 0x14, 0x22, 0x68, 0x8a, 0x23, 0xd2, 0x5e, 0x87,
96227 - 0x06, 0xae, 0xdb, 0x59, 0x52, 0x3b, 0xed, 0xa0, 0xe0, 0x36, 0x40, 0xfa,
96228 - 0x0f, 0x73, 0xdf, 0x53, 0x45, 0xa5, 0xea, 0xaf, 0xf5, 0x66, 0x3e, 0x30,
96229 - 0xe5, 0xf4, 0x0e, 0x7e, 0x7e, 0x6b, 0xaa, 0xba, 0xff, 0xbc, 0x03, 0x36,
96230 - 0x1a, 0x0f, 0x56, 0xf6, 0x9f, 0x7d, 0x8a, 0x16, 0x7c, 0x58, 0xd2, 0xf9,
96231 - 0xa4, 0x54, 0x34, 0xf0, 0xfa, 0xdf, 0x13, 0x4a, 0xdd, 0xe4, 0xcb, 0xdc,
96232 - 0xcb, 0xa2, 0x6d, 0x60, 0x94, 0xcf, 0x83, 0xe9, 0xa4, 0x9b, 0xa5, 0xcd,
96233 - 0xe7, 0xcb, 0x51, 0xda, 0xc7, 0x5c, 0xf0, 0xb6, 0x19, 0x3b, 0x1c, 0x13,
96234 - 0x75, 0xde, 0x0e, 0x63, 0x6b, 0x05, 0xab, 0x0e, 0x16, 0x8d, 0xd5, 0x63,
96235 - 0x89, 0x17, 0x8a, 0x4d, 0xcc, 0xcd, 0x8d, 0x93, 0x16, 0xe7, 0xe9, 0xdc,
96236 - 0x14, 0x88, 0x7a, 0xbd, 0x62, 0xe5, 0x64, 0x5f, 0x25, 0x5f, 0x07, 0xc6,
96237 - 0x0d, 0xbc, 0xe9, 0xdf, 0x80, 0x48, 0x90, 0x15, 0x03, 0x93, 0x3a, 0x7f,
96238 - 0xd6, 0x8a, 0xd5, 0x93, 0x8c, 0xdf, 0x7c, 0x9d, 0x3b, 0x37, 0x88, 0x48,
96239 - 0xa0, 0xf3, 0xe5, 0xf3, 0x1c, 0xb2, 0x99, 0x43, 0xc7, 0xfe, 0x97, 0x1c,
96240 - 0x7a, 0xa8, 0x64, 0x21, 0xd7, 0x52, 0xcd, 0x97, 0x5e, 0xc6, 0xe2, 0xef,
96241 - 0x6b, 0x75, 0x7b, 0x3b, 0xc7, 0xa3, 0x07, 0x74, 0x0e, 0xf7, 0x32, 0x87,
96242 - 0x35, 0x9e, 0x2d, 0xb1, 0x69, 0x1c, 0x76, 0x73, 0x10, 0x5a, 0x1f, 0x8e,
96243 - 0x2a, 0xbc, 0xed, 0x2b, 0xf5, 0xf1, 0x32, 0xed, 0x13, 0x39, 0xf8, 0x2c,
96244 - 0xf1, 0x08, 0x12, 0xd2, 0xbb, 0x9e, 0x52, 0x33, 0x7e, 0x2a, 0xfb, 0x2c,
96245 - 0x79, 0xf9, 0x9c, 0xd0, 0xf7, 0x8f, 0xc2, 0x49, 0x6b, 0x3c, 0xf6, 0x5a,
96246 - 0x57, 0x55, 0x70, 0x19, 0x12, 0xaf, 0xac, 0xd5, 0xf3, 0x35, 0x36, 0xa3,
96247 - 0x68, 0x48, 0xce, 0xd2, 0x37, 0x72, 0xa8, 0x51, 0xa8, 0x25, 0xaf, 0xa6,
96248 - 0xab, 0xb8, 0x2c, 0xb2, 0x36, 0xad, 0xe7, 0x59, 0xbd, 0xe3, 0xb2, 0xb0,
96249 - 0xde, 0xac, 0xd6, 0xd1, 0xbd, 0xc4, 0x86, 0xe6, 0xb8, 0xcb, 0xdb, 0xa3,
96250 - 0xd8, 0x47, 0x8c, 0x7a, 0x69, 0x17, 0xc3, 0xac, 0xab, 0xbb, 0x4b, 0xd2,
96251 - 0x1d, 0x26, 0x4e, 0x77, 0xd7, 0x70, 0x3a, 0xcc, 0x5a, 0xba, 0x1b, 0x72,
96252 - 0xaf, 0xae, 0xa5, 0x11, 0xe2, 0x94, 0x34, 0x56, 0xc1, 0xe9, 0x48, 0x0d,
96253 - 0xa7, 0xbd, 0x15, 0x9c, 0xee, 0x36, 0x34, 0x3e, 0x35, 0xf6, 0x36, 0xf1,
96254 - 0xbe, 0x67, 0xa3, 0x30, 0x7e, 0xc0, 0xfd, 0xc3, 0x05, 0xc3, 0x3d, 0x35,
96255 - 0xec, 0xf5, 0x68, 0xec, 0x19, 0x69, 0xdc, 0x63, 0xf0, 0x6e, 0x2f, 0x88,
96256 - 0x42, 0xae, 0x11, 0x32, 0x3b, 0x2c, 0x0a, 0x9d, 0xf3, 0x88, 0xbd, 0x67,
96257 - 0x38, 0xa3, 0x81, 0xd8, 0xab, 0xfa, 0x4c, 0xcf, 0x8f, 0x11, 0x7b, 0xff,
96258 - 0x29, 0xce, 0x46, 0x34, 0xd7, 0xea, 0xd8, 0x02, 0x8b, 0x4e, 0x68, 0xae,
96259 - 0x8d, 0x92, 0x30, 0x2c, 0xe4, 0x4b, 0xc6, 0xe2, 0x04, 0x14, 0xb6, 0x92,
96260 - 0xdb, 0xde, 0xf4, 0x76, 0xf9, 0x2d, 0xb8, 0x01, 0xa7, 0xbb, 0x0c, 0x68,
96261 - 0x1d, 0x62, 0x4e, 0x54, 0xb1, 0x7b, 0x17, 0x39, 0xa3, 0x29, 0x90, 0x9d,
96262 - 0x67, 0xa9, 0x37, 0xb6, 0xa4, 0x1b, 0x50, 0xf2, 0x86, 0xc3, 0x66, 0x56,
96263 - 0x43, 0x9b, 0xe7, 0xae, 0x86, 0xae, 0x85, 0x71, 0x58, 0xed, 0x36, 0x1a,
96264 - 0x8e, 0x7a, 0xb9, 0x13, 0x42, 0xe3, 0x15, 0xe8, 0x3a, 0x6e, 0xd3, 0x7e,
96265 - 0x38, 0xf5, 0x81, 0x97, 0xf9, 0xc0, 0x7c, 0x5c, 0x9c, 0x75, 0xaa, 0xf5,
96266 - 0xa0, 0x6f, 0x5c, 0x63, 0xec, 0x57, 0xea, 0x4d, 0xcf, 0xc0, 0x1d, 0xdd,
96267 - 0x4a, 0x79, 0x4b, 0xa3, 0x88, 0x4c, 0xd8, 0xa8, 0x3b, 0xd8, 0x8a, 0x97,
96268 - 0xba, 0x22, 0x38, 0x7b, 0xab, 0xfe, 0x3e, 0x8a, 0x7a, 0xe2, 0x70, 0xd3,
96269 - 0xb5, 0x51, 0x2c, 0x99, 0xa8, 0x62, 0xb2, 0xc1, 0xfb, 0x89, 0xb8, 0x8b,
96270 - 0x98, 0x9c, 0xe7, 0x9d, 0x11, 0xdb, 0x9c, 0x0c, 0xf6, 0xd2, 0xa6, 0xd7,
96271 - 0xc9, 0xf1, 0xe7, 0x93, 0xbb, 0x66, 0x2c, 0xda, 0xbf, 0x62, 0x59, 0xa1,
96272 - 0x73, 0x09, 0x22, 0x58, 0x34, 0x21, 0x07, 0x8e, 0xe9, 0x0a, 0x33, 0x6a,
96273 - 0x89, 0x0d, 0xc4, 0xbb, 0xe6, 0x57, 0x93, 0x71, 0xba, 0x62, 0x69, 0xdb,
96274 - 0xd0, 0xcd, 0xb8, 0xa4, 0xce, 0x24, 0x93, 0xd9, 0x51, 0x62, 0x7d, 0xdb,
96275 - 0xf1, 0x08, 0xea, 0x0e, 0xfc, 0x97, 0x32, 0x02, 0xe6, 0x42, 0xb7, 0x22,
96276 - 0x3e, 0x0b, 0x99, 0x7a, 0x72, 0xc8, 0x45, 0xc4, 0xf1, 0xd8, 0xfe, 0x9d,
96277 - 0x6a, 0x09, 0xc7, 0xdf, 0xbb, 0xbe, 0x19, 0x6d, 0xcb, 0x64, 0x7e, 0x2b,
96278 - 0xf7, 0x9f, 0x4d, 0x17, 0x3a, 0x13, 0x8c, 0xdd, 0x49, 0xb8, 0xb8, 0x6a,
96279 - 0x4c, 0xe6, 0x8e, 0xa1, 0x0e, 0xcd, 0x13, 0x5e, 0xf6, 0x84, 0x88, 0xa1,
96280 - 0xf1, 0x44, 0x0c, 0xfb, 0x8e, 0xeb, 0xfc, 0x8c, 0xc1, 0x1a, 0xf3, 0x66,
96281 - 0x3b, 0x44, 0xa1, 0x9f, 0xf9, 0x39, 0xd3, 0x2f, 0xda, 0xd1, 0x3e, 0x2e,
96282 - 0xa7, 0xb3, 0xc2, 0x0b, 0x1f, 0x80, 0x87, 0x76, 0xd6, 0x65, 0xfb, 0x84,
96283 - 0x8b, 0x15, 0xba, 0x7e, 0x94, 0x75, 0xfe, 0xe8, 0x7a, 0x6a, 0xf0, 0x4e,
96284 - 0xa1, 0x58, 0x5f, 0xa9, 0x79, 0xbd, 0x7c, 0xf5, 0xb1, 0xfe, 0x59, 0x62,
96285 - 0xdd, 0xb8, 0xce, 0x2d, 0x03, 0x33, 0xfe, 0x25, 0xb5, 0x3d, 0x99, 0x65,
96286 - 0xad, 0x9b, 0xc7, 0xbc, 0xaa, 0xe6, 0x13, 0x5a, 0x74, 0x6e, 0xcd, 0xab,
96287 - 0xe5, 0x93, 0x85, 0x33, 0x8c, 0xdd, 0xe1, 0xff, 0x73, 0x5d, 0xb2, 0x90,
96288 - 0x38, 0x60, 0xa0, 0xa5, 0x23, 0x8a, 0x6b, 0x96, 0xb6, 0x39, 0xcd, 0x88,
96289 - 0xe2, 0x26, 0xdf, 0x41, 0x13, 0x31, 0xb1, 0x9f, 0x39, 0x85, 0xf9, 0xd5,
96290 - 0x5c, 0x5b, 0xa9, 0xeb, 0x55, 0x2d, 0xd7, 0xf2, 0xa5, 0x04, 0x6b, 0x93,
96291 - 0xae, 0x05, 0xbd, 0xac, 0x05, 0x16, 0x0e, 0x95, 0xb5, 0x6f, 0x1d, 0xbc,
96292 - 0x4b, 0xce, 0x7e, 0xc5, 0xd7, 0xbe, 0x5d, 0x8c, 0x12, 0x73, 0xe3, 0x41,
96293 - 0xe6, 0xc6, 0xda, 0xf2, 0x25, 0xb5, 0xc6, 0xd3, 0xf5, 0x38, 0x64, 0x3d,
96294 - 0xb6, 0xc4, 0x4d, 0xe3, 0x72, 0xd0, 0x15, 0xa7, 0xee, 0x24, 0x36, 0x3b,
96295 - 0x1b, 0x0d, 0xa5, 0x5e, 0x4e, 0xa7, 0x42, 0xea, 0x98, 0xcc, 0xdd, 0x42,
96296 - 0xba, 0xef, 0x93, 0x9b, 0xd6, 0x9a, 0x51, 0x2c, 0xaf, 0xe5, 0x60, 0xb2,
96297 - 0x96, 0x83, 0x1e, 0x73, 0xd0, 0x6d, 0x45, 0xf8, 0x09, 0x6d, 0x6c, 0x63,
96298 - 0x0e, 0x6e, 0xa3, 0x4e, 0xfd, 0x7e, 0xa9, 0xc2, 0xfb, 0x99, 0x15, 0x22,
96299 - 0x35, 0x73, 0x9e, 0xf9, 0xe4, 0x5e, 0xe6, 0x51, 0xaf, 0xb5, 0x65, 0xce,
96300 - 0x33, 0x66, 0xab, 0x6b, 0xf9, 0xb4, 0xbb, 0xc6, 0xfb, 0x0f, 0xd4, 0xf2,
96301 - 0x69, 0xf5, 0x97, 0xf2, 0x49, 0xf3, 0xd3, 0x0b, 0xbf, 0x43, 0xab, 0xd6,
96302 - 0x22, 0x79, 0xa1, 0xef, 0x97, 0xb3, 0x10, 0xfe, 0xd8, 0xd7, 0x67, 0xd9,
96303 - 0xb0, 0x82, 0xc6, 0x0a, 0xdf, 0x58, 0x41, 0x28, 0x7a, 0x59, 0x3b, 0x6d,
96304 - 0x2f, 0x2f, 0xb2, 0xf4, 0x9d, 0x5e, 0xb7, 0x96, 0xb1, 0xd8, 0x99, 0xfe,
96305 - 0x05, 0xce, 0xb6, 0x2a, 0xd5, 0x97, 0xbe, 0xa4, 0xde, 0x60, 0x5c, 0x62,
96306 - 0xd4, 0x1f, 0xeb, 0x27, 0xb3, 0xa2, 0x7f, 0x52, 0xfb, 0xa6, 0x11, 0x11,
96307 - 0x6f, 0xad, 0x58, 0x35, 0x09, 0xdc, 0x43, 0x3d, 0x73, 0x8e, 0x7e, 0x59,
96308 - 0xe3, 0xcb, 0xa1, 0x35, 0xbc, 0xdb, 0x19, 0xdf, 0xc2, 0xc3, 0xe5, 0xaa,
96309 - 0x7f, 0xf6, 0x95, 0x65, 0x66, 0x1a, 0x23, 0x58, 0xc3, 0x9a, 0x76, 0x98,
96310 - 0x7c, 0xf1, 0x6f, 0xc9, 0x28, 0x5e, 0x24, 0x5f, 0xbc, 0xc4, 0xfb, 0x1d,
96311 - 0xaa, 0xde, 0xcf, 0x9f, 0x45, 0x2a, 0x73, 0x5a, 0xf3, 0x05, 0xb5, 0xf7,
96312 - 0xa1, 0x72, 0x9b, 0x7f, 0x9a, 0x78, 0x7c, 0xb0, 0x24, 0x07, 0xfa, 0x78,
96313 - 0x47, 0xbb, 0x5b, 0xce, 0x0e, 0x0a, 0x81, 0x8d, 0x49, 0x38, 0x66, 0xa0,
96314 - 0xef, 0xe1, 0x52, 0xe3, 0x66, 0xe8, 0x87, 0x02, 0xfa, 0x78, 0xd7, 0x95,
96315 - 0xac, 0x71, 0x8f, 0x95, 0xbf, 0xa4, 0xeb, 0xb0, 0xad, 0xa4, 0xb9, 0x4a,
96316 - 0xa9, 0x8e, 0xb4, 0xd6, 0x4a, 0x79, 0x71, 0xb3, 0xe6, 0x94, 0x48, 0x14,
96317 - 0xca, 0x6f, 0x4b, 0x2c, 0x61, 0xec, 0xf3, 0xc4, 0xd7, 0xbb, 0x5e, 0x3d,
96318 - 0x79, 0x21, 0x24, 0xaf, 0xf7, 0x90, 0xb7, 0x7b, 0x45, 0x5f, 0x85, 0xcf,
96319 - 0xb3, 0x22, 0x3b, 0x69, 0x8b, 0x1e, 0x6a, 0x94, 0x0d, 0xcc, 0x33, 0x77,
96320 - 0xe1, 0x3c, 0x62, 0x4a, 0xe3, 0xca, 0xc0, 0x0f, 0xfc, 0xb5, 0xe4, 0xfc,
96321 - 0x1b, 0xe8, 0x2b, 0xf2, 0x52, 0x05, 0x8b, 0x37, 0x50, 0x27, 0x55, 0xb1,
96322 - 0xf8, 0x43, 0x62, 0x31, 0x57, 0xc3, 0x62, 0x24, 0x48, 0x92, 0xef, 0x3e,
96323 - 0xc7, 0x62, 0xef, 0x1f, 0xe0, 0xf7, 0x2f, 0x62, 0x6e, 0xbd, 0xe6, 0xf7,
96324 - 0xc8, 0x1c, 0xe6, 0x58, 0x9f, 0x3b, 0x02, 0xf2, 0xb0, 0xc6, 0x9b, 0x8d,
96325 - 0xbe, 0x47, 0xeb, 0xb1, 0xe1, 0xd1, 0x18, 0x6e, 0x7e, 0x54, 0xa9, 0xd7,
96326 - 0x7c, 0x78, 0x2d, 0xe4, 0xa2, 0x5f, 0xa4, 0x27, 0x70, 0xa6, 0x25, 0xe9,
96327 - 0xee, 0x83, 0xee, 0xa3, 0x7a, 0xad, 0xdb, 0x8b, 0x5a, 0xa3, 0x84, 0xd4,
96328 - 0x28, 0xb2, 0xff, 0x7d, 0xe6, 0xfa, 0xa6, 0xa4, 0xcc, 0xef, 0xac, 0x70,
96329 - 0x7f, 0xca, 0xa7, 0x16, 0xdf, 0x6b, 0x98, 0x32, 0xdb, 0x6e, 0x54, 0xb1,
96330 - 0x76, 0x4d, 0x0d, 0x6b, 0x5f, 0x9b, 0xb2, 0xf1, 0x4b, 0xd6, 0x85, 0xcd,
96331 - 0xe9, 0x28, 0x56, 0xeb, 0x1a, 0xef, 0xe8, 0x5e, 0x2a, 0x8a, 0x7e, 0xc6,
96332 - 0xc5, 0x58, 0xaa, 0xa8, 0x37, 0xa8, 0x3b, 0x18, 0xcb, 0x55, 0xec, 0xa7,
96333 - 0xce, 0x50, 0x9f, 0xdc, 0x68, 0x56, 0x7b, 0xa9, 0xd1, 0x9a, 0x3e, 0xb9,
96334 - 0xb1, 0xac, 0xf3, 0xd1, 0x25, 0x06, 0xa2, 0x38, 0xcd, 0x35, 0x7b, 0xfc,
96335 - 0xaa, 0x3e, 0x79, 0x1d, 0xa9, 0xac, 0xd6, 0x27, 0x2e, 0x79, 0xbf, 0x54,
96336 - 0xd1, 0x27, 0x5a, 0x8f, 0x68, 0x2d, 0xa2, 0xfb, 0x85, 0x6e, 0xf6, 0x0b,
96337 - 0x72, 0x5a, 0xeb, 0x15, 0xa3, 0x5b, 0xfa, 0x86, 0x19, 0x61, 0x8d, 0xcc,
96338 - 0x30, 0x96, 0x97, 0x61, 0xd7, 0x23, 0x4d, 0x8c, 0x45, 0x23, 0x76, 0x38,
96339 - 0x2b, 0xac, 0x25, 0x9e, 0xe6, 0x4f, 0x6a, 0x90, 0xdf, 0xd3, 0x2e, 0x47,
96340 - 0x35, 0xc7, 0x32, 0xfe, 0x73, 0xe3, 0xff, 0x5e, 0x1b, 0xd7, 0xf3, 0xb3,
96341 - 0xac, 0xd1, 0x7a, 0xcd, 0x8f, 0xac, 0x2a, 0xee, 0xd1, 0xdc, 0xe4, 0xfd,
96342 - 0x19, 0x2e, 0xd0, 0xc6, 0x37, 0xbf, 0x14, 0x47, 0x9b, 0x79, 0xa1, 0xe3,
96343 - 0xf8, 0x09, 0xd7, 0xea, 0x78, 0xdb, 0x78, 0x87, 0x3e, 0x3e, 0x47, 0x1f,
96344 - 0xff, 0xf2, 0xd1, 0x80, 0xdc, 0x84, 0x4f, 0x0d, 0xfa, 0x78, 0x3b, 0x71,
96345 - 0xf3, 0x63, 0xff, 0x7a, 0xb4, 0xb7, 0x26, 0xdd, 0x0f, 0xcc, 0xb9, 0x7a,
96346 - 0x0b, 0x7b, 0x09, 0x7d, 0xa7, 0xe8, 0x67, 0xdd, 0xeb, 0x1c, 0xa3, 0x7f,
96347 - 0x99, 0xcb, 0x15, 0x0d, 0xd2, 0x6e, 0x56, 0xfd, 0xdb, 0x51, 0xf3, 0x6f,
96348 - 0x66, 0x6a, 0x1b, 0xcf, 0xd1, 0xf5, 0x54, 0xeb, 0xd1, 0xfb, 0x2b, 0xfd,
96349 - 0x92, 0x19, 0xdc, 0x5a, 0x89, 0x55, 0x5d, 0x90, 0xb7, 0x5e, 0x2c, 0xea,
96350 - 0x9a, 0xdd, 0xcf, 0x9a, 0xcd, 0x9e, 0xc9, 0x94, 0x83, 0x83, 0x48, 0x4d,
96351 - 0x73, 0xaf, 0xbd, 0xa7, 0x91, 0x0a, 0xd9, 0x4f, 0x0d, 0x9d, 0x67, 0xef,
96352 - 0x93, 0x31, 0x64, 0x6e, 0xa6, 0xa2, 0x27, 0x6f, 0xad, 0xd5, 0xe9, 0xfe,
96353 - 0x9a, 0xae, 0xbc, 0xbf, 0x76, 0x4e, 0x9e, 0xba, 0x72, 0xee, 0x1c, 0x7d,
96354 - 0x97, 0xcb, 0x2d, 0xfd, 0xac, 0xfb, 0x80, 0x37, 0xfc, 0x9f, 0x29, 0x2c,
96355 - 0x6c, 0xac, 0xe8, 0x8e, 0xcf, 0xef, 0x6c, 0x89, 0x8d, 0xe3, 0x17, 0x55,
96356 - 0xa6, 0xe3, 0x2e, 0x13, 0xf5, 0x4a, 0x59, 0xcb, 0x42, 0x14, 0x4b, 0x33,
96357 - 0xaa, 0x18, 0x97, 0x05, 0x0d, 0xca, 0x96, 0xe0, 0x6e, 0xc6, 0x07, 0xb6,
96358 - 0x15, 0x0c, 0x5a, 0x23, 0x45, 0x39, 0xc4, 0x5e, 0x2e, 0xcf, 0x3e, 0x2c,
96359 - 0xdc, 0x0f, 0xad, 0x6f, 0xf5, 0x79, 0x77, 0xeb, 0x3e, 0x8e, 0xef, 0x83,
96360 - 0xb4, 0x67, 0xee, 0xdc, 0x10, 0x8f, 0x95, 0xfe, 0x4a, 0x3d, 0x16, 0x97,
96361 - 0x39, 0xbd, 0x47, 0x84, 0x73, 0x9e, 0xa8, 0xe8, 0xe7, 0x41, 0xad, 0x9f,
96362 - 0x5d, 0x8d, 0xc7, 0x31, 0x4f, 0xce, 0x9e, 0x40, 0x6a, 0xe0, 0x82, 0x29,
96363 - 0xfb, 0x63, 0xd4, 0xcc, 0xeb, 0x6a, 0x7b, 0xad, 0xa8, 0xed, 0xd5, 0x36,
96364 - 0xf5, 0x10, 0xed, 0xd6, 0x78, 0xac, 0xd6, 0x37, 0x23, 0x88, 0xa1, 0x69,
96365 - 0xd4, 0x63, 0x8d, 0x4f, 0xe6, 0x8e, 0xb0, 0xce, 0xc4, 0x8e, 0xef, 0xa8,
96366 - 0xd8, 0xfb, 0xba, 0xff, 0xa4, 0x59, 0xc9, 0xef, 0x13, 0xba, 0x4e, 0x58,
96367 - 0xb0, 0x58, 0x77, 0xae, 0x1c, 0x93, 0xe1, 0x16, 0xf1, 0x91, 0x5a, 0x92,
96368 - 0xf4, 0x12, 0xab, 0x85, 0xd6, 0x3e, 0x49, 0x6a, 0x9f, 0x18, 0x32, 0x27,
96369 - 0xfe, 0x85, 0xf6, 0x69, 0xfd, 0xa6, 0x6b, 0xa1, 0x83, 0x96, 0x51, 0xaf,
96370 - 0xb3, 0xcd, 0x48, 0x52, 0x3b, 0x3b, 0x68, 0xfe, 0x6c, 0x3f, 0x4b, 0xac,
96371 - 0xe2, 0x3e, 0x75, 0x07, 0x1c, 0x5c, 0x33, 0x26, 0x9d, 0xa3, 0xb8, 0x40,
96372 - 0x0e, 0xf7, 0x06, 0xb5, 0x4e, 0xbc, 0x3a, 0x9d, 0x64, 0x4d, 0x77, 0xd0,
96373 - 0xf5, 0xd9, 0x3e, 0x31, 0xd4, 0x8d, 0xe9, 0xb3, 0x0b, 0xd3, 0x26, 0xe3,
96374 - 0xe4, 0x98, 0x47, 0x39, 0xee, 0xa2, 0xfd, 0x44, 0x23, 0xfb, 0x2d, 0xa5,
96375 - 0xfa, 0x59, 0x0f, 0x2c, 0xd6, 0xdc, 0x5e, 0xb4, 0x0f, 0x8e, 0x88, 0xd4,
96376 - 0x40, 0x23, 0x52, 0xfd, 0x31, 0x78, 0xce, 0x3a, 0xa1, 0x7f, 0x63, 0x98,
96377 - 0xd3, 0x24, 0xc0, 0xe3, 0xc5, 0x3f, 0xe7, 0xba, 0xa4, 0xb3, 0x85, 0x18,
96378 - 0x6b, 0xf9, 0xd3, 0x54, 0xbe, 0x05, 0xa9, 0x21, 0x07, 0x9e, 0xfb, 0x3a,
96379 - 0xe7, 0x15, 0xbe, 0x30, 0xef, 0xd9, 0xca, 0x3c, 0xfa, 0xe2, 0x7a, 0xad,
96380 - 0xb5, 0x94, 0x7a, 0x82, 0x7a, 0xab, 0xe0, 0x68, 0xce, 0x11, 0x18, 0xf6,
96381 - 0xf5, 0x9e, 0x3d, 0xae, 0x05, 0x99, 0xb8, 0x03, 0x9f, 0xa8, 0x42, 0x3c,
96382 - 0xec, 0x8c, 0x54, 0x7e, 0x97, 0x90, 0x4e, 0x8e, 0xdc, 0x36, 0x5d, 0xed,
96383 - 0xb3, 0xd8, 0x17, 0x29, 0xf5, 0x22, 0xb9, 0xe9, 0x09, 0x6a, 0x9f, 0xe1,
96384 - 0xa9, 0x4f, 0xd4, 0x34, 0xb5, 0xcd, 0x88, 0xa7, 0xe7, 0x55, 0x39, 0xe8,
96385 - 0xb0, 0xa3, 0xd4, 0xe3, 0xfc, 0x6e, 0xcf, 0xd4, 0x1c, 0x2f, 0xf1, 0x3c,
96386 - 0x72, 0xc2, 0xed, 0xde, 0x7f, 0xab, 0xcd, 0x5f, 0x9a, 0xab, 0xd4, 0x18,
96387 - 0x6d, 0x78, 0xcb, 0xc7, 0xfd, 0x11, 0x24, 0x73, 0xb3, 0xf4, 0xcf, 0x99,
96388 - 0xe5, 0xb2, 0x7f, 0x8a, 0xf7, 0x5c, 0x2f, 0x64, 0x96, 0x77, 0xec, 0x9d,
96389 - 0x07, 0xcd, 0xb5, 0x92, 0xf9, 0x60, 0x78, 0x75, 0x7c, 0xfe, 0x99, 0x2f,
96390 - 0x13, 0x47, 0xf8, 0xbe, 0x39, 0xa3, 0xf7, 0x50, 0xaa, 0xc7, 0xd7, 0x3d,
96391 - 0xfe, 0x08, 0x7b, 0xfc, 0x82, 0x6a, 0xf0, 0xde, 0x50, 0xcf, 0x75, 0xc8,
96392 - 0xfe, 0x11, 0xe1, 0x71, 0xad, 0xcb, 0xba, 0xa0, 0xfb, 0xaa, 0x11, 0xf6,
96393 - 0x55, 0x2e, 0x9e, 0x26, 0xc7, 0x9c, 0x2c, 0x77, 0xe2, 0xf9, 0xb2, 0x87,
96394 - 0x67, 0x58, 0x3f, 0x9e, 0x2a, 0x5b, 0xd8, 0xfa, 0x88, 0xcc, 0x58, 0x62,
96395 - 0x27, 0xce, 0xfb, 0xd2, 0xf9, 0x1e, 0xed, 0x36, 0x03, 0xb9, 0x7f, 0x25,
96396 - 0x79, 0x85, 0x67, 0x14, 0x72, 0x66, 0x8b, 0xb0, 0x03, 0x1b, 0xdf, 0xe9,
96397 - 0x30, 0x70, 0x38, 0x3e, 0x84, 0xbe, 0xf6, 0xbb, 0xf9, 0xb2, 0xd0, 0x7a,
96398 - 0x40, 0xd7, 0x6a, 0xdd, 0x6f, 0x34, 0xe3, 0x4e, 0xf2, 0xd9, 0xd5, 0x4b,
96399 - 0x43, 0xfc, 0x3a, 0xdd, 0xd6, 0xf9, 0x92, 0xa0, 0x66, 0x68, 0x91, 0x59,
96400 - 0xe0, 0xa7, 0xd8, 0xc8, 0x7e, 0x21, 0xb3, 0x6c, 0x7f, 0xad, 0x37, 0xff,
96401 - 0x29, 0x56, 0xea, 0x3e, 0xc3, 0x6f, 0x66, 0xbd, 0xab, 0xc6, 0xe1, 0x70,
96402 - 0xc5, 0x8f, 0x06, 0x9a, 0x0e, 0x16, 0x54, 0xbd, 0x27, 0x73, 0x93, 0x15,
96403 - 0x1d, 0xb5, 0xd0, 0xb9, 0x91, 0x7d, 0x40, 0xc3, 0x01, 0xcf, 0x5d, 0x27,
96404 - 0x14, 0x63, 0xb1, 0x9b, 0xb1, 0x48, 0x86, 0x31, 0xb6, 0xdb, 0xcd, 0x41,
96405 - 0x32, 0x6c, 0x16, 0x79, 0x71, 0x8b, 0xae, 0xb1, 0x75, 0xf5, 0xec, 0xbf,
96406 - 0x59, 0x53, 0x27, 0x0d, 0xf6, 0x23, 0xba, 0x1f, 0x8f, 0x62, 0x2a, 0xdd,
96407 - 0xc6, 0x3e, 0x29, 0x8a, 0xed, 0xe9, 0x1e, 0xea, 0x1a, 0x03, 0xc6, 0xc1,
96408 - 0x4b, 0x6a, 0xe5, 0x17, 0xfa, 0x88, 0x4d, 0xe3, 0x9a, 0xc3, 0x6c, 0xb1,
96409 - 0x91, 0xf9, 0x9b, 0x59, 0x46, 0xb1, 0x76, 0x8b, 0xee, 0xe1, 0xf5, 0x1d,
96410 - 0x1c, 0xf6, 0xc7, 0x06, 0xa6, 0x17, 0x38, 0xd8, 0xd5, 0x2d, 0x13, 0x05,
96411 - 0xe8, 0x5c, 0xfe, 0x6a, 0x4d, 0x81, 0x93, 0xfd, 0xbd, 0x3a, 0x03, 0x67,
96412 - 0x03, 0x6d, 0x91, 0x75, 0x4a, 0xb5, 0xa6, 0x4d, 0xe4, 0x2a, 0xf5, 0x26,
96413 - 0xe1, 0x64, 0xd9, 0xff, 0xcd, 0x4c, 0xb1, 0x27, 0x3b, 0xa8, 0xd4, 0x4e,
96414 - 0x62, 0xe9, 0xe3, 0x8e, 0xe1, 0x43, 0xec, 0xc4, 0xf7, 0xb6, 0xb2, 0xb7,
96415 - 0xfa, 0x3a, 0xdb, 0xb7, 0xb7, 0x8a, 0xdf, 0x24, 0x7f, 0x1b, 0xdd, 0x09,
96416 - 0xe8, 0x7e, 0xa7, 0xa0, 0x22, 0x9e, 0x37, 0xfb, 0x38, 0xb5, 0xe0, 0x6f,
96417 - 0x96, 0x75, 0xc1, 0x9d, 0x5f, 0xf5, 0xd5, 0x6a, 0x6a, 0xa9, 0x8f, 0xc8,
96418 - 0xf9, 0x61, 0xe5, 0x73, 0xcc, 0x59, 0x37, 0x7e, 0x49, 0x6d, 0xa6, 0x6f,
96419 - 0x7a, 0xaa, 0x76, 0x59, 0xf5, 0x01, 0x9b, 0xc4, 0x6b, 0xe1, 0xac, 0xf9,
96420 - 0x03, 0x36, 0x7d, 0x5e, 0xef, 0x62, 0xce, 0x9a, 0xf1, 0xc5, 0xb4, 0x51,
96421 - 0xba, 0xd3, 0x15, 0xfc, 0xf8, 0xf8, 0xc8, 0x1b, 0x4e, 0xcc, 0x47, 0xa1,
96422 - 0x93, 0x39, 0x36, 0xfb, 0x4f, 0x1c, 0x6b, 0x5f, 0x0a, 0xfc, 0xa6, 0xfc,
96423 - 0x5d, 0xf2, 0xbe, 0xd1, 0xd5, 0x82, 0xc2, 0x0c, 0x6d, 0x3c, 0xf4, 0x75,
96424 - 0x62, 0x32, 0x3f, 0x86, 0xfb, 0xd8, 0x46, 0xe0, 0x59, 0xd6, 0xdb, 0x63,
96425 - 0xe4, 0x8c, 0xe6, 0xb4, 0x83, 0x32, 0x9f, 0x8f, 0x94, 0x92, 0x83, 0xa7,
96426 - 0x99, 0xb7, 0xc7, 0xf9, 0x7c, 0x94, 0xf7, 0xdc, 0x4a, 0x7d, 0x77, 0xef,
96427 - 0x78, 0x3d, 0xbe, 0x3d, 0x1e, 0xc3, 0xd6, 0xf1, 0x80, 0x9a, 0x02, 0xb7,
96428 - 0x35, 0x72, 0xdf, 0x57, 0x89, 0xe7, 0xcd, 0x4b, 0xaf, 0xc3, 0x5a, 0x27,
96429 - 0xe9, 0xde, 0xcd, 0xdc, 0xab, 0x3b, 0x08, 0xc7, 0x21, 0x8e, 0xfe, 0xd9,
96430 - 0x5b, 0x2e, 0xd0, 0x44, 0xbd, 0xbf, 0xd4, 0x12, 0xeb, 0xc7, 0x57, 0x57,
96431 - 0x9e, 0x47, 0xd2, 0x79, 0x6a, 0x0b, 0x62, 0xb2, 0x44, 0x4c, 0x32, 0x36,
96432 - 0x4f, 0x97, 0x88, 0x4b, 0x6a, 0xc3, 0x93, 0x25, 0x8d, 0x6d, 0x1f, 0xcf,
96433 - 0x75, 0x0c, 0xa9, 0x2a, 0x56, 0x3e, 0x55, 0x4f, 0x78, 0xaf, 0x45, 0x50,
96434 - 0x6f, 0xe9, 0xdf, 0x76, 0xf0, 0x66, 0x31, 0xe1, 0x6c, 0x28, 0x6b, 0x3c,
96435 - 0xfc, 0x6d, 0x0d, 0x0f, 0x6f, 0x47, 0xaa, 0xfa, 0x44, 0xce, 0x4c, 0x42,
96436 - 0x73, 0xdd, 0x62, 0xe7, 0xa6, 0xd2, 0xf0, 0x34, 0x7d, 0x9f, 0xa7, 0xc6,
96437 - 0x76, 0xdf, 0x67, 0xc8, 0xc7, 0xa6, 0x8c, 0x2e, 0xf6, 0xd4, 0xf4, 0x87,
96438 - 0xbe, 0x33, 0xf3, 0x37, 0x2d, 0x3b, 0x75, 0x4c, 0x8e, 0x17, 0x71, 0x2b,
96439 - 0xfb, 0x1e, 0x3f, 0x44, 0xf5, 0x6e, 0x53, 0xbc, 0xf3, 0x43, 0xbc, 0xf3,
96440 - 0x0f, 0xf9, 0x3c, 0x51, 0x4a, 0x66, 0x7b, 0x78, 0xe7, 0x27, 0xf9, 0x3c,
96441 - 0x59, 0x6a, 0xad, 0xd3, 0x67, 0x4c, 0x4e, 0x85, 0xac, 0x03, 0x2f, 0xab,
96442 - 0x52, 0xbc, 0x12, 0x0e, 0xf6, 0xc0, 0x06, 0x1a, 0x0e, 0xce, 0xf1, 0xb3,
96443 - 0xfe, 0x6d, 0x49, 0xd7, 0x38, 0xcd, 0xf9, 0x83, 0xba, 0x26, 0x67, 0xae,
96444 - 0x14, 0x97, 0xd4, 0x47, 0x9e, 0x0c, 0x9f, 0xc6, 0x29, 0x35, 0x1f, 0xa9,
96445 - 0x99, 0xf9, 0x42, 0x4e, 0xaf, 0x30, 0xa4, 0xbb, 0xc8, 0xac, 0x72, 0x75,
96446 - 0x67, 0x8d, 0xab, 0xbd, 0xa9, 0x1b, 0xeb, 0xaa, 0x77, 0x48, 0x39, 0x47,
96447 - 0x30, 0x8f, 0xd8, 0xd7, 0x35, 0x55, 0xf3, 0x8f, 0xfe, 0x4c, 0x7d, 0x67,
96448 - 0x85, 0x09, 0x93, 0x7e, 0x08, 0x6f, 0xd5, 0x63, 0xd1, 0xda, 0x6f, 0x3e,
96449 - 0x29, 0x5f, 0xf7, 0x82, 0xd3, 0xf1, 0x1e, 0x7e, 0xa7, 0x7b, 0xc1, 0x4f,
96450 - 0x54, 0x2e, 0xde, 0xf3, 0x19, 0x67, 0x15, 0xd0, 0x45, 0xed, 0xf1, 0x3e,
96451 - 0x39, 0xa1, 0x83, 0x2a, 0x4a, 0xe0, 0x14, 0xfb, 0xb0, 0x23, 0x5d, 0x49,
96452 - 0x67, 0x17, 0xf7, 0x0b, 0x1d, 0x87, 0x5c, 0xb0, 0x93, 0x3a, 0x93, 0x73,
96453 - 0xca, 0x1d, 0x5c, 0xa3, 0xb9, 0xf0, 0x3e, 0xfa, 0xe6, 0xb7, 0xed, 0x96,
96454 - 0xe7, 0x63, 0x57, 0xe9, 0x39, 0xc3, 0xf2, 0xb4, 0x5f, 0x52, 0x99, 0x5d,
96455 - 0xb4, 0xe7, 0x2c, 0xed, 0x89, 0x78, 0x21, 0xb9, 0x31, 0x55, 0x59, 0x5f,
96456 - 0xb0, 0xb4, 0x1d, 0x15, 0x7b, 0x38, 0xa6, 0x39, 0x4f, 0xf6, 0x9f, 0x62,
96457 - 0x8d, 0xdd, 0x02, 0xfd, 0x3b, 0x85, 0xb6, 0xa1, 0x2d, 0xb1, 0x85, 0xf6,
96458 - 0x1c, 0x8e, 0x57, 0xf8, 0x94, 0xdf, 0xf1, 0xbc, 0x92, 0xb1, 0xbe, 0x9e,
96459 - 0x78, 0xbf, 0x22, 0x9d, 0x60, 0x6c, 0xbb, 0xa8, 0xef, 0xab, 0x71, 0xde,
96460 - 0x57, 0xc1, 0xf2, 0xff, 0x00, 0xb0, 0x60, 0x72, 0xf9, 0x60, 0x17, 0x00,
96461 - 0x00, 0x00 };
96462 + 0xbd, 0x59, 0x6d, 0x70, 0x5b, 0x55, 0x7a, 0x7e, 0xae, 0x74, 0x25, 0x5d,
96463 + 0xdb, 0xb2, 0x75, 0x8d, 0x95, 0x20, 0xb7, 0x2e, 0xd6, 0x8d, 0xaf, 0x6c,
96464 + 0x11, 0xb9, 0xe1, 0x2a, 0x36, 0x45, 0x19, 0xee, 0x94, 0x1b, 0x7f, 0x21,
96465 + 0x92, 0x10, 0x94, 0x42, 0x5b, 0x67, 0x96, 0x19, 0x4c, 0xe2, 0x4d, 0x4c,
96466 + 0x08, 0x6c, 0xba, 0xcb, 0x4c, 0xdd, 0xd9, 0x4c, 0x23, 0xfc, 0x15, 0x93,
96467 + 0xc8, 0x16, 0x6b, 0x20, 0x26, 0x3b, 0x3b, 0x43, 0xc6, 0xf9, 0x70, 0x0a,
96468 + 0x72, 0x14, 0xda, 0x3f, 0x3b, 0xd3, 0x65, 0xf0, 0x6c, 0x12, 0x12, 0x58,
96469 + 0xd8, 0xb4, 0xd3, 0x3f, 0xc9, 0xf4, 0xc7, 0x7a, 0x21, 0xa1, 0x81, 0x42,
96470 + 0x36, 0xed, 0x0c, 0x9d, 0x50, 0x68, 0x4e, 0x9f, 0x73, 0x25, 0x07, 0x13,
96471 + 0xb2, 0xfd, 0xd9, 0xcc, 0x08, 0x4b, 0xe7, 0xde, 0x73, 0xce, 0x7b, 0xce,
96472 + 0xfb, 0x3c, 0xcf, 0xfb, 0x9c, 0xc3, 0x0a, 0x05, 0x95, 0x28, 0xff, 0xab,
96473 + 0xe6, 0xa7, 0xfd, 0xc9, 0x5d, 0xcf, 0xad, 0x5e, 0xd5, 0xbe, 0x8a, 0x5f,
96474 + 0x57, 0x2b, 0xcb, 0x55, 0x15, 0xff, 0x8f, 0xff, 0xbc, 0x80, 0xbe, 0x18,
96475 + 0x87, 0xfc, 0x40, 0xf3, 0xd8, 0xf3, 0x77, 0x75, 0x98, 0xd0, 0xbc, 0xf6,
96476 + 0x63, 0x4d, 0x5b, 0x4d, 0xc0, 0x29, 0x24, 0xa2, 0x9d, 0xf8, 0x1f, 0x91,
96477 + 0x0d, 0xab, 0x90, 0xed, 0x7f, 0x64, 0x7f, 0x7d, 0xcf, 0x5b, 0xf7, 0x19,
96478 + 0xd7, 0x0e, 0x79, 0xa1, 0xe9, 0xf6, 0xb8, 0xaa, 0x37, 0x43, 0x6b, 0x60,
96479 + 0x9f, 0x9f, 0xb5, 0xf4, 0xfb, 0x50, 0xb3, 0x38, 0x16, 0x70, 0x38, 0x67,
96480 + 0x58, 0xdb, 0x90, 0xd0, 0x4f, 0x41, 0x85, 0xc3, 0x39, 0x8e, 0x15, 0x80,
96481 + 0xbd, 0x39, 0x05, 0x97, 0x39, 0xe6, 0x68, 0x41, 0xc3, 0x82, 0xd7, 0x9d,
96482 + 0xae, 0xaf, 0xc2, 0x46, 0xc6, 0x9c, 0xd8, 0x23, 0x02, 0x26, 0xb2, 0x7f,
96483 + 0x60, 0x9b, 0xf1, 0xbd, 0x08, 0xa6, 0x66, 0xda, 0x91, 0x59, 0x31, 0xa7,
96484 + 0x61, 0x73, 0xbe, 0xa1, 0x4f, 0xb3, 0xc1, 0x77, 0x14, 0xa4, 0xee, 0xd3,
96485 + 0xd0, 0x5b, 0x8c, 0x23, 0x5b, 0xcc, 0xc2, 0x29, 0x8e, 0xf0, 0xa3, 0x21,
96486 + 0x30, 0xa1, 0x69, 0xf7, 0x4c, 0x2c, 0x97, 0xef, 0x20, 0x38, 0x71, 0x4d,
96487 + 0x5c, 0x4d, 0xea, 0x78, 0x6f, 0x8d, 0x10, 0xd5, 0x36, 0xb2, 0x55, 0xed,
96488 + 0x59, 0x78, 0x6d, 0xc3, 0x5a, 0xef, 0x55, 0xd0, 0xf5, 0xc7, 0x66, 0x7c,
96489 + 0x42, 0x79, 0xf4, 0x51, 0x8f, 0x0d, 0x4d, 0xb1, 0xa3, 0x6a, 0x53, 0xa1,
96490 + 0x01, 0x63, 0x45, 0x1d, 0x7b, 0x8b, 0x61, 0x8c, 0x14, 0xb1, 0xdb, 0x7b,
96491 + 0xaf, 0x1f, 0x33, 0x3a, 0x9c, 0xef, 0xb5, 0xec, 0xc6, 0x8e, 0xdc, 0x20,
96492 + 0xb6, 0xe6, 0x52, 0xd8, 0x57, 0x94, 0x31, 0x46, 0x31, 0x5c, 0x54, 0xe1,
96493 + 0x9f, 0x30, 0x22, 0xef, 0xe2, 0x76, 0xcf, 0x84, 0x18, 0xb1, 0x02, 0x18,
96494 + 0xb2, 0xe2, 0x18, 0xcd, 0x7b, 0xb8, 0xce, 0x00, 0x86, 0xcd, 0xeb, 0xa2,
96495 + 0xdf, 0x32, 0xac, 0x51, 0x88, 0xc6, 0xd3, 0x96, 0x11, 0xe9, 0xf2, 0xc2,
96496 + 0xf9, 0xb1, 0x19, 0xc1, 0x28, 0x63, 0x1f, 0x71, 0xfb, 0x8d, 0xa0, 0xeb,
96497 + 0x66, 0x3f, 0x87, 0xfd, 0x74, 0x8c, 0x7d, 0xbb, 0x6f, 0x74, 0x14, 0x89,
96498 + 0xc8, 0x18, 0x3c, 0xe8, 0x0b, 0xb7, 0xb2, 0x5f, 0x53, 0x74, 0x0c, 0x46,
96499 + 0x9c, 0xe3, 0x64, 0xfd, 0xed, 0x0e, 0xc7, 0xc8, 0xb2, 0xbf, 0x11, 0x3d,
96500 + 0x06, 0x39, 0x56, 0x03, 0x7f, 0xb7, 0xb3, 0xbf, 0x02, 0x8f, 0x1d, 0x8b,
96501 + 0x0e, 0xb1, 0xcf, 0x29, 0x4b, 0xc5, 0x19, 0x7e, 0xfa, 0x74, 0x43, 0x66,
96502 + 0x56, 0x09, 0xb0, 0x7d, 0x2f, 0xf8, 0xdc, 0xac, 0xc2, 0xa1, 0x8c, 0x85,
96503 + 0x21, 0xae, 0x5b, 0x63, 0xdb, 0x38, 0xdb, 0x7c, 0xa6, 0xc5, 0xf1, 0xa1,
96504 + 0x77, 0x15, 0x97, 0x62, 0x62, 0x31, 0x37, 0xbf, 0xaf, 0x9d, 0x63, 0xe4,
96505 + 0x4b, 0x39, 0x95, 0xef, 0x74, 0xe6, 0x6f, 0x88, 0x27, 0xd5, 0xa5, 0xcf,
96506 + 0x07, 0x95, 0x0e, 0xb6, 0x39, 0x6a, 0x03, 0xf6, 0xe6, 0xa1, 0xf9, 0x4d,
96507 + 0x8d, 0xf3, 0x68, 0xf8, 0x28, 0x37, 0xa8, 0xf4, 0x14, 0x1d, 0xa5, 0x7b,
96508 + 0xb6, 0x43, 0x71, 0x66, 0x55, 0xa5, 0x6b, 0x5a, 0xc6, 0x2d, 0xc4, 0x0b,
96509 + 0x96, 0xc2, 0x98, 0x7f, 0x22, 0xe3, 0x75, 0xa2, 0xca, 0x0d, 0xb1, 0x32,
96510 + 0xe6, 0x41, 0x95, 0xd9, 0xa3, 0xac, 0x9f, 0x15, 0x22, 0x9d, 0x4c, 0x2b,
96511 + 0xeb, 0x66, 0xa1, 0x05, 0x6d, 0x5b, 0xcd, 0x4d, 0xec, 0x43, 0x76, 0x99,
96512 + 0x89, 0x83, 0xf9, 0x28, 0x3e, 0xb0, 0x3c, 0x38, 0xb4, 0xac, 0x02, 0xaa,
96513 + 0xa9, 0xf0, 0x83, 0xe0, 0x79, 0x0b, 0x6a, 0x0d, 0xbf, 0x5f, 0xdd, 0xa4,
96514 + 0x62, 0xa4, 0x7d, 0x9d, 0xd2, 0xc5, 0x3e, 0x3e, 0xe6, 0xf9, 0x68, 0x2e,
96515 + 0x8d, 0x20, 0xb1, 0x53, 0x65, 0xc7, 0x22, 0x05, 0xee, 0xcd, 0x7b, 0x56,
96516 + 0x2c, 0xfe, 0xb4, 0xc4, 0x63, 0xad, 0x11, 0x91, 0x7b, 0x53, 0x6d, 0xc7,
96517 + 0xe2, 0x73, 0xdc, 0x07, 0xaf, 0xa9, 0xe2, 0xd7, 0x96, 0x0f, 0xf3, 0x9b,
96518 + 0x2c, 0xe6, 0x54, 0x87, 0x9f, 0xed, 0xc7, 0xdc, 0x76, 0xf9, 0x1b, 0x7a,
96519 + 0xf7, 0xb7, 0xf6, 0xa1, 0xb4, 0x07, 0xc3, 0xf9, 0x26, 0xc6, 0x5c, 0xda,
96520 + 0x83, 0x47, 0xb8, 0xde, 0xdf, 0xfa, 0xe4, 0xd7, 0xbb, 0x6e, 0xb6, 0x6d,
96521 + 0x66, 0x9c, 0x1e, 0xdb, 0x9c, 0x5f, 0xe1, 0xad, 0x07, 0xea, 0xda, 0xb1,
96522 + 0x8f, 0x39, 0xee, 0x4a, 0x2e, 0x47, 0xd6, 0x7d, 0x1e, 0xd6, 0xd7, 0x4f,
96523 + 0xd7, 0xa1, 0x6f, 0x99, 0xbb, 0x6f, 0xfa, 0xc6, 0x69, 0x21, 0xce, 0x24,
96524 + 0xfd, 0x98, 0x33, 0x87, 0x22, 0xd5, 0xc8, 0x5a, 0x5e, 0xe6, 0xfb, 0x2c,
96525 + 0xe7, 0x2f, 0x24, 0xbd, 0x38, 0x9c, 0x3c, 0x84, 0x6c, 0x2d, 0x30, 0x93,
96526 + 0x93, 0xbc, 0x32, 0xe6, 0xcf, 0xf2, 0xbf, 0x9e, 0xa2, 0x5c, 0x9f, 0xc5,
96527 + 0xf5, 0x29, 0x38, 0x66, 0x4a, 0x4c, 0x5b, 0x6a, 0x33, 0xf9, 0xb5, 0x83,
96528 + 0xfb, 0x59, 0xdf, 0x1e, 0x24, 0x3e, 0x81, 0x0f, 0x73, 0xfd, 0xd8, 0x5c,
96529 + 0x8a, 0x05, 0xd7, 0x73, 0x50, 0x7c, 0x6d, 0x69, 0x1c, 0x2a, 0xfd, 0x26,
96530 + 0xc7, 0xd3, 0x6a, 0x47, 0xce, 0xc8, 0xa4, 0x91, 0x38, 0xd7, 0xa1, 0xc8,
96531 + 0xfe, 0x69, 0x75, 0x65, 0xc1, 0x8f, 0x68, 0x5d, 0xe9, 0x79, 0x95, 0xbd,
96532 + 0x41, 0x7d, 0x7a, 0x42, 0xc1, 0xf6, 0x98, 0x7c, 0xb6, 0x41, 0x6d, 0x29,
96533 + 0x40, 0xab, 0xb6, 0x77, 0xa9, 0x73, 0x13, 0x46, 0xdf, 0x71, 0x25, 0x11,
96534 + 0x9d, 0x70, 0xfb, 0xec, 0x52, 0x5b, 0x0b, 0x01, 0xae, 0x27, 0xce, 0x9c,
96535 + 0x40, 0xab, 0xb1, 0x9f, 0x53, 0x7f, 0xcd, 0x07, 0xe7, 0xdc, 0x3e, 0xcf,
96536 + 0xa9, 0xf1, 0x82, 0x6c, 0x37, 0xac, 0xa8, 0x12, 0xc0, 0xdd, 0x49, 0x0d,
96537 + 0x2b, 0x5b, 0x44, 0x63, 0x77, 0xd2, 0x98, 0xef, 0xf6, 0x46, 0x70, 0x90,
96538 + 0x5c, 0x20, 0xee, 0x9c, 0x3f, 0x6c, 0x19, 0x41, 0x77, 0xd1, 0x8b, 0x68,
96539 + 0xad, 0x83, 0xfd, 0xf9, 0x00, 0x7e, 0x49, 0xfc, 0xf7, 0x58, 0x3a, 0x46,
96540 + 0xf2, 0x46, 0xfc, 0x57, 0x48, 0xa4, 0x8e, 0x30, 0x67, 0x0b, 0xe4, 0xc0,
96541 + 0xfe, 0x62, 0x53, 0xfc, 0x08, 0x8c, 0x81, 0x6e, 0x72, 0x40, 0x6b, 0x97,
96542 + 0x31, 0x40, 0x57, 0x6d, 0x72, 0xa7, 0xd8, 0x80, 0x1c, 0xf9, 0xd0, 0xed,
96543 + 0xf2, 0x6a, 0x50, 0xe9, 0x2a, 0xbe, 0x4f, 0x6d, 0xed, 0x21, 0xbe, 0x10,
96544 + 0x8a, 0x98, 0x7e, 0xa4, 0xea, 0xa2, 0x38, 0x4d, 0xac, 0x64, 0xc3, 0x15,
96545 + 0xcc, 0xa5, 0xcc, 0xe7, 0x45, 0x3e, 0x5f, 0xa7, 0x74, 0xce, 0x46, 0xf1,
96546 + 0x4b, 0xeb, 0x6b, 0xe1, 0x84, 0xab, 0xd9, 0xe6, 0x5b, 0xd2, 0xae, 0xe1,
96547 + 0xf2, 0xcb, 0x95, 0xf8, 0xf4, 0xe5, 0x20, 0xbe, 0x7c, 0x99, 0xfc, 0xce,
96548 + 0xa3, 0xbd, 0x12, 0x42, 0xa4, 0xda, 0x84, 0x28, 0x5a, 0xad, 0xf8, 0xa8,
96549 + 0x36, 0x16, 0xbd, 0x00, 0xa9, 0x8d, 0x8e, 0xba, 0x35, 0x67, 0xec, 0x1a,
96550 + 0x40, 0xc2, 0x39, 0xe5, 0xee, 0x85, 0xa3, 0xae, 0x2a, 0x9c, 0x16, 0xd8,
96551 + 0x54, 0xda, 0x0b, 0xbf, 0xdd, 0xa5, 0xbe, 0xc3, 0xdc, 0x9c, 0x77, 0x73,
96552 + 0xd3, 0xa5, 0xde, 0x53, 0xb8, 0xdf, 0x83, 0xca, 0xd2, 0x33, 0xd5, 0xce,
96553 + 0xa8, 0x23, 0x39, 0xa3, 0x77, 0x9c, 0xeb, 0xeb, 0x77, 0xfb, 0x66, 0xd4,
96554 + 0x04, 0xf7, 0x7e, 0xa1, 0x9c, 0x9b, 0x6a, 0xfb, 0x31, 0xee, 0x33, 0x73,
96555 + 0xef, 0xee, 0xe3, 0x63, 0xdc, 0x63, 0x39, 0xdf, 0xe0, 0x2d, 0xf3, 0x0d,
96556 + 0x72, 0xbe, 0xe3, 0x4b, 0xe6, 0xdb, 0xbd, 0x64, 0xbe, 0xdd, 0x4b, 0xe6,
96557 + 0x4b, 0x91, 0xab, 0xff, 0x22, 0x86, 0xc2, 0xa5, 0xb1, 0x55, 0x7b, 0xe0,
96558 + 0x96, 0xb9, 0x07, 0x38, 0xf7, 0x01, 0xb1, 0x90, 0x29, 0x8d, 0x53, 0x6d,
96559 + 0xef, 0x5c, 0x32, 0xf7, 0x4e, 0xce, 0xbd, 0x38, 0x8e, 0x4e, 0x2d, 0x12,
96560 + 0x62, 0xa3, 0x25, 0x84, 0x6a, 0x9b, 0x7a, 0x17, 0x9a, 0x33, 0x5d, 0xc4,
96561 + 0x4e, 0x25, 0x12, 0xf3, 0x1e, 0x98, 0x83, 0xf5, 0x5e, 0x1f, 0x16, 0x6a,
96562 + 0x17, 0xb9, 0x51, 0x5d, 0xfe, 0xfb, 0x9a, 0x02, 0x6a, 0xfd, 0x1b, 0xb9,
96563 + 0x10, 0xc7, 0x88, 0xe9, 0xfd, 0x8a, 0x10, 0xa7, 0xd6, 0x24, 0x06, 0xbc,
96564 + 0x48, 0xf4, 0xd5, 0xc0, 0x24, 0x86, 0x7c, 0x65, 0x2e, 0x2c, 0xed, 0x73,
96565 + 0xdc, 0xed, 0x53, 0x74, 0xfb, 0x08, 0xf1, 0xe1, 0xbd, 0x57, 0xc4, 0x5b,
96566 + 0x2d, 0x61, 0xbc, 0x4d, 0x4e, 0x9e, 0x2c, 0x2e, 0xea, 0x8a, 0xd4, 0x0d,
96567 + 0x78, 0x4e, 0x59, 0x7e, 0xc6, 0x34, 0xb4, 0xc3, 0xff, 0xad, 0xfe, 0x04,
96568 + 0x8c, 0x29, 0xdb, 0xbc, 0x78, 0x3d, 0x89, 0x27, 0x2b, 0x61, 0xf4, 0xee,
96569 + 0x53, 0xb2, 0xe9, 0x2a, 0x18, 0xce, 0x4a, 0x25, 0x9b, 0xd2, 0x20, 0x79,
96570 + 0xa3, 0x36, 0x1e, 0x35, 0x8d, 0xec, 0x65, 0xbe, 0xac, 0x4e, 0xde, 0x2e,
96571 + 0x06, 0x95, 0x63, 0x04, 0xf1, 0x6c, 0xfe, 0x7d, 0xcc, 0xfb, 0xa4, 0x86,
96572 + 0x49, 0xed, 0xe4, 0xc0, 0x27, 0xa4, 0x86, 0x05, 0x48, 0x44, 0x15, 0x7b,
96573 + 0xf2, 0x9e, 0xd3, 0x8d, 0x10, 0xf0, 0xb7, 0xf9, 0x70, 0xd1, 0x1c, 0xb6,
96574 + 0xea, 0xb1, 0x16, 0xe7, 0x5b, 0xb9, 0x07, 0xcb, 0x54, 0x44, 0x66, 0x96,
96575 + 0x8e, 0x15, 0xe1, 0x58, 0x11, 0x7c, 0x92, 0x13, 0xa2, 0xd2, 0x36, 0xe2,
96576 + 0x0b, 0x30, 0x19, 0x47, 0x04, 0x57, 0x0a, 0x5b, 0xfc, 0xa8, 0x09, 0x43,
96577 + 0x6d, 0x56, 0xb1, 0x3d, 0xaf, 0x29, 0xdd, 0x79, 0xe8, 0x5e, 0xdb, 0x8c,
96578 + 0x1e, 0xc6, 0x51, 0xc6, 0xc3, 0xba, 0x76, 0x4c, 0x55, 0x36, 0x4e, 0x07,
96579 + 0x50, 0x3d, 0xf5, 0x99, 0x78, 0x9f, 0x7a, 0xf8, 0xc6, 0xbd, 0xac, 0x17,
96580 + 0xc9, 0x00, 0xaa, 0xdc, 0xb9, 0x85, 0xf8, 0xb8, 0xad, 0x0e, 0x17, 0x39,
96581 + 0x5f, 0xf4, 0x2f, 0x03, 0xf0, 0x4e, 0x05, 0xe0, 0x9b, 0x52, 0x30, 0xd3,
96582 + 0x1e, 0x80, 0x67, 0x46, 0xfe, 0x56, 0x10, 0x30, 0xa7, 0xb1, 0x5d, 0x6f,
96583 + 0xc0, 0x78, 0x9e, 0x45, 0xda, 0xfc, 0x19, 0x06, 0xdc, 0xef, 0x2a, 0x9e,
96584 + 0xca, 0x6b, 0x08, 0x1d, 0x10, 0xa2, 0xd1, 0x16, 0x22, 0x96, 0xf4, 0x60,
96585 + 0xd6, 0x1c, 0x8e, 0x06, 0xb8, 0x8e, 0x61, 0x4b, 0x6a, 0x8e, 0x0f, 0xea,
96586 + 0x8c, 0x91, 0x39, 0xc7, 0xa8, 0x37, 0x4f, 0xa8, 0x4a, 0xef, 0xf4, 0x1e,
96587 + 0xc1, 0x98, 0xfa, 0x1e, 0xf0, 0x0a, 0x51, 0xd3, 0xd6, 0x34, 0x70, 0x9e,
96588 + 0xda, 0x3c, 0x13, 0x8b, 0xf5, 0x0e, 0x29, 0xc0, 0xfa, 0x39, 0x1f, 0xfc,
96589 + 0x53, 0xff, 0xc5, 0x3a, 0x2b, 0x44, 0xe1, 0x5e, 0x81, 0x77, 0xad, 0x6c,
96590 + 0xbc, 0x02, 0x46, 0xea, 0x24, 0xc2, 0xb8, 0xf4, 0xa2, 0x10, 0xdb, 0xdb,
96591 + 0x43, 0x78, 0xcd, 0x32, 0x76, 0x7d, 0xec, 0x15, 0xb8, 0x98, 0xcc, 0x0e,
96592 + 0xd6, 0x53, 0xb7, 0xae, 0x29, 0x51, 0x54, 0xe5, 0x8d, 0xcc, 0x15, 0x85,
96593 + 0x4b, 0x9f, 0x31, 0xf5, 0x9d, 0x4a, 0x10, 0x55, 0x27, 0x82, 0xe8, 0x98,
96594 + 0xf3, 0xa3, 0x62, 0x2a, 0x08, 0xef, 0xa4, 0x79, 0xfd, 0x41, 0xb8, 0xe3,
96595 + 0x58, 0x27, 0xd1, 0x8c, 0x8b, 0x2f, 0x1b, 0xf3, 0xc7, 0x89, 0x93, 0xed,
96596 + 0x88, 0xe2, 0x37, 0x05, 0x13, 0x17, 0x0b, 0x41, 0xa8, 0x27, 0x74, 0xd4,
96597 + 0xbb, 0xf5, 0x4e, 0x47, 0xb5, 0xe9, 0x61, 0x5e, 0x1c, 0xe5, 0x61, 0xb7,
96598 + 0x9e, 0x74, 0xf1, 0xd3, 0xa3, 0x74, 0xb0, 0xae, 0x6c, 0x98, 0x26, 0x95,
96599 + 0xf9, 0xec, 0x9c, 0x75, 0x43, 0xec, 0x8f, 0xa5, 0x59, 0x47, 0x2a, 0xe0,
96600 + 0xb3, 0xd7, 0xb1, 0x8e, 0xb0, 0x38, 0xb9, 0xba, 0x5f, 0xa1, 0xf8, 0xec,
96601 + 0xef, 0x6a, 0x7e, 0x88, 0x9a, 0x5f, 0xfc, 0x3f, 0x35, 0x5f, 0x85, 0x3a,
96602 + 0xe5, 0xc1, 0x98, 0x19, 0xc0, 0x6f, 0xac, 0xa6, 0x73, 0x8d, 0x08, 0x20,
96603 + 0xd5, 0xa6, 0x23, 0x72, 0xc2, 0xc2, 0x8b, 0xdc, 0x5b, 0xdc, 0x71, 0x6b,
96604 + 0x3d, 0x04, 0x76, 0x92, 0x53, 0x15, 0xd4, 0x86, 0xbb, 0x27, 0x82, 0xd4,
96605 + 0x29, 0x55, 0x59, 0x4f, 0x9d, 0xdf, 0x91, 0xbc, 0x21, 0xd2, 0x31, 0x23,
96606 + 0x1e, 0x57, 0x12, 0xa9, 0xbf, 0x43, 0x49, 0x3b, 0x62, 0xd4, 0xd1, 0x05,
96607 + 0x7d, 0x91, 0x83, 0x5d, 0x2e, 0x07, 0x67, 0x62, 0x25, 0xed, 0x58, 0x51,
96608 + 0x28, 0xf1, 0xef, 0x01, 0xea, 0xe7, 0xf5, 0xb6, 0x92, 0x76, 0xbe, 0x4a,
96609 + 0xff, 0xd3, 0xcb, 0xf1, 0x1e, 0x99, 0x36, 0xb2, 0xbd, 0xcc, 0xcf, 0x25,
96610 + 0x62, 0x63, 0x92, 0x19, 0x9c, 0xaf, 0xa5, 0xa6, 0x36, 0x07, 0x18, 0xe3,
96611 + 0x75, 0x71, 0x9a, 0xde, 0x62, 0x98, 0xfd, 0x46, 0xf3, 0x46, 0x74, 0x98,
96612 + 0x7c, 0x1f, 0x2d, 0x6b, 0xe9, 0x30, 0xfd, 0xc4, 0x28, 0xf3, 0xf4, 0x36,
96613 + 0x9f, 0x9d, 0xcc, 0x1b, 0xe9, 0x2e, 0x57, 0x53, 0xa5, 0xaf, 0x90, 0x31,
96614 + 0x49, 0x6f, 0x11, 0xc1, 0x5b, 0x2d, 0x52, 0x5f, 0x1b, 0xa8, 0xaf, 0x8b,
96615 + 0xba, 0x2a, 0xf1, 0x70, 0x4d, 0x84, 0x5a, 0x42, 0x5e, 0xc9, 0xcb, 0x4b,
96616 + 0x49, 0x21, 0xaa, 0xec, 0x20, 0x2a, 0x27, 0xcc, 0xf4, 0x7a, 0x25, 0x16,
96617 + 0x31, 0x95, 0xbb, 0xd8, 0xce, 0x1c, 0xce, 0x6d, 0xf2, 0xba, 0xde, 0xf6,
96618 + 0x84, 0x10, 0x21, 0x5b, 0x47, 0xcd, 0x84, 0x49, 0xdc, 0xc4, 0xfa, 0x8e,
96619 + 0xb8, 0xcf, 0x75, 0x04, 0xe7, 0x16, 0xc8, 0xe7, 0x08, 0xf9, 0x1c, 0xc6,
96620 + 0x9b, 0xb7, 0x70, 0x9a, 0x5a, 0xeb, 0xe9, 0x27, 0xa7, 0xb3, 0xe1, 0xa1,
96621 + 0x2d, 0xde, 0x6f, 0xf1, 0x71, 0xbf, 0xe4, 0x34, 0xdb, 0xbc, 0x78, 0x21,
96622 + 0x89, 0xcd, 0xc4, 0x47, 0xe6, 0x29, 0x25, 0xeb, 0x90, 0xdb, 0xa9, 0x0a,
96623 + 0x25, 0x4b, 0x17, 0xf5, 0x0d, 0xa7, 0xcf, 0xf0, 0x6d, 0x2f, 0x39, 0xdd,
96624 + 0x17, 0xbe, 0x95, 0xd3, 0x2c, 0xbe, 0xcc, 0xf7, 0x33, 0xf9, 0x83, 0x98,
96625 + 0xf1, 0xf9, 0x11, 0x99, 0xf2, 0x21, 0x30, 0xa5, 0x92, 0x5f, 0x0a, 0xfd,
96626 + 0x41, 0x36, 0x1e, 0x80, 0x91, 0x3e, 0x89, 0x08, 0x12, 0x13, 0x1a, 0xfe,
96627 + 0xaa, 0xc5, 0x87, 0x63, 0x31, 0x23, 0xb3, 0x93, 0x3c, 0x5d, 0x39, 0x37,
96628 + 0xc4, 0x88, 0x8c, 0x68, 0xd4, 0x53, 0xe2, 0xab, 0xaf, 0xd9, 0x0f, 0x6d,
96629 + 0xca, 0xe5, 0xe0, 0x1e, 0x8f, 0x9d, 0x8d, 0x6a, 0x30, 0x76, 0xfd, 0x84,
96630 + 0xb8, 0xb8, 0x30, 0x21, 0x44, 0x67, 0xbb, 0x79, 0xee, 0x23, 0xaf, 0x41,
96631 + 0x2d, 0x54, 0x71, 0x7e, 0xae, 0x34, 0x7e, 0xd5, 0x94, 0x06, 0xff, 0x01,
96632 + 0x77, 0xfc, 0xeb, 0x6f, 0x32, 0x8a, 0xcf, 0xf3, 0x12, 0x9f, 0x42, 0x04,
96633 + 0x6c, 0x33, 0x32, 0x4b, 0x3d, 0xdc, 0x97, 0x34, 0xb8, 0x7f, 0x4d, 0x4e,
96634 + 0x33, 0xbf, 0x7b, 0x92, 0xb1, 0xe8, 0x16, 0xbe, 0x73, 0xa9, 0x58, 0xe2,
96635 + 0x70, 0xbd, 0xb9, 0x15, 0x7f, 0xa3, 0x7b, 0x51, 0x63, 0xfe, 0x10, 0xcf,
96636 + 0xba, 0x1a, 0x45, 0xec, 0x4f, 0x56, 0xa2, 0x91, 0x98, 0x7f, 0x82, 0x98,
96637 + 0xdf, 0x3c, 0x4b, 0xad, 0x99, 0x6a, 0x67, 0x7e, 0x25, 0xdf, 0xbb, 0x94,
96638 + 0xde, 0xd9, 0x1e, 0xd7, 0x57, 0x3d, 0x32, 0xed, 0xc1, 0x9b, 0xd6, 0x5a,
96639 + 0x7a, 0x98, 0xb4, 0xf2, 0xc8, 0xac, 0xc4, 0xfb, 0x3a, 0xe5, 0x41, 0x62,
96640 + 0x3f, 0x7a, 0x87, 0x8a, 0x19, 0x6b, 0xad, 0xe2, 0x77, 0xb1, 0xef, 0x83,
96641 + 0x93, 0x29, 0xe1, 0xde, 0x6b, 0xc7, 0xac, 0x53, 0x4b, 0x70, 0xdf, 0x73,
96642 + 0x1b, 0xaf, 0x23, 0xb5, 0x03, 0x25, 0x7d, 0xd7, 0xbb, 0x98, 0xaf, 0xe7,
96643 + 0xcb, 0xf8, 0x7e, 0x96, 0xed, 0xbe, 0x29, 0x68, 0x95, 0xc4, 0xf0, 0x3a,
96644 + 0x62, 0x7c, 0x92, 0x38, 0x79, 0x78, 0x5a, 0xe0, 0x0d, 0xd6, 0x89, 0x42,
96645 + 0xd2, 0xb0, 0x76, 0x2a, 0x46, 0xba, 0x47, 0x49, 0x64, 0x57, 0x96, 0x6b,
96646 + 0xe4, 0xdd, 0xac, 0x73, 0xb8, 0x43, 0xe0, 0xe7, 0x16, 0xb4, 0x00, 0xb1,
96647 + 0xfd, 0x6f, 0xac, 0x59, 0xff, 0x51, 0xae, 0x91, 0xc9, 0x42, 0x25, 0x42,
96648 + 0x2d, 0xd4, 0x7c, 0x62, 0xb9, 0x9b, 0x58, 0x3e, 0x44, 0x3e, 0x8c, 0xd0,
96649 + 0x13, 0x6c, 0x26, 0x96, 0x57, 0xb4, 0x19, 0xd9, 0x2e, 0xfa, 0x69, 0xcf,
96650 + 0xea, 0x08, 0x71, 0x1a, 0xa7, 0x87, 0x1d, 0x41, 0x07, 0xe7, 0x4a, 0x4f,
96651 + 0x1b, 0x91, 0x0e, 0xe2, 0x5f, 0x65, 0x9f, 0xd7, 0xd8, 0x67, 0xa1, 0x4e,
96652 + 0x7a, 0xed, 0x00, 0x5e, 0x60, 0x1f, 0x33, 0xe9, 0xb8, 0x3a, 0x21, 0xf1,
96653 + 0x3f, 0x86, 0x44, 0x46, 0xe2, 0xdf, 0x59, 0xd6, 0x4a, 0xdf, 0x2f, 0xf1,
96654 + 0x4f, 0x0c, 0xe6, 0x89, 0xc1, 0x12, 0x07, 0x06, 0x24, 0x07, 0x6a, 0xe8,
96655 + 0x2b, 0x4e, 0xd0, 0x57, 0x54, 0xd9, 0x51, 0xe2, 0x5f, 0xf2, 0xa1, 0xe4,
96656 + 0x2d, 0xba, 0xca, 0x1c, 0x58, 0xef, 0xce, 0x27, 0x35, 0x20, 0x88, 0xa6,
96657 + 0x49, 0x43, 0x57, 0x95, 0xff, 0x14, 0x4f, 0x98, 0xe6, 0xfc, 0x76, 0xfa,
96658 + 0x83, 0x2f, 0xdb, 0x62, 0xcc, 0x7b, 0x10, 0xf7, 0x9c, 0x08, 0xa9, 0x12,
96659 + 0xe7, 0xf5, 0x93, 0x41, 0x84, 0x26, 0x25, 0x0f, 0xb2, 0xe3, 0x11, 0x62,
96660 + 0xc4, 0xf2, 0xfc, 0x96, 0xf8, 0x8f, 0x12, 0x17, 0xaa, 0xd2, 0xcd, 0x31,
96661 + 0x6a, 0xa6, 0x74, 0xb4, 0x4e, 0x1a, 0x03, 0x27, 0x70, 0x55, 0xbc, 0x11,
96662 + 0x33, 0x33, 0x7b, 0x99, 0xff, 0x6d, 0xc9, 0x18, 0xf7, 0x4a, 0xc7, 0xdd,
96663 + 0x37, 0xc7, 0x70, 0x39, 0xe1, 0x6c, 0xb1, 0x82, 0x65, 0xaf, 0xad, 0x61,
96664 + 0x4b, 0x1e, 0xd8, 0x96, 0xa7, 0xd9, 0x35, 0x3d, 0xab, 0xfc, 0xb8, 0x86,
96665 + 0xc3, 0x44, 0x7f, 0xbf, 0xee, 0x30, 0xff, 0x01, 0xea, 0x7d, 0xe9, 0x9d,
96666 + 0x92, 0x07, 0xff, 0x79, 0xf9, 0x8c, 0xf9, 0x2b, 0x4f, 0xe9, 0xef, 0xdb,
96667 + 0xde, 0xc5, 0x33, 0xe7, 0x16, 0x62, 0xb0, 0x93, 0x18, 0xec, 0x61, 0x8e,
96668 + 0xb6, 0x5b, 0xe4, 0x36, 0xf3, 0x99, 0x55, 0x03, 0xf4, 0xd4, 0x4d, 0x7d,
96669 + 0xd5, 0xd4, 0xb4, 0x7d, 0xd4, 0xa7, 0x77, 0xcd, 0x4a, 0x7a, 0x70, 0x87,
96670 + 0xda, 0xd9, 0x41, 0xdd, 0xec, 0x52, 0x1e, 0x72, 0xb1, 0x95, 0x26, 0x8e,
96671 + 0x34, 0x25, 0x4d, 0x5f, 0xeb, 0x63, 0xed, 0x38, 0x14, 0x5e, 0xf4, 0xdf,
96672 + 0x32, 0x4e, 0xe9, 0xb9, 0x8d, 0xb8, 0x2c, 0xbf, 0xcf, 0xba, 0x3a, 0xb4,
96673 + 0x16, 0xaa, 0xbd, 0x56, 0x51, 0x6d, 0x79, 0xc6, 0x50, 0xf1, 0x03, 0xea,
96674 + 0xec, 0xc2, 0x26, 0x79, 0xd6, 0xe0, 0xba, 0xd8, 0x16, 0x31, 0x63, 0xd1,
96675 + 0x83, 0xc4, 0xd5, 0xab, 0xdf, 0x39, 0x7b, 0x94, 0xf0, 0x36, 0x9c, 0x57,
96676 + 0x6f, 0xfa, 0x68, 0xa9, 0x0f, 0x6b, 0x6f, 0xe2, 0x4d, 0xc3, 0x33, 0x2d,
96677 + 0x51, 0xe2, 0x51, 0x62, 0x4d, 0x43, 0xe1, 0x95, 0x4a, 0xbc, 0xf1, 0x4a,
96678 + 0x10, 0xaf, 0xbf, 0x22, 0xc4, 0x68, 0x12, 0x3c, 0xe1, 0x08, 0xf1, 0x50,
96679 + 0x72, 0x0d, 0x8e, 0xeb, 0xb1, 0xe8, 0x0b, 0xae, 0x8f, 0x75, 0xe8, 0x63,
96680 + 0x8d, 0x81, 0xb3, 0xb8, 0x21, 0x0a, 0x2e, 0xa7, 0x13, 0xe4, 0x5b, 0x09,
96681 + 0x8b, 0xae, 0xdf, 0xad, 0xd5, 0x70, 0x81, 0xf8, 0x0b, 0x11, 0x7f, 0xbf,
96682 + 0xa3, 0xe6, 0x5e, 0x2d, 0x6b, 0xee, 0xaa, 0x02, 0xf9, 0xd8, 0x16, 0x40,
96683 + 0x8f, 0x5c, 0x0b, 0x71, 0x38, 0x7c, 0x13, 0x87, 0xac, 0xbd, 0xdc, 0xf3,
96684 + 0xb3, 0x96, 0x11, 0xef, 0x24, 0x1e, 0x67, 0x2c, 0xc3, 0xe9, 0xa0, 0x9f,
96685 + 0x1d, 0x76, 0x31, 0x49, 0xed, 0x8d, 0x49, 0x5c, 0x12, 0x87, 0xcc, 0xc9,
96686 + 0x3e, 0xf6, 0x39, 0xcd, 0x3e, 0x63, 0x65, 0x3f, 0xfb, 0x1e, 0x12, 0x69,
96687 + 0xe9, 0x67, 0xa3, 0xc4, 0xe0, 0x3e, 0xd7, 0xcf, 0x4a, 0xff, 0x2a, 0xbd,
96688 + 0xab, 0x8c, 0xb3, 0xdd, 0x8d, 0xb3, 0xfb, 0x26, 0x0e, 0xa9, 0x61, 0xb5,
96689 + 0x12, 0x7f, 0x0f, 0x60, 0xec, 0xa5, 0x1a, 0x84, 0xcc, 0x3b, 0x71, 0x3e,
96690 + 0xf3, 0x80, 0x1a, 0x31, 0xa1, 0xd7, 0xdb, 0x25, 0x3c, 0x6e, 0x2e, 0xa6,
96691 + 0x90, 0xcf, 0xbf, 0x23, 0xf2, 0x61, 0xc3, 0x39, 0xeb, 0x7a, 0xd2, 0x01,
96692 + 0x7a, 0xc4, 0x1b, 0xc2, 0x13, 0x33, 0xce, 0x6d, 0xa1, 0x2f, 0x6b, 0xf2,
96693 + 0x96, 0xfc, 0xdd, 0x9a, 0xc2, 0xfb, 0x02, 0x75, 0xa5, 0x75, 0xaa, 0xf4,
96694 + 0x74, 0x23, 0xe4, 0xdc, 0xa8, 0x59, 0xf2, 0x77, 0xb1, 0xc2, 0xa7, 0xaa,
96695 + 0xd4, 0x73, 0x4f, 0x9b, 0x1c, 0x37, 0x4d, 0x0d, 0x59, 0x1c, 0xfb, 0x1b,
96696 + 0x5d, 0x1e, 0x21, 0x06, 0x87, 0xa5, 0xd7, 0xa2, 0x2f, 0xe1, 0x59, 0x7d,
96697 + 0x89, 0xa6, 0xee, 0xf6, 0xc2, 0x94, 0x6d, 0x8e, 0xf2, 0x10, 0xd7, 0xa0,
96698 + 0x99, 0x83, 0x4a, 0x9a, 0xb5, 0x79, 0x2f, 0xf1, 0xd5, 0xc3, 0x1a, 0x7c,
96699 + 0xd9, 0x6a, 0x26, 0x87, 0x05, 0xeb, 0xd0, 0x0d, 0xb1, 0xcf, 0x5c, 0x3c,
96700 + 0xd3, 0xc9, 0xf3, 0x5c, 0x9c, 0x71, 0x57, 0xb3, 0x76, 0xaf, 0x63, 0xbd,
96701 + 0xe6, 0x69, 0x91, 0x39, 0xfd, 0x32, 0x26, 0x1a, 0x57, 0xb5, 0x19, 0x03,
96702 + 0x1b, 0xbd, 0x01, 0xe4, 0x88, 0xf7, 0x57, 0x59, 0x83, 0xf2, 0xdc, 0xd3,
96703 + 0xc9, 0xa2, 0x91, 0xca, 0x62, 0x04, 0x1b, 0xb9, 0xa7, 0x3c, 0x03, 0x39,
96704 + 0xff, 0x18, 0x2b, 0x9d, 0x91, 0xb7, 0xb3, 0xb6, 0x8d, 0x97, 0xb9, 0x7d,
96705 + 0x05, 0x09, 0x4b, 0x72, 0x7b, 0x9e, 0xb5, 0x6d, 0xdc, 0xe5, 0xb6, 0x91,
96706 + 0x92, 0x7c, 0xae, 0x28, 0xd7, 0xb4, 0x4f, 0x20, 0x39, 0x7c, 0x6b, 0x3d,
96707 + 0x93, 0x78, 0x5e, 0xeb, 0x93, 0xde, 0x36, 0x9f, 0x97, 0x35, 0x49, 0xd6,
96708 + 0xa2, 0xc5, 0xba, 0xa4, 0xc9, 0xfb, 0x84, 0x4c, 0xe3, 0xc4, 0x1e, 0xe1,
96709 + 0x29, 0xdd, 0x49, 0x9c, 0xfb, 0xd0, 0x1b, 0x4c, 0xa5, 0xee, 0x43, 0x26,
96710 + 0x32, 0xa7, 0x61, 0x53, 0xbe, 0xa1, 0x2f, 0x60, 0x83, 0xef, 0x28, 0xb0,
96711 + 0xfe, 0x44, 0x43, 0xe6, 0x96, 0x3b, 0x89, 0x8f, 0x73, 0x9a, 0x16, 0x9a,
96712 + 0x58, 0x2e, 0xdf, 0xc1, 0x67, 0xb9, 0xdb, 0xde, 0x49, 0xa4, 0x7f, 0xdf,
96713 + 0x9d, 0xc4, 0x0b, 0xe4, 0xc7, 0x58, 0xe9, 0x4e, 0xc2, 0xf9, 0x5e, 0x8b,
96714 + 0x17, 0x33, 0x61, 0xec, 0xfe, 0xa8, 0x5d, 0xc5, 0xe5, 0x9c, 0x11, 0x39,
96715 + 0x8e, 0xdd, 0xe8, 0x77, 0xef, 0x1f, 0x90, 0xf5, 0xdb, 0xbb, 0xf0, 0x4f,
96716 + 0xed, 0xf2, 0xfe, 0x21, 0x25, 0xd7, 0x38, 0xce, 0xe5, 0x43, 0xa3, 0xde,
96717 + 0xac, 0x67, 0x2d, 0xd8, 0xb1, 0x46, 0xc1, 0x43, 0xc9, 0x3b, 0x5d, 0x6c,
96718 + 0x8f, 0x17, 0x8d, 0x74, 0x94, 0xcf, 0xee, 0x99, 0x90, 0x35, 0xf2, 0x71,
96719 + 0x9e, 0x17, 0xa1, 0x35, 0xda, 0xbd, 0xaa, 0xc8, 0x37, 0x45, 0xae, 0x28,
96720 + 0x86, 0x73, 0x18, 0xf2, 0x8e, 0x20, 0x71, 0xce, 0xab, 0x18, 0xf3, 0x1f,
96721 + 0x7a, 0x8d, 0x54, 0xbd, 0x8b, 0x99, 0xc7, 0x79, 0x76, 0x93, 0x7f, 0x7b,
96722 + 0xe5, 0xb9, 0x0f, 0x1b, 0x39, 0xe6, 0x07, 0x6b, 0xe4, 0x59, 0xf4, 0x73,
96723 + 0x91, 0x5d, 0x66, 0x38, 0x0b, 0x8a, 0xc6, 0xdc, 0x80, 0xfa, 0x24, 0x35,
96724 + 0xfc, 0x71, 0x6a, 0xb8, 0xf4, 0x2c, 0xbd, 0xf4, 0x2c, 0x4d, 0xf3, 0x71,
96725 + 0xaf, 0x91, 0xb9, 0x4e, 0xbd, 0xe3, 0x98, 0x7d, 0xbd, 0x8a, 0xd1, 0x7b,
96726 + 0x82, 0xfa, 0xbf, 0x53, 0x29, 0x8d, 0xb9, 0xb2, 0x3c, 0xe6, 0xdd, 0x05,
96727 + 0x4d, 0xe9, 0xcc, 0x83, 0xba, 0x83, 0xe8, 0x36, 0x8b, 0xda, 0x51, 0xac,
96728 + 0x24, 0xc7, 0x4c, 0xb9, 0x66, 0xc6, 0xd6, 0xca, 0xd8, 0x14, 0x5c, 0x69,
96729 + 0x91, 0xef, 0xb6, 0xca, 0x38, 0x9c, 0x2a, 0x3b, 0x45, 0xed, 0x7d, 0xc5,
96730 + 0x57, 0xd6, 0x2f, 0xcf, 0x16, 0x6b, 0x19, 0x9c, 0x30, 0x42, 0x3e, 0xb3,
96731 + 0x0e, 0xa3, 0xb4, 0x81, 0x41, 0xb3, 0x19, 0x39, 0xdd, 0x8f, 0x2d, 0xd6,
96732 + 0x17, 0x82, 0x3a, 0xc9, 0xf7, 0x81, 0xa7, 0x5e, 0xe2, 0x19, 0xde, 0xbc,
96733 + 0x86, 0x58, 0xf2, 0x39, 0x1c, 0xd3, 0x77, 0xd1, 0x0f, 0x6e, 0xc5, 0xeb,
96734 + 0xae, 0x9e, 0xd8, 0xc4, 0xb3, 0x42, 0x0c, 0xd9, 0xb2, 0xd6, 0xdd, 0x32,
96735 + 0xb6, 0xbc, 0x93, 0xb8, 0x24, 0xb2, 0xa5, 0x31, 0x9c, 0x6d, 0x56, 0x86,
96736 + 0x71, 0x7d, 0xa3, 0xbb, 0x3b, 0xa8, 0xbb, 0x15, 0xa6, 0xe7, 0xae, 0x4a,
96737 + 0xea, 0xee, 0x56, 0xeb, 0xcf, 0xf1, 0x14, 0x39, 0x5e, 0x65, 0x7e, 0x26,
96738 + 0x9e, 0x0e, 0xcb, 0x31, 0xa9, 0xaf, 0x35, 0x4b, 0xc7, 0xff, 0x90, 0x63,
96739 + 0xca, 0x39, 0x64, 0x3d, 0x3c, 0x2f, 0x0e, 0xd5, 0xca, 0x31, 0x07, 0x95,
96740 + 0x8d, 0xe4, 0xd4, 0x3c, 0x4b, 0xef, 0x0f, 0xc8, 0xa7, 0x05, 0xe6, 0xa7,
96741 + 0xf1, 0x36, 0x7c, 0x6a, 0x24, 0x9f, 0x9e, 0x58, 0xc2, 0xa7, 0x83, 0x79,
96742 + 0xe9, 0xbd, 0x14, 0xb4, 0xb4, 0xfd, 0x29, 0x75, 0x45, 0x08, 0x7f, 0xdb,
96743 + 0x0d, 0x71, 0xc6, 0xf5, 0xbe, 0xd2, 0xef, 0xa6, 0x95, 0xee, 0x59, 0xa9,
96744 + 0x4f, 0xd5, 0x08, 0x92, 0x4f, 0x1b, 0xc8, 0xa7, 0x7e, 0xf2, 0xe9, 0x69,
96745 + 0x53, 0x34, 0xee, 0x48, 0x1a, 0xa9, 0x79, 0xfa, 0x9a, 0x75, 0xe4, 0xd4,
96746 + 0x3b, 0xe4, 0xd4, 0x48, 0xb1, 0xa4, 0x53, 0xfb, 0xb8, 0xee, 0xfb, 0xa9,
96747 + 0x53, 0xeb, 0x8a, 0x52, 0xdb, 0x1c, 0xe2, 0x3f, 0x80, 0xcf, 0xc9, 0xa9,
96748 + 0xd9, 0xa4, 0xab, 0x53, 0xd6, 0xef, 0x90, 0xd8, 0x75, 0x5a, 0xf2, 0x89,
96749 + 0x3a, 0x95, 0x2f, 0x36, 0x59, 0xa7, 0xb9, 0xa6, 0xf1, 0xbc, 0x71, 0xbd,
96750 + 0x87, 0x9c, 0xf2, 0xb5, 0x1b, 0xe7, 0x2e, 0x13, 0xbb, 0x81, 0x18, 0xf4,
96751 + 0x88, 0x2d, 0xd7, 0xc4, 0x1a, 0xcb, 0x3a, 0x79, 0x90, 0xf8, 0xef, 0xa1,
96752 + 0x66, 0xf4, 0x16, 0x6d, 0xec, 0x2d, 0x2e, 0xdd, 0x53, 0xd6, 0xa1, 0xdb,
96753 + 0xee, 0xcb, 0xb8, 0xff, 0xf6, 0xed, 0xac, 0x57, 0xb7, 0x6d, 0x97, 0x7c,
96754 + 0x5d, 0xe6, 0x97, 0x7c, 0x1d, 0xce, 0xbf, 0xa6, 0xde, 0xfe, 0x1d, 0x79,
96755 + 0xa7, 0x26, 0xc4, 0x51, 0x4b, 0xde, 0x49, 0x48, 0xdf, 0xa3, 0x60, 0xc8,
96756 + 0x92, 0xf7, 0x6a, 0x1d, 0x51, 0x15, 0x46, 0xe4, 0xfb, 0xf8, 0x4a, 0x64,
96757 + 0xc3, 0x4e, 0xdc, 0xe7, 0xd6, 0x48, 0x43, 0xef, 0x63, 0xad, 0x9b, 0x2f,
96758 + 0x9f, 0xfd, 0x66, 0x78, 0x3e, 0x7b, 0x87, 0x75, 0xea, 0x28, 0xcf, 0x79,
96759 + 0x43, 0x85, 0xaf, 0xc4, 0x7c, 0x58, 0xc5, 0x88, 0x79, 0xf3, 0x8e, 0xd2,
96760 + 0xd5, 0xb1, 0xc3, 0x7c, 0x36, 0x56, 0x58, 0xac, 0x51, 0xd4, 0x4c, 0x53,
96761 + 0x88, 0xad, 0xe6, 0x7f, 0x8b, 0x2d, 0xdf, 0x7a, 0x57, 0x88, 0x49, 0xc6,
96762 + 0x70, 0xc1, 0xc2, 0x6e, 0x1f, 0x62, 0x7d, 0xd7, 0x59, 0xd7, 0x3f, 0x58,
96763 + 0x63, 0x64, 0x0a, 0x4a, 0xa2, 0x77, 0x83, 0x22, 0xbd, 0x9e, 0xa7, 0xab,
96764 + 0x82, 0xef, 0xb4, 0xd0, 0x1b, 0x5d, 0x61, 0x06, 0xfd, 0xfc, 0x7e, 0xc6,
96765 + 0x32, 0x22, 0x47, 0xf8, 0x77, 0x4b, 0x4a, 0x8e, 0x21, 0x44, 0x87, 0x25,
96766 + 0xef, 0xbb, 0x46, 0xd4, 0xdc, 0x44, 0x56, 0x54, 0x99, 0x17, 0xa8, 0x4d,
96767 + 0x46, 0x66, 0x44, 0x91, 0x3e, 0x3b, 0x0a, 0x57, 0x67, 0xf9, 0x4c, 0x9b,
96768 + 0x88, 0xe0, 0xef, 0x5d, 0xff, 0x1c, 0xa5, 0x66, 0x35, 0xe0, 0x1f, 0x5c,
96769 + 0xdd, 0x52, 0xb1, 0xed, 0x25, 0x23, 0xa5, 0x2a, 0x7b, 0x70, 0xc9, 0x32,
96770 + 0xf4, 0x9f, 0x32, 0x6e, 0x6a, 0xcd, 0x8b, 0x9d, 0x3c, 0x3f, 0x71, 0x8e,
96771 + 0x6c, 0x9f, 0xb7, 0x56, 0xd1, 0x58, 0x3b, 0x7e, 0xdc, 0x22, 0x6b, 0xf7,
96772 + 0x2e, 0xf4, 0x34, 0xef, 0xe4, 0x47, 0x45, 0xdd, 0x94, 0xaa, 0x6c, 0xa2,
96773 + 0x27, 0x09, 0x4d, 0x85, 0xb0, 0x7d, 0xb5, 0x10, 0xab, 0x56, 0x3b, 0xf8,
96774 + 0x3c, 0xd9, 0x14, 0x3f, 0xcb, 0x1a, 0x74, 0xa8, 0xd6, 0x48, 0x03, 0xbf,
96775 + 0xc0, 0x66, 0x7a, 0xd9, 0x54, 0x5b, 0x0e, 0xb8, 0x53, 0xae, 0xf1, 0x17,
96776 + 0xe8, 0x94, 0x1e, 0xd8, 0x0a, 0x49, 0xbf, 0xe5, 0xe2, 0xb7, 0x74, 0xaf,
96777 + 0xc4, 0xd4, 0x1d, 0xc8, 0x8a, 0x4a, 0xd3, 0xe8, 0x9b, 0x65, 0xbd, 0xfd,
96778 + 0x20, 0xb6, 0x5c, 0x7f, 0x78, 0x56, 0x7a, 0x60, 0x33, 0xba, 0x5e, 0x11,
96779 + 0xcc, 0xc5, 0xf3, 0xcc, 0x45, 0xcc, 0x09, 0xd2, 0x32, 0xf0, 0xac, 0xe5,
96780 + 0x84, 0x94, 0x41, 0xe5, 0x51, 0xf2, 0xa1, 0xcf, 0x5f, 0x49, 0x0f, 0xe1,
96781 + 0xd0, 0x3f, 0x78, 0x50, 0x7d, 0x40, 0x7a, 0x8a, 0x00, 0xb5, 0xa6, 0xa9,
96782 + 0x37, 0xc8, 0xfc, 0xec, 0x48, 0x4a, 0xff, 0x41, 0xac, 0x1f, 0xb8, 0x21,
96783 + 0x3a, 0xe9, 0x71, 0x3b, 0xcb, 0x1e, 0xf7, 0x89, 0xe9, 0x34, 0x3d, 0xb0,
96784 + 0xa6, 0xc8, 0x3b, 0xb6, 0x54, 0x1b, 0x0f, 0xa4, 0x8f, 0x4a, 0x1f, 0x22,
96785 + 0xd7, 0xa0, 0xe3, 0x6a, 0x52, 0x62, 0x57, 0xc7, 0x70, 0xbb, 0x11, 0xc9,
96786 + 0x42, 0xde, 0xe9, 0xdc, 0xea, 0x2f, 0xa0, 0xa7, 0xbf, 0xe3, 0x39, 0xa0,
96787 + 0x6f, 0x62, 0x2c, 0x86, 0x5f, 0x88, 0xba, 0xa4, 0x17, 0x7d, 0xee, 0x59,
96788 + 0x2e, 0xa2, 0xa7, 0xc9, 0xfb, 0x73, 0xf4, 0x09, 0x5e, 0x9e, 0x99, 0xf7,
96789 + 0x10, 0x4b, 0x5f, 0xb6, 0x0c, 0xbd, 0x5a, 0x8f, 0xec, 0x78, 0x1d, 0xcf,
96790 + 0xa8, 0xf7, 0x53, 0x57, 0x2f, 0xe4, 0x1e, 0x65, 0x3d, 0xf7, 0xb4, 0x47,
96791 + 0x78, 0x06, 0x68, 0x9c, 0xca, 0x8a, 0x7a, 0xfa, 0x41, 0x9e, 0x97, 0x51,
96792 + 0xdb, 0x16, 0xa7, 0xdf, 0x5e, 0xdc, 0x2b, 0x0f, 0x7e, 0x68, 0x99, 0x70,
96793 + 0xdc, 0xdf, 0x41, 0xbd, 0x7b, 0x9a, 0xe7, 0x68, 0x73, 0xb9, 0xde, 0x51,
96794 + 0x8a, 0x4b, 0xad, 0xb0, 0x2d, 0xb4, 0xdc, 0x0b, 0xfd, 0xc1, 0xdb, 0xc4,
96795 + 0xb4, 0x4e, 0x7a, 0x1f, 0x5f, 0xa9, 0xdf, 0x9f, 0x4d, 0x37, 0xe8, 0x8f,
96796 + 0xb0, 0xde, 0xcd, 0x13, 0x2b, 0x4f, 0xac, 0xb6, 0x64, 0x2c, 0xf3, 0x32,
96797 + 0x16, 0xfa, 0x4b, 0xe7, 0x7e, 0x0f, 0x7d, 0x49, 0x12, 0x08, 0xcd, 0xfd,
96798 + 0x35, 0x79, 0xe5, 0x69, 0x0d, 0x21, 0xbb, 0x8b, 0x31, 0xbe, 0xfa, 0xaf,
96799 + 0xdc, 0x9a, 0xfe, 0x49, 0xf4, 0x7b, 0xd8, 0x67, 0xc2, 0x02, 0x9e, 0x39,
96800 + 0x01, 0x3c, 0x3d, 0x19, 0xa3, 0x2f, 0xa7, 0x8f, 0x3c, 0xa1, 0xe1, 0xfb,
96801 + 0xd3, 0x95, 0xf8, 0xd1, 0x74, 0x10, 0x3b, 0xa6, 0xdd, 0xbb, 0xae, 0x0d,
96802 + 0x75, 0x7c, 0xaf, 0x83, 0x67, 0xbb, 0x59, 0x6b, 0x35, 0x3e, 0xa2, 0x87,
96803 + 0x5a, 0xa1, 0x78, 0x10, 0x39, 0x00, 0x5d, 0x27, 0x6e, 0x6a, 0x5b, 0x7e,
96804 + 0x44, 0x2e, 0x0b, 0x61, 0xae, 0x96, 0x3a, 0xf9, 0xbc, 0xfb, 0x7d, 0x84,
96805 + 0xfe, 0x31, 0x23, 0x31, 0x98, 0x27, 0x06, 0xf3, 0xc4, 0xe4, 0x4d, 0x4f,
96806 + 0x2d, 0xb1, 0x1c, 0xa7, 0x8f, 0x7e, 0x4e, 0x94, 0xb0, 0xf1, 0xb5, 0x38,
96807 + 0x6a, 0x9e, 0x24, 0x7f, 0x55, 0x6a, 0x28, 0xf0, 0xcf, 0xb9, 0x88, 0xbe,
96808 + 0xa9, 0x28, 0xf3, 0xff, 0xb7, 0xe5, 0xfc, 0x9f, 0xf1, 0x97, 0xf4, 0xc2,
96809 + 0x70, 0x66, 0xd1, 0x80, 0xc9, 0x7c, 0x83, 0xbe, 0x21, 0x3f, 0x34, 0xa8,
96810 + 0x21, 0x1b, 0x0d, 0xc1, 0x18, 0x98, 0x84, 0xa7, 0x35, 0x08, 0xb9, 0x76,
96811 + 0xa0, 0xe0, 0xae, 0x51, 0x88, 0x31, 0xea, 0x9b, 0xcc, 0xc1, 0xbf, 0xe7,
96812 + 0xd0, 0xea, 0x61, 0x3e, 0x1c, 0xc8, 0xb3, 0x35, 0xf0, 0x69, 0x41, 0xde,
96813 + 0x7d, 0xc6, 0xd2, 0xdd, 0xf8, 0xc2, 0x1d, 0xf3, 0x93, 0x42, 0x0a, 0xfb,
96814 + 0xf3, 0x1f, 0x88, 0xfd, 0xe1, 0x92, 0xc6, 0xa7, 0x79, 0x3e, 0x0a, 0x1d,
96815 + 0x28, 0x7b, 0x21, 0x72, 0xb8, 0x9a, 0xeb, 0xbd, 0x9a, 0x74, 0xbd, 0x3f,
96816 + 0x6b, 0xe4, 0x80, 0x7a, 0xd4, 0x64, 0xb1, 0xab, 0xb9, 0x21, 0xc6, 0x62,
96817 + 0x89, 0x40, 0x29, 0xa6, 0x84, 0x7e, 0x04, 0x15, 0xc4, 0xae, 0x3c, 0x23,
96818 + 0x49, 0xfd, 0x90, 0xbf, 0x79, 0x3e, 0x51, 0x9d, 0x88, 0x97, 0xeb, 0x72,
96819 + 0x1e, 0x93, 0x6d, 0x81, 0xb2, 0x5f, 0x5d, 0xf4, 0x22, 0x1d, 0x7c, 0x26,
96820 + 0xbd, 0xc8, 0x57, 0xa2, 0x2f, 0xdc, 0x71, 0x53, 0x73, 0xb2, 0x7c, 0x63,
96821 + 0x34, 0x2f, 0xef, 0xb4, 0x5a, 0xe8, 0x88, 0x15, 0x9c, 0x62, 0xe4, 0x47,
96822 + 0x5a, 0x63, 0xfa, 0x30, 0xc7, 0x73, 0x74, 0x9d, 0x5c, 0xde, 0x43, 0xbf,
96823 + 0xcc, 0x77, 0x8a, 0x2d, 0xec, 0x23, 0xb5, 0xec, 0x2f, 0xb8, 0xd6, 0x2f,
96824 + 0x9a, 0x25, 0xb6, 0x87, 0xf3, 0x6f, 0x79, 0x54, 0x53, 0xae, 0x33, 0x91,
96825 + 0x1a, 0x66, 0x3c, 0x0b, 0xba, 0xf4, 0xd6, 0x0e, 0xb5, 0x2d, 0xe1, 0xf6,
96826 + 0xcf, 0xaa, 0x32, 0x0e, 0x37, 0x1e, 0xb6, 0x49, 0xcd, 0x32, 0x32, 0xa7,
96827 + 0x90, 0x70, 0xfa, 0xa5, 0x39, 0x58, 0x26, 0x63, 0x68, 0x8a, 0xf4, 0x33,
96828 + 0x9e, 0x43, 0x61, 0x57, 0x0f, 0xf9, 0x8c, 0xf3, 0xe5, 0x3d, 0x1b, 0x2a,
96829 + 0x21, 0xb0, 0x22, 0xe9, 0x9e, 0xf9, 0xcb, 0xff, 0x5f, 0x43, 0xa5, 0x0f,
96830 + 0x91, 0x58, 0xfc, 0x5f, 0x69, 0xd7, 0x8a, 0xc0, 0xa8, 0x1a, 0x00, 0x00,
96831 + 0x00 };
96832
96833 static const u32 bnx2_TPAT_b06FwData[(0x0/4) + 1] = { 0x0 };
96834 static const u32 bnx2_TPAT_b06FwRodata[(0x0/4) + 1] = { 0x0 };
96835
96836 static struct fw_info bnx2_tpat_fw_06 = {
96837 - /* Firmware version: 4.6.16 */
96838 + /* Firmware version: 4.4.22 */
96839 .ver_major = 0x4,
96840 - .ver_minor = 0x6,
96841 - .ver_fix = 0x10,
96842 + .ver_minor = 0x4,
96843 + .ver_fix = 0x16,
96844
96845 .start_addr = 0x08000488,
96846
96847 .text_addr = 0x08000400,
96848 - .text_len = 0x175c,
96849 + .text_len = 0x1aa4,
96850 .text_index = 0x0,
96851 .gz_text = bnx2_TPAT_b06FwText,
96852 .gz_text_len = sizeof(bnx2_TPAT_b06FwText),
96853 @@ -3540,11 +3639,11 @@
96854 .data_index = 0x0,
96855 .data = bnx2_TPAT_b06FwData,
96856
96857 - .sbss_addr = 0x08001b80,
96858 + .sbss_addr = 0x08001ec0,
96859 .sbss_len = 0x44,
96860 .sbss_index = 0x0,
96861
96862 - .bss_addr = 0x08001bc4,
96863 + .bss_addr = 0x08001f04,
96864 .bss_len = 0x450,
96865 .bss_index = 0x0,
96866
96867 @@ -3571,858 +3670,862 @@
96868 };
96869
96870 static u8 bnx2_TXP_b06FwText[] = {
96871 - 0xad, 0x7b, 0x0f, 0x70, 0x54, 0xe7, 0x75, 0xef, 0xef, 0xee, 0x1f, 0x69,
96872 - 0x57, 0x5a, 0xad, 0x2e, 0x78, 0xc1, 0xab, 0x54, 0x29, 0x7b, 0xd9, 0xbb,
96873 - 0xd2, 0x1a, 0x09, 0xb8, 0x0b, 0xc2, 0x88, 0xe8, 0xd6, 0x6c, 0x85, 0x00,
96874 - 0x21, 0x64, 0x2c, 0x63, 0x25, 0x15, 0x7d, 0x9e, 0x5a, 0x0f, 0x64, 0x23,
96875 - 0xdb, 0xd8, 0x16, 0x35, 0x6d, 0xe5, 0xd4, 0xad, 0xd6, 0x92, 0xc0, 0xc2,
96876 - 0xac, 0xb8, 0x22, 0x0b, 0x11, 0xee, 0xf4, 0xbd, 0xc8, 0x96, 0xb0, 0xb0,
96877 - 0xb3, 0x62, 0xed, 0xa4, 0xaf, 0xd3, 0xcc, 0x34, 0xe3, 0x7d, 0xfe, 0x83,
96878 - 0x49, 0x1e, 0xb6, 0xd3, 0x4e, 0xe7, 0x3d, 0xa7, 0xf3, 0xde, 0x84, 0x17,
96879 - 0x63, 0x62, 0xa7, 0x89, 0xed, 0xe6, 0xa5, 0xf3, 0x44, 0xea, 0xf8, 0xbe,
96880 - 0xdf, 0xb9, 0x77, 0x17, 0x88, 0x9b, 0x4e, 0x67, 0x3a, 0x4f, 0x33, 0x9a,
96881 - 0xd5, 0xde, 0x3f, 0xdf, 0x77, 0xce, 0xf9, 0xce, 0xf9, 0x9d, 0xdf, 0x39,
96882 - 0xdf, 0xa7, 0x06, 0xa0, 0x0a, 0xa5, 0x9f, 0x1a, 0xfe, 0xb6, 0x0c, 0x0d,
96883 - 0x1f, 0x4a, 0xad, 0xb9, 0x75, 0x0d, 0xff, 0xbc, 0x15, 0x6a, 0x85, 0x4f,
96884 - 0x6e, 0xde, 0xaa, 0x00, 0xfd, 0x3f, 0xc6, 0xbf, 0xeb, 0xe7, 0xf3, 0xff,
96885 - 0xbe, 0xd7, 0x9c, 0x1f, 0x2f, 0xa0, 0x96, 0xe5, 0x92, 0x5f, 0x04, 0x3c,
96886 - 0xe6, 0xcc, 0x17, 0xda, 0x75, 0x04, 0xbc, 0x66, 0xaf, 0xb9, 0x4f, 0x07,
96887 - 0xd2, 0xf9, 0xa6, 0xd8, 0x16, 0xfc, 0xd2, 0xce, 0x44, 0x7c, 0x90, 0xeb,
96888 - 0x9f, 0x37, 0x3f, 0x19, 0xf9, 0xf6, 0x46, 0xed, 0xe3, 0x19, 0x2f, 0x02,
96889 - 0xaa, 0x79, 0x1a, 0x6a, 0x03, 0x02, 0xf5, 0x7c, 0xe7, 0xcf, 0x1b, 0xfd,
96890 - 0x5e, 0x84, 0xcb, 0x63, 0xb5, 0x62, 0xcc, 0x42, 0x26, 0x60, 0x0e, 0xa1,
96891 - 0x72, 0x03, 0xf0, 0x5e, 0x36, 0x61, 0x8c, 0x01, 0x53, 0x1e, 0x33, 0x11,
96892 - 0x7b, 0x05, 0x06, 0x0e, 0x17, 0x62, 0xe8, 0xe0, 0xef, 0x0e, 0xeb, 0x53,
96893 - 0x3b, 0xe6, 0x47, 0xc6, 0xcb, 0xe7, 0xf6, 0xb6, 0x00, 0x5b, 0xb3, 0x06,
96894 - 0x8e, 0x58, 0x08, 0xd4, 0x99, 0x8f, 0x63, 0x13, 0x3f, 0xc3, 0xe6, 0x30,
96895 - 0xde, 0x9a, 0x8c, 0xc7, 0x9e, 0x83, 0xd6, 0xa7, 0x7b, 0xb5, 0x61, 0xa0,
96896 - 0x69, 0x70, 0x40, 0xd1, 0xfa, 0xdf, 0x56, 0xb4, 0x9e, 0x49, 0x05, 0x01,
96897 - 0x85, 0xcf, 0x35, 0xe5, 0xe5, 0x73, 0x18, 0xab, 0xf2, 0x01, 0x5c, 0xf2,
96898 - 0xca, 0xfc, 0xbf, 0x45, 0x7b, 0x2b, 0xf0, 0xe9, 0xad, 0x18, 0xa7, 0x0c,
96899 - 0x7e, 0x53, 0xc1, 0xb3, 0x2d, 0x89, 0xe8, 0x28, 0xe4, 0x7e, 0x0c, 0x5b,
96900 - 0x0a, 0xf2, 0xa9, 0x51, 0x6b, 0xdb, 0x1e, 0x37, 0x6c, 0xfb, 0x8c, 0x51,
96901 - 0x89, 0x8c, 0xaa, 0x45, 0x01, 0x05, 0xa3, 0x86, 0x07, 0x69, 0xb5, 0x3d,
96902 - 0xe6, 0x83, 0x16, 0xbd, 0x17, 0xff, 0x4c, 0x9d, 0xd3, 0x49, 0x3f, 0xdc,
96903 - 0xe7, 0xfb, 0x51, 0x89, 0xa2, 0xea, 0x5a, 0xed, 0xd9, 0xac, 0x6d, 0x9f,
96904 - 0xd7, 0x7d, 0x38, 0x43, 0xfb, 0x8c, 0xe6, 0xff, 0xd9, 0x2e, 0xd2, 0x36,
96905 - 0xe3, 0x7a, 0x79, 0xfe, 0x00, 0x66, 0x54, 0xdb, 0x9e, 0xe5, 0xbd, 0x23,
96906 - 0xf9, 0xb2, 0x9d, 0x6d, 0xdb, 0xa3, 0xdb, 0xf6, 0x3e, 0xfd, 0x17, 0xf6,
96907 - 0xde, 0x5f, 0x79, 0xd6, 0xb6, 0x9f, 0x32, 0x6e, 0xc2, 0xd9, 0x5c, 0x87,
96908 - 0xd2, 0x35, 0xbf, 0x3c, 0xbc, 0x63, 0xda, 0xc6, 0x79, 0x03, 0xaa, 0xc7,
96909 - 0xdc, 0xa6, 0xec, 0x98, 0xef, 0x54, 0xb6, 0x16, 0x76, 0x2b, 0xdb, 0x66,
96910 - 0x7f, 0x57, 0xe9, 0x9c, 0xef, 0x57, 0xb6, 0x17, 0xa2, 0x98, 0xb3, 0x22,
96911 - 0x98, 0xb5, 0xfa, 0x94, 0x8e, 0xf9, 0x5e, 0xc5, 0xd5, 0x63, 0x58, 0x69,
96912 - 0x2f, 0x94, 0xc7, 0xba, 0x6e, 0xc7, 0x1d, 0x59, 0x13, 0x13, 0x56, 0x25,
96913 - 0xe7, 0x59, 0xb4, 0xbf, 0xdd, 0xb8, 0x48, 0x3d, 0x0d, 0x1c, 0x2d, 0x3c,
96914 - 0x85, 0xdb, 0xa7, 0x6d, 0x3b, 0x9f, 0x02, 0xf2, 0x05, 0xe0, 0xeb, 0x56,
96915 - 0xbc, 0x67, 0x50, 0xb1, 0xed, 0xed, 0x09, 0x7b, 0xc5, 0x15, 0xa3, 0x29,
96916 - 0xf9, 0x1a, 0xfe, 0xaf, 0x3d, 0x13, 0x41, 0x26, 0xc4, 0x31, 0x8e, 0x71,
96917 - 0xcd, 0x1e, 0x98, 0x44, 0xa0, 0xd2, 0x1c, 0xc7, 0x8f, 0xb2, 0x08, 0x54,
96918 - 0x98, 0x19, 0x9c, 0xcf, 0x8e, 0xaa, 0x01, 0xc4, 0xa3, 0x3b, 0x94, 0xcc,
96919 - 0xb0, 0x07, 0xda, 0xd0, 0xbb, 0xd0, 0x62, 0x5c, 0x8f, 0x0b, 0xaf, 0x2a,
96920 - 0x5a, 0xf1, 0x35, 0x68, 0xe9, 0x5f, 0x28, 0x5a, 0x67, 0x9d, 0x17, 0x69,
96921 - 0x4f, 0x22, 0x80, 0x6f, 0x37, 0xca, 0x9a, 0x8c, 0x63, 0x8d, 0xb3, 0x36,
96922 - 0x19, 0xdc, 0x72, 0x6d, 0x6d, 0x4c, 0x8c, 0x52, 0xae, 0x23, 0x94, 0xeb,
96923 - 0x75, 0x43, 0x8b, 0x3e, 0x0b, 0x7b, 0xc5, 0x80, 0x21, 0xf7, 0x4c, 0x8c,
96924 - 0x17, 0xec, 0x58, 0xd8, 0xbc, 0x44, 0x79, 0x91, 0xf9, 0x9c, 0x19, 0xc8,
96925 - 0xd4, 0x9a, 0xbf, 0xb4, 0xdf, 0xdc, 0x10, 0xc5, 0xcb, 0x85, 0x08, 0x5e,
96926 - 0x2a, 0xa8, 0x78, 0xb1, 0xd0, 0x01, 0xab, 0x80, 0xf0, 0xed, 0x85, 0x5f,
96927 - 0xe7, 0xc7, 0x36, 0x42, 0x7c, 0x9e, 0x72, 0x87, 0x77, 0x16, 0x7c, 0xfd,
96928 - 0x15, 0x26, 0x7a, 0xbe, 0x93, 0x1d, 0xb1, 0xab, 0x74, 0xf4, 0x2f, 0x31,
96929 - 0xf5, 0xf4, 0x2a, 0x25, 0xd4, 0x4a, 0x3f, 0xec, 0x79, 0x23, 0xdf, 0xea,
96930 - 0xd3, 0x8f, 0x07, 0xe1, 0xa7, 0xfd, 0xb7, 0x16, 0x6c, 0x7b, 0xcc, 0x38,
96931 - 0xb8, 0x76, 0x6f, 0xeb, 0x37, 0x8b, 0x3d, 0x7a, 0x37, 0x32, 0x85, 0x01,
96932 - 0x20, 0x6c, 0xf2, 0x93, 0xa1, 0xb8, 0xbb, 0xb9, 0x23, 0x76, 0xae, 0xdf,
96933 - 0xe7, 0xfa, 0x33, 0x65, 0xa0, 0xdd, 0x5f, 0xb2, 0x28, 0x83, 0xf5, 0x47,
96934 - 0x61, 0x54, 0xc5, 0xa8, 0xdf, 0xf7, 0x28, 0x67, 0x12, 0xdf, 0x28, 0xe8,
96935 - 0x94, 0xad, 0x99, 0x32, 0xc6, 0x28, 0x5f, 0x00, 0x7b, 0x73, 0xda, 0x54,
96936 - 0x06, 0xda, 0xc4, 0x0c, 0x56, 0x23, 0x1d, 0x51, 0xe9, 0x83, 0x7f, 0x06,
96937 - 0x77, 0x8c, 0x6e, 0x1c, 0xb7, 0xb0, 0x4e, 0x35, 0xb9, 0xbe, 0x29, 0x3c,
96938 - 0x5e, 0x81, 0x44, 0xff, 0xc7, 0x8a, 0x82, 0x37, 0x13, 0xdd, 0x98, 0xa4,
96939 - 0x3e, 0xdd, 0xf9, 0x20, 0x1e, 0xcc, 0x55, 0xe1, 0xfe, 0x9c, 0x8d, 0x07,
96940 - 0x52, 0x30, 0xab, 0xa8, 0x4f, 0x32, 0x95, 0x88, 0xbd, 0x0f, 0x1f, 0x3a,
96941 - 0xf2, 0xdd, 0x8c, 0xa5, 0x2d, 0x48, 0x57, 0x04, 0xb0, 0x25, 0x1f, 0x62,
96942 - 0x3c, 0xa6, 0x71, 0x7a, 0x3a, 0x00, 0xff, 0x7a, 0x0f, 0x66, 0x22, 0x15,
96943 - 0x48, 0x36, 0x78, 0xf8, 0x1b, 0x09, 0xb7, 0x4f, 0xd7, 0x87, 0xb7, 0x5a,
96944 - 0x3e, 0xec, 0xb7, 0x3c, 0x18, 0xc9, 0xd9, 0x76, 0x87, 0x61, 0xe3, 0xea,
96945 - 0x7a, 0x15, 0xdf, 0xa2, 0xfd, 0x0e, 0x5a, 0x51, 0x9c, 0x2d, 0x3c, 0x49,
96946 - 0x59, 0x22, 0xae, 0xbc, 0x16, 0x65, 0xb7, 0x28, 0xbb, 0x45, 0xb9, 0x2d,
96947 - 0x91, 0xf3, 0x55, 0xc6, 0x8c, 0x41, 0xbd, 0x82, 0x94, 0xa1, 0x1a, 0x83,
96948 - 0x94, 0x23, 0x9e, 0xb2, 0xe1, 0x49, 0x69, 0x99, 0xbd, 0x04, 0xaf, 0x15,
96949 - 0x0d, 0xb6, 0xfd, 0xf1, 0x7a, 0xd1, 0x85, 0x6b, 0xee, 0xe9, 0x96, 0x18,
96950 - 0xfd, 0xed, 0x1a, 0xc6, 0xd5, 0xf7, 0x69, 0xb7, 0xa7, 0x0b, 0x41, 0x0c,
96951 - 0xe7, 0x1c, 0xbf, 0x3d, 0x54, 0x41, 0xb9, 0x45, 0xae, 0x82, 0x9e, 0x60,
96952 - 0x8c, 0x26, 0xfa, 0x18, 0xa3, 0xd8, 0x49, 0x99, 0x1f, 0xb0, 0x22, 0xe1,
96953 - 0x8e, 0xe9, 0x44, 0xeb, 0x6e, 0xc5, 0x87, 0xed, 0xf9, 0xeb, 0x72, 0x52,
96954 - 0x5f, 0x89, 0x41, 0xea, 0xaa, 0x52, 0xbe, 0x08, 0xf6, 0x51, 0xce, 0x97,
96955 - 0x4a, 0x72, 0xce, 0x16, 0x64, 0xae, 0xcf, 0xca, 0x5a, 0x96, 0x13, 0x99,
96956 - 0xa5, 0x66, 0x44, 0x41, 0x55, 0x08, 0xbb, 0xf3, 0xef, 0x70, 0x2d, 0xea,
96957 - 0xf1, 0x4d, 0xae, 0xc1, 0xcb, 0x8c, 0x91, 0x6f, 0x5c, 0xf3, 0x17, 0x59,
96958 - 0x8f, 0x27, 0xb8, 0x0e, 0xda, 0xe9, 0x0c, 0x42, 0xe8, 0x2f, 0xa4, 0x71,
96959 - 0x78, 0x1a, 0xe9, 0x39, 0xe3, 0x18, 0xe3, 0x7d, 0x39, 0xbc, 0x7a, 0x65,
96960 - 0x5a, 0xd5, 0xab, 0xb0, 0x6f, 0x36, 0x82, 0xa1, 0x42, 0x3b, 0xac, 0x5c,
96961 - 0x04, 0x07, 0xe8, 0x9b, 0x1f, 0xa6, 0xd2, 0x0f, 0x84, 0x21, 0xb2, 0x47,
96962 - 0xf0, 0x20, 0xdf, 0x79, 0x6a, 0x3a, 0x82, 0x41, 0xda, 0x68, 0x47, 0x2a,
96963 - 0xd1, 0x1a, 0xe4, 0xb5, 0xfd, 0xbc, 0x76, 0x84, 0xf6, 0x7f, 0xd5, 0x98,
96964 - 0x44, 0x7f, 0x8f, 0x96, 0x04, 0x22, 0xb8, 0xcf, 0x82, 0x4a, 0x17, 0x7e,
96965 - 0x82, 0xf8, 0x96, 0x7c, 0x95, 0xdf, 0xef, 0x2d, 0x54, 0x51, 0xdf, 0x30,
96966 - 0xa2, 0xfa, 0x27, 0xb6, 0xbf, 0xc5, 0xb6, 0xbf, 0x66, 0x24, 0x2e, 0xfc,
96967 - 0xd0, 0xeb, 0xc3, 0x63, 0x05, 0x0f, 0x86, 0x67, 0xab, 0xf0, 0xfb, 0x39,
96968 - 0x1f, 0xee, 0x6c, 0xa8, 0xc2, 0xc1, 0xd9, 0x34, 0xc6, 0xa6, 0xab, 0x30,
96969 - 0x90, 0xc3, 0x8a, 0xfb, 0x8c, 0xb1, 0x25, 0x15, 0xd0, 0x16, 0x3b, 0x90,
96970 - 0xc4, 0x55, 0xae, 0xc3, 0x63, 0xb3, 0xa1, 0x70, 0xdf, 0xb4, 0x8a, 0xe1,
96971 - 0xf9, 0x20, 0x9f, 0xf7, 0xf0, 0xf9, 0x4a, 0x18, 0xeb, 0xe2, 0xc3, 0x2a,
96972 - 0x44, 0xc6, 0x6a, 0x3c, 0x3c, 0x1b, 0xc4, 0x43, 0x39, 0x15, 0x07, 0xa6,
96973 - 0x5b, 0x30, 0x65, 0xa5, 0x71, 0x94, 0xd8, 0xf1, 0xf5, 0x94, 0xd6, 0x73,
96974 - 0x40, 0xd1, 0xd2, 0x5b, 0x95, 0x34, 0x1a, 0x53, 0x7e, 0x5c, 0x22, 0x0e,
96975 - 0xf9, 0x53, 0x4d, 0xad, 0x2f, 0x12, 0x1b, 0x2a, 0xcc, 0x08, 0xbf, 0x6b,
96976 - 0x13, 0x8c, 0xd9, 0xb4, 0xdf, 0xb3, 0x1e, 0x58, 0x26, 0xf1, 0x1b, 0x09,
96977 - 0x77, 0x59, 0x6a, 0xb8, 0xab, 0x50, 0x1f, 0xde, 0x61, 0x45, 0xc3, 0x3b,
96978 - 0x18, 0x5f, 0x5b, 0xc5, 0x1f, 0xad, 0x00, 0x8e, 0xa5, 0x7e, 0x69, 0xf7,
96979 - 0x2f, 0x71, 0xf0, 0x2c, 0x7c, 0xfb, 0xb4, 0x96, 0x99, 0x81, 0x66, 0x30,
96980 - 0x1b, 0x60, 0x72, 0xde, 0xc7, 0xf5, 0x53, 0xb0, 0x44, 0x6f, 0x21, 0x8e,
96981 - 0xab, 0x78, 0x98, 0x98, 0xf2, 0xb7, 0xc4, 0x94, 0x81, 0xe3, 0x71, 0x75,
96982 - 0x0a, 0x41, 0xda, 0x1b, 0xd8, 0x7b, 0x2e, 0xc2, 0x35, 0xef, 0xc4, 0x93,
96983 - 0x94, 0x6b, 0xc7, 0x86, 0x08, 0xee, 0x2f, 0xa8, 0xe1, 0x4e, 0xae, 0xdf,
96984 - 0xfb, 0xf9, 0x68, 0x78, 0x0b, 0xd7, 0xf2, 0xdd, 0xbc, 0x16, 0x2b, 0xe2,
96985 - 0x9f, 0xc4, 0x9f, 0x92, 0xf0, 0x00, 0xf7, 0x1d, 0xf7, 0xa3, 0x18, 0x91,
96986 - 0xb9, 0x68, 0x73, 0xeb, 0x65, 0x3b, 0xa4, 0xeb, 0xa7, 0x0f, 0xd0, 0xd6,
96987 - 0x8f, 0x16, 0x42, 0x78, 0xc8, 0xd2, 0x92, 0xdf, 0x50, 0x42, 0xb4, 0x69,
96988 - 0x80, 0x76, 0x20, 0xc0, 0x2c, 0x97, 0xe7, 0x52, 0x88, 0x2d, 0x77, 0xb1,
96989 - 0xf6, 0xe0, 0xac, 0xf8, 0x09, 0xd7, 0xde, 0xa2, 0x0f, 0xd0, 0x7f, 0xbe,
96990 - 0x71, 0x2d, 0x56, 0x35, 0x35, 0xe3, 0x60, 0x77, 0x92, 0xfe, 0xe2, 0xda,
96991 - 0xe8, 0xc4, 0xb4, 0xd8, 0x41, 0x9b, 0x82, 0x27, 0x8d, 0xb5, 0xeb, 0xfe,
96992 - 0xd6, 0xbe, 0xb4, 0x4c, 0xec, 0xa1, 0x62, 0x84, 0x36, 0x3c, 0x6d, 0xd9,
96993 - 0xf6, 0xd5, 0xf5, 0x3f, 0xb5, 0x5b, 0x6f, 0x16, 0xbb, 0x88, 0xae, 0xdf,
96994 - 0x52, 0x24, 0x8f, 0x2c, 0xd1, 0xc3, 0xff, 0x1f, 0x7c, 0xe5, 0x0f, 0xed,
96995 - 0x7e, 0x47, 0x3f, 0xf1, 0x17, 0x1f, 0x7d, 0xf1, 0x49, 0x8e, 0xed, 0x41,
96996 - 0x3f, 0xc7, 0x7b, 0xc4, 0xb2, 0x3f, 0xaa, 0x33, 0x3f, 0xb5, 0x5b, 0x37,
96997 - 0xea, 0x43, 0x8b, 0xca, 0xff, 0xe0, 0xf5, 0x08, 0x1e, 0x2e, 0xb4, 0xd2,
96998 - 0x76, 0x1d, 0x78, 0xca, 0x12, 0x3c, 0xec, 0x64, 0xbc, 0x45, 0xe9, 0xcf,
96999 - 0xf5, 0xf4, 0x6f, 0x9f, 0xb2, 0xd5, 0xca, 0x63, 0xc7, 0x64, 0x06, 0xdb,
97000 - 0xe9, 0xef, 0x17, 0xb2, 0xf1, 0xd6, 0xe7, 0xa1, 0x65, 0xa8, 0x43, 0xb8,
97001 - 0x93, 0x36, 0xee, 0xb0, 0xb4, 0x4e, 0x59, 0xd3, 0x0e, 0xe2, 0xd2, 0x2b,
97002 - 0xd9, 0x68, 0xb8, 0xbd, 0x20, 0xf6, 0xae, 0x0f, 0x6f, 0x29, 0xdc, 0xca,
97003 - 0xb5, 0x57, 0xb0, 0x69, 0x75, 0x80, 0x38, 0x73, 0x07, 0xdc, 0x75, 0x75,
97004 - 0xd7, 0xee, 0xcd, 0x54, 0x53, 0xff, 0x4f, 0xd1, 0x85, 0xcc, 0x32, 0xf7,
97005 - 0xda, 0x30, 0xaf, 0xd5, 0xae, 0x47, 0xf8, 0x0e, 0xfa, 0xc1, 0x3d, 0xf4,
97006 - 0x83, 0xab, 0xeb, 0x7f, 0x69, 0xc7, 0x6e, 0x72, 0xfd, 0xa0, 0x7d, 0xda,
97007 - 0x17, 0xde, 0x46, 0x3b, 0x6d, 0x35, 0x14, 0xcc, 0x1a, 0x4f, 0xa1, 0xff,
97008 - 0x1a, 0x77, 0x48, 0xcf, 0x9c, 0x35, 0xd2, 0xc4, 0x91, 0x36, 0xf8, 0x96,
97009 - 0x60, 0xe6, 0x79, 0xe3, 0x30, 0x62, 0xae, 0xef, 0xe0, 0x40, 0x2e, 0x88,
97010 - 0xcc, 0x9d, 0x2a, 0xe6, 0x1a, 0x55, 0x3c, 0xc2, 0xb1, 0x3f, 0x4c, 0x35,
97011 - 0x0d, 0xbe, 0x45, 0x1b, 0xcc, 0x2c, 0x91, 0x6b, 0x69, 0xfc, 0x95, 0xf1,
97012 - 0x65, 0xe0, 0x26, 0x77, 0xee, 0x79, 0x89, 0xd1, 0xf9, 0x16, 0x1c, 0x29,
97013 - 0xf4, 0x29, 0x2e, 0x6e, 0x6a, 0x9d, 0x69, 0x7c, 0xcf, 0x16, 0x2c, 0x9d,
97014 - 0x27, 0x86, 0xb4, 0xd3, 0xa7, 0xc6, 0xe9, 0x47, 0xa3, 0xc4, 0x90, 0xed,
97015 - 0xf4, 0xa3, 0x27, 0xf3, 0xa2, 0x53, 0xc2, 0x30, 0xbc, 0x37, 0x33, 0x37,
97016 - 0xd3, 0x3e, 0x96, 0x93, 0xf3, 0x6b, 0x55, 0xfd, 0x30, 0xa6, 0x1c, 0xd9,
97017 - 0x86, 0x95, 0x3b, 0xc8, 0x31, 0x2e, 0xf9, 0x51, 0x1b, 0xd5, 0x1f, 0xc1,
97018 - 0x69, 0xe7, 0x5a, 0x84, 0xef, 0xa6, 0x3d, 0x1e, 0x1d, 0xaa, 0x6a, 0x76,
97019 - 0x30, 0xaf, 0x8a, 0xef, 0x77, 0x2a, 0x3b, 0x98, 0x6b, 0xd3, 0xcc, 0xb5,
97020 - 0x69, 0xe6, 0xda, 0x34, 0xe7, 0x4f, 0x33, 0xc7, 0xb6, 0x17, 0x86, 0x95,
97021 - 0x1e, 0xb1, 0xbb, 0xd8, 0xdf, 0x72, 0xf9, 0x03, 0xb1, 0x27, 0xbc, 0xbd,
97022 - 0xb0, 0xc6, 0xe3, 0x72, 0xba, 0x61, 0xa5, 0xc4, 0x61, 0x02, 0x55, 0x3a,
97023 - 0x73, 0x98, 0x35, 0xac, 0x74, 0x31, 0xcf, 0xf6, 0x39, 0x36, 0x8c, 0x0f,
97024 - 0x5d, 0x66, 0x7e, 0x7d, 0x93, 0xf9, 0x35, 0x9f, 0x62, 0x3c, 0xad, 0xbe,
97025 - 0x6a, 0xf7, 0x2f, 0x73, 0x73, 0xc1, 0x18, 0xe5, 0xfc, 0x1a, 0xd7, 0xaa,
97026 - 0xc8, 0x1c, 0xda, 0xe1, 0x55, 0x70, 0x9f, 0x8e, 0xda, 0x3a, 0x62, 0xe9,
97027 - 0x91, 0x02, 0xf1, 0xdf, 0x88, 0xb7, 0x7e, 0x40, 0x83, 0x1e, 0xd1, 0xfd,
97028 - 0xb8, 0x7a, 0x13, 0x49, 0x8e, 0xde, 0x8e, 0x63, 0xb9, 0x4a, 0x0c, 0xa6,
97029 - 0xd2, 0x4b, 0x03, 0xe4, 0x28, 0x9d, 0x2d, 0x78, 0x9c, 0x53, 0x2b, 0x51,
97030 - 0x33, 0x41, 0x7f, 0x41, 0xfa, 0x38, 0xf3, 0xc3, 0xa4, 0x75, 0x2b, 0xf2,
97031 - 0xcc, 0xa3, 0x73, 0x86, 0x0f, 0x6f, 0xe6, 0xd7, 0x10, 0xdf, 0x12, 0x46,
97032 - 0x48, 0xa9, 0x62, 0xdc, 0x9a, 0xc8, 0x5a, 0x82, 0x4b, 0xb6, 0x3d, 0x27,
97033 - 0x32, 0x24, 0x12, 0xe9, 0x51, 0x08, 0x56, 0xd9, 0x2b, 0xee, 0x4d, 0x55,
97034 - 0x60, 0x53, 0x22, 0x8c, 0x15, 0x7a, 0xbf, 0xd2, 0x59, 0x48, 0x18, 0xaf,
97035 - 0xe2, 0x77, 0x95, 0x7b, 0xe6, 0x4d, 0xc6, 0x74, 0x9f, 0xb2, 0x67, 0xbe,
97036 - 0x0a, 0x97, 0x22, 0x22, 0x23, 0x6a, 0xfd, 0xba, 0x07, 0xef, 0xdd, 0xa5,
97037 - 0x40, 0xd5, 0xd3, 0x38, 0xdf, 0xa2, 0xd2, 0x9f, 0x3a, 0xc9, 0x2d, 0x62,
97038 - 0xf0, 0x2e, 0x44, 0xc3, 0x3b, 0xb9, 0x06, 0xd5, 0x0b, 0xb2, 0x2e, 0x1d,
97039 - 0xb4, 0x55, 0x3d, 0xfd, 0xaf, 0x53, 0xe9, 0xa0, 0x1d, 0xbb, 0x66, 0xa1,
97040 - 0x56, 0x99, 0xbd, 0xca, 0xb6, 0x82, 0x46, 0x3b, 0x89, 0x4d, 0x86, 0xc9,
97041 - 0x91, 0xc4, 0x47, 0xca, 0x6b, 0x28, 0x7e, 0x7a, 0xe3, 0x3a, 0xf6, 0x79,
97042 - 0x24, 0xd6, 0x36, 0xad, 0x36, 0x19, 0x87, 0x1e, 0xca, 0x25, 0x32, 0x04,
97043 - 0x50, 0xdb, 0x68, 0xaf, 0xf8, 0x30, 0xb5, 0xc0, 0x7b, 0x26, 0x8e, 0x17,
97044 - 0xba, 0xb9, 0x2e, 0xcd, 0x25, 0xbf, 0x52, 0xe9, 0x87, 0x1d, 0x1c, 0x5f,
97045 - 0xfc, 0x3b, 0x0d, 0x77, 0x2d, 0x3b, 0xc9, 0x89, 0xfe, 0xb5, 0x35, 0x3c,
97046 - 0xc8, 0x31, 0x64, 0x1d, 0x2b, 0xca, 0x7e, 0x19, 0xbe, 0x67, 0x3a, 0x8d,
97047 - 0xf7, 0x9c, 0x1c, 0x5a, 0xf6, 0xe1, 0x61, 0xa5, 0x93, 0x6b, 0x09, 0xbf,
97048 - 0x3b, 0xfe, 0xae, 0x69, 0xf8, 0x6b, 0x4c, 0xc4, 0xbc, 0xe4, 0x6d, 0x17,
97049 - 0x53, 0x09, 0x75, 0x52, 0xe9, 0xe6, 0x58, 0x8c, 0x2d, 0x62, 0x7d, 0x35,
97050 - 0xfd, 0xa6, 0x83, 0xfa, 0x76, 0x51, 0xdf, 0x2e, 0x67, 0x4e, 0xf1, 0xbb,
97051 - 0x5f, 0x9d, 0x77, 0x4b, 0xe1, 0x1e, 0x47, 0xf7, 0x9d, 0x7c, 0x67, 0x0f,
97052 - 0x65, 0xdd, 0xc3, 0xe7, 0xb7, 0x58, 0xdf, 0xe7, 0x35, 0x91, 0x57, 0xe2,
97053 - 0xfa, 0xc6, 0x5c, 0x25, 0xb1, 0xfd, 0xdd, 0x12, 0x57, 0x40, 0xc6, 0x63,
97054 - 0x4a, 0xec, 0x0f, 0xa1, 0xa7, 0x05, 0x81, 0xa5, 0xe6, 0x50, 0xdb, 0xee,
97055 - 0x06, 0xe2, 0x14, 0x71, 0x32, 0x70, 0x9c, 0x1c, 0x99, 0xd8, 0x3b, 0xd7,
97056 - 0xaa, 0x60, 0xcc, 0xb8, 0x99, 0xf1, 0x67, 0x60, 0xa2, 0xa0, 0x75, 0xc6,
97057 - 0x78, 0xaf, 0x79, 0x52, 0xb8, 0xfb, 0x01, 0xb4, 0x93, 0xaf, 0x45, 0xcd,
97058 - 0x41, 0x44, 0xad, 0x78, 0x74, 0x42, 0xd1, 0x06, 0xb7, 0x40, 0xbb, 0x40,
97059 - 0xcc, 0x1f, 0x9e, 0x55, 0xb4, 0xa1, 0x3a, 0xaf, 0x96, 0x7e, 0xdb, 0xe1,
97060 - 0xcd, 0x07, 0xb0, 0xda, 0xe1, 0x66, 0x83, 0x48, 0x92, 0xa3, 0xee, 0xe4,
97061 - 0x98, 0xfb, 0x37, 0x29, 0xb8, 0x62, 0xfc, 0x94, 0xeb, 0xa4, 0xa5, 0x33,
97062 - 0x8a, 0x81, 0x2c, 0xe3, 0x3f, 0x7a, 0x5c, 0x38, 0xf8, 0x01, 0x72, 0x70,
97063 - 0x04, 0x42, 0x7c, 0x36, 0x3b, 0x19, 0x1f, 0x0e, 0x78, 0xb5, 0x24, 0xf9,
97064 - 0x77, 0x9a, 0x63, 0x1a, 0x05, 0xf2, 0x72, 0xce, 0x11, 0xbb, 0xaf, 0x34,
97065 - 0x66, 0xa2, 0x34, 0xa6, 0x9e, 0x07, 0xe3, 0x62, 0x02, 0xdb, 0x13, 0xcc,
97066 - 0x01, 0xc4, 0xb2, 0xa3, 0xc2, 0xf5, 0x39, 0x5e, 0xe5, 0x71, 0x83, 0xdf,
97067 - 0x87, 0x95, 0x3d, 0x12, 0x33, 0x95, 0x2e, 0x73, 0xab, 0xe5, 0x1c, 0x35,
97068 - 0xe6, 0x21, 0x2c, 0x38, 0x73, 0x0c, 0xc9, 0x1c, 0x43, 0x3f, 0x52, 0xb4,
97069 - 0xe4, 0x39, 0x45, 0x30, 0xb8, 0xa9, 0xef, 0x1c, 0x63, 0xe4, 0x88, 0xa2,
97070 - 0xb5, 0x1e, 0xa3, 0xfa, 0x41, 0x5d, 0xc6, 0x3f, 0x54, 0x9a, 0x67, 0x08,
97071 - 0x8d, 0x79, 0xc6, 0x5f, 0x21, 0xa0, 0x6c, 0xc9, 0xb5, 0x63, 0x6c, 0xb6,
97072 - 0x1d, 0xa3, 0x39, 0x05, 0xf7, 0x18, 0xcb, 0x70, 0xe9, 0x66, 0xa7, 0xfe,
97073 - 0xa8, 0x59, 0xa1, 0xd7, 0x61, 0x44, 0x45, 0xad, 0x47, 0xff, 0x3c, 0xf6,
97074 - 0x96, 0xb8, 0xfb, 0xf6, 0x13, 0x3d, 0xc4, 0x73, 0x1b, 0x1f, 0x30, 0x56,
97075 - 0xe2, 0x4b, 0x90, 0xf6, 0x9b, 0xad, 0xe4, 0xd9, 0x4b, 0xbd, 0x6e, 0x3c,
97076 - 0xff, 0x7d, 0xc0, 0x5d, 0x03, 0xb1, 0xff, 0x67, 0xef, 0xb5, 0xe3, 0xe9,
97077 - 0x5c, 0x05, 0x5a, 0xd7, 0xe3, 0xce, 0x28, 0x6a, 0x3c, 0xcc, 0x5d, 0xef,
97078 - 0xec, 0x56, 0x1e, 0xe6, 0x3d, 0xe7, 0xd9, 0xc0, 0x6f, 0x98, 0x1f, 0xb7,
97079 - 0xfd, 0x71, 0xa3, 0x5c, 0x97, 0x67, 0x6f, 0xbc, 0xae, 0x9a, 0xff, 0xf2,
97080 - 0xba, 0x82, 0x17, 0x08, 0x50, 0x5f, 0x67, 0xae, 0xc8, 0x67, 0x6d, 0x78,
97081 - 0x4d, 0x1f, 0x06, 0x27, 0x63, 0x38, 0xb0, 0x10, 0xc1, 0x42, 0x56, 0xeb,
97082 - 0xbf, 0xc4, 0xba, 0x60, 0x6f, 0x8b, 0x8e, 0x87, 0x16, 0xa2, 0x98, 0xcf,
97083 - 0xc2, 0x0e, 0x9a, 0x7a, 0x31, 0xa8, 0x24, 0xb1, 0x7f, 0xa1, 0x1e, 0xe7,
97084 - 0xb2, 0xfa, 0x85, 0x51, 0x25, 0x31, 0x5c, 0x47, 0x3e, 0xf1, 0xc8, 0x42,
97085 - 0x33, 0x1e, 0x5e, 0x08, 0xf0, 0x1d, 0x1b, 0x5d, 0xa9, 0x7a, 0x3e, 0xef,
97086 - 0xc1, 0xf3, 0x27, 0x6d, 0x5b, 0xf8, 0xd4, 0xe0, 0x02, 0x30, 0x3f, 0xc5,
97087 - 0x1c, 0x73, 0x86, 0xf9, 0xe6, 0x19, 0x60, 0xff, 0x33, 0x1e, 0xcc, 0x4e,
97088 - 0xd9, 0xd8, 0x6b, 0x8c, 0xd6, 0x79, 0xe8, 0xe4, 0xfd, 0xcc, 0x07, 0x7e,
97089 - 0xe6, 0xb6, 0x7b, 0x55, 0x17, 0xa7, 0x2f, 0x11, 0x87, 0x1e, 0x78, 0x26,
97090 - 0x89, 0x77, 0xb2, 0x19, 0x74, 0x91, 0x77, 0x0f, 0x53, 0x96, 0xb7, 0xb3,
97091 - 0xcc, 0x4f, 0x0b, 0x06, 0xde, 0xca, 0x06, 0x38, 0x4f, 0x33, 0x5e, 0xcb,
97092 - 0xca, 0x33, 0xf2, 0x6c, 0x08, 0x03, 0x94, 0xe5, 0xcd, 0x6c, 0x94, 0x73,
97093 - 0x46, 0xf0, 0x1d, 0x3e, 0x77, 0xff, 0x82, 0xce, 0x7c, 0x14, 0xe0, 0xbc,
97094 - 0x31, 0xbc, 0x91, 0x0d, 0x51, 0xd6, 0x08, 0x73, 0xd0, 0x00, 0xc6, 0xb2,
97095 - 0x4d, 0x17, 0xb6, 0x90, 0xb3, 0xb8, 0x39, 0x44, 0xae, 0x5d, 0xb6, 0xbb,
97096 - 0x9d, 0x98, 0x93, 0x79, 0xca, 0xf3, 0x0e, 0x60, 0x34, 0xfb, 0x9a, 0xb7,
97097 - 0x5c, 0x27, 0xbf, 0x30, 0xb5, 0xe8, 0x70, 0xba, 0xe7, 0x2d, 0xfe, 0x3d,
97098 - 0x0b, 0x9c, 0xb3, 0x32, 0x76, 0xad, 0x49, 0x0e, 0xcb, 0xdc, 0xf3, 0xc3,
97099 - 0x0d, 0xcd, 0x9c, 0x57, 0xef, 0x7f, 0x45, 0x91, 0x3a, 0xc6, 0x87, 0xd8,
97100 - 0x33, 0x62, 0x2f, 0xc6, 0xf1, 0x3c, 0xf0, 0x57, 0xe4, 0x95, 0x8d, 0x93,
97101 - 0x9a, 0xf8, 0x7d, 0x1f, 0xf9, 0x4a, 0x4f, 0x11, 0x0d, 0xc9, 0x87, 0x30,
97102 - 0x62, 0x57, 0x90, 0x77, 0xd7, 0x92, 0xaf, 0x2e, 0x34, 0x33, 0xff, 0x6c,
97103 - 0xb0, 0xed, 0xef, 0xb7, 0xc0, 0xf6, 0x98, 0xba, 0x51, 0xe7, 0x2d, 0x7e,
97104 - 0xbe, 0x06, 0xfa, 0x85, 0xb0, 0xa2, 0x17, 0x7f, 0x88, 0xc4, 0xd0, 0xab,
97105 - 0x10, 0xbb, 0x02, 0x6b, 0x16, 0x7c, 0x58, 0x4b, 0x7d, 0xb6, 0x4e, 0x72,
97106 - 0x6e, 0xf2, 0x8e, 0x04, 0x75, 0xba, 0x7d, 0x92, 0x5c, 0x4a, 0x0f, 0x61,
97107 - 0x35, 0x6d, 0x3c, 0x78, 0xca, 0xb6, 0x2b, 0x69, 0xe3, 0x46, 0xae, 0xcf,
97108 - 0x7d, 0x27, 0x6c, 0xbc, 0x62, 0xbc, 0x42, 0x9b, 0x2a, 0xe4, 0x83, 0x2d,
97109 - 0x7c, 0x27, 0xc2, 0xe7, 0x03, 0xd8, 0x3f, 0x29, 0x75, 0x50, 0x3d, 0x9f,
97110 - 0xb9, 0x88, 0x63, 0xd9, 0x24, 0x9a, 0x69, 0xbf, 0x18, 0xc7, 0x6c, 0xe2,
97111 - 0x3b, 0xb1, 0x05, 0x37, 0x97, 0xc4, 0x16, 0x7e, 0x1d, 0x0e, 0x00, 0xa7,
97112 - 0xa7, 0xb4, 0x89, 0x22, 0xb9, 0x74, 0x8d, 0x39, 0x02, 0xe6, 0x62, 0xbc,
97113 - 0x3d, 0xa3, 0xe0, 0xf8, 0x14, 0x6b, 0xb7, 0x0d, 0xb0, 0xab, 0xa8, 0xc7,
97114 - 0x5b, 0x33, 0xbf, 0x89, 0xe7, 0x4e, 0x52, 0xf7, 0x67, 0x23, 0xf8, 0x7a,
97115 - 0xd6, 0x87, 0x5b, 0x8e, 0x0b, 0x3f, 0xd3, 0x93, 0x07, 0x14, 0xa9, 0x75,
97116 - 0xa4, 0x06, 0x49, 0xc4, 0xfc, 0x8a, 0x07, 0x0d, 0xcf, 0xf9, 0xa0, 0x9f,
97117 - 0x8b, 0xc1, 0xdf, 0x10, 0x80, 0xde, 0xf0, 0xfb, 0xc4, 0x17, 0x0f, 0x2a,
97118 - 0x58, 0x97, 0x6e, 0xff, 0x4a, 0x92, 0xd7, 0x22, 0xbc, 0x86, 0xdf, 0xac,
97119 - 0x84, 0x77, 0xb9, 0x97, 0xf9, 0xb8, 0x42, 0x27, 0xb7, 0xf2, 0xd9, 0xb6,
97120 - 0x97, 0x78, 0xbf, 0xe7, 0xab, 0xb6, 0x1d, 0x5f, 0x2f, 0xcf, 0xab, 0x88,
97121 - 0x9f, 0xd3, 0xf9, 0x9c, 0x9b, 0x03, 0xaf, 0x73, 0x2b, 0x2f, 0x7d, 0x47,
97122 - 0xe2, 0xf3, 0x71, 0xb8, 0xf5, 0x90, 0xcb, 0xc1, 0x5f, 0x2a, 0x08, 0x4f,
97123 - 0x89, 0x39, 0x3a, 0x9c, 0x9d, 0x52, 0x88, 0x73, 0x26, 0x9f, 0xdd, 0x0c,
97124 - 0x6f, 0x4a, 0x9b, 0xc8, 0x70, 0xed, 0xf7, 0xaa, 0xad, 0x78, 0xc1, 0xf2,
97125 - 0xa3, 0x5a, 0x5f, 0x8e, 0x07, 0x7b, 0x54, 0xbc, 0x40, 0x8e, 0xcf, 0x75,
97126 - 0x4a, 0x16, 0x51, 0xc9, 0x5a, 0x8b, 0xe3, 0x79, 0xfe, 0x1a, 0xfa, 0x57,
97127 - 0x3c, 0xc4, 0x36, 0xaf, 0x83, 0x6d, 0x15, 0x0d, 0x40, 0x31, 0xef, 0xc3,
97128 - 0x79, 0xdd, 0xe5, 0x77, 0x2f, 0x39, 0x79, 0x58, 0x53, 0x8b, 0xd7, 0x78,
97129 - 0x9d, 0xd6, 0x9a, 0x56, 0x0e, 0x7b, 0x45, 0xce, 0x17, 0x0b, 0x3b, 0x7d,
97130 - 0xae, 0xff, 0x5c, 0xf4, 0x4a, 0xfd, 0x70, 0xfd, 0x7b, 0x15, 0x3c, 0xa6,
97131 - 0x16, 0x6d, 0xf7, 0x22, 0xe0, 0x33, 0x03, 0x6d, 0xe3, 0xfa, 0xe7, 0x6e,
97132 - 0x90, 0xbd, 0x19, 0x63, 0x85, 0xeb, 0x75, 0x73, 0x67, 0xd6, 0xf1, 0x9b,
97133 - 0x4e, 0xb1, 0xfd, 0x53, 0x86, 0x60, 0xeb, 0xb0, 0xd2, 0x41, 0xac, 0xca,
97134 - 0xf8, 0xdc, 0xba, 0xf8, 0x08, 0xeb, 0xe2, 0xd7, 0xb3, 0xd2, 0x1b, 0x39,
97135 - 0x84, 0x7d, 0x0e, 0xce, 0x0e, 0x09, 0xce, 0xc6, 0xce, 0x42, 0x1b, 0x1c,
97136 - 0x28, 0xe1, 0xec, 0x9c, 0x8b, 0xb3, 0xfd, 0x2e, 0xce, 0x1e, 0x2a, 0xe1,
97137 - 0xec, 0x10, 0x9a, 0xf3, 0x11, 0x72, 0xe0, 0x0e, 0xe6, 0xda, 0x6e, 0x72,
97138 - 0x0e, 0xc9, 0x91, 0x7d, 0xca, 0xce, 0xf9, 0x80, 0xb2, 0x2d, 0x17, 0xc0,
97139 - 0xeb, 0xe4, 0x53, 0x33, 0xbd, 0x50, 0x6f, 0xd9, 0x80, 0xe0, 0xce, 0x5c,
97140 - 0x0f, 0x2a, 0x75, 0xa9, 0x03, 0x2b, 0xb1, 0xdd, 0xc9, 0x55, 0x52, 0x2f,
97141 - 0x49, 0x2f, 0xa0, 0x97, 0x58, 0x07, 0x35, 0x68, 0xba, 0x75, 0xbf, 0xe0,
97142 - 0xde, 0xed, 0x7c, 0xf7, 0x2c, 0xfd, 0x10, 0x6e, 0x4e, 0x53, 0xee, 0x60,
97143 - 0x3d, 0xf0, 0x61, 0x4a, 0x41, 0xf1, 0xce, 0x00, 0x38, 0x16, 0xf5, 0x3d,
97144 - 0xd0, 0x36, 0x3e, 0xd5, 0xa3, 0x74, 0xcc, 0xce, 0x05, 0x99, 0xb7, 0x99,
97145 - 0x93, 0x66, 0x82, 0x6e, 0xae, 0xfe, 0xec, 0x58, 0xd2, 0x73, 0x49, 0xb6,
97146 - 0x6d, 0x22, 0xc7, 0x69, 0x5d, 0xff, 0x8f, 0x36, 0x7e, 0x47, 0xde, 0xff,
97147 - 0xcf, 0x25, 0xfb, 0xa5, 0x29, 0x4f, 0x24, 0xb0, 0xbd, 0xa0, 0x06, 0xd2,
97148 - 0x85, 0x0e, 0xbe, 0xdf, 0xc3, 0xb1, 0x7a, 0x83, 0x1d, 0xd6, 0xdd, 0xc1,
97149 - 0xad, 0x56, 0x77, 0x70, 0x9b, 0xc5, 0xd8, 0x2d, 0xf4, 0xd2, 0x8e, 0x3d,
97150 - 0xac, 0xe1, 0xef, 0x26, 0x7f, 0x90, 0x31, 0xfb, 0xc9, 0x65, 0x82, 0xd4,
97151 - 0x6d, 0x84, 0xba, 0x15, 0xa3, 0x7e, 0xa4, 0x35, 0x3f, 0x34, 0x75, 0xcc,
97152 - 0x59, 0xb7, 0x09, 0xa7, 0x8f, 0x54, 0x65, 0xae, 0x6e, 0xeb, 0x3a, 0x41,
97153 - 0x4c, 0x37, 0x1b, 0xda, 0x6e, 0x39, 0x85, 0x25, 0x7e, 0x53, 0xea, 0x5e,
97154 - 0xd6, 0xb2, 0x89, 0x84, 0xf1, 0x3e, 0x12, 0xd1, 0xd7, 0xf9, 0xec, 0x28,
97155 - 0x7d, 0x75, 0xcc, 0xe9, 0x1d, 0x70, 0x01, 0xf2, 0xcd, 0xe8, 0xb2, 0x02,
97156 - 0xc1, 0xdb, 0x59, 0x57, 0x85, 0x4d, 0xad, 0x75, 0x97, 0x57, 0x7a, 0x19,
97157 - 0xc5, 0xdf, 0x0e, 0xa1, 0x19, 0x9d, 0x85, 0x40, 0x70, 0xcb, 0xf4, 0xe7,
97158 - 0xf0, 0x0f, 0x27, 0x99, 0xbb, 0x20, 0x7e, 0x67, 0xdb, 0xf7, 0xb3, 0x26,
97159 - 0x39, 0x9a, 0xaf, 0xc7, 0x15, 0x67, 0x4d, 0x7d, 0x38, 0x92, 0x8f, 0xe1,
97160 - 0x32, 0xf1, 0xc9, 0xb7, 0x50, 0x87, 0x77, 0xa7, 0xbc, 0xd8, 0x67, 0xdc,
97161 - 0x56, 0xca, 0x09, 0x1e, 0xdc, 0x9b, 0x3c, 0x48, 0x1e, 0xe0, 0x41, 0x2d,
97162 - 0x39, 0xd8, 0x23, 0xce, 0x35, 0x2f, 0x6b, 0xb7, 0x2f, 0x62, 0xd8, 0xcd,
97163 - 0x19, 0x94, 0xb1, 0x9e, 0x32, 0xb6, 0x04, 0xb7, 0xe4, 0xb4, 0xe0, 0x1d,
97164 - 0x39, 0x04, 0xfc, 0xe6, 0xca, 0xb6, 0x33, 0x27, 0x6d, 0x0c, 0x18, 0xab,
97165 - 0xf0, 0xe1, 0xc9, 0xd1, 0x41, 0x1f, 0xfd, 0xe5, 0x27, 0xa9, 0x3e, 0x58,
97166 - 0xd3, 0x38, 0x4f, 0x26, 0x71, 0x31, 0x44, 0xfc, 0x6e, 0x24, 0x67, 0xa0,
97167 - 0x1f, 0x18, 0xf3, 0x8c, 0xc5, 0x6d, 0xf4, 0x0f, 0xfa, 0x43, 0xda, 0x6b,
97168 - 0x26, 0xfa, 0xc7, 0x48, 0x00, 0x6b, 0x28, 0x4f, 0x90, 0xf8, 0x1c, 0x5a,
97169 - 0x88, 0x05, 0xf7, 0x30, 0xa7, 0x44, 0x59, 0x9b, 0x05, 0x13, 0xb8, 0xad,
97170 - 0x0e, 0x89, 0xe4, 0x22, 0xf5, 0xf6, 0x2f, 0x34, 0x07, 0x77, 0x31, 0x47,
97171 - 0x5c, 0x49, 0xd8, 0x23, 0xaf, 0x18, 0x21, 0x84, 0x17, 0x0c, 0xda, 0xbb,
97172 - 0x0f, 0xa3, 0xf3, 0x2c, 0x97, 0x12, 0xac, 0xd7, 0x17, 0x5a, 0x83, 0xb7,
97173 - 0x33, 0x16, 0x6b, 0x88, 0x53, 0x4d, 0x0b, 0xe9, 0xa0, 0xd4, 0x6b, 0xcd,
97174 - 0x0b, 0x1b, 0x29, 0x9f, 0xac, 0x63, 0x73, 0xdb, 0x26, 0xfa, 0x41, 0x6c,
97175 - 0x01, 0xdb, 0x09, 0x65, 0xaf, 0x71, 0xcc, 0xbe, 0x28, 0x79, 0xe8, 0xfe,
97176 - 0x0d, 0x21, 0x62, 0x91, 0xd8, 0x92, 0x76, 0x2c, 0x94, 0x75, 0x92, 0xdc,
97177 - 0xdb, 0xd0, 0xb6, 0x70, 0x4a, 0x72, 0x6f, 0xb4, 0x2d, 0x7b, 0x4a, 0xc7,
97178 - 0x65, 0xe6, 0x8f, 0x35, 0x29, 0xcd, 0x38, 0xa7, 0xc4, 0xa3, 0x17, 0xa9,
97179 - 0x8b, 0x0f, 0x3f, 0xb3, 0xf7, 0xea, 0x89, 0xe2, 0x4a, 0xc6, 0x4f, 0x2d,
97180 - 0xf1, 0x2f, 0x4a, 0x5c, 0xaf, 0x5d, 0xa0, 0x61, 0x16, 0x7e, 0x46, 0xff,
97181 - 0x88, 0x22, 0x90, 0xd0, 0xf1, 0xde, 0xc9, 0x24, 0xed, 0x70, 0x6d, 0xcc,
97182 - 0x03, 0xa4, 0x50, 0x03, 0x4c, 0x77, 0x4f, 0x3c, 0x47, 0x1f, 0x1c, 0xe7,
97183 - 0xbc, 0x15, 0x0b, 0x22, 0xb3, 0x3c, 0x1f, 0xe1, 0xf3, 0xd7, 0xe7, 0xae,
97184 - 0xe5, 0xdc, 0x1f, 0x9d, 0x92, 0xfe, 0x52, 0xb4, 0xed, 0xfc, 0x49, 0x77,
97185 - 0xee, 0x44, 0x2a, 0x89, 0x9f, 0x9e, 0xd4, 0x86, 0xde, 0x53, 0xe2, 0xfd,
97186 - 0xe7, 0x15, 0x99, 0x1f, 0xf5, 0x35, 0xf8, 0xd0, 0x1e, 0x4d, 0x24, 0x86,
97187 - 0xf7, 0x72, 0xcc, 0xd6, 0x8d, 0xb4, 0xbf, 0x23, 0x07, 0x13, 0x3b, 0xb1,
97188 - 0xd4, 0x4f, 0x79, 0x5c, 0x59, 0xea, 0x39, 0xf6, 0xc9, 0x52, 0x9d, 0xc5,
97189 - 0x1a, 0xf3, 0xba, 0x3c, 0x11, 0xda, 0x21, 0xb0, 0xa7, 0x25, 0x84, 0x3a,
97190 - 0xe7, 0x39, 0x95, 0xcf, 0x89, 0x1d, 0x7e, 0xae, 0x78, 0xf4, 0xf7, 0x89,
97191 - 0x5b, 0x82, 0x1d, 0x11, 0x62, 0xd6, 0xdd, 0x52, 0x8f, 0x66, 0x32, 0xf4,
97192 - 0x77, 0x3f, 0xfd, 0x7d, 0xab, 0xf8, 0xb4, 0x45, 0x9f, 0xb6, 0xe8, 0xd3,
97193 - 0x96, 0x16, 0x1d, 0x42, 0x5c, 0x1d, 0xe0, 0xba, 0xa5, 0xa3, 0xe2, 0xeb,
97194 - 0xbd, 0xd8, 0xc7, 0xdf, 0xfb, 0x78, 0xff, 0x08, 0x6b, 0x54, 0x2c, 0x95,
97195 - 0x39, 0x0f, 0xa1, 0xc3, 0x7a, 0x02, 0x83, 0x39, 0xfc, 0x22, 0xd8, 0x52,
97196 - 0x89, 0xca, 0xd5, 0x52, 0x7f, 0x6b, 0xea, 0x51, 0x3c, 0xc1, 0x1a, 0xe8,
97197 - 0xe7, 0x4a, 0xb5, 0xee, 0xeb, 0x39, 0xa6, 0x68, 0x6a, 0x07, 0x6b, 0xd9,
97198 - 0xbd, 0x85, 0xbb, 0xb9, 0xbe, 0xf1, 0xc1, 0xd7, 0x15, 0xd6, 0x41, 0x75,
97199 - 0x9c, 0x9b, 0xb1, 0x74, 0x07, 0xe7, 0xb1, 0x44, 0x0e, 0x07, 0x5f, 0x7f,
97200 - 0x0f, 0x62, 0xdb, 0x6f, 0x37, 0x0e, 0x70, 0x7e, 0x57, 0x8e, 0x51, 0xd6,
97201 - 0x83, 0x03, 0x8c, 0xb1, 0x7d, 0x4e, 0x7c, 0xf5, 0x72, 0x8c, 0xeb, 0xb8,
97202 - 0xb5, 0x25, 0x2b, 0xf9, 0xd2, 0xc6, 0x93, 0x86, 0x8d, 0xe7, 0xf9, 0x7b,
97203 - 0x81, 0xd8, 0x35, 0x76, 0x03, 0x76, 0x79, 0xf8, 0xdc, 0x1e, 0x3e, 0xd7,
97204 - 0x4a, 0xdc, 0x9e, 0x9f, 0x95, 0xbe, 0xde, 0x21, 0xe9, 0xeb, 0x21, 0x6f,
97205 - 0x89, 0xed, 0x87, 0x70, 0x3e, 0x1b, 0x1f, 0xf6, 0x7a, 0xed, 0x11, 0xc6,
97206 - 0xd5, 0x85, 0x8f, 0xe8, 0xbb, 0x6f, 0x6e, 0xd0, 0x7a, 0x68, 0xc3, 0xe4,
97207 - 0xa4, 0xa2, 0x45, 0xbf, 0x8b, 0xe2, 0xf6, 0x00, 0x9a, 0x62, 0x6b, 0xbd,
97208 - 0x09, 0x95, 0x38, 0x57, 0x1c, 0xa0, 0xa6, 0xcf, 0x16, 0x5c, 0x6c, 0xdb,
97209 - 0x54, 0xc2, 0xb6, 0xd6, 0x7c, 0x15, 0xb1, 0x87, 0x39, 0x78, 0xd6, 0xce,
97210 - 0x84, 0x99, 0x9f, 0x0a, 0xb3, 0x32, 0xf6, 0x08, 0x9a, 0x52, 0x32, 0x96,
97211 - 0xde, 0x39, 0xa9, 0xe0, 0x4b, 0xd5, 0x48, 0x30, 0x37, 0xc1, 0xa8, 0xd4,
97212 - 0x33, 0x36, 0x73, 0x90, 0xea, 0x37, 0x25, 0x3f, 0x76, 0x13, 0x0f, 0x7b,
97213 - 0x89, 0x87, 0xc2, 0x99, 0xa5, 0xd7, 0xe9, 0xe2, 0xd1, 0xd6, 0x82, 0xac,
97214 - 0x8b, 0xac, 0x89, 0xac, 0xcd, 0x21, 0xdc, 0x6b, 0x49, 0xdd, 0x6e, 0x63,
97215 - 0xca, 0x48, 0xc4, 0x9e, 0x83, 0xac, 0xd3, 0x21, 0xda, 0xc2, 0x8f, 0x7d,
97216 - 0xc4, 0xbf, 0xbd, 0x2d, 0xb4, 0x55, 0xd8, 0x8f, 0xbd, 0x4e, 0x1f, 0xa0,
97217 - 0x6c, 0x3f, 0x3f, 0xd7, 0x50, 0x61, 0x4e, 0xfb, 0xaa, 0xdf, 0xb5, 0xa3,
97218 - 0xdb, 0x57, 0xf4, 0x9a, 0x32, 0x5e, 0xb9, 0xa7, 0xe8, 0xda, 0x6e, 0x7b,
97219 - 0x56, 0xc6, 0xb5, 0x71, 0xd6, 0x70, 0xb9, 0x69, 0xd9, 0x66, 0x82, 0xed,
97220 - 0x4b, 0x36, 0x02, 0x6b, 0x6f, 0xe0, 0xa7, 0x55, 0xbc, 0xd6, 0x75, 0x9d,
97221 - 0x9f, 0xf6, 0x09, 0x07, 0x26, 0x3f, 0xed, 0xdc, 0x49, 0x7e, 0xda, 0xa0,
97222 - 0x94, 0xb9, 0xa9, 0xf4, 0x14, 0xca, 0xfc, 0xb4, 0xb6, 0x84, 0xcd, 0x87,
97223 - 0xb0, 0x97, 0xdc, 0xa5, 0xae, 0x61, 0x04, 0x81, 0x75, 0x9e, 0x4f, 0x3d,
97224 - 0x18, 0x61, 0xed, 0x51, 0x01, 0x2c, 0xb3, 0xb1, 0x72, 0x7d, 0xc6, 0xae,
97225 - 0xd4, 0x1b, 0x62, 0x95, 0x1e, 0xe9, 0x19, 0x27, 0x32, 0x63, 0xc4, 0x12,
97226 - 0xcf, 0x3a, 0x2d, 0x93, 0x46, 0x40, 0x5d, 0xa2, 0xdf, 0x5d, 0xaa, 0x09,
97227 - 0xa2, 0x81, 0x1d, 0xe4, 0x36, 0x89, 0xd4, 0x2f, 0xed, 0x99, 0xc8, 0x08,
97228 - 0xa2, 0xeb, 0x8a, 0xc3, 0x51, 0xa4, 0x0f, 0x46, 0x1d, 0x5c, 0x99, 0x40,
97229 - 0x3e, 0x11, 0x0d, 0x74, 0x17, 0x32, 0xc1, 0xae, 0xc6, 0x18, 0x76, 0x4e,
97230 - 0x76, 0xb0, 0xe6, 0xd0, 0xb1, 0x6d, 0xb2, 0x93, 0xf5, 0x51, 0x8f, 0xd2,
97231 - 0x33, 0x2b, 0xf6, 0x11, 0xfb, 0x6a, 0x6a, 0xcc, 0x73, 0x63, 0x2f, 0xb3,
97232 - 0x5c, 0xcf, 0xbe, 0xef, 0xf8, 0xce, 0xb8, 0xa1, 0xd2, 0x2e, 0xff, 0xdb,
97233 - 0x8f, 0xb0, 0x8d, 0x33, 0x86, 0xf8, 0x1c, 0xbf, 0xb3, 0xb6, 0xda, 0xda,
97234 - 0x32, 0x65, 0xfb, 0x74, 0xe9, 0x49, 0x47, 0x9d, 0xf5, 0x92, 0x1a, 0xab,
97235 - 0x63, 0xb6, 0x97, 0x6b, 0x54, 0xee, 0x3f, 0xdf, 0xb8, 0x56, 0x9b, 0x83,
97236 - 0x5b, 0x89, 0x67, 0xac, 0xc7, 0x02, 0x01, 0x62, 0x64, 0xe0, 0x94, 0x8d,
97237 - 0x59, 0xe3, 0x1d, 0xfb, 0x49, 0xdd, 0xc7, 0xf5, 0xb8, 0x95, 0x78, 0x2b,
97238 - 0xfc, 0xc3, 0x0c, 0xee, 0x9a, 0xf6, 0x79, 0x58, 0x5b, 0xb5, 0x54, 0xc0,
97239 - 0xa9, 0xad, 0x9c, 0x3e, 0xe1, 0xb1, 0xfc, 0x6d, 0xc1, 0xae, 0x1c, 0xeb,
97240 - 0x04, 0xd6, 0xa9, 0x6e, 0x8d, 0x76, 0x6b, 0xf0, 0x9e, 0x9c, 0x57, 0xa9,
97241 - 0x33, 0xe1, 0x6d, 0xdd, 0x68, 0xe3, 0xe3, 0xf5, 0x89, 0xe1, 0xa8, 0x87,
97242 - 0xd8, 0xc8, 0xb1, 0xac, 0x7c, 0x4b, 0xb0, 0x8f, 0x58, 0x7c, 0x7b, 0x0e,
97243 - 0x69, 0xe9, 0xa9, 0x86, 0xd7, 0x8f, 0xf6, 0x87, 0x21, 0xfd, 0x2f, 0x7c,
97244 - 0x89, 0xd1, 0x18, 0xa1, 0xaf, 0x45, 0xdb, 0x95, 0xc4, 0xe2, 0x20, 0x12,
97245 - 0x17, 0x3e, 0xf6, 0xbe, 0x63, 0x3f, 0x9d, 0xdf, 0xc8, 0xe7, 0x3b, 0x89,
97246 - 0x93, 0x69, 0xe2, 0xe6, 0xe8, 0xb0, 0x1f, 0xf2, 0x8e, 0xd6, 0xf7, 0xb6,
97247 - 0x12, 0xa7, 0x8f, 0xe3, 0x77, 0xf8, 0xbc, 0xba, 0x8d, 0x18, 0x39, 0x6b,
97248 - 0x24, 0xd2, 0x5b, 0x90, 0xe9, 0xac, 0x85, 0x66, 0x34, 0x2a, 0xd2, 0xaf,
97249 - 0x12, 0xfb, 0x27, 0xf1, 0x3d, 0xce, 0xe9, 0xd3, 0xc5, 0x8e, 0x9b, 0x31,
97250 - 0x30, 0xab, 0xa9, 0xd7, 0xfd, 0x4c, 0x6c, 0x20, 0x76, 0xe9, 0xa8, 0x40,
97251 - 0xd5, 0x52, 0xea, 0xf6, 0x3d, 0x07, 0x4f, 0x82, 0xba, 0x8e, 0xff, 0x42,
97252 - 0x1e, 0xf4, 0x17, 0x05, 0xe9, 0x4b, 0x96, 0xb9, 0x9d, 0xf8, 0x44, 0x73,
97253 - 0xdb, 0x2d, 0x33, 0xc9, 0x52, 0x9f, 0x32, 0x10, 0xec, 0x9c, 0xb6, 0x71,
97254 - 0xd2, 0x08, 0x43, 0xea, 0xf3, 0xca, 0x54, 0x91, 0x19, 0xbf, 0x19, 0xdb,
97255 - 0x78, 0xbd, 0x63, 0xba, 0x5a, 0xe9, 0xc8, 0xd9, 0xf8, 0xa6, 0xa1, 0x65,
97256 - 0xda, 0xbd, 0x8c, 0x65, 0x43, 0x3b, 0x0b, 0x5c, 0x26, 0x27, 0x12, 0xdf,
97257 - 0xf2, 0x21, 0xa4, 0xbb, 0x63, 0x35, 0xcf, 0xdc, 0x46, 0xbe, 0x20, 0xb1,
97258 - 0xe5, 0x5d, 0x53, 0x85, 0x94, 0x32, 0xe3, 0x13, 0xbb, 0x75, 0x22, 0x5d,
97259 - 0xa8, 0x56, 0x76, 0xd3, 0x96, 0x77, 0xac, 0xab, 0xc0, 0x25, 0xc7, 0x96,
97260 - 0xb7, 0xd1, 0x96, 0x78, 0x6b, 0x05, 0xbc, 0xe7, 0xeb, 0xd0, 0xa9, 0xc0,
97261 - 0xa9, 0xbd, 0xaa, 0x99, 0x9f, 0xd3, 0xe4, 0xae, 0xe4, 0x7d, 0x6a, 0x2f,
97262 - 0xbe, 0x42, 0x9c, 0x79, 0x92, 0x3e, 0xfa, 0x33, 0xbd, 0x19, 0x55, 0x5f,
97263 - 0x6d, 0xe1, 0x3a, 0x6e, 0x0c, 0xee, 0xc8, 0xf5, 0xe1, 0xa9, 0x79, 0x1b,
97264 - 0xcf, 0x31, 0x3e, 0x1a, 0x53, 0x19, 0xb5, 0x92, 0xb5, 0x18, 0x73, 0xd9,
97265 - 0xe2, 0x09, 0xc7, 0xbf, 0x57, 0xb6, 0x6d, 0x9e, 0x8b, 0xc2, 0xfb, 0x15,
97266 - 0xf9, 0xbb, 0xbe, 0x2d, 0x36, 0x27, 0x9f, 0x51, 0x7e, 0xda, 0x18, 0x32,
97267 - 0xb4, 0xf4, 0xc7, 0xde, 0x2a, 0x54, 0x27, 0x6c, 0x7b, 0x28, 0x25, 0xd7,
97268 - 0xf5, 0xb6, 0xa4, 0x73, 0xbf, 0x81, 0x9f, 0xe5, 0x3e, 0xf2, 0xeb, 0xc2,
97269 - 0xf9, 0x62, 0x69, 0xea, 0xbc, 0x93, 0x79, 0xbd, 0x8f, 0x79, 0xbd, 0xce,
97270 - 0xd4, 0xd2, 0x7b, 0xbc, 0xd2, 0x3b, 0x29, 0x1e, 0xac, 0xe5, 0xf5, 0x5d,
97271 - 0xa5, 0xbc, 0x5e, 0x73, 0x4a, 0xfa, 0x70, 0xe4, 0x7a, 0x70, 0xf7, 0x2f,
97272 - 0xba, 0x99, 0xd7, 0xab, 0x26, 0x7d, 0xe8, 0x62, 0x4e, 0xf7, 0x93, 0x67,
97273 - 0x6f, 0xcd, 0xd7, 0x21, 0x78, 0xc2, 0x8b, 0x78, 0xea, 0xdb, 0x38, 0x48,
97274 - 0x1f, 0x3b, 0x98, 0xf4, 0x2a, 0xb1, 0xe5, 0x1e, 0xda, 0xe9, 0x9f, 0x70,
97275 - 0x40, 0xf5, 0xa2, 0x46, 0xff, 0x2e, 0x1e, 0xfa, 0x35, 0xb9, 0xbc, 0x2f,
97276 - 0x27, 0x31, 0xbd, 0xb2, 0xad, 0xeb, 0x94, 0x9b, 0xcb, 0x43, 0xa7, 0x46,
97277 - 0x17, 0x25, 0x97, 0xd7, 0xad, 0xef, 0xc3, 0xe9, 0x69, 0xfc, 0xe1, 0x0a,
97278 - 0x92, 0xc4, 0x3a, 0xce, 0xd9, 0x90, 0x4a, 0xb0, 0x6e, 0xd6, 0x06, 0xb7,
97279 - 0x29, 0x89, 0x89, 0x1a, 0xc6, 0xfe, 0x69, 0xe6, 0xf2, 0x80, 0x99, 0x50,
97280 - 0x93, 0x1e, 0x74, 0xfb, 0xb9, 0x1e, 0x1f, 0xb0, 0x86, 0xfe, 0x61, 0x3e,
97281 - 0xc6, 0x31, 0x2b, 0xe0, 0x63, 0x2e, 0xff, 0x40, 0xc7, 0xa7, 0x5e, 0xfa,
97282 - 0xde, 0x65, 0x6f, 0x00, 0x57, 0xf3, 0x6e, 0x2e, 0xaf, 0x6d, 0xb4, 0x47,
97283 - 0xae, 0xa4, 0x42, 0xf8, 0x30, 0x6f, 0xd0, 0x07, 0xfb, 0x70, 0x84, 0xb9,
97284 - 0xfc, 0x8a, 0xae, 0xe2, 0xa7, 0xf9, 0x56, 0xfa, 0x65, 0x04, 0x3f, 0x21,
97285 - 0xcf, 0x5d, 0xc7, 0x5c, 0x7e, 0x27, 0x7d, 0x2a, 0xc5, 0x5c, 0xde, 0xee,
97286 - 0xf0, 0x8c, 0xe6, 0xb6, 0x33, 0x53, 0x4e, 0x2e, 0x6f, 0x64, 0x89, 0x5f,
97287 - 0xef, 0x47, 0x62, 0x91, 0xf8, 0x60, 0xff, 0x6c, 0x63, 0x88, 0xcf, 0xd2,
97288 - 0x6e, 0x85, 0xf5, 0x98, 0x71, 0x72, 0xcf, 0xe6, 0xe0, 0x6e, 0xce, 0xbd,
97289 - 0xcc, 0x89, 0x33, 0x1b, 0x3b, 0xd7, 0xbd, 0x89, 0x3f, 0x58, 0xe2, 0xa1,
97290 - 0x1f, 0x9a, 0xc1, 0x3b, 0x18, 0x6b, 0x61, 0xfa, 0xd7, 0x4f, 0x53, 0x89,
97291 - 0xfe, 0x73, 0xac, 0x21, 0x7f, 0xc2, 0x38, 0xbb, 0x93, 0xbe, 0xb1, 0x72,
97292 - 0x5d, 0x80, 0xeb, 0xee, 0xc6, 0x59, 0x07, 0xe3, 0x2c, 0xca, 0x38, 0x5b,
97293 - 0xc1, 0x38, 0x7b, 0xda, 0x48, 0x24, 0x37, 0x93, 0x6f, 0xbd, 0x9e, 0x97,
97294 - 0x58, 0x6b, 0xe1, 0xb8, 0x1a, 0xf5, 0x1a, 0xed, 0x97, 0x98, 0xd9, 0xb9,
97295 - 0x6e, 0xf4, 0x6c, 0x35, 0xc4, 0x56, 0xf8, 0x74, 0x19, 0xb9, 0x05, 0x11,
97296 - 0xe9, 0xc2, 0xa2, 0x37, 0x31, 0xbc, 0xca, 0x9b, 0x18, 0x7a, 0x5f, 0x79,
97297 - 0xc7, 0x7e, 0x8b, 0x71, 0x76, 0x3b, 0xe3, 0x6c, 0x37, 0xe3, 0xac, 0xdd,
97298 - 0xb2, 0xf1, 0x52, 0x4a, 0xeb, 0x6b, 0xf6, 0xc4, 0x8d, 0x76, 0x0f, 0x56,
97299 - 0x54, 0x33, 0x25, 0x04, 0x91, 0xe8, 0xfc, 0x03, 0xca, 0x7f, 0xc1, 0x48,
97300 - 0xf4, 0x24, 0x15, 0x89, 0xad, 0x18, 0x7e, 0x4c, 0xbd, 0x2b, 0x4b, 0xb1,
97301 - 0xb5, 0x7f, 0xf6, 0xd5, 0x92, 0x6f, 0x94, 0x75, 0xf7, 0xe2, 0x45, 0x83,
97302 - 0x18, 0xba, 0x54, 0x8b, 0x65, 0x3c, 0xbd, 0x98, 0xa0, 0x1d, 0x83, 0x89,
97303 - 0x5e, 0x1c, 0x65, 0x1e, 0xbc, 0x9f, 0xf9, 0xf7, 0x01, 0x2b, 0xde, 0xba,
97304 - 0x83, 0x75, 0xce, 0xa5, 0xa8, 0x16, 0x8b, 0x29, 0xbd, 0x18, 0xa0, 0x0f,
97305 - 0x0f, 0x30, 0x5f, 0xb4, 0x5b, 0x3f, 0x57, 0xb6, 0x91, 0x23, 0xdc, 0x57,
97306 - 0x90, 0xf7, 0xb4, 0x64, 0xbf, 0x67, 0x10, 0xfd, 0xf3, 0x82, 0x6d, 0x50,
97307 - 0x6f, 0x32, 0x7b, 0x71, 0xdc, 0xaa, 0x40, 0x6f, 0x4b, 0xb7, 0xb2, 0xab,
97308 - 0x20, 0xbd, 0x33, 0xc6, 0xa3, 0xc5, 0x78, 0x75, 0xe4, 0x55, 0x88, 0xa5,
97309 - 0xdd, 0xc8, 0x4a, 0x7c, 0x5a, 0xbb, 0x95, 0x3b, 0x67, 0x25, 0xc6, 0x7b,
97310 - 0x95, 0x5e, 0x89, 0x61, 0x6b, 0x58, 0xb9, 0x4b, 0x62, 0xda, 0xe9, 0x33,
97311 - 0x4b, 0xdc, 0xcb, 0x3e, 0xc4, 0x6d, 0xe4, 0x6f, 0x60, 0x4c, 0x79, 0xbf,
97312 - 0x1a, 0x65, 0xdc, 0xb5, 0x57, 0x78, 0xe8, 0xa7, 0x71, 0xae, 0x9d, 0x07,
97313 - 0x1d, 0xc6, 0x6f, 0xda, 0x19, 0xb5, 0x9f, 0x31, 0xd5, 0x8b, 0x23, 0xd6,
97314 - 0x6f, 0xd8, 0x57, 0x1c, 0x5e, 0x52, 0xc6, 0xf3, 0xcd, 0xb8, 0x37, 0xb7,
97315 - 0x1c, 0x01, 0x5d, 0xf2, 0x75, 0x08, 0xc9, 0x25, 0x01, 0x54, 0xe9, 0x92,
97316 - 0x67, 0x9a, 0xdb, 0x16, 0x4e, 0x50, 0x86, 0x0d, 0xe5, 0xf8, 0xde, 0x8c,
97317 - 0x07, 0x89, 0x03, 0xfb, 0x52, 0xf7, 0xe2, 0x01, 0xb5, 0x0a, 0x61, 0xda,
97318 - 0xe9, 0x61, 0x35, 0x44, 0x7c, 0xfd, 0xbd, 0xd2, 0x38, 0xff, 0xa9, 0xa2,
97319 - 0x54, 0x33, 0x5f, 0xe3, 0x54, 0x75, 0x8c, 0xb1, 0x4d, 0xd3, 0x52, 0x9b,
97320 - 0x44, 0xdb, 0xa2, 0xd3, 0x3a, 0xc2, 0xac, 0x55, 0x37, 0xa7, 0xb4, 0xe1,
97321 - 0xcd, 0xde, 0xf8, 0xe0, 0xa2, 0x82, 0x6c, 0x98, 0x7c, 0x2e, 0x9f, 0x48,
97322 - 0xf4, 0x34, 0x8b, 0x8d, 0xf5, 0x28, 0xb6, 0xd3, 0x4e, 0x5d, 0xf9, 0x08,
97323 - 0x63, 0xe8, 0xbd, 0x0a, 0xe1, 0x46, 0xe9, 0xfc, 0xf5, 0xb1, 0xa2, 0x1c,
97324 - 0x2b, 0x3a, 0x2d, 0x3c, 0x2d, 0x4a, 0x9e, 0xa6, 0x33, 0x0e, 0x6d, 0x7b,
97325 - 0x13, 0xf9, 0x59, 0xe8, 0x94, 0xd4, 0x38, 0xf1, 0x09, 0x72, 0xda, 0x66,
97326 - 0xf2, 0xdd, 0x5e, 0x7a, 0xb5, 0xbd, 0xb2, 0x21, 0x61, 0xb4, 0x2b, 0x78,
97327 - 0x62, 0xae, 0x85, 0xf5, 0x11, 0xc7, 0xbc, 0x9c, 0x57, 0x71, 0x25, 0x1f,
97328 - 0xc5, 0xbb, 0x1c, 0xfb, 0x92, 0x33, 0x76, 0x3d, 0x7e, 0x54, 0xc2, 0xad,
97329 - 0x14, 0x71, 0x6b, 0x4b, 0x4e, 0xa1, 0xbf, 0xc6, 0x30, 0x62, 0xfc, 0xdd,
97330 - 0xa7, 0x97, 0x6e, 0x0e, 0xd0, 0x6e, 0xa2, 0x8b, 0x8f, 0x9f, 0xe3, 0x78,
97331 - 0xd8, 0xc1, 0xe9, 0x37, 0x3f, 0x9d, 0x59, 0xc2, 0xb5, 0xa2, 0xed, 0x6b,
97332 - 0x4b, 0xef, 0xad, 0x9d, 0xf9, 0xf3, 0x92, 0xbe, 0x3a, 0x3c, 0xa7, 0x92,
97333 - 0xa8, 0x38, 0x75, 0x4d, 0x56, 0x5d, 0xe2, 0x83, 0x19, 0xf5, 0x89, 0xaf,
97334 - 0x71, 0xfe, 0xc7, 0xc8, 0xf5, 0x6c, 0xce, 0x7f, 0xd5, 0x99, 0x37, 0xc2,
97335 - 0x79, 0x95, 0x6b, 0xbc, 0x30, 0x7a, 0xed, 0x1d, 0x95, 0xba, 0xe3, 0xf1,
97336 - 0x28, 0x6d, 0xf7, 0xe1, 0x06, 0x79, 0x2e, 0x84, 0x5d, 0xf9, 0x15, 0x95,
97337 - 0x82, 0xe3, 0x41, 0xd6, 0x01, 0xae, 0x2f, 0x91, 0xe7, 0x59, 0xcf, 0xf1,
97338 - 0x9e, 0xf0, 0xae, 0xcd, 0xe4, 0x18, 0x9f, 0xb5, 0x7b, 0x84, 0x6b, 0xf1,
97339 - 0x7f, 0xf8, 0x8e, 0xdc, 0xfb, 0x75, 0x79, 0xf4, 0x4f, 0x31, 0xcc, 0x1a,
97340 - 0xe8, 0xb1, 0x5c, 0x06, 0x0f, 0xe7, 0xbe, 0xec, 0xec, 0xab, 0xad, 0x5d,
97341 - 0x8f, 0xfb, 0x38, 0xe7, 0x81, 0x5a, 0xc6, 0xd1, 0x7f, 0x4b, 0x25, 0x84,
97342 - 0x1b, 0xed, 0xae, 0x86, 0xe4, 0xda, 0x44, 0xeb, 0x2a, 0xc5, 0x46, 0x45,
97343 - 0x0a, 0x43, 0x1d, 0x2d, 0x89, 0xe4, 0x15, 0x3c, 0x61, 0x4b, 0x5f, 0xd3,
97344 - 0x5b, 0xca, 0xbb, 0x52, 0xff, 0x49, 0x6f, 0xb5, 0xbd, 0xc4, 0x91, 0xb6,
97345 - 0x14, 0xde, 0xf9, 0x4c, 0xef, 0x40, 0xea, 0x6e, 0xc9, 0x37, 0x41, 0xa5,
97346 - 0x9d, 0xf3, 0x1c, 0x21, 0x66, 0xbf, 0x68, 0xbc, 0x12, 0x65, 0x36, 0x86,
97347 - 0x6f, 0x9d, 0x82, 0x83, 0x86, 0x1f, 0x99, 0x88, 0x8d, 0xdd, 0xfc, 0xdc,
97348 - 0x4f, 0xde, 0xf4, 0x9e, 0x51, 0x83, 0x19, 0x55, 0x25, 0x57, 0x24, 0x06,
97349 - 0x7b, 0xde, 0xf4, 0xcb, 0x5e, 0x4c, 0xcc, 0x23, 0xfb, 0xe6, 0xff, 0xd6,
97350 - 0x5e, 0xca, 0x3a, 0xf2, 0x16, 0xd1, 0x3d, 0xa8, 0x10, 0x43, 0x93, 0x20,
97351 - 0x97, 0xd9, 0x6b, 0x14, 0x63, 0x1e, 0xa4, 0xaf, 0x7a, 0xa0, 0x9d, 0xbe,
97352 - 0xcc, 0xfa, 0xee, 0xb1, 0x06, 0xed, 0x74, 0x9b, 0x57, 0xc7, 0xf0, 0xf1,
97353 - 0x00, 0x1e, 0x39, 0xbe, 0x0d, 0xb5, 0x4e, 0xef, 0x67, 0x9c, 0x36, 0xf5,
97354 - 0xb0, 0xae, 0x1a, 0xfd, 0xa5, 0x8f, 0xf5, 0xd5, 0xd5, 0xf5, 0x8f, 0xa3,
97355 - 0xd5, 0xb9, 0x3e, 0x86, 0xfb, 0x72, 0x41, 0xa5, 0x2b, 0xe7, 0xc3, 0xb6,
97356 - 0x3b, 0x1f, 0x87, 0x7f, 0x5d, 0x3f, 0xe5, 0x92, 0xeb, 0xf2, 0xf7, 0x5d,
97357 - 0xac, 0xcb, 0x44, 0xbe, 0x0a, 0xc4, 0x96, 0x53, 0xb6, 0x75, 0x3a, 0x46,
97358 - 0x8e, 0xfb, 0x94, 0x3d, 0xd6, 0x7f, 0xb7, 0xaf, 0x3a, 0xfb, 0x34, 0x72,
97359 - 0xad, 0x4a, 0xf6, 0xef, 0xf9, 0x8c, 0x60, 0xce, 0x00, 0x72, 0x8c, 0xed,
97360 - 0xbb, 0x9c, 0xf7, 0xff, 0xb8, 0xc2, 0xd5, 0x29, 0xcd, 0x7a, 0xb5, 0x83,
97361 - 0xeb, 0x27, 0xcf, 0x24, 0x4b, 0xd7, 0x9a, 0x03, 0xee, 0x19, 0x01, 0xf1,
97362 - 0x85, 0x01, 0xdc, 0xc2, 0x45, 0x68, 0x48, 0x88, 0x8f, 0x0d, 0xa0, 0x21,
97363 - 0x4f, 0x40, 0x5d, 0xee, 0xca, 0xfb, 0x90, 0x55, 0x64, 0xad, 0xa9, 0x13,
97364 - 0x37, 0x69, 0xbb, 0x65, 0xf2, 0xfe, 0x2f, 0x2a, 0x7f, 0xf5, 0x7d, 0xc1,
97365 - 0x5b, 0x72, 0xcc, 0xb0, 0x70, 0xcd, 0x5f, 0x77, 0xff, 0xb7, 0x20, 0xf7,
97366 - 0x7c, 0xfa, 0x9f, 0x30, 0x8e, 0x13, 0x3d, 0xd5, 0x1e, 0xf1, 0x9f, 0x3f,
97367 - 0xc1, 0x03, 0xb3, 0x8f, 0xf0, 0xbe, 0x8c, 0x7f, 0x88, 0x35, 0x84, 0x4f,
97368 - 0xe9, 0x24, 0xfe, 0xec, 0x3f, 0xee, 0xd9, 0x55, 0x81, 0xbf, 0xb4, 0x2b,
97369 - 0x97, 0x8d, 0xa0, 0x21, 0x35, 0xc6, 0xe7, 0x15, 0x74, 0x90, 0x2f, 0x3e,
97370 - 0x65, 0x6c, 0xc1, 0xb6, 0x25, 0x82, 0x01, 0x2f, 0xda, 0x03, 0xbd, 0x62,
97371 - 0x43, 0x05, 0x5b, 0x79, 0xfd, 0x25, 0xae, 0xef, 0xb3, 0x86, 0x0f, 0x0d,
97372 - 0x4b, 0xa5, 0x8f, 0xa7, 0x4d, 0xa5, 0xd1, 0x1e, 0x70, 0xf7, 0xab, 0x32,
97373 - 0x76, 0xad, 0xae, 0x0f, 0xdd, 0xe1, 0x69, 0x98, 0x7a, 0x9b, 0xfe, 0xd4,
97374 - 0xbe, 0xee, 0xc6, 0x7b, 0x65, 0x9b, 0x18, 0xe4, 0x90, 0x2f, 0xd8, 0xb8,
97375 - 0x69, 0x14, 0xea, 0xba, 0x1b, 0xd7, 0xbf, 0x2c, 0xf7, 0x21, 0xc6, 0x20,
97376 - 0x32, 0xb5, 0xa6, 0xf4, 0x79, 0x12, 0x1c, 0xe7, 0x10, 0x7e, 0xbf, 0x30,
97377 - 0x86, 0x83, 0xb9, 0x12, 0xa7, 0xa6, 0x6f, 0xeb, 0xeb, 0xae, 0xeb, 0xf6,
97378 - 0x50, 0x2e, 0xd1, 0x5f, 0x53, 0xd2, 0xed, 0x00, 0xeb, 0x8b, 0x6a, 0x62,
97379 - 0xec, 0x83, 0xb4, 0xe9, 0x90, 0x63, 0xd3, 0x5e, 0x18, 0xf9, 0xeb, 0xe3,
97380 - 0x0e, 0x72, 0xdc, 0xa0, 0x29, 0x76, 0x93, 0x3d, 0xb2, 0x43, 0xd8, 0xcf,
97381 - 0x71, 0xf7, 0xdd, 0x30, 0xee, 0x80, 0x71, 0x7d, 0xdc, 0xbd, 0xb9, 0xc4,
97382 - 0x69, 0x4f, 0x69, 0xdc, 0x47, 0x67, 0xcb, 0x63, 0x64, 0x70, 0xfb, 0xba,
97383 - 0x0c, 0xf2, 0x9b, 0x0e, 0xd8, 0x07, 0x1c, 0x7b, 0x9c, 0x72, 0xae, 0x6f,
97384 - 0x6d, 0x10, 0xee, 0xc5, 0x3f, 0x4d, 0xd9, 0x8f, 0x4f, 0x92, 0x7b, 0xe9,
97385 - 0xce, 0x9e, 0xf0, 0x37, 0x0a, 0xe5, 0xbe, 0x94, 0xf6, 0x4e, 0x97, 0x37,
97386 - 0xcd, 0xd8, 0x8e, 0x04, 0x76, 0x7c, 0xa6, 0x97, 0xb1, 0x8d, 0xf5, 0xd7,
97387 - 0x76, 0xab, 0x3b, 0xd8, 0x69, 0x05, 0xc8, 0xbb, 0xaa, 0x95, 0xad, 0x39,
97388 - 0xe9, 0x69, 0x48, 0x2c, 0x97, 0xb8, 0x70, 0x41, 0xea, 0xbc, 0xbb, 0x59,
97389 - 0x1f, 0x2c, 0x0f, 0x20, 0xdc, 0x8f, 0x89, 0xc2, 0xef, 0x2a, 0xe9, 0x88,
97390 - 0xec, 0x4d, 0x4b, 0x5e, 0x01, 0x73, 0x5e, 0x0f, 0xaa, 0xe9, 0x4b, 0x11,
97391 - 0xd3, 0x30, 0x4f, 0x36, 0xd8, 0x20, 0x47, 0x09, 0x2c, 0x35, 0xd3, 0xe6,
97392 - 0xee, 0x06, 0x2f, 0x8e, 0x39, 0xfc, 0x4b, 0x9b, 0xe1, 0xef, 0x94, 0xc4,
97393 - 0xcc, 0x1d, 0x39, 0xc9, 0x63, 0xa4, 0x90, 0xfa, 0x08, 0xfe, 0x31, 0x55,
97394 - 0x1c, 0x5a, 0x82, 0xf4, 0xfd, 0x4b, 0x20, 0xf5, 0xc4, 0x04, 0xfe, 0x4a,
97395 - 0x8f, 0x06, 0xfa, 0x0a, 0x3e, 0xa5, 0xcb, 0x9a, 0x0b, 0xee, 0xb4, 0xc2,
97396 - 0x08, 0xb1, 0x1e, 0xeb, 0xf6, 0xc6, 0x59, 0x5f, 0x88, 0x1d, 0x03, 0x6d,
97397 - 0xb7, 0xe4, 0xfb, 0x82, 0x1d, 0x96, 0x8b, 0x85, 0x2b, 0x67, 0x02, 0xc1,
97398 - 0x6d, 0xd3, 0xf1, 0xe8, 0x84, 0xc3, 0xc5, 0x42, 0x6d, 0xf1, 0xbc, 0x6d,
97399 - 0xbf, 0x61, 0x14, 0xaf, 0x56, 0x3a, 0xdf, 0x8d, 0xb6, 0x64, 0xbe, 0x19,
97400 - 0xf7, 0x90, 0x3f, 0xb5, 0x4f, 0x37, 0xc3, 0x98, 0x06, 0x4e, 0x1c, 0x8f,
97401 - 0x62, 0x6d, 0x4e, 0x3b, 0x3d, 0xec, 0xed, 0xc3, 0xd4, 0x7c, 0x27, 0x72,
97402 - 0x85, 0xe0, 0x62, 0xcc, 0x43, 0x5e, 0x9d, 0xf2, 0x60, 0x97, 0x71, 0x5c,
97403 - 0x29, 0x2e, 0x53, 0x70, 0x17, 0x11, 0xbc, 0xdf, 0xe1, 0x13, 0x73, 0xac,
97404 - 0x47, 0x15, 0xdc, 0xe4, 0xe0, 0x6e, 0x4b, 0xdb, 0x5a, 0xf2, 0xed, 0x3b,
97405 - 0xc9, 0x07, 0x77, 0x11, 0x57, 0x12, 0xeb, 0x6c, 0xbc, 0x99, 0xca, 0xf4,
97406 - 0xd7, 0x40, 0xeb, 0x39, 0xcc, 0x1a, 0xa8, 0x47, 0x71, 0xf9, 0x5d, 0xd3,
97407 - 0x9c, 0xcb, 0x09, 0x57, 0xcd, 0xb5, 0x90, 0x37, 0xb2, 0xae, 0x49, 0x69,
97408 - 0x31, 0x8f, 0x47, 0xc5, 0x94, 0x33, 0x46, 0xac, 0xcd, 0x98, 0xab, 0x60,
97409 - 0xbe, 0xeb, 0xc5, 0xd3, 0x8e, 0xfc, 0x49, 0xca, 0x77, 0x37, 0xbe, 0x66,
97410 - 0xf5, 0x05, 0xfb, 0x2c, 0xd9, 0xbf, 0x8c, 0x27, 0xaf, 0x7a, 0x4d, 0xf2,
97411 - 0xd7, 0x78, 0xac, 0xce, 0xfb, 0x05, 0x25, 0xe3, 0x6b, 0x6a, 0x9d, 0x83,
97412 - 0xa9, 0x5c, 0x2a, 0x71, 0x36, 0xd1, 0x2f, 0x41, 0x8e, 0xd5, 0x7e, 0x3c,
97413 - 0xb8, 0x98, 0x86, 0xdb, 0xb3, 0xd9, 0x66, 0xfc, 0x2f, 0x14, 0x23, 0xda,
97414 - 0x44, 0x9a, 0x18, 0xb0, 0x85, 0x98, 0xdb, 0xdf, 0xeb, 0xe3, 0x7d, 0xe9,
97415 - 0x79, 0xa9, 0x6d, 0xe3, 0x59, 0x14, 0x83, 0x66, 0x22, 0x73, 0x94, 0x9e,
97416 - 0xd3, 0x53, 0x90, 0xfd, 0x8d, 0x00, 0x1e, 0x60, 0xed, 0x94, 0x2e, 0xed,
97417 - 0xfd, 0x6c, 0x9d, 0x76, 0xf7, 0xb3, 0x0e, 0xcf, 0xfb, 0xc2, 0xdd, 0x56,
97418 - 0x0b, 0xf3, 0xbd, 0xef, 0x86, 0xb1, 0x13, 0x13, 0x2b, 0x3d, 0x1e, 0xac,
97419 - 0x5e, 0xb7, 0x47, 0x99, 0x59, 0x56, 0xce, 0xad, 0x51, 0x27, 0x1f, 0x56,
97420 - 0x50, 0xcf, 0xf3, 0x27, 0x65, 0x8e, 0xcf, 0xb5, 0x8d, 0x9f, 0x94, 0x5c,
97421 - 0xab, 0xb6, 0x6d, 0xb2, 0xb4, 0x3e, 0xa9, 0xfd, 0xa2, 0xb4, 0x53, 0x94,
97422 - 0xba, 0xad, 0x30, 0xd7, 0xb4, 0xd9, 0xd3, 0x5a, 0x74, 0x40, 0x49, 0x93,
97423 - 0xf7, 0x69, 0xc9, 0x5b, 0xbc, 0x1e, 0x3c, 0xa2, 0x6b, 0x83, 0xd2, 0x13,
97424 - 0x7c, 0x19, 0x2e, 0x07, 0x6e, 0x9a, 0x1b, 0x60, 0x5e, 0x73, 0x6d, 0xeb,
97425 - 0xf6, 0x07, 0xeb, 0xdb, 0x9a, 0x1d, 0x5e, 0x6c, 0xdb, 0x97, 0x53, 0xdd,
97426 - 0xe4, 0x0c, 0xc2, 0x8b, 0xe5, 0xfa, 0xea, 0xb6, 0xc6, 0x99, 0x00, 0x65,
97427 - 0x53, 0xf0, 0x3e, 0x73, 0xd2, 0x44, 0xa1, 0x2c, 0xa3, 0xcb, 0x99, 0x77,
97428 - 0x90, 0x33, 0x57, 0x99, 0x5a, 0x6b, 0x17, 0x39, 0xb3, 0x9e, 0x2a, 0xd6,
97429 - 0xf9, 0xd0, 0x8b, 0xa7, 0xac, 0x66, 0x39, 0xe3, 0xe4, 0xf0, 0xe6, 0x2b,
97430 - 0x27, 0xb5, 0xb4, 0x70, 0xe6, 0x1f, 0x18, 0xc0, 0x3d, 0xe4, 0xcc, 0x57,
97431 - 0xb3, 0x3e, 0xec, 0x21, 0x67, 0x5e, 0xcc, 0x06, 0xd0, 0x47, 0xce, 0xfc,
97432 - 0x11, 0xf9, 0xd5, 0xbb, 0xa9, 0x2b, 0x78, 0xb4, 0xd4, 0x07, 0xdb, 0x9b,
97433 - 0xf4, 0xd0, 0xaf, 0x85, 0x37, 0xff, 0xbc, 0xc4, 0x9b, 0xe7, 0xff, 0x05,
97434 - 0x6f, 0xde, 0x4a, 0x3e, 0xd8, 0x9d, 0x13, 0x4e, 0xb0, 0x92, 0x9c, 0xc0,
97435 - 0xc6, 0xcb, 0xa5, 0x1e, 0xd8, 0x0a, 0xe6, 0xb3, 0xa7, 0x53, 0x7d, 0xc8,
97436 - 0x4e, 0x63, 0x79, 0x8d, 0xd3, 0x77, 0x12, 0x99, 0x34, 0xe3, 0xb2, 0x92,
97437 - 0xe8, 0xec, 0x43, 0x82, 0xf5, 0xb1, 0x96, 0xbc, 0xe8, 0xf6, 0xc0, 0x16,
97438 - 0xdf, 0x85, 0xf4, 0x88, 0x7c, 0xa8, 0x59, 0x00, 0x56, 0xdc, 0xd0, 0x03,
97439 - 0xab, 0x49, 0xe0, 0x4f, 0xeb, 0x20, 0xfb, 0x9a, 0x0c, 0xb3, 0x85, 0x66,
97440 - 0xc6, 0xa7, 0x82, 0x23, 0x89, 0x10, 0xba, 0x8f, 0x93, 0xf3, 0x38, 0x3d,
97441 - 0x30, 0x7b, 0xe4, 0x3b, 0x46, 0x1f, 0x8e, 0xce, 0xbb, 0x3d, 0xb0, 0xed,
97442 - 0xe4, 0x6e, 0xbe, 0x44, 0x04, 0x95, 0x0b, 0x3e, 0xbc, 0x40, 0xee, 0xbc,
97443 - 0x95, 0xeb, 0x7c, 0xa6, 0xd4, 0x07, 0x5b, 0xc1, 0x18, 0xb1, 0x73, 0x2a,
97444 - 0x66, 0x16, 0xf0, 0x86, 0x17, 0xb8, 0xb8, 0xc2, 0xe9, 0xed, 0x4b, 0xff,
97445 - 0x3f, 0x84, 0x73, 0x0e, 0x77, 0x0e, 0x2e, 0x66, 0x14, 0x57, 0xb7, 0x0a,
97446 - 0xae, 0x89, 0xac, 0xab, 0x87, 0xeb, 0xda, 0x7e, 0x52, 0xeb, 0x7c, 0x85,
97447 - 0xb6, 0x68, 0x4a, 0xbc, 0xea, 0xac, 0xc7, 0x40, 0x4a, 0x6a, 0xd9, 0x40,
97448 - 0x5b, 0xc0, 0x39, 0x0f, 0xa5, 0xb6, 0xfd, 0x28, 0x1b, 0xef, 0xa9, 0x2c,
97449 - 0xc5, 0xe3, 0xaa, 0x7c, 0x05, 0xd2, 0x25, 0x1f, 0x09, 0xd0, 0xa7, 0x03,
97450 - 0x93, 0x69, 0x54, 0x6d, 0x70, 0xfd, 0x7b, 0x55, 0x7e, 0x9c, 0xbc, 0xb5,
97451 - 0x53, 0xea, 0xe8, 0xf0, 0x76, 0xab, 0x13, 0x53, 0x56, 0x0c, 0x95, 0xe7,
97452 - 0x4a, 0x7b, 0xa6, 0xe7, 0xe4, 0xec, 0x5c, 0x7d, 0x9b, 0xfa, 0xd5, 0x32,
97453 - 0x1f, 0x4c, 0x93, 0xe3, 0x44, 0x02, 0x77, 0x14, 0x84, 0x2b, 0xf6, 0xe0,
97454 - 0xa8, 0xa5, 0x45, 0xbf, 0x87, 0xf8, 0xd0, 0xfd, 0xb4, 0x51, 0xb1, 0xee,
97455 - 0x7a, 0xbf, 0x69, 0x40, 0xfa, 0x51, 0x9f, 0xe9, 0x37, 0x0d, 0xe7, 0xf0,
97456 - 0x8b, 0xba, 0x96, 0x4a, 0x78, 0xd6, 0xfa, 0xc9, 0xe7, 0xb5, 0xe8, 0xd3,
97457 - 0x78, 0x02, 0x23, 0xb9, 0x9f, 0x2b, 0x21, 0xdd, 0x37, 0xf8, 0x13, 0xaf,
97458 - 0x16, 0x9d, 0x53, 0x42, 0x7c, 0xf7, 0xee, 0x60, 0x97, 0x75, 0x37, 0x71,
97459 - 0x27, 0x9e, 0xec, 0x54, 0xbc, 0x98, 0x89, 0x3a, 0x5c, 0x34, 0xd8, 0xc3,
97460 - 0x6b, 0x53, 0x85, 0x32, 0xa7, 0x71, 0x6b, 0xfe, 0xed, 0xc7, 0x5d, 0xfc,
97461 - 0x88, 0xe7, 0x83, 0x8b, 0x97, 0xe0, 0xea, 0x56, 0x4d, 0x5d, 0x1f, 0x9c,
97462 - 0x54, 0xed, 0xfe, 0x65, 0x12, 0xc3, 0x3a, 0xf6, 0xd0, 0xf7, 0xee, 0x99,
97463 - 0x1e, 0xa0, 0x9c, 0xc2, 0xa5, 0x57, 0x10, 0xa7, 0xfa, 0x30, 0x4e, 0x9c,
97464 - 0xb1, 0x28, 0x5f, 0x8e, 0x35, 0xe4, 0xe2, 0xfa, 0x8c, 0x3d, 0xb9, 0x41,
97465 - 0x37, 0x56, 0x7b, 0x8b, 0x4b, 0xa2, 0xe4, 0x36, 0xeb, 0x98, 0xb7, 0xdb,
97466 - 0x0b, 0xcd, 0xb8, 0x7c, 0x46, 0x67, 0x7d, 0xdb, 0x41, 0xee, 0xde, 0x83,
97467 - 0x87, 0xa9, 0xcf, 0xa3, 0x85, 0xc7, 0x91, 0xfe, 0x92, 0x0f, 0x87, 0x8f,
97468 - 0xa7, 0xb1, 0x6a, 0x5d, 0x0a, 0xe9, 0x2f, 0x06, 0x88, 0x53, 0x21, 0x4c,
97469 - 0x30, 0x16, 0xa1, 0xb8, 0x7e, 0x2e, 0xe7, 0x7f, 0xfe, 0x82, 0x36, 0xfb,
97470 - 0x26, 0xed, 0xf7, 0x8d, 0x6b, 0x7b, 0x00, 0x65, 0xfe, 0x7d, 0x9d, 0xab,
97471 - 0x7a, 0xb9, 0x86, 0xfb, 0x9c, 0xd8, 0x8c, 0x32, 0x36, 0x75, 0x5c, 0x2d,
97472 - 0xf5, 0x12, 0x17, 0x4f, 0x6a, 0x8b, 0xf7, 0x22, 0x3e, 0x7c, 0xd9, 0x8b,
97473 - 0x81, 0x3a, 0xfa, 0x5d, 0x94, 0x5c, 0xf5, 0xc3, 0x44, 0xc2, 0x38, 0x47,
97474 - 0xae, 0x3a, 0xba, 0xc1, 0xe5, 0xaa, 0x9e, 0x05, 0x15, 0x15, 0x0b, 0xac,
97475 - 0x65, 0x9d, 0x5e, 0xe2, 0x37, 0x83, 0x6e, 0x2f, 0x51, 0xf8, 0x4d, 0xab,
97476 - 0x9c, 0x75, 0xba, 0x8d, 0xb5, 0x5c, 0xfa, 0x0a, 0x32, 0xe8, 0x2c, 0xcc,
97477 - 0x04, 0xef, 0x21, 0x36, 0xf7, 0x49, 0x6f, 0xa4, 0x10, 0x09, 0xdf, 0x43,
97478 - 0xde, 0xf5, 0x2d, 0xae, 0xaf, 0xec, 0xed, 0xf6, 0x15, 0x56, 0xf3, 0xbd,
97479 - 0x28, 0x3f, 0x05, 0x57, 0x45, 0xf6, 0x1b, 0xf5, 0xe8, 0xa9, 0x92, 0xbd,
97480 - 0x86, 0x97, 0xa9, 0x43, 0xff, 0xdc, 0x4a, 0x3c, 0x3a, 0xe7, 0xaf, 0x12,
97481 - 0xc2, 0xff, 0x68, 0xde, 0xc5, 0xb6, 0x58, 0xfe, 0xae, 0xa0, 0xf0, 0xc9,
97482 - 0xf6, 0xe3, 0xee, 0x77, 0xfd, 0x86, 0xef, 0x65, 0xfd, 0x56, 0x50, 0x3f,
97483 - 0x7b, 0x5a, 0xea, 0xa2, 0x68, 0xdb, 0x19, 0xea, 0xb7, 0x78, 0xd2, 0x89,
97484 - 0x2f, 0xd6, 0x98, 0xf1, 0xe1, 0x84, 0x57, 0xf4, 0xfa, 0x99, 0xe8, 0x45,
97485 - 0xae, 0xc2, 0x78, 0xe1, 0xb8, 0x1e, 0x3d, 0xe2, 0xe8, 0xe5, 0xea, 0xe3,
97486 - 0xf6, 0x69, 0xaf, 0x9c, 0x4c, 0xde, 0xd8, 0x17, 0xd5, 0xc9, 0x97, 0x3f,
97487 - 0x61, 0x6c, 0x3c, 0x71, 0x98, 0x9c, 0xf9, 0x2a, 0x6b, 0x4a, 0x3f, 0x9f,
97488 - 0xaf, 0x73, 0x9e, 0x97, 0x3e, 0xad, 0xe7, 0x1a, 0x67, 0x5e, 0xbc, 0xfe,
97489 - 0x4e, 0x89, 0x2f, 0x4b, 0x4f, 0x5a, 0x9e, 0x53, 0x1d, 0x3b, 0xed, 0x76,
97490 - 0x78, 0xa0, 0x70, 0x2b, 0x1b, 0x1d, 0xeb, 0xfe, 0xad, 0x35, 0x0b, 0x2e,
97491 - 0xce, 0x38, 0x6e, 0xd5, 0x55, 0x25, 0x7b, 0xe1, 0xab, 0xd6, 0x3d, 0x68,
97492 - 0xbb, 0xfe, 0x1c, 0x09, 0xef, 0x62, 0x9c, 0x7c, 0x85, 0xef, 0xec, 0x3a,
97493 - 0x57, 0x1f, 0xbe, 0xcb, 0x6a, 0x71, 0x6c, 0x74, 0xd7, 0xb9, 0x28, 0x46,
97494 - 0x2d, 0xe9, 0xeb, 0x43, 0xf1, 0x99, 0x87, 0xb1, 0x7d, 0x2a, 0x86, 0x77,
97495 - 0x8d, 0x60, 0xe9, 0xec, 0x89, 0xc4, 0xa4, 0xc1, 0x98, 0x8c, 0xd0, 0x77,
97496 - 0xe3, 0xb1, 0x77, 0xc9, 0x51, 0x33, 0x3e, 0xe0, 0x68, 0x8e, 0xb8, 0x46,
97497 - 0xde, 0x08, 0xc5, 0x3d, 0xbb, 0xe9, 0xbe, 0x5b, 0xfe, 0xbb, 0x1a, 0xb1,
97498 - 0x25, 0xf1, 0xd6, 0xfd, 0xa8, 0x47, 0x96, 0xd8, 0x1f, 0xd4, 0xff, 0x1a,
97499 - 0xc7, 0x4e, 0x78, 0x98, 0x1f, 0x08, 0x4e, 0x77, 0x1a, 0xfc, 0xde, 0x34,
97500 - 0xf8, 0x01, 0xfe, 0xd1, 0x9e, 0x91, 0xf3, 0x51, 0x8a, 0x9c, 0xc5, 0xf8,
97501 - 0xc4, 0xae, 0xd3, 0xf5, 0xe2, 0xb7, 0xa0, 0x0f, 0x5f, 0x45, 0xd3, 0xd0,
97502 - 0x22, 0x7e, 0x6c, 0x17, 0x79, 0xef, 0x7d, 0xc6, 0xd1, 0x2b, 0x46, 0x3c,
97503 - 0xea, 0xa1, 0xf0, 0xc5, 0x88, 0x17, 0xf7, 0x1b, 0xb2, 0xa7, 0xa4, 0x0d,
97504 - 0x3d, 0x0f, 0x6d, 0xf0, 0xbc, 0x22, 0x67, 0x6a, 0x2e, 0xd9, 0x99, 0x25,
97505 - 0x32, 0xaf, 0x82, 0xb5, 0xab, 0x9b, 0x3a, 0x2b, 0xa0, 0xb5, 0xfa, 0x15,
97506 - 0xdd, 0xf8, 0x40, 0xf9, 0x7b, 0xbb, 0x18, 0xf9, 0xc4, 0xbe, 0xac, 0x97,
97507 - 0xc7, 0xd5, 0x62, 0x01, 0x6f, 0x59, 0xb6, 0x7a, 0x1c, 0xb3, 0x64, 0x2f,
97508 - 0xee, 0xaf, 0xf1, 0xc0, 0x09, 0x1f, 0x3a, 0x52, 0x3f, 0xb1, 0x33, 0x11,
97509 - 0x19, 0xf3, 0x13, 0xda, 0x42, 0xc6, 0x77, 0xfb, 0xd5, 0x2f, 0x17, 0xa0,
97510 - 0x6c, 0xb3, 0x84, 0x33, 0x8b, 0x5f, 0x4c, 0xc1, 0xb6, 0xa4, 0x87, 0x68,
97511 - 0xe3, 0x8e, 0xd4, 0x08, 0xde, 0x4f, 0xa5, 0xff, 0x63, 0x00, 0xda, 0x85,
97512 - 0x2b, 0x5e, 0xad, 0xd8, 0xec, 0x8d, 0x29, 0xc1, 0x46, 0x7d, 0xa8, 0xd1,
97513 - 0xdd, 0x9f, 0x67, 0xfd, 0x14, 0x0a, 0xec, 0x2a, 0x48, 0x9d, 0x39, 0x85,
97514 - 0x85, 0xc9, 0x0c, 0x7c, 0xe4, 0x77, 0xa3, 0x2d, 0x5a, 0xdf, 0x73, 0x8a,
97515 - 0x16, 0x3d, 0xa0, 0xc4, 0x94, 0x7b, 0xf5, 0x61, 0xbc, 0x60, 0x24, 0xd2,
97516 - 0xed, 0x4a, 0x7d, 0xa0, 0xb3, 0x50, 0x1e, 0xbb, 0x83, 0xb8, 0xa1, 0x15,
97517 - 0xaf, 0x78, 0x2b, 0x51, 0xb7, 0x5e, 0xef, 0xac, 0xf4, 0x6a, 0xc3, 0x5f,
97518 - 0x60, 0x1d, 0xb0, 0xa3, 0x50, 0x0c, 0x7e, 0x90, 0xf0, 0x60, 0x8d, 0xb3,
97519 - 0x87, 0x90, 0x2d, 0xf5, 0x47, 0xa7, 0xd0, 0x35, 0x69, 0x6f, 0xbe, 0x98,
97520 - 0xd2, 0xa2, 0xcf, 0x29, 0x99, 0x3d, 0x21, 0xf2, 0x9a, 0x07, 0xa1, 0xc7,
97521 - 0xe6, 0x19, 0xc7, 0x1d, 0x05, 0x0f, 0x56, 0x3a, 0x7e, 0x9c, 0xe5, 0x98,
97522 - 0x87, 0x51, 0x79, 0xc2, 0xde, 0xbc, 0xc7, 0xd0, 0x86, 0xaf, 0x78, 0x33,
97523 - 0xff, 0xb5, 0x8e, 0x76, 0xdb, 0xa6, 0x68, 0xac, 0x4f, 0x47, 0x70, 0x91,
97524 - 0x3a, 0x7c, 0x3d, 0xa5, 0x25, 0xff, 0x4c, 0xd1, 0x7a, 0xbe, 0x4c, 0x5f,
97525 - 0xf6, 0x9a, 0x61, 0xca, 0xa9, 0x25, 0x67, 0x21, 0xbd, 0xf3, 0x18, 0xae,
97526 - 0x18, 0x99, 0xe0, 0xf6, 0xc6, 0x24, 0xf9, 0x59, 0x94, 0xf9, 0x30, 0x86,
97527 - 0xa3, 0xe4, 0x77, 0x87, 0x0b, 0x15, 0x28, 0xaa, 0x3a, 0xf9, 0x59, 0x0f,
97528 - 0x3c, 0x93, 0x21, 0x65, 0x2e, 0x1b, 0x37, 0x3a, 0xf0, 0x47, 0x28, 0x3a,
97529 - 0x38, 0x77, 0x18, 0xa1, 0x13, 0x3f, 0xb0, 0x6b, 0x74, 0xbd, 0x75, 0x52,
97530 - 0xe1, 0xbc, 0xcf, 0x44, 0x69, 0x63, 0xbe, 0x27, 0xe7, 0x4e, 0xac, 0x6e,
97531 - 0xdc, 0x3b, 0x19, 0xe1, 0xfb, 0x35, 0x58, 0x7b, 0x22, 0x86, 0x0f, 0x53,
97532 - 0x37, 0xa3, 0xe8, 0x70, 0x04, 0x85, 0x7e, 0x40, 0x3f, 0x62, 0xad, 0x95,
97533 - 0x21, 0x8f, 0x94, 0x7d, 0xa3, 0xc3, 0x96, 0xd4, 0xe8, 0x3e, 0x7e, 0x0f,
97534 - 0xf1, 0x57, 0xec, 0xf9, 0x39, 0x72, 0x1d, 0xf9, 0x5c, 0xd3, 0x16, 0x9b,
97535 - 0xfb, 0x5e, 0x95, 0xb3, 0x7f, 0x89, 0x18, 0x9f, 0x53, 0x9d, 0xde, 0xe0,
97536 - 0x28, 0xc7, 0x3c, 0x3b, 0x25, 0xb5, 0x5b, 0xfb, 0xa6, 0x40, 0x69, 0x7f,
97537 - 0xfd, 0x87, 0x86, 0x07, 0x9b, 0x59, 0xdf, 0x47, 0x75, 0x39, 0x9b, 0x39,
97538 - 0xaa, 0xd5, 0x61, 0x13, 0x4e, 0xab, 0x2c, 0xc4, 0xf5, 0xff, 0x80, 0x09,
97539 - 0x35, 0x49, 0xac, 0xd1, 0xf1, 0x5e, 0xf6, 0x37, 0x58, 0xf3, 0xd4, 0xcb,
97540 - 0xd9, 0x1b, 0xac, 0x3c, 0xe1, 0xe7, 0x9c, 0x9b, 0xc9, 0x75, 0xb6, 0xe3,
97541 - 0xbb, 0xaa, 0x5b, 0x6f, 0x10, 0x8f, 0x30, 0x3e, 0x1b, 0x22, 0x1f, 0x0d,
97542 - 0xf0, 0xf7, 0x46, 0xd9, 0x7e, 0x9d, 0x4c, 0xa2, 0xcb, 0xbf, 0x25, 0x53,
97543 - 0x80, 0x7c, 0x80, 0x78, 0x99, 0x7d, 0x0d, 0x1f, 0x72, 0xec, 0xcc, 0xac,
97544 - 0x3b, 0xe6, 0xf1, 0x82, 0x8c, 0x2b, 0xf3, 0xc5, 0x99, 0x37, 0x65, 0xfc,
97545 - 0x90, 0x9c, 0xbf, 0xfd, 0x77, 0xce, 0x41, 0x86, 0x77, 0x82, 0x35, 0xb2,
97546 - 0xd1, 0x88, 0x0e, 0x95, 0xeb, 0x65, 0xc9, 0x1c, 0x1a, 0xeb, 0x51, 0x79,
97547 - 0x37, 0x8a, 0x35, 0x93, 0xf6, 0x48, 0xd4, 0x94, 0xeb, 0xb6, 0x5d, 0xbb,
97548 - 0x51, 0x8f, 0xbe, 0xad, 0xf8, 0x98, 0xf3, 0x7c, 0xb4, 0xc1, 0x38, 0xce,
97549 - 0x66, 0x9b, 0x2e, 0xbc, 0x4f, 0x0e, 0x15, 0x63, 0xbd, 0x77, 0xc9, 0x3b,
97550 - 0x8e, 0xb9, 0xec, 0xb1, 0x6a, 0xe9, 0x13, 0x30, 0x0f, 0x2a, 0xb3, 0xd9,
97551 - 0xfb, 0xab, 0x05, 0xab, 0xc6, 0xe8, 0x0b, 0xcd, 0x93, 0x22, 0xab, 0x3d,
97552 - 0x52, 0xc3, 0x71, 0x8e, 0x72, 0x9c, 0xd9, 0x0d, 0x7a, 0xdf, 0x98, 0x22,
97553 - 0x36, 0x0b, 0xe1, 0x58, 0xe1, 0xa2, 0xf4, 0xd0, 0x68, 0xb7, 0x69, 0x3e,
97554 - 0x2f, 0x76, 0x8b, 0xe0, 0xbb, 0xa5, 0x71, 0x9e, 0x2a, 0x5c, 0xc0, 0x6c,
97555 - 0xf6, 0x2d, 0xe7, 0xef, 0x31, 0xd6, 0x0d, 0xe3, 0xac, 0x21, 0xf3, 0xc4,
97556 - 0x93, 0xc9, 0x6c, 0x53, 0xdf, 0x24, 0xe5, 0x70, 0xcf, 0xca, 0x0d, 0xe0,
97557 - 0xd9, 0xd2, 0x33, 0xa3, 0x7c, 0x77, 0xf4, 0xda, 0xdf, 0x62, 0x23, 0x77,
97558 - 0x0f, 0xdf, 0xdd, 0x53, 0xa8, 0xe4, 0xda, 0xb9, 0xb5, 0xf8, 0x11, 0xcb,
97559 - 0x2f, 0x7d, 0x70, 0xbc, 0x36, 0xb5, 0x19, 0x63, 0xc6, 0x5f, 0x62, 0x2f,
97560 - 0xf5, 0x1e, 0xa7, 0x3d, 0x4f, 0x58, 0xce, 0x5e, 0xbd, 0x9c, 0xcb, 0x22,
97561 - 0x96, 0x87, 0xda, 0xce, 0x90, 0x93, 0x1d, 0x63, 0xcc, 0xdc, 0x97, 0x6a,
97562 - 0xea, 0x79, 0x9d, 0x7e, 0x97, 0xfe, 0xa2, 0xec, 0x87, 0x03, 0x93, 0xb9,
97563 - 0x47, 0x31, 0xb3, 0xa4, 0x69, 0xf1, 0x45, 0x62, 0xc2, 0x69, 0xe2, 0x94,
97564 - 0x8f, 0x98, 0x50, 0x9b, 0xf3, 0x94, 0xf6, 0x77, 0x0d, 0x7e, 0x6f, 0xba,
97565 - 0x30, 0x87, 0xbf, 0xa1, 0x5d, 0x44, 0xbe, 0x78, 0x72, 0x0e, 0xf2, 0xac,
97566 - 0xdb, 0x83, 0xd5, 0xe7, 0x06, 0x71, 0xe9, 0x66, 0xb7, 0x8f, 0xe6, 0x65,
97567 - 0xee, 0xde, 0x97, 0x6d, 0x52, 0xc7, 0x64, 0xec, 0x5e, 0x2d, 0x9a, 0xe1,
97568 - 0x5a, 0x4d, 0x38, 0x1c, 0x5c, 0x65, 0x8e, 0x97, 0x73, 0x58, 0x35, 0xf0,
97569 - 0xd1, 0xf7, 0xc7, 0x0c, 0x39, 0xbf, 0x10, 0x0d, 0xef, 0xe0, 0x1a, 0x8e,
97570 - 0x59, 0x4d, 0xad, 0x71, 0x65, 0x0f, 0xca, 0xfc, 0xdb, 0xe5, 0xd4, 0x5a,
97571 - 0xdf, 0x51, 0x34, 0xf5, 0x3c, 0x88, 0x2f, 0x21, 0xbd, 0xa4, 0xa9, 0x7f,
97572 - 0x0a, 0x71, 0xe3, 0x7e, 0xc8, 0x39, 0x4e, 0x77, 0xac, 0x86, 0x3c, 0x33,
97573 - 0xc9, 0xd2, 0x4f, 0xec, 0x15, 0xfa, 0x53, 0x98, 0x22, 0x77, 0x6c, 0x5c,
97574 - 0xa7, 0x5f, 0xf8, 0x5a, 0xe9, 0x9e, 0xbb, 0x4f, 0x24, 0xfe, 0x12, 0xa0,
97575 - 0x0d, 0x2a, 0xe1, 0x5b, 0x5a, 0xcf, 0x39, 0x68, 0x0b, 0xe7, 0x8c, 0xef,
97576 - 0x45, 0x1c, 0xa4, 0xbf, 0x4d, 0x15, 0x14, 0x18, 0x0d, 0x17, 0x31, 0x24,
97577 - 0xb9, 0x8b, 0xef, 0xb4, 0x67, 0x43, 0xe4, 0xb2, 0x51, 0x54, 0xea, 0xf1,
97578 - 0xd8, 0x28, 0xf5, 0x6b, 0x27, 0x96, 0x8f, 0x13, 0x43, 0x32, 0x6a, 0xc8,
97579 - 0x39, 0x77, 0x5a, 0xa9, 0x47, 0x9d, 0xff, 0x15, 0x90, 0x5a, 0xa8, 0x71,
97580 - 0x46, 0xf6, 0xa8, 0x0f, 0xe3, 0xe2, 0x54, 0x11, 0xc7, 0x52, 0x69, 0xec,
97581 - 0x5f, 0xa2, 0x62, 0xd2, 0x5a, 0xe6, 0xf4, 0x0e, 0xa4, 0xe6, 0xea, 0xca,
97582 - 0x1d, 0x72, 0xfa, 0x91, 0x5b, 0x53, 0x9e, 0x06, 0x39, 0xa7, 0x31, 0xcb,
97583 - 0xda, 0x6b, 0xca, 0x18, 0xc1, 0x41, 0xe3, 0xcb, 0x30, 0x96, 0x0a, 0x76,
97584 - 0x8e, 0xe1, 0xd5, 0x19, 0xc9, 0x71, 0xc9, 0xb6, 0x5b, 0x26, 0xc5, 0x3e,
97585 - 0x1e, 0x72, 0xdf, 0x00, 0x9a, 0x1d, 0x2e, 0xf7, 0x50, 0xdb, 0xea, 0x19,
97586 - 0x97, 0xd3, 0x35, 0xe7, 0xe5, 0xac, 0x74, 0x0d, 0xc2, 0xb4, 0xd7, 0xf9,
97587 - 0x94, 0x9f, 0x98, 0x23, 0xf6, 0x94, 0x33, 0x7a, 0xae, 0x9e, 0xc9, 0xbc,
97588 - 0x82, 0xb1, 0x96, 0x1b, 0xf7, 0x58, 0xe4, 0xff, 0x06, 0xae, 0x9d, 0x1b,
97589 - 0x2c, 0xf5, 0xc7, 0xff, 0xcc, 0xbe, 0x74, 0x93, 0xe8, 0xbd, 0x22, 0x44,
97590 - 0x4c, 0x8f, 0xcd, 0x5c, 0xb3, 0xaf, 0xd8, 0xf4, 0x9c, 0xe4, 0x0c, 0xc7,
97591 - 0xe6, 0x6e, 0xcf, 0x4d, 0x1b, 0xba, 0xac, 0x34, 0x31, 0x9f, 0xd0, 0xaf,
97592 - 0x96, 0xd0, 0xdf, 0x9a, 0xd1, 0xbf, 0xc2, 0xf4, 0xf5, 0x5e, 0xb5, 0x36,
97593 - 0xa3, 0x75, 0xfd, 0x7b, 0x36, 0x6e, 0x6e, 0x87, 0x57, 0x97, 0xeb, 0x33,
97594 - 0x76, 0x5a, 0x95, 0xbf, 0xff, 0x24, 0x24, 0xb9, 0xfe, 0x65, 0xab, 0x68,
97595 - 0xaf, 0x5e, 0xe6, 0x72, 0xc4, 0x1f, 0x64, 0x65, 0xdf, 0x2b, 0x63, 0xb3,
97596 - 0xde, 0xbe, 0xf0, 0xae, 0xf7, 0x10, 0xbe, 0x9f, 0x3f, 0x8c, 0x77, 0xa6,
97597 - 0x7c, 0x08, 0xeb, 0xa2, 0xcb, 0x66, 0xd4, 0xae, 0x4f, 0xa4, 0xdf, 0x23,
97598 - 0x2e, 0x5e, 0x98, 0x29, 0xfb, 0xc5, 0x43, 0x6d, 0x6b, 0x66, 0x14, 0x8e,
97599 - 0x55, 0x83, 0x0a, 0xea, 0xf9, 0x1d, 0xc3, 0x8b, 0x58, 0x89, 0xe3, 0x7a,
97600 - 0x29, 0xa7, 0x9c, 0x7b, 0x10, 0xee, 0x1b, 0xcf, 0x1f, 0x0a, 0xb9, 0x3d,
97601 - 0xb0, 0x10, 0x71, 0x74, 0x1c, 0x13, 0xd9, 0xa6, 0xe4, 0xfb, 0x72, 0x0e,
97602 - 0x87, 0x35, 0xd9, 0x25, 0x8c, 0xe3, 0x44, 0xb6, 0x8c, 0xa1, 0x51, 0x39,
97603 - 0x97, 0x9a, 0x8c, 0x79, 0x5c, 0x8c, 0x8c, 0x79, 0xb4, 0x4c, 0xcc, 0xe3,
97604 - 0x0f, 0x09, 0x77, 0x18, 0x2d, 0xc4, 0xa3, 0x95, 0xf0, 0xe2, 0x3e, 0xc3,
97605 - 0xf5, 0x8f, 0x86, 0x39, 0x3f, 0x62, 0x4b, 0x25, 0x2f, 0x4b, 0x4e, 0xf6,
97606 - 0x31, 0x27, 0x2f, 0x23, 0xbf, 0xf6, 0xe1, 0x4d, 0x5d, 0xec, 0xb1, 0xa6,
97607 - 0x6c, 0x0f, 0xe3, 0x1c, 0x1e, 0xb6, 0x8b, 0x3d, 0xe2, 0x4b, 0x7e, 0x1c,
97608 - 0x6e, 0x9e, 0xb5, 0x67, 0x22, 0xa2, 0xbb, 0x17, 0xa7, 0x89, 0xaf, 0xb8,
97609 - 0x39, 0x1e, 0x3d, 0xcd, 0x9c, 0x3d, 0xa6, 0x97, 0x7d, 0xfc, 0xb7, 0x4b,
97610 - 0x72, 0xea, 0x7d, 0xf3, 0xb8, 0x9f, 0x7f, 0x37, 0x44, 0xf7, 0x2b, 0xee,
97611 - 0x7c, 0xab, 0xe7, 0xfe, 0x26, 0x54, 0xee, 0x9f, 0xca, 0xb3, 0xb1, 0xfc,
97612 - 0xe3, 0xfc, 0x2e, 0x63, 0x85, 0xe8, 0x9f, 0x95, 0xe8, 0x8f, 0xc8, 0xff,
97613 - 0x89, 0x88, 0x5d, 0x64, 0x3f, 0x11, 0xb4, 0x87, 0x8d, 0xd7, 0x68, 0x8f,
97614 - 0xc3, 0xd7, 0xce, 0x4c, 0xb9, 0xf8, 0x55, 0xc5, 0xeb, 0x3b, 0x52, 0xaf,
97615 - 0x6c, 0x0a, 0xe2, 0x17, 0xf6, 0xa5, 0x48, 0x94, 0x98, 0x50, 0xe6, 0xa1,
97616 - 0x62, 0x33, 0xc3, 0xb1, 0x99, 0x5b, 0x2b, 0x5e, 0xd3, 0xa3, 0x38, 0x40,
97617 - 0xbe, 0xbd, 0x90, 0x2d, 0x9f, 0x15, 0x89, 0x13, 0x6b, 0x3e, 0x8f, 0xfe,
97618 - 0x3a, 0x19, 0xaf, 0x9e, 0xfe, 0x95, 0xa4, 0x0d, 0xd4, 0xf0, 0xce, 0x69,
97619 - 0xa9, 0xb5, 0xc9, 0x8f, 0x27, 0xe3, 0xc6, 0x43, 0xe4, 0x91, 0x13, 0x93,
97620 - 0xb6, 0xfd, 0x96, 0x81, 0x3b, 0xc3, 0xcc, 0xef, 0x2f, 0x90, 0x4f, 0x90,
97621 - 0x6f, 0xc4, 0x2a, 0x95, 0xa6, 0xe8, 0x2a, 0xe6, 0xfa, 0x31, 0xd6, 0x0a,
97622 - 0x4f, 0x13, 0xe3, 0x4e, 0x2f, 0x54, 0xc1, 0x3a, 0x21, 0xfb, 0x82, 0x55,
97623 - 0x98, 0x7c, 0x26, 0x49, 0xd9, 0x97, 0x72, 0x9c, 0x00, 0xaa, 0xcf, 0xb4,
97624 - 0xa2, 0xea, 0x94, 0x82, 0x1d, 0x89, 0x56, 0x04, 0xcf, 0xd4, 0x30, 0xff,
97625 - 0x06, 0x70, 0xa5, 0x85, 0x6b, 0xfc, 0x4c, 0x59, 0x0f, 0x67, 0x8f, 0x14,
97626 - 0x4f, 0xe6, 0x62, 0xe4, 0xf1, 0x11, 0x2c, 0x58, 0xb2, 0x1f, 0x1c, 0x70,
97627 - 0xb0, 0xf4, 0xc2, 0x86, 0x7a, 0x67, 0xcf, 0xea, 0xc5, 0x82, 0x1e, 0x3d,
97628 - 0xab, 0xd4, 0xe0, 0xc7, 0x27, 0x8a, 0x37, 0x57, 0xc2, 0x7e, 0x79, 0x85,
97629 - 0x99, 0xe8, 0xdb, 0x4b, 0xff, 0x5f, 0xb3, 0x3a, 0xc2, 0xfa, 0xc6, 0xb6,
97630 - 0xaf, 0x6e, 0x94, 0x3a, 0xd8, 0x70, 0xea, 0x60, 0x77, 0x6f, 0x5f, 0x1f,
97631 - 0x7c, 0x4c, 0xc9, 0x6c, 0x0f, 0xc3, 0xfe, 0xa8, 0xd2, 0xb4, 0x3f, 0xf6,
97632 - 0x9b, 0x09, 0xbe, 0x2f, 0x7b, 0x7c, 0xb6, 0xfd, 0xc3, 0x16, 0xdb, 0xce,
97633 - 0xb7, 0xc4, 0xfb, 0x54, 0xaf, 0x8a, 0x33, 0x8d, 0xb2, 0x2f, 0xe8, 0xc1,
97634 - 0x8f, 0x13, 0x7a, 0x74, 0x2f, 0x64, 0x0f, 0x9e, 0x78, 0xbf, 0x4c, 0xce,
97635 - 0x18, 0xd6, 0x87, 0x3b, 0xad, 0xa5, 0x78, 0x61, 0x7e, 0x23, 0xfa, 0xfd,
97636 - 0x70, 0xce, 0xc5, 0xd8, 0x06, 0xde, 0x5e, 0x01, 0xc9, 0xe1, 0x89, 0xd6,
97637 - 0xc7, 0x10, 0xc1, 0x7c, 0xe1, 0x30, 0x1e, 0x39, 0x21, 0xf5, 0xd7, 0xea,
97638 - 0xb6, 0xc0, 0x09, 0xfb, 0x07, 0x51, 0xb3, 0x48, 0x8c, 0xb4, 0xed, 0xaa,
97639 - 0x8d, 0x4d, 0x51, 0xa6, 0x26, 0xf2, 0x8d, 0x18, 0x79, 0xb3, 0x3e, 0xf8,
97640 - 0x63, 0x2c, 0xc1, 0xd9, 0xd9, 0xf4, 0xcd, 0xe4, 0xf2, 0x9d, 0xcf, 0x2a,
97641 - 0xc2, 0xdb, 0x23, 0x78, 0xbe, 0x20, 0x9c, 0x65, 0x6d, 0x5b, 0xd7, 0x89,
97642 - 0xe5, 0x78, 0x79, 0x3e, 0x82, 0xb3, 0x96, 0x4e, 0xce, 0x04, 0xa5, 0xda,
97643 - 0xb4, 0x6b, 0x6b, 0x29, 0x6b, 0xb5, 0xd7, 0x8b, 0xed, 0x29, 0xa9, 0x19,
97644 - 0xf5, 0xc1, 0x90, 0x82, 0xe5, 0x95, 0xd0, 0x17, 0x1f, 0x06, 0x86, 0x82,
97645 - 0x66, 0xe2, 0xc2, 0xb3, 0x4a, 0xa2, 0xef, 0x03, 0x6f, 0x04, 0xdf, 0x22,
97646 - 0x16, 0x7d, 0xbd, 0x20, 0x67, 0xa5, 0x88, 0x37, 0xb3, 0x31, 0xae, 0x5b,
97647 - 0x00, 0x9e, 0x86, 0x1a, 0x1c, 0x61, 0xec, 0xbc, 0x66, 0x54, 0x10, 0xaf,
97648 - 0xe4, 0xec, 0x94, 0x60, 0x7d, 0xbd, 0x9c, 0x19, 0xb1, 0x5f, 0xd4, 0xdd,
97649 - 0x7a, 0xdf, 0x98, 0xbb, 0xf1, 0x4c, 0xb1, 0x4a, 0x8c, 0x6f, 0xea, 0x89,
97650 - 0x2a, 0x6f, 0xd8, 0xe9, 0x2f, 0x2a, 0xd4, 0xb3, 0xb7, 0x06, 0x55, 0x8e,
97651 - 0xae, 0x18, 0xcd, 0x95, 0xf3, 0x4b, 0xad, 0xd4, 0x77, 0x3d, 0x99, 0x92,
97652 - 0x3f, 0x56, 0x33, 0xee, 0x8f, 0x32, 0x5f, 0x57, 0x9e, 0x90, 0xbc, 0x42,
97653 - 0xfe, 0xad, 0x6c, 0x26, 0x2f, 0x16, 0x0e, 0x11, 0xc0, 0x83, 0xaa, 0xf8,
97654 - 0x86, 0x4a, 0xfd, 0x36, 0xf9, 0xe4, 0x2c, 0xd4, 0x0b, 0x05, 0xc9, 0xeb,
97655 - 0x82, 0x0b, 0xe5, 0xf9, 0xa2, 0xa8, 0x9b, 0x94, 0x35, 0x52, 0xdb, 0x3e,
97656 - 0x9a, 0x0c, 0xc9, 0xd9, 0xf7, 0x11, 0x0f, 0xeb, 0xef, 0x00, 0xfd, 0xeb,
97657 - 0x9e, 0x16, 0x7d, 0x70, 0xb3, 0x57, 0x63, 0x0d, 0x1e, 0x67, 0x2d, 0xa1,
97658 - 0xb5, 0x4e, 0x28, 0x37, 0x8e, 0xf3, 0x6c, 0x8d, 0xc4, 0x4b, 0x86, 0x7a,
97659 - 0x3e, 0xe9, 0xe8, 0xb4, 0x86, 0x3a, 0x09, 0x5e, 0x27, 0x89, 0xd7, 0x35,
97660 - 0xb8, 0x32, 0x05, 0x9d, 0x11, 0x8c, 0x57, 0x0d, 0x02, 0x95, 0x9a, 0x48,
97661 - 0x77, 0x40, 0x62, 0x41, 0xeb, 0x17, 0x3e, 0x55, 0x4d, 0x7c, 0x9e, 0x9d,
97662 - 0x92, 0x7c, 0xa3, 0x08, 0x57, 0xc9, 0xd4, 0x9a, 0x43, 0xf8, 0x70, 0x03,
97663 - 0xf0, 0xc6, 0xa4, 0xbb, 0xef, 0xde, 0x27, 0x67, 0x6f, 0x2b, 0xdd, 0x33,
97664 - 0x0d, 0x8f, 0x39, 0x67, 0x15, 0x64, 0xfc, 0x43, 0x38, 0x93, 0x15, 0x7e,
97665 - 0x39, 0x44, 0x7e, 0x19, 0x1f, 0x26, 0xf7, 0x6c, 0x2d, 0x40, 0x62, 0xb2,
97666 - 0xc9, 0xf8, 0x88, 0xbe, 0xff, 0x2c, 0x79, 0xeb, 0x11, 0xb8, 0xfb, 0xee,
97667 - 0x8d, 0xa5, 0xb3, 0x08, 0xf1, 0x7c, 0xa7, 0xb2, 0xd3, 0x39, 0xcf, 0x64,
97668 - 0x30, 0xde, 0x3a, 0x94, 0x1d, 0xf3, 0xdb, 0x94, 0xae, 0xf9, 0x6e, 0x65,
97669 - 0x4f, 0x41, 0xea, 0xd8, 0xd5, 0x6d, 0x0f, 0x9e, 0xd8, 0xad, 0xec, 0x9c,
97670 - 0xed, 0x55, 0xc8, 0x6f, 0xd5, 0x80, 0xd9, 0xa7, 0x74, 0xcf, 0xbb, 0xfd,
97671 - 0xf4, 0x4e, 0xd6, 0x70, 0x3b, 0x2d, 0xf1, 0x07, 0xb5, 0xad, 0x6b, 0x52,
97672 - 0xfe, 0x17, 0x2b, 0x22, 0xff, 0xf7, 0xd0, 0xbf, 0x55, 0xb1, 0xed, 0x55,
97673 - 0xa9, 0xd7, 0x65, 0x3d, 0xec, 0xe7, 0x53, 0xcc, 0x93, 0x56, 0x0d, 0x06,
97674 - 0x58, 0x83, 0x8c, 0x1a, 0xb7, 0x94, 0xf6, 0xcf, 0x44, 0x27, 0x39, 0x2f,
97675 - 0x21, 0xfe, 0x8a, 0x4c, 0x25, 0x65, 0xf8, 0x07, 0xca, 0xbf, 0xbf, 0xa4,
97676 - 0x57, 0xb7, 0x9c, 0x27, 0xf0, 0x23, 0x23, 0x3a, 0xe4, 0xa9, 0xef, 0xb1,
97677 - 0xc9, 0xeb, 0x7a, 0xf9, 0x78, 0x6d, 0x9c, 0x5c, 0x75, 0xbf, 0xa2, 0x0d,
97678 - 0x3f, 0xe7, 0xea, 0x75, 0xe1, 0x8a, 0xa2, 0x15, 0x47, 0x21, 0xb8, 0xe0,
97679 - 0xea, 0xb5, 0xb6, 0xa4, 0xd7, 0x9a, 0x7c, 0xa7, 0x73, 0x4e, 0xab, 0x86,
97680 - 0x7a, 0x2d, 0x4c, 0x76, 0x28, 0x9d, 0xf3, 0xd2, 0xcb, 0x14, 0xdd, 0x44,
97681 - 0x8f, 0x13, 0x76, 0x95, 0xde, 0xad, 0xdc, 0xee, 0x9c, 0x2b, 0x93, 0xb3,
97682 - 0x5d, 0xb2, 0xdf, 0x5f, 0xd6, 0x4b, 0x72, 0xfa, 0xd2, 0xf0, 0xb6, 0x69,
97683 - 0x35, 0xbc, 0x75, 0xda, 0xb6, 0xbf, 0x6b, 0xfc, 0xb3, 0xa3, 0xcb, 0x59,
97684 - 0x43, 0x74, 0x91, 0x73, 0x23, 0x65, 0x7d, 0xbe, 0x50, 0xd2, 0x47, 0xd6,
97685 - 0xea, 0xfa, 0x3a, 0x95, 0xff, 0x87, 0xef, 0xdd, 0xac, 0x7b, 0xa6, 0xa4,
97686 - 0xac, 0x4f, 0xd8, 0x2c, 0x9f, 0x2f, 0x1b, 0xc2, 0x1b, 0xbc, 0xff, 0x93,
97687 - 0x6c, 0x59, 0x2f, 0x2f, 0xe6, 0x66, 0xc5, 0xfe, 0x43, 0xf2, 0x3f, 0x7c,
97688 - 0xc4, 0x91, 0xb8, 0x31, 0x46, 0x3f, 0x72, 0xf5, 0xd3, 0x86, 0x57, 0x7a,
97689 - 0x9b, 0x8a, 0x57, 0xa0, 0xf5, 0x2f, 0x2a, 0x89, 0x34, 0x6b, 0x70, 0x9c,
97690 - 0x2d, 0xfc, 0xea, 0xfa, 0x35, 0xe7, 0xab, 0x94, 0x6d, 0x39, 0x19, 0xfb,
97691 - 0x21, 0x8e, 0x2d, 0x67, 0x4a, 0x14, 0x3c, 0x37, 0x0b, 0xcc, 0x5a, 0x9c,
97692 - 0xd6, 0x1c, 0xc1, 0xd3, 0x86, 0x6d, 0x3f, 0xdb, 0xa2, 0xcb, 0x59, 0xa0,
97693 - 0xf3, 0x6e, 0xaf, 0x08, 0x46, 0x8d, 0x2e, 0x7b, 0x79, 0x72, 0x9e, 0xa4,
97694 - 0x97, 0x36, 0x10, 0xdd, 0xc5, 0x07, 0xca, 0x6b, 0x2f, 0xe7, 0xdc, 0x32,
97695 - 0xb4, 0x8f, 0xd8, 0xa6, 0x7c, 0xde, 0x4d, 0xfa, 0x30, 0x37, 0xda, 0x64,
97696 - 0x6d, 0xd8, 0x59, 0x5f, 0x43, 0xfc, 0x95, 0xe8, 0x43, 0x5f, 0x9d, 0x23,
97697 - 0x97, 0x18, 0x33, 0xfc, 0x0e, 0x6f, 0x3b, 0x42, 0xae, 0x32, 0xc1, 0xd8,
97698 - 0x79, 0xd2, 0xba, 0x80, 0x0b, 0xf9, 0xd7, 0xf0, 0xc6, 0xb5, 0xff, 0x67,
97699 - 0x13, 0x7f, 0xb9, 0xb8, 0xb1, 0xcb, 0x39, 0xd3, 0x74, 0xba, 0xf5, 0x96,
97700 - 0x84, 0xe0, 0x50, 0x77, 0xb3, 0x9c, 0x71, 0xaa, 0x34, 0xf3, 0x9b, 0x64,
97701 - 0xbf, 0xab, 0xc2, 0x34, 0x6f, 0x3d, 0xaf, 0x8b, 0x6d, 0xfe, 0x62, 0xfd,
97702 - 0x19, 0x5d, 0xf4, 0xfa, 0x9f, 0x6b, 0xc7, 0x9d, 0xff, 0xaf, 0xfc, 0xbb,
97703 - 0x5b, 0xf7, 0xe9, 0x12, 0x3b, 0x67, 0x5b, 0xda, 0x1d, 0x4c, 0x68, 0x35,
97704 - 0x57, 0x39, 0x36, 0x68, 0x31, 0x6f, 0x71, 0x3e, 0x0d, 0x33, 0xe9, 0x7c,
97705 - 0x9a, 0xa6, 0x6b, 0x9b, 0x6e, 0xb3, 0xc1, 0xf9, 0xec, 0x30, 0xdd, 0xf3,
97706 - 0xcf, 0x69, 0x53, 0x77, 0x3e, 0x7b, 0xcc, 0xb8, 0xf3, 0xd9, 0x69, 0xae,
97707 - 0xbc, 0x2e, 0x17, 0x7f, 0xfe, 0x1f, 0x9b, 0x97, 0x53, 0xd9, 0x78, 0x3a,
97708 + 0xad, 0x7b, 0x0d, 0x70, 0x94, 0xf7, 0x79, 0xe7, 0xef, 0xbf, 0x1f, 0xd2,
97709 + 0xae, 0xb4, 0x5a, 0xad, 0xf0, 0x82, 0x57, 0x89, 0x52, 0xf6, 0xf5, 0xbe,
97710 + 0x2b, 0x2d, 0x96, 0x80, 0x77, 0x41, 0x04, 0x11, 0x6d, 0xcd, 0x56, 0x08,
97711 + 0x21, 0x40, 0xd8, 0x32, 0x56, 0x92, 0x25, 0xc7, 0xd4, 0x2a, 0xc8, 0x20,
97712 + 0xdb, 0x18, 0x8b, 0x86, 0xe6, 0xe4, 0xd6, 0xad, 0xd6, 0x92, 0xc0, 0x60,
97713 + 0x56, 0xbc, 0x22, 0x82, 0x08, 0x77, 0xee, 0x26, 0xb2, 0x25, 0x2c, 0xec,
97714 + 0xac, 0x58, 0x3b, 0xbd, 0xeb, 0xc5, 0x33, 0xc9, 0x58, 0x67, 0x6c, 0x4c,
97715 + 0x72, 0xfe, 0xc8, 0x75, 0x3a, 0x3d, 0xf7, 0xe6, 0xee, 0xca, 0xf8, 0x83,
97716 + 0xd8, 0x6e, 0x8c, 0xdd, 0x4c, 0x3a, 0x27, 0x52, 0xdb, 0xef, 0xfd, 0x9e,
97717 + 0xf7, 0xdd, 0x05, 0xe2, 0xba, 0xd3, 0x99, 0xce, 0x69, 0x66, 0x67, 0xa5,
97718 + 0xf7, 0xe3, 0xf9, 0x3f, 0xdf, 0xcf, 0xef, 0x79, 0xfe, 0x7f, 0xd5, 0x03,
97719 + 0x15, 0x28, 0xfe, 0x54, 0xf1, 0xd3, 0x3c, 0x30, 0x78, 0x70, 0xd5, 0x8a,
97720 + 0xe6, 0x15, 0xf6, 0x05, 0x97, 0xc7, 0x23, 0x37, 0xbf, 0xaa, 0x80, 0xde,
97721 + 0x0f, 0xf0, 0x6f, 0xfa, 0xf9, 0xca, 0xbf, 0xed, 0x35, 0xfb, 0xc7, 0x0d,
97722 + 0x84, 0x4a, 0x7c, 0xc9, 0x07, 0x3e, 0x57, 0xea, 0xd2, 0xd7, 0xda, 0x74,
97723 + 0xf8, 0xdc, 0xa9, 0x93, 0xa9, 0xdd, 0x3a, 0x90, 0xce, 0x37, 0x46, 0x37,
97724 + 0xe0, 0x53, 0x2b, 0x1b, 0xf6, 0x40, 0xae, 0x7f, 0x25, 0xf5, 0xc9, 0xd0,
97725 + 0x4f, 0xd6, 0x6a, 0x1f, 0x4f, 0xb9, 0xe1, 0x0b, 0xa5, 0x4e, 0x23, 0x54,
97726 + 0x0f, 0x5f, 0x1d, 0xdf, 0xf9, 0x0f, 0x0d, 0xd5, 0x6e, 0x04, 0x4b, 0xb4,
97727 + 0x5a, 0x30, 0x62, 0x22, 0xeb, 0x4b, 0x0d, 0xa0, 0x7c, 0x0d, 0xf0, 0x6e,
97728 + 0x2e, 0x6e, 0x8c, 0x00, 0xe3, 0xae, 0x54, 0x3c, 0xfa, 0x22, 0x0c, 0x1c,
97729 + 0x2a, 0x44, 0xd1, 0xce, 0xcf, 0x66, 0xf3, 0x33, 0x2b, 0xea, 0x45, 0xd6,
97730 + 0xcd, 0xe7, 0x76, 0x35, 0x03, 0x1b, 0x73, 0x06, 0x0e, 0x9b, 0xf0, 0xd5,
97731 + 0xa6, 0x1e, 0xc6, 0x3a, 0x7e, 0x07, 0x53, 0x83, 0x78, 0x7d, 0x2c, 0x16,
97732 + 0x7d, 0x0a, 0x5a, 0x46, 0x77, 0x6b, 0x83, 0x40, 0x63, 0x7f, 0x9f, 0xd2,
97733 + 0x7a, 0xdf, 0x50, 0x5a, 0xf7, 0x98, 0x82, 0x4f, 0xf1, 0xb9, 0xc6, 0xbc,
97734 + 0x7c, 0x0f, 0xe2, 0xd6, 0xbc, 0x0f, 0x97, 0xdc, 0xb2, 0xfe, 0xef, 0x52,
97735 + 0xdf, 0x0a, 0x1e, 0xbd, 0x05, 0xa3, 0xe4, 0xc1, 0x9b, 0x52, 0x78, 0xb2,
97736 + 0x39, 0x1e, 0x19, 0x86, 0xdc, 0x8f, 0x62, 0x43, 0x41, 0xbe, 0x35, 0x4a,
97737 + 0x6d, 0x59, 0xa3, 0x86, 0x65, 0x9d, 0x31, 0xca, 0x91, 0x0d, 0x69, 0x11,
97738 + 0x40, 0x61, 0xd8, 0x70, 0x21, 0x1d, 0x6a, 0x8b, 0x7a, 0xa0, 0x45, 0xee,
97739 + 0xc1, 0x3f, 0x51, 0xe6, 0x74, 0xc2, 0x0b, 0xe7, 0xf9, 0x5e, 0x94, 0x63,
97740 + 0x3e, 0xe4, 0x68, 0xed, 0xc9, 0x9c, 0x65, 0x5d, 0xd0, 0x3d, 0x38, 0x43,
97741 + 0xfd, 0x0c, 0xe7, 0xff, 0xc9, 0x9a, 0xa7, 0x6e, 0x46, 0xf5, 0xd2, 0xfa,
97742 + 0x3e, 0x4c, 0x85, 0x2c, 0x6b, 0x9a, 0xf7, 0x0e, 0xe7, 0x4b, 0x7a, 0xb6,
97743 + 0x2c, 0x97, 0x6e, 0x59, 0xbb, 0xf5, 0xdf, 0x58, 0xbb, 0x7e, 0xeb, 0x59,
97744 + 0xcb, 0x7a, 0xcc, 0xb8, 0x09, 0x67, 0x27, 0xda, 0xd5, 0x96, 0xd9, 0x25,
97745 + 0xc1, 0xcd, 0x93, 0x16, 0x2e, 0x18, 0x08, 0xb9, 0x52, 0x1d, 0x6a, 0xf3,
97746 + 0x6c, 0xa7, 0xda, 0x58, 0xd8, 0xae, 0x3a, 0xa6, 0xbf, 0xa5, 0x3a, 0x67,
97747 + 0x7b, 0xd5, 0xa6, 0x42, 0x04, 0x33, 0x66, 0x18, 0xd3, 0x66, 0x46, 0xb5,
97748 + 0xcf, 0xf6, 0x28, 0x47, 0x8e, 0x41, 0xd5, 0x56, 0x28, 0xd1, 0xba, 0xae,
97749 + 0xc7, 0xcd, 0xb9, 0x14, 0x8e, 0x98, 0xe5, 0x5c, 0x67, 0xc1, 0xfa, 0x49,
97750 + 0xc3, 0x02, 0xe5, 0x34, 0x70, 0xb4, 0xf0, 0x18, 0xb6, 0x4d, 0x5a, 0x56,
97751 + 0x3e, 0x09, 0xe4, 0x0b, 0xc0, 0x0f, 0xcc, 0x58, 0x77, 0xbf, 0xb2, 0xac,
97752 + 0x4d, 0x71, 0x6b, 0xe9, 0x65, 0xa3, 0x31, 0xf1, 0x12, 0xfe, 0xaf, 0x35,
97753 + 0x15, 0x46, 0x36, 0x40, 0x1a, 0xc7, 0x68, 0xb3, 0xfb, 0xc6, 0xe0, 0x2b,
97754 + 0x4f, 0x8d, 0xe2, 0x17, 0x39, 0xf8, 0xca, 0x52, 0x59, 0x5c, 0xc8, 0x0d,
97755 + 0x87, 0x7c, 0x88, 0x45, 0x36, 0xab, 0xec, 0xa0, 0x0b, 0xda, 0xc0, 0xdb,
97756 + 0xd0, 0xa2, 0xb4, 0xc7, 0xc5, 0xf3, 0x4a, 0x9b, 0x7f, 0x09, 0x5a, 0xfa,
97757 + 0x37, 0x4a, 0xeb, 0xac, 0x75, 0x23, 0xed, 0x8a, 0xfb, 0xf0, 0x93, 0x06,
97758 + 0xb1, 0xc9, 0x28, 0x56, 0xd8, 0xb6, 0xc9, 0x62, 0xd9, 0x35, 0xdb, 0xa4,
97759 + 0x30, 0x4c, 0xbe, 0x0e, 0x93, 0xaf, 0x97, 0x0d, 0x2d, 0xf2, 0x24, 0xac,
97760 + 0xa5, 0x7d, 0x86, 0xdc, 0x4b, 0x61, 0xb4, 0x60, 0x45, 0x83, 0xa9, 0x4b,
97761 + 0xe4, 0x17, 0xd9, 0x2f, 0xa5, 0x7c, 0xd9, 0xea, 0xd4, 0xa7, 0xd6, 0x6b,
97762 + 0x6b, 0x22, 0x78, 0xa1, 0x10, 0xc6, 0x73, 0x85, 0x10, 0x9e, 0x2d, 0xb4,
97763 + 0xc3, 0x2c, 0x20, 0xb8, 0xad, 0xf0, 0x45, 0x7e, 0x6c, 0x21, 0xc0, 0xe7,
97764 + 0xc9, 0x77, 0x70, 0x6b, 0xc1, 0xd3, 0x5b, 0x96, 0x42, 0xf7, 0x4f, 0x73,
97765 + 0x43, 0x56, 0x85, 0x8e, 0xde, 0x9a, 0x94, 0x9e, 0xbe, 0x55, 0x05, 0x5a,
97766 + 0xe8, 0x87, 0xdd, 0xaf, 0xe4, 0x5b, 0x3c, 0xfa, 0x71, 0x3f, 0xbc, 0xd4,
97767 + 0xff, 0xc6, 0x82, 0x65, 0x8d, 0x18, 0x07, 0x56, 0xee, 0x6a, 0xf9, 0x8b,
97768 + 0xf9, 0x6e, 0xbd, 0x0b, 0xd9, 0x42, 0x1f, 0x10, 0x4c, 0xf1, 0x9b, 0xa1,
97769 + 0xb8, 0xbd, 0xa9, 0x3d, 0x7a, 0xee, 0x01, 0x8f, 0xe3, 0xcf, 0xe4, 0x81,
97770 + 0x7a, 0x7f, 0xce, 0x24, 0x0f, 0xe6, 0xe1, 0x20, 0x2a, 0xa2, 0x94, 0xef,
97771 + 0xe7, 0xe4, 0x33, 0x81, 0x1f, 0x16, 0x74, 0xf2, 0xd6, 0x44, 0x1e, 0xa3,
97772 + 0xe4, 0xcf, 0x87, 0x5d, 0x13, 0xda, 0x78, 0x16, 0xda, 0x91, 0x29, 0x2c,
97773 + 0x47, 0x3a, 0x1c, 0xa2, 0x0f, 0xfe, 0x39, 0x1c, 0x1a, 0x5d, 0x38, 0x6e,
97774 + 0x62, 0x55, 0x28, 0x45, 0xfb, 0x26, 0xf1, 0x70, 0x19, 0xe2, 0xbd, 0x1f,
97775 + 0x2b, 0x85, 0xd7, 0xe2, 0x5d, 0x18, 0xa3, 0x3c, 0x5d, 0x79, 0x3f, 0xee,
97776 + 0x9f, 0xa8, 0xc0, 0xbd, 0x13, 0x16, 0xee, 0x4b, 0x22, 0x55, 0x41, 0x79,
97777 + 0x12, 0xc9, 0x78, 0xf4, 0x3d, 0x78, 0xd0, 0x9e, 0xef, 0x62, 0x2c, 0x6d,
97778 + 0x40, 0xba, 0xcc, 0x87, 0x0d, 0xf9, 0x00, 0xe3, 0x31, 0x8d, 0xd3, 0x93,
97779 + 0x3e, 0x78, 0x57, 0xbb, 0x30, 0x15, 0x2e, 0x43, 0xa2, 0xde, 0xc5, 0x4f,
97780 + 0x38, 0xd8, 0x36, 0x59, 0x17, 0xdc, 0x68, 0x7a, 0xb0, 0xd7, 0x74, 0x61,
97781 + 0x68, 0xc2, 0xb2, 0xda, 0x0d, 0x0b, 0x57, 0x57, 0x87, 0xf0, 0x3c, 0xf5,
97782 + 0x77, 0xc0, 0x8c, 0xe0, 0x6c, 0xe1, 0x51, 0xf2, 0x12, 0x76, 0xf8, 0x35,
97783 + 0xc9, 0xbb, 0x49, 0xde, 0x4d, 0xf2, 0x6d, 0x0a, 0x9f, 0xe7, 0x19, 0x33,
97784 + 0x06, 0xe5, 0xf2, 0x93, 0x87, 0x4a, 0xf4, 0x93, 0x8f, 0x58, 0xd2, 0x82,
97785 + 0x2b, 0xa9, 0x65, 0x77, 0x31, 0x79, 0x2d, 0xad, 0xb7, 0xac, 0x8f, 0x57,
97786 + 0x8b, 0x2c, 0xb4, 0xb9, 0xab, 0x4b, 0x62, 0xf4, 0xf7, 0xaa, 0x18, 0x57,
97787 + 0x7f, 0x4b, 0xbd, 0x3d, 0x5e, 0xf0, 0x63, 0x70, 0xc2, 0xf6, 0xdb, 0x83,
97788 + 0x65, 0xe4, 0x5b, 0xf8, 0x2a, 0xe8, 0x71, 0xc6, 0x68, 0x3c, 0xc3, 0x18,
97789 + 0xc5, 0x56, 0xf2, 0x7c, 0x9f, 0x19, 0x6f, 0xd9, 0xae, 0x3c, 0xd8, 0x94,
97790 + 0x0f, 0x07, 0xdb, 0x6f, 0xe0, 0x93, 0xf2, 0x4a, 0x0c, 0x52, 0xd6, 0x10,
97791 + 0xf9, 0x0b, 0x63, 0x37, 0xf9, 0x7c, 0xae, 0xc8, 0xe7, 0x74, 0x41, 0xd6,
97792 + 0xfa, 0x3c, 0xaf, 0x25, 0x3e, 0x91, 0x5d, 0x94, 0x0a, 0x2b, 0x54, 0x04,
97793 + 0xb0, 0x3d, 0xff, 0x26, 0x6d, 0x51, 0x87, 0xbf, 0xa0, 0x0d, 0x5e, 0x60,
97794 + 0x8c, 0xfc, 0xf0, 0x9a, 0xbf, 0x88, 0x3d, 0x1e, 0xa1, 0x1d, 0xb4, 0xd3,
97795 + 0x59, 0x04, 0xd0, 0x5b, 0x48, 0xe3, 0xd0, 0x24, 0xd2, 0x33, 0xc6, 0x31,
97796 + 0xc6, 0xfb, 0x12, 0xb8, 0xf5, 0xf2, 0x74, 0x48, 0xaf, 0xc0, 0xee, 0xe9,
97797 + 0x30, 0x06, 0x0a, 0x6d, 0x30, 0x27, 0xc2, 0xd8, 0x47, 0xdf, 0xbc, 0x92,
97798 + 0x4c, 0xdf, 0x17, 0x84, 0xf0, 0x1e, 0xc6, 0xfd, 0x7c, 0xe7, 0xb1, 0xc9,
97799 + 0x30, 0xfa, 0xa9, 0xa3, 0xcd, 0xc9, 0x78, 0x8b, 0x9f, 0xd7, 0xf6, 0xf2,
97800 + 0xda, 0x61, 0xea, 0xff, 0xbc, 0x31, 0x86, 0xde, 0x6e, 0x2d, 0x01, 0x84,
97801 + 0xb1, 0xc7, 0x44, 0x88, 0x2e, 0xfc, 0x08, 0xf3, 0x5b, 0xe2, 0x3c, 0xff,
97802 + 0xbe, 0xa7, 0x50, 0x41, 0x39, 0x83, 0x88, 0xe8, 0x9f, 0x58, 0xde, 0x66,
97803 + 0xcb, 0xfa, 0xbe, 0x11, 0xbf, 0xf8, 0x96, 0xdb, 0x83, 0x87, 0x0a, 0x2e,
97804 + 0x0c, 0x4e, 0x57, 0xe0, 0x0f, 0x27, 0x3c, 0xb8, 0xb3, 0xbe, 0x02, 0x07,
97805 + 0xa6, 0xd3, 0x18, 0x99, 0xac, 0x40, 0xdf, 0x04, 0x96, 0xee, 0x31, 0x46,
97806 + 0x6a, 0xca, 0xa0, 0x2d, 0xb4, 0x23, 0x81, 0xab, 0xb4, 0xc3, 0x43, 0xd3,
97807 + 0x81, 0x60, 0x66, 0x32, 0x84, 0xc1, 0x59, 0x3f, 0x9f, 0x77, 0xf1, 0xf9,
97808 + 0x72, 0x18, 0xab, 0x62, 0x83, 0x21, 0x08, 0x8f, 0x95, 0xd8, 0x3f, 0xed,
97809 + 0xc7, 0x03, 0x13, 0x21, 0xec, 0x9b, 0x6c, 0xc6, 0xb8, 0x99, 0xc6, 0x51,
97810 + 0xe6, 0x8e, 0x1f, 0x24, 0xb5, 0xee, 0x7d, 0x4a, 0x4b, 0x6f, 0x54, 0x69,
97811 + 0x34, 0x24, 0xbd, 0xb8, 0xc4, 0x3c, 0xe4, 0x4d, 0x36, 0xb6, 0x3c, 0xcb,
97812 + 0xdc, 0x50, 0x96, 0x0a, 0xf3, 0x6f, 0xed, 0x08, 0x63, 0x36, 0xed, 0x75,
97813 + 0xad, 0x06, 0x16, 0x4b, 0xfc, 0x86, 0x83, 0x5b, 0xcc, 0x50, 0x70, 0x4b,
97814 + 0xa1, 0x2e, 0xb8, 0xd9, 0x8c, 0x04, 0x37, 0x33, 0xbe, 0x36, 0x8a, 0x3f,
97815 + 0x9a, 0x3e, 0x1c, 0x4b, 0x7e, 0x6a, 0xf5, 0xd6, 0xd8, 0xf9, 0x2c, 0xb8,
97816 + 0x6d, 0x52, 0xcb, 0x4e, 0x41, 0x33, 0x58, 0x0d, 0x30, 0x36, 0xeb, 0xa1,
97817 + 0xfd, 0x14, 0x6a, 0xf4, 0x66, 0xe6, 0xf1, 0x10, 0xf6, 0x33, 0xa7, 0xfc,
97818 + 0x15, 0x73, 0x4a, 0xdf, 0xf1, 0x58, 0x68, 0x1c, 0x7e, 0xea, 0x1b, 0xd8,
97819 + 0x75, 0x2e, 0x4c, 0x9b, 0x77, 0xe2, 0x51, 0xf2, 0xb5, 0x79, 0x4d, 0x18,
97820 + 0xf7, 0x16, 0x42, 0xc1, 0x4e, 0xda, 0xef, 0xbd, 0x7c, 0x24, 0xb8, 0x81,
97821 + 0xb6, 0x7c, 0x3b, 0xaf, 0x45, 0xe7, 0xf1, 0x8f, 0xe2, 0x4f, 0x09, 0xb8,
97822 + 0x80, 0x3d, 0xc7, 0xbd, 0x98, 0x0f, 0xcb, 0x5a, 0xd4, 0xb9, 0xf9, 0x82,
97823 + 0x15, 0xd0, 0xf5, 0xd3, 0xfb, 0xa8, 0xeb, 0x6f, 0x17, 0x02, 0x78, 0xc0,
97824 + 0xd4, 0x12, 0x3f, 0x54, 0x01, 0xea, 0xd4, 0x47, 0x3d, 0x30, 0xc1, 0x2c,
97825 + 0x91, 0xe7, 0x92, 0x88, 0x2e, 0x71, 0x72, 0xed, 0x81, 0x69, 0xf1, 0x13,
97826 + 0xda, 0xde, 0xa4, 0x0f, 0xd0, 0x7f, 0x7e, 0x78, 0x2d, 0x56, 0xb5, 0x50,
97827 + 0xd6, 0xce, 0xdd, 0x09, 0xfa, 0x8b, 0xa3, 0xa3, 0x13, 0x93, 0xa2, 0x07,
97828 + 0x6d, 0x1c, 0xae, 0x34, 0x56, 0xae, 0xfa, 0x2b, 0xeb, 0xd2, 0x62, 0xd1,
97829 + 0x47, 0x08, 0x43, 0xd4, 0xe1, 0x69, 0xd3, 0xb2, 0xae, 0xae, 0xfe, 0xd0,
97830 + 0x6a, 0xb9, 0x59, 0xf4, 0x22, 0xb2, 0x3e, 0xaf, 0xa4, 0x8e, 0xd4, 0xe8,
97831 + 0xc1, 0xff, 0x0f, 0xbe, 0xf2, 0x1d, 0xab, 0xd7, 0x96, 0x4f, 0xfc, 0xc5,
97832 + 0x43, 0x5f, 0x7c, 0x94, 0xb4, 0x5d, 0xe8, 0x25, 0xbd, 0x07, 0x4d, 0xeb,
97833 + 0xa3, 0xda, 0xd4, 0x67, 0x56, 0xcb, 0x5a, 0x7d, 0x60, 0x41, 0xfd, 0x0f,
97834 + 0x5e, 0x0f, 0x63, 0x7f, 0xa1, 0x85, 0xba, 0x6b, 0xc7, 0x63, 0xd4, 0xe1,
97835 + 0x61, 0x53, 0x72, 0x62, 0x84, 0xfe, 0x5c, 0x47, 0xff, 0xf6, 0xa8, 0x8d,
97836 + 0x66, 0x1e, 0x9b, 0xc7, 0xb2, 0xd8, 0x44, 0x7f, 0xbf, 0x98, 0x8b, 0xb5,
97837 + 0x3c, 0x0d, 0x2d, 0x4b, 0x19, 0x82, 0x9d, 0xd4, 0x71, 0xbb, 0xa9, 0x75,
97838 + 0x8a, 0x4d, 0xdb, 0x99, 0x97, 0x5e, 0xcc, 0x45, 0x82, 0x6d, 0x05, 0xd1,
97839 + 0x77, 0x5d, 0x70, 0x43, 0xe1, 0xab, 0xb4, 0xbd, 0xc2, 0xba, 0xe5, 0x3e,
97840 + 0xe6, 0x99, 0x3b, 0xe1, 0xd8, 0xd5, 0xb1, 0xdd, 0x6b, 0xc9, 0xc6, 0xde,
97841 + 0x0f, 0x99, 0x9f, 0xb2, 0x8b, 0x9d, 0x6b, 0x83, 0xbc, 0x56, 0xbd, 0x1a,
97842 + 0xc1, 0x3b, 0xe8, 0x07, 0x77, 0xd3, 0x0f, 0xae, 0xae, 0xfe, 0xd4, 0x8a,
97843 + 0xde, 0xe4, 0xf8, 0x41, 0xdb, 0xa4, 0x27, 0xd8, 0x41, 0x3d, 0x6d, 0x34,
97844 + 0x14, 0xa6, 0x8d, 0x1c, 0x7a, 0xaf, 0x61, 0x87, 0xf4, 0xd4, 0x59, 0x23,
97845 + 0xcd, 0x3c, 0xf2, 0xbb, 0xf0, 0xd4, 0x60, 0xea, 0x69, 0xe3, 0x51, 0x44,
97846 + 0x1d, 0xdf, 0xc1, 0xbe, 0x09, 0x3f, 0xb2, 0x77, 0x86, 0x30, 0xd3, 0x10,
97847 + 0xc2, 0x83, 0xa4, 0x7d, 0x25, 0xd9, 0xd8, 0xff, 0x3a, 0x75, 0x30, 0x55,
97848 + 0x23, 0xd7, 0xd2, 0xf8, 0x91, 0xf1, 0x30, 0x70, 0x93, 0xb3, 0xf6, 0xac,
97849 + 0xc4, 0xe8, 0x6c, 0x33, 0x0e, 0x17, 0x32, 0xca, 0xc9, 0x9b, 0x5a, 0x67,
97850 + 0x1a, 0x3f, 0xb7, 0x24, 0x97, 0xce, 0x9a, 0xcc, 0x71, 0xd4, 0xc7, 0x28,
97851 + 0xfd, 0x68, 0x38, 0x5f, 0x17, 0xdc, 0x44, 0x3f, 0x7a, 0x34, 0x2f, 0x32,
97852 + 0xc5, 0x0d, 0xc3, 0x5d, 0xcb, 0xda, 0x4c, 0xfd, 0x98, 0x76, 0xcd, 0xaf,
97853 + 0x0e, 0xe9, 0x47, 0x31, 0x6e, 0xf3, 0x36, 0xa8, 0x32, 0xc4, 0x18, 0x0c,
97854 + 0x99, 0xea, 0x72, 0xfd, 0x00, 0x1e, 0xb5, 0xaf, 0x85, 0x83, 0x3b, 0x26,
97855 + 0xd3, 0x2e, 0x97, 0x8e, 0x50, 0x65, 0xaa, 0x5d, 0xed, 0x60, 0xdd, 0xed,
97856 + 0x98, 0xec, 0x50, 0x1d, 0xb3, 0x12, 0x03, 0x9d, 0x6a, 0x33, 0x6b, 0x6e,
97857 + 0x9a, 0x35, 0x37, 0xcd, 0x9a, 0x9b, 0x26, 0x1f, 0x69, 0xd6, 0xda, 0xb6,
97858 + 0xc2, 0xa0, 0xda, 0x2a, 0xfa, 0xa7, 0x7f, 0x3d, 0x6b, 0x3a, 0x38, 0x82,
97859 + 0x39, 0x28, 0xb8, 0xa9, 0xb0, 0xc2, 0xe5, 0x60, 0xbb, 0x41, 0x55, 0xc4,
97860 + 0x32, 0xbe, 0x0a, 0x9d, 0xb5, 0xcc, 0x1c, 0x54, 0x5b, 0x58, 0x6f, 0x33,
97861 + 0xb6, 0x2e, 0x63, 0x03, 0xef, 0xb0, 0xce, 0xbe, 0xc6, 0x3a, 0x9b, 0x4f,
97862 + 0x32, 0xae, 0x96, 0x5f, 0xb5, 0x7a, 0x17, 0x3b, 0x35, 0x61, 0x84, 0xfc,
97863 + 0x7e, 0x9f, 0x36, 0x9b, 0x67, 0x2d, 0x6d, 0x77, 0x2b, 0xec, 0xd1, 0x51,
97864 + 0x5d, 0xcb, 0x9c, 0x7a, 0xb8, 0xc0, 0x3a, 0x60, 0xc4, 0x5a, 0xde, 0xa7,
97865 + 0x62, 0x0f, 0xeb, 0x5e, 0x5c, 0xbd, 0x89, 0x60, 0x47, 0x6f, 0xc3, 0xb1,
97866 + 0x89, 0x72, 0xf4, 0x27, 0xd3, 0x8b, 0x7c, 0xc4, 0x2a, 0x9d, 0xcd, 0x78,
97867 + 0x98, 0x4b, 0xab, 0x48, 0x2a, 0x4e, 0xbf, 0x41, 0xfa, 0x38, 0xeb, 0xc4,
97868 + 0x98, 0xf9, 0x55, 0xe4, 0x59, 0x4f, 0x67, 0x0c, 0x0f, 0x5e, 0xcb, 0xaf,
97869 + 0x60, 0x9e, 0x8b, 0x1b, 0x01, 0x55, 0xc1, 0xf8, 0x4d, 0x21, 0x67, 0x4a,
97870 + 0x7e, 0xb2, 0xac, 0x19, 0xe1, 0x21, 0x1e, 0x4f, 0x0f, 0x43, 0x72, 0x96,
97871 + 0xb5, 0xf4, 0x9e, 0x64, 0x19, 0xd6, 0xc5, 0x83, 0x58, 0xaa, 0xf7, 0xaa,
97872 + 0xce, 0x42, 0xdc, 0x38, 0x8f, 0x6f, 0xa9, 0xbb, 0x67, 0x53, 0x8c, 0xed,
97873 + 0x0c, 0x75, 0x53, 0x81, 0x4b, 0x61, 0xe1, 0x11, 0xd5, 0x5e, 0xdd, 0x85,
97874 + 0x77, 0xef, 0x52, 0x08, 0xe9, 0x69, 0x5c, 0x68, 0x0e, 0xd1, 0xaf, 0x3a,
97875 + 0x89, 0x31, 0xa2, 0x70, 0xcf, 0x45, 0x82, 0x5b, 0x69, 0x8b, 0xca, 0xb9,
97876 + 0x3a, 0xda, 0x87, 0xbe, 0x47, 0x1d, 0xb6, 0x51, 0x87, 0x5b, 0xa6, 0x11,
97877 + 0xaa, 0x48, 0xf5, 0xa8, 0x8e, 0x42, 0xbb, 0x6a, 0x2f, 0x68, 0xd4, 0x93,
97878 + 0xe8, 0xe4, 0x3b, 0xc4, 0x4a, 0xe2, 0x2b, 0x25, 0x5b, 0x8a, 0xbf, 0xde,
97879 + 0x68, 0xcf, 0x8c, 0x4b, 0x62, 0x6e, 0xdd, 0xf2, 0x14, 0xe3, 0xd1, 0x45,
97880 + 0xbe, 0x84, 0x07, 0x1f, 0xaa, 0x1b, 0xac, 0xa5, 0x57, 0x92, 0x4c, 0x9e,
97881 + 0x15, 0x29, 0x1c, 0x2f, 0x74, 0xd1, 0x2e, 0xab, 0x8b, 0xfe, 0x15, 0x0a,
97882 + 0x6e, 0x9c, 0x6c, 0x57, 0x1b, 0x67, 0x17, 0x05, 0xbb, 0x69, 0xc3, 0xee,
97883 + 0xd9, 0x88, 0xd0, 0xe5, 0xfa, 0x62, 0xdb, 0x34, 0x5c, 0xfa, 0xbf, 0x64,
97884 + 0xcb, 0x6f, 0x93, 0x96, 0xd8, 0xd3, 0x5f, 0xf2, 0xd3, 0xe0, 0xdd, 0x93,
97885 + 0x69, 0xbc, 0xbb, 0xda, 0xcb, 0x9a, 0x5a, 0xc2, 0x14, 0x55, 0xc5, 0xef,
97886 + 0xd3, 0x2e, 0xe8, 0x83, 0xaa, 0x53, 0xfc, 0xc8, 0xeb, 0xac, 0x79, 0xc7,
97887 + 0x24, 0xbc, 0x84, 0x0a, 0x51, 0x37, 0x31, 0xdd, 0x87, 0xc9, 0x78, 0xef,
97888 + 0x39, 0xd5, 0xa5, 0xba, 0x0a, 0x52, 0x83, 0x1d, 0x9f, 0x6a, 0xa3, 0x4f,
97889 + 0xb5, 0x93, 0x9f, 0x76, 0xfa, 0xd4, 0x16, 0xf2, 0xb3, 0xc5, 0xf6, 0x29,
97890 + 0xf1, 0xcd, 0xdf, 0xe6, 0x65, 0x43, 0xe1, 0x6e, 0x5b, 0x2f, 0x5b, 0xf9,
97891 + 0x6e, 0x27, 0xe5, 0xe8, 0xe4, 0x7b, 0x77, 0xf3, 0xbd, 0xbb, 0x67, 0xff,
97892 + 0x97, 0xf0, 0x47, 0x59, 0x9c, 0xd8, 0xbf, 0x5e, 0xd3, 0x24, 0x07, 0xfc,
97893 + 0xac, 0x88, 0x29, 0x90, 0x75, 0xa5, 0x24, 0x47, 0x0c, 0xa0, 0xbb, 0x19,
97894 + 0xbe, 0x45, 0xa9, 0x67, 0x5b, 0xb7, 0xd7, 0x33, 0x9f, 0x31, 0x9f, 0xfa,
97895 + 0x8e, 0x13, 0x4b, 0x33, 0x47, 0xcf, 0xb4, 0x28, 0x8c, 0x18, 0x37, 0x33,
97896 + 0x4e, 0x0d, 0x1c, 0x29, 0x68, 0x9d, 0x51, 0xde, 0x6b, 0x1a, 0x13, 0x8c,
97897 + 0xbf, 0x0f, 0x6d, 0xc4, 0x75, 0x91, 0x54, 0x3f, 0x22, 0x66, 0x2c, 0x72,
97898 + 0x44, 0x69, 0xfd, 0x1b, 0xa0, 0x5d, 0x64, 0x6d, 0x18, 0x9c, 0x56, 0xda,
97899 + 0x40, 0xad, 0x5b, 0x4b, 0xbf, 0x61, 0xe3, 0xeb, 0x7d, 0x58, 0x6e, 0x63,
97900 + 0xb8, 0x7e, 0x24, 0x88, 0x65, 0xb7, 0x92, 0xe6, 0xde, 0x75, 0x0a, 0x97,
97901 + 0x8d, 0x0f, 0x69, 0x47, 0x2d, 0x9d, 0x55, 0x06, 0x72, 0xcc, 0x13, 0x91,
97902 + 0xe3, 0x82, 0xd5, 0xf7, 0x11, 0xab, 0xc3, 0x17, 0xe0, 0xb3, 0xb9, 0xb1,
97903 + 0xd8, 0xa0, 0xcf, 0xad, 0x25, 0x88, 0xd3, 0xd3, 0xa4, 0x69, 0x14, 0x88,
97904 + 0xdf, 0xb9, 0x46, 0x74, 0x4f, 0x91, 0x66, 0xbc, 0x48, 0x53, 0xcf, 0x83,
97905 + 0x71, 0x73, 0x04, 0x9b, 0xe2, 0xac, 0x15, 0xcc, 0x79, 0x47, 0xa5, 0x27,
97906 + 0x20, 0xbd, 0xf2, 0xe3, 0x06, 0xff, 0x1e, 0x54, 0x3b, 0x24, 0xa6, 0xca,
97907 + 0x1d, 0x2b, 0x54, 0x73, 0x8d, 0xaa, 0xd4, 0x41, 0xcc, 0xd9, 0x6b, 0x0c,
97908 + 0xc8, 0x1a, 0x03, 0xbf, 0x50, 0x5a, 0xe2, 0x9c, 0x92, 0x5c, 0xdd, 0x98,
97909 + 0x39, 0xc7, 0x18, 0x3a, 0xac, 0xb4, 0x96, 0x63, 0x14, 0xdf, 0xaf, 0x0b,
97910 + 0xfd, 0x83, 0xc5, 0x75, 0x06, 0xd0, 0x90, 0x67, 0x7c, 0x16, 0x7c, 0x6a,
97911 + 0xc3, 0x44, 0x1b, 0x46, 0xa6, 0xdb, 0x30, 0x3c, 0xa1, 0x70, 0xb7, 0xb1,
97912 + 0x18, 0x97, 0x6e, 0xb6, 0xfb, 0x94, 0xaa, 0xa5, 0x7a, 0x2d, 0x86, 0x42,
97913 + 0xa8, 0x76, 0xe9, 0x5f, 0xc1, 0xae, 0x22, 0xc6, 0xdf, 0x74, 0xa2, 0x9b,
97914 + 0x79, 0xdf, 0xc2, 0xfb, 0x8c, 0xa5, 0x58, 0x0d, 0xd2, 0xde, 0x54, 0x0b,
97915 + 0xf1, 0x78, 0x9d, 0xdb, 0x89, 0xf7, 0x0f, 0x7d, 0x8e, 0x0d, 0x44, 0xff,
97916 + 0x9f, 0xbf, 0xd7, 0x86, 0xc7, 0x27, 0xca, 0xd0, 0xb2, 0x1a, 0x77, 0x46,
97917 + 0x50, 0xe5, 0x62, 0x8d, 0x7b, 0x73, 0xbb, 0x1a, 0xe4, 0x3d, 0xfb, 0x59,
97918 + 0xdf, 0x97, 0x53, 0x46, 0xea, 0x4f, 0x1a, 0xe4, 0xba, 0x9d, 0x37, 0x6e,
97919 + 0xb8, 0xde, 0xfd, 0x05, 0xd7, 0x15, 0x9e, 0x61, 0x22, 0xfb, 0x01, 0x6b,
97920 + 0x4a, 0x3e, 0x67, 0xc1, 0x9d, 0xf2, 0xa0, 0x7f, 0x2c, 0x8a, 0x7d, 0x73,
97921 + 0x61, 0xcc, 0xe5, 0xb4, 0xde, 0x4b, 0xec, 0x1f, 0x76, 0x35, 0xeb, 0x78,
97922 + 0x60, 0x2e, 0x82, 0xd9, 0x1c, 0x2c, 0x7f, 0x4a, 0x9f, 0xf7, 0xab, 0x04,
97923 + 0xf6, 0xce, 0xd5, 0xe1, 0x5c, 0x4e, 0xbf, 0x38, 0xac, 0xe2, 0x83, 0xb5,
97924 + 0xc4, 0x1d, 0x0f, 0xce, 0x35, 0x61, 0xff, 0x9c, 0x8f, 0xef, 0x58, 0xd8,
97925 + 0x92, 0xac, 0xe3, 0xf3, 0x2e, 0x3c, 0x7d, 0xd2, 0xb2, 0x04, 0x77, 0xf5,
97926 + 0xcf, 0x01, 0xb3, 0xe3, 0xac, 0x45, 0x67, 0x58, 0x97, 0x9e, 0x00, 0xf6,
97927 + 0x3e, 0xe1, 0xc2, 0xf4, 0xb8, 0x85, 0x5d, 0xc6, 0x70, 0xad, 0x8b, 0x0e,
97928 + 0xdf, 0xcb, 0xba, 0xe1, 0x65, 0x0d, 0xbc, 0x27, 0xe4, 0xe4, 0xf3, 0x4b,
97929 + 0xcc, 0x53, 0xf7, 0x3d, 0x91, 0xc0, 0x9b, 0xb9, 0x2c, 0xb6, 0x10, 0x9f,
97930 + 0x0f, 0x92, 0x97, 0x37, 0x72, 0xac, 0x63, 0x73, 0x06, 0x5e, 0xcf, 0xf9,
97931 + 0xb8, 0x4e, 0x13, 0x5e, 0xca, 0xc9, 0x33, 0xf2, 0x6c, 0x00, 0x7d, 0xe4,
97932 + 0xe5, 0xb5, 0x5c, 0x84, 0x6b, 0x86, 0xf1, 0x53, 0x3e, 0x77, 0xef, 0x9c,
97933 + 0xce, 0xba, 0xe5, 0xe3, 0xba, 0x51, 0xbc, 0x92, 0x0b, 0x90, 0xd7, 0x30,
97934 + 0x6b, 0x55, 0x1f, 0x46, 0x72, 0x8d, 0x17, 0x37, 0x30, 0x51, 0x3b, 0xb5,
97935 + 0x46, 0xae, 0xbd, 0x63, 0x75, 0xd9, 0xb1, 0x28, 0xeb, 0x94, 0xd6, 0xed,
97936 + 0xc3, 0x70, 0xee, 0x75, 0x77, 0xa9, 0x9f, 0x7e, 0x66, 0x7c, 0xc1, 0xc6,
97937 + 0x7e, 0x4f, 0x9b, 0xfc, 0x7d, 0x1a, 0x38, 0x67, 0x66, 0xad, 0xea, 0x14,
97938 + 0xb1, 0x2e, 0x6b, 0xd4, 0x5b, 0x6b, 0x9a, 0xb8, 0xae, 0xde, 0xfb, 0xa2,
97939 + 0x92, 0x7e, 0xc7, 0x83, 0xe8, 0x13, 0xa2, 0x2f, 0x62, 0xe6, 0x59, 0xe0,
97940 + 0x47, 0xc4, 0x9f, 0x0d, 0x63, 0x9a, 0xf8, 0x7d, 0x86, 0xb8, 0xa6, 0x7b,
97941 + 0x1e, 0xf5, 0x89, 0x07, 0x30, 0x64, 0x95, 0x11, 0x9f, 0x57, 0x13, 0xd7,
97942 + 0xce, 0x35, 0xb1, 0x4e, 0xad, 0xb1, 0xac, 0xbf, 0x6d, 0x86, 0xe5, 0x4a,
97943 + 0xe9, 0x46, 0xad, 0x7b, 0xfe, 0x2b, 0x55, 0xd0, 0x2f, 0x06, 0x95, 0x3e,
97944 + 0xff, 0x16, 0xe2, 0x03, 0xe7, 0x21, 0x7a, 0x05, 0x56, 0xcc, 0x79, 0xb0,
97945 + 0x92, 0xf2, 0x6c, 0x1c, 0xe3, 0xda, 0xc4, 0x27, 0x71, 0xca, 0xb4, 0x6d,
97946 + 0x8c, 0x98, 0x4b, 0x0f, 0x60, 0x39, 0x75, 0xdc, 0x7f, 0xca, 0xb2, 0xca,
97947 + 0xa9, 0xe3, 0x06, 0xda, 0x67, 0xcf, 0x09, 0x0b, 0x2f, 0x1a, 0x2f, 0x52,
97948 + 0xa7, 0x8a, 0xb8, 0xb1, 0x99, 0xef, 0x84, 0xf9, 0xbc, 0x0f, 0x7b, 0xc7,
97949 + 0xa4, 0x5f, 0xaa, 0xe3, 0x33, 0xaf, 0xe2, 0x58, 0x2e, 0x81, 0x26, 0xea,
97950 + 0x2f, 0x4a, 0x9a, 0x8d, 0x7c, 0x27, 0x4a, 0x7a, 0xd1, 0xb9, 0xaf, 0x61,
97951 + 0xf3, 0x29, 0x05, 0x3d, 0x2e, 0x3a, 0xf8, 0x1a, 0xda, 0xcf, 0x7c, 0x51,
97952 + 0x4e, 0x60, 0x96, 0x1a, 0xd7, 0x8e, 0xcc, 0x13, 0x7f, 0x57, 0xa5, 0x86,
97953 + 0xc0, 0xfa, 0x8d, 0x37, 0xa6, 0x14, 0x8e, 0x8f, 0xb3, 0xdf, 0x5b, 0x03,
97954 + 0xab, 0x82, 0x32, 0xbd, 0x3e, 0xf5, 0x3b, 0x78, 0xea, 0x24, 0xf5, 0xf0,
97955 + 0x64, 0x18, 0x3f, 0xc8, 0x79, 0xb0, 0xec, 0xb8, 0x60, 0x3a, 0x3d, 0xb1,
97956 + 0x4f, 0x49, 0x7f, 0x24, 0x7d, 0x4b, 0x3c, 0xea, 0x55, 0x2e, 0xd4, 0x3f,
97957 + 0xe5, 0x81, 0x7e, 0x2e, 0x0a, 0x6f, 0xbd, 0x0f, 0x7a, 0xfd, 0x1f, 0x32,
97958 + 0xd7, 0xb8, 0x50, 0xc6, 0x5e, 0x76, 0xd3, 0x77, 0x13, 0xbc, 0x16, 0xe6,
97959 + 0x35, 0xfc, 0x4e, 0x39, 0xdc, 0x4b, 0xdc, 0xac, 0xe1, 0x65, 0x3a, 0xf1,
97960 + 0x98, 0xc7, 0xb2, 0xdc, 0xac, 0x0d, 0x3b, 0xbe, 0x67, 0x59, 0xb1, 0xd5,
97961 + 0xf2, 0x7c, 0x08, 0xb1, 0x73, 0x3a, 0x9f, 0x73, 0xea, 0xe5, 0x75, 0x3c,
97962 + 0xe6, 0xa6, 0x1f, 0x49, 0xac, 0xb2, 0xde, 0xdb, 0x3d, 0x94, 0x83, 0xdb,
97963 + 0x9f, 0x2b, 0x08, 0xb6, 0x89, 0xda, 0x32, 0x9c, 0x1d, 0x57, 0xcc, 0xd9,
97964 + 0x29, 0x3e, 0xbb, 0x1e, 0xee, 0xa4, 0x76, 0x24, 0x4b, 0x3f, 0xd8, 0x15,
97965 + 0x6a, 0xc1, 0x33, 0xa6, 0x17, 0x95, 0xfa, 0x12, 0xdc, 0xdf, 0x1d, 0xc2,
97966 + 0x33, 0xec, 0x0b, 0x68, 0xb3, 0xc4, 0x3c, 0xd8, 0x48, 0x07, 0x49, 0xcf,
97967 + 0xf5, 0x63, 0xe8, 0xdf, 0x75, 0x31, 0xcf, 0xb9, 0xed, 0x3c, 0x57, 0x56,
97968 + 0x0f, 0xcc, 0xe7, 0x3d, 0xb8, 0xa0, 0x3b, 0x98, 0xf0, 0x39, 0xbb, 0x66,
97969 + 0x6b, 0xa1, 0xf9, 0x6b, 0x58, 0x50, 0x6b, 0x49, 0x2b, 0x32, 0x13, 0x14,
97970 + 0xdd, 0x65, 0x3c, 0x8e, 0x2f, 0xfd, 0x8d, 0x5b, 0x7a, 0x8e, 0xeb, 0x7f,
97971 + 0x57, 0xc0, 0x95, 0xd2, 0x22, 0x6d, 0x6e, 0xf8, 0x3c, 0xa9, 0xce, 0xd6,
97972 + 0x51, 0xfd, 0x4b, 0x37, 0xf0, 0xde, 0x84, 0x91, 0xc2, 0xf5, 0x5e, 0xbb,
97973 + 0x33, 0x67, 0xfb, 0x50, 0xa7, 0xe8, 0xfe, 0x31, 0x43, 0xf2, 0xec, 0xa0,
97974 + 0x6a, 0x67, 0xde, 0xca, 0x7a, 0x90, 0xad, 0xe2, 0x33, 0xd4, 0x3f, 0x0e,
97975 + 0x8f, 0x09, 0x9d, 0x83, 0x18, 0xcd, 0xc9, 0x6c, 0x63, 0x00, 0xeb, 0xcc,
97976 + 0x58, 0xe2, 0x22, 0x7b, 0xe8, 0x43, 0x90, 0x39, 0x44, 0xe3, 0xfc, 0xcb,
97977 + 0x4a, 0x1b, 0xbc, 0xc5, 0xad, 0xf5, 0x2f, 0x28, 0x27, 0x6f, 0xad, 0x28,
97978 + 0xe6, 0xad, 0xe5, 0xf9, 0x25, 0xc1, 0x2e, 0xd6, 0x83, 0xae, 0xd9, 0x52,
97979 + 0x7d, 0xe8, 0x52, 0x9b, 0xec, 0xda, 0x9a, 0x51, 0x5b, 0x67, 0x7d, 0xaa,
97980 + 0x63, 0xc2, 0x87, 0x97, 0x89, 0xc5, 0xa6, 0x7a, 0x10, 0x5a, 0xb6, 0x06,
97981 + 0xfe, 0xad, 0x13, 0xdd, 0x28, 0xd7, 0xa5, 0x87, 0x2c, 0xc7, 0x26, 0xbb,
97982 + 0xae, 0xd5, 0x05, 0xbb, 0x58, 0x7f, 0xba, 0x0a, 0x3d, 0xcc, 0x7f, 0x08,
97983 + 0xf9, 0x53, 0xce, 0xcc, 0x40, 0x72, 0xe1, 0xed, 0x7c, 0xf7, 0x62, 0x72,
97984 + 0x11, 0xe0, 0xd4, 0x3f, 0x95, 0x61, 0x2f, 0x51, 0xbd, 0x5a, 0xe1, 0xd2,
97985 + 0x9d, 0x3e, 0x90, 0x16, 0x7b, 0xfe, 0x7c, 0xeb, 0x85, 0xf1, 0x6e, 0xd5,
97986 + 0x31, 0x3d, 0xe3, 0xdf, 0x68, 0xca, 0x2c, 0x62, 0xca, 0xdf, 0x4e, 0x1e,
97987 + 0xda, 0x67, 0x9f, 0xf4, 0x6f, 0x20, 0x4f, 0x1b, 0x66, 0x3f, 0x4f, 0x53,
97988 + 0xea, 0x4a, 0x7f, 0x6b, 0x1b, 0x63, 0x7b, 0x87, 0xf1, 0x91, 0x15, 0xfd,
97989 + 0xa6, 0xd0, 0x99, 0x2b, 0xea, 0x33, 0x4d, 0xbe, 0xc2, 0xbe, 0x4d, 0x85,
97990 + 0x90, 0x2f, 0x5d, 0x68, 0xf7, 0xb7, 0x99, 0xdd, 0xfe, 0x0d, 0x66, 0x8f,
97991 + 0xbf, 0xdd, 0xdc, 0x49, 0xda, 0x5d, 0xfe, 0x0e, 0x93, 0x71, 0x5d, 0xe8,
97992 + 0xa1, 0x5e, 0xbb, 0x31, 0x5a, 0xd8, 0x49, 0xec, 0x21, 0x34, 0x7b, 0x89,
97993 + 0x83, 0xfc, 0x94, 0x71, 0x88, 0x32, 0xce, 0x47, 0xbc, 0x48, 0x6b, 0x5e,
97994 + 0xea, 0x6b, 0xc4, 0xb6, 0xe3, 0x11, 0x7b, 0x16, 0x55, 0x91, 0x7a, 0xa0,
97995 + 0x75, 0xcb, 0x09, 0xe6, 0xfb, 0xd4, 0x9e, 0xd6, 0x65, 0xa7, 0x50, 0xe3,
97996 + 0x4d, 0x49, 0xef, 0xcc, 0x7e, 0x38, 0x1e, 0x37, 0xde, 0x43, 0x3c, 0xf2,
97997 + 0x32, 0x9f, 0x1d, 0xa6, 0xef, 0x8e, 0xd8, 0xf3, 0x07, 0x1a, 0x24, 0xdf,
97998 + 0x84, 0x2d, 0xa6, 0xcf, 0xbf, 0x8d, 0xbd, 0x59, 0x30, 0xa5, 0xb5, 0xdc,
97999 + 0xee, 0x96, 0x79, 0xc8, 0xfc, 0xef, 0x05, 0xd0, 0x84, 0xce, 0x82, 0x8f,
98000 + 0x72, 0x7d, 0x09, 0x7f, 0x7f, 0x92, 0x75, 0x0d, 0xe2, 0x87, 0x96, 0x75,
98001 + 0x2f, 0xfb, 0x9a, 0xa3, 0xf9, 0x3a, 0x5c, 0xb6, 0x6d, 0xec, 0xc1, 0xe1,
98002 + 0x7c, 0x14, 0xef, 0x50, 0x3e, 0xcf, 0x5c, 0x2d, 0xde, 0x1e, 0x77, 0x63,
98003 + 0xb7, 0x71, 0x5b, 0xb1, 0x5e, 0xb8, 0x70, 0x4f, 0xe2, 0x00, 0xb1, 0x83,
98004 + 0x0b, 0xd5, 0xc4, 0x6f, 0x0f, 0xda, 0xd7, 0xdc, 0xec, 0xff, 0xbe, 0x8e,
98005 + 0x41, 0xa7, 0x9e, 0x90, 0xc7, 0x9d, 0xe4, 0xb1, 0xd9, 0xbf, 0x61, 0x42,
98006 + 0xf3, 0xdf, 0x31, 0x01, 0x9f, 0x37, 0xb5, 0xab, 0xf5, 0xcc, 0x49, 0x0b,
98007 + 0x7d, 0xc6, 0xad, 0xb8, 0x72, 0x72, 0xb8, 0xdf, 0x43, 0xff, 0xf9, 0x65,
98008 + 0x32, 0x03, 0x73, 0x12, 0x17, 0x88, 0x3c, 0x5e, 0x0d, 0x30, 0xb7, 0x37,
98009 + 0x24, 0xe3, 0x21, 0xd6, 0x62, 0x63, 0x96, 0xb1, 0xd9, 0x01, 0xad, 0x9f,
98010 + 0x35, 0x39, 0xed, 0x4e, 0xc5, 0x7b, 0x47, 0x08, 0x1e, 0xab, 0xc8, 0x8f,
98011 + 0x9f, 0xb9, 0x3b, 0x30, 0x17, 0xf5, 0xef, 0x60, 0xbd, 0x89, 0xb0, 0xbf,
98012 + 0xf3, 0xc7, 0x71, 0x5b, 0x2d, 0xe2, 0x89, 0x05, 0xca, 0xed, 0x9d, 0x6b,
98013 + 0xf2, 0xdf, 0xce, 0xfa, 0x71, 0x39, 0x6e, 0x0d, 0xbd, 0x68, 0x04, 0x10,
98014 + 0x9c, 0x33, 0xa8, 0xef, 0x0c, 0x86, 0x67, 0xd9, 0x72, 0xc5, 0xd9, 0xf3,
98015 + 0xcf, 0xb5, 0xf8, 0xb7, 0x31, 0x36, 0xab, 0x68, 0xa2, 0xc6, 0xb9, 0xb4,
98016 + 0x5f, 0x7a, 0xbe, 0xa6, 0xb9, 0xb5, 0xe4, 0x4f, 0x7c, 0x74, 0x5f, 0xeb,
98017 + 0x3a, 0xfa, 0x43, 0x74, 0x0e, 0x9b, 0x98, 0xe6, 0x5e, 0x22, 0xcd, 0x4c,
98018 + 0x84, 0x18, 0x76, 0xef, 0x9a, 0x00, 0xf3, 0x94, 0xe8, 0x92, 0x7a, 0x2c,
98019 + 0x94, 0x64, 0x92, 0xba, 0xbc, 0xa7, 0x75, 0xee, 0x94, 0xd4, 0xe5, 0x4c,
98020 + 0x6b, 0xee, 0x94, 0x8e, 0x77, 0x58, 0x5b, 0x56, 0x24, 0x35, 0xe3, 0x9c,
98021 + 0x8a, 0x45, 0x5e, 0xa5, 0x2c, 0x1e, 0xfc, 0xca, 0xda, 0xa5, 0xc7, 0xe7,
98022 + 0x6f, 0x61, 0x3c, 0x55, 0x33, 0x37, 0x46, 0x98, 0xf3, 0xab, 0xe7, 0xa8,
98023 + 0x98, 0x39, 0xb7, 0x17, 0x15, 0x11, 0xf8, 0xe2, 0x3a, 0xde, 0x3d, 0x99,
98024 + 0xa0, 0x1e, 0xae, 0xd1, 0xdc, 0x47, 0xa8, 0xd5, 0xc7, 0x52, 0xf8, 0xc8,
98025 + 0x53, 0xf4, 0xc5, 0x51, 0xae, 0x5b, 0x36, 0x27, 0x3c, 0xcb, 0xf3, 0x61,
98026 + 0x3e, 0x7f, 0x7d, 0xed, 0x6a, 0xae, 0xfd, 0xd1, 0x29, 0xf1, 0xd7, 0x4c,
98027 + 0xeb, 0x85, 0x93, 0xce, 0xda, 0xf1, 0x64, 0x02, 0x1f, 0x9e, 0xd4, 0x06,
98028 + 0xde, 0x55, 0xb1, 0xde, 0x0b, 0x4a, 0xd6, 0x47, 0x5d, 0x15, 0xae, 0x58,
98029 + 0xc3, 0xf1, 0xf8, 0xe0, 0x2e, 0xd2, 0x6c, 0x59, 0x4b, 0xfd, 0xdb, 0x7c,
98030 + 0xd0, 0xe7, 0x99, 0x67, 0xbd, 0xe4, 0xc7, 0xe1, 0xa5, 0x8e, 0xb4, 0x4f,
98031 + 0x16, 0x7b, 0x35, 0xf6, 0xa9, 0xd7, 0xf9, 0x09, 0x53, 0x0f, 0xbe, 0x1d,
98032 + 0xcd, 0x01, 0xd4, 0xda, 0xcf, 0x85, 0xf8, 0x9c, 0xe8, 0xe1, 0xd7, 0xca,
98033 + 0xa5, 0xbf, 0xc7, 0x3c, 0x26, 0xb9, 0x24, 0xcc, 0x1c, 0xb6, 0x53, 0x7a,
98034 + 0xda, 0x6c, 0x96, 0xfe, 0xee, 0xa5, 0xbf, 0x6f, 0x14, 0x9f, 0x36, 0xe9,
98035 + 0xd3, 0x26, 0x7d, 0xda, 0xd4, 0x22, 0x03, 0x88, 0x85, 0xfa, 0x68, 0xb7,
98036 + 0x74, 0x44, 0x7c, 0xbd, 0x07, 0xbb, 0xf9, 0xd9, 0xc3, 0xfb, 0x87, 0xd9,
98037 + 0xe7, 0x62, 0x91, 0xac, 0x79, 0x10, 0xed, 0xe6, 0x23, 0xe8, 0x9f, 0xc0,
98038 + 0x6f, 0xfc, 0xcd, 0xe5, 0x28, 0x5f, 0x2e, 0x3d, 0xbc, 0x16, 0x3a, 0x8a,
98039 + 0x47, 0xd8, 0x47, 0xfd, 0x5a, 0x55, 0xea, 0x9e, 0xee, 0x63, 0x4a, 0x0b,
98040 + 0xb5, 0xb3, 0x1f, 0xde, 0x55, 0xd8, 0x49, 0xfb, 0xc6, 0xfa, 0x5f, 0x56,
98041 + 0xec, 0xa5, 0x6a, 0xb9, 0x36, 0x63, 0xe9, 0x0e, 0xae, 0x63, 0x0a, 0x1f,
98042 + 0x76, 0xbe, 0xfd, 0x7d, 0x88, 0x6e, 0x7f, 0xd2, 0xd0, 0xc7, 0xf5, 0x1d,
98043 + 0x3e, 0x86, 0xd9, 0x53, 0xf6, 0x31, 0xc6, 0x76, 0xdb, 0xf1, 0xd5, 0x43,
98044 + 0x1a, 0xd7, 0xf3, 0xd8, 0x86, 0x9c, 0xd4, 0x52, 0x0b, 0x8f, 0x1a, 0x16,
98045 + 0x9e, 0xe6, 0xe7, 0x22, 0x73, 0xd9, 0xc8, 0x0d, 0xb9, 0xcc, 0xc5, 0xe7,
98046 + 0x76, 0xf0, 0xb9, 0x16, 0xa6, 0xce, 0xd9, 0x69, 0x99, 0x0d, 0x1e, 0x94,
98047 + 0xd9, 0x20, 0xf2, 0xa6, 0xe8, 0x7e, 0x00, 0x17, 0x72, 0xb1, 0x41, 0xb7,
98048 + 0xdb, 0x1a, 0x62, 0x5c, 0x5d, 0xfc, 0x88, 0xbe, 0xfb, 0xda, 0x1a, 0xad,
98049 + 0x9b, 0x3a, 0x4c, 0x8c, 0x29, 0x2d, 0xf2, 0x33, 0xcc, 0x6f, 0xf2, 0xa1,
98050 + 0x31, 0xba, 0xd2, 0x1d, 0x0f, 0x9d, 0x85, 0x36, 0xdf, 0x47, 0x49, 0x9f,
98051 + 0x2c, 0x38, 0xb9, 0x6e, 0x5d, 0x31, 0xd7, 0xb5, 0xe4, 0x2b, 0xd4, 0x1d,
98052 + 0x13, 0xac, 0xcf, 0xd3, 0x56, 0x36, 0xc8, 0x7a, 0x55, 0x98, 0x16, 0xda,
98053 + 0x43, 0x68, 0x4c, 0x0a, 0x2d, 0xbd, 0x73, 0x4c, 0xe1, 0x1b, 0x95, 0x88,
98054 + 0xb3, 0x56, 0xc1, 0x28, 0xd7, 0xb3, 0x16, 0x6b, 0x52, 0xc8, 0x9b, 0x92,
98055 + 0xda, 0xd9, 0xc5, 0xbe, 0xa5, 0x87, 0x79, 0x51, 0x30, 0xb5, 0xcc, 0x4b,
98056 + 0x9d, 0x7c, 0xb4, 0xb1, 0x20, 0x76, 0x11, 0x9b, 0x88, 0x6d, 0x0e, 0xe2,
98057 + 0x1e, 0x53, 0x7a, 0x7f, 0x0b, 0xe3, 0x46, 0x3c, 0xfa, 0x14, 0xc4, 0x4e,
98058 + 0x07, 0xa9, 0x0b, 0x2f, 0x76, 0x33, 0x0f, 0xee, 0x6a, 0xa6, 0xae, 0x82,
98059 + 0x5e, 0xec, 0xb2, 0x67, 0x09, 0x25, 0xfd, 0x79, 0x69, 0x43, 0xc5, 0x1a,
98060 + 0x37, 0xeb, 0x75, 0xf4, 0xe8, 0xcc, 0x26, 0xdd, 0x29, 0xa1, 0x57, 0x9a,
98061 + 0x4b, 0x3a, 0xba, 0xdb, 0x94, 0x13, 0xba, 0x16, 0xce, 0x1a, 0x0e, 0x6e,
98062 + 0x2d, 0xe9, 0x2c, 0x42, 0xb9, 0x6a, 0xd6, 0x02, 0x2b, 0x6f, 0xc0, 0xae,
98063 + 0x15, 0xbc, 0xb6, 0xe5, 0x3a, 0x76, 0xcd, 0x08, 0x3e, 0x26, 0x76, 0xed,
98064 + 0xdc, 0x4a, 0xec, 0x5a, 0xaf, 0x4a, 0xb8, 0x55, 0xe6, 0x12, 0x25, 0xec,
98065 + 0x5a, 0x5d, 0xcc, 0xd1, 0x07, 0xb1, 0x8b, 0xb8, 0xa6, 0xb6, 0x7e, 0x08,
98066 + 0xbe, 0x55, 0xae, 0xcf, 0x5c, 0x18, 0x62, 0xbf, 0x52, 0x06, 0x2c, 0xb6,
98067 + 0x70, 0xcb, 0xea, 0xac, 0x55, 0xae, 0xd7, 0x47, 0xcb, 0x5d, 0x32, 0x77,
98068 + 0x8e, 0x67, 0x47, 0x98, 0x4b, 0x5c, 0xab, 0xb4, 0x6c, 0x1a, 0xbe, 0x50,
98069 + 0x8d, 0xbe, 0xb3, 0xd8, 0x2f, 0x44, 0x7c, 0x9b, 0x89, 0x7b, 0xe2, 0xc9,
98070 + 0x4f, 0xad, 0xa9, 0xb0, 0xd0, 0x98, 0x9f, 0xf7, 0x21, 0xfd, 0x90, 0x8f,
98071 + 0x75, 0x68, 0x41, 0x1d, 0xc1, 0x6b, 0xf1, 0x88, 0x6f, 0x5b, 0x21, 0xeb,
98072 + 0xdf, 0xd2, 0x70, 0x0b, 0xba, 0x4e, 0x49, 0xcd, 0x89, 0x62, 0xeb, 0xa9,
98073 + 0x76, 0xd6, 0x19, 0x1d, 0x1d, 0x63, 0x9d, 0xec, 0xe3, 0xba, 0x55, 0xf7,
98074 + 0xb4, 0xe8, 0x49, 0xf4, 0xac, 0x85, 0xa2, 0xae, 0x1b, 0xe7, 0xa2, 0xa5,
98075 + 0x9e, 0xf8, 0x3d, 0xdb, 0x87, 0x46, 0x8d, 0x10, 0xf5, 0xf3, 0x2b, 0x2f,
98076 + 0x82, 0x16, 0xce, 0x18, 0xe2, 0x7b, 0xfc, 0xdb, 0x4c, 0x63, 0x63, 0xf3,
98077 + 0xb8, 0xe5, 0xd1, 0x65, 0xbe, 0x1d, 0xb1, 0xed, 0xb6, 0x81, 0xb5, 0xac,
98078 + 0x7d, 0xba, 0x87, 0xb6, 0x2a, 0xcd, 0xb2, 0x6f, 0xb4, 0xd9, 0x7a, 0xff,
98079 + 0x46, 0xe6, 0x35, 0xf6, 0xe9, 0x3e, 0x1f, 0x73, 0xa5, 0xef, 0x94, 0x85,
98080 + 0x69, 0xe3, 0x4d, 0xeb, 0x51, 0xdd, 0x43, 0xbb, 0x7c, 0x95, 0x79, 0x57,
98081 + 0x70, 0x49, 0xca, 0x7f, 0xfb, 0xa4, 0xc7, 0x55, 0x95, 0x42, 0x73, 0x19,
98082 + 0x7d, 0xee, 0xd5, 0xa4, 0x33, 0x73, 0x3c, 0x96, 0xbf, 0xcd, 0xbf, 0x65,
98083 + 0x82, 0xbd, 0x04, 0x7b, 0x5d, 0xa7, 0xbf, 0xfb, 0xaa, 0xff, 0xee, 0x09,
98084 + 0xb7, 0xaa, 0x4d, 0xc1, 0xdd, 0xb2, 0xd6, 0xc2, 0xc7, 0xab, 0xe3, 0x83,
98085 + 0x11, 0x17, 0x73, 0x24, 0x69, 0x99, 0xf9, 0x66, 0x7f, 0x86, 0x39, 0x79,
98086 + 0xdb, 0x04, 0xd2, 0x32, 0x9f, 0x0d, 0xae, 0x1e, 0xee, 0x0d, 0x42, 0x66,
98087 + 0x69, 0xf8, 0x06, 0xa3, 0x32, 0x4c, 0x9f, 0x8b, 0xb4, 0xa9, 0xf8, 0x42,
98088 + 0x3f, 0xe2, 0x17, 0x3f, 0x76, 0xbf, 0x69, 0x3d, 0x9e, 0x5f, 0xcb, 0xe7,
98089 + 0x3b, 0x99, 0x2f, 0xd3, 0xcc, 0x9f, 0xc3, 0x83, 0x5e, 0xc8, 0x3b, 0x5a,
98090 + 0xe6, 0x0d, 0x15, 0xa3, 0xaf, 0xe3, 0x9b, 0x7c, 0x3e, 0xd4, 0xc1, 0x5c,
98091 + 0x39, 0x6d, 0xc4, 0xd3, 0x1b, 0x90, 0xed, 0xac, 0x86, 0x66, 0x34, 0x28,
98092 + 0x99, 0x7d, 0x89, 0x1d, 0x12, 0xf8, 0x39, 0xd7, 0xf4, 0xe8, 0xa2, 0xc7,
98093 + 0xf5, 0xe8, 0x9b, 0x66, 0xfd, 0xbf, 0xe6, 0x6f, 0xa2, 0x03, 0xd1, 0xcb,
98094 + 0x37, 0xcb, 0x50, 0xb1, 0x88, 0xb2, 0xfd, 0xdc, 0xce, 0x2b, 0x7e, 0x5d,
98095 + 0xc7, 0x7f, 0x26, 0x3e, 0xfa, 0x4f, 0x05, 0x99, 0x71, 0x96, 0x30, 0x9f,
98096 + 0xdd, 0x47, 0xb5, 0x2e, 0x9b, 0x4a, 0x14, 0x67, 0x9e, 0x3e, 0x7f, 0xe7,
98097 + 0xa4, 0x85, 0x93, 0x46, 0x10, 0xd2, 0xe3, 0x97, 0x27, 0xe7, 0x89, 0x00,
98098 + 0x9a, 0xd0, 0xc1, 0xeb, 0xed, 0x93, 0x95, 0xaa, 0x7d, 0xc2, 0xc2, 0x5f,
98099 + 0x18, 0x5a, 0xb6, 0xcd, 0xcd, 0x98, 0x36, 0xb4, 0xb3, 0xc0, 0x3b, 0xc4,
98100 + 0x4a, 0xe2, 0x63, 0x1e, 0x04, 0x74, 0x87, 0x56, 0xd3, 0xd4, 0x6d, 0xc4,
98101 + 0x0f, 0x12, 0x63, 0xee, 0x15, 0x15, 0x48, 0xaa, 0x29, 0x8f, 0xe8, 0xad,
98102 + 0x13, 0xe9, 0x42, 0xa5, 0xda, 0x4e, 0x5d, 0xde, 0xb1, 0xaa, 0x0c, 0x97,
98103 + 0x6c, 0x5d, 0xde, 0x46, 0x5d, 0xe2, 0xf5, 0xa5, 0x70, 0x5f, 0xa8, 0x45,
98104 + 0xa7, 0x82, 0xdd, 0x9f, 0x55, 0xb2, 0x4e, 0xa7, 0x89, 0x6f, 0x89, 0x07,
98105 + 0x43, 0x3d, 0xf8, 0x2e, 0xf3, 0xcd, 0xa3, 0xf4, 0xd5, 0x5f, 0xe9, 0x4d,
98106 + 0xa8, 0xf8, 0x5e, 0x33, 0xed, 0xb8, 0xd6, 0xbf, 0x79, 0x22, 0x83, 0xc7,
98107 + 0x66, 0x2d, 0x3c, 0xc5, 0x38, 0x69, 0x48, 0x66, 0x43, 0xe5, 0xec, 0xd7,
98108 + 0x58, 0xd3, 0x16, 0x4e, 0xd8, 0x7e, 0xbe, 0xab, 0x75, 0xfd, 0x4c, 0x04,
98109 + 0xee, 0xef, 0xca, 0xef, 0x3b, 0x5b, 0xa3, 0x33, 0xf2, 0x9d, 0xe1, 0xb7,
98110 + 0x85, 0x01, 0x43, 0x4b, 0x7f, 0xec, 0xae, 0x40, 0x65, 0xdc, 0xb2, 0x06,
98111 + 0x92, 0x72, 0xbd, 0xaf, 0x35, 0x61, 0xdf, 0xdf, 0xc3, 0xef, 0xd2, 0x4c,
98112 + 0xfa, 0x6f, 0x04, 0x0b, 0x46, 0xd3, 0x94, 0x79, 0x2b, 0xeb, 0x7b, 0x86,
98113 + 0xf5, 0xbd, 0x36, 0xa5, 0xa5, 0x77, 0xb8, 0x65, 0xfe, 0x32, 0x7f, 0xa0,
98114 + 0x9a, 0xd7, 0x6f, 0x2f, 0xd6, 0xf7, 0xaa, 0x53, 0x32, 0xd3, 0x23, 0x06,
98115 + 0x84, 0xb3, 0x17, 0xd2, 0xc5, 0xfa, 0x5e, 0x31, 0xe6, 0xc1, 0x16, 0xd6,
98116 + 0x76, 0x2f, 0xb1, 0xf8, 0xc6, 0x7c, 0x2d, 0xfc, 0x27, 0xdc, 0x88, 0x25,
98117 + 0x7f, 0x82, 0x03, 0xf4, 0xb1, 0x03, 0x09, 0xb7, 0x8a, 0x2e, 0x71, 0x51,
98118 + 0x4f, 0xff, 0x88, 0x7d, 0x21, 0x37, 0xaa, 0xf4, 0x9f, 0xe1, 0x81, 0x2f,
98119 + 0xa8, 0xe9, 0x99, 0x09, 0x89, 0xed, 0x5d, 0xad, 0x5b, 0x4e, 0x39, 0x35,
98120 + 0x3d, 0x70, 0x6a, 0x78, 0x41, 0x6a, 0x7a, 0xed, 0xea, 0x0c, 0x4e, 0x4f,
98121 + 0xe2, 0x3b, 0x4b, 0x09, 0x1e, 0x6b, 0xb9, 0x66, 0x7d, 0x32, 0xce, 0xde,
98122 + 0x5a, 0xeb, 0xef, 0x50, 0xf1, 0x23, 0x55, 0xcc, 0x01, 0xa7, 0x59, 0xd3,
98123 + 0x7d, 0xa9, 0x78, 0x28, 0xe1, 0x42, 0x97, 0x97, 0xf6, 0x78, 0x9f, 0x7d,
98124 + 0xf6, 0x5b, 0xf9, 0x28, 0x69, 0x96, 0xc1, 0xc3, 0x9a, 0xfe, 0xbe, 0x8e,
98125 + 0xcf, 0xdc, 0xf4, 0xbd, 0x77, 0xdc, 0x3e, 0x5c, 0xcd, 0x3b, 0x35, 0xbd,
98126 + 0xba, 0xc1, 0x1a, 0xba, 0x9c, 0x0c, 0xe0, 0x4a, 0xde, 0xa0, 0x0f, 0x66,
98127 + 0x70, 0x98, 0x35, 0xfd, 0xb2, 0x1e, 0xc2, 0x87, 0xf9, 0x16, 0xfa, 0x65,
98128 + 0x18, 0xbf, 0x24, 0xfe, 0x5d, 0xc5, 0x9a, 0x7e, 0x27, 0x7d, 0x2a, 0xc9,
98129 + 0x9a, 0xde, 0x66, 0xe3, 0x8d, 0x7d, 0xad, 0x67, 0xc6, 0xed, 0x9a, 0xde,
98130 + 0xe0, 0x62, 0x3d, 0xf4, 0x22, 0xbe, 0xc0, 0x3c, 0x61, 0xfd, 0x6a, 0x6d,
98131 + 0x80, 0xcf, 0x52, 0x6f, 0x85, 0xd5, 0x98, 0xb2, 0x6b, 0xd0, 0x7a, 0xff,
98132 + 0x76, 0xae, 0xbd, 0xd8, 0x8e, 0x33, 0x0b, 0x5b, 0x57, 0xbd, 0x86, 0x3f,
98133 + 0xaa, 0x71, 0xd1, 0x0f, 0x53, 0xfe, 0x3b, 0x18, 0x6b, 0xc1, 0x54, 0x69,
98134 + 0xe6, 0x91, 0xe0, 0x3a, 0xb7, 0xf9, 0xef, 0xa4, 0x6f, 0xdc, 0xb2, 0x8a,
98135 + 0x99, 0x24, 0xe4, 0xc4, 0x59, 0x3b, 0xe3, 0x2c, 0xc2, 0x38, 0x5b, 0xca,
98136 + 0x38, 0x7b, 0xdc, 0x88, 0x27, 0xd6, 0x13, 0x77, 0xbd, 0x9c, 0x97, 0x58,
98137 + 0x6b, 0x26, 0x5d, 0x8d, 0x72, 0x0d, 0xf7, 0x4a, 0xcc, 0x6c, 0x5d, 0x35,
98138 + 0x7c, 0xb6, 0x12, 0xa2, 0x2b, 0x7c, 0xb6, 0x98, 0x18, 0x83, 0x99, 0xe9,
98139 + 0xe2, 0x82, 0x3b, 0x3e, 0x78, 0xab, 0x3b, 0x3e, 0xf0, 0x9e, 0x7a, 0xd3,
98140 + 0x7a, 0x9d, 0x71, 0xb6, 0x8d, 0x71, 0xb6, 0x9d, 0x71, 0xd6, 0x66, 0x5a,
98141 + 0x78, 0x2e, 0xa9, 0x65, 0x9a, 0x5c, 0x31, 0xa3, 0xcd, 0x85, 0xa5, 0x95,
98142 + 0x2c, 0x0d, 0x7e, 0xc4, 0x3b, 0xff, 0x88, 0xfc, 0x5f, 0x34, 0xe2, 0xdd,
98143 + 0x09, 0x25, 0xb1, 0x15, 0xc5, 0x07, 0x94, 0xbb, 0xbc, 0x18, 0x5b, 0x7b,
98144 + 0xa7, 0xcf, 0x17, 0x7d, 0xa3, 0x24, 0xbb, 0x1b, 0xcf, 0x1a, 0xcc, 0xa5,
98145 + 0x8b, 0xb4, 0x68, 0xd6, 0xd5, 0x83, 0x23, 0xd4, 0xa3, 0x3f, 0xde, 0x83,
98146 + 0xa3, 0xac, 0x87, 0xf7, 0xb2, 0x0e, 0xdf, 0x67, 0xc6, 0x5a, 0x36, 0xb3,
98147 + 0xff, 0xb9, 0x14, 0xd1, 0xa2, 0x51, 0xd5, 0x83, 0x3e, 0xfa, 0x70, 0x1f,
98148 + 0xeb, 0x46, 0x9b, 0xf9, 0x6b, 0xd5, 0x41, 0xac, 0xb0, 0xa7, 0x20, 0xef,
98149 + 0x69, 0x89, 0x5e, 0x57, 0x3f, 0x7a, 0x67, 0x25, 0xb7, 0x21, 0x74, 0x53,
98150 + 0xaa, 0x07, 0xc7, 0xcd, 0x32, 0xf4, 0x34, 0x77, 0xa9, 0xdb, 0x0b, 0x32,
98151 + 0x7f, 0x63, 0x3c, 0x9a, 0x8c, 0x57, 0x9b, 0x5f, 0x85, 0x7c, 0xbc, 0x0b,
98152 + 0x39, 0x89, 0x4f, 0x73, 0xbb, 0xba, 0x73, 0x5a, 0x62, 0xbc, 0x47, 0xf5,
98153 + 0x48, 0x0c, 0x9b, 0x83, 0xea, 0x2e, 0x89, 0x69, 0x7b, 0x66, 0x2d, 0x71,
98154 + 0x2f, 0x7b, 0x1a, 0xb7, 0x11, 0xc7, 0x81, 0x31, 0xe5, 0xfe, 0x5e, 0x84,
98155 + 0x71, 0xd7, 0x56, 0xe6, 0xa2, 0x9f, 0xc6, 0x68, 0x3b, 0x17, 0xda, 0x8d,
98156 + 0xdf, 0xb1, 0xb2, 0xa1, 0x5e, 0xc6, 0x54, 0x0f, 0x0e, 0x9b, 0x5f, 0xb6,
98157 + 0x2e, 0xdb, 0xf8, 0xa4, 0x94, 0xd7, 0xd7, 0xe3, 0x9e, 0x89, 0x25, 0xf0,
98158 + 0xe9, 0x52, 0xb7, 0x03, 0x48, 0xd4, 0xf8, 0x50, 0xa1, 0x4b, 0xbd, 0xd9,
98159 + 0xd7, 0x3a, 0x77, 0x42, 0x49, 0xff, 0x51, 0x8c, 0xef, 0xf5, 0xb8, 0x9f,
98160 + 0x79, 0x60, 0x77, 0xf2, 0x1e, 0xdc, 0x17, 0xaa, 0x40, 0x90, 0x7a, 0xda,
98161 + 0x1f, 0x0a, 0x30, 0xbf, 0xfe, 0x7e, 0x91, 0xce, 0xb3, 0x65, 0xc5, 0xbe,
98162 + 0xfa, 0x1a, 0xb6, 0xaa, 0x65, 0x8c, 0xad, 0x9b, 0x94, 0x39, 0x51, 0xa6,
98163 + 0x35, 0x32, 0xa9, 0x23, 0xc8, 0x7e, 0x76, 0x7d, 0x52, 0x1b, 0x5c, 0xef,
98164 + 0x8e, 0x49, 0xaf, 0x92, 0x0b, 0x12, 0xd7, 0xe5, 0xe3, 0xf1, 0xee, 0x26,
98165 + 0xd1, 0xb1, 0x1e, 0xc1, 0x26, 0xea, 0x69, 0x4b, 0x3e, 0xcc, 0x18, 0x5a,
98166 + 0x28, 0x13, 0x8c, 0x94, 0xce, 0x5f, 0xa7, 0x15, 0x21, 0xad, 0xc8, 0xa4,
98167 + 0xe0, 0xb5, 0x0c, 0xf1, 0x9a, 0xce, 0x38, 0xb4, 0xac, 0x75, 0xc4, 0x69,
98168 + 0x81, 0x53, 0x32, 0x6f, 0x8a, 0x1d, 0x21, 0xb6, 0x6d, 0x22, 0xee, 0xed,
98169 + 0xa1, 0x57, 0x5b, 0xb7, 0xd4, 0xc7, 0x8d, 0x36, 0x85, 0x47, 0x66, 0x9a,
98170 + 0xe1, 0x73, 0x93, 0xe6, 0x3b, 0xf9, 0x10, 0x2e, 0xe7, 0x23, 0x78, 0x9b,
98171 + 0xb4, 0x2f, 0xd9, 0xb4, 0xeb, 0xf0, 0x8b, 0x62, 0xde, 0x4a, 0x32, 0x6f,
98172 + 0x6d, 0x98, 0x50, 0xf4, 0xd7, 0x28, 0x86, 0x8c, 0xbf, 0xfe, 0xec, 0xd2,
98173 + 0xcd, 0x3e, 0xea, 0x4d, 0x64, 0xf1, 0xf0, 0x7b, 0x14, 0xfb, 0xed, 0x3c,
98174 + 0xfd, 0xda, 0x67, 0x53, 0x35, 0xb4, 0x15, 0x75, 0x5f, 0x5d, 0x7c, 0x6f,
98175 + 0xe5, 0x54, 0xa1, 0x28, 0xaf, 0x0e, 0xd7, 0xa9, 0x04, 0xca, 0x4e, 0x5d,
98176 + 0xe3, 0x55, 0x97, 0xf8, 0x60, 0x65, 0x7d, 0xe4, 0xfb, 0x5c, 0xff, 0x21,
98177 + 0x62, 0x3e, 0x8b, 0xeb, 0x5f, 0xb5, 0xd7, 0x0d, 0x73, 0x5d, 0x75, 0x0d,
98178 + 0x1f, 0x46, 0xae, 0xbd, 0x13, 0xa2, 0xec, 0x78, 0x38, 0x42, 0xdd, 0x5d,
98179 + 0x59, 0x23, 0xcf, 0x05, 0x70, 0x7b, 0x7e, 0x55, 0xb9, 0xe4, 0x71, 0x3f,
98180 + 0xfb, 0x01, 0xc7, 0x97, 0x88, 0xf7, 0xcc, 0xe7, 0x79, 0x4f, 0xf0, 0xd7,
98181 + 0x7a, 0x62, 0x8d, 0xcf, 0xeb, 0x3d, 0x4c, 0x5b, 0x94, 0xd1, 0x78, 0x72,
98182 + 0xef, 0x8b, 0xea, 0xe8, 0x9f, 0x61, 0x90, 0xbd, 0xd0, 0x43, 0x13, 0x59,
98183 + 0xec, 0x9f, 0xf8, 0x63, 0x7b, 0x8f, 0x6e, 0xe5, 0x6a, 0xec, 0xe1, 0x9a,
98184 + 0xfb, 0xaa, 0x19, 0x47, 0xff, 0x2d, 0x19, 0x17, 0x8c, 0xb4, 0xbd, 0x12,
98185 + 0x52, 0x6b, 0xe3, 0x2d, 0xb7, 0x2a, 0x0b, 0x65, 0x49, 0x0c, 0xb4, 0x37,
98186 + 0xc7, 0x13, 0x97, 0xf1, 0x88, 0x25, 0xf3, 0x6e, 0x77, 0xb1, 0xee, 0x12,
98187 + 0x97, 0xaa, 0x76, 0xd6, 0xde, 0xb6, 0x22, 0x56, 0xda, 0x50, 0x78, 0xf3,
98188 + 0x73, 0x33, 0x05, 0xe9, 0xc7, 0xa5, 0xde, 0xf8, 0x55, 0x1b, 0xd7, 0x39,
98189 + 0xcc, 0x9c, 0xfd, 0xac, 0xf1, 0x62, 0x84, 0xd5, 0x18, 0x9e, 0x55, 0x0a,
98190 + 0x07, 0x0c, 0x2f, 0xb2, 0x61, 0x0b, 0xdb, 0xf9, 0xbd, 0x97, 0xf8, 0xe9,
98191 + 0x5d, 0xa3, 0x0a, 0x53, 0xa1, 0x10, 0x31, 0x23, 0x73, 0xb0, 0xeb, 0xff,
98192 + 0x78, 0x65, 0x5f, 0x27, 0xea, 0x92, 0x3d, 0xf8, 0x7f, 0x6d, 0x5f, 0x66,
98193 + 0x15, 0xf1, 0x8b, 0xc8, 0xee, 0x57, 0xcc, 0xa1, 0x09, 0x10, 0xd3, 0xec,
98194 + 0x32, 0xe6, 0xa3, 0x2e, 0xa4, 0xaf, 0xba, 0xa0, 0x9d, 0x7e, 0x87, 0x7d,
98195 + 0xde, 0x43, 0xf5, 0xda, 0xe9, 0x56, 0xb7, 0x8e, 0xc1, 0xe3, 0x3e, 0x3c,
98196 + 0x78, 0xbc, 0x03, 0xd5, 0xf6, 0x7c, 0x68, 0x94, 0x3a, 0x75, 0xb1, 0xbf,
98197 + 0x1a, 0xfe, 0xd4, 0xc3, 0x3e, 0xeb, 0xea, 0xea, 0x87, 0xd1, 0x62, 0x5f,
98198 + 0x1f, 0xc1, 0x9e, 0x09, 0xbf, 0xda, 0x32, 0xe1, 0x41, 0xc7, 0x9d, 0x0f,
98199 + 0xc3, 0xbb, 0xaa, 0x97, 0x7c, 0xc9, 0x75, 0xf9, 0xfd, 0x2e, 0xf6, 0x67,
98200 + 0xc2, 0x5f, 0x19, 0xa2, 0x4b, 0xc8, 0xdb, 0x2a, 0x1d, 0x43, 0xc7, 0x3d,
98201 + 0x6a, 0x87, 0xf9, 0x37, 0xd6, 0x55, 0x7b, 0xcf, 0x47, 0xae, 0x55, 0xc8,
98202 + 0x59, 0x00, 0x3e, 0x23, 0x39, 0xa7, 0x0f, 0x13, 0x8c, 0xed, 0xbb, 0xec,
98203 + 0xf7, 0x8f, 0x97, 0x39, 0x32, 0xa5, 0xd9, 0xb7, 0xb6, 0xd3, 0x7e, 0xf2,
98204 + 0x4c, 0x6b, 0xf1, 0xda, 0x7a, 0x9f, 0x73, 0xde, 0x40, 0x7c, 0xa1, 0x0f,
98205 + 0xcb, 0x68, 0x84, 0xfa, 0xb8, 0x5d, 0xa7, 0x50, 0x9f, 0x67, 0x42, 0x5d,
98206 + 0xe2, 0xf0, 0xfb, 0x80, 0x39, 0xcf, 0x9e, 0x53, 0x67, 0xde, 0xa4, 0xee,
98207 + 0x16, 0xcb, 0xfb, 0x55, 0xbe, 0xdf, 0x7e, 0x5f, 0xf2, 0x2d, 0xb1, 0x66,
98208 + 0x50, 0x30, 0xe7, 0x17, 0xdd, 0xff, 0x5d, 0xc8, 0x3d, 0x8f, 0xfe, 0xa7,
98209 + 0x8c, 0xe3, 0x78, 0x77, 0xa5, 0x4b, 0xfc, 0xe7, 0x4f, 0x71, 0xdf, 0xf4,
98210 + 0x30, 0xef, 0x0b, 0xfd, 0x83, 0xec, 0x25, 0x3c, 0xaa, 0x93, 0xf9, 0x67,
98211 + 0xef, 0x71, 0xd7, 0xed, 0x65, 0xf8, 0x4b, 0xab, 0x7c, 0xf1, 0x10, 0xea,
98212 + 0x93, 0x23, 0x7c, 0x5e, 0xa1, 0x9d, 0xb8, 0xf1, 0x31, 0x63, 0x03, 0x3a,
98213 + 0x6a, 0x24, 0x07, 0x3c, 0x6b, 0xf5, 0xf5, 0x88, 0x0e, 0x15, 0x36, 0xf2,
98214 + 0xfa, 0x73, 0xb4, 0xef, 0x93, 0x86, 0x07, 0xf5, 0x8b, 0x64, 0xd6, 0xa7,
98215 + 0x8d, 0xa7, 0xf1, 0x75, 0x9f, 0xb3, 0xf7, 0x95, 0xb5, 0xaa, 0x75, 0x7d,
98216 + 0xe0, 0x0e, 0x57, 0xfd, 0xf8, 0x1b, 0xf4, 0xa7, 0xb6, 0x55, 0x37, 0xde,
98217 + 0x2b, 0xe9, 0xc4, 0x40, 0x64, 0xd5, 0x33, 0x16, 0x6e, 0x1a, 0x46, 0x68,
98218 + 0xd5, 0x8d, 0xf6, 0x2f, 0xf1, 0x7d, 0x90, 0x31, 0x88, 0x6c, 0x75, 0x4a,
98219 + 0xe6, 0x3f, 0x71, 0xd2, 0x39, 0x88, 0x3f, 0x2c, 0x8c, 0xe0, 0xc0, 0x44,
98220 + 0x11, 0x5b, 0xd3, 0xb7, 0xf5, 0x55, 0xd7, 0x65, 0x7b, 0x60, 0x22, 0xde,
98221 + 0x5b, 0x55, 0x94, 0x6d, 0x1f, 0xfb, 0x8c, 0x4a, 0xe6, 0xd8, 0xfb, 0xa9,
98222 + 0xd3, 0x01, 0x5b, 0xa7, 0x3d, 0x30, 0xf2, 0xd7, 0xe9, 0xf6, 0x93, 0xae,
98223 + 0x3f, 0x25, 0x7a, 0x93, 0xfd, 0xb6, 0x83, 0xd8, 0x4b, 0xba, 0xbb, 0x6f,
98224 + 0xa0, 0xdb, 0x67, 0x5c, 0xa7, 0xbb, 0x6b, 0x22, 0x7e, 0xda, 0x55, 0xa4,
98225 + 0xfb, 0xed, 0xe9, 0x12, 0x8d, 0x2c, 0xb6, 0xad, 0xca, 0x22, 0xbf, 0x6e,
98226 + 0x9f, 0xb5, 0xcf, 0xd6, 0xc7, 0x59, 0xfb, 0xfa, 0xc6, 0x7a, 0x89, 0x07,
98227 + 0xfe, 0x9a, 0xd2, 0xed, 0xbd, 0x7d, 0x07, 0x7b, 0xdd, 0x18, 0x1f, 0xda,
98228 + 0x9b, 0x5b, 0xdc, 0x69, 0xc6, 0x76, 0xd8, 0xb7, 0xf9, 0x73, 0x33, 0x8d,
98229 + 0x0e, 0xf6, 0x61, 0x9b, 0xcc, 0x2e, 0x7f, 0xa7, 0xe9, 0x23, 0xee, 0xaa,
98230 + 0x54, 0x1b, 0x27, 0x64, 0xb6, 0x21, 0xb1, 0x5c, 0xc4, 0xc2, 0x05, 0xe9,
98231 + 0xf7, 0x76, 0xb2, 0x4f, 0x58, 0x46, 0xfb, 0xf6, 0xe2, 0x48, 0xa1, 0x57,
98232 + 0xa5, 0xc3, 0x5c, 0xc7, 0x94, 0xba, 0x02, 0xd6, 0xbc, 0x6e, 0x54, 0xd2,
98233 + 0x97, 0xc2, 0xa9, 0x81, 0xd4, 0xc9, 0x7a, 0x0b, 0xc4, 0x28, 0xbe, 0x45,
98234 + 0xa9, 0x6c, 0x6a, 0x7b, 0xbd, 0x1b, 0xc7, 0x6c, 0xfc, 0xa5, 0x4d, 0xf1,
98235 + 0x33, 0x2e, 0x31, 0x73, 0xc7, 0x84, 0xd4, 0x31, 0x42, 0x48, 0x7d, 0x08,
98236 + 0xff, 0x90, 0x9c, 0x1f, 0xa8, 0x41, 0xfa, 0xde, 0x1a, 0x48, 0x5f, 0x71,
98237 + 0x04, 0x3f, 0xd2, 0x23, 0xbe, 0x4c, 0xc1, 0xa3, 0xb6, 0x98, 0x33, 0xfe,
98238 + 0xad, 0x66, 0x10, 0x01, 0xf6, 0x65, 0x5d, 0xee, 0x18, 0xfb, 0x0c, 0xd1,
98239 + 0x63, 0x67, 0xeb, 0xb2, 0x7c, 0xc6, 0xdf, 0x6e, 0x3a, 0xb9, 0xf0, 0x96,
98240 + 0x29, 0x9f, 0xbf, 0x63, 0x32, 0x16, 0x39, 0x62, 0x63, 0xb1, 0xae, 0xd6,
98241 + 0x58, 0xde, 0xb2, 0x5e, 0x31, 0xe6, 0xaf, 0x96, 0x3b, 0x3d, 0x48, 0x6b,
98242 + 0x22, 0xdf, 0x84, 0xbb, 0x89, 0x9f, 0xda, 0x26, 0x9b, 0x60, 0x4c, 0x02,
98243 + 0x27, 0x8e, 0x47, 0xb0, 0x72, 0x42, 0x3b, 0x3d, 0xe8, 0xce, 0x60, 0x7c,
98244 + 0xb6, 0x13, 0x13, 0x05, 0xff, 0x42, 0xd4, 0x45, 0x5c, 0x9d, 0x74, 0xe1,
98245 + 0x76, 0x63, 0xb5, 0x9a, 0xb7, 0x63, 0x5a, 0xe1, 0x2e, 0x63, 0xbb, 0xea,
98246 + 0xb5, 0x31, 0xc5, 0x0c, 0xb1, 0x88, 0xc2, 0x4d, 0xce, 0x5c, 0xbe, 0x35,
98247 + 0x49, 0xcc, 0x7d, 0xfb, 0x84, 0xd4, 0x77, 0x0b, 0xaf, 0x26, 0xa9, 0x97,
98248 + 0x64, 0x36, 0xe3, 0x65, 0x0f, 0xb4, 0x4f, 0x69, 0xdd, 0x86, 0x72, 0x30,
98249 + 0xde, 0xad, 0x33, 0x0e, 0x2e, 0x5c, 0x36, 0xd3, 0xec, 0x97, 0x1c, 0xd4,
98250 + 0x6e, 0x68, 0x11, 0x8f, 0x2b, 0x84, 0x01, 0x9b, 0x46, 0x6f, 0xab, 0x31,
98251 + 0x53, 0x86, 0xa5, 0x7a, 0x0f, 0x4e, 0xdb, 0x32, 0xf4, 0xb7, 0xae, 0x27,
98252 + 0xbe, 0x7e, 0xdc, 0xcc, 0xb0, 0x07, 0x96, 0xfd, 0xd0, 0x58, 0xa2, 0xc5,
98253 + 0xdd, 0x46, 0x0c, 0x1b, 0x8b, 0x2e, 0xa8, 0xb4, 0xca, 0x7a, 0x1a, 0xd3,
98254 + 0x33, 0x60, 0x45, 0xa9, 0x71, 0xea, 0x9b, 0xc8, 0x18, 0x27, 0xce, 0x6a,
98255 + 0x3b, 0xee, 0x5f, 0x48, 0xc3, 0x99, 0xdf, 0x6c, 0x32, 0xfe, 0x37, 0x2e,
98256 + 0x85, 0xb5, 0x23, 0x69, 0xf2, 0xdd, 0xc1, 0xbc, 0x3b, 0xdf, 0xe3, 0xe1,
98257 + 0x7d, 0x99, 0xdb, 0x75, 0xb7, 0x8e, 0xe6, 0x30, 0xef, 0x4e, 0x49, 0x5f,
98258 + 0x85, 0x60, 0x77, 0x01, 0x32, 0x43, 0x62, 0x6f, 0xf1, 0xa9, 0x55, 0xda,
98259 + 0x3b, 0xea, 0x9a, 0x74, 0xf6, 0xc5, 0x72, 0xb3, 0x9e, 0xe0, 0x56, 0xb3,
98260 + 0x19, 0xc7, 0x0a, 0x9e, 0x1b, 0x68, 0xc7, 0x8f, 0xdc, 0xe2, 0x72, 0x21,
98261 + 0xbe, 0xea, 0x2e, 0x55, 0xdc, 0x5b, 0x62, 0x9e, 0xc8, 0xd8, 0x35, 0xb1,
98262 + 0x8c, 0x72, 0x5e, 0x38, 0x29, 0x6b, 0x7c, 0xab, 0x75, 0xf4, 0xa4, 0xd4,
98263 + 0xc8, 0xee, 0xd6, 0x88, 0xa9, 0x75, 0x4b, 0x1f, 0x58, 0x4d, 0x3d, 0x7d,
98264 + 0x34, 0x26, 0x35, 0x78, 0x3f, 0x6b, 0xb0, 0xb6, 0xd0, 0xae, 0xa4, 0x8e,
98265 + 0x69, 0x09, 0xbf, 0xdb, 0x85, 0x2b, 0x0d, 0x5a, 0xe6, 0x79, 0x68, 0xbd,
98266 + 0xce, 0xbc, 0x70, 0x67, 0x6b, 0x63, 0x11, 0x0f, 0xdf, 0x3a, 0xd3, 0x27,
98267 + 0xe7, 0x49, 0x6c, 0x1d, 0x37, 0xe5, 0x05, 0x1b, 0x5b, 0xd6, 0x4b, 0xc9,
98268 + 0x2e, 0xe2, 0x06, 0xc1, 0xc6, 0x72, 0xfd, 0x81, 0xd6, 0x86, 0x29, 0x1f,
98269 + 0x79, 0x53, 0x78, 0x8f, 0x75, 0xe9, 0x48, 0xa1, 0xc4, 0xa3, 0x83, 0x9b,
98270 + 0x37, 0x13, 0x37, 0xbb, 0x53, 0x5a, 0xcb, 0x06, 0xe2, 0x66, 0x9d, 0x3d,
98271 + 0x84, 0x07, 0x3d, 0x78, 0xcc, 0x74, 0xfa, 0x08, 0xc1, 0xce, 0xd6, 0x49,
98272 + 0x2d, 0x2d, 0xb8, 0xf9, 0xea, 0x6a, 0x60, 0x07, 0x71, 0xf3, 0x42, 0xce,
98273 + 0x83, 0x0c, 0x71, 0xf3, 0x47, 0x39, 0x1f, 0xee, 0x20, 0x6e, 0xbe, 0x42,
98274 + 0x8c, 0x75, 0x3e, 0xf9, 0x4b, 0x7c, 0xbb, 0x38, 0x13, 0xdb, 0x95, 0xf0,
98275 + 0xd1, 0xb7, 0x05, 0x3b, 0xff, 0xa6, 0x88, 0x9d, 0xff, 0xcb, 0x3f, 0xc3,
98276 + 0xce, 0x77, 0x13, 0x13, 0x76, 0x4d, 0xc8, 0xfe, 0xd1, 0xae, 0xd6, 0xd7,
98277 + 0x4f, 0xc9, 0x99, 0x95, 0x5b, 0xf1, 0xee, 0xc9, 0xe1, 0x7e, 0x62, 0x65,
98278 + 0x8c, 0x24, 0x33, 0xc8, 0x4d, 0x62, 0x09, 0x71, 0xc1, 0x4b, 0x6e, 0xae,
98279 + 0xbb, 0x32, 0xa9, 0x19, 0x6f, 0xa8, 0x78, 0x67, 0x06, 0x71, 0xf6, 0xca,
98280 + 0xda, 0x02, 0x4d, 0x98, 0xf6, 0xa4, 0x88, 0x8d, 0x59, 0x03, 0x97, 0x12,
98281 + 0x3b, 0x57, 0xcd, 0x01, 0xb5, 0x73, 0x0e, 0x76, 0x96, 0x79, 0x58, 0x55,
98282 + 0x1c, 0x7f, 0x46, 0xec, 0xcc, 0xfe, 0x96, 0xa1, 0x36, 0xd7, 0xc4, 0x18,
98283 + 0x55, 0x38, 0x1c, 0x0f, 0xa0, 0xeb, 0x38, 0x71, 0x8f, 0x3d, 0x0f, 0xb3,
98284 + 0x86, 0x7e, 0x6a, 0x64, 0x70, 0x74, 0xd6, 0x99, 0x87, 0x6d, 0x22, 0x7e,
98285 + 0xf3, 0xc4, 0xc3, 0x28, 0x9f, 0xf3, 0xe0, 0x19, 0xe2, 0xe7, 0x8d, 0xb4,
98286 + 0xf3, 0x19, 0xe2, 0xe7, 0xbb, 0x6f, 0x98, 0x89, 0x4d, 0xcd, 0xe1, 0x15,
98287 + 0x62, 0xf9, 0xba, 0x5a, 0xc4, 0x65, 0xde, 0x61, 0x5d, 0x59, 0x13, 0xc0,
98288 + 0x39, 0x1b, 0x3f, 0xfb, 0x17, 0xb2, 0xca, 0x91, 0xad, 0x8c, 0xb6, 0x10,
98289 + 0xbb, 0xba, 0x68, 0xd7, 0xb6, 0x93, 0x5a, 0xe7, 0x8b, 0xd4, 0x45, 0x63,
98290 + 0xfc, 0xbc, 0x6d, 0x8f, 0xbe, 0xa4, 0xcc, 0x4e, 0x3a, 0x5b, 0xe5, 0x5c,
98291 + 0x55, 0x05, 0xed, 0xbd, 0x65, 0x2c, 0x96, 0xfe, 0x00, 0x4e, 0x4c, 0x26,
98292 + 0xf2, 0x65, 0xc5, 0x7a, 0x28, 0xf7, 0xfa, 0x79, 0x2f, 0x8d, 0xce, 0x35,
98293 + 0x8e, 0x7f, 0x27, 0xf2, 0xc7, 0x88, 0x5d, 0x65, 0xcf, 0x34, 0x14, 0xdc,
98294 + 0x64, 0x76, 0x62, 0xdc, 0x8c, 0xa2, 0xfc, 0x5c, 0x71, 0xef, 0xf5, 0x9c,
98295 + 0x9c, 0xc5, 0xdb, 0xd9, 0x1a, 0xfa, 0x5e, 0x09, 0x13, 0xa6, 0x89, 0xef,
98296 + 0xc2, 0xbe, 0xdb, 0x0b, 0x82, 0x17, 0xbb, 0x71, 0xd4, 0xd4, 0x22, 0x3f,
98297 + 0x67, 0x4c, 0xdc, 0x2b, 0xfb, 0xee, 0x37, 0xcc, 0x9e, 0x1e, 0xe4, 0x3d,
98298 + 0xf3, 0x73, 0xb3, 0xa7, 0xc1, 0x09, 0xfc, 0xc6, 0xdd, 0x5c, 0x0e, 0xd7,
98299 + 0x4a, 0x2f, 0x31, 0xbd, 0x16, 0x19, 0xc1, 0x23, 0xc4, 0x1c, 0xbf, 0x56,
98300 + 0x01, 0xdd, 0xd3, 0xdf, 0xe4, 0xd6, 0x22, 0x33, 0x2a, 0xc0, 0x77, 0x77,
98301 + 0x32, 0xbf, 0xed, 0xa4, 0x6f, 0xc4, 0x16, 0x2a, 0x94, 0x1b, 0x97, 0xbe,
98302 + 0x6c, 0xe3, 0x51, 0x7f, 0x37, 0xaf, 0x8d, 0x17, 0x4a, 0xb8, 0xa6, 0x47,
98303 + 0x78, 0xc5, 0xa6, 0xe3, 0x4e, 0x0e, 0xd1, 0xf3, 0xfe, 0x85, 0x4b, 0x70,
98304 + 0x64, 0xab, 0xa4, 0xac, 0xf7, 0x8f, 0x85, 0xac, 0xde, 0xc5, 0x12, 0xc3,
98305 + 0x3a, 0xb6, 0x99, 0xe2, 0x5f, 0x7d, 0xe4, 0xb3, 0x07, 0x87, 0xcc, 0xa5,
98306 + 0xec, 0xdd, 0x64, 0x0e, 0xda, 0x44, 0x6c, 0xdd, 0xcd, 0x1a, 0x6c, 0x59,
98307 + 0x83, 0x46, 0xd6, 0x6a, 0x5a, 0xab, 0x1b, 0x79, 0x35, 0x5f, 0x13, 0x21,
98308 + 0xbe, 0x59, 0xc5, 0xda, 0xdd, 0x56, 0x68, 0xc2, 0x1b, 0x67, 0x74, 0xfa,
98309 + 0x66, 0x3b, 0xf1, 0x7b, 0x37, 0xee, 0xa1, 0x3c, 0xdf, 0x2e, 0x7c, 0x07,
98310 + 0xe9, 0x6f, 0x78, 0x70, 0xe4, 0x78, 0x1a, 0xeb, 0x57, 0x0d, 0xe1, 0xd2,
98311 + 0x37, 0x7d, 0xcc, 0x55, 0x01, 0x3c, 0x7e, 0x5c, 0xf2, 0x6b, 0x09, 0x6f,
98312 + 0xdf, 0x88, 0x45, 0x7c, 0x88, 0xda, 0x38, 0xe4, 0x8b, 0xef, 0x39, 0x18,
98313 + 0xc5, 0xcf, 0xfe, 0xb7, 0xf4, 0x3e, 0xf3, 0xd0, 0xaa, 0x7f, 0x86, 0x67,
98314 + 0x88, 0x5b, 0x88, 0x05, 0x2a, 0x12, 0xf6, 0xb9, 0xb7, 0x12, 0xde, 0xf5,
98315 + 0xd0, 0x07, 0x24, 0xa6, 0x97, 0x32, 0xd6, 0x2d, 0x62, 0xe7, 0x85, 0xe2,
98316 + 0x5c, 0xf2, 0xed, 0x93, 0xda, 0xc5, 0x43, 0x88, 0x11, 0x43, 0xa3, 0x4f,
98317 + 0xb0, 0x9b, 0x9b, 0x78, 0xf7, 0x4a, 0x3c, 0x6e, 0x9c, 0x23, 0xde, 0x1d,
98318 + 0xa6, 0xad, 0x3d, 0xba, 0xf8, 0x66, 0x08, 0x65, 0x73, 0x11, 0xfa, 0xa4,
98319 + 0xcc, 0x25, 0x5f, 0xf1, 0x3b, 0x73, 0x49, 0x99, 0x85, 0xcb, 0xb9, 0x10,
98320 + 0x74, 0x94, 0xb1, 0x77, 0x2b, 0x57, 0x59, 0xe6, 0xe4, 0x29, 0xff, 0x0e,
98321 + 0xe6, 0xf7, 0x8c, 0x19, 0x0e, 0xee, 0x28, 0x84, 0xf8, 0xa9, 0x0b, 0x66,
98322 + 0x0a, 0xbf, 0xc7, 0xe7, 0x23, 0xfc, 0x8e, 0x62, 0x22, 0x5f, 0x5b, 0x21,
98323 + 0xcd, 0xc0, 0x44, 0xde, 0xc9, 0x79, 0xd1, 0xfc, 0x5e, 0xbf, 0x60, 0xcd,
98324 + 0xb6, 0xe3, 0xce, 0xdf, 0xfa, 0x0d, 0x7f, 0x7f, 0x1e, 0xf3, 0x7b, 0xc9,
98325 + 0xf7, 0x99, 0x93, 0x3a, 0x3e, 0x3a, 0x69, 0x63, 0xfe, 0x79, 0x62, 0xfe,
98326 + 0x01, 0xaf, 0x5b, 0xb0, 0xe6, 0xaf, 0xac, 0xf3, 0xf1, 0x78, 0xef, 0x34,
98327 + 0xfd, 0xa0, 0x8b, 0x74, 0x5d, 0x7a, 0xd8, 0xe6, 0xd7, 0xe1, 0xd3, 0x99,
98328 + 0xe5, 0x5e, 0x3e, 0x99, 0xc0, 0x3b, 0xd7, 0x67, 0xa7, 0x9f, 0x94, 0xd9,
98329 + 0x33, 0x60, 0x3c, 0xf2, 0xee, 0x5a, 0xf8, 0x5a, 0xd8, 0x6f, 0x7a, 0xf9,
98330 + 0x7c, 0xc4, 0x7e, 0x5e, 0x66, 0xb9, 0x9f, 0x7c, 0x56, 0xc2, 0xd3, 0x1f,
98331 + 0x5d, 0x7f, 0xe7, 0x20, 0x3b, 0x35, 0xdf, 0x79, 0xc6, 0x96, 0xdb, 0x7e,
98332 + 0x4e, 0xe6, 0xad, 0xfe, 0x05, 0xd8, 0xf1, 0xf5, 0xfb, 0x94, 0x49, 0xec,
98333 + 0x7b, 0xc0, 0x72, 0xfc, 0x36, 0x1c, 0xdc, 0xc6, 0x78, 0xf8, 0x2e, 0xed,
98334 + 0xb3, 0xed, 0x5c, 0x5d, 0xf0, 0x2e, 0xb3, 0xd3, 0x96, 0xf9, 0xae, 0x73,
98335 + 0x52, 0x93, 0xe4, 0xfe, 0x1f, 0x54, 0x08, 0x1e, 0x7f, 0x9c, 0x35, 0x6b,
98336 + 0xd8, 0x94, 0xd9, 0x3e, 0x94, 0x27, 0x75, 0x08, 0x9b, 0xc6, 0xa3, 0x78,
98337 + 0xdb, 0xf0, 0x17, 0xcf, 0xb0, 0x48, 0x4c, 0x0e, 0x30, 0x26, 0xc3, 0x18,
98338 + 0x31, 0x63, 0xd1, 0xb7, 0x89, 0x4f, 0xb3, 0x64, 0xf8, 0xe8, 0x84, 0x1b,
98339 + 0x6f, 0x13, 0x33, 0x42, 0x39, 0x67, 0x40, 0x9d, 0x77, 0x4b, 0xbf, 0x57,
98340 + 0x22, 0x5a, 0x13, 0x6b, 0xd9, 0x8b, 0x3a, 0xe4, 0x98, 0xf3, 0xfd, 0xfa,
98341 + 0x8f, 0x71, 0xec, 0x84, 0x0b, 0xf7, 0xb1, 0xef, 0x4b, 0xdf, 0x69, 0xf0,
98342 + 0xef, 0xc6, 0xfe, 0xf7, 0xf1, 0x0f, 0xd6, 0x94, 0x9c, 0xb3, 0x52, 0x72,
98343 + 0x96, 0xe3, 0x13, 0xab, 0x56, 0xd7, 0xe7, 0x9f, 0x87, 0x3e, 0x78, 0x15,
98344 + 0x8d, 0x03, 0x0b, 0xf8, 0xc0, 0x9a, 0xe7, 0xbd, 0xf7, 0x18, 0x3f, 0x2f,
98345 + 0x1a, 0xb1, 0x88, 0x8b, 0xc2, 0xcc, 0x87, 0xdd, 0xb8, 0xd7, 0x90, 0x7d,
98346 + 0x26, 0x6d, 0xe0, 0x69, 0x68, 0xfd, 0x17, 0x94, 0x9c, 0xcd, 0xb9, 0x64,
98347 + 0x65, 0x6b, 0x64, 0x5d, 0x85, 0x95, 0xcb, 0x1b, 0x3b, 0xcb, 0xa0, 0xb5,
98348 + 0x78, 0x95, 0x6e, 0xbc, 0xaf, 0xfe, 0xa7, 0x35, 0x1f, 0xfe, 0xc4, 0x7a,
98349 + 0x47, 0x2f, 0xd1, 0xd5, 0xa2, 0x3e, 0x77, 0x89, 0xb7, 0x3a, 0x1c, 0x33,
98350 + 0x65, 0x7f, 0xee, 0xc7, 0xb8, 0xef, 0x84, 0x07, 0xed, 0xc9, 0x5f, 0x5a,
98351 + 0xd9, 0xb0, 0xd0, 0x0c, 0x56, 0xa2, 0x42, 0xe8, 0x3b, 0x33, 0xeb, 0x17,
98352 + 0x0a, 0x50, 0x1d, 0xa6, 0xe0, 0x65, 0xf1, 0xd3, 0x71, 0x58, 0xa6, 0xcc,
98353 + 0x11, 0x2d, 0xdc, 0x91, 0x1c, 0xc2, 0x7b, 0xc9, 0xf4, 0x1f, 0xf8, 0xa0,
98354 + 0x5d, 0xbc, 0xec, 0xd6, 0xe6, 0x9b, 0xdc, 0x51, 0xe5, 0x6f, 0xd0, 0x07,
98355 + 0x1a, 0xec, 0x7a, 0x93, 0x67, 0xef, 0x14, 0x60, 0x6e, 0x91, 0x1e, 0x73,
98356 + 0x1c, 0x73, 0x63, 0x59, 0x78, 0x88, 0xed, 0x86, 0x9b, 0xb5, 0xcc, 0x53,
98357 + 0x4a, 0x8b, 0xec, 0x53, 0x51, 0x75, 0x8f, 0x3e, 0x88, 0x67, 0x8c, 0x78,
98358 + 0xba, 0x4d, 0xd5, 0xf9, 0x3a, 0x0b, 0x25, 0xda, 0xed, 0xc4, 0x2a, 0xda,
98359 + 0xfc, 0x65, 0x77, 0x39, 0x6a, 0x57, 0xeb, 0x9d, 0xe5, 0x6e, 0x6d, 0xf0,
98360 + 0x6b, 0x8c, 0xaf, 0xcd, 0x85, 0x79, 0xff, 0xfb, 0x71, 0x17, 0x56, 0xd8,
98361 + 0xfb, 0x08, 0xb9, 0xe2, 0x8c, 0x74, 0x1c, 0x5b, 0xc6, 0xac, 0xf5, 0xaf,
98362 + 0x26, 0xb5, 0xc8, 0x53, 0x2a, 0xbb, 0x23, 0x40, 0x4c, 0x73, 0x3f, 0xf4,
98363 + 0xe8, 0x2c, 0xeb, 0x54, 0x7b, 0xc1, 0x85, 0x5b, 0x4e, 0x09, 0xcd, 0x1c,
98364 + 0x69, 0x1e, 0x42, 0xf9, 0x09, 0x6b, 0xfd, 0x0e, 0x43, 0x1b, 0xbc, 0xec,
98365 + 0xce, 0xfe, 0xd7, 0x5a, 0xea, 0xad, 0x43, 0xc9, 0x3e, 0xda, 0x10, 0x71,
98366 + 0xc5, 0x90, 0x9c, 0x87, 0x4b, 0xfc, 0x39, 0x31, 0xc5, 0x1f, 0xd3, 0x57,
98367 + 0xdd, 0xa9, 0x20, 0xf9, 0xd4, 0x12, 0xd3, 0x90, 0xf9, 0x79, 0x14, 0x97,
98368 + 0x8d, 0xac, 0x7f, 0x53, 0x43, 0x82, 0xd8, 0x2c, 0xc2, 0x3a, 0x18, 0xc5,
98369 + 0x51, 0x62, 0xbc, 0x43, 0x6c, 0x09, 0xe7, 0x43, 0x3a, 0xb1, 0x59, 0x37,
98370 + 0x5c, 0x63, 0x01, 0x35, 0x93, 0x8b, 0x19, 0xed, 0xf8, 0xf7, 0x98, 0x8f,
98371 + 0x88, 0x8b, 0x1c, 0x42, 0xe0, 0xc4, 0xdf, 0x59, 0x55, 0xba, 0xde, 0x32,
98372 + 0xa6, 0xb8, 0xee, 0x13, 0x11, 0xea, 0x98, 0xef, 0xc9, 0xb9, 0x15, 0xb3,
98373 + 0x0b, 0xf7, 0x8c, 0x85, 0xf9, 0x7e, 0x15, 0x56, 0x9e, 0x88, 0xe2, 0x4a,
98374 + 0xf2, 0x66, 0xcc, 0xd7, 0x38, 0x18, 0xc8, 0xaf, 0xd3, 0x8f, 0xd8, 0x67,
98375 + 0x65, 0x0b, 0xba, 0xbd, 0x77, 0x74, 0xc8, 0x94, 0xfe, 0xdc, 0xc3, 0xbf,
98376 + 0x03, 0xfc, 0x88, 0x3e, 0xbf, 0x55, 0xc4, 0x3a, 0xfb, 0x5b, 0xa3, 0x33,
98377 + 0x6f, 0x55, 0xd8, 0x7b, 0x9a, 0x88, 0xf2, 0xb9, 0x90, 0x3d, 0x17, 0x1c,
98378 + 0x26, 0xcd, 0xb3, 0xe3, 0xd2, 0xb7, 0xb5, 0xad, 0xf3, 0x15, 0xf7, 0xdf,
98379 + 0xdf, 0x32, 0x5c, 0x58, 0xcf, 0xde, 0x3e, 0xa2, 0x4b, 0xbd, 0x1c, 0xd6,
98380 + 0x6a, 0xb1, 0x0e, 0xa7, 0x43, 0x6c, 0xc2, 0xf5, 0x7f, 0x87, 0x23, 0xa1,
98381 + 0x04, 0x73, 0xbe, 0x8e, 0x77, 0x73, 0x5f, 0x66, 0xbf, 0x53, 0x27, 0x67,
98382 + 0x77, 0x70, 0xcb, 0x09, 0x2f, 0xd7, 0x5c, 0x4f, 0x5c, 0xb3, 0x09, 0x3f,
98383 + 0x0b, 0x39, 0xbd, 0xc6, 0x61, 0x5e, 0x1f, 0x9d, 0x0e, 0x10, 0x8b, 0xfa,
98384 + 0xf8, 0xb9, 0x91, 0xb7, 0x2f, 0xe2, 0x49, 0x64, 0xf9, 0xd7, 0x78, 0xf2,
98385 + 0x11, 0x0f, 0xe8, 0xb8, 0x9a, 0x7b, 0x09, 0x57, 0x48, 0x3b, 0x3b, 0xed,
98386 + 0xd0, 0x3c, 0x5e, 0x10, 0xba, 0xb2, 0x5e, 0x6c, 0xb0, 0xd6, 0x2d, 0xf4,
98387 + 0x03, 0x72, 0x8e, 0xf7, 0xdf, 0xb8, 0x06, 0x91, 0xdd, 0x09, 0xf6, 0xc7,
98388 + 0x46, 0x03, 0xda, 0x43, 0xb4, 0x97, 0x29, 0x6b, 0x68, 0xec, 0x45, 0xe5,
98389 + 0xdd, 0x08, 0x56, 0x8c, 0x59, 0x43, 0x91, 0x94, 0x5c, 0xb7, 0xac, 0xea,
98390 + 0xb5, 0x7a, 0xe4, 0x0d, 0xe5, 0x61, 0xad, 0xf3, 0x50, 0x07, 0xa3, 0x38,
98391 + 0x9b, 0x6b, 0xbc, 0xf8, 0x1e, 0xb1, 0x53, 0x94, 0xbd, 0xde, 0x25, 0xf7,
98392 + 0x28, 0x66, 0x72, 0xff, 0xb1, 0x52, 0x66, 0x04, 0xa3, 0x85, 0x80, 0x9a,
98393 + 0xce, 0xfd, 0x49, 0xa5, 0xe4, 0xa2, 0x11, 0xfa, 0x42, 0xd3, 0x98, 0xf0,
98394 + 0x6a, 0x0d, 0x55, 0x91, 0xce, 0x51, 0xd2, 0x99, 0x5e, 0xa3, 0x67, 0x46,
98395 + 0x94, 0xe8, 0x2c, 0x40, 0x5c, 0xf7, 0xaa, 0xcc, 0xcf, 0xa8, 0xb7, 0xa7,
98396 + 0xf9, 0xbc, 0xe8, 0x2d, 0x8c, 0x9f, 0x15, 0xe9, 0x3c, 0x56, 0xb8, 0x88,
98397 + 0xe9, 0xdc, 0x25, 0xfb, 0xf7, 0x91, 0x42, 0x82, 0xb5, 0xaf, 0x0f, 0x79,
98398 + 0xe6, 0x93, 0xb1, 0x5c, 0x63, 0x66, 0x8c, 0x7c, 0x38, 0x67, 0xee, 0xfa,
98399 + 0xf0, 0x64, 0xf1, 0x99, 0x61, 0xbe, 0x3b, 0x7c, 0xed, 0x77, 0xd1, 0x91,
98400 + 0xb3, 0xaf, 0xef, 0xec, 0x2b, 0x94, 0xd3, 0x76, 0x4e, 0x1f, 0x7e, 0xd8,
98401 + 0xf4, 0xca, 0x0c, 0x1c, 0x2f, 0x8d, 0xaf, 0xc7, 0x88, 0xf1, 0x97, 0xd8,
98402 + 0x45, 0xb9, 0x47, 0xa9, 0xcf, 0x13, 0xa6, 0xbd, 0x7f, 0x2f, 0xe7, 0xba,
98403 + 0x98, 0xab, 0xbb, 0x5a, 0xcf, 0x10, 0x8b, 0x1d, 0x63, 0xcc, 0xec, 0x49,
98404 + 0x36, 0x76, 0xbf, 0x4c, 0xbf, 0x4b, 0x7f, 0x5d, 0xf6, 0xc8, 0x81, 0xb1,
98405 + 0x89, 0x6f, 0x63, 0xaa, 0xa6, 0x71, 0xe1, 0x59, 0xe6, 0x84, 0xd3, 0xcc,
98406 + 0x53, 0x1e, 0xe6, 0x84, 0xea, 0x09, 0x62, 0x48, 0xe6, 0xa9, 0x79, 0xe6,
98407 + 0x29, 0x8f, 0xde, 0x78, 0x71, 0x06, 0xff, 0x9d, 0x7a, 0x11, 0xfe, 0x62,
98408 + 0x89, 0x19, 0xc8, 0xb3, 0xce, 0xfc, 0x55, 0x9f, 0xe9, 0xc7, 0xa5, 0x9b,
98409 + 0x9d, 0x19, 0x9a, 0x9b, 0x35, 0x7b, 0x77, 0xae, 0x31, 0x34, 0x22, 0xb4,
98410 + 0x7b, 0xb4, 0x48, 0x96, 0xb6, 0x3a, 0x62, 0x63, 0xef, 0x6e, 0xf6, 0x0b,
98411 + 0x72, 0x8e, 0xab, 0x0a, 0x1e, 0xfa, 0xfe, 0x88, 0x21, 0xe7, 0x1b, 0x22,
98412 + 0xc1, 0xcd, 0xb4, 0xe1, 0x88, 0xd9, 0xd8, 0x12, 0x53, 0x3b, 0x70, 0xa9,
98413 + 0x98, 0x63, 0x1d, 0x2c, 0xad, 0x65, 0x8e, 0xa2, 0xb1, 0xfb, 0x7e, 0x7c,
98414 + 0x03, 0xe9, 0x9a, 0xc6, 0xde, 0x71, 0xc4, 0x8c, 0x7b, 0x21, 0xe7, 0x41,
98415 + 0x1d, 0x5a, 0xf5, 0x79, 0x37, 0xf1, 0xc8, 0x27, 0xd6, 0x52, 0xfd, 0x31,
98416 + 0x8c, 0x13, 0x33, 0x36, 0xac, 0xd2, 0x2f, 0x7e, 0xbf, 0x78, 0xcf, 0xd9,
98417 + 0x2b, 0x12, 0x7f, 0xf1, 0x51, 0x07, 0xe5, 0xf0, 0x2c, 0xaa, 0xe3, 0x1a,
98418 + 0xd4, 0x85, 0x7d, 0x56, 0xf8, 0x55, 0x1c, 0xa0, 0xbf, 0x8d, 0x17, 0x14,
98419 + 0x8c, 0xfa, 0x57, 0x31, 0x20, 0xb5, 0x89, 0xef, 0xb4, 0xe5, 0x02, 0xc4,
98420 + 0x29, 0x11, 0x94, 0xeb, 0xb1, 0xe8, 0x30, 0xe5, 0x6b, 0x63, 0x2e, 0x1f,
98421 + 0x65, 0x0e, 0xc9, 0x86, 0x02, 0xf6, 0xf9, 0xd5, 0x72, 0x3d, 0x62, 0xff,
98422 + 0xcf, 0x81, 0xf4, 0x41, 0x0d, 0x53, 0xb2, 0x4f, 0x7d, 0x08, 0xaf, 0x8e,
98423 + 0xcf, 0xe3, 0x58, 0x32, 0x8d, 0xbd, 0x35, 0x21, 0x8c, 0x99, 0x8b, 0xed,
98424 + 0xb9, 0x81, 0xf4, 0x5b, 0x5b, 0x26, 0x0e, 0xda, 0xb3, 0xc8, 0x8d, 0x49,
98425 + 0x57, 0xbd, 0x9c, 0xe3, 0x98, 0x66, 0xdf, 0x35, 0x6e, 0x0c, 0xe1, 0x80,
98426 + 0xf1, 0xc7, 0x30, 0x16, 0x49, 0xee, 0x1c, 0xc1, 0xf9, 0x29, 0xa9, 0x61,
98427 + 0xfd, 0xad, 0xcb, 0xc6, 0x44, 0x3f, 0x2e, 0x62, 0x5e, 0x1f, 0x9a, 0x6c,
98428 + 0x0c, 0x37, 0xd7, 0xba, 0x7c, 0xca, 0xc1, 0x72, 0x4d, 0x79, 0x39, 0x73,
98429 + 0x5d, 0x85, 0x20, 0xf5, 0x75, 0x21, 0xe9, 0x65, 0xce, 0x11, 0x7d, 0xca,
98430 + 0x19, 0x3f, 0x47, 0xce, 0x44, 0x5e, 0x61, 0xa4, 0xf9, 0xc6, 0xfd, 0x15,
98431 + 0xf9, 0xff, 0x83, 0x6b, 0xe7, 0x0e, 0x8b, 0xb3, 0xf1, 0x3f, 0xb7, 0x2e,
98432 + 0xdd, 0x24, 0x72, 0x27, 0x03, 0xcc, 0xe9, 0xd1, 0xa9, 0x6b, 0xfa, 0x15,
98433 + 0x9d, 0x9e, 0x93, 0x9a, 0x61, 0xeb, 0xdc, 0x99, 0xb7, 0x69, 0x03, 0xef,
98434 + 0xa8, 0x46, 0xd6, 0x13, 0xfa, 0x55, 0x0d, 0xfd, 0xad, 0x09, 0xbd, 0x4b,
98435 + 0x53, 0x9e, 0x9e, 0xab, 0xe6, 0x7a, 0xb4, 0xac, 0x7e, 0xd7, 0xc2, 0xcd,
98436 + 0x6d, 0x70, 0xeb, 0x72, 0x7d, 0xca, 0x4a, 0x87, 0xe4, 0x77, 0x33, 0x20,
98437 + 0xb5, 0xfc, 0x05, 0x73, 0xde, 0x5a, 0xbe, 0xd8, 0xc1, 0x86, 0x7f, 0x97,
98438 + 0x93, 0xbd, 0xaf, 0xac, 0xc5, 0x5e, 0xfb, 0xe2, 0xdb, 0xee, 0x83, 0xf8,
98439 + 0xdb, 0xfc, 0x21, 0xbc, 0x39, 0xee, 0x21, 0xce, 0x14, 0x59, 0xd6, 0xa3,
98440 + 0x7a, 0x75, 0x3c, 0xfd, 0x2e, 0xf3, 0xe2, 0xc5, 0xa9, 0x92, 0x5f, 0xcc,
98441 + 0xb5, 0xae, 0x98, 0x52, 0xa4, 0x55, 0x85, 0x32, 0xca, 0xf9, 0x53, 0xc3,
98442 + 0x8d, 0x68, 0x11, 0xdb, 0xba, 0xc9, 0xe7, 0xee, 0x9c, 0x83, 0x79, 0x63,
98443 + 0xf9, 0xc3, 0x01, 0x67, 0xfe, 0x15, 0x60, 0x1e, 0x1d, 0xc5, 0x91, 0x5c,
98444 + 0x63, 0xe2, 0x3d, 0x39, 0xa7, 0xc3, 0x5e, 0xec, 0x12, 0x46, 0x71, 0x22,
98445 + 0x57, 0xca, 0xa1, 0x11, 0x39, 0xdf, 0x9a, 0x88, 0xba, 0x9c, 0x1c, 0x19,
98446 + 0x75, 0x69, 0xd9, 0xa8, 0xeb, 0xe6, 0x80, 0x60, 0x83, 0xe1, 0x42, 0x2c,
98447 + 0x52, 0x0e, 0x37, 0xf6, 0x18, 0x8e, 0x7f, 0xd4, 0xcf, 0x78, 0x11, 0x5d,
98448 + 0x24, 0x75, 0x59, 0x6a, 0xb2, 0x87, 0x35, 0x79, 0x31, 0xd2, 0x8b, 0x3d,
98449 + 0x78, 0x4d, 0x17, 0x7d, 0xec, 0x2f, 0xe9, 0xc3, 0x38, 0x87, 0xfd, 0xd6,
98450 + 0x7c, 0xb7, 0xf8, 0x92, 0x17, 0x87, 0x9a, 0xa6, 0xad, 0xa9, 0xb0, 0xc8,
98451 + 0xee, 0xc6, 0x69, 0xe6, 0x57, 0xdc, 0x1c, 0x8b, 0x9c, 0x66, 0xcd, 0x1e,
98452 + 0xd1, 0x4b, 0x3e, 0x7e, 0x57, 0x91, 0x4f, 0x3d, 0x33, 0x8b, 0x3f, 0xe1,
98453 + 0xef, 0xf5, 0x91, 0xbd, 0xca, 0x59, 0x6f, 0xf9, 0xcc, 0xdb, 0x81, 0xd2,
98454 + 0xec, 0x54, 0x9e, 0x8d, 0xe6, 0x09, 0x3a, 0x2b, 0x84, 0x56, 0x80, 0xfe,
98455 + 0x59, 0x8e, 0xde, 0xb0, 0x9c, 0xf3, 0x10, 0xbd, 0xc8, 0x9e, 0x22, 0xa8,
98456 + 0x0f, 0x0b, 0x2f, 0x51, 0x1f, 0x87, 0xae, 0x9d, 0xa9, 0x72, 0xf2, 0x57,
98457 + 0x05, 0xaf, 0x6f, 0x4e, 0xbe, 0xb8, 0xce, 0x8f, 0xdf, 0x58, 0x97, 0xc2,
98458 + 0x11, 0xe6, 0x04, 0xb1, 0x69, 0xc6, 0xc6, 0x91, 0x6e, 0xe2, 0x93, 0xdd,
98459 + 0xf6, 0xf9, 0x11, 0xc6, 0x81, 0x79, 0x4d, 0x8e, 0xf9, 0x3e, 0xe2, 0xec,
98460 + 0xb9, 0x9c, 0x7d, 0x66, 0xaf, 0xf7, 0x0d, 0x15, 0x63, 0xae, 0xf9, 0x12,
98461 + 0x7a, 0x6b, 0x85, 0x5e, 0x28, 0xb8, 0x6d, 0x32, 0x41, 0x1d, 0xd4, 0x09,
98462 + 0x5d, 0xeb, 0x29, 0x76, 0x73, 0x87, 0xc6, 0x84, 0x3e, 0x30, 0x32, 0x16,
98463 + 0xeb, 0xff, 0x29, 0xb0, 0xae, 0x0a, 0xda, 0xe0, 0x6c, 0xf1, 0xff, 0x38,
98464 + 0x7e, 0xa1, 0x84, 0x96, 0xd0, 0xf1, 0xc0, 0x64, 0x8e, 0x3b, 0x3e, 0x57,
98465 + 0x41, 0xdd, 0x69, 0xdd, 0x3f, 0x50, 0x15, 0x78, 0xec, 0x89, 0x04, 0x79,
98466 + 0x5f, 0x14, 0xdc, 0x3c, 0xe9, 0x83, 0xff, 0x4c, 0x15, 0x6b, 0xae, 0x0f,
98467 + 0x97, 0x9b, 0x69, 0xd7, 0x27, 0x4a, 0xbc, 0xdb, 0x7b, 0xa3, 0x78, 0x74,
98468 + 0x22, 0x0a, 0x93, 0x3e, 0x3b, 0x67, 0xca, 0x3e, 0xb0, 0xcf, 0xce, 0x9f,
98469 + 0x17, 0xd7, 0xd4, 0xd9, 0x7b, 0x54, 0xcf, 0x16, 0xf4, 0xc8, 0x59, 0x55,
98470 + 0x85, 0x0f, 0x4e, 0xcc, 0xdf, 0x5c, 0x0e, 0xeb, 0x85, 0xa5, 0xa9, 0x78,
98471 + 0x66, 0x17, 0x7d, 0x7e, 0xc5, 0xf2, 0x30, 0x7b, 0x19, 0xf6, 0x94, 0x6b,
98472 + 0xa5, 0xff, 0x1d, 0x60, 0xff, 0x5b, 0xda, 0xd3, 0xd7, 0xfb, 0x1f, 0x52,
98473 + 0xd9, 0x4d, 0x41, 0x58, 0x1f, 0x95, 0xa7, 0xac, 0x8f, 0xbd, 0xa9, 0x38,
98474 + 0xdf, 0x97, 0x3d, 0x3d, 0xcb, 0x7a, 0xab, 0xd9, 0xb2, 0xf2, 0xcd, 0xb1,
98475 + 0x4c, 0xc8, 0x1d, 0xc2, 0x99, 0x06, 0xd9, 0x07, 0x74, 0xe1, 0x83, 0xb8,
98476 + 0x1e, 0xd9, 0x05, 0xd9, 0x7b, 0x67, 0x8e, 0x5f, 0x2c, 0xe7, 0x0e, 0xeb,
98477 + 0x82, 0x9d, 0xe6, 0x22, 0x3c, 0x33, 0xbb, 0x16, 0xbd, 0x5e, 0xd8, 0xe7,
98478 + 0x62, 0x2c, 0x03, 0x6f, 0x2c, 0x85, 0xd4, 0xed, 0x78, 0xcb, 0x43, 0x08,
98479 + 0x63, 0xb6, 0x70, 0x08, 0x0f, 0x9e, 0x90, 0xfd, 0xc5, 0x07, 0x5a, 0x7d,
98480 + 0x27, 0xac, 0xbf, 0x8b, 0xa4, 0xe6, 0x99, 0x17, 0x2d, 0xab, 0x62, 0x6d,
98481 + 0x63, 0x84, 0xe5, 0x88, 0x18, 0xa3, 0x57, 0xb0, 0x7b, 0xff, 0x07, 0xa8,
98482 + 0xc1, 0xd9, 0xe9, 0xf4, 0xcd, 0xec, 0x25, 0x3b, 0x9f, 0x54, 0x21, 0x3c,
98483 + 0x4f, 0x19, 0x9f, 0x2e, 0x08, 0x4e, 0x79, 0xb0, 0x75, 0xcb, 0x89, 0x25,
98484 + 0x78, 0x61, 0x36, 0x8c, 0xb3, 0xa6, 0x4e, 0x9c, 0x04, 0x55, 0x99, 0xb2,
98485 + 0xaa, 0xab, 0xc9, 0x6b, 0xa5, 0xdb, 0x8d, 0x4d, 0x49, 0xe9, 0x0f, 0xf5,
98486 + 0xfe, 0x80, 0xc2, 0x92, 0x72, 0xe8, 0x0b, 0xfb, 0x81, 0x01, 0x3f, 0xfb,
98487 + 0xd5, 0x27, 0x55, 0x3c, 0xf3, 0xbe, 0x3b, 0x8c, 0xe7, 0x99, 0x7f, 0x7e,
98488 + 0x50, 0x90, 0x33, 0x53, 0xcc, 0x31, 0xd3, 0x51, 0xda, 0xca, 0x07, 0x57,
98489 + 0x7d, 0x15, 0x0e, 0x33, 0x5e, 0x5e, 0x32, 0xca, 0x98, 0xa3, 0xe4, 0x0c,
98490 + 0x95, 0xe4, 0xf7, 0x9d, 0x72, 0x56, 0xc4, 0x7a, 0x56, 0x77, 0xfa, 0x7d,
98491 + 0x63, 0xe6, 0xc6, 0x73, 0xc8, 0x21, 0xe6, 0xf5, 0xc6, 0xee, 0x88, 0x7a,
98492 + 0xc5, 0x4a, 0x7f, 0x5d, 0x51, 0xce, 0xdd, 0x55, 0xa8, 0xb0, 0x65, 0xc5,
98493 + 0xf0, 0x44, 0xa9, 0xa6, 0x54, 0x4b, 0x2f, 0xd7, 0x9d, 0x2d, 0xfa, 0x60,
98494 + 0x25, 0x63, 0xfd, 0x28, 0x6b, 0x74, 0xf9, 0x09, 0xa9, 0x25, 0xec, 0x5f,
98495 + 0xd4, 0x7a, 0x62, 0x61, 0xc1, 0x0d, 0x3e, 0xdc, 0x1f, 0xd2, 0x5a, 0xe4,
98496 + 0x2c, 0xf6, 0xd3, 0x85, 0x0e, 0x8f, 0x9c, 0x89, 0x7a, 0xa6, 0x20, 0xb5,
98497 + 0x5c, 0x72, 0x41, 0x69, 0xbd, 0x08, 0x6a, 0xc7, 0xc4, 0x46, 0xdd, 0xad,
98498 + 0x1f, 0x8d, 0x05, 0xe4, 0xdc, 0xfc, 0x90, 0x8b, 0xbd, 0xb6, 0x6f, 0xcc,
98499 + 0xb2, 0xee, 0x6e, 0xd6, 0xfb, 0xd7, 0xbb, 0x65, 0x3f, 0x39, 0xd6, 0x7b,
98500 + 0x4e, 0x69, 0x2d, 0x47, 0xd4, 0x8d, 0x74, 0x9e, 0xab, 0x92, 0x18, 0xc9,
98501 + 0x52, 0xce, 0x47, 0x6d, 0x99, 0xf6, 0x53, 0xa6, 0xd2, 0x99, 0xa1, 0x2a,
98502 + 0x5c, 0x1e, 0x87, 0xce, 0xa8, 0xc5, 0x79, 0x83, 0xc9, 0x29, 0x14, 0x4f,
98503 + 0xb7, 0x43, 0xfc, 0x5f, 0xeb, 0x15, 0x0c, 0x55, 0xc9, 0x9c, 0x3c, 0x3d,
98504 + 0x2e, 0x35, 0x46, 0x09, 0x3e, 0xc9, 0x56, 0xa7, 0x06, 0x70, 0x65, 0x0d,
98505 + 0xf0, 0xca, 0x98, 0xb3, 0xdf, 0x5e, 0x3c, 0xe3, 0x6d, 0x9f, 0x65, 0x78,
98506 + 0xc8, 0x3e, 0xa3, 0x20, 0xf4, 0x0f, 0xe2, 0x4c, 0x4e, 0x30, 0xe5, 0x00,
98507 + 0x31, 0x65, 0x6c, 0x90, 0x78, 0xb3, 0xa5, 0xe0, 0x9c, 0xb7, 0x32, 0x3e,
98508 + 0xa2, 0xcf, 0x3f, 0x49, 0xac, 0x7a, 0x18, 0xce, 0x7e, 0x7b, 0x43, 0xf1,
98509 + 0x0c, 0x42, 0x2c, 0xdf, 0xa9, 0xb6, 0x16, 0xec, 0x33, 0x5a, 0x8c, 0xb1,
98510 + 0x76, 0xb5, 0x79, 0xb6, 0x43, 0x6d, 0x99, 0xed, 0x52, 0x3b, 0x0a, 0xd2,
98511 + 0xb3, 0x3e, 0xd0, 0x7a, 0xff, 0x89, 0xed, 0x6a, 0xeb, 0x74, 0x8f, 0x22,
98512 + 0xa6, 0x0d, 0xf9, 0x52, 0x19, 0xd5, 0x35, 0xeb, 0xcc, 0xcf, 0x3b, 0xd9,
98513 + 0x77, 0x6d, 0x35, 0x4b, 0xfd, 0xbc, 0xfc, 0x1f, 0x57, 0x58, 0xfe, 0x67,
98514 + 0xa2, 0x77, 0xa3, 0xb2, 0xac, 0x5b, 0x93, 0x7f, 0x2d, 0xf6, 0xb0, 0x9e,
98515 + 0x4e, 0xb2, 0x36, 0x9a, 0x55, 0xe8, 0x63, 0xdf, 0x31, 0x6c, 0x2c, 0x2b,
98516 + 0xee, 0x97, 0x89, 0x4c, 0x72, 0x4e, 0x42, 0xfc, 0x15, 0x59, 0xf6, 0x20,
98517 + 0xf8, 0x7b, 0xf2, 0xbf, 0xb7, 0x28, 0x57, 0x97, 0x9c, 0x23, 0xf0, 0x5e,
98518 + 0x3f, 0x47, 0x76, 0x6c, 0xec, 0xba, 0x5c, 0x1e, 0x5e, 0x1b, 0x25, 0x3e,
98519 + 0xdd, 0xab, 0xb4, 0xc1, 0xa7, 0x1c, 0xb9, 0x2e, 0x5e, 0x66, 0x0c, 0x0f,
98520 + 0xdb, 0x31, 0xec, 0xc8, 0xb5, 0xb2, 0x28, 0xd7, 0x8a, 0x7c, 0xa7, 0x7d,
98521 + 0x3e, 0x8b, 0x74, 0x5a, 0xe7, 0xc6, 0xe4, 0x1c, 0x99, 0xcc, 0x2e, 0x45,
98522 + 0x36, 0x91, 0xe3, 0x84, 0x55, 0xa1, 0x77, 0xa9, 0x6d, 0xf6, 0xb9, 0x32,
98523 + 0x39, 0xd3, 0x25, 0xfb, 0xfb, 0x25, 0xb9, 0xa4, 0x8e, 0x2f, 0x0a, 0x76,
98524 + 0x4c, 0xca, 0x39, 0x6b, 0xcb, 0xfa, 0x99, 0x51, 0x11, 0x14, 0x59, 0xce,
98525 + 0x1a, 0x22, 0x8b, 0x9c, 0x17, 0x29, 0xc9, 0xf3, 0xb5, 0xa2, 0x3c, 0x62,
98526 + 0xab, 0xeb, 0x76, 0x2a, 0xfd, 0xff, 0xdf, 0xdb, 0x39, 0xe7, 0x2c, 0x49,
98527 + 0x49, 0x9e, 0x60, 0x4a, 0xf8, 0xcf, 0xb7, 0x8e, 0x8e, 0x0f, 0xe0, 0x15,
98528 + 0xde, 0xff, 0x65, 0xae, 0x24, 0x97, 0x1b, 0x33, 0xd3, 0xa5, 0x33, 0x72,
98529 + 0x6c, 0x29, 0xcd, 0x98, 0x31, 0x42, 0x3f, 0x72, 0xe4, 0x93, 0x33, 0x72,
98530 + 0x8d, 0xf3, 0x97, 0xed, 0xb9, 0x57, 0x3c, 0xcd, 0x7e, 0x19, 0x67, 0x0b,
98531 + 0xbf, 0x6d, 0xbf, 0xa6, 0x7c, 0x05, 0x7b, 0x64, 0xa1, 0x3d, 0x47, 0xda,
98532 + 0x72, 0x96, 0x44, 0xe1, 0xa9, 0x69, 0x60, 0xda, 0xe4, 0xb2, 0xa9, 0x21,
98533 + 0x3c, 0x6e, 0x58, 0xd6, 0x93, 0xcd, 0xba, 0x9c, 0x01, 0xba, 0x50, 0x6b,
98534 + 0xcf, 0x85, 0x60, 0x54, 0xe9, 0xb2, 0x77, 0x27, 0xe7, 0x48, 0x7a, 0xa8,
98535 + 0x03, 0x91, 0x5d, 0x7c, 0xa0, 0x64, 0x7b, 0x39, 0xdf, 0x96, 0xa5, 0x7e,
98536 + 0x44, 0x37, 0xa5, 0x73, 0x6e, 0x32, 0x73, 0xb9, 0x51, 0x27, 0xb7, 0xd9,
98537 + 0x3a, 0x79, 0xda, 0x10, 0x7f, 0x65, 0xf6, 0xa1, 0xaf, 0xce, 0x10, 0x3f,
98538 + 0x8c, 0x18, 0x5e, 0x1b, 0xab, 0x1d, 0x26, 0x3e, 0x39, 0xc2, 0xd8, 0x79,
98539 + 0xd4, 0xbc, 0x88, 0x8b, 0xf9, 0x97, 0xf0, 0xca, 0xb5, 0xff, 0x85, 0x13,
98540 + 0x7f, 0xf1, 0xb5, 0x6c, 0xb1, 0xcf, 0x32, 0xfd, 0x75, 0xcb, 0xb2, 0xb8,
98541 + 0xe4, 0xa1, 0x93, 0x4d, 0x72, 0xb6, 0xa9, 0x3c, 0xf5, 0xde, 0x3a, 0xd9,
98542 + 0xdf, 0x2a, 0x4b, 0x0d, 0x7e, 0xf5, 0x82, 0x2e, 0xba, 0xf9, 0x64, 0xf5,
98543 + 0x19, 0x5d, 0xe4, 0xd2, 0x8d, 0x51, 0xfb, 0x7f, 0x33, 0x43, 0x6b, 0x77,
98544 + 0xeb, 0x12, 0x3b, 0xef, 0x34, 0xb7, 0xd9, 0x39, 0x61, 0x30, 0x75, 0xab,
98545 + 0xad, 0x83, 0x83, 0xa9, 0x65, 0x8e, 0x2e, 0x52, 0x09, 0xfb, 0xfb, 0xe1,
98546 + 0x94, 0xa3, 0x9b, 0x5c, 0xaa, 0xde, 0xfe, 0x1e, 0x4d, 0x39, 0x67, 0xa2,
98547 + 0xb3, 0x29, 0xdd, 0xfe, 0x1e, 0x4f, 0xc5, 0xec, 0xef, 0x23, 0xa9, 0x5b,
98548 + 0xae, 0xf3, 0xc5, 0x9f, 0xff, 0x07, 0xd8, 0xc4, 0xd3, 0xb4, 0xb4, 0x3a,
98549 0x00, 0x00, 0x00 };
98550
98551 static const u32 bnx2_TXP_b06FwData[(0x0/4) + 1] = { 0x0 };
98552 static const u32 bnx2_TXP_b06FwRodata[(0x0/4) + 1] = { 0x0 };
98553
98554 static struct fw_info bnx2_txp_fw_06 = {
98555 - /* Firmware version: 4.6.16 */
98556 + /* Firmware version: 4.4.2 */
98557 .ver_major = 0x4,
98558 - .ver_minor = 0x6,
98559 - .ver_fix = 0x10,
98560 + .ver_minor = 0x4,
98561 + .ver_fix = 0x2,
98562
98563 .start_addr = 0x08000098,
98564
98565 .text_addr = 0x08000000,
98566 - .text_len = 0x3a74,
98567 + .text_len = 0x3ab0,
98568 .text_index = 0x0,
98569 .gz_text = bnx2_TXP_b06FwText,
98570 .gz_text_len = sizeof(bnx2_TXP_b06FwText),
98571 @@ -4432,11 +4535,11 @@
98572 .data_index = 0x0,
98573 .data = bnx2_TXP_b06FwData,
98574
98575 - .sbss_addr = 0x08003aa0,
98576 + .sbss_addr = 0x08003ae0,
98577 .sbss_len = 0x68,
98578 .sbss_index = 0x0,
98579
98580 - .bss_addr = 0x08003b08,
98581 + .bss_addr = 0x08003b48,
98582 .bss_len = 0x14c,
98583 .bss_index = 0x0,
98584
98585 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2.h linux-2.6.29-rc3.owrt/drivers/net/bnx2.h
98586 --- linux-2.6.29.owrt/drivers/net/bnx2.h 2009-05-10 22:04:38.000000000 +0200
98587 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2.h 2009-05-10 23:48:28.000000000 +0200
98588 @@ -1,6 +1,6 @@
98589 /* bnx2.h: Broadcom NX2 network driver.
98590 *
98591 - * Copyright (c) 2004-2009 Broadcom Corporation
98592 + * Copyright (c) 2004-2007 Broadcom Corporation
98593 *
98594 * This program is free software; you can redistribute it and/or modify
98595 * it under the terms of the GNU General Public License as published by
98596 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2x.h linux-2.6.29-rc3.owrt/drivers/net/bnx2x.h
98597 --- linux-2.6.29.owrt/drivers/net/bnx2x.h 2009-05-10 22:04:38.000000000 +0200
98598 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2x.h 2009-05-10 23:48:28.000000000 +0200
98599 @@ -152,7 +152,7 @@
98600 #define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT)
98601 #define SGE_PAGE_SIZE PAGE_SIZE
98602 #define SGE_PAGE_SHIFT PAGE_SHIFT
98603 -#define SGE_PAGE_ALIGN(addr) PAGE_ALIGN((typeof(PAGE_SIZE))addr)
98604 +#define SGE_PAGE_ALIGN(addr) PAGE_ALIGN(addr)
98605
98606 #define BCM_RX_ETH_PAYLOAD_ALIGN 64
98607
98608 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2x_init.h linux-2.6.29-rc3.owrt/drivers/net/bnx2x_init.h
98609 --- linux-2.6.29.owrt/drivers/net/bnx2x_init.h 2009-05-10 22:04:38.000000000 +0200
98610 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2x_init.h 2009-05-10 23:48:28.000000000 +0200
98611 @@ -150,6 +150,7 @@
98612
98613 static void bnx2x_write_big_buf(struct bnx2x *bp, u32 addr, u32 len)
98614 {
98615 +#ifdef USE_DMAE
98616 int offset = 0;
98617
98618 if (bp->dmae_ready) {
98619 @@ -163,6 +164,9 @@
98620 addr + offset, len);
98621 } else
98622 bnx2x_init_str_wr(bp, addr, bp->gunzip_buf, len);
98623 +#else
98624 + bnx2x_init_str_wr(bp, addr, bp->gunzip_buf, len);
98625 +#endif
98626 }
98627
98628 static void bnx2x_init_fill(struct bnx2x *bp, u32 addr, int fill, u32 len)
98629 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bnx2x_main.c linux-2.6.29-rc3.owrt/drivers/net/bnx2x_main.c
98630 --- linux-2.6.29.owrt/drivers/net/bnx2x_main.c 2009-05-10 22:04:38.000000000 +0200
98631 +++ linux-2.6.29-rc3.owrt/drivers/net/bnx2x_main.c 2009-05-10 23:48:28.000000000 +0200
98632 @@ -57,7 +57,7 @@
98633 #include "bnx2x.h"
98634 #include "bnx2x_init.h"
98635
98636 -#define DRV_MODULE_VERSION "1.45.27"
98637 +#define DRV_MODULE_VERSION "1.45.26"
98638 #define DRV_MODULE_RELDATE "2009/01/26"
98639 #define BNX2X_BC_VER 0x040200
98640
98641 @@ -4035,10 +4035,10 @@
98642 {
98643 int port = BP_PORT(bp);
98644
98645 - bnx2x_init_fill(bp, USTORM_INTMEM_ADDR +
98646 + bnx2x_init_fill(bp, BAR_USTRORM_INTMEM +
98647 USTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, sb_id), 0,
98648 sizeof(struct ustorm_status_block)/4);
98649 - bnx2x_init_fill(bp, CSTORM_INTMEM_ADDR +
98650 + bnx2x_init_fill(bp, BAR_CSTRORM_INTMEM +
98651 CSTORM_SB_HOST_STATUS_BLOCK_OFFSET(port, sb_id), 0,
98652 sizeof(struct cstorm_status_block)/4);
98653 }
98654 @@ -4092,18 +4092,18 @@
98655 {
98656 int func = BP_FUNC(bp);
98657
98658 - bnx2x_init_fill(bp, TSTORM_INTMEM_ADDR +
98659 - TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
98660 - sizeof(struct tstorm_def_status_block)/4);
98661 - bnx2x_init_fill(bp, USTORM_INTMEM_ADDR +
98662 + bnx2x_init_fill(bp, BAR_USTRORM_INTMEM +
98663 USTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
98664 sizeof(struct ustorm_def_status_block)/4);
98665 - bnx2x_init_fill(bp, CSTORM_INTMEM_ADDR +
98666 + bnx2x_init_fill(bp, BAR_CSTRORM_INTMEM +
98667 CSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
98668 sizeof(struct cstorm_def_status_block)/4);
98669 - bnx2x_init_fill(bp, XSTORM_INTMEM_ADDR +
98670 + bnx2x_init_fill(bp, BAR_XSTRORM_INTMEM +
98671 XSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
98672 sizeof(struct xstorm_def_status_block)/4);
98673 + bnx2x_init_fill(bp, BAR_TSTRORM_INTMEM +
98674 + TSTORM_DEF_SB_HOST_STATUS_BLOCK_OFFSET(func), 0,
98675 + sizeof(struct tstorm_def_status_block)/4);
98676 }
98677
98678 static void bnx2x_init_def_sb(struct bnx2x *bp,
98679 @@ -4518,8 +4518,7 @@
98680 (USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_TPA |
98681 USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_SGE_RING);
98682 context->ustorm_st_context.common.sge_buff_size =
98683 - (u16)min((u32)SGE_PAGE_SIZE*PAGES_PER_SGE,
98684 - (u32)0xffff);
98685 + (u16)(BCM_PAGE_SIZE*PAGES_PER_SGE);
98686 context->ustorm_st_context.common.sge_page_base_hi =
98687 U64_HI(fp->rx_sge_mapping);
98688 context->ustorm_st_context.common.sge_page_base_lo =
98689 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/bonding/bond_main.c linux-2.6.29-rc3.owrt/drivers/net/bonding/bond_main.c
98690 --- linux-2.6.29.owrt/drivers/net/bonding/bond_main.c 2009-05-10 22:04:38.000000000 +0200
98691 +++ linux-2.6.29-rc3.owrt/drivers/net/bonding/bond_main.c 2009-05-10 23:48:28.000000000 +0200
98692 @@ -3537,26 +3537,11 @@
98693 }
98694 break;
98695 case NETDEV_CHANGE:
98696 - if (bond->params.mode == BOND_MODE_8023AD || bond_is_lb(bond)) {
98697 - struct slave *slave;
98698 -
98699 - slave = bond_get_slave_by_dev(bond, slave_dev);
98700 - if (slave) {
98701 - u16 old_speed = slave->speed;
98702 - u16 old_duplex = slave->duplex;
98703 -
98704 - bond_update_speed_duplex(slave);
98705 -
98706 - if (bond_is_lb(bond))
98707 - break;
98708 -
98709 - if (old_speed != slave->speed)
98710 - bond_3ad_adapter_speed_changed(slave);
98711 - if (old_duplex != slave->duplex)
98712 - bond_3ad_adapter_duplex_changed(slave);
98713 - }
98714 - }
98715 -
98716 + /*
98717 + * TODO: is this what we get if somebody
98718 + * sets up a hierarchical bond, then rmmod's
98719 + * one of the slave bonding devices?
98720 + */
98721 break;
98722 case NETDEV_DOWN:
98723 /*
98724 @@ -4128,7 +4113,7 @@
98725 const struct net_device_ops *slave_ops
98726 = slave->dev->netdev_ops;
98727 if (slave_ops->ndo_neigh_setup)
98728 - return slave_ops->ndo_neigh_setup(slave->dev, parms);
98729 + return slave_ops->ndo_neigh_setup(dev, parms);
98730 }
98731 return 0;
98732 }
98733 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/cassini.c linux-2.6.29-rc3.owrt/drivers/net/cassini.c
98734 --- linux-2.6.29.owrt/drivers/net/cassini.c 2009-05-10 22:04:38.000000000 +0200
98735 +++ linux-2.6.29-rc3.owrt/drivers/net/cassini.c 2009-05-10 23:48:28.000000000 +0200
98736 @@ -806,7 +806,7 @@
98737
98738 cas_phy_write(cp, MII_BMCR, BMCR_RESET);
98739 udelay(100);
98740 - while (--limit) {
98741 + while (limit--) {
98742 val = cas_phy_read(cp, MII_BMCR);
98743 if ((val & BMCR_RESET) == 0)
98744 break;
98745 @@ -979,7 +979,7 @@
98746 writel(val, cp->regs + REG_PCS_MII_CTRL);
98747
98748 limit = STOP_TRIES;
98749 - while (--limit > 0) {
98750 + while (limit-- > 0) {
98751 udelay(10);
98752 if ((readl(cp->regs + REG_PCS_MII_CTRL) &
98753 PCS_MII_RESET) == 0)
98754 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/cxgb3/cxgb3_main.c linux-2.6.29-rc3.owrt/drivers/net/cxgb3/cxgb3_main.c
98755 --- linux-2.6.29.owrt/drivers/net/cxgb3/cxgb3_main.c 2009-05-10 22:04:38.000000000 +0200
98756 +++ linux-2.6.29-rc3.owrt/drivers/net/cxgb3/cxgb3_main.c 2009-05-10 23:48:28.000000000 +0200
98757 @@ -90,7 +90,6 @@
98758 CH_DEVICE(0x30, 2), /* T3B10 */
98759 CH_DEVICE(0x31, 3), /* T3B20 */
98760 CH_DEVICE(0x32, 1), /* T3B02 */
98761 - CH_DEVICE(0x35, 6), /* T3C20-derived T3C10 */
98762 {0,}
98763 };
98764
98765 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/cxgb3/sge.c linux-2.6.29-rc3.owrt/drivers/net/cxgb3/sge.c
98766 --- linux-2.6.29.owrt/drivers/net/cxgb3/sge.c 2009-05-10 22:04:38.000000000 +0200
98767 +++ linux-2.6.29-rc3.owrt/drivers/net/cxgb3/sge.c 2009-05-10 23:48:28.000000000 +0200
98768 @@ -2276,7 +2276,8 @@
98769 } else if ((len = ntohl(r->len_cq)) != 0) {
98770 struct sge_fl *fl;
98771
98772 - lro &= eth && is_eth_tcp(rss_hi);
98773 + if (eth)
98774 + lro = qs->lro_enabled && is_eth_tcp(rss_hi);
98775
98776 fl = (len & F_RSPD_FLQ) ? &qs->fl[1] : &qs->fl[0];
98777 if (fl->use_pages) {
98778 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/cxgb3/t3_hw.c linux-2.6.29-rc3.owrt/drivers/net/cxgb3/t3_hw.c
98779 --- linux-2.6.29.owrt/drivers/net/cxgb3/t3_hw.c 2009-05-10 22:04:38.000000000 +0200
98780 +++ linux-2.6.29-rc3.owrt/drivers/net/cxgb3/t3_hw.c 2009-05-10 23:48:28.000000000 +0200
98781 @@ -512,13 +512,6 @@
98782 F_GPIO5_OUT_VAL | F_GPIO6_OUT_VAL | F_GPIO10_OUT_VAL,
98783 { S_GPIO9, S_GPIO3 }, SUPPORTED_10000baseT_Full | SUPPORTED_AUI,
98784 &mi1_mdio_ext_ops, "Chelsio T320"},
98785 - {},
98786 - {},
98787 - {1, 0,
98788 - F_GPIO1_OEN | F_GPIO2_OEN | F_GPIO4_OEN | F_GPIO6_OEN | F_GPIO7_OEN |
98789 - F_GPIO10_OEN | F_GPIO1_OUT_VAL | F_GPIO6_OUT_VAL | F_GPIO10_OUT_VAL,
98790 - { S_GPIO9 }, SUPPORTED_10000baseT_Full | SUPPORTED_AUI,
98791 - &mi1_mdio_ext_ops, "Chelsio T310" },
98792 };
98793
98794 /*
98795 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/dm9000.c linux-2.6.29-rc3.owrt/drivers/net/dm9000.c
98796 --- linux-2.6.29.owrt/drivers/net/dm9000.c 2009-05-10 22:04:38.000000000 +0200
98797 +++ linux-2.6.29-rc3.owrt/drivers/net/dm9000.c 2009-05-10 23:48:28.000000000 +0200
98798 @@ -930,15 +930,13 @@
98799 struct net_device *dev = dev_id;
98800 board_info_t *db = netdev_priv(dev);
98801 int int_status;
98802 - unsigned long flags;
98803 u8 reg_save;
98804
98805 dm9000_dbg(db, 3, "entering %s\n", __func__);
98806
98807 /* A real interrupt coming */
98808
98809 - /* holders of db->lock must always block IRQs */
98810 - spin_lock_irqsave(&db->lock, flags);
98811 + spin_lock(&db->lock);
98812
98813 /* Save previous register address */
98814 reg_save = readb(db->io_addr);
98815 @@ -974,7 +972,7 @@
98816 /* Restore previous register address */
98817 writeb(reg_save, db->io_addr);
98818
98819 - spin_unlock_irqrestore(&db->lock, flags);
98820 + spin_unlock(&db->lock);
98821
98822 return IRQ_HANDLED;
98823 }
98824 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/dnet.c linux-2.6.29-rc3.owrt/drivers/net/dnet.c
98825 --- linux-2.6.29.owrt/drivers/net/dnet.c 2009-05-10 22:04:38.000000000 +0200
98826 +++ linux-2.6.29-rc3.owrt/drivers/net/dnet.c 1970-01-01 01:00:00.000000000 +0100
98827 @@ -1,994 +0,0 @@
98828 -/*
98829 - * Dave DNET Ethernet Controller driver
98830 - *
98831 - * Copyright (C) 2008 Dave S.r.l. <www.dave.eu>
98832 - * Copyright (C) 2009 Ilya Yanok, Emcraft Systems Ltd, <yanok@emcraft.com>
98833 - *
98834 - * This program is free software; you can redistribute it and/or modify
98835 - * it under the terms of the GNU General Public License version 2 as
98836 - * published by the Free Software Foundation.
98837 - */
98838 -#include <linux/version.h>
98839 -#include <linux/module.h>
98840 -#include <linux/moduleparam.h>
98841 -#include <linux/kernel.h>
98842 -#include <linux/types.h>
98843 -#include <linux/slab.h>
98844 -#include <linux/delay.h>
98845 -#include <linux/init.h>
98846 -#include <linux/netdevice.h>
98847 -#include <linux/etherdevice.h>
98848 -#include <linux/dma-mapping.h>
98849 -#include <linux/platform_device.h>
98850 -#include <linux/phy.h>
98851 -#include <linux/platform_device.h>
98852 -
98853 -#include "dnet.h"
98854 -
98855 -#undef DEBUG
98856 -
98857 -/* function for reading internal MAC register */
98858 -u16 dnet_readw_mac(struct dnet *bp, u16 reg)
98859 -{
98860 - u16 data_read;
98861 -
98862 - /* issue a read */
98863 - dnet_writel(bp, reg, MACREG_ADDR);
98864 -
98865 - /* since a read/write op to the MAC is very slow,
98866 - * we must wait before reading the data */
98867 - ndelay(500);
98868 -
98869 - /* read data read from the MAC register */
98870 - data_read = dnet_readl(bp, MACREG_DATA);
98871 -
98872 - /* all done */
98873 - return data_read;
98874 -}
98875 -
98876 -/* function for writing internal MAC register */
98877 -void dnet_writew_mac(struct dnet *bp, u16 reg, u16 val)
98878 -{
98879 - /* load data to write */
98880 - dnet_writel(bp, val, MACREG_DATA);
98881 -
98882 - /* issue a write */
98883 - dnet_writel(bp, reg | DNET_INTERNAL_WRITE, MACREG_ADDR);
98884 -
98885 - /* since a read/write op to the MAC is very slow,
98886 - * we must wait before exiting */
98887 - ndelay(500);
98888 -}
98889 -
98890 -static void __dnet_set_hwaddr(struct dnet *bp)
98891 -{
98892 - u16 tmp;
98893 -
98894 - tmp = cpu_to_be16(*((u16 *) bp->dev->dev_addr));
98895 - dnet_writew_mac(bp, DNET_INTERNAL_MAC_ADDR_0_REG, tmp);
98896 - tmp = cpu_to_be16(*((u16 *) (bp->dev->dev_addr + 2)));
98897 - dnet_writew_mac(bp, DNET_INTERNAL_MAC_ADDR_1_REG, tmp);
98898 - tmp = cpu_to_be16(*((u16 *) (bp->dev->dev_addr + 4)));
98899 - dnet_writew_mac(bp, DNET_INTERNAL_MAC_ADDR_2_REG, tmp);
98900 -}
98901 -
98902 -static void __devinit dnet_get_hwaddr(struct dnet *bp)
98903 -{
98904 - u16 tmp;
98905 - u8 addr[6];
98906 -
98907 - /*
98908 - * from MAC docs:
98909 - * "Note that the MAC address is stored in the registers in Hexadecimal
98910 - * form. For example, to set the MAC Address to: AC-DE-48-00-00-80
98911 - * would require writing 0xAC (octet 0) to address 0x0B (high byte of
98912 - * Mac_addr[15:0]), 0xDE (octet 1) to address 0x0A (Low byte of
98913 - * Mac_addr[15:0]), 0x48 (octet 2) to address 0x0D (high byte of
98914 - * Mac_addr[15:0]), 0x00 (octet 3) to address 0x0C (Low byte of
98915 - * Mac_addr[15:0]), 0x00 (octet 4) to address 0x0F (high byte of
98916 - * Mac_addr[15:0]), and 0x80 (octet 5) to address * 0x0E (Low byte of
98917 - * Mac_addr[15:0]).
98918 - */
98919 - tmp = dnet_readw_mac(bp, DNET_INTERNAL_MAC_ADDR_0_REG);
98920 - *((u16 *) addr) = be16_to_cpu(tmp);
98921 - tmp = dnet_readw_mac(bp, DNET_INTERNAL_MAC_ADDR_1_REG);
98922 - *((u16 *) (addr + 2)) = be16_to_cpu(tmp);
98923 - tmp = dnet_readw_mac(bp, DNET_INTERNAL_MAC_ADDR_2_REG);
98924 - *((u16 *) (addr + 4)) = be16_to_cpu(tmp);
98925 -
98926 - if (is_valid_ether_addr(addr))
98927 - memcpy(bp->dev->dev_addr, addr, sizeof(addr));
98928 -}
98929 -
98930 -static int dnet_mdio_read(struct mii_bus *bus, int mii_id, int regnum)
98931 -{
98932 - struct dnet *bp = bus->priv;
98933 - u16 value;
98934 -
98935 - while (!(dnet_readw_mac(bp, DNET_INTERNAL_GMII_MNG_CTL_REG)
98936 - & DNET_INTERNAL_GMII_MNG_CMD_FIN))
98937 - cpu_relax();
98938 -
98939 - /* only 5 bits allowed for phy-addr and reg_offset */
98940 - mii_id &= 0x1f;
98941 - regnum &= 0x1f;
98942 -
98943 - /* prepare reg_value for a read */
98944 - value = (mii_id << 8);
98945 - value |= regnum;
98946 -
98947 - /* write control word */
98948 - dnet_writew_mac(bp, DNET_INTERNAL_GMII_MNG_CTL_REG, value);
98949 -
98950 - /* wait for end of transfer */
98951 - while (!(dnet_readw_mac(bp, DNET_INTERNAL_GMII_MNG_CTL_REG)
98952 - & DNET_INTERNAL_GMII_MNG_CMD_FIN))
98953 - cpu_relax();
98954 -
98955 - value = dnet_readw_mac(bp, DNET_INTERNAL_GMII_MNG_DAT_REG);
98956 -
98957 - pr_debug("mdio_read %02x:%02x <- %04x\n", mii_id, regnum, value);
98958 -
98959 - return value;
98960 -}
98961 -
98962 -static int dnet_mdio_write(struct mii_bus *bus, int mii_id, int regnum,
98963 - u16 value)
98964 -{
98965 - struct dnet *bp = bus->priv;
98966 - u16 tmp;
98967 -
98968 - pr_debug("mdio_write %02x:%02x <- %04x\n", mii_id, regnum, value);
98969 -
98970 - while (!(dnet_readw_mac(bp, DNET_INTERNAL_GMII_MNG_CTL_REG)
98971 - & DNET_INTERNAL_GMII_MNG_CMD_FIN))
98972 - cpu_relax();
98973 -
98974 - /* prepare for a write operation */
98975 - tmp = (1 << 13);
98976 -
98977 - /* only 5 bits allowed for phy-addr and reg_offset */
98978 - mii_id &= 0x1f;
98979 - regnum &= 0x1f;
98980 -
98981 - /* only 16 bits on data */
98982 - value &= 0xffff;
98983 -
98984 - /* prepare reg_value for a write */
98985 - tmp |= (mii_id << 8);
98986 - tmp |= regnum;
98987 -
98988 - /* write data to write first */
98989 - dnet_writew_mac(bp, DNET_INTERNAL_GMII_MNG_DAT_REG, value);
98990 -
98991 - /* write control word */
98992 - dnet_writew_mac(bp, DNET_INTERNAL_GMII_MNG_CTL_REG, tmp);
98993 -
98994 - while (!(dnet_readw_mac(bp, DNET_INTERNAL_GMII_MNG_CTL_REG)
98995 - & DNET_INTERNAL_GMII_MNG_CMD_FIN))
98996 - cpu_relax();
98997 -
98998 - return 0;
98999 -}
99000 -
99001 -static int dnet_mdio_reset(struct mii_bus *bus)
99002 -{
99003 - return 0;
99004 -}
99005 -
99006 -static void dnet_handle_link_change(struct net_device *dev)
99007 -{
99008 - struct dnet *bp = netdev_priv(dev);
99009 - struct phy_device *phydev = bp->phy_dev;
99010 - unsigned long flags;
99011 - u32 mode_reg, ctl_reg;
99012 -
99013 - int status_change = 0;
99014 -
99015 - spin_lock_irqsave(&bp->lock, flags);
99016 -
99017 - mode_reg = dnet_readw_mac(bp, DNET_INTERNAL_MODE_REG);
99018 - ctl_reg = dnet_readw_mac(bp, DNET_INTERNAL_RXTX_CONTROL_REG);
99019 -
99020 - if (phydev->link) {
99021 - if (bp->duplex != phydev->duplex) {
99022 - if (phydev->duplex)
99023 - ctl_reg &=
99024 - ~(DNET_INTERNAL_RXTX_CONTROL_ENABLEHALFDUP);
99025 - else
99026 - ctl_reg |=
99027 - DNET_INTERNAL_RXTX_CONTROL_ENABLEHALFDUP;
99028 -
99029 - bp->duplex = phydev->duplex;
99030 - status_change = 1;
99031 - }
99032 -
99033 - if (bp->speed != phydev->speed) {
99034 - status_change = 1;
99035 - switch (phydev->speed) {
99036 - case 1000:
99037 - mode_reg |= DNET_INTERNAL_MODE_GBITEN;
99038 - break;
99039 - case 100:
99040 - case 10:
99041 - mode_reg &= ~DNET_INTERNAL_MODE_GBITEN;
99042 - break;
99043 - default:
99044 - printk(KERN_WARNING
99045 - "%s: Ack! Speed (%d) is not "
99046 - "10/100/1000!\n", dev->name,
99047 - phydev->speed);
99048 - break;
99049 - }
99050 - bp->speed = phydev->speed;
99051 - }
99052 - }
99053 -
99054 - if (phydev->link != bp->link) {
99055 - if (phydev->link) {
99056 - mode_reg |=
99057 - (DNET_INTERNAL_MODE_RXEN | DNET_INTERNAL_MODE_TXEN);
99058 - } else {
99059 - mode_reg &=
99060 - ~(DNET_INTERNAL_MODE_RXEN |
99061 - DNET_INTERNAL_MODE_TXEN);
99062 - bp->speed = 0;
99063 - bp->duplex = -1;
99064 - }
99065 - bp->link = phydev->link;
99066 -
99067 - status_change = 1;
99068 - }
99069 -
99070 - if (status_change) {
99071 - dnet_writew_mac(bp, DNET_INTERNAL_RXTX_CONTROL_REG, ctl_reg);
99072 - dnet_writew_mac(bp, DNET_INTERNAL_MODE_REG, mode_reg);
99073 - }
99074 -
99075 - spin_unlock_irqrestore(&bp->lock, flags);
99076 -
99077 - if (status_change) {
99078 - if (phydev->link)
99079 - printk(KERN_INFO "%s: link up (%d/%s)\n",
99080 - dev->name, phydev->speed,
99081 - DUPLEX_FULL == phydev->duplex ? "Full" : "Half");
99082 - else
99083 - printk(KERN_INFO "%s: link down\n", dev->name);
99084 - }
99085 -}
99086 -
99087 -static int dnet_mii_probe(struct net_device *dev)
99088 -{
99089 - struct dnet *bp = netdev_priv(dev);
99090 - struct phy_device *phydev = NULL;
99091 - int phy_addr;
99092 -
99093 - /* find the first phy */
99094 - for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) {
99095 - if (bp->mii_bus->phy_map[phy_addr]) {
99096 - phydev = bp->mii_bus->phy_map[phy_addr];
99097 - break;
99098 - }
99099 - }
99100 -
99101 - if (!phydev) {
99102 - printk(KERN_ERR "%s: no PHY found\n", dev->name);
99103 - return -ENODEV;
99104 - }
99105 -
99106 - /* TODO : add pin_irq */
99107 -
99108 - /* attach the mac to the phy */
99109 - if (bp->capabilities & DNET_HAS_RMII) {
99110 - phydev = phy_connect(dev, dev_name(&phydev->dev),
99111 - &dnet_handle_link_change, 0,
99112 - PHY_INTERFACE_MODE_RMII);
99113 - } else {
99114 - phydev = phy_connect(dev, dev_name(&phydev->dev),
99115 - &dnet_handle_link_change, 0,
99116 - PHY_INTERFACE_MODE_MII);
99117 - }
99118 -
99119 - if (IS_ERR(phydev)) {
99120 - printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
99121 - return PTR_ERR(phydev);
99122 - }
99123 -
99124 - /* mask with MAC supported features */
99125 - if (bp->capabilities & DNET_HAS_GIGABIT)
99126 - phydev->supported &= PHY_GBIT_FEATURES;
99127 - else
99128 - phydev->supported &= PHY_BASIC_FEATURES;
99129 -
99130 - phydev->supported |= SUPPORTED_Asym_Pause | SUPPORTED_Pause;
99131 -
99132 - phydev->advertising = phydev->supported;
99133 -
99134 - bp->link = 0;
99135 - bp->speed = 0;
99136 - bp->duplex = -1;
99137 - bp->phy_dev = phydev;
99138 -
99139 - return 0;
99140 -}
99141 -
99142 -static int dnet_mii_init(struct dnet *bp)
99143 -{
99144 - int err, i;
99145 -
99146 - bp->mii_bus = mdiobus_alloc();
99147 - if (bp->mii_bus == NULL)
99148 - return -ENOMEM;
99149 -
99150 - bp->mii_bus->name = "dnet_mii_bus";
99151 - bp->mii_bus->read = &dnet_mdio_read;
99152 - bp->mii_bus->write = &dnet_mdio_write;
99153 - bp->mii_bus->reset = &dnet_mdio_reset;
99154 -
99155 - snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%x", 0);
99156 -
99157 - bp->mii_bus->priv = bp;
99158 -
99159 - bp->mii_bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
99160 - if (!bp->mii_bus->irq) {
99161 - err = -ENOMEM;
99162 - goto err_out;
99163 - }
99164 -
99165 - for (i = 0; i < PHY_MAX_ADDR; i++)
99166 - bp->mii_bus->irq[i] = PHY_POLL;
99167 -
99168 - platform_set_drvdata(bp->dev, bp->mii_bus);
99169 -
99170 - if (mdiobus_register(bp->mii_bus)) {
99171 - err = -ENXIO;
99172 - goto err_out_free_mdio_irq;
99173 - }
99174 -
99175 - if (dnet_mii_probe(bp->dev) != 0) {
99176 - err = -ENXIO;
99177 - goto err_out_unregister_bus;
99178 - }
99179 -
99180 - return 0;
99181 -
99182 -err_out_unregister_bus:
99183 - mdiobus_unregister(bp->mii_bus);
99184 -err_out_free_mdio_irq:
99185 - kfree(bp->mii_bus->irq);
99186 -err_out:
99187 - mdiobus_free(bp->mii_bus);
99188 - return err;
99189 -}
99190 -
99191 -/* For Neptune board: LINK1000 as Link LED and TX as activity LED */
99192 -int dnet_phy_marvell_fixup(struct phy_device *phydev)
99193 -{
99194 - return phy_write(phydev, 0x18, 0x4148);
99195 -}
99196 -
99197 -static void dnet_update_stats(struct dnet *bp)
99198 -{
99199 - u32 __iomem *reg = bp->regs + DNET_RX_PKT_IGNR_CNT;
99200 - u32 *p = &bp->hw_stats.rx_pkt_ignr;
99201 - u32 *end = &bp->hw_stats.rx_byte + 1;
99202 -
99203 - WARN_ON((unsigned long)(end - p - 1) !=
99204 - (DNET_RX_BYTE_CNT - DNET_RX_PKT_IGNR_CNT) / 4);
99205 -
99206 - for (; p < end; p++, reg++)
99207 - *p += readl(reg);
99208 -
99209 - reg = bp->regs + DNET_TX_UNICAST_CNT;
99210 - p = &bp->hw_stats.tx_unicast;
99211 - end = &bp->hw_stats.tx_byte + 1;
99212 -
99213 - WARN_ON((unsigned long)(end - p - 1) !=
99214 - (DNET_TX_BYTE_CNT - DNET_TX_UNICAST_CNT) / 4);
99215 -
99216 - for (; p < end; p++, reg++)
99217 - *p += readl(reg);
99218 -}
99219 -
99220 -static int dnet_poll(struct napi_struct *napi, int budget)
99221 -{
99222 - struct dnet *bp = container_of(napi, struct dnet, napi);
99223 - struct net_device *dev = bp->dev;
99224 - int npackets = 0;
99225 - unsigned int pkt_len;
99226 - struct sk_buff *skb;
99227 - unsigned int *data_ptr;
99228 - u32 int_enable;
99229 - u32 cmd_word;
99230 - int i;
99231 -
99232 - while (npackets < budget) {
99233 - /*
99234 - * break out of while loop if there are no more
99235 - * packets waiting
99236 - */
99237 - if (!(dnet_readl(bp, RX_FIFO_WCNT) >> 16)) {
99238 - napi_complete(napi);
99239 - int_enable = dnet_readl(bp, INTR_ENB);
99240 - int_enable |= DNET_INTR_SRC_RX_CMDFIFOAF;
99241 - dnet_writel(bp, int_enable, INTR_ENB);
99242 - return 0;
99243 - }
99244 -
99245 - cmd_word = dnet_readl(bp, RX_LEN_FIFO);
99246 - pkt_len = cmd_word & 0xFFFF;
99247 -
99248 - if (cmd_word & 0xDF180000)
99249 - printk(KERN_ERR "%s packet receive error %x\n",
99250 - __func__, cmd_word);
99251 -
99252 - skb = dev_alloc_skb(pkt_len + 5);
99253 - if (skb != NULL) {
99254 - /* Align IP on 16 byte boundaries */
99255 - skb_reserve(skb, 2);
99256 - /*
99257 - * 'skb_put()' points to the start of sk_buff
99258 - * data area.
99259 - */
99260 - data_ptr = (unsigned int *)skb_put(skb, pkt_len);
99261 - for (i = 0; i < (pkt_len + 3) >> 2; i++)
99262 - *data_ptr++ = dnet_readl(bp, RX_DATA_FIFO);
99263 - skb->protocol = eth_type_trans(skb, dev);
99264 - netif_receive_skb(skb);
99265 - npackets++;
99266 - } else
99267 - printk(KERN_NOTICE
99268 - "%s: No memory to allocate a sk_buff of "
99269 - "size %u.\n", dev->name, pkt_len);
99270 - }
99271 -
99272 - budget -= npackets;
99273 -
99274 - if (npackets < budget) {
99275 - /* We processed all packets available. Tell NAPI it can
99276 - * stop polling then re-enable rx interrupts */
99277 - napi_complete(napi);
99278 - int_enable = dnet_readl(bp, INTR_ENB);
99279 - int_enable |= DNET_INTR_SRC_RX_CMDFIFOAF;
99280 - dnet_writel(bp, int_enable, INTR_ENB);
99281 - return 0;
99282 - }
99283 -
99284 - /* There are still packets waiting */
99285 - return 1;
99286 -}
99287 -
99288 -static irqreturn_t dnet_interrupt(int irq, void *dev_id)
99289 -{
99290 - struct net_device *dev = dev_id;
99291 - struct dnet *bp = netdev_priv(dev);
99292 - u32 int_src, int_enable, int_current;
99293 - unsigned long flags;
99294 - unsigned int handled = 0;
99295 -
99296 - spin_lock_irqsave(&bp->lock, flags);
99297 -
99298 - /* read and clear the DNET irq (clear on read) */
99299 - int_src = dnet_readl(bp, INTR_SRC);
99300 - int_enable = dnet_readl(bp, INTR_ENB);
99301 - int_current = int_src & int_enable;
99302 -
99303 - /* restart the queue if we had stopped it for TX fifo almost full */
99304 - if (int_current & DNET_INTR_SRC_TX_FIFOAE) {
99305 - int_enable = dnet_readl(bp, INTR_ENB);
99306 - int_enable &= ~DNET_INTR_ENB_TX_FIFOAE;
99307 - dnet_writel(bp, int_enable, INTR_ENB);
99308 - netif_wake_queue(dev);
99309 - handled = 1;
99310 - }
99311 -
99312 - /* RX FIFO error checking */
99313 - if (int_current &
99314 - (DNET_INTR_SRC_RX_CMDFIFOFF | DNET_INTR_SRC_RX_DATAFIFOFF)) {
99315 - printk(KERN_ERR "%s: RX fifo error %x, irq %x\n", __func__,
99316 - dnet_readl(bp, RX_STATUS), int_current);
99317 - /* we can only flush the RX FIFOs */
99318 - dnet_writel(bp, DNET_SYS_CTL_RXFIFOFLUSH, SYS_CTL);
99319 - ndelay(500);
99320 - dnet_writel(bp, 0, SYS_CTL);
99321 - handled = 1;
99322 - }
99323 -
99324 - /* TX FIFO error checking */
99325 - if (int_current &
99326 - (DNET_INTR_SRC_TX_FIFOFULL | DNET_INTR_SRC_TX_DISCFRM)) {
99327 - printk(KERN_ERR "%s: TX fifo error %x, irq %x\n", __func__,
99328 - dnet_readl(bp, TX_STATUS), int_current);
99329 - /* we can only flush the TX FIFOs */
99330 - dnet_writel(bp, DNET_SYS_CTL_TXFIFOFLUSH, SYS_CTL);
99331 - ndelay(500);
99332 - dnet_writel(bp, 0, SYS_CTL);
99333 - handled = 1;
99334 - }
99335 -
99336 - if (int_current & DNET_INTR_SRC_RX_CMDFIFOAF) {
99337 - if (napi_schedule_prep(&bp->napi)) {
99338 - /*
99339 - * There's no point taking any more interrupts
99340 - * until we have processed the buffers
99341 - */
99342 - /* Disable Rx interrupts and schedule NAPI poll */
99343 - int_enable = dnet_readl(bp, INTR_ENB);
99344 - int_enable &= ~DNET_INTR_SRC_RX_CMDFIFOAF;
99345 - dnet_writel(bp, int_enable, INTR_ENB);
99346 - __napi_schedule(&bp->napi);
99347 - }
99348 - handled = 1;
99349 - }
99350 -
99351 - if (!handled)
99352 - pr_debug("%s: irq %x remains\n", __func__, int_current);
99353 -
99354 - spin_unlock_irqrestore(&bp->lock, flags);
99355 -
99356 - return IRQ_RETVAL(handled);
99357 -}
99358 -
99359 -#ifdef DEBUG
99360 -static inline void dnet_print_skb(struct sk_buff *skb)
99361 -{
99362 - int k;
99363 - printk(KERN_DEBUG PFX "data:");
99364 - for (k = 0; k < skb->len; k++)
99365 - printk(" %02x", (unsigned int)skb->data[k]);
99366 - printk("\n");
99367 -}
99368 -#else
99369 -#define dnet_print_skb(skb) do {} while (0)
99370 -#endif
99371 -
99372 -static int dnet_start_xmit(struct sk_buff *skb, struct net_device *dev)
99373 -{
99374 -
99375 - struct dnet *bp = netdev_priv(dev);
99376 - u32 tx_status, irq_enable;
99377 - unsigned int len, i, tx_cmd, wrsz;
99378 - unsigned long flags;
99379 - unsigned int *bufp;
99380 -
99381 - tx_status = dnet_readl(bp, TX_STATUS);
99382 -
99383 - pr_debug("start_xmit: len %u head %p data %p\n",
99384 - skb->len, skb->head, skb->data);
99385 - dnet_print_skb(skb);
99386 -
99387 - /* frame size (words) */
99388 - len = (skb->len + 3) >> 2;
99389 -
99390 - spin_lock_irqsave(&bp->lock, flags);
99391 -
99392 - tx_status = dnet_readl(bp, TX_STATUS);
99393 -
99394 - bufp = (unsigned int *)(((unsigned long) skb->data) & ~0x3UL);
99395 - wrsz = (u32) skb->len + 3;
99396 - wrsz += ((unsigned long) skb->data) & 0x3;
99397 - wrsz >>= 2;
99398 - tx_cmd = ((((unsigned long)(skb->data)) & 0x03) << 16) | (u32) skb->len;
99399 -
99400 - /* check if there is enough room for the current frame */
99401 - if (wrsz < (DNET_FIFO_SIZE - dnet_readl(bp, TX_FIFO_WCNT))) {
99402 - for (i = 0; i < wrsz; i++)
99403 - dnet_writel(bp, *bufp++, TX_DATA_FIFO);
99404 -
99405 - /*
99406 - * inform MAC that a packet's written and ready to be
99407 - * shipped out
99408 - */
99409 - dnet_writel(bp, tx_cmd, TX_LEN_FIFO);
99410 - }
99411 -
99412 - if (dnet_readl(bp, TX_FIFO_WCNT) > DNET_FIFO_TX_DATA_AF_TH) {
99413 - netif_stop_queue(dev);
99414 - tx_status = dnet_readl(bp, INTR_SRC);
99415 - irq_enable = dnet_readl(bp, INTR_ENB);
99416 - irq_enable |= DNET_INTR_ENB_TX_FIFOAE;
99417 - dnet_writel(bp, irq_enable, INTR_ENB);
99418 - }
99419 -
99420 - /* free the buffer */
99421 - dev_kfree_skb(skb);
99422 -
99423 - spin_unlock_irqrestore(&bp->lock, flags);
99424 -
99425 - dev->trans_start = jiffies;
99426 -
99427 - return 0;
99428 -}
99429 -
99430 -static void dnet_reset_hw(struct dnet *bp)
99431 -{
99432 - /* put ts_mac in IDLE state i.e. disable rx/tx */
99433 - dnet_writew_mac(bp, DNET_INTERNAL_MODE_REG, DNET_INTERNAL_MODE_FCEN);
99434 -
99435 - /*
99436 - * RX FIFO almost full threshold: only cmd FIFO almost full is
99437 - * implemented for RX side
99438 - */
99439 - dnet_writel(bp, DNET_FIFO_RX_CMD_AF_TH, RX_FIFO_TH);
99440 - /*
99441 - * TX FIFO almost empty threshold: only data FIFO almost empty
99442 - * is implemented for TX side
99443 - */
99444 - dnet_writel(bp, DNET_FIFO_TX_DATA_AE_TH, TX_FIFO_TH);
99445 -
99446 - /* flush rx/tx fifos */
99447 - dnet_writel(bp, DNET_SYS_CTL_RXFIFOFLUSH | DNET_SYS_CTL_TXFIFOFLUSH,
99448 - SYS_CTL);
99449 - msleep(1);
99450 - dnet_writel(bp, 0, SYS_CTL);
99451 -}
99452 -
99453 -static void dnet_init_hw(struct dnet *bp)
99454 -{
99455 - u32 config;
99456 -
99457 - dnet_reset_hw(bp);
99458 - __dnet_set_hwaddr(bp);
99459 -
99460 - config = dnet_readw_mac(bp, DNET_INTERNAL_RXTX_CONTROL_REG);
99461 -
99462 - if (bp->dev->flags & IFF_PROMISC)
99463 - /* Copy All Frames */
99464 - config |= DNET_INTERNAL_RXTX_CONTROL_ENPROMISC;
99465 - if (!(bp->dev->flags & IFF_BROADCAST))
99466 - /* No BroadCast */
99467 - config |= DNET_INTERNAL_RXTX_CONTROL_RXMULTICAST;
99468 -
99469 - config |= DNET_INTERNAL_RXTX_CONTROL_RXPAUSE |
99470 - DNET_INTERNAL_RXTX_CONTROL_RXBROADCAST |
99471 - DNET_INTERNAL_RXTX_CONTROL_DROPCONTROL |
99472 - DNET_INTERNAL_RXTX_CONTROL_DISCFXFCS;
99473 -
99474 - dnet_writew_mac(bp, DNET_INTERNAL_RXTX_CONTROL_REG, config);
99475 -
99476 - /* clear irq before enabling them */
99477 - config = dnet_readl(bp, INTR_SRC);
99478 -
99479 - /* enable RX/TX interrupt, recv packet ready interrupt */
99480 - dnet_writel(bp, DNET_INTR_ENB_GLOBAL_ENABLE | DNET_INTR_ENB_RX_SUMMARY |
99481 - DNET_INTR_ENB_TX_SUMMARY | DNET_INTR_ENB_RX_FIFOERR |
99482 - DNET_INTR_ENB_RX_ERROR | DNET_INTR_ENB_RX_FIFOFULL |
99483 - DNET_INTR_ENB_TX_FIFOFULL | DNET_INTR_ENB_TX_DISCFRM |
99484 - DNET_INTR_ENB_RX_PKTRDY, INTR_ENB);
99485 -}
99486 -
99487 -static int dnet_open(struct net_device *dev)
99488 -{
99489 - struct dnet *bp = netdev_priv(dev);
99490 -
99491 - /* if the phy is not yet register, retry later */
99492 - if (!bp->phy_dev)
99493 - return -EAGAIN;
99494 -
99495 - if (!is_valid_ether_addr(dev->dev_addr))
99496 - return -EADDRNOTAVAIL;
99497 -
99498 - napi_enable(&bp->napi);
99499 - dnet_init_hw(bp);
99500 -
99501 - phy_start_aneg(bp->phy_dev);
99502 -
99503 - /* schedule a link state check */
99504 - phy_start(bp->phy_dev);
99505 -
99506 - netif_start_queue(dev);
99507 -
99508 - return 0;
99509 -}
99510 -
99511 -static int dnet_close(struct net_device *dev)
99512 -{
99513 - struct dnet *bp = netdev_priv(dev);
99514 -
99515 - netif_stop_queue(dev);
99516 - napi_disable(&bp->napi);
99517 -
99518 - if (bp->phy_dev)
99519 - phy_stop(bp->phy_dev);
99520 -
99521 - dnet_reset_hw(bp);
99522 - netif_carrier_off(dev);
99523 -
99524 - return 0;
99525 -}
99526 -
99527 -static inline void dnet_print_pretty_hwstats(struct dnet_stats *hwstat)
99528 -{
99529 - pr_debug("%s\n", __func__);
99530 - pr_debug("----------------------------- RX statistics "
99531 - "-------------------------------\n");
99532 - pr_debug("RX_PKT_IGNR_CNT %-8x\n", hwstat->rx_pkt_ignr);
99533 - pr_debug("RX_LEN_CHK_ERR_CNT %-8x\n", hwstat->rx_len_chk_err);
99534 - pr_debug("RX_LNG_FRM_CNT %-8x\n", hwstat->rx_lng_frm);
99535 - pr_debug("RX_SHRT_FRM_CNT %-8x\n", hwstat->rx_shrt_frm);
99536 - pr_debug("RX_IPG_VIOL_CNT %-8x\n", hwstat->rx_ipg_viol);
99537 - pr_debug("RX_CRC_ERR_CNT %-8x\n", hwstat->rx_crc_err);
99538 - pr_debug("RX_OK_PKT_CNT %-8x\n", hwstat->rx_ok_pkt);
99539 - pr_debug("RX_CTL_FRM_CNT %-8x\n", hwstat->rx_ctl_frm);
99540 - pr_debug("RX_PAUSE_FRM_CNT %-8x\n", hwstat->rx_pause_frm);
99541 - pr_debug("RX_MULTICAST_CNT %-8x\n", hwstat->rx_multicast);
99542 - pr_debug("RX_BROADCAST_CNT %-8x\n", hwstat->rx_broadcast);
99543 - pr_debug("RX_VLAN_TAG_CNT %-8x\n", hwstat->rx_vlan_tag);
99544 - pr_debug("RX_PRE_SHRINK_CNT %-8x\n", hwstat->rx_pre_shrink);
99545 - pr_debug("RX_DRIB_NIB_CNT %-8x\n", hwstat->rx_drib_nib);
99546 - pr_debug("RX_UNSUP_OPCD_CNT %-8x\n", hwstat->rx_unsup_opcd);
99547 - pr_debug("RX_BYTE_CNT %-8x\n", hwstat->rx_byte);
99548 - pr_debug("----------------------------- TX statistics "
99549 - "-------------------------------\n");
99550 - pr_debug("TX_UNICAST_CNT %-8x\n", hwstat->tx_unicast);
99551 - pr_debug("TX_PAUSE_FRM_CNT %-8x\n", hwstat->tx_pause_frm);
99552 - pr_debug("TX_MULTICAST_CNT %-8x\n", hwstat->tx_multicast);
99553 - pr_debug("TX_BRDCAST_CNT %-8x\n", hwstat->tx_brdcast);
99554 - pr_debug("TX_VLAN_TAG_CNT %-8x\n", hwstat->tx_vlan_tag);
99555 - pr_debug("TX_BAD_FCS_CNT %-8x\n", hwstat->tx_bad_fcs);
99556 - pr_debug("TX_JUMBO_CNT %-8x\n", hwstat->tx_jumbo);
99557 - pr_debug("TX_BYTE_CNT %-8x\n", hwstat->tx_byte);
99558 -}
99559 -
99560 -static struct net_device_stats *dnet_get_stats(struct net_device *dev)
99561 -{
99562 -
99563 - struct dnet *bp = netdev_priv(dev);
99564 - struct net_device_stats *nstat = &dev->stats;
99565 - struct dnet_stats *hwstat = &bp->hw_stats;
99566 -
99567 - /* read stats from hardware */
99568 - dnet_update_stats(bp);
99569 -
99570 - /* Convert HW stats into netdevice stats */
99571 - nstat->rx_errors = (hwstat->rx_len_chk_err +
99572 - hwstat->rx_lng_frm + hwstat->rx_shrt_frm +
99573 - /* ignore IGP violation error
99574 - hwstat->rx_ipg_viol + */
99575 - hwstat->rx_crc_err +
99576 - hwstat->rx_pre_shrink +
99577 - hwstat->rx_drib_nib + hwstat->rx_unsup_opcd);
99578 - nstat->tx_errors = hwstat->tx_bad_fcs;
99579 - nstat->rx_length_errors = (hwstat->rx_len_chk_err +
99580 - hwstat->rx_lng_frm +
99581 - hwstat->rx_shrt_frm + hwstat->rx_pre_shrink);
99582 - nstat->rx_crc_errors = hwstat->rx_crc_err;
99583 - nstat->rx_frame_errors = hwstat->rx_pre_shrink + hwstat->rx_drib_nib;
99584 - nstat->rx_packets = hwstat->rx_ok_pkt;
99585 - nstat->tx_packets = (hwstat->tx_unicast +
99586 - hwstat->tx_multicast + hwstat->tx_brdcast);
99587 - nstat->rx_bytes = hwstat->rx_byte;
99588 - nstat->tx_bytes = hwstat->tx_byte;
99589 - nstat->multicast = hwstat->rx_multicast;
99590 - nstat->rx_missed_errors = hwstat->rx_pkt_ignr;
99591 -
99592 - dnet_print_pretty_hwstats(hwstat);
99593 -
99594 - return nstat;
99595 -}
99596 -
99597 -static int dnet_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
99598 -{
99599 - struct dnet *bp = netdev_priv(dev);
99600 - struct phy_device *phydev = bp->phy_dev;
99601 -
99602 - if (!phydev)
99603 - return -ENODEV;
99604 -
99605 - return phy_ethtool_gset(phydev, cmd);
99606 -}
99607 -
99608 -static int dnet_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
99609 -{
99610 - struct dnet *bp = netdev_priv(dev);
99611 - struct phy_device *phydev = bp->phy_dev;
99612 -
99613 - if (!phydev)
99614 - return -ENODEV;
99615 -
99616 - return phy_ethtool_sset(phydev, cmd);
99617 -}
99618 -
99619 -static int dnet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
99620 -{
99621 - struct dnet *bp = netdev_priv(dev);
99622 - struct phy_device *phydev = bp->phy_dev;
99623 -
99624 - if (!netif_running(dev))
99625 - return -EINVAL;
99626 -
99627 - if (!phydev)
99628 - return -ENODEV;
99629 -
99630 - return phy_mii_ioctl(phydev, if_mii(rq), cmd);
99631 -}
99632 -
99633 -static void dnet_get_drvinfo(struct net_device *dev,
99634 - struct ethtool_drvinfo *info)
99635 -{
99636 - strcpy(info->driver, DRV_NAME);
99637 - strcpy(info->version, DRV_VERSION);
99638 - strcpy(info->bus_info, "0");
99639 -}
99640 -
99641 -static const struct ethtool_ops dnet_ethtool_ops = {
99642 - .get_settings = dnet_get_settings,
99643 - .set_settings = dnet_set_settings,
99644 - .get_drvinfo = dnet_get_drvinfo,
99645 - .get_link = ethtool_op_get_link,
99646 -};
99647 -
99648 -static const struct net_device_ops dnet_netdev_ops = {
99649 - .ndo_open = dnet_open,
99650 - .ndo_stop = dnet_close,
99651 - .ndo_get_stats = dnet_get_stats,
99652 - .ndo_start_xmit = dnet_start_xmit,
99653 - .ndo_do_ioctl = dnet_ioctl,
99654 - .ndo_set_mac_address = eth_mac_addr,
99655 - .ndo_validate_addr = eth_validate_addr,
99656 - .ndo_change_mtu = eth_change_mtu,
99657 -};
99658 -
99659 -static int __devinit dnet_probe(struct platform_device *pdev)
99660 -{
99661 - struct resource *res;
99662 - struct net_device *dev;
99663 - struct dnet *bp;
99664 - struct phy_device *phydev;
99665 - int err = -ENXIO;
99666 - unsigned int mem_base, mem_size, irq;
99667 -
99668 - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
99669 - if (!res) {
99670 - dev_err(&pdev->dev, "no mmio resource defined\n");
99671 - goto err_out;
99672 - }
99673 - mem_base = res->start;
99674 - mem_size = resource_size(res);
99675 - irq = platform_get_irq(pdev, 0);
99676 -
99677 - if (!request_mem_region(mem_base, mem_size, DRV_NAME)) {
99678 - dev_err(&pdev->dev, "no memory region available\n");
99679 - err = -EBUSY;
99680 - goto err_out;
99681 - }
99682 -
99683 - err = -ENOMEM;
99684 - dev = alloc_etherdev(sizeof(*bp));
99685 - if (!dev) {
99686 - dev_err(&pdev->dev, "etherdev alloc failed, aborting.\n");
99687 - goto err_out;
99688 - }
99689 -
99690 - /* TODO: Actually, we have some interesting features... */
99691 - dev->features |= 0;
99692 -
99693 - bp = netdev_priv(dev);
99694 - bp->dev = dev;
99695 -
99696 - SET_NETDEV_DEV(dev, &pdev->dev);
99697 -
99698 - spin_lock_init(&bp->lock);
99699 -
99700 - bp->regs = ioremap(mem_base, mem_size);
99701 - if (!bp->regs) {
99702 - dev_err(&pdev->dev, "failed to map registers, aborting.\n");
99703 - err = -ENOMEM;
99704 - goto err_out_free_dev;
99705 - }
99706 -
99707 - dev->irq = irq;
99708 - err = request_irq(dev->irq, dnet_interrupt, 0, DRV_NAME, dev);
99709 - if (err) {
99710 - dev_err(&pdev->dev, "Unable to request IRQ %d (error %d)\n",
99711 - irq, err);
99712 - goto err_out_iounmap;
99713 - }
99714 -
99715 - dev->netdev_ops = &dnet_netdev_ops;
99716 - netif_napi_add(dev, &bp->napi, dnet_poll, 64);
99717 - dev->ethtool_ops = &dnet_ethtool_ops;
99718 -
99719 - dev->base_addr = (unsigned long)bp->regs;
99720 -
99721 - bp->capabilities = dnet_readl(bp, VERCAPS) & DNET_CAPS_MASK;
99722 -
99723 - dnet_get_hwaddr(bp);
99724 -
99725 - if (!is_valid_ether_addr(dev->dev_addr)) {
99726 - /* choose a random ethernet address */
99727 - random_ether_addr(dev->dev_addr);
99728 - __dnet_set_hwaddr(bp);
99729 - }
99730 -
99731 - err = register_netdev(dev);
99732 - if (err) {
99733 - dev_err(&pdev->dev, "Cannot register net device, aborting.\n");
99734 - goto err_out_free_irq;
99735 - }
99736 -
99737 - /* register the PHY board fixup (for Marvell 88E1111) */
99738 - err = phy_register_fixup_for_uid(0x01410cc0, 0xfffffff0,
99739 - dnet_phy_marvell_fixup);
99740 - /* we can live without it, so just issue a warning */
99741 - if (err)
99742 - dev_warn(&pdev->dev, "Cannot register PHY board fixup.\n");
99743 -
99744 - if (dnet_mii_init(bp) != 0)
99745 - goto err_out_unregister_netdev;
99746 -
99747 - dev_info(&pdev->dev, "Dave DNET at 0x%p (0x%08x) irq %d %pM\n",
99748 - bp->regs, mem_base, dev->irq, dev->dev_addr);
99749 - dev_info(&pdev->dev, "has %smdio, %sirq, %sgigabit, %sdma \n",
99750 - (bp->capabilities & DNET_HAS_MDIO) ? "" : "no ",
99751 - (bp->capabilities & DNET_HAS_IRQ) ? "" : "no ",
99752 - (bp->capabilities & DNET_HAS_GIGABIT) ? "" : "no ",
99753 - (bp->capabilities & DNET_HAS_DMA) ? "" : "no ");
99754 - phydev = bp->phy_dev;
99755 - dev_info(&pdev->dev, "attached PHY driver [%s] "
99756 - "(mii_bus:phy_addr=%s, irq=%d)\n",
99757 - phydev->drv->name, dev_name(&phydev->dev), phydev->irq);
99758 -
99759 - return 0;
99760 -
99761 -err_out_unregister_netdev:
99762 - unregister_netdev(dev);
99763 -err_out_free_irq:
99764 - free_irq(dev->irq, dev);
99765 -err_out_iounmap:
99766 - iounmap(bp->regs);
99767 -err_out_free_dev:
99768 - free_netdev(dev);
99769 -err_out:
99770 - return err;
99771 -}
99772 -
99773 -static int __devexit dnet_remove(struct platform_device *pdev)
99774 -{
99775 -
99776 - struct net_device *dev;
99777 - struct dnet *bp;
99778 -
99779 - dev = platform_get_drvdata(pdev);
99780 -
99781 - if (dev) {
99782 - bp = netdev_priv(dev);
99783 - if (bp->phy_dev)
99784 - phy_disconnect(bp->phy_dev);
99785 - mdiobus_unregister(bp->mii_bus);
99786 - kfree(bp->mii_bus->irq);
99787 - mdiobus_free(bp->mii_bus);
99788 - unregister_netdev(dev);
99789 - free_irq(dev->irq, dev);
99790 - iounmap(bp->regs);
99791 - free_netdev(dev);
99792 - }
99793 -
99794 - return 0;
99795 -}
99796 -
99797 -static struct platform_driver dnet_driver = {
99798 - .probe = dnet_probe,
99799 - .remove = __devexit_p(dnet_remove),
99800 - .driver = {
99801 - .name = "dnet",
99802 - },
99803 -};
99804 -
99805 -static int __init dnet_init(void)
99806 -{
99807 - return platform_driver_register(&dnet_driver);
99808 -}
99809 -
99810 -static void __exit dnet_exit(void)
99811 -{
99812 - platform_driver_unregister(&dnet_driver);
99813 -}
99814 -
99815 -module_init(dnet_init);
99816 -module_exit(dnet_exit);
99817 -
99818 -MODULE_LICENSE("GPL");
99819 -MODULE_DESCRIPTION("Dave DNET Ethernet driver");
99820 -MODULE_AUTHOR("Ilya Yanok <yanok@emcraft.com>, "
99821 - "Matteo Vit <matteo.vit@dave.eu>");
99822 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/dnet.h linux-2.6.29-rc3.owrt/drivers/net/dnet.h
99823 --- linux-2.6.29.owrt/drivers/net/dnet.h 2009-05-10 22:04:38.000000000 +0200
99824 +++ linux-2.6.29-rc3.owrt/drivers/net/dnet.h 1970-01-01 01:00:00.000000000 +0100
99825 @@ -1,225 +0,0 @@
99826 -/*
99827 - * Dave DNET Ethernet Controller driver
99828 - *
99829 - * Copyright (C) 2008 Dave S.r.l. <www.dave.eu>
99830 - *
99831 - * This program is free software; you can redistribute it and/or modify
99832 - * it under the terms of the GNU General Public License version 2 as
99833 - * published by the Free Software Foundation.
99834 - */
99835 -#ifndef _DNET_H
99836 -#define _DNET_H
99837 -
99838 -#define DRV_NAME "dnet"
99839 -#define DRV_VERSION "0.9.1"
99840 -#define PFX DRV_NAME ": "
99841 -
99842 -/* Register access macros */
99843 -#define dnet_writel(port, value, reg) \
99844 - writel((value), (port)->regs + DNET_##reg)
99845 -#define dnet_readl(port, reg) readl((port)->regs + DNET_##reg)
99846 -
99847 -/* ALL DNET FIFO REGISTERS */
99848 -#define DNET_RX_LEN_FIFO 0x000 /* RX_LEN_FIFO */
99849 -#define DNET_RX_DATA_FIFO 0x004 /* RX_DATA_FIFO */
99850 -#define DNET_TX_LEN_FIFO 0x008 /* TX_LEN_FIFO */
99851 -#define DNET_TX_DATA_FIFO 0x00C /* TX_DATA_FIFO */
99852 -
99853 -/* ALL DNET CONTROL/STATUS REGISTERS OFFSETS */
99854 -#define DNET_VERCAPS 0x100 /* VERCAPS */
99855 -#define DNET_INTR_SRC 0x104 /* INTR_SRC */
99856 -#define DNET_INTR_ENB 0x108 /* INTR_ENB */
99857 -#define DNET_RX_STATUS 0x10C /* RX_STATUS */
99858 -#define DNET_TX_STATUS 0x110 /* TX_STATUS */
99859 -#define DNET_RX_FRAMES_CNT 0x114 /* RX_FRAMES_CNT */
99860 -#define DNET_TX_FRAMES_CNT 0x118 /* TX_FRAMES_CNT */
99861 -#define DNET_RX_FIFO_TH 0x11C /* RX_FIFO_TH */
99862 -#define DNET_TX_FIFO_TH 0x120 /* TX_FIFO_TH */
99863 -#define DNET_SYS_CTL 0x124 /* SYS_CTL */
99864 -#define DNET_PAUSE_TMR 0x128 /* PAUSE_TMR */
99865 -#define DNET_RX_FIFO_WCNT 0x12C /* RX_FIFO_WCNT */
99866 -#define DNET_TX_FIFO_WCNT 0x130 /* TX_FIFO_WCNT */
99867 -
99868 -/* ALL DNET MAC REGISTERS */
99869 -#define DNET_MACREG_DATA 0x200 /* Mac-Reg Data */
99870 -#define DNET_MACREG_ADDR 0x204 /* Mac-Reg Addr */
99871 -
99872 -/* ALL DNET RX STATISTICS COUNTERS */
99873 -#define DNET_RX_PKT_IGNR_CNT 0x300
99874 -#define DNET_RX_LEN_CHK_ERR_CNT 0x304
99875 -#define DNET_RX_LNG_FRM_CNT 0x308
99876 -#define DNET_RX_SHRT_FRM_CNT 0x30C
99877 -#define DNET_RX_IPG_VIOL_CNT 0x310
99878 -#define DNET_RX_CRC_ERR_CNT 0x314
99879 -#define DNET_RX_OK_PKT_CNT 0x318
99880 -#define DNET_RX_CTL_FRM_CNT 0x31C
99881 -#define DNET_RX_PAUSE_FRM_CNT 0x320
99882 -#define DNET_RX_MULTICAST_CNT 0x324
99883 -#define DNET_RX_BROADCAST_CNT 0x328
99884 -#define DNET_RX_VLAN_TAG_CNT 0x32C
99885 -#define DNET_RX_PRE_SHRINK_CNT 0x330
99886 -#define DNET_RX_DRIB_NIB_CNT 0x334
99887 -#define DNET_RX_UNSUP_OPCD_CNT 0x338
99888 -#define DNET_RX_BYTE_CNT 0x33C
99889 -
99890 -/* DNET TX STATISTICS COUNTERS */
99891 -#define DNET_TX_UNICAST_CNT 0x400
99892 -#define DNET_TX_PAUSE_FRM_CNT 0x404
99893 -#define DNET_TX_MULTICAST_CNT 0x408
99894 -#define DNET_TX_BRDCAST_CNT 0x40C
99895 -#define DNET_TX_VLAN_TAG_CNT 0x410
99896 -#define DNET_TX_BAD_FCS_CNT 0x414
99897 -#define DNET_TX_JUMBO_CNT 0x418
99898 -#define DNET_TX_BYTE_CNT 0x41C
99899 -
99900 -/* SOME INTERNAL MAC-CORE REGISTER */
99901 -#define DNET_INTERNAL_MODE_REG 0x0
99902 -#define DNET_INTERNAL_RXTX_CONTROL_REG 0x2
99903 -#define DNET_INTERNAL_MAX_PKT_SIZE_REG 0x4
99904 -#define DNET_INTERNAL_IGP_REG 0x8
99905 -#define DNET_INTERNAL_MAC_ADDR_0_REG 0xa
99906 -#define DNET_INTERNAL_MAC_ADDR_1_REG 0xc
99907 -#define DNET_INTERNAL_MAC_ADDR_2_REG 0xe
99908 -#define DNET_INTERNAL_TX_RX_STS_REG 0x12
99909 -#define DNET_INTERNAL_GMII_MNG_CTL_REG 0x14
99910 -#define DNET_INTERNAL_GMII_MNG_DAT_REG 0x16
99911 -
99912 -#define DNET_INTERNAL_GMII_MNG_CMD_FIN (1 << 14)
99913 -
99914 -#define DNET_INTERNAL_WRITE (1 << 31)
99915 -
99916 -/* MAC-CORE REGISTER FIELDS */
99917 -
99918 -/* MAC-CORE MODE REGISTER FIELDS */
99919 -#define DNET_INTERNAL_MODE_GBITEN (1 << 0)
99920 -#define DNET_INTERNAL_MODE_FCEN (1 << 1)
99921 -#define DNET_INTERNAL_MODE_RXEN (1 << 2)
99922 -#define DNET_INTERNAL_MODE_TXEN (1 << 3)
99923 -
99924 -/* MAC-CORE RXTX CONTROL REGISTER FIELDS */
99925 -#define DNET_INTERNAL_RXTX_CONTROL_RXSHORTFRAME (1 << 8)
99926 -#define DNET_INTERNAL_RXTX_CONTROL_RXBROADCAST (1 << 7)
99927 -#define DNET_INTERNAL_RXTX_CONTROL_RXMULTICAST (1 << 4)
99928 -#define DNET_INTERNAL_RXTX_CONTROL_RXPAUSE (1 << 3)
99929 -#define DNET_INTERNAL_RXTX_CONTROL_DISTXFCS (1 << 2)
99930 -#define DNET_INTERNAL_RXTX_CONTROL_DISCFXFCS (1 << 1)
99931 -#define DNET_INTERNAL_RXTX_CONTROL_ENPROMISC (1 << 0)
99932 -#define DNET_INTERNAL_RXTX_CONTROL_DROPCONTROL (1 << 6)
99933 -#define DNET_INTERNAL_RXTX_CONTROL_ENABLEHALFDUP (1 << 5)
99934 -
99935 -/* SYSTEM CONTROL REGISTER FIELDS */
99936 -#define DNET_SYS_CTL_IGNORENEXTPKT (1 << 0)
99937 -#define DNET_SYS_CTL_SENDPAUSE (1 << 2)
99938 -#define DNET_SYS_CTL_RXFIFOFLUSH (1 << 3)
99939 -#define DNET_SYS_CTL_TXFIFOFLUSH (1 << 4)
99940 -
99941 -/* TX STATUS REGISTER FIELDS */
99942 -#define DNET_TX_STATUS_FIFO_ALMOST_EMPTY (1 << 2)
99943 -#define DNET_TX_STATUS_FIFO_ALMOST_FULL (1 << 1)
99944 -
99945 -/* INTERRUPT SOURCE REGISTER FIELDS */
99946 -#define DNET_INTR_SRC_TX_PKTSENT (1 << 0)
99947 -#define DNET_INTR_SRC_TX_FIFOAF (1 << 1)
99948 -#define DNET_INTR_SRC_TX_FIFOAE (1 << 2)
99949 -#define DNET_INTR_SRC_TX_DISCFRM (1 << 3)
99950 -#define DNET_INTR_SRC_TX_FIFOFULL (1 << 4)
99951 -#define DNET_INTR_SRC_RX_CMDFIFOAF (1 << 8)
99952 -#define DNET_INTR_SRC_RX_CMDFIFOFF (1 << 9)
99953 -#define DNET_INTR_SRC_RX_DATAFIFOFF (1 << 10)
99954 -#define DNET_INTR_SRC_TX_SUMMARY (1 << 16)
99955 -#define DNET_INTR_SRC_RX_SUMMARY (1 << 17)
99956 -#define DNET_INTR_SRC_PHY (1 << 19)
99957 -
99958 -/* INTERRUPT ENABLE REGISTER FIELDS */
99959 -#define DNET_INTR_ENB_TX_PKTSENT (1 << 0)
99960 -#define DNET_INTR_ENB_TX_FIFOAF (1 << 1)
99961 -#define DNET_INTR_ENB_TX_FIFOAE (1 << 2)
99962 -#define DNET_INTR_ENB_TX_DISCFRM (1 << 3)
99963 -#define DNET_INTR_ENB_TX_FIFOFULL (1 << 4)
99964 -#define DNET_INTR_ENB_RX_PKTRDY (1 << 8)
99965 -#define DNET_INTR_ENB_RX_FIFOAF (1 << 9)
99966 -#define DNET_INTR_ENB_RX_FIFOERR (1 << 10)
99967 -#define DNET_INTR_ENB_RX_ERROR (1 << 11)
99968 -#define DNET_INTR_ENB_RX_FIFOFULL (1 << 12)
99969 -#define DNET_INTR_ENB_RX_FIFOAE (1 << 13)
99970 -#define DNET_INTR_ENB_TX_SUMMARY (1 << 16)
99971 -#define DNET_INTR_ENB_RX_SUMMARY (1 << 17)
99972 -#define DNET_INTR_ENB_GLOBAL_ENABLE (1 << 18)
99973 -
99974 -/* default values:
99975 - * almost empty = less than one full sized ethernet frame (no jumbo) inside
99976 - * the fifo almost full = can write less than one full sized ethernet frame
99977 - * (no jumbo) inside the fifo
99978 - */
99979 -#define DNET_CFG_TX_FIFO_FULL_THRES 25
99980 -#define DNET_CFG_RX_FIFO_FULL_THRES 20
99981 -
99982 -/*
99983 - * Capabilities. Used by the driver to know the capabilities that the ethernet
99984 - * controller inside the FPGA have.
99985 - */
99986 -
99987 -#define DNET_HAS_MDIO (1 << 0)
99988 -#define DNET_HAS_IRQ (1 << 1)
99989 -#define DNET_HAS_GIGABIT (1 << 2)
99990 -#define DNET_HAS_DMA (1 << 3)
99991 -
99992 -#define DNET_HAS_MII (1 << 4) /* or GMII */
99993 -#define DNET_HAS_RMII (1 << 5) /* or RGMII */
99994 -
99995 -#define DNET_CAPS_MASK 0xFFFF
99996 -
99997 -#define DNET_FIFO_SIZE 1024 /* 1K x 32 bit */
99998 -#define DNET_FIFO_TX_DATA_AF_TH (DNET_FIFO_SIZE - 384) /* 384 = 1536 / 4 */
99999 -#define DNET_FIFO_TX_DATA_AE_TH 384
100000 -
100001 -#define DNET_FIFO_RX_CMD_AF_TH (1 << 16) /* just one frame inside the FIFO */
100002 -
100003 -/*
100004 - * Hardware-collected statistics.
100005 - */
100006 -struct dnet_stats {
100007 - u32 rx_pkt_ignr;
100008 - u32 rx_len_chk_err;
100009 - u32 rx_lng_frm;
100010 - u32 rx_shrt_frm;
100011 - u32 rx_ipg_viol;
100012 - u32 rx_crc_err;
100013 - u32 rx_ok_pkt;
100014 - u32 rx_ctl_frm;
100015 - u32 rx_pause_frm;
100016 - u32 rx_multicast;
100017 - u32 rx_broadcast;
100018 - u32 rx_vlan_tag;
100019 - u32 rx_pre_shrink;
100020 - u32 rx_drib_nib;
100021 - u32 rx_unsup_opcd;
100022 - u32 rx_byte;
100023 - u32 tx_unicast;
100024 - u32 tx_pause_frm;
100025 - u32 tx_multicast;
100026 - u32 tx_brdcast;
100027 - u32 tx_vlan_tag;
100028 - u32 tx_bad_fcs;
100029 - u32 tx_jumbo;
100030 - u32 tx_byte;
100031 -};
100032 -
100033 -struct dnet {
100034 - void __iomem *regs;
100035 - spinlock_t lock;
100036 - struct platform_device *pdev;
100037 - struct net_device *dev;
100038 - struct dnet_stats hw_stats;
100039 - unsigned int capabilities; /* read from FPGA */
100040 - struct napi_struct napi;
100041 -
100042 - /* PHY stuff */
100043 - struct mii_bus *mii_bus;
100044 - struct phy_device *phy_dev;
100045 - unsigned int link;
100046 - unsigned int speed;
100047 - unsigned int duplex;
100048 -};
100049 -
100050 -#endif /* _DNET_H */
100051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/e1000/e1000_main.c linux-2.6.29-rc3.owrt/drivers/net/e1000/e1000_main.c
100052 --- linux-2.6.29.owrt/drivers/net/e1000/e1000_main.c 2009-05-10 22:04:38.000000000 +0200
100053 +++ linux-2.6.29-rc3.owrt/drivers/net/e1000/e1000_main.c 2009-05-10 23:48:28.000000000 +0200
100054 @@ -31,7 +31,7 @@
100055
100056 char e1000_driver_name[] = "e1000";
100057 static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
100058 -#define DRV_VERSION "7.3.21-k3-NAPI"
100059 +#define DRV_VERSION "7.3.20-k3-NAPI"
100060 const char e1000_driver_version[] = DRV_VERSION;
100061 static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";
100062
100063 @@ -940,7 +940,7 @@
100064 err = pci_enable_device(pdev);
100065 } else {
100066 bars = pci_select_bars(pdev, IORESOURCE_MEM);
100067 - err = pci_enable_device_mem(pdev);
100068 + err = pci_enable_device(pdev);
100069 }
100070 if (err)
100071 return err;
100072 @@ -3712,7 +3712,7 @@
100073 struct e1000_hw *hw = &adapter->hw;
100074 u32 rctl, icr = er32(ICR);
100075
100076 - if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags)))
100077 + if (unlikely(!icr))
100078 return IRQ_NONE; /* Not our interrupt */
100079
100080 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
100081 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/forcedeth.c linux-2.6.29-rc3.owrt/drivers/net/forcedeth.c
100082 --- linux-2.6.29.owrt/drivers/net/forcedeth.c 2009-05-10 22:04:38.000000000 +0200
100083 +++ linux-2.6.29-rc3.owrt/drivers/net/forcedeth.c 2009-05-10 23:48:28.000000000 +0200
100084 @@ -6011,20 +6011,9 @@
100085 if (netif_running(dev))
100086 nv_close(dev);
100087
100088 - /*
100089 - * Restore the MAC so a kernel started by kexec won't get confused.
100090 - * If we really go for poweroff, we must not restore the MAC,
100091 - * otherwise the MAC for WOL will be reversed at least on some boards.
100092 - */
100093 - if (system_state != SYSTEM_POWER_OFF) {
100094 - nv_restore_mac_addr(pdev);
100095 - }
100096 + nv_restore_mac_addr(pdev);
100097
100098 pci_disable_device(pdev);
100099 - /*
100100 - * Apparently it is not possible to reinitialise from D3 hot,
100101 - * only put the device into D3 if we really go for poweroff.
100102 - */
100103 if (system_state == SYSTEM_POWER_OFF) {
100104 if (pci_enable_wake(pdev, PCI_D3cold, np->wolenabled))
100105 pci_enable_wake(pdev, PCI_D3hot, np->wolenabled);
100106 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/gianfar.c linux-2.6.29-rc3.owrt/drivers/net/gianfar.c
100107 --- linux-2.6.29.owrt/drivers/net/gianfar.c 2009-05-10 22:04:38.000000000 +0200
100108 +++ linux-2.6.29-rc3.owrt/drivers/net/gianfar.c 2009-05-10 23:48:28.000000000 +0200
100109 @@ -351,9 +351,6 @@
100110 /* Reset MAC layer */
100111 gfar_write(&priv->regs->maccfg1, MACCFG1_SOFT_RESET);
100112
100113 - /* We need to delay at least 3 TX clocks */
100114 - udelay(2);
100115 -
100116 tempval = (MACCFG1_TX_FLOW | MACCFG1_RX_FLOW);
100117 gfar_write(&priv->regs->maccfg1, tempval);
100118
100119 @@ -1284,7 +1281,7 @@
100120 spin_lock_irqsave(&priv->txlock, flags);
100121
100122 /* check if there is space to queue this packet */
100123 - if ((nr_frags+1) > priv->num_txbdfree) {
100124 + if (nr_frags > priv->num_txbdfree) {
100125 /* no space, stop the queue */
100126 netif_stop_queue(dev);
100127 dev->stats.tx_fifo_errors++;
100128 @@ -1629,12 +1626,6 @@
100129 if (netif_rx_schedule_prep(&priv->napi)) {
100130 gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED);
100131 __netif_rx_schedule(&priv->napi);
100132 - } else {
100133 - /*
100134 - * Clear IEVENT, so interrupts aren't called again
100135 - * because of the packets that have already arrived.
100136 - */
100137 - gfar_write(&priv->regs->ievent, IEVENT_RTX_MASK);
100138 }
100139
100140 spin_unlock(&priv->rxlock);
100141 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/gianfar.h linux-2.6.29-rc3.owrt/drivers/net/gianfar.h
100142 --- linux-2.6.29.owrt/drivers/net/gianfar.h 2009-05-10 22:04:38.000000000 +0200
100143 +++ linux-2.6.29-rc3.owrt/drivers/net/gianfar.h 2009-05-10 23:48:28.000000000 +0200
100144 @@ -312,7 +312,7 @@
100145 #define ATTRELI_EI(x) (x)
100146
100147 #define BD_LFLAG(flags) ((flags) << 16)
100148 -#define BD_LENGTH_MASK 0x0000ffff
100149 +#define BD_LENGTH_MASK 0x00ff
100150
100151 /* TxBD status field bits */
100152 #define TXBD_READY 0x8000
100153 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/gianfar_mii.c linux-2.6.29-rc3.owrt/drivers/net/gianfar_mii.c
100154 --- linux-2.6.29.owrt/drivers/net/gianfar_mii.c 2009-05-10 22:04:38.000000000 +0200
100155 +++ linux-2.6.29-rc3.owrt/drivers/net/gianfar_mii.c 2009-05-10 23:48:28.000000000 +0200
100156 @@ -234,8 +234,6 @@
100157 if (NULL == new_bus)
100158 return -ENOMEM;
100159
100160 - device_init_wakeup(&ofdev->dev, 1);
100161 -
100162 new_bus->name = "Gianfar MII Bus",
100163 new_bus->read = &gfar_mdio_read,
100164 new_bus->write = &gfar_mdio_write,
100165 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/hp-plus.c linux-2.6.29-rc3.owrt/drivers/net/hp-plus.c
100166 --- linux-2.6.29.owrt/drivers/net/hp-plus.c 2009-05-10 22:04:38.000000000 +0200
100167 +++ linux-2.6.29-rc3.owrt/drivers/net/hp-plus.c 2009-05-10 23:48:28.000000000 +0200
100168 @@ -467,7 +467,7 @@
100169 if (this_dev != 0) break; /* only autoprobe 1st one */
100170 printk(KERN_NOTICE "hp-plus.c: Presently autoprobing (not recommended) for a single card.\n");
100171 }
100172 - dev = alloc_eip_netdev();
100173 + dev = alloc_ei_netdev();
100174 if (!dev)
100175 break;
100176 dev->irq = irq[this_dev];
100177 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ibm_newemac/core.c linux-2.6.29-rc3.owrt/drivers/net/ibm_newemac/core.c
100178 --- linux-2.6.29.owrt/drivers/net/ibm_newemac/core.c 2009-05-10 22:04:38.000000000 +0200
100179 +++ linux-2.6.29-rc3.owrt/drivers/net/ibm_newemac/core.c 2009-05-10 23:48:28.000000000 +0200
100180 @@ -2594,9 +2594,6 @@
100181 if (of_device_is_compatible(np, "ibm,emac-460ex") ||
100182 of_device_is_compatible(np, "ibm,emac-460gt"))
100183 dev->features |= EMAC_FTR_460EX_PHY_CLK_FIX;
100184 - if (of_device_is_compatible(np, "ibm,emac-405ex") ||
100185 - of_device_is_compatible(np, "ibm,emac-405exr"))
100186 - dev->features |= EMAC_FTR_440EP_PHY_CLK_FIX;
100187 } else if (of_device_is_compatible(np, "ibm,emac4")) {
100188 dev->features |= EMAC_FTR_EMAC4;
100189 if (of_device_is_compatible(np, "ibm,emac-440gx"))
100190 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ibm_newemac/phy.c linux-2.6.29-rc3.owrt/drivers/net/ibm_newemac/phy.c
100191 --- linux-2.6.29.owrt/drivers/net/ibm_newemac/phy.c 2009-05-10 22:04:38.000000000 +0200
100192 +++ linux-2.6.29-rc3.owrt/drivers/net/ibm_newemac/phy.c 2009-05-10 23:48:28.000000000 +0200
100193 @@ -60,7 +60,7 @@
100194
100195 udelay(300);
100196
100197 - while (--limit) {
100198 + while (limit--) {
100199 val = phy_read(phy, MII_BMCR);
100200 if (val >= 0 && (val & BMCR_RESET) == 0)
100201 break;
100202 @@ -84,7 +84,7 @@
100203
100204 udelay(300);
100205
100206 - while (--limit) {
100207 + while (limit--) {
100208 val = gpcs_phy_read(phy, MII_BMCR);
100209 if (val >= 0 && (val & BMCR_RESET) == 0)
100210 break;
100211 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/igb/e1000_82575.c linux-2.6.29-rc3.owrt/drivers/net/igb/e1000_82575.c
100212 --- linux-2.6.29.owrt/drivers/net/igb/e1000_82575.c 2009-05-10 22:04:38.000000000 +0200
100213 +++ linux-2.6.29-rc3.owrt/drivers/net/igb/e1000_82575.c 2009-05-10 23:48:28.000000000 +0200
100214 @@ -699,18 +699,11 @@
100215
100216 /* SGMII link check is done through the PCS register. */
100217 if ((hw->phy.media_type != e1000_media_type_copper) ||
100218 - (igb_sgmii_active_82575(hw))) {
100219 + (igb_sgmii_active_82575(hw)))
100220 ret_val = igb_get_pcs_speed_and_duplex_82575(hw, &speed,
100221 &duplex);
100222 - /*
100223 - * Use this flag to determine if link needs to be checked or
100224 - * not. If we have link clear the flag so that we do not
100225 - * continue to check for link.
100226 - */
100227 - hw->mac.get_link_status = !hw->mac.serdes_has_link;
100228 - } else {
100229 + else
100230 ret_val = igb_check_for_copper_link(hw);
100231 - }
100232
100233 return ret_val;
100234 }
100235 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/igb/igb.h linux-2.6.29-rc3.owrt/drivers/net/igb/igb.h
100236 --- linux-2.6.29.owrt/drivers/net/igb/igb.h 2009-05-10 22:04:38.000000000 +0200
100237 +++ linux-2.6.29-rc3.owrt/drivers/net/igb/igb.h 2009-05-10 23:48:28.000000000 +0200
100238 @@ -300,10 +300,11 @@
100239
100240 #define IGB_FLAG_HAS_MSI (1 << 0)
100241 #define IGB_FLAG_MSI_ENABLE (1 << 1)
100242 -#define IGB_FLAG_DCA_ENABLED (1 << 2)
100243 -#define IGB_FLAG_IN_NETPOLL (1 << 3)
100244 -#define IGB_FLAG_QUAD_PORT_A (1 << 4)
100245 -#define IGB_FLAG_NEED_CTX_IDX (1 << 5)
100246 +#define IGB_FLAG_HAS_DCA (1 << 2)
100247 +#define IGB_FLAG_DCA_ENABLED (1 << 3)
100248 +#define IGB_FLAG_IN_NETPOLL (1 << 5)
100249 +#define IGB_FLAG_QUAD_PORT_A (1 << 6)
100250 +#define IGB_FLAG_NEED_CTX_IDX (1 << 7)
100251
100252 enum e1000_state_t {
100253 __IGB_TESTING,
100254 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/igb/igb_main.c linux-2.6.29-rc3.owrt/drivers/net/igb/igb_main.c
100255 --- linux-2.6.29.owrt/drivers/net/igb/igb_main.c 2009-05-10 22:04:38.000000000 +0200
100256 +++ linux-2.6.29-rc3.owrt/drivers/net/igb/igb_main.c 2009-05-10 23:48:28.000000000 +0200
100257 @@ -206,11 +206,10 @@
100258
100259 global_quad_port_a = 0;
100260
100261 + ret = pci_register_driver(&igb_driver);
100262 #ifdef CONFIG_IGB_DCA
100263 dca_register_notify(&dca_notifier);
100264 #endif
100265 -
100266 - ret = pci_register_driver(&igb_driver);
100267 return ret;
100268 }
100269
100270 @@ -1023,10 +1022,11 @@
100271 struct net_device *netdev;
100272 struct igb_adapter *adapter;
100273 struct e1000_hw *hw;
100274 + struct pci_dev *us_dev;
100275 const struct e1000_info *ei = igb_info_tbl[ent->driver_data];
100276 unsigned long mmio_start, mmio_len;
100277 - int i, err, pci_using_dac;
100278 - u16 eeprom_data = 0;
100279 + int i, err, pci_using_dac, pos;
100280 + u16 eeprom_data = 0, state = 0;
100281 u16 eeprom_apme_mask = IGB_EEPROM_APME;
100282 u32 part_num;
100283 int bars, need_ioport;
100284 @@ -1061,6 +1061,27 @@
100285 }
100286 }
100287
100288 + /* 82575 requires that the pci-e link partner disable the L0s state */
100289 + switch (pdev->device) {
100290 + case E1000_DEV_ID_82575EB_COPPER:
100291 + case E1000_DEV_ID_82575EB_FIBER_SERDES:
100292 + case E1000_DEV_ID_82575GB_QUAD_COPPER:
100293 + us_dev = pdev->bus->self;
100294 + pos = pci_find_capability(us_dev, PCI_CAP_ID_EXP);
100295 + if (pos) {
100296 + pci_read_config_word(us_dev, pos + PCI_EXP_LNKCTL,
100297 + &state);
100298 + state &= ~PCIE_LINK_STATE_L0S;
100299 + pci_write_config_word(us_dev, pos + PCI_EXP_LNKCTL,
100300 + state);
100301 + dev_info(&pdev->dev,
100302 + "Disabling ASPM L0s upstream switch port %s\n",
100303 + pci_name(us_dev));
100304 + }
100305 + default:
100306 + break;
100307 + }
100308 +
100309 err = pci_request_selected_regions(pdev, bars, igb_driver_name);
100310 if (err)
100311 goto err_pci_reg;
100312 @@ -1135,10 +1156,11 @@
100313
100314 /* set flags */
100315 switch (hw->mac.type) {
100316 + case e1000_82576:
100317 case e1000_82575:
100318 + adapter->flags |= IGB_FLAG_HAS_DCA;
100319 adapter->flags |= IGB_FLAG_NEED_CTX_IDX;
100320 break;
100321 - case e1000_82576:
100322 default:
100323 break;
100324 }
100325 @@ -1288,7 +1310,8 @@
100326 goto err_register;
100327
100328 #ifdef CONFIG_IGB_DCA
100329 - if (dca_add_requester(&pdev->dev) == 0) {
100330 + if ((adapter->flags & IGB_FLAG_HAS_DCA) &&
100331 + (dca_add_requester(&pdev->dev) == 0)) {
100332 adapter->flags |= IGB_FLAG_DCA_ENABLED;
100333 dev_info(&pdev->dev, "DCA enabled\n");
100334 /* Always use CB2 mode, difference is masked
100335 @@ -1812,11 +1835,11 @@
100336 rctl |= E1000_RCTL_SECRC;
100337
100338 /*
100339 - * disable store bad packets and clear size bits.
100340 + * disable store bad packets, long packet enable, and clear size bits.
100341 */
100342 - rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_SZ_256);
100343 + rctl &= ~(E1000_RCTL_SBP | E1000_RCTL_LPE | E1000_RCTL_SZ_256);
100344
100345 - /* enable LPE when to prevent packets larger than max_frame_size */
100346 + if (adapter->netdev->mtu > ETH_DATA_LEN)
100347 rctl |= E1000_RCTL_LPE;
100348
100349 /* Setup buffer sizes */
100350 @@ -1842,7 +1865,7 @@
100351 */
100352 /* allocations using alloc_page take too long for regular MTU
100353 * so only enable packet split for jumbo frames */
100354 - if (adapter->netdev->mtu > ETH_DATA_LEN) {
100355 + if (rctl & E1000_RCTL_LPE) {
100356 adapter->rx_ps_hdr_size = IGB_RXBUFFER_128;
100357 srrctl |= adapter->rx_ps_hdr_size <<
100358 E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;
100359 @@ -3450,16 +3473,19 @@
100360 struct e1000_hw *hw = &adapter->hw;
100361 unsigned long event = *(unsigned long *)data;
100362
100363 + if (!(adapter->flags & IGB_FLAG_HAS_DCA))
100364 + goto out;
100365 +
100366 switch (event) {
100367 case DCA_PROVIDER_ADD:
100368 /* if already enabled, don't do it again */
100369 if (adapter->flags & IGB_FLAG_DCA_ENABLED)
100370 break;
100371 + adapter->flags |= IGB_FLAG_DCA_ENABLED;
100372 /* Always use CB2 mode, difference is masked
100373 * in the CB driver. */
100374 wr32(E1000_DCA_CTRL, 2);
100375 if (dca_add_requester(dev) == 0) {
100376 - adapter->flags |= IGB_FLAG_DCA_ENABLED;
100377 dev_info(&adapter->pdev->dev, "DCA enabled\n");
100378 igb_setup_dca(adapter);
100379 break;
100380 @@ -3476,7 +3502,7 @@
100381 }
100382 break;
100383 }
100384 -
100385 +out:
100386 return 0;
100387 }
100388
100389 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/irda/mcs7780.c linux-2.6.29-rc3.owrt/drivers/net/irda/mcs7780.c
100390 --- linux-2.6.29.owrt/drivers/net/irda/mcs7780.c 2009-05-10 22:04:38.000000000 +0200
100391 +++ linux-2.6.29-rc3.owrt/drivers/net/irda/mcs7780.c 2009-05-10 23:48:28.000000000 +0200
100392 @@ -585,7 +585,7 @@
100393 mcs_get_reg(mcs, MCS_RESV_REG, &rval);
100394 } while(cnt++ < 100 && (rval & MCS_IRINTX));
100395
100396 - if (cnt > 100) {
100397 + if(cnt >= 100) {
100398 IRDA_ERROR("unable to change speed\n");
100399 ret = -EIO;
100400 goto error;
100401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ixgbe/ixgbe_main.c linux-2.6.29-rc3.owrt/drivers/net/ixgbe/ixgbe_main.c
100402 --- linux-2.6.29.owrt/drivers/net/ixgbe/ixgbe_main.c 2009-05-10 22:04:38.000000000 +0200
100403 +++ linux-2.6.29-rc3.owrt/drivers/net/ixgbe/ixgbe_main.c 2009-05-10 23:48:28.000000000 +0200
100404 @@ -3973,7 +3973,6 @@
100405 .ndo_stop = ixgbe_close,
100406 .ndo_start_xmit = ixgbe_xmit_frame,
100407 .ndo_get_stats = ixgbe_get_stats,
100408 - .ndo_set_rx_mode = ixgbe_set_rx_mode,
100409 .ndo_set_multicast_list = ixgbe_set_rx_mode,
100410 .ndo_validate_addr = eth_validate_addr,
100411 .ndo_set_mac_address = ixgbe_set_mac,
100412 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/jme.c linux-2.6.29-rc3.owrt/drivers/net/jme.c
100413 --- linux-2.6.29.owrt/drivers/net/jme.c 2009-05-10 22:04:38.000000000 +0200
100414 +++ linux-2.6.29-rc3.owrt/drivers/net/jme.c 2009-05-10 23:48:28.000000000 +0200
100415 @@ -957,14 +957,13 @@
100416 goto out_inc;
100417
100418 i = atomic_read(&rxring->next_to_clean);
100419 - while (limit > 0) {
100420 + while (limit-- > 0) {
100421 rxdesc = rxring->desc;
100422 rxdesc += i;
100423
100424 if ((rxdesc->descwb.flags & cpu_to_le16(RXWBFLAG_OWN)) ||
100425 !(rxdesc->descwb.desccnt & RXWBDCNT_WBCPL))
100426 goto out;
100427 - --limit;
100428
100429 desccnt = rxdesc->descwb.desccnt & RXWBDCNT_DCNT;
100430
100431 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/Kconfig linux-2.6.29-rc3.owrt/drivers/net/Kconfig
100432 --- linux-2.6.29.owrt/drivers/net/Kconfig 2009-05-10 22:04:38.000000000 +0200
100433 +++ linux-2.6.29-rc3.owrt/drivers/net/Kconfig 2009-05-10 23:48:28.000000000 +0200
100434 @@ -1163,17 +1163,6 @@
100435 To compile this driver as a module, choose M here. The module
100436 will be called ni65.
100437
100438 -config DNET
100439 - tristate "Dave ethernet support (DNET)"
100440 - depends on NET_ETHERNET && HAS_IOMEM
100441 - select PHYLIB
100442 - help
100443 - The Dave ethernet interface (DNET) is found on Qong Board FPGA.
100444 - Say Y to include support for the DNET chip.
100445 -
100446 - To compile this driver as a module, choose M here: the module
100447 - will be called dnet.
100448 -
100449 source "drivers/net/tulip/Kconfig"
100450
100451 config AT1700
100452 @@ -2476,17 +2465,6 @@
100453 To compile this driver as a module, choose M here. The module
100454 will be called atl1e.
100455
100456 -config ATL1C
100457 - tristate "Atheros L1C Gigabit Ethernet support (EXPERIMENTAL)"
100458 - depends on PCI && EXPERIMENTAL
100459 - select CRC32
100460 - select MII
100461 - help
100462 - This driver supports the Atheros L1C gigabit ethernet adapter.
100463 -
100464 - To compile this driver as a module, choose M here. The module
100465 - will be called atl1c.
100466 -
100467 config JME
100468 tristate "JMicron(R) PCI-Express Gigabit Ethernet support"
100469 depends on PCI
100470 @@ -2753,8 +2731,6 @@
100471
100472 source "drivers/net/sfc/Kconfig"
100473
100474 -source "drivers/net/benet/Kconfig"
100475 -
100476 endif # NETDEV_10000
100477
100478 source "drivers/net/tokenring/Kconfig"
100479 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/Makefile linux-2.6.29-rc3.owrt/drivers/net/Makefile
100480 --- linux-2.6.29.owrt/drivers/net/Makefile 2009-05-10 22:04:38.000000000 +0200
100481 +++ linux-2.6.29-rc3.owrt/drivers/net/Makefile 2009-05-10 23:48:28.000000000 +0200
100482 @@ -17,12 +17,10 @@
100483 obj-$(CONFIG_ATL1) += atlx/
100484 obj-$(CONFIG_ATL2) += atlx/
100485 obj-$(CONFIG_ATL1E) += atl1e/
100486 -obj-$(CONFIG_ATL1C) += atl1c/
100487 obj-$(CONFIG_GIANFAR) += gianfar_driver.o
100488 obj-$(CONFIG_TEHUTI) += tehuti.o
100489 obj-$(CONFIG_ENIC) += enic/
100490 obj-$(CONFIG_JME) += jme.o
100491 -obj-$(CONFIG_BE2NET) += benet/
100492
100493 gianfar_driver-objs := gianfar.o \
100494 gianfar_ethtool.o \
100495 @@ -233,7 +231,6 @@
100496
100497 obj-$(CONFIG_XTENSA_XT2000_SONIC) += xtsonic.o
100498
100499 -obj-$(CONFIG_DNET) += dnet.o
100500 obj-$(CONFIG_MACB) += macb.o
100501
100502 obj-$(CONFIG_ARM) += arm/
100503 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/mv643xx_eth.c linux-2.6.29-rc3.owrt/drivers/net/mv643xx_eth.c
100504 --- linux-2.6.29.owrt/drivers/net/mv643xx_eth.c 2009-05-10 22:04:38.000000000 +0200
100505 +++ linux-2.6.29-rc3.owrt/drivers/net/mv643xx_eth.c 2009-05-10 23:48:28.000000000 +0200
100506 @@ -1175,7 +1175,7 @@
100507 {
100508 struct mib_counters *p = &mp->mib_counters;
100509
100510 - spin_lock_bh(&mp->mib_counters_lock);
100511 + spin_lock(&mp->mib_counters_lock);
100512 p->good_octets_received += mib_read(mp, 0x00);
100513 p->good_octets_received += (u64)mib_read(mp, 0x04) << 32;
100514 p->bad_octets_received += mib_read(mp, 0x08);
100515 @@ -1208,7 +1208,7 @@
100516 p->bad_crc_event += mib_read(mp, 0x74);
100517 p->collision += mib_read(mp, 0x78);
100518 p->late_collision += mib_read(mp, 0x7c);
100519 - spin_unlock_bh(&mp->mib_counters_lock);
100520 + spin_unlock(&mp->mib_counters_lock);
100521
100522 mod_timer(&mp->mib_counters_timer, jiffies + 30 * HZ);
100523 }
100524 @@ -1575,7 +1575,7 @@
100525 return;
100526 }
100527
100528 - mc_spec = kmalloc(0x200, GFP_ATOMIC);
100529 + mc_spec = kmalloc(0x200, GFP_KERNEL);
100530 if (mc_spec == NULL)
100531 goto oom;
100532 mc_other = mc_spec + (0x100 >> 2);
100533 @@ -2030,6 +2030,11 @@
100534 }
100535
100536 /*
100537 + * Add configured unicast address to address filter table.
100538 + */
100539 + mv643xx_eth_program_unicast_filter(mp->dev);
100540 +
100541 + /*
100542 * Receive all unmatched unicast, TCP, UDP, BPDU and broadcast
100543 * frames to RX queue #0, and include the pseudo-header when
100544 * calculating receive checksums.
100545 @@ -2042,11 +2047,6 @@
100546 wrlp(mp, PORT_CONFIG_EXT, 0x00000000);
100547
100548 /*
100549 - * Add configured unicast addresses to address filter table.
100550 - */
100551 - mv643xx_eth_program_unicast_filter(mp->dev);
100552 -
100553 - /*
100554 * Enable the receive queues.
100555 */
100556 for (i = 0; i < mp->rxq_count; i++) {
100557 @@ -2216,6 +2216,8 @@
100558 wrlp(mp, INT_MASK, 0x00000000);
100559 rdlp(mp, INT_MASK);
100560
100561 + del_timer_sync(&mp->mib_counters_timer);
100562 +
100563 napi_disable(&mp->napi);
100564
100565 del_timer_sync(&mp->rx_oom);
100566 @@ -2227,7 +2229,6 @@
100567 port_reset(mp);
100568 mv643xx_eth_get_stats(dev);
100569 mib_counters_update(mp);
100570 - del_timer_sync(&mp->mib_counters_timer);
100571
100572 skb_queue_purge(&mp->rx_recycle);
100573
100574 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/netxen/netxen_nic.h linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic.h
100575 --- linux-2.6.29.owrt/drivers/net/netxen/netxen_nic.h 2009-05-10 22:04:38.000000000 +0200
100576 +++ linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic.h 2009-05-10 23:48:29.000000000 +0200
100577 @@ -210,7 +210,7 @@
100578 #define MAX_CMD_DESCRIPTORS_HOST 1024
100579 #define MAX_RCV_DESCRIPTORS_1G 2048
100580 #define MAX_RCV_DESCRIPTORS_10G 4096
100581 -#define MAX_JUMBO_RCV_DESCRIPTORS 1024
100582 +#define MAX_JUMBO_RCV_DESCRIPTORS 512
100583 #define MAX_LRO_RCV_DESCRIPTORS 8
100584 #define MAX_RCVSTATUS_DESCRIPTORS MAX_RCV_DESCRIPTORS
100585 #define MAX_JUMBO_RCV_DESC MAX_JUMBO_RCV_DESCRIPTORS
100586 @@ -1203,7 +1203,7 @@
100587 #define NETXEN_IS_MSI_FAMILY(adapter) \
100588 ((adapter)->flags & (NETXEN_NIC_MSI_ENABLED | NETXEN_NIC_MSIX_ENABLED))
100589
100590 -#define MSIX_ENTRIES_PER_ADAPTER 1
100591 +#define MSIX_ENTRIES_PER_ADAPTER 8
100592 #define NETXEN_MSIX_TBL_SPACE 8192
100593 #define NETXEN_PCI_REG_MSIX_TBL 0x44
100594
100595 @@ -1595,6 +1595,7 @@
100596 }
100597
100598
100599 +int netxen_is_flash_supported(struct netxen_adapter *adapter);
100600 int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, __le64 *mac);
100601 int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, __le64 *mac);
100602 extern void netxen_change_ringparam(struct netxen_adapter *adapter);
100603 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/netxen/netxen_nic_hw.c linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic_hw.c
100604 --- linux-2.6.29.owrt/drivers/net/netxen/netxen_nic_hw.c 2009-05-10 22:04:38.000000000 +0200
100605 +++ linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic_hw.c 2009-05-10 23:48:29.000000000 +0200
100606 @@ -706,6 +706,28 @@
100607 return rc;
100608 }
100609
100610 +int netxen_is_flash_supported(struct netxen_adapter *adapter)
100611 +{
100612 + const int locs[] = { 0, 0x4, 0x100, 0x4000, 0x4128 };
100613 + int addr, val01, val02, i, j;
100614 +
100615 + /* if the flash size less than 4Mb, make huge war cry and die */
100616 + for (j = 1; j < 4; j++) {
100617 + addr = j * NETXEN_NIC_WINDOW_MARGIN;
100618 + for (i = 0; i < ARRAY_SIZE(locs); i++) {
100619 + if (netxen_rom_fast_read(adapter, locs[i], &val01) == 0
100620 + && netxen_rom_fast_read(adapter, (addr + locs[i]),
100621 + &val02) == 0) {
100622 + if (val01 == val02)
100623 + return -1;
100624 + } else
100625 + return -1;
100626 + }
100627 + }
100628 +
100629 + return 0;
100630 +}
100631 +
100632 static int netxen_get_flash_block(struct netxen_adapter *adapter, int base,
100633 int size, __le32 * buf)
100634 {
100635 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/netxen/netxen_nic_init.c linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic_init.c
100636 --- linux-2.6.29.owrt/drivers/net/netxen/netxen_nic_init.c 2009-05-10 22:04:38.000000000 +0200
100637 +++ linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic_init.c 2009-05-10 23:48:29.000000000 +0200
100638 @@ -947,10 +947,8 @@
100639 }
100640 for (i = 0; i < n; i++) {
100641 if (netxen_rom_fast_read(adapter, 8*i + 4*offset, &val) != 0 ||
100642 - netxen_rom_fast_read(adapter, 8*i + 4*offset + 4, &addr) != 0) {
100643 - kfree(buf);
100644 + netxen_rom_fast_read(adapter, 8*i + 4*offset + 4, &addr) != 0)
100645 return -EIO;
100646 - }
100647
100648 buf[i].addr = addr;
100649 buf[i].data = val;
100650 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/netxen/netxen_nic_main.c linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic_main.c
100651 --- linux-2.6.29.owrt/drivers/net/netxen/netxen_nic_main.c 2009-05-10 22:04:38.000000000 +0200
100652 +++ linux-2.6.29-rc3.owrt/drivers/net/netxen/netxen_nic_main.c 2009-05-10 23:48:29.000000000 +0200
100653 @@ -76,7 +76,6 @@
100654 #endif
100655 static irqreturn_t netxen_intr(int irq, void *data);
100656 static irqreturn_t netxen_msi_intr(int irq, void *data);
100657 -static irqreturn_t netxen_msix_intr(int irq, void *data);
100658
100659 /* PCI Device ID Table */
100660 #define ENTRY(device) \
100661 @@ -201,9 +200,9 @@
100662 adapter->pci_using_dac = 1;
100663 return 0;
100664 }
100665 -set_32_bit_mask:
100666 #endif /* CONFIG_IA64 */
100667
100668 +set_32_bit_mask:
100669 err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
100670 if (!err)
100671 err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK);
100672 @@ -372,6 +371,67 @@
100673 }
100674 }
100675
100676 +#define PCI_CAP_ID_GEN 0x10
100677 +
100678 +static void netxen_pcie_strap_init(struct netxen_adapter *adapter)
100679 +{
100680 + u32 pdevfuncsave;
100681 + u32 c8c9value = 0;
100682 + u32 chicken = 0;
100683 + u32 control = 0;
100684 + int i, pos;
100685 + struct pci_dev *pdev;
100686 +
100687 + pdev = adapter->pdev;
100688 +
100689 + adapter->hw_read_wx(adapter,
100690 + NETXEN_PCIE_REG(PCIE_CHICKEN3), &chicken, 4);
100691 + /* clear chicken3.25:24 */
100692 + chicken &= 0xFCFFFFFF;
100693 + /*
100694 + * if gen1 and B0, set F1020 - if gen 2, do nothing
100695 + * if gen2 set to F1000
100696 + */
100697 + pos = pci_find_capability(pdev, PCI_CAP_ID_GEN);
100698 + if (pos == 0xC0) {
100699 + pci_read_config_dword(pdev, pos + 0x10, &control);
100700 + if ((control & 0x000F0000) != 0x00020000) {
100701 + /* set chicken3.24 if gen1 */
100702 + chicken |= 0x01000000;
100703 + }
100704 + printk(KERN_INFO "%s Gen2 strapping detected\n",
100705 + netxen_nic_driver_name);
100706 + c8c9value = 0xF1000;
100707 + } else {
100708 + /* set chicken3.24 if gen1 */
100709 + chicken |= 0x01000000;
100710 + printk(KERN_INFO "%s Gen1 strapping detected\n",
100711 + netxen_nic_driver_name);
100712 + if (adapter->ahw.revision_id == NX_P3_B0)
100713 + c8c9value = 0xF1020;
100714 + else
100715 + c8c9value = 0;
100716 +
100717 + }
100718 + adapter->hw_write_wx(adapter,
100719 + NETXEN_PCIE_REG(PCIE_CHICKEN3), &chicken, 4);
100720 +
100721 + if (!c8c9value)
100722 + return;
100723 +
100724 + pdevfuncsave = pdev->devfn;
100725 + if (pdevfuncsave & 0x07)
100726 + return;
100727 +
100728 + for (i = 0; i < 8; i++) {
100729 + pci_read_config_dword(pdev, pos + 8, &control);
100730 + pci_read_config_dword(pdev, pos + 8, &control);
100731 + pci_write_config_dword(pdev, pos + 8, c8c9value);
100732 + pdev->devfn++;
100733 + }
100734 + pdev->devfn = pdevfuncsave;
100735 +}
100736 +
100737 static void netxen_set_msix_bit(struct pci_dev *pdev, int enable)
100738 {
100739 u32 control;
100740 @@ -405,6 +465,9 @@
100741 struct net_device *netdev = adapter->netdev;
100742 struct pci_dev *pdev = adapter->pdev;
100743
100744 + if (netxen_is_flash_supported(adapter) != 0)
100745 + return -EIO;
100746 +
100747 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
100748 if (netxen_p3_get_mac_addr(adapter, &mac_addr) != 0)
100749 return -EIO;
100750 @@ -585,12 +648,7 @@
100751 adapter->pci_mem_read = netxen_nic_pci_mem_read_2M;
100752 adapter->pci_mem_write = netxen_nic_pci_mem_write_2M;
100753
100754 - mem_ptr0 = pci_ioremap_bar(pdev, 0);
100755 - if (mem_ptr0 == NULL) {
100756 - dev_err(&pdev->dev, "failed to map PCI bar 0\n");
100757 - return -EIO;
100758 - }
100759 -
100760 + mem_ptr0 = ioremap(mem_base, mem_len);
100761 pci_len0 = mem_len;
100762 first_page_group_start = 0;
100763 first_page_group_end = 0;
100764 @@ -753,6 +811,9 @@
100765 }
100766 netxen_load_firmware(adapter);
100767
100768 + if (NX_IS_REVISION_P3(revision_id))
100769 + netxen_pcie_strap_init(adapter);
100770 +
100771 if (NX_IS_REVISION_P2(revision_id)) {
100772
100773 /* Initialize multicast addr pool owners */
100774 @@ -797,12 +858,9 @@
100775 * See if the firmware gave us a virtual-physical port mapping.
100776 */
100777 adapter->physical_port = adapter->portnum;
100778 - if (adapter->fw_major < 4) {
100779 - i = adapter->pci_read_normalize(adapter,
100780 - CRB_V2P(adapter->portnum));
100781 - if (i != 0x55555555)
100782 - adapter->physical_port = i;
100783 - }
100784 + i = adapter->pci_read_normalize(adapter, CRB_V2P(adapter->portnum));
100785 + if (i != 0x55555555)
100786 + adapter->physical_port = i;
100787
100788 adapter->flags &= ~(NETXEN_NIC_MSI_ENABLED | NETXEN_NIC_MSIX_ENABLED);
100789
100790 @@ -1026,9 +1084,7 @@
100791 for (ring = 0; ring < adapter->max_rds_rings; ring++)
100792 netxen_post_rx_buffers(adapter, ctx, ring);
100793 }
100794 - if (adapter->flags & NETXEN_NIC_MSIX_ENABLED)
100795 - handler = netxen_msix_intr;
100796 - else if (adapter->flags & NETXEN_NIC_MSI_ENABLED)
100797 + if (NETXEN_IS_MSI_FAMILY(adapter))
100798 handler = netxen_msi_intr;
100799 else {
100800 flags |= IRQF_SHARED;
100801 @@ -1556,14 +1612,6 @@
100802 return IRQ_HANDLED;
100803 }
100804
100805 -static irqreturn_t netxen_msix_intr(int irq, void *data)
100806 -{
100807 - struct netxen_adapter *adapter = data;
100808 -
100809 - napi_schedule(&adapter->napi);
100810 - return IRQ_HANDLED;
100811 -}
100812 -
100813 static int netxen_nic_poll(struct napi_struct *napi, int budget)
100814 {
100815 struct netxen_adapter *adapter = container_of(napi, struct netxen_adapter, napi);
100816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/pcmcia/3c574_cs.c linux-2.6.29-rc3.owrt/drivers/net/pcmcia/3c574_cs.c
100817 --- linux-2.6.29.owrt/drivers/net/pcmcia/3c574_cs.c 2009-05-10 22:04:38.000000000 +0200
100818 +++ linux-2.6.29-rc3.owrt/drivers/net/pcmcia/3c574_cs.c 2009-05-10 23:48:29.000000000 +0200
100819 @@ -1035,8 +1035,7 @@
100820 DEBUG(3, "%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n",
100821 dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus));
100822 while (!((rx_status = inw(ioaddr + RxStatus)) & 0x8000) &&
100823 - worklimit > 0) {
100824 - worklimit--;
100825 + (--worklimit >= 0)) {
100826 if (rx_status & 0x4000) { /* Error, update stats. */
100827 short error = rx_status & 0x3800;
100828 dev->stats.rx_errors++;
100829 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/pcmcia/3c589_cs.c linux-2.6.29-rc3.owrt/drivers/net/pcmcia/3c589_cs.c
100830 --- linux-2.6.29.owrt/drivers/net/pcmcia/3c589_cs.c 2009-05-10 22:04:38.000000000 +0200
100831 +++ linux-2.6.29-rc3.owrt/drivers/net/pcmcia/3c589_cs.c 2009-05-10 23:48:29.000000000 +0200
100832 @@ -857,8 +857,7 @@
100833 DEBUG(3, "%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n",
100834 dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RX_STATUS));
100835 while (!((rx_status = inw(ioaddr + RX_STATUS)) & 0x8000) &&
100836 - worklimit > 0) {
100837 - worklimit--;
100838 + (--worklimit >= 0)) {
100839 if (rx_status & 0x4000) { /* Error, update stats. */
100840 short error = rx_status & 0x3800;
100841 dev->stats.rx_errors++;
100842 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/pcmcia/pcnet_cs.c linux-2.6.29-rc3.owrt/drivers/net/pcmcia/pcnet_cs.c
100843 --- linux-2.6.29.owrt/drivers/net/pcmcia/pcnet_cs.c 2009-05-10 22:04:38.000000000 +0200
100844 +++ linux-2.6.29-rc3.owrt/drivers/net/pcmcia/pcnet_cs.c 2009-05-10 23:48:29.000000000 +0200
100845 @@ -586,7 +586,7 @@
100846 }
100847
100848 if ((link->conf.ConfigBase == 0x03c0)
100849 - && (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) {
100850 + && (link->manf_id == 0x149) && (link->card_id = 0xc1ab)) {
100851 printk(KERN_INFO "pcnet_cs: this is an AX88190 card!\n");
100852 printk(KERN_INFO "pcnet_cs: use axnet_cs instead.\n");
100853 goto failed;
100854 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/phy/mdio-gpio.c linux-2.6.29-rc3.owrt/drivers/net/phy/mdio-gpio.c
100855 --- linux-2.6.29.owrt/drivers/net/phy/mdio-gpio.c 2009-05-10 22:04:38.000000000 +0200
100856 +++ linux-2.6.29-rc3.owrt/drivers/net/phy/mdio-gpio.c 2009-05-10 23:48:29.000000000 +0200
100857 @@ -125,8 +125,6 @@
100858 if (gpio_request(bitbang->mdio, "mdio"))
100859 goto out_free_mdc;
100860
100861 - gpio_direction_output(bitbang->mdc, 0);
100862 -
100863 dev_set_drvdata(dev, new_bus);
100864
100865 ret = mdiobus_register(new_bus);
100866 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ps3_gelic_wireless.c linux-2.6.29-rc3.owrt/drivers/net/ps3_gelic_wireless.c
100867 --- linux-2.6.29.owrt/drivers/net/ps3_gelic_wireless.c 2009-05-10 22:04:38.000000000 +0200
100868 +++ linux-2.6.29-rc3.owrt/drivers/net/ps3_gelic_wireless.c 2009-05-10 23:48:29.000000000 +0200
100869 @@ -2168,7 +2168,7 @@
100870 complete(&wl->assoc_done);
100871 netif_carrier_on(port_to_netdev(wl_port(wl)));
100872 } else
100873 - pr_debug("%s: event %#llx under wpa\n",
100874 + pr_debug("%s: event %#lx under wpa\n",
100875 __func__, event);
100876 }
100877
100878 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/qlge/qlge.h linux-2.6.29-rc3.owrt/drivers/net/qlge/qlge.h
100879 --- linux-2.6.29.owrt/drivers/net/qlge/qlge.h 2009-05-10 22:04:38.000000000 +0200
100880 +++ linux-2.6.29-rc3.owrt/drivers/net/qlge/qlge.h 2009-05-10 23:48:29.000000000 +0200
100881 @@ -787,12 +787,12 @@
100882
100883 struct flash_params {
100884 u8 dev_id_str[4];
100885 - __le16 size;
100886 - __le16 csum;
100887 - __le16 ver;
100888 - __le16 sub_dev_id;
100889 + u16 size;
100890 + u16 csum;
100891 + u16 ver;
100892 + u16 sub_dev_id;
100893 u8 mac_addr[6];
100894 - __le16 res;
100895 + u16 res;
100896 };
100897
100898
100899 @@ -927,7 +927,6 @@
100900 u8 flags1;
100901 #define IB_MAC_IOCB_RSP_OI 0x01 /* Overide intr delay */
100902 #define IB_MAC_IOCB_RSP_I 0x02 /* Disble Intr Generation */
100903 -#define IB_MAC_CSUM_ERR_MASK 0x1c /* A mask to use for csum errs */
100904 #define IB_MAC_IOCB_RSP_TE 0x04 /* Checksum error */
100905 #define IB_MAC_IOCB_RSP_NU 0x08 /* No checksum rcvd */
100906 #define IB_MAC_IOCB_RSP_IE 0x10 /* IPv4 checksum error */
100907 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/qlge/qlge_main.c linux-2.6.29-rc3.owrt/drivers/net/qlge/qlge_main.c
100908 --- linux-2.6.29.owrt/drivers/net/qlge/qlge_main.c 2009-05-10 22:04:38.000000000 +0200
100909 +++ linux-2.6.29-rc3.owrt/drivers/net/qlge/qlge_main.c 2009-05-10 23:48:29.000000000 +0200
100910 @@ -641,7 +641,7 @@
100911
100912 }
100913
100914 -static int ql_read_flash_word(struct ql_adapter *qdev, int offset, __le32 *data)
100915 +static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data)
100916 {
100917 int status = 0;
100918 /* wait for reg to come ready */
100919 @@ -656,11 +656,8 @@
100920 FLASH_ADDR, FLASH_ADDR_RDY, FLASH_ADDR_ERR);
100921 if (status)
100922 goto exit;
100923 - /* This data is stored on flash as an array of
100924 - * __le32. Since ql_read32() returns cpu endian
100925 - * we need to swap it back.
100926 - */
100927 - *data = cpu_to_le32(ql_read32(qdev, FLASH_DATA));
100928 + /* get the data */
100929 + *data = ql_read32(qdev, FLASH_DATA);
100930 exit:
100931 return status;
100932 }
100933 @@ -669,20 +666,13 @@
100934 {
100935 int i;
100936 int status;
100937 - __le32 *p = (__le32 *)&qdev->flash;
100938 - u32 offset = 0;
100939 -
100940 - /* Second function's parameters follow the first
100941 - * function's.
100942 - */
100943 - if (qdev->func)
100944 - offset = sizeof(qdev->flash) / sizeof(u32);
100945 + u32 *p = (u32 *)&qdev->flash;
100946
100947 if (ql_sem_spinlock(qdev, SEM_FLASH_MASK))
100948 return -ETIMEDOUT;
100949
100950 for (i = 0; i < sizeof(qdev->flash) / sizeof(u32); i++, p++) {
100951 - status = ql_read_flash_word(qdev, i+offset, p);
100952 + status = ql_read_flash_word(qdev, i, p);
100953 if (status) {
100954 QPRINTK(qdev, IFUP, ERR, "Error reading flash.\n");
100955 goto exit;
100956 @@ -898,7 +888,6 @@
100957 lbq_desc->index);
100958 lbq_desc->p.lbq_page = alloc_page(GFP_ATOMIC);
100959 if (lbq_desc->p.lbq_page == NULL) {
100960 - rx_ring->lbq_clean_idx = clean_idx;
100961 QPRINTK(qdev, RX_STATUS, ERR,
100962 "Couldn't get a page.\n");
100963 return;
100964 @@ -908,9 +897,6 @@
100965 0, PAGE_SIZE,
100966 PCI_DMA_FROMDEVICE);
100967 if (pci_dma_mapping_error(qdev->pdev, map)) {
100968 - rx_ring->lbq_clean_idx = clean_idx;
100969 - put_page(lbq_desc->p.lbq_page);
100970 - lbq_desc->p.lbq_page = NULL;
100971 QPRINTK(qdev, RX_STATUS, ERR,
100972 "PCI mapping failed.\n");
100973 return;
100974 @@ -972,8 +958,6 @@
100975 if (pci_dma_mapping_error(qdev->pdev, map)) {
100976 QPRINTK(qdev, IFUP, ERR, "PCI mapping failed.\n");
100977 rx_ring->sbq_clean_idx = clean_idx;
100978 - dev_kfree_skb_any(sbq_desc->p.skb);
100979 - sbq_desc->p.skb = NULL;
100980 return;
100981 }
100982 pci_unmap_addr_set(sbq_desc, mapaddr, map);
100983 @@ -1436,32 +1420,18 @@
100984 if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_P) {
100985 QPRINTK(qdev, RX_STATUS, DEBUG, "Promiscuous Packet.\n");
100986 }
100987 -
100988 - skb->protocol = eth_type_trans(skb, ndev);
100989 - skb->ip_summed = CHECKSUM_NONE;
100990 -
100991 - /* If rx checksum is on, and there are no
100992 - * csum or frame errors.
100993 - */
100994 - if (qdev->rx_csum &&
100995 - !(ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) &&
100996 - !(ib_mac_rsp->flags1 & IB_MAC_CSUM_ERR_MASK)) {
100997 - /* TCP frame. */
100998 - if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_T) {
100999 - QPRINTK(qdev, RX_STATUS, DEBUG,
101000 - "TCP checksum done!\n");
101001 - skb->ip_summed = CHECKSUM_UNNECESSARY;
101002 - } else if ((ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_U) &&
101003 - (ib_mac_rsp->flags3 & IB_MAC_IOCB_RSP_V4)) {
101004 - /* Unfragmented ipv4 UDP frame. */
101005 - struct iphdr *iph = (struct iphdr *) skb->data;
101006 - if (!(iph->frag_off &
101007 - cpu_to_be16(IP_MF|IP_OFFSET))) {
101008 - skb->ip_summed = CHECKSUM_UNNECESSARY;
101009 - QPRINTK(qdev, RX_STATUS, DEBUG,
101010 - "TCP checksum done!\n");
101011 - }
101012 - }
101013 + if (ib_mac_rsp->flags1 & (IB_MAC_IOCB_RSP_IE | IB_MAC_IOCB_RSP_TE)) {
101014 + QPRINTK(qdev, RX_STATUS, ERR,
101015 + "Bad checksum for this %s packet.\n",
101016 + ((ib_mac_rsp->
101017 + flags2 & IB_MAC_IOCB_RSP_T) ? "TCP" : "UDP"));
101018 + skb->ip_summed = CHECKSUM_NONE;
101019 + } else if (qdev->rx_csum &&
101020 + ((ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_T) ||
101021 + ((ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_U) &&
101022 + !(ib_mac_rsp->flags1 & IB_MAC_IOCB_RSP_NU)))) {
101023 + QPRINTK(qdev, RX_STATUS, DEBUG, "RX checksum done!\n");
101024 + skb->ip_summed = CHECKSUM_UNNECESSARY;
101025 }
101026 qdev->stats.rx_packets++;
101027 qdev->stats.rx_bytes += skb->len;
101028 @@ -1469,12 +1439,12 @@
101029 if (qdev->vlgrp && (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_V)) {
101030 QPRINTK(qdev, RX_STATUS, DEBUG,
101031 "Passing a VLAN packet upstream.\n");
101032 - vlan_hwaccel_receive_skb(skb, qdev->vlgrp,
101033 + vlan_hwaccel_rx(skb, qdev->vlgrp,
101034 le16_to_cpu(ib_mac_rsp->vlan_id));
101035 } else {
101036 QPRINTK(qdev, RX_STATUS, DEBUG,
101037 "Passing a normal packet upstream.\n");
101038 - netif_receive_skb(skb);
101039 + netif_rx(skb);
101040 }
101041 }
101042
101043 @@ -1531,11 +1501,6 @@
101044 netif_stop_queue(qdev->ndev);
101045 netif_carrier_off(qdev->ndev);
101046 ql_disable_interrupts(qdev);
101047 - /* Clear adapter up bit to signal the recovery
101048 - * process that it shouldn't kill the reset worker
101049 - * thread
101050 - */
101051 - clear_bit(QL_ADAPTER_UP, &qdev->flags);
101052 queue_delayed_work(qdev->workqueue, &qdev->asic_reset_work, 0);
101053 }
101054
101055 @@ -1941,9 +1906,6 @@
101056
101057 tx_ring = &qdev->tx_ring[tx_ring_idx];
101058
101059 - if (skb_padto(skb, ETH_ZLEN))
101060 - return NETDEV_TX_OK;
101061 -
101062 if (unlikely(atomic_read(&tx_ring->tx_count) < 2)) {
101063 QPRINTK(qdev, TX_QUEUED, INFO,
101064 "%s: shutting down tx queue %d du to lack of resources.\n",
101065 @@ -1955,6 +1917,10 @@
101066 tx_ring_desc = &tx_ring->q[tx_ring->prod_idx];
101067 mac_iocb_ptr = tx_ring_desc->queue_entry;
101068 memset((void *)mac_iocb_ptr, 0, sizeof(mac_iocb_ptr));
101069 + if (ql_map_send(qdev, mac_iocb_ptr, skb, tx_ring_desc) != NETDEV_TX_OK) {
101070 + QPRINTK(qdev, TX_QUEUED, ERR, "Could not map the segments.\n");
101071 + return NETDEV_TX_BUSY;
101072 + }
101073
101074 mac_iocb_ptr->opcode = OPCODE_OB_MAC_IOCB;
101075 mac_iocb_ptr->tid = tx_ring_desc->index;
101076 @@ -1980,12 +1946,6 @@
101077 ql_hw_csum_setup(skb,
101078 (struct ob_mac_tso_iocb_req *)mac_iocb_ptr);
101079 }
101080 - if (ql_map_send(qdev, mac_iocb_ptr, skb, tx_ring_desc) !=
101081 - NETDEV_TX_OK) {
101082 - QPRINTK(qdev, TX_QUEUED, ERR,
101083 - "Could not map the segments.\n");
101084 - return NETDEV_TX_BUSY;
101085 - }
101086 QL_DUMP_OB_MAC_IOCB(mac_iocb_ptr);
101087 tx_ring->prod_idx++;
101088 if (tx_ring->prod_idx == tx_ring->wq_len)
101089 @@ -2903,8 +2863,8 @@
101090 /*
101091 * Fill out the Indirection Table.
101092 */
101093 - for (i = 0; i < 256; i++)
101094 - hash_id[i] = i & (qdev->rss_ring_count - 1);
101095 + for (i = 0; i < 32; i++)
101096 + hash_id[i] = i & 1;
101097
101098 /*
101099 * Random values for the IPv6 and IPv4 Hash Keys.
101100 @@ -2987,9 +2947,9 @@
101101 mask = value << 16;
101102 ql_write32(qdev, SYS, mask | value);
101103
101104 - /* Set the default queue, and VLAN behavior. */
101105 - value = NIC_RCV_CFG_DFQ | NIC_RCV_CFG_RV;
101106 - mask = NIC_RCV_CFG_DFQ_MASK | (NIC_RCV_CFG_RV << 16);
101107 + /* Set the default queue. */
101108 + value = NIC_RCV_CFG_DFQ;
101109 + mask = NIC_RCV_CFG_DFQ_MASK;
101110 ql_write32(qdev, NIC_RCV_CFG, (mask | value));
101111
101112 /* Set the MPI interrupt to enabled. */
101113 @@ -3130,11 +3090,7 @@
101114 netif_stop_queue(ndev);
101115 netif_carrier_off(ndev);
101116
101117 - /* Don't kill the reset worker thread if we
101118 - * are in the process of recovery.
101119 - */
101120 - if (test_bit(QL_ADAPTER_UP, &qdev->flags))
101121 - cancel_delayed_work_sync(&qdev->asic_reset_work);
101122 + cancel_delayed_work_sync(&qdev->asic_reset_work);
101123 cancel_delayed_work_sync(&qdev->mpi_reset_work);
101124 cancel_delayed_work_sync(&qdev->mpi_work);
101125
101126 @@ -3166,11 +3122,6 @@
101127
101128 ql_tx_ring_clean(qdev);
101129
101130 - /* Call netif_napi_del() from common point.
101131 - */
101132 - for (i = qdev->rss_ring_first_cq_id; i < qdev->rx_ring_count; i++)
101133 - netif_napi_del(&qdev->rx_ring[i].napi);
101134 -
101135 spin_lock(&qdev->hw_lock);
101136 status = ql_adapter_reset(qdev);
101137 if (status)
101138 @@ -3540,7 +3491,7 @@
101139 static void qlge_tx_timeout(struct net_device *ndev)
101140 {
101141 struct ql_adapter *qdev = (struct ql_adapter *)netdev_priv(ndev);
101142 - ql_queue_asic_error(qdev);
101143 + queue_delayed_work(qdev->workqueue, &qdev->asic_reset_work, 0);
101144 }
101145
101146 static void ql_asic_reset_work(struct work_struct *work)
101147 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/r6040.c linux-2.6.29-rc3.owrt/drivers/net/r6040.c
101148 --- linux-2.6.29.owrt/drivers/net/r6040.c 2009-05-10 22:04:38.000000000 +0200
101149 +++ linux-2.6.29-rc3.owrt/drivers/net/r6040.c 2009-05-10 23:48:29.000000000 +0200
101150 @@ -438,6 +438,7 @@
101151 {
101152 struct r6040_private *lp = netdev_priv(dev);
101153 void __iomem *ioaddr = lp->base;
101154 + struct pci_dev *pdev = lp->pdev;
101155 int limit = 2048;
101156 u16 *adrp;
101157 u16 cmd;
101158 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/r8169.c linux-2.6.29-rc3.owrt/drivers/net/r8169.c
101159 --- linux-2.6.29.owrt/drivers/net/r8169.c 2009-05-10 22:04:38.000000000 +0200
101160 +++ linux-2.6.29-rc3.owrt/drivers/net/r8169.c 2009-05-10 23:48:29.000000000 +0200
101161 @@ -437,22 +437,6 @@
101162 RTL_FEATURE_GMII = (1 << 2),
101163 };
101164
101165 -struct rtl8169_counters {
101166 - __le64 tx_packets;
101167 - __le64 rx_packets;
101168 - __le64 tx_errors;
101169 - __le32 rx_errors;
101170 - __le16 rx_missed;
101171 - __le16 align_errors;
101172 - __le32 tx_one_collision;
101173 - __le32 tx_multi_collision;
101174 - __le64 rx_unicast;
101175 - __le64 rx_broadcast;
101176 - __le32 rx_multicast;
101177 - __le16 tx_aborted;
101178 - __le16 tx_underun;
101179 -};
101180 -
101181 struct rtl8169_private {
101182 void __iomem *mmio_addr; /* memory map physical address */
101183 struct pci_dev *pci_dev; /* Index of PCI device */
101184 @@ -496,7 +480,6 @@
101185 unsigned features;
101186
101187 struct mii_if_info mii;
101188 - struct rtl8169_counters counters;
101189 };
101190
101191 MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@vger.kernel.org>");
101192 @@ -1117,6 +1100,22 @@
101193 "tx_underrun",
101194 };
101195
101196 +struct rtl8169_counters {
101197 + __le64 tx_packets;
101198 + __le64 rx_packets;
101199 + __le64 tx_errors;
101200 + __le32 rx_errors;
101201 + __le16 rx_missed;
101202 + __le16 align_errors;
101203 + __le32 tx_one_collision;
101204 + __le32 tx_multi_collision;
101205 + __le64 rx_unicast;
101206 + __le64 rx_broadcast;
101207 + __le32 rx_multicast;
101208 + __le16 tx_aborted;
101209 + __le16 tx_underun;
101210 +};
101211 +
101212 static int rtl8169_get_sset_count(struct net_device *dev, int sset)
101213 {
101214 switch (sset) {
101215 @@ -1127,21 +1126,16 @@
101216 }
101217 }
101218
101219 -static void rtl8169_update_counters(struct net_device *dev)
101220 +static void rtl8169_get_ethtool_stats(struct net_device *dev,
101221 + struct ethtool_stats *stats, u64 *data)
101222 {
101223 struct rtl8169_private *tp = netdev_priv(dev);
101224 void __iomem *ioaddr = tp->mmio_addr;
101225 struct rtl8169_counters *counters;
101226 dma_addr_t paddr;
101227 u32 cmd;
101228 - int wait = 1000;
101229
101230 - /*
101231 - * Some chips are unable to dump tally counters when the receiver
101232 - * is disabled.
101233 - */
101234 - if ((RTL_R8(ChipCmd) & CmdRxEnb) == 0)
101235 - return;
101236 + ASSERT_RTNL();
101237
101238 counters = pci_alloc_consistent(tp->pci_dev, sizeof(*counters), &paddr);
101239 if (!counters)
101240 @@ -1152,43 +1146,29 @@
101241 RTL_W32(CounterAddrLow, cmd);
101242 RTL_W32(CounterAddrLow, cmd | CounterDump);
101243
101244 - while (wait--) {
101245 - if ((RTL_R32(CounterAddrLow) & CounterDump) == 0) {
101246 - /* copy updated counters */
101247 - memcpy(&tp->counters, counters, sizeof(*counters));
101248 + while (RTL_R32(CounterAddrLow) & CounterDump) {
101249 + if (msleep_interruptible(1))
101250 break;
101251 - }
101252 - udelay(10);
101253 }
101254
101255 RTL_W32(CounterAddrLow, 0);
101256 RTL_W32(CounterAddrHigh, 0);
101257
101258 - pci_free_consistent(tp->pci_dev, sizeof(*counters), counters, paddr);
101259 -}
101260 + data[0] = le64_to_cpu(counters->tx_packets);
101261 + data[1] = le64_to_cpu(counters->rx_packets);
101262 + data[2] = le64_to_cpu(counters->tx_errors);
101263 + data[3] = le32_to_cpu(counters->rx_errors);
101264 + data[4] = le16_to_cpu(counters->rx_missed);
101265 + data[5] = le16_to_cpu(counters->align_errors);
101266 + data[6] = le32_to_cpu(counters->tx_one_collision);
101267 + data[7] = le32_to_cpu(counters->tx_multi_collision);
101268 + data[8] = le64_to_cpu(counters->rx_unicast);
101269 + data[9] = le64_to_cpu(counters->rx_broadcast);
101270 + data[10] = le32_to_cpu(counters->rx_multicast);
101271 + data[11] = le16_to_cpu(counters->tx_aborted);
101272 + data[12] = le16_to_cpu(counters->tx_underun);
101273
101274 -static void rtl8169_get_ethtool_stats(struct net_device *dev,
101275 - struct ethtool_stats *stats, u64 *data)
101276 -{
101277 - struct rtl8169_private *tp = netdev_priv(dev);
101278 -
101279 - ASSERT_RTNL();
101280 -
101281 - rtl8169_update_counters(dev);
101282 -
101283 - data[0] = le64_to_cpu(tp->counters.tx_packets);
101284 - data[1] = le64_to_cpu(tp->counters.rx_packets);
101285 - data[2] = le64_to_cpu(tp->counters.tx_errors);
101286 - data[3] = le32_to_cpu(tp->counters.rx_errors);
101287 - data[4] = le16_to_cpu(tp->counters.rx_missed);
101288 - data[5] = le16_to_cpu(tp->counters.align_errors);
101289 - data[6] = le32_to_cpu(tp->counters.tx_one_collision);
101290 - data[7] = le32_to_cpu(tp->counters.tx_multi_collision);
101291 - data[8] = le64_to_cpu(tp->counters.rx_unicast);
101292 - data[9] = le64_to_cpu(tp->counters.rx_broadcast);
101293 - data[10] = le32_to_cpu(tp->counters.rx_multicast);
101294 - data[11] = le16_to_cpu(tp->counters.tx_aborted);
101295 - data[12] = le16_to_cpu(tp->counters.tx_underun);
101296 + pci_free_consistent(tp->pci_dev, sizeof(*counters), counters, paddr);
101297 }
101298
101299 static void rtl8169_get_strings(struct net_device *dev, u32 stringset, u8 *data)
101300 @@ -3253,6 +3233,13 @@
101301 opts1 |= FirstFrag;
101302 } else {
101303 len = skb->len;
101304 +
101305 + if (unlikely(len < ETH_ZLEN)) {
101306 + if (skb_padto(skb, ETH_ZLEN))
101307 + goto err_update_stats;
101308 + len = ETH_ZLEN;
101309 + }
101310 +
101311 opts1 |= FirstFrag | LastFrag;
101312 tp->tx_skb[entry].skb = skb;
101313 }
101314 @@ -3290,6 +3277,7 @@
101315 err_stop:
101316 netif_stop_queue(dev);
101317 ret = NETDEV_TX_BUSY;
101318 +err_update_stats:
101319 dev->stats.tx_dropped++;
101320 goto out;
101321 }
101322 @@ -3696,9 +3684,6 @@
101323 struct rtl8169_private *tp = netdev_priv(dev);
101324 struct pci_dev *pdev = tp->pci_dev;
101325
101326 - /* update counters before going down */
101327 - rtl8169_update_counters(dev);
101328 -
101329 rtl8169_down(dev);
101330
101331 free_irq(dev->irq, dev);
101332 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/efx.c linux-2.6.29-rc3.owrt/drivers/net/sfc/efx.c
101333 --- linux-2.6.29.owrt/drivers/net/sfc/efx.c 2009-05-10 22:04:38.000000000 +0200
101334 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/efx.c 2009-05-10 23:48:29.000000000 +0200
101335 @@ -676,8 +676,9 @@
101336 rc = efx->phy_op->init(efx);
101337 if (rc)
101338 return rc;
101339 - mutex_lock(&efx->mac_lock);
101340 efx->phy_op->reconfigure(efx);
101341 +
101342 + mutex_lock(&efx->mac_lock);
101343 rc = falcon_switch_mac(efx);
101344 mutex_unlock(&efx->mac_lock);
101345 if (rc)
101346 @@ -685,7 +686,7 @@
101347 efx->mac_op->reconfigure(efx);
101348
101349 efx->port_initialized = true;
101350 - efx_stats_enable(efx);
101351 + efx->stats_enabled = true;
101352 return 0;
101353
101354 fail:
101355 @@ -734,7 +735,6 @@
101356 if (!efx->port_initialized)
101357 return;
101358
101359 - efx_stats_disable(efx);
101360 efx->phy_op->fini(efx);
101361 efx->port_initialized = false;
101362
101363 @@ -1361,20 +1361,6 @@
101364 return 0;
101365 }
101366
101367 -void efx_stats_disable(struct efx_nic *efx)
101368 -{
101369 - spin_lock(&efx->stats_lock);
101370 - ++efx->stats_disable_count;
101371 - spin_unlock(&efx->stats_lock);
101372 -}
101373 -
101374 -void efx_stats_enable(struct efx_nic *efx)
101375 -{
101376 - spin_lock(&efx->stats_lock);
101377 - --efx->stats_disable_count;
101378 - spin_unlock(&efx->stats_lock);
101379 -}
101380 -
101381 /* Context: process, dev_base_lock or RTNL held, non-blocking. */
101382 static struct net_device_stats *efx_net_stats(struct net_device *net_dev)
101383 {
101384 @@ -1383,12 +1369,12 @@
101385 struct net_device_stats *stats = &net_dev->stats;
101386
101387 /* Update stats if possible, but do not wait if another thread
101388 - * is updating them or if MAC stats fetches are temporarily
101389 - * disabled; slightly stale stats are acceptable.
101390 + * is updating them (or resetting the NIC); slightly stale
101391 + * stats are acceptable.
101392 */
101393 if (!spin_trylock(&efx->stats_lock))
101394 return stats;
101395 - if (!efx->stats_disable_count) {
101396 + if (efx->stats_enabled) {
101397 efx->mac_op->update_stats(efx);
101398 falcon_update_nic_stats(efx);
101399 }
101400 @@ -1636,12 +1622,16 @@
101401
101402 /* Tears down the entire software state and most of the hardware state
101403 * before reset. */
101404 -void efx_reset_down(struct efx_nic *efx, enum reset_type method,
101405 - struct ethtool_cmd *ecmd)
101406 +void efx_reset_down(struct efx_nic *efx, struct ethtool_cmd *ecmd)
101407 {
101408 EFX_ASSERT_RESET_SERIALISED(efx);
101409
101410 - efx_stats_disable(efx);
101411 + /* The net_dev->get_stats handler is quite slow, and will fail
101412 + * if a fetch is pending over reset. Serialise against it. */
101413 + spin_lock(&efx->stats_lock);
101414 + efx->stats_enabled = false;
101415 + spin_unlock(&efx->stats_lock);
101416 +
101417 efx_stop_all(efx);
101418 mutex_lock(&efx->mac_lock);
101419 mutex_lock(&efx->spi_lock);
101420 @@ -1649,8 +1639,6 @@
101421 efx->phy_op->get_settings(efx, ecmd);
101422
101423 efx_fini_channels(efx);
101424 - if (efx->port_initialized && method != RESET_TYPE_INVISIBLE)
101425 - efx->phy_op->fini(efx);
101426 }
101427
101428 /* This function will always ensure that the locks acquired in
101429 @@ -1658,8 +1646,7 @@
101430 * that we were unable to reinitialise the hardware, and the
101431 * driver should be disabled. If ok is false, then the rx and tx
101432 * engines are not restarted, pending a RESET_DISABLE. */
101433 -int efx_reset_up(struct efx_nic *efx, enum reset_type method,
101434 - struct ethtool_cmd *ecmd, bool ok)
101435 +int efx_reset_up(struct efx_nic *efx, struct ethtool_cmd *ecmd, bool ok)
101436 {
101437 int rc;
101438
101439 @@ -1671,15 +1658,6 @@
101440 ok = false;
101441 }
101442
101443 - if (efx->port_initialized && method != RESET_TYPE_INVISIBLE) {
101444 - if (ok) {
101445 - rc = efx->phy_op->init(efx);
101446 - if (rc)
101447 - ok = false;
101448 - } else
101449 - efx->port_initialized = false;
101450 - }
101451 -
101452 if (ok) {
101453 efx_init_channels(efx);
101454
101455 @@ -1692,7 +1670,7 @@
101456
101457 if (ok) {
101458 efx_start_all(efx);
101459 - efx_stats_enable(efx);
101460 + efx->stats_enabled = true;
101461 }
101462 return rc;
101463 }
101464 @@ -1724,7 +1702,7 @@
101465
101466 EFX_INFO(efx, "resetting (%d)\n", method);
101467
101468 - efx_reset_down(efx, method, &ecmd);
101469 + efx_reset_down(efx, &ecmd);
101470
101471 rc = falcon_reset_hw(efx, method);
101472 if (rc) {
101473 @@ -1743,10 +1721,10 @@
101474
101475 /* Leave device stopped if necessary */
101476 if (method == RESET_TYPE_DISABLE) {
101477 - efx_reset_up(efx, method, &ecmd, false);
101478 + efx_reset_up(efx, &ecmd, false);
101479 rc = -EIO;
101480 } else {
101481 - rc = efx_reset_up(efx, method, &ecmd, true);
101482 + rc = efx_reset_up(efx, &ecmd, true);
101483 }
101484
101485 out_disable:
101486 @@ -1898,7 +1876,6 @@
101487 efx->rx_checksum_enabled = true;
101488 spin_lock_init(&efx->netif_stop_lock);
101489 spin_lock_init(&efx->stats_lock);
101490 - efx->stats_disable_count = 1;
101491 mutex_init(&efx->mac_lock);
101492 efx->mac_op = &efx_dummy_mac_operations;
101493 efx->phy_op = &efx_dummy_phy_operations;
101494 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/efx.h linux-2.6.29-rc3.owrt/drivers/net/sfc/efx.h
101495 --- linux-2.6.29.owrt/drivers/net/sfc/efx.h 2009-05-10 22:04:38.000000000 +0200
101496 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/efx.h 2009-05-10 23:48:29.000000000 +0200
101497 @@ -36,16 +36,13 @@
101498 extern void efx_flush_queues(struct efx_nic *efx);
101499
101500 /* Ports */
101501 -extern void efx_stats_disable(struct efx_nic *efx);
101502 -extern void efx_stats_enable(struct efx_nic *efx);
101503 extern void efx_reconfigure_port(struct efx_nic *efx);
101504 extern void __efx_reconfigure_port(struct efx_nic *efx);
101505
101506 /* Reset handling */
101507 -extern void efx_reset_down(struct efx_nic *efx, enum reset_type method,
101508 - struct ethtool_cmd *ecmd);
101509 -extern int efx_reset_up(struct efx_nic *efx, enum reset_type method,
101510 - struct ethtool_cmd *ecmd, bool ok);
101511 +extern void efx_reset_down(struct efx_nic *efx, struct ethtool_cmd *ecmd);
101512 +extern int efx_reset_up(struct efx_nic *efx, struct ethtool_cmd *ecmd,
101513 + bool ok);
101514
101515 /* Global */
101516 extern void efx_schedule_reset(struct efx_nic *efx, enum reset_type type);
101517 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/ethtool.c linux-2.6.29-rc3.owrt/drivers/net/sfc/ethtool.c
101518 --- linux-2.6.29.owrt/drivers/net/sfc/ethtool.c 2009-05-10 22:04:38.000000000 +0200
101519 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/ethtool.c 2009-05-10 23:48:29.000000000 +0200
101520 @@ -219,6 +219,9 @@
101521 struct efx_nic *efx = netdev_priv(net_dev);
101522 int rc;
101523
101524 + if (EFX_WORKAROUND_13963(efx) && !ecmd->autoneg)
101525 + return -EINVAL;
101526 +
101527 /* Falcon GMAC does not support 1000Mbps HD */
101528 if (ecmd->speed == SPEED_1000 && ecmd->duplex != DUPLEX_FULL) {
101529 EFX_LOG(efx, "rejecting unsupported 1000Mbps HD"
101530 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/falcon.c linux-2.6.29-rc3.owrt/drivers/net/sfc/falcon.c
101531 --- linux-2.6.29.owrt/drivers/net/sfc/falcon.c 2009-05-10 22:04:38.000000000 +0200
101532 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/falcon.c 2009-05-10 23:48:29.000000000 +0200
101533 @@ -824,6 +824,10 @@
101534 rx_ev_pause_frm ? " [PAUSE]" : "");
101535 }
101536 #endif
101537 +
101538 + if (unlikely(rx_ev_eth_crc_err && EFX_WORKAROUND_10750(efx) &&
101539 + efx->phy_type == PHY_TYPE_SFX7101))
101540 + tenxpress_crc_err(efx);
101541 }
101542
101543 /* Handle receive events that are not in-order. */
101544 @@ -1883,7 +1887,7 @@
101545
101546 /* MAC stats will fail whilst the TX fifo is draining. Serialise
101547 * the drain sequence with the statistics fetch */
101548 - efx_stats_disable(efx);
101549 + spin_lock(&efx->stats_lock);
101550
101551 falcon_read(efx, &reg, MAC0_CTRL_REG_KER);
101552 EFX_SET_OWORD_FIELD(reg, TXFIFO_DRAIN_EN_B0, 1);
101553 @@ -1913,7 +1917,7 @@
101554 udelay(10);
101555 }
101556
101557 - efx_stats_enable(efx);
101558 + spin_unlock(&efx->stats_lock);
101559
101560 /* If we've reset the EM block and the link is up, then
101561 * we'll have to kick the XAUI link so the PHY can recover */
101562 @@ -2273,10 +2277,6 @@
101563 struct efx_mac_operations *old_mac_op = efx->mac_op;
101564 efx_oword_t nic_stat;
101565 unsigned strap_val;
101566 - int rc = 0;
101567 -
101568 - /* Don't try to fetch MAC stats while we're switching MACs */
101569 - efx_stats_disable(efx);
101570
101571 /* Internal loopbacks override the phy speed setting */
101572 if (efx->loopback_mode == LOOPBACK_GMAC) {
101573 @@ -2287,12 +2287,16 @@
101574 efx->link_fd = true;
101575 }
101576
101577 - WARN_ON(!mutex_is_locked(&efx->mac_lock));
101578 efx->mac_op = (EFX_IS10G(efx) ?
101579 &falcon_xmac_operations : &falcon_gmac_operations);
101580 + if (old_mac_op == efx->mac_op)
101581 + return 0;
101582 +
101583 + WARN_ON(!mutex_is_locked(&efx->mac_lock));
101584 +
101585 + /* Not all macs support a mac-level link state */
101586 + efx->mac_up = true;
101587
101588 - /* Always push the NIC_STAT_REG setting even if the mac hasn't
101589 - * changed, because this function is run post online reset */
101590 falcon_read(efx, &nic_stat, NIC_STAT_REG);
101591 strap_val = EFX_IS10G(efx) ? 5 : 3;
101592 if (falcon_rev(efx) >= FALCON_REV_B0) {
101593 @@ -2305,17 +2309,9 @@
101594 BUG_ON(EFX_OWORD_FIELD(nic_stat, STRAP_PINS) != strap_val);
101595 }
101596
101597 - if (old_mac_op == efx->mac_op)
101598 - goto out;
101599
101600 EFX_LOG(efx, "selected %cMAC\n", EFX_IS10G(efx) ? 'X' : 'G');
101601 - /* Not all macs support a mac-level link state */
101602 - efx->mac_up = true;
101603 -
101604 - rc = falcon_reset_macs(efx);
101605 -out:
101606 - efx_stats_enable(efx);
101607 - return rc;
101608 + return falcon_reset_macs(efx);
101609 }
101610
101611 /* This call is responsible for hooking in the MAC and PHY operations */
101612 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/mdio_10g.c linux-2.6.29-rc3.owrt/drivers/net/sfc/mdio_10g.c
101613 --- linux-2.6.29.owrt/drivers/net/sfc/mdio_10g.c 2009-05-10 22:04:38.000000000 +0200
101614 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/mdio_10g.c 2009-05-10 23:48:29.000000000 +0200
101615 @@ -15,7 +15,6 @@
101616 #include "net_driver.h"
101617 #include "mdio_10g.h"
101618 #include "boards.h"
101619 -#include "workarounds.h"
101620
101621 int mdio_clause45_reset_mmd(struct efx_nic *port, int mmd,
101622 int spins, int spintime)
101623 @@ -180,12 +179,17 @@
101624 return false;
101625 else if (efx_phy_mode_disabled(efx->phy_mode))
101626 return false;
101627 - else if (efx->loopback_mode == LOOPBACK_PHYXS)
101628 + else if (efx->loopback_mode == LOOPBACK_PHYXS) {
101629 mmd_mask &= ~(MDIO_MMDREG_DEVS_PHYXS |
101630 MDIO_MMDREG_DEVS_PCS |
101631 MDIO_MMDREG_DEVS_PMAPMD |
101632 MDIO_MMDREG_DEVS_AN);
101633 - else if (efx->loopback_mode == LOOPBACK_PCS)
101634 + if (!mmd_mask) {
101635 + reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PHYXS,
101636 + MDIO_PHYXS_STATUS2);
101637 + return !(reg & (1 << MDIO_PHYXS_STATUS2_RX_FAULT_LBN));
101638 + }
101639 + } else if (efx->loopback_mode == LOOPBACK_PCS)
101640 mmd_mask &= ~(MDIO_MMDREG_DEVS_PCS |
101641 MDIO_MMDREG_DEVS_PMAPMD |
101642 MDIO_MMDREG_DEVS_AN);
101643 @@ -193,13 +197,6 @@
101644 mmd_mask &= ~(MDIO_MMDREG_DEVS_PMAPMD |
101645 MDIO_MMDREG_DEVS_AN);
101646
101647 - if (!mmd_mask) {
101648 - /* Use presence of XGMII faults in leui of link state */
101649 - reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PHYXS,
101650 - MDIO_PHYXS_STATUS2);
101651 - return !(reg & (1 << MDIO_PHYXS_STATUS2_RX_FAULT_LBN));
101652 - }
101653 -
101654 while (mmd_mask) {
101655 if (mmd_mask & 1) {
101656 /* Double reads because link state is latched, and a
101657 @@ -266,7 +263,7 @@
101658 }
101659 }
101660
101661 -static u32 mdio_clause45_get_an(struct efx_nic *efx, u16 addr)
101662 +static u32 mdio_clause45_get_an(struct efx_nic *efx, u16 addr, u32 xnp)
101663 {
101664 int phy_id = efx->mii.phy_id;
101665 u32 result = 0;
101666 @@ -281,6 +278,9 @@
101667 result |= ADVERTISED_100baseT_Half;
101668 if (reg & ADVERTISE_100FULL)
101669 result |= ADVERTISED_100baseT_Full;
101670 + if (reg & LPA_RESV)
101671 + result |= xnp;
101672 +
101673 return result;
101674 }
101675
101676 @@ -310,7 +310,7 @@
101677 */
101678 void mdio_clause45_get_settings_ext(struct efx_nic *efx,
101679 struct ethtool_cmd *ecmd,
101680 - u32 npage_adv, u32 npage_lpa)
101681 + u32 xnp, u32 xnp_lpa)
101682 {
101683 int phy_id = efx->mii.phy_id;
101684 int reg;
101685 @@ -361,8 +361,8 @@
101686 ecmd->autoneg = AUTONEG_ENABLE;
101687 ecmd->advertising |=
101688 ADVERTISED_Autoneg |
101689 - mdio_clause45_get_an(efx, MDIO_AN_ADVERTISE) |
101690 - npage_adv;
101691 + mdio_clause45_get_an(efx,
101692 + MDIO_AN_ADVERTISE, xnp);
101693 } else
101694 ecmd->autoneg = AUTONEG_DISABLE;
101695 } else
101696 @@ -371,30 +371,27 @@
101697 if (ecmd->autoneg) {
101698 /* If AN is complete, report best common mode,
101699 * otherwise report best advertised mode. */
101700 - u32 modes = 0;
101701 + u32 common = ecmd->advertising;
101702 if (mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,
101703 MDIO_MMDREG_STAT1) &
101704 - (1 << MDIO_AN_STATUS_AN_DONE_LBN))
101705 - modes = (ecmd->advertising &
101706 - (mdio_clause45_get_an(efx, MDIO_AN_LPA) |
101707 - npage_lpa));
101708 - if (modes == 0)
101709 - modes = ecmd->advertising;
101710 -
101711 - if (modes & ADVERTISED_10000baseT_Full) {
101712 + (1 << MDIO_AN_STATUS_AN_DONE_LBN)) {
101713 + common &= mdio_clause45_get_an(efx, MDIO_AN_LPA,
101714 + xnp_lpa);
101715 + }
101716 + if (common & ADVERTISED_10000baseT_Full) {
101717 ecmd->speed = SPEED_10000;
101718 ecmd->duplex = DUPLEX_FULL;
101719 - } else if (modes & (ADVERTISED_1000baseT_Full |
101720 - ADVERTISED_1000baseT_Half)) {
101721 + } else if (common & (ADVERTISED_1000baseT_Full |
101722 + ADVERTISED_1000baseT_Half)) {
101723 ecmd->speed = SPEED_1000;
101724 - ecmd->duplex = !!(modes & ADVERTISED_1000baseT_Full);
101725 - } else if (modes & (ADVERTISED_100baseT_Full |
101726 - ADVERTISED_100baseT_Half)) {
101727 + ecmd->duplex = !!(common & ADVERTISED_1000baseT_Full);
101728 + } else if (common & (ADVERTISED_100baseT_Full |
101729 + ADVERTISED_100baseT_Half)) {
101730 ecmd->speed = SPEED_100;
101731 - ecmd->duplex = !!(modes & ADVERTISED_100baseT_Full);
101732 + ecmd->duplex = !!(common & ADVERTISED_100baseT_Full);
101733 } else {
101734 ecmd->speed = SPEED_10;
101735 - ecmd->duplex = !!(modes & ADVERTISED_10baseT_Full);
101736 + ecmd->duplex = !!(common & ADVERTISED_10baseT_Full);
101737 }
101738 } else {
101739 /* Report forced settings */
101740 @@ -418,7 +415,7 @@
101741 int phy_id = efx->mii.phy_id;
101742 struct ethtool_cmd prev;
101743 u32 required;
101744 - int reg;
101745 + int ctrl1_bits, reg;
101746
101747 efx->phy_op->get_settings(efx, &prev);
101748
101749 @@ -433,83 +430,99 @@
101750 if (prev.port != PORT_TP || ecmd->port != PORT_TP)
101751 return -EINVAL;
101752
101753 - /* Check that PHY supports these settings */
101754 - if (ecmd->autoneg) {
101755 - required = SUPPORTED_Autoneg;
101756 - } else if (ecmd->duplex) {
101757 + /* Check that PHY supports these settings and work out the
101758 + * basic control bits */
101759 + if (ecmd->duplex) {
101760 switch (ecmd->speed) {
101761 - case SPEED_10: required = SUPPORTED_10baseT_Full; break;
101762 - case SPEED_100: required = SUPPORTED_100baseT_Full; break;
101763 - default: return -EINVAL;
101764 + case SPEED_10:
101765 + ctrl1_bits = BMCR_FULLDPLX;
101766 + required = SUPPORTED_10baseT_Full;
101767 + break;
101768 + case SPEED_100:
101769 + ctrl1_bits = BMCR_SPEED100 | BMCR_FULLDPLX;
101770 + required = SUPPORTED_100baseT_Full;
101771 + break;
101772 + case SPEED_1000:
101773 + ctrl1_bits = BMCR_SPEED1000 | BMCR_FULLDPLX;
101774 + required = SUPPORTED_1000baseT_Full;
101775 + break;
101776 + case SPEED_10000:
101777 + ctrl1_bits = (BMCR_SPEED1000 | BMCR_SPEED100 |
101778 + BMCR_FULLDPLX);
101779 + required = SUPPORTED_10000baseT_Full;
101780 + break;
101781 + default:
101782 + return -EINVAL;
101783 }
101784 } else {
101785 switch (ecmd->speed) {
101786 - case SPEED_10: required = SUPPORTED_10baseT_Half; break;
101787 - case SPEED_100: required = SUPPORTED_100baseT_Half; break;
101788 - default: return -EINVAL;
101789 + case SPEED_10:
101790 + ctrl1_bits = 0;
101791 + required = SUPPORTED_10baseT_Half;
101792 + break;
101793 + case SPEED_100:
101794 + ctrl1_bits = BMCR_SPEED100;
101795 + required = SUPPORTED_100baseT_Half;
101796 + break;
101797 + case SPEED_1000:
101798 + ctrl1_bits = BMCR_SPEED1000;
101799 + required = SUPPORTED_1000baseT_Half;
101800 + break;
101801 + default:
101802 + return -EINVAL;
101803 }
101804 }
101805 + if (ecmd->autoneg)
101806 + required |= SUPPORTED_Autoneg;
101807 required |= ecmd->advertising;
101808 if (required & ~prev.supported)
101809 return -EINVAL;
101810
101811 - if (ecmd->autoneg) {
101812 - bool xnp = (ecmd->advertising & ADVERTISED_10000baseT_Full
101813 - || EFX_WORKAROUND_13204(efx));
101814 -
101815 - /* Set up the base page */
101816 - reg = ADVERTISE_CSMA;
101817 - if (ecmd->advertising & ADVERTISED_10baseT_Half)
101818 - reg |= ADVERTISE_10HALF;
101819 - if (ecmd->advertising & ADVERTISED_10baseT_Full)
101820 - reg |= ADVERTISE_10FULL;
101821 - if (ecmd->advertising & ADVERTISED_100baseT_Half)
101822 - reg |= ADVERTISE_100HALF;
101823 - if (ecmd->advertising & ADVERTISED_100baseT_Full)
101824 - reg |= ADVERTISE_100FULL;
101825 - if (xnp)
101826 - reg |= ADVERTISE_RESV;
101827 - else if (ecmd->advertising & (ADVERTISED_1000baseT_Half |
101828 - ADVERTISED_1000baseT_Full))
101829 - reg |= ADVERTISE_NPAGE;
101830 - reg |= efx_fc_advertise(efx->wanted_fc);
101831 - mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,
101832 - MDIO_AN_ADVERTISE, reg);
101833 -
101834 - /* Set up the (extended) next page if necessary */
101835 - if (efx->phy_op->set_npage_adv)
101836 - efx->phy_op->set_npage_adv(efx, ecmd->advertising);
101837 + /* Set the basic control bits */
101838 + reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,
101839 + MDIO_MMDREG_CTRL1);
101840 + reg &= ~(BMCR_SPEED1000 | BMCR_SPEED100 | BMCR_FULLDPLX | 0x003c);
101841 + reg |= ctrl1_bits;
101842 + mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD, MDIO_MMDREG_CTRL1,
101843 + reg);
101844 +
101845 + /* Set the AN registers */
101846 + if (ecmd->autoneg != prev.autoneg ||
101847 + ecmd->advertising != prev.advertising) {
101848 + bool xnp = false;
101849 +
101850 + if (efx->phy_op->set_xnp_advertise)
101851 + xnp = efx->phy_op->set_xnp_advertise(efx,
101852 + ecmd->advertising);
101853 +
101854 + if (ecmd->autoneg) {
101855 + reg = 0;
101856 + if (ecmd->advertising & ADVERTISED_10baseT_Half)
101857 + reg |= ADVERTISE_10HALF;
101858 + if (ecmd->advertising & ADVERTISED_10baseT_Full)
101859 + reg |= ADVERTISE_10FULL;
101860 + if (ecmd->advertising & ADVERTISED_100baseT_Half)
101861 + reg |= ADVERTISE_100HALF;
101862 + if (ecmd->advertising & ADVERTISED_100baseT_Full)
101863 + reg |= ADVERTISE_100FULL;
101864 + if (xnp)
101865 + reg |= ADVERTISE_RESV;
101866 + mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,
101867 + MDIO_AN_ADVERTISE, reg);
101868 + }
101869
101870 - /* Enable and restart AN */
101871 reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,
101872 MDIO_MMDREG_CTRL1);
101873 - reg |= BMCR_ANENABLE;
101874 - if (!(EFX_WORKAROUND_15195(efx) &&
101875 - LOOPBACK_MASK(efx) & efx->phy_op->loopbacks))
101876 - reg |= BMCR_ANRESTART;
101877 + if (ecmd->autoneg)
101878 + reg |= BMCR_ANENABLE | BMCR_ANRESTART;
101879 + else
101880 + reg &= ~BMCR_ANENABLE;
101881 if (xnp)
101882 reg |= 1 << MDIO_AN_CTRL_XNP_LBN;
101883 else
101884 reg &= ~(1 << MDIO_AN_CTRL_XNP_LBN);
101885 mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,
101886 MDIO_MMDREG_CTRL1, reg);
101887 - } else {
101888 - /* Disable AN */
101889 - mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_AN,
101890 - MDIO_MMDREG_CTRL1,
101891 - __ffs(BMCR_ANENABLE), false);
101892 -
101893 - /* Set the basic control bits */
101894 - reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,
101895 - MDIO_MMDREG_CTRL1);
101896 - reg &= ~(BMCR_SPEED1000 | BMCR_SPEED100 | BMCR_FULLDPLX |
101897 - 0x003c);
101898 - if (ecmd->speed == SPEED_100)
101899 - reg |= BMCR_SPEED100;
101900 - if (ecmd->duplex)
101901 - reg |= BMCR_FULLDPLX;
101902 - mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,
101903 - MDIO_MMDREG_CTRL1, reg);
101904 }
101905
101906 return 0;
101907 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/mdio_10g.h linux-2.6.29-rc3.owrt/drivers/net/sfc/mdio_10g.h
101908 --- linux-2.6.29.owrt/drivers/net/sfc/mdio_10g.h 2009-05-10 22:04:38.000000000 +0200
101909 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/mdio_10g.h 2009-05-10 23:48:29.000000000 +0200
101910 @@ -155,8 +155,7 @@
101911 #define MDIO_AN_XNP 22
101912 #define MDIO_AN_LPA_XNP 25
101913
101914 -#define MDIO_AN_10GBT_CTRL 32
101915 -#define MDIO_AN_10GBT_CTRL_ADV_10G_LBN 12
101916 +#define MDIO_AN_10GBT_ADVERTISE 32
101917 #define MDIO_AN_10GBT_STATUS (33)
101918 #define MDIO_AN_10GBT_STATUS_MS_FLT_LBN (15) /* MASTER/SLAVE config fault */
101919 #define MDIO_AN_10GBT_STATUS_MS_LBN (14) /* MASTER/SLAVE config */
101920 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/net_driver.h linux-2.6.29-rc3.owrt/drivers/net/sfc/net_driver.h
101921 --- linux-2.6.29.owrt/drivers/net/sfc/net_driver.h 2009-05-10 22:04:38.000000000 +0200
101922 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/net_driver.h 2009-05-10 23:48:29.000000000 +0200
101923 @@ -566,7 +566,7 @@
101924 * @poll: Poll for hardware state. Serialised by the mac_lock.
101925 * @get_settings: Get ethtool settings. Serialised by the mac_lock.
101926 * @set_settings: Set ethtool settings. Serialised by the mac_lock.
101927 - * @set_npage_adv: Set abilities advertised in (Extended) Next Page
101928 + * @set_xnp_advertise: Set abilities advertised in Extended Next Page
101929 * (only needed where AN bit is set in mmds)
101930 * @num_tests: Number of PHY-specific tests/results
101931 * @test_names: Names of the tests/results
101932 @@ -586,7 +586,7 @@
101933 struct ethtool_cmd *ecmd);
101934 int (*set_settings) (struct efx_nic *efx,
101935 struct ethtool_cmd *ecmd);
101936 - void (*set_npage_adv) (struct efx_nic *efx, u32);
101937 + bool (*set_xnp_advertise) (struct efx_nic *efx, u32);
101938 u32 num_tests;
101939 const char *const *test_names;
101940 int (*run_tests) (struct efx_nic *efx, int *results, unsigned flags);
101941 @@ -754,7 +754,8 @@
101942 * &struct net_device_stats.
101943 * @stats_buffer: DMA buffer for statistics
101944 * @stats_lock: Statistics update lock. Serialises statistics fetches
101945 - * @stats_disable_count: Nest count for disabling statistics fetches
101946 + * @stats_enabled: Temporarily disable statistics fetches.
101947 + * Serialised by @stats_lock
101948 * @mac_op: MAC interface
101949 * @mac_address: Permanent MAC address
101950 * @phy_type: PHY type
101951 @@ -836,7 +837,7 @@
101952 struct efx_mac_stats mac_stats;
101953 struct efx_buffer stats_buffer;
101954 spinlock_t stats_lock;
101955 - unsigned int stats_disable_count;
101956 + bool stats_enabled;
101957
101958 struct efx_mac_operations *mac_op;
101959 unsigned char mac_address[ETH_ALEN];
101960 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/phy.h linux-2.6.29-rc3.owrt/drivers/net/sfc/phy.h
101961 --- linux-2.6.29.owrt/drivers/net/sfc/phy.h 2009-05-10 22:04:38.000000000 +0200
101962 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/phy.h 2009-05-10 23:48:29.000000000 +0200
101963 @@ -17,6 +17,7 @@
101964 extern struct efx_phy_operations falcon_sft9001_phy_ops;
101965
101966 extern void tenxpress_phy_blink(struct efx_nic *efx, bool blink);
101967 +extern void tenxpress_crc_err(struct efx_nic *efx);
101968
101969 /****************************************************************************
101970 * Exported functions from the driver for XFP optical PHYs
101971 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/selftest.c linux-2.6.29-rc3.owrt/drivers/net/sfc/selftest.c
101972 --- linux-2.6.29.owrt/drivers/net/sfc/selftest.c 2009-05-10 22:04:38.000000000 +0200
101973 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/selftest.c 2009-05-10 23:48:29.000000000 +0200
101974 @@ -665,7 +665,6 @@
101975 {
101976 enum efx_loopback_mode loopback_mode = efx->loopback_mode;
101977 int phy_mode = efx->phy_mode;
101978 - enum reset_type reset_method = RESET_TYPE_INVISIBLE;
101979 struct ethtool_cmd ecmd;
101980 struct efx_channel *channel;
101981 int rc_test = 0, rc_reset = 0, rc;
101982 @@ -719,21 +718,21 @@
101983 mutex_unlock(&efx->mac_lock);
101984
101985 /* free up all consumers of SRAM (including all the queues) */
101986 - efx_reset_down(efx, reset_method, &ecmd);
101987 + efx_reset_down(efx, &ecmd);
101988
101989 rc = efx_test_chip(efx, tests);
101990 if (rc && !rc_test)
101991 rc_test = rc;
101992
101993 /* reset the chip to recover from the register test */
101994 - rc_reset = falcon_reset_hw(efx, reset_method);
101995 + rc_reset = falcon_reset_hw(efx, RESET_TYPE_ALL);
101996
101997 /* Ensure that the phy is powered and out of loopback
101998 * for the bist and loopback tests */
101999 efx->phy_mode &= ~PHY_MODE_LOW_POWER;
102000 efx->loopback_mode = LOOPBACK_NONE;
102001
102002 - rc = efx_reset_up(efx, reset_method, &ecmd, rc_reset == 0);
102003 + rc = efx_reset_up(efx, &ecmd, rc_reset == 0);
102004 if (rc && !rc_reset)
102005 rc_reset = rc;
102006
102007 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/sfe4001.c linux-2.6.29-rc3.owrt/drivers/net/sfc/sfe4001.c
102008 --- linux-2.6.29.owrt/drivers/net/sfc/sfe4001.c 2009-05-10 22:04:38.000000000 +0200
102009 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/sfe4001.c 2009-05-10 23:48:29.000000000 +0200
102010 @@ -186,22 +186,19 @@
102011 {
102012 efx_oword_t reg;
102013
102014 - /* GPIO 3 and the GPIO register are shared with I2C, so block that */
102015 + /* GPIO pins are also used for I2C, so block that temporarily */
102016 mutex_lock(&efx->i2c_adap.bus_lock);
102017
102018 - /* Pull RST_N (GPIO 2) low then let it up again, setting the
102019 - * FLASH_CFG_1 strap (GPIO 3) appropriately. Only change the
102020 - * output enables; the output levels should always be 0 (low)
102021 - * and we rely on external pull-ups. */
102022 falcon_read(efx, &reg, GPIO_CTL_REG_KER);
102023 EFX_SET_OWORD_FIELD(reg, GPIO2_OEN, true);
102024 + EFX_SET_OWORD_FIELD(reg, GPIO2_OUT, false);
102025 falcon_write(efx, &reg, GPIO_CTL_REG_KER);
102026 msleep(1000);
102027 - EFX_SET_OWORD_FIELD(reg, GPIO2_OEN, false);
102028 - EFX_SET_OWORD_FIELD(reg, GPIO3_OEN,
102029 - !!(efx->phy_mode & PHY_MODE_SPECIAL));
102030 + EFX_SET_OWORD_FIELD(reg, GPIO2_OUT, true);
102031 + EFX_SET_OWORD_FIELD(reg, GPIO3_OEN, true);
102032 + EFX_SET_OWORD_FIELD(reg, GPIO3_OUT,
102033 + !(efx->phy_mode & PHY_MODE_SPECIAL));
102034 falcon_write(efx, &reg, GPIO_CTL_REG_KER);
102035 - msleep(1);
102036
102037 mutex_unlock(&efx->i2c_adap.bus_lock);
102038
102039 @@ -235,18 +232,12 @@
102040 } else if (efx->state != STATE_RUNNING || netif_running(efx->net_dev)) {
102041 err = -EBUSY;
102042 } else {
102043 - /* Reset the PHY, reconfigure the MAC and enable/disable
102044 - * MAC stats accordingly. */
102045 efx->phy_mode = new_mode;
102046 - if (new_mode & PHY_MODE_SPECIAL)
102047 - efx_stats_disable(efx);
102048 if (efx->board_info.type == EFX_BOARD_SFE4001)
102049 err = sfe4001_poweron(efx);
102050 else
102051 err = sfn4111t_reset(efx);
102052 efx_reconfigure_port(efx);
102053 - if (!(new_mode & PHY_MODE_SPECIAL))
102054 - efx_stats_enable(efx);
102055 }
102056 rtnl_unlock();
102057
102058 @@ -335,11 +326,6 @@
102059 efx->board_info.monitor = sfe4001_check_hw;
102060 efx->board_info.fini = sfe4001_fini;
102061
102062 - if (efx->phy_mode & PHY_MODE_SPECIAL) {
102063 - /* PHY won't generate a 156.25 MHz clock and MAC stats fetch
102064 - * will fail. */
102065 - efx_stats_disable(efx);
102066 - }
102067 rc = sfe4001_poweron(efx);
102068 if (rc)
102069 goto fail_ioexp;
102070 @@ -386,25 +372,17 @@
102071 i2c_unregister_device(efx->board_info.hwmon_client);
102072 }
102073
102074 -static struct i2c_board_info sfn4111t_a0_hwmon_info = {
102075 +static struct i2c_board_info sfn4111t_hwmon_info = {
102076 I2C_BOARD_INFO("max6647", 0x4e),
102077 .irq = -1,
102078 };
102079
102080 -static struct i2c_board_info sfn4111t_r5_hwmon_info = {
102081 - I2C_BOARD_INFO("max6646", 0x4d),
102082 - .irq = -1,
102083 -};
102084 -
102085 int sfn4111t_init(struct efx_nic *efx)
102086 {
102087 int rc;
102088
102089 efx->board_info.hwmon_client =
102090 - i2c_new_device(&efx->i2c_adap,
102091 - (efx->board_info.minor < 5) ?
102092 - &sfn4111t_a0_hwmon_info :
102093 - &sfn4111t_r5_hwmon_info);
102094 + i2c_new_device(&efx->i2c_adap, &sfn4111t_hwmon_info);
102095 if (!efx->board_info.hwmon_client)
102096 return -EIO;
102097
102098 @@ -416,10 +394,8 @@
102099 if (rc)
102100 goto fail_hwmon;
102101
102102 - if (efx->phy_mode & PHY_MODE_SPECIAL) {
102103 - efx_stats_disable(efx);
102104 + if (efx->phy_mode & PHY_MODE_SPECIAL)
102105 sfn4111t_reset(efx);
102106 - }
102107
102108 return 0;
102109
102110 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/tenxpress.c linux-2.6.29-rc3.owrt/drivers/net/sfc/tenxpress.c
102111 --- linux-2.6.29.owrt/drivers/net/sfc/tenxpress.c 2009-05-10 22:04:38.000000000 +0200
102112 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/tenxpress.c 2009-05-10 23:48:29.000000000 +0200
102113 @@ -67,8 +67,6 @@
102114 #define PMA_PMD_EXT_CLK312_WIDTH 1
102115 #define PMA_PMD_EXT_LPOWER_LBN 12
102116 #define PMA_PMD_EXT_LPOWER_WIDTH 1
102117 -#define PMA_PMD_EXT_ROBUST_LBN 14
102118 -#define PMA_PMD_EXT_ROBUST_WIDTH 1
102119 #define PMA_PMD_EXT_SSR_LBN 15
102120 #define PMA_PMD_EXT_SSR_WIDTH 1
102121
102122 @@ -179,24 +177,35 @@
102123 #define C22EXT_STATUS_LINK_LBN 2
102124 #define C22EXT_STATUS_LINK_WIDTH 1
102125
102126 -#define C22EXT_MSTSLV_CTRL 49161
102127 -#define C22EXT_MSTSLV_CTRL_ADV_1000_HD_LBN 8
102128 -#define C22EXT_MSTSLV_CTRL_ADV_1000_FD_LBN 9
102129 -
102130 -#define C22EXT_MSTSLV_STATUS 49162
102131 -#define C22EXT_MSTSLV_STATUS_LP_1000_HD_LBN 10
102132 -#define C22EXT_MSTSLV_STATUS_LP_1000_FD_LBN 11
102133 +#define C22EXT_MSTSLV_REG 49162
102134 +#define C22EXT_MSTSLV_1000_HD_LBN 10
102135 +#define C22EXT_MSTSLV_1000_HD_WIDTH 1
102136 +#define C22EXT_MSTSLV_1000_FD_LBN 11
102137 +#define C22EXT_MSTSLV_1000_FD_WIDTH 1
102138
102139 /* Time to wait between powering down the LNPGA and turning off the power
102140 * rails */
102141 #define LNPGA_PDOWN_WAIT (HZ / 5)
102142
102143 +static int crc_error_reset_threshold = 100;
102144 +module_param(crc_error_reset_threshold, int, 0644);
102145 +MODULE_PARM_DESC(crc_error_reset_threshold,
102146 + "Max number of CRC errors before XAUI reset");
102147 +
102148 struct tenxpress_phy_data {
102149 enum efx_loopback_mode loopback_mode;
102150 + atomic_t bad_crc_count;
102151 enum efx_phy_mode phy_mode;
102152 int bad_lp_tries;
102153 };
102154
102155 +void tenxpress_crc_err(struct efx_nic *efx)
102156 +{
102157 + struct tenxpress_phy_data *phy_data = efx->phy_data;
102158 + if (phy_data != NULL)
102159 + atomic_inc(&phy_data->bad_crc_count);
102160 +}
102161 +
102162 static ssize_t show_phy_short_reach(struct device *dev,
102163 struct device_attribute *attr, char *buf)
102164 {
102165 @@ -275,9 +284,7 @@
102166 PMA_PMD_XCONTROL_REG);
102167 reg |= ((1 << PMA_PMD_EXT_GMII_EN_LBN) |
102168 (1 << PMA_PMD_EXT_CLK_OUT_LBN) |
102169 - (1 << PMA_PMD_EXT_CLK312_LBN) |
102170 - (1 << PMA_PMD_EXT_ROBUST_LBN));
102171 -
102172 + (1 << PMA_PMD_EXT_CLK312_LBN));
102173 mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,
102174 PMA_PMD_XCONTROL_REG, reg);
102175 mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,
102176 @@ -339,7 +346,6 @@
102177 rc = tenxpress_init(efx);
102178 if (rc < 0)
102179 goto fail;
102180 - mdio_clause45_set_pause(efx);
102181
102182 if (efx->phy_type == PHY_TYPE_SFT9001B) {
102183 rc = device_create_file(&efx->pci_dev->dev,
102184 @@ -370,8 +376,8 @@
102185
102186 /* The XGMAC clock is driven from the SFC7101/SFT9001 312MHz clock, so
102187 * a special software reset can glitch the XGMAC sufficiently for stats
102188 - * requests to fail. */
102189 - efx_stats_disable(efx);
102190 + * requests to fail. Since we don't often special_reset, just lock. */
102191 + spin_lock(&efx->stats_lock);
102192
102193 /* Initiate reset */
102194 reg = mdio_clause45_read(efx, efx->mii.phy_id,
102195 @@ -386,17 +392,17 @@
102196 rc = mdio_clause45_wait_reset_mmds(efx,
102197 TENXPRESS_REQUIRED_DEVS);
102198 if (rc < 0)
102199 - goto out;
102200 + goto unlock;
102201
102202 /* Try and reconfigure the device */
102203 rc = tenxpress_init(efx);
102204 if (rc < 0)
102205 - goto out;
102206 + goto unlock;
102207
102208 /* Wait for the XGXS state machine to churn */
102209 mdelay(10);
102210 -out:
102211 - efx_stats_enable(efx);
102212 +unlock:
102213 + spin_unlock(&efx->stats_lock);
102214 return rc;
102215 }
102216
102217 @@ -514,7 +520,7 @@
102218 {
102219 struct tenxpress_phy_data *phy_data = efx->phy_data;
102220 struct ethtool_cmd ecmd;
102221 - bool phy_mode_change, loop_reset;
102222 + bool phy_mode_change, loop_reset, loop_toggle, loopback;
102223
102224 if (efx->phy_mode & (PHY_MODE_OFF | PHY_MODE_SPECIAL)) {
102225 phy_data->phy_mode = efx->phy_mode;
102226 @@ -525,10 +531,12 @@
102227
102228 phy_mode_change = (efx->phy_mode == PHY_MODE_NORMAL &&
102229 phy_data->phy_mode != PHY_MODE_NORMAL);
102230 + loopback = LOOPBACK_MASK(efx) & efx->phy_op->loopbacks;
102231 + loop_toggle = LOOPBACK_CHANGED(phy_data, efx, efx->phy_op->loopbacks);
102232 loop_reset = (LOOPBACK_OUT_OF(phy_data, efx, efx->phy_op->loopbacks) ||
102233 LOOPBACK_CHANGED(phy_data, efx, 1 << LOOPBACK_GPHY));
102234
102235 - if (loop_reset || phy_mode_change) {
102236 + if (loop_reset || loop_toggle || loopback || phy_mode_change) {
102237 int rc;
102238
102239 efx->phy_op->get_settings(efx, &ecmd);
102240 @@ -543,6 +551,20 @@
102241 falcon_reset_xaui(efx);
102242 }
102243
102244 + if (efx->phy_type != PHY_TYPE_SFX7101) {
102245 + /* Only change autoneg once, on coming out or
102246 + * going into loopback */
102247 + if (loop_toggle)
102248 + ecmd.autoneg = !loopback;
102249 + if (loopback) {
102250 + ecmd.duplex = DUPLEX_FULL;
102251 + if (efx->loopback_mode == LOOPBACK_GPHY)
102252 + ecmd.speed = SPEED_1000;
102253 + else
102254 + ecmd.speed = SPEED_10000;
102255 + }
102256 + }
102257 +
102258 rc = efx->phy_op->set_settings(efx, &ecmd);
102259 WARN_ON(rc);
102260 }
102261 @@ -601,6 +623,13 @@
102262
102263 if (phy_data->phy_mode != PHY_MODE_NORMAL)
102264 return;
102265 +
102266 + if (EFX_WORKAROUND_10750(efx) &&
102267 + atomic_read(&phy_data->bad_crc_count) > crc_error_reset_threshold) {
102268 + EFX_ERR(efx, "Resetting XAUI due to too many CRC errors\n");
102269 + falcon_reset_xaui(efx);
102270 + atomic_set(&phy_data->bad_crc_count, 0);
102271 + }
102272 }
102273
102274 static void tenxpress_phy_fini(struct efx_nic *efx)
102275 @@ -743,76 +772,107 @@
102276 return rc;
102277 }
102278
102279 -static void
102280 -tenxpress_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)
102281 +static u32 tenxpress_get_xnp_lpa(struct efx_nic *efx)
102282 {
102283 - int phy_id = efx->mii.phy_id;
102284 - u32 adv = 0, lpa = 0;
102285 + int phy = efx->mii.phy_id;
102286 + u32 lpa = 0;
102287 int reg;
102288
102289 if (efx->phy_type != PHY_TYPE_SFX7101) {
102290 - reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_C22EXT,
102291 - C22EXT_MSTSLV_CTRL);
102292 - if (reg & (1 << C22EXT_MSTSLV_CTRL_ADV_1000_FD_LBN))
102293 - adv |= ADVERTISED_1000baseT_Full;
102294 - reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_C22EXT,
102295 - C22EXT_MSTSLV_STATUS);
102296 - if (reg & (1 << C22EXT_MSTSLV_STATUS_LP_1000_HD_LBN))
102297 + reg = mdio_clause45_read(efx, phy, MDIO_MMD_C22EXT,
102298 + C22EXT_MSTSLV_REG);
102299 + if (reg & (1 << C22EXT_MSTSLV_1000_HD_LBN))
102300 lpa |= ADVERTISED_1000baseT_Half;
102301 - if (reg & (1 << C22EXT_MSTSLV_STATUS_LP_1000_FD_LBN))
102302 + if (reg & (1 << C22EXT_MSTSLV_1000_FD_LBN))
102303 lpa |= ADVERTISED_1000baseT_Full;
102304 }
102305 - reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,
102306 - MDIO_AN_10GBT_CTRL);
102307 - if (reg & (1 << MDIO_AN_10GBT_CTRL_ADV_10G_LBN))
102308 - adv |= ADVERTISED_10000baseT_Full;
102309 - reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,
102310 - MDIO_AN_10GBT_STATUS);
102311 + reg = mdio_clause45_read(efx, phy, MDIO_MMD_AN, MDIO_AN_10GBT_STATUS);
102312 if (reg & (1 << MDIO_AN_10GBT_STATUS_LP_10G_LBN))
102313 lpa |= ADVERTISED_10000baseT_Full;
102314 -
102315 - mdio_clause45_get_settings_ext(efx, ecmd, adv, lpa);
102316 -
102317 - if (efx->phy_type != PHY_TYPE_SFX7101)
102318 - ecmd->supported |= (SUPPORTED_100baseT_Full |
102319 - SUPPORTED_1000baseT_Full);
102320 -
102321 - /* In loopback, the PHY automatically brings up the correct interface,
102322 - * but doesn't advertise the correct speed. So override it */
102323 - if (efx->loopback_mode == LOOPBACK_GPHY)
102324 - ecmd->speed = SPEED_1000;
102325 - else if (LOOPBACK_MASK(efx) & efx->phy_op->loopbacks)
102326 - ecmd->speed = SPEED_10000;
102327 + return lpa;
102328 }
102329
102330 -static int tenxpress_set_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)
102331 +static void sfx7101_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)
102332 {
102333 - if (!ecmd->autoneg)
102334 - return -EINVAL;
102335 -
102336 - return mdio_clause45_set_settings(efx, ecmd);
102337 + mdio_clause45_get_settings_ext(efx, ecmd, ADVERTISED_10000baseT_Full,
102338 + tenxpress_get_xnp_lpa(efx));
102339 + ecmd->supported |= SUPPORTED_10000baseT_Full;
102340 + ecmd->advertising |= ADVERTISED_10000baseT_Full;
102341 }
102342
102343 -static void sfx7101_set_npage_adv(struct efx_nic *efx, u32 advertising)
102344 +static void sft9001_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)
102345 {
102346 - mdio_clause45_set_flag(efx, efx->mii.phy_id, MDIO_MMD_AN,
102347 - MDIO_AN_10GBT_CTRL,
102348 - MDIO_AN_10GBT_CTRL_ADV_10G_LBN,
102349 - advertising & ADVERTISED_10000baseT_Full);
102350 + int phy_id = efx->mii.phy_id;
102351 + u32 xnp_adv = 0;
102352 + int reg;
102353 +
102354 + reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,
102355 + PMA_PMD_SPEED_ENABLE_REG);
102356 + if (EFX_WORKAROUND_13204(efx) && (reg & (1 << PMA_PMD_100TX_ADV_LBN)))
102357 + xnp_adv |= ADVERTISED_100baseT_Full;
102358 + if (reg & (1 << PMA_PMD_1000T_ADV_LBN))
102359 + xnp_adv |= ADVERTISED_1000baseT_Full;
102360 + if (reg & (1 << PMA_PMD_10000T_ADV_LBN))
102361 + xnp_adv |= ADVERTISED_10000baseT_Full;
102362 +
102363 + mdio_clause45_get_settings_ext(efx, ecmd, xnp_adv,
102364 + tenxpress_get_xnp_lpa(efx));
102365 +
102366 + ecmd->supported |= (SUPPORTED_100baseT_Half |
102367 + SUPPORTED_100baseT_Full |
102368 + SUPPORTED_1000baseT_Full);
102369 +
102370 + /* Use the vendor defined C22ext register for duplex settings */
102371 + if (ecmd->speed != SPEED_10000 && !ecmd->autoneg) {
102372 + reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_C22EXT,
102373 + GPHY_XCONTROL_REG);
102374 + ecmd->duplex = (reg & (1 << GPHY_DUPLEX_LBN) ?
102375 + DUPLEX_FULL : DUPLEX_HALF);
102376 + }
102377 }
102378
102379 -static void sft9001_set_npage_adv(struct efx_nic *efx, u32 advertising)
102380 +static int sft9001_set_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)
102381 {
102382 int phy_id = efx->mii.phy_id;
102383 + int rc;
102384
102385 - mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,
102386 - C22EXT_MSTSLV_CTRL,
102387 - C22EXT_MSTSLV_CTRL_ADV_1000_FD_LBN,
102388 - advertising & ADVERTISED_1000baseT_Full);
102389 - mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_AN,
102390 - MDIO_AN_10GBT_CTRL,
102391 - MDIO_AN_10GBT_CTRL_ADV_10G_LBN,
102392 - advertising & ADVERTISED_10000baseT_Full);
102393 + rc = mdio_clause45_set_settings(efx, ecmd);
102394 + if (rc)
102395 + return rc;
102396 +
102397 + if (ecmd->speed != SPEED_10000 && !ecmd->autoneg)
102398 + mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,
102399 + GPHY_XCONTROL_REG, GPHY_DUPLEX_LBN,
102400 + ecmd->duplex == DUPLEX_FULL);
102401 +
102402 + return rc;
102403 +}
102404 +
102405 +static bool sft9001_set_xnp_advertise(struct efx_nic *efx, u32 advertising)
102406 +{
102407 + int phy = efx->mii.phy_id;
102408 + int reg = mdio_clause45_read(efx, phy, MDIO_MMD_PMAPMD,
102409 + PMA_PMD_SPEED_ENABLE_REG);
102410 + bool enabled;
102411 +
102412 + reg &= ~((1 << 2) | (1 << 3));
102413 + if (EFX_WORKAROUND_13204(efx) &&
102414 + (advertising & ADVERTISED_100baseT_Full))
102415 + reg |= 1 << PMA_PMD_100TX_ADV_LBN;
102416 + if (advertising & ADVERTISED_1000baseT_Full)
102417 + reg |= 1 << PMA_PMD_1000T_ADV_LBN;
102418 + if (advertising & ADVERTISED_10000baseT_Full)
102419 + reg |= 1 << PMA_PMD_10000T_ADV_LBN;
102420 + mdio_clause45_write(efx, phy, MDIO_MMD_PMAPMD,
102421 + PMA_PMD_SPEED_ENABLE_REG, reg);
102422 +
102423 + enabled = (advertising &
102424 + (ADVERTISED_1000baseT_Half |
102425 + ADVERTISED_1000baseT_Full |
102426 + ADVERTISED_10000baseT_Full));
102427 + if (EFX_WORKAROUND_13204(efx))
102428 + enabled |= (advertising & ADVERTISED_100baseT_Full);
102429 + return enabled;
102430 }
102431
102432 struct efx_phy_operations falcon_sfx7101_phy_ops = {
102433 @@ -822,9 +882,8 @@
102434 .poll = tenxpress_phy_poll,
102435 .fini = tenxpress_phy_fini,
102436 .clear_interrupt = efx_port_dummy_op_void,
102437 - .get_settings = tenxpress_get_settings,
102438 - .set_settings = tenxpress_set_settings,
102439 - .set_npage_adv = sfx7101_set_npage_adv,
102440 + .get_settings = sfx7101_get_settings,
102441 + .set_settings = mdio_clause45_set_settings,
102442 .num_tests = ARRAY_SIZE(sfx7101_test_names),
102443 .test_names = sfx7101_test_names,
102444 .run_tests = sfx7101_run_tests,
102445 @@ -839,9 +898,9 @@
102446 .poll = tenxpress_phy_poll,
102447 .fini = tenxpress_phy_fini,
102448 .clear_interrupt = efx_port_dummy_op_void,
102449 - .get_settings = tenxpress_get_settings,
102450 - .set_settings = tenxpress_set_settings,
102451 - .set_npage_adv = sft9001_set_npage_adv,
102452 + .get_settings = sft9001_get_settings,
102453 + .set_settings = sft9001_set_settings,
102454 + .set_xnp_advertise = sft9001_set_xnp_advertise,
102455 .num_tests = ARRAY_SIZE(sft9001_test_names),
102456 .test_names = sft9001_test_names,
102457 .run_tests = sft9001_run_tests,
102458 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sfc/workarounds.h linux-2.6.29-rc3.owrt/drivers/net/sfc/workarounds.h
102459 --- linux-2.6.29.owrt/drivers/net/sfc/workarounds.h 2009-05-10 22:04:38.000000000 +0200
102460 +++ linux-2.6.29-rc3.owrt/drivers/net/sfc/workarounds.h 2009-05-10 23:48:29.000000000 +0200
102461 @@ -18,8 +18,8 @@
102462 #define EFX_WORKAROUND_ALWAYS(efx) 1
102463 #define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1)
102464 #define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx)
102465 -#define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \
102466 - (efx)->phy_type == PHY_TYPE_SFT9001B)
102467 +#define EFX_WORKAROUND_SFX7101(efx) ((efx)->phy_type == PHY_TYPE_SFX7101)
102468 +#define EFX_WORKAROUND_SFT9001A(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A)
102469
102470 /* XAUI resets if link not detected */
102471 #define EFX_WORKAROUND_5147 EFX_WORKAROUND_ALWAYS
102472 @@ -29,6 +29,8 @@
102473 #define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G
102474 /* TX pkt parser problem with <= 16 byte TXes */
102475 #define EFX_WORKAROUND_9141 EFX_WORKAROUND_ALWAYS
102476 +/* Low rate CRC errors require XAUI reset */
102477 +#define EFX_WORKAROUND_10750 EFX_WORKAROUND_SFX7101
102478 /* TX_EV_PKT_ERR can be caused by a dangling TX descriptor
102479 * or a PCIe error (bug 11028) */
102480 #define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS
102481 @@ -53,8 +55,8 @@
102482 #define EFX_WORKAROUND_8071 EFX_WORKAROUND_FALCON_A
102483
102484 /* Need to send XNP pages for 100BaseT */
102485 -#define EFX_WORKAROUND_13204 EFX_WORKAROUND_SFT9001
102486 -/* Don't restart AN in near-side loopback */
102487 -#define EFX_WORKAROUND_15195 EFX_WORKAROUND_SFT9001
102488 +#define EFX_WORKAROUND_13204 EFX_WORKAROUND_SFT9001A
102489 +/* Need to keep AN enabled */
102490 +#define EFX_WORKAROUND_13963 EFX_WORKAROUND_SFT9001A
102491
102492 #endif /* EFX_WORKAROUNDS_H */
102493 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sh_eth.c linux-2.6.29-rc3.owrt/drivers/net/sh_eth.c
102494 --- linux-2.6.29.owrt/drivers/net/sh_eth.c 2009-05-10 22:04:38.000000000 +0200
102495 +++ linux-2.6.29-rc3.owrt/drivers/net/sh_eth.c 2009-05-10 23:48:29.000000000 +0200
102496 @@ -687,7 +687,6 @@
102497 {
102498 struct net_device *ndev = netdev;
102499 struct sh_eth_private *mdp = netdev_priv(ndev);
102500 - irqreturn_t ret = IRQ_NONE;
102501 u32 ioaddr, boguscnt = RX_RING_SIZE;
102502 u32 intr_status = 0;
102503
102504 @@ -697,13 +696,7 @@
102505 /* Get interrpt stat */
102506 intr_status = ctrl_inl(ioaddr + EESR);
102507 /* Clear interrupt */
102508 - if (intr_status & (EESR_FRC | EESR_RMAF | EESR_RRF |
102509 - EESR_RTLF | EESR_RTSF | EESR_PRE | EESR_CERF |
102510 - TX_CHECK | EESR_ERR_CHECK)) {
102511 - ctrl_outl(intr_status, ioaddr + EESR);
102512 - ret = IRQ_HANDLED;
102513 - } else
102514 - goto other_irq;
102515 + ctrl_outl(intr_status, ioaddr + EESR);
102516
102517 if (intr_status & (EESR_FRC | /* Frame recv*/
102518 EESR_RMAF | /* Multi cast address recv*/
102519 @@ -730,10 +723,9 @@
102520 ndev->name, intr_status);
102521 }
102522
102523 -other_irq:
102524 spin_unlock(&mdp->lock);
102525
102526 - return ret;
102527 + return IRQ_HANDLED;
102528 }
102529
102530 static void sh_eth_timer(unsigned long data)
102531 @@ -852,13 +844,7 @@
102532 int ret = 0;
102533 struct sh_eth_private *mdp = netdev_priv(ndev);
102534
102535 - ret = request_irq(ndev->irq, &sh_eth_interrupt,
102536 -#if defined(CONFIG_CPU_SUBTYPE_SH7763) || defined(CONFIG_CPU_SUBTYPE_SH7764)
102537 - IRQF_SHARED,
102538 -#else
102539 - 0,
102540 -#endif
102541 - ndev->name, ndev);
102542 + ret = request_irq(ndev->irq, &sh_eth_interrupt, 0, ndev->name, ndev);
102543 if (ret) {
102544 printk(KERN_ERR "Can not assign IRQ number to %s\n", CARDNAME);
102545 return ret;
102546 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sh_eth.h linux-2.6.29-rc3.owrt/drivers/net/sh_eth.h
102547 --- linux-2.6.29.owrt/drivers/net/sh_eth.h 2009-05-10 22:04:38.000000000 +0200
102548 +++ linux-2.6.29-rc3.owrt/drivers/net/sh_eth.h 2009-05-10 23:48:29.000000000 +0200
102549 @@ -43,8 +43,8 @@
102550
102551 #define SH7763_SKB_ALIGN 32
102552 /* Chip Base Address */
102553 -# define SH_TSU_ADDR 0xFEE01800
102554 -# define ARSTR SH_TSU_ADDR
102555 +# define SH_TSU_ADDR 0xFFE01800
102556 +# define ARSTR 0xFFE01800
102557
102558 /* Chip Registers */
102559 /* E-DMAC */
102560 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/skfp/skfddi.c linux-2.6.29-rc3.owrt/drivers/net/skfp/skfddi.c
102561 --- linux-2.6.29.owrt/drivers/net/skfp/skfddi.c 2009-05-10 22:04:38.000000000 +0200
102562 +++ linux-2.6.29-rc3.owrt/drivers/net/skfp/skfddi.c 2009-05-10 23:48:29.000000000 +0200
102563 @@ -1003,9 +1003,9 @@
102564 break;
102565 case SKFP_CLR_STATS: /* Zero out the driver statistics */
102566 if (!capable(CAP_NET_ADMIN)) {
102567 - status = -EPERM;
102568 - } else {
102569 memset(&lp->MacStat, 0, sizeof(lp->MacStat));
102570 + } else {
102571 + status = -EPERM;
102572 }
102573 break;
102574 default:
102575 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sky2.c linux-2.6.29-rc3.owrt/drivers/net/sky2.c
102576 --- linux-2.6.29.owrt/drivers/net/sky2.c 2009-05-10 22:04:38.000000000 +0200
102577 +++ linux-2.6.29-rc3.owrt/drivers/net/sky2.c 2009-05-10 23:48:29.000000000 +0200
102578 @@ -1403,6 +1403,9 @@
102579
102580 }
102581
102582 + if (netif_msg_ifup(sky2))
102583 + printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);
102584 +
102585 netif_carrier_off(dev);
102586
102587 /* must be power of 2 */
102588 @@ -1481,9 +1484,6 @@
102589 sky2_write32(hw, B0_IMSK, imask);
102590
102591 sky2_set_multicast(dev);
102592 -
102593 - if (netif_msg_ifup(sky2))
102594 - printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);
102595 return 0;
102596
102597 err_out:
102598 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/smc911x.c linux-2.6.29-rc3.owrt/drivers/net/smc911x.c
102599 --- linux-2.6.29.owrt/drivers/net/smc911x.c 2009-05-10 22:04:38.000000000 +0200
102600 +++ linux-2.6.29-rc3.owrt/drivers/net/smc911x.c 2009-05-10 23:48:29.000000000 +0200
102601 @@ -220,9 +220,9 @@
102602
102603 /* make sure EEPROM has finished loading before setting GPIO_CFG */
102604 timeout=1000;
102605 - while (--timeout && (SMC_GET_E2P_CMD(lp) & E2P_CMD_EPC_BUSY_))
102606 + while ( timeout-- && (SMC_GET_E2P_CMD(lp) & E2P_CMD_EPC_BUSY_)) {
102607 udelay(10);
102608 -
102609 + }
102610 if (timeout == 0){
102611 PRINTK("%s: smc911x_reset timeout waiting for EEPROM busy\n", dev->name);
102612 return;
102613 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/smc911x.h linux-2.6.29-rc3.owrt/drivers/net/smc911x.h
102614 --- linux-2.6.29.owrt/drivers/net/smc911x.h 2009-05-10 22:04:38.000000000 +0200
102615 +++ linux-2.6.29-rc3.owrt/drivers/net/smc911x.h 2009-05-10 23:48:29.000000000 +0200
102616 @@ -42,16 +42,6 @@
102617 #define SMC_USE_16BIT 0
102618 #define SMC_USE_32BIT 1
102619 #define SMC_IRQ_SENSE IRQF_TRIGGER_LOW
102620 -#elif defined(CONFIG_ARCH_OMAP34XX)
102621 - #define SMC_USE_16BIT 0
102622 - #define SMC_USE_32BIT 1
102623 - #define SMC_IRQ_SENSE IRQF_TRIGGER_LOW
102624 - #define SMC_MEM_RESERVED 1
102625 -#elif defined(CONFIG_ARCH_OMAP24XX)
102626 - #define SMC_USE_16BIT 0
102627 - #define SMC_USE_32BIT 1
102628 - #define SMC_IRQ_SENSE IRQF_TRIGGER_LOW
102629 - #define SMC_MEM_RESERVED 1
102630 #else
102631 /*
102632 * Default configuration
102633 @@ -685,7 +675,6 @@
102634 #define CHIP_9116 0x0116
102635 #define CHIP_9117 0x0117
102636 #define CHIP_9118 0x0118
102637 -#define CHIP_9211 0x9211
102638 #define CHIP_9215 0x115A
102639 #define CHIP_9217 0x117A
102640 #define CHIP_9218 0x118A
102641 @@ -700,7 +689,6 @@
102642 { CHIP_9116, "LAN9116" },
102643 { CHIP_9117, "LAN9117" },
102644 { CHIP_9118, "LAN9118" },
102645 - { CHIP_9211, "LAN9211" },
102646 { CHIP_9215, "LAN9215" },
102647 { CHIP_9217, "LAN9217" },
102648 { CHIP_9218, "LAN9218" },
102649 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/smsc911x.c linux-2.6.29-rc3.owrt/drivers/net/smsc911x.c
102650 --- linux-2.6.29.owrt/drivers/net/smsc911x.c 2009-05-10 22:04:38.000000000 +0200
102651 +++ linux-2.6.29-rc3.owrt/drivers/net/smsc911x.c 2009-05-10 23:48:29.000000000 +0200
102652 @@ -953,7 +953,7 @@
102653 do {
102654 udelay(1);
102655 val = smsc911x_reg_read(pdata, RX_DP_CTRL);
102656 - } while (--timeout && (val & RX_DP_CTRL_RX_FFWD_));
102657 + } while (timeout-- && (val & RX_DP_CTRL_RX_FFWD_));
102658
102659 if (unlikely(timeout == 0))
102660 SMSC_WARNING(HW, "Timed out waiting for "
102661 @@ -1225,10 +1225,6 @@
102662 dev_info(&dev->dev, "SMSC911x/921x identified at %#08lx, IRQ: %d\n",
102663 (unsigned long)pdata->ioaddr, dev->irq);
102664
102665 - /* Reset the last known duplex and carrier */
102666 - pdata->last_duplex = -1;
102667 - pdata->last_carrier = -1;
102668 -
102669 /* Bring the PHY up */
102670 phy_start(pdata->phy_dev);
102671
102672 @@ -1628,7 +1624,7 @@
102673 do {
102674 msleep(1);
102675 e2cmd = smsc911x_reg_read(pdata, E2P_CMD);
102676 - } while ((e2cmd & E2P_CMD_EPC_BUSY_) && (--timeout));
102677 + } while ((e2cmd & E2P_CMD_EPC_BUSY_) && (timeout--));
102678
102679 if (!timeout) {
102680 SMSC_TRACE(DRV, "TIMED OUT");
102681 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/smsc9420.c linux-2.6.29-rc3.owrt/drivers/net/smsc9420.c
102682 --- linux-2.6.29.owrt/drivers/net/smsc9420.c 2009-05-10 22:04:38.000000000 +0200
102683 +++ linux-2.6.29-rc3.owrt/drivers/net/smsc9420.c 2009-05-10 23:48:29.000000000 +0200
102684 @@ -341,7 +341,7 @@
102685 do {
102686 msleep(1);
102687 e2cmd = smsc9420_reg_read(pd, E2P_CMD);
102688 - } while ((e2cmd & E2P_CMD_EPC_BUSY_) && (--timeout));
102689 + } while ((e2cmd & E2P_CMD_EPC_BUSY_) && (timeout--));
102690
102691 if (!timeout) {
102692 smsc_info(HW, "TIMED OUT");
102693 @@ -413,7 +413,6 @@
102694 }
102695
102696 memcpy(data, &eeprom_data[eeprom->offset], len);
102697 - eeprom->magic = SMSC9420_EEPROM_MAGIC;
102698 eeprom->len = len;
102699 return 0;
102700 }
102701 @@ -424,9 +423,6 @@
102702 struct smsc9420_pdata *pd = netdev_priv(dev);
102703 int ret;
102704
102705 - if (eeprom->magic != SMSC9420_EEPROM_MAGIC)
102706 - return -EINVAL;
102707 -
102708 smsc9420_eeprom_enable_access(pd);
102709 smsc9420_eeprom_send_cmd(pd, E2P_CMD_EPC_CMD_EWEN_);
102710 ret = smsc9420_eeprom_write_location(pd, eeprom->offset, *data);
102711 @@ -502,7 +498,7 @@
102712 static void smsc9420_stop_tx(struct smsc9420_pdata *pd)
102713 {
102714 u32 dmac_control, mac_cr, dma_intr_ena;
102715 - int timeout = 1000;
102716 + int timeOut = 1000;
102717
102718 /* disable TX DMAC */
102719 dmac_control = smsc9420_reg_read(pd, DMAC_CONTROL);
102720 @@ -510,13 +506,13 @@
102721 smsc9420_reg_write(pd, DMAC_CONTROL, dmac_control);
102722
102723 /* Wait max 10ms for transmit process to stop */
102724 - while (--timeout) {
102725 + while (timeOut--) {
102726 if (smsc9420_reg_read(pd, DMAC_STATUS) & DMAC_STS_TS_)
102727 break;
102728 udelay(10);
102729 }
102730
102731 - if (!timeout)
102732 + if (!timeOut)
102733 smsc_warn(IFDOWN, "TX DMAC failed to stop");
102734
102735 /* ACK Tx DMAC stop bit */
102736 @@ -600,7 +596,7 @@
102737
102738 static void smsc9420_stop_rx(struct smsc9420_pdata *pd)
102739 {
102740 - int timeout = 1000;
102741 + int timeOut = 1000;
102742 u32 mac_cr, dmac_control, dma_intr_ena;
102743
102744 /* mask RX DMAC interrupts */
102745 @@ -621,13 +617,13 @@
102746 smsc9420_pci_flush_write(pd);
102747
102748 /* wait up to 10ms for receive to stop */
102749 - while (--timeout) {
102750 + while (timeOut--) {
102751 if (smsc9420_reg_read(pd, DMAC_STATUS) & DMAC_STS_RS_)
102752 break;
102753 udelay(10);
102754 }
102755
102756 - if (!timeout)
102757 + if (!timeOut)
102758 smsc_warn(IFDOWN, "RX DMAC did not stop! timeout.");
102759
102760 /* ACK the Rx DMAC stop bit */
102761 @@ -1382,7 +1378,6 @@
102762
102763 /* test the IRQ connection to the ISR */
102764 smsc_dbg(IFUP, "Testing ISR using IRQ %d", dev->irq);
102765 - pd->software_irq_signal = false;
102766
102767 spin_lock_irqsave(&pd->int_lock, flags);
102768 /* configure interrupt deassertion timer and enable interrupts */
102769 @@ -1398,6 +1393,8 @@
102770 smsc9420_pci_flush_write(pd);
102771
102772 timeout = 1000;
102773 + pd->software_irq_signal = false;
102774 + smp_wmb();
102775 while (timeout--) {
102776 if (pd->software_irq_signal)
102777 break;
102778 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/smsc9420.h linux-2.6.29-rc3.owrt/drivers/net/smsc9420.h
102779 --- linux-2.6.29.owrt/drivers/net/smsc9420.h 2009-05-10 22:04:38.000000000 +0200
102780 +++ linux-2.6.29-rc3.owrt/drivers/net/smsc9420.h 2009-05-10 23:48:29.000000000 +0200
102781 @@ -44,7 +44,6 @@
102782 #define LAN_REGISTER_EXTENT (0x400)
102783
102784 #define SMSC9420_EEPROM_SIZE ((u32)11)
102785 -#define SMSC9420_EEPROM_MAGIC (0x9420)
102786
102787 #define PKT_BUF_SZ (VLAN_ETH_FRAME_LEN + NET_IP_ALIGN + 4)
102788
102789 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sun3lance.c linux-2.6.29-rc3.owrt/drivers/net/sun3lance.c
102790 --- linux-2.6.29.owrt/drivers/net/sun3lance.c 2009-05-10 22:04:38.000000000 +0200
102791 +++ linux-2.6.29-rc3.owrt/drivers/net/sun3lance.c 2009-05-10 23:48:29.000000000 +0200
102792 @@ -428,7 +428,7 @@
102793 while (--i > 0)
102794 if (DREG & CSR0_IDON)
102795 break;
102796 - if (i <= 0 || (DREG & CSR0_ERR)) {
102797 + if (i < 0 || (DREG & CSR0_ERR)) {
102798 DPRINTK( 2, ( "lance_open(): opening %s failed, i=%d, csr0=%04x\n",
102799 dev->name, i, DREG ));
102800 DREG = CSR0_STOP;
102801 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sundance.c linux-2.6.29-rc3.owrt/drivers/net/sundance.c
102802 --- linux-2.6.29.owrt/drivers/net/sundance.c 2009-05-10 22:04:38.000000000 +0200
102803 +++ linux-2.6.29-rc3.owrt/drivers/net/sundance.c 2009-05-10 23:48:29.000000000 +0200
102804 @@ -909,7 +909,7 @@
102805 printk(KERN_INFO "%s: Setting %s-duplex based on MII #%d "
102806 "negotiated capability %4.4x.\n", dev->name,
102807 duplex ? "full" : "half", np->phys[0], negotiated);
102808 - iowrite16(ioread16(ioaddr + MACCtrl0) | (duplex ? 0x20 : 0), ioaddr + MACCtrl0);
102809 + iowrite16(ioread16(ioaddr + MACCtrl0) | duplex ? 0x20 : 0, ioaddr + MACCtrl0);
102810 }
102811 }
102812
102813 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sungem.c linux-2.6.29-rc3.owrt/drivers/net/sungem.c
102814 --- linux-2.6.29.owrt/drivers/net/sungem.c 2009-05-10 22:04:38.000000000 +0200
102815 +++ linux-2.6.29-rc3.owrt/drivers/net/sungem.c 2009-05-10 23:48:29.000000000 +0200
102816 @@ -148,7 +148,7 @@
102817 cmd |= (MIF_FRAME_TAMSB);
102818 writel(cmd, gp->regs + MIF_FRAME);
102819
102820 - while (--limit) {
102821 + while (limit--) {
102822 cmd = readl(gp->regs + MIF_FRAME);
102823 if (cmd & MIF_FRAME_TALSB)
102824 break;
102825 @@ -1157,7 +1157,7 @@
102826 if (limit-- <= 0)
102827 break;
102828 }
102829 - if (limit < 0)
102830 + if (limit <= 0)
102831 printk(KERN_WARNING "%s: PCS reset bit would not clear.\n",
102832 gp->dev->name);
102833 }
102834 @@ -1229,7 +1229,7 @@
102835 break;
102836 } while (val & (GREG_SWRST_TXRST | GREG_SWRST_RXRST));
102837
102838 - if (limit < 0)
102839 + if (limit <= 0)
102840 printk(KERN_ERR "%s: SW reset is ghetto.\n", gp->dev->name);
102841
102842 if (gp->phy_type == phy_serialink || gp->phy_type == phy_serdes)
102843 @@ -2221,8 +2221,6 @@
102844
102845 gp->running = 1;
102846
102847 - napi_enable(&gp->napi);
102848 -
102849 if (gp->lstate == link_up) {
102850 netif_carrier_on(gp->dev);
102851 gem_set_link_modes(gp);
102852 @@ -2240,8 +2238,6 @@
102853 spin_lock_irqsave(&gp->lock, flags);
102854 spin_lock(&gp->tx_lock);
102855
102856 - napi_disable(&gp->napi);
102857 -
102858 gp->running = 0;
102859 gem_reset(gp);
102860 gem_clean_rings(gp);
102861 @@ -2342,6 +2338,8 @@
102862 if (!gp->asleep)
102863 rc = gem_do_start(dev);
102864 gp->opened = (rc == 0);
102865 + if (gp->opened)
102866 + napi_enable(&gp->napi);
102867
102868 mutex_unlock(&gp->pm_mutex);
102869
102870 @@ -2478,6 +2476,8 @@
102871
102872 /* Re-attach net device */
102873 netif_device_attach(dev);
102874 +
102875 + napi_enable(&gp->napi);
102876 }
102877
102878 spin_lock_irqsave(&gp->lock, flags);
102879 @@ -2998,11 +2998,8 @@
102880 .ndo_do_ioctl = gem_ioctl,
102881 .ndo_tx_timeout = gem_tx_timeout,
102882 .ndo_change_mtu = gem_change_mtu,
102883 + .ndo_set_mac_address = eth_mac_addr,
102884 .ndo_validate_addr = eth_validate_addr,
102885 - .ndo_set_mac_address = gem_set_mac_address,
102886 -#ifdef CONFIG_NET_POLL_CONTROLLER
102887 - .ndo_poll_controller = gem_poll_controller,
102888 -#endif
102889 };
102890
102891 static int __devinit gem_init_one(struct pci_dev *pdev,
102892 @@ -3164,6 +3161,10 @@
102893 dev->watchdog_timeo = 5 * HZ;
102894 dev->irq = pdev->irq;
102895 dev->dma = 0;
102896 + dev->set_mac_address = gem_set_mac_address;
102897 +#ifdef CONFIG_NET_POLL_CONTROLLER
102898 + dev->poll_controller = gem_poll_controller;
102899 +#endif
102900
102901 /* Set that now, in case PM kicks in now */
102902 pci_set_drvdata(pdev, dev);
102903 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sungem_phy.c linux-2.6.29-rc3.owrt/drivers/net/sungem_phy.c
102904 --- linux-2.6.29.owrt/drivers/net/sungem_phy.c 2009-05-10 22:04:38.000000000 +0200
102905 +++ linux-2.6.29-rc3.owrt/drivers/net/sungem_phy.c 2009-05-10 23:48:29.000000000 +0200
102906 @@ -79,7 +79,7 @@
102907
102908 udelay(100);
102909
102910 - while (--limit) {
102911 + while (limit--) {
102912 val = __phy_read(phy, phy_id, MII_BMCR);
102913 if ((val & BMCR_RESET) == 0)
102914 break;
102915 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sunhme.c linux-2.6.29-rc3.owrt/drivers/net/sunhme.c
102916 --- linux-2.6.29.owrt/drivers/net/sunhme.c 2009-05-10 22:04:38.000000000 +0200
102917 +++ linux-2.6.29-rc3.owrt/drivers/net/sunhme.c 2009-05-10 23:48:29.000000000 +0200
102918 @@ -2543,36 +2543,25 @@
102919 }
102920
102921 /* After all quattro cards have been probed, we call these functions
102922 - * to register the IRQ handlers for the cards that have been
102923 - * successfully probed and skip the cards that failed to initialize
102924 + * to register the IRQ handlers.
102925 */
102926 -static int __init quattro_sbus_register_irqs(void)
102927 +static void __init quattro_sbus_register_irqs(void)
102928 {
102929 struct quattro *qp;
102930
102931 for (qp = qfe_sbus_list; qp != NULL; qp = qp->next) {
102932 struct of_device *op = qp->quattro_dev;
102933 - int err, qfe_slot, skip = 0;
102934 -
102935 - for (qfe_slot = 0; qfe_slot < 4; qfe_slot++) {
102936 - if (!qp->happy_meals[qfe_slot])
102937 - skip = 1;
102938 - }
102939 - if (skip)
102940 - continue;
102941 + int err;
102942
102943 err = request_irq(op->irqs[0],
102944 quattro_sbus_interrupt,
102945 IRQF_SHARED, "Quattro",
102946 qp);
102947 if (err != 0) {
102948 - printk(KERN_ERR "Quattro HME: IRQ registration "
102949 - "error %d.\n", err);
102950 - return err;
102951 + printk(KERN_ERR "Quattro: Fatal IRQ registery error %d.\n", err);
102952 + panic("QFE request irq");
102953 }
102954 }
102955 -
102956 - return 0;
102957 }
102958
102959 static void quattro_sbus_free_irqs(void)
102960 @@ -2581,14 +2570,6 @@
102961
102962 for (qp = qfe_sbus_list; qp != NULL; qp = qp->next) {
102963 struct of_device *op = qp->quattro_dev;
102964 - int qfe_slot, skip = 0;
102965 -
102966 - for (qfe_slot = 0; qfe_slot < 4; qfe_slot++) {
102967 - if (!qp->happy_meals[qfe_slot])
102968 - skip = 1;
102969 - }
102970 - if (skip)
102971 - continue;
102972
102973 free_irq(op->irqs[0], qp);
102974 }
102975 @@ -2648,12 +2629,6 @@
102976 int i, qfe_slot = -1;
102977 int err = -ENODEV;
102978
102979 - sbus_dp = to_of_device(op->dev.parent)->node;
102980 -
102981 - /* We can match PCI devices too, do not accept those here. */
102982 - if (strcmp(sbus_dp->name, "sbus"))
102983 - return err;
102984 -
102985 if (is_qfe) {
102986 qp = quattro_sbus_find(op);
102987 if (qp == NULL)
102988 @@ -2759,6 +2734,10 @@
102989 if (qp != NULL)
102990 hp->happy_flags |= HFLAG_QUATTRO;
102991
102992 + sbus_dp = to_of_device(op->dev.parent)->node;
102993 + if (is_qfe)
102994 + sbus_dp = to_of_device(op->dev.parent->parent)->node;
102995 +
102996 /* Get the supported DVMA burst sizes from our Happy SBUS. */
102997 hp->happy_bursts = of_getintprop_default(sbus_dp,
102998 "burst-sizes", 0x00);
102999 @@ -2845,9 +2824,6 @@
103000 if (hp->tcvregs)
103001 of_iounmap(&op->resource[4], hp->tcvregs, TCVR_REG_SIZE);
103002
103003 - if (qp)
103004 - qp->happy_meals[qfe_slot] = NULL;
103005 -
103006 err_out_free_netdev:
103007 free_netdev(dev);
103008
103009 @@ -3305,7 +3281,7 @@
103010
103011 err = of_register_driver(&hme_sbus_driver, &of_bus_type);
103012 if (!err)
103013 - err = quattro_sbus_register_irqs();
103014 + quattro_sbus_register_irqs();
103015
103016 return err;
103017 }
103018 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sunlance.c linux-2.6.29-rc3.owrt/drivers/net/sunlance.c
103019 --- linux-2.6.29.owrt/drivers/net/sunlance.c 2009-05-10 22:04:38.000000000 +0200
103020 +++ linux-2.6.29-rc3.owrt/drivers/net/sunlance.c 2009-05-10 23:48:29.000000000 +0200
103021 @@ -343,7 +343,7 @@
103022 ib->phys_addr [5] = dev->dev_addr [4];
103023
103024 /* Setup the Tx ring entries */
103025 - for (i = 0; i < TX_RING_SIZE; i++) {
103026 + for (i = 0; i <= TX_RING_SIZE; i++) {
103027 leptr = LANCE_ADDR(aib + libbuff_offset(tx_buf, i));
103028 ib->btx_ring [i].tmd0 = leptr;
103029 ib->btx_ring [i].tmd1_hadr = leptr >> 16;
103030 @@ -399,7 +399,7 @@
103031 sbus_writeb(dev->dev_addr[4], &ib->phys_addr[5]);
103032
103033 /* Setup the Tx ring entries */
103034 - for (i = 0; i < TX_RING_SIZE; i++) {
103035 + for (i = 0; i <= TX_RING_SIZE; i++) {
103036 leptr = libbuff_offset(tx_buf, i);
103037 sbus_writew(leptr, &ib->btx_ring [i].tmd0);
103038 sbus_writeb(leptr >> 16,&ib->btx_ring [i].tmd1_hadr);
103039 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/sunqe.c linux-2.6.29-rc3.owrt/drivers/net/sunqe.c
103040 --- linux-2.6.29.owrt/drivers/net/sunqe.c 2009-05-10 22:04:38.000000000 +0200
103041 +++ linux-2.6.29-rc3.owrt/drivers/net/sunqe.c 2009-05-10 23:48:29.000000000 +0200
103042 @@ -227,7 +227,7 @@
103043 if (!(sbus_readb(mregs + MREGS_PHYCONFIG) & MREGS_PHYCONFIG_LTESTDIS)) {
103044 int tries = 50;
103045
103046 - while (--tries) {
103047 + while (tries--) {
103048 u8 tmp;
103049
103050 mdelay(5);
103051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tg3.c linux-2.6.29-rc3.owrt/drivers/net/tg3.c
103052 --- linux-2.6.29.owrt/drivers/net/tg3.c 2009-05-10 22:04:38.000000000 +0200
103053 +++ linux-2.6.29-rc3.owrt/drivers/net/tg3.c 2009-05-10 23:48:29.000000000 +0200
103054 @@ -852,7 +852,7 @@
103055 }
103056 udelay(10);
103057 }
103058 - if (limit < 0)
103059 + if (limit <= 0)
103060 return -EBUSY;
103061
103062 return 0;
103063 @@ -1473,8 +1473,7 @@
103064 {
103065 u32 reg;
103066
103067 - if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS) ||
103068 - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906)
103069 + if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS))
103070 return;
103071
103072 reg = MII_TG3_MISC_SHDW_WREN |
103073 @@ -1604,7 +1603,7 @@
103074 break;
103075 }
103076 }
103077 - if (limit < 0)
103078 + if (limit <= 0)
103079 return -EBUSY;
103080
103081 return 0;
103082 @@ -2238,8 +2237,8 @@
103083 phyid = phydev->drv->phy_id & phydev->drv->phy_id_mask;
103084 if (phyid != TG3_PHY_ID_BCMAC131) {
103085 phyid &= TG3_PHY_OUI_MASK;
103086 - if (phyid == TG3_PHY_OUI_1 ||
103087 - phyid == TG3_PHY_OUI_2 ||
103088 + if (phyid == TG3_PHY_OUI_1 &&
103089 + phyid == TG3_PHY_OUI_2 &&
103090 phyid == TG3_PHY_OUI_3)
103091 do_low_power = true;
103092 }
103093 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tokenring/tmspci.c linux-2.6.29-rc3.owrt/drivers/net/tokenring/tmspci.c
103094 --- linux-2.6.29.owrt/drivers/net/tokenring/tmspci.c 2009-05-10 22:04:38.000000000 +0200
103095 +++ linux-2.6.29-rc3.owrt/drivers/net/tokenring/tmspci.c 2009-05-10 23:48:29.000000000 +0200
103096 @@ -121,6 +121,11 @@
103097 goto err_out_trdev;
103098 }
103099
103100 + ret = request_irq(pdev->irq, tms380tr_interrupt, IRQF_SHARED,
103101 + dev->name, dev);
103102 + if (ret)
103103 + goto err_out_region;
103104 +
103105 dev->base_addr = pci_ioaddr;
103106 dev->irq = pci_irq_line;
103107 dev->dma = 0;
103108 @@ -137,7 +142,7 @@
103109 ret = tmsdev_init(dev, &pdev->dev);
103110 if (ret) {
103111 printk("%s: unable to get memory for dev->priv.\n", dev->name);
103112 - goto err_out_region;
103113 + goto err_out_irq;
103114 }
103115
103116 tp = netdev_priv(dev);
103117 @@ -152,11 +157,6 @@
103118
103119 tp->tmspriv = cardinfo;
103120
103121 - ret = request_irq(pdev->irq, tms380tr_interrupt, IRQF_SHARED,
103122 - dev->name, dev);
103123 - if (ret)
103124 - goto err_out_tmsdev;
103125 -
103126 dev->open = tms380tr_open;
103127 dev->stop = tms380tr_close;
103128 pci_set_drvdata(pdev, dev);
103129 @@ -164,15 +164,15 @@
103130
103131 ret = register_netdev(dev);
103132 if (ret)
103133 - goto err_out_irq;
103134 + goto err_out_tmsdev;
103135
103136 return 0;
103137
103138 -err_out_irq:
103139 - free_irq(pdev->irq, dev);
103140 err_out_tmsdev:
103141 pci_set_drvdata(pdev, NULL);
103142 tmsdev_term(dev);
103143 +err_out_irq:
103144 + free_irq(pdev->irq, dev);
103145 err_out_region:
103146 release_region(pci_ioaddr, TMS_PCI_IO_EXTENT);
103147 err_out_trdev:
103148 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tsi108_eth.c linux-2.6.29-rc3.owrt/drivers/net/tsi108_eth.c
103149 --- linux-2.6.29.owrt/drivers/net/tsi108_eth.c 2009-05-10 22:04:38.000000000 +0200
103150 +++ linux-2.6.29-rc3.owrt/drivers/net/tsi108_eth.c 2009-05-10 23:48:29.000000000 +0200
103151 @@ -1237,7 +1237,7 @@
103152 spin_lock_irqsave(&phy_lock, flags);
103153
103154 tsi108_write_mii(data, MII_BMCR, BMCR_RESET);
103155 - while (--i) {
103156 + while (i--){
103157 if(!(tsi108_read_mii(data, MII_BMCR) & BMCR_RESET))
103158 break;
103159 udelay(10);
103160 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tulip/21142.c linux-2.6.29-rc3.owrt/drivers/net/tulip/21142.c
103161 --- linux-2.6.29.owrt/drivers/net/tulip/21142.c 2009-05-10 22:04:38.000000000 +0200
103162 +++ linux-2.6.29-rc3.owrt/drivers/net/tulip/21142.c 2009-05-10 23:48:29.000000000 +0200
103163 @@ -9,11 +9,6 @@
103164
103165 Please refer to Documentation/DocBook/tulip-user.{pdf,ps,html}
103166 for more information on this driver.
103167 -
103168 - DC21143 manual "21143 PCI/CardBus 10/100Mb/s Ethernet LAN Controller
103169 - Hardware Reference Manual" is currently available at :
103170 - http://developer.intel.com/design/network/manuals/278074.htm
103171 -
103172 Please submit bugs to http://bugzilla.kernel.org/ .
103173 */
103174
103175 @@ -37,11 +32,7 @@
103176 int csr12 = ioread32(ioaddr + CSR12);
103177 int next_tick = 60*HZ;
103178 int new_csr6 = 0;
103179 - int csr14 = ioread32(ioaddr + CSR14);
103180
103181 - /* CSR12[LS10,LS100] are not reliable during autonegotiation */
103182 - if ((csr14 & 0x80) && (csr12 & 0x7000) != 0x5000)
103183 - csr12 |= 6;
103184 if (tulip_debug > 2)
103185 printk(KERN_INFO"%s: 21143 negotiation status %8.8x, %s.\n",
103186 dev->name, csr12, medianame[dev->if_port]);
103187 @@ -85,7 +76,7 @@
103188 new_csr6 = 0x83860000;
103189 dev->if_port = 3;
103190 iowrite32(0, ioaddr + CSR13);
103191 - iowrite32(0x0003FFFF, ioaddr + CSR14);
103192 + iowrite32(0x0003FF7F, ioaddr + CSR14);
103193 iowrite16(8, ioaddr + CSR15);
103194 iowrite32(1, ioaddr + CSR13);
103195 }
103196 @@ -141,14 +132,10 @@
103197 struct tulip_private *tp = netdev_priv(dev);
103198 void __iomem *ioaddr = tp->base_addr;
103199 int csr12 = ioread32(ioaddr + CSR12);
103200 - int csr14 = ioread32(ioaddr + CSR14);
103201
103202 - /* CSR12[LS10,LS100] are not reliable during autonegotiation */
103203 - if ((csr14 & 0x80) && (csr12 & 0x7000) != 0x5000)
103204 - csr12 |= 6;
103205 if (tulip_debug > 1)
103206 printk(KERN_INFO"%s: 21143 link status interrupt %8.8x, CSR5 %x, "
103207 - "%8.8x.\n", dev->name, csr12, csr5, csr14);
103208 + "%8.8x.\n", dev->name, csr12, csr5, ioread32(ioaddr + CSR14));
103209
103210 /* If NWay finished and we have a negotiated partner capability. */
103211 if (tp->nway && !tp->nwayset && (csr12 & 0x7000) == 0x5000) {
103212 @@ -156,9 +143,7 @@
103213 int negotiated = tp->sym_advertise & (csr12 >> 16);
103214 tp->lpar = csr12 >> 16;
103215 tp->nwayset = 1;
103216 - /* If partner cannot negotiate, it is 10Mbps Half Duplex */
103217 - if (!(csr12 & 0x8000)) dev->if_port = 0;
103218 - else if (negotiated & 0x0100) dev->if_port = 5;
103219 + if (negotiated & 0x0100) dev->if_port = 5;
103220 else if (negotiated & 0x0080) dev->if_port = 3;
103221 else if (negotiated & 0x0040) dev->if_port = 4;
103222 else if (negotiated & 0x0020) dev->if_port = 0;
103223 @@ -229,7 +214,7 @@
103224 tp->timer.expires = RUN_AT(3*HZ);
103225 add_timer(&tp->timer);
103226 } else if (dev->if_port == 5)
103227 - iowrite32(csr14 & ~0x080, ioaddr + CSR14);
103228 + iowrite32(ioread32(ioaddr + CSR14) & ~0x080, ioaddr + CSR14);
103229 } else if (dev->if_port == 0 || dev->if_port == 4) {
103230 if ((csr12 & 4) == 0)
103231 printk(KERN_INFO"%s: 21143 10baseT link beat good.\n",
103232 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tulip/de2104x.c linux-2.6.29-rc3.owrt/drivers/net/tulip/de2104x.c
103233 --- linux-2.6.29.owrt/drivers/net/tulip/de2104x.c 2009-05-10 22:04:38.000000000 +0200
103234 +++ linux-2.6.29-rc3.owrt/drivers/net/tulip/de2104x.c 2009-05-10 23:48:29.000000000 +0200
103235 @@ -392,7 +392,7 @@
103236 unsigned drop = 0;
103237 int rc;
103238
103239 - while (--rx_work) {
103240 + while (rx_work--) {
103241 u32 status, len;
103242 dma_addr_t mapping;
103243 struct sk_buff *skb, *copy_skb;
103244 @@ -464,14 +464,13 @@
103245 drop = 1;
103246
103247 rx_next:
103248 + de->rx_ring[rx_tail].opts1 = cpu_to_le32(DescOwn);
103249 if (rx_tail == (DE_RX_RING_SIZE - 1))
103250 de->rx_ring[rx_tail].opts2 =
103251 cpu_to_le32(RingEnd | de->rx_buf_sz);
103252 else
103253 de->rx_ring[rx_tail].opts2 = cpu_to_le32(de->rx_buf_sz);
103254 de->rx_ring[rx_tail].addr1 = cpu_to_le32(mapping);
103255 - wmb();
103256 - de->rx_ring[rx_tail].opts1 = cpu_to_le32(DescOwn);
103257 rx_tail = NEXT_RX(rx_tail);
103258 }
103259
103260 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tulip/tulip_core.c linux-2.6.29-rc3.owrt/drivers/net/tulip/tulip_core.c
103261 --- linux-2.6.29.owrt/drivers/net/tulip/tulip_core.c 2009-05-10 22:04:38.000000000 +0200
103262 +++ linux-2.6.29-rc3.owrt/drivers/net/tulip/tulip_core.c 2009-05-10 23:48:29.000000000 +0200
103263 @@ -255,7 +255,6 @@
103264
103265 static void tulip_tx_timeout(struct net_device *dev);
103266 static void tulip_init_ring(struct net_device *dev);
103267 -static void tulip_free_ring(struct net_device *dev);
103268 static int tulip_start_xmit(struct sk_buff *skb, struct net_device *dev);
103269 static int tulip_open(struct net_device *dev);
103270 static int tulip_close(struct net_device *dev);
103271 @@ -503,21 +502,16 @@
103272 {
103273 int retval;
103274
103275 - tulip_init_ring (dev);
103276 + if ((retval = request_irq(dev->irq, &tulip_interrupt, IRQF_SHARED, dev->name, dev)))
103277 + return retval;
103278
103279 - retval = request_irq(dev->irq, &tulip_interrupt, IRQF_SHARED, dev->name, dev);
103280 - if (retval)
103281 - goto free_ring;
103282 + tulip_init_ring (dev);
103283
103284 tulip_up (dev);
103285
103286 netif_start_queue (dev);
103287
103288 return 0;
103289 -
103290 -free_ring:
103291 - tulip_free_ring (dev);
103292 - return retval;
103293 }
103294
103295
103296 @@ -774,11 +768,23 @@
103297 tulip_set_power_state (tp, 0, 1);
103298 }
103299
103300 -static void tulip_free_ring (struct net_device *dev)
103301 +
103302 +static int tulip_close (struct net_device *dev)
103303 {
103304 struct tulip_private *tp = netdev_priv(dev);
103305 + void __iomem *ioaddr = tp->base_addr;
103306 int i;
103307
103308 + netif_stop_queue (dev);
103309 +
103310 + tulip_down (dev);
103311 +
103312 + if (tulip_debug > 1)
103313 + printk (KERN_DEBUG "%s: Shutting down ethercard, status was %2.2x.\n",
103314 + dev->name, ioread32 (ioaddr + CSR5));
103315 +
103316 + free_irq (dev->irq, dev);
103317 +
103318 /* Free all the skbuffs in the Rx queue. */
103319 for (i = 0; i < RX_RING_SIZE; i++) {
103320 struct sk_buff *skb = tp->rx_buffers[i].skb;
103321 @@ -797,7 +803,6 @@
103322 dev_kfree_skb (skb);
103323 }
103324 }
103325 -
103326 for (i = 0; i < TX_RING_SIZE; i++) {
103327 struct sk_buff *skb = tp->tx_buffers[i].skb;
103328
103329 @@ -809,24 +814,6 @@
103330 tp->tx_buffers[i].skb = NULL;
103331 tp->tx_buffers[i].mapping = 0;
103332 }
103333 -}
103334 -
103335 -static int tulip_close (struct net_device *dev)
103336 -{
103337 - struct tulip_private *tp = netdev_priv(dev);
103338 - void __iomem *ioaddr = tp->base_addr;
103339 -
103340 - netif_stop_queue (dev);
103341 -
103342 - tulip_down (dev);
103343 -
103344 - if (tulip_debug > 1)
103345 - printk (KERN_DEBUG "%s: Shutting down ethercard, status was %2.2x.\n",
103346 - dev->name, ioread32 (ioaddr + CSR5));
103347 -
103348 - free_irq (dev->irq, dev);
103349 -
103350 - tulip_free_ring (dev);
103351
103352 return 0;
103353 }
103354 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/tun.c linux-2.6.29-rc3.owrt/drivers/net/tun.c
103355 --- linux-2.6.29.owrt/drivers/net/tun.c 2009-05-10 22:04:38.000000000 +0200
103356 +++ linux-2.6.29-rc3.owrt/drivers/net/tun.c 2009-05-10 23:48:29.000000000 +0200
103357 @@ -157,16 +157,10 @@
103358
103359 nexact = n;
103360
103361 - /* Remaining multicast addresses are hashed,
103362 - * unicast will leave the filter disabled. */
103363 + /* The rest is hashed */
103364 memset(filter->mask, 0, sizeof(filter->mask));
103365 - for (; n < uf.count; n++) {
103366 - if (!is_multicast_ether_addr(addr[n].u)) {
103367 - err = 0; /* no filter */
103368 - goto done;
103369 - }
103370 + for (; n < uf.count; n++)
103371 addr_hash_set(filter->mask, addr[n].u);
103372 - }
103373
103374 /* For ALLMULTI just set the mask to all ones.
103375 * This overrides the mask populated above. */
103376 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ucc_geth.c linux-2.6.29-rc3.owrt/drivers/net/ucc_geth.c
103377 --- linux-2.6.29.owrt/drivers/net/ucc_geth.c 2009-05-10 22:04:38.000000000 +0200
103378 +++ linux-2.6.29-rc3.owrt/drivers/net/ucc_geth.c 2009-05-10 23:48:29.000000000 +0200
103379 @@ -1536,15 +1536,17 @@
103380 static int init_phy(struct net_device *dev)
103381 {
103382 struct ucc_geth_private *priv = netdev_priv(dev);
103383 - struct ucc_geth_info *ug_info = priv->ug_info;
103384 struct phy_device *phydev;
103385 + char phy_id[BUS_ID_SIZE];
103386
103387 priv->oldlink = 0;
103388 priv->oldspeed = 0;
103389 priv->oldduplex = -1;
103390
103391 - phydev = phy_connect(dev, ug_info->phy_bus_id, &adjust_link, 0,
103392 - priv->phy_interface);
103393 + snprintf(phy_id, sizeof(phy_id), PHY_ID_FMT, priv->ug_info->mdio_bus,
103394 + priv->ug_info->phy_address);
103395 +
103396 + phydev = phy_connect(dev, phy_id, &adjust_link, 0, priv->phy_interface);
103397
103398 if (IS_ERR(phydev)) {
103399 printk("%s: Could not attach to PHY\n", dev->name);
103400 @@ -3612,12 +3614,10 @@
103401 ug_info->uf_info.irq = irq_of_parse_and_map(np, 0);
103402 fixed_link = of_get_property(np, "fixed-link", NULL);
103403 if (fixed_link) {
103404 - snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id),
103405 - PHY_ID_FMT, "0", fixed_link[0]);
103406 + snprintf(ug_info->mdio_bus, MII_BUS_ID_SIZE, "0");
103407 + ug_info->phy_address = fixed_link[0];
103408 phy = NULL;
103409 } else {
103410 - char bus_name[MII_BUS_ID_SIZE];
103411 -
103412 ph = of_get_property(np, "phy-handle", NULL);
103413 phy = of_find_node_by_phandle(*ph);
103414
103415 @@ -3628,6 +3628,7 @@
103416 prop = of_get_property(phy, "reg", NULL);
103417 if (prop == NULL)
103418 return -1;
103419 + ug_info->phy_address = *prop;
103420
103421 /* Set the bus id */
103422 mdio = of_get_parent(phy);
103423 @@ -3641,9 +3642,7 @@
103424 if (err)
103425 return -1;
103426
103427 - uec_mdio_bus_name(bus_name, mdio);
103428 - snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id),
103429 - "%s:%02x", bus_name, *prop);
103430 + snprintf(ug_info->mdio_bus, MII_BUS_ID_SIZE, "%x", res.start);
103431 }
103432
103433 /* get the phy interface type, or default to MII */
103434 @@ -3749,7 +3748,6 @@
103435
103436 ugeth->ug_info = ug_info;
103437 ugeth->dev = dev;
103438 - ugeth->node = np;
103439
103440 return 0;
103441 }
103442 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ucc_geth.h linux-2.6.29-rc3.owrt/drivers/net/ucc_geth.h
103443 --- linux-2.6.29.owrt/drivers/net/ucc_geth.h 2009-05-10 22:04:38.000000000 +0200
103444 +++ linux-2.6.29-rc3.owrt/drivers/net/ucc_geth.h 2009-05-10 23:48:29.000000000 +0200
103445 @@ -1091,7 +1091,8 @@
103446 u32 eventRegMask;
103447 u16 pausePeriod;
103448 u16 extensionField;
103449 - char phy_bus_id[BUS_ID_SIZE];
103450 + u8 phy_address;
103451 + char mdio_bus[MII_BUS_ID_SIZE];
103452 u8 weightfactor[NUM_TX_QUEUES];
103453 u8 interruptcoalescingmaxvalue[NUM_RX_QUEUES];
103454 u8 l2qt[UCC_GETH_VLAN_PRIORITY_MAX];
103455 @@ -1185,8 +1186,6 @@
103456 int oldspeed;
103457 int oldduplex;
103458 int oldlink;
103459 -
103460 - struct device_node *node;
103461 };
103462
103463 void uec_set_ethtool_ops(struct net_device *netdev);
103464 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ucc_geth_mii.c linux-2.6.29-rc3.owrt/drivers/net/ucc_geth_mii.c
103465 --- linux-2.6.29.owrt/drivers/net/ucc_geth_mii.c 2009-05-10 22:04:38.000000000 +0200
103466 +++ linux-2.6.29-rc3.owrt/drivers/net/ucc_geth_mii.c 2009-05-10 23:48:29.000000000 +0200
103467 @@ -107,7 +107,7 @@
103468 static int uec_mdio_reset(struct mii_bus *bus)
103469 {
103470 struct ucc_mii_mng __iomem *regs = (void __iomem *)bus->priv;
103471 - int timeout = PHY_INIT_TIMEOUT;
103472 + unsigned int timeout = PHY_INIT_TIMEOUT;
103473
103474 mutex_lock(&bus->mdio_lock);
103475
103476 @@ -123,7 +123,7 @@
103477
103478 mutex_unlock(&bus->mdio_lock);
103479
103480 - if (timeout < 0) {
103481 + if (timeout <= 0) {
103482 printk(KERN_ERR "%s: The MII Bus is stuck!\n", bus->name);
103483 return -EBUSY;
103484 }
103485 @@ -156,7 +156,7 @@
103486 if (err)
103487 goto reg_map_fail;
103488
103489 - uec_mdio_bus_name(new_bus->id, np);
103490 + snprintf(new_bus->id, MII_BUS_ID_SIZE, "%x", res.start);
103491
103492 new_bus->irq = kmalloc(32 * sizeof(int), GFP_KERNEL);
103493
103494 @@ -283,13 +283,3 @@
103495 {
103496 of_unregister_platform_driver(&uec_mdio_driver);
103497 }
103498 -
103499 -void uec_mdio_bus_name(char *name, struct device_node *np)
103500 -{
103501 - const u32 *reg;
103502 -
103503 - reg = of_get_property(np, "reg", NULL);
103504 -
103505 - snprintf(name, MII_BUS_ID_SIZE, "%s@%x", np->name, reg ? *reg : 0);
103506 -}
103507 -
103508 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/ucc_geth_mii.h linux-2.6.29-rc3.owrt/drivers/net/ucc_geth_mii.h
103509 --- linux-2.6.29.owrt/drivers/net/ucc_geth_mii.h 2009-05-10 22:04:38.000000000 +0200
103510 +++ linux-2.6.29-rc3.owrt/drivers/net/ucc_geth_mii.h 2009-05-10 23:48:29.000000000 +0200
103511 @@ -97,5 +97,4 @@
103512 int uec_mdio_write(struct mii_bus *bus, int mii_id, int regnum, u16 value);
103513 int __init uec_mdio_init(void);
103514 void uec_mdio_exit(void);
103515 -void uec_mdio_bus_name(char *name, struct device_node *np);
103516 #endif /* __UEC_MII_H */
103517 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/usb/asix.c linux-2.6.29-rc3.owrt/drivers/net/usb/asix.c
103518 --- linux-2.6.29.owrt/drivers/net/usb/asix.c 2009-05-10 22:04:38.000000000 +0200
103519 +++ linux-2.6.29-rc3.owrt/drivers/net/usb/asix.c 2009-05-10 23:48:29.000000000 +0200
103520 @@ -1451,14 +1451,6 @@
103521 // Cables-to-Go USB Ethernet Adapter
103522 USB_DEVICE(0x0b95, 0x772a),
103523 .driver_info = (unsigned long) &ax88772_info,
103524 -}, {
103525 - // ABOCOM for pci
103526 - USB_DEVICE(0x14ea, 0xab11),
103527 - .driver_info = (unsigned long) &ax88178_info,
103528 -}, {
103529 - // ASIX 88772a
103530 - USB_DEVICE(0x0db0, 0xa877),
103531 - .driver_info = (unsigned long) &ax88772_info,
103532 },
103533 { }, // END
103534 };
103535 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/usb/cdc_ether.c linux-2.6.29-rc3.owrt/drivers/net/usb/cdc_ether.c
103536 --- linux-2.6.29.owrt/drivers/net/usb/cdc_ether.c 2009-05-10 22:04:38.000000000 +0200
103537 +++ linux-2.6.29-rc3.owrt/drivers/net/usb/cdc_ether.c 2009-05-10 23:48:29.000000000 +0200
103538 @@ -559,11 +559,6 @@
103539 USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET,
103540 USB_CDC_PROTO_NONE),
103541 .driver_info = (unsigned long) &cdc_info,
103542 -}, {
103543 - /* Ericsson F3507g */
103544 - USB_DEVICE_AND_INTERFACE_INFO(0x0bdb, 0x1900, USB_CLASS_COMM,
103545 - USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
103546 - .driver_info = (unsigned long) &cdc_info,
103547 },
103548 { }, // END
103549 };
103550 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/usb/dm9601.c linux-2.6.29-rc3.owrt/drivers/net/usb/dm9601.c
103551 --- linux-2.6.29.owrt/drivers/net/usb/dm9601.c 2009-05-10 22:04:38.000000000 +0200
103552 +++ linux-2.6.29-rc3.owrt/drivers/net/usb/dm9601.c 2009-05-10 23:48:29.000000000 +0200
103553 @@ -635,10 +635,6 @@
103554 USB_DEVICE(0x0a47, 0x9601), /* Hirose USB-100 */
103555 .driver_info = (unsigned long)&dm9601_info,
103556 },
103557 - {
103558 - USB_DEVICE(0x0fe6, 0x8101), /* DM9601 USB to Fast Ethernet Adapter */
103559 - .driver_info = (unsigned long)&dm9601_info,
103560 - },
103561 {}, // END
103562 };
103563
103564 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/usb/hso.c linux-2.6.29-rc3.owrt/drivers/net/usb/hso.c
103565 --- linux-2.6.29.owrt/drivers/net/usb/hso.c 2009-05-10 22:04:38.000000000 +0200
103566 +++ linux-2.6.29-rc3.owrt/drivers/net/usb/hso.c 2009-05-10 23:48:29.000000000 +0200
103567 @@ -455,7 +455,6 @@
103568 {icon321_port_device(0x0af0, 0xd033)}, /* Icon-322 */
103569 {USB_DEVICE(0x0af0, 0x7301)}, /* GE40x */
103570 {USB_DEVICE(0x0af0, 0x7361)}, /* GE40x */
103571 - {USB_DEVICE(0x0af0, 0x7381)}, /* GE40x */
103572 {USB_DEVICE(0x0af0, 0x7401)}, /* GI 0401 */
103573 {USB_DEVICE(0x0af0, 0x7501)}, /* GTM 382 */
103574 {USB_DEVICE(0x0af0, 0x7601)}, /* GE40x */
103575 @@ -463,8 +462,7 @@
103576 {USB_DEVICE(0x0af0, 0x7801)},
103577 {USB_DEVICE(0x0af0, 0x7901)},
103578 {USB_DEVICE(0x0af0, 0x7361)},
103579 - {USB_DEVICE(0x0af0, 0xd057)},
103580 - {USB_DEVICE(0x0af0, 0xd055)},
103581 + {icon321_port_device(0x0af0, 0xd051)},
103582 {}
103583 };
103584 MODULE_DEVICE_TABLE(usb, hso_ids);
103585 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/usb/usbnet.c linux-2.6.29-rc3.owrt/drivers/net/usb/usbnet.c
103586 --- linux-2.6.29.owrt/drivers/net/usb/usbnet.c 2009-05-10 22:04:38.000000000 +0200
103587 +++ linux-2.6.29-rc3.owrt/drivers/net/usb/usbnet.c 2009-05-10 23:48:29.000000000 +0200
103588 @@ -723,8 +723,8 @@
103589 if (dev->mii.mdio_read)
103590 return mii_link_ok(&dev->mii);
103591
103592 - /* Otherwise, dtrt for drivers calling netif_carrier_{on,off} */
103593 - return ethtool_op_get_link(net);
103594 + /* Otherwise, say we're up (to avoid breaking scripts) */
103595 + return 1;
103596 }
103597 EXPORT_SYMBOL_GPL(usbnet_get_link);
103598
103599 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/usb/zaurus.c linux-2.6.29-rc3.owrt/drivers/net/usb/zaurus.c
103600 --- linux-2.6.29.owrt/drivers/net/usb/zaurus.c 2009-05-10 22:04:38.000000000 +0200
103601 +++ linux-2.6.29-rc3.owrt/drivers/net/usb/zaurus.c 2009-05-10 23:48:29.000000000 +0200
103602 @@ -341,11 +341,6 @@
103603 USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MDLM,
103604 USB_CDC_PROTO_NONE),
103605 .driver_info = (unsigned long) &bogus_mdlm_info,
103606 -}, {
103607 - /* Motorola MOTOMAGX phones */
103608 - USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x6425, USB_CLASS_COMM,
103609 - USB_CDC_SUBCLASS_MDLM, USB_CDC_PROTO_NONE),
103610 - .driver_info = (unsigned long) &bogus_mdlm_info,
103611 },
103612
103613 /* Olympus has some models with a Zaurus-compatible option.
103614 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/veth.c linux-2.6.29-rc3.owrt/drivers/net/veth.c
103615 --- linux-2.6.29.owrt/drivers/net/veth.c 2009-05-10 22:04:38.000000000 +0200
103616 +++ linux-2.6.29-rc3.owrt/drivers/net/veth.c 2009-05-10 23:48:29.000000000 +0200
103617 @@ -239,16 +239,6 @@
103618 return 0;
103619 }
103620
103621 -static int veth_close(struct net_device *dev)
103622 -{
103623 - struct veth_priv *priv = netdev_priv(dev);
103624 -
103625 - netif_carrier_off(dev);
103626 - netif_carrier_off(priv->peer);
103627 -
103628 - return 0;
103629 -}
103630 -
103631 static int veth_dev_init(struct net_device *dev)
103632 {
103633 struct veth_net_stats *stats;
103634 @@ -273,12 +263,10 @@
103635 }
103636
103637 static const struct net_device_ops veth_netdev_ops = {
103638 - .ndo_init = veth_dev_init,
103639 - .ndo_open = veth_open,
103640 - .ndo_stop = veth_close,
103641 - .ndo_start_xmit = veth_xmit,
103642 - .ndo_get_stats = veth_get_stats,
103643 - .ndo_set_mac_address = eth_mac_addr,
103644 + .ndo_init = veth_dev_init,
103645 + .ndo_open = veth_open,
103646 + .ndo_start_xmit = veth_xmit,
103647 + .ndo_get_stats = veth_get_stats,
103648 };
103649
103650 static void veth_setup(struct net_device *dev)
103651 @@ -291,6 +279,44 @@
103652 dev->destructor = veth_dev_free;
103653 }
103654
103655 +static void veth_change_state(struct net_device *dev)
103656 +{
103657 + struct net_device *peer;
103658 + struct veth_priv *priv;
103659 +
103660 + priv = netdev_priv(dev);
103661 + peer = priv->peer;
103662 +
103663 + if (netif_carrier_ok(peer)) {
103664 + if (!netif_carrier_ok(dev))
103665 + netif_carrier_on(dev);
103666 + } else {
103667 + if (netif_carrier_ok(dev))
103668 + netif_carrier_off(dev);
103669 + }
103670 +}
103671 +
103672 +static int veth_device_event(struct notifier_block *unused,
103673 + unsigned long event, void *ptr)
103674 +{
103675 + struct net_device *dev = ptr;
103676 +
103677 + if (dev->netdev_ops->ndo_open != veth_open)
103678 + goto out;
103679 +
103680 + switch (event) {
103681 + case NETDEV_CHANGE:
103682 + veth_change_state(dev);
103683 + break;
103684 + }
103685 +out:
103686 + return NOTIFY_DONE;
103687 +}
103688 +
103689 +static struct notifier_block veth_notifier_block __read_mostly = {
103690 + .notifier_call = veth_device_event,
103691 +};
103692 +
103693 /*
103694 * netlink interface
103695 */
103696 @@ -441,12 +467,14 @@
103697
103698 static __init int veth_init(void)
103699 {
103700 + register_netdevice_notifier(&veth_notifier_block);
103701 return rtnl_link_register(&veth_link_ops);
103702 }
103703
103704 static __exit void veth_exit(void)
103705 {
103706 rtnl_link_unregister(&veth_link_ops);
103707 + unregister_netdevice_notifier(&veth_notifier_block);
103708 }
103709
103710 module_init(veth_init);
103711 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/via-velocity.c linux-2.6.29-rc3.owrt/drivers/net/via-velocity.c
103712 --- linux-2.6.29.owrt/drivers/net/via-velocity.c 2009-05-10 22:04:38.000000000 +0200
103713 +++ linux-2.6.29-rc3.owrt/drivers/net/via-velocity.c 2009-05-10 23:48:29.000000000 +0200
103714 @@ -1838,19 +1838,17 @@
103715 {
103716 struct sk_buff *skb = tdinfo->skb;
103717 int i;
103718 - int pktlen;
103719
103720 /*
103721 * Don't unmap the pre-allocated tx_bufs
103722 */
103723 if (tdinfo->skb_dma) {
103724
103725 - pktlen = (skb->len > ETH_ZLEN ? : ETH_ZLEN);
103726 for (i = 0; i < tdinfo->nskb_dma; i++) {
103727 #ifdef VELOCITY_ZERO_COPY_SUPPORT
103728 pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], le16_to_cpu(td->tdesc1.len), PCI_DMA_TODEVICE);
103729 #else
103730 - pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], pktlen, PCI_DMA_TODEVICE);
103731 + pci_unmap_single(vptr->pdev, tdinfo->skb_dma[i], skb->len, PCI_DMA_TODEVICE);
103732 #endif
103733 tdinfo->skb_dma[i] = 0;
103734 }
103735 @@ -2082,14 +2080,17 @@
103736 struct tx_desc *td_ptr;
103737 struct velocity_td_info *tdinfo;
103738 unsigned long flags;
103739 - int pktlen;
103740 + int pktlen = skb->len;
103741 __le16 len;
103742 int index;
103743
103744
103745 - if (skb_padto(skb, ETH_ZLEN))
103746 - goto out;
103747 - pktlen = max_t(unsigned int, skb->len, ETH_ZLEN);
103748 +
103749 + if (skb->len < ETH_ZLEN) {
103750 + if (skb_padto(skb, ETH_ZLEN))
103751 + goto out;
103752 + pktlen = ETH_ZLEN;
103753 + }
103754
103755 len = cpu_to_le16(pktlen);
103756
103757 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/virtio_net.c linux-2.6.29-rc3.owrt/drivers/net/virtio_net.c
103758 --- linux-2.6.29.owrt/drivers/net/virtio_net.c 2009-05-10 22:04:38.000000000 +0200
103759 +++ linux-2.6.29-rc3.owrt/drivers/net/virtio_net.c 2009-05-10 23:48:29.000000000 +0200
103760 @@ -287,7 +287,7 @@
103761 skb_put(skb, MAX_PACKET_LEN);
103762
103763 hdr = skb_vnet_hdr(skb);
103764 - sg_set_buf(sg, hdr, sizeof(*hdr));
103765 + sg_init_one(sg, hdr, sizeof(*hdr));
103766
103767 if (vi->big_packets) {
103768 for (i = 0; i < MAX_SKB_FRAGS; i++) {
103769 @@ -488,9 +488,9 @@
103770
103771 /* Encode metadata header at front. */
103772 if (vi->mergeable_rx_bufs)
103773 - sg_set_buf(sg, mhdr, sizeof(*mhdr));
103774 + sg_init_one(sg, mhdr, sizeof(*mhdr));
103775 else
103776 - sg_set_buf(sg, hdr, sizeof(*hdr));
103777 + sg_init_one(sg, hdr, sizeof(*hdr));
103778
103779 num = skb_to_sgvec(skb, sg+1, 0, skb->len) + 1;
103780
103781 @@ -612,7 +612,6 @@
103782 .set_tx_csum = virtnet_set_tx_csum,
103783 .set_sg = ethtool_op_set_sg,
103784 .set_tso = ethtool_op_set_tso,
103785 - .get_link = ethtool_op_get_link,
103786 };
103787
103788 #define MIN_MTU 68
103789 @@ -740,8 +739,6 @@
103790 goto unregister;
103791 }
103792
103793 - netif_carrier_on(dev);
103794 -
103795 pr_debug("virtnet: registered device %s\n", dev->name);
103796 return 0;
103797
103798 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wimax/i2400m/debugfs.c linux-2.6.29-rc3.owrt/drivers/net/wimax/i2400m/debugfs.c
103799 --- linux-2.6.29.owrt/drivers/net/wimax/i2400m/debugfs.c 2009-05-10 22:04:38.000000000 +0200
103800 +++ linux-2.6.29-rc3.owrt/drivers/net/wimax/i2400m/debugfs.c 2009-05-10 23:48:29.000000000 +0200
103801 @@ -234,6 +234,20 @@
103802 &fops_i2400m_reset);
103803 }
103804
103805 +/*
103806 + * Debug levels control; see debug.h
103807 + */
103808 +struct d_level D_LEVEL[] = {
103809 + D_SUBMODULE_DEFINE(control),
103810 + D_SUBMODULE_DEFINE(driver),
103811 + D_SUBMODULE_DEFINE(debugfs),
103812 + D_SUBMODULE_DEFINE(fw),
103813 + D_SUBMODULE_DEFINE(netdev),
103814 + D_SUBMODULE_DEFINE(rfkill),
103815 + D_SUBMODULE_DEFINE(rx),
103816 + D_SUBMODULE_DEFINE(tx),
103817 +};
103818 +size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL);
103819
103820 #define __debugfs_register(prefix, name, parent) \
103821 do { \
103822 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wimax/i2400m/driver.c linux-2.6.29-rc3.owrt/drivers/net/wimax/i2400m/driver.c
103823 --- linux-2.6.29.owrt/drivers/net/wimax/i2400m/driver.c 2009-05-10 22:04:38.000000000 +0200
103824 +++ linux-2.6.29-rc3.owrt/drivers/net/wimax/i2400m/driver.c 2009-05-10 23:48:29.000000000 +0200
103825 @@ -707,22 +707,6 @@
103826 EXPORT_SYMBOL_GPL(i2400m_release);
103827
103828
103829 -/*
103830 - * Debug levels control; see debug.h
103831 - */
103832 -struct d_level D_LEVEL[] = {
103833 - D_SUBMODULE_DEFINE(control),
103834 - D_SUBMODULE_DEFINE(driver),
103835 - D_SUBMODULE_DEFINE(debugfs),
103836 - D_SUBMODULE_DEFINE(fw),
103837 - D_SUBMODULE_DEFINE(netdev),
103838 - D_SUBMODULE_DEFINE(rfkill),
103839 - D_SUBMODULE_DEFINE(rx),
103840 - D_SUBMODULE_DEFINE(tx),
103841 -};
103842 -size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL);
103843 -
103844 -
103845 static
103846 int __init i2400m_driver_init(void)
103847 {
103848 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wimax/i2400m/i2400m.h linux-2.6.29-rc3.owrt/drivers/net/wimax/i2400m/i2400m.h
103849 --- linux-2.6.29.owrt/drivers/net/wimax/i2400m/i2400m.h 2009-05-10 22:04:38.000000000 +0200
103850 +++ linux-2.6.29-rc3.owrt/drivers/net/wimax/i2400m/i2400m.h 2009-05-10 23:48:29.000000000 +0200
103851 @@ -157,7 +157,7 @@
103852
103853
103854 /* Firmware version we request when pulling the fw image file */
103855 -#define I2400M_FW_VERSION "1.4"
103856 +#define I2400M_FW_VERSION "1.3"
103857
103858
103859 /**
103860 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/ath5k/base.c linux-2.6.29-rc3.owrt/drivers/net/wireless/ath5k/base.c
103861 --- linux-2.6.29.owrt/drivers/net/wireless/ath5k/base.c 2009-05-10 22:04:38.000000000 +0200
103862 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/ath5k/base.c 2009-05-10 23:48:29.000000000 +0200
103863 @@ -1028,8 +1028,6 @@
103864 * it's done by reseting the chip. To accomplish this we must
103865 * first cleanup any pending DMA, then restart stuff after a la
103866 * ath5k_init.
103867 - *
103868 - * Called with sc->lock.
103869 */
103870 static int
103871 ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)
103872 @@ -1098,42 +1096,6 @@
103873 * Buffers setup *
103874 \***************/
103875
103876 -static
103877 -struct sk_buff *ath5k_rx_skb_alloc(struct ath5k_softc *sc, dma_addr_t *skb_addr)
103878 -{
103879 - struct sk_buff *skb;
103880 - unsigned int off;
103881 -
103882 - /*
103883 - * Allocate buffer with headroom_needed space for the
103884 - * fake physical layer header at the start.
103885 - */
103886 - skb = dev_alloc_skb(sc->rxbufsize + sc->cachelsz - 1);
103887 -
103888 - if (!skb) {
103889 - ATH5K_ERR(sc, "can't alloc skbuff of size %u\n",
103890 - sc->rxbufsize + sc->cachelsz - 1);
103891 - return NULL;
103892 - }
103893 - /*
103894 - * Cache-line-align. This is important (for the
103895 - * 5210 at least) as not doing so causes bogus data
103896 - * in rx'd frames.
103897 - */
103898 - off = ((unsigned long)skb->data) % sc->cachelsz;
103899 - if (off != 0)
103900 - skb_reserve(skb, sc->cachelsz - off);
103901 -
103902 - *skb_addr = pci_map_single(sc->pdev,
103903 - skb->data, sc->rxbufsize, PCI_DMA_FROMDEVICE);
103904 - if (unlikely(pci_dma_mapping_error(sc->pdev, *skb_addr))) {
103905 - ATH5K_ERR(sc, "%s: DMA mapping failed\n", __func__);
103906 - dev_kfree_skb(skb);
103907 - return NULL;
103908 - }
103909 - return skb;
103910 -}
103911 -
103912 static int
103913 ath5k_rxbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)
103914 {
103915 @@ -1141,11 +1103,37 @@
103916 struct sk_buff *skb = bf->skb;
103917 struct ath5k_desc *ds;
103918
103919 - if (!skb) {
103920 - skb = ath5k_rx_skb_alloc(sc, &bf->skbaddr);
103921 - if (!skb)
103922 + if (likely(skb == NULL)) {
103923 + unsigned int off;
103924 +
103925 + /*
103926 + * Allocate buffer with headroom_needed space for the
103927 + * fake physical layer header at the start.
103928 + */
103929 + skb = dev_alloc_skb(sc->rxbufsize + sc->cachelsz - 1);
103930 + if (unlikely(skb == NULL)) {
103931 + ATH5K_ERR(sc, "can't alloc skbuff of size %u\n",
103932 + sc->rxbufsize + sc->cachelsz - 1);
103933 return -ENOMEM;
103934 + }
103935 + /*
103936 + * Cache-line-align. This is important (for the
103937 + * 5210 at least) as not doing so causes bogus data
103938 + * in rx'd frames.
103939 + */
103940 + off = ((unsigned long)skb->data) % sc->cachelsz;
103941 + if (off != 0)
103942 + skb_reserve(skb, sc->cachelsz - off);
103943 +
103944 bf->skb = skb;
103945 + bf->skbaddr = pci_map_single(sc->pdev,
103946 + skb->data, sc->rxbufsize, PCI_DMA_FROMDEVICE);
103947 + if (unlikely(pci_dma_mapping_error(sc->pdev, bf->skbaddr))) {
103948 + ATH5K_ERR(sc, "%s: DMA mapping failed\n", __func__);
103949 + dev_kfree_skb(skb);
103950 + bf->skb = NULL;
103951 + return -ENOMEM;
103952 + }
103953 }
103954
103955 /*
103956 @@ -1674,8 +1662,7 @@
103957 {
103958 struct ieee80211_rx_status rxs = {};
103959 struct ath5k_rx_status rs = {};
103960 - struct sk_buff *skb, *next_skb;
103961 - dma_addr_t next_skb_addr;
103962 + struct sk_buff *skb;
103963 struct ath5k_softc *sc = (void *)data;
103964 struct ath5k_buf *bf, *bf_last;
103965 struct ath5k_desc *ds;
103966 @@ -1760,17 +1747,10 @@
103967 goto next;
103968 }
103969 accept:
103970 - next_skb = ath5k_rx_skb_alloc(sc, &next_skb_addr);
103971 -
103972 - /*
103973 - * If we can't replace bf->skb with a new skb under memory
103974 - * pressure, just skip this packet
103975 - */
103976 - if (!next_skb)
103977 - goto next;
103978 -
103979 pci_unmap_single(sc->pdev, bf->skbaddr, sc->rxbufsize,
103980 PCI_DMA_FROMDEVICE);
103981 + bf->skb = NULL;
103982 +
103983 skb_put(skb, rs.rs_datalen);
103984
103985 /* The MAC header is padded to have 32-bit boundary if the
103986 @@ -1843,9 +1823,6 @@
103987 ath5k_check_ibss_tsf(sc, skb, &rxs);
103988
103989 __ieee80211_rx(sc->hw, skb, &rxs);
103990 -
103991 - bf->skb = next_skb;
103992 - bf->skbaddr = next_skb_addr;
103993 next:
103994 list_move_tail(&bf->list, &sc->rxbuf);
103995 } while (ath5k_rxbuf_setup(sc, bf) == 0);
103996 @@ -2837,17 +2814,11 @@
103997 {
103998 struct ath5k_softc *sc = hw->priv;
103999 struct ieee80211_conf *conf = &hw->conf;
104000 - int ret;
104001 -
104002 - mutex_lock(&sc->lock);
104003
104004 sc->bintval = conf->beacon_int;
104005 sc->power_level = conf->power_level;
104006
104007 - ret = ath5k_chan_set(sc, conf->channel);
104008 -
104009 - mutex_unlock(&sc->lock);
104010 - return ret;
104011 + return ath5k_chan_set(sc, conf->channel);
104012 }
104013
104014 static int
104015 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/ath9k/ath9k.h linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/ath9k.h
104016 --- linux-2.6.29.owrt/drivers/net/wireless/ath9k/ath9k.h 2009-05-10 22:04:38.000000000 +0200
104017 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/ath9k.h 2009-05-10 23:48:29.000000000 +0200
104018 @@ -587,8 +587,8 @@
104019 u8 iso[3];
104020 };
104021
104022 -#define REG_WRITE(_ah, _reg, _val) ath9k_iowrite32((_ah), (_reg), (_val))
104023 -#define REG_READ(_ah, _reg) ath9k_ioread32((_ah), (_reg))
104024 +#define REG_WRITE(_ah, _reg, _val) iowrite32(_val, _ah->ah_sh + _reg)
104025 +#define REG_READ(_ah, _reg) ioread32(_ah->ah_sh + _reg)
104026
104027 #define SM(_v, _f) (((_v) << _f##_S) & _f)
104028 #define MS(_v, _f) (((_v) & _f) >> _f##_S)
104029 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/ath9k/core.h linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/core.h
104030 --- linux-2.6.29.owrt/drivers/net/wireless/ath9k/core.h 2009-05-10 22:04:38.000000000 +0200
104031 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/core.h 2009-05-10 23:48:29.000000000 +0200
104032 @@ -701,7 +701,6 @@
104033 struct ath_hal *sc_ah;
104034 void __iomem *mem;
104035 spinlock_t sc_resetlock;
104036 - spinlock_t sc_serial_rw;
104037 struct mutex mutex;
104038
104039 u8 sc_curbssid[ETH_ALEN];
104040 @@ -752,36 +751,4 @@
104041 int ath_get_mac80211_qnum(u32 queue, struct ath_softc *sc);
104042 int ath_cabq_update(struct ath_softc *);
104043
104044 -/*
104045 - * Read and write, they both share the same lock. We do this to serialize
104046 - * reads and writes on Atheros 802.11n PCI devices only. This is required
104047 - * as the FIFO on these devices can only accept sanely 2 requests. After
104048 - * that the device goes bananas. Serializing the reads/writes prevents this
104049 - * from happening.
104050 - */
104051 -
104052 -static inline void ath9k_iowrite32(struct ath_hal *ah, u32 reg_offset, u32 val)
104053 -{
104054 - if (ah->ah_config.serialize_regmode == SER_REG_MODE_ON) {
104055 - unsigned long flags;
104056 - spin_lock_irqsave(&ah->ah_sc->sc_serial_rw, flags);
104057 - iowrite32(val, ah->ah_sc->mem + reg_offset);
104058 - spin_unlock_irqrestore(&ah->ah_sc->sc_serial_rw, flags);
104059 - } else
104060 - iowrite32(val, ah->ah_sc->mem + reg_offset);
104061 -}
104062 -
104063 -static inline unsigned int ath9k_ioread32(struct ath_hal *ah, u32 reg_offset)
104064 -{
104065 - u32 val;
104066 - if (ah->ah_config.serialize_regmode == SER_REG_MODE_ON) {
104067 - unsigned long flags;
104068 - spin_lock_irqsave(&ah->ah_sc->sc_serial_rw, flags);
104069 - val = ioread32(ah->ah_sc->mem + reg_offset);
104070 - spin_unlock_irqrestore(&ah->ah_sc->sc_serial_rw, flags);
104071 - } else
104072 - val = ioread32(ah->ah_sc->mem + reg_offset);
104073 - return val;
104074 -}
104075 -
104076 #endif /* CORE_H */
104077 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/ath9k/hw.c linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/hw.c
104078 --- linux-2.6.29.owrt/drivers/net/wireless/ath9k/hw.c 2009-05-10 22:04:38.000000000 +0200
104079 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/hw.c 2009-05-10 23:48:29.000000000 +0200
104080 @@ -437,25 +437,6 @@
104081 }
104082
104083 ah->ah_config.intr_mitigation = 1;
104084 -
104085 - /*
104086 - * We need this for PCI devices only (Cardbus, PCI, miniPCI)
104087 - * _and_ if on non-uniprocessor systems (Multiprocessor/HT).
104088 - * This means we use it for all AR5416 devices, and the few
104089 - * minor PCI AR9280 devices out there.
104090 - *
104091 - * Serialization is required because these devices do not handle
104092 - * well the case of two concurrent reads/writes due to the latency
104093 - * involved. During one read/write another read/write can be issued
104094 - * on another CPU while the previous read/write may still be working
104095 - * on our hardware, if we hit this case the hardware poops in a loop.
104096 - * We prevent this by serializing reads and writes.
104097 - *
104098 - * This issue is not present on PCI-Express devices or pre-AR5416
104099 - * devices (legacy, 802.11abg).
104100 - */
104101 - if (num_possible_cpus() > 1)
104102 - ah->ah_config.serialize_regmode = SER_REG_MODE_AUTO;
104103 }
104104
104105 static struct ath_hal_5416 *ath9k_hw_newstate(u16 devid,
104106 @@ -687,8 +668,7 @@
104107 }
104108
104109 if (ah->ah_config.serialize_regmode == SER_REG_MODE_AUTO) {
104110 - if (ah->ah_macVersion == AR_SREV_VERSION_5416_PCI ||
104111 - (AR_SREV_9280(ah) && !ah->ah_isPciExpress)) {
104112 + if (ah->ah_macVersion == AR_SREV_VERSION_5416_PCI) {
104113 ah->ah_config.serialize_regmode =
104114 SER_REG_MODE_ON;
104115 } else {
104116 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/ath9k/main.c linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/main.c
104117 --- linux-2.6.29.owrt/drivers/net/wireless/ath9k/main.c 2009-05-10 22:04:38.000000000 +0200
104118 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/ath9k/main.c 2009-05-10 23:48:29.000000000 +0200
104119 @@ -1336,7 +1336,6 @@
104120 printk(KERN_ERR "Unable to create debugfs files\n");
104121
104122 spin_lock_init(&sc->sc_resetlock);
104123 - spin_lock_init(&sc->sc_serial_rw);
104124 mutex_init(&sc->mutex);
104125 tasklet_init(&sc->intr_tq, ath9k_tasklet, (unsigned long)sc);
104126 tasklet_init(&sc->bcon_tasklet, ath9k_beacon_tasklet,
104127 @@ -1539,7 +1538,6 @@
104128 bad:
104129 if (ah)
104130 ath9k_hw_detach(ah);
104131 - ath9k_exit_debug(sc);
104132
104133 return error;
104134 }
104135 @@ -1547,7 +1545,7 @@
104136 static int ath_attach(u16 devid, struct ath_softc *sc)
104137 {
104138 struct ieee80211_hw *hw = sc->hw;
104139 - int error = 0, i;
104140 + int error = 0;
104141
104142 DPRINTF(sc, ATH_DBG_CONFIG, "Attach ATH hw\n");
104143
104144 @@ -1591,11 +1589,11 @@
104145 /* initialize tx/rx engine */
104146 error = ath_tx_init(sc, ATH_TXBUF);
104147 if (error != 0)
104148 - goto error_attach;
104149 + goto detach;
104150
104151 error = ath_rx_init(sc, ATH_RXBUF);
104152 if (error != 0)
104153 - goto error_attach;
104154 + goto detach;
104155
104156 #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE)
104157 /* Initialze h/w Rfkill */
104158 @@ -1603,9 +1601,8 @@
104159 INIT_DELAYED_WORK(&sc->rf_kill.rfkill_poll, ath_rfkill_poll);
104160
104161 /* Initialize s/w rfkill */
104162 - error = ath_init_sw_rfkill(sc);
104163 - if (error)
104164 - goto error_attach;
104165 + if (ath_init_sw_rfkill(sc))
104166 + goto detach;
104167 #endif
104168
104169 error = ieee80211_register_hw(hw);
104170 @@ -1614,16 +1611,8 @@
104171 ath_init_leds(sc);
104172
104173 return 0;
104174 -
104175 -error_attach:
104176 - /* cleanup tx queues */
104177 - for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++)
104178 - if (ATH_TXQ_SETUP(sc, i))
104179 - ath_tx_cleanupq(sc, &sc->tx.txq[i]);
104180 -
104181 - ath9k_hw_detach(sc->sc_ah);
104182 - ath9k_exit_debug(sc);
104183 -
104184 +detach:
104185 + ath_detach(sc);
104186 return error;
104187 }
104188
104189 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl3945-base.c linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl3945-base.c
104190 --- linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl3945-base.c 2009-05-10 22:04:38.000000000 +0200
104191 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl3945-base.c 2009-05-10 23:48:29.000000000 +0200
104192 @@ -7911,7 +7911,7 @@
104193 CSR_GP_CNTRL_REG_FLAG_MAC_CLOCK_READY, 25000);
104194 if (err < 0) {
104195 IWL_DEBUG_INFO("Failed to init the card\n");
104196 - goto out_iounmap;
104197 + goto out_remove_sysfs;
104198 }
104199
104200 /***********************
104201 @@ -7921,7 +7921,7 @@
104202 err = iwl3945_eeprom_init(priv);
104203 if (err) {
104204 IWL_ERROR("Unable to init EEPROM\n");
104205 - goto out_iounmap;
104206 + goto out_remove_sysfs;
104207 }
104208 /* MAC Address location in EEPROM same for 3945/4965 */
104209 get_eeprom_mac(priv, priv->mac_addr);
104210 @@ -7975,7 +7975,7 @@
104211 err = iwl3945_init_channel_map(priv);
104212 if (err) {
104213 IWL_ERROR("initializing regulatory failed: %d\n", err);
104214 - goto out_unset_hw_setting;
104215 + goto out_release_irq;
104216 }
104217
104218 err = iwl3945_init_geos(priv);
104219 @@ -8045,22 +8045,25 @@
104220 return 0;
104221
104222 out_remove_sysfs:
104223 - destroy_workqueue(priv->workqueue);
104224 - priv->workqueue = NULL;
104225 sysfs_remove_group(&pdev->dev.kobj, &iwl3945_attribute_group);
104226 out_free_geos:
104227 iwl3945_free_geos(priv);
104228 out_free_channel_map:
104229 iwl3945_free_channel_map(priv);
104230 - out_unset_hw_setting:
104231 +
104232 +
104233 + out_release_irq:
104234 + destroy_workqueue(priv->workqueue);
104235 + priv->workqueue = NULL;
104236 iwl3945_unset_hw_setting(priv);
104237 +
104238 out_iounmap:
104239 pci_iounmap(pdev, priv->hw_base);
104240 out_pci_release_regions:
104241 pci_release_regions(pdev);
104242 out_pci_disable_device:
104243 - pci_set_drvdata(pdev, NULL);
104244 pci_disable_device(pdev);
104245 + pci_set_drvdata(pdev, NULL);
104246 out_ieee80211_free_hw:
104247 ieee80211_free_hw(priv->hw);
104248 out:
104249 @@ -8140,19 +8143,6 @@
104250 priv->is_open = 1;
104251 }
104252
104253 - /* pci driver assumes state will be saved in this function.
104254 - * pci state is saved and device disabled when interface is
104255 - * stopped, so at this time pci device will always be disabled -
104256 - * whether interface was started or not. saving pci state now will
104257 - * cause saved state be that of a disabled device, which will cause
104258 - * problems during resume in that we will end up with a disabled device.
104259 - *
104260 - * indicate that the current saved state (from when interface was
104261 - * stopped) is valid. if interface was never up at time of suspend
104262 - * then the saved state will still be valid as it was saved during
104263 - * .probe. */
104264 - pdev->state_saved = true;
104265 -
104266 pci_set_power_state(pdev, PCI_D3hot);
104267
104268 return 0;
104269 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl-agn.c linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl-agn.c
104270 --- linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl-agn.c 2009-05-10 22:04:38.000000000 +0200
104271 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl-agn.c 2009-05-10 23:48:29.000000000 +0200
104272 @@ -1719,10 +1719,6 @@
104273 priv->ucode_data_backup.len = data_size;
104274 iwl_alloc_fw_desc(priv->pci_dev, &priv->ucode_data_backup);
104275
104276 - if (!priv->ucode_code.v_addr || !priv->ucode_data.v_addr ||
104277 - !priv->ucode_data_backup.v_addr)
104278 - goto err_pci_alloc;
104279 -
104280 /* Initialization instructions and data */
104281 if (init_size && init_data_size) {
104282 priv->ucode_init.len = init_size;
104283 @@ -3868,7 +3864,7 @@
104284 }
104285 err = iwl_eeprom_check_version(priv);
104286 if (err)
104287 - goto out_free_eeprom;
104288 + goto out_iounmap;
104289
104290 /* extract MAC Address */
104291 iwl_eeprom_get_mac(priv, priv->mac_addr);
104292 @@ -3945,8 +3941,6 @@
104293 return 0;
104294
104295 out_remove_sysfs:
104296 - destroy_workqueue(priv->workqueue);
104297 - priv->workqueue = NULL;
104298 sysfs_remove_group(&pdev->dev.kobj, &iwl_attribute_group);
104299 out_uninit_drv:
104300 iwl_uninit_drv(priv);
104301 @@ -3955,8 +3949,8 @@
104302 out_iounmap:
104303 pci_iounmap(pdev, priv->hw_base);
104304 out_pci_release_regions:
104305 - pci_set_drvdata(pdev, NULL);
104306 pci_release_regions(pdev);
104307 + pci_set_drvdata(pdev, NULL);
104308 out_pci_disable_device:
104309 pci_disable_device(pdev);
104310 out_ieee80211_free_hw:
104311 @@ -4044,19 +4038,6 @@
104312 priv->is_open = 1;
104313 }
104314
104315 - /* pci driver assumes state will be saved in this function.
104316 - * pci state is saved and device disabled when interface is
104317 - * stopped, so at this time pci device will always be disabled -
104318 - * whether interface was started or not. saving pci state now will
104319 - * cause saved state be that of a disabled device, which will cause
104320 - * problems during resume in that we will end up with a disabled device.
104321 - *
104322 - * indicate that the current saved state (from when interface was
104323 - * stopped) is valid. if interface was never up at time of suspend
104324 - * then the saved state will still be valid as it was saved during
104325 - * .probe. */
104326 - pdev->state_saved = true;
104327 -
104328 pci_set_power_state(pdev, PCI_D3hot);
104329
104330 return 0;
104331 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl-sta.c linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl-sta.c
104332 --- linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl-sta.c 2009-05-10 22:04:38.000000000 +0200
104333 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl-sta.c 2009-05-10 23:48:29.000000000 +0200
104334 @@ -480,9 +480,6 @@
104335 priv->num_stations = 0;
104336 memset(priv->stations, 0, sizeof(priv->stations));
104337
104338 - /* clean ucode key table bit map */
104339 - priv->ucode_key_table = 0;
104340 -
104341 spin_unlock_irqrestore(&priv->sta_lock, flags);
104342 }
104343 EXPORT_SYMBOL(iwl_clear_stations_table);
104344 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl-tx.c linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl-tx.c
104345 --- linux-2.6.29.owrt/drivers/net/wireless/iwlwifi/iwl-tx.c 2009-05-10 22:04:38.000000000 +0200
104346 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/iwlwifi/iwl-tx.c 2009-05-10 23:48:29.000000000 +0200
104347 @@ -148,7 +148,7 @@
104348 pci_unmap_single(dev,
104349 pci_unmap_addr(&txq->cmd[index]->meta, mapping),
104350 pci_unmap_len(&txq->cmd[index]->meta, len),
104351 - PCI_DMA_BIDIRECTIONAL);
104352 + PCI_DMA_TODEVICE);
104353
104354 /* Unmap chunks, if any. */
104355 for (i = 1; i < num_tbs; i++) {
104356 @@ -964,7 +964,7 @@
104357 * within command buffer array. */
104358 txcmd_phys = pci_map_single(priv->pci_dev,
104359 out_cmd, sizeof(struct iwl_cmd),
104360 - PCI_DMA_BIDIRECTIONAL);
104361 + PCI_DMA_TODEVICE);
104362 pci_unmap_addr_set(&out_cmd->meta, mapping, txcmd_phys);
104363 pci_unmap_len_set(&out_cmd->meta, len, sizeof(struct iwl_cmd));
104364 /* Add buffer containing Tx command and MAC(!) header to TFD's
104365 @@ -1115,7 +1115,7 @@
104366 IWL_MAX_SCAN_SIZE : sizeof(struct iwl_cmd);
104367
104368 phys_addr = pci_map_single(priv->pci_dev, out_cmd,
104369 - len, PCI_DMA_BIDIRECTIONAL);
104370 + len, PCI_DMA_TODEVICE);
104371 pci_unmap_addr_set(&out_cmd->meta, mapping, phys_addr);
104372 pci_unmap_len_set(&out_cmd->meta, len, len);
104373 phys_addr += offsetof(struct iwl_cmd, hdr);
104374 @@ -1212,7 +1212,7 @@
104375 pci_unmap_single(priv->pci_dev,
104376 pci_unmap_addr(&txq->cmd[cmd_idx]->meta, mapping),
104377 pci_unmap_len(&txq->cmd[cmd_idx]->meta, len),
104378 - PCI_DMA_BIDIRECTIONAL);
104379 + PCI_DMA_TODEVICE);
104380
104381 for (idx = iwl_queue_inc_wrap(idx, q->n_bd); q->read_ptr != idx;
104382 q->read_ptr = iwl_queue_inc_wrap(q->read_ptr, q->n_bd)) {
104383 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/ethtool.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/ethtool.c
104384 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/ethtool.c 2009-05-10 22:04:38.000000000 +0200
104385 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/ethtool.c 2009-05-10 23:48:29.000000000 +0200
104386 @@ -23,7 +23,7 @@
104387 static void lbs_ethtool_get_drvinfo(struct net_device *dev,
104388 struct ethtool_drvinfo *info)
104389 {
104390 - struct lbs_private *priv = dev->ml_priv;
104391 + struct lbs_private *priv = netdev_priv(dev);
104392
104393 snprintf(info->fw_version, 32, "%u.%u.%u.p%u",
104394 priv->fwrelease >> 24 & 0xff,
104395 @@ -47,7 +47,7 @@
104396 static int lbs_ethtool_get_eeprom(struct net_device *dev,
104397 struct ethtool_eeprom *eeprom, u8 * bytes)
104398 {
104399 - struct lbs_private *priv = dev->ml_priv;
104400 + struct lbs_private *priv = netdev_priv(dev);
104401 struct cmd_ds_802_11_eeprom_access cmd;
104402 int ret;
104403
104404 @@ -76,7 +76,7 @@
104405 static void lbs_ethtool_get_stats(struct net_device *dev,
104406 struct ethtool_stats *stats, uint64_t *data)
104407 {
104408 - struct lbs_private *priv = dev->ml_priv;
104409 + struct lbs_private *priv = netdev_priv(dev);
104410 struct cmd_ds_mesh_access mesh_access;
104411 int ret;
104412
104413 @@ -113,7 +113,7 @@
104414
104415 static int lbs_ethtool_get_sset_count(struct net_device *dev, int sset)
104416 {
104417 - struct lbs_private *priv = dev->ml_priv;
104418 + struct lbs_private *priv = netdev_priv(dev);
104419
104420 if (sset == ETH_SS_STATS && dev == priv->mesh_dev)
104421 return MESH_STATS_NUM;
104422 @@ -143,7 +143,7 @@
104423 static void lbs_ethtool_get_wol(struct net_device *dev,
104424 struct ethtool_wolinfo *wol)
104425 {
104426 - struct lbs_private *priv = dev->ml_priv;
104427 + struct lbs_private *priv = netdev_priv(dev);
104428
104429 if (priv->wol_criteria == 0xffffffff) {
104430 /* Interface driver didn't configure wake */
104431 @@ -166,7 +166,7 @@
104432 static int lbs_ethtool_set_wol(struct net_device *dev,
104433 struct ethtool_wolinfo *wol)
104434 {
104435 - struct lbs_private *priv = dev->ml_priv;
104436 + struct lbs_private *priv = netdev_priv(dev);
104437 uint32_t criteria = 0;
104438
104439 if (priv->wol_criteria == 0xffffffff && wol->wolopts)
104440 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/if_usb.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/if_usb.c
104441 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/if_usb.c 2009-05-10 22:04:38.000000000 +0200
104442 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/if_usb.c 2009-05-10 23:48:29.000000000 +0200
104443 @@ -59,7 +59,7 @@
104444 static ssize_t if_usb_firmware_set(struct device *dev,
104445 struct device_attribute *attr, const char *buf, size_t count)
104446 {
104447 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104448 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104449 struct if_usb_card *cardp = priv->card;
104450 char fwname[FIRMWARE_NAME_MAX];
104451 int ret;
104452 @@ -86,7 +86,7 @@
104453 static ssize_t if_usb_boot2_set(struct device *dev,
104454 struct device_attribute *attr, const char *buf, size_t count)
104455 {
104456 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104457 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104458 struct if_usb_card *cardp = priv->card;
104459 char fwname[FIRMWARE_NAME_MAX];
104460 int ret;
104461 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/main.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/main.c
104462 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/main.c 2009-05-10 22:04:38.000000000 +0200
104463 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/main.c 2009-05-10 23:48:29.000000000 +0200
104464 @@ -222,7 +222,7 @@
104465 static ssize_t lbs_anycast_get(struct device *dev,
104466 struct device_attribute *attr, char * buf)
104467 {
104468 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104469 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104470 struct cmd_ds_mesh_access mesh_access;
104471 int ret;
104472
104473 @@ -241,7 +241,7 @@
104474 static ssize_t lbs_anycast_set(struct device *dev,
104475 struct device_attribute *attr, const char * buf, size_t count)
104476 {
104477 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104478 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104479 struct cmd_ds_mesh_access mesh_access;
104480 uint32_t datum;
104481 int ret;
104482 @@ -263,7 +263,7 @@
104483 static ssize_t lbs_prb_rsp_limit_get(struct device *dev,
104484 struct device_attribute *attr, char *buf)
104485 {
104486 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104487 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104488 struct cmd_ds_mesh_access mesh_access;
104489 int ret;
104490 u32 retry_limit;
104491 @@ -286,7 +286,7 @@
104492 static ssize_t lbs_prb_rsp_limit_set(struct device *dev,
104493 struct device_attribute *attr, const char *buf, size_t count)
104494 {
104495 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104496 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104497 struct cmd_ds_mesh_access mesh_access;
104498 int ret;
104499 unsigned long retry_limit;
104500 @@ -321,7 +321,7 @@
104501 static ssize_t lbs_rtap_get(struct device *dev,
104502 struct device_attribute *attr, char * buf)
104503 {
104504 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104505 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104506 return snprintf(buf, 5, "0x%X\n", priv->monitormode);
104507 }
104508
104509 @@ -332,7 +332,7 @@
104510 struct device_attribute *attr, const char * buf, size_t count)
104511 {
104512 int monitor_mode;
104513 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104514 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104515
104516 sscanf(buf, "%x", &monitor_mode);
104517 if (monitor_mode) {
104518 @@ -383,7 +383,7 @@
104519 static ssize_t lbs_mesh_get(struct device *dev,
104520 struct device_attribute *attr, char * buf)
104521 {
104522 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104523 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104524 return snprintf(buf, 5, "0x%X\n", !!priv->mesh_dev);
104525 }
104526
104527 @@ -393,7 +393,7 @@
104528 static ssize_t lbs_mesh_set(struct device *dev,
104529 struct device_attribute *attr, const char * buf, size_t count)
104530 {
104531 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104532 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104533 int enable;
104534 int ret, action = CMD_ACT_MESH_CONFIG_STOP;
104535
104536 @@ -452,7 +452,7 @@
104537 */
104538 static int lbs_dev_open(struct net_device *dev)
104539 {
104540 - struct lbs_private *priv = dev->ml_priv;
104541 + struct lbs_private *priv = netdev_priv(dev) ;
104542 int ret = 0;
104543
104544 lbs_deb_enter(LBS_DEB_NET);
104545 @@ -521,7 +521,7 @@
104546 */
104547 static int lbs_eth_stop(struct net_device *dev)
104548 {
104549 - struct lbs_private *priv = dev->ml_priv;
104550 + struct lbs_private *priv = netdev_priv(dev);
104551
104552 lbs_deb_enter(LBS_DEB_NET);
104553
104554 @@ -538,7 +538,7 @@
104555
104556 static void lbs_tx_timeout(struct net_device *dev)
104557 {
104558 - struct lbs_private *priv = dev->ml_priv;
104559 + struct lbs_private *priv = netdev_priv(dev);
104560
104561 lbs_deb_enter(LBS_DEB_TX);
104562
104563 @@ -590,7 +590,7 @@
104564 */
104565 static struct net_device_stats *lbs_get_stats(struct net_device *dev)
104566 {
104567 - struct lbs_private *priv = dev->ml_priv;
104568 + struct lbs_private *priv = netdev_priv(dev);
104569
104570 lbs_deb_enter(LBS_DEB_NET);
104571 return &priv->stats;
104572 @@ -599,7 +599,7 @@
104573 static int lbs_set_mac_address(struct net_device *dev, void *addr)
104574 {
104575 int ret = 0;
104576 - struct lbs_private *priv = dev->ml_priv;
104577 + struct lbs_private *priv = netdev_priv(dev);
104578 struct sockaddr *phwaddr = addr;
104579 struct cmd_ds_802_11_mac_address cmd;
104580
104581 @@ -732,7 +732,7 @@
104582
104583 static void lbs_set_multicast_list(struct net_device *dev)
104584 {
104585 - struct lbs_private *priv = dev->ml_priv;
104586 + struct lbs_private *priv = netdev_priv(dev);
104587
104588 schedule_work(&priv->mcast_work);
104589 }
104590 @@ -748,7 +748,7 @@
104591 static int lbs_thread(void *data)
104592 {
104593 struct net_device *dev = data;
104594 - struct lbs_private *priv = dev->ml_priv;
104595 + struct lbs_private *priv = netdev_priv(dev);
104596 wait_queue_t wait;
104597
104598 lbs_deb_enter(LBS_DEB_THREAD);
104599 @@ -1184,7 +1184,6 @@
104600 goto done;
104601 }
104602 priv = netdev_priv(dev);
104603 - dev->ml_priv = priv;
104604
104605 if (lbs_init_adapter(priv)) {
104606 lbs_pr_err("failed to initialize adapter structure.\n");
104607 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/persistcfg.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/persistcfg.c
104608 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/persistcfg.c 2009-05-10 22:04:38.000000000 +0200
104609 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/persistcfg.c 2009-05-10 23:48:29.000000000 +0200
104610 @@ -18,7 +18,7 @@
104611 static int mesh_get_default_parameters(struct device *dev,
104612 struct mrvl_mesh_defaults *defs)
104613 {
104614 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104615 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104616 struct cmd_ds_mesh_config cmd;
104617 int ret;
104618
104619 @@ -57,7 +57,7 @@
104620 static ssize_t bootflag_set(struct device *dev, struct device_attribute *attr,
104621 const char *buf, size_t count)
104622 {
104623 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104624 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104625 struct cmd_ds_mesh_config cmd;
104626 uint32_t datum;
104627 int ret;
104628 @@ -100,7 +100,7 @@
104629 static ssize_t boottime_set(struct device *dev,
104630 struct device_attribute *attr, const char *buf, size_t count)
104631 {
104632 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104633 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104634 struct cmd_ds_mesh_config cmd;
104635 uint32_t datum;
104636 int ret;
104637 @@ -152,7 +152,7 @@
104638 static ssize_t channel_set(struct device *dev, struct device_attribute *attr,
104639 const char *buf, size_t count)
104640 {
104641 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104642 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104643 struct cmd_ds_mesh_config cmd;
104644 uint32_t datum;
104645 int ret;
104646 @@ -210,7 +210,7 @@
104647 struct cmd_ds_mesh_config cmd;
104648 struct mrvl_mesh_defaults defs;
104649 struct mrvl_meshie *ie;
104650 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104651 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104652 int len;
104653 int ret;
104654
104655 @@ -269,7 +269,7 @@
104656 struct cmd_ds_mesh_config cmd;
104657 struct mrvl_mesh_defaults defs;
104658 struct mrvl_meshie *ie;
104659 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104660 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104661 uint32_t datum;
104662 int ret;
104663
104664 @@ -323,7 +323,7 @@
104665 struct cmd_ds_mesh_config cmd;
104666 struct mrvl_mesh_defaults defs;
104667 struct mrvl_meshie *ie;
104668 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104669 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104670 uint32_t datum;
104671 int ret;
104672
104673 @@ -377,7 +377,7 @@
104674 struct cmd_ds_mesh_config cmd;
104675 struct mrvl_mesh_defaults defs;
104676 struct mrvl_meshie *ie;
104677 - struct lbs_private *priv = to_net_dev(dev)->ml_priv;
104678 + struct lbs_private *priv = netdev_priv(to_net_dev(dev));
104679 uint32_t datum;
104680 int ret;
104681
104682 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/scan.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/scan.c
104683 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/scan.c 2009-05-10 22:04:38.000000000 +0200
104684 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/scan.c 2009-05-10 23:48:29.000000000 +0200
104685 @@ -945,7 +945,7 @@
104686 union iwreq_data *wrqu, char *extra)
104687 {
104688 DECLARE_SSID_BUF(ssid);
104689 - struct lbs_private *priv = dev->ml_priv;
104690 + struct lbs_private *priv = netdev_priv(dev);
104691 int ret = 0;
104692
104693 lbs_deb_enter(LBS_DEB_WEXT);
104694 @@ -1008,7 +1008,7 @@
104695 struct iw_point *dwrq, char *extra)
104696 {
104697 #define SCAN_ITEM_SIZE 128
104698 - struct lbs_private *priv = dev->ml_priv;
104699 + struct lbs_private *priv = netdev_priv(dev);
104700 int err = 0;
104701 char *ev = extra;
104702 char *stop = ev + dwrq->length;
104703 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/tx.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/tx.c
104704 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/tx.c 2009-05-10 22:04:38.000000000 +0200
104705 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/tx.c 2009-05-10 23:48:29.000000000 +0200
104706 @@ -60,7 +60,7 @@
104707 int lbs_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
104708 {
104709 unsigned long flags;
104710 - struct lbs_private *priv = dev->ml_priv;
104711 + struct lbs_private *priv = netdev_priv(dev);
104712 struct txpd *txpd;
104713 char *p802x_hdr;
104714 uint16_t pkt_len;
104715 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/libertas/wext.c linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/wext.c
104716 --- linux-2.6.29.owrt/drivers/net/wireless/libertas/wext.c 2009-05-10 22:04:38.000000000 +0200
104717 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/libertas/wext.c 2009-05-10 23:48:29.000000000 +0200
104718 @@ -163,7 +163,7 @@
104719 static int lbs_get_freq(struct net_device *dev, struct iw_request_info *info,
104720 struct iw_freq *fwrq, char *extra)
104721 {
104722 - struct lbs_private *priv = dev->ml_priv;
104723 + struct lbs_private *priv = netdev_priv(dev);
104724 struct chan_freq_power *cfp;
104725
104726 lbs_deb_enter(LBS_DEB_WEXT);
104727 @@ -189,7 +189,7 @@
104728 static int lbs_get_wap(struct net_device *dev, struct iw_request_info *info,
104729 struct sockaddr *awrq, char *extra)
104730 {
104731 - struct lbs_private *priv = dev->ml_priv;
104732 + struct lbs_private *priv = netdev_priv(dev);
104733
104734 lbs_deb_enter(LBS_DEB_WEXT);
104735
104736 @@ -207,7 +207,7 @@
104737 static int lbs_set_nick(struct net_device *dev, struct iw_request_info *info,
104738 struct iw_point *dwrq, char *extra)
104739 {
104740 - struct lbs_private *priv = dev->ml_priv;
104741 + struct lbs_private *priv = netdev_priv(dev);
104742
104743 lbs_deb_enter(LBS_DEB_WEXT);
104744
104745 @@ -231,7 +231,7 @@
104746 static int lbs_get_nick(struct net_device *dev, struct iw_request_info *info,
104747 struct iw_point *dwrq, char *extra)
104748 {
104749 - struct lbs_private *priv = dev->ml_priv;
104750 + struct lbs_private *priv = netdev_priv(dev);
104751
104752 lbs_deb_enter(LBS_DEB_WEXT);
104753
104754 @@ -248,7 +248,7 @@
104755 static int mesh_get_nick(struct net_device *dev, struct iw_request_info *info,
104756 struct iw_point *dwrq, char *extra)
104757 {
104758 - struct lbs_private *priv = dev->ml_priv;
104759 + struct lbs_private *priv = netdev_priv(dev);
104760
104761 lbs_deb_enter(LBS_DEB_WEXT);
104762
104763 @@ -273,7 +273,7 @@
104764 struct iw_param *vwrq, char *extra)
104765 {
104766 int ret = 0;
104767 - struct lbs_private *priv = dev->ml_priv;
104768 + struct lbs_private *priv = netdev_priv(dev);
104769 u32 val = vwrq->value;
104770
104771 lbs_deb_enter(LBS_DEB_WEXT);
104772 @@ -293,7 +293,7 @@
104773 static int lbs_get_rts(struct net_device *dev, struct iw_request_info *info,
104774 struct iw_param *vwrq, char *extra)
104775 {
104776 - struct lbs_private *priv = dev->ml_priv;
104777 + struct lbs_private *priv = netdev_priv(dev);
104778 int ret = 0;
104779 u16 val = 0;
104780
104781 @@ -315,7 +315,7 @@
104782 static int lbs_set_frag(struct net_device *dev, struct iw_request_info *info,
104783 struct iw_param *vwrq, char *extra)
104784 {
104785 - struct lbs_private *priv = dev->ml_priv;
104786 + struct lbs_private *priv = netdev_priv(dev);
104787 int ret = 0;
104788 u32 val = vwrq->value;
104789
104790 @@ -336,7 +336,7 @@
104791 static int lbs_get_frag(struct net_device *dev, struct iw_request_info *info,
104792 struct iw_param *vwrq, char *extra)
104793 {
104794 - struct lbs_private *priv = dev->ml_priv;
104795 + struct lbs_private *priv = netdev_priv(dev);
104796 int ret = 0;
104797 u16 val = 0;
104798
104799 @@ -359,7 +359,7 @@
104800 static int lbs_get_mode(struct net_device *dev,
104801 struct iw_request_info *info, u32 * uwrq, char *extra)
104802 {
104803 - struct lbs_private *priv = dev->ml_priv;
104804 + struct lbs_private *priv = netdev_priv(dev);
104805
104806 lbs_deb_enter(LBS_DEB_WEXT);
104807
104808 @@ -385,7 +385,7 @@
104809 struct iw_request_info *info,
104810 struct iw_param *vwrq, char *extra)
104811 {
104812 - struct lbs_private *priv = dev->ml_priv;
104813 + struct lbs_private *priv = netdev_priv(dev);
104814 s16 curlevel = 0;
104815 int ret = 0;
104816
104817 @@ -418,7 +418,7 @@
104818 static int lbs_set_retry(struct net_device *dev, struct iw_request_info *info,
104819 struct iw_param *vwrq, char *extra)
104820 {
104821 - struct lbs_private *priv = dev->ml_priv;
104822 + struct lbs_private *priv = netdev_priv(dev);
104823 int ret = 0;
104824 u16 slimit = 0, llimit = 0;
104825
104826 @@ -466,7 +466,7 @@
104827 static int lbs_get_retry(struct net_device *dev, struct iw_request_info *info,
104828 struct iw_param *vwrq, char *extra)
104829 {
104830 - struct lbs_private *priv = dev->ml_priv;
104831 + struct lbs_private *priv = netdev_priv(dev);
104832 int ret = 0;
104833 u16 val = 0;
104834
104835 @@ -542,7 +542,7 @@
104836 struct iw_point *dwrq, char *extra)
104837 {
104838 int i, j;
104839 - struct lbs_private *priv = dev->ml_priv;
104840 + struct lbs_private *priv = netdev_priv(dev);
104841 struct iw_range *range = (struct iw_range *)extra;
104842 struct chan_freq_power *cfp;
104843 u8 rates[MAX_RATES + 1];
104844 @@ -708,7 +708,7 @@
104845 static int lbs_set_power(struct net_device *dev, struct iw_request_info *info,
104846 struct iw_param *vwrq, char *extra)
104847 {
104848 - struct lbs_private *priv = dev->ml_priv;
104849 + struct lbs_private *priv = netdev_priv(dev);
104850
104851 lbs_deb_enter(LBS_DEB_WEXT);
104852
104853 @@ -758,7 +758,7 @@
104854 static int lbs_get_power(struct net_device *dev, struct iw_request_info *info,
104855 struct iw_param *vwrq, char *extra)
104856 {
104857 - struct lbs_private *priv = dev->ml_priv;
104858 + struct lbs_private *priv = netdev_priv(dev);
104859
104860 lbs_deb_enter(LBS_DEB_WEXT);
104861
104862 @@ -781,7 +781,7 @@
104863 EXCELLENT = 95,
104864 PERFECT = 100
104865 };
104866 - struct lbs_private *priv = dev->ml_priv;
104867 + struct lbs_private *priv = netdev_priv(dev);
104868 u32 rssi_qual;
104869 u32 tx_qual;
104870 u32 quality = 0;
104871 @@ -886,7 +886,7 @@
104872 struct iw_freq *fwrq, char *extra)
104873 {
104874 int ret = -EINVAL;
104875 - struct lbs_private *priv = dev->ml_priv;
104876 + struct lbs_private *priv = netdev_priv(dev);
104877 struct chan_freq_power *cfp;
104878 struct assoc_request * assoc_req;
104879
104880 @@ -943,7 +943,7 @@
104881 struct iw_request_info *info,
104882 struct iw_freq *fwrq, char *extra)
104883 {
104884 - struct lbs_private *priv = dev->ml_priv;
104885 + struct lbs_private *priv = netdev_priv(dev);
104886 struct chan_freq_power *cfp;
104887 int ret = -EINVAL;
104888
104889 @@ -994,7 +994,7 @@
104890 static int lbs_set_rate(struct net_device *dev, struct iw_request_info *info,
104891 struct iw_param *vwrq, char *extra)
104892 {
104893 - struct lbs_private *priv = dev->ml_priv;
104894 + struct lbs_private *priv = netdev_priv(dev);
104895 u8 new_rate = 0;
104896 int ret = -EINVAL;
104897 u8 rates[MAX_RATES + 1];
104898 @@ -1054,7 +1054,7 @@
104899 static int lbs_get_rate(struct net_device *dev, struct iw_request_info *info,
104900 struct iw_param *vwrq, char *extra)
104901 {
104902 - struct lbs_private *priv = dev->ml_priv;
104903 + struct lbs_private *priv = netdev_priv(dev);
104904
104905 lbs_deb_enter(LBS_DEB_WEXT);
104906
104907 @@ -1079,7 +1079,7 @@
104908 struct iw_request_info *info, u32 * uwrq, char *extra)
104909 {
104910 int ret = 0;
104911 - struct lbs_private *priv = dev->ml_priv;
104912 + struct lbs_private *priv = netdev_priv(dev);
104913 struct assoc_request * assoc_req;
104914
104915 lbs_deb_enter(LBS_DEB_WEXT);
104916 @@ -1124,7 +1124,7 @@
104917 struct iw_request_info *info,
104918 struct iw_point *dwrq, u8 * extra)
104919 {
104920 - struct lbs_private *priv = dev->ml_priv;
104921 + struct lbs_private *priv = netdev_priv(dev);
104922 int index = (dwrq->flags & IW_ENCODE_INDEX) - 1;
104923
104924 lbs_deb_enter(LBS_DEB_WEXT);
104925 @@ -1319,7 +1319,7 @@
104926 struct iw_point *dwrq, char *extra)
104927 {
104928 int ret = 0;
104929 - struct lbs_private *priv = dev->ml_priv;
104930 + struct lbs_private *priv = netdev_priv(dev);
104931 struct assoc_request * assoc_req;
104932 u16 is_default = 0, index = 0, set_tx_key = 0;
104933
104934 @@ -1395,7 +1395,7 @@
104935 char *extra)
104936 {
104937 int ret = -EINVAL;
104938 - struct lbs_private *priv = dev->ml_priv;
104939 + struct lbs_private *priv = netdev_priv(dev);
104940 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
104941 int index, max_key_len;
104942
104943 @@ -1501,7 +1501,7 @@
104944 char *extra)
104945 {
104946 int ret = 0;
104947 - struct lbs_private *priv = dev->ml_priv;
104948 + struct lbs_private *priv = netdev_priv(dev);
104949 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
104950 int alg = ext->alg;
104951 struct assoc_request * assoc_req;
104952 @@ -1639,7 +1639,7 @@
104953 struct iw_point *dwrq,
104954 char *extra)
104955 {
104956 - struct lbs_private *priv = dev->ml_priv;
104957 + struct lbs_private *priv = netdev_priv(dev);
104958 int ret = 0;
104959 struct assoc_request * assoc_req;
104960
104961 @@ -1685,7 +1685,7 @@
104962 char *extra)
104963 {
104964 int ret = 0;
104965 - struct lbs_private *priv = dev->ml_priv;
104966 + struct lbs_private *priv = netdev_priv(dev);
104967
104968 lbs_deb_enter(LBS_DEB_WEXT);
104969
104970 @@ -1713,7 +1713,7 @@
104971 struct iw_param *dwrq,
104972 char *extra)
104973 {
104974 - struct lbs_private *priv = dev->ml_priv;
104975 + struct lbs_private *priv = netdev_priv(dev);
104976 struct assoc_request * assoc_req;
104977 int ret = 0;
104978 int updated = 0;
104979 @@ -1816,7 +1816,7 @@
104980 char *extra)
104981 {
104982 int ret = 0;
104983 - struct lbs_private *priv = dev->ml_priv;
104984 + struct lbs_private *priv = netdev_priv(dev);
104985
104986 lbs_deb_enter(LBS_DEB_WEXT);
104987
104988 @@ -1857,7 +1857,7 @@
104989 struct iw_param *vwrq, char *extra)
104990 {
104991 int ret = 0;
104992 - struct lbs_private *priv = dev->ml_priv;
104993 + struct lbs_private *priv = netdev_priv(dev);
104994 s16 dbm = (s16) vwrq->value;
104995
104996 lbs_deb_enter(LBS_DEB_WEXT);
104997 @@ -1936,7 +1936,7 @@
104998 static int lbs_get_essid(struct net_device *dev, struct iw_request_info *info,
104999 struct iw_point *dwrq, char *extra)
105000 {
105001 - struct lbs_private *priv = dev->ml_priv;
105002 + struct lbs_private *priv = netdev_priv(dev);
105003
105004 lbs_deb_enter(LBS_DEB_WEXT);
105005
105006 @@ -1971,7 +1971,7 @@
105007 static int lbs_set_essid(struct net_device *dev, struct iw_request_info *info,
105008 struct iw_point *dwrq, char *extra)
105009 {
105010 - struct lbs_private *priv = dev->ml_priv;
105011 + struct lbs_private *priv = netdev_priv(dev);
105012 int ret = 0;
105013 u8 ssid[IW_ESSID_MAX_SIZE];
105014 u8 ssid_len = 0;
105015 @@ -2040,7 +2040,7 @@
105016 struct iw_request_info *info,
105017 struct iw_point *dwrq, char *extra)
105018 {
105019 - struct lbs_private *priv = dev->ml_priv;
105020 + struct lbs_private *priv = netdev_priv(dev);
105021
105022 lbs_deb_enter(LBS_DEB_WEXT);
105023
105024 @@ -2058,7 +2058,7 @@
105025 struct iw_request_info *info,
105026 struct iw_point *dwrq, char *extra)
105027 {
105028 - struct lbs_private *priv = dev->ml_priv;
105029 + struct lbs_private *priv = netdev_priv(dev);
105030 int ret = 0;
105031
105032 lbs_deb_enter(LBS_DEB_WEXT);
105033 @@ -2102,7 +2102,7 @@
105034 static int lbs_set_wap(struct net_device *dev, struct iw_request_info *info,
105035 struct sockaddr *awrq, char *extra)
105036 {
105037 - struct lbs_private *priv = dev->ml_priv;
105038 + struct lbs_private *priv = netdev_priv(dev);
105039 struct assoc_request * assoc_req;
105040 int ret = 0;
105041
105042 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/orinoco/orinoco.c linux-2.6.29-rc3.owrt/drivers/net/wireless/orinoco/orinoco.c
105043 --- linux-2.6.29.owrt/drivers/net/wireless/orinoco/orinoco.c 2009-05-10 22:04:38.000000000 +0200
105044 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/orinoco/orinoco.c 2009-05-10 23:48:29.000000000 +0200
105045 @@ -3157,20 +3157,8 @@
105046
105047 return NOTIFY_DONE;
105048 }
105049 -
105050 -static void orinoco_register_pm_notifier(struct orinoco_private *priv)
105051 -{
105052 - priv->pm_notifier.notifier_call = orinoco_pm_notifier;
105053 - register_pm_notifier(&priv->pm_notifier);
105054 -}
105055 -
105056 -static void orinoco_unregister_pm_notifier(struct orinoco_private *priv)
105057 -{
105058 - unregister_pm_notifier(&priv->pm_notifier);
105059 -}
105060 #else /* !PM_SLEEP || HERMES_CACHE_FW_ON_INIT */
105061 -#define orinoco_register_pm_notifier(priv) do { } while(0)
105062 -#define orinoco_unregister_pm_notifier(priv) do { } while(0)
105063 +#define orinoco_pm_notifier NULL
105064 #endif
105065
105066 /********************************************************************/
105067 @@ -3660,7 +3648,8 @@
105068 priv->cached_fw = NULL;
105069
105070 /* Register PM notifiers */
105071 - orinoco_register_pm_notifier(priv);
105072 + priv->pm_notifier.notifier_call = orinoco_pm_notifier;
105073 + register_pm_notifier(&priv->pm_notifier);
105074
105075 return dev;
105076 }
105077 @@ -3684,7 +3673,7 @@
105078 kfree(rx_data);
105079 }
105080
105081 - orinoco_unregister_pm_notifier(priv);
105082 + unregister_pm_notifier(&priv->pm_notifier);
105083 orinoco_uncache_fw(priv);
105084
105085 priv->wpa_ie_len = 0;
105086 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/p54/p54common.c linux-2.6.29-rc3.owrt/drivers/net/wireless/p54/p54common.c
105087 --- linux-2.6.29.owrt/drivers/net/wireless/p54/p54common.c 2009-05-10 22:04:38.000000000 +0200
105088 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/p54/p54common.c 2009-05-10 23:48:29.000000000 +0200
105089 @@ -710,11 +710,10 @@
105090 __le32 req_id)
105091 {
105092 struct p54_common *priv = dev->priv;
105093 - struct sk_buff *entry;
105094 + struct sk_buff *entry = priv->tx_queue.next;
105095 unsigned long flags;
105096
105097 spin_lock_irqsave(&priv->tx_queue.lock, flags);
105098 - entry = priv->tx_queue.next;
105099 while (entry != (struct sk_buff *)&priv->tx_queue) {
105100 struct p54_hdr *hdr = (struct p54_hdr *) entry->data;
105101
105102 @@ -733,7 +732,7 @@
105103 struct p54_common *priv = dev->priv;
105104 struct p54_hdr *hdr = (struct p54_hdr *) skb->data;
105105 struct p54_frame_sent *payload = (struct p54_frame_sent *) hdr->data;
105106 - struct sk_buff *entry;
105107 + struct sk_buff *entry = (struct sk_buff *) priv->tx_queue.next;
105108 u32 addr = le32_to_cpu(hdr->req_id) - priv->headroom;
105109 struct memrecord *range = NULL;
105110 u32 freed = 0;
105111 @@ -742,7 +741,6 @@
105112 int count, idx;
105113
105114 spin_lock_irqsave(&priv->tx_queue.lock, flags);
105115 - entry = (struct sk_buff *) priv->tx_queue.next;
105116 while (entry != (struct sk_buff *)&priv->tx_queue) {
105117 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(entry);
105118 struct p54_hdr *entry_hdr;
105119 @@ -978,7 +976,7 @@
105120 struct p54_hdr *data, u32 len)
105121 {
105122 struct p54_common *priv = dev->priv;
105123 - struct sk_buff *entry;
105124 + struct sk_buff *entry = priv->tx_queue.next;
105125 struct sk_buff *target_skb = NULL;
105126 struct ieee80211_tx_info *info;
105127 struct memrecord *range;
105128 @@ -1016,7 +1014,6 @@
105129 }
105130 }
105131
105132 - entry = priv->tx_queue.next;
105133 while (left--) {
105134 u32 hole_size;
105135 info = IEEE80211_SKB_CB(entry);
105136 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/rt2x00/rt2500usb.c linux-2.6.29-rc3.owrt/drivers/net/wireless/rt2x00/rt2500usb.c
105137 --- linux-2.6.29.owrt/drivers/net/wireless/rt2x00/rt2500usb.c 2009-05-10 22:04:38.000000000 +0200
105138 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/rt2x00/rt2500usb.c 2009-05-10 23:48:29.000000000 +0200
105139 @@ -1952,8 +1952,6 @@
105140 { USB_DEVICE(0x13b1, 0x000d), USB_DEVICE_DATA(&rt2500usb_ops) },
105141 { USB_DEVICE(0x13b1, 0x0011), USB_DEVICE_DATA(&rt2500usb_ops) },
105142 { USB_DEVICE(0x13b1, 0x001a), USB_DEVICE_DATA(&rt2500usb_ops) },
105143 - /* CNet */
105144 - { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt2500usb_ops) },
105145 /* Conceptronic */
105146 { USB_DEVICE(0x14b2, 0x3c02), USB_DEVICE_DATA(&rt2500usb_ops) },
105147 /* D-LINK */
105148 @@ -1978,20 +1976,14 @@
105149 { USB_DEVICE(0x148f, 0x2570), USB_DEVICE_DATA(&rt2500usb_ops) },
105150 { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt2500usb_ops) },
105151 { USB_DEVICE(0x148f, 0x9020), USB_DEVICE_DATA(&rt2500usb_ops) },
105152 - /* Sagem */
105153 - { USB_DEVICE(0x079b, 0x004b), USB_DEVICE_DATA(&rt2500usb_ops) },
105154 /* Siemens */
105155 { USB_DEVICE(0x0681, 0x3c06), USB_DEVICE_DATA(&rt2500usb_ops) },
105156 /* SMC */
105157 { USB_DEVICE(0x0707, 0xee13), USB_DEVICE_DATA(&rt2500usb_ops) },
105158 /* Spairon */
105159 { USB_DEVICE(0x114b, 0x0110), USB_DEVICE_DATA(&rt2500usb_ops) },
105160 - /* SURECOM */
105161 - { USB_DEVICE(0x0769, 0x11f3), USB_DEVICE_DATA(&rt2500usb_ops) },
105162 /* Trust */
105163 { USB_DEVICE(0x0eb0, 0x9020), USB_DEVICE_DATA(&rt2500usb_ops) },
105164 - /* VTech */
105165 - { USB_DEVICE(0x0f88, 0x3012), USB_DEVICE_DATA(&rt2500usb_ops) },
105166 /* Zinwell */
105167 { USB_DEVICE(0x5a57, 0x0260), USB_DEVICE_DATA(&rt2500usb_ops) },
105168 { 0, }
105169 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/rt2x00/rt73usb.c linux-2.6.29-rc3.owrt/drivers/net/wireless/rt2x00/rt73usb.c
105170 --- linux-2.6.29.owrt/drivers/net/wireless/rt2x00/rt73usb.c 2009-05-10 22:04:38.000000000 +0200
105171 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/rt2x00/rt73usb.c 2009-05-10 23:48:29.000000000 +0200
105172 @@ -2281,18 +2281,7 @@
105173 */
105174 static struct usb_device_id rt73usb_device_table[] = {
105175 /* AboCom */
105176 - { USB_DEVICE(0x07b8, 0xb21b), USB_DEVICE_DATA(&rt73usb_ops) },
105177 - { USB_DEVICE(0x07b8, 0xb21c), USB_DEVICE_DATA(&rt73usb_ops) },
105178 { USB_DEVICE(0x07b8, 0xb21d), USB_DEVICE_DATA(&rt73usb_ops) },
105179 - { USB_DEVICE(0x07b8, 0xb21e), USB_DEVICE_DATA(&rt73usb_ops) },
105180 - { USB_DEVICE(0x07b8, 0xb21f), USB_DEVICE_DATA(&rt73usb_ops) },
105181 - /* AL */
105182 - { USB_DEVICE(0x14b2, 0x3c10), USB_DEVICE_DATA(&rt73usb_ops) },
105183 - /* Amigo */
105184 - { USB_DEVICE(0x148f, 0x9021), USB_DEVICE_DATA(&rt73usb_ops) },
105185 - { USB_DEVICE(0x0eb0, 0x9021), USB_DEVICE_DATA(&rt73usb_ops) },
105186 - /* AMIT */
105187 - { USB_DEVICE(0x18c5, 0x0002), USB_DEVICE_DATA(&rt73usb_ops) },
105188 /* Askey */
105189 { USB_DEVICE(0x1690, 0x0722), USB_DEVICE_DATA(&rt73usb_ops) },
105190 /* ASUS */
105191 @@ -2305,9 +2294,7 @@
105192 { USB_DEVICE(0x050d, 0x905c), USB_DEVICE_DATA(&rt73usb_ops) },
105193 /* Billionton */
105194 { USB_DEVICE(0x1631, 0xc019), USB_DEVICE_DATA(&rt73usb_ops) },
105195 - { USB_DEVICE(0x08dd, 0x0120), USB_DEVICE_DATA(&rt73usb_ops) },
105196 /* Buffalo */
105197 - { USB_DEVICE(0x0411, 0x00d8), USB_DEVICE_DATA(&rt73usb_ops) },
105198 { USB_DEVICE(0x0411, 0x00f4), USB_DEVICE_DATA(&rt73usb_ops) },
105199 /* CNet */
105200 { USB_DEVICE(0x1371, 0x9022), USB_DEVICE_DATA(&rt73usb_ops) },
105201 @@ -2321,11 +2308,6 @@
105202 { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) },
105203 { USB_DEVICE(0x07d1, 0x3c06), USB_DEVICE_DATA(&rt73usb_ops) },
105204 { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) },
105205 - /* Edimax */
105206 - { USB_DEVICE(0x7392, 0x7318), USB_DEVICE_DATA(&rt73usb_ops) },
105207 - { USB_DEVICE(0x7392, 0x7618), USB_DEVICE_DATA(&rt73usb_ops) },
105208 - /* EnGenius */
105209 - { USB_DEVICE(0x1740, 0x3701), USB_DEVICE_DATA(&rt73usb_ops) },
105210 /* Gemtek */
105211 { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) },
105212 /* Gigabyte */
105213 @@ -2346,34 +2328,22 @@
105214 { USB_DEVICE(0x0db0, 0xa861), USB_DEVICE_DATA(&rt73usb_ops) },
105215 { USB_DEVICE(0x0db0, 0xa874), USB_DEVICE_DATA(&rt73usb_ops) },
105216 /* Ralink */
105217 - { USB_DEVICE(0x04bb, 0x093d), USB_DEVICE_DATA(&rt73usb_ops) },
105218 { USB_DEVICE(0x148f, 0x2573), USB_DEVICE_DATA(&rt73usb_ops) },
105219 { USB_DEVICE(0x148f, 0x2671), USB_DEVICE_DATA(&rt73usb_ops) },
105220 /* Qcom */
105221 { USB_DEVICE(0x18e8, 0x6196), USB_DEVICE_DATA(&rt73usb_ops) },
105222 { USB_DEVICE(0x18e8, 0x6229), USB_DEVICE_DATA(&rt73usb_ops) },
105223 { USB_DEVICE(0x18e8, 0x6238), USB_DEVICE_DATA(&rt73usb_ops) },
105224 - /* Samsung */
105225 - { USB_DEVICE(0x04e8, 0x4471), USB_DEVICE_DATA(&rt73usb_ops) },
105226 /* Senao */
105227 { USB_DEVICE(0x1740, 0x7100), USB_DEVICE_DATA(&rt73usb_ops) },
105228 /* Sitecom */
105229 - { USB_DEVICE(0x0df6, 0x0024), USB_DEVICE_DATA(&rt73usb_ops) },
105230 - { USB_DEVICE(0x0df6, 0x0027), USB_DEVICE_DATA(&rt73usb_ops) },
105231 - { USB_DEVICE(0x0df6, 0x002f), USB_DEVICE_DATA(&rt73usb_ops) },
105232 - { USB_DEVICE(0x0df6, 0x90ac), USB_DEVICE_DATA(&rt73usb_ops) },
105233 { USB_DEVICE(0x0df6, 0x9712), USB_DEVICE_DATA(&rt73usb_ops) },
105234 + { USB_DEVICE(0x0df6, 0x90ac), USB_DEVICE_DATA(&rt73usb_ops) },
105235 /* Surecom */
105236 { USB_DEVICE(0x0769, 0x31f3), USB_DEVICE_DATA(&rt73usb_ops) },
105237 - /* Philips */
105238 - { USB_DEVICE(0x0471, 0x200a), USB_DEVICE_DATA(&rt73usb_ops) },
105239 /* Planex */
105240 { USB_DEVICE(0x2019, 0xab01), USB_DEVICE_DATA(&rt73usb_ops) },
105241 { USB_DEVICE(0x2019, 0xab50), USB_DEVICE_DATA(&rt73usb_ops) },
105242 - /* Zcom */
105243 - { USB_DEVICE(0x0cde, 0x001c), USB_DEVICE_DATA(&rt73usb_ops) },
105244 - /* ZyXEL */
105245 - { USB_DEVICE(0x0586, 0x3415), USB_DEVICE_DATA(&rt73usb_ops) },
105246 { 0, }
105247 };
105248
105249 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/rtl818x/rtl8187_dev.c linux-2.6.29-rc3.owrt/drivers/net/wireless/rtl818x/rtl8187_dev.c
105250 --- linux-2.6.29.owrt/drivers/net/wireless/rtl818x/rtl8187_dev.c 2009-05-10 22:04:38.000000000 +0200
105251 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/rtl818x/rtl8187_dev.c 2009-05-10 23:48:29.000000000 +0200
105252 @@ -48,10 +48,6 @@
105253 {USB_DEVICE(0x0bda, 0x8189), .driver_info = DEVICE_RTL8187B},
105254 {USB_DEVICE(0x0bda, 0x8197), .driver_info = DEVICE_RTL8187B},
105255 {USB_DEVICE(0x0bda, 0x8198), .driver_info = DEVICE_RTL8187B},
105256 - /* Surecom */
105257 - {USB_DEVICE(0x0769, 0x11F2), .driver_info = DEVICE_RTL8187},
105258 - /* Logitech */
105259 - {USB_DEVICE(0x0789, 0x010C), .driver_info = DEVICE_RTL8187},
105260 /* Netgear */
105261 {USB_DEVICE(0x0846, 0x6100), .driver_info = DEVICE_RTL8187},
105262 {USB_DEVICE(0x0846, 0x6a00), .driver_info = DEVICE_RTL8187},
105263 @@ -61,16 +57,8 @@
105264 /* Sitecom */
105265 {USB_DEVICE(0x0df6, 0x000d), .driver_info = DEVICE_RTL8187},
105266 {USB_DEVICE(0x0df6, 0x0028), .driver_info = DEVICE_RTL8187B},
105267 - /* Sphairon Access Systems GmbH */
105268 - {USB_DEVICE(0x114B, 0x0150), .driver_info = DEVICE_RTL8187},
105269 - /* Dick Smith Electronics */
105270 - {USB_DEVICE(0x1371, 0x9401), .driver_info = DEVICE_RTL8187},
105271 /* Abocom */
105272 {USB_DEVICE(0x13d1, 0xabe6), .driver_info = DEVICE_RTL8187},
105273 - /* Qcom */
105274 - {USB_DEVICE(0x18E8, 0x6232), .driver_info = DEVICE_RTL8187},
105275 - /* AirLive */
105276 - {USB_DEVICE(0x1b75, 0x8187), .driver_info = DEVICE_RTL8187},
105277 {}
105278 };
105279
105280 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c linux-2.6.29-rc3.owrt/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c
105281 --- linux-2.6.29.owrt/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c 2009-05-10 22:04:38.000000000 +0200
105282 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/rtl818x/rtl8187_rtl8225.c 2009-05-10 23:48:29.000000000 +0200
105283 @@ -285,10 +285,7 @@
105284 ofdm_power = priv->channels[channel - 1].hw_value >> 4;
105285
105286 cck_power = min(cck_power, (u8)11);
105287 - if (ofdm_power > (u8)15)
105288 - ofdm_power = 25;
105289 - else
105290 - ofdm_power += 10;
105291 + ofdm_power = min(ofdm_power, (u8)35);
105292
105293 rtl818x_iowrite8(priv, &priv->map->TX_GAIN_CCK,
105294 rtl8225_tx_gain_cck_ofdm[cck_power / 6] >> 1);
105295 @@ -539,10 +536,7 @@
105296 cck_power += priv->txpwr_base & 0xF;
105297 cck_power = min(cck_power, (u8)35);
105298
105299 - if (ofdm_power > (u8)15)
105300 - ofdm_power = 25;
105301 - else
105302 - ofdm_power += 10;
105303 + ofdm_power = min(ofdm_power, (u8)15);
105304 ofdm_power += priv->txpwr_base >> 4;
105305 ofdm_power = min(ofdm_power, (u8)35);
105306
105307 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/zd1211rw/zd_mac.c linux-2.6.29-rc3.owrt/drivers/net/wireless/zd1211rw/zd_mac.c
105308 --- linux-2.6.29.owrt/drivers/net/wireless/zd1211rw/zd_mac.c 2009-05-10 22:04:38.000000000 +0200
105309 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/zd1211rw/zd_mac.c 2009-05-10 23:48:29.000000000 +0200
105310 @@ -575,17 +575,13 @@
105311
105312 r = fill_ctrlset(mac, skb);
105313 if (r)
105314 - goto fail;
105315 + return r;
105316
105317 info->rate_driver_data[0] = hw;
105318
105319 r = zd_usb_tx(&mac->chip.usb, skb);
105320 if (r)
105321 - goto fail;
105322 - return 0;
105323 -
105324 -fail:
105325 - dev_kfree_skb(skb);
105326 + return r;
105327 return 0;
105328 }
105329
105330 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/zd1211rw/zd_rf.c linux-2.6.29-rc3.owrt/drivers/net/wireless/zd1211rw/zd_rf.c
105331 --- linux-2.6.29.owrt/drivers/net/wireless/zd1211rw/zd_rf.c 2009-05-10 22:04:38.000000000 +0200
105332 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/zd1211rw/zd_rf.c 2009-05-10 23:48:29.000000000 +0200
105333 @@ -86,7 +86,6 @@
105334 case AL7230B_RF:
105335 r = zd_rf_init_al7230b(rf);
105336 break;
105337 - case MAXIM_NEW_RF:
105338 case UW2453_RF:
105339 r = zd_rf_init_uw2453(rf);
105340 break;
105341 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/net/wireless/zd1211rw/zd_usb.c linux-2.6.29-rc3.owrt/drivers/net/wireless/zd1211rw/zd_usb.c
105342 --- linux-2.6.29.owrt/drivers/net/wireless/zd1211rw/zd_usb.c 2009-05-10 22:04:38.000000000 +0200
105343 +++ linux-2.6.29-rc3.owrt/drivers/net/wireless/zd1211rw/zd_usb.c 2009-05-10 23:48:29.000000000 +0200
105344 @@ -37,7 +37,6 @@
105345 static struct usb_device_id usb_ids[] = {
105346 /* ZD1211 */
105347 { USB_DEVICE(0x0ace, 0x1211), .driver_info = DEVICE_ZD1211 },
105348 - { USB_DEVICE(0x0ace, 0xa211), .driver_info = DEVICE_ZD1211 },
105349 { USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211 },
105350 { USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 },
105351 { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 },
105352 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parisc/dino.c linux-2.6.29-rc3.owrt/drivers/parisc/dino.c
105353 --- linux-2.6.29.owrt/drivers/parisc/dino.c 2009-05-10 22:04:38.000000000 +0200
105354 +++ linux-2.6.29-rc3.owrt/drivers/parisc/dino.c 2009-05-10 23:48:29.000000000 +0200
105355 @@ -479,7 +479,7 @@
105356 res = &dino_dev->hba.lmmio_space;
105357 res->flags = IORESOURCE_MEM;
105358 size = scnprintf(name, sizeof(name), "Dino LMMIO (%s)",
105359 - dev_name(bus->bridge));
105360 + bus->bridge->bus_id);
105361 res->name = kmalloc(size+1, GFP_KERNEL);
105362 if(res->name)
105363 strcpy((char *)res->name, name);
105364 @@ -493,7 +493,7 @@
105365 struct list_head *ln, *tmp_ln;
105366
105367 printk(KERN_ERR "Dino: cannot attach bus %s\n",
105368 - dev_name(bus->bridge));
105369 + bus->bridge->bus_id);
105370 /* kill the bus, we can't do anything with it */
105371 list_for_each_safe(ln, tmp_ln, &bus->devices) {
105372 struct pci_dev *dev = pci_dev_b(ln);
105373 @@ -587,7 +587,7 @@
105374 bus->resource[i+1] = &res[i];
105375 }
105376
105377 - } else if (bus->parent) {
105378 + } else if(bus->self) {
105379 int i;
105380
105381 pci_read_bridge_bases(bus);
105382 @@ -611,12 +611,12 @@
105383 }
105384
105385 DBG("DEBUG %s assigning %d [0x%lx,0x%lx]\n",
105386 - dev_name(&bus->self->dev), i,
105387 + bus->self->dev.bus_id, i,
105388 bus->self->resource[i].start,
105389 bus->self->resource[i].end);
105390 pci_assign_resource(bus->self, i);
105391 DBG("DEBUG %s after assign %d [0x%lx,0x%lx]\n",
105392 - dev_name(&bus->self->dev), i,
105393 + bus->self->dev.bus_id, i,
105394 bus->self->resource[i].start,
105395 bus->self->resource[i].end);
105396 }
105397 @@ -1026,8 +1026,7 @@
105398 dino_current_bus = bus->subordinate + 1;
105399 pci_bus_assign_resources(bus);
105400 } else {
105401 - printk(KERN_ERR "ERROR: failed to scan PCI bus on %s (probably duplicate bus number %d)\n",
105402 - dev_name(&dev->dev), dino_current_bus);
105403 + printk(KERN_ERR "ERROR: failed to scan PCI bus on %s (probably duplicate bus number %d)\n", dev->dev.bus_id, dino_current_bus);
105404 /* increment the bus number in case of duplicates */
105405 dino_current_bus++;
105406 }
105407 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parisc/gsc.c linux-2.6.29-rc3.owrt/drivers/parisc/gsc.c
105408 --- linux-2.6.29.owrt/drivers/parisc/gsc.c 2009-05-10 22:04:38.000000000 +0200
105409 +++ linux-2.6.29-rc3.owrt/drivers/parisc/gsc.c 2009-05-10 23:48:29.000000000 +0200
105410 @@ -186,34 +186,29 @@
105411 *irqp = irq;
105412 }
105413
105414 -struct gsc_fixup_struct {
105415 - void (*choose_irq)(struct parisc_device *, void *);
105416 - void *ctrl;
105417 -};
105418 -
105419 -static int gsc_fixup_irqs_callback(struct device *dev, void *data)
105420 +static struct device *next_device(struct klist_iter *i)
105421 {
105422 - struct parisc_device *padev = to_parisc_device(dev);
105423 - struct gsc_fixup_struct *gf = data;
105424 -
105425 - /* work-around for 715/64 and others which have parent
105426 - at path [5] and children at path [5/0/x] */
105427 - if (padev->id.hw_type == HPHW_FAULTY)
105428 - gsc_fixup_irqs(padev, gf->ctrl, gf->choose_irq);
105429 - gf->choose_irq(padev, gf->ctrl);
105430 -
105431 - return 0;
105432 + struct klist_node * n = klist_next(i);
105433 + return n ? container_of(n, struct device, knode_parent) : NULL;
105434 }
105435
105436 void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl,
105437 void (*choose_irq)(struct parisc_device *, void *))
105438 {
105439 - struct gsc_fixup_struct data = {
105440 - .choose_irq = choose_irq,
105441 - .ctrl = ctrl,
105442 - };
105443 + struct device *dev;
105444 + struct klist_iter i;
105445
105446 - device_for_each_child(&parent->dev, &data, gsc_fixup_irqs_callback);
105447 + klist_iter_init(&parent->dev.klist_children, &i);
105448 + while ((dev = next_device(&i))) {
105449 + struct parisc_device *padev = to_parisc_device(dev);
105450 +
105451 + /* work-around for 715/64 and others which have parent
105452 + at path [5] and children at path [5/0/x] */
105453 + if (padev->id.hw_type == HPHW_FAULTY)
105454 + return gsc_fixup_irqs(padev, ctrl, choose_irq);
105455 + choose_irq(padev, ctrl);
105456 + }
105457 + klist_iter_exit(&i);
105458 }
105459
105460 int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic)
105461 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parisc/iosapic.c linux-2.6.29-rc3.owrt/drivers/parisc/iosapic.c
105462 --- linux-2.6.29.owrt/drivers/parisc/iosapic.c 2009-05-10 22:04:38.000000000 +0200
105463 +++ linux-2.6.29-rc3.owrt/drivers/parisc/iosapic.c 2009-05-10 23:48:29.000000000 +0200
105464 @@ -487,7 +487,7 @@
105465 }
105466
105467 /* Check if pcidev behind a PPB */
105468 - if (pcidev->bus->parent) {
105469 + if (NULL != pcidev->bus->self) {
105470 /* Convert pcidev INTR_PIN into something we
105471 ** can lookup in the IRT.
105472 */
105473 @@ -523,9 +523,10 @@
105474 #endif /* PCI_BRIDGE_FUNCS */
105475
105476 /*
105477 - * Locate the host slot of the PPB.
105478 - */
105479 - while (p->parent->parent)
105480 + ** Locate the host slot the PPB nearest the Host bus
105481 + ** adapter.
105482 + */
105483 + while (NULL != p->parent->self)
105484 p = p->parent;
105485
105486 intr_slot = PCI_SLOT(p->self->devfn);
105487 @@ -708,14 +709,11 @@
105488 struct vector_info *vi = iosapic_get_vector(irq);
105489 u32 d0, d1, dummy_d0;
105490 unsigned long flags;
105491 - int dest_cpu;
105492
105493 - dest_cpu = cpu_check_affinity(irq, dest);
105494 - if (dest_cpu < 0)
105495 + if (cpu_check_affinity(irq, dest))
105496 return;
105497
105498 - irq_desc[irq].affinity = cpumask_of_cpu(dest_cpu);
105499 - vi->txn_addr = txn_affinity_addr(irq, dest_cpu);
105500 + vi->txn_addr = txn_affinity_addr(irq, cpumask_first(dest));
105501
105502 spin_lock_irqsave(&iosapic_lock, flags);
105503 /* d1 contains the destination CPU, so only want to set that
105504 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parisc/lba_pci.c linux-2.6.29-rc3.owrt/drivers/parisc/lba_pci.c
105505 --- linux-2.6.29.owrt/drivers/parisc/lba_pci.c 2009-05-10 22:04:38.000000000 +0200
105506 +++ linux-2.6.29-rc3.owrt/drivers/parisc/lba_pci.c 2009-05-10 23:48:29.000000000 +0200
105507 @@ -644,7 +644,7 @@
105508 ** Properly Setup MMIO resources for this bus.
105509 ** pci_alloc_primary_bus() mangles this.
105510 */
105511 - if (bus->parent) {
105512 + if (bus->self) {
105513 int i;
105514 /* PCI-PCI Bridge */
105515 pci_read_bridge_bases(bus);
105516 @@ -802,7 +802,7 @@
105517 ** Can't fixup here anyway....garr...
105518 */
105519 if (fbb_enable) {
105520 - if (bus->parent) {
105521 + if (bus->self) {
105522 u8 control;
105523 /* enable on PPB */
105524 (void) pci_read_config_byte(bus->self, PCI_BRIDGE_CONTROL, &control);
105525 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parisc/sba_iommu.c linux-2.6.29-rc3.owrt/drivers/parisc/sba_iommu.c
105526 --- linux-2.6.29.owrt/drivers/parisc/sba_iommu.c 2009-05-10 22:04:38.000000000 +0200
105527 +++ linux-2.6.29-rc3.owrt/drivers/parisc/sba_iommu.c 2009-05-10 23:48:29.000000000 +0200
105528 @@ -668,7 +668,7 @@
105529 * @dev: instance of PCI owned by the driver that's asking
105530 * @mask: number of address bits this PCI device can handle
105531 *
105532 - * See Documentation/PCI/PCI-DMA-mapping.txt
105533 + * See Documentation/DMA-mapping.txt
105534 */
105535 static int sba_dma_supported( struct device *dev, u64 mask)
105536 {
105537 @@ -680,8 +680,8 @@
105538 return(0);
105539 }
105540
105541 - /* Documentation/PCI/PCI-DMA-mapping.txt tells drivers to try 64-bit
105542 - * first, then fall back to 32-bit if that fails.
105543 + /* Documentation/DMA-mapping.txt tells drivers to try 64-bit first,
105544 + * then fall back to 32-bit if that fails.
105545 * We are just "encouraging" 32-bit DMA masks here since we can
105546 * never allow IOMMU bypass unless we add special support for ZX1.
105547 */
105548 @@ -706,7 +706,7 @@
105549 * @size: number of bytes to map in driver buffer.
105550 * @direction: R/W or both.
105551 *
105552 - * See Documentation/PCI/PCI-DMA-mapping.txt
105553 + * See Documentation/DMA-mapping.txt
105554 */
105555 static dma_addr_t
105556 sba_map_single(struct device *dev, void *addr, size_t size,
105557 @@ -785,7 +785,7 @@
105558 * @size: number of bytes mapped in driver buffer.
105559 * @direction: R/W or both.
105560 *
105561 - * See Documentation/PCI/PCI-DMA-mapping.txt
105562 + * See Documentation/DMA-mapping.txt
105563 */
105564 static void
105565 sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
105566 @@ -861,7 +861,7 @@
105567 * @size: number of bytes mapped in driver buffer.
105568 * @dma_handle: IOVA of new buffer.
105569 *
105570 - * See Documentation/PCI/PCI-DMA-mapping.txt
105571 + * See Documentation/DMA-mapping.txt
105572 */
105573 static void *sba_alloc_consistent(struct device *hwdev, size_t size,
105574 dma_addr_t *dma_handle, gfp_t gfp)
105575 @@ -892,7 +892,7 @@
105576 * @vaddr: virtual address IOVA of "consistent" buffer.
105577 * @dma_handler: IO virtual address of "consistent" buffer.
105578 *
105579 - * See Documentation/PCI/PCI-DMA-mapping.txt
105580 + * See Documentation/DMA-mapping.txt
105581 */
105582 static void
105583 sba_free_consistent(struct device *hwdev, size_t size, void *vaddr,
105584 @@ -927,7 +927,7 @@
105585 * @nents: number of entries in list
105586 * @direction: R/W or both.
105587 *
105588 - * See Documentation/PCI/PCI-DMA-mapping.txt
105589 + * See Documentation/DMA-mapping.txt
105590 */
105591 static int
105592 sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
105593 @@ -1011,7 +1011,7 @@
105594 * @nents: number of entries in list
105595 * @direction: R/W or both.
105596 *
105597 - * See Documentation/PCI/PCI-DMA-mapping.txt
105598 + * See Documentation/DMA-mapping.txt
105599 */
105600 static void
105601 sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
105602 @@ -1206,48 +1206,30 @@
105603 return (void *) pdir_base;
105604 }
105605
105606 -struct ibase_data_struct {
105607 - struct ioc *ioc;
105608 - int ioc_num;
105609 -};
105610 -
105611 -static int setup_ibase_imask_callback(struct device *dev, void *data)
105612 +static struct device *next_device(struct klist_iter *i)
105613 {
105614 - /* lba_set_iregs() is in drivers/parisc/lba_pci.c */
105615 - extern void lba_set_iregs(struct parisc_device *, u32, u32);
105616 - struct parisc_device *lba = to_parisc_device(dev);
105617 - struct ibase_data_struct *ibd = data;
105618 - int rope_num = (lba->hpa.start >> 13) & 0xf;
105619 - if (rope_num >> 3 == ibd->ioc_num)
105620 - lba_set_iregs(lba, ibd->ioc->ibase, ibd->ioc->imask);
105621 - return 0;
105622 + struct klist_node * n = klist_next(i);
105623 + return n ? container_of(n, struct device, knode_parent) : NULL;
105624 }
105625
105626 /* setup Mercury or Elroy IBASE/IMASK registers. */
105627 static void
105628 setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
105629 {
105630 - struct ibase_data_struct ibase_data = {
105631 - .ioc = ioc,
105632 - .ioc_num = ioc_num,
105633 - };
105634 -
105635 - device_for_each_child(&sba->dev, &ibase_data,
105636 - setup_ibase_imask_callback);
105637 -}
105638 -
105639 -#ifdef SBA_AGP_SUPPORT
105640 -static int
105641 -sba_ioc_find_quicksilver(struct device *dev, void *data)
105642 -{
105643 - int *agp_found = data;
105644 - struct parisc_device *lba = to_parisc_device(dev);
105645 + /* lba_set_iregs() is in drivers/parisc/lba_pci.c */
105646 + extern void lba_set_iregs(struct parisc_device *, u32, u32);
105647 + struct device *dev;
105648 + struct klist_iter i;
105649
105650 - if (IS_QUICKSILVER(lba))
105651 - *agp_found = 1;
105652 - return 0;
105653 + klist_iter_init(&sba->dev.klist_children, &i);
105654 + while ((dev = next_device(&i))) {
105655 + struct parisc_device *lba = to_parisc_device(dev);
105656 + int rope_num = (lba->hpa.start >> 13) & 0xf;
105657 + if (rope_num >> 3 == ioc_num)
105658 + lba_set_iregs(lba, ioc->ibase, ioc->imask);
105659 + }
105660 + klist_iter_exit(&i);
105661 }
105662 -#endif
105663
105664 static void
105665 sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num)
105666 @@ -1350,6 +1332,9 @@
105667 WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM);
105668
105669 #ifdef SBA_AGP_SUPPORT
105670 +{
105671 + struct klist_iter i;
105672 + struct device *dev = NULL;
105673
105674 /*
105675 ** If an AGP device is present, only use half of the IOV space
105676 @@ -1359,7 +1344,13 @@
105677 ** We program the next pdir index after we stop w/ a key for
105678 ** the GART code to handshake on.
105679 */
105680 - device_for_each_child(&sba->dev, &agp_found, sba_ioc_find_quicksilver);
105681 + klist_iter_init(&sba->dev.klist_children, &i);
105682 + while ((dev = next_device(&i))) {
105683 + struct parisc_device *lba = to_parisc_device(dev);
105684 + if (IS_QUICKSILVER(lba))
105685 + agp_found = 1;
105686 + }
105687 + klist_iter_exit(&i);
105688
105689 if (agp_found && sba_reserve_agpgart) {
105690 printk(KERN_INFO "%s: reserving %dMb of IOVA space for agpgart\n",
105691 @@ -1367,7 +1358,9 @@
105692 ioc->pdir_size /= 2;
105693 ioc->pdir_base[PDIR_INDEX(iova_space_size/2)] = SBA_AGPGART_COOKIE;
105694 }
105695 +}
105696 #endif /*SBA_AGP_SUPPORT*/
105697 +
105698 }
105699
105700 static void
105701 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parport/parport_atari.c linux-2.6.29-rc3.owrt/drivers/parport/parport_atari.c
105702 --- linux-2.6.29.owrt/drivers/parport/parport_atari.c 2009-05-10 22:04:39.000000000 +0200
105703 +++ linux-2.6.29-rc3.owrt/drivers/parport/parport_atari.c 2009-05-10 23:48:29.000000000 +0200
105704 @@ -84,7 +84,7 @@
105705 static unsigned char
105706 parport_atari_read_status(struct parport *p)
105707 {
105708 - return ((st_mfp.par_dt_reg & 1 ? 0 : PARPORT_STATUS_BUSY) |
105709 + return ((mfp.par_dt_reg & 1 ? 0 : PARPORT_STATUS_BUSY) |
105710 PARPORT_STATUS_SELECT | PARPORT_STATUS_ERROR);
105711 }
105712
105713 @@ -193,9 +193,9 @@
105714 sound_ym.wd_data = sound_ym.rd_data_reg_sel | (1 << 5);
105715 local_irq_restore(flags);
105716 /* MFP port I0 as input. */
105717 - st_mfp.data_dir &= ~1;
105718 + mfp.data_dir &= ~1;
105719 /* MFP port I0 interrupt on high->low edge. */
105720 - st_mfp.active_edge &= ~1;
105721 + mfp.active_edge &= ~1;
105722 p = parport_register_port((unsigned long)&sound_ym.wd_data,
105723 IRQ_MFP_BUSY, PARPORT_DMA_NONE,
105724 &parport_atari_ops);
105725 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/parport/parport_serial.c linux-2.6.29-rc3.owrt/drivers/parport/parport_serial.c
105726 --- linux-2.6.29.owrt/drivers/parport/parport_serial.c 2009-05-10 22:04:39.000000000 +0200
105727 +++ linux-2.6.29-rc3.owrt/drivers/parport/parport_serial.c 2009-05-10 23:48:29.000000000 +0200
105728 @@ -64,11 +64,6 @@
105729
105730 static int __devinit netmos_parallel_init(struct pci_dev *dev, struct parport_pc_pci *card, int autoirq, int autodma)
105731 {
105732 - /* the rule described below doesn't hold for this device */
105733 - if (dev->device == PCI_DEVICE_ID_NETMOS_9835 &&
105734 - dev->subsystem_vendor == PCI_VENDOR_ID_IBM &&
105735 - dev->subsystem_device == 0x0299)
105736 - return -ENODEV;
105737 /*
105738 * Netmos uses the subdevice ID to indicate the number of parallel
105739 * and serial ports. The form is 0x00PS, where <P> is the number of
105740 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/dmar.c linux-2.6.29-rc3.owrt/drivers/pci/dmar.c
105741 --- linux-2.6.29.owrt/drivers/pci/dmar.c 2009-05-10 22:04:39.000000000 +0200
105742 +++ linux-2.6.29-rc3.owrt/drivers/pci/dmar.c 2009-05-10 23:48:29.000000000 +0200
105743 @@ -330,14 +330,6 @@
105744 entry_header = (struct acpi_dmar_header *)(dmar + 1);
105745 while (((unsigned long)entry_header) <
105746 (((unsigned long)dmar) + dmar_tbl->length)) {
105747 - /* Avoid looping forever on bad ACPI tables */
105748 - if (entry_header->length == 0) {
105749 - printk(KERN_WARNING PREFIX
105750 - "Invalid 0-length structure\n");
105751 - ret = -EINVAL;
105752 - break;
105753 - }
105754 -
105755 dmar_table_print_dmar_entry(entry_header);
105756
105757 switch (entry_header->type) {
105758 @@ -499,7 +491,7 @@
105759 int map_size;
105760 u32 ver;
105761 static int iommu_allocated = 0;
105762 - int agaw = 0;
105763 + int agaw;
105764
105765 iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
105766 if (!iommu)
105767 @@ -515,7 +507,6 @@
105768 iommu->cap = dmar_readq(iommu->reg + DMAR_CAP_REG);
105769 iommu->ecap = dmar_readq(iommu->reg + DMAR_ECAP_REG);
105770
105771 -#ifdef CONFIG_DMAR
105772 agaw = iommu_calculate_agaw(iommu);
105773 if (agaw < 0) {
105774 printk(KERN_ERR
105775 @@ -523,7 +514,6 @@
105776 iommu->seq_id);
105777 goto error;
105778 }
105779 -#endif
105780 iommu->agaw = agaw;
105781
105782 /* the registers might be more than one page */
105783 @@ -581,49 +571,19 @@
105784 }
105785 }
105786
105787 -static int qi_check_fault(struct intel_iommu *iommu, int index)
105788 -{
105789 - u32 fault;
105790 - int head;
105791 - struct q_inval *qi = iommu->qi;
105792 - int wait_index = (index + 1) % QI_LENGTH;
105793 -
105794 - fault = readl(iommu->reg + DMAR_FSTS_REG);
105795 -
105796 - /*
105797 - * If IQE happens, the head points to the descriptor associated
105798 - * with the error. No new descriptors are fetched until the IQE
105799 - * is cleared.
105800 - */
105801 - if (fault & DMA_FSTS_IQE) {
105802 - head = readl(iommu->reg + DMAR_IQH_REG);
105803 - if ((head >> 4) == index) {
105804 - memcpy(&qi->desc[index], &qi->desc[wait_index],
105805 - sizeof(struct qi_desc));
105806 - __iommu_flush_cache(iommu, &qi->desc[index],
105807 - sizeof(struct qi_desc));
105808 - writel(DMA_FSTS_IQE, iommu->reg + DMAR_FSTS_REG);
105809 - return -EINVAL;
105810 - }
105811 - }
105812 -
105813 - return 0;
105814 -}
105815 -
105816 /*
105817 * Submit the queued invalidation descriptor to the remapping
105818 * hardware unit and wait for its completion.
105819 */
105820 -int qi_submit_sync(struct qi_desc *desc, struct intel_iommu *iommu)
105821 +void qi_submit_sync(struct qi_desc *desc, struct intel_iommu *iommu)
105822 {
105823 - int rc = 0;
105824 struct q_inval *qi = iommu->qi;
105825 struct qi_desc *hw, wait_desc;
105826 int wait_index, index;
105827 unsigned long flags;
105828
105829 if (!qi)
105830 - return 0;
105831 + return;
105832
105833 hw = qi->desc;
105834
105835 @@ -641,8 +601,7 @@
105836
105837 hw[index] = *desc;
105838
105839 - wait_desc.low = QI_IWD_STATUS_DATA(QI_DONE) |
105840 - QI_IWD_STATUS_WRITE | QI_IWD_TYPE;
105841 + wait_desc.low = QI_IWD_STATUS_DATA(2) | QI_IWD_STATUS_WRITE | QI_IWD_TYPE;
105842 wait_desc.high = virt_to_phys(&qi->desc_status[wait_index]);
105843
105844 hw[wait_index] = wait_desc;
105845 @@ -653,11 +612,13 @@
105846 qi->free_head = (qi->free_head + 2) % QI_LENGTH;
105847 qi->free_cnt -= 2;
105848
105849 + spin_lock(&iommu->register_lock);
105850 /*
105851 * update the HW tail register indicating the presence of
105852 * new descriptors.
105853 */
105854 writel(qi->free_head << 4, iommu->reg + DMAR_IQT_REG);
105855 + spin_unlock(&iommu->register_lock);
105856
105857 while (qi->desc_status[wait_index] != QI_DONE) {
105858 /*
105859 @@ -667,21 +628,15 @@
105860 * a deadlock where the interrupt context can wait indefinitely
105861 * for free slots in the queue.
105862 */
105863 - rc = qi_check_fault(iommu, index);
105864 - if (rc)
105865 - goto out;
105866 -
105867 spin_unlock(&qi->q_lock);
105868 cpu_relax();
105869 spin_lock(&qi->q_lock);
105870 }
105871 -out:
105872 - qi->desc_status[index] = qi->desc_status[wait_index] = QI_DONE;
105873 +
105874 + qi->desc_status[index] = QI_DONE;
105875
105876 reclaim_free_desc(qi);
105877 spin_unlock_irqrestore(&qi->q_lock, flags);
105878 -
105879 - return rc;
105880 }
105881
105882 /*
105883 @@ -694,13 +649,13 @@
105884 desc.low = QI_IEC_TYPE;
105885 desc.high = 0;
105886
105887 - /* should never fail */
105888 qi_submit_sync(&desc, iommu);
105889 }
105890
105891 int qi_flush_context(struct intel_iommu *iommu, u16 did, u16 sid, u8 fm,
105892 u64 type, int non_present_entry_flush)
105893 {
105894 +
105895 struct qi_desc desc;
105896
105897 if (non_present_entry_flush) {
105898 @@ -714,7 +669,10 @@
105899 | QI_CC_GRAN(type) | QI_CC_TYPE;
105900 desc.high = 0;
105901
105902 - return qi_submit_sync(&desc, iommu);
105903 + qi_submit_sync(&desc, iommu);
105904 +
105905 + return 0;
105906 +
105907 }
105908
105909 int qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr,
105910 @@ -744,7 +702,10 @@
105911 desc.high = QI_IOTLB_ADDR(addr) | QI_IOTLB_IH(ih)
105912 | QI_IOTLB_AM(size_order);
105913
105914 - return qi_submit_sync(&desc, iommu);
105915 + qi_submit_sync(&desc, iommu);
105916 +
105917 + return 0;
105918 +
105919 }
105920
105921 /*
105922 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/hotplug/fakephp.c linux-2.6.29-rc3.owrt/drivers/pci/hotplug/fakephp.c
105923 --- linux-2.6.29.owrt/drivers/pci/hotplug/fakephp.c 2009-05-10 22:04:39.000000000 +0200
105924 +++ linux-2.6.29-rc3.owrt/drivers/pci/hotplug/fakephp.c 2009-05-10 23:48:29.000000000 +0200
105925 @@ -195,13 +195,13 @@
105926 * Tries hard not to re-enable already existing devices;
105927 * also handles scanning of subfunctions.
105928 */
105929 -static int pci_rescan_slot(struct pci_dev *temp)
105930 +static void pci_rescan_slot(struct pci_dev *temp)
105931 {
105932 struct pci_bus *bus = temp->bus;
105933 struct pci_dev *dev;
105934 int func;
105935 + int retval;
105936 u8 hdr_type;
105937 - int count = 0;
105938
105939 if (!pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type)) {
105940 temp->hdr_type = hdr_type & 0x7f;
105941 @@ -213,12 +213,17 @@
105942 dbg("New device on %s function %x:%x\n",
105943 bus->name, temp->devfn >> 3,
105944 temp->devfn & 7);
105945 - count++;
105946 + retval = pci_bus_add_device(dev);
105947 + if (retval)
105948 + dev_err(&dev->dev, "error adding "
105949 + "device, continuing.\n");
105950 + else
105951 + add_slot(dev);
105952 }
105953 }
105954 /* multifunction device? */
105955 if (!(hdr_type & 0x80))
105956 - return count;
105957 + return;
105958
105959 /* continue scanning for other functions */
105960 for (func = 1, temp->devfn++; func < 8; func++, temp->devfn++) {
105961 @@ -234,13 +239,16 @@
105962 dbg("New device on %s function %x:%x\n",
105963 bus->name, temp->devfn >> 3,
105964 temp->devfn & 7);
105965 - count++;
105966 + retval = pci_bus_add_device(dev);
105967 + if (retval)
105968 + dev_err(&dev->dev, "error adding "
105969 + "device, continuing.\n");
105970 + else
105971 + add_slot(dev);
105972 }
105973 }
105974 }
105975 }
105976 -
105977 - return count;
105978 }
105979
105980
105981 @@ -254,8 +262,6 @@
105982 {
105983 unsigned int devfn;
105984 struct pci_dev *dev;
105985 - int retval;
105986 - int found = 0;
105987 dev = alloc_pci_dev();
105988 if (!dev)
105989 return;
105990 @@ -264,23 +270,7 @@
105991 dev->sysdata = bus->sysdata;
105992 for (devfn = 0; devfn < 0x100; devfn += 8) {
105993 dev->devfn = devfn;
105994 - found += pci_rescan_slot(dev);
105995 - }
105996 -
105997 - if (found) {
105998 - pci_bus_assign_resources(bus);
105999 - list_for_each_entry(dev, &bus->devices, bus_list) {
106000 - /* Skip already-added devices */
106001 - if (dev->is_added)
106002 - continue;
106003 - retval = pci_bus_add_device(dev);
106004 - if (retval)
106005 - dev_err(&dev->dev,
106006 - "Error adding device, continuing\n");
106007 - else
106008 - add_slot(dev);
106009 - }
106010 - pci_bus_add_devices(bus);
106011 + pci_rescan_slot(dev);
106012 }
106013 kfree(dev);
106014 }
106015 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/hotplug/Kconfig linux-2.6.29-rc3.owrt/drivers/pci/hotplug/Kconfig
106016 --- linux-2.6.29.owrt/drivers/pci/hotplug/Kconfig 2009-05-10 22:04:39.000000000 +0200
106017 +++ linux-2.6.29-rc3.owrt/drivers/pci/hotplug/Kconfig 2009-05-10 23:48:29.000000000 +0200
106018 @@ -143,7 +143,7 @@
106019
106020 config HOTPLUG_PCI_RPA
106021 tristate "RPA PCI Hotplug driver"
106022 - depends on PPC_PSERIES && EEH && !HOTPLUG_PCI_FAKE
106023 + depends on PPC_PSERIES && PPC64 && !HOTPLUG_PCI_FAKE
106024 help
106025 Say Y here if you have a RPA system that supports PCI Hotplug.
106026
106027 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/hotplug/Makefile linux-2.6.29-rc3.owrt/drivers/pci/hotplug/Makefile
106028 --- linux-2.6.29.owrt/drivers/pci/hotplug/Makefile 2009-05-10 22:04:39.000000000 +0200
106029 +++ linux-2.6.29-rc3.owrt/drivers/pci/hotplug/Makefile 2009-05-10 23:48:29.000000000 +0200
106030 @@ -5,15 +5,11 @@
106031 obj-$(CONFIG_HOTPLUG_PCI) += pci_hotplug.o
106032 obj-$(CONFIG_HOTPLUG_PCI_COMPAQ) += cpqphp.o
106033 obj-$(CONFIG_HOTPLUG_PCI_IBM) += ibmphp.o
106034 -
106035 -# pciehp should be linked before acpiphp in order to allow the native driver
106036 -# to attempt to bind first. We can then fall back to generic support.
106037 -
106038 -obj-$(CONFIG_HOTPLUG_PCI_PCIE) += pciehp.o
106039 obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o
106040 obj-$(CONFIG_HOTPLUG_PCI_ACPI_IBM) += acpiphp_ibm.o
106041 obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550) += cpcihp_zt5550.o
106042 obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC) += cpcihp_generic.o
106043 +obj-$(CONFIG_HOTPLUG_PCI_PCIE) += pciehp.o
106044 obj-$(CONFIG_HOTPLUG_PCI_SHPC) += shpchp.o
106045 obj-$(CONFIG_HOTPLUG_PCI_RPA) += rpaphp.o
106046 obj-$(CONFIG_HOTPLUG_PCI_RPA_DLPAR) += rpadlpar_io.o
106047 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/hotplug/pciehp_core.c linux-2.6.29-rc3.owrt/drivers/pci/hotplug/pciehp_core.c
106048 --- linux-2.6.29.owrt/drivers/pci/hotplug/pciehp_core.c 2009-05-10 22:04:39.000000000 +0200
106049 +++ linux-2.6.29-rc3.owrt/drivers/pci/hotplug/pciehp_core.c 2009-05-10 23:48:29.000000000 +0200
106050 @@ -434,13 +434,6 @@
106051 goto err_out_release_ctlr;
106052 }
106053
106054 - /* Enable events after we have setup the data structures */
106055 - rc = pcie_init_notification(ctrl);
106056 - if (rc) {
106057 - ctrl_err(ctrl, "Notification initialization failed\n");
106058 - goto err_out_release_ctlr;
106059 - }
106060 -
106061 /* Check if slot is occupied */
106062 t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset);
106063 t_slot->hpc_ops->get_adapter_status(t_slot, &value);
106064 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/hotplug/pciehp.h linux-2.6.29-rc3.owrt/drivers/pci/hotplug/pciehp.h
106065 --- linux-2.6.29.owrt/drivers/pci/hotplug/pciehp.h 2009-05-10 22:04:39.000000000 +0200
106066 +++ linux-2.6.29-rc3.owrt/drivers/pci/hotplug/pciehp.h 2009-05-10 23:48:29.000000000 +0200
106067 @@ -111,7 +111,6 @@
106068 int cmd_busy;
106069 unsigned int no_cmd_complete:1;
106070 unsigned int link_active_reporting:1;
106071 - unsigned int notification_enabled:1;
106072 };
106073
106074 #define INT_BUTTON_IGNORE 0
106075 @@ -171,7 +170,6 @@
106076 extern int pciehp_unconfigure_device(struct slot *p_slot);
106077 extern void pciehp_queue_pushbutton_work(struct work_struct *work);
106078 struct controller *pcie_init(struct pcie_device *dev);
106079 -int pcie_init_notification(struct controller *ctrl);
106080 int pciehp_enable_slot(struct slot *p_slot);
106081 int pciehp_disable_slot(struct slot *p_slot);
106082 int pcie_enable_notification(struct controller *ctrl);
106083 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/hotplug/pciehp_hpc.c linux-2.6.29-rc3.owrt/drivers/pci/hotplug/pciehp_hpc.c
106084 --- linux-2.6.29.owrt/drivers/pci/hotplug/pciehp_hpc.c 2009-05-10 22:04:39.000000000 +0200
106085 +++ linux-2.6.29-rc3.owrt/drivers/pci/hotplug/pciehp_hpc.c 2009-05-10 23:48:29.000000000 +0200
106086 @@ -934,7 +934,7 @@
106087 ctrl_warn(ctrl, "Cannot disable software notification\n");
106088 }
106089
106090 -int pcie_init_notification(struct controller *ctrl)
106091 +static int pcie_init_notification(struct controller *ctrl)
106092 {
106093 if (pciehp_request_irq(ctrl))
106094 return -1;
106095 @@ -942,17 +942,13 @@
106096 pciehp_free_irq(ctrl);
106097 return -1;
106098 }
106099 - ctrl->notification_enabled = 1;
106100 return 0;
106101 }
106102
106103 static void pcie_shutdown_notification(struct controller *ctrl)
106104 {
106105 - if (ctrl->notification_enabled) {
106106 - pcie_disable_notification(ctrl);
106107 - pciehp_free_irq(ctrl);
106108 - ctrl->notification_enabled = 0;
106109 - }
106110 + pcie_disable_notification(ctrl);
106111 + pciehp_free_irq(ctrl);
106112 }
106113
106114 static int pcie_init_slot(struct controller *ctrl)
106115 @@ -1114,8 +1110,13 @@
106116 if (pcie_init_slot(ctrl))
106117 goto abort_ctrl;
106118
106119 + if (pcie_init_notification(ctrl))
106120 + goto abort_slot;
106121 +
106122 return ctrl;
106123
106124 +abort_slot:
106125 + pcie_cleanup_slot(ctrl);
106126 abort_ctrl:
106127 kfree(ctrl);
106128 abort:
106129 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/intel-iommu.c linux-2.6.29-rc3.owrt/drivers/pci/intel-iommu.c
106130 --- linux-2.6.29.owrt/drivers/pci/intel-iommu.c 2009-05-10 22:04:39.000000000 +0200
106131 +++ linux-2.6.29-rc3.owrt/drivers/pci/intel-iommu.c 2009-05-10 23:48:29.000000000 +0200
106132 @@ -61,8 +61,6 @@
106133 /* global iommu list, set NULL for ignored DMAR units */
106134 static struct intel_iommu **g_iommus;
106135
106136 -static int rwbf_quirk;
106137 -
106138 /*
106139 * 0: Present
106140 * 1-11: Reserved
106141 @@ -270,12 +268,7 @@
106142
106143 static void domain_remove_dev_info(struct dmar_domain *domain);
106144
106145 -#ifdef CONFIG_DMAR_DEFAULT_ON
106146 -int dmar_disabled = 0;
106147 -#else
106148 -int dmar_disabled = 1;
106149 -#endif /*CONFIG_DMAR_DEFAULT_ON*/
106150 -
106151 +int dmar_disabled;
106152 static int __initdata dmar_map_gfx = 1;
106153 static int dmar_forcedac;
106154 static int intel_iommu_strict;
106155 @@ -291,12 +284,9 @@
106156 if (!str)
106157 return -EINVAL;
106158 while (*str) {
106159 - if (!strncmp(str, "on", 2)) {
106160 - dmar_disabled = 0;
106161 - printk(KERN_INFO "Intel-IOMMU: enabled\n");
106162 - } else if (!strncmp(str, "off", 3)) {
106163 + if (!strncmp(str, "off", 3)) {
106164 dmar_disabled = 1;
106165 - printk(KERN_INFO "Intel-IOMMU: disabled\n");
106166 + printk(KERN_INFO"Intel-IOMMU: disabled\n");
106167 } else if (!strncmp(str, "igfx_off", 8)) {
106168 dmar_map_gfx = 0;
106169 printk(KERN_INFO
106170 @@ -787,7 +777,7 @@
106171 u32 val;
106172 unsigned long flag;
106173
106174 - if (!rwbf_quirk && !cap_rwbf(iommu->cap))
106175 + if (!cap_rwbf(iommu->cap))
106176 return;
106177 val = iommu->gcmd | DMA_GCMD_WBF;
106178
106179 @@ -3139,15 +3129,3 @@
106180 .unmap = intel_iommu_unmap_range,
106181 .iova_to_phys = intel_iommu_iova_to_phys,
106182 };
106183 -
106184 -static void __devinit quirk_iommu_rwbf(struct pci_dev *dev)
106185 -{
106186 - /*
106187 - * Mobile 4 Series Chipset neglects to set RWBF capability,
106188 - * but needs it:
106189 - */
106190 - printk(KERN_INFO "DMAR: Forcing write-buffer flush capability\n");
106191 - rwbf_quirk = 1;
106192 -}
106193 -
106194 -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_rwbf);
106195 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/intr_remapping.c linux-2.6.29-rc3.owrt/drivers/pci/intr_remapping.c
106196 --- linux-2.6.29.owrt/drivers/pci/intr_remapping.c 2009-05-10 22:04:39.000000000 +0200
106197 +++ linux-2.6.29-rc3.owrt/drivers/pci/intr_remapping.c 2009-05-10 23:48:29.000000000 +0200
106198 @@ -207,7 +207,7 @@
106199 return index;
106200 }
106201
106202 -static int qi_flush_iec(struct intel_iommu *iommu, int index, int mask)
106203 +static void qi_flush_iec(struct intel_iommu *iommu, int index, int mask)
106204 {
106205 struct qi_desc desc;
106206
106207 @@ -215,7 +215,7 @@
106208 | QI_IEC_SELECTIVE;
106209 desc.high = 0;
106210
106211 - return qi_submit_sync(&desc, iommu);
106212 + qi_submit_sync(&desc, iommu);
106213 }
106214
106215 int map_irq_to_irte_handle(int irq, u16 *sub_handle)
106216 @@ -283,7 +283,6 @@
106217
106218 int modify_irte(int irq, struct irte *irte_modified)
106219 {
106220 - int rc;
106221 int index;
106222 struct irte *irte;
106223 struct intel_iommu *iommu;
106224 @@ -304,15 +303,14 @@
106225 set_64bit((unsigned long *)irte, irte_modified->low | (1 << 1));
106226 __iommu_flush_cache(iommu, irte, sizeof(*irte));
106227
106228 - rc = qi_flush_iec(iommu, index, 0);
106229 - spin_unlock(&irq_2_ir_lock);
106230 + qi_flush_iec(iommu, index, 0);
106231
106232 - return rc;
106233 + spin_unlock(&irq_2_ir_lock);
106234 + return 0;
106235 }
106236
106237 int flush_irte(int irq)
106238 {
106239 - int rc;
106240 int index;
106241 struct intel_iommu *iommu;
106242 struct irq_2_iommu *irq_iommu;
106243 @@ -328,10 +326,10 @@
106244
106245 index = irq_iommu->irte_index + irq_iommu->sub_handle;
106246
106247 - rc = qi_flush_iec(iommu, index, irq_iommu->irte_mask);
106248 + qi_flush_iec(iommu, index, irq_iommu->irte_mask);
106249 spin_unlock(&irq_2_ir_lock);
106250
106251 - return rc;
106252 + return 0;
106253 }
106254
106255 struct intel_iommu *map_ioapic_to_ir(int apic)
106256 @@ -357,7 +355,6 @@
106257
106258 int free_irte(int irq)
106259 {
106260 - int rc = 0;
106261 int index, i;
106262 struct irte *irte;
106263 struct intel_iommu *iommu;
106264 @@ -378,7 +375,7 @@
106265 if (!irq_iommu->sub_handle) {
106266 for (i = 0; i < (1 << irq_iommu->irte_mask); i++)
106267 set_64bit((unsigned long *)irte, 0);
106268 - rc = qi_flush_iec(iommu, index, irq_iommu->irte_mask);
106269 + qi_flush_iec(iommu, index, irq_iommu->irte_mask);
106270 }
106271
106272 irq_iommu->iommu = NULL;
106273 @@ -388,7 +385,7 @@
106274
106275 spin_unlock(&irq_2_ir_lock);
106276
106277 - return rc;
106278 + return 0;
106279 }
106280
106281 static void iommu_set_intr_remapping(struct intel_iommu *iommu, int mode)
106282 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/msi.c linux-2.6.29-rc3.owrt/drivers/pci/msi.c
106283 --- linux-2.6.29.owrt/drivers/pci/msi.c 2009-05-10 22:04:39.000000000 +0200
106284 +++ linux-2.6.29-rc3.owrt/drivers/pci/msi.c 2009-05-10 23:48:29.000000000 +0200
106285 @@ -103,14 +103,6 @@
106286 }
106287 }
106288
106289 -static inline __attribute_const__ u32 msi_mask(unsigned x)
106290 -{
106291 - /* Don't shift by >= width of type */
106292 - if (x >= 5)
106293 - return 0xffffffff;
106294 - return (1 << (1 << x)) - 1;
106295 -}
106296 -
106297 static void msix_flush_writes(struct irq_desc *desc)
106298 {
106299 struct msi_desc *entry;
106300 @@ -415,7 +407,8 @@
106301
106302 /* All MSIs are unmasked by default, Mask them all */
106303 pci_read_config_dword(dev, base, &maskbits);
106304 - temp = msi_mask((control & PCI_MSI_FLAGS_QMASK) >> 1);
106305 + temp = (1 << multi_msi_capable(control));
106306 + temp = ((temp - 1) & ~temp);
106307 maskbits |= temp;
106308 pci_write_config_dword(dev, base, maskbits);
106309 entry->msi_attrib.maskbits_mask = temp;
106310 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pci.c linux-2.6.29-rc3.owrt/drivers/pci/pci.c
106311 --- linux-2.6.29.owrt/drivers/pci/pci.c 2009-05-10 22:04:39.000000000 +0200
106312 +++ linux-2.6.29-rc3.owrt/drivers/pci/pci.c 2009-05-10 23:48:29.000000000 +0200
106313 @@ -1393,35 +1393,35 @@
106314 pci_power_t prev_state;
106315 int error;
106316
106317 + pci_restore_state(dev);
106318 pci_update_current_state(dev, PCI_D0);
106319
106320 prev_state = dev->current_state;
106321 if (prev_state == PCI_D0)
106322 - goto Restore;
106323 + return 0;
106324
106325 error = pci_raw_set_power_state(dev, PCI_D0, false);
106326 if (error)
106327 return error;
106328
106329 - /*
106330 - * This assumes that we won't get a bus in B2 or B3 from the BIOS, but
106331 - * we've made this assumption forever and it appears to be universally
106332 - * satisfied.
106333 - */
106334 - switch(prev_state) {
106335 - case PCI_D3cold:
106336 - case PCI_D3hot:
106337 - mdelay(pci_pm_d3_delay);
106338 - break;
106339 - case PCI_D2:
106340 - udelay(PCI_PM_D2_DELAY);
106341 - break;
106342 + if (pci_is_bridge(dev)) {
106343 + if (prev_state > PCI_D1)
106344 + mdelay(PCI_PM_BUS_WAIT);
106345 + } else {
106346 + switch(prev_state) {
106347 + case PCI_D3cold:
106348 + case PCI_D3hot:
106349 + mdelay(pci_pm_d3_delay);
106350 + break;
106351 + case PCI_D2:
106352 + udelay(PCI_PM_D2_DELAY);
106353 + break;
106354 + }
106355 }
106356
106357 - pci_update_current_state(dev, PCI_D0);
106358 + dev->current_state = PCI_D0;
106359
106360 - Restore:
106361 - return dev->state_saved ? pci_restore_state(dev) : 0;
106362 + return 0;
106363 }
106364
106365 /**
106366 @@ -1540,21 +1540,16 @@
106367 }
106368
106369 /**
106370 - * __pci_request_region - Reserved PCI I/O and memory resource
106371 + * pci_request_region - Reserved PCI I/O and memory resource
106372 * @pdev: PCI device whose resources are to be reserved
106373 * @bar: BAR to be reserved
106374 * @res_name: Name to be associated with resource.
106375 - * @exclusive: whether the region access is exclusive or not
106376 *
106377 * Mark the PCI region associated with PCI device @pdev BR @bar as
106378 * being reserved by owner @res_name. Do not access any
106379 * address inside the PCI regions unless this call returns
106380 * successfully.
106381 *
106382 - * If @exclusive is set, then the region is marked so that userspace
106383 - * is explicitly not allowed to map the resource via /dev/mem or
106384 - * sysfs MMIO access.
106385 - *
106386 * Returns 0 on success, or %EBUSY on error. A warning
106387 * message is also printed on failure.
106388 */
106389 @@ -1593,12 +1588,12 @@
106390 }
106391
106392 /**
106393 - * pci_request_region - Reserve PCI I/O and memory resource
106394 + * pci_request_region - Reserved PCI I/O and memory resource
106395 * @pdev: PCI device whose resources are to be reserved
106396 * @bar: BAR to be reserved
106397 - * @res_name: Name to be associated with resource
106398 + * @res_name: Name to be associated with resource.
106399 *
106400 - * Mark the PCI region associated with PCI device @pdev BAR @bar as
106401 + * Mark the PCI region associated with PCI device @pdev BR @bar as
106402 * being reserved by owner @res_name. Do not access any
106403 * address inside the PCI regions unless this call returns
106404 * successfully.
106405 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pci-driver.c linux-2.6.29-rc3.owrt/drivers/pci/pci-driver.c
106406 --- linux-2.6.29.owrt/drivers/pci/pci-driver.c 2009-05-10 22:04:39.000000000 +0200
106407 +++ linux-2.6.29-rc3.owrt/drivers/pci/pci-driver.c 2009-05-10 23:48:29.000000000 +0200
106408 @@ -355,8 +355,6 @@
106409 int i = 0;
106410
106411 if (drv && drv->suspend) {
106412 - pci_power_t prev = pci_dev->current_state;
106413 -
106414 pci_dev->state_saved = false;
106415
106416 i = drv->suspend(pci_dev, state);
106417 @@ -367,13 +365,8 @@
106418 if (pci_dev->state_saved)
106419 goto Fixup;
106420
106421 - if (pci_dev->current_state != PCI_D0
106422 - && pci_dev->current_state != PCI_UNKNOWN) {
106423 - WARN_ONCE(pci_dev->current_state != prev,
106424 - "PCI PM: Device state not saved by %pF\n",
106425 - drv->suspend);
106426 + if (WARN_ON_ONCE(pci_dev->current_state != PCI_D0))
106427 goto Fixup;
106428 - }
106429 }
106430
106431 pci_save_state(pci_dev);
106432 @@ -426,24 +419,38 @@
106433 static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev)
106434 {
106435 pci_restore_standard_config(pci_dev);
106436 - pci_dev->state_saved = false;
106437 pci_fixup_device(pci_fixup_resume_early, pci_dev);
106438 }
106439
106440 -static void pci_pm_default_resume(struct pci_dev *pci_dev)
106441 +static int pci_pm_default_resume(struct pci_dev *pci_dev)
106442 {
106443 pci_fixup_device(pci_fixup_resume, pci_dev);
106444
106445 if (!pci_is_bridge(pci_dev))
106446 pci_enable_wake(pci_dev, PCI_D0, false);
106447 +
106448 + return pci_pm_reenable_device(pci_dev);
106449 +}
106450 +
106451 +static void pci_pm_default_suspend_generic(struct pci_dev *pci_dev)
106452 +{
106453 + /* If device is enabled at this point, disable it */
106454 + pci_disable_enabled_device(pci_dev);
106455 + /*
106456 + * Save state with interrupts enabled, because in principle the bus the
106457 + * device is on may be put into a low power state after this code runs.
106458 + */
106459 + pci_save_state(pci_dev);
106460 }
106461
106462 static void pci_pm_default_suspend(struct pci_dev *pci_dev)
106463 {
106464 - /* Disable non-bridge devices without PM support */
106465 + pci_pm_default_suspend_generic(pci_dev);
106466 +
106467 if (!pci_is_bridge(pci_dev))
106468 - pci_disable_enabled_device(pci_dev);
106469 - pci_save_state(pci_dev);
106470 + pci_prepare_to_sleep(pci_dev);
106471 +
106472 + pci_fixup_device(pci_fixup_suspend, pci_dev);
106473 }
106474
106475 static bool pci_has_legacy_pm_support(struct pci_dev *pci_dev)
106476 @@ -488,49 +495,21 @@
106477 static int pci_pm_suspend(struct device *dev)
106478 {
106479 struct pci_dev *pci_dev = to_pci_dev(dev);
106480 - struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
106481 + struct device_driver *drv = dev->driver;
106482 + int error = 0;
106483
106484 if (pci_has_legacy_pm_support(pci_dev))
106485 return pci_legacy_suspend(dev, PMSG_SUSPEND);
106486
106487 - if (!pm) {
106488 - pci_pm_default_suspend(pci_dev);
106489 - goto Fixup;
106490 - }
106491 -
106492 - pci_dev->state_saved = false;
106493 -
106494 - if (pm->suspend) {
106495 - pci_power_t prev = pci_dev->current_state;
106496 - int error;
106497 -
106498 - error = pm->suspend(dev);
106499 - suspend_report_result(pm->suspend, error);
106500 - if (error)
106501 - return error;
106502 -
106503 - if (pci_dev->state_saved)
106504 - goto Fixup;
106505 -
106506 - if (pci_dev->current_state != PCI_D0
106507 - && pci_dev->current_state != PCI_UNKNOWN) {
106508 - WARN_ONCE(pci_dev->current_state != prev,
106509 - "PCI PM: State of device not saved by %pF\n",
106510 - pm->suspend);
106511 - goto Fixup;
106512 - }
106513 - }
106514 -
106515 - if (!pci_dev->state_saved) {
106516 - pci_save_state(pci_dev);
106517 - if (!pci_is_bridge(pci_dev))
106518 - pci_prepare_to_sleep(pci_dev);
106519 + if (drv && drv->pm && drv->pm->suspend) {
106520 + error = drv->pm->suspend(dev);
106521 + suspend_report_result(drv->pm->suspend, error);
106522 }
106523
106524 - Fixup:
106525 - pci_fixup_device(pci_fixup_suspend, pci_dev);
106526 + if (!error)
106527 + pci_pm_default_suspend(pci_dev);
106528
106529 - return 0;
106530 + return error;
106531 }
106532
106533 static int pci_pm_suspend_noirq(struct device *dev)
106534 @@ -573,29 +552,18 @@
106535 static int pci_pm_resume(struct device *dev)
106536 {
106537 struct pci_dev *pci_dev = to_pci_dev(dev);
106538 - struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
106539 + struct device_driver *drv = dev->driver;
106540 int error = 0;
106541
106542 - /*
106543 - * This is necessary for the suspend error path in which resume is
106544 - * called without restoring the standard config registers of the device.
106545 - */
106546 - if (pci_dev->state_saved)
106547 - pci_restore_standard_config(pci_dev);
106548 -
106549 if (pci_has_legacy_pm_support(pci_dev))
106550 return pci_legacy_resume(dev);
106551
106552 - pci_pm_default_resume(pci_dev);
106553 + error = pci_pm_default_resume(pci_dev);
106554
106555 - if (pm) {
106556 - if (pm->resume)
106557 - error = pm->resume(dev);
106558 - } else {
106559 - pci_pm_reenable_device(pci_dev);
106560 - }
106561 + if (!error && drv && drv->pm && drv->pm->resume)
106562 + error = drv->pm->resume(dev);
106563
106564 - return 0;
106565 + return error;
106566 }
106567
106568 #else /* !CONFIG_SUSPEND */
106569 @@ -612,31 +580,21 @@
106570 static int pci_pm_freeze(struct device *dev)
106571 {
106572 struct pci_dev *pci_dev = to_pci_dev(dev);
106573 - struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
106574 + struct device_driver *drv = dev->driver;
106575 + int error = 0;
106576
106577 if (pci_has_legacy_pm_support(pci_dev))
106578 return pci_legacy_suspend(dev, PMSG_FREEZE);
106579
106580 - if (!pm) {
106581 - pci_pm_default_suspend(pci_dev);
106582 - return 0;
106583 + if (drv && drv->pm && drv->pm->freeze) {
106584 + error = drv->pm->freeze(dev);
106585 + suspend_report_result(drv->pm->freeze, error);
106586 }
106587
106588 - pci_dev->state_saved = false;
106589 -
106590 - if (pm->freeze) {
106591 - int error;
106592 -
106593 - error = pm->freeze(dev);
106594 - suspend_report_result(pm->freeze, error);
106595 - if (error)
106596 - return error;
106597 - }
106598 -
106599 - if (!pci_dev->state_saved)
106600 - pci_save_state(pci_dev);
106601 + if (!error)
106602 + pci_pm_default_suspend_generic(pci_dev);
106603
106604 - return 0;
106605 + return error;
106606 }
106607
106608 static int pci_pm_freeze_noirq(struct device *dev)
106609 @@ -679,18 +637,16 @@
106610 static int pci_pm_thaw(struct device *dev)
106611 {
106612 struct pci_dev *pci_dev = to_pci_dev(dev);
106613 - struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
106614 + struct device_driver *drv = dev->driver;
106615 int error = 0;
106616
106617 if (pci_has_legacy_pm_support(pci_dev))
106618 return pci_legacy_resume(dev);
106619
106620 - if (pm) {
106621 - if (pm->thaw)
106622 - error = pm->thaw(dev);
106623 - } else {
106624 - pci_pm_reenable_device(pci_dev);
106625 - }
106626 + pci_pm_reenable_device(pci_dev);
106627 +
106628 + if (drv && drv->pm && drv->pm->thaw)
106629 + error = drv->pm->thaw(dev);
106630
106631 return error;
106632 }
106633 @@ -698,29 +654,19 @@
106634 static int pci_pm_poweroff(struct device *dev)
106635 {
106636 struct pci_dev *pci_dev = to_pci_dev(dev);
106637 - struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
106638 + struct device_driver *drv = dev->driver;
106639 int error = 0;
106640
106641 if (pci_has_legacy_pm_support(pci_dev))
106642 return pci_legacy_suspend(dev, PMSG_HIBERNATE);
106643
106644 - if (!pm) {
106645 - pci_pm_default_suspend(pci_dev);
106646 - goto Fixup;
106647 + if (drv && drv->pm && drv->pm->poweroff) {
106648 + error = drv->pm->poweroff(dev);
106649 + suspend_report_result(drv->pm->poweroff, error);
106650 }
106651
106652 - pci_dev->state_saved = false;
106653 -
106654 - if (pm->poweroff) {
106655 - error = pm->poweroff(dev);
106656 - suspend_report_result(pm->poweroff, error);
106657 - }
106658 -
106659 - if (!pci_dev->state_saved && !pci_is_bridge(pci_dev))
106660 - pci_prepare_to_sleep(pci_dev);
106661 -
106662 - Fixup:
106663 - pci_fixup_device(pci_fixup_suspend, pci_dev);
106664 + if (!error)
106665 + pci_pm_default_suspend(pci_dev);
106666
106667 return error;
106668 }
106669 @@ -761,27 +707,16 @@
106670 static int pci_pm_restore(struct device *dev)
106671 {
106672 struct pci_dev *pci_dev = to_pci_dev(dev);
106673 - struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
106674 + struct device_driver *drv = dev->driver;
106675 int error = 0;
106676
106677 - /*
106678 - * This is necessary for the hibernation error path in which restore is
106679 - * called without restoring the standard config registers of the device.
106680 - */
106681 - if (pci_dev->state_saved)
106682 - pci_restore_standard_config(pci_dev);
106683 -
106684 if (pci_has_legacy_pm_support(pci_dev))
106685 return pci_legacy_resume(dev);
106686
106687 - pci_pm_default_resume(pci_dev);
106688 + error = pci_pm_default_resume(pci_dev);
106689
106690 - if (pm) {
106691 - if (pm->restore)
106692 - error = pm->restore(dev);
106693 - } else {
106694 - pci_pm_reenable_device(pci_dev);
106695 - }
106696 + if (!error && drv && drv->pm && drv->pm->restore)
106697 + error = drv->pm->restore(dev);
106698
106699 return error;
106700 }
106701 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pcie/aer/aerdrv_core.c linux-2.6.29-rc3.owrt/drivers/pci/pcie/aer/aerdrv_core.c
106702 --- linux-2.6.29.owrt/drivers/pci/pcie/aer/aerdrv_core.c 2009-05-10 22:04:39.000000000 +0200
106703 +++ linux-2.6.29-rc3.owrt/drivers/pci/pcie/aer/aerdrv_core.c 2009-05-10 23:48:29.000000000 +0200
106704 @@ -108,37 +108,6 @@
106705 }
106706 #endif /* 0 */
106707
106708 -
106709 -static void set_device_error_reporting(struct pci_dev *dev, void *data)
106710 -{
106711 - bool enable = *((bool *)data);
106712 -
106713 - if (dev->pcie_type != PCIE_RC_PORT &&
106714 - dev->pcie_type != PCIE_SW_UPSTREAM_PORT &&
106715 - dev->pcie_type != PCIE_SW_DOWNSTREAM_PORT)
106716 - return;
106717 -
106718 - if (enable)
106719 - pci_enable_pcie_error_reporting(dev);
106720 - else
106721 - pci_disable_pcie_error_reporting(dev);
106722 -}
106723 -
106724 -/**
106725 - * set_downstream_devices_error_reporting - enable/disable the error reporting bits on the root port and its downstream ports.
106726 - * @dev: pointer to root port's pci_dev data structure
106727 - * @enable: true = enable error reporting, false = disable error reporting.
106728 - */
106729 -static void set_downstream_devices_error_reporting(struct pci_dev *dev,
106730 - bool enable)
106731 -{
106732 - set_device_error_reporting(dev, &enable);
106733 -
106734 - if (!dev->subordinate)
106735 - return;
106736 - pci_walk_bus(dev->subordinate, set_device_error_reporting, &enable);
106737 -}
106738 -
106739 static int find_device_iter(struct device *device, void *data)
106740 {
106741 struct pci_dev *dev;
106742 @@ -556,11 +525,15 @@
106743 pci_read_config_dword(pdev, aer_pos + PCI_ERR_UNCOR_STATUS, &reg32);
106744 pci_write_config_dword(pdev, aer_pos + PCI_ERR_UNCOR_STATUS, reg32);
106745
106746 - /*
106747 - * Enable error reporting for the root port device and downstream port
106748 - * devices.
106749 - */
106750 - set_downstream_devices_error_reporting(pdev, true);
106751 + /* Enable Root Port device reporting error itself */
106752 + pci_read_config_word(pdev, pos+PCI_EXP_DEVCTL, &reg16);
106753 + reg16 = reg16 |
106754 + PCI_EXP_DEVCTL_CERE |
106755 + PCI_EXP_DEVCTL_NFERE |
106756 + PCI_EXP_DEVCTL_FERE |
106757 + PCI_EXP_DEVCTL_URRE;
106758 + pci_write_config_word(pdev, pos+PCI_EXP_DEVCTL,
106759 + reg16);
106760
106761 /* Enable Root Port's interrupt in response to error messages */
106762 pci_write_config_dword(pdev,
106763 @@ -580,12 +553,6 @@
106764 u32 reg32;
106765 int pos;
106766
106767 - /*
106768 - * Disable error reporting for the root port device and downstream port
106769 - * devices.
106770 - */
106771 - set_downstream_devices_error_reporting(pdev, false);
106772 -
106773 pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR);
106774 /* Disable Root's interrupt in response to error messages */
106775 pci_write_config_dword(pdev, pos + PCI_ERR_ROOT_COMMAND, 0);
106776 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pcie/aspm.c linux-2.6.29-rc3.owrt/drivers/pci/pcie/aspm.c
106777 --- linux-2.6.29.owrt/drivers/pci/pcie/aspm.c 2009-05-10 22:04:39.000000000 +0200
106778 +++ linux-2.6.29-rc3.owrt/drivers/pci/pcie/aspm.c 2009-05-10 23:48:29.000000000 +0200
106779 @@ -718,9 +718,9 @@
106780
106781 /*
106782 * All PCIe functions are in one slot, remove one function will remove
106783 - * the whole slot, so just wait until we are the last function left.
106784 + * the the whole slot, so just wait
106785 */
106786 - if (!list_is_last(&pdev->bus_list, &parent->subordinate->devices))
106787 + if (!list_empty(&parent->subordinate->devices))
106788 goto out;
106789
106790 /* All functions are removed, so just disable ASPM for the link */
106791 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pcie/portdrv_pci.c linux-2.6.29-rc3.owrt/drivers/pci/pcie/portdrv_pci.c
106792 --- linux-2.6.29.owrt/drivers/pci/pcie/portdrv_pci.c 2009-05-10 22:04:39.000000000 +0200
106793 +++ linux-2.6.29-rc3.owrt/drivers/pci/pcie/portdrv_pci.c 2009-05-10 23:48:29.000000000 +0200
106794 @@ -55,13 +55,25 @@
106795
106796 }
106797
106798 +static int pcie_portdrv_suspend_late(struct pci_dev *dev, pm_message_t state)
106799 +{
106800 + return pci_save_state(dev);
106801 +}
106802 +
106803 +static int pcie_portdrv_resume_early(struct pci_dev *dev)
106804 +{
106805 + return pci_restore_state(dev);
106806 +}
106807 +
106808 static int pcie_portdrv_resume(struct pci_dev *dev)
106809 {
106810 - pci_set_master(dev);
106811 + pcie_portdrv_restore_config(dev);
106812 return pcie_port_device_resume(dev);
106813 }
106814 #else
106815 #define pcie_portdrv_suspend NULL
106816 +#define pcie_portdrv_suspend_late NULL
106817 +#define pcie_portdrv_resume_early NULL
106818 #define pcie_portdrv_resume NULL
106819 #endif
106820
106821 @@ -97,13 +109,14 @@
106822
106823 pcie_portdrv_save_config(dev);
106824
106825 + pci_enable_pcie_error_reporting(dev);
106826 +
106827 return 0;
106828 }
106829
106830 static void pcie_portdrv_remove (struct pci_dev *dev)
106831 {
106832 pcie_port_device_remove(dev);
106833 - pci_disable_device(dev);
106834 kfree(pci_get_drvdata(dev));
106835 }
106836
106837 @@ -279,6 +292,8 @@
106838 .remove = pcie_portdrv_remove,
106839
106840 .suspend = pcie_portdrv_suspend,
106841 + .suspend_late = pcie_portdrv_suspend_late,
106842 + .resume_early = pcie_portdrv_resume_early,
106843 .resume = pcie_portdrv_resume,
106844
106845 .err_handler = &pcie_portdrv_err_handler,
106846 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pci.h linux-2.6.29-rc3.owrt/drivers/pci/pci.h
106847 --- linux-2.6.29.owrt/drivers/pci/pci.h 2009-05-10 22:04:39.000000000 +0200
106848 +++ linux-2.6.29-rc3.owrt/drivers/pci/pci.h 2009-05-10 23:48:29.000000000 +0200
106849 @@ -16,21 +16,21 @@
106850 #endif
106851
106852 /**
106853 - * struct pci_platform_pm_ops - Firmware PM callbacks
106854 + * Firmware PM callbacks
106855 *
106856 - * @is_manageable: returns 'true' if given device is power manageable by the
106857 - * platform firmware
106858 + * @is_manageable - returns 'true' if given device is power manageable by the
106859 + * platform firmware
106860 *
106861 - * @set_state: invokes the platform firmware to set the device's power state
106862 + * @set_state - invokes the platform firmware to set the device's power state
106863 *
106864 - * @choose_state: returns PCI power state of given device preferred by the
106865 - * platform; to be used during system-wide transitions from a
106866 - * sleeping state to the working state and vice versa
106867 + * @choose_state - returns PCI power state of given device preferred by the
106868 + * platform; to be used during system-wide transitions from a
106869 + * sleeping state to the working state and vice versa
106870 *
106871 - * @can_wakeup: returns 'true' if given device is capable of waking up the
106872 - * system from a sleeping state
106873 + * @can_wakeup - returns 'true' if given device is capable of waking up the
106874 + * system from a sleeping state
106875 *
106876 - * @sleep_wake: enables/disables the system wake up capability of given device
106877 + * @sleep_wake - enables/disables the system wake up capability of given device
106878 *
106879 * If given platform is generally capable of power managing PCI devices, all of
106880 * these callbacks are mandatory.
106881 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/pci-sysfs.c linux-2.6.29-rc3.owrt/drivers/pci/pci-sysfs.c
106882 --- linux-2.6.29.owrt/drivers/pci/pci-sysfs.c 2009-05-10 22:04:39.000000000 +0200
106883 +++ linux-2.6.29-rc3.owrt/drivers/pci/pci-sysfs.c 2009-05-10 23:48:29.000000000 +0200
106884 @@ -768,8 +768,8 @@
106885 return -EINVAL;
106886
106887 rom = pci_map_rom(pdev, &size); /* size starts out as PCI window size */
106888 - if (!rom || !size)
106889 - return -EIO;
106890 + if (!rom)
106891 + return 0;
106892
106893 if (off >= size)
106894 count = 0;
106895 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/quirks.c linux-2.6.29-rc3.owrt/drivers/pci/quirks.c
106896 --- linux-2.6.29.owrt/drivers/pci/quirks.c 2009-05-10 22:04:39.000000000 +0200
106897 +++ linux-2.6.29-rc3.owrt/drivers/pci/quirks.c 2009-05-10 23:48:29.000000000 +0200
106898 @@ -23,7 +23,6 @@
106899 #include <linux/acpi.h>
106900 #include <linux/kallsyms.h>
106901 #include <linux/dmi.h>
106902 -#include <linux/pci-aspm.h>
106903 #include "pci.h"
106904
106905 int isa_dma_bridge_buggy;
106906 @@ -1585,7 +1584,6 @@
106907 */
106908 #define AMD_813X_MISC 0x40
106909 #define AMD_813X_NOIOAMODE (1<<0)
106910 -#define AMD_813X_REV_B2 0x13
106911
106912 static void quirk_disable_amd_813x_boot_interrupt(struct pci_dev *dev)
106913 {
106914 @@ -1593,8 +1591,6 @@
106915
106916 if (noioapicquirk)
106917 return;
106918 - if (dev->revision == AMD_813X_REV_B2)
106919 - return;
106920
106921 pci_read_config_dword(dev, AMD_813X_MISC, &pci_config_dword);
106922 pci_config_dword &= ~AMD_813X_NOIOAMODE;
106923 @@ -1750,30 +1746,6 @@
106924 }
106925 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt);
106926
106927 -/*
106928 - * The 82575 and 82598 may experience data corruption issues when transitioning
106929 - * out of L0S. To prevent this we need to disable L0S on the pci-e link
106930 - */
106931 -static void __devinit quirk_disable_aspm_l0s(struct pci_dev *dev)
106932 -{
106933 - dev_info(&dev->dev, "Disabling L0s\n");
106934 - pci_disable_link_state(dev, PCIE_LINK_STATE_L0S);
106935 -}
106936 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a7, quirk_disable_aspm_l0s);
106937 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10a9, quirk_disable_aspm_l0s);
106938 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10b6, quirk_disable_aspm_l0s);
106939 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c6, quirk_disable_aspm_l0s);
106940 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c7, quirk_disable_aspm_l0s);
106941 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10c8, quirk_disable_aspm_l0s);
106942 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10d6, quirk_disable_aspm_l0s);
106943 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10db, quirk_disable_aspm_l0s);
106944 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10dd, quirk_disable_aspm_l0s);
106945 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10e1, quirk_disable_aspm_l0s);
106946 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10ec, quirk_disable_aspm_l0s);
106947 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f1, quirk_disable_aspm_l0s);
106948 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x10f4, quirk_disable_aspm_l0s);
106949 -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1508, quirk_disable_aspm_l0s);
106950 -
106951 static void __devinit fixup_rev1_53c810(struct pci_dev* dev)
106952 {
106953 /* rev 1 ncr53c810 chips don't set the class at all which means
106954 @@ -2009,6 +1981,7 @@
106955 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE,
106956 quirk_msi_ht_cap);
106957
106958 +
106959 /* The nVidia CK804 chipset may have 2 HT MSI mappings.
106960 * MSI are supported if the MSI capability set in any of these mappings.
106961 */
106962 @@ -2059,9 +2032,6 @@
106963 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
106964 ht_enable_msi_mapping);
106965
106966 -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8132_BRIDGE,
106967 - ht_enable_msi_mapping);
106968 -
106969 /* The P5N32-SLI Premium motherboard from Asus has a problem with msi
106970 * for the MCP55 NIC. It is not yet determined whether the msi problem
106971 * also affects other devices. As for now, turn off msi for this device.
106972 @@ -2078,104 +2048,10 @@
106973 PCI_DEVICE_ID_NVIDIA_NVENET_15,
106974 nvenet_msi_disable);
106975
106976 -static void __devinit nv_ht_enable_msi_mapping(struct pci_dev *dev)
106977 -{
106978 - struct pci_dev *host_bridge;
106979 - int pos;
106980 - int i, dev_no;
106981 - int found = 0;
106982 -
106983 - dev_no = dev->devfn >> 3;
106984 - for (i = dev_no; i >= 0; i--) {
106985 - host_bridge = pci_get_slot(dev->bus, PCI_DEVFN(i, 0));
106986 - if (!host_bridge)
106987 - continue;
106988 -
106989 - pos = pci_find_ht_capability(host_bridge, HT_CAPTYPE_SLAVE);
106990 - if (pos != 0) {
106991 - found = 1;
106992 - break;
106993 - }
106994 - pci_dev_put(host_bridge);
106995 - }
106996 -
106997 - if (!found)
106998 - return;
106999 -
107000 - /* root did that ! */
107001 - if (msi_ht_cap_enabled(host_bridge))
107002 - goto out;
107003 -
107004 - ht_enable_msi_mapping(dev);
107005 -
107006 -out:
107007 - pci_dev_put(host_bridge);
107008 -}
107009 -
107010 -static void __devinit ht_disable_msi_mapping(struct pci_dev *dev)
107011 -{
107012 - int pos, ttl = 48;
107013 -
107014 - pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
107015 - while (pos && ttl--) {
107016 - u8 flags;
107017 -
107018 - if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
107019 - &flags) == 0) {
107020 - dev_info(&dev->dev, "Disabling HT MSI Mapping\n");
107021 -
107022 - pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
107023 - flags & ~HT_MSI_FLAGS_ENABLE);
107024 - }
107025 - pos = pci_find_next_ht_capability(dev, pos,
107026 - HT_CAPTYPE_MSI_MAPPING);
107027 - }
107028 -}
107029 -
107030 -static int __devinit ht_check_msi_mapping(struct pci_dev *dev)
107031 -{
107032 - int pos, ttl = 48;
107033 - int found = 0;
107034 -
107035 - /* check if there is HT MSI cap or enabled on this device */
107036 - pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
107037 - while (pos && ttl--) {
107038 - u8 flags;
107039 -
107040 - if (found < 1)
107041 - found = 1;
107042 - if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
107043 - &flags) == 0) {
107044 - if (flags & HT_MSI_FLAGS_ENABLE) {
107045 - if (found < 2) {
107046 - found = 2;
107047 - break;
107048 - }
107049 - }
107050 - }
107051 - pos = pci_find_next_ht_capability(dev, pos,
107052 - HT_CAPTYPE_MSI_MAPPING);
107053 - }
107054 -
107055 - return found;
107056 -}
107057 -
107058 static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
107059 {
107060 struct pci_dev *host_bridge;
107061 - int pos;
107062 - int found;
107063 -
107064 - /* Enabling HT MSI mapping on this device breaks MCP51 */
107065 - if (dev->device == 0x270)
107066 - return;
107067 -
107068 - /* check if there is HT MSI cap or enabled on this device */
107069 - found = ht_check_msi_mapping(dev);
107070 -
107071 - /* no HT MSI CAP */
107072 - if (found == 0)
107073 - return;
107074 + int pos, ttl = 48;
107075
107076 /*
107077 * HT MSI mapping should be disabled on devices that are below
107078 @@ -2191,19 +2067,24 @@
107079 pos = pci_find_ht_capability(host_bridge, HT_CAPTYPE_SLAVE);
107080 if (pos != 0) {
107081 /* Host bridge is to HT */
107082 - if (found == 1) {
107083 - /* it is not enabled, try to enable it */
107084 - nv_ht_enable_msi_mapping(dev);
107085 - }
107086 + ht_enable_msi_mapping(dev);
107087 return;
107088 }
107089
107090 - /* HT MSI is not enabled */
107091 - if (found == 1)
107092 - return;
107093 -
107094 /* Host bridge is not to HT, disable HT MSI mapping on this device */
107095 - ht_disable_msi_mapping(dev);
107096 + pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
107097 + while (pos && ttl--) {
107098 + u8 flags;
107099 +
107100 + if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
107101 + &flags) == 0) {
107102 + dev_info(&dev->dev, "Disabling HT MSI mapping");
107103 + pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
107104 + flags & ~HT_MSI_FLAGS_ENABLE);
107105 + }
107106 + pos = pci_find_next_ht_capability(dev, pos,
107107 + HT_CAPTYPE_MSI_MAPPING);
107108 + }
107109 }
107110 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, nv_msi_ht_cap_quirk);
107111 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AL, PCI_ANY_ID, nv_msi_ht_cap_quirk);
107112 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/pci/rom.c linux-2.6.29-rc3.owrt/drivers/pci/rom.c
107113 --- linux-2.6.29.owrt/drivers/pci/rom.c 2009-05-10 22:04:39.000000000 +0200
107114 +++ linux-2.6.29-rc3.owrt/drivers/pci/rom.c 2009-05-10 23:48:29.000000000 +0200
107115 @@ -55,7 +55,6 @@
107116
107117 /**
107118 * pci_get_rom_size - obtain the actual size of the ROM image
107119 - * @pdev: target PCI device
107120 * @rom: kernel virtual pointer to image of ROM
107121 * @size: size of PCI window
107122 * return: size of actual ROM image
107123 @@ -64,7 +63,7 @@
107124 * The PCI window size could be much larger than the
107125 * actual image size.
107126 */
107127 -size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size)
107128 +size_t pci_get_rom_size(void __iomem *rom, size_t size)
107129 {
107130 void __iomem *image;
107131 int last_image;
107132 @@ -73,10 +72,8 @@
107133 do {
107134 void __iomem *pds;
107135 /* Standard PCI ROMs start out with these bytes 55 AA */
107136 - if (readb(image) != 0x55) {
107137 - dev_err(&pdev->dev, "Invalid ROM contents\n");
107138 + if (readb(image) != 0x55)
107139 break;
107140 - }
107141 if (readb(image + 1) != 0xAA)
107142 break;
107143 /* get the PCI data structure and check its signature */
107144 @@ -162,7 +159,7 @@
107145 * size is much larger than the actual size of the ROM.
107146 * True size is important if the ROM is going to be copied.
107147 */
107148 - *size = pci_get_rom_size(pdev, rom, *size);
107149 + *size = pci_get_rom_size(rom, *size);
107150 return rom;
107151 }
107152
107153 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/acer-wmi.c linux-2.6.29-rc3.owrt/drivers/platform/x86/acer-wmi.c
107154 --- linux-2.6.29.owrt/drivers/platform/x86/acer-wmi.c 2009-05-10 22:04:39.000000000 +0200
107155 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/acer-wmi.c 2009-05-10 23:48:29.000000000 +0200
107156 @@ -1026,7 +1026,7 @@
107157 kfree(wireless_rfkill->data);
107158 rfkill_unregister(wireless_rfkill);
107159 if (has_cap(ACER_CAP_BLUETOOTH)) {
107160 - kfree(bluetooth_rfkill->data);
107161 + kfree(wireless_rfkill->data);
107162 rfkill_unregister(bluetooth_rfkill);
107163 }
107164 return;
107165 @@ -1297,7 +1297,7 @@
107166
107167 set_quirks();
107168
107169 - if (acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) {
107170 + if (!acpi_video_backlight_support() && has_cap(ACER_CAP_BRIGHTNESS)) {
107171 interface->capability &= ~ACER_CAP_BRIGHTNESS;
107172 printk(ACER_INFO "Brightness must be controlled by "
107173 "generic video driver\n");
107174 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/asus_acpi.c linux-2.6.29-rc3.owrt/drivers/platform/x86/asus_acpi.c
107175 --- linux-2.6.29.owrt/drivers/platform/x86/asus_acpi.c 2009-05-10 22:04:39.000000000 +0200
107176 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/asus_acpi.c 2009-05-10 23:48:29.000000000 +0200
107177 @@ -143,7 +143,6 @@
107178 S1300N, S5200N*/
107179 A4S, /* Z81sp */
107180 F3Sa, /* (Centrino) */
107181 - R1F,
107182 END_MODEL
107183 } model; /* Models currently supported */
107184 u16 event_count[128]; /* Count for each event TODO make this better */
107185 @@ -421,18 +420,7 @@
107186 .display_get = "\\ADVG",
107187 .display_set = "SDSP",
107188 },
107189 - {
107190 - .name = "R1F",
107191 - .mt_bt_switch = "BLED",
107192 - .mt_mled = "MLED",
107193 - .mt_wled = "WLED",
107194 - .mt_lcd_switch = "\\Q10",
107195 - .lcd_status = "\\GP06",
107196 - .brightness_set = "SPLV",
107197 - .brightness_get = "GPLV",
107198 - .display_set = "SDSP",
107199 - .display_get = "\\INFB"
107200 - }
107201 +
107202 };
107203
107204 /* procdir we use */
107205 @@ -1177,8 +1165,6 @@
107206 return W3V;
107207 else if (strncmp(model, "W5A", 3) == 0)
107208 return W5A;
107209 - else if (strncmp(model, "R1F", 3) == 0)
107210 - return R1F;
107211 else if (strncmp(model, "A4S", 3) == 0)
107212 return A4S;
107213 else if (strncmp(model, "F3Sa", 4) == 0)
107214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/asus-laptop.c linux-2.6.29-rc3.owrt/drivers/platform/x86/asus-laptop.c
107215 --- linux-2.6.29.owrt/drivers/platform/x86/asus-laptop.c 2009-05-10 22:04:39.000000000 +0200
107216 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/asus-laptop.c 2009-05-10 23:48:29.000000000 +0200
107217 @@ -46,7 +46,6 @@
107218 #include <acpi/acpi_drivers.h>
107219 #include <acpi/acpi_bus.h>
107220 #include <asm/uaccess.h>
107221 -#include <linux/input.h>
107222
107223 #define ASUS_LAPTOP_VERSION "0.42"
107224
107225 @@ -182,8 +181,6 @@
107226 u8 light_level; //light sensor level
107227 u8 light_switch; //light sensor switch value
107228 u16 event_count[128]; //count for each event TODO make this better
107229 - struct input_dev *inputdev;
107230 - u16 *keycode_map;
107231 };
107232
107233 /*
107234 @@ -253,37 +250,6 @@
107235 ASUS_LED(pled, "phone");
107236 ASUS_LED(gled, "gaming");
107237
107238 -struct key_entry {
107239 - char type;
107240 - u8 code;
107241 - u16 keycode;
107242 -};
107243 -
107244 -enum { KE_KEY, KE_END };
107245 -
107246 -static struct key_entry asus_keymap[] = {
107247 - {KE_KEY, 0x30, KEY_VOLUMEUP},
107248 - {KE_KEY, 0x31, KEY_VOLUMEDOWN},
107249 - {KE_KEY, 0x32, KEY_MUTE},
107250 - {KE_KEY, 0x33, KEY_SWITCHVIDEOMODE},
107251 - {KE_KEY, 0x34, KEY_SWITCHVIDEOMODE},
107252 - {KE_KEY, 0x40, KEY_PREVIOUSSONG},
107253 - {KE_KEY, 0x41, KEY_NEXTSONG},
107254 - {KE_KEY, 0x43, KEY_STOP},
107255 - {KE_KEY, 0x45, KEY_PLAYPAUSE},
107256 - {KE_KEY, 0x50, KEY_EMAIL},
107257 - {KE_KEY, 0x51, KEY_WWW},
107258 - {KE_KEY, 0x5C, BTN_EXTRA}, /* Performance */
107259 - {KE_KEY, 0x5D, KEY_WLAN},
107260 - {KE_KEY, 0x61, KEY_SWITCHVIDEOMODE},
107261 - {KE_KEY, 0x6B, BTN_TOUCH}, /* Lock Mouse */
107262 - {KE_KEY, 0x82, KEY_CAMERA},
107263 - {KE_KEY, 0x8A, KEY_TV},
107264 - {KE_KEY, 0x95, KEY_MEDIA},
107265 - {KE_KEY, 0x99, KEY_PHONE},
107266 - {KE_END, 0},
107267 -};
107268 -
107269 /*
107270 * This function evaluates an ACPI method, given an int as parameter, the
107271 * method is searched within the scope of the handle, can be NULL. The output
107272 @@ -754,69 +720,8 @@
107273 return store_status(buf, count, NULL, GPS_ON);
107274 }
107275
107276 -/*
107277 - * Hotkey functions
107278 - */
107279 -static struct key_entry *asus_get_entry_by_scancode(int code)
107280 -{
107281 - struct key_entry *key;
107282 -
107283 - for (key = asus_keymap; key->type != KE_END; key++)
107284 - if (code == key->code)
107285 - return key;
107286 -
107287 - return NULL;
107288 -}
107289 -
107290 -static struct key_entry *asus_get_entry_by_keycode(int code)
107291 -{
107292 - struct key_entry *key;
107293 -
107294 - for (key = asus_keymap; key->type != KE_END; key++)
107295 - if (code == key->keycode && key->type == KE_KEY)
107296 - return key;
107297 -
107298 - return NULL;
107299 -}
107300 -
107301 -static int asus_getkeycode(struct input_dev *dev, int scancode, int *keycode)
107302 -{
107303 - struct key_entry *key = asus_get_entry_by_scancode(scancode);
107304 -
107305 - if (key && key->type == KE_KEY) {
107306 - *keycode = key->keycode;
107307 - return 0;
107308 - }
107309 -
107310 - return -EINVAL;
107311 -}
107312 -
107313 -static int asus_setkeycode(struct input_dev *dev, int scancode, int keycode)
107314 -{
107315 - struct key_entry *key;
107316 - int old_keycode;
107317 -
107318 - if (keycode < 0 || keycode > KEY_MAX)
107319 - return -EINVAL;
107320 -
107321 - key = asus_get_entry_by_scancode(scancode);
107322 - if (key && key->type == KE_KEY) {
107323 - old_keycode = key->keycode;
107324 - key->keycode = keycode;
107325 - set_bit(keycode, dev->keybit);
107326 - if (!asus_get_entry_by_keycode(old_keycode))
107327 - clear_bit(old_keycode, dev->keybit);
107328 - return 0;
107329 - }
107330 -
107331 - return -EINVAL;
107332 -}
107333 -
107334 static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
107335 {
107336 - static struct key_entry *key;
107337 - u16 count;
107338 -
107339 /* TODO Find a better way to handle events count. */
107340 if (!hotk)
107341 return;
107342 @@ -833,26 +738,10 @@
107343 lcd_blank(FB_BLANK_POWERDOWN);
107344 }
107345
107346 - count = hotk->event_count[event % 128]++;
107347 - acpi_bus_generate_proc_event(hotk->device, event, count);
107348 - acpi_bus_generate_netlink_event(hotk->device->pnp.device_class,
107349 - dev_name(&hotk->device->dev), event,
107350 - count);
107351 -
107352 - if (hotk->inputdev) {
107353 - key = asus_get_entry_by_scancode(event);
107354 - if (!key)
107355 - return ;
107356 -
107357 - switch (key->type) {
107358 - case KE_KEY:
107359 - input_report_key(hotk->inputdev, key->keycode, 1);
107360 - input_sync(hotk->inputdev);
107361 - input_report_key(hotk->inputdev, key->keycode, 0);
107362 - input_sync(hotk->inputdev);
107363 - break;
107364 - }
107365 - }
107366 + acpi_bus_generate_proc_event(hotk->device, event,
107367 + hotk->event_count[event % 128]++);
107368 +
107369 + return;
107370 }
107371
107372 #define ASUS_CREATE_DEVICE_ATTR(_name) \
107373 @@ -1070,38 +959,6 @@
107374 return AE_OK;
107375 }
107376
107377 -static int asus_input_init(void)
107378 -{
107379 - const struct key_entry *key;
107380 - int result;
107381 -
107382 - hotk->inputdev = input_allocate_device();
107383 - if (!hotk->inputdev) {
107384 - printk(ASUS_INFO "Unable to allocate input device\n");
107385 - return 0;
107386 - }
107387 - hotk->inputdev->name = "Asus Laptop extra buttons";
107388 - hotk->inputdev->phys = ASUS_HOTK_FILE "/input0";
107389 - hotk->inputdev->id.bustype = BUS_HOST;
107390 - hotk->inputdev->getkeycode = asus_getkeycode;
107391 - hotk->inputdev->setkeycode = asus_setkeycode;
107392 -
107393 - for (key = asus_keymap; key->type != KE_END; key++) {
107394 - switch (key->type) {
107395 - case KE_KEY:
107396 - set_bit(EV_KEY, hotk->inputdev->evbit);
107397 - set_bit(key->keycode, hotk->inputdev->keybit);
107398 - break;
107399 - }
107400 - }
107401 - result = input_register_device(hotk->inputdev);
107402 - if (result) {
107403 - printk(ASUS_INFO "Unable to register input device\n");
107404 - input_free_device(hotk->inputdev);
107405 - }
107406 - return result;
107407 -}
107408 -
107409 static int asus_hotk_check(void)
107410 {
107411 int result = 0;
107412 @@ -1187,7 +1044,7 @@
107413 /* GPS is on by default */
107414 write_status(NULL, 1, GPS_ON);
107415
107416 -end:
107417 + end:
107418 if (result) {
107419 kfree(hotk->name);
107420 kfree(hotk);
107421 @@ -1234,17 +1091,10 @@
107422 ASUS_LED_UNREGISTER(gled);
107423 }
107424
107425 -static void asus_input_exit(void)
107426 -{
107427 - if (hotk->inputdev)
107428 - input_unregister_device(hotk->inputdev);
107429 -}
107430 -
107431 static void __exit asus_laptop_exit(void)
107432 {
107433 asus_backlight_exit();
107434 asus_led_exit();
107435 - asus_input_exit();
107436
107437 acpi_bus_unregister_driver(&asus_hotk_driver);
107438 sysfs_remove_group(&asuspf_device->dev.kobj, &asuspf_attribute_group);
107439 @@ -1366,10 +1216,6 @@
107440 printk(ASUS_INFO "Brightness ignored, must be controlled by "
107441 "ACPI video driver\n");
107442
107443 - result = asus_input_init();
107444 - if (result)
107445 - goto fail_input;
107446 -
107447 result = asus_led_init(dev);
107448 if (result)
107449 goto fail_led;
107450 @@ -1396,25 +1242,22 @@
107451
107452 return 0;
107453
107454 -fail_sysfs:
107455 + fail_sysfs:
107456 platform_device_del(asuspf_device);
107457
107458 -fail_platform_device2:
107459 + fail_platform_device2:
107460 platform_device_put(asuspf_device);
107461
107462 -fail_platform_device1:
107463 + fail_platform_device1:
107464 platform_driver_unregister(&asuspf_driver);
107465
107466 -fail_platform_driver:
107467 + fail_platform_driver:
107468 asus_led_exit();
107469
107470 -fail_led:
107471 - asus_input_exit();
107472 -
107473 -fail_input:
107474 + fail_led:
107475 asus_backlight_exit();
107476
107477 -fail_backlight:
107478 + fail_backlight:
107479
107480 return result;
107481 }
107482 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/eeepc-laptop.c linux-2.6.29-rc3.owrt/drivers/platform/x86/eeepc-laptop.c
107483 --- linux-2.6.29.owrt/drivers/platform/x86/eeepc-laptop.c 2009-05-10 22:04:39.000000000 +0200
107484 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/eeepc-laptop.c 2009-05-10 23:48:29.000000000 +0200
107485 @@ -30,7 +30,6 @@
107486 #include <linux/uaccess.h>
107487 #include <linux/input.h>
107488 #include <linux/rfkill.h>
107489 -#include <linux/pci.h>
107490
107491 #define EEEPC_LAPTOP_VERSION "0.1"
107492
107493 @@ -162,10 +161,6 @@
107494 {KE_KEY, 0x13, KEY_MUTE },
107495 {KE_KEY, 0x14, KEY_VOLUMEDOWN },
107496 {KE_KEY, 0x15, KEY_VOLUMEUP },
107497 - {KE_KEY, 0x1a, KEY_COFFEE },
107498 - {KE_KEY, 0x1b, KEY_ZOOM },
107499 - {KE_KEY, 0x1c, KEY_PROG2 },
107500 - {KE_KEY, 0x1d, KEY_PROG3 },
107501 {KE_KEY, 0x30, KEY_SWITCHVIDEOMODE },
107502 {KE_KEY, 0x31, KEY_SWITCHVIDEOMODE },
107503 {KE_KEY, 0x32, KEY_SWITCHVIDEOMODE },
107504 @@ -515,59 +510,18 @@
107505 static void notify_brn(void)
107506 {
107507 struct backlight_device *bd = eeepc_backlight_device;
107508 - if (bd)
107509 - bd->props.brightness = read_brightness(bd);
107510 -}
107511 -
107512 -static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data)
107513 -{
107514 - struct pci_dev *dev;
107515 - struct pci_bus *bus = pci_find_bus(0, 1);
107516 -
107517 - if (event != ACPI_NOTIFY_BUS_CHECK)
107518 - return;
107519 -
107520 - if (!bus) {
107521 - printk(EEEPC_WARNING "Unable to find PCI bus 1?\n");
107522 - return;
107523 - }
107524 -
107525 - if (get_acpi(CM_ASL_WLAN) == 1) {
107526 - dev = pci_get_slot(bus, 0);
107527 - if (dev) {
107528 - /* Device already present */
107529 - pci_dev_put(dev);
107530 - return;
107531 - }
107532 - dev = pci_scan_single_device(bus, 0);
107533 - if (dev) {
107534 - pci_bus_assign_resources(bus);
107535 - if (pci_bus_add_device(dev))
107536 - printk(EEEPC_ERR "Unable to hotplug wifi\n");
107537 - }
107538 - } else {
107539 - dev = pci_get_slot(bus, 0);
107540 - if (dev) {
107541 - pci_remove_bus_device(dev);
107542 - pci_dev_put(dev);
107543 - }
107544 - }
107545 + bd->props.brightness = read_brightness(bd);
107546 }
107547
107548 static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data)
107549 {
107550 static struct key_entry *key;
107551 - u16 count;
107552 -
107553 if (!ehotk)
107554 return;
107555 if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX)
107556 notify_brn();
107557 - count = ehotk->event_count[event % 128]++;
107558 - acpi_bus_generate_proc_event(ehotk->device, event, count);
107559 - acpi_bus_generate_netlink_event(ehotk->device->pnp.device_class,
107560 - dev_name(&ehotk->device->dev), event,
107561 - count);
107562 + acpi_bus_generate_proc_event(ehotk->device, event,
107563 + ehotk->event_count[event % 128]++);
107564 if (ehotk->inputdev) {
107565 key = eepc_get_entry_by_scancode(event);
107566 if (key) {
107567 @@ -585,45 +539,6 @@
107568 }
107569 }
107570
107571 -static int eeepc_register_rfkill_notifier(char *node)
107572 -{
107573 - acpi_status status = AE_OK;
107574 - acpi_handle handle;
107575 -
107576 - status = acpi_get_handle(NULL, node, &handle);
107577 -
107578 - if (ACPI_SUCCESS(status)) {
107579 - status = acpi_install_notify_handler(handle,
107580 - ACPI_SYSTEM_NOTIFY,
107581 - eeepc_rfkill_notify,
107582 - NULL);
107583 - if (ACPI_FAILURE(status))
107584 - printk(EEEPC_WARNING
107585 - "Failed to register notify on %s\n", node);
107586 - } else
107587 - return -ENODEV;
107588 -
107589 - return 0;
107590 -}
107591 -
107592 -static void eeepc_unregister_rfkill_notifier(char *node)
107593 -{
107594 - acpi_status status = AE_OK;
107595 - acpi_handle handle;
107596 -
107597 - status = acpi_get_handle(NULL, node, &handle);
107598 -
107599 - if (ACPI_SUCCESS(status)) {
107600 - status = acpi_remove_notify_handler(handle,
107601 - ACPI_SYSTEM_NOTIFY,
107602 - eeepc_rfkill_notify);
107603 - if (ACPI_FAILURE(status))
107604 - printk(EEEPC_ERR
107605 - "Error removing rfkill notify handler %s\n",
107606 - node);
107607 - }
107608 -}
107609 -
107610 static int eeepc_hotk_add(struct acpi_device *device)
107611 {
107612 acpi_status status = AE_OK;
107613 @@ -643,7 +558,7 @@
107614 ehotk->device = device;
107615 result = eeepc_hotk_check();
107616 if (result)
107617 - goto ehotk_fail;
107618 + goto end;
107619 status = acpi_install_notify_handler(ehotk->handle, ACPI_SYSTEM_NOTIFY,
107620 eeepc_hotk_notify, ehotk);
107621 if (ACPI_FAILURE(status))
107622 @@ -654,25 +569,18 @@
107623 RFKILL_TYPE_WLAN);
107624
107625 if (!ehotk->eeepc_wlan_rfkill)
107626 - goto wlan_fail;
107627 + goto end;
107628
107629 ehotk->eeepc_wlan_rfkill->name = "eeepc-wlan";
107630 ehotk->eeepc_wlan_rfkill->toggle_radio = eeepc_wlan_rfkill_set;
107631 ehotk->eeepc_wlan_rfkill->get_state = eeepc_wlan_rfkill_state;
107632 - if (get_acpi(CM_ASL_WLAN) == 1) {
107633 + if (get_acpi(CM_ASL_WLAN) == 1)
107634 ehotk->eeepc_wlan_rfkill->state =
107635 RFKILL_STATE_UNBLOCKED;
107636 - rfkill_set_default(RFKILL_TYPE_WLAN,
107637 - RFKILL_STATE_UNBLOCKED);
107638 - } else {
107639 + else
107640 ehotk->eeepc_wlan_rfkill->state =
107641 RFKILL_STATE_SOFT_BLOCKED;
107642 - rfkill_set_default(RFKILL_TYPE_WLAN,
107643 - RFKILL_STATE_SOFT_BLOCKED);
107644 - }
107645 - result = rfkill_register(ehotk->eeepc_wlan_rfkill);
107646 - if (result)
107647 - goto wlan_fail;
107648 + rfkill_register(ehotk->eeepc_wlan_rfkill);
107649 }
107650
107651 if (get_acpi(CM_ASL_BLUETOOTH) != -1) {
107652 @@ -680,47 +588,27 @@
107653 rfkill_allocate(&device->dev, RFKILL_TYPE_BLUETOOTH);
107654
107655 if (!ehotk->eeepc_bluetooth_rfkill)
107656 - goto bluetooth_fail;
107657 + goto end;
107658
107659 ehotk->eeepc_bluetooth_rfkill->name = "eeepc-bluetooth";
107660 ehotk->eeepc_bluetooth_rfkill->toggle_radio =
107661 eeepc_bluetooth_rfkill_set;
107662 ehotk->eeepc_bluetooth_rfkill->get_state =
107663 eeepc_bluetooth_rfkill_state;
107664 - if (get_acpi(CM_ASL_BLUETOOTH) == 1) {
107665 + if (get_acpi(CM_ASL_BLUETOOTH) == 1)
107666 ehotk->eeepc_bluetooth_rfkill->state =
107667 RFKILL_STATE_UNBLOCKED;
107668 - rfkill_set_default(RFKILL_TYPE_BLUETOOTH,
107669 - RFKILL_STATE_UNBLOCKED);
107670 - } else {
107671 + else
107672 ehotk->eeepc_bluetooth_rfkill->state =
107673 RFKILL_STATE_SOFT_BLOCKED;
107674 - rfkill_set_default(RFKILL_TYPE_BLUETOOTH,
107675 - RFKILL_STATE_SOFT_BLOCKED);
107676 - }
107677 -
107678 - result = rfkill_register(ehotk->eeepc_bluetooth_rfkill);
107679 - if (result)
107680 - goto bluetooth_fail;
107681 + rfkill_register(ehotk->eeepc_bluetooth_rfkill);
107682 }
107683
107684 - eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6");
107685 - eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7");
107686 -
107687 - return 0;
107688 -
107689 - bluetooth_fail:
107690 - if (ehotk->eeepc_bluetooth_rfkill)
107691 - rfkill_free(ehotk->eeepc_bluetooth_rfkill);
107692 - rfkill_unregister(ehotk->eeepc_wlan_rfkill);
107693 - ehotk->eeepc_wlan_rfkill = NULL;
107694 - wlan_fail:
107695 - if (ehotk->eeepc_wlan_rfkill)
107696 - rfkill_free(ehotk->eeepc_wlan_rfkill);
107697 - ehotk_fail:
107698 - kfree(ehotk);
107699 - ehotk = NULL;
107700 -
107701 + end:
107702 + if (result) {
107703 + kfree(ehotk);
107704 + ehotk = NULL;
107705 + }
107706 return result;
107707 }
107708
107709 @@ -734,10 +622,6 @@
107710 eeepc_hotk_notify);
107711 if (ACPI_FAILURE(status))
107712 printk(EEEPC_ERR "Error removing notify handler\n");
107713 -
107714 - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P6");
107715 - eeepc_unregister_rfkill_notifier("\\_SB.PCI0.P0P7");
107716 -
107717 kfree(ehotk);
107718 return 0;
107719 }
107720 @@ -853,21 +737,13 @@
107721 {
107722 if (eeepc_backlight_device)
107723 backlight_device_unregister(eeepc_backlight_device);
107724 - eeepc_backlight_device = NULL;
107725 -}
107726 -
107727 -static void eeepc_rfkill_exit(void)
107728 -{
107729 + if (ehotk->inputdev)
107730 + input_unregister_device(ehotk->inputdev);
107731 if (ehotk->eeepc_wlan_rfkill)
107732 rfkill_unregister(ehotk->eeepc_wlan_rfkill);
107733 if (ehotk->eeepc_bluetooth_rfkill)
107734 rfkill_unregister(ehotk->eeepc_bluetooth_rfkill);
107735 -}
107736 -
107737 -static void eeepc_input_exit(void)
107738 -{
107739 - if (ehotk->inputdev)
107740 - input_unregister_device(ehotk->inputdev);
107741 + eeepc_backlight_device = NULL;
107742 }
107743
107744 static void eeepc_hwmon_exit(void)
107745 @@ -886,8 +762,6 @@
107746 static void __exit eeepc_laptop_exit(void)
107747 {
107748 eeepc_backlight_exit();
107749 - eeepc_rfkill_exit();
107750 - eeepc_input_exit();
107751 eeepc_hwmon_exit();
107752 acpi_bus_unregister_driver(&eeepc_hotk_driver);
107753 sysfs_remove_group(&platform_device->dev.kobj,
107754 @@ -991,8 +865,6 @@
107755 fail_hwmon:
107756 eeepc_backlight_exit();
107757 fail_backlight:
107758 - eeepc_input_exit();
107759 - eeepc_rfkill_exit();
107760 return result;
107761 }
107762
107763 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/fujitsu-laptop.c linux-2.6.29-rc3.owrt/drivers/platform/x86/fujitsu-laptop.c
107764 --- linux-2.6.29.owrt/drivers/platform/x86/fujitsu-laptop.c 2009-05-10 22:04:39.000000000 +0200
107765 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/fujitsu-laptop.c 2009-05-10 23:48:29.000000000 +0200
107766 @@ -166,7 +166,6 @@
107767 struct platform_device *pf_device;
107768 struct kfifo *fifo;
107769 spinlock_t fifo_lock;
107770 - int rfkill_supported;
107771 int rfkill_state;
107772 int logolamp_registered;
107773 int kblamps_registered;
107774 @@ -527,7 +526,7 @@
107775 show_lid_state(struct device *dev,
107776 struct device_attribute *attr, char *buf)
107777 {
107778 - if (!(fujitsu_hotkey->rfkill_supported & 0x100))
107779 + if (fujitsu_hotkey->rfkill_state == UNSUPPORTED_CMD)
107780 return sprintf(buf, "unknown\n");
107781 if (fujitsu_hotkey->rfkill_state & 0x100)
107782 return sprintf(buf, "open\n");
107783 @@ -539,7 +538,7 @@
107784 show_dock_state(struct device *dev,
107785 struct device_attribute *attr, char *buf)
107786 {
107787 - if (!(fujitsu_hotkey->rfkill_supported & 0x200))
107788 + if (fujitsu_hotkey->rfkill_state == UNSUPPORTED_CMD)
107789 return sprintf(buf, "unknown\n");
107790 if (fujitsu_hotkey->rfkill_state & 0x200)
107791 return sprintf(buf, "docked\n");
107792 @@ -551,7 +550,7 @@
107793 show_radios_state(struct device *dev,
107794 struct device_attribute *attr, char *buf)
107795 {
107796 - if (!(fujitsu_hotkey->rfkill_supported & 0x20))
107797 + if (fujitsu_hotkey->rfkill_state == UNSUPPORTED_CMD)
107798 return sprintf(buf, "unknown\n");
107799 if (fujitsu_hotkey->rfkill_state & 0x20)
107800 return sprintf(buf, "on\n");
107801 @@ -929,17 +928,8 @@
107802 ; /* No action, result is discarded */
107803 vdbg_printk(FUJLAPTOP_DBG_INFO, "Discarded %i ringbuffer entries\n", i);
107804
107805 - fujitsu_hotkey->rfkill_supported =
107806 - call_fext_func(FUNC_RFKILL, 0x0, 0x0, 0x0);
107807 -
107808 - /* Make sure our bitmask of supported functions is cleared if the
107809 - RFKILL function block is not implemented, like on the S7020. */
107810 - if (fujitsu_hotkey->rfkill_supported == UNSUPPORTED_CMD)
107811 - fujitsu_hotkey->rfkill_supported = 0;
107812 -
107813 - if (fujitsu_hotkey->rfkill_supported)
107814 - fujitsu_hotkey->rfkill_state =
107815 - call_fext_func(FUNC_RFKILL, 0x4, 0x0, 0x0);
107816 + fujitsu_hotkey->rfkill_state =
107817 + call_fext_func(FUNC_RFKILL, 0x4, 0x0, 0x0);
107818
107819 /* Suspect this is a keymap of the application panel, print it */
107820 printk(KERN_INFO "fujitsu-laptop: BTNI: [0x%x]\n",
107821 @@ -1015,9 +1005,8 @@
107822
107823 input = fujitsu_hotkey->input;
107824
107825 - if (fujitsu_hotkey->rfkill_supported)
107826 - fujitsu_hotkey->rfkill_state =
107827 - call_fext_func(FUNC_RFKILL, 0x4, 0x0, 0x0);
107828 + fujitsu_hotkey->rfkill_state =
107829 + call_fext_func(FUNC_RFKILL, 0x4, 0x0, 0x0);
107830
107831 switch (event) {
107832 case ACPI_FUJITSU_NOTIFY_CODE1:
107833 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/hp-wmi.c linux-2.6.29-rc3.owrt/drivers/platform/x86/hp-wmi.c
107834 --- linux-2.6.29.owrt/drivers/platform/x86/hp-wmi.c 2009-05-10 22:04:39.000000000 +0200
107835 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/hp-wmi.c 2009-05-10 23:48:29.000000000 +0200
107836 @@ -382,11 +382,6 @@
107837 case KE_SW:
107838 set_bit(EV_SW, hp_wmi_input_dev->evbit);
107839 set_bit(key->keycode, hp_wmi_input_dev->swbit);
107840 -
107841 - /* Set initial dock state */
107842 - input_report_switch(hp_wmi_input_dev, key->keycode,
107843 - hp_wmi_dock_state());
107844 - input_sync(hp_wmi_input_dev);
107845 break;
107846 }
107847 }
107848 @@ -446,7 +441,6 @@
107849 bluetooth_rfkill->toggle_radio = hp_wmi_bluetooth_set;
107850 bluetooth_rfkill->user_claim_unsupported = 1;
107851 err = rfkill_register(bluetooth_rfkill);
107852 - if (err)
107853 goto register_bluetooth_error;
107854 }
107855
107856 @@ -463,11 +457,9 @@
107857
107858 return 0;
107859 register_wwan_err:
107860 - if (bluetooth_rfkill)
107861 - rfkill_unregister(bluetooth_rfkill);
107862 + rfkill_unregister(bluetooth_rfkill);
107863 register_bluetooth_error:
107864 - if (wifi_rfkill)
107865 - rfkill_unregister(wifi_rfkill);
107866 + rfkill_unregister(wifi_rfkill);
107867 add_sysfs_error:
107868 cleanup_sysfs(device);
107869 return err;
107870 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/Kconfig linux-2.6.29-rc3.owrt/drivers/platform/x86/Kconfig
107871 --- linux-2.6.29.owrt/drivers/platform/x86/Kconfig 2009-05-10 22:04:39.000000000 +0200
107872 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/Kconfig 2009-05-10 23:48:29.000000000 +0200
107873 @@ -15,7 +15,8 @@
107874 if X86_PLATFORM_DEVICES
107875
107876 config ACER_WMI
107877 - tristate "Acer WMI Laptop Extras"
107878 + tristate "Acer WMI Laptop Extras (EXPERIMENTAL)"
107879 + depends on EXPERIMENTAL
107880 depends on ACPI
107881 depends on LEDS_CLASS
107882 depends on NEW_LEDS
107883 @@ -38,10 +39,9 @@
107884 tristate "Asus Laptop Extras (EXPERIMENTAL)"
107885 depends on ACPI
107886 depends on EXPERIMENTAL && !ACPI_ASUS
107887 - select LEDS_CLASS
107888 - select NEW_LEDS
107889 - select BACKLIGHT_CLASS_DEVICE
107890 - depends on INPUT
107891 + depends on LEDS_CLASS
107892 + depends on NEW_LEDS
107893 + depends on BACKLIGHT_CLASS_DEVICE
107894 ---help---
107895 This is the new Linux driver for Asus laptops. It may also support some
107896 MEDION, JVC or VICTOR laptops. It makes all the extra buttons generate
107897 @@ -61,7 +61,6 @@
107898 depends on EXPERIMENTAL
107899 depends on BACKLIGHT_CLASS_DEVICE
107900 depends on RFKILL
107901 - depends on POWER_SUPPLY
107902 default n
107903 ---help---
107904 This driver adds support for rfkill and backlight control to Dell
107905 @@ -184,11 +183,11 @@
107906 config THINKPAD_ACPI
107907 tristate "ThinkPad ACPI Laptop Extras"
107908 depends on ACPI
107909 - depends on INPUT
107910 select BACKLIGHT_LCD_SUPPORT
107911 select BACKLIGHT_CLASS_DEVICE
107912 select HWMON
107913 select NVRAM
107914 + select INPUT
107915 select NEW_LEDS
107916 select LEDS_CLASS
107917 select NET
107918 @@ -301,7 +300,6 @@
107919 config EEEPC_LAPTOP
107920 tristate "Eee PC Hotkey Driver (EXPERIMENTAL)"
107921 depends on ACPI
107922 - depends on INPUT
107923 depends on EXPERIMENTAL
107924 select BACKLIGHT_CLASS_DEVICE
107925 select HWMON
107926 @@ -314,8 +312,9 @@
107927
107928
107929 config ACPI_WMI
107930 - tristate "WMI"
107931 + tristate "WMI (EXPERIMENTAL)"
107932 depends on ACPI
107933 + depends on EXPERIMENTAL
107934 help
107935 This driver adds support for the ACPI-WMI (Windows Management
107936 Instrumentation) mapper device (PNP0C14) found on some systems.
107937 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/panasonic-laptop.c linux-2.6.29-rc3.owrt/drivers/platform/x86/panasonic-laptop.c
107938 --- linux-2.6.29.owrt/drivers/platform/x86/panasonic-laptop.c 2009-05-10 22:04:39.000000000 +0200
107939 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/panasonic-laptop.c 2009-05-10 23:48:29.000000000 +0200
107940 @@ -507,7 +507,7 @@
107941
107942 hkey_num = result & 0xf;
107943
107944 - if (hkey_num < 0 || hkey_num >= ARRAY_SIZE(pcc->keymap)) {
107945 + if (hkey_num < 0 || hkey_num > ARRAY_SIZE(pcc->keymap)) {
107946 ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
107947 "hotkey number out of range: %d\n",
107948 hkey_num));
107949 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/thinkpad_acpi.c linux-2.6.29-rc3.owrt/drivers/platform/x86/thinkpad_acpi.c
107950 --- linux-2.6.29.owrt/drivers/platform/x86/thinkpad_acpi.c 2009-05-10 22:04:39.000000000 +0200
107951 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/thinkpad_acpi.c 2009-05-10 23:48:29.000000000 +0200
107952 @@ -7532,7 +7532,7 @@
107953 * if it is not there yet.
107954 */
107955 #define IBM_BIOS_MODULE_ALIAS(__type) \
107956 - MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW*")
107957 + MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW")
107958
107959 /* Non-ancient thinkpads */
107960 MODULE_ALIAS("dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*");
107961 @@ -7541,9 +7541,9 @@
107962 /* Ancient thinkpad BIOSes have to be identified by
107963 * BIOS type or model number, and there are far less
107964 * BIOS types than model numbers... */
107965 -IBM_BIOS_MODULE_ALIAS("I[BDHIMNOTWVYZ]");
107966 -IBM_BIOS_MODULE_ALIAS("1[0368A-GIKM-PST]");
107967 -IBM_BIOS_MODULE_ALIAS("K[UX-Z]");
107968 +IBM_BIOS_MODULE_ALIAS("I[B,D,H,I,M,N,O,T,W,V,Y,Z]");
107969 +IBM_BIOS_MODULE_ALIAS("1[0,3,6,8,A-G,I,K,M-P,S,T]");
107970 +IBM_BIOS_MODULE_ALIAS("K[U,X-Z]");
107971
107972 MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh");
107973 MODULE_DESCRIPTION(TPACPI_DESC);
107974 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/platform/x86/wmi.c linux-2.6.29-rc3.owrt/drivers/platform/x86/wmi.c
107975 --- linux-2.6.29.owrt/drivers/platform/x86/wmi.c 2009-05-10 22:04:39.000000000 +0200
107976 +++ linux-2.6.29-rc3.owrt/drivers/platform/x86/wmi.c 2009-05-10 23:48:29.000000000 +0200
107977 @@ -708,7 +708,7 @@
107978
107979 static int __init acpi_wmi_init(void)
107980 {
107981 - int result;
107982 + acpi_status result;
107983
107984 INIT_LIST_HEAD(&wmi_blocks.list);
107985
107986 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/power/ds2760_battery.c linux-2.6.29-rc3.owrt/drivers/power/ds2760_battery.c
107987 --- linux-2.6.29.owrt/drivers/power/ds2760_battery.c 2009-05-10 22:04:38.000000000 +0200
107988 +++ linux-2.6.29-rc3.owrt/drivers/power/ds2760_battery.c 2009-05-10 23:48:29.000000000 +0200
107989 @@ -180,13 +180,10 @@
107990 di->empty_uAh = battery_interpolate(scale, di->temp_C / 10);
107991 di->empty_uAh *= 1000; /* convert to µAh */
107992
107993 - if (di->full_active_uAh == di->empty_uAh)
107994 - di->rem_capacity = 0;
107995 - else
107996 - /* From Maxim Application Note 131: remaining capacity =
107997 - * ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */
107998 - di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) /
107999 - (di->full_active_uAh - di->empty_uAh);
108000 + /* From Maxim Application Note 131: remaining capacity =
108001 + * ((ICA - Empty Value) / (Full Value - Empty Value)) x 100% */
108002 + di->rem_capacity = ((di->accum_current_uAh - di->empty_uAh) * 100L) /
108003 + (di->full_active_uAh - di->empty_uAh);
108004
108005 if (di->rem_capacity < 0)
108006 di->rem_capacity = 0;
108007 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/power/pcf50633-charger.c linux-2.6.29-rc3.owrt/drivers/power/pcf50633-charger.c
108008 --- linux-2.6.29.owrt/drivers/power/pcf50633-charger.c 2009-05-10 22:04:38.000000000 +0200
108009 +++ linux-2.6.29-rc3.owrt/drivers/power/pcf50633-charger.c 2009-05-10 23:48:29.000000000 +0200
108010 @@ -199,8 +199,7 @@
108011 enum power_supply_property psp,
108012 union power_supply_propval *val)
108013 {
108014 - struct pcf50633_mbc *mbc = container_of(psy,
108015 - struct pcf50633_mbc, adapter);
108016 + struct pcf50633_mbc *mbc = container_of(psy, struct pcf50633_mbc, usb);
108017 int ret = 0;
108018
108019 switch (psp) {
108020 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/regulator/bq24022.c linux-2.6.29-rc3.owrt/drivers/regulator/bq24022.c
108021 --- linux-2.6.29.owrt/drivers/regulator/bq24022.c 2009-05-10 22:04:38.000000000 +0200
108022 +++ linux-2.6.29-rc3.owrt/drivers/regulator/bq24022.c 2009-05-10 23:48:29.000000000 +0200
108023 @@ -152,7 +152,11 @@
108024 platform_driver_unregister(&bq24022_driver);
108025 }
108026
108027 -module_init(bq24022_init);
108028 +/*
108029 + * make sure this is probed before gpio_vbus and pda_power,
108030 + * but after asic3 or other GPIO expander drivers.
108031 + */
108032 +subsys_initcall(bq24022_init);
108033 module_exit(bq24022_exit);
108034
108035 MODULE_AUTHOR("Philipp Zabel");
108036 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/regulator/wm8350-regulator.c linux-2.6.29-rc3.owrt/drivers/regulator/wm8350-regulator.c
108037 --- linux-2.6.29.owrt/drivers/regulator/wm8350-regulator.c 2009-05-10 22:04:38.000000000 +0200
108038 +++ linux-2.6.29-rc3.owrt/drivers/regulator/wm8350-regulator.c 2009-05-10 23:48:29.000000000 +0200
108039 @@ -1435,7 +1435,7 @@
108040 struct platform_device *pdev;
108041 int ret;
108042
108043 - if (lednum >= ARRAY_SIZE(wm8350->pmic.led) || lednum < 0) {
108044 + if (lednum > ARRAY_SIZE(wm8350->pmic.led) || lednum < 0) {
108045 dev_err(wm8350->dev, "Invalid LED index %d\n", lednum);
108046 return -ENODEV;
108047 }
108048 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/rtc/Kconfig linux-2.6.29-rc3.owrt/drivers/rtc/Kconfig
108049 --- linux-2.6.29.owrt/drivers/rtc/Kconfig 2009-05-10 22:04:38.000000000 +0200
108050 +++ linux-2.6.29-rc3.owrt/drivers/rtc/Kconfig 2009-05-10 23:48:29.000000000 +0200
108051 @@ -241,12 +241,6 @@
108052 If you say Y here you will get support for the
108053 watchdog timer in the ST M41T60 and M41T80 RTC chips series.
108054
108055 -config RTC_DRV_DM355EVM
108056 - tristate "TI DaVinci DM355 EVM RTC"
108057 - depends on MFD_DM355EVM_MSP
108058 - help
108059 - Supports the RTC firmware in the MSP430 on the DM355 EVM.
108060 -
108061 config RTC_DRV_TWL92330
108062 boolean "TI TWL92330/Menelaus"
108063 depends on MENELAUS
108064 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/rtc/Makefile linux-2.6.29-rc3.owrt/drivers/rtc/Makefile
108065 --- linux-2.6.29.owrt/drivers/rtc/Makefile 2009-05-10 22:04:38.000000000 +0200
108066 +++ linux-2.6.29-rc3.owrt/drivers/rtc/Makefile 2009-05-10 23:48:29.000000000 +0200
108067 @@ -23,7 +23,6 @@
108068 obj-$(CONFIG_RTC_DRV_AU1XXX) += rtc-au1xxx.o
108069 obj-$(CONFIG_RTC_DRV_BFIN) += rtc-bfin.o
108070 obj-$(CONFIG_RTC_DRV_CMOS) += rtc-cmos.o
108071 -obj-$(CONFIG_RTC_DRV_DM355EVM) += rtc-dm355evm.o
108072 obj-$(CONFIG_RTC_DRV_DS1216) += rtc-ds1216.o
108073 obj-$(CONFIG_RTC_DRV_DS1286) += rtc-ds1286.o
108074 obj-$(CONFIG_RTC_DRV_DS1302) += rtc-ds1302.o
108075 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/rtc/rtc-au1xxx.c linux-2.6.29-rc3.owrt/drivers/rtc/rtc-au1xxx.c
108076 --- linux-2.6.29.owrt/drivers/rtc/rtc-au1xxx.c 2009-05-10 22:04:38.000000000 +0200
108077 +++ linux-2.6.29-rc3.owrt/drivers/rtc/rtc-au1xxx.c 2009-05-10 23:48:29.000000000 +0200
108078 @@ -81,7 +81,7 @@
108079 if (au_readl(SYS_TOYTRIM) != 32767) {
108080 /* wait until hardware gives access to TRIM register */
108081 t = 0x00100000;
108082 - while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S) && --t)
108083 + while ((au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_T0S) && t--)
108084 msleep(1);
108085
108086 if (!t) {
108087 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/rtc/rtc-dm355evm.c linux-2.6.29-rc3.owrt/drivers/rtc/rtc-dm355evm.c
108088 --- linux-2.6.29.owrt/drivers/rtc/rtc-dm355evm.c 2009-05-10 22:04:38.000000000 +0200
108089 +++ linux-2.6.29-rc3.owrt/drivers/rtc/rtc-dm355evm.c 1970-01-01 01:00:00.000000000 +0100
108090 @@ -1,175 +0,0 @@
108091 -/*
108092 - * rtc-dm355evm.c - access battery-backed counter in MSP430 firmware
108093 - *
108094 - * Copyright (c) 2008 by David Brownell
108095 - *
108096 - * This program is free software; you can redistribute it and/or
108097 - * modify it under the terms of the GNU General Public License
108098 - * as published by the Free Software Foundation; either version
108099 - * 2 of the License, or (at your option) any later version.
108100 - */
108101 -#include <linux/kernel.h>
108102 -#include <linux/init.h>
108103 -#include <linux/rtc.h>
108104 -#include <linux/platform_device.h>
108105 -
108106 -#include <linux/i2c/dm355evm_msp.h>
108107 -
108108 -
108109 -/*
108110 - * The MSP430 firmware on the DM355 EVM uses a watch crystal to feed
108111 - * a 1 Hz counter. When a backup battery is supplied, that makes a
108112 - * reasonable RTC for applications where alarms and non-NTP drift
108113 - * compensation aren't important.
108114 - *
108115 - * The only real glitch is the inability to read or write all four
108116 - * counter bytes atomically: the count may increment in the middle
108117 - * of an operation, causing trouble when the LSB rolls over.
108118 - *
108119 - * This driver was tested with firmware revision A4.
108120 - */
108121 -union evm_time {
108122 - u8 bytes[4];
108123 - u32 value;
108124 -};
108125 -
108126 -static int dm355evm_rtc_read_time(struct device *dev, struct rtc_time *tm)
108127 -{
108128 - union evm_time time;
108129 - int status;
108130 - int tries = 0;
108131 -
108132 - do {
108133 - /*
108134 - * Read LSB(0) to MSB(3) bytes. Defend against the counter
108135 - * rolling over by re-reading until the value is stable,
108136 - * and assuming the four reads take at most a few seconds.
108137 - */
108138 - status = dm355evm_msp_read(DM355EVM_MSP_RTC_0);
108139 - if (status < 0)
108140 - return status;
108141 - if (tries && time.bytes[0] == status)
108142 - break;
108143 - time.bytes[0] = status;
108144 -
108145 - status = dm355evm_msp_read(DM355EVM_MSP_RTC_1);
108146 - if (status < 0)
108147 - return status;
108148 - if (tries && time.bytes[1] == status)
108149 - break;
108150 - time.bytes[1] = status;
108151 -
108152 - status = dm355evm_msp_read(DM355EVM_MSP_RTC_2);
108153 - if (status < 0)
108154 - return status;
108155 - if (tries && time.bytes[2] == status)
108156 - break;
108157 - time.bytes[2] = status;
108158 -
108159 - status = dm355evm_msp_read(DM355EVM_MSP_RTC_3);
108160 - if (status < 0)
108161 - return status;
108162 - if (tries && time.bytes[3] == status)
108163 - break;
108164 - time.bytes[3] = status;
108165 -
108166 - } while (++tries < 5);
108167 -
108168 - dev_dbg(dev, "read timestamp %08x\n", time.value);
108169 -
108170 - rtc_time_to_tm(le32_to_cpu(time.value), tm);
108171 - return 0;
108172 -}
108173 -
108174 -static int dm355evm_rtc_set_time(struct device *dev, struct rtc_time *tm)
108175 -{
108176 - union evm_time time;
108177 - unsigned long value;
108178 - int status;
108179 -
108180 - rtc_tm_to_time(tm, &value);
108181 - time.value = cpu_to_le32(value);
108182 -
108183 - dev_dbg(dev, "write timestamp %08x\n", time.value);
108184 -
108185 - /*
108186 - * REVISIT handle non-atomic writes ... maybe just retry until
108187 - * byte[1] sticks (no rollover)?
108188 - */
108189 - status = dm355evm_msp_write(time.bytes[0], DM355EVM_MSP_RTC_0);
108190 - if (status < 0)
108191 - return status;
108192 -
108193 - status = dm355evm_msp_write(time.bytes[1], DM355EVM_MSP_RTC_1);
108194 - if (status < 0)
108195 - return status;
108196 -
108197 - status = dm355evm_msp_write(time.bytes[2], DM355EVM_MSP_RTC_2);
108198 - if (status < 0)
108199 - return status;
108200 -
108201 - status = dm355evm_msp_write(time.bytes[3], DM355EVM_MSP_RTC_3);
108202 - if (status < 0)
108203 - return status;
108204 -
108205 - return 0;
108206 -}
108207 -
108208 -static struct rtc_class_ops dm355evm_rtc_ops = {
108209 - .read_time = dm355evm_rtc_read_time,
108210 - .set_time = dm355evm_rtc_set_time,
108211 -};
108212 -
108213 -/*----------------------------------------------------------------------*/
108214 -
108215 -static int __devinit dm355evm_rtc_probe(struct platform_device *pdev)
108216 -{
108217 - struct rtc_device *rtc;
108218 -
108219 - rtc = rtc_device_register(pdev->name,
108220 - &pdev->dev, &dm355evm_rtc_ops, THIS_MODULE);
108221 - if (IS_ERR(rtc)) {
108222 - dev_err(&pdev->dev, "can't register RTC device, err %ld\n",
108223 - PTR_ERR(rtc));
108224 - return PTR_ERR(rtc);
108225 - }
108226 - platform_set_drvdata(pdev, rtc);
108227 -
108228 - return 0;
108229 -}
108230 -
108231 -static int __devexit dm355evm_rtc_remove(struct platform_device *pdev)
108232 -{
108233 - struct rtc_device *rtc = platform_get_drvdata(pdev);
108234 -
108235 - rtc_device_unregister(rtc);
108236 - platform_set_drvdata(pdev, NULL);
108237 - return 0;
108238 -}
108239 -
108240 -/*
108241 - * I2C is used to talk to the MSP430, but this platform device is
108242 - * exposed by an MFD driver that manages I2C communications.
108243 - */
108244 -static struct platform_driver rtc_dm355evm_driver = {
108245 - .probe = dm355evm_rtc_probe,
108246 - .remove = __devexit_p(dm355evm_rtc_remove),
108247 - .driver = {
108248 - .owner = THIS_MODULE,
108249 - .name = "rtc-dm355evm",
108250 - },
108251 -};
108252 -
108253 -static int __init dm355evm_rtc_init(void)
108254 -{
108255 - return platform_driver_register(&rtc_dm355evm_driver);
108256 -}
108257 -module_init(dm355evm_rtc_init);
108258 -
108259 -static void __exit dm355evm_rtc_exit(void)
108260 -{
108261 - platform_driver_unregister(&rtc_dm355evm_driver);
108262 -}
108263 -module_exit(dm355evm_rtc_exit);
108264 -
108265 -MODULE_LICENSE("GPL");
108266 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/rtc/rtc-ds1390.c linux-2.6.29-rc3.owrt/drivers/rtc/rtc-ds1390.c
108267 --- linux-2.6.29.owrt/drivers/rtc/rtc-ds1390.c 2009-05-10 22:04:38.000000000 +0200
108268 +++ linux-2.6.29-rc3.owrt/drivers/rtc/rtc-ds1390.c 2009-05-10 23:48:29.000000000 +0200
108269 @@ -122,6 +122,7 @@
108270
108271 static int __devinit ds1390_probe(struct spi_device *spi)
108272 {
108273 + struct rtc_device *rtc;
108274 unsigned char tmp;
108275 struct ds1390 *chip;
108276 int res;
108277 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/rtc/rtc-pxa.c linux-2.6.29-rc3.owrt/drivers/rtc/rtc-pxa.c
108278 --- linux-2.6.29.owrt/drivers/rtc/rtc-pxa.c 2009-05-10 22:04:38.000000000 +0200
108279 +++ linux-2.6.29-rc3.owrt/drivers/rtc/rtc-pxa.c 2009-05-10 23:48:29.000000000 +0200
108280 @@ -485,7 +485,7 @@
108281 module_init(pxa_rtc_init);
108282 module_exit(pxa_rtc_exit);
108283
108284 -MODULE_AUTHOR("Robert Jarzmik <robert.jarzmik@free.fr>");
108285 +MODULE_AUTHOR("Robert Jarzmik");
108286 MODULE_DESCRIPTION("PXA27x/PXA3xx Realtime Clock Driver (RTC)");
108287 MODULE_LICENSE("GPL");
108288 MODULE_ALIAS("platform:pxa-rtc");
108289 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/s390/block/dasd.c linux-2.6.29-rc3.owrt/drivers/s390/block/dasd.c
108290 --- linux-2.6.29.owrt/drivers/s390/block/dasd.c 2009-05-10 22:04:38.000000000 +0200
108291 +++ linux-2.6.29-rc3.owrt/drivers/s390/block/dasd.c 2009-05-10 23:48:29.000000000 +0200
108292 @@ -57,8 +57,6 @@
108293 static void dasd_block_tasklet(struct dasd_block *);
108294 static void do_kick_device(struct work_struct *);
108295 static void dasd_return_cqr_cb(struct dasd_ccw_req *, void *);
108296 -static void dasd_device_timeout(unsigned long);
108297 -static void dasd_block_timeout(unsigned long);
108298
108299 /*
108300 * SECTION: Operations on the device structure.
108301 @@ -101,8 +99,6 @@
108302 (unsigned long) device);
108303 INIT_LIST_HEAD(&device->ccw_queue);
108304 init_timer(&device->timer);
108305 - device->timer.function = dasd_device_timeout;
108306 - device->timer.data = (unsigned long) device;
108307 INIT_WORK(&device->kick_work, do_kick_device);
108308 device->state = DASD_STATE_NEW;
108309 device->target = DASD_STATE_NEW;
108310 @@ -142,8 +138,6 @@
108311 INIT_LIST_HEAD(&block->ccw_queue);
108312 spin_lock_init(&block->queue_lock);
108313 init_timer(&block->timer);
108314 - block->timer.function = dasd_block_timeout;
108315 - block->timer.data = (unsigned long) block;
108316
108317 return block;
108318 }
108319 @@ -921,10 +915,19 @@
108320 */
108321 void dasd_device_set_timer(struct dasd_device *device, int expires)
108322 {
108323 - if (expires == 0)
108324 - del_timer(&device->timer);
108325 - else
108326 - mod_timer(&device->timer, jiffies + expires);
108327 + if (expires == 0) {
108328 + if (timer_pending(&device->timer))
108329 + del_timer(&device->timer);
108330 + return;
108331 + }
108332 + if (timer_pending(&device->timer)) {
108333 + if (mod_timer(&device->timer, jiffies + expires))
108334 + return;
108335 + }
108336 + device->timer.function = dasd_device_timeout;
108337 + device->timer.data = (unsigned long) device;
108338 + device->timer.expires = jiffies + expires;
108339 + add_timer(&device->timer);
108340 }
108341
108342 /*
108343 @@ -932,7 +935,8 @@
108344 */
108345 void dasd_device_clear_timer(struct dasd_device *device)
108346 {
108347 - del_timer(&device->timer);
108348 + if (timer_pending(&device->timer))
108349 + del_timer(&device->timer);
108350 }
108351
108352 static void dasd_handle_killed_request(struct ccw_device *cdev,
108353 @@ -1582,10 +1586,19 @@
108354 */
108355 void dasd_block_set_timer(struct dasd_block *block, int expires)
108356 {
108357 - if (expires == 0)
108358 - del_timer(&block->timer);
108359 - else
108360 - mod_timer(&block->timer, jiffies + expires);
108361 + if (expires == 0) {
108362 + if (timer_pending(&block->timer))
108363 + del_timer(&block->timer);
108364 + return;
108365 + }
108366 + if (timer_pending(&block->timer)) {
108367 + if (mod_timer(&block->timer, jiffies + expires))
108368 + return;
108369 + }
108370 + block->timer.function = dasd_block_timeout;
108371 + block->timer.data = (unsigned long) block;
108372 + block->timer.expires = jiffies + expires;
108373 + add_timer(&block->timer);
108374 }
108375
108376 /*
108377 @@ -1593,7 +1606,8 @@
108378 */
108379 void dasd_block_clear_timer(struct dasd_block *block)
108380 {
108381 - del_timer(&block->timer);
108382 + if (timer_pending(&block->timer))
108383 + del_timer(&block->timer);
108384 }
108385
108386 /*
108387 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/s390/block/dasd_devmap.c linux-2.6.29-rc3.owrt/drivers/s390/block/dasd_devmap.c
108388 --- linux-2.6.29.owrt/drivers/s390/block/dasd_devmap.c 2009-05-10 22:04:38.000000000 +0200
108389 +++ linux-2.6.29-rc3.owrt/drivers/s390/block/dasd_devmap.c 2009-05-10 23:48:29.000000000 +0200
108390 @@ -677,7 +677,7 @@
108391 struct dasd_devmap *devmap;
108392 int ff_flag;
108393
108394 - devmap = dasd_find_busid(dev_name(dev));
108395 + devmap = dasd_find_busid(dev->bus_id);
108396 if (!IS_ERR(devmap))
108397 ff_flag = (devmap->features & DASD_FEATURE_FAILFAST) != 0;
108398 else
108399 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/s390/char/sclp.c linux-2.6.29-rc3.owrt/drivers/s390/char/sclp.c
108400 --- linux-2.6.29.owrt/drivers/s390/char/sclp.c 2009-05-10 22:04:38.000000000 +0200
108401 +++ linux-2.6.29-rc3.owrt/drivers/s390/char/sclp.c 2009-05-10 23:48:29.000000000 +0200
108402 @@ -280,11 +280,8 @@
108403 rc = 0;
108404 for (offset = sizeof(struct sccb_header); offset < sccb->length;
108405 offset += evbuf->length) {
108406 - evbuf = (struct evbuf_header *) ((addr_t) sccb + offset);
108407 - /* Check for malformed hardware response */
108408 - if (evbuf->length == 0)
108409 - break;
108410 /* Search for event handler */
108411 + evbuf = (struct evbuf_header *) ((addr_t) sccb + offset);
108412 reg = NULL;
108413 list_for_each(l, &sclp_reg_list) {
108414 reg = list_entry(l, struct sclp_register, list);
108415 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/s390/char/sclp_cmd.c linux-2.6.29-rc3.owrt/drivers/s390/char/sclp_cmd.c
108416 --- linux-2.6.29.owrt/drivers/s390/char/sclp_cmd.c 2009-05-10 22:04:38.000000000 +0200
108417 +++ linux-2.6.29-rc3.owrt/drivers/s390/char/sclp_cmd.c 2009-05-10 23:48:29.000000000 +0200
108418 @@ -19,7 +19,6 @@
108419 #include <linux/memory.h>
108420 #include <asm/chpid.h>
108421 #include <asm/sclp.h>
108422 -#include <asm/setup.h>
108423
108424 #include "sclp.h"
108425
108426 @@ -475,10 +474,6 @@
108427 goto skip_add;
108428 if (start + size > VMEM_MAX_PHYS)
108429 size = VMEM_MAX_PHYS - start;
108430 - if (memory_end_set && (start >= memory_end))
108431 - goto skip_add;
108432 - if (memory_end_set && (start + size > memory_end))
108433 - size = memory_end - start;
108434 add_memory(0, start, size);
108435 skip_add:
108436 first_rn = rn;
108437 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/sbus/char/bbc_i2c.c linux-2.6.29-rc3.owrt/drivers/sbus/char/bbc_i2c.c
108438 --- linux-2.6.29.owrt/drivers/sbus/char/bbc_i2c.c 2009-05-10 22:04:38.000000000 +0200
108439 +++ linux-2.6.29-rc3.owrt/drivers/sbus/char/bbc_i2c.c 2009-05-10 23:48:29.000000000 +0200
108440 @@ -129,7 +129,7 @@
108441 bp->waiting = 1;
108442 add_wait_queue(&bp->wq, &wait);
108443 while (limit-- > 0) {
108444 - long val;
108445 + unsigned long val;
108446
108447 val = wait_event_interruptible_timeout(
108448 bp->wq,
108449 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/sbus/char/jsflash.c linux-2.6.29-rc3.owrt/drivers/sbus/char/jsflash.c
108450 --- linux-2.6.29.owrt/drivers/sbus/char/jsflash.c 2009-05-10 22:04:38.000000000 +0200
108451 +++ linux-2.6.29-rc3.owrt/drivers/sbus/char/jsflash.c 2009-05-10 23:48:29.000000000 +0200
108452 @@ -38,6 +38,9 @@
108453 #include <linux/string.h>
108454 #include <linux/genhd.h>
108455 #include <linux/blkdev.h>
108456 +
108457 +#define MAJOR_NR JSFD_MAJOR
108458 +
108459 #include <asm/uaccess.h>
108460 #include <asm/pgtable.h>
108461 #include <asm/io.h>
108462 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/sbus/char/openprom.c linux-2.6.29-rc3.owrt/drivers/sbus/char/openprom.c
108463 --- linux-2.6.29.owrt/drivers/sbus/char/openprom.c 2009-05-10 22:04:38.000000000 +0200
108464 +++ linux-2.6.29-rc3.owrt/drivers/sbus/char/openprom.c 2009-05-10 23:48:29.000000000 +0200
108465 @@ -51,7 +51,6 @@
108466 MODULE_DESCRIPTION("OPENPROM Configuration Driver");
108467 MODULE_LICENSE("GPL");
108468 MODULE_VERSION("1.0");
108469 -MODULE_ALIAS_MISCDEV(SUN_OPENPROM_MINOR);
108470
108471 /* Private data kept by the driver for each descriptor. */
108472 typedef struct openprom_private_data
108473 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.c linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.c
108474 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.c 2009-05-10 22:04:39.000000000 +0200
108475 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.c 2009-05-10 23:48:29.000000000 +0200
108476 @@ -639,11 +639,10 @@
108477 write_unlock(&cxgb3i_ddp_rwlock);
108478
108479 ddp_log_info("nppods %u (0x%x ~ 0x%x), bits %u, mask 0x%x,0x%x "
108480 - "pkt %u/%u, %u/%u.\n",
108481 + "pkt %u,%u.\n",
108482 ppmax, ddp->llimit, ddp->ulimit, ddp->idx_bits,
108483 ddp->idx_mask, ddp->rsvd_tag_mask,
108484 - ddp->max_txsz, uinfo.max_txsz,
108485 - ddp->max_rxsz, uinfo.max_rxsz);
108486 + ddp->max_txsz, ddp->max_rxsz);
108487 return 0;
108488
108489 free_ddp_map:
108490 @@ -655,8 +654,8 @@
108491 * cxgb3i_adapter_ddp_init - initialize the adapter's ddp resource
108492 * @tdev: t3cdev adapter
108493 * @tformat: tag format
108494 - * @txsz: max tx pdu payload size, filled in by this func.
108495 - * @rxsz: max rx pdu payload size, filled in by this func.
108496 + * @txsz: max tx pkt size, filled in by this func.
108497 + * @rxsz: max rx pkt size, filled in by this func.
108498 * initialize the ddp pagepod manager for a given adapter if needed and
108499 * setup the tag format for a given iscsi entity
108500 */
108501 @@ -686,12 +685,10 @@
108502 tformat->sw_bits, tformat->rsvd_bits,
108503 tformat->rsvd_shift, tformat->rsvd_mask);
108504
108505 - *txsz = min_t(unsigned int, ULP2_MAX_PDU_PAYLOAD,
108506 - ddp->max_txsz - ISCSI_PDU_NONPAYLOAD_LEN);
108507 - *rxsz = min_t(unsigned int, ULP2_MAX_PDU_PAYLOAD,
108508 - ddp->max_rxsz - ISCSI_PDU_NONPAYLOAD_LEN);
108509 - ddp_log_info("max payload size: %u/%u, %u/%u.\n",
108510 - *txsz, ddp->max_txsz, *rxsz, ddp->max_rxsz);
108511 + *txsz = ddp->max_txsz;
108512 + *rxsz = ddp->max_rxsz;
108513 + ddp_log_info("ddp max pkt size: %u, %u.\n",
108514 + ddp->max_txsz, ddp->max_rxsz);
108515 return 0;
108516 }
108517 EXPORT_SYMBOL_GPL(cxgb3i_adapter_ddp_init);
108518 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.h linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.h
108519 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.h 2009-05-10 22:04:39.000000000 +0200
108520 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_ddp.h 2009-05-10 23:48:29.000000000 +0200
108521 @@ -13,8 +13,6 @@
108522 #ifndef __CXGB3I_ULP2_DDP_H__
108523 #define __CXGB3I_ULP2_DDP_H__
108524
108525 -#include <linux/vmalloc.h>
108526 -
108527 /**
108528 * struct cxgb3i_tag_format - cxgb3i ulp tag format for an iscsi entity
108529 *
108530 @@ -87,9 +85,8 @@
108531 struct sk_buff **gl_skb;
108532 };
108533
108534 -#define ISCSI_PDU_NONPAYLOAD_LEN 312 /* bhs(48) + ahs(256) + digest(8) */
108535 #define ULP2_MAX_PKT_SIZE 16224
108536 -#define ULP2_MAX_PDU_PAYLOAD (ULP2_MAX_PKT_SIZE - ISCSI_PDU_NONPAYLOAD_LEN)
108537 +#define ULP2_MAX_PDU_PAYLOAD (ULP2_MAX_PKT_SIZE - ISCSI_PDU_NONPAYLOAD_MAX)
108538 #define PPOD_PAGES_MAX 4
108539 #define PPOD_PAGES_SHIFT 2 /* 4 pages per pod */
108540
108541 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i.h linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i.h
108542 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i.h 2009-05-10 22:04:39.000000000 +0200
108543 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i.h 2009-05-10 23:48:29.000000000 +0200
108544 @@ -20,7 +20,6 @@
108545 #include <linux/list.h>
108546 #include <linux/netdevice.h>
108547 #include <linux/scatterlist.h>
108548 -#include <linux/skbuff.h>
108549 #include <scsi/libiscsi_tcp.h>
108550
108551 /* from cxgb3 LLD */
108552 @@ -114,26 +113,6 @@
108553 struct cxgb3i_conn *cconn;
108554 };
108555
108556 -/**
108557 - * struct cxgb3i_task_data - private iscsi task data
108558 - *
108559 - * @nr_frags: # of coalesced page frags (from scsi sgl)
108560 - * @frags: coalesced page frags (from scsi sgl)
108561 - * @skb: tx pdu skb
108562 - * @offset: data offset for the next pdu
108563 - * @count: max. possible pdu payload
108564 - * @sgoffset: offset to the first sg entry for a given offset
108565 - */
108566 -#define MAX_PDU_FRAGS ((ULP2_MAX_PDU_PAYLOAD + 512 - 1) / 512)
108567 -struct cxgb3i_task_data {
108568 - unsigned short nr_frags;
108569 - skb_frag_t frags[MAX_PDU_FRAGS];
108570 - struct sk_buff *skb;
108571 - unsigned int offset;
108572 - unsigned int count;
108573 - unsigned int sgoffset;
108574 -};
108575 -
108576 int cxgb3i_iscsi_init(void);
108577 void cxgb3i_iscsi_cleanup(void);
108578
108579 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_init.c linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_init.c
108580 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_init.c 2009-05-10 22:04:39.000000000 +0200
108581 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_init.c 2009-05-10 23:48:29.000000000 +0200
108582 @@ -12,8 +12,8 @@
108583 #include "cxgb3i.h"
108584
108585 #define DRV_MODULE_NAME "cxgb3i"
108586 -#define DRV_MODULE_VERSION "1.0.1"
108587 -#define DRV_MODULE_RELDATE "Jan. 2009"
108588 +#define DRV_MODULE_VERSION "1.0.0"
108589 +#define DRV_MODULE_RELDATE "Jun. 1, 2008"
108590
108591 static char version[] =
108592 "Chelsio S3xx iSCSI Driver " DRV_MODULE_NAME
108593 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_iscsi.c linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_iscsi.c
108594 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_iscsi.c 2009-05-10 22:04:39.000000000 +0200
108595 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_iscsi.c 2009-05-10 23:48:29.000000000 +0200
108596 @@ -364,8 +364,7 @@
108597
108598 cls_session = iscsi_session_setup(&cxgb3i_iscsi_transport, shost,
108599 cmds_max,
108600 - sizeof(struct iscsi_tcp_task) +
108601 - sizeof(struct cxgb3i_task_data),
108602 + sizeof(struct iscsi_tcp_task),
108603 initial_cmdsn, ISCSI_MAX_TARGET);
108604 if (!cls_session)
108605 return NULL;
108606 @@ -403,15 +402,17 @@
108607 {
108608 struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
108609 struct cxgb3i_conn *cconn = tcp_conn->dd_data;
108610 - unsigned int max = max(512 * MAX_SKB_FRAGS, SKB_TX_HEADROOM);
108611 + unsigned int max = min_t(unsigned int, ULP2_MAX_PDU_PAYLOAD,
108612 + cconn->hba->snic->tx_max_size -
108613 + ISCSI_PDU_NONPAYLOAD_MAX);
108614
108615 - max = min(cconn->hba->snic->tx_max_size, max);
108616 if (conn->max_xmit_dlength)
108617 - conn->max_xmit_dlength = min(conn->max_xmit_dlength, max);
108618 + conn->max_xmit_dlength = min_t(unsigned int,
108619 + conn->max_xmit_dlength, max);
108620 else
108621 conn->max_xmit_dlength = max;
108622 align_pdu_size(conn->max_xmit_dlength);
108623 - cxgb3i_api_debug("conn 0x%p, max xmit %u.\n",
108624 + cxgb3i_log_info("conn 0x%p, max xmit %u.\n",
108625 conn, conn->max_xmit_dlength);
108626 return 0;
108627 }
108628 @@ -426,7 +427,9 @@
108629 {
108630 struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
108631 struct cxgb3i_conn *cconn = tcp_conn->dd_data;
108632 - unsigned int max = cconn->hba->snic->rx_max_size;
108633 + unsigned int max = min_t(unsigned int, ULP2_MAX_PDU_PAYLOAD,
108634 + cconn->hba->snic->rx_max_size -
108635 + ISCSI_PDU_NONPAYLOAD_MAX);
108636
108637 align_pdu_size(max);
108638 if (conn->max_recv_dlength) {
108639 @@ -436,7 +439,8 @@
108640 conn->max_recv_dlength, max);
108641 return -EINVAL;
108642 }
108643 - conn->max_recv_dlength = min(conn->max_recv_dlength, max);
108644 + conn->max_recv_dlength = min_t(unsigned int,
108645 + conn->max_recv_dlength, max);
108646 align_pdu_size(conn->max_recv_dlength);
108647 } else
108648 conn->max_recv_dlength = max;
108649 @@ -840,7 +844,7 @@
108650 .proc_name = "cxgb3i",
108651 .queuecommand = iscsi_queuecommand,
108652 .change_queue_depth = iscsi_change_queue_depth,
108653 - .can_queue = CXGB3I_SCSI_QDEPTH_DFLT - 1,
108654 + .can_queue = 128 * (ISCSI_DEF_XMIT_CMDS_MAX - 1),
108655 .sg_tablesize = SG_ALL,
108656 .max_sectors = 0xFFFF,
108657 .cmd_per_lun = ISCSI_DEF_CMD_PER_LUN,
108658 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.c linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.c
108659 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.c 2009-05-10 22:04:39.000000000 +0200
108660 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.c 2009-05-10 23:48:29.000000000 +0200
108661 @@ -23,19 +23,19 @@
108662 #include "cxgb3i_ddp.h"
108663
108664 #ifdef __DEBUG_C3CN_CONN__
108665 -#define c3cn_conn_debug cxgb3i_log_debug
108666 +#define c3cn_conn_debug cxgb3i_log_info
108667 #else
108668 #define c3cn_conn_debug(fmt...)
108669 #endif
108670
108671 #ifdef __DEBUG_C3CN_TX__
108672 -#define c3cn_tx_debug cxgb3i_log_debug
108673 +#define c3cn_tx_debug cxgb3i_log_debug
108674 #else
108675 #define c3cn_tx_debug(fmt...)
108676 #endif
108677
108678 #ifdef __DEBUG_C3CN_RX__
108679 -#define c3cn_rx_debug cxgb3i_log_debug
108680 +#define c3cn_rx_debug cxgb3i_log_debug
108681 #else
108682 #define c3cn_rx_debug(fmt...)
108683 #endif
108684 @@ -47,9 +47,9 @@
108685 module_param(cxgb3_rcv_win, int, 0644);
108686 MODULE_PARM_DESC(cxgb3_rcv_win, "TCP receive window in bytes (default=256KB)");
108687
108688 -static int cxgb3_snd_win = 128 * 1024;
108689 +static int cxgb3_snd_win = 64 * 1024;
108690 module_param(cxgb3_snd_win, int, 0644);
108691 -MODULE_PARM_DESC(cxgb3_snd_win, "TCP send window in bytes (default=128KB)");
108692 +MODULE_PARM_DESC(cxgb3_snd_win, "TCP send window in bytes (default=64KB)");
108693
108694 static int cxgb3_rx_credit_thres = 10 * 1024;
108695 module_param(cxgb3_rx_credit_thres, int, 0644);
108696 @@ -301,8 +301,8 @@
108697 static void skb_entail(struct s3_conn *c3cn, struct sk_buff *skb,
108698 int flags)
108699 {
108700 - skb_tcp_seq(skb) = c3cn->write_seq;
108701 - skb_flags(skb) = flags;
108702 + CXGB3_SKB_CB(skb)->seq = c3cn->write_seq;
108703 + CXGB3_SKB_CB(skb)->flags = flags;
108704 __skb_queue_tail(&c3cn->write_queue, skb);
108705 }
108706
108707 @@ -457,9 +457,12 @@
108708 * The number of WRs needed for an skb depends on the number of fragments
108709 * in the skb and whether it has any payload in its main body. This maps the
108710 * length of the gather list represented by an skb into the # of necessary WRs.
108711 - * The extra two fragments are for iscsi bhs and payload padding.
108712 + *
108713 + * The max. length of an skb is controlled by the max pdu size which is ~16K.
108714 + * Also, assume the min. fragment length is the sector size (512), then add
108715 + * extra fragment counts for iscsi bhs and payload padding.
108716 */
108717 -#define SKB_WR_LIST_SIZE (MAX_SKB_FRAGS + 2)
108718 +#define SKB_WR_LIST_SIZE (16384/512 + 3)
108719 static unsigned int skb_wrs[SKB_WR_LIST_SIZE] __read_mostly;
108720
108721 static void s3_init_wr_tab(unsigned int wr_len)
108722 @@ -482,7 +485,7 @@
108723
108724 static inline void reset_wr_list(struct s3_conn *c3cn)
108725 {
108726 - c3cn->wr_pending_head = c3cn->wr_pending_tail = NULL;
108727 + c3cn->wr_pending_head = NULL;
108728 }
108729
108730 /*
108731 @@ -493,7 +496,7 @@
108732 static inline void enqueue_wr(struct s3_conn *c3cn,
108733 struct sk_buff *skb)
108734 {
108735 - skb_tx_wr_next(skb) = NULL;
108736 + skb_wr_data(skb) = NULL;
108737
108738 /*
108739 * We want to take an extra reference since both us and the driver
108740 @@ -506,22 +509,10 @@
108741 if (!c3cn->wr_pending_head)
108742 c3cn->wr_pending_head = skb;
108743 else
108744 - skb_tx_wr_next(c3cn->wr_pending_tail) = skb;
108745 + skb_wr_data(skb) = skb;
108746 c3cn->wr_pending_tail = skb;
108747 }
108748
108749 -static int count_pending_wrs(struct s3_conn *c3cn)
108750 -{
108751 - int n = 0;
108752 - const struct sk_buff *skb = c3cn->wr_pending_head;
108753 -
108754 - while (skb) {
108755 - n += skb->csum;
108756 - skb = skb_tx_wr_next(skb);
108757 - }
108758 - return n;
108759 -}
108760 -
108761 static inline struct sk_buff *peek_wr(const struct s3_conn *c3cn)
108762 {
108763 return c3cn->wr_pending_head;
108764 @@ -538,8 +529,8 @@
108765
108766 if (likely(skb)) {
108767 /* Don't bother clearing the tail */
108768 - c3cn->wr_pending_head = skb_tx_wr_next(skb);
108769 - skb_tx_wr_next(skb) = NULL;
108770 + c3cn->wr_pending_head = skb_wr_data(skb);
108771 + skb_wr_data(skb) = NULL;
108772 }
108773 return skb;
108774 }
108775 @@ -552,14 +543,13 @@
108776 }
108777
108778 static inline void make_tx_data_wr(struct s3_conn *c3cn, struct sk_buff *skb,
108779 - int len, int req_completion)
108780 + int len)
108781 {
108782 struct tx_data_wr *req;
108783
108784 skb_reset_transport_header(skb);
108785 req = (struct tx_data_wr *)__skb_push(skb, sizeof(*req));
108786 - req->wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_TX_DATA) |
108787 - (req_completion ? F_WR_COMPL : 0));
108788 + req->wr_hi = htonl(V_WR_OP(FW_WROPCODE_OFLD_TX_DATA));
108789 req->wr_lo = htonl(V_WR_TID(c3cn->tid));
108790 req->sndseq = htonl(c3cn->snd_nxt);
108791 /* len includes the length of any HW ULP additions */
108792 @@ -602,7 +592,7 @@
108793
108794 if (unlikely(c3cn->state == C3CN_STATE_CONNECTING ||
108795 c3cn->state == C3CN_STATE_CLOSE_WAIT_1 ||
108796 - c3cn->state >= C3CN_STATE_ABORTING)) {
108797 + c3cn->state == C3CN_STATE_ABORTING)) {
108798 c3cn_tx_debug("c3cn 0x%p, in closing state %u.\n",
108799 c3cn, c3cn->state);
108800 return 0;
108801 @@ -625,7 +615,7 @@
108802 if (c3cn->wr_avail < wrs_needed) {
108803 c3cn_tx_debug("c3cn 0x%p, skb len %u/%u, frag %u, "
108804 "wr %d < %u.\n",
108805 - c3cn, skb->len, skb->data_len, frags,
108806 + c3cn, skb->len, skb->datalen, frags,
108807 wrs_needed, c3cn->wr_avail);
108808 break;
108809 }
108810 @@ -637,24 +627,20 @@
108811 c3cn->wr_unacked += wrs_needed;
108812 enqueue_wr(c3cn, skb);
108813
108814 - c3cn_tx_debug("c3cn 0x%p, enqueue, skb len %u/%u, frag %u, "
108815 - "wr %d, left %u, unack %u.\n",
108816 - c3cn, skb->len, skb->data_len, frags,
108817 - wrs_needed, c3cn->wr_avail, c3cn->wr_unacked);
108818 -
108819 + if (likely(CXGB3_SKB_CB(skb)->flags & C3CB_FLAG_NEED_HDR)) {
108820 + len += ulp_extra_len(skb);
108821 + make_tx_data_wr(c3cn, skb, len);
108822 + c3cn->snd_nxt += len;
108823 + if ((req_completion
108824 + && c3cn->wr_unacked == wrs_needed)
108825 + || (CXGB3_SKB_CB(skb)->flags & C3CB_FLAG_COMPL)
108826 + || c3cn->wr_unacked >= c3cn->wr_max / 2) {
108827 + struct work_request_hdr *wr = cplhdr(skb);
108828
108829 - if (likely(skb_flags(skb) & C3CB_FLAG_NEED_HDR)) {
108830 - if ((req_completion &&
108831 - c3cn->wr_unacked == wrs_needed) ||
108832 - (skb_flags(skb) & C3CB_FLAG_COMPL) ||
108833 - c3cn->wr_unacked >= c3cn->wr_max / 2) {
108834 - req_completion = 1;
108835 + wr->wr_hi |= htonl(F_WR_COMPL);
108836 c3cn->wr_unacked = 0;
108837 }
108838 - len += ulp_extra_len(skb);
108839 - make_tx_data_wr(c3cn, skb, len, req_completion);
108840 - c3cn->snd_nxt += len;
108841 - skb_flags(skb) &= ~C3CB_FLAG_NEED_HDR;
108842 + CXGB3_SKB_CB(skb)->flags &= ~C3CB_FLAG_NEED_HDR;
108843 }
108844
108845 total_size += skb->truesize;
108846 @@ -749,11 +735,8 @@
108847 if (unlikely(c3cn_flag(c3cn, C3CN_ACTIVE_CLOSE_NEEDED)))
108848 /* upper layer has requested closing */
108849 send_abort_req(c3cn);
108850 - else {
108851 - if (skb_queue_len(&c3cn->write_queue))
108852 - c3cn_push_tx_frames(c3cn, 1);
108853 + else if (c3cn_push_tx_frames(c3cn, 1))
108854 cxgb3i_conn_tx_open(c3cn);
108855 - }
108856 }
108857
108858 static int do_act_establish(struct t3cdev *cdev, struct sk_buff *skb,
108859 @@ -1099,8 +1082,8 @@
108860 return;
108861 }
108862
108863 - skb_tcp_seq(skb) = ntohl(hdr_cpl->seq);
108864 - skb_flags(skb) = 0;
108865 + CXGB3_SKB_CB(skb)->seq = ntohl(hdr_cpl->seq);
108866 + CXGB3_SKB_CB(skb)->flags = 0;
108867
108868 skb_reset_transport_header(skb);
108869 __skb_pull(skb, sizeof(struct cpl_iscsi_hdr));
108870 @@ -1120,12 +1103,12 @@
108871 goto abort_conn;
108872
108873 skb_ulp_mode(skb) = ULP2_FLAG_DATA_READY;
108874 - skb_rx_pdulen(skb) = ntohs(ddp_cpl.len);
108875 - skb_rx_ddigest(skb) = ntohl(ddp_cpl.ulp_crc);
108876 + skb_ulp_pdulen(skb) = ntohs(ddp_cpl.len);
108877 + skb_ulp_ddigest(skb) = ntohl(ddp_cpl.ulp_crc);
108878 status = ntohl(ddp_cpl.ddp_status);
108879
108880 c3cn_rx_debug("rx skb 0x%p, len %u, pdulen %u, ddp status 0x%x.\n",
108881 - skb, skb->len, skb_rx_pdulen(skb), status);
108882 + skb, skb->len, skb_ulp_pdulen(skb), status);
108883
108884 if (status & (1 << RX_DDP_STATUS_HCRC_SHIFT))
108885 skb_ulp_mode(skb) |= ULP2_FLAG_HCRC_ERROR;
108886 @@ -1143,7 +1126,7 @@
108887 } else if (status & (1 << RX_DDP_STATUS_DDP_SHIFT))
108888 skb_ulp_mode(skb) |= ULP2_FLAG_DATA_DDPED;
108889
108890 - c3cn->rcv_nxt = ntohl(ddp_cpl.seq) + skb_rx_pdulen(skb);
108891 + c3cn->rcv_nxt = ntohl(ddp_cpl.seq) + skb_ulp_pdulen(skb);
108892 __pskb_trim(skb, len);
108893 __skb_queue_tail(&c3cn->receive_queue, skb);
108894 cxgb3i_conn_pdu_ready(c3cn);
108895 @@ -1168,27 +1151,12 @@
108896 * Process an acknowledgment of WR completion. Advance snd_una and send the
108897 * next batch of work requests from the write queue.
108898 */
108899 -static void check_wr_invariants(struct s3_conn *c3cn)
108900 -{
108901 - int pending = count_pending_wrs(c3cn);
108902 -
108903 - if (unlikely(c3cn->wr_avail + pending != c3cn->wr_max))
108904 - cxgb3i_log_error("TID %u: credit imbalance: avail %u, "
108905 - "pending %u, total should be %u\n",
108906 - c3cn->tid, c3cn->wr_avail, pending,
108907 - c3cn->wr_max);
108908 -}
108909 -
108910 static void process_wr_ack(struct s3_conn *c3cn, struct sk_buff *skb)
108911 {
108912 struct cpl_wr_ack *hdr = cplhdr(skb);
108913 unsigned int credits = ntohs(hdr->credits);
108914 u32 snd_una = ntohl(hdr->snd_una);
108915
108916 - c3cn_tx_debug("%u WR credits, avail %u, unack %u, TID %u, state %u.\n",
108917 - credits, c3cn->wr_avail, c3cn->wr_unacked,
108918 - c3cn->tid, c3cn->state);
108919 -
108920 c3cn->wr_avail += credits;
108921 if (c3cn->wr_unacked > c3cn->wr_max - c3cn->wr_avail)
108922 c3cn->wr_unacked = c3cn->wr_max - c3cn->wr_avail;
108923 @@ -1203,17 +1171,6 @@
108924 break;
108925 }
108926 if (unlikely(credits < p->csum)) {
108927 - struct tx_data_wr *w = cplhdr(p);
108928 - cxgb3i_log_error("TID %u got %u WR credits need %u, "
108929 - "len %u, main body %u, frags %u, "
108930 - "seq # %u, ACK una %u, ACK nxt %u, "
108931 - "WR_AVAIL %u, WRs pending %u\n",
108932 - c3cn->tid, credits, p->csum, p->len,
108933 - p->len - p->data_len,
108934 - skb_shinfo(p)->nr_frags,
108935 - ntohl(w->sndseq), snd_una,
108936 - ntohl(hdr->snd_nxt), c3cn->wr_avail,
108937 - count_pending_wrs(c3cn) - credits);
108938 p->csum -= credits;
108939 break;
108940 } else {
108941 @@ -1223,24 +1180,15 @@
108942 }
108943 }
108944
108945 - check_wr_invariants(c3cn);
108946 -
108947 - if (unlikely(before(snd_una, c3cn->snd_una))) {
108948 - cxgb3i_log_error("TID %u, unexpected sequence # %u in WR_ACK "
108949 - "snd_una %u\n",
108950 - c3cn->tid, snd_una, c3cn->snd_una);
108951 + if (unlikely(before(snd_una, c3cn->snd_una)))
108952 goto out_free;
108953 - }
108954
108955 if (c3cn->snd_una != snd_una) {
108956 c3cn->snd_una = snd_una;
108957 dst_confirm(c3cn->dst_cache);
108958 }
108959
108960 - if (skb_queue_len(&c3cn->write_queue)) {
108961 - if (c3cn_push_tx_frames(c3cn, 0))
108962 - cxgb3i_conn_tx_open(c3cn);
108963 - } else
108964 + if (skb_queue_len(&c3cn->write_queue) && c3cn_push_tx_frames(c3cn, 0))
108965 cxgb3i_conn_tx_open(c3cn);
108966 out_free:
108967 __kfree_skb(skb);
108968 @@ -1504,7 +1452,7 @@
108969 struct dst_entry *dst)
108970 {
108971 BUG_ON(c3cn->cdev != cdev);
108972 - c3cn->wr_max = c3cn->wr_avail = T3C_DATA(cdev)->max_wrs - 1;
108973 + c3cn->wr_max = c3cn->wr_avail = T3C_DATA(cdev)->max_wrs;
108974 c3cn->wr_unacked = 0;
108975 c3cn->mss_idx = select_mss(c3cn, dst_mtu(dst));
108976
108977 @@ -1723,17 +1671,9 @@
108978 goto out_err;
108979 }
108980
108981 + err = -EPIPE;
108982 if (c3cn->err) {
108983 c3cn_tx_debug("c3cn 0x%p, err %d.\n", c3cn, c3cn->err);
108984 - err = -EPIPE;
108985 - goto out_err;
108986 - }
108987 -
108988 - if (c3cn->write_seq - c3cn->snd_una >= cxgb3_snd_win) {
108989 - c3cn_tx_debug("c3cn 0x%p, snd %u - %u > %u.\n",
108990 - c3cn, c3cn->write_seq, c3cn->snd_una,
108991 - cxgb3_snd_win);
108992 - err = -EAGAIN;
108993 goto out_err;
108994 }
108995
108996 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.h linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.h
108997 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.h 2009-05-10 22:04:39.000000000 +0200
108998 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_offload.h 2009-05-10 23:48:29.000000000 +0200
108999 @@ -178,33 +178,25 @@
109000 * @flag: see C3CB_FLAG_* below
109001 * @ulp_mode: ULP mode/submode of sk_buff
109002 * @seq: tcp sequence number
109003 + * @ddigest: pdu data digest
109004 + * @pdulen: recovered pdu length
109005 + * @wr_data: scratch area for tx wr
109006 */
109007 -struct cxgb3_skb_rx_cb {
109008 - __u32 ddigest; /* data digest */
109009 - __u32 pdulen; /* recovered pdu length */
109010 -};
109011 -
109012 -struct cxgb3_skb_tx_cb {
109013 - struct sk_buff *wr_next; /* next wr */
109014 -};
109015 -
109016 struct cxgb3_skb_cb {
109017 __u8 flags;
109018 __u8 ulp_mode;
109019 __u32 seq;
109020 - union {
109021 - struct cxgb3_skb_rx_cb rx;
109022 - struct cxgb3_skb_tx_cb tx;
109023 - };
109024 + __u32 ddigest;
109025 + __u32 pdulen;
109026 + struct sk_buff *wr_data;
109027 };
109028
109029 #define CXGB3_SKB_CB(skb) ((struct cxgb3_skb_cb *)&((skb)->cb[0]))
109030 -#define skb_flags(skb) (CXGB3_SKB_CB(skb)->flags)
109031 +
109032 #define skb_ulp_mode(skb) (CXGB3_SKB_CB(skb)->ulp_mode)
109033 -#define skb_tcp_seq(skb) (CXGB3_SKB_CB(skb)->seq)
109034 -#define skb_rx_ddigest(skb) (CXGB3_SKB_CB(skb)->rx.ddigest)
109035 -#define skb_rx_pdulen(skb) (CXGB3_SKB_CB(skb)->rx.pdulen)
109036 -#define skb_tx_wr_next(skb) (CXGB3_SKB_CB(skb)->tx.wr_next)
109037 +#define skb_ulp_ddigest(skb) (CXGB3_SKB_CB(skb)->ddigest)
109038 +#define skb_ulp_pdulen(skb) (CXGB3_SKB_CB(skb)->pdulen)
109039 +#define skb_wr_data(skb) (CXGB3_SKB_CB(skb)->wr_data)
109040
109041 enum c3cb_flags {
109042 C3CB_FLAG_NEED_HDR = 1 << 0, /* packet needs a TX_DATA_WR header */
109043 @@ -225,7 +217,6 @@
109044 /* for TX: a skb must have a headroom of at least TX_HEADER_LEN bytes */
109045 #define TX_HEADER_LEN \
109046 (sizeof(struct tx_data_wr) + sizeof(struct sge_opaque_hdr))
109047 -#define SKB_TX_HEADROOM SKB_MAX_HEAD(TX_HEADER_LEN)
109048
109049 /*
109050 * get and set private ip for iscsi traffic
109051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.c linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.c
109052 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.c 2009-05-10 22:04:39.000000000 +0200
109053 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.c 2009-05-10 23:48:29.000000000 +0200
109054 @@ -32,10 +32,6 @@
109055 #define cxgb3i_tx_debug(fmt...)
109056 #endif
109057
109058 -/* always allocate rooms for AHS */
109059 -#define SKB_TX_PDU_HEADER_LEN \
109060 - (sizeof(struct iscsi_hdr) + ISCSI_MAX_AHS_SIZE)
109061 -static unsigned int skb_extra_headroom;
109062 static struct page *pad_page;
109063
109064 /*
109065 @@ -150,13 +146,12 @@
109066
109067 void cxgb3i_conn_cleanup_task(struct iscsi_task *task)
109068 {
109069 - struct cxgb3i_task_data *tdata = task->dd_data +
109070 - sizeof(struct iscsi_tcp_task);
109071 + struct iscsi_tcp_task *tcp_task = task->dd_data;
109072
109073 /* never reached the xmit task callout */
109074 - if (tdata->skb)
109075 - __kfree_skb(tdata->skb);
109076 - memset(tdata, 0, sizeof(struct cxgb3i_task_data));
109077 + if (tcp_task->dd_data)
109078 + kfree_skb(tcp_task->dd_data);
109079 + tcp_task->dd_data = NULL;
109080
109081 /* MNC - Do we need a check in case this is called but
109082 * cxgb3i_conn_alloc_pdu has never been called on the task */
109083 @@ -164,102 +159,28 @@
109084 iscsi_tcp_cleanup_task(task);
109085 }
109086
109087 -static int sgl_seek_offset(struct scatterlist *sgl, unsigned int sgcnt,
109088 - unsigned int offset, unsigned int *off,
109089 - struct scatterlist **sgp)
109090 -{
109091 - int i;
109092 - struct scatterlist *sg;
109093 -
109094 - for_each_sg(sgl, sg, sgcnt, i) {
109095 - if (offset < sg->length) {
109096 - *off = offset;
109097 - *sgp = sg;
109098 - return 0;
109099 - }
109100 - offset -= sg->length;
109101 - }
109102 - return -EFAULT;
109103 -}
109104 -
109105 -static int sgl_read_to_frags(struct scatterlist *sg, unsigned int sgoffset,
109106 - unsigned int dlen, skb_frag_t *frags,
109107 - int frag_max)
109108 -{
109109 - unsigned int datalen = dlen;
109110 - unsigned int sglen = sg->length - sgoffset;
109111 - struct page *page = sg_page(sg);
109112 - int i;
109113 -
109114 - i = 0;
109115 - do {
109116 - unsigned int copy;
109117 -
109118 - if (!sglen) {
109119 - sg = sg_next(sg);
109120 - if (!sg) {
109121 - cxgb3i_log_error("%s, sg NULL, len %u/%u.\n",
109122 - __func__, datalen, dlen);
109123 - return -EINVAL;
109124 - }
109125 - sgoffset = 0;
109126 - sglen = sg->length;
109127 - page = sg_page(sg);
109128 -
109129 - }
109130 - copy = min(datalen, sglen);
109131 - if (i && page == frags[i - 1].page &&
109132 - sgoffset + sg->offset ==
109133 - frags[i - 1].page_offset + frags[i - 1].size) {
109134 - frags[i - 1].size += copy;
109135 - } else {
109136 - if (i >= frag_max) {
109137 - cxgb3i_log_error("%s, too many pages %u, "
109138 - "dlen %u.\n", __func__,
109139 - frag_max, dlen);
109140 - return -EINVAL;
109141 - }
109142 -
109143 - frags[i].page = page;
109144 - frags[i].page_offset = sg->offset + sgoffset;
109145 - frags[i].size = copy;
109146 - i++;
109147 - }
109148 - datalen -= copy;
109149 - sgoffset += copy;
109150 - sglen -= copy;
109151 - } while (datalen);
109152 -
109153 - return i;
109154 -}
109155 -
109156 +/*
109157 + * We do not support ahs yet
109158 + */
109159 int cxgb3i_conn_alloc_pdu(struct iscsi_task *task, u8 opcode)
109160 {
109161 - struct iscsi_conn *conn = task->conn;
109162 struct iscsi_tcp_task *tcp_task = task->dd_data;
109163 - struct cxgb3i_task_data *tdata = task->dd_data + sizeof(*tcp_task);
109164 - struct scsi_cmnd *sc = task->sc;
109165 - int headroom = SKB_TX_PDU_HEADER_LEN;
109166 + struct sk_buff *skb;
109167
109168 - tcp_task->dd_data = tdata;
109169 task->hdr = NULL;
109170 -
109171 - /* write command, need to send data pdus */
109172 - if (skb_extra_headroom && (opcode == ISCSI_OP_SCSI_DATA_OUT ||
109173 - (opcode == ISCSI_OP_SCSI_CMD &&
109174 - (scsi_bidi_cmnd(sc) || sc->sc_data_direction == DMA_TO_DEVICE))))
109175 - headroom += min(skb_extra_headroom, conn->max_xmit_dlength);
109176 -
109177 - tdata->skb = alloc_skb(TX_HEADER_LEN + headroom, GFP_ATOMIC);
109178 - if (!tdata->skb)
109179 + /* always allocate rooms for AHS */
109180 + skb = alloc_skb(sizeof(struct iscsi_hdr) + ISCSI_MAX_AHS_SIZE +
109181 + TX_HEADER_LEN, GFP_ATOMIC);
109182 + if (!skb)
109183 return -ENOMEM;
109184 - skb_reserve(tdata->skb, TX_HEADER_LEN);
109185
109186 cxgb3i_tx_debug("task 0x%p, opcode 0x%x, skb 0x%p.\n",
109187 - task, opcode, tdata->skb);
109188 + task, opcode, skb);
109189
109190 - task->hdr = (struct iscsi_hdr *)tdata->skb->data;
109191 - task->hdr_max = SKB_TX_PDU_HEADER_LEN;
109192 + tcp_task->dd_data = skb;
109193 + skb_reserve(skb, TX_HEADER_LEN);
109194 + task->hdr = (struct iscsi_hdr *)skb->data;
109195 + task->hdr_max = sizeof(struct iscsi_hdr);
109196
109197 /* data_out uses scsi_cmd's itt */
109198 if (opcode != ISCSI_OP_SCSI_DATA_OUT)
109199 @@ -271,13 +192,13 @@
109200 int cxgb3i_conn_init_pdu(struct iscsi_task *task, unsigned int offset,
109201 unsigned int count)
109202 {
109203 - struct iscsi_conn *conn = task->conn;
109204 struct iscsi_tcp_task *tcp_task = task->dd_data;
109205 - struct cxgb3i_task_data *tdata = tcp_task->dd_data;
109206 - struct sk_buff *skb = tdata->skb;
109207 + struct sk_buff *skb = tcp_task->dd_data;
109208 + struct iscsi_conn *conn = task->conn;
109209 + struct page *pg;
109210 unsigned int datalen = count;
109211 int i, padlen = iscsi_padding(count);
109212 - struct page *pg;
109213 + skb_frag_t *frag;
109214
109215 cxgb3i_tx_debug("task 0x%p,0x%p, offset %u, count %u, skb 0x%p.\n",
109216 task, task->sc, offset, count, skb);
109217 @@ -288,94 +209,90 @@
109218 return 0;
109219
109220 if (task->sc) {
109221 - struct scsi_data_buffer *sdb = scsi_out(task->sc);
109222 - struct scatterlist *sg = NULL;
109223 - int err;
109224 -
109225 - tdata->offset = offset;
109226 - tdata->count = count;
109227 - err = sgl_seek_offset(sdb->table.sgl, sdb->table.nents,
109228 - tdata->offset, &tdata->sgoffset, &sg);
109229 - if (err < 0) {
109230 - cxgb3i_log_warn("tpdu, sgl %u, bad offset %u/%u.\n",
109231 - sdb->table.nents, tdata->offset,
109232 - sdb->length);
109233 - return err;
109234 + struct scatterlist *sg;
109235 + struct scsi_data_buffer *sdb;
109236 + unsigned int sgoffset = offset;
109237 + struct page *sgpg;
109238 + unsigned int sglen;
109239 +
109240 + sdb = scsi_out(task->sc);
109241 + sg = sdb->table.sgl;
109242 +
109243 + for_each_sg(sdb->table.sgl, sg, sdb->table.nents, i) {
109244 + cxgb3i_tx_debug("sg %d, page 0x%p, len %u offset %u\n",
109245 + i, sg_page(sg), sg->length, sg->offset);
109246 +
109247 + if (sgoffset < sg->length)
109248 + break;
109249 + sgoffset -= sg->length;
109250 }
109251 - err = sgl_read_to_frags(sg, tdata->sgoffset, tdata->count,
109252 - tdata->frags, MAX_PDU_FRAGS);
109253 - if (err < 0) {
109254 - cxgb3i_log_warn("tpdu, sgl %u, bad offset %u + %u.\n",
109255 - sdb->table.nents, tdata->offset,
109256 - tdata->count);
109257 - return err;
109258 - }
109259 - tdata->nr_frags = err;
109260 + sgpg = sg_page(sg);
109261 + sglen = sg->length - sgoffset;
109262
109263 - if (tdata->nr_frags > MAX_SKB_FRAGS ||
109264 - (padlen && tdata->nr_frags == MAX_SKB_FRAGS)) {
109265 - char *dst = skb->data + task->hdr_len;
109266 - skb_frag_t *frag = tdata->frags;
109267 -
109268 - /* data fits in the skb's headroom */
109269 - for (i = 0; i < tdata->nr_frags; i++, frag++) {
109270 - char *src = kmap_atomic(frag->page,
109271 - KM_SOFTIRQ0);
109272 -
109273 - memcpy(dst, src+frag->page_offset, frag->size);
109274 - dst += frag->size;
109275 - kunmap_atomic(src, KM_SOFTIRQ0);
109276 + do {
109277 + int j = skb_shinfo(skb)->nr_frags;
109278 + unsigned int copy;
109279 +
109280 + if (!sglen) {
109281 + sg = sg_next(sg);
109282 + sgpg = sg_page(sg);
109283 + sgoffset = 0;
109284 + sglen = sg->length;
109285 + ++i;
109286 }
109287 - if (padlen) {
109288 - memset(dst, 0, padlen);
109289 - padlen = 0;
109290 + copy = min(sglen, datalen);
109291 + if (j && skb_can_coalesce(skb, j, sgpg,
109292 + sg->offset + sgoffset)) {
109293 + skb_shinfo(skb)->frags[j - 1].size += copy;
109294 + } else {
109295 + get_page(sgpg);
109296 + skb_fill_page_desc(skb, j, sgpg,
109297 + sg->offset + sgoffset, copy);
109298 }
109299 - skb_put(skb, count + padlen);
109300 - } else {
109301 - /* data fit into frag_list */
109302 - for (i = 0; i < tdata->nr_frags; i++)
109303 - get_page(tdata->frags[i].page);
109304 -
109305 - memcpy(skb_shinfo(skb)->frags, tdata->frags,
109306 - sizeof(skb_frag_t) * tdata->nr_frags);
109307 - skb_shinfo(skb)->nr_frags = tdata->nr_frags;
109308 - skb->len += count;
109309 - skb->data_len += count;
109310 - skb->truesize += count;
109311 - }
109312 -
109313 + sgoffset += copy;
109314 + sglen -= copy;
109315 + datalen -= copy;
109316 + } while (datalen);
109317 } else {
109318 pg = virt_to_page(task->data);
109319
109320 - get_page(pg);
109321 - skb_fill_page_desc(skb, 0, pg, offset_in_page(task->data),
109322 - count);
109323 - skb->len += count;
109324 - skb->data_len += count;
109325 - skb->truesize += count;
109326 + while (datalen) {
109327 + i = skb_shinfo(skb)->nr_frags;
109328 + frag = &skb_shinfo(skb)->frags[i];
109329 +
109330 + get_page(pg);
109331 + frag->page = pg;
109332 + frag->page_offset = 0;
109333 + frag->size = min((unsigned int)PAGE_SIZE, datalen);
109334 +
109335 + skb_shinfo(skb)->nr_frags++;
109336 + datalen -= frag->size;
109337 + pg++;
109338 + }
109339 }
109340
109341 if (padlen) {
109342 i = skb_shinfo(skb)->nr_frags;
109343 - get_page(pad_page);
109344 - skb_fill_page_desc(skb, skb_shinfo(skb)->nr_frags, pad_page, 0,
109345 - padlen);
109346 -
109347 - skb->data_len += padlen;
109348 - skb->truesize += padlen;
109349 - skb->len += padlen;
109350 + frag = &skb_shinfo(skb)->frags[i];
109351 + frag->page = pad_page;
109352 + frag->page_offset = 0;
109353 + frag->size = padlen;
109354 + skb_shinfo(skb)->nr_frags++;
109355 }
109356
109357 + datalen = count + padlen;
109358 + skb->data_len += datalen;
109359 + skb->truesize += datalen;
109360 + skb->len += datalen;
109361 return 0;
109362 }
109363
109364 int cxgb3i_conn_xmit_pdu(struct iscsi_task *task)
109365 {
109366 + struct iscsi_tcp_task *tcp_task = task->dd_data;
109367 + struct sk_buff *skb = tcp_task->dd_data;
109368 struct iscsi_tcp_conn *tcp_conn = task->conn->dd_data;
109369 struct cxgb3i_conn *cconn = tcp_conn->dd_data;
109370 - struct iscsi_tcp_task *tcp_task = task->dd_data;
109371 - struct cxgb3i_task_data *tdata = tcp_task->dd_data;
109372 - struct sk_buff *skb = tdata->skb;
109373 unsigned int datalen;
109374 int err;
109375
109376 @@ -383,13 +300,12 @@
109377 return 0;
109378
109379 datalen = skb->data_len;
109380 - tdata->skb = NULL;
109381 + tcp_task->dd_data = NULL;
109382 err = cxgb3i_c3cn_send_pdus(cconn->cep->c3cn, skb);
109383 - if (err > 0) {
109384 - int pdulen = err;
109385 -
109386 cxgb3i_tx_debug("task 0x%p, skb 0x%p, len %u/%u, rv %d.\n",
109387 task, skb, skb->len, skb->data_len, err);
109388 + if (err > 0) {
109389 + int pdulen = err;
109390
109391 if (task->conn->hdrdgst_en)
109392 pdulen += ISCSI_DIGEST_SIZE;
109393 @@ -409,14 +325,12 @@
109394 return err;
109395 }
109396 /* reset skb to send when we are called again */
109397 - tdata->skb = skb;
109398 + tcp_task->dd_data = skb;
109399 return -EAGAIN;
109400 }
109401
109402 int cxgb3i_pdu_init(void)
109403 {
109404 - if (SKB_TX_HEADROOM > (512 * MAX_SKB_FRAGS))
109405 - skb_extra_headroom = SKB_TX_HEADROOM;
109406 pad_page = alloc_page(GFP_KERNEL);
109407 if (!pad_page)
109408 return -ENOMEM;
109409 @@ -452,9 +366,7 @@
109410 skb = skb_peek(&c3cn->receive_queue);
109411 while (!err && skb) {
109412 __skb_unlink(skb, &c3cn->receive_queue);
109413 - read += skb_rx_pdulen(skb);
109414 - cxgb3i_rx_debug("conn 0x%p, cn 0x%p, rx skb 0x%p, pdulen %u.\n",
109415 - conn, c3cn, skb, skb_rx_pdulen(skb));
109416 + read += skb_ulp_pdulen(skb);
109417 err = cxgb3i_conn_read_pdu_skb(conn, skb);
109418 __kfree_skb(skb);
109419 skb = skb_peek(&c3cn->receive_queue);
109420 @@ -465,11 +377,6 @@
109421 cxgb3i_c3cn_rx_credits(c3cn, read);
109422 }
109423 conn->rxdata_octets += read;
109424 -
109425 - if (err) {
109426 - cxgb3i_log_info("conn 0x%p rx failed err %d.\n", conn, err);
109427 - iscsi_conn_failure(conn, ISCSI_ERR_CONN_FAILED);
109428 - }
109429 }
109430
109431 void cxgb3i_conn_tx_open(struct s3_conn *c3cn)
109432 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.h linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.h
109433 --- linux-2.6.29.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.h 2009-05-10 22:04:39.000000000 +0200
109434 +++ linux-2.6.29-rc3.owrt/drivers/scsi/cxgb3i/cxgb3i_pdu.h 2009-05-10 23:48:29.000000000 +0200
109435 @@ -53,7 +53,7 @@
109436 #define ULP2_FLAG_DCRC_ERROR 0x20
109437 #define ULP2_FLAG_PAD_ERROR 0x40
109438
109439 -void cxgb3i_conn_closing(struct s3_conn *c3cn);
109440 +void cxgb3i_conn_closing(struct s3_conn *);
109441 void cxgb3i_conn_pdu_ready(struct s3_conn *c3cn);
109442 void cxgb3i_conn_tx_open(struct s3_conn *c3cn);
109443 #endif
109444 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/fcoe/fcoe_sw.c linux-2.6.29-rc3.owrt/drivers/scsi/fcoe/fcoe_sw.c
109445 --- linux-2.6.29.owrt/drivers/scsi/fcoe/fcoe_sw.c 2009-05-10 22:04:39.000000000 +0200
109446 +++ linux-2.6.29-rc3.owrt/drivers/scsi/fcoe/fcoe_sw.c 2009-05-10 23:48:29.000000000 +0200
109447 @@ -104,19 +104,19 @@
109448 .max_sectors = 0xffff,
109449 };
109450
109451 -/**
109452 - * fcoe_sw_lport_config() - sets up the fc_lport
109453 +/*
109454 + * fcoe_sw_lport_config - sets up the fc_lport
109455 * @lp: ptr to the fc_lport
109456 * @shost: ptr to the parent scsi host
109457 *
109458 * Returns: 0 for success
109459 + *
109460 */
109461 static int fcoe_sw_lport_config(struct fc_lport *lp)
109462 {
109463 int i = 0;
109464
109465 - lp->link_up = 0;
109466 - lp->qfull = 0;
109467 + lp->link_status = 0;
109468 lp->max_retry_count = 3;
109469 lp->e_d_tov = 2 * 1000; /* FC-FS default */
109470 lp->r_a_tov = 2 * 2 * 1000;
109471 @@ -136,14 +136,16 @@
109472 return 0;
109473 }
109474
109475 -/**
109476 - * fcoe_sw_netdev_config() - Set up netdev for SW FCoE
109477 +/*
109478 + * fcoe_sw_netdev_config - sets up fcoe_softc for lport and network
109479 + * related properties
109480 * @lp : ptr to the fc_lport
109481 * @netdev : ptr to the associated netdevice struct
109482 *
109483 * Must be called after fcoe_sw_lport_config() as it will use lport mutex
109484 *
109485 * Returns : 0 for success
109486 + *
109487 */
109488 static int fcoe_sw_netdev_config(struct fc_lport *lp, struct net_device *netdev)
109489 {
109490 @@ -179,8 +181,9 @@
109491 if (fc_set_mfs(lp, mfs))
109492 return -EINVAL;
109493
109494 + lp->link_status = ~FC_PAUSE & ~FC_LINK_UP;
109495 if (!fcoe_link_ok(lp))
109496 - lp->link_up = 1;
109497 + lp->link_status |= FC_LINK_UP;
109498
109499 /* offload features support */
109500 if (fc->real_dev->features & NETIF_F_SG)
109501 @@ -188,7 +191,6 @@
109502
109503
109504 skb_queue_head_init(&fc->fcoe_pending_queue);
109505 - fc->fcoe_pending_queue_active = 0;
109506
109507 /* setup Source Mac Address */
109508 memcpy(fc->ctl_src_addr, fc->real_dev->dev_addr,
109509 @@ -222,15 +224,16 @@
109510 return 0;
109511 }
109512
109513 -/**
109514 - * fcoe_sw_shost_config() - Sets up fc_lport->host
109515 +/*
109516 + * fcoe_sw_shost_config - sets up fc_lport->host
109517 * @lp : ptr to the fc_lport
109518 * @shost : ptr to the associated scsi host
109519 * @dev : device associated to scsi host
109520 *
109521 - * Must be called after fcoe_sw_lport_config() and fcoe_sw_netdev_config()
109522 + * Must be called after fcoe_sw_lport_config) and fcoe_sw_netdev_config()
109523 *
109524 * Returns : 0 for success
109525 + *
109526 */
109527 static int fcoe_sw_shost_config(struct fc_lport *lp, struct Scsi_Host *shost,
109528 struct device *dev)
109529 @@ -258,8 +261,8 @@
109530 return 0;
109531 }
109532
109533 -/**
109534 - * fcoe_sw_em_config() - allocates em for this lport
109535 +/*
109536 + * fcoe_sw_em_config - allocates em for this lport
109537 * @lp: the port that em is to allocated for
109538 *
109539 * Returns : 0 on success
109540 @@ -276,8 +279,8 @@
109541 return 0;
109542 }
109543
109544 -/**
109545 - * fcoe_sw_destroy() - FCoE software HBA tear-down function
109546 +/*
109547 + * fcoe_sw_destroy - FCoE software HBA tear-down function
109548 * @netdev: ptr to the associated net_device
109549 *
109550 * Returns: 0 if link is OK for use by FCoE.
109551 @@ -298,7 +301,7 @@
109552 if (!lp)
109553 return -ENODEV;
109554
109555 - fc = lport_priv(lp);
109556 + fc = fcoe_softc(lp);
109557
109558 /* Logout of the fabric */
109559 fc_fabric_logoff(lp);
109560 @@ -350,8 +353,8 @@
109561 .frame_send = fcoe_xmit,
109562 };
109563
109564 -/**
109565 - * fcoe_sw_create() - this function creates the fcoe interface
109566 +/*
109567 + * fcoe_sw_create - this function creates the fcoe interface
109568 * @netdev: pointer the associated netdevice
109569 *
109570 * Creates fc_lport struct and scsi_host for lport, configures lport
109571 @@ -437,8 +440,8 @@
109572 return rc;
109573 }
109574
109575 -/**
109576 - * fcoe_sw_match() - The FCoE SW transport match function
109577 +/*
109578 + * fcoe_sw_match - the fcoe sw transport match function
109579 *
109580 * Returns : false always
109581 */
109582 @@ -458,8 +461,8 @@
109583 .device = 0xffff,
109584 };
109585
109586 -/**
109587 - * fcoe_sw_init() - Registers fcoe_sw_transport
109588 +/*
109589 + * fcoe_sw_init - registers fcoe_sw_transport
109590 *
109591 * Returns : 0 on success
109592 */
109593 @@ -468,22 +471,17 @@
109594 /* attach to scsi transport */
109595 scsi_transport_fcoe_sw =
109596 fc_attach_transport(&fcoe_sw_transport_function);
109597 -
109598 if (!scsi_transport_fcoe_sw) {
109599 printk(KERN_ERR "fcoe_sw_init:fc_attach_transport() failed\n");
109600 return -ENODEV;
109601 }
109602 -
109603 - mutex_init(&fcoe_sw_transport.devlock);
109604 - INIT_LIST_HEAD(&fcoe_sw_transport.devlist);
109605 -
109606 /* register sw transport */
109607 fcoe_transport_register(&fcoe_sw_transport);
109608 return 0;
109609 }
109610
109611 -/**
109612 - * fcoe_sw_exit() - Unregisters fcoe_sw_transport
109613 +/*
109614 + * fcoe_sw_exit - unregisters fcoe_sw_transport
109615 *
109616 * Returns : 0 on success
109617 */
109618 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/fcoe/fc_transport_fcoe.c linux-2.6.29-rc3.owrt/drivers/scsi/fcoe/fc_transport_fcoe.c
109619 --- linux-2.6.29.owrt/drivers/scsi/fcoe/fc_transport_fcoe.c 2009-05-10 22:04:39.000000000 +0200
109620 +++ linux-2.6.29-rc3.owrt/drivers/scsi/fcoe/fc_transport_fcoe.c 2009-05-10 23:48:29.000000000 +0200
109621 @@ -33,19 +33,19 @@
109622 static DEFINE_MUTEX(fcoe_transports_lock);
109623
109624 /**
109625 - * fcoe_transport_default() - Returns ptr to the default transport fcoe_sw
109626 - */
109627 + * fcoe_transport_default - returns ptr to the default transport fcoe_sw
109628 + **/
109629 struct fcoe_transport *fcoe_transport_default(void)
109630 {
109631 return &fcoe_sw_transport;
109632 }
109633
109634 /**
109635 - * fcoe_transport_to_pcidev() - get the pci dev from a netdev
109636 + * fcoe_transport_to_pcidev - get the pci dev from a netdev
109637 * @netdev: the netdev that pci dev will be retrived from
109638 *
109639 * Returns: NULL or the corrsponding pci_dev
109640 - */
109641 + **/
109642 struct pci_dev *fcoe_transport_pcidev(const struct net_device *netdev)
109643 {
109644 if (!netdev->dev.parent)
109645 @@ -54,17 +54,18 @@
109646 }
109647
109648 /**
109649 - * fcoe_transport_device_lookup() - Lookup a transport
109650 + * fcoe_transport_device_lookup - find out netdev is managed by the
109651 + * transport
109652 + * assign a transport to a device
109653 * @netdev: the netdev the transport to be attached to
109654 *
109655 * This will look for existing offload driver, if not found, it falls back to
109656 * the default sw hba (fcoe_sw) as its fcoe transport.
109657 *
109658 * Returns: 0 for success
109659 - */
109660 -static struct fcoe_transport_internal *
109661 -fcoe_transport_device_lookup(struct fcoe_transport *t,
109662 - struct net_device *netdev)
109663 + **/
109664 +static struct fcoe_transport_internal *fcoe_transport_device_lookup(
109665 + struct fcoe_transport *t, struct net_device *netdev)
109666 {
109667 struct fcoe_transport_internal *ti;
109668
109669 @@ -80,14 +81,14 @@
109670 return NULL;
109671 }
109672 /**
109673 - * fcoe_transport_device_add() - Assign a transport to a device
109674 + * fcoe_transport_device_add - assign a transport to a device
109675 * @netdev: the netdev the transport to be attached to
109676 *
109677 * This will look for existing offload driver, if not found, it falls back to
109678 * the default sw hba (fcoe_sw) as its fcoe transport.
109679 *
109680 * Returns: 0 for success
109681 - */
109682 + **/
109683 static int fcoe_transport_device_add(struct fcoe_transport *t,
109684 struct net_device *netdev)
109685 {
109686 @@ -122,14 +123,14 @@
109687 }
109688
109689 /**
109690 - * fcoe_transport_device_remove() - Remove a device from its transport
109691 + * fcoe_transport_device_remove - remove a device from its transport
109692 * @netdev: the netdev the transport to be attached to
109693 *
109694 - * This removes the device from the transport so the given transport will
109695 + * this removes the device from the transport so the given transport will
109696 * not manage this device any more
109697 *
109698 * Returns: 0 for success
109699 - */
109700 + **/
109701 static int fcoe_transport_device_remove(struct fcoe_transport *t,
109702 struct net_device *netdev)
109703 {
109704 @@ -154,13 +155,13 @@
109705 }
109706
109707 /**
109708 - * fcoe_transport_device_remove_all() - Remove all from transport devlist
109709 + * fcoe_transport_device_remove_all - remove all from transport devlist
109710 *
109711 - * This removes the device from the transport so the given transport will
109712 + * this removes the device from the transport so the given transport will
109713 * not manage this device any more
109714 *
109715 * Returns: 0 for success
109716 - */
109717 + **/
109718 static void fcoe_transport_device_remove_all(struct fcoe_transport *t)
109719 {
109720 struct fcoe_transport_internal *ti, *tmp;
109721 @@ -174,18 +175,18 @@
109722 }
109723
109724 /**
109725 - * fcoe_transport_match() - Use the bus device match function to match the hw
109726 - * @t: The fcoe transport to check
109727 - * @netdev: The netdev to match against
109728 + * fcoe_transport_match - use the bus device match function to match the hw
109729 + * @t: the fcoe transport
109730 + * @netdev:
109731 *
109732 - * This function is used to check if the given transport wants to manage the
109733 + * This function is used to check if the givne transport wants to manage the
109734 * input netdev. if the transports implements the match function, it will be
109735 * called, o.w. we just compare the pci vendor and device id.
109736 *
109737 * Returns: true for match up
109738 - */
109739 + **/
109740 static bool fcoe_transport_match(struct fcoe_transport *t,
109741 - struct net_device *netdev)
109742 + struct net_device *netdev)
109743 {
109744 /* match transport by vendor and device id */
109745 struct pci_dev *pci;
109746 @@ -209,17 +210,17 @@
109747 }
109748
109749 /**
109750 - * fcoe_transport_lookup() - Check if the transport is already registered
109751 + * fcoe_transport_lookup - check if the transport is already registered
109752 * @t: the transport to be looked up
109753 *
109754 * This compares the parent device (pci) vendor and device id
109755 *
109756 * Returns: NULL if not found
109757 *
109758 - * TODO: return default sw transport if no other transport is found
109759 - */
109760 -static struct fcoe_transport *
109761 -fcoe_transport_lookup(struct net_device *netdev)
109762 + * TODO - return default sw transport if no other transport is found
109763 + **/
109764 +static struct fcoe_transport *fcoe_transport_lookup(
109765 + struct net_device *netdev)
109766 {
109767 struct fcoe_transport *t;
109768
109769 @@ -238,11 +239,11 @@
109770 }
109771
109772 /**
109773 - * fcoe_transport_register() - Adds a fcoe transport to the fcoe transports list
109774 + * fcoe_transport_register - adds a fcoe transport to the fcoe transports list
109775 * @t: ptr to the fcoe transport to be added
109776 *
109777 * Returns: 0 for success
109778 - */
109779 + **/
109780 int fcoe_transport_register(struct fcoe_transport *t)
109781 {
109782 struct fcoe_transport *tt;
109783 @@ -258,6 +259,9 @@
109784 list_add_tail(&t->list, &fcoe_transports);
109785 mutex_unlock(&fcoe_transports_lock);
109786
109787 + mutex_init(&t->devlock);
109788 + INIT_LIST_HEAD(&t->devlist);
109789 +
109790 printk(KERN_DEBUG "fcoe_transport_register:%s\n", t->name);
109791
109792 return 0;
109793 @@ -265,11 +269,11 @@
109794 EXPORT_SYMBOL_GPL(fcoe_transport_register);
109795
109796 /**
109797 - * fcoe_transport_unregister() - Remove the tranport fro the fcoe transports list
109798 + * fcoe_transport_unregister - remove the tranport fro the fcoe transports list
109799 * @t: ptr to the fcoe transport to be removed
109800 *
109801 * Returns: 0 for success
109802 - */
109803 + **/
109804 int fcoe_transport_unregister(struct fcoe_transport *t)
109805 {
109806 struct fcoe_transport *tt, *tmp;
109807 @@ -290,8 +294,8 @@
109808 }
109809 EXPORT_SYMBOL_GPL(fcoe_transport_unregister);
109810
109811 -/**
109812 - * fcoe_load_transport_driver() - Load an offload driver by alias name
109813 +/*
109814 + * fcoe_load_transport_driver - load an offload driver by alias name
109815 * @netdev: the target net device
109816 *
109817 * Requests for an offload driver module as the fcoe transport, if fails, it
109818 @@ -303,7 +307,7 @@
109819 * 3. pure hw fcoe hba may not have netdev
109820 *
109821 * Returns: 0 for success
109822 - */
109823 + **/
109824 int fcoe_load_transport_driver(struct net_device *netdev)
109825 {
109826 struct pci_dev *pci;
109827 @@ -331,14 +335,14 @@
109828 EXPORT_SYMBOL_GPL(fcoe_load_transport_driver);
109829
109830 /**
109831 - * fcoe_transport_attach() - Load transport to fcoe
109832 + * fcoe_transport_attach - load transport to fcoe
109833 * @netdev: the netdev the transport to be attached to
109834 *
109835 * This will look for existing offload driver, if not found, it falls back to
109836 * the default sw hba (fcoe_sw) as its fcoe transport.
109837 *
109838 * Returns: 0 for success
109839 - */
109840 + **/
109841 int fcoe_transport_attach(struct net_device *netdev)
109842 {
109843 struct fcoe_transport *t;
109844 @@ -369,11 +373,11 @@
109845 EXPORT_SYMBOL_GPL(fcoe_transport_attach);
109846
109847 /**
109848 - * fcoe_transport_release() - Unload transport from fcoe
109849 + * fcoe_transport_release - unload transport from fcoe
109850 * @netdev: the net device on which fcoe is to be released
109851 *
109852 * Returns: 0 for success
109853 - */
109854 + **/
109855 int fcoe_transport_release(struct net_device *netdev)
109856 {
109857 struct fcoe_transport *t;
109858 @@ -406,12 +410,12 @@
109859 EXPORT_SYMBOL_GPL(fcoe_transport_release);
109860
109861 /**
109862 - * fcoe_transport_init() - Initializes fcoe transport layer
109863 + * fcoe_transport_init - initializes fcoe transport layer
109864 *
109865 * This prepares for the fcoe transport layer
109866 *
109867 * Returns: none
109868 - */
109869 + **/
109870 int __init fcoe_transport_init(void)
109871 {
109872 INIT_LIST_HEAD(&fcoe_transports);
109873 @@ -420,13 +424,12 @@
109874 }
109875
109876 /**
109877 - * fcoe_transport_exit() - Cleans up the fcoe transport layer
109878 - *
109879 + * fcoe_transport_exit - cleans up the fcoe transport layer
109880 * This cleans up the fcoe transport layer. removing any transport on the list,
109881 * note that the transport destroy func is not called here.
109882 *
109883 * Returns: none
109884 - */
109885 + **/
109886 int __exit fcoe_transport_exit(void)
109887 {
109888 struct fcoe_transport *t, *tmp;
109889 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/fcoe/libfcoe.c linux-2.6.29-rc3.owrt/drivers/scsi/fcoe/libfcoe.c
109890 --- linux-2.6.29.owrt/drivers/scsi/fcoe/libfcoe.c 2009-05-10 22:04:39.000000000 +0200
109891 +++ linux-2.6.29-rc3.owrt/drivers/scsi/fcoe/libfcoe.c 2009-05-10 23:48:29.000000000 +0200
109892 @@ -49,7 +49,6 @@
109893 static int debug_fcoe;
109894
109895 #define FCOE_MAX_QUEUE_DEPTH 256
109896 -#define FCOE_LOW_QUEUE_DEPTH 32
109897
109898 /* destination address mode */
109899 #define FCOE_GW_ADDR_MODE 0x00
109900 @@ -70,6 +69,8 @@
109901
109902 /* Function Prototyes */
109903 static int fcoe_check_wait_queue(struct fc_lport *);
109904 +static void fcoe_insert_wait_queue_head(struct fc_lport *, struct sk_buff *);
109905 +static void fcoe_insert_wait_queue(struct fc_lport *, struct sk_buff *);
109906 static void fcoe_recv_flogi(struct fcoe_softc *, struct fc_frame *, u8 *);
109907 #ifdef CONFIG_HOTPLUG_CPU
109908 static int fcoe_cpu_callback(struct notifier_block *, ulong, void *);
109909 @@ -90,13 +91,13 @@
109910 };
109911
109912 /**
109913 - * fcoe_create_percpu_data() - creates the associated cpu data
109914 + * fcoe_create_percpu_data - creates the associated cpu data
109915 * @cpu: index for the cpu where fcoe cpu data will be created
109916 *
109917 * create percpu stats block, from cpu add notifier
109918 *
109919 * Returns: none
109920 - */
109921 + **/
109922 static void fcoe_create_percpu_data(int cpu)
109923 {
109924 struct fc_lport *lp;
109925 @@ -114,13 +115,13 @@
109926 }
109927
109928 /**
109929 - * fcoe_destroy_percpu_data() - destroys the associated cpu data
109930 + * fcoe_destroy_percpu_data - destroys the associated cpu data
109931 * @cpu: index for the cpu where fcoe cpu data will destroyed
109932 *
109933 * destroy percpu stats block called by cpu add/remove notifier
109934 *
109935 * Retuns: none
109936 - */
109937 + **/
109938 static void fcoe_destroy_percpu_data(int cpu)
109939 {
109940 struct fc_lport *lp;
109941 @@ -136,7 +137,7 @@
109942 }
109943
109944 /**
109945 - * fcoe_cpu_callback() - fcoe cpu hotplug event callback
109946 + * fcoe_cpu_callback - fcoe cpu hotplug event callback
109947 * @nfb: callback data block
109948 * @action: event triggering the callback
109949 * @hcpu: index for the cpu of this event
109950 @@ -144,7 +145,7 @@
109951 * this creates or destroys per cpu data for fcoe
109952 *
109953 * Returns NOTIFY_OK always.
109954 - */
109955 + **/
109956 static int fcoe_cpu_callback(struct notifier_block *nfb, unsigned long action,
109957 void *hcpu)
109958 {
109959 @@ -165,7 +166,7 @@
109960 #endif /* CONFIG_HOTPLUG_CPU */
109961
109962 /**
109963 - * fcoe_rcv() - this is the fcoe receive function called by NET_RX_SOFTIRQ
109964 + * fcoe_rcv - this is the fcoe receive function called by NET_RX_SOFTIRQ
109965 * @skb: the receive skb
109966 * @dev: associated net device
109967 * @ptype: context
109968 @@ -174,7 +175,7 @@
109969 * this function will receive the packet and build fc frame and pass it up
109970 *
109971 * Returns: 0 for success
109972 - */
109973 + **/
109974 int fcoe_rcv(struct sk_buff *skb, struct net_device *dev,
109975 struct packet_type *ptype, struct net_device *olddev)
109976 {
109977 @@ -264,11 +265,11 @@
109978 EXPORT_SYMBOL_GPL(fcoe_rcv);
109979
109980 /**
109981 - * fcoe_start_io() - pass to netdev to start xmit for fcoe
109982 + * fcoe_start_io - pass to netdev to start xmit for fcoe
109983 * @skb: the skb to be xmitted
109984 *
109985 * Returns: 0 for success
109986 - */
109987 + **/
109988 static inline int fcoe_start_io(struct sk_buff *skb)
109989 {
109990 int rc;
109991 @@ -282,12 +283,12 @@
109992 }
109993
109994 /**
109995 - * fcoe_get_paged_crc_eof() - in case we need alloc a page for crc_eof
109996 + * fcoe_get_paged_crc_eof - in case we need alloc a page for crc_eof
109997 * @skb: the skb to be xmitted
109998 * @tlen: total len
109999 *
110000 * Returns: 0 for success
110001 - */
110002 + **/
110003 static int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen)
110004 {
110005 struct fcoe_percpu_s *fps;
110006 @@ -325,12 +326,13 @@
110007 }
110008
110009 /**
110010 - * fcoe_fc_crc() - calculates FC CRC in this fcoe skb
110011 + * fcoe_fc_crc - calculates FC CRC in this fcoe skb
110012 * @fp: the fc_frame containg data to be checksummed
110013 *
110014 * This uses crc32() to calculate the crc for fc frame
110015 * Return : 32 bit crc
110016 - */
110017 + *
110018 + **/
110019 u32 fcoe_fc_crc(struct fc_frame *fp)
110020 {
110021 struct sk_buff *skb = fp_skb(fp);
110022 @@ -361,12 +363,13 @@
110023 EXPORT_SYMBOL_GPL(fcoe_fc_crc);
110024
110025 /**
110026 - * fcoe_xmit() - FCoE frame transmit function
110027 + * fcoe_xmit - FCoE frame transmit function
110028 * @lp: the associated local port
110029 * @fp: the fc_frame to be transmitted
110030 *
110031 * Return : 0 for success
110032 - */
110033 + *
110034 + **/
110035 int fcoe_xmit(struct fc_lport *lp, struct fc_frame *fp)
110036 {
110037 int wlen, rc = 0;
110038 @@ -386,7 +389,7 @@
110039
110040 WARN_ON((fr_len(fp) % sizeof(u32)) != 0);
110041
110042 - fc = lport_priv(lp);
110043 + fc = fcoe_softc(lp);
110044 /*
110045 * if it is a flogi then we need to learn gw-addr
110046 * and my own fcid
110047 @@ -436,7 +439,7 @@
110048 if (skb_is_nonlinear(skb)) {
110049 skb_frag_t *frag;
110050 if (fcoe_get_paged_crc_eof(skb, tlen)) {
110051 - kfree_skb(skb);
110052 + kfree(skb);
110053 return -ENOMEM;
110054 }
110055 frag = &skb_shinfo(skb)->frags[skb_shinfo(skb)->nr_frags - 1];
110056 @@ -499,22 +502,21 @@
110057 rc = fcoe_start_io(skb);
110058
110059 if (rc) {
110060 - spin_lock_bh(&fc->fcoe_pending_queue.lock);
110061 - __skb_queue_tail(&fc->fcoe_pending_queue, skb);
110062 - spin_unlock_bh(&fc->fcoe_pending_queue.lock);
110063 + fcoe_insert_wait_queue(lp, skb);
110064 if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH)
110065 - lp->qfull = 1;
110066 + fc_pause(lp);
110067 }
110068
110069 return 0;
110070 }
110071 EXPORT_SYMBOL_GPL(fcoe_xmit);
110072
110073 -/**
110074 - * fcoe_percpu_receive_thread() - recv thread per cpu
110075 +/*
110076 + * fcoe_percpu_receive_thread - recv thread per cpu
110077 * @arg: ptr to the fcoe per cpu struct
110078 *
110079 * Return: 0 for success
110080 + *
110081 */
110082 int fcoe_percpu_receive_thread(void *arg)
110083 {
110084 @@ -531,7 +533,7 @@
110085 struct fcoe_softc *fc;
110086 struct fcoe_hdr *hp;
110087
110088 - set_user_nice(current, -20);
110089 + set_user_nice(current, 19);
110090
110091 while (!kthread_should_stop()) {
110092
110093 @@ -656,7 +658,7 @@
110094 }
110095
110096 /**
110097 - * fcoe_recv_flogi() - flogi receive function
110098 + * fcoe_recv_flogi - flogi receive function
110099 * @fc: associated fcoe_softc
110100 * @fp: the recieved frame
110101 * @sa: the source address of this flogi
110102 @@ -665,7 +667,7 @@
110103 * mac address for the initiator, eitehr OUI based or GW based.
110104 *
110105 * Returns: none
110106 - */
110107 + **/
110108 static void fcoe_recv_flogi(struct fcoe_softc *fc, struct fc_frame *fp, u8 *sa)
110109 {
110110 struct fc_frame_header *fh;
110111 @@ -713,23 +715,32 @@
110112 }
110113
110114 /**
110115 - * fcoe_watchdog() - fcoe timer callback
110116 + * fcoe_watchdog - fcoe timer callback
110117 * @vp:
110118 *
110119 - * This checks the pending queue length for fcoe and set lport qfull
110120 + * This checks the pending queue length for fcoe and put fcoe to be paused state
110121 * if the FCOE_MAX_QUEUE_DEPTH is reached. This is done for all fc_lport on the
110122 * fcoe_hostlist.
110123 *
110124 * Returns: 0 for success
110125 - */
110126 + **/
110127 void fcoe_watchdog(ulong vp)
110128 {
110129 + struct fc_lport *lp;
110130 struct fcoe_softc *fc;
110131 + int paused = 0;
110132
110133 read_lock(&fcoe_hostlist_lock);
110134 list_for_each_entry(fc, &fcoe_hostlist, list) {
110135 - if (fc->lp)
110136 - fcoe_check_wait_queue(fc->lp);
110137 + lp = fc->lp;
110138 + if (lp) {
110139 + if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH)
110140 + paused = 1;
110141 + if (fcoe_check_wait_queue(lp) < FCOE_MAX_QUEUE_DEPTH) {
110142 + if (paused)
110143 + fc_unpause(lp);
110144 + }
110145 + }
110146 }
110147 read_unlock(&fcoe_hostlist_lock);
110148
110149 @@ -739,64 +750,96 @@
110150
110151
110152 /**
110153 - * fcoe_check_wait_queue() - put the skb into fcoe pending xmit queue
110154 + * fcoe_check_wait_queue - put the skb into fcoe pending xmit queue
110155 * @lp: the fc_port for this skb
110156 * @skb: the associated skb to be xmitted
110157 *
110158 * This empties the wait_queue, dequeue the head of the wait_queue queue
110159 * and calls fcoe_start_io() for each packet, if all skb have been
110160 - * transmitted, return qlen or -1 if a error occurs, then restore
110161 - * wait_queue and try again later.
110162 + * transmitted, return 0 if a error occurs, then restore wait_queue and
110163 + * try again later.
110164 *
110165 * The wait_queue is used when the skb transmit fails. skb will go
110166 * in the wait_queue which will be emptied by the time function OR
110167 * by the next skb transmit.
110168 *
110169 * Returns: 0 for success
110170 - */
110171 + **/
110172 static int fcoe_check_wait_queue(struct fc_lport *lp)
110173 {
110174 - struct fcoe_softc *fc = lport_priv(lp);
110175 + int rc, unpause = 0;
110176 + int paused = 0;
110177 struct sk_buff *skb;
110178 - int rc = -1;
110179 + struct fcoe_softc *fc;
110180
110181 + fc = fcoe_softc(lp);
110182 spin_lock_bh(&fc->fcoe_pending_queue.lock);
110183 - if (fc->fcoe_pending_queue_active)
110184 - goto out;
110185 - fc->fcoe_pending_queue_active = 1;
110186 -
110187 - while (fc->fcoe_pending_queue.qlen) {
110188 - /* keep qlen > 0 until fcoe_start_io succeeds */
110189 - fc->fcoe_pending_queue.qlen++;
110190 - skb = __skb_dequeue(&fc->fcoe_pending_queue);
110191 -
110192 - spin_unlock_bh(&fc->fcoe_pending_queue.lock);
110193 - rc = fcoe_start_io(skb);
110194 - spin_lock_bh(&fc->fcoe_pending_queue.lock);
110195
110196 - if (rc) {
110197 - __skb_queue_head(&fc->fcoe_pending_queue, skb);
110198 - /* undo temporary increment above */
110199 - fc->fcoe_pending_queue.qlen--;
110200 - break;
110201 + /*
110202 + * is this interface paused?
110203 + */
110204 + if (fc->fcoe_pending_queue.qlen > FCOE_MAX_QUEUE_DEPTH)
110205 + paused = 1;
110206 + if (fc->fcoe_pending_queue.qlen) {
110207 + while ((skb = __skb_dequeue(&fc->fcoe_pending_queue)) != NULL) {
110208 + spin_unlock_bh(&fc->fcoe_pending_queue.lock);
110209 + rc = fcoe_start_io(skb);
110210 + if (rc) {
110211 + fcoe_insert_wait_queue_head(lp, skb);
110212 + return rc;
110213 + }
110214 + spin_lock_bh(&fc->fcoe_pending_queue.lock);
110215 }
110216 - /* undo temporary increment above */
110217 - fc->fcoe_pending_queue.qlen--;
110218 + if (fc->fcoe_pending_queue.qlen < FCOE_MAX_QUEUE_DEPTH)
110219 + unpause = 1;
110220 }
110221 + spin_unlock_bh(&fc->fcoe_pending_queue.lock);
110222 + if ((unpause) && (paused))
110223 + fc_unpause(lp);
110224 + return fc->fcoe_pending_queue.qlen;
110225 +}
110226
110227 - if (fc->fcoe_pending_queue.qlen < FCOE_LOW_QUEUE_DEPTH)
110228 - lp->qfull = 0;
110229 - fc->fcoe_pending_queue_active = 0;
110230 - rc = fc->fcoe_pending_queue.qlen;
110231 -out:
110232 +/**
110233 + * fcoe_insert_wait_queue_head - puts skb to fcoe pending queue head
110234 + * @lp: the fc_port for this skb
110235 + * @skb: the associated skb to be xmitted
110236 + *
110237 + * Returns: none
110238 + **/
110239 +static void fcoe_insert_wait_queue_head(struct fc_lport *lp,
110240 + struct sk_buff *skb)
110241 +{
110242 + struct fcoe_softc *fc;
110243 +
110244 + fc = fcoe_softc(lp);
110245 + spin_lock_bh(&fc->fcoe_pending_queue.lock);
110246 + __skb_queue_head(&fc->fcoe_pending_queue, skb);
110247 spin_unlock_bh(&fc->fcoe_pending_queue.lock);
110248 - return rc;
110249 }
110250
110251 /**
110252 - * fcoe_dev_setup() - setup link change notification interface
110253 - */
110254 -static void fcoe_dev_setup()
110255 + * fcoe_insert_wait_queue - put the skb into fcoe pending queue tail
110256 + * @lp: the fc_port for this skb
110257 + * @skb: the associated skb to be xmitted
110258 + *
110259 + * Returns: none
110260 + **/
110261 +static void fcoe_insert_wait_queue(struct fc_lport *lp,
110262 + struct sk_buff *skb)
110263 +{
110264 + struct fcoe_softc *fc;
110265 +
110266 + fc = fcoe_softc(lp);
110267 + spin_lock_bh(&fc->fcoe_pending_queue.lock);
110268 + __skb_queue_tail(&fc->fcoe_pending_queue, skb);
110269 + spin_unlock_bh(&fc->fcoe_pending_queue.lock);
110270 +}
110271 +
110272 +/**
110273 + * fcoe_dev_setup - setup link change notification interface
110274 + *
110275 + **/
110276 +static void fcoe_dev_setup(void)
110277 {
110278 /*
110279 * here setup a interface specific wd time to
110280 @@ -806,15 +849,15 @@
110281 }
110282
110283 /**
110284 - * fcoe_dev_setup() - cleanup link change notification interface
110285 - */
110286 + * fcoe_dev_setup - cleanup link change notification interface
110287 + **/
110288 static void fcoe_dev_cleanup(void)
110289 {
110290 unregister_netdevice_notifier(&fcoe_notifier);
110291 }
110292
110293 /**
110294 - * fcoe_device_notification() - netdev event notification callback
110295 + * fcoe_device_notification - netdev event notification callback
110296 * @notifier: context of the notification
110297 * @event: type of event
110298 * @ptr: fixed array for output parsed ifname
110299 @@ -822,7 +865,7 @@
110300 * This function is called by the ethernet driver in case of link change event
110301 *
110302 * Returns: 0 for success
110303 - */
110304 + **/
110305 static int fcoe_device_notification(struct notifier_block *notifier,
110306 ulong event, void *ptr)
110307 {
110308 @@ -830,7 +873,7 @@
110309 struct net_device *real_dev = ptr;
110310 struct fcoe_softc *fc;
110311 struct fcoe_dev_stats *stats;
110312 - u32 new_link_up;
110313 + u16 new_status;
110314 u32 mfs;
110315 int rc = NOTIFY_OK;
110316
110317 @@ -847,15 +890,17 @@
110318 goto out;
110319 }
110320
110321 - new_link_up = lp->link_up;
110322 + new_status = lp->link_status;
110323 switch (event) {
110324 case NETDEV_DOWN:
110325 case NETDEV_GOING_DOWN:
110326 - new_link_up = 0;
110327 + new_status &= ~FC_LINK_UP;
110328 break;
110329 case NETDEV_UP:
110330 case NETDEV_CHANGE:
110331 - new_link_up = !fcoe_link_ok(lp);
110332 + new_status &= ~FC_LINK_UP;
110333 + if (!fcoe_link_ok(lp))
110334 + new_status |= FC_LINK_UP;
110335 break;
110336 case NETDEV_CHANGEMTU:
110337 mfs = fc->real_dev->mtu -
110338 @@ -863,15 +908,17 @@
110339 sizeof(struct fcoe_crc_eof));
110340 if (mfs >= FC_MIN_MAX_FRAME)
110341 fc_set_mfs(lp, mfs);
110342 - new_link_up = !fcoe_link_ok(lp);
110343 + new_status &= ~FC_LINK_UP;
110344 + if (!fcoe_link_ok(lp))
110345 + new_status |= FC_LINK_UP;
110346 break;
110347 case NETDEV_REGISTER:
110348 break;
110349 default:
110350 FC_DBG("unknown event %ld call", event);
110351 }
110352 - if (lp->link_up != new_link_up) {
110353 - if (new_link_up)
110354 + if (lp->link_status != new_status) {
110355 + if ((new_status & FC_LINK_UP) == FC_LINK_UP)
110356 fc_linkup(lp);
110357 else {
110358 stats = lp->dev_stats[smp_processor_id()];
110359 @@ -886,12 +933,12 @@
110360 }
110361
110362 /**
110363 - * fcoe_if_to_netdev() - parse a name buffer to get netdev
110364 + * fcoe_if_to_netdev - parse a name buffer to get netdev
110365 * @ifname: fixed array for output parsed ifname
110366 * @buffer: incoming buffer to be copied
110367 *
110368 * Returns: NULL or ptr to netdeive
110369 - */
110370 + **/
110371 static struct net_device *fcoe_if_to_netdev(const char *buffer)
110372 {
110373 char *cp;
110374 @@ -908,13 +955,13 @@
110375 }
110376
110377 /**
110378 - * fcoe_netdev_to_module_owner() - finds out the nic drive moddule of the netdev
110379 + * fcoe_netdev_to_module_owner - finds out the nic drive moddule of the netdev
110380 * @netdev: the target netdev
110381 *
110382 * Returns: ptr to the struct module, NULL for failure
110383 - */
110384 -static struct module *
110385 -fcoe_netdev_to_module_owner(const struct net_device *netdev)
110386 + **/
110387 +static struct module *fcoe_netdev_to_module_owner(
110388 + const struct net_device *netdev)
110389 {
110390 struct device *dev;
110391
110392 @@ -932,14 +979,12 @@
110393 }
110394
110395 /**
110396 - * fcoe_ethdrv_get() - Hold the Ethernet driver
110397 - * @netdev: the target netdev
110398 - *
110399 - * Holds the Ethernet driver module by try_module_get() for
110400 + * fcoe_ethdrv_get - holds the nic driver module by try_module_get() for
110401 * the corresponding netdev.
110402 + * @netdev: the target netdev
110403 *
110404 * Returns: 0 for succsss
110405 - */
110406 + **/
110407 static int fcoe_ethdrv_get(const struct net_device *netdev)
110408 {
110409 struct module *owner;
110410 @@ -954,14 +999,12 @@
110411 }
110412
110413 /**
110414 - * fcoe_ethdrv_put() - Release the Ethernet driver
110415 - * @netdev: the target netdev
110416 - *
110417 - * Releases the Ethernet driver module by module_put for
110418 + * fcoe_ethdrv_get - releases the nic driver module by module_put for
110419 * the corresponding netdev.
110420 + * @netdev: the target netdev
110421 *
110422 * Returns: 0 for succsss
110423 - */
110424 + **/
110425 static int fcoe_ethdrv_put(const struct net_device *netdev)
110426 {
110427 struct module *owner;
110428 @@ -977,12 +1020,12 @@
110429 }
110430
110431 /**
110432 - * fcoe_destroy() - handles the destroy from sysfs
110433 + * fcoe_destroy- handles the destroy from sysfs
110434 * @buffer: expcted to be a eth if name
110435 * @kp: associated kernel param
110436 *
110437 * Returns: 0 for success
110438 - */
110439 + **/
110440 static int fcoe_destroy(const char *buffer, struct kernel_param *kp)
110441 {
110442 int rc;
110443 @@ -1015,12 +1058,12 @@
110444 }
110445
110446 /**
110447 - * fcoe_create() - Handles the create call from sysfs
110448 + * fcoe_create - handles the create call from sysfs
110449 * @buffer: expcted to be a eth if name
110450 * @kp: associated kernel param
110451 *
110452 * Returns: 0 for success
110453 - */
110454 + **/
110455 static int fcoe_create(const char *buffer, struct kernel_param *kp)
110456 {
110457 int rc;
110458 @@ -1061,8 +1104,8 @@
110459 __MODULE_PARM_TYPE(destroy, "string");
110460 MODULE_PARM_DESC(destroy, "Destroy fcoe port");
110461
110462 -/**
110463 - * fcoe_link_ok() - Check if link is ok for the fc_lport
110464 +/*
110465 + * fcoe_link_ok - check if link is ok for the fc_lport
110466 * @lp: ptr to the fc_lport
110467 *
110468 * Any permanently-disqualifying conditions have been previously checked.
110469 @@ -1077,7 +1120,7 @@
110470 */
110471 int fcoe_link_ok(struct fc_lport *lp)
110472 {
110473 - struct fcoe_softc *fc = lport_priv(lp);
110474 + struct fcoe_softc *fc = fcoe_softc(lp);
110475 struct net_device *dev = fc->real_dev;
110476 struct ethtool_cmd ecmd = { ETHTOOL_GSET };
110477 int rc = 0;
110478 @@ -1106,8 +1149,9 @@
110479 }
110480 EXPORT_SYMBOL_GPL(fcoe_link_ok);
110481
110482 -/**
110483 - * fcoe_percpu_clean() - Clear the pending skbs for an lport
110484 +/*
110485 + * fcoe_percpu_clean - frees skb of the corresponding lport from the per
110486 + * cpu queue.
110487 * @lp: the fc_lport
110488 */
110489 void fcoe_percpu_clean(struct fc_lport *lp)
110490 @@ -1141,11 +1185,11 @@
110491 EXPORT_SYMBOL_GPL(fcoe_percpu_clean);
110492
110493 /**
110494 - * fcoe_clean_pending_queue() - Dequeue a skb and free it
110495 + * fcoe_clean_pending_queue - dequeue skb and free it
110496 * @lp: the corresponding fc_lport
110497 *
110498 * Returns: none
110499 - */
110500 + **/
110501 void fcoe_clean_pending_queue(struct fc_lport *lp)
110502 {
110503 struct fcoe_softc *fc = lport_priv(lp);
110504 @@ -1162,21 +1206,21 @@
110505 EXPORT_SYMBOL_GPL(fcoe_clean_pending_queue);
110506
110507 /**
110508 - * libfc_host_alloc() - Allocate a Scsi_Host with room for the fc_lport
110509 + * libfc_host_alloc - allocate a Scsi_Host with room for the fc_lport
110510 * @sht: ptr to the scsi host templ
110511 * @priv_size: size of private data after fc_lport
110512 *
110513 * Returns: ptr to Scsi_Host
110514 - * TODO: to libfc?
110515 + * TODO - to libfc?
110516 */
110517 -static inline struct Scsi_Host *
110518 -libfc_host_alloc(struct scsi_host_template *sht, int priv_size)
110519 +static inline struct Scsi_Host *libfc_host_alloc(
110520 + struct scsi_host_template *sht, int priv_size)
110521 {
110522 return scsi_host_alloc(sht, sizeof(struct fc_lport) + priv_size);
110523 }
110524
110525 /**
110526 - * fcoe_host_alloc() - Allocate a Scsi_Host with room for the fcoe_softc
110527 + * fcoe_host_alloc - allocate a Scsi_Host with room for the fcoe_softc
110528 * @sht: ptr to the scsi host templ
110529 * @priv_size: size of private data after fc_lport
110530 *
110531 @@ -1188,8 +1232,8 @@
110532 }
110533 EXPORT_SYMBOL_GPL(fcoe_host_alloc);
110534
110535 -/**
110536 - * fcoe_reset() - Resets the fcoe
110537 +/*
110538 + * fcoe_reset - resets the fcoe
110539 * @shost: shost the reset is from
110540 *
110541 * Returns: always 0
110542 @@ -1202,8 +1246,8 @@
110543 }
110544 EXPORT_SYMBOL_GPL(fcoe_reset);
110545
110546 -/**
110547 - * fcoe_wwn_from_mac() - Converts 48-bit IEEE MAC address to 64-bit FC WWN.
110548 +/*
110549 + * fcoe_wwn_from_mac - converts 48-bit IEEE MAC address to 64-bit FC WWN.
110550 * @mac: mac address
110551 * @scheme: check port
110552 * @port: port indicator for converting
110553 @@ -1242,15 +1286,14 @@
110554 return wwn;
110555 }
110556 EXPORT_SYMBOL_GPL(fcoe_wwn_from_mac);
110557 -
110558 -/**
110559 - * fcoe_hostlist_lookup_softc() - find the corresponding lport by a given device
110560 +/*
110561 + * fcoe_hostlist_lookup_softc - find the corresponding lport by a given device
110562 * @device: this is currently ptr to net_device
110563 *
110564 * Returns: NULL or the located fcoe_softc
110565 */
110566 -static struct fcoe_softc *
110567 -fcoe_hostlist_lookup_softc(const struct net_device *dev)
110568 +static struct fcoe_softc *fcoe_hostlist_lookup_softc(
110569 + const struct net_device *dev)
110570 {
110571 struct fcoe_softc *fc;
110572
110573 @@ -1265,8 +1308,8 @@
110574 return NULL;
110575 }
110576
110577 -/**
110578 - * fcoe_hostlist_lookup() - Find the corresponding lport by netdev
110579 +/*
110580 + * fcoe_hostlist_lookup - find the corresponding lport by netdev
110581 * @netdev: ptr to net_device
110582 *
110583 * Returns: 0 for success
110584 @@ -1281,8 +1324,8 @@
110585 }
110586 EXPORT_SYMBOL_GPL(fcoe_hostlist_lookup);
110587
110588 -/**
110589 - * fcoe_hostlist_add() - Add a lport to lports list
110590 +/*
110591 + * fcoe_hostlist_add - add a lport to lports list
110592 * @lp: ptr to the fc_lport to badded
110593 *
110594 * Returns: 0 for success
110595 @@ -1293,7 +1336,7 @@
110596
110597 fc = fcoe_hostlist_lookup_softc(fcoe_netdev(lp));
110598 if (!fc) {
110599 - fc = lport_priv(lp);
110600 + fc = fcoe_softc(lp);
110601 write_lock_bh(&fcoe_hostlist_lock);
110602 list_add_tail(&fc->list, &fcoe_hostlist);
110603 write_unlock_bh(&fcoe_hostlist_lock);
110604 @@ -1302,8 +1345,8 @@
110605 }
110606 EXPORT_SYMBOL_GPL(fcoe_hostlist_add);
110607
110608 -/**
110609 - * fcoe_hostlist_remove() - remove a lport from lports list
110610 +/*
110611 + * fcoe_hostlist_remove - remove a lport from lports list
110612 * @lp: ptr to the fc_lport to badded
110613 *
110614 * Returns: 0 for success
110615 @@ -1323,12 +1366,12 @@
110616 EXPORT_SYMBOL_GPL(fcoe_hostlist_remove);
110617
110618 /**
110619 - * fcoe_libfc_config() - sets up libfc related properties for lport
110620 + * fcoe_libfc_config - sets up libfc related properties for lport
110621 * @lp: ptr to the fc_lport
110622 * @tt: libfc function template
110623 *
110624 * Returns : 0 for success
110625 - */
110626 + **/
110627 int fcoe_libfc_config(struct fc_lport *lp, struct libfc_function_template *tt)
110628 {
110629 /* Set the function pointers set by the LLDD */
110630 @@ -1346,14 +1389,14 @@
110631 EXPORT_SYMBOL_GPL(fcoe_libfc_config);
110632
110633 /**
110634 - * fcoe_init() - fcoe module loading initialization
110635 + * fcoe_init - fcoe module loading initialization
110636 *
110637 * Initialization routine
110638 * 1. Will create fc transport software structure
110639 * 2. initialize the link list of port information structure
110640 *
110641 * Returns 0 on success, negative on failure
110642 - */
110643 + **/
110644 static int __init fcoe_init(void)
110645 {
110646 int cpu;
110647 @@ -1390,6 +1433,7 @@
110648 } else {
110649 fcoe_percpu[cpu] = NULL;
110650 kfree(p);
110651 +
110652 }
110653 }
110654 }
110655 @@ -1399,9 +1443,11 @@
110656 */
110657 fcoe_dev_setup();
110658
110659 - setup_timer(&fcoe_timer, fcoe_watchdog, 0);
110660 -
110661 - mod_timer(&fcoe_timer, jiffies + (10 * HZ));
110662 + init_timer(&fcoe_timer);
110663 + fcoe_timer.data = 0;
110664 + fcoe_timer.function = fcoe_watchdog;
110665 + fcoe_timer.expires = (jiffies + (10 * HZ));
110666 + add_timer(&fcoe_timer);
110667
110668 /* initiatlize the fcoe transport */
110669 fcoe_transport_init();
110670 @@ -1413,10 +1459,10 @@
110671 module_init(fcoe_init);
110672
110673 /**
110674 - * fcoe_exit() - fcoe module unloading cleanup
110675 + * fcoe_exit - fcoe module unloading cleanup
110676 *
110677 * Returns 0 on success, negative on failure
110678 - */
110679 + **/
110680 static void __exit fcoe_exit(void)
110681 {
110682 u32 idx;
110683 @@ -1437,7 +1483,7 @@
110684 */
110685 del_timer_sync(&fcoe_timer);
110686
110687 - /* releases the associated fcoe transport for each lport */
110688 + /* releases the assocaited fcoe transport for each lport */
110689 list_for_each_entry_safe(fc, tmp, &fcoe_hostlist, list)
110690 fcoe_transport_release(fc->real_dev);
110691
110692 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/hptiop.c linux-2.6.29-rc3.owrt/drivers/scsi/hptiop.c
110693 --- linux-2.6.29.owrt/drivers/scsi/hptiop.c 2009-05-10 22:04:39.000000000 +0200
110694 +++ linux-2.6.29-rc3.owrt/drivers/scsi/hptiop.c 2009-05-10 23:48:29.000000000 +0200
110695 @@ -1251,7 +1251,6 @@
110696 { PCI_VDEVICE(TTI, 0x3530), (kernel_ulong_t)&hptiop_itl_ops },
110697 { PCI_VDEVICE(TTI, 0x3560), (kernel_ulong_t)&hptiop_itl_ops },
110698 { PCI_VDEVICE(TTI, 0x4322), (kernel_ulong_t)&hptiop_itl_ops },
110699 - { PCI_VDEVICE(TTI, 0x4321), (kernel_ulong_t)&hptiop_itl_ops },
110700 { PCI_VDEVICE(TTI, 0x4210), (kernel_ulong_t)&hptiop_itl_ops },
110701 { PCI_VDEVICE(TTI, 0x4211), (kernel_ulong_t)&hptiop_itl_ops },
110702 { PCI_VDEVICE(TTI, 0x4310), (kernel_ulong_t)&hptiop_itl_ops },
110703 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/ibmvscsi/ibmvfc.c linux-2.6.29-rc3.owrt/drivers/scsi/ibmvscsi/ibmvfc.c
110704 --- linux-2.6.29.owrt/drivers/scsi/ibmvscsi/ibmvfc.c 2009-05-10 22:04:39.000000000 +0200
110705 +++ linux-2.6.29-rc3.owrt/drivers/scsi/ibmvscsi/ibmvfc.c 2009-05-10 23:48:29.000000000 +0200
110706 @@ -1573,6 +1573,9 @@
110707 vfc_cmd->resp_len = sizeof(vfc_cmd->rsp);
110708 vfc_cmd->cancel_key = (unsigned long)cmnd->device->hostdata;
110709 vfc_cmd->tgt_scsi_id = rport->port_id;
110710 + if ((rport->supported_classes & FC_COS_CLASS3) &&
110711 + (fc_host_supported_classes(vhost->host) & FC_COS_CLASS3))
110712 + vfc_cmd->flags = IBMVFC_CLASS_3_ERR;
110713 vfc_cmd->iu.xfer_len = scsi_bufflen(cmnd);
110714 int_to_scsilun(cmnd->device->lun, &vfc_cmd->iu.lun);
110715 memcpy(vfc_cmd->iu.cdb, cmnd->cmnd, cmnd->cmd_len);
110716 @@ -3263,7 +3266,6 @@
110717 return -ENOMEM;
110718 }
110719
110720 - memset(tgt, 0, sizeof(*tgt));
110721 tgt->scsi_id = scsi_id;
110722 tgt->new_scsi_id = scsi_id;
110723 tgt->vhost = vhost;
110724 @@ -3574,18 +3576,9 @@
110725 static void ibmvfc_tgt_add_rport(struct ibmvfc_target *tgt)
110726 {
110727 struct ibmvfc_host *vhost = tgt->vhost;
110728 - struct fc_rport *rport = tgt->rport;
110729 + struct fc_rport *rport;
110730 unsigned long flags;
110731
110732 - if (rport) {
110733 - tgt_dbg(tgt, "Setting rport roles\n");
110734 - fc_remote_port_rolechg(rport, tgt->ids.roles);
110735 - spin_lock_irqsave(vhost->host->host_lock, flags);
110736 - ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE);
110737 - spin_unlock_irqrestore(vhost->host->host_lock, flags);
110738 - return;
110739 - }
110740 -
110741 tgt_dbg(tgt, "Adding rport\n");
110742 rport = fc_remote_port_add(vhost->host, 0, &tgt->ids);
110743 spin_lock_irqsave(vhost->host->host_lock, flags);
110744 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/ibmvscsi/ibmvfc.h linux-2.6.29-rc3.owrt/drivers/scsi/ibmvscsi/ibmvfc.h
110745 --- linux-2.6.29.owrt/drivers/scsi/ibmvscsi/ibmvfc.h 2009-05-10 22:04:39.000000000 +0200
110746 +++ linux-2.6.29-rc3.owrt/drivers/scsi/ibmvscsi/ibmvfc.h 2009-05-10 23:48:29.000000000 +0200
110747 @@ -32,7 +32,7 @@
110748 #define IBMVFC_DRIVER_VERSION "1.0.4"
110749 #define IBMVFC_DRIVER_DATE "(November 14, 2008)"
110750
110751 -#define IBMVFC_DEFAULT_TIMEOUT 60
110752 +#define IBMVFC_DEFAULT_TIMEOUT 15
110753 #define IBMVFC_INIT_TIMEOUT 120
110754 #define IBMVFC_MAX_REQUESTS_DEFAULT 100
110755
110756 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/ibmvscsi/ibmvscsi.c linux-2.6.29-rc3.owrt/drivers/scsi/ibmvscsi/ibmvscsi.c
110757 --- linux-2.6.29.owrt/drivers/scsi/ibmvscsi/ibmvscsi.c 2009-05-10 22:04:39.000000000 +0200
110758 +++ linux-2.6.29-rc3.owrt/drivers/scsi/ibmvscsi/ibmvscsi.c 2009-05-10 23:48:29.000000000 +0200
110759 @@ -432,7 +432,6 @@
110760 sdev_printk(KERN_ERR, cmd->device,
110761 "Can't allocate memory "
110762 "for indirect table\n");
110763 - scsi_dma_unmap(cmd);
110764 return 0;
110765 }
110766 }
110767 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/lasi700.c linux-2.6.29-rc3.owrt/drivers/scsi/lasi700.c
110768 --- linux-2.6.29.owrt/drivers/scsi/lasi700.c 2009-05-10 22:04:39.000000000 +0200
110769 +++ linux-2.6.29-rc3.owrt/drivers/scsi/lasi700.c 2009-05-10 23:48:29.000000000 +0200
110770 @@ -103,7 +103,7 @@
110771
110772 hostdata = kzalloc(sizeof(*hostdata), GFP_KERNEL);
110773 if (!hostdata) {
110774 - dev_printk(KERN_ERR, &dev->dev, "Failed to allocate host data\n");
110775 + dev_printk(KERN_ERR, dev, "Failed to allocate host data\n");
110776 return -ENOMEM;
110777 }
110778
110779 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/libfc/fc_disc.c linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_disc.c
110780 --- linux-2.6.29.owrt/drivers/scsi/libfc/fc_disc.c 2009-05-10 22:04:39.000000000 +0200
110781 +++ linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_disc.c 2009-05-10 23:48:29.000000000 +0200
110782 @@ -64,7 +64,7 @@
110783 static void fc_disc_restart(struct fc_disc *);
110784
110785 /**
110786 - * fc_disc_lookup_rport() - lookup a remote port by port_id
110787 + * fc_disc_lookup_rport - lookup a remote port by port_id
110788 * @lport: Fibre Channel host port instance
110789 * @port_id: remote port port_id to match
110790 */
110791 @@ -92,7 +92,7 @@
110792 }
110793
110794 /**
110795 - * fc_disc_stop_rports() - delete all the remote ports associated with the lport
110796 + * fc_disc_stop_rports - delete all the remote ports associated with the lport
110797 * @disc: The discovery job to stop rports on
110798 *
110799 * Locking Note: This function expects that the lport mutex is locked before
110800 @@ -117,7 +117,7 @@
110801 }
110802
110803 /**
110804 - * fc_disc_rport_callback() - Event handler for rport events
110805 + * fc_disc_rport_callback - Event handler for rport events
110806 * @lport: The lport which is receiving the event
110807 * @rport: The rport which the event has occured on
110808 * @event: The event that occured
110809 @@ -151,7 +151,7 @@
110810 }
110811
110812 /**
110813 - * fc_disc_recv_rscn_req() - Handle Registered State Change Notification (RSCN)
110814 + * fc_disc_recv_rscn_req - Handle Registered State Change Notification (RSCN)
110815 * @sp: Current sequence of the RSCN exchange
110816 * @fp: RSCN Frame
110817 * @lport: Fibre Channel host port instance
110818 @@ -246,7 +246,7 @@
110819 list_del(&dp->peers);
110820 rport = lport->tt.rport_lookup(lport, dp->ids.port_id);
110821 if (rport) {
110822 - rdata = rport->dd_data;
110823 + rdata = RPORT_TO_PRIV(rport);
110824 list_del(&rdata->peers);
110825 lport->tt.rport_logoff(rport);
110826 }
110827 @@ -265,7 +265,7 @@
110828 }
110829
110830 /**
110831 - * fc_disc_recv_req() - Handle incoming requests
110832 + * fc_disc_recv_req - Handle incoming requests
110833 * @sp: Current sequence of the request exchange
110834 * @fp: The frame
110835 * @lport: The FC local port
110836 @@ -294,7 +294,7 @@
110837 }
110838
110839 /**
110840 - * fc_disc_restart() - Restart discovery
110841 + * fc_disc_restart - Restart discovery
110842 * @lport: FC discovery context
110843 *
110844 * Locking Note: This function expects that the disc mutex
110845 @@ -322,7 +322,7 @@
110846 }
110847
110848 /**
110849 - * fc_disc_start() - Fibre Channel Target discovery
110850 + * fc_disc_start - Fibre Channel Target discovery
110851 * @lport: FC local port
110852 *
110853 * Returns non-zero if discovery cannot be started.
110854 @@ -383,7 +383,7 @@
110855 };
110856
110857 /**
110858 - * fc_disc_new_target() - Handle new target found by discovery
110859 + * fc_disc_new_target - Handle new target found by discovery
110860 * @lport: FC local port
110861 * @rport: The previous FC remote port (NULL if new remote port)
110862 * @ids: Identifiers for the new FC remote port
110863 @@ -396,7 +396,7 @@
110864 struct fc_rport_identifiers *ids)
110865 {
110866 struct fc_lport *lport = disc->lport;
110867 - struct fc_rport_libfc_priv *rdata;
110868 + struct fc_rport_libfc_priv *rp;
110869 int error = 0;
110870
110871 if (rport && ids->port_name) {
110872 @@ -430,15 +430,15 @@
110873 dp.ids.port_name = ids->port_name;
110874 dp.ids.node_name = ids->node_name;
110875 dp.ids.roles = ids->roles;
110876 - rport = lport->tt.rport_create(&dp);
110877 + rport = fc_rport_rogue_create(&dp);
110878 }
110879 if (!rport)
110880 error = -ENOMEM;
110881 }
110882 if (rport) {
110883 - rdata = rport->dd_data;
110884 - rdata->ops = &fc_disc_rport_ops;
110885 - rdata->rp_state = RPORT_ST_INIT;
110886 + rp = rport->dd_data;
110887 + rp->ops = &fc_disc_rport_ops;
110888 + rp->rp_state = RPORT_ST_INIT;
110889 lport->tt.rport_login(rport);
110890 }
110891 }
110892 @@ -446,20 +446,20 @@
110893 }
110894
110895 /**
110896 - * fc_disc_del_target() - Delete a target
110897 + * fc_disc_del_target - Delete a target
110898 * @disc: FC discovery context
110899 * @rport: The remote port to be removed
110900 */
110901 static void fc_disc_del_target(struct fc_disc *disc, struct fc_rport *rport)
110902 {
110903 struct fc_lport *lport = disc->lport;
110904 - struct fc_rport_libfc_priv *rdata = rport->dd_data;
110905 + struct fc_rport_libfc_priv *rdata = RPORT_TO_PRIV(rport);
110906 list_del(&rdata->peers);
110907 lport->tt.rport_logoff(rport);
110908 }
110909
110910 /**
110911 - * fc_disc_done() - Discovery has been completed
110912 + * fc_disc_done - Discovery has been completed
110913 * @disc: FC discovery context
110914 */
110915 static void fc_disc_done(struct fc_disc *disc)
110916 @@ -479,7 +479,7 @@
110917 }
110918
110919 /**
110920 - * fc_disc_error() - Handle error on dNS request
110921 + * fc_disc_error - Handle error on dNS request
110922 * @disc: FC discovery context
110923 * @fp: The frame pointer
110924 */
110925 @@ -519,7 +519,7 @@
110926 }
110927
110928 /**
110929 - * fc_disc_gpn_ft_req() - Send Get Port Names by FC-4 type (GPN_FT) request
110930 + * fc_disc_gpn_ft_req - Send Get Port Names by FC-4 type (GPN_FT) request
110931 * @lport: FC discovery context
110932 *
110933 * Locking Note: This function expects that the disc_mutex is locked
110934 @@ -553,7 +553,7 @@
110935 }
110936
110937 /**
110938 - * fc_disc_gpn_ft_parse() - Parse the list of IDs and names resulting from a request
110939 + * fc_disc_gpn_ft_parse - Parse the list of IDs and names resulting from a request
110940 * @lport: Fibre Channel host port instance
110941 * @buf: GPN_FT response buffer
110942 * @len: size of response buffer
110943 @@ -617,7 +617,7 @@
110944
110945 if ((dp.ids.port_id != fc_host_port_id(lport->host)) &&
110946 (dp.ids.port_name != lport->wwpn)) {
110947 - rport = lport->tt.rport_create(&dp);
110948 + rport = fc_rport_rogue_create(&dp);
110949 if (rport) {
110950 rdata = rport->dd_data;
110951 rdata->ops = &fc_disc_rport_ops;
110952 @@ -658,10 +658,7 @@
110953 return error;
110954 }
110955
110956 -/**
110957 - * fc_disc_timeout() - Retry handler for the disc component
110958 - * @work: Structure holding disc obj that needs retry discovery
110959 - *
110960 +/*
110961 * Handle retry of memory allocation for remote ports.
110962 */
110963 static void fc_disc_timeout(struct work_struct *work)
110964 @@ -676,7 +673,7 @@
110965 }
110966
110967 /**
110968 - * fc_disc_gpn_ft_resp() - Handle a response frame from Get Port Names (GPN_FT)
110969 + * fc_disc_gpn_ft_resp - Handle a response frame from Get Port Names (GPN_FT)
110970 * @sp: Current sequence of GPN_FT exchange
110971 * @fp: response frame
110972 * @lp_arg: Fibre Channel host port instance
110973 @@ -715,7 +712,9 @@
110974 fr_len(fp));
110975 } else if (ntohs(cp->ct_cmd) == FC_FS_ACC) {
110976
110977 - /* Accepted, parse the response. */
110978 + /*
110979 + * Accepted. Parse response.
110980 + */
110981 buf = cp + 1;
110982 len -= sizeof(*cp);
110983 } else if (ntohs(cp->ct_cmd) == FC_FS_RJT) {
110984 @@ -747,7 +746,7 @@
110985 }
110986
110987 /**
110988 - * fc_disc_single() - Discover the directory information for a single target
110989 + * fc_disc_single - Discover the directory information for a single target
110990 * @lport: FC local port
110991 * @dp: The port to rediscover
110992 *
110993 @@ -770,7 +769,7 @@
110994 if (rport)
110995 fc_disc_del_target(disc, rport);
110996
110997 - new_rport = lport->tt.rport_create(dp);
110998 + new_rport = fc_rport_rogue_create(dp);
110999 if (new_rport) {
111000 rdata = new_rport->dd_data;
111001 rdata->ops = &fc_disc_rport_ops;
111002 @@ -783,7 +782,7 @@
111003 }
111004
111005 /**
111006 - * fc_disc_stop() - Stop discovery for a given lport
111007 + * fc_disc_stop - Stop discovery for a given lport
111008 * @lport: The lport that discovery should stop for
111009 */
111010 void fc_disc_stop(struct fc_lport *lport)
111011 @@ -797,7 +796,7 @@
111012 }
111013
111014 /**
111015 - * fc_disc_stop_final() - Stop discovery for a given lport
111016 + * fc_disc_stop_final - Stop discovery for a given lport
111017 * @lport: The lport that discovery should stop for
111018 *
111019 * This function will block until discovery has been
111020 @@ -810,7 +809,7 @@
111021 }
111022
111023 /**
111024 - * fc_disc_init() - Initialize the discovery block
111025 + * fc_disc_init - Initialize the discovery block
111026 * @lport: FC local port
111027 */
111028 int fc_disc_init(struct fc_lport *lport)
111029 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/libfc/fc_exch.c linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_exch.c
111030 --- linux-2.6.29.owrt/drivers/scsi/libfc/fc_exch.c 2009-05-10 22:04:39.000000000 +0200
111031 +++ linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_exch.c 2009-05-10 23:48:29.000000000 +0200
111032 @@ -32,6 +32,8 @@
111033 #include <scsi/libfc.h>
111034 #include <scsi/fc_encode.h>
111035
111036 +#define FC_DEF_R_A_TOV (10 * 1000) /* resource allocation timeout */
111037 +
111038 /*
111039 * fc_exch_debug can be set in debugger or at compile time to get more logs.
111040 */
111041 @@ -625,6 +627,7 @@
111042 {
111043 struct fc_exch *ep;
111044 struct fc_frame_header *fh;
111045 + u16 rxid;
111046
111047 ep = mp->lp->tt.exch_get(mp->lp, fp);
111048 if (ep) {
111049 @@ -651,6 +654,18 @@
111050 if ((ntoh24(fh->fh_f_ctl) & FC_FC_SEQ_INIT) == 0)
111051 ep->esb_stat &= ~ESB_ST_SEQ_INIT;
111052
111053 + /*
111054 + * Set the responder ID in the frame header.
111055 + * The old one should've been 0xffff.
111056 + * If it isn't, don't assign one.
111057 + * Incoming basic link service frames may specify
111058 + * a referenced RX_ID.
111059 + */
111060 + if (fh->fh_type != FC_TYPE_BLS) {
111061 + rxid = ntohs(fh->fh_rx_id);
111062 + WARN_ON(rxid != FC_XID_UNKNOWN);
111063 + fh->fh_rx_id = htons(ep->rxid);
111064 + }
111065 fc_exch_hold(ep); /* hold for caller */
111066 spin_unlock_bh(&ep->ex_lock); /* lock from exch_get */
111067 }
111068 @@ -662,8 +677,8 @@
111069 * If fc_pf_rjt_reason is FC_RJT_NONE then this function will have a hold
111070 * on the ep that should be released by the caller.
111071 */
111072 -static enum fc_pf_rjt_reason fc_seq_lookup_recip(struct fc_exch_mgr *mp,
111073 - struct fc_frame *fp)
111074 +static enum fc_pf_rjt_reason
111075 +fc_seq_lookup_recip(struct fc_exch_mgr *mp, struct fc_frame *fp)
111076 {
111077 struct fc_frame_header *fh = fc_frame_header_get(fp);
111078 struct fc_exch *ep = NULL;
111079 @@ -981,9 +996,9 @@
111080 * Send BLS Reject.
111081 * This is for rejecting BA_ABTS only.
111082 */
111083 -static void fc_exch_send_ba_rjt(struct fc_frame *rx_fp,
111084 - enum fc_ba_rjt_reason reason,
111085 - enum fc_ba_rjt_explan explan)
111086 +static void
111087 +fc_exch_send_ba_rjt(struct fc_frame *rx_fp, enum fc_ba_rjt_reason reason,
111088 + enum fc_ba_rjt_explan explan)
111089 {
111090 struct fc_frame *fp;
111091 struct fc_frame_header *rx_fh;
111092 @@ -1081,7 +1096,7 @@
111093 ap->ba_high_seq_cnt = fh->fh_seq_cnt;
111094 ap->ba_low_seq_cnt = htons(sp->cnt);
111095 }
111096 - sp = fc_seq_start_next_locked(sp);
111097 + sp = fc_seq_start_next(sp);
111098 spin_unlock_bh(&ep->ex_lock);
111099 fc_seq_send_last(sp, fp, FC_RCTL_BA_ACC, FC_TYPE_BLS);
111100 fc_frame_free(rx_fp);
111101 @@ -1465,11 +1480,10 @@
111102 * If sid is non-zero, reset only exchanges we source from that FID.
111103 * If did is non-zero, reset only exchanges destined to that FID.
111104 */
111105 -void fc_exch_mgr_reset(struct fc_lport *lp, u32 sid, u32 did)
111106 +void fc_exch_mgr_reset(struct fc_exch_mgr *mp, u32 sid, u32 did)
111107 {
111108 struct fc_exch *ep;
111109 struct fc_exch *next;
111110 - struct fc_exch_mgr *mp = lp->emp;
111111
111112 spin_lock_bh(&mp->em_lock);
111113 restart:
111114 @@ -1593,7 +1607,7 @@
111115 if (IS_ERR(fp)) {
111116 int err = PTR_ERR(fp);
111117
111118 - if (err == -FC_EX_CLOSED || err == -FC_EX_TIMEOUT)
111119 + if (err == -FC_EX_CLOSED)
111120 goto cleanup;
111121 FC_DBG("Cannot process RRQ, because of frame error %d\n", err);
111122 return;
111123 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/libfc/fc_fcp.c linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_fcp.c
111124 --- linux-2.6.29.owrt/drivers/scsi/libfc/fc_fcp.c 2009-05-10 22:04:39.000000000 +0200
111125 +++ linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_fcp.c 2009-05-10 23:48:29.000000000 +0200
111126 @@ -161,7 +161,7 @@
111127 }
111128
111129 /**
111130 - * fc_fcp_pkt_release() - release hold on scsi_pkt packet
111131 + * fc_fcp_pkt_release - release hold on scsi_pkt packet
111132 * @fsp: fcp packet struct
111133 *
111134 * This is used by upper layer scsi driver.
111135 @@ -183,7 +183,8 @@
111136 }
111137
111138 /**
111139 - * fc_fcp_pkt_destory() - release hold on scsi_pkt packet
111140 + * fc_fcp_pkt_destory - release hold on scsi_pkt packet
111141 + *
111142 * @seq: exchange sequence
111143 * @fsp: fcp packet struct
111144 *
111145 @@ -198,7 +199,7 @@
111146 }
111147
111148 /**
111149 - * fc_fcp_lock_pkt() - lock a packet and get a ref to it.
111150 + * fc_fcp_lock_pkt - lock a packet and get a ref to it.
111151 * @fsp: fcp packet
111152 *
111153 * We should only return error if we return a command to scsi-ml before
111154 @@ -290,7 +291,9 @@
111155 buf = fc_frame_payload_get(fp, 0);
111156
111157 if (offset + len > fsp->data_len) {
111158 - /* this should never happen */
111159 + /*
111160 + * this should never happen
111161 + */
111162 if ((fr_flags(fp) & FCPHF_CRC_UNCHECKED) &&
111163 fc_frame_crc_check(fp))
111164 goto crc_err;
111165 @@ -384,8 +387,8 @@
111166 fc_fcp_complete_locked(fsp);
111167 }
111168
111169 -/**
111170 - * fc_fcp_send_data() - Send SCSI data to target.
111171 +/*
111172 + * fc_fcp_send_data - Send SCSI data to target.
111173 * @fsp: ptr to fc_fcp_pkt
111174 * @sp: ptr to this sequence
111175 * @offset: starting offset for this data request
111176 @@ -607,8 +610,8 @@
111177 }
111178 }
111179
111180 -/**
111181 - * fc_fcp_reduce_can_queue() - drop can_queue
111182 +/*
111183 + * fc_fcp_reduce_can_queue - drop can_queue
111184 * @lp: lport to drop queueing for
111185 *
111186 * If we are getting memory allocation failures, then we may
111187 @@ -639,11 +642,9 @@
111188 spin_unlock_irqrestore(lp->host->host_lock, flags);
111189 }
111190
111191 -/**
111192 - * fc_fcp_recv() - Reveive FCP frames
111193 - * @seq: The sequence the frame is on
111194 - * @fp: The FC frame
111195 - * @arg: The related FCP packet
111196 +/*
111197 + * exch mgr calls this routine to process scsi
111198 + * exchanges.
111199 *
111200 * Return : None
111201 * Context : called from Soft IRQ context
111202 @@ -831,7 +832,7 @@
111203 }
111204
111205 /**
111206 - * fc_fcp_complete_locked() - complete processing of a fcp packet
111207 + * fc_fcp_complete_locked - complete processing of a fcp packet
111208 * @fsp: fcp packet
111209 *
111210 * This function may sleep if a timer is pending. The packet lock must be
111211 @@ -899,7 +900,7 @@
111212 }
111213
111214 /**
111215 - * fc_fcp_cleanup_each_cmd() - Cleanup active commads
111216 + * fc_fcp_cleanup_each_cmd - run fn on each active command
111217 * @lp: logical port
111218 * @id: target id
111219 * @lun: lun
111220 @@ -951,7 +952,7 @@
111221 }
111222
111223 /**
111224 - * fc_fcp_pkt_send() - send a fcp packet to the lower level.
111225 + * fc_fcp_pkt_send - send a fcp packet to the lower level.
111226 * @lp: fc lport
111227 * @fsp: fc packet.
111228 *
111229 @@ -1620,7 +1621,7 @@
111230 static inline int fc_fcp_lport_queue_ready(struct fc_lport *lp)
111231 {
111232 /* lock ? */
111233 - return (lp->state == LPORT_ST_READY) && lp->link_up && !lp->qfull;
111234 + return (lp->state == LPORT_ST_READY) && (lp->link_status & FC_LINK_UP);
111235 }
111236
111237 /**
111238 @@ -1726,7 +1727,7 @@
111239 EXPORT_SYMBOL(fc_queuecommand);
111240
111241 /**
111242 - * fc_io_compl() - Handle responses for completed commands
111243 + * fc_io_compl - Handle responses for completed commands
111244 * @fsp: scsi packet
111245 *
111246 * Translates a error to a Linux SCSI error.
111247 @@ -1809,12 +1810,12 @@
111248 sc_cmd->result = DID_ERROR << 16;
111249 break;
111250 case FC_DATA_UNDRUN:
111251 - if ((fsp->cdb_status == 0) && !(fsp->req_flags & FC_SRB_READ)) {
111252 + if (fsp->cdb_status == 0) {
111253 /*
111254 * scsi status is good but transport level
111255 - * underrun.
111256 + * underrun. for read it should be an error??
111257 */
111258 - sc_cmd->result = DID_OK << 16;
111259 + sc_cmd->result = (DID_OK << 16) | fsp->cdb_status;
111260 } else {
111261 /*
111262 * scsi got underrun, this is an error
111263 @@ -1856,7 +1857,7 @@
111264 }
111265
111266 /**
111267 - * fc_fcp_complete() - complete processing of a fcp packet
111268 + * fc_fcp_complete - complete processing of a fcp packet
111269 * @fsp: fcp packet
111270 *
111271 * This function may sleep if a fsp timer is pending.
111272 @@ -1873,10 +1874,9 @@
111273 EXPORT_SYMBOL(fc_fcp_complete);
111274
111275 /**
111276 - * fc_eh_abort() - Abort a command
111277 + * fc_eh_abort - Abort a command...from scsi host template
111278 * @sc_cmd: scsi command to abort
111279 *
111280 - * From scsi host template.
111281 * send ABTS to the target device and wait for the response
111282 * sc_cmd is the pointer to the command to be aborted.
111283 */
111284 @@ -1890,7 +1890,7 @@
111285 lp = shost_priv(sc_cmd->device->host);
111286 if (lp->state != LPORT_ST_READY)
111287 return rc;
111288 - else if (!lp->link_up)
111289 + else if (!(lp->link_status & FC_LINK_UP))
111290 return rc;
111291
111292 spin_lock_irqsave(lp->host->host_lock, flags);
111293 @@ -1920,7 +1920,7 @@
111294 EXPORT_SYMBOL(fc_eh_abort);
111295
111296 /**
111297 - * fc_eh_device_reset() Reset a single LUN
111298 + * fc_eh_device_reset: Reset a single LUN
111299 * @sc_cmd: scsi command
111300 *
111301 * Set from scsi host template to send tm cmd to the target and wait for the
111302 @@ -1973,7 +1973,7 @@
111303 EXPORT_SYMBOL(fc_eh_device_reset);
111304
111305 /**
111306 - * fc_eh_host_reset() - The reset function will reset the ports on the host.
111307 + * fc_eh_host_reset - The reset function will reset the ports on the host.
111308 * @sc_cmd: scsi command
111309 */
111310 int fc_eh_host_reset(struct scsi_cmnd *sc_cmd)
111311 @@ -1999,7 +1999,7 @@
111312 EXPORT_SYMBOL(fc_eh_host_reset);
111313
111314 /**
111315 - * fc_slave_alloc() - configure queue depth
111316 + * fc_slave_alloc - configure queue depth
111317 * @sdev: scsi device
111318 *
111319 * Configures queue depth based on host's cmd_per_len. If not set
111320 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/libfc/fc_lport.c linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_lport.c
111321 --- linux-2.6.29.owrt/drivers/scsi/libfc/fc_lport.c 2009-05-10 22:04:39.000000000 +0200
111322 +++ linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_lport.c 2009-05-10 23:48:29.000000000 +0200
111323 @@ -139,7 +139,7 @@
111324 }
111325
111326 /**
111327 - * fc_lport_rport_callback() - Event handler for rport events
111328 + * fc_lport_rport_callback - Event handler for rport events
111329 * @lport: The lport which is receiving the event
111330 * @rport: The rport which the event has occured on
111331 * @event: The event that occured
111332 @@ -195,7 +195,7 @@
111333 }
111334
111335 /**
111336 - * fc_lport_state() - Return a string which represents the lport's state
111337 + * fc_lport_state - Return a string which represents the lport's state
111338 * @lport: The lport whose state is to converted to a string
111339 */
111340 static const char *fc_lport_state(struct fc_lport *lport)
111341 @@ -209,7 +209,7 @@
111342 }
111343
111344 /**
111345 - * fc_lport_ptp_setup() - Create an rport for point-to-point mode
111346 + * fc_lport_ptp_setup - Create an rport for point-to-point mode
111347 * @lport: The lport to attach the ptp rport to
111348 * @fid: The FID of the ptp rport
111349 * @remote_wwpn: The WWPN of the ptp rport
111350 @@ -232,7 +232,7 @@
111351 lport->ptp_rp = NULL;
111352 }
111353
111354 - lport->ptp_rp = lport->tt.rport_create(&dp);
111355 + lport->ptp_rp = fc_rport_rogue_create(&dp);
111356
111357 lport->tt.rport_login(lport->ptp_rp);
111358
111359 @@ -250,7 +250,7 @@
111360 {
111361 struct fc_lport *lp = shost_priv(shost);
111362
111363 - if (lp->link_up)
111364 + if ((lp->link_status & FC_LINK_UP) == FC_LINK_UP)
111365 fc_host_port_state(shost) = FC_PORTSTATE_ONLINE;
111366 else
111367 fc_host_port_state(shost) = FC_PORTSTATE_OFFLINE;
111368 @@ -351,7 +351,7 @@
111369 }
111370
111371 /**
111372 - * fc_lport_recv_rlir_req() - Handle received Registered Link Incident Report.
111373 + * fc_lport_recv_rlir_req - Handle received Registered Link Incident Report.
111374 * @lport: Fibre Channel local port recieving the RLIR
111375 * @sp: current sequence in the RLIR exchange
111376 * @fp: RLIR request frame
111377 @@ -370,7 +370,7 @@
111378 }
111379
111380 /**
111381 - * fc_lport_recv_echo_req() - Handle received ECHO request
111382 + * fc_lport_recv_echo_req - Handle received ECHO request
111383 * @lport: Fibre Channel local port recieving the ECHO
111384 * @sp: current sequence in the ECHO exchange
111385 * @fp: ECHO request frame
111386 @@ -412,7 +412,7 @@
111387 }
111388
111389 /**
111390 - * fc_lport_recv_echo_req() - Handle received Request Node ID data request
111391 + * fc_lport_recv_echo_req - Handle received Request Node ID data request
111392 * @lport: Fibre Channel local port recieving the RNID
111393 * @sp: current sequence in the RNID exchange
111394 * @fp: RNID request frame
111395 @@ -479,7 +479,7 @@
111396 }
111397
111398 /**
111399 - * fc_lport_recv_adisc_req() - Handle received Address Discovery Request
111400 + * fc_lport_recv_adisc_req - Handle received Address Discovery Request
111401 * @lport: Fibre Channel local port recieving the ADISC
111402 * @sp: current sequence in the ADISC exchange
111403 * @fp: ADISC request frame
111404 @@ -529,7 +529,7 @@
111405 }
111406
111407 /**
111408 - * fc_lport_recv_logo_req() - Handle received fabric LOGO request
111409 + * fc_lport_recv_logo_req - Handle received fabric LOGO request
111410 * @lport: Fibre Channel local port recieving the LOGO
111411 * @sp: current sequence in the LOGO exchange
111412 * @fp: LOGO request frame
111413 @@ -546,7 +546,7 @@
111414 }
111415
111416 /**
111417 - * fc_fabric_login() - Start the lport state machine
111418 + * fc_fabric_login - Start the lport state machine
111419 * @lport: The lport that should log into the fabric
111420 *
111421 * Locking Note: This function should not be called
111422 @@ -568,7 +568,7 @@
111423 EXPORT_SYMBOL(fc_fabric_login);
111424
111425 /**
111426 - * fc_linkup() - Handler for transport linkup events
111427 + * fc_linkup - Handler for transport linkup events
111428 * @lport: The lport whose link is up
111429 */
111430 void fc_linkup(struct fc_lport *lport)
111431 @@ -577,8 +577,8 @@
111432 fc_host_port_id(lport->host));
111433
111434 mutex_lock(&lport->lp_mutex);
111435 - if (!lport->link_up) {
111436 - lport->link_up = 1;
111437 + if ((lport->link_status & FC_LINK_UP) != FC_LINK_UP) {
111438 + lport->link_status |= FC_LINK_UP;
111439
111440 if (lport->state == LPORT_ST_RESET)
111441 fc_lport_enter_flogi(lport);
111442 @@ -588,7 +588,7 @@
111443 EXPORT_SYMBOL(fc_linkup);
111444
111445 /**
111446 - * fc_linkdown() - Handler for transport linkdown events
111447 + * fc_linkdown - Handler for transport linkdown events
111448 * @lport: The lport whose link is down
111449 */
111450 void fc_linkdown(struct fc_lport *lport)
111451 @@ -597,8 +597,8 @@
111452 FC_DEBUG_LPORT("Link is down for port (%6x)\n",
111453 fc_host_port_id(lport->host));
111454
111455 - if (lport->link_up) {
111456 - lport->link_up = 0;
111457 + if ((lport->link_status & FC_LINK_UP) == FC_LINK_UP) {
111458 + lport->link_status &= ~(FC_LINK_UP);
111459 fc_lport_enter_reset(lport);
111460 lport->tt.fcp_cleanup(lport);
111461 }
111462 @@ -607,25 +607,48 @@
111463 EXPORT_SYMBOL(fc_linkdown);
111464
111465 /**
111466 - * fc_fabric_logoff() - Logout of the fabric
111467 + * fc_pause - Pause the flow of frames
111468 + * @lport: The lport to be paused
111469 + */
111470 +void fc_pause(struct fc_lport *lport)
111471 +{
111472 + mutex_lock(&lport->lp_mutex);
111473 + lport->link_status |= FC_PAUSE;
111474 + mutex_unlock(&lport->lp_mutex);
111475 +}
111476 +EXPORT_SYMBOL(fc_pause);
111477 +
111478 +/**
111479 + * fc_unpause - Unpause the flow of frames
111480 + * @lport: The lport to be unpaused
111481 + */
111482 +void fc_unpause(struct fc_lport *lport)
111483 +{
111484 + mutex_lock(&lport->lp_mutex);
111485 + lport->link_status &= ~(FC_PAUSE);
111486 + mutex_unlock(&lport->lp_mutex);
111487 +}
111488 +EXPORT_SYMBOL(fc_unpause);
111489 +
111490 +/**
111491 + * fc_fabric_logoff - Logout of the fabric
111492 * @lport: fc_lport pointer to logoff the fabric
111493 *
111494 * Return value:
111495 * 0 for success, -1 for failure
111496 - */
111497 + **/
111498 int fc_fabric_logoff(struct fc_lport *lport)
111499 {
111500 lport->tt.disc_stop_final(lport);
111501 mutex_lock(&lport->lp_mutex);
111502 fc_lport_enter_logo(lport);
111503 mutex_unlock(&lport->lp_mutex);
111504 - cancel_delayed_work_sync(&lport->retry_work);
111505 return 0;
111506 }
111507 EXPORT_SYMBOL(fc_fabric_logoff);
111508
111509 /**
111510 - * fc_lport_destroy() - unregister a fc_lport
111511 + * fc_lport_destroy - unregister a fc_lport
111512 * @lport: fc_lport pointer to unregister
111513 *
111514 * Return value:
111515 @@ -635,25 +658,26 @@
111516 * clean-up all the allocated memory
111517 * and free up other system resources.
111518 *
111519 - */
111520 + **/
111521 int fc_lport_destroy(struct fc_lport *lport)
111522 {
111523 lport->tt.frame_send = fc_frame_drop;
111524 lport->tt.fcp_abort_io(lport);
111525 - lport->tt.exch_mgr_reset(lport, 0, 0);
111526 + lport->tt.exch_mgr_reset(lport->emp, 0, 0);
111527 return 0;
111528 }
111529 EXPORT_SYMBOL(fc_lport_destroy);
111530
111531 /**
111532 - * fc_set_mfs() - sets up the mfs for the corresponding fc_lport
111533 + * fc_set_mfs - sets up the mfs for the corresponding fc_lport
111534 * @lport: fc_lport pointer to unregister
111535 * @mfs: the new mfs for fc_lport
111536 *
111537 * Set mfs for the given fc_lport to the new mfs.
111538 *
111539 * Return: 0 for success
111540 - */
111541 + *
111542 + **/
111543 int fc_set_mfs(struct fc_lport *lport, u32 mfs)
111544 {
111545 unsigned int old_mfs;
111546 @@ -682,7 +706,7 @@
111547 EXPORT_SYMBOL(fc_set_mfs);
111548
111549 /**
111550 - * fc_lport_disc_callback() - Callback for discovery events
111551 + * fc_lport_disc_callback - Callback for discovery events
111552 * @lport: FC local port
111553 * @event: The discovery event
111554 */
111555 @@ -707,7 +731,7 @@
111556 }
111557
111558 /**
111559 - * fc_rport_enter_ready() - Enter the ready state and start discovery
111560 + * fc_rport_enter_ready - Enter the ready state and start discovery
111561 * @lport: Fibre Channel local port that is ready
111562 *
111563 * Locking Note: The lport lock is expected to be held before calling
111564 @@ -724,7 +748,7 @@
111565 }
111566
111567 /**
111568 - * fc_lport_recv_flogi_req() - Receive a FLOGI request
111569 + * fc_lport_recv_flogi_req - Receive a FLOGI request
111570 * @sp_in: The sequence the FLOGI is on
111571 * @rx_fp: The frame the FLOGI is in
111572 * @lport: The lport that recieved the request
111573 @@ -814,7 +838,7 @@
111574 }
111575
111576 /**
111577 - * fc_lport_recv_req() - The generic lport request handler
111578 + * fc_lport_recv_req - The generic lport request handler
111579 * @lport: The lport that received the request
111580 * @sp: The sequence the request is on
111581 * @fp: The frame the request is in
111582 @@ -910,7 +934,7 @@
111583 }
111584
111585 /**
111586 - * fc_lport_reset() - Reset an lport
111587 + * fc_lport_reset - Reset an lport
111588 * @lport: The lport which should be reset
111589 *
111590 * Locking Note: This functions should not be called with the
111591 @@ -918,7 +942,6 @@
111592 */
111593 int fc_lport_reset(struct fc_lport *lport)
111594 {
111595 - cancel_delayed_work_sync(&lport->retry_work);
111596 mutex_lock(&lport->lp_mutex);
111597 fc_lport_enter_reset(lport);
111598 mutex_unlock(&lport->lp_mutex);
111599 @@ -927,7 +950,7 @@
111600 EXPORT_SYMBOL(fc_lport_reset);
111601
111602 /**
111603 - * fc_rport_enter_reset() - Reset the local port
111604 + * fc_rport_enter_reset - Reset the local port
111605 * @lport: Fibre Channel local port to be reset
111606 *
111607 * Locking Note: The lport lock is expected to be held before calling
111608 @@ -950,16 +973,16 @@
111609
111610 lport->tt.disc_stop(lport);
111611
111612 - lport->tt.exch_mgr_reset(lport, 0, 0);
111613 + lport->tt.exch_mgr_reset(lport->emp, 0, 0);
111614 fc_host_fabric_name(lport->host) = 0;
111615 fc_host_port_id(lport->host) = 0;
111616
111617 - if (lport->link_up)
111618 + if ((lport->link_status & FC_LINK_UP) == FC_LINK_UP)
111619 fc_lport_enter_flogi(lport);
111620 }
111621
111622 /**
111623 - * fc_lport_error() - Handler for any errors
111624 + * fc_lport_error - Handler for any errors
111625 * @lport: The fc_lport object
111626 * @fp: The frame pointer
111627 *
111628 @@ -1006,8 +1029,8 @@
111629 }
111630
111631 /**
111632 - * fc_lport_rft_id_resp() - Handle response to Register Fibre
111633 - * Channel Types by ID (RPN_ID) request
111634 + * fc_lport_rft_id_resp - Handle response to Register Fibre
111635 + * Channel Types by ID (RPN_ID) request
111636 * @sp: current sequence in RPN_ID exchange
111637 * @fp: response frame
111638 * @lp_arg: Fibre Channel host port instance
111639 @@ -1030,17 +1053,17 @@
111640
111641 FC_DEBUG_LPORT("Received a RFT_ID response\n");
111642
111643 - if (IS_ERR(fp)) {
111644 - fc_lport_error(lport, fp);
111645 - goto err;
111646 - }
111647 -
111648 if (lport->state != LPORT_ST_RFT_ID) {
111649 FC_DBG("Received a RFT_ID response, but in state %s\n",
111650 fc_lport_state(lport));
111651 goto out;
111652 }
111653
111654 + if (IS_ERR(fp)) {
111655 + fc_lport_error(lport, fp);
111656 + goto err;
111657 + }
111658 +
111659 fh = fc_frame_header_get(fp);
111660 ct = fc_frame_payload_get(fp, sizeof(*ct));
111661
111662 @@ -1058,8 +1081,8 @@
111663 }
111664
111665 /**
111666 - * fc_lport_rpn_id_resp() - Handle response to Register Port
111667 - * Name by ID (RPN_ID) request
111668 + * fc_lport_rpn_id_resp - Handle response to Register Port
111669 + * Name by ID (RPN_ID) request
111670 * @sp: current sequence in RPN_ID exchange
111671 * @fp: response frame
111672 * @lp_arg: Fibre Channel host port instance
111673 @@ -1082,17 +1105,17 @@
111674
111675 FC_DEBUG_LPORT("Received a RPN_ID response\n");
111676
111677 - if (IS_ERR(fp)) {
111678 - fc_lport_error(lport, fp);
111679 - goto err;
111680 - }
111681 -
111682 if (lport->state != LPORT_ST_RPN_ID) {
111683 FC_DBG("Received a RPN_ID response, but in state %s\n",
111684 fc_lport_state(lport));
111685 goto out;
111686 }
111687
111688 + if (IS_ERR(fp)) {
111689 + fc_lport_error(lport, fp);
111690 + goto err;
111691 + }
111692 +
111693 fh = fc_frame_header_get(fp);
111694 ct = fc_frame_payload_get(fp, sizeof(*ct));
111695 if (fh && ct && fh->fh_type == FC_TYPE_CT &&
111696 @@ -1110,7 +1133,7 @@
111697 }
111698
111699 /**
111700 - * fc_lport_scr_resp() - Handle response to State Change Register (SCR) request
111701 + * fc_lport_scr_resp - Handle response to State Change Register (SCR) request
111702 * @sp: current sequence in SCR exchange
111703 * @fp: response frame
111704 * @lp_arg: Fibre Channel lport port instance that sent the registration request
111705 @@ -1132,17 +1155,17 @@
111706
111707 FC_DEBUG_LPORT("Received a SCR response\n");
111708
111709 - if (IS_ERR(fp)) {
111710 - fc_lport_error(lport, fp);
111711 - goto err;
111712 - }
111713 -
111714 if (lport->state != LPORT_ST_SCR) {
111715 FC_DBG("Received a SCR response, but in state %s\n",
111716 fc_lport_state(lport));
111717 goto out;
111718 }
111719
111720 + if (IS_ERR(fp)) {
111721 + fc_lport_error(lport, fp);
111722 + goto err;
111723 + }
111724 +
111725 op = fc_frame_payload_op(fp);
111726 if (op == ELS_LS_ACC)
111727 fc_lport_enter_ready(lport);
111728 @@ -1156,7 +1179,7 @@
111729 }
111730
111731 /**
111732 - * fc_lport_enter_scr() - Send a State Change Register (SCR) request
111733 + * fc_lport_enter_scr - Send a State Change Register (SCR) request
111734 * @lport: Fibre Channel local port to register for state changes
111735 *
111736 * Locking Note: The lport lock is expected to be held before calling
111737 @@ -1183,7 +1206,7 @@
111738 }
111739
111740 /**
111741 - * fc_lport_enter_rft_id() - Register FC4-types with the name server
111742 + * fc_lport_enter_rft_id - Register FC4-types with the name server
111743 * @lport: Fibre Channel local port to register
111744 *
111745 * Locking Note: The lport lock is expected to be held before calling
111746 @@ -1225,7 +1248,7 @@
111747 }
111748
111749 /**
111750 - * fc_rport_enter_rft_id() - Register port name with the name server
111751 + * fc_rport_enter_rft_id - Register port name with the name server
111752 * @lport: Fibre Channel local port to register
111753 *
111754 * Locking Note: The lport lock is expected to be held before calling
111755 @@ -1258,7 +1281,7 @@
111756 };
111757
111758 /**
111759 - * fc_rport_enter_dns() - Create a rport to the name server
111760 + * fc_rport_enter_dns - Create a rport to the name server
111761 * @lport: Fibre Channel local port requesting a rport for the name server
111762 *
111763 * Locking Note: The lport lock is expected to be held before calling
111764 @@ -1281,7 +1304,7 @@
111765
111766 fc_lport_state_enter(lport, LPORT_ST_DNS);
111767
111768 - rport = lport->tt.rport_create(&dp);
111769 + rport = fc_rport_rogue_create(&dp);
111770 if (!rport)
111771 goto err;
111772
111773 @@ -1295,7 +1318,7 @@
111774 }
111775
111776 /**
111777 - * fc_lport_timeout() - Handler for the retry_work timer.
111778 + * fc_lport_timeout - Handler for the retry_work timer.
111779 * @work: The work struct of the fc_lport
111780 */
111781 static void fc_lport_timeout(struct work_struct *work)
111782 @@ -1336,7 +1359,7 @@
111783 }
111784
111785 /**
111786 - * fc_lport_logo_resp() - Handle response to LOGO request
111787 + * fc_lport_logo_resp - Handle response to LOGO request
111788 * @sp: current sequence in LOGO exchange
111789 * @fp: response frame
111790 * @lp_arg: Fibre Channel lport port instance that sent the LOGO request
111791 @@ -1358,17 +1381,17 @@
111792
111793 FC_DEBUG_LPORT("Received a LOGO response\n");
111794
111795 - if (IS_ERR(fp)) {
111796 - fc_lport_error(lport, fp);
111797 - goto err;
111798 - }
111799 -
111800 if (lport->state != LPORT_ST_LOGO) {
111801 FC_DBG("Received a LOGO response, but in state %s\n",
111802 fc_lport_state(lport));
111803 goto out;
111804 }
111805
111806 + if (IS_ERR(fp)) {
111807 + fc_lport_error(lport, fp);
111808 + goto err;
111809 + }
111810 +
111811 op = fc_frame_payload_op(fp);
111812 if (op == ELS_LS_ACC)
111813 fc_lport_enter_reset(lport);
111814 @@ -1382,7 +1405,7 @@
111815 }
111816
111817 /**
111818 - * fc_rport_enter_logo() - Logout of the fabric
111819 + * fc_rport_enter_logo - Logout of the fabric
111820 * @lport: Fibre Channel local port to be logged out
111821 *
111822 * Locking Note: The lport lock is expected to be held before calling
111823 @@ -1414,7 +1437,7 @@
111824 }
111825
111826 /**
111827 - * fc_lport_flogi_resp() - Handle response to FLOGI request
111828 + * fc_lport_flogi_resp - Handle response to FLOGI request
111829 * @sp: current sequence in FLOGI exchange
111830 * @fp: response frame
111831 * @lp_arg: Fibre Channel lport port instance that sent the FLOGI request
111832 @@ -1442,17 +1465,17 @@
111833
111834 FC_DEBUG_LPORT("Received a FLOGI response\n");
111835
111836 - if (IS_ERR(fp)) {
111837 - fc_lport_error(lport, fp);
111838 - goto err;
111839 - }
111840 -
111841 if (lport->state != LPORT_ST_FLOGI) {
111842 FC_DBG("Received a FLOGI response, but in state %s\n",
111843 fc_lport_state(lport));
111844 goto out;
111845 }
111846
111847 + if (IS_ERR(fp)) {
111848 + fc_lport_error(lport, fp);
111849 + goto err;
111850 + }
111851 +
111852 fh = fc_frame_header_get(fp);
111853 did = ntoh24(fh->fh_d_id);
111854 if (fc_frame_payload_op(fp) == ELS_LS_ACC && did != 0) {
111855 @@ -1509,7 +1532,7 @@
111856 }
111857
111858 /**
111859 - * fc_rport_enter_flogi() - Send a FLOGI request to the fabric manager
111860 + * fc_rport_enter_flogi - Send a FLOGI request to the fabric manager
111861 * @lport: Fibre Channel local port to be logged in to the fabric
111862 *
111863 * Locking Note: The lport lock is expected to be held before calling
111864 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/libfc/fc_rport.c linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_rport.c
111865 --- linux-2.6.29.owrt/drivers/scsi/libfc/fc_rport.c 2009-05-10 22:04:39.000000000 +0200
111866 +++ linux-2.6.29-rc3.owrt/drivers/scsi/libfc/fc_rport.c 2009-05-10 23:48:29.000000000 +0200
111867 @@ -81,7 +81,6 @@
111868 struct fc_seq *, struct fc_frame *);
111869 static void fc_rport_timeout(struct work_struct *);
111870 static void fc_rport_error(struct fc_rport *, struct fc_frame *);
111871 -static void fc_rport_error_retry(struct fc_rport *, struct fc_frame *);
111872 static void fc_rport_work(struct work_struct *);
111873
111874 static const char *fc_rport_state_names[] = {
111875 @@ -146,7 +145,7 @@
111876 }
111877
111878 /**
111879 - * fc_rport_state() - return a string for the state the rport is in
111880 + * fc_rport_state - return a string for the state the rport is in
111881 * @rport: The rport whose state we want to get a string for
111882 */
111883 static const char *fc_rport_state(struct fc_rport *rport)
111884 @@ -161,7 +160,7 @@
111885 }
111886
111887 /**
111888 - * fc_set_rport_loss_tmo() - Set the remote port loss timeout in seconds.
111889 + * fc_set_rport_loss_tmo - Set the remote port loss timeout in seconds.
111890 * @rport: Pointer to Fibre Channel remote port structure
111891 * @timeout: timeout in seconds
111892 */
111893 @@ -175,12 +174,12 @@
111894 EXPORT_SYMBOL(fc_set_rport_loss_tmo);
111895
111896 /**
111897 - * fc_plogi_get_maxframe() - Get max payload from the common service parameters
111898 + * fc_plogi_get_maxframe - Get max payload from the common service parameters
111899 * @flp: FLOGI payload structure
111900 * @maxval: upper limit, may be less than what is in the service parameters
111901 */
111902 -static unsigned int fc_plogi_get_maxframe(struct fc_els_flogi *flp,
111903 - unsigned int maxval)
111904 +static unsigned int
111905 +fc_plogi_get_maxframe(struct fc_els_flogi *flp, unsigned int maxval)
111906 {
111907 unsigned int mfs;
111908
111909 @@ -198,7 +197,7 @@
111910 }
111911
111912 /**
111913 - * fc_rport_state_enter() - Change the rport's state
111914 + * fc_rport_state_enter - Change the rport's state
111915 * @rport: The rport whose state should change
111916 * @new: The new state of the rport
111917 *
111918 @@ -215,7 +214,6 @@
111919
111920 static void fc_rport_work(struct work_struct *work)
111921 {
111922 - u32 port_id;
111923 struct fc_rport_libfc_priv *rdata =
111924 container_of(work, struct fc_rport_libfc_priv, event_work);
111925 enum fc_rport_event event;
111926 @@ -281,18 +279,14 @@
111927 rport_ops->event_callback(lport, rport, event);
111928 if (trans_state == FC_PORTSTATE_ROGUE)
111929 put_device(&rport->dev);
111930 - else {
111931 - port_id = rport->port_id;
111932 + else
111933 fc_remote_port_delete(rport);
111934 - lport->tt.exch_mgr_reset(lport, 0, port_id);
111935 - lport->tt.exch_mgr_reset(lport, port_id, 0);
111936 - }
111937 } else
111938 mutex_unlock(&rdata->rp_mutex);
111939 }
111940
111941 /**
111942 - * fc_rport_login() - Start the remote port login state machine
111943 + * fc_rport_login - Start the remote port login state machine
111944 * @rport: Fibre Channel remote port
111945 *
111946 * Locking Note: Called without the rport lock held. This
111947 @@ -315,7 +309,7 @@
111948 }
111949
111950 /**
111951 - * fc_rport_logoff() - Logoff and remove an rport
111952 + * fc_rport_logoff - Logoff and remove an rport
111953 * @rport: Fibre Channel remote port to be removed
111954 *
111955 * Locking Note: Called without the rport lock held. This
111956 @@ -353,7 +347,7 @@
111957 }
111958
111959 /**
111960 - * fc_rport_enter_ready() - The rport is ready
111961 + * fc_rport_enter_ready - The rport is ready
111962 * @rport: Fibre Channel remote port that is ready
111963 *
111964 * Locking Note: The rport lock is expected to be held before calling
111965 @@ -372,7 +366,7 @@
111966 }
111967
111968 /**
111969 - * fc_rport_timeout() - Handler for the retry_work timer.
111970 + * fc_rport_timeout - Handler for the retry_work timer.
111971 * @work: The work struct of the fc_rport_libfc_priv
111972 *
111973 * Locking Note: Called without the rport lock held. This
111974 @@ -411,75 +405,59 @@
111975 }
111976
111977 /**
111978 - * fc_rport_error() - Error handler, called once retries have been exhausted
111979 + * fc_rport_error - Handler for any errors
111980 * @rport: The fc_rport object
111981 * @fp: The frame pointer
111982 *
111983 + * If the error was caused by a resource allocation failure
111984 + * then wait for half a second and retry, otherwise retry
111985 + * immediately.
111986 + *
111987 * Locking Note: The rport lock is expected to be held before
111988 * calling this routine
111989 */
111990 static void fc_rport_error(struct fc_rport *rport, struct fc_frame *fp)
111991 {
111992 struct fc_rport_libfc_priv *rdata = rport->dd_data;
111993 + unsigned long delay = 0;
111994
111995 FC_DEBUG_RPORT("Error %ld in state %s, retries %d\n",
111996 PTR_ERR(fp), fc_rport_state(rport), rdata->retries);
111997
111998 - switch (rdata->rp_state) {
111999 - case RPORT_ST_PLOGI:
112000 - case RPORT_ST_PRLI:
112001 - case RPORT_ST_LOGO:
112002 - rdata->event = RPORT_EV_FAILED;
112003 - queue_work(rport_event_queue,
112004 - &rdata->event_work);
112005 - break;
112006 - case RPORT_ST_RTV:
112007 - fc_rport_enter_ready(rport);
112008 - break;
112009 - case RPORT_ST_NONE:
112010 - case RPORT_ST_READY:
112011 - case RPORT_ST_INIT:
112012 - break;
112013 - }
112014 -}
112015 -
112016 -/**
112017 - * fc_rport_error_retry() - Error handler when retries are desired
112018 - * @rport: The fc_rport object
112019 - * @fp: The frame pointer
112020 - *
112021 - * If the error was an exchange timeout retry immediately,
112022 - * otherwise wait for E_D_TOV.
112023 - *
112024 - * Locking Note: The rport lock is expected to be held before
112025 - * calling this routine
112026 - */
112027 -static void fc_rport_error_retry(struct fc_rport *rport, struct fc_frame *fp)
112028 -{
112029 - struct fc_rport_libfc_priv *rdata = rport->dd_data;
112030 - unsigned long delay = FC_DEF_E_D_TOV;
112031 -
112032 - /* make sure this isn't an FC_EX_CLOSED error, never retry those */
112033 - if (PTR_ERR(fp) == -FC_EX_CLOSED)
112034 - return fc_rport_error(rport, fp);
112035 -
112036 - if (rdata->retries < rdata->local_port->max_retry_count) {
112037 - FC_DEBUG_RPORT("Error %ld in state %s, retrying\n",
112038 - PTR_ERR(fp), fc_rport_state(rport));
112039 - rdata->retries++;
112040 - /* no additional delay on exchange timeouts */
112041 - if (PTR_ERR(fp) == -FC_EX_TIMEOUT)
112042 - delay = 0;
112043 - get_device(&rport->dev);
112044 - schedule_delayed_work(&rdata->retry_work, delay);
112045 - return;
112046 + if (!fp || PTR_ERR(fp) == -FC_EX_TIMEOUT) {
112047 + /*
112048 + * Memory allocation failure, or the exchange timed out.
112049 + * Retry after delay
112050 + */
112051 + if (rdata->retries < rdata->local_port->max_retry_count) {
112052 + rdata->retries++;
112053 + if (!fp)
112054 + delay = msecs_to_jiffies(500);
112055 + get_device(&rport->dev);
112056 + schedule_delayed_work(&rdata->retry_work, delay);
112057 + } else {
112058 + switch (rdata->rp_state) {
112059 + case RPORT_ST_PLOGI:
112060 + case RPORT_ST_PRLI:
112061 + case RPORT_ST_LOGO:
112062 + rdata->event = RPORT_EV_FAILED;
112063 + queue_work(rport_event_queue,
112064 + &rdata->event_work);
112065 + break;
112066 + case RPORT_ST_RTV:
112067 + fc_rport_enter_ready(rport);
112068 + break;
112069 + case RPORT_ST_NONE:
112070 + case RPORT_ST_READY:
112071 + case RPORT_ST_INIT:
112072 + break;
112073 + }
112074 + }
112075 }
112076 -
112077 - return fc_rport_error(rport, fp);
112078 }
112079
112080 /**
112081 - * fc_rport_plogi_recv_resp() - Handle incoming ELS PLOGI response
112082 + * fc_rport_plogi_recv_resp - Handle incoming ELS PLOGI response
112083 * @sp: current sequence in the PLOGI exchange
112084 * @fp: response frame
112085 * @rp_arg: Fibre Channel remote port
112086 @@ -505,17 +483,17 @@
112087 FC_DEBUG_RPORT("Received a PLOGI response from port (%6x)\n",
112088 rport->port_id);
112089
112090 - if (IS_ERR(fp)) {
112091 - fc_rport_error_retry(rport, fp);
112092 - goto err;
112093 - }
112094 -
112095 if (rdata->rp_state != RPORT_ST_PLOGI) {
112096 FC_DBG("Received a PLOGI response, but in state %s\n",
112097 fc_rport_state(rport));
112098 goto out;
112099 }
112100
112101 + if (IS_ERR(fp)) {
112102 + fc_rport_error(rport, fp);
112103 + goto err;
112104 + }
112105 +
112106 op = fc_frame_payload_op(fp);
112107 if (op == ELS_LS_ACC &&
112108 (plp = fc_frame_payload_get(fp, sizeof(*plp))) != NULL) {
112109 @@ -544,7 +522,7 @@
112110 else
112111 fc_rport_enter_prli(rport);
112112 } else
112113 - fc_rport_error_retry(rport, fp);
112114 + fc_rport_error(rport, fp);
112115
112116 out:
112117 fc_frame_free(fp);
112118 @@ -554,7 +532,7 @@
112119 }
112120
112121 /**
112122 - * fc_rport_enter_plogi() - Send Port Login (PLOGI) request to peer
112123 + * fc_rport_enter_plogi - Send Port Login (PLOGI) request to peer
112124 * @rport: Fibre Channel remote port to send PLOGI to
112125 *
112126 * Locking Note: The rport lock is expected to be held before calling
112127 @@ -574,20 +552,20 @@
112128 rport->maxframe_size = FC_MIN_MAX_PAYLOAD;
112129 fp = fc_frame_alloc(lport, sizeof(struct fc_els_flogi));
112130 if (!fp) {
112131 - fc_rport_error_retry(rport, fp);
112132 + fc_rport_error(rport, fp);
112133 return;
112134 }
112135 rdata->e_d_tov = lport->e_d_tov;
112136
112137 if (!lport->tt.elsct_send(lport, rport, fp, ELS_PLOGI,
112138 fc_rport_plogi_resp, rport, lport->e_d_tov))
112139 - fc_rport_error_retry(rport, fp);
112140 + fc_rport_error(rport, fp);
112141 else
112142 get_device(&rport->dev);
112143 }
112144
112145 /**
112146 - * fc_rport_prli_resp() - Process Login (PRLI) response handler
112147 + * fc_rport_prli_resp - Process Login (PRLI) response handler
112148 * @sp: current sequence in the PRLI exchange
112149 * @fp: response frame
112150 * @rp_arg: Fibre Channel remote port
112151 @@ -614,17 +592,17 @@
112152 FC_DEBUG_RPORT("Received a PRLI response from port (%6x)\n",
112153 rport->port_id);
112154
112155 - if (IS_ERR(fp)) {
112156 - fc_rport_error_retry(rport, fp);
112157 - goto err;
112158 - }
112159 -
112160 if (rdata->rp_state != RPORT_ST_PRLI) {
112161 FC_DBG("Received a PRLI response, but in state %s\n",
112162 fc_rport_state(rport));
112163 goto out;
112164 }
112165
112166 + if (IS_ERR(fp)) {
112167 + fc_rport_error(rport, fp);
112168 + goto err;
112169 + }
112170 +
112171 op = fc_frame_payload_op(fp);
112172 if (op == ELS_LS_ACC) {
112173 pp = fc_frame_payload_get(fp, sizeof(*pp));
112174 @@ -657,7 +635,7 @@
112175 }
112176
112177 /**
112178 - * fc_rport_logo_resp() - Logout (LOGO) response handler
112179 + * fc_rport_logo_resp - Logout (LOGO) response handler
112180 * @sp: current sequence in the LOGO exchange
112181 * @fp: response frame
112182 * @rp_arg: Fibre Channel remote port
112183 @@ -679,7 +657,7 @@
112184 rport->port_id);
112185
112186 if (IS_ERR(fp)) {
112187 - fc_rport_error_retry(rport, fp);
112188 + fc_rport_error(rport, fp);
112189 goto err;
112190 }
112191
112192 @@ -706,7 +684,7 @@
112193 }
112194
112195 /**
112196 - * fc_rport_enter_prli() - Send Process Login (PRLI) request to peer
112197 + * fc_rport_enter_prli - Send Process Login (PRLI) request to peer
112198 * @rport: Fibre Channel remote port to send PRLI to
112199 *
112200 * Locking Note: The rport lock is expected to be held before calling
112201 @@ -729,19 +707,19 @@
112202
112203 fp = fc_frame_alloc(lport, sizeof(*pp));
112204 if (!fp) {
112205 - fc_rport_error_retry(rport, fp);
112206 + fc_rport_error(rport, fp);
112207 return;
112208 }
112209
112210 if (!lport->tt.elsct_send(lport, rport, fp, ELS_PRLI,
112211 fc_rport_prli_resp, rport, lport->e_d_tov))
112212 - fc_rport_error_retry(rport, fp);
112213 + fc_rport_error(rport, fp);
112214 else
112215 get_device(&rport->dev);
112216 }
112217
112218 /**
112219 - * fc_rport_els_rtv_resp() - Request Timeout Value response handler
112220 + * fc_rport_els_rtv_resp - Request Timeout Value response handler
112221 * @sp: current sequence in the RTV exchange
112222 * @fp: response frame
112223 * @rp_arg: Fibre Channel remote port
112224 @@ -764,17 +742,17 @@
112225 FC_DEBUG_RPORT("Received a RTV response from port (%6x)\n",
112226 rport->port_id);
112227
112228 - if (IS_ERR(fp)) {
112229 - fc_rport_error(rport, fp);
112230 - goto err;
112231 - }
112232 -
112233 if (rdata->rp_state != RPORT_ST_RTV) {
112234 FC_DBG("Received a RTV response, but in state %s\n",
112235 fc_rport_state(rport));
112236 goto out;
112237 }
112238
112239 + if (IS_ERR(fp)) {
112240 + fc_rport_error(rport, fp);
112241 + goto err;
112242 + }
112243 +
112244 op = fc_frame_payload_op(fp);
112245 if (op == ELS_LS_ACC) {
112246 struct fc_els_rtv_acc *rtv;
112247 @@ -807,7 +785,7 @@
112248 }
112249
112250 /**
112251 - * fc_rport_enter_rtv() - Send Request Timeout Value (RTV) request to peer
112252 + * fc_rport_enter_rtv - Send Request Timeout Value (RTV) request to peer
112253 * @rport: Fibre Channel remote port to send RTV to
112254 *
112255 * Locking Note: The rport lock is expected to be held before calling
112256 @@ -826,19 +804,19 @@
112257
112258 fp = fc_frame_alloc(lport, sizeof(struct fc_els_rtv));
112259 if (!fp) {
112260 - fc_rport_error_retry(rport, fp);
112261 + fc_rport_error(rport, fp);
112262 return;
112263 }
112264
112265 if (!lport->tt.elsct_send(lport, rport, fp, ELS_RTV,
112266 fc_rport_rtv_resp, rport, lport->e_d_tov))
112267 - fc_rport_error_retry(rport, fp);
112268 + fc_rport_error(rport, fp);
112269 else
112270 get_device(&rport->dev);
112271 }
112272
112273 /**
112274 - * fc_rport_enter_logo() - Send Logout (LOGO) request to peer
112275 + * fc_rport_enter_logo - Send Logout (LOGO) request to peer
112276 * @rport: Fibre Channel remote port to send LOGO to
112277 *
112278 * Locking Note: The rport lock is expected to be held before calling
112279 @@ -857,20 +835,20 @@
112280
112281 fp = fc_frame_alloc(lport, sizeof(struct fc_els_logo));
112282 if (!fp) {
112283 - fc_rport_error_retry(rport, fp);
112284 + fc_rport_error(rport, fp);
112285 return;
112286 }
112287
112288 if (!lport->tt.elsct_send(lport, rport, fp, ELS_LOGO,
112289 fc_rport_logo_resp, rport, lport->e_d_tov))
112290 - fc_rport_error_retry(rport, fp);
112291 + fc_rport_error(rport, fp);
112292 else
112293 get_device(&rport->dev);
112294 }
112295
112296
112297 /**
112298 - * fc_rport_recv_req() - Receive a request from a rport
112299 + * fc_rport_recv_req - Receive a request from a rport
112300 * @sp: current sequence in the PLOGI exchange
112301 * @fp: response frame
112302 * @rp_arg: Fibre Channel remote port
112303 @@ -931,7 +909,7 @@
112304 }
112305
112306 /**
112307 - * fc_rport_recv_plogi_req() - Handle incoming Port Login (PLOGI) request
112308 + * fc_rport_recv_plogi_req - Handle incoming Port Login (PLOGI) request
112309 * @rport: Fibre Channel remote port that initiated PLOGI
112310 * @sp: current sequence in the PLOGI exchange
112311 * @fp: PLOGI request frame
112312 @@ -1053,7 +1031,7 @@
112313 }
112314
112315 /**
112316 - * fc_rport_recv_prli_req() - Handle incoming Process Login (PRLI) request
112317 + * fc_rport_recv_prli_req - Handle incoming Process Login (PRLI) request
112318 * @rport: Fibre Channel remote port that initiated PRLI
112319 * @sp: current sequence in the PRLI exchange
112320 * @fp: PRLI request frame
112321 @@ -1204,7 +1182,7 @@
112322 }
112323
112324 /**
112325 - * fc_rport_recv_prlo_req() - Handle incoming Process Logout (PRLO) request
112326 + * fc_rport_recv_prlo_req - Handle incoming Process Logout (PRLO) request
112327 * @rport: Fibre Channel remote port that initiated PRLO
112328 * @sp: current sequence in the PRLO exchange
112329 * @fp: PRLO request frame
112330 @@ -1235,7 +1213,7 @@
112331 }
112332
112333 /**
112334 - * fc_rport_recv_logo_req() - Handle incoming Logout (LOGO) request
112335 + * fc_rport_recv_logo_req - Handle incoming Logout (LOGO) request
112336 * @rport: Fibre Channel remote port that initiated LOGO
112337 * @sp: current sequence in the LOGO exchange
112338 * @fp: LOGO request frame
112339 @@ -1271,9 +1249,6 @@
112340
112341 int fc_rport_init(struct fc_lport *lport)
112342 {
112343 - if (!lport->tt.rport_create)
112344 - lport->tt.rport_create = fc_rport_rogue_create;
112345 -
112346 if (!lport->tt.rport_login)
112347 lport->tt.rport_login = fc_rport_login;
112348
112349 @@ -1310,7 +1285,7 @@
112350 struct fc_rport_libfc_priv *rdata = rport->dd_data;
112351 struct fc_lport *lport = rdata->local_port;
112352
112353 - lport->tt.exch_mgr_reset(lport, 0, rport->port_id);
112354 - lport->tt.exch_mgr_reset(lport, rport->port_id, 0);
112355 + lport->tt.exch_mgr_reset(lport->emp, 0, rport->port_id);
112356 + lport->tt.exch_mgr_reset(lport->emp, rport->port_id, 0);
112357 }
112358 EXPORT_SYMBOL(fc_rport_terminate_io);
112359 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/libiscsi.c linux-2.6.29-rc3.owrt/drivers/scsi/libiscsi.c
112360 --- linux-2.6.29.owrt/drivers/scsi/libiscsi.c 2009-05-10 22:04:39.000000000 +0200
112361 +++ linux-2.6.29-rc3.owrt/drivers/scsi/libiscsi.c 2009-05-10 23:48:29.000000000 +0200
112362 @@ -1998,8 +1998,6 @@
112363 if (!shost->can_queue)
112364 shost->can_queue = ISCSI_DEF_XMIT_CMDS_MAX;
112365
112366 - if (!shost->transportt->eh_timed_out)
112367 - shost->transportt->eh_timed_out = iscsi_eh_cmd_timed_out;
112368 return scsi_add_host(shost, pdev);
112369 }
112370 EXPORT_SYMBOL_GPL(iscsi_host_add);
112371 @@ -2022,6 +2020,7 @@
112372 shost = scsi_host_alloc(sht, sizeof(struct iscsi_host) + dd_data_size);
112373 if (!shost)
112374 return NULL;
112375 + shost->transportt->eh_timed_out = iscsi_eh_cmd_timed_out;
112376
112377 if (qdepth > ISCSI_MAX_CMD_PER_LUN || qdepth < 1) {
112378 if (qdepth != 0)
112379 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/lpfc/lpfc_els.c linux-2.6.29-rc3.owrt/drivers/scsi/lpfc/lpfc_els.c
112380 --- linux-2.6.29.owrt/drivers/scsi/lpfc/lpfc_els.c 2009-05-10 22:04:39.000000000 +0200
112381 +++ linux-2.6.29-rc3.owrt/drivers/scsi/lpfc/lpfc_els.c 2009-05-10 23:48:29.000000000 +0200
112382 @@ -5258,7 +5258,6 @@
112383 sizeof(struct lpfc_name));
112384 break;
112385 default:
112386 - kfree(els_data);
112387 return;
112388 }
112389 memcpy(els_data->wwpn, &ndlp->nlp_portname, sizeof(struct lpfc_name));
112390 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_attr.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_attr.c
112391 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_attr.c 2009-05-10 22:04:39.000000000 +0200
112392 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_attr.c 2009-05-10 23:48:29.000000000 +0200
112393 @@ -244,6 +244,12 @@
112394 if (ha->optrom_state != QLA_SWAITING)
112395 break;
112396
112397 + if (start & 0xfff) {
112398 + qla_printk(KERN_WARNING, ha,
112399 + "Invalid start region 0x%x/0x%x.\n", start, size);
112400 + return -EINVAL;
112401 + }
112402 +
112403 ha->optrom_region_start = start;
112404 ha->optrom_region_size = start + size > ha->optrom_size ?
112405 ha->optrom_size - start : size;
112406 @@ -297,7 +303,8 @@
112407 else if (start == (ha->flt_region_boot * 4) ||
112408 start == (ha->flt_region_fw * 4))
112409 valid = 1;
112410 - else if (IS_QLA25XX(ha) || IS_QLA81XX(ha))
112411 + else if ((IS_QLA25XX(ha) || IS_QLA81XX(ha)) &&
112412 + start == (ha->flt_region_vpd_nvram * 4))
112413 valid = 1;
112414 if (!valid) {
112415 qla_printk(KERN_WARNING, ha,
112416 @@ -1258,6 +1265,13 @@
112417 test_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags))
112418 msleep(1000);
112419
112420 + if (ha->mqenable) {
112421 + if (qla25xx_delete_queues(vha, 0) != QLA_SUCCESS)
112422 + qla_printk(KERN_WARNING, ha,
112423 + "Queue delete failed.\n");
112424 + vha->req_ques[0] = ha->req_q_map[0]->id;
112425 + }
112426 +
112427 qla24xx_disable_vp(vha);
112428
112429 fc_remove_host(vha->host);
112430 @@ -1279,12 +1293,6 @@
112431 vha->host_no, vha->vp_idx, vha));
112432 }
112433
112434 - if (ha->mqenable) {
112435 - if (qla25xx_delete_queues(vha, 0) != QLA_SUCCESS)
112436 - qla_printk(KERN_WARNING, ha,
112437 - "Queue delete failed.\n");
112438 - }
112439 -
112440 scsi_host_put(vha->host);
112441 qla_printk(KERN_INFO, ha, "vport %d deleted\n", id);
112442 return 0;
112443 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_def.h linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_def.h
112444 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_def.h 2009-05-10 22:04:39.000000000 +0200
112445 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_def.h 2009-05-10 23:48:29.000000000 +0200
112446 @@ -2135,7 +2135,6 @@
112447 /* Work events. */
112448 enum qla_work_type {
112449 QLA_EVT_AEN,
112450 - QLA_EVT_IDC_ACK,
112451 };
112452
112453
112454 @@ -2150,10 +2149,6 @@
112455 enum fc_host_event_code code;
112456 u32 data;
112457 } aen;
112458 - struct {
112459 -#define QLA_IDC_ACK_REGS 7
112460 - uint16_t mb[QLA_IDC_ACK_REGS];
112461 - } idc_ack;
112462 } u;
112463 };
112464
112465 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_devtbl.h linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_devtbl.h
112466 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_devtbl.h 2009-05-10 22:04:39.000000000 +0200
112467 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_devtbl.h 2009-05-10 23:48:29.000000000 +0200
112468 @@ -72,7 +72,7 @@
112469 "QLA2462", "Sun PCI-X 2.0 to 4Gb FC, Dual Channel", /* 0x141 */
112470 "QLE2460", "Sun PCI-Express to 2Gb FC, Single Channel", /* 0x142 */
112471 "QLE2462", "Sun PCI-Express to 4Gb FC, Single Channel", /* 0x143 */
112472 - "QEM2462", "Server I/O Module 4Gb FC, Dual Channel", /* 0x144 */
112473 + "QEM2462" "Server I/O Module 4Gb FC, Dual Channel", /* 0x144 */
112474 "QLE2440", "PCI-Express to 4Gb FC, Single Channel", /* 0x145 */
112475 "QLE2464", "PCI-Express to 4Gb FC, Quad Channel", /* 0x146 */
112476 "QLA2440", "PCI-X 2.0 to 4Gb FC, Single Channel", /* 0x147 */
112477 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_fw.h linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_fw.h
112478 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_fw.h 2009-05-10 22:04:39.000000000 +0200
112479 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_fw.h 2009-05-10 23:48:29.000000000 +0200
112480 @@ -1402,8 +1402,6 @@
112481 #define MBA_IDC_NOTIFY 0x8101
112482 #define MBA_IDC_TIME_EXT 0x8102
112483
112484 -#define MBC_IDC_ACK 0x101
112485 -
112486 struct nvram_81xx {
112487 /* NVRAM header. */
112488 uint8_t id[4];
112489 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_gbl.h linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_gbl.h
112490 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_gbl.h 2009-05-10 22:04:39.000000000 +0200
112491 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_gbl.h 2009-05-10 23:48:29.000000000 +0200
112492 @@ -72,7 +72,6 @@
112493 extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
112494 extern int qla2x00_post_aen_work(struct scsi_qla_host *, enum
112495 fc_host_event_code, u32);
112496 -extern int qla2x00_post_idc_ack_work(struct scsi_qla_host *, uint16_t *);
112497
112498 extern void qla2x00_abort_fcport_cmds(fc_port_t *);
112499 extern struct scsi_qla_host *qla2x00_create_host(struct scsi_host_template *,
112500 @@ -267,8 +266,6 @@
112501
112502 extern int qla84xx_verify_chip(struct scsi_qla_host *, uint16_t *);
112503
112504 -extern int qla81xx_idc_ack(scsi_qla_host_t *, uint16_t *);
112505 -
112506 /*
112507 * Global Function Prototypes in qla_isr.c source file.
112508 */
112509 @@ -379,8 +376,10 @@
112510
112511 /* Globa function prototypes for multi-q */
112512 extern int qla25xx_request_irq(struct rsp_que *);
112513 -extern int qla25xx_init_req_que(struct scsi_qla_host *, struct req_que *);
112514 -extern int qla25xx_init_rsp_que(struct scsi_qla_host *, struct rsp_que *);
112515 +extern int qla25xx_init_req_que(struct scsi_qla_host *, struct req_que *,
112516 + uint8_t);
112517 +extern int qla25xx_init_rsp_que(struct scsi_qla_host *, struct rsp_que *,
112518 + uint8_t);
112519 extern int qla25xx_create_req_que(struct qla_hw_data *, uint16_t, uint8_t,
112520 uint16_t, uint8_t, uint8_t);
112521 extern int qla25xx_create_rsp_que(struct qla_hw_data *, uint16_t, uint8_t,
112522 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_init.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_init.c
112523 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_init.c 2009-05-10 22:04:39.000000000 +0200
112524 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_init.c 2009-05-10 23:48:29.000000000 +0200
112525 @@ -1226,8 +1226,9 @@
112526 icb->firmware_options_2 |=
112527 __constant_cpu_to_le32(BIT_18);
112528
112529 - icb->firmware_options_2 &= __constant_cpu_to_le32(~BIT_22);
112530 + icb->firmware_options_2 |= __constant_cpu_to_le32(BIT_22);
112531 icb->firmware_options_2 |= __constant_cpu_to_le32(BIT_23);
112532 + ha->rsp_q_map[0]->options = icb->firmware_options_2;
112533
112534 WRT_REG_DWORD(&reg->isp25mq.req_q_in, 0);
112535 WRT_REG_DWORD(&reg->isp25mq.req_q_out, 0);
112536 @@ -1308,12 +1309,8 @@
112537
112538 DEBUG(printk("scsi(%ld): Issue init firmware.\n", vha->host_no));
112539
112540 - if (ha->flags.npiv_supported) {
112541 - if (ha->operating_mode == LOOP)
112542 - ha->max_npiv_vports = MIN_MULTI_ID_FABRIC - 1;
112543 + if (ha->flags.npiv_supported)
112544 mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports);
112545 - }
112546 -
112547
112548 mid_init_cb->options = __constant_cpu_to_le16(BIT_1);
112549
112550 @@ -2614,7 +2611,6 @@
112551 port_id_t wrap, nxt_d_id;
112552 struct qla_hw_data *ha = vha->hw;
112553 struct scsi_qla_host *vp, *base_vha = pci_get_drvdata(ha->pdev);
112554 - struct scsi_qla_host *tvp;
112555
112556 rval = QLA_SUCCESS;
112557
112558 @@ -2714,7 +2710,7 @@
112559 /* Bypass virtual ports of the same host. */
112560 found = 0;
112561 if (ha->num_vhosts) {
112562 - list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
112563 + list_for_each_entry(vp, &ha->vp_list, list) {
112564 if (new_fcport->d_id.b24 == vp->d_id.b24) {
112565 found = 1;
112566 break;
112567 @@ -2837,7 +2833,6 @@
112568 uint16_t first_loop_id;
112569 struct qla_hw_data *ha = vha->hw;
112570 struct scsi_qla_host *vp;
112571 - struct scsi_qla_host *tvp;
112572
112573 rval = QLA_SUCCESS;
112574
112575 @@ -2862,7 +2857,7 @@
112576 /* Check for loop ID being already in use. */
112577 found = 0;
112578 fcport = NULL;
112579 - list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
112580 + list_for_each_entry(vp, &ha->vp_list, list) {
112581 list_for_each_entry(fcport, &vp->vp_fcports, list) {
112582 if (fcport->loop_id == dev->loop_id &&
112583 fcport != dev) {
112584 @@ -3297,7 +3292,6 @@
112585 uint8_t status = 0;
112586 struct qla_hw_data *ha = vha->hw;
112587 struct scsi_qla_host *vp;
112588 - struct scsi_qla_host *tvp;
112589 struct req_que *req = ha->req_q_map[0];
112590
112591 if (vha->flags.online) {
112592 @@ -3313,7 +3307,7 @@
112593 if (atomic_read(&vha->loop_state) != LOOP_DOWN) {
112594 atomic_set(&vha->loop_state, LOOP_DOWN);
112595 qla2x00_mark_all_devices_lost(vha, 0);
112596 - list_for_each_entry_safe(vp, tvp, &ha->vp_list, list)
112597 + list_for_each_entry(vp, &ha->vp_list, list)
112598 qla2x00_mark_all_devices_lost(vp, 0);
112599 } else {
112600 if (!atomic_read(&vha->loop_down_timer))
112601 @@ -3410,7 +3404,7 @@
112602 DEBUG(printk(KERN_INFO
112603 "qla2x00_abort_isp(%ld): succeeded.\n",
112604 vha->host_no));
112605 - list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
112606 + list_for_each_entry(vp, &ha->vp_list, list) {
112607 if (vp->vp_idx)
112608 qla2x00_vp_abort_isp(vp);
112609 }
112610 @@ -3435,7 +3429,7 @@
112611 static int
112612 qla2x00_restart_isp(scsi_qla_host_t *vha)
112613 {
112614 - int status = 0;
112615 + uint8_t status = 0;
112616 uint32_t wait_time;
112617 struct qla_hw_data *ha = vha->hw;
112618 struct req_que *req = ha->req_q_map[0];
112619 @@ -3499,7 +3493,7 @@
112620 rsp = ha->rsp_q_map[i];
112621 if (rsp) {
112622 rsp->options &= ~BIT_0;
112623 - ret = qla25xx_init_rsp_que(base_vha, rsp);
112624 + ret = qla25xx_init_rsp_que(base_vha, rsp, rsp->options);
112625 if (ret != QLA_SUCCESS)
112626 DEBUG2_17(printk(KERN_WARNING
112627 "%s Rsp que:%d init failed\n", __func__,
112628 @@ -3513,7 +3507,7 @@
112629 if (req) {
112630 /* Clear outstanding commands array. */
112631 req->options &= ~BIT_0;
112632 - ret = qla25xx_init_req_que(base_vha, req);
112633 + ret = qla25xx_init_req_que(base_vha, req, req->options);
112634 if (ret != QLA_SUCCESS)
112635 DEBUG2_17(printk(KERN_WARNING
112636 "%s Req que:%d init failed\n", __func__,
112637 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_isr.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_isr.c
112638 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_isr.c 2009-05-10 22:04:39.000000000 +0200
112639 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_isr.c 2009-05-10 23:48:29.000000000 +0200
112640 @@ -266,40 +266,6 @@
112641 }
112642 }
112643
112644 -static void
112645 -qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr)
112646 -{
112647 - static char *event[] =
112648 - { "Complete", "Request Notification", "Time Extension" };
112649 - int rval;
112650 - struct device_reg_24xx __iomem *reg24 = &vha->hw->iobase->isp24;
112651 - uint16_t __iomem *wptr;
112652 - uint16_t cnt, timeout, mb[QLA_IDC_ACK_REGS];
112653 -
112654 - /* Seed data -- mailbox1 -> mailbox7. */
112655 - wptr = (uint16_t __iomem *)&reg24->mailbox1;
112656 - for (cnt = 0; cnt < QLA_IDC_ACK_REGS; cnt++, wptr++)
112657 - mb[cnt] = RD_REG_WORD(wptr);
112658 -
112659 - DEBUG2(printk("scsi(%ld): Inter-Driver Commucation %s -- "
112660 - "%04x %04x %04x %04x %04x %04x %04x.\n", vha->host_no,
112661 - event[aen & 0xff],
112662 - mb[0], mb[1], mb[2], mb[3], mb[4], mb[5], mb[6]));
112663 -
112664 - /* Acknowledgement needed? [Notify && non-zero timeout]. */
112665 - timeout = (descr >> 8) & 0xf;
112666 - if (aen != MBA_IDC_NOTIFY || !timeout)
112667 - return;
112668 -
112669 - DEBUG2(printk("scsi(%ld): Inter-Driver Commucation %s -- "
112670 - "ACK timeout=%d.\n", vha->host_no, event[aen & 0xff], timeout));
112671 -
112672 - rval = qla2x00_post_idc_ack_work(vha, mb);
112673 - if (rval != QLA_SUCCESS)
112674 - qla_printk(KERN_WARNING, vha->hw,
112675 - "IDC failed to post ACK.\n");
112676 -}
112677 -
112678 /**
112679 * qla2x00_async_event() - Process aynchronous events.
112680 * @ha: SCSI driver HA context
112681 @@ -748,9 +714,21 @@
112682 "%04x %04x %04x\n", vha->host_no, mb[1], mb[2], mb[3]));
112683 break;
112684 case MBA_IDC_COMPLETE:
112685 + DEBUG2(printk("scsi(%ld): Inter-Driver Commucation "
112686 + "Complete -- %04x %04x %04x\n", vha->host_no, mb[1], mb[2],
112687 + mb[3]));
112688 + break;
112689 case MBA_IDC_NOTIFY:
112690 + DEBUG2(printk("scsi(%ld): Inter-Driver Commucation "
112691 + "Request Notification -- %04x %04x %04x\n", vha->host_no,
112692 + mb[1], mb[2], mb[3]));
112693 + /**** Mailbox registers 4 - 7 valid!!! */
112694 + break;
112695 case MBA_IDC_TIME_EXT:
112696 - qla81xx_idc_event(vha, mb[0], mb[1]);
112697 + DEBUG2(printk("scsi(%ld): Inter-Driver Commucation "
112698 + "Time Extension -- %04x %04x %04x\n", vha->host_no, mb[1],
112699 + mb[2], mb[3]));
112700 + /**** Mailbox registers 4 - 7 valid!!! */
112701 break;
112702 }
112703
112704 @@ -1729,6 +1707,7 @@
112705 struct qla_hw_data *ha;
112706 struct rsp_que *rsp;
112707 struct device_reg_24xx __iomem *reg;
112708 + uint16_t msix_disabled_hccr = 0;
112709
112710 rsp = (struct rsp_que *) dev_id;
112711 if (!rsp) {
112712 @@ -1741,8 +1720,17 @@
112713
112714 spin_lock_irq(&ha->hardware_lock);
112715
112716 + msix_disabled_hccr = rsp->options;
112717 + if (!rsp->id)
112718 + msix_disabled_hccr &= __constant_cpu_to_le32(BIT_22);
112719 + else
112720 + msix_disabled_hccr &= __constant_cpu_to_le32(BIT_6);
112721 +
112722 qla24xx_process_response_queue(rsp);
112723
112724 + if (!msix_disabled_hccr)
112725 + WRT_REG_DWORD(&reg->hccr, HCCRX_CLR_RISC_INT);
112726 +
112727 spin_unlock_irq(&ha->hardware_lock);
112728
112729 return IRQ_HANDLED;
112730 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_mbx.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_mbx.c
112731 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_mbx.c 2009-05-10 22:04:39.000000000 +0200
112732 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_mbx.c 2009-05-10 23:48:29.000000000 +0200
112733 @@ -2685,7 +2685,6 @@
112734 uint16_t stat = le16_to_cpu(rptid_entry->vp_idx);
112735 struct qla_hw_data *ha = vha->hw;
112736 scsi_qla_host_t *vp;
112737 - scsi_qla_host_t *tvp;
112738
112739 if (rptid_entry->entry_status != 0)
112740 return;
112741 @@ -2711,7 +2710,7 @@
112742 if (MSB(stat) == 1)
112743 return;
112744
112745 - list_for_each_entry_safe(vp, tvp, &ha->vp_list, list)
112746 + list_for_each_entry(vp, &ha->vp_list, list)
112747 if (vp_idx == vp->vp_idx)
112748 break;
112749 if (!vp)
112750 @@ -3091,7 +3090,8 @@
112751 }
112752
112753 int
112754 -qla25xx_init_req_que(struct scsi_qla_host *vha, struct req_que *req)
112755 +qla25xx_init_req_que(struct scsi_qla_host *vha, struct req_que *req,
112756 + uint8_t options)
112757 {
112758 int rval;
112759 unsigned long flags;
112760 @@ -3101,7 +3101,7 @@
112761 struct qla_hw_data *ha = vha->hw;
112762
112763 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
112764 - mcp->mb[1] = req->options;
112765 + mcp->mb[1] = options;
112766 mcp->mb[2] = MSW(LSD(req->dma));
112767 mcp->mb[3] = LSW(LSD(req->dma));
112768 mcp->mb[6] = MSW(MSD(req->dma));
112769 @@ -3128,7 +3128,7 @@
112770 mcp->tov = 60;
112771
112772 spin_lock_irqsave(&ha->hardware_lock, flags);
112773 - if (!(req->options & BIT_0)) {
112774 + if (!(options & BIT_0)) {
112775 WRT_REG_DWORD(&reg->req_q_in, 0);
112776 WRT_REG_DWORD(&reg->req_q_out, 0);
112777 }
112778 @@ -3142,7 +3142,8 @@
112779 }
112780
112781 int
112782 -qla25xx_init_rsp_que(struct scsi_qla_host *vha, struct rsp_que *rsp)
112783 +qla25xx_init_rsp_que(struct scsi_qla_host *vha, struct rsp_que *rsp,
112784 + uint8_t options)
112785 {
112786 int rval;
112787 unsigned long flags;
112788 @@ -3152,7 +3153,7 @@
112789 struct qla_hw_data *ha = vha->hw;
112790
112791 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
112792 - mcp->mb[1] = rsp->options;
112793 + mcp->mb[1] = options;
112794 mcp->mb[2] = MSW(LSD(rsp->dma));
112795 mcp->mb[3] = LSW(LSD(rsp->dma));
112796 mcp->mb[6] = MSW(MSD(rsp->dma));
112797 @@ -3177,7 +3178,7 @@
112798 mcp->tov = 60;
112799
112800 spin_lock_irqsave(&ha->hardware_lock, flags);
112801 - if (!(rsp->options & BIT_0)) {
112802 + if (!(options & BIT_0)) {
112803 WRT_REG_DWORD(&reg->rsp_q_out, 0);
112804 WRT_REG_DWORD(&reg->rsp_q_in, 0);
112805 }
112806 @@ -3192,29 +3193,3 @@
112807 return rval;
112808 }
112809
112810 -int
112811 -qla81xx_idc_ack(scsi_qla_host_t *vha, uint16_t *mb)
112812 -{
112813 - int rval;
112814 - mbx_cmd_t mc;
112815 - mbx_cmd_t *mcp = &mc;
112816 -
112817 - DEBUG11(printk("%s(%ld): entered.\n", __func__, vha->host_no));
112818 -
112819 - mcp->mb[0] = MBC_IDC_ACK;
112820 - memcpy(&mcp->mb[1], mb, QLA_IDC_ACK_REGS * sizeof(uint16_t));
112821 - mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
112822 - mcp->in_mb = MBX_0;
112823 - mcp->tov = MBX_TOV_SECONDS;
112824 - mcp->flags = 0;
112825 - rval = qla2x00_mailbox_command(vha, mcp);
112826 -
112827 - if (rval != QLA_SUCCESS) {
112828 - DEBUG2_3_11(printk("%s(%ld): failed=%x (%x).\n", __func__,
112829 - vha->host_no, rval, mcp->mb[0]));
112830 - } else {
112831 - DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
112832 - }
112833 -
112834 - return rval;
112835 -}
112836 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_mid.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_mid.c
112837 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_mid.c 2009-05-10 22:04:39.000000000 +0200
112838 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_mid.c 2009-05-10 23:48:29.000000000 +0200
112839 @@ -69,10 +69,9 @@
112840 qla24xx_find_vhost_by_name(struct qla_hw_data *ha, uint8_t *port_name)
112841 {
112842 scsi_qla_host_t *vha;
112843 - struct scsi_qla_host *tvha;
112844
112845 /* Locate matching device in database. */
112846 - list_for_each_entry_safe(vha, tvha, &ha->vp_list, list) {
112847 + list_for_each_entry(vha, &ha->vp_list, list) {
112848 if (!memcmp(port_name, vha->port_name, WWN_SIZE))
112849 return vha;
112850 }
112851 @@ -195,11 +194,11 @@
112852 void
112853 qla2x00_alert_all_vps(struct rsp_que *rsp, uint16_t *mb)
112854 {
112855 - scsi_qla_host_t *vha, *tvha;
112856 + scsi_qla_host_t *vha;
112857 struct qla_hw_data *ha = rsp->hw;
112858 int i = 0;
112859
112860 - list_for_each_entry_safe(vha, tvha, &ha->vp_list, list) {
112861 + list_for_each_entry(vha, &ha->vp_list, list) {
112862 if (vha->vp_idx) {
112863 switch (mb[0]) {
112864 case MBA_LIP_OCCURRED:
112865 @@ -301,7 +300,6 @@
112866 int ret;
112867 struct qla_hw_data *ha = vha->hw;
112868 scsi_qla_host_t *vp;
112869 - struct scsi_qla_host *tvp;
112870
112871 if (vha->vp_idx)
112872 return;
112873 @@ -310,7 +308,7 @@
112874
112875 clear_bit(VP_DPC_NEEDED, &vha->dpc_flags);
112876
112877 - list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) {
112878 + list_for_each_entry(vp, &ha->vp_list, list) {
112879 if (vp->vp_idx)
112880 ret = qla2x00_do_dpc_vp(vp);
112881 }
112882 @@ -398,7 +396,7 @@
112883
112884 qla2x00_start_timer(vha, qla2x00_timer, WATCH_INTERVAL);
112885
112886 - memset(vha->req_ques, 0, sizeof(vha->req_ques));
112887 + memset(vha->req_ques, 0, sizeof(vha->req_ques) * QLA_MAX_HOST_QUES);
112888 vha->req_ques[0] = ha->req_q_map[0]->id;
112889 host->can_queue = ha->req_q_map[0]->length + 128;
112890 host->this_id = 255;
112891 @@ -473,7 +471,7 @@
112892
112893 if (req) {
112894 req->options |= BIT_0;
112895 - ret = qla25xx_init_req_que(vha, req);
112896 + ret = qla25xx_init_req_que(vha, req, req->options);
112897 }
112898 if (ret == QLA_SUCCESS)
112899 qla25xx_free_req_que(vha, req);
112900 @@ -488,7 +486,7 @@
112901
112902 if (rsp) {
112903 rsp->options |= BIT_0;
112904 - ret = qla25xx_init_rsp_que(vha, rsp);
112905 + ret = qla25xx_init_rsp_que(vha, rsp, rsp->options);
112906 }
112907 if (ret == QLA_SUCCESS)
112908 qla25xx_free_rsp_que(vha, rsp);
112909 @@ -504,7 +502,7 @@
112910
112911 req->options |= BIT_3;
112912 req->qos = qos;
112913 - ret = qla25xx_init_req_que(vha, req);
112914 + ret = qla25xx_init_req_que(vha, req, req->options);
112915 if (ret != QLA_SUCCESS)
112916 DEBUG2_17(printk(KERN_WARNING "%s failed\n", __func__));
112917 /* restore options bit */
112918 @@ -634,7 +632,7 @@
112919 req->max_q_depth = ha->req_q_map[0]->max_q_depth;
112920 mutex_unlock(&ha->vport_lock);
112921
112922 - ret = qla25xx_init_req_que(base_vha, req);
112923 + ret = qla25xx_init_req_que(base_vha, req, options);
112924 if (ret != QLA_SUCCESS) {
112925 qla_printk(KERN_WARNING, ha, "%s failed\n", __func__);
112926 mutex_lock(&ha->vport_lock);
112927 @@ -712,7 +710,7 @@
112928 if (ret)
112929 goto que_failed;
112930
112931 - ret = qla25xx_init_rsp_que(base_vha, rsp);
112932 + ret = qla25xx_init_rsp_que(base_vha, rsp, options);
112933 if (ret != QLA_SUCCESS) {
112934 qla_printk(KERN_WARNING, ha, "%s failed\n", __func__);
112935 mutex_lock(&ha->vport_lock);
112936 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_os.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_os.c
112937 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_os.c 2009-05-10 22:04:39.000000000 +0200
112938 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_os.c 2009-05-10 23:48:29.000000000 +0200
112939 @@ -2222,6 +2222,10 @@
112940 {
112941 char name[16];
112942
112943 + ha->init_cb_size = sizeof(init_cb_t);
112944 + if (IS_QLA2XXX_MIDTYPE(ha))
112945 + ha->init_cb_size = sizeof(struct mid_init_cb_24xx);
112946 +
112947 ha->init_cb = dma_alloc_coherent(&ha->pdev->dev, ha->init_cb_size,
112948 &ha->init_cb_dma, GFP_KERNEL);
112949 if (!ha->init_cb)
112950 @@ -2518,19 +2522,6 @@
112951 return qla2x00_post_work(vha, e, 1);
112952 }
112953
112954 -int
112955 -qla2x00_post_idc_ack_work(struct scsi_qla_host *vha, uint16_t *mb)
112956 -{
112957 - struct qla_work_evt *e;
112958 -
112959 - e = qla2x00_alloc_work(vha, QLA_EVT_IDC_ACK, 1);
112960 - if (!e)
112961 - return QLA_FUNCTION_FAILED;
112962 -
112963 - memcpy(e->u.idc_ack.mb, mb, QLA_IDC_ACK_REGS * sizeof(uint16_t));
112964 - return qla2x00_post_work(vha, e, 1);
112965 -}
112966 -
112967 static void
112968 qla2x00_do_work(struct scsi_qla_host *vha)
112969 {
112970 @@ -2548,9 +2539,6 @@
112971 fc_host_post_event(vha->host, fc_get_event_number(),
112972 e->u.aen.code, e->u.aen.data);
112973 break;
112974 - case QLA_EVT_IDC_ACK:
112975 - qla81xx_idc_ack(vha, e->u.idc_ack.mb);
112976 - break;
112977 }
112978 if (e->flags & QLA_EVT_FLAG_FREE)
112979 kfree(e);
112980 @@ -2564,7 +2552,7 @@
112981 void qla2x00_relogin(struct scsi_qla_host *vha)
112982 {
112983 fc_port_t *fcport;
112984 - int status;
112985 + uint8_t status;
112986 uint16_t next_loopid = 0;
112987 struct qla_hw_data *ha = vha->hw;
112988
112989 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_sup.c linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_sup.c
112990 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_sup.c 2009-05-10 22:04:39.000000000 +0200
112991 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_sup.c 2009-05-10 23:48:29.000000000 +0200
112992 @@ -684,7 +684,7 @@
112993 "end=0x%x size=0x%x.\n", le32_to_cpu(region->code), start,
112994 le32_to_cpu(region->end) >> 2, le32_to_cpu(region->size)));
112995
112996 - switch (le32_to_cpu(region->code) & 0xff) {
112997 + switch (le32_to_cpu(region->code)) {
112998 case FLT_REG_FW:
112999 ha->flt_region_fw = start;
113000 break;
113001 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_version.h linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_version.h
113002 --- linux-2.6.29.owrt/drivers/scsi/qla2xxx/qla_version.h 2009-05-10 22:04:39.000000000 +0200
113003 +++ linux-2.6.29-rc3.owrt/drivers/scsi/qla2xxx/qla_version.h 2009-05-10 23:48:29.000000000 +0200
113004 @@ -7,7 +7,7 @@
113005 /*
113006 * Driver version
113007 */
113008 -#define QLA2XXX_VERSION "8.03.00-k4"
113009 +#define QLA2XXX_VERSION "8.03.00-k2"
113010
113011 #define QLA_DRIVER_MAJOR_VER 8
113012 #define QLA_DRIVER_MINOR_VER 3
113013 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/scsi_lib.c linux-2.6.29-rc3.owrt/drivers/scsi/scsi_lib.c
113014 --- linux-2.6.29.owrt/drivers/scsi/scsi_lib.c 2009-05-10 22:04:39.000000000 +0200
113015 +++ linux-2.6.29-rc3.owrt/drivers/scsi/scsi_lib.c 2009-05-10 23:48:29.000000000 +0200
113016 @@ -1040,11 +1040,12 @@
113017 action = ACTION_FAIL;
113018 break;
113019 case ABORTED_COMMAND:
113020 - action = ACTION_FAIL;
113021 if (sshdr.asc == 0x10) { /* DIF */
113022 description = "Target Data Integrity Failure";
113023 + action = ACTION_FAIL;
113024 error = -EILSEQ;
113025 - }
113026 + } else
113027 + action = ACTION_RETRY;
113028 break;
113029 case NOT_READY:
113030 /* If the device is in the process of becoming
113031 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/scsi_scan.c linux-2.6.29-rc3.owrt/drivers/scsi/scsi_scan.c
113032 --- linux-2.6.29.owrt/drivers/scsi/scsi_scan.c 2009-05-10 22:04:39.000000000 +0200
113033 +++ linux-2.6.29-rc3.owrt/drivers/scsi/scsi_scan.c 2009-05-10 23:48:29.000000000 +0200
113034 @@ -317,7 +317,6 @@
113035 return sdev;
113036
113037 out_device_destroy:
113038 - scsi_device_set_state(sdev, SDEV_DEL);
113039 transport_destroy_device(&sdev->sdev_gendev);
113040 put_device(&sdev->sdev_gendev);
113041 out:
113042 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/sd.c linux-2.6.29-rc3.owrt/drivers/scsi/sd.c
113043 --- linux-2.6.29.owrt/drivers/scsi/sd.c 2009-05-10 22:04:39.000000000 +0200
113044 +++ linux-2.6.29-rc3.owrt/drivers/scsi/sd.c 2009-05-10 23:48:29.000000000 +0200
113045 @@ -107,7 +107,6 @@
113046 static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *);
113047 static void sd_print_result(struct scsi_disk *, int);
113048
113049 -static DEFINE_SPINLOCK(sd_index_lock);
113050 static DEFINE_IDA(sd_index_ida);
113051
113052 /* This semaphore is used to mediate the 0->1 reference get in the
113053 @@ -1167,19 +1166,23 @@
113054 /*
113055 * The device does not want the automatic start to be issued.
113056 */
113057 - if (sdkp->device->no_start_on_add)
113058 + if (sdkp->device->no_start_on_add) {
113059 break;
113060 + }
113061
113062 - if (sense_valid && sshdr.sense_key == NOT_READY) {
113063 - if (sshdr.asc == 4 && sshdr.ascq == 3)
113064 - break; /* manual intervention required */
113065 - if (sshdr.asc == 4 && sshdr.ascq == 0xb)
113066 - break; /* standby */
113067 - if (sshdr.asc == 4 && sshdr.ascq == 0xc)
113068 - break; /* unavailable */
113069 - /*
113070 - * Issue command to spin up drive when not ready
113071 - */
113072 + /*
113073 + * If manual intervention is required, or this is an
113074 + * absent USB storage device, a spinup is meaningless.
113075 + */
113076 + if (sense_valid &&
113077 + sshdr.sense_key == NOT_READY &&
113078 + sshdr.asc == 4 && sshdr.ascq == 3) {
113079 + break; /* manual intervention required */
113080 +
113081 + /*
113082 + * Issue command to spin up drive when not ready
113083 + */
113084 + } else if (sense_valid && sshdr.sense_key == NOT_READY) {
113085 if (!spintime) {
113086 sd_printk(KERN_NOTICE, sdkp, "Spinning up disk...");
113087 cmd[0] = START_STOP;
113088 @@ -1911,9 +1914,7 @@
113089 if (!ida_pre_get(&sd_index_ida, GFP_KERNEL))
113090 goto out_put;
113091
113092 - spin_lock(&sd_index_lock);
113093 error = ida_get_new(&sd_index_ida, &index);
113094 - spin_unlock(&sd_index_lock);
113095 } while (error == -EAGAIN);
113096
113097 if (error)
113098 @@ -1935,9 +1936,7 @@
113099 return 0;
113100
113101 out_free_index:
113102 - spin_lock(&sd_index_lock);
113103 ida_remove(&sd_index_ida, index);
113104 - spin_unlock(&sd_index_lock);
113105 out_put:
113106 put_disk(gd);
113107 out_free:
113108 @@ -1987,9 +1986,7 @@
113109 struct scsi_disk *sdkp = to_scsi_disk(dev);
113110 struct gendisk *disk = sdkp->disk;
113111
113112 - spin_lock(&sd_index_lock);
113113 ida_remove(&sd_index_ida, sdkp->index);
113114 - spin_unlock(&sd_index_lock);
113115
113116 disk->private_data = NULL;
113117 put_disk(disk);
113118 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/sg.c linux-2.6.29-rc3.owrt/drivers/scsi/sg.c
113119 --- linux-2.6.29.owrt/drivers/scsi/sg.c 2009-05-10 22:04:39.000000000 +0200
113120 +++ linux-2.6.29-rc3.owrt/drivers/scsi/sg.c 2009-05-10 23:48:29.000000000 +0200
113121 @@ -1078,7 +1078,7 @@
113122 case BLKTRACESETUP:
113123 return blk_trace_setup(sdp->device->request_queue,
113124 sdp->disk->disk_name,
113125 - MKDEV(SCSI_GENERIC_MAJOR, sdp->index),
113126 + sdp->device->sdev_gendev.devt,
113127 (char *)arg);
113128 case BLKTRACESTART:
113129 return blk_trace_startstop(sdp->device->request_queue, 1);
113130 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/scsi/zalon.c linux-2.6.29-rc3.owrt/drivers/scsi/zalon.c
113131 --- linux-2.6.29.owrt/drivers/scsi/zalon.c 2009-05-10 22:04:39.000000000 +0200
113132 +++ linux-2.6.29-rc3.owrt/drivers/scsi/zalon.c 2009-05-10 23:48:29.000000000 +0200
113133 @@ -137,7 +137,7 @@
113134 goto fail;
113135
113136 if (request_irq(dev->irq, ncr53c8xx_intr, IRQF_SHARED, "zalon", host)) {
113137 - dev_printk(KERN_ERR, &dev->dev, "irq problem with %d, detaching\n ",
113138 + dev_printk(KERN_ERR, dev, "irq problem with %d, detaching\n ",
113139 dev->irq);
113140 goto fail;
113141 }
113142 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/serial/8250.c linux-2.6.29-rc3.owrt/drivers/serial/8250.c
113143 --- linux-2.6.29.owrt/drivers/serial/8250.c 2009-05-10 22:04:38.000000000 +0200
113144 +++ linux-2.6.29-rc3.owrt/drivers/serial/8250.c 2009-05-10 23:48:29.000000000 +0200
113145 @@ -2083,20 +2083,6 @@
113146
113147 serial8250_set_mctrl(&up->port, up->port.mctrl);
113148
113149 - /* Serial over Lan (SoL) hack:
113150 - Intel 8257x Gigabit ethernet chips have a
113151 - 16550 emulation, to be used for Serial Over Lan.
113152 - Those chips take a longer time than a normal
113153 - serial device to signalize that a transmission
113154 - data was queued. Due to that, the above test generally
113155 - fails. One solution would be to delay the reading of
113156 - iir. However, this is not reliable, since the timeout
113157 - is variable. So, let's just don't test if we receive
113158 - TX irq. This way, we'll never enable UART_BUG_TXEN.
113159 - */
113160 - if (up->port.flags & UPF_NO_TXEN_TEST)
113161 - goto dont_test_tx_en;
113162 -
113163 /*
113164 * Do a quick test to see if we receive an
113165 * interrupt when we enable the TX irq.
113166 @@ -2116,7 +2102,6 @@
113167 up->bugs &= ~UART_BUG_TXEN;
113168 }
113169
113170 -dont_test_tx_en:
113171 spin_unlock_irqrestore(&up->port.lock, flags);
113172
113173 /*
113174 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/serial/8250_pci.c linux-2.6.29-rc3.owrt/drivers/serial/8250_pci.c
113175 --- linux-2.6.29.owrt/drivers/serial/8250_pci.c 2009-05-10 22:04:38.000000000 +0200
113176 +++ linux-2.6.29-rc3.owrt/drivers/serial/8250_pci.c 2009-05-10 23:48:29.000000000 +0200
113177 @@ -798,21 +798,6 @@
113178 return setup_port(priv, port, bar, offset, board->reg_shift);
113179 }
113180
113181 -static int skip_tx_en_setup(struct serial_private *priv,
113182 - const struct pciserial_board *board,
113183 - struct uart_port *port, int idx)
113184 -{
113185 - port->flags |= UPF_NO_TXEN_TEST;
113186 - printk(KERN_DEBUG "serial8250: skipping TxEn test for device "
113187 - "[%04x:%04x] subsystem [%04x:%04x]\n",
113188 - priv->dev->vendor,
113189 - priv->dev->device,
113190 - priv->dev->subsystem_vendor,
113191 - priv->dev->subsystem_device);
113192 -
113193 - return pci_default_setup(priv, board, port, idx);
113194 -}
113195 -
113196 /* This should be in linux/pci_ids.h */
113197 #define PCI_VENDOR_ID_SBSMODULARIO 0x124B
113198 #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B
113199 @@ -879,27 +864,6 @@
113200 .init = pci_inteli960ni_init,
113201 .setup = pci_default_setup,
113202 },
113203 - {
113204 - .vendor = PCI_VENDOR_ID_INTEL,
113205 - .device = PCI_DEVICE_ID_INTEL_8257X_SOL,
113206 - .subvendor = PCI_ANY_ID,
113207 - .subdevice = PCI_ANY_ID,
113208 - .setup = skip_tx_en_setup,
113209 - },
113210 - {
113211 - .vendor = PCI_VENDOR_ID_INTEL,
113212 - .device = PCI_DEVICE_ID_INTEL_82573L_SOL,
113213 - .subvendor = PCI_ANY_ID,
113214 - .subdevice = PCI_ANY_ID,
113215 - .setup = skip_tx_en_setup,
113216 - },
113217 - {
113218 - .vendor = PCI_VENDOR_ID_INTEL,
113219 - .device = PCI_DEVICE_ID_INTEL_82573E_SOL,
113220 - .subvendor = PCI_ANY_ID,
113221 - .subdevice = PCI_ANY_ID,
113222 - .setup = skip_tx_en_setup,
113223 - },
113224 /*
113225 * ITE
113226 */
113227 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/serial/atmel_serial.c linux-2.6.29-rc3.owrt/drivers/serial/atmel_serial.c
113228 --- linux-2.6.29.owrt/drivers/serial/atmel_serial.c 2009-05-10 22:04:38.000000000 +0200
113229 +++ linux-2.6.29-rc3.owrt/drivers/serial/atmel_serial.c 2009-05-10 23:48:29.000000000 +0200
113230 @@ -877,10 +877,6 @@
113231 }
113232 }
113233
113234 - /* Save current CSR for comparison in atmel_tasklet_func() */
113235 - atmel_port->irq_status_prev = UART_GET_CSR(port);
113236 - atmel_port->irq_status = atmel_port->irq_status_prev;
113237 -
113238 /*
113239 * Finally, enable the serial port
113240 */
113241 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/serial/jsm/jsm_driver.c linux-2.6.29-rc3.owrt/drivers/serial/jsm/jsm_driver.c
113242 --- linux-2.6.29.owrt/drivers/serial/jsm/jsm_driver.c 2009-05-10 22:04:38.000000000 +0200
113243 +++ linux-2.6.29-rc3.owrt/drivers/serial/jsm/jsm_driver.c 2009-05-10 23:48:29.000000000 +0200
113244 @@ -84,8 +84,6 @@
113245 brd->pci_dev = pdev;
113246 if (pdev->device == PCIE_DEVICE_ID_NEO_4_IBM)
113247 brd->maxports = 4;
113248 - else if (pdev->device == PCI_DEVICE_ID_DIGI_NEO_8)
113249 - brd->maxports = 8;
113250 else
113251 brd->maxports = 2;
113252
113253 @@ -214,7 +212,6 @@
113254 { PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_NEO_2RJ45), 0, 0, 2 },
113255 { PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_NEO_2RJ45PRI), 0, 0, 3 },
113256 { PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCIE_DEVICE_ID_NEO_4_IBM), 0, 0, 4 },
113257 - { PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_DIGI_NEO_8), 0, 0, 5 },
113258 { 0, }
113259 };
113260 MODULE_DEVICE_TABLE(pci, jsm_pci_tbl);
113261 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/serial/jsm/jsm_tty.c linux-2.6.29-rc3.owrt/drivers/serial/jsm/jsm_tty.c
113262 --- linux-2.6.29.owrt/drivers/serial/jsm/jsm_tty.c 2009-05-10 22:04:38.000000000 +0200
113263 +++ linux-2.6.29-rc3.owrt/drivers/serial/jsm/jsm_tty.c 2009-05-10 23:48:29.000000000 +0200
113264 @@ -161,11 +161,6 @@
113265 channel->ch_bd->bd_ops->disable_receiver(channel);
113266 }
113267
113268 -static void jsm_tty_enable_ms(struct uart_port *port)
113269 -{
113270 - /* Nothing needed */
113271 -}
113272 -
113273 static void jsm_tty_break(struct uart_port *port, int break_state)
113274 {
113275 unsigned long lock_flags;
113276 @@ -350,7 +345,6 @@
113277 .start_tx = jsm_tty_start_tx,
113278 .send_xchar = jsm_tty_send_xchar,
113279 .stop_rx = jsm_tty_stop_rx,
113280 - .enable_ms = jsm_tty_enable_ms,
113281 .break_ctl = jsm_tty_break,
113282 .startup = jsm_tty_open,
113283 .shutdown = jsm_tty_close,
113284 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/serial/sh-sci.h linux-2.6.29-rc3.owrt/drivers/serial/sh-sci.h
113285 --- linux-2.6.29.owrt/drivers/serial/sh-sci.h 2009-05-10 22:04:38.000000000 +0200
113286 +++ linux-2.6.29-rc3.owrt/drivers/serial/sh-sci.h 2009-05-10 23:48:29.000000000 +0200
113287 @@ -133,7 +133,7 @@
113288 # define SCSPTR3 0xffed0024 /* 16 bit SCIF */
113289 # define SCSPTR4 0xffee0024 /* 16 bit SCIF */
113290 # define SCSPTR5 0xffef0024 /* 16 bit SCIF */
113291 -# define SCIF_ORER 0x0001 /* Overrun error bit */
113292 +# define SCIF_OPER 0x0001 /* Overrun error bit */
113293 # define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
113294 #elif defined(CONFIG_CPU_SUBTYPE_SH7201) || \
113295 defined(CONFIG_CPU_SUBTYPE_SH7203) || \
113296 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/spi/spi_gpio.c linux-2.6.29-rc3.owrt/drivers/spi/spi_gpio.c
113297 --- linux-2.6.29.owrt/drivers/spi/spi_gpio.c 2009-05-10 22:04:38.000000000 +0200
113298 +++ linux-2.6.29-rc3.owrt/drivers/spi/spi_gpio.c 2009-05-10 23:48:29.000000000 +0200
113299 @@ -117,7 +117,7 @@
113300
113301 static inline int getmiso(const struct spi_device *spi)
113302 {
113303 - return !!gpio_get_value(SPI_MISO_GPIO);
113304 + return gpio_get_value(SPI_MISO_GPIO);
113305 }
113306
113307 #undef pdata
113308 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/agnx/agnx.h linux-2.6.29-rc3.owrt/drivers/staging/agnx/agnx.h
113309 --- linux-2.6.29.owrt/drivers/staging/agnx/agnx.h 2009-05-10 22:04:38.000000000 +0200
113310 +++ linux-2.6.29-rc3.owrt/drivers/staging/agnx/agnx.h 2009-05-10 23:48:29.000000000 +0200
113311 @@ -1,8 +1,6 @@
113312 #ifndef AGNX_H_
113313 #define AGNX_H_
113314
113315 -#include <linux/io.h>
113316 -
113317 #include "xmit.h"
113318
113319 #define PFX KBUILD_MODNAME ": "
113320 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/altpciechdma/altpciechdma.c linux-2.6.29-rc3.owrt/drivers/staging/altpciechdma/altpciechdma.c
113321 --- linux-2.6.29.owrt/drivers/staging/altpciechdma/altpciechdma.c 2009-05-10 22:04:38.000000000 +0200
113322 +++ linux-2.6.29-rc3.owrt/drivers/staging/altpciechdma/altpciechdma.c 2009-05-10 23:48:29.000000000 +0200
113323 @@ -531,7 +531,7 @@
113324 goto fail;
113325
113326 /* allocate and map coherently-cached memory for a DMA-able buffer */
113327 - /* @see Documentation/PCI/PCI-DMA-mapping.txt, near line 318 */
113328 + /* @see 2.6.26.2/Documentation/DMA-mapping.txt line 318 */
113329 buffer_virt = (u8 *)pci_alloc_consistent(dev, PAGE_SIZE * 4, &buffer_bus);
113330 if (!buffer_virt) {
113331 printk(KERN_DEBUG "Could not allocate coherent DMA buffer.\n");
113332 @@ -846,7 +846,7 @@
113333
113334 #if 1 // @todo For now, disable 64-bit, because I do not understand the implications (DAC!)
113335 /* query for DMA transfer */
113336 - /* @see Documentation/PCI/PCI-DMA-mapping.txt */
113337 + /* @see Documentation/DMA-mapping.txt */
113338 if (!pci_set_dma_mask(dev, DMA_64BIT_MASK)) {
113339 pci_set_consistent_dma_mask(dev, DMA_64BIT_MASK);
113340 /* use 64-bit DMA */
113341 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/android/binder.c linux-2.6.29-rc3.owrt/drivers/staging/android/binder.c
113342 --- linux-2.6.29.owrt/drivers/staging/android/binder.c 2009-05-10 22:04:38.000000000 +0200
113343 +++ linux-2.6.29-rc3.owrt/drivers/staging/android/binder.c 2009-05-10 23:48:29.000000000 +0200
113344 @@ -319,7 +319,6 @@
113345 int fd, error;
113346 struct fdtable *fdt;
113347 unsigned long rlim_cur;
113348 - unsigned long irqs;
113349
113350 if (files == NULL)
113351 return -ESRCH;
113352 @@ -336,11 +335,12 @@
113353 * N.B. For clone tasks sharing a files structure, this test
113354 * will limit the total number of files that can be opened.
113355 */
113356 - rlim_cur = 0;
113357 - if (lock_task_sighand(tsk, &irqs)) {
113358 + rcu_read_lock();
113359 + if (tsk->signal)
113360 rlim_cur = tsk->signal->rlim[RLIMIT_NOFILE].rlim_cur;
113361 - unlock_task_sighand(tsk, &irqs);
113362 - }
113363 + else
113364 + rlim_cur = 0;
113365 + rcu_read_unlock();
113366 if (fd >= rlim_cur)
113367 goto out;
113368
113369 @@ -2649,14 +2649,14 @@
113370 {
113371 struct binder_proc *proc = vma->vm_private_data;
113372 if (binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE)
113373 - printk(KERN_INFO "binder: %d open vm area %lx-%lx (%ld K) vma %lx pagep %lx\n", proc->pid, vma->vm_start, vma->vm_end, (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, pgprot_val(vma->vm_page_prot));
113374 + printk(KERN_INFO "binder: %d open vm area %lx-%lx (%ld K) vma %lx pagep %lx\n", proc->pid, vma->vm_start, vma->vm_end, (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, vma->vm_page_prot.pgprot);
113375 dump_stack();
113376 }
113377 static void binder_vma_close(struct vm_area_struct *vma)
113378 {
113379 struct binder_proc *proc = vma->vm_private_data;
113380 if (binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE)
113381 - printk(KERN_INFO "binder: %d close vm area %lx-%lx (%ld K) vma %lx pagep %lx\n", proc->pid, vma->vm_start, vma->vm_end, (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, pgprot_val(vma->vm_page_prot));
113382 + printk(KERN_INFO "binder: %d close vm area %lx-%lx (%ld K) vma %lx pagep %lx\n", proc->pid, vma->vm_start, vma->vm_end, (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, vma->vm_page_prot.pgprot);
113383 proc->vma = NULL;
113384 }
113385
113386 @@ -2677,7 +2677,7 @@
113387 vma->vm_end = vma->vm_start + SZ_4M;
113388
113389 if (binder_debug_mask & BINDER_DEBUG_OPEN_CLOSE)
113390 - printk(KERN_INFO "binder_mmap: %d %lx-%lx (%ld K) vma %lx pagep %lx\n", proc->pid, vma->vm_start, vma->vm_end, (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, pgprot_val(vma->vm_page_prot));
113391 + printk(KERN_INFO "binder_mmap: %d %lx-%lx (%ld K) vma %lx pagep %lx\n", proc->pid, vma->vm_start, vma->vm_end, (vma->vm_end - vma->vm_start) / SZ_1K, vma->vm_flags, vma->vm_page_prot.pgprot);
113392
113393 if (vma->vm_flags & FORBIDDEN_MMAP_FLAGS) {
113394 ret = -EPERM;
113395 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/android/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/android/Kconfig
113396 --- linux-2.6.29.owrt/drivers/staging/android/Kconfig 2009-05-10 22:04:38.000000000 +0200
113397 +++ linux-2.6.29-rc3.owrt/drivers/staging/android/Kconfig 2009-05-10 23:48:29.000000000 +0200
113398 @@ -27,7 +27,6 @@
113399 bool "Android RAM Console Enable error correction"
113400 default n
113401 depends on ANDROID_RAM_CONSOLE
113402 - depends on !ANDROID_RAM_CONSOLE_EARLY_INIT
113403 select REED_SOLOMON
113404 select REED_SOLOMON_ENC8
113405 select REED_SOLOMON_DEC8
113406 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/android/lowmemorykiller.txt linux-2.6.29-rc3.owrt/drivers/staging/android/lowmemorykiller.txt
113407 --- linux-2.6.29.owrt/drivers/staging/android/lowmemorykiller.txt 2009-05-10 22:04:38.000000000 +0200
113408 +++ linux-2.6.29-rc3.owrt/drivers/staging/android/lowmemorykiller.txt 1970-01-01 01:00:00.000000000 +0100
113409 @@ -1,16 +0,0 @@
113410 -The lowmemorykiller driver lets user-space specify a set of memory thresholds
113411 -where processes with a range of oom_adj values will get killed. Specify the
113412 -minimum oom_adj values in /sys/module/lowmemorykiller/parameters/adj and the
113413 -number of free pages in /sys/module/lowmemorykiller/parameters/minfree. Both
113414 -files take a comma separated list of numbers in ascending order.
113415 -
113416 -For example, write "0,8" to /sys/module/lowmemorykiller/parameters/adj and
113417 -"1024,4096" to /sys/module/lowmemorykiller/parameters/minfree to kill processes
113418 -with a oom_adj value of 8 or higher when the free memory drops below 4096 pages
113419 -and kill processes with a oom_adj value of 0 or higher when the free memory
113420 -drops below 1024 pages.
113421 -
113422 -The driver considers memory used for caches to be free, but if a large
113423 -percentage of the cached memory is locked this can be very inaccurate
113424 -and processes may not get killed until the normal oom killer is triggered.
113425 -
113426 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/android/ram_console.c linux-2.6.29-rc3.owrt/drivers/staging/android/ram_console.c
113427 --- linux-2.6.29.owrt/drivers/staging/android/ram_console.c 2009-05-10 22:04:38.000000000 +0200
113428 +++ linux-2.6.29-rc3.owrt/drivers/staging/android/ram_console.c 2009-05-10 23:48:29.000000000 +0200
113429 @@ -224,23 +224,9 @@
113430 ram_console_buffer_size =
113431 buffer_size - sizeof(struct ram_console_buffer);
113432
113433 - if (ram_console_buffer_size > buffer_size) {
113434 - pr_err("ram_console: buffer %p, invalid size %d, datasize %d\n",
113435 - buffer, buffer_size, ram_console_buffer_size);
113436 - return 0;
113437 - }
113438 -
113439 #ifdef CONFIG_ANDROID_RAM_CONSOLE_ERROR_CORRECTION
113440 ram_console_buffer_size -= (DIV_ROUND_UP(ram_console_buffer_size,
113441 ECC_BLOCK_SIZE) + 1) * ECC_SIZE;
113442 -
113443 - if (ram_console_buffer_size > buffer_size) {
113444 - pr_err("ram_console: buffer %p, invalid size %d, "
113445 - "non-ecc datasize %d\n",
113446 - buffer, buffer_size, ram_console_buffer_size);
113447 - return 0;
113448 - }
113449 -
113450 ram_console_par_buffer = buffer->data + ram_console_buffer_size;
113451
113452
113453 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/android/timed_gpio.c linux-2.6.29-rc3.owrt/drivers/staging/android/timed_gpio.c
113454 --- linux-2.6.29.owrt/drivers/staging/android/timed_gpio.c 2009-05-10 22:04:38.000000000 +0200
113455 +++ linux-2.6.29-rc3.owrt/drivers/staging/android/timed_gpio.c 2009-05-10 23:48:29.000000000 +0200
113456 @@ -18,7 +18,7 @@
113457 #include <linux/platform_device.h>
113458 #include <linux/hrtimer.h>
113459 #include <linux/err.h>
113460 -#include <linux/gpio.h>
113461 +#include <asm/arch/gpio.h>
113462
113463 #include "timed_gpio.h"
113464
113465 @@ -49,8 +49,7 @@
113466
113467 if (hrtimer_active(&gpio_data->timer)) {
113468 ktime_t r = hrtimer_get_remaining(&gpio_data->timer);
113469 - struct timeval t = ktime_to_timeval(r);
113470 - remaining = t.tv_sec * 1000 + t.tv_usec / 1000;
113471 + remaining = r.tv.sec * 1000 + r.tv.nsec / 1000000;
113472 } else
113473 remaining = 0;
113474
113475 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/at76_usb/at76_usb.c linux-2.6.29-rc3.owrt/drivers/staging/at76_usb/at76_usb.c
113476 --- linux-2.6.29.owrt/drivers/staging/at76_usb/at76_usb.c 2009-05-10 22:04:38.000000000 +0200
113477 +++ linux-2.6.29-rc3.owrt/drivers/staging/at76_usb/at76_usb.c 2009-05-10 23:48:29.000000000 +0200
113478 @@ -6,6 +6,7 @@
113479 * Copyright (c) 2004 Nick Jones
113480 * Copyright (c) 2004 Balint Seeber <n0_5p4m_p13453@hotmail.com>
113481 * Copyright (c) 2007 Guido Guenther <agx@sigxcpu.org>
113482 + * Copyright (c) 2007 Kalle Valo <kalle.valo@iki.fi>
113483 *
113484 * This program is free software; you can redistribute it and/or
113485 * modify it under the terms of the GNU General Public License as
113486 @@ -16,6 +17,13 @@
113487 * Atmel AT76C503A/505/505A.
113488 *
113489 * Some iw_handler code was taken from airo.c, (C) 1999 Benjamin Reed
113490 + *
113491 + * TODO for the mac80211 port:
113492 + * o adhoc support
113493 + * o RTS/CTS support
113494 + * o Power Save Mode support
113495 + * o support for short/long preambles
113496 + * o export variables through debugfs/sysfs
113497 */
113498
113499 #include <linux/init.h>
113500 @@ -36,7 +44,7 @@
113501 #include <net/ieee80211_radiotap.h>
113502 #include <linux/firmware.h>
113503 #include <linux/leds.h>
113504 -#include <net/ieee80211.h>
113505 +#include <net/mac80211.h>
113506
113507 #include "at76_usb.h"
113508
113509 @@ -76,31 +84,43 @@
113510 #define DBG_WE_EVENTS 0x08000000 /* dump wireless events */
113511 #define DBG_FW 0x10000000 /* firmware download */
113512 #define DBG_DFU 0x20000000 /* device firmware upgrade */
113513 +#define DBG_CMD 0x40000000
113514 +#define DBG_MAC80211 0x80000000
113515
113516 #define DBG_DEFAULTS 0
113517
113518 /* Use our own dbg macro */
113519 #define at76_dbg(bits, format, arg...) \
113520 - do { \
113521 - if (at76_debug & (bits)) \
113522 +do { \
113523 + if (at76_debug & (bits)) \
113524 + printk(KERN_DEBUG DRIVER_NAME ": " format "\n" , ## arg); \
113525 +} while (0)
113526 +
113527 +#define at76_dbg_dump(bits, buf, len, format, arg...) \
113528 +do { \
113529 + if (at76_debug & (bits)) { \
113530 printk(KERN_DEBUG DRIVER_NAME ": " format "\n" , ## arg); \
113531 - } while (0)
113532 + print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, buf, len); \
113533 + } \
113534 +} while (0)
113535
113536 static int at76_debug = DBG_DEFAULTS;
113537
113538 +#define FIRMWARE_IS_WPA(ver) ((ver.major == 1) && (ver.minor == 103))
113539 +
113540 /* Protect against concurrent firmware loading and parsing */
113541 static struct mutex fw_mutex;
113542
113543 static struct fwentry firmwares[] = {
113544 - [0] = {""},
113545 - [BOARD_503_ISL3861] = {"atmel_at76c503-i3861.bin"},
113546 - [BOARD_503_ISL3863] = {"atmel_at76c503-i3863.bin"},
113547 - [BOARD_503] = {"atmel_at76c503-rfmd.bin"},
113548 - [BOARD_503_ACC] = {"atmel_at76c503-rfmd-acc.bin"},
113549 - [BOARD_505] = {"atmel_at76c505-rfmd.bin"},
113550 - [BOARD_505_2958] = {"atmel_at76c505-rfmd2958.bin"},
113551 - [BOARD_505A] = {"atmel_at76c505a-rfmd2958.bin"},
113552 - [BOARD_505AMX] = {"atmel_at76c505amx-rfmd.bin"},
113553 + [0] = { "" },
113554 + [BOARD_503_ISL3861] = { "atmel_at76c503-i3861.bin" },
113555 + [BOARD_503_ISL3863] = { "atmel_at76c503-i3863.bin" },
113556 + [BOARD_503] = { "atmel_at76c503-rfmd.bin" },
113557 + [BOARD_503_ACC] = { "atmel_at76c503-rfmd-acc.bin" },
113558 + [BOARD_505] = { "atmel_at76c505-rfmd.bin" },
113559 + [BOARD_505_2958] = { "atmel_at76c505-rfmd2958.bin" },
113560 + [BOARD_505A] = { "atmel_at76c505a-rfmd2958.bin" },
113561 + [BOARD_505AMX] = { "atmel_at76c505amx-rfmd.bin" },
113562 };
113563
113564 #define USB_DEVICE_DATA(__ops) .driver_info = (kernel_ulong_t)(__ops)
113565 @@ -110,135 +130,133 @@
113566 * at76c503-i3861
113567 */
113568 /* Generic AT76C503/3861 device */
113569 - {USB_DEVICE(0x03eb, 0x7603), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113570 + { USB_DEVICE(0x03eb, 0x7603), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113571 /* Linksys WUSB11 v2.1/v2.6 */
113572 - {USB_DEVICE(0x066b, 0x2211), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113573 + { USB_DEVICE(0x066b, 0x2211), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113574 /* Netgear MA101 rev. A */
113575 - {USB_DEVICE(0x0864, 0x4100), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113576 + { USB_DEVICE(0x0864, 0x4100), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113577 /* Tekram U300C / Allnet ALL0193 */
113578 - {USB_DEVICE(0x0b3b, 0x1612), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113579 + { USB_DEVICE(0x0b3b, 0x1612), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113580 /* HP HN210W J7801A */
113581 - {USB_DEVICE(0x03f0, 0x011c), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113582 + { USB_DEVICE(0x03f0, 0x011c), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113583 /* Sitecom/Z-Com/Zyxel M4Y-750 */
113584 - {USB_DEVICE(0x0cde, 0x0001), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113585 + { USB_DEVICE(0x0cde, 0x0001), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113586 /* Dynalink/Askey WLL013 (intersil) */
113587 - {USB_DEVICE(0x069a, 0x0320), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113588 + { USB_DEVICE(0x069a, 0x0320), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113589 /* EZ connect 11Mpbs Wireless USB Adapter SMC2662W v1 */
113590 - {USB_DEVICE(0x0d5c, 0xa001), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113591 + { USB_DEVICE(0x0d5c, 0xa001), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113592 /* BenQ AWL300 */
113593 - {USB_DEVICE(0x04a5, 0x9000), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113594 + { USB_DEVICE(0x04a5, 0x9000), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113595 /* Addtron AWU-120, Compex WLU11 */
113596 - {USB_DEVICE(0x05dd, 0xff31), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113597 + { USB_DEVICE(0x05dd, 0xff31), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113598 /* Intel AP310 AnyPoint II USB */
113599 - {USB_DEVICE(0x8086, 0x0200), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113600 + { USB_DEVICE(0x8086, 0x0200), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113601 /* Dynalink L11U */
113602 - {USB_DEVICE(0x0d8e, 0x7100), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113603 + { USB_DEVICE(0x0d8e, 0x7100), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113604 /* Arescom WL-210, FCC id 07J-GL2411USB */
113605 - {USB_DEVICE(0x0d8e, 0x7110), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113606 + { USB_DEVICE(0x0d8e, 0x7110), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113607 /* I-O DATA WN-B11/USB */
113608 - {USB_DEVICE(0x04bb, 0x0919), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113609 + { USB_DEVICE(0x04bb, 0x0919), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113610 /* BT Voyager 1010 */
113611 - {USB_DEVICE(0x069a, 0x0821), USB_DEVICE_DATA(BOARD_503_ISL3861)},
113612 + { USB_DEVICE(0x069a, 0x0821), USB_DEVICE_DATA(BOARD_503_ISL3861) },
113613 /*
113614 * at76c503-i3863
113615 */
113616 /* Generic AT76C503/3863 device */
113617 - {USB_DEVICE(0x03eb, 0x7604), USB_DEVICE_DATA(BOARD_503_ISL3863)},
113618 + { USB_DEVICE(0x03eb, 0x7604), USB_DEVICE_DATA(BOARD_503_ISL3863) },
113619 /* Samsung SWL-2100U */
113620 - {USB_DEVICE(0x055d, 0xa000), USB_DEVICE_DATA(BOARD_503_ISL3863)},
113621 + { USB_DEVICE(0x055d, 0xa000), USB_DEVICE_DATA(BOARD_503_ISL3863) },
113622 /*
113623 * at76c503-rfmd
113624 */
113625 /* Generic AT76C503/RFMD device */
113626 - {USB_DEVICE(0x03eb, 0x7605), USB_DEVICE_DATA(BOARD_503)},
113627 + { USB_DEVICE(0x03eb, 0x7605), USB_DEVICE_DATA(BOARD_503) },
113628 /* Dynalink/Askey WLL013 (rfmd) */
113629 - {USB_DEVICE(0x069a, 0x0321), USB_DEVICE_DATA(BOARD_503)},
113630 + { USB_DEVICE(0x069a, 0x0321), USB_DEVICE_DATA(BOARD_503) },
113631 /* Linksys WUSB11 v2.6 */
113632 - {USB_DEVICE(0x077b, 0x2219), USB_DEVICE_DATA(BOARD_503)},
113633 + { USB_DEVICE(0x077b, 0x2219), USB_DEVICE_DATA(BOARD_503) },
113634 /* Network Everywhere NWU11B */
113635 - {USB_DEVICE(0x077b, 0x2227), USB_DEVICE_DATA(BOARD_503)},
113636 + { USB_DEVICE(0x077b, 0x2227), USB_DEVICE_DATA(BOARD_503) },
113637 /* Netgear MA101 rev. B */
113638 - {USB_DEVICE(0x0864, 0x4102), USB_DEVICE_DATA(BOARD_503)},
113639 + { USB_DEVICE(0x0864, 0x4102), USB_DEVICE_DATA(BOARD_503) },
113640 /* D-Link DWL-120 rev. E */
113641 - {USB_DEVICE(0x2001, 0x3200), USB_DEVICE_DATA(BOARD_503)},
113642 + { USB_DEVICE(0x2001, 0x3200), USB_DEVICE_DATA(BOARD_503) },
113643 /* Actiontec 802UAT1, HWU01150-01UK */
113644 - {USB_DEVICE(0x1668, 0x7605), USB_DEVICE_DATA(BOARD_503)},
113645 + { USB_DEVICE(0x1668, 0x7605), USB_DEVICE_DATA(BOARD_503) },
113646 /* AirVast W-Buddie WN210 */
113647 - {USB_DEVICE(0x03eb, 0x4102), USB_DEVICE_DATA(BOARD_503)},
113648 + { USB_DEVICE(0x03eb, 0x4102), USB_DEVICE_DATA(BOARD_503) },
113649 /* Dick Smith Electronics XH1153 802.11b USB adapter */
113650 - {USB_DEVICE(0x1371, 0x5743), USB_DEVICE_DATA(BOARD_503)},
113651 + { USB_DEVICE(0x1371, 0x5743), USB_DEVICE_DATA(BOARD_503) },
113652 /* CNet CNUSB611 */
113653 - {USB_DEVICE(0x1371, 0x0001), USB_DEVICE_DATA(BOARD_503)},
113654 + { USB_DEVICE(0x1371, 0x0001), USB_DEVICE_DATA(BOARD_503) },
113655 /* FiberLine FL-WL200U */
113656 - {USB_DEVICE(0x1371, 0x0002), USB_DEVICE_DATA(BOARD_503)},
113657 + { USB_DEVICE(0x1371, 0x0002), USB_DEVICE_DATA(BOARD_503) },
113658 /* BenQ AWL400 USB stick */
113659 - {USB_DEVICE(0x04a5, 0x9001), USB_DEVICE_DATA(BOARD_503)},
113660 + { USB_DEVICE(0x04a5, 0x9001), USB_DEVICE_DATA(BOARD_503) },
113661 /* 3Com 3CRSHEW696 */
113662 - {USB_DEVICE(0x0506, 0x0a01), USB_DEVICE_DATA(BOARD_503)},
113663 + { USB_DEVICE(0x0506, 0x0a01), USB_DEVICE_DATA(BOARD_503) },
113664 /* Siemens Santis ADSL WLAN USB adapter WLL 013 */
113665 - {USB_DEVICE(0x0681, 0x001b), USB_DEVICE_DATA(BOARD_503)},
113666 + { USB_DEVICE(0x0681, 0x001b), USB_DEVICE_DATA(BOARD_503) },
113667 /* Belkin F5D6050, version 2 */
113668 - {USB_DEVICE(0x050d, 0x0050), USB_DEVICE_DATA(BOARD_503)},
113669 + { USB_DEVICE(0x050d, 0x0050), USB_DEVICE_DATA(BOARD_503) },
113670 /* iBlitzz, BWU613 (not *B or *SB) */
113671 - {USB_DEVICE(0x07b8, 0xb000), USB_DEVICE_DATA(BOARD_503)},
113672 + { USB_DEVICE(0x07b8, 0xb000), USB_DEVICE_DATA(BOARD_503) },
113673 /* Gigabyte GN-WLBM101 */
113674 - {USB_DEVICE(0x1044, 0x8003), USB_DEVICE_DATA(BOARD_503)},
113675 + { USB_DEVICE(0x1044, 0x8003), USB_DEVICE_DATA(BOARD_503) },
113676 /* Planex GW-US11S */
113677 - {USB_DEVICE(0x2019, 0x3220), USB_DEVICE_DATA(BOARD_503)},
113678 + { USB_DEVICE(0x2019, 0x3220), USB_DEVICE_DATA(BOARD_503) },
113679 /* Internal WLAN adapter in h5[4,5]xx series iPAQs */
113680 - {USB_DEVICE(0x049f, 0x0032), USB_DEVICE_DATA(BOARD_503)},
113681 + { USB_DEVICE(0x049f, 0x0032), USB_DEVICE_DATA(BOARD_503) },
113682 /* Corega Wireless LAN USB-11 mini */
113683 - {USB_DEVICE(0x07aa, 0x0011), USB_DEVICE_DATA(BOARD_503)},
113684 + { USB_DEVICE(0x07aa, 0x0011), USB_DEVICE_DATA(BOARD_503) },
113685 /* Corega Wireless LAN USB-11 mini2 */
113686 - {USB_DEVICE(0x07aa, 0x0018), USB_DEVICE_DATA(BOARD_503)},
113687 + { USB_DEVICE(0x07aa, 0x0018), USB_DEVICE_DATA(BOARD_503) },
113688 /* Uniden PCW100 */
113689 - {USB_DEVICE(0x05dd, 0xff35), USB_DEVICE_DATA(BOARD_503)},
113690 + { USB_DEVICE(0x05dd, 0xff35), USB_DEVICE_DATA(BOARD_503) },
113691 /*
113692 * at76c503-rfmd-acc
113693 */
113694 /* SMC2664W */
113695 - {USB_DEVICE(0x083a, 0x3501), USB_DEVICE_DATA(BOARD_503_ACC)},
113696 + { USB_DEVICE(0x083a, 0x3501), USB_DEVICE_DATA(BOARD_503_ACC) },
113697 /* Belkin F5D6050, SMC2662W v2, SMC2662W-AR */
113698 - {USB_DEVICE(0x0d5c, 0xa002), USB_DEVICE_DATA(BOARD_503_ACC)},
113699 + { USB_DEVICE(0x0d5c, 0xa002), USB_DEVICE_DATA(BOARD_503_ACC) },
113700 /*
113701 * at76c505-rfmd
113702 */
113703 /* Generic AT76C505/RFMD */
113704 - {USB_DEVICE(0x03eb, 0x7606), USB_DEVICE_DATA(BOARD_505)},
113705 + { USB_DEVICE(0x03eb, 0x7606), USB_DEVICE_DATA(BOARD_505) },
113706 /*
113707 * at76c505-rfmd2958
113708 */
113709 /* Generic AT76C505/RFMD, OvisLink WL-1130USB */
113710 - {USB_DEVICE(0x03eb, 0x7613), USB_DEVICE_DATA(BOARD_505_2958)},
113711 + { USB_DEVICE(0x03eb, 0x7613), USB_DEVICE_DATA(BOARD_505_2958) },
113712 /* Fiberline FL-WL240U */
113713 - {USB_DEVICE(0x1371, 0x0014), USB_DEVICE_DATA(BOARD_505_2958)},
113714 + { USB_DEVICE(0x1371, 0x0014), USB_DEVICE_DATA(BOARD_505_2958) },
113715 /* CNet CNUSB-611G */
113716 - {USB_DEVICE(0x1371, 0x0013), USB_DEVICE_DATA(BOARD_505_2958)},
113717 + { USB_DEVICE(0x1371, 0x0013), USB_DEVICE_DATA(BOARD_505_2958) },
113718 /* Linksys WUSB11 v2.8 */
113719 - {USB_DEVICE(0x1915, 0x2233), USB_DEVICE_DATA(BOARD_505_2958)},
113720 + { USB_DEVICE(0x1915, 0x2233), USB_DEVICE_DATA(BOARD_505_2958) },
113721 /* Xterasys XN-2122B, IBlitzz BWU613B/BWU613SB */
113722 - {USB_DEVICE(0x12fd, 0x1001), USB_DEVICE_DATA(BOARD_505_2958)},
113723 + { USB_DEVICE(0x12fd, 0x1001), USB_DEVICE_DATA(BOARD_505_2958) },
113724 /* Corega WLAN USB Stick 11 */
113725 - {USB_DEVICE(0x07aa, 0x7613), USB_DEVICE_DATA(BOARD_505_2958)},
113726 + { USB_DEVICE(0x07aa, 0x7613), USB_DEVICE_DATA(BOARD_505_2958) },
113727 /* Microstar MSI Box MS6978 */
113728 - {USB_DEVICE(0x0db0, 0x1020), USB_DEVICE_DATA(BOARD_505_2958)},
113729 + { USB_DEVICE(0x0db0, 0x1020), USB_DEVICE_DATA(BOARD_505_2958) },
113730 /*
113731 * at76c505a-rfmd2958
113732 */
113733 /* Generic AT76C505A device */
113734 - {USB_DEVICE(0x03eb, 0x7614), USB_DEVICE_DATA(BOARD_505A)},
113735 + { USB_DEVICE(0x03eb, 0x7614), USB_DEVICE_DATA(BOARD_505A) },
113736 /* Generic AT76C505AS device */
113737 - {USB_DEVICE(0x03eb, 0x7617), USB_DEVICE_DATA(BOARD_505A)},
113738 + { USB_DEVICE(0x03eb, 0x7617), USB_DEVICE_DATA(BOARD_505A) },
113739 /* Siemens Gigaset USB WLAN Adapter 11 */
113740 - {USB_DEVICE(0x1690, 0x0701), USB_DEVICE_DATA(BOARD_505A)},
113741 - /* OQO Model 01+ Internal Wi-Fi */
113742 - {USB_DEVICE(0x1557, 0x0002), USB_DEVICE_DATA(BOARD_505A)},
113743 + { USB_DEVICE(0x1690, 0x0701), USB_DEVICE_DATA(BOARD_505A) },
113744 /*
113745 * at76c505amx-rfmd
113746 */
113747 /* Generic AT76C505AMX device */
113748 - {USB_DEVICE(0x03eb, 0x7615), USB_DEVICE_DATA(BOARD_505AMX)},
113749 - {}
113750 + { USB_DEVICE(0x03eb, 0x7615), USB_DEVICE_DATA(BOARD_505AMX) },
113751 + { }
113752 };
113753
113754 MODULE_DEVICE_TABLE(usb, dev_table);
113755 @@ -246,26 +264,8 @@
113756 /* Supported rates of this hardware, bit 7 marks basic rates */
113757 static const u8 hw_rates[] = { 0x82, 0x84, 0x0b, 0x16 };
113758
113759 -/* Frequency of each channel in MHz */
113760 -static const long channel_frequency[] = {
113761 - 2412, 2417, 2422, 2427, 2432, 2437, 2442,
113762 - 2447, 2452, 2457, 2462, 2467, 2472, 2484
113763 -};
113764 -
113765 -#define NUM_CHANNELS ARRAY_SIZE(channel_frequency)
113766 -
113767 static const char *const preambles[] = { "long", "short", "auto" };
113768
113769 -static const char *const mac_states[] = {
113770 - [MAC_INIT] = "INIT",
113771 - [MAC_SCANNING] = "SCANNING",
113772 - [MAC_AUTH] = "AUTH",
113773 - [MAC_ASSOC] = "ASSOC",
113774 - [MAC_JOINING] = "JOINING",
113775 - [MAC_CONNECTED] = "CONNECTED",
113776 - [MAC_OWN_IBSS] = "OWN_IBSS"
113777 -};
113778 -
113779 /* Firmware download */
113780 /* DFU states */
113781 #define STATE_IDLE 0x00
113782 @@ -300,17 +300,30 @@
113783
113784 static inline int at76_is_intersil(enum board_type board)
113785 {
113786 - return (board == BOARD_503_ISL3861 || board == BOARD_503_ISL3863);
113787 + if (board == BOARD_503_ISL3861 || board == BOARD_503_ISL3863)
113788 + return 1;
113789 + return 0;
113790 }
113791
113792 static inline int at76_is_503rfmd(enum board_type board)
113793 {
113794 - return (board == BOARD_503 || board == BOARD_503_ACC);
113795 + if (board == BOARD_503 || board == BOARD_503_ACC)
113796 + return 1;
113797 + return 0;
113798 +}
113799 +
113800 +static inline int at76_is_505(enum board_type board)
113801 +{
113802 + if (board == BOARD_505 || board == BOARD_505_2958)
113803 + return 1;
113804 + return 0;
113805 }
113806
113807 static inline int at76_is_505a(enum board_type board)
113808 {
113809 - return (board == BOARD_505A || board == BOARD_505AMX);
113810 + if (board == BOARD_505A || board == BOARD_505AMX)
113811 + return 1;
113812 + return 0;
113813 }
113814
113815 /* Load a block of the first (internal) part of the firmware */
113816 @@ -491,41 +504,6 @@
113817 return ret;
113818 }
113819
113820 -/* Report that the scan results are ready */
113821 -static inline void at76_iwevent_scan_complete(struct net_device *netdev)
113822 -{
113823 - union iwreq_data wrqu;
113824 - wrqu.data.length = 0;
113825 - wrqu.data.flags = 0;
113826 - wireless_send_event(netdev, SIOCGIWSCAN, &wrqu, NULL);
113827 - at76_dbg(DBG_WE_EVENTS, "%s: SIOCGIWSCAN sent", netdev->name);
113828 -}
113829 -
113830 -static inline void at76_iwevent_bss_connect(struct net_device *netdev,
113831 - u8 *bssid)
113832 -{
113833 - union iwreq_data wrqu;
113834 - wrqu.data.length = 0;
113835 - wrqu.data.flags = 0;
113836 - memcpy(wrqu.ap_addr.sa_data, bssid, ETH_ALEN);
113837 - wrqu.ap_addr.sa_family = ARPHRD_ETHER;
113838 - wireless_send_event(netdev, SIOCGIWAP, &wrqu, NULL);
113839 - at76_dbg(DBG_WE_EVENTS, "%s: %s: SIOCGIWAP sent", netdev->name,
113840 - __func__);
113841 -}
113842 -
113843 -static inline void at76_iwevent_bss_disconnect(struct net_device *netdev)
113844 -{
113845 - union iwreq_data wrqu;
113846 - wrqu.data.length = 0;
113847 - wrqu.data.flags = 0;
113848 - memset(wrqu.ap_addr.sa_data, 0, ETH_ALEN);
113849 - wrqu.ap_addr.sa_family = ARPHRD_ETHER;
113850 - wireless_send_event(netdev, SIOCGIWAP, &wrqu, NULL);
113851 - at76_dbg(DBG_WE_EVENTS, "%s: %s: SIOCGIWAP sent", netdev->name,
113852 - __func__);
113853 -}
113854 -
113855 #define HEX2STR_BUFFERS 4
113856 #define HEX2STR_MAX_LEN 64
113857 #define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
113858 @@ -597,37 +575,6 @@
113859 mod_timer(&ledtrig_tx_timer, jiffies + HZ / 4);
113860 }
113861
113862 -/* Check if the given ssid is hidden */
113863 -static inline int at76_is_hidden_ssid(u8 *ssid, int length)
113864 -{
113865 - static const u8 zeros[32];
113866 -
113867 - if (length == 0)
113868 - return 1;
113869 -
113870 - if (length == 1 && ssid[0] == ' ')
113871 - return 1;
113872 -
113873 - return (memcmp(ssid, zeros, length) == 0);
113874 -}
113875 -
113876 -static inline void at76_free_bss_list(struct at76_priv *priv)
113877 -{
113878 - struct list_head *next, *ptr;
113879 - unsigned long flags;
113880 -
113881 - spin_lock_irqsave(&priv->bss_list_spinlock, flags);
113882 -
113883 - priv->curr_bss = NULL;
113884 -
113885 - list_for_each_safe(ptr, next, &priv->bss_list) {
113886 - list_del(ptr);
113887 - kfree(list_entry(ptr, struct bss_info, list));
113888 - }
113889 -
113890 - spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
113891 -}
113892 -
113893 static int at76_remap(struct usb_device *udev)
113894 {
113895 int ret;
113896 @@ -651,7 +598,7 @@
113897 return -ENOMEM;
113898 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x33,
113899 USB_TYPE_VENDOR | USB_DIR_IN |
113900 - USB_RECIP_INTERFACE, 0x01, 0, op_mode, 1,
113901 + USB_RECIP_INTERFACE, 0x01, 0, &op_mode, 1,
113902 USB_CTRL_GET_TIMEOUT);
113903 saved = *op_mode;
113904 kfree(op_mode);
113905 @@ -729,7 +676,7 @@
113906 kfree(hwcfg);
113907 if (ret < 0)
113908 printk(KERN_ERR "%s: cannot get HW Config (error %d)\n",
113909 - priv->netdev->name, ret);
113910 + wiphy_name(priv->hw->wiphy), ret);
113911
113912 return ret;
113913 }
113914 @@ -738,15 +685,15 @@
113915 {
113916 int i;
113917 static struct reg_domain const fd_tab[] = {
113918 - {0x10, "FCC (USA)", 0x7ff}, /* ch 1-11 */
113919 - {0x20, "IC (Canada)", 0x7ff}, /* ch 1-11 */
113920 - {0x30, "ETSI (most of Europe)", 0x1fff}, /* ch 1-13 */
113921 - {0x31, "Spain", 0x600}, /* ch 10-11 */
113922 - {0x32, "France", 0x1e00}, /* ch 10-13 */
113923 - {0x40, "MKK (Japan)", 0x2000}, /* ch 14 */
113924 - {0x41, "MKK1 (Japan)", 0x3fff}, /* ch 1-14 */
113925 - {0x50, "Israel", 0x3fc}, /* ch 3-9 */
113926 - {0x00, "<unknown>", 0xffffffff} /* ch 1-32 */
113927 + { 0x10, "FCC (USA)", 0x7ff }, /* ch 1-11 */
113928 + { 0x20, "IC (Canada)", 0x7ff }, /* ch 1-11 */
113929 + { 0x30, "ETSI (most of Europe)", 0x1fff }, /* ch 1-13 */
113930 + { 0x31, "Spain", 0x600 }, /* ch 10-11 */
113931 + { 0x32, "France", 0x1e00 }, /* ch 10-13 */
113932 + { 0x40, "MKK (Japan)", 0x2000 }, /* ch 14 */
113933 + { 0x41, "MKK1 (Japan)", 0x3fff }, /* ch 1-14 */
113934 + { 0x50, "Israel", 0x3fc }, /* ch 3-9 */
113935 + { 0x00, "<unknown>", 0xffffffff } /* ch 1-32 */
113936 };
113937
113938 /* Last entry is fallback for unknown domain code */
113939 @@ -784,7 +731,7 @@
113940 ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), 0x22,
113941 USB_TYPE_VENDOR | USB_DIR_IN |
113942 USB_RECIP_INTERFACE, cmd, 0, stat_buf,
113943 - 40, USB_CTRL_GET_TIMEOUT);
113944 + sizeof(stat_buf), USB_CTRL_GET_TIMEOUT);
113945 if (ret >= 0)
113946 ret = stat_buf[5];
113947 kfree(stat_buf);
113948 @@ -792,6 +739,24 @@
113949 return ret;
113950 }
113951
113952 +#define MAKE_CMD_CASE(c) case (c): return #c
113953 +
113954 +static const char *at76_get_cmd_string(u8 cmd_status)
113955 +{
113956 + switch (cmd_status) {
113957 + MAKE_CMD_CASE(CMD_SET_MIB);
113958 + MAKE_CMD_CASE(CMD_GET_MIB);
113959 + MAKE_CMD_CASE(CMD_SCAN);
113960 + MAKE_CMD_CASE(CMD_JOIN);
113961 + MAKE_CMD_CASE(CMD_START_IBSS);
113962 + MAKE_CMD_CASE(CMD_RADIO_ON);
113963 + MAKE_CMD_CASE(CMD_RADIO_OFF);
113964 + MAKE_CMD_CASE(CMD_STARTUP);
113965 + }
113966 +
113967 + return "UNKNOWN";
113968 +}
113969 +
113970 static int at76_set_card_command(struct usb_device *udev, u8 cmd, void *buf,
113971 int buf_size)
113972 {
113973 @@ -807,6 +772,10 @@
113974 cmd_buf->size = cpu_to_le16(buf_size);
113975 memcpy(cmd_buf->data, buf, buf_size);
113976
113977 + at76_dbg_dump(DBG_CMD, cmd_buf, sizeof(struct at76_command) + buf_size,
113978 + "issuing command %s (0x%02x)",
113979 + at76_get_cmd_string(cmd), cmd);
113980 +
113981 ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0x0e,
113982 USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_DEVICE,
113983 0, 0, cmd_buf,
113984 @@ -844,13 +813,13 @@
113985 status = at76_get_cmd_status(priv->udev, cmd);
113986 if (status < 0) {
113987 printk(KERN_ERR "%s: at76_get_cmd_status failed: %d\n",
113988 - priv->netdev->name, status);
113989 + wiphy_name(priv->hw->wiphy), status);
113990 break;
113991 }
113992
113993 at76_dbg(DBG_WAIT_COMPLETE,
113994 "%s: Waiting on cmd %d, status = %d (%s)",
113995 - priv->netdev->name, cmd, status,
113996 + wiphy_name(priv->hw->wiphy), cmd, status,
113997 at76_get_cmd_status_string(status));
113998
113999 if (status != CMD_STATUS_IN_PROGRESS
114000 @@ -861,7 +830,7 @@
114001 if (time_after(jiffies, timeout)) {
114002 printk(KERN_ERR
114003 "%s: completion timeout for command %d\n",
114004 - priv->netdev->name, cmd);
114005 + wiphy_name(priv->hw->wiphy), cmd);
114006 status = -ETIMEDOUT;
114007 break;
114008 }
114009 @@ -884,7 +853,7 @@
114010 if (ret != CMD_STATUS_COMPLETE) {
114011 printk(KERN_INFO
114012 "%s: set_mib: at76_wait_completion failed "
114013 - "with %d\n", priv->netdev->name, ret);
114014 + "with %d\n", wiphy_name(priv->hw->wiphy), ret);
114015 ret = -EIO;
114016 }
114017
114018 @@ -905,7 +874,7 @@
114019 ret = at76_set_card_command(priv->udev, cmd, NULL, 0);
114020 if (ret < 0)
114021 printk(KERN_ERR "%s: at76_set_card_command(%d) failed: %d\n",
114022 - priv->netdev->name, cmd, ret);
114023 + wiphy_name(priv->hw->wiphy), cmd, ret);
114024 else
114025 ret = 1;
114026
114027 @@ -926,44 +895,7 @@
114028 ret = at76_set_mib(priv, &priv->mib_buf);
114029 if (ret < 0)
114030 printk(KERN_ERR "%s: set_mib (pm_mode) failed: %d\n",
114031 - priv->netdev->name, ret);
114032 -
114033 - return ret;
114034 -}
114035 -
114036 -/* Set the association id for power save mode */
114037 -static int at76_set_associd(struct at76_priv *priv, u16 id)
114038 -{
114039 - int ret = 0;
114040 -
114041 - priv->mib_buf.type = MIB_MAC_MGMT;
114042 - priv->mib_buf.size = 2;
114043 - priv->mib_buf.index = offsetof(struct mib_mac_mgmt, station_id);
114044 - priv->mib_buf.data.word = cpu_to_le16(id);
114045 -
114046 - ret = at76_set_mib(priv, &priv->mib_buf);
114047 - if (ret < 0)
114048 - printk(KERN_ERR "%s: set_mib (associd) failed: %d\n",
114049 - priv->netdev->name, ret);
114050 -
114051 - return ret;
114052 -}
114053 -
114054 -/* Set the listen interval for power save mode */
114055 -static int at76_set_listen_interval(struct at76_priv *priv, u16 interval)
114056 -{
114057 - int ret = 0;
114058 -
114059 - priv->mib_buf.type = MIB_MAC;
114060 - priv->mib_buf.size = 2;
114061 - priv->mib_buf.index = offsetof(struct mib_mac, listen_interval);
114062 - priv->mib_buf.data.word = cpu_to_le16(interval);
114063 -
114064 - ret = at76_set_mib(priv, &priv->mib_buf);
114065 - if (ret < 0)
114066 - printk(KERN_ERR
114067 - "%s: set_mib (listen_interval) failed: %d\n",
114068 - priv->netdev->name, ret);
114069 + wiphy_name(priv->hw->wiphy), ret);
114070
114071 return ret;
114072 }
114073 @@ -980,7 +912,7 @@
114074 ret = at76_set_mib(priv, &priv->mib_buf);
114075 if (ret < 0)
114076 printk(KERN_ERR "%s: set_mib (preamble) failed: %d\n",
114077 - priv->netdev->name, ret);
114078 + wiphy_name(priv->hw->wiphy), ret);
114079
114080 return ret;
114081 }
114082 @@ -997,7 +929,7 @@
114083 ret = at76_set_mib(priv, &priv->mib_buf);
114084 if (ret < 0)
114085 printk(KERN_ERR "%s: set_mib (frag threshold) failed: %d\n",
114086 - priv->netdev->name, ret);
114087 + wiphy_name(priv->hw->wiphy), ret);
114088
114089 return ret;
114090 }
114091 @@ -1014,7 +946,7 @@
114092 ret = at76_set_mib(priv, &priv->mib_buf);
114093 if (ret < 0)
114094 printk(KERN_ERR "%s: set_mib (rts) failed: %d\n",
114095 - priv->netdev->name, ret);
114096 + wiphy_name(priv->hw->wiphy), ret);
114097
114098 return ret;
114099 }
114100 @@ -1031,24 +963,41 @@
114101 ret = at76_set_mib(priv, &priv->mib_buf);
114102 if (ret < 0)
114103 printk(KERN_ERR "%s: set_mib (autorate fallback) failed: %d\n",
114104 - priv->netdev->name, ret);
114105 + wiphy_name(priv->hw->wiphy), ret);
114106
114107 return ret;
114108 }
114109
114110 -static int at76_add_mac_address(struct at76_priv *priv, void *addr)
114111 +static int at76_set_tkip_bssid(struct at76_priv *priv, const void *addr)
114112 {
114113 int ret = 0;
114114
114115 - priv->mib_buf.type = MIB_MAC_ADDR;
114116 + priv->mib_buf.type = MIB_MAC_ENCRYPTION;
114117 priv->mib_buf.size = ETH_ALEN;
114118 - priv->mib_buf.index = offsetof(struct mib_mac_addr, mac_addr);
114119 + priv->mib_buf.index = offsetof(struct mib_mac_encryption, tkip_bssid);
114120 memcpy(priv->mib_buf.data.addr, addr, ETH_ALEN);
114121
114122 ret = at76_set_mib(priv, &priv->mib_buf);
114123 if (ret < 0)
114124 - printk(KERN_ERR "%s: set_mib (MAC_ADDR, mac_addr) failed: %d\n",
114125 - priv->netdev->name, ret);
114126 + printk(KERN_ERR "%s: set_mib (MAC_ENCRYPTION, tkip_bssid) failed: %d\n",
114127 + wiphy_name(priv->hw->wiphy), ret);
114128 +
114129 + return ret;
114130 +}
114131 +
114132 +static int at76_reset_rsc(struct at76_priv *priv)
114133 +{
114134 + int ret = 0;
114135 +
114136 + priv->mib_buf.type = MIB_MAC_ENCRYPTION;
114137 + priv->mib_buf.size = 4 * 8;
114138 + priv->mib_buf.index = offsetof(struct mib_mac_encryption, key_rsc);
114139 + memset(priv->mib_buf.data.data, 0 , priv->mib_buf.size);
114140 +
114141 + ret = at76_set_mib(priv, &priv->mib_buf);
114142 + if (ret < 0)
114143 + printk(KERN_ERR "%s: set_mib (MAC_ENCRYPTION, key_rsc) failed: %d\n",
114144 + wiphy_name(priv->hw->wiphy), ret);
114145
114146 return ret;
114147 }
114148 @@ -1067,16 +1016,16 @@
114149 sizeof(struct mib_mac_addr));
114150 if (ret < 0) {
114151 printk(KERN_ERR "%s: at76_get_mib (MAC_ADDR) failed: %d\n",
114152 - priv->netdev->name, ret);
114153 + wiphy_name(priv->hw->wiphy), ret);
114154 goto exit;
114155 }
114156
114157 at76_dbg(DBG_MIB, "%s: MIB MAC_ADDR: mac_addr %s res 0x%x 0x%x",
114158 - priv->netdev->name,
114159 + wiphy_name(priv->hw->wiphy),
114160 mac2str(m->mac_addr), m->res[0], m->res[1]);
114161 for (i = 0; i < ARRAY_SIZE(m->group_addr); i++)
114162 at76_dbg(DBG_MIB, "%s: MIB MAC_ADDR: group addr %d: %s, "
114163 - "status %d", priv->netdev->name, i,
114164 + "status %d", wiphy_name(priv->hw->wiphy), i,
114165 mac2str(m->group_addr[i]), m->group_addr_status[i]);
114166 exit:
114167 kfree(m);
114168 @@ -1096,13 +1045,13 @@
114169 sizeof(struct mib_mac_wep));
114170 if (ret < 0) {
114171 printk(KERN_ERR "%s: at76_get_mib (MAC_WEP) failed: %d\n",
114172 - priv->netdev->name, ret);
114173 + wiphy_name(priv->hw->wiphy), ret);
114174 goto exit;
114175 }
114176
114177 at76_dbg(DBG_MIB, "%s: MIB MAC_WEP: priv_invoked %u def_key_id %u "
114178 "key_len %u excl_unencr %u wep_icv_err %u wep_excluded %u "
114179 - "encr_level %u key %d", priv->netdev->name,
114180 + "encr_level %u key %d", wiphy_name(priv->hw->wiphy),
114181 m->privacy_invoked, m->wep_default_key_id,
114182 m->wep_key_mapping_len, m->exclude_unencrypted,
114183 le32_to_cpu(m->wep_icv_error_count),
114184 @@ -1114,12 +1063,55 @@
114185
114186 for (i = 0; i < WEP_KEYS; i++)
114187 at76_dbg(DBG_MIB, "%s: MIB MAC_WEP: key %d: %s",
114188 - priv->netdev->name, i,
114189 + wiphy_name(priv->hw->wiphy), i,
114190 hex2str(m->wep_default_keyvalue[i], key_len));
114191 exit:
114192 kfree(m);
114193 }
114194
114195 +static void at76_dump_mib_mac_encryption(struct at76_priv *priv)
114196 +{
114197 + int i;
114198 + int ret;
114199 + /*int key_len;*/
114200 + struct mib_mac_encryption *m;
114201 +
114202 + m = kmalloc(sizeof(struct mib_mac_encryption), GFP_KERNEL);
114203 + if (!m)
114204 + return;
114205 +
114206 + ret = at76_get_mib(priv->udev, MIB_MAC_ENCRYPTION, m,
114207 + sizeof(struct mib_mac_encryption));
114208 + if (ret < 0) {
114209 + dev_err(&priv->udev->dev,
114210 + "%s: at76_get_mib (MAC_ENCRYPTION) failed: %d\n",
114211 + wiphy_name(priv->hw->wiphy), ret);
114212 + goto exit;
114213 + }
114214 +
114215 + at76_dbg(DBG_MIB,
114216 + "%s: MIB MAC_ENCRYPTION: tkip_bssid %s priv_invoked %u "
114217 + "ciph_key_id %u grp_key_id %u excl_unencr %u "
114218 + "ckip_key_perm %u wep_icv_err %u wep_excluded %u",
114219 + wiphy_name(priv->hw->wiphy), mac2str(m->tkip_bssid),
114220 + m->privacy_invoked, m->cipher_default_key_id,
114221 + m->cipher_default_group_key_id, m->exclude_unencrypted,
114222 + m->ckip_key_permutation,
114223 + le32_to_cpu(m->wep_icv_error_count),
114224 + le32_to_cpu(m->wep_excluded_count));
114225 +
114226 + /*key_len = (m->encryption_level == 1) ?
114227 + WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN;*/
114228 +
114229 + for (i = 0; i < CIPHER_KEYS; i++)
114230 + at76_dbg(DBG_MIB, "%s: MIB MAC_ENCRYPTION: key %d: %s",
114231 + wiphy_name(priv->hw->wiphy), i,
114232 + hex2str(m->cipher_default_keyvalue[i],
114233 + CIPHER_KEY_LEN));
114234 +exit:
114235 + kfree(m);
114236 +}
114237 +
114238 static void at76_dump_mib_mac_mgmt(struct at76_priv *priv)
114239 {
114240 int ret;
114241 @@ -1133,7 +1125,7 @@
114242 sizeof(struct mib_mac_mgmt));
114243 if (ret < 0) {
114244 printk(KERN_ERR "%s: at76_get_mib (MAC_MGMT) failed: %d\n",
114245 - priv->netdev->name, ret);
114246 + wiphy_name(priv->hw->wiphy), ret);
114247 goto exit;
114248 }
114249
114250 @@ -1144,7 +1136,7 @@
114251 "pm_mode %d ibss_change %d res %d "
114252 "multi_domain_capability_implemented %d "
114253 "international_roaming %d country_string %.3s",
114254 - priv->netdev->name, le16_to_cpu(m->beacon_period),
114255 + wiphy_name(priv->hw->wiphy), le16_to_cpu(m->beacon_period),
114256 le16_to_cpu(m->CFP_max_duration),
114257 le16_to_cpu(m->medium_occupancy_limit),
114258 le16_to_cpu(m->station_id), le16_to_cpu(m->ATIM_window),
114259 @@ -1169,7 +1161,7 @@
114260 ret = at76_get_mib(priv->udev, MIB_MAC, m, sizeof(struct mib_mac));
114261 if (ret < 0) {
114262 printk(KERN_ERR "%s: at76_get_mib (MAC) failed: %d\n",
114263 - priv->netdev->name, ret);
114264 + wiphy_name(priv->hw->wiphy), ret);
114265 goto exit;
114266 }
114267
114268 @@ -1179,7 +1171,8 @@
114269 "scan_type %d scan_channel %d probe_delay %u "
114270 "min_channel_time %d max_channel_time %d listen_int %d "
114271 "desired_ssid %s desired_bssid %s desired_bsstype %d",
114272 - priv->netdev->name, le32_to_cpu(m->max_tx_msdu_lifetime),
114273 + wiphy_name(priv->hw->wiphy),
114274 + le32_to_cpu(m->max_tx_msdu_lifetime),
114275 le32_to_cpu(m->max_rx_lifetime),
114276 le16_to_cpu(m->frag_threshold), le16_to_cpu(m->rts_threshold),
114277 le16_to_cpu(m->cwmin), le16_to_cpu(m->cwmax),
114278 @@ -1205,7 +1198,7 @@
114279 ret = at76_get_mib(priv->udev, MIB_PHY, m, sizeof(struct mib_phy));
114280 if (ret < 0) {
114281 printk(KERN_ERR "%s: at76_get_mib (PHY) failed: %d\n",
114282 - priv->netdev->name, ret);
114283 + wiphy_name(priv->hw->wiphy), ret);
114284 goto exit;
114285 }
114286
114287 @@ -1214,7 +1207,7 @@
114288 "mpdu_max_length %d cca_mode_supported %d operation_rate_set "
114289 "0x%x 0x%x 0x%x 0x%x channel_id %d current_cca_mode %d "
114290 "phy_type %d current_reg_domain %d",
114291 - priv->netdev->name, le32_to_cpu(m->ed_threshold),
114292 + wiphy_name(priv->hw->wiphy), le32_to_cpu(m->ed_threshold),
114293 le16_to_cpu(m->slot_time), le16_to_cpu(m->sifs_time),
114294 le16_to_cpu(m->preamble_length),
114295 le16_to_cpu(m->plcp_header_length),
114296 @@ -1238,13 +1231,14 @@
114297 ret = at76_get_mib(priv->udev, MIB_LOCAL, m, sizeof(struct mib_local));
114298 if (ret < 0) {
114299 printk(KERN_ERR "%s: at76_get_mib (LOCAL) failed: %d\n",
114300 - priv->netdev->name, ret);
114301 + wiphy_name(priv->hw->wiphy), ret);
114302 goto exit;
114303 }
114304
114305 at76_dbg(DBG_MIB, "%s: MIB LOCAL: beacon_enable %d "
114306 "txautorate_fallback %d ssid_size %d promiscuous_mode %d "
114307 - "preamble_type %d", priv->netdev->name, m->beacon_enable,
114308 + "preamble_type %d", wiphy_name(priv->hw->wiphy),
114309 + m->beacon_enable,
114310 m->txautorate_fallback, m->ssid_size, m->promiscuous_mode,
114311 m->preamble_type);
114312 exit:
114313 @@ -1263,118 +1257,21 @@
114314 sizeof(struct mib_mdomain));
114315 if (ret < 0) {
114316 printk(KERN_ERR "%s: at76_get_mib (MDOMAIN) failed: %d\n",
114317 - priv->netdev->name, ret);
114318 + wiphy_name(priv->hw->wiphy), ret);
114319 goto exit;
114320 }
114321
114322 at76_dbg(DBG_MIB, "%s: MIB MDOMAIN: channel_list %s",
114323 - priv->netdev->name,
114324 + wiphy_name(priv->hw->wiphy),
114325 hex2str(m->channel_list, sizeof(m->channel_list)));
114326
114327 at76_dbg(DBG_MIB, "%s: MIB MDOMAIN: tx_powerlevel %s",
114328 - priv->netdev->name,
114329 + wiphy_name(priv->hw->wiphy),
114330 hex2str(m->tx_powerlevel, sizeof(m->tx_powerlevel)));
114331 exit:
114332 kfree(m);
114333 }
114334
114335 -static int at76_get_current_bssid(struct at76_priv *priv)
114336 -{
114337 - int ret = 0;
114338 - struct mib_mac_mgmt *mac_mgmt =
114339 - kmalloc(sizeof(struct mib_mac_mgmt), GFP_KERNEL);
114340 -
114341 - if (!mac_mgmt) {
114342 - ret = -ENOMEM;
114343 - goto exit;
114344 - }
114345 -
114346 - ret = at76_get_mib(priv->udev, MIB_MAC_MGMT, mac_mgmt,
114347 - sizeof(struct mib_mac_mgmt));
114348 - if (ret < 0) {
114349 - printk(KERN_ERR "%s: at76_get_mib failed: %d\n",
114350 - priv->netdev->name, ret);
114351 - goto error;
114352 - }
114353 - memcpy(priv->bssid, mac_mgmt->current_bssid, ETH_ALEN);
114354 - printk(KERN_INFO "%s: using BSSID %s\n", priv->netdev->name,
114355 - mac2str(priv->bssid));
114356 -error:
114357 - kfree(mac_mgmt);
114358 -exit:
114359 - return ret;
114360 -}
114361 -
114362 -static int at76_get_current_channel(struct at76_priv *priv)
114363 -{
114364 - int ret = 0;
114365 - struct mib_phy *phy = kmalloc(sizeof(struct mib_phy), GFP_KERNEL);
114366 -
114367 - if (!phy) {
114368 - ret = -ENOMEM;
114369 - goto exit;
114370 - }
114371 - ret = at76_get_mib(priv->udev, MIB_PHY, phy, sizeof(struct mib_phy));
114372 - if (ret < 0) {
114373 - printk(KERN_ERR "%s: at76_get_mib(MIB_PHY) failed: %d\n",
114374 - priv->netdev->name, ret);
114375 - goto error;
114376 - }
114377 - priv->channel = phy->channel_id;
114378 -error:
114379 - kfree(phy);
114380 -exit:
114381 - return ret;
114382 -}
114383 -
114384 -/**
114385 - * at76_start_scan - start a scan
114386 - *
114387 - * @use_essid - use the configured ESSID in non passive mode
114388 - */
114389 -static int at76_start_scan(struct at76_priv *priv, int use_essid)
114390 -{
114391 - struct at76_req_scan scan;
114392 -
114393 - memset(&scan, 0, sizeof(struct at76_req_scan));
114394 - memset(scan.bssid, 0xff, ETH_ALEN);
114395 -
114396 - if (use_essid) {
114397 - memcpy(scan.essid, priv->essid, IW_ESSID_MAX_SIZE);
114398 - scan.essid_size = priv->essid_size;
114399 - } else
114400 - scan.essid_size = 0;
114401 -
114402 - /* jal: why should we start at a certain channel? we do scan the whole
114403 - range allowed by reg domain. */
114404 - scan.channel = priv->channel;
114405 -
114406 - /* atmelwlandriver differs between scan type 0 and 1 (active/passive)
114407 - For ad-hoc mode, it uses type 0 only. */
114408 - scan.scan_type = priv->scan_mode;
114409 -
114410 - /* INFO: For probe_delay, not multiplying by 1024 as this will be
114411 - slightly less than min_channel_time
114412 - (per spec: probe delay < min. channel time) */
114413 - scan.min_channel_time = cpu_to_le16(priv->scan_min_time);
114414 - scan.max_channel_time = cpu_to_le16(priv->scan_max_time);
114415 - scan.probe_delay = cpu_to_le16(priv->scan_min_time * 1000);
114416 - scan.international_scan = 0;
114417 -
114418 - /* other values are set to 0 for type 0 */
114419 -
114420 - at76_dbg(DBG_PROGRESS, "%s: start_scan (use_essid = %d, intl = %d, "
114421 - "channel = %d, probe_delay = %d, scan_min_time = %d, "
114422 - "scan_max_time = %d)",
114423 - priv->netdev->name, use_essid,
114424 - scan.international_scan, scan.channel,
114425 - le16_to_cpu(scan.probe_delay),
114426 - le16_to_cpu(scan.min_channel_time),
114427 - le16_to_cpu(scan.max_channel_time));
114428 -
114429 - return at76_set_card_command(priv->udev, CMD_SCAN, &scan, sizeof(scan));
114430 -}
114431 -
114432 /* Enable monitor mode */
114433 static int at76_start_monitor(struct at76_priv *priv)
114434 {
114435 @@ -1395,86 +1292,6 @@
114436 return ret;
114437 }
114438
114439 -static int at76_start_ibss(struct at76_priv *priv)
114440 -{
114441 - struct at76_req_ibss bss;
114442 - int ret;
114443 -
114444 - WARN_ON(priv->mac_state != MAC_OWN_IBSS);
114445 - if (priv->mac_state != MAC_OWN_IBSS)
114446 - return -EBUSY;
114447 -
114448 - memset(&bss, 0, sizeof(struct at76_req_ibss));
114449 - memset(bss.bssid, 0xff, ETH_ALEN);
114450 - memcpy(bss.essid, priv->essid, IW_ESSID_MAX_SIZE);
114451 - bss.essid_size = priv->essid_size;
114452 - bss.bss_type = ADHOC_MODE;
114453 - bss.channel = priv->channel;
114454 -
114455 - ret = at76_set_card_command(priv->udev, CMD_START_IBSS, &bss,
114456 - sizeof(struct at76_req_ibss));
114457 - if (ret < 0) {
114458 - printk(KERN_ERR "%s: start_ibss failed: %d\n",
114459 - priv->netdev->name, ret);
114460 - return ret;
114461 - }
114462 -
114463 - ret = at76_wait_completion(priv, CMD_START_IBSS);
114464 - if (ret != CMD_STATUS_COMPLETE) {
114465 - printk(KERN_ERR "%s: start_ibss failed to complete, %d\n",
114466 - priv->netdev->name, ret);
114467 - return ret;
114468 - }
114469 -
114470 - ret = at76_get_current_bssid(priv);
114471 - if (ret < 0)
114472 - return ret;
114473 -
114474 - ret = at76_get_current_channel(priv);
114475 - if (ret < 0)
114476 - return ret;
114477 -
114478 - /* not sure what this is good for ??? */
114479 - priv->mib_buf.type = MIB_MAC_MGMT;
114480 - priv->mib_buf.size = 1;
114481 - priv->mib_buf.index = offsetof(struct mib_mac_mgmt, ibss_change);
114482 - priv->mib_buf.data.byte = 0;
114483 -
114484 - ret = at76_set_mib(priv, &priv->mib_buf);
114485 - if (ret < 0) {
114486 - printk(KERN_ERR "%s: set_mib (ibss change ok) failed: %d\n",
114487 - priv->netdev->name, ret);
114488 - return ret;
114489 - }
114490 -
114491 - netif_carrier_on(priv->netdev);
114492 - netif_start_queue(priv->netdev);
114493 - return 0;
114494 -}
114495 -
114496 -/* Request card to join BSS in managed or ad-hoc mode */
114497 -static int at76_join_bss(struct at76_priv *priv, struct bss_info *ptr)
114498 -{
114499 - struct at76_req_join join;
114500 -
114501 - BUG_ON(!ptr);
114502 -
114503 - memset(&join, 0, sizeof(struct at76_req_join));
114504 - memcpy(join.bssid, ptr->bssid, ETH_ALEN);
114505 - memcpy(join.essid, ptr->ssid, ptr->ssid_len);
114506 - join.essid_size = ptr->ssid_len;
114507 - join.bss_type = (priv->iw_mode == IW_MODE_ADHOC ? 1 : 2);
114508 - join.channel = ptr->channel;
114509 - join.timeout = cpu_to_le16(2000);
114510 -
114511 - at76_dbg(DBG_PROGRESS,
114512 - "%s join addr %s ssid %s type %d ch %d timeout %d",
114513 - priv->netdev->name, mac2str(join.bssid), join.essid,
114514 - join.bss_type, join.channel, le16_to_cpu(join.timeout));
114515 - return at76_set_card_command(priv->udev, CMD_JOIN, &join,
114516 - sizeof(struct at76_req_join));
114517 -}
114518 -
114519 /* Calculate padding from txbuf->wlength (which excludes the USB TX header),
114520 likely to compensate a flaw in the AT76C503A USB part ... */
114521 static inline int at76_calc_padding(int wlen)
114522 @@ -1493,14 +1310,6 @@
114523 return 0;
114524 }
114525
114526 -/* We are doing a lot of things here in an interrupt. Need
114527 - a bh handler (Watching TV with a TV card is probably
114528 - a good test: if you see flickers, we are doing too much.
114529 - Currently I do see flickers... even with our tasklet :-( )
114530 - Maybe because the bttv driver and usb-uhci use the same interrupt
114531 -*/
114532 -/* Or maybe because our BH handler is preempting bttv's BH handler.. BHs don't
114533 - * solve everything.. (alex) */
114534 static void at76_rx_callback(struct urb *urb)
114535 {
114536 struct at76_priv *priv = urb->context;
114537 @@ -1510,1914 +1319,70 @@
114538 return;
114539 }
114540
114541 -static void at76_tx_callback(struct urb *urb)
114542 +static int at76_submit_rx_urb(struct at76_priv *priv)
114543 {
114544 - struct at76_priv *priv = urb->context;
114545 - struct net_device_stats *stats = &priv->stats;
114546 - unsigned long flags;
114547 - struct at76_tx_buffer *mgmt_buf;
114548 int ret;
114549 + int size;
114550 + struct sk_buff *skb = priv->rx_skb;
114551
114552 - switch (urb->status) {
114553 - case 0:
114554 - stats->tx_packets++;
114555 - break;
114556 - case -ENOENT:
114557 - case -ECONNRESET:
114558 - /* urb has been unlinked */
114559 - return;
114560 - default:
114561 - at76_dbg(DBG_URB, "%s - nonzero tx status received: %d",
114562 - __func__, urb->status);
114563 - stats->tx_errors++;
114564 - break;
114565 + if (!priv->rx_urb) {
114566 + printk(KERN_ERR "%s: %s: priv->rx_urb is NULL\n",
114567 + wiphy_name(priv->hw->wiphy), __func__);
114568 + return -EFAULT;
114569 }
114570
114571 - spin_lock_irqsave(&priv->mgmt_spinlock, flags);
114572 - mgmt_buf = priv->next_mgmt_bulk;
114573 - priv->next_mgmt_bulk = NULL;
114574 - spin_unlock_irqrestore(&priv->mgmt_spinlock, flags);
114575 + if (!skb) {
114576 + skb = dev_alloc_skb(sizeof(struct at76_rx_buffer));
114577 + if (!skb) {
114578 + printk(KERN_ERR "%s: cannot allocate rx skbuff\n",
114579 + wiphy_name(priv->hw->wiphy));
114580 + ret = -ENOMEM;
114581 + goto exit;
114582 + }
114583 + priv->rx_skb = skb;
114584 + } else {
114585 + skb_push(skb, skb_headroom(skb));
114586 + skb_trim(skb, 0);
114587 + }
114588
114589 - if (!mgmt_buf) {
114590 - netif_wake_queue(priv->netdev);
114591 - return;
114592 + size = skb_tailroom(skb);
114593 + usb_fill_bulk_urb(priv->rx_urb, priv->udev, priv->rx_pipe,
114594 + skb_put(skb, size), size, at76_rx_callback, priv);
114595 + ret = usb_submit_urb(priv->rx_urb, GFP_ATOMIC);
114596 + if (ret < 0) {
114597 + if (ret == -ENODEV)
114598 + at76_dbg(DBG_DEVSTART,
114599 + "usb_submit_urb returned -ENODEV");
114600 + else
114601 + printk(KERN_ERR "%s: rx, usb_submit_urb failed: %d\n",
114602 + wiphy_name(priv->hw->wiphy), ret);
114603 }
114604
114605 - /* we don't copy the padding bytes, but add them
114606 - to the length */
114607 - memcpy(priv->bulk_out_buffer, mgmt_buf,
114608 - le16_to_cpu(mgmt_buf->wlength) + AT76_TX_HDRLEN);
114609 - usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe,
114610 - priv->bulk_out_buffer,
114611 - le16_to_cpu(mgmt_buf->wlength) + mgmt_buf->padding +
114612 - AT76_TX_HDRLEN, at76_tx_callback, priv);
114613 - ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
114614 - if (ret)
114615 - printk(KERN_ERR "%s: error in tx submit urb: %d\n",
114616 - priv->netdev->name, ret);
114617 +exit:
114618 + if (ret < 0 && ret != -ENODEV)
114619 + printk(KERN_ERR "%s: cannot submit rx urb - please unload the "
114620 + "driver and/or power cycle the device\n",
114621 + wiphy_name(priv->hw->wiphy));
114622
114623 - kfree(mgmt_buf);
114624 + return ret;
114625 }
114626
114627 -/* Send a management frame on bulk-out. txbuf->wlength must be set */
114628 -static int at76_tx_mgmt(struct at76_priv *priv, struct at76_tx_buffer *txbuf)
114629 +/* Download external firmware */
114630 +static int at76_load_external_fw(struct usb_device *udev, struct fwentry *fwe)
114631 {
114632 - unsigned long flags;
114633 int ret;
114634 - int urb_status;
114635 - void *oldbuf = NULL;
114636 -
114637 - netif_carrier_off(priv->netdev); /* stop netdev watchdog */
114638 - netif_stop_queue(priv->netdev); /* stop tx data packets */
114639 + int op_mode;
114640 + int blockno = 0;
114641 + int bsize;
114642 + u8 *block;
114643 + u8 *buf = fwe->extfw;
114644 + int size = fwe->extfw_size;
114645
114646 - spin_lock_irqsave(&priv->mgmt_spinlock, flags);
114647 + if (!buf || !size)
114648 + return -ENOENT;
114649
114650 - urb_status = priv->tx_urb->status;
114651 - if (urb_status == -EINPROGRESS) {
114652 - /* cannot transmit now, put in the queue */
114653 - oldbuf = priv->next_mgmt_bulk;
114654 - priv->next_mgmt_bulk = txbuf;
114655 - }
114656 - spin_unlock_irqrestore(&priv->mgmt_spinlock, flags);
114657 -
114658 - if (oldbuf) {
114659 - /* a data/mgmt tx is already pending in the URB -
114660 - if this is no error in some situations we must
114661 - implement a queue or silently modify the old msg */
114662 - printk(KERN_ERR "%s: removed pending mgmt buffer %s\n",
114663 - priv->netdev->name, hex2str(oldbuf, 64));
114664 - kfree(oldbuf);
114665 - return 0;
114666 - }
114667 -
114668 - txbuf->tx_rate = TX_RATE_1MBIT;
114669 - txbuf->padding = at76_calc_padding(le16_to_cpu(txbuf->wlength));
114670 - memset(txbuf->reserved, 0, sizeof(txbuf->reserved));
114671 -
114672 - if (priv->next_mgmt_bulk)
114673 - printk(KERN_ERR "%s: URB status %d, but mgmt is pending\n",
114674 - priv->netdev->name, urb_status);
114675 -
114676 - at76_dbg(DBG_TX_MGMT,
114677 - "%s: tx mgmt: wlen %d tx_rate %d pad %d %s",
114678 - priv->netdev->name, le16_to_cpu(txbuf->wlength),
114679 - txbuf->tx_rate, txbuf->padding,
114680 - hex2str(txbuf->packet, le16_to_cpu(txbuf->wlength)));
114681 -
114682 - /* txbuf was not consumed above -> send mgmt msg immediately */
114683 - memcpy(priv->bulk_out_buffer, txbuf,
114684 - le16_to_cpu(txbuf->wlength) + AT76_TX_HDRLEN);
114685 - usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe,
114686 - priv->bulk_out_buffer,
114687 - le16_to_cpu(txbuf->wlength) + txbuf->padding +
114688 - AT76_TX_HDRLEN, at76_tx_callback, priv);
114689 - ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
114690 - if (ret)
114691 - printk(KERN_ERR "%s: error in tx submit urb: %d\n",
114692 - priv->netdev->name, ret);
114693 -
114694 - kfree(txbuf);
114695 -
114696 - return ret;
114697 -}
114698 -
114699 -/* Go to the next information element */
114700 -static inline void next_ie(struct ieee80211_info_element **ie)
114701 -{
114702 - *ie = (struct ieee80211_info_element *)(&(*ie)->data[(*ie)->len]);
114703 -}
114704 -
114705 -/* Challenge is the challenge string (in TLV format)
114706 - we got with seq_nr 2 for shared secret authentication only and
114707 - send in seq_nr 3 WEP encrypted to prove we have the correct WEP key;
114708 - otherwise it is NULL */
114709 -static int at76_auth_req(struct at76_priv *priv, struct bss_info *bss,
114710 - int seq_nr, struct ieee80211_info_element *challenge)
114711 -{
114712 - struct at76_tx_buffer *tx_buffer;
114713 - struct ieee80211_hdr_3addr *mgmt;
114714 - struct ieee80211_auth *req;
114715 - int buf_len = (seq_nr != 3 ? AUTH_FRAME_SIZE :
114716 - AUTH_FRAME_SIZE + 1 + 1 + challenge->len);
114717 -
114718 - BUG_ON(!bss);
114719 - BUG_ON(seq_nr == 3 && !challenge);
114720 - tx_buffer = kmalloc(buf_len + MAX_PADDING_SIZE, GFP_ATOMIC);
114721 - if (!tx_buffer)
114722 - return -ENOMEM;
114723 -
114724 - req = (struct ieee80211_auth *)tx_buffer->packet;
114725 - mgmt = &req->header;
114726 -
114727 - /* make wireless header */
114728 - /* first auth msg is not encrypted, only the second (seq_nr == 3) */
114729 - mgmt->frame_ctl =
114730 - cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH |
114731 - (seq_nr == 3 ? IEEE80211_FCTL_PROTECTED : 0));
114732 -
114733 - mgmt->duration_id = cpu_to_le16(0x8000);
114734 - memcpy(mgmt->addr1, bss->bssid, ETH_ALEN);
114735 - memcpy(mgmt->addr2, priv->netdev->dev_addr, ETH_ALEN);
114736 - memcpy(mgmt->addr3, bss->bssid, ETH_ALEN);
114737 - mgmt->seq_ctl = cpu_to_le16(0);
114738 -
114739 - req->algorithm = cpu_to_le16(priv->auth_mode);
114740 - req->transaction = cpu_to_le16(seq_nr);
114741 - req->status = cpu_to_le16(0);
114742 -
114743 - if (seq_nr == 3)
114744 - memcpy(req->info_element, challenge, 1 + 1 + challenge->len);
114745 -
114746 - /* init. at76_priv tx header */
114747 - tx_buffer->wlength = cpu_to_le16(buf_len - AT76_TX_HDRLEN);
114748 - at76_dbg(DBG_TX_MGMT, "%s: AuthReq bssid %s alg %d seq_nr %d",
114749 - priv->netdev->name, mac2str(mgmt->addr3),
114750 - le16_to_cpu(req->algorithm), le16_to_cpu(req->transaction));
114751 - if (seq_nr == 3)
114752 - at76_dbg(DBG_TX_MGMT, "%s: AuthReq challenge: %s ...",
114753 - priv->netdev->name, hex2str(req->info_element, 18));
114754 -
114755 - /* either send immediately (if no data tx is pending
114756 - or put it in pending list */
114757 - return at76_tx_mgmt(priv, tx_buffer);
114758 -}
114759 -
114760 -static int at76_assoc_req(struct at76_priv *priv, struct bss_info *bss)
114761 -{
114762 - struct at76_tx_buffer *tx_buffer;
114763 - struct ieee80211_hdr_3addr *mgmt;
114764 - struct ieee80211_assoc_request *req;
114765 - struct ieee80211_info_element *ie;
114766 - char *essid;
114767 - int essid_len;
114768 - u16 capa;
114769 -
114770 - BUG_ON(!bss);
114771 -
114772 - tx_buffer = kmalloc(ASSOCREQ_MAX_SIZE + MAX_PADDING_SIZE, GFP_ATOMIC);
114773 - if (!tx_buffer)
114774 - return -ENOMEM;
114775 -
114776 - req = (struct ieee80211_assoc_request *)tx_buffer->packet;
114777 - mgmt = &req->header;
114778 - ie = req->info_element;
114779 -
114780 - /* make wireless header */
114781 - mgmt->frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT |
114782 - IEEE80211_STYPE_ASSOC_REQ);
114783 -
114784 - mgmt->duration_id = cpu_to_le16(0x8000);
114785 - memcpy(mgmt->addr1, bss->bssid, ETH_ALEN);
114786 - memcpy(mgmt->addr2, priv->netdev->dev_addr, ETH_ALEN);
114787 - memcpy(mgmt->addr3, bss->bssid, ETH_ALEN);
114788 - mgmt->seq_ctl = cpu_to_le16(0);
114789 -
114790 - /* we must set the Privacy bit in the capabilities to assure an
114791 - Agere-based AP with optional WEP transmits encrypted frames
114792 - to us. AP only set the Privacy bit in their capabilities
114793 - if WEP is mandatory in the BSS! */
114794 - capa = bss->capa;
114795 - if (priv->wep_enabled)
114796 - capa |= WLAN_CAPABILITY_PRIVACY;
114797 - if (priv->preamble_type != PREAMBLE_TYPE_LONG)
114798 - capa |= WLAN_CAPABILITY_SHORT_PREAMBLE;
114799 - req->capability = cpu_to_le16(capa);
114800 -
114801 - req->listen_interval = cpu_to_le16(2 * bss->beacon_interval);
114802 -
114803 - /* write TLV data elements */
114804 -
114805 - ie->id = MFIE_TYPE_SSID;
114806 - ie->len = bss->ssid_len;
114807 - memcpy(ie->data, bss->ssid, bss->ssid_len);
114808 - next_ie(&ie);
114809 -
114810 - ie->id = MFIE_TYPE_RATES;
114811 - ie->len = sizeof(hw_rates);
114812 - memcpy(ie->data, hw_rates, sizeof(hw_rates));
114813 - next_ie(&ie); /* ie points behind the supp_rates field */
114814 -
114815 - /* init. at76_priv tx header */
114816 - tx_buffer->wlength = cpu_to_le16((u8 *)ie - (u8 *)mgmt);
114817 -
114818 - ie = req->info_element;
114819 - essid = ie->data;
114820 - essid_len = min_t(int, IW_ESSID_MAX_SIZE, ie->len);
114821 -
114822 - next_ie(&ie); /* points to IE of rates now */
114823 - at76_dbg(DBG_TX_MGMT,
114824 - "%s: AssocReq bssid %s capa 0x%04x ssid %.*s rates %s",
114825 - priv->netdev->name, mac2str(mgmt->addr3),
114826 - le16_to_cpu(req->capability), essid_len, essid,
114827 - hex2str(ie->data, ie->len));
114828 -
114829 - /* either send immediately (if no data tx is pending
114830 - or put it in pending list */
114831 - return at76_tx_mgmt(priv, tx_buffer);
114832 -}
114833 -
114834 -/* We got to check the bss_list for old entries */
114835 -static void at76_bss_list_timeout(unsigned long par)
114836 -{
114837 - struct at76_priv *priv = (struct at76_priv *)par;
114838 - unsigned long flags;
114839 - struct list_head *lptr, *nptr;
114840 - struct bss_info *ptr;
114841 -
114842 - spin_lock_irqsave(&priv->bss_list_spinlock, flags);
114843 -
114844 - list_for_each_safe(lptr, nptr, &priv->bss_list) {
114845 -
114846 - ptr = list_entry(lptr, struct bss_info, list);
114847 -
114848 - if (ptr != priv->curr_bss
114849 - && time_after(jiffies, ptr->last_rx + BSS_LIST_TIMEOUT)) {
114850 - at76_dbg(DBG_BSS_TABLE_RM,
114851 - "%s: bss_list: removing old BSS %s ch %d",
114852 - priv->netdev->name, mac2str(ptr->bssid),
114853 - ptr->channel);
114854 - list_del(&ptr->list);
114855 - kfree(ptr);
114856 - }
114857 - }
114858 - spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
114859 - /* restart the timer */
114860 - mod_timer(&priv->bss_list_timer, jiffies + BSS_LIST_TIMEOUT);
114861 -}
114862 -
114863 -static inline void at76_set_mac_state(struct at76_priv *priv,
114864 - enum mac_state mac_state)
114865 -{
114866 - at76_dbg(DBG_MAC_STATE, "%s state: %s", priv->netdev->name,
114867 - mac_states[mac_state]);
114868 - priv->mac_state = mac_state;
114869 -}
114870 -
114871 -static void at76_dump_bss_table(struct at76_priv *priv)
114872 -{
114873 - struct bss_info *ptr;
114874 - unsigned long flags;
114875 - struct list_head *lptr;
114876 -
114877 - spin_lock_irqsave(&priv->bss_list_spinlock, flags);
114878 -
114879 - at76_dbg(DBG_BSS_TABLE, "%s BSS table (curr=%p):", priv->netdev->name,
114880 - priv->curr_bss);
114881 -
114882 - list_for_each(lptr, &priv->bss_list) {
114883 - ptr = list_entry(lptr, struct bss_info, list);
114884 - at76_dbg(DBG_BSS_TABLE, "0x%p: bssid %s channel %d ssid %.*s "
114885 - "(%s) capa 0x%04x rates %s rssi %d link %d noise %d",
114886 - ptr, mac2str(ptr->bssid), ptr->channel, ptr->ssid_len,
114887 - ptr->ssid, hex2str(ptr->ssid, ptr->ssid_len),
114888 - ptr->capa, hex2str(ptr->rates, ptr->rates_len),
114889 - ptr->rssi, ptr->link_qual, ptr->noise_level);
114890 - }
114891 - spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
114892 -}
114893 -
114894 -/* Called upon successful association to mark interface as connected */
114895 -static void at76_work_assoc_done(struct work_struct *work)
114896 -{
114897 - struct at76_priv *priv = container_of(work, struct at76_priv,
114898 - work_assoc_done);
114899 -
114900 - mutex_lock(&priv->mtx);
114901 -
114902 - WARN_ON(priv->mac_state != MAC_ASSOC);
114903 - WARN_ON(!priv->curr_bss);
114904 - if (priv->mac_state != MAC_ASSOC || !priv->curr_bss)
114905 - goto exit;
114906 -
114907 - if (priv->iw_mode == IW_MODE_INFRA) {
114908 - if (priv->pm_mode != AT76_PM_OFF) {
114909 - /* calculate the listen interval in units of
114910 - beacon intervals of the curr_bss */
114911 - u32 pm_period_beacon = (priv->pm_period >> 10) /
114912 - priv->curr_bss->beacon_interval;
114913 -
114914 - pm_period_beacon = max(pm_period_beacon, 2u);
114915 - pm_period_beacon = min(pm_period_beacon, 0xffffu);
114916 -
114917 - at76_dbg(DBG_PM,
114918 - "%s: pm_mode %d assoc id 0x%x listen int %d",
114919 - priv->netdev->name, priv->pm_mode,
114920 - priv->assoc_id, pm_period_beacon);
114921 -
114922 - at76_set_associd(priv, priv->assoc_id);
114923 - at76_set_listen_interval(priv, (u16)pm_period_beacon);
114924 - }
114925 - schedule_delayed_work(&priv->dwork_beacon, BEACON_TIMEOUT);
114926 - }
114927 - at76_set_pm_mode(priv);
114928 -
114929 - netif_carrier_on(priv->netdev);
114930 - netif_wake_queue(priv->netdev);
114931 - at76_set_mac_state(priv, MAC_CONNECTED);
114932 - at76_iwevent_bss_connect(priv->netdev, priv->curr_bss->bssid);
114933 - at76_dbg(DBG_PROGRESS, "%s: connected to BSSID %s",
114934 - priv->netdev->name, mac2str(priv->curr_bss->bssid));
114935 -
114936 -exit:
114937 - mutex_unlock(&priv->mtx);
114938 -}
114939 -
114940 -/* We only store the new mac address in netdev struct,
114941 - it gets set when the netdev is opened. */
114942 -static int at76_set_mac_address(struct net_device *netdev, void *addr)
114943 -{
114944 - struct sockaddr *mac = addr;
114945 - memcpy(netdev->dev_addr, mac->sa_data, ETH_ALEN);
114946 - return 1;
114947 -}
114948 -
114949 -static struct net_device_stats *at76_get_stats(struct net_device *netdev)
114950 -{
114951 - struct at76_priv *priv = netdev_priv(netdev);
114952 - return &priv->stats;
114953 -}
114954 -
114955 -static struct iw_statistics *at76_get_wireless_stats(struct net_device *netdev)
114956 -{
114957 - struct at76_priv *priv = netdev_priv(netdev);
114958 -
114959 - at76_dbg(DBG_IOCTL, "RETURN qual %d level %d noise %d updated %d",
114960 - priv->wstats.qual.qual, priv->wstats.qual.level,
114961 - priv->wstats.qual.noise, priv->wstats.qual.updated);
114962 -
114963 - return &priv->wstats;
114964 -}
114965 -
114966 -static void at76_set_multicast(struct net_device *netdev)
114967 -{
114968 - struct at76_priv *priv = netdev_priv(netdev);
114969 - int promisc;
114970 -
114971 - promisc = ((netdev->flags & IFF_PROMISC) != 0);
114972 - if (promisc != priv->promisc) {
114973 - /* This gets called in interrupt, must reschedule */
114974 - priv->promisc = promisc;
114975 - schedule_work(&priv->work_set_promisc);
114976 - }
114977 -}
114978 -
114979 -/* Stop all network activity, flush all pending tasks */
114980 -static void at76_quiesce(struct at76_priv *priv)
114981 -{
114982 - unsigned long flags;
114983 -
114984 - netif_stop_queue(priv->netdev);
114985 - netif_carrier_off(priv->netdev);
114986 -
114987 - at76_set_mac_state(priv, MAC_INIT);
114988 -
114989 - cancel_delayed_work(&priv->dwork_get_scan);
114990 - cancel_delayed_work(&priv->dwork_beacon);
114991 - cancel_delayed_work(&priv->dwork_auth);
114992 - cancel_delayed_work(&priv->dwork_assoc);
114993 - cancel_delayed_work(&priv->dwork_restart);
114994 -
114995 - spin_lock_irqsave(&priv->mgmt_spinlock, flags);
114996 - kfree(priv->next_mgmt_bulk);
114997 - priv->next_mgmt_bulk = NULL;
114998 - spin_unlock_irqrestore(&priv->mgmt_spinlock, flags);
114999 -}
115000 -
115001 -/*******************************************************************************
115002 - * at76_priv implementations of iw_handler functions:
115003 - */
115004 -static int at76_iw_handler_commit(struct net_device *netdev,
115005 - struct iw_request_info *info,
115006 - void *null, char *extra)
115007 -{
115008 - struct at76_priv *priv = netdev_priv(netdev);
115009 -
115010 - at76_dbg(DBG_IOCTL, "%s %s: restarting the device", netdev->name,
115011 - __func__);
115012 -
115013 - if (priv->mac_state != MAC_INIT)
115014 - at76_quiesce(priv);
115015 -
115016 - /* Wait half second before the restart to process subsequent
115017 - * requests from the same iwconfig in a single restart */
115018 - schedule_delayed_work(&priv->dwork_restart, HZ / 2);
115019 -
115020 - return 0;
115021 -}
115022 -
115023 -static int at76_iw_handler_get_name(struct net_device *netdev,
115024 - struct iw_request_info *info,
115025 - char *name, char *extra)
115026 -{
115027 - strcpy(name, "IEEE 802.11b");
115028 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWNAME - name %s", netdev->name, name);
115029 - return 0;
115030 -}
115031 -
115032 -static int at76_iw_handler_set_freq(struct net_device *netdev,
115033 - struct iw_request_info *info,
115034 - struct iw_freq *freq, char *extra)
115035 -{
115036 - struct at76_priv *priv = netdev_priv(netdev);
115037 - int chan = -1;
115038 - int ret = -EIWCOMMIT;
115039 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWFREQ - freq.m %d freq.e %d",
115040 - netdev->name, freq->m, freq->e);
115041 -
115042 - if ((freq->e == 0) && (freq->m <= 1000))
115043 - /* Setting by channel number */
115044 - chan = freq->m;
115045 - else {
115046 - /* Setting by frequency - search the table */
115047 - int mult = 1;
115048 - int i;
115049 -
115050 - for (i = 0; i < (6 - freq->e); i++)
115051 - mult *= 10;
115052 -
115053 - for (i = 0; i < NUM_CHANNELS; i++) {
115054 - if (freq->m == (channel_frequency[i] * mult))
115055 - chan = i + 1;
115056 - }
115057 - }
115058 -
115059 - if (chan < 1 || !priv->domain)
115060 - /* non-positive channels are invalid
115061 - * we need a domain info to set the channel
115062 - * either that or an invalid frequency was
115063 - * provided by the user */
115064 - ret = -EINVAL;
115065 - else if (!(priv->domain->channel_map & (1 << (chan - 1)))) {
115066 - printk(KERN_INFO "%s: channel %d not allowed for domain %s\n",
115067 - priv->netdev->name, chan, priv->domain->name);
115068 - ret = -EINVAL;
115069 - }
115070 -
115071 - if (ret == -EIWCOMMIT) {
115072 - priv->channel = chan;
115073 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWFREQ - ch %d", netdev->name,
115074 - chan);
115075 - }
115076 -
115077 - return ret;
115078 -}
115079 -
115080 -static int at76_iw_handler_get_freq(struct net_device *netdev,
115081 - struct iw_request_info *info,
115082 - struct iw_freq *freq, char *extra)
115083 -{
115084 - struct at76_priv *priv = netdev_priv(netdev);
115085 -
115086 - freq->m = priv->channel;
115087 - freq->e = 0;
115088 -
115089 - if (priv->channel)
115090 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWFREQ - freq %ld x 10e%d",
115091 - netdev->name, channel_frequency[priv->channel - 1], 6);
115092 -
115093 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWFREQ - ch %d", netdev->name,
115094 - priv->channel);
115095 -
115096 - return 0;
115097 -}
115098 -
115099 -static int at76_iw_handler_set_mode(struct net_device *netdev,
115100 - struct iw_request_info *info,
115101 - __u32 *mode, char *extra)
115102 -{
115103 - struct at76_priv *priv = netdev_priv(netdev);
115104 -
115105 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWMODE - %d", netdev->name, *mode);
115106 -
115107 - if ((*mode != IW_MODE_ADHOC) && (*mode != IW_MODE_INFRA) &&
115108 - (*mode != IW_MODE_MONITOR))
115109 - return -EINVAL;
115110 -
115111 - priv->iw_mode = *mode;
115112 - if (priv->iw_mode != IW_MODE_INFRA)
115113 - priv->pm_mode = AT76_PM_OFF;
115114 -
115115 - return -EIWCOMMIT;
115116 -}
115117 -
115118 -static int at76_iw_handler_get_mode(struct net_device *netdev,
115119 - struct iw_request_info *info,
115120 - __u32 *mode, char *extra)
115121 -{
115122 - struct at76_priv *priv = netdev_priv(netdev);
115123 -
115124 - *mode = priv->iw_mode;
115125 -
115126 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWMODE - %d", netdev->name, *mode);
115127 -
115128 - return 0;
115129 -}
115130 -
115131 -static int at76_iw_handler_get_range(struct net_device *netdev,
115132 - struct iw_request_info *info,
115133 - struct iw_point *data, char *extra)
115134 -{
115135 - /* inspired by atmel.c */
115136 - struct at76_priv *priv = netdev_priv(netdev);
115137 - struct iw_range *range = (struct iw_range *)extra;
115138 - int i;
115139 -
115140 - data->length = sizeof(struct iw_range);
115141 - memset(range, 0, sizeof(struct iw_range));
115142 -
115143 - /* TODO: range->throughput = xxxxxx; */
115144 -
115145 - range->min_nwid = 0x0000;
115146 - range->max_nwid = 0x0000;
115147 -
115148 - /* this driver doesn't maintain sensitivity information */
115149 - range->sensitivity = 0;
115150 -
115151 - range->max_qual.qual = 100;
115152 - range->max_qual.level = 100;
115153 - range->max_qual.noise = 0;
115154 - range->max_qual.updated = IW_QUAL_NOISE_INVALID;
115155 -
115156 - range->avg_qual.qual = 50;
115157 - range->avg_qual.level = 50;
115158 - range->avg_qual.noise = 0;
115159 - range->avg_qual.updated = IW_QUAL_NOISE_INVALID;
115160 -
115161 - range->bitrate[0] = 1000000;
115162 - range->bitrate[1] = 2000000;
115163 - range->bitrate[2] = 5500000;
115164 - range->bitrate[3] = 11000000;
115165 - range->num_bitrates = 4;
115166 -
115167 - range->min_rts = 0;
115168 - range->max_rts = MAX_RTS_THRESHOLD;
115169 -
115170 - range->min_frag = MIN_FRAG_THRESHOLD;
115171 - range->max_frag = MAX_FRAG_THRESHOLD;
115172 -
115173 - range->pmp_flags = IW_POWER_PERIOD;
115174 - range->pmt_flags = IW_POWER_ON;
115175 - range->pm_capa = IW_POWER_PERIOD | IW_POWER_ALL_R;
115176 -
115177 - range->encoding_size[0] = WEP_SMALL_KEY_LEN;
115178 - range->encoding_size[1] = WEP_LARGE_KEY_LEN;
115179 - range->num_encoding_sizes = 2;
115180 - range->max_encoding_tokens = WEP_KEYS;
115181 -
115182 - /* both WL-240U and Linksys WUSB11 v2.6 specify 15 dBm as output power
115183 - - take this for all (ignore antenna gains) */
115184 - range->txpower[0] = 15;
115185 - range->num_txpower = 1;
115186 - range->txpower_capa = IW_TXPOW_DBM;
115187 -
115188 - range->we_version_source = WIRELESS_EXT;
115189 - range->we_version_compiled = WIRELESS_EXT;
115190 -
115191 - /* same as the values used in atmel.c */
115192 - range->retry_capa = IW_RETRY_LIMIT;
115193 - range->retry_flags = IW_RETRY_LIMIT;
115194 - range->r_time_flags = 0;
115195 - range->min_retry = 1;
115196 - range->max_retry = 255;
115197 -
115198 - range->num_channels = NUM_CHANNELS;
115199 - range->num_frequency = 0;
115200 -
115201 - for (i = 0; i < NUM_CHANNELS; i++) {
115202 - /* test if channel map bit is raised */
115203 - if (priv->domain->channel_map & (0x1 << i)) {
115204 - range->num_frequency += 1;
115205 -
115206 - range->freq[i].i = i + 1;
115207 - range->freq[i].m = channel_frequency[i] * 100000;
115208 - range->freq[i].e = 1; /* freq * 10^1 */
115209 - }
115210 - }
115211 -
115212 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWRANGE", netdev->name);
115213 -
115214 - return 0;
115215 -}
115216 -
115217 -static int at76_iw_handler_set_spy(struct net_device *netdev,
115218 - struct iw_request_info *info,
115219 - struct iw_point *data, char *extra)
115220 -{
115221 - struct at76_priv *priv = netdev_priv(netdev);
115222 - int ret = 0;
115223 -
115224 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWSPY - number of addresses %d",
115225 - netdev->name, data->length);
115226 -
115227 - spin_lock_bh(&priv->spy_spinlock);
115228 - ret = iw_handler_set_spy(priv->netdev, info, (union iwreq_data *)data,
115229 - extra);
115230 - spin_unlock_bh(&priv->spy_spinlock);
115231 -
115232 - return ret;
115233 -}
115234 -
115235 -static int at76_iw_handler_get_spy(struct net_device *netdev,
115236 - struct iw_request_info *info,
115237 - struct iw_point *data, char *extra)
115238 -{
115239 -
115240 - struct at76_priv *priv = netdev_priv(netdev);
115241 - int ret = 0;
115242 -
115243 - spin_lock_bh(&priv->spy_spinlock);
115244 - ret = iw_handler_get_spy(priv->netdev, info,
115245 - (union iwreq_data *)data, extra);
115246 - spin_unlock_bh(&priv->spy_spinlock);
115247 -
115248 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWSPY - number of addresses %d",
115249 - netdev->name, data->length);
115250 -
115251 - return ret;
115252 -}
115253 -
115254 -static int at76_iw_handler_set_thrspy(struct net_device *netdev,
115255 - struct iw_request_info *info,
115256 - struct iw_point *data, char *extra)
115257 -{
115258 - struct at76_priv *priv = netdev_priv(netdev);
115259 - int ret;
115260 -
115261 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWTHRSPY - number of addresses %d)",
115262 - netdev->name, data->length);
115263 -
115264 - spin_lock_bh(&priv->spy_spinlock);
115265 - ret = iw_handler_set_thrspy(netdev, info, (union iwreq_data *)data,
115266 - extra);
115267 - spin_unlock_bh(&priv->spy_spinlock);
115268 -
115269 - return ret;
115270 -}
115271 -
115272 -static int at76_iw_handler_get_thrspy(struct net_device *netdev,
115273 - struct iw_request_info *info,
115274 - struct iw_point *data, char *extra)
115275 -{
115276 - struct at76_priv *priv = netdev_priv(netdev);
115277 - int ret;
115278 -
115279 - spin_lock_bh(&priv->spy_spinlock);
115280 - ret = iw_handler_get_thrspy(netdev, info, (union iwreq_data *)data,
115281 - extra);
115282 - spin_unlock_bh(&priv->spy_spinlock);
115283 -
115284 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWTHRSPY - number of addresses %d)",
115285 - netdev->name, data->length);
115286 -
115287 - return ret;
115288 -}
115289 -
115290 -static int at76_iw_handler_set_wap(struct net_device *netdev,
115291 - struct iw_request_info *info,
115292 - struct sockaddr *ap_addr, char *extra)
115293 -{
115294 - struct at76_priv *priv = netdev_priv(netdev);
115295 -
115296 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWAP - wap/bssid %s", netdev->name,
115297 - mac2str(ap_addr->sa_data));
115298 -
115299 - /* if the incoming address == ff:ff:ff:ff:ff:ff, the user has
115300 - chosen any or auto AP preference */
115301 - if (is_broadcast_ether_addr(ap_addr->sa_data)
115302 - || is_zero_ether_addr(ap_addr->sa_data))
115303 - priv->wanted_bssid_valid = 0;
115304 - else {
115305 - /* user wants to set a preferred AP address */
115306 - priv->wanted_bssid_valid = 1;
115307 - memcpy(priv->wanted_bssid, ap_addr->sa_data, ETH_ALEN);
115308 - }
115309 -
115310 - return -EIWCOMMIT;
115311 -}
115312 -
115313 -static int at76_iw_handler_get_wap(struct net_device *netdev,
115314 - struct iw_request_info *info,
115315 - struct sockaddr *ap_addr, char *extra)
115316 -{
115317 - struct at76_priv *priv = netdev_priv(netdev);
115318 -
115319 - ap_addr->sa_family = ARPHRD_ETHER;
115320 - memcpy(ap_addr->sa_data, priv->bssid, ETH_ALEN);
115321 -
115322 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWAP - wap/bssid %s", netdev->name,
115323 - mac2str(ap_addr->sa_data));
115324 -
115325 - return 0;
115326 -}
115327 -
115328 -static int at76_iw_handler_set_scan(struct net_device *netdev,
115329 - struct iw_request_info *info,
115330 - union iwreq_data *wrqu, char *extra)
115331 -{
115332 - struct at76_priv *priv = netdev_priv(netdev);
115333 - int ret = 0;
115334 -
115335 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWSCAN", netdev->name);
115336 -
115337 - if (mutex_lock_interruptible(&priv->mtx))
115338 - return -EINTR;
115339 -
115340 - if (!netif_running(netdev)) {
115341 - ret = -ENETDOWN;
115342 - goto exit;
115343 - }
115344 -
115345 - /* jal: we don't allow "iwlist ethX scan" while we are
115346 - in monitor mode */
115347 - if (priv->iw_mode == IW_MODE_MONITOR) {
115348 - ret = -EBUSY;
115349 - goto exit;
115350 - }
115351 -
115352 - /* Discard old scan results */
115353 - if ((jiffies - priv->last_scan) > (20 * HZ))
115354 - priv->scan_state = SCAN_IDLE;
115355 - priv->last_scan = jiffies;
115356 -
115357 - /* Initiate a scan command */
115358 - if (priv->scan_state == SCAN_IN_PROGRESS) {
115359 - ret = -EBUSY;
115360 - goto exit;
115361 - }
115362 -
115363 - priv->scan_state = SCAN_IN_PROGRESS;
115364 -
115365 - at76_quiesce(priv);
115366 -
115367 - /* Try to do passive or active scan if WE asks as. */
115368 - if (wrqu->data.length
115369 - && wrqu->data.length == sizeof(struct iw_scan_req)) {
115370 - struct iw_scan_req *req = (struct iw_scan_req *)extra;
115371 -
115372 - if (req->scan_type == IW_SCAN_TYPE_PASSIVE)
115373 - priv->scan_mode = SCAN_TYPE_PASSIVE;
115374 - else if (req->scan_type == IW_SCAN_TYPE_ACTIVE)
115375 - priv->scan_mode = SCAN_TYPE_ACTIVE;
115376 -
115377 - /* Sanity check values? */
115378 - if (req->min_channel_time > 0)
115379 - priv->scan_min_time = req->min_channel_time;
115380 -
115381 - if (req->max_channel_time > 0)
115382 - priv->scan_max_time = req->max_channel_time;
115383 - }
115384 -
115385 - /* change to scanning state */
115386 - at76_set_mac_state(priv, MAC_SCANNING);
115387 - schedule_work(&priv->work_start_scan);
115388 -
115389 -exit:
115390 - mutex_unlock(&priv->mtx);
115391 - return ret;
115392 -}
115393 -
115394 -static int at76_iw_handler_get_scan(struct net_device *netdev,
115395 - struct iw_request_info *info,
115396 - struct iw_point *data, char *extra)
115397 -{
115398 - struct at76_priv *priv = netdev_priv(netdev);
115399 - unsigned long flags;
115400 - struct list_head *lptr, *nptr;
115401 - struct bss_info *curr_bss;
115402 - struct iw_event *iwe = kmalloc(sizeof(struct iw_event), GFP_KERNEL);
115403 - char *curr_val, *curr_pos = extra;
115404 - int i;
115405 -
115406 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWSCAN", netdev->name);
115407 -
115408 - if (!iwe)
115409 - return -ENOMEM;
115410 -
115411 - if (priv->scan_state != SCAN_COMPLETED) {
115412 - /* scan not yet finished */
115413 - kfree(iwe);
115414 - return -EAGAIN;
115415 - }
115416 -
115417 - spin_lock_irqsave(&priv->bss_list_spinlock, flags);
115418 -
115419 - list_for_each_safe(lptr, nptr, &priv->bss_list) {
115420 - curr_bss = list_entry(lptr, struct bss_info, list);
115421 -
115422 - iwe->cmd = SIOCGIWAP;
115423 - iwe->u.ap_addr.sa_family = ARPHRD_ETHER;
115424 - memcpy(iwe->u.ap_addr.sa_data, curr_bss->bssid, 6);
115425 - curr_pos = iwe_stream_add_event(info, curr_pos,
115426 - extra + IW_SCAN_MAX_DATA, iwe,
115427 - IW_EV_ADDR_LEN);
115428 -
115429 - iwe->u.data.length = curr_bss->ssid_len;
115430 - iwe->cmd = SIOCGIWESSID;
115431 - iwe->u.data.flags = 1;
115432 -
115433 - curr_pos = iwe_stream_add_point(info, curr_pos,
115434 - extra + IW_SCAN_MAX_DATA, iwe,
115435 - curr_bss->ssid);
115436 -
115437 - iwe->cmd = SIOCGIWMODE;
115438 - iwe->u.mode = (curr_bss->capa & WLAN_CAPABILITY_IBSS) ?
115439 - IW_MODE_ADHOC :
115440 - (curr_bss->capa & WLAN_CAPABILITY_ESS) ?
115441 - IW_MODE_MASTER : IW_MODE_AUTO;
115442 - /* IW_MODE_AUTO = 0 which I thought is
115443 - * the most logical value to return in this case */
115444 - curr_pos = iwe_stream_add_event(info, curr_pos,
115445 - extra + IW_SCAN_MAX_DATA, iwe,
115446 - IW_EV_UINT_LEN);
115447 -
115448 - iwe->cmd = SIOCGIWFREQ;
115449 - iwe->u.freq.m = curr_bss->channel;
115450 - iwe->u.freq.e = 0;
115451 - curr_pos = iwe_stream_add_event(info, curr_pos,
115452 - extra + IW_SCAN_MAX_DATA, iwe,
115453 - IW_EV_FREQ_LEN);
115454 -
115455 - iwe->cmd = SIOCGIWENCODE;
115456 - if (curr_bss->capa & WLAN_CAPABILITY_PRIVACY)
115457 - iwe->u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY;
115458 - else
115459 - iwe->u.data.flags = IW_ENCODE_DISABLED;
115460 -
115461 - iwe->u.data.length = 0;
115462 - curr_pos = iwe_stream_add_point(info, curr_pos,
115463 - extra + IW_SCAN_MAX_DATA, iwe,
115464 - NULL);
115465 -
115466 - /* Add quality statistics */
115467 - iwe->cmd = IWEVQUAL;
115468 - iwe->u.qual.noise = 0;
115469 - iwe->u.qual.updated =
115470 - IW_QUAL_NOISE_INVALID | IW_QUAL_LEVEL_UPDATED;
115471 - iwe->u.qual.level = (curr_bss->rssi * 100 / 42);
115472 - if (iwe->u.qual.level > 100)
115473 - iwe->u.qual.level = 100;
115474 - if (at76_is_intersil(priv->board_type))
115475 - iwe->u.qual.qual = curr_bss->link_qual;
115476 - else {
115477 - iwe->u.qual.qual = 0;
115478 - iwe->u.qual.updated |= IW_QUAL_QUAL_INVALID;
115479 - }
115480 - /* Add new value to event */
115481 - curr_pos = iwe_stream_add_event(info, curr_pos,
115482 - extra + IW_SCAN_MAX_DATA, iwe,
115483 - IW_EV_QUAL_LEN);
115484 -
115485 - /* Rate: stuffing multiple values in a single event requires
115486 - * a bit more of magic - Jean II */
115487 - curr_val = curr_pos + IW_EV_LCP_LEN;
115488 -
115489 - iwe->cmd = SIOCGIWRATE;
115490 - /* Those two flags are ignored... */
115491 - iwe->u.bitrate.fixed = 0;
115492 - iwe->u.bitrate.disabled = 0;
115493 - /* Max 8 values */
115494 - for (i = 0; i < curr_bss->rates_len; i++) {
115495 - /* Bit rate given in 500 kb/s units (+ 0x80) */
115496 - iwe->u.bitrate.value =
115497 - ((curr_bss->rates[i] & 0x7f) * 500000);
115498 - /* Add new value to event */
115499 - curr_val = iwe_stream_add_value(info, curr_pos,
115500 - curr_val,
115501 - extra +
115502 - IW_SCAN_MAX_DATA, iwe,
115503 - IW_EV_PARAM_LEN);
115504 - }
115505 -
115506 - /* Check if we added any event */
115507 - if ((curr_val - curr_pos) > IW_EV_LCP_LEN)
115508 - curr_pos = curr_val;
115509 -
115510 - /* more information may be sent back using IWECUSTOM */
115511 -
115512 - }
115513 -
115514 - spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
115515 -
115516 - data->length = (curr_pos - extra);
115517 - data->flags = 0;
115518 -
115519 - kfree(iwe);
115520 - return 0;
115521 -}
115522 -
115523 -static int at76_iw_handler_set_essid(struct net_device *netdev,
115524 - struct iw_request_info *info,
115525 - struct iw_point *data, char *extra)
115526 -{
115527 - struct at76_priv *priv = netdev_priv(netdev);
115528 -
115529 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWESSID - %s", netdev->name, extra);
115530 -
115531 - if (data->flags) {
115532 - memcpy(priv->essid, extra, data->length);
115533 - priv->essid_size = data->length;
115534 - } else
115535 - priv->essid_size = 0; /* Use any SSID */
115536 -
115537 - return -EIWCOMMIT;
115538 -}
115539 -
115540 -static int at76_iw_handler_get_essid(struct net_device *netdev,
115541 - struct iw_request_info *info,
115542 - struct iw_point *data, char *extra)
115543 -{
115544 - struct at76_priv *priv = netdev_priv(netdev);
115545 -
115546 - if (priv->essid_size) {
115547 - /* not the ANY ssid in priv->essid */
115548 - data->flags = 1;
115549 - data->length = priv->essid_size;
115550 - memcpy(extra, priv->essid, data->length);
115551 - } else {
115552 - /* the ANY ssid was specified */
115553 - if (priv->mac_state == MAC_CONNECTED && priv->curr_bss) {
115554 - /* report the SSID we have found */
115555 - data->flags = 1;
115556 - data->length = priv->curr_bss->ssid_len;
115557 - memcpy(extra, priv->curr_bss->ssid, data->length);
115558 - } else {
115559 - /* report ANY back */
115560 - data->flags = 0;
115561 - data->length = 0;
115562 - }
115563 - }
115564 -
115565 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWESSID - %.*s", netdev->name,
115566 - data->length, extra);
115567 -
115568 - return 0;
115569 -}
115570 -
115571 -static int at76_iw_handler_set_rate(struct net_device *netdev,
115572 - struct iw_request_info *info,
115573 - struct iw_param *bitrate, char *extra)
115574 -{
115575 - struct at76_priv *priv = netdev_priv(netdev);
115576 - int ret = -EIWCOMMIT;
115577 -
115578 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWRATE - %d", netdev->name,
115579 - bitrate->value);
115580 -
115581 - switch (bitrate->value) {
115582 - case -1:
115583 - priv->txrate = TX_RATE_AUTO;
115584 - break; /* auto rate */
115585 - case 1000000:
115586 - priv->txrate = TX_RATE_1MBIT;
115587 - break;
115588 - case 2000000:
115589 - priv->txrate = TX_RATE_2MBIT;
115590 - break;
115591 - case 5500000:
115592 - priv->txrate = TX_RATE_5_5MBIT;
115593 - break;
115594 - case 11000000:
115595 - priv->txrate = TX_RATE_11MBIT;
115596 - break;
115597 - default:
115598 - ret = -EINVAL;
115599 - }
115600 -
115601 - return ret;
115602 -}
115603 -
115604 -static int at76_iw_handler_get_rate(struct net_device *netdev,
115605 - struct iw_request_info *info,
115606 - struct iw_param *bitrate, char *extra)
115607 -{
115608 - struct at76_priv *priv = netdev_priv(netdev);
115609 - int ret = 0;
115610 -
115611 - switch (priv->txrate) {
115612 - /* return max rate if RATE_AUTO */
115613 - case TX_RATE_AUTO:
115614 - bitrate->value = 11000000;
115615 - break;
115616 - case TX_RATE_1MBIT:
115617 - bitrate->value = 1000000;
115618 - break;
115619 - case TX_RATE_2MBIT:
115620 - bitrate->value = 2000000;
115621 - break;
115622 - case TX_RATE_5_5MBIT:
115623 - bitrate->value = 5500000;
115624 - break;
115625 - case TX_RATE_11MBIT:
115626 - bitrate->value = 11000000;
115627 - break;
115628 - default:
115629 - ret = -EINVAL;
115630 - }
115631 -
115632 - bitrate->fixed = (priv->txrate != TX_RATE_AUTO);
115633 - bitrate->disabled = 0;
115634 -
115635 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWRATE - %d", netdev->name,
115636 - bitrate->value);
115637 -
115638 - return ret;
115639 -}
115640 -
115641 -static int at76_iw_handler_set_rts(struct net_device *netdev,
115642 - struct iw_request_info *info,
115643 - struct iw_param *rts, char *extra)
115644 -{
115645 - struct at76_priv *priv = netdev_priv(netdev);
115646 - int ret = -EIWCOMMIT;
115647 - int rthr = rts->value;
115648 -
115649 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWRTS - value %d disabled %s",
115650 - netdev->name, rts->value, (rts->disabled) ? "true" : "false");
115651 -
115652 - if (rts->disabled)
115653 - rthr = MAX_RTS_THRESHOLD;
115654 -
115655 - if ((rthr < 0) || (rthr > MAX_RTS_THRESHOLD))
115656 - ret = -EINVAL;
115657 - else
115658 - priv->rts_threshold = rthr;
115659 -
115660 - return ret;
115661 -}
115662 -
115663 -static int at76_iw_handler_get_rts(struct net_device *netdev,
115664 - struct iw_request_info *info,
115665 - struct iw_param *rts, char *extra)
115666 -{
115667 - struct at76_priv *priv = netdev_priv(netdev);
115668 -
115669 - rts->value = priv->rts_threshold;
115670 - rts->disabled = (rts->value >= MAX_RTS_THRESHOLD);
115671 - rts->fixed = 1;
115672 -
115673 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWRTS - value %d disabled %s",
115674 - netdev->name, rts->value, (rts->disabled) ? "true" : "false");
115675 -
115676 - return 0;
115677 -}
115678 -
115679 -static int at76_iw_handler_set_frag(struct net_device *netdev,
115680 - struct iw_request_info *info,
115681 - struct iw_param *frag, char *extra)
115682 -{
115683 - struct at76_priv *priv = netdev_priv(netdev);
115684 - int ret = -EIWCOMMIT;
115685 - int fthr = frag->value;
115686 -
115687 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWFRAG - value %d, disabled %s",
115688 - netdev->name, frag->value,
115689 - (frag->disabled) ? "true" : "false");
115690 -
115691 - if (frag->disabled)
115692 - fthr = MAX_FRAG_THRESHOLD;
115693 -
115694 - if ((fthr < MIN_FRAG_THRESHOLD) || (fthr > MAX_FRAG_THRESHOLD))
115695 - ret = -EINVAL;
115696 - else
115697 - priv->frag_threshold = fthr & ~0x1; /* get an even value */
115698 -
115699 - return ret;
115700 -}
115701 -
115702 -static int at76_iw_handler_get_frag(struct net_device *netdev,
115703 - struct iw_request_info *info,
115704 - struct iw_param *frag, char *extra)
115705 -{
115706 - struct at76_priv *priv = netdev_priv(netdev);
115707 -
115708 - frag->value = priv->frag_threshold;
115709 - frag->disabled = (frag->value >= MAX_FRAG_THRESHOLD);
115710 - frag->fixed = 1;
115711 -
115712 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWFRAG - value %d, disabled %s",
115713 - netdev->name, frag->value,
115714 - (frag->disabled) ? "true" : "false");
115715 -
115716 - return 0;
115717 -}
115718 -
115719 -static int at76_iw_handler_get_txpow(struct net_device *netdev,
115720 - struct iw_request_info *info,
115721 - struct iw_param *power, char *extra)
115722 -{
115723 - power->value = 15;
115724 - power->fixed = 1; /* No power control */
115725 - power->disabled = 0;
115726 - power->flags = IW_TXPOW_DBM;
115727 -
115728 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWTXPOW - txpow %d dBm", netdev->name,
115729 - power->value);
115730 -
115731 - return 0;
115732 -}
115733 -
115734 -/* jal: short retry is handled by the firmware (at least 0.90.x),
115735 - while long retry is not (?) */
115736 -static int at76_iw_handler_set_retry(struct net_device *netdev,
115737 - struct iw_request_info *info,
115738 - struct iw_param *retry, char *extra)
115739 -{
115740 - struct at76_priv *priv = netdev_priv(netdev);
115741 - int ret = -EIWCOMMIT;
115742 -
115743 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWRETRY disabled %d flags 0x%x val %d",
115744 - netdev->name, retry->disabled, retry->flags, retry->value);
115745 -
115746 - if (!retry->disabled && (retry->flags & IW_RETRY_LIMIT)) {
115747 - if ((retry->flags & IW_RETRY_MIN) ||
115748 - !(retry->flags & IW_RETRY_MAX))
115749 - priv->short_retry_limit = retry->value;
115750 - else
115751 - ret = -EINVAL;
115752 - } else
115753 - ret = -EINVAL;
115754 -
115755 - return ret;
115756 -}
115757 -
115758 -/* Adapted (ripped) from atmel.c */
115759 -static int at76_iw_handler_get_retry(struct net_device *netdev,
115760 - struct iw_request_info *info,
115761 - struct iw_param *retry, char *extra)
115762 -{
115763 - struct at76_priv *priv = netdev_priv(netdev);
115764 -
115765 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWRETRY", netdev->name);
115766 -
115767 - retry->disabled = 0; /* Can't be disabled */
115768 - retry->flags = IW_RETRY_LIMIT;
115769 - retry->value = priv->short_retry_limit;
115770 -
115771 - return 0;
115772 -}
115773 -
115774 -static int at76_iw_handler_set_encode(struct net_device *netdev,
115775 - struct iw_request_info *info,
115776 - struct iw_point *encoding, char *extra)
115777 -{
115778 - struct at76_priv *priv = netdev_priv(netdev);
115779 - int index = (encoding->flags & IW_ENCODE_INDEX) - 1;
115780 - int len = encoding->length;
115781 -
115782 - at76_dbg(DBG_IOCTL, "%s: SIOCSIWENCODE - enc.flags %08x "
115783 - "pointer %p len %d", netdev->name, encoding->flags,
115784 - encoding->pointer, encoding->length);
115785 - at76_dbg(DBG_IOCTL,
115786 - "%s: SIOCSIWENCODE - old wepstate: enabled %s key_id %d "
115787 - "auth_mode %s", netdev->name,
115788 - (priv->wep_enabled) ? "true" : "false", priv->wep_key_id,
115789 - (priv->auth_mode ==
115790 - WLAN_AUTH_SHARED_KEY) ? "restricted" : "open");
115791 -
115792 - /* take the old default key if index is invalid */
115793 - if ((index < 0) || (index >= WEP_KEYS))
115794 - index = priv->wep_key_id;
115795 -
115796 - if (len > 0) {
115797 - if (len > WEP_LARGE_KEY_LEN)
115798 - len = WEP_LARGE_KEY_LEN;
115799 -
115800 - memset(priv->wep_keys[index], 0, WEP_KEY_LEN);
115801 - memcpy(priv->wep_keys[index], extra, len);
115802 - priv->wep_keys_len[index] = (len <= WEP_SMALL_KEY_LEN) ?
115803 - WEP_SMALL_KEY_LEN : WEP_LARGE_KEY_LEN;
115804 - priv->wep_enabled = 1;
115805 - }
115806 -
115807 - priv->wep_key_id = index;
115808 - priv->wep_enabled = ((encoding->flags & IW_ENCODE_DISABLED) == 0);
115809 -
115810 - if (encoding->flags & IW_ENCODE_RESTRICTED)
115811 - priv->auth_mode = WLAN_AUTH_SHARED_KEY;
115812 - if (encoding->flags & IW_ENCODE_OPEN)
115813 - priv->auth_mode = WLAN_AUTH_OPEN;
115814 -
115815 - at76_dbg(DBG_IOCTL,
115816 - "%s: SIOCSIWENCODE - new wepstate: enabled %s key_id %d "
115817 - "key_len %d auth_mode %s", netdev->name,
115818 - (priv->wep_enabled) ? "true" : "false", priv->wep_key_id + 1,
115819 - priv->wep_keys_len[priv->wep_key_id],
115820 - (priv->auth_mode ==
115821 - WLAN_AUTH_SHARED_KEY) ? "restricted" : "open");
115822 -
115823 - return -EIWCOMMIT;
115824 -}
115825 -
115826 -static int at76_iw_handler_get_encode(struct net_device *netdev,
115827 - struct iw_request_info *info,
115828 - struct iw_point *encoding, char *extra)
115829 -{
115830 - struct at76_priv *priv = netdev_priv(netdev);
115831 - int index = (encoding->flags & IW_ENCODE_INDEX) - 1;
115832 -
115833 - if ((index < 0) || (index >= WEP_KEYS))
115834 - index = priv->wep_key_id;
115835 -
115836 - encoding->flags =
115837 - (priv->auth_mode == WLAN_AUTH_SHARED_KEY) ?
115838 - IW_ENCODE_RESTRICTED : IW_ENCODE_OPEN;
115839 -
115840 - if (!priv->wep_enabled)
115841 - encoding->flags |= IW_ENCODE_DISABLED;
115842 -
115843 - if (encoding->pointer) {
115844 - encoding->length = priv->wep_keys_len[index];
115845 -
115846 - memcpy(extra, priv->wep_keys[index], priv->wep_keys_len[index]);
115847 -
115848 - encoding->flags |= (index + 1);
115849 - }
115850 -
115851 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWENCODE - enc.flags %08x "
115852 - "pointer %p len %d", netdev->name, encoding->flags,
115853 - encoding->pointer, encoding->length);
115854 - at76_dbg(DBG_IOCTL,
115855 - "%s: SIOCGIWENCODE - wepstate: enabled %s key_id %d "
115856 - "key_len %d auth_mode %s", netdev->name,
115857 - (priv->wep_enabled) ? "true" : "false", priv->wep_key_id + 1,
115858 - priv->wep_keys_len[priv->wep_key_id],
115859 - (priv->auth_mode ==
115860 - WLAN_AUTH_SHARED_KEY) ? "restricted" : "open");
115861 -
115862 - return 0;
115863 -}
115864 -
115865 -static int at76_iw_handler_set_power(struct net_device *netdev,
115866 - struct iw_request_info *info,
115867 - struct iw_param *prq, char *extra)
115868 -{
115869 - int err = -EIWCOMMIT;
115870 - struct at76_priv *priv = netdev_priv(netdev);
115871 -
115872 - at76_dbg(DBG_IOCTL,
115873 - "%s: SIOCSIWPOWER - disabled %s flags 0x%x value 0x%x",
115874 - netdev->name, (prq->disabled) ? "true" : "false", prq->flags,
115875 - prq->value);
115876 -
115877 - if (prq->disabled)
115878 - priv->pm_mode = AT76_PM_OFF;
115879 - else {
115880 - switch (prq->flags & IW_POWER_MODE) {
115881 - case IW_POWER_ALL_R:
115882 - case IW_POWER_ON:
115883 - break;
115884 - default:
115885 - err = -EINVAL;
115886 - goto exit;
115887 - }
115888 - if (prq->flags & IW_POWER_PERIOD)
115889 - priv->pm_period = prq->value;
115890 -
115891 - if (prq->flags & IW_POWER_TIMEOUT) {
115892 - err = -EINVAL;
115893 - goto exit;
115894 - }
115895 - priv->pm_mode = AT76_PM_ON;
115896 - }
115897 -exit:
115898 - return err;
115899 -}
115900 -
115901 -static int at76_iw_handler_get_power(struct net_device *netdev,
115902 - struct iw_request_info *info,
115903 - struct iw_param *power, char *extra)
115904 -{
115905 - struct at76_priv *priv = netdev_priv(netdev);
115906 -
115907 - power->disabled = (priv->pm_mode == AT76_PM_OFF);
115908 - if (!power->disabled) {
115909 - power->flags = IW_POWER_PERIOD | IW_POWER_ALL_R;
115910 - power->value = priv->pm_period;
115911 - }
115912 -
115913 - at76_dbg(DBG_IOCTL, "%s: SIOCGIWPOWER - %s flags 0x%x value 0x%x",
115914 - netdev->name, power->disabled ? "disabled" : "enabled",
115915 - power->flags, power->value);
115916 -
115917 - return 0;
115918 -}
115919 -
115920 -/*******************************************************************************
115921 - * Private IOCTLS
115922 - */
115923 -static int at76_iw_set_short_preamble(struct net_device *netdev,
115924 - struct iw_request_info *info, char *name,
115925 - char *extra)
115926 -{
115927 - struct at76_priv *priv = netdev_priv(netdev);
115928 - int val = *((int *)name);
115929 - int ret = -EIWCOMMIT;
115930 -
115931 - at76_dbg(DBG_IOCTL, "%s: AT76_SET_SHORT_PREAMBLE, %d",
115932 - netdev->name, val);
115933 -
115934 - if (val < PREAMBLE_TYPE_LONG || val > PREAMBLE_TYPE_AUTO)
115935 - ret = -EINVAL;
115936 - else
115937 - priv->preamble_type = val;
115938 -
115939 - return ret;
115940 -}
115941 -
115942 -static int at76_iw_get_short_preamble(struct net_device *netdev,
115943 - struct iw_request_info *info,
115944 - union iwreq_data *wrqu, char *extra)
115945 -{
115946 - struct at76_priv *priv = netdev_priv(netdev);
115947 -
115948 - snprintf(wrqu->name, sizeof(wrqu->name), "%s (%d)",
115949 - preambles[priv->preamble_type], priv->preamble_type);
115950 - return 0;
115951 -}
115952 -
115953 -static int at76_iw_set_debug(struct net_device *netdev,
115954 - struct iw_request_info *info,
115955 - struct iw_point *data, char *extra)
115956 -{
115957 - char *ptr;
115958 - u32 val;
115959 -
115960 - if (data->length > 0) {
115961 - val = simple_strtol(extra, &ptr, 0);
115962 -
115963 - if (ptr == extra)
115964 - val = DBG_DEFAULTS;
115965 -
115966 - at76_dbg(DBG_IOCTL, "%s: AT76_SET_DEBUG input %d: %s -> 0x%x",
115967 - netdev->name, data->length, extra, val);
115968 - } else
115969 - val = DBG_DEFAULTS;
115970 -
115971 - at76_dbg(DBG_IOCTL, "%s: AT76_SET_DEBUG, old 0x%x, new 0x%x",
115972 - netdev->name, at76_debug, val);
115973 -
115974 - /* jal: some more output to pin down lockups */
115975 - at76_dbg(DBG_IOCTL, "%s: netif running %d queue_stopped %d "
115976 - "carrier_ok %d", netdev->name, netif_running(netdev),
115977 - netif_queue_stopped(netdev), netif_carrier_ok(netdev));
115978 -
115979 - at76_debug = val;
115980 -
115981 - return 0;
115982 -}
115983 -
115984 -static int at76_iw_get_debug(struct net_device *netdev,
115985 - struct iw_request_info *info,
115986 - union iwreq_data *wrqu, char *extra)
115987 -{
115988 - snprintf(wrqu->name, sizeof(wrqu->name), "0x%08x", at76_debug);
115989 - return 0;
115990 -}
115991 -
115992 -static int at76_iw_set_powersave_mode(struct net_device *netdev,
115993 - struct iw_request_info *info, char *name,
115994 - char *extra)
115995 -{
115996 - struct at76_priv *priv = netdev_priv(netdev);
115997 - int val = *((int *)name);
115998 - int ret = -EIWCOMMIT;
115999 -
116000 - at76_dbg(DBG_IOCTL, "%s: AT76_SET_POWERSAVE_MODE, %d (%s)",
116001 - netdev->name, val,
116002 - val == AT76_PM_OFF ? "active" : val == AT76_PM_ON ? "save" :
116003 - val == AT76_PM_SMART ? "smart save" : "<invalid>");
116004 - if (val < AT76_PM_OFF || val > AT76_PM_SMART)
116005 - ret = -EINVAL;
116006 - else
116007 - priv->pm_mode = val;
116008 -
116009 - return ret;
116010 -}
116011 -
116012 -static int at76_iw_get_powersave_mode(struct net_device *netdev,
116013 - struct iw_request_info *info,
116014 - union iwreq_data *wrqu, char *extra)
116015 -{
116016 - struct at76_priv *priv = netdev_priv(netdev);
116017 - int *param = (int *)extra;
116018 -
116019 - param[0] = priv->pm_mode;
116020 - return 0;
116021 -}
116022 -
116023 -static int at76_iw_set_scan_times(struct net_device *netdev,
116024 - struct iw_request_info *info, char *name,
116025 - char *extra)
116026 -{
116027 - struct at76_priv *priv = netdev_priv(netdev);
116028 - int mint = *((int *)name);
116029 - int maxt = *((int *)name + 1);
116030 - int ret = -EIWCOMMIT;
116031 -
116032 - at76_dbg(DBG_IOCTL, "%s: AT76_SET_SCAN_TIMES - min %d max %d",
116033 - netdev->name, mint, maxt);
116034 - if (mint <= 0 || maxt <= 0 || mint > maxt)
116035 - ret = -EINVAL;
116036 - else {
116037 - priv->scan_min_time = mint;
116038 - priv->scan_max_time = maxt;
116039 - }
116040 -
116041 - return ret;
116042 -}
116043 -
116044 -static int at76_iw_get_scan_times(struct net_device *netdev,
116045 - struct iw_request_info *info,
116046 - union iwreq_data *wrqu, char *extra)
116047 -{
116048 - struct at76_priv *priv = netdev_priv(netdev);
116049 - int *param = (int *)extra;
116050 -
116051 - param[0] = priv->scan_min_time;
116052 - param[1] = priv->scan_max_time;
116053 - return 0;
116054 -}
116055 -
116056 -static int at76_iw_set_scan_mode(struct net_device *netdev,
116057 - struct iw_request_info *info, char *name,
116058 - char *extra)
116059 -{
116060 - struct at76_priv *priv = netdev_priv(netdev);
116061 - int val = *((int *)name);
116062 - int ret = -EIWCOMMIT;
116063 -
116064 - at76_dbg(DBG_IOCTL, "%s: AT76_SET_SCAN_MODE - mode %s",
116065 - netdev->name, (val = SCAN_TYPE_ACTIVE) ? "active" :
116066 - (val = SCAN_TYPE_PASSIVE) ? "passive" : "<invalid>");
116067 -
116068 - if (val != SCAN_TYPE_ACTIVE && val != SCAN_TYPE_PASSIVE)
116069 - ret = -EINVAL;
116070 - else
116071 - priv->scan_mode = val;
116072 -
116073 - return ret;
116074 -}
116075 -
116076 -static int at76_iw_get_scan_mode(struct net_device *netdev,
116077 - struct iw_request_info *info,
116078 - union iwreq_data *wrqu, char *extra)
116079 -{
116080 - struct at76_priv *priv = netdev_priv(netdev);
116081 - int *param = (int *)extra;
116082 -
116083 - param[0] = priv->scan_mode;
116084 - return 0;
116085 -}
116086 -
116087 -#define AT76_SET_HANDLER(h, f) [h - SIOCIWFIRST] = (iw_handler) f
116088 -
116089 -/* Standard wireless handlers */
116090 -static const iw_handler at76_handlers[] = {
116091 - AT76_SET_HANDLER(SIOCSIWCOMMIT, at76_iw_handler_commit),
116092 - AT76_SET_HANDLER(SIOCGIWNAME, at76_iw_handler_get_name),
116093 - AT76_SET_HANDLER(SIOCSIWFREQ, at76_iw_handler_set_freq),
116094 - AT76_SET_HANDLER(SIOCGIWFREQ, at76_iw_handler_get_freq),
116095 - AT76_SET_HANDLER(SIOCSIWMODE, at76_iw_handler_set_mode),
116096 - AT76_SET_HANDLER(SIOCGIWMODE, at76_iw_handler_get_mode),
116097 - AT76_SET_HANDLER(SIOCGIWRANGE, at76_iw_handler_get_range),
116098 - AT76_SET_HANDLER(SIOCSIWSPY, at76_iw_handler_set_spy),
116099 - AT76_SET_HANDLER(SIOCGIWSPY, at76_iw_handler_get_spy),
116100 - AT76_SET_HANDLER(SIOCSIWTHRSPY, at76_iw_handler_set_thrspy),
116101 - AT76_SET_HANDLER(SIOCGIWTHRSPY, at76_iw_handler_get_thrspy),
116102 - AT76_SET_HANDLER(SIOCSIWAP, at76_iw_handler_set_wap),
116103 - AT76_SET_HANDLER(SIOCGIWAP, at76_iw_handler_get_wap),
116104 - AT76_SET_HANDLER(SIOCSIWSCAN, at76_iw_handler_set_scan),
116105 - AT76_SET_HANDLER(SIOCGIWSCAN, at76_iw_handler_get_scan),
116106 - AT76_SET_HANDLER(SIOCSIWESSID, at76_iw_handler_set_essid),
116107 - AT76_SET_HANDLER(SIOCGIWESSID, at76_iw_handler_get_essid),
116108 - AT76_SET_HANDLER(SIOCSIWRATE, at76_iw_handler_set_rate),
116109 - AT76_SET_HANDLER(SIOCGIWRATE, at76_iw_handler_get_rate),
116110 - AT76_SET_HANDLER(SIOCSIWRTS, at76_iw_handler_set_rts),
116111 - AT76_SET_HANDLER(SIOCGIWRTS, at76_iw_handler_get_rts),
116112 - AT76_SET_HANDLER(SIOCSIWFRAG, at76_iw_handler_set_frag),
116113 - AT76_SET_HANDLER(SIOCGIWFRAG, at76_iw_handler_get_frag),
116114 - AT76_SET_HANDLER(SIOCGIWTXPOW, at76_iw_handler_get_txpow),
116115 - AT76_SET_HANDLER(SIOCSIWRETRY, at76_iw_handler_set_retry),
116116 - AT76_SET_HANDLER(SIOCGIWRETRY, at76_iw_handler_get_retry),
116117 - AT76_SET_HANDLER(SIOCSIWENCODE, at76_iw_handler_set_encode),
116118 - AT76_SET_HANDLER(SIOCGIWENCODE, at76_iw_handler_get_encode),
116119 - AT76_SET_HANDLER(SIOCSIWPOWER, at76_iw_handler_set_power),
116120 - AT76_SET_HANDLER(SIOCGIWPOWER, at76_iw_handler_get_power)
116121 -};
116122 -
116123 -#define AT76_SET_PRIV(h, f) [h - SIOCIWFIRSTPRIV] = (iw_handler) f
116124 -
116125 -/* Private wireless handlers */
116126 -static const iw_handler at76_priv_handlers[] = {
116127 - AT76_SET_PRIV(AT76_SET_SHORT_PREAMBLE, at76_iw_set_short_preamble),
116128 - AT76_SET_PRIV(AT76_GET_SHORT_PREAMBLE, at76_iw_get_short_preamble),
116129 - AT76_SET_PRIV(AT76_SET_DEBUG, at76_iw_set_debug),
116130 - AT76_SET_PRIV(AT76_GET_DEBUG, at76_iw_get_debug),
116131 - AT76_SET_PRIV(AT76_SET_POWERSAVE_MODE, at76_iw_set_powersave_mode),
116132 - AT76_SET_PRIV(AT76_GET_POWERSAVE_MODE, at76_iw_get_powersave_mode),
116133 - AT76_SET_PRIV(AT76_SET_SCAN_TIMES, at76_iw_set_scan_times),
116134 - AT76_SET_PRIV(AT76_GET_SCAN_TIMES, at76_iw_get_scan_times),
116135 - AT76_SET_PRIV(AT76_SET_SCAN_MODE, at76_iw_set_scan_mode),
116136 - AT76_SET_PRIV(AT76_GET_SCAN_MODE, at76_iw_get_scan_mode),
116137 -};
116138 -
116139 -/* Names and arguments of private wireless handlers */
116140 -static const struct iw_priv_args at76_priv_args[] = {
116141 - /* 0 - long, 1 - short */
116142 - {AT76_SET_SHORT_PREAMBLE,
116143 - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_preamble"},
116144 -
116145 - {AT76_GET_SHORT_PREAMBLE,
116146 - 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | 10, "get_preamble"},
116147 -
116148 - /* we must pass the new debug mask as a string, because iwpriv cannot
116149 - * parse hex numbers starting with 0x :-( */
116150 - {AT76_SET_DEBUG,
116151 - IW_PRIV_TYPE_CHAR | 10, 0, "set_debug"},
116152 -
116153 - {AT76_GET_DEBUG,
116154 - 0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_FIXED | 10, "get_debug"},
116155 -
116156 - /* 1 - active, 2 - power save, 3 - smart power save */
116157 - {AT76_SET_POWERSAVE_MODE,
116158 - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_powersave"},
116159 -
116160 - {AT76_GET_POWERSAVE_MODE,
116161 - 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_powersave"},
116162 -
116163 - /* min_channel_time, max_channel_time */
116164 - {AT76_SET_SCAN_TIMES,
116165 - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, 0, "set_scan_times"},
116166 -
116167 - {AT76_GET_SCAN_TIMES,
116168 - 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 2, "get_scan_times"},
116169 -
116170 - /* 0 - active, 1 - passive scan */
116171 - {AT76_SET_SCAN_MODE,
116172 - IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "set_scan_mode"},
116173 -
116174 - {AT76_GET_SCAN_MODE,
116175 - 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "get_scan_mode"},
116176 -};
116177 -
116178 -static const struct iw_handler_def at76_handler_def = {
116179 - .num_standard = ARRAY_SIZE(at76_handlers),
116180 - .num_private = ARRAY_SIZE(at76_priv_handlers),
116181 - .num_private_args = ARRAY_SIZE(at76_priv_args),
116182 - .standard = at76_handlers,
116183 - .private = at76_priv_handlers,
116184 - .private_args = at76_priv_args,
116185 - .get_wireless_stats = at76_get_wireless_stats,
116186 -};
116187 -
116188 -static const u8 snapsig[] = { 0xaa, 0xaa, 0x03 };
116189 -
116190 -/* RFC 1042 encapsulates Ethernet frames in 802.2 SNAP (0xaa, 0xaa, 0x03) with
116191 - * a SNAP OID of 0 (0x00, 0x00, 0x00) */
116192 -static const u8 rfc1042sig[] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 };
116193 -
116194 -static int at76_tx(struct sk_buff *skb, struct net_device *netdev)
116195 -{
116196 - struct at76_priv *priv = netdev_priv(netdev);
116197 - struct net_device_stats *stats = &priv->stats;
116198 - int ret = 0;
116199 - int wlen;
116200 - int submit_len;
116201 - struct at76_tx_buffer *tx_buffer = priv->bulk_out_buffer;
116202 - struct ieee80211_hdr_3addr *i802_11_hdr =
116203 - (struct ieee80211_hdr_3addr *)tx_buffer->packet;
116204 - u8 *payload = i802_11_hdr->payload;
116205 - struct ethhdr *eh = (struct ethhdr *)skb->data;
116206 -
116207 - if (netif_queue_stopped(netdev)) {
116208 - printk(KERN_ERR "%s: %s called while netdev is stopped\n",
116209 - netdev->name, __func__);
116210 - /* skip this packet */
116211 - dev_kfree_skb(skb);
116212 - return 0;
116213 - }
116214 -
116215 - if (priv->tx_urb->status == -EINPROGRESS) {
116216 - printk(KERN_ERR "%s: %s called while tx urb is pending\n",
116217 - netdev->name, __func__);
116218 - /* skip this packet */
116219 - dev_kfree_skb(skb);
116220 - return 0;
116221 - }
116222 -
116223 - if (skb->len < ETH_HLEN) {
116224 - printk(KERN_ERR "%s: %s: skb too short (%d)\n",
116225 - netdev->name, __func__, skb->len);
116226 - dev_kfree_skb(skb);
116227 - return 0;
116228 - }
116229 -
116230 - at76_ledtrig_tx_activity(); /* tell ledtrigger we send a packet */
116231 -
116232 - /* we can get rid of memcpy if we set netdev->hard_header_len to
116233 - reserve enough space, but we would need to keep the skb around */
116234 -
116235 - if (ntohs(eh->h_proto) <= ETH_DATA_LEN) {
116236 - /* this is a 802.3 packet */
116237 - if (skb->len >= ETH_HLEN + sizeof(rfc1042sig)
116238 - && skb->data[ETH_HLEN] == rfc1042sig[0]
116239 - && skb->data[ETH_HLEN + 1] == rfc1042sig[1]) {
116240 - /* higher layer delivered SNAP header - keep it */
116241 - memcpy(payload, skb->data + ETH_HLEN,
116242 - skb->len - ETH_HLEN);
116243 - wlen = IEEE80211_3ADDR_LEN + skb->len - ETH_HLEN;
116244 - } else {
116245 - printk(KERN_ERR "%s: dropping non-SNAP 802.2 packet "
116246 - "(DSAP 0x%02x SSAP 0x%02x cntrl 0x%02x)\n",
116247 - priv->netdev->name, skb->data[ETH_HLEN],
116248 - skb->data[ETH_HLEN + 1],
116249 - skb->data[ETH_HLEN + 2]);
116250 - dev_kfree_skb(skb);
116251 - return 0;
116252 - }
116253 - } else {
116254 - /* add RFC 1042 header in front */
116255 - memcpy(payload, rfc1042sig, sizeof(rfc1042sig));
116256 - memcpy(payload + sizeof(rfc1042sig), &eh->h_proto,
116257 - skb->len - offsetof(struct ethhdr, h_proto));
116258 - wlen = IEEE80211_3ADDR_LEN + sizeof(rfc1042sig) + skb->len -
116259 - offsetof(struct ethhdr, h_proto);
116260 - }
116261 -
116262 - /* make wireless header */
116263 - i802_11_hdr->frame_ctl =
116264 - cpu_to_le16(IEEE80211_FTYPE_DATA |
116265 - (priv->wep_enabled ? IEEE80211_FCTL_PROTECTED : 0) |
116266 - (priv->iw_mode ==
116267 - IW_MODE_INFRA ? IEEE80211_FCTL_TODS : 0));
116268 -
116269 - if (priv->iw_mode == IW_MODE_ADHOC) {
116270 - memcpy(i802_11_hdr->addr1, eh->h_dest, ETH_ALEN);
116271 - memcpy(i802_11_hdr->addr2, eh->h_source, ETH_ALEN);
116272 - memcpy(i802_11_hdr->addr3, priv->bssid, ETH_ALEN);
116273 - } else if (priv->iw_mode == IW_MODE_INFRA) {
116274 - memcpy(i802_11_hdr->addr1, priv->bssid, ETH_ALEN);
116275 - memcpy(i802_11_hdr->addr2, eh->h_source, ETH_ALEN);
116276 - memcpy(i802_11_hdr->addr3, eh->h_dest, ETH_ALEN);
116277 - }
116278 -
116279 - i802_11_hdr->duration_id = cpu_to_le16(0);
116280 - i802_11_hdr->seq_ctl = cpu_to_le16(0);
116281 -
116282 - /* setup 'Atmel' header */
116283 - tx_buffer->wlength = cpu_to_le16(wlen);
116284 - tx_buffer->tx_rate = priv->txrate;
116285 - /* for broadcast destination addresses, the firmware 0.100.x
116286 - seems to choose the highest rate set with CMD_STARTUP in
116287 - basic_rate_set replacing this value */
116288 -
116289 - memset(tx_buffer->reserved, 0, sizeof(tx_buffer->reserved));
116290 -
116291 - tx_buffer->padding = at76_calc_padding(wlen);
116292 - submit_len = wlen + AT76_TX_HDRLEN + tx_buffer->padding;
116293 -
116294 - at76_dbg(DBG_TX_DATA_CONTENT, "%s skb->data %s", priv->netdev->name,
116295 - hex2str(skb->data, 32));
116296 - at76_dbg(DBG_TX_DATA, "%s tx: wlen 0x%x pad 0x%x rate %d hdr %s",
116297 - priv->netdev->name,
116298 - le16_to_cpu(tx_buffer->wlength),
116299 - tx_buffer->padding, tx_buffer->tx_rate,
116300 - hex2str(i802_11_hdr, sizeof(*i802_11_hdr)));
116301 - at76_dbg(DBG_TX_DATA_CONTENT, "%s payload %s", priv->netdev->name,
116302 - hex2str(payload, 48));
116303 -
116304 - /* send stuff */
116305 - netif_stop_queue(netdev);
116306 - netdev->trans_start = jiffies;
116307 -
116308 - usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe, tx_buffer,
116309 - submit_len, at76_tx_callback, priv);
116310 - ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
116311 - if (ret) {
116312 - stats->tx_errors++;
116313 - printk(KERN_ERR "%s: error in tx submit urb: %d\n",
116314 - netdev->name, ret);
116315 - if (ret == -EINVAL)
116316 - printk(KERN_ERR
116317 - "%s: -EINVAL: tx urb %p hcpriv %p complete %p\n",
116318 - priv->netdev->name, priv->tx_urb,
116319 - priv->tx_urb->hcpriv, priv->tx_urb->complete);
116320 - } else {
116321 - stats->tx_bytes += skb->len;
116322 - dev_kfree_skb(skb);
116323 - }
116324 -
116325 - return ret;
116326 -}
116327 -
116328 -static void at76_tx_timeout(struct net_device *netdev)
116329 -{
116330 - struct at76_priv *priv = netdev_priv(netdev);
116331 -
116332 - if (!priv)
116333 - return;
116334 - dev_warn(&netdev->dev, "tx timeout.");
116335 -
116336 - usb_unlink_urb(priv->tx_urb);
116337 - priv->stats.tx_errors++;
116338 -}
116339 -
116340 -static int at76_submit_rx_urb(struct at76_priv *priv)
116341 -{
116342 - int ret;
116343 - int size;
116344 - struct sk_buff *skb = priv->rx_skb;
116345 -
116346 - if (!priv->rx_urb) {
116347 - printk(KERN_ERR "%s: %s: priv->rx_urb is NULL\n",
116348 - priv->netdev->name, __func__);
116349 - return -EFAULT;
116350 - }
116351 -
116352 - if (!skb) {
116353 - skb = dev_alloc_skb(sizeof(struct at76_rx_buffer));
116354 - if (!skb) {
116355 - printk(KERN_ERR "%s: cannot allocate rx skbuff\n",
116356 - priv->netdev->name);
116357 - ret = -ENOMEM;
116358 - goto exit;
116359 - }
116360 - priv->rx_skb = skb;
116361 - } else {
116362 - skb_push(skb, skb_headroom(skb));
116363 - skb_trim(skb, 0);
116364 - }
116365 -
116366 - size = skb_tailroom(skb);
116367 - usb_fill_bulk_urb(priv->rx_urb, priv->udev, priv->rx_pipe,
116368 - skb_put(skb, size), size, at76_rx_callback, priv);
116369 - ret = usb_submit_urb(priv->rx_urb, GFP_ATOMIC);
116370 - if (ret < 0) {
116371 - if (ret == -ENODEV)
116372 - at76_dbg(DBG_DEVSTART,
116373 - "usb_submit_urb returned -ENODEV");
116374 - else
116375 - printk(KERN_ERR "%s: rx, usb_submit_urb failed: %d\n",
116376 - priv->netdev->name, ret);
116377 - }
116378 -
116379 -exit:
116380 - if (ret < 0 && ret != -ENODEV)
116381 - printk(KERN_ERR "%s: cannot submit rx urb - please unload the "
116382 - "driver and/or power cycle the device\n",
116383 - priv->netdev->name);
116384 -
116385 - return ret;
116386 -}
116387 -
116388 -static int at76_open(struct net_device *netdev)
116389 -{
116390 - struct at76_priv *priv = netdev_priv(netdev);
116391 - int ret = 0;
116392 -
116393 - at76_dbg(DBG_PROC_ENTRY, "%s(): entry", __func__);
116394 -
116395 - if (mutex_lock_interruptible(&priv->mtx))
116396 - return -EINTR;
116397 -
116398 - /* if netdev->dev_addr != priv->mac_addr we must
116399 - set the mac address in the device ! */
116400 - if (compare_ether_addr(netdev->dev_addr, priv->mac_addr)) {
116401 - if (at76_add_mac_address(priv, netdev->dev_addr) >= 0)
116402 - at76_dbg(DBG_PROGRESS, "%s: set new MAC addr %s",
116403 - netdev->name, mac2str(netdev->dev_addr));
116404 - }
116405 -
116406 - priv->scan_state = SCAN_IDLE;
116407 - priv->last_scan = jiffies;
116408 -
116409 - ret = at76_submit_rx_urb(priv);
116410 - if (ret < 0) {
116411 - printk(KERN_ERR "%s: open: submit_rx_urb failed: %d\n",
116412 - netdev->name, ret);
116413 - goto error;
116414 - }
116415 -
116416 - schedule_delayed_work(&priv->dwork_restart, 0);
116417 -
116418 - at76_dbg(DBG_PROC_ENTRY, "%s(): end", __func__);
116419 -error:
116420 - mutex_unlock(&priv->mtx);
116421 - return ret < 0 ? ret : 0;
116422 -}
116423 -
116424 -static int at76_stop(struct net_device *netdev)
116425 -{
116426 - struct at76_priv *priv = netdev_priv(netdev);
116427 -
116428 - at76_dbg(DBG_DEVSTART, "%s: ENTER", __func__);
116429 -
116430 - if (mutex_lock_interruptible(&priv->mtx))
116431 - return -EINTR;
116432 -
116433 - at76_quiesce(priv);
116434 -
116435 - if (!priv->device_unplugged) {
116436 - /* We are called by "ifconfig ethX down", not because the
116437 - * device is not available anymore. */
116438 - at76_set_radio(priv, 0);
116439 -
116440 - /* We unlink rx_urb because at76_open() re-submits it.
116441 - * If unplugged, at76_delete_device() takes care of it. */
116442 - usb_kill_urb(priv->rx_urb);
116443 - }
116444 -
116445 - /* free the bss_list */
116446 - at76_free_bss_list(priv);
116447 -
116448 - mutex_unlock(&priv->mtx);
116449 - at76_dbg(DBG_DEVSTART, "%s: EXIT", __func__);
116450 -
116451 - return 0;
116452 -}
116453 -
116454 -static void at76_ethtool_get_drvinfo(struct net_device *netdev,
116455 - struct ethtool_drvinfo *info)
116456 -{
116457 - struct at76_priv *priv = netdev_priv(netdev);
116458 -
116459 - strncpy(info->driver, DRIVER_NAME, sizeof(info->driver));
116460 - strncpy(info->version, DRIVER_VERSION, sizeof(info->version));
116461 -
116462 - usb_make_path(priv->udev, info->bus_info, sizeof(info->bus_info));
116463 -
116464 - snprintf(info->fw_version, sizeof(info->fw_version), "%d.%d.%d-%d",
116465 - priv->fw_version.major, priv->fw_version.minor,
116466 - priv->fw_version.patch, priv->fw_version.build);
116467 -}
116468 -
116469 -static u32 at76_ethtool_get_link(struct net_device *netdev)
116470 -{
116471 - struct at76_priv *priv = netdev_priv(netdev);
116472 - return priv->mac_state == MAC_CONNECTED;
116473 -}
116474 -
116475 -static struct ethtool_ops at76_ethtool_ops = {
116476 - .get_drvinfo = at76_ethtool_get_drvinfo,
116477 - .get_link = at76_ethtool_get_link,
116478 -};
116479 -
116480 -/* Download external firmware */
116481 -static int at76_load_external_fw(struct usb_device *udev, struct fwentry *fwe)
116482 -{
116483 - int ret;
116484 - int op_mode;
116485 - int blockno = 0;
116486 - int bsize;
116487 - u8 *block;
116488 - u8 *buf = fwe->extfw;
116489 - int size = fwe->extfw_size;
116490 -
116491 - if (!buf || !size)
116492 - return -ENOENT;
116493 -
116494 - op_mode = at76_get_op_mode(udev);
116495 - at76_dbg(DBG_DEVSTART, "opmode %d", op_mode);
116496 + op_mode = at76_get_op_mode(udev);
116497 + at76_dbg(DBG_DEVSTART, "opmode %d", op_mode);
116498
116499 if (op_mode != OPMODE_NORMAL_NIC_WITHOUT_FLASH) {
116500 dev_printk(KERN_ERR, &udev->dev, "unexpected opmode %d\n",
116501 @@ -3458,444 +1423,44 @@
116502 exit:
116503 kfree(block);
116504 if (ret < 0)
116505 - dev_printk(KERN_ERR, &udev->dev,
116506 - "downloading external firmware failed: %d\n", ret);
116507 - return ret;
116508 -}
116509 -
116510 -/* Download internal firmware */
116511 -static int at76_load_internal_fw(struct usb_device *udev, struct fwentry *fwe)
116512 -{
116513 - int ret;
116514 - int need_remap = !at76_is_505a(fwe->board_type);
116515 -
116516 - ret = at76_usbdfu_download(udev, fwe->intfw, fwe->intfw_size,
116517 - need_remap ? 0 : 2 * HZ);
116518 -
116519 - if (ret < 0) {
116520 - dev_printk(KERN_ERR, &udev->dev,
116521 - "downloading internal fw failed with %d\n", ret);
116522 - goto exit;
116523 - }
116524 -
116525 - at76_dbg(DBG_DEVSTART, "sending REMAP");
116526 -
116527 - /* no REMAP for 505A (see SF driver) */
116528 - if (need_remap) {
116529 - ret = at76_remap(udev);
116530 - if (ret < 0) {
116531 - dev_printk(KERN_ERR, &udev->dev,
116532 - "sending REMAP failed with %d\n", ret);
116533 - goto exit;
116534 - }
116535 - }
116536 -
116537 - at76_dbg(DBG_DEVSTART, "sleeping for 2 seconds");
116538 - schedule_timeout_interruptible(2 * HZ + 1);
116539 - usb_reset_device(udev);
116540 -
116541 -exit:
116542 - return ret;
116543 -}
116544 -
116545 -static int at76_match_essid(struct at76_priv *priv, struct bss_info *ptr)
116546 -{
116547 - /* common criteria for both modi */
116548 -
116549 - int ret = (priv->essid_size == 0 /* ANY ssid */ ||
116550 - (priv->essid_size == ptr->ssid_len &&
116551 - !memcmp(priv->essid, ptr->ssid, ptr->ssid_len)));
116552 - if (!ret)
116553 - at76_dbg(DBG_BSS_MATCH,
116554 - "%s bss table entry %p: essid didn't match",
116555 - priv->netdev->name, ptr);
116556 - return ret;
116557 -}
116558 -
116559 -static inline int at76_match_mode(struct at76_priv *priv, struct bss_info *ptr)
116560 -{
116561 - int ret;
116562 -
116563 - if (priv->iw_mode == IW_MODE_ADHOC)
116564 - ret = ptr->capa & WLAN_CAPABILITY_IBSS;
116565 - else
116566 - ret = ptr->capa & WLAN_CAPABILITY_ESS;
116567 - if (!ret)
116568 - at76_dbg(DBG_BSS_MATCH,
116569 - "%s bss table entry %p: mode didn't match",
116570 - priv->netdev->name, ptr);
116571 - return ret;
116572 -}
116573 -
116574 -static int at76_match_rates(struct at76_priv *priv, struct bss_info *ptr)
116575 -{
116576 - int i;
116577 -
116578 - for (i = 0; i < ptr->rates_len; i++) {
116579 - u8 rate = ptr->rates[i];
116580 -
116581 - if (!(rate & 0x80))
116582 - continue;
116583 -
116584 - /* this is a basic rate we have to support
116585 - (see IEEE802.11, ch. 7.3.2.2) */
116586 - if (rate != (0x80 | hw_rates[0])
116587 - && rate != (0x80 | hw_rates[1])
116588 - && rate != (0x80 | hw_rates[2])
116589 - && rate != (0x80 | hw_rates[3])) {
116590 - at76_dbg(DBG_BSS_MATCH,
116591 - "%s: bss table entry %p: basic rate %02x not "
116592 - "supported", priv->netdev->name, ptr, rate);
116593 - return 0;
116594 - }
116595 - }
116596 -
116597 - /* if we use short preamble, the bss must support it */
116598 - if (priv->preamble_type == PREAMBLE_TYPE_SHORT &&
116599 - !(ptr->capa & WLAN_CAPABILITY_SHORT_PREAMBLE)) {
116600 - at76_dbg(DBG_BSS_MATCH,
116601 - "%s: %p does not support short preamble",
116602 - priv->netdev->name, ptr);
116603 - return 0;
116604 - } else
116605 - return 1;
116606 -}
116607 -
116608 -static inline int at76_match_wep(struct at76_priv *priv, struct bss_info *ptr)
116609 -{
116610 - if (!priv->wep_enabled && ptr->capa & WLAN_CAPABILITY_PRIVACY) {
116611 - /* we have disabled WEP, but the BSS signals privacy */
116612 - at76_dbg(DBG_BSS_MATCH,
116613 - "%s: bss table entry %p: requires encryption",
116614 - priv->netdev->name, ptr);
116615 - return 0;
116616 - }
116617 - /* otherwise if the BSS does not signal privacy it may well
116618 - accept encrypted packets from us ... */
116619 - return 1;
116620 -}
116621 -
116622 -static inline int at76_match_bssid(struct at76_priv *priv, struct bss_info *ptr)
116623 -{
116624 - if (!priv->wanted_bssid_valid ||
116625 - !compare_ether_addr(ptr->bssid, priv->wanted_bssid))
116626 - return 1;
116627 -
116628 - at76_dbg(DBG_BSS_MATCH,
116629 - "%s: requested bssid - %s does not match",
116630 - priv->netdev->name, mac2str(priv->wanted_bssid));
116631 - at76_dbg(DBG_BSS_MATCH,
116632 - " AP bssid - %s of bss table entry %p",
116633 - mac2str(ptr->bssid), ptr);
116634 - return 0;
116635 -}
116636 -
116637 -/**
116638 - * at76_match_bss - try to find a matching bss in priv->bss
116639 - *
116640 - * last - last bss tried
116641 - *
116642 - * last == NULL signals a new round starting with priv->bss_list.next
116643 - * this function must be called inside an acquired priv->bss_list_spinlock
116644 - * otherwise the timeout on bss may remove the newly chosen entry
116645 - */
116646 -static struct bss_info *at76_match_bss(struct at76_priv *priv,
116647 - struct bss_info *last)
116648 -{
116649 - struct bss_info *ptr = NULL;
116650 - struct list_head *curr;
116651 -
116652 - curr = last ? last->list.next : priv->bss_list.next;
116653 - while (curr != &priv->bss_list) {
116654 - ptr = list_entry(curr, struct bss_info, list);
116655 - if (at76_match_essid(priv, ptr) && at76_match_mode(priv, ptr)
116656 - && at76_match_wep(priv, ptr) && at76_match_rates(priv, ptr)
116657 - && at76_match_bssid(priv, ptr))
116658 - break;
116659 - curr = curr->next;
116660 - }
116661 -
116662 - if (curr == &priv->bss_list)
116663 - ptr = NULL;
116664 - /* otherwise ptr points to the struct bss_info we have chosen */
116665 -
116666 - at76_dbg(DBG_BSS_TABLE, "%s %s: returned %p", priv->netdev->name,
116667 - __func__, ptr);
116668 - return ptr;
116669 -}
116670 -
116671 -/* Start joining a matching BSS, or create own IBSS */
116672 -static void at76_work_join(struct work_struct *work)
116673 -{
116674 - struct at76_priv *priv = container_of(work, struct at76_priv,
116675 - work_join);
116676 - int ret;
116677 - unsigned long flags;
116678 -
116679 - mutex_lock(&priv->mtx);
116680 -
116681 - WARN_ON(priv->mac_state != MAC_JOINING);
116682 - if (priv->mac_state != MAC_JOINING)
116683 - goto exit;
116684 -
116685 - /* secure the access to priv->curr_bss ! */
116686 - spin_lock_irqsave(&priv->bss_list_spinlock, flags);
116687 - priv->curr_bss = at76_match_bss(priv, priv->curr_bss);
116688 - spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
116689 -
116690 - if (!priv->curr_bss) {
116691 - /* here we haven't found a matching (i)bss ... */
116692 - if (priv->iw_mode == IW_MODE_ADHOC) {
116693 - at76_set_mac_state(priv, MAC_OWN_IBSS);
116694 - at76_start_ibss(priv);
116695 - goto exit;
116696 - }
116697 - /* haven't found a matching BSS in infra mode - try again */
116698 - at76_set_mac_state(priv, MAC_SCANNING);
116699 - schedule_work(&priv->work_start_scan);
116700 - goto exit;
116701 - }
116702 -
116703 - ret = at76_join_bss(priv, priv->curr_bss);
116704 - if (ret < 0) {
116705 - printk(KERN_ERR "%s: join_bss failed with %d\n",
116706 - priv->netdev->name, ret);
116707 - goto exit;
116708 - }
116709 -
116710 - ret = at76_wait_completion(priv, CMD_JOIN);
116711 - if (ret != CMD_STATUS_COMPLETE) {
116712 - if (ret != CMD_STATUS_TIME_OUT)
116713 - printk(KERN_ERR "%s: join_bss completed with %d\n",
116714 - priv->netdev->name, ret);
116715 - else
116716 - printk(KERN_INFO "%s: join_bss ssid %s timed out\n",
116717 - priv->netdev->name,
116718 - mac2str(priv->curr_bss->bssid));
116719 -
116720 - /* retry next BSS immediately */
116721 - schedule_work(&priv->work_join);
116722 - goto exit;
116723 - }
116724 -
116725 - /* here we have joined the (I)BSS */
116726 - if (priv->iw_mode == IW_MODE_ADHOC) {
116727 - struct bss_info *bptr = priv->curr_bss;
116728 - at76_set_mac_state(priv, MAC_CONNECTED);
116729 - /* get ESSID, BSSID and channel for priv->curr_bss */
116730 - priv->essid_size = bptr->ssid_len;
116731 - memcpy(priv->essid, bptr->ssid, bptr->ssid_len);
116732 - memcpy(priv->bssid, bptr->bssid, ETH_ALEN);
116733 - priv->channel = bptr->channel;
116734 - at76_iwevent_bss_connect(priv->netdev, bptr->bssid);
116735 - netif_carrier_on(priv->netdev);
116736 - netif_start_queue(priv->netdev);
116737 - /* just to be sure */
116738 - cancel_delayed_work(&priv->dwork_get_scan);
116739 - cancel_delayed_work(&priv->dwork_auth);
116740 - cancel_delayed_work(&priv->dwork_assoc);
116741 - } else {
116742 - /* send auth req */
116743 - priv->retries = AUTH_RETRIES;
116744 - at76_set_mac_state(priv, MAC_AUTH);
116745 - at76_auth_req(priv, priv->curr_bss, 1, NULL);
116746 - at76_dbg(DBG_MGMT_TIMER,
116747 - "%s:%d: starting mgmt_timer + HZ", __func__, __LINE__);
116748 - schedule_delayed_work(&priv->dwork_auth, AUTH_TIMEOUT);
116749 - }
116750 -
116751 -exit:
116752 - mutex_unlock(&priv->mtx);
116753 -}
116754 -
116755 -/* Reap scan results */
116756 -static void at76_dwork_get_scan(struct work_struct *work)
116757 -{
116758 - int status;
116759 - int ret;
116760 - struct at76_priv *priv = container_of(work, struct at76_priv,
116761 - dwork_get_scan.work);
116762 -
116763 - mutex_lock(&priv->mtx);
116764 - WARN_ON(priv->mac_state != MAC_SCANNING);
116765 - if (priv->mac_state != MAC_SCANNING)
116766 - goto exit;
116767 -
116768 - status = at76_get_cmd_status(priv->udev, CMD_SCAN);
116769 - if (status < 0) {
116770 - printk(KERN_ERR "%s: %s: at76_get_cmd_status failed with %d\n",
116771 - priv->netdev->name, __func__, status);
116772 - status = CMD_STATUS_IN_PROGRESS;
116773 - /* INFO: Hope it was a one off error - if not, scanning
116774 - further down the line and stop this cycle */
116775 - }
116776 - at76_dbg(DBG_PROGRESS,
116777 - "%s %s: got cmd_status %d (state %s, need_any %d)",
116778 - priv->netdev->name, __func__, status,
116779 - mac_states[priv->mac_state], priv->scan_need_any);
116780 -
116781 - if (status != CMD_STATUS_COMPLETE) {
116782 - if ((status != CMD_STATUS_IN_PROGRESS) &&
116783 - (status != CMD_STATUS_IDLE))
116784 - printk(KERN_ERR "%s: %s: Bad scan status: %s\n",
116785 - priv->netdev->name, __func__,
116786 - at76_get_cmd_status_string(status));
116787 -
116788 - /* the first cmd status after scan start is always a IDLE ->
116789 - start the timer to poll again until COMPLETED */
116790 - at76_dbg(DBG_MGMT_TIMER,
116791 - "%s:%d: starting mgmt_timer for %d ticks",
116792 - __func__, __LINE__, SCAN_POLL_INTERVAL);
116793 - schedule_delayed_work(&priv->dwork_get_scan,
116794 - SCAN_POLL_INTERVAL);
116795 - goto exit;
116796 - }
116797 -
116798 - if (at76_debug & DBG_BSS_TABLE)
116799 - at76_dump_bss_table(priv);
116800 -
116801 - if (priv->scan_need_any) {
116802 - ret = at76_start_scan(priv, 0);
116803 - if (ret < 0)
116804 - printk(KERN_ERR
116805 - "%s: %s: start_scan (ANY) failed with %d\n",
116806 - priv->netdev->name, __func__, ret);
116807 - at76_dbg(DBG_MGMT_TIMER,
116808 - "%s:%d: starting mgmt_timer for %d ticks", __func__,
116809 - __LINE__, SCAN_POLL_INTERVAL);
116810 - schedule_delayed_work(&priv->dwork_get_scan,
116811 - SCAN_POLL_INTERVAL);
116812 - priv->scan_need_any = 0;
116813 - } else {
116814 - priv->scan_state = SCAN_COMPLETED;
116815 - /* report the end of scan to user space */
116816 - at76_iwevent_scan_complete(priv->netdev);
116817 - at76_set_mac_state(priv, MAC_JOINING);
116818 - schedule_work(&priv->work_join);
116819 - }
116820 -
116821 -exit:
116822 - mutex_unlock(&priv->mtx);
116823 -}
116824 -
116825 -/* Handle loss of beacons from the AP */
116826 -static void at76_dwork_beacon(struct work_struct *work)
116827 -{
116828 - struct at76_priv *priv = container_of(work, struct at76_priv,
116829 - dwork_beacon.work);
116830 -
116831 - mutex_lock(&priv->mtx);
116832 - if (priv->mac_state != MAC_CONNECTED || priv->iw_mode != IW_MODE_INFRA)
116833 - goto exit;
116834 -
116835 - /* We haven't received any beacons from out AP for BEACON_TIMEOUT */
116836 - printk(KERN_INFO "%s: lost beacon bssid %s\n",
116837 - priv->netdev->name, mac2str(priv->curr_bss->bssid));
116838 -
116839 - netif_carrier_off(priv->netdev);
116840 - netif_stop_queue(priv->netdev);
116841 - at76_iwevent_bss_disconnect(priv->netdev);
116842 - at76_set_mac_state(priv, MAC_SCANNING);
116843 - schedule_work(&priv->work_start_scan);
116844 -
116845 -exit:
116846 - mutex_unlock(&priv->mtx);
116847 -}
116848 -
116849 -/* Handle authentication response timeout */
116850 -static void at76_dwork_auth(struct work_struct *work)
116851 -{
116852 - struct at76_priv *priv = container_of(work, struct at76_priv,
116853 - dwork_auth.work);
116854 -
116855 - mutex_lock(&priv->mtx);
116856 - WARN_ON(priv->mac_state != MAC_AUTH);
116857 - if (priv->mac_state != MAC_AUTH)
116858 - goto exit;
116859 -
116860 - at76_dbg(DBG_PROGRESS, "%s: authentication response timeout",
116861 - priv->netdev->name);
116862 -
116863 - if (priv->retries-- >= 0) {
116864 - at76_auth_req(priv, priv->curr_bss, 1, NULL);
116865 - at76_dbg(DBG_MGMT_TIMER, "%s:%d: starting mgmt_timer + HZ",
116866 - __func__, __LINE__);
116867 - schedule_delayed_work(&priv->dwork_auth, AUTH_TIMEOUT);
116868 - } else {
116869 - /* try to get next matching BSS */
116870 - at76_set_mac_state(priv, MAC_JOINING);
116871 - schedule_work(&priv->work_join);
116872 - }
116873 -
116874 -exit:
116875 - mutex_unlock(&priv->mtx);
116876 -}
116877 -
116878 -/* Handle association response timeout */
116879 -static void at76_dwork_assoc(struct work_struct *work)
116880 -{
116881 - struct at76_priv *priv = container_of(work, struct at76_priv,
116882 - dwork_assoc.work);
116883 -
116884 - mutex_lock(&priv->mtx);
116885 - WARN_ON(priv->mac_state != MAC_ASSOC);
116886 - if (priv->mac_state != MAC_ASSOC)
116887 - goto exit;
116888 -
116889 - at76_dbg(DBG_PROGRESS, "%s: association response timeout",
116890 - priv->netdev->name);
116891 -
116892 - if (priv->retries-- >= 0) {
116893 - at76_assoc_req(priv, priv->curr_bss);
116894 - at76_dbg(DBG_MGMT_TIMER, "%s:%d: starting mgmt_timer + HZ",
116895 - __func__, __LINE__);
116896 - schedule_delayed_work(&priv->dwork_assoc, ASSOC_TIMEOUT);
116897 - } else {
116898 - /* try to get next matching BSS */
116899 - at76_set_mac_state(priv, MAC_JOINING);
116900 - schedule_work(&priv->work_join);
116901 - }
116902 -
116903 -exit:
116904 - mutex_unlock(&priv->mtx);
116905 + dev_printk(KERN_ERR, &udev->dev,
116906 + "downloading external firmware failed: %d\n", ret);
116907 + return ret;
116908 }
116909
116910 -/* Read new bssid in ad-hoc mode */
116911 -static void at76_work_new_bss(struct work_struct *work)
116912 +/* Download internal firmware */
116913 +static int at76_load_internal_fw(struct usb_device *udev, struct fwentry *fwe)
116914 {
116915 - struct at76_priv *priv = container_of(work, struct at76_priv,
116916 - work_new_bss);
116917 int ret;
116918 - struct mib_mac_mgmt mac_mgmt;
116919 + int need_remap = !at76_is_505a(fwe->board_type);
116920
116921 - mutex_lock(&priv->mtx);
116922 + ret = at76_usbdfu_download(udev, fwe->intfw, fwe->intfw_size,
116923 + need_remap ? 0 : 2 * HZ);
116924
116925 - ret = at76_get_mib(priv->udev, MIB_MAC_MGMT, &mac_mgmt,
116926 - sizeof(struct mib_mac_mgmt));
116927 if (ret < 0) {
116928 - printk(KERN_ERR "%s: at76_get_mib failed: %d\n",
116929 - priv->netdev->name, ret);
116930 + dev_printk(KERN_ERR, &udev->dev,
116931 + "downloading internal fw failed with %d\n", ret);
116932 goto exit;
116933 }
116934
116935 - at76_dbg(DBG_PROGRESS, "ibss_change = 0x%2x", mac_mgmt.ibss_change);
116936 - memcpy(priv->bssid, mac_mgmt.current_bssid, ETH_ALEN);
116937 - at76_dbg(DBG_PROGRESS, "using BSSID %s", mac2str(priv->bssid));
116938 -
116939 - at76_iwevent_bss_connect(priv->netdev, priv->bssid);
116940 + at76_dbg(DBG_DEVSTART, "sending REMAP");
116941
116942 - priv->mib_buf.type = MIB_MAC_MGMT;
116943 - priv->mib_buf.size = 1;
116944 - priv->mib_buf.index = offsetof(struct mib_mac_mgmt, ibss_change);
116945 - priv->mib_buf.data.byte = 0;
116946 + /* no REMAP for 505A (see SF driver) */
116947 + if (need_remap) {
116948 + ret = at76_remap(udev);
116949 + if (ret < 0) {
116950 + dev_printk(KERN_ERR, &udev->dev,
116951 + "sending REMAP failed with %d\n", ret);
116952 + goto exit;
116953 + }
116954 + }
116955
116956 - ret = at76_set_mib(priv, &priv->mib_buf);
116957 - if (ret < 0)
116958 - printk(KERN_ERR "%s: set_mib (ibss change ok) failed: %d\n",
116959 - priv->netdev->name, ret);
116960 + at76_dbg(DBG_DEVSTART, "sleeping for 2 seconds");
116961 + schedule_timeout_interruptible(2 * HZ + 1);
116962 + usb_reset_device(udev);
116963
116964 exit:
116965 - mutex_unlock(&priv->mtx);
116966 + return ret;
116967 }
116968
116969 static int at76_startup_device(struct at76_priv *priv)
116970 @@ -3905,14 +1470,14 @@
116971
116972 at76_dbg(DBG_PARAMS,
116973 "%s param: ssid %.*s (%s) mode %s ch %d wep %s key %d "
116974 - "keylen %d", priv->netdev->name, priv->essid_size, priv->essid,
116975 - hex2str(priv->essid, IW_ESSID_MAX_SIZE),
116976 + "keylen %d", wiphy_name(priv->hw->wiphy), priv->essid_size,
116977 + priv->essid, hex2str(priv->essid, IW_ESSID_MAX_SIZE),
116978 priv->iw_mode == IW_MODE_ADHOC ? "adhoc" : "infra",
116979 priv->channel, priv->wep_enabled ? "enabled" : "disabled",
116980 priv->wep_key_id, priv->wep_keys_len[priv->wep_key_id]);
116981 at76_dbg(DBG_PARAMS,
116982 "%s param: preamble %s rts %d retry %d frag %d "
116983 - "txrate %s auth_mode %d", priv->netdev->name,
116984 + "txrate %s auth_mode %d", wiphy_name(priv->hw->wiphy),
116985 preambles[priv->preamble_type], priv->rts_threshold,
116986 priv->short_retry_limit, priv->frag_threshold,
116987 priv->txrate == TX_RATE_1MBIT ? "1MBit" : priv->txrate ==
116988 @@ -3923,7 +1488,7 @@
116989 at76_dbg(DBG_PARAMS,
116990 "%s param: pm_mode %d pm_period %d auth_mode %s "
116991 "scan_times %d %d scan_mode %s",
116992 - priv->netdev->name, priv->pm_mode, priv->pm_period,
116993 + wiphy_name(priv->hw->wiphy), priv->pm_mode, priv->pm_period,
116994 priv->auth_mode == WLAN_AUTH_OPEN ? "open" : "shared_secret",
116995 priv->scan_min_time, priv->scan_max_time,
116996 priv->scan_mode == SCAN_TYPE_ACTIVE ? "active" : "passive");
116997 @@ -3957,7 +1522,8 @@
116998 ccfg->ssid_len = priv->essid_size;
116999
117000 ccfg->wep_default_key_id = priv->wep_key_id;
117001 - memcpy(ccfg->wep_default_key_value, priv->wep_keys, 4 * WEP_KEY_LEN);
117002 + memcpy(ccfg->wep_default_key_value, priv->wep_keys,
117003 + sizeof(priv->wep_keys));
117004
117005 ccfg->short_preamble = priv->preamble_type;
117006 ccfg->beacon_period = cpu_to_le16(priv->beacon_period);
117007 @@ -3966,7 +1532,7 @@
117008 sizeof(struct at76_card_config));
117009 if (ret < 0) {
117010 printk(KERN_ERR "%s: at76_set_card_command failed: %d\n",
117011 - priv->netdev->name, ret);
117012 + wiphy_name(priv->hw->wiphy), ret);
117013 return ret;
117014 }
117015
117016 @@ -4012,69 +1578,6 @@
117017 return 0;
117018 }
117019
117020 -/* Restart the interface */
117021 -static void at76_dwork_restart(struct work_struct *work)
117022 -{
117023 - struct at76_priv *priv = container_of(work, struct at76_priv,
117024 - dwork_restart.work);
117025 -
117026 - mutex_lock(&priv->mtx);
117027 -
117028 - netif_carrier_off(priv->netdev); /* stop netdev watchdog */
117029 - netif_stop_queue(priv->netdev); /* stop tx data packets */
117030 -
117031 - at76_startup_device(priv);
117032 -
117033 - if (priv->iw_mode != IW_MODE_MONITOR) {
117034 - priv->netdev->type = ARPHRD_ETHER;
117035 - at76_set_mac_state(priv, MAC_SCANNING);
117036 - schedule_work(&priv->work_start_scan);
117037 - } else {
117038 - priv->netdev->type = ARPHRD_IEEE80211_RADIOTAP;
117039 - at76_start_monitor(priv);
117040 - }
117041 -
117042 - mutex_unlock(&priv->mtx);
117043 -}
117044 -
117045 -/* Initiate scanning */
117046 -static void at76_work_start_scan(struct work_struct *work)
117047 -{
117048 - struct at76_priv *priv = container_of(work, struct at76_priv,
117049 - work_start_scan);
117050 - int ret;
117051 -
117052 - mutex_lock(&priv->mtx);
117053 -
117054 - WARN_ON(priv->mac_state != MAC_SCANNING);
117055 - if (priv->mac_state != MAC_SCANNING)
117056 - goto exit;
117057 -
117058 - /* only clear the bss list when a scan is actively initiated,
117059 - * otherwise simply rely on at76_bss_list_timeout */
117060 - if (priv->scan_state == SCAN_IN_PROGRESS) {
117061 - at76_free_bss_list(priv);
117062 - priv->scan_need_any = 1;
117063 - } else
117064 - priv->scan_need_any = 0;
117065 -
117066 - ret = at76_start_scan(priv, 1);
117067 -
117068 - if (ret < 0)
117069 - printk(KERN_ERR "%s: %s: start_scan failed with %d\n",
117070 - priv->netdev->name, __func__, ret);
117071 - else {
117072 - at76_dbg(DBG_MGMT_TIMER,
117073 - "%s:%d: starting mgmt_timer for %d ticks",
117074 - __func__, __LINE__, SCAN_POLL_INTERVAL);
117075 - schedule_delayed_work(&priv->dwork_get_scan,
117076 - SCAN_POLL_INTERVAL);
117077 - }
117078 -
117079 -exit:
117080 - mutex_unlock(&priv->mtx);
117081 -}
117082 -
117083 /* Enable or disable promiscuous mode */
117084 static void at76_work_set_promisc(struct work_struct *work)
117085 {
117086 @@ -4092,7 +1595,7 @@
117087 ret = at76_set_mib(priv, &priv->mib_buf);
117088 if (ret < 0)
117089 printk(KERN_ERR "%s: set_mib (promiscuous_mode) failed: %d\n",
117090 - priv->netdev->name, ret);
117091 + wiphy_name(priv->hw->wiphy), ret);
117092
117093 mutex_unlock(&priv->mtx);
117094 }
117095 @@ -4108,1088 +1611,759 @@
117096 mutex_unlock(&priv->mtx);
117097 }
117098
117099 -/* We got an association response */
117100 -static void at76_rx_mgmt_assoc(struct at76_priv *priv,
117101 - struct at76_rx_buffer *buf)
117102 -{
117103 - struct ieee80211_assoc_response *resp =
117104 - (struct ieee80211_assoc_response *)buf->packet;
117105 - u16 assoc_id = le16_to_cpu(resp->aid);
117106 - u16 status = le16_to_cpu(resp->status);
117107 -
117108 - at76_dbg(DBG_RX_MGMT, "%s: rx AssocResp bssid %s capa 0x%04x status "
117109 - "0x%04x assoc_id 0x%04x rates %s", priv->netdev->name,
117110 - mac2str(resp->header.addr3), le16_to_cpu(resp->capability),
117111 - status, assoc_id, hex2str(resp->info_element->data,
117112 - resp->info_element->len));
117113 -
117114 - if (priv->mac_state != MAC_ASSOC) {
117115 - printk(KERN_INFO "%s: AssocResp in state %s ignored\n",
117116 - priv->netdev->name, mac_states[priv->mac_state]);
117117 +static void at76_rx_tasklet(unsigned long param)
117118 +{
117119 + struct urb *urb = (struct urb *)param;
117120 + struct at76_priv *priv = urb->context;
117121 + struct at76_rx_buffer *buf;
117122 + struct ieee80211_rx_status rx_status = { 0 };
117123 +
117124 + if (priv->device_unplugged) {
117125 + at76_dbg(DBG_DEVSTART, "device unplugged");
117126 + if (urb)
117127 + at76_dbg(DBG_DEVSTART, "urb status %d", urb->status);
117128 return;
117129 }
117130
117131 - BUG_ON(!priv->curr_bss);
117132 + if (!priv->rx_skb || !priv->rx_skb->data)
117133 + return;
117134
117135 - cancel_delayed_work(&priv->dwork_assoc);
117136 - if (status == WLAN_STATUS_SUCCESS) {
117137 - struct bss_info *ptr = priv->curr_bss;
117138 - priv->assoc_id = assoc_id & 0x3fff;
117139 - /* update iwconfig params */
117140 - memcpy(priv->bssid, ptr->bssid, ETH_ALEN);
117141 - memcpy(priv->essid, ptr->ssid, ptr->ssid_len);
117142 - priv->essid_size = ptr->ssid_len;
117143 - priv->channel = ptr->channel;
117144 - schedule_work(&priv->work_assoc_done);
117145 - } else {
117146 - at76_set_mac_state(priv, MAC_JOINING);
117147 - schedule_work(&priv->work_join);
117148 + buf = (struct at76_rx_buffer *)priv->rx_skb->data;
117149 +
117150 + if (urb->status != 0) {
117151 + if (urb->status != -ENOENT && urb->status != -ECONNRESET)
117152 + at76_dbg(DBG_URB,
117153 + "%s %s: - nonzero Rx bulk status received: %d",
117154 + __func__, wiphy_name(priv->hw->wiphy),
117155 + urb->status);
117156 + return;
117157 }
117158 +
117159 + at76_dbg(DBG_RX_ATMEL_HDR,
117160 + "%s: rx frame: rate %d rssi %d noise %d link %d",
117161 + wiphy_name(priv->hw->wiphy), buf->rx_rate, buf->rssi,
117162 + buf->noise_level, buf->link_quality);
117163 +
117164 + skb_trim(priv->rx_skb, le16_to_cpu(buf->wlength) + AT76_RX_HDRLEN);
117165 + at76_dbg_dump(DBG_RX_DATA, &priv->rx_skb->data[AT76_RX_HDRLEN],
117166 + priv->rx_skb->len, "RX: len=%d",
117167 + (int)(priv->rx_skb->len - AT76_RX_HDRLEN));
117168 +
117169 + rx_status.signal = buf->rssi;
117170 + /* FIXME: is rate_idx still present in structure? */
117171 + rx_status.rate_idx = buf->rx_rate;
117172 + rx_status.flag |= RX_FLAG_DECRYPTED;
117173 + rx_status.flag |= RX_FLAG_IV_STRIPPED;
117174 +
117175 + skb_pull(priv->rx_skb, AT76_RX_HDRLEN);
117176 + at76_dbg(DBG_MAC80211, "calling ieee80211_rx_irqsafe(): %d/%d",
117177 + priv->rx_skb->len, priv->rx_skb->data_len);
117178 + ieee80211_rx_irqsafe(priv->hw, priv->rx_skb, &rx_status);
117179 +
117180 + /* Use a new skb for the next receive */
117181 + priv->rx_skb = NULL;
117182 +
117183 + at76_submit_rx_urb(priv);
117184 }
117185
117186 -/* Process disassociation request from the AP */
117187 -static void at76_rx_mgmt_disassoc(struct at76_priv *priv,
117188 - struct at76_rx_buffer *buf)
117189 +/* Load firmware into kernel memory and parse it */
117190 +static struct fwentry *at76_load_firmware(struct usb_device *udev,
117191 + enum board_type board_type)
117192 {
117193 - struct ieee80211_disassoc *resp =
117194 - (struct ieee80211_disassoc *)buf->packet;
117195 - struct ieee80211_hdr_3addr *mgmt = &resp->header;
117196 + int ret;
117197 + char *str;
117198 + struct at76_fw_header *fwh;
117199 + struct fwentry *fwe = &firmwares[board_type];
117200
117201 - at76_dbg(DBG_RX_MGMT,
117202 - "%s: rx DisAssoc bssid %s reason 0x%04x destination %s",
117203 - priv->netdev->name, mac2str(mgmt->addr3),
117204 - le16_to_cpu(resp->reason), mac2str(mgmt->addr1));
117205 + mutex_lock(&fw_mutex);
117206
117207 - /* We are not connected, ignore */
117208 - if (priv->mac_state == MAC_SCANNING || priv->mac_state == MAC_INIT
117209 - || !priv->curr_bss)
117210 - return;
117211 + if (fwe->loaded) {
117212 + at76_dbg(DBG_FW, "re-using previously loaded fw");
117213 + goto exit;
117214 + }
117215
117216 - /* Not our BSSID, ignore */
117217 - if (compare_ether_addr(mgmt->addr3, priv->curr_bss->bssid))
117218 - return;
117219 + at76_dbg(DBG_FW, "downloading firmware %s", fwe->fwname);
117220 + ret = request_firmware(&fwe->fw, fwe->fwname, &udev->dev);
117221 + if (ret < 0) {
117222 + dev_printk(KERN_ERR, &udev->dev, "firmware %s not found!\n",
117223 + fwe->fwname);
117224 + dev_printk(KERN_ERR, &udev->dev,
117225 + "you may need to download the firmware from "
117226 + "http://developer.berlios.de/projects/at76c503a/\n");
117227 + goto exit;
117228 + }
117229
117230 - /* Not for our STA and not broadcast, ignore */
117231 - if (compare_ether_addr(priv->netdev->dev_addr, mgmt->addr1)
117232 - && !is_broadcast_ether_addr(mgmt->addr1))
117233 - return;
117234 + at76_dbg(DBG_FW, "got it.");
117235 + fwh = (struct at76_fw_header *)(fwe->fw->data);
117236
117237 - if (priv->mac_state != MAC_ASSOC && priv->mac_state != MAC_CONNECTED
117238 - && priv->mac_state != MAC_JOINING) {
117239 - printk(KERN_INFO "%s: DisAssoc in state %s ignored\n",
117240 - priv->netdev->name, mac_states[priv->mac_state]);
117241 - return;
117242 + if (fwe->fw->size <= sizeof(*fwh)) {
117243 + dev_printk(KERN_ERR, &udev->dev,
117244 + "firmware is too short (0x%zx)\n", fwe->fw->size);
117245 + goto exit;
117246 }
117247
117248 - if (priv->mac_state == MAC_CONNECTED) {
117249 - netif_carrier_off(priv->netdev);
117250 - netif_stop_queue(priv->netdev);
117251 - at76_iwevent_bss_disconnect(priv->netdev);
117252 - }
117253 - cancel_delayed_work(&priv->dwork_get_scan);
117254 - cancel_delayed_work(&priv->dwork_beacon);
117255 - cancel_delayed_work(&priv->dwork_auth);
117256 - cancel_delayed_work(&priv->dwork_assoc);
117257 - at76_set_mac_state(priv, MAC_JOINING);
117258 - schedule_work(&priv->work_join);
117259 -}
117260 -
117261 -static void at76_rx_mgmt_auth(struct at76_priv *priv,
117262 - struct at76_rx_buffer *buf)
117263 -{
117264 - struct ieee80211_auth *resp = (struct ieee80211_auth *)buf->packet;
117265 - struct ieee80211_hdr_3addr *mgmt = &resp->header;
117266 - int seq_nr = le16_to_cpu(resp->transaction);
117267 - int alg = le16_to_cpu(resp->algorithm);
117268 - int status = le16_to_cpu(resp->status);
117269 -
117270 - at76_dbg(DBG_RX_MGMT,
117271 - "%s: rx AuthFrame bssid %s alg %d seq_nr %d status %d "
117272 - "destination %s", priv->netdev->name, mac2str(mgmt->addr3),
117273 - alg, seq_nr, status, mac2str(mgmt->addr1));
117274 -
117275 - if (alg == WLAN_AUTH_SHARED_KEY && seq_nr == 2)
117276 - at76_dbg(DBG_RX_MGMT, "%s: AuthFrame challenge %s ...",
117277 - priv->netdev->name, hex2str(resp->info_element, 18));
117278 -
117279 - if (priv->mac_state != MAC_AUTH) {
117280 - printk(KERN_INFO "%s: ignored AuthFrame in state %s\n",
117281 - priv->netdev->name, mac_states[priv->mac_state]);
117282 - return;
117283 - }
117284 - if (priv->auth_mode != alg) {
117285 - printk(KERN_INFO "%s: ignored AuthFrame for alg %d\n",
117286 - priv->netdev->name, alg);
117287 - return;
117288 + /* CRC currently not checked */
117289 + fwe->board_type = le32_to_cpu(fwh->board_type);
117290 + if (fwe->board_type != board_type) {
117291 + dev_printk(KERN_ERR, &udev->dev,
117292 + "board type mismatch, requested %u, got %u\n",
117293 + board_type, fwe->board_type);
117294 + goto exit;
117295 }
117296
117297 - BUG_ON(!priv->curr_bss);
117298 + fwe->fw_version.major = fwh->major;
117299 + fwe->fw_version.minor = fwh->minor;
117300 + fwe->fw_version.patch = fwh->patch;
117301 + fwe->fw_version.build = fwh->build;
117302
117303 - /* Not our BSSID or not for our STA, ignore */
117304 - if (compare_ether_addr(mgmt->addr3, priv->curr_bss->bssid)
117305 - || compare_ether_addr(priv->netdev->dev_addr, mgmt->addr1))
117306 - return;
117307 + str = (char *)fwh + le32_to_cpu(fwh->str_offset);
117308 + fwe->intfw = (u8 *)fwh + le32_to_cpu(fwh->int_fw_offset);
117309 + fwe->intfw_size = le32_to_cpu(fwh->int_fw_len);
117310 + fwe->extfw = (u8 *)fwh + le32_to_cpu(fwh->ext_fw_offset);
117311 + fwe->extfw_size = le32_to_cpu(fwh->ext_fw_len);
117312
117313 - cancel_delayed_work(&priv->dwork_auth);
117314 - if (status != WLAN_STATUS_SUCCESS) {
117315 - /* try to join next bss */
117316 - at76_set_mac_state(priv, MAC_JOINING);
117317 - schedule_work(&priv->work_join);
117318 - return;
117319 - }
117320 + fwe->loaded = 1;
117321
117322 - if (priv->auth_mode == WLAN_AUTH_OPEN || seq_nr == 4) {
117323 - priv->retries = ASSOC_RETRIES;
117324 - at76_set_mac_state(priv, MAC_ASSOC);
117325 - at76_assoc_req(priv, priv->curr_bss);
117326 - at76_dbg(DBG_MGMT_TIMER,
117327 - "%s:%d: starting mgmt_timer + HZ", __func__, __LINE__);
117328 - schedule_delayed_work(&priv->dwork_assoc, ASSOC_TIMEOUT);
117329 - return;
117330 - }
117331 + dev_printk(KERN_DEBUG, &udev->dev,
117332 + "using firmware %s (version %d.%d.%d-%d)\n",
117333 + fwe->fwname, fwh->major, fwh->minor, fwh->patch, fwh->build);
117334
117335 - WARN_ON(seq_nr != 2);
117336 - at76_auth_req(priv, priv->curr_bss, seq_nr + 1, resp->info_element);
117337 - at76_dbg(DBG_MGMT_TIMER, "%s:%d: starting mgmt_timer + HZ", __func__,
117338 - __LINE__);
117339 - schedule_delayed_work(&priv->dwork_auth, AUTH_TIMEOUT);
117340 -}
117341 -
117342 -static void at76_rx_mgmt_deauth(struct at76_priv *priv,
117343 - struct at76_rx_buffer *buf)
117344 -{
117345 - struct ieee80211_disassoc *resp =
117346 - (struct ieee80211_disassoc *)buf->packet;
117347 - struct ieee80211_hdr_3addr *mgmt = &resp->header;
117348 -
117349 - at76_dbg(DBG_RX_MGMT | DBG_PROGRESS,
117350 - "%s: rx DeAuth bssid %s reason 0x%04x destination %s",
117351 - priv->netdev->name, mac2str(mgmt->addr3),
117352 - le16_to_cpu(resp->reason), mac2str(mgmt->addr1));
117353 -
117354 - if (priv->mac_state != MAC_AUTH && priv->mac_state != MAC_ASSOC
117355 - && priv->mac_state != MAC_CONNECTED) {
117356 - printk(KERN_INFO "%s: DeAuth in state %s ignored\n",
117357 - priv->netdev->name, mac_states[priv->mac_state]);
117358 - return;
117359 - }
117360 + at76_dbg(DBG_DEVSTART, "board %u, int %d:%d, ext %d:%d", board_type,
117361 + le32_to_cpu(fwh->int_fw_offset), le32_to_cpu(fwh->int_fw_len),
117362 + le32_to_cpu(fwh->ext_fw_offset), le32_to_cpu(fwh->ext_fw_len));
117363 + at76_dbg(DBG_DEVSTART, "firmware id %s", str);
117364
117365 - BUG_ON(!priv->curr_bss);
117366 +exit:
117367 + mutex_unlock(&fw_mutex);
117368
117369 - /* Not our BSSID, ignore */
117370 - if (compare_ether_addr(mgmt->addr3, priv->curr_bss->bssid))
117371 - return;
117372 + if (fwe->loaded)
117373 + return fwe;
117374 + else
117375 + return NULL;
117376 +}
117377
117378 - /* Not for our STA and not broadcast, ignore */
117379 - if (compare_ether_addr(priv->netdev->dev_addr, mgmt->addr1)
117380 - && !is_broadcast_ether_addr(mgmt->addr1))
117381 - return;
117382 +static void at76_mac80211_tx_callback(struct urb *urb)
117383 +{
117384 + struct at76_priv *priv = urb->context;
117385 + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(priv->tx_skb);
117386
117387 - if (priv->mac_state == MAC_CONNECTED)
117388 - at76_iwevent_bss_disconnect(priv->netdev);
117389 + at76_dbg(DBG_MAC80211, "%s()", __func__);
117390
117391 - at76_set_mac_state(priv, MAC_JOINING);
117392 - schedule_work(&priv->work_join);
117393 - cancel_delayed_work(&priv->dwork_get_scan);
117394 - cancel_delayed_work(&priv->dwork_beacon);
117395 - cancel_delayed_work(&priv->dwork_auth);
117396 - cancel_delayed_work(&priv->dwork_assoc);
117397 -}
117398 -
117399 -static void at76_rx_mgmt_beacon(struct at76_priv *priv,
117400 - struct at76_rx_buffer *buf)
117401 -{
117402 - int varpar_len;
117403 - /* beacon content */
117404 - struct ieee80211_beacon *bdata = (struct ieee80211_beacon *)buf->packet;
117405 - struct ieee80211_hdr_3addr *mgmt = &bdata->header;
117406 -
117407 - struct list_head *lptr;
117408 - struct bss_info *match; /* entry matching addr3 with its bssid */
117409 - int new_entry = 0;
117410 - int len;
117411 - struct ieee80211_info_element *ie;
117412 - int have_ssid = 0;
117413 - int have_rates = 0;
117414 - int have_channel = 0;
117415 - int keep_going = 1;
117416 - unsigned long flags;
117417 -
117418 - spin_lock_irqsave(&priv->bss_list_spinlock, flags);
117419 - if (priv->mac_state == MAC_CONNECTED) {
117420 - /* in state MAC_CONNECTED we use the mgmt_timer to control
117421 - the beacon of the BSS */
117422 - BUG_ON(!priv->curr_bss);
117423 -
117424 - if (!compare_ether_addr(priv->curr_bss->bssid, mgmt->addr3)) {
117425 - /* We got our AP's beacon, defer the timeout handler.
117426 - Kill pending work first, as schedule_delayed_work()
117427 - won't do it. */
117428 - cancel_delayed_work(&priv->dwork_beacon);
117429 - schedule_delayed_work(&priv->dwork_beacon,
117430 - BEACON_TIMEOUT);
117431 - priv->curr_bss->rssi = buf->rssi;
117432 - priv->beacons_received++;
117433 - goto exit;
117434 - }
117435 + switch (urb->status) {
117436 + case 0:
117437 + /* success */
117438 + /* FIXME:
117439 + * is the frame really ACKed when tx_callback is called ? */
117440 + info->flags |= IEEE80211_TX_STAT_ACK;
117441 + break;
117442 + case -ENOENT:
117443 + case -ECONNRESET:
117444 + /* fail, urb has been unlinked */
117445 + /* FIXME: add error message */
117446 + break;
117447 + default:
117448 + at76_dbg(DBG_URB, "%s - nonzero tx status received: %d",
117449 + __func__, urb->status);
117450 + break;
117451 }
117452
117453 - /* look if we have this BSS already in the list */
117454 - match = NULL;
117455 + memset(&info->status, 0, sizeof(info->status));
117456
117457 - if (!list_empty(&priv->bss_list)) {
117458 - list_for_each(lptr, &priv->bss_list) {
117459 - struct bss_info *bss_ptr =
117460 - list_entry(lptr, struct bss_info, list);
117461 - if (!compare_ether_addr(bss_ptr->bssid, mgmt->addr3)) {
117462 - match = bss_ptr;
117463 - break;
117464 - }
117465 - }
117466 + ieee80211_tx_status_irqsafe(priv->hw, priv->tx_skb);
117467 +
117468 + priv->tx_skb = NULL;
117469 +
117470 + ieee80211_wake_queues(priv->hw);
117471 +}
117472 +
117473 +static int at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
117474 +{
117475 + struct at76_priv *priv = hw->priv;
117476 + struct at76_tx_buffer *tx_buffer = priv->bulk_out_buffer;
117477 + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
117478 + int padding, submit_len, ret;
117479 +
117480 + at76_dbg(DBG_MAC80211, "%s()", __func__);
117481 +
117482 + if (priv->tx_urb->status == -EINPROGRESS) {
117483 + printk(KERN_ERR "%s: %s called while tx urb is pending\n",
117484 + wiphy_name(priv->hw->wiphy), __func__);
117485 + return NETDEV_TX_BUSY;
117486 }
117487
117488 - if (!match) {
117489 - /* BSS not in the list - append it */
117490 - match = kzalloc(sizeof(struct bss_info), GFP_ATOMIC);
117491 - if (!match) {
117492 - at76_dbg(DBG_BSS_TABLE,
117493 - "%s: cannot kmalloc new bss info (%zd byte)",
117494 - priv->netdev->name, sizeof(struct bss_info));
117495 - goto exit;
117496 - }
117497 - new_entry = 1;
117498 - list_add_tail(&match->list, &priv->bss_list);
117499 + ieee80211_stop_queues(hw);
117500 +
117501 + at76_ledtrig_tx_activity(); /* tell ledtrigger we send a packet */
117502 +
117503 + WARN_ON(priv->tx_skb != NULL);
117504 +
117505 + priv->tx_skb = skb;
117506 + padding = at76_calc_padding(skb->len);
117507 + submit_len = AT76_TX_HDRLEN + skb->len + padding;
117508 +
117509 + /* setup 'Atmel' header */
117510 + memset(tx_buffer, 0, sizeof(*tx_buffer));
117511 + tx_buffer->padding = padding;
117512 + tx_buffer->wlength = cpu_to_le16(skb->len);
117513 + tx_buffer->tx_rate = ieee80211_get_tx_rate(hw, info)->hw_value;
117514 + if (FIRMWARE_IS_WPA(priv->fw_version) && info->control.hw_key) {
117515 + tx_buffer->key_id = (info->control.hw_key->keyidx);
117516 + tx_buffer->cipher_type =
117517 + priv->keys[info->control.hw_key->keyidx].cipher;
117518 + tx_buffer->cipher_length =
117519 + priv->keys[info->control.hw_key->keyidx].keylen;
117520 + tx_buffer->reserved = 0;
117521 + } else {
117522 + tx_buffer->key_id = 0;
117523 + tx_buffer->cipher_type = 0;
117524 + tx_buffer->cipher_length = 0;
117525 + tx_buffer->reserved = 0;
117526 + };
117527 + /* memset(tx_buffer->reserved, 0, sizeof(tx_buffer->reserved)); */
117528 + memcpy(tx_buffer->packet, skb->data, skb->len);
117529 +
117530 + at76_dbg(DBG_TX_DATA, "%s tx: wlen 0x%x pad 0x%x rate %d hdr",
117531 + wiphy_name(priv->hw->wiphy), le16_to_cpu(tx_buffer->wlength),
117532 + tx_buffer->padding, tx_buffer->tx_rate);
117533 +
117534 + /* send stuff */
117535 + at76_dbg_dump(DBG_TX_DATA_CONTENT, tx_buffer, submit_len,
117536 + "%s(): tx_buffer %d bytes:", __func__, submit_len);
117537 + usb_fill_bulk_urb(priv->tx_urb, priv->udev, priv->tx_pipe, tx_buffer,
117538 + submit_len, at76_mac80211_tx_callback, priv);
117539 + ret = usb_submit_urb(priv->tx_urb, GFP_ATOMIC);
117540 + if (ret) {
117541 + printk(KERN_ERR "%s: error in tx submit urb: %d\n",
117542 + wiphy_name(priv->hw->wiphy), ret);
117543 + if (ret == -EINVAL)
117544 + printk(KERN_ERR
117545 + "%s: -EINVAL: tx urb %p hcpriv %p complete %p\n",
117546 + wiphy_name(priv->hw->wiphy), priv->tx_urb,
117547 + priv->tx_urb->hcpriv, priv->tx_urb->complete);
117548 }
117549
117550 - match->capa = le16_to_cpu(bdata->capability);
117551 - match->beacon_interval = le16_to_cpu(bdata->beacon_interval);
117552 - match->rssi = buf->rssi;
117553 - match->link_qual = buf->link_quality;
117554 - match->noise_level = buf->noise_level;
117555 - memcpy(match->bssid, mgmt->addr3, ETH_ALEN);
117556 - at76_dbg(DBG_RX_BEACON, "%s: bssid %s", priv->netdev->name,
117557 - mac2str(match->bssid));
117558 -
117559 - ie = bdata->info_element;
117560 -
117561 - /* length of var length beacon parameters */
117562 - varpar_len = min_t(int, le16_to_cpu(buf->wlength) -
117563 - sizeof(struct ieee80211_beacon),
117564 - BEACON_MAX_DATA_LENGTH);
117565 -
117566 - /* This routine steps through the bdata->data array to get
117567 - * some useful information about the access point.
117568 - * Currently, this implementation supports receipt of: SSID,
117569 - * supported transfer rates and channel, in any order, with some
117570 - * tolerance for intermittent unknown codes (although this
117571 - * functionality may not be necessary as the useful information will
117572 - * usually arrive in consecutively, but there have been some
117573 - * reports of some of the useful information fields arriving in a
117574 - * different order).
117575 - * It does not support any more IE types although MFIE_TYPE_TIM may
117576 - * be supported (on my AP at least).
117577 - * The bdata->data array is about 1500 bytes long but only ~36 of those
117578 - * bytes are useful, hence the have_ssid etc optimizations. */
117579 -
117580 - while (keep_going &&
117581 - ((&ie->data[ie->len] - (u8 *)bdata->info_element) <=
117582 - varpar_len)) {
117583 + return 0;
117584 +}
117585
117586 - switch (ie->id) {
117587 +static int at76_mac80211_start(struct ieee80211_hw *hw)
117588 +{
117589 + struct at76_priv *priv = hw->priv;
117590 + int ret;
117591
117592 - case MFIE_TYPE_SSID:
117593 - if (have_ssid)
117594 - break;
117595 + at76_dbg(DBG_MAC80211, "%s()", __func__);
117596
117597 - len = min_t(int, IW_ESSID_MAX_SIZE, ie->len);
117598 + mutex_lock(&priv->mtx);
117599
117600 - /* we copy only if this is a new entry,
117601 - or the incoming SSID is not a hidden SSID. This
117602 - will protect us from overwriting a real SSID read
117603 - in a ProbeResponse with a hidden one from a
117604 - following beacon. */
117605 - if (!new_entry && at76_is_hidden_ssid(ie->data, len)) {
117606 - have_ssid = 1;
117607 - break;
117608 - }
117609 + ret = at76_submit_rx_urb(priv);
117610 + if (ret < 0) {
117611 + printk(KERN_ERR "%s: open: submit_rx_urb failed: %d\n",
117612 + wiphy_name(priv->hw->wiphy), ret);
117613 + goto error;
117614 + }
117615
117616 - match->ssid_len = len;
117617 - memcpy(match->ssid, ie->data, len);
117618 - at76_dbg(DBG_RX_BEACON, "%s: SSID - %.*s",
117619 - priv->netdev->name, len, match->ssid);
117620 - have_ssid = 1;
117621 - break;
117622 + at76_startup_device(priv);
117623
117624 - case MFIE_TYPE_RATES:
117625 - if (have_rates)
117626 - break;
117627 + at76_start_monitor(priv);
117628
117629 - match->rates_len =
117630 - min_t(int, sizeof(match->rates), ie->len);
117631 - memcpy(match->rates, ie->data, match->rates_len);
117632 - have_rates = 1;
117633 - at76_dbg(DBG_RX_BEACON, "%s: SUPPORTED RATES %s",
117634 - priv->netdev->name,
117635 - hex2str(ie->data, ie->len));
117636 - break;
117637 +error:
117638 + mutex_unlock(&priv->mtx);
117639
117640 - case MFIE_TYPE_DS_SET:
117641 - if (have_channel)
117642 - break;
117643 + return 0;
117644 +}
117645
117646 - match->channel = ie->data[0];
117647 - have_channel = 1;
117648 - at76_dbg(DBG_RX_BEACON, "%s: CHANNEL - %d",
117649 - priv->netdev->name, match->channel);
117650 - break;
117651 +static void at76_mac80211_stop(struct ieee80211_hw *hw)
117652 +{
117653 + struct at76_priv *priv = hw->priv;
117654
117655 - case MFIE_TYPE_CF_SET:
117656 - case MFIE_TYPE_TIM:
117657 - case MFIE_TYPE_IBSS_SET:
117658 - default:
117659 - at76_dbg(DBG_RX_BEACON, "%s: beacon IE id %d len %d %s",
117660 - priv->netdev->name, ie->id, ie->len,
117661 - hex2str(ie->data, ie->len));
117662 - break;
117663 - }
117664 + at76_dbg(DBG_MAC80211, "%s()", __func__);
117665
117666 - /* advance to the next informational element */
117667 - next_ie(&ie);
117668 + mutex_lock(&priv->mtx);
117669 +
117670 + if (!priv->device_unplugged) {
117671 + /* We are called by "ifconfig ethX down", not because the
117672 + * device is not available anymore. */
117673 + if (at76_set_radio(priv, 0) == 1)
117674 + at76_wait_completion(priv, CMD_RADIO_ON);
117675 +
117676 + /* We unlink rx_urb because at76_open() re-submits it.
117677 + * If unplugged, at76_delete_device() takes care of it. */
117678 + usb_kill_urb(priv->rx_urb);
117679 + }
117680 +
117681 + mutex_unlock(&priv->mtx);
117682 +}
117683 +
117684 +static int at76_add_interface(struct ieee80211_hw *hw,
117685 + struct ieee80211_if_init_conf *conf)
117686 +{
117687 + struct at76_priv *priv = hw->priv;
117688 + int ret = 0;
117689
117690 - /* Optimization: after all, the bdata->data array is
117691 - * varpar_len bytes long, whereas we get all of the useful
117692 - * information after only ~36 bytes, this saves us a lot of
117693 - * time (and trouble as the remaining portion of the array
117694 - * could be full of junk)
117695 - * Comment this out if you want to see what other information
117696 - * comes from the AP - although little of it may be useful */
117697 - }
117698 + at76_dbg(DBG_MAC80211, "%s()", __func__);
117699
117700 - at76_dbg(DBG_RX_BEACON, "%s: Finished processing beacon data",
117701 - priv->netdev->name);
117702 + mutex_lock(&priv->mtx);
117703
117704 - match->last_rx = jiffies; /* record last rx of beacon */
117705 + switch (conf->type) {
117706 + case NL80211_IFTYPE_STATION:
117707 + priv->iw_mode = IW_MODE_INFRA;
117708 + break;
117709 + default:
117710 + ret = -EOPNOTSUPP;
117711 + goto exit;
117712 + }
117713
117714 exit:
117715 - spin_unlock_irqrestore(&priv->bss_list_spinlock, flags);
117716 + mutex_unlock(&priv->mtx);
117717 +
117718 + return ret;
117719 }
117720
117721 -/* Calculate the link level from a given rx_buffer */
117722 -static void at76_calc_level(struct at76_priv *priv, struct at76_rx_buffer *buf,
117723 - struct iw_quality *qual)
117724 +static void at76_remove_interface(struct ieee80211_hw *hw,
117725 + struct ieee80211_if_init_conf *conf)
117726 {
117727 - /* just a guess for now, might be different for other chips */
117728 - int max_rssi = 42;
117729 -
117730 - qual->level = (buf->rssi * 100 / max_rssi);
117731 - if (qual->level > 100)
117732 - qual->level = 100;
117733 - qual->updated |= IW_QUAL_LEVEL_UPDATED;
117734 + at76_dbg(DBG_MAC80211, "%s()", __func__);
117735 }
117736
117737 -/* Calculate the link quality from a given rx_buffer */
117738 -static void at76_calc_qual(struct at76_priv *priv, struct at76_rx_buffer *buf,
117739 - struct iw_quality *qual)
117740 +static int at76_join(struct at76_priv *priv)
117741 {
117742 - if (at76_is_intersil(priv->board_type))
117743 - qual->qual = buf->link_quality;
117744 - else {
117745 - unsigned long elapsed;
117746 + struct at76_req_join join;
117747 + int ret;
117748
117749 - /* Update qual at most once a second */
117750 - elapsed = jiffies - priv->beacons_last_qual;
117751 - if (elapsed < 1 * HZ)
117752 - return;
117753 + memset(&join, 0, sizeof(struct at76_req_join));
117754 + memcpy(join.essid, priv->essid, priv->essid_size);
117755 + join.essid_size = priv->essid_size;
117756 + memcpy(join.bssid, priv->bssid, ETH_ALEN);
117757 + join.bss_type = INFRASTRUCTURE_MODE;
117758 + join.channel = priv->channel;
117759 + join.timeout = cpu_to_le16(2000);
117760
117761 - qual->qual = qual->level * priv->beacons_received *
117762 - msecs_to_jiffies(priv->beacon_period) / elapsed;
117763 + at76_dbg(DBG_MAC80211, "%s: sending CMD_JOIN", __func__);
117764 + ret = at76_set_card_command(priv->udev, CMD_JOIN, &join,
117765 + sizeof(struct at76_req_join));
117766
117767 - priv->beacons_last_qual = jiffies;
117768 - priv->beacons_received = 0;
117769 + if (ret < 0) {
117770 + printk(KERN_ERR "%s: at76_set_card_command failed: %d\n",
117771 + wiphy_name(priv->hw->wiphy), ret);
117772 + return 0;
117773 }
117774 - qual->qual = (qual->qual > 100) ? 100 : qual->qual;
117775 - qual->updated |= IW_QUAL_QUAL_UPDATED;
117776 -}
117777
117778 -/* Calculate the noise quality from a given rx_buffer */
117779 -static void at76_calc_noise(struct at76_priv *priv, struct at76_rx_buffer *buf,
117780 - struct iw_quality *qual)
117781 -{
117782 - qual->noise = 0;
117783 - qual->updated |= IW_QUAL_NOISE_INVALID;
117784 -}
117785 + ret = at76_wait_completion(priv, CMD_JOIN);
117786 + at76_dbg(DBG_MAC80211, "%s: CMD_JOIN returned: 0x%02x", __func__, ret);
117787 + if (ret != CMD_STATUS_COMPLETE) {
117788 + printk(KERN_ERR "%s: at76_wait_completion failed: %d\n",
117789 + wiphy_name(priv->hw->wiphy), ret);
117790 + return 0;
117791 + }
117792
117793 -static void at76_update_wstats(struct at76_priv *priv,
117794 - struct at76_rx_buffer *buf)
117795 -{
117796 - struct iw_quality *qual = &priv->wstats.qual;
117797 + at76_set_tkip_bssid(priv, priv->bssid);
117798 + at76_set_pm_mode(priv);
117799
117800 - if (buf->rssi && priv->mac_state == MAC_CONNECTED) {
117801 - qual->updated = 0;
117802 - at76_calc_level(priv, buf, qual);
117803 - at76_calc_qual(priv, buf, qual);
117804 - at76_calc_noise(priv, buf, qual);
117805 - } else {
117806 - qual->qual = 0;
117807 - qual->level = 0;
117808 - qual->noise = 0;
117809 - qual->updated = IW_QUAL_ALL_INVALID;
117810 - }
117811 + return 0;
117812 }
117813
117814 -static void at76_rx_mgmt(struct at76_priv *priv, struct at76_rx_buffer *buf)
117815 -{
117816 - struct ieee80211_hdr_3addr *mgmt =
117817 - (struct ieee80211_hdr_3addr *)buf->packet;
117818 - u16 framectl = le16_to_cpu(mgmt->frame_ctl);
117819 -
117820 - /* update wstats */
117821 - if (priv->mac_state != MAC_INIT && priv->mac_state != MAC_SCANNING) {
117822 - /* jal: this is a dirty hack needed by Tim in ad-hoc mode */
117823 - /* Data packets always seem to have a 0 link level, so we
117824 - only read link quality info from management packets.
117825 - Atmel driver actually averages the present, and previous
117826 - values, we just present the raw value at the moment - TJS */
117827 - if (priv->iw_mode == IW_MODE_ADHOC
117828 - || (priv->curr_bss
117829 - && !compare_ether_addr(mgmt->addr3,
117830 - priv->curr_bss->bssid)))
117831 - at76_update_wstats(priv, buf);
117832 - }
117833 -
117834 - at76_dbg(DBG_RX_MGMT_CONTENT, "%s rx mgmt framectl 0x%x %s",
117835 - priv->netdev->name, framectl,
117836 - hex2str(mgmt, le16_to_cpu(buf->wlength)));
117837 -
117838 - switch (framectl & IEEE80211_FCTL_STYPE) {
117839 - case IEEE80211_STYPE_BEACON:
117840 - case IEEE80211_STYPE_PROBE_RESP:
117841 - at76_rx_mgmt_beacon(priv, buf);
117842 - break;
117843 +static void at76_dwork_hw_scan(struct work_struct *work)
117844 +{
117845 + struct at76_priv *priv = container_of(work, struct at76_priv,
117846 + dwork_hw_scan.work);
117847 + int ret;
117848
117849 - case IEEE80211_STYPE_ASSOC_RESP:
117850 - at76_rx_mgmt_assoc(priv, buf);
117851 - break;
117852 + ret = at76_get_cmd_status(priv->udev, CMD_SCAN);
117853 + at76_dbg(DBG_MAC80211, "%s: CMD_SCAN status 0x%02x", __func__, ret);
117854
117855 - case IEEE80211_STYPE_DISASSOC:
117856 - at76_rx_mgmt_disassoc(priv, buf);
117857 - break;
117858 + /* FIXME: add maximum time for scan to complete */
117859
117860 - case IEEE80211_STYPE_AUTH:
117861 - at76_rx_mgmt_auth(priv, buf);
117862 - break;
117863 + if (ret != CMD_STATUS_COMPLETE) {
117864 + queue_delayed_work(priv->hw->workqueue, &priv->dwork_hw_scan,
117865 + SCAN_POLL_INTERVAL);
117866 + goto exit;
117867 + }
117868
117869 - case IEEE80211_STYPE_DEAUTH:
117870 - at76_rx_mgmt_deauth(priv, buf);
117871 - break;
117872 + ieee80211_scan_completed(priv->hw);
117873
117874 - default:
117875 - printk(KERN_DEBUG "%s: ignoring frame with framectl 0x%04x\n",
117876 - priv->netdev->name, framectl);
117877 + if (is_valid_ether_addr(priv->bssid)) {
117878 + ieee80211_wake_queues(priv->hw);
117879 + at76_join(priv);
117880 }
117881
117882 + ieee80211_wake_queues(priv->hw);
117883 +
117884 +exit:
117885 return;
117886 }
117887
117888 -/* Convert the 802.11 header into an ethernet-style header, make skb
117889 - * ready for consumption by netif_rx() */
117890 -static void at76_ieee80211_to_eth(struct sk_buff *skb, int iw_mode)
117891 -{
117892 - struct ieee80211_hdr_3addr *i802_11_hdr;
117893 - struct ethhdr *eth_hdr_p;
117894 - u8 *src_addr;
117895 - u8 *dest_addr;
117896 -
117897 - i802_11_hdr = (struct ieee80211_hdr_3addr *)skb->data;
117898 -
117899 - /* That would be the ethernet header if the hardware converted
117900 - * the frame for us. Make sure the source and the destination
117901 - * match the 802.11 header. Which hardware does it? */
117902 - eth_hdr_p = (struct ethhdr *)skb_pull(skb, IEEE80211_3ADDR_LEN);
117903 -
117904 - dest_addr = i802_11_hdr->addr1;
117905 - if (iw_mode == IW_MODE_ADHOC)
117906 - src_addr = i802_11_hdr->addr2;
117907 - else
117908 - src_addr = i802_11_hdr->addr3;
117909 -
117910 - if (!compare_ether_addr(eth_hdr_p->h_source, src_addr) &&
117911 - !compare_ether_addr(eth_hdr_p->h_dest, dest_addr))
117912 - /* Yes, we already have an ethernet header */
117913 - skb_reset_mac_header(skb);
117914 - else {
117915 - u16 len;
117916 -
117917 - /* Need to build an ethernet header */
117918 - if (!memcmp(skb->data, snapsig, sizeof(snapsig))) {
117919 - /* SNAP frame - decapsulate, keep proto */
117920 - skb_push(skb, offsetof(struct ethhdr, h_proto) -
117921 - sizeof(rfc1042sig));
117922 - len = 0;
117923 - } else {
117924 - /* 802.3 frame, proto is length */
117925 - len = skb->len;
117926 - skb_push(skb, ETH_HLEN);
117927 - }
117928 -
117929 - skb_reset_mac_header(skb);
117930 - eth_hdr_p = eth_hdr(skb);
117931 - /* This needs to be done in this order (eth_hdr_p->h_dest may
117932 - * overlap src_addr) */
117933 - memcpy(eth_hdr_p->h_source, src_addr, ETH_ALEN);
117934 - memcpy(eth_hdr_p->h_dest, dest_addr, ETH_ALEN);
117935 - if (len)
117936 - eth_hdr_p->h_proto = htons(len);
117937 - }
117938 -
117939 - skb->protocol = eth_type_trans(skb, skb->dev);
117940 -}
117941 -
117942 -/* Check for fragmented data in priv->rx_skb. If the packet was no fragment
117943 - or it was the last of a fragment set a skb containing the whole packet
117944 - is returned for further processing. Otherwise we get NULL and are
117945 - done and the packet is either stored inside the fragment buffer
117946 - or thrown away. Every returned skb starts with the ieee802_11 header
117947 - and contains _no_ FCS at the end */
117948 -static struct sk_buff *at76_check_for_rx_frags(struct at76_priv *priv)
117949 +static int at76_hw_scan(struct ieee80211_hw *hw, u8 *ssid, size_t len)
117950 {
117951 - struct sk_buff *skb = priv->rx_skb;
117952 - struct at76_rx_buffer *buf = (struct at76_rx_buffer *)skb->data;
117953 - struct ieee80211_hdr_3addr *i802_11_hdr =
117954 - (struct ieee80211_hdr_3addr *)buf->packet;
117955 - /* seq_ctrl, fragment_number, sequence number of new packet */
117956 - u16 sctl = le16_to_cpu(i802_11_hdr->seq_ctl);
117957 - u16 fragnr = sctl & 0xf;
117958 - u16 seqnr = sctl >> 4;
117959 - u16 frame_ctl = le16_to_cpu(i802_11_hdr->frame_ctl);
117960 -
117961 - /* Length including the IEEE802.11 header, but without the trailing
117962 - * FCS and without the Atmel Rx header */
117963 - int length = le16_to_cpu(buf->wlength) - IEEE80211_FCS_LEN;
117964 -
117965 - /* where does the data payload start in skb->data ? */
117966 - u8 *data = i802_11_hdr->payload;
117967 -
117968 - /* length of payload, excl. the trailing FCS */
117969 - int data_len = length - IEEE80211_3ADDR_LEN;
117970 -
117971 - int i;
117972 - struct rx_data_buf *bptr, *optr;
117973 - unsigned long oldest = ~0UL;
117974 -
117975 - at76_dbg(DBG_RX_FRAGS,
117976 - "%s: rx data frame_ctl %04x addr2 %s seq/frag %d/%d "
117977 - "length %d data %d: %s ...", priv->netdev->name, frame_ctl,
117978 - mac2str(i802_11_hdr->addr2), seqnr, fragnr, length, data_len,
117979 - hex2str(data, 32));
117980 -
117981 - at76_dbg(DBG_RX_FRAGS_SKB, "%s: incoming skb: head %p data %p "
117982 - "tail %p end %p len %d", priv->netdev->name, skb->head,
117983 - skb->data, skb_tail_pointer(skb), skb_end_pointer(skb),
117984 - skb->len);
117985 -
117986 - if (data_len < 0) {
117987 - /* make sure data starts in the buffer */
117988 - printk(KERN_INFO "%s: data frame too short\n",
117989 - priv->netdev->name);
117990 - return NULL;
117991 - }
117992 -
117993 - WARN_ON(length <= AT76_RX_HDRLEN);
117994 - if (length <= AT76_RX_HDRLEN)
117995 - return NULL;
117996 + struct at76_priv *priv = hw->priv;
117997 + struct at76_req_scan scan;
117998 + int ret;
117999
118000 - /* remove the at76_rx_buffer header - we don't need it anymore */
118001 - /* we need the IEEE802.11 header (for the addresses) if this packet
118002 - is the first of a chain */
118003 - skb_pull(skb, AT76_RX_HDRLEN);
118004 -
118005 - /* remove FCS at end */
118006 - skb_trim(skb, length);
118007 -
118008 - at76_dbg(DBG_RX_FRAGS_SKB, "%s: trimmed skb: head %p data %p tail %p "
118009 - "end %p len %d data %p data_len %d", priv->netdev->name,
118010 - skb->head, skb->data, skb_tail_pointer(skb),
118011 - skb_end_pointer(skb), skb->len, data, data_len);
118012 -
118013 - if (fragnr == 0 && !(frame_ctl & IEEE80211_FCTL_MOREFRAGS)) {
118014 - /* unfragmented packet received */
118015 - /* Use a new skb for the next receive */
118016 - priv->rx_skb = NULL;
118017 - at76_dbg(DBG_RX_FRAGS, "%s: unfragmented", priv->netdev->name);
118018 - return skb;
118019 - }
118020 -
118021 - /* look if we've got a chain for the sender address.
118022 - afterwards optr points to first free or the oldest entry,
118023 - or, if i < NR_RX_DATA_BUF, bptr points to the entry for the
118024 - sender address */
118025 - /* determining the oldest entry doesn't cope with jiffies wrapping
118026 - but I don't care to delete a young entry at these rare moments ... */
118027 -
118028 - bptr = priv->rx_data;
118029 - optr = NULL;
118030 - for (i = 0; i < NR_RX_DATA_BUF; i++, bptr++) {
118031 - if (!bptr->skb) {
118032 - optr = bptr;
118033 - oldest = 0UL;
118034 - continue;
118035 - }
118036 + at76_dbg(DBG_MAC80211, "%s():", __func__);
118037 + at76_dbg_dump(DBG_MAC80211, ssid, len, "ssid %zd bytes:", len);
118038
118039 - if (!compare_ether_addr(i802_11_hdr->addr2, bptr->sender))
118040 - break;
118041 + mutex_lock(&priv->mtx);
118042
118043 - if (!optr) {
118044 - optr = bptr;
118045 - oldest = bptr->last_rx;
118046 - } else if (bptr->last_rx < oldest)
118047 - optr = bptr;
118048 - }
118049 -
118050 - if (i < NR_RX_DATA_BUF) {
118051 -
118052 - at76_dbg(DBG_RX_FRAGS, "%s: %d. cacheentry (seq/frag = %d/%d) "
118053 - "matched sender addr",
118054 - priv->netdev->name, i, bptr->seqnr, bptr->fragnr);
118055 -
118056 - /* bptr points to an entry for the sender address */
118057 - if (bptr->seqnr == seqnr) {
118058 - int left;
118059 - /* the fragment has the current sequence number */
118060 - if (((bptr->fragnr + 1) & 0xf) != fragnr) {
118061 - /* wrong fragment number -> ignore it */
118062 - /* is & 0xf necessary above ??? */
118063 - at76_dbg(DBG_RX_FRAGS,
118064 - "%s: frag nr mismatch: %d + 1 != %d",
118065 - priv->netdev->name, bptr->fragnr,
118066 - fragnr);
118067 - return NULL;
118068 - }
118069 - bptr->last_rx = jiffies;
118070 - /* the next following fragment number ->
118071 - add the data at the end */
118072 -
118073 - /* for test only ??? */
118074 - left = skb_tailroom(bptr->skb);
118075 - if (left < data_len)
118076 - printk(KERN_INFO
118077 - "%s: only %d byte free (need %d)\n",
118078 - priv->netdev->name, left, data_len);
118079 - else
118080 - memcpy(skb_put(bptr->skb, data_len), data,
118081 - data_len);
118082 -
118083 - bptr->fragnr = fragnr;
118084 - if (frame_ctl & IEEE80211_FCTL_MOREFRAGS)
118085 - return NULL;
118086 -
118087 - /* this was the last fragment - send it */
118088 - skb = bptr->skb;
118089 - bptr->skb = NULL; /* free the entry */
118090 - at76_dbg(DBG_RX_FRAGS, "%s: last frag of seq %d",
118091 - priv->netdev->name, seqnr);
118092 - return skb;
118093 - }
118094 + ieee80211_stop_queues(hw);
118095
118096 - /* got another sequence number */
118097 - if (fragnr == 0) {
118098 - /* it's the start of a new chain - replace the
118099 - old one by this */
118100 - /* bptr->sender has the correct value already */
118101 - at76_dbg(DBG_RX_FRAGS,
118102 - "%s: start of new seq %d, removing old seq %d",
118103 - priv->netdev->name, seqnr, bptr->seqnr);
118104 - bptr->seqnr = seqnr;
118105 - bptr->fragnr = 0;
118106 - bptr->last_rx = jiffies;
118107 - /* swap bptr->skb and priv->rx_skb */
118108 - skb = bptr->skb;
118109 - bptr->skb = priv->rx_skb;
118110 - priv->rx_skb = skb;
118111 - } else {
118112 - /* it from the middle of a new chain ->
118113 - delete the old entry and skip the new one */
118114 - at76_dbg(DBG_RX_FRAGS,
118115 - "%s: middle of new seq %d (%d) "
118116 - "removing old seq %d",
118117 - priv->netdev->name, seqnr, fragnr,
118118 - bptr->seqnr);
118119 - dev_kfree_skb(bptr->skb);
118120 - bptr->skb = NULL;
118121 - }
118122 - return NULL;
118123 + memset(&scan, 0, sizeof(struct at76_req_scan));
118124 + memset(scan.bssid, 0xFF, ETH_ALEN);
118125 + scan.scan_type = SCAN_TYPE_ACTIVE;
118126 + if (priv->essid_size > 0) {
118127 + memcpy(scan.essid, ssid, len);
118128 + scan.essid_size = len;
118129 }
118130 + scan.min_channel_time = cpu_to_le16(priv->scan_min_time);
118131 + scan.max_channel_time = cpu_to_le16(priv->scan_max_time);
118132 + scan.probe_delay = cpu_to_le16(priv->scan_min_time * 1000);
118133 + scan.international_scan = 0;
118134
118135 - /* if we didn't find a chain for the sender address, optr
118136 - points either to the first free or the oldest entry */
118137 + at76_dbg(DBG_MAC80211, "%s: sending CMD_SCAN", __func__);
118138 + ret = at76_set_card_command(priv->udev, CMD_SCAN, &scan, sizeof(scan));
118139
118140 - if (fragnr != 0) {
118141 - /* this is not the begin of a fragment chain ... */
118142 - at76_dbg(DBG_RX_FRAGS,
118143 - "%s: no chain for non-first fragment (%d)",
118144 - priv->netdev->name, fragnr);
118145 - return NULL;
118146 + if (ret < 0) {
118147 + err("CMD_SCAN failed: %d", ret);
118148 + goto exit;
118149 }
118150
118151 - BUG_ON(!optr);
118152 - if (optr->skb) {
118153 - /* swap the skb's */
118154 - skb = optr->skb;
118155 - optr->skb = priv->rx_skb;
118156 - priv->rx_skb = skb;
118157 -
118158 - at76_dbg(DBG_RX_FRAGS,
118159 - "%s: free old contents: sender %s seq/frag %d/%d",
118160 - priv->netdev->name, mac2str(optr->sender),
118161 - optr->seqnr, optr->fragnr);
118162 + queue_delayed_work(priv->hw->workqueue, &priv->dwork_hw_scan,
118163 + SCAN_POLL_INTERVAL);
118164
118165 - } else {
118166 - /* take the skb from priv->rx_skb */
118167 - optr->skb = priv->rx_skb;
118168 - /* let at76_submit_rx_urb() allocate a new skb */
118169 - priv->rx_skb = NULL;
118170 -
118171 - at76_dbg(DBG_RX_FRAGS, "%s: use a free entry",
118172 - priv->netdev->name);
118173 - }
118174 - memcpy(optr->sender, i802_11_hdr->addr2, ETH_ALEN);
118175 - optr->seqnr = seqnr;
118176 - optr->fragnr = 0;
118177 - optr->last_rx = jiffies;
118178 +exit:
118179 + mutex_unlock(&priv->mtx);
118180
118181 - return NULL;
118182 + return 0;
118183 }
118184
118185 -/* Rx interrupt: we expect the complete data buffer in priv->rx_skb */
118186 -static void at76_rx_data(struct at76_priv *priv)
118187 +static int at76_config(struct ieee80211_hw *hw, u32 changed)
118188 {
118189 - struct net_device *netdev = priv->netdev;
118190 - struct net_device_stats *stats = &priv->stats;
118191 - struct sk_buff *skb = priv->rx_skb;
118192 - struct at76_rx_buffer *buf = (struct at76_rx_buffer *)skb->data;
118193 - struct ieee80211_hdr_3addr *i802_11_hdr;
118194 - int length = le16_to_cpu(buf->wlength);
118195 -
118196 - at76_dbg(DBG_RX_DATA, "%s received data packet: %s", netdev->name,
118197 - hex2str(skb->data, AT76_RX_HDRLEN));
118198 + struct at76_priv *priv = hw->priv;
118199 + struct ieee80211_conf *conf = &hw->conf;
118200
118201 - at76_dbg(DBG_RX_DATA_CONTENT, "rx packet: %s",
118202 - hex2str(skb->data + AT76_RX_HDRLEN, length));
118203 + at76_dbg(DBG_MAC80211, "%s(): channel %d radio %d",
118204 + __func__, conf->channel->hw_value, conf->radio_enabled);
118205 + at76_dbg_dump(DBG_MAC80211, priv->essid, priv->essid_size, "ssid:");
118206 + at76_dbg_dump(DBG_MAC80211, priv->bssid, ETH_ALEN, "bssid:");
118207
118208 - skb = at76_check_for_rx_frags(priv);
118209 - if (!skb)
118210 - return;
118211 + mutex_lock(&priv->mtx);
118212
118213 - /* Atmel header and the FCS are already removed */
118214 - i802_11_hdr = (struct ieee80211_hdr_3addr *)skb->data;
118215 + priv->channel = conf->channel->hw_value;
118216
118217 - skb->dev = netdev;
118218 - skb->ip_summed = CHECKSUM_NONE; /* TODO: should check CRC */
118219 + if (is_valid_ether_addr(priv->bssid)) {
118220 + at76_join(priv);
118221 + ieee80211_wake_queues(priv->hw);
118222 + } else {
118223 + ieee80211_stop_queues(priv->hw);
118224 + at76_start_monitor(priv);
118225 + };
118226
118227 - if (is_broadcast_ether_addr(i802_11_hdr->addr1)) {
118228 - if (!compare_ether_addr(i802_11_hdr->addr1, netdev->broadcast))
118229 - skb->pkt_type = PACKET_BROADCAST;
118230 - else
118231 - skb->pkt_type = PACKET_MULTICAST;
118232 - } else if (compare_ether_addr(i802_11_hdr->addr1, netdev->dev_addr))
118233 - skb->pkt_type = PACKET_OTHERHOST;
118234 -
118235 - at76_ieee80211_to_eth(skb, priv->iw_mode);
118236 -
118237 - netdev->last_rx = jiffies;
118238 - netif_rx(skb);
118239 - stats->rx_packets++;
118240 - stats->rx_bytes += length;
118241 + mutex_unlock(&priv->mtx);
118242
118243 - return;
118244 + return 0;
118245 }
118246
118247 -static void at76_rx_monitor_mode(struct at76_priv *priv)
118248 +static int at76_config_interface(struct ieee80211_hw *hw,
118249 + struct ieee80211_vif *vif,
118250 + struct ieee80211_if_conf *conf)
118251 {
118252 - struct at76_rx_radiotap *rt;
118253 - u8 *payload;
118254 - int skblen;
118255 - struct net_device *netdev = priv->netdev;
118256 - struct at76_rx_buffer *buf =
118257 - (struct at76_rx_buffer *)priv->rx_skb->data;
118258 - /* length including the IEEE802.11 header and the trailing FCS,
118259 - but not at76_rx_buffer */
118260 - int length = le16_to_cpu(buf->wlength);
118261 - struct sk_buff *skb = priv->rx_skb;
118262 - struct net_device_stats *stats = &priv->stats;
118263 -
118264 - if (length < IEEE80211_FCS_LEN) {
118265 - /* buffer contains no data */
118266 - at76_dbg(DBG_MONITOR_MODE,
118267 - "%s: MONITOR MODE: rx skb without data",
118268 - priv->netdev->name);
118269 - return;
118270 - }
118271 -
118272 - skblen = sizeof(struct at76_rx_radiotap) + length;
118273 + struct at76_priv *priv = hw->priv;
118274
118275 - skb = dev_alloc_skb(skblen);
118276 - if (!skb) {
118277 - printk(KERN_ERR "%s: MONITOR MODE: dev_alloc_skb for radiotap "
118278 - "header returned NULL\n", priv->netdev->name);
118279 - return;
118280 - }
118281 + at76_dbg_dump(DBG_MAC80211, conf->bssid, ETH_ALEN, "bssid:");
118282
118283 - skb_put(skb, skblen);
118284 + mutex_lock(&priv->mtx);
118285
118286 - rt = (struct at76_rx_radiotap *)skb->data;
118287 - payload = skb->data + sizeof(struct at76_rx_radiotap);
118288 + memcpy(priv->bssid, conf->bssid, ETH_ALEN);
118289 +// memcpy(priv->essid, conf->ssid, conf->ssid_len);
118290 +// priv->essid_size = conf->ssid_len;
118291 +
118292 + if (is_valid_ether_addr(priv->bssid)) {
118293 + /* mac80211 is joining a bss */
118294 + ieee80211_wake_queues(priv->hw);
118295 + at76_join(priv);
118296 + } else
118297 + ieee80211_stop_queues(priv->hw);
118298
118299 - rt->rt_hdr.it_version = 0;
118300 - rt->rt_hdr.it_pad = 0;
118301 - rt->rt_hdr.it_len = cpu_to_le16(sizeof(struct at76_rx_radiotap));
118302 - rt->rt_hdr.it_present = cpu_to_le32(AT76_RX_RADIOTAP_PRESENT);
118303 -
118304 - rt->rt_tsft = cpu_to_le64(le32_to_cpu(buf->rx_time));
118305 - rt->rt_rate = hw_rates[buf->rx_rate] & (~0x80);
118306 - rt->rt_signal = buf->rssi;
118307 - rt->rt_noise = buf->noise_level;
118308 - rt->rt_flags = IEEE80211_RADIOTAP_F_FCS;
118309 - if (buf->fragmentation)
118310 - rt->rt_flags |= IEEE80211_RADIOTAP_F_FRAG;
118311 -
118312 - memcpy(payload, buf->packet, length);
118313 - skb->dev = netdev;
118314 - skb->ip_summed = CHECKSUM_NONE;
118315 - skb_reset_mac_header(skb);
118316 - skb->pkt_type = PACKET_OTHERHOST;
118317 - skb->protocol = htons(ETH_P_802_2);
118318 -
118319 - netdev->last_rx = jiffies;
118320 - netif_rx(skb);
118321 - stats->rx_packets++;
118322 - stats->rx_bytes += length;
118323 -}
118324 -
118325 -/* Check if we spy on the sender address in buf and update stats */
118326 -static void at76_iwspy_update(struct at76_priv *priv,
118327 - struct at76_rx_buffer *buf)
118328 -{
118329 - struct ieee80211_hdr_3addr *hdr =
118330 - (struct ieee80211_hdr_3addr *)buf->packet;
118331 - struct iw_quality qual;
118332 -
118333 - /* We can only set the level here */
118334 - qual.updated = IW_QUAL_QUAL_INVALID | IW_QUAL_NOISE_INVALID;
118335 - qual.level = 0;
118336 - qual.noise = 0;
118337 - at76_calc_level(priv, buf, &qual);
118338 + mutex_unlock(&priv->mtx);
118339
118340 - spin_lock_bh(&priv->spy_spinlock);
118341 + return 0;
118342 +}
118343
118344 - if (priv->spy_data.spy_number > 0)
118345 - wireless_spy_update(priv->netdev, hdr->addr2, &qual);
118346 +/* must be atomic */
118347 +static void at76_configure_filter(struct ieee80211_hw *hw,
118348 + unsigned int changed_flags,
118349 + unsigned int *total_flags, int mc_count,
118350 + struct dev_addr_list *mc_list)
118351 +{
118352 + struct at76_priv *priv = hw->priv;
118353 + int flags;
118354 +
118355 + at76_dbg(DBG_MAC80211, "%s(): changed_flags=0x%08x "
118356 + "total_flags=0x%08x mc_count=%d",
118357 + __func__, changed_flags, *total_flags, mc_count);
118358 +
118359 + flags = changed_flags & AT76_SUPPORTED_FILTERS;
118360 + *total_flags = AT76_SUPPORTED_FILTERS;
118361 +
118362 + /* FIXME: access to priv->promisc should be protected with
118363 + * priv->mtx, but it's impossible because this function needs to be
118364 + * atomic */
118365 +
118366 + if (flags && !priv->promisc) {
118367 + /* mac80211 wants us to enable promiscuous mode */
118368 + priv->promisc = 1;
118369 + } else if (!flags && priv->promisc) {
118370 + /* we need to disable promiscuous mode */
118371 + priv->promisc = 0;
118372 + } else
118373 + return;
118374
118375 - spin_unlock_bh(&priv->spy_spinlock);
118376 + queue_work(hw->workqueue, &priv->work_set_promisc);
118377 }
118378
118379 -static void at76_rx_tasklet(unsigned long param)
118380 +static int at76_set_key_oldfw(struct ieee80211_hw *hw, enum set_key_cmd cmd,
118381 + const u8 *local_address, const u8 *address,
118382 + struct ieee80211_key_conf *key)
118383 {
118384 - struct urb *urb = (struct urb *)param;
118385 - struct at76_priv *priv = urb->context;
118386 - struct net_device *netdev = priv->netdev;
118387 - struct at76_rx_buffer *buf;
118388 - struct ieee80211_hdr_3addr *i802_11_hdr;
118389 - u16 frame_ctl;
118390 -
118391 - if (priv->device_unplugged) {
118392 - at76_dbg(DBG_DEVSTART, "device unplugged");
118393 - if (urb)
118394 - at76_dbg(DBG_DEVSTART, "urb status %d", urb->status);
118395 - return;
118396 - }
118397 + struct at76_priv *priv = hw->priv;
118398
118399 - if (!priv->rx_skb || !netdev || !priv->rx_skb->data)
118400 - return;
118401 + int i;
118402
118403 - buf = (struct at76_rx_buffer *)priv->rx_skb->data;
118404 + at76_dbg(DBG_MAC80211, "%s(): cmd %d key->alg %d key->keyidx %d "
118405 + "key->keylen %d",
118406 + __func__, cmd, key->alg, key->keyidx, key->keylen);
118407
118408 - i802_11_hdr = (struct ieee80211_hdr_3addr *)buf->packet;
118409 + if (key->alg != ALG_WEP)
118410 + return -EOPNOTSUPP;
118411
118412 - frame_ctl = le16_to_cpu(i802_11_hdr->frame_ctl);
118413 + key->hw_key_idx = key->keyidx;
118414
118415 - if (urb->status != 0) {
118416 - if (urb->status != -ENOENT && urb->status != -ECONNRESET)
118417 - at76_dbg(DBG_URB,
118418 - "%s %s: - nonzero Rx bulk status received: %d",
118419 - __func__, netdev->name, urb->status);
118420 - return;
118421 - }
118422 + mutex_lock(&priv->mtx);
118423
118424 - at76_dbg(DBG_RX_ATMEL_HDR,
118425 - "%s: rx frame: rate %d rssi %d noise %d link %d %s",
118426 - priv->netdev->name, buf->rx_rate, buf->rssi, buf->noise_level,
118427 - buf->link_quality, hex2str(i802_11_hdr, 48));
118428 - if (priv->iw_mode == IW_MODE_MONITOR) {
118429 - at76_rx_monitor_mode(priv);
118430 - goto exit;
118431 - }
118432 + switch (cmd) {
118433 + case SET_KEY:
118434 + memcpy(priv->wep_keys[key->keyidx], key->key, key->keylen);
118435 + priv->wep_keys_len[key->keyidx] = key->keylen;
118436
118437 - /* there is a new bssid around, accept it: */
118438 - if (buf->newbss && priv->iw_mode == IW_MODE_ADHOC) {
118439 - at76_dbg(DBG_PROGRESS, "%s: rx newbss", netdev->name);
118440 - schedule_work(&priv->work_new_bss);
118441 - }
118442 + /* FIXME: find out how to do this properly */
118443 + priv->wep_key_id = key->keyidx;
118444
118445 - switch (frame_ctl & IEEE80211_FCTL_FTYPE) {
118446 - case IEEE80211_FTYPE_DATA:
118447 - at76_rx_data(priv);
118448 break;
118449 + case DISABLE_KEY:
118450 + default:
118451 + priv->wep_keys_len[key->keyidx] = 0;
118452 + break;
118453 + }
118454
118455 - case IEEE80211_FTYPE_MGMT:
118456 - /* jal: TODO: find out if we can update iwspy also on
118457 - other frames than management (might depend on the
118458 - radio chip / firmware version !) */
118459 + priv->wep_enabled = 0;
118460
118461 - at76_iwspy_update(priv, buf);
118462 + for (i = 0; i < WEP_KEYS; i++) {
118463 + if (priv->wep_keys_len[i] != 0)
118464 + priv->wep_enabled = 1;
118465 + }
118466
118467 - at76_rx_mgmt(priv, buf);
118468 - break;
118469 + at76_startup_device(priv);
118470
118471 - case IEEE80211_FTYPE_CTL:
118472 - at76_dbg(DBG_RX_CTRL, "%s: ignored ctrl frame: %04x",
118473 - priv->netdev->name, frame_ctl);
118474 - break;
118475 + mutex_unlock(&priv->mtx);
118476
118477 - default:
118478 - printk(KERN_DEBUG "%s: ignoring frame with framectl 0x%04x\n",
118479 - priv->netdev->name, frame_ctl);
118480 - }
118481 -exit:
118482 - at76_submit_rx_urb(priv);
118483 + return 0;
118484 }
118485
118486 -/* Load firmware into kernel memory and parse it */
118487 -static struct fwentry *at76_load_firmware(struct usb_device *udev,
118488 - enum board_type board_type)
118489 -{
118490 - int ret;
118491 - char *str;
118492 - struct at76_fw_header *fwh;
118493 - struct fwentry *fwe = &firmwares[board_type];
118494 +static int at76_set_key_newfw(struct ieee80211_hw *hw, enum set_key_cmd cmd,
118495 + const u8 *local_address, const u8 *address,
118496 + struct ieee80211_key_conf *key)
118497 +{
118498 + struct at76_priv *priv = hw->priv;
118499 + int ret = -EOPNOTSUPP;
118500 +
118501 + at76_dbg(DBG_MAC80211, "%s(): cmd %d key->alg %d key->keyidx %d "
118502 + "key->keylen %d",
118503 + __func__, cmd, key->alg, key->keyidx, key->keylen);
118504
118505 - mutex_lock(&fw_mutex);
118506 + mutex_lock(&priv->mtx);
118507
118508 - if (fwe->loaded) {
118509 - at76_dbg(DBG_FW, "re-using previously loaded fw");
118510 - goto exit;
118511 - }
118512 + priv->mib_buf.type = MIB_MAC_ENCRYPTION;
118513
118514 - at76_dbg(DBG_FW, "downloading firmware %s", fwe->fwname);
118515 - ret = request_firmware(&fwe->fw, fwe->fwname, &udev->dev);
118516 - if (ret < 0) {
118517 - dev_printk(KERN_ERR, &udev->dev, "firmware %s not found!\n",
118518 - fwe->fwname);
118519 - dev_printk(KERN_ERR, &udev->dev,
118520 - "you may need to download the firmware from "
118521 - "http://developer.berlios.de/projects/at76c503a/");
118522 + if (cmd == DISABLE_KEY) {
118523 + priv->mib_buf.size = CIPHER_KEY_LEN;
118524 + priv->mib_buf.index = offsetof(struct mib_mac_encryption,
118525 + cipher_default_keyvalue[key->keyidx]);
118526 + memset(priv->mib_buf.data.data, 0, CIPHER_KEY_LEN);
118527 + if (at76_set_mib(priv, &priv->mib_buf) != CMD_STATUS_COMPLETE)
118528 + ret = -EOPNOTSUPP; /* -EIO would be probably better */
118529 + else {
118530 +
118531 + priv->keys[key->keyidx].cipher = CIPHER_NONE;
118532 + priv->keys[key->keyidx].keylen = 0;
118533 + };
118534 + if (priv->default_group_key == key->keyidx)
118535 + priv->default_group_key = 0xff;
118536 +
118537 + if (priv->default_pairwise_key == key->keyidx)
118538 + priv->default_pairwise_key = 0xff;
118539 + /* If default pairwise key is removed, fall back to
118540 + * group key? */
118541 + ret = 0;
118542 goto exit;
118543 - }
118544 + };
118545
118546 - at76_dbg(DBG_FW, "got it.");
118547 - fwh = (struct at76_fw_header *)(fwe->fw->data);
118548 + if (cmd == SET_KEY) {
118549 + /* store key into MIB */
118550 + priv->mib_buf.size = CIPHER_KEY_LEN;
118551 + priv->mib_buf.index = offsetof(struct mib_mac_encryption,
118552 + cipher_default_keyvalue[key->keyidx]);
118553 + memset(priv->mib_buf.data.data, 0, CIPHER_KEY_LEN);
118554 + memcpy(priv->mib_buf.data.data, key->key, key->keylen);
118555 +
118556 + switch (key->alg) {
118557 + case ALG_WEP:
118558 + if (key->keylen == 5) {
118559 + priv->keys[key->keyidx].cipher =
118560 + CIPHER_WEP64;
118561 + priv->keys[key->keyidx].keylen = 8;
118562 + } else if (key->keylen == 13) {
118563 + priv->keys[key->keyidx].cipher =
118564 + CIPHER_WEP128;
118565 + /* Firmware needs this */
118566 + priv->keys[key->keyidx].keylen = 8;
118567 + } else {
118568 + ret = -EOPNOTSUPP;
118569 + goto exit;
118570 + };
118571 + break;
118572 + case ALG_TKIP:
118573 + key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
118574 + priv->keys[key->keyidx].cipher = CIPHER_TKIP;
118575 + priv->keys[key->keyidx].keylen = 12;
118576 + break;
118577
118578 - if (fwe->fw->size <= sizeof(*fwh)) {
118579 - dev_printk(KERN_ERR, &udev->dev,
118580 - "firmware is too short (0x%zx)\n", fwe->fw->size);
118581 - goto exit;
118582 - }
118583 + case ALG_CCMP:
118584 + if (!at76_is_505a(priv->board_type)) {
118585 + ret = -EOPNOTSUPP;
118586 + goto exit;
118587 + };
118588 + key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
118589 + priv->keys[key->keyidx].cipher = CIPHER_CCMP;
118590 + priv->keys[key->keyidx].keylen = 16;
118591 + break;
118592
118593 - /* CRC currently not checked */
118594 - fwe->board_type = le32_to_cpu(fwh->board_type);
118595 - if (fwe->board_type != board_type) {
118596 - dev_printk(KERN_ERR, &udev->dev,
118597 - "board type mismatch, requested %u, got %u\n",
118598 - board_type, fwe->board_type);
118599 - goto exit;
118600 - }
118601 + default:
118602 + ret = -EOPNOTSUPP;
118603 + goto exit;
118604 + };
118605
118606 - fwe->fw_version.major = fwh->major;
118607 - fwe->fw_version.minor = fwh->minor;
118608 - fwe->fw_version.patch = fwh->patch;
118609 - fwe->fw_version.build = fwh->build;
118610 + priv->mib_buf.data.data[38] = priv->keys[key->keyidx].cipher;
118611 + priv->mib_buf.data.data[39] = 1; /* Taken from atmelwlandriver,
118612 + not documented */
118613 +
118614 + if (is_valid_ether_addr(address))
118615 + /* Pairwise key */
118616 + priv->mib_buf.data.data[39] |= (KEY_PAIRWISE | KEY_TX);
118617 + else if (is_broadcast_ether_addr(address))
118618 + /* Group key */
118619 + priv->mib_buf.data.data[39] |= (KEY_TX);
118620 + else /* Key used only for transmission ??? */
118621 + priv->mib_buf.data.data[39] |= (KEY_TX);
118622 +
118623 + if (at76_set_mib(priv, &priv->mib_buf) !=
118624 + CMD_STATUS_COMPLETE) {
118625 + ret = -EOPNOTSUPP; /* -EIO would be probably better */
118626 + goto exit;
118627 + };
118628
118629 - str = (char *)fwh + le32_to_cpu(fwh->str_offset);
118630 - fwe->intfw = (u8 *)fwh + le32_to_cpu(fwh->int_fw_offset);
118631 - fwe->intfw_size = le32_to_cpu(fwh->int_fw_len);
118632 - fwe->extfw = (u8 *)fwh + le32_to_cpu(fwh->ext_fw_offset);
118633 - fwe->extfw_size = le32_to_cpu(fwh->ext_fw_len);
118634 + if ((key->alg == ALG_TKIP) || (key->alg == ALG_CCMP))
118635 + at76_reset_rsc(priv);
118636
118637 - fwe->loaded = 1;
118638 + key->hw_key_idx = key->keyidx;
118639
118640 - dev_printk(KERN_DEBUG, &udev->dev,
118641 - "using firmware %s (version %d.%d.%d-%d)\n",
118642 - fwe->fwname, fwh->major, fwh->minor, fwh->patch, fwh->build);
118643 + /* Set up default keys */
118644 + if (is_broadcast_ether_addr(address))
118645 + priv->default_group_key = key->keyidx;
118646 + if (is_valid_ether_addr(address))
118647 + priv->default_pairwise_key = key->keyidx;
118648 +
118649 + /* Set up encryption MIBs */
118650 +
118651 + /* first block of settings */
118652 + priv->mib_buf.size = 3;
118653 + priv->mib_buf.index = offsetof(struct mib_mac_encryption,
118654 + privacy_invoked);
118655 + priv->mib_buf.data.data[0] = 1; /* privacy_invoked */
118656 + priv->mib_buf.data.data[1] = priv->default_pairwise_key;
118657 + priv->mib_buf.data.data[2] = priv->default_group_key;
118658
118659 - at76_dbg(DBG_DEVSTART, "board %u, int %d:%d, ext %d:%d", board_type,
118660 - le32_to_cpu(fwh->int_fw_offset), le32_to_cpu(fwh->int_fw_len),
118661 - le32_to_cpu(fwh->ext_fw_offset), le32_to_cpu(fwh->ext_fw_len));
118662 - at76_dbg(DBG_DEVSTART, "firmware id %s", str);
118663 + ret = at76_set_mib(priv, &priv->mib_buf);
118664 + if (ret != CMD_STATUS_COMPLETE)
118665 + goto exit;
118666 +
118667 + /* second block of settings */
118668 + priv->mib_buf.size = 3;
118669 + priv->mib_buf.index = offsetof(struct mib_mac_encryption,
118670 + exclude_unencrypted);
118671 + priv->mib_buf.data.data[0] = 1; /* exclude_unencrypted */
118672 + priv->mib_buf.data.data[1] = 0; /* wep_encryption_type */
118673 + priv->mib_buf.data.data[2] = 0; /* ckip_key_permutation */
118674
118675 + ret = at76_set_mib(priv, &priv->mib_buf);
118676 + if (ret != CMD_STATUS_COMPLETE)
118677 + goto exit;
118678 + ret = 0;
118679 + };
118680 exit:
118681 - mutex_unlock(&fw_mutex);
118682 + at76_dump_mib_mac_encryption(priv);
118683 + mutex_unlock(&priv->mtx);
118684 + return ret;
118685 +}
118686
118687 - if (fwe->loaded)
118688 - return fwe;
118689 +static int at76_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
118690 + const u8 *local_address, const u8 *address,
118691 + struct ieee80211_key_conf *key)
118692 +{
118693 + struct at76_priv *priv = hw->priv;
118694 +
118695 + at76_dbg(DBG_MAC80211, "%s(): cmd %d key->alg %d key->keyidx %d "
118696 + "key->keylen %d",
118697 + __func__, cmd, key->alg, key->keyidx, key->keylen);
118698 +
118699 + if (FIRMWARE_IS_WPA(priv->fw_version))
118700 + return at76_set_key_newfw(hw, cmd, local_address, address, key);
118701 else
118702 - return NULL;
118703 + return at76_set_key_oldfw(hw, cmd, local_address, address, key);
118704 +
118705 }
118706
118707 +static const struct ieee80211_ops at76_ops = {
118708 + .tx = at76_mac80211_tx,
118709 + .add_interface = at76_add_interface,
118710 + .remove_interface = at76_remove_interface,
118711 + .config = at76_config,
118712 + .config_interface = at76_config_interface,
118713 + .configure_filter = at76_configure_filter,
118714 + .start = at76_mac80211_start,
118715 + .stop = at76_mac80211_stop,
118716 + .hw_scan = at76_hw_scan,
118717 + .set_key = at76_set_key,
118718 +};
118719 +
118720 /* Allocate network device and initialize private data */
118721 static struct at76_priv *at76_alloc_new_device(struct usb_device *udev)
118722 {
118723 - struct net_device *netdev;
118724 + struct ieee80211_hw *hw;
118725 struct at76_priv *priv;
118726 - int i;
118727
118728 - /* allocate memory for our device state and initialize it */
118729 - netdev = alloc_etherdev(sizeof(struct at76_priv));
118730 - if (!netdev) {
118731 - dev_printk(KERN_ERR, &udev->dev, "out of memory\n");
118732 + hw = ieee80211_alloc_hw(sizeof(struct at76_priv), &at76_ops);
118733 + if (!hw) {
118734 + printk(KERN_ERR DRIVER_NAME ": could not register"
118735 + " ieee80211_hw\n");
118736 return NULL;
118737 }
118738
118739 - priv = netdev_priv(netdev);
118740 + priv = hw->priv;
118741 + priv->hw = hw;
118742
118743 priv->udev = udev;
118744 - priv->netdev = netdev;
118745
118746 mutex_init(&priv->mtx);
118747 - INIT_WORK(&priv->work_assoc_done, at76_work_assoc_done);
118748 - INIT_WORK(&priv->work_join, at76_work_join);
118749 - INIT_WORK(&priv->work_new_bss, at76_work_new_bss);
118750 - INIT_WORK(&priv->work_start_scan, at76_work_start_scan);
118751 INIT_WORK(&priv->work_set_promisc, at76_work_set_promisc);
118752 INIT_WORK(&priv->work_submit_rx, at76_work_submit_rx);
118753 - INIT_DELAYED_WORK(&priv->dwork_restart, at76_dwork_restart);
118754 - INIT_DELAYED_WORK(&priv->dwork_get_scan, at76_dwork_get_scan);
118755 - INIT_DELAYED_WORK(&priv->dwork_beacon, at76_dwork_beacon);
118756 - INIT_DELAYED_WORK(&priv->dwork_auth, at76_dwork_auth);
118757 - INIT_DELAYED_WORK(&priv->dwork_assoc, at76_dwork_assoc);
118758 -
118759 - spin_lock_init(&priv->mgmt_spinlock);
118760 - priv->next_mgmt_bulk = NULL;
118761 - priv->mac_state = MAC_INIT;
118762 -
118763 - /* initialize empty BSS list */
118764 - priv->curr_bss = NULL;
118765 - INIT_LIST_HEAD(&priv->bss_list);
118766 - spin_lock_init(&priv->bss_list_spinlock);
118767 -
118768 - init_timer(&priv->bss_list_timer);
118769 - priv->bss_list_timer.data = (unsigned long)priv;
118770 - priv->bss_list_timer.function = at76_bss_list_timeout;
118771 -
118772 - spin_lock_init(&priv->spy_spinlock);
118773 -
118774 - /* mark all rx data entries as unused */
118775 - for (i = 0; i < NR_RX_DATA_BUF; i++)
118776 - priv->rx_data[i].skb = NULL;
118777 + INIT_DELAYED_WORK(&priv->dwork_hw_scan, at76_dwork_hw_scan);
118778
118779 priv->rx_tasklet.func = at76_rx_tasklet;
118780 priv->rx_tasklet.data = 0;
118781 @@ -5197,6 +2371,9 @@
118782 priv->pm_mode = AT76_PM_OFF;
118783 priv->pm_period = 0;
118784
118785 + /* unit us */
118786 + priv->hw->channel_change_time = 100000;
118787 +
118788 return priv;
118789 }
118790
118791 @@ -5259,11 +2436,42 @@
118792 return 0;
118793 }
118794
118795 +static struct ieee80211_rate at76_rates[] = {
118796 + { .bitrate = 10, .hw_value = TX_RATE_1MBIT, },
118797 + { .bitrate = 20, .hw_value = TX_RATE_2MBIT, },
118798 + { .bitrate = 55, .hw_value = TX_RATE_5_5MBIT, },
118799 + { .bitrate = 110, .hw_value = TX_RATE_11MBIT, },
118800 +};
118801 +
118802 +static struct ieee80211_channel at76_channels[] = {
118803 + { .center_freq = 2412, .hw_value = 1 },
118804 + { .center_freq = 2417, .hw_value = 2 },
118805 + { .center_freq = 2422, .hw_value = 3 },
118806 + { .center_freq = 2427, .hw_value = 4 },
118807 + { .center_freq = 2432, .hw_value = 5 },
118808 + { .center_freq = 2437, .hw_value = 6 },
118809 + { .center_freq = 2442, .hw_value = 7 },
118810 + { .center_freq = 2447, .hw_value = 8 },
118811 + { .center_freq = 2452, .hw_value = 9 },
118812 + { .center_freq = 2457, .hw_value = 10 },
118813 + { .center_freq = 2462, .hw_value = 11 },
118814 + { .center_freq = 2467, .hw_value = 12 },
118815 + { .center_freq = 2472, .hw_value = 13 },
118816 + { .center_freq = 2484, .hw_value = 14 }
118817 +};
118818 +
118819 +static struct ieee80211_supported_band at76_supported_band = {
118820 + .channels = at76_channels,
118821 + .n_channels = ARRAY_SIZE(at76_channels),
118822 + .bitrates = at76_rates,
118823 + .n_bitrates = ARRAY_SIZE(at76_rates),
118824 +};
118825 +
118826 /* Register network device and initialize the hardware */
118827 static int at76_init_new_device(struct at76_priv *priv,
118828 struct usb_interface *interface)
118829 {
118830 - struct net_device *netdev = priv->netdev;
118831 + struct device *dev = &interface->dev;
118832 int ret;
118833
118834 /* set up the endpoint information */
118835 @@ -5279,14 +2487,11 @@
118836 /* MAC address */
118837 ret = at76_get_hw_config(priv);
118838 if (ret < 0) {
118839 - dev_printk(KERN_ERR, &interface->dev,
118840 - "cannot get MAC address\n");
118841 + dev_err(dev, "cannot get MAC address\n");
118842 goto exit;
118843 }
118844
118845 priv->domain = at76_get_reg_domain(priv->regulatory_domain);
118846 - /* init. netdev->dev_addr */
118847 - memcpy(netdev->dev_addr, priv->mac_addr, ETH_ALEN);
118848
118849 priv->channel = DEF_CHANNEL;
118850 priv->iw_mode = IW_MODE_INFRA;
118851 @@ -5296,47 +2501,54 @@
118852 priv->txrate = TX_RATE_AUTO;
118853 priv->preamble_type = PREAMBLE_TYPE_LONG;
118854 priv->beacon_period = 100;
118855 - priv->beacons_last_qual = jiffies;
118856 priv->auth_mode = WLAN_AUTH_OPEN;
118857 priv->scan_min_time = DEF_SCAN_MIN_TIME;
118858 priv->scan_max_time = DEF_SCAN_MAX_TIME;
118859 priv->scan_mode = SCAN_TYPE_ACTIVE;
118860 + priv->default_pairwise_key = 0xff;
118861 + priv->default_group_key = 0xff;
118862 +
118863 + /* mac80211 initialisation */
118864 + priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &at76_supported_band;
118865 +
118866 + if (FIRMWARE_IS_WPA(priv->fw_version) &&
118867 + (at76_is_503rfmd(priv->board_type) ||
118868 + at76_is_505(priv->board_type)))
118869 + priv->hw->flags = IEEE80211_HW_SIGNAL_UNSPEC;
118870 + else
118871 + priv->hw->flags = IEEE80211_HW_RX_INCLUDES_FCS |
118872 + IEEE80211_HW_SIGNAL_UNSPEC;
118873
118874 - netdev->flags &= ~IFF_MULTICAST; /* not yet or never */
118875 - netdev->open = at76_open;
118876 - netdev->stop = at76_stop;
118877 - netdev->get_stats = at76_get_stats;
118878 - netdev->ethtool_ops = &at76_ethtool_ops;
118879 -
118880 - /* Add pointers to enable iwspy support. */
118881 - priv->wireless_data.spy_data = &priv->spy_data;
118882 - netdev->wireless_data = &priv->wireless_data;
118883 -
118884 - netdev->hard_start_xmit = at76_tx;
118885 - netdev->tx_timeout = at76_tx_timeout;
118886 - netdev->watchdog_timeo = 2 * HZ;
118887 - netdev->wireless_handlers = &at76_handler_def;
118888 - netdev->set_multicast_list = at76_set_multicast;
118889 - netdev->set_mac_address = at76_set_mac_address;
118890 - dev_alloc_name(netdev, "wlan%d");
118891 + priv->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
118892
118893 - ret = register_netdev(priv->netdev);
118894 + SET_IEEE80211_DEV(priv->hw, &interface->dev);
118895 + SET_IEEE80211_PERM_ADDR(priv->hw, priv->mac_addr);
118896 +
118897 + ret = ieee80211_register_hw(priv->hw);
118898 if (ret) {
118899 - dev_printk(KERN_ERR, &interface->dev,
118900 - "cannot register netdevice (status %d)!\n", ret);
118901 + dev_err(dev, "cannot register mac80211 hw (status %d)!\n", ret);
118902 goto exit;
118903 }
118904 - priv->netdev_registered = 1;
118905
118906 - printk(KERN_INFO "%s: USB %s, MAC %s, firmware %d.%d.%d-%d\n",
118907 - netdev->name, dev_name(&interface->dev), mac2str(priv->mac_addr),
118908 - priv->fw_version.major, priv->fw_version.minor,
118909 - priv->fw_version.patch, priv->fw_version.build);
118910 - printk(KERN_INFO "%s: regulatory domain 0x%02x: %s\n", netdev->name,
118911 - priv->regulatory_domain, priv->domain->name);
118912 + priv->mac80211_registered = 1;
118913
118914 - /* we let this timer run the whole time this driver instance lives */
118915 - mod_timer(&priv->bss_list_timer, jiffies + BSS_LIST_TIMEOUT);
118916 + dev_info(dev, "%s: USB %s, MAC %s, firmware %d.%d.%d-%d\n",
118917 + wiphy_name(priv->hw->wiphy),
118918 + dev_name(&interface->dev), mac2str(priv->mac_addr),
118919 + priv->fw_version.major, priv->fw_version.minor,
118920 + priv->fw_version.patch, priv->fw_version.build);
118921 + dev_info(dev, "%s: regulatory domain 0x%02x: %s\n",
118922 + wiphy_name(priv->hw->wiphy),
118923 + priv->regulatory_domain, priv->domain->name);
118924 + dev_info(dev, "%s: WPA support: ", wiphy_name(priv->hw->wiphy));
118925 + if (!FIRMWARE_IS_WPA(priv->fw_version))
118926 + printk("none\n");
118927 + else {
118928 + if (!at76_is_505a(priv->board_type))
118929 + printk("TKIP\n");
118930 + else
118931 + printk("TKIP, AES/CCMP\n");
118932 + };
118933
118934 exit:
118935 return ret;
118936 @@ -5344,15 +2556,13 @@
118937
118938 static void at76_delete_device(struct at76_priv *priv)
118939 {
118940 - int i;
118941 -
118942 at76_dbg(DBG_PROC_ENTRY, "%s: ENTER", __func__);
118943
118944 /* The device is gone, don't bother turning it off */
118945 priv->device_unplugged = 1;
118946
118947 - if (priv->netdev_registered)
118948 - unregister_netdev(priv->netdev);
118949 + if (priv->mac80211_registered)
118950 + ieee80211_unregister_hw(priv->hw);
118951
118952 /* assuming we used keventd, it must quiesce too */
118953 flush_scheduled_work();
118954 @@ -5373,25 +2583,11 @@
118955 if (priv->rx_skb)
118956 kfree_skb(priv->rx_skb);
118957
118958 - at76_free_bss_list(priv);
118959 - del_timer_sync(&priv->bss_list_timer);
118960 - cancel_delayed_work(&priv->dwork_get_scan);
118961 - cancel_delayed_work(&priv->dwork_beacon);
118962 - cancel_delayed_work(&priv->dwork_auth);
118963 - cancel_delayed_work(&priv->dwork_assoc);
118964 -
118965 - if (priv->mac_state == MAC_CONNECTED)
118966 - at76_iwevent_bss_disconnect(priv->netdev);
118967 -
118968 - for (i = 0; i < NR_RX_DATA_BUF; i++)
118969 - if (priv->rx_data[i].skb) {
118970 - dev_kfree_skb(priv->rx_data[i].skb);
118971 - priv->rx_data[i].skb = NULL;
118972 - }
118973 usb_put_dev(priv->udev);
118974
118975 - at76_dbg(DBG_PROC_ENTRY, "%s: before freeing priv/netdev", __func__);
118976 - free_netdev(priv->netdev); /* priv is in netdev */
118977 + at76_dbg(DBG_PROC_ENTRY, "%s: before freeing priv/ieee80211_hw",
118978 + __func__);
118979 + ieee80211_free_hw(priv->hw);
118980
118981 at76_dbg(DBG_PROC_ENTRY, "%s: EXIT", __func__);
118982 }
118983 @@ -5425,8 +2621,8 @@
118984 we get 204 with 2.4.23, Fiberline FL-WL240u (505A+RFMD2958) ??? */
118985
118986 if (op_mode == OPMODE_HW_CONFIG_MODE) {
118987 - dev_printk(KERN_ERR, &interface->dev,
118988 - "cannot handle a device in HW_CONFIG_MODE\n");
118989 + dev_err(&interface->dev,
118990 + "cannot handle a device in HW_CONFIG_MODE\n");
118991 ret = -EBUSY;
118992 goto error;
118993 }
118994 @@ -5434,13 +2630,12 @@
118995 if (op_mode != OPMODE_NORMAL_NIC_WITH_FLASH
118996 && op_mode != OPMODE_NORMAL_NIC_WITHOUT_FLASH) {
118997 /* download internal firmware part */
118998 - dev_printk(KERN_DEBUG, &interface->dev,
118999 - "downloading internal firmware\n");
119000 + dev_dbg(&interface->dev, "downloading internal firmware\n");
119001 ret = at76_load_internal_fw(udev, fwe);
119002 if (ret < 0) {
119003 - dev_printk(KERN_ERR, &interface->dev,
119004 - "error %d downloading internal firmware\n",
119005 - ret);
119006 + dev_err(&interface->dev,
119007 + "error %d downloading internal firmware\n",
119008 + ret);
119009 goto error;
119010 }
119011 usb_put_dev(udev);
119012 @@ -5465,8 +2660,7 @@
119013 need_ext_fw = 1;
119014
119015 if (need_ext_fw) {
119016 - dev_printk(KERN_DEBUG, &interface->dev,
119017 - "downloading external firmware\n");
119018 + dev_dbg(&interface->dev, "downloading external firmware\n");
119019
119020 ret = at76_load_external_fw(udev, fwe);
119021 if (ret)
119022 @@ -5475,8 +2669,8 @@
119023 /* Re-check firmware version */
119024 ret = at76_get_mib(udev, MIB_FW_VERSION, &fwv, sizeof(fwv));
119025 if (ret < 0) {
119026 - dev_printk(KERN_ERR, &interface->dev,
119027 - "error %d getting firmware version\n", ret);
119028 + dev_err(&interface->dev,
119029 + "error %d getting firmware version\n", ret);
119030 goto error;
119031 }
119032 }
119033 @@ -5487,7 +2681,6 @@
119034 goto error;
119035 }
119036
119037 - SET_NETDEV_DEV(priv->netdev, &interface->dev);
119038 usb_set_intfdata(interface, priv);
119039
119040 memcpy(&priv->fw_version, &fwv, sizeof(struct mib_fw_version));
119041 @@ -5515,7 +2708,7 @@
119042 if (!priv)
119043 return;
119044
119045 - printk(KERN_INFO "%s: disconnecting\n", priv->netdev->name);
119046 + printk(KERN_INFO "%s: disconnecting\n", wiphy_name(priv->hw->wiphy));
119047 at76_delete_device(priv);
119048 dev_printk(KERN_INFO, &interface->dev, "disconnected\n");
119049 }
119050 @@ -5571,5 +2764,8 @@
119051 MODULE_AUTHOR("Nick Jones");
119052 MODULE_AUTHOR("Balint Seeber <n0_5p4m_p13453@hotmail.com>");
119053 MODULE_AUTHOR("Pavel Roskin <proski@gnu.org>");
119054 +MODULE_AUTHOR("Guido Guenther <agx@sigxcpu.org>");
119055 +MODULE_AUTHOR("Kalle Valo <kalle.valo@iki.fi>");
119056 +MODULE_AUTHOR("Milan Plzik <milan.plzik@gmail.com>");
119057 MODULE_DESCRIPTION(DRIVER_DESC);
119058 MODULE_LICENSE("GPL");
119059 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/at76_usb/at76_usb.h linux-2.6.29-rc3.owrt/drivers/staging/at76_usb/at76_usb.h
119060 --- linux-2.6.29.owrt/drivers/staging/at76_usb/at76_usb.h 2009-05-10 22:04:38.000000000 +0200
119061 +++ linux-2.6.29-rc3.owrt/drivers/staging/at76_usb/at76_usb.h 2009-05-10 23:48:29.000000000 +0200
119062 @@ -34,23 +34,6 @@
119063 BOARD_505AMX = 8
119064 };
119065
119066 -/* our private ioctl's */
119067 -/* preamble length (0 - long, 1 - short, 2 - auto) */
119068 -#define AT76_SET_SHORT_PREAMBLE (SIOCIWFIRSTPRIV + 0)
119069 -#define AT76_GET_SHORT_PREAMBLE (SIOCIWFIRSTPRIV + 1)
119070 -/* which debug channels are enabled */
119071 -#define AT76_SET_DEBUG (SIOCIWFIRSTPRIV + 2)
119072 -#define AT76_GET_DEBUG (SIOCIWFIRSTPRIV + 3)
119073 -/* power save mode (incl. the Atmel proprietary smart save mode) */
119074 -#define AT76_SET_POWERSAVE_MODE (SIOCIWFIRSTPRIV + 4)
119075 -#define AT76_GET_POWERSAVE_MODE (SIOCIWFIRSTPRIV + 5)
119076 -/* min and max channel times for scan */
119077 -#define AT76_SET_SCAN_TIMES (SIOCIWFIRSTPRIV + 6)
119078 -#define AT76_GET_SCAN_TIMES (SIOCIWFIRSTPRIV + 7)
119079 -/* scan mode (0 - active, 1 - passive) */
119080 -#define AT76_SET_SCAN_MODE (SIOCIWFIRSTPRIV + 8)
119081 -#define AT76_GET_SCAN_MODE (SIOCIWFIRSTPRIV + 9)
119082 -
119083 #define CMD_STATUS_IDLE 0x00
119084 #define CMD_STATUS_COMPLETE 0x01
119085 #define CMD_STATUS_UNKNOWN 0x02
119086 @@ -82,6 +65,7 @@
119087 #define MIB_MAC 0x03
119088 #define MIB_MAC_MGMT 0x05
119089 #define MIB_MAC_WEP 0x06
119090 +#define MIB_MAC_ENCRYPTION 0x06
119091 #define MIB_PHY 0x07
119092 #define MIB_FW_VERSION 0x08
119093 #define MIB_MDOMAIN 0x09
119094 @@ -106,6 +90,26 @@
119095 #define AT76_PM_ON 2
119096 #define AT76_PM_SMART 3
119097
119098 +/* cipher values for encryption keys */
119099 +#define CIPHER_NONE 0 /* this value is only guessed */
119100 +#define CIPHER_WEP64 1
119101 +#define CIPHER_TKIP 2
119102 +#define CIPHER_CCMP 3
119103 +#define CIPHER_CCX 4 /* for consistency sake only */
119104 +#define CIPHER_WEP128 5
119105 +
119106 +/* bit flags key types for encryption keys */
119107 +#define KEY_PAIRWISE 2
119108 +#define KEY_TX 4
119109 +
119110 +#define CIPHER_KEYS (4)
119111 +#define CIPHER_KEY_LEN (40)
119112 +
119113 +struct key_config {
119114 + u8 cipher;
119115 + u8 keylen;
119116 +};
119117 +
119118 struct hwcfg_r505 {
119119 u8 cr39_values[14];
119120 u8 reserved1[14];
119121 @@ -147,6 +151,9 @@
119122
119123 #define WEP_SMALL_KEY_LEN (40 / 8)
119124 #define WEP_LARGE_KEY_LEN (104 / 8)
119125 +#define WEP_KEYS (4)
119126 +
119127 +
119128
119129 struct at76_card_config {
119130 u8 exclude_unencrypted;
119131 @@ -161,7 +168,7 @@
119132 u8 privacy_invoked;
119133 u8 wep_default_key_id; /* 0..3 */
119134 u8 current_ssid[32];
119135 - u8 wep_default_key_value[4][WEP_KEY_LEN];
119136 + u8 wep_default_key_value[4][WEP_LARGE_KEY_LEN];
119137 u8 ssid_len;
119138 u8 short_preamble;
119139 __le16 beacon_period;
119140 @@ -186,7 +193,7 @@
119141 u8 link_quality;
119142 u8 noise_level;
119143 __le32 rx_time;
119144 - u8 packet[IEEE80211_FRAME_LEN + IEEE80211_FCS_LEN];
119145 + u8 packet[IEEE80211_MAX_FRAG_THRESHOLD];
119146 } __attribute__((packed));
119147
119148 /* Length of Atmel-specific Tx header before 802.11 frame */
119149 @@ -196,8 +203,11 @@
119150 __le16 wlength;
119151 u8 tx_rate;
119152 u8 padding;
119153 - u8 reserved[4];
119154 - u8 packet[IEEE80211_FRAME_LEN + IEEE80211_FCS_LEN];
119155 + u8 key_id;
119156 + u8 cipher_type;
119157 + u8 cipher_length;
119158 + u8 reserved;
119159 + u8 packet[IEEE80211_MAX_FRAG_THRESHOLD];
119160 } __attribute__((packed));
119161
119162 /* defines for scan_type below */
119163 @@ -244,6 +254,7 @@
119164 u8 byte;
119165 __le16 word;
119166 u8 addr[ETH_ALEN];
119167 + u8 data[256]; /* we need more space for mib_mac_encryption */
119168 } data;
119169 } __attribute__((packed));
119170
119171 @@ -317,10 +328,24 @@
119172 u8 exclude_unencrypted;
119173 __le32 wep_icv_error_count;
119174 __le32 wep_excluded_count;
119175 - u8 wep_default_keyvalue[WEP_KEYS][WEP_KEY_LEN];
119176 + u8 wep_default_keyvalue[WEP_KEYS][WEP_LARGE_KEY_LEN];
119177 u8 encryption_level; /* 1 for 40bit, 2 for 104bit encryption */
119178 } __attribute__((packed));
119179
119180 +struct mib_mac_encryption {
119181 + u8 cipher_default_keyvalue[CIPHER_KEYS][CIPHER_KEY_LEN];
119182 + u8 tkip_bssid[6];
119183 + u8 privacy_invoked;
119184 + u8 cipher_default_key_id;
119185 + u8 cipher_default_group_key_id;
119186 + u8 exclude_unencrypted;
119187 + u8 wep_encryption_type;
119188 + u8 ckip_key_permutation; /* bool */
119189 + __le32 wep_icv_error_count;
119190 + __le32 wep_excluded_count;
119191 + u8 key_rsc[CIPHER_KEYS][8];
119192 +} __attribute__((packed));
119193 +
119194 struct mib_phy {
119195 __le32 ed_threshold;
119196
119197 @@ -364,16 +389,6 @@
119198 __le32 ext_fw_len; /* external firmware image length */
119199 } __attribute__((packed));
119200
119201 -enum mac_state {
119202 - MAC_INIT,
119203 - MAC_SCANNING,
119204 - MAC_AUTH,
119205 - MAC_ASSOC,
119206 - MAC_JOINING,
119207 - MAC_CONNECTED,
119208 - MAC_OWN_IBSS
119209 -};
119210 -
119211 /* a description of a regulatory domain and the allowed channels */
119212 struct reg_domain {
119213 u16 code;
119214 @@ -381,47 +396,6 @@
119215 u32 channel_map; /* if bit N is set, channel (N+1) is allowed */
119216 };
119217
119218 -/* how long do we keep a (I)BSS in the bss_list in jiffies
119219 - this should be long enough for the user to retrieve the table
119220 - (by iwlist ?) after the device started, because all entries from
119221 - other channels than the one the device locks on get removed, too */
119222 -#define BSS_LIST_TIMEOUT (120 * HZ)
119223 -/* struct to store BSS info found during scan */
119224 -#define BSS_LIST_MAX_RATE_LEN 32 /* 32 rates should be enough ... */
119225 -
119226 -struct bss_info {
119227 - struct list_head list;
119228 -
119229 - u8 bssid[ETH_ALEN]; /* bssid */
119230 - u8 ssid[IW_ESSID_MAX_SIZE]; /* essid */
119231 - u8 ssid_len; /* length of ssid above */
119232 - u8 channel;
119233 - u16 capa; /* BSS capabilities */
119234 - u16 beacon_interval; /* beacon interval, Kus (1024 microseconds) */
119235 - u8 rates[BSS_LIST_MAX_RATE_LEN]; /* supported rates in units of
119236 - 500 kbps, ORed with 0x80 for
119237 - basic rates */
119238 - u8 rates_len;
119239 -
119240 - /* quality of received beacon */
119241 - u8 rssi;
119242 - u8 link_qual;
119243 - u8 noise_level;
119244 -
119245 - unsigned long last_rx; /* time (jiffies) of last beacon received */
119246 -};
119247 -
119248 -/* a rx data buffer to collect rx fragments */
119249 -struct rx_data_buf {
119250 - u8 sender[ETH_ALEN]; /* sender address */
119251 - u16 seqnr; /* sequence number */
119252 - u16 fragnr; /* last fragment received */
119253 - unsigned long last_rx; /* jiffies of last rx */
119254 - struct sk_buff *skb; /* == NULL if entry is free */
119255 -};
119256 -
119257 -#define NR_RX_DATA_BUF 8
119258 -
119259 /* Data for one loaded firmware file */
119260 struct fwentry {
119261 const char *const fwname;
119262 @@ -438,11 +412,9 @@
119263
119264 struct at76_priv {
119265 struct usb_device *udev; /* USB device pointer */
119266 - struct net_device *netdev; /* net device pointer */
119267 - struct net_device_stats stats; /* net device stats */
119268 - struct iw_statistics wstats; /* wireless stats */
119269
119270 struct sk_buff *rx_skb; /* skbuff for receiving data */
119271 + struct sk_buff *tx_skb; /* skbuff for transmitting data */
119272 void *bulk_out_buffer; /* buffer for sending data */
119273
119274 struct urb *tx_urb; /* URB for sending data */
119275 @@ -454,26 +426,17 @@
119276 struct mutex mtx; /* locks this structure */
119277
119278 /* work queues */
119279 - struct work_struct work_assoc_done;
119280 - struct work_struct work_join;
119281 - struct work_struct work_new_bss;
119282 - struct work_struct work_start_scan;
119283 struct work_struct work_set_promisc;
119284 struct work_struct work_submit_rx;
119285 - struct delayed_work dwork_restart;
119286 - struct delayed_work dwork_get_scan;
119287 - struct delayed_work dwork_beacon;
119288 - struct delayed_work dwork_auth;
119289 - struct delayed_work dwork_assoc;
119290 + struct delayed_work dwork_hw_scan;
119291
119292 struct tasklet_struct rx_tasklet;
119293
119294 /* the WEP stuff */
119295 int wep_enabled; /* 1 if WEP is enabled */
119296 int wep_key_id; /* key id to be used */
119297 - u8 wep_keys[WEP_KEYS][WEP_KEY_LEN]; /* the four WEP keys,
119298 - 5 or 13 bytes are used */
119299 - u8 wep_keys_len[WEP_KEYS]; /* the length of the above keys */
119300 + u8 wep_keys[WEP_KEYS][WEP_LARGE_KEY_LEN]; /* WEP keys */
119301 + u8 wep_keys_len[WEP_KEYS]; /* length of WEP keys */
119302
119303 int channel;
119304 int iw_mode;
119305 @@ -495,44 +458,13 @@
119306 int scan_mode; /* SCAN_TYPE_ACTIVE, SCAN_TYPE_PASSIVE */
119307 int scan_need_any; /* if set, need to scan for any ESSID */
119308
119309 - /* the list we got from scanning */
119310 - spinlock_t bss_list_spinlock; /* protects bss_list operations */
119311 - struct list_head bss_list; /* list of BSS we got beacons from */
119312 - struct timer_list bss_list_timer; /* timer to purge old entries
119313 - from bss_list */
119314 - struct bss_info *curr_bss; /* current BSS */
119315 u16 assoc_id; /* current association ID, if associated */
119316
119317 - u8 wanted_bssid[ETH_ALEN];
119318 - int wanted_bssid_valid; /* != 0 if wanted_bssid is to be used */
119319 -
119320 - /* some data for infrastructure mode only */
119321 - spinlock_t mgmt_spinlock; /* this spinlock protects access to
119322 - next_mgmt_bulk */
119323 -
119324 - struct at76_tx_buffer *next_mgmt_bulk; /* pending management msg to
119325 - send via bulk out */
119326 - enum mac_state mac_state;
119327 - enum {
119328 - SCAN_IDLE,
119329 - SCAN_IN_PROGRESS,
119330 - SCAN_COMPLETED
119331 - } scan_state;
119332 - time_t last_scan;
119333 -
119334 - int retries; /* remaining retries in case of timeout when
119335 - * sending AuthReq or AssocReq */
119336 u8 pm_mode; /* power management mode */
119337 u32 pm_period; /* power management period in microseconds */
119338
119339 struct reg_domain const *domain; /* reg domain description */
119340
119341 - /* iwspy support */
119342 - spinlock_t spy_spinlock;
119343 - struct iw_spy_data spy_data;
119344 -
119345 - struct iw_public_data wireless_data;
119346 -
119347 /* These fields contain HW config provided by the device (not all of
119348 * these fields are used by all board types) */
119349 u8 mac_addr[ETH_ALEN];
119350 @@ -540,9 +472,6 @@
119351
119352 struct at76_card_config card_config;
119353
119354 - /* store rx fragments until complete */
119355 - struct rx_data_buf rx_data[NR_RX_DATA_BUF];
119356 -
119357 enum board_type board_type;
119358 struct mib_fw_version fw_version;
119359
119360 @@ -550,58 +479,20 @@
119361 unsigned int netdev_registered:1;
119362 struct set_mib_buffer mib_buf; /* global buffer for set_mib calls */
119363
119364 - /* beacon counting */
119365 int beacon_period; /* period of mgmt beacons, Kus */
119366 - int beacons_received;
119367 - unsigned long beacons_last_qual; /* time we restarted counting
119368 - beacons */
119369 -};
119370
119371 -struct at76_rx_radiotap {
119372 - struct ieee80211_radiotap_header rt_hdr;
119373 - __le64 rt_tsft;
119374 - u8 rt_flags;
119375 - u8 rt_rate;
119376 - s8 rt_signal;
119377 - s8 rt_noise;
119378 -};
119379 -
119380 -#define AT76_RX_RADIOTAP_PRESENT \
119381 - ((1 << IEEE80211_RADIOTAP_TSFT) | \
119382 - (1 << IEEE80211_RADIOTAP_FLAGS) | \
119383 - (1 << IEEE80211_RADIOTAP_RATE) | \
119384 - (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL) | \
119385 - (1 << IEEE80211_RADIOTAP_DB_ANTNOISE))
119386 -
119387 -#define BEACON_MAX_DATA_LENGTH 1500
119388 -
119389 -/* the maximum size of an AssocReq packet */
119390 -#define ASSOCREQ_MAX_SIZE \
119391 - (AT76_TX_HDRLEN + sizeof(struct ieee80211_assoc_request) + \
119392 - 1 + 1 + IW_ESSID_MAX_SIZE + 1 + 1 + 4)
119393 -
119394 -/* for shared secret auth, add the challenge text size */
119395 -#define AUTH_FRAME_SIZE (AT76_TX_HDRLEN + sizeof(struct ieee80211_auth))
119396 + struct ieee80211_hw *hw;
119397 + int mac80211_registered;
119398
119399 -/* Maximal number of AuthReq retries */
119400 -#define AUTH_RETRIES 3
119401 -
119402 -/* Maximal number of AssocReq retries */
119403 -#define ASSOC_RETRIES 3
119404 -
119405 -/* Beacon timeout in managed mode when we are connected */
119406 -#define BEACON_TIMEOUT (10 * HZ)
119407 -
119408 -/* Timeout for authentication response */
119409 -#define AUTH_TIMEOUT (1 * HZ)
119410 + struct key_config keys[4]; /* installed key types */
119411 + u8 default_pairwise_key;
119412 + u8 default_group_key;
119413 +};
119414
119415 -/* Timeout for association response */
119416 -#define ASSOC_TIMEOUT (1 * HZ)
119417 +#define AT76_SUPPORTED_FILTERS FIF_PROMISC_IN_BSS
119418
119419 -/* Polling interval when scan is running */
119420 #define SCAN_POLL_INTERVAL (HZ / 4)
119421
119422 -/* Command completion timeout */
119423 #define CMD_COMPLETION_TIMEOUT (5 * HZ)
119424
119425 #define DEF_RTS_THRESHOLD 1536
119426 @@ -611,8 +502,6 @@
119427 #define DEF_SCAN_MIN_TIME 10
119428 #define DEF_SCAN_MAX_TIME 120
119429
119430 -#define MAX_RTS_THRESHOLD (MAX_FRAG_THRESHOLD + 1)
119431 -
119432 /* the max padding size for tx in bytes (see calc_padding) */
119433 #define MAX_PADDING_SIZE 53
119434
119435 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/at76_usb/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/at76_usb/Kconfig
119436 --- linux-2.6.29.owrt/drivers/staging/at76_usb/Kconfig 2009-05-10 22:04:38.000000000 +0200
119437 +++ linux-2.6.29-rc3.owrt/drivers/staging/at76_usb/Kconfig 2009-05-10 23:48:29.000000000 +0200
119438 @@ -1,6 +1,6 @@
119439 config USB_ATMEL
119440 tristate "Atmel at76c503/at76c505/at76c505a USB cards"
119441 - depends on WLAN_80211 && USB
119442 + depends on MAC80211 && WLAN_80211 && USB
119443 default N
119444 select FW_LOADER
119445 ---help---
119446 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/asyncmesg.h linux-2.6.29-rc3.owrt/drivers/staging/benet/asyncmesg.h
119447 --- linux-2.6.29.owrt/drivers/staging/benet/asyncmesg.h 1970-01-01 01:00:00.000000000 +0100
119448 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/asyncmesg.h 2009-05-10 23:48:29.000000000 +0200
119449 @@ -0,0 +1,82 @@
119450 +/*
119451 + * Copyright (C) 2005 - 2008 ServerEngines
119452 + * All rights reserved.
119453 + *
119454 + * This program is free software; you can redistribute it and/or
119455 + * modify it under the terms of the GNU General Public License version 2
119456 + * as published by the Free Software Foundation. The full GNU General
119457 + * Public License is included in this distribution in the file called COPYING.
119458 + *
119459 + * Contact Information:
119460 + * linux-drivers@serverengines.com
119461 + *
119462 + * ServerEngines
119463 + * 209 N. Fair Oaks Ave
119464 + * Sunnyvale, CA 94085
119465 + */
119466 +/*
119467 + * Autogenerated by srcgen version: 0127
119468 + */
119469 +#ifndef __asyncmesg_amap_h__
119470 +#define __asyncmesg_amap_h__
119471 +#include "fwcmd_common.h"
119472 +
119473 +/* --- ASYNC_EVENT_CODES --- */
119474 +#define ASYNC_EVENT_CODE_LINK_STATE (1)
119475 +#define ASYNC_EVENT_CODE_ISCSI (2)
119476 +
119477 +/* --- ASYNC_LINK_STATES --- */
119478 +#define ASYNC_EVENT_LINK_DOWN (0) /* Link Down on a port */
119479 +#define ASYNC_EVENT_LINK_UP (1) /* Link Up on a port */
119480 +
119481 +/*
119482 + * The last 4 bytes of the async events have this common format. It allows
119483 + * the driver to distinguish [link]MCC_CQ_ENTRY[/link] structs from
119484 + * asynchronous events. Both arrive on the same completion queue. This
119485 + * structure also contains the common fields used to decode the async event.
119486 + */
119487 +struct BE_ASYNC_EVENT_TRAILER_AMAP {
119488 + u8 rsvd0[8]; /* DWORD 0 */
119489 + u8 event_code[8]; /* DWORD 0 */
119490 + u8 event_type[8]; /* DWORD 0 */
119491 + u8 rsvd1[6]; /* DWORD 0 */
119492 + u8 async_event; /* DWORD 0 */
119493 + u8 valid; /* DWORD 0 */
119494 +} __packed;
119495 +struct ASYNC_EVENT_TRAILER_AMAP {
119496 + u32 dw[1];
119497 +};
119498 +
119499 +/*
119500 + * Applicable in Initiator, Target and NIC modes.
119501 + * A link state async event is seen by all device drivers as soon they
119502 + * create an MCC ring. Thereafter, anytime the link status changes the
119503 + * drivers will receive a link state async event. Notifications continue to
119504 + * be sent until a driver destroys its MCC ring. A link down event is
119505 + * reported when either port loses link. A link up event is reported
119506 + * when either port regains link. When BE's failover mechanism is enabled, a
119507 + * link down on the active port causes traffic to be diverted to the standby
119508 + * port by the BE's ARM firmware (assuming the standby port has link). In
119509 + * this case, the standy port assumes the active status. Note: when link is
119510 + * restored on the failed port, traffic continues on the currently active
119511 + * port. The ARM firmware does not attempt to 'fail back' traffic to
119512 + * the restored port.
119513 + */
119514 +struct BE_ASYNC_EVENT_LINK_STATE_AMAP {
119515 + u8 port0_link_status[8];
119516 + u8 port1_link_status[8];
119517 + u8 active_port[8];
119518 + u8 rsvd0[8]; /* DWORD 0 */
119519 + u8 port0_duplex[8];
119520 + u8 port0_speed[8];
119521 + u8 port1_duplex[8];
119522 + u8 port1_speed[8];
119523 + u8 port0_fault[8];
119524 + u8 port1_fault[8];
119525 + u8 rsvd1[2][8]; /* DWORD 2 */
119526 + struct BE_ASYNC_EVENT_TRAILER_AMAP trailer;
119527 +} __packed;
119528 +struct ASYNC_EVENT_LINK_STATE_AMAP {
119529 + u32 dw[4];
119530 +};
119531 +#endif /* __asyncmesg_amap_h__ */
119532 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/be_cm.h linux-2.6.29-rc3.owrt/drivers/staging/benet/be_cm.h
119533 --- linux-2.6.29.owrt/drivers/staging/benet/be_cm.h 1970-01-01 01:00:00.000000000 +0100
119534 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/be_cm.h 2009-05-10 23:48:29.000000000 +0200
119535 @@ -0,0 +1,134 @@
119536 +/*
119537 + * Copyright (C) 2005 - 2008 ServerEngines
119538 + * All rights reserved.
119539 + *
119540 + * This program is free software; you can redistribute it and/or
119541 + * modify it under the terms of the GNU General Public License version 2
119542 + * as published by the Free Software Foundation. The full GNU General
119543 + * Public License is included in this distribution in the file called COPYING.
119544 + *
119545 + * Contact Information:
119546 + * linux-drivers@serverengines.com
119547 + *
119548 + * ServerEngines
119549 + * 209 N. Fair Oaks Ave
119550 + * Sunnyvale, CA 94085
119551 + */
119552 +/*
119553 + * Autogenerated by srcgen version: 0127
119554 + */
119555 +#ifndef __be_cm_amap_h__
119556 +#define __be_cm_amap_h__
119557 +#include "be_common.h"
119558 +#include "etx_context.h"
119559 +#include "mpu_context.h"
119560 +
119561 +/*
119562 + * --- CEV_WATERMARK_ENUM ---
119563 + * CQ/EQ Watermark Encodings. Encoded as number of free entries in
119564 + * Queue when Watermark is reached.
119565 + */
119566 +#define CEV_WMARK_0 (0) /* Watermark when Queue full */
119567 +#define CEV_WMARK_16 (1) /* Watermark at 16 free entries */
119568 +#define CEV_WMARK_32 (2) /* Watermark at 32 free entries */
119569 +#define CEV_WMARK_48 (3) /* Watermark at 48 free entries */
119570 +#define CEV_WMARK_64 (4) /* Watermark at 64 free entries */
119571 +#define CEV_WMARK_80 (5) /* Watermark at 80 free entries */
119572 +#define CEV_WMARK_96 (6) /* Watermark at 96 free entries */
119573 +#define CEV_WMARK_112 (7) /* Watermark at 112 free entries */
119574 +#define CEV_WMARK_128 (8) /* Watermark at 128 free entries */
119575 +#define CEV_WMARK_144 (9) /* Watermark at 144 free entries */
119576 +#define CEV_WMARK_160 (10) /* Watermark at 160 free entries */
119577 +#define CEV_WMARK_176 (11) /* Watermark at 176 free entries */
119578 +#define CEV_WMARK_192 (12) /* Watermark at 192 free entries */
119579 +#define CEV_WMARK_208 (13) /* Watermark at 208 free entries */
119580 +#define CEV_WMARK_224 (14) /* Watermark at 224 free entries */
119581 +#define CEV_WMARK_240 (15) /* Watermark at 240 free entries */
119582 +
119583 +/*
119584 + * --- CQ_CNT_ENUM ---
119585 + * Completion Queue Count Encodings.
119586 + */
119587 +#define CEV_CQ_CNT_256 (0) /* CQ has 256 entries */
119588 +#define CEV_CQ_CNT_512 (1) /* CQ has 512 entries */
119589 +#define CEV_CQ_CNT_1024 (2) /* CQ has 1024 entries */
119590 +
119591 +/*
119592 + * --- EQ_CNT_ENUM ---
119593 + * Event Queue Count Encodings.
119594 + */
119595 +#define CEV_EQ_CNT_256 (0) /* EQ has 256 entries (16-byte EQEs only) */
119596 +#define CEV_EQ_CNT_512 (1) /* EQ has 512 entries (16-byte EQEs only) */
119597 +#define CEV_EQ_CNT_1024 (2) /* EQ has 1024 entries (4-byte or */
119598 + /* 16-byte EQEs only) */
119599 +#define CEV_EQ_CNT_2048 (3) /* EQ has 2048 entries (4-byte or */
119600 + /* 16-byte EQEs only) */
119601 +#define CEV_EQ_CNT_4096 (4) /* EQ has 4096 entries (4-byte EQEs only) */
119602 +
119603 +/*
119604 + * --- EQ_SIZE_ENUM ---
119605 + * Event Queue Entry Size Encoding.
119606 + */
119607 +#define CEV_EQ_SIZE_4 (0) /* EQE is 4 bytes */
119608 +#define CEV_EQ_SIZE_16 (1) /* EQE is 16 bytes */
119609 +
119610 +/*
119611 + * Completion Queue Context Table Entry. Contains the state of a CQ.
119612 + * Located in RAM within the CEV block.
119613 + */
119614 +struct BE_CQ_CONTEXT_AMAP {
119615 + u8 Cidx[11]; /* DWORD 0 */
119616 + u8 Watermark[4]; /* DWORD 0 */
119617 + u8 NoDelay; /* DWORD 0 */
119618 + u8 EPIdx[11]; /* DWORD 0 */
119619 + u8 Count[2]; /* DWORD 0 */
119620 + u8 valid; /* DWORD 0 */
119621 + u8 SolEvent; /* DWORD 0 */
119622 + u8 Eventable; /* DWORD 0 */
119623 + u8 Pidx[11]; /* DWORD 1 */
119624 + u8 PD[10]; /* DWORD 1 */
119625 + u8 EQID[7]; /* DWORD 1 */
119626 + u8 Func; /* DWORD 1 */
119627 + u8 WME; /* DWORD 1 */
119628 + u8 Stalled; /* DWORD 1 */
119629 + u8 Armed; /* DWORD 1 */
119630 +} __packed;
119631 +struct CQ_CONTEXT_AMAP {
119632 + u32 dw[2];
119633 +};
119634 +
119635 +/*
119636 + * Event Queue Context Table Entry. Contains the state of an EQ.
119637 + * Located in RAM in the CEV block.
119638 + */
119639 +struct BE_EQ_CONTEXT_AMAP {
119640 + u8 Cidx[13]; /* DWORD 0 */
119641 + u8 rsvd0[2]; /* DWORD 0 */
119642 + u8 Func; /* DWORD 0 */
119643 + u8 EPIdx[13]; /* DWORD 0 */
119644 + u8 valid; /* DWORD 0 */
119645 + u8 rsvd1; /* DWORD 0 */
119646 + u8 Size; /* DWORD 0 */
119647 + u8 Pidx[13]; /* DWORD 1 */
119648 + u8 rsvd2[3]; /* DWORD 1 */
119649 + u8 PD[10]; /* DWORD 1 */
119650 + u8 Count[3]; /* DWORD 1 */
119651 + u8 SolEvent; /* DWORD 1 */
119652 + u8 Stalled; /* DWORD 1 */
119653 + u8 Armed; /* DWORD 1 */
119654 + u8 Watermark[4]; /* DWORD 2 */
119655 + u8 WME; /* DWORD 2 */
119656 + u8 rsvd3[3]; /* DWORD 2 */
119657 + u8 EventVect[6]; /* DWORD 2 */
119658 + u8 rsvd4[2]; /* DWORD 2 */
119659 + u8 Delay[8]; /* DWORD 2 */
119660 + u8 rsvd5[6]; /* DWORD 2 */
119661 + u8 TMR; /* DWORD 2 */
119662 + u8 rsvd6; /* DWORD 2 */
119663 + u8 rsvd7[32]; /* DWORD 3 */
119664 +} __packed;
119665 +struct EQ_CONTEXT_AMAP {
119666 + u32 dw[4];
119667 +};
119668 +
119669 +#endif /* __be_cm_amap_h__ */
119670 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/be_common.h linux-2.6.29-rc3.owrt/drivers/staging/benet/be_common.h
119671 --- linux-2.6.29.owrt/drivers/staging/benet/be_common.h 1970-01-01 01:00:00.000000000 +0100
119672 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/be_common.h 2009-05-10 23:48:29.000000000 +0200
119673 @@ -0,0 +1,53 @@
119674 +/*
119675 + * Copyright (C) 2005 - 2008 ServerEngines
119676 + * All rights reserved.
119677 + *
119678 + * This program is free software; you can redistribute it and/or
119679 + * modify it under the terms of the GNU General Public License version 2
119680 + * as published by the Free Software Foundation. The full GNU General
119681 + * Public License is included in this distribution in the file called COPYING.
119682 + *
119683 + * Contact Information:
119684 + * linux-drivers@serverengines.com
119685 + *
119686 + * ServerEngines
119687 + * 209 N. Fair Oaks Ave
119688 + * Sunnyvale, CA 94085
119689 + */
119690 +/*
119691 + * Autogenerated by srcgen version: 0127
119692 + */
119693 +#ifndef __be_common_amap_h__
119694 +#define __be_common_amap_h__
119695 +
119696 +/* Physical Address. */
119697 +struct BE_PHYS_ADDR_AMAP {
119698 + u8 lo[32]; /* DWORD 0 */
119699 + u8 hi[32]; /* DWORD 1 */
119700 +} __packed;
119701 +struct PHYS_ADDR_AMAP {
119702 + u32 dw[2];
119703 +};
119704 +
119705 +/* Virtual Address. */
119706 +struct BE_VIRT_ADDR_AMAP {
119707 + u8 lo[32]; /* DWORD 0 */
119708 + u8 hi[32]; /* DWORD 1 */
119709 +} __packed;
119710 +struct VIRT_ADDR_AMAP {
119711 + u32 dw[2];
119712 +};
119713 +
119714 +/* Scatter gather element. */
119715 +struct BE_SGE_AMAP {
119716 + u8 addr_hi[32]; /* DWORD 0 */
119717 + u8 addr_lo[32]; /* DWORD 1 */
119718 + u8 rsvd0[32]; /* DWORD 2 */
119719 + u8 len[16]; /* DWORD 3 */
119720 + u8 rsvd1[16]; /* DWORD 3 */
119721 +} __packed;
119722 +struct SGE_AMAP {
119723 + u32 dw[4];
119724 +};
119725 +
119726 +#endif /* __be_common_amap_h__ */
119727 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/be_ethtool.c linux-2.6.29-rc3.owrt/drivers/staging/benet/be_ethtool.c
119728 --- linux-2.6.29.owrt/drivers/staging/benet/be_ethtool.c 1970-01-01 01:00:00.000000000 +0100
119729 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/be_ethtool.c 2009-05-10 23:48:29.000000000 +0200
119730 @@ -0,0 +1,348 @@
119731 +/*
119732 + * Copyright (C) 2005 - 2008 ServerEngines
119733 + * All rights reserved.
119734 + *
119735 + * This program is free software; you can redistribute it and/or
119736 + * modify it under the terms of the GNU General Public License version 2
119737 + * as published by the Free Software Foundation. The full GNU General
119738 + * Public License is included in this distribution in the file called COPYING.
119739 + *
119740 + * Contact Information:
119741 + * linux-drivers@serverengines.com
119742 + *
119743 + * ServerEngines
119744 + * 209 N. Fair Oaks Ave
119745 + * Sunnyvale, CA 94085
119746 + */
119747 +/*
119748 + * be_ethtool.c
119749 + *
119750 + * This file contains various functions that ethtool can use
119751 + * to talk to the driver and the BE H/W.
119752 + */
119753 +
119754 +#include "benet.h"
119755 +
119756 +#include <linux/ethtool.h>
119757 +
119758 +static const char benet_gstrings_stats[][ETH_GSTRING_LEN] = {
119759 +/* net_device_stats */
119760 + "rx_packets",
119761 + "tx_packets",
119762 + "rx_bytes",
119763 + "tx_bytes",
119764 + "rx_errors",
119765 + "tx_errors",
119766 + "rx_dropped",
119767 + "tx_dropped",
119768 + "multicast",
119769 + "collisions",
119770 + "rx_length_errors",
119771 + "rx_over_errors",
119772 + "rx_crc_errors",
119773 + "rx_frame_errors",
119774 + "rx_fifo_errors",
119775 + "rx_missed_errors",
119776 + "tx_aborted_errors",
119777 + "tx_carrier_errors",
119778 + "tx_fifo_errors",
119779 + "tx_heartbeat_errors",
119780 + "tx_window_errors",
119781 + "rx_compressed",
119782 + "tc_compressed",
119783 +/* BE driver Stats */
119784 + "bes_tx_reqs",
119785 + "bes_tx_fails",
119786 + "bes_fwd_reqs",
119787 + "bes_tx_wrbs",
119788 + "bes_interrupts",
119789 + "bes_events",
119790 + "bes_tx_events",
119791 + "bes_rx_events",
119792 + "bes_tx_compl",
119793 + "bes_rx_compl",
119794 + "bes_ethrx_post_fail",
119795 + "bes_802_3_dropped_frames",
119796 + "bes_802_3_malformed_frames",
119797 + "bes_rx_misc_pkts",
119798 + "bes_eth_tx_rate",
119799 + "bes_eth_rx_rate",
119800 + "Num Packets collected",
119801 + "Num Times Flushed",
119802 +};
119803 +
119804 +#define NET_DEV_STATS_LEN \
119805 + (sizeof(struct net_device_stats)/sizeof(unsigned long))
119806 +
119807 +#define BENET_STATS_LEN ARRAY_SIZE(benet_gstrings_stats)
119808 +
119809 +static void
119810 +be_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *drvinfo)
119811 +{
119812 + struct be_net_object *pnob = netdev_priv(netdev);
119813 + struct be_adapter *adapter = pnob->adapter;
119814 +
119815 + strncpy(drvinfo->driver, be_driver_name, 32);
119816 + strncpy(drvinfo->version, be_drvr_ver, 32);
119817 + strncpy(drvinfo->fw_version, be_fw_ver, 32);
119818 + strcpy(drvinfo->bus_info, pci_name(adapter->pdev));
119819 + drvinfo->testinfo_len = 0;
119820 + drvinfo->regdump_len = 0;
119821 + drvinfo->eedump_len = 0;
119822 +}
119823 +
119824 +static int
119825 +be_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
119826 +{
119827 + struct be_net_object *pnob = netdev_priv(netdev);
119828 + struct be_adapter *adapter = pnob->adapter;
119829 +
119830 + coalesce->rx_max_coalesced_frames = adapter->max_rx_coal;
119831 +
119832 + coalesce->rx_coalesce_usecs = adapter->cur_eqd;
119833 + coalesce->rx_coalesce_usecs_high = adapter->max_eqd;
119834 + coalesce->rx_coalesce_usecs_low = adapter->min_eqd;
119835 +
119836 + coalesce->tx_coalesce_usecs = adapter->cur_eqd;
119837 + coalesce->tx_coalesce_usecs_high = adapter->max_eqd;
119838 + coalesce->tx_coalesce_usecs_low = adapter->min_eqd;
119839 +
119840 + coalesce->use_adaptive_rx_coalesce = adapter->enable_aic;
119841 + coalesce->use_adaptive_tx_coalesce = adapter->enable_aic;
119842 +
119843 + return 0;
119844 +}
119845 +
119846 +/*
119847 + * This routine is used to set interrup coalescing delay *as well as*
119848 + * the number of pkts to coalesce for LRO.
119849 + */
119850 +static int
119851 +be_set_coalesce(struct net_device *netdev, struct ethtool_coalesce *coalesce)
119852 +{
119853 + struct be_net_object *pnob = netdev_priv(netdev);
119854 + struct be_adapter *adapter = pnob->adapter;
119855 + struct be_eq_object *eq_objectp;
119856 + u32 max, min, cur;
119857 + int status;
119858 +
119859 + adapter->max_rx_coal = coalesce->rx_max_coalesced_frames;
119860 + if (adapter->max_rx_coal >= BE_LRO_MAX_PKTS)
119861 + adapter->max_rx_coal = BE_LRO_MAX_PKTS;
119862 +
119863 + if (adapter->enable_aic == 0 &&
119864 + coalesce->use_adaptive_rx_coalesce == 1) {
119865 + /* if AIC is being turned on now, start with an EQD of 0 */
119866 + adapter->cur_eqd = 0;
119867 + }
119868 + adapter->enable_aic = coalesce->use_adaptive_rx_coalesce;
119869 +
119870 + /* round off to nearest multiple of 8 */
119871 + max = (((coalesce->rx_coalesce_usecs_high + 4) >> 3) << 3);
119872 + min = (((coalesce->rx_coalesce_usecs_low + 4) >> 3) << 3);
119873 + cur = (((coalesce->rx_coalesce_usecs + 4) >> 3) << 3);
119874 +
119875 + if (adapter->enable_aic) {
119876 + /* accept low and high if AIC is enabled */
119877 + if (max > MAX_EQD)
119878 + max = MAX_EQD;
119879 + if (min > max)
119880 + min = max;
119881 + adapter->max_eqd = max;
119882 + adapter->min_eqd = min;
119883 + if (adapter->cur_eqd > max)
119884 + adapter->cur_eqd = max;
119885 + if (adapter->cur_eqd < min)
119886 + adapter->cur_eqd = min;
119887 + } else {
119888 + /* accept specified coalesce_usecs only if AIC is disabled */
119889 + if (cur > MAX_EQD)
119890 + cur = MAX_EQD;
119891 + eq_objectp = &pnob->event_q_obj;
119892 + status =
119893 + be_eq_modify_delay(&pnob->fn_obj, 1, &eq_objectp, &cur,
119894 + NULL, NULL, NULL);
119895 + if (status == BE_SUCCESS)
119896 + adapter->cur_eqd = cur;
119897 + }
119898 + return 0;
119899 +}
119900 +
119901 +static u32 be_get_rx_csum(struct net_device *netdev)
119902 +{
119903 + struct be_net_object *pnob = netdev_priv(netdev);
119904 + struct be_adapter *adapter = pnob->adapter;
119905 + return adapter->rx_csum;
119906 +}
119907 +
119908 +static int be_set_rx_csum(struct net_device *netdev, uint32_t data)
119909 +{
119910 + struct be_net_object *pnob = netdev_priv(netdev);
119911 + struct be_adapter *adapter = pnob->adapter;
119912 +
119913 + if (data)
119914 + adapter->rx_csum = 1;
119915 + else
119916 + adapter->rx_csum = 0;
119917 +
119918 + return 0;
119919 +}
119920 +
119921 +static void
119922 +be_get_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data)
119923 +{
119924 + switch (stringset) {
119925 + case ETH_SS_STATS:
119926 + memcpy(data, *benet_gstrings_stats,
119927 + sizeof(benet_gstrings_stats));
119928 + break;
119929 + }
119930 +}
119931 +
119932 +static int be_get_stats_count(struct net_device *netdev)
119933 +{
119934 + return BENET_STATS_LEN;
119935 +}
119936 +
119937 +static void
119938 +be_get_ethtool_stats(struct net_device *netdev,
119939 + struct ethtool_stats *stats, uint64_t *data)
119940 +{
119941 + struct be_net_object *pnob = netdev_priv(netdev);
119942 + struct be_adapter *adapter = pnob->adapter;
119943 + int i;
119944 +
119945 + benet_get_stats(netdev);
119946 +
119947 + for (i = 0; i <= NET_DEV_STATS_LEN; i++)
119948 + data[i] = ((unsigned long *)&adapter->benet_stats)[i];
119949 +
119950 + data[i] = adapter->be_stat.bes_tx_reqs;
119951 + data[i++] = adapter->be_stat.bes_tx_fails;
119952 + data[i++] = adapter->be_stat.bes_fwd_reqs;
119953 + data[i++] = adapter->be_stat.bes_tx_wrbs;
119954 +
119955 + data[i++] = adapter->be_stat.bes_ints;
119956 + data[i++] = adapter->be_stat.bes_events;
119957 + data[i++] = adapter->be_stat.bes_tx_events;
119958 + data[i++] = adapter->be_stat.bes_rx_events;
119959 + data[i++] = adapter->be_stat.bes_tx_compl;
119960 + data[i++] = adapter->be_stat.bes_rx_compl;
119961 + data[i++] = adapter->be_stat.bes_ethrx_post_fail;
119962 + data[i++] = adapter->be_stat.bes_802_3_dropped_frames;
119963 + data[i++] = adapter->be_stat.bes_802_3_malformed_frames;
119964 + data[i++] = adapter->be_stat.bes_rx_misc_pkts;
119965 + data[i++] = adapter->be_stat.bes_eth_tx_rate;
119966 + data[i++] = adapter->be_stat.bes_eth_rx_rate;
119967 + data[i++] = adapter->be_stat.bes_rx_coal;
119968 + data[i++] = adapter->be_stat.bes_rx_flush;
119969 +
119970 +}
119971 +
119972 +static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
119973 +{
119974 + ecmd->speed = SPEED_10000;
119975 + ecmd->duplex = DUPLEX_FULL;
119976 + ecmd->autoneg = AUTONEG_DISABLE;
119977 + return 0;
119978 +}
119979 +
119980 +/* Get the Ring parameters from the pnob */
119981 +static void
119982 +be_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring)
119983 +{
119984 + struct be_net_object *pnob = netdev_priv(netdev);
119985 +
119986 + /* Pre Set Maxims */
119987 + ring->rx_max_pending = pnob->rx_q_len;
119988 + ring->rx_mini_max_pending = ring->rx_mini_max_pending;
119989 + ring->rx_jumbo_max_pending = ring->rx_jumbo_max_pending;
119990 + ring->tx_max_pending = pnob->tx_q_len;
119991 +
119992 + /* Current hardware Settings */
119993 + ring->rx_pending = atomic_read(&pnob->rx_q_posted);
119994 + ring->rx_mini_pending = ring->rx_mini_pending;
119995 + ring->rx_jumbo_pending = ring->rx_jumbo_pending;
119996 + ring->tx_pending = atomic_read(&pnob->tx_q_used);
119997 +
119998 +}
119999 +
120000 +static void
120001 +be_get_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
120002 +{
120003 + struct be_net_object *pnob = netdev_priv(netdev);
120004 + bool rxfc, txfc;
120005 + int status;
120006 +
120007 + status = be_eth_get_flow_control(&pnob->fn_obj, &txfc, &rxfc);
120008 + if (status != BE_SUCCESS) {
120009 + dev_info(&netdev->dev, "Unable to get pause frame settings\n");
120010 + /* return defaults */
120011 + ecmd->rx_pause = 1;
120012 + ecmd->tx_pause = 0;
120013 + ecmd->autoneg = AUTONEG_ENABLE;
120014 + return;
120015 + }
120016 +
120017 + if (txfc == true)
120018 + ecmd->tx_pause = 1;
120019 + else
120020 + ecmd->tx_pause = 0;
120021 +
120022 + if (rxfc == true)
120023 + ecmd->rx_pause = 1;
120024 + else
120025 + ecmd->rx_pause = 0;
120026 +
120027 + ecmd->autoneg = AUTONEG_ENABLE;
120028 +}
120029 +
120030 +static int
120031 +be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)
120032 +{
120033 + struct be_net_object *pnob = netdev_priv(netdev);
120034 + bool txfc, rxfc;
120035 + int status;
120036 +
120037 + if (ecmd->autoneg != AUTONEG_ENABLE)
120038 + return -EINVAL;
120039 +
120040 + if (ecmd->tx_pause)
120041 + txfc = true;
120042 + else
120043 + txfc = false;
120044 +
120045 + if (ecmd->rx_pause)
120046 + rxfc = true;
120047 + else
120048 + rxfc = false;
120049 +
120050 + status = be_eth_set_flow_control(&pnob->fn_obj, txfc, rxfc);
120051 + if (status != BE_SUCCESS) {
120052 + dev_info(&netdev->dev, "Unable to set pause frame settings\n");
120053 + return -1;
120054 + }
120055 + return 0;
120056 +}
120057 +
120058 +struct ethtool_ops be_ethtool_ops = {
120059 + .get_settings = be_get_settings,
120060 + .get_drvinfo = be_get_drvinfo,
120061 + .get_link = ethtool_op_get_link,
120062 + .get_coalesce = be_get_coalesce,
120063 + .set_coalesce = be_set_coalesce,
120064 + .get_ringparam = be_get_ringparam,
120065 + .get_pauseparam = be_get_pauseparam,
120066 + .set_pauseparam = be_set_pauseparam,
120067 + .get_rx_csum = be_get_rx_csum,
120068 + .set_rx_csum = be_set_rx_csum,
120069 + .get_tx_csum = ethtool_op_get_tx_csum,
120070 + .set_tx_csum = ethtool_op_set_tx_csum,
120071 + .get_sg = ethtool_op_get_sg,
120072 + .set_sg = ethtool_op_set_sg,
120073 + .get_tso = ethtool_op_get_tso,
120074 + .set_tso = ethtool_op_set_tso,
120075 + .get_strings = be_get_strings,
120076 + .get_stats_count = be_get_stats_count,
120077 + .get_ethtool_stats = be_get_ethtool_stats,
120078 +};
120079 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/be_init.c linux-2.6.29-rc3.owrt/drivers/staging/benet/be_init.c
120080 --- linux-2.6.29.owrt/drivers/staging/benet/be_init.c 1970-01-01 01:00:00.000000000 +0100
120081 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/be_init.c 2009-05-10 23:48:29.000000000 +0200
120082 @@ -0,0 +1,1382 @@
120083 +/*
120084 + * Copyright (C) 2005 - 2008 ServerEngines
120085 + * All rights reserved.
120086 + *
120087 + * This program is free software; you can redistribute it and/or
120088 + * modify it under the terms of the GNU General Public License version 2
120089 + * as published by the Free Software Foundation. The full GNU General
120090 + * Public License is included in this distribution in the file called COPYING.
120091 + *
120092 + * Contact Information:
120093 + * linux-drivers@serverengines.com
120094 + *
120095 + * ServerEngines
120096 + * 209 N. Fair Oaks Ave
120097 + * Sunnyvale, CA 94085
120098 + */
120099 +#include <linux/etherdevice.h>
120100 +#include "benet.h"
120101 +
120102 +#define DRVR_VERSION "1.0.728"
120103 +
120104 +static const struct pci_device_id be_device_id_table[] = {
120105 + {PCI_DEVICE(0x19a2, 0x0201)},
120106 + {0}
120107 +};
120108 +
120109 +MODULE_DEVICE_TABLE(pci, be_device_id_table);
120110 +
120111 +MODULE_VERSION(DRVR_VERSION);
120112 +
120113 +#define DRV_DESCRIPTION "ServerEngines BladeEngine Network Driver Version "
120114 +
120115 +MODULE_DESCRIPTION(DRV_DESCRIPTION DRVR_VERSION);
120116 +MODULE_AUTHOR("ServerEngines");
120117 +MODULE_LICENSE("GPL");
120118 +
120119 +static unsigned int msix = 1;
120120 +module_param(msix, uint, S_IRUGO);
120121 +MODULE_PARM_DESC(msix, "Use MSI-x interrupts");
120122 +
120123 +static unsigned int rxbuf_size = 2048; /* Default RX frag size */
120124 +module_param(rxbuf_size, uint, S_IRUGO);
120125 +MODULE_PARM_DESC(rxbuf_size, "Size of buffers to hold Rx data");
120126 +
120127 +const char be_drvr_ver[] = DRVR_VERSION;
120128 +char be_fw_ver[32]; /* F/W version filled in by be_probe */
120129 +char be_driver_name[] = "benet";
120130 +
120131 +/*
120132 + * Number of entries in each queue.
120133 + */
120134 +#define EVENT_Q_LEN 1024
120135 +#define ETH_TXQ_LEN 2048
120136 +#define ETH_TXCQ_LEN 1024
120137 +#define ETH_RXQ_LEN 1024 /* Does not support any other value */
120138 +#define ETH_UC_RXCQ_LEN 1024
120139 +#define ETH_BC_RXCQ_LEN 256
120140 +#define MCC_Q_LEN 64 /* total size not to exceed 8 pages */
120141 +#define MCC_CQ_LEN 256
120142 +
120143 +/* Bit mask describing events of interest to be traced */
120144 +unsigned int trace_level;
120145 +
120146 +static int
120147 +init_pci_be_function(struct be_adapter *adapter, struct pci_dev *pdev)
120148 +{
120149 + u64 pa;
120150 +
120151 + /* CSR */
120152 + pa = pci_resource_start(pdev, 2);
120153 + adapter->csr_va = ioremap_nocache(pa, pci_resource_len(pdev, 2));
120154 + if (adapter->csr_va == NULL)
120155 + return -ENOMEM;
120156 +
120157 + /* Door Bell */
120158 + pa = pci_resource_start(pdev, 4);
120159 + adapter->db_va = ioremap_nocache(pa, (128 * 1024));
120160 + if (adapter->db_va == NULL) {
120161 + iounmap(adapter->csr_va);
120162 + return -ENOMEM;
120163 + }
120164 +
120165 + /* PCI */
120166 + pa = pci_resource_start(pdev, 1);
120167 + adapter->pci_va = ioremap_nocache(pa, pci_resource_len(pdev, 1));
120168 + if (adapter->pci_va == NULL) {
120169 + iounmap(adapter->csr_va);
120170 + iounmap(adapter->db_va);
120171 + return -ENOMEM;
120172 + }
120173 + return 0;
120174 +}
120175 +
120176 +/*
120177 + This function enables the interrupt corresponding to the Event
120178 + queue ID for the given NetObject
120179 +*/
120180 +void be_enable_eq_intr(struct be_net_object *pnob)
120181 +{
120182 + struct CQ_DB_AMAP cqdb;
120183 + cqdb.dw[0] = 0;
120184 + AMAP_SET_BITS_PTR(CQ_DB, event, &cqdb, 1);
120185 + AMAP_SET_BITS_PTR(CQ_DB, rearm, &cqdb, 1);
120186 + AMAP_SET_BITS_PTR(CQ_DB, num_popped, &cqdb, 0);
120187 + AMAP_SET_BITS_PTR(CQ_DB, qid, &cqdb, pnob->event_q_id);
120188 + PD_WRITE(&pnob->fn_obj, cq_db, cqdb.dw[0]);
120189 +}
120190 +
120191 +/*
120192 + This function disables the interrupt corresponding to the Event
120193 + queue ID for the given NetObject
120194 +*/
120195 +void be_disable_eq_intr(struct be_net_object *pnob)
120196 +{
120197 + struct CQ_DB_AMAP cqdb;
120198 + cqdb.dw[0] = 0;
120199 + AMAP_SET_BITS_PTR(CQ_DB, event, &cqdb, 1);
120200 + AMAP_SET_BITS_PTR(CQ_DB, rearm, &cqdb, 0);
120201 + AMAP_SET_BITS_PTR(CQ_DB, num_popped, &cqdb, 0);
120202 + AMAP_SET_BITS_PTR(CQ_DB, qid, &cqdb, pnob->event_q_id);
120203 + PD_WRITE(&pnob->fn_obj, cq_db, cqdb.dw[0]);
120204 +}
120205 +
120206 +/*
120207 + This function enables the interrupt from the network function
120208 + of the BladeEngine. Use the function be_disable_eq_intr()
120209 + to enable the interrupt from the event queue of only one specific
120210 + NetObject
120211 +*/
120212 +void be_enable_intr(struct be_net_object *pnob)
120213 +{
120214 + struct PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP ctrl;
120215 + u32 host_intr;
120216 +
120217 + ctrl.dw[0] = PCICFG1_READ(&pnob->fn_obj, host_timer_int_ctrl);
120218 + host_intr = AMAP_GET_BITS_PTR(PCICFG_HOST_TIMER_INT_CTRL_CSR,
120219 + hostintr, ctrl.dw);
120220 + if (!host_intr) {
120221 + AMAP_SET_BITS_PTR(PCICFG_HOST_TIMER_INT_CTRL_CSR,
120222 + hostintr, ctrl.dw, 1);
120223 + PCICFG1_WRITE(&pnob->fn_obj, host_timer_int_ctrl,
120224 + ctrl.dw[0]);
120225 + }
120226 +}
120227 +
120228 +/*
120229 + This function disables the interrupt from the network function of
120230 + the BladeEngine. Use the function be_disable_eq_intr() to
120231 + disable the interrupt from the event queue of only one specific NetObject
120232 +*/
120233 +void be_disable_intr(struct be_net_object *pnob)
120234 +{
120235 +
120236 + struct PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP ctrl;
120237 + u32 host_intr;
120238 + ctrl.dw[0] = PCICFG1_READ(&pnob->fn_obj, host_timer_int_ctrl);
120239 + host_intr = AMAP_GET_BITS_PTR(PCICFG_HOST_TIMER_INT_CTRL_CSR,
120240 + hostintr, ctrl.dw);
120241 + if (host_intr) {
120242 + AMAP_SET_BITS_PTR(PCICFG_HOST_TIMER_INT_CTRL_CSR, hostintr,
120243 + ctrl.dw, 0);
120244 + PCICFG1_WRITE(&pnob->fn_obj, host_timer_int_ctrl,
120245 + ctrl.dw[0]);
120246 + }
120247 +}
120248 +
120249 +static int be_enable_msix(struct be_adapter *adapter)
120250 +{
120251 + int i, ret;
120252 +
120253 + if (!msix)
120254 + return -1;
120255 +
120256 + for (i = 0; i < BE_MAX_REQ_MSIX_VECTORS; i++)
120257 + adapter->msix_entries[i].entry = i;
120258 +
120259 + ret = pci_enable_msix(adapter->pdev, adapter->msix_entries,
120260 + BE_MAX_REQ_MSIX_VECTORS);
120261 +
120262 + if (ret == 0)
120263 + adapter->msix_enabled = 1;
120264 + return ret;
120265 +}
120266 +
120267 +static int be_register_isr(struct be_adapter *adapter,
120268 + struct be_net_object *pnob)
120269 +{
120270 + struct net_device *netdev = pnob->netdev;
120271 + int intx = 0, r;
120272 +
120273 + netdev->irq = adapter->pdev->irq;
120274 + r = be_enable_msix(adapter);
120275 +
120276 + if (r == 0) {
120277 + r = request_irq(adapter->msix_entries[0].vector,
120278 + be_int, IRQF_SHARED, netdev->name, netdev);
120279 + if (r) {
120280 + printk(KERN_WARNING
120281 + "MSIX Request IRQ failed - Errno %d\n", r);
120282 + intx = 1;
120283 + pci_disable_msix(adapter->pdev);
120284 + adapter->msix_enabled = 0;
120285 + }
120286 + } else {
120287 + intx = 1;
120288 + }
120289 +
120290 + if (intx) {
120291 + r = request_irq(netdev->irq, be_int, IRQF_SHARED,
120292 + netdev->name, netdev);
120293 + if (r) {
120294 + printk(KERN_WARNING
120295 + "INTx Request IRQ failed - Errno %d\n", r);
120296 + return -1;
120297 + }
120298 + }
120299 + adapter->isr_registered = 1;
120300 + return 0;
120301 +}
120302 +
120303 +static void be_unregister_isr(struct be_adapter *adapter)
120304 +{
120305 + struct net_device *netdev = adapter->netdevp;
120306 + if (adapter->isr_registered) {
120307 + if (adapter->msix_enabled) {
120308 + free_irq(adapter->msix_entries[0].vector, netdev);
120309 + pci_disable_msix(adapter->pdev);
120310 + adapter->msix_enabled = 0;
120311 + } else {
120312 + free_irq(netdev->irq, netdev);
120313 + }
120314 + adapter->isr_registered = 0;
120315 + }
120316 +}
120317 +
120318 +/*
120319 + This function processes the Flush Completions that are issued by the
120320 + ARM F/W, when a Recv Ring is destroyed. A flush completion is
120321 + identified when a Rx COmpl descriptor has the tcpcksum and udpcksum
120322 + set and the pktsize is 32. These completions are received on the
120323 + Rx Completion Queue.
120324 +*/
120325 +static u32 be_process_rx_flush_cmpl(struct be_net_object *pnob)
120326 +{
120327 + struct ETH_RX_COMPL_AMAP *rxcp;
120328 + unsigned int i = 0;
120329 + while ((rxcp = be_get_rx_cmpl(pnob)) != NULL) {
120330 + be_notify_cmpl(pnob, 1, pnob->rx_cq_id, 1);
120331 + i++;
120332 + }
120333 + return i;
120334 +}
120335 +
120336 +static void be_tx_q_clean(struct be_net_object *pnob)
120337 +{
120338 + while (atomic_read(&pnob->tx_q_used))
120339 + process_one_tx_compl(pnob, tx_compl_lastwrb_idx_get(pnob));
120340 +}
120341 +
120342 +static void be_rx_q_clean(struct be_net_object *pnob)
120343 +{
120344 + if (pnob->rx_ctxt) {
120345 + int i;
120346 + struct be_rx_page_info *rx_page_info;
120347 + for (i = 0; i < pnob->rx_q_len; i++) {
120348 + rx_page_info = &(pnob->rx_page_info[i]);
120349 + if (!pnob->rx_pg_shared || rx_page_info->page_offset) {
120350 + pci_unmap_page(pnob->adapter->pdev,
120351 + pci_unmap_addr(rx_page_info, bus),
120352 + pnob->rx_buf_size,
120353 + PCI_DMA_FROMDEVICE);
120354 + }
120355 + if (rx_page_info->page)
120356 + put_page(rx_page_info->page);
120357 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
120358 + }
120359 + pnob->rx_pg_info_hd = 0;
120360 + }
120361 +}
120362 +
120363 +static void be_destroy_netobj(struct be_net_object *pnob)
120364 +{
120365 + int status;
120366 +
120367 + if (pnob->tx_q_created) {
120368 + status = be_eth_sq_destroy(&pnob->tx_q_obj);
120369 + pnob->tx_q_created = 0;
120370 + }
120371 +
120372 + if (pnob->rx_q_created) {
120373 + status = be_eth_rq_destroy(&pnob->rx_q_obj);
120374 + if (status != 0) {
120375 + status = be_eth_rq_destroy_options(&pnob->rx_q_obj, 0,
120376 + NULL, NULL);
120377 + BUG_ON(status);
120378 + }
120379 + pnob->rx_q_created = 0;
120380 + }
120381 +
120382 + be_process_rx_flush_cmpl(pnob);
120383 +
120384 + if (pnob->tx_cq_created) {
120385 + status = be_cq_destroy(&pnob->tx_cq_obj);
120386 + pnob->tx_cq_created = 0;
120387 + }
120388 +
120389 + if (pnob->rx_cq_created) {
120390 + status = be_cq_destroy(&pnob->rx_cq_obj);
120391 + pnob->rx_cq_created = 0;
120392 + }
120393 +
120394 + if (pnob->mcc_q_created) {
120395 + status = be_mcc_ring_destroy(&pnob->mcc_q_obj);
120396 + pnob->mcc_q_created = 0;
120397 + }
120398 + if (pnob->mcc_cq_created) {
120399 + status = be_cq_destroy(&pnob->mcc_cq_obj);
120400 + pnob->mcc_cq_created = 0;
120401 + }
120402 +
120403 + if (pnob->event_q_created) {
120404 + status = be_eq_destroy(&pnob->event_q_obj);
120405 + pnob->event_q_created = 0;
120406 + }
120407 + be_function_cleanup(&pnob->fn_obj);
120408 +}
120409 +
120410 +/*
120411 + * free all resources associated with a pnob
120412 + * Called at the time of module cleanup as well a any error during
120413 + * module init. Some resources may be partially allocated in a NetObj.
120414 + */
120415 +static void netobject_cleanup(struct be_adapter *adapter,
120416 + struct be_net_object *pnob)
120417 +{
120418 + struct net_device *netdev = adapter->netdevp;
120419 +
120420 + if (netif_running(netdev)) {
120421 + netif_stop_queue(netdev);
120422 + be_wait_nic_tx_cmplx_cmpl(pnob);
120423 + be_disable_eq_intr(pnob);
120424 + }
120425 +
120426 + be_unregister_isr(adapter);
120427 +
120428 + if (adapter->tasklet_started) {
120429 + tasklet_kill(&(adapter->sts_handler));
120430 + adapter->tasklet_started = 0;
120431 + }
120432 + if (pnob->fn_obj_created)
120433 + be_disable_intr(pnob);
120434 +
120435 + if (adapter->dev_state != BE_DEV_STATE_NONE)
120436 + unregister_netdev(netdev);
120437 +
120438 + if (pnob->fn_obj_created)
120439 + be_destroy_netobj(pnob);
120440 +
120441 + adapter->net_obj = NULL;
120442 + adapter->netdevp = NULL;
120443 +
120444 + be_rx_q_clean(pnob);
120445 + if (pnob->rx_ctxt) {
120446 + kfree(pnob->rx_page_info);
120447 + kfree(pnob->rx_ctxt);
120448 + }
120449 +
120450 + be_tx_q_clean(pnob);
120451 + kfree(pnob->tx_ctxt);
120452 +
120453 + if (pnob->mcc_q)
120454 + pci_free_consistent(adapter->pdev, pnob->mcc_q_size,
120455 + pnob->mcc_q, pnob->mcc_q_bus);
120456 +
120457 + if (pnob->mcc_wrb_ctxt)
120458 + free_pages((unsigned long)pnob->mcc_wrb_ctxt,
120459 + get_order(pnob->mcc_wrb_ctxt_size));
120460 +
120461 + if (pnob->mcc_cq)
120462 + pci_free_consistent(adapter->pdev, pnob->mcc_cq_size,
120463 + pnob->mcc_cq, pnob->mcc_cq_bus);
120464 +
120465 + if (pnob->event_q)
120466 + pci_free_consistent(adapter->pdev, pnob->event_q_size,
120467 + pnob->event_q, pnob->event_q_bus);
120468 +
120469 + if (pnob->tx_cq)
120470 + pci_free_consistent(adapter->pdev, pnob->tx_cq_size,
120471 + pnob->tx_cq, pnob->tx_cq_bus);
120472 +
120473 + if (pnob->tx_q)
120474 + pci_free_consistent(adapter->pdev, pnob->tx_q_size,
120475 + pnob->tx_q, pnob->tx_q_bus);
120476 +
120477 + if (pnob->rx_q)
120478 + pci_free_consistent(adapter->pdev, pnob->rx_q_size,
120479 + pnob->rx_q, pnob->rx_q_bus);
120480 +
120481 + if (pnob->rx_cq)
120482 + pci_free_consistent(adapter->pdev, pnob->rx_cq_size,
120483 + pnob->rx_cq, pnob->rx_cq_bus);
120484 +
120485 +
120486 + if (pnob->mb_ptr)
120487 + pci_free_consistent(adapter->pdev, pnob->mb_size, pnob->mb_ptr,
120488 + pnob->mb_bus);
120489 +
120490 + free_netdev(netdev);
120491 +}
120492 +
120493 +
120494 +static int be_nob_ring_alloc(struct be_adapter *adapter,
120495 + struct be_net_object *pnob)
120496 +{
120497 + u32 size;
120498 +
120499 + /* Mail box rd; mailbox pointer needs to be 16 byte aligned */
120500 + pnob->mb_size = sizeof(struct MCC_MAILBOX_AMAP) + 16;
120501 + pnob->mb_ptr = pci_alloc_consistent(adapter->pdev, pnob->mb_size,
120502 + &pnob->mb_bus);
120503 + if (!pnob->mb_bus)
120504 + return -1;
120505 + memset(pnob->mb_ptr, 0, pnob->mb_size);
120506 + pnob->mb_rd.va = PTR_ALIGN(pnob->mb_ptr, 16);
120507 + pnob->mb_rd.pa = PTR_ALIGN(pnob->mb_bus, 16);
120508 + pnob->mb_rd.length = sizeof(struct MCC_MAILBOX_AMAP);
120509 + /*
120510 + * Event queue
120511 + */
120512 + pnob->event_q_len = EVENT_Q_LEN;
120513 + pnob->event_q_size = pnob->event_q_len * sizeof(struct EQ_ENTRY_AMAP);
120514 + pnob->event_q = pci_alloc_consistent(adapter->pdev, pnob->event_q_size,
120515 + &pnob->event_q_bus);
120516 + if (!pnob->event_q_bus)
120517 + return -1;
120518 + memset(pnob->event_q, 0, pnob->event_q_size);
120519 + /*
120520 + * Eth TX queue
120521 + */
120522 + pnob->tx_q_len = ETH_TXQ_LEN;
120523 + pnob->tx_q_port = 0;
120524 + pnob->tx_q_size = pnob->tx_q_len * sizeof(struct ETH_WRB_AMAP);
120525 + pnob->tx_q = pci_alloc_consistent(adapter->pdev, pnob->tx_q_size,
120526 + &pnob->tx_q_bus);
120527 + if (!pnob->tx_q_bus)
120528 + return -1;
120529 + memset(pnob->tx_q, 0, pnob->tx_q_size);
120530 + /*
120531 + * Eth TX Compl queue
120532 + */
120533 + pnob->txcq_len = ETH_TXCQ_LEN;
120534 + pnob->tx_cq_size = pnob->txcq_len * sizeof(struct ETH_TX_COMPL_AMAP);
120535 + pnob->tx_cq = pci_alloc_consistent(adapter->pdev, pnob->tx_cq_size,
120536 + &pnob->tx_cq_bus);
120537 + if (!pnob->tx_cq_bus)
120538 + return -1;
120539 + memset(pnob->tx_cq, 0, pnob->tx_cq_size);
120540 + /*
120541 + * Eth RX queue
120542 + */
120543 + pnob->rx_q_len = ETH_RXQ_LEN;
120544 + pnob->rx_q_size = pnob->rx_q_len * sizeof(struct ETH_RX_D_AMAP);
120545 + pnob->rx_q = pci_alloc_consistent(adapter->pdev, pnob->rx_q_size,
120546 + &pnob->rx_q_bus);
120547 + if (!pnob->rx_q_bus)
120548 + return -1;
120549 + memset(pnob->rx_q, 0, pnob->rx_q_size);
120550 + /*
120551 + * Eth Unicast RX Compl queue
120552 + */
120553 + pnob->rx_cq_len = ETH_UC_RXCQ_LEN;
120554 + pnob->rx_cq_size = pnob->rx_cq_len *
120555 + sizeof(struct ETH_RX_COMPL_AMAP);
120556 + pnob->rx_cq = pci_alloc_consistent(adapter->pdev, pnob->rx_cq_size,
120557 + &pnob->rx_cq_bus);
120558 + if (!pnob->rx_cq_bus)
120559 + return -1;
120560 + memset(pnob->rx_cq, 0, pnob->rx_cq_size);
120561 +
120562 + /* TX resources */
120563 + size = pnob->tx_q_len * sizeof(void **);
120564 + pnob->tx_ctxt = kzalloc(size, GFP_KERNEL);
120565 + if (pnob->tx_ctxt == NULL)
120566 + return -1;
120567 +
120568 + /* RX resources */
120569 + size = pnob->rx_q_len * sizeof(void *);
120570 + pnob->rx_ctxt = kzalloc(size, GFP_KERNEL);
120571 + if (pnob->rx_ctxt == NULL)
120572 + return -1;
120573 +
120574 + size = (pnob->rx_q_len * sizeof(struct be_rx_page_info));
120575 + pnob->rx_page_info = kzalloc(size, GFP_KERNEL);
120576 + if (pnob->rx_page_info == NULL)
120577 + return -1;
120578 +
120579 + adapter->eth_statsp = kzalloc(sizeof(struct FWCMD_ETH_GET_STATISTICS),
120580 + GFP_KERNEL);
120581 + if (adapter->eth_statsp == NULL)
120582 + return -1;
120583 + pnob->rx_buf_size = rxbuf_size;
120584 + return 0;
120585 +}
120586 +
120587 +/*
120588 + This function initializes the be_net_object for subsequent
120589 + network operations.
120590 +
120591 + Before calling this function, the driver must have allocated
120592 + space for the NetObject structure, initialized the structure,
120593 + allocated DMAable memory for all the network queues that form
120594 + part of the NetObject and populated the start address (virtual)
120595 + and number of entries allocated for each queue in the NetObject structure.
120596 +
120597 + The driver must also have allocated memory to hold the
120598 + mailbox structure (MCC_MAILBOX) and post the physical address,
120599 + virtual addresses and the size of the mailbox memory in the
120600 + NetObj.mb_rd. This structure is used by BECLIB for
120601 + initial communication with the embedded MCC processor. BECLIB
120602 + uses the mailbox until MCC rings are created for more efficient
120603 + communication with the MCC processor.
120604 +
120605 + If the driver wants to create multiple network interface for more
120606 + than one protection domain, it can call be_create_netobj()
120607 + multiple times once for each protection domain. A Maximum of
120608 + 32 protection domains are supported.
120609 +
120610 +*/
120611 +static int
120612 +be_create_netobj(struct be_net_object *pnob, u8 __iomem *csr_va,
120613 + u8 __iomem *db_va, u8 __iomem *pci_va)
120614 +{
120615 + int status = 0;
120616 + bool eventable = false, tx_no_delay = false, rx_no_delay = false;
120617 + struct be_eq_object *eq_objectp = NULL;
120618 + struct be_function_object *pfob = &pnob->fn_obj;
120619 + struct ring_desc rd;
120620 + u32 set_rxbuf_size;
120621 + u32 tx_cmpl_wm = CEV_WMARK_96; /* 0xffffffff to disable */
120622 + u32 rx_cmpl_wm = CEV_WMARK_160; /* 0xffffffff to disable */
120623 + u32 eq_delay = 0; /* delay in 8usec units. 0xffffffff to disable */
120624 +
120625 + memset(&rd, 0, sizeof(struct ring_desc));
120626 +
120627 + status = be_function_object_create(csr_va, db_va, pci_va,
120628 + BE_FUNCTION_TYPE_NETWORK, &pnob->mb_rd, pfob);
120629 + if (status != BE_SUCCESS)
120630 + return status;
120631 + pnob->fn_obj_created = true;
120632 +
120633 + if (tx_cmpl_wm == 0xffffffff)
120634 + tx_no_delay = true;
120635 + if (rx_cmpl_wm == 0xffffffff)
120636 + rx_no_delay = true;
120637 + /*
120638 + * now create the necessary rings
120639 + * Event Queue first.
120640 + */
120641 + if (pnob->event_q_len) {
120642 + rd.va = pnob->event_q;
120643 + rd.pa = pnob->event_q_bus;
120644 + rd.length = pnob->event_q_size;
120645 +
120646 + status = be_eq_create(pfob, &rd, 4, pnob->event_q_len,
120647 + (u32) -1, /* CEV_WMARK_* or -1 */
120648 + eq_delay, /* in 8us units, or -1 */
120649 + &pnob->event_q_obj);
120650 + if (status != BE_SUCCESS)
120651 + goto error_ret;
120652 + pnob->event_q_id = pnob->event_q_obj.eq_id;
120653 + pnob->event_q_created = 1;
120654 + eventable = true;
120655 + eq_objectp = &pnob->event_q_obj;
120656 + }
120657 + /*
120658 + * Now Eth Tx Compl. queue.
120659 + */
120660 + if (pnob->txcq_len) {
120661 + rd.va = pnob->tx_cq;
120662 + rd.pa = pnob->tx_cq_bus;
120663 + rd.length = pnob->tx_cq_size;
120664 +
120665 + status = be_cq_create(pfob, &rd,
120666 + pnob->txcq_len * sizeof(struct ETH_TX_COMPL_AMAP),
120667 + false, /* solicted events, */
120668 + tx_no_delay, /* nodelay */
120669 + tx_cmpl_wm, /* Watermark encodings */
120670 + eq_objectp, &pnob->tx_cq_obj);
120671 + if (status != BE_SUCCESS)
120672 + goto error_ret;
120673 +
120674 + pnob->tx_cq_id = pnob->tx_cq_obj.cq_id;
120675 + pnob->tx_cq_created = 1;
120676 + }
120677 + /*
120678 + * Eth Tx queue
120679 + */
120680 + if (pnob->tx_q_len) {
120681 + struct be_eth_sq_parameters ex_params = { 0 };
120682 + u32 type;
120683 +
120684 + if (pnob->tx_q_port) {
120685 + /* TXQ to be bound to a specific port */
120686 + type = BE_ETH_TX_RING_TYPE_BOUND;
120687 + ex_params.port = pnob->tx_q_port - 1;
120688 + } else
120689 + type = BE_ETH_TX_RING_TYPE_STANDARD;
120690 +
120691 + rd.va = pnob->tx_q;
120692 + rd.pa = pnob->tx_q_bus;
120693 + rd.length = pnob->tx_q_size;
120694 +
120695 + status = be_eth_sq_create_ex(pfob, &rd,
120696 + pnob->tx_q_len * sizeof(struct ETH_WRB_AMAP),
120697 + type, 2, &pnob->tx_cq_obj,
120698 + &ex_params, &pnob->tx_q_obj);
120699 +
120700 + if (status != BE_SUCCESS)
120701 + goto error_ret;
120702 +
120703 + pnob->tx_q_id = pnob->tx_q_obj.bid;
120704 + pnob->tx_q_created = 1;
120705 + }
120706 + /*
120707 + * Now Eth Rx compl. queue. Always needed.
120708 + */
120709 + rd.va = pnob->rx_cq;
120710 + rd.pa = pnob->rx_cq_bus;
120711 + rd.length = pnob->rx_cq_size;
120712 +
120713 + status = be_cq_create(pfob, &rd,
120714 + pnob->rx_cq_len * sizeof(struct ETH_RX_COMPL_AMAP),
120715 + false, /* solicted events, */
120716 + rx_no_delay, /* nodelay */
120717 + rx_cmpl_wm, /* Watermark encodings */
120718 + eq_objectp, &pnob->rx_cq_obj);
120719 + if (status != BE_SUCCESS)
120720 + goto error_ret;
120721 +
120722 + pnob->rx_cq_id = pnob->rx_cq_obj.cq_id;
120723 + pnob->rx_cq_created = 1;
120724 +
120725 + status = be_eth_rq_set_frag_size(pfob, pnob->rx_buf_size,
120726 + (u32 *) &set_rxbuf_size);
120727 + if (status != BE_SUCCESS) {
120728 + be_eth_rq_get_frag_size(pfob, (u32 *) &pnob->rx_buf_size);
120729 + if ((pnob->rx_buf_size != 2048) && (pnob->rx_buf_size != 4096)
120730 + && (pnob->rx_buf_size != 8192))
120731 + goto error_ret;
120732 + } else {
120733 + if (pnob->rx_buf_size != set_rxbuf_size)
120734 + pnob->rx_buf_size = set_rxbuf_size;
120735 + }
120736 + /*
120737 + * Eth RX queue. be_eth_rq_create() always assumes 2 pages size
120738 + */
120739 + rd.va = pnob->rx_q;
120740 + rd.pa = pnob->rx_q_bus;
120741 + rd.length = pnob->rx_q_size;
120742 +
120743 + status = be_eth_rq_create(pfob, &rd, &pnob->rx_cq_obj,
120744 + &pnob->rx_cq_obj, &pnob->rx_q_obj);
120745 +
120746 + if (status != BE_SUCCESS)
120747 + goto error_ret;
120748 +
120749 + pnob->rx_q_id = pnob->rx_q_obj.rid;
120750 + pnob->rx_q_created = 1;
120751 +
120752 + return BE_SUCCESS; /* All required queues created. */
120753 +
120754 +error_ret:
120755 + be_destroy_netobj(pnob);
120756 + return status;
120757 +}
120758 +
120759 +static int be_nob_ring_init(struct be_adapter *adapter,
120760 + struct be_net_object *pnob)
120761 +{
120762 + int status;
120763 +
120764 + pnob->event_q_tl = 0;
120765 +
120766 + pnob->tx_q_hd = 0;
120767 + pnob->tx_q_tl = 0;
120768 +
120769 + pnob->tx_cq_tl = 0;
120770 +
120771 + pnob->rx_cq_tl = 0;
120772 +
120773 + memset(pnob->event_q, 0, pnob->event_q_size);
120774 + memset(pnob->tx_cq, 0, pnob->tx_cq_size);
120775 + memset(pnob->tx_ctxt, 0, pnob->tx_q_len * sizeof(void **));
120776 + memset(pnob->rx_ctxt, 0, pnob->rx_q_len * sizeof(void *));
120777 + pnob->rx_pg_info_hd = 0;
120778 + pnob->rx_q_hd = 0;
120779 + atomic_set(&pnob->rx_q_posted, 0);
120780 +
120781 + status = be_create_netobj(pnob, adapter->csr_va, adapter->db_va,
120782 + adapter->pci_va);
120783 + if (status != BE_SUCCESS)
120784 + return -1;
120785 +
120786 + be_post_eth_rx_buffs(pnob);
120787 + return 0;
120788 +}
120789 +
120790 +/* This function handles async callback for link status */
120791 +static void
120792 +be_link_status_async_callback(void *context, u32 event_code, void *event)
120793 +{
120794 + struct ASYNC_EVENT_LINK_STATE_AMAP *link_status = event;
120795 + struct be_adapter *adapter = context;
120796 + bool link_enable = false;
120797 + struct be_net_object *pnob;
120798 + struct ASYNC_EVENT_TRAILER_AMAP *async_trailer;
120799 + struct net_device *netdev;
120800 + u32 async_event_code, async_event_type, active_port;
120801 + u32 port0_link_status, port1_link_status, port0_duplex, port1_duplex;
120802 + u32 port0_speed, port1_speed;
120803 +
120804 + if (event_code != ASYNC_EVENT_CODE_LINK_STATE) {
120805 + /* Not our event to handle */
120806 + return;
120807 + }
120808 + async_trailer = (struct ASYNC_EVENT_TRAILER_AMAP *)
120809 + ((u8 *) event + sizeof(struct MCC_CQ_ENTRY_AMAP) -
120810 + sizeof(struct ASYNC_EVENT_TRAILER_AMAP));
120811 +
120812 + async_event_code = AMAP_GET_BITS_PTR(ASYNC_EVENT_TRAILER, event_code,
120813 + async_trailer);
120814 + BUG_ON(async_event_code != ASYNC_EVENT_CODE_LINK_STATE);
120815 +
120816 + pnob = adapter->net_obj;
120817 + netdev = pnob->netdev;
120818 +
120819 + /* Determine if this event is a switch VLD or a physical link event */
120820 + async_event_type = AMAP_GET_BITS_PTR(ASYNC_EVENT_TRAILER, event_type,
120821 + async_trailer);
120822 + active_port = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120823 + active_port, link_status);
120824 + port0_link_status = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120825 + port0_link_status, link_status);
120826 + port1_link_status = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120827 + port1_link_status, link_status);
120828 + port0_duplex = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120829 + port0_duplex, link_status);
120830 + port1_duplex = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120831 + port1_duplex, link_status);
120832 + port0_speed = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120833 + port0_speed, link_status);
120834 + port1_speed = AMAP_GET_BITS_PTR(ASYNC_EVENT_LINK_STATE,
120835 + port1_speed, link_status);
120836 + if (async_event_type == NTWK_LINK_TYPE_VIRTUAL) {
120837 + adapter->be_stat.bes_link_change_virtual++;
120838 + if (adapter->be_link_sts->active_port != active_port) {
120839 + dev_notice(&netdev->dev,
120840 + "Active port changed due to VLD on switch\n");
120841 + } else {
120842 + dev_notice(&netdev->dev, "Link status update\n");
120843 + }
120844 +
120845 + } else {
120846 + adapter->be_stat.bes_link_change_physical++;
120847 + if (adapter->be_link_sts->active_port != active_port) {
120848 + dev_notice(&netdev->dev,
120849 + "Active port changed due to port link"
120850 + " status change\n");
120851 + } else {
120852 + dev_notice(&netdev->dev, "Link status update\n");
120853 + }
120854 + }
120855 +
120856 + memset(adapter->be_link_sts, 0, sizeof(adapter->be_link_sts));
120857 +
120858 + if ((port0_link_status == ASYNC_EVENT_LINK_UP) ||
120859 + (port1_link_status == ASYNC_EVENT_LINK_UP)) {
120860 + if ((adapter->port0_link_sts == BE_PORT_LINK_DOWN) &&
120861 + (adapter->port1_link_sts == BE_PORT_LINK_DOWN)) {
120862 + /* Earlier both the ports are down So link is up */
120863 + link_enable = true;
120864 + }
120865 +
120866 + if (port0_link_status == ASYNC_EVENT_LINK_UP) {
120867 + adapter->port0_link_sts = BE_PORT_LINK_UP;
120868 + adapter->be_link_sts->mac0_duplex = port0_duplex;
120869 + adapter->be_link_sts->mac0_speed = port0_speed;
120870 + if (active_port == NTWK_PORT_A)
120871 + adapter->be_link_sts->active_port = 0;
120872 + } else
120873 + adapter->port0_link_sts = BE_PORT_LINK_DOWN;
120874 +
120875 + if (port1_link_status == ASYNC_EVENT_LINK_UP) {
120876 + adapter->port1_link_sts = BE_PORT_LINK_UP;
120877 + adapter->be_link_sts->mac1_duplex = port1_duplex;
120878 + adapter->be_link_sts->mac1_speed = port1_speed;
120879 + if (active_port == NTWK_PORT_B)
120880 + adapter->be_link_sts->active_port = 1;
120881 + } else
120882 + adapter->port1_link_sts = BE_PORT_LINK_DOWN;
120883 +
120884 + printk(KERN_INFO "Link Properties for %s:\n", netdev->name);
120885 + dev_info(&netdev->dev, "Link Properties:\n");
120886 + be_print_link_info(adapter->be_link_sts);
120887 +
120888 + if (!link_enable)
120889 + return;
120890 + /*
120891 + * Both ports were down previously, but atleast one of
120892 + * them has come up if this netdevice's carrier is not up,
120893 + * then indicate to stack
120894 + */
120895 + if (!netif_carrier_ok(netdev)) {
120896 + netif_start_queue(netdev);
120897 + netif_carrier_on(netdev);
120898 + }
120899 + return;
120900 + }
120901 +
120902 + /* Now both the ports are down. Tell the stack about it */
120903 + dev_info(&netdev->dev, "Both ports are down\n");
120904 + adapter->port0_link_sts = BE_PORT_LINK_DOWN;
120905 + adapter->port1_link_sts = BE_PORT_LINK_DOWN;
120906 + if (netif_carrier_ok(netdev)) {
120907 + netif_carrier_off(netdev);
120908 + netif_stop_queue(netdev);
120909 + }
120910 + return;
120911 +}
120912 +
120913 +static int be_mcc_create(struct be_adapter *adapter)
120914 +{
120915 + struct be_net_object *pnob;
120916 +
120917 + pnob = adapter->net_obj;
120918 + /*
120919 + * Create the MCC ring so that all further communication with
120920 + * MCC can go thru the ring. we do this at the end since
120921 + * we do not want to be dealing with interrupts until the
120922 + * initialization is complete.
120923 + */
120924 + pnob->mcc_q_len = MCC_Q_LEN;
120925 + pnob->mcc_q_size = pnob->mcc_q_len * sizeof(struct MCC_WRB_AMAP);
120926 + pnob->mcc_q = pci_alloc_consistent(adapter->pdev, pnob->mcc_q_size,
120927 + &pnob->mcc_q_bus);
120928 + if (!pnob->mcc_q_bus)
120929 + return -1;
120930 + /*
120931 + * space for MCC WRB context
120932 + */
120933 + pnob->mcc_wrb_ctxtLen = MCC_Q_LEN;
120934 + pnob->mcc_wrb_ctxt_size = pnob->mcc_wrb_ctxtLen *
120935 + sizeof(struct be_mcc_wrb_context);
120936 + pnob->mcc_wrb_ctxt = (void *)__get_free_pages(GFP_KERNEL,
120937 + get_order(pnob->mcc_wrb_ctxt_size));
120938 + if (pnob->mcc_wrb_ctxt == NULL)
120939 + return -1;
120940 + /*
120941 + * Space for MCC compl. ring
120942 + */
120943 + pnob->mcc_cq_len = MCC_CQ_LEN;
120944 + pnob->mcc_cq_size = pnob->mcc_cq_len * sizeof(struct MCC_CQ_ENTRY_AMAP);
120945 + pnob->mcc_cq = pci_alloc_consistent(adapter->pdev, pnob->mcc_cq_size,
120946 + &pnob->mcc_cq_bus);
120947 + if (!pnob->mcc_cq_bus)
120948 + return -1;
120949 + return 0;
120950 +}
120951 +
120952 +/*
120953 + This function creates the MCC request and completion ring required
120954 + for communicating with the ARM processor. The caller must have
120955 + allocated required amount of memory for the MCC ring and MCC
120956 + completion ring and posted the virtual address and number of
120957 + entries in the corresponding members (mcc_q and mcc_cq) in the
120958 + NetObject struture.
120959 +
120960 + When this call is completed, all further communication with
120961 + ARM will switch from mailbox to this ring.
120962 +
120963 + pnob - Pointer to the NetObject structure. This NetObject should
120964 + have been created using a previous call to be_create_netobj()
120965 +*/
120966 +int be_create_mcc_rings(struct be_net_object *pnob)
120967 +{
120968 + int status = 0;
120969 + struct ring_desc rd;
120970 + struct be_function_object *pfob = &pnob->fn_obj;
120971 +
120972 + memset(&rd, 0, sizeof(struct ring_desc));
120973 + if (pnob->mcc_cq_len) {
120974 + rd.va = pnob->mcc_cq;
120975 + rd.pa = pnob->mcc_cq_bus;
120976 + rd.length = pnob->mcc_cq_size;
120977 +
120978 + status = be_cq_create(pfob, &rd,
120979 + pnob->mcc_cq_len * sizeof(struct MCC_CQ_ENTRY_AMAP),
120980 + false, /* solicted events, */
120981 + true, /* nodelay */
120982 + 0, /* 0 Watermark since Nodelay is true */
120983 + &pnob->event_q_obj,
120984 + &pnob->mcc_cq_obj);
120985 +
120986 + if (status != BE_SUCCESS)
120987 + return status;
120988 +
120989 + pnob->mcc_cq_id = pnob->mcc_cq_obj.cq_id;
120990 + pnob->mcc_cq_created = 1;
120991 + }
120992 + if (pnob->mcc_q_len) {
120993 + rd.va = pnob->mcc_q;
120994 + rd.pa = pnob->mcc_q_bus;
120995 + rd.length = pnob->mcc_q_size;
120996 +
120997 + status = be_mcc_ring_create(pfob, &rd,
120998 + pnob->mcc_q_len * sizeof(struct MCC_WRB_AMAP),
120999 + pnob->mcc_wrb_ctxt, pnob->mcc_wrb_ctxtLen,
121000 + &pnob->mcc_cq_obj, &pnob->mcc_q_obj);
121001 +
121002 + if (status != BE_SUCCESS)
121003 + return status;
121004 +
121005 + pnob->mcc_q_created = 1;
121006 + }
121007 + return BE_SUCCESS;
121008 +}
121009 +
121010 +static int be_mcc_init(struct be_adapter *adapter)
121011 +{
121012 + u32 r;
121013 + struct be_net_object *pnob;
121014 +
121015 + pnob = adapter->net_obj;
121016 + memset(pnob->mcc_q, 0, pnob->mcc_q_size);
121017 + pnob->mcc_q_hd = 0;
121018 +
121019 + memset(pnob->mcc_wrb_ctxt, 0, pnob->mcc_wrb_ctxt_size);
121020 +
121021 + memset(pnob->mcc_cq, 0, pnob->mcc_cq_size);
121022 + pnob->mcc_cq_tl = 0;
121023 +
121024 + r = be_create_mcc_rings(adapter->net_obj);
121025 + if (r != BE_SUCCESS)
121026 + return -1;
121027 +
121028 + return 0;
121029 +}
121030 +
121031 +static void be_remove(struct pci_dev *pdev)
121032 +{
121033 + struct be_net_object *pnob;
121034 + struct be_adapter *adapter;
121035 +
121036 + adapter = pci_get_drvdata(pdev);
121037 + if (!adapter)
121038 + return;
121039 +
121040 + pci_set_drvdata(pdev, NULL);
121041 + pnob = (struct be_net_object *)adapter->net_obj;
121042 +
121043 + flush_scheduled_work();
121044 +
121045 + if (pnob) {
121046 + /* Unregister async callback function for link status updates */
121047 + if (pnob->mcc_q_created)
121048 + be_mcc_add_async_event_callback(&pnob->mcc_q_obj,
121049 + NULL, NULL);
121050 + netobject_cleanup(adapter, pnob);
121051 + }
121052 +
121053 + if (adapter->csr_va)
121054 + iounmap(adapter->csr_va);
121055 + if (adapter->db_va)
121056 + iounmap(adapter->db_va);
121057 + if (adapter->pci_va)
121058 + iounmap(adapter->pci_va);
121059 +
121060 + pci_release_regions(adapter->pdev);
121061 + pci_disable_device(adapter->pdev);
121062 +
121063 + kfree(adapter->be_link_sts);
121064 + kfree(adapter->eth_statsp);
121065 +
121066 + if (adapter->timer_ctxt.get_stats_timer.function)
121067 + del_timer_sync(&adapter->timer_ctxt.get_stats_timer);
121068 + kfree(adapter);
121069 +}
121070 +
121071 +/*
121072 + * This function is called by the PCI sub-system when it finds a PCI
121073 + * device with dev/vendor IDs that match with one of our devices.
121074 + * All of the driver initialization is done in this function.
121075 + */
121076 +static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
121077 +{
121078 + int status = 0;
121079 + struct be_adapter *adapter;
121080 + struct FWCMD_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD get_fwv;
121081 + struct be_net_object *pnob;
121082 + struct net_device *netdev;
121083 +
121084 + status = pci_enable_device(pdev);
121085 + if (status)
121086 + goto error;
121087 +
121088 + status = pci_request_regions(pdev, be_driver_name);
121089 + if (status)
121090 + goto error_pci_req;
121091 +
121092 + pci_set_master(pdev);
121093 + adapter = kzalloc(sizeof(struct be_adapter), GFP_KERNEL);
121094 + if (adapter == NULL) {
121095 + status = -ENOMEM;
121096 + goto error_adapter;
121097 + }
121098 + adapter->dev_state = BE_DEV_STATE_NONE;
121099 + adapter->pdev = pdev;
121100 + pci_set_drvdata(pdev, adapter);
121101 +
121102 + adapter->enable_aic = 1;
121103 + adapter->max_eqd = MAX_EQD;
121104 + adapter->min_eqd = 0;
121105 + adapter->cur_eqd = 0;
121106 +
121107 + status = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
121108 + if (!status) {
121109 + adapter->dma_64bit_cap = true;
121110 + } else {
121111 + adapter->dma_64bit_cap = false;
121112 + status = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
121113 + if (status != 0) {
121114 + printk(KERN_ERR "Could not set PCI DMA Mask\n");
121115 + goto cleanup;
121116 + }
121117 + }
121118 +
121119 + status = init_pci_be_function(adapter, pdev);
121120 + if (status != 0) {
121121 + printk(KERN_ERR "Failed to map PCI BARS\n");
121122 + status = -ENOMEM;
121123 + goto cleanup;
121124 + }
121125 +
121126 + be_trace_set_level(DL_ALWAYS | DL_ERR);
121127 +
121128 + adapter->be_link_sts = kmalloc(sizeof(struct BE_LINK_STATUS),
121129 + GFP_KERNEL);
121130 + if (adapter->be_link_sts == NULL) {
121131 + printk(KERN_ERR "Memory allocation for link status "
121132 + "buffer failed\n");
121133 + goto cleanup;
121134 + }
121135 + spin_lock_init(&adapter->txq_lock);
121136 +
121137 + netdev = alloc_etherdev(sizeof(struct be_net_object));
121138 + if (netdev == NULL) {
121139 + status = -ENOMEM;
121140 + goto cleanup;
121141 + }
121142 + pnob = netdev_priv(netdev);
121143 + adapter->net_obj = pnob;
121144 + adapter->netdevp = netdev;
121145 + pnob->adapter = adapter;
121146 + pnob->netdev = netdev;
121147 +
121148 + status = be_nob_ring_alloc(adapter, pnob);
121149 + if (status != 0)
121150 + goto cleanup;
121151 +
121152 + status = be_nob_ring_init(adapter, pnob);
121153 + if (status != 0)
121154 + goto cleanup;
121155 +
121156 + be_rxf_mac_address_read_write(&pnob->fn_obj, false, false, false,
121157 + false, false, netdev->dev_addr, NULL, NULL);
121158 +
121159 + netdev->init = &benet_init;
121160 + netif_carrier_off(netdev);
121161 + netif_stop_queue(netdev);
121162 +
121163 + SET_NETDEV_DEV(netdev, &(adapter->pdev->dev));
121164 +
121165 + netif_napi_add(netdev, &pnob->napi, be_poll, 64);
121166 +
121167 + /* if the rx_frag size if 2K, one page is shared as two RX frags */
121168 + pnob->rx_pg_shared =
121169 + (pnob->rx_buf_size <= PAGE_SIZE / 2) ? true : false;
121170 + if (pnob->rx_buf_size != rxbuf_size) {
121171 + printk(KERN_WARNING
121172 + "Could not set Rx buffer size to %d. Using %d\n",
121173 + rxbuf_size, pnob->rx_buf_size);
121174 + rxbuf_size = pnob->rx_buf_size;
121175 + }
121176 +
121177 + tasklet_init(&(adapter->sts_handler), be_process_intr,
121178 + (unsigned long)adapter);
121179 + adapter->tasklet_started = 1;
121180 + spin_lock_init(&(adapter->int_lock));
121181 +
121182 + status = be_register_isr(adapter, pnob);
121183 + if (status != 0)
121184 + goto cleanup;
121185 +
121186 + adapter->rx_csum = 1;
121187 + adapter->max_rx_coal = BE_LRO_MAX_PKTS;
121188 +
121189 + memset(&get_fwv, 0,
121190 + sizeof(struct FWCMD_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD));
121191 + printk(KERN_INFO "BladeEngine Driver version:%s. "
121192 + "Copyright ServerEngines, Corporation 2005 - 2008\n",
121193 + be_drvr_ver);
121194 + status = be_function_get_fw_version(&pnob->fn_obj, &get_fwv, NULL,
121195 + NULL);
121196 + if (status == BE_SUCCESS) {
121197 + strncpy(be_fw_ver, get_fwv.firmware_version_string, 32);
121198 + printk(KERN_INFO "BladeEngine Firmware Version:%s\n",
121199 + get_fwv.firmware_version_string);
121200 + } else {
121201 + printk(KERN_WARNING "Unable to get BE Firmware Version\n");
121202 + }
121203 +
121204 + sema_init(&adapter->get_eth_stat_sem, 0);
121205 + init_timer(&adapter->timer_ctxt.get_stats_timer);
121206 + atomic_set(&adapter->timer_ctxt.get_stat_flag, 0);
121207 + adapter->timer_ctxt.get_stats_timer.function =
121208 + &be_get_stats_timer_handler;
121209 +
121210 + status = be_mcc_create(adapter);
121211 + if (status < 0)
121212 + goto cleanup;
121213 + status = be_mcc_init(adapter);
121214 + if (status < 0)
121215 + goto cleanup;
121216 +
121217 +
121218 + status = be_mcc_add_async_event_callback(&adapter->net_obj->mcc_q_obj,
121219 + be_link_status_async_callback, (void *)adapter);
121220 + if (status != BE_SUCCESS) {
121221 + printk(KERN_WARNING "add_async_event_callback failed");
121222 + printk(KERN_WARNING
121223 + "Link status changes may not be reflected\n");
121224 + }
121225 +
121226 + status = register_netdev(netdev);
121227 + if (status != 0)
121228 + goto cleanup;
121229 + be_update_link_status(adapter);
121230 + adapter->dev_state = BE_DEV_STATE_INIT;
121231 + return 0;
121232 +
121233 +cleanup:
121234 + be_remove(pdev);
121235 + return status;
121236 +error_adapter:
121237 + pci_release_regions(pdev);
121238 +error_pci_req:
121239 + pci_disable_device(pdev);
121240 +error:
121241 + printk(KERN_ERR "BladeEngine initalization failed\n");
121242 + return status;
121243 +}
121244 +
121245 +/*
121246 + * Get the current link status and print the status on console
121247 + */
121248 +void be_update_link_status(struct be_adapter *adapter)
121249 +{
121250 + int status;
121251 + struct be_net_object *pnob = adapter->net_obj;
121252 +
121253 + status = be_rxf_link_status(&pnob->fn_obj, adapter->be_link_sts, NULL,
121254 + NULL, NULL);
121255 + if (status == BE_SUCCESS) {
121256 + if (adapter->be_link_sts->mac0_speed &&
121257 + adapter->be_link_sts->mac0_duplex)
121258 + adapter->port0_link_sts = BE_PORT_LINK_UP;
121259 + else
121260 + adapter->port0_link_sts = BE_PORT_LINK_DOWN;
121261 +
121262 + if (adapter->be_link_sts->mac1_speed &&
121263 + adapter->be_link_sts->mac1_duplex)
121264 + adapter->port1_link_sts = BE_PORT_LINK_UP;
121265 + else
121266 + adapter->port1_link_sts = BE_PORT_LINK_DOWN;
121267 +
121268 + dev_info(&pnob->netdev->dev, "Link Properties:\n");
121269 + be_print_link_info(adapter->be_link_sts);
121270 + return;
121271 + }
121272 + dev_info(&pnob->netdev->dev, "Could not get link status\n");
121273 + return;
121274 +}
121275 +
121276 +
121277 +#ifdef CONFIG_PM
121278 +static void
121279 +be_pm_cleanup(struct be_adapter *adapter,
121280 + struct be_net_object *pnob, struct net_device *netdev)
121281 +{
121282 + netif_carrier_off(netdev);
121283 + netif_stop_queue(netdev);
121284 +
121285 + be_wait_nic_tx_cmplx_cmpl(pnob);
121286 + be_disable_eq_intr(pnob);
121287 +
121288 + if (adapter->tasklet_started) {
121289 + tasklet_kill(&adapter->sts_handler);
121290 + adapter->tasklet_started = 0;
121291 + }
121292 +
121293 + be_unregister_isr(adapter);
121294 + be_disable_intr(pnob);
121295 +
121296 + be_tx_q_clean(pnob);
121297 + be_rx_q_clean(pnob);
121298 +
121299 + be_destroy_netobj(pnob);
121300 +}
121301 +
121302 +static int be_suspend(struct pci_dev *pdev, pm_message_t state)
121303 +{
121304 + struct be_adapter *adapter = pci_get_drvdata(pdev);
121305 + struct net_device *netdev = adapter->netdevp;
121306 + struct be_net_object *pnob = netdev_priv(netdev);
121307 +
121308 + adapter->dev_pm_state = adapter->dev_state;
121309 + adapter->dev_state = BE_DEV_STATE_SUSPEND;
121310 +
121311 + netif_device_detach(netdev);
121312 + if (netif_running(netdev))
121313 + be_pm_cleanup(adapter, pnob, netdev);
121314 +
121315 + pci_enable_wake(pdev, 3, 1);
121316 + pci_enable_wake(pdev, 4, 1); /* D3 Cold = 4 */
121317 + pci_save_state(pdev);
121318 + pci_disable_device(pdev);
121319 + pci_set_power_state(pdev, pci_choose_state(pdev, state));
121320 + return 0;
121321 +}
121322 +
121323 +static void be_up(struct be_adapter *adapter)
121324 +{
121325 + struct be_net_object *pnob = adapter->net_obj;
121326 +
121327 + if (pnob->num_vlans != 0)
121328 + be_rxf_vlan_config(&pnob->fn_obj, false, pnob->num_vlans,
121329 + pnob->vlan_tag, NULL, NULL, NULL);
121330 +
121331 +}
121332 +
121333 +static int be_resume(struct pci_dev *pdev)
121334 +{
121335 + int status = 0;
121336 + struct be_adapter *adapter = pci_get_drvdata(pdev);
121337 + struct net_device *netdev = adapter->netdevp;
121338 + struct be_net_object *pnob = netdev_priv(netdev);
121339 +
121340 + netif_device_detach(netdev);
121341 +
121342 + status = pci_enable_device(pdev);
121343 + if (status)
121344 + return status;
121345 +
121346 + pci_set_power_state(pdev, 0);
121347 + pci_restore_state(pdev);
121348 + pci_enable_wake(pdev, 3, 0);
121349 + pci_enable_wake(pdev, 4, 0); /* 4 is D3 cold */
121350 +
121351 + netif_carrier_on(netdev);
121352 + netif_start_queue(netdev);
121353 +
121354 + if (netif_running(netdev)) {
121355 + be_rxf_mac_address_read_write(&pnob->fn_obj, false, false,
121356 + false, true, false, netdev->dev_addr, NULL, NULL);
121357 +
121358 + status = be_nob_ring_init(adapter, pnob);
121359 + if (status < 0)
121360 + return status;
121361 +
121362 + tasklet_init(&(adapter->sts_handler), be_process_intr,
121363 + (unsigned long)adapter);
121364 + adapter->tasklet_started = 1;
121365 +
121366 + if (be_register_isr(adapter, pnob) != 0) {
121367 + printk(KERN_ERR "be_register_isr failed\n");
121368 + return status;
121369 + }
121370 +
121371 +
121372 + status = be_mcc_init(adapter);
121373 + if (status < 0) {
121374 + printk(KERN_ERR "be_mcc_init failed\n");
121375 + return status;
121376 + }
121377 + be_update_link_status(adapter);
121378 + /*
121379 + * Register async call back function to handle link
121380 + * status updates
121381 + */
121382 + status = be_mcc_add_async_event_callback(
121383 + &adapter->net_obj->mcc_q_obj,
121384 + be_link_status_async_callback, (void *)adapter);
121385 + if (status != BE_SUCCESS) {
121386 + printk(KERN_WARNING "add_async_event_callback failed");
121387 + printk(KERN_WARNING
121388 + "Link status changes may not be reflected\n");
121389 + }
121390 + be_enable_intr(pnob);
121391 + be_enable_eq_intr(pnob);
121392 + be_up(adapter);
121393 + }
121394 + netif_device_attach(netdev);
121395 + adapter->dev_state = adapter->dev_pm_state;
121396 + return 0;
121397 +
121398 +}
121399 +
121400 +#endif
121401 +
121402 +/* Wait until no more pending transmits */
121403 +void be_wait_nic_tx_cmplx_cmpl(struct be_net_object *pnob)
121404 +{
121405 + int i;
121406 +
121407 + /* Wait for 20us * 50000 (= 1s) and no more */
121408 + i = 0;
121409 + while ((pnob->tx_q_tl != pnob->tx_q_hd) && (i < 50000)) {
121410 + ++i;
121411 + udelay(20);
121412 + }
121413 +
121414 + /* Check for no more pending transmits */
121415 + if (i >= 50000) {
121416 + printk(KERN_WARNING
121417 + "Did not receive completions for all TX requests\n");
121418 + }
121419 +}
121420 +
121421 +static struct pci_driver be_driver = {
121422 + .name = be_driver_name,
121423 + .id_table = be_device_id_table,
121424 + .probe = be_probe,
121425 +#ifdef CONFIG_PM
121426 + .suspend = be_suspend,
121427 + .resume = be_resume,
121428 +#endif
121429 + .remove = be_remove
121430 +};
121431 +
121432 +/*
121433 + * Module init entry point. Registers our our device and return.
121434 + * Our probe will be called if the device is found.
121435 + */
121436 +static int __init be_init_module(void)
121437 +{
121438 + int ret;
121439 +
121440 + if (rxbuf_size != 8192 && rxbuf_size != 4096 && rxbuf_size != 2048) {
121441 + printk(KERN_WARNING
121442 + "Unsupported receive buffer size (%d) requested\n",
121443 + rxbuf_size);
121444 + printk(KERN_WARNING
121445 + "Must be 2048, 4096 or 8192. Defaulting to 2048\n");
121446 + rxbuf_size = 2048;
121447 + }
121448 +
121449 + ret = pci_register_driver(&be_driver);
121450 +
121451 + return ret;
121452 +}
121453 +
121454 +module_init(be_init_module);
121455 +
121456 +/*
121457 + * be_exit_module - Driver Exit Cleanup Routine
121458 + */
121459 +static void __exit be_exit_module(void)
121460 +{
121461 + pci_unregister_driver(&be_driver);
121462 +}
121463 +
121464 +module_exit(be_exit_module);
121465 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/be_int.c linux-2.6.29-rc3.owrt/drivers/staging/benet/be_int.c
121466 --- linux-2.6.29.owrt/drivers/staging/benet/be_int.c 1970-01-01 01:00:00.000000000 +0100
121467 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/be_int.c 2009-05-10 23:48:29.000000000 +0200
121468 @@ -0,0 +1,863 @@
121469 +/*
121470 + * Copyright (C) 2005 - 2008 ServerEngines
121471 + * All rights reserved.
121472 + *
121473 + * This program is free software; you can redistribute it and/or
121474 + * modify it under the terms of the GNU General Public License version 2
121475 + * as published by the Free Software Foundation. The full GNU General
121476 + * Public License is included in this distribution in the file called COPYING.
121477 + *
121478 + * Contact Information:
121479 + * linux-drivers@serverengines.com
121480 + *
121481 + * ServerEngines
121482 + * 209 N. Fair Oaks Ave
121483 + * Sunnyvale, CA 94085
121484 + */
121485 +#include <linux/if_vlan.h>
121486 +#include <linux/inet_lro.h>
121487 +
121488 +#include "benet.h"
121489 +
121490 +/* number of bytes of RX frame that are copied to skb->data */
121491 +#define BE_HDR_LEN 64
121492 +
121493 +#define NETIF_RX(skb) netif_receive_skb(skb)
121494 +#define VLAN_ACCEL_RX(skb, pnob, vt) \
121495 + vlan_hwaccel_rx(skb, pnob->vlan_grp, vt)
121496 +
121497 +/*
121498 + This function notifies BladeEngine of the number of completion
121499 + entries processed from the specified completion queue by writing
121500 + the number of popped entries to the door bell.
121501 +
121502 + pnob - Pointer to the NetObject structure
121503 + n - Number of completion entries processed
121504 + cq_id - Queue ID of the completion queue for which notification
121505 + is being done.
121506 + re_arm - 1 - rearm the completion ring to generate an event.
121507 + - 0 - dont rearm the completion ring to generate an event
121508 +*/
121509 +void be_notify_cmpl(struct be_net_object *pnob, int n, int cq_id, int re_arm)
121510 +{
121511 + struct CQ_DB_AMAP cqdb;
121512 +
121513 + cqdb.dw[0] = 0;
121514 + AMAP_SET_BITS_PTR(CQ_DB, qid, &cqdb, cq_id);
121515 + AMAP_SET_BITS_PTR(CQ_DB, rearm, &cqdb, re_arm);
121516 + AMAP_SET_BITS_PTR(CQ_DB, num_popped, &cqdb, n);
121517 + PD_WRITE(&pnob->fn_obj, cq_db, cqdb.dw[0]);
121518 +}
121519 +
121520 +/*
121521 + * adds additional receive frags indicated by BE starting from given
121522 + * frag index (fi) to specified skb's frag list
121523 + */
121524 +static void
121525 +add_skb_frags(struct be_net_object *pnob, struct sk_buff *skb,
121526 + u32 nresid, u32 fi)
121527 +{
121528 + struct be_adapter *adapter = pnob->adapter;
121529 + u32 sk_frag_idx, n;
121530 + struct be_rx_page_info *rx_page_info;
121531 + u32 frag_sz = pnob->rx_buf_size;
121532 +
121533 + sk_frag_idx = skb_shinfo(skb)->nr_frags;
121534 + while (nresid) {
121535 + index_inc(&fi, pnob->rx_q_len);
121536 +
121537 + rx_page_info = (struct be_rx_page_info *)pnob->rx_ctxt[fi];
121538 + pnob->rx_ctxt[fi] = NULL;
121539 + if ((rx_page_info->page_offset) ||
121540 + (pnob->rx_pg_shared == false)) {
121541 + pci_unmap_page(adapter->pdev,
121542 + pci_unmap_addr(rx_page_info, bus),
121543 + frag_sz, PCI_DMA_FROMDEVICE);
121544 + }
121545 +
121546 + n = min(nresid, frag_sz);
121547 + skb_shinfo(skb)->frags[sk_frag_idx].page = rx_page_info->page;
121548 + skb_shinfo(skb)->frags[sk_frag_idx].page_offset
121549 + = rx_page_info->page_offset;
121550 + skb_shinfo(skb)->frags[sk_frag_idx].size = n;
121551 +
121552 + sk_frag_idx++;
121553 + skb->len += n;
121554 + skb->data_len += n;
121555 + skb_shinfo(skb)->nr_frags++;
121556 + nresid -= n;
121557 +
121558 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121559 + atomic_dec(&pnob->rx_q_posted);
121560 + }
121561 +}
121562 +
121563 +/*
121564 + * This function processes incoming nic packets over various Rx queues.
121565 + * This function takes the adapter, the current Rx status descriptor
121566 + * entry and the Rx completion queue ID as argument.
121567 + */
121568 +static inline int process_nic_rx_completion(struct be_net_object *pnob,
121569 + struct ETH_RX_COMPL_AMAP *rxcp)
121570 +{
121571 + struct be_adapter *adapter = pnob->adapter;
121572 + struct sk_buff *skb;
121573 + int udpcksm, tcpcksm;
121574 + int n;
121575 + u32 nresid, fi;
121576 + u32 frag_sz = pnob->rx_buf_size;
121577 + u8 *va;
121578 + struct be_rx_page_info *rx_page_info;
121579 + u32 numfrags, vtp, vtm, vlan_tag, pktsize;
121580 +
121581 + fi = AMAP_GET_BITS_PTR(ETH_RX_COMPL, fragndx, rxcp);
121582 + BUG_ON(fi >= (int)pnob->rx_q_len);
121583 + BUG_ON(fi < 0);
121584 +
121585 + rx_page_info = (struct be_rx_page_info *)pnob->rx_ctxt[fi];
121586 + BUG_ON(!rx_page_info->page);
121587 + pnob->rx_ctxt[fi] = NULL;
121588 +
121589 + /*
121590 + * If one page is used per fragment or if this is the second half of
121591 + * of the page, unmap the page here
121592 + */
121593 + if ((rx_page_info->page_offset) || (pnob->rx_pg_shared == false)) {
121594 + pci_unmap_page(adapter->pdev,
121595 + pci_unmap_addr(rx_page_info, bus), frag_sz,
121596 + PCI_DMA_FROMDEVICE);
121597 + }
121598 +
121599 + atomic_dec(&pnob->rx_q_posted);
121600 + udpcksm = AMAP_GET_BITS_PTR(ETH_RX_COMPL, udpcksm, rxcp);
121601 + tcpcksm = AMAP_GET_BITS_PTR(ETH_RX_COMPL, tcpcksm, rxcp);
121602 + pktsize = AMAP_GET_BITS_PTR(ETH_RX_COMPL, pktsize, rxcp);
121603 + /*
121604 + * get rid of RX flush completions first.
121605 + */
121606 + if ((tcpcksm) && (udpcksm) && (pktsize == 32)) {
121607 + put_page(rx_page_info->page);
121608 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121609 + return 0;
121610 + }
121611 + skb = netdev_alloc_skb(pnob->netdev, BE_HDR_LEN + NET_IP_ALIGN);
121612 + if (skb == NULL) {
121613 + dev_info(&pnob->netdev->dev, "alloc_skb() failed\n");
121614 + put_page(rx_page_info->page);
121615 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121616 + goto free_frags;
121617 + }
121618 + skb_reserve(skb, NET_IP_ALIGN);
121619 +
121620 + skb->dev = pnob->netdev;
121621 +
121622 + n = min(pktsize, frag_sz);
121623 +
121624 + va = page_address(rx_page_info->page) + rx_page_info->page_offset;
121625 + prefetch(va);
121626 +
121627 + skb->len = n;
121628 + skb->data_len = n;
121629 + if (n <= BE_HDR_LEN) {
121630 + memcpy(skb->data, va, n);
121631 + put_page(rx_page_info->page);
121632 + skb->data_len -= n;
121633 + skb->tail += n;
121634 + } else {
121635 +
121636 + /* Setup the SKB with page buffer information */
121637 + skb_shinfo(skb)->frags[0].page = rx_page_info->page;
121638 + skb_shinfo(skb)->nr_frags++;
121639 +
121640 + /* Copy the header into the skb_data */
121641 + memcpy(skb->data, va, BE_HDR_LEN);
121642 + skb_shinfo(skb)->frags[0].page_offset =
121643 + rx_page_info->page_offset + BE_HDR_LEN;
121644 + skb_shinfo(skb)->frags[0].size = n - BE_HDR_LEN;
121645 + skb->data_len -= BE_HDR_LEN;
121646 + skb->tail += BE_HDR_LEN;
121647 + }
121648 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121649 + nresid = pktsize - n;
121650 +
121651 + skb->protocol = eth_type_trans(skb, pnob->netdev);
121652 +
121653 + if ((tcpcksm || udpcksm) && adapter->rx_csum)
121654 + skb->ip_summed = CHECKSUM_UNNECESSARY;
121655 + else
121656 + skb->ip_summed = CHECKSUM_NONE;
121657 + /*
121658 + * if we have more bytes left, the frame has been
121659 + * given to us in multiple fragments. This happens
121660 + * with Jumbo frames. Add the remaining fragments to
121661 + * skb->frags[] array.
121662 + */
121663 + if (nresid)
121664 + add_skb_frags(pnob, skb, nresid, fi);
121665 +
121666 + /* update the the true size of the skb. */
121667 + skb->truesize = skb->len + sizeof(struct sk_buff);
121668 +
121669 + /*
121670 + * If a 802.3 frame or 802.2 LLC frame
121671 + * (i.e) contains length field in MAC Hdr
121672 + * and frame len is greater than 64 bytes
121673 + */
121674 + if (((skb->protocol == ntohs(ETH_P_802_2)) ||
121675 + (skb->protocol == ntohs(ETH_P_802_3)))
121676 + && (pktsize > BE_HDR_LEN)) {
121677 + /*
121678 + * If the length given in Mac Hdr is less than frame size
121679 + * Erraneous frame, Drop it
121680 + */
121681 + if ((ntohs(*(u16 *) (va + 12)) + ETH_HLEN) < pktsize) {
121682 + /* Increment Non Ether type II frames dropped */
121683 + adapter->be_stat.bes_802_3_dropped_frames++;
121684 +
121685 + kfree_skb(skb);
121686 + return 0;
121687 + }
121688 + /*
121689 + * else if the length given in Mac Hdr is greater than
121690 + * frame size, should not be seeing this sort of frames
121691 + * dump the pkt and pass to stack
121692 + */
121693 + else if ((ntohs(*(u16 *) (va + 12)) + ETH_HLEN) > pktsize) {
121694 + /* Increment Non Ether type II frames malformed */
121695 + adapter->be_stat.bes_802_3_malformed_frames++;
121696 + }
121697 + }
121698 +
121699 + vtp = AMAP_GET_BITS_PTR(ETH_RX_COMPL, vtp, rxcp);
121700 + vtm = AMAP_GET_BITS_PTR(ETH_RX_COMPL, vtm, rxcp);
121701 + if (vtp && vtm) {
121702 + /* Vlan tag present in pkt and BE found
121703 + * that the tag matched an entry in VLAN table
121704 + */
121705 + if (!pnob->vlan_grp || pnob->num_vlans == 0) {
121706 + /* But we have no VLANs configured.
121707 + * This should never happen. Drop the packet.
121708 + */
121709 + dev_info(&pnob->netdev->dev,
121710 + "BladeEngine: Unexpected vlan tagged packet\n");
121711 + kfree_skb(skb);
121712 + return 0;
121713 + }
121714 + /* pass the VLAN packet to stack */
121715 + vlan_tag = AMAP_GET_BITS_PTR(ETH_RX_COMPL, vlan_tag, rxcp);
121716 + VLAN_ACCEL_RX(skb, pnob, be16_to_cpu(vlan_tag));
121717 +
121718 + } else {
121719 + NETIF_RX(skb);
121720 + }
121721 + return 0;
121722 +
121723 +free_frags:
121724 + /* free all frags associated with the current rxcp */
121725 + numfrags = AMAP_GET_BITS_PTR(ETH_RX_COMPL, numfrags, rxcp);
121726 + while (numfrags-- > 1) {
121727 + index_inc(&fi, pnob->rx_q_len);
121728 +
121729 + rx_page_info = (struct be_rx_page_info *)
121730 + pnob->rx_ctxt[fi];
121731 + pnob->rx_ctxt[fi] = (void *)NULL;
121732 + if (rx_page_info->page_offset || !pnob->rx_pg_shared) {
121733 + pci_unmap_page(adapter->pdev,
121734 + pci_unmap_addr(rx_page_info, bus),
121735 + frag_sz, PCI_DMA_FROMDEVICE);
121736 + }
121737 +
121738 + put_page(rx_page_info->page);
121739 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121740 + atomic_dec(&pnob->rx_q_posted);
121741 + }
121742 + return -ENOMEM;
121743 +}
121744 +
121745 +static void process_nic_rx_completion_lro(struct be_net_object *pnob,
121746 + struct ETH_RX_COMPL_AMAP *rxcp)
121747 +{
121748 + struct be_adapter *adapter = pnob->adapter;
121749 + struct skb_frag_struct rx_frags[BE_MAX_FRAGS_PER_FRAME];
121750 + unsigned int udpcksm, tcpcksm;
121751 + u32 numfrags, vlanf, vtm, vlan_tag, nresid;
121752 + u16 vlant;
121753 + unsigned int fi, idx, n;
121754 + struct be_rx_page_info *rx_page_info;
121755 + u32 frag_sz = pnob->rx_buf_size, pktsize;
121756 + bool rx_coal = (adapter->max_rx_coal <= 1) ? 0 : 1;
121757 + u8 err, *va;
121758 + __wsum csum = 0;
121759 +
121760 + if (AMAP_GET_BITS_PTR(ETH_RX_COMPL, ipsec, rxcp)) {
121761 + /* Drop the pkt and move to the next completion. */
121762 + adapter->be_stat.bes_rx_misc_pkts++;
121763 + return;
121764 + }
121765 + err = AMAP_GET_BITS_PTR(ETH_RX_COMPL, err, rxcp);
121766 + if (err || !rx_coal) {
121767 + /* We won't coalesce Rx pkts if the err bit set.
121768 + * take the path of normal completion processing */
121769 + process_nic_rx_completion(pnob, rxcp);
121770 + return;
121771 + }
121772 +
121773 + fi = AMAP_GET_BITS_PTR(ETH_RX_COMPL, fragndx, rxcp);
121774 + BUG_ON(fi >= (int)pnob->rx_q_len);
121775 + BUG_ON(fi < 0);
121776 + rx_page_info = (struct be_rx_page_info *)pnob->rx_ctxt[fi];
121777 + BUG_ON(!rx_page_info->page);
121778 + pnob->rx_ctxt[fi] = (void *)NULL;
121779 + /* If one page is used per fragment or if this is the
121780 + * second half of the page, unmap the page here
121781 + */
121782 + if (rx_page_info->page_offset || !pnob->rx_pg_shared) {
121783 + pci_unmap_page(adapter->pdev,
121784 + pci_unmap_addr(rx_page_info, bus),
121785 + frag_sz, PCI_DMA_FROMDEVICE);
121786 + }
121787 +
121788 + numfrags = AMAP_GET_BITS_PTR(ETH_RX_COMPL, numfrags, rxcp);
121789 + udpcksm = AMAP_GET_BITS_PTR(ETH_RX_COMPL, udpcksm, rxcp);
121790 + tcpcksm = AMAP_GET_BITS_PTR(ETH_RX_COMPL, tcpcksm, rxcp);
121791 + vlan_tag = AMAP_GET_BITS_PTR(ETH_RX_COMPL, vlan_tag, rxcp);
121792 + vlant = be16_to_cpu(vlan_tag);
121793 + vlanf = AMAP_GET_BITS_PTR(ETH_RX_COMPL, vtp, rxcp);
121794 + vtm = AMAP_GET_BITS_PTR(ETH_RX_COMPL, vtm, rxcp);
121795 + pktsize = AMAP_GET_BITS_PTR(ETH_RX_COMPL, pktsize, rxcp);
121796 +
121797 + atomic_dec(&pnob->rx_q_posted);
121798 +
121799 + if (tcpcksm && udpcksm && pktsize == 32) {
121800 + /* flush completion entries */
121801 + put_page(rx_page_info->page);
121802 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121803 + return;
121804 + }
121805 + /* Only one of udpcksum and tcpcksum can be set */
121806 + BUG_ON(udpcksm && tcpcksm);
121807 +
121808 + /* jumbo frames could come in multiple fragments */
121809 + BUG_ON(numfrags != ((pktsize + (frag_sz - 1)) / frag_sz));
121810 + n = min(pktsize, frag_sz);
121811 + nresid = pktsize - n; /* will be useful for jumbo pkts */
121812 + idx = 0;
121813 +
121814 + va = page_address(rx_page_info->page) + rx_page_info->page_offset;
121815 + prefetch(va);
121816 + rx_frags[idx].page = rx_page_info->page;
121817 + rx_frags[idx].page_offset = (rx_page_info->page_offset);
121818 + rx_frags[idx].size = n;
121819 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121820 +
121821 + /* If we got multiple fragments, we have more data. */
121822 + while (nresid) {
121823 + idx++;
121824 + index_inc(&fi, pnob->rx_q_len);
121825 +
121826 + rx_page_info = (struct be_rx_page_info *)pnob->rx_ctxt[fi];
121827 + pnob->rx_ctxt[fi] = (void *)NULL;
121828 + if (rx_page_info->page_offset || !pnob->rx_pg_shared) {
121829 + pci_unmap_page(adapter->pdev,
121830 + pci_unmap_addr(rx_page_info, bus),
121831 + frag_sz, PCI_DMA_FROMDEVICE);
121832 + }
121833 +
121834 + n = min(nresid, frag_sz);
121835 + rx_frags[idx].page = rx_page_info->page;
121836 + rx_frags[idx].page_offset = (rx_page_info->page_offset);
121837 + rx_frags[idx].size = n;
121838 +
121839 + nresid -= n;
121840 + memset(rx_page_info, 0, sizeof(struct be_rx_page_info));
121841 + atomic_dec(&pnob->rx_q_posted);
121842 + }
121843 +
121844 + if (likely(!(vlanf && vtm))) {
121845 + lro_receive_frags(&pnob->lro_mgr, rx_frags,
121846 + pktsize, pktsize,
121847 + (void *)(unsigned long)csum, csum);
121848 + } else {
121849 + /* Vlan tag present in pkt and BE found
121850 + * that the tag matched an entry in VLAN table
121851 + */
121852 + if (unlikely(!pnob->vlan_grp || pnob->num_vlans == 0)) {
121853 + /* But we have no VLANs configured.
121854 + * This should never happen. Drop the packet.
121855 + */
121856 + dev_info(&pnob->netdev->dev,
121857 + "BladeEngine: Unexpected vlan tagged packet\n");
121858 + return;
121859 + }
121860 + /* pass the VLAN packet to stack */
121861 + lro_vlan_hwaccel_receive_frags(&pnob->lro_mgr,
121862 + rx_frags, pktsize, pktsize,
121863 + pnob->vlan_grp, vlant,
121864 + (void *)(unsigned long)csum,
121865 + csum);
121866 + }
121867 +
121868 + adapter->be_stat.bes_rx_coal++;
121869 +}
121870 +
121871 +struct ETH_RX_COMPL_AMAP *be_get_rx_cmpl(struct be_net_object *pnob)
121872 +{
121873 + struct ETH_RX_COMPL_AMAP *rxcp = &pnob->rx_cq[pnob->rx_cq_tl];
121874 + u32 valid, ct;
121875 +
121876 + valid = AMAP_GET_BITS_PTR(ETH_RX_COMPL, valid, rxcp);
121877 + if (valid == 0)
121878 + return NULL;
121879 +
121880 + ct = AMAP_GET_BITS_PTR(ETH_RX_COMPL, ct, rxcp);
121881 + if (ct != 0) {
121882 + /* Invalid chute #. treat as error */
121883 + AMAP_SET_BITS_PTR(ETH_RX_COMPL, err, rxcp, 1);
121884 + }
121885 +
121886 + be_adv_rxcq_tl(pnob);
121887 + AMAP_SET_BITS_PTR(ETH_RX_COMPL, valid, rxcp, 0);
121888 + return rxcp;
121889 +}
121890 +
121891 +static void update_rx_rate(struct be_adapter *adapter)
121892 +{
121893 + /* update the rate once in two seconds */
121894 + if ((jiffies - adapter->eth_rx_jiffies) > 2 * (HZ)) {
121895 + u32 r;
121896 + r = adapter->eth_rx_bytes /
121897 + ((jiffies - adapter->eth_rx_jiffies) / (HZ));
121898 + r = (r / 1000000); /* MB/Sec */
121899 +
121900 + /* Mega Bits/Sec */
121901 + adapter->be_stat.bes_eth_rx_rate = (r * 8);
121902 + adapter->eth_rx_jiffies = jiffies;
121903 + adapter->eth_rx_bytes = 0;
121904 + }
121905 +}
121906 +
121907 +static int process_rx_completions(struct be_net_object *pnob, int max_work)
121908 +{
121909 + struct be_adapter *adapter = pnob->adapter;
121910 + struct ETH_RX_COMPL_AMAP *rxcp;
121911 + u32 nc = 0;
121912 + unsigned int pktsize;
121913 +
121914 + while (max_work && (rxcp = be_get_rx_cmpl(pnob))) {
121915 + prefetch(rxcp);
121916 + pktsize = AMAP_GET_BITS_PTR(ETH_RX_COMPL, pktsize, rxcp);
121917 + process_nic_rx_completion_lro(pnob, rxcp);
121918 + adapter->eth_rx_bytes += pktsize;
121919 + update_rx_rate(adapter);
121920 + nc++;
121921 + max_work--;
121922 + adapter->be_stat.bes_rx_compl++;
121923 + }
121924 + if (likely(adapter->max_rx_coal > 1)) {
121925 + adapter->be_stat.bes_rx_flush++;
121926 + lro_flush_all(&pnob->lro_mgr);
121927 + }
121928 +
121929 + /* Refill the queue */
121930 + if (atomic_read(&pnob->rx_q_posted) < 900)
121931 + be_post_eth_rx_buffs(pnob);
121932 +
121933 + return nc;
121934 +}
121935 +
121936 +static struct ETH_TX_COMPL_AMAP *be_get_tx_cmpl(struct be_net_object *pnob)
121937 +{
121938 + struct ETH_TX_COMPL_AMAP *txcp = &pnob->tx_cq[pnob->tx_cq_tl];
121939 + u32 valid;
121940 +
121941 + valid = AMAP_GET_BITS_PTR(ETH_TX_COMPL, valid, txcp);
121942 + if (valid == 0)
121943 + return NULL;
121944 +
121945 + AMAP_SET_BITS_PTR(ETH_TX_COMPL, valid, txcp, 0);
121946 + be_adv_txcq_tl(pnob);
121947 + return txcp;
121948 +
121949 +}
121950 +
121951 +void process_one_tx_compl(struct be_net_object *pnob, u32 end_idx)
121952 +{
121953 + struct be_adapter *adapter = pnob->adapter;
121954 + int cur_index, tx_wrbs_completed = 0;
121955 + struct sk_buff *skb;
121956 + u64 busaddr, pa, pa_lo, pa_hi;
121957 + struct ETH_WRB_AMAP *wrb;
121958 + u32 frag_len, last_index, j;
121959 +
121960 + last_index = tx_compl_lastwrb_idx_get(pnob);
121961 + BUG_ON(last_index != end_idx);
121962 + pnob->tx_ctxt[pnob->tx_q_tl] = NULL;
121963 + do {
121964 + cur_index = pnob->tx_q_tl;
121965 + wrb = &pnob->tx_q[cur_index];
121966 + pa_hi = AMAP_GET_BITS_PTR(ETH_WRB, frag_pa_hi, wrb);
121967 + pa_lo = AMAP_GET_BITS_PTR(ETH_WRB, frag_pa_lo, wrb);
121968 + frag_len = AMAP_GET_BITS_PTR(ETH_WRB, frag_len, wrb);
121969 + busaddr = (pa_hi << 32) | pa_lo;
121970 + if (busaddr != 0) {
121971 + pa = le64_to_cpu(busaddr);
121972 + pci_unmap_single(adapter->pdev, pa,
121973 + frag_len, PCI_DMA_TODEVICE);
121974 + }
121975 + if (cur_index == last_index) {
121976 + skb = (struct sk_buff *)pnob->tx_ctxt[cur_index];
121977 + BUG_ON(!skb);
121978 + for (j = 0; j < skb_shinfo(skb)->nr_frags; j++) {
121979 + struct skb_frag_struct *frag;
121980 + frag = &skb_shinfo(skb)->frags[j];
121981 + pci_unmap_page(adapter->pdev,
121982 + (ulong) frag->page, frag->size,
121983 + PCI_DMA_TODEVICE);
121984 + }
121985 + kfree_skb(skb);
121986 + pnob->tx_ctxt[cur_index] = NULL;
121987 + } else {
121988 + BUG_ON(pnob->tx_ctxt[cur_index]);
121989 + }
121990 + tx_wrbs_completed++;
121991 + be_adv_txq_tl(pnob);
121992 + } while (cur_index != last_index);
121993 + atomic_sub(tx_wrbs_completed, &pnob->tx_q_used);
121994 +}
121995 +
121996 +/* there is no need to take an SMP lock here since currently
121997 + * we have only one instance of the tasklet that does completion
121998 + * processing.
121999 + */
122000 +static void process_nic_tx_completions(struct be_net_object *pnob)
122001 +{
122002 + struct be_adapter *adapter = pnob->adapter;
122003 + struct ETH_TX_COMPL_AMAP *txcp;
122004 + struct net_device *netdev = pnob->netdev;
122005 + u32 end_idx, num_processed = 0;
122006 +
122007 + adapter->be_stat.bes_tx_events++;
122008 +
122009 + while ((txcp = be_get_tx_cmpl(pnob))) {
122010 + end_idx = AMAP_GET_BITS_PTR(ETH_TX_COMPL, wrb_index, txcp);
122011 + process_one_tx_compl(pnob, end_idx);
122012 + num_processed++;
122013 + adapter->be_stat.bes_tx_compl++;
122014 + }
122015 + be_notify_cmpl(pnob, num_processed, pnob->tx_cq_id, 1);
122016 + /*
122017 + * We got Tx completions and have usable WRBs.
122018 + * If the netdev's queue has been stopped
122019 + * because we had run out of WRBs, wake it now.
122020 + */
122021 + spin_lock(&adapter->txq_lock);
122022 + if (netif_queue_stopped(netdev)
122023 + && atomic_read(&pnob->tx_q_used) < pnob->tx_q_len / 2) {
122024 + netif_wake_queue(netdev);
122025 + }
122026 + spin_unlock(&adapter->txq_lock);
122027 +}
122028 +
122029 +static u32 post_rx_buffs(struct be_net_object *pnob, struct list_head *rxbl)
122030 +{
122031 + u32 nposted = 0;
122032 + struct ETH_RX_D_AMAP *rxd = NULL;
122033 + struct be_recv_buffer *rxbp;
122034 + void **rx_ctxp;
122035 + struct RQ_DB_AMAP rqdb;
122036 +
122037 + rx_ctxp = pnob->rx_ctxt;
122038 +
122039 + while (!list_empty(rxbl) &&
122040 + (rx_ctxp[pnob->rx_q_hd] == NULL) && nposted < 255) {
122041 +
122042 + rxbp = list_first_entry(rxbl, struct be_recv_buffer, rxb_list);
122043 + list_del(&rxbp->rxb_list);
122044 + rxd = pnob->rx_q + pnob->rx_q_hd;
122045 + AMAP_SET_BITS_PTR(ETH_RX_D, fragpa_lo, rxd, rxbp->rxb_pa_lo);
122046 + AMAP_SET_BITS_PTR(ETH_RX_D, fragpa_hi, rxd, rxbp->rxb_pa_hi);
122047 +
122048 + rx_ctxp[pnob->rx_q_hd] = rxbp->rxb_ctxt;
122049 + be_adv_rxq_hd(pnob);
122050 + nposted++;
122051 + }
122052 +
122053 + if (nposted) {
122054 + /* Now press the door bell to notify BladeEngine. */
122055 + rqdb.dw[0] = 0;
122056 + AMAP_SET_BITS_PTR(RQ_DB, numPosted, &rqdb, nposted);
122057 + AMAP_SET_BITS_PTR(RQ_DB, rq, &rqdb, pnob->rx_q_id);
122058 + PD_WRITE(&pnob->fn_obj, erx_rq_db, rqdb.dw[0]);
122059 + }
122060 + atomic_add(nposted, &pnob->rx_q_posted);
122061 + return nposted;
122062 +}
122063 +
122064 +void be_post_eth_rx_buffs(struct be_net_object *pnob)
122065 +{
122066 + struct be_adapter *adapter = pnob->adapter;
122067 + u32 num_bufs, r;
122068 + u64 busaddr = 0, tmp_pa;
122069 + u32 max_bufs, pg_hd;
122070 + u32 frag_size;
122071 + struct be_recv_buffer *rxbp;
122072 + struct list_head rxbl;
122073 + struct be_rx_page_info *rx_page_info;
122074 + struct page *page = NULL;
122075 + u32 page_order = 0;
122076 + gfp_t alloc_flags = GFP_ATOMIC;
122077 +
122078 + BUG_ON(!adapter);
122079 +
122080 + max_bufs = 64; /* should be even # <= 255. */
122081 +
122082 + frag_size = pnob->rx_buf_size;
122083 + page_order = get_order(frag_size);
122084 +
122085 + if (frag_size == 8192)
122086 + alloc_flags |= (gfp_t) __GFP_COMP;
122087 + /*
122088 + * Form a linked list of RECV_BUFFFER structure to be be posted.
122089 + * We will post even number of buffer so that pages can be
122090 + * shared.
122091 + */
122092 + INIT_LIST_HEAD(&rxbl);
122093 +
122094 + for (num_bufs = 0; num_bufs < max_bufs &&
122095 + !pnob->rx_page_info[pnob->rx_pg_info_hd].page; ++num_bufs) {
122096 +
122097 + rxbp = &pnob->eth_rx_bufs[num_bufs];
122098 + pg_hd = pnob->rx_pg_info_hd;
122099 + rx_page_info = &pnob->rx_page_info[pg_hd];
122100 +
122101 + if (!page) {
122102 + page = alloc_pages(alloc_flags, page_order);
122103 + if (unlikely(page == NULL)) {
122104 + adapter->be_stat.bes_ethrx_post_fail++;
122105 + pnob->rxbuf_post_fail++;
122106 + break;
122107 + }
122108 + pnob->rxbuf_post_fail = 0;
122109 + busaddr = pci_map_page(adapter->pdev, page, 0,
122110 + frag_size, PCI_DMA_FROMDEVICE);
122111 + rx_page_info->page_offset = 0;
122112 + rx_page_info->page = page;
122113 + /*
122114 + * If we are sharing a page among two skbs,
122115 + * alloc a new one on the next iteration
122116 + */
122117 + if (pnob->rx_pg_shared == false)
122118 + page = NULL;
122119 + } else {
122120 + get_page(page);
122121 + rx_page_info->page_offset += frag_size;
122122 + rx_page_info->page = page;
122123 + /*
122124 + * We are finished with the alloced page,
122125 + * Alloc a new one on the next iteration
122126 + */
122127 + page = NULL;
122128 + }
122129 + rxbp->rxb_ctxt = (void *)rx_page_info;
122130 + index_inc(&pnob->rx_pg_info_hd, pnob->rx_q_len);
122131 +
122132 + pci_unmap_addr_set(rx_page_info, bus, busaddr);
122133 + tmp_pa = busaddr + rx_page_info->page_offset;
122134 + rxbp->rxb_pa_lo = (tmp_pa & 0xFFFFFFFF);
122135 + rxbp->rxb_pa_hi = (tmp_pa >> 32);
122136 + rxbp->rxb_len = frag_size;
122137 + list_add_tail(&rxbp->rxb_list, &rxbl);
122138 + } /* End of for */
122139 +
122140 + r = post_rx_buffs(pnob, &rxbl);
122141 + BUG_ON(r != num_bufs);
122142 + return;
122143 +}
122144 +
122145 +/*
122146 + * Interrupt service for network function. We just schedule the
122147 + * tasklet which does all completion processing.
122148 + */
122149 +irqreturn_t be_int(int irq, void *dev)
122150 +{
122151 + struct net_device *netdev = dev;
122152 + struct be_net_object *pnob = netdev_priv(netdev);
122153 + struct be_adapter *adapter = pnob->adapter;
122154 + u32 isr;
122155 +
122156 + isr = CSR_READ(&pnob->fn_obj, cev.isr1);
122157 + if (unlikely(!isr))
122158 + return IRQ_NONE;
122159 +
122160 + spin_lock(&adapter->int_lock);
122161 + adapter->isr |= isr;
122162 + spin_unlock(&adapter->int_lock);
122163 +
122164 + adapter->be_stat.bes_ints++;
122165 +
122166 + tasklet_schedule(&adapter->sts_handler);
122167 + return IRQ_HANDLED;
122168 +}
122169 +
122170 +/*
122171 + * Poll function called by NAPI with a work budget.
122172 + * We process as many UC. BC and MC receive completions
122173 + * as the budget allows and return the actual number of
122174 + * RX ststutses processed.
122175 + */
122176 +int be_poll(struct napi_struct *napi, int budget)
122177 +{
122178 + struct be_net_object *pnob =
122179 + container_of(napi, struct be_net_object, napi);
122180 + u32 work_done;
122181 +
122182 + pnob->adapter->be_stat.bes_polls++;
122183 + work_done = process_rx_completions(pnob, budget);
122184 + BUG_ON(work_done > budget);
122185 +
122186 + /* All consumed */
122187 + if (work_done < budget) {
122188 + netif_rx_complete(napi);
122189 + /* enable intr */
122190 + be_notify_cmpl(pnob, work_done, pnob->rx_cq_id, 1);
122191 + } else {
122192 + /* More to be consumed; continue with interrupts disabled */
122193 + be_notify_cmpl(pnob, work_done, pnob->rx_cq_id, 0);
122194 + }
122195 + return work_done;
122196 +}
122197 +
122198 +static struct EQ_ENTRY_AMAP *get_event(struct be_net_object *pnob)
122199 +{
122200 + struct EQ_ENTRY_AMAP *eqp = &(pnob->event_q[pnob->event_q_tl]);
122201 + if (!AMAP_GET_BITS_PTR(EQ_ENTRY, Valid, eqp))
122202 + return NULL;
122203 + be_adv_eq_tl(pnob);
122204 + return eqp;
122205 +}
122206 +
122207 +/*
122208 + * Processes all valid events in the event ring associated with given
122209 + * NetObject. Also, notifies BE the number of events processed.
122210 + */
122211 +static inline u32 process_events(struct be_net_object *pnob)
122212 +{
122213 + struct be_adapter *adapter = pnob->adapter;
122214 + struct EQ_ENTRY_AMAP *eqp;
122215 + u32 rid, num_events = 0;
122216 + struct net_device *netdev = pnob->netdev;
122217 +
122218 + while ((eqp = get_event(pnob)) != NULL) {
122219 + adapter->be_stat.bes_events++;
122220 + rid = AMAP_GET_BITS_PTR(EQ_ENTRY, ResourceID, eqp);
122221 + if (rid == pnob->rx_cq_id) {
122222 + adapter->be_stat.bes_rx_events++;
122223 + netif_rx_schedule(&pnob->napi);
122224 + } else if (rid == pnob->tx_cq_id) {
122225 + process_nic_tx_completions(pnob);
122226 + } else if (rid == pnob->mcc_cq_id) {
122227 + be_mcc_process_cq(&pnob->mcc_q_obj, 1);
122228 + } else {
122229 + dev_info(&netdev->dev,
122230 + "Invalid EQ ResourceID %d\n", rid);
122231 + }
122232 + AMAP_SET_BITS_PTR(EQ_ENTRY, Valid, eqp, 0);
122233 + AMAP_SET_BITS_PTR(EQ_ENTRY, ResourceID, eqp, 0);
122234 + num_events++;
122235 + }
122236 + return num_events;
122237 +}
122238 +
122239 +static void update_eqd(struct be_adapter *adapter, struct be_net_object *pnob)
122240 +{
122241 + int status;
122242 + struct be_eq_object *eq_objectp;
122243 +
122244 + /* update once a second */
122245 + if ((jiffies - adapter->ips_jiffies) > 1 * (HZ)) {
122246 + /* One second elapsed since last update */
122247 + u32 r, new_eqd = -1;
122248 + r = adapter->be_stat.bes_ints - adapter->be_stat.bes_prev_ints;
122249 + r = r / ((jiffies - adapter->ips_jiffies) / (HZ));
122250 + adapter->be_stat.bes_ips = r;
122251 + adapter->ips_jiffies = jiffies;
122252 + adapter->be_stat.bes_prev_ints = adapter->be_stat.bes_ints;
122253 + if (r > IPS_HI_WM && adapter->cur_eqd < adapter->max_eqd)
122254 + new_eqd = (adapter->cur_eqd + 8);
122255 + if (r < IPS_LO_WM && adapter->cur_eqd > adapter->min_eqd)
122256 + new_eqd = (adapter->cur_eqd - 8);
122257 + if (adapter->enable_aic && new_eqd != -1) {
122258 + eq_objectp = &pnob->event_q_obj;
122259 + status = be_eq_modify_delay(&pnob->fn_obj, 1,
122260 + &eq_objectp, &new_eqd, NULL,
122261 + NULL, NULL);
122262 + if (status == BE_SUCCESS)
122263 + adapter->cur_eqd = new_eqd;
122264 + }
122265 + }
122266 +}
122267 +
122268 +/*
122269 + This function notifies BladeEngine of how many events were processed
122270 + from the event queue by ringing the corresponding door bell and
122271 + optionally re-arms the event queue.
122272 + n - number of events processed
122273 + re_arm - 1 - re-arm the EQ, 0 - do not re-arm the EQ
122274 +
122275 +*/
122276 +static void be_notify_event(struct be_net_object *pnob, int n, int re_arm)
122277 +{
122278 + struct CQ_DB_AMAP eqdb;
122279 + eqdb.dw[0] = 0;
122280 +
122281 + AMAP_SET_BITS_PTR(CQ_DB, qid, &eqdb, pnob->event_q_id);
122282 + AMAP_SET_BITS_PTR(CQ_DB, rearm, &eqdb, re_arm);
122283 + AMAP_SET_BITS_PTR(CQ_DB, event, &eqdb, 1);
122284 + AMAP_SET_BITS_PTR(CQ_DB, num_popped, &eqdb, n);
122285 + /*
122286 + * Under some situations we see an interrupt and no valid
122287 + * EQ entry. To keep going, we need to ring the DB even if
122288 + * numPOsted is 0.
122289 + */
122290 + PD_WRITE(&pnob->fn_obj, cq_db, eqdb.dw[0]);
122291 + return;
122292 +}
122293 +
122294 +/*
122295 + * Called from the tasklet scheduled by ISR. All real interrupt processing
122296 + * is done here.
122297 + */
122298 +void be_process_intr(unsigned long context)
122299 +{
122300 + struct be_adapter *adapter = (struct be_adapter *)context;
122301 + struct be_net_object *pnob = adapter->net_obj;
122302 + u32 isr, n;
122303 + ulong flags = 0;
122304 +
122305 + isr = adapter->isr;
122306 +
122307 + /*
122308 + * we create only one NIC event queue in Linux. Event is
122309 + * expected only in the first event queue
122310 + */
122311 + BUG_ON(isr & 0xfffffffe);
122312 + if ((isr & 1) == 0)
122313 + return; /* not our interrupt */
122314 + n = process_events(pnob);
122315 + /*
122316 + * Clear the event bit. adapter->isr is set by
122317 + * hard interrupt. Prevent race with lock.
122318 + */
122319 + spin_lock_irqsave(&adapter->int_lock, flags);
122320 + adapter->isr &= ~1;
122321 + spin_unlock_irqrestore(&adapter->int_lock, flags);
122322 + be_notify_event(pnob, n, 1);
122323 + /*
122324 + * If previous allocation attempts had failed and
122325 + * BE has used up all posted buffers, post RX buffers here
122326 + */
122327 + if (pnob->rxbuf_post_fail && atomic_read(&pnob->rx_q_posted) == 0)
122328 + be_post_eth_rx_buffs(pnob);
122329 + update_eqd(adapter, pnob);
122330 + return;
122331 +}
122332 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/benet.h linux-2.6.29-rc3.owrt/drivers/staging/benet/benet.h
122333 --- linux-2.6.29.owrt/drivers/staging/benet/benet.h 1970-01-01 01:00:00.000000000 +0100
122334 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/benet.h 2009-05-10 23:48:29.000000000 +0200
122335 @@ -0,0 +1,429 @@
122336 +/*
122337 + * Copyright (C) 2005 - 2008 ServerEngines
122338 + * All rights reserved.
122339 + *
122340 + * This program is free software; you can redistribute it and/or
122341 + * modify it under the terms of the GNU General Public License version 2
122342 + * as published by the Free Software Foundation. The full GNU General
122343 + * Public License is included in this distribution in the file called COPYING.
122344 + *
122345 + * Contact Information:
122346 + * linux-drivers@serverengines.com
122347 + *
122348 + * ServerEngines
122349 + * 209 N. Fair Oaks Ave
122350 + * Sunnyvale, CA 94085
122351 + */
122352 +#ifndef _BENET_H_
122353 +#define _BENET_H_
122354 +
122355 +#include <linux/pci.h>
122356 +#include <linux/netdevice.h>
122357 +#include <linux/inet_lro.h>
122358 +#include "hwlib.h"
122359 +
122360 +#define _SA_MODULE_NAME "net-driver"
122361 +
122362 +#define VLAN_VALID_BIT 0x8000
122363 +#define BE_NUM_VLAN_SUPPORTED 32
122364 +#define BE_PORT_LINK_DOWN 0000
122365 +#define BE_PORT_LINK_UP 0001
122366 +#define BE_MAX_TX_FRAG_COUNT (30)
122367 +
122368 +/* Flag bits for send operation */
122369 +#define IPCS (1 << 0) /* Enable IP checksum offload */
122370 +#define UDPCS (1 << 1) /* Enable UDP checksum offload */
122371 +#define TCPCS (1 << 2) /* Enable TCP checksum offload */
122372 +#define LSO (1 << 3) /* Enable Large Segment offload */
122373 +#define ETHVLAN (1 << 4) /* Enable VLAN insert */
122374 +#define ETHEVENT (1 << 5) /* Generate event on completion */
122375 +#define ETHCOMPLETE (1 << 6) /* Generate completion when done */
122376 +#define IPSEC (1 << 7) /* Enable IPSEC */
122377 +#define FORWARD (1 << 8) /* Send the packet in forwarding path */
122378 +#define FIN (1 << 9) /* Issue FIN segment */
122379 +
122380 +#define BE_MAX_MTU 8974
122381 +
122382 +#define BE_MAX_LRO_DESCRIPTORS 8
122383 +#define BE_LRO_MAX_PKTS 64
122384 +#define BE_MAX_FRAGS_PER_FRAME 6
122385 +
122386 +extern const char be_drvr_ver[];
122387 +extern char be_fw_ver[];
122388 +extern char be_driver_name[];
122389 +
122390 +extern struct ethtool_ops be_ethtool_ops;
122391 +
122392 +#define BE_DEV_STATE_NONE 0
122393 +#define BE_DEV_STATE_INIT 1
122394 +#define BE_DEV_STATE_OPEN 2
122395 +#define BE_DEV_STATE_SUSPEND 3
122396 +
122397 +/* This structure is used to describe physical fragments to use
122398 + * for DMAing data from NIC.
122399 + */
122400 +struct be_recv_buffer {
122401 + struct list_head rxb_list; /* for maintaining a linked list */
122402 + void *rxb_va; /* buffer virtual address */
122403 + u32 rxb_pa_lo; /* low part of physical address */
122404 + u32 rxb_pa_hi; /* high part of physical address */
122405 + u32 rxb_len; /* length of recv buffer */
122406 + void *rxb_ctxt; /* context for OSM driver to use */
122407 +};
122408 +
122409 +/*
122410 + * fragment list to describe scattered data.
122411 + */
122412 +struct be_tx_frag_list {
122413 + u32 txb_len; /* Size of this fragment */
122414 + u32 txb_pa_lo; /* Lower 32 bits of 64 bit physical addr */
122415 + u32 txb_pa_hi; /* Higher 32 bits of 64 bit physical addr */
122416 +};
122417 +
122418 +struct be_rx_page_info {
122419 + struct page *page;
122420 + dma_addr_t bus;
122421 + u16 page_offset;
122422 +};
122423 +
122424 +/*
122425 + * This structure is the main tracking structure for a NIC interface.
122426 + */
122427 +struct be_net_object {
122428 + /* MCC Ring - used to send fwcmds to embedded ARM processor */
122429 + struct MCC_WRB_AMAP *mcc_q; /* VA of the start of the ring */
122430 + u32 mcc_q_len; /* # of WRB entries in this ring */
122431 + u32 mcc_q_size;
122432 + u32 mcc_q_hd; /* MCC ring head */
122433 + u8 mcc_q_created; /* flag to help cleanup */
122434 + struct be_mcc_object mcc_q_obj; /* BECLIB's MCC ring Object */
122435 + dma_addr_t mcc_q_bus; /* DMA'ble bus address */
122436 +
122437 + /* MCC Completion Ring - FW responses to fwcmds sent from MCC ring */
122438 + struct MCC_CQ_ENTRY_AMAP *mcc_cq; /* VA of the start of the ring */
122439 + u32 mcc_cq_len; /* # of compl. entries in this ring */
122440 + u32 mcc_cq_size;
122441 + u32 mcc_cq_tl; /* compl. ring tail */
122442 + u8 mcc_cq_created; /* flag to help cleanup */
122443 + struct be_cq_object mcc_cq_obj; /* BECLIB's MCC compl. ring object */
122444 + u32 mcc_cq_id; /* MCC ring ID */
122445 + dma_addr_t mcc_cq_bus; /* DMA'ble bus address */
122446 +
122447 + struct ring_desc mb_rd; /* RD for MCC_MAIL_BOX */
122448 + void *mb_ptr; /* mailbox ptr to be freed */
122449 + dma_addr_t mb_bus; /* DMA'ble bus address */
122450 + u32 mb_size;
122451 +
122452 + /* BEClib uses an array of context objects to track outstanding
122453 + * requests to the MCC. We need allocate the same number of
122454 + * conext entries as the number of entries in the MCC WRB ring
122455 + */
122456 + u32 mcc_wrb_ctxt_size;
122457 + void *mcc_wrb_ctxt; /* pointer to the context area */
122458 + u32 mcc_wrb_ctxtLen; /* Number of entries in the context */
122459 + /*
122460 + * NIC send request ring - used for xmitting raw ether frames.
122461 + */
122462 + struct ETH_WRB_AMAP *tx_q; /* VA of the start of the ring */
122463 + u32 tx_q_len; /* # if entries in the send ring */
122464 + u32 tx_q_size;
122465 + u32 tx_q_hd; /* Head index. Next req. goes here */
122466 + u32 tx_q_tl; /* Tail indx. oldest outstanding req. */
122467 + u8 tx_q_created; /* flag to help cleanup */
122468 + struct be_ethsq_object tx_q_obj;/* BECLIB's send Q handle */
122469 + dma_addr_t tx_q_bus; /* DMA'ble bus address */
122470 + u32 tx_q_id; /* send queue ring ID */
122471 + u32 tx_q_port; /* 0 no binding, 1 port A, 2 port B */
122472 + atomic_t tx_q_used; /* # of WRBs used */
122473 + /* ptr to an array in which we store context info for each send req. */
122474 + void **tx_ctxt;
122475 + /*
122476 + * NIC Send compl. ring - completion status for all NIC frames xmitted.
122477 + */
122478 + struct ETH_TX_COMPL_AMAP *tx_cq;/* VA of start of the ring */
122479 + u32 txcq_len; /* # of entries in the ring */
122480 + u32 tx_cq_size;
122481 + /*
122482 + * index into compl ring where the host expects next completion entry
122483 + */
122484 + u32 tx_cq_tl;
122485 + u32 tx_cq_id; /* completion queue id */
122486 + u8 tx_cq_created; /* flag to help cleanup */
122487 + struct be_cq_object tx_cq_obj;
122488 + dma_addr_t tx_cq_bus; /* DMA'ble bus address */
122489 + /*
122490 + * Event Queue - all completion entries post events here.
122491 + */
122492 + struct EQ_ENTRY_AMAP *event_q; /* VA of start of event queue */
122493 + u32 event_q_len; /* # of entries */
122494 + u32 event_q_size;
122495 + u32 event_q_tl; /* Tail of the event queue */
122496 + u32 event_q_id; /* Event queue ID */
122497 + u8 event_q_created; /* flag to help cleanup */
122498 + struct be_eq_object event_q_obj; /* Queue handle */
122499 + dma_addr_t event_q_bus; /* DMA'ble bus address */
122500 + /*
122501 + * NIC receive queue - Data buffers to be used for receiving unicast,
122502 + * broadcast and multi-cast frames are posted here.
122503 + */
122504 + struct ETH_RX_D_AMAP *rx_q; /* VA of start of the queue */
122505 + u32 rx_q_len; /* # of entries */
122506 + u32 rx_q_size;
122507 + u32 rx_q_hd; /* Head of the queue */
122508 + atomic_t rx_q_posted; /* number of posted buffers */
122509 + u32 rx_q_id; /* queue ID */
122510 + u8 rx_q_created; /* flag to help cleanup */
122511 + struct be_ethrq_object rx_q_obj; /* NIC RX queue handle */
122512 + dma_addr_t rx_q_bus; /* DMA'ble bus address */
122513 + /*
122514 + * Pointer to an array of opaque context object for use by OSM driver
122515 + */
122516 + void **rx_ctxt;
122517 + /*
122518 + * NIC unicast RX completion queue - all unicast ether frame completion
122519 + * statuses from BE come here.
122520 + */
122521 + struct ETH_RX_COMPL_AMAP *rx_cq; /* VA of start of the queue */
122522 + u32 rx_cq_len; /* # of entries */
122523 + u32 rx_cq_size;
122524 + u32 rx_cq_tl; /* Tail of the queue */
122525 + u32 rx_cq_id; /* queue ID */
122526 + u8 rx_cq_created; /* flag to help cleanup */
122527 + struct be_cq_object rx_cq_obj; /* queue handle */
122528 + dma_addr_t rx_cq_bus; /* DMA'ble bus address */
122529 + struct be_function_object fn_obj; /* function object */
122530 + bool fn_obj_created;
122531 + u32 rx_buf_size; /* Size of the RX buffers */
122532 +
122533 + struct net_device *netdev;
122534 + struct be_recv_buffer eth_rx_bufs[256]; /* to pass Rx buffer
122535 + addresses */
122536 + struct be_adapter *adapter; /* Pointer to OSM adapter */
122537 + u32 devno; /* OSM, network dev no. */
122538 + u32 use_port; /* Current active port */
122539 + struct be_rx_page_info *rx_page_info; /* Array of Rx buf pages */
122540 + u32 rx_pg_info_hd; /* Head of queue */
122541 + int rxbuf_post_fail; /* RxBuff posting fail count */
122542 + bool rx_pg_shared; /* Is an allocsted page shared as two frags ? */
122543 + struct vlan_group *vlan_grp;
122544 + u32 num_vlans; /* Number of vlans in BE's filter */
122545 + u16 vlan_tag[BE_NUM_VLAN_SUPPORTED]; /* vlans currently configured */
122546 + struct napi_struct napi;
122547 + struct net_lro_mgr lro_mgr;
122548 + struct net_lro_desc lro_desc[BE_MAX_LRO_DESCRIPTORS];
122549 +};
122550 +
122551 +#define NET_FH(np) (&(np)->fn_obj)
122552 +
122553 +/*
122554 + * BE driver statistics.
122555 + */
122556 +struct be_drvr_stat {
122557 + u32 bes_tx_reqs; /* number of TX requests initiated */
122558 + u32 bes_tx_fails; /* number of TX requests that failed */
122559 + u32 bes_fwd_reqs; /* number of send reqs through forwarding i/f */
122560 + u32 bes_tx_wrbs; /* number of tx WRBs used */
122561 +
122562 + u32 bes_ints; /* number of interrupts */
122563 + u32 bes_polls; /* number of times NAPI called poll function */
122564 + u32 bes_events; /* total evet entries processed */
122565 + u32 bes_tx_events; /* number of tx completion events */
122566 + u32 bes_rx_events; /* number of ucast rx completion events */
122567 + u32 bes_tx_compl; /* number of tx completion entries processed */
122568 + u32 bes_rx_compl; /* number of rx completion entries
122569 + processed */
122570 + u32 bes_ethrx_post_fail; /* number of ethrx buffer alloc
122571 + failures */
122572 + /*
122573 + * number of non ether type II frames dropped where
122574 + * frame len > length field of Mac Hdr
122575 + */
122576 + u32 bes_802_3_dropped_frames;
122577 + /*
122578 + * number of non ether type II frames malformed where
122579 + * in frame len < length field of Mac Hdr
122580 + */
122581 + u32 bes_802_3_malformed_frames;
122582 + u32 bes_ips; /* interrupts / sec */
122583 + u32 bes_prev_ints; /* bes_ints at last IPS calculation */
122584 + u16 bes_eth_tx_rate; /* ETH TX rate - Mb/sec */
122585 + u16 bes_eth_rx_rate; /* ETH RX rate - Mb/sec */
122586 + u32 bes_rx_coal; /* Num pkts coalasced */
122587 + u32 bes_rx_flush; /* Num times coalasced */
122588 + u32 bes_link_change_physical; /*Num of times physical link changed */
122589 + u32 bes_link_change_virtual; /*Num of times virtual link changed */
122590 + u32 bes_rx_misc_pkts; /* Misc pkts received */
122591 +};
122592 +
122593 +/* Maximum interrupt delay (in microseconds) allowed */
122594 +#define MAX_EQD 120
122595 +
122596 +/*
122597 + * timer to prevent system shutdown hang for ever if h/w stops responding
122598 + */
122599 +struct be_timer_ctxt {
122600 + atomic_t get_stat_flag;
122601 + struct timer_list get_stats_timer;
122602 + unsigned long get_stat_sem_addr;
122603 +} ;
122604 +
122605 +/* This structure is the main BladeEngine driver context. */
122606 +struct be_adapter {
122607 + struct net_device *netdevp;
122608 + struct be_drvr_stat be_stat;
122609 + struct net_device_stats benet_stats;
122610 +
122611 + /* PCI BAR mapped addresses */
122612 + u8 __iomem *csr_va; /* CSR */
122613 + u8 __iomem *db_va; /* Door Bell */
122614 + u8 __iomem *pci_va; /* PCI Config */
122615 +
122616 + struct tasklet_struct sts_handler;
122617 + struct timer_list cq_timer;
122618 + spinlock_t int_lock; /* to protect the isr field in adapter */
122619 +
122620 + struct FWCMD_ETH_GET_STATISTICS *eth_statsp;
122621 + /*
122622 + * This will enable the use of ethtool to enable or disable
122623 + * Checksum on Rx pkts to be obeyed or disobeyed.
122624 + * If this is true = 1, then whatever is the checksum on the
122625 + * Received pkt as per BE, it will be given to the stack.
122626 + * Else the stack will re calculate it.
122627 + */
122628 + bool rx_csum;
122629 + /*
122630 + * This will enable the use of ethtool to enable or disable
122631 + * Coalese on Rx pkts to be obeyed or disobeyed.
122632 + * If this is grater than 0 and less than 16 then coalascing
122633 + * is enabled else it is disabled
122634 + */
122635 + u32 max_rx_coal;
122636 + struct pci_dev *pdev; /* Pointer to OS's PCI dvice */
122637 +
122638 + spinlock_t txq_lock; /* to stop/wake queue based on tx_q_used */
122639 +
122640 + u32 isr; /* copy of Intr status reg. */
122641 +
122642 + u32 port0_link_sts; /* Port 0 link status */
122643 + u32 port1_link_sts; /* port 1 list status */
122644 + struct BE_LINK_STATUS *be_link_sts;
122645 +
122646 + /* pointer to the first netobject of this adapter */
122647 + struct be_net_object *net_obj;
122648 +
122649 + /* Flags to indicate what to clean up */
122650 + bool tasklet_started;
122651 + bool isr_registered;
122652 + /*
122653 + * adaptive interrupt coalescing (AIC) related
122654 + */
122655 + bool enable_aic; /* 1 if AIC is enabled */
122656 + u16 min_eqd; /* minimum EQ delay in usec */
122657 + u16 max_eqd; /* minimum EQ delay in usec */
122658 + u16 cur_eqd; /* current EQ delay in usec */
122659 + /*
122660 + * book keeping for interrupt / sec and TX/RX rate calculation
122661 + */
122662 + ulong ips_jiffies; /* jiffies at last IPS calc */
122663 + u32 eth_tx_bytes;
122664 + ulong eth_tx_jiffies;
122665 + u32 eth_rx_bytes;
122666 + ulong eth_rx_jiffies;
122667 +
122668 + struct semaphore get_eth_stat_sem;
122669 +
122670 + /* timer ctxt to prevent shutdown hanging due to un-responsive BE */
122671 + struct be_timer_ctxt timer_ctxt;
122672 +
122673 +#define BE_MAX_MSIX_VECTORS 32
122674 +#define BE_MAX_REQ_MSIX_VECTORS 1 /* only one EQ in Linux driver */
122675 + struct msix_entry msix_entries[BE_MAX_MSIX_VECTORS];
122676 + bool msix_enabled;
122677 + bool dma_64bit_cap; /* the Device DAC capable or not */
122678 + u8 dev_state; /* The current state of the device */
122679 + u8 dev_pm_state; /* The State of device before going to suspend */
122680 +};
122681 +
122682 +/*
122683 + * Every second we look at the ints/sec and adjust eq_delay
122684 + * between adapter->min_eqd and adapter->max_eqd to keep the ints/sec between
122685 + * IPS_HI_WM and IPS_LO_WM.
122686 + */
122687 +#define IPS_HI_WM 18000
122688 +#define IPS_LO_WM 8000
122689 +
122690 +
122691 +static inline void index_adv(u32 *index, u32 val, u32 limit)
122692 +{
122693 + BUG_ON(limit & (limit-1));
122694 + *index = (*index + val) & (limit - 1);
122695 +}
122696 +
122697 +static inline void index_inc(u32 *index, u32 limit)
122698 +{
122699 + BUG_ON(limit & (limit-1));
122700 + *index = (*index + 1) & (limit - 1);
122701 +}
122702 +
122703 +static inline void be_adv_eq_tl(struct be_net_object *pnob)
122704 +{
122705 + index_inc(&pnob->event_q_tl, pnob->event_q_len);
122706 +}
122707 +
122708 +static inline void be_adv_txq_hd(struct be_net_object *pnob)
122709 +{
122710 + index_inc(&pnob->tx_q_hd, pnob->tx_q_len);
122711 +}
122712 +
122713 +static inline void be_adv_txq_tl(struct be_net_object *pnob)
122714 +{
122715 + index_inc(&pnob->tx_q_tl, pnob->tx_q_len);
122716 +}
122717 +
122718 +static inline void be_adv_txcq_tl(struct be_net_object *pnob)
122719 +{
122720 + index_inc(&pnob->tx_cq_tl, pnob->txcq_len);
122721 +}
122722 +
122723 +static inline void be_adv_rxq_hd(struct be_net_object *pnob)
122724 +{
122725 + index_inc(&pnob->rx_q_hd, pnob->rx_q_len);
122726 +}
122727 +
122728 +static inline void be_adv_rxcq_tl(struct be_net_object *pnob)
122729 +{
122730 + index_inc(&pnob->rx_cq_tl, pnob->rx_cq_len);
122731 +}
122732 +
122733 +static inline u32 tx_compl_lastwrb_idx_get(struct be_net_object *pnob)
122734 +{
122735 + return (pnob->tx_q_tl + *(u32 *)&pnob->tx_ctxt[pnob->tx_q_tl] - 1)
122736 + & (pnob->tx_q_len - 1);
122737 +}
122738 +
122739 +int benet_init(struct net_device *);
122740 +int be_ethtool_ioctl(struct net_device *, struct ifreq *);
122741 +struct net_device_stats *benet_get_stats(struct net_device *);
122742 +void be_process_intr(unsigned long context);
122743 +irqreturn_t be_int(int irq, void *dev);
122744 +void be_post_eth_rx_buffs(struct be_net_object *);
122745 +void be_get_stat_cb(void *, int, struct MCC_WRB_AMAP *);
122746 +void be_get_stats_timer_handler(unsigned long);
122747 +void be_wait_nic_tx_cmplx_cmpl(struct be_net_object *);
122748 +void be_print_link_info(struct BE_LINK_STATUS *);
122749 +void be_update_link_status(struct be_adapter *);
122750 +void be_init_procfs(struct be_adapter *);
122751 +void be_cleanup_procfs(struct be_adapter *);
122752 +int be_poll(struct napi_struct *, int);
122753 +struct ETH_RX_COMPL_AMAP *be_get_rx_cmpl(struct be_net_object *);
122754 +void be_notify_cmpl(struct be_net_object *, int, int, int);
122755 +void be_enable_intr(struct be_net_object *);
122756 +void be_enable_eq_intr(struct be_net_object *);
122757 +void be_disable_intr(struct be_net_object *);
122758 +void be_disable_eq_intr(struct be_net_object *);
122759 +int be_set_uc_mac_adr(struct be_net_object *, u8, u8, u8,
122760 + u8 *, mcc_wrb_cqe_callback, void *);
122761 +int be_get_flow_ctl(struct be_function_object *pFnObj, bool *, bool *);
122762 +void process_one_tx_compl(struct be_net_object *pnob, u32 end_idx);
122763 +
122764 +#endif /* _BENET_H_ */
122765 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/be_netif.c linux-2.6.29-rc3.owrt/drivers/staging/benet/be_netif.c
122766 --- linux-2.6.29.owrt/drivers/staging/benet/be_netif.c 1970-01-01 01:00:00.000000000 +0100
122767 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/be_netif.c 2009-05-10 23:48:29.000000000 +0200
122768 @@ -0,0 +1,705 @@
122769 +/*
122770 + * Copyright (C) 2005 - 2008 ServerEngines
122771 + * All rights reserved.
122772 + *
122773 + * This program is free software; you can redistribute it and/or
122774 + * modify it under the terms of the GNU General Public License version 2
122775 + * as published by the Free Software Foundation. The full GNU General
122776 + * Public License is included in this distribution in the file called COPYING.
122777 + *
122778 + * Contact Information:
122779 + * linux-drivers@serverengines.com
122780 + *
122781 + * ServerEngines
122782 + * 209 N. Fair Oaks Ave
122783 + * Sunnyvale, CA 94085
122784 + */
122785 +/*
122786 + * be_netif.c
122787 + *
122788 + * This file contains various entry points of drivers seen by tcp/ip stack.
122789 + */
122790 +
122791 +#include <linux/if_vlan.h>
122792 +#include <linux/in.h>
122793 +#include "benet.h"
122794 +#include <linux/ip.h>
122795 +#include <linux/inet_lro.h>
122796 +
122797 +/* Strings to print Link properties */
122798 +static const char *link_speed[] = {
122799 + "Invalid link Speed Value",
122800 + "10 Mbps",
122801 + "100 Mbps",
122802 + "1 Gbps",
122803 + "10 Gbps"
122804 +};
122805 +
122806 +static const char *link_duplex[] = {
122807 + "Invalid Duplex Value",
122808 + "Half Duplex",
122809 + "Full Duplex"
122810 +};
122811 +
122812 +static const char *link_state[] = {
122813 + "",
122814 + "(active)"
122815 +};
122816 +
122817 +void be_print_link_info(struct BE_LINK_STATUS *lnk_status)
122818 +{
122819 + u16 si, di, ai;
122820 +
122821 + /* Port 0 */
122822 + if (lnk_status->mac0_speed && lnk_status->mac0_duplex) {
122823 + /* Port is up and running */
122824 + si = (lnk_status->mac0_speed < 5) ? lnk_status->mac0_speed : 0;
122825 + di = (lnk_status->mac0_duplex < 3) ?
122826 + lnk_status->mac0_duplex : 0;
122827 + ai = (lnk_status->active_port == 0) ? 1 : 0;
122828 + printk(KERN_INFO "PortNo. 0: Speed - %s %s %s\n",
122829 + link_speed[si], link_duplex[di], link_state[ai]);
122830 + } else
122831 + printk(KERN_INFO "PortNo. 0: Down\n");
122832 +
122833 + /* Port 1 */
122834 + if (lnk_status->mac1_speed && lnk_status->mac1_duplex) {
122835 + /* Port is up and running */
122836 + si = (lnk_status->mac1_speed < 5) ? lnk_status->mac1_speed : 0;
122837 + di = (lnk_status->mac1_duplex < 3) ?
122838 + lnk_status->mac1_duplex : 0;
122839 + ai = (lnk_status->active_port == 0) ? 1 : 0;
122840 + printk(KERN_INFO "PortNo. 1: Speed - %s %s %s\n",
122841 + link_speed[si], link_duplex[di], link_state[ai]);
122842 + } else
122843 + printk(KERN_INFO "PortNo. 1: Down\n");
122844 +
122845 + return;
122846 +}
122847 +
122848 +static int
122849 +be_get_frag_header(struct skb_frag_struct *frag, void **mac_hdr,
122850 + void **ip_hdr, void **tcpudp_hdr,
122851 + u64 *hdr_flags, void *priv)
122852 +{
122853 + struct ethhdr *eh;
122854 + struct vlan_ethhdr *veh;
122855 + struct iphdr *iph;
122856 + u8 *va = page_address(frag->page) + frag->page_offset;
122857 + unsigned long ll_hlen;
122858 +
122859 + /* find the mac header, abort if not IPv4 */
122860 +
122861 + prefetch(va);
122862 + eh = (struct ethhdr *)va;
122863 + *mac_hdr = eh;
122864 + ll_hlen = ETH_HLEN;
122865 + if (eh->h_proto != htons(ETH_P_IP)) {
122866 + if (eh->h_proto == htons(ETH_P_8021Q)) {
122867 + veh = (struct vlan_ethhdr *)va;
122868 + if (veh->h_vlan_encapsulated_proto != htons(ETH_P_IP))
122869 + return -1;
122870 +
122871 + ll_hlen += VLAN_HLEN;
122872 +
122873 + } else {
122874 + return -1;
122875 + }
122876 + }
122877 + *hdr_flags = LRO_IPV4;
122878 +
122879 + iph = (struct iphdr *)(va + ll_hlen);
122880 + *ip_hdr = iph;
122881 + if (iph->protocol != IPPROTO_TCP)
122882 + return -1;
122883 + *hdr_flags |= LRO_TCP;
122884 + *tcpudp_hdr = (u8 *) (*ip_hdr) + (iph->ihl << 2);
122885 +
122886 + return 0;
122887 +}
122888 +
122889 +static int benet_open(struct net_device *netdev)
122890 +{
122891 + struct be_net_object *pnob = netdev_priv(netdev);
122892 + struct be_adapter *adapter = pnob->adapter;
122893 + struct net_lro_mgr *lro_mgr;
122894 +
122895 + if (adapter->dev_state < BE_DEV_STATE_INIT)
122896 + return -EAGAIN;
122897 +
122898 + lro_mgr = &pnob->lro_mgr;
122899 + lro_mgr->dev = netdev;
122900 +
122901 + lro_mgr->features = LRO_F_NAPI;
122902 + lro_mgr->ip_summed = CHECKSUM_UNNECESSARY;
122903 + lro_mgr->ip_summed_aggr = CHECKSUM_UNNECESSARY;
122904 + lro_mgr->max_desc = BE_MAX_LRO_DESCRIPTORS;
122905 + lro_mgr->lro_arr = pnob->lro_desc;
122906 + lro_mgr->get_frag_header = be_get_frag_header;
122907 + lro_mgr->max_aggr = adapter->max_rx_coal;
122908 + lro_mgr->frag_align_pad = 2;
122909 + if (lro_mgr->max_aggr > MAX_SKB_FRAGS)
122910 + lro_mgr->max_aggr = MAX_SKB_FRAGS;
122911 +
122912 + adapter->max_rx_coal = BE_LRO_MAX_PKTS;
122913 +
122914 + be_update_link_status(adapter);
122915 +
122916 + /*
122917 + * Set carrier on only if Physical Link up
122918 + * Either of the port link status up signifies this
122919 + */
122920 + if ((adapter->port0_link_sts == BE_PORT_LINK_UP) ||
122921 + (adapter->port1_link_sts == BE_PORT_LINK_UP)) {
122922 + netif_start_queue(netdev);
122923 + netif_carrier_on(netdev);
122924 + }
122925 +
122926 + adapter->dev_state = BE_DEV_STATE_OPEN;
122927 + napi_enable(&pnob->napi);
122928 + be_enable_intr(pnob);
122929 + be_enable_eq_intr(pnob);
122930 + /*
122931 + * RX completion queue may be in dis-armed state. Arm it.
122932 + */
122933 + be_notify_cmpl(pnob, 0, pnob->rx_cq_id, 1);
122934 +
122935 + return 0;
122936 +}
122937 +
122938 +static int benet_close(struct net_device *netdev)
122939 +{
122940 + struct be_net_object *pnob = netdev_priv(netdev);
122941 + struct be_adapter *adapter = pnob->adapter;
122942 +
122943 + netif_stop_queue(netdev);
122944 + synchronize_irq(netdev->irq);
122945 +
122946 + be_wait_nic_tx_cmplx_cmpl(pnob);
122947 + adapter->dev_state = BE_DEV_STATE_INIT;
122948 + netif_carrier_off(netdev);
122949 +
122950 + adapter->port0_link_sts = BE_PORT_LINK_DOWN;
122951 + adapter->port1_link_sts = BE_PORT_LINK_DOWN;
122952 + be_disable_intr(pnob);
122953 + be_disable_eq_intr(pnob);
122954 + napi_disable(&pnob->napi);
122955 +
122956 + return 0;
122957 +}
122958 +
122959 +/*
122960 + * Setting a Mac Address for BE
122961 + * Takes netdev and a void pointer as arguments.
122962 + * The pointer holds the new addres to be used.
122963 + */
122964 +static int benet_set_mac_addr(struct net_device *netdev, void *p)
122965 +{
122966 + struct sockaddr *addr = p;
122967 + struct be_net_object *pnob = netdev_priv(netdev);
122968 +
122969 + memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
122970 + be_rxf_mac_address_read_write(&pnob->fn_obj, 0, 0, false, true, false,
122971 + netdev->dev_addr, NULL, NULL);
122972 + /*
122973 + * Since we are doing Active-Passive failover, both
122974 + * ports should have matching MAC addresses everytime.
122975 + */
122976 + be_rxf_mac_address_read_write(&pnob->fn_obj, 1, 0, false, true, false,
122977 + netdev->dev_addr, NULL, NULL);
122978 +
122979 + return 0;
122980 +}
122981 +
122982 +void be_get_stats_timer_handler(unsigned long context)
122983 +{
122984 + struct be_timer_ctxt *ctxt = (struct be_timer_ctxt *)context;
122985 +
122986 + if (atomic_read(&ctxt->get_stat_flag)) {
122987 + atomic_dec(&ctxt->get_stat_flag);
122988 + up((void *)ctxt->get_stat_sem_addr);
122989 + }
122990 + del_timer(&ctxt->get_stats_timer);
122991 + return;
122992 +}
122993 +
122994 +void be_get_stat_cb(void *context, int status,
122995 + struct MCC_WRB_AMAP *optional_wrb)
122996 +{
122997 + struct be_timer_ctxt *ctxt = (struct be_timer_ctxt *)context;
122998 + /*
122999 + * just up the semaphore if the get_stat_flag
123000 + * reads 1. so that the waiter can continue.
123001 + * If it is 0, then it was handled by the timer handler.
123002 + */
123003 + del_timer(&ctxt->get_stats_timer);
123004 + if (atomic_read(&ctxt->get_stat_flag)) {
123005 + atomic_dec(&ctxt->get_stat_flag);
123006 + up((void *)ctxt->get_stat_sem_addr);
123007 + }
123008 +}
123009 +
123010 +struct net_device_stats *benet_get_stats(struct net_device *dev)
123011 +{
123012 + struct be_net_object *pnob = netdev_priv(dev);
123013 + struct be_adapter *adapter = pnob->adapter;
123014 + u64 pa;
123015 + struct be_timer_ctxt *ctxt = &adapter->timer_ctxt;
123016 +
123017 + if (adapter->dev_state != BE_DEV_STATE_OPEN) {
123018 + /* Return previously read stats */
123019 + return &(adapter->benet_stats);
123020 + }
123021 + /* Get Physical Addr */
123022 + pa = pci_map_single(adapter->pdev, adapter->eth_statsp,
123023 + sizeof(struct FWCMD_ETH_GET_STATISTICS),
123024 + PCI_DMA_FROMDEVICE);
123025 + ctxt->get_stat_sem_addr = (unsigned long)&adapter->get_eth_stat_sem;
123026 + atomic_inc(&ctxt->get_stat_flag);
123027 +
123028 + be_rxf_query_eth_statistics(&pnob->fn_obj, adapter->eth_statsp,
123029 + cpu_to_le64(pa), be_get_stat_cb, ctxt,
123030 + NULL);
123031 +
123032 + ctxt->get_stats_timer.data = (unsigned long)ctxt;
123033 + mod_timer(&ctxt->get_stats_timer, (jiffies + (HZ * 2)));
123034 + down((void *)ctxt->get_stat_sem_addr); /* callback will unblock us */
123035 +
123036 + /* Adding port0 and port1 stats. */
123037 + adapter->benet_stats.rx_packets =
123038 + adapter->eth_statsp->params.response.p0recvdtotalframes +
123039 + adapter->eth_statsp->params.response.p1recvdtotalframes;
123040 + adapter->benet_stats.tx_packets =
123041 + adapter->eth_statsp->params.response.p0xmitunicastframes +
123042 + adapter->eth_statsp->params.response.p1xmitunicastframes;
123043 + adapter->benet_stats.tx_bytes =
123044 + adapter->eth_statsp->params.response.p0xmitbyteslsd +
123045 + adapter->eth_statsp->params.response.p1xmitbyteslsd;
123046 + adapter->benet_stats.rx_errors =
123047 + adapter->eth_statsp->params.response.p0crcerrors +
123048 + adapter->eth_statsp->params.response.p1crcerrors;
123049 + adapter->benet_stats.rx_errors +=
123050 + adapter->eth_statsp->params.response.p0alignmentsymerrs +
123051 + adapter->eth_statsp->params.response.p1alignmentsymerrs;
123052 + adapter->benet_stats.rx_errors +=
123053 + adapter->eth_statsp->params.response.p0inrangelenerrors +
123054 + adapter->eth_statsp->params.response.p1inrangelenerrors;
123055 + adapter->benet_stats.rx_bytes =
123056 + adapter->eth_statsp->params.response.p0recvdtotalbytesLSD +
123057 + adapter->eth_statsp->params.response.p1recvdtotalbytesLSD;
123058 + adapter->benet_stats.rx_crc_errors =
123059 + adapter->eth_statsp->params.response.p0crcerrors +
123060 + adapter->eth_statsp->params.response.p1crcerrors;
123061 +
123062 + adapter->benet_stats.tx_packets +=
123063 + adapter->eth_statsp->params.response.p0xmitmulticastframes +
123064 + adapter->eth_statsp->params.response.p1xmitmulticastframes;
123065 + adapter->benet_stats.tx_packets +=
123066 + adapter->eth_statsp->params.response.p0xmitbroadcastframes +
123067 + adapter->eth_statsp->params.response.p1xmitbroadcastframes;
123068 + adapter->benet_stats.tx_errors = 0;
123069 +
123070 + adapter->benet_stats.multicast =
123071 + adapter->eth_statsp->params.response.p0xmitmulticastframes +
123072 + adapter->eth_statsp->params.response.p1xmitmulticastframes;
123073 +
123074 + adapter->benet_stats.rx_fifo_errors =
123075 + adapter->eth_statsp->params.response.p0rxfifooverflowdropped +
123076 + adapter->eth_statsp->params.response.p1rxfifooverflowdropped;
123077 + adapter->benet_stats.rx_frame_errors =
123078 + adapter->eth_statsp->params.response.p0alignmentsymerrs +
123079 + adapter->eth_statsp->params.response.p1alignmentsymerrs;
123080 + adapter->benet_stats.rx_length_errors =
123081 + adapter->eth_statsp->params.response.p0inrangelenerrors +
123082 + adapter->eth_statsp->params.response.p1inrangelenerrors;
123083 + adapter->benet_stats.rx_length_errors +=
123084 + adapter->eth_statsp->params.response.p0outrangeerrors +
123085 + adapter->eth_statsp->params.response.p1outrangeerrors;
123086 + adapter->benet_stats.rx_length_errors +=
123087 + adapter->eth_statsp->params.response.p0frametoolongerrors +
123088 + adapter->eth_statsp->params.response.p1frametoolongerrors;
123089 +
123090 + pci_unmap_single(adapter->pdev, (ulong) adapter->eth_statsp,
123091 + sizeof(struct FWCMD_ETH_GET_STATISTICS),
123092 + PCI_DMA_FROMDEVICE);
123093 + return &(adapter->benet_stats);
123094 +
123095 +}
123096 +
123097 +static void be_start_tx(struct be_net_object *pnob, u32 nposted)
123098 +{
123099 +#define CSR_ETH_MAX_SQPOSTS 255
123100 + struct SQ_DB_AMAP sqdb;
123101 +
123102 + sqdb.dw[0] = 0;
123103 +
123104 + AMAP_SET_BITS_PTR(SQ_DB, cid, &sqdb, pnob->tx_q_id);
123105 + while (nposted) {
123106 + if (nposted > CSR_ETH_MAX_SQPOSTS) {
123107 + AMAP_SET_BITS_PTR(SQ_DB, numPosted, &sqdb,
123108 + CSR_ETH_MAX_SQPOSTS);
123109 + nposted -= CSR_ETH_MAX_SQPOSTS;
123110 + } else {
123111 + AMAP_SET_BITS_PTR(SQ_DB, numPosted, &sqdb, nposted);
123112 + nposted = 0;
123113 + }
123114 + PD_WRITE(&pnob->fn_obj, etx_sq_db, sqdb.dw[0]);
123115 + }
123116 +
123117 + return;
123118 +}
123119 +
123120 +static void update_tx_rate(struct be_adapter *adapter)
123121 +{
123122 + /* update the rate once in two seconds */
123123 + if ((jiffies - adapter->eth_tx_jiffies) > 2 * (HZ)) {
123124 + u32 r;
123125 + r = adapter->eth_tx_bytes /
123126 + ((jiffies - adapter->eth_tx_jiffies) / (HZ));
123127 + r = (r / 1000000); /* M bytes/s */
123128 + adapter->be_stat.bes_eth_tx_rate = (r * 8); /* M bits/s */
123129 + adapter->eth_tx_jiffies = jiffies;
123130 + adapter->eth_tx_bytes = 0;
123131 + }
123132 +}
123133 +
123134 +static int wrb_cnt_in_skb(struct sk_buff *skb)
123135 +{
123136 + int cnt = 0;
123137 + while (skb) {
123138 + if (skb->len > skb->data_len)
123139 + cnt++;
123140 + cnt += skb_shinfo(skb)->nr_frags;
123141 + skb = skb_shinfo(skb)->frag_list;
123142 + }
123143 + BUG_ON(cnt > BE_MAX_TX_FRAG_COUNT);
123144 + return cnt;
123145 +}
123146 +
123147 +static void wrb_fill(struct ETH_WRB_AMAP *wrb, u64 addr, int len)
123148 +{
123149 + AMAP_SET_BITS_PTR(ETH_WRB, frag_pa_hi, wrb, addr >> 32);
123150 + AMAP_SET_BITS_PTR(ETH_WRB, frag_pa_lo, wrb, addr & 0xFFFFFFFF);
123151 + AMAP_SET_BITS_PTR(ETH_WRB, frag_len, wrb, len);
123152 +}
123153 +
123154 +static void wrb_fill_extra(struct ETH_WRB_AMAP *wrb, struct sk_buff *skb,
123155 + struct be_net_object *pnob)
123156 +{
123157 + wrb->dw[2] = 0;
123158 + wrb->dw[3] = 0;
123159 + AMAP_SET_BITS_PTR(ETH_WRB, crc, wrb, 1);
123160 + if (skb_shinfo(skb)->gso_segs > 1 && skb_shinfo(skb)->gso_size) {
123161 + AMAP_SET_BITS_PTR(ETH_WRB, lso, wrb, 1);
123162 + AMAP_SET_BITS_PTR(ETH_WRB, lso_mss, wrb,
123163 + skb_shinfo(skb)->gso_size);
123164 + } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
123165 + u8 proto = ((struct iphdr *)ip_hdr(skb))->protocol;
123166 + if (proto == IPPROTO_TCP)
123167 + AMAP_SET_BITS_PTR(ETH_WRB, tcpcs, wrb, 1);
123168 + else if (proto == IPPROTO_UDP)
123169 + AMAP_SET_BITS_PTR(ETH_WRB, udpcs, wrb, 1);
123170 + }
123171 + if (pnob->vlan_grp && vlan_tx_tag_present(skb)) {
123172 + AMAP_SET_BITS_PTR(ETH_WRB, vlan, wrb, 1);
123173 + AMAP_SET_BITS_PTR(ETH_WRB, vlan_tag, wrb, vlan_tx_tag_get(skb));
123174 + }
123175 +}
123176 +
123177 +static inline void wrb_copy_extra(struct ETH_WRB_AMAP *to,
123178 + struct ETH_WRB_AMAP *from)
123179 +{
123180 +
123181 + to->dw[2] = from->dw[2];
123182 + to->dw[3] = from->dw[3];
123183 +}
123184 +
123185 +/* Returns the actual count of wrbs used including a possible dummy */
123186 +static int copy_skb_to_txq(struct be_net_object *pnob, struct sk_buff *skb,
123187 + u32 wrb_cnt, u32 *copied)
123188 +{
123189 + u64 busaddr;
123190 + struct ETH_WRB_AMAP *wrb = NULL, *first = NULL;
123191 + u32 i;
123192 + bool dummy = true;
123193 + struct pci_dev *pdev = pnob->adapter->pdev;
123194 +
123195 + if (wrb_cnt & 1)
123196 + wrb_cnt++;
123197 + else
123198 + dummy = false;
123199 +
123200 + atomic_add(wrb_cnt, &pnob->tx_q_used);
123201 +
123202 + while (skb) {
123203 + if (skb->len > skb->data_len) {
123204 + int len = skb->len - skb->data_len;
123205 + busaddr = pci_map_single(pdev, skb->data, len,
123206 + PCI_DMA_TODEVICE);
123207 + busaddr = cpu_to_le64(busaddr);
123208 + wrb = &pnob->tx_q[pnob->tx_q_hd];
123209 + if (first == NULL) {
123210 + wrb_fill_extra(wrb, skb, pnob);
123211 + first = wrb;
123212 + } else {
123213 + wrb_copy_extra(wrb, first);
123214 + }
123215 + wrb_fill(wrb, busaddr, len);
123216 + be_adv_txq_hd(pnob);
123217 + *copied += len;
123218 + }
123219 +
123220 + for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
123221 + struct skb_frag_struct *frag =
123222 + &skb_shinfo(skb)->frags[i];
123223 + busaddr = pci_map_page(pdev, frag->page,
123224 + frag->page_offset, frag->size,
123225 + PCI_DMA_TODEVICE);
123226 + busaddr = cpu_to_le64(busaddr);
123227 + wrb = &pnob->tx_q[pnob->tx_q_hd];
123228 + if (first == NULL) {
123229 + wrb_fill_extra(wrb, skb, pnob);
123230 + first = wrb;
123231 + } else {
123232 + wrb_copy_extra(wrb, first);
123233 + }
123234 + wrb_fill(wrb, busaddr, frag->size);
123235 + be_adv_txq_hd(pnob);
123236 + *copied += frag->size;
123237 + }
123238 + skb = skb_shinfo(skb)->frag_list;
123239 + }
123240 +
123241 + if (dummy) {
123242 + wrb = &pnob->tx_q[pnob->tx_q_hd];
123243 + BUG_ON(first == NULL);
123244 + wrb_copy_extra(wrb, first);
123245 + wrb_fill(wrb, 0, 0);
123246 + be_adv_txq_hd(pnob);
123247 + }
123248 + AMAP_SET_BITS_PTR(ETH_WRB, complete, wrb, 1);
123249 + AMAP_SET_BITS_PTR(ETH_WRB, last, wrb, 1);
123250 + return wrb_cnt;
123251 +}
123252 +
123253 +/* For each skb transmitted, tx_ctxt stores the num of wrbs in the
123254 + * start index and skb pointer in the end index
123255 + */
123256 +static inline void be_tx_wrb_info_remember(struct be_net_object *pnob,
123257 + struct sk_buff *skb, int wrb_cnt,
123258 + u32 start)
123259 +{
123260 + *(u32 *) (&pnob->tx_ctxt[start]) = wrb_cnt;
123261 + index_adv(&start, wrb_cnt - 1, pnob->tx_q_len);
123262 + pnob->tx_ctxt[start] = skb;
123263 +}
123264 +
123265 +static int benet_xmit(struct sk_buff *skb, struct net_device *netdev)
123266 +{
123267 + struct be_net_object *pnob = netdev_priv(netdev);
123268 + struct be_adapter *adapter = pnob->adapter;
123269 + u32 wrb_cnt, copied = 0;
123270 + u32 start = pnob->tx_q_hd;
123271 +
123272 + adapter->be_stat.bes_tx_reqs++;
123273 +
123274 + wrb_cnt = wrb_cnt_in_skb(skb);
123275 + spin_lock_bh(&adapter->txq_lock);
123276 + if ((pnob->tx_q_len - 2 - atomic_read(&pnob->tx_q_used)) <= wrb_cnt) {
123277 + netif_stop_queue(pnob->netdev);
123278 + spin_unlock_bh(&adapter->txq_lock);
123279 + adapter->be_stat.bes_tx_fails++;
123280 + return NETDEV_TX_BUSY;
123281 + }
123282 + spin_unlock_bh(&adapter->txq_lock);
123283 +
123284 + wrb_cnt = copy_skb_to_txq(pnob, skb, wrb_cnt, &copied);
123285 + be_tx_wrb_info_remember(pnob, skb, wrb_cnt, start);
123286 +
123287 + be_start_tx(pnob, wrb_cnt);
123288 +
123289 + adapter->eth_tx_bytes += copied;
123290 + adapter->be_stat.bes_tx_wrbs += wrb_cnt;
123291 + update_tx_rate(adapter);
123292 + netdev->trans_start = jiffies;
123293 +
123294 + return NETDEV_TX_OK;
123295 +}
123296 +
123297 +/*
123298 + * This is the driver entry point to change the mtu of the device
123299 + * Returns 0 for success and errno for failure.
123300 + */
123301 +static int benet_change_mtu(struct net_device *netdev, int new_mtu)
123302 +{
123303 + /*
123304 + * BE supports jumbo frame size upto 9000 bytes including the link layer
123305 + * header. Considering the different variants of frame formats possible
123306 + * like VLAN, SNAP/LLC, the maximum possible value for MTU is 8974 bytes
123307 + */
123308 +
123309 + if (new_mtu < (ETH_ZLEN + ETH_FCS_LEN) || (new_mtu > BE_MAX_MTU)) {
123310 + dev_info(&netdev->dev, "Invalid MTU requested. "
123311 + "Must be between %d and %d bytes\n",
123312 + (ETH_ZLEN + ETH_FCS_LEN), BE_MAX_MTU);
123313 + return -EINVAL;
123314 + }
123315 + dev_info(&netdev->dev, "MTU changed from %d to %d\n",
123316 + netdev->mtu, new_mtu);
123317 + netdev->mtu = new_mtu;
123318 + return 0;
123319 +}
123320 +
123321 +/*
123322 + * This is the driver entry point to register a vlan with the device
123323 + */
123324 +static void benet_vlan_register(struct net_device *netdev,
123325 + struct vlan_group *grp)
123326 +{
123327 + struct be_net_object *pnob = netdev_priv(netdev);
123328 +
123329 + be_disable_eq_intr(pnob);
123330 + pnob->vlan_grp = grp;
123331 + pnob->num_vlans = 0;
123332 + be_enable_eq_intr(pnob);
123333 +}
123334 +
123335 +/*
123336 + * This is the driver entry point to add a vlan vlan_id
123337 + * with the device netdev
123338 + */
123339 +static void benet_vlan_add_vid(struct net_device *netdev, u16 vlan_id)
123340 +{
123341 + struct be_net_object *pnob = netdev_priv(netdev);
123342 +
123343 + if (pnob->num_vlans == (BE_NUM_VLAN_SUPPORTED - 1)) {
123344 + /* no way to return an error */
123345 + dev_info(&netdev->dev,
123346 + "BladeEngine: Cannot configure more than %d Vlans\n",
123347 + BE_NUM_VLAN_SUPPORTED);
123348 + return;
123349 + }
123350 + /* The new vlan tag will be in the slot indicated by num_vlans. */
123351 + pnob->vlan_tag[pnob->num_vlans++] = vlan_id;
123352 + be_rxf_vlan_config(&pnob->fn_obj, false, pnob->num_vlans,
123353 + pnob->vlan_tag, NULL, NULL, NULL);
123354 +}
123355 +
123356 +/*
123357 + * This is the driver entry point to remove a vlan vlan_id
123358 + * with the device netdev
123359 + */
123360 +static void benet_vlan_rem_vid(struct net_device *netdev, u16 vlan_id)
123361 +{
123362 + struct be_net_object *pnob = netdev_priv(netdev);
123363 +
123364 + u32 i, value;
123365 +
123366 + /*
123367 + * In Blade Engine, we support 32 vlan tag filters across both ports.
123368 + * To program a vlan tag, the RXF_RTPR_CSR register is used.
123369 + * Each 32-bit value of RXF_RTDR_CSR can address 2 vlan tag entries.
123370 + * The Vlan table is of depth 16. thus we support 32 tags.
123371 + */
123372 +
123373 + value = vlan_id | VLAN_VALID_BIT;
123374 + for (i = 0; i < BE_NUM_VLAN_SUPPORTED; i++) {
123375 + if (pnob->vlan_tag[i] == vlan_id)
123376 + break;
123377 + }
123378 +
123379 + if (i == BE_NUM_VLAN_SUPPORTED)
123380 + return;
123381 + /* Now compact the vlan tag array by removing hole created. */
123382 + while ((i + 1) < BE_NUM_VLAN_SUPPORTED) {
123383 + pnob->vlan_tag[i] = pnob->vlan_tag[i + 1];
123384 + i++;
123385 + }
123386 + if ((i + 1) == BE_NUM_VLAN_SUPPORTED)
123387 + pnob->vlan_tag[i] = (u16) 0x0;
123388 + pnob->num_vlans--;
123389 + be_rxf_vlan_config(&pnob->fn_obj, false, pnob->num_vlans,
123390 + pnob->vlan_tag, NULL, NULL, NULL);
123391 +}
123392 +
123393 +/*
123394 + * This function is called to program multicast
123395 + * address in the multicast filter of the ASIC.
123396 + */
123397 +static void be_set_multicast_filter(struct net_device *netdev)
123398 +{
123399 + struct be_net_object *pnob = netdev_priv(netdev);
123400 + struct dev_mc_list *mc_ptr;
123401 + u8 mac_addr[32][ETH_ALEN];
123402 + int i;
123403 +
123404 + if (netdev->flags & IFF_ALLMULTI) {
123405 + /* set BE in Multicast promiscuous */
123406 + be_rxf_multicast_config(&pnob->fn_obj, true, 0, NULL, NULL,
123407 + NULL, NULL);
123408 + return;
123409 + }
123410 +
123411 + for (mc_ptr = netdev->mc_list, i = 0; mc_ptr;
123412 + mc_ptr = mc_ptr->next, i++) {
123413 + memcpy(&mac_addr[i][0], mc_ptr->dmi_addr, ETH_ALEN);
123414 + }
123415 +
123416 + /* reset the promiscuous mode also. */
123417 + be_rxf_multicast_config(&pnob->fn_obj, false, i,
123418 + &mac_addr[0][0], NULL, NULL, NULL);
123419 +}
123420 +
123421 +/*
123422 + * This is the driver entry point to set multicast list
123423 + * with the device netdev. This function will be used to
123424 + * set promiscuous mode or multicast promiscuous mode
123425 + * or multicast mode....
123426 + */
123427 +static void benet_set_multicast_list(struct net_device *netdev)
123428 +{
123429 + struct be_net_object *pnob = netdev_priv(netdev);
123430 +
123431 + if (netdev->flags & IFF_PROMISC) {
123432 + be_rxf_promiscuous(&pnob->fn_obj, 1, 1, NULL, NULL, NULL);
123433 + } else {
123434 + be_rxf_promiscuous(&pnob->fn_obj, 0, 0, NULL, NULL, NULL);
123435 + be_set_multicast_filter(netdev);
123436 + }
123437 +}
123438 +
123439 +int benet_init(struct net_device *netdev)
123440 +{
123441 + struct be_net_object *pnob = netdev_priv(netdev);
123442 + struct be_adapter *adapter = pnob->adapter;
123443 +
123444 + ether_setup(netdev);
123445 +
123446 + netdev->open = &benet_open;
123447 + netdev->stop = &benet_close;
123448 + netdev->hard_start_xmit = &benet_xmit;
123449 +
123450 + netdev->get_stats = &benet_get_stats;
123451 +
123452 + netdev->set_multicast_list = &benet_set_multicast_list;
123453 +
123454 + netdev->change_mtu = &benet_change_mtu;
123455 + netdev->set_mac_address = &benet_set_mac_addr;
123456 +
123457 + netdev->vlan_rx_register = benet_vlan_register;
123458 + netdev->vlan_rx_add_vid = benet_vlan_add_vid;
123459 + netdev->vlan_rx_kill_vid = benet_vlan_rem_vid;
123460 +
123461 + netdev->features =
123462 + NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_HW_VLAN_RX | NETIF_F_TSO |
123463 + NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_FILTER | NETIF_F_IP_CSUM;
123464 +
123465 + netdev->flags |= IFF_MULTICAST;
123466 +
123467 + /* If device is DAC Capable, set the HIGHDMA flag for netdevice. */
123468 + if (adapter->dma_64bit_cap)
123469 + netdev->features |= NETIF_F_HIGHDMA;
123470 +
123471 + SET_ETHTOOL_OPS(netdev, &be_ethtool_ops);
123472 + return 0;
123473 +}
123474 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/bestatus.h linux-2.6.29-rc3.owrt/drivers/staging/benet/bestatus.h
123475 --- linux-2.6.29.owrt/drivers/staging/benet/bestatus.h 1970-01-01 01:00:00.000000000 +0100
123476 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/bestatus.h 2009-05-10 23:48:29.000000000 +0200
123477 @@ -0,0 +1,103 @@
123478 +/*
123479 + * Copyright (C) 2005 - 2008 ServerEngines
123480 + * All rights reserved.
123481 + *
123482 + * This program is free software; you can redistribute it and/or
123483 + * modify it under the terms of the GNU General Public License version 2
123484 + * as published by the Free Software Foundation. The full GNU General
123485 + * Public License is included in this distribution in the file called COPYING.
123486 + *
123487 + * Contact Information:
123488 + * linux-drivers@serverengines.com
123489 + *
123490 + * ServerEngines
123491 + * 209 N. Fair Oaks Ave
123492 + * Sunnyvale, CA 94085
123493 + */
123494 +#ifndef _BESTATUS_H_
123495 +#define _BESTATUS_H_
123496 +
123497 +#define BE_SUCCESS (0x00000000L)
123498 +/*
123499 + * MessageId: BE_PENDING
123500 + * The BladeEngine Driver call succeeded, and pended operation.
123501 + */
123502 +#define BE_PENDING (0x20070001L)
123503 +#define BE_STATUS_PENDING (BE_PENDING)
123504 +/*
123505 + * MessageId: BE_NOT_OK
123506 + * An error occurred.
123507 + */
123508 +#define BE_NOT_OK (0xE0070002L)
123509 +/*
123510 + * MessageId: BE_STATUS_SYSTEM_RESOURCES
123511 + * Insufficient host system resources exist to complete the API.
123512 + */
123513 +#define BE_STATUS_SYSTEM_RESOURCES (0xE0070003L)
123514 +/*
123515 + * MessageId: BE_STATUS_CHIP_RESOURCES
123516 + * Insufficient chip resources exist to complete the API.
123517 + */
123518 +#define BE_STATUS_CHIP_RESOURCES (0xE0070004L)
123519 +/*
123520 + * MessageId: BE_STATUS_NO_RESOURCE
123521 + * Insufficient resources to complete request.
123522 + */
123523 +#define BE_STATUS_NO_RESOURCE (0xE0070005L)
123524 +/*
123525 + * MessageId: BE_STATUS_BUSY
123526 + * Resource is currently busy.
123527 + */
123528 +#define BE_STATUS_BUSY (0xE0070006L)
123529 +/*
123530 + * MessageId: BE_STATUS_INVALID_PARAMETER
123531 + * Invalid Parameter in request.
123532 + */
123533 +#define BE_STATUS_INVALID_PARAMETER (0xE0000007L)
123534 +/*
123535 + * MessageId: BE_STATUS_NOT_SUPPORTED
123536 + * Requested operation is not supported.
123537 + */
123538 +#define BE_STATUS_NOT_SUPPORTED (0xE000000DL)
123539 +
123540 +/*
123541 + * ***************************************************************************
123542 + * E T H E R N E T S T A T U S
123543 + * ***************************************************************************
123544 + */
123545 +
123546 +/*
123547 + * MessageId: BE_ETH_TX_ERROR
123548 + * The Ethernet device driver failed to transmit a packet.
123549 + */
123550 +#define BE_ETH_TX_ERROR (0xE0070101L)
123551 +
123552 +/*
123553 + * ***************************************************************************
123554 + * S H A R E D S T A T U S
123555 + * ***************************************************************************
123556 + */
123557 +
123558 +/*
123559 + * MessageId: BE_STATUS_VBD_INVALID_VERSION
123560 + * The device driver is not compatible with this version of the VBD.
123561 + */
123562 +#define BE_STATUS_INVALID_VERSION (0xE0070402L)
123563 +/*
123564 + * MessageId: BE_STATUS_DOMAIN_DENIED
123565 + * The operation failed to complete due to insufficient access
123566 + * rights for the requesting domain.
123567 + */
123568 +#define BE_STATUS_DOMAIN_DENIED (0xE0070403L)
123569 +/*
123570 + * MessageId: BE_STATUS_TCP_NOT_STARTED
123571 + * The embedded TCP/IP stack has not been started.
123572 + */
123573 +#define BE_STATUS_TCP_NOT_STARTED (0xE0070409L)
123574 +/*
123575 + * MessageId: BE_STATUS_NO_MCC_WRB
123576 + * No free MCC WRB are available for posting the request.
123577 + */
123578 +#define BE_STATUS_NO_MCC_WRB (0xE0070414L)
123579 +
123580 +#endif /* _BESTATUS_ */
123581 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/cev.h linux-2.6.29-rc3.owrt/drivers/staging/benet/cev.h
123582 --- linux-2.6.29.owrt/drivers/staging/benet/cev.h 1970-01-01 01:00:00.000000000 +0100
123583 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/cev.h 2009-05-10 23:48:29.000000000 +0200
123584 @@ -0,0 +1,243 @@
123585 +/*
123586 + * Copyright (C) 2005 - 2008 ServerEngines
123587 + * All rights reserved.
123588 + *
123589 + * This program is free software; you can redistribute it and/or
123590 + * modify it under the terms of the GNU General Public License version 2
123591 + * as published by the Free Software Foundation. The full GNU General
123592 + * Public License is included in this distribution in the file called COPYING.
123593 + *
123594 + * Contact Information:
123595 + * linux-drivers@serverengines.com
123596 + *
123597 + * ServerEngines
123598 + * 209 N. Fair Oaks Ave
123599 + * Sunnyvale, CA 94085
123600 + */
123601 +/*
123602 + * Autogenerated by srcgen version: 0127
123603 + */
123604 +#ifndef __cev_amap_h__
123605 +#define __cev_amap_h__
123606 +#include "ep.h"
123607 +
123608 +/*
123609 + * Host Interrupt Status Register 0. The first of four application
123610 + * interrupt status registers. This register contains the interrupts
123611 + * for Event Queues EQ0 through EQ31.
123612 + */
123613 +struct BE_CEV_ISR0_CSR_AMAP {
123614 + u8 interrupt0; /* DWORD 0 */
123615 + u8 interrupt1; /* DWORD 0 */
123616 + u8 interrupt2; /* DWORD 0 */
123617 + u8 interrupt3; /* DWORD 0 */
123618 + u8 interrupt4; /* DWORD 0 */
123619 + u8 interrupt5; /* DWORD 0 */
123620 + u8 interrupt6; /* DWORD 0 */
123621 + u8 interrupt7; /* DWORD 0 */
123622 + u8 interrupt8; /* DWORD 0 */
123623 + u8 interrupt9; /* DWORD 0 */
123624 + u8 interrupt10; /* DWORD 0 */
123625 + u8 interrupt11; /* DWORD 0 */
123626 + u8 interrupt12; /* DWORD 0 */
123627 + u8 interrupt13; /* DWORD 0 */
123628 + u8 interrupt14; /* DWORD 0 */
123629 + u8 interrupt15; /* DWORD 0 */
123630 + u8 interrupt16; /* DWORD 0 */
123631 + u8 interrupt17; /* DWORD 0 */
123632 + u8 interrupt18; /* DWORD 0 */
123633 + u8 interrupt19; /* DWORD 0 */
123634 + u8 interrupt20; /* DWORD 0 */
123635 + u8 interrupt21; /* DWORD 0 */
123636 + u8 interrupt22; /* DWORD 0 */
123637 + u8 interrupt23; /* DWORD 0 */
123638 + u8 interrupt24; /* DWORD 0 */
123639 + u8 interrupt25; /* DWORD 0 */
123640 + u8 interrupt26; /* DWORD 0 */
123641 + u8 interrupt27; /* DWORD 0 */
123642 + u8 interrupt28; /* DWORD 0 */
123643 + u8 interrupt29; /* DWORD 0 */
123644 + u8 interrupt30; /* DWORD 0 */
123645 + u8 interrupt31; /* DWORD 0 */
123646 +} __packed;
123647 +struct CEV_ISR0_CSR_AMAP {
123648 + u32 dw[1];
123649 +};
123650 +
123651 +/*
123652 + * Host Interrupt Status Register 1. The second of four application
123653 + * interrupt status registers. This register contains the interrupts
123654 + * for Event Queues EQ32 through EQ63.
123655 + */
123656 +struct BE_CEV_ISR1_CSR_AMAP {
123657 + u8 interrupt32; /* DWORD 0 */
123658 + u8 interrupt33; /* DWORD 0 */
123659 + u8 interrupt34; /* DWORD 0 */
123660 + u8 interrupt35; /* DWORD 0 */
123661 + u8 interrupt36; /* DWORD 0 */
123662 + u8 interrupt37; /* DWORD 0 */
123663 + u8 interrupt38; /* DWORD 0 */
123664 + u8 interrupt39; /* DWORD 0 */
123665 + u8 interrupt40; /* DWORD 0 */
123666 + u8 interrupt41; /* DWORD 0 */
123667 + u8 interrupt42; /* DWORD 0 */
123668 + u8 interrupt43; /* DWORD 0 */
123669 + u8 interrupt44; /* DWORD 0 */
123670 + u8 interrupt45; /* DWORD 0 */
123671 + u8 interrupt46; /* DWORD 0 */
123672 + u8 interrupt47; /* DWORD 0 */
123673 + u8 interrupt48; /* DWORD 0 */
123674 + u8 interrupt49; /* DWORD 0 */
123675 + u8 interrupt50; /* DWORD 0 */
123676 + u8 interrupt51; /* DWORD 0 */
123677 + u8 interrupt52; /* DWORD 0 */
123678 + u8 interrupt53; /* DWORD 0 */
123679 + u8 interrupt54; /* DWORD 0 */
123680 + u8 interrupt55; /* DWORD 0 */
123681 + u8 interrupt56; /* DWORD 0 */
123682 + u8 interrupt57; /* DWORD 0 */
123683 + u8 interrupt58; /* DWORD 0 */
123684 + u8 interrupt59; /* DWORD 0 */
123685 + u8 interrupt60; /* DWORD 0 */
123686 + u8 interrupt61; /* DWORD 0 */
123687 + u8 interrupt62; /* DWORD 0 */
123688 + u8 interrupt63; /* DWORD 0 */
123689 +} __packed;
123690 +struct CEV_ISR1_CSR_AMAP {
123691 + u32 dw[1];
123692 +};
123693 +/*
123694 + * Host Interrupt Status Register 2. The third of four application
123695 + * interrupt status registers. This register contains the interrupts
123696 + * for Event Queues EQ64 through EQ95.
123697 + */
123698 +struct BE_CEV_ISR2_CSR_AMAP {
123699 + u8 interrupt64; /* DWORD 0 */
123700 + u8 interrupt65; /* DWORD 0 */
123701 + u8 interrupt66; /* DWORD 0 */
123702 + u8 interrupt67; /* DWORD 0 */
123703 + u8 interrupt68; /* DWORD 0 */
123704 + u8 interrupt69; /* DWORD 0 */
123705 + u8 interrupt70; /* DWORD 0 */
123706 + u8 interrupt71; /* DWORD 0 */
123707 + u8 interrupt72; /* DWORD 0 */
123708 + u8 interrupt73; /* DWORD 0 */
123709 + u8 interrupt74; /* DWORD 0 */
123710 + u8 interrupt75; /* DWORD 0 */
123711 + u8 interrupt76; /* DWORD 0 */
123712 + u8 interrupt77; /* DWORD 0 */
123713 + u8 interrupt78; /* DWORD 0 */
123714 + u8 interrupt79; /* DWORD 0 */
123715 + u8 interrupt80; /* DWORD 0 */
123716 + u8 interrupt81; /* DWORD 0 */
123717 + u8 interrupt82; /* DWORD 0 */
123718 + u8 interrupt83; /* DWORD 0 */
123719 + u8 interrupt84; /* DWORD 0 */
123720 + u8 interrupt85; /* DWORD 0 */
123721 + u8 interrupt86; /* DWORD 0 */
123722 + u8 interrupt87; /* DWORD 0 */
123723 + u8 interrupt88; /* DWORD 0 */
123724 + u8 interrupt89; /* DWORD 0 */
123725 + u8 interrupt90; /* DWORD 0 */
123726 + u8 interrupt91; /* DWORD 0 */
123727 + u8 interrupt92; /* DWORD 0 */
123728 + u8 interrupt93; /* DWORD 0 */
123729 + u8 interrupt94; /* DWORD 0 */
123730 + u8 interrupt95; /* DWORD 0 */
123731 +} __packed;
123732 +struct CEV_ISR2_CSR_AMAP {
123733 + u32 dw[1];
123734 +};
123735 +
123736 +/*
123737 + * Host Interrupt Status Register 3. The fourth of four application
123738 + * interrupt status registers. This register contains the interrupts
123739 + * for Event Queues EQ96 through EQ127.
123740 + */
123741 +struct BE_CEV_ISR3_CSR_AMAP {
123742 + u8 interrupt96; /* DWORD 0 */
123743 + u8 interrupt97; /* DWORD 0 */
123744 + u8 interrupt98; /* DWORD 0 */
123745 + u8 interrupt99; /* DWORD 0 */
123746 + u8 interrupt100; /* DWORD 0 */
123747 + u8 interrupt101; /* DWORD 0 */
123748 + u8 interrupt102; /* DWORD 0 */
123749 + u8 interrupt103; /* DWORD 0 */
123750 + u8 interrupt104; /* DWORD 0 */
123751 + u8 interrupt105; /* DWORD 0 */
123752 + u8 interrupt106; /* DWORD 0 */
123753 + u8 interrupt107; /* DWORD 0 */
123754 + u8 interrupt108; /* DWORD 0 */
123755 + u8 interrupt109; /* DWORD 0 */
123756 + u8 interrupt110; /* DWORD 0 */
123757 + u8 interrupt111; /* DWORD 0 */
123758 + u8 interrupt112; /* DWORD 0 */
123759 + u8 interrupt113; /* DWORD 0 */
123760 + u8 interrupt114; /* DWORD 0 */
123761 + u8 interrupt115; /* DWORD 0 */
123762 + u8 interrupt116; /* DWORD 0 */
123763 + u8 interrupt117; /* DWORD 0 */
123764 + u8 interrupt118; /* DWORD 0 */
123765 + u8 interrupt119; /* DWORD 0 */
123766 + u8 interrupt120; /* DWORD 0 */
123767 + u8 interrupt121; /* DWORD 0 */
123768 + u8 interrupt122; /* DWORD 0 */
123769 + u8 interrupt123; /* DWORD 0 */
123770 + u8 interrupt124; /* DWORD 0 */
123771 + u8 interrupt125; /* DWORD 0 */
123772 + u8 interrupt126; /* DWORD 0 */
123773 + u8 interrupt127; /* DWORD 0 */
123774 +} __packed;
123775 +struct CEV_ISR3_CSR_AMAP {
123776 + u32 dw[1];
123777 +};
123778 +
123779 +/* Completions and Events block Registers. */
123780 +struct BE_CEV_CSRMAP_AMAP {
123781 + u8 rsvd0[32]; /* DWORD 0 */
123782 + u8 rsvd1[32]; /* DWORD 1 */
123783 + u8 rsvd2[32]; /* DWORD 2 */
123784 + u8 rsvd3[32]; /* DWORD 3 */
123785 + struct BE_CEV_ISR0_CSR_AMAP isr0;
123786 + struct BE_CEV_ISR1_CSR_AMAP isr1;
123787 + struct BE_CEV_ISR2_CSR_AMAP isr2;
123788 + struct BE_CEV_ISR3_CSR_AMAP isr3;
123789 + u8 rsvd4[32]; /* DWORD 8 */
123790 + u8 rsvd5[32]; /* DWORD 9 */
123791 + u8 rsvd6[32]; /* DWORD 10 */
123792 + u8 rsvd7[32]; /* DWORD 11 */
123793 + u8 rsvd8[32]; /* DWORD 12 */
123794 + u8 rsvd9[32]; /* DWORD 13 */
123795 + u8 rsvd10[32]; /* DWORD 14 */
123796 + u8 rsvd11[32]; /* DWORD 15 */
123797 + u8 rsvd12[32]; /* DWORD 16 */
123798 + u8 rsvd13[32]; /* DWORD 17 */
123799 + u8 rsvd14[32]; /* DWORD 18 */
123800 + u8 rsvd15[32]; /* DWORD 19 */
123801 + u8 rsvd16[32]; /* DWORD 20 */
123802 + u8 rsvd17[32]; /* DWORD 21 */
123803 + u8 rsvd18[32]; /* DWORD 22 */
123804 + u8 rsvd19[32]; /* DWORD 23 */
123805 + u8 rsvd20[32]; /* DWORD 24 */
123806 + u8 rsvd21[32]; /* DWORD 25 */
123807 + u8 rsvd22[32]; /* DWORD 26 */
123808 + u8 rsvd23[32]; /* DWORD 27 */
123809 + u8 rsvd24[32]; /* DWORD 28 */
123810 + u8 rsvd25[32]; /* DWORD 29 */
123811 + u8 rsvd26[32]; /* DWORD 30 */
123812 + u8 rsvd27[32]; /* DWORD 31 */
123813 + u8 rsvd28[32]; /* DWORD 32 */
123814 + u8 rsvd29[32]; /* DWORD 33 */
123815 + u8 rsvd30[192]; /* DWORD 34 */
123816 + u8 rsvd31[192]; /* DWORD 40 */
123817 + u8 rsvd32[160]; /* DWORD 46 */
123818 + u8 rsvd33[160]; /* DWORD 51 */
123819 + u8 rsvd34[160]; /* DWORD 56 */
123820 + u8 rsvd35[96]; /* DWORD 61 */
123821 + u8 rsvd36[192][32]; /* DWORD 64 */
123822 +} __packed;
123823 +struct CEV_CSRMAP_AMAP {
123824 + u32 dw[256];
123825 +};
123826 +
123827 +#endif /* __cev_amap_h__ */
123828 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/cq.c linux-2.6.29-rc3.owrt/drivers/staging/benet/cq.c
123829 --- linux-2.6.29.owrt/drivers/staging/benet/cq.c 1970-01-01 01:00:00.000000000 +0100
123830 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/cq.c 2009-05-10 23:48:29.000000000 +0200
123831 @@ -0,0 +1,211 @@
123832 +/*
123833 + * Copyright (C) 2005 - 2008 ServerEngines
123834 + * All rights reserved.
123835 + *
123836 + * This program is free software; you can redistribute it and/or
123837 + * modify it under the terms of the GNU General Public License version 2
123838 + * as published by the Free Software Foundation. The full GNU General
123839 + * Public License is included in this distribution in the file called COPYING.
123840 + *
123841 + * Contact Information:
123842 + * linux-drivers@serverengines.com
123843 + *
123844 + * ServerEngines
123845 + * 209 N. Fair Oaks Ave
123846 + * Sunnyvale, CA 94085
123847 + */
123848 +#include "hwlib.h"
123849 +#include "bestatus.h"
123850 +
123851 +/*
123852 + * Completion Queue Objects
123853 + */
123854 +/*
123855 + *============================================================================
123856 + * P U B L I C R O U T I N E S
123857 + *============================================================================
123858 + */
123859 +
123860 +/*
123861 + This routine creates a completion queue based on the client completion
123862 + queue configuration information.
123863 +
123864 +
123865 + FunctionObject - Handle to a function object
123866 + CqBaseVa - Base VA for a the CQ ring
123867 + NumEntries - CEV_CQ_CNT_* values
123868 + solEventEnable - 0 = All CQEs can generate Events if CQ is eventable
123869 + 1 = only CQEs with solicited bit set are eventable
123870 + eventable - Eventable CQ, generates interrupts.
123871 + nodelay - 1 = Force interrupt, relevent if CQ eventable.
123872 + Interrupt is asserted immediately after EQE
123873 + write is confirmed, regardless of EQ Timer
123874 + or watermark settings.
123875 + wme - Enable watermark based coalescing
123876 + wmThresh - High watermark(CQ fullness at which event
123877 + or interrupt should be asserted). These are the
123878 + CEV_WATERMARK encoded values.
123879 + EqObject - EQ Handle to assign to this CQ
123880 + ppCqObject - Internal CQ Handle returned.
123881 +
123882 + Returns BE_SUCCESS if successfull, otherwise a useful error code is
123883 + returned.
123884 +
123885 + IRQL < DISPATCH_LEVEL
123886 +
123887 +*/
123888 +int be_cq_create(struct be_function_object *pfob,
123889 + struct ring_desc *rd, u32 length, bool solicited_eventable,
123890 + bool no_delay, u32 wm_thresh,
123891 + struct be_eq_object *eq_object, struct be_cq_object *cq_object)
123892 +{
123893 + int status = BE_SUCCESS;
123894 + u32 num_entries_encoding;
123895 + u32 num_entries = length / sizeof(struct MCC_CQ_ENTRY_AMAP);
123896 + struct FWCMD_COMMON_CQ_CREATE *fwcmd = NULL;
123897 + struct MCC_WRB_AMAP *wrb = NULL;
123898 + u32 n;
123899 + unsigned long irql;
123900 +
123901 + ASSERT(rd);
123902 + ASSERT(cq_object);
123903 + ASSERT(length % sizeof(struct MCC_CQ_ENTRY_AMAP) == 0);
123904 +
123905 + switch (num_entries) {
123906 + case 256:
123907 + num_entries_encoding = CEV_CQ_CNT_256;
123908 + break;
123909 + case 512:
123910 + num_entries_encoding = CEV_CQ_CNT_512;
123911 + break;
123912 + case 1024:
123913 + num_entries_encoding = CEV_CQ_CNT_1024;
123914 + break;
123915 + default:
123916 + ASSERT(0);
123917 + return BE_STATUS_INVALID_PARAMETER;
123918 + }
123919 +
123920 + /*
123921 + * All cq entries all the same size. Use iSCSI version
123922 + * as a test for the proper rd length.
123923 + */
123924 + memset(cq_object, 0, sizeof(*cq_object));
123925 +
123926 + atomic_set(&cq_object->ref_count, 0);
123927 + cq_object->parent_function = pfob;
123928 + cq_object->eq_object = eq_object;
123929 + cq_object->num_entries = num_entries;
123930 + /* save for MCC cq processing */
123931 + cq_object->va = rd->va;
123932 +
123933 + /* map into UT. */
123934 + length = num_entries * sizeof(struct MCC_CQ_ENTRY_AMAP);
123935 +
123936 + spin_lock_irqsave(&pfob->post_lock, irql);
123937 +
123938 + wrb = be_function_peek_mcc_wrb(pfob);
123939 + if (!wrb) {
123940 + ASSERT(wrb);
123941 + TRACE(DL_ERR, "No free MCC WRBs in create EQ.");
123942 + status = BE_STATUS_NO_MCC_WRB;
123943 + goto Error;
123944 + }
123945 + /* Prepares an embedded fwcmd, including request/response sizes. */
123946 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_CQ_CREATE);
123947 +
123948 + fwcmd->params.request.num_pages = PAGES_SPANNED(OFFSET_IN_PAGE(rd->va),
123949 + length);
123950 +
123951 + AMAP_SET_BITS_PTR(CQ_CONTEXT, valid, &fwcmd->params.request.context, 1);
123952 + n = pfob->pci_function_number;
123953 + AMAP_SET_BITS_PTR(CQ_CONTEXT, Func, &fwcmd->params.request.context, n);
123954 +
123955 + n = (eq_object != NULL);
123956 + AMAP_SET_BITS_PTR(CQ_CONTEXT, Eventable,
123957 + &fwcmd->params.request.context, n);
123958 + AMAP_SET_BITS_PTR(CQ_CONTEXT, Armed, &fwcmd->params.request.context, 1);
123959 +
123960 + n = eq_object ? eq_object->eq_id : 0;
123961 + AMAP_SET_BITS_PTR(CQ_CONTEXT, EQID, &fwcmd->params.request.context, n);
123962 + AMAP_SET_BITS_PTR(CQ_CONTEXT, Count,
123963 + &fwcmd->params.request.context, num_entries_encoding);
123964 +
123965 + n = 0; /* Protection Domain is always 0 in Linux driver */
123966 + AMAP_SET_BITS_PTR(CQ_CONTEXT, PD, &fwcmd->params.request.context, n);
123967 + AMAP_SET_BITS_PTR(CQ_CONTEXT, NoDelay,
123968 + &fwcmd->params.request.context, no_delay);
123969 + AMAP_SET_BITS_PTR(CQ_CONTEXT, SolEvent,
123970 + &fwcmd->params.request.context, solicited_eventable);
123971 +
123972 + n = (wm_thresh != 0xFFFFFFFF);
123973 + AMAP_SET_BITS_PTR(CQ_CONTEXT, WME, &fwcmd->params.request.context, n);
123974 +
123975 + n = (n ? wm_thresh : 0);
123976 + AMAP_SET_BITS_PTR(CQ_CONTEXT, Watermark,
123977 + &fwcmd->params.request.context, n);
123978 + /* Create a page list for the FWCMD. */
123979 + be_rd_to_pa_list(rd, fwcmd->params.request.pages,
123980 + ARRAY_SIZE(fwcmd->params.request.pages));
123981 +
123982 + /* Post the f/w command */
123983 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
123984 + NULL, NULL, fwcmd, NULL);
123985 + if (status != BE_SUCCESS) {
123986 + TRACE(DL_ERR, "MCC to create CQ failed.");
123987 + goto Error;
123988 + }
123989 + /* Remember the CQ id. */
123990 + cq_object->cq_id = fwcmd->params.response.cq_id;
123991 +
123992 + /* insert this cq into eq_object reference */
123993 + if (eq_object) {
123994 + atomic_inc(&eq_object->ref_count);
123995 + list_add_tail(&cq_object->cqlist_for_eq,
123996 + &eq_object->cq_list_head);
123997 + }
123998 +
123999 +Error:
124000 + spin_unlock_irqrestore(&pfob->post_lock, irql);
124001 +
124002 + if (pfob->pend_queue_driving && pfob->mcc) {
124003 + pfob->pend_queue_driving = 0;
124004 + be_drive_mcc_wrb_queue(pfob->mcc);
124005 + }
124006 + return status;
124007 +}
124008 +
124009 +/*
124010 +
124011 + Deferences the given object. Once the object's reference count drops to
124012 + zero, the object is destroyed and all resources that are held by this object
124013 + are released. The on-chip context is also destroyed along with the queue
124014 + ID, and any mappings made into the UT.
124015 +
124016 + cq_object - CQ handle returned from cq_object_create.
124017 +
124018 + returns the current reference count on the object
124019 +
124020 + IRQL: IRQL < DISPATCH_LEVEL
124021 +*/
124022 +int be_cq_destroy(struct be_cq_object *cq_object)
124023 +{
124024 + int status = 0;
124025 +
124026 + /* Nothing should reference this CQ at this point. */
124027 + ASSERT(atomic_read(&cq_object->ref_count) == 0);
124028 +
124029 + /* Send fwcmd to destroy the CQ. */
124030 + status = be_function_ring_destroy(cq_object->parent_function,
124031 + cq_object->cq_id, FWCMD_RING_TYPE_CQ,
124032 + NULL, NULL, NULL, NULL);
124033 + ASSERT(status == 0);
124034 +
124035 + /* Remove reference if this is an eventable CQ. */
124036 + if (cq_object->eq_object) {
124037 + atomic_dec(&cq_object->eq_object->ref_count);
124038 + list_del(&cq_object->cqlist_for_eq);
124039 + }
124040 + return BE_SUCCESS;
124041 +}
124042 +
124043 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/descriptors.h linux-2.6.29-rc3.owrt/drivers/staging/benet/descriptors.h
124044 --- linux-2.6.29.owrt/drivers/staging/benet/descriptors.h 1970-01-01 01:00:00.000000000 +0100
124045 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/descriptors.h 2009-05-10 23:48:29.000000000 +0200
124046 @@ -0,0 +1,71 @@
124047 +/*
124048 + * Copyright (C) 2005 - 2008 ServerEngines
124049 + * All rights reserved.
124050 + *
124051 + * This program is free software; you can redistribute it and/or
124052 + * modify it under the terms of the GNU General Public License version 2
124053 + * as published by the Free Software Foundation. The full GNU General
124054 + * Public License is included in this distribution in the file called COPYING.
124055 + *
124056 + * Contact Information:
124057 + * linux-drivers@serverengines.com
124058 + *
124059 + * ServerEngines
124060 + * 209 N. Fair Oaks Ave
124061 + * Sunnyvale, CA 94085
124062 + */
124063 +/*
124064 + * Autogenerated by srcgen version: 0127
124065 + */
124066 +#ifndef __descriptors_amap_h__
124067 +#define __descriptors_amap_h__
124068 +
124069 +/*
124070 + * --- IPC_NODE_ID_ENUM ---
124071 + * IPC processor id values
124072 + */
124073 +#define TPOST_NODE_ID (0) /* TPOST ID */
124074 +#define TPRE_NODE_ID (1) /* TPRE ID */
124075 +#define TXULP0_NODE_ID (2) /* TXULP0 ID */
124076 +#define TXULP1_NODE_ID (3) /* TXULP1 ID */
124077 +#define TXULP2_NODE_ID (4) /* TXULP2 ID */
124078 +#define RXULP0_NODE_ID (5) /* RXULP0 ID */
124079 +#define RXULP1_NODE_ID (6) /* RXULP1 ID */
124080 +#define RXULP2_NODE_ID (7) /* RXULP2 ID */
124081 +#define MPU_NODE_ID (15) /* MPU ID */
124082 +
124083 +/*
124084 + * --- MAC_ID_ENUM ---
124085 + * Meaning of the mac_id field in rxpp_eth_d
124086 + */
124087 +#define PORT0_HOST_MAC0 (0) /* PD 0, Port 0, host networking, MAC 0. */
124088 +#define PORT0_HOST_MAC1 (1) /* PD 0, Port 0, host networking, MAC 1. */
124089 +#define PORT0_STORAGE_MAC0 (2) /* PD 0, Port 0, host storage, MAC 0. */
124090 +#define PORT0_STORAGE_MAC1 (3) /* PD 0, Port 0, host storage, MAC 1. */
124091 +#define PORT1_HOST_MAC0 (4) /* PD 0, Port 1 host networking, MAC 0. */
124092 +#define PORT1_HOST_MAC1 (5) /* PD 0, Port 1 host networking, MAC 1. */
124093 +#define PORT1_STORAGE_MAC0 (6) /* PD 0, Port 1 host storage, MAC 0. */
124094 +#define PORT1_STORAGE_MAC1 (7) /* PD 0, Port 1 host storage, MAC 1. */
124095 +#define FIRST_VM_MAC (8) /* PD 1 MAC. Protection domains have IDs */
124096 + /* from 0x8-0x26, one per PD. */
124097 +#define LAST_VM_MAC (38) /* PD 31 MAC. */
124098 +#define MGMT_MAC (39) /* Management port MAC. */
124099 +#define MARBLE_MAC0 (59) /* Used for flushing function 0 receive */
124100 + /*
124101 + * queues before re-using a torn-down
124102 + * receive ring. the DA =
124103 + * 00-00-00-00-00-00, and the MSB of the
124104 + * SA = 00
124105 + */
124106 +#define MARBLE_MAC1 (60) /* Used for flushing function 1 receive */
124107 + /*
124108 + * queues before re-using a torn-down
124109 + * receive ring. the DA =
124110 + * 00-00-00-00-00-00, and the MSB of the
124111 + * SA != 00
124112 + */
124113 +#define NULL_MAC (61) /* Promiscuous mode, indicates no match */
124114 +#define MCAST_MAC (62) /* Multicast match. */
124115 +#define BCAST_MATCH (63) /* Broadcast match. */
124116 +
124117 +#endif /* __descriptors_amap_h__ */
124118 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/doorbells.h linux-2.6.29-rc3.owrt/drivers/staging/benet/doorbells.h
124119 --- linux-2.6.29.owrt/drivers/staging/benet/doorbells.h 1970-01-01 01:00:00.000000000 +0100
124120 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/doorbells.h 2009-05-10 23:48:29.000000000 +0200
124121 @@ -0,0 +1,179 @@
124122 +/*
124123 + * Copyright (C) 2005 - 2008 ServerEngines
124124 + * All rights reserved.
124125 + *
124126 + * This program is free software; you can redistribute it and/or
124127 + * modify it under the terms of the GNU General Public License version 2
124128 + * as published by the Free Software Foundation. The full GNU General
124129 + * Public License is included in this distribution in the file called COPYING.
124130 + *
124131 + * Contact Information:
124132 + * linux-drivers@serverengines.com
124133 + *
124134 + * ServerEngines
124135 + * 209 N. Fair Oaks Ave
124136 + * Sunnyvale, CA 94085
124137 + */
124138 +/*
124139 + * Autogenerated by srcgen version: 0127
124140 + */
124141 +#ifndef __doorbells_amap_h__
124142 +#define __doorbells_amap_h__
124143 +
124144 +/* The TX/RDMA send queue doorbell. */
124145 +struct BE_SQ_DB_AMAP {
124146 + u8 cid[11]; /* DWORD 0 */
124147 + u8 rsvd0[5]; /* DWORD 0 */
124148 + u8 numPosted[14]; /* DWORD 0 */
124149 + u8 rsvd1[2]; /* DWORD 0 */
124150 +} __packed;
124151 +struct SQ_DB_AMAP {
124152 + u32 dw[1];
124153 +};
124154 +
124155 +/* The receive queue doorbell. */
124156 +struct BE_RQ_DB_AMAP {
124157 + u8 rq[10]; /* DWORD 0 */
124158 + u8 rsvd0[13]; /* DWORD 0 */
124159 + u8 Invalidate; /* DWORD 0 */
124160 + u8 numPosted[8]; /* DWORD 0 */
124161 +} __packed;
124162 +struct RQ_DB_AMAP {
124163 + u32 dw[1];
124164 +};
124165 +
124166 +/*
124167 + * The CQ/EQ doorbell. Software MUST set reserved fields in this
124168 + * descriptor to zero, otherwise (CEV) hardware will not execute the
124169 + * doorbell (flagging a bad_db_qid error instead).
124170 + */
124171 +struct BE_CQ_DB_AMAP {
124172 + u8 qid[10]; /* DWORD 0 */
124173 + u8 rsvd0[4]; /* DWORD 0 */
124174 + u8 rearm; /* DWORD 0 */
124175 + u8 event; /* DWORD 0 */
124176 + u8 num_popped[13]; /* DWORD 0 */
124177 + u8 rsvd1[3]; /* DWORD 0 */
124178 +} __packed;
124179 +struct CQ_DB_AMAP {
124180 + u32 dw[1];
124181 +};
124182 +
124183 +struct BE_TPM_RQ_DB_AMAP {
124184 + u8 qid[10]; /* DWORD 0 */
124185 + u8 rsvd0[6]; /* DWORD 0 */
124186 + u8 numPosted[11]; /* DWORD 0 */
124187 + u8 mss_cnt[5]; /* DWORD 0 */
124188 +} __packed;
124189 +struct TPM_RQ_DB_AMAP {
124190 + u32 dw[1];
124191 +};
124192 +
124193 +/*
124194 + * Post WRB Queue Doorbell Register used by the host Storage stack
124195 + * to notify the controller of a posted Work Request Block
124196 + */
124197 +struct BE_WRB_POST_DB_AMAP {
124198 + u8 wrb_cid[10]; /* DWORD 0 */
124199 + u8 rsvd0[6]; /* DWORD 0 */
124200 + u8 wrb_index[8]; /* DWORD 0 */
124201 + u8 numberPosted[8]; /* DWORD 0 */
124202 +} __packed;
124203 +struct WRB_POST_DB_AMAP {
124204 + u32 dw[1];
124205 +};
124206 +
124207 +/*
124208 + * Update Default PDU Queue Doorbell Register used to communicate
124209 + * to the controller that the driver has stopped processing the queue
124210 + * and where in the queue it stopped, this is
124211 + * a CQ Entry Type. Used by storage driver.
124212 + */
124213 +struct BE_DEFAULT_PDU_DB_AMAP {
124214 + u8 qid[10]; /* DWORD 0 */
124215 + u8 rsvd0[4]; /* DWORD 0 */
124216 + u8 rearm; /* DWORD 0 */
124217 + u8 event; /* DWORD 0 */
124218 + u8 cqproc[14]; /* DWORD 0 */
124219 + u8 rsvd1[2]; /* DWORD 0 */
124220 +} __packed;
124221 +struct DEFAULT_PDU_DB_AMAP {
124222 + u32 dw[1];
124223 +};
124224 +
124225 +/* Management Command and Controller default fragment ring */
124226 +struct BE_MCC_DB_AMAP {
124227 + u8 rid[11]; /* DWORD 0 */
124228 + u8 rsvd0[5]; /* DWORD 0 */
124229 + u8 numPosted[14]; /* DWORD 0 */
124230 + u8 rsvd1[2]; /* DWORD 0 */
124231 +} __packed;
124232 +struct MCC_DB_AMAP {
124233 + u32 dw[1];
124234 +};
124235 +
124236 +/*
124237 + * Used for bootstrapping the Host interface. This register is
124238 + * used for driver communication with the MPU when no MCC Rings exist.
124239 + * The software must write this register twice to post any MCC
124240 + * command. First, it writes the register with hi=1 and the upper bits of
124241 + * the physical address for the MCC_MAILBOX structure. Software must poll
124242 + * the ready bit until this is acknowledged. Then, sotware writes the
124243 + * register with hi=0 with the lower bits in the address. It must
124244 + * poll the ready bit until the MCC command is complete. Upon completion,
124245 + * the MCC_MAILBOX will contain a valid completion queue entry.
124246 + */
124247 +struct BE_MPU_MAILBOX_DB_AMAP {
124248 + u8 ready; /* DWORD 0 */
124249 + u8 hi; /* DWORD 0 */
124250 + u8 address[30]; /* DWORD 0 */
124251 +} __packed;
124252 +struct MPU_MAILBOX_DB_AMAP {
124253 + u32 dw[1];
124254 +};
124255 +
124256 +/*
124257 + * This is the protection domain doorbell register map. Note that
124258 + * while this map shows doorbells for all Blade Engine supported
124259 + * protocols, not all of these may be valid in a given function or
124260 + * protection domain. It is the responsibility of the application
124261 + * accessing the doorbells to know which are valid. Each doorbell
124262 + * occupies 32 bytes of space, but unless otherwise specified,
124263 + * only the first 4 bytes should be written. There are 32 instances
124264 + * of these doorbells for the host and 31 virtual machines respectively.
124265 + * The host and VMs will only map the doorbell pages belonging to its
124266 + * protection domain. It will not be able to touch the doorbells for
124267 + * another VM. The doorbells are the only registers directly accessible
124268 + * by a virtual machine. Similarly, there are 511 additional
124269 + * doorbells for RDMA protection domains. PD 0 for RDMA shares
124270 + * the same physical protection domain doorbell page as ETH/iSCSI.
124271 + *
124272 + */
124273 +struct BE_PROTECTION_DOMAIN_DBMAP_AMAP {
124274 + u8 rsvd0[512]; /* DWORD 0 */
124275 + struct BE_SQ_DB_AMAP rdma_sq_db;
124276 + u8 rsvd1[7][32]; /* DWORD 17 */
124277 + struct BE_WRB_POST_DB_AMAP iscsi_wrb_post_db;
124278 + u8 rsvd2[7][32]; /* DWORD 25 */
124279 + struct BE_SQ_DB_AMAP etx_sq_db;
124280 + u8 rsvd3[7][32]; /* DWORD 33 */
124281 + struct BE_RQ_DB_AMAP rdma_rq_db;
124282 + u8 rsvd4[7][32]; /* DWORD 41 */
124283 + struct BE_DEFAULT_PDU_DB_AMAP iscsi_default_pdu_db;
124284 + u8 rsvd5[7][32]; /* DWORD 49 */
124285 + struct BE_TPM_RQ_DB_AMAP tpm_rq_db;
124286 + u8 rsvd6[7][32]; /* DWORD 57 */
124287 + struct BE_RQ_DB_AMAP erx_rq_db;
124288 + u8 rsvd7[7][32]; /* DWORD 65 */
124289 + struct BE_CQ_DB_AMAP cq_db;
124290 + u8 rsvd8[7][32]; /* DWORD 73 */
124291 + struct BE_MCC_DB_AMAP mpu_mcc_db;
124292 + u8 rsvd9[7][32]; /* DWORD 81 */
124293 + struct BE_MPU_MAILBOX_DB_AMAP mcc_bootstrap_db;
124294 + u8 rsvd10[935][32]; /* DWORD 89 */
124295 +} __packed;
124296 +struct PROTECTION_DOMAIN_DBMAP_AMAP {
124297 + u32 dw[1024];
124298 +};
124299 +
124300 +#endif /* __doorbells_amap_h__ */
124301 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/ep.h linux-2.6.29-rc3.owrt/drivers/staging/benet/ep.h
124302 --- linux-2.6.29.owrt/drivers/staging/benet/ep.h 1970-01-01 01:00:00.000000000 +0100
124303 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/ep.h 2009-05-10 23:48:29.000000000 +0200
124304 @@ -0,0 +1,66 @@
124305 +/*
124306 + * Copyright (C) 2005 - 2008 ServerEngines
124307 + * All rights reserved.
124308 + *
124309 + * This program is free software; you can redistribute it and/or
124310 + * modify it under the terms of the GNU General Public License version 2
124311 + * as published by the Free Software Foundation. The full GNU General
124312 + * Public License is included in this distribution in the file called COPYING.
124313 + *
124314 + * Contact Information:
124315 + * linux-drivers@serverengines.com
124316 + *
124317 + * ServerEngines
124318 + * 209 N. Fair Oaks Ave
124319 + * Sunnyvale, CA 94085
124320 + */
124321 +/*
124322 + * Autogenerated by srcgen version: 0127
124323 + */
124324 +#ifndef __ep_amap_h__
124325 +#define __ep_amap_h__
124326 +
124327 +/* General Control and Status Register. */
124328 +struct BE_EP_CONTROL_CSR_AMAP {
124329 + u8 m0_RxPbuf; /* DWORD 0 */
124330 + u8 m1_RxPbuf; /* DWORD 0 */
124331 + u8 m2_RxPbuf; /* DWORD 0 */
124332 + u8 ff_en; /* DWORD 0 */
124333 + u8 rsvd0[27]; /* DWORD 0 */
124334 + u8 CPU_reset; /* DWORD 0 */
124335 +} __packed;
124336 +struct EP_CONTROL_CSR_AMAP {
124337 + u32 dw[1];
124338 +};
124339 +
124340 +/* Semaphore Register. */
124341 +struct BE_EP_SEMAPHORE_CSR_AMAP {
124342 + u8 value[32]; /* DWORD 0 */
124343 +} __packed;
124344 +struct EP_SEMAPHORE_CSR_AMAP {
124345 + u32 dw[1];
124346 +};
124347 +
124348 +/* Embedded Processor Specific Registers. */
124349 +struct BE_EP_CSRMAP_AMAP {
124350 + struct BE_EP_CONTROL_CSR_AMAP ep_control;
124351 + u8 rsvd0[32]; /* DWORD 1 */
124352 + u8 rsvd1[32]; /* DWORD 2 */
124353 + u8 rsvd2[32]; /* DWORD 3 */
124354 + u8 rsvd3[32]; /* DWORD 4 */
124355 + u8 rsvd4[32]; /* DWORD 5 */
124356 + u8 rsvd5[8][128]; /* DWORD 6 */
124357 + u8 rsvd6[32]; /* DWORD 38 */
124358 + u8 rsvd7[32]; /* DWORD 39 */
124359 + u8 rsvd8[32]; /* DWORD 40 */
124360 + u8 rsvd9[32]; /* DWORD 41 */
124361 + u8 rsvd10[32]; /* DWORD 42 */
124362 + struct BE_EP_SEMAPHORE_CSR_AMAP ep_semaphore;
124363 + u8 rsvd11[32]; /* DWORD 44 */
124364 + u8 rsvd12[19][32]; /* DWORD 45 */
124365 +} __packed;
124366 +struct EP_CSRMAP_AMAP {
124367 + u32 dw[64];
124368 +};
124369 +
124370 +#endif /* __ep_amap_h__ */
124371 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/eq.c linux-2.6.29-rc3.owrt/drivers/staging/benet/eq.c
124372 --- linux-2.6.29.owrt/drivers/staging/benet/eq.c 1970-01-01 01:00:00.000000000 +0100
124373 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/eq.c 2009-05-10 23:48:29.000000000 +0200
124374 @@ -0,0 +1,299 @@
124375 +/*
124376 + * Copyright (C) 2005 - 2008 ServerEngines
124377 + * All rights reserved.
124378 + *
124379 + * This program is free software; you can redistribute it and/or
124380 + * modify it under the terms of the GNU General Public License version 2
124381 + * as published by the Free Software Foundation. The full GNU General
124382 + * Public License is included in this distribution in the file called COPYING.
124383 + *
124384 + * Contact Information:
124385 + * linux-drivers@serverengines.com
124386 + *
124387 + * ServerEngines
124388 + * 209 N. Fair Oaks Ave
124389 + * Sunnyvale, CA 94085
124390 + */
124391 +#include "hwlib.h"
124392 +#include "bestatus.h"
124393 +/*
124394 + This routine creates an event queue based on the client completion
124395 + queue configuration information.
124396 +
124397 + FunctionObject - Handle to a function object
124398 + EqBaseVa - Base VA for a the EQ ring
124399 + SizeEncoding - The encoded size for the EQ entries. This value is
124400 + either CEV_EQ_SIZE_4 or CEV_EQ_SIZE_16
124401 + NumEntries - CEV_CQ_CNT_* values.
124402 + Watermark - Enables watermark based coalescing. This parameter
124403 + must be of the type CEV_WMARK_* if watermarks
124404 + are enabled. If watermarks to to be disabled
124405 + this value should be-1.
124406 + TimerDelay - If a timer delay is enabled this value should be the
124407 + time of the delay in 8 microsecond units. If
124408 + delays are not used this parameter should be
124409 + set to -1.
124410 + ppEqObject - Internal EQ Handle returned.
124411 +
124412 + Returns BE_SUCCESS if successfull,, otherwise a useful error code
124413 + is returned.
124414 +
124415 + IRQL < DISPATCH_LEVEL
124416 +*/
124417 +int
124418 +be_eq_create(struct be_function_object *pfob,
124419 + struct ring_desc *rd, u32 eqe_size, u32 num_entries,
124420 + u32 watermark, /* CEV_WMARK_* or -1 */
124421 + u32 timer_delay, /* in 8us units, or -1 */
124422 + struct be_eq_object *eq_object)
124423 +{
124424 + int status = BE_SUCCESS;
124425 + u32 num_entries_encoding, eqe_size_encoding, length;
124426 + struct FWCMD_COMMON_EQ_CREATE *fwcmd = NULL;
124427 + struct MCC_WRB_AMAP *wrb = NULL;
124428 + u32 n;
124429 + unsigned long irql;
124430 +
124431 + ASSERT(rd);
124432 + ASSERT(eq_object);
124433 +
124434 + switch (num_entries) {
124435 + case 256:
124436 + num_entries_encoding = CEV_EQ_CNT_256;
124437 + break;
124438 + case 512:
124439 + num_entries_encoding = CEV_EQ_CNT_512;
124440 + break;
124441 + case 1024:
124442 + num_entries_encoding = CEV_EQ_CNT_1024;
124443 + break;
124444 + case 2048:
124445 + num_entries_encoding = CEV_EQ_CNT_2048;
124446 + break;
124447 + case 4096:
124448 + num_entries_encoding = CEV_EQ_CNT_4096;
124449 + break;
124450 + default:
124451 + ASSERT(0);
124452 + return BE_STATUS_INVALID_PARAMETER;
124453 + }
124454 +
124455 + switch (eqe_size) {
124456 + case 4:
124457 + eqe_size_encoding = CEV_EQ_SIZE_4;
124458 + break;
124459 + case 16:
124460 + eqe_size_encoding = CEV_EQ_SIZE_16;
124461 + break;
124462 + default:
124463 + ASSERT(0);
124464 + return BE_STATUS_INVALID_PARAMETER;
124465 + }
124466 +
124467 + if ((eqe_size == 4 && num_entries < 1024) ||
124468 + (eqe_size == 16 && num_entries == 4096)) {
124469 + TRACE(DL_ERR, "Bad EQ size. eqe_size:%d num_entries:%d",
124470 + eqe_size, num_entries);
124471 + ASSERT(0);
124472 + return BE_STATUS_INVALID_PARAMETER;
124473 + }
124474 +
124475 + memset(eq_object, 0, sizeof(*eq_object));
124476 +
124477 + atomic_set(&eq_object->ref_count, 0);
124478 + eq_object->parent_function = pfob;
124479 + eq_object->eq_id = 0xFFFFFFFF;
124480 +
124481 + INIT_LIST_HEAD(&eq_object->cq_list_head);
124482 +
124483 + length = num_entries * eqe_size;
124484 +
124485 + spin_lock_irqsave(&pfob->post_lock, irql);
124486 +
124487 + wrb = be_function_peek_mcc_wrb(pfob);
124488 + if (!wrb) {
124489 + ASSERT(wrb);
124490 + TRACE(DL_ERR, "No free MCC WRBs in create EQ.");
124491 + status = BE_STATUS_NO_MCC_WRB;
124492 + goto Error;
124493 + }
124494 + /* Prepares an embedded fwcmd, including request/response sizes. */
124495 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_EQ_CREATE);
124496 +
124497 + fwcmd->params.request.num_pages = PAGES_SPANNED(OFFSET_IN_PAGE(rd->va),
124498 + length);
124499 + n = pfob->pci_function_number;
124500 + AMAP_SET_BITS_PTR(EQ_CONTEXT, Func, &fwcmd->params.request.context, n);
124501 +
124502 + AMAP_SET_BITS_PTR(EQ_CONTEXT, valid, &fwcmd->params.request.context, 1);
124503 +
124504 + AMAP_SET_BITS_PTR(EQ_CONTEXT, Size,
124505 + &fwcmd->params.request.context, eqe_size_encoding);
124506 +
124507 + n = 0; /* Protection Domain is always 0 in Linux driver */
124508 + AMAP_SET_BITS_PTR(EQ_CONTEXT, PD, &fwcmd->params.request.context, n);
124509 +
124510 + /* Let the caller ARM the EQ with the doorbell. */
124511 + AMAP_SET_BITS_PTR(EQ_CONTEXT, Armed, &fwcmd->params.request.context, 0);
124512 +
124513 + AMAP_SET_BITS_PTR(EQ_CONTEXT, Count, &fwcmd->params.request.context,
124514 + num_entries_encoding);
124515 +
124516 + n = pfob->pci_function_number * 32;
124517 + AMAP_SET_BITS_PTR(EQ_CONTEXT, EventVect,
124518 + &fwcmd->params.request.context, n);
124519 + if (watermark != -1) {
124520 + AMAP_SET_BITS_PTR(EQ_CONTEXT, WME,
124521 + &fwcmd->params.request.context, 1);
124522 + AMAP_SET_BITS_PTR(EQ_CONTEXT, Watermark,
124523 + &fwcmd->params.request.context, watermark);
124524 + ASSERT(watermark <= CEV_WMARK_240);
124525 + } else
124526 + AMAP_SET_BITS_PTR(EQ_CONTEXT, WME,
124527 + &fwcmd->params.request.context, 0);
124528 + if (timer_delay != -1) {
124529 + AMAP_SET_BITS_PTR(EQ_CONTEXT, TMR,
124530 + &fwcmd->params.request.context, 1);
124531 +
124532 + ASSERT(timer_delay <= 250); /* max value according to EAS */
124533 + timer_delay = min(timer_delay, (u32)250);
124534 +
124535 + AMAP_SET_BITS_PTR(EQ_CONTEXT, Delay,
124536 + &fwcmd->params.request.context, timer_delay);
124537 + } else {
124538 + AMAP_SET_BITS_PTR(EQ_CONTEXT, TMR,
124539 + &fwcmd->params.request.context, 0);
124540 + }
124541 + /* Create a page list for the FWCMD. */
124542 + be_rd_to_pa_list(rd, fwcmd->params.request.pages,
124543 + ARRAY_SIZE(fwcmd->params.request.pages));
124544 +
124545 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
124546 + NULL, NULL, fwcmd, NULL);
124547 + if (status != BE_SUCCESS) {
124548 + TRACE(DL_ERR, "MCC to create EQ failed.");
124549 + goto Error;
124550 + }
124551 + /* Get the EQ id. The MPU allocates the IDs. */
124552 + eq_object->eq_id = fwcmd->params.response.eq_id;
124553 +
124554 +Error:
124555 + spin_unlock_irqrestore(&pfob->post_lock, irql);
124556 +
124557 + if (pfob->pend_queue_driving && pfob->mcc) {
124558 + pfob->pend_queue_driving = 0;
124559 + be_drive_mcc_wrb_queue(pfob->mcc);
124560 + }
124561 + return status;
124562 +}
124563 +
124564 +/*
124565 + Deferences the given object. Once the object's reference count drops to
124566 + zero, the object is destroyed and all resources that are held by this
124567 + object are released. The on-chip context is also destroyed along with
124568 + the queue ID, and any mappings made into the UT.
124569 +
124570 + eq_object - EQ handle returned from eq_object_create.
124571 +
124572 + Returns BE_SUCCESS if successfull, otherwise a useful error code
124573 + is returned.
124574 +
124575 + IRQL: IRQL < DISPATCH_LEVEL
124576 +*/
124577 +int be_eq_destroy(struct be_eq_object *eq_object)
124578 +{
124579 + int status = 0;
124580 +
124581 + ASSERT(atomic_read(&eq_object->ref_count) == 0);
124582 + /* no CQs should reference this EQ now */
124583 + ASSERT(list_empty(&eq_object->cq_list_head));
124584 +
124585 + /* Send fwcmd to destroy the EQ. */
124586 + status = be_function_ring_destroy(eq_object->parent_function,
124587 + eq_object->eq_id, FWCMD_RING_TYPE_EQ,
124588 + NULL, NULL, NULL, NULL);
124589 + ASSERT(status == 0);
124590 +
124591 + return BE_SUCCESS;
124592 +}
124593 +/*
124594 + *---------------------------------------------------------------------------
124595 + * Function: be_eq_modify_delay
124596 + * Changes the EQ delay for a group of EQs.
124597 + * num_eq - The number of EQs in the eq_array to adjust.
124598 + * This also is the number of delay values in
124599 + * the eq_delay_array.
124600 + * eq_array - Array of struct be_eq_object pointers to adjust.
124601 + * eq_delay_array - Array of "num_eq" timer delays in units
124602 + * of microseconds. The be_eq_query_delay_range
124603 + * fwcmd returns the resolution and range of
124604 + * legal EQ delays.
124605 + * cb -
124606 + * cb_context -
124607 + * q_ctxt - Optional. Pointer to a previously allocated
124608 + * struct. If the MCC WRB ring is full, this
124609 + * structure is used to queue the operation. It
124610 + * will be posted to the MCC ring when space
124611 + * becomes available. All queued commands will
124612 + * be posted to the ring in the order they are
124613 + * received. It is always valid to pass a pointer to
124614 + * a generic be_generic_q_cntxt. However,
124615 + * the specific context structs
124616 + * are generally smaller than the generic struct.
124617 + * return pend_status - BE_SUCCESS (0) on success.
124618 + * BE_PENDING (postive value) if the FWCMD
124619 + * completion is pending. Negative error code on failure.
124620 + *-------------------------------------------------------------------------
124621 + */
124622 +int
124623 +be_eq_modify_delay(struct be_function_object *pfob,
124624 + u32 num_eq, struct be_eq_object **eq_array,
124625 + u32 *eq_delay_array, mcc_wrb_cqe_callback cb,
124626 + void *cb_context, struct be_eq_modify_delay_q_ctxt *q_ctxt)
124627 +{
124628 + struct FWCMD_COMMON_MODIFY_EQ_DELAY *fwcmd = NULL;
124629 + struct MCC_WRB_AMAP *wrb = NULL;
124630 + int status = 0;
124631 + struct be_generic_q_ctxt *gen_ctxt = NULL;
124632 + u32 i;
124633 + unsigned long irql;
124634 +
124635 + spin_lock_irqsave(&pfob->post_lock, irql);
124636 +
124637 + wrb = be_function_peek_mcc_wrb(pfob);
124638 + if (!wrb) {
124639 + if (q_ctxt && cb) {
124640 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
124641 + gen_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
124642 + gen_ctxt->context.bytes = sizeof(*q_ctxt);
124643 + } else {
124644 + status = BE_STATUS_NO_MCC_WRB;
124645 + goto Error;
124646 + }
124647 + }
124648 + /* Prepares an embedded fwcmd, including request/response sizes. */
124649 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_MODIFY_EQ_DELAY);
124650 +
124651 + ASSERT(num_eq > 0);
124652 + ASSERT(num_eq <= ARRAY_SIZE(fwcmd->params.request.delay));
124653 + fwcmd->params.request.num_eq = num_eq;
124654 + for (i = 0; i < num_eq; i++) {
124655 + fwcmd->params.request.delay[i].eq_id = eq_array[i]->eq_id;
124656 + fwcmd->params.request.delay[i].delay_in_microseconds =
124657 + eq_delay_array[i];
124658 + }
124659 +
124660 + /* Post the f/w command */
124661 + status = be_function_post_mcc_wrb(pfob, wrb, gen_ctxt,
124662 + cb, cb_context, NULL, NULL, fwcmd, NULL);
124663 +
124664 +Error:
124665 + spin_unlock_irqrestore(&pfob->post_lock, irql);
124666 +
124667 + if (pfob->pend_queue_driving && pfob->mcc) {
124668 + pfob->pend_queue_driving = 0;
124669 + be_drive_mcc_wrb_queue(pfob->mcc);
124670 + }
124671 + return status;
124672 +}
124673 +
124674 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/eth.c linux-2.6.29-rc3.owrt/drivers/staging/benet/eth.c
124675 --- linux-2.6.29.owrt/drivers/staging/benet/eth.c 1970-01-01 01:00:00.000000000 +0100
124676 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/eth.c 2009-05-10 23:48:29.000000000 +0200
124677 @@ -0,0 +1,1273 @@
124678 +/*
124679 + * Copyright (C) 2005 - 2008 ServerEngines
124680 + * All rights reserved.
124681 + *
124682 + * This program is free software; you can redistribute it and/or
124683 + * modify it under the terms of the GNU General Public License version 2
124684 + * as published by the Free Software Foundation. The full GNU General
124685 + * Public License is included in this distribution in the file called COPYING.
124686 + *
124687 + * Contact Information:
124688 + * linux-drivers@serverengines.com
124689 + *
124690 + * ServerEngines
124691 + * 209 N. Fair Oaks Ave
124692 + * Sunnyvale, CA 94085
124693 + */
124694 +#include <linux/if_ether.h>
124695 +#include "hwlib.h"
124696 +#include "bestatus.h"
124697 +
124698 +/*
124699 + *---------------------------------------------------------
124700 + * Function: be_eth_sq_create_ex
124701 + * Creates an ethernet send ring - extended version with
124702 + * additional parameters.
124703 + * pfob -
124704 + * rd - ring address
124705 + * length_in_bytes -
124706 + * type - The type of ring to create.
124707 + * ulp - The requested ULP number for the ring.
124708 + * This should be zero based, i.e. 0,1,2. This must
124709 + * be valid NIC ULP based on the firmware config.
124710 + * All doorbells for this ring must be sent to
124711 + * this ULP. The first network ring allocated for
124712 + * each ULP are higher performance than subsequent rings.
124713 + * cq_object - cq object for completions
124714 + * ex_parameters - Additional parameters (that may increase in
124715 + * future revisions). These parameters are only used
124716 + * for certain ring types -- see
124717 + * struct be_eth_sq_parameters for details.
124718 + * eth_sq -
124719 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
124720 + *---------------------------------------------------------
124721 + */
124722 +int
124723 +be_eth_sq_create_ex(struct be_function_object *pfob, struct ring_desc *rd,
124724 + u32 length, u32 type, u32 ulp, struct be_cq_object *cq_object,
124725 + struct be_eth_sq_parameters *ex_parameters,
124726 + struct be_ethsq_object *eth_sq)
124727 +{
124728 + struct FWCMD_COMMON_ETH_TX_CREATE *fwcmd = NULL;
124729 + struct MCC_WRB_AMAP *wrb = NULL;
124730 + int status = 0;
124731 + u32 n;
124732 + unsigned long irql;
124733 +
124734 + ASSERT(rd);
124735 + ASSERT(eth_sq);
124736 + ASSERT(ex_parameters);
124737 +
124738 + spin_lock_irqsave(&pfob->post_lock, irql);
124739 +
124740 + memset(eth_sq, 0, sizeof(*eth_sq));
124741 +
124742 + eth_sq->parent_function = pfob;
124743 + eth_sq->bid = 0xFFFFFFFF;
124744 + eth_sq->cq_object = cq_object;
124745 +
124746 + /* Translate hwlib interface to arm interface. */
124747 + switch (type) {
124748 + case BE_ETH_TX_RING_TYPE_FORWARDING:
124749 + type = ETH_TX_RING_TYPE_FORWARDING;
124750 + break;
124751 + case BE_ETH_TX_RING_TYPE_STANDARD:
124752 + type = ETH_TX_RING_TYPE_STANDARD;
124753 + break;
124754 + case BE_ETH_TX_RING_TYPE_BOUND:
124755 + ASSERT(ex_parameters->port < 2);
124756 + type = ETH_TX_RING_TYPE_BOUND;
124757 + break;
124758 + default:
124759 + TRACE(DL_ERR, "Invalid eth tx ring type:%d", type);
124760 + return BE_NOT_OK;
124761 + break;
124762 + }
124763 +
124764 + wrb = be_function_peek_mcc_wrb(pfob);
124765 + if (!wrb) {
124766 + ASSERT(wrb);
124767 + TRACE(DL_ERR, "No free MCC WRBs in create EQ.");
124768 + status = BE_STATUS_NO_MCC_WRB;
124769 + goto Error;
124770 + }
124771 + /* NIC must be supported by the current config. */
124772 + ASSERT(pfob->fw_config.nic_ulp_mask);
124773 +
124774 + /*
124775 + * The ulp parameter must select a valid NIC ULP
124776 + * for the current config.
124777 + */
124778 + ASSERT((1 << ulp) & pfob->fw_config.nic_ulp_mask);
124779 +
124780 + /* Prepares an embedded fwcmd, including request/response sizes. */
124781 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_ETH_TX_CREATE);
124782 + fwcmd->header.request.port_number = ex_parameters->port;
124783 +
124784 + AMAP_SET_BITS_PTR(ETX_CONTEXT, pd_id,
124785 + &fwcmd->params.request.context, 0);
124786 +
124787 + n = be_ring_length_to_encoding(length, sizeof(struct ETH_WRB_AMAP));
124788 + AMAP_SET_BITS_PTR(ETX_CONTEXT, tx_ring_size,
124789 + &fwcmd->params.request.context, n);
124790 +
124791 + AMAP_SET_BITS_PTR(ETX_CONTEXT, cq_id_send,
124792 + &fwcmd->params.request.context, cq_object->cq_id);
124793 +
124794 + n = pfob->pci_function_number;
124795 + AMAP_SET_BITS_PTR(ETX_CONTEXT, func, &fwcmd->params.request.context, n);
124796 +
124797 + fwcmd->params.request.type = type;
124798 + fwcmd->params.request.ulp_num = (1 << ulp);
124799 + fwcmd->params.request.num_pages = DIV_ROUND_UP(length, PAGE_SIZE);
124800 + ASSERT(PAGES_SPANNED(rd->va, rd->length) >=
124801 + fwcmd->params.request.num_pages);
124802 +
124803 + /* Create a page list for the FWCMD. */
124804 + be_rd_to_pa_list(rd, fwcmd->params.request.pages,
124805 + ARRAY_SIZE(fwcmd->params.request.pages));
124806 +
124807 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
124808 + NULL, NULL, fwcmd, NULL);
124809 + if (status != BE_SUCCESS) {
124810 + TRACE(DL_ERR, "MCC to create etx queue failed.");
124811 + goto Error;
124812 + }
124813 + /* save the butler ID */
124814 + eth_sq->bid = fwcmd->params.response.cid;
124815 +
124816 + /* add a reference to the corresponding CQ */
124817 + atomic_inc(&cq_object->ref_count);
124818 +
124819 +Error:
124820 + spin_unlock_irqrestore(&pfob->post_lock, irql);
124821 +
124822 + if (pfob->pend_queue_driving && pfob->mcc) {
124823 + pfob->pend_queue_driving = 0;
124824 + be_drive_mcc_wrb_queue(pfob->mcc);
124825 + }
124826 + return status;
124827 +}
124828 +
124829 +
124830 +/*
124831 + This routine destroys an ethernet send queue
124832 +
124833 + EthSq - EthSq Handle returned from EthSqCreate
124834 +
124835 + This function always return BE_SUCCESS.
124836 +
124837 + This function frees memory allocated by EthSqCreate for the EthSq Object.
124838 +
124839 +*/
124840 +int be_eth_sq_destroy(struct be_ethsq_object *eth_sq)
124841 +{
124842 + int status = 0;
124843 +
124844 + /* Send fwcmd to destroy the queue. */
124845 + status = be_function_ring_destroy(eth_sq->parent_function, eth_sq->bid,
124846 + FWCMD_RING_TYPE_ETH_TX, NULL, NULL, NULL, NULL);
124847 + ASSERT(status == 0);
124848 +
124849 + /* Derefence any associated CQs. */
124850 + atomic_dec(&eth_sq->cq_object->ref_count);
124851 + return status;
124852 +}
124853 +/*
124854 + This routine attempts to set the transmit flow control parameters.
124855 +
124856 + FunctionObject - Handle to a function object
124857 +
124858 + txfc_enable - transmit flow control enable - true for
124859 + enable, false for disable
124860 +
124861 + rxfc_enable - receive flow control enable - true for
124862 + enable, false for disable
124863 +
124864 + Returns BE_SUCCESS if successfull, otherwise a useful int error
124865 + code is returned.
124866 +
124867 + IRQL: < DISPATCH_LEVEL
124868 +
124869 + This function always fails in non-privileged machine context.
124870 +*/
124871 +int
124872 +be_eth_set_flow_control(struct be_function_object *pfob,
124873 + bool txfc_enable, bool rxfc_enable)
124874 +{
124875 + struct FWCMD_COMMON_SET_FLOW_CONTROL *fwcmd = NULL;
124876 + struct MCC_WRB_AMAP *wrb = NULL;
124877 + int status = 0;
124878 + unsigned long irql;
124879 +
124880 + spin_lock_irqsave(&pfob->post_lock, irql);
124881 +
124882 + wrb = be_function_peek_mcc_wrb(pfob);
124883 + if (!wrb) {
124884 + TRACE(DL_ERR, "MCC wrb peek failed.");
124885 + status = BE_STATUS_NO_MCC_WRB;
124886 + goto error;
124887 + }
124888 + /* Prepares an embedded fwcmd, including request/response sizes. */
124889 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_SET_FLOW_CONTROL);
124890 +
124891 + fwcmd->params.request.rx_flow_control = rxfc_enable;
124892 + fwcmd->params.request.tx_flow_control = txfc_enable;
124893 +
124894 + /* Post the f/w command */
124895 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
124896 + NULL, NULL, fwcmd, NULL);
124897 +
124898 + if (status != 0) {
124899 + TRACE(DL_ERR, "set flow control fwcmd failed.");
124900 + goto error;
124901 + }
124902 +
124903 +error:
124904 + spin_unlock_irqrestore(&pfob->post_lock, irql);
124905 +
124906 + if (pfob->pend_queue_driving && pfob->mcc) {
124907 + pfob->pend_queue_driving = 0;
124908 + be_drive_mcc_wrb_queue(pfob->mcc);
124909 + }
124910 + return status;
124911 +}
124912 +
124913 +/*
124914 + This routine attempts to get the transmit flow control parameters.
124915 +
124916 + pfob - Handle to a function object
124917 +
124918 + txfc_enable - transmit flow control enable - true for
124919 + enable, false for disable
124920 +
124921 + rxfc_enable - receive flow control enable - true for enable,
124922 + false for disable
124923 +
124924 + Returns BE_SUCCESS if successfull, otherwise a useful int error code
124925 + is returned.
124926 +
124927 + IRQL: < DISPATCH_LEVEL
124928 +
124929 + This function always fails in non-privileged machine context.
124930 +*/
124931 +int
124932 +be_eth_get_flow_control(struct be_function_object *pfob,
124933 + bool *txfc_enable, bool *rxfc_enable)
124934 +{
124935 + struct FWCMD_COMMON_GET_FLOW_CONTROL *fwcmd = NULL;
124936 + struct MCC_WRB_AMAP *wrb = NULL;
124937 + int status = 0;
124938 + unsigned long irql;
124939 +
124940 + spin_lock_irqsave(&pfob->post_lock, irql);
124941 +
124942 + wrb = be_function_peek_mcc_wrb(pfob);
124943 + if (!wrb) {
124944 + TRACE(DL_ERR, "MCC wrb peek failed.");
124945 + status = BE_STATUS_NO_MCC_WRB;
124946 + goto error;
124947 + }
124948 + /* Prepares an embedded fwcmd, including request/response sizes. */
124949 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_GET_FLOW_CONTROL);
124950 +
124951 + /* Post the f/w command */
124952 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
124953 + NULL, NULL, fwcmd, NULL);
124954 +
124955 + if (status != 0) {
124956 + TRACE(DL_ERR, "get flow control fwcmd failed.");
124957 + goto error;
124958 + }
124959 +
124960 + *txfc_enable = fwcmd->params.response.tx_flow_control;
124961 + *rxfc_enable = fwcmd->params.response.rx_flow_control;
124962 +
124963 +error:
124964 + spin_unlock_irqrestore(&pfob->post_lock, irql);
124965 +
124966 + if (pfob->pend_queue_driving && pfob->mcc) {
124967 + pfob->pend_queue_driving = 0;
124968 + be_drive_mcc_wrb_queue(pfob->mcc);
124969 + }
124970 + return status;
124971 +}
124972 +
124973 +/*
124974 + *---------------------------------------------------------
124975 + * Function: be_eth_set_qos
124976 + * This function sets the ethernet transmit Quality of Service (QoS)
124977 + * characteristics of BladeEngine for the domain. All ethernet
124978 + * transmit rings of the domain will evenly share the bandwidth.
124979 + * The exeception to sharing is the host primary (super) ethernet
124980 + * transmit ring as well as the host ethernet forwarding ring
124981 + * for missed offload data.
124982 + * pfob -
124983 + * max_bps - the maximum bits per second in units of
124984 + * 10 Mbps (valid 0-100)
124985 + * max_pps - the maximum packets per second in units
124986 + * of 1 Kpps (0 indicates no limit)
124987 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
124988 + *---------------------------------------------------------
124989 + */
124990 +int
124991 +be_eth_set_qos(struct be_function_object *pfob, u32 max_bps, u32 max_pps)
124992 +{
124993 + struct FWCMD_COMMON_SET_QOS *fwcmd = NULL;
124994 + struct MCC_WRB_AMAP *wrb = NULL;
124995 + int status = 0;
124996 + unsigned long irql;
124997 +
124998 + spin_lock_irqsave(&pfob->post_lock, irql);
124999 +
125000 + wrb = be_function_peek_mcc_wrb(pfob);
125001 + if (!wrb) {
125002 + TRACE(DL_ERR, "MCC wrb peek failed.");
125003 + status = BE_STATUS_NO_MCC_WRB;
125004 + goto error;
125005 + }
125006 + /* Prepares an embedded fwcmd, including request/response sizes. */
125007 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_SET_QOS);
125008 +
125009 + /* Set fields in fwcmd */
125010 + fwcmd->params.request.max_bits_per_second_NIC = max_bps;
125011 + fwcmd->params.request.max_packets_per_second_NIC = max_pps;
125012 + fwcmd->params.request.valid_flags = QOS_BITS_NIC | QOS_PKTS_NIC;
125013 +
125014 + /* Post the f/w command */
125015 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
125016 + NULL, NULL, fwcmd, NULL);
125017 +
125018 + if (status != 0)
125019 + TRACE(DL_ERR, "network set qos fwcmd failed.");
125020 +
125021 +error:
125022 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125023 + if (pfob->pend_queue_driving && pfob->mcc) {
125024 + pfob->pend_queue_driving = 0;
125025 + be_drive_mcc_wrb_queue(pfob->mcc);
125026 + }
125027 + return status;
125028 +}
125029 +
125030 +/*
125031 + *---------------------------------------------------------
125032 + * Function: be_eth_get_qos
125033 + * This function retrieves the ethernet transmit Quality of Service (QoS)
125034 + * characteristics for the domain.
125035 + * max_bps - the maximum bits per second in units of
125036 + * 10 Mbps (valid 0-100)
125037 + * max_pps - the maximum packets per second in units of
125038 + * 1 Kpps (0 indicates no limit)
125039 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
125040 + *---------------------------------------------------------
125041 + */
125042 +int
125043 +be_eth_get_qos(struct be_function_object *pfob, u32 *max_bps, u32 *max_pps)
125044 +{
125045 + struct FWCMD_COMMON_GET_QOS *fwcmd = NULL;
125046 + struct MCC_WRB_AMAP *wrb = NULL;
125047 + int status = 0;
125048 + unsigned long irql;
125049 +
125050 + spin_lock_irqsave(&pfob->post_lock, irql);
125051 +
125052 + wrb = be_function_peek_mcc_wrb(pfob);
125053 + if (!wrb) {
125054 + TRACE(DL_ERR, "MCC wrb peek failed.");
125055 + status = BE_STATUS_NO_MCC_WRB;
125056 + goto error;
125057 + }
125058 + /* Prepares an embedded fwcmd, including request/response sizes. */
125059 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_GET_QOS);
125060 +
125061 + /* Post the f/w command */
125062 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
125063 + NULL, NULL, fwcmd, NULL);
125064 +
125065 + if (status != 0) {
125066 + TRACE(DL_ERR, "network get qos fwcmd failed.");
125067 + goto error;
125068 + }
125069 +
125070 + *max_bps = fwcmd->params.response.max_bits_per_second_NIC;
125071 + *max_pps = fwcmd->params.response.max_packets_per_second_NIC;
125072 +
125073 +error:
125074 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125075 + if (pfob->pend_queue_driving && pfob->mcc) {
125076 + pfob->pend_queue_driving = 0;
125077 + be_drive_mcc_wrb_queue(pfob->mcc);
125078 + }
125079 + return status;
125080 +}
125081 +
125082 +/*
125083 + *---------------------------------------------------------
125084 + * Function: be_eth_set_frame_size
125085 + * This function sets the ethernet maximum frame size. The previous
125086 + * values are returned.
125087 + * pfob -
125088 + * tx_frame_size - maximum transmit frame size in bytes
125089 + * rx_frame_size - maximum receive frame size in bytes
125090 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
125091 + *---------------------------------------------------------
125092 + */
125093 +int
125094 +be_eth_set_frame_size(struct be_function_object *pfob,
125095 + u32 *tx_frame_size, u32 *rx_frame_size)
125096 +{
125097 + struct FWCMD_COMMON_SET_FRAME_SIZE *fwcmd = NULL;
125098 + struct MCC_WRB_AMAP *wrb = NULL;
125099 + int status = 0;
125100 + unsigned long irql;
125101 +
125102 + spin_lock_irqsave(&pfob->post_lock, irql);
125103 +
125104 + wrb = be_function_peek_mcc_wrb(pfob);
125105 + if (!wrb) {
125106 + TRACE(DL_ERR, "MCC wrb peek failed.");
125107 + status = BE_STATUS_NO_MCC_WRB;
125108 + goto error;
125109 + }
125110 + /* Prepares an embedded fwcmd, including request/response sizes. */
125111 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_SET_FRAME_SIZE);
125112 + fwcmd->params.request.max_tx_frame_size = *tx_frame_size;
125113 + fwcmd->params.request.max_rx_frame_size = *rx_frame_size;
125114 +
125115 + /* Post the f/w command */
125116 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
125117 + NULL, NULL, fwcmd, NULL);
125118 +
125119 + if (status != 0) {
125120 + TRACE(DL_ERR, "network set frame size fwcmd failed.");
125121 + goto error;
125122 + }
125123 +
125124 + *tx_frame_size = fwcmd->params.response.chip_max_tx_frame_size;
125125 + *rx_frame_size = fwcmd->params.response.chip_max_rx_frame_size;
125126 +
125127 +error:
125128 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125129 + if (pfob->pend_queue_driving && pfob->mcc) {
125130 + pfob->pend_queue_driving = 0;
125131 + be_drive_mcc_wrb_queue(pfob->mcc);
125132 + }
125133 + return status;
125134 +}
125135 +
125136 +
125137 +/*
125138 + This routine creates a Ethernet receive ring.
125139 +
125140 + pfob - handle to a function object
125141 + rq_base_va - base VA for the default receive ring. this must be
125142 + exactly 8K in length and continguous physical memory.
125143 + cq_object - handle to a previously created CQ to be associated
125144 + with the RQ.
125145 + pp_eth_rq - pointer to an opqaue handle where an eth
125146 + receive object is returned.
125147 + Returns BE_SUCCESS if successfull, , otherwise a useful
125148 + int error code is returned.
125149 +
125150 + IRQL: < DISPATCH_LEVEL
125151 + this function allocates a struct be_ethrq_object *object.
125152 + there must be no more than 1 of these per function object, unless the
125153 + function object supports RSS (is networking and on the host).
125154 + the rq_base_va must point to a buffer of exactly 8K.
125155 + the erx::host_cqid (or host_stor_cqid) register and erx::ring_page registers
125156 + will be updated as appropriate on return
125157 +*/
125158 +int
125159 +be_eth_rq_create(struct be_function_object *pfob,
125160 + struct ring_desc *rd, struct be_cq_object *cq_object,
125161 + struct be_cq_object *bcmc_cq_object,
125162 + struct be_ethrq_object *eth_rq)
125163 +{
125164 + int status = 0;
125165 + struct MCC_WRB_AMAP *wrb = NULL;
125166 + struct FWCMD_COMMON_ETH_RX_CREATE *fwcmd = NULL;
125167 + unsigned long irql;
125168 +
125169 + /* MPU will set the */
125170 + ASSERT(rd);
125171 + ASSERT(eth_rq);
125172 +
125173 + spin_lock_irqsave(&pfob->post_lock, irql);
125174 +
125175 + eth_rq->parent_function = pfob;
125176 + eth_rq->cq_object = cq_object;
125177 +
125178 + wrb = be_function_peek_mcc_wrb(pfob);
125179 + if (!wrb) {
125180 + TRACE(DL_ERR, "MCC wrb peek failed.");
125181 + status = BE_STATUS_NO_MCC_WRB;
125182 + goto Error;
125183 + }
125184 + /* Prepares an embedded fwcmd, including request/response sizes. */
125185 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_ETH_RX_CREATE);
125186 +
125187 + fwcmd->params.request.num_pages = 2; /* required length */
125188 + fwcmd->params.request.cq_id = cq_object->cq_id;
125189 +
125190 + if (bcmc_cq_object)
125191 + fwcmd->params.request.bcmc_cq_id = bcmc_cq_object->cq_id;
125192 + else
125193 + fwcmd->params.request.bcmc_cq_id = 0xFFFF;
125194 +
125195 + /* Create a page list for the FWCMD. */
125196 + be_rd_to_pa_list(rd, fwcmd->params.request.pages,
125197 + ARRAY_SIZE(fwcmd->params.request.pages));
125198 +
125199 + /* Post the f/w command */
125200 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
125201 + NULL, NULL, fwcmd, NULL);
125202 + if (status != BE_SUCCESS) {
125203 + TRACE(DL_ERR, "fwcmd to map eth rxq frags failed.");
125204 + goto Error;
125205 + }
125206 + /* Save the ring ID for cleanup. */
125207 + eth_rq->rid = fwcmd->params.response.id;
125208 +
125209 + atomic_inc(&cq_object->ref_count);
125210 +
125211 +Error:
125212 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125213 +
125214 + if (pfob->pend_queue_driving && pfob->mcc) {
125215 + pfob->pend_queue_driving = 0;
125216 + be_drive_mcc_wrb_queue(pfob->mcc);
125217 + }
125218 + return status;
125219 +}
125220 +
125221 +/*
125222 + This routine destroys an Ethernet receive queue
125223 +
125224 + eth_rq - ethernet receive queue handle returned from eth_rq_create
125225 +
125226 + Returns BE_SUCCESS on success and an appropriate int on failure.
125227 +
125228 + This function frees resourcs allocated by EthRqCreate.
125229 + The erx::host_cqid (or host_stor_cqid) register and erx::ring_page
125230 + registers will be updated as appropriate on return
125231 + IRQL: < DISPATCH_LEVEL
125232 +*/
125233 +
125234 +static void be_eth_rq_destroy_internal_cb(void *context, int status,
125235 + struct MCC_WRB_AMAP *wrb)
125236 +{
125237 + struct be_ethrq_object *eth_rq = (struct be_ethrq_object *) context;
125238 +
125239 + if (status != BE_SUCCESS) {
125240 + TRACE(DL_ERR, "Destroy eth rq failed in internal callback.\n");
125241 + } else {
125242 + /* Dereference any CQs associated with this queue. */
125243 + atomic_dec(&eth_rq->cq_object->ref_count);
125244 + }
125245 +
125246 + return;
125247 +}
125248 +
125249 +int be_eth_rq_destroy(struct be_ethrq_object *eth_rq)
125250 +{
125251 + int status = BE_SUCCESS;
125252 +
125253 + /* Send fwcmd to destroy the RQ. */
125254 + status = be_function_ring_destroy(eth_rq->parent_function,
125255 + eth_rq->rid, FWCMD_RING_TYPE_ETH_RX, NULL, NULL,
125256 + be_eth_rq_destroy_internal_cb, eth_rq);
125257 +
125258 + return status;
125259 +}
125260 +
125261 +/*
125262 + *---------------------------------------------------------------------------
125263 + * Function: be_eth_rq_destroy_options
125264 + * Destroys an ethernet receive ring with finer granularity options
125265 + * than the standard be_eth_rq_destroy() API function.
125266 + * eth_rq -
125267 + * flush - Set to 1 to flush the ring, set to 0 to bypass the flush
125268 + * cb - Callback function on completion
125269 + * cb_context - Callback context
125270 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
125271 + *----------------------------------------------------------------------------
125272 + */
125273 +int
125274 +be_eth_rq_destroy_options(struct be_ethrq_object *eth_rq, bool flush,
125275 + mcc_wrb_cqe_callback cb, void *cb_context)
125276 +{
125277 + struct FWCMD_COMMON_RING_DESTROY *fwcmd = NULL;
125278 + struct MCC_WRB_AMAP *wrb = NULL;
125279 + int status = BE_SUCCESS;
125280 + struct be_function_object *pfob = NULL;
125281 + unsigned long irql;
125282 +
125283 + pfob = eth_rq->parent_function;
125284 +
125285 + spin_lock_irqsave(&pfob->post_lock, irql);
125286 +
125287 + TRACE(DL_INFO, "Destroy eth_rq ring id:%d, flush:%d", eth_rq->rid,
125288 + flush);
125289 +
125290 + wrb = be_function_peek_mcc_wrb(pfob);
125291 + if (!wrb) {
125292 + ASSERT(wrb);
125293 + TRACE(DL_ERR, "No free MCC WRBs in destroy eth_rq ring.");
125294 + status = BE_STATUS_NO_MCC_WRB;
125295 + goto Error;
125296 + }
125297 + /* Prepares an embedded fwcmd, including request/response sizes. */
125298 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_RING_DESTROY);
125299 +
125300 + fwcmd->params.request.id = eth_rq->rid;
125301 + fwcmd->params.request.ring_type = FWCMD_RING_TYPE_ETH_RX;
125302 + fwcmd->params.request.bypass_flush = ((0 == flush) ? 1 : 0);
125303 +
125304 + /* Post the f/w command */
125305 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, cb, cb_context,
125306 + be_eth_rq_destroy_internal_cb, eth_rq, fwcmd, NULL);
125307 +
125308 + if (status != BE_SUCCESS && status != BE_PENDING) {
125309 + TRACE(DL_ERR, "eth_rq ring destroy failed. id:%d, flush:%d",
125310 + eth_rq->rid, flush);
125311 + goto Error;
125312 + }
125313 +
125314 +Error:
125315 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125316 +
125317 + if (pfob->pend_queue_driving && pfob->mcc) {
125318 + pfob->pend_queue_driving = 0;
125319 + be_drive_mcc_wrb_queue(pfob->mcc);
125320 + }
125321 + return status;
125322 +}
125323 +
125324 +/*
125325 + This routine queries the frag size for erx.
125326 +
125327 + pfob - handle to a function object
125328 +
125329 + frag_size_bytes - erx frag size in bytes that is/was set.
125330 +
125331 + Returns BE_SUCCESS if successfull, otherwise a useful int error
125332 + code is returned.
125333 +
125334 + IRQL: < DISPATCH_LEVEL
125335 +
125336 +*/
125337 +int
125338 +be_eth_rq_get_frag_size(struct be_function_object *pfob, u32 *frag_size_bytes)
125339 +{
125340 + struct FWCMD_ETH_GET_RX_FRAG_SIZE *fwcmd = NULL;
125341 + struct MCC_WRB_AMAP *wrb = NULL;
125342 + int status = 0;
125343 + unsigned long irql;
125344 +
125345 + ASSERT(frag_size_bytes);
125346 +
125347 + spin_lock_irqsave(&pfob->post_lock, irql);
125348 +
125349 + wrb = be_function_peek_mcc_wrb(pfob);
125350 + if (!wrb) {
125351 + TRACE(DL_ERR, "MCC wrb peek failed.");
125352 + return BE_STATUS_NO_MCC_WRB;
125353 + }
125354 + /* Prepares an embedded fwcmd, including request/response sizes. */
125355 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, ETH_GET_RX_FRAG_SIZE);
125356 +
125357 + /* Post the f/w command */
125358 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
125359 + NULL, NULL, fwcmd, NULL);
125360 +
125361 + if (status != 0) {
125362 + TRACE(DL_ERR, "get frag size fwcmd failed.");
125363 + goto error;
125364 + }
125365 +
125366 + *frag_size_bytes = 1 << fwcmd->params.response.actual_fragsize_log2;
125367 +
125368 +error:
125369 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125370 +
125371 + if (pfob->pend_queue_driving && pfob->mcc) {
125372 + pfob->pend_queue_driving = 0;
125373 + be_drive_mcc_wrb_queue(pfob->mcc);
125374 + }
125375 + return status;
125376 +}
125377 +
125378 +/*
125379 + This routine attempts to set the frag size for erx. If the frag size is
125380 + already set, the attempt fails and the current frag size is returned.
125381 +
125382 + pfob - Handle to a function object
125383 +
125384 + frag_size - Erx frag size in bytes that is/was set.
125385 +
125386 + current_frag_size_bytes - Pointer to location where currrent frag
125387 + is to be rturned
125388 +
125389 + Returns BE_SUCCESS if successfull, otherwise a useful int error
125390 + code is returned.
125391 +
125392 + IRQL: < DISPATCH_LEVEL
125393 +
125394 + This function always fails in non-privileged machine context.
125395 +*/
125396 +int
125397 +be_eth_rq_set_frag_size(struct be_function_object *pfob,
125398 + u32 frag_size, u32 *frag_size_bytes)
125399 +{
125400 + struct FWCMD_ETH_SET_RX_FRAG_SIZE *fwcmd = NULL;
125401 + struct MCC_WRB_AMAP *wrb = NULL;
125402 + int status = 0;
125403 + unsigned long irql;
125404 +
125405 + ASSERT(frag_size_bytes);
125406 +
125407 + spin_lock_irqsave(&pfob->post_lock, irql);
125408 +
125409 + wrb = be_function_peek_mcc_wrb(pfob);
125410 + if (!wrb) {
125411 + TRACE(DL_ERR, "MCC wrb peek failed.");
125412 + status = BE_STATUS_NO_MCC_WRB;
125413 + goto error;
125414 + }
125415 + /* Prepares an embedded fwcmd, including request/response sizes. */
125416 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, ETH_SET_RX_FRAG_SIZE);
125417 +
125418 + ASSERT(frag_size >= 128 && frag_size <= 16 * 1024);
125419 +
125420 + /* This is the log2 of the fragsize. This is not the exact
125421 + * ERX encoding. */
125422 + fwcmd->params.request.new_fragsize_log2 = __ilog2_u32(frag_size);
125423 +
125424 + /* Post the f/w command */
125425 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
125426 + NULL, NULL, fwcmd, NULL);
125427 +
125428 + if (status != 0) {
125429 + TRACE(DL_ERR, "set frag size fwcmd failed.");
125430 + goto error;
125431 + }
125432 +
125433 + *frag_size_bytes = 1 << fwcmd->params.response.actual_fragsize_log2;
125434 +error:
125435 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125436 +
125437 + if (pfob->pend_queue_driving && pfob->mcc) {
125438 + pfob->pend_queue_driving = 0;
125439 + be_drive_mcc_wrb_queue(pfob->mcc);
125440 + }
125441 + return status;
125442 +}
125443 +
125444 +
125445 +/*
125446 + This routine gets or sets a mac address for a domain
125447 + given the port and mac.
125448 +
125449 + FunctionObject - Function object handle.
125450 + port1 - Set to TRUE if this function will set/get the Port 1
125451 + address. Only the host may set this to TRUE.
125452 + mac1 - Set to TRUE if this function will set/get the
125453 + MAC 1 address. Only the host may set this to TRUE.
125454 + write - Set to TRUE if this function should write the mac address.
125455 + mac_address - Buffer of the mac address to read or write.
125456 +
125457 + Returns BE_SUCCESS if successfull, otherwise a useful int is returned.
125458 +
125459 + IRQL: < DISPATCH_LEVEL
125460 +*/
125461 +int be_rxf_mac_address_read_write(struct be_function_object *pfob,
125462 + bool port1, /* VM must always set to false */
125463 + bool mac1, /* VM must always set to false */
125464 + bool mgmt, bool write,
125465 + bool permanent, u8 *mac_address,
125466 + mcc_wrb_cqe_callback cb, /* optional */
125467 + void *cb_context) /* optional */
125468 +{
125469 + int status = BE_SUCCESS;
125470 + union {
125471 + struct FWCMD_COMMON_NTWK_MAC_QUERY *query;
125472 + struct FWCMD_COMMON_NTWK_MAC_SET *set;
125473 + } fwcmd = {NULL};
125474 + struct MCC_WRB_AMAP *wrb = NULL;
125475 + u32 type = 0;
125476 + unsigned long irql;
125477 + struct be_mcc_wrb_response_copy rc;
125478 +
125479 + spin_lock_irqsave(&pfob->post_lock, irql);
125480 +
125481 + ASSERT(mac_address);
125482 +
125483 + ASSERT(port1 == false);
125484 + ASSERT(mac1 == false);
125485 +
125486 + wrb = be_function_peek_mcc_wrb(pfob);
125487 + if (!wrb) {
125488 + TRACE(DL_ERR, "MCC wrb peek failed.");
125489 + status = BE_STATUS_NO_MCC_WRB;
125490 + goto Error;
125491 + }
125492 +
125493 + if (mgmt) {
125494 + type = MAC_ADDRESS_TYPE_MANAGEMENT;
125495 + } else {
125496 + if (pfob->type == BE_FUNCTION_TYPE_NETWORK)
125497 + type = MAC_ADDRESS_TYPE_NETWORK;
125498 + else
125499 + type = MAC_ADDRESS_TYPE_STORAGE;
125500 + }
125501 +
125502 + if (write) {
125503 + /* Prepares an embedded fwcmd, including
125504 + * request/response sizes.
125505 + */
125506 + fwcmd.set = BE_PREPARE_EMBEDDED_FWCMD(pfob,
125507 + wrb, COMMON_NTWK_MAC_SET);
125508 +
125509 + fwcmd.set->params.request.invalidate = 0;
125510 + fwcmd.set->params.request.mac1 = (mac1 ? 1 : 0);
125511 + fwcmd.set->params.request.port = (port1 ? 1 : 0);
125512 + fwcmd.set->params.request.type = type;
125513 +
125514 + /* Copy the mac address to set. */
125515 + fwcmd.set->params.request.mac.SizeOfStructure =
125516 + sizeof(fwcmd.set->params.request.mac);
125517 + memcpy(fwcmd.set->params.request.mac.MACAddress,
125518 + mac_address, ETH_ALEN);
125519 +
125520 + /* Post the f/w command */
125521 + status = be_function_post_mcc_wrb(pfob, wrb, NULL,
125522 + cb, cb_context, NULL, NULL, fwcmd.set, NULL);
125523 +
125524 + } else {
125525 +
125526 + /*
125527 + * Prepares an embedded fwcmd, including
125528 + * request/response sizes.
125529 + */
125530 + fwcmd.query = BE_PREPARE_EMBEDDED_FWCMD(pfob,
125531 + wrb, COMMON_NTWK_MAC_QUERY);
125532 +
125533 + fwcmd.query->params.request.mac1 = (mac1 ? 1 : 0);
125534 + fwcmd.query->params.request.port = (port1 ? 1 : 0);
125535 + fwcmd.query->params.request.type = type;
125536 + fwcmd.query->params.request.permanent = permanent;
125537 +
125538 + rc.length = FIELD_SIZEOF(struct FWCMD_COMMON_NTWK_MAC_QUERY,
125539 + params.response.mac.MACAddress);
125540 + rc.fwcmd_offset = offsetof(struct FWCMD_COMMON_NTWK_MAC_QUERY,
125541 + params.response.mac.MACAddress);
125542 + rc.va = mac_address;
125543 + /* Post the f/w command (with a copy for the response) */
125544 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, cb,
125545 + cb_context, NULL, NULL, fwcmd.query, &rc);
125546 + }
125547 +
125548 + if (status < 0) {
125549 + TRACE(DL_ERR, "mac set/query failed.");
125550 + goto Error;
125551 + }
125552 +
125553 +Error:
125554 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125555 + if (pfob->pend_queue_driving && pfob->mcc) {
125556 + pfob->pend_queue_driving = 0;
125557 + be_drive_mcc_wrb_queue(pfob->mcc);
125558 + }
125559 + return status;
125560 +}
125561 +
125562 +/*
125563 + This routine writes data to context memory.
125564 +
125565 + pfob - Function object handle.
125566 + mac_table - Set to the 128-bit multicast address hash table.
125567 +
125568 + Returns BE_SUCCESS if successfull, otherwise a useful int is returned.
125569 +
125570 + IRQL: < DISPATCH_LEVEL
125571 +*/
125572 +
125573 +int be_rxf_multicast_config(struct be_function_object *pfob,
125574 + bool promiscuous, u32 num, u8 *mac_table,
125575 + mcc_wrb_cqe_callback cb, /* optional */
125576 + void *cb_context,
125577 + struct be_multicast_q_ctxt *q_ctxt)
125578 +{
125579 + int status = BE_SUCCESS;
125580 + struct FWCMD_COMMON_NTWK_MULTICAST_SET *fwcmd = NULL;
125581 + struct MCC_WRB_AMAP *wrb = NULL;
125582 + struct be_generic_q_ctxt *generic_ctxt = NULL;
125583 + unsigned long irql;
125584 +
125585 + ASSERT(num <= ARRAY_SIZE(fwcmd->params.request.mac));
125586 +
125587 + if (num > ARRAY_SIZE(fwcmd->params.request.mac)) {
125588 + TRACE(DL_ERR, "Too many multicast addresses. BE supports %d.",
125589 + (int) ARRAY_SIZE(fwcmd->params.request.mac));
125590 + return BE_NOT_OK;
125591 + }
125592 +
125593 + spin_lock_irqsave(&pfob->post_lock, irql);
125594 +
125595 + wrb = be_function_peek_mcc_wrb(pfob);
125596 + if (!wrb) {
125597 + if (q_ctxt && cb) {
125598 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
125599 + generic_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
125600 + generic_ctxt->context.bytes = sizeof(*q_ctxt);
125601 + } else {
125602 + status = BE_STATUS_NO_MCC_WRB;
125603 + goto Error;
125604 + }
125605 + }
125606 + /* Prepares an embedded fwcmd, including request/response sizes. */
125607 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_NTWK_MULTICAST_SET);
125608 +
125609 + fwcmd->params.request.promiscuous = promiscuous;
125610 + if (!promiscuous) {
125611 + fwcmd->params.request.num_mac = num;
125612 + if (num > 0) {
125613 + ASSERT(mac_table);
125614 + memcpy(fwcmd->params.request.mac,
125615 + mac_table, ETH_ALEN * num);
125616 + }
125617 + }
125618 +
125619 + /* Post the f/w command */
125620 + status = be_function_post_mcc_wrb(pfob, wrb, generic_ctxt,
125621 + cb, cb_context, NULL, NULL, fwcmd, NULL);
125622 + if (status < 0) {
125623 + TRACE(DL_ERR, "multicast fwcmd failed.");
125624 + goto Error;
125625 + }
125626 +
125627 +Error:
125628 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125629 + if (pfob->pend_queue_driving && pfob->mcc) {
125630 + pfob->pend_queue_driving = 0;
125631 + be_drive_mcc_wrb_queue(pfob->mcc);
125632 + }
125633 + return status;
125634 +}
125635 +
125636 +/*
125637 + This routine adds or removes a vlan tag from the rxf table.
125638 +
125639 + FunctionObject - Function object handle.
125640 + VLanTag - VLan tag to add or remove.
125641 + Add - Set to TRUE if this will add a vlan tag
125642 +
125643 + Returns BE_SUCCESS if successfull, otherwise a useful int is returned.
125644 +
125645 + IRQL: < DISPATCH_LEVEL
125646 +*/
125647 +int be_rxf_vlan_config(struct be_function_object *pfob,
125648 + bool promiscuous, u32 num, u16 *vlan_tag_array,
125649 + mcc_wrb_cqe_callback cb, /* optional */
125650 + void *cb_context,
125651 + struct be_vlan_q_ctxt *q_ctxt) /* optional */
125652 +{
125653 + int status = BE_SUCCESS;
125654 + struct FWCMD_COMMON_NTWK_VLAN_CONFIG *fwcmd = NULL;
125655 + struct MCC_WRB_AMAP *wrb = NULL;
125656 + struct be_generic_q_ctxt *generic_ctxt = NULL;
125657 + unsigned long irql;
125658 +
125659 + if (num > ARRAY_SIZE(fwcmd->params.request.vlan_tag)) {
125660 + TRACE(DL_ERR, "Too many VLAN tags.");
125661 + return BE_NOT_OK;
125662 + }
125663 +
125664 + spin_lock_irqsave(&pfob->post_lock, irql);
125665 +
125666 + wrb = be_function_peek_mcc_wrb(pfob);
125667 + if (!wrb) {
125668 + if (q_ctxt && cb) {
125669 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
125670 + generic_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
125671 + generic_ctxt->context.bytes = sizeof(*q_ctxt);
125672 + } else {
125673 + status = BE_STATUS_NO_MCC_WRB;
125674 + goto Error;
125675 + }
125676 + }
125677 + /* Prepares an embedded fwcmd, including request/response sizes. */
125678 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_NTWK_VLAN_CONFIG);
125679 +
125680 + fwcmd->params.request.promiscuous = promiscuous;
125681 + if (!promiscuous) {
125682 + fwcmd->params.request.num_vlan = num;
125683 +
125684 + if (num > 0) {
125685 + ASSERT(vlan_tag_array);
125686 + memcpy(fwcmd->params.request.vlan_tag, vlan_tag_array,
125687 + num * sizeof(vlan_tag_array[0]));
125688 + }
125689 + }
125690 +
125691 + /* Post the commadn */
125692 + status = be_function_post_mcc_wrb(pfob, wrb, generic_ctxt,
125693 + cb, cb_context, NULL, NULL, fwcmd, NULL);
125694 + if (status < 0) {
125695 + TRACE(DL_ERR, "vlan fwcmd failed.");
125696 + goto Error;
125697 + }
125698 +
125699 +Error:
125700 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125701 + if (pfob->pend_queue_driving && pfob->mcc) {
125702 + pfob->pend_queue_driving = 0;
125703 + be_drive_mcc_wrb_queue(pfob->mcc);
125704 + }
125705 + return status;
125706 +}
125707 +
125708 +
125709 +int be_rxf_link_status(struct be_function_object *pfob,
125710 + struct BE_LINK_STATUS *link_status,
125711 + mcc_wrb_cqe_callback cb,
125712 + void *cb_context,
125713 + struct be_link_status_q_ctxt *q_ctxt)
125714 +{
125715 + struct FWCMD_COMMON_NTWK_LINK_STATUS_QUERY *fwcmd = NULL;
125716 + struct MCC_WRB_AMAP *wrb = NULL;
125717 + int status = 0;
125718 + struct be_generic_q_ctxt *generic_ctxt = NULL;
125719 + unsigned long irql;
125720 + struct be_mcc_wrb_response_copy rc;
125721 +
125722 + ASSERT(link_status);
125723 +
125724 + spin_lock_irqsave(&pfob->post_lock, irql);
125725 +
125726 + wrb = be_function_peek_mcc_wrb(pfob);
125727 +
125728 + if (!wrb) {
125729 + if (q_ctxt && cb) {
125730 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
125731 + generic_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
125732 + generic_ctxt->context.bytes = sizeof(*q_ctxt);
125733 + } else {
125734 + status = BE_STATUS_NO_MCC_WRB;
125735 + goto Error;
125736 + }
125737 + }
125738 + /* Prepares an embedded fwcmd, including request/response sizes. */
125739 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb,
125740 + COMMON_NTWK_LINK_STATUS_QUERY);
125741 +
125742 + rc.length = FIELD_SIZEOF(struct FWCMD_COMMON_NTWK_LINK_STATUS_QUERY,
125743 + params.response);
125744 + rc.fwcmd_offset = offsetof(struct FWCMD_COMMON_NTWK_LINK_STATUS_QUERY,
125745 + params.response);
125746 + rc.va = link_status;
125747 + /* Post or queue the f/w command */
125748 + status = be_function_post_mcc_wrb(pfob, wrb, generic_ctxt,
125749 + cb, cb_context, NULL, NULL, fwcmd, &rc);
125750 +
125751 + if (status < 0) {
125752 + TRACE(DL_ERR, "link status fwcmd failed.");
125753 + goto Error;
125754 + }
125755 +
125756 +Error:
125757 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125758 + if (pfob->pend_queue_driving && pfob->mcc) {
125759 + pfob->pend_queue_driving = 0;
125760 + be_drive_mcc_wrb_queue(pfob->mcc);
125761 + }
125762 + return status;
125763 +}
125764 +
125765 +int
125766 +be_rxf_query_eth_statistics(struct be_function_object *pfob,
125767 + struct FWCMD_ETH_GET_STATISTICS *va_for_fwcmd,
125768 + u64 pa_for_fwcmd, mcc_wrb_cqe_callback cb,
125769 + void *cb_context,
125770 + struct be_nonembedded_q_ctxt *q_ctxt)
125771 +{
125772 + struct MCC_WRB_AMAP *wrb = NULL;
125773 + int status = 0;
125774 + struct be_generic_q_ctxt *generic_ctxt = NULL;
125775 + unsigned long irql;
125776 +
125777 + ASSERT(va_for_fwcmd);
125778 + ASSERT(pa_for_fwcmd);
125779 +
125780 + spin_lock_irqsave(&pfob->post_lock, irql);
125781 +
125782 + wrb = be_function_peek_mcc_wrb(pfob);
125783 +
125784 + if (!wrb) {
125785 + if (q_ctxt && cb) {
125786 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
125787 + generic_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
125788 + generic_ctxt->context.bytes = sizeof(*q_ctxt);
125789 + } else {
125790 + status = BE_STATUS_NO_MCC_WRB;
125791 + goto Error;
125792 + }
125793 + }
125794 +
125795 + TRACE(DL_INFO, "Query eth stats. fwcmd va:%p pa:0x%08x_%08x",
125796 + va_for_fwcmd, upper_32_bits(pa_for_fwcmd), (u32)pa_for_fwcmd);
125797 +
125798 + /* Prepares an embedded fwcmd, including request/response sizes. */
125799 + va_for_fwcmd = BE_PREPARE_NONEMBEDDED_FWCMD(pfob, wrb,
125800 + va_for_fwcmd, pa_for_fwcmd, ETH_GET_STATISTICS);
125801 +
125802 + /* Post the f/w command */
125803 + status = be_function_post_mcc_wrb(pfob, wrb, generic_ctxt,
125804 + cb, cb_context, NULL, NULL, va_for_fwcmd, NULL);
125805 + if (status < 0) {
125806 + TRACE(DL_ERR, "eth stats fwcmd failed.");
125807 + goto Error;
125808 + }
125809 +
125810 +Error:
125811 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125812 + if (pfob->pend_queue_driving && pfob->mcc) {
125813 + pfob->pend_queue_driving = 0;
125814 + be_drive_mcc_wrb_queue(pfob->mcc);
125815 + }
125816 + return status;
125817 +}
125818 +
125819 +int
125820 +be_rxf_promiscuous(struct be_function_object *pfob,
125821 + bool enable_port0, bool enable_port1,
125822 + mcc_wrb_cqe_callback cb, void *cb_context,
125823 + struct be_promiscuous_q_ctxt *q_ctxt)
125824 +{
125825 + struct FWCMD_ETH_PROMISCUOUS *fwcmd = NULL;
125826 + struct MCC_WRB_AMAP *wrb = NULL;
125827 + int status = 0;
125828 + struct be_generic_q_ctxt *generic_ctxt = NULL;
125829 + unsigned long irql;
125830 +
125831 +
125832 + spin_lock_irqsave(&pfob->post_lock, irql);
125833 +
125834 + wrb = be_function_peek_mcc_wrb(pfob);
125835 +
125836 + if (!wrb) {
125837 + if (q_ctxt && cb) {
125838 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
125839 + generic_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
125840 + generic_ctxt->context.bytes = sizeof(*q_ctxt);
125841 + } else {
125842 + status = BE_STATUS_NO_MCC_WRB;
125843 + goto Error;
125844 + }
125845 + }
125846 + /* Prepares an embedded fwcmd, including request/response sizes. */
125847 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, ETH_PROMISCUOUS);
125848 +
125849 + fwcmd->params.request.port0_promiscuous = enable_port0;
125850 + fwcmd->params.request.port1_promiscuous = enable_port1;
125851 +
125852 + /* Post the f/w command */
125853 + status = be_function_post_mcc_wrb(pfob, wrb, generic_ctxt,
125854 + cb, cb_context, NULL, NULL, fwcmd, NULL);
125855 +
125856 + if (status < 0) {
125857 + TRACE(DL_ERR, "promiscuous fwcmd failed.");
125858 + goto Error;
125859 + }
125860 +
125861 +Error:
125862 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125863 + if (pfob->pend_queue_driving && pfob->mcc) {
125864 + pfob->pend_queue_driving = 0;
125865 + be_drive_mcc_wrb_queue(pfob->mcc);
125866 + }
125867 + return status;
125868 +}
125869 +
125870 +
125871 +/*
125872 + *-------------------------------------------------------------------------
125873 + * Function: be_rxf_filter_config
125874 + * Configures BladeEngine ethernet receive filter settings.
125875 + * pfob -
125876 + * settings - Pointer to the requested filter settings.
125877 + * The response from BladeEngine will be placed back
125878 + * in this structure.
125879 + * cb - optional
125880 + * cb_context - optional
125881 + * q_ctxt - Optional. Pointer to a previously allocated struct.
125882 + * If the MCC WRB ring is full, this structure is
125883 + * used to queue the operation. It will be posted
125884 + * to the MCC ring when space becomes available. All
125885 + * queued commands will be posted to the ring in
125886 + * the order they are received. It is always valid
125887 + * to pass a pointer to a generic
125888 + * be_generic_q_ctxt. However, the specific
125889 + * context structs are generally smaller than
125890 + * the generic struct.
125891 + * return pend_status - BE_SUCCESS (0) on success.
125892 + * BE_PENDING (postive value) if the FWCMD
125893 + * completion is pending. Negative error code on failure.
125894 + *---------------------------------------------------------------------------
125895 + */
125896 +int
125897 +be_rxf_filter_config(struct be_function_object *pfob,
125898 + struct NTWK_RX_FILTER_SETTINGS *settings,
125899 + mcc_wrb_cqe_callback cb, void *cb_context,
125900 + struct be_rxf_filter_q_ctxt *q_ctxt)
125901 +{
125902 + struct FWCMD_COMMON_NTWK_RX_FILTER *fwcmd = NULL;
125903 + struct MCC_WRB_AMAP *wrb = NULL;
125904 + int status = 0;
125905 + struct be_generic_q_ctxt *generic_ctxt = NULL;
125906 + unsigned long irql;
125907 + struct be_mcc_wrb_response_copy rc;
125908 +
125909 + ASSERT(settings);
125910 +
125911 + spin_lock_irqsave(&pfob->post_lock, irql);
125912 +
125913 + wrb = be_function_peek_mcc_wrb(pfob);
125914 +
125915 + if (!wrb) {
125916 + if (q_ctxt && cb) {
125917 + wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
125918 + generic_ctxt = (struct be_generic_q_ctxt *) q_ctxt;
125919 + generic_ctxt->context.bytes = sizeof(*q_ctxt);
125920 + } else {
125921 + status = BE_STATUS_NO_MCC_WRB;
125922 + goto Error;
125923 + }
125924 + }
125925 + /* Prepares an embedded fwcmd, including request/response sizes. */
125926 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_NTWK_RX_FILTER);
125927 + memcpy(&fwcmd->params.request, settings, sizeof(*settings));
125928 +
125929 + rc.length = FIELD_SIZEOF(struct FWCMD_COMMON_NTWK_RX_FILTER,
125930 + params.response);
125931 + rc.fwcmd_offset = offsetof(struct FWCMD_COMMON_NTWK_RX_FILTER,
125932 + params.response);
125933 + rc.va = settings;
125934 + /* Post or queue the f/w command */
125935 + status = be_function_post_mcc_wrb(pfob, wrb, generic_ctxt,
125936 + cb, cb_context, NULL, NULL, fwcmd, &rc);
125937 +
125938 + if (status < 0) {
125939 + TRACE(DL_ERR, "RXF/ERX filter config fwcmd failed.");
125940 + goto Error;
125941 + }
125942 +
125943 +Error:
125944 + spin_unlock_irqrestore(&pfob->post_lock, irql);
125945 + if (pfob->pend_queue_driving && pfob->mcc) {
125946 + pfob->pend_queue_driving = 0;
125947 + be_drive_mcc_wrb_queue(pfob->mcc);
125948 + }
125949 + return status;
125950 +}
125951 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/etx_context.h linux-2.6.29-rc3.owrt/drivers/staging/benet/etx_context.h
125952 --- linux-2.6.29.owrt/drivers/staging/benet/etx_context.h 1970-01-01 01:00:00.000000000 +0100
125953 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/etx_context.h 2009-05-10 23:48:29.000000000 +0200
125954 @@ -0,0 +1,55 @@
125955 +/*
125956 + * Copyright (C) 2005 - 2008 ServerEngines
125957 + * All rights reserved.
125958 + *
125959 + * This program is free software; you can redistribute it and/or
125960 + * modify it under the terms of the GNU General Public License version 2
125961 + * as published by the Free Software Foundation. The full GNU General
125962 + * Public License is included in this distribution in the file called COPYING.
125963 + *
125964 + * Contact Information:
125965 + * linux-drivers@serverengines.com
125966 + *
125967 + * ServerEngines
125968 + * 209 N. Fair Oaks Ave
125969 + * Sunnyvale, CA 94085
125970 + */
125971 +/*
125972 + * Autogenerated by srcgen version: 0127
125973 + */
125974 +#ifndef __etx_context_amap_h__
125975 +#define __etx_context_amap_h__
125976 +
125977 +/* ETX ring context structure. */
125978 +struct BE_ETX_CONTEXT_AMAP {
125979 + u8 tx_cidx[11]; /* DWORD 0 */
125980 + u8 rsvd0[5]; /* DWORD 0 */
125981 + u8 rsvd1[16]; /* DWORD 0 */
125982 + u8 tx_pidx[11]; /* DWORD 1 */
125983 + u8 rsvd2; /* DWORD 1 */
125984 + u8 tx_ring_size[4]; /* DWORD 1 */
125985 + u8 pd_id[5]; /* DWORD 1 */
125986 + u8 pd_id_not_valid; /* DWORD 1 */
125987 + u8 cq_id_send[10]; /* DWORD 1 */
125988 + u8 rsvd3[32]; /* DWORD 2 */
125989 + u8 rsvd4[32]; /* DWORD 3 */
125990 + u8 cur_bytes[32]; /* DWORD 4 */
125991 + u8 max_bytes[32]; /* DWORD 5 */
125992 + u8 time_stamp[32]; /* DWORD 6 */
125993 + u8 rsvd5[11]; /* DWORD 7 */
125994 + u8 func; /* DWORD 7 */
125995 + u8 rsvd6[20]; /* DWORD 7 */
125996 + u8 cur_txd_count[32]; /* DWORD 8 */
125997 + u8 max_txd_count[32]; /* DWORD 9 */
125998 + u8 rsvd7[32]; /* DWORD 10 */
125999 + u8 rsvd8[32]; /* DWORD 11 */
126000 + u8 rsvd9[32]; /* DWORD 12 */
126001 + u8 rsvd10[32]; /* DWORD 13 */
126002 + u8 rsvd11[32]; /* DWORD 14 */
126003 + u8 rsvd12[32]; /* DWORD 15 */
126004 +} __packed;
126005 +struct ETX_CONTEXT_AMAP {
126006 + u32 dw[16];
126007 +};
126008 +
126009 +#endif /* __etx_context_amap_h__ */
126010 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/funcobj.c linux-2.6.29-rc3.owrt/drivers/staging/benet/funcobj.c
126011 --- linux-2.6.29.owrt/drivers/staging/benet/funcobj.c 1970-01-01 01:00:00.000000000 +0100
126012 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/funcobj.c 2009-05-10 23:48:29.000000000 +0200
126013 @@ -0,0 +1,565 @@
126014 +/*
126015 + * Copyright (C) 2005 - 2008 ServerEngines
126016 + * All rights reserved.
126017 + *
126018 + * This program is free software; you can redistribute it and/or
126019 + * modify it under the terms of the GNU General Public License version 2
126020 + * as published by the Free Software Foundation. The full GNU General
126021 + * Public License is included in this distribution in the file called COPYING.
126022 + *
126023 + * Contact Information:
126024 + * linux-drivers@serverengines.com
126025 + *
126026 + * ServerEngines
126027 + * 209 N. Fair Oaks Ave
126028 + * Sunnyvale, CA 94085
126029 + */
126030 +#include "hwlib.h"
126031 +#include "bestatus.h"
126032 +
126033 +
126034 +int
126035 +be_function_internal_query_firmware_config(struct be_function_object *pfob,
126036 + struct BE_FIRMWARE_CONFIG *config)
126037 +{
126038 + struct FWCMD_COMMON_FIRMWARE_CONFIG *fwcmd = NULL;
126039 + struct MCC_WRB_AMAP *wrb = NULL;
126040 + int status = 0;
126041 + unsigned long irql;
126042 + struct be_mcc_wrb_response_copy rc;
126043 +
126044 + spin_lock_irqsave(&pfob->post_lock, irql);
126045 +
126046 + wrb = be_function_peek_mcc_wrb(pfob);
126047 + if (!wrb) {
126048 + TRACE(DL_ERR, "MCC wrb peek failed.");
126049 + status = BE_STATUS_NO_MCC_WRB;
126050 + goto error;
126051 + }
126052 + /* Prepares an embedded fwcmd, including request/response sizes. */
126053 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_FIRMWARE_CONFIG);
126054 +
126055 + rc.length = FIELD_SIZEOF(struct FWCMD_COMMON_FIRMWARE_CONFIG,
126056 + params.response);
126057 + rc.fwcmd_offset = offsetof(struct FWCMD_COMMON_FIRMWARE_CONFIG,
126058 + params.response);
126059 + rc.va = config;
126060 +
126061 + /* Post the f/w command */
126062 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL,
126063 + NULL, NULL, NULL, fwcmd, &rc);
126064 +error:
126065 + spin_unlock_irqrestore(&pfob->post_lock, irql);
126066 + if (pfob->pend_queue_driving && pfob->mcc) {
126067 + pfob->pend_queue_driving = 0;
126068 + be_drive_mcc_wrb_queue(pfob->mcc);
126069 + }
126070 + return status;
126071 +}
126072 +
126073 +/*
126074 + This allocates and initializes a function object based on the information
126075 + provided by upper layer drivers.
126076 +
126077 + Returns BE_SUCCESS on success and an appropriate int on failure.
126078 +
126079 + A function object represents a single BladeEngine (logical) PCI function.
126080 + That is a function object either represents
126081 + the networking side of BladeEngine or the iSCSI side of BladeEngine.
126082 +
126083 + This routine will also detect and create an appropriate PD object for the
126084 + PCI function as needed.
126085 +*/
126086 +int
126087 +be_function_object_create(u8 __iomem *csr_va, u8 __iomem *db_va,
126088 + u8 __iomem *pci_va, u32 function_type,
126089 + struct ring_desc *mailbox, struct be_function_object *pfob)
126090 +{
126091 + int status;
126092 +
126093 + ASSERT(pfob); /* not a magic assert */
126094 + ASSERT(function_type <= 2);
126095 +
126096 + TRACE(DL_INFO, "Create function object. type:%s object:0x%p",
126097 + (function_type == BE_FUNCTION_TYPE_ISCSI ? "iSCSI" :
126098 + (function_type == BE_FUNCTION_TYPE_NETWORK ? "Network" :
126099 + "Arm")), pfob);
126100 +
126101 + memset(pfob, 0, sizeof(*pfob));
126102 +
126103 + pfob->type = function_type;
126104 + pfob->csr_va = csr_va;
126105 + pfob->db_va = db_va;
126106 + pfob->pci_va = pci_va;
126107 +
126108 + spin_lock_init(&pfob->cq_lock);
126109 + spin_lock_init(&pfob->post_lock);
126110 + spin_lock_init(&pfob->mcc_context_lock);
126111 +
126112 +
126113 + pfob->pci_function_number = 1;
126114 +
126115 +
126116 + pfob->emulate = false;
126117 + TRACE(DL_NOTE, "Non-emulation mode");
126118 + status = be_drive_POST(pfob);
126119 + if (status != BE_SUCCESS) {
126120 + TRACE(DL_ERR, "BladeEngine POST failed.");
126121 + goto error;
126122 + }
126123 +
126124 + /* Initialize the mailbox */
126125 + status = be_mpu_init_mailbox(pfob, mailbox);
126126 + if (status != BE_SUCCESS) {
126127 + TRACE(DL_ERR, "Failed to initialize mailbox.");
126128 + goto error;
126129 + }
126130 + /*
126131 + * Cache the firmware config for ASSERTs in hwclib and later
126132 + * driver queries.
126133 + */
126134 + status = be_function_internal_query_firmware_config(pfob,
126135 + &pfob->fw_config);
126136 + if (status != BE_SUCCESS) {
126137 + TRACE(DL_ERR, "Failed to query firmware config.");
126138 + goto error;
126139 + }
126140 +
126141 +error:
126142 + if (status != BE_SUCCESS) {
126143 + /* No cleanup necessary */
126144 + TRACE(DL_ERR, "Failed to create function.");
126145 + memset(pfob, 0, sizeof(*pfob));
126146 + }
126147 + return status;
126148 +}
126149 +
126150 +/*
126151 + This routine drops the reference count on a given function object. Once
126152 + the reference count falls to zero, the function object is destroyed and all
126153 + resources held are freed.
126154 +
126155 + FunctionObject - The function object to drop the reference to.
126156 +*/
126157 +int be_function_object_destroy(struct be_function_object *pfob)
126158 +{
126159 + TRACE(DL_INFO, "Destroy pfob. Object:0x%p",
126160 + pfob);
126161 +
126162 +
126163 + ASSERT(pfob->mcc == NULL);
126164 +
126165 + return BE_SUCCESS;
126166 +}
126167 +
126168 +int be_function_cleanup(struct be_function_object *pfob)
126169 +{
126170 + int status = 0;
126171 + u32 isr;
126172 + u32 host_intr;
126173 + struct PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP ctrl;
126174 +
126175 +
126176 + if (pfob->type == BE_FUNCTION_TYPE_NETWORK) {
126177 + status = be_rxf_multicast_config(pfob, false, 0,
126178 + NULL, NULL, NULL, NULL);
126179 + ASSERT(status == BE_SUCCESS);
126180 + }
126181 + /* VLAN */
126182 + status = be_rxf_vlan_config(pfob, false, 0, NULL, NULL, NULL, NULL);
126183 + ASSERT(status == BE_SUCCESS);
126184 + /*
126185 + * MCC Queue -- Switches to mailbox mode. May want to destroy
126186 + * all but the MCC CQ before this call if polling CQ is much better
126187 + * performance than polling mailbox register.
126188 + */
126189 + if (pfob->mcc)
126190 + status = be_mcc_ring_destroy(pfob->mcc);
126191 + /*
126192 + * If interrupts are disabled, clear any CEV interrupt assertions that
126193 + * fired after we stopped processing EQs.
126194 + */
126195 + ctrl.dw[0] = PCICFG1_READ(pfob, host_timer_int_ctrl);
126196 + host_intr = AMAP_GET_BITS_PTR(PCICFG_HOST_TIMER_INT_CTRL_CSR,
126197 + hostintr, ctrl.dw);
126198 + if (!host_intr)
126199 + if (pfob->type == BE_FUNCTION_TYPE_NETWORK)
126200 + isr = CSR_READ(pfob, cev.isr1);
126201 + else
126202 + isr = CSR_READ(pfob, cev.isr0);
126203 + else
126204 + /* This should never happen... */
126205 + TRACE(DL_ERR, "function_cleanup called with interrupt enabled");
126206 + /* Function object destroy */
126207 + status = be_function_object_destroy(pfob);
126208 + ASSERT(status == BE_SUCCESS);
126209 +
126210 + return status;
126211 +}
126212 +
126213 +
126214 +void *
126215 +be_function_prepare_embedded_fwcmd(struct be_function_object *pfob,
126216 + struct MCC_WRB_AMAP *wrb, u32 payld_len, u32 request_length,
126217 + u32 response_length, u32 opcode, u32 subsystem)
126218 +{
126219 + struct FWCMD_REQUEST_HEADER *header = NULL;
126220 + u32 n;
126221 +
126222 + ASSERT(wrb);
126223 +
126224 + n = offsetof(struct BE_MCC_WRB_AMAP, payload)/8;
126225 + AMAP_SET_BITS_PTR(MCC_WRB, embedded, wrb, 1);
126226 + AMAP_SET_BITS_PTR(MCC_WRB, payload_length, wrb, min(payld_len, n));
126227 + header = (struct FWCMD_REQUEST_HEADER *)((u8 *)wrb + n);
126228 +
126229 + header->timeout = 0;
126230 + header->domain = 0;
126231 + header->request_length = max(request_length, response_length);
126232 + header->opcode = opcode;
126233 + header->subsystem = subsystem;
126234 +
126235 + return header;
126236 +}
126237 +
126238 +void *
126239 +be_function_prepare_nonembedded_fwcmd(struct be_function_object *pfob,
126240 + struct MCC_WRB_AMAP *wrb,
126241 + void *fwcmd_va, u64 fwcmd_pa,
126242 + u32 payld_len,
126243 + u32 request_length,
126244 + u32 response_length,
126245 + u32 opcode, u32 subsystem)
126246 +{
126247 + struct FWCMD_REQUEST_HEADER *header = NULL;
126248 + u32 n;
126249 + struct MCC_WRB_PAYLOAD_AMAP *plp;
126250 +
126251 + ASSERT(wrb);
126252 + ASSERT(fwcmd_va);
126253 +
126254 + header = (struct FWCMD_REQUEST_HEADER *) fwcmd_va;
126255 +
126256 + AMAP_SET_BITS_PTR(MCC_WRB, embedded, wrb, 0);
126257 + AMAP_SET_BITS_PTR(MCC_WRB, payload_length, wrb, payld_len);
126258 +
126259 + /*
126260 + * Assume one fragment. The caller may override the SGL by
126261 + * rewriting the 0th length and adding more entries. They
126262 + * will also need to update the sge_count.
126263 + */
126264 + AMAP_SET_BITS_PTR(MCC_WRB, sge_count, wrb, 1);
126265 +
126266 + n = offsetof(struct BE_MCC_WRB_AMAP, payload)/8;
126267 + plp = (struct MCC_WRB_PAYLOAD_AMAP *)((u8 *)wrb + n);
126268 + AMAP_SET_BITS_PTR(MCC_WRB_PAYLOAD, sgl[0].length, plp, payld_len);
126269 + AMAP_SET_BITS_PTR(MCC_WRB_PAYLOAD, sgl[0].pa_lo, plp, (u32)fwcmd_pa);
126270 + AMAP_SET_BITS_PTR(MCC_WRB_PAYLOAD, sgl[0].pa_hi, plp,
126271 + upper_32_bits(fwcmd_pa));
126272 +
126273 + header->timeout = 0;
126274 + header->domain = 0;
126275 + header->request_length = max(request_length, response_length);
126276 + header->opcode = opcode;
126277 + header->subsystem = subsystem;
126278 +
126279 + return header;
126280 +}
126281 +
126282 +struct MCC_WRB_AMAP *
126283 +be_function_peek_mcc_wrb(struct be_function_object *pfob)
126284 +{
126285 + struct MCC_WRB_AMAP *wrb = NULL;
126286 + u32 offset;
126287 +
126288 + if (pfob->mcc)
126289 + wrb = _be_mpu_peek_ring_wrb(pfob->mcc, false);
126290 + else {
126291 + offset = offsetof(struct BE_MCC_MAILBOX_AMAP, wrb)/8;
126292 + wrb = (struct MCC_WRB_AMAP *) ((u8 *) pfob->mailbox.va +
126293 + offset);
126294 + }
126295 +
126296 + if (wrb)
126297 + memset(wrb, 0, sizeof(struct MCC_WRB_AMAP));
126298 +
126299 + return wrb;
126300 +}
126301 +
126302 +#if defined(BE_DEBUG)
126303 +void be_function_debug_print_wrb(struct be_function_object *pfob,
126304 + struct MCC_WRB_AMAP *wrb, void *optional_fwcmd_va,
126305 + struct be_mcc_wrb_context *wrb_context)
126306 +{
126307 +
126308 + struct FWCMD_REQUEST_HEADER *header = NULL;
126309 + u8 embedded;
126310 + u32 n;
126311 +
126312 + embedded = AMAP_GET_BITS_PTR(MCC_WRB, embedded, wrb);
126313 +
126314 + if (embedded) {
126315 + n = offsetof(struct BE_MCC_WRB_AMAP, payload)/8;
126316 + header = (struct FWCMD_REQUEST_HEADER *)((u8 *)wrb + n);
126317 + } else {
126318 + header = (struct FWCMD_REQUEST_HEADER *) optional_fwcmd_va;
126319 + }
126320 +
126321 + /* Save the completed count before posting for a debug assert. */
126322 +
126323 + if (header) {
126324 + wrb_context->opcode = header->opcode;
126325 + wrb_context->subsystem = header->subsystem;
126326 +
126327 + } else {
126328 + wrb_context->opcode = 0;
126329 + wrb_context->subsystem = 0;
126330 + }
126331 +}
126332 +#else
126333 +#define be_function_debug_print_wrb(a_, b_, c_, d_)
126334 +#endif
126335 +
126336 +int
126337 +be_function_post_mcc_wrb(struct be_function_object *pfob,
126338 + struct MCC_WRB_AMAP *wrb,
126339 + struct be_generic_q_ctxt *q_ctxt,
126340 + mcc_wrb_cqe_callback cb, void *cb_context,
126341 + mcc_wrb_cqe_callback internal_cb,
126342 + void *internal_cb_context, void *optional_fwcmd_va,
126343 + struct be_mcc_wrb_response_copy *rc)
126344 +{
126345 + int status;
126346 + struct be_mcc_wrb_context *wrb_context = NULL;
126347 + u64 *p;
126348 +
126349 + if (q_ctxt) {
126350 + /* Initialize context. */
126351 + q_ctxt->context.internal_cb = internal_cb;
126352 + q_ctxt->context.internal_cb_context = internal_cb_context;
126353 + q_ctxt->context.cb = cb;
126354 + q_ctxt->context.cb_context = cb_context;
126355 + if (rc) {
126356 + q_ctxt->context.copy.length = rc->length;
126357 + q_ctxt->context.copy.fwcmd_offset = rc->fwcmd_offset;
126358 + q_ctxt->context.copy.va = rc->va;
126359 + } else
126360 + q_ctxt->context.copy.length = 0;
126361 +
126362 + q_ctxt->context.optional_fwcmd_va = optional_fwcmd_va;
126363 +
126364 + /* Queue this request */
126365 + status = be_function_queue_mcc_wrb(pfob, q_ctxt);
126366 +
126367 + goto Error;
126368 + }
126369 + /*
126370 + * Allocate a WRB context struct to hold the callback pointers,
126371 + * status, etc. This is required if commands complete out of order.
126372 + */
126373 + wrb_context = _be_mcc_allocate_wrb_context(pfob);
126374 + if (!wrb_context) {
126375 + TRACE(DL_WARN, "Failed to allocate MCC WRB context.");
126376 + status = BE_STATUS_SYSTEM_RESOURCES;
126377 + goto Error;
126378 + }
126379 + /* Initialize context. */
126380 + memset(wrb_context, 0, sizeof(*wrb_context));
126381 + wrb_context->internal_cb = internal_cb;
126382 + wrb_context->internal_cb_context = internal_cb_context;
126383 + wrb_context->cb = cb;
126384 + wrb_context->cb_context = cb_context;
126385 + if (rc) {
126386 + wrb_context->copy.length = rc->length;
126387 + wrb_context->copy.fwcmd_offset = rc->fwcmd_offset;
126388 + wrb_context->copy.va = rc->va;
126389 + } else
126390 + wrb_context->copy.length = 0;
126391 + wrb_context->wrb = wrb;
126392 +
126393 + /*
126394 + * Copy the context pointer into the WRB opaque tag field.
126395 + * Verify assumption of 64-bit tag with a compile time assert.
126396 + */
126397 + p = (u64 *) ((u8 *)wrb + offsetof(struct BE_MCC_WRB_AMAP, tag)/8);
126398 + *p = (u64)(size_t)wrb_context;
126399 +
126400 + /* Print info about this FWCMD for debug builds. */
126401 + be_function_debug_print_wrb(pfob, wrb, optional_fwcmd_va, wrb_context);
126402 +
126403 + /*
126404 + * issue the WRB to the MPU as appropriate
126405 + */
126406 + if (pfob->mcc) {
126407 + /*
126408 + * we're in WRB mode, pass to the mcc layer
126409 + */
126410 + status = _be_mpu_post_wrb_ring(pfob->mcc, wrb, wrb_context);
126411 + } else {
126412 + /*
126413 + * we're in mailbox mode
126414 + */
126415 + status = _be_mpu_post_wrb_mailbox(pfob, wrb, wrb_context);
126416 +
126417 + /* mailbox mode always completes synchronously */
126418 + ASSERT(status != BE_STATUS_PENDING);
126419 + }
126420 +
126421 +Error:
126422 +
126423 + return status;
126424 +}
126425 +
126426 +int
126427 +be_function_ring_destroy(struct be_function_object *pfob,
126428 + u32 id, u32 ring_type, mcc_wrb_cqe_callback cb,
126429 + void *cb_context, mcc_wrb_cqe_callback internal_cb,
126430 + void *internal_cb_context)
126431 +{
126432 +
126433 + struct FWCMD_COMMON_RING_DESTROY *fwcmd = NULL;
126434 + struct MCC_WRB_AMAP *wrb = NULL;
126435 + int status = 0;
126436 + unsigned long irql;
126437 +
126438 + spin_lock_irqsave(&pfob->post_lock, irql);
126439 +
126440 + TRACE(DL_INFO, "Destroy ring id:%d type:%d", id, ring_type);
126441 +
126442 + wrb = be_function_peek_mcc_wrb(pfob);
126443 + if (!wrb) {
126444 + ASSERT(wrb);
126445 + TRACE(DL_ERR, "No free MCC WRBs in destroy ring.");
126446 + status = BE_STATUS_NO_MCC_WRB;
126447 + goto Error;
126448 + }
126449 + /* Prepares an embedded fwcmd, including request/response sizes. */
126450 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_RING_DESTROY);
126451 +
126452 + fwcmd->params.request.id = id;
126453 + fwcmd->params.request.ring_type = ring_type;
126454 +
126455 + /* Post the f/w command */
126456 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, cb, cb_context,
126457 + internal_cb, internal_cb_context, fwcmd, NULL);
126458 + if (status != BE_SUCCESS && status != BE_PENDING) {
126459 + TRACE(DL_ERR, "Ring destroy fwcmd failed. id:%d ring_type:%d",
126460 + id, ring_type);
126461 + goto Error;
126462 + }
126463 +
126464 +Error:
126465 + spin_unlock_irqrestore(&pfob->post_lock, irql);
126466 + if (pfob->pend_queue_driving && pfob->mcc) {
126467 + pfob->pend_queue_driving = 0;
126468 + be_drive_mcc_wrb_queue(pfob->mcc);
126469 + }
126470 + return status;
126471 +}
126472 +
126473 +void
126474 +be_rd_to_pa_list(struct ring_desc *rd, struct PHYS_ADDR *pa_list, u32 max_num)
126475 +{
126476 + u32 num_pages = PAGES_SPANNED(rd->va, rd->length);
126477 + u32 i = 0;
126478 + u64 pa = rd->pa;
126479 + __le64 lepa;
126480 +
126481 + ASSERT(pa_list);
126482 + ASSERT(pa);
126483 +
126484 + for (i = 0; i < min(num_pages, max_num); i++) {
126485 + lepa = cpu_to_le64(pa);
126486 + pa_list[i].lo = (u32)lepa;
126487 + pa_list[i].hi = upper_32_bits(lepa);
126488 + pa += PAGE_SIZE;
126489 + }
126490 +}
126491 +
126492 +
126493 +
126494 +/*-----------------------------------------------------------------------------
126495 + * Function: be_function_get_fw_version
126496 + * Retrieves the firmware version on the adpater. If the callback is
126497 + * NULL this call executes synchronously. If the callback is not NULL,
126498 + * the returned status will be BE_PENDING if the command was issued
126499 + * successfully.
126500 + * pfob -
126501 + * fwv - Pointer to response buffer if callback is NULL.
126502 + * cb - Callback function invoked when the FWCMD completes.
126503 + * cb_context - Passed to the callback function.
126504 + * return pend_status - BE_SUCCESS (0) on success.
126505 + * BE_PENDING (postive value) if the FWCMD
126506 + * completion is pending. Negative error code on failure.
126507 + *---------------------------------------------------------------------------
126508 + */
126509 +int
126510 +be_function_get_fw_version(struct be_function_object *pfob,
126511 + struct FWCMD_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD *fwv,
126512 + mcc_wrb_cqe_callback cb, void *cb_context)
126513 +{
126514 + int status = BE_SUCCESS;
126515 + struct MCC_WRB_AMAP *wrb = NULL;
126516 + struct FWCMD_COMMON_GET_FW_VERSION *fwcmd = NULL;
126517 + unsigned long irql;
126518 + struct be_mcc_wrb_response_copy rc;
126519 +
126520 + spin_lock_irqsave(&pfob->post_lock, irql);
126521 +
126522 + wrb = be_function_peek_mcc_wrb(pfob);
126523 + if (!wrb) {
126524 + TRACE(DL_ERR, "MCC wrb peek failed.");
126525 + status = BE_STATUS_NO_MCC_WRB;
126526 + goto Error;
126527 + }
126528 +
126529 + if (!cb && !fwv) {
126530 + TRACE(DL_ERR, "callback and response buffer NULL!");
126531 + status = BE_NOT_OK;
126532 + goto Error;
126533 + }
126534 + /* Prepares an embedded fwcmd, including request/response sizes. */
126535 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_GET_FW_VERSION);
126536 +
126537 + rc.length = FIELD_SIZEOF(struct FWCMD_COMMON_GET_FW_VERSION,
126538 + params.response);
126539 + rc.fwcmd_offset = offsetof(struct FWCMD_COMMON_GET_FW_VERSION,
126540 + params.response);
126541 + rc.va = fwv;
126542 +
126543 + /* Post the f/w command */
126544 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, cb,
126545 + cb_context, NULL, NULL, fwcmd, &rc);
126546 +
126547 +Error:
126548 + spin_unlock_irqrestore(&pfob->post_lock, irql);
126549 + if (pfob->pend_queue_driving && pfob->mcc) {
126550 + pfob->pend_queue_driving = 0;
126551 + be_drive_mcc_wrb_queue(pfob->mcc);
126552 + }
126553 + return status;
126554 +}
126555 +
126556 +int
126557 +be_function_queue_mcc_wrb(struct be_function_object *pfob,
126558 + struct be_generic_q_ctxt *q_ctxt)
126559 +{
126560 + int status;
126561 +
126562 + ASSERT(q_ctxt);
126563 +
126564 + /*
126565 + * issue the WRB to the MPU as appropriate
126566 + */
126567 + if (pfob->mcc) {
126568 +
126569 + /* We're in ring mode. Queue this item. */
126570 + pfob->mcc->backlog_length++;
126571 + list_add_tail(&q_ctxt->context.list, &pfob->mcc->backlog);
126572 + status = BE_PENDING;
126573 + } else {
126574 + status = BE_NOT_OK;
126575 + }
126576 + return status;
126577 +}
126578 +
126579 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_common_bmap.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_common_bmap.h
126580 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_common_bmap.h 1970-01-01 01:00:00.000000000 +0100
126581 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_common_bmap.h 2009-05-10 23:48:29.000000000 +0200
126582 @@ -0,0 +1,717 @@
126583 +/*
126584 + * Copyright (C) 2005 - 2008 ServerEngines
126585 + * All rights reserved.
126586 + *
126587 + * This program is free software; you can redistribute it and/or
126588 + * modify it under the terms of the GNU General Public License version 2
126589 + * as published by the Free Software Foundation. The full GNU General
126590 + * Public License is included in this distribution in the file called COPYING.
126591 + *
126592 + * Contact Information:
126593 + * linux-drivers@serverengines.com
126594 + *
126595 + * ServerEngines
126596 + * 209 N. Fair Oaks Ave
126597 + * Sunnyvale, CA 94085
126598 + */
126599 +/*
126600 + * Autogenerated by srcgen version: 0127
126601 + */
126602 +#ifndef __fwcmd_common_bmap_h__
126603 +#define __fwcmd_common_bmap_h__
126604 +#include "fwcmd_types_bmap.h"
126605 +#include "fwcmd_hdr_bmap.h"
126606 +
126607 +#if defined(__BIG_ENDIAN)
126608 + /* Physical Address. */
126609 +struct PHYS_ADDR {
126610 + union {
126611 + struct {
126612 + u32 lo; /* DWORD 0 */
126613 + u32 hi; /* DWORD 1 */
126614 + } __packed; /* unnamed struct */
126615 + u32 dw[2]; /* dword union */
126616 + }; /* unnamed union */
126617 +} __packed ;
126618 +
126619 +
126620 +#else
126621 + /* Physical Address. */
126622 +struct PHYS_ADDR {
126623 + union {
126624 + struct {
126625 + u32 lo; /* DWORD 0 */
126626 + u32 hi; /* DWORD 1 */
126627 + } __packed; /* unnamed struct */
126628 + u32 dw[2]; /* dword union */
126629 + }; /* unnamed union */
126630 +} __packed ;
126631 +
126632 +struct BE_LINK_STATUS {
126633 + u8 mac0_duplex;
126634 + u8 mac0_speed;
126635 + u8 mac1_duplex;
126636 + u8 mac1_speed;
126637 + u8 mgmt_mac_duplex;
126638 + u8 mgmt_mac_speed;
126639 + u8 active_port;
126640 + u8 rsvd0;
126641 + u8 mac0_fault;
126642 + u8 mac1_fault;
126643 + u16 rsvd1;
126644 +} __packed;
126645 +#endif
126646 +
126647 +struct FWCMD_COMMON_ANON_170_REQUEST {
126648 + u32 rsvd0;
126649 +} __packed;
126650 +
126651 +union LINK_STATUS_QUERY_PARAMS {
126652 + struct BE_LINK_STATUS response;
126653 + struct FWCMD_COMMON_ANON_170_REQUEST request;
126654 +} __packed;
126655 +
126656 +/*
126657 + * Queries the the link status for all ports. The valid values below
126658 + * DO NOT indicate that a particular duplex or speed is supported by
126659 + * BladeEngine. These enumerations simply list all possible duplexes
126660 + * and speeds for any port. Consult BladeEngine product documentation
126661 + * for the supported parameters.
126662 + */
126663 +struct FWCMD_COMMON_NTWK_LINK_STATUS_QUERY {
126664 + union FWCMD_HEADER header;
126665 + union LINK_STATUS_QUERY_PARAMS params;
126666 +} __packed;
126667 +
126668 +struct FWCMD_COMMON_ANON_171_REQUEST {
126669 + u8 type;
126670 + u8 port;
126671 + u8 mac1;
126672 + u8 permanent;
126673 +} __packed;
126674 +
126675 +struct FWCMD_COMMON_ANON_172_RESPONSE {
126676 + struct MAC_ADDRESS_FORMAT mac;
126677 +} __packed;
126678 +
126679 +union NTWK_MAC_QUERY_PARAMS {
126680 + struct FWCMD_COMMON_ANON_171_REQUEST request;
126681 + struct FWCMD_COMMON_ANON_172_RESPONSE response;
126682 +} __packed;
126683 +
126684 +/* Queries one MAC address. */
126685 +struct FWCMD_COMMON_NTWK_MAC_QUERY {
126686 + union FWCMD_HEADER header;
126687 + union NTWK_MAC_QUERY_PARAMS params;
126688 +} __packed;
126689 +
126690 +struct MAC_SET_PARAMS_IN {
126691 + u8 type;
126692 + u8 port;
126693 + u8 mac1;
126694 + u8 invalidate;
126695 + struct MAC_ADDRESS_FORMAT mac;
126696 +} __packed;
126697 +
126698 +struct MAC_SET_PARAMS_OUT {
126699 + u32 rsvd0;
126700 +} __packed;
126701 +
126702 +union MAC_SET_PARAMS {
126703 + struct MAC_SET_PARAMS_IN request;
126704 + struct MAC_SET_PARAMS_OUT response;
126705 +} __packed;
126706 +
126707 +/* Sets a MAC address. */
126708 +struct FWCMD_COMMON_NTWK_MAC_SET {
126709 + union FWCMD_HEADER header;
126710 + union MAC_SET_PARAMS params;
126711 +} __packed;
126712 +
126713 +/* MAC address list. */
126714 +struct NTWK_MULTICAST_MAC_LIST {
126715 + u8 byte[6];
126716 +} __packed;
126717 +
126718 +struct FWCMD_COMMON_NTWK_MULTICAST_SET_REQUEST_PAYLOAD {
126719 + u16 num_mac;
126720 + u8 promiscuous;
126721 + u8 rsvd0;
126722 + struct NTWK_MULTICAST_MAC_LIST mac[32];
126723 +} __packed;
126724 +
126725 +struct FWCMD_COMMON_ANON_174_RESPONSE {
126726 + u32 rsvd0;
126727 +} __packed;
126728 +
126729 +union FWCMD_COMMON_ANON_173_PARAMS {
126730 + struct FWCMD_COMMON_NTWK_MULTICAST_SET_REQUEST_PAYLOAD request;
126731 + struct FWCMD_COMMON_ANON_174_RESPONSE response;
126732 +} __packed;
126733 +
126734 +/*
126735 + * Sets multicast address hash. The MPU will merge the MAC address lists
126736 + * from all clients, including the networking and storage functions.
126737 + * This command may fail if the final merged list of MAC addresses exceeds
126738 + * 32 entries.
126739 + */
126740 +struct FWCMD_COMMON_NTWK_MULTICAST_SET {
126741 + union FWCMD_HEADER header;
126742 + union FWCMD_COMMON_ANON_173_PARAMS params;
126743 +} __packed;
126744 +
126745 +struct FWCMD_COMMON_NTWK_VLAN_CONFIG_REQUEST_PAYLOAD {
126746 + u16 num_vlan;
126747 + u8 promiscuous;
126748 + u8 rsvd0;
126749 + u16 vlan_tag[32];
126750 +} __packed;
126751 +
126752 +struct FWCMD_COMMON_ANON_176_RESPONSE {
126753 + u32 rsvd0;
126754 +} __packed;
126755 +
126756 +union FWCMD_COMMON_ANON_175_PARAMS {
126757 + struct FWCMD_COMMON_NTWK_VLAN_CONFIG_REQUEST_PAYLOAD request;
126758 + struct FWCMD_COMMON_ANON_176_RESPONSE response;
126759 +} __packed;
126760 +
126761 +/*
126762 + * Sets VLAN tag filter. The MPU will merge the VLAN tag list from all
126763 + * clients, including the networking and storage functions. This command
126764 + * may fail if the final vlan_tag array (from all functions) is longer
126765 + * than 32 entries.
126766 + */
126767 +struct FWCMD_COMMON_NTWK_VLAN_CONFIG {
126768 + union FWCMD_HEADER header;
126769 + union FWCMD_COMMON_ANON_175_PARAMS params;
126770 +} __packed;
126771 +
126772 +struct RING_DESTROY_REQUEST {
126773 + u16 ring_type;
126774 + u16 id;
126775 + u8 bypass_flush;
126776 + u8 rsvd0;
126777 + u16 rsvd1;
126778 +} __packed;
126779 +
126780 +struct FWCMD_COMMON_ANON_190_RESPONSE {
126781 + u32 rsvd0;
126782 +} __packed;
126783 +
126784 +union FWCMD_COMMON_ANON_189_PARAMS {
126785 + struct RING_DESTROY_REQUEST request;
126786 + struct FWCMD_COMMON_ANON_190_RESPONSE response;
126787 +} __packed;
126788 +/*
126789 + * Command for destroying any ring. The connection(s) using the ring should
126790 + * be quiesced before destroying the ring.
126791 + */
126792 +struct FWCMD_COMMON_RING_DESTROY {
126793 + union FWCMD_HEADER header;
126794 + union FWCMD_COMMON_ANON_189_PARAMS params;
126795 +} __packed;
126796 +
126797 +struct FWCMD_COMMON_ANON_192_REQUEST {
126798 + u16 num_pages;
126799 + u16 rsvd0;
126800 + struct CQ_CONTEXT_AMAP context;
126801 + struct PHYS_ADDR pages[4];
126802 +} __packed ;
126803 +
126804 +struct FWCMD_COMMON_ANON_193_RESPONSE {
126805 + u16 cq_id;
126806 +} __packed ;
126807 +
126808 +union FWCMD_COMMON_ANON_191_PARAMS {
126809 + struct FWCMD_COMMON_ANON_192_REQUEST request;
126810 + struct FWCMD_COMMON_ANON_193_RESPONSE response;
126811 +} __packed ;
126812 +
126813 +/*
126814 + * Command for creating a completion queue. A Completion Queue must span
126815 + * at least 1 page and at most 4 pages. Each completion queue entry
126816 + * is 16 bytes regardless of CQ entry format. Thus the ring must be
126817 + * at least 256 entries deep (corresponding to 1 page) and can be at
126818 + * most 1024 entries deep (corresponding to 4 pages). The number of
126819 + * pages posted must contain the CQ ring size as encoded in the context.
126820 + *
126821 + */
126822 +struct FWCMD_COMMON_CQ_CREATE {
126823 + union FWCMD_HEADER header;
126824 + union FWCMD_COMMON_ANON_191_PARAMS params;
126825 +} __packed ;
126826 +
126827 +struct FWCMD_COMMON_ANON_198_REQUEST {
126828 + u16 num_pages;
126829 + u16 rsvd0;
126830 + struct EQ_CONTEXT_AMAP context;
126831 + struct PHYS_ADDR pages[8];
126832 +} __packed ;
126833 +
126834 +struct FWCMD_COMMON_ANON_199_RESPONSE {
126835 + u16 eq_id;
126836 +} __packed ;
126837 +
126838 +union FWCMD_COMMON_ANON_197_PARAMS {
126839 + struct FWCMD_COMMON_ANON_198_REQUEST request;
126840 + struct FWCMD_COMMON_ANON_199_RESPONSE response;
126841 +} __packed ;
126842 +
126843 +/*
126844 + * Command for creating a event queue. An Event Queue must span at least
126845 + * 1 page and at most 8 pages. The number of pages posted must contain
126846 + * the EQ ring. The ring is defined by the size of the EQ entries (encoded
126847 + * in the context) and the number of EQ entries (also encoded in the
126848 + * context).
126849 + */
126850 +struct FWCMD_COMMON_EQ_CREATE {
126851 + union FWCMD_HEADER header;
126852 + union FWCMD_COMMON_ANON_197_PARAMS params;
126853 +} __packed ;
126854 +
126855 +struct FWCMD_COMMON_ANON_201_REQUEST {
126856 + u16 cq_id;
126857 + u16 bcmc_cq_id;
126858 + u16 num_pages;
126859 + u16 rsvd0;
126860 + struct PHYS_ADDR pages[2];
126861 +} __packed;
126862 +
126863 +struct FWCMD_COMMON_ANON_202_RESPONSE {
126864 + u16 id;
126865 +} __packed;
126866 +
126867 +union FWCMD_COMMON_ANON_200_PARAMS {
126868 + struct FWCMD_COMMON_ANON_201_REQUEST request;
126869 + struct FWCMD_COMMON_ANON_202_RESPONSE response;
126870 +} __packed;
126871 +
126872 +/*
126873 + * Command for creating Ethernet receive ring. An ERX ring contains ETH_RX_D
126874 + * entries (8 bytes each). An ERX ring must be 1024 entries deep
126875 + * (corresponding to 2 pages).
126876 + */
126877 +struct FWCMD_COMMON_ETH_RX_CREATE {
126878 + union FWCMD_HEADER header;
126879 + union FWCMD_COMMON_ANON_200_PARAMS params;
126880 +} __packed;
126881 +
126882 +struct FWCMD_COMMON_ANON_204_REQUEST {
126883 + u16 num_pages;
126884 + u8 ulp_num;
126885 + u8 type;
126886 + struct ETX_CONTEXT_AMAP context;
126887 + struct PHYS_ADDR pages[8];
126888 +} __packed ;
126889 +
126890 +struct FWCMD_COMMON_ANON_205_RESPONSE {
126891 + u16 cid;
126892 + u8 ulp_num;
126893 + u8 rsvd0;
126894 +} __packed ;
126895 +
126896 +union FWCMD_COMMON_ANON_203_PARAMS {
126897 + struct FWCMD_COMMON_ANON_204_REQUEST request;
126898 + struct FWCMD_COMMON_ANON_205_RESPONSE response;
126899 +} __packed ;
126900 +
126901 +/*
126902 + * Command for creating an Ethernet transmit ring. An ETX ring contains
126903 + * ETH_WRB entries (16 bytes each). An ETX ring must be at least 256
126904 + * entries deep (corresponding to 1 page) and at most 2k entries deep
126905 + * (corresponding to 8 pages).
126906 + */
126907 +struct FWCMD_COMMON_ETH_TX_CREATE {
126908 + union FWCMD_HEADER header;
126909 + union FWCMD_COMMON_ANON_203_PARAMS params;
126910 +} __packed ;
126911 +
126912 +struct FWCMD_COMMON_ANON_222_REQUEST {
126913 + u16 num_pages;
126914 + u16 rsvd0;
126915 + struct MCC_RING_CONTEXT_AMAP context;
126916 + struct PHYS_ADDR pages[8];
126917 +} __packed ;
126918 +
126919 +struct FWCMD_COMMON_ANON_223_RESPONSE {
126920 + u16 id;
126921 +} __packed ;
126922 +
126923 +union FWCMD_COMMON_ANON_221_PARAMS {
126924 + struct FWCMD_COMMON_ANON_222_REQUEST request;
126925 + struct FWCMD_COMMON_ANON_223_RESPONSE response;
126926 +} __packed ;
126927 +
126928 +/*
126929 + * Command for creating the MCC ring. An MCC ring must be at least 16
126930 + * entries deep (corresponding to 1 page) and at most 128 entries deep
126931 + * (corresponding to 8 pages).
126932 + */
126933 +struct FWCMD_COMMON_MCC_CREATE {
126934 + union FWCMD_HEADER header;
126935 + union FWCMD_COMMON_ANON_221_PARAMS params;
126936 +} __packed ;
126937 +
126938 +struct GET_QOS_IN {
126939 + u32 qos_params_rsvd;
126940 +} __packed;
126941 +
126942 +struct GET_QOS_OUT {
126943 + u32 max_bits_per_second_NIC;
126944 + u32 max_packets_per_second_NIC;
126945 + u32 max_ios_per_second_iSCSI;
126946 + u32 max_bytes_per_second_iSCSI;
126947 + u16 domain_VLAN_tag;
126948 + u16 fabric_domain_ID;
126949 + u32 qos_params_oem[4];
126950 +} __packed;
126951 +
126952 +union GET_QOS_PARAMS {
126953 + struct GET_QOS_IN request;
126954 + struct GET_QOS_OUT response;
126955 +} __packed;
126956 +
126957 +/* QOS/Bandwidth settings per domain. Applicable only in VMs. */
126958 +struct FWCMD_COMMON_GET_QOS {
126959 + union FWCMD_HEADER header;
126960 + union GET_QOS_PARAMS params;
126961 +} __packed;
126962 +
126963 +struct SET_QOS_IN {
126964 + u32 valid_flags;
126965 + u32 max_bits_per_second_NIC;
126966 + u32 max_packets_per_second_NIC;
126967 + u32 max_ios_per_second_iSCSI;
126968 + u32 max_bytes_per_second_iSCSI;
126969 + u16 domain_VLAN_tag;
126970 + u16 fabric_domain_ID;
126971 + u32 qos_params_oem[4];
126972 +} __packed;
126973 +
126974 +struct SET_QOS_OUT {
126975 + u32 qos_params_rsvd;
126976 +} __packed;
126977 +
126978 +union SET_QOS_PARAMS {
126979 + struct SET_QOS_IN request;
126980 + struct SET_QOS_OUT response;
126981 +} __packed;
126982 +
126983 +/* QOS/Bandwidth settings per domain. Applicable only in VMs. */
126984 +struct FWCMD_COMMON_SET_QOS {
126985 + union FWCMD_HEADER header;
126986 + union SET_QOS_PARAMS params;
126987 +} __packed;
126988 +
126989 +struct SET_FRAME_SIZE_IN {
126990 + u32 max_tx_frame_size;
126991 + u32 max_rx_frame_size;
126992 +} __packed;
126993 +
126994 +struct SET_FRAME_SIZE_OUT {
126995 + u32 chip_max_tx_frame_size;
126996 + u32 chip_max_rx_frame_size;
126997 +} __packed;
126998 +
126999 +union SET_FRAME_SIZE_PARAMS {
127000 + struct SET_FRAME_SIZE_IN request;
127001 + struct SET_FRAME_SIZE_OUT response;
127002 +} __packed;
127003 +
127004 +/* Set frame size command. Only host domain may issue this command. */
127005 +struct FWCMD_COMMON_SET_FRAME_SIZE {
127006 + union FWCMD_HEADER header;
127007 + union SET_FRAME_SIZE_PARAMS params;
127008 +} __packed;
127009 +
127010 +struct FORCE_FAILOVER_IN {
127011 + u32 move_to_port;
127012 + u32 failover_config;
127013 +} __packed;
127014 +
127015 +struct FWCMD_COMMON_ANON_231_RESPONSE {
127016 + u32 rsvd0;
127017 +} __packed;
127018 +
127019 +union FWCMD_COMMON_ANON_230_PARAMS {
127020 + struct FORCE_FAILOVER_IN request;
127021 + struct FWCMD_COMMON_ANON_231_RESPONSE response;
127022 +} __packed;
127023 +
127024 +/*
127025 + * Use this command to control failover in BladeEngine. It may be used
127026 + * to failback to a restored port or to forcibly move traffic from
127027 + * one port to another. It may also be used to enable or disable the
127028 + * automatic failover feature. This command can only be issued by domain
127029 + * 0.
127030 + */
127031 +struct FWCMD_COMMON_FORCE_FAILOVER {
127032 + union FWCMD_HEADER header;
127033 + union FWCMD_COMMON_ANON_230_PARAMS params;
127034 +} __packed;
127035 +
127036 +struct FWCMD_COMMON_ANON_240_REQUEST {
127037 + u64 context;
127038 +} __packed;
127039 +
127040 +struct FWCMD_COMMON_ANON_241_RESPONSE {
127041 + u64 context;
127042 +} __packed;
127043 +
127044 +union FWCMD_COMMON_ANON_239_PARAMS {
127045 + struct FWCMD_COMMON_ANON_240_REQUEST request;
127046 + struct FWCMD_COMMON_ANON_241_RESPONSE response;
127047 +} __packed;
127048 +
127049 +/*
127050 + * This command can be used by clients as a no-operation request. Typical
127051 + * uses for drivers are as a heartbeat mechanism, or deferred processing
127052 + * catalyst. The ARM will always complete this command with a good completion.
127053 + * The 64-bit parameter is not touched by the ARM processor.
127054 + */
127055 +struct FWCMD_COMMON_NOP {
127056 + union FWCMD_HEADER header;
127057 + union FWCMD_COMMON_ANON_239_PARAMS params;
127058 +} __packed;
127059 +
127060 +struct NTWK_RX_FILTER_SETTINGS {
127061 + u8 promiscuous;
127062 + u8 ip_cksum;
127063 + u8 tcp_cksum;
127064 + u8 udp_cksum;
127065 + u8 pass_err;
127066 + u8 pass_ckerr;
127067 + u8 strip_crc;
127068 + u8 mcast_en;
127069 + u8 bcast_en;
127070 + u8 mcast_promiscuous_en;
127071 + u8 unicast_en;
127072 + u8 vlan_promiscuous;
127073 +} __packed;
127074 +
127075 +union FWCMD_COMMON_ANON_242_PARAMS {
127076 + struct NTWK_RX_FILTER_SETTINGS request;
127077 + struct NTWK_RX_FILTER_SETTINGS response;
127078 +} __packed;
127079 +
127080 +/*
127081 + * This command is used to modify the ethernet receive filter configuration.
127082 + * Only domain 0 network function drivers may issue this command. The
127083 + * applied configuration is returned in the response payload. Note:
127084 + * Some receive packet filter settings are global on BladeEngine and
127085 + * can affect both the storage and network function clients that the
127086 + * BladeEngine hardware and firmware serve. Additionaly, depending
127087 + * on the revision of BladeEngine, some ethernet receive filter settings
127088 + * are dependent on others. If a dependency exists between settings
127089 + * for the BladeEngine revision, and the command request settings do
127090 + * not meet the dependency requirement, the invalid settings will not
127091 + * be applied despite the comand succeeding. For example: a driver may
127092 + * request to enable broadcast packets, but not enable multicast packets.
127093 + * On early revisions of BladeEngine, there may be no distinction between
127094 + * broadcast and multicast filters, so broadcast could not be enabled
127095 + * without enabling multicast. In this scenario, the comand would still
127096 + * succeed, but the response payload would indicate the previously
127097 + * configured broadcast and multicast setting.
127098 + */
127099 +struct FWCMD_COMMON_NTWK_RX_FILTER {
127100 + union FWCMD_HEADER header;
127101 + union FWCMD_COMMON_ANON_242_PARAMS params;
127102 +} __packed;
127103 +
127104 +
127105 +struct FWCMD_COMMON_ANON_244_REQUEST {
127106 + u32 rsvd0;
127107 +} __packed;
127108 +
127109 +struct FWCMD_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD {
127110 + u8 firmware_version_string[32];
127111 + u8 fw_on_flash_version_string[32];
127112 +} __packed;
127113 +
127114 +union FWCMD_COMMON_ANON_243_PARAMS {
127115 + struct FWCMD_COMMON_ANON_244_REQUEST request;
127116 + struct FWCMD_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD response;
127117 +} __packed;
127118 +
127119 +/* This comand retrieves the firmware version. */
127120 +struct FWCMD_COMMON_GET_FW_VERSION {
127121 + union FWCMD_HEADER header;
127122 + union FWCMD_COMMON_ANON_243_PARAMS params;
127123 +} __packed;
127124 +
127125 +struct FWCMD_COMMON_ANON_246_REQUEST {
127126 + u16 tx_flow_control;
127127 + u16 rx_flow_control;
127128 +} __packed;
127129 +
127130 +struct FWCMD_COMMON_ANON_247_RESPONSE {
127131 + u32 rsvd0;
127132 +} __packed;
127133 +
127134 +union FWCMD_COMMON_ANON_245_PARAMS {
127135 + struct FWCMD_COMMON_ANON_246_REQUEST request;
127136 + struct FWCMD_COMMON_ANON_247_RESPONSE response;
127137 +} __packed;
127138 +
127139 +/*
127140 + * This comand is used to program BladeEngine flow control behavior.
127141 + * Only the host networking driver is allowed to use this comand.
127142 + */
127143 +struct FWCMD_COMMON_SET_FLOW_CONTROL {
127144 + union FWCMD_HEADER header;
127145 + union FWCMD_COMMON_ANON_245_PARAMS params;
127146 +} __packed;
127147 +
127148 +struct FWCMD_COMMON_ANON_249_REQUEST {
127149 + u32 rsvd0;
127150 +} __packed;
127151 +
127152 +struct FWCMD_COMMON_ANON_250_RESPONSE {
127153 + u16 tx_flow_control;
127154 + u16 rx_flow_control;
127155 +} __packed;
127156 +
127157 +union FWCMD_COMMON_ANON_248_PARAMS {
127158 + struct FWCMD_COMMON_ANON_249_REQUEST request;
127159 + struct FWCMD_COMMON_ANON_250_RESPONSE response;
127160 +} __packed;
127161 +
127162 +/* This comand is used to read BladeEngine flow control settings. */
127163 +struct FWCMD_COMMON_GET_FLOW_CONTROL {
127164 + union FWCMD_HEADER header;
127165 + union FWCMD_COMMON_ANON_248_PARAMS params;
127166 +} __packed;
127167 +
127168 +struct EQ_DELAY_PARAMS {
127169 + u32 eq_id;
127170 + u32 delay_in_microseconds;
127171 +} __packed;
127172 +
127173 +struct FWCMD_COMMON_ANON_257_REQUEST {
127174 + u32 num_eq;
127175 + u32 rsvd0;
127176 + struct EQ_DELAY_PARAMS delay[16];
127177 +} __packed;
127178 +
127179 +struct FWCMD_COMMON_ANON_258_RESPONSE {
127180 + u32 delay_resolution_in_microseconds;
127181 + u32 delay_max_in_microseconds;
127182 +} __packed;
127183 +
127184 +union MODIFY_EQ_DELAY_PARAMS {
127185 + struct FWCMD_COMMON_ANON_257_REQUEST request;
127186 + struct FWCMD_COMMON_ANON_258_RESPONSE response;
127187 +} __packed;
127188 +
127189 +/* This comand changes the EQ delay for a given set of EQs. */
127190 +struct FWCMD_COMMON_MODIFY_EQ_DELAY {
127191 + union FWCMD_HEADER header;
127192 + union MODIFY_EQ_DELAY_PARAMS params;
127193 +} __packed;
127194 +
127195 +struct FWCMD_COMMON_ANON_260_REQUEST {
127196 + u32 rsvd0;
127197 +} __packed;
127198 +
127199 +struct BE_FIRMWARE_CONFIG {
127200 + u16 be_config_number;
127201 + u16 asic_revision;
127202 + u32 nic_ulp_mask;
127203 + u32 tulp_mask;
127204 + u32 iscsi_ulp_mask;
127205 + u32 rdma_ulp_mask;
127206 + u32 rsvd0[4];
127207 + u32 eth_tx_id_start;
127208 + u32 eth_tx_id_count;
127209 + u32 eth_rx_id_start;
127210 + u32 eth_rx_id_count;
127211 + u32 tpm_wrbq_id_start;
127212 + u32 tpm_wrbq_id_count;
127213 + u32 tpm_defq_id_start;
127214 + u32 tpm_defq_id_count;
127215 + u32 iscsi_wrbq_id_start;
127216 + u32 iscsi_wrbq_id_count;
127217 + u32 iscsi_defq_id_start;
127218 + u32 iscsi_defq_id_count;
127219 + u32 rdma_qp_id_start;
127220 + u32 rdma_qp_id_count;
127221 + u32 rsvd1[8];
127222 +} __packed;
127223 +
127224 +union FWCMD_COMMON_ANON_259_PARAMS {
127225 + struct FWCMD_COMMON_ANON_260_REQUEST request;
127226 + struct BE_FIRMWARE_CONFIG response;
127227 +} __packed;
127228 +
127229 +/*
127230 + * This comand queries the current firmware configuration parameters.
127231 + * The static configuration type is defined by be_config_number. This
127232 + * differentiates different BladeEngine builds, such as iSCSI Initiator
127233 + * versus iSCSI Target. For a given static configuration, the Upper
127234 + * Layer Protocol (ULP) processors may be reconfigured to support different
127235 + * protocols. Each ULP processor supports one or more protocols. The
127236 + * masks indicate which processors are configured for each protocol.
127237 + * For a given static configuration, the number of TCP connections
127238 + * supported for each protocol may vary. The *_id_start and *_id_count
127239 + * variables define a linear range of IDs that are available for each
127240 + * supported protocol. The *_id_count may be used by the driver to allocate
127241 + * the appropriate number of connection resources. The *_id_start may
127242 + * be used to map the arbitrary range of IDs to a zero-based range
127243 + * of indices.
127244 + */
127245 +struct FWCMD_COMMON_FIRMWARE_CONFIG {
127246 + union FWCMD_HEADER header;
127247 + union FWCMD_COMMON_ANON_259_PARAMS params;
127248 +} __packed;
127249 +
127250 +struct FWCMD_COMMON_PORT_EQUALIZATION_PARAMS {
127251 + u32 emph_lev_sel_port0;
127252 + u32 emph_lev_sel_port1;
127253 + u8 xaui_vo_sel;
127254 + u8 xaui_state;
127255 + u16 rsvd0;
127256 + u32 xaui_eq_vector;
127257 +} __packed;
127258 +
127259 +struct FWCMD_COMMON_ANON_262_REQUEST {
127260 + u32 rsvd0;
127261 +} __packed;
127262 +
127263 +union FWCMD_COMMON_ANON_261_PARAMS {
127264 + struct FWCMD_COMMON_ANON_262_REQUEST request;
127265 + struct FWCMD_COMMON_PORT_EQUALIZATION_PARAMS response;
127266 +} __packed;
127267 +
127268 +/*
127269 + * This comand can be used to read XAUI equalization parameters. The
127270 + * ARM firmware applies default equalization parameters during initialization.
127271 + * These parameters may be customer-specific when derived from the
127272 + * SEEPROM. See SEEPROM_DATA for equalization specific fields.
127273 + */
127274 +struct FWCMD_COMMON_GET_PORT_EQUALIZATION {
127275 + union FWCMD_HEADER header;
127276 + union FWCMD_COMMON_ANON_261_PARAMS params;
127277 +} __packed;
127278 +
127279 +struct FWCMD_COMMON_ANON_264_RESPONSE {
127280 + u32 rsvd0;
127281 +} __packed;
127282 +
127283 +union FWCMD_COMMON_ANON_263_PARAMS {
127284 + struct FWCMD_COMMON_PORT_EQUALIZATION_PARAMS request;
127285 + struct FWCMD_COMMON_ANON_264_RESPONSE response;
127286 +} __packed;
127287 +
127288 +/*
127289 + * This comand can be used to set XAUI equalization parameters. The ARM
127290 + * firmware applies default equalization parameters during initialization.
127291 + * These parameters may be customer-specific when derived from the
127292 + * SEEPROM. See SEEPROM_DATA for equalization specific fields.
127293 + */
127294 +struct FWCMD_COMMON_SET_PORT_EQUALIZATION {
127295 + union FWCMD_HEADER header;
127296 + union FWCMD_COMMON_ANON_263_PARAMS params;
127297 +} __packed;
127298 +
127299 +#endif /* __fwcmd_common_bmap_h__ */
127300 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_common.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_common.h
127301 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_common.h 1970-01-01 01:00:00.000000000 +0100
127302 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_common.h 2009-05-10 23:48:29.000000000 +0200
127303 @@ -0,0 +1,222 @@
127304 +/*
127305 + * Copyright (C) 2005 - 2008 ServerEngines
127306 + * All rights reserved.
127307 + *
127308 + * This program is free software; you can redistribute it and/or
127309 + * modify it under the terms of the GNU General Public License version 2
127310 + * as published by the Free Software Foundation. The full GNU General
127311 + * Public License is included in this distribution in the file called COPYING.
127312 + *
127313 + * Contact Information:
127314 + * linux-drivers@serverengines.com
127315 + *
127316 + * ServerEngines
127317 + * 209 N. Fair Oaks Ave
127318 + * Sunnyvale, CA 94085
127319 + */
127320 +/*
127321 + * Autogenerated by srcgen version: 0127
127322 + */
127323 +#ifndef __fwcmd_common_amap_h__
127324 +#define __fwcmd_common_amap_h__
127325 +#include "host_struct.h"
127326 +
127327 +/* --- PHY_LINK_DUPLEX_ENUM --- */
127328 +#define PHY_LINK_DUPLEX_NONE (0)
127329 +#define PHY_LINK_DUPLEX_HALF (1)
127330 +#define PHY_LINK_DUPLEX_FULL (2)
127331 +
127332 +/* --- PHY_LINK_SPEED_ENUM --- */
127333 +#define PHY_LINK_SPEED_ZERO (0) /* No link. */
127334 +#define PHY_LINK_SPEED_10MBPS (1) /* 10 Mbps */
127335 +#define PHY_LINK_SPEED_100MBPS (2) /* 100 Mbps */
127336 +#define PHY_LINK_SPEED_1GBPS (3) /* 1 Gbps */
127337 +#define PHY_LINK_SPEED_10GBPS (4) /* 10 Gbps */
127338 +
127339 +/* --- PHY_LINK_FAULT_ENUM --- */
127340 +#define PHY_LINK_FAULT_NONE (0) /* No fault status
127341 + available or detected */
127342 +#define PHY_LINK_FAULT_LOCAL (1) /* Local fault detected */
127343 +#define PHY_LINK_FAULT_REMOTE (2) /* Remote fault detected */
127344 +
127345 +/* --- BE_ULP_MASK --- */
127346 +#define BE_ULP0_MASK (1)
127347 +#define BE_ULP1_MASK (2)
127348 +#define BE_ULP2_MASK (4)
127349 +
127350 +/* --- NTWK_ACTIVE_PORT --- */
127351 +#define NTWK_PORT_A (0) /* Port A is currently active */
127352 +#define NTWK_PORT_B (1) /* Port B is currently active */
127353 +#define NTWK_NO_ACTIVE_PORT (15) /* Both ports have lost link */
127354 +
127355 +/* --- NTWK_LINK_TYPE --- */
127356 +#define NTWK_LINK_TYPE_PHYSICAL (0) /* link up/down event
127357 + applies to BladeEngine's
127358 + Physical Ports
127359 + */
127360 +#define NTWK_LINK_TYPE_VIRTUAL (1) /* Virtual link up/down event
127361 + reported by BladeExchange.
127362 + This applies only when the
127363 + VLD feature is enabled
127364 + */
127365 +
127366 +/*
127367 + * --- FWCMD_MAC_TYPE_ENUM ---
127368 + * This enum defines the types of MAC addresses in the RXF MAC Address Table.
127369 + */
127370 +#define MAC_ADDRESS_TYPE_STORAGE (0) /* Storage MAC Address */
127371 +#define MAC_ADDRESS_TYPE_NETWORK (1) /* Network MAC Address */
127372 +#define MAC_ADDRESS_TYPE_PD (2) /* Protection Domain MAC Addr */
127373 +#define MAC_ADDRESS_TYPE_MANAGEMENT (3) /* Managment MAC Address */
127374 +
127375 +
127376 +/* --- FWCMD_RING_TYPE_ENUM --- */
127377 +#define FWCMD_RING_TYPE_ETH_RX (1) /* Ring created with */
127378 + /* FWCMD_COMMON_ETH_RX_CREATE. */
127379 +#define FWCMD_RING_TYPE_ETH_TX (2) /* Ring created with */
127380 + /* FWCMD_COMMON_ETH_TX_CREATE. */
127381 +#define FWCMD_RING_TYPE_ISCSI_WRBQ (3) /* Ring created with */
127382 + /* FWCMD_COMMON_ISCSI_WRBQ_CREATE. */
127383 +#define FWCMD_RING_TYPE_ISCSI_DEFQ (4) /* Ring created with */
127384 + /* FWCMD_COMMON_ISCSI_DEFQ_CREATE. */
127385 +#define FWCMD_RING_TYPE_TPM_WRBQ (5) /* Ring created with */
127386 + /* FWCMD_COMMON_TPM_WRBQ_CREATE. */
127387 +#define FWCMD_RING_TYPE_TPM_DEFQ (6) /* Ring created with */
127388 + /* FWCMD_COMMONTPM_TDEFQ_CREATE. */
127389 +#define FWCMD_RING_TYPE_TPM_RQ (7) /* Ring created with */
127390 + /* FWCMD_COMMON_TPM_RQ_CREATE. */
127391 +#define FWCMD_RING_TYPE_MCC (8) /* Ring created with */
127392 + /* FWCMD_COMMON_MCC_CREATE. */
127393 +#define FWCMD_RING_TYPE_CQ (9) /* Ring created with */
127394 + /* FWCMD_COMMON_CQ_CREATE. */
127395 +#define FWCMD_RING_TYPE_EQ (10) /* Ring created with */
127396 + /* FWCMD_COMMON_EQ_CREATE. */
127397 +#define FWCMD_RING_TYPE_QP (11) /* Ring created with */
127398 + /* FWCMD_RDMA_QP_CREATE. */
127399 +
127400 +
127401 +/* --- ETH_TX_RING_TYPE_ENUM --- */
127402 +#define ETH_TX_RING_TYPE_FORWARDING (1) /* Ethernet ring for
127403 + forwarding packets */
127404 +#define ETH_TX_RING_TYPE_STANDARD (2) /* Ethernet ring for sending
127405 + network packets. */
127406 +#define ETH_TX_RING_TYPE_BOUND (3) /* Ethernet ring bound to the
127407 + port specified in the command
127408 + header.port_number field.
127409 + Rings of this type are
127410 + NOT subject to the
127411 + failover logic implemented
127412 + in the BladeEngine.
127413 + */
127414 +
127415 +/* --- FWCMD_COMMON_QOS_TYPE_ENUM --- */
127416 +#define QOS_BITS_NIC (1) /* max_bits_per_second_NIC */
127417 + /* field is valid. */
127418 +#define QOS_PKTS_NIC (2) /* max_packets_per_second_NIC */
127419 + /* field is valid. */
127420 +#define QOS_IOPS_ISCSI (4) /* max_ios_per_second_iSCSI */
127421 + /*field is valid. */
127422 +#define QOS_VLAN_TAG (8) /* domain_VLAN_tag field
127423 + is valid. */
127424 +#define QOS_FABRIC_ID (16) /* fabric_domain_ID field
127425 + is valid. */
127426 +#define QOS_OEM_PARAMS (32) /* qos_params_oem field
127427 + is valid. */
127428 +#define QOS_TPUT_ISCSI (64) /* max_bytes_per_second_iSCSI
127429 + field is valid. */
127430 +
127431 +
127432 +/*
127433 + * --- FAILOVER_CONFIG_ENUM ---
127434 + * Failover configuration setting used in FWCMD_COMMON_FORCE_FAILOVER
127435 + */
127436 +#define FAILOVER_CONFIG_NO_CHANGE (0) /* No change to automatic */
127437 + /* port failover setting. */
127438 +#define FAILOVER_CONFIG_ON (1) /* Automatic port failover
127439 + on link down is enabled. */
127440 +#define FAILOVER_CONFIG_OFF (2) /* Automatic port failover
127441 + on link down is disabled. */
127442 +
127443 +/*
127444 + * --- FAILOVER_PORT_ENUM ---
127445 + * Failover port setting used in FWCMD_COMMON_FORCE_FAILOVER
127446 + */
127447 +#define FAILOVER_PORT_A (0) /* Selects port A. */
127448 +#define FAILOVER_PORT_B (1) /* Selects port B. */
127449 +#define FAILOVER_PORT_NONE (15) /* No port change requested. */
127450 +
127451 +
127452 +/*
127453 + * --- MGMT_FLASHROM_OPCODE ---
127454 + * Flash ROM operation code
127455 + */
127456 +#define MGMT_FLASHROM_OPCODE_FLASH (1) /* Commit downloaded data
127457 + to Flash ROM */
127458 +#define MGMT_FLASHROM_OPCODE_SAVE (2) /* Save downloaded data to
127459 + ARM's DDR - do not flash */
127460 +#define MGMT_FLASHROM_OPCODE_CLEAR (3) /* Erase specified component
127461 + from FlashROM */
127462 +#define MGMT_FLASHROM_OPCODE_REPORT (4) /* Read specified component
127463 + from Flash ROM */
127464 +#define MGMT_FLASHROM_OPCODE_IMAGE_INFO (5) /* Returns size of a
127465 + component */
127466 +
127467 +/*
127468 + * --- MGMT_FLASHROM_OPTYPE ---
127469 + * Flash ROM operation type
127470 + */
127471 +#define MGMT_FLASHROM_OPTYPE_CODE_FIRMWARE (0) /* Includes ARM firmware,
127472 + IPSec (optional) and EP
127473 + firmware */
127474 +#define MGMT_FLASHROM_OPTYPE_CODE_REDBOOT (1)
127475 +#define MGMT_FLASHROM_OPTYPE_CODE_BIOS (2)
127476 +#define MGMT_FLASHROM_OPTYPE_CODE_PXE_BIOS (3)
127477 +#define MGMT_FLASHROM_OPTYPE_CODE_CTRLS (4)
127478 +#define MGMT_FLASHROM_OPTYPE_CFG_IPSEC (5)
127479 +#define MGMT_FLASHROM_OPTYPE_CFG_INI (6)
127480 +#define MGMT_FLASHROM_OPTYPE_ROM_OFFSET_SPECIFIED (7)
127481 +
127482 +/*
127483 + * --- FLASHROM_TYPE ---
127484 + * Flash ROM manufacturers supported in the f/w
127485 + */
127486 +#define INTEL (0)
127487 +#define SPANSION (1)
127488 +#define MICRON (2)
127489 +
127490 +/* --- DDR_CAS_TYPE --- */
127491 +#define CAS_3 (0)
127492 +#define CAS_4 (1)
127493 +#define CAS_5 (2)
127494 +
127495 +/* --- DDR_SIZE_TYPE --- */
127496 +#define SIZE_256MB (0)
127497 +#define SIZE_512MB (1)
127498 +
127499 +/* --- DDR_MODE_TYPE --- */
127500 +#define DDR_NO_ECC (0)
127501 +#define DDR_ECC (1)
127502 +
127503 +/* --- INTERFACE_10GB_TYPE --- */
127504 +#define CX4_TYPE (0)
127505 +#define XFP_TYPE (1)
127506 +
127507 +/* --- BE_CHIP_MAX_MTU --- */
127508 +#define CHIP_MAX_MTU (9000)
127509 +
127510 +/* --- XAUI_STATE_ENUM --- */
127511 +#define XAUI_STATE_ENABLE (0) /* This MUST be the default
127512 + value for all requests
127513 + which set/change
127514 + equalization parameter. */
127515 +#define XAUI_STATE_DISABLE (255) /* The XAUI for both ports
127516 + may be disabled for EMI
127517 + tests. There is no
127518 + provision for turning off
127519 + individual ports.
127520 + */
127521 +/* --- BE_ASIC_REVISION --- */
127522 +#define BE_ASIC_REV_A0 (1)
127523 +#define BE_ASIC_REV_A1 (2)
127524 +
127525 +#endif /* __fwcmd_common_amap_h__ */
127526 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_eth_bmap.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_eth_bmap.h
127527 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_eth_bmap.h 1970-01-01 01:00:00.000000000 +0100
127528 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_eth_bmap.h 2009-05-10 23:48:29.000000000 +0200
127529 @@ -0,0 +1,280 @@
127530 +/*
127531 + * Copyright (C) 2005 - 2008 ServerEngines
127532 + * All rights reserved.
127533 + *
127534 + * This program is free software; you can redistribute it and/or
127535 + * modify it under the terms of the GNU General Public License version 2
127536 + * as published by the Free Software Foundation. The full GNU General
127537 + * Public License is included in this distribution in the file called COPYING.
127538 + *
127539 + * Contact Information:
127540 + * linux-drivers@serverengines.com
127541 + *
127542 + * ServerEngines
127543 + * 209 N. Fair Oaks Ave
127544 + * Sunnyvale, CA 94085
127545 + */
127546 +/*
127547 + * Autogenerated by srcgen version: 0127
127548 + */
127549 +#ifndef __fwcmd_eth_bmap_h__
127550 +#define __fwcmd_eth_bmap_h__
127551 +#include "fwcmd_hdr_bmap.h"
127552 +#include "fwcmd_types_bmap.h"
127553 +
127554 +struct MIB_ETH_STATISTICS_PARAMS_IN {
127555 + u32 rsvd0;
127556 +} __packed;
127557 +
127558 +struct BE_RXF_STATS {
127559 + u32 p0recvdtotalbytesLSD; /* DWORD 0 */
127560 + u32 p0recvdtotalbytesMSD; /* DWORD 1 */
127561 + u32 p0recvdtotalframes; /* DWORD 2 */
127562 + u32 p0recvdunicastframes; /* DWORD 3 */
127563 + u32 p0recvdmulticastframes; /* DWORD 4 */
127564 + u32 p0recvdbroadcastframes; /* DWORD 5 */
127565 + u32 p0crcerrors; /* DWORD 6 */
127566 + u32 p0alignmentsymerrs; /* DWORD 7 */
127567 + u32 p0pauseframesrecvd; /* DWORD 8 */
127568 + u32 p0controlframesrecvd; /* DWORD 9 */
127569 + u32 p0inrangelenerrors; /* DWORD 10 */
127570 + u32 p0outrangeerrors; /* DWORD 11 */
127571 + u32 p0frametoolongerrors; /* DWORD 12 */
127572 + u32 p0droppedaddressmatch; /* DWORD 13 */
127573 + u32 p0droppedvlanmismatch; /* DWORD 14 */
127574 + u32 p0ipdroppedtoosmall; /* DWORD 15 */
127575 + u32 p0ipdroppedtooshort; /* DWORD 16 */
127576 + u32 p0ipdroppedhdrtoosmall; /* DWORD 17 */
127577 + u32 p0tcpdroppedlen; /* DWORD 18 */
127578 + u32 p0droppedrunt; /* DWORD 19 */
127579 + u32 p0recvd64; /* DWORD 20 */
127580 + u32 p0recvd65_127; /* DWORD 21 */
127581 + u32 p0recvd128_256; /* DWORD 22 */
127582 + u32 p0recvd256_511; /* DWORD 23 */
127583 + u32 p0recvd512_1023; /* DWORD 24 */
127584 + u32 p0recvd1518_1522; /* DWORD 25 */
127585 + u32 p0recvd1522_2047; /* DWORD 26 */
127586 + u32 p0recvd2048_4095; /* DWORD 27 */
127587 + u32 p0recvd4096_8191; /* DWORD 28 */
127588 + u32 p0recvd8192_9216; /* DWORD 29 */
127589 + u32 p0rcvdipcksmerrs; /* DWORD 30 */
127590 + u32 p0recvdtcpcksmerrs; /* DWORD 31 */
127591 + u32 p0recvdudpcksmerrs; /* DWORD 32 */
127592 + u32 p0recvdnonrsspackets; /* DWORD 33 */
127593 + u32 p0recvdippackets; /* DWORD 34 */
127594 + u32 p0recvdchute1packets; /* DWORD 35 */
127595 + u32 p0recvdchute2packets; /* DWORD 36 */
127596 + u32 p0recvdchute3packets; /* DWORD 37 */
127597 + u32 p0recvdipsecpackets; /* DWORD 38 */
127598 + u32 p0recvdmanagementpackets; /* DWORD 39 */
127599 + u32 p0xmitbyteslsd; /* DWORD 40 */
127600 + u32 p0xmitbytesmsd; /* DWORD 41 */
127601 + u32 p0xmitunicastframes; /* DWORD 42 */
127602 + u32 p0xmitmulticastframes; /* DWORD 43 */
127603 + u32 p0xmitbroadcastframes; /* DWORD 44 */
127604 + u32 p0xmitpauseframes; /* DWORD 45 */
127605 + u32 p0xmitcontrolframes; /* DWORD 46 */
127606 + u32 p0xmit64; /* DWORD 47 */
127607 + u32 p0xmit65_127; /* DWORD 48 */
127608 + u32 p0xmit128_256; /* DWORD 49 */
127609 + u32 p0xmit256_511; /* DWORD 50 */
127610 + u32 p0xmit512_1023; /* DWORD 51 */
127611 + u32 p0xmit1518_1522; /* DWORD 52 */
127612 + u32 p0xmit1522_2047; /* DWORD 53 */
127613 + u32 p0xmit2048_4095; /* DWORD 54 */
127614 + u32 p0xmit4096_8191; /* DWORD 55 */
127615 + u32 p0xmit8192_9216; /* DWORD 56 */
127616 + u32 p0rxfifooverflowdropped; /* DWORD 57 */
127617 + u32 p0ipseclookupfaileddropped; /* DWORD 58 */
127618 + u32 p1recvdtotalbytesLSD; /* DWORD 59 */
127619 + u32 p1recvdtotalbytesMSD; /* DWORD 60 */
127620 + u32 p1recvdtotalframes; /* DWORD 61 */
127621 + u32 p1recvdunicastframes; /* DWORD 62 */
127622 + u32 p1recvdmulticastframes; /* DWORD 63 */
127623 + u32 p1recvdbroadcastframes; /* DWORD 64 */
127624 + u32 p1crcerrors; /* DWORD 65 */
127625 + u32 p1alignmentsymerrs; /* DWORD 66 */
127626 + u32 p1pauseframesrecvd; /* DWORD 67 */
127627 + u32 p1controlframesrecvd; /* DWORD 68 */
127628 + u32 p1inrangelenerrors; /* DWORD 69 */
127629 + u32 p1outrangeerrors; /* DWORD 70 */
127630 + u32 p1frametoolongerrors; /* DWORD 71 */
127631 + u32 p1droppedaddressmatch; /* DWORD 72 */
127632 + u32 p1droppedvlanmismatch; /* DWORD 73 */
127633 + u32 p1ipdroppedtoosmall; /* DWORD 74 */
127634 + u32 p1ipdroppedtooshort; /* DWORD 75 */
127635 + u32 p1ipdroppedhdrtoosmall; /* DWORD 76 */
127636 + u32 p1tcpdroppedlen; /* DWORD 77 */
127637 + u32 p1droppedrunt; /* DWORD 78 */
127638 + u32 p1recvd64; /* DWORD 79 */
127639 + u32 p1recvd65_127; /* DWORD 80 */
127640 + u32 p1recvd128_256; /* DWORD 81 */
127641 + u32 p1recvd256_511; /* DWORD 82 */
127642 + u32 p1recvd512_1023; /* DWORD 83 */
127643 + u32 p1recvd1518_1522; /* DWORD 84 */
127644 + u32 p1recvd1522_2047; /* DWORD 85 */
127645 + u32 p1recvd2048_4095; /* DWORD 86 */
127646 + u32 p1recvd4096_8191; /* DWORD 87 */
127647 + u32 p1recvd8192_9216; /* DWORD 88 */
127648 + u32 p1rcvdipcksmerrs; /* DWORD 89 */
127649 + u32 p1recvdtcpcksmerrs; /* DWORD 90 */
127650 + u32 p1recvdudpcksmerrs; /* DWORD 91 */
127651 + u32 p1recvdnonrsspackets; /* DWORD 92 */
127652 + u32 p1recvdippackets; /* DWORD 93 */
127653 + u32 p1recvdchute1packets; /* DWORD 94 */
127654 + u32 p1recvdchute2packets; /* DWORD 95 */
127655 + u32 p1recvdchute3packets; /* DWORD 96 */
127656 + u32 p1recvdipsecpackets; /* DWORD 97 */
127657 + u32 p1recvdmanagementpackets; /* DWORD 98 */
127658 + u32 p1xmitbyteslsd; /* DWORD 99 */
127659 + u32 p1xmitbytesmsd; /* DWORD 100 */
127660 + u32 p1xmitunicastframes; /* DWORD 101 */
127661 + u32 p1xmitmulticastframes; /* DWORD 102 */
127662 + u32 p1xmitbroadcastframes; /* DWORD 103 */
127663 + u32 p1xmitpauseframes; /* DWORD 104 */
127664 + u32 p1xmitcontrolframes; /* DWORD 105 */
127665 + u32 p1xmit64; /* DWORD 106 */
127666 + u32 p1xmit65_127; /* DWORD 107 */
127667 + u32 p1xmit128_256; /* DWORD 108 */
127668 + u32 p1xmit256_511; /* DWORD 109 */
127669 + u32 p1xmit512_1023; /* DWORD 110 */
127670 + u32 p1xmit1518_1522; /* DWORD 111 */
127671 + u32 p1xmit1522_2047; /* DWORD 112 */
127672 + u32 p1xmit2048_4095; /* DWORD 113 */
127673 + u32 p1xmit4096_8191; /* DWORD 114 */
127674 + u32 p1xmit8192_9216; /* DWORD 115 */
127675 + u32 p1rxfifooverflowdropped; /* DWORD 116 */
127676 + u32 p1ipseclookupfaileddropped; /* DWORD 117 */
127677 + u32 pxdroppednopbuf; /* DWORD 118 */
127678 + u32 pxdroppednotxpb; /* DWORD 119 */
127679 + u32 pxdroppednoipsecbuf; /* DWORD 120 */
127680 + u32 pxdroppednoerxdescr; /* DWORD 121 */
127681 + u32 pxdroppednotpredescr; /* DWORD 122 */
127682 + u32 pxrecvdmanagementportpackets; /* DWORD 123 */
127683 + u32 pxrecvdmanagementportbytes; /* DWORD 124 */
127684 + u32 pxrecvdmanagementportpauseframes; /* DWORD 125 */
127685 + u32 pxrecvdmanagementporterrors; /* DWORD 126 */
127686 + u32 pxxmitmanagementportpackets; /* DWORD 127 */
127687 + u32 pxxmitmanagementportbytes; /* DWORD 128 */
127688 + u32 pxxmitmanagementportpause; /* DWORD 129 */
127689 + u32 pxxmitmanagementportrxfifooverflow; /* DWORD 130 */
127690 + u32 pxrecvdipsecipcksmerrs; /* DWORD 131 */
127691 + u32 pxrecvdtcpsecipcksmerrs; /* DWORD 132 */
127692 + u32 pxrecvdudpsecipcksmerrs; /* DWORD 133 */
127693 + u32 pxipsecrunt; /* DWORD 134 */
127694 + u32 pxipsecaddressmismatchdropped; /* DWORD 135 */
127695 + u32 pxipsecrxfifooverflowdropped; /* DWORD 136 */
127696 + u32 pxipsecframestoolong; /* DWORD 137 */
127697 + u32 pxipsectotalipframes; /* DWORD 138 */
127698 + u32 pxipseciptoosmall; /* DWORD 139 */
127699 + u32 pxipseciptooshort; /* DWORD 140 */
127700 + u32 pxipseciphdrtoosmall; /* DWORD 141 */
127701 + u32 pxipsectcphdrbad; /* DWORD 142 */
127702 + u32 pxrecvdipsecchute1; /* DWORD 143 */
127703 + u32 pxrecvdipsecchute2; /* DWORD 144 */
127704 + u32 pxrecvdipsecchute3; /* DWORD 145 */
127705 + u32 pxdropped7frags; /* DWORD 146 */
127706 + u32 pxdroppedfrags; /* DWORD 147 */
127707 + u32 pxdroppedinvalidfragring; /* DWORD 148 */
127708 + u32 pxnumforwardedpackets; /* DWORD 149 */
127709 +} __packed;
127710 +
127711 +union MIB_ETH_STATISTICS_PARAMS {
127712 + struct MIB_ETH_STATISTICS_PARAMS_IN request;
127713 + struct BE_RXF_STATS response;
127714 +} __packed;
127715 +
127716 +/*
127717 + * Query ethernet statistics. All domains may issue this command. The
127718 + * host domain drivers may optionally reset internal statistic counters
127719 + * with a query.
127720 + */
127721 +struct FWCMD_ETH_GET_STATISTICS {
127722 + union FWCMD_HEADER header;
127723 + union MIB_ETH_STATISTICS_PARAMS params;
127724 +} __packed;
127725 +
127726 +
127727 +struct FWCMD_ETH_ANON_175_REQUEST {
127728 + u8 port0_promiscuous;
127729 + u8 port1_promiscuous;
127730 + u16 rsvd0;
127731 +} __packed;
127732 +
127733 +struct FWCMD_ETH_ANON_176_RESPONSE {
127734 + u32 rsvd0;
127735 +} __packed;
127736 +
127737 +union FWCMD_ETH_ANON_174_PARAMS {
127738 + struct FWCMD_ETH_ANON_175_REQUEST request;
127739 + struct FWCMD_ETH_ANON_176_RESPONSE response;
127740 +} __packed;
127741 +
127742 +/* Enables/Disables promiscuous ethernet receive mode. */
127743 +struct FWCMD_ETH_PROMISCUOUS {
127744 + union FWCMD_HEADER header;
127745 + union FWCMD_ETH_ANON_174_PARAMS params;
127746 +} __packed;
127747 +
127748 +struct FWCMD_ETH_ANON_178_REQUEST {
127749 + u32 new_fragsize_log2;
127750 +} __packed;
127751 +
127752 +struct FWCMD_ETH_ANON_179_RESPONSE {
127753 + u32 actual_fragsize_log2;
127754 +} __packed;
127755 +
127756 +union FWCMD_ETH_ANON_177_PARAMS {
127757 + struct FWCMD_ETH_ANON_178_REQUEST request;
127758 + struct FWCMD_ETH_ANON_179_RESPONSE response;
127759 +} __packed;
127760 +
127761 +/*
127762 + * Sets the Ethernet RX fragment size. Only host (domain 0) networking
127763 + * drivers may issue this command. This call will fail for non-host
127764 + * protection domains. In this situation the MCC CQ status will indicate
127765 + * a failure due to insufficient priviledges. The response should be
127766 + * ignored, and the driver should use the FWCMD_ETH_GET_FRAG_SIZE to
127767 + * query the existing ethernet receive fragment size. It must use this
127768 + * fragment size for all fragments in the ethernet receive ring. If
127769 + * the command succeeds, the driver must use the frag size indicated
127770 + * in the command response since the requested frag size may not be applied
127771 + * until the next reboot. When the requested fragsize matches the response
127772 + * fragsize, this indicates the request was applied immediately.
127773 + */
127774 +struct FWCMD_ETH_SET_RX_FRAG_SIZE {
127775 + union FWCMD_HEADER header;
127776 + union FWCMD_ETH_ANON_177_PARAMS params;
127777 +} __packed;
127778 +
127779 +struct FWCMD_ETH_ANON_181_REQUEST {
127780 + u32 rsvd0;
127781 +} __packed;
127782 +
127783 +struct FWCMD_ETH_ANON_182_RESPONSE {
127784 + u32 actual_fragsize_log2;
127785 +} __packed;
127786 +
127787 +union FWCMD_ETH_ANON_180_PARAMS {
127788 + struct FWCMD_ETH_ANON_181_REQUEST request;
127789 + struct FWCMD_ETH_ANON_182_RESPONSE response;
127790 +} __packed;
127791 +
127792 +/*
127793 + * Queries the Ethernet RX fragment size. All domains may issue this
127794 + * command. The driver should call this command to determine the minimum
127795 + * required fragment size for the ethernet RX ring buffers. Drivers
127796 + * may choose to use a larger size for each fragment buffer, but BladeEngine
127797 + * will use up to the configured minimum required fragsize in each ethernet
127798 + * receive fragment buffer. For example, if the ethernet receive fragment
127799 + * size is configured to 4kB, and a driver uses 8kB fragments, a 6kB
127800 + * ethernet packet received by BladeEngine will be split accross two
127801 + * of the driver's receive framgents (4kB in one fragment buffer, and
127802 + * 2kB in the subsequent fragment buffer).
127803 + */
127804 +struct FWCMD_ETH_GET_RX_FRAG_SIZE {
127805 + union FWCMD_HEADER header;
127806 + union FWCMD_ETH_ANON_180_PARAMS params;
127807 +} __packed;
127808 +
127809 +#endif /* __fwcmd_eth_bmap_h__ */
127810 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_hdr_bmap.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_hdr_bmap.h
127811 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_hdr_bmap.h 1970-01-01 01:00:00.000000000 +0100
127812 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_hdr_bmap.h 2009-05-10 23:48:29.000000000 +0200
127813 @@ -0,0 +1,54 @@
127814 +/*
127815 + * Copyright (C) 2005 - 2008 ServerEngines
127816 + * All rights reserved.
127817 + *
127818 + * This program is free software; you can redistribute it and/or
127819 + * modify it under the terms of the GNU General Public License version 2
127820 + * as published by the Free Software Foundation. The full GNU General
127821 + * Public License is included in this distribution in the file called COPYING.
127822 + *
127823 + * Contact Information:
127824 + * linux-drivers@serverengines.com
127825 + *
127826 + * ServerEngines
127827 + * 209 N. Fair Oaks Ave
127828 + * Sunnyvale, CA 94085
127829 + */
127830 +/*
127831 + * Autogenerated by srcgen version: 0127
127832 + */
127833 +#ifndef __fwcmd_hdr_bmap_h__
127834 +#define __fwcmd_hdr_bmap_h__
127835 +
127836 +struct FWCMD_REQUEST_HEADER {
127837 + u8 opcode;
127838 + u8 subsystem;
127839 + u8 port_number;
127840 + u8 domain;
127841 + u32 timeout;
127842 + u32 request_length;
127843 + u32 rsvd0;
127844 +} __packed;
127845 +
127846 +struct FWCMD_RESPONSE_HEADER {
127847 + u8 opcode;
127848 + u8 subsystem;
127849 + u8 rsvd0;
127850 + u8 domain;
127851 + u8 status;
127852 + u8 additional_status;
127853 + u16 rsvd1;
127854 + u32 response_length;
127855 + u32 actual_response_length;
127856 +} __packed;
127857 +
127858 +/*
127859 + * The firmware/driver overwrites the input FWCMD_REQUEST_HEADER with
127860 + * the output FWCMD_RESPONSE_HEADER.
127861 + */
127862 +union FWCMD_HEADER {
127863 + struct FWCMD_REQUEST_HEADER request;
127864 + struct FWCMD_RESPONSE_HEADER response;
127865 +} __packed;
127866 +
127867 +#endif /* __fwcmd_hdr_bmap_h__ */
127868 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_mcc.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_mcc.h
127869 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_mcc.h 1970-01-01 01:00:00.000000000 +0100
127870 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_mcc.h 2009-05-10 23:48:29.000000000 +0200
127871 @@ -0,0 +1,94 @@
127872 +/*
127873 + * Copyright (C) 2005 - 2008 ServerEngines
127874 + * All rights reserved.
127875 + *
127876 + * This program is free software; you can redistribute it and/or
127877 + * modify it under the terms of the GNU General Public License version 2
127878 + * as published by the Free Software Foundation. The full GNU General
127879 + * Public License is included in this distribution in the file called COPYING.
127880 + *
127881 + * Contact Information:
127882 + * linux-drivers@serverengines.com
127883 + *
127884 + * ServerEngines
127885 + * 209 N. Fair Oaks Ave
127886 + * Sunnyvale, CA 94085
127887 + */
127888 +/*
127889 + * Autogenerated by srcgen version: 0127
127890 + */
127891 +#ifndef __fwcmd_mcc_amap_h__
127892 +#define __fwcmd_mcc_amap_h__
127893 +#include "fwcmd_opcodes.h"
127894 +/*
127895 + * Where applicable, a WRB, may contain a list of Scatter-gather elements.
127896 + * Each element supports a 64 bit address and a 32bit length field.
127897 + */
127898 +struct BE_MCC_SGE_AMAP {
127899 + u8 pa_lo[32]; /* DWORD 0 */
127900 + u8 pa_hi[32]; /* DWORD 1 */
127901 + u8 length[32]; /* DWORD 2 */
127902 +} __packed;
127903 +struct MCC_SGE_AMAP {
127904 + u32 dw[3];
127905 +};
127906 +/*
127907 + * The design of an MCC_SGE allows up to 19 elements to be embedded
127908 + * in a WRB, supporting 64KB data transfers (assuming a 4KB page size).
127909 + */
127910 +struct BE_MCC_WRB_PAYLOAD_AMAP {
127911 + union {
127912 + struct BE_MCC_SGE_AMAP sgl[19];
127913 + u8 embedded[59][32]; /* DWORD 0 */
127914 + };
127915 +} __packed;
127916 +struct MCC_WRB_PAYLOAD_AMAP {
127917 + u32 dw[59];
127918 +};
127919 +
127920 +/*
127921 + * This is the structure of the MCC Command WRB for commands
127922 + * sent to the Management Processing Unit (MPU). See section
127923 + * for usage in embedded and non-embedded modes.
127924 + */
127925 +struct BE_MCC_WRB_AMAP {
127926 + u8 embedded; /* DWORD 0 */
127927 + u8 rsvd0[2]; /* DWORD 0 */
127928 + u8 sge_count[5]; /* DWORD 0 */
127929 + u8 rsvd1[16]; /* DWORD 0 */
127930 + u8 special[8]; /* DWORD 0 */
127931 + u8 payload_length[32]; /* DWORD 1 */
127932 + u8 tag[2][32]; /* DWORD 2 */
127933 + u8 rsvd2[32]; /* DWORD 4 */
127934 + struct BE_MCC_WRB_PAYLOAD_AMAP payload;
127935 +} __packed;
127936 +struct MCC_WRB_AMAP {
127937 + u32 dw[64];
127938 +};
127939 +
127940 +/* This is the structure of the MCC Completion queue entry */
127941 +struct BE_MCC_CQ_ENTRY_AMAP {
127942 + u8 completion_status[16]; /* DWORD 0 */
127943 + u8 extended_status[16]; /* DWORD 0 */
127944 + u8 mcc_tag[2][32]; /* DWORD 1 */
127945 + u8 rsvd0[27]; /* DWORD 3 */
127946 + u8 consumed; /* DWORD 3 */
127947 + u8 completed; /* DWORD 3 */
127948 + u8 hpi_buffer_completion; /* DWORD 3 */
127949 + u8 async_event; /* DWORD 3 */
127950 + u8 valid; /* DWORD 3 */
127951 +} __packed;
127952 +struct MCC_CQ_ENTRY_AMAP {
127953 + u32 dw[4];
127954 +};
127955 +
127956 +/* Mailbox structures used by the MPU during bootstrap */
127957 +struct BE_MCC_MAILBOX_AMAP {
127958 + struct BE_MCC_WRB_AMAP wrb;
127959 + struct BE_MCC_CQ_ENTRY_AMAP cq;
127960 +} __packed;
127961 +struct MCC_MAILBOX_AMAP {
127962 + u32 dw[68];
127963 +};
127964 +
127965 +#endif /* __fwcmd_mcc_amap_h__ */
127966 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_opcodes.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_opcodes.h
127967 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_opcodes.h 1970-01-01 01:00:00.000000000 +0100
127968 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_opcodes.h 2009-05-10 23:48:29.000000000 +0200
127969 @@ -0,0 +1,244 @@
127970 +/*
127971 + * Copyright (C) 2005 - 2008 ServerEngines
127972 + * All rights reserved.
127973 + *
127974 + * This program is free software; you can redistribute it and/or
127975 + * modify it under the terms of the GNU General Public License version 2
127976 + * as published by the Free Software Foundation. The full GNU General
127977 + * Public License is included in this distribution in the file called COPYING.
127978 + *
127979 + * Contact Information:
127980 + * linux-drivers@serverengines.com
127981 + *
127982 + * ServerEngines
127983 + * 209 N. Fair Oaks Ave
127984 + * Sunnyvale, CA 94085
127985 + */
127986 +/*
127987 + * Autogenerated by srcgen version: 0127
127988 + */
127989 +#ifndef __fwcmd_opcodes_amap_h__
127990 +#define __fwcmd_opcodes_amap_h__
127991 +
127992 +/*
127993 + * --- FWCMD_SUBSYSTEMS ---
127994 + * The commands are grouped into the following subsystems. The subsystem
127995 + * code along with the opcode uniquely identify a particular fwcmd.
127996 + */
127997 +#define FWCMD_SUBSYSTEM_RSVD (0) /* This subsystem is reserved. It is */
127998 + /* never used. */
127999 +#define FWCMD_SUBSYSTEM_COMMON (1) /* CMDs in this group are common to
128000 + * all subsystems. See
128001 + * COMMON_SUBSYSTEM_OPCODES for opcodes
128002 + * and Common Host Configuration CMDs
128003 + * for the FWCMD descriptions.
128004 + */
128005 +#define FWCMD_SUBSYSTEM_COMMON_ISCSI (2) /* CMDs in this group are */
128006 + /*
128007 + * common to Initiator and Target. See
128008 + * COMMON_ISCSI_SUBSYSTEM_OPCODES and
128009 + * Common iSCSI Initiator and Target
128010 + * CMDs for the command descriptions.
128011 + */
128012 +#define FWCMD_SUBSYSTEM_ETH (3) /* This subsystem is used to
128013 + execute Ethernet commands. */
128014 +
128015 +#define FWCMD_SUBSYSTEM_TPM (4) /* This subsystem is used
128016 + to execute TPM commands. */
128017 +#define FWCMD_SUBSYSTEM_PXE_UNDI (5) /* This subsystem is used
128018 + * to execute PXE
128019 + * and UNDI specific commands.
128020 + */
128021 +
128022 +#define FWCMD_SUBSYSTEM_ISCSI_INI (6) /* This subsystem is used to
128023 + execute ISCSI Initiator
128024 + specific commands.
128025 + */
128026 +#define FWCMD_SUBSYSTEM_ISCSI_TGT (7) /* This subsystem is used
128027 + to execute iSCSI Target
128028 + specific commands.between
128029 + PTL and ARM firmware.
128030 + */
128031 +#define FWCMD_SUBSYSTEM_MILI_PTL (8) /* This subsystem is used to
128032 + execute iSCSI Target specific
128033 + commands.between MILI
128034 + and PTL. */
128035 +#define FWCMD_SUBSYSTEM_MILI_TMD (9) /* This subsystem is used to
128036 + execute iSCSI Target specific
128037 + commands between MILI
128038 + and TMD. */
128039 +#define FWCMD_SUBSYSTEM_PROXY (11) /* This subsystem is used
128040 + to execute proxied commands
128041 + within the host at the
128042 + explicit request of a
128043 + non priviledged domain.
128044 + This 'subsystem' is entirely
128045 + virtual from the controller
128046 + and firmware perspective as
128047 + it is implemented in host
128048 + drivers.
128049 + */
128050 +
128051 +/*
128052 + * --- COMMON_SUBSYSTEM_OPCODES ---
128053 + * These opcodes are common to both networking and storage PCI
128054 + * functions. They are used to reserve resources and configure
128055 + * BladeEngine. These opcodes all use the FWCMD_SUBSYSTEM_COMMON
128056 + * subsystem code.
128057 + */
128058 +#define OPCODE_COMMON_NTWK_MAC_QUERY (1)
128059 +#define SUBSYSTEM_COMMON_NTWK_MAC_QUERY (1)
128060 +#define SUBSYSTEM_COMMON_NTWK_MAC_SET (1)
128061 +#define SUBSYSTEM_COMMON_NTWK_MULTICAST_SET (1)
128062 +#define SUBSYSTEM_COMMON_NTWK_VLAN_CONFIG (1)
128063 +#define SUBSYSTEM_COMMON_NTWK_LINK_STATUS_QUERY (1)
128064 +#define SUBSYSTEM_COMMON_READ_FLASHROM (1)
128065 +#define SUBSYSTEM_COMMON_WRITE_FLASHROM (1)
128066 +#define SUBSYSTEM_COMMON_QUERY_MAX_FWCMD_BUFFER_SIZE (1)
128067 +#define SUBSYSTEM_COMMON_ADD_PAGE_TABLES (1)
128068 +#define SUBSYSTEM_COMMON_REMOVE_PAGE_TABLES (1)
128069 +#define SUBSYSTEM_COMMON_RING_DESTROY (1)
128070 +#define SUBSYSTEM_COMMON_CQ_CREATE (1)
128071 +#define SUBSYSTEM_COMMON_EQ_CREATE (1)
128072 +#define SUBSYSTEM_COMMON_ETH_RX_CREATE (1)
128073 +#define SUBSYSTEM_COMMON_ETH_TX_CREATE (1)
128074 +#define SUBSYSTEM_COMMON_ISCSI_DEFQ_CREATE (1)
128075 +#define SUBSYSTEM_COMMON_ISCSI_WRBQ_CREATE (1)
128076 +#define SUBSYSTEM_COMMON_MCC_CREATE (1)
128077 +#define SUBSYSTEM_COMMON_JELL_CONFIG (1)
128078 +#define SUBSYSTEM_COMMON_FORCE_FAILOVER (1)
128079 +#define SUBSYSTEM_COMMON_ADD_TEMPLATE_HEADER_BUFFERS (1)
128080 +#define SUBSYSTEM_COMMON_REMOVE_TEMPLATE_HEADER_BUFFERS (1)
128081 +#define SUBSYSTEM_COMMON_POST_ZERO_BUFFER (1)
128082 +#define SUBSYSTEM_COMMON_GET_QOS (1)
128083 +#define SUBSYSTEM_COMMON_SET_QOS (1)
128084 +#define SUBSYSTEM_COMMON_TCP_GET_STATISTICS (1)
128085 +#define SUBSYSTEM_COMMON_SEEPROM_READ (1)
128086 +#define SUBSYSTEM_COMMON_TCP_STATE_QUERY (1)
128087 +#define SUBSYSTEM_COMMON_GET_CNTL_ATTRIBUTES (1)
128088 +#define SUBSYSTEM_COMMON_NOP (1)
128089 +#define SUBSYSTEM_COMMON_NTWK_RX_FILTER (1)
128090 +#define SUBSYSTEM_COMMON_GET_FW_VERSION (1)
128091 +#define SUBSYSTEM_COMMON_SET_FLOW_CONTROL (1)
128092 +#define SUBSYSTEM_COMMON_GET_FLOW_CONTROL (1)
128093 +#define SUBSYSTEM_COMMON_SET_TCP_PARAMETERS (1)
128094 +#define SUBSYSTEM_COMMON_SET_FRAME_SIZE (1)
128095 +#define SUBSYSTEM_COMMON_GET_FAT (1)
128096 +#define SUBSYSTEM_COMMON_MODIFY_EQ_DELAY (1)
128097 +#define SUBSYSTEM_COMMON_FIRMWARE_CONFIG (1)
128098 +#define SUBSYSTEM_COMMON_ENABLE_DISABLE_DOMAINS (1)
128099 +#define SUBSYSTEM_COMMON_GET_DOMAIN_CONFIG (1)
128100 +#define SUBSYSTEM_COMMON_SET_VLD_CONFIG (1)
128101 +#define SUBSYSTEM_COMMON_GET_VLD_CONFIG (1)
128102 +#define SUBSYSTEM_COMMON_GET_PORT_EQUALIZATION (1)
128103 +#define SUBSYSTEM_COMMON_SET_PORT_EQUALIZATION (1)
128104 +#define SUBSYSTEM_COMMON_RED_CONFIG (1)
128105 +#define OPCODE_COMMON_NTWK_MAC_SET (2)
128106 +#define OPCODE_COMMON_NTWK_MULTICAST_SET (3)
128107 +#define OPCODE_COMMON_NTWK_VLAN_CONFIG (4)
128108 +#define OPCODE_COMMON_NTWK_LINK_STATUS_QUERY (5)
128109 +#define OPCODE_COMMON_READ_FLASHROM (6)
128110 +#define OPCODE_COMMON_WRITE_FLASHROM (7)
128111 +#define OPCODE_COMMON_QUERY_MAX_FWCMD_BUFFER_SIZE (8)
128112 +#define OPCODE_COMMON_ADD_PAGE_TABLES (9)
128113 +#define OPCODE_COMMON_REMOVE_PAGE_TABLES (10)
128114 +#define OPCODE_COMMON_RING_DESTROY (11)
128115 +#define OPCODE_COMMON_CQ_CREATE (12)
128116 +#define OPCODE_COMMON_EQ_CREATE (13)
128117 +#define OPCODE_COMMON_ETH_RX_CREATE (14)
128118 +#define OPCODE_COMMON_ETH_TX_CREATE (15)
128119 +#define OPCODE_COMMON_NET_RESERVED0 (16) /* Reserved */
128120 +#define OPCODE_COMMON_NET_RESERVED1 (17) /* Reserved */
128121 +#define OPCODE_COMMON_NET_RESERVED2 (18) /* Reserved */
128122 +#define OPCODE_COMMON_ISCSI_DEFQ_CREATE (19)
128123 +#define OPCODE_COMMON_ISCSI_WRBQ_CREATE (20)
128124 +#define OPCODE_COMMON_MCC_CREATE (21)
128125 +#define OPCODE_COMMON_JELL_CONFIG (22)
128126 +#define OPCODE_COMMON_FORCE_FAILOVER (23)
128127 +#define OPCODE_COMMON_ADD_TEMPLATE_HEADER_BUFFERS (24)
128128 +#define OPCODE_COMMON_REMOVE_TEMPLATE_HEADER_BUFFERS (25)
128129 +#define OPCODE_COMMON_POST_ZERO_BUFFER (26)
128130 +#define OPCODE_COMMON_GET_QOS (27)
128131 +#define OPCODE_COMMON_SET_QOS (28)
128132 +#define OPCODE_COMMON_TCP_GET_STATISTICS (29)
128133 +#define OPCODE_COMMON_SEEPROM_READ (30)
128134 +#define OPCODE_COMMON_TCP_STATE_QUERY (31)
128135 +#define OPCODE_COMMON_GET_CNTL_ATTRIBUTES (32)
128136 +#define OPCODE_COMMON_NOP (33)
128137 +#define OPCODE_COMMON_NTWK_RX_FILTER (34)
128138 +#define OPCODE_COMMON_GET_FW_VERSION (35)
128139 +#define OPCODE_COMMON_SET_FLOW_CONTROL (36)
128140 +#define OPCODE_COMMON_GET_FLOW_CONTROL (37)
128141 +#define OPCODE_COMMON_SET_TCP_PARAMETERS (38)
128142 +#define OPCODE_COMMON_SET_FRAME_SIZE (39)
128143 +#define OPCODE_COMMON_GET_FAT (40)
128144 +#define OPCODE_COMMON_MODIFY_EQ_DELAY (41)
128145 +#define OPCODE_COMMON_FIRMWARE_CONFIG (42)
128146 +#define OPCODE_COMMON_ENABLE_DISABLE_DOMAINS (43)
128147 +#define OPCODE_COMMON_GET_DOMAIN_CONFIG (44)
128148 +#define OPCODE_COMMON_SET_VLD_CONFIG (45)
128149 +#define OPCODE_COMMON_GET_VLD_CONFIG (46)
128150 +#define OPCODE_COMMON_GET_PORT_EQUALIZATION (47)
128151 +#define OPCODE_COMMON_SET_PORT_EQUALIZATION (48)
128152 +#define OPCODE_COMMON_RED_CONFIG (49)
128153 +
128154 +
128155 +
128156 +/*
128157 + * --- ETH_SUBSYSTEM_OPCODES ---
128158 + * These opcodes are used for configuring the Ethernet interfaces. These
128159 + * opcodes all use the FWCMD_SUBSYSTEM_ETH subsystem code.
128160 + */
128161 +#define OPCODE_ETH_RSS_CONFIG (1)
128162 +#define OPCODE_ETH_ACPI_CONFIG (2)
128163 +#define SUBSYSTEM_ETH_RSS_CONFIG (3)
128164 +#define SUBSYSTEM_ETH_ACPI_CONFIG (3)
128165 +#define OPCODE_ETH_PROMISCUOUS (3)
128166 +#define SUBSYSTEM_ETH_PROMISCUOUS (3)
128167 +#define SUBSYSTEM_ETH_GET_STATISTICS (3)
128168 +#define SUBSYSTEM_ETH_GET_RX_FRAG_SIZE (3)
128169 +#define SUBSYSTEM_ETH_SET_RX_FRAG_SIZE (3)
128170 +#define OPCODE_ETH_GET_STATISTICS (4)
128171 +#define OPCODE_ETH_GET_RX_FRAG_SIZE (5)
128172 +#define OPCODE_ETH_SET_RX_FRAG_SIZE (6)
128173 +
128174 +
128175 +
128176 +
128177 +
128178 +/*
128179 + * --- MCC_STATUS_CODE ---
128180 + * These are the global status codes used by all subsystems
128181 + */
128182 +#define MCC_STATUS_SUCCESS (0) /* Indicates a successful
128183 + completion of the command */
128184 +#define MCC_STATUS_INSUFFICIENT_PRIVILEGES (1) /* The client does not have
128185 + sufficient privileges to
128186 + execute the command */
128187 +#define MCC_STATUS_INVALID_PARAMETER (2) /* A parameter in the command
128188 + was invalid. The extended
128189 + status contains the index
128190 + of the parameter */
128191 +#define MCC_STATUS_INSUFFICIENT_RESOURCES (3) /* There are insufficient
128192 + chip resources to execute
128193 + the command */
128194 +#define MCC_STATUS_QUEUE_FLUSHING (4) /* The command is completing
128195 + because the queue was
128196 + getting flushed */
128197 +#define MCC_STATUS_DMA_FAILED (5) /* The command is completing
128198 + with a DMA error */
128199 +
128200 +/*
128201 + * --- MGMT_ERROR_CODES ---
128202 + * Error Codes returned in the status field of the FWCMD response header
128203 + */
128204 +#define MGMT_STATUS_SUCCESS (0) /* The FWCMD completed
128205 + without errors */
128206 +#define MGMT_STATUS_FAILED (1) /* Error status in the Status
128207 + field of the
128208 + struct FWCMD_RESPONSE_HEADER */
128209 +#define MGMT_STATUS_ILLEGAL_REQUEST (2) /* Invalid FWCMD opcode */
128210 +#define MGMT_STATUS_ILLEGAL_FIELD (3) /* Invalid parameter in
128211 + the FWCMD payload */
128212 +
128213 +#endif /* __fwcmd_opcodes_amap_h__ */
128214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/fwcmd_types_bmap.h linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_types_bmap.h
128215 --- linux-2.6.29.owrt/drivers/staging/benet/fwcmd_types_bmap.h 1970-01-01 01:00:00.000000000 +0100
128216 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/fwcmd_types_bmap.h 2009-05-10 23:48:29.000000000 +0200
128217 @@ -0,0 +1,29 @@
128218 +/*
128219 + * Copyright (C) 2005 - 2008 ServerEngines
128220 + * All rights reserved.
128221 + *
128222 + * This program is free software; you can redistribute it and/or
128223 + * modify it under the terms of the GNU General Public License version 2
128224 + * as published by the Free Software Foundation. The full GNU General
128225 + * Public License is included in this distribution in the file called COPYING.
128226 + *
128227 + * Contact Information:
128228 + * linux-drivers@serverengines.com
128229 + *
128230 + * ServerEngines
128231 + * 209 N. Fair Oaks Ave
128232 + * Sunnyvale, CA 94085
128233 + */
128234 +/*
128235 + * Autogenerated by srcgen version: 0127
128236 + */
128237 +#ifndef __fwcmd_types_bmap_h__
128238 +#define __fwcmd_types_bmap_h__
128239 +
128240 +/* MAC address format */
128241 +struct MAC_ADDRESS_FORMAT {
128242 + u16 SizeOfStructure;
128243 + u8 MACAddress[6];
128244 +} __packed;
128245 +
128246 +#endif /* __fwcmd_types_bmap_h__ */
128247 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/host_struct.h linux-2.6.29-rc3.owrt/drivers/staging/benet/host_struct.h
128248 --- linux-2.6.29.owrt/drivers/staging/benet/host_struct.h 1970-01-01 01:00:00.000000000 +0100
128249 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/host_struct.h 2009-05-10 23:48:29.000000000 +0200
128250 @@ -0,0 +1,182 @@
128251 +/*
128252 + * Copyright (C) 2005 - 2008 ServerEngines
128253 + * All rights reserved.
128254 + *
128255 + * This program is free software; you can redistribute it and/or
128256 + * modify it under the terms of the GNU General Public License version 2
128257 + * as published by the Free Software Foundation. The full GNU General
128258 + * Public License is included in this distribution in the file called COPYING.
128259 + *
128260 + * Contact Information:
128261 + * linux-drivers@serverengines.com
128262 + *
128263 + * ServerEngines
128264 + * 209 N. Fair Oaks Ave
128265 + * Sunnyvale, CA 94085
128266 + */
128267 +/*
128268 + * Autogenerated by srcgen version: 0127
128269 + */
128270 +#ifndef __host_struct_amap_h__
128271 +#define __host_struct_amap_h__
128272 +#include "be_cm.h"
128273 +#include "be_common.h"
128274 +#include "descriptors.h"
128275 +
128276 +/* --- EQ_COMPLETION_MAJOR_CODE_ENUM --- */
128277 +#define EQ_MAJOR_CODE_COMPLETION (0) /* Completion event on a */
128278 + /* qcompletion ueue. */
128279 +#define EQ_MAJOR_CODE_ETH (1) /* Affiliated Ethernet Event. */
128280 +#define EQ_MAJOR_CODE_RESERVED (2) /* Reserved */
128281 +#define EQ_MAJOR_CODE_RDMA (3) /* Affiliated RDMA Event. */
128282 +#define EQ_MAJOR_CODE_ISCSI (4) /* Affiliated ISCSI Event */
128283 +#define EQ_MAJOR_CODE_UNAFFILIATED (5) /* Unaffiliated Event */
128284 +
128285 +/* --- EQ_COMPLETION_MINOR_CODE_ENUM --- */
128286 +#define EQ_MINOR_CODE_COMPLETION (0) /* Completion event on a */
128287 + /* completion queue. */
128288 +#define EQ_MINOR_CODE_OTHER (1) /* Other Event (TBD). */
128289 +
128290 +/* Queue Entry Definition for all 4 byte event queue types. */
128291 +struct BE_EQ_ENTRY_AMAP {
128292 + u8 Valid; /* DWORD 0 */
128293 + u8 MajorCode[3]; /* DWORD 0 */
128294 + u8 MinorCode[12]; /* DWORD 0 */
128295 + u8 ResourceID[16]; /* DWORD 0 */
128296 +} __packed;
128297 +struct EQ_ENTRY_AMAP {
128298 + u32 dw[1];
128299 +};
128300 +
128301 +/*
128302 + * --- ETH_EVENT_CODE ---
128303 + * These codes are returned by the MPU when one of these events has occurred,
128304 + * and the event is configured to report to an Event Queue when an event
128305 + * is detected.
128306 + */
128307 +#define ETH_EQ_LINK_STATUS (0) /* Link status change event */
128308 + /* detected. */
128309 +#define ETH_EQ_WATERMARK (1) /* watermark event detected. */
128310 +#define ETH_EQ_MAGIC_PKT (2) /* magic pkt event detected. */
128311 +#define ETH_EQ_ACPI_PKT0 (3) /* ACPI interesting packet */
128312 + /* detected. */
128313 +#define ETH_EQ_ACPI_PKT1 (3) /* ACPI interesting packet */
128314 + /* detected. */
128315 +#define ETH_EQ_ACPI_PKT2 (3) /* ACPI interesting packet */
128316 + /* detected. */
128317 +#define ETH_EQ_ACPI_PKT3 (3) /* ACPI interesting packet */
128318 + /* detected. */
128319 +
128320 +/*
128321 + * --- ETH_TX_COMPL_STATUS_ENUM ---
128322 + * Status codes contained in Ethernet TX completion descriptors.
128323 + */
128324 +#define ETH_COMP_VALID (0)
128325 +#define ETH_COMP_ERROR (1)
128326 +#define ETH_COMP_INVALID (15)
128327 +
128328 +/*
128329 + * --- ETH_TX_COMPL_PORT_ENUM ---
128330 + * Port indicator contained in Ethernet TX completion descriptors.
128331 + */
128332 +#define ETH_COMP_PORT0 (0)
128333 +#define ETH_COMP_PORT1 (1)
128334 +#define ETH_COMP_MGMT (2)
128335 +
128336 +/*
128337 + * --- ETH_TX_COMPL_CT_ENUM ---
128338 + * Completion type indicator contained in Ethernet TX completion descriptors.
128339 + */
128340 +#define ETH_COMP_ETH (0)
128341 +
128342 +/*
128343 + * Work request block that the driver issues to the chip for
128344 + * Ethernet transmissions. All control fields must be valid in each WRB for
128345 + * a message. The controller, as specified by the flags, optionally writes
128346 + * an entry to the Completion Ring and generate an event.
128347 + */
128348 +struct BE_ETH_WRB_AMAP {
128349 + u8 frag_pa_hi[32]; /* DWORD 0 */
128350 + u8 frag_pa_lo[32]; /* DWORD 1 */
128351 + u8 complete; /* DWORD 2 */
128352 + u8 event; /* DWORD 2 */
128353 + u8 crc; /* DWORD 2 */
128354 + u8 forward; /* DWORD 2 */
128355 + u8 ipsec; /* DWORD 2 */
128356 + u8 mgmt; /* DWORD 2 */
128357 + u8 ipcs; /* DWORD 2 */
128358 + u8 udpcs; /* DWORD 2 */
128359 + u8 tcpcs; /* DWORD 2 */
128360 + u8 lso; /* DWORD 2 */
128361 + u8 last; /* DWORD 2 */
128362 + u8 vlan; /* DWORD 2 */
128363 + u8 dbg[3]; /* DWORD 2 */
128364 + u8 hash_val[3]; /* DWORD 2 */
128365 + u8 lso_mss[14]; /* DWORD 2 */
128366 + u8 frag_len[16]; /* DWORD 3 */
128367 + u8 vlan_tag[16]; /* DWORD 3 */
128368 +} __packed;
128369 +struct ETH_WRB_AMAP {
128370 + u32 dw[4];
128371 +};
128372 +
128373 +/* This is an Ethernet transmit completion descriptor */
128374 +struct BE_ETH_TX_COMPL_AMAP {
128375 + u8 user_bytes[16]; /* DWORD 0 */
128376 + u8 nwh_bytes[8]; /* DWORD 0 */
128377 + u8 lso; /* DWORD 0 */
128378 + u8 rsvd0[7]; /* DWORD 0 */
128379 + u8 wrb_index[16]; /* DWORD 1 */
128380 + u8 ct[2]; /* DWORD 1 */
128381 + u8 port[2]; /* DWORD 1 */
128382 + u8 rsvd1[8]; /* DWORD 1 */
128383 + u8 status[4]; /* DWORD 1 */
128384 + u8 rsvd2[16]; /* DWORD 2 */
128385 + u8 ringid[11]; /* DWORD 2 */
128386 + u8 hash_val[4]; /* DWORD 2 */
128387 + u8 valid; /* DWORD 2 */
128388 + u8 rsvd3[32]; /* DWORD 3 */
128389 +} __packed;
128390 +struct ETH_TX_COMPL_AMAP {
128391 + u32 dw[4];
128392 +};
128393 +
128394 +/* Ethernet Receive Buffer descriptor */
128395 +struct BE_ETH_RX_D_AMAP {
128396 + u8 fragpa_hi[32]; /* DWORD 0 */
128397 + u8 fragpa_lo[32]; /* DWORD 1 */
128398 +} __packed;
128399 +struct ETH_RX_D_AMAP {
128400 + u32 dw[2];
128401 +};
128402 +
128403 +/* This is an Ethernet Receive Completion Descriptor */
128404 +struct BE_ETH_RX_COMPL_AMAP {
128405 + u8 vlan_tag[16]; /* DWORD 0 */
128406 + u8 pktsize[14]; /* DWORD 0 */
128407 + u8 port; /* DWORD 0 */
128408 + u8 rsvd0; /* DWORD 0 */
128409 + u8 err; /* DWORD 1 */
128410 + u8 rsshp; /* DWORD 1 */
128411 + u8 ipf; /* DWORD 1 */
128412 + u8 tcpf; /* DWORD 1 */
128413 + u8 udpf; /* DWORD 1 */
128414 + u8 ipcksm; /* DWORD 1 */
128415 + u8 tcpcksm; /* DWORD 1 */
128416 + u8 udpcksm; /* DWORD 1 */
128417 + u8 macdst[6]; /* DWORD 1 */
128418 + u8 vtp; /* DWORD 1 */
128419 + u8 vtm; /* DWORD 1 */
128420 + u8 fragndx[10]; /* DWORD 1 */
128421 + u8 ct[2]; /* DWORD 1 */
128422 + u8 ipsec; /* DWORD 1 */
128423 + u8 numfrags[3]; /* DWORD 1 */
128424 + u8 rsvd1[31]; /* DWORD 2 */
128425 + u8 valid; /* DWORD 2 */
128426 + u8 rsshash[32]; /* DWORD 3 */
128427 +} __packed;
128428 +struct ETH_RX_COMPL_AMAP {
128429 + u32 dw[4];
128430 +};
128431 +
128432 +#endif /* __host_struct_amap_h__ */
128433 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/hwlib.h linux-2.6.29-rc3.owrt/drivers/staging/benet/hwlib.h
128434 --- linux-2.6.29.owrt/drivers/staging/benet/hwlib.h 1970-01-01 01:00:00.000000000 +0100
128435 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/hwlib.h 2009-05-10 23:48:29.000000000 +0200
128436 @@ -0,0 +1,830 @@
128437 +/*
128438 + * Copyright (C) 2005 - 2008 ServerEngines
128439 + * All rights reserved.
128440 + *
128441 + * This program is free software; you can redistribute it and/or
128442 + * modify it under the terms of the GNU General Public License version 2
128443 + * as published by the Free Software Foundation. The full GNU General
128444 + * Public License is included in this distribution in the file called COPYING.
128445 + *
128446 + * Contact Information:
128447 + * linux-drivers@serverengines.com
128448 + *
128449 + * ServerEngines
128450 + * 209 N. Fair Oaks Ave
128451 + * Sunnyvale, CA 94085
128452 + */
128453 +#ifndef __hwlib_h__
128454 +#define __hwlib_h__
128455 +
128456 +#include <linux/module.h>
128457 +#include <linux/io.h>
128458 +#include <linux/list.h>
128459 +#include <linux/spinlock.h>
128460 +
128461 +#include "regmap.h" /* srcgen array map output */
128462 +
128463 +#include "asyncmesg.h"
128464 +#include "fwcmd_opcodes.h"
128465 +#include "post_codes.h"
128466 +#include "fwcmd_mcc.h"
128467 +
128468 +#include "fwcmd_types_bmap.h"
128469 +#include "fwcmd_common_bmap.h"
128470 +#include "fwcmd_eth_bmap.h"
128471 +#include "bestatus.h"
128472 +/*
128473 + *
128474 + * Macros for reading/writing a protection domain or CSR registers
128475 + * in BladeEngine.
128476 + */
128477 +#define PD_READ(fo, field) ioread32((fo)->db_va + \
128478 + offsetof(struct BE_PROTECTION_DOMAIN_DBMAP_AMAP, field)/8)
128479 +
128480 +#define PD_WRITE(fo, field, val) iowrite32(val, (fo)->db_va + \
128481 + offsetof(struct BE_PROTECTION_DOMAIN_DBMAP_AMAP, field)/8)
128482 +
128483 +#define CSR_READ(fo, field) ioread32((fo)->csr_va + \
128484 + offsetof(struct BE_BLADE_ENGINE_CSRMAP_AMAP, field)/8)
128485 +
128486 +#define CSR_WRITE(fo, field, val) iowrite32(val, (fo)->csr_va + \
128487 + offsetof(struct BE_BLADE_ENGINE_CSRMAP_AMAP, field)/8)
128488 +
128489 +#define PCICFG0_READ(fo, field) ioread32((fo)->pci_va + \
128490 + offsetof(struct BE_PCICFG0_CSRMAP_AMAP, field)/8)
128491 +
128492 +#define PCICFG0_WRITE(fo, field, val) iowrite32(val, (fo)->pci_va + \
128493 + offsetof(struct BE_PCICFG0_CSRMAP_AMAP, field)/8)
128494 +
128495 +#define PCICFG1_READ(fo, field) ioread32((fo)->pci_va + \
128496 + offsetof(struct BE_PCICFG1_CSRMAP_AMAP, field)/8)
128497 +
128498 +#define PCICFG1_WRITE(fo, field, val) iowrite32(val, (fo)->pci_va + \
128499 + offsetof(struct BE_PCICFG1_CSRMAP_AMAP, field)/8)
128500 +
128501 +#ifdef BE_DEBUG
128502 +#define ASSERT(c) BUG_ON(!(c));
128503 +#else
128504 +#define ASSERT(c)
128505 +#endif
128506 +
128507 +/* debug levels */
128508 +enum BE_DEBUG_LEVELS {
128509 + DL_ALWAYS = 0, /* cannot be masked */
128510 + DL_ERR = 0x1, /* errors that should never happen */
128511 + DL_WARN = 0x2, /* something questionable.
128512 + recoverable errors */
128513 + DL_NOTE = 0x4, /* infrequent, important debug info */
128514 + DL_INFO = 0x8, /* debug information */
128515 + DL_VERBOSE = 0x10, /* detailed info, such as buffer traces */
128516 + BE_DL_MIN_VALUE = 0x1, /* this is the min value used */
128517 + BE_DL_MAX_VALUE = 0x80 /* this is the higheset value used */
128518 +} ;
128519 +
128520 +extern unsigned int trace_level;
128521 +
128522 +#define TRACE(lm, fmt, args...) { \
128523 + if (trace_level & lm) { \
128524 + printk(KERN_NOTICE "BE: %s:%d \n" fmt, \
128525 + __FILE__ , __LINE__ , ## args); \
128526 + } \
128527 + }
128528 +
128529 +static inline unsigned int be_trace_set_level(unsigned int level)
128530 +{
128531 + unsigned int old_level = trace_level;
128532 + trace_level = level;
128533 + return old_level;
128534 +}
128535 +
128536 +#define be_trace_get_level() trace_level
128537 +/*
128538 + * Returns number of pages spanned by the size of data
128539 + * starting at the given address.
128540 + */
128541 +#define PAGES_SPANNED(_address, _size) \
128542 + ((u32)((((size_t)(_address) & (PAGE_SIZE - 1)) + \
128543 + (_size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
128544 +/* Byte offset into the page corresponding to given address */
128545 +#define OFFSET_IN_PAGE(_addr_) ((size_t)(_addr_) & (PAGE_SIZE-1))
128546 +
128547 +/*
128548 + * circular subtract.
128549 + * Returns a - b assuming a circular number system, where a and b are
128550 + * in range (0, maxValue-1). If a==b, zero is returned so the
128551 + * highest value possible with this subtraction is maxValue-1.
128552 + */
128553 +static inline u32 be_subc(u32 a, u32 b, u32 max)
128554 +{
128555 + ASSERT(a <= max && b <= max);
128556 + ASSERT(max > 0);
128557 + return a >= b ? (a - b) : (max - b + a);
128558 +}
128559 +
128560 +static inline u32 be_addc(u32 a, u32 b, u32 max)
128561 +{
128562 + ASSERT(a < max);
128563 + ASSERT(max > 0);
128564 + return (max - a > b) ? (a + b) : (b + a - max);
128565 +}
128566 +
128567 +/* descriptor for a physically contiguous memory used for ring */
128568 +struct ring_desc {
128569 + u32 length; /* length in bytes */
128570 + void *va; /* virtual address */
128571 + u64 pa; /* bus address */
128572 +} ;
128573 +
128574 +/*
128575 + * This structure stores information about a ring shared between hardware
128576 + * and software. Each ring is allocated by the driver in the uncached
128577 + * extension and mapped into BladeEngine's unified table.
128578 + */
128579 +struct mp_ring {
128580 + u32 pages; /* queue size in pages */
128581 + u32 id; /* queue id assigned by beklib */
128582 + u32 num; /* number of elements in queue */
128583 + u32 cidx; /* consumer index */
128584 + u32 pidx; /* producer index -- not used by most rings */
128585 + u32 itemSize; /* size in bytes of one object */
128586 +
128587 + void *va; /* The virtual address of the ring.
128588 + This should be last to allow 32 & 64
128589 + bit debugger extensions to work. */
128590 +} ;
128591 +
128592 +/*----------- amap bit filed get / set macros and functions -----*/
128593 +/*
128594 + * Structures defined in the map header files (under fw/amap/) with names
128595 + * in the format BE_<name>_AMAP are pseudo structures with members
128596 + * of type u8. These structures are templates that are used in
128597 + * conjuntion with the structures with names in the format
128598 + * <name>_AMAP to calculate the bit masks and bit offsets to get or set
128599 + * bit fields in structures. The structures <name>_AMAP are arrays
128600 + * of 32 bits words and have the correct size. The following macros
128601 + * provide convenient ways to get and set the various members
128602 + * in the structures without using strucctures with bit fields.
128603 + * Always use the macros AMAP_GET_BITS_PTR and AMAP_SET_BITS_PTR
128604 + * macros to extract and set various members.
128605 + */
128606 +
128607 +/*
128608 + * Returns the a bit mask for the register that is NOT shifted into location.
128609 + * That means return values always look like: 0x1, 0xFF, 0x7FF, etc...
128610 + */
128611 +static inline u32 amap_mask(u32 bit_size)
128612 +{
128613 + return bit_size == 32 ? 0xFFFFFFFF : (1 << bit_size) - 1;
128614 +}
128615 +
128616 +#define AMAP_BIT_MASK(_struct_, field) \
128617 + amap_mask(AMAP_BIT_SIZE(_struct_, field))
128618 +
128619 +/*
128620 + * non-optimized set bits function. First clears the bits and then assigns them.
128621 + * This does not require knowledge of the particular DWORD you are setting.
128622 + * e.g. AMAP_SET_BITS_PTR (struct, field1, &contextMemory, 123);
128623 + */
128624 +static inline void
128625 +amap_set(void *ptr, u32 dw_offset, u32 mask, u32 offset, u32 value)
128626 +{
128627 + u32 *dw = (u32 *)ptr;
128628 + *(dw + dw_offset) &= ~(mask << offset);
128629 + *(dw + dw_offset) |= (mask & value) << offset;
128630 +}
128631 +
128632 +#define AMAP_SET_BITS_PTR(_struct_, field, _structPtr_, val) \
128633 + amap_set(_structPtr_, AMAP_WORD_OFFSET(_struct_, field),\
128634 + AMAP_BIT_MASK(_struct_, field), \
128635 + AMAP_BIT_OFFSET(_struct_, field), val)
128636 +/*
128637 + * Non-optimized routine that gets the bits without knowing the correct DWORD.
128638 + * e.g. fieldValue = AMAP_GET_BITS_PTR (struct, field1, &contextMemory);
128639 + */
128640 +static inline u32
128641 +amap_get(void *ptr, u32 dw_offset, u32 mask, u32 offset)
128642 +{
128643 + u32 *dw = (u32 *)ptr;
128644 + return mask & (*(dw + dw_offset) >> offset);
128645 +}
128646 +#define AMAP_GET_BITS_PTR(_struct_, field, _structPtr_) \
128647 + amap_get(_structPtr_, AMAP_WORD_OFFSET(_struct_, field), \
128648 + AMAP_BIT_MASK(_struct_, field), \
128649 + AMAP_BIT_OFFSET(_struct_, field))
128650 +
128651 +/* Returns 0-31 representing bit offset within a DWORD of a bitfield. */
128652 +#define AMAP_BIT_OFFSET(_struct_, field) \
128653 + (offsetof(struct BE_ ## _struct_ ## _AMAP, field) % 32)
128654 +
128655 +/* Returns 0-n representing DWORD offset of bitfield within the structure. */
128656 +#define AMAP_WORD_OFFSET(_struct_, field) \
128657 + (offsetof(struct BE_ ## _struct_ ## _AMAP, field)/32)
128658 +
128659 +/* Returns size of bitfield in bits. */
128660 +#define AMAP_BIT_SIZE(_struct_, field) \
128661 + sizeof(((struct BE_ ## _struct_ ## _AMAP*)0)->field)
128662 +
128663 +struct be_mcc_wrb_response_copy {
128664 + u16 length; /* bytes in response */
128665 + u16 fwcmd_offset; /* offset within the wrb of the response */
128666 + void *va; /* user's va to copy response into */
128667 +
128668 +} ;
128669 +typedef void (*mcc_wrb_cqe_callback) (void *context, int status,
128670 + struct MCC_WRB_AMAP *optional_wrb);
128671 +struct be_mcc_wrb_context {
128672 +
128673 + mcc_wrb_cqe_callback internal_cb; /* Function to call on
128674 + completion */
128675 + void *internal_cb_context; /* Parameter to pass
128676 + to completion function */
128677 +
128678 + mcc_wrb_cqe_callback cb; /* Function to call on completion */
128679 + void *cb_context; /* Parameter to pass to completion function */
128680 +
128681 + int *users_final_status; /* pointer to a local
128682 + variable for synchronous
128683 + commands */
128684 + struct MCC_WRB_AMAP *wrb; /* pointer to original wrb for embedded
128685 + commands only */
128686 + struct list_head next; /* links context structs together in
128687 + free list */
128688 +
128689 + struct be_mcc_wrb_response_copy copy; /* Optional parameters to copy
128690 + embedded response to user's va */
128691 +
128692 +#if defined(BE_DEBUG)
128693 + u16 subsystem, opcode; /* Track this FWCMD for debug builds. */
128694 + struct MCC_WRB_AMAP *ring_wrb;
128695 + u32 consumed_count;
128696 +#endif
128697 +} ;
128698 +
128699 +/*
128700 + Represents a function object for network or storage. This
128701 + is used to manage per-function resources like MCC CQs, etc.
128702 +*/
128703 +struct be_function_object {
128704 +
128705 + u32 magic; /*!< magic for detecting memory corruption. */
128706 +
128707 + /* PCI BAR mapped addresses */
128708 + u8 __iomem *csr_va; /* CSR */
128709 + u8 __iomem *db_va; /* Door Bell */
128710 + u8 __iomem *pci_va; /* PCI config space */
128711 + u32 emulate; /* if set, MPU is not available.
128712 + Emulate everything. */
128713 + u32 pend_queue_driving; /* if set, drive the queued WRBs
128714 + after releasing the WRB lock */
128715 +
128716 + spinlock_t post_lock; /* lock for verifying one thread posting wrbs */
128717 + spinlock_t cq_lock; /* lock for verifying one thread
128718 + processing cq */
128719 + spinlock_t mcc_context_lock; /* lock for protecting mcc
128720 + context free list */
128721 + unsigned long post_irq;
128722 + unsigned long cq_irq;
128723 +
128724 + u32 type;
128725 + u32 pci_function_number;
128726 +
128727 + struct be_mcc_object *mcc; /* mcc rings. */
128728 +
128729 + struct {
128730 + struct MCC_MAILBOX_AMAP *va; /* VA to the mailbox */
128731 + u64 pa; /* PA to the mailbox */
128732 + u32 length; /* byte length of mailbox */
128733 +
128734 + /* One default context struct used for posting at
128735 + * least one MCC_WRB
128736 + */
128737 + struct be_mcc_wrb_context default_context;
128738 + bool default_context_allocated;
128739 + } mailbox;
128740 +
128741 + struct {
128742 +
128743 + /* Wake on lans configured. */
128744 + u32 wol_bitmask; /* bits 0,1,2,3 are set if
128745 + corresponding index is enabled */
128746 + } config;
128747 +
128748 +
128749 + struct BE_FIRMWARE_CONFIG fw_config;
128750 +} ;
128751 +
128752 +/*
128753 + Represents an Event Queue
128754 +*/
128755 +struct be_eq_object {
128756 + u32 magic;
128757 + atomic_t ref_count;
128758 +
128759 + struct be_function_object *parent_function;
128760 +
128761 + struct list_head eq_list;
128762 + struct list_head cq_list_head;
128763 +
128764 + u32 eq_id;
128765 + void *cb_context;
128766 +
128767 +} ;
128768 +
128769 +/*
128770 + Manages a completion queue
128771 +*/
128772 +struct be_cq_object {
128773 + u32 magic;
128774 + atomic_t ref_count;
128775 +
128776 + struct be_function_object *parent_function;
128777 + struct be_eq_object *eq_object;
128778 +
128779 + struct list_head cq_list;
128780 + struct list_head cqlist_for_eq;
128781 +
128782 + void *va;
128783 + u32 num_entries;
128784 +
128785 + void *cb_context;
128786 +
128787 + u32 cq_id;
128788 +
128789 +} ;
128790 +
128791 +/*
128792 + Manages an ethernet send queue
128793 +*/
128794 +struct be_ethsq_object {
128795 + u32 magic;
128796 +
128797 + struct list_head list;
128798 +
128799 + struct be_function_object *parent_function;
128800 + struct be_cq_object *cq_object;
128801 + u32 bid;
128802 +
128803 +} ;
128804 +
128805 +/*
128806 +@brief
128807 + Manages an ethernet receive queue
128808 +*/
128809 +struct be_ethrq_object {
128810 + u32 magic;
128811 + struct list_head list;
128812 + struct be_function_object *parent_function;
128813 + u32 rid;
128814 + struct be_cq_object *cq_object;
128815 + struct be_cq_object *rss_cq_object[4];
128816 +
128817 +} ;
128818 +
128819 +/*
128820 + Manages an MCC
128821 +*/
128822 +typedef void (*mcc_async_event_callback) (void *context, u32 event_code,
128823 + void *event);
128824 +struct be_mcc_object {
128825 + u32 magic;
128826 +
128827 + struct be_function_object *parent_function;
128828 + struct list_head mcc_list;
128829 +
128830 + struct be_cq_object *cq_object;
128831 +
128832 + /* Async event callback for MCC CQ. */
128833 + mcc_async_event_callback async_cb;
128834 + void *async_context;
128835 +
128836 + struct {
128837 + struct be_mcc_wrb_context *base;
128838 + u32 num;
128839 + struct list_head list_head;
128840 + } wrb_context;
128841 +
128842 + struct {
128843 + struct ring_desc *rd;
128844 + struct mp_ring ring;
128845 + } sq;
128846 +
128847 + struct {
128848 + struct mp_ring ring;
128849 + } cq;
128850 +
128851 + u32 processing; /* flag indicating that one thread
128852 + is processing CQ */
128853 + u32 rearm; /* doorbell rearm setting to make
128854 + sure the active processing thread */
128855 + /* rearms the CQ if any of the threads requested it. */
128856 +
128857 + struct list_head backlog;
128858 + u32 backlog_length;
128859 + u32 driving_backlog;
128860 + u32 consumed_index;
128861 +
128862 +} ;
128863 +
128864 +
128865 +/* Queue context header -- the required software information for
128866 + * queueing a WRB.
128867 + */
128868 +struct be_queue_driver_context {
128869 + mcc_wrb_cqe_callback internal_cb; /* Function to call on
128870 + completion */
128871 + void *internal_cb_context; /* Parameter to pass
128872 + to completion function */
128873 +
128874 + mcc_wrb_cqe_callback cb; /* Function to call on completion */
128875 + void *cb_context; /* Parameter to pass to completion function */
128876 +
128877 + struct be_mcc_wrb_response_copy copy; /* Optional parameters to copy
128878 + embedded response to user's va */
128879 + void *optional_fwcmd_va;
128880 + struct list_head list;
128881 + u32 bytes;
128882 +} ;
128883 +
128884 +/*
128885 + * Common MCC WRB header that all commands require.
128886 + */
128887 +struct be_mcc_wrb_header {
128888 + u8 rsvd[offsetof(struct BE_MCC_WRB_AMAP, payload)/8];
128889 +} ;
128890 +
128891 +/*
128892 + * All non embedded commands supported by hwlib functions only allow
128893 + * 1 SGE. This queue context handles them all.
128894 + */
128895 +struct be_nonembedded_q_ctxt {
128896 + struct be_queue_driver_context context;
128897 + struct be_mcc_wrb_header wrb_header;
128898 + struct MCC_SGE_AMAP sge[1];
128899 +} ;
128900 +
128901 +/*
128902 + * ------------------------------------------------------------------------
128903 + * This section contains the specific queue struct for each command.
128904 + * The user could always provide a be_generic_q_ctxt but this is a
128905 + * rather large struct. By using the specific struct, memory consumption
128906 + * can be reduced.
128907 + * ------------------------------------------------------------------------
128908 + */
128909 +
128910 +struct be_link_status_q_ctxt {
128911 + struct be_queue_driver_context context;
128912 + struct be_mcc_wrb_header wrb_header;
128913 + struct FWCMD_COMMON_NTWK_LINK_STATUS_QUERY fwcmd;
128914 +} ;
128915 +
128916 +struct be_multicast_q_ctxt {
128917 + struct be_queue_driver_context context;
128918 + struct be_mcc_wrb_header wrb_header;
128919 + struct FWCMD_COMMON_NTWK_MULTICAST_SET fwcmd;
128920 +} ;
128921 +
128922 +
128923 +struct be_vlan_q_ctxt {
128924 + struct be_queue_driver_context context;
128925 + struct be_mcc_wrb_header wrb_header;
128926 + struct FWCMD_COMMON_NTWK_VLAN_CONFIG fwcmd;
128927 +} ;
128928 +
128929 +struct be_promiscuous_q_ctxt {
128930 + struct be_queue_driver_context context;
128931 + struct be_mcc_wrb_header wrb_header;
128932 + struct FWCMD_ETH_PROMISCUOUS fwcmd;
128933 +} ;
128934 +
128935 +struct be_force_failover_q_ctxt {
128936 + struct be_queue_driver_context context;
128937 + struct be_mcc_wrb_header wrb_header;
128938 + struct FWCMD_COMMON_FORCE_FAILOVER fwcmd;
128939 +} ;
128940 +
128941 +
128942 +struct be_rxf_filter_q_ctxt {
128943 + struct be_queue_driver_context context;
128944 + struct be_mcc_wrb_header wrb_header;
128945 + struct FWCMD_COMMON_NTWK_RX_FILTER fwcmd;
128946 +} ;
128947 +
128948 +struct be_eq_modify_delay_q_ctxt {
128949 + struct be_queue_driver_context context;
128950 + struct be_mcc_wrb_header wrb_header;
128951 + struct FWCMD_COMMON_MODIFY_EQ_DELAY fwcmd;
128952 +} ;
128953 +
128954 +/*
128955 + * The generic context is the largest size that would be required.
128956 + * It is the software context plus an entire WRB.
128957 + */
128958 +struct be_generic_q_ctxt {
128959 + struct be_queue_driver_context context;
128960 + struct be_mcc_wrb_header wrb_header;
128961 + struct MCC_WRB_PAYLOAD_AMAP payload;
128962 +} ;
128963 +
128964 +/*
128965 + * Types for the BE_QUEUE_CONTEXT object.
128966 + */
128967 +#define BE_QUEUE_INVALID (0)
128968 +#define BE_QUEUE_LINK_STATUS (0xA006)
128969 +#define BE_QUEUE_ETH_STATS (0xA007)
128970 +#define BE_QUEUE_TPM_STATS (0xA008)
128971 +#define BE_QUEUE_TCP_STATS (0xA009)
128972 +#define BE_QUEUE_MULTICAST (0xA00A)
128973 +#define BE_QUEUE_VLAN (0xA00B)
128974 +#define BE_QUEUE_RSS (0xA00C)
128975 +#define BE_QUEUE_FORCE_FAILOVER (0xA00D)
128976 +#define BE_QUEUE_PROMISCUOUS (0xA00E)
128977 +#define BE_QUEUE_WAKE_ON_LAN (0xA00F)
128978 +#define BE_QUEUE_NOP (0xA010)
128979 +
128980 +/* --- BE_FUNCTION_ENUM --- */
128981 +#define BE_FUNCTION_TYPE_ISCSI (0)
128982 +#define BE_FUNCTION_TYPE_NETWORK (1)
128983 +#define BE_FUNCTION_TYPE_ARM (2)
128984 +
128985 +/* --- BE_ETH_TX_RING_TYPE_ENUM --- */
128986 +#define BE_ETH_TX_RING_TYPE_FORWARDING (1) /* Ether ring for forwarding */
128987 +#define BE_ETH_TX_RING_TYPE_STANDARD (2) /* Ether ring for sending */
128988 + /* network packets. */
128989 +#define BE_ETH_TX_RING_TYPE_BOUND (3) /* Ethernet ring for sending */
128990 + /* network packets, bound */
128991 + /* to a physical port. */
128992 +/*
128993 + * ----------------------------------------------------------------------
128994 + * API MACROS
128995 + * ----------------------------------------------------------------------
128996 + */
128997 +#define BE_FWCMD_NAME(_short_name_) struct FWCMD_##_short_name_
128998 +#define BE_OPCODE_NAME(_short_name_) OPCODE_##_short_name_
128999 +#define BE_SUBSYSTEM_NAME(_short_name_) SUBSYSTEM_##_short_name_
129000 +
129001 +
129002 +#define BE_PREPARE_EMBEDDED_FWCMD(_pfob_, _wrb_, _short_name_) \
129003 + ((BE_FWCMD_NAME(_short_name_) *) \
129004 + be_function_prepare_embedded_fwcmd(_pfob_, _wrb_, \
129005 + sizeof(BE_FWCMD_NAME(_short_name_)), \
129006 + FIELD_SIZEOF(BE_FWCMD_NAME(_short_name_), params.request), \
129007 + FIELD_SIZEOF(BE_FWCMD_NAME(_short_name_), params.response), \
129008 + BE_OPCODE_NAME(_short_name_), \
129009 + BE_SUBSYSTEM_NAME(_short_name_)));
129010 +
129011 +#define BE_PREPARE_NONEMBEDDED_FWCMD(_pfob_, _wrb_, _iva_, _ipa_, _short_name_)\
129012 + ((BE_FWCMD_NAME(_short_name_) *) \
129013 + be_function_prepare_nonembedded_fwcmd(_pfob_, _wrb_, (_iva_), (_ipa_), \
129014 + sizeof(BE_FWCMD_NAME(_short_name_)), \
129015 + FIELD_SIZEOF(BE_FWCMD_NAME(_short_name_), params.request), \
129016 + FIELD_SIZEOF(BE_FWCMD_NAME(_short_name_), params.response), \
129017 + BE_OPCODE_NAME(_short_name_), \
129018 + BE_SUBSYSTEM_NAME(_short_name_)));
129019 +
129020 +int be_function_object_create(u8 __iomem *csr_va, u8 __iomem *db_va,
129021 + u8 __iomem *pci_va, u32 function_type, struct ring_desc *mailbox_rd,
129022 + struct be_function_object *pfob);
129023 +
129024 +int be_function_object_destroy(struct be_function_object *pfob);
129025 +int be_function_cleanup(struct be_function_object *pfob);
129026 +
129027 +
129028 +int be_function_get_fw_version(struct be_function_object *pfob,
129029 + struct FWCMD_COMMON_GET_FW_VERSION_RESPONSE_PAYLOAD *fw_version,
129030 + mcc_wrb_cqe_callback cb, void *cb_context);
129031 +
129032 +
129033 +int be_eq_modify_delay(struct be_function_object *pfob,
129034 + u32 num_eq, struct be_eq_object **eq_array,
129035 + u32 *eq_delay_array, mcc_wrb_cqe_callback cb,
129036 + void *cb_context,
129037 + struct be_eq_modify_delay_q_ctxt *q_ctxt);
129038 +
129039 +
129040 +
129041 +int be_eq_create(struct be_function_object *pfob,
129042 + struct ring_desc *rd, u32 eqe_size, u32 num_entries,
129043 + u32 watermark, u32 timer_delay, struct be_eq_object *eq_object);
129044 +
129045 +int be_eq_destroy(struct be_eq_object *eq);
129046 +
129047 +int be_cq_create(struct be_function_object *pfob,
129048 + struct ring_desc *rd, u32 length,
129049 + bool solicited_eventable, bool no_delay,
129050 + u32 wm_thresh, struct be_eq_object *eq_object,
129051 + struct be_cq_object *cq_object);
129052 +
129053 +int be_cq_destroy(struct be_cq_object *cq);
129054 +
129055 +int be_mcc_ring_create(struct be_function_object *pfob,
129056 + struct ring_desc *rd, u32 length,
129057 + struct be_mcc_wrb_context *context_array,
129058 + u32 num_context_entries,
129059 + struct be_cq_object *cq, struct be_mcc_object *mcc);
129060 +int be_mcc_ring_destroy(struct be_mcc_object *mcc_object);
129061 +
129062 +int be_mcc_process_cq(struct be_mcc_object *mcc_object, bool rearm);
129063 +
129064 +int be_mcc_add_async_event_callback(struct be_mcc_object *mcc_object,
129065 + mcc_async_event_callback cb, void *cb_context);
129066 +
129067 +int be_pci_soft_reset(struct be_function_object *pfob);
129068 +
129069 +
129070 +int be_drive_POST(struct be_function_object *pfob);
129071 +
129072 +
129073 +int be_eth_sq_create(struct be_function_object *pfob,
129074 + struct ring_desc *rd, u32 length_in_bytes,
129075 + u32 type, u32 ulp, struct be_cq_object *cq_object,
129076 + struct be_ethsq_object *eth_sq);
129077 +
129078 +struct be_eth_sq_parameters {
129079 + u32 port;
129080 + u32 rsvd0[2];
129081 +} ;
129082 +
129083 +int be_eth_sq_create_ex(struct be_function_object *pfob,
129084 + struct ring_desc *rd, u32 length_in_bytes,
129085 + u32 type, u32 ulp, struct be_cq_object *cq_object,
129086 + struct be_eth_sq_parameters *ex_parameters,
129087 + struct be_ethsq_object *eth_sq);
129088 +int be_eth_sq_destroy(struct be_ethsq_object *eth_sq);
129089 +
129090 +int be_eth_set_flow_control(struct be_function_object *pfob,
129091 + bool txfc_enable, bool rxfc_enable);
129092 +
129093 +int be_eth_get_flow_control(struct be_function_object *pfob,
129094 + bool *txfc_enable, bool *rxfc_enable);
129095 +int be_eth_set_qos(struct be_function_object *pfob, u32 max_bps, u32 max_pps);
129096 +
129097 +int be_eth_get_qos(struct be_function_object *pfob, u32 *max_bps, u32 *max_pps);
129098 +
129099 +int be_eth_set_frame_size(struct be_function_object *pfob,
129100 + u32 *tx_frame_size, u32 *rx_frame_size);
129101 +
129102 +int be_eth_rq_create(struct be_function_object *pfob,
129103 + struct ring_desc *rd, struct be_cq_object *cq_object,
129104 + struct be_cq_object *bcmc_cq_object,
129105 + struct be_ethrq_object *eth_rq);
129106 +
129107 +int be_eth_rq_destroy(struct be_ethrq_object *eth_rq);
129108 +
129109 +int be_eth_rq_destroy_options(struct be_ethrq_object *eth_rq, bool flush,
129110 + mcc_wrb_cqe_callback cb, void *cb_context);
129111 +int be_eth_rq_set_frag_size(struct be_function_object *pfob,
129112 + u32 new_frag_size_bytes, u32 *actual_frag_size_bytes);
129113 +int be_eth_rq_get_frag_size(struct be_function_object *pfob,
129114 + u32 *frag_size_bytes);
129115 +
129116 +void *be_function_prepare_embedded_fwcmd(struct be_function_object *pfob,
129117 + struct MCC_WRB_AMAP *wrb,
129118 + u32 payload_length, u32 request_length,
129119 + u32 response_length, u32 opcode, u32 subsystem);
129120 +void *be_function_prepare_nonembedded_fwcmd(struct be_function_object *pfob,
129121 + struct MCC_WRB_AMAP *wrb, void *fwcmd_header_va, u64 fwcmd_header_pa,
129122 + u32 payload_length, u32 request_length, u32 response_length,
129123 + u32 opcode, u32 subsystem);
129124 +
129125 +
129126 +struct MCC_WRB_AMAP *
129127 +be_function_peek_mcc_wrb(struct be_function_object *pfob);
129128 +
129129 +int be_rxf_mac_address_read_write(struct be_function_object *pfob,
129130 + bool port1, bool mac1, bool mgmt,
129131 + bool write, bool permanent, u8 *mac_address,
129132 + mcc_wrb_cqe_callback cb,
129133 + void *cb_context);
129134 +
129135 +int be_rxf_multicast_config(struct be_function_object *pfob,
129136 + bool promiscuous, u32 num, u8 *mac_table,
129137 + mcc_wrb_cqe_callback cb,
129138 + void *cb_context,
129139 + struct be_multicast_q_ctxt *q_ctxt);
129140 +
129141 +int be_rxf_vlan_config(struct be_function_object *pfob,
129142 + bool promiscuous, u32 num, u16 *vlan_tag_array,
129143 + mcc_wrb_cqe_callback cb, void *cb_context,
129144 + struct be_vlan_q_ctxt *q_ctxt);
129145 +
129146 +
129147 +int be_rxf_link_status(struct be_function_object *pfob,
129148 + struct BE_LINK_STATUS *link_status,
129149 + mcc_wrb_cqe_callback cb,
129150 + void *cb_context,
129151 + struct be_link_status_q_ctxt *q_ctxt);
129152 +
129153 +
129154 +int be_rxf_query_eth_statistics(struct be_function_object *pfob,
129155 + struct FWCMD_ETH_GET_STATISTICS *va_for_fwcmd,
129156 + u64 pa_for_fwcmd, mcc_wrb_cqe_callback cb,
129157 + void *cb_context,
129158 + struct be_nonembedded_q_ctxt *q_ctxt);
129159 +
129160 +int be_rxf_promiscuous(struct be_function_object *pfob,
129161 + bool enable_port0, bool enable_port1,
129162 + mcc_wrb_cqe_callback cb, void *cb_context,
129163 + struct be_promiscuous_q_ctxt *q_ctxt);
129164 +
129165 +
129166 +int be_rxf_filter_config(struct be_function_object *pfob,
129167 + struct NTWK_RX_FILTER_SETTINGS *settings,
129168 + mcc_wrb_cqe_callback cb,
129169 + void *cb_context,
129170 + struct be_rxf_filter_q_ctxt *q_ctxt);
129171 +
129172 +/*
129173 + * ------------------------------------------------------
129174 + * internal functions used by hwlib
129175 + * ------------------------------------------------------
129176 + */
129177 +
129178 +
129179 +int be_function_ring_destroy(struct be_function_object *pfob,
129180 + u32 id, u32 ring_type, mcc_wrb_cqe_callback cb,
129181 + void *cb_context,
129182 + mcc_wrb_cqe_callback internal_cb,
129183 + void *internal_callback_context);
129184 +
129185 +int be_function_post_mcc_wrb(struct be_function_object *pfob,
129186 + struct MCC_WRB_AMAP *wrb,
129187 + struct be_generic_q_ctxt *q_ctxt,
129188 + mcc_wrb_cqe_callback cb, void *cb_context,
129189 + mcc_wrb_cqe_callback internal_cb,
129190 + void *internal_cb_context, void *optional_fwcmd_va,
129191 + struct be_mcc_wrb_response_copy *response_copy);
129192 +
129193 +int be_function_queue_mcc_wrb(struct be_function_object *pfob,
129194 + struct be_generic_q_ctxt *q_ctxt);
129195 +
129196 +/*
129197 + * ------------------------------------------------------
129198 + * MCC QUEUE
129199 + * ------------------------------------------------------
129200 + */
129201 +
129202 +int be_mpu_init_mailbox(struct be_function_object *pfob, struct ring_desc *rd);
129203 +
129204 +
129205 +struct MCC_WRB_AMAP *
129206 +_be_mpu_peek_ring_wrb(struct be_mcc_object *mcc, bool driving_queue);
129207 +
129208 +struct be_mcc_wrb_context *
129209 +_be_mcc_allocate_wrb_context(struct be_function_object *pfob);
129210 +
129211 +void _be_mcc_free_wrb_context(struct be_function_object *pfob,
129212 + struct be_mcc_wrb_context *context);
129213 +
129214 +int _be_mpu_post_wrb_mailbox(struct be_function_object *pfob,
129215 + struct MCC_WRB_AMAP *wrb, struct be_mcc_wrb_context *wrb_context);
129216 +
129217 +int _be_mpu_post_wrb_ring(struct be_mcc_object *mcc,
129218 + struct MCC_WRB_AMAP *wrb, struct be_mcc_wrb_context *wrb_context);
129219 +
129220 +void be_drive_mcc_wrb_queue(struct be_mcc_object *mcc);
129221 +
129222 +
129223 +/*
129224 + * ------------------------------------------------------
129225 + * Ring Sizes
129226 + * ------------------------------------------------------
129227 + */
129228 +static inline u32 be_ring_encoding_to_length(u32 encoding, u32 object_size)
129229 +{
129230 +
129231 + ASSERT(encoding != 1); /* 1 is rsvd */
129232 + ASSERT(encoding < 16);
129233 + ASSERT(object_size > 0);
129234 +
129235 + if (encoding == 0) /* 32k deep */
129236 + encoding = 16;
129237 +
129238 + return (1 << (encoding - 1)) * object_size;
129239 +}
129240 +
129241 +static inline
129242 +u32 be_ring_length_to_encoding(u32 length_in_bytes, u32 object_size)
129243 +{
129244 +
129245 + u32 count, encoding;
129246 +
129247 + ASSERT(object_size > 0);
129248 + ASSERT(length_in_bytes % object_size == 0);
129249 +
129250 + count = length_in_bytes / object_size;
129251 +
129252 + ASSERT(count > 1);
129253 + ASSERT(count <= 32 * 1024);
129254 + ASSERT(length_in_bytes <= 8 * PAGE_SIZE); /* max ring size in UT */
129255 +
129256 + encoding = __ilog2_u32(count) + 1;
129257 +
129258 + if (encoding == 16)
129259 + encoding = 0; /* 32k deep */
129260 +
129261 + return encoding;
129262 +}
129263 +
129264 +void be_rd_to_pa_list(struct ring_desc *rd, struct PHYS_ADDR *pa_list,
129265 + u32 max_num);
129266 +#endif /* __hwlib_h__ */
129267 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/benet/Kconfig
129268 --- linux-2.6.29.owrt/drivers/staging/benet/Kconfig 1970-01-01 01:00:00.000000000 +0100
129269 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/Kconfig 2009-05-10 23:48:29.000000000 +0200
129270 @@ -0,0 +1,7 @@
129271 +config BENET
129272 + tristate "ServerEngines 10Gb NIC - BladeEngine"
129273 + depends on PCI && INET
129274 + select INET_LRO
129275 + help
129276 + This driver implements the NIC functionality for ServerEngines
129277 + 10Gb network adapter BladeEngine (EC 3210).
129278 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/MAINTAINERS linux-2.6.29-rc3.owrt/drivers/staging/benet/MAINTAINERS
129279 --- linux-2.6.29.owrt/drivers/staging/benet/MAINTAINERS 1970-01-01 01:00:00.000000000 +0100
129280 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/MAINTAINERS 2009-05-10 23:48:29.000000000 +0200
129281 @@ -0,0 +1,6 @@
129282 +SERVER ENGINES 10Gbe NIC - BLADE-ENGINE
129283 +P: Subbu Seetharaman
129284 +M: subbus@serverengines.com
129285 +L: netdev@vger.kernel.org
129286 +W: http://www.serverengines.com
129287 +S: Supported
129288 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/Makefile linux-2.6.29-rc3.owrt/drivers/staging/benet/Makefile
129289 --- linux-2.6.29.owrt/drivers/staging/benet/Makefile 1970-01-01 01:00:00.000000000 +0100
129290 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/Makefile 2009-05-10 23:48:29.000000000 +0200
129291 @@ -0,0 +1,14 @@
129292 +#
129293 +# Makefile to build the network driver for ServerEngine's BladeEngine
129294 +#
129295 +obj-$(CONFIG_BENET) += benet.o
129296 +
129297 +benet-y := be_init.o \
129298 + be_int.o \
129299 + be_netif.o \
129300 + be_ethtool.o \
129301 + funcobj.o \
129302 + cq.o \
129303 + eq.o \
129304 + mpu.o \
129305 + eth.o
129306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/mpu.c linux-2.6.29-rc3.owrt/drivers/staging/benet/mpu.c
129307 --- linux-2.6.29.owrt/drivers/staging/benet/mpu.c 1970-01-01 01:00:00.000000000 +0100
129308 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/mpu.c 2009-05-10 23:48:29.000000000 +0200
129309 @@ -0,0 +1,1364 @@
129310 +/*
129311 + * Copyright (C) 2005 - 2008 ServerEngines
129312 + * All rights reserved.
129313 + *
129314 + * This program is free software; you can redistribute it and/or
129315 + * modify it under the terms of the GNU General Public License version 2
129316 + * as published by the Free Software Foundation. The full GNU General
129317 + * Public License is included in this distribution in the file called COPYING.
129318 + *
129319 + * Contact Information:
129320 + * linux-drivers@serverengines.com
129321 + *
129322 + * ServerEngines
129323 + * 209 N. Fair Oaks Ave
129324 + * Sunnyvale, CA 94085
129325 + */
129326 +#include <linux/delay.h>
129327 +#include "hwlib.h"
129328 +#include "bestatus.h"
129329 +
129330 +static
129331 +inline void mp_ring_create(struct mp_ring *ring, u32 num, u32 size, void *va)
129332 +{
129333 + ASSERT(ring);
129334 + memset(ring, 0, sizeof(struct mp_ring));
129335 + ring->num = num;
129336 + ring->pages = DIV_ROUND_UP(num * size, PAGE_SIZE);
129337 + ring->itemSize = size;
129338 + ring->va = va;
129339 +}
129340 +
129341 +/*
129342 + * -----------------------------------------------------------------------
129343 + * Interface for 2 index rings. i.e. consumer/producer rings
129344 + * --------------------------------------------------------------------------
129345 + */
129346 +
129347 +/* Returns number items pending on ring. */
129348 +static inline u32 mp_ring_num_pending(struct mp_ring *ring)
129349 +{
129350 + ASSERT(ring);
129351 + if (ring->num == 0)
129352 + return 0;
129353 + return be_subc(ring->pidx, ring->cidx, ring->num);
129354 +}
129355 +
129356 +/* Returns number items free on ring. */
129357 +static inline u32 mp_ring_num_empty(struct mp_ring *ring)
129358 +{
129359 + ASSERT(ring);
129360 + return ring->num - 1 - mp_ring_num_pending(ring);
129361 +}
129362 +
129363 +/* Consume 1 item */
129364 +static inline void mp_ring_consume(struct mp_ring *ring)
129365 +{
129366 + ASSERT(ring);
129367 + ASSERT(ring->pidx != ring->cidx);
129368 +
129369 + ring->cidx = be_addc(ring->cidx, 1, ring->num);
129370 +}
129371 +
129372 +/* Produce 1 item */
129373 +static inline void mp_ring_produce(struct mp_ring *ring)
129374 +{
129375 + ASSERT(ring);
129376 + ring->pidx = be_addc(ring->pidx, 1, ring->num);
129377 +}
129378 +
129379 +/* Consume count items */
129380 +static inline void mp_ring_consume_multiple(struct mp_ring *ring, u32 count)
129381 +{
129382 + ASSERT(ring);
129383 + ASSERT(mp_ring_num_pending(ring) >= count);
129384 + ring->cidx = be_addc(ring->cidx, count, ring->num);
129385 +}
129386 +
129387 +static inline void *mp_ring_item(struct mp_ring *ring, u32 index)
129388 +{
129389 + ASSERT(ring);
129390 + ASSERT(index < ring->num);
129391 + ASSERT(ring->itemSize > 0);
129392 + return (u8 *) ring->va + index * ring->itemSize;
129393 +}
129394 +
129395 +/* Ptr to produce item */
129396 +static inline void *mp_ring_producer_ptr(struct mp_ring *ring)
129397 +{
129398 + ASSERT(ring);
129399 + return mp_ring_item(ring, ring->pidx);
129400 +}
129401 +
129402 +/*
129403 + * Returns a pointer to the current location in the ring.
129404 + * This is used for rings with 1 index.
129405 + */
129406 +static inline void *mp_ring_current(struct mp_ring *ring)
129407 +{
129408 + ASSERT(ring);
129409 + ASSERT(ring->pidx == 0); /* not used */
129410 +
129411 + return mp_ring_item(ring, ring->cidx);
129412 +}
129413 +
129414 +/*
129415 + * Increment index for rings with only 1 index.
129416 + * This is used for rings with 1 index.
129417 + */
129418 +static inline void *mp_ring_next(struct mp_ring *ring)
129419 +{
129420 + ASSERT(ring);
129421 + ASSERT(ring->num > 0);
129422 + ASSERT(ring->pidx == 0); /* not used */
129423 +
129424 + ring->cidx = be_addc(ring->cidx, 1, ring->num);
129425 + return mp_ring_current(ring);
129426 +}
129427 +
129428 +/*
129429 + This routine waits for a previously posted mailbox WRB to be completed.
129430 + Specifically it waits for the mailbox to say that it's ready to accept
129431 + more data by setting the LSB of the mailbox pd register to 1.
129432 +
129433 + pcontroller - The function object to post this data to
129434 +
129435 + IRQL < DISPATCH_LEVEL
129436 +*/
129437 +static void be_mcc_mailbox_wait(struct be_function_object *pfob)
129438 +{
129439 + struct MPU_MAILBOX_DB_AMAP mailbox_db;
129440 + u32 i = 0;
129441 + u32 ready;
129442 +
129443 + if (pfob->emulate) {
129444 + /* No waiting for mailbox in emulated mode. */
129445 + return;
129446 + }
129447 +
129448 + mailbox_db.dw[0] = PD_READ(pfob, mcc_bootstrap_db);
129449 + ready = AMAP_GET_BITS_PTR(MPU_MAILBOX_DB, ready, &mailbox_db);
129450 +
129451 + while (ready == false) {
129452 + if ((++i & 0x3FFFF) == 0) {
129453 + TRACE(DL_WARN, "Waiting for mailbox ready - %dk polls",
129454 + i / 1000);
129455 + }
129456 + udelay(1);
129457 + mailbox_db.dw[0] = PD_READ(pfob, mcc_bootstrap_db);
129458 + ready = AMAP_GET_BITS_PTR(MPU_MAILBOX_DB, ready, &mailbox_db);
129459 + }
129460 +}
129461 +
129462 +/*
129463 + This routine tells the MCC mailbox that there is data to processed
129464 + in the mailbox. It does this by setting the physical address for the
129465 + mailbox location and clearing the LSB. This routine returns immediately
129466 + and does not wait for the WRB to be processed.
129467 +
129468 + pcontroller - The function object to post this data to
129469 +
129470 + IRQL < DISPATCH_LEVEL
129471 +
129472 +*/
129473 +static void be_mcc_mailbox_notify(struct be_function_object *pfob)
129474 +{
129475 + struct MPU_MAILBOX_DB_AMAP mailbox_db;
129476 + u32 pa;
129477 +
129478 + ASSERT(pfob->mailbox.pa);
129479 + ASSERT(pfob->mailbox.va);
129480 +
129481 + /* If emulated, do not ring the mailbox */
129482 + if (pfob->emulate) {
129483 + TRACE(DL_WARN, "MPU disabled. Skipping mailbox notify.");
129484 + return;
129485 + }
129486 +
129487 + /* form the higher bits in the address */
129488 + mailbox_db.dw[0] = 0; /* init */
129489 + AMAP_SET_BITS_PTR(MPU_MAILBOX_DB, hi, &mailbox_db, 1);
129490 + AMAP_SET_BITS_PTR(MPU_MAILBOX_DB, ready, &mailbox_db, 0);
129491 +
129492 + /* bits 34 to 63 */
129493 + pa = (u32) (pfob->mailbox.pa >> 34);
129494 + AMAP_SET_BITS_PTR(MPU_MAILBOX_DB, address, &mailbox_db, pa);
129495 +
129496 + /* Wait for the MPU to be ready */
129497 + be_mcc_mailbox_wait(pfob);
129498 +
129499 + /* Ring doorbell 1st time */
129500 + PD_WRITE(pfob, mcc_bootstrap_db, mailbox_db.dw[0]);
129501 +
129502 + /* Wait for 1st write to be acknowledged. */
129503 + be_mcc_mailbox_wait(pfob);
129504 +
129505 + /* lower bits 30 bits from 4th bit (bits 4 to 33)*/
129506 + pa = (u32) (pfob->mailbox.pa >> 4) & 0x3FFFFFFF;
129507 +
129508 + AMAP_SET_BITS_PTR(MPU_MAILBOX_DB, hi, &mailbox_db, 0);
129509 + AMAP_SET_BITS_PTR(MPU_MAILBOX_DB, ready, &mailbox_db, 0);
129510 + AMAP_SET_BITS_PTR(MPU_MAILBOX_DB, address, &mailbox_db, pa);
129511 +
129512 + /* Ring doorbell 2nd time */
129513 + PD_WRITE(pfob, mcc_bootstrap_db, mailbox_db.dw[0]);
129514 +}
129515 +
129516 +/*
129517 + This routine tells the MCC mailbox that there is data to processed
129518 + in the mailbox. It does this by setting the physical address for the
129519 + mailbox location and clearing the LSB. This routine spins until the
129520 + MPU writes a 1 into the LSB indicating that the data has been received
129521 + and is ready to be processed.
129522 +
129523 + pcontroller - The function object to post this data to
129524 +
129525 + IRQL < DISPATCH_LEVEL
129526 +*/
129527 +static void
129528 +be_mcc_mailbox_notify_and_wait(struct be_function_object *pfob)
129529 +{
129530 + /*
129531 + * Notify it
129532 + */
129533 + be_mcc_mailbox_notify(pfob);
129534 + /*
129535 + * Now wait for completion of WRB
129536 + */
129537 + be_mcc_mailbox_wait(pfob);
129538 +}
129539 +
129540 +void
129541 +be_mcc_process_cqe(struct be_function_object *pfob,
129542 + struct MCC_CQ_ENTRY_AMAP *cqe)
129543 +{
129544 + struct be_mcc_wrb_context *wrb_context = NULL;
129545 + u32 offset, status;
129546 + u8 *p;
129547 +
129548 + ASSERT(cqe);
129549 + /*
129550 + * A command completed. Commands complete out-of-order.
129551 + * Determine which command completed from the TAG.
129552 + */
129553 + offset = offsetof(struct BE_MCC_CQ_ENTRY_AMAP, mcc_tag)/8;
129554 + p = (u8 *) cqe + offset;
129555 + wrb_context = (struct be_mcc_wrb_context *)(void *)(size_t)(*(u64 *)p);
129556 + ASSERT(wrb_context);
129557 +
129558 + /*
129559 + * Perform a response copy if requested.
129560 + * Only copy data if the FWCMD is successful.
129561 + */
129562 + status = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY, completion_status, cqe);
129563 + if (status == MGMT_STATUS_SUCCESS && wrb_context->copy.length > 0) {
129564 + ASSERT(wrb_context->wrb);
129565 + ASSERT(wrb_context->copy.va);
129566 + p = (u8 *)wrb_context->wrb +
129567 + offsetof(struct BE_MCC_WRB_AMAP, payload)/8;
129568 + memcpy(wrb_context->copy.va,
129569 + (u8 *)p + wrb_context->copy.fwcmd_offset,
129570 + wrb_context->copy.length);
129571 + }
129572 +
129573 + if (status)
129574 + status = BE_NOT_OK;
129575 + /* internal callback */
129576 + if (wrb_context->internal_cb) {
129577 + wrb_context->internal_cb(wrb_context->internal_cb_context,
129578 + status, wrb_context->wrb);
129579 + }
129580 +
129581 + /* callback */
129582 + if (wrb_context->cb) {
129583 + wrb_context->cb(wrb_context->cb_context,
129584 + status, wrb_context->wrb);
129585 + }
129586 + /* Free the context structure */
129587 + _be_mcc_free_wrb_context(pfob, wrb_context);
129588 +}
129589 +
129590 +void be_drive_mcc_wrb_queue(struct be_mcc_object *mcc)
129591 +{
129592 + struct be_function_object *pfob = NULL;
129593 + int status = BE_PENDING;
129594 + struct be_generic_q_ctxt *q_ctxt;
129595 + struct MCC_WRB_AMAP *wrb;
129596 + struct MCC_WRB_AMAP *queue_wrb;
129597 + u32 length, payload_length, sge_count, embedded;
129598 + unsigned long irql;
129599 +
129600 + BUILD_BUG_ON((sizeof(struct be_generic_q_ctxt) <
129601 + sizeof(struct be_queue_driver_context) +
129602 + sizeof(struct MCC_WRB_AMAP)));
129603 + pfob = mcc->parent_function;
129604 +
129605 + spin_lock_irqsave(&pfob->post_lock, irql);
129606 +
129607 + if (mcc->driving_backlog) {
129608 + spin_unlock_irqrestore(&pfob->post_lock, irql);
129609 + if (pfob->pend_queue_driving && pfob->mcc) {
129610 + pfob->pend_queue_driving = 0;
129611 + be_drive_mcc_wrb_queue(pfob->mcc);
129612 + }
129613 + return;
129614 + }
129615 + /* Acquire the flag to limit 1 thread to redrive posts. */
129616 + mcc->driving_backlog = 1;
129617 +
129618 + while (!list_empty(&mcc->backlog)) {
129619 + wrb = _be_mpu_peek_ring_wrb(mcc, true); /* Driving the queue */
129620 + if (!wrb)
129621 + break; /* No space in the ring yet. */
129622 + /* Get the next queued entry to process. */
129623 + q_ctxt = list_first_entry(&mcc->backlog,
129624 + struct be_generic_q_ctxt, context.list);
129625 + list_del(&q_ctxt->context.list);
129626 + pfob->mcc->backlog_length--;
129627 + /*
129628 + * Compute the required length of the WRB.
129629 + * Since the queue element may be smaller than
129630 + * the complete WRB, copy only the required number of bytes.
129631 + */
129632 + queue_wrb = (struct MCC_WRB_AMAP *) &q_ctxt->wrb_header;
129633 + embedded = AMAP_GET_BITS_PTR(MCC_WRB, embedded, queue_wrb);
129634 + if (embedded) {
129635 + payload_length = AMAP_GET_BITS_PTR(MCC_WRB,
129636 + payload_length, queue_wrb);
129637 + length = sizeof(struct be_mcc_wrb_header) +
129638 + payload_length;
129639 + } else {
129640 + sge_count = AMAP_GET_BITS_PTR(MCC_WRB, sge_count,
129641 + queue_wrb);
129642 + ASSERT(sge_count == 1); /* only 1 frag. */
129643 + length = sizeof(struct be_mcc_wrb_header) +
129644 + sge_count * sizeof(struct MCC_SGE_AMAP);
129645 + }
129646 +
129647 + /*
129648 + * Truncate the length based on the size of the
129649 + * queue element. Some elements that have output parameters
129650 + * can be smaller than the payload_length field would
129651 + * indicate. We really only need to copy the request
129652 + * parameters, not the response.
129653 + */
129654 + length = min(length, (u32) (q_ctxt->context.bytes -
129655 + offsetof(struct be_generic_q_ctxt, wrb_header)));
129656 +
129657 + /* Copy the queue element WRB into the ring. */
129658 + memcpy(wrb, &q_ctxt->wrb_header, length);
129659 +
129660 + /* Post the wrb. This should not fail assuming we have
129661 + * enough context structs. */
129662 + status = be_function_post_mcc_wrb(pfob, wrb, NULL,
129663 + q_ctxt->context.cb, q_ctxt->context.cb_context,
129664 + q_ctxt->context.internal_cb,
129665 + q_ctxt->context.internal_cb_context,
129666 + q_ctxt->context.optional_fwcmd_va,
129667 + &q_ctxt->context.copy);
129668 +
129669 + if (status == BE_SUCCESS) {
129670 + /*
129671 + * Synchronous completion. Since it was queued,
129672 + * we will invoke the callback.
129673 + * To the user, this is an asynchronous request.
129674 + */
129675 + spin_unlock_irqrestore(&pfob->post_lock, irql);
129676 + if (pfob->pend_queue_driving && pfob->mcc) {
129677 + pfob->pend_queue_driving = 0;
129678 + be_drive_mcc_wrb_queue(pfob->mcc);
129679 + }
129680 +
129681 + ASSERT(q_ctxt->context.cb);
129682 +
129683 + q_ctxt->context.cb(
129684 + q_ctxt->context.cb_context,
129685 + BE_SUCCESS, NULL);
129686 +
129687 + spin_lock_irqsave(&pfob->post_lock, irql);
129688 +
129689 + } else if (status != BE_PENDING) {
129690 + /*
129691 + * Another resource failed. Should never happen
129692 + * if we have sufficient MCC_WRB_CONTEXT structs.
129693 + * Return to head of the queue.
129694 + */
129695 + TRACE(DL_WARN, "Failed to post a queued WRB. 0x%x",
129696 + status);
129697 + list_add(&q_ctxt->context.list, &mcc->backlog);
129698 + pfob->mcc->backlog_length++;
129699 + break;
129700 + }
129701 + }
129702 +
129703 + /* Free the flag to limit 1 thread to redrive posts. */
129704 + mcc->driving_backlog = 0;
129705 + spin_unlock_irqrestore(&pfob->post_lock, irql);
129706 +}
129707 +
129708 +/* This function asserts that the WRB was consumed in order. */
129709 +#ifdef BE_DEBUG
129710 +u32 be_mcc_wrb_consumed_in_order(struct be_mcc_object *mcc,
129711 + struct MCC_CQ_ENTRY_AMAP *cqe)
129712 +{
129713 + struct be_mcc_wrb_context *wrb_context = NULL;
129714 + u32 wrb_index;
129715 + u32 wrb_consumed_in_order;
129716 + u32 offset;
129717 + u8 *p;
129718 +
129719 + ASSERT(cqe);
129720 + /*
129721 + * A command completed. Commands complete out-of-order.
129722 + * Determine which command completed from the TAG.
129723 + */
129724 + offset = offsetof(struct BE_MCC_CQ_ENTRY_AMAP, mcc_tag)/8;
129725 + p = (u8 *) cqe + offset;
129726 + wrb_context = (struct be_mcc_wrb_context *)(void *)(size_t)(*(u64 *)p);
129727 +
129728 + ASSERT(wrb_context);
129729 +
129730 + wrb_index = (u32) (((u64)(size_t)wrb_context->ring_wrb -
129731 + (u64)(size_t)mcc->sq.ring.va) / sizeof(struct MCC_WRB_AMAP));
129732 +
129733 + ASSERT(wrb_index < mcc->sq.ring.num);
129734 +
129735 + wrb_consumed_in_order = (u32) (wrb_index == mcc->consumed_index);
129736 + mcc->consumed_index = be_addc(mcc->consumed_index, 1, mcc->sq.ring.num);
129737 + return wrb_consumed_in_order;
129738 +}
129739 +#endif
129740 +
129741 +int be_mcc_process_cq(struct be_mcc_object *mcc, bool rearm)
129742 +{
129743 + struct be_function_object *pfob = NULL;
129744 + struct MCC_CQ_ENTRY_AMAP *cqe;
129745 + struct CQ_DB_AMAP db;
129746 + struct mp_ring *cq_ring = &mcc->cq.ring;
129747 + struct mp_ring *mp_ring = &mcc->sq.ring;
129748 + u32 num_processed = 0;
129749 + u32 consumed = 0, valid, completed, cqe_consumed, async_event;
129750 +
129751 + pfob = mcc->parent_function;
129752 +
129753 + spin_lock_irqsave(&pfob->cq_lock, pfob->cq_irq);
129754 +
129755 + /*
129756 + * Verify that only one thread is processing the CQ at once.
129757 + * We cannot hold the lock while processing the CQ due to
129758 + * the callbacks into the OS. Therefore, this flag is used
129759 + * to control it. If any of the threads want to
129760 + * rearm the CQ, we need to honor that.
129761 + */
129762 + if (mcc->processing != 0) {
129763 + mcc->rearm = mcc->rearm || rearm;
129764 + goto Error;
129765 + } else {
129766 + mcc->processing = 1; /* lock processing for this thread. */
129767 + mcc->rearm = rearm; /* set our rearm setting */
129768 + }
129769 +
129770 + spin_unlock_irqrestore(&pfob->cq_lock, pfob->cq_irq);
129771 +
129772 + cqe = mp_ring_current(cq_ring);
129773 + valid = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY, valid, cqe);
129774 + while (valid) {
129775 +
129776 + if (num_processed >= 8) {
129777 + /* coalesce doorbells, but free space in cq
129778 + * ring while processing. */
129779 + db.dw[0] = 0; /* clear */
129780 + AMAP_SET_BITS_PTR(CQ_DB, qid, &db, cq_ring->id);
129781 + AMAP_SET_BITS_PTR(CQ_DB, rearm, &db, false);
129782 + AMAP_SET_BITS_PTR(CQ_DB, event, &db, false);
129783 + AMAP_SET_BITS_PTR(CQ_DB, num_popped, &db,
129784 + num_processed);
129785 + num_processed = 0;
129786 +
129787 + PD_WRITE(pfob, cq_db, db.dw[0]);
129788 + }
129789 +
129790 + async_event = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY, async_event, cqe);
129791 + if (async_event) {
129792 + /* This is an asynchronous event. */
129793 + struct ASYNC_EVENT_TRAILER_AMAP *async_trailer =
129794 + (struct ASYNC_EVENT_TRAILER_AMAP *)
129795 + ((u8 *) cqe + sizeof(struct MCC_CQ_ENTRY_AMAP) -
129796 + sizeof(struct ASYNC_EVENT_TRAILER_AMAP));
129797 + u32 event_code;
129798 + async_event = AMAP_GET_BITS_PTR(ASYNC_EVENT_TRAILER,
129799 + async_event, async_trailer);
129800 + ASSERT(async_event == 1);
129801 +
129802 +
129803 + valid = AMAP_GET_BITS_PTR(ASYNC_EVENT_TRAILER,
129804 + valid, async_trailer);
129805 + ASSERT(valid == 1);
129806 +
129807 + /* Call the async event handler if it is installed. */
129808 + if (mcc->async_cb) {
129809 + event_code =
129810 + AMAP_GET_BITS_PTR(ASYNC_EVENT_TRAILER,
129811 + event_code, async_trailer);
129812 + mcc->async_cb(mcc->async_context,
129813 + (u32) event_code, (void *) cqe);
129814 + }
129815 +
129816 + } else {
129817 + /* This is a completion entry. */
129818 +
129819 + /* No vm forwarding in this driver. */
129820 +
129821 + cqe_consumed = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY,
129822 + consumed, cqe);
129823 + if (cqe_consumed) {
129824 + /*
129825 + * A command on the MCC ring was consumed.
129826 + * Update the consumer index.
129827 + * These occur in order.
129828 + */
129829 + ASSERT(be_mcc_wrb_consumed_in_order(mcc, cqe));
129830 + consumed++;
129831 + }
129832 +
129833 + completed = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY,
129834 + completed, cqe);
129835 + if (completed) {
129836 + /* A command completed. Use tag to
129837 + * determine which command. */
129838 + be_mcc_process_cqe(pfob, cqe);
129839 + }
129840 + }
129841 +
129842 + /* Reset the CQE */
129843 + AMAP_SET_BITS_PTR(MCC_CQ_ENTRY, valid, cqe, false);
129844 + num_processed++;
129845 +
129846 + /* Update our tracking for the CQ ring. */
129847 + cqe = mp_ring_next(cq_ring);
129848 + valid = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY, valid, cqe);
129849 + }
129850 +
129851 + TRACE(DL_INFO, "num_processed:0x%x, and consumed:0x%x",
129852 + num_processed, consumed);
129853 + /*
129854 + * Grab the CQ lock to synchronize the "rearm" setting for
129855 + * the doorbell, and for clearing the "processing" flag.
129856 + */
129857 + spin_lock_irqsave(&pfob->cq_lock, pfob->cq_irq);
129858 +
129859 + /*
129860 + * Rearm the cq. This is done based on the global mcc->rearm
129861 + * flag which combines the rearm parameter from the current
129862 + * call to process_cq and any other threads
129863 + * that tried to process the CQ while this one was active.
129864 + * This handles the situation where a sync. fwcmd was processing
129865 + * the CQ while the interrupt/dpc tries to process it.
129866 + * The sync process gets to continue -- but it is now
129867 + * responsible for the rearming.
129868 + */
129869 + if (num_processed > 0 || mcc->rearm == true) {
129870 + db.dw[0] = 0; /* clear */
129871 + AMAP_SET_BITS_PTR(CQ_DB, qid, &db, cq_ring->id);
129872 + AMAP_SET_BITS_PTR(CQ_DB, rearm, &db, mcc->rearm);
129873 + AMAP_SET_BITS_PTR(CQ_DB, event, &db, false);
129874 + AMAP_SET_BITS_PTR(CQ_DB, num_popped, &db, num_processed);
129875 +
129876 + PD_WRITE(pfob, cq_db, db.dw[0]);
129877 + }
129878 + /*
129879 + * Update the consumer index after ringing the CQ doorbell.
129880 + * We don't want another thread to post more WRBs before we
129881 + * have CQ space available.
129882 + */
129883 + mp_ring_consume_multiple(mp_ring, consumed);
129884 +
129885 + /* Clear the processing flag. */
129886 + mcc->processing = 0;
129887 +
129888 +Error:
129889 + spin_unlock_irqrestore(&pfob->cq_lock, pfob->cq_irq);
129890 + /*
129891 + * Use the local variable to detect if the current thread
129892 + * holds the WRB post lock. If rearm is false, this is
129893 + * either a synchronous command, or the upper layer driver is polling
129894 + * from a thread. We do not drive the queue from that
129895 + * context since the driver may hold the
129896 + * wrb post lock already.
129897 + */
129898 + if (rearm)
129899 + be_drive_mcc_wrb_queue(mcc);
129900 + else
129901 + pfob->pend_queue_driving = 1;
129902 +
129903 + return BE_SUCCESS;
129904 +}
129905 +
129906 +/*
129907 + *============================================================================
129908 + * P U B L I C R O U T I N E S
129909 + *============================================================================
129910 + */
129911 +
129912 +/*
129913 + This routine creates an MCC object. This object contains an MCC send queue
129914 + and a CQ private to the MCC.
129915 +
129916 + pcontroller - Handle to a function object
129917 +
129918 + EqObject - EQ object that will be used to dispatch this MCC
129919 +
129920 + ppMccObject - Pointer to an internal Mcc Object returned.
129921 +
129922 + Returns BE_SUCCESS if successfull,, otherwise a useful error code
129923 + is returned.
129924 +
129925 + IRQL < DISPATCH_LEVEL
129926 +
129927 +*/
129928 +int
129929 +be_mcc_ring_create(struct be_function_object *pfob,
129930 + struct ring_desc *rd, u32 length,
129931 + struct be_mcc_wrb_context *context_array,
129932 + u32 num_context_entries,
129933 + struct be_cq_object *cq, struct be_mcc_object *mcc)
129934 +{
129935 + int status = 0;
129936 +
129937 + struct FWCMD_COMMON_MCC_CREATE *fwcmd = NULL;
129938 + struct MCC_WRB_AMAP *wrb = NULL;
129939 + u32 num_entries_encoded, n, i;
129940 + void *va = NULL;
129941 + unsigned long irql;
129942 +
129943 + if (length < sizeof(struct MCC_WRB_AMAP) * 2) {
129944 + TRACE(DL_ERR, "Invalid MCC ring length:%d", length);
129945 + return BE_NOT_OK;
129946 + }
129947 + /*
129948 + * Reduce the actual ring size to be less than the number
129949 + * of context entries. This ensures that we run out of
129950 + * ring WRBs first so the queuing works correctly. We never
129951 + * queue based on context structs.
129952 + */
129953 + if (num_context_entries + 1 <
129954 + length / sizeof(struct MCC_WRB_AMAP) - 1) {
129955 +
129956 + u32 max_length =
129957 + (num_context_entries + 2) * sizeof(struct MCC_WRB_AMAP);
129958 +
129959 + if (is_power_of_2(max_length))
129960 + length = __roundup_pow_of_two(max_length+1) / 2;
129961 + else
129962 + length = __roundup_pow_of_two(max_length) / 2;
129963 +
129964 + ASSERT(length <= max_length);
129965 +
129966 + TRACE(DL_WARN,
129967 + "MCC ring length reduced based on context entries."
129968 + " length:%d wrbs:%d context_entries:%d", length,
129969 + (int) (length / sizeof(struct MCC_WRB_AMAP)),
129970 + num_context_entries);
129971 + }
129972 +
129973 + spin_lock_irqsave(&pfob->post_lock, irql);
129974 +
129975 + num_entries_encoded =
129976 + be_ring_length_to_encoding(length, sizeof(struct MCC_WRB_AMAP));
129977 +
129978 + /* Init MCC object. */
129979 + memset(mcc, 0, sizeof(*mcc));
129980 + mcc->parent_function = pfob;
129981 + mcc->cq_object = cq;
129982 +
129983 + INIT_LIST_HEAD(&mcc->backlog);
129984 +
129985 + wrb = be_function_peek_mcc_wrb(pfob);
129986 + if (!wrb) {
129987 + ASSERT(wrb);
129988 + TRACE(DL_ERR, "No free MCC WRBs in create EQ.");
129989 + status = BE_STATUS_NO_MCC_WRB;
129990 + goto error;
129991 + }
129992 + /* Prepares an embedded fwcmd, including request/response sizes. */
129993 + fwcmd = BE_PREPARE_EMBEDDED_FWCMD(pfob, wrb, COMMON_MCC_CREATE);
129994 +
129995 + fwcmd->params.request.num_pages = DIV_ROUND_UP(length, PAGE_SIZE);
129996 + /*
129997 + * Program MCC ring context
129998 + */
129999 + AMAP_SET_BITS_PTR(MCC_RING_CONTEXT, pdid,
130000 + &fwcmd->params.request.context, 0);
130001 + AMAP_SET_BITS_PTR(MCC_RING_CONTEXT, invalid,
130002 + &fwcmd->params.request.context, false);
130003 + AMAP_SET_BITS_PTR(MCC_RING_CONTEXT, ring_size,
130004 + &fwcmd->params.request.context, num_entries_encoded);
130005 +
130006 + n = cq->cq_id;
130007 + AMAP_SET_BITS_PTR(MCC_RING_CONTEXT,
130008 + cq_id, &fwcmd->params.request.context, n);
130009 + be_rd_to_pa_list(rd, fwcmd->params.request.pages,
130010 + ARRAY_SIZE(fwcmd->params.request.pages));
130011 + /* Post the f/w command */
130012 + status = be_function_post_mcc_wrb(pfob, wrb, NULL, NULL, NULL,
130013 + NULL, NULL, fwcmd, NULL);
130014 + if (status != BE_SUCCESS) {
130015 + TRACE(DL_ERR, "MCC to create CQ failed.");
130016 + goto error;
130017 + }
130018 + /*
130019 + * Create a linked list of context structures
130020 + */
130021 + mcc->wrb_context.base = context_array;
130022 + mcc->wrb_context.num = num_context_entries;
130023 + INIT_LIST_HEAD(&mcc->wrb_context.list_head);
130024 + memset(context_array, 0,
130025 + sizeof(struct be_mcc_wrb_context) * num_context_entries);
130026 + for (i = 0; i < mcc->wrb_context.num; i++) {
130027 + list_add_tail(&context_array[i].next,
130028 + &mcc->wrb_context.list_head);
130029 + }
130030 +
130031 + /*
130032 + *
130033 + * Create an mcc_ring for tracking WRB hw ring
130034 + */
130035 + va = rd->va;
130036 + ASSERT(va);
130037 + mp_ring_create(&mcc->sq.ring, length / sizeof(struct MCC_WRB_AMAP),
130038 + sizeof(struct MCC_WRB_AMAP), va);
130039 + mcc->sq.ring.id = fwcmd->params.response.id;
130040 + /*
130041 + * Init a mcc_ring for tracking the MCC CQ.
130042 + */
130043 + ASSERT(cq->va);
130044 + mp_ring_create(&mcc->cq.ring, cq->num_entries,
130045 + sizeof(struct MCC_CQ_ENTRY_AMAP), cq->va);
130046 + mcc->cq.ring.id = cq->cq_id;
130047 +
130048 + /* Force zeroing of CQ. */
130049 + memset(cq->va, 0, cq->num_entries * sizeof(struct MCC_CQ_ENTRY_AMAP));
130050 +
130051 + /* Initialize debug index. */
130052 + mcc->consumed_index = 0;
130053 +
130054 + atomic_inc(&cq->ref_count);
130055 + pfob->mcc = mcc;
130056 +
130057 + TRACE(DL_INFO, "MCC ring created. id:%d bytes:%d cq_id:%d cq_entries:%d"
130058 + " num_context:%d", mcc->sq.ring.id, length,
130059 + cq->cq_id, cq->num_entries, num_context_entries);
130060 +
130061 +error:
130062 + spin_unlock_irqrestore(&pfob->post_lock, irql);
130063 + if (pfob->pend_queue_driving && pfob->mcc) {
130064 + pfob->pend_queue_driving = 0;
130065 + be_drive_mcc_wrb_queue(pfob->mcc);
130066 + }
130067 + return status;
130068 +}
130069 +
130070 +/*
130071 + This routine destroys an MCC send queue
130072 +
130073 + MccObject - Internal Mcc Object to be destroyed.
130074 +
130075 + Returns BE_SUCCESS if successfull, otherwise an error code is returned.
130076 +
130077 + IRQL < DISPATCH_LEVEL
130078 +
130079 + The caller of this routine must ensure that no other WRB may be posted
130080 + until this routine returns.
130081 +
130082 +*/
130083 +int be_mcc_ring_destroy(struct be_mcc_object *mcc)
130084 +{
130085 + int status = 0;
130086 + struct be_function_object *pfob = mcc->parent_function;
130087 +
130088 +
130089 + ASSERT(mcc->processing == 0);
130090 +
130091 + /*
130092 + * Remove the ring from the function object.
130093 + * This transitions back to mailbox mode.
130094 + */
130095 + pfob->mcc = NULL;
130096 +
130097 + /* Send fwcmd to destroy the queue. (Using the mailbox.) */
130098 + status = be_function_ring_destroy(mcc->parent_function, mcc->sq.ring.id,
130099 + FWCMD_RING_TYPE_MCC, NULL, NULL, NULL, NULL);
130100 + ASSERT(status == 0);
130101 +
130102 + /* Release the SQ reference to the CQ */
130103 + atomic_dec(&mcc->cq_object->ref_count);
130104 +
130105 + return status;
130106 +}
130107 +
130108 +static void
130109 +mcc_wrb_sync_cb(void *context, int staus, struct MCC_WRB_AMAP *wrb)
130110 +{
130111 + struct be_mcc_wrb_context *wrb_context =
130112 + (struct be_mcc_wrb_context *) context;
130113 + ASSERT(wrb_context);
130114 + *wrb_context->users_final_status = staus;
130115 +}
130116 +
130117 +/*
130118 + This routine posts a command to the MCC send queue
130119 +
130120 + mcc - Internal Mcc Object to be destroyed.
130121 +
130122 + wrb - wrb to post.
130123 +
130124 + Returns BE_SUCCESS if successfull, otherwise an error code is returned.
130125 +
130126 + IRQL < DISPATCH_LEVEL if CompletionCallback is not NULL
130127 + IRQL <=DISPATCH_LEVEL if CompletionCallback is NULL
130128 +
130129 + If this routine is called with CompletionCallback != NULL the
130130 + call is considered to be asynchronous and will return as soon
130131 + as the WRB is posted to the MCC with BE_PENDING.
130132 +
130133 + If CompletionCallback is NULL, then this routine will not return until
130134 + a completion for this MCC command has been processed.
130135 + If called at DISPATCH_LEVEL the CompletionCallback must be NULL.
130136 +
130137 + This routine should only be called if the MPU has been boostraped past
130138 + mailbox mode.
130139 +
130140 +
130141 +*/
130142 +int
130143 +_be_mpu_post_wrb_ring(struct be_mcc_object *mcc, struct MCC_WRB_AMAP *wrb,
130144 + struct be_mcc_wrb_context *wrb_context)
130145 +{
130146 +
130147 + struct MCC_WRB_AMAP *ring_wrb = NULL;
130148 + int status = BE_PENDING;
130149 + int final_status = BE_PENDING;
130150 + mcc_wrb_cqe_callback cb = NULL;
130151 + struct MCC_DB_AMAP mcc_db;
130152 + u32 embedded;
130153 +
130154 + ASSERT(mp_ring_num_empty(&mcc->sq.ring) > 0);
130155 + /*
130156 + * Input wrb is most likely the next wrb in the ring, since the client
130157 + * can peek at the address.
130158 + */
130159 + ring_wrb = mp_ring_producer_ptr(&mcc->sq.ring);
130160 + if (wrb != ring_wrb) {
130161 + /* If not equal, copy it into the ring. */
130162 + memcpy(ring_wrb, wrb, sizeof(struct MCC_WRB_AMAP));
130163 + }
130164 +#ifdef BE_DEBUG
130165 + wrb_context->ring_wrb = ring_wrb;
130166 +#endif
130167 + embedded = AMAP_GET_BITS_PTR(MCC_WRB, embedded, ring_wrb);
130168 + if (embedded) {
130169 + /* embedded commands will have the response within the WRB. */
130170 + wrb_context->wrb = ring_wrb;
130171 + } else {
130172 + /*
130173 + * non-embedded commands will not have the response
130174 + * within the WRB, and they may complete out-of-order.
130175 + * The WRB will not be valid to inspect
130176 + * during the completion.
130177 + */
130178 + wrb_context->wrb = NULL;
130179 + }
130180 + cb = wrb_context->cb;
130181 +
130182 + if (cb == NULL) {
130183 + /* Assign our internal callback if this is a
130184 + * synchronous call. */
130185 + wrb_context->cb = mcc_wrb_sync_cb;
130186 + wrb_context->cb_context = wrb_context;
130187 + wrb_context->users_final_status = &final_status;
130188 + }
130189 + /* Increment producer index */
130190 +
130191 + mcc_db.dw[0] = 0; /* initialize */
130192 + AMAP_SET_BITS_PTR(MCC_DB, rid, &mcc_db, mcc->sq.ring.id);
130193 + AMAP_SET_BITS_PTR(MCC_DB, numPosted, &mcc_db, 1);
130194 +
130195 + mp_ring_produce(&mcc->sq.ring);
130196 + PD_WRITE(mcc->parent_function, mpu_mcc_db, mcc_db.dw[0]);
130197 + TRACE(DL_INFO, "pidx: %x and cidx: %x.", mcc->sq.ring.pidx,
130198 + mcc->sq.ring.cidx);
130199 +
130200 + if (cb == NULL) {
130201 + int polls = 0; /* At >= 1 us per poll */
130202 + /* Wait until this command completes, polling the CQ. */
130203 + do {
130204 + TRACE(DL_INFO, "FWCMD submitted in the poll mode.");
130205 + /* Do not rearm CQ in this context. */
130206 + be_mcc_process_cq(mcc, false);
130207 +
130208 + if (final_status == BE_PENDING) {
130209 + if ((++polls & 0x7FFFF) == 0) {
130210 + TRACE(DL_WARN,
130211 + "Warning : polling MCC CQ for %d"
130212 + "ms.", polls / 1000);
130213 + }
130214 +
130215 + udelay(1);
130216 + }
130217 +
130218 + /* final_status changed when the command completes */
130219 + } while (final_status == BE_PENDING);
130220 +
130221 + status = final_status;
130222 + }
130223 +
130224 + return status;
130225 +}
130226 +
130227 +struct MCC_WRB_AMAP *
130228 +_be_mpu_peek_ring_wrb(struct be_mcc_object *mcc, bool driving_queue)
130229 +{
130230 + /* If we have queued items, do not allow a post to bypass the queue. */
130231 + if (!driving_queue && !list_empty(&mcc->backlog))
130232 + return NULL;
130233 +
130234 + if (mp_ring_num_empty(&mcc->sq.ring) <= 0)
130235 + return NULL;
130236 + return (struct MCC_WRB_AMAP *) mp_ring_producer_ptr(&mcc->sq.ring);
130237 +}
130238 +
130239 +int
130240 +be_mpu_init_mailbox(struct be_function_object *pfob, struct ring_desc *mailbox)
130241 +{
130242 + ASSERT(mailbox);
130243 + pfob->mailbox.va = mailbox->va;
130244 + pfob->mailbox.pa = cpu_to_le64(mailbox->pa);
130245 + pfob->mailbox.length = mailbox->length;
130246 +
130247 + ASSERT(((u32)(size_t)pfob->mailbox.va & 0xf) == 0);
130248 + ASSERT(((u32)(size_t)pfob->mailbox.pa & 0xf) == 0);
130249 + /*
130250 + * Issue the WRB to set MPU endianness
130251 + */
130252 + {
130253 + u64 *endian_check = (u64 *) (pfob->mailbox.va +
130254 + offsetof(struct BE_MCC_MAILBOX_AMAP, wrb)/8);
130255 + *endian_check = 0xFF1234FFFF5678FFULL;
130256 + }
130257 +
130258 + be_mcc_mailbox_notify_and_wait(pfob);
130259 +
130260 + return BE_SUCCESS;
130261 +}
130262 +
130263 +
130264 +/*
130265 + This routine posts a command to the MCC mailbox.
130266 +
130267 + FuncObj - Function Object to post the WRB on behalf of.
130268 + wrb - wrb to post.
130269 + CompletionCallback - Address of a callback routine to invoke once the WRB
130270 + is completed.
130271 + CompletionCallbackContext - Opaque context to be passed during the call to
130272 + the CompletionCallback.
130273 + Returns BE_SUCCESS if successfull, otherwise an error code is returned.
130274 +
130275 + IRQL <=DISPATCH_LEVEL if CompletionCallback is NULL
130276 +
130277 + This routine will block until a completion for this MCC command has been
130278 + processed. If called at DISPATCH_LEVEL the CompletionCallback must be NULL.
130279 +
130280 + This routine should only be called if the MPU has not been boostraped past
130281 + mailbox mode.
130282 +*/
130283 +int
130284 +_be_mpu_post_wrb_mailbox(struct be_function_object *pfob,
130285 + struct MCC_WRB_AMAP *wrb, struct be_mcc_wrb_context *wrb_context)
130286 +{
130287 + struct MCC_MAILBOX_AMAP *mailbox = NULL;
130288 + struct MCC_WRB_AMAP *mb_wrb;
130289 + struct MCC_CQ_ENTRY_AMAP *mb_cq;
130290 + u32 offset, status;
130291 +
130292 + ASSERT(pfob->mcc == NULL);
130293 + mailbox = pfob->mailbox.va;
130294 + ASSERT(mailbox);
130295 +
130296 + offset = offsetof(struct BE_MCC_MAILBOX_AMAP, wrb)/8;
130297 + mb_wrb = (struct MCC_WRB_AMAP *) (u8 *)mailbox + offset;
130298 + if (mb_wrb != wrb) {
130299 + memset(mailbox, 0, sizeof(*mailbox));
130300 + memcpy(mb_wrb, wrb, sizeof(struct MCC_WRB_AMAP));
130301 + }
130302 + /* The callback can inspect the final WRB to get output parameters. */
130303 + wrb_context->wrb = mb_wrb;
130304 +
130305 + be_mcc_mailbox_notify_and_wait(pfob);
130306 +
130307 + /* A command completed. Use tag to determine which command. */
130308 + offset = offsetof(struct BE_MCC_MAILBOX_AMAP, cq)/8;
130309 + mb_cq = (struct MCC_CQ_ENTRY_AMAP *) ((u8 *)mailbox + offset);
130310 + be_mcc_process_cqe(pfob, mb_cq);
130311 +
130312 + status = AMAP_GET_BITS_PTR(MCC_CQ_ENTRY, completion_status, mb_cq);
130313 + if (status)
130314 + status = BE_NOT_OK;
130315 + return status;
130316 +}
130317 +
130318 +struct be_mcc_wrb_context *
130319 +_be_mcc_allocate_wrb_context(struct be_function_object *pfob)
130320 +{
130321 + struct be_mcc_wrb_context *context = NULL;
130322 + unsigned long irq;
130323 +
130324 + spin_lock_irqsave(&pfob->mcc_context_lock, irq);
130325 +
130326 + if (!pfob->mailbox.default_context_allocated) {
130327 + /* Use the single default context that we
130328 + * always have allocated. */
130329 + pfob->mailbox.default_context_allocated = true;
130330 + context = &pfob->mailbox.default_context;
130331 + } else if (pfob->mcc) {
130332 + /* Get a context from the free list. If any are available. */
130333 + if (!list_empty(&pfob->mcc->wrb_context.list_head)) {
130334 + context = list_first_entry(
130335 + &pfob->mcc->wrb_context.list_head,
130336 + struct be_mcc_wrb_context, next);
130337 + }
130338 + }
130339 +
130340 + spin_unlock_irqrestore(&pfob->mcc_context_lock, irq);
130341 +
130342 + return context;
130343 +}
130344 +
130345 +void
130346 +_be_mcc_free_wrb_context(struct be_function_object *pfob,
130347 + struct be_mcc_wrb_context *context)
130348 +{
130349 + unsigned long irq;
130350 +
130351 + ASSERT(context);
130352 + /*
130353 + * Zero during free to try and catch any bugs where the context
130354 + * is accessed after a free.
130355 + */
130356 + memset(context, 0, sizeof(context));
130357 +
130358 + spin_lock_irqsave(&pfob->mcc_context_lock, irq);
130359 +
130360 + if (context == &pfob->mailbox.default_context) {
130361 + /* Free the default context. */
130362 + ASSERT(pfob->mailbox.default_context_allocated);
130363 + pfob->mailbox.default_context_allocated = false;
130364 + } else {
130365 + /* Add to free list. */
130366 + ASSERT(pfob->mcc);
130367 + list_add_tail(&context->next,
130368 + &pfob->mcc->wrb_context.list_head);
130369 + }
130370 +
130371 + spin_unlock_irqrestore(&pfob->mcc_context_lock, irq);
130372 +}
130373 +
130374 +int
130375 +be_mcc_add_async_event_callback(struct be_mcc_object *mcc_object,
130376 + mcc_async_event_callback cb, void *cb_context)
130377 +{
130378 + /* Lock against anyone trying to change the callback/context pointers
130379 + * while being used. */
130380 + spin_lock_irqsave(&mcc_object->parent_function->cq_lock,
130381 + mcc_object->parent_function->cq_irq);
130382 +
130383 + /* Assign the async callback. */
130384 + mcc_object->async_context = cb_context;
130385 + mcc_object->async_cb = cb;
130386 +
130387 + spin_unlock_irqrestore(&mcc_object->parent_function->cq_lock,
130388 + mcc_object->parent_function->cq_irq);
130389 +
130390 + return BE_SUCCESS;
130391 +}
130392 +
130393 +#define MPU_EP_CONTROL 0
130394 +#define MPU_EP_SEMAPHORE 0xac
130395 +
130396 +/*
130397 + *-------------------------------------------------------------------
130398 + * Function: be_wait_for_POST_complete
130399 + * Waits until the BladeEngine POST completes (either in error or success).
130400 + * pfob -
130401 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
130402 + *-------------------------------------------------------------------
130403 + */
130404 +static int be_wait_for_POST_complete(struct be_function_object *pfob)
130405 +{
130406 + struct MGMT_HBA_POST_STATUS_STRUCT_AMAP status;
130407 + int s;
130408 + u32 post_error, post_stage;
130409 +
130410 + const u32 us_per_loop = 1000; /* 1000us */
130411 + const u32 print_frequency_loops = 1000000 / us_per_loop;
130412 + const u32 max_loops = 60 * print_frequency_loops;
130413 + u32 loops = 0;
130414 +
130415 + /*
130416 + * Wait for arm fw indicating it is done or a fatal error happened.
130417 + * Note: POST can take some time to complete depending on configuration
130418 + * settings (consider ARM attempts to acquire an IP address
130419 + * over DHCP!!!).
130420 + *
130421 + */
130422 + do {
130423 + status.dw[0] = ioread32(pfob->csr_va + MPU_EP_SEMAPHORE);
130424 + post_error = AMAP_GET_BITS_PTR(MGMT_HBA_POST_STATUS_STRUCT,
130425 + error, &status);
130426 + post_stage = AMAP_GET_BITS_PTR(MGMT_HBA_POST_STATUS_STRUCT,
130427 + stage, &status);
130428 + if (0 == (loops % print_frequency_loops)) {
130429 + /* Print current status */
130430 + TRACE(DL_INFO, "POST status = 0x%x (stage = 0x%x)",
130431 + status.dw[0], post_stage);
130432 + }
130433 + udelay(us_per_loop);
130434 + } while ((post_error != 1) &&
130435 + (post_stage != POST_STAGE_ARMFW_READY) &&
130436 + (++loops < max_loops));
130437 +
130438 + if (post_error == 1) {
130439 + TRACE(DL_ERR, "POST error! Status = 0x%x (stage = 0x%x)",
130440 + status.dw[0], post_stage);
130441 + s = BE_NOT_OK;
130442 + } else if (post_stage != POST_STAGE_ARMFW_READY) {
130443 + TRACE(DL_ERR, "POST time-out! Status = 0x%x (stage = 0x%x)",
130444 + status.dw[0], post_stage);
130445 + s = BE_NOT_OK;
130446 + } else {
130447 + s = BE_SUCCESS;
130448 + }
130449 + return s;
130450 +}
130451 +
130452 +/*
130453 + *-------------------------------------------------------------------
130454 + * Function: be_kickoff_and_wait_for_POST
130455 + * Interacts with the BladeEngine management processor to initiate POST, and
130456 + * subsequently waits until POST completes (either in error or success).
130457 + * The caller must acquire the reset semaphore before initiating POST
130458 + * to prevent multiple drivers interacting with the management processor.
130459 + * Once POST is complete the caller must release the reset semaphore.
130460 + * Callers who only want to wait for POST complete may call
130461 + * be_wait_for_POST_complete.
130462 + * pfob -
130463 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
130464 + *-------------------------------------------------------------------
130465 + */
130466 +static int
130467 +be_kickoff_and_wait_for_POST(struct be_function_object *pfob)
130468 +{
130469 + struct MGMT_HBA_POST_STATUS_STRUCT_AMAP status;
130470 + int s;
130471 +
130472 + const u32 us_per_loop = 1000; /* 1000us */
130473 + const u32 print_frequency_loops = 1000000 / us_per_loop;
130474 + const u32 max_loops = 5 * print_frequency_loops;
130475 + u32 loops = 0;
130476 + u32 post_error, post_stage;
130477 +
130478 + /* Wait for arm fw awaiting host ready or a fatal error happened. */
130479 + TRACE(DL_INFO, "Wait for BladeEngine ready to POST");
130480 + do {
130481 + status.dw[0] = ioread32(pfob->csr_va + MPU_EP_SEMAPHORE);
130482 + post_error = AMAP_GET_BITS_PTR(MGMT_HBA_POST_STATUS_STRUCT,
130483 + error, &status);
130484 + post_stage = AMAP_GET_BITS_PTR(MGMT_HBA_POST_STATUS_STRUCT,
130485 + stage, &status);
130486 + if (0 == (loops % print_frequency_loops)) {
130487 + /* Print current status */
130488 + TRACE(DL_INFO, "POST status = 0x%x (stage = 0x%x)",
130489 + status.dw[0], post_stage);
130490 + }
130491 + udelay(us_per_loop);
130492 + } while ((post_error != 1) &&
130493 + (post_stage < POST_STAGE_AWAITING_HOST_RDY) &&
130494 + (++loops < max_loops));
130495 +
130496 + if (post_error == 1) {
130497 + TRACE(DL_ERR, "Pre-POST error! Status = 0x%x (stage = 0x%x)",
130498 + status.dw[0], post_stage);
130499 + s = BE_NOT_OK;
130500 + } else if (post_stage == POST_STAGE_AWAITING_HOST_RDY) {
130501 + iowrite32(POST_STAGE_HOST_RDY, pfob->csr_va + MPU_EP_SEMAPHORE);
130502 +
130503 + /* Wait for POST to complete */
130504 + s = be_wait_for_POST_complete(pfob);
130505 + } else {
130506 + /*
130507 + * Either a timeout waiting for host ready signal or POST has
130508 + * moved ahead without requiring a host ready signal.
130509 + * Might as well give POST a chance to complete
130510 + * (or timeout again).
130511 + */
130512 + s = be_wait_for_POST_complete(pfob);
130513 + }
130514 + return s;
130515 +}
130516 +
130517 +/*
130518 + *-------------------------------------------------------------------
130519 + * Function: be_pci_soft_reset
130520 + * This function is called to issue a BladeEngine soft reset.
130521 + * Callers should acquire the soft reset semaphore before calling this
130522 + * function. Additionaly, callers should ensure they cannot be pre-empted
130523 + * while the routine executes. Upon completion of this routine, callers
130524 + * should release the reset semaphore. This routine implicitly waits
130525 + * for BladeEngine POST to complete.
130526 + * pfob -
130527 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
130528 + *-------------------------------------------------------------------
130529 + */
130530 +int be_pci_soft_reset(struct be_function_object *pfob)
130531 +{
130532 + struct PCICFG_SOFT_RESET_CSR_AMAP soft_reset;
130533 + struct PCICFG_ONLINE0_CSR_AMAP pciOnline0;
130534 + struct PCICFG_ONLINE1_CSR_AMAP pciOnline1;
130535 + struct EP_CONTROL_CSR_AMAP epControlCsr;
130536 + int status = BE_SUCCESS;
130537 + u32 i, soft_reset_bit;
130538 +
130539 + TRACE(DL_NOTE, "PCI reset...");
130540 +
130541 + /* Issue soft reset #1 to get BladeEngine into a known state. */
130542 + soft_reset.dw[0] = PCICFG0_READ(pfob, soft_reset);
130543 + AMAP_SET_BITS_PTR(PCICFG_SOFT_RESET_CSR, softreset, soft_reset.dw, 1);
130544 + PCICFG0_WRITE(pfob, host_timer_int_ctrl, soft_reset.dw[0]);
130545 + /*
130546 + * wait til soft reset is deasserted - hardware
130547 + * deasserts after some time.
130548 + */
130549 + i = 0;
130550 + do {
130551 + udelay(50);
130552 + soft_reset.dw[0] = PCICFG0_READ(pfob, soft_reset);
130553 + soft_reset_bit = AMAP_GET_BITS_PTR(PCICFG_SOFT_RESET_CSR,
130554 + softreset, soft_reset.dw);
130555 + } while (soft_reset_bit && (i++ < 1024));
130556 + if (soft_reset_bit != 0) {
130557 + TRACE(DL_ERR, "Soft-reset #1 did not deassert as expected.");
130558 + status = BE_NOT_OK;
130559 + goto Error_label;
130560 + }
130561 + /* Mask everything */
130562 + PCICFG0_WRITE(pfob, ue_status_low_mask, 0xFFFFFFFF);
130563 + PCICFG0_WRITE(pfob, ue_status_hi_mask, 0xFFFFFFFF);
130564 + /*
130565 + * Set everything offline except MPU IRAM (it is offline with
130566 + * the soft-reset, but soft-reset does not reset the PCICFG registers!)
130567 + */
130568 + pciOnline0.dw[0] = 0;
130569 + pciOnline1.dw[0] = 0;
130570 + AMAP_SET_BITS_PTR(PCICFG_ONLINE1_CSR, mpu_iram_online,
130571 + pciOnline1.dw, 1);
130572 + PCICFG0_WRITE(pfob, online0, pciOnline0.dw[0]);
130573 + PCICFG0_WRITE(pfob, online1, pciOnline1.dw[0]);
130574 +
130575 + udelay(20000);
130576 +
130577 + /* Issue soft reset #2. */
130578 + AMAP_SET_BITS_PTR(PCICFG_SOFT_RESET_CSR, softreset, soft_reset.dw, 1);
130579 + PCICFG0_WRITE(pfob, host_timer_int_ctrl, soft_reset.dw[0]);
130580 + /*
130581 + * wait til soft reset is deasserted - hardware
130582 + * deasserts after some time.
130583 + */
130584 + i = 0;
130585 + do {
130586 + udelay(50);
130587 + soft_reset.dw[0] = PCICFG0_READ(pfob, soft_reset);
130588 + soft_reset_bit = AMAP_GET_BITS_PTR(PCICFG_SOFT_RESET_CSR,
130589 + softreset, soft_reset.dw);
130590 + } while (soft_reset_bit && (i++ < 1024));
130591 + if (soft_reset_bit != 0) {
130592 + TRACE(DL_ERR, "Soft-reset #1 did not deassert as expected.");
130593 + status = BE_NOT_OK;
130594 + goto Error_label;
130595 + }
130596 +
130597 +
130598 + udelay(20000);
130599 +
130600 + /* Take MPU out of reset. */
130601 +
130602 + epControlCsr.dw[0] = ioread32(pfob->csr_va + MPU_EP_CONTROL);
130603 + AMAP_SET_BITS_PTR(EP_CONTROL_CSR, CPU_reset, &epControlCsr, 0);
130604 + iowrite32((u32)epControlCsr.dw[0], pfob->csr_va + MPU_EP_CONTROL);
130605 +
130606 + /* Kickoff BE POST and wait for completion */
130607 + status = be_kickoff_and_wait_for_POST(pfob);
130608 +
130609 +Error_label:
130610 + return status;
130611 +}
130612 +
130613 +
130614 +/*
130615 + *-------------------------------------------------------------------
130616 + * Function: be_pci_reset_required
130617 + * This private function is called to detect if a host entity is
130618 + * required to issue a PCI soft reset and subsequently drive
130619 + * BladeEngine POST. Scenarios where this is required:
130620 + * 1) BIOS-less configuration
130621 + * 2) Hot-swap/plug/power-on
130622 + * pfob -
130623 + * return true if a reset is required, false otherwise
130624 + *-------------------------------------------------------------------
130625 + */
130626 +static bool be_pci_reset_required(struct be_function_object *pfob)
130627 +{
130628 + struct MGMT_HBA_POST_STATUS_STRUCT_AMAP status;
130629 + bool do_reset = false;
130630 + u32 post_error, post_stage;
130631 +
130632 + /*
130633 + * Read the POST status register
130634 + */
130635 + status.dw[0] = ioread32(pfob->csr_va + MPU_EP_SEMAPHORE);
130636 + post_error = AMAP_GET_BITS_PTR(MGMT_HBA_POST_STATUS_STRUCT, error,
130637 + &status);
130638 + post_stage = AMAP_GET_BITS_PTR(MGMT_HBA_POST_STATUS_STRUCT, stage,
130639 + &status);
130640 + if (post_stage <= POST_STAGE_AWAITING_HOST_RDY) {
130641 + /*
130642 + * If BladeEngine is waiting for host ready indication,
130643 + * we want to do a PCI reset.
130644 + */
130645 + do_reset = true;
130646 + }
130647 +
130648 + return do_reset;
130649 +}
130650 +
130651 +/*
130652 + *-------------------------------------------------------------------
130653 + * Function: be_drive_POST
130654 + * This function is called to drive BladeEngine POST. The
130655 + * caller should ensure they cannot be pre-empted while this routine executes.
130656 + * pfob -
130657 + * return status - BE_SUCCESS (0) on success. Negative error code on failure.
130658 + *-------------------------------------------------------------------
130659 + */
130660 +int be_drive_POST(struct be_function_object *pfob)
130661 +{
130662 + int status;
130663 +
130664 + if (false != be_pci_reset_required(pfob)) {
130665 + /* PCI reset is needed (implicitly starts and waits for POST) */
130666 + status = be_pci_soft_reset(pfob);
130667 + } else {
130668 + /* No PCI reset is needed, start POST */
130669 + status = be_kickoff_and_wait_for_POST(pfob);
130670 + }
130671 +
130672 + return status;
130673 +}
130674 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/mpu_context.h linux-2.6.29-rc3.owrt/drivers/staging/benet/mpu_context.h
130675 --- linux-2.6.29.owrt/drivers/staging/benet/mpu_context.h 1970-01-01 01:00:00.000000000 +0100
130676 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/mpu_context.h 2009-05-10 23:48:29.000000000 +0200
130677 @@ -0,0 +1,46 @@
130678 +/*
130679 + * Copyright (C) 2005 - 2008 ServerEngines
130680 + * All rights reserved.
130681 + *
130682 + * This program is free software; you can redistribute it and/or
130683 + * modify it under the terms of the GNU General Public License version 2
130684 + * as published by the Free Software Foundation. The full GNU General
130685 + * Public License is included in this distribution in the file called COPYING.
130686 + *
130687 + * Contact Information:
130688 + * linux-drivers@serverengines.com
130689 + *
130690 + * ServerEngines
130691 + * 209 N. Fair Oaks Ave
130692 + * Sunnyvale, CA 94085
130693 + */
130694 +/*
130695 + * Autogenerated by srcgen version: 0127
130696 + */
130697 +#ifndef __mpu_context_amap_h__
130698 +#define __mpu_context_amap_h__
130699 +
130700 +/*
130701 + * Management command and control ring context. The MPUs BTLR_CTRL1 CSR
130702 + * controls the writeback behavior of the producer and consumer index values.
130703 + */
130704 +struct BE_MCC_RING_CONTEXT_AMAP {
130705 + u8 con_index[16]; /* DWORD 0 */
130706 + u8 ring_size[4]; /* DWORD 0 */
130707 + u8 cq_id[11]; /* DWORD 0 */
130708 + u8 rsvd0; /* DWORD 0 */
130709 + u8 prod_index[16]; /* DWORD 1 */
130710 + u8 pdid[15]; /* DWORD 1 */
130711 + u8 invalid; /* DWORD 1 */
130712 + u8 cmd_pending_current[7]; /* DWORD 2 */
130713 + u8 rsvd1[25]; /* DWORD 2 */
130714 + u8 hpi_port_cq_id[11]; /* DWORD 3 */
130715 + u8 rsvd2[5]; /* DWORD 3 */
130716 + u8 cmd_pending_max[7]; /* DWORD 3 */
130717 + u8 rsvd3[9]; /* DWORD 3 */
130718 +} __packed;
130719 +struct MCC_RING_CONTEXT_AMAP {
130720 + u32 dw[4];
130721 +};
130722 +
130723 +#endif /* __mpu_context_amap_h__ */
130724 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/mpu.h linux-2.6.29-rc3.owrt/drivers/staging/benet/mpu.h
130725 --- linux-2.6.29.owrt/drivers/staging/benet/mpu.h 1970-01-01 01:00:00.000000000 +0100
130726 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/mpu.h 2009-05-10 23:48:29.000000000 +0200
130727 @@ -0,0 +1,74 @@
130728 +/*
130729 + * Copyright (C) 2005 - 2008 ServerEngines
130730 + * All rights reserved.
130731 + *
130732 + * This program is free software; you can redistribute it and/or
130733 + * modify it under the terms of the GNU General Public License version 2
130734 + * as published by the Free Software Foundation. The full GNU General
130735 + * Public License is included in this distribution in the file called COPYING.
130736 + *
130737 + * Contact Information:
130738 + * linux-drivers@serverengines.com
130739 + *
130740 + * ServerEngines
130741 + * 209 N. Fair Oaks Ave
130742 + * Sunnyvale, CA 94085
130743 + */
130744 +/*
130745 + * Autogenerated by srcgen version: 0127
130746 + */
130747 +#ifndef __mpu_amap_h__
130748 +#define __mpu_amap_h__
130749 +#include "ep.h"
130750 +
130751 +/* Provide control parameters for the Managment Processor Unit. */
130752 +struct BE_MPU_CSRMAP_AMAP {
130753 + struct BE_EP_CSRMAP_AMAP ep;
130754 + u8 rsvd0[128]; /* DWORD 64 */
130755 + u8 rsvd1[32]; /* DWORD 68 */
130756 + u8 rsvd2[192]; /* DWORD 69 */
130757 + u8 rsvd3[192]; /* DWORD 75 */
130758 + u8 rsvd4[32]; /* DWORD 81 */
130759 + u8 rsvd5[32]; /* DWORD 82 */
130760 + u8 rsvd6[32]; /* DWORD 83 */
130761 + u8 rsvd7[32]; /* DWORD 84 */
130762 + u8 rsvd8[32]; /* DWORD 85 */
130763 + u8 rsvd9[32]; /* DWORD 86 */
130764 + u8 rsvd10[32]; /* DWORD 87 */
130765 + u8 rsvd11[32]; /* DWORD 88 */
130766 + u8 rsvd12[32]; /* DWORD 89 */
130767 + u8 rsvd13[32]; /* DWORD 90 */
130768 + u8 rsvd14[32]; /* DWORD 91 */
130769 + u8 rsvd15[32]; /* DWORD 92 */
130770 + u8 rsvd16[32]; /* DWORD 93 */
130771 + u8 rsvd17[32]; /* DWORD 94 */
130772 + u8 rsvd18[32]; /* DWORD 95 */
130773 + u8 rsvd19[32]; /* DWORD 96 */
130774 + u8 rsvd20[32]; /* DWORD 97 */
130775 + u8 rsvd21[32]; /* DWORD 98 */
130776 + u8 rsvd22[32]; /* DWORD 99 */
130777 + u8 rsvd23[32]; /* DWORD 100 */
130778 + u8 rsvd24[32]; /* DWORD 101 */
130779 + u8 rsvd25[32]; /* DWORD 102 */
130780 + u8 rsvd26[32]; /* DWORD 103 */
130781 + u8 rsvd27[32]; /* DWORD 104 */
130782 + u8 rsvd28[96]; /* DWORD 105 */
130783 + u8 rsvd29[32]; /* DWORD 108 */
130784 + u8 rsvd30[32]; /* DWORD 109 */
130785 + u8 rsvd31[32]; /* DWORD 110 */
130786 + u8 rsvd32[32]; /* DWORD 111 */
130787 + u8 rsvd33[32]; /* DWORD 112 */
130788 + u8 rsvd34[96]; /* DWORD 113 */
130789 + u8 rsvd35[32]; /* DWORD 116 */
130790 + u8 rsvd36[32]; /* DWORD 117 */
130791 + u8 rsvd37[32]; /* DWORD 118 */
130792 + u8 rsvd38[32]; /* DWORD 119 */
130793 + u8 rsvd39[32]; /* DWORD 120 */
130794 + u8 rsvd40[32]; /* DWORD 121 */
130795 + u8 rsvd41[134][32]; /* DWORD 122 */
130796 +} __packed;
130797 +struct MPU_CSRMAP_AMAP {
130798 + u32 dw[256];
130799 +};
130800 +
130801 +#endif /* __mpu_amap_h__ */
130802 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/pcicfg.h linux-2.6.29-rc3.owrt/drivers/staging/benet/pcicfg.h
130803 --- linux-2.6.29.owrt/drivers/staging/benet/pcicfg.h 1970-01-01 01:00:00.000000000 +0100
130804 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/pcicfg.h 2009-05-10 23:48:29.000000000 +0200
130805 @@ -0,0 +1,825 @@
130806 +/*
130807 + * Copyright (C) 2005 - 2008 ServerEngines
130808 + * All rights reserved.
130809 + *
130810 + * This program is free software; you can redistribute it and/or
130811 + * modify it under the terms of the GNU General Public License version 2
130812 + * as published by the Free Software Foundation. The full GNU General
130813 + * Public License is included in this distribution in the file called COPYING.
130814 + *
130815 + * Contact Information:
130816 + * linux-drivers@serverengines.com
130817 + *
130818 + * ServerEngines
130819 + * 209 N. Fair Oaks Ave
130820 + * Sunnyvale, CA 94085
130821 + */
130822 +/*
130823 + * Autogenerated by srcgen version: 0127
130824 + */
130825 +#ifndef __pcicfg_amap_h__
130826 +#define __pcicfg_amap_h__
130827 +
130828 +/* Vendor and Device ID Register. */
130829 +struct BE_PCICFG_ID_CSR_AMAP {
130830 + u8 vendorid[16]; /* DWORD 0 */
130831 + u8 deviceid[16]; /* DWORD 0 */
130832 +} __packed;
130833 +struct PCICFG_ID_CSR_AMAP {
130834 + u32 dw[1];
130835 +};
130836 +
130837 +/* IO Bar Register. */
130838 +struct BE_PCICFG_IOBAR_CSR_AMAP {
130839 + u8 iospace; /* DWORD 0 */
130840 + u8 rsvd0[7]; /* DWORD 0 */
130841 + u8 iobar[24]; /* DWORD 0 */
130842 +} __packed;
130843 +struct PCICFG_IOBAR_CSR_AMAP {
130844 + u32 dw[1];
130845 +};
130846 +
130847 +/* Memory BAR 0 Register. */
130848 +struct BE_PCICFG_MEMBAR0_CSR_AMAP {
130849 + u8 memspace; /* DWORD 0 */
130850 + u8 type[2]; /* DWORD 0 */
130851 + u8 pf; /* DWORD 0 */
130852 + u8 rsvd0[10]; /* DWORD 0 */
130853 + u8 membar0[18]; /* DWORD 0 */
130854 +} __packed;
130855 +struct PCICFG_MEMBAR0_CSR_AMAP {
130856 + u32 dw[1];
130857 +};
130858 +
130859 +/* Memory BAR 1 - Low Address Register. */
130860 +struct BE_PCICFG_MEMBAR1_LO_CSR_AMAP {
130861 + u8 memspace; /* DWORD 0 */
130862 + u8 type[2]; /* DWORD 0 */
130863 + u8 pf; /* DWORD 0 */
130864 + u8 rsvd0[13]; /* DWORD 0 */
130865 + u8 membar1lo[15]; /* DWORD 0 */
130866 +} __packed;
130867 +struct PCICFG_MEMBAR1_LO_CSR_AMAP {
130868 + u32 dw[1];
130869 +};
130870 +
130871 +/* Memory BAR 1 - High Address Register. */
130872 +struct BE_PCICFG_MEMBAR1_HI_CSR_AMAP {
130873 + u8 membar1hi[32]; /* DWORD 0 */
130874 +} __packed;
130875 +struct PCICFG_MEMBAR1_HI_CSR_AMAP {
130876 + u32 dw[1];
130877 +};
130878 +
130879 +/* Memory BAR 2 - Low Address Register. */
130880 +struct BE_PCICFG_MEMBAR2_LO_CSR_AMAP {
130881 + u8 memspace; /* DWORD 0 */
130882 + u8 type[2]; /* DWORD 0 */
130883 + u8 pf; /* DWORD 0 */
130884 + u8 rsvd0[17]; /* DWORD 0 */
130885 + u8 membar2lo[11]; /* DWORD 0 */
130886 +} __packed;
130887 +struct PCICFG_MEMBAR2_LO_CSR_AMAP {
130888 + u32 dw[1];
130889 +};
130890 +
130891 +/* Memory BAR 2 - High Address Register. */
130892 +struct BE_PCICFG_MEMBAR2_HI_CSR_AMAP {
130893 + u8 membar2hi[32]; /* DWORD 0 */
130894 +} __packed;
130895 +struct PCICFG_MEMBAR2_HI_CSR_AMAP {
130896 + u32 dw[1];
130897 +};
130898 +
130899 +/* Subsystem Vendor and ID (Function 0) Register. */
130900 +struct BE_PCICFG_SUBSYSTEM_ID_F0_CSR_AMAP {
130901 + u8 subsys_vendor_id[16]; /* DWORD 0 */
130902 + u8 subsys_id[16]; /* DWORD 0 */
130903 +} __packed;
130904 +struct PCICFG_SUBSYSTEM_ID_F0_CSR_AMAP {
130905 + u32 dw[1];
130906 +};
130907 +
130908 +/* Subsystem Vendor and ID (Function 1) Register. */
130909 +struct BE_PCICFG_SUBSYSTEM_ID_F1_CSR_AMAP {
130910 + u8 subsys_vendor_id[16]; /* DWORD 0 */
130911 + u8 subsys_id[16]; /* DWORD 0 */
130912 +} __packed;
130913 +struct PCICFG_SUBSYSTEM_ID_F1_CSR_AMAP {
130914 + u32 dw[1];
130915 +};
130916 +
130917 +/* Semaphore Register. */
130918 +struct BE_PCICFG_SEMAPHORE_CSR_AMAP {
130919 + u8 locked; /* DWORD 0 */
130920 + u8 rsvd0[31]; /* DWORD 0 */
130921 +} __packed;
130922 +struct PCICFG_SEMAPHORE_CSR_AMAP {
130923 + u32 dw[1];
130924 +};
130925 +
130926 +/* Soft Reset Register. */
130927 +struct BE_PCICFG_SOFT_RESET_CSR_AMAP {
130928 + u8 rsvd0[7]; /* DWORD 0 */
130929 + u8 softreset; /* DWORD 0 */
130930 + u8 rsvd1[16]; /* DWORD 0 */
130931 + u8 nec_ll_rcvdetect_i[8]; /* DWORD 0 */
130932 +} __packed;
130933 +struct PCICFG_SOFT_RESET_CSR_AMAP {
130934 + u32 dw[1];
130935 +};
130936 +
130937 +/* Unrecoverable Error Status (Low) Register. Each bit corresponds to
130938 + * an internal Unrecoverable Error. These are set by hardware and may be
130939 + * cleared by writing a one to the respective bit(s) to be cleared. Any
130940 + * bit being set that is also unmasked will result in Unrecoverable Error
130941 + * interrupt notification to the host CPU and/or Server Management chip
130942 + * and the transitioning of BladeEngine to an Offline state.
130943 + */
130944 +struct BE_PCICFG_UE_STATUS_LOW_CSR_AMAP {
130945 + u8 cev_ue_status; /* DWORD 0 */
130946 + u8 ctx_ue_status; /* DWORD 0 */
130947 + u8 dbuf_ue_status; /* DWORD 0 */
130948 + u8 erx_ue_status; /* DWORD 0 */
130949 + u8 host_ue_status; /* DWORD 0 */
130950 + u8 mpu_ue_status; /* DWORD 0 */
130951 + u8 ndma_ue_status; /* DWORD 0 */
130952 + u8 ptc_ue_status; /* DWORD 0 */
130953 + u8 rdma_ue_status; /* DWORD 0 */
130954 + u8 rxf_ue_status; /* DWORD 0 */
130955 + u8 rxips_ue_status; /* DWORD 0 */
130956 + u8 rxulp0_ue_status; /* DWORD 0 */
130957 + u8 rxulp1_ue_status; /* DWORD 0 */
130958 + u8 rxulp2_ue_status; /* DWORD 0 */
130959 + u8 tim_ue_status; /* DWORD 0 */
130960 + u8 tpost_ue_status; /* DWORD 0 */
130961 + u8 tpre_ue_status; /* DWORD 0 */
130962 + u8 txips_ue_status; /* DWORD 0 */
130963 + u8 txulp0_ue_status; /* DWORD 0 */
130964 + u8 txulp1_ue_status; /* DWORD 0 */
130965 + u8 uc_ue_status; /* DWORD 0 */
130966 + u8 wdma_ue_status; /* DWORD 0 */
130967 + u8 txulp2_ue_status; /* DWORD 0 */
130968 + u8 host1_ue_status; /* DWORD 0 */
130969 + u8 p0_ob_link_ue_status; /* DWORD 0 */
130970 + u8 p1_ob_link_ue_status; /* DWORD 0 */
130971 + u8 host_gpio_ue_status; /* DWORD 0 */
130972 + u8 mbox_netw_ue_status; /* DWORD 0 */
130973 + u8 mbox_stor_ue_status; /* DWORD 0 */
130974 + u8 axgmac0_ue_status; /* DWORD 0 */
130975 + u8 axgmac1_ue_status; /* DWORD 0 */
130976 + u8 mpu_intpend_ue_status; /* DWORD 0 */
130977 +} __packed;
130978 +struct PCICFG_UE_STATUS_LOW_CSR_AMAP {
130979 + u32 dw[1];
130980 +};
130981 +
130982 +/* Unrecoverable Error Status (High) Register. Each bit corresponds to
130983 + * an internal Unrecoverable Error. These are set by hardware and may be
130984 + * cleared by writing a one to the respective bit(s) to be cleared. Any
130985 + * bit being set that is also unmasked will result in Unrecoverable Error
130986 + * interrupt notification to the host CPU and/or Server Management chip;
130987 + * and the transitioning of BladeEngine to an Offline state.
130988 + */
130989 +struct BE_PCICFG_UE_STATUS_HI_CSR_AMAP {
130990 + u8 jtag_ue_status; /* DWORD 0 */
130991 + u8 lpcmemhost_ue_status; /* DWORD 0 */
130992 + u8 mgmt_mac_ue_status; /* DWORD 0 */
130993 + u8 mpu_iram_ue_status; /* DWORD 0 */
130994 + u8 pcs0online_ue_status; /* DWORD 0 */
130995 + u8 pcs1online_ue_status; /* DWORD 0 */
130996 + u8 pctl0_ue_status; /* DWORD 0 */
130997 + u8 pctl1_ue_status; /* DWORD 0 */
130998 + u8 pmem_ue_status; /* DWORD 0 */
130999 + u8 rr_ue_status; /* DWORD 0 */
131000 + u8 rxpp_ue_status; /* DWORD 0 */
131001 + u8 txpb_ue_status; /* DWORD 0 */
131002 + u8 txp_ue_status; /* DWORD 0 */
131003 + u8 xaui_ue_status; /* DWORD 0 */
131004 + u8 arm_ue_status; /* DWORD 0 */
131005 + u8 ipc_ue_status; /* DWORD 0 */
131006 + u8 rsvd0[16]; /* DWORD 0 */
131007 +} __packed;
131008 +struct PCICFG_UE_STATUS_HI_CSR_AMAP {
131009 + u32 dw[1];
131010 +};
131011 +
131012 +/* Unrecoverable Error Mask (Low) Register. Each bit, when set to one,
131013 + * will mask the associated Unrecoverable Error status bit from notification
131014 + * of Unrecoverable Error to the host CPU and/or Server Managment chip and the
131015 + * transitioning of all BladeEngine units to an Offline state.
131016 + */
131017 +struct BE_PCICFG_UE_STATUS_LOW_MASK_CSR_AMAP {
131018 + u8 cev_ue_mask; /* DWORD 0 */
131019 + u8 ctx_ue_mask; /* DWORD 0 */
131020 + u8 dbuf_ue_mask; /* DWORD 0 */
131021 + u8 erx_ue_mask; /* DWORD 0 */
131022 + u8 host_ue_mask; /* DWORD 0 */
131023 + u8 mpu_ue_mask; /* DWORD 0 */
131024 + u8 ndma_ue_mask; /* DWORD 0 */
131025 + u8 ptc_ue_mask; /* DWORD 0 */
131026 + u8 rdma_ue_mask; /* DWORD 0 */
131027 + u8 rxf_ue_mask; /* DWORD 0 */
131028 + u8 rxips_ue_mask; /* DWORD 0 */
131029 + u8 rxulp0_ue_mask; /* DWORD 0 */
131030 + u8 rxulp1_ue_mask; /* DWORD 0 */
131031 + u8 rxulp2_ue_mask; /* DWORD 0 */
131032 + u8 tim_ue_mask; /* DWORD 0 */
131033 + u8 tpost_ue_mask; /* DWORD 0 */
131034 + u8 tpre_ue_mask; /* DWORD 0 */
131035 + u8 txips_ue_mask; /* DWORD 0 */
131036 + u8 txulp0_ue_mask; /* DWORD 0 */
131037 + u8 txulp1_ue_mask; /* DWORD 0 */
131038 + u8 uc_ue_mask; /* DWORD 0 */
131039 + u8 wdma_ue_mask; /* DWORD 0 */
131040 + u8 txulp2_ue_mask; /* DWORD 0 */
131041 + u8 host1_ue_mask; /* DWORD 0 */
131042 + u8 p0_ob_link_ue_mask; /* DWORD 0 */
131043 + u8 p1_ob_link_ue_mask; /* DWORD 0 */
131044 + u8 host_gpio_ue_mask; /* DWORD 0 */
131045 + u8 mbox_netw_ue_mask; /* DWORD 0 */
131046 + u8 mbox_stor_ue_mask; /* DWORD 0 */
131047 + u8 axgmac0_ue_mask; /* DWORD 0 */
131048 + u8 axgmac1_ue_mask; /* DWORD 0 */
131049 + u8 mpu_intpend_ue_mask; /* DWORD 0 */
131050 +} __packed;
131051 +struct PCICFG_UE_STATUS_LOW_MASK_CSR_AMAP {
131052 + u32 dw[1];
131053 +};
131054 +
131055 +/* Unrecoverable Error Mask (High) Register. Each bit, when set to one,
131056 + * will mask the associated Unrecoverable Error status bit from notification
131057 + * of Unrecoverable Error to the host CPU and/or Server Managment chip and the
131058 + * transitioning of all BladeEngine units to an Offline state.
131059 + */
131060 +struct BE_PCICFG_UE_STATUS_HI_MASK_CSR_AMAP {
131061 + u8 jtag_ue_mask; /* DWORD 0 */
131062 + u8 lpcmemhost_ue_mask; /* DWORD 0 */
131063 + u8 mgmt_mac_ue_mask; /* DWORD 0 */
131064 + u8 mpu_iram_ue_mask; /* DWORD 0 */
131065 + u8 pcs0online_ue_mask; /* DWORD 0 */
131066 + u8 pcs1online_ue_mask; /* DWORD 0 */
131067 + u8 pctl0_ue_mask; /* DWORD 0 */
131068 + u8 pctl1_ue_mask; /* DWORD 0 */
131069 + u8 pmem_ue_mask; /* DWORD 0 */
131070 + u8 rr_ue_mask; /* DWORD 0 */
131071 + u8 rxpp_ue_mask; /* DWORD 0 */
131072 + u8 txpb_ue_mask; /* DWORD 0 */
131073 + u8 txp_ue_mask; /* DWORD 0 */
131074 + u8 xaui_ue_mask; /* DWORD 0 */
131075 + u8 arm_ue_mask; /* DWORD 0 */
131076 + u8 ipc_ue_mask; /* DWORD 0 */
131077 + u8 rsvd0[16]; /* DWORD 0 */
131078 +} __packed;
131079 +struct PCICFG_UE_STATUS_HI_MASK_CSR_AMAP {
131080 + u32 dw[1];
131081 +};
131082 +
131083 +/* Online Control Register 0. This register controls various units within
131084 + * BladeEngine being in an Online or Offline state.
131085 + */
131086 +struct BE_PCICFG_ONLINE0_CSR_AMAP {
131087 + u8 cev_online; /* DWORD 0 */
131088 + u8 ctx_online; /* DWORD 0 */
131089 + u8 dbuf_online; /* DWORD 0 */
131090 + u8 erx_online; /* DWORD 0 */
131091 + u8 host_online; /* DWORD 0 */
131092 + u8 mpu_online; /* DWORD 0 */
131093 + u8 ndma_online; /* DWORD 0 */
131094 + u8 ptc_online; /* DWORD 0 */
131095 + u8 rdma_online; /* DWORD 0 */
131096 + u8 rxf_online; /* DWORD 0 */
131097 + u8 rxips_online; /* DWORD 0 */
131098 + u8 rxulp0_online; /* DWORD 0 */
131099 + u8 rxulp1_online; /* DWORD 0 */
131100 + u8 rxulp2_online; /* DWORD 0 */
131101 + u8 tim_online; /* DWORD 0 */
131102 + u8 tpost_online; /* DWORD 0 */
131103 + u8 tpre_online; /* DWORD 0 */
131104 + u8 txips_online; /* DWORD 0 */
131105 + u8 txulp0_online; /* DWORD 0 */
131106 + u8 txulp1_online; /* DWORD 0 */
131107 + u8 uc_online; /* DWORD 0 */
131108 + u8 wdma_online; /* DWORD 0 */
131109 + u8 txulp2_online; /* DWORD 0 */
131110 + u8 host1_online; /* DWORD 0 */
131111 + u8 p0_ob_link_online; /* DWORD 0 */
131112 + u8 p1_ob_link_online; /* DWORD 0 */
131113 + u8 host_gpio_online; /* DWORD 0 */
131114 + u8 mbox_netw_online; /* DWORD 0 */
131115 + u8 mbox_stor_online; /* DWORD 0 */
131116 + u8 axgmac0_online; /* DWORD 0 */
131117 + u8 axgmac1_online; /* DWORD 0 */
131118 + u8 mpu_intpend_online; /* DWORD 0 */
131119 +} __packed;
131120 +struct PCICFG_ONLINE0_CSR_AMAP {
131121 + u32 dw[1];
131122 +};
131123 +
131124 +/* Online Control Register 1. This register controls various units within
131125 + * BladeEngine being in an Online or Offline state.
131126 + */
131127 +struct BE_PCICFG_ONLINE1_CSR_AMAP {
131128 + u8 jtag_online; /* DWORD 0 */
131129 + u8 lpcmemhost_online; /* DWORD 0 */
131130 + u8 mgmt_mac_online; /* DWORD 0 */
131131 + u8 mpu_iram_online; /* DWORD 0 */
131132 + u8 pcs0online_online; /* DWORD 0 */
131133 + u8 pcs1online_online; /* DWORD 0 */
131134 + u8 pctl0_online; /* DWORD 0 */
131135 + u8 pctl1_online; /* DWORD 0 */
131136 + u8 pmem_online; /* DWORD 0 */
131137 + u8 rr_online; /* DWORD 0 */
131138 + u8 rxpp_online; /* DWORD 0 */
131139 + u8 txpb_online; /* DWORD 0 */
131140 + u8 txp_online; /* DWORD 0 */
131141 + u8 xaui_online; /* DWORD 0 */
131142 + u8 arm_online; /* DWORD 0 */
131143 + u8 ipc_online; /* DWORD 0 */
131144 + u8 rsvd0[16]; /* DWORD 0 */
131145 +} __packed;
131146 +struct PCICFG_ONLINE1_CSR_AMAP {
131147 + u32 dw[1];
131148 +};
131149 +
131150 +/* Host Timer Register. */
131151 +struct BE_PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP {
131152 + u8 hosttimer[24]; /* DWORD 0 */
131153 + u8 hostintr; /* DWORD 0 */
131154 + u8 rsvd0[7]; /* DWORD 0 */
131155 +} __packed;
131156 +struct PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP {
131157 + u32 dw[1];
131158 +};
131159 +
131160 +/* Scratchpad Register (for software use). */
131161 +struct BE_PCICFG_SCRATCHPAD_CSR_AMAP {
131162 + u8 scratchpad[32]; /* DWORD 0 */
131163 +} __packed;
131164 +struct PCICFG_SCRATCHPAD_CSR_AMAP {
131165 + u32 dw[1];
131166 +};
131167 +
131168 +/* PCI Express Capabilities Register. */
131169 +struct BE_PCICFG_PCIE_CAP_CSR_AMAP {
131170 + u8 capid[8]; /* DWORD 0 */
131171 + u8 nextcap[8]; /* DWORD 0 */
131172 + u8 capver[4]; /* DWORD 0 */
131173 + u8 devport[4]; /* DWORD 0 */
131174 + u8 rsvd0[6]; /* DWORD 0 */
131175 + u8 rsvd1[2]; /* DWORD 0 */
131176 +} __packed;
131177 +struct PCICFG_PCIE_CAP_CSR_AMAP {
131178 + u32 dw[1];
131179 +};
131180 +
131181 +/* PCI Express Device Capabilities Register. */
131182 +struct BE_PCICFG_PCIE_DEVCAP_CSR_AMAP {
131183 + u8 payload[3]; /* DWORD 0 */
131184 + u8 rsvd0[3]; /* DWORD 0 */
131185 + u8 lo_lat[3]; /* DWORD 0 */
131186 + u8 l1_lat[3]; /* DWORD 0 */
131187 + u8 rsvd1[3]; /* DWORD 0 */
131188 + u8 rsvd2[3]; /* DWORD 0 */
131189 + u8 pwr_value[8]; /* DWORD 0 */
131190 + u8 pwr_scale[2]; /* DWORD 0 */
131191 + u8 rsvd3[4]; /* DWORD 0 */
131192 +} __packed;
131193 +struct PCICFG_PCIE_DEVCAP_CSR_AMAP {
131194 + u32 dw[1];
131195 +};
131196 +
131197 +/* PCI Express Device Control/Status Registers. */
131198 +struct BE_PCICFG_PCIE_CONTROL_STATUS_CSR_AMAP {
131199 + u8 CorrErrReportEn; /* DWORD 0 */
131200 + u8 NonFatalErrReportEn; /* DWORD 0 */
131201 + u8 FatalErrReportEn; /* DWORD 0 */
131202 + u8 UnsuppReqReportEn; /* DWORD 0 */
131203 + u8 EnableRelaxOrder; /* DWORD 0 */
131204 + u8 Max_Payload_Size[3]; /* DWORD 0 */
131205 + u8 ExtendTagFieldEnable; /* DWORD 0 */
131206 + u8 PhantomFnEnable; /* DWORD 0 */
131207 + u8 AuxPwrPMEnable; /* DWORD 0 */
131208 + u8 EnableNoSnoop; /* DWORD 0 */
131209 + u8 Max_Read_Req_Size[3]; /* DWORD 0 */
131210 + u8 rsvd0; /* DWORD 0 */
131211 + u8 CorrErrDetect; /* DWORD 0 */
131212 + u8 NonFatalErrDetect; /* DWORD 0 */
131213 + u8 FatalErrDetect; /* DWORD 0 */
131214 + u8 UnsuppReqDetect; /* DWORD 0 */
131215 + u8 AuxPwrDetect; /* DWORD 0 */
131216 + u8 TransPending; /* DWORD 0 */
131217 + u8 rsvd1[10]; /* DWORD 0 */
131218 +} __packed;
131219 +struct PCICFG_PCIE_CONTROL_STATUS_CSR_AMAP {
131220 + u32 dw[1];
131221 +};
131222 +
131223 +/* PCI Express Link Capabilities Register. */
131224 +struct BE_PCICFG_PCIE_LINK_CAP_CSR_AMAP {
131225 + u8 MaxLinkSpeed[4]; /* DWORD 0 */
131226 + u8 MaxLinkWidth[6]; /* DWORD 0 */
131227 + u8 ASPMSupport[2]; /* DWORD 0 */
131228 + u8 L0sExitLat[3]; /* DWORD 0 */
131229 + u8 L1ExitLat[3]; /* DWORD 0 */
131230 + u8 rsvd0[6]; /* DWORD 0 */
131231 + u8 PortNum[8]; /* DWORD 0 */
131232 +} __packed;
131233 +struct PCICFG_PCIE_LINK_CAP_CSR_AMAP {
131234 + u32 dw[1];
131235 +};
131236 +
131237 +/* PCI Express Link Status Register. */
131238 +struct BE_PCICFG_PCIE_LINK_STATUS_CSR_AMAP {
131239 + u8 ASPMCtl[2]; /* DWORD 0 */
131240 + u8 rsvd0; /* DWORD 0 */
131241 + u8 ReadCmplBndry; /* DWORD 0 */
131242 + u8 LinkDisable; /* DWORD 0 */
131243 + u8 RetrainLink; /* DWORD 0 */
131244 + u8 CommonClkConfig; /* DWORD 0 */
131245 + u8 ExtendSync; /* DWORD 0 */
131246 + u8 rsvd1[8]; /* DWORD 0 */
131247 + u8 LinkSpeed[4]; /* DWORD 0 */
131248 + u8 NegLinkWidth[6]; /* DWORD 0 */
131249 + u8 LinkTrainErr; /* DWORD 0 */
131250 + u8 LinkTrain; /* DWORD 0 */
131251 + u8 SlotClkConfig; /* DWORD 0 */
131252 + u8 rsvd2[3]; /* DWORD 0 */
131253 +} __packed;
131254 +struct PCICFG_PCIE_LINK_STATUS_CSR_AMAP {
131255 + u32 dw[1];
131256 +};
131257 +
131258 +/* PCI Express MSI Configuration Register. */
131259 +struct BE_PCICFG_MSI_CSR_AMAP {
131260 + u8 capid[8]; /* DWORD 0 */
131261 + u8 nextptr[8]; /* DWORD 0 */
131262 + u8 tablesize[11]; /* DWORD 0 */
131263 + u8 rsvd0[3]; /* DWORD 0 */
131264 + u8 funcmask; /* DWORD 0 */
131265 + u8 en; /* DWORD 0 */
131266 +} __packed;
131267 +struct PCICFG_MSI_CSR_AMAP {
131268 + u32 dw[1];
131269 +};
131270 +
131271 +/* MSI-X Table Offset Register. */
131272 +struct BE_PCICFG_MSIX_TABLE_CSR_AMAP {
131273 + u8 tablebir[3]; /* DWORD 0 */
131274 + u8 offset[29]; /* DWORD 0 */
131275 +} __packed;
131276 +struct PCICFG_MSIX_TABLE_CSR_AMAP {
131277 + u32 dw[1];
131278 +};
131279 +
131280 +/* MSI-X PBA Offset Register. */
131281 +struct BE_PCICFG_MSIX_PBA_CSR_AMAP {
131282 + u8 pbabir[3]; /* DWORD 0 */
131283 + u8 offset[29]; /* DWORD 0 */
131284 +} __packed;
131285 +struct PCICFG_MSIX_PBA_CSR_AMAP {
131286 + u32 dw[1];
131287 +};
131288 +
131289 +/* PCI Express MSI-X Message Vector Control Register. */
131290 +struct BE_PCICFG_MSIX_VECTOR_CONTROL_CSR_AMAP {
131291 + u8 vector_control; /* DWORD 0 */
131292 + u8 rsvd0[31]; /* DWORD 0 */
131293 +} __packed;
131294 +struct PCICFG_MSIX_VECTOR_CONTROL_CSR_AMAP {
131295 + u32 dw[1];
131296 +};
131297 +
131298 +/* PCI Express MSI-X Message Data Register. */
131299 +struct BE_PCICFG_MSIX_MSG_DATA_CSR_AMAP {
131300 + u8 data[16]; /* DWORD 0 */
131301 + u8 rsvd0[16]; /* DWORD 0 */
131302 +} __packed;
131303 +struct PCICFG_MSIX_MSG_DATA_CSR_AMAP {
131304 + u32 dw[1];
131305 +};
131306 +
131307 +/* PCI Express MSI-X Message Address Register - High Part. */
131308 +struct BE_PCICFG_MSIX_MSG_ADDR_HI_CSR_AMAP {
131309 + u8 addr[32]; /* DWORD 0 */
131310 +} __packed;
131311 +struct PCICFG_MSIX_MSG_ADDR_HI_CSR_AMAP {
131312 + u32 dw[1];
131313 +};
131314 +
131315 +/* PCI Express MSI-X Message Address Register - Low Part. */
131316 +struct BE_PCICFG_MSIX_MSG_ADDR_LO_CSR_AMAP {
131317 + u8 rsvd0[2]; /* DWORD 0 */
131318 + u8 addr[30]; /* DWORD 0 */
131319 +} __packed;
131320 +struct PCICFG_MSIX_MSG_ADDR_LO_CSR_AMAP {
131321 + u32 dw[1];
131322 +};
131323 +
131324 +struct BE_PCICFG_ANON_18_RSVD_AMAP {
131325 + u8 rsvd0[32]; /* DWORD 0 */
131326 +} __packed;
131327 +struct PCICFG_ANON_18_RSVD_AMAP {
131328 + u32 dw[1];
131329 +};
131330 +
131331 +struct BE_PCICFG_ANON_19_RSVD_AMAP {
131332 + u8 rsvd0[32]; /* DWORD 0 */
131333 +} __packed;
131334 +struct PCICFG_ANON_19_RSVD_AMAP {
131335 + u32 dw[1];
131336 +};
131337 +
131338 +struct BE_PCICFG_ANON_20_RSVD_AMAP {
131339 + u8 rsvd0[32]; /* DWORD 0 */
131340 + u8 rsvd1[25][32]; /* DWORD 1 */
131341 +} __packed;
131342 +struct PCICFG_ANON_20_RSVD_AMAP {
131343 + u32 dw[26];
131344 +};
131345 +
131346 +struct BE_PCICFG_ANON_21_RSVD_AMAP {
131347 + u8 rsvd0[32]; /* DWORD 0 */
131348 + u8 rsvd1[1919][32]; /* DWORD 1 */
131349 +} __packed;
131350 +struct PCICFG_ANON_21_RSVD_AMAP {
131351 + u32 dw[1920];
131352 +};
131353 +
131354 +struct BE_PCICFG_ANON_22_MESSAGE_AMAP {
131355 + struct BE_PCICFG_MSIX_VECTOR_CONTROL_CSR_AMAP vec_ctrl;
131356 + struct BE_PCICFG_MSIX_MSG_DATA_CSR_AMAP msg_data;
131357 + struct BE_PCICFG_MSIX_MSG_ADDR_HI_CSR_AMAP addr_hi;
131358 + struct BE_PCICFG_MSIX_MSG_ADDR_LO_CSR_AMAP addr_low;
131359 +} __packed;
131360 +struct PCICFG_ANON_22_MESSAGE_AMAP {
131361 + u32 dw[4];
131362 +};
131363 +
131364 +struct BE_PCICFG_ANON_23_RSVD_AMAP {
131365 + u8 rsvd0[32]; /* DWORD 0 */
131366 + u8 rsvd1[895][32]; /* DWORD 1 */
131367 +} __packed;
131368 +struct PCICFG_ANON_23_RSVD_AMAP {
131369 + u32 dw[896];
131370 +};
131371 +
131372 +/* These PCI Configuration Space registers are for the Storage Function of
131373 + * BladeEngine (Function 0). In the memory map of the registers below their
131374 + * table,
131375 + */
131376 +struct BE_PCICFG0_CSRMAP_AMAP {
131377 + struct BE_PCICFG_ID_CSR_AMAP id;
131378 + u8 rsvd0[32]; /* DWORD 1 */
131379 + u8 rsvd1[32]; /* DWORD 2 */
131380 + u8 rsvd2[32]; /* DWORD 3 */
131381 + struct BE_PCICFG_IOBAR_CSR_AMAP iobar;
131382 + struct BE_PCICFG_MEMBAR0_CSR_AMAP membar0;
131383 + struct BE_PCICFG_MEMBAR1_LO_CSR_AMAP membar1_lo;
131384 + struct BE_PCICFG_MEMBAR1_HI_CSR_AMAP membar1_hi;
131385 + struct BE_PCICFG_MEMBAR2_LO_CSR_AMAP membar2_lo;
131386 + struct BE_PCICFG_MEMBAR2_HI_CSR_AMAP membar2_hi;
131387 + u8 rsvd3[32]; /* DWORD 10 */
131388 + struct BE_PCICFG_SUBSYSTEM_ID_F0_CSR_AMAP subsystem_id;
131389 + u8 rsvd4[32]; /* DWORD 12 */
131390 + u8 rsvd5[32]; /* DWORD 13 */
131391 + u8 rsvd6[32]; /* DWORD 14 */
131392 + u8 rsvd7[32]; /* DWORD 15 */
131393 + struct BE_PCICFG_SEMAPHORE_CSR_AMAP semaphore[4];
131394 + struct BE_PCICFG_SOFT_RESET_CSR_AMAP soft_reset;
131395 + u8 rsvd8[32]; /* DWORD 21 */
131396 + struct BE_PCICFG_SCRATCHPAD_CSR_AMAP scratchpad;
131397 + u8 rsvd9[32]; /* DWORD 23 */
131398 + u8 rsvd10[32]; /* DWORD 24 */
131399 + u8 rsvd11[32]; /* DWORD 25 */
131400 + u8 rsvd12[32]; /* DWORD 26 */
131401 + u8 rsvd13[32]; /* DWORD 27 */
131402 + u8 rsvd14[2][32]; /* DWORD 28 */
131403 + u8 rsvd15[32]; /* DWORD 30 */
131404 + u8 rsvd16[32]; /* DWORD 31 */
131405 + u8 rsvd17[8][32]; /* DWORD 32 */
131406 + struct BE_PCICFG_UE_STATUS_LOW_CSR_AMAP ue_status_low;
131407 + struct BE_PCICFG_UE_STATUS_HI_CSR_AMAP ue_status_hi;
131408 + struct BE_PCICFG_UE_STATUS_LOW_MASK_CSR_AMAP ue_status_low_mask;
131409 + struct BE_PCICFG_UE_STATUS_HI_MASK_CSR_AMAP ue_status_hi_mask;
131410 + struct BE_PCICFG_ONLINE0_CSR_AMAP online0;
131411 + struct BE_PCICFG_ONLINE1_CSR_AMAP online1;
131412 + u8 rsvd18[32]; /* DWORD 46 */
131413 + u8 rsvd19[32]; /* DWORD 47 */
131414 + u8 rsvd20[32]; /* DWORD 48 */
131415 + u8 rsvd21[32]; /* DWORD 49 */
131416 + struct BE_PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP host_timer_int_ctrl;
131417 + u8 rsvd22[32]; /* DWORD 51 */
131418 + struct BE_PCICFG_PCIE_CAP_CSR_AMAP pcie_cap;
131419 + struct BE_PCICFG_PCIE_DEVCAP_CSR_AMAP pcie_devcap;
131420 + struct BE_PCICFG_PCIE_CONTROL_STATUS_CSR_AMAP pcie_control_status;
131421 + struct BE_PCICFG_PCIE_LINK_CAP_CSR_AMAP pcie_link_cap;
131422 + struct BE_PCICFG_PCIE_LINK_STATUS_CSR_AMAP pcie_link_status;
131423 + struct BE_PCICFG_MSI_CSR_AMAP msi;
131424 + struct BE_PCICFG_MSIX_TABLE_CSR_AMAP msix_table_offset;
131425 + struct BE_PCICFG_MSIX_PBA_CSR_AMAP msix_pba_offset;
131426 + u8 rsvd23[32]; /* DWORD 60 */
131427 + u8 rsvd24[32]; /* DWORD 61 */
131428 + u8 rsvd25[32]; /* DWORD 62 */
131429 + u8 rsvd26[32]; /* DWORD 63 */
131430 + u8 rsvd27[32]; /* DWORD 64 */
131431 + u8 rsvd28[32]; /* DWORD 65 */
131432 + u8 rsvd29[32]; /* DWORD 66 */
131433 + u8 rsvd30[32]; /* DWORD 67 */
131434 + u8 rsvd31[32]; /* DWORD 68 */
131435 + u8 rsvd32[32]; /* DWORD 69 */
131436 + u8 rsvd33[32]; /* DWORD 70 */
131437 + u8 rsvd34[32]; /* DWORD 71 */
131438 + u8 rsvd35[32]; /* DWORD 72 */
131439 + u8 rsvd36[32]; /* DWORD 73 */
131440 + u8 rsvd37[32]; /* DWORD 74 */
131441 + u8 rsvd38[32]; /* DWORD 75 */
131442 + u8 rsvd39[32]; /* DWORD 76 */
131443 + u8 rsvd40[32]; /* DWORD 77 */
131444 + u8 rsvd41[32]; /* DWORD 78 */
131445 + u8 rsvd42[32]; /* DWORD 79 */
131446 + u8 rsvd43[32]; /* DWORD 80 */
131447 + u8 rsvd44[32]; /* DWORD 81 */
131448 + u8 rsvd45[32]; /* DWORD 82 */
131449 + u8 rsvd46[32]; /* DWORD 83 */
131450 + u8 rsvd47[32]; /* DWORD 84 */
131451 + u8 rsvd48[32]; /* DWORD 85 */
131452 + u8 rsvd49[32]; /* DWORD 86 */
131453 + u8 rsvd50[32]; /* DWORD 87 */
131454 + u8 rsvd51[32]; /* DWORD 88 */
131455 + u8 rsvd52[32]; /* DWORD 89 */
131456 + u8 rsvd53[32]; /* DWORD 90 */
131457 + u8 rsvd54[32]; /* DWORD 91 */
131458 + u8 rsvd55[32]; /* DWORD 92 */
131459 + u8 rsvd56[832]; /* DWORD 93 */
131460 + u8 rsvd57[32]; /* DWORD 119 */
131461 + u8 rsvd58[32]; /* DWORD 120 */
131462 + u8 rsvd59[32]; /* DWORD 121 */
131463 + u8 rsvd60[32]; /* DWORD 122 */
131464 + u8 rsvd61[32]; /* DWORD 123 */
131465 + u8 rsvd62[32]; /* DWORD 124 */
131466 + u8 rsvd63[32]; /* DWORD 125 */
131467 + u8 rsvd64[32]; /* DWORD 126 */
131468 + u8 rsvd65[32]; /* DWORD 127 */
131469 + u8 rsvd66[61440]; /* DWORD 128 */
131470 + struct BE_PCICFG_ANON_22_MESSAGE_AMAP message[32];
131471 + u8 rsvd67[28672]; /* DWORD 2176 */
131472 + u8 rsvd68[32]; /* DWORD 3072 */
131473 + u8 rsvd69[1023][32]; /* DWORD 3073 */
131474 +} __packed;
131475 +struct PCICFG0_CSRMAP_AMAP {
131476 + u32 dw[4096];
131477 +};
131478 +
131479 +struct BE_PCICFG_ANON_24_RSVD_AMAP {
131480 + u8 rsvd0[32]; /* DWORD 0 */
131481 +} __packed;
131482 +struct PCICFG_ANON_24_RSVD_AMAP {
131483 + u32 dw[1];
131484 +};
131485 +
131486 +struct BE_PCICFG_ANON_25_RSVD_AMAP {
131487 + u8 rsvd0[32]; /* DWORD 0 */
131488 +} __packed;
131489 +struct PCICFG_ANON_25_RSVD_AMAP {
131490 + u32 dw[1];
131491 +};
131492 +
131493 +struct BE_PCICFG_ANON_26_RSVD_AMAP {
131494 + u8 rsvd0[32]; /* DWORD 0 */
131495 +} __packed;
131496 +struct PCICFG_ANON_26_RSVD_AMAP {
131497 + u32 dw[1];
131498 +};
131499 +
131500 +struct BE_PCICFG_ANON_27_RSVD_AMAP {
131501 + u8 rsvd0[32]; /* DWORD 0 */
131502 + u8 rsvd1[32]; /* DWORD 1 */
131503 +} __packed;
131504 +struct PCICFG_ANON_27_RSVD_AMAP {
131505 + u32 dw[2];
131506 +};
131507 +
131508 +struct BE_PCICFG_ANON_28_RSVD_AMAP {
131509 + u8 rsvd0[32]; /* DWORD 0 */
131510 + u8 rsvd1[3][32]; /* DWORD 1 */
131511 +} __packed;
131512 +struct PCICFG_ANON_28_RSVD_AMAP {
131513 + u32 dw[4];
131514 +};
131515 +
131516 +struct BE_PCICFG_ANON_29_RSVD_AMAP {
131517 + u8 rsvd0[32]; /* DWORD 0 */
131518 + u8 rsvd1[36][32]; /* DWORD 1 */
131519 +} __packed;
131520 +struct PCICFG_ANON_29_RSVD_AMAP {
131521 + u32 dw[37];
131522 +};
131523 +
131524 +struct BE_PCICFG_ANON_30_RSVD_AMAP {
131525 + u8 rsvd0[32]; /* DWORD 0 */
131526 + u8 rsvd1[1930][32]; /* DWORD 1 */
131527 +} __packed;
131528 +struct PCICFG_ANON_30_RSVD_AMAP {
131529 + u32 dw[1931];
131530 +};
131531 +
131532 +struct BE_PCICFG_ANON_31_MESSAGE_AMAP {
131533 + struct BE_PCICFG_MSIX_VECTOR_CONTROL_CSR_AMAP vec_ctrl;
131534 + struct BE_PCICFG_MSIX_MSG_DATA_CSR_AMAP msg_data;
131535 + struct BE_PCICFG_MSIX_MSG_ADDR_HI_CSR_AMAP addr_hi;
131536 + struct BE_PCICFG_MSIX_MSG_ADDR_LO_CSR_AMAP addr_low;
131537 +} __packed;
131538 +struct PCICFG_ANON_31_MESSAGE_AMAP {
131539 + u32 dw[4];
131540 +};
131541 +
131542 +struct BE_PCICFG_ANON_32_RSVD_AMAP {
131543 + u8 rsvd0[32]; /* DWORD 0 */
131544 + u8 rsvd1[895][32]; /* DWORD 1 */
131545 +} __packed;
131546 +struct PCICFG_ANON_32_RSVD_AMAP {
131547 + u32 dw[896];
131548 +};
131549 +
131550 +/* This PCI configuration space register map is for the Networking Function of
131551 + * BladeEngine (Function 1).
131552 + */
131553 +struct BE_PCICFG1_CSRMAP_AMAP {
131554 + struct BE_PCICFG_ID_CSR_AMAP id;
131555 + u8 rsvd0[32]; /* DWORD 1 */
131556 + u8 rsvd1[32]; /* DWORD 2 */
131557 + u8 rsvd2[32]; /* DWORD 3 */
131558 + struct BE_PCICFG_IOBAR_CSR_AMAP iobar;
131559 + struct BE_PCICFG_MEMBAR0_CSR_AMAP membar0;
131560 + struct BE_PCICFG_MEMBAR1_LO_CSR_AMAP membar1_lo;
131561 + struct BE_PCICFG_MEMBAR1_HI_CSR_AMAP membar1_hi;
131562 + struct BE_PCICFG_MEMBAR2_LO_CSR_AMAP membar2_lo;
131563 + struct BE_PCICFG_MEMBAR2_HI_CSR_AMAP membar2_hi;
131564 + u8 rsvd3[32]; /* DWORD 10 */
131565 + struct BE_PCICFG_SUBSYSTEM_ID_F1_CSR_AMAP subsystem_id;
131566 + u8 rsvd4[32]; /* DWORD 12 */
131567 + u8 rsvd5[32]; /* DWORD 13 */
131568 + u8 rsvd6[32]; /* DWORD 14 */
131569 + u8 rsvd7[32]; /* DWORD 15 */
131570 + struct BE_PCICFG_SEMAPHORE_CSR_AMAP semaphore[4];
131571 + struct BE_PCICFG_SOFT_RESET_CSR_AMAP soft_reset;
131572 + u8 rsvd8[32]; /* DWORD 21 */
131573 + struct BE_PCICFG_SCRATCHPAD_CSR_AMAP scratchpad;
131574 + u8 rsvd9[32]; /* DWORD 23 */
131575 + u8 rsvd10[32]; /* DWORD 24 */
131576 + u8 rsvd11[32]; /* DWORD 25 */
131577 + u8 rsvd12[32]; /* DWORD 26 */
131578 + u8 rsvd13[32]; /* DWORD 27 */
131579 + u8 rsvd14[2][32]; /* DWORD 28 */
131580 + u8 rsvd15[32]; /* DWORD 30 */
131581 + u8 rsvd16[32]; /* DWORD 31 */
131582 + u8 rsvd17[8][32]; /* DWORD 32 */
131583 + struct BE_PCICFG_UE_STATUS_LOW_CSR_AMAP ue_status_low;
131584 + struct BE_PCICFG_UE_STATUS_HI_CSR_AMAP ue_status_hi;
131585 + struct BE_PCICFG_UE_STATUS_LOW_MASK_CSR_AMAP ue_status_low_mask;
131586 + struct BE_PCICFG_UE_STATUS_HI_MASK_CSR_AMAP ue_status_hi_mask;
131587 + struct BE_PCICFG_ONLINE0_CSR_AMAP online0;
131588 + struct BE_PCICFG_ONLINE1_CSR_AMAP online1;
131589 + u8 rsvd18[32]; /* DWORD 46 */
131590 + u8 rsvd19[32]; /* DWORD 47 */
131591 + u8 rsvd20[32]; /* DWORD 48 */
131592 + u8 rsvd21[32]; /* DWORD 49 */
131593 + struct BE_PCICFG_HOST_TIMER_INT_CTRL_CSR_AMAP host_timer_int_ctrl;
131594 + u8 rsvd22[32]; /* DWORD 51 */
131595 + struct BE_PCICFG_PCIE_CAP_CSR_AMAP pcie_cap;
131596 + struct BE_PCICFG_PCIE_DEVCAP_CSR_AMAP pcie_devcap;
131597 + struct BE_PCICFG_PCIE_CONTROL_STATUS_CSR_AMAP pcie_control_status;
131598 + struct BE_PCICFG_PCIE_LINK_CAP_CSR_AMAP pcie_link_cap;
131599 + struct BE_PCICFG_PCIE_LINK_STATUS_CSR_AMAP pcie_link_status;
131600 + struct BE_PCICFG_MSI_CSR_AMAP msi;
131601 + struct BE_PCICFG_MSIX_TABLE_CSR_AMAP msix_table_offset;
131602 + struct BE_PCICFG_MSIX_PBA_CSR_AMAP msix_pba_offset;
131603 + u8 rsvd23[64]; /* DWORD 60 */
131604 + u8 rsvd24[32]; /* DWORD 62 */
131605 + u8 rsvd25[32]; /* DWORD 63 */
131606 + u8 rsvd26[32]; /* DWORD 64 */
131607 + u8 rsvd27[32]; /* DWORD 65 */
131608 + u8 rsvd28[32]; /* DWORD 66 */
131609 + u8 rsvd29[32]; /* DWORD 67 */
131610 + u8 rsvd30[32]; /* DWORD 68 */
131611 + u8 rsvd31[32]; /* DWORD 69 */
131612 + u8 rsvd32[32]; /* DWORD 70 */
131613 + u8 rsvd33[32]; /* DWORD 71 */
131614 + u8 rsvd34[32]; /* DWORD 72 */
131615 + u8 rsvd35[32]; /* DWORD 73 */
131616 + u8 rsvd36[32]; /* DWORD 74 */
131617 + u8 rsvd37[128]; /* DWORD 75 */
131618 + u8 rsvd38[32]; /* DWORD 79 */
131619 + u8 rsvd39[1184]; /* DWORD 80 */
131620 + u8 rsvd40[61792]; /* DWORD 117 */
131621 + struct BE_PCICFG_ANON_31_MESSAGE_AMAP message[32];
131622 + u8 rsvd41[28672]; /* DWORD 2176 */
131623 + u8 rsvd42[32]; /* DWORD 3072 */
131624 + u8 rsvd43[1023][32]; /* DWORD 3073 */
131625 +} __packed;
131626 +struct PCICFG1_CSRMAP_AMAP {
131627 + u32 dw[4096];
131628 +};
131629 +
131630 +#endif /* __pcicfg_amap_h__ */
131631 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/post_codes.h linux-2.6.29-rc3.owrt/drivers/staging/benet/post_codes.h
131632 --- linux-2.6.29.owrt/drivers/staging/benet/post_codes.h 1970-01-01 01:00:00.000000000 +0100
131633 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/post_codes.h 2009-05-10 23:48:29.000000000 +0200
131634 @@ -0,0 +1,111 @@
131635 +/*
131636 + * Copyright (C) 2005 - 2008 ServerEngines
131637 + * All rights reserved.
131638 + *
131639 + * This program is free software; you can redistribute it and/or
131640 + * modify it under the terms of the GNU General Public License version 2
131641 + * as published by the Free Software Foundation. The full GNU General
131642 + * Public License is included in this distribution in the file called COPYING.
131643 + *
131644 + * Contact Information:
131645 + * linux-drivers@serverengines.com
131646 + *
131647 + * ServerEngines
131648 + * 209 N. Fair Oaks Ave
131649 + * Sunnyvale, CA 94085
131650 + */
131651 +/*
131652 + * Autogenerated by srcgen version: 0127
131653 + */
131654 +#ifndef __post_codes_amap_h__
131655 +#define __post_codes_amap_h__
131656 +
131657 +/* --- MGMT_HBA_POST_STAGE_ENUM --- */
131658 +#define POST_STAGE_POWER_ON_RESET (0) /* State after a cold or warm boot. */
131659 +#define POST_STAGE_AWAITING_HOST_RDY (1) /* ARM boot code awaiting a
131660 + go-ahed from the host. */
131661 +#define POST_STAGE_HOST_RDY (2) /* Host has given go-ahed to ARM. */
131662 +#define POST_STAGE_BE_RESET (3) /* Host wants to reset chip, this is a chip
131663 + workaround */
131664 +#define POST_STAGE_SEEPROM_CS_START (256) /* SEEPROM checksum
131665 + test start. */
131666 +#define POST_STAGE_SEEPROM_CS_DONE (257) /* SEEPROM checksum test
131667 + done. */
131668 +#define POST_STAGE_DDR_CONFIG_START (512) /* DDR configuration start. */
131669 +#define POST_STAGE_DDR_CONFIG_DONE (513) /* DDR configuration done. */
131670 +#define POST_STAGE_DDR_CALIBRATE_START (768) /* DDR calibration start. */
131671 +#define POST_STAGE_DDR_CALIBRATE_DONE (769) /* DDR calibration done. */
131672 +#define POST_STAGE_DDR_TEST_START (1024) /* DDR memory test start. */
131673 +#define POST_STAGE_DDR_TEST_DONE (1025) /* DDR memory test done. */
131674 +#define POST_STAGE_REDBOOT_INIT_START (1536) /* Redboot starts execution. */
131675 +#define POST_STAGE_REDBOOT_INIT_DONE (1537) /* Redboot done execution. */
131676 +#define POST_STAGE_FW_IMAGE_LOAD_START (1792) /* Firmware image load to
131677 + DDR start. */
131678 +#define POST_STAGE_FW_IMAGE_LOAD_DONE (1793) /* Firmware image load
131679 + to DDR done. */
131680 +#define POST_STAGE_ARMFW_START (2048) /* ARMfw runtime code
131681 + starts execution. */
131682 +#define POST_STAGE_DHCP_QUERY_START (2304) /* DHCP server query start. */
131683 +#define POST_STAGE_DHCP_QUERY_DONE (2305) /* DHCP server query done. */
131684 +#define POST_STAGE_BOOT_TARGET_DISCOVERY_START (2560) /* Boot Target
131685 + Discovery Start. */
131686 +#define POST_STAGE_BOOT_TARGET_DISCOVERY_DONE (2561) /* Boot Target
131687 + Discovery Done. */
131688 +#define POST_STAGE_RC_OPTION_SET (2816) /* Remote configuration
131689 + option is set in SEEPROM */
131690 +#define POST_STAGE_SWITCH_LINK (2817) /* Wait for link up on switch */
131691 +#define POST_STAGE_SEND_ICDS_MESSAGE (2818) /* Send the ICDS message
131692 + to switch */
131693 +#define POST_STAGE_PERFROM_TFTP (2819) /* Download xml using TFTP */
131694 +#define POST_STAGE_PARSE_XML (2820) /* Parse XML file */
131695 +#define POST_STAGE_DOWNLOAD_IMAGE (2821) /* Download IMAGE from
131696 + TFTP server */
131697 +#define POST_STAGE_FLASH_IMAGE (2822) /* Flash the IMAGE */
131698 +#define POST_STAGE_RC_DONE (2823) /* Remote configuration
131699 + complete */
131700 +#define POST_STAGE_REBOOT_SYSTEM (2824) /* Upgrade IMAGE done,
131701 + reboot required */
131702 +#define POST_STAGE_MAC_ADDRESS (3072) /* MAC Address Check */
131703 +#define POST_STAGE_ARMFW_READY (49152) /* ARMfw is done with POST
131704 + and ready. */
131705 +#define POST_STAGE_ARMFW_UE (61440) /* ARMfw has asserted an
131706 + unrecoverable error. The
131707 + lower 3 hex digits of the
131708 + stage code identify the
131709 + unique error code.
131710 + */
131711 +
131712 +/* This structure defines the format of the MPU semaphore
131713 + * register when used for POST.
131714 + */
131715 +struct BE_MGMT_HBA_POST_STATUS_STRUCT_AMAP {
131716 + u8 stage[16]; /* DWORD 0 */
131717 + u8 rsvd0[10]; /* DWORD 0 */
131718 + u8 iscsi_driver_loaded; /* DWORD 0 */
131719 + u8 option_rom_installed; /* DWORD 0 */
131720 + u8 iscsi_ip_conflict; /* DWORD 0 */
131721 + u8 iscsi_no_ip; /* DWORD 0 */
131722 + u8 backup_fw; /* DWORD 0 */
131723 + u8 error; /* DWORD 0 */
131724 +} __packed;
131725 +struct MGMT_HBA_POST_STATUS_STRUCT_AMAP {
131726 + u32 dw[1];
131727 +};
131728 +
131729 +/* --- MGMT_HBA_POST_DUMMY_BITS_ENUM --- */
131730 +#define POST_BIT_ISCSI_LOADED (26)
131731 +#define POST_BIT_OPTROM_INST (27)
131732 +#define POST_BIT_BAD_IP_ADDR (28)
131733 +#define POST_BIT_NO_IP_ADDR (29)
131734 +#define POST_BIT_BACKUP_FW (30)
131735 +#define POST_BIT_ERROR (31)
131736 +
131737 +/* --- MGMT_HBA_POST_DUMMY_VALUES_ENUM --- */
131738 +#define POST_ISCSI_DRIVER_LOADED (67108864)
131739 +#define POST_OPTROM_INSTALLED (134217728)
131740 +#define POST_ISCSI_IP_ADDRESS_CONFLICT (268435456)
131741 +#define POST_ISCSI_NO_IP_ADDRESS (536870912)
131742 +#define POST_BACKUP_FW_LOADED (1073741824)
131743 +#define POST_FATAL_ERROR (2147483648)
131744 +
131745 +#endif /* __post_codes_amap_h__ */
131746 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/regmap.h linux-2.6.29-rc3.owrt/drivers/staging/benet/regmap.h
131747 --- linux-2.6.29.owrt/drivers/staging/benet/regmap.h 1970-01-01 01:00:00.000000000 +0100
131748 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/regmap.h 2009-05-10 23:48:29.000000000 +0200
131749 @@ -0,0 +1,68 @@
131750 +/*
131751 + * Copyright (C) 2005 - 2008 ServerEngines
131752 + * All rights reserved.
131753 + *
131754 + * This program is free software; you can redistribute it and/or
131755 + * modify it under the terms of the GNU General Public License version 2
131756 + * as published by the Free Software Foundation. The full GNU General
131757 + * Public License is included in this distribution in the file called COPYING.
131758 + *
131759 + * Contact Information:
131760 + * linux-drivers@serverengines.com
131761 + *
131762 + * ServerEngines
131763 + * 209 N. Fair Oaks Ave
131764 + * Sunnyvale, CA 94085
131765 + */
131766 +/*
131767 + * Autogenerated by srcgen version: 0127
131768 + */
131769 +#ifndef __regmap_amap_h__
131770 +#define __regmap_amap_h__
131771 +#include "pcicfg.h"
131772 +#include "ep.h"
131773 +#include "cev.h"
131774 +#include "mpu.h"
131775 +#include "doorbells.h"
131776 +
131777 +/*
131778 + * This is the control and status register map for BladeEngine, showing
131779 + * the relative size and offset of each sub-module. The CSR registers
131780 + * are identical for the network and storage PCI functions. The
131781 + * CSR map is shown below, followed by details of each block,
131782 + * in sub-sections. The sub-sections begin with a description
131783 + * of CSRs that are instantiated in multiple blocks.
131784 + */
131785 +struct BE_BLADE_ENGINE_CSRMAP_AMAP {
131786 + struct BE_MPU_CSRMAP_AMAP mpu;
131787 + u8 rsvd0[8192]; /* DWORD 256 */
131788 + u8 rsvd1[8192]; /* DWORD 512 */
131789 + struct BE_CEV_CSRMAP_AMAP cev;
131790 + u8 rsvd2[8192]; /* DWORD 1024 */
131791 + u8 rsvd3[8192]; /* DWORD 1280 */
131792 + u8 rsvd4[8192]; /* DWORD 1536 */
131793 + u8 rsvd5[8192]; /* DWORD 1792 */
131794 + u8 rsvd6[8192]; /* DWORD 2048 */
131795 + u8 rsvd7[8192]; /* DWORD 2304 */
131796 + u8 rsvd8[8192]; /* DWORD 2560 */
131797 + u8 rsvd9[8192]; /* DWORD 2816 */
131798 + u8 rsvd10[8192]; /* DWORD 3072 */
131799 + u8 rsvd11[8192]; /* DWORD 3328 */
131800 + u8 rsvd12[8192]; /* DWORD 3584 */
131801 + u8 rsvd13[8192]; /* DWORD 3840 */
131802 + u8 rsvd14[8192]; /* DWORD 4096 */
131803 + u8 rsvd15[8192]; /* DWORD 4352 */
131804 + u8 rsvd16[8192]; /* DWORD 4608 */
131805 + u8 rsvd17[8192]; /* DWORD 4864 */
131806 + u8 rsvd18[8192]; /* DWORD 5120 */
131807 + u8 rsvd19[8192]; /* DWORD 5376 */
131808 + u8 rsvd20[8192]; /* DWORD 5632 */
131809 + u8 rsvd21[8192]; /* DWORD 5888 */
131810 + u8 rsvd22[8192]; /* DWORD 6144 */
131811 + u8 rsvd23[17152][32]; /* DWORD 6400 */
131812 +} __packed;
131813 +struct BLADE_ENGINE_CSRMAP_AMAP {
131814 + u32 dw[23552];
131815 +};
131816 +
131817 +#endif /* __regmap_amap_h__ */
131818 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/benet/TODO linux-2.6.29-rc3.owrt/drivers/staging/benet/TODO
131819 --- linux-2.6.29.owrt/drivers/staging/benet/TODO 1970-01-01 01:00:00.000000000 +0100
131820 +++ linux-2.6.29-rc3.owrt/drivers/staging/benet/TODO 2009-05-10 23:48:29.000000000 +0200
131821 @@ -0,0 +1,6 @@
131822 +TODO:
131823 + - remove wrappers around common iowrite functions
131824 + - full netdev audit of common problems/issues
131825 +
131826 +Please send all patches and questions to Subbu Seetharaman
131827 +<subbus@serverengines.com> and Greg Kroah-Hartman <greg@kroah.com>
131828 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/comedi/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/comedi/Kconfig
131829 --- linux-2.6.29.owrt/drivers/staging/comedi/Kconfig 2009-05-10 22:04:38.000000000 +0200
131830 +++ linux-2.6.29-rc3.owrt/drivers/staging/comedi/Kconfig 2009-05-10 23:48:29.000000000 +0200
131831 @@ -1,7 +1,6 @@
131832 config COMEDI
131833 tristate "Data Acquision support (comedi)"
131834 default N
131835 - depends on m
131836 ---help---
131837 Enable support a wide range of data acquision devices
131838 for Linux.
131839 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/Kconfig
131840 --- linux-2.6.29.owrt/drivers/staging/Kconfig 2009-05-10 22:04:38.000000000 +0200
131841 +++ linux-2.6.29-rc3.owrt/drivers/staging/Kconfig 2009-05-10 23:48:29.000000000 +0200
131842 @@ -73,6 +73,8 @@
131843
131844 source "drivers/staging/rt2870/Kconfig"
131845
131846 +source "drivers/staging/benet/Kconfig"
131847 +
131848 source "drivers/staging/comedi/Kconfig"
131849
131850 source "drivers/staging/asus_oled/Kconfig"
131851 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/Makefile linux-2.6.29-rc3.owrt/drivers/staging/Makefile
131852 --- linux-2.6.29.owrt/drivers/staging/Makefile 2009-05-10 22:04:38.000000000 +0200
131853 +++ linux-2.6.29-rc3.owrt/drivers/staging/Makefile 2009-05-10 23:48:29.000000000 +0200
131854 @@ -19,6 +19,7 @@
131855 obj-$(CONFIG_OTUS) += otus/
131856 obj-$(CONFIG_RT2860) += rt2860/
131857 obj-$(CONFIG_RT2870) += rt2870/
131858 +obj-$(CONFIG_BENET) += benet/
131859 obj-$(CONFIG_COMEDI) += comedi/
131860 obj-$(CONFIG_ASUS_OLED) += asus_oled/
131861 obj-$(CONFIG_PANEL) += panel/
131862 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/meilhaus/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/meilhaus/Kconfig
131863 --- linux-2.6.29.owrt/drivers/staging/meilhaus/Kconfig 2009-05-10 22:04:38.000000000 +0200
131864 +++ linux-2.6.29-rc3.owrt/drivers/staging/meilhaus/Kconfig 2009-05-10 23:48:29.000000000 +0200
131865 @@ -4,7 +4,6 @@
131866
131867 menuconfig MEILHAUS
131868 tristate "Meilhaus support"
131869 - depends on m
131870 ---help---
131871 If you have a Meilhaus card, say Y (or M) here.
131872
131873 @@ -19,7 +18,7 @@
131874 config ME0600
131875 tristate "Meilhaus ME-600 support"
131876 default n
131877 - depends on PCI && m
131878 + depends on PCI
131879 help
131880 This driver supports the Meilhaus ME-600 family of boards
131881 that do data collection and multipurpose I/O.
131882 @@ -30,7 +29,7 @@
131883 config ME0900
131884 tristate "Meilhaus ME-900 support"
131885 default n
131886 - depends on PCI && m
131887 + depends on PCI
131888 help
131889 This driver supports the Meilhaus ME-900 family of boards
131890 that do data collection and multipurpose I/O.
131891 @@ -41,7 +40,7 @@
131892 config ME1000
131893 tristate "Meilhaus ME-1000 support"
131894 default n
131895 - depends on PCI && m
131896 + depends on PCI
131897 help
131898 This driver supports the Meilhaus ME-1000 family of boards
131899 that do data collection and multipurpose I/O.
131900 @@ -52,7 +51,7 @@
131901 config ME1400
131902 tristate "Meilhaus ME-1400 support"
131903 default n
131904 - depends on PCI && m
131905 + depends on PCI
131906 help
131907 This driver supports the Meilhaus ME-1400 family of boards
131908 that do data collection and multipurpose I/O.
131909 @@ -63,7 +62,7 @@
131910 config ME1600
131911 tristate "Meilhaus ME-1600 support"
131912 default n
131913 - depends on PCI && m
131914 + depends on PCI
131915 help
131916 This driver supports the Meilhaus ME-1600 family of boards
131917 that do data collection and multipurpose I/O.
131918 @@ -74,7 +73,7 @@
131919 config ME4600
131920 tristate "Meilhaus ME-4600 support"
131921 default n
131922 - depends on PCI && m
131923 + depends on PCI
131924 help
131925 This driver supports the Meilhaus ME-4600 family of boards
131926 that do data collection and multipurpose I/O.
131927 @@ -85,7 +84,7 @@
131928 config ME6000
131929 tristate "Meilhaus ME-6000 support"
131930 default n
131931 - depends on PCI && m
131932 + depends on PCI
131933 help
131934 This driver supports the Meilhaus ME-6000 family of boards
131935 that do data collection and multipurpose I/O.
131936 @@ -96,7 +95,7 @@
131937 config ME8100
131938 tristate "Meilhaus ME-8100 support"
131939 default n
131940 - depends on PCI && m
131941 + depends on PCI
131942 help
131943 This driver supports the Meilhaus ME-8100 family of boards
131944 that do data collection and multipurpose I/O.
131945 @@ -107,7 +106,7 @@
131946 config ME8200
131947 tristate "Meilhaus ME-8200 support"
131948 default n
131949 - depends on PCI && m
131950 + depends on PCI
131951 help
131952 This driver supports the Meilhaus ME-8200 family of boards
131953 that do data collection and multipurpose I/O.
131954 @@ -118,7 +117,7 @@
131955 config MEDUMMY
131956 tristate "Meilhaus dummy driver"
131957 default n
131958 - depends on PCI && m
131959 + depends on PCI
131960 help
131961 This provides a dummy driver for the Meilhaus driver package
131962
131963 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/panel/panel.c linux-2.6.29-rc3.owrt/drivers/staging/panel/panel.c
131964 --- linux-2.6.29.owrt/drivers/staging/panel/panel.c 2009-05-10 22:04:38.000000000 +0200
131965 +++ linux-2.6.29-rc3.owrt/drivers/staging/panel/panel.c 2009-05-10 23:48:29.000000000 +0200
131966 @@ -622,7 +622,7 @@
131967 }
131968
131969 /* sets ctrl & data port bits according to current signals values */
131970 -static void panel_set_bits(void)
131971 +static void set_bits(void)
131972 {
131973 set_data_bits();
131974 set_ctrl_bits();
131975 @@ -707,12 +707,12 @@
131976 */
131977 for (bit = 0; bit < 8; bit++) {
131978 bits.cl = BIT_CLR; /* CLK low */
131979 - panel_set_bits();
131980 + set_bits();
131981 bits.da = byte & 1;
131982 - panel_set_bits();
131983 + set_bits();
131984 udelay(2); /* maintain the data during 2 us before CLK up */
131985 bits.cl = BIT_SET; /* CLK high */
131986 - panel_set_bits();
131987 + set_bits();
131988 udelay(1); /* maintain the strobe during 1 us */
131989 byte >>= 1;
131990 }
131991 @@ -727,7 +727,7 @@
131992 /* The backlight is activated by seting the AUTOFEED line to +5V */
131993 spin_lock(&pprt_lock);
131994 bits.bl = on;
131995 - panel_set_bits();
131996 + set_bits();
131997 spin_unlock(&pprt_lock);
131998 }
131999
132000 @@ -2164,20 +2164,19 @@
132001 if (scan_timer.function != NULL)
132002 del_timer(&scan_timer);
132003
132004 - if (pprt != NULL) {
132005 - if (keypad_enabled)
132006 - misc_deregister(&keypad_dev);
132007 -
132008 - if (lcd_enabled) {
132009 - panel_lcd_print("\x0cLCD driver " PANEL_VERSION
132010 - "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-");
132011 - misc_deregister(&lcd_dev);
132012 - }
132013 + if (keypad_enabled)
132014 + misc_deregister(&keypad_dev);
132015
132016 - /* TODO: free all input signals */
132017 - parport_release(pprt);
132018 - parport_unregister_device(pprt);
132019 + if (lcd_enabled) {
132020 + panel_lcd_print("\x0cLCD driver " PANEL_VERSION
132021 + "\nunloaded.\x1b[Lc\x1b[Lb\x1b[L-");
132022 + misc_deregister(&lcd_dev);
132023 }
132024 +
132025 + /* TODO: free all input signals */
132026 +
132027 + parport_release(pprt);
132028 + parport_unregister_device(pprt);
132029 parport_unregister_driver(&panel_driver);
132030 }
132031
132032 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/poch/poch.c linux-2.6.29-rc3.owrt/drivers/staging/poch/poch.c
132033 --- linux-2.6.29.owrt/drivers/staging/poch/poch.c 2009-05-10 22:04:38.000000000 +0200
132034 +++ linux-2.6.29-rc3.owrt/drivers/staging/poch/poch.c 2009-05-10 23:48:29.000000000 +0200
132035 @@ -1026,7 +1026,7 @@
132036 }
132037 break;
132038 case POCH_IOC_GET_COUNTERS:
132039 - if (!access_ok(VERIFY_WRITE, argp, sizeof(struct poch_counters)))
132040 + if (access_ok(VERIFY_WRITE, argp, sizeof(struct poch_counters)))
132041 return -EFAULT;
132042
132043 spin_lock_irq(&channel->counters_lock);
132044 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c linux-2.6.29-rc3.owrt/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c
132045 --- linux-2.6.29.owrt/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c 2009-05-10 22:04:38.000000000 +0200
132046 +++ linux-2.6.29-rc3.owrt/drivers/staging/rtl8187se/ieee80211/ieee80211_crypt.c 2009-05-10 23:48:29.000000000 +0200
132047 @@ -234,21 +234,20 @@
132048 void ieee80211_crypto_deinit(void)
132049 {
132050 struct list_head *ptr, *n;
132051 - struct ieee80211_crypto_alg *alg = NULL;
132052
132053 if (hcrypt == NULL)
132054 return;
132055
132056 - list_for_each_safe(ptr, n, &hcrypt->algs) {
132057 - alg = list_entry(ptr, struct ieee80211_crypto_alg, list);
132058 - if (alg) {
132059 - list_del(ptr);
132060 - printk(KERN_DEBUG
132061 - "ieee80211_crypt: unregistered algorithm '%s' (deinit)\n",
132062 - alg->ops->name);
132063 - kfree(alg);
132064 - }
132065 + for (ptr = hcrypt->algs.next, n = ptr->next; ptr != &hcrypt->algs;
132066 + ptr = n, n = ptr->next) {
132067 + struct ieee80211_crypto_alg *alg =
132068 + (struct ieee80211_crypto_alg *) ptr;
132069 + list_del(ptr);
132070 + printk(KERN_DEBUG "ieee80211_crypt: unregistered algorithm "
132071 + "'%s' (deinit)\n", alg->ops->name);
132072 + kfree(alg);
132073 }
132074 +
132075 kfree(hcrypt);
132076 }
132077
132078 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/rtl8187se/Kconfig linux-2.6.29-rc3.owrt/drivers/staging/rtl8187se/Kconfig
132079 --- linux-2.6.29.owrt/drivers/staging/rtl8187se/Kconfig 2009-05-10 22:04:38.000000000 +0200
132080 +++ linux-2.6.29-rc3.owrt/drivers/staging/rtl8187se/Kconfig 2009-05-10 23:48:29.000000000 +0200
132081 @@ -1,6 +1,5 @@
132082 config RTL8187SE
132083 tristate "RealTek RTL8187SE Wireless LAN NIC driver"
132084 depends on PCI
132085 - depends on WIRELESS_EXT && COMPAT_NET_DEV_OPS
132086 default N
132087 ---help---
132088 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/rtl8187se/r8180_core.c linux-2.6.29-rc3.owrt/drivers/staging/rtl8187se/r8180_core.c
132089 --- linux-2.6.29.owrt/drivers/staging/rtl8187se/r8180_core.c 2009-05-10 22:04:38.000000000 +0200
132090 +++ linux-2.6.29-rc3.owrt/drivers/staging/rtl8187se/r8180_core.c 2009-05-10 23:48:29.000000000 +0200
132091 @@ -6161,10 +6161,10 @@
132092 {
132093 pci_unregister_driver (&rtl8180_pci_driver);
132094 rtl8180_proc_module_remove();
132095 + ieee80211_crypto_deinit();
132096 ieee80211_crypto_tkip_exit();
132097 ieee80211_crypto_ccmp_exit();
132098 ieee80211_crypto_wep_exit();
132099 - ieee80211_crypto_deinit();
132100 DMESG("Exiting");
132101 }
132102
132103 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/usbip/usbip_common.c linux-2.6.29-rc3.owrt/drivers/staging/usbip/usbip_common.c
132104 --- linux-2.6.29.owrt/drivers/staging/usbip/usbip_common.c 2009-05-10 22:04:38.000000000 +0200
132105 +++ linux-2.6.29-rc3.owrt/drivers/staging/usbip/usbip_common.c 2009-05-10 23:48:29.000000000 +0200
132106 @@ -406,20 +406,8 @@
132107 /*
132108 * threads are invoked per one device (per one connection).
132109 */
132110 - int retval;
132111 -
132112 - retval = kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
132113 - if (retval < 0) {
132114 - printk(KERN_ERR "Creating tcp_rx thread for ud %p failed.\n",
132115 - ud);
132116 - return;
132117 - }
132118 - retval = kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
132119 - if (retval < 0) {
132120 - printk(KERN_ERR "Creating tcp_tx thread for ud %p failed.\n",
132121 - ud);
132122 - return;
132123 - }
132124 + kernel_thread(usbip_thread, (void *)&ud->tcp_rx, 0);
132125 + kernel_thread(usbip_thread, (void *)&ud->tcp_tx, 0);
132126
132127 /* confirm threads are starting */
132128 wait_for_completion(&ud->tcp_rx.thread_done);
132129 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/staging/winbond/wbusb.c linux-2.6.29-rc3.owrt/drivers/staging/winbond/wbusb.c
132130 --- linux-2.6.29.owrt/drivers/staging/winbond/wbusb.c 2009-05-10 22:04:38.000000000 +0200
132131 +++ linux-2.6.29-rc3.owrt/drivers/staging/winbond/wbusb.c 2009-05-10 23:48:29.000000000 +0200
132132 @@ -319,18 +319,16 @@
132133 struct usb_device *udev = interface_to_usbdev(intf);
132134 struct wbsoft_priv *priv;
132135 struct ieee80211_hw *dev;
132136 - int nr, err;
132137 + int err;
132138
132139 usb_get_dev(udev);
132140
132141 // 20060630.2 Check the device if it already be opened
132142 - nr = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ),
132143 - 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
132144 - 0x0, 0x400, &ltmp, 4, HZ*100 );
132145 - if (nr < 0) {
132146 - err = nr;
132147 + err = usb_control_msg(udev, usb_rcvctrlpipe( udev, 0 ),
132148 + 0x01, USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_DIR_IN,
132149 + 0x0, 0x400, &ltmp, 4, HZ*100 );
132150 + if (err)
132151 goto error;
132152 - }
132153
132154 ltmp = cpu_to_le32(ltmp);
132155 if (ltmp) { // Is already initialized?
132156 @@ -339,10 +337,8 @@
132157 }
132158
132159 dev = ieee80211_alloc_hw(sizeof(*priv), &wbsoft_ops);
132160 - if (!dev) {
132161 - err = -ENOMEM;
132162 + if (!dev)
132163 goto error;
132164 - }
132165
132166 priv = dev->priv;
132167
132168 @@ -373,11 +369,9 @@
132169 }
132170
132171 dev->extra_tx_headroom = 12; /* FIXME */
132172 - dev->flags = IEEE80211_HW_SIGNAL_UNSPEC;
132173 - dev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION);
132174 + dev->flags = 0;
132175
132176 dev->channel_change_time = 1000;
132177 - dev->max_signal = 100;
132178 dev->queues = 1;
132179
132180 dev->wiphy->bands[IEEE80211_BAND_2GHZ] = &wbsoft_band_2GHz;
132181 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/atm/cxacru.c linux-2.6.29-rc3.owrt/drivers/usb/atm/cxacru.c
132182 --- linux-2.6.29.owrt/drivers/usb/atm/cxacru.c 2009-05-10 22:04:38.000000000 +0200
132183 +++ linux-2.6.29-rc3.owrt/drivers/usb/atm/cxacru.c 2009-05-10 23:48:29.000000000 +0200
132184 @@ -485,7 +485,7 @@
132185 usb_err(instance->usbatm, "requested transfer size too large (%d, %d)\n",
132186 wbuflen, rbuflen);
132187 ret = -ENOMEM;
132188 - goto err;
132189 + goto fail;
132190 }
132191
132192 mutex_lock(&instance->cm_serialize);
132193 @@ -565,7 +565,6 @@
132194 dbg("cm %#x", cm);
132195 fail:
132196 mutex_unlock(&instance->cm_serialize);
132197 -err:
132198 return ret;
132199 }
132200
132201 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/class/cdc-acm.c linux-2.6.29-rc3.owrt/drivers/usb/class/cdc-acm.c
132202 --- linux-2.6.29.owrt/drivers/usb/class/cdc-acm.c 2009-05-10 22:04:38.000000000 +0200
132203 +++ linux-2.6.29-rc3.owrt/drivers/usb/class/cdc-acm.c 2009-05-10 23:48:29.000000000 +0200
132204 @@ -1349,6 +1349,9 @@
132205 { USB_DEVICE(0x0e8d, 0x0003), /* FIREFLY, MediaTek Inc; andrey.arapov@gmail.com */
132206 .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
132207 },
132208 + { USB_DEVICE(0x0e8d, 0x3329), /* i-blue 747, Qstarz BT-Q1000, Holux M-241 */
132209 + .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
132210 + },
132211 { USB_DEVICE(0x0e8d, 0x3329), /* MediaTek Inc GPS */
132212 .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
132213 },
132214 @@ -1376,15 +1379,6 @@
132215 { USB_DEVICE(0x0572, 0x1324), /* Conexant USB MODEM RD02-D400 */
132216 .driver_info = NO_UNION_NORMAL, /* has no union descriptor */
132217 },
132218 - { USB_DEVICE(0x22b8, 0x6425), /* Motorola MOTOMAGX phones */
132219 - },
132220 - { USB_DEVICE(0x0572, 0x1329), /* Hummingbird huc56s (Conexant) */
132221 - .driver_info = NO_UNION_NORMAL, /* union descriptor misplaced on
132222 - data interface instead of
132223 - communications interface.
132224 - Maybe we should define a new
132225 - quirk for this. */
132226 - },
132227
132228 /* control interfaces with various AT-command sets */
132229 { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
132230 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/class/usbtmc.c linux-2.6.29-rc3.owrt/drivers/usb/class/usbtmc.c
132231 --- linux-2.6.29.owrt/drivers/usb/class/usbtmc.c 2009-05-10 22:04:38.000000000 +0200
132232 +++ linux-2.6.29-rc3.owrt/drivers/usb/class/usbtmc.c 2009-05-10 23:48:29.000000000 +0200
132233 @@ -50,7 +50,6 @@
132234
132235 static struct usb_device_id usbtmc_devices[] = {
132236 { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), },
132237 - { USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 1), },
132238 { 0, } /* terminating entry */
132239 };
132240 MODULE_DEVICE_TABLE(usb, usbtmc_devices);
132241 @@ -107,13 +106,12 @@
132242 {
132243 struct usb_interface *intf;
132244 struct usbtmc_device_data *data;
132245 - int retval = 0;
132246 + int retval = -ENODEV;
132247
132248 intf = usb_find_interface(&usbtmc_driver, iminor(inode));
132249 if (!intf) {
132250 printk(KERN_ERR KBUILD_MODNAME
132251 ": can not find device for minor %d", iminor(inode));
132252 - retval = -ENODEV;
132253 goto exit;
132254 }
132255
132256 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/core/devio.c linux-2.6.29-rc3.owrt/drivers/usb/core/devio.c
132257 --- linux-2.6.29.owrt/drivers/usb/core/devio.c 2009-05-10 22:04:38.000000000 +0200
132258 +++ linux-2.6.29-rc3.owrt/drivers/usb/core/devio.c 2009-05-10 23:48:29.000000000 +0200
132259 @@ -359,6 +359,11 @@
132260 spin_lock_irqsave(&ps->lock, flags);
132261 }
132262 spin_unlock_irqrestore(&ps->lock, flags);
132263 + as = async_getcompleted(ps);
132264 + while (as) {
132265 + free_async(as);
132266 + as = async_getcompleted(ps);
132267 + }
132268 }
132269
132270 static void destroy_async_on_interface(struct dev_state *ps,
132271 @@ -638,7 +643,6 @@
132272 struct dev_state *ps = file->private_data;
132273 struct usb_device *dev = ps->dev;
132274 unsigned int ifnum;
132275 - struct async *as;
132276
132277 usb_lock_device(dev);
132278
132279 @@ -657,12 +661,6 @@
132280 usb_unlock_device(dev);
132281 usb_put_dev(dev);
132282 put_pid(ps->disc_pid);
132283 -
132284 - as = async_getcompleted(ps);
132285 - while (as) {
132286 - free_async(as);
132287 - as = async_getcompleted(ps);
132288 - }
132289 kfree(ps);
132290 return 0;
132291 }
132292 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/core/hcd.h linux-2.6.29-rc3.owrt/drivers/usb/core/hcd.h
132293 --- linux-2.6.29.owrt/drivers/usb/core/hcd.h 2009-05-10 22:04:38.000000000 +0200
132294 +++ linux-2.6.29-rc3.owrt/drivers/usb/core/hcd.h 2009-05-10 23:48:29.000000000 +0200
132295 @@ -257,6 +257,7 @@
132296
132297 #ifdef CONFIG_PM
132298 extern int usb_hcd_pci_suspend(struct pci_dev *dev, pm_message_t msg);
132299 +extern int usb_hcd_pci_resume_early(struct pci_dev *dev);
132300 extern int usb_hcd_pci_resume(struct pci_dev *dev);
132301 #endif /* CONFIG_PM */
132302
132303 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/core/hcd-pci.c linux-2.6.29-rc3.owrt/drivers/usb/core/hcd-pci.c
132304 --- linux-2.6.29.owrt/drivers/usb/core/hcd-pci.c 2009-05-10 22:04:38.000000000 +0200
132305 +++ linux-2.6.29-rc3.owrt/drivers/usb/core/hcd-pci.c 2009-05-10 23:48:29.000000000 +0200
132306 @@ -298,6 +298,19 @@
132307 EXPORT_SYMBOL_GPL(usb_hcd_pci_suspend);
132308
132309 /**
132310 + * usb_hcd_pci_resume_early - resume a PCI-based HCD before IRQs are enabled
132311 + * @dev: USB Host Controller being resumed
132312 + *
132313 + * Store this function in the HCD's struct pci_driver as .resume_early.
132314 + */
132315 +int usb_hcd_pci_resume_early(struct pci_dev *dev)
132316 +{
132317 + pci_restore_state(dev);
132318 + return 0;
132319 +}
132320 +EXPORT_SYMBOL_GPL(usb_hcd_pci_resume_early);
132321 +
132322 +/**
132323 * usb_hcd_pci_resume - power management resume of a PCI-based HCD
132324 * @dev: USB Host Controller being resumed
132325 *
132326 @@ -320,8 +333,6 @@
132327 }
132328 #endif
132329
132330 - pci_restore_state(dev);
132331 -
132332 hcd = pci_get_drvdata(dev);
132333 if (hcd->state != HC_STATE_SUSPENDED) {
132334 dev_dbg(hcd->self.controller,
132335 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/core/message.c linux-2.6.29-rc3.owrt/drivers/usb/core/message.c
132336 --- linux-2.6.29.owrt/drivers/usb/core/message.c 2009-05-10 22:04:38.000000000 +0200
132337 +++ linux-2.6.29-rc3.owrt/drivers/usb/core/message.c 2009-05-10 23:48:29.000000000 +0200
132338 @@ -653,7 +653,7 @@
132339 if (result <= 0 && result != -ETIMEDOUT)
132340 continue;
132341 if (result > 1 && ((u8 *)buf)[1] != type) {
132342 - result = -ENODATA;
132343 + result = -EPROTO;
132344 continue;
132345 }
132346 break;
132347 @@ -696,13 +696,8 @@
132348 USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
132349 (USB_DT_STRING << 8) + index, langid, buf, size,
132350 USB_CTRL_GET_TIMEOUT);
132351 - if (result == 0 || result == -EPIPE)
132352 - continue;
132353 - if (result > 1 && ((u8 *) buf)[1] != USB_DT_STRING) {
132354 - result = -ENODATA;
132355 - continue;
132356 - }
132357 - break;
132358 + if (!(result == 0 || result == -EPIPE))
132359 + break;
132360 }
132361 return result;
132362 }
132363 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/gadget/file_storage.c linux-2.6.29-rc3.owrt/drivers/usb/gadget/file_storage.c
132364 --- linux-2.6.29.owrt/drivers/usb/gadget/file_storage.c 2009-05-10 22:04:38.000000000 +0200
132365 +++ linux-2.6.29-rc3.owrt/drivers/usb/gadget/file_storage.c 2009-05-10 23:48:29.000000000 +0200
132366 @@ -3879,11 +3879,7 @@
132367 mod_data.protocol_type = USB_SC_SCSI;
132368 mod_data.protocol_name = "Transparent SCSI";
132369
132370 - /* Some peripheral controllers are known not to be able to
132371 - * halt bulk endpoints correctly. If one of them is present,
132372 - * disable stalls.
132373 - */
132374 - if (gadget_is_sh(fsg->gadget) || gadget_is_at91(fsg->gadget))
132375 + if (gadget_is_sh(fsg->gadget))
132376 mod_data.can_stall = 0;
132377
132378 if (mod_data.release == 0xffff) { // Parameter wasn't set
132379 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/gadget/f_obex.c linux-2.6.29-rc3.owrt/drivers/usb/gadget/f_obex.c
132380 --- linux-2.6.29.owrt/drivers/usb/gadget/f_obex.c 2009-05-10 22:04:38.000000000 +0200
132381 +++ linux-2.6.29-rc3.owrt/drivers/usb/gadget/f_obex.c 2009-05-10 23:48:29.000000000 +0200
132382 @@ -366,9 +366,9 @@
132383 f->hs_descriptors = usb_copy_descriptors(hs_function);
132384
132385 obex->hs.obex_in = usb_find_endpoint(hs_function,
132386 - f->hs_descriptors, &obex_hs_ep_in_desc);
132387 + f->descriptors, &obex_hs_ep_in_desc);
132388 obex->hs.obex_out = usb_find_endpoint(hs_function,
132389 - f->hs_descriptors, &obex_hs_ep_out_desc);
132390 + f->descriptors, &obex_hs_ep_out_desc);
132391 }
132392
132393 /* Avoid letting this gadget enumerate until the userspace
132394 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/gadget/fsl_qe_udc.c linux-2.6.29-rc3.owrt/drivers/usb/gadget/fsl_qe_udc.c
132395 --- linux-2.6.29.owrt/drivers/usb/gadget/fsl_qe_udc.c 2009-05-10 22:04:38.000000000 +0200
132396 +++ linux-2.6.29-rc3.owrt/drivers/usb/gadget/fsl_qe_udc.c 2009-05-10 23:48:29.000000000 +0200
132397 @@ -1622,8 +1622,6 @@
132398 nuke(ep, -ESHUTDOWN);
132399 ep->desc = NULL;
132400 ep->stopped = 1;
132401 - ep->tx_req = NULL;
132402 - qe_ep_reset(udc, ep->epnum);
132403 spin_unlock_irqrestore(&udc->lock, flags);
132404
132405 cpm_muram_free(cpm_muram_offset(ep->rxbase));
132406 @@ -1683,11 +1681,14 @@
132407 kfree(req);
132408 }
132409
132410 -static int __qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req)
132411 +/* queues (submits) an I/O request to an endpoint */
132412 +static int qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
132413 + gfp_t gfp_flags)
132414 {
132415 struct qe_ep *ep = container_of(_ep, struct qe_ep, ep);
132416 struct qe_req *req = container_of(_req, struct qe_req, req);
132417 struct qe_udc *udc;
132418 + unsigned long flags;
132419 int reval;
132420
132421 udc = ep->udc;
132422 @@ -1731,7 +1732,7 @@
132423 list_add_tail(&req->queue, &ep->queue);
132424 dev_vdbg(udc->dev, "gadget have request in %s! %d\n",
132425 ep->name, req->req.length);
132426 -
132427 + spin_lock_irqsave(&udc->lock, flags);
132428 /* push the request to device */
132429 if (ep_is_in(ep))
132430 reval = ep_req_send(ep, req);
132431 @@ -1747,22 +1748,9 @@
132432 if (ep->dir == USB_DIR_OUT)
132433 reval = ep_req_receive(ep, req);
132434
132435 - return 0;
132436 -}
132437 -
132438 -/* queues (submits) an I/O request to an endpoint */
132439 -static int qe_ep_queue(struct usb_ep *_ep, struct usb_request *_req,
132440 - gfp_t gfp_flags)
132441 -{
132442 - struct qe_ep *ep = container_of(_ep, struct qe_ep, ep);
132443 - struct qe_udc *udc = ep->udc;
132444 - unsigned long flags;
132445 - int ret;
132446 -
132447 - spin_lock_irqsave(&udc->lock, flags);
132448 - ret = __qe_ep_queue(_ep, _req);
132449 spin_unlock_irqrestore(&udc->lock, flags);
132450 - return ret;
132451 +
132452 + return 0;
132453 }
132454
132455 /* dequeues (cancels, unlinks) an I/O request from an endpoint */
132456 @@ -2020,7 +2008,7 @@
132457 udc->ep0_dir = USB_DIR_IN;
132458
132459 /* data phase */
132460 - status = __qe_ep_queue(&ep->ep, &req->req);
132461 + status = qe_ep_queue(&ep->ep, &req->req, GFP_ATOMIC);
132462
132463 if (status == 0)
132464 return;
132465 @@ -2163,9 +2151,6 @@
132466 {
132467 unsigned char i;
132468
132469 - if (udc->usb_state == USB_STATE_DEFAULT)
132470 - return 0;
132471 -
132472 qe_usb_disable();
132473 out_8(&udc->usb_regs->usb_usadr, 0);
132474
132475 @@ -2457,12 +2442,8 @@
132476 struct usb_ctlr __iomem *qe_usbregs;
132477 qe_usbregs = udc->usb_regs;
132478
132479 - /* Spec says that we must enable the USB controller to change mode. */
132480 + /* Init the usb register */
132481 out_8(&qe_usbregs->usb_usmod, 0x01);
132482 - /* Mode changed, now disable it, since muram isn't initialized yet. */
132483 - out_8(&qe_usbregs->usb_usmod, 0x00);
132484 -
132485 - /* Initialize the rest. */
132486 out_be16(&qe_usbregs->usb_usbmr, 0);
132487 out_8(&qe_usbregs->usb_uscom, 0);
132488 out_be16(&qe_usbregs->usb_usber, USBER_ALL_CLEAR);
132489 @@ -2623,10 +2604,6 @@
132490 (unsigned long)udc_controller);
132491 /* request irq and disable DR */
132492 udc_controller->usb_irq = irq_of_parse_and_map(np, 0);
132493 - if (!udc_controller->usb_irq) {
132494 - ret = -EINVAL;
132495 - goto err_noirq;
132496 - }
132497
132498 ret = request_irq(udc_controller->usb_irq, qe_udc_irq, 0,
132499 driver_name, udc_controller);
132500 @@ -2648,8 +2625,6 @@
132501 err6:
132502 free_irq(udc_controller->usb_irq, udc_controller);
132503 err5:
132504 - irq_dispose_mapping(udc_controller->usb_irq);
132505 -err_noirq:
132506 if (udc_controller->nullmap) {
132507 dma_unmap_single(udc_controller->gadget.dev.parent,
132508 udc_controller->nullp, 256,
132509 @@ -2673,7 +2648,7 @@
132510 iounmap(udc_controller->usb_regs);
132511 err1:
132512 kfree(udc_controller);
132513 - udc_controller = NULL;
132514 +
132515 return ret;
132516 }
132517
132518 @@ -2735,7 +2710,6 @@
132519 kfree(ep->txframe);
132520
132521 free_irq(udc_controller->usb_irq, udc_controller);
132522 - irq_dispose_mapping(udc_controller->usb_irq);
132523
132524 tasklet_kill(&udc_controller->rx_tasklet);
132525
132526 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/gadget/fsl_usb2_udc.c linux-2.6.29-rc3.owrt/drivers/usb/gadget/fsl_usb2_udc.c
132527 --- linux-2.6.29.owrt/drivers/usb/gadget/fsl_usb2_udc.c 2009-05-10 22:04:38.000000000 +0200
132528 +++ linux-2.6.29-rc3.owrt/drivers/usb/gadget/fsl_usb2_udc.c 2009-05-10 23:48:29.000000000 +0200
132529 @@ -404,10 +404,7 @@
132530 }
132531 if (zlt)
132532 tmp |= EP_QUEUE_HEAD_ZLT_SEL;
132533 -
132534 p_QH->max_pkt_length = cpu_to_le32(tmp);
132535 - p_QH->next_dtd_ptr = 1;
132536 - p_QH->size_ioc_int_sts = 0;
132537
132538 return;
132539 }
132540 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/gadget/Kconfig linux-2.6.29-rc3.owrt/drivers/usb/gadget/Kconfig
132541 --- linux-2.6.29.owrt/drivers/usb/gadget/Kconfig 2009-05-10 22:04:38.000000000 +0200
132542 +++ linux-2.6.29-rc3.owrt/drivers/usb/gadget/Kconfig 2009-05-10 23:48:29.000000000 +0200
132543 @@ -191,7 +191,6 @@
132544 boolean "OMAP USB Device Controller"
132545 depends on ARCH_OMAP
132546 select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_H4_OTG
132547 - select USB_OTG_UTILS if ARCH_OMAP
132548 help
132549 Many Texas Instruments OMAP processors have flexible full
132550 speed USB device controllers, with support for up to 30
132551 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/gadget/pxa25x_udc.c linux-2.6.29-rc3.owrt/drivers/usb/gadget/pxa25x_udc.c
132552 --- linux-2.6.29.owrt/drivers/usb/gadget/pxa25x_udc.c 2009-05-10 22:04:38.000000000 +0200
132553 +++ linux-2.6.29-rc3.owrt/drivers/usb/gadget/pxa25x_udc.c 2009-05-10 23:48:29.000000000 +0200
132554 @@ -904,8 +904,8 @@
132555
132556 /* most IN status is the same, but ISO can't stall */
132557 *ep->reg_udccs = UDCCS_BI_TPC|UDCCS_BI_FTF|UDCCS_BI_TUR
132558 - | (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC
132559 - ? 0 : UDCCS_BI_SST);
132560 + | (ep->bmAttributes == USB_ENDPOINT_XFER_ISOC)
132561 + ? 0 : UDCCS_BI_SST;
132562 }
132563
132564
132565 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ehci.h linux-2.6.29-rc3.owrt/drivers/usb/host/ehci.h
132566 --- linux-2.6.29.owrt/drivers/usb/host/ehci.h 2009-05-10 22:04:38.000000000 +0200
132567 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ehci.h 2009-05-10 23:48:29.000000000 +0200
132568 @@ -87,10 +87,6 @@
132569 int next_uframe; /* scan periodic, start here */
132570 unsigned periodic_sched; /* periodic activity count */
132571
132572 - /* list of itds completed while clock_frame was still active */
132573 - struct list_head cached_itd_list;
132574 - unsigned clock_frame;
132575 -
132576 /* per root hub port */
132577 unsigned long reset_done [EHCI_MAX_ROOT_PORTS];
132578
132579 @@ -224,8 +220,6 @@
132580 }
132581 }
132582
132583 -static void free_cached_itd_list(struct ehci_hcd *ehci);
132584 -
132585 /*-------------------------------------------------------------------------*/
132586
132587 #include <linux/usb/ehci_def.h>
132588 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ehci-hcd.c linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-hcd.c
132589 --- linux-2.6.29.owrt/drivers/usb/host/ehci-hcd.c 2009-05-10 22:04:38.000000000 +0200
132590 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-hcd.c 2009-05-10 23:48:29.000000000 +0200
132591 @@ -485,7 +485,6 @@
132592 * periodic_size can shrink by USBCMD update if hcc_params allows.
132593 */
132594 ehci->periodic_size = DEFAULT_I_TDPS;
132595 - INIT_LIST_HEAD(&ehci->cached_itd_list);
132596 if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0)
132597 return retval;
132598
132599 @@ -498,7 +497,6 @@
132600
132601 ehci->reclaim = NULL;
132602 ehci->next_uframe = -1;
132603 - ehci->clock_frame = -1;
132604
132605 /*
132606 * dedicate a qh for the async ring head, since we couldn't unlink
132607 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ehci-mem.c linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-mem.c
132608 --- linux-2.6.29.owrt/drivers/usb/host/ehci-mem.c 2009-05-10 22:04:38.000000000 +0200
132609 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-mem.c 2009-05-10 23:48:29.000000000 +0200
132610 @@ -128,7 +128,6 @@
132611
132612 static void ehci_mem_cleanup (struct ehci_hcd *ehci)
132613 {
132614 - free_cached_itd_list(ehci);
132615 if (ehci->async)
132616 qh_put (ehci->async);
132617 ehci->async = NULL;
132618 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ehci-pci.c linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-pci.c
132619 --- linux-2.6.29.owrt/drivers/usb/host/ehci-pci.c 2009-05-10 22:04:38.000000000 +0200
132620 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-pci.c 2009-05-10 23:48:29.000000000 +0200
132621 @@ -432,6 +432,7 @@
132622
132623 #ifdef CONFIG_PM
132624 .suspend = usb_hcd_pci_suspend,
132625 + .resume_early = usb_hcd_pci_resume_early,
132626 .resume = usb_hcd_pci_resume,
132627 #endif
132628 .shutdown = usb_hcd_pci_shutdown,
132629 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ehci-q.c linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-q.c
132630 --- linux-2.6.29.owrt/drivers/usb/host/ehci-q.c 2009-05-10 22:04:38.000000000 +0200
132631 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-q.c 2009-05-10 23:48:29.000000000 +0200
132632 @@ -1095,8 +1095,7 @@
132633 prev->qh_next = qh->qh_next;
132634 wmb ();
132635
132636 - /* If the controller isn't running, we don't have to wait for it */
132637 - if (unlikely(!HC_IS_RUNNING(ehci_to_hcd(ehci)->state))) {
132638 + if (unlikely (ehci_to_hcd(ehci)->state == HC_STATE_HALT)) {
132639 /* if (unlikely (qh->reclaim != 0))
132640 * this will recurse, probably not much
132641 */
132642 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ehci-sched.c linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-sched.c
132643 --- linux-2.6.29.owrt/drivers/usb/host/ehci-sched.c 2009-05-10 22:04:38.000000000 +0200
132644 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ehci-sched.c 2009-05-10 23:48:29.000000000 +0200
132645 @@ -1004,8 +1004,7 @@
132646
132647 is_in = (stream->bEndpointAddress & USB_DIR_IN) ? 0x10 : 0;
132648 stream->bEndpointAddress &= 0x0f;
132649 - if (stream->ep)
132650 - stream->ep->hcpriv = NULL;
132651 + stream->ep->hcpriv = NULL;
132652
132653 if (stream->rescheduled) {
132654 ehci_info (ehci, "ep%d%s-iso rescheduled "
132655 @@ -1536,7 +1535,7 @@
132656 struct ehci_itd, itd_list);
132657 list_move_tail (&itd->itd_list, &stream->td_list);
132658 itd->stream = iso_stream_get (stream);
132659 - itd->urb = urb;
132660 + itd->urb = usb_get_urb (urb);
132661 itd_init (ehci, stream, itd);
132662 }
132663
132664 @@ -1645,7 +1644,7 @@
132665 (void) disable_periodic(ehci);
132666 ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
132667
132668 - if (unlikely(list_is_singular(&stream->td_list))) {
132669 + if (unlikely (list_empty (&stream->td_list))) {
132670 ehci_to_hcd(ehci)->self.bandwidth_allocated
132671 -= stream->bandwidth;
132672 ehci_vdbg (ehci,
132673 @@ -1654,27 +1653,14 @@
132674 (stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out");
132675 }
132676 iso_stream_put (ehci, stream);
132677 -
132678 + /* OK to recycle this ITD now that its completion callback ran. */
132679 done:
132680 + usb_put_urb(urb);
132681 itd->urb = NULL;
132682 - if (ehci->clock_frame != itd->frame || itd->index[7] != -1) {
132683 - /* OK to recycle this ITD now. */
132684 - itd->stream = NULL;
132685 - list_move(&itd->itd_list, &stream->free_list);
132686 - iso_stream_put(ehci, stream);
132687 - } else {
132688 - /* HW might remember this ITD, so we can't recycle it yet.
132689 - * Move it to a safe place until a new frame starts.
132690 - */
132691 - list_move(&itd->itd_list, &ehci->cached_itd_list);
132692 - if (stream->refcount == 2) {
132693 - /* If iso_stream_put() were called here, stream
132694 - * would be freed. Instead, just prevent reuse.
132695 - */
132696 - stream->ep->hcpriv = NULL;
132697 - stream->ep = NULL;
132698 - }
132699 - }
132700 + itd->stream = NULL;
132701 + list_move(&itd->itd_list, &stream->free_list);
132702 + iso_stream_put(ehci, stream);
132703 +
132704 return retval;
132705 }
132706
132707 @@ -1948,7 +1934,7 @@
132708 struct ehci_sitd, sitd_list);
132709 list_move_tail (&sitd->sitd_list, &stream->td_list);
132710 sitd->stream = iso_stream_get (stream);
132711 - sitd->urb = urb;
132712 + sitd->urb = usb_get_urb (urb);
132713
132714 sitd_patch(ehci, stream, sitd, sched, packet);
132715 sitd_link (ehci, (next_uframe >> 3) % ehci->periodic_size,
132716 @@ -2033,7 +2019,7 @@
132717 (void) disable_periodic(ehci);
132718 ehci_to_hcd(ehci)->self.bandwidth_isoc_reqs--;
132719
132720 - if (list_is_singular(&stream->td_list)) {
132721 + if (list_empty (&stream->td_list)) {
132722 ehci_to_hcd(ehci)->self.bandwidth_allocated
132723 -= stream->bandwidth;
132724 ehci_vdbg (ehci,
132725 @@ -2044,6 +2030,7 @@
132726 iso_stream_put (ehci, stream);
132727 /* OK to recycle this SITD now that its completion callback ran. */
132728 done:
132729 + usb_put_urb(urb);
132730 sitd->urb = NULL;
132731 sitd->stream = NULL;
132732 list_move(&sitd->sitd_list, &stream->free_list);
132733 @@ -2114,20 +2101,6 @@
132734
132735 /*-------------------------------------------------------------------------*/
132736
132737 -static void free_cached_itd_list(struct ehci_hcd *ehci)
132738 -{
132739 - struct ehci_itd *itd, *n;
132740 -
132741 - list_for_each_entry_safe(itd, n, &ehci->cached_itd_list, itd_list) {
132742 - struct ehci_iso_stream *stream = itd->stream;
132743 - itd->stream = NULL;
132744 - list_move(&itd->itd_list, &stream->free_list);
132745 - iso_stream_put(ehci, stream);
132746 - }
132747 -}
132748 -
132749 -/*-------------------------------------------------------------------------*/
132750 -
132751 static void
132752 scan_periodic (struct ehci_hcd *ehci)
132753 {
132754 @@ -2142,17 +2115,10 @@
132755 * Touches as few pages as possible: cache-friendly.
132756 */
132757 now_uframe = ehci->next_uframe;
132758 - if (HC_IS_RUNNING(ehci_to_hcd(ehci)->state)) {
132759 + if (HC_IS_RUNNING (ehci_to_hcd(ehci)->state))
132760 clock = ehci_readl(ehci, &ehci->regs->frame_index);
132761 - clock_frame = (clock >> 3) % ehci->periodic_size;
132762 - } else {
132763 + else
132764 clock = now_uframe + mod - 1;
132765 - clock_frame = -1;
132766 - }
132767 - if (ehci->clock_frame != clock_frame) {
132768 - free_cached_itd_list(ehci);
132769 - ehci->clock_frame = clock_frame;
132770 - }
132771 clock %= mod;
132772 clock_frame = clock >> 3;
132773
132774 @@ -2311,10 +2277,6 @@
132775 /* rescan the rest of this frame, then ... */
132776 clock = now;
132777 clock_frame = clock >> 3;
132778 - if (ehci->clock_frame != clock_frame) {
132779 - free_cached_itd_list(ehci);
132780 - ehci->clock_frame = clock_frame;
132781 - }
132782 } else {
132783 now_uframe++;
132784 now_uframe %= mod;
132785 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/ohci-pci.c linux-2.6.29-rc3.owrt/drivers/usb/host/ohci-pci.c
132786 --- linux-2.6.29.owrt/drivers/usb/host/ohci-pci.c 2009-05-10 22:04:38.000000000 +0200
132787 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/ohci-pci.c 2009-05-10 23:48:29.000000000 +0200
132788 @@ -487,6 +487,7 @@
132789
132790 #ifdef CONFIG_PM
132791 .suspend = usb_hcd_pci_suspend,
132792 + .resume_early = usb_hcd_pci_resume_early,
132793 .resume = usb_hcd_pci_resume,
132794 #endif
132795
132796 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/uhci-hcd.c linux-2.6.29-rc3.owrt/drivers/usb/host/uhci-hcd.c
132797 --- linux-2.6.29.owrt/drivers/usb/host/uhci-hcd.c 2009-05-10 22:04:38.000000000 +0200
132798 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/uhci-hcd.c 2009-05-10 23:48:29.000000000 +0200
132799 @@ -942,6 +942,7 @@
132800
132801 #ifdef CONFIG_PM
132802 .suspend = usb_hcd_pci_suspend,
132803 + .resume_early = usb_hcd_pci_resume_early,
132804 .resume = usb_hcd_pci_resume,
132805 #endif /* PM */
132806 };
132807 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/whci/asl.c linux-2.6.29-rc3.owrt/drivers/usb/host/whci/asl.c
132808 --- linux-2.6.29.owrt/drivers/usb/host/whci/asl.c 2009-05-10 22:04:38.000000000 +0200
132809 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/whci/asl.c 2009-05-10 23:48:29.000000000 +0200
132810 @@ -170,17 +170,12 @@
132811 void asl_update(struct whc *whc, uint32_t wusbcmd)
132812 {
132813 struct wusbhc *wusbhc = &whc->wusbhc;
132814 - long t;
132815
132816 mutex_lock(&wusbhc->mutex);
132817 if (wusbhc->active) {
132818 whc_write_wusbcmd(whc, wusbcmd, wusbcmd);
132819 - t = wait_event_timeout(
132820 - whc->async_list_wq,
132821 - (le_readl(whc->base + WUSBCMD) & WUSBCMD_ASYNC_UPDATED) == 0,
132822 - msecs_to_jiffies(1000));
132823 - if (t == 0)
132824 - whc_hw_error(whc, "ASL update timeout");
132825 + wait_event(whc->async_list_wq,
132826 + (le_readl(whc->base + WUSBCMD) & WUSBCMD_ASYNC_UPDATED) == 0);
132827 }
132828 mutex_unlock(&wusbhc->mutex);
132829 }
132830 @@ -227,13 +222,13 @@
132831 * Now that the ASL is updated, complete the removal of any
132832 * removed qsets.
132833 */
132834 - spin_lock_irq(&whc->lock);
132835 + spin_lock(&whc->lock);
132836
132837 list_for_each_entry_safe(qset, t, &whc->async_removed_list, list_node) {
132838 qset_remove_complete(whc, qset);
132839 }
132840
132841 - spin_unlock_irq(&whc->lock);
132842 + spin_unlock(&whc->lock);
132843 }
132844
132845 /**
132846 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/whci/hw.c linux-2.6.29-rc3.owrt/drivers/usb/host/whci/hw.c
132847 --- linux-2.6.29.owrt/drivers/usb/host/whci/hw.c 2009-05-10 22:04:38.000000000 +0200
132848 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/whci/hw.c 2009-05-10 23:48:29.000000000 +0200
132849 @@ -87,18 +87,3 @@
132850
132851 return ret;
132852 }
132853 -
132854 -/**
132855 - * whc_hw_error - recover from a hardware error
132856 - * @whc: the WHCI HC that broke.
132857 - * @reason: a description of the failure.
132858 - *
132859 - * Recover from broken hardware with a full reset.
132860 - */
132861 -void whc_hw_error(struct whc *whc, const char *reason)
132862 -{
132863 - struct wusbhc *wusbhc = &whc->wusbhc;
132864 -
132865 - dev_err(&whc->umc->dev, "hardware error: %s\n", reason);
132866 - wusbhc_reset_all(wusbhc);
132867 -}
132868 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/whci/pzl.c linux-2.6.29-rc3.owrt/drivers/usb/host/whci/pzl.c
132869 --- linux-2.6.29.owrt/drivers/usb/host/whci/pzl.c 2009-05-10 22:04:38.000000000 +0200
132870 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/whci/pzl.c 2009-05-10 23:48:29.000000000 +0200
132871 @@ -183,17 +183,12 @@
132872 void pzl_update(struct whc *whc, uint32_t wusbcmd)
132873 {
132874 struct wusbhc *wusbhc = &whc->wusbhc;
132875 - long t;
132876
132877 mutex_lock(&wusbhc->mutex);
132878 if (wusbhc->active) {
132879 whc_write_wusbcmd(whc, wusbcmd, wusbcmd);
132880 - t = wait_event_timeout(
132881 - whc->periodic_list_wq,
132882 - (le_readl(whc->base + WUSBCMD) & WUSBCMD_PERIODIC_UPDATED) == 0,
132883 - msecs_to_jiffies(1000));
132884 - if (t == 0)
132885 - whc_hw_error(whc, "PZL update timeout");
132886 + wait_event(whc->periodic_list_wq,
132887 + (le_readl(whc->base + WUSBCMD) & WUSBCMD_PERIODIC_UPDATED) == 0);
132888 }
132889 mutex_unlock(&wusbhc->mutex);
132890 }
132891 @@ -255,13 +250,13 @@
132892 * Now that the PZL is updated, complete the removal of any
132893 * removed qsets.
132894 */
132895 - spin_lock_irq(&whc->lock);
132896 + spin_lock(&whc->lock);
132897
132898 list_for_each_entry_safe(qset, t, &whc->periodic_removed_list, list_node) {
132899 qset_remove_complete(whc, qset);
132900 }
132901
132902 - spin_unlock_irq(&whc->lock);
132903 + spin_unlock(&whc->lock);
132904 }
132905
132906 /**
132907 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/host/whci/whcd.h linux-2.6.29-rc3.owrt/drivers/usb/host/whci/whcd.h
132908 --- linux-2.6.29.owrt/drivers/usb/host/whci/whcd.h 2009-05-10 22:04:38.000000000 +0200
132909 +++ linux-2.6.29-rc3.owrt/drivers/usb/host/whci/whcd.h 2009-05-10 23:48:29.000000000 +0200
132910 @@ -137,7 +137,6 @@
132911 /* hw.c */
132912 void whc_write_wusbcmd(struct whc *whc, u32 mask, u32 val);
132913 int whc_do_gencmd(struct whc *whc, u32 cmd, u32 params, void *addr, size_t len);
132914 -void whc_hw_error(struct whc *whc, const char *reason);
132915
132916 /* wusb.c */
132917 int whc_wusbhc_start(struct wusbhc *wusbhc);
132918 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/image/mdc800.c linux-2.6.29-rc3.owrt/drivers/usb/image/mdc800.c
132919 --- linux-2.6.29.owrt/drivers/usb/image/mdc800.c 2009-05-10 22:04:38.000000000 +0200
132920 +++ linux-2.6.29-rc3.owrt/drivers/usb/image/mdc800.c 2009-05-10 23:48:29.000000000 +0200
132921 @@ -499,7 +499,6 @@
132922 retval = usb_register_dev(intf, &mdc800_class);
132923 if (retval) {
132924 dev_err(&intf->dev, "Not able to get a minor for this device.\n");
132925 - mutex_unlock(&mdc800->io_lock);
132926 return -ENODEV;
132927 }
132928
132929 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/Makefile linux-2.6.29-rc3.owrt/drivers/usb/Makefile
132930 --- linux-2.6.29.owrt/drivers/usb/Makefile 2009-05-10 22:04:38.000000000 +0200
132931 +++ linux-2.6.29-rc3.owrt/drivers/usb/Makefile 2009-05-10 23:48:29.000000000 +0200
132932 @@ -11,7 +11,6 @@
132933 obj-$(CONFIG_PCI) += host/
132934 obj-$(CONFIG_USB_EHCI_HCD) += host/
132935 obj-$(CONFIG_USB_ISP116X_HCD) += host/
132936 -obj-$(CONFIG_USB_ISP1760_HCD) += host/
132937 obj-$(CONFIG_USB_OHCI_HCD) += host/
132938 obj-$(CONFIG_USB_UHCI_HCD) += host/
132939 obj-$(CONFIG_USB_FHCI_HCD) += host/
132940 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/misc/adutux.c linux-2.6.29-rc3.owrt/drivers/usb/misc/adutux.c
132941 --- linux-2.6.29.owrt/drivers/usb/misc/adutux.c 2009-05-10 22:04:38.000000000 +0200
132942 +++ linux-2.6.29-rc3.owrt/drivers/usb/misc/adutux.c 2009-05-10 23:48:29.000000000 +0200
132943 @@ -376,7 +376,7 @@
132944 if (dev->open_count <= 0) {
132945 dbg(1," %s : device not opened", __func__);
132946 retval = -ENODEV;
132947 - goto unlock;
132948 + goto exit;
132949 }
132950
132951 adu_release_internal(dev);
132952 @@ -385,9 +385,9 @@
132953 if (!dev->open_count) /* ... and we're the last user */
132954 adu_delete(dev);
132955 }
132956 -unlock:
132957 - mutex_unlock(&adutux_mutex);
132958 +
132959 exit:
132960 + mutex_unlock(&adutux_mutex);
132961 dbg(2," %s : leave, return value %d", __func__, retval);
132962 return retval;
132963 }
132964 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/misc/vstusb.c linux-2.6.29-rc3.owrt/drivers/usb/misc/vstusb.c
132965 --- linux-2.6.29.owrt/drivers/usb/misc/vstusb.c 2009-05-10 22:04:38.000000000 +0200
132966 +++ linux-2.6.29-rc3.owrt/drivers/usb/misc/vstusb.c 2009-05-10 23:48:29.000000000 +0200
132967 @@ -401,7 +401,6 @@
132968 }
132969
132970 if (copy_from_user(buf, buffer, count)) {
132971 - mutex_unlock(&vstdev->lock);
132972 dev_err(&dev->dev, "%s: can't copy_from_user\n", __func__);
132973 retval = -EFAULT;
132974 goto exit;
132975 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/musb/davinci.c linux-2.6.29-rc3.owrt/drivers/usb/musb/davinci.c
132976 --- linux-2.6.29.owrt/drivers/usb/musb/davinci.c 2009-05-10 22:04:38.000000000 +0200
132977 +++ linux-2.6.29-rc3.owrt/drivers/usb/musb/davinci.c 2009-05-10 23:48:29.000000000 +0200
132978 @@ -377,8 +377,18 @@
132979 u32 revision;
132980
132981 musb->mregs += DAVINCI_BASE_OFFSET;
132982 +#if 0
132983 + /* REVISIT there's something odd about clocking, this
132984 + * didn't appear do the job ...
132985 + */
132986 + musb->clock = clk_get(pDevice, "usb");
132987 + if (IS_ERR(musb->clock))
132988 + return PTR_ERR(musb->clock);
132989
132990 - clk_enable(musb->clock);
132991 + status = clk_enable(musb->clock);
132992 + if (status < 0)
132993 + return -ENODEV;
132994 +#endif
132995
132996 /* returns zero if e.g. not clocked */
132997 revision = musb_readl(tibase, DAVINCI_USB_VERSION_REG);
132998 @@ -443,8 +453,5 @@
132999 }
133000
133001 phy_off();
133002 -
133003 - clk_disable(musb->clock);
133004 -
133005 return 0;
133006 }
133007 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/musb/musb_core.c linux-2.6.29-rc3.owrt/drivers/usb/musb/musb_core.c
133008 --- linux-2.6.29.owrt/drivers/usb/musb/musb_core.c 2009-05-10 22:04:38.000000000 +0200
133009 +++ linux-2.6.29-rc3.owrt/drivers/usb/musb/musb_core.c 2009-05-10 23:48:29.000000000 +0200
133010 @@ -115,7 +115,7 @@
133011
133012
133013 unsigned musb_debug;
133014 -module_param_named(debug, musb_debug, uint, S_IRUGO | S_IWUSR);
133015 +module_param(musb_debug, uint, S_IRUGO | S_IWUSR);
133016 MODULE_PARM_DESC(debug, "Debug message level. Default = 0");
133017
133018 #define DRIVER_AUTHOR "Mentor Graphics, Texas Instruments, Nokia"
133019 @@ -767,7 +767,6 @@
133020 #ifdef CONFIG_USB_MUSB_HDRC_HCD
133021 case OTG_STATE_A_HOST:
133022 case OTG_STATE_A_SUSPEND:
133023 - usb_hcd_resume_root_hub(musb_to_hcd(musb));
133024 musb_root_disconnect(musb);
133025 if (musb->a_wait_bcon != 0)
133026 musb_platform_try_idle(musb, jiffies
133027 @@ -1816,7 +1815,7 @@
133028 #ifdef CONFIG_SYSFS
133029 device_remove_file(musb->controller, &dev_attr_mode);
133030 device_remove_file(musb->controller, &dev_attr_vbus);
133031 -#ifdef CONFIG_USB_GADGET_MUSB_HDRC
133032 +#ifdef CONFIG_USB_MUSB_OTG
133033 device_remove_file(musb->controller, &dev_attr_srp);
133034 #endif
133035 #endif
133036 @@ -2064,7 +2063,7 @@
133037 #ifdef CONFIG_SYSFS
133038 device_remove_file(musb->controller, &dev_attr_mode);
133039 device_remove_file(musb->controller, &dev_attr_vbus);
133040 -#ifdef CONFIG_USB_GADGET_MUSB_HDRC
133041 +#ifdef CONFIG_USB_MUSB_OTG
133042 device_remove_file(musb->controller, &dev_attr_srp);
133043 #endif
133044 #endif
133045 @@ -2244,10 +2243,10 @@
133046 return platform_driver_probe(&musb_driver, musb_probe);
133047 }
133048
133049 -/* make us init after usbcore and i2c (transceivers, regulators, etc)
133050 - * and before usb gadget and host-side drivers start to register
133051 +/* make us init after usbcore and before usb
133052 + * gadget and host-side drivers start to register
133053 */
133054 -fs_initcall(musb_init);
133055 +subsys_initcall(musb_init);
133056
133057 static void __exit musb_cleanup(void)
133058 {
133059 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/musb/musb_gadget.c linux-2.6.29-rc3.owrt/drivers/usb/musb/musb_gadget.c
133060 --- linux-2.6.29.owrt/drivers/usb/musb/musb_gadget.c 2009-05-10 22:04:38.000000000 +0200
133061 +++ linux-2.6.29-rc3.owrt/drivers/usb/musb/musb_gadget.c 2009-05-10 23:48:29.000000000 +0200
133062 @@ -575,7 +575,7 @@
133063 struct usb_request *request = &req->request;
133064 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_out;
133065 void __iomem *epio = musb->endpoints[epnum].regs;
133066 - unsigned fifo_count = 0;
133067 + u16 fifo_count = 0;
133068 u16 len = musb_ep->packet_sz;
133069
133070 csr = musb_readw(epio, MUSB_RXCSR);
133071 @@ -687,7 +687,7 @@
133072 len, fifo_count,
133073 musb_ep->packet_sz);
133074
133075 - fifo_count = min_t(unsigned, len, fifo_count);
133076 + fifo_count = min(len, fifo_count);
133077
133078 #ifdef CONFIG_USB_TUSB_OMAP_DMA
133079 if (tusb_dma_omap() && musb_ep->dma) {
133080 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/musb/musb_host.c linux-2.6.29-rc3.owrt/drivers/usb/musb/musb_host.c
133081 --- linux-2.6.29.owrt/drivers/usb/musb/musb_host.c 2009-05-10 22:04:38.000000000 +0200
133082 +++ linux-2.6.29-rc3.owrt/drivers/usb/musb/musb_host.c 2009-05-10 23:48:29.000000000 +0200
133083 @@ -335,11 +335,16 @@
133084 static struct musb_qh *
133085 musb_giveback(struct musb_qh *qh, struct urb *urb, int status)
133086 {
133087 + int is_in;
133088 struct musb_hw_ep *ep = qh->hw_ep;
133089 struct musb *musb = ep->musb;
133090 - int is_in = usb_pipein(urb->pipe);
133091 int ready = qh->is_ready;
133092
133093 + if (ep->is_shared_fifo)
133094 + is_in = 1;
133095 + else
133096 + is_in = usb_pipein(urb->pipe);
133097 +
133098 /* save toggle eagerly, for paranoia */
133099 switch (qh->type) {
133100 case USB_ENDPOINT_XFER_BULK:
133101 @@ -427,7 +432,7 @@
133102 else
133103 qh = musb_giveback(qh, urb, urb->status);
133104
133105 - if (qh != NULL && qh->is_ready) {
133106 + if (qh && qh->is_ready && !list_empty(&qh->hep->urb_list)) {
133107 DBG(4, "... next ep%d %cX urb %p\n",
133108 hw_ep->epnum, is_in ? 'R' : 'T',
133109 next_urb(qh));
133110 @@ -937,8 +942,8 @@
133111 switch (musb->ep0_stage) {
133112 case MUSB_EP0_IN:
133113 fifo_dest = urb->transfer_buffer + urb->actual_length;
133114 - fifo_count = min_t(size_t, len, urb->transfer_buffer_length -
133115 - urb->actual_length);
133116 + fifo_count = min(len, ((u16) (urb->transfer_buffer_length
133117 + - urb->actual_length)));
133118 if (fifo_count < len)
133119 urb->status = -EOVERFLOW;
133120
133121 @@ -971,9 +976,10 @@
133122 }
133123 /* FALLTHROUGH */
133124 case MUSB_EP0_OUT:
133125 - fifo_count = min_t(size_t, qh->maxpacket,
133126 - urb->transfer_buffer_length -
133127 - urb->actual_length);
133128 + fifo_count = min(qh->maxpacket, ((u16)
133129 + (urb->transfer_buffer_length
133130 + - urb->actual_length)));
133131 +
133132 if (fifo_count) {
133133 fifo_dest = (u8 *) (urb->transfer_buffer
133134 + urb->actual_length);
133135 @@ -1155,8 +1161,7 @@
133136 struct urb *urb;
133137 struct musb_hw_ep *hw_ep = musb->endpoints + epnum;
133138 void __iomem *epio = hw_ep->regs;
133139 - struct musb_qh *qh = hw_ep->is_shared_fifo ? hw_ep->in_qh
133140 - : hw_ep->out_qh;
133141 + struct musb_qh *qh = hw_ep->out_qh;
133142 u32 status = 0;
133143 void __iomem *mbase = musb->mregs;
133144 struct dma_channel *dma;
133145 @@ -1303,8 +1308,7 @@
133146 * packets before updating TXCSR ... other docs disagree ...
133147 */
133148 /* PIO: start next packet in this URB */
133149 - if (wLength > qh->maxpacket)
133150 - wLength = qh->maxpacket;
133151 + wLength = min(qh->maxpacket, (u16) wLength);
133152 musb_write_fifo(hw_ep, wLength, buf);
133153 qh->segsize = wLength;
133154
133155 @@ -1863,21 +1867,19 @@
133156 }
133157 qh->type_reg = type_reg;
133158
133159 - /* Precompute RXINTERVAL/TXINTERVAL register */
133160 + /* precompute rxinterval/txinterval register */
133161 + interval = min((u8)16, epd->bInterval); /* log encoding */
133162 switch (qh->type) {
133163 case USB_ENDPOINT_XFER_INT:
133164 - /*
133165 - * Full/low speeds use the linear encoding,
133166 - * high speed uses the logarithmic encoding.
133167 - */
133168 - if (urb->dev->speed <= USB_SPEED_FULL) {
133169 - interval = max_t(u8, epd->bInterval, 1);
133170 - break;
133171 + /* fullspeed uses linear encoding */
133172 + if (USB_SPEED_FULL == urb->dev->speed) {
133173 + interval = epd->bInterval;
133174 + if (!interval)
133175 + interval = 1;
133176 }
133177 /* FALLTHROUGH */
133178 case USB_ENDPOINT_XFER_ISOC:
133179 - /* ISO always uses logarithmic encoding */
133180 - interval = min_t(u8, epd->bInterval, 16);
133181 + /* iso always uses log encoding */
133182 break;
133183 default:
133184 /* REVISIT we actually want to use NAK limits, hinting to the
133185 @@ -2035,9 +2037,9 @@
133186 goto done;
133187
133188 /* Any URB not actively programmed into endpoint hardware can be
133189 - * immediately given back; that's any URB not at the head of an
133190 + * immediately given back. Such an URB must be at the head of its
133191 * endpoint queue, unless someday we get real DMA queues. And even
133192 - * if it's at the head, it might not be known to the hardware...
133193 + * then, it might not be known to the hardware...
133194 *
133195 * Otherwise abort current transfer, pending dma, etc.; urb->status
133196 * has already been updated. This is a synchronous abort; it'd be
133197 @@ -2076,15 +2078,6 @@
133198 qh->is_ready = 0;
133199 __musb_giveback(musb, urb, 0);
133200 qh->is_ready = ready;
133201 -
133202 - /* If nothing else (usually musb_giveback) is using it
133203 - * and its URB list has emptied, recycle this qh.
133204 - */
133205 - if (ready && list_empty(&qh->hep->urb_list)) {
133206 - qh->hep->hcpriv = NULL;
133207 - list_del(&qh->ring);
133208 - kfree(qh);
133209 - }
133210 } else
133211 ret = musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
133212 done:
133213 @@ -2100,15 +2093,14 @@
133214 unsigned long flags;
133215 struct musb *musb = hcd_to_musb(hcd);
133216 u8 is_in = epnum & USB_DIR_IN;
133217 - struct musb_qh *qh;
133218 - struct urb *urb;
133219 + struct musb_qh *qh = hep->hcpriv;
133220 + struct urb *urb, *tmp;
133221 struct list_head *sched;
133222
133223 - spin_lock_irqsave(&musb->lock, flags);
133224 + if (!qh)
133225 + return;
133226
133227 - qh = hep->hcpriv;
133228 - if (qh == NULL)
133229 - goto exit;
133230 + spin_lock_irqsave(&musb->lock, flags);
133231
133232 switch (qh->type) {
133233 case USB_ENDPOINT_XFER_CONTROL:
133234 @@ -2143,28 +2135,13 @@
133235
133236 /* cleanup */
133237 musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
133238 + } else
133239 + urb = NULL;
133240
133241 - /* Then nuke all the others ... and advance the
133242 - * queue on hw_ep (e.g. bulk ring) when we're done.
133243 - */
133244 - while (!list_empty(&hep->urb_list)) {
133245 - urb = next_urb(qh);
133246 - urb->status = -ESHUTDOWN;
133247 - musb_advance_schedule(musb, urb, qh->hw_ep, is_in);
133248 - }
133249 - } else {
133250 - /* Just empty the queue; the hardware is busy with
133251 - * other transfers, and since !qh->is_ready nothing
133252 - * will activate any of these as it advances.
133253 - */
133254 - while (!list_empty(&hep->urb_list))
133255 - __musb_giveback(musb, next_urb(qh), -ESHUTDOWN);
133256 + /* then just nuke all the others */
133257 + list_for_each_entry_safe_from(urb, tmp, &hep->urb_list, urb_list)
133258 + musb_giveback(qh, urb, -ESHUTDOWN);
133259
133260 - hep->hcpriv = NULL;
133261 - list_del(&qh->ring);
133262 - kfree(qh);
133263 - }
133264 -exit:
133265 spin_unlock_irqrestore(&musb->lock, flags);
133266 }
133267
133268 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/aircable.c linux-2.6.29-rc3.owrt/drivers/usb/serial/aircable.c
133269 --- linux-2.6.29.owrt/drivers/usb/serial/aircable.c 2009-05-10 22:04:38.000000000 +0200
133270 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/aircable.c 2009-05-10 23:48:29.000000000 +0200
133271 @@ -621,9 +621,9 @@
133272 goto failed_usb_register;
133273 return 0;
133274
133275 -failed_usb_register:
133276 - usb_serial_deregister(&aircable_device);
133277 failed_serial_register:
133278 + usb_serial_deregister(&aircable_device);
133279 +failed_usb_register:
133280 return retval;
133281 }
133282
133283 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/cp2101.c linux-2.6.29-rc3.owrt/drivers/usb/serial/cp2101.c
133284 --- linux-2.6.29.owrt/drivers/usb/serial/cp2101.c 2009-05-10 22:04:38.000000000 +0200
133285 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/cp2101.c 2009-05-10 23:48:29.000000000 +0200
133286 @@ -79,7 +79,6 @@
133287 { USB_DEVICE(0x10C4, 0x814A) }, /* West Mountain Radio RIGblaster P&P */
133288 { USB_DEVICE(0x10C4, 0x814B) }, /* West Mountain Radio RIGtalk */
133289 { USB_DEVICE(0x10C4, 0x815E) }, /* Helicomm IP-Link 1220-DVM */
133290 - { USB_DEVICE(0x10C4, 0x819F) }, /* MJS USB Toslink Switcher */
133291 { USB_DEVICE(0x10C4, 0x81A6) }, /* ThinkOptics WavIt */
133292 { USB_DEVICE(0x10C4, 0x81AC) }, /* MSD Dash Hawk */
133293 { USB_DEVICE(0x10C4, 0x81C8) }, /* Lipowsky Industrie Elektronik GmbH, Baby-JTAG */
133294 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/ftdi_sio.c linux-2.6.29-rc3.owrt/drivers/usb/serial/ftdi_sio.c
133295 --- linux-2.6.29.owrt/drivers/usb/serial/ftdi_sio.c 2009-05-10 22:04:38.000000000 +0200
133296 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/ftdi_sio.c 2009-05-10 23:48:29.000000000 +0200
133297 @@ -662,12 +662,6 @@
133298 { USB_DEVICE(FTDI_VID, FTDI_DOMINTELL_DUSB_PID) },
133299 { USB_DEVICE(ALTI2_VID, ALTI2_N3_PID) },
133300 { USB_DEVICE(FTDI_VID, DIEBOLD_BCS_SE923_PID) },
133301 - { USB_DEVICE(FTDI_VID, FTDI_NDI_HUC_PID) },
133302 - { USB_DEVICE(ATMEL_VID, STK541_PID) },
133303 - { USB_DEVICE(DE_VID, STB_PID) },
133304 - { USB_DEVICE(DE_VID, WHT_PID) },
133305 - { USB_DEVICE(ADI_VID, ADI_GNICE_PID),
133306 - .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
133307 { }, /* Optional parameter entry */
133308 { } /* Terminating entry */
133309 };
133310 @@ -1070,10 +1064,8 @@
133311
133312 if (!capable(CAP_SYS_ADMIN)) {
133313 if (((new_serial.flags & ~ASYNC_USR_MASK) !=
133314 - (priv->flags & ~ASYNC_USR_MASK))) {
133315 - unlock_kernel();
133316 + (priv->flags & ~ASYNC_USR_MASK)))
133317 return -EPERM;
133318 - }
133319 priv->flags = ((priv->flags & ~ASYNC_USR_MASK) |
133320 (new_serial.flags & ASYNC_USR_MASK));
133321 priv->custom_divisor = new_serial.custom_divisor;
133322 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/ftdi_sio.h linux-2.6.29-rc3.owrt/drivers/usb/serial/ftdi_sio.h
133323 --- linux-2.6.29.owrt/drivers/usb/serial/ftdi_sio.h 2009-05-10 22:04:38.000000000 +0200
133324 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/ftdi_sio.h 2009-05-10 23:48:29.000000000 +0200
133325 @@ -844,9 +844,6 @@
133326 #define TML_VID 0x1B91 /* Vendor ID */
133327 #define TML_USB_SERIAL_PID 0x0064 /* USB - Serial Converter */
133328
133329 -/* NDI Polaris System */
133330 -#define FTDI_NDI_HUC_PID 0xDA70
133331 -
133332 /* Propox devices */
133333 #define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
133334
133335 @@ -893,26 +890,6 @@
133336 #define DIEBOLD_BCS_SE923_PID 0xfb99
133337
133338 /*
133339 - * Atmel STK541
133340 - */
133341 -#define ATMEL_VID 0x03eb /* Vendor ID */
133342 -#define STK541_PID 0x2109 /* Zigbee Controller */
133343 -
133344 -/*
133345 - * Dresden Elektronic Sensor Terminal Board
133346 - */
133347 -#define DE_VID 0x1cf1 /* Vendor ID */
133348 -#define STB_PID 0x0001 /* Sensor Terminal Board */
133349 -#define WHT_PID 0x0004 /* Wireless Handheld Terminal */
133350 -
133351 -/*
133352 - * Blackfin gnICE JTAG
133353 - * http://docs.blackfin.uclinux.org/doku.php?id=hw:jtag:gnice
133354 - */
133355 -#define ADI_VID 0x0456
133356 -#define ADI_GNICE_PID 0xF000
133357 -
133358 -/*
133359 * BmRequestType: 1100 0000b
133360 * bRequest: FTDI_E2_READ
133361 * wValue: 0
133362 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/option.c linux-2.6.29-rc3.owrt/drivers/usb/serial/option.c
133363 --- linux-2.6.29.owrt/drivers/usb/serial/option.c 2009-05-10 22:04:38.000000000 +0200
133364 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/option.c 2009-05-10 23:48:29.000000000 +0200
133365 @@ -89,7 +89,6 @@
133366 #define OPTION_PRODUCT_ETNA_MODEM_GT 0x7041
133367 #define OPTION_PRODUCT_ETNA_MODEM_EX 0x7061
133368 #define OPTION_PRODUCT_ETNA_KOI_MODEM 0x7100
133369 -#define OPTION_PRODUCT_GTM380_MODEM 0x7201
133370
133371 #define HUAWEI_VENDOR_ID 0x12D1
133372 #define HUAWEI_PRODUCT_E600 0x1001
133373 @@ -198,18 +197,16 @@
133374 /* OVATION PRODUCTS */
133375 #define NOVATELWIRELESS_PRODUCT_MC727 0x4100
133376 #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400
133377 -#define NOVATELWIRELESS_PRODUCT_U727 0x5010
133378
133379 /* FUTURE NOVATEL PRODUCTS */
133380 -#define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED 0X6000
133381 -#define NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED 0X6001
133382 -#define NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED 0X7000
133383 -#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED 0X7001
133384 -#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED 0X8000
133385 -#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0X8001
133386 -#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0X9000
133387 -#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0X9001
133388 -#define NOVATELWIRELESS_PRODUCT_GLOBAL 0XA001
133389 +#define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000
133390 +#define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000
133391 +#define NOVATELWIRELESS_PRODUCT_EMBEDDED_1 0x8000
133392 +#define NOVATELWIRELESS_PRODUCT_GLOBAL_1 0x9000
133393 +#define NOVATELWIRELESS_PRODUCT_EVDO_2 0x6001
133394 +#define NOVATELWIRELESS_PRODUCT_HSPA_2 0x7001
133395 +#define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001
133396 +#define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001
133397
133398 /* AMOI PRODUCTS */
133399 #define AMOI_VENDOR_ID 0x1614
133400 @@ -219,27 +216,6 @@
133401
133402 #define DELL_VENDOR_ID 0x413C
133403
133404 -/* Dell modems */
133405 -#define DELL_PRODUCT_5700_MINICARD 0x8114
133406 -#define DELL_PRODUCT_5500_MINICARD 0x8115
133407 -#define DELL_PRODUCT_5505_MINICARD 0x8116
133408 -#define DELL_PRODUCT_5700_EXPRESSCARD 0x8117
133409 -#define DELL_PRODUCT_5510_EXPRESSCARD 0x8118
133410 -
133411 -#define DELL_PRODUCT_5700_MINICARD_SPRINT 0x8128
133412 -#define DELL_PRODUCT_5700_MINICARD_TELUS 0x8129
133413 -
133414 -#define DELL_PRODUCT_5720_MINICARD_VZW 0x8133
133415 -#define DELL_PRODUCT_5720_MINICARD_SPRINT 0x8134
133416 -#define DELL_PRODUCT_5720_MINICARD_TELUS 0x8135
133417 -#define DELL_PRODUCT_5520_MINICARD_CINGULAR 0x8136
133418 -#define DELL_PRODUCT_5520_MINICARD_GENERIC_L 0x8137
133419 -#define DELL_PRODUCT_5520_MINICARD_GENERIC_I 0x8138
133420 -
133421 -#define DELL_PRODUCT_5730_MINICARD_SPRINT 0x8180
133422 -#define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181
133423 -#define DELL_PRODUCT_5730_MINICARD_VZW 0x8182
133424 -
133425 #define KYOCERA_VENDOR_ID 0x0c88
133426 #define KYOCERA_PRODUCT_KPC650 0x17da
133427 #define KYOCERA_PRODUCT_KPC680 0x180a
133428 @@ -290,13 +266,19 @@
133429
133430 /* ZTE PRODUCTS */
133431 #define ZTE_VENDOR_ID 0x19d2
133432 -#define ZTE_PRODUCT_MF622 0x0001
133433 #define ZTE_PRODUCT_MF628 0x0015
133434 #define ZTE_PRODUCT_MF626 0x0031
133435 #define ZTE_PRODUCT_CDMA_TECH 0xfffe
133436
133437 -#define BENQ_VENDOR_ID 0x04a5
133438 -#define BENQ_PRODUCT_H10 0x4068
133439 +/* Ericsson products */
133440 +#define ERICSSON_VENDOR_ID 0x0bdb
133441 +#define ERICSSON_PRODUCT_F3507G 0x1900
133442 +
133443 +/* Pantech products */
133444 +#define PANTECH_VENDOR_ID 0x106c
133445 +#define PANTECH_PRODUCT_PC5740 0x3701
133446 +#define PANTECH_PRODUCT_PC5750 0x3702 /* PX-500 */
133447 +#define PANTECH_PRODUCT_UM150 0x3711
133448
133449 static struct usb_device_id option_ids[] = {
133450 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
133451 @@ -323,7 +305,6 @@
133452 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_GT) },
133453 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_MODEM_EX) },
133454 { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) },
133455 - { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_GTM380_MODEM) },
133456 { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_Q101) },
133457 { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_Q111) },
133458 { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLX) },
133459 @@ -414,37 +395,31 @@
133460 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */
133461 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */
133462 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */
133463 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel MC727/U727/USB727 */
133464 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */
133465 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */
133466 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */
133467 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED) }, /* Novatel HSPA Embedded product */
133468 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED) }, /* Novatel EVDO product */
133469 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED) }, /* Novatel HSPA product */
133470 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED) }, /* Novatel EVDO Embedded product */
133471 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED) }, /* Novatel HSPA Embedded product */
133472 - { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL) }, /* Novatel Global product */
133473 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */
133474 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */
133475 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */
133476 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_1) }, /* Novatel Global product */
133477 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_2) }, /* Novatel EVDO product */
133478 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_2) }, /* Novatel HSPA product */
133479 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */
133480 + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */
133481
133482 { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
133483 { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
133484 { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) },
133485
133486 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
133487 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5500_MINICARD) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
133488 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5505_MINICARD) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
133489 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_EXPRESSCARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
133490 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5510_EXPRESSCARD) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
133491 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_SPRINT) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
133492 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_TELUS) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */
133493 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_VZW) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
133494 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_SPRINT) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
133495 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_TELUS) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
133496 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
133497 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) }, /* Dell Wireless HSDPA 5520 */
133498 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
133499 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
133500 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
133501 - { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
133502 + { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */
133503 + { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
133504 + { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */
133505 + { USB_DEVICE(DELL_VENDOR_ID, 0x8117) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */
133506 + { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */
133507 + { USB_DEVICE(DELL_VENDOR_ID, 0x8128) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */
133508 + { USB_DEVICE(DELL_VENDOR_ID, 0x8129) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */
133509 + { USB_DEVICE(DELL_VENDOR_ID, 0x8133) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */
133510 + { USB_DEVICE(DELL_VENDOR_ID, 0x8136) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */
133511 + { USB_DEVICE(DELL_VENDOR_ID, 0x8137) }, /* Dell Wireless HSDPA 5520 */
133512 + { USB_DEVICE(DELL_VENDOR_ID, 0x8138) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */
133513 + { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */
133514 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
133515 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
133516 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
133517 @@ -509,12 +484,13 @@
133518 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
133519 { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
133520 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
133521 - { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622) },
133522 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF626) },
133523 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
133524 { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
133525 - { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
133526 - { USB_DEVICE(0x1da5, 0x4515) }, /* BenQ H20 */
133527 + { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) },
133528 + { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5740) },
133529 + { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5750) },
133530 + { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_UM150) },
133531 { } /* Terminating entry */
133532 };
133533 MODULE_DEVICE_TABLE(usb, option_ids);
133534 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/ti_usb_3410_5052.c linux-2.6.29-rc3.owrt/drivers/usb/serial/ti_usb_3410_5052.c
133535 --- linux-2.6.29.owrt/drivers/usb/serial/ti_usb_3410_5052.c 2009-05-10 22:04:38.000000000 +0200
133536 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/ti_usb_3410_5052.c 2009-05-10 23:48:29.000000000 +0200
133537 @@ -176,7 +176,7 @@
133538 /* the array dimension is the number of default entries plus */
133539 /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */
133540 /* null entry */
133541 -static struct usb_device_id ti_id_table_3410[10+TI_EXTRA_VID_PID_COUNT+1] = {
133542 +static struct usb_device_id ti_id_table_3410[7+TI_EXTRA_VID_PID_COUNT+1] = {
133543 { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
133544 { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
133545 { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
133546 @@ -185,11 +185,9 @@
133547 { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_PRODUCT_ID) },
133548 { USB_DEVICE(MTS_VENDOR_ID, MTS_EDGE_PRODUCT_ID) },
133549 { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
133550 - { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
133551 - { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
133552 };
133553
133554 -static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = {
133555 +static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = {
133556 { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) },
133557 { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) },
133558 { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
133559 @@ -197,7 +195,7 @@
133560 { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
133561 };
133562
133563 -static struct usb_device_id ti_id_table_combined[14+2*TI_EXTRA_VID_PID_COUNT+1] = {
133564 +static struct usb_device_id ti_id_table_combined[6+2*TI_EXTRA_VID_PID_COUNT+1] = {
133565 { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) },
133566 { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) },
133567 { USB_DEVICE(MTS_VENDOR_ID, MTS_GSM_NO_FW_PRODUCT_ID) },
133568 @@ -210,8 +208,6 @@
133569 { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) },
133570 { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) },
133571 { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) },
133572 - { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) },
133573 - { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) },
133574 { }
133575 };
133576
133577 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/serial/ti_usb_3410_5052.h linux-2.6.29-rc3.owrt/drivers/usb/serial/ti_usb_3410_5052.h
133578 --- linux-2.6.29.owrt/drivers/usb/serial/ti_usb_3410_5052.h 2009-05-10 22:04:38.000000000 +0200
133579 +++ linux-2.6.29-rc3.owrt/drivers/usb/serial/ti_usb_3410_5052.h 2009-05-10 23:48:29.000000000 +0200
133580 @@ -30,8 +30,6 @@
133581 #define IBM_VENDOR_ID 0x04b3
133582 #define TI_3410_PRODUCT_ID 0x3410
133583 #define IBM_4543_PRODUCT_ID 0x4543
133584 -#define IBM_454B_PRODUCT_ID 0x454b
133585 -#define IBM_454C_PRODUCT_ID 0x454c
133586 #define TI_3410_EZ430_ID 0xF430 /* TI ez430 development tool */
133587 #define TI_5052_BOOT_PRODUCT_ID 0x5052 /* no EEPROM, no firmware */
133588 #define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */
133589 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/storage/scsiglue.c linux-2.6.29-rc3.owrt/drivers/usb/storage/scsiglue.c
133590 --- linux-2.6.29.owrt/drivers/usb/storage/scsiglue.c 2009-05-10 22:04:38.000000000 +0200
133591 +++ linux-2.6.29-rc3.owrt/drivers/usb/storage/scsiglue.c 2009-05-10 23:48:29.000000000 +0200
133592 @@ -64,7 +64,6 @@
133593 */
133594 #define VENDOR_ID_NOKIA 0x0421
133595 #define VENDOR_ID_NIKON 0x04b0
133596 -#define VENDOR_ID_PENTAX 0x0a17
133597 #define VENDOR_ID_MOTOROLA 0x22b8
133598
133599 /***********************************************************************
133600 @@ -159,7 +158,6 @@
133601 switch (le16_to_cpu(us->pusb_dev->descriptor.idVendor)) {
133602 case VENDOR_ID_NOKIA:
133603 case VENDOR_ID_NIKON:
133604 - case VENDOR_ID_PENTAX:
133605 case VENDOR_ID_MOTOROLA:
133606 if (!(us->fflags & (US_FL_FIX_CAPACITY |
133607 US_FL_CAPACITY_OK)))
133608 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/storage/transport.c linux-2.6.29-rc3.owrt/drivers/usb/storage/transport.c
133609 --- linux-2.6.29.owrt/drivers/usb/storage/transport.c 2009-05-10 22:04:38.000000000 +0200
133610 +++ linux-2.6.29-rc3.owrt/drivers/usb/storage/transport.c 2009-05-10 23:48:29.000000000 +0200
133611 @@ -558,10 +558,32 @@
133612
133613 if (srb->result == SAM_STAT_GOOD && scsi_get_resid(srb) == 0) {
133614
133615 - /* The command succeeded. We know this device doesn't
133616 - * have the last-sector bug, so stop checking it.
133617 + /* The command succeeded. If the capacity is odd
133618 + * (i.e., if the sector number is even) then the
133619 + * "always-even" heuristic would be wrong for this
133620 + * device. Issue a WARN() so that the kerneloops.org
133621 + * project will be notified and we will then know to
133622 + * mark the device with a CAPACITY_OK flag. Hopefully
133623 + * this will occur for only a few devices.
133624 + *
133625 + * Use the sign of us->last_sector_hacks to tell whether
133626 + * the warning has already been issued; we don't need
133627 + * more than one warning per device.
133628 */
133629 - us->use_last_sector_hacks = 0;
133630 + if (!(sector & 1) && us->use_last_sector_hacks > 0) {
133631 + unsigned vid = le16_to_cpu(
133632 + us->pusb_dev->descriptor.idVendor);
133633 + unsigned pid = le16_to_cpu(
133634 + us->pusb_dev->descriptor.idProduct);
133635 + unsigned rev = le16_to_cpu(
133636 + us->pusb_dev->descriptor.bcdDevice);
133637 +
133638 + WARN(1, "%s: Successful last sector success at %u, "
133639 + "device %04x:%04x:%04x\n",
133640 + sdkp->disk->disk_name, sector,
133641 + vid, pid, rev);
133642 + us->use_last_sector_hacks = -1;
133643 + }
133644
133645 } else {
133646 /* The command failed. Allow up to 3 retries in case this
133647 @@ -577,6 +599,14 @@
133648 srb->result = SAM_STAT_CHECK_CONDITION;
133649 memcpy(srb->sense_buffer, record_not_found,
133650 sizeof(record_not_found));
133651 +
133652 + /* In theory we might want to issue a WARN() here if the
133653 + * capacity is even, since it could indicate the device
133654 + * has the READ CAPACITY bug _and_ the real capacity is
133655 + * odd. But it could also indicate that the device
133656 + * simply can't access its last sector, a failure mode
133657 + * which is surprisingly common. So no warning.
133658 + */
133659 }
133660
133661 done:
133662 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/storage/unusual_devs.h linux-2.6.29-rc3.owrt/drivers/usb/storage/unusual_devs.h
133663 --- linux-2.6.29.owrt/drivers/usb/storage/unusual_devs.h 2009-05-10 22:04:38.000000000 +0200
133664 +++ linux-2.6.29-rc3.owrt/drivers/usb/storage/unusual_devs.h 2009-05-10 23:48:29.000000000 +0200
133665 @@ -226,7 +226,7 @@
133666 US_FL_MAX_SECTORS_64 ),
133667
133668 /* Reported by Manuel Osdoba <manuel.osdoba@tu-ilmenau.de> */
133669 -UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x9999,
133670 +UNUSUAL_DEV( 0x0421, 0x0492, 0x0452, 0x0452,
133671 "Nokia",
133672 "Nokia 6233",
133673 US_SC_DEVICE, US_PR_DEVICE, NULL,
133674 @@ -907,13 +907,13 @@
133675 "Genesys Logic",
133676 "USB to IDE Optical",
133677 US_SC_DEVICE, US_PR_DEVICE, NULL,
133678 - US_FL_GO_SLOW | US_FL_MAX_SECTORS_64 | US_FL_IGNORE_RESIDUE ),
133679 + US_FL_GO_SLOW | US_FL_MAX_SECTORS_64 ),
133680
133681 UNUSUAL_DEV( 0x05e3, 0x0702, 0x0000, 0xffff,
133682 "Genesys Logic",
133683 "USB to IDE Disk",
133684 US_SC_DEVICE, US_PR_DEVICE, NULL,
133685 - US_FL_GO_SLOW | US_FL_MAX_SECTORS_64 | US_FL_IGNORE_RESIDUE ),
133686 + US_FL_GO_SLOW | US_FL_MAX_SECTORS_64 ),
133687
133688 /* Reported by Ben Efros <ben@pc-doctor.com> */
133689 UNUSUAL_DEV( 0x05e3, 0x0723, 0x9451, 0x9451,
133690 @@ -951,9 +951,7 @@
133691 US_FL_FIX_CAPACITY ),
133692
133693 /* Reported by Richard -=[]=- <micro_flyer@hotmail.com> */
133694 -/* Change to bcdDeviceMin (0x0100 to 0x0001) reported by
133695 - * Thomas Bartosik <tbartdev@gmx-topmail.de> */
133696 -UNUSUAL_DEV( 0x067b, 0x2507, 0x0001, 0x0100,
133697 +UNUSUAL_DEV( 0x067b, 0x2507, 0x0100, 0x0100,
133698 "Prolific Technology Inc.",
133699 "Mass Storage Device",
133700 US_SC_DEVICE, US_PR_DEVICE, NULL,
133701 @@ -1216,7 +1214,7 @@
133702 "Datafab",
133703 "KECF-USB",
133704 US_SC_DEVICE, US_PR_DEVICE, NULL,
133705 - US_FL_FIX_INQUIRY | US_FL_FIX_CAPACITY ),
133706 + US_FL_FIX_INQUIRY ),
133707
133708 /* Reported by Rauch Wolke <rauchwolke@gmx.net> */
133709 UNUSUAL_DEV( 0x07c4, 0xa4a5, 0x0000, 0xffff,
133710 @@ -1356,6 +1354,21 @@
133711 US_SC_DEVICE, US_PR_DEVICE, NULL,
133712 US_FL_FIX_INQUIRY ),
133713
133714 +
133715 +/* Submitted by Per Winkvist <per.winkvist@uk.com> */
133716 +UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xffff,
133717 + "Pentax",
133718 + "Optio S/S4",
133719 + US_SC_DEVICE, US_PR_DEVICE, NULL,
133720 + US_FL_FIX_INQUIRY ),
133721 +
133722 +/* Reported by Jaak Ristioja <Ristioja@gmail.com> */
133723 +UNUSUAL_DEV( 0x0a17, 0x006e, 0x0100, 0x0100,
133724 + "Pentax",
133725 + "K10D",
133726 + US_SC_DEVICE, US_PR_DEVICE, NULL,
133727 + US_FL_FIX_CAPACITY ),
133728 +
133729 /* These are virtual windows driver CDs, which the zd1211rw driver
133730 * automatically converts into WLAN devices. */
133731 UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101,
133732 @@ -1392,16 +1405,6 @@
133733 US_SC_DEVICE, US_PR_DEVICE, NULL,
133734 0 ),
133735
133736 -/* Reported by Jan Dumon <j.dumon@option.com>
133737 - * This device (wrongly) has a vendor-specific device descriptor.
133738 - * The entry is needed so usb-storage can bind to it's mass-storage
133739 - * interface as an interface driver */
133740 -UNUSUAL_DEV( 0x0af0, 0x7501, 0x0000, 0x0000,
133741 - "Option",
133742 - "GI 0431 SD-Card",
133743 - US_SC_DEVICE, US_PR_DEVICE, NULL,
133744 - 0 ),
133745 -
133746 /* Reported by Ben Efros <ben@pc-doctor.com> */
133747 UNUSUAL_DEV( 0x0bc2, 0x3010, 0x0000, 0x0000,
133748 "Seagate",
133749 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/wusbcore/devconnect.c linux-2.6.29-rc3.owrt/drivers/usb/wusbcore/devconnect.c
133750 --- linux-2.6.29.owrt/drivers/usb/wusbcore/devconnect.c 2009-05-10 22:04:38.000000000 +0200
133751 +++ linux-2.6.29-rc3.owrt/drivers/usb/wusbcore/devconnect.c 2009-05-10 23:48:29.000000000 +0200
133752 @@ -386,7 +386,6 @@
133753 | USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED);
133754 port->change |= USB_PORT_STAT_C_CONNECTION | USB_PORT_STAT_C_ENABLE;
133755 if (wusb_dev) {
133756 - dev_dbg(wusbhc->dev, "disconnecting device from port %d\n", wusb_dev->port_idx);
133757 if (!list_empty(&wusb_dev->cack_node))
133758 list_del_init(&wusb_dev->cack_node);
133759 /* For the one in cack_add() */
133760 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/wusbcore/rh.c linux-2.6.29-rc3.owrt/drivers/usb/wusbcore/rh.c
133761 --- linux-2.6.29.owrt/drivers/usb/wusbcore/rh.c 2009-05-10 22:04:38.000000000 +0200
133762 +++ linux-2.6.29-rc3.owrt/drivers/usb/wusbcore/rh.c 2009-05-10 23:48:29.000000000 +0200
133763 @@ -100,9 +100,6 @@
133764 struct wusb_port *port = wusb_port_by_idx(wusbhc, port_idx);
133765 struct wusb_dev *wusb_dev = port->wusb_dev;
133766
133767 - if (wusb_dev == NULL)
133768 - return -ENOTCONN;
133769 -
133770 port->status |= USB_PORT_STAT_RESET;
133771 port->change |= USB_PORT_STAT_C_RESET;
133772
133773 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/usb/wusbcore/wa-xfer.c linux-2.6.29-rc3.owrt/drivers/usb/wusbcore/wa-xfer.c
133774 --- linux-2.6.29.owrt/drivers/usb/wusbcore/wa-xfer.c 2009-05-10 22:04:38.000000000 +0200
133775 +++ linux-2.6.29-rc3.owrt/drivers/usb/wusbcore/wa-xfer.c 2009-05-10 23:48:29.000000000 +0200
133776 @@ -921,10 +921,8 @@
133777 result = -ENODEV;
133778 /* FIXME: segmentation broken -- kills DWA */
133779 mutex_lock(&wusbhc->mutex); /* get a WUSB dev */
133780 - if (urb->dev == NULL) {
133781 - mutex_unlock(&wusbhc->mutex);
133782 + if (urb->dev == NULL)
133783 goto error_dev_gone;
133784 - }
133785 wusb_dev = __wusb_dev_get_by_usb_dev(wusbhc, urb->dev);
133786 if (wusb_dev == NULL) {
133787 mutex_unlock(&wusbhc->mutex);
133788 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/uwb/allocator.c linux-2.6.29-rc3.owrt/drivers/uwb/allocator.c
133789 --- linux-2.6.29.owrt/drivers/uwb/allocator.c 2009-05-10 22:04:38.000000000 +0200
133790 +++ linux-2.6.29-rc3.owrt/drivers/uwb/allocator.c 2009-05-10 23:48:29.000000000 +0200
133791 @@ -15,6 +15,7 @@
133792 * You should have received a copy of the GNU General Public License
133793 * along with this program. If not, see <http://www.gnu.org/licenses/>.
133794 */
133795 +#include <linux/version.h>
133796 #include <linux/kernel.h>
133797 #include <linux/uwb.h>
133798
133799 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/uwb/drp.c linux-2.6.29-rc3.owrt/drivers/uwb/drp.c
133800 --- linux-2.6.29.owrt/drivers/uwb/drp.c 2009-05-10 22:04:38.000000000 +0200
133801 +++ linux-2.6.29-rc3.owrt/drivers/uwb/drp.c 2009-05-10 23:48:29.000000000 +0200
133802 @@ -66,14 +66,14 @@
133803 } else
133804 dev_err(&rc->uwb_dev.dev, "SET-DRP-IE: timeout\n");
133805
133806 - spin_lock_bh(&rc->rsvs_lock);
133807 + spin_lock(&rc->rsvs_lock);
133808 if (rc->set_drp_ie_pending > 1) {
133809 rc->set_drp_ie_pending = 0;
133810 uwb_rsv_queue_update(rc);
133811 } else {
133812 rc->set_drp_ie_pending = 0;
133813 }
133814 - spin_unlock_bh(&rc->rsvs_lock);
133815 + spin_unlock(&rc->rsvs_lock);
133816 }
133817
133818 /**
133819 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/uwb/rsv.c linux-2.6.29-rc3.owrt/drivers/uwb/rsv.c
133820 --- linux-2.6.29.owrt/drivers/uwb/rsv.c 2009-05-10 22:04:38.000000000 +0200
133821 +++ linux-2.6.29-rc3.owrt/drivers/uwb/rsv.c 2009-05-10 23:48:29.000000000 +0200
133822 @@ -114,8 +114,7 @@
133823 devaddr = rsv->target.devaddr;
133824 uwb_dev_addr_print(target, sizeof(target), &devaddr);
133825
133826 - dev_dbg(dev, "rsv %s %s -> %s: %s\n",
133827 - text, owner, target, uwb_rsv_state_str(rsv->state));
133828 + dev_dbg(dev, "rsv %s -> %s: %s\n", owner, target, uwb_rsv_state_str(rsv->state));
133829 }
133830
133831 static void uwb_rsv_release(struct kref *kref)
133832 @@ -512,7 +511,8 @@
133833
133834 if (uwb_rsv_is_owner(rsv))
133835 uwb_rsv_put_stream(rsv);
133836 -
133837 +
133838 + del_timer_sync(&rsv->timer);
133839 uwb_dev_put(rsv->owner);
133840 if (rsv->target.type == UWB_RSV_TARGET_DEV)
133841 uwb_dev_put(rsv->target.dev);
133842 @@ -870,7 +870,7 @@
133843 */
133844 void uwb_rsv_sched_update(struct uwb_rc *rc)
133845 {
133846 - spin_lock_bh(&rc->rsvs_lock);
133847 + spin_lock(&rc->rsvs_lock);
133848 if (!delayed_work_pending(&rc->rsv_update_work)) {
133849 if (rc->set_drp_ie_pending > 0) {
133850 rc->set_drp_ie_pending++;
133851 @@ -879,7 +879,7 @@
133852 uwb_rsv_queue_update(rc);
133853 }
133854 unlock:
133855 - spin_unlock_bh(&rc->rsvs_lock);
133856 + spin_unlock(&rc->rsvs_lock);
133857 }
133858
133859 /*
133860 @@ -943,22 +943,13 @@
133861
133862 mutex_lock(&rc->rsvs_mutex);
133863 list_for_each_entry_safe(rsv, t, &rc->reservations, rc_node) {
133864 - if (rsv->state != UWB_RSV_STATE_NONE)
133865 - uwb_rsv_set_state(rsv, UWB_RSV_STATE_NONE);
133866 - del_timer_sync(&rsv->timer);
133867 + uwb_rsv_remove(rsv);
133868 }
133869 /* Cancel any postponed update. */
133870 rc->set_drp_ie_pending = 0;
133871 mutex_unlock(&rc->rsvs_mutex);
133872
133873 cancel_delayed_work_sync(&rc->rsv_update_work);
133874 - flush_workqueue(rc->rsv_workq);
133875 -
133876 - mutex_lock(&rc->rsvs_mutex);
133877 - list_for_each_entry_safe(rsv, t, &rc->reservations, rc_node) {
133878 - uwb_rsv_remove(rsv);
133879 - }
133880 - mutex_unlock(&rc->rsvs_mutex);
133881 }
133882
133883 void uwb_rsv_init(struct uwb_rc *rc)
133884 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/atafb.c linux-2.6.29-rc3.owrt/drivers/video/atafb.c
133885 --- linux-2.6.29.owrt/drivers/video/atafb.c 2009-05-10 22:04:38.000000000 +0200
133886 +++ linux-2.6.29-rc3.owrt/drivers/video/atafb.c 2009-05-10 23:48:29.000000000 +0200
133887 @@ -841,7 +841,7 @@
133888 tt_dmasnd.ctrl = DMASND_CTRL_OFF;
133889 udelay(20); /* wait a while for things to settle down */
133890 }
133891 - mono_moni = (st_mfp.par_dt_reg & 0x80) == 0;
133892 + mono_moni = (mfp.par_dt_reg & 0x80) == 0;
133893
133894 tt_get_par(&par);
133895 tt_encode_var(&atafb_predefined[0], &par);
133896 @@ -2035,7 +2035,7 @@
133897 tt_dmasnd.ctrl = DMASND_CTRL_OFF;
133898 udelay(20); /* wait a while for things to settle down */
133899 }
133900 - mono_moni = (st_mfp.par_dt_reg & 0x80) == 0;
133901 + mono_moni = (mfp.par_dt_reg & 0x80) == 0;
133902
133903 stste_get_par(&par);
133904 stste_encode_var(&atafb_predefined[0], &par);
133905 @@ -2086,20 +2086,20 @@
133906 return;
133907 local_irq_save(flags);
133908
133909 - st_mfp.tim_ct_b = 0x10;
133910 - st_mfp.active_edge |= 8;
133911 - st_mfp.tim_ct_b = 0;
133912 - st_mfp.tim_dt_b = 0xf0;
133913 - st_mfp.tim_ct_b = 8;
133914 - while (st_mfp.tim_dt_b > 1) /* TOS does it this way, don't ask why */
133915 + mfp.tim_ct_b = 0x10;
133916 + mfp.active_edge |= 8;
133917 + mfp.tim_ct_b = 0;
133918 + mfp.tim_dt_b = 0xf0;
133919 + mfp.tim_ct_b = 8;
133920 + while (mfp.tim_dt_b > 1) /* TOS does it this way, don't ask why */
133921 ;
133922 - new = st_mfp.tim_dt_b;
133923 + new = mfp.tim_dt_b;
133924 do {
133925 udelay(LINE_DELAY);
133926 old = new;
133927 - new = st_mfp.tim_dt_b;
133928 + new = mfp.tim_dt_b;
133929 } while (old != new);
133930 - st_mfp.tim_ct_b = 0x10;
133931 + mfp.tim_ct_b = 0x10;
133932 udelay(SYNC_DELAY);
133933
133934 if (atari_switches & ATARI_SWITCH_OVSC_IKBD)
133935 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/aty/aty128fb.c linux-2.6.29-rc3.owrt/drivers/video/aty/aty128fb.c
133936 --- linux-2.6.29.owrt/drivers/video/aty/aty128fb.c 2009-05-10 22:04:38.000000000 +0200
133937 +++ linux-2.6.29-rc3.owrt/drivers/video/aty/aty128fb.c 2009-05-10 23:48:29.000000000 +0200
133938 @@ -1475,7 +1475,7 @@
133939 aty128_set_pll(&par->pll, par);
133940 aty128_set_fifo(&par->fifo_reg, par);
133941
133942 - config = aty_ld_le32(CNFG_CNTL) & ~3;
133943 + config = aty_ld_le32(CONFIG_CNTL) & ~3;
133944
133945 #if defined(__BIG_ENDIAN)
133946 if (par->crtc.bpp == 32)
133947 @@ -1484,7 +1484,7 @@
133948 config |= 1; /* make aperture do 16 bit swapping */
133949 #endif
133950
133951 - aty_st_le32(CNFG_CNTL, config);
133952 + aty_st_le32(CONFIG_CNTL, config);
133953 aty_st_8(CRTC_EXT_CNTL + 1, 0); /* turn the video back on */
133954
133955 info->fix.line_length = (par->crtc.vxres * par->crtc.bpp) >> 3;
133956 @@ -1853,14 +1853,13 @@
133957 * Initialisation
133958 */
133959
133960 -#ifdef CONFIG_PPC_PMAC__disabled
133961 +#ifdef CONFIG_PPC_PMAC
133962 static void aty128_early_resume(void *data)
133963 {
133964 struct aty128fb_par *par = data;
133965
133966 if (try_acquire_console_sem())
133967 return;
133968 - pci_restore_state(par->pdev);
133969 aty128_do_resume(par->pdev);
133970 release_console_sem();
133971 }
133972 @@ -1876,7 +1875,7 @@
133973 u32 dac;
133974
133975 /* Get the chip revision */
133976 - chip_rev = (aty_ld_le32(CNFG_CNTL) >> 16) & 0x1F;
133977 + chip_rev = (aty_ld_le32(CONFIG_CNTL) >> 16) & 0x1F;
133978
133979 strcpy(video_card, "Rage128 XX ");
133980 video_card[8] = ent->device >> 8;
133981 @@ -1908,14 +1907,7 @@
133982 /* Indicate sleep capability */
133983 if (par->chip_gen == rage_M3) {
133984 pmac_call_feature(PMAC_FTR_DEVICE_CAN_WAKE, NULL, 0, 1);
133985 -#if 0 /* Disable the early video resume hack for now as it's causing problems, among
133986 - * others we now rely on the PCI core restoring the config space for us, which
133987 - * isn't the case with that hack, and that code path causes various things to
133988 - * be called with interrupts off while they shouldn't. I'm leaving the code in
133989 - * as it can be useful for debugging purposes
133990 - */
133991 pmac_set_early_video_resume(aty128_early_resume, par);
133992 -#endif
133993 }
133994
133995 /* Find default mode */
133996 @@ -2065,7 +2057,7 @@
133997
133998 /* Grab memory size from the card */
133999 // How does this relate to the resource length from the PCI hardware?
134000 - par->vram_size = aty_ld_le32(CNFG_MEMSIZE) & 0x03FFFFFF;
134001 + par->vram_size = aty_ld_le32(CONFIG_MEMSIZE) & 0x03FFFFFF;
134002
134003 /* Virtualize the framebuffer */
134004 info->screen_base = ioremap(fb_addr, par->vram_size);
134005 @@ -2373,6 +2365,7 @@
134006 static void aty128_set_suspend(struct aty128fb_par *par, int suspend)
134007 {
134008 u32 pmgt;
134009 + u16 pwr_command;
134010 struct pci_dev *pdev = par->pdev;
134011
134012 if (!par->pm_reg)
134013 @@ -2381,8 +2374,6 @@
134014 /* Set the chip into the appropriate suspend mode (we use D2,
134015 * D3 would require a complete re-initialisation of the chip,
134016 * including PCI config registers, clocks, AGP configuration, ...)
134017 - *
134018 - * For resume, the core will have already brought us back to D0
134019 */
134020 if (suspend) {
134021 /* Make sure CRTC2 is reset. Remove that the day we decide to
134022 @@ -2400,9 +2391,17 @@
134023 aty_st_le32(BUS_CNTL1, 0x00000010);
134024 aty_st_le32(MEM_POWER_MISC, 0x0c830000);
134025 mdelay(100);
134026 -
134027 + pci_read_config_word(pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
134028 /* Switch PCI power management to D2 */
134029 - pci_set_power_state(pdev, PCI_D2);
134030 + pci_write_config_word(pdev, par->pm_reg+PCI_PM_CTRL,
134031 + (pwr_command & ~PCI_PM_CTRL_STATE_MASK) | 2);
134032 + pci_read_config_word(pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
134033 + } else {
134034 + /* Switch back PCI power management to D0 */
134035 + mdelay(100);
134036 + pci_write_config_word(pdev, par->pm_reg+PCI_PM_CTRL, 0);
134037 + pci_read_config_word(pdev, par->pm_reg+PCI_PM_CTRL, &pwr_command);
134038 + mdelay(100);
134039 }
134040 }
134041
134042 @@ -2411,12 +2410,6 @@
134043 struct fb_info *info = pci_get_drvdata(pdev);
134044 struct aty128fb_par *par = info->par;
134045
134046 - /* Because we may change PCI D state ourselves, we need to
134047 - * first save the config space content so the core can
134048 - * restore it properly on resume.
134049 - */
134050 - pci_save_state(pdev);
134051 -
134052 /* We don't do anything but D2, for now we return 0, but
134053 * we may want to change that. How do we know if the BIOS
134054 * can properly take care of D3 ? Also, with swsusp, we
134055 @@ -2483,11 +2476,6 @@
134056 if (pdev->dev.power.power_state.event == PM_EVENT_ON)
134057 return 0;
134058
134059 - /* PCI state will have been restored by the core, so
134060 - * we should be in D0 now with our config space fully
134061 - * restored
134062 - */
134063 -
134064 /* Wakeup chip */
134065 aty128_set_suspend(par, 0);
134066 par->asleep = 0;
134067 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/aty/atyfb_base.c linux-2.6.29-rc3.owrt/drivers/video/aty/atyfb_base.c
134068 --- linux-2.6.29.owrt/drivers/video/aty/atyfb_base.c 2009-05-10 22:04:38.000000000 +0200
134069 +++ linux-2.6.29-rc3.owrt/drivers/video/aty/atyfb_base.c 2009-05-10 23:48:29.000000000 +0200
134070 @@ -135,7 +135,7 @@
134071 #if defined(CONFIG_PM) || defined(CONFIG_PMAC_BACKLIGHT) || \
134072 defined (CONFIG_FB_ATY_GENERIC_LCD) || defined(CONFIG_FB_ATY_BACKLIGHT)
134073 static const u32 lt_lcd_regs[] = {
134074 - CNFG_PANEL_LG,
134075 + CONFIG_PANEL_LG,
134076 LCD_GEN_CNTL_LG,
134077 DSTN_CONTROL_LG,
134078 HFB_PITCH_ADDR_LG,
134079 @@ -446,7 +446,7 @@
134080 par->pll_limits.ecp_max = aty_chips[i].ecp_max;
134081 par->features = aty_chips[i].features;
134082
134083 - chip_id = aty_ld_le32(CNFG_CHIP_ID, par);
134084 + chip_id = aty_ld_le32(CONFIG_CHIP_ID, par);
134085 type = chip_id & CFG_CHIP_TYPE;
134086 rev = (chip_id & CFG_CHIP_REV) >> 24;
134087
134088 @@ -629,7 +629,7 @@
134089 crtc->lcd_index = aty_ld_le32(LCD_INDEX, par);
134090 aty_st_le32(LCD_INDEX, crtc->lcd_index, par);
134091 }
134092 - crtc->lcd_config_panel = aty_ld_lcd(CNFG_PANEL, par);
134093 + crtc->lcd_config_panel = aty_ld_lcd(CONFIG_PANEL, par);
134094 crtc->lcd_gen_cntl = aty_ld_lcd(LCD_GEN_CNTL, par);
134095
134096
134097 @@ -676,7 +676,7 @@
134098 aty_st_le32(CRTC_GEN_CNTL, crtc->gen_cntl & ~(CRTC_EXT_DISP_EN | CRTC_EN), par);
134099
134100 /* update non-shadow registers first */
134101 - aty_st_lcd(CNFG_PANEL, crtc->lcd_config_panel, par);
134102 + aty_st_lcd(CONFIG_PANEL, crtc->lcd_config_panel, par);
134103 aty_st_lcd(LCD_GEN_CNTL, crtc->lcd_gen_cntl &
134104 ~(CRTC_RW_SELECT | SHADOW_EN | SHADOW_RW_EN), par);
134105
134106 @@ -858,7 +858,7 @@
134107 if (!M64_HAS(MOBIL_BUS))
134108 crtc->lcd_index |= CRTC2_DISPLAY_DIS;
134109
134110 - crtc->lcd_config_panel = aty_ld_lcd(CNFG_PANEL, par) | 0x4000;
134111 + crtc->lcd_config_panel = aty_ld_lcd(CONFIG_PANEL, par) | 0x4000;
134112 crtc->lcd_gen_cntl = aty_ld_lcd(LCD_GEN_CNTL, par) & ~CRTC_RW_SELECT;
134113
134114 crtc->lcd_gen_cntl &=
134115 @@ -1978,7 +1978,7 @@
134116
134117 return timeout ? 0 : -EIO;
134118 }
134119 -#endif /* CONFIG_PPC_PMAC */
134120 +#endif
134121
134122 static int atyfb_pci_suspend(struct pci_dev *pdev, pm_message_t state)
134123 {
134124 @@ -2002,15 +2002,9 @@
134125 par->asleep = 1;
134126 par->lock_blank = 1;
134127
134128 - /* Because we may change PCI D state ourselves, we need to
134129 - * first save the config space content so the core can
134130 - * restore it properly on resume.
134131 - */
134132 - pci_save_state(pdev);
134133 -
134134 #ifdef CONFIG_PPC_PMAC
134135 /* Set chip to "suspend" mode */
134136 - if (machine_is(powermac) && aty_power_mgmt(1, par)) {
134137 + if (aty_power_mgmt(1, par)) {
134138 par->asleep = 0;
134139 par->lock_blank = 0;
134140 atyfb_blank(FB_BLANK_UNBLANK, info);
134141 @@ -2053,15 +2047,11 @@
134142
134143 acquire_console_sem();
134144
134145 - /* PCI state will have been restored by the core, so
134146 - * we should be in D0 now with our config space fully
134147 - * restored
134148 - */
134149 -
134150 #ifdef CONFIG_PPC_PMAC
134151 - if (machine_is(powermac) &&
134152 - pdev->dev.power.power_state.event == PM_EVENT_SUSPEND)
134153 + if (pdev->dev.power.power_state.event == 2)
134154 aty_power_mgmt(0, par);
134155 +#else
134156 + pci_set_power_state(pdev, PCI_D0);
134157 #endif
134158
134159 aty_resume_chip(info);
134160 @@ -2264,7 +2254,7 @@
134161 if (!M64_HAS(INTEGRATED)) {
134162 u32 stat0;
134163 u8 dac_type, dac_subtype, clk_type;
134164 - stat0 = aty_ld_le32(CNFG_STAT0, par);
134165 + stat0 = aty_ld_le32(CONFIG_STAT0, par);
134166 par->bus_type = (stat0 >> 0) & 0x07;
134167 par->ram_type = (stat0 >> 3) & 0x07;
134168 ramname = aty_gx_ram[par->ram_type];
134169 @@ -2334,7 +2324,7 @@
134170 par->dac_ops = &aty_dac_ct;
134171 par->pll_ops = &aty_pll_ct;
134172 par->bus_type = PCI;
134173 - par->ram_type = (aty_ld_le32(CNFG_STAT0, par) & 0x07);
134174 + par->ram_type = (aty_ld_le32(CONFIG_STAT0, par) & 0x07);
134175 ramname = aty_ct_ram[par->ram_type];
134176 /* for many chips, the mclk is 67 MHz for SDRAM, 63 MHz otherwise */
134177 if (par->pll_limits.mclk == 67 && par->ram_type < SDRAM)
134178 @@ -2443,7 +2433,7 @@
134179 }
134180
134181 if (M64_HAS(MAGIC_VRAM_SIZE)) {
134182 - if (aty_ld_le32(CNFG_STAT1, par) & 0x40000000)
134183 + if (aty_ld_le32(CONFIG_STAT1, par) & 0x40000000)
134184 info->fix.smem_len += 0x400000;
134185 }
134186
134187 @@ -2956,7 +2946,7 @@
134188 * Fix PROMs idea of MEM_CNTL settings...
134189 */
134190 mem = aty_ld_le32(MEM_CNTL, par);
134191 - chip_id = aty_ld_le32(CNFG_CHIP_ID, par);
134192 + chip_id = aty_ld_le32(CONFIG_CHIP_ID, par);
134193 if (((chip_id & CFG_CHIP_TYPE) == VT_CHIP_ID) && !((chip_id >> 24) & 1)) {
134194 switch (mem & 0x0f) {
134195 case 3:
134196 @@ -2974,7 +2964,7 @@
134197 default:
134198 break;
134199 }
134200 - if ((aty_ld_le32(CNFG_STAT0, par) & 7) >= SDRAM)
134201 + if ((aty_ld_le32(CONFIG_STAT0, par) & 7) >= SDRAM)
134202 mem &= ~(0x00700000);
134203 }
134204 mem &= ~(0xcf80e000); /* Turn off all undocumented bits. */
134205 @@ -3582,7 +3572,7 @@
134206 }
134207
134208 /* Fake pci_id for correct_chipset() */
134209 - switch (aty_ld_le32(CNFG_CHIP_ID, par) & CFG_CHIP_TYPE) {
134210 + switch (aty_ld_le32(CONFIG_CHIP_ID, par) & CFG_CHIP_TYPE) {
134211 case 0x00d7:
134212 par->pci_id = PCI_CHIP_MACH64GX;
134213 break;
134214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/aty/mach64_ct.c linux-2.6.29-rc3.owrt/drivers/video/aty/mach64_ct.c
134215 --- linux-2.6.29.owrt/drivers/video/aty/mach64_ct.c 2009-05-10 22:04:38.000000000 +0200
134216 +++ linux-2.6.29-rc3.owrt/drivers/video/aty/mach64_ct.c 2009-05-10 23:48:29.000000000 +0200
134217 @@ -8,9 +8,6 @@
134218 #include <asm/io.h>
134219 #include <video/mach64.h>
134220 #include "atyfb.h"
134221 -#ifdef CONFIG_PPC
134222 -#include <asm/machdep.h>
134223 -#endif
134224
134225 #undef DEBUG
134226
134227 @@ -539,14 +536,6 @@
134228 pll->ct.xclk_post_div_real = postdividers[xpost_div];
134229 pll->ct.mclk_fb_div = q * pll->ct.xclk_post_div_real / 8;
134230
134231 -#ifdef CONFIG_PPC
134232 - if (machine_is(powermac)) {
134233 - /* Override PLL_EXT_CNTL & 0x07. */
134234 - pll->ct.xclk_post_div = xpost_div;
134235 - pll->ct.xclk_ref_div = 1;
134236 - }
134237 -#endif
134238 -
134239 #ifdef DEBUG
134240 pllmclk = (1000000 * pll->ct.mclk_fb_mult * pll->ct.mclk_fb_div) /
134241 (par->ref_clk_per * pll->ct.pll_ref_div);
134242 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/aty/radeon_base.c linux-2.6.29-rc3.owrt/drivers/video/aty/radeon_base.c
134243 --- linux-2.6.29.owrt/drivers/video/aty/radeon_base.c 2009-05-10 22:04:38.000000000 +0200
134244 +++ linux-2.6.29-rc3.owrt/drivers/video/aty/radeon_base.c 2009-05-10 23:48:29.000000000 +0200
134245 @@ -1936,8 +1936,8 @@
134246 OUTREG(CRTC_GEN_CNTL, save_crtc_gen_cntl | CRTC_DISP_REQ_EN_B);
134247 mdelay(100);
134248
134249 - aper_base = INREG(CNFG_APER_0_BASE);
134250 - aper_size = INREG(CNFG_APER_SIZE);
134251 + aper_base = INREG(CONFIG_APER_0_BASE);
134252 + aper_size = INREG(CONFIG_APER_SIZE);
134253
134254 #ifdef SET_MC_FB_FROM_APERTURE
134255 /* Set framebuffer to be at the same address as set in PCI BAR */
134256 @@ -2024,11 +2024,11 @@
134257 ~CRTC_H_CUTOFF_ACTIVE_EN);
134258 }
134259 } else {
134260 - tmp = INREG(CNFG_MEMSIZE);
134261 + tmp = INREG(CONFIG_MEMSIZE);
134262 }
134263
134264 /* mem size is bits [28:0], mask off the rest */
134265 - rinfo->video_ram = tmp & CNFG_MEMSIZE_MASK;
134266 + rinfo->video_ram = tmp & CONFIG_MEMSIZE_MASK;
134267
134268 /*
134269 * Hack to get around some busted production M6's
134270 @@ -2228,7 +2228,7 @@
134271 */
134272 rinfo->errata = 0;
134273 if (rinfo->family == CHIP_FAMILY_R300 &&
134274 - (INREG(CNFG_CNTL) & CFG_ATI_REV_ID_MASK)
134275 + (INREG(CONFIG_CNTL) & CFG_ATI_REV_ID_MASK)
134276 == CFG_ATI_REV_A11)
134277 rinfo->errata |= CHIP_ERRATA_R300_CG;
134278
134279 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/aty/radeonfb.h linux-2.6.29-rc3.owrt/drivers/video/aty/radeonfb.h
134280 --- linux-2.6.29.owrt/drivers/video/aty/radeonfb.h 2009-05-10 22:04:38.000000000 +0200
134281 +++ linux-2.6.29-rc3.owrt/drivers/video/aty/radeonfb.h 2009-05-10 23:48:29.000000000 +0200
134282 @@ -361,6 +361,8 @@
134283 #ifdef CONFIG_FB_RADEON_I2C
134284 struct radeon_i2c_chan i2c[4];
134285 #endif
134286 +
134287 + u32 cfg_save[64];
134288 };
134289
134290
134291 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/aty/radeon_pm.c linux-2.6.29-rc3.owrt/drivers/video/aty/radeon_pm.c
134292 --- linux-2.6.29.owrt/drivers/video/aty/radeon_pm.c 2009-05-10 22:04:38.000000000 +0200
134293 +++ linux-2.6.29-rc3.owrt/drivers/video/aty/radeon_pm.c 2009-05-10 23:48:29.000000000 +0200
134294 @@ -333,7 +333,7 @@
134295 if (!rinfo->has_CRTC2) {
134296 tmp = INPLL(pllSCLK_CNTL);
134297
134298 - if ((INREG(CNFG_CNTL) & CFG_ATI_REV_ID_MASK) > CFG_ATI_REV_A13)
134299 + if ((INREG(CONFIG_CNTL) & CFG_ATI_REV_ID_MASK) > CFG_ATI_REV_A13)
134300 tmp &= ~(SCLK_CNTL__FORCE_CP | SCLK_CNTL__FORCE_RB);
134301 tmp &= ~(SCLK_CNTL__FORCE_HDP | SCLK_CNTL__FORCE_DISP1 |
134302 SCLK_CNTL__FORCE_TOP | SCLK_CNTL__FORCE_SE |
134303 @@ -468,9 +468,9 @@
134304
134305 /*RAGE_6::A11 A12 A12N1 A13, RV250::A11 A12, R300*/
134306 if ((rinfo->family == CHIP_FAMILY_RV250 &&
134307 - ((INREG(CNFG_CNTL) & CFG_ATI_REV_ID_MASK) < CFG_ATI_REV_A13)) ||
134308 + ((INREG(CONFIG_CNTL) & CFG_ATI_REV_ID_MASK) < CFG_ATI_REV_A13)) ||
134309 ((rinfo->family == CHIP_FAMILY_RV100) &&
134310 - ((INREG(CNFG_CNTL) & CFG_ATI_REV_ID_MASK) <= CFG_ATI_REV_A13))) {
134311 + ((INREG(CONFIG_CNTL) & CFG_ATI_REV_ID_MASK) <= CFG_ATI_REV_A13))) {
134312 tmp |= SCLK_CNTL__FORCE_CP;
134313 tmp |= SCLK_CNTL__FORCE_VIP;
134314 }
134315 @@ -486,7 +486,7 @@
134316 /* RV200::A11 A12 RV250::A11 A12 */
134317 if (((rinfo->family == CHIP_FAMILY_RV200) ||
134318 (rinfo->family == CHIP_FAMILY_RV250)) &&
134319 - ((INREG(CNFG_CNTL) & CFG_ATI_REV_ID_MASK) < CFG_ATI_REV_A13))
134320 + ((INREG(CONFIG_CNTL) & CFG_ATI_REV_ID_MASK) < CFG_ATI_REV_A13))
134321 tmp |= SCLK_MORE_CNTL__FORCEON;
134322
134323 OUTPLL(pllSCLK_MORE_CNTL, tmp);
134324 @@ -497,7 +497,7 @@
134325 /* RV200::A11 A12, RV250::A11 A12 */
134326 if (((rinfo->family == CHIP_FAMILY_RV200) ||
134327 (rinfo->family == CHIP_FAMILY_RV250)) &&
134328 - ((INREG(CNFG_CNTL) & CFG_ATI_REV_ID_MASK) < CFG_ATI_REV_A13)) {
134329 + ((INREG(CONFIG_CNTL) & CFG_ATI_REV_ID_MASK) < CFG_ATI_REV_A13)) {
134330 tmp = INPLL(pllPLL_PWRMGT_CNTL);
134331 tmp |= PLL_PWRMGT_CNTL__TCL_BYPASS_DISABLE;
134332 OUTPLL(pllPLL_PWRMGT_CNTL, tmp);
134333 @@ -702,7 +702,7 @@
134334 OUTREG(DISPLAY_BASE_ADDR, rinfo->save_regs[31]);
134335 OUTREG(MC_AGP_LOCATION, rinfo->save_regs[32]);
134336 OUTREG(CRTC2_DISPLAY_BASE_ADDR, rinfo->save_regs[33]);
134337 - OUTREG(CNFG_MEMSIZE, rinfo->video_ram);
134338 + OUTREG(CONFIG_MEMSIZE, rinfo->video_ram);
134339
134340 OUTREG(DISP_MISC_CNTL, rinfo->save_regs[9]);
134341 OUTREG(DISP_PWR_MAN, rinfo->save_regs[10]);
134342 @@ -1723,7 +1723,7 @@
134343 OUTREG(CRTC2_DISPLAY_BASE_ADDR, rinfo->save_regs[33]);
134344 OUTREG(MC_FB_LOCATION, rinfo->save_regs[30]);
134345 OUTREG(OV0_BASE_ADDR, rinfo->save_regs[80]);
134346 - OUTREG(CNFG_MEMSIZE, rinfo->video_ram);
134347 + OUTREG(CONFIG_MEMSIZE, rinfo->video_ram);
134348 OUTREG(BUS_CNTL, rinfo->save_regs[36]);
134349 OUTREG(BUS_CNTL1, rinfo->save_regs[14]);
134350 OUTREG(MPP_TB_CONFIG, rinfo->save_regs[37]);
134351 @@ -1961,7 +1961,7 @@
134352 OUTMC(rinfo, ixMC_CHP_IO_CNTL_B1, rinfo->save_regs[68] /*0x141555ff*/);
134353 OUTMC(rinfo, ixMC_IMP_CNTL_0, rinfo->save_regs[71] /*0x00009249*/);
134354 OUTREG(MC_IND_INDEX, 0);
134355 - OUTREG(CNFG_MEMSIZE, rinfo->video_ram);
134356 + OUTREG(CONFIG_MEMSIZE, rinfo->video_ram);
134357
134358 mdelay(20);
134359 }
134360 @@ -2361,7 +2361,7 @@
134361 OUTMC(rinfo, ixMC_IMP_CNTL_0, 0x00009249);
134362 OUTREG(MC_IND_INDEX, 0);
134363
134364 - OUTREG(CNFG_MEMSIZE, rinfo->video_ram);
134365 + OUTREG(CONFIG_MEMSIZE, rinfo->video_ram);
134366
134367 radeon_pm_full_reset_sdram(rinfo);
134368
134369 @@ -2507,28 +2507,11 @@
134370
134371 #endif /* CONFIG_PPC_OF */
134372
134373 -static void radeonfb_whack_power_state(struct radeonfb_info *rinfo, pci_power_t state)
134374 -{
134375 - u16 pwr_cmd;
134376 -
134377 - for (;;) {
134378 - pci_read_config_word(rinfo->pdev,
134379 - rinfo->pm_reg+PCI_PM_CTRL,
134380 - &pwr_cmd);
134381 - if (pwr_cmd & 2)
134382 - break;
134383 - pwr_cmd = (pwr_cmd & ~PCI_PM_CTRL_STATE_MASK) | 2;
134384 - pci_write_config_word(rinfo->pdev,
134385 - rinfo->pm_reg+PCI_PM_CTRL,
134386 - pwr_cmd);
134387 - msleep(500);
134388 - }
134389 - rinfo->pdev->current_state = state;
134390 -}
134391 -
134392 static void radeon_set_suspend(struct radeonfb_info *rinfo, int suspend)
134393 {
134394 + u16 pwr_cmd;
134395 u32 tmp;
134396 + int i;
134397
134398 if (!rinfo->pm_reg)
134399 return;
134400 @@ -2574,19 +2557,32 @@
134401 }
134402 }
134403
134404 + for (i = 0; i < 64; ++i)
134405 + pci_read_config_dword(rinfo->pdev, i * 4,
134406 + &rinfo->cfg_save[i]);
134407 +
134408 /* Switch PCI power management to D2. */
134409 pci_disable_device(rinfo->pdev);
134410 - pci_save_state(rinfo->pdev);
134411 - /* The chip seems to need us to whack the PM register
134412 - * repeatedly until it sticks. We do that -prior- to
134413 - * calling pci_set_power_state()
134414 - */
134415 - radeonfb_whack_power_state(rinfo, PCI_D2);
134416 - pci_set_power_state(rinfo->pdev, PCI_D2);
134417 + for (;;) {
134418 + pci_read_config_word(
134419 + rinfo->pdev, rinfo->pm_reg+PCI_PM_CTRL,
134420 + &pwr_cmd);
134421 + if (pwr_cmd & 2)
134422 + break;
134423 + pci_write_config_word(
134424 + rinfo->pdev, rinfo->pm_reg+PCI_PM_CTRL,
134425 + (pwr_cmd & ~PCI_PM_CTRL_STATE_MASK) | 2);
134426 + mdelay(500);
134427 + }
134428 } else {
134429 printk(KERN_DEBUG "radeonfb (%s): switching to D0 state...\n",
134430 pci_name(rinfo->pdev));
134431
134432 + /* Switch back PCI powermanagment to D0 */
134433 + mdelay(200);
134434 + pci_write_config_word(rinfo->pdev, rinfo->pm_reg+PCI_PM_CTRL, 0);
134435 + mdelay(500);
134436 +
134437 if (rinfo->family <= CHIP_FAMILY_RV250) {
134438 /* Reset the SDRAM controller */
134439 radeon_pm_full_reset_sdram(rinfo);
134440 @@ -2602,10 +2598,37 @@
134441 }
134442 }
134443
134444 +static int radeon_restore_pci_cfg(struct radeonfb_info *rinfo)
134445 +{
134446 + int i;
134447 + static u32 radeon_cfg_after_resume[64];
134448 +
134449 + for (i = 0; i < 64; ++i)
134450 + pci_read_config_dword(rinfo->pdev, i * 4,
134451 + &radeon_cfg_after_resume[i]);
134452 +
134453 + if (radeon_cfg_after_resume[PCI_BASE_ADDRESS_0/4]
134454 + == rinfo->cfg_save[PCI_BASE_ADDRESS_0/4])
134455 + return 0; /* assume everything is ok */
134456 +
134457 + for (i = PCI_BASE_ADDRESS_0/4; i < 64; ++i) {
134458 + if (radeon_cfg_after_resume[i] != rinfo->cfg_save[i])
134459 + pci_write_config_dword(rinfo->pdev, i * 4,
134460 + rinfo->cfg_save[i]);
134461 + }
134462 + pci_write_config_word(rinfo->pdev, PCI_CACHE_LINE_SIZE,
134463 + rinfo->cfg_save[PCI_CACHE_LINE_SIZE/4]);
134464 + pci_write_config_word(rinfo->pdev, PCI_COMMAND,
134465 + rinfo->cfg_save[PCI_COMMAND/4]);
134466 + return 1;
134467 +}
134468 +
134469 +
134470 int radeonfb_pci_suspend(struct pci_dev *pdev, pm_message_t mesg)
134471 {
134472 struct fb_info *info = pci_get_drvdata(pdev);
134473 struct radeonfb_info *rinfo = info->par;
134474 + int i;
134475
134476 if (mesg.event == pdev->dev.power.power_state.event)
134477 return 0;
134478 @@ -2651,11 +2674,6 @@
134479 pmac_suspend_agp_for_card(pdev);
134480 #endif /* CONFIG_PPC_PMAC */
134481
134482 - /* It's unclear whether or when the generic code will do that, so let's
134483 - * do it ourselves. We save state before we do any power management
134484 - */
134485 - pci_save_state(pdev);
134486 -
134487 /* If we support wakeup from poweroff, we save all regs we can including cfg
134488 * space
134489 */
134490 @@ -2680,6 +2698,9 @@
134491 mdelay(20);
134492 OUTREG(LVDS_GEN_CNTL, INREG(LVDS_GEN_CNTL) & ~(LVDS_DIGON));
134493 }
134494 + // FIXME: Use PCI layer
134495 + for (i = 0; i < 64; ++i)
134496 + pci_read_config_dword(pdev, i * 4, &rinfo->cfg_save[i]);
134497 pci_disable_device(pdev);
134498 }
134499 /* If we support D2, we go to it (should be fixed later with a flag forcing
134500 @@ -2696,13 +2717,6 @@
134501 return 0;
134502 }
134503
134504 -static int radeon_check_power_loss(struct radeonfb_info *rinfo)
134505 -{
134506 - return rinfo->save_regs[4] != INPLL(CLK_PIN_CNTL) ||
134507 - rinfo->save_regs[2] != INPLL(MCLK_CNTL) ||
134508 - rinfo->save_regs[3] != INPLL(SCLK_CNTL);
134509 -}
134510 -
134511 int radeonfb_pci_resume(struct pci_dev *pdev)
134512 {
134513 struct fb_info *info = pci_get_drvdata(pdev);
134514 @@ -2721,13 +2735,20 @@
134515 printk(KERN_DEBUG "radeonfb (%s): resuming from state: %d...\n",
134516 pci_name(pdev), pdev->dev.power.power_state.event);
134517
134518 - /* PCI state will have been restored by the core, so
134519 - * we should be in D0 now with our config space fully
134520 - * restored
134521 - */
134522 +
134523 + if (pci_enable_device(pdev)) {
134524 + rc = -ENODEV;
134525 + printk(KERN_ERR "radeonfb (%s): can't enable PCI device !\n",
134526 + pci_name(pdev));
134527 + goto bail;
134528 + }
134529 + pci_set_master(pdev);
134530 +
134531 if (pdev->dev.power.power_state.event == PM_EVENT_SUSPEND) {
134532 - /* Wakeup chip */
134533 - if ((rinfo->pm_mode & radeon_pm_off) && radeon_check_power_loss(rinfo)) {
134534 + /* Wakeup chip. Check from config space if we were powered off
134535 + * (todo: additionally, check CLK_PIN_CNTL too)
134536 + */
134537 + if ((rinfo->pm_mode & radeon_pm_off) && radeon_restore_pci_cfg(rinfo)) {
134538 if (rinfo->reinit_func != NULL)
134539 rinfo->reinit_func(rinfo);
134540 else {
134541 @@ -2786,13 +2807,12 @@
134542 return rc;
134543 }
134544
134545 -#ifdef CONFIG_PPC_OF__disabled
134546 +#ifdef CONFIG_PPC_OF
134547 static void radeonfb_early_resume(void *data)
134548 {
134549 struct radeonfb_info *rinfo = data;
134550
134551 rinfo->no_schedule = 1;
134552 - pci_restore_state(rinfo->pdev);
134553 radeonfb_pci_resume(rinfo->pdev);
134554 rinfo->no_schedule = 0;
134555 }
134556 @@ -2859,14 +2879,7 @@
134557 */
134558 if (rinfo->pm_mode != radeon_pm_none) {
134559 pmac_call_feature(PMAC_FTR_DEVICE_CAN_WAKE, rinfo->of_node, 0, 1);
134560 -#if 0 /* Disable the early video resume hack for now as it's causing problems, among
134561 - * others we now rely on the PCI core restoring the config space for us, which
134562 - * isn't the case with that hack, and that code path causes various things to
134563 - * be called with interrupts off while they shouldn't. I'm leaving the code in
134564 - * as it can be useful for debugging purposes
134565 - */
134566 pmac_set_early_video_resume(radeonfb_early_resume, rinfo);
134567 -#endif
134568 }
134569
134570 #if 0
134571 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/backlight/da903x_bl.c linux-2.6.29-rc3.owrt/drivers/video/backlight/da903x_bl.c
134572 --- linux-2.6.29.owrt/drivers/video/backlight/da903x_bl.c 2009-05-10 22:04:38.000000000 +0200
134573 +++ linux-2.6.29-rc3.owrt/drivers/video/backlight/da903x_bl.c 1970-01-01 01:00:00.000000000 +0100
134574 @@ -1,203 +0,0 @@
134575 -/*
134576 - * Backlight driver for Dialog Semiconductor DA9030/DA9034
134577 - *
134578 - * Copyright (C) 2008 Compulab, Ltd.
134579 - * Mike Rapoport <mike@compulab.co.il>
134580 - *
134581 - * Copyright (C) 2006-2008 Marvell International Ltd.
134582 - * Eric Miao <eric.miao@marvell.com>
134583 - *
134584 - * This program is free software; you can redistribute it and/or modify
134585 - * it under the terms of the GNU General Public License version 2 as
134586 - * published by the Free Software Foundation.
134587 - */
134588 -
134589 -#include <linux/kernel.h>
134590 -#include <linux/init.h>
134591 -#include <linux/platform_device.h>
134592 -#include <linux/fb.h>
134593 -#include <linux/backlight.h>
134594 -#include <linux/mfd/da903x.h>
134595 -
134596 -#define DA9030_WLED_CONTROL 0x25
134597 -#define DA9030_WLED_CP_EN (1 << 6)
134598 -#define DA9030_WLED_TRIM(x) ((x) & 0x7)
134599 -
134600 -#define DA9034_WLED_CONTROL1 0x3C
134601 -#define DA9034_WLED_CONTROL2 0x3D
134602 -
134603 -#define DA9034_WLED_BOOST_EN (1 << 5)
134604 -
134605 -#define DA9030_MAX_BRIGHTNESS 7
134606 -#define DA9034_MAX_BRIGHTNESS 0x7f
134607 -
134608 -struct da903x_backlight_data {
134609 - struct device *da903x_dev;
134610 - int id;
134611 - int current_brightness;
134612 -};
134613 -
134614 -static int da903x_backlight_set(struct backlight_device *bl, int brightness)
134615 -{
134616 - struct da903x_backlight_data *data = bl_get_data(bl);
134617 - struct device *dev = data->da903x_dev;
134618 - uint8_t val;
134619 - int ret = 0;
134620 -
134621 - switch (data->id) {
134622 - case DA9034_ID_WLED:
134623 - ret = da903x_update(dev, DA9034_WLED_CONTROL1,
134624 - brightness, 0x7f);
134625 - if (ret)
134626 - return ret;
134627 -
134628 - if (data->current_brightness && brightness == 0)
134629 - ret = da903x_clr_bits(dev,
134630 - DA9034_WLED_CONTROL2,
134631 - DA9034_WLED_BOOST_EN);
134632 -
134633 - if (data->current_brightness == 0 && brightness)
134634 - ret = da903x_set_bits(dev,
134635 - DA9034_WLED_CONTROL2,
134636 - DA9034_WLED_BOOST_EN);
134637 - break;
134638 - case DA9030_ID_WLED:
134639 - val = DA9030_WLED_TRIM(brightness);
134640 - val |= brightness ? DA9030_WLED_CP_EN : 0;
134641 - ret = da903x_write(dev, DA9030_WLED_CONTROL, val);
134642 - break;
134643 - }
134644 -
134645 - if (ret)
134646 - return ret;
134647 -
134648 - data->current_brightness = brightness;
134649 - return 0;
134650 -}
134651 -
134652 -static int da903x_backlight_update_status(struct backlight_device *bl)
134653 -{
134654 - int brightness = bl->props.brightness;
134655 -
134656 - if (bl->props.power != FB_BLANK_UNBLANK)
134657 - brightness = 0;
134658 -
134659 - if (bl->props.fb_blank != FB_BLANK_UNBLANK)
134660 - brightness = 0;
134661 -
134662 - return da903x_backlight_set(bl, brightness);
134663 -}
134664 -
134665 -static int da903x_backlight_get_brightness(struct backlight_device *bl)
134666 -{
134667 - struct da903x_backlight_data *data = bl_get_data(bl);
134668 - return data->current_brightness;
134669 -}
134670 -
134671 -static struct backlight_ops da903x_backlight_ops = {
134672 - .update_status = da903x_backlight_update_status,
134673 - .get_brightness = da903x_backlight_get_brightness,
134674 -};
134675 -
134676 -static int da903x_backlight_probe(struct platform_device *pdev)
134677 -{
134678 - struct da903x_backlight_data *data;
134679 - struct backlight_device *bl;
134680 - int max_brightness;
134681 -
134682 - data = kzalloc(sizeof(*data), GFP_KERNEL);
134683 - if (data == NULL)
134684 - return -ENOMEM;
134685 -
134686 - switch (pdev->id) {
134687 - case DA9030_ID_WLED:
134688 - max_brightness = DA9030_MAX_BRIGHTNESS;
134689 - break;
134690 - case DA9034_ID_WLED:
134691 - max_brightness = DA9034_MAX_BRIGHTNESS;
134692 - break;
134693 - default:
134694 - dev_err(&pdev->dev, "invalid backlight device ID(%d)\n",
134695 - pdev->id);
134696 - kfree(data);
134697 - return -EINVAL;
134698 - }
134699 -
134700 - data->id = pdev->id;
134701 - data->da903x_dev = pdev->dev.parent;
134702 - data->current_brightness = 0;
134703 -
134704 - bl = backlight_device_register(pdev->name, data->da903x_dev,
134705 - data, &da903x_backlight_ops);
134706 - if (IS_ERR(bl)) {
134707 - dev_err(&pdev->dev, "failed to register backlight\n");
134708 - kfree(data);
134709 - return PTR_ERR(bl);
134710 - }
134711 -
134712 - bl->props.max_brightness = max_brightness;
134713 - bl->props.brightness = max_brightness;
134714 -
134715 - platform_set_drvdata(pdev, bl);
134716 - backlight_update_status(bl);
134717 - return 0;
134718 -}
134719 -
134720 -static int da903x_backlight_remove(struct platform_device *pdev)
134721 -{
134722 - struct backlight_device *bl = platform_get_drvdata(pdev);
134723 - struct da903x_backlight_data *data = bl_get_data(bl);
134724 -
134725 - backlight_device_unregister(bl);
134726 - kfree(data);
134727 - return 0;
134728 -}
134729 -
134730 -#ifdef CONFIG_PM
134731 -static int da903x_backlight_suspend(struct platform_device *pdev,
134732 - pm_message_t state)
134733 -{
134734 - struct backlight_device *bl = platform_get_drvdata(pdev);
134735 - return da903x_backlight_set(bl, 0);
134736 -}
134737 -
134738 -static int da903x_backlight_resume(struct platform_device *pdev)
134739 -{
134740 - struct backlight_device *bl = platform_get_drvdata(pdev);
134741 -
134742 - backlight_update_status(bl);
134743 - return 0;
134744 -}
134745 -#else
134746 -#define da903x_backlight_suspend NULL
134747 -#define da903x_backlight_resume NULL
134748 -#endif
134749 -
134750 -static struct platform_driver da903x_backlight_driver = {
134751 - .driver = {
134752 - .name = "da903x-backlight",
134753 - .owner = THIS_MODULE,
134754 - },
134755 - .probe = da903x_backlight_probe,
134756 - .remove = da903x_backlight_remove,
134757 - .suspend = da903x_backlight_suspend,
134758 - .resume = da903x_backlight_resume,
134759 -};
134760 -
134761 -static int __init da903x_backlight_init(void)
134762 -{
134763 - return platform_driver_register(&da903x_backlight_driver);
134764 -}
134765 -module_init(da903x_backlight_init);
134766 -
134767 -static void __exit da903x_backlight_exit(void)
134768 -{
134769 - platform_driver_unregister(&da903x_backlight_driver);
134770 -}
134771 -module_exit(da903x_backlight_exit);
134772 -
134773 -MODULE_DESCRIPTION("Backlight Driver for Dialog Semiconductor DA9030/DA9034");
134774 -MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>"
134775 - "Mike Rapoport <mike@compulab.co.il>");
134776 -MODULE_LICENSE("GPL");
134777 -MODULE_ALIAS("platform:da903x-backlight");
134778 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/backlight/da903x.c linux-2.6.29-rc3.owrt/drivers/video/backlight/da903x.c
134779 --- linux-2.6.29.owrt/drivers/video/backlight/da903x.c 1970-01-01 01:00:00.000000000 +0100
134780 +++ linux-2.6.29-rc3.owrt/drivers/video/backlight/da903x.c 2009-05-10 23:48:29.000000000 +0200
134781 @@ -0,0 +1,203 @@
134782 +/*
134783 + * Backlight driver for Dialog Semiconductor DA9030/DA9034
134784 + *
134785 + * Copyright (C) 2008 Compulab, Ltd.
134786 + * Mike Rapoport <mike@compulab.co.il>
134787 + *
134788 + * Copyright (C) 2006-2008 Marvell International Ltd.
134789 + * Eric Miao <eric.miao@marvell.com>
134790 + *
134791 + * This program is free software; you can redistribute it and/or modify
134792 + * it under the terms of the GNU General Public License version 2 as
134793 + * published by the Free Software Foundation.
134794 + */
134795 +
134796 +#include <linux/kernel.h>
134797 +#include <linux/init.h>
134798 +#include <linux/platform_device.h>
134799 +#include <linux/fb.h>
134800 +#include <linux/backlight.h>
134801 +#include <linux/mfd/da903x.h>
134802 +
134803 +#define DA9030_WLED_CONTROL 0x25
134804 +#define DA9030_WLED_CP_EN (1 << 6)
134805 +#define DA9030_WLED_TRIM(x) ((x) & 0x7)
134806 +
134807 +#define DA9034_WLED_CONTROL1 0x3C
134808 +#define DA9034_WLED_CONTROL2 0x3D
134809 +
134810 +#define DA9034_WLED_BOOST_EN (1 << 5)
134811 +
134812 +#define DA9030_MAX_BRIGHTNESS 7
134813 +#define DA9034_MAX_BRIGHTNESS 0x7f
134814 +
134815 +struct da903x_backlight_data {
134816 + struct device *da903x_dev;
134817 + int id;
134818 + int current_brightness;
134819 +};
134820 +
134821 +static int da903x_backlight_set(struct backlight_device *bl, int brightness)
134822 +{
134823 + struct da903x_backlight_data *data = bl_get_data(bl);
134824 + struct device *dev = data->da903x_dev;
134825 + uint8_t val;
134826 + int ret = 0;
134827 +
134828 + switch (data->id) {
134829 + case DA9034_ID_WLED:
134830 + ret = da903x_update(dev, DA9034_WLED_CONTROL1,
134831 + brightness, 0x7f);
134832 + if (ret)
134833 + return ret;
134834 +
134835 + if (data->current_brightness && brightness == 0)
134836 + ret = da903x_clr_bits(dev,
134837 + DA9034_WLED_CONTROL2,
134838 + DA9034_WLED_BOOST_EN);
134839 +
134840 + if (data->current_brightness == 0 && brightness)
134841 + ret = da903x_set_bits(dev,
134842 + DA9034_WLED_CONTROL2,
134843 + DA9034_WLED_BOOST_EN);
134844 + break;
134845 + case DA9030_ID_WLED:
134846 + val = DA9030_WLED_TRIM(brightness);
134847 + val |= brightness ? DA9030_WLED_CP_EN : 0;
134848 + ret = da903x_write(dev, DA9030_WLED_CONTROL, val);
134849 + break;
134850 + }
134851 +
134852 + if (ret)
134853 + return ret;
134854 +
134855 + data->current_brightness = brightness;
134856 + return 0;
134857 +}
134858 +
134859 +static int da903x_backlight_update_status(struct backlight_device *bl)
134860 +{
134861 + int brightness = bl->props.brightness;
134862 +
134863 + if (bl->props.power != FB_BLANK_UNBLANK)
134864 + brightness = 0;
134865 +
134866 + if (bl->props.fb_blank != FB_BLANK_UNBLANK)
134867 + brightness = 0;
134868 +
134869 + return da903x_backlight_set(bl, brightness);
134870 +}
134871 +
134872 +static int da903x_backlight_get_brightness(struct backlight_device *bl)
134873 +{
134874 + struct da903x_backlight_data *data = bl_get_data(bl);
134875 + return data->current_brightness;
134876 +}
134877 +
134878 +static struct backlight_ops da903x_backlight_ops = {
134879 + .update_status = da903x_backlight_update_status,
134880 + .get_brightness = da903x_backlight_get_brightness,
134881 +};
134882 +
134883 +static int da903x_backlight_probe(struct platform_device *pdev)
134884 +{
134885 + struct da903x_backlight_data *data;
134886 + struct backlight_device *bl;
134887 + int max_brightness;
134888 +
134889 + data = kzalloc(sizeof(*data), GFP_KERNEL);
134890 + if (data == NULL)
134891 + return -ENOMEM;
134892 +
134893 + switch (pdev->id) {
134894 + case DA9030_ID_WLED:
134895 + max_brightness = DA9030_MAX_BRIGHTNESS;
134896 + break;
134897 + case DA9034_ID_WLED:
134898 + max_brightness = DA9034_MAX_BRIGHTNESS;
134899 + break;
134900 + default:
134901 + dev_err(&pdev->dev, "invalid backlight device ID(%d)\n",
134902 + pdev->id);
134903 + kfree(data);
134904 + return -EINVAL;
134905 + }
134906 +
134907 + data->id = pdev->id;
134908 + data->da903x_dev = pdev->dev.parent;
134909 + data->current_brightness = 0;
134910 +
134911 + bl = backlight_device_register(pdev->name, data->da903x_dev,
134912 + data, &da903x_backlight_ops);
134913 + if (IS_ERR(bl)) {
134914 + dev_err(&pdev->dev, "failed to register backlight\n");
134915 + kfree(data);
134916 + return PTR_ERR(bl);
134917 + }
134918 +
134919 + bl->props.max_brightness = max_brightness;
134920 + bl->props.brightness = max_brightness;
134921 +
134922 + platform_set_drvdata(pdev, bl);
134923 + backlight_update_status(bl);
134924 + return 0;
134925 +}
134926 +
134927 +static int da903x_backlight_remove(struct platform_device *pdev)
134928 +{
134929 + struct backlight_device *bl = platform_get_drvdata(pdev);
134930 + struct da903x_backlight_data *data = bl_get_data(bl);
134931 +
134932 + backlight_device_unregister(bl);
134933 + kfree(data);
134934 + return 0;
134935 +}
134936 +
134937 +#ifdef CONFIG_PM
134938 +static int da903x_backlight_suspend(struct platform_device *pdev,
134939 + pm_message_t state)
134940 +{
134941 + struct backlight_device *bl = platform_get_drvdata(pdev);
134942 + return da903x_backlight_set(bl, 0);
134943 +}
134944 +
134945 +static int da903x_backlight_resume(struct platform_device *pdev)
134946 +{
134947 + struct backlight_device *bl = platform_get_drvdata(pdev);
134948 +
134949 + backlight_update_status(bl);
134950 + return 0;
134951 +}
134952 +#else
134953 +#define da903x_backlight_suspend NULL
134954 +#define da903x_backlight_resume NULL
134955 +#endif
134956 +
134957 +static struct platform_driver da903x_backlight_driver = {
134958 + .driver = {
134959 + .name = "da903x-backlight",
134960 + .owner = THIS_MODULE,
134961 + },
134962 + .probe = da903x_backlight_probe,
134963 + .remove = da903x_backlight_remove,
134964 + .suspend = da903x_backlight_suspend,
134965 + .resume = da903x_backlight_resume,
134966 +};
134967 +
134968 +static int __init da903x_backlight_init(void)
134969 +{
134970 + return platform_driver_register(&da903x_backlight_driver);
134971 +}
134972 +module_init(da903x_backlight_init);
134973 +
134974 +static void __exit da903x_backlight_exit(void)
134975 +{
134976 + platform_driver_unregister(&da903x_backlight_driver);
134977 +}
134978 +module_exit(da903x_backlight_exit);
134979 +
134980 +MODULE_DESCRIPTION("Backlight Driver for Dialog Semiconductor DA9030/DA9034");
134981 +MODULE_AUTHOR("Eric Miao <eric.miao@marvell.com>"
134982 + "Mike Rapoport <mike@compulab.co.il>");
134983 +MODULE_LICENSE("GPL");
134984 +MODULE_ALIAS("platform:da903x-backlight");
134985 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/backlight/Makefile linux-2.6.29-rc3.owrt/drivers/video/backlight/Makefile
134986 --- linux-2.6.29.owrt/drivers/video/backlight/Makefile 2009-05-10 22:04:38.000000000 +0200
134987 +++ linux-2.6.29-rc3.owrt/drivers/video/backlight/Makefile 2009-05-10 23:48:29.000000000 +0200
134988 @@ -18,7 +18,7 @@
134989 obj-$(CONFIG_BACKLIGHT_PROGEAR) += progear_bl.o
134990 obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH) += cr_bllcd.o
134991 obj-$(CONFIG_BACKLIGHT_PWM) += pwm_bl.o
134992 -obj-$(CONFIG_BACKLIGHT_DA903X) += da903x_bl.o
134993 +obj-$(CONFIG_BACKLIGHT_DA903X) += da903x.o
134994 obj-$(CONFIG_BACKLIGHT_MBP_NVIDIA) += mbp_nvidia_bl.o
134995 obj-$(CONFIG_BACKLIGHT_TOSA) += tosa_bl.o
134996 obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o
134997 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/bfin-t350mcqb-fb.c linux-2.6.29-rc3.owrt/drivers/video/bfin-t350mcqb-fb.c
134998 --- linux-2.6.29.owrt/drivers/video/bfin-t350mcqb-fb.c 2009-05-10 22:04:38.000000000 +0200
134999 +++ linux-2.6.29-rc3.owrt/drivers/video/bfin-t350mcqb-fb.c 2009-05-10 23:48:29.000000000 +0200
135000 @@ -447,7 +447,7 @@
135001 return IRQ_HANDLED;
135002 }
135003
135004 -static int __devinit bfin_t350mcqb_probe(struct platform_device *pdev)
135005 +static int __init bfin_t350mcqb_probe(struct platform_device *pdev)
135006 {
135007 struct bfin_t350mcqbfb_info *info;
135008 struct fb_info *fbinfo;
135009 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/fbcmap.c linux-2.6.29-rc3.owrt/drivers/video/fbcmap.c
135010 --- linux-2.6.29.owrt/drivers/video/fbcmap.c 2009-05-10 22:04:38.000000000 +0200
135011 +++ linux-2.6.29-rc3.owrt/drivers/video/fbcmap.c 2009-05-10 23:48:29.000000000 +0200
135012 @@ -250,6 +250,10 @@
135013 int rc, size = cmap->len * sizeof(u16);
135014 struct fb_cmap umap;
135015
135016 + if (cmap->start < 0 || (!info->fbops->fb_setcolreg &&
135017 + !info->fbops->fb_setcmap))
135018 + return -EINVAL;
135019 +
135020 memset(&umap, 0, sizeof(struct fb_cmap));
135021 rc = fb_alloc_cmap(&umap, cmap->len, cmap->transp != NULL);
135022 if (rc)
135023 @@ -258,23 +262,11 @@
135024 copy_from_user(umap.green, cmap->green, size) ||
135025 copy_from_user(umap.blue, cmap->blue, size) ||
135026 (cmap->transp && copy_from_user(umap.transp, cmap->transp, size))) {
135027 - rc = -EFAULT;
135028 - goto out;
135029 + fb_dealloc_cmap(&umap);
135030 + return -EFAULT;
135031 }
135032 umap.start = cmap->start;
135033 - if (!lock_fb_info(info)) {
135034 - rc = -ENODEV;
135035 - goto out;
135036 - }
135037 - if (cmap->start < 0 || (!info->fbops->fb_setcolreg &&
135038 - !info->fbops->fb_setcmap)) {
135039 - rc = -EINVAL;
135040 - goto out1;
135041 - }
135042 rc = fb_set_cmap(&umap, info);
135043 -out1:
135044 - unlock_fb_info(info);
135045 -out:
135046 fb_dealloc_cmap(&umap);
135047 return rc;
135048 }
135049 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/fbmem.c linux-2.6.29-rc3.owrt/drivers/video/fbmem.c
135050 --- linux-2.6.29.owrt/drivers/video/fbmem.c 2009-05-10 22:04:38.000000000 +0200
135051 +++ linux-2.6.29-rc3.owrt/drivers/video/fbmem.c 2009-05-10 23:48:29.000000000 +0200
135052 @@ -1013,139 +1013,132 @@
135053 struct fb_var_screeninfo var;
135054 struct fb_fix_screeninfo fix;
135055 struct fb_con2fbmap con2fb;
135056 - struct fb_cmap cmap_from;
135057 struct fb_cmap_user cmap;
135058 struct fb_event event;
135059 void __user *argp = (void __user *)arg;
135060 long ret = 0;
135061
135062 + fb = info->fbops;
135063 + if (!fb)
135064 + return -ENODEV;
135065 +
135066 switch (cmd) {
135067 case FBIOGET_VSCREENINFO:
135068 - if (!lock_fb_info(info))
135069 - return -ENODEV;
135070 - var = info->var;
135071 - unlock_fb_info(info);
135072 -
135073 - ret = copy_to_user(argp, &var, sizeof(var)) ? -EFAULT : 0;
135074 + ret = copy_to_user(argp, &info->var,
135075 + sizeof(var)) ? -EFAULT : 0;
135076 break;
135077 case FBIOPUT_VSCREENINFO:
135078 - if (copy_from_user(&var, argp, sizeof(var)))
135079 - return -EFAULT;
135080 - if (!lock_fb_info(info))
135081 - return -ENODEV;
135082 + if (copy_from_user(&var, argp, sizeof(var))) {
135083 + ret = -EFAULT;
135084 + break;
135085 + }
135086 acquire_console_sem();
135087 info->flags |= FBINFO_MISC_USEREVENT;
135088 ret = fb_set_var(info, &var);
135089 info->flags &= ~FBINFO_MISC_USEREVENT;
135090 release_console_sem();
135091 - unlock_fb_info(info);
135092 - if (!ret && copy_to_user(argp, &var, sizeof(var)))
135093 + if (ret == 0 && copy_to_user(argp, &var, sizeof(var)))
135094 ret = -EFAULT;
135095 break;
135096 case FBIOGET_FSCREENINFO:
135097 - if (!lock_fb_info(info))
135098 - return -ENODEV;
135099 - fix = info->fix;
135100 - unlock_fb_info(info);
135101 -
135102 - ret = copy_to_user(argp, &fix, sizeof(fix)) ? -EFAULT : 0;
135103 + ret = copy_to_user(argp, &info->fix,
135104 + sizeof(fix)) ? -EFAULT : 0;
135105 break;
135106 case FBIOPUTCMAP:
135107 if (copy_from_user(&cmap, argp, sizeof(cmap)))
135108 - return -EFAULT;
135109 - ret = fb_set_user_cmap(&cmap, info);
135110 + ret = -EFAULT;
135111 + else
135112 + ret = fb_set_user_cmap(&cmap, info);
135113 break;
135114 case FBIOGETCMAP:
135115 if (copy_from_user(&cmap, argp, sizeof(cmap)))
135116 - return -EFAULT;
135117 - if (!lock_fb_info(info))
135118 - return -ENODEV;
135119 - cmap_from = info->cmap;
135120 - unlock_fb_info(info);
135121 - ret = fb_cmap_to_user(&cmap_from, &cmap);
135122 + ret = -EFAULT;
135123 + else
135124 + ret = fb_cmap_to_user(&info->cmap, &cmap);
135125 break;
135126 case FBIOPAN_DISPLAY:
135127 - if (copy_from_user(&var, argp, sizeof(var)))
135128 - return -EFAULT;
135129 - if (!lock_fb_info(info))
135130 - return -ENODEV;
135131 + if (copy_from_user(&var, argp, sizeof(var))) {
135132 + ret = -EFAULT;
135133 + break;
135134 + }
135135 acquire_console_sem();
135136 ret = fb_pan_display(info, &var);
135137 release_console_sem();
135138 - unlock_fb_info(info);
135139 if (ret == 0 && copy_to_user(argp, &var, sizeof(var)))
135140 - return -EFAULT;
135141 + ret = -EFAULT;
135142 break;
135143 case FBIO_CURSOR:
135144 ret = -EINVAL;
135145 break;
135146 case FBIOGET_CON2FBMAP:
135147 if (copy_from_user(&con2fb, argp, sizeof(con2fb)))
135148 - return -EFAULT;
135149 - if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
135150 - return -EINVAL;
135151 - con2fb.framebuffer = -1;
135152 - event.data = &con2fb;
135153 -
135154 - if (!lock_fb_info(info))
135155 - return -ENODEV;
135156 - event.info = info;
135157 - fb_notifier_call_chain(FB_EVENT_GET_CONSOLE_MAP, &event);
135158 - unlock_fb_info(info);
135159 -
135160 - ret = copy_to_user(argp, &con2fb, sizeof(con2fb)) ? -EFAULT : 0;
135161 + ret = -EFAULT;
135162 + else if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
135163 + ret = -EINVAL;
135164 + else {
135165 + con2fb.framebuffer = -1;
135166 + event.info = info;
135167 + event.data = &con2fb;
135168 + fb_notifier_call_chain(FB_EVENT_GET_CONSOLE_MAP,
135169 + &event);
135170 + ret = copy_to_user(argp, &con2fb,
135171 + sizeof(con2fb)) ? -EFAULT : 0;
135172 + }
135173 break;
135174 case FBIOPUT_CON2FBMAP:
135175 - if (copy_from_user(&con2fb, argp, sizeof(con2fb)))
135176 - return -EFAULT;
135177 - if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES)
135178 - return -EINVAL;
135179 - if (con2fb.framebuffer < 0 || con2fb.framebuffer >= FB_MAX)
135180 - return -EINVAL;
135181 + if (copy_from_user(&con2fb, argp, sizeof(con2fb))) {
135182 + ret = -EFAULT;
135183 + break;
135184 + }
135185 + if (con2fb.console < 1 || con2fb.console > MAX_NR_CONSOLES) {
135186 + ret = -EINVAL;
135187 + break;
135188 + }
135189 + if (con2fb.framebuffer < 0 || con2fb.framebuffer >= FB_MAX) {
135190 + ret = -EINVAL;
135191 + break;
135192 + }
135193 if (!registered_fb[con2fb.framebuffer])
135194 request_module("fb%d", con2fb.framebuffer);
135195 if (!registered_fb[con2fb.framebuffer]) {
135196 ret = -EINVAL;
135197 break;
135198 }
135199 - event.data = &con2fb;
135200 - if (!lock_fb_info(info))
135201 - return -ENODEV;
135202 event.info = info;
135203 + event.data = &con2fb;
135204 ret = fb_notifier_call_chain(FB_EVENT_SET_CONSOLE_MAP,
135205 &event);
135206 - unlock_fb_info(info);
135207 break;
135208 case FBIOBLANK:
135209 - if (!lock_fb_info(info))
135210 - return -ENODEV;
135211 acquire_console_sem();
135212 info->flags |= FBINFO_MISC_USEREVENT;
135213 ret = fb_blank(info, arg);
135214 info->flags &= ~FBINFO_MISC_USEREVENT;
135215 release_console_sem();
135216 - unlock_fb_info(info);
135217 - break;
135218 + break;;
135219 default:
135220 - if (!lock_fb_info(info))
135221 - return -ENODEV;
135222 - fb = info->fbops;
135223 - if (fb->fb_ioctl)
135224 - ret = fb->fb_ioctl(info, cmd, arg);
135225 - else
135226 + if (fb->fb_ioctl == NULL)
135227 ret = -ENOTTY;
135228 - unlock_fb_info(info);
135229 + else
135230 + ret = fb->fb_ioctl(info, cmd, arg);
135231 }
135232 return ret;
135233 }
135234
135235 static long fb_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
135236 +__acquires(&info->lock)
135237 +__releases(&info->lock)
135238 {
135239 struct inode *inode = file->f_path.dentry->d_inode;
135240 int fbidx = iminor(inode);
135241 - struct fb_info *info = registered_fb[fbidx];
135242 + struct fb_info *info;
135243 + long ret;
135244
135245 - return do_fb_ioctl(info, cmd, arg);
135246 + info = registered_fb[fbidx];
135247 + mutex_lock(&info->lock);
135248 + ret = do_fb_ioctl(info, cmd, arg);
135249 + mutex_unlock(&info->lock);
135250 + return ret;
135251 }
135252
135253 #ifdef CONFIG_COMPAT
135254 @@ -1264,6 +1257,8 @@
135255
135256 static long fb_compat_ioctl(struct file *file, unsigned int cmd,
135257 unsigned long arg)
135258 +__acquires(&info->lock)
135259 +__releases(&info->lock)
135260 {
135261 struct inode *inode = file->f_path.dentry->d_inode;
135262 int fbidx = iminor(inode);
135263 @@ -1271,6 +1266,7 @@
135264 struct fb_ops *fb = info->fbops;
135265 long ret = -ENOIOCTLCMD;
135266
135267 + mutex_lock(&info->lock);
135268 switch(cmd) {
135269 case FBIOGET_VSCREENINFO:
135270 case FBIOPUT_VSCREENINFO:
135271 @@ -1296,6 +1292,7 @@
135272 ret = fb->fb_compat_ioctl(info, cmd, arg);
135273 break;
135274 }
135275 + mutex_unlock(&info->lock);
135276 return ret;
135277 }
135278 #endif
135279 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/geode/gx1fb_core.c linux-2.6.29-rc3.owrt/drivers/video/geode/gx1fb_core.c
135280 --- linux-2.6.29.owrt/drivers/video/geode/gx1fb_core.c 2009-05-10 22:04:38.000000000 +0200
135281 +++ linux-2.6.29-rc3.owrt/drivers/video/geode/gx1fb_core.c 2009-05-10 23:48:29.000000000 +0200
135282 @@ -136,10 +136,13 @@
135283 {
135284 struct geodefb_par *par = info->par;
135285
135286 - if (info->var.bits_per_pixel == 16)
135287 + if (info->var.bits_per_pixel == 16) {
135288 info->fix.visual = FB_VISUAL_TRUECOLOR;
135289 - else
135290 + fb_dealloc_cmap(&info->cmap);
135291 + } else {
135292 info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
135293 + fb_alloc_cmap(&info->cmap, 1<<info->var.bits_per_pixel, 0);
135294 + }
135295
135296 info->fix.line_length = gx1_line_delta(info->var.xres, info->var.bits_per_pixel);
135297
135298 @@ -312,10 +315,6 @@
135299 if (!par->panel_x)
135300 par->enable_crt = 1; /* fall back to CRT if no panel is specified */
135301
135302 - if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
135303 - framebuffer_release(info);
135304 - return NULL;
135305 - }
135306 return info;
135307 }
135308
135309 @@ -375,11 +374,8 @@
135310 release_mem_region(gx1_gx_base() + 0x8300, 0x100);
135311 }
135312
135313 - if (info) {
135314 - fb_dealloc_cmap(&info->cmap);
135315 + if (info)
135316 framebuffer_release(info);
135317 - }
135318 -
135319 return ret;
135320 }
135321
135322 @@ -399,7 +395,6 @@
135323 iounmap(par->dc_regs);
135324 release_mem_region(gx1_gx_base() + 0x8300, 0x100);
135325
135326 - fb_dealloc_cmap(&info->cmap);
135327 pci_set_drvdata(pdev, NULL);
135328
135329 framebuffer_release(info);
135330 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/geode/gxfb_core.c linux-2.6.29-rc3.owrt/drivers/video/geode/gxfb_core.c
135331 --- linux-2.6.29.owrt/drivers/video/geode/gxfb_core.c 2009-05-10 22:04:38.000000000 +0200
135332 +++ linux-2.6.29-rc3.owrt/drivers/video/geode/gxfb_core.c 2009-05-10 23:48:29.000000000 +0200
135333 @@ -171,10 +171,13 @@
135334
135335 static int gxfb_set_par(struct fb_info *info)
135336 {
135337 - if (info->var.bits_per_pixel > 8)
135338 + if (info->var.bits_per_pixel > 8) {
135339 info->fix.visual = FB_VISUAL_TRUECOLOR;
135340 - else
135341 + fb_dealloc_cmap(&info->cmap);
135342 + } else {
135343 info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
135344 + fb_alloc_cmap(&info->cmap, 1<<info->var.bits_per_pixel, 0);
135345 + }
135346
135347 info->fix.line_length = gx_line_delta(info->var.xres, info->var.bits_per_pixel);
135348
135349 @@ -328,11 +331,6 @@
135350
135351 info->var.grayscale = 0;
135352
135353 - if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
135354 - framebuffer_release(info);
135355 - return NULL;
135356 - }
135357 -
135358 return info;
135359 }
135360
135361 @@ -445,10 +443,8 @@
135362 pci_release_region(pdev, 1);
135363 }
135364
135365 - if (info) {
135366 - fb_dealloc_cmap(&info->cmap);
135367 + if (info)
135368 framebuffer_release(info);
135369 - }
135370 return ret;
135371 }
135372
135373 @@ -471,7 +467,6 @@
135374 iounmap(par->gp_regs);
135375 pci_release_region(pdev, 1);
135376
135377 - fb_dealloc_cmap(&info->cmap);
135378 pci_set_drvdata(pdev, NULL);
135379
135380 framebuffer_release(info);
135381 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/geode/lxfb_core.c linux-2.6.29-rc3.owrt/drivers/video/geode/lxfb_core.c
135382 --- linux-2.6.29.owrt/drivers/video/geode/lxfb_core.c 2009-05-10 22:04:38.000000000 +0200
135383 +++ linux-2.6.29-rc3.owrt/drivers/video/geode/lxfb_core.c 2009-05-10 23:48:29.000000000 +0200
135384 @@ -278,10 +278,13 @@
135385
135386 static int lxfb_set_par(struct fb_info *info)
135387 {
135388 - if (info->var.bits_per_pixel > 8)
135389 + if (info->var.bits_per_pixel > 8) {
135390 info->fix.visual = FB_VISUAL_TRUECOLOR;
135391 - else
135392 + fb_dealloc_cmap(&info->cmap);
135393 + } else {
135394 info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
135395 + fb_alloc_cmap(&info->cmap, 1<<info->var.bits_per_pixel, 0);
135396 + }
135397
135398 info->fix.line_length = lx_get_pitch(info->var.xres,
135399 info->var.bits_per_pixel);
135400 @@ -448,11 +451,6 @@
135401
135402 info->pseudo_palette = (void *)par + sizeof(struct lxfb_par);
135403
135404 - if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) {
135405 - framebuffer_release(info);
135406 - return NULL;
135407 - }
135408 -
135409 info->var.grayscale = 0;
135410
135411 return info;
135412 @@ -581,10 +579,8 @@
135413 pci_release_region(pdev, 3);
135414 }
135415
135416 - if (info) {
135417 - fb_dealloc_cmap(&info->cmap);
135418 + if (info)
135419 framebuffer_release(info);
135420 - }
135421
135422 return ret;
135423 }
135424 @@ -608,7 +604,6 @@
135425 iounmap(par->vp_regs);
135426 pci_release_region(pdev, 3);
135427
135428 - fb_dealloc_cmap(&info->cmap);
135429 pci_set_drvdata(pdev, NULL);
135430 framebuffer_release(info);
135431 }
135432 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/i810/i810_main.c linux-2.6.29-rc3.owrt/drivers/video/i810/i810_main.c
135433 --- linux-2.6.29.owrt/drivers/video/i810/i810_main.c 2009-05-10 22:04:38.000000000 +0200
135434 +++ linux-2.6.29-rc3.owrt/drivers/video/i810/i810_main.c 2009-05-10 23:48:29.000000000 +0200
135435 @@ -993,7 +993,6 @@
135436 struct i810fb_par *par = info->par;
135437 int line_length, vidmem, mode_valid = 0, retval = 0;
135438 u32 vyres = var->yres_virtual, vxres = var->xres_virtual;
135439 -
135440 /*
135441 * Memory limit
135442 */
135443 @@ -1003,12 +1002,12 @@
135444 if (vidmem > par->fb.size) {
135445 vyres = par->fb.size/line_length;
135446 if (vyres < var->yres) {
135447 - vyres = info->var.yres;
135448 + vyres = yres;
135449 vxres = par->fb.size/vyres;
135450 vxres /= var->bits_per_pixel >> 3;
135451 line_length = get_line_length(par, vxres,
135452 var->bits_per_pixel);
135453 - vidmem = line_length * info->var.yres;
135454 + vidmem = line_length * yres;
135455 if (vxres < var->xres) {
135456 printk("i810fb: required video memory, "
135457 "%d bytes, for %dx%d-%d (virtual) "
135458 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/Kconfig linux-2.6.29-rc3.owrt/drivers/video/Kconfig
135459 --- linux-2.6.29.owrt/drivers/video/Kconfig 2009-05-10 22:04:38.000000000 +0200
135460 +++ linux-2.6.29-rc3.owrt/drivers/video/Kconfig 2009-05-10 23:48:29.000000000 +0200
135461 @@ -41,7 +41,7 @@
135462 You need an utility program called fbset to make full use of frame
135463 buffer devices. Please read <file:Documentation/fb/framebuffer.txt>
135464 and the Framebuffer-HOWTO at
135465 - <http://www.munted.org.uk/programming/Framebuffer-HOWTO-1.2.html> for more
135466 + <http://www.tahallah.demon.co.uk/programming/prog.html> for more
135467 information.
135468
135469 Say Y here and to the driver for your graphics board below if you
135470 @@ -1054,7 +1054,9 @@
135471
135472 config FB_I810
135473 tristate "Intel 810/815 support (EXPERIMENTAL)"
135474 - depends on EXPERIMENTAL && FB && PCI && X86_32 && AGP_INTEL
135475 + depends on FB && EXPERIMENTAL && PCI && X86_32
135476 + select AGP
135477 + select AGP_INTEL
135478 select FB_MODE_HELPERS
135479 select FB_CFB_FILLRECT
135480 select FB_CFB_COPYAREA
135481 @@ -1117,7 +1119,9 @@
135482
135483 config FB_INTEL
135484 tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support (EXPERIMENTAL)"
135485 - depends on EXPERIMENTAL && FB && PCI && X86 && AGP_INTEL
135486 + depends on FB && EXPERIMENTAL && PCI && X86
135487 + select AGP
135488 + select AGP_INTEL
135489 select FB_MODE_HELPERS
135490 select FB_CFB_FILLRECT
135491 select FB_CFB_COPYAREA
135492 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/logo/logo_linux_clut224.ppm linux-2.6.29-rc3.owrt/drivers/video/logo/logo_linux_clut224.ppm
135493 --- linux-2.6.29.owrt/drivers/video/logo/logo_linux_clut224.ppm 2009-05-10 22:04:38.000000000 +0200
135494 +++ linux-2.6.29-rc3.owrt/drivers/video/logo/logo_linux_clut224.ppm 2009-05-10 23:48:29.000000000 +0200
135495 @@ -1,2828 +1,1604 @@
135496 P3
135497 -145 113
135498 +# Standard 224-color Linux logo
135499 +80 80
135500 255
135501 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135502 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135503 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135504 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135505 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135506 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135507 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135508 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135509 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135510 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135511 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135512 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135513 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135514 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135515 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135516 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135517 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135518 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135519 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135520 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135521 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135522 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135523 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135524 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135525 -0 0 0
135526 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135527 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135528 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135529 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135530 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135531 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135532 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135533 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135534 -0 0 0 0 0 0 0 0 0 0 0 0 3 4 4 6 7 7
135535 -8 10 10 8 10 10 6 8 8 6 7 7 3 4 4 2 2 2
135536 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135537 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135538 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135539 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135540 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135541 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135542 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135543 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135544 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135545 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135546 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135547 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135548 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135549 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135550 -0 0 0
135551 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135552 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135553 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135554 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135555 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135556 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135557 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135558 -0 0 0 0 0 0 0 0 0 0 0 0 4 5 5 17 18 17
135559 -27 29 28 35 37 36 40 43 41 43 45 43 40 43 41 37 39 37
135560 -32 34 33 27 30 29 23 25 24 17 21 21 15 18 18 12 15 15
135561 -11 13 13 8 10 10 6 7 7 3 4 4 1 1 1 0 0 0
135562 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135563 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135564 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135565 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135566 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135567 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135568 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135569 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135570 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135571 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135572 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135573 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135574 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135575 -0 0 0
135576 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135577 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135578 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135579 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135580 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135581 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135582 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135583 -0 0 0 13 13 13 32 34 33 49 51 48 60 60 56 58 59 55
135584 -55 57 54 55 56 53 49 51 48 43 45 43 39 40 39 33 37 35
135585 -28 31 30 23 27 26 20 23 23 17 20 20 14 17 17 13 16 16
135586 -11 14 14 10 13 13 10 12 12 9 11 11 8 10 10 6 7 7
135587 -2 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135588 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135589 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135590 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135591 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135592 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135593 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135594 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135595 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135596 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135597 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135598 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135599 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135600 -0 0 0
135601 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135602 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135603 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135604 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135605 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135606 -0 0 0 0 0 0 0 0 0 0 0 0 6 7 7 12 15 15
135607 -12 15 15 8 9 9 2 3 3 0 0 0 1 1 1 25 27 26
135608 -55 56 53 68 70 65 65 66 61 65 66 61 63 64 60 63 64 60
135609 -58 59 55 51 52 50 47 48 46 41 42 42 35 37 36 30 32 31
135610 -26 28 27 20 24 24 18 22 22 16 19 19 14 17 17 13 16 16
135611 -12 15 15 11 14 14 10 13 13 10 12 12 9 11 11 8 10 10
135612 -8 9 9 6 8 8 3 3 3 0 0 0 0 0 0 0 0 0
135613 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135614 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135615 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135616 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135617 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135618 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135619 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135620 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135621 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135622 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135623 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135624 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135625 -0 0 0
135626 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135627 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135628 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135629 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135630 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135631 -0 0 0 0 0 0 0 0 0 6 7 7 20 24 24 23 27 26
135632 -23 27 26 18 22 22 11 13 13 23 24 24 61 63 57 72 73 67
135633 -72 73 67 68 70 65 68 70 65 68 70 65 63 64 60 58 59 55
135634 -55 56 53 47 48 46 41 42 42 35 37 36 30 32 31 26 28 27
135635 -20 24 24 18 22 22 16 20 20 15 19 19 14 17 17 13 16 16
135636 -12 15 15 12 15 15 11 14 14 10 13 13 10 12 12 9 11 11
135637 -8 10 10 8 9 9 7 9 9 6 7 7 1 2 2 0 0 0
135638 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135639 -0 0 0 0 0 0 1 1 1 4 5 5 5 6 5 4 5 5
135640 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135641 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135642 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135643 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135644 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135645 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135646 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135647 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135648 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135649 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135650 -0 0 0
135651 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135652 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135653 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135654 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135655 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135656 -0 0 0 0 0 0 0 0 0 15 19 19 40 41 39 53 55 47
135657 -33 36 34 27 30 29 51 52 50 72 73 67 72 73 67 72 73 67
135658 -72 73 67 68 70 65 68 70 65 63 64 60 58 59 55 51 52 50
135659 -47 48 46 40 43 41 33 37 35 30 32 31 26 28 27 20 24 24
135660 -18 22 22 17 21 21 16 19 19 14 18 18 14 17 17 13 17 17
135661 -13 16 16 12 15 15 12 15 15 11 14 14 10 13 13 10 12 12
135662 -9 11 11 8 10 10 8 9 9 7 9 9 6 8 8 3 4 4
135663 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135664 -2 2 2 6 8 8 10 12 12 10 12 12 10 12 12 10 12 12
135665 -6 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135666 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135667 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135668 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135669 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135670 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135671 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135672 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135673 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135674 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135675 -0 0 0
135676 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135677 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135678 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135679 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135680 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135681 -0 0 0 0 0 0 0 0 0 20 23 23 71 71 57 131 127 93
135682 -115 113 82 63 64 60 72 73 67 72 73 67 72 73 67 72 73 67
135683 -68 70 65 65 66 61 61 63 57 55 57 54 49 51 48 43 45 43
135684 -39 40 39 33 36 34 28 31 30 23 27 26 20 24 24 20 23 23
135685 -17 21 21 16 20 20 15 19 19 15 18 18 14 18 18 14 17 17
135686 -13 17 17 13 16 16 12 15 15 12 15 15 11 14 14 10 13 13
135687 -10 12 12 9 11 11 8 10 10 7 9 9 7 9 9 6 8 8
135688 -4 5 5 0 0 0 0 0 0 0 0 0 1 1 1 6 7 7
135689 -10 12 12 10 12 12 10 12 12 10 12 12 10 12 12 10 12 12
135690 -10 12 12 3 4 4 0 0 0 0 0 0 0 0 0 0 0 0
135691 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135692 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135693 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135694 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135695 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135696 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135697 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135698 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135699 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135700 -0 0 0
135701 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135702 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135703 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135704 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135705 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135706 -0 0 0 0 0 0 0 0 0 18 22 22 71 71 57 144 139 99
135707 -84 83 72 68 70 65 72 73 67 72 73 67 68 70 65 65 66 61
135708 -63 64 60 55 57 54 51 52 50 47 48 46 40 43 41 35 37 36
135709 -30 32 31 27 29 28 23 27 26 20 24 24 18 22 22 17 21 21
135710 -16 20 20 15 19 19 15 19 19 15 19 19 15 18 18 14 18 18
135711 -14 17 17 13 17 17 13 16 16 12 15 15 12 15 15 11 14 14
135712 -10 13 13 9 12 12 9 11 11 8 10 10 7 9 9 6 8 8
135713 -6 8 8 3 4 4 0 0 0 2 2 2 8 10 10 10 12 12
135714 -10 12 12 10 12 12 11 13 13 36 38 35 61 61 53 48 49 45
135715 -10 12 12 7 9 9 0 0 0 0 0 0 0 0 0 0 0 0
135716 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135717 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135718 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135719 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135720 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135721 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135722 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135723 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135724 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135725 -0 0 0
135726 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135727 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135728 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135729 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135730 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135731 -0 0 0 0 0 0 0 0 0 15 19 19 61 61 53 84 83 72
135732 -68 70 65 72 73 67 68 70 65 68 70 65 63 64 60 58 59 55
135733 -51 52 50 47 48 46 41 42 42 37 39 37 32 35 33 28 31 30
135734 -23 27 26 20 24 24 20 23 23 18 22 22 17 21 21 17 21 21
135735 -17 21 21 17 21 21 17 20 20 16 20 20 16 20 20 16 19 19
135736 -15 18 18 14 18 18 13 17 17 13 16 16 12 15 15 12 15 15
135737 -11 14 14 10 13 13 9 12 12 9 11 11 8 10 10 7 9 9
135738 -6 8 8 6 8 8 5 6 5 9 11 11 10 12 12 10 12 12
135739 -19 20 18 82 81 62 149 145 103 160 154 106 142 137 94 96 95 69
135740 -10 12 12 10 12 12 1 1 1 0 0 0 0 0 0 0 0 0
135741 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135742 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135743 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135744 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135745 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135746 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135747 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135748 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135749 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135750 -0 0 0
135751 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135752 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135753 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135754 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135755 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135756 -0 0 0 0 0 0 0 0 0 10 12 12 44 46 43 68 70 65
135757 -72 73 67 68 70 65 68 70 65 63 64 60 55 57 54 49 51 48
135758 -43 45 43 39 40 39 33 37 35 30 32 31 26 28 27 23 27 26
135759 -20 24 24 18 22 22 18 22 22 18 22 22 18 22 22 20 23 23
135760 -20 24 24 23 25 24 23 25 24 22 24 23 20 23 23 18 22 22
135761 -17 20 20 15 19 19 15 18 18 14 17 17 13 16 16 12 15 15
135762 -11 14 14 11 13 13 10 12 12 9 11 11 8 10 10 8 9 9
135763 -7 9 9 7 9 9 10 12 12 10 12 12 10 12 12 71 71 57
135764 -164 159 111 186 182 128 186 182 128 171 165 117 151 147 98 96 95 69
135765 -10 12 12 10 12 12 3 3 3 0 0 0 0 0 0 0 0 0
135766 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135767 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135768 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135769 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135770 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135771 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135772 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135773 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135774 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135775 -0 0 0
135776 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135777 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135778 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135779 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135780 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135781 -0 0 0 0 0 0 0 0 0 8 10 10 63 64 60 68 70 65
135782 -72 73 67 68 70 65 63 64 60 55 57 54 47 48 46 40 43 41
135783 -33 37 35 30 32 31 27 29 28 23 27 26 20 24 24 20 23 23
135784 -18 22 22 18 22 22 20 23 22 21 25 23 23 27 26 27 29 28
135785 -28 31 30 31 33 31 31 33 31 31 33 31 28 31 30 26 28 27
135786 -23 25 24 20 23 22 16 20 20 15 18 18 14 17 17 13 16 16
135787 -12 15 15 11 14 14 10 13 13 10 12 12 9 11 11 8 10 10
135788 -10 12 12 10 13 13 10 12 12 12 14 14 96 95 69 165 161 109
135789 -186 182 128 192 187 134 192 187 134 176 171 126 160 154 106 103 101 77
135790 -10 12 12 10 12 12 5 6 5 0 0 0 0 0 0 0 0 0
135791 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135792 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135793 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135794 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135795 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135796 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135797 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135798 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135799 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135800 -0 0 0
135801 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135802 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135803 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135804 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135805 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135806 -0 0 0 0 0 0 0 0 0 35 37 36 68 70 65 72 73 67
135807 -68 70 65 65 66 61 58 59 55 49 51 48 40 43 41 33 37 35
135808 -28 31 30 23 27 26 20 24 24 20 23 23 18 22 22 18 22 22
135809 -18 22 22 20 23 23 23 27 26 27 30 29 32 35 33 37 39 37
135810 -40 43 41 44 46 43 46 47 43 44 46 43 40 43 41 36 38 35
135811 -31 33 31 27 29 28 22 24 23 17 21 21 15 18 18 14 17 17
135812 -13 16 16 12 15 15 11 14 14 11 14 14 11 13 13 13 16 16
135813 -13 16 16 11 14 14 10 12 12 79 78 62 142 137 94 164 159 111
135814 -178 174 128 192 187 134 192 187 134 176 171 126 160 154 106 96 95 69
135815 -10 12 12 10 12 12 6 7 7 0 0 0 0 0 0 0 0 0
135816 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135817 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135818 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135819 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135820 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135821 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135822 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135823 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135824 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135825 -0 0 0
135826 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135827 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135828 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135829 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135830 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135831 -0 0 0 0 0 0 0 0 0 55 57 54 68 70 65 72 73 67
135832 -68 70 65 63 64 60 55 56 53 43 45 43 35 37 36 28 31 30
135833 -23 27 26 20 24 24 18 22 22 17 21 21 17 21 21 17 21 21
135834 -20 24 24 25 27 26 31 33 31 38 39 37 46 47 43 53 55 47
135835 -61 61 53 66 65 55 66 65 55 66 65 55 61 61 53 53 55 47
135836 -46 47 43 37 39 37 30 33 30 24 26 24 17 21 21 15 18 18
135837 -13 17 17 12 15 15 12 15 15 13 16 16 14 18 18 14 18 18
135838 -14 17 17 12 15 15 30 31 28 118 116 76 134 131 96 160 154 106
135839 -174 170 121 178 174 128 178 174 128 171 165 117 151 147 98 96 95 69
135840 -10 12 12 10 12 12 6 8 8 0 0 0 0 0 0 0 0 0
135841 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135842 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135843 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135844 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135845 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135846 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135847 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135848 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135849 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135850 -0 0 0
135851 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135852 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135853 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135854 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135855 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135856 -0 0 0 0 0 0 0 0 0 63 64 60 68 70 65 68 70 65
135857 -65 66 61 58 59 55 49 51 48 39 40 39 30 32 31 23 27 26
135858 -20 24 24 18 22 22 17 21 21 16 20 20 17 21 21 20 23 23
135859 -25 27 26 32 35 33 43 44 41 53 55 47 66 65 55 75 75 61
135860 -82 81 62 84 83 72 87 86 72 87 86 72 82 81 62 75 75 61
135861 -66 65 55 53 55 47 40 41 39 31 33 31 23 25 24 17 20 20
135862 -14 18 18 13 16 16 12 15 15 12 15 15 13 17 17 14 18 18
135863 -14 18 18 13 16 16 46 47 43 96 95 69 125 122 87 142 137 94
135864 -160 154 106 165 161 109 164 159 111 155 149 109 142 137 94 75 75 61
135865 -10 12 12 10 12 12 6 8 8 0 0 0 0 0 0 0 0 0
135866 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135867 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135868 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135869 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135870 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135871 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135872 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135873 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135874 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135875 -0 0 0
135876 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135877 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135878 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135879 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135880 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135881 -0 0 0 0 0 0 0 0 0 60 60 56 68 70 65 68 70 65
135882 -63 64 60 55 57 54 46 47 45 35 37 36 27 30 29 23 25 24
135883 -18 22 22 17 21 21 16 20 20 17 21 21 18 22 22 23 27 26
135884 -31 33 31 43 44 41 55 56 53 71 71 57 84 83 72 92 91 72
135885 -103 101 77 92 91 72 82 81 62 82 81 62 87 86 72 92 91 72
135886 -84 83 72 71 71 57 55 56 53 43 44 41 30 33 30 22 24 23
135887 -16 19 19 14 17 17 12 15 15 12 15 15 13 16 16 14 18 18
135888 -14 18 18 14 17 17 43 44 41 82 81 62 118 116 76 125 122 87
135889 -142 137 94 144 139 99 144 139 99 134 131 96 118 116 76 53 55 47
135890 -10 12 12 10 12 12 6 8 8 0 0 0 0 0 0 0 0 0
135891 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135892 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135893 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135894 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135895 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135896 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135897 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135898 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135899 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135900 -0 0 0
135901 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135902 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135903 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135904 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135905 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135906 -0 0 0 0 0 0 0 0 0 47 48 46 63 64 60 63 64 60
135907 -55 57 54 49 51 48 40 43 41 32 34 33 26 28 27 20 24 24
135908 -18 22 22 16 20 20 16 20 20 17 21 21 20 24 24 28 31 30
135909 -40 41 39 53 55 47 75 75 61 90 89 73 87 86 72 48 49 45
135910 -14 14 13 2 2 2 1 2 2 1 1 1 1 1 1 2 2 2
135911 -19 20 18 43 44 41 66 65 55 53 55 47 38 39 37 26 28 27
135912 -18 22 22 14 18 18 13 16 16 12 15 15 12 15 15 13 17 17
135913 -14 18 18 14 18 18 30 31 28 66 65 55 96 95 69 103 101 77
135914 -118 116 76 118 116 76 118 116 76 118 116 76 103 101 77 36 38 35
135915 -10 12 12 10 12 12 6 7 7 0 0 0 0 0 0 0 0 0
135916 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135917 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135918 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135919 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135920 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135921 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135922 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135923 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135924 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135925 -0 0 0
135926 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135927 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135928 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135929 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135930 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135931 -0 0 0 0 0 0 0 0 0 28 31 30 55 57 54 51 52 50
135932 -49 51 48 41 42 42 35 37 36 28 31 30 23 27 26 20 23 23
135933 -17 21 21 16 20 20 16 20 20 18 22 22 23 27 26 33 36 34
135934 -48 49 45 71 71 57 82 81 62 43 44 41 8 9 9 6 7 7
135935 -6 7 7 6 7 7 6 7 7 5 6 5 4 5 5 3 4 4
135936 -2 3 3 1 2 2 4 5 4 36 38 35 48 49 45 32 35 33
135937 -21 25 23 16 19 19 13 17 17 12 15 15 12 15 15 13 16 16
135938 -14 18 18 14 18 18 16 18 16 36 38 35 61 61 53 82 81 62
135939 -96 95 69 96 95 69 96 95 69 96 95 69 79 78 62 19 20 18
135940 -10 12 12 10 12 12 4 5 5 0 0 0 0 0 0 0 0 0
135941 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135942 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135943 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135944 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135945 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135946 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135947 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135948 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135949 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135950 -0 0 0
135951 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135952 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135953 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135954 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135955 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135956 -0 0 0 0 0 0 0 0 0 13 13 13 46 47 45 43 45 43
135957 -40 43 41 35 37 36 30 32 31 23 27 26 20 24 24 18 22 22
135958 -17 21 21 16 20 20 17 21 21 20 23 23 27 30 29 40 41 39
135959 -61 61 53 53 55 47 16 17 16 9 11 11 10 12 12 10 12 12
135960 -10 12 12 10 12 12 10 12 12 9 11 11 8 10 10 8 9 9
135961 -6 8 8 5 6 5 4 5 5 2 3 3 19 20 18 38 39 37
135962 -26 28 27 17 21 21 14 17 17 13 16 16 12 15 15 12 15 15
135963 -13 17 17 14 18 18 12 15 15 13 12 7 30 31 28 46 47 43
135964 -53 55 47 66 65 55 66 65 55 53 55 47 36 38 35 10 12 12
135965 -10 12 12 10 12 12 2 3 3 0 0 0 0 0 0 0 0 0
135966 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135967 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135968 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135969 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135970 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135971 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135972 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135973 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135974 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135975 -0 0 0
135976 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135977 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135978 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135979 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135980 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135981 -0 0 0 0 0 0 0 0 0 1 1 1 33 37 35 35 37 36
135982 -32 35 33 28 31 30 23 27 26 20 24 24 18 22 22 17 21 21
135983 -16 20 20 16 20 20 17 21 21 21 25 23 31 33 31 44 46 43
135984 -31 33 31 11 13 13 12 14 14 12 15 15 13 16 16 14 17 17
135985 -14 17 17 14 17 17 14 17 17 13 16 16 12 15 15 12 14 14
135986 -11 13 13 9 11 11 8 10 10 6 8 8 4 5 5 17 18 17
135987 -30 33 30 20 23 22 15 18 18 13 16 16 12 15 15 12 14 14
135988 -13 16 16 14 17 17 14 18 18 11 12 11 7 7 5 16 17 12
135989 -21 22 20 30 31 28 25 27 25 21 22 20 14 14 13 10 12 12
135990 -10 12 12 9 11 11 0 0 0 0 0 0 0 0 0 0 0 0
135991 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135992 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135993 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135994 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135995 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135996 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135997 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135998 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
135999 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136000 -0 0 0
136001 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136002 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136003 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136004 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136005 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136006 -0 0 0 0 0 0 0 0 0 0 0 0 18 22 22 27 30 29
136007 -27 29 28 40 41 39 53 55 47 53 55 47 53 55 47 46 47 43
136008 -25 27 25 16 20 20 17 21 21 23 25 24 31 33 31 20 20 20
136009 -12 15 15 14 17 17 15 19 19 16 20 20 17 21 21 18 22 22
136010 -18 22 22 18 22 22 18 22 22 17 21 21 17 21 21 16 19 19
136011 -15 18 18 13 16 16 12 15 15 10 12 12 8 10 10 6 8 8
136012 -21 22 21 22 24 23 15 19 19 13 17 17 13 16 16 12 15 15
136013 -12 15 15 13 17 17 14 18 18 14 18 18 13 15 14 10 9 6
136014 -7 7 5 7 7 5 7 7 5 9 11 11 10 12 12 10 12 12
136015 -10 12 12 6 7 7 0 0 0 0 0 0 0 0 0 0 0 0
136016 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136017 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136018 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136019 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136020 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136021 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136022 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136023 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136024 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136025 -0 0 0
136026 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136027 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136028 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136029 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136030 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136031 -0 0 0 0 0 0 0 0 0 0 0 0 16 17 12 82 81 62
136032 -118 116 76 118 116 76 161 156 96 161 156 96 161 156 96 118 116 76
136033 -118 116 76 96 95 69 53 55 47 22 24 23 14 17 17 13 16 16
136034 -15 19 19 17 21 21 18 22 22 20 24 24 20 24 24 23 27 26
136035 -23 27 26 23 27 26 23 27 26 23 27 26 23 27 26 20 24 24
136036 -20 23 23 17 21 21 16 19 19 14 17 17 12 15 15 10 12 12
136037 -9 11 11 20 23 22 16 19 19 14 17 17 13 16 16 12 15 15
136038 -11 14 14 13 16 16 14 17 17 14 18 18 14 17 17 12 15 15
136039 -10 12 12 10 12 12 10 12 12 10 12 12 10 12 12 10 12 12
136040 -9 11 11 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
136041 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136042 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136043 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136044 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136045 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136046 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136047 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136048 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136049 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136050 -0 0 0
136051 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136052 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136053 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136054 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136055 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136056 -0 0 0 0 0 0 0 0 0 0 0 0 53 55 47 161 156 96
136057 -161 156 96 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136058 -230 229 82 161 156 96 118 116 76 96 95 69 21 22 20 16 19 19
136059 -18 22 22 20 24 24 23 27 26 23 27 26 26 28 27 27 30 29
136060 -27 30 29 18 22 22 12 14 14 8 10 10 9 11 11 17 21 21
136061 -23 27 26 23 27 26 20 24 24 18 22 22 16 20 20 14 17 17
136062 -12 14 14 14 17 17 16 20 20 14 17 17 13 17 17 13 16 16
136063 -12 15 15 12 15 15 13 17 17 14 18 18 14 17 17 13 16 16
136064 -11 13 13 10 12 12 10 12 12 10 12 12 10 12 12 10 12 12
136065 -4 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136066 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136067 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136068 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136069 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136070 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136071 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136072 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136073 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136074 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136075 -0 0 0
136076 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136077 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136078 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136079 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136080 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136081 -0 0 0 0 0 0 0 0 0 13 12 7 118 116 76 230 229 82
136082 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136083 -230 229 82 230 229 82 230 229 82 161 156 96 118 116 76 30 31 28
136084 -20 24 24 23 27 26 27 30 29 28 31 30 30 32 31 23 27 26
136085 -16 19 19 17 21 21 12 15 15 9 11 11 10 12 12 9 11 11
136086 -20 24 24 28 31 30 26 28 27 23 27 26 20 24 24 17 21 21
136087 -15 19 19 13 16 16 16 19 19 14 18 18 14 17 17 13 16 16
136088 -12 15 15 11 14 14 13 16 16 14 17 17 14 18 18 14 17 17
136089 -12 15 15 10 12 12 10 12 12 10 12 12 10 12 12 8 9 9
136090 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136091 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136092 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136093 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136094 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136095 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136096 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136097 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136098 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136099 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136100 -0 0 0
136101 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136102 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136103 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136104 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136105 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136106 -0 0 0 0 0 0 0 0 0 82 81 62 161 156 96 230 229 82
136107 -230 229 82 233 233 100 230 229 82 230 229 82 230 229 82 230 229 82
136108 -230 229 82 230 229 82 230 229 82 230 229 82 161 156 96 118 116 76
136109 -27 29 28 27 30 29 30 32 31 30 32 31 23 27 26 20 24 24
136110 -26 28 27 17 21 21 6 7 7 72 73 67 145 141 105 15 15 15
136111 -14 17 17 33 37 35 30 32 31 28 31 30 26 28 27 23 27 26
136112 -20 23 23 16 20 20 15 19 19 14 18 18 14 17 17 13 16 16
136113 -12 15 15 11 14 14 12 15 15 13 17 17 14 18 18 14 17 17
136114 -13 16 16 11 13 13 10 12 12 10 12 12 9 11 11 1 1 1
136115 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136116 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136117 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136118 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136119 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136120 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136121 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136122 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136123 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136124 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136125 -0 0 0
136126 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136128 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136129 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136130 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136131 -0 0 0 0 0 0 16 17 12 161 156 96 230 229 82 230 229 82
136132 -243 242 120 235 234 117 230 229 82 230 229 82 230 229 82 230 229 82
136133 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 161 156 96
136134 -82 81 62 28 31 30 28 31 30 27 30 29 28 31 30 30 32 31
136135 -33 37 35 13 16 16 3 3 3 105 104 92 210 208 158 12 14 14
136136 -17 21 21 33 37 35 33 37 35 32 35 33 30 32 31 27 30 29
136137 -23 27 26 20 23 23 17 20 20 15 18 18 14 18 18 13 17 17
136138 -13 16 16 12 15 15 11 14 14 13 16 16 14 17 17 14 18 18
136139 -13 17 17 12 15 15 10 12 12 10 12 12 3 4 4 0 0 0
136140 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136141 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136142 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136143 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136144 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136145 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136146 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136147 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136148 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136149 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136150 -0 0 0
136151 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136152 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136153 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136154 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136155 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136156 -0 0 0 0 0 0 96 95 69 230 229 82 230 229 82 244 244 132
136157 -241 241 143 243 242 120 230 229 82 230 229 82 230 229 82 230 229 82
136158 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136159 -161 156 96 46 47 43 32 35 33 33 37 35 33 37 35 33 37 35
136160 -40 43 41 23 27 26 1 1 1 2 2 2 24 26 24 14 17 17
136161 -23 27 26 33 37 35 33 37 35 33 37 35 33 37 35 30 32 31
136162 -27 30 29 23 27 26 20 23 23 15 18 18 14 18 18 14 17 17
136163 -13 16 16 12 15 15 11 14 14 12 15 15 13 17 17 14 17 17
136164 -14 17 17 13 16 16 11 13 13 6 8 8 0 0 0 0 0 0
136165 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136166 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136167 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136168 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136169 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136171 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136172 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136173 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136174 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136175 -0 0 0
136176 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136177 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136178 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136179 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136180 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136181 -0 0 0 16 17 12 161 156 96 230 229 82 235 234 117 239 239 170
136182 -239 239 170 236 236 101 230 229 82 230 229 82 230 229 82 230 229 82
136183 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136184 -230 229 82 118 116 76 33 37 35 33 37 35 37 39 37 37 39 37
136185 -43 45 43 49 51 48 20 24 24 8 10 10 17 20 20 35 37 36
136186 -33 37 35 40 43 41 37 39 37 35 37 36 33 37 35 33 37 35
136187 -30 32 31 27 30 29 23 27 26 15 19 19 14 18 18 14 17 17
136188 -13 17 17 13 16 16 12 15 15 11 14 14 13 16 16 14 17 17
136189 -14 17 17 13 17 17 11 14 14 4 5 5 0 0 0 0 0 0
136190 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136191 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136192 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136193 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136194 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136195 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136196 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136197 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136198 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136199 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136200 -0 0 0
136201 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136202 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136203 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136204 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136205 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136206 -0 0 0 96 95 69 230 229 82 230 229 82 239 239 170 251 251 187
136207 -241 241 143 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136208 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136209 -230 229 82 161 156 96 36 38 35 33 37 35 33 37 35 33 37 35
136210 -37 39 37 47 48 46 55 57 54 55 57 54 49 51 48 43 45 43
136211 -43 45 43 43 45 43 40 43 41 40 43 41 37 39 37 33 37 35
136212 -33 37 35 28 31 30 26 28 27 16 20 20 15 18 18 14 18 18
136213 -14 17 17 13 16 16 12 15 15 11 14 14 12 15 15 13 17 17
136214 -14 17 17 14 17 17 8 10 10 5 7 7 0 0 0 0 0 0
136215 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136216 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136217 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136218 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136219 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136220 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136221 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136222 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136223 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136224 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136225 -0 0 0
136226 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136227 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136228 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136229 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136230 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136231 -16 17 12 230 229 82 230 229 82 243 242 120 251 251 187 251 251 187
136232 -246 246 123 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136233 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136234 -230 229 82 230 229 82 66 65 55 30 32 31 32 35 33 33 37 35
136235 -33 37 35 37 39 37 40 43 41 47 48 46 49 51 48 51 52 50
136236 -55 57 54 55 57 54 51 52 50 47 48 46 43 45 43 39 40 39
136237 -33 37 35 30 32 31 26 28 27 17 21 21 15 19 19 14 18 18
136238 -14 17 17 13 16 16 12 15 15 12 14 14 11 14 14 13 16 16
136239 -14 17 17 12 15 15 7 9 9 6 8 8 1 1 1 0 0 0
136240 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136241 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136242 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136243 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136244 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136245 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136246 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136247 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136248 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136249 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136250 -0 0 0
136251 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136252 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136253 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136254 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136256 -96 95 69 230 229 82 230 229 82 239 239 170 251 251 187 239 239 170
136257 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136258 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136259 -230 229 82 230 229 82 96 95 69 27 30 29 28 31 30 30 32 31
136260 -33 37 35 40 43 41 46 47 45 55 57 54 63 64 60 72 73 67
136261 -72 73 67 72 73 67 72 73 67 65 66 61 55 57 54 47 48 46
136262 -39 40 39 32 35 33 27 30 29 17 21 21 15 19 19 15 18 18
136263 -14 18 18 13 17 17 13 16 16 12 15 15 11 14 14 12 14 14
136264 -13 16 16 9 11 11 7 9 9 9 11 11 66 65 55 115 113 82
136265 -21 22 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136266 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136267 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136268 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136269 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136270 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136271 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136272 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136273 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136274 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136275 -0 0 0
136276 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136277 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136278 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136279 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136280 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 12 7
136281 -230 229 82 230 229 82 236 236 101 251 251 187 251 251 187 246 246 123
136282 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136283 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136284 -230 229 82 230 229 82 118 116 76 23 27 26 26 28 27 32 35 33
136285 -51 52 50 90 89 73 110 109 94 145 141 105 168 163 120 177 172 135
136286 -177 172 135 188 184 146 188 184 146 181 176 137 194 191 148 188 184 146
136287 -184 179 149 188 184 146 188 184 146 156 151 111 177 172 135 181 176 137
136288 -177 172 135 168 163 120 168 163 120 158 153 112 156 151 111 158 153 112
136289 -156 151 111 158 153 112 177 172 135 188 184 146 188 184 146 194 189 146
136290 -36 38 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136291 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136292 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136293 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136294 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136295 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136296 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136297 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136298 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136299 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136300 -0 0 0
136301 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136302 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136303 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136304 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136305 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 82 81 62
136306 -230 229 82 230 229 82 244 244 132 251 251 187 244 244 132 230 229 82
136307 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136308 -230 229 82 230 229 82 230 229 82 230 229 82 161 156 96 82 81 62
136309 -96 95 69 230 229 82 181 178 103 110 109 94 156 151 111 188 184 146
136310 -188 184 146 197 193 154 188 184 146 184 181 136 188 184 146 168 163 120
136311 -168 163 120 178 174 128 156 151 111 158 153 112 174 170 121 156 151 111
136312 -156 151 111 158 153 112 156 151 111 168 163 120 178 174 128 181 176 137
136313 -176 171 126 178 174 128 184 181 136 176 171 126 178 174 128 184 181 136
136314 -176 171 126 178 174 128 184 181 136 164 159 111 155 149 109 96 95 69
136315 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136316 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136317 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136318 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136319 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136320 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136321 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136322 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136323 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136324 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136325 -0 0 0
136326 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136327 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136328 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136329 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136330 -0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 161 156 96
136331 -230 229 82 230 229 82 244 244 132 244 244 132 236 236 101 230 229 82
136332 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136333 -230 229 82 230 229 82 230 229 82 230 229 82 46 47 43 82 81 62
136334 -158 153 112 197 193 154 194 189 146 184 181 136 188 184 146 168 163 120
136335 -156 151 111 137 133 100 131 127 93 137 133 100 137 133 100 158 153 112
136336 -121 119 87 137 133 100 156 151 111 145 141 105 99 98 80 84 83 72
136337 -63 64 60 52 53 49 40 43 41 33 36 34 36 38 35 36 38 35
136338 -38 39 37 43 44 41 43 44 41 46 47 43 48 49 45 48 49 45
136339 -46 47 43 36 38 35 30 31 28 19 20 18 6 7 7 0 0 0
136340 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136341 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136342 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136343 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136344 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136345 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136346 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136347 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136348 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136349 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136350 -0 0 0
136351 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136352 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136353 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136354 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136355 -0 0 0 0 0 0 0 0 0 0 0 0 36 38 35 230 229 82
136356 -230 229 82 230 229 82 246 246 123 236 236 101 230 229 82 230 229 82
136357 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136358 -230 229 82 230 229 82 230 229 82 230 229 82 53 55 47 121 119 87
136359 -176 171 126 171 165 117 161 156 96 82 81 62 53 55 47 33 37 35
136360 -39 40 39 63 64 60 99 98 80 121 119 87 137 133 100 177 172 135
136361 -176 171 126 184 181 136 131 127 93 131 127 93 110 109 94 84 83 72
136362 -51 52 50 39 40 39 27 29 28 18 22 22 16 19 19 15 19 19
136363 -15 19 19 14 18 18 14 17 17 13 16 16 12 15 15 11 14 14
136364 -10 13 13 9 12 12 9 11 11 8 9 9 7 9 9 1 1 1
136365 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136366 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136367 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136368 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136369 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136370 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136371 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136372 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136373 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136374 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136375 -0 0 0
136376 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136377 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136378 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136379 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136380 -0 0 0 0 0 0 0 0 0 0 0 0 118 116 76 230 229 82
136381 -230 229 82 230 229 82 236 236 101 230 229 82 230 229 82 230 229 82
136382 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136383 -230 229 82 230 229 82 230 229 82 230 229 82 96 95 69 71 71 57
136384 -36 38 35 118 116 76 118 116 76 12 15 15 15 18 18 20 24 24
136385 -33 37 35 55 56 53 84 83 72 110 109 94 145 141 105 110 109 94
136386 -168 163 120 121 119 87 156 151 111 131 127 93 87 86 72 61 63 57
136387 -47 48 46 28 31 30 18 22 22 15 19 19 15 18 18 15 19 19
136388 -15 19 19 14 18 18 14 17 17 13 17 17 13 16 16 12 15 15
136389 -11 13 13 10 12 12 9 11 11 8 10 10 7 9 9 3 3 3
136390 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136391 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136392 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136393 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136394 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136395 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136396 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136397 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136398 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136399 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136400 -0 0 0
136401 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136402 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136403 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136404 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136405 -0 0 0 0 0 0 0 0 0 1 1 0 230 229 82 230 229 82
136406 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136407 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136408 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 161 156 96
136409 -161 156 96 230 229 82 118 116 76 11 14 14 14 17 17 18 22 22
136410 -27 30 29 40 43 41 60 60 56 84 83 72 105 104 92 110 109 94
136411 -110 109 94 110 109 94 99 98 80 90 89 73 68 70 65 47 48 46
136412 -32 34 33 23 25 24 20 23 23 17 21 21 15 19 19 14 17 17
136413 -15 19 19 15 18 18 14 18 18 13 17 17 13 16 16 12 15 15
136414 -11 14 14 10 12 12 9 11 11 8 10 10 7 9 9 4 5 5
136415 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136416 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136417 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136418 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136419 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136420 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136421 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136422 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136423 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136424 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136425 -0 0 0
136426 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136427 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136428 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136429 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136430 -0 0 0 0 0 0 0 0 0 16 17 12 230 229 82 230 229 82
136431 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136432 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136433 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136434 -230 229 82 161 156 96 118 116 76 11 13 13 13 16 16 15 19 19
136435 -20 24 24 30 32 31 40 43 41 51 52 50 63 64 60 72 73 67
136436 -65 66 61 65 66 61 65 66 61 55 57 54 46 47 45 33 37 35
136437 -27 29 28 20 24 24 17 21 21 16 20 20 16 20 20 15 19 19
136438 -15 19 19 15 19 19 14 18 18 14 17 17 13 16 16 12 15 15
136439 -11 14 14 10 13 13 9 12 12 8 10 10 7 9 9 6 7 7
136440 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136441 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136442 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136443 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136444 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136445 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136446 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136447 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136448 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136449 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136450 -0 0 0
136451 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136452 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136453 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136454 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136455 -0 0 0 0 0 0 0 0 0 53 55 47 230 229 82 230 229 82
136456 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136457 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136458 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136459 -161 156 96 118 116 76 53 55 47 10 13 13 12 15 15 14 17 17
136460 -17 20 20 20 24 24 27 29 28 32 34 33 37 39 37 40 43 41
136461 -43 45 43 41 42 42 35 37 36 30 32 31 28 31 30 23 27 26
136462 -20 23 23 17 21 21 16 20 20 16 20 20 16 20 20 16 19 19
136463 -15 19 19 15 19 19 14 18 18 14 17 17 13 16 16 12 15 15
136464 -11 14 14 10 13 13 9 12 12 9 11 11 8 10 10 10 12 12
136465 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136466 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136467 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136468 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136469 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136470 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136471 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136472 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136473 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136474 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136475 -0 0 0
136476 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136477 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136478 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136479 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136480 -0 0 0 0 0 0 0 0 0 82 81 62 230 229 82 230 229 82
136481 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136482 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136483 -230 229 82 230 229 82 230 229 82 230 229 82 161 156 96 161 156 96
136484 -118 116 76 82 81 62 13 14 12 10 13 13 12 15 15 13 17 17
136485 -15 19 19 16 20 20 20 23 23 20 24 24 23 27 26 26 28 27
136486 -26 28 27 26 28 27 23 27 26 18 22 22 20 23 23 17 21 21
136487 -17 21 21 16 20 20 16 20 20 16 20 20 16 20 20 16 19 19
136488 -15 19 19 15 19 19 15 18 18 14 17 17 13 17 17 13 16 16
136489 -12 15 15 12 14 14 12 14 14 12 14 14 12 14 14 23 24 24
136490 -6 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136491 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136492 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136493 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136494 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136495 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136496 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136497 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136498 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136499 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136500 -0 0 0
136501 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136502 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136503 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136504 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136505 -0 0 0 0 0 0 0 0 0 118 116 76 230 229 82 230 229 82
136506 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136507 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136508 -230 229 82 230 229 82 230 229 82 161 156 96 161 156 96 118 116 76
136509 -71 71 57 13 14 12 9 12 12 10 13 13 12 15 15 13 17 17
136510 -15 18 18 15 19 19 16 20 20 17 21 21 17 21 21 18 22 22
136511 -18 22 22 18 22 22 17 21 21 16 19 19 15 18 18 14 18 18
136512 -16 19 19 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136513 -15 19 19 15 19 19 15 18 18 14 18 18 16 20 20 23 25 24
136514 -17 21 21 25 27 26 47 48 46 47 48 46 51 52 50 72 73 67
136515 -33 36 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136516 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136517 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136518 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136519 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136520 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136521 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136522 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136523 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136524 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136525 -0 0 0
136526 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136527 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136528 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136529 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136530 -0 0 0 0 0 0 0 0 0 118 116 76 230 229 82 230 229 82
136531 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136532 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136533 -230 229 82 230 229 82 161 156 96 118 116 76 118 116 76 46 47 43
136534 -9 11 11 9 11 11 10 12 12 11 13 13 12 15 15 14 17 17
136535 -15 18 18 15 19 19 16 20 20 16 20 20 16 20 20 16 20 20
136536 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136537 -15 19 19 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136538 -15 19 19 16 20 20 20 24 24 55 56 53 32 34 33 84 83 72
136539 -90 89 73 110 109 94 110 109 94 105 104 92 110 109 94 110 109 94
136540 -72 73 67 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136541 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136542 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136543 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136544 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136545 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136546 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136547 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136548 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136549 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136550 -0 0 0
136551 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136552 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136553 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136554 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136555 -0 0 0 0 0 0 0 0 0 96 95 69 230 229 82 230 229 82
136556 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136557 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136558 -230 229 82 161 156 96 118 116 76 82 81 62 16 17 12 9 11 11
136559 -9 11 11 9 12 12 10 13 13 12 14 14 13 16 16 14 18 18
136560 -15 19 19 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136561 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136562 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136563 -16 19 19 33 36 34 99 98 80 156 151 111 145 141 105 184 179 149
136564 -168 163 120 184 179 149 177 172 135 156 151 111 145 141 105 110 109 94
136565 -90 89 73 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0
136566 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136567 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136568 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136569 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136570 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136571 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136572 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136573 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136574 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136575 -0 0 0
136576 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136577 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136578 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136579 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136580 -0 0 0 0 0 0 0 0 0 71 71 57 230 229 82 230 229 82
136581 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 230 229 82
136582 -230 229 82 161 156 96 230 229 82 230 229 82 230 229 82 161 156 96
136583 -118 116 76 82 81 62 30 31 28 9 11 11 9 11 11 9 11 11
136584 -10 12 12 10 13 13 11 14 14 13 16 16 14 17 17 15 18 18
136585 -15 19 19 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136586 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136587 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136588 -18 22 22 58 59 55 137 133 100 197 193 154 214 212 158 210 208 158
136589 -197 193 154 184 179 149 184 179 149 137 133 100 110 109 94 99 98 80
136590 -84 83 72 10 10 9 0 0 0 0 0 0 0 0 0 0 0 0
136591 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136592 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136593 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136594 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136595 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136596 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136597 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136598 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136599 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136600 -0 0 0
136601 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136602 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136603 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136604 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136605 -0 0 0 0 0 0 0 0 0 16 17 12 230 229 82 230 229 82
136606 -230 229 82 230 229 82 230 229 82 230 229 82 230 229 82 161 156 96
136607 -161 156 96 161 156 96 161 156 96 161 156 96 118 116 76 71 71 57
136608 -21 22 20 12 14 14 11 13 13 10 12 12 10 12 12 10 13 13
136609 -11 13 13 12 15 15 13 16 16 14 17 17 14 18 18 15 19 19
136610 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136611 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136612 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 17 21 21
136613 -23 27 26 84 83 72 184 179 149 251 251 187 210 208 158 184 179 149
136614 -184 179 149 156 151 111 110 109 94 84 83 72 63 64 60 51 52 50
136615 -18 22 22 6 8 8 0 0 0 0 0 0 0 0 0 0 0 0
136616 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136617 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136618 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136619 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136620 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136621 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136622 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136623 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136624 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136625 -0 0 0
136626 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136627 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136628 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136629 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136630 -0 0 0 0 0 0 0 0 0 0 0 0 118 116 76 230 229 82
136631 -230 229 82 230 229 82 230 229 82 230 229 82 161 156 96 161 156 96
136632 -161 156 96 161 156 96 118 116 76 53 55 47 20 23 22 16 19 19
136633 -13 16 16 12 15 15 12 14 14 11 14 14 11 14 14 11 14 14
136634 -12 15 15 13 16 16 14 17 17 15 19 19 16 20 20 17 21 21
136635 -23 27 26 18 22 22 20 24 24 23 27 26 30 32 31 17 21 21
136636 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136637 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136638 -23 27 26 33 37 35 137 133 100 156 151 111 158 153 112 105 104 92
136639 -105 104 92 68 70 65 39 40 39 18 22 22 12 14 14 12 15 15
136640 -9 11 11 4 5 5 0 0 0 0 0 0 0 0 0 0 0 0
136641 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136642 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136643 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136644 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136645 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136646 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136647 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136648 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136649 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136650 -0 0 0
136651 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136652 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136653 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136654 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136655 -0 0 0 0 0 0 0 0 0 0 0 0 16 17 12 230 229 82
136656 -230 229 82 230 229 82 230 229 82 161 156 96 118 116 76 118 116 76
136657 -118 116 76 66 65 55 43 45 43 32 34 33 25 27 26 20 23 22
136658 -17 20 20 15 18 18 14 17 17 15 18 18 13 16 16 14 17 17
136659 -14 18 18 16 20 20 32 34 33 55 57 54 58 59 55 72 73 67
136660 -105 104 92 55 57 54 65 66 61 63 64 60 40 43 41 33 37 35
136661 -41 42 42 20 24 24 16 20 20 16 20 20 16 20 20 16 20 20
136662 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136663 -17 21 21 26 28 27 30 32 31 35 37 36 68 70 65 39 40 39
136664 -23 27 26 15 18 18 13 16 16 11 14 14 9 12 12 8 10 10
136665 -7 9 9 6 7 7 0 0 0 0 0 0 0 0 0 0 0 0
136666 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136667 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136668 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136669 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136670 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136671 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136672 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136673 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136674 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136675 -0 0 0
136676 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136677 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136678 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136679 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136680 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 38 35
136681 -230 229 82 230 229 82 230 229 82 96 95 69 30 31 28 49 51 48
136682 -90 89 73 68 70 65 55 57 54 47 48 46 47 48 46 43 45 43
136683 -32 34 33 43 45 43 43 45 43 23 27 26 25 27 26 40 43 41
136684 -40 43 41 90 89 73 110 109 94 145 141 105 156 151 111 156 151 111
136685 -184 179 149 184 179 149 177 172 135 184 179 149 137 133 100 84 83 72
136686 -105 104 92 63 64 60 49 51 48 47 48 46 28 31 30 18 22 22
136687 -16 20 20 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136688 -16 20 20 15 19 19 15 19 19 15 19 19 18 22 22 15 19 19
136689 -13 16 16 12 15 15 11 14 14 10 13 13 9 12 12 9 11 11
136690 -8 10 10 6 8 8 0 0 0 0 0 0 0 0 0 0 0 0
136691 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136692 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136693 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136694 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136695 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136696 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136697 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136698 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136699 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136700 -0 0 0
136701 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136702 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136703 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136704 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136705 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136706 -30 31 28 230 229 82 71 71 57 2 2 1 0 0 0 58 59 55
136707 -105 104 92 84 83 72 65 66 61 84 83 72 110 109 94 110 109 94
136708 -145 141 105 105 104 92 110 109 94 110 109 94 84 83 72 110 109 94
136709 -158 153 112 197 193 154 197 193 154 239 239 170 251 251 187 251 251 187
136710 -251 251 187 251 251 187 251 251 187 251 251 187 210 208 158 197 193 154
136711 -197 193 154 184 179 149 145 141 105 137 133 100 105 104 92 47 48 46
136712 -20 23 23 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136713 -16 20 20 16 19 19 15 19 19 15 19 19 14 18 18 14 17 17
136714 -13 17 17 13 16 16 12 14 14 12 14 14 13 13 13 13 13 13
136715 -13 13 13 12 12 12 10 10 9 6 7 7 2 2 2 0 0 0
136716 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136717 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136718 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136719 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136720 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136721 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136722 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136723 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136724 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136725 -0 0 0
136726 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136727 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136728 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136729 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136730 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136731 -0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 65 66 61
136732 -105 104 92 84 83 72 84 83 72 110 109 94 184 179 149 210 208 158
136733 -210 208 158 210 208 158 214 212 158 197 193 154 214 212 158 210 208 158
136734 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136735 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136736 -251 251 187 251 251 187 239 239 170 251 251 187 184 179 149 84 83 72
136737 -26 28 27 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136738 -16 20 20 16 20 20 15 19 19 15 19 19 15 18 18 14 18 18
136739 -13 17 17 13 16 16 15 15 15 14 14 13 14 14 13 14 14 13
136740 -13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 3 4 4
136741 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136742 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136743 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136744 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136745 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136746 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136747 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136748 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136749 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136750 -0 0 0
136751 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136752 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136753 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136754 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136755 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136756 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 73 67
136757 -105 104 92 99 98 80 84 83 72 99 98 80 177 172 135 197 193 154
136758 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136759 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136760 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136761 -251 251 187 251 251 187 251 251 187 214 212 158 197 193 154 99 98 80
136762 -23 27 26 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136763 -16 20 20 16 20 20 15 19 19 15 19 19 15 18 18 14 18 18
136764 -14 17 17 16 16 16 16 16 16 16 16 16 15 15 15 14 14 13
136765 -14 14 13 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12
136766 -3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136767 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136768 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136769 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136770 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136771 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136772 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136773 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136774 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136775 -0 0 0
136776 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136777 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136778 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136779 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136780 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136781 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 84 83 72
136782 -110 109 94 99 98 80 72 73 67 63 64 60 99 98 80 177 172 135
136783 -184 179 149 210 208 158 251 251 187 251 251 187 251 251 187 251 251 187
136784 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136785 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
136786 -251 251 187 210 208 158 184 179 149 177 172 135 110 109 94 33 37 35
136787 -17 21 21 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136788 -16 20 20 16 20 20 15 19 19 15 19 19 15 19 19 14 18 18
136789 -15 18 18 18 19 18 18 19 18 17 17 17 16 16 16 15 15 15
136790 -14 14 13 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12
136791 -10 10 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136792 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136793 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136794 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136795 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136796 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136797 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136798 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136799 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136800 -0 0 0
136801 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136802 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136803 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136804 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136805 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136806 -0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 105 104 92
136807 -108 107 93 99 98 80 72 73 67 63 64 60 51 52 50 87 86 72
136808 -105 104 92 110 109 94 108 107 93 156 151 111 184 179 149 184 179 149
136809 -197 193 154 197 193 154 197 193 154 184 179 149 184 179 149 177 172 135
136810 -197 193 154 156 151 111 177 172 135 184 179 149 168 163 120 137 133 100
136811 -145 141 105 110 109 94 99 98 80 47 48 46 55 57 54 15 19 19
136812 -16 19 19 16 20 20 16 20 20 16 20 20 16 20 20 16 20 20
136813 -17 20 20 17 21 21 16 20 20 16 19 19 15 19 19 16 19 19
136814 -20 20 20 21 22 21 20 20 20 19 20 19 18 19 18 16 16 16
136815 -15 15 15 14 14 13 13 13 13 13 13 13 12 12 12 12 12 12
136816 -12 12 12 4 5 5 0 0 0 0 0 0 0 0 0 0 0 0
136817 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136818 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136819 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136820 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136821 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136822 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136823 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136824 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136825 -0 0 0
136826 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136827 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136828 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136829 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136830 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136831 -0 0 0 0 0 0 0 0 0 0 0 0 58 59 55 110 109 94
136832 -105 104 92 90 89 73 72 73 67 55 57 54 43 45 43 39 40 39
136833 -43 45 43 46 47 45 43 45 43 68 70 65 65 66 61 63 64 60
136834 -108 107 93 72 73 67 105 104 92 90 89 73 72 73 67 40 43 41
136835 -72 73 67 68 70 65 68 70 65 58 59 55 63 64 60 49 51 48
136836 -43 45 43 33 36 34 27 30 29 20 24 24 16 20 20 15 19 19
136837 -15 19 19 15 19 19 15 19 19 16 19 19 16 20 20 16 20 20
136838 -17 21 21 20 24 24 20 23 22 17 21 21 17 20 20 20 20 20
136839 -21 22 21 21 22 21 21 22 21 21 22 21 20 20 20 18 19 18
136840 -16 16 16 15 15 15 13 13 13 13 13 13 12 12 12 12 12 12
136841 -12 12 12 10 10 9 0 0 0 0 0 0 0 0 0 0 0 0
136842 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136843 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136844 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136845 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136846 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136847 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136848 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136849 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136850 -0 0 0
136851 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136852 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136853 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136854 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136855 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136856 -0 0 0 0 0 0 0 0 0 21 22 21 110 109 94 110 109 94
136857 -105 104 92 84 83 72 68 70 65 51 52 50 41 42 42 33 37 35
136858 -28 31 30 23 27 26 20 23 23 18 22 22 17 20 20 25 27 26
136859 -26 28 27 27 30 29 25 27 26 20 23 23 23 27 26 30 32 31
136860 -20 24 24 17 21 21 18 22 22 15 19 19 26 28 27 20 23 23
136861 -14 18 18 15 19 19 15 18 18 15 19 19 15 19 19 15 19 19
136862 -15 19 19 15 19 19 15 19 19 15 19 19 15 19 19 16 19 19
136863 -16 20 20 22 24 23 24 26 24 22 24 23 20 23 22 22 24 23
136864 -24 26 24 24 26 24 23 24 24 22 24 23 21 22 21 19 20 19
136865 -17 17 17 15 15 15 14 14 13 13 13 13 12 12 12 12 12 12
136866 -12 12 12 12 12 12 2 2 2 0 0 0 0 0 0 0 0 0
136867 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136868 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136869 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136870 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136871 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136872 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136873 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136874 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136875 -0 0 0
136876 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136877 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136878 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136879 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136880 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136881 -0 0 0 0 0 0 2 2 2 99 98 80 110 109 94 108 107 93
136882 -105 104 92 84 83 72 63 64 60 49 51 48 39 40 39 32 34 33
136883 -27 30 29 23 25 24 20 23 23 17 20 20 15 19 19 14 18 18
136884 -14 17 17 13 17 17 13 17 17 13 17 17 13 17 17 13 17 17
136885 -14 17 17 14 17 17 14 17 17 14 17 17 14 17 17 14 17 17
136886 -14 18 18 14 18 18 14 18 18 14 18 18 15 18 18 15 19 19
136887 -15 19 19 15 19 19 15 19 19 15 19 19 15 19 19 15 19 19
136888 -15 19 19 17 21 21 27 29 28 26 28 27 25 27 26 25 27 26
136889 -27 29 28 27 29 28 26 28 27 24 26 24 21 22 21 20 20 20
136890 -18 19 18 16 16 16 14 14 13 13 13 13 12 12 12 12 12 12
136891 -12 12 12 12 12 12 4 5 5 0 0 0 0 0 0 0 0 0
136892 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136893 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136894 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136895 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136896 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136897 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136898 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136899 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136900 -0 0 0
136901 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136902 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136903 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136904 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136905 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136906 -0 0 0 0 0 0 51 52 50 110 109 94 110 109 94 105 104 92
136907 -90 89 73 72 73 67 55 57 54 43 45 43 35 37 36 30 32 31
136908 -26 28 27 20 24 24 17 21 21 16 19 19 15 18 18 14 17 17
136909 -13 16 16 13 16 16 13 16 16 13 16 16 13 16 16 13 16 16
136910 -13 16 16 13 16 16 13 16 16 13 17 17 13 17 17 14 17 17
136911 -14 17 17 14 17 17 14 17 17 14 18 18 14 18 18 14 18 18
136912 -15 18 18 15 18 18 15 19 19 15 19 19 15 19 19 15 19 19
136913 -15 19 19 15 19 19 27 29 28 32 34 33 28 31 30 27 29 28
136914 -30 32 31 30 32 31 30 31 28 26 28 27 23 24 24 21 22 21
136915 -19 20 19 16 16 16 14 14 13 13 13 13 12 12 12 12 12 12
136916 -12 12 12 12 12 12 6 7 7 0 0 0 0 0 0 0 0 0
136917 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136918 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136919 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136920 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136921 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136922 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136923 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136924 -0 0 0 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0
136925 -0 0 0
136926 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136927 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136928 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136929 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136930 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136931 -0 0 0 10 10 9 108 107 93 110 109 94 108 107 93 99 98 80
136932 -84 83 72 63 64 60 49 51 48 40 43 41 33 36 34 27 30 29
136933 -23 27 26 18 22 22 17 20 20 15 18 18 14 17 17 13 16 16
136934 -13 16 16 13 16 16 12 15 15 12 15 15 12 15 15 12 15 15
136935 -13 16 16 13 16 16 13 16 16 13 16 16 13 16 16 13 16 16
136936 -13 17 17 13 17 17 14 17 17 14 17 17 14 17 17 14 18 18
136937 -14 18 18 14 18 18 15 18 18 15 18 18 15 19 19 15 19 19
136938 -15 19 19 15 19 19 17 21 21 33 36 34 32 34 33 31 33 31
136939 -33 36 34 33 36 34 31 33 31 27 29 28 25 27 26 21 22 21
136940 -19 20 19 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
136941 -12 12 12 12 12 12 8 8 7 0 0 0 0 0 0 0 0 0
136942 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136943 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136944 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136945 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136946 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136947 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136948 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136949 -0 0 0 0 0 0 63 64 60 137 133 100 43 45 43 0 0 0
136950 -0 0 0
136951 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136952 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136953 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136954 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136955 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136956 -0 0 0 68 70 65 110 109 94 110 109 94 105 104 92 84 83 72
136957 -68 70 65 55 57 54 43 45 43 35 37 36 30 32 31 26 28 27
136958 -20 24 24 17 21 21 16 19 19 14 17 17 13 16 16 12 15 15
136959 -12 15 15 12 15 15 12 15 15 12 15 15 12 15 15 12 15 15
136960 -12 15 15 12 15 15 12 15 15 12 15 15 12 15 15 13 16 16
136961 -13 16 16 13 16 16 13 16 16 13 17 17 13 17 17 14 17 17
136962 -14 17 17 14 17 17 14 18 18 14 18 18 14 18 18 15 18 18
136963 -15 19 19 15 19 19 15 19 19 20 24 24 32 34 33 35 37 36
136964 -37 39 37 35 37 36 33 36 34 30 32 31 26 28 27 22 24 23
136965 -20 20 20 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
136966 -12 12 12 12 12 12 8 8 7 0 0 0 0 0 0 0 0 0
136967 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136968 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136969 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136970 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136971 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136972 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136973 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136974 -1 1 1 99 98 80 184 179 149 184 179 149 68 70 65 0 0 0
136975 -0 0 0
136976 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136977 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136978 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136979 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136980 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136981 -15 15 15 110 109 94 110 109 94 108 107 93 99 98 80 72 73 67
136982 -61 63 57 49 51 48 39 40 39 33 36 34 27 30 29 23 25 24
136983 -18 22 22 16 19 19 14 17 17 13 16 16 12 15 15 12 15 15
136984 -11 14 14 11 14 14 11 14 14 11 14 14 11 14 14 11 14 14
136985 -11 14 14 11 14 14 12 14 14 12 15 15 12 15 15 12 15 15
136986 -12 15 15 13 16 16 13 16 16 13 16 16 13 16 16 13 16 16
136987 -13 17 17 14 17 17 14 17 17 14 17 17 14 18 18 14 18 18
136988 -14 18 18 15 18 18 15 19 19 15 19 19 30 32 31 38 39 37
136989 -39 40 39 39 40 39 35 37 36 31 33 31 27 29 28 22 24 23
136990 -20 20 20 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
136991 -12 12 12 12 12 12 8 8 7 0 0 0 0 0 0 0 0 0
136992 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136993 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136994 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136995 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136996 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136997 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
136998 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
136999 -110 109 94 197 193 154 210 208 158 184 179 149 68 70 65 0 0 0
137000 -0 0 0
137001 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137002 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137003 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137004 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137005 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137006 -68 70 65 110 109 94 110 109 94 105 104 92 84 83 72 65 66 61
137007 -51 52 50 43 45 43 35 37 36 30 32 31 25 27 26 20 23 23
137008 -17 20 20 15 18 18 13 16 16 12 15 15 12 15 15 11 14 14
137009 -11 14 14 11 14 14 11 13 13 11 13 13 11 13 13 11 13 13
137010 -11 14 14 11 14 14 11 14 14 11 14 14 11 14 14 11 14 14
137011 -12 15 15 12 15 15 12 15 15 12 15 15 13 16 16 13 16 16
137012 -13 16 16 13 16 16 13 17 17 13 17 17 14 17 17 14 17 17
137013 -14 18 18 14 18 18 14 18 18 16 19 19 37 39 37 41 42 42
137014 -41 42 42 41 42 42 38 39 37 32 34 33 27 29 28 23 24 24
137015 -21 22 21 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
137016 -12 12 12 12 12 12 8 8 7 0 0 0 0 0 0 0 0 0
137017 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137018 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137019 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137020 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137021 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137022 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137023 -0 0 0 0 0 0 0 0 0 0 0 0 11 11 11 137 133 100
137024 -197 193 154 251 251 187 239 239 170 184 179 149 31 33 31 0 0 0
137025 -0 0 0
137026 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137027 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137028 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137029 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137030 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 12 12
137031 -110 109 94 110 109 94 105 104 92 90 89 73 72 73 67 58 59 55
137032 -46 47 45 37 39 37 31 33 31 26 28 27 20 24 24 17 21 21
137033 -15 18 18 13 16 16 12 15 15 12 14 14 11 13 13 11 13 13
137034 -10 13 13 10 13 13 10 13 13 10 13 13 10 13 13 10 13 13
137035 -10 13 13 10 13 13 11 13 13 11 13 13 11 14 14 11 14 14
137036 -11 14 14 11 14 14 12 14 14 12 15 15 12 15 15 12 15 15
137037 -13 16 16 13 16 16 13 16 16 13 16 16 13 17 17 13 17 17
137038 -14 17 17 14 17 17 14 18 18 23 27 26 41 42 42 41 42 42
137039 -43 45 43 41 42 42 39 40 39 33 36 34 27 29 28 23 24 24
137040 -21 22 21 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
137041 -12 12 12 12 12 12 6 7 7 0 0 0 0 0 0 0 0 0
137042 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137043 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137044 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137045 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137046 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137047 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137048 -0 0 0 0 0 0 0 0 0 27 29 28 168 163 120 210 208 158
137049 -251 251 187 251 251 187 210 208 158 137 133 100 1 1 1 0 0 0
137050 -0 0 0
137051 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137052 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137053 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137054 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137055 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60 60 56
137056 -110 109 94 105 104 92 105 104 92 84 83 72 65 66 61 51 52 50
137057 -40 43 41 33 36 34 27 30 29 23 25 24 18 22 22 16 19 19
137058 -14 17 17 12 15 15 11 14 14 11 14 14 10 13 13 10 13 13
137059 -10 13 13 10 12 12 10 12 12 10 12 12 10 12 12 10 12 12
137060 -10 12 12 10 12 12 10 13 13 10 13 13 10 13 13 11 13 13
137061 -11 13 13 11 14 14 11 14 14 11 14 14 11 14 14 12 15 15
137062 -12 15 15 12 15 15 12 15 15 13 16 16 13 16 16 13 16 16
137063 -13 17 17 13 17 17 14 17 17 32 34 33 43 45 43 43 45 43
137064 -43 45 43 43 45 43 39 40 39 33 36 34 27 29 28 23 24 24
137065 -21 22 21 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
137066 -12 12 12 12 12 12 6 7 7 0 0 0 0 0 0 0 0 0
137067 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137068 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137069 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137070 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137071 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137072 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137073 -0 0 0 1 1 1 68 70 65 184 179 149 210 208 158 251 251 187
137074 -251 251 187 214 212 158 184 179 149 37 39 37 0 0 0 0 0 0
137075 -0 0 0
137076 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137077 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137078 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137079 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137080 -0 0 0 0 0 0 0 0 0 0 0 0 6 7 7 105 104 92
137081 -105 104 92 105 104 92 99 98 80 72 73 67 58 59 55 46 47 45
137082 -35 37 36 30 32 31 25 27 26 20 23 23 16 19 19 14 17 17
137083 -12 15 15 12 14 14 11 13 13 10 13 13 10 12 12 10 12 12
137084 -10 12 12 10 12 12 9 12 12 9 12 12 9 12 12 9 12 12
137085 -10 12 12 10 12 12 10 12 12 10 12 12 10 12 12 10 13 13
137086 -10 13 13 10 13 13 11 13 13 11 13 13 11 14 14 11 14 14
137087 -11 14 14 12 15 15 12 15 15 12 15 15 12 15 15 13 16 16
137088 -13 16 16 13 16 16 17 20 20 41 42 42 46 47 45 46 47 45
137089 -46 47 45 43 45 43 40 41 39 33 36 34 27 29 28 23 24 24
137090 -20 20 20 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
137091 -12 12 12 12 12 12 4 5 5 0 0 0 0 0 0 0 0 0
137092 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137093 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137094 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137095 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137096 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137097 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137098 -15 15 15 110 109 94 197 193 154 214 212 158 251 251 187 251 251 187
137099 -239 239 170 184 179 149 84 83 72 0 0 0 0 0 0 0 0 0
137100 -0 0 0
137101 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137102 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137103 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137104 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137105 -0 0 0 0 0 0 0 0 0 0 0 0 47 48 46 105 104 92
137106 -105 104 92 99 98 80 84 83 72 68 70 65 51 52 50 40 43 41
137107 -32 34 33 27 29 28 22 24 23 17 21 21 15 18 18 13 16 16
137108 -12 15 15 11 13 13 10 13 13 10 12 12 9 12 12 9 12 12
137109 -9 12 12 9 12 12 9 11 11 9 11 11 9 11 11 9 11 11
137110 -9 12 12 9 12 12 9 12 12 9 12 12 10 12 12 10 12 12
137111 -10 12 12 10 12 12 10 13 13 10 13 13 10 13 13 11 13 13
137112 -11 14 14 11 14 14 11 14 14 12 14 14 12 15 15 12 15 15
137113 -12 15 15 13 16 16 28 31 30 43 45 43 47 48 46 47 48 46
137114 -47 48 46 43 45 43 40 41 39 33 36 34 27 29 28 22 24 23
137115 -20 20 20 17 17 17 15 15 15 13 13 13 12 12 12 12 12 12
137116 -12 12 12 12 12 12 3 4 4 0 0 0 0 0 0 0 0 0
137117 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137118 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137119 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137120 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137121 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137122 -0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 60 60 56
137123 -177 172 135 197 193 154 251 251 187 251 251 187 251 251 187 251 251 187
137124 -184 179 149 110 109 94 3 4 4 0 0 0 0 0 0 0 0 0
137125 -0 0 0
137126 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137128 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137129 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137130 -0 0 0 0 0 0 0 0 0 1 1 1 99 98 80 105 104 92
137131 -99 98 80 87 86 72 84 83 72 63 64 60 46 47 45 35 37 36
137132 -30 32 31 25 27 26 18 22 22 16 19 19 14 17 17 12 15 15
137133 -11 14 14 10 13 13 9 12 12 9 12 12 9 11 11 9 11 11
137134 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137135 -9 11 11 9 11 11 9 11 11 9 11 11 9 12 12 9 12 12
137136 -9 12 12 10 12 12 10 12 12 10 12 12 10 13 13 10 13 13
137137 -10 13 13 11 13 13 11 14 14 11 14 14 11 14 14 12 15 15
137138 -12 15 15 14 17 17 41 42 42 47 48 46 49 51 48 51 52 50
137139 -47 48 46 43 45 43 40 41 39 33 36 34 27 29 28 22 24 23
137140 -19 20 19 16 16 16 14 14 13 13 13 13 12 12 12 12 12 12
137141 -12 12 12 12 12 12 2 2 2 0 0 0 0 0 0 0 0 0
137142 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137143 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137144 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137145 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137146 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137147 -0 0 0 0 0 0 0 0 0 23 24 24 137 133 100 184 179 149
137148 -210 208 158 251 251 187 251 251 187 251 251 187 251 251 187 184 179 149
137149 -110 109 94 13 13 13 0 0 0 0 0 0 0 0 0 0 0 0
137150 -0 0 0
137151 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137152 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137153 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137154 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137155 -0 0 0 0 0 0 0 0 0 30 32 31 105 104 92 99 98 80
137156 -84 83 72 84 83 72 72 73 67 55 57 54 41 42 42 32 34 33
137157 -27 29 28 20 24 24 17 20 20 14 17 17 13 16 16 12 14 14
137158 -10 13 13 10 12 12 9 11 11 9 11 11 9 11 11 9 11 11
137159 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137160 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137161 -9 11 11 9 12 12 9 12 12 10 12 12 10 12 12 10 12 12
137162 -10 13 13 10 13 13 10 13 13 11 13 13 11 14 14 11 14 14
137163 -11 14 14 27 29 28 55 56 53 72 73 67 51 52 50 51 52 50
137164 -49 51 48 43 45 43 39 40 39 32 34 33 26 28 27 21 22 21
137165 -19 20 19 16 16 16 18 19 17 13 13 13 12 12 12 12 12 12
137166 -12 12 12 12 12 12 1 1 1 0 0 0 0 0 0 0 0 0
137167 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137168 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137169 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137171 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137172 -0 0 0 8 8 7 84 83 72 184 179 149 197 193 154 251 251 187
137173 -251 251 187 251 251 187 251 251 187 251 251 187 184 179 149 145 141 105
137174 -19 20 19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137175 -0 0 0
137176 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137177 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137178 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137179 -0 0 0 14 14 13 0 0 0 0 0 0 0 0 0 0 0 0
137180 -0 0 0 0 0 0 0 0 0 72 73 67 105 104 92 84 83 72
137181 -72 73 67 84 83 72 68 70 65 49 51 48 39 40 39 30 32 31
137182 -25 27 26 18 22 22 15 18 18 13 16 16 12 15 15 11 13 13
137183 -10 12 12 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137184 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137185 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137186 -9 11 11 9 11 11 9 11 11 9 12 12 9 12 12 9 12 12
137187 -10 12 12 10 12 12 10 12 12 10 13 13 10 13 13 11 13 13
137188 -13 16 16 41 42 42 99 98 80 158 153 112 65 66 61 51 52 50
137189 -49 51 48 43 45 43 39 40 39 31 33 31 25 27 26 21 22 21
137190 -21 22 21 68 70 65 55 56 53 13 13 13 12 12 12 12 12 12
137191 -12 12 12 11 11 11 0 0 0 0 0 0 0 0 0 0 0 0
137192 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137193 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137194 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137195 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137196 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3
137197 -63 64 60 158 153 112 184 179 149 210 208 158 251 251 187 251 251 187
137198 -251 251 187 251 251 187 251 251 187 184 179 149 137 133 100 27 29 28
137199 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137200 -0 0 0
137201 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137202 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137203 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137204 -21 22 21 110 109 94 5 6 5 0 0 0 0 0 0 0 0 0
137205 -0 0 0 0 0 0 13 13 13 105 104 92 90 89 73 72 73 67
137206 -68 70 65 84 83 72 63 64 60 46 47 45 35 37 36 27 29 28
137207 -22 24 23 17 20 20 14 17 17 12 15 15 11 14 14 10 12 12
137208 -10 12 12 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137209 -9 11 11 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137210 -8 10 10 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137211 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137212 -9 12 12 9 12 12 10 12 12 10 12 12 10 13 13 10 13 13
137213 -30 32 31 47 48 46 177 172 135 210 208 158 137 133 100 55 56 53
137214 -49 51 48 43 45 43 38 39 37 31 33 31 25 27 26 22 24 23
137215 -110 109 94 184 179 149 63 64 60 13 13 13 12 12 12 12 12 12
137216 -12 12 12 8 9 9 0 0 0 1 1 1 0 0 0 0 0 0
137217 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137218 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137219 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137220 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137221 -0 0 0 0 0 0 0 0 0 0 0 0 21 22 21 105 104 92
137222 -184 179 149 210 208 158 251 251 187 251 251 187 251 251 187 251 251 187
137223 -251 251 187 251 251 187 184 179 149 145 141 105 23 24 24 0 0 0
137224 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137225 -0 0 0
137226 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137227 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137228 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137229 -68 70 65 184 179 149 105 104 92 0 0 0 0 0 0 0 0 0
137230 -0 0 0 0 0 0 51 52 50 99 98 80 84 83 72 63 64 60
137231 -68 70 65 72 73 67 55 57 54 41 42 42 32 34 33 25 27 26
137232 -20 23 23 16 19 19 13 16 16 12 14 14 10 13 13 10 12 12
137233 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 8 10 10
137234 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137235 -8 10 10 8 10 10 8 10 10 8 10 10 9 11 11 9 11 11
137236 -9 11 11 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137237 -9 11 11 9 11 11 9 12 12 9 12 12 10 12 12 17 20 20
137238 -46 47 45 72 73 67 210 208 158 251 251 187 210 208 158 63 64 60
137239 -49 51 48 43 45 43 37 39 37 30 32 31 24 26 24 105 104 92
137240 -210 208 158 197 193 154 47 48 46 13 13 13 12 12 12 12 12 12
137241 -12 12 12 6 7 7 33 36 34 48 49 45 0 0 0 0 0 0
137242 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137243 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137244 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137245 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137246 -0 0 0 0 0 0 8 8 7 23 24 24 55 56 53 110 109 94
137247 -210 208 158 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
137248 -251 251 187 184 179 149 110 109 94 20 20 20 0 0 0 0 0 0
137249 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137250 -0 0 0
137251 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137252 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137253 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137254 -110 109 94 251 251 187 210 208 158 47 48 46 0 0 0 0 0 0
137255 -0 0 0 1 1 1 90 89 73 90 89 73 72 73 67 55 56 53
137256 -72 73 67 68 70 65 51 52 50 37 39 37 28 31 30 23 25 24
137257 -17 21 21 15 18 18 12 15 15 11 14 14 10 13 13 9 12 12
137258 -9 11 11 9 11 11 9 11 11 8 10 10 8 10 10 8 10 10
137259 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137260 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137261 -8 10 10 9 11 11 9 11 11 9 11 11 9 11 11 9 11 11
137262 -9 11 11 9 11 11 9 11 11 9 12 12 13 16 16 41 42 42
137263 -49 51 48 110 109 94 251 251 187 251 251 187 251 251 187 105 104 92
137264 -49 51 48 43 45 43 35 37 36 30 31 28 47 48 46 197 193 154
137265 -251 251 187 197 193 154 31 33 31 12 12 12 12 12 12 12 12 12
137266 -12 12 12 51 52 50 184 179 149 72 73 67 0 0 0 0 0 0
137267 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137268 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137269 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137270 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2
137271 -11 11 11 21 22 21 30 32 31 40 41 39 60 60 56 145 141 105
137272 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 214 212 158
137273 -184 179 149 110 109 94 13 13 13 0 0 0 0 0 0 0 0 0
137274 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137275 -0 0 0
137276 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137277 -0 0 0 0 0 0 4 5 4 61 61 53 48 49 45 3 4 3
137278 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137279 -156 151 111 251 251 187 251 251 187 184 179 149 11 11 11 0 0 0
137280 -0 0 0 26 28 27 99 98 80 84 83 72 60 60 56 43 45 43
137281 -72 73 67 65 66 61 49 51 48 35 37 36 27 29 28 20 24 24
137282 -17 20 20 14 17 17 12 15 15 11 13 13 10 12 12 9 11 11
137283 -9 11 11 9 11 11 8 10 10 8 10 10 8 10 10 8 10 10
137284 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137285 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137286 -8 10 10 8 10 10 8 10 10 8 10 10 9 11 11 9 11 11
137287 -9 11 11 9 11 11 9 11 11 11 13 13 37 39 37 47 48 46
137288 -51 52 50 184 179 149 251 251 187 251 251 187 251 251 187 145 141 105
137289 -47 48 46 41 42 42 35 37 36 27 29 28 137 133 100 251 251 187
137290 -251 251 187 197 193 154 19 20 19 12 12 12 12 12 12 12 12 12
137291 -27 29 28 184 179 149 214 212 158 63 64 60 0 0 0 0 0 0
137292 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137293 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137294 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137295 -0 0 0 0 0 0 1 1 1 6 7 7 16 16 16 24 26 24
137296 -30 32 31 38 39 37 47 48 46 55 57 54 68 70 65 110 109 94
137297 -197 193 154 251 251 187 251 251 187 251 251 187 210 208 158 184 179 149
137298 -105 104 92 8 8 7 0 0 0 0 0 0 0 0 0 0 0 0
137299 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137300 -0 0 0
137301 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137302 -0 0 0 0 0 0 0 0 0 65 66 61 184 179 149 156 151 111
137303 -30 32 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137304 -168 163 120 251 251 187 251 251 187 251 251 187 110 109 94 0 0 0
137305 -0 0 0 60 60 56 84 83 72 68 70 65 51 52 50 38 39 37
137306 -84 83 72 63 64 60 43 45 43 33 36 34 25 27 26 20 23 22
137307 -15 18 18 13 16 16 12 14 14 10 13 13 9 12 12 9 11 11
137308 -9 11 11 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137309 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137310 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137311 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137312 -9 11 11 9 11 11 10 12 12 33 36 34 46 47 45 51 52 50
137313 -72 73 67 210 208 158 251 251 187 251 251 187 251 251 187 177 172 135
137314 -47 48 46 41 42 42 35 37 36 37 39 37 184 179 149 251 251 187
137315 -251 251 187 197 193 154 13 13 13 12 12 12 12 12 12 12 12 12
137316 -110 109 94 251 251 187 251 251 187 37 39 37 0 0 0 0 0 0
137317 -0 0 0 21 22 20 2 2 1 0 0 0 0 0 0 0 0 0
137318 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137319 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137320 -4 5 5 12 12 12 21 22 21 25 27 26 30 32 31 38 39 37
137321 -46 47 45 55 56 53 60 60 56 65 66 61 68 70 65 105 104 92
137322 -110 109 94 197 193 154 210 208 158 197 193 154 184 179 149 84 83 72
137323 -2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137324 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137325 -0 0 0
137326 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137327 -0 0 0 0 0 0 0 0 0 13 13 13 184 179 149 251 251 187
137328 -197 193 154 43 44 41 0 0 0 0 0 0 0 0 0 0 0 0
137329 -145 141 105 251 251 187 251 251 187 251 251 187 214 212 158 43 45 43
137330 -2 2 2 84 83 72 72 73 67 58 59 55 41 42 42 38 39 37
137331 -72 73 67 58 59 55 41 42 42 31 33 31 25 27 26 18 22 22
137332 -14 17 17 12 15 15 12 14 14 10 12 12 9 12 12 9 11 11
137333 -9 11 11 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137334 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137335 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137336 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137337 -8 10 10 9 12 12 31 33 31 43 45 43 49 51 48 55 56 53
137338 -110 109 94 251 251 187 251 251 187 251 251 187 251 251 187 168 163 120
137339 -47 48 46 41 42 42 33 36 34 63 64 60 197 193 154 251 251 187
137340 -251 251 187 184 179 149 13 13 13 12 12 12 12 12 12 16 16 16
137341 -197 193 154 251 251 187 239 239 170 20 20 20 0 0 0 2 2 1
137342 -108 107 93 110 109 94 0 0 0 0 0 0 0 0 0 0 0 0
137343 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137344 -0 0 0 0 0 0 1 1 1 4 5 5 11 11 11 18 19 18
137345 -22 24 23 26 28 27 32 34 33 39 40 39 46 47 45 51 52 50
137346 -55 57 54 60 60 56 63 64 60 63 64 60 63 64 60 58 59 55
137347 -63 64 60 99 98 80 145 141 105 137 133 100 43 45 43 0 0 0
137348 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137349 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137350 -0 0 0
137351 -0 0 0 0 0 0 0 0 0 3 4 3 0 0 0 0 0 0
137352 -0 0 0 0 0 0 0 0 0 0 0 0 110 109 94 251 251 187
137353 -251 251 187 184 179 149 25 27 26 0 0 0 0 0 0 0 0 0
137354 -99 98 80 251 251 187 251 251 187 251 251 187 251 251 187 156 151 111
137355 -25 27 26 84 83 72 65 66 61 47 48 46 32 34 33 39 40 39
137356 -72 73 67 55 57 54 40 41 39 30 32 31 23 25 24 18 22 22
137357 -14 17 17 12 15 15 11 13 13 10 12 12 9 11 11 9 11 11
137358 -9 11 11 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137359 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137360 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137361 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137362 -9 11 11 28 31 30 41 42 42 47 48 46 55 56 53 58 59 55
137363 -137 133 100 251 251 187 251 251 187 251 251 187 210 208 158 137 133 100
137364 -47 48 46 40 41 39 32 34 33 75 75 61 184 179 149 239 239 170
137365 -251 251 187 177 172 135 13 13 13 12 12 12 12 12 12 43 44 41
137366 -197 193 154 251 251 187 210 208 158 10 10 9 0 0 0 84 83 72
137367 -251 251 187 84 83 72 0 0 0 0 0 0 0 0 0 0 0 0
137368 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
137369 -6 7 7 11 11 11 17 17 17 20 20 20 23 24 24 27 29 28
137370 -32 34 33 38 39 37 43 45 43 47 48 46 51 52 50 55 56 53
137371 -58 59 55 58 59 55 55 57 54 55 56 53 47 48 46 41 42 42
137372 -35 37 36 31 33 31 47 48 46 14 14 13 0 0 0 0 0 0
137373 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137374 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137375 -0 0 0
137376 -0 0 0 0 0 0 0 0 0 66 65 55 99 98 80 20 20 20
137377 -0 0 0 0 0 0 0 0 0 0 0 0 43 45 43 214 212 158
137378 -251 251 187 251 251 187 145 141 105 3 3 3 0 0 0 0 0 0
137379 -48 49 45 184 179 149 239 239 170 251 251 187 239 239 170 177 172 135
137380 -84 83 72 72 73 67 55 56 53 39 40 39 26 28 27 39 40 39
137381 -68 70 65 51 52 50 39 40 39 28 31 30 22 24 23 17 20 20
137382 -14 17 17 12 14 14 10 13 13 9 11 11 9 11 11 9 11 11
137383 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137384 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137385 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137386 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137387 -27 29 28 40 41 39 46 47 45 51 52 50 55 57 54 63 64 60
137388 -131 127 93 197 193 154 210 208 158 197 193 154 168 163 120 96 95 69
137389 -47 48 46 40 41 39 32 34 33 71 71 57 145 141 105 184 179 149
137390 -184 179 149 131 127 93 13 13 13 12 12 12 12 12 12 48 49 45
137391 -168 163 120 184 179 149 156 151 111 6 7 7 14 14 13 177 172 135
137392 -239 239 170 40 41 39 0 0 0 0 0 0 0 0 0 0 0 0
137393 -0 0 0 0 0 0 3 3 3 6 7 7 11 11 11 16 16 16
137394 -18 19 18 21 22 21 23 24 24 27 29 28 32 34 33 37 39 37
137395 -41 42 42 43 45 43 47 48 46 51 52 50 51 52 50 51 52 50
137396 -51 52 50 49 51 48 46 47 45 40 41 39 32 34 33 25 27 26
137397 -20 20 20 14 14 13 2 2 2 0 0 0 0 0 0 0 0 0
137398 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137399 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137400 -0 0 0
137401 -0 0 0 0 0 0 0 0 0 33 36 34 197 193 154 184 179 149
137402 -41 42 42 0 0 0 0 0 0 0 0 0 3 3 3 184 179 149
137403 -251 251 187 251 251 187 184 179 149 48 49 45 0 0 0 0 0 0
137404 -16 17 12 121 119 87 177 172 135 194 189 146 188 184 146 145 141 105
137405 -82 81 62 63 64 60 46 47 45 31 33 31 21 22 21 35 37 36
137406 -68 70 65 51 52 50 37 39 37 27 30 29 22 24 23 17 20 20
137407 -13 16 16 12 14 14 10 13 13 9 11 11 8 10 10 8 10 10
137408 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137409 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137410 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137411 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 25 27 26
137412 -38 39 37 43 45 43 51 52 50 55 56 53 60 60 56 63 64 60
137413 -92 91 72 158 153 112 176 171 126 171 165 117 149 143 98 82 81 62
137414 -44 46 43 38 39 37 30 32 31 71 71 57 131 127 93 160 154 106
137415 -149 143 98 82 81 62 13 13 13 12 12 12 12 12 12 46 47 43
137416 -121 119 87 134 131 96 96 95 69 7 7 6 38 39 37 131 127 93
137417 -145 141 105 12 13 12 0 0 0 1 1 1 3 3 3 6 7 7
137418 -10 10 9 12 12 12 14 14 13 16 16 16 18 19 18 21 22 21
137419 -22 24 23 26 28 27 30 31 28 33 36 34 37 39 37 40 41 39
137420 -41 42 42 43 45 43 46 47 45 46 47 45 46 47 45 43 45 43
137421 -41 42 42 37 39 37 31 33 31 26 28 27 21 22 21 16 16 16
137422 -6 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137423 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137424 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137425 -0 0 0
137426 -0 0 0 0 0 0 0 0 0 0 0 0 177 172 135 251 251 187
137427 -197 193 154 27 29 28 0 0 0 0 0 0 0 0 0 110 109 94
137428 -239 239 170 239 239 170 184 179 149 87 86 72 2 2 1 0 0 0
137429 -1 1 1 82 81 62 142 137 94 165 161 109 165 161 109 131 127 93
137430 -75 75 61 55 56 53 37 39 37 25 27 26 19 20 19 32 34 33
137431 -65 66 61 49 51 48 35 37 36 27 29 28 20 23 23 16 19 19
137432 -13 16 16 13 13 13 10 12 12 9 11 11 8 10 10 8 10 10
137433 -8 9 9 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137434 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137435 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137436 -8 10 10 8 10 10 8 10 10 8 10 10 22 24 23 35 37 36
137437 -41 42 42 47 48 46 55 56 53 58 59 55 63 64 60 65 66 61
137438 -71 71 57 131 127 93 160 154 106 160 154 106 142 137 94 82 81 62
137439 -46 47 43 40 41 39 33 36 34 66 65 55 125 122 87 149 143 98
137440 -142 137 94 82 81 62 17 17 17 18 19 17 14 14 13 46 47 43
137441 -118 116 76 125 122 87 96 95 69 16 17 12 71 71 57 103 101 77
137442 -82 81 62 11 11 11 11 11 11 13 13 13 14 14 13 14 14 13
137443 -15 15 15 16 16 16 17 17 17 19 20 19 21 22 21 23 24 24
137444 -26 28 27 27 29 28 31 33 31 33 36 34 35 37 36 38 39 37
137445 -39 40 39 39 40 39 38 39 37 37 39 37 35 37 36 31 33 31
137446 -27 29 28 24 26 24 21 22 21 17 17 17 12 12 12 2 2 2
137447 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137448 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137449 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137450 -0 0 0
137451 -0 0 0 0 0 0 0 0 0 0 0 0 68 70 65 251 251 187
137452 -251 251 187 156 151 111 2 2 1 0 0 0 0 0 0 43 44 41
137453 -177 172 135 184 179 149 158 153 112 103 101 77 19 20 18 0 0 0
137454 -0 0 0 46 47 43 131 127 93 160 154 106 160 154 106 131 127 93
137455 -71 71 57 43 45 43 30 32 31 21 22 21 16 16 16 26 28 27
137456 -63 64 60 47 48 46 35 37 36 26 28 27 20 23 23 16 19 19
137457 -13 16 16 13 13 13 10 12 12 9 11 11 8 10 10 8 10 10
137458 -7 9 9 7 9 9 8 9 9 8 10 10 8 10 10 8 10 10
137459 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137460 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137461 -8 10 10 8 10 10 8 10 10 20 20 20 33 36 34 40 41 39
137462 -46 47 45 51 52 50 55 57 54 60 60 56 63 64 60 65 66 61
137463 -66 65 55 118 116 76 151 147 98 165 161 109 151 147 98 121 119 87
137464 -96 95 69 96 95 69 96 95 69 103 101 77 142 137 94 151 147 98
137465 -142 137 94 103 101 77 82 81 62 82 81 62 82 81 62 96 95 69
137466 -131 127 93 142 137 94 103 101 77 46 47 43 96 95 69 118 116 76
137467 -71 71 57 14 14 13 14 14 13 15 15 15 15 15 15 16 16 16
137468 -16 16 16 17 17 17 18 19 18 20 20 20 21 22 21 23 24 24
137469 -25 27 26 27 29 28 30 31 28 30 32 31 31 33 31 31 33 31
137470 -31 33 31 31 33 31 30 31 28 27 29 28 25 27 26 22 24 23
137471 -20 20 20 16 16 16 13 13 13 6 7 7 0 0 0 0 0 0
137472 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137473 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137474 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137475 -0 0 0
137476 -58 59 55 68 70 65 8 8 7 0 0 0 10 10 9 210 208 158
137477 -251 251 187 184 179 149 38 39 37 0 0 0 0 0 0 8 8 7
137478 -103 101 77 149 143 98 149 143 98 118 116 76 40 41 39 25 27 25
137479 -53 55 47 82 81 62 144 139 99 165 161 109 165 161 109 142 137 94
137480 -71 71 57 35 37 36 24 26 24 18 19 18 15 15 15 22 24 23
137481 -63 64 60 46 47 45 33 36 34 26 28 27 20 23 22 17 18 17
137482 -12 15 15 11 13 13 10 12 12 9 11 11 8 10 10 8 10 10
137483 -7 9 9 7 9 9 7 9 9 7 9 9 8 9 9 8 10 10
137484 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137485 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137486 -8 10 10 8 10 10 16 16 16 30 31 28 35 37 36 41 42 42
137487 -47 48 46 55 56 53 58 59 55 63 64 60 65 66 61 65 66 61
137488 -61 61 53 103 101 77 151 147 98 171 165 117 171 165 117 168 163 120
137489 -158 153 112 158 153 112 155 149 109 151 147 98 151 147 98 160 154 106
137490 -151 147 98 149 143 98 142 137 94 149 143 98 149 143 98 149 143 98
137491 -155 149 109 151 147 98 131 127 93 103 101 77 125 122 87 118 116 76
137492 -71 71 57 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17
137493 -17 17 17 17 17 17 18 19 18 19 20 19 20 20 20 21 22 21
137494 -23 24 24 24 26 24 25 27 26 26 28 27 26 28 27 26 28 27
137495 -25 27 26 24 26 24 22 24 23 21 22 21 19 20 19 16 16 16
137496 -14 14 13 8 8 7 1 1 1 0 0 0 0 0 0 0 0 0
137497 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137498 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137499 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137500 -0 0 0
137501 -20 20 20 184 179 149 168 163 120 21 22 21 0 0 0 105 104 92
137502 -177 172 135 145 141 105 71 71 57 0 0 0 0 0 0 0 0 0
137503 -66 65 55 131 127 93 151 147 98 142 137 94 118 116 76 121 119 87
137504 -145 141 105 158 153 112 176 171 126 178 174 128 176 171 126 149 145 103
137505 -96 95 69 31 33 31 21 22 21 16 16 16 14 14 13 18 19 18
137506 -60 60 56 46 47 45 33 36 34 25 27 26 21 22 21 15 18 18
137507 -12 15 15 11 13 13 9 11 11 8 10 10 8 10 10 8 9 9
137508 -7 9 9 7 9 9 7 9 9 7 9 9 7 9 9 8 9 9
137509 -8 9 9 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137510 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137511 -8 10 10 10 12 12 26 28 27 31 33 31 38 39 37 43 45 43
137512 -51 52 50 55 56 53 60 60 56 63 64 60 65 66 61 68 70 65
137513 -63 64 60 96 95 69 158 153 112 178 174 128 188 184 146 194 189 146
137514 -194 189 146 188 184 146 184 181 136 176 171 126 171 165 117 173 167 111
137515 -173 167 111 165 161 109 171 165 117 174 170 121 176 171 126 178 174 128
137516 -178 174 128 174 170 121 160 154 106 149 143 98 149 143 98 125 122 87
137517 -71 71 57 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17
137518 -17 17 17 17 17 17 17 17 17 18 19 18 19 20 19 20 20 20
137519 -21 22 21 21 22 21 21 22 21 22 24 23 21 22 21 21 22 21
137520 -21 22 21 19 20 19 18 19 18 16 16 16 14 14 13 11 11 11
137521 -3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137522 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137523 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137524 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137525 -0 0 0
137526 -0 0 0 105 104 92 197 193 154 110 109 94 9 9 8 36 38 35
137527 -121 119 87 131 127 93 96 95 69 18 19 17 30 31 28 66 65 55
137528 -96 95 69 142 137 94 160 154 106 160 154 106 160 154 106 168 163 120
137529 -184 181 136 194 191 148 197 193 154 197 193 154 194 189 146 168 163 120
137530 -125 122 87 46 47 43 18 19 18 15 15 15 13 13 13 14 14 13
137531 -55 57 54 43 45 43 32 34 33 25 27 26 18 22 22 17 17 17
137532 -12 14 14 10 12 12 9 11 11 8 10 10 8 9 9 7 9 9
137533 -6 8 8 7 9 9 7 9 9 7 9 9 7 9 9 7 9 9
137534 -7 9 9 8 9 9 8 9 9 8 10 10 8 10 10 8 10 10
137535 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137536 -8 10 10 32 34 33 41 42 42 35 37 36 39 40 39 37 39 37
137537 -35 37 36 55 57 54 60 60 56 63 64 60 65 66 61 65 66 61
137538 -61 63 57 115 113 82 168 163 120 194 191 148 204 201 155 210 208 158
137539 -210 208 158 210 208 158 197 193 154 194 189 146 186 182 128 176 171 126
137540 -174 170 121 176 171 126 186 182 128 190 186 136 194 191 148 197 193 154
137541 -197 193 154 188 184 146 181 176 137 174 170 121 165 161 109 142 137 94
137542 -82 81 62 24 26 24 16 16 16 16 16 16 16 16 16 16 16 16
137543 -17 17 17 17 17 17 17 17 17 17 17 17 18 19 18 19 20 19
137544 -19 20 19 19 20 19 20 20 20 19 20 19 19 20 19 18 19 18
137545 -17 17 17 15 15 15 13 13 13 12 12 12 6 7 7 0 0 0
137546 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137547 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137548 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137549 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137550 -0 0 0
137551 -0 0 0 17 18 17 137 133 100 115 113 82 53 55 47 19 20 18
137552 -103 101 77 144 139 99 137 133 100 115 113 82 137 133 100 156 151 111
137553 -158 153 112 164 159 111 171 165 117 174 170 121 178 174 128 194 189 146
137554 -204 201 155 214 212 158 214 212 158 214 212 158 210 208 158 188 184 146
137555 -158 153 112 87 86 72 17 17 17 13 13 13 13 13 13 15 15 15
137556 -55 56 53 43 45 43 32 34 33 24 26 24 17 20 20 16 16 16
137557 -12 14 14 10 12 12 8 10 10 8 10 10 7 9 9 6 8 8
137558 -6 8 8 6 8 8 6 8 8 7 9 9 7 9 9 7 9 9
137559 -7 9 9 7 9 9 7 9 9 7 9 9 8 9 9 8 10 10
137560 -8 10 10 8 10 10 8 10 10 8 10 10 8 10 10 8 10 10
137561 -8 10 10 110 109 94 84 83 72 49 51 48 26 28 27 8 10 10
137562 -8 9 9 51 52 50 58 59 55 63 64 60 63 64 60 63 64 60
137563 -66 65 55 134 131 96 181 176 137 210 208 158 214 212 158 239 239 170
137564 -239 239 170 224 223 159 210 208 158 204 201 155 194 189 146 186 182 128
137565 -186 182 128 184 181 136 194 189 146 204 201 155 210 208 158 210 208 158
137566 -210 208 158 210 208 158 197 193 154 190 186 136 176 171 126 155 149 109
137567 -118 116 76 36 38 35 15 15 15 16 16 16 16 16 16 16 16 16
137568 -16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 17 17 17
137569 -17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 15 15 15
137570 -13 13 13 12 12 12 8 8 7 2 2 2 0 0 0 0 0 0
137571 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137572 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137573 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137574 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137575 -0 0 0
137576 -0 0 0 0 0 0 53 55 47 103 101 77 96 95 69 53 55 47
137577 -103 101 77 158 153 112 177 172 135 184 179 149 188 184 146 197 193 154
137578 -194 189 146 190 186 136 184 181 136 184 181 136 194 189 146 210 208 158
137579 -214 212 158 239 239 170 251 251 187 251 251 187 224 223 159 204 201 155
137580 -177 172 135 121 119 87 30 31 28 13 13 13 12 12 12 39 40 39
137581 -60 60 56 43 45 43 32 34 33 23 25 24 18 19 18 13 16 16
137582 -13 13 13 9 11 11 8 10 10 8 9 9 6 8 8 6 8 8
137583 -6 8 8 6 8 8 6 8 8 6 8 8 6 8 8 7 9 9
137584 -7 9 9 7 9 9 7 9 9 7 9 9 7 9 9 7 9 9
137585 -7 9 9 8 9 9 8 9 9 8 10 10 8 10 10 8 10 10
137586 -14 17 17 197 193 154 158 153 112 55 57 54 7 9 9 7 9 9
137587 -8 10 10 51 52 50 58 59 55 60 60 56 63 64 60 63 64 60
137588 -71 71 57 155 149 109 194 191 148 214 212 158 251 251 187 251 251 187
137589 -251 251 187 251 251 187 239 239 170 210 208 158 197 193 154 190 186 136
137590 -190 186 136 194 189 146 204 201 155 210 208 158 224 223 159 239 239 170
137591 -239 239 170 224 223 159 210 208 158 204 201 155 190 186 136 164 159 111
137592 -125 122 87 40 41 39 15 15 15 15 15 15 15 15 15 15 15 15
137593 -16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
137594 -16 16 16 16 16 16 15 15 15 14 14 13 13 13 13 12 12 12
137595 -8 9 9 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
137596 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137597 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137598 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137599 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137600 -0 0 0
137601 -0 0 0 0 0 0 21 22 20 96 95 69 125 122 87 121 119 87
137602 -144 139 99 177 172 135 197 193 154 210 208 158 214 212 158 214 212 158
137603 -210 208 158 204 201 155 194 191 148 194 189 146 204 201 155 214 212 158
137604 -239 239 170 251 251 187 251 251 187 251 251 187 251 251 187 214 212 158
137605 -188 184 146 145 141 105 53 55 47 12 12 12 15 15 15 63 64 60
137606 -63 64 60 41 42 42 31 33 31 23 24 24 17 18 17 12 15 15
137607 -11 13 13 9 11 11 8 9 9 7 9 9 6 8 8 6 8 8
137608 -6 7 7 6 7 7 6 8 8 6 8 8 6 8 8 6 8 8
137609 -6 8 8 7 9 9 7 9 9 7 9 9 7 9 9 7 9 9
137610 -7 9 9 7 9 9 7 9 9 7 9 9 7 9 9 8 8 7
137611 -43 45 43 251 251 187 156 151 111 8 10 10 7 9 9 7 9 9
137612 -21 22 21 51 52 50 55 56 53 55 57 54 58 59 55 58 59 55
137613 -75 75 61 158 153 112 197 193 154 224 223 159 251 251 187 251 251 187
137614 -251 251 187 251 251 187 251 251 187 214 212 158 204 201 155 194 189 146
137615 -190 186 136 197 193 154 210 208 158 224 223 159 251 251 187 251 251 187
137616 -251 251 187 251 251 187 239 239 170 210 208 158 197 193 154 176 171 126
137617 -125 122 87 36 38 35 14 14 13 14 14 13 15 15 15 15 15 15
137618 -15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
137619 -15 15 15 14 14 13 13 13 13 12 12 12 10 10 9 3 4 4
137620 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137621 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137622 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137623 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137624 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137625 -0 0 0
137626 -0 0 0 0 0 0 7 7 5 71 71 57 131 127 93 158 153 112
137627 -177 172 135 197 193 154 214 212 158 239 239 170 251 251 187 251 251 187
137628 -238 237 168 210 208 158 204 201 155 197 193 154 204 201 155 214 212 158
137629 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 214 212 158
137630 -197 193 154 156 151 111 66 65 55 12 12 12 37 39 37 58 59 55
137631 -58 59 55 41 42 42 31 33 31 22 24 23 17 17 17 12 14 14
137632 -10 12 12 8 10 10 6 8 8 6 8 8 6 7 7 6 7 7
137633 -6 7 7 5 7 7 6 7 7 6 7 7 6 8 8 6 8 8
137634 -6 8 8 6 8 8 6 8 8 7 9 9 7 9 9 7 9 9
137635 -7 9 9 6 8 8 6 8 8 6 8 8 6 8 8 6 8 8
137636 -61 63 57 197 193 154 16 19 19 6 8 8 6 8 8 8 9 9
137637 -41 42 42 47 48 46 51 52 50 51 52 50 55 56 53 55 56 53
137638 -71 71 57 158 153 112 197 193 154 224 223 159 251 251 187 251 251 187
137639 -251 251 187 251 251 187 239 239 170 214 212 158 204 201 155 194 189 146
137640 -190 186 136 197 193 154 210 208 158 239 239 170 251 251 187 251 251 187
137641 -251 251 187 251 251 187 251 251 187 224 223 159 204 201 155 177 172 135
137642 -121 119 87 30 31 28 13 13 13 14 14 13 14 14 13 14 14 13
137643 -14 14 13 14 14 13 15 15 15 15 15 15 14 14 13 13 13 13
137644 -12 12 12 12 12 12 10 10 9 4 5 5 0 0 0 0 0 0
137645 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137646 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137647 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137648 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137649 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137650 -0 0 0
137651 -0 0 0 0 0 0 0 0 0 48 49 45 131 127 93 174 170 121
137652 -194 189 146 210 208 158 239 239 170 251 251 187 251 251 187 251 251 187
137653 -251 251 187 214 212 158 204 201 155 197 193 154 204 201 155 210 208 158
137654 -239 239 170 251 251 187 251 251 187 251 251 187 239 239 170 214 212 158
137655 -194 191 148 156 151 111 71 71 57 19 20 19 51 52 50 51 52 50
137656 -51 52 50 41 42 42 30 32 31 21 22 21 17 17 17 13 13 13
137657 -9 11 11 8 9 9 6 8 8 6 7 7 6 7 7 5 7 7
137658 -5 6 5 5 6 5 5 7 7 5 7 7 6 7 7 6 7 7
137659 -6 8 8 6 8 8 6 8 8 6 7 7 6 7 7 6 7 7
137660 -6 7 7 6 8 8 6 8 8 6 8 8 6 8 8 6 8 8
137661 -55 56 53 43 45 43 6 8 8 6 8 8 6 8 8 47 48 46
137662 -60 60 56 47 48 46 46 47 45 47 48 46 38 39 37 10 12 12
137663 -66 65 55 145 141 105 197 193 154 214 212 158 251 251 187 251 251 187
137664 -251 251 187 251 251 187 224 223 159 210 208 158 194 191 148 184 181 136
137665 -184 181 136 194 189 146 204 201 155 224 223 159 251 251 187 251 251 187
137666 -251 251 187 251 251 187 251 251 187 239 239 170 210 208 158 181 176 137
137667 -115 113 82 21 22 20 13 13 13 13 13 13 13 13 13 13 13 13
137668 -14 14 13 13 13 13 13 13 13 13 13 13 12 12 12 11 11 11
137669 -10 10 9 6 7 7 1 1 1 0 0 0 0 0 0 0 0 0
137670 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137671 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137672 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137673 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137674 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137675 -0 0 0
137676 -0 0 0 0 0 0 2 2 1 66 65 55 144 139 99 178 174 128
137677 -204 201 155 214 212 158 251 251 187 251 251 187 251 251 187 251 251 187
137678 -251 251 187 214 212 158 204 201 155 194 191 148 197 193 154 204 201 155
137679 -214 212 158 239 239 170 239 239 170 239 239 170 214 212 158 210 208 158
137680 -184 181 136 149 145 103 66 65 55 41 42 42 47 48 46 46 47 45
137681 -43 45 43 39 40 39 28 31 30 21 22 21 16 16 16 10 12 12
137682 -8 10 10 6 8 8 6 7 7 6 7 7 5 6 5 5 6 5
137683 -5 6 5 5 6 5 5 6 5 5 6 5 5 7 7 5 7 7
137684 -6 7 7 6 7 7 6 7 7 5 7 7 5 7 7 5 7 7
137685 -5 7 7 6 7 7 6 7 7 6 7 7 6 7 7 6 8 8
137686 -6 8 8 6 8 8 6 7 7 6 7 7 46 47 45 156 151 111
137687 -105 104 92 58 59 55 43 45 43 32 34 33 6 8 8 6 8 8
137688 -49 51 48 125 122 87 181 176 137 204 201 155 214 212 158 239 239 170
137689 -239 239 170 214 212 158 210 208 158 197 193 154 181 176 137 176 171 126
137690 -176 171 126 184 181 136 197 193 154 210 208 158 239 239 170 251 251 187
137691 -251 251 187 251 251 187 251 251 187 251 251 187 210 208 158 177 172 135
137692 -99 98 80 13 13 13 12 12 12 12 12 12 13 13 13 12 12 12
137693 -12 12 12 12 12 12 11 11 11 11 11 11 8 9 9 4 5 5
137694 -1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137695 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137696 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137697 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137698 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137699 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137700 -0 0 0
137701 -0 0 0 0 0 0 1 1 0 61 61 53 142 137 94 181 176 137
137702 -204 201 155 224 223 159 251 251 187 251 251 187 251 251 187 251 251 187
137703 -251 251 187 214 212 158 197 193 154 190 186 136 184 181 136 188 184 146
137704 -197 193 154 204 201 155 210 208 158 210 208 158 204 201 155 194 189 146
137705 -176 171 126 134 131 96 66 65 55 43 45 43 41 42 42 39 40 39
137706 -35 37 36 33 36 34 27 29 28 20 20 20 15 15 15 9 11 11
137707 -8 9 9 6 7 7 5 6 5 5 6 5 4 5 5 4 5 5
137708 -4 5 5 4 5 5 4 5 5 4 5 5 5 6 5 4 5 5
137709 -4 5 5 5 6 5 4 5 5 5 6 5 5 6 5 5 6 5
137710 -5 7 7 5 7 7 5 7 7 5 7 7 5 7 7 5 7 7
137711 -6 7 7 6 7 7 6 7 7 28 31 30 184 179 149 184 179 149
137712 -145 141 105 84 83 72 27 29 28 5 7 7 5 6 5 16 16 16
137713 -43 44 41 96 95 69 158 153 112 188 184 146 204 201 155 210 208 158
137714 -204 201 155 197 193 154 184 179 149 177 172 135 168 163 120 164 159 111
137715 -164 159 111 174 170 121 184 181 136 197 193 154 214 212 158 251 251 187
137716 -251 251 187 251 251 187 251 251 187 251 251 187 210 208 158 177 172 135
137717 -71 71 57 11 11 11 12 12 12 11 11 11 11 11 11 11 11 11
137718 -10 10 9 10 10 9 8 8 7 3 4 4 0 0 0 0 0 0
137719 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137720 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137721 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137722 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137723 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137724 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137725 -0 0 0
137726 -0 0 0 0 0 0 0 0 0 31 33 31 121 119 87 176 171 126
137727 -197 193 154 214 212 158 251 251 187 251 251 187 251 251 187 251 251 187
137728 -239 239 170 210 208 158 194 189 146 178 174 128 174 170 121 176 171 126
137729 -177 172 135 181 176 137 184 179 149 184 179 149 181 176 137 178 174 128
137730 -158 153 112 121 119 87 53 55 47 37 39 37 33 36 34 30 32 31
137731 -27 29 28 25 27 26 24 26 24 19 20 19 13 13 13 8 10 10
137732 -6 8 8 6 7 7 5 6 5 4 5 5 4 5 5 4 5 5
137733 -4 5 5 4 5 5 4 5 5 3 4 4 3 4 4 4 5 5
137734 -4 5 5 4 5 5 4 5 5 4 5 5 4 5 5 4 5 5
137735 -5 6 5 5 6 5 5 6 5 5 6 5 5 6 5 5 6 5
137736 -5 6 5 5 6 5 12 14 14 145 141 105 184 179 149 177 172 135
137737 -90 89 73 21 22 21 5 6 5 5 6 5 4 5 5 37 39 37
137738 -38 39 37 61 61 53 134 131 96 168 163 120 184 181 136 188 184 146
137739 -184 179 149 177 172 135 168 163 120 164 159 111 155 149 109 151 147 98
137740 -151 147 98 164 159 111 176 171 126 184 179 149 210 208 158 239 239 170
137741 -251 251 187 251 251 187 251 251 187 239 239 170 210 208 158 158 153 112
137742 -46 47 43 10 10 9 10 10 9 10 10 9 8 9 9 8 9 9
137743 -6 7 7 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0
137744 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137745 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137746 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137747 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137748 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137749 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137750 -0 0 0
137751 -0 0 0 0 0 0 0 0 0 13 12 7 82 81 62 158 153 112
137752 -188 184 146 210 208 158 239 239 170 251 251 187 251 251 187 251 251 187
137753 -224 223 159 204 201 155 184 181 136 171 165 117 164 159 111 160 154 106
137754 -158 153 112 164 159 111 168 163 120 168 163 120 168 163 120 164 159 111
137755 -142 137 94 96 95 69 43 44 41 27 29 28 26 28 27 23 24 24
137756 -21 22 21 18 19 18 17 17 17 18 19 18 13 13 13 8 8 7
137757 -6 7 7 5 6 5 4 5 5 3 4 4 3 4 4 3 4 4
137758 -3 4 4 3 4 4 3 3 3 3 3 3 3 4 4 3 4 4
137759 -3 4 4 3 4 4 4 5 5 4 5 5 4 5 5 4 5 5
137760 -4 5 5 4 5 5 4 5 5 4 5 5 4 5 5 4 5 5
137761 -4 5 5 4 5 5 4 5 5 4 5 5 4 5 5 4 5 5
137762 -4 5 5 4 5 5 4 5 5 4 5 5 31 33 31 65 66 61
137763 -37 39 37 38 39 37 96 95 69 144 139 99 168 163 120 174 170 121
137764 -168 163 120 164 159 111 155 149 109 149 145 103 149 143 98 142 137 94
137765 -149 143 98 151 147 98 164 159 111 177 172 135 197 193 154 210 208 158
137766 -251 251 187 251 251 187 251 251 187 239 239 170 197 193 154 137 133 100
137767 -24 26 24 8 9 9 8 9 9 8 8 7 6 7 7 2 2 2
137768 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137769 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137770 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137771 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137772 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137773 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137774 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137775 -0 0 0
137776 -0 0 0 0 0 0 0 0 0 0 0 0 46 47 43 125 122 87
137777 -176 171 126 197 193 154 210 208 158 239 239 170 251 251 187 239 239 170
137778 -214 212 158 197 193 154 181 176 137 164 159 111 151 147 98 149 143 98
137779 -149 143 98 149 143 98 149 145 103 155 149 109 160 154 106 149 143 98
137780 -118 116 76 82 81 62 30 31 28 21 22 21 19 20 19 17 17 17
137781 -14 14 13 12 12 12 10 10 9 12 12 12 10 12 12 6 8 8
137782 -4 5 5 3 4 4 3 4 4 3 4 4 3 3 3 3 3 3
137783 -3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 2 3 3
137784 -3 4 4 3 4 4 3 4 4 3 4 4 3 4 4 4 5 5
137785 -4 5 5 3 4 4 3 4 4 3 4 4 3 4 4 3 4 4
137786 -4 5 5 4 5 5 4 5 5 4 5 5 4 5 5 4 5 5
137787 -4 5 5 3 4 4 3 4 4 23 24 24 110 109 94 72 73 67
137788 -39 40 39 22 24 23 46 47 43 103 101 77 142 137 94 155 149 109
137789 -160 154 106 155 149 109 149 143 98 142 137 94 142 137 94 142 137 94
137790 -142 137 94 149 143 98 155 149 109 176 171 126 184 179 149 210 208 158
137791 -239 239 170 251 251 187 251 251 187 214 212 158 184 179 149 105 104 92
137792 -10 10 9 6 7 7 3 4 4 1 1 1 0 0 0 0 0 0
137793 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137794 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137795 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137796 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137797 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137798 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137799 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137800 -0 0 0
137801 -0 0 0 0 0 0 0 0 0 0 0 0 12 12 9 82 81 62
137802 -149 145 103 181 176 137 197 193 154 210 208 158 214 212 158 214 212 158
137803 -210 208 158 197 193 154 177 172 135 158 153 112 149 143 98 142 137 94
137804 -142 137 94 142 137 94 149 143 98 151 147 98 151 147 98 131 127 93
137805 -103 101 77 71 71 57 22 24 23 15 15 15 13 13 13 11 11 11
137806 -8 9 9 6 7 7 6 7 7 4 5 5 8 9 9 6 7 7
137807 -4 5 5 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2
137808 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3
137809 -2 3 3 2 3 3 2 3 3 3 4 4 3 4 4 3 4 4
137810 -3 4 4 3 4 4 3 3 3 3 4 4 3 4 4 3 4 4
137811 -3 4 4 3 4 4 3 4 4 3 4 4 3 4 4 3 4 4
137812 -3 4 4 3 4 4 21 22 21 145 141 105 145 141 105 72 73 67
137813 -17 18 17 3 4 4 21 22 20 66 65 55 118 116 76 142 137 94
137814 -149 143 98 151 147 98 149 143 98 142 137 94 142 137 94 142 137 94
137815 -142 137 94 149 143 98 155 149 109 168 163 120 184 179 149 210 208 158
137816 -239 239 170 251 251 187 251 251 187 210 208 158 177 172 135 71 71 57
137817 -3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137818 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137819 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137820 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137821 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137822 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137823 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137824 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137825 -0 0 0
137826 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 38 35
137827 -115 113 82 158 153 112 181 176 137 197 193 154 204 201 155 210 208 158
137828 -204 201 155 188 184 146 177 172 135 164 159 111 149 145 103 142 137 94
137829 -142 137 94 142 137 94 149 143 98 151 147 98 149 143 98 125 122 87
137830 -96 95 69 61 61 53 16 17 12 8 9 9 8 8 7 6 7 7
137831 -4 5 5 3 4 4 3 3 3 3 3 3 3 3 3 5 6 5
137832 -3 4 4 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2
137833 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2
137834 -2 2 2 2 2 2 2 3 3 2 3 3 2 3 3 2 3 3
137835 -3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
137836 -3 3 3 2 3 3 2 3 3 3 4 4 3 4 4 3 4 4
137837 -3 4 4 3 4 4 3 4 4 8 9 9 8 8 7 3 3 3
137838 -3 3 3 3 3 3 9 9 8 36 38 35 82 81 62 118 116 76
137839 -142 137 94 151 147 98 151 147 98 151 147 98 149 143 98 149 143 98
137840 -149 143 98 151 147 98 160 154 106 176 171 126 188 184 146 210 208 158
137841 -239 239 170 251 251 187 239 239 170 210 208 158 156 151 111 31 33 31
137842 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137843 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137844 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137845 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137846 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137847 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137848 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137849 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137850 -0 0 0
137851 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 5
137852 -66 65 55 125 122 87 158 153 112 181 176 137 194 189 146 197 193 154
137853 -197 193 154 184 179 149 177 172 135 168 163 120 156 151 111 151 147 98
137854 -151 147 98 151 147 98 151 147 98 161 156 96 149 143 98 118 116 76
137855 -82 81 62 53 55 47 12 12 9 4 5 5 3 4 4 3 3 3
137856 -3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 2 2
137857 -3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
137858 -1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 2
137859 -1 2 2 1 2 2 1 2 2 2 2 2 2 2 2 2 3 3
137860 -2 3 3 2 3 3 2 3 3 2 3 3 2 2 2 2 2 2
137861 -2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 2 3 3
137862 -2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 3 3 3
137863 -3 3 3 3 3 3 72 73 67 61 61 53 53 55 47 96 95 69
137864 -131 127 93 151 147 98 161 156 96 161 156 96 151 147 98 151 147 98
137865 -161 156 96 160 154 106 164 159 111 177 172 135 197 193 154 210 208 158
137866 -239 239 170 251 251 187 224 223 159 197 193 154 131 127 93 9 9 8
137867 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137868 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137869 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137870 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137871 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137872 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137873 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137874 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137875 -0 0 0
137876 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137877 -24 26 24 82 81 62 131 127 93 164 159 111 178 174 128 188 184 146
137878 -188 184 146 188 184 146 181 176 137 176 171 126 168 163 120 164 159 111
137879 -160 154 106 160 154 106 160 154 106 160 154 106 151 147 98 125 122 87
137880 -82 81 62 61 61 53 12 12 9 3 3 3 3 3 3 2 2 2
137881 -2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
137882 -0 0 0 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1
137883 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137884 -1 1 1 1 1 1 1 2 2 1 2 2 1 2 2 1 2 2
137885 -1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
137886 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
137887 -2 3 3 2 3 3 2 3 3 2 3 3 2 3 3 2 3 3
137888 -2 3 3 30 32 31 72 73 67 31 33 31 36 38 35 82 81 62
137889 -118 116 76 149 143 98 161 156 96 161 156 96 161 156 96 160 154 106
137890 -165 161 109 165 161 109 176 171 126 188 184 146 204 201 155 214 212 158
137891 -239 239 170 239 239 170 214 212 158 184 179 149 82 81 62 0 0 0
137892 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137893 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137894 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137895 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137896 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137897 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137898 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137899 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137900 -0 0 0
137901 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137902 -2 2 2 43 44 41 96 95 69 131 127 93 160 154 106 176 171 126
137903 -184 181 136 184 181 136 184 181 136 181 176 137 178 174 128 174 170 121
137904 -171 165 117 173 167 111 173 167 111 173 167 111 160 154 106 131 127 93
137905 -96 95 69 66 65 55 16 17 12 2 2 2 1 1 1 1 1 1
137906 -1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
137907 -0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
137908 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137909 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137910 -1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 2 2 2
137911 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
137912 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
137913 -2 2 2 2 2 2 2 2 2 10 9 6 30 31 28 71 71 57
137914 -118 116 76 149 143 98 165 161 109 165 161 109 165 161 109 173 167 111
137915 -173 167 111 176 171 126 184 181 136 197 193 154 210 208 158 224 223 159
137916 -251 251 187 239 239 170 210 208 158 168 163 120 40 41 39 0 0 0
137917 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137918 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137919 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137920 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137921 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137922 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137923 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137924 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137925 -0 0 0
137926 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137927 -0 0 0 13 12 7 61 61 53 96 95 69 131 127 93 160 154 106
137928 -176 171 126 184 181 136 184 181 136 188 184 146 184 181 136 184 181 136
137929 -184 181 136 186 182 128 186 182 128 178 174 128 174 170 121 149 145 103
137930 -118 116 76 82 81 62 21 22 20 1 1 1 1 1 1 0 0 0
137931 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137932 -0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
137933 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137934 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137935 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2
137936 -1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 2 2 2
137937 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
137938 -2 2 2 2 2 2 2 2 2 3 3 3 30 31 28 66 65 55
137939 -118 116 76 149 143 98 165 161 109 173 167 111 173 167 111 174 170 121
137940 -186 182 128 190 186 136 197 193 154 210 208 158 224 223 159 251 251 187
137941 -251 251 187 239 239 170 197 193 154 137 133 100 12 12 9 0 0 0
137942 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137943 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137944 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137945 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137946 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137947 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137948 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137949 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137950 -0 0 0
137951 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137952 -0 0 0 0 0 0 30 31 28 71 71 57 103 101 77 134 131 96
137953 -164 159 111 176 171 126 184 181 136 188 184 146 194 189 146 197 193 154
137954 -197 193 154 197 193 154 194 191 148 194 189 146 190 186 136 176 171 126
137955 -145 141 105 103 101 77 40 41 39 0 0 0 0 0 0 0 0 0
137956 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137957 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137958 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137959 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137960 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137961 -1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 2
137962 -1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2
137963 -1 2 2 1 2 2 1 2 2 1 2 2 30 31 28 71 71 57
137964 -118 116 76 160 154 106 173 167 111 178 174 128 186 182 128 190 186 136
137965 -194 191 148 204 201 155 210 208 158 224 223 159 251 251 187 251 251 187
137966 -251 251 187 214 212 158 184 179 149 84 83 72 0 0 0 0 0 0
137967 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137968 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137969 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137970 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137971 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137972 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137973 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137974 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137975 -0 0 0
137976 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137977 -0 0 0 0 0 0 5 5 3 43 44 41 82 81 62 103 101 77
137978 -142 137 94 165 161 109 178 174 128 190 186 136 197 193 154 204 201 155
137979 -210 208 158 210 208 158 210 208 158 210 208 158 210 208 158 197 193 154
137980 -177 172 135 145 141 105 79 78 62 5 4 3 0 0 0 0 0 0
137981 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137982 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137983 -0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1
137984 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137985 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137986 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137987 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
137988 -1 1 1 1 1 1 1 2 2 1 2 2 30 31 28 82 81 62
137989 -142 137 94 165 161 109 178 174 128 190 186 136 194 191 148 204 201 155
137990 -210 208 158 214 212 158 239 239 170 251 251 187 251 251 187 251 251 187
137991 -251 251 187 210 208 158 168 163 120 36 38 35 0 0 0 0 0 0
137992 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137993 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137994 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137995 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137996 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137997 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137998 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
137999 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138000 -0 0 0
138001 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138002 -0 0 0 0 0 0 0 0 0 16 17 12 53 55 47 82 81 62
138003 -118 116 76 151 147 98 171 165 117 184 181 136 194 191 148 210 208 158
138004 -214 212 158 224 223 159 239 239 170 239 239 170 224 223 159 214 212 158
138005 -197 193 154 176 171 126 115 113 82 24 26 24 0 0 0 0 0 0
138006 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138007 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138008 -0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
138009 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138010 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138011 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138012 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138013 -1 1 1 1 1 1 1 1 1 1 1 1 40 41 39 103 101 77
138014 -151 147 98 176 171 126 190 186 136 197 193 154 210 208 158 214 212 158
138015 -239 239 170 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
138016 -239 239 170 197 193 154 110 109 94 3 4 3 0 0 0 0 0 0
138017 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138018 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138019 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138020 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138021 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138022 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138023 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138024 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138025 -0 0 0
138026 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138027 -0 0 0 0 0 0 0 0 0 0 0 0 30 31 28 66 65 55
138028 -96 95 69 125 122 87 160 154 106 178 174 128 194 189 146 204 201 155
138029 -214 212 158 239 239 170 251 251 187 251 251 187 251 251 187 239 239 170
138030 -210 208 158 188 184 146 149 145 103 61 61 53 0 0 0 0 0 0
138031 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138032 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138033 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138034 -0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138035 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138036 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138037 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138038 -1 1 1 1 1 1 1 1 1 1 1 1 61 61 53 131 127 93
138039 -164 159 111 184 181 136 197 193 154 210 208 158 224 223 159 251 251 187
138040 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 251 251 187
138041 -210 208 158 168 163 120 43 44 41 0 0 0 0 0 0 0 0 0
138042 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138043 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138044 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138045 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138046 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138047 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138048 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138049 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138050 -0 0 0
138051 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138052 -0 0 0 0 0 0 0 0 0 0 0 0 4 3 2 36 38 35
138053 -71 71 57 96 95 69 142 137 94 165 161 109 184 181 136 197 193 154
138054 -210 208 158 239 239 170 251 251 187 251 251 187 251 251 187 251 251 187
138055 -214 212 158 197 193 154 168 163 120 103 101 77 7 7 5 0 0 0
138056 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138057 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138058 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138059 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
138060 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138061 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138062 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138063 -1 1 1 0 0 0 0 0 0 0 0 0 82 81 62 142 137 94
138064 -174 170 121 194 189 146 210 208 158 224 223 159 251 251 187 251 251 187
138065 -251 251 187 251 251 187 251 251 187 251 251 187 251 251 187 224 223 159
138066 -184 179 149 99 98 80 3 3 3 0 0 0 0 0 0 0 0 0
138067 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138068 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138069 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138070 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138071 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138072 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138073 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138074 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138075 -0 0 0
138076 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138077 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 5
138078 -43 44 41 82 81 62 118 116 76 142 137 94 171 165 117 190 186 136
138079 -204 201 155 224 223 159 251 251 187 251 251 187 251 251 187 251 251 187
138080 -214 212 158 197 193 154 174 170 121 125 122 87 30 31 28 0 0 0
138081 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138082 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138083 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138084 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138085 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
138086 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
138087 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138088 -0 0 0 0 0 0 0 0 0 3 4 3 82 81 62 149 143 98
138089 -176 171 126 194 191 148 210 208 158 239 239 170 251 251 187 251 251 187
138090 -251 251 187 251 251 187 251 251 187 251 251 187 239 239 170 204 201 155
138091 -145 141 105 30 31 28 0 0 0 0 0 0 0 0 0 0 0 0
138092 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138093 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138094 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138095 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138096 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138097 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138098 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138099 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138100 -0 0 0
138101 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138102 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138103 -10 9 6 46 47 43 82 81 62 118 116 76 149 143 98 174 170 121
138104 -194 189 146 210 208 158 224 223 159 251 251 187 251 251 187 224 223 159
138105 -210 208 158 194 191 148 174 170 121 134 131 96 53 55 47 0 0 0
138106 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138107 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138108 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138109 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138110 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138111 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138112 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138113 -0 0 0 0 0 0 0 0 0 7 7 5 96 95 69 149 143 98
138114 -176 171 126 194 191 148 210 208 158 239 239 170 251 251 187 251 251 187
138115 -251 251 187 251 251 187 251 251 187 239 239 170 210 208 158 177 172 135
138116 -75 75 61 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138117 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138118 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138119 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138120 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138121 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138122 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138123 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138124 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138125 -0 0 0
138126 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138128 -0 0 0 10 9 6 46 47 43 82 81 62 118 116 76 149 143 98
138129 -176 171 126 194 191 148 210 208 158 214 212 158 214 212 158 210 208 158
138130 -197 193 154 184 181 136 164 159 111 131 127 93 53 55 47 0 0 0
138131 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138132 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138133 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138134 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138135 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138136 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138137 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138138 -0 0 0 0 0 0 0 0 0 7 7 5 96 95 69 149 143 98
138139 -174 170 121 194 189 146 204 201 155 214 212 158 239 239 170 251 251 187
138140 -251 251 187 251 251 187 239 239 170 210 208 158 184 179 149 110 109 94
138141 -12 12 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138142 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138143 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138144 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138145 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138146 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138147 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138148 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138149 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138150 -0 0 0
138151 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138152 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138153 -0 0 0 0 0 0 10 9 6 43 44 41 82 81 62 115 113 82
138154 -144 139 99 168 163 120 188 184 146 197 193 154 197 193 154 194 189 146
138155 -184 181 136 174 170 121 151 147 98 118 116 76 36 38 35 0 0 0
138156 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138157 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138158 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138159 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138160 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138161 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138162 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138163 -0 0 0 0 0 0 0 0 0 4 3 2 82 81 62 142 137 94
138164 -171 165 117 186 182 128 194 191 148 210 208 158 214 212 158 224 223 159
138165 -239 239 170 224 223 159 210 208 158 184 179 149 137 133 100 36 38 35
138166 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138167 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138168 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138169 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138171 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138172 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138173 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138174 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138175 -0 0 0
138176 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138177 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138178 -0 0 0 0 0 0 0 0 0 7 7 5 36 38 35 71 71 57
138179 -103 101 77 131 127 93 155 149 109 168 163 120 168 163 120 168 163 120
138180 -164 159 111 149 143 98 125 122 87 82 81 62 13 12 7 0 0 0
138181 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138182 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138183 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138184 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138185 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138186 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138187 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138188 -0 0 0 0 0 0 0 0 0 0 0 0 61 61 53 125 122 87
138189 -160 154 106 174 170 121 184 181 136 194 189 146 204 201 155 210 208 158
138190 -210 208 158 204 201 155 184 179 149 145 141 105 61 61 53 0 0 0
138191 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138192 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138193 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138194 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138195 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138196 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138197 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138198 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138199 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138200 -0 0 0
138201 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138202 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138203 -0 0 0 0 0 0 0 0 0 0 0 0 3 3 2 30 31 28
138204 -61 61 53 82 81 62 103 101 77 121 119 87 125 122 87 125 122 87
138205 -118 116 76 103 101 77 79 78 62 24 26 24 0 0 0 0 0 0
138206 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138207 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138208 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138209 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138210 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138211 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138212 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138213 -0 0 0 0 0 0 0 0 0 0 0 0 25 27 25 96 95 69
138214 -142 137 94 160 154 106 171 165 117 178 174 128 184 181 136 184 181 136
138215 -181 176 137 177 172 135 145 141 105 75 75 61 5 5 3 0 0 0
138216 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138217 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138218 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138219 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138220 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138221 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138222 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138223 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138224 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138225 -0 0 0
138226 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138227 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138228 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138229 -16 17 12 40 41 39 61 61 53 71 71 57 71 71 57 71 71 57
138230 -66 65 55 43 44 41 12 12 9 0 0 0 0 0 0 0 0 0
138231 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138232 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138233 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138234 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138235 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138236 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138237 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138238 -0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 46 47 43
138239 -96 95 69 125 122 87 142 137 94 149 145 103 155 149 109 155 149 109
138240 -145 141 105 121 119 87 66 65 55 7 7 5 0 0 0 0 0 0
138241 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138242 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138243 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138244 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138245 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138246 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138247 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138248 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138249 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138250 -0 0 0
138251 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138252 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138253 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138254 -0 0 0 1 1 1 16 17 12 24 26 24 25 27 25 19 20 18
138255 -7 7 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138256 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138257 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138258 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138259 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138260 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138261 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138262 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138263 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1
138264 -25 27 25 61 61 53 82 81 62 96 95 69 96 95 69 82 81 62
138265 -61 61 53 25 27 25 2 2 1 0 0 0 0 0 0 0 0 0
138266 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138267 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138268 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138269 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138270 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138271 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138272 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138273 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138274 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138275 -0 0 0
138276 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138277 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138278 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138279 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138280 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138281 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138282 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138283 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138284 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138285 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138286 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138287 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138288 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138289 -0 0 0 0 0 0 5 6 5 13 12 7 10 9 6 3 4 3
138290 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138291 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138292 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138293 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138294 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138295 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138296 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138297 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138298 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138299 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138300 -0 0 0
138301 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138302 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138303 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138304 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138305 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138306 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138307 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138308 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138309 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138310 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138311 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138312 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138313 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138314 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138315 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138316 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138317 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138318 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138319 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138320 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138321 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138322 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138323 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138324 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
138325 -0 0 0
138326 + 0 0 0 0 0 0 0 0 0 0 0 0
138327 + 0 0 0 0 0 0 0 0 0 0 0 0
138328 + 0 0 0 0 0 0 0 0 0 0 0 0
138329 + 0 0 0 0 0 0 0 0 0 0 0 0
138330 + 0 0 0 0 0 0 0 0 0 0 0 0
138331 + 0 0 0 0 0 0 0 0 0 0 0 0
138332 + 0 0 0 0 0 0 0 0 0 0 0 0
138333 + 0 0 0 0 0 0 0 0 0 0 0 0
138334 + 0 0 0 0 0 0 0 0 0 0 0 0
138335 + 6 6 6 6 6 6 10 10 10 10 10 10
138336 + 10 10 10 6 6 6 6 6 6 6 6 6
138337 + 0 0 0 0 0 0 0 0 0 0 0 0
138338 + 0 0 0 0 0 0 0 0 0 0 0 0
138339 + 0 0 0 0 0 0 0 0 0 0 0 0
138340 + 0 0 0 0 0 0 0 0 0 0 0 0
138341 + 0 0 0 0 0 0 0 0 0 0 0 0
138342 + 0 0 0 0 0 0 0 0 0 0 0 0
138343 + 0 0 0 0 0 0 0 0 0 0 0 0
138344 + 0 0 0 0 0 0 0 0 0 0 0 0
138345 + 0 0 0 0 0 0 0 0 0 0 0 0
138346 + 0 0 0 0 0 0 0 0 0 0 0 0
138347 + 0 0 0 0 0 0 0 0 0 0 0 0
138348 + 0 0 0 0 0 0 0 0 0 0 0 0
138349 + 0 0 0 0 0 0 0 0 0 0 0 0
138350 + 0 0 0 0 0 0 0 0 0 0 0 0
138351 + 0 0 0 0 0 0 0 0 0 0 0 0
138352 + 0 0 0 0 0 0 0 0 0 0 0 0
138353 + 0 0 0 0 0 0 0 0 0 0 0 0
138354 + 0 0 0 6 6 6 10 10 10 14 14 14
138355 + 22 22 22 26 26 26 30 30 30 34 34 34
138356 + 30 30 30 30 30 30 26 26 26 18 18 18
138357 + 14 14 14 10 10 10 6 6 6 0 0 0
138358 + 0 0 0 0 0 0 0 0 0 0 0 0
138359 + 0 0 0 0 0 0 0 0 0 0 0 0
138360 + 0 0 0 0 0 0 0 0 0 0 0 0
138361 + 0 0 0 0 0 0 0 0 0 0 0 0
138362 + 0 0 0 0 0 0 0 0 0 0 0 0
138363 + 0 0 0 0 0 0 0 0 0 0 0 0
138364 + 0 0 0 0 0 0 0 0 0 0 0 0
138365 + 0 0 0 0 0 0 0 0 0 0 0 0
138366 + 0 0 0 0 0 0 0 0 0 0 0 0
138367 + 0 0 0 0 0 1 0 0 1 0 0 0
138368 + 0 0 0 0 0 0 0 0 0 0 0 0
138369 + 0 0 0 0 0 0 0 0 0 0 0 0
138370 + 0 0 0 0 0 0 0 0 0 0 0 0
138371 + 0 0 0 0 0 0 0 0 0 0 0 0
138372 + 0 0 0 0 0 0 0 0 0 0 0 0
138373 + 0 0 0 0 0 0 0 0 0 0 0 0
138374 + 6 6 6 14 14 14 26 26 26 42 42 42
138375 + 54 54 54 66 66 66 78 78 78 78 78 78
138376 + 78 78 78 74 74 74 66 66 66 54 54 54
138377 + 42 42 42 26 26 26 18 18 18 10 10 10
138378 + 6 6 6 0 0 0 0 0 0 0 0 0
138379 + 0 0 0 0 0 0 0 0 0 0 0 0
138380 + 0 0 0 0 0 0 0 0 0 0 0 0
138381 + 0 0 0 0 0 0 0 0 0 0 0 0
138382 + 0 0 0 0 0 0 0 0 0 0 0 0
138383 + 0 0 0 0 0 0 0 0 0 0 0 0
138384 + 0 0 0 0 0 0 0 0 0 0 0 0
138385 + 0 0 0 0 0 0 0 0 0 0 0 0
138386 + 0 0 0 0 0 0 0 0 0 0 0 0
138387 + 0 0 1 0 0 0 0 0 0 0 0 0
138388 + 0 0 0 0 0 0 0 0 0 0 0 0
138389 + 0 0 0 0 0 0 0 0 0 0 0 0
138390 + 0 0 0 0 0 0 0 0 0 0 0 0
138391 + 0 0 0 0 0 0 0 0 0 0 0 0
138392 + 0 0 0 0 0 0 0 0 0 0 0 0
138393 + 0 0 0 0 0 0 0 0 0 10 10 10
138394 + 22 22 22 42 42 42 66 66 66 86 86 86
138395 + 66 66 66 38 38 38 38 38 38 22 22 22
138396 + 26 26 26 34 34 34 54 54 54 66 66 66
138397 + 86 86 86 70 70 70 46 46 46 26 26 26
138398 + 14 14 14 6 6 6 0 0 0 0 0 0
138399 + 0 0 0 0 0 0 0 0 0 0 0 0
138400 + 0 0 0 0 0 0 0 0 0 0 0 0
138401 + 0 0 0 0 0 0 0 0 0 0 0 0
138402 + 0 0 0 0 0 0 0 0 0 0 0 0
138403 + 0 0 0 0 0 0 0 0 0 0 0 0
138404 + 0 0 0 0 0 0 0 0 0 0 0 0
138405 + 0 0 0 0 0 0 0 0 0 0 0 0
138406 + 0 0 0 0 0 0 0 0 0 0 0 0
138407 + 0 0 1 0 0 1 0 0 1 0 0 0
138408 + 0 0 0 0 0 0 0 0 0 0 0 0
138409 + 0 0 0 0 0 0 0 0 0 0 0 0
138410 + 0 0 0 0 0 0 0 0 0 0 0 0
138411 + 0 0 0 0 0 0 0 0 0 0 0 0
138412 + 0 0 0 0 0 0 0 0 0 0 0 0
138413 + 0 0 0 0 0 0 10 10 10 26 26 26
138414 + 50 50 50 82 82 82 58 58 58 6 6 6
138415 + 2 2 6 2 2 6 2 2 6 2 2 6
138416 + 2 2 6 2 2 6 2 2 6 2 2 6
138417 + 6 6 6 54 54 54 86 86 86 66 66 66
138418 + 38 38 38 18 18 18 6 6 6 0 0 0
138419 + 0 0 0 0 0 0 0 0 0 0 0 0
138420 + 0 0 0 0 0 0 0 0 0 0 0 0
138421 + 0 0 0 0 0 0 0 0 0 0 0 0
138422 + 0 0 0 0 0 0 0 0 0 0 0 0
138423 + 0 0 0 0 0 0 0 0 0 0 0 0
138424 + 0 0 0 0 0 0 0 0 0 0 0 0
138425 + 0 0 0 0 0 0 0 0 0 0 0 0
138426 + 0 0 0 0 0 0 0 0 0 0 0 0
138427 + 0 0 0 0 0 0 0 0 0 0 0 0
138428 + 0 0 0 0 0 0 0 0 0 0 0 0
138429 + 0 0 0 0 0 0 0 0 0 0 0 0
138430 + 0 0 0 0 0 0 0 0 0 0 0 0
138431 + 0 0 0 0 0 0 0 0 0 0 0 0
138432 + 0 0 0 0 0 0 0 0 0 0 0 0
138433 + 0 0 0 6 6 6 22 22 22 50 50 50
138434 + 78 78 78 34 34 34 2 2 6 2 2 6
138435 + 2 2 6 2 2 6 2 2 6 2 2 6
138436 + 2 2 6 2 2 6 2 2 6 2 2 6
138437 + 2 2 6 2 2 6 6 6 6 70 70 70
138438 + 78 78 78 46 46 46 22 22 22 6 6 6
138439 + 0 0 0 0 0 0 0 0 0 0 0 0
138440 + 0 0 0 0 0 0 0 0 0 0 0 0
138441 + 0 0 0 0 0 0 0 0 0 0 0 0
138442 + 0 0 0 0 0 0 0 0 0 0 0 0
138443 + 0 0 0 0 0 0 0 0 0 0 0 0
138444 + 0 0 0 0 0 0 0 0 0 0 0 0
138445 + 0 0 0 0 0 0 0 0 0 0 0 0
138446 + 0 0 0 0 0 0 0 0 0 0 0 0
138447 + 0 0 1 0 0 1 0 0 1 0 0 0
138448 + 0 0 0 0 0 0 0 0 0 0 0 0
138449 + 0 0 0 0 0 0 0 0 0 0 0 0
138450 + 0 0 0 0 0 0 0 0 0 0 0 0
138451 + 0 0 0 0 0 0 0 0 0 0 0 0
138452 + 0 0 0 0 0 0 0 0 0 0 0 0
138453 + 6 6 6 18 18 18 42 42 42 82 82 82
138454 + 26 26 26 2 2 6 2 2 6 2 2 6
138455 + 2 2 6 2 2 6 2 2 6 2 2 6
138456 + 2 2 6 2 2 6 2 2 6 14 14 14
138457 + 46 46 46 34 34 34 6 6 6 2 2 6
138458 + 42 42 42 78 78 78 42 42 42 18 18 18
138459 + 6 6 6 0 0 0 0 0 0 0 0 0
138460 + 0 0 0 0 0 0 0 0 0 0 0 0
138461 + 0 0 0 0 0 0 0 0 0 0 0 0
138462 + 0 0 0 0 0 0 0 0 0 0 0 0
138463 + 0 0 0 0 0 0 0 0 0 0 0 0
138464 + 0 0 0 0 0 0 0 0 0 0 0 0
138465 + 0 0 0 0 0 0 0 0 0 0 0 0
138466 + 0 0 0 0 0 0 0 0 0 0 0 0
138467 + 0 0 1 0 0 0 0 0 1 0 0 0
138468 + 0 0 0 0 0 0 0 0 0 0 0 0
138469 + 0 0 0 0 0 0 0 0 0 0 0 0
138470 + 0 0 0 0 0 0 0 0 0 0 0 0
138471 + 0 0 0 0 0 0 0 0 0 0 0 0
138472 + 0 0 0 0 0 0 0 0 0 0 0 0
138473 + 10 10 10 30 30 30 66 66 66 58 58 58
138474 + 2 2 6 2 2 6 2 2 6 2 2 6
138475 + 2 2 6 2 2 6 2 2 6 2 2 6
138476 + 2 2 6 2 2 6 2 2 6 26 26 26
138477 + 86 86 86 101 101 101 46 46 46 10 10 10
138478 + 2 2 6 58 58 58 70 70 70 34 34 34
138479 + 10 10 10 0 0 0 0 0 0 0 0 0
138480 + 0 0 0 0 0 0 0 0 0 0 0 0
138481 + 0 0 0 0 0 0 0 0 0 0 0 0
138482 + 0 0 0 0 0 0 0 0 0 0 0 0
138483 + 0 0 0 0 0 0 0 0 0 0 0 0
138484 + 0 0 0 0 0 0 0 0 0 0 0 0
138485 + 0 0 0 0 0 0 0 0 0 0 0 0
138486 + 0 0 0 0 0 0 0 0 0 0 0 0
138487 + 0 0 1 0 0 1 0 0 1 0 0 0
138488 + 0 0 0 0 0 0 0 0 0 0 0 0
138489 + 0 0 0 0 0 0 0 0 0 0 0 0
138490 + 0 0 0 0 0 0 0 0 0 0 0 0
138491 + 0 0 0 0 0 0 0 0 0 0 0 0
138492 + 0 0 0 0 0 0 0 0 0 0 0 0
138493 + 14 14 14 42 42 42 86 86 86 10 10 10
138494 + 2 2 6 2 2 6 2 2 6 2 2 6
138495 + 2 2 6 2 2 6 2 2 6 2 2 6
138496 + 2 2 6 2 2 6 2 2 6 30 30 30
138497 + 94 94 94 94 94 94 58 58 58 26 26 26
138498 + 2 2 6 6 6 6 78 78 78 54 54 54
138499 + 22 22 22 6 6 6 0 0 0 0 0 0
138500 + 0 0 0 0 0 0 0 0 0 0 0 0
138501 + 0 0 0 0 0 0 0 0 0 0 0 0
138502 + 0 0 0 0 0 0 0 0 0 0 0 0
138503 + 0 0 0 0 0 0 0 0 0 0 0 0
138504 + 0 0 0 0 0 0 0 0 0 0 0 0
138505 + 0 0 0 0 0 0 0 0 0 0 0 0
138506 + 0 0 0 0 0 0 0 0 0 0 0 0
138507 + 0 0 0 0 0 0 0 0 0 0 0 0
138508 + 0 0 0 0 0 0 0 0 0 0 0 0
138509 + 0 0 0 0 0 0 0 0 0 0 0 0
138510 + 0 0 0 0 0 0 0 0 0 0 0 0
138511 + 0 0 0 0 0 0 0 0 0 0 0 0
138512 + 0 0 0 0 0 0 0 0 0 6 6 6
138513 + 22 22 22 62 62 62 62 62 62 2 2 6
138514 + 2 2 6 2 2 6 2 2 6 2 2 6
138515 + 2 2 6 2 2 6 2 2 6 2 2 6
138516 + 2 2 6 2 2 6 2 2 6 26 26 26
138517 + 54 54 54 38 38 38 18 18 18 10 10 10
138518 + 2 2 6 2 2 6 34 34 34 82 82 82
138519 + 38 38 38 14 14 14 0 0 0 0 0 0
138520 + 0 0 0 0 0 0 0 0 0 0 0 0
138521 + 0 0 0 0 0 0 0 0 0 0 0 0
138522 + 0 0 0 0 0 0 0 0 0 0 0 0
138523 + 0 0 0 0 0 0 0 0 0 0 0 0
138524 + 0 0 0 0 0 0 0 0 0 0 0 0
138525 + 0 0 0 0 0 0 0 0 0 0 0 0
138526 + 0 0 0 0 0 0 0 0 0 0 0 0
138527 + 0 0 0 0 0 1 0 0 1 0 0 0
138528 + 0 0 0 0 0 0 0 0 0 0 0 0
138529 + 0 0 0 0 0 0 0 0 0 0 0 0
138530 + 0 0 0 0 0 0 0 0 0 0 0 0
138531 + 0 0 0 0 0 0 0 0 0 0 0 0
138532 + 0 0 0 0 0 0 0 0 0 6 6 6
138533 + 30 30 30 78 78 78 30 30 30 2 2 6
138534 + 2 2 6 2 2 6 2 2 6 2 2 6
138535 + 2 2 6 2 2 6 2 2 6 2 2 6
138536 + 2 2 6 2 2 6 2 2 6 10 10 10
138537 + 10 10 10 2 2 6 2 2 6 2 2 6
138538 + 2 2 6 2 2 6 2 2 6 78 78 78
138539 + 50 50 50 18 18 18 6 6 6 0 0 0
138540 + 0 0 0 0 0 0 0 0 0 0 0 0
138541 + 0 0 0 0 0 0 0 0 0 0 0 0
138542 + 0 0 0 0 0 0 0 0 0 0 0 0
138543 + 0 0 0 0 0 0 0 0 0 0 0 0
138544 + 0 0 0 0 0 0 0 0 0 0 0 0
138545 + 0 0 0 0 0 0 0 0 0 0 0 0
138546 + 0 0 0 0 0 0 0 0 0 0 0 0
138547 + 0 0 1 0 0 0 0 0 0 0 0 0
138548 + 0 0 0 0 0 0 0 0 0 0 0 0
138549 + 0 0 0 0 0 0 0 0 0 0 0 0
138550 + 0 0 0 0 0 0 0 0 0 0 0 0
138551 + 0 0 0 0 0 0 0 0 0 0 0 0
138552 + 0 0 0 0 0 0 0 0 0 10 10 10
138553 + 38 38 38 86 86 86 14 14 14 2 2 6
138554 + 2 2 6 2 2 6 2 2 6 2 2 6
138555 + 2 2 6 2 2 6 2 2 6 2 2 6
138556 + 2 2 6 2 2 6 2 2 6 2 2 6
138557 + 2 2 6 2 2 6 2 2 6 2 2 6
138558 + 2 2 6 2 2 6 2 2 6 54 54 54
138559 + 66 66 66 26 26 26 6 6 6 0 0 0
138560 + 0 0 0 0 0 0 0 0 0 0 0 0
138561 + 0 0 0 0 0 0 0 0 0 0 0 0
138562 + 0 0 0 0 0 0 0 0 0 0 0 0
138563 + 0 0 0 0 0 0 0 0 0 0 0 0
138564 + 0 0 0 0 0 0 0 0 0 0 0 0
138565 + 0 0 0 0 0 0 0 0 0 0 0 0
138566 + 0 0 0 0 0 0 0 0 0 0 0 0
138567 + 0 0 0 0 0 1 0 0 1 0 0 0
138568 + 0 0 0 0 0 0 0 0 0 0 0 0
138569 + 0 0 0 0 0 0 0 0 0 0 0 0
138570 + 0 0 0 0 0 0 0 0 0 0 0 0
138571 + 0 0 0 0 0 0 0 0 0 0 0 0
138572 + 0 0 0 0 0 0 0 0 0 14 14 14
138573 + 42 42 42 82 82 82 2 2 6 2 2 6
138574 + 2 2 6 6 6 6 10 10 10 2 2 6
138575 + 2 2 6 2 2 6 2 2 6 2 2 6
138576 + 2 2 6 2 2 6 2 2 6 6 6 6
138577 + 14 14 14 10 10 10 2 2 6 2 2 6
138578 + 2 2 6 2 2 6 2 2 6 18 18 18
138579 + 82 82 82 34 34 34 10 10 10 0 0 0
138580 + 0 0 0 0 0 0 0 0 0 0 0 0
138581 + 0 0 0 0 0 0 0 0 0 0 0 0
138582 + 0 0 0 0 0 0 0 0 0 0 0 0
138583 + 0 0 0 0 0 0 0 0 0 0 0 0
138584 + 0 0 0 0 0 0 0 0 0 0 0 0
138585 + 0 0 0 0 0 0 0 0 0 0 0 0
138586 + 0 0 0 0 0 0 0 0 0 0 0 0
138587 + 0 0 1 0 0 0 0 0 0 0 0 0
138588 + 0 0 0 0 0 0 0 0 0 0 0 0
138589 + 0 0 0 0 0 0 0 0 0 0 0 0
138590 + 0 0 0 0 0 0 0 0 0 0 0 0
138591 + 0 0 0 0 0 0 0 0 0 0 0 0
138592 + 0 0 0 0 0 0 0 0 0 14 14 14
138593 + 46 46 46 86 86 86 2 2 6 2 2 6
138594 + 6 6 6 6 6 6 22 22 22 34 34 34
138595 + 6 6 6 2 2 6 2 2 6 2 2 6
138596 + 2 2 6 2 2 6 18 18 18 34 34 34
138597 + 10 10 10 50 50 50 22 22 22 2 2 6
138598 + 2 2 6 2 2 6 2 2 6 10 10 10
138599 + 86 86 86 42 42 42 14 14 14 0 0 0
138600 + 0 0 0 0 0 0 0 0 0 0 0 0
138601 + 0 0 0 0 0 0 0 0 0 0 0 0
138602 + 0 0 0 0 0 0 0 0 0 0 0 0
138603 + 0 0 0 0 0 0 0 0 0 0 0 0
138604 + 0 0 0 0 0 0 0 0 0 0 0 0
138605 + 0 0 0 0 0 0 0 0 0 0 0 0
138606 + 0 0 0 0 0 0 0 0 0 0 0 0
138607 + 0 0 1 0 0 1 0 0 1 0 0 0
138608 + 0 0 0 0 0 0 0 0 0 0 0 0
138609 + 0 0 0 0 0 0 0 0 0 0 0 0
138610 + 0 0 0 0 0 0 0 0 0 0 0 0
138611 + 0 0 0 0 0 0 0 0 0 0 0 0
138612 + 0 0 0 0 0 0 0 0 0 14 14 14
138613 + 46 46 46 86 86 86 2 2 6 2 2 6
138614 + 38 38 38 116 116 116 94 94 94 22 22 22
138615 + 22 22 22 2 2 6 2 2 6 2 2 6
138616 + 14 14 14 86 86 86 138 138 138 162 162 162
138617 +154 154 154 38 38 38 26 26 26 6 6 6
138618 + 2 2 6 2 2 6 2 2 6 2 2 6
138619 + 86 86 86 46 46 46 14 14 14 0 0 0
138620 + 0 0 0 0 0 0 0 0 0 0 0 0
138621 + 0 0 0 0 0 0 0 0 0 0 0 0
138622 + 0 0 0 0 0 0 0 0 0 0 0 0
138623 + 0 0 0 0 0 0 0 0 0 0 0 0
138624 + 0 0 0 0 0 0 0 0 0 0 0 0
138625 + 0 0 0 0 0 0 0 0 0 0 0 0
138626 + 0 0 0 0 0 0 0 0 0 0 0 0
138627 + 0 0 0 0 0 0 0 0 0 0 0 0
138628 + 0 0 0 0 0 0 0 0 0 0 0 0
138629 + 0 0 0 0 0 0 0 0 0 0 0 0
138630 + 0 0 0 0 0 0 0 0 0 0 0 0
138631 + 0 0 0 0 0 0 0 0 0 0 0 0
138632 + 0 0 0 0 0 0 0 0 0 14 14 14
138633 + 46 46 46 86 86 86 2 2 6 14 14 14
138634 +134 134 134 198 198 198 195 195 195 116 116 116
138635 + 10 10 10 2 2 6 2 2 6 6 6 6
138636 +101 98 89 187 187 187 210 210 210 218 218 218
138637 +214 214 214 134 134 134 14 14 14 6 6 6
138638 + 2 2 6 2 2 6 2 2 6 2 2 6
138639 + 86 86 86 50 50 50 18 18 18 6 6 6
138640 + 0 0 0 0 0 0 0 0 0 0 0 0
138641 + 0 0 0 0 0 0 0 0 0 0 0 0
138642 + 0 0 0 0 0 0 0 0 0 0 0 0
138643 + 0 0 0 0 0 0 0 0 0 0 0 0
138644 + 0 0 0 0 0 0 0 0 0 0 0 0
138645 + 0 0 0 0 0 0 0 0 0 0 0 0
138646 + 0 0 0 0 0 0 0 0 1 0 0 0
138647 + 0 0 1 0 0 1 0 0 1 0 0 0
138648 + 0 0 0 0 0 0 0 0 0 0 0 0
138649 + 0 0 0 0 0 0 0 0 0 0 0 0
138650 + 0 0 0 0 0 0 0 0 0 0 0 0
138651 + 0 0 0 0 0 0 0 0 0 0 0 0
138652 + 0 0 0 0 0 0 0 0 0 14 14 14
138653 + 46 46 46 86 86 86 2 2 6 54 54 54
138654 +218 218 218 195 195 195 226 226 226 246 246 246
138655 + 58 58 58 2 2 6 2 2 6 30 30 30
138656 +210 210 210 253 253 253 174 174 174 123 123 123
138657 +221 221 221 234 234 234 74 74 74 2 2 6
138658 + 2 2 6 2 2 6 2 2 6 2 2 6
138659 + 70 70 70 58 58 58 22 22 22 6 6 6
138660 + 0 0 0 0 0 0 0 0 0 0 0 0
138661 + 0 0 0 0 0 0 0 0 0 0 0 0
138662 + 0 0 0 0 0 0 0 0 0 0 0 0
138663 + 0 0 0 0 0 0 0 0 0 0 0 0
138664 + 0 0 0 0 0 0 0 0 0 0 0 0
138665 + 0 0 0 0 0 0 0 0 0 0 0 0
138666 + 0 0 0 0 0 0 0 0 0 0 0 0
138667 + 0 0 0 0 0 0 0 0 0 0 0 0
138668 + 0 0 0 0 0 0 0 0 0 0 0 0
138669 + 0 0 0 0 0 0 0 0 0 0 0 0
138670 + 0 0 0 0 0 0 0 0 0 0 0 0
138671 + 0 0 0 0 0 0 0 0 0 0 0 0
138672 + 0 0 0 0 0 0 0 0 0 14 14 14
138673 + 46 46 46 82 82 82 2 2 6 106 106 106
138674 +170 170 170 26 26 26 86 86 86 226 226 226
138675 +123 123 123 10 10 10 14 14 14 46 46 46
138676 +231 231 231 190 190 190 6 6 6 70 70 70
138677 + 90 90 90 238 238 238 158 158 158 2 2 6
138678 + 2 2 6 2 2 6 2 2 6 2 2 6
138679 + 70 70 70 58 58 58 22 22 22 6 6 6
138680 + 0 0 0 0 0 0 0 0 0 0 0 0
138681 + 0 0 0 0 0 0 0 0 0 0 0 0
138682 + 0 0 0 0 0 0 0 0 0 0 0 0
138683 + 0 0 0 0 0 0 0 0 0 0 0 0
138684 + 0 0 0 0 0 0 0 0 0 0 0 0
138685 + 0 0 0 0 0 0 0 0 0 0 0 0
138686 + 0 0 0 0 0 0 0 0 1 0 0 0
138687 + 0 0 1 0 0 1 0 0 1 0 0 0
138688 + 0 0 0 0 0 0 0 0 0 0 0 0
138689 + 0 0 0 0 0 0 0 0 0 0 0 0
138690 + 0 0 0 0 0 0 0 0 0 0 0 0
138691 + 0 0 0 0 0 0 0 0 0 0 0 0
138692 + 0 0 0 0 0 0 0 0 0 14 14 14
138693 + 42 42 42 86 86 86 6 6 6 116 116 116
138694 +106 106 106 6 6 6 70 70 70 149 149 149
138695 +128 128 128 18 18 18 38 38 38 54 54 54
138696 +221 221 221 106 106 106 2 2 6 14 14 14
138697 + 46 46 46 190 190 190 198 198 198 2 2 6
138698 + 2 2 6 2 2 6 2 2 6 2 2 6
138699 + 74 74 74 62 62 62 22 22 22 6 6 6
138700 + 0 0 0 0 0 0 0 0 0 0 0 0
138701 + 0 0 0 0 0 0 0 0 0 0 0 0
138702 + 0 0 0 0 0 0 0 0 0 0 0 0
138703 + 0 0 0 0 0 0 0 0 0 0 0 0
138704 + 0 0 0 0 0 0 0 0 0 0 0 0
138705 + 0 0 0 0 0 0 0 0 0 0 0 0
138706 + 0 0 0 0 0 0 0 0 1 0 0 0
138707 + 0 0 1 0 0 0 0 0 1 0 0 0
138708 + 0 0 0 0 0 0 0 0 0 0 0 0
138709 + 0 0 0 0 0 0 0 0 0 0 0 0
138710 + 0 0 0 0 0 0 0 0 0 0 0 0
138711 + 0 0 0 0 0 0 0 0 0 0 0 0
138712 + 0 0 0 0 0 0 0 0 0 14 14 14
138713 + 42 42 42 94 94 94 14 14 14 101 101 101
138714 +128 128 128 2 2 6 18 18 18 116 116 116
138715 +118 98 46 121 92 8 121 92 8 98 78 10
138716 +162 162 162 106 106 106 2 2 6 2 2 6
138717 + 2 2 6 195 195 195 195 195 195 6 6 6
138718 + 2 2 6 2 2 6 2 2 6 2 2 6
138719 + 74 74 74 62 62 62 22 22 22 6 6 6
138720 + 0 0 0 0 0 0 0 0 0 0 0 0
138721 + 0 0 0 0 0 0 0 0 0 0 0 0
138722 + 0 0 0 0 0 0 0 0 0 0 0 0
138723 + 0 0 0 0 0 0 0 0 0 0 0 0
138724 + 0 0 0 0 0 0 0 0 0 0 0 0
138725 + 0 0 0 0 0 0 0 0 0 0 0 0
138726 + 0 0 0 0 0 0 0 0 1 0 0 1
138727 + 0 0 1 0 0 0 0 0 1 0 0 0
138728 + 0 0 0 0 0 0 0 0 0 0 0 0
138729 + 0 0 0 0 0 0 0 0 0 0 0 0
138730 + 0 0 0 0 0 0 0 0 0 0 0 0
138731 + 0 0 0 0 0 0 0 0 0 0 0 0
138732 + 0 0 0 0 0 0 0 0 0 10 10 10
138733 + 38 38 38 90 90 90 14 14 14 58 58 58
138734 +210 210 210 26 26 26 54 38 6 154 114 10
138735 +226 170 11 236 186 11 225 175 15 184 144 12
138736 +215 174 15 175 146 61 37 26 9 2 2 6
138737 + 70 70 70 246 246 246 138 138 138 2 2 6
138738 + 2 2 6 2 2 6 2 2 6 2 2 6
138739 + 70 70 70 66 66 66 26 26 26 6 6 6
138740 + 0 0 0 0 0 0 0 0 0 0 0 0
138741 + 0 0 0 0 0 0 0 0 0 0 0 0
138742 + 0 0 0 0 0 0 0 0 0 0 0 0
138743 + 0 0 0 0 0 0 0 0 0 0 0 0
138744 + 0 0 0 0 0 0 0 0 0 0 0 0
138745 + 0 0 0 0 0 0 0 0 0 0 0 0
138746 + 0 0 0 0 0 0 0 0 0 0 0 0
138747 + 0 0 0 0 0 0 0 0 0 0 0 0
138748 + 0 0 0 0 0 0 0 0 0 0 0 0
138749 + 0 0 0 0 0 0 0 0 0 0 0 0
138750 + 0 0 0 0 0 0 0 0 0 0 0 0
138751 + 0 0 0 0 0 0 0 0 0 0 0 0
138752 + 0 0 0 0 0 0 0 0 0 10 10 10
138753 + 38 38 38 86 86 86 14 14 14 10 10 10
138754 +195 195 195 188 164 115 192 133 9 225 175 15
138755 +239 182 13 234 190 10 232 195 16 232 200 30
138756 +245 207 45 241 208 19 232 195 16 184 144 12
138757 +218 194 134 211 206 186 42 42 42 2 2 6
138758 + 2 2 6 2 2 6 2 2 6 2 2 6
138759 + 50 50 50 74 74 74 30 30 30 6 6 6
138760 + 0 0 0 0 0 0 0 0 0 0 0 0
138761 + 0 0 0 0 0 0 0 0 0 0 0 0
138762 + 0 0 0 0 0 0 0 0 0 0 0 0
138763 + 0 0 0 0 0 0 0 0 0 0 0 0
138764 + 0 0 0 0 0 0 0 0 0 0 0 0
138765 + 0 0 0 0 0 0 0 0 0 0 0 0
138766 + 0 0 0 0 0 0 0 0 0 0 0 0
138767 + 0 0 0 0 0 0 0 0 0 0 0 0
138768 + 0 0 0 0 0 0 0 0 0 0 0 0
138769 + 0 0 0 0 0 0 0 0 0 0 0 0
138770 + 0 0 0 0 0 0 0 0 0 0 0 0
138771 + 0 0 0 0 0 0 0 0 0 0 0 0
138772 + 0 0 0 0 0 0 0 0 0 10 10 10
138773 + 34 34 34 86 86 86 14 14 14 2 2 6
138774 +121 87 25 192 133 9 219 162 10 239 182 13
138775 +236 186 11 232 195 16 241 208 19 244 214 54
138776 +246 218 60 246 218 38 246 215 20 241 208 19
138777 +241 208 19 226 184 13 121 87 25 2 2 6
138778 + 2 2 6 2 2 6 2 2 6 2 2 6
138779 + 50 50 50 82 82 82 34 34 34 10 10 10
138780 + 0 0 0 0 0 0 0 0 0 0 0 0
138781 + 0 0 0 0 0 0 0 0 0 0 0 0
138782 + 0 0 0 0 0 0 0 0 0 0 0 0
138783 + 0 0 0 0 0 0 0 0 0 0 0 0
138784 + 0 0 0 0 0 0 0 0 0 0 0 0
138785 + 0 0 0 0 0 0 0 0 0 0 0 0
138786 + 0 0 0 0 0 0 0 0 0 0 0 0
138787 + 0 0 0 0 0 0 0 0 0 0 0 0
138788 + 0 0 0 0 0 0 0 0 0 0 0 0
138789 + 0 0 0 0 0 0 0 0 0 0 0 0
138790 + 0 0 0 0 0 0 0 0 0 0 0 0
138791 + 0 0 0 0 0 0 0 0 0 0 0 0
138792 + 0 0 0 0 0 0 0 0 0 10 10 10
138793 + 34 34 34 82 82 82 30 30 30 61 42 6
138794 +180 123 7 206 145 10 230 174 11 239 182 13
138795 +234 190 10 238 202 15 241 208 19 246 218 74
138796 +246 218 38 246 215 20 246 215 20 246 215 20
138797 +226 184 13 215 174 15 184 144 12 6 6 6
138798 + 2 2 6 2 2 6 2 2 6 2 2 6
138799 + 26 26 26 94 94 94 42 42 42 14 14 14
138800 + 0 0 0 0 0 0 0 0 0 0 0 0
138801 + 0 0 0 0 0 0 0 0 0 0 0 0
138802 + 0 0 0 0 0 0 0 0 0 0 0 0
138803 + 0 0 0 0 0 0 0 0 0 0 0 0
138804 + 0 0 0 0 0 0 0 0 0 0 0 0
138805 + 0 0 0 0 0 0 0 0 0 0 0 0
138806 + 0 0 0 0 0 0 0 0 0 0 0 0
138807 + 0 0 0 0 0 0 0 0 0 0 0 0
138808 + 0 0 0 0 0 0 0 0 0 0 0 0
138809 + 0 0 0 0 0 0 0 0 0 0 0 0
138810 + 0 0 0 0 0 0 0 0 0 0 0 0
138811 + 0 0 0 0 0 0 0 0 0 0 0 0
138812 + 0 0 0 0 0 0 0 0 0 10 10 10
138813 + 30 30 30 78 78 78 50 50 50 104 69 6
138814 +192 133 9 216 158 10 236 178 12 236 186 11
138815 +232 195 16 241 208 19 244 214 54 245 215 43
138816 +246 215 20 246 215 20 241 208 19 198 155 10
138817 +200 144 11 216 158 10 156 118 10 2 2 6
138818 + 2 2 6 2 2 6 2 2 6 2 2 6
138819 + 6 6 6 90 90 90 54 54 54 18 18 18
138820 + 6 6 6 0 0 0 0 0 0 0 0 0
138821 + 0 0 0 0 0 0 0 0 0 0 0 0
138822 + 0 0 0 0 0 0 0 0 0 0 0 0
138823 + 0 0 0 0 0 0 0 0 0 0 0 0
138824 + 0 0 0 0 0 0 0 0 0 0 0 0
138825 + 0 0 0 0 0 0 0 0 0 0 0 0
138826 + 0 0 0 0 0 0 0 0 0 0 0 0
138827 + 0 0 0 0 0 0 0 0 0 0 0 0
138828 + 0 0 0 0 0 0 0 0 0 0 0 0
138829 + 0 0 0 0 0 0 0 0 0 0 0 0
138830 + 0 0 0 0 0 0 0 0 0 0 0 0
138831 + 0 0 0 0 0 0 0 0 0 0 0 0
138832 + 0 0 0 0 0 0 0 0 0 10 10 10
138833 + 30 30 30 78 78 78 46 46 46 22 22 22
138834 +137 92 6 210 162 10 239 182 13 238 190 10
138835 +238 202 15 241 208 19 246 215 20 246 215 20
138836 +241 208 19 203 166 17 185 133 11 210 150 10
138837 +216 158 10 210 150 10 102 78 10 2 2 6
138838 + 6 6 6 54 54 54 14 14 14 2 2 6
138839 + 2 2 6 62 62 62 74 74 74 30 30 30
138840 + 10 10 10 0 0 0 0 0 0 0 0 0
138841 + 0 0 0 0 0 0 0 0 0 0 0 0
138842 + 0 0 0 0 0 0 0 0 0 0 0 0
138843 + 0 0 0 0 0 0 0 0 0 0 0 0
138844 + 0 0 0 0 0 0 0 0 0 0 0 0
138845 + 0 0 0 0 0 0 0 0 0 0 0 0
138846 + 0 0 0 0 0 0 0 0 0 0 0 0
138847 + 0 0 0 0 0 0 0 0 0 0 0 0
138848 + 0 0 0 0 0 0 0 0 0 0 0 0
138849 + 0 0 0 0 0 0 0 0 0 0 0 0
138850 + 0 0 0 0 0 0 0 0 0 0 0 0
138851 + 0 0 0 0 0 0 0 0 0 0 0 0
138852 + 0 0 0 0 0 0 0 0 0 10 10 10
138853 + 34 34 34 78 78 78 50 50 50 6 6 6
138854 + 94 70 30 139 102 15 190 146 13 226 184 13
138855 +232 200 30 232 195 16 215 174 15 190 146 13
138856 +168 122 10 192 133 9 210 150 10 213 154 11
138857 +202 150 34 182 157 106 101 98 89 2 2 6
138858 + 2 2 6 78 78 78 116 116 116 58 58 58
138859 + 2 2 6 22 22 22 90 90 90 46 46 46
138860 + 18 18 18 6 6 6 0 0 0 0 0 0
138861 + 0 0 0 0 0 0 0 0 0 0 0 0
138862 + 0 0 0 0 0 0 0 0 0 0 0 0
138863 + 0 0 0 0 0 0 0 0 0 0 0 0
138864 + 0 0 0 0 0 0 0 0 0 0 0 0
138865 + 0 0 0 0 0 0 0 0 0 0 0 0
138866 + 0 0 0 0 0 0 0 0 0 0 0 0
138867 + 0 0 0 0 0 0 0 0 0 0 0 0
138868 + 0 0 0 0 0 0 0 0 0 0 0 0
138869 + 0 0 0 0 0 0 0 0 0 0 0 0
138870 + 0 0 0 0 0 0 0 0 0 0 0 0
138871 + 0 0 0 0 0 0 0 0 0 0 0 0
138872 + 0 0 0 0 0 0 0 0 0 10 10 10
138873 + 38 38 38 86 86 86 50 50 50 6 6 6
138874 +128 128 128 174 154 114 156 107 11 168 122 10
138875 +198 155 10 184 144 12 197 138 11 200 144 11
138876 +206 145 10 206 145 10 197 138 11 188 164 115
138877 +195 195 195 198 198 198 174 174 174 14 14 14
138878 + 2 2 6 22 22 22 116 116 116 116 116 116
138879 + 22 22 22 2 2 6 74 74 74 70 70 70
138880 + 30 30 30 10 10 10 0 0 0 0 0 0
138881 + 0 0 0 0 0 0 0 0 0 0 0 0
138882 + 0 0 0 0 0 0 0 0 0 0 0 0
138883 + 0 0 0 0 0 0 0 0 0 0 0 0
138884 + 0 0 0 0 0 0 0 0 0 0 0 0
138885 + 0 0 0 0 0 0 0 0 0 0 0 0
138886 + 0 0 0 0 0 0 0 0 0 0 0 0
138887 + 0 0 0 0 0 0 0 0 0 0 0 0
138888 + 0 0 0 0 0 0 0 0 0 0 0 0
138889 + 0 0 0 0 0 0 0 0 0 0 0 0
138890 + 0 0 0 0 0 0 0 0 0 0 0 0
138891 + 0 0 0 0 0 0 0 0 0 0 0 0
138892 + 0 0 0 0 0 0 6 6 6 18 18 18
138893 + 50 50 50 101 101 101 26 26 26 10 10 10
138894 +138 138 138 190 190 190 174 154 114 156 107 11
138895 +197 138 11 200 144 11 197 138 11 192 133 9
138896 +180 123 7 190 142 34 190 178 144 187 187 187
138897 +202 202 202 221 221 221 214 214 214 66 66 66
138898 + 2 2 6 2 2 6 50 50 50 62 62 62
138899 + 6 6 6 2 2 6 10 10 10 90 90 90
138900 + 50 50 50 18 18 18 6 6 6 0 0 0
138901 + 0 0 0 0 0 0 0 0 0 0 0 0
138902 + 0 0 0 0 0 0 0 0 0 0 0 0
138903 + 0 0 0 0 0 0 0 0 0 0 0 0
138904 + 0 0 0 0 0 0 0 0 0 0 0 0
138905 + 0 0 0 0 0 0 0 0 0 0 0 0
138906 + 0 0 0 0 0 0 0 0 0 0 0 0
138907 + 0 0 0 0 0 0 0 0 0 0 0 0
138908 + 0 0 0 0 0 0 0 0 0 0 0 0
138909 + 0 0 0 0 0 0 0 0 0 0 0 0
138910 + 0 0 0 0 0 0 0 0 0 0 0 0
138911 + 0 0 0 0 0 0 0 0 0 0 0 0
138912 + 0 0 0 0 0 0 10 10 10 34 34 34
138913 + 74 74 74 74 74 74 2 2 6 6 6 6
138914 +144 144 144 198 198 198 190 190 190 178 166 146
138915 +154 121 60 156 107 11 156 107 11 168 124 44
138916 +174 154 114 187 187 187 190 190 190 210 210 210
138917 +246 246 246 253 253 253 253 253 253 182 182 182
138918 + 6 6 6 2 2 6 2 2 6 2 2 6
138919 + 2 2 6 2 2 6 2 2 6 62 62 62
138920 + 74 74 74 34 34 34 14 14 14 0 0 0
138921 + 0 0 0 0 0 0 0 0 0 0 0 0
138922 + 0 0 0 0 0 0 0 0 0 0 0 0
138923 + 0 0 0 0 0 0 0 0 0 0 0 0
138924 + 0 0 0 0 0 0 0 0 0 0 0 0
138925 + 0 0 0 0 0 0 0 0 0 0 0 0
138926 + 0 0 0 0 0 0 0 0 0 0 0 0
138927 + 0 0 0 0 0 0 0 0 0 0 0 0
138928 + 0 0 0 0 0 0 0 0 0 0 0 0
138929 + 0 0 0 0 0 0 0 0 0 0 0 0
138930 + 0 0 0 0 0 0 0 0 0 0 0 0
138931 + 0 0 0 0 0 0 0 0 0 0 0 0
138932 + 0 0 0 10 10 10 22 22 22 54 54 54
138933 + 94 94 94 18 18 18 2 2 6 46 46 46
138934 +234 234 234 221 221 221 190 190 190 190 190 190
138935 +190 190 190 187 187 187 187 187 187 190 190 190
138936 +190 190 190 195 195 195 214 214 214 242 242 242
138937 +253 253 253 253 253 253 253 253 253 253 253 253
138938 + 82 82 82 2 2 6 2 2 6 2 2 6
138939 + 2 2 6 2 2 6 2 2 6 14 14 14
138940 + 86 86 86 54 54 54 22 22 22 6 6 6
138941 + 0 0 0 0 0 0 0 0 0 0 0 0
138942 + 0 0 0 0 0 0 0 0 0 0 0 0
138943 + 0 0 0 0 0 0 0 0 0 0 0 0
138944 + 0 0 0 0 0 0 0 0 0 0 0 0
138945 + 0 0 0 0 0 0 0 0 0 0 0 0
138946 + 0 0 0 0 0 0 0 0 0 0 0 0
138947 + 0 0 0 0 0 0 0 0 0 0 0 0
138948 + 0 0 0 0 0 0 0 0 0 0 0 0
138949 + 0 0 0 0 0 0 0 0 0 0 0 0
138950 + 0 0 0 0 0 0 0 0 0 0 0 0
138951 + 0 0 0 0 0 0 0 0 0 0 0 0
138952 + 6 6 6 18 18 18 46 46 46 90 90 90
138953 + 46 46 46 18 18 18 6 6 6 182 182 182
138954 +253 253 253 246 246 246 206 206 206 190 190 190
138955 +190 190 190 190 190 190 190 190 190 190 190 190
138956 +206 206 206 231 231 231 250 250 250 253 253 253
138957 +253 253 253 253 253 253 253 253 253 253 253 253
138958 +202 202 202 14 14 14 2 2 6 2 2 6
138959 + 2 2 6 2 2 6 2 2 6 2 2 6
138960 + 42 42 42 86 86 86 42 42 42 18 18 18
138961 + 6 6 6 0 0 0 0 0 0 0 0 0
138962 + 0 0 0 0 0 0 0 0 0 0 0 0
138963 + 0 0 0 0 0 0 0 0 0 0 0 0
138964 + 0 0 0 0 0 0 0 0 0 0 0 0
138965 + 0 0 0 0 0 0 0 0 0 0 0 0
138966 + 0 0 0 0 0 0 0 0 0 0 0 0
138967 + 0 0 0 0 0 0 0 0 0 0 0 0
138968 + 0 0 0 0 0 0 0 0 0 0 0 0
138969 + 0 0 0 0 0 0 0 0 0 0 0 0
138970 + 0 0 0 0 0 0 0 0 0 0 0 0
138971 + 0 0 0 0 0 0 0 0 0 6 6 6
138972 + 14 14 14 38 38 38 74 74 74 66 66 66
138973 + 2 2 6 6 6 6 90 90 90 250 250 250
138974 +253 253 253 253 253 253 238 238 238 198 198 198
138975 +190 190 190 190 190 190 195 195 195 221 221 221
138976 +246 246 246 253 253 253 253 253 253 253 253 253
138977 +253 253 253 253 253 253 253 253 253 253 253 253
138978 +253 253 253 82 82 82 2 2 6 2 2 6
138979 + 2 2 6 2 2 6 2 2 6 2 2 6
138980 + 2 2 6 78 78 78 70 70 70 34 34 34
138981 + 14 14 14 6 6 6 0 0 0 0 0 0
138982 + 0 0 0 0 0 0 0 0 0 0 0 0
138983 + 0 0 0 0 0 0 0 0 0 0 0 0
138984 + 0 0 0 0 0 0 0 0 0 0 0 0
138985 + 0 0 0 0 0 0 0 0 0 0 0 0
138986 + 0 0 0 0 0 0 0 0 0 0 0 0
138987 + 0 0 0 0 0 0 0 0 0 0 0 0
138988 + 0 0 0 0 0 0 0 0 0 0 0 0
138989 + 0 0 0 0 0 0 0 0 0 0 0 0
138990 + 0 0 0 0 0 0 0 0 0 0 0 0
138991 + 0 0 0 0 0 0 0 0 0 14 14 14
138992 + 34 34 34 66 66 66 78 78 78 6 6 6
138993 + 2 2 6 18 18 18 218 218 218 253 253 253
138994 +253 253 253 253 253 253 253 253 253 246 246 246
138995 +226 226 226 231 231 231 246 246 246 253 253 253
138996 +253 253 253 253 253 253 253 253 253 253 253 253
138997 +253 253 253 253 253 253 253 253 253 253 253 253
138998 +253 253 253 178 178 178 2 2 6 2 2 6
138999 + 2 2 6 2 2 6 2 2 6 2 2 6
139000 + 2 2 6 18 18 18 90 90 90 62 62 62
139001 + 30 30 30 10 10 10 0 0 0 0 0 0
139002 + 0 0 0 0 0 0 0 0 0 0 0 0
139003 + 0 0 0 0 0 0 0 0 0 0 0 0
139004 + 0 0 0 0 0 0 0 0 0 0 0 0
139005 + 0 0 0 0 0 0 0 0 0 0 0 0
139006 + 0 0 0 0 0 0 0 0 0 0 0 0
139007 + 0 0 0 0 0 0 0 0 0 0 0 0
139008 + 0 0 0 0 0 0 0 0 0 0 0 0
139009 + 0 0 0 0 0 0 0 0 0 0 0 0
139010 + 0 0 0 0 0 0 0 0 0 0 0 0
139011 + 0 0 0 0 0 0 10 10 10 26 26 26
139012 + 58 58 58 90 90 90 18 18 18 2 2 6
139013 + 2 2 6 110 110 110 253 253 253 253 253 253
139014 +253 253 253 253 253 253 253 253 253 253 253 253
139015 +250 250 250 253 253 253 253 253 253 253 253 253
139016 +253 253 253 253 253 253 253 253 253 253 253 253
139017 +253 253 253 253 253 253 253 253 253 253 253 253
139018 +253 253 253 231 231 231 18 18 18 2 2 6
139019 + 2 2 6 2 2 6 2 2 6 2 2 6
139020 + 2 2 6 2 2 6 18 18 18 94 94 94
139021 + 54 54 54 26 26 26 10 10 10 0 0 0
139022 + 0 0 0 0 0 0 0 0 0 0 0 0
139023 + 0 0 0 0 0 0 0 0 0 0 0 0
139024 + 0 0 0 0 0 0 0 0 0 0 0 0
139025 + 0 0 0 0 0 0 0 0 0 0 0 0
139026 + 0 0 0 0 0 0 0 0 0 0 0 0
139027 + 0 0 0 0 0 0 0 0 0 0 0 0
139028 + 0 0 0 0 0 0 0 0 0 0 0 0
139029 + 0 0 0 0 0 0 0 0 0 0 0 0
139030 + 0 0 0 0 0 0 0 0 0 0 0 0
139031 + 0 0 0 6 6 6 22 22 22 50 50 50
139032 + 90 90 90 26 26 26 2 2 6 2 2 6
139033 + 14 14 14 195 195 195 250 250 250 253 253 253
139034 +253 253 253 253 253 253 253 253 253 253 253 253
139035 +253 253 253 253 253 253 253 253 253 253 253 253
139036 +253 253 253 253 253 253 253 253 253 253 253 253
139037 +253 253 253 253 253 253 253 253 253 253 253 253
139038 +250 250 250 242 242 242 54 54 54 2 2 6
139039 + 2 2 6 2 2 6 2 2 6 2 2 6
139040 + 2 2 6 2 2 6 2 2 6 38 38 38
139041 + 86 86 86 50 50 50 22 22 22 6 6 6
139042 + 0 0 0 0 0 0 0 0 0 0 0 0
139043 + 0 0 0 0 0 0 0 0 0 0 0 0
139044 + 0 0 0 0 0 0 0 0 0 0 0 0
139045 + 0 0 0 0 0 0 0 0 0 0 0 0
139046 + 0 0 0 0 0 0 0 0 0 0 0 0
139047 + 0 0 0 0 0 0 0 0 0 0 0 0
139048 + 0 0 0 0 0 0 0 0 0 0 0 0
139049 + 0 0 0 0 0 0 0 0 0 0 0 0
139050 + 0 0 0 0 0 0 0 0 0 0 0 0
139051 + 6 6 6 14 14 14 38 38 38 82 82 82
139052 + 34 34 34 2 2 6 2 2 6 2 2 6
139053 + 42 42 42 195 195 195 246 246 246 253 253 253
139054 +253 253 253 253 253 253 253 253 253 250 250 250
139055 +242 242 242 242 242 242 250 250 250 253 253 253
139056 +253 253 253 253 253 253 253 253 253 253 253 253
139057 +253 253 253 250 250 250 246 246 246 238 238 238
139058 +226 226 226 231 231 231 101 101 101 6 6 6
139059 + 2 2 6 2 2 6 2 2 6 2 2 6
139060 + 2 2 6 2 2 6 2 2 6 2 2 6
139061 + 38 38 38 82 82 82 42 42 42 14 14 14
139062 + 6 6 6 0 0 0 0 0 0 0 0 0
139063 + 0 0 0 0 0 0 0 0 0 0 0 0
139064 + 0 0 0 0 0 0 0 0 0 0 0 0
139065 + 0 0 0 0 0 0 0 0 0 0 0 0
139066 + 0 0 0 0 0 0 0 0 0 0 0 0
139067 + 0 0 0 0 0 0 0 0 0 0 0 0
139068 + 0 0 0 0 0 0 0 0 0 0 0 0
139069 + 0 0 0 0 0 0 0 0 0 0 0 0
139070 + 0 0 0 0 0 0 0 0 0 0 0 0
139071 + 10 10 10 26 26 26 62 62 62 66 66 66
139072 + 2 2 6 2 2 6 2 2 6 6 6 6
139073 + 70 70 70 170 170 170 206 206 206 234 234 234
139074 +246 246 246 250 250 250 250 250 250 238 238 238
139075 +226 226 226 231 231 231 238 238 238 250 250 250
139076 +250 250 250 250 250 250 246 246 246 231 231 231
139077 +214 214 214 206 206 206 202 202 202 202 202 202
139078 +198 198 198 202 202 202 182 182 182 18 18 18
139079 + 2 2 6 2 2 6 2 2 6 2 2 6
139080 + 2 2 6 2 2 6 2 2 6 2 2 6
139081 + 2 2 6 62 62 62 66 66 66 30 30 30
139082 + 10 10 10 0 0 0 0 0 0 0 0 0
139083 + 0 0 0 0 0 0 0 0 0 0 0 0
139084 + 0 0 0 0 0 0 0 0 0 0 0 0
139085 + 0 0 0 0 0 0 0 0 0 0 0 0
139086 + 0 0 0 0 0 0 0 0 0 0 0 0
139087 + 0 0 0 0 0 0 0 0 0 0 0 0
139088 + 0 0 0 0 0 0 0 0 0 0 0 0
139089 + 0 0 0 0 0 0 0 0 0 0 0 0
139090 + 0 0 0 0 0 0 0 0 0 0 0 0
139091 + 14 14 14 42 42 42 82 82 82 18 18 18
139092 + 2 2 6 2 2 6 2 2 6 10 10 10
139093 + 94 94 94 182 182 182 218 218 218 242 242 242
139094 +250 250 250 253 253 253 253 253 253 250 250 250
139095 +234 234 234 253 253 253 253 253 253 253 253 253
139096 +253 253 253 253 253 253 253 253 253 246 246 246
139097 +238 238 238 226 226 226 210 210 210 202 202 202
139098 +195 195 195 195 195 195 210 210 210 158 158 158
139099 + 6 6 6 14 14 14 50 50 50 14 14 14
139100 + 2 2 6 2 2 6 2 2 6 2 2 6
139101 + 2 2 6 6 6 6 86 86 86 46 46 46
139102 + 18 18 18 6 6 6 0 0 0 0 0 0
139103 + 0 0 0 0 0 0 0 0 0 0 0 0
139104 + 0 0 0 0 0 0 0 0 0 0 0 0
139105 + 0 0 0 0 0 0 0 0 0 0 0 0
139106 + 0 0 0 0 0 0 0 0 0 0 0 0
139107 + 0 0 0 0 0 0 0 0 0 0 0 0
139108 + 0 0 0 0 0 0 0 0 0 0 0 0
139109 + 0 0 0 0 0 0 0 0 0 0 0 0
139110 + 0 0 0 0 0 0 0 0 0 6 6 6
139111 + 22 22 22 54 54 54 70 70 70 2 2 6
139112 + 2 2 6 10 10 10 2 2 6 22 22 22
139113 +166 166 166 231 231 231 250 250 250 253 253 253
139114 +253 253 253 253 253 253 253 253 253 250 250 250
139115 +242 242 242 253 253 253 253 253 253 253 253 253
139116 +253 253 253 253 253 253 253 253 253 253 253 253
139117 +253 253 253 253 253 253 253 253 253 246 246 246
139118 +231 231 231 206 206 206 198 198 198 226 226 226
139119 + 94 94 94 2 2 6 6 6 6 38 38 38
139120 + 30 30 30 2 2 6 2 2 6 2 2 6
139121 + 2 2 6 2 2 6 62 62 62 66 66 66
139122 + 26 26 26 10 10 10 0 0 0 0 0 0
139123 + 0 0 0 0 0 0 0 0 0 0 0 0
139124 + 0 0 0 0 0 0 0 0 0 0 0 0
139125 + 0 0 0 0 0 0 0 0 0 0 0 0
139126 + 0 0 0 0 0 0 0 0 0 0 0 0
139127 + 0 0 0 0 0 0 0 0 0 0 0 0
139128 + 0 0 0 0 0 0 0 0 0 0 0 0
139129 + 0 0 0 0 0 0 0 0 0 0 0 0
139130 + 0 0 0 0 0 0 0 0 0 10 10 10
139131 + 30 30 30 74 74 74 50 50 50 2 2 6
139132 + 26 26 26 26 26 26 2 2 6 106 106 106
139133 +238 238 238 253 253 253 253 253 253 253 253 253
139134 +253 253 253 253 253 253 253 253 253 253 253 253
139135 +253 253 253 253 253 253 253 253 253 253 253 253
139136 +253 253 253 253 253 253 253 253 253 253 253 253
139137 +253 253 253 253 253 253 253 253 253 253 253 253
139138 +253 253 253 246 246 246 218 218 218 202 202 202
139139 +210 210 210 14 14 14 2 2 6 2 2 6
139140 + 30 30 30 22 22 22 2 2 6 2 2 6
139141 + 2 2 6 2 2 6 18 18 18 86 86 86
139142 + 42 42 42 14 14 14 0 0 0 0 0 0
139143 + 0 0 0 0 0 0 0 0 0 0 0 0
139144 + 0 0 0 0 0 0 0 0 0 0 0 0
139145 + 0 0 0 0 0 0 0 0 0 0 0 0
139146 + 0 0 0 0 0 0 0 0 0 0 0 0
139147 + 0 0 0 0 0 0 0 0 0 0 0 0
139148 + 0 0 0 0 0 0 0 0 0 0 0 0
139149 + 0 0 0 0 0 0 0 0 0 0 0 0
139150 + 0 0 0 0 0 0 0 0 0 14 14 14
139151 + 42 42 42 90 90 90 22 22 22 2 2 6
139152 + 42 42 42 2 2 6 18 18 18 218 218 218
139153 +253 253 253 253 253 253 253 253 253 253 253 253
139154 +253 253 253 253 253 253 253 253 253 253 253 253
139155 +253 253 253 253 253 253 253 253 253 253 253 253
139156 +253 253 253 253 253 253 253 253 253 253 253 253
139157 +253 253 253 253 253 253 253 253 253 253 253 253
139158 +253 253 253 253 253 253 250 250 250 221 221 221
139159 +218 218 218 101 101 101 2 2 6 14 14 14
139160 + 18 18 18 38 38 38 10 10 10 2 2 6
139161 + 2 2 6 2 2 6 2 2 6 78 78 78
139162 + 58 58 58 22 22 22 6 6 6 0 0 0
139163 + 0 0 0 0 0 0 0 0 0 0 0 0
139164 + 0 0 0 0 0 0 0 0 0 0 0 0
139165 + 0 0 0 0 0 0 0 0 0 0 0 0
139166 + 0 0 0 0 0 0 0 0 0 0 0 0
139167 + 0 0 0 0 0 0 0 0 0 0 0 0
139168 + 0 0 0 0 0 0 0 0 0 0 0 0
139169 + 0 0 0 0 0 0 0 0 0 0 0 0
139170 + 0 0 0 0 0 0 6 6 6 18 18 18
139171 + 54 54 54 82 82 82 2 2 6 26 26 26
139172 + 22 22 22 2 2 6 123 123 123 253 253 253
139173 +253 253 253 253 253 253 253 253 253 253 253 253
139174 +253 253 253 253 253 253 253 253 253 253 253 253
139175 +253 253 253 253 253 253 253 253 253 253 253 253
139176 +253 253 253 253 253 253 253 253 253 253 253 253
139177 +253 253 253 253 253 253 253 253 253 253 253 253
139178 +253 253 253 253 253 253 253 253 253 250 250 250
139179 +238 238 238 198 198 198 6 6 6 38 38 38
139180 + 58 58 58 26 26 26 38 38 38 2 2 6
139181 + 2 2 6 2 2 6 2 2 6 46 46 46
139182 + 78 78 78 30 30 30 10 10 10 0 0 0
139183 + 0 0 0 0 0 0 0 0 0 0 0 0
139184 + 0 0 0 0 0 0 0 0 0 0 0 0
139185 + 0 0 0 0 0 0 0 0 0 0 0 0
139186 + 0 0 0 0 0 0 0 0 0 0 0 0
139187 + 0 0 0 0 0 0 0 0 0 0 0 0
139188 + 0 0 0 0 0 0 0 0 0 0 0 0
139189 + 0 0 0 0 0 0 0 0 0 0 0 0
139190 + 0 0 0 0 0 0 10 10 10 30 30 30
139191 + 74 74 74 58 58 58 2 2 6 42 42 42
139192 + 2 2 6 22 22 22 231 231 231 253 253 253
139193 +253 253 253 253 253 253 253 253 253 253 253 253
139194 +253 253 253 253 253 253 253 253 253 250 250 250
139195 +253 253 253 253 253 253 253 253 253 253 253 253
139196 +253 253 253 253 253 253 253 253 253 253 253 253
139197 +253 253 253 253 253 253 253 253 253 253 253 253
139198 +253 253 253 253 253 253 253 253 253 253 253 253
139199 +253 253 253 246 246 246 46 46 46 38 38 38
139200 + 42 42 42 14 14 14 38 38 38 14 14 14
139201 + 2 2 6 2 2 6 2 2 6 6 6 6
139202 + 86 86 86 46 46 46 14 14 14 0 0 0
139203 + 0 0 0 0 0 0 0 0 0 0 0 0
139204 + 0 0 0 0 0 0 0 0 0 0 0 0
139205 + 0 0 0 0 0 0 0 0 0 0 0 0
139206 + 0 0 0 0 0 0 0 0 0 0 0 0
139207 + 0 0 0 0 0 0 0 0 0 0 0 0
139208 + 0 0 0 0 0 0 0 0 0 0 0 0
139209 + 0 0 0 0 0 0 0 0 0 0 0 0
139210 + 0 0 0 6 6 6 14 14 14 42 42 42
139211 + 90 90 90 18 18 18 18 18 18 26 26 26
139212 + 2 2 6 116 116 116 253 253 253 253 253 253
139213 +253 253 253 253 253 253 253 253 253 253 253 253
139214 +253 253 253 253 253 253 250 250 250 238 238 238
139215 +253 253 253 253 253 253 253 253 253 253 253 253
139216 +253 253 253 253 253 253 253 253 253 253 253 253
139217 +253 253 253 253 253 253 253 253 253 253 253 253
139218 +253 253 253 253 253 253 253 253 253 253 253 253
139219 +253 253 253 253 253 253 94 94 94 6 6 6
139220 + 2 2 6 2 2 6 10 10 10 34 34 34
139221 + 2 2 6 2 2 6 2 2 6 2 2 6
139222 + 74 74 74 58 58 58 22 22 22 6 6 6
139223 + 0 0 0 0 0 0 0 0 0 0 0 0
139224 + 0 0 0 0 0 0 0 0 0 0 0 0
139225 + 0 0 0 0 0 0 0 0 0 0 0 0
139226 + 0 0 0 0 0 0 0 0 0 0 0 0
139227 + 0 0 0 0 0 0 0 0 0 0 0 0
139228 + 0 0 0 0 0 0 0 0 0 0 0 0
139229 + 0 0 0 0 0 0 0 0 0 0 0 0
139230 + 0 0 0 10 10 10 26 26 26 66 66 66
139231 + 82 82 82 2 2 6 38 38 38 6 6 6
139232 + 14 14 14 210 210 210 253 253 253 253 253 253
139233 +253 253 253 253 253 253 253 253 253 253 253 253
139234 +253 253 253 253 253 253 246 246 246 242 242 242
139235 +253 253 253 253 253 253 253 253 253 253 253 253
139236 +253 253 253 253 253 253 253 253 253 253 253 253
139237 +253 253 253 253 253 253 253 253 253 253 253 253
139238 +253 253 253 253 253 253 253 253 253 253 253 253
139239 +253 253 253 253 253 253 144 144 144 2 2 6
139240 + 2 2 6 2 2 6 2 2 6 46 46 46
139241 + 2 2 6 2 2 6 2 2 6 2 2 6
139242 + 42 42 42 74 74 74 30 30 30 10 10 10
139243 + 0 0 0 0 0 0 0 0 0 0 0 0
139244 + 0 0 0 0 0 0 0 0 0 0 0 0
139245 + 0 0 0 0 0 0 0 0 0 0 0 0
139246 + 0 0 0 0 0 0 0 0 0 0 0 0
139247 + 0 0 0 0 0 0 0 0 0 0 0 0
139248 + 0 0 0 0 0 0 0 0 0 0 0 0
139249 + 0 0 0 0 0 0 0 0 0 0 0 0
139250 + 6 6 6 14 14 14 42 42 42 90 90 90
139251 + 26 26 26 6 6 6 42 42 42 2 2 6
139252 + 74 74 74 250 250 250 253 253 253 253 253 253
139253 +253 253 253 253 253 253 253 253 253 253 253 253
139254 +253 253 253 253 253 253 242 242 242 242 242 242
139255 +253 253 253 253 253 253 253 253 253 253 253 253
139256 +253 253 253 253 253 253 253 253 253 253 253 253
139257 +253 253 253 253 253 253 253 253 253 253 253 253
139258 +253 253 253 253 253 253 253 253 253 253 253 253
139259 +253 253 253 253 253 253 182 182 182 2 2 6
139260 + 2 2 6 2 2 6 2 2 6 46 46 46
139261 + 2 2 6 2 2 6 2 2 6 2 2 6
139262 + 10 10 10 86 86 86 38 38 38 10 10 10
139263 + 0 0 0 0 0 0 0 0 0 0 0 0
139264 + 0 0 0 0 0 0 0 0 0 0 0 0
139265 + 0 0 0 0 0 0 0 0 0 0 0 0
139266 + 0 0 0 0 0 0 0 0 0 0 0 0
139267 + 0 0 0 0 0 0 0 0 0 0 0 0
139268 + 0 0 0 0 0 0 0 0 0 0 0 0
139269 + 0 0 0 0 0 0 0 0 0 0 0 0
139270 + 10 10 10 26 26 26 66 66 66 82 82 82
139271 + 2 2 6 22 22 22 18 18 18 2 2 6
139272 +149 149 149 253 253 253 253 253 253 253 253 253
139273 +253 253 253 253 253 253 253 253 253 253 253 253
139274 +253 253 253 253 253 253 234 234 234 242 242 242
139275 +253 253 253 253 253 253 253 253 253 253 253 253
139276 +253 253 253 253 253 253 253 253 253 253 253 253
139277 +253 253 253 253 253 253 253 253 253 253 253 253
139278 +253 253 253 253 253 253 253 253 253 253 253 253
139279 +253 253 253 253 253 253 206 206 206 2 2 6
139280 + 2 2 6 2 2 6 2 2 6 38 38 38
139281 + 2 2 6 2 2 6 2 2 6 2 2 6
139282 + 6 6 6 86 86 86 46 46 46 14 14 14
139283 + 0 0 0 0 0 0 0 0 0 0 0 0
139284 + 0 0 0 0 0 0 0 0 0 0 0 0
139285 + 0 0 0 0 0 0 0 0 0 0 0 0
139286 + 0 0 0 0 0 0 0 0 0 0 0 0
139287 + 0 0 0 0 0 0 0 0 0 0 0 0
139288 + 0 0 0 0 0 0 0 0 0 0 0 0
139289 + 0 0 0 0 0 0 0 0 0 6 6 6
139290 + 18 18 18 46 46 46 86 86 86 18 18 18
139291 + 2 2 6 34 34 34 10 10 10 6 6 6
139292 +210 210 210 253 253 253 253 253 253 253 253 253
139293 +253 253 253 253 253 253 253 253 253 253 253 253
139294 +253 253 253 253 253 253 234 234 234 242 242 242
139295 +253 253 253 253 253 253 253 253 253 253 253 253
139296 +253 253 253 253 253 253 253 253 253 253 253 253
139297 +253 253 253 253 253 253 253 253 253 253 253 253
139298 +253 253 253 253 253 253 253 253 253 253 253 253
139299 +253 253 253 253 253 253 221 221 221 6 6 6
139300 + 2 2 6 2 2 6 6 6 6 30 30 30
139301 + 2 2 6 2 2 6 2 2 6 2 2 6
139302 + 2 2 6 82 82 82 54 54 54 18 18 18
139303 + 6 6 6 0 0 0 0 0 0 0 0 0
139304 + 0 0 0 0 0 0 0 0 0 0 0 0
139305 + 0 0 0 0 0 0 0 0 0 0 0 0
139306 + 0 0 0 0 0 0 0 0 0 0 0 0
139307 + 0 0 0 0 0 0 0 0 0 0 0 0
139308 + 0 0 0 0 0 0 0 0 0 0 0 0
139309 + 0 0 0 0 0 0 0 0 0 10 10 10
139310 + 26 26 26 66 66 66 62 62 62 2 2 6
139311 + 2 2 6 38 38 38 10 10 10 26 26 26
139312 +238 238 238 253 253 253 253 253 253 253 253 253
139313 +253 253 253 253 253 253 253 253 253 253 253 253
139314 +253 253 253 253 253 253 231 231 231 238 238 238
139315 +253 253 253 253 253 253 253 253 253 253 253 253
139316 +253 253 253 253 253 253 253 253 253 253 253 253
139317 +253 253 253 253 253 253 253 253 253 253 253 253
139318 +253 253 253 253 253 253 253 253 253 253 253 253
139319 +253 253 253 253 253 253 231 231 231 6 6 6
139320 + 2 2 6 2 2 6 10 10 10 30 30 30
139321 + 2 2 6 2 2 6 2 2 6 2 2 6
139322 + 2 2 6 66 66 66 58 58 58 22 22 22
139323 + 6 6 6 0 0 0 0 0 0 0 0 0
139324 + 0 0 0 0 0 0 0 0 0 0 0 0
139325 + 0 0 0 0 0 0 0 0 0 0 0 0
139326 + 0 0 0 0 0 0 0 0 0 0 0 0
139327 + 0 0 0 0 0 0 0 0 0 0 0 0
139328 + 0 0 0 0 0 0 0 0 0 0 0 0
139329 + 0 0 0 0 0 0 0 0 0 10 10 10
139330 + 38 38 38 78 78 78 6 6 6 2 2 6
139331 + 2 2 6 46 46 46 14 14 14 42 42 42
139332 +246 246 246 253 253 253 253 253 253 253 253 253
139333 +253 253 253 253 253 253 253 253 253 253 253 253
139334 +253 253 253 253 253 253 231 231 231 242 242 242
139335 +253 253 253 253 253 253 253 253 253 253 253 253
139336 +253 253 253 253 253 253 253 253 253 253 253 253
139337 +253 253 253 253 253 253 253 253 253 253 253 253
139338 +253 253 253 253 253 253 253 253 253 253 253 253
139339 +253 253 253 253 253 253 234 234 234 10 10 10
139340 + 2 2 6 2 2 6 22 22 22 14 14 14
139341 + 2 2 6 2 2 6 2 2 6 2 2 6
139342 + 2 2 6 66 66 66 62 62 62 22 22 22
139343 + 6 6 6 0 0 0 0 0 0 0 0 0
139344 + 0 0 0 0 0 0 0 0 0 0 0 0
139345 + 0 0 0 0 0 0 0 0 0 0 0 0
139346 + 0 0 0 0 0 0 0 0 0 0 0 0
139347 + 0 0 0 0 0 0 0 0 0 0 0 0
139348 + 0 0 0 0 0 0 0 0 0 0 0 0
139349 + 0 0 0 0 0 0 6 6 6 18 18 18
139350 + 50 50 50 74 74 74 2 2 6 2 2 6
139351 + 14 14 14 70 70 70 34 34 34 62 62 62
139352 +250 250 250 253 253 253 253 253 253 253 253 253
139353 +253 253 253 253 253 253 253 253 253 253 253 253
139354 +253 253 253 253 253 253 231 231 231 246 246 246
139355 +253 253 253 253 253 253 253 253 253 253 253 253
139356 +253 253 253 253 253 253 253 253 253 253 253 253
139357 +253 253 253 253 253 253 253 253 253 253 253 253
139358 +253 253 253 253 253 253 253 253 253 253 253 253
139359 +253 253 253 253 253 253 234 234 234 14 14 14
139360 + 2 2 6 2 2 6 30 30 30 2 2 6
139361 + 2 2 6 2 2 6 2 2 6 2 2 6
139362 + 2 2 6 66 66 66 62 62 62 22 22 22
139363 + 6 6 6 0 0 0 0 0 0 0 0 0
139364 + 0 0 0 0 0 0 0 0 0 0 0 0
139365 + 0 0 0 0 0 0 0 0 0 0 0 0
139366 + 0 0 0 0 0 0 0 0 0 0 0 0
139367 + 0 0 0 0 0 0 0 0 0 0 0 0
139368 + 0 0 0 0 0 0 0 0 0 0 0 0
139369 + 0 0 0 0 0 0 6 6 6 18 18 18
139370 + 54 54 54 62 62 62 2 2 6 2 2 6
139371 + 2 2 6 30 30 30 46 46 46 70 70 70
139372 +250 250 250 253 253 253 253 253 253 253 253 253
139373 +253 253 253 253 253 253 253 253 253 253 253 253
139374 +253 253 253 253 253 253 231 231 231 246 246 246
139375 +253 253 253 253 253 253 253 253 253 253 253 253
139376 +253 253 253 253 253 253 253 253 253 253 253 253
139377 +253 253 253 253 253 253 253 253 253 253 253 253
139378 +253 253 253 253 253 253 253 253 253 253 253 253
139379 +253 253 253 253 253 253 226 226 226 10 10 10
139380 + 2 2 6 6 6 6 30 30 30 2 2 6
139381 + 2 2 6 2 2 6 2 2 6 2 2 6
139382 + 2 2 6 66 66 66 58 58 58 22 22 22
139383 + 6 6 6 0 0 0 0 0 0 0 0 0
139384 + 0 0 0 0 0 0 0 0 0 0 0 0
139385 + 0 0 0 0 0 0 0 0 0 0 0 0
139386 + 0 0 0 0 0 0 0 0 0 0 0 0
139387 + 0 0 0 0 0 0 0 0 0 0 0 0
139388 + 0 0 0 0 0 0 0 0 0 0 0 0
139389 + 0 0 0 0 0 0 6 6 6 22 22 22
139390 + 58 58 58 62 62 62 2 2 6 2 2 6
139391 + 2 2 6 2 2 6 30 30 30 78 78 78
139392 +250 250 250 253 253 253 253 253 253 253 253 253
139393 +253 253 253 253 253 253 253 253 253 253 253 253
139394 +253 253 253 253 253 253 231 231 231 246 246 246
139395 +253 253 253 253 253 253 253 253 253 253 253 253
139396 +253 253 253 253 253 253 253 253 253 253 253 253
139397 +253 253 253 253 253 253 253 253 253 253 253 253
139398 +253 253 253 253 253 253 253 253 253 253 253 253
139399 +253 253 253 253 253 253 206 206 206 2 2 6
139400 + 22 22 22 34 34 34 18 14 6 22 22 22
139401 + 26 26 26 18 18 18 6 6 6 2 2 6
139402 + 2 2 6 82 82 82 54 54 54 18 18 18
139403 + 6 6 6 0 0 0 0 0 0 0 0 0
139404 + 0 0 0 0 0 0 0 0 0 0 0 0
139405 + 0 0 0 0 0 0 0 0 0 0 0 0
139406 + 0 0 0 0 0 0 0 0 0 0 0 0
139407 + 0 0 0 0 0 0 0 0 0 0 0 0
139408 + 0 0 0 0 0 0 0 0 0 0 0 0
139409 + 0 0 0 0 0 0 6 6 6 26 26 26
139410 + 62 62 62 106 106 106 74 54 14 185 133 11
139411 +210 162 10 121 92 8 6 6 6 62 62 62
139412 +238 238 238 253 253 253 253 253 253 253 253 253
139413 +253 253 253 253 253 253 253 253 253 253 253 253
139414 +253 253 253 253 253 253 231 231 231 246 246 246
139415 +253 253 253 253 253 253 253 253 253 253 253 253
139416 +253 253 253 253 253 253 253 253 253 253 253 253
139417 +253 253 253 253 253 253 253 253 253 253 253 253
139418 +253 253 253 253 253 253 253 253 253 253 253 253
139419 +253 253 253 253 253 253 158 158 158 18 18 18
139420 + 14 14 14 2 2 6 2 2 6 2 2 6
139421 + 6 6 6 18 18 18 66 66 66 38 38 38
139422 + 6 6 6 94 94 94 50 50 50 18 18 18
139423 + 6 6 6 0 0 0 0 0 0 0 0 0
139424 + 0 0 0 0 0 0 0 0 0 0 0 0
139425 + 0 0 0 0 0 0 0 0 0 0 0 0
139426 + 0 0 0 0 0 0 0 0 0 0 0 0
139427 + 0 0 0 0 0 0 0 0 0 0 0 0
139428 + 0 0 0 0 0 0 0 0 0 6 6 6
139429 + 10 10 10 10 10 10 18 18 18 38 38 38
139430 + 78 78 78 142 134 106 216 158 10 242 186 14
139431 +246 190 14 246 190 14 156 118 10 10 10 10
139432 + 90 90 90 238 238 238 253 253 253 253 253 253
139433 +253 253 253 253 253 253 253 253 253 253 253 253
139434 +253 253 253 253 253 253 231 231 231 250 250 250
139435 +253 253 253 253 253 253 253 253 253 253 253 253
139436 +253 253 253 253 253 253 253 253 253 253 253 253
139437 +253 253 253 253 253 253 253 253 253 253 253 253
139438 +253 253 253 253 253 253 253 253 253 246 230 190
139439 +238 204 91 238 204 91 181 142 44 37 26 9
139440 + 2 2 6 2 2 6 2 2 6 2 2 6
139441 + 2 2 6 2 2 6 38 38 38 46 46 46
139442 + 26 26 26 106 106 106 54 54 54 18 18 18
139443 + 6 6 6 0 0 0 0 0 0 0 0 0
139444 + 0 0 0 0 0 0 0 0 0 0 0 0
139445 + 0 0 0 0 0 0 0 0 0 0 0 0
139446 + 0 0 0 0 0 0 0 0 0 0 0 0
139447 + 0 0 0 0 0 0 0 0 0 0 0 0
139448 + 0 0 0 6 6 6 14 14 14 22 22 22
139449 + 30 30 30 38 38 38 50 50 50 70 70 70
139450 +106 106 106 190 142 34 226 170 11 242 186 14
139451 +246 190 14 246 190 14 246 190 14 154 114 10
139452 + 6 6 6 74 74 74 226 226 226 253 253 253
139453 +253 253 253 253 253 253 253 253 253 253 253 253
139454 +253 253 253 253 253 253 231 231 231 250 250 250
139455 +253 253 253 253 253 253 253 253 253 253 253 253
139456 +253 253 253 253 253 253 253 253 253 253 253 253
139457 +253 253 253 253 253 253 253 253 253 253 253 253
139458 +253 253 253 253 253 253 253 253 253 228 184 62
139459 +241 196 14 241 208 19 232 195 16 38 30 10
139460 + 2 2 6 2 2 6 2 2 6 2 2 6
139461 + 2 2 6 6 6 6 30 30 30 26 26 26
139462 +203 166 17 154 142 90 66 66 66 26 26 26
139463 + 6 6 6 0 0 0 0 0 0 0 0 0
139464 + 0 0 0 0 0 0 0 0 0 0 0 0
139465 + 0 0 0 0 0 0 0 0 0 0 0 0
139466 + 0 0 0 0 0 0 0 0 0 0 0 0
139467 + 0 0 0 0 0 0 0 0 0 0 0 0
139468 + 6 6 6 18 18 18 38 38 38 58 58 58
139469 + 78 78 78 86 86 86 101 101 101 123 123 123
139470 +175 146 61 210 150 10 234 174 13 246 186 14
139471 +246 190 14 246 190 14 246 190 14 238 190 10
139472 +102 78 10 2 2 6 46 46 46 198 198 198
139473 +253 253 253 253 253 253 253 253 253 253 253 253
139474 +253 253 253 253 253 253 234 234 234 242 242 242
139475 +253 253 253 253 253 253 253 253 253 253 253 253
139476 +253 253 253 253 253 253 253 253 253 253 253 253
139477 +253 253 253 253 253 253 253 253 253 253 253 253
139478 +253 253 253 253 253 253 253 253 253 224 178 62
139479 +242 186 14 241 196 14 210 166 10 22 18 6
139480 + 2 2 6 2 2 6 2 2 6 2 2 6
139481 + 2 2 6 2 2 6 6 6 6 121 92 8
139482 +238 202 15 232 195 16 82 82 82 34 34 34
139483 + 10 10 10 0 0 0 0 0 0 0 0 0
139484 + 0 0 0 0 0 0 0 0 0 0 0 0
139485 + 0 0 0 0 0 0 0 0 0 0 0 0
139486 + 0 0 0 0 0 0 0 0 0 0 0 0
139487 + 0 0 0 0 0 0 0 0 0 0 0 0
139488 + 14 14 14 38 38 38 70 70 70 154 122 46
139489 +190 142 34 200 144 11 197 138 11 197 138 11
139490 +213 154 11 226 170 11 242 186 14 246 190 14
139491 +246 190 14 246 190 14 246 190 14 246 190 14
139492 +225 175 15 46 32 6 2 2 6 22 22 22
139493 +158 158 158 250 250 250 253 253 253 253 253 253
139494 +253 253 253 253 253 253 253 253 253 253 253 253
139495 +253 253 253 253 253 253 253 253 253 253 253 253
139496 +253 253 253 253 253 253 253 253 253 253 253 253
139497 +253 253 253 253 253 253 253 253 253 253 253 253
139498 +253 253 253 250 250 250 242 242 242 224 178 62
139499 +239 182 13 236 186 11 213 154 11 46 32 6
139500 + 2 2 6 2 2 6 2 2 6 2 2 6
139501 + 2 2 6 2 2 6 61 42 6 225 175 15
139502 +238 190 10 236 186 11 112 100 78 42 42 42
139503 + 14 14 14 0 0 0 0 0 0 0 0 0
139504 + 0 0 0 0 0 0 0 0 0 0 0 0
139505 + 0 0 0 0 0 0 0 0 0 0 0 0
139506 + 0 0 0 0 0 0 0 0 0 0 0 0
139507 + 0 0 0 0 0 0 0 0 0 6 6 6
139508 + 22 22 22 54 54 54 154 122 46 213 154 11
139509 +226 170 11 230 174 11 226 170 11 226 170 11
139510 +236 178 12 242 186 14 246 190 14 246 190 14
139511 +246 190 14 246 190 14 246 190 14 246 190 14
139512 +241 196 14 184 144 12 10 10 10 2 2 6
139513 + 6 6 6 116 116 116 242 242 242 253 253 253
139514 +253 253 253 253 253 253 253 253 253 253 253 253
139515 +253 253 253 253 253 253 253 253 253 253 253 253
139516 +253 253 253 253 253 253 253 253 253 253 253 253
139517 +253 253 253 253 253 253 253 253 253 253 253 253
139518 +253 253 253 231 231 231 198 198 198 214 170 54
139519 +236 178 12 236 178 12 210 150 10 137 92 6
139520 + 18 14 6 2 2 6 2 2 6 2 2 6
139521 + 6 6 6 70 47 6 200 144 11 236 178 12
139522 +239 182 13 239 182 13 124 112 88 58 58 58
139523 + 22 22 22 6 6 6 0 0 0 0 0 0
139524 + 0 0 0 0 0 0 0 0 0 0 0 0
139525 + 0 0 0 0 0 0 0 0 0 0 0 0
139526 + 0 0 0 0 0 0 0 0 0 0 0 0
139527 + 0 0 0 0 0 0 0 0 0 10 10 10
139528 + 30 30 30 70 70 70 180 133 36 226 170 11
139529 +239 182 13 242 186 14 242 186 14 246 186 14
139530 +246 190 14 246 190 14 246 190 14 246 190 14
139531 +246 190 14 246 190 14 246 190 14 246 190 14
139532 +246 190 14 232 195 16 98 70 6 2 2 6
139533 + 2 2 6 2 2 6 66 66 66 221 221 221
139534 +253 253 253 253 253 253 253 253 253 253 253 253
139535 +253 253 253 253 253 253 253 253 253 253 253 253
139536 +253 253 253 253 253 253 253 253 253 253 253 253
139537 +253 253 253 253 253 253 253 253 253 253 253 253
139538 +253 253 253 206 206 206 198 198 198 214 166 58
139539 +230 174 11 230 174 11 216 158 10 192 133 9
139540 +163 110 8 116 81 8 102 78 10 116 81 8
139541 +167 114 7 197 138 11 226 170 11 239 182 13
139542 +242 186 14 242 186 14 162 146 94 78 78 78
139543 + 34 34 34 14 14 14 6 6 6 0 0 0
139544 + 0 0 0 0 0 0 0 0 0 0 0 0
139545 + 0 0 0 0 0 0 0 0 0 0 0 0
139546 + 0 0 0 0 0 0 0 0 0 0 0 0
139547 + 0 0 0 0 0 0 0 0 0 6 6 6
139548 + 30 30 30 78 78 78 190 142 34 226 170 11
139549 +239 182 13 246 190 14 246 190 14 246 190 14
139550 +246 190 14 246 190 14 246 190 14 246 190 14
139551 +246 190 14 246 190 14 246 190 14 246 190 14
139552 +246 190 14 241 196 14 203 166 17 22 18 6
139553 + 2 2 6 2 2 6 2 2 6 38 38 38
139554 +218 218 218 253 253 253 253 253 253 253 253 253
139555 +253 253 253 253 253 253 253 253 253 253 253 253
139556 +253 253 253 253 253 253 253 253 253 253 253 253
139557 +253 253 253 253 253 253 253 253 253 253 253 253
139558 +250 250 250 206 206 206 198 198 198 202 162 69
139559 +226 170 11 236 178 12 224 166 10 210 150 10
139560 +200 144 11 197 138 11 192 133 9 197 138 11
139561 +210 150 10 226 170 11 242 186 14 246 190 14
139562 +246 190 14 246 186 14 225 175 15 124 112 88
139563 + 62 62 62 30 30 30 14 14 14 6 6 6
139564 + 0 0 0 0 0 0 0 0 0 0 0 0
139565 + 0 0 0 0 0 0 0 0 0 0 0 0
139566 + 0 0 0 0 0 0 0 0 0 0 0 0
139567 + 0 0 0 0 0 0 0 0 0 10 10 10
139568 + 30 30 30 78 78 78 174 135 50 224 166 10
139569 +239 182 13 246 190 14 246 190 14 246 190 14
139570 +246 190 14 246 190 14 246 190 14 246 190 14
139571 +246 190 14 246 190 14 246 190 14 246 190 14
139572 +246 190 14 246 190 14 241 196 14 139 102 15
139573 + 2 2 6 2 2 6 2 2 6 2 2 6
139574 + 78 78 78 250 250 250 253 253 253 253 253 253
139575 +253 253 253 253 253 253 253 253 253 253 253 253
139576 +253 253 253 253 253 253 253 253 253 253 253 253
139577 +253 253 253 253 253 253 253 253 253 253 253 253
139578 +250 250 250 214 214 214 198 198 198 190 150 46
139579 +219 162 10 236 178 12 234 174 13 224 166 10
139580 +216 158 10 213 154 11 213 154 11 216 158 10
139581 +226 170 11 239 182 13 246 190 14 246 190 14
139582 +246 190 14 246 190 14 242 186 14 206 162 42
139583 +101 101 101 58 58 58 30 30 30 14 14 14
139584 + 6 6 6 0 0 0 0 0 0 0 0 0
139585 + 0 0 0 0 0 0 0 0 0 0 0 0
139586 + 0 0 0 0 0 0 0 0 0 0 0 0
139587 + 0 0 0 0 0 0 0 0 0 10 10 10
139588 + 30 30 30 74 74 74 174 135 50 216 158 10
139589 +236 178 12 246 190 14 246 190 14 246 190 14
139590 +246 190 14 246 190 14 246 190 14 246 190 14
139591 +246 190 14 246 190 14 246 190 14 246 190 14
139592 +246 190 14 246 190 14 241 196 14 226 184 13
139593 + 61 42 6 2 2 6 2 2 6 2 2 6
139594 + 22 22 22 238 238 238 253 253 253 253 253 253
139595 +253 253 253 253 253 253 253 253 253 253 253 253
139596 +253 253 253 253 253 253 253 253 253 253 253 253
139597 +253 253 253 253 253 253 253 253 253 253 253 253
139598 +253 253 253 226 226 226 187 187 187 180 133 36
139599 +216 158 10 236 178 12 239 182 13 236 178 12
139600 +230 174 11 226 170 11 226 170 11 230 174 11
139601 +236 178 12 242 186 14 246 190 14 246 190 14
139602 +246 190 14 246 190 14 246 186 14 239 182 13
139603 +206 162 42 106 106 106 66 66 66 34 34 34
139604 + 14 14 14 6 6 6 0 0 0 0 0 0
139605 + 0 0 0 0 0 0 0 0 0 0 0 0
139606 + 0 0 0 0 0 0 0 0 0 0 0 0
139607 + 0 0 0 0 0 0 0 0 0 6 6 6
139608 + 26 26 26 70 70 70 163 133 67 213 154 11
139609 +236 178 12 246 190 14 246 190 14 246 190 14
139610 +246 190 14 246 190 14 246 190 14 246 190 14
139611 +246 190 14 246 190 14 246 190 14 246 190 14
139612 +246 190 14 246 190 14 246 190 14 241 196 14
139613 +190 146 13 18 14 6 2 2 6 2 2 6
139614 + 46 46 46 246 246 246 253 253 253 253 253 253
139615 +253 253 253 253 253 253 253 253 253 253 253 253
139616 +253 253 253 253 253 253 253 253 253 253 253 253
139617 +253 253 253 253 253 253 253 253 253 253 253 253
139618 +253 253 253 221 221 221 86 86 86 156 107 11
139619 +216 158 10 236 178 12 242 186 14 246 186 14
139620 +242 186 14 239 182 13 239 182 13 242 186 14
139621 +242 186 14 246 186 14 246 190 14 246 190 14
139622 +246 190 14 246 190 14 246 190 14 246 190 14
139623 +242 186 14 225 175 15 142 122 72 66 66 66
139624 + 30 30 30 10 10 10 0 0 0 0 0 0
139625 + 0 0 0 0 0 0 0 0 0 0 0 0
139626 + 0 0 0 0 0 0 0 0 0 0 0 0
139627 + 0 0 0 0 0 0 0 0 0 6 6 6
139628 + 26 26 26 70 70 70 163 133 67 210 150 10
139629 +236 178 12 246 190 14 246 190 14 246 190 14
139630 +246 190 14 246 190 14 246 190 14 246 190 14
139631 +246 190 14 246 190 14 246 190 14 246 190 14
139632 +246 190 14 246 190 14 246 190 14 246 190 14
139633 +232 195 16 121 92 8 34 34 34 106 106 106
139634 +221 221 221 253 253 253 253 253 253 253 253 253
139635 +253 253 253 253 253 253 253 253 253 253 253 253
139636 +253 253 253 253 253 253 253 253 253 253 253 253
139637 +253 253 253 253 253 253 253 253 253 253 253 253
139638 +242 242 242 82 82 82 18 14 6 163 110 8
139639 +216 158 10 236 178 12 242 186 14 246 190 14
139640 +246 190 14 246 190 14 246 190 14 246 190 14
139641 +246 190 14 246 190 14 246 190 14 246 190 14
139642 +246 190 14 246 190 14 246 190 14 246 190 14
139643 +246 190 14 246 190 14 242 186 14 163 133 67
139644 + 46 46 46 18 18 18 6 6 6 0 0 0
139645 + 0 0 0 0 0 0 0 0 0 0 0 0
139646 + 0 0 0 0 0 0 0 0 0 0 0 0
139647 + 0 0 0 0 0 0 0 0 0 10 10 10
139648 + 30 30 30 78 78 78 163 133 67 210 150 10
139649 +236 178 12 246 186 14 246 190 14 246 190 14
139650 +246 190 14 246 190 14 246 190 14 246 190 14
139651 +246 190 14 246 190 14 246 190 14 246 190 14
139652 +246 190 14 246 190 14 246 190 14 246 190 14
139653 +241 196 14 215 174 15 190 178 144 253 253 253
139654 +253 253 253 253 253 253 253 253 253 253 253 253
139655 +253 253 253 253 253 253 253 253 253 253 253 253
139656 +253 253 253 253 253 253 253 253 253 253 253 253
139657 +253 253 253 253 253 253 253 253 253 218 218 218
139658 + 58 58 58 2 2 6 22 18 6 167 114 7
139659 +216 158 10 236 178 12 246 186 14 246 190 14
139660 +246 190 14 246 190 14 246 190 14 246 190 14
139661 +246 190 14 246 190 14 246 190 14 246 190 14
139662 +246 190 14 246 190 14 246 190 14 246 190 14
139663 +246 190 14 246 186 14 242 186 14 190 150 46
139664 + 54 54 54 22 22 22 6 6 6 0 0 0
139665 + 0 0 0 0 0 0 0 0 0 0 0 0
139666 + 0 0 0 0 0 0 0 0 0 0 0 0
139667 + 0 0 0 0 0 0 0 0 0 14 14 14
139668 + 38 38 38 86 86 86 180 133 36 213 154 11
139669 +236 178 12 246 186 14 246 190 14 246 190 14
139670 +246 190 14 246 190 14 246 190 14 246 190 14
139671 +246 190 14 246 190 14 246 190 14 246 190 14
139672 +246 190 14 246 190 14 246 190 14 246 190 14
139673 +246 190 14 232 195 16 190 146 13 214 214 214
139674 +253 253 253 253 253 253 253 253 253 253 253 253
139675 +253 253 253 253 253 253 253 253 253 253 253 253
139676 +253 253 253 253 253 253 253 253 253 253 253 253
139677 +253 253 253 250 250 250 170 170 170 26 26 26
139678 + 2 2 6 2 2 6 37 26 9 163 110 8
139679 +219 162 10 239 182 13 246 186 14 246 190 14
139680 +246 190 14 246 190 14 246 190 14 246 190 14
139681 +246 190 14 246 190 14 246 190 14 246 190 14
139682 +246 190 14 246 190 14 246 190 14 246 190 14
139683 +246 186 14 236 178 12 224 166 10 142 122 72
139684 + 46 46 46 18 18 18 6 6 6 0 0 0
139685 + 0 0 0 0 0 0 0 0 0 0 0 0
139686 + 0 0 0 0 0 0 0 0 0 0 0 0
139687 + 0 0 0 0 0 0 6 6 6 18 18 18
139688 + 50 50 50 109 106 95 192 133 9 224 166 10
139689 +242 186 14 246 190 14 246 190 14 246 190 14
139690 +246 190 14 246 190 14 246 190 14 246 190 14
139691 +246 190 14 246 190 14 246 190 14 246 190 14
139692 +246 190 14 246 190 14 246 190 14 246 190 14
139693 +242 186 14 226 184 13 210 162 10 142 110 46
139694 +226 226 226 253 253 253 253 253 253 253 253 253
139695 +253 253 253 253 253 253 253 253 253 253 253 253
139696 +253 253 253 253 253 253 253 253 253 253 253 253
139697 +198 198 198 66 66 66 2 2 6 2 2 6
139698 + 2 2 6 2 2 6 50 34 6 156 107 11
139699 +219 162 10 239 182 13 246 186 14 246 190 14
139700 +246 190 14 246 190 14 246 190 14 246 190 14
139701 +246 190 14 246 190 14 246 190 14 246 190 14
139702 +246 190 14 246 190 14 246 190 14 242 186 14
139703 +234 174 13 213 154 11 154 122 46 66 66 66
139704 + 30 30 30 10 10 10 0 0 0 0 0 0
139705 + 0 0 0 0 0 0 0 0 0 0 0 0
139706 + 0 0 0 0 0 0 0 0 0 0 0 0
139707 + 0 0 0 0 0 0 6 6 6 22 22 22
139708 + 58 58 58 154 121 60 206 145 10 234 174 13
139709 +242 186 14 246 186 14 246 190 14 246 190 14
139710 +246 190 14 246 190 14 246 190 14 246 190 14
139711 +246 190 14 246 190 14 246 190 14 246 190 14
139712 +246 190 14 246 190 14 246 190 14 246 190 14
139713 +246 186 14 236 178 12 210 162 10 163 110 8
139714 + 61 42 6 138 138 138 218 218 218 250 250 250
139715 +253 253 253 253 253 253 253 253 253 250 250 250
139716 +242 242 242 210 210 210 144 144 144 66 66 66
139717 + 6 6 6 2 2 6 2 2 6 2 2 6
139718 + 2 2 6 2 2 6 61 42 6 163 110 8
139719 +216 158 10 236 178 12 246 190 14 246 190 14
139720 +246 190 14 246 190 14 246 190 14 246 190 14
139721 +246 190 14 246 190 14 246 190 14 246 190 14
139722 +246 190 14 239 182 13 230 174 11 216 158 10
139723 +190 142 34 124 112 88 70 70 70 38 38 38
139724 + 18 18 18 6 6 6 0 0 0 0 0 0
139725 + 0 0 0 0 0 0 0 0 0 0 0 0
139726 + 0 0 0 0 0 0 0 0 0 0 0 0
139727 + 0 0 0 0 0 0 6 6 6 22 22 22
139728 + 62 62 62 168 124 44 206 145 10 224 166 10
139729 +236 178 12 239 182 13 242 186 14 242 186 14
139730 +246 186 14 246 190 14 246 190 14 246 190 14
139731 +246 190 14 246 190 14 246 190 14 246 190 14
139732 +246 190 14 246 190 14 246 190 14 246 190 14
139733 +246 190 14 236 178 12 216 158 10 175 118 6
139734 + 80 54 7 2 2 6 6 6 6 30 30 30
139735 + 54 54 54 62 62 62 50 50 50 38 38 38
139736 + 14 14 14 2 2 6 2 2 6 2 2 6
139737 + 2 2 6 2 2 6 2 2 6 2 2 6
139738 + 2 2 6 6 6 6 80 54 7 167 114 7
139739 +213 154 11 236 178 12 246 190 14 246 190 14
139740 +246 190 14 246 190 14 246 190 14 246 190 14
139741 +246 190 14 242 186 14 239 182 13 239 182 13
139742 +230 174 11 210 150 10 174 135 50 124 112 88
139743 + 82 82 82 54 54 54 34 34 34 18 18 18
139744 + 6 6 6 0 0 0 0 0 0 0 0 0
139745 + 0 0 0 0 0 0 0 0 0 0 0 0
139746 + 0 0 0 0 0 0 0 0 0 0 0 0
139747 + 0 0 0 0 0 0 6 6 6 18 18 18
139748 + 50 50 50 158 118 36 192 133 9 200 144 11
139749 +216 158 10 219 162 10 224 166 10 226 170 11
139750 +230 174 11 236 178 12 239 182 13 239 182 13
139751 +242 186 14 246 186 14 246 190 14 246 190 14
139752 +246 190 14 246 190 14 246 190 14 246 190 14
139753 +246 186 14 230 174 11 210 150 10 163 110 8
139754 +104 69 6 10 10 10 2 2 6 2 2 6
139755 + 2 2 6 2 2 6 2 2 6 2 2 6
139756 + 2 2 6 2 2 6 2 2 6 2 2 6
139757 + 2 2 6 2 2 6 2 2 6 2 2 6
139758 + 2 2 6 6 6 6 91 60 6 167 114 7
139759 +206 145 10 230 174 11 242 186 14 246 190 14
139760 +246 190 14 246 190 14 246 186 14 242 186 14
139761 +239 182 13 230 174 11 224 166 10 213 154 11
139762 +180 133 36 124 112 88 86 86 86 58 58 58
139763 + 38 38 38 22 22 22 10 10 10 6 6 6
139764 + 0 0 0 0 0 0 0 0 0 0 0 0
139765 + 0 0 0 0 0 0 0 0 0 0 0 0
139766 + 0 0 0 0 0 0 0 0 0 0 0 0
139767 + 0 0 0 0 0 0 0 0 0 14 14 14
139768 + 34 34 34 70 70 70 138 110 50 158 118 36
139769 +167 114 7 180 123 7 192 133 9 197 138 11
139770 +200 144 11 206 145 10 213 154 11 219 162 10
139771 +224 166 10 230 174 11 239 182 13 242 186 14
139772 +246 186 14 246 186 14 246 186 14 246 186 14
139773 +239 182 13 216 158 10 185 133 11 152 99 6
139774 +104 69 6 18 14 6 2 2 6 2 2 6
139775 + 2 2 6 2 2 6 2 2 6 2 2 6
139776 + 2 2 6 2 2 6 2 2 6 2 2 6
139777 + 2 2 6 2 2 6 2 2 6 2 2 6
139778 + 2 2 6 6 6 6 80 54 7 152 99 6
139779 +192 133 9 219 162 10 236 178 12 239 182 13
139780 +246 186 14 242 186 14 239 182 13 236 178 12
139781 +224 166 10 206 145 10 192 133 9 154 121 60
139782 + 94 94 94 62 62 62 42 42 42 22 22 22
139783 + 14 14 14 6 6 6 0 0 0 0 0 0
139784 + 0 0 0 0 0 0 0 0 0 0 0 0
139785 + 0 0 0 0 0 0 0 0 0 0 0 0
139786 + 0 0 0 0 0 0 0 0 0 0 0 0
139787 + 0 0 0 0 0 0 0 0 0 6 6 6
139788 + 18 18 18 34 34 34 58 58 58 78 78 78
139789 +101 98 89 124 112 88 142 110 46 156 107 11
139790 +163 110 8 167 114 7 175 118 6 180 123 7
139791 +185 133 11 197 138 11 210 150 10 219 162 10
139792 +226 170 11 236 178 12 236 178 12 234 174 13
139793 +219 162 10 197 138 11 163 110 8 130 83 6
139794 + 91 60 6 10 10 10 2 2 6 2 2 6
139795 + 18 18 18 38 38 38 38 38 38 38 38 38
139796 + 38 38 38 38 38 38 38 38 38 38 38 38
139797 + 38 38 38 38 38 38 26 26 26 2 2 6
139798 + 2 2 6 6 6 6 70 47 6 137 92 6
139799 +175 118 6 200 144 11 219 162 10 230 174 11
139800 +234 174 13 230 174 11 219 162 10 210 150 10
139801 +192 133 9 163 110 8 124 112 88 82 82 82
139802 + 50 50 50 30 30 30 14 14 14 6 6 6
139803 + 0 0 0 0 0 0 0 0 0 0 0 0
139804 + 0 0 0 0 0 0 0 0 0 0 0 0
139805 + 0 0 0 0 0 0 0 0 0 0 0 0
139806 + 0 0 0 0 0 0 0 0 0 0 0 0
139807 + 0 0 0 0 0 0 0 0 0 0 0 0
139808 + 6 6 6 14 14 14 22 22 22 34 34 34
139809 + 42 42 42 58 58 58 74 74 74 86 86 86
139810 +101 98 89 122 102 70 130 98 46 121 87 25
139811 +137 92 6 152 99 6 163 110 8 180 123 7
139812 +185 133 11 197 138 11 206 145 10 200 144 11
139813 +180 123 7 156 107 11 130 83 6 104 69 6
139814 + 50 34 6 54 54 54 110 110 110 101 98 89
139815 + 86 86 86 82 82 82 78 78 78 78 78 78
139816 + 78 78 78 78 78 78 78 78 78 78 78 78
139817 + 78 78 78 82 82 82 86 86 86 94 94 94
139818 +106 106 106 101 101 101 86 66 34 124 80 6
139819 +156 107 11 180 123 7 192 133 9 200 144 11
139820 +206 145 10 200 144 11 192 133 9 175 118 6
139821 +139 102 15 109 106 95 70 70 70 42 42 42
139822 + 22 22 22 10 10 10 0 0 0 0 0 0
139823 + 0 0 0 0 0 0 0 0 0 0 0 0
139824 + 0 0 0 0 0 0 0 0 0 0 0 0
139825 + 0 0 0 0 0 0 0 0 0 0 0 0
139826 + 0 0 0 0 0 0 0 0 0 0 0 0
139827 + 0 0 0 0 0 0 0 0 0 0 0 0
139828 + 0 0 0 0 0 0 6 6 6 10 10 10
139829 + 14 14 14 22 22 22 30 30 30 38 38 38
139830 + 50 50 50 62 62 62 74 74 74 90 90 90
139831 +101 98 89 112 100 78 121 87 25 124 80 6
139832 +137 92 6 152 99 6 152 99 6 152 99 6
139833 +138 86 6 124 80 6 98 70 6 86 66 30
139834 +101 98 89 82 82 82 58 58 58 46 46 46
139835 + 38 38 38 34 34 34 34 34 34 34 34 34
139836 + 34 34 34 34 34 34 34 34 34 34 34 34
139837 + 34 34 34 34 34 34 38 38 38 42 42 42
139838 + 54 54 54 82 82 82 94 86 76 91 60 6
139839 +134 86 6 156 107 11 167 114 7 175 118 6
139840 +175 118 6 167 114 7 152 99 6 121 87 25
139841 +101 98 89 62 62 62 34 34 34 18 18 18
139842 + 6 6 6 0 0 0 0 0 0 0 0 0
139843 + 0 0 0 0 0 0 0 0 0 0 0 0
139844 + 0 0 0 0 0 0 0 0 0 0 0 0
139845 + 0 0 0 0 0 0 0 0 0 0 0 0
139846 + 0 0 0 0 0 0 0 0 0 0 0 0
139847 + 0 0 0 0 0 0 0 0 0 0 0 0
139848 + 0 0 0 0 0 0 0 0 0 0 0 0
139849 + 0 0 0 6 6 6 6 6 6 10 10 10
139850 + 18 18 18 22 22 22 30 30 30 42 42 42
139851 + 50 50 50 66 66 66 86 86 86 101 98 89
139852 +106 86 58 98 70 6 104 69 6 104 69 6
139853 +104 69 6 91 60 6 82 62 34 90 90 90
139854 + 62 62 62 38 38 38 22 22 22 14 14 14
139855 + 10 10 10 10 10 10 10 10 10 10 10 10
139856 + 10 10 10 10 10 10 6 6 6 10 10 10
139857 + 10 10 10 10 10 10 10 10 10 14 14 14
139858 + 22 22 22 42 42 42 70 70 70 89 81 66
139859 + 80 54 7 104 69 6 124 80 6 137 92 6
139860 +134 86 6 116 81 8 100 82 52 86 86 86
139861 + 58 58 58 30 30 30 14 14 14 6 6 6
139862 + 0 0 0 0 0 0 0 0 0 0 0 0
139863 + 0 0 0 0 0 0 0 0 0 0 0 0
139864 + 0 0 0 0 0 0 0 0 0 0 0 0
139865 + 0 0 0 0 0 0 0 0 0 0 0 0
139866 + 0 0 0 0 0 0 0 0 0 0 0 0
139867 + 0 0 0 0 0 0 0 0 0 0 0 0
139868 + 0 0 0 0 0 0 0 0 0 0 0 0
139869 + 0 0 0 0 0 0 0 0 0 0 0 0
139870 + 0 0 0 6 6 6 10 10 10 14 14 14
139871 + 18 18 18 26 26 26 38 38 38 54 54 54
139872 + 70 70 70 86 86 86 94 86 76 89 81 66
139873 + 89 81 66 86 86 86 74 74 74 50 50 50
139874 + 30 30 30 14 14 14 6 6 6 0 0 0
139875 + 0 0 0 0 0 0 0 0 0 0 0 0
139876 + 0 0 0 0 0 0 0 0 0 0 0 0
139877 + 0 0 0 0 0 0 0 0 0 0 0 0
139878 + 6 6 6 18 18 18 34 34 34 58 58 58
139879 + 82 82 82 89 81 66 89 81 66 89 81 66
139880 + 94 86 66 94 86 76 74 74 74 50 50 50
139881 + 26 26 26 14 14 14 6 6 6 0 0 0
139882 + 0 0 0 0 0 0 0 0 0 0 0 0
139883 + 0 0 0 0 0 0 0 0 0 0 0 0
139884 + 0 0 0 0 0 0 0 0 0 0 0 0
139885 + 0 0 0 0 0 0 0 0 0 0 0 0
139886 + 0 0 0 0 0 0 0 0 0 0 0 0
139887 + 0 0 0 0 0 0 0 0 0 0 0 0
139888 + 0 0 0 0 0 0 0 0 0 0 0 0
139889 + 0 0 0 0 0 0 0 0 0 0 0 0
139890 + 0 0 0 0 0 0 0 0 0 0 0 0
139891 + 6 6 6 6 6 6 14 14 14 18 18 18
139892 + 30 30 30 38 38 38 46 46 46 54 54 54
139893 + 50 50 50 42 42 42 30 30 30 18 18 18
139894 + 10 10 10 0 0 0 0 0 0 0 0 0
139895 + 0 0 0 0 0 0 0 0 0 0 0 0
139896 + 0 0 0 0 0 0 0 0 0 0 0 0
139897 + 0 0 0 0 0 0 0 0 0 0 0 0
139898 + 0 0 0 6 6 6 14 14 14 26 26 26
139899 + 38 38 38 50 50 50 58 58 58 58 58 58
139900 + 54 54 54 42 42 42 30 30 30 18 18 18
139901 + 10 10 10 0 0 0 0 0 0 0 0 0
139902 + 0 0 0 0 0 0 0 0 0 0 0 0
139903 + 0 0 0 0 0 0 0 0 0 0 0 0
139904 + 0 0 0 0 0 0 0 0 0 0 0 0
139905 + 0 0 0 0 0 0 0 0 0 0 0 0
139906 + 0 0 0 0 0 0 0 0 0 0 0 0
139907 + 0 0 0 0 0 0 0 0 0 0 0 0
139908 + 0 0 0 0 0 0 0 0 0 0 0 0
139909 + 0 0 0 0 0 0 0 0 0 0 0 0
139910 + 0 0 0 0 0 0 0 0 0 0 0 0
139911 + 0 0 0 0 0 0 0 0 0 6 6 6
139912 + 6 6 6 10 10 10 14 14 14 18 18 18
139913 + 18 18 18 14 14 14 10 10 10 6 6 6
139914 + 0 0 0 0 0 0 0 0 0 0 0 0
139915 + 0 0 0 0 0 0 0 0 0 0 0 0
139916 + 0 0 0 0 0 0 0 0 0 0 0 0
139917 + 0 0 0 0 0 0 0 0 0 0 0 0
139918 + 0 0 0 0 0 0 0 0 0 6 6 6
139919 + 14 14 14 18 18 18 22 22 22 22 22 22
139920 + 18 18 18 14 14 14 10 10 10 6 6 6
139921 + 0 0 0 0 0 0 0 0 0 0 0 0
139922 + 0 0 0 0 0 0 0 0 0 0 0 0
139923 + 0 0 0 0 0 0 0 0 0 0 0 0
139924 + 0 0 0 0 0 0 0 0 0 0 0 0
139925 + 0 0 0 0 0 0 0 0 0 0 0 0
139926 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/logo/logo_linux_vga16.ppm linux-2.6.29-rc3.owrt/drivers/video/logo/logo_linux_vga16.ppm
139927 --- linux-2.6.29.owrt/drivers/video/logo/logo_linux_vga16.ppm 2009-05-10 22:04:38.000000000 +0200
139928 +++ linux-2.6.29-rc3.owrt/drivers/video/logo/logo_linux_vga16.ppm 2009-05-10 23:48:29.000000000 +0200
139929 @@ -1,2739 +1,1604 @@
139930 P3
139931 -142 114
139932 +# Standard 16-color Linux logo
139933 +80 80
139934 255
139935 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139936 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139937 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139938 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139939 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139940 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139941 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139942 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139943 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139944 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139945 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139946 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139947 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139948 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139949 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139950 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139951 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139952 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139953 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139954 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139955 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139956 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139957 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139958 -0 0 0 0 0 0 0 0 0 0 0 0
139959 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139960 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139961 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139962 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139963 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139964 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139965 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139966 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139967 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139968 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139969 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139970 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139971 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139972 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139973 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139974 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139975 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139976 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139977 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139978 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139979 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139980 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139981 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139982 -0 0 0 0 0 0 0 0 0 0 0 0
139983 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139984 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139985 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139986 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139987 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139988 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139989 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139990 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139991 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139992 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139993 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139994 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139995 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139996 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139997 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139998 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
139999 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140000 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140001 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140002 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140003 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140004 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140005 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140006 -0 0 0 0 0 0 0 0 0 0 0 0
140007 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140008 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140009 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140010 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140011 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140012 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140013 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140014 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140015 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140016 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140017 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140018 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140019 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140020 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140021 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140022 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140023 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140024 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140025 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140026 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140027 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140028 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140029 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140030 -0 0 0 0 0 0 0 0 0 0 0 0
140031 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140032 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140033 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140034 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140035 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140036 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140037 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140038 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
140039 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140040 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140041 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140042 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140043 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140044 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140045 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140046 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140047 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140048 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140049 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140050 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140051 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140052 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140053 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140054 -0 0 0 0 0 0 0 0 0 0 0 0
140055 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140056 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140057 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140058 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140059 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140060 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140061 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140062 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85
140063 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140064 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140065 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140066 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140067 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140068 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140069 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140070 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140071 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140072 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140073 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140074 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140075 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140076 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140077 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140078 -0 0 0 0 0 0 0 0 0 0 0 0
140079 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140080 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140081 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140082 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140083 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140084 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140085 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
140086 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
140087 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140088 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140089 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140090 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140091 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140092 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140093 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140094 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140095 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140096 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140097 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140098 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140099 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140100 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140101 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140102 -0 0 0 0 0 0 0 0 0 0 0 0
140103 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140104 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140105 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140106 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140107 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140108 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140109 -85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
140110 -0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85
140111 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140112 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140113 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140114 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140115 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140116 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140117 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140118 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140119 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140120 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140121 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140122 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140123 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140124 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140125 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140126 -0 0 0 0 0 0 0 0 0 0 0 0
140127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140128 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140129 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140130 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140131 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140132 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
140133 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
140134 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140135 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140136 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140137 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140138 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140139 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140140 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140141 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140142 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140143 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140144 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140145 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140146 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140147 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140148 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140149 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140150 -0 0 0 0 0 0 0 0 0 0 0 0
140151 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140152 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140153 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140154 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140155 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140156 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170
140157 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
140158 -0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
140159 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140160 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140161 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140162 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140163 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140164 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
140165 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140166 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140167 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140168 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140169 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140170 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140171 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140172 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140173 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140174 -0 0 0 0 0 0 0 0 0 0 0 0
140175 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140176 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140177 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140178 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140179 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140180 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
140181 -85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
140182 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140183 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140184 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140185 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140186 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140187 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140188 -0 0 0 85 85 85 170 170 170 170 85 0 170 170 170 85 85 85
140189 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140190 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140191 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140192 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140193 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140194 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140195 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140196 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140197 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140198 -0 0 0 0 0 0 0 0 0 0 0 0
140199 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140200 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140201 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140202 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140203 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140204 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140205 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
140206 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
140207 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140208 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140209 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140210 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140211 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140212 -170 170 170 255 255 85 170 170 170 170 170 170 170 170 170 85 85 85
140213 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140214 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140215 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140216 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140217 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140218 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140219 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140220 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140221 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140222 -0 0 0 0 0 0 0 0 0 0 0 0
140223 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140224 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140225 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140226 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140227 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140228 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
140229 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140230 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140231 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140232 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140233 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140234 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140235 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170
140236 -255 255 85 170 170 170 170 170 170 170 85 0 85 255 85 170 85 0
140237 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140238 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140239 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140240 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140241 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140242 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140243 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140244 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140245 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140246 -0 0 0 0 0 0 0 0 0 0 0 0
140247 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140248 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140249 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140250 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140251 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140252 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140253 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
140254 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140255 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85
140256 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140257 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140258 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140259 -85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 170 85 0
140260 -170 170 170 170 170 170 255 255 85 170 170 170 170 170 170 85 85 85
140261 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140262 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140263 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140264 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140265 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140266 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140267 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140268 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140269 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140270 -0 0 0 0 0 0 0 0 0 0 0 0
140271 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140272 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140273 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140274 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140275 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140276 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
140277 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140278 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140279 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140280 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
140281 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140282 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140283 -0 0 0 0 0 0 85 85 85 85 85 85 170 85 0 170 170 170
140284 -170 170 170 170 85 0 170 170 170 170 170 170 170 85 0 85 85 85
140285 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140286 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140287 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140288 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140289 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140290 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140291 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140292 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140293 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140294 -0 0 0 0 0 0 0 0 0 0 0 0
140295 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140296 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140297 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140298 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140299 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140300 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140301 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140302 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140303 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
140304 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
140305 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140306 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140307 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 255 85
140308 -255 85 85 85 255 85 170 170 170 170 85 0 170 170 170 85 85 85
140309 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140310 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140311 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140312 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140313 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140314 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140315 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140316 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140317 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140318 -0 0 0 0 0 0 0 0 0 0 0 0
140319 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140320 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140321 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140322 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140323 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140324 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
140325 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140326 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140327 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
140328 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
140329 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
140330 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140331 -0 0 0 0 0 0 85 85 85 170 85 0 85 85 85 85 85 85
140332 -170 170 170 170 85 0 170 170 170 85 85 85 170 85 0 85 85 85
140333 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140334 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140335 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140336 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140337 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140338 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140339 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140340 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140341 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140342 -0 0 0 0 0 0 0 0 0 0 0 0
140343 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140344 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140345 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140346 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140347 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140348 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140349 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140350 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140351 -0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0
140352 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140353 -0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85
140354 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140355 -85 85 85 0 0 0 0 0 0 85 85 85 85 85 85 170 85 0
140356 -85 85 85 85 85 85 170 85 0 85 255 85 85 85 85 85 85 85
140357 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140358 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140359 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140360 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140361 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140362 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140363 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140364 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140365 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140366 -0 0 0 0 0 0 0 0 0 0 0 0
140367 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140368 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140369 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140370 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140371 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140372 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140373 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140374 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140375 -0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
140376 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140377 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140378 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
140379 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140380 -85 85 85 85 85 85 85 85 85 85 85 85 170 85 0 0 0 0
140381 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140382 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140383 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140384 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140385 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140386 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140387 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140388 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140389 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140390 -0 0 0 0 0 0 0 0 0 0 0 0
140391 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140392 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140393 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140394 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140395 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140396 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140397 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
140398 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140399 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
140400 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140401 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140402 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140403 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
140404 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
140405 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140406 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140407 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140408 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140409 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140410 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140411 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140412 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140413 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140414 -0 0 0 0 0 0 0 0 0 0 0 0
140415 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140416 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140417 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140418 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140419 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140420 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140421 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140422 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140423 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140424 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140425 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140426 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140427 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140428 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140429 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140430 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140431 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140432 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140433 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140434 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140435 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140436 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140437 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140438 -0 0 0 0 0 0 0 0 0 0 0 0
140439 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140440 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140441 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140442 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140443 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140444 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140445 -0 0 0 85 85 85 0 0 0 0 170 0 85 85 85 0 0 0
140446 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140447 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140448 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140449 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140450 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140451 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140452 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140453 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140454 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140455 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140456 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140457 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140458 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140459 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140460 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140461 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140462 -0 0 0 0 0 0 0 0 0 0 0 0
140463 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140464 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140465 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140466 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140467 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140468 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140469 -170 85 0 85 255 85 170 85 0 170 85 0 170 85 0 85 255 85
140470 -170 85 0 170 85 0 0 170 0 0 0 0 0 0 0 0 0 0
140471 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140472 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140473 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140474 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140475 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140476 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140477 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140478 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140479 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140480 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140481 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140482 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140483 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140484 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140485 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140486 -0 0 0 0 0 0 0 0 0 0 0 0
140487 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140488 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140489 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140490 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140491 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140492 -0 0 0 0 0 0 0 0 0 0 0 0 0 170 0 170 85 0
140493 -255 255 85 170 85 0 255 255 85 255 255 85 255 255 85 170 85 0
140494 -255 255 85 85 255 85 170 85 0 170 85 0 85 85 85 0 0 0
140495 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140496 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140497 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140498 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140499 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140500 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140501 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140502 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140503 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140504 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140505 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140506 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140507 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140508 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140509 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140510 -0 0 0 0 0 0 0 0 0 0 0 0
140511 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140512 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140513 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140514 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140515 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140516 -0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 255 255 85
140517 -85 255 85 255 255 85 255 255 85 170 85 0 255 255 85 255 255 85
140518 -255 255 85 170 85 0 255 255 85 85 255 85 170 85 0 0 0 0
140519 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140520 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140521 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140522 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140523 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140524 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140525 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140526 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140527 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140528 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140529 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140530 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140531 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140532 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140533 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140534 -0 0 0 0 0 0 0 0 0 0 0 0
140535 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140536 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140537 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140538 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140539 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140540 -0 0 0 0 0 0 0 0 0 85 85 85 255 255 85 170 85 0
140541 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0
140542 -255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 85 255 85
140543 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140544 -0 0 0 85 85 85 0 0 0 85 85 85 170 170 170 0 0 0
140545 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140546 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
140547 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140548 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140549 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140550 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140551 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140552 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140553 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140554 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140555 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140556 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140557 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140558 -0 0 0 0 0 0 0 0 0 0 0 0
140559 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140560 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140561 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140562 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140563 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140564 -0 0 0 0 0 0 0 0 0 170 85 0 255 255 85 255 255 85
140565 -255 255 85 255 255 85 170 85 0 255 255 85 85 255 85 255 255 85
140566 -255 255 85 170 85 0 255 255 85 170 85 0 255 255 85 170 85 0
140567 -170 85 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
140568 -85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 0 0 0
140569 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140570 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140571 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
140572 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140573 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140574 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140575 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140576 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140577 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140578 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140579 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140580 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140581 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140582 -0 0 0 0 0 0 0 0 0 0 0 0
140583 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140584 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140585 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140586 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140587 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140588 -0 0 0 0 0 0 170 85 0 255 255 85 85 255 85 255 255 85
140589 -170 170 170 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140590 -255 255 85 255 255 85 85 255 85 255 255 85 255 255 85 255 255 85
140591 -85 255 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140592 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140593 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
140594 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140595 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140596 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140597 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140598 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140599 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140600 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140601 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140602 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140603 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140604 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140605 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140606 -0 0 0 0 0 0 0 0 0 0 0 0
140607 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140608 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140609 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140610 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140611 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140612 -0 0 0 0 0 0 170 85 0 255 255 85 255 255 85 255 255 85
140613 -255 255 255 255 255 85 255 255 85 170 85 0 255 255 85 170 85 0
140614 -255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 255 255 85
140615 -170 85 0 170 85 0 0 170 0 0 0 0 85 85 85 0 0 0
140616 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140617 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
140618 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140619 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140620 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140621 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140622 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140623 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140624 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140625 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140626 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140627 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140628 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140629 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140630 -0 0 0 0 0 0 0 0 0 0 0 0
140631 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140632 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140633 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140634 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140635 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140636 -0 0 0 170 85 0 85 255 85 255 255 85 170 170 170 255 255 255
140637 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140638 -255 255 85 255 255 85 170 85 0 255 255 85 85 255 85 255 255 85
140639 -255 255 85 85 255 85 0 0 0 85 85 85 0 0 0 85 85 85
140640 -0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0
140641 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140642 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140643 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140644 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140645 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140646 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140647 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140648 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140649 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140650 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140651 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140652 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140653 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140654 -0 0 0 0 0 0 0 0 0 0 0 0
140655 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140656 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140657 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140658 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140659 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140660 -0 0 0 255 255 85 255 255 85 255 255 85 255 255 255 255 255 85
140661 -255 255 85 255 255 85 85 255 85 255 255 85 255 255 85 85 255 85
140662 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0
140663 -255 255 85 170 85 0 85 85 85 0 0 0 0 0 0 85 85 85
140664 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
140665 -85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85
140666 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140667 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140668 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140669 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140670 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140671 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140672 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140673 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140674 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140675 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140676 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140677 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140678 -0 0 0 0 0 0 0 0 0 0 0 0
140679 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140680 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140681 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140682 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140683 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140684 -170 85 0 170 85 0 255 255 85 255 255 85 255 255 255 170 170 170
140685 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140686 -170 85 0 255 255 85 255 255 85 170 85 0 255 255 85 255 255 85
140687 -255 255 85 85 255 85 170 85 0 85 85 85 0 0 0 0 0 0
140688 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
140689 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
140690 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140691 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140692 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
140693 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140694 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140695 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140696 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140697 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140698 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140699 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140700 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140701 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140702 -0 0 0 0 0 0 0 0 0 0 0 0
140703 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140704 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140705 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140706 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140707 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140708 -255 255 85 85 255 85 255 255 85 170 170 170 255 255 255 255 255 85
140709 -255 255 85 255 255 85 170 85 0 255 255 85 255 255 85 255 255 85
140710 -255 255 85 255 255 85 255 255 85 255 255 85 85 255 85 170 85 0
140711 -255 255 85 170 85 0 170 85 0 0 0 0 85 85 85 0 0 0
140712 -85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170
140713 -85 255 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170
140714 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170
140715 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170
140716 -170 170 170 170 170 170 170 170 170 170 170 170 255 255 85 170 170 170
140717 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140718 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140719 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140720 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140721 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140722 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140723 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140724 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140725 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140726 -0 0 0 0 0 0 0 0 0 0 0 0
140727 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140728 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140729 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140730 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140731 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 0
140732 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140733 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140734 -255 255 85 255 255 85 85 255 85 255 255 85 170 85 0 170 85 0
140735 -170 85 0 85 255 85 255 255 85 85 85 85 170 170 170 170 170 170
140736 -170 170 170 170 170 170 170 170 170 85 255 85 170 170 170 170 170 170
140737 -85 85 85 170 170 170 170 170 170 170 85 0 170 170 170 170 170 170
140738 -85 255 85 170 170 170 170 85 0 170 170 170 85 255 85 255 85 85
140739 -85 255 85 170 170 170 255 255 85 85 85 85 255 255 85 170 170 170
140740 -85 255 85 170 170 170 255 255 85 170 170 170 170 170 170 85 85 85
140741 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140742 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140743 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140744 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140745 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140746 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140747 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140748 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140749 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140750 -0 0 0 0 0 0 0 0 0 0 0 0
140751 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140752 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140753 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140754 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140755 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 85
140756 -255 255 85 255 255 85 255 255 85 255 255 255 255 255 85 255 255 85
140757 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0
140758 -255 255 85 255 255 85 255 255 85 170 85 0 0 170 0 85 85 85
140759 -170 170 170 170 170 170 255 255 85 170 170 170 170 170 170 85 255 85
140760 -255 85 85 85 255 85 85 85 85 255 85 85 85 85 85 170 170 170
140761 -170 85 0 170 170 170 85 85 85 85 255 85 85 85 85 85 85 85
140762 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140763 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140764 -170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140765 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140766 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140767 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140768 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140769 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140770 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140771 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140772 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140773 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140774 -0 0 0 0 0 0 0 0 0 0 0 0
140775 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140776 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140777 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140778 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140779 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 85
140780 -170 85 0 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140781 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140782 -255 255 85 255 255 85 170 85 0 255 255 85 85 85 85 85 85 85
140783 -255 255 85 170 170 170 85 85 85 85 85 85 0 0 0 85 85 85
140784 -0 0 0 85 85 85 85 85 85 170 170 170 170 85 0 170 170 170
140785 -170 170 170 255 255 85 170 170 170 85 85 85 85 85 85 85 85 85
140786 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140787 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140788 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140789 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140790 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140791 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140792 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140793 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140794 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140795 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140796 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140797 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140798 -0 0 0 0 0 0 0 0 0 0 0 0
140799 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140800 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140801 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140802 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140803 -0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 255 255 85
140804 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140805 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140806 -255 255 85 255 255 85 255 255 85 170 85 0 170 85 0 0 170 0
140807 -0 0 0 170 85 0 170 85 0 0 170 0 0 0 0 0 0 0
140808 -85 85 85 0 0 0 85 85 85 85 85 85 170 170 170 85 85 85
140809 -170 170 170 85 85 85 85 85 85 170 170 170 170 85 0 85 85 85
140810 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140811 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140812 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140813 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140814 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140815 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140816 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140817 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140818 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140819 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140820 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140821 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140822 -0 0 0 0 0 0 0 0 0 0 0 0
140823 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140824 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140825 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140826 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140827 -0 0 0 0 0 0 0 0 0 0 0 0 255 255 85 170 85 0
140828 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 170 85 0
140829 -255 255 85 255 255 85 255 255 85 170 85 0 255 255 85 255 255 85
140830 -170 85 0 255 255 85 85 255 85 255 255 85 255 255 85 170 85 0
140831 -170 85 0 255 255 85 170 85 0 0 0 0 0 0 0 0 0 0
140832 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
140833 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
140834 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140835 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140836 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140837 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140838 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140839 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140840 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140841 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140842 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140843 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140844 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140845 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140846 -0 0 0 0 0 0 0 0 0 0 0 0
140847 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140848 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140849 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140850 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140851 -0 0 0 0 0 0 0 0 0 0 0 0 255 255 85 255 255 85
140852 -255 255 85 255 255 85 170 85 0 255 255 85 255 255 85 255 255 85
140853 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140854 -255 255 85 255 255 85 255 255 85 170 85 0 255 255 85 255 255 85
140855 -85 255 85 170 85 0 0 170 0 85 85 85 0 0 0 85 85 85
140856 -0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 85 85 85
140857 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
140858 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140859 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140860 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140861 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140862 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140863 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140864 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140865 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140866 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140867 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140868 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140869 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140870 -0 0 0 0 0 0 0 0 0 0 0 0
140871 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140872 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140873 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140874 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140875 -0 0 0 0 0 0 0 0 0 0 170 0 170 85 0 255 255 85
140876 -85 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140877 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140878 -170 85 0 255 255 85 85 255 85 255 255 85 255 255 85 170 85 0
140879 -85 255 85 170 85 0 170 85 0 0 0 0 0 0 0 0 0 0
140880 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140881 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
140882 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
140883 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
140884 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140885 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140886 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140887 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140888 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140889 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140890 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140891 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140892 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140893 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140894 -0 0 0 0 0 0 0 0 0 0 0 0
140895 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140896 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140897 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140898 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140899 -0 0 0 0 0 0 0 0 0 170 85 0 255 255 85 255 255 85
140900 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140901 -255 255 85 170 85 0 255 255 85 85 255 85 255 255 85 170 85 0
140902 -255 255 85 255 255 85 170 85 0 255 255 85 170 85 0 85 255 85
140903 -170 85 0 170 85 0 0 0 0 0 0 0 0 0 0 85 85 85
140904 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140905 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140906 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
140907 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140908 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140909 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140910 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140911 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140912 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140913 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140914 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140915 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140916 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140917 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140918 -0 0 0 0 0 0 0 0 0 0 0 0
140919 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140920 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140921 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140922 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140923 -0 0 0 0 0 0 0 0 0 85 85 85 255 255 85 170 85 0
140924 -255 255 85 170 85 0 255 255 85 170 85 0 255 255 85 85 255 85
140925 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140926 -255 255 85 170 85 0 255 255 85 85 255 85 170 85 0 170 85 0
140927 -0 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140928 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140929 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
140930 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140931 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
140932 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
140933 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140934 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140935 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140936 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140937 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140938 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140939 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140940 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140941 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140942 -0 0 0 0 0 0 0 0 0 0 0 0
140943 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140944 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140945 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140946 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140947 -0 0 0 0 0 0 0 0 0 170 85 0 255 255 85 255 255 85
140948 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 255 255 85
140949 -255 255 85 255 255 85 170 85 0 255 255 85 170 85 0 85 255 85
140950 -255 255 85 85 255 85 170 85 0 170 85 0 85 255 85 170 85 0
140951 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
140952 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
140953 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140954 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140955 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140956 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
140957 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140958 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140959 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140960 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140961 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140962 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140963 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140964 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140965 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140966 -0 0 0 0 0 0 0 0 0 0 0 0
140967 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140968 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140969 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140970 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140971 -0 0 0 0 0 0 0 0 0 85 85 85 255 255 85 85 255 85
140972 -255 255 85 255 255 85 85 255 85 255 255 85 255 255 85 255 255 85
140973 -255 255 85 170 85 0 255 255 85 85 255 85 255 255 85 255 255 85
140974 -170 85 0 170 85 0 85 255 85 170 85 0 0 0 0 0 0 0
140975 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140976 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
140977 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
140978 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
140979 -0 0 0 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170
140980 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85
140981 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140982 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140983 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140984 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140985 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140986 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140987 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140988 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140989 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140990 -0 0 0 0 0 0 0 0 0 0 0 0
140991 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140992 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140993 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140994 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
140995 -0 0 0 0 0 0 0 0 0 85 85 85 255 255 85 255 255 85
140996 -170 85 0 255 255 85 255 255 85 170 85 0 255 255 85 170 85 0
140997 -255 255 85 85 255 85 170 85 0 255 255 85 170 85 0 85 255 85
140998 -170 85 0 170 85 0 0 0 0 0 0 0 0 0 0 0 0 0
140999 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141000 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141001 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141002 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141003 -85 85 85 0 0 0 170 170 170 170 170 170 170 170 170 170 170 170
141004 -170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 85 85 85
141005 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141006 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141007 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141008 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141009 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141010 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141011 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141012 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141013 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141014 -0 0 0 0 0 0 0 0 0 0 0 0
141015 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141016 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141017 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141018 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141019 -0 0 0 0 0 0 0 0 0 0 0 0 170 85 0 255 255 85
141020 -255 255 85 255 255 85 255 255 85 255 255 85 255 255 85 85 255 85
141021 -170 85 0 255 255 85 170 85 0 85 255 85 170 85 0 170 85 0
141022 -0 170 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141023 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141024 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141025 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141026 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141027 -0 0 0 85 85 85 170 170 170 170 170 170 255 255 255 170 170 170
141028 -170 170 170 170 170 170 85 85 85 85 85 85 85 85 85 85 85 85
141029 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141030 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141031 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141032 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141033 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141034 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141035 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141036 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141037 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141038 -0 0 0 0 0 0 0 0 0 0 0 0
141039 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141040 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141041 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141042 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141043 -0 0 0 0 0 0 0 0 0 0 0 0 85 255 85 255 255 85
141044 -170 85 0 255 255 85 255 255 85 170 85 0 85 255 85 170 85 0
141045 -255 255 85 170 85 0 0 170 0 170 85 0 0 0 0 0 0 0
141046 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141047 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141048 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141049 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141050 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141051 -85 85 85 0 0 0 170 170 170 170 170 170 170 170 170 85 85 85
141052 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
141053 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141054 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141055 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141056 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141057 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141058 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141059 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141060 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141061 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141062 -0 0 0 0 0 0 0 0 0 0 0 0
141063 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141064 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141065 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141066 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141067 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 85
141068 -255 255 85 255 255 85 255 255 85 255 255 85 170 85 0 170 85 0
141069 -0 170 0 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85
141070 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141071 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
141072 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
141073 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141074 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141075 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141076 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141077 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141078 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141079 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141080 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141081 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141082 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141083 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141084 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141085 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141086 -0 0 0 0 0 0 0 0 0 0 0 0
141087 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141088 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141089 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141090 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141091 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141092 -255 255 85 255 255 85 170 85 0 0 170 0 85 85 85 85 85 85
141093 -85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0
141094 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141095 -85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 85 85 85
141096 -170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85
141097 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
141098 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141099 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141100 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141101 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141102 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141103 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141104 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141105 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141106 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141107 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141108 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141109 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141110 -0 0 0 0 0 0 0 0 0 0 0 0
141111 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141112 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141113 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141114 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141115 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141116 -0 0 0 170 85 0 85 85 85 0 0 0 0 0 0 0 0 0
141117 -85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 85 85 85
141118 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
141119 -170 170 170 170 170 170 170 170 170 170 170 170 255 255 255 255 255 255
141120 -255 255 255 255 255 255 255 255 255 170 170 170 255 255 255 170 170 170
141121 -170 170 170 170 170 170 170 170 170 85 85 85 85 85 85 85 85 85
141122 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141123 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141124 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141125 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141126 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141128 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141129 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141130 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141131 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141132 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141133 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141134 -0 0 0 0 0 0 0 0 0 0 0 0
141135 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141136 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141137 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141138 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141139 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141140 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141141 -85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170
141142 -255 255 255 255 255 255 255 255 255 170 170 170 255 255 255 170 170 170
141143 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
141144 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
141145 -255 255 255 255 255 255 170 170 170 255 255 255 170 170 170 85 85 85
141146 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141147 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141148 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141149 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141150 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141151 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141152 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141153 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141154 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141155 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141156 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141157 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141158 -0 0 0 0 0 0 0 0 0 0 0 0
141159 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141160 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141161 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141162 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141163 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141164 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141165 -85 85 85 85 85 85 85 85 85 85 85 85 170 170 170 170 170 170
141166 -255 255 255 170 170 170 255 255 255 255 255 255 255 255 255 255 255 255
141167 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170
141168 -255 255 255 255 255 255 170 170 170 255 255 255 255 255 255 255 255 255
141169 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 85 85 85
141170 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141171 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141172 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141173 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141174 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141175 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141176 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141177 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141178 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141179 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141180 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141181 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141182 -0 0 0 0 0 0 0 0 0 0 0 0
141183 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141184 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141185 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141186 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141187 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141188 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141189 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 170 170 170
141190 -170 170 170 170 170 170 255 255 255 170 170 170 255 255 255 170 170 170
141191 -255 255 255 170 170 170 255 255 255 170 170 170 255 255 255 255 255 255
141192 -255 255 255 170 170 170 255 255 255 170 170 170 255 255 255 170 170 170
141193 -170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 85 85 85
141194 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141195 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141196 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141197 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141198 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141199 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141200 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141201 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141202 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141203 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141204 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141205 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141206 -0 0 0 0 0 0 0 0 0 0 0 0
141207 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141208 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141209 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141210 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141211 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141212 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141213 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85
141214 -85 85 85 85 85 85 85 85 85 170 170 170 170 170 170 170 170 170
141215 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170
141216 -170 170 170 170 170 170 170 170 170 170 170 170 85 85 85 170 170 170
141217 -170 170 170 170 170 170 85 85 85 0 0 0 85 85 85 0 0 0
141218 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141219 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141220 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141221 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141222 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141223 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141224 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141225 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141226 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141227 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141228 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141229 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141230 -0 0 0 0 0 0 0 0 0 0 0 0
141231 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141232 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141233 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141234 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141235 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141236 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
141237 -170 170 170 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
141238 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
141239 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
141240 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
141241 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141242 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141243 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141244 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141245 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141246 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141247 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141248 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141249 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141250 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141251 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141252 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141253 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141254 -0 0 0 0 0 0 0 0 0 0 0 0
141255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141256 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141257 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141258 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141259 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141260 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 85 85 85
141261 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
141262 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141263 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141264 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141265 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141266 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141267 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141268 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141269 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141270 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141271 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141272 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141273 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141274 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141275 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141276 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141277 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141278 -0 0 0 0 0 0 0 0 0 0 0 0
141279 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141280 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141281 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141282 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141283 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141284 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
141285 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
141286 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141287 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141288 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141289 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141290 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141291 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141292 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141293 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141294 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141295 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141296 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141297 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141298 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141299 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141300 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141301 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141302 -0 0 0 0 0 0 0 0 0 0 0 0
141303 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141304 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141305 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141306 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141307 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141308 -0 0 0 0 0 0 85 85 85 85 85 85 170 170 170 85 85 85
141309 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
141310 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141311 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141312 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141313 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141314 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141315 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141316 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
141317 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141318 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141319 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141320 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141321 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141322 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141323 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141324 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141325 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141326 -0 0 0 0 0 0 0 0 0 0 0 0
141327 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141328 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141329 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141330 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141331 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141332 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
141333 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141334 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141335 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141336 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141337 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141338 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141339 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141340 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141341 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141342 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141343 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141344 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141345 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141346 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141347 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141348 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141349 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141350 -0 0 0 0 0 0 85 85 85 85 85 85
141351 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141352 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141353 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141354 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141355 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141356 -0 0 0 85 85 85 85 85 85 170 170 170 85 85 85 85 85 85
141357 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141358 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141359 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141360 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141361 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141362 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141363 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141364 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141365 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141366 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141367 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141368 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141369 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141370 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141371 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141372 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141373 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141374 -0 0 0 85 85 85 170 170 170 170 170 170
141375 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141376 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141377 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141378 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141379 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141380 -0 0 0 85 85 85 170 170 170 85 85 85 85 85 85 85 85 85
141381 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141382 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141383 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141384 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141385 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141386 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141387 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
141388 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141389 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141390 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141391 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141392 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141393 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141394 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141395 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141396 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141397 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141398 -85 85 85 170 170 170 255 255 255 170 170 170
141399 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141400 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141401 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141402 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141403 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141404 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
141405 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141406 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141407 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141408 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141409 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141410 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141411 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141412 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141413 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141414 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141415 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141416 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141417 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141418 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141419 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141420 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141421 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170
141422 -170 170 170 255 255 255 170 170 170 170 170 170
141423 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141424 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141425 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141426 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141427 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141428 -85 85 85 170 170 170 85 85 85 85 85 85 85 85 85 0 0 0
141429 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141430 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141431 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141432 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141433 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141434 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141435 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
141436 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141437 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141438 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141439 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141440 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141441 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141442 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141443 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141444 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141445 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170
141446 -255 255 255 255 255 255 170 170 170 170 170 170
141447 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141448 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141449 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141450 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141451 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141452 -85 85 85 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
141453 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141454 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141455 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141456 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141457 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141458 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141459 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141460 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141461 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141462 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141463 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141464 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141465 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141466 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141467 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141468 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141469 -0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 255 255 255
141470 -255 255 255 170 170 170 170 170 170 0 0 0
141471 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141472 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141473 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141474 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141475 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141476 -170 170 170 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
141477 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141478 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141479 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141480 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141481 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141482 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141483 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 85 85 85
141484 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141485 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141486 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141487 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141488 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141489 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141490 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141491 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141492 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141493 -0 0 0 85 85 85 170 170 170 255 255 255 255 255 255 255 255 255
141494 -170 170 170 170 170 170 85 85 85 0 0 0
141495 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141496 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141497 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141498 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141499 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
141500 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
141501 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141502 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141503 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141504 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141505 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141506 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141507 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141508 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141509 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141510 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141511 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141512 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141513 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141514 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141515 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141516 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141517 -170 170 170 170 170 170 255 255 255 255 255 255 255 255 255 170 170 170
141518 -170 170 170 170 170 170 0 0 0 0 0 0
141519 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141520 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141521 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141522 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141523 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
141524 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 85 85 85
141525 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141526 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141527 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141528 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141529 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141530 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141531 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141532 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141533 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141534 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141535 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141536 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141537 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141538 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141539 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141540 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170
141541 -170 170 170 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170
141542 -170 170 170 0 0 0 0 0 0 0 0 0
141543 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141544 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141545 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141546 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141547 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
141548 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
141549 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141550 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141551 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141552 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141553 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141554 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141555 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
141556 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141557 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141558 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141559 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141560 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141561 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141562 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141563 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141564 -0 0 0 0 0 0 85 85 85 170 170 170 170 170 170 170 170 170
141565 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170
141566 -0 0 0 0 0 0 0 0 0 0 0 0
141567 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141568 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141569 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141570 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141571 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
141572 -85 85 85 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
141573 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141574 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141575 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141576 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141577 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141578 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141579 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
141580 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141581 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
141582 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141583 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141584 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141585 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141586 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141587 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141588 -85 85 85 170 170 170 170 170 170 255 255 255 255 255 255 255 255 255
141589 -255 255 255 255 255 255 170 170 170 170 170 170 85 85 85 0 0 0
141590 -0 0 0 0 0 0 0 0 0 0 0 0
141591 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141592 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141593 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141594 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141595 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
141596 -85 85 85 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
141597 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141598 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141599 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141600 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141601 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141602 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141603 -85 85 85 0 0 0 170 170 170 255 255 255 85 85 85 85 85 85
141604 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141605 -85 85 85 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
141606 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141607 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141608 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141609 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141610 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141611 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141612 -170 170 170 170 170 170 255 255 255 170 170 170 255 255 255 255 255 255
141613 -255 255 255 255 255 255 170 170 170 170 170 170 85 85 85 0 0 0
141614 -0 0 0 0 0 0 0 0 0 0 0 0
141615 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141616 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141617 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141618 -85 85 85 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
141619 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
141620 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141621 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141622 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141623 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141624 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141625 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141626 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141627 -0 0 0 85 85 85 170 170 170 255 255 255 170 170 170 85 85 85
141628 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141629 -255 255 255 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
141630 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141631 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141632 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141633 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141634 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141635 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
141636 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
141637 -170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
141638 -0 0 0 0 0 0 0 0 0 0 0 0
141639 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141640 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141641 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141642 -85 85 85 255 255 255 170 170 170 85 85 85 0 0 0 0 0 0
141643 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0
141644 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141645 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
141646 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141647 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141648 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141649 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141650 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141651 -85 85 85 85 85 85 255 255 255 255 255 255 255 255 255 85 85 85
141652 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 170 170 170
141653 -255 255 255 170 170 170 0 0 0 0 0 0 85 85 85 0 0 0
141654 -0 0 0 85 85 85 170 170 170 85 85 85 0 0 0 0 0 0
141655 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141656 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141657 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141658 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141659 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 170 170 170
141660 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170
141661 -170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141662 -0 0 0 0 0 0 0 0 0 0 0 0
141663 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141664 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141665 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141666 -170 170 170 255 255 255 255 255 255 170 170 170 0 0 0 0 0 0
141667 -0 0 0 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0
141668 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
141669 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141670 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141671 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141672 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141673 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141674 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
141675 -85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 85 85 85
141676 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 255 255 255
141677 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141678 -85 85 85 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0
141679 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141680 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141681 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141682 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141683 -85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 85 85 85
141684 -170 170 170 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170
141685 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141686 -0 0 0 0 0 0 0 0 0 0 0 0
141687 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141688 -0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 170 170 170
141689 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141690 -170 170 170 255 255 255 255 255 255 255 255 255 85 85 85 0 0 0
141691 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 0 0 0
141692 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141693 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141694 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141695 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141696 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141697 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141698 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141699 -85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 170 170 170
141700 -0 0 0 85 85 85 0 0 0 85 85 85 170 170 170 255 255 255
141701 -255 255 255 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
141702 -85 85 85 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0
141703 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141704 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141705 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141706 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
141707 -0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85
141708 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 85 85 85
141709 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141710 -0 0 0 0 0 0 0 0 0 0 0 0
141711 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141712 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255
141713 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141714 -85 85 85 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0
141715 -0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
141716 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141717 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141718 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141719 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141720 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141721 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141722 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
141723 -85 85 85 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170
141724 -85 85 85 0 0 0 0 0 0 85 85 85 170 170 170 255 255 255
141725 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141726 -170 170 170 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0
141727 -85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141728 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141729 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141730 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141731 -85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0
141732 -85 85 85 85 85 85 170 170 170 85 85 85 85 85 85 0 0 0
141733 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141734 -0 0 0 0 0 0 0 0 0 0 0 0
141735 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141736 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170
141737 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141738 -85 85 85 170 170 170 255 255 255 255 255 255 255 255 255 170 170 170
141739 -0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
141740 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141741 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141742 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141743 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141744 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141745 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141746 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141747 -170 170 170 170 170 170 255 255 255 170 170 170 255 255 255 85 85 85
141748 -0 0 0 85 85 85 0 0 0 85 85 85 170 170 170 255 255 255
141749 -170 170 170 170 170 170 0 0 0 0 0 0 0 0 0 85 85 85
141750 -170 170 170 255 255 255 255 255 255 0 0 0 0 0 0 85 85 85
141751 -255 255 255 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141752 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141753 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141754 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
141755 -85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85
141756 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141757 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141758 -0 0 0 0 0 0 0 0 0 0 0 0
141759 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 0 0 0
141760 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255
141761 -255 255 255 255 255 255 170 170 170 0 0 0 0 0 0 0 0 0
141762 -85 85 85 170 170 170 255 255 255 170 170 170 170 170 170 170 170 170
141763 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141764 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141765 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141766 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141767 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141768 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141769 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141770 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
141771 -85 85 85 170 170 170 255 255 255 170 170 170 170 170 170 85 85 85
141772 -85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 170 170 170
141773 -170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85
141774 -170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 170 170 170
141775 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141776 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141777 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
141778 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141779 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141780 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141781 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141782 -0 0 0 0 0 0 0 0 0 0 0 0
141783 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170
141784 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 170 170 170
141785 -255 255 255 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0
141786 -0 0 0 85 85 85 170 170 170 170 170 170 255 255 85 85 85 85
141787 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
141788 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141789 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141790 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141791 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141792 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141793 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141794 -85 85 85 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85
141795 -85 85 85 170 170 170 170 170 170 170 170 170 170 85 0 85 85 85
141796 -0 0 0 85 85 85 0 0 0 85 85 85 170 170 170 170 85 0
141797 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141798 -170 85 0 170 170 170 85 85 85 0 0 0 85 85 85 85 85 85
141799 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141800 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141801 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141802 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141803 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141804 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141805 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141806 -0 0 0 0 0 0 0 0 0 0 0 0
141807 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 255 255 255
141808 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141809 -255 255 255 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0
141810 -0 0 0 85 85 85 170 85 0 170 170 170 170 170 170 85 85 85
141811 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141812 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141813 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141814 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141815 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141816 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141817 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141818 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 85 85 85
141819 -85 85 85 170 85 0 85 255 85 170 85 0 170 170 170 85 85 85
141820 -85 85 85 0 0 0 0 0 0 85 85 85 170 85 0 85 255 85
141821 -170 85 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141822 -85 85 85 85 85 85 170 85 0 0 0 0 85 85 85 85 85 85
141823 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141824 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141825 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141826 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 85 85 85
141827 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141828 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141829 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141830 -0 0 0 0 0 0 0 0 0 0 0 0
141831 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 255
141832 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141833 -170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0
141834 -0 0 0 0 0 0 170 170 170 170 85 0 170 170 170 170 85 0
141835 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141836 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141837 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141838 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141839 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141840 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141841 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141842 -85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0
141843 -85 85 85 85 85 85 255 85 85 170 170 170 85 255 85 170 85 0
141844 -85 85 85 85 85 85 170 85 0 85 85 85 170 170 170 85 85 85
141845 -170 170 170 170 85 0 85 85 85 85 85 85 85 85 85 85 85 85
141846 -170 85 0 85 255 85 85 85 85 85 85 85 85 85 85 170 85 0
141847 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141848 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141849 -85 85 85 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141850 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141851 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141852 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141853 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141854 -0 0 0 0 0 0 0 0 0 0 0 0
141855 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 170 170 170
141856 -255 255 255 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
141857 -85 85 85 170 85 0 170 170 170 170 85 0 85 85 85 0 0 0
141858 -85 85 85 85 85 85 85 255 85 170 170 170 170 170 170 170 85 0
141859 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141860 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141861 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141862 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141863 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141864 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141865 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
141866 -0 0 0 85 85 85 85 85 85 0 0 0 85 85 85 85 85 85
141867 -85 85 85 85 85 85 85 255 85 255 85 85 170 170 170 170 170 170
141868 -170 170 170 85 255 85 170 170 170 170 85 0 170 170 170 170 85 0
141869 -170 170 170 85 85 85 85 255 85 170 85 0 170 170 170 170 85 0
141870 -170 170 170 170 170 170 170 85 0 85 85 85 85 85 85 85 255 85
141871 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141872 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141873 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 85 85 85
141874 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141875 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141876 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141877 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141878 -0 0 0 0 0 0 0 0 0 0 0 0
141879 -0 0 0 170 170 170 170 170 170 0 0 0 0 0 0 85 85 85
141880 -170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
141881 -85 85 85 85 85 85 255 255 85 85 85 85 85 85 85 85 85 85
141882 -85 255 85 255 85 85 170 170 170 170 85 0 170 170 170 85 255 85
141883 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141884 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141885 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141886 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141887 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141888 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141889 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141890 -85 85 85 0 0 0 85 85 85 85 85 85 85 85 85 0 0 0
141891 -85 85 85 85 85 85 170 85 0 170 170 170 170 170 170 255 255 85
141892 -170 170 170 255 85 85 170 170 170 170 170 170 255 255 85 170 170 170
141893 -85 255 85 170 170 170 255 85 85 170 170 170 170 170 170 170 170 170
141894 -170 170 170 170 170 170 170 170 170 170 85 0 170 170 170 170 85 0
141895 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 85 85 85
141896 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141897 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141898 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141899 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141900 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141901 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141902 -0 0 0 0 0 0 0 0 0 0 0 0
141903 -0 0 0 85 85 85 170 170 170 85 85 85 0 0 0 85 85 85
141904 -85 85 85 170 85 0 85 85 85 0 0 0 85 85 85 85 85 85
141905 -85 85 85 170 85 0 170 170 170 170 170 170 255 255 85 170 170 170
141906 -170 170 170 170 170 170 255 255 85 170 170 170 170 170 170 255 85 85
141907 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141908 -85 85 85 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141909 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141910 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141911 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141912 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141913 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141914 -85 85 85 85 85 85 0 0 0 85 85 85 85 85 85 85 85 85
141915 -85 85 85 85 85 85 170 170 170 255 255 85 170 170 170 170 170 170
141916 -170 170 170 255 255 85 170 170 170 170 170 170 170 170 170 170 85 0
141917 -170 170 170 255 255 85 170 170 170 255 255 85 170 170 170 255 255 85
141918 -170 170 170 255 255 85 170 170 170 170 170 170 85 255 85 170 85 0
141919 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141920 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141921 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
141922 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141923 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141924 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141925 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141926 -0 0 0 0 0 0 0 0 0 0 0 0
141927 -0 0 0 0 0 0 170 170 170 85 85 85 85 85 85 0 0 0
141928 -85 85 85 85 85 85 170 170 170 85 85 85 170 170 170 170 85 0
141929 -170 170 170 85 255 85 170 170 170 170 85 0 170 170 170 170 170 170
141930 -255 255 85 170 170 170 170 170 170 255 255 255 255 255 85 170 170 170
141931 -255 255 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141932 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141933 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141934 -0 0 0 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141935 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141936 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141937 -0 0 0 85 85 85 85 85 85 85 85 85 0 0 0 0 0 0
141938 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141939 -85 85 85 170 85 0 170 170 170 170 170 170 170 170 170 255 255 255
141940 -170 170 170 255 255 255 255 255 85 170 170 170 255 255 85 170 170 170
141941 -255 255 85 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170
141942 -170 170 170 170 170 170 170 170 170 255 85 85 170 170 170 170 170 170
141943 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141944 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141945 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141946 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141947 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141948 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141949 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141950 -0 0 0 0 0 0 0 0 0 0 0 0
141951 -0 0 0 0 0 0 85 85 85 85 85 85 170 85 0 85 85 85
141952 -85 85 85 255 255 85 170 170 170 170 170 170 170 170 170 170 170 170
141953 -255 255 85 170 170 170 170 170 170 255 255 85 170 170 170 170 170 170
141954 -170 170 170 255 255 255 255 255 255 170 170 170 255 255 255 170 170 170
141955 -170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85
141956 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
141957 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141958 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141959 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141960 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141961 -85 85 85 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0
141962 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
141963 -85 85 85 85 255 85 170 170 170 255 255 85 255 255 255 255 255 255
141964 -255 255 255 170 170 170 255 255 255 170 170 170 170 170 170 170 170 170
141965 -170 170 170 170 170 170 255 255 85 170 170 170 255 255 85 255 255 255
141966 -255 255 85 255 255 255 255 255 85 170 170 170 170 170 170 170 85 0
141967 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141968 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
141969 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141970 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141971 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141972 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141973 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141974 -0 0 0 0 0 0 0 0 0 0 0 0
141975 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
141976 -85 85 85 170 170 170 255 255 85 170 170 170 255 255 85 170 170 170
141977 -170 170 170 255 255 85 170 170 170 170 170 170 170 170 170 255 255 85
141978 -255 255 255 255 255 255 255 255 85 255 255 255 255 255 255 170 170 170
141979 -255 255 85 85 85 85 85 85 85 0 0 0 0 0 0 85 85 85
141980 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141981 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141982 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141983 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141984 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
141985 -85 85 85 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0
141986 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
141987 -85 85 85 170 170 170 170 170 170 170 170 170 255 255 255 170 170 170
141988 -255 255 255 255 255 255 255 255 255 170 170 170 170 170 170 255 255 85
141989 -170 170 170 255 255 85 170 170 170 255 255 255 170 170 170 255 255 255
141990 -255 255 255 255 255 255 170 170 170 255 255 85 170 170 170 255 255 85
141991 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
141992 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
141993 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
141994 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141995 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141996 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141997 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
141998 -0 0 0 0 0 0 0 0 0 0 0 0
141999 -0 0 0 0 0 0 0 0 0 85 85 85 170 85 0 170 170 170
142000 -255 255 85 170 170 170 170 170 170 255 255 255 255 255 255 255 255 255
142001 -170 170 170 170 170 170 170 170 170 255 255 85 170 170 170 170 170 170
142002 -255 255 255 170 170 170 255 255 255 255 255 255 170 170 170 255 255 255
142003 -170 170 170 170 170 170 85 85 85 0 0 0 85 85 85 0 0 0
142004 -85 85 85 0 0 0 85 85 85 0 0 0 85 85 85 0 0 0
142005 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142006 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142007 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142008 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142009 -85 85 85 170 170 170 0 0 0 0 0 0 0 0 0 0 0 0
142010 -0 0 0 85 85 85 0 0 0 85 85 85 85 85 85 0 0 0
142011 -85 85 85 170 85 0 255 255 255 170 170 170 255 255 255 255 255 255
142012 -255 255 85 255 255 255 170 170 170 255 255 85 170 170 170 170 170 170
142013 -170 170 170 170 170 170 170 170 170 255 255 85 255 255 255 255 255 255
142014 -170 170 170 255 255 255 255 255 255 170 170 170 170 170 170 170 170 170
142015 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142016 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142017 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142018 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142019 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142020 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142021 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142022 -0 0 0 0 0 0 0 0 0 0 0 0
142023 -0 0 0 0 0 0 0 0 0 85 85 85 85 255 85 170 170 170
142024 -170 170 170 255 255 85 170 170 170 255 255 255 170 170 170 255 255 255
142025 -255 255 255 255 255 255 255 255 85 170 170 170 170 170 170 255 255 255
142026 -170 170 170 255 255 255 255 255 255 170 170 170 255 255 255 255 255 85
142027 -170 170 170 170 85 0 85 85 85 0 0 0 0 0 0 85 85 85
142028 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142029 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142030 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
142031 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142032 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142033 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
142034 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
142035 -85 85 85 170 170 170 170 170 170 255 255 85 170 170 170 255 255 255
142036 -255 255 255 170 170 170 255 255 255 170 170 170 170 170 170 255 255 85
142037 -170 170 170 255 255 85 170 170 170 255 255 255 170 170 170 255 255 255
142038 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 255 255 85
142039 -85 85 85 85 85 85 0 0 0 0 0 0 85 85 85 0 0 0
142040 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142041 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142042 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142043 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142044 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142045 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142046 -0 0 0 0 0 0 0 0 0 0 0 0
142047 -0 0 0 0 0 0 0 0 0 85 85 85 170 85 0 170 170 170
142048 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
142049 -170 170 170 170 170 170 170 170 170 170 170 170 255 255 85 170 170 170
142050 -255 255 85 255 255 255 170 170 170 255 255 255 170 170 170 170 170 170
142051 -170 170 170 170 170 170 85 85 85 0 0 0 85 85 85 85 85 85
142052 -0 0 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
142053 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142054 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142055 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142056 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142057 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142058 -85 85 85 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
142059 -85 85 85 85 85 85 170 170 170 170 170 170 255 255 255 170 170 170
142060 -255 255 255 170 170 170 255 255 85 170 170 170 170 170 170 170 170 170
142061 -255 85 85 170 170 170 170 170 170 170 170 170 255 255 255 255 255 255
142062 -170 170 170 255 255 255 255 255 255 170 170 170 255 255 255 170 170 170
142063 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142064 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142065 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142066 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142067 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142068 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142069 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142070 -0 0 0 0 0 0 0 0 0 0 0 0
142071 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 170 170
142072 -255 255 85 170 170 170 255 255 255 170 170 170 255 255 255 255 255 255
142073 -255 255 85 255 255 255 170 170 170 255 255 85 170 170 170 170 170 170
142074 -170 170 170 170 170 170 255 255 85 170 170 170 170 170 170 255 255 85
142075 -170 170 170 170 85 0 85 85 85 0 0 0 85 85 85 0 0 0
142076 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142077 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142078 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142079 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
142080 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
142081 -0 0 0 0 0 0 0 0 0 0 0 0 170 170 170 170 170 170
142082 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142083 -0 0 0 85 85 85 170 170 170 255 255 85 170 170 170 170 170 170
142084 -255 255 85 170 170 170 170 170 170 170 170 170 170 170 170 255 85 85
142085 -85 255 85 170 170 170 170 170 170 170 170 170 255 255 85 170 170 170
142086 -255 255 255 255 255 255 255 255 255 255 255 85 170 170 170 170 170 170
142087 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
142088 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142089 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142090 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142091 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142092 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142093 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142094 -0 0 0 0 0 0 0 0 0 0 0 0
142095 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 255 255 85
142096 -170 170 170 170 170 170 255 255 255 255 255 255 255 255 255 170 170 170
142097 -255 255 255 170 170 170 170 170 170 170 170 170 170 170 170 255 85 85
142098 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 170
142099 -170 170 170 85 85 85 85 85 85 0 0 0 85 85 85 0 0 0
142100 -85 85 85 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
142101 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142102 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142103 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142104 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142105 -0 0 0 0 0 0 0 0 0 170 170 170 170 170 170 170 170 170
142106 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142107 -0 0 0 85 85 85 170 85 0 170 170 170 170 170 170 170 170 170
142108 -170 170 170 170 170 170 170 170 170 170 85 0 170 170 170 85 255 85
142109 -255 85 85 170 170 170 255 255 85 170 170 170 170 170 170 255 255 255
142110 -255 255 255 170 170 170 255 255 255 255 255 255 170 170 170 170 170 170
142111 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142112 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142113 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142114 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142115 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142116 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142117 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142118 -0 0 0 0 0 0 0 0 0 0 0 0
142119 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170
142120 -170 170 170 255 255 85 170 170 170 255 255 85 255 255 255 255 255 255
142121 -170 170 170 170 170 170 255 255 85 170 170 170 255 85 85 85 255 85
142122 -170 170 170 170 85 0 170 170 170 170 170 170 255 255 85 170 170 170
142123 -170 85 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
142124 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142125 -0 0 0 0 0 0 0 0 0 85 85 85 0 0 0 0 0 0
142126 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142127 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142128 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142129 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142130 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142131 -0 0 0 85 85 85 85 85 85 85 85 85 170 170 170 255 255 85
142132 -170 170 170 170 85 0 170 170 170 170 170 170 170 85 0 85 85 85
142133 -170 170 170 170 85 0 85 85 85 170 170 170 170 170 170 170 170 170
142134 -170 170 170 255 255 255 255 255 255 255 255 85 170 170 170 170 170 170
142135 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142136 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142137 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142138 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142139 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142140 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142141 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142142 -0 0 0 0 0 0 0 0 0 0 0 0
142143 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 85 0
142144 -170 170 170 170 170 170 255 255 255 170 170 170 255 255 255 170 170 170
142145 -255 255 255 170 170 170 170 170 170 170 85 0 170 170 170 85 85 85
142146 -170 170 170 170 170 170 170 85 0 170 170 170 170 85 0 85 85 85
142147 -85 255 85 85 85 85 0 0 0 0 0 0 0 0 0 85 85 85
142148 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
142149 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142150 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142151 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142152 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142153 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142154 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
142155 -85 85 85 0 0 0 85 85 85 170 85 0 85 85 85 170 170 170
142156 -170 85 0 170 170 170 85 255 85 170 85 0 170 170 170 85 85 85
142157 -170 85 0 170 170 170 170 170 170 255 255 85 170 170 170 255 255 255
142158 -255 255 85 255 255 255 170 170 170 170 170 170 170 170 170 170 85 0
142159 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142160 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142161 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142162 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142163 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142164 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142165 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142166 -0 0 0 0 0 0 0 0 0 0 0 0
142167 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142168 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 255 255 85
142169 -170 170 170 255 255 85 170 170 170 170 170 170 85 255 85 170 170 170
142170 -170 85 0 170 85 0 170 170 170 85 255 85 85 85 85 170 170 170
142171 -170 85 0 85 85 85 0 0 0 85 85 85 0 0 0 0 0 0
142172 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 0 0 0
142173 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142174 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142175 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142176 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142177 -0 0 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142178 -0 0 0 0 0 0 0 0 0 85 85 85 170 170 170 85 85 85
142179 -0 0 0 0 0 0 0 0 0 85 85 85 170 85 0 85 85 85
142180 -170 170 170 170 85 0 170 170 170 85 85 85 170 170 170 170 85 0
142181 -170 170 170 85 255 85 170 85 0 170 170 170 170 170 170 170 170 170
142182 -255 255 255 170 170 170 255 255 255 255 255 255 170 170 170 85 85 85
142183 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142184 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142185 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142186 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142187 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142188 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142189 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142190 -0 0 0 0 0 0 0 0 0 0 0 0
142191 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142192 -170 85 0 170 170 170 255 255 85 170 170 170 255 255 255 170 170 170
142193 -170 170 170 170 170 170 170 170 170 170 85 0 170 170 170 170 85 0
142194 -170 170 170 85 255 85 170 85 0 170 170 170 170 85 0 85 85 85
142195 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142196 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142197 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142198 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
142199 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142200 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142201 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142202 -0 0 0 0 0 0 85 85 85 0 0 0 0 0 0 0 0 0
142203 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
142204 -85 255 85 170 170 170 170 85 0 170 170 170 170 85 0 85 255 85
142205 -170 170 170 170 85 0 170 170 170 170 170 170 170 170 170 255 255 85
142206 -170 170 170 255 255 255 170 170 170 170 170 170 170 170 170 0 0 0
142207 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142208 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142209 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142210 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142211 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142212 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142213 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142214 -0 0 0 0 0 0 0 0 0 0 0 0
142215 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142216 -85 85 85 170 85 0 85 85 85 170 170 170 255 255 85 170 170 170
142217 -170 170 170 255 255 85 170 170 170 170 170 170 170 170 170 170 85 0
142218 -170 170 170 85 85 85 170 170 170 170 85 0 170 170 170 85 85 85
142219 -170 85 0 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142220 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142221 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142222 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142223 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142224 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142225 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142226 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142227 -0 0 0 0 0 0 85 85 85 0 0 0 85 85 85 170 85 0
142228 -85 85 85 255 85 85 85 255 85 170 85 0 170 170 170 170 170 170
142229 -170 85 0 170 170 170 85 85 85 255 255 85 170 170 170 170 170 170
142230 -255 255 255 170 170 170 255 255 255 255 255 85 85 85 85 0 0 0
142231 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142232 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142233 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142234 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142235 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142236 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142237 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142238 -0 0 0 0 0 0 0 0 0 0 0 0
142239 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142240 -0 0 0 85 85 85 170 170 170 170 85 0 170 170 170 170 170 170
142241 -170 170 170 170 170 170 170 170 170 255 255 85 85 85 85 170 170 170
142242 -85 255 85 255 85 85 170 170 170 85 255 85 255 85 85 85 255 85
142243 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142244 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142245 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142246 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142247 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142248 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142249 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142250 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142251 -0 0 0 0 0 0 85 85 85 85 85 85 0 0 0 85 85 85
142252 -85 85 85 85 255 85 255 85 85 170 170 170 85 255 85 170 85 0
142253 -170 170 170 170 170 170 255 255 85 170 170 170 170 170 170 255 255 255
142254 -170 170 170 255 255 255 170 170 170 170 170 170 85 85 85 0 0 0
142255 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142256 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142257 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142258 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142259 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142260 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142261 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142262 -0 0 0 0 0 0 0 0 0 0 0 0
142263 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142264 -0 0 0 0 0 0 85 85 85 170 170 170 85 85 85 255 255 85
142265 -170 170 170 255 255 85 170 170 170 170 170 170 170 170 170 255 255 85
142266 -85 85 85 255 255 85 170 170 170 170 85 0 170 170 170 85 85 85
142267 -170 85 0 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
142268 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142269 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142270 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142271 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142272 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142273 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142274 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142275 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142276 -170 170 170 170 85 0 170 170 170 170 85 0 170 170 170 170 170 170
142277 -170 85 0 170 170 170 170 170 170 170 170 170 255 255 85 170 170 170
142278 -255 255 85 255 255 255 170 170 170 170 170 170 85 85 85 0 0 0
142279 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142280 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142281 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142282 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142283 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142284 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142285 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142286 -0 0 0 0 0 0 0 0 0 0 0 0
142287 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142288 -0 0 0 0 0 0 85 85 85 170 85 0 85 85 85 170 170 170
142289 -170 85 0 170 170 170 170 170 170 255 255 85 170 170 170 170 170 170
142290 -170 170 170 170 170 170 170 170 170 255 255 85 170 170 170 170 85 0
142291 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142292 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142293 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142294 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142295 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142296 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142297 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142298 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142299 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142300 -170 85 0 85 255 85 170 170 170 170 170 170 255 255 85 170 170 170
142301 -255 255 85 170 170 170 170 170 170 170 170 170 255 255 255 255 255 255
142302 -255 255 255 170 170 170 255 255 85 85 85 85 0 0 0 0 0 0
142303 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142304 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142305 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142306 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142307 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142308 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142309 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142310 -0 0 0 0 0 0 0 0 0 0 0 0
142311 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142312 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 170 85 0
142313 -170 170 170 170 170 170 170 170 170 170 170 170 170 170 170 255 255 85
142314 -170 170 170 255 255 85 170 170 170 170 170 170 170 170 170 170 170 170
142315 -170 170 170 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
142316 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142317 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142318 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142319 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142320 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142321 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142322 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142323 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142324 -85 85 85 170 85 0 170 170 170 170 85 0 170 170 170 170 170 170
142325 -170 170 170 255 255 85 170 170 170 255 255 85 170 170 170 255 255 255
142326 -170 170 170 255 255 255 170 170 170 85 85 85 0 0 0 0 0 0
142327 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142328 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142329 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142330 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142331 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142332 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142333 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142334 -0 0 0 0 0 0 0 0 0 0 0 0
142335 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142336 -0 0 0 0 0 0 0 0 0 85 85 85 85 85 85 85 85 85
142337 -170 85 0 170 170 170 170 85 0 255 255 85 170 170 170 170 170 170
142338 -170 170 170 170 170 170 255 255 85 170 170 170 255 255 85 170 170 170
142339 -255 255 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
142340 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142341 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142342 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142343 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142344 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142345 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142346 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142347 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142348 -85 85 85 170 170 170 255 255 85 170 170 170 255 255 85 170 170 170
142349 -170 170 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
142350 -170 170 170 170 170 170 170 170 170 0 0 0 0 0 0 0 0 0
142351 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142352 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142353 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142354 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142355 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142356 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142357 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142358 -0 0 0 0 0 0 0 0 0 0 0 0
142359 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142360 -0 0 0 0 0 0 0 0 0 0 0 0 0 170 0 85 85 85
142361 -170 85 0 85 255 85 170 170 170 170 170 170 170 170 170 255 255 85
142362 -255 255 255 170 170 170 255 255 255 170 170 170 255 255 255 170 170 170
142363 -170 170 170 255 255 85 85 85 85 0 0 0 0 0 0 0 0 0
142364 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142365 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142366 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142367 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142368 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142369 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142370 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142371 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142372 -170 85 0 170 170 170 170 170 170 170 170 170 170 170 170 255 255 85
142373 -170 170 170 255 255 255 170 170 170 255 255 255 170 170 170 255 255 255
142374 -255 255 255 255 255 85 85 85 85 0 0 0 0 0 0 0 0 0
142375 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142376 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142377 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142378 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142379 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142380 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142381 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142382 -0 0 0 0 0 0 0 0 0 0 0 0
142383 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142384 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142385 -85 85 85 170 85 0 170 170 170 170 170 170 255 255 85 170 170 170
142386 -170 170 170 255 255 255 255 255 255 255 255 255 170 170 170 255 255 255
142387 -170 170 170 170 170 170 170 170 170 85 85 85 0 0 0 0 0 0
142388 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142389 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142390 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142391 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142392 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142393 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142394 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142395 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 255 85
142396 -170 170 170 255 255 85 170 170 170 255 255 85 255 255 255 255 255 255
142397 -255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 170 170 170
142398 -170 170 170 170 170 170 85 85 85 0 0 0 0 0 0 0 0 0
142399 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142400 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142401 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142402 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142403 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142404 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142405 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142406 -0 0 0 0 0 0 0 0 0 0 0 0
142407 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142408 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142409 -85 85 85 85 85 85 85 85 85 170 85 0 170 170 170 170 170 170
142410 -255 255 85 170 170 170 255 255 255 255 255 85 255 255 255 255 255 255
142411 -170 170 170 255 255 85 170 170 170 85 85 85 0 0 0 0 0 0
142412 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142413 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142414 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142415 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142416 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142417 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142418 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142419 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 85 0
142420 -170 170 170 170 170 170 170 170 170 255 255 255 170 170 170 255 255 255
142421 -170 170 170 255 255 255 170 170 170 255 255 255 255 255 85 255 255 255
142422 -170 170 170 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142423 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142424 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142425 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142426 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142427 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142428 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142429 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142430 -0 0 0 0 0 0 0 0 0 0 0 0
142431 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142432 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142433 -85 85 85 170 85 0 85 85 85 170 170 170 170 170 170 170 170 170
142434 -170 170 170 255 255 255 170 170 170 255 255 255 255 255 255 170 170 170
142435 -255 255 85 170 170 170 170 170 170 170 85 0 85 85 85 0 0 0
142436 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142437 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142438 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142439 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142440 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142441 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142442 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142443 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170
142444 -255 255 85 170 170 170 255 255 85 170 170 170 255 255 255 255 255 255
142445 -255 255 255 255 255 255 255 255 255 255 255 255 170 170 170 170 170 170
142446 -170 170 170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142447 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142448 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142449 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142450 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142451 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142452 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142453 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142454 -0 0 0 0 0 0 0 0 0 0 0 0
142455 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142456 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142457 -0 0 0 85 85 85 85 85 85 85 85 85 170 85 0 170 170 170
142458 -255 255 85 170 170 170 255 255 85 255 255 255 170 170 170 255 255 255
142459 -170 170 170 170 170 170 170 170 170 170 170 170 0 0 0 0 0 0
142460 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142461 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142462 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142463 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142464 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142465 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142466 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142467 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 170 170
142468 -170 85 0 170 170 170 255 255 255 170 170 170 255 255 255 170 170 170
142469 -255 255 255 255 255 255 170 170 170 255 255 255 255 255 85 170 170 170
142470 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142471 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142472 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142473 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142474 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142475 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142476 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142477 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142478 -0 0 0 0 0 0 0 0 0 0 0 0
142479 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142480 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142481 -0 0 0 0 0 0 85 85 85 170 85 0 85 85 85 170 170 170
142482 -170 170 170 170 170 170 170 170 170 170 170 170 255 255 85 170 170 170
142483 -255 255 85 170 170 170 170 85 0 85 255 85 85 85 85 0 0 0
142484 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142485 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142486 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142487 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142488 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142489 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142490 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142491 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 170 85 0
142492 -170 170 170 170 170 170 255 255 85 170 170 170 255 255 255 255 255 255
142493 -255 255 85 255 255 255 170 170 170 255 255 255 170 170 170 85 85 85
142494 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142495 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142496 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142497 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142498 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142499 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142500 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142501 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142502 -0 0 0 0 0 0 0 0 0 0 0 0
142503 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142504 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142505 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142506 -170 85 0 170 170 170 170 170 170 255 255 85 170 170 170 170 170 170
142507 -170 170 170 170 170 170 170 170 170 170 85 0 0 0 0 0 0 0
142508 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142509 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142510 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142511 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142512 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142513 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142514 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142515 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142516 -255 255 85 170 170 170 170 170 170 170 170 170 255 255 85 170 170 170
142517 -255 255 255 170 170 170 255 255 85 170 170 170 85 85 85 85 85 85
142518 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142519 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142520 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142521 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142522 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142523 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142524 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142525 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142526 -0 0 0 0 0 0 0 0 0 0 0 0
142527 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142528 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142529 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142530 -85 85 85 170 85 0 170 170 170 170 170 170 170 170 170 170 170 170
142531 -170 85 0 170 170 170 170 85 0 85 85 85 0 0 0 0 0 0
142532 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142533 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142534 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142535 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142536 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142537 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142538 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142539 -0 0 0 0 0 0 0 0 0 0 0 0 85 85 85 85 85 85
142540 -170 170 170 170 170 170 255 255 85 170 170 170 170 170 170 170 170 170
142541 -170 170 170 255 255 255 170 170 170 170 170 170 85 85 85 0 0 0
142542 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142543 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142544 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142545 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142546 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142547 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142548 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142549 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142550 -0 0 0 0 0 0 0 0 0 0 0 0
142551 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142552 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142553 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142554 -85 85 85 85 85 85 85 85 85 170 85 0 85 85 85 170 85 0
142555 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
142556 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142557 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142558 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142559 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142560 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142561 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142562 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142563 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 170 85 0
142564 -85 85 85 170 85 0 170 170 170 170 170 170 170 170 170 255 255 85
142565 -170 170 170 170 170 170 170 85 0 85 85 85 0 0 0 0 0 0
142566 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142567 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142568 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142569 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142570 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142571 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142572 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142573 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142574 -0 0 0 0 0 0 0 0 0 0 0 0
142575 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142576 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142577 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142578 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
142579 -85 85 85 85 85 85 0 0 0 0 0 0 0 0 0 0 0 0
142580 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142581 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142582 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142583 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142584 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142585 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142586 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142587 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 85 85
142588 -85 85 85 85 255 85 170 85 0 170 170 170 170 85 0 170 170 170
142589 -85 85 85 85 85 85 85 85 85 0 0 0 0 0 0 0 0 0
142590 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142591 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142592 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142593 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142594 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142595 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142596 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142597 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142598 -0 0 0 0 0 0 0 0 0 0 0 0
142599 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142600 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142601 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142602 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142603 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142604 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142605 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142606 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142607 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142608 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142609 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142610 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142611 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142612 -0 0 0 85 85 85 85 85 85 85 85 85 85 85 85 85 85 85
142613 -85 85 85 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142614 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142615 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142616 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142617 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142618 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142619 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142620 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142621 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142622 -0 0 0 0 0 0 0 0 0 0 0 0
142623 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142624 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142625 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142626 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142627 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142628 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142629 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142630 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142631 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142632 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142633 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142634 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142635 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142636 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142637 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142638 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142639 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142640 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142641 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142642 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142643 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142644 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142645 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142646 -0 0 0 0 0 0 0 0 0 0 0 0
142647 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142648 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142649 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142650 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142651 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142652 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142653 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142654 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142655 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142656 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142657 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142658 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142659 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142660 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142661 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142662 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142663 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142664 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142665 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142666 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142667 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142668 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142669 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
142670 -0 0 0 0 0 0 0 0 0 0 0 0
142671 + 0 0 0 0 0 0 0 0 0 0 0 0
142672 + 0 0 0 0 0 0 0 0 0 0 0 0
142673 + 0 0 0 0 0 0 0 0 0 0 0 0
142674 + 0 0 0 0 0 0 0 0 0 0 0 0
142675 + 0 0 0 0 0 0 0 0 0 0 0 0
142676 + 0 0 0 0 0 0 0 0 0 0 0 0
142677 + 0 0 0 0 0 0 0 0 0 0 0 0
142678 + 0 0 0 0 0 0 0 0 0 0 0 0
142679 + 0 0 0 0 0 0 0 0 0 0 0 0
142680 + 0 0 0 0 0 0 0 0 0 0 0 0
142681 + 0 0 0 0 0 0 0 0 0 0 0 0
142682 + 0 0 0 0 0 0 0 0 0 0 0 0
142683 + 0 0 0 0 0 0 0 0 0 0 0 0
142684 + 0 0 0 0 0 0 0 0 0 0 0 0
142685 + 0 0 0 0 0 0 0 0 0 0 0 0
142686 + 0 0 0 0 0 0 0 0 0 0 0 0
142687 + 0 0 0 0 0 0 0 0 0 0 0 0
142688 + 0 0 0 0 0 0 0 0 0 0 0 0
142689 + 0 0 0 0 0 0 0 0 0 0 0 0
142690 + 0 0 0 0 0 0 0 0 0 0 0 0
142691 + 0 0 0 0 0 0 0 0 0 0 0 0
142692 + 0 0 0 0 0 0 0 0 0 0 0 0
142693 + 0 0 0 0 0 0 0 0 0 0 0 0
142694 + 0 0 0 0 0 0 0 0 0 0 0 0
142695 + 0 0 0 0 0 0 0 0 0 0 0 0
142696 + 0 0 0 0 0 0 0 0 0 0 0 0
142697 + 0 0 0 0 0 0 0 0 0 0 0 0
142698 + 0 0 0 0 0 0 0 0 0 0 0 0
142699 + 0 0 0 0 0 0 0 0 0 0 0 0
142700 + 0 0 0 0 0 0 0 0 0 0 0 0
142701 + 0 0 0 0 0 0 0 0 0 0 0 0
142702 + 0 0 0 0 0 0 0 0 0 0 0 0
142703 + 0 0 0 0 0 0 0 0 0 0 0 0
142704 + 0 0 0 0 0 0 0 0 0 0 0 0
142705 + 0 0 0 0 0 0 0 0 0 0 0 0
142706 + 0 0 0 0 0 0 0 0 0 0 0 0
142707 + 0 0 0 0 0 0 0 0 0 0 0 0
142708 + 0 0 0 0 0 0 0 0 0 0 0 0
142709 + 0 0 0 0 0 0 0 0 0 0 0 0
142710 + 0 0 0 0 0 0 0 0 0 0 0 0
142711 + 0 0 0 0 0 0 0 0 0 0 0 0
142712 + 0 0 0 0 0 0 0 0 0 0 0 0
142713 + 0 0 0 0 0 0 0 0 0 0 0 0
142714 + 0 0 0 0 0 0 0 0 0 0 0 0
142715 + 0 0 0 0 0 0 0 0 0 0 0 0
142716 + 0 0 0 0 0 0 0 0 0 0 0 0
142717 + 0 0 0 0 0 0 0 0 0 0 0 0
142718 + 0 0 0 0 0 0 0 0 0 0 0 0
142719 + 0 0 0 0 0 0 0 0 0 0 0 0
142720 + 85 85 85 85 85 85 85 85 85 85 85 85
142721 + 85 85 85 85 85 85 85 85 85 0 0 0
142722 + 0 0 0 0 0 0 0 0 0 0 0 0
142723 + 0 0 0 0 0 0 0 0 0 0 0 0
142724 + 0 0 0 0 0 0 0 0 0 0 0 0
142725 + 0 0 0 0 0 0 0 0 0 0 0 0
142726 + 0 0 0 0 0 0 0 0 0 0 0 0
142727 + 0 0 0 0 0 0 0 0 0 0 0 0
142728 + 0 0 0 0 0 0 0 0 0 0 0 0
142729 + 0 0 0 0 0 0 0 0 0 0 0 0
142730 + 0 0 0 0 0 0 0 0 0 0 0 0
142731 + 0 0 0 0 0 0 0 0 0 0 0 0
142732 + 0 0 0 0 0 0 0 0 0 0 0 0
142733 + 0 0 0 0 0 0 0 0 0 0 0 0
142734 + 0 0 0 0 0 0 0 0 0 0 0 0
142735 + 0 0 0 0 0 0 0 0 0 0 0 0
142736 + 0 0 0 0 0 0 0 0 0 0 0 0
142737 + 0 0 0 0 0 0 0 0 0 0 0 0
142738 + 0 0 0 0 0 0 0 0 0 0 0 0
142739 + 0 0 0 0 0 0 85 85 85 85 85 85
142740 + 85 85 85 0 0 0 0 0 0 0 0 0
142741 + 0 0 0 0 0 0 0 0 0 85 85 85
142742 + 85 85 85 85 85 85 0 0 0 0 0 0
142743 + 0 0 0 0 0 0 0 0 0 0 0 0
142744 + 0 0 0 0 0 0 0 0 0 0 0 0
142745 + 0 0 0 0 0 0 0 0 0 0 0 0
142746 + 0 0 0 0 0 0 0 0 0 0 0 0
142747 + 0 0 0 0 0 0 0 0 0 0 0 0
142748 + 0 0 0 0 0 0 0 0 0 0 0 0
142749 + 0 0 0 0 0 0 0 0 0 0 0 0
142750 + 0 0 0 0 0 0 0 0 0 0 0 0
142751 + 0 0 0 0 0 0 0 0 0 0 0 0
142752 + 0 0 0 0 0 0 0 0 0 0 0 0
142753 + 0 0 0 0 0 0 0 0 0 0 0 0
142754 + 0 0 0 0 0 0 0 0 0 0 0 0
142755 + 0 0 0 0 0 0 0 0 0 0 0 0
142756 + 0 0 0 0 0 0 0 0 0 0 0 0
142757 + 0 0 0 0 0 0 0 0 0 0 0 0
142758 + 0 0 0 0 0 0 0 0 0 0 0 0
142759 + 0 0 0 85 85 85 0 0 0 0 0 0
142760 + 0 0 0 0 0 0 0 0 0 0 0 0
142761 + 0 0 0 0 0 0 0 0 0 0 0 0
142762 + 0 0 0 0 0 0 85 85 85 85 85 85
142763 + 0 0 0 0 0 0 0 0 0 0 0 0
142764 + 0 0 0 0 0 0 0 0 0 0 0 0
142765 + 0 0 0 0 0 0 0 0 0 0 0 0
142766 + 0 0 0 0 0 0 0 0 0 0 0 0
142767 + 0 0 0 0 0 0 0 0 0 0 0 0
142768 + 0 0 0 0 0 0 0 0 0 0 0 0
142769 + 0 0 0 0 0 0 0 0 0 0 0 0
142770 + 0 0 0 0 0 0 0 0 0 0 0 0
142771 + 0 0 0 0 0 0 0 0 0 0 0 0
142772 + 0 0 0 0 0 0 0 0 0 0 0 0
142773 + 0 0 0 0 0 0 0 0 0 0 0 0
142774 + 0 0 0 0 0 0 0 0 0 0 0 0
142775 + 0 0 0 0 0 0 0 0 0 0 0 0
142776 + 0 0 0 0 0 0 0 0 0 0 0 0
142777 + 0 0 0 0 0 0 0 0 0 0 0 0
142778 + 0 0 0 0 0 0 0 0 0 0 0 0
142779 + 85 85 85 0 0 0 0 0 0 0 0 0
142780 + 0 0 0 0 0 0 0 0 0 0 0 0
142781 + 0 0 0 0 0 0 0 0 0 0 0 0
142782 + 0 0 0 0 0 0 0 0 0 85 85 85
142783 + 85 85 85 0 0 0 0 0 0 0 0 0
142784 + 0 0 0 0 0 0 0 0 0 0 0 0
142785 + 0 0 0 0 0 0 0 0 0 0 0 0
142786 + 0 0 0 0 0 0 0 0 0 0 0 0
142787 + 0 0 0 0 0 0 0 0 0 0 0 0
142788 + 0 0 0 0 0 0 0 0 0 0 0 0
142789 + 0 0 0 0 0 0 0 0 0 0 0 0
142790 + 0 0 0 0 0 0 0 0 0 0 0 0
142791 + 0 0 0 0 0 0 0 0 0 0 0 0
142792 + 0 0 0 0 0 0 0 0 0 0 0 0
142793 + 0 0 0 0 0 0 0 0 0 0 0 0
142794 + 0 0 0 0 0 0 0 0 0 0 0 0
142795 + 0 0 0 0 0 0 0 0 0 0 0 0
142796 + 0 0 0 0 0 0 0 0 0 0 0 0
142797 + 0 0 0 0 0 0 0 0 0 0 0 0
142798 + 0 0 0 0 0 0 0 0 0 85 85 85
142799 + 0 0 0 0 0 0 0 0 0 0 0 0
142800 + 0 0 0 0 0 0 0 0 0 0 0 0
142801 + 0 0 0 0 0 0 0 0 0 0 0 0
142802 + 0 0 0 0 0 0 0 0 0 0 0 0
142803 + 85 85 85 85 85 85 0 0 0 0 0 0
142804 + 0 0 0 0 0 0 0 0 0 0 0 0
142805 + 0 0 0 0 0 0 0 0 0 0 0 0
142806 + 0 0 0 0 0 0 0 0 0 0 0 0
142807 + 0 0 0 0 0 0 0 0 0 0 0 0
142808 + 0 0 0 0 0 0 0 0 0 0 0 0
142809 + 0 0 0 0 0 0 0 0 0 0 0 0
142810 + 0 0 0 0 0 0 0 0 0 0 0 0
142811 + 0 0 0 0 0 0 0 0 0 0 0 0
142812 + 0 0 0 0 0 0 0 0 0 0 0 0
142813 + 0 0 0 0 0 0 0 0 0 0 0 0
142814 + 0 0 0 0 0 0 0 0 0 0 0 0
142815 + 0 0 0 0 0 0 0 0 0 0 0 0
142816 + 0 0 0 0 0 0 0 0 0 0 0 0
142817 + 0 0 0 0 0 0 0 0 0 0 0 0
142818 + 0 0 0 0 0 0 0 0 0 85 85 85
142819 + 0 0 0 0 0 0 0 0 0 0 0 0
142820 + 0 0 0 0 0 0 0 0 0 0 0 0
142821 + 0 0 0 0 0 0 0 0 0 0 0 0
142822 + 85 85 85 170 170 170 0 0 0 0 0 0
142823 + 0 0 0 85 85 85 0 0 0 0 0 0
142824 + 0 0 0 0 0 0 0 0 0 0 0 0
142825 + 0 0 0 0 0 0 0 0 0 0 0 0
142826 + 0 0 0 0 0 0 0 0 0 0 0 0
142827 + 0 0 0 0 0 0 0 0 0 0 0 0
142828 + 0 0 0 0 0 0 0 0 0 0 0 0
142829 + 0 0 0 0 0 0 0 0 0 0 0 0
142830 + 0 0 0 0 0 0 0 0 0 0 0 0
142831 + 0 0 0 0 0 0 0 0 0 0 0 0
142832 + 0 0 0 0 0 0 0 0 0 0 0 0
142833 + 0 0 0 0 0 0 0 0 0 0 0 0
142834 + 0 0 0 0 0 0 0 0 0 0 0 0
142835 + 0 0 0 0 0 0 0 0 0 0 0 0
142836 + 0 0 0 0 0 0 0 0 0 0 0 0
142837 + 0 0 0 0 0 0 0 0 0 0 0 0
142838 + 0 0 0 0 0 0 85 85 85 0 0 0
142839 + 0 0 0 0 0 0 0 0 0 0 0 0
142840 + 0 0 0 0 0 0 0 0 0 0 0 0
142841 + 0 0 0 0 0 0 0 0 0 0 0 0
142842 +170 170 170 170 170 170 85 85 85 0 0 0
142843 + 0 0 0 0 0 0 85 85 85 0 0 0
142844 + 0 0 0 0 0 0 0 0 0 0 0 0
142845 + 0 0 0 0 0 0 0 0 0 0 0 0
142846 + 0 0 0 0 0 0 0 0 0 0 0 0
142847 + 0 0 0 0 0 0 0 0 0 0 0 0
142848 + 0 0 0 0 0 0 0 0 0 0 0 0
142849 + 0 0 0 0 0 0 0 0 0 0 0 0
142850 + 0 0 0 0 0 0 0 0 0 0 0 0
142851 + 0 0 0 0 0 0 0 0 0 0 0 0
142852 + 0 0 0 0 0 0 0 0 0 0 0 0
142853 + 0 0 0 0 0 0 0 0 0 0 0 0
142854 + 0 0 0 0 0 0 0 0 0 0 0 0
142855 + 0 0 0 0 0 0 0 0 0 0 0 0
142856 + 0 0 0 0 0 0 0 0 0 0 0 0
142857 + 0 0 0 0 0 0 0 0 0 0 0 0
142858 + 0 0 0 0 0 0 85 85 85 0 0 0
142859 + 0 0 0 0 0 0 0 0 0 0 0 0
142860 + 0 0 0 0 0 0 0 0 0 0 0 0
142861 + 0 0 0 0 0 0 0 0 0 0 0 0
142862 + 0 0 0 85 85 85 0 0 0 0 0 0
142863 + 0 0 0 0 0 0 0 0 0 85 85 85
142864 + 0 0 0 0 0 0 0 0 0 0 0 0
142865 + 0 0 0 0 0 0 0 0 0 0 0 0
142866 + 0 0 0 0 0 0 0 0 0 0 0 0
142867 + 0 0 0 0 0 0 0 0 0 0 0 0
142868 + 0 0 0 0 0 0 0 0 0 0 0 0
142869 + 0 0 0 0 0 0 0 0 0 0 0 0
142870 + 0 0 0 0 0 0 0 0 0 0 0 0
142871 + 0 0 0 0 0 0 0 0 0 0 0 0
142872 + 0 0 0 0 0 0 0 0 0 0 0 0
142873 + 0 0 0 0 0 0 0 0 0 0 0 0
142874 + 0 0 0 0 0 0 0 0 0 0 0 0
142875 + 0 0 0 0 0 0 0 0 0 0 0 0
142876 + 0 0 0 0 0 0 0 0 0 0 0 0
142877 + 0 0 0 0 0 0 0 0 0 0 0 0
142878 + 0 0 0 0 0 0 85 85 85 0 0 0
142879 + 0 0 0 0 0 0 0 0 0 0 0 0
142880 + 0 0 0 0 0 0 0 0 0 0 0 0
142881 + 0 0 0 0 0 0 0 0 0 0 0 0
142882 + 0 0 0 0 0 0 0 0 0 0 0 0
142883 + 0 0 0 0 0 0 0 0 0 85 85 85
142884 + 0 0 0 0 0 0 0 0 0 0 0 0
142885 + 0 0 0 0 0 0 0 0 0 0 0 0
142886 + 0 0 0 0 0 0 0 0 0 0 0 0
142887 + 0 0 0 0 0 0 0 0 0 0 0 0
142888 + 0 0 0 0 0 0 0 0 0 0 0 0
142889 + 0 0 0 0 0 0 0 0 0 0 0 0
142890 + 0 0 0 0 0 0 0 0 0 0 0 0
142891 + 0 0 0 0 0 0 0 0 0 0 0 0
142892 + 0 0 0 0 0 0 0 0 0 0 0 0
142893 + 0 0 0 0 0 0 0 0 0 0 0 0
142894 + 0 0 0 0 0 0 0 0 0 0 0 0
142895 + 0 0 0 0 0 0 0 0 0 0 0 0
142896 + 0 0 0 0 0 0 0 0 0 0 0 0
142897 + 0 0 0 0 0 0 0 0 0 0 0 0
142898 + 0 0 0 85 85 85 0 0 0 0 0 0
142899 + 0 0 0 0 0 0 0 0 0 0 0 0
142900 + 0 0 0 0 0 0 0 0 0 0 0 0
142901 + 0 0 0 0 0 0 0 0 0 0 0 0
142902 + 0 0 0 0 0 0 0 0 0 0 0 0
142903 + 0 0 0 0 0 0 0 0 0 85 85 85
142904 + 0 0 0 0 0 0 0 0 0 0 0 0
142905 + 0 0 0 0 0 0 0 0 0 0 0 0
142906 + 0 0 0 0 0 0 0 0 0 0 0 0
142907 + 0 0 0 0 0 0 0 0 0 0 0 0
142908 + 0 0 0 0 0 0 0 0 0 0 0 0
142909 + 0 0 0 0 0 0 0 0 0 0 0 0
142910 + 0 0 0 0 0 0 0 0 0 0 0 0
142911 + 0 0 0 0 0 0 0 0 0 0 0 0
142912 + 0 0 0 0 0 0 0 0 0 0 0 0
142913 + 0 0 0 0 0 0 0 0 0 0 0 0
142914 + 0 0 0 0 0 0 0 0 0 0 0 0
142915 + 0 0 0 0 0 0 0 0 0 0 0 0
142916 + 0 0 0 0 0 0 0 0 0 0 0 0
142917 + 0 0 0 0 0 0 0 0 0 0 0 0
142918 + 0 0 0 85 85 85 0 0 0 0 0 0
142919 + 0 0 0 0 0 0 0 0 0 0 0 0
142920 + 0 0 0 0 0 0 0 0 0 0 0 0
142921 + 0 0 0 0 0 0 0 0 0 0 0 0
142922 + 0 0 0 0 0 0 0 0 0 0 0 0
142923 + 0 0 0 0 0 0 0 0 0 0 0 0
142924 + 85 85 85 0 0 0 0 0 0 0 0 0
142925 + 0 0 0 0 0 0 0 0 0 0 0 0
142926 + 0 0 0 0 0 0 0 0 0 0 0 0
142927 + 0 0 0 0 0 0 0 0 0 0 0 0
142928 + 0 0 0 0 0 0 0 0 0 0 0 0
142929 + 0 0 0 0 0 0 0 0 0 0 0 0
142930 + 0 0 0 0 0 0 0 0 0 0 0 0
142931 + 0 0 0 0 0 0 0 0 0 0 0 0
142932 + 0 0 0 0 0 0 0 0 0 0 0 0
142933 + 0 0 0 0 0 0 0 0 0 0 0 0
142934 + 0 0 0 0 0 0 0 0 0 0 0 0
142935 + 0 0 0 0 0 0 0 0 0 0 0 0
142936 + 0 0 0 0 0 0 0 0 0 0 0 0
142937 + 0 0 0 0 0 0 0 0 0 0 0 0
142938 + 0 0 0 85 85 85 0 0 0 0 0 0
142939 + 0 0 0 0 0 0 0 0 0 0 0 0
142940 + 0 0 0 0 0 0 0 0 0 0 0 0
142941 + 0 0 0 0 0 0 0 0 0 0 0 0
142942 + 0 0 0 0 0 0 0 0 0 0 0 0
142943 + 0 0 0 0 0 0 0 0 0 0 0 0
142944 + 85 85 85 0 0 0 0 0 0 0 0 0
142945 + 0 0 0 0 0 0 0 0 0 0 0 0
142946 + 0 0 0 0 0 0 0 0 0 0 0 0
142947 + 0 0 0 0 0 0 0 0 0 0 0 0
142948 + 0 0 0 0 0 0 0 0 0 0 0 0
142949 + 0 0 0 0 0 0 0 0 0 0 0 0
142950 + 0 0 0 0 0 0 0 0 0 0 0 0
142951 + 0 0 0 0 0 0 0 0 0 0 0 0
142952 + 0 0 0 0 0 0 0 0 0 0 0 0
142953 + 0 0 0 0 0 0 0 0 0 0 0 0
142954 + 0 0 0 0 0 0 0 0 0 0 0 0
142955 + 0 0 0 0 0 0 0 0 0 0 0 0
142956 + 0 0 0 0 0 0 0 0 0 0 0 0
142957 + 0 0 0 0 0 0 0 0 0 0 0 0
142958 + 0 0 0 85 85 85 0 0 0 0 0 0
142959 + 0 0 0 85 85 85 170 170 170 0 0 0
142960 + 0 0 0 0 0 0 0 0 0 0 0 0
142961 + 0 0 0 0 0 0 170 170 170 170 170 170
142962 +170 170 170 0 0 0 0 0 0 0 0 0
142963 + 0 0 0 0 0 0 0 0 0 0 0 0
142964 + 85 85 85 0 0 0 0 0 0 0 0 0
142965 + 0 0 0 0 0 0 0 0 0 0 0 0
142966 + 0 0 0 0 0 0 0 0 0 0 0 0
142967 + 0 0 0 0 0 0 0 0 0 0 0 0
142968 + 0 0 0 0 0 0 0 0 0 0 0 0
142969 + 0 0 0 0 0 0 0 0 0 0 0 0
142970 + 0 0 0 0 0 0 0 0 0 0 0 0
142971 + 0 0 0 0 0 0 0 0 0 0 0 0
142972 + 0 0 0 0 0 0 0 0 0 0 0 0
142973 + 0 0 0 0 0 0 0 0 0 0 0 0
142974 + 0 0 0 0 0 0 0 0 0 0 0 0
142975 + 0 0 0 0 0 0 0 0 0 0 0 0
142976 + 0 0 0 0 0 0 0 0 0 0 0 0
142977 + 0 0 0 0 0 0 0 0 0 0 0 0
142978 + 0 0 0 85 85 85 0 0 0 0 0 0
142979 + 85 85 85 170 170 170 170 170 170 170 170 170
142980 + 0 0 0 0 0 0 0 0 0 0 0 0
142981 + 0 0 0 170 170 170 255 255 255 255 255 255
142982 +255 255 255 170 170 170 0 0 0 0 0 0
142983 + 0 0 0 0 0 0 0 0 0 0 0 0
142984 + 85 85 85 0 0 0 0 0 0 0 0 0
142985 + 0 0 0 0 0 0 0 0 0 0 0 0
142986 + 0 0 0 0 0 0 0 0 0 0 0 0
142987 + 0 0 0 0 0 0 0 0 0 0 0 0
142988 + 0 0 0 0 0 0 0 0 0 0 0 0
142989 + 0 0 0 0 0 0 0 0 0 0 0 0
142990 + 0 0 0 0 0 0 0 0 0 0 0 0
142991 + 0 0 0 0 0 0 0 0 0 0 0 0
142992 + 0 0 0 0 0 0 0 0 0 0 0 0
142993 + 0 0 0 0 0 0 0 0 0 0 0 0
142994 + 0 0 0 0 0 0 0 0 0 0 0 0
142995 + 0 0 0 0 0 0 0 0 0 0 0 0
142996 + 0 0 0 0 0 0 0 0 0 0 0 0
142997 + 0 0 0 0 0 0 0 0 0 0 0 0
142998 + 0 0 0 85 85 85 0 0 0 85 85 85
142999 +170 170 170 170 170 170 255 255 255 255 255 255
143000 + 0 0 0 0 0 0 0 0 0 0 0 0
143001 +170 170 170 255 255 255 170 170 170 170 170 170
143002 +255 255 255 170 170 170 0 0 0 0 0 0
143003 + 0 0 0 0 0 0 0 0 0 0 0 0
143004 + 85 85 85 0 0 0 0 0 0 0 0 0
143005 + 0 0 0 0 0 0 0 0 0 0 0 0
143006 + 0 0 0 0 0 0 0 0 0 0 0 0
143007 + 0 0 0 0 0 0 0 0 0 0 0 0
143008 + 0 0 0 0 0 0 0 0 0 0 0 0
143009 + 0 0 0 0 0 0 0 0 0 0 0 0
143010 + 0 0 0 0 0 0 0 0 0 0 0 0
143011 + 0 0 0 0 0 0 0 0 0 0 0 0
143012 + 0 0 0 0 0 0 0 0 0 0 0 0
143013 + 0 0 0 0 0 0 0 0 0 0 0 0
143014 + 0 0 0 0 0 0 0 0 0 0 0 0
143015 + 0 0 0 0 0 0 0 0 0 0 0 0
143016 + 0 0 0 0 0 0 0 0 0 0 0 0
143017 + 0 0 0 0 0 0 0 0 0 0 0 0
143018 + 0 0 0 85 85 85 0 0 0 85 85 85
143019 +170 170 170 0 0 0 0 0 0 255 255 255
143020 + 85 85 85 0 0 0 0 0 0 0 0 0
143021 +255 255 255 170 170 170 0 0 0 85 85 85
143022 +170 170 170 255 255 255 170 170 170 0 0 0
143023 + 0 0 0 0 0 0 0 0 0 0 0 0
143024 + 85 85 85 0 0 0 0 0 0 0 0 0
143025 + 0 0 0 0 0 0 0 0 0 0 0 0
143026 + 0 0 0 0 0 0 0 0 0 0 0 0
143027 + 0 0 0 0 0 0 0 0 0 0 0 0
143028 + 0 0 0 0 0 0 0 0 0 0 0 0
143029 + 0 0 0 0 0 0 0 0 0 0 0 0
143030 + 0 0 0 0 0 0 0 0 0 0 0 0
143031 + 0 0 0 0 0 0 0 0 0 0 0 0
143032 + 0 0 0 0 0 0 0 0 0 0 0 0
143033 + 0 0 0 0 0 0 0 0 0 0 0 0
143034 + 0 0 0 0 0 0 0 0 0 0 0 0
143035 + 0 0 0 0 0 0 0 0 0 0 0 0
143036 + 0 0 0 0 0 0 0 0 0 0 0 0
143037 + 0 0 0 0 0 0 0 0 0 0 0 0
143038 + 0 0 0 85 85 85 0 0 0 85 85 85
143039 + 85 85 85 0 0 0 0 0 0 170 170 170
143040 + 85 85 85 0 0 0 0 0 0 0 0 0
143041 +255 255 255 85 85 85 0 0 0 0 0 0
143042 + 85 85 85 255 255 255 170 170 170 0 0 0
143043 + 0 0 0 0 0 0 0 0 0 0 0 0
143044 + 85 85 85 0 0 0 0 0 0 0 0 0
143045 + 0 0 0 0 0 0 0 0 0 0 0 0
143046 + 0 0 0 0 0 0 0 0 0 0 0 0
143047 + 0 0 0 0 0 0 0 0 0 0 0 0
143048 + 0 0 0 0 0 0 0 0 0 0 0 0
143049 + 0 0 0 0 0 0 0 0 0 0 0 0
143050 + 0 0 0 0 0 0 0 0 0 0 0 0
143051 + 0 0 0 0 0 0 0 0 0 0 0 0
143052 + 0 0 0 0 0 0 0 0 0 0 0 0
143053 + 0 0 0 0 0 0 0 0 0 0 0 0
143054 + 0 0 0 0 0 0 0 0 0 0 0 0
143055 + 0 0 0 0 0 0 0 0 0 0 0 0
143056 + 0 0 0 0 0 0 0 0 0 0 0 0
143057 + 0 0 0 0 0 0 0 0 0 0 0 0
143058 + 0 0 0 85 85 85 0 0 0 85 85 85
143059 +170 170 170 0 0 0 0 0 0 170 170 170
143060 + 85 85 85 85 85 85 85 85 85 85 85 85
143061 +255 255 255 85 85 85 0 0 0 0 0 0
143062 + 85 85 85 255 255 255 170 170 170 0 0 0
143063 + 0 0 0 0 0 0 0 0 0 0 0 0
143064 + 85 85 85 0 0 0 0 0 0 0 0 0
143065 + 0 0 0 0 0 0 0 0 0 0 0 0
143066 + 0 0 0 0 0 0 0 0 0 0 0 0
143067 + 0 0 0 0 0 0 0 0 0 0 0 0
143068 + 0 0 0 0 0 0 0 0 0 0 0 0
143069 + 0 0 0 0 0 0 0 0 0 0 0 0
143070 + 0 0 0 0 0 0 0 0 0 0 0 0
143071 + 0 0 0 0 0 0 0 0 0 0 0 0
143072 + 0 0 0 0 0 0 0 0 0 0 0 0
143073 + 0 0 0 0 0 0 0 0 0 0 0 0
143074 + 0 0 0 0 0 0 0 0 0 0 0 0
143075 + 0 0 0 0 0 0 0 0 0 0 0 0
143076 + 0 0 0 0 0 0 0 0 0 0 0 0
143077 + 0 0 0 0 0 0 0 0 0 0 0 0
143078 + 0 0 0 85 85 85 0 0 0 0 0 0
143079 +255 255 255 0 0 0 0 0 0 170 85 0
143080 +255 255 85 170 85 0 255 255 85 170 85 0
143081 +255 255 85 170 85 0 0 0 0 0 0 0
143082 + 85 85 85 255 255 255 0 0 0 0 0 0
143083 + 0 0 0 0 0 0 0 0 0 0 0 0
143084 + 85 85 85 0 0 0 0 0 0 0 0 0
143085 + 0 0 0 0 0 0 0 0 0 0 0 0
143086 + 0 0 0 0 0 0 0 0 0 0 0 0
143087 + 0 0 0 0 0 0 0 0 0 0 0 0
143088 + 0 0 0 0 0 0 0 0 0 0 0 0
143089 + 0 0 0 0 0 0 0 0 0 0 0 0
143090 + 0 0 0 0 0 0 0 0 0 0 0 0
143091 + 0 0 0 0 0 0 0 0 0 0 0 0
143092 + 0 0 0 0 0 0 0 0 0 0 0 0
143093 + 0 0 0 0 0 0 0 0 0 0 0 0
143094 + 0 0 0 0 0 0 0 0 0 0 0 0
143095 + 0 0 0 0 0 0 0 0 0 0 0 0
143096 + 0 0 0 0 0 0 0 0 0 0 0 0
143097 + 0 0 0 0 0 0 0 0 0 0 0 0
143098 + 0 0 0 85 85 85 0 0 0 0 0 0
143099 +170 170 170 170 170 170 170 85 0 255 255 85
143100 +170 85 0 255 255 85 170 85 0 255 255 85
143101 +170 85 0 255 255 85 170 85 0 255 255 85
143102 +170 170 170 170 170 170 0 0 0 0 0 0
143103 + 0 0 0 0 0 0 0 0 0 0 0 0
143104 + 85 85 85 0 0 0 0 0 0 0 0 0
143105 + 0 0 0 0 0 0 0 0 0 0 0 0
143106 + 0 0 0 0 0 0 0 0 0 0 0 0
143107 + 0 0 0 0 0 0 0 0 0 0 0 0
143108 + 0 0 0 0 0 0 0 0 0 0 0 0
143109 + 0 0 0 0 0 0 0 0 0 0 0 0
143110 + 0 0 0 0 0 0 0 0 0 0 0 0
143111 + 0 0 0 0 0 0 0 0 0 0 0 0
143112 + 0 0 0 0 0 0 0 0 0 0 0 0
143113 + 0 0 0 0 0 0 0 0 0 0 0 0
143114 + 0 0 0 0 0 0 0 0 0 0 0 0
143115 + 0 0 0 0 0 0 0 0 0 0 0 0
143116 + 0 0 0 0 0 0 0 0 0 0 0 0
143117 + 0 0 0 0 0 0 0 0 0 0 0 0
143118 + 0 0 0 85 85 85 0 0 0 0 0 0
143119 + 0 0 0 170 85 0 255 255 85 170 85 0
143120 +255 255 85 170 85 0 255 255 85 170 85 0
143121 +255 255 85 170 85 0 255 255 85 170 85 0
143122 +255 255 85 170 85 0 0 0 0 0 0 0
143123 + 0 0 0 0 0 0 0 0 0 0 0 0
143124 + 85 85 85 0 0 0 0 0 0 0 0 0
143125 + 0 0 0 0 0 0 0 0 0 0 0 0
143126 + 0 0 0 0 0 0 0 0 0 0 0 0
143127 + 0 0 0 0 0 0 0 0 0 0 0 0
143128 + 0 0 0 0 0 0 0 0 0 0 0 0
143129 + 0 0 0 0 0 0 0 0 0 0 0 0
143130 + 0 0 0 0 0 0 0 0 0 0 0 0
143131 + 0 0 0 0 0 0 0 0 0 0 0 0
143132 + 0 0 0 0 0 0 0 0 0 0 0 0
143133 + 0 0 0 0 0 0 0 0 0 0 0 0
143134 + 0 0 0 0 0 0 0 0 0 0 0 0
143135 + 0 0 0 0 0 0 0 0 0 0 0 0
143136 + 0 0 0 0 0 0 0 0 0 0 0 0
143137 + 0 0 0 0 0 0 0 0 0 0 0 0
143138 + 0 0 0 85 85 85 0 0 0 0 0 0
143139 +170 85 0 255 255 85 170 85 0 255 255 85
143140 +170 85 0 255 255 85 170 85 0 255 255 85
143141 +170 85 0 255 255 85 170 85 0 255 255 85
143142 +170 85 0 255 255 85 170 85 0 0 0 0
143143 + 0 0 0 0 0 0 0 0 0 0 0 0
143144 + 0 0 0 85 85 85 0 0 0 0 0 0
143145 + 0 0 0 0 0 0 0 0 0 0 0 0
143146 + 0 0 0 0 0 0 0 0 0 0 0 0
143147 + 0 0 0 0 0 0 0 0 0 0 0 0
143148 + 0 0 0 0 0 0 0 0 0 0 0 0
143149 + 0 0 0 0 0 0 0 0 0 0 0 0
143150 + 0 0 0 0 0 0 0 0 0 0 0 0
143151 + 0 0 0 0 0 0 0 0 0 0 0 0
143152 + 0 0 0 0 0 0 0 0 0 0 0 0
143153 + 0 0 0 0 0 0 0 0 0 0 0 0
143154 + 0 0 0 0 0 0 0 0 0 0 0 0
143155 + 0 0 0 0 0 0 0 0 0 0 0 0
143156 + 0 0 0 0 0 0 0 0 0 0 0 0
143157 + 0 0 0 0 0 0 0 0 0 0 0 0
143158 + 0 0 0 85 85 85 85 85 85 0 0 0
143159 +255 255 85 170 85 0 255 255 85 170 85 0
143160 +255 255 85 170 85 0 255 255 85 170 85 0
143161 +255 255 85 170 85 0 255 255 85 170 85 0
143162 +255 255 85 170 85 0 170 85 0 0 0 0
143163 + 0 0 0 0 0 0 0 0 0 0 0 0
143164 + 0 0 0 85 85 85 0 0 0 0 0 0
143165 + 0 0 0 0 0 0 0 0 0 0 0 0
143166 + 0 0 0 0 0 0 0 0 0 0 0 0
143167 + 0 0 0 0 0 0 0 0 0 0 0 0
143168 + 0 0 0 0 0 0 0 0 0 0 0 0
143169 + 0 0 0 0 0 0 0 0 0 0 0 0
143170 + 0 0 0 0 0 0 0 0 0 0 0 0
143171 + 0 0 0 0 0 0 0 0 0 0 0 0
143172 + 0 0 0 0 0 0 0 0 0 0 0 0
143173 + 0 0 0 0 0 0 0 0 0 0 0 0
143174 + 0 0 0 0 0 0 0 0 0 0 0 0
143175 + 0 0 0 0 0 0 0 0 0 0 0 0
143176 + 0 0 0 0 0 0 0 0 0 0 0 0
143177 + 0 0 0 0 0 0 0 0 0 0 0 0
143178 + 0 0 0 85 85 85 85 85 85 0 0 0
143179 +170 85 0 255 255 85 170 85 0 255 255 85
143180 +170 85 0 255 255 85 170 85 0 255 255 85
143181 +170 85 0 255 255 85 170 85 0 170 85 0
143182 +170 85 0 170 85 0 85 85 85 0 0 0
143183 + 0 0 0 85 85 85 0 0 0 0 0 0
143184 + 0 0 0 0 0 0 85 85 85 0 0 0
143185 + 0 0 0 0 0 0 0 0 0 0 0 0
143186 + 0 0 0 0 0 0 0 0 0 0 0 0
143187 + 0 0 0 0 0 0 0 0 0 0 0 0
143188 + 0 0 0 0 0 0 0 0 0 0 0 0
143189 + 0 0 0 0 0 0 0 0 0 0 0 0
143190 + 0 0 0 0 0 0 0 0 0 0 0 0
143191 + 0 0 0 0 0 0 0 0 0 0 0 0
143192 + 0 0 0 0 0 0 0 0 0 0 0 0
143193 + 0 0 0 0 0 0 0 0 0 0 0 0
143194 + 0 0 0 0 0 0 0 0 0 0 0 0
143195 + 0 0 0 0 0 0 0 0 0 0 0 0
143196 + 0 0 0 0 0 0 0 0 0 0 0 0
143197 + 0 0 0 0 0 0 0 0 0 0 0 0
143198 + 0 0 0 85 85 85 85 85 85 0 0 0
143199 + 85 85 85 170 85 0 255 255 85 170 85 0
143200 +255 255 85 170 85 0 255 255 85 170 85 0
143201 +170 85 0 170 85 0 170 85 0 170 85 0
143202 +170 85 0 170 85 0 85 85 85 0 0 0
143203 + 0 0 0 85 85 85 170 170 170 85 85 85
143204 + 0 0 0 0 0 0 85 85 85 0 0 0
143205 + 0 0 0 0 0 0 0 0 0 0 0 0
143206 + 0 0 0 0 0 0 0 0 0 0 0 0
143207 + 0 0 0 0 0 0 0 0 0 0 0 0
143208 + 0 0 0 0 0 0 0 0 0 0 0 0
143209 + 0 0 0 0 0 0 0 0 0 0 0 0
143210 + 0 0 0 0 0 0 0 0 0 0 0 0
143211 + 0 0 0 0 0 0 0 0 0 0 0 0
143212 + 0 0 0 0 0 0 0 0 0 0 0 0
143213 + 0 0 0 0 0 0 0 0 0 0 0 0
143214 + 0 0 0 0 0 0 0 0 0 0 0 0
143215 + 0 0 0 0 0 0 0 0 0 0 0 0
143216 + 0 0 0 0 0 0 0 0 0 0 0 0
143217 + 0 0 0 0 0 0 0 0 0 0 0 0
143218 + 0 0 0 85 85 85 85 85 85 0 0 0
143219 + 85 85 85 170 85 0 170 85 0 170 85 0
143220 +170 85 0 170 85 0 170 85 0 170 85 0
143221 +170 85 0 170 85 0 170 85 0 170 85 0
143222 +170 170 170 170 170 170 170 170 170 0 0 0
143223 + 0 0 0 0 0 0 170 170 170 170 170 170
143224 + 0 0 0 0 0 0 0 0 0 85 85 85
143225 + 0 0 0 0 0 0 0 0 0 0 0 0
143226 + 0 0 0 0 0 0 0 0 0 0 0 0
143227 + 0 0 0 0 0 0 0 0 0 0 0 0
143228 + 0 0 0 0 0 0 0 0 0 0 0 0
143229 + 0 0 0 0 0 0 0 0 0 0 0 0
143230 + 0 0 0 0 0 0 0 0 0 0 0 0
143231 + 0 0 0 0 0 0 0 0 0 0 0 0
143232 + 0 0 0 0 0 0 0 0 0 0 0 0
143233 + 0 0 0 0 0 0 0 0 0 0 0 0
143234 + 0 0 0 0 0 0 0 0 0 0 0 0
143235 + 0 0 0 0 0 0 0 0 0 0 0 0
143236 + 0 0 0 0 0 0 0 0 0 0 0 0
143237 + 0 0 0 0 0 0 0 0 0 0 0 0
143238 + 0 0 0 85 85 85 0 0 0 0 0 0
143239 + 85 85 85 170 170 170 170 85 0 170 85 0
143240 +170 85 0 170 85 0 170 85 0 170 85 0
143241 +170 85 0 170 85 0 170 170 170 170 170 170
143242 +170 170 170 170 170 170 170 170 170 85 85 85
143243 + 0 0 0 0 0 0 85 85 85 85 85 85
143244 + 0 0 0 0 0 0 0 0 0 85 85 85
143245 + 0 0 0 0 0 0 0 0 0 0 0 0
143246 + 0 0 0 0 0 0 0 0 0 0 0 0
143247 + 0 0 0 0 0 0 0 0 0 0 0 0
143248 + 0 0 0 0 0 0 0 0 0 0 0 0
143249 + 0 0 0 0 0 0 0 0 0 0 0 0
143250 + 0 0 0 0 0 0 0 0 0 0 0 0
143251 + 0 0 0 0 0 0 0 0 0 0 0 0
143252 + 0 0 0 0 0 0 0 0 0 0 0 0
143253 + 0 0 0 0 0 0 0 0 0 0 0 0
143254 + 0 0 0 0 0 0 0 0 0 0 0 0
143255 + 0 0 0 0 0 0 0 0 0 0 0 0
143256 + 0 0 0 0 0 0 0 0 0 0 0 0
143257 + 0 0 0 0 0 0 0 0 0 0 0 0
143258 + 0 0 0 85 85 85 0 0 0 0 0 0
143259 + 85 85 85 170 170 170 170 170 170 170 85 0
143260 +170 85 0 170 85 0 170 85 0 170 85 0
143261 +170 170 170 170 170 170 170 170 170 170 170 170
143262 +255 255 255 255 255 255 255 255 255 170 170 170
143263 + 0 0 0 0 0 0 0 0 0 0 0 0
143264 + 0 0 0 0 0 0 0 0 0 85 85 85
143265 + 0 0 0 0 0 0 0 0 0 0 0 0
143266 + 0 0 0 0 0 0 0 0 0 0 0 0
143267 + 0 0 0 0 0 0 0 0 0 0 0 0
143268 + 0 0 0 0 0 0 0 0 0 0 0 0
143269 + 0 0 0 0 0 0 0 0 0 0 0 0
143270 + 0 0 0 0 0 0 0 0 0 0 0 0
143271 + 0 0 0 0 0 0 0 0 0 0 0 0
143272 + 0 0 0 0 0 0 0 0 0 0 0 0
143273 + 0 0 0 0 0 0 0 0 0 0 0 0
143274 + 0 0 0 0 0 0 0 0 0 0 0 0
143275 + 0 0 0 0 0 0 0 0 0 0 0 0
143276 + 0 0 0 0 0 0 0 0 0 0 0 0
143277 + 0 0 0 0 0 0 0 0 0 0 0 0
143278 + 85 85 85 0 0 0 0 0 0 85 85 85
143279 +255 255 255 255 255 255 170 170 170 170 170 170
143280 +170 170 170 170 170 170 170 170 170 170 170 170
143281 +170 170 170 170 170 170 255 255 255 255 255 255
143282 +255 255 255 255 255 255 255 255 255 255 255 255
143283 + 85 85 85 0 0 0 0 0 0 0 0 0
143284 + 0 0 0 0 0 0 0 0 0 0 0 0
143285 + 85 85 85 0 0 0 0 0 0 0 0 0
143286 + 0 0 0 0 0 0 0 0 0 0 0 0
143287 + 0 0 0 0 0 0 0 0 0 0 0 0
143288 + 0 0 0 0 0 0 0 0 0 0 0 0
143289 + 0 0 0 0 0 0 0 0 0 0 0 0
143290 + 0 0 0 0 0 0 0 0 0 0 0 0
143291 + 0 0 0 0 0 0 0 0 0 0 0 0
143292 + 0 0 0 0 0 0 0 0 0 0 0 0
143293 + 0 0 0 0 0 0 0 0 0 0 0 0
143294 + 0 0 0 0 0 0 0 0 0 0 0 0
143295 + 0 0 0 0 0 0 0 0 0 0 0 0
143296 + 0 0 0 0 0 0 0 0 0 0 0 0
143297 + 0 0 0 0 0 0 0 0 0 0 0 0
143298 + 85 85 85 0 0 0 0 0 0 170 170 170
143299 +255 255 255 255 255 255 170 170 170 170 170 170
143300 +170 170 170 170 170 170 170 170 170 170 170 170
143301 +170 170 170 255 255 255 255 255 255 255 255 255
143302 +255 255 255 255 255 255 255 255 255 255 255 255
143303 +170 170 170 0 0 0 0 0 0 0 0 0
143304 + 0 0 0 0 0 0 0 0 0 0 0 0
143305 + 85 85 85 0 0 0 0 0 0 0 0 0
143306 + 0 0 0 0 0 0 0 0 0 0 0 0
143307 + 0 0 0 0 0 0 0 0 0 0 0 0
143308 + 0 0 0 0 0 0 0 0 0 0 0 0
143309 + 0 0 0 0 0 0 0 0 0 0 0 0
143310 + 0 0 0 0 0 0 0 0 0 0 0 0
143311 + 0 0 0 0 0 0 0 0 0 0 0 0
143312 + 0 0 0 0 0 0 0 0 0 0 0 0
143313 + 0 0 0 0 0 0 0 0 0 0 0 0
143314 + 0 0 0 0 0 0 0 0 0 0 0 0
143315 + 0 0 0 0 0 0 0 0 0 0 0 0
143316 + 0 0 0 0 0 0 0 0 0 0 0 0
143317 + 0 0 0 0 0 0 0 0 0 85 85 85
143318 + 0 0 0 0 0 0 85 85 85 255 255 255
143319 +255 255 255 255 255 255 255 255 255 170 170 170
143320 +170 170 170 170 170 170 170 170 170 170 170 170
143321 +255 255 255 255 255 255 255 255 255 255 255 255
143322 +255 255 255 255 255 255 255 255 255 255 255 255
143323 +255 255 255 0 0 0 0 0 0 0 0 0
143324 + 0 0 0 0 0 0 0 0 0 0 0 0
143325 + 0 0 0 85 85 85 0 0 0 0 0 0
143326 + 0 0 0 0 0 0 0 0 0 0 0 0
143327 + 0 0 0 0 0 0 0 0 0 0 0 0
143328 + 0 0 0 0 0 0 0 0 0 0 0 0
143329 + 0 0 0 0 0 0 0 0 0 0 0 0
143330 + 0 0 0 0 0 0 0 0 0 0 0 0
143331 + 0 0 0 0 0 0 0 0 0 0 0 0
143332 + 0 0 0 0 0 0 0 0 0 0 0 0
143333 + 0 0 0 0 0 0 0 0 0 0 0 0
143334 + 0 0 0 0 0 0 0 0 0 0 0 0
143335 + 0 0 0 0 0 0 0 0 0 0 0 0
143336 + 0 0 0 0 0 0 0 0 0 0 0 0
143337 + 0 0 0 0 0 0 85 85 85 0 0 0
143338 + 0 0 0 85 85 85 170 170 170 255 255 255
143339 +255 255 255 255 255 255 255 255 255 255 255 255
143340 +255 255 255 255 255 255 255 255 255 255 255 255
143341 +255 255 255 255 255 255 255 255 255 255 255 255
143342 +255 255 255 255 255 255 255 255 255 255 255 255
143343 +255 255 255 85 85 85 0 0 0 0 0 0
143344 + 0 0 0 0 0 0 0 0 0 0 0 0
143345 + 0 0 0 0 0 0 85 85 85 0 0 0
143346 + 0 0 0 0 0 0 0 0 0 0 0 0
143347 + 0 0 0 0 0 0 0 0 0 0 0 0
143348 + 0 0 0 0 0 0 0 0 0 0 0 0
143349 + 0 0 0 0 0 0 0 0 0 0 0 0
143350 + 0 0 0 0 0 0 0 0 0 0 0 0
143351 + 0 0 0 0 0 0 0 0 0 0 0 0
143352 + 0 0 0 0 0 0 0 0 0 0 0 0
143353 + 0 0 0 0 0 0 0 0 0 0 0 0
143354 + 0 0 0 0 0 0 0 0 0 0 0 0
143355 + 0 0 0 0 0 0 0 0 0 0 0 0
143356 + 0 0 0 0 0 0 0 0 0 0 0 0
143357 + 0 0 0 85 85 85 0 0 0 0 0 0
143358 + 0 0 0 85 85 85 255 255 255 255 255 255
143359 +255 255 255 255 255 255 255 255 255 255 255 255
143360 +255 255 255 255 255 255 255 255 255 255 255 255
143361 +255 255 255 255 255 255 255 255 255 255 255 255
143362 +255 255 255 255 255 255 255 255 255 255 255 255
143363 +255 255 255 170 170 170 0 0 0 0 0 0
143364 + 0 0 0 0 0 0 0 0 0 0 0 0
143365 + 0 0 0 0 0 0 0 0 0 85 85 85
143366 + 0 0 0 0 0 0 0 0 0 0 0 0
143367 + 0 0 0 0 0 0 0 0 0 0 0 0
143368 + 0 0 0 0 0 0 0 0 0 0 0 0
143369 + 0 0 0 0 0 0 0 0 0 0 0 0
143370 + 0 0 0 0 0 0 0 0 0 0 0 0
143371 + 0 0 0 0 0 0 0 0 0 0 0 0
143372 + 0 0 0 0 0 0 0 0 0 0 0 0
143373 + 0 0 0 0 0 0 0 0 0 0 0 0
143374 + 0 0 0 0 0 0 0 0 0 0 0 0
143375 + 0 0 0 0 0 0 0 0 0 0 0 0
143376 + 0 0 0 0 0 0 0 0 0 0 0 0
143377 + 0 0 0 85 85 85 0 0 0 0 0 0
143378 + 0 0 0 85 85 85 255 255 255 255 255 255
143379 +255 255 255 255 255 255 255 255 255 255 255 255
143380 +255 255 255 255 255 255 255 255 255 255 255 255
143381 +255 255 255 255 255 255 255 255 255 255 255 255
143382 +255 255 255 255 255 255 255 255 255 255 255 255
143383 +255 255 255 255 255 255 0 0 0 0 0 0
143384 + 0 0 0 0 0 0 0 0 0 0 0 0
143385 + 0 0 0 0 0 0 0 0 0 0 0 0
143386 + 85 85 85 0 0 0 0 0 0 0 0 0
143387 + 0 0 0 0 0 0 0 0 0 0 0 0
143388 + 0 0 0 0 0 0 0 0 0 0 0 0
143389 + 0 0 0 0 0 0 0 0 0 0 0 0
143390 + 0 0 0 0 0 0 0 0 0 0 0 0
143391 + 0 0 0 0 0 0 0 0 0 0 0 0
143392 + 0 0 0 0 0 0 0 0 0 0 0 0
143393 + 0 0 0 0 0 0 0 0 0 0 0 0
143394 + 0 0 0 0 0 0 0 0 0 0 0 0
143395 + 0 0 0 0 0 0 0 0 0 0 0 0
143396 + 0 0 0 0 0 0 0 0 0 0 0 0
143397 + 85 85 85 0 0 0 0 0 0 0 0 0
143398 + 85 85 85 170 170 170 255 255 255 255 255 255
143399 +255 255 255 255 255 255 255 255 255 255 255 255
143400 +255 255 255 255 255 255 255 255 255 255 255 255
143401 +255 255 255 255 255 255 255 255 255 255 255 255
143402 +255 255 255 255 255 255 255 255 255 255 255 255
143403 +255 255 255 255 255 255 85 85 85 0 0 0
143404 + 0 0 0 0 0 0 0 0 0 0 0 0
143405 + 0 0 0 0 0 0 0 0 0 0 0 0
143406 + 0 0 0 85 85 85 0 0 0 0 0 0
143407 + 0 0 0 0 0 0 0 0 0 0 0 0
143408 + 0 0 0 0 0 0 0 0 0 0 0 0
143409 + 0 0 0 0 0 0 0 0 0 0 0 0
143410 + 0 0 0 0 0 0 0 0 0 0 0 0
143411 + 0 0 0 0 0 0 0 0 0 0 0 0
143412 + 0 0 0 0 0 0 0 0 0 0 0 0
143413 + 0 0 0 0 0 0 0 0 0 0 0 0
143414 + 0 0 0 0 0 0 0 0 0 0 0 0
143415 + 0 0 0 0 0 0 0 0 0 0 0 0
143416 + 0 0 0 0 0 0 0 0 0 85 85 85
143417 + 0 0 0 0 0 0 0 0 0 0 0 0
143418 + 85 85 85 170 170 170 170 170 170 170 170 170
143419 +255 255 255 255 255 255 255 255 255 170 170 170
143420 +170 170 170 170 170 170 255 255 255 255 255 255
143421 +255 255 255 255 255 255 255 255 255 255 255 255
143422 +170 170 170 170 170 170 170 170 170 170 170 170
143423 +170 170 170 170 170 170 170 170 170 85 85 85
143424 + 0 0 0 0 0 0 0 0 0 0 0 0
143425 + 0 0 0 0 0 0 0 0 0 0 0 0
143426 + 0 0 0 85 85 85 0 0 0 0 0 0
143427 + 0 0 0 0 0 0 0 0 0 0 0 0
143428 + 0 0 0 0 0 0 0 0 0 0 0 0
143429 + 0 0 0 0 0 0 0 0 0 0 0 0
143430 + 0 0 0 0 0 0 0 0 0 0 0 0
143431 + 0 0 0 0 0 0 0 0 0 0 0 0
143432 + 0 0 0 0 0 0 0 0 0 0 0 0
143433 + 0 0 0 0 0 0 0 0 0 0 0 0
143434 + 0 0 0 0 0 0 0 0 0 0 0 0
143435 + 0 0 0 0 0 0 0 0 0 0 0 0
143436 + 0 0 0 0 0 0 0 0 0 85 85 85
143437 + 0 0 0 0 0 0 0 0 0 0 0 0
143438 +170 170 170 170 170 170 170 170 170 255 255 255
143439 +255 255 255 255 255 255 255 255 255 255 255 255
143440 +170 170 170 255 255 255 255 255 255 255 255 255
143441 +255 255 255 255 255 255 255 255 255 255 255 255
143442 +255 255 255 255 255 255 170 170 170 170 170 170
143443 +170 170 170 170 170 170 170 170 170 85 85 85
143444 + 0 0 0 0 0 0 85 85 85 0 0 0
143445 + 0 0 0 0 0 0 0 0 0 0 0 0
143446 + 0 0 0 0 0 0 85 85 85 0 0 0
143447 + 0 0 0 0 0 0 0 0 0 0 0 0
143448 + 0 0 0 0 0 0 0 0 0 0 0 0
143449 + 0 0 0 0 0 0 0 0 0 0 0 0
143450 + 0 0 0 0 0 0 0 0 0 0 0 0
143451 + 0 0 0 0 0 0 0 0 0 0 0 0
143452 + 0 0 0 0 0 0 0 0 0 0 0 0
143453 + 0 0 0 0 0 0 0 0 0 0 0 0
143454 + 0 0 0 0 0 0 0 0 0 0 0 0
143455 + 0 0 0 0 0 0 0 0 0 0 0 0
143456 + 0 0 0 0 0 0 85 85 85 0 0 0
143457 + 0 0 0 0 0 0 0 0 0 0 0 0
143458 +170 170 170 255 255 255 255 255 255 255 255 255
143459 +255 255 255 255 255 255 255 255 255 255 255 255
143460 +255 255 255 255 255 255 255 255 255 255 255 255
143461 +255 255 255 255 255 255 255 255 255 255 255 255
143462 +255 255 255 255 255 255 255 255 255 255 255 255
143463 +255 255 255 170 170 170 170 170 170 170 170 170
143464 + 0 0 0 0 0 0 0 0 0 85 85 85
143465 + 85 85 85 0 0 0 0 0 0 0 0 0
143466 + 0 0 0 0 0 0 85 85 85 0 0 0
143467 + 0 0 0 0 0 0 0 0 0 0 0 0
143468 + 0 0 0 0 0 0 0 0 0 0 0 0
143469 + 0 0 0 0 0 0 0 0 0 0 0 0
143470 + 0 0 0 0 0 0 0 0 0 0 0 0
143471 + 0 0 0 0 0 0 0 0 0 0 0 0
143472 + 0 0 0 0 0 0 0 0 0 0 0 0
143473 + 0 0 0 0 0 0 0 0 0 0 0 0
143474 + 0 0 0 0 0 0 0 0 0 0 0 0
143475 + 0 0 0 0 0 0 0 0 0 0 0 0
143476 + 0 0 0 0 0 0 85 85 85 0 0 0
143477 + 85 85 85 0 0 0 0 0 0 85 85 85
143478 +255 255 255 255 255 255 255 255 255 255 255 255
143479 +255 255 255 255 255 255 255 255 255 255 255 255
143480 +255 255 255 255 255 255 255 255 255 255 255 255
143481 +255 255 255 255 255 255 255 255 255 255 255 255
143482 +255 255 255 255 255 255 255 255 255 255 255 255
143483 +255 255 255 255 255 255 170 170 170 170 170 170
143484 + 85 85 85 0 0 0 0 0 0 0 0 0
143485 + 0 0 0 85 85 85 0 0 0 0 0 0
143486 + 0 0 0 0 0 0 0 0 0 85 85 85
143487 + 0 0 0 0 0 0 0 0 0 0 0 0
143488 + 0 0 0 0 0 0 0 0 0 0 0 0
143489 + 0 0 0 0 0 0 0 0 0 0 0 0
143490 + 0 0 0 0 0 0 0 0 0 0 0 0
143491 + 0 0 0 0 0 0 0 0 0 0 0 0
143492 + 0 0 0 0 0 0 0 0 0 0 0 0
143493 + 0 0 0 0 0 0 0 0 0 0 0 0
143494 + 0 0 0 0 0 0 0 0 0 0 0 0
143495 + 0 0 0 0 0 0 0 0 0 0 0 0
143496 + 0 0 0 85 85 85 0 0 0 0 0 0
143497 + 85 85 85 0 0 0 0 0 0 170 170 170
143498 +255 255 255 255 255 255 255 255 255 255 255 255
143499 +255 255 255 255 255 255 255 255 255 255 255 255
143500 +255 255 255 255 255 255 255 255 255 255 255 255
143501 +255 255 255 255 255 255 255 255 255 255 255 255
143502 +255 255 255 255 255 255 255 255 255 255 255 255
143503 +255 255 255 255 255 255 255 255 255 255 255 255
143504 +170 170 170 85 85 85 0 0 0 0 0 0
143505 + 0 0 0 85 85 85 85 85 85 0 0 0
143506 + 0 0 0 0 0 0 0 0 0 85 85 85
143507 + 0 0 0 0 0 0 0 0 0 0 0 0
143508 + 0 0 0 0 0 0 0 0 0 0 0 0
143509 + 0 0 0 0 0 0 0 0 0 0 0 0
143510 + 0 0 0 0 0 0 0 0 0 0 0 0
143511 + 0 0 0 0 0 0 0 0 0 0 0 0
143512 + 0 0 0 0 0 0 0 0 0 0 0 0
143513 + 0 0 0 0 0 0 0 0 0 0 0 0
143514 + 0 0 0 0 0 0 0 0 0 0 0 0
143515 + 0 0 0 0 0 0 0 0 0 0 0 0
143516 + 0 0 0 85 85 85 0 0 0 85 85 85
143517 + 0 0 0 0 0 0 85 85 85 255 255 255
143518 +255 255 255 255 255 255 255 255 255 255 255 255
143519 +255 255 255 255 255 255 255 255 255 255 255 255
143520 +255 255 255 255 255 255 255 255 255 255 255 255
143521 +255 255 255 255 255 255 255 255 255 255 255 255
143522 +255 255 255 255 255 255 255 255 255 255 255 255
143523 +255 255 255 255 255 255 255 255 255 255 255 255
143524 +255 255 255 170 170 170 0 0 0 85 85 85
143525 + 85 85 85 0 0 0 85 85 85 0 0 0
143526 + 0 0 0 0 0 0 0 0 0 85 85 85
143527 + 0 0 0 0 0 0 0 0 0 0 0 0
143528 + 0 0 0 0 0 0 0 0 0 0 0 0
143529 + 0 0 0 0 0 0 0 0 0 0 0 0
143530 + 0 0 0 0 0 0 0 0 0 0 0 0
143531 + 0 0 0 0 0 0 0 0 0 0 0 0
143532 + 0 0 0 0 0 0 0 0 0 0 0 0
143533 + 0 0 0 0 0 0 0 0 0 0 0 0
143534 + 0 0 0 0 0 0 0 0 0 0 0 0
143535 + 0 0 0 0 0 0 0 0 0 0 0 0
143536 + 0 0 0 85 85 85 0 0 0 85 85 85
143537 + 0 0 0 85 85 85 170 170 170 255 255 255
143538 +255 255 255 255 255 255 255 255 255 255 255 255
143539 +255 255 255 255 255 255 255 255 255 255 255 255
143540 +255 255 255 255 255 255 255 255 255 255 255 255
143541 +255 255 255 255 255 255 255 255 255 255 255 255
143542 +255 255 255 255 255 255 255 255 255 255 255 255
143543 +255 255 255 255 255 255 255 255 255 255 255 255
143544 +255 255 255 170 170 170 0 0 0 85 85 85
143545 + 85 85 85 0 0 0 85 85 85 0 0 0
143546 + 0 0 0 0 0 0 0 0 0 0 0 0
143547 + 85 85 85 0 0 0 0 0 0 0 0 0
143548 + 0 0 0 0 0 0 0 0 0 0 0 0
143549 + 0 0 0 0 0 0 0 0 0 0 0 0
143550 + 0 0 0 0 0 0 0 0 0 0 0 0
143551 + 0 0 0 0 0 0 0 0 0 0 0 0
143552 + 0 0 0 0 0 0 0 0 0 0 0 0
143553 + 0 0 0 0 0 0 0 0 0 0 0 0
143554 + 0 0 0 0 0 0 0 0 0 0 0 0
143555 + 0 0 0 0 0 0 0 0 0 0 0 0
143556 + 85 85 85 0 0 0 0 0 0 85 85 85
143557 + 0 0 0 170 170 170 255 255 255 255 255 255
143558 +255 255 255 255 255 255 255 255 255 255 255 255
143559 +255 255 255 255 255 255 255 255 255 255 255 255
143560 +255 255 255 255 255 255 255 255 255 255 255 255
143561 +255 255 255 255 255 255 255 255 255 255 255 255
143562 +255 255 255 255 255 255 255 255 255 255 255 255
143563 +255 255 255 255 255 255 255 255 255 255 255 255
143564 +255 255 255 255 255 255 85 85 85 0 0 0
143565 + 0 0 0 0 0 0 0 0 0 85 85 85
143566 + 0 0 0 0 0 0 0 0 0 0 0 0
143567 + 85 85 85 0 0 0 0 0 0 0 0 0
143568 + 0 0 0 0 0 0 0 0 0 0 0 0
143569 + 0 0 0 0 0 0 0 0 0 0 0 0
143570 + 0 0 0 0 0 0 0 0 0 0 0 0
143571 + 0 0 0 0 0 0 0 0 0 0 0 0
143572 + 0 0 0 0 0 0 0 0 0 0 0 0
143573 + 0 0 0 0 0 0 0 0 0 0 0 0
143574 + 0 0 0 0 0 0 0 0 0 0 0 0
143575 + 0 0 0 0 0 0 0 0 0 0 0 0
143576 + 85 85 85 0 0 0 85 85 85 0 0 0
143577 + 0 0 0 255 255 255 255 255 255 255 255 255
143578 +255 255 255 255 255 255 255 255 255 255 255 255
143579 +255 255 255 255 255 255 255 255 255 255 255 255
143580 +255 255 255 255 255 255 255 255 255 255 255 255
143581 +255 255 255 255 255 255 255 255 255 255 255 255
143582 +255 255 255 255 255 255 255 255 255 255 255 255
143583 +255 255 255 255 255 255 255 255 255 255 255 255
143584 +255 255 255 255 255 255 170 170 170 0 0 0
143585 + 0 0 0 0 0 0 0 0 0 85 85 85
143586 + 0 0 0 0 0 0 0 0 0 0 0 0
143587 + 85 85 85 0 0 0 0 0 0 0 0 0
143588 + 0 0 0 0 0 0 0 0 0 0 0 0
143589 + 0 0 0 0 0 0 0 0 0 0 0 0
143590 + 0 0 0 0 0 0 0 0 0 0 0 0
143591 + 0 0 0 0 0 0 0 0 0 0 0 0
143592 + 0 0 0 0 0 0 0 0 0 0 0 0
143593 + 0 0 0 0 0 0 0 0 0 0 0 0
143594 + 0 0 0 0 0 0 0 0 0 0 0 0
143595 + 0 0 0 0 0 0 0 0 0 85 85 85
143596 + 0 0 0 0 0 0 85 85 85 0 0 0
143597 + 85 85 85 255 255 255 255 255 255 255 255 255
143598 +255 255 255 255 255 255 255 255 255 255 255 255
143599 +255 255 255 255 255 255 255 255 255 255 255 255
143600 +255 255 255 255 255 255 255 255 255 255 255 255
143601 +255 255 255 255 255 255 255 255 255 255 255 255
143602 +255 255 255 255 255 255 255 255 255 255 255 255
143603 +255 255 255 255 255 255 255 255 255 255 255 255
143604 +255 255 255 255 255 255 170 170 170 0 0 0
143605 + 0 0 0 0 0 0 0 0 0 85 85 85
143606 + 0 0 0 0 0 0 0 0 0 0 0 0
143607 + 85 85 85 0 0 0 0 0 0 0 0 0
143608 + 0 0 0 0 0 0 0 0 0 0 0 0
143609 + 0 0 0 0 0 0 0 0 0 0 0 0
143610 + 0 0 0 0 0 0 0 0 0 0 0 0
143611 + 0 0 0 0 0 0 0 0 0 0 0 0
143612 + 0 0 0 0 0 0 0 0 0 0 0 0
143613 + 0 0 0 0 0 0 0 0 0 0 0 0
143614 + 0 0 0 0 0 0 0 0 0 0 0 0
143615 + 0 0 0 0 0 0 0 0 0 85 85 85
143616 + 0 0 0 85 85 85 0 0 0 0 0 0
143617 +170 170 170 255 255 255 255 255 255 255 255 255
143618 +255 255 255 255 255 255 255 255 255 255 255 255
143619 +255 255 255 255 255 255 255 255 255 255 255 255
143620 +255 255 255 255 255 255 255 255 255 255 255 255
143621 +255 255 255 255 255 255 255 255 255 255 255 255
143622 +255 255 255 255 255 255 255 255 255 255 255 255
143623 +255 255 255 255 255 255 255 255 255 255 255 255
143624 +255 255 255 255 255 255 170 170 170 0 0 0
143625 + 0 0 0 0 0 0 0 0 0 85 85 85
143626 + 0 0 0 0 0 0 0 0 0 0 0 0
143627 + 0 0 0 85 85 85 0 0 0 0 0 0
143628 + 0 0 0 0 0 0 0 0 0 0 0 0
143629 + 0 0 0 0 0 0 0 0 0 0 0 0
143630 + 0 0 0 0 0 0 0 0 0 0 0 0
143631 + 0 0 0 0 0 0 0 0 0 0 0 0
143632 + 0 0 0 0 0 0 0 0 0 0 0 0
143633 + 0 0 0 0 0 0 0 0 0 0 0 0
143634 + 0 0 0 0 0 0 0 0 0 0 0 0
143635 + 0 0 0 0 0 0 85 85 85 0 0 0
143636 + 0 0 0 85 85 85 0 0 0 0 0 0
143637 +255 255 255 255 255 255 255 255 255 255 255 255
143638 +255 255 255 255 255 255 255 255 255 255 255 255
143639 +255 255 255 255 255 255 170 170 170 255 255 255
143640 +255 255 255 255 255 255 255 255 255 255 255 255
143641 +255 255 255 255 255 255 255 255 255 255 255 255
143642 +255 255 255 255 255 255 255 255 255 255 255 255
143643 +255 255 255 255 255 255 255 255 255 255 255 255
143644 +255 255 255 255 255 255 255 255 255 0 0 0
143645 + 0 0 0 0 0 0 0 0 0 85 85 85
143646 + 0 0 0 0 0 0 0 0 0 0 0 0
143647 + 0 0 0 85 85 85 0 0 0 0 0 0
143648 + 0 0 0 0 0 0 0 0 0 0 0 0
143649 + 0 0 0 0 0 0 0 0 0 0 0 0
143650 + 0 0 0 0 0 0 0 0 0 0 0 0
143651 + 0 0 0 0 0 0 0 0 0 0 0 0
143652 + 0 0 0 0 0 0 0 0 0 0 0 0
143653 + 0 0 0 0 0 0 0 0 0 0 0 0
143654 + 0 0 0 0 0 0 0 0 0 0 0 0
143655 + 0 0 0 85 85 85 0 0 0 0 0 0
143656 + 0 0 0 85 85 85 0 0 0 0 0 0
143657 +255 255 255 255 255 255 255 255 255 255 255 255
143658 +255 255 255 255 255 255 255 255 255 255 255 255
143659 +255 255 255 255 255 255 170 170 170 255 255 255
143660 +255 255 255 255 255 255 255 255 255 255 255 255
143661 +255 255 255 255 255 255 255 255 255 255 255 255
143662 +255 255 255 255 255 255 255 255 255 255 255 255
143663 +255 255 255 255 255 255 255 255 255 255 255 255
143664 +255 255 255 255 255 255 255 255 255 0 0 0
143665 + 0 0 0 0 0 0 0 0 0 85 85 85
143666 + 0 0 0 0 0 0 0 0 0 0 0 0
143667 + 0 0 0 85 85 85 0 0 0 0 0 0
143668 + 0 0 0 0 0 0 0 0 0 0 0 0
143669 + 0 0 0 0 0 0 0 0 0 0 0 0
143670 + 0 0 0 0 0 0 0 0 0 0 0 0
143671 + 0 0 0 0 0 0 0 0 0 0 0 0
143672 + 0 0 0 0 0 0 0 0 0 0 0 0
143673 + 0 0 0 0 0 0 0 0 0 0 0 0
143674 + 0 0 0 0 0 0 0 0 0 0 0 0
143675 + 0 0 0 85 85 85 0 0 0 0 0 0
143676 + 0 0 0 85 85 85 0 0 0 85 85 85
143677 +255 255 255 255 255 255 255 255 255 255 255 255
143678 +255 255 255 255 255 255 255 255 255 255 255 255
143679 +255 255 255 255 255 255 170 170 170 255 255 255
143680 +255 255 255 255 255 255 255 255 255 255 255 255
143681 +255 255 255 255 255 255 255 255 255 255 255 255
143682 +255 255 255 255 255 255 255 255 255 255 255 255
143683 +255 255 255 255 255 255 255 255 255 255 255 255
143684 +255 255 255 255 255 255 255 255 255 0 0 0
143685 + 0 0 0 0 0 0 0 0 0 85 85 85
143686 + 0 0 0 0 0 0 0 0 0 0 0 0
143687 + 0 0 0 85 85 85 0 0 0 0 0 0
143688 + 0 0 0 0 0 0 0 0 0 0 0 0
143689 + 0 0 0 0 0 0 0 0 0 0 0 0
143690 + 0 0 0 0 0 0 0 0 0 0 0 0
143691 + 0 0 0 0 0 0 0 0 0 0 0 0
143692 + 0 0 0 0 0 0 0 0 0 0 0 0
143693 + 0 0 0 0 0 0 0 0 0 0 0 0
143694 + 0 0 0 0 0 0 0 0 0 0 0 0
143695 + 0 0 0 85 85 85 0 0 0 0 0 0
143696 + 0 0 0 85 85 85 0 0 0 85 85 85
143697 +255 255 255 255 255 255 255 255 255 255 255 255
143698 +255 255 255 255 255 255 255 255 255 255 255 255
143699 +255 255 255 255 255 255 170 170 170 255 255 255
143700 +255 255 255 255 255 255 255 255 255 255 255 255
143701 +255 255 255 255 255 255 255 255 255 255 255 255
143702 +255 255 255 255 255 255 255 255 255 255 255 255
143703 +255 255 255 255 255 255 255 255 255 255 255 255
143704 +255 255 255 255 255 255 255 255 255 0 0 0
143705 + 0 0 0 0 0 0 0 0 0 85 85 85
143706 + 0 0 0 0 0 0 0 0 0 0 0 0
143707 + 0 0 0 85 85 85 0 0 0 0 0 0
143708 + 0 0 0 0 0 0 0 0 0 0 0 0
143709 + 0 0 0 0 0 0 0 0 0 0 0 0
143710 + 0 0 0 0 0 0 0 0 0 0 0 0
143711 + 0 0 0 0 0 0 0 0 0 0 0 0
143712 + 0 0 0 0 0 0 0 0 0 0 0 0
143713 + 0 0 0 0 0 0 0 0 0 0 0 0
143714 + 0 0 0 0 0 0 0 0 0 0 0 0
143715 + 0 0 0 85 85 85 0 0 0 0 0 0
143716 + 0 0 0 0 0 0 85 85 85 85 85 85
143717 +255 255 255 255 255 255 255 255 255 255 255 255
143718 +255 255 255 255 255 255 255 255 255 255 255 255
143719 +255 255 255 255 255 255 170 170 170 255 255 255
143720 +255 255 255 255 255 255 255 255 255 255 255 255
143721 +255 255 255 255 255 255 255 255 255 255 255 255
143722 +255 255 255 255 255 255 255 255 255 255 255 255
143723 +255 255 255 255 255 255 255 255 255 255 255 255
143724 +255 255 255 255 255 255 255 255 255 0 0 0
143725 + 0 0 0 0 0 0 0 0 0 85 85 85
143726 + 0 0 0 0 0 0 0 0 0 0 0 0
143727 + 0 0 0 85 85 85 0 0 0 0 0 0
143728 + 0 0 0 0 0 0 0 0 0 0 0 0
143729 + 0 0 0 0 0 0 0 0 0 0 0 0
143730 + 0 0 0 0 0 0 0 0 0 0 0 0
143731 + 0 0 0 0 0 0 0 0 0 0 0 0
143732 + 0 0 0 0 0 0 0 0 0 0 0 0
143733 + 0 0 0 0 0 0 0 0 0 0 0 0
143734 + 0 0 0 0 0 0 0 0 0 0 0 0
143735 + 0 0 0 85 85 85 0 0 0 0 0 0
143736 + 0 0 0 0 0 0 0 0 0 85 85 85
143737 +255 255 255 255 255 255 255 255 255 255 255 255
143738 +255 255 255 255 255 255 255 255 255 255 255 255
143739 +255 255 255 255 255 255 170 170 170 255 255 255
143740 +255 255 255 255 255 255 255 255 255 255 255 255
143741 +255 255 255 255 255 255 255 255 255 255 255 255
143742 +255 255 255 255 255 255 255 255 255 255 255 255
143743 +255 255 255 255 255 255 255 255 255 255 255 255
143744 +255 255 255 255 255 255 255 255 255 0 0 0
143745 + 85 85 85 85 85 85 85 85 85 85 85 85
143746 + 85 85 85 0 0 0 0 0 0 0 0 0
143747 + 0 0 0 85 85 85 0 0 0 0 0 0
143748 + 0 0 0 0 0 0 0 0 0 0 0 0
143749 + 0 0 0 0 0 0 0 0 0 0 0 0
143750 + 0 0 0 0 0 0 0 0 0 0 0 0
143751 + 0 0 0 0 0 0 0 0 0 0 0 0
143752 + 0 0 0 0 0 0 0 0 0 0 0 0
143753 + 0 0 0 0 0 0 0 0 0 0 0 0
143754 + 0 0 0 0 0 0 0 0 0 0 0 0
143755 + 0 0 0 85 85 85 0 0 0 170 85 0
143756 +255 255 85 170 85 0 0 0 0 0 0 0
143757 + 85 85 85 255 255 255 255 255 255 255 255 255
143758 +255 255 255 255 255 255 255 255 255 255 255 255
143759 +255 255 255 255 255 255 170 170 170 255 255 255
143760 +255 255 255 255 255 255 255 255 255 255 255 255
143761 +255 255 255 255 255 255 255 255 255 255 255 255
143762 +255 255 255 255 255 255 255 255 255 255 255 255
143763 +255 255 255 255 255 255 255 255 255 255 255 255
143764 +255 255 255 255 255 255 255 255 255 85 85 85
143765 + 0 0 0 0 0 0 0 0 0 0 0 0
143766 + 0 0 0 85 85 85 85 85 85 0 0 0
143767 + 0 0 0 85 85 85 0 0 0 0 0 0
143768 + 0 0 0 0 0 0 0 0 0 0 0 0
143769 + 0 0 0 0 0 0 0 0 0 0 0 0
143770 + 0 0 0 0 0 0 0 0 0 0 0 0
143771 + 0 0 0 0 0 0 0 0 0 0 0 0
143772 + 0 0 0 0 0 0 0 0 0 0 0 0
143773 + 0 0 0 0 0 0 0 0 0 0 0 0
143774 + 0 0 0 0 0 0 0 0 0 0 0 0
143775 + 0 0 0 0 0 0 170 85 0 255 255 85
143776 +170 85 0 255 255 85 170 85 0 0 0 0
143777 + 0 0 0 85 85 85 255 255 255 255 255 255
143778 +255 255 255 255 255 255 255 255 255 255 255 255
143779 +255 255 255 255 255 255 170 170 170 255 255 255
143780 +255 255 255 255 255 255 255 255 255 255 255 255
143781 +255 255 255 255 255 255 255 255 255 255 255 255
143782 +255 255 255 255 255 255 255 255 255 255 255 255
143783 +255 255 255 255 255 255 255 255 255 255 255 255
143784 +255 255 85 170 85 0 255 255 85 0 0 0
143785 + 0 0 0 0 0 0 0 0 0 0 0 0
143786 + 0 0 0 0 0 0 85 85 85 85 85 85
143787 + 85 85 85 0 0 0 0 0 0 0 0 0
143788 + 0 0 0 0 0 0 0 0 0 0 0 0
143789 + 0 0 0 0 0 0 0 0 0 0 0 0
143790 + 0 0 0 0 0 0 0 0 0 0 0 0
143791 + 0 0 0 0 0 0 0 0 0 0 0 0
143792 + 0 0 0 0 0 0 0 0 0 0 0 0
143793 + 0 0 0 0 0 0 0 0 0 0 0 0
143794 + 0 0 0 0 0 0 0 0 0 0 0 0
143795 + 0 0 0 170 85 0 255 255 85 170 85 0
143796 +255 255 85 170 85 0 255 255 85 170 85 0
143797 + 0 0 0 0 0 0 85 85 85 255 255 255
143798 +255 255 255 255 255 255 255 255 255 255 255 255
143799 +255 255 255 255 255 255 255 255 255 255 255 255
143800 +255 255 255 255 255 255 255 255 255 255 255 255
143801 +255 255 255 255 255 255 255 255 255 255 255 255
143802 +255 255 255 255 255 255 255 255 255 255 255 255
143803 +255 255 255 255 255 255 255 255 255 255 255 85
143804 +170 85 0 255 255 85 170 85 0 0 0 0
143805 + 0 0 0 0 0 0 0 0 0 0 0 0
143806 + 0 0 0 0 0 0 0 0 0 0 0 0
143807 +170 85 0 0 0 0 0 0 0 0 0 0
143808 + 0 0 0 0 0 0 0 0 0 0 0 0
143809 + 0 0 0 0 0 0 0 0 0 0 0 0
143810 + 0 0 0 0 0 0 0 0 0 0 0 0
143811 + 0 0 0 0 0 0 0 0 0 0 0 0
143812 + 0 0 0 0 0 0 0 0 0 0 0 0
143813 + 0 0 0 0 0 0 0 0 0 0 0 0
143814 + 0 0 0 0 0 0 0 0 0 0 0 0
143815 +170 85 0 255 255 85 170 85 0 255 255 85
143816 +170 85 0 255 255 85 170 85 0 255 255 85
143817 +170 85 0 0 0 0 0 0 0 85 85 85
143818 +255 255 255 255 255 255 255 255 255 255 255 255
143819 +255 255 255 255 255 255 255 255 255 255 255 255
143820 +255 255 255 255 255 255 255 255 255 255 255 255
143821 +255 255 255 255 255 255 255 255 255 255 255 255
143822 +255 255 255 255 255 255 255 255 255 255 255 255
143823 +255 255 255 255 255 255 255 255 255 170 85 0
143824 +255 255 85 170 85 0 255 255 85 0 0 0
143825 + 0 0 0 0 0 0 0 0 0 0 0 0
143826 + 0 0 0 0 0 0 0 0 0 170 85 0
143827 +255 255 85 170 85 0 0 0 0 0 0 0
143828 + 0 0 0 0 0 0 0 0 0 0 0 0
143829 + 0 0 0 0 0 0 0 0 0 0 0 0
143830 + 0 0 0 0 0 0 0 0 0 0 0 0
143831 + 0 0 0 0 0 0 0 0 0 0 0 0
143832 + 0 0 0 0 0 0 0 0 0 0 0 0
143833 + 0 0 0 0 0 0 0 0 0 170 85 0
143834 +255 255 85 170 85 0 255 255 85 170 85 0
143835 +255 255 85 170 85 0 255 255 85 170 85 0
143836 +255 255 85 170 85 0 255 255 85 170 85 0
143837 +255 255 85 0 0 0 0 0 0 0 0 0
143838 + 85 85 85 255 255 255 255 255 255 255 255 255
143839 +255 255 255 255 255 255 255 255 255 255 255 255
143840 +255 255 255 255 255 255 255 255 255 255 255 255
143841 +255 255 255 255 255 255 255 255 255 255 255 255
143842 +255 255 255 255 255 255 255 255 255 255 255 255
143843 +255 255 255 255 255 255 255 255 255 255 255 85
143844 +170 85 0 255 255 85 170 85 0 0 0 0
143845 + 0 0 0 0 0 0 0 0 0 0 0 0
143846 + 0 0 0 0 0 0 0 0 0 255 255 85
143847 +170 85 0 255 255 85 0 0 0 0 0 0
143848 + 0 0 0 0 0 0 0 0 0 0 0 0
143849 + 0 0 0 0 0 0 0 0 0 0 0 0
143850 + 0 0 0 0 0 0 0 0 0 0 0 0
143851 + 0 0 0 0 0 0 0 0 0 0 0 0
143852 + 0 0 0 0 0 0 0 0 0 0 0 0
143853 + 0 0 0 0 0 0 170 85 0 255 255 85
143854 +170 85 0 255 255 85 170 85 0 255 255 85
143855 +170 85 0 255 255 85 170 85 0 255 255 85
143856 +170 85 0 255 255 85 170 85 0 255 255 85
143857 +170 85 0 255 255 85 0 0 0 0 0 0
143858 + 0 0 0 85 85 85 255 255 255 255 255 255
143859 +255 255 255 255 255 255 255 255 255 255 255 255
143860 +255 255 255 255 255 255 255 255 255 255 255 255
143861 +255 255 255 255 255 255 255 255 255 255 255 255
143862 +255 255 255 255 255 255 255 255 255 255 255 255
143863 +255 255 255 255 255 255 170 170 170 170 85 0
143864 +255 255 85 170 85 0 255 255 85 170 85 0
143865 + 0 0 0 0 0 0 0 0 0 0 0 0
143866 + 0 0 0 0 0 0 255 255 85 170 85 0
143867 +255 255 85 170 85 0 0 0 0 0 0 0
143868 + 0 0 0 0 0 0 0 0 0 0 0 0
143869 + 0 0 0 0 0 0 0 0 0 0 0 0
143870 + 0 0 0 0 0 0 0 0 0 0 0 0
143871 + 0 0 0 0 0 0 0 0 0 0 0 0
143872 + 0 0 0 0 0 0 0 0 0 0 0 0
143873 + 0 0 0 0 0 0 255 255 85 170 85 0
143874 +255 255 85 170 85 0 255 255 85 170 85 0
143875 +255 255 85 170 85 0 255 255 85 170 85 0
143876 +255 255 85 170 85 0 255 255 85 170 85 0
143877 +255 255 85 170 85 0 255 255 85 0 0 0
143878 + 0 0 0 0 0 0 85 85 85 255 255 255
143879 +255 255 255 255 255 255 255 255 255 255 255 255
143880 +255 255 255 255 255 255 255 255 255 255 255 255
143881 +255 255 255 255 255 255 255 255 255 255 255 255
143882 +255 255 255 255 255 255 255 255 255 255 255 255
143883 +255 255 255 170 170 170 170 170 170 255 255 85
143884 +170 85 0 255 255 85 170 85 0 255 255 85
143885 +170 85 0 255 255 85 170 85 0 255 255 85
143886 +170 85 0 255 255 85 170 85 0 255 255 85
143887 +170 85 0 255 255 85 0 0 0 0 0 0
143888 + 0 0 0 0 0 0 0 0 0 0 0 0
143889 + 0 0 0 0 0 0 0 0 0 0 0 0
143890 + 0 0 0 0 0 0 0 0 0 0 0 0
143891 + 0 0 0 0 0 0 0 0 0 0 0 0
143892 + 0 0 0 0 0 0 0 0 0 0 0 0
143893 + 0 0 0 0 0 0 170 85 0 255 255 85
143894 +170 85 0 255 255 85 170 85 0 255 255 85
143895 +170 85 0 255 255 85 170 85 0 255 255 85
143896 +170 85 0 255 255 85 170 85 0 255 255 85
143897 +170 85 0 255 255 85 170 85 0 0 0 0
143898 + 0 0 0 0 0 0 0 0 0 85 85 85
143899 +255 255 255 255 255 255 255 255 255 255 255 255
143900 +255 255 255 255 255 255 255 255 255 255 255 255
143901 +255 255 255 255 255 255 255 255 255 255 255 255
143902 +255 255 255 255 255 255 255 255 255 255 255 255
143903 +255 255 255 170 170 170 170 170 170 170 85 0
143904 +255 255 85 170 85 0 255 255 85 170 85 0
143905 +255 255 85 170 85 0 255 255 85 170 85 0
143906 +255 255 85 170 85 0 255 255 85 170 85 0
143907 +255 255 85 170 85 0 255 255 85 0 0 0
143908 + 0 0 0 0 0 0 0 0 0 0 0 0
143909 + 0 0 0 0 0 0 0 0 0 0 0 0
143910 + 0 0 0 0 0 0 0 0 0 0 0 0
143911 + 0 0 0 0 0 0 0 0 0 0 0 0
143912 + 0 0 0 0 0 0 0 0 0 0 0 0
143913 + 0 0 0 0 0 0 255 255 85 170 85 0
143914 +255 255 85 170 85 0 255 255 85 170 85 0
143915 +255 255 85 170 85 0 255 255 85 170 85 0
143916 +255 255 85 170 85 0 255 255 85 170 85 0
143917 +255 255 85 170 85 0 255 255 85 170 85 0
143918 + 0 0 0 0 0 0 0 0 0 0 0 0
143919 + 0 0 0 255 255 255 255 255 255 255 255 255
143920 +255 255 255 255 255 255 255 255 255 255 255 255
143921 +255 255 255 255 255 255 255 255 255 255 255 255
143922 +255 255 255 255 255 255 255 255 255 255 255 255
143923 +255 255 255 170 170 170 170 170 170 255 255 85
143924 +170 85 0 255 255 85 170 85 0 255 255 85
143925 +170 85 0 255 255 85 170 85 0 255 255 85
143926 +170 85 0 255 255 85 170 85 0 255 255 85
143927 +170 85 0 255 255 85 170 85 0 255 255 85
143928 + 0 0 0 0 0 0 0 0 0 0 0 0
143929 + 0 0 0 0 0 0 0 0 0 0 0 0
143930 + 0 0 0 0 0 0 0 0 0 0 0 0
143931 + 0 0 0 0 0 0 0 0 0 0 0 0
143932 + 0 0 0 0 0 0 0 0 0 0 0 0
143933 + 0 0 0 0 0 0 170 85 0 255 255 85
143934 +170 85 0 255 255 85 170 85 0 255 255 85
143935 +170 85 0 255 255 85 170 85 0 255 255 85
143936 +170 85 0 255 255 85 170 85 0 255 255 85
143937 +170 85 0 255 255 85 170 85 0 255 255 85
143938 +170 85 0 0 0 0 0 0 0 0 0 0
143939 + 0 0 0 255 255 255 255 255 255 255 255 255
143940 +255 255 255 255 255 255 255 255 255 255 255 255
143941 +255 255 255 255 255 255 255 255 255 255 255 255
143942 +255 255 255 255 255 255 255 255 255 255 255 255
143943 +255 255 255 170 170 170 170 170 170 170 85 0
143944 +255 255 85 170 85 0 255 255 85 170 85 0
143945 +255 255 85 170 85 0 255 255 85 170 85 0
143946 +255 255 85 170 85 0 255 255 85 170 85 0
143947 +255 255 85 170 85 0 255 255 85 170 85 0
143948 +255 255 85 0 0 0 0 0 0 0 0 0
143949 + 0 0 0 0 0 0 0 0 0 0 0 0
143950 + 0 0 0 0 0 0 0 0 0 0 0 0
143951 + 0 0 0 0 0 0 0 0 0 0 0 0
143952 + 0 0 0 0 0 0 0 0 0 0 0 0
143953 + 0 0 0 0 0 0 255 255 85 170 85 0
143954 +255 255 85 170 85 0 255 255 85 170 85 0
143955 +255 255 85 170 85 0 255 255 85 170 85 0
143956 +255 255 85 170 85 0 255 255 85 170 85 0
143957 +255 255 85 170 85 0 255 255 85 170 85 0
143958 +255 255 85 0 0 0 0 0 0 0 0 0
143959 + 85 85 85 255 255 255 255 255 255 255 255 255
143960 +255 255 255 255 255 255 255 255 255 255 255 255
143961 +255 255 255 255 255 255 255 255 255 255 255 255
143962 +255 255 255 255 255 255 255 255 255 255 255 255
143963 +255 255 255 170 170 170 85 85 85 255 255 85
143964 +170 85 0 255 255 85 170 85 0 255 255 85
143965 +170 85 0 255 255 85 170 85 0 255 255 85
143966 +170 85 0 255 255 85 170 85 0 255 255 85
143967 +170 85 0 255 255 85 170 85 0 255 255 85
143968 +170 85 0 255 255 85 0 0 0 0 0 0
143969 + 0 0 0 0 0 0 0 0 0 0 0 0
143970 + 0 0 0 0 0 0 0 0 0 0 0 0
143971 + 0 0 0 0 0 0 0 0 0 0 0 0
143972 + 0 0 0 0 0 0 0 0 0 0 0 0
143973 + 0 0 0 0 0 0 170 85 0 255 255 85
143974 +170 85 0 255 255 85 170 85 0 255 255 85
143975 +170 85 0 255 255 85 170 85 0 255 255 85
143976 +170 85 0 255 255 85 170 85 0 255 255 85
143977 +170 85 0 255 255 85 170 85 0 255 255 85
143978 +170 85 0 255 255 85 85 85 85 85 85 85
143979 +255 255 255 255 255 255 255 255 255 255 255 255
143980 +255 255 255 255 255 255 255 255 255 255 255 255
143981 +255 255 255 255 255 255 255 255 255 255 255 255
143982 +255 255 255 255 255 255 255 255 255 255 255 255
143983 +170 170 170 85 85 85 85 85 85 170 85 0
143984 +255 255 85 170 85 0 255 255 85 170 85 0
143985 +255 255 85 170 85 0 255 255 85 170 85 0
143986 +255 255 85 170 85 0 255 255 85 170 85 0
143987 +255 255 85 170 85 0 255 255 85 170 85 0
143988 +255 255 85 170 85 0 255 255 85 170 85 0
143989 + 0 0 0 0 0 0 0 0 0 0 0 0
143990 + 0 0 0 0 0 0 0 0 0 0 0 0
143991 + 0 0 0 0 0 0 0 0 0 0 0 0
143992 + 0 0 0 0 0 0 0 0 0 0 0 0
143993 + 0 0 0 0 0 0 255 255 85 170 85 0
143994 +255 255 85 170 85 0 255 255 85 170 85 0
143995 +255 255 85 170 85 0 255 255 85 170 85 0
143996 +255 255 85 170 85 0 255 255 85 170 85 0
143997 +255 255 85 170 85 0 255 255 85 170 85 0
143998 +255 255 85 170 85 0 255 255 85 255 255 255
143999 +255 255 255 255 255 255 255 255 255 255 255 255
144000 +255 255 255 255 255 255 255 255 255 255 255 255
144001 +255 255 255 255 255 255 255 255 255 255 255 255
144002 +255 255 255 255 255 255 255 255 255 170 170 170
144003 + 85 85 85 0 0 0 0 0 0 170 85 0
144004 +170 85 0 255 255 85 170 85 0 255 255 85
144005 +170 85 0 255 255 85 170 85 0 255 255 85
144006 +170 85 0 255 255 85 170 85 0 255 255 85
144007 +170 85 0 255 255 85 170 85 0 255 255 85
144008 +170 85 0 255 255 85 170 85 0 255 255 85
144009 + 0 0 0 0 0 0 0 0 0 0 0 0
144010 + 0 0 0 0 0 0 0 0 0 0 0 0
144011 + 0 0 0 0 0 0 0 0 0 0 0 0
144012 + 0 0 0 0 0 0 0 0 0 0 0 0
144013 + 0 0 0 0 0 0 170 85 0 255 255 85
144014 +170 85 0 255 255 85 170 85 0 255 255 85
144015 +170 85 0 255 255 85 170 85 0 255 255 85
144016 +170 85 0 255 255 85 170 85 0 255 255 85
144017 +170 85 0 255 255 85 170 85 0 255 255 85
144018 +170 85 0 255 255 85 170 85 0 255 255 85
144019 +255 255 255 255 255 255 255 255 255 255 255 255
144020 +255 255 255 255 255 255 255 255 255 255 255 255
144021 +255 255 255 255 255 255 255 255 255 255 255 255
144022 +255 255 255 255 255 255 170 170 170 85 85 85
144023 + 0 0 0 0 0 0 0 0 0 170 85 0
144024 +255 255 85 170 85 0 255 255 85 170 85 0
144025 +255 255 85 170 85 0 255 255 85 170 85 0
144026 +255 255 85 170 85 0 255 255 85 170 85 0
144027 +255 255 85 170 85 0 255 255 85 170 85 0
144028 +255 255 85 170 85 0 255 255 85 0 0 0
144029 + 0 0 0 0 0 0 0 0 0 0 0 0
144030 + 0 0 0 0 0 0 0 0 0 0 0 0
144031 + 0 0 0 0 0 0 0 0 0 0 0 0
144032 + 0 0 0 0 0 0 0 0 0 0 0 0
144033 + 0 0 0 0 0 0 255 255 85 170 85 0
144034 +255 255 85 170 85 0 255 255 85 170 85 0
144035 +255 255 85 170 85 0 255 255 85 170 85 0
144036 +255 255 85 170 85 0 255 255 85 170 85 0
144037 +255 255 85 170 85 0 255 255 85 170 85 0
144038 +255 255 85 170 85 0 255 255 85 170 85 0
144039 +170 170 170 255 255 255 255 255 255 255 255 255
144040 +255 255 255 255 255 255 255 255 255 255 255 255
144041 +255 255 255 255 255 255 255 255 255 255 255 255
144042 +170 170 170 85 85 85 85 85 85 0 0 0
144043 + 0 0 0 0 0 0 0 0 0 170 85 0
144044 +170 85 0 255 255 85 170 85 0 255 255 85
144045 +170 85 0 255 255 85 170 85 0 255 255 85
144046 +170 85 0 255 255 85 170 85 0 255 255 85
144047 +170 85 0 255 255 85 170 85 0 255 255 85
144048 +170 85 0 255 255 85 0 0 0 0 0 0
144049 + 0 0 0 0 0 0 0 0 0 0 0 0
144050 + 0 0 0 0 0 0 0 0 0 0 0 0
144051 + 0 0 0 0 0 0 0 0 0 0 0 0
144052 + 0 0 0 0 0 0 0 0 0 0 0 0
144053 + 0 0 0 255 255 85 170 85 0 255 255 85
144054 +170 85 0 255 255 85 170 85 0 255 255 85
144055 +170 85 0 255 255 85 170 85 0 255 255 85
144056 +170 85 0 255 255 85 170 85 0 255 255 85
144057 +170 85 0 255 255 85 170 85 0 255 255 85
144058 +170 85 0 255 255 85 170 85 0 170 85 0
144059 +170 85 0 170 170 170 255 255 255 255 255 255
144060 +255 255 255 255 255 255 255 255 255 255 255 255
144061 +255 255 255 255 255 255 170 170 170 85 85 85
144062 + 85 85 85 0 0 0 0 0 0 0 0 0
144063 + 0 0 0 0 0 0 85 85 85 170 85 0
144064 +255 255 85 170 85 0 255 255 85 170 85 0
144065 +255 255 85 170 85 0 255 255 85 170 85 0
144066 +255 255 85 170 85 0 255 255 85 170 85 0
144067 +255 255 85 170 85 0 255 255 85 170 85 0
144068 +255 255 85 0 0 0 0 0 0 0 0 0
144069 + 0 0 0 0 0 0 0 0 0 0 0 0
144070 + 0 0 0 0 0 0 0 0 0 0 0 0
144071 + 0 0 0 0 0 0 0 0 0 0 0 0
144072 + 0 0 0 0 0 0 0 0 0 0 0 0
144073 + 0 0 0 170 85 0 255 255 85 170 85 0
144074 +255 255 85 170 85 0 255 255 85 170 85 0
144075 +255 255 85 170 85 0 255 255 85 170 85 0
144076 +255 255 85 170 85 0 255 255 85 170 85 0
144077 +255 255 85 170 85 0 255 255 85 170 85 0
144078 +255 255 85 170 85 0 255 255 85 170 85 0
144079 +170 85 0 0 0 0 0 0 0 0 0 0
144080 + 0 0 0 0 0 0 0 0 0 0 0 0
144081 + 0 0 0 0 0 0 0 0 0 0 0 0
144082 + 0 0 0 0 0 0 0 0 0 0 0 0
144083 + 0 0 0 0 0 0 85 85 85 170 85 0
144084 +170 85 0 255 255 85 170 85 0 255 255 85
144085 +170 85 0 255 255 85 170 85 0 255 255 85
144086 +170 85 0 255 255 85 170 85 0 255 255 85
144087 +170 85 0 170 85 0 170 85 0 0 0 0
144088 + 0 0 0 0 0 0 0 0 0 0 0 0
144089 + 0 0 0 0 0 0 0 0 0 0 0 0
144090 + 0 0 0 0 0 0 0 0 0 0 0 0
144091 + 0 0 0 0 0 0 0 0 0 0 0 0
144092 + 0 0 0 0 0 0 0 0 0 0 0 0
144093 + 0 0 0 255 255 85 170 85 0 255 255 85
144094 +170 85 0 255 255 85 170 85 0 255 255 85
144095 +170 85 0 255 255 85 170 85 0 255 255 85
144096 +170 85 0 255 255 85 170 85 0 255 255 85
144097 +170 85 0 255 255 85 170 85 0 255 255 85
144098 +170 85 0 255 255 85 170 85 0 170 85 0
144099 +170 85 0 0 0 0 0 0 0 0 0 0
144100 + 0 0 0 0 0 0 0 0 0 0 0 0
144101 + 0 0 0 0 0 0 0 0 0 0 0 0
144102 + 0 0 0 0 0 0 0 0 0 0 0 0
144103 + 0 0 0 0 0 0 85 85 85 170 85 0
144104 +255 255 85 170 85 0 255 255 85 170 85 0
144105 +255 255 85 170 85 0 255 255 85 170 85 0
144106 +255 255 85 170 85 0 255 255 85 170 85 0
144107 +170 85 0 0 0 0 0 0 0 0 0 0
144108 + 0 0 0 0 0 0 0 0 0 0 0 0
144109 + 0 0 0 0 0 0 0 0 0 0 0 0
144110 + 0 0 0 0 0 0 0 0 0 0 0 0
144111 + 0 0 0 0 0 0 0 0 0 0 0 0
144112 + 0 0 0 0 0 0 0 0 0 0 0 0
144113 + 0 0 0 0 0 0 255 255 85 170 85 0
144114 +255 255 85 170 85 0 255 255 85 170 85 0
144115 +255 255 85 170 85 0 255 255 85 170 85 0
144116 +255 255 85 170 85 0 255 255 85 170 85 0
144117 +255 255 85 170 85 0 255 255 85 170 85 0
144118 +255 255 85 170 85 0 255 255 85 170 85 0
144119 +170 85 0 0 0 0 0 0 0 0 0 0
144120 + 0 0 0 0 0 0 0 0 0 0 0 0
144121 + 0 0 0 0 0 0 0 0 0 0 0 0
144122 + 0 0 0 0 0 0 0 0 0 0 0 0
144123 + 0 0 0 0 0 0 85 85 85 170 85 0
144124 +170 85 0 255 255 85 170 85 0 255 255 85
144125 +170 85 0 255 255 85 170 85 0 255 255 85
144126 +170 85 0 170 85 0 170 85 0 170 85 0
144127 + 0 0 0 0 0 0 0 0 0 0 0 0
144128 + 0 0 0 0 0 0 0 0 0 0 0 0
144129 + 0 0 0 0 0 0 0 0 0 0 0 0
144130 + 0 0 0 0 0 0 0 0 0 0 0 0
144131 + 0 0 0 0 0 0 0 0 0 0 0 0
144132 + 0 0 0 0 0 0 0 0 0 0 0 0
144133 + 0 0 0 0 0 0 0 0 0 0 0 0
144134 + 0 0 0 0 0 0 170 85 0 170 85 0
144135 +170 85 0 170 85 0 170 85 0 170 85 0
144136 +170 85 0 255 255 85 170 85 0 255 255 85
144137 +170 85 0 255 255 85 170 85 0 255 255 85
144138 +170 85 0 255 255 85 170 85 0 170 85 0
144139 +170 85 0 0 0 0 0 0 0 0 0 0
144140 + 85 85 85 85 85 85 85 85 85 85 85 85
144141 + 85 85 85 85 85 85 85 85 85 85 85 85
144142 + 85 85 85 85 85 85 85 85 85 0 0 0
144143 + 0 0 0 0 0 0 0 0 0 170 85 0
144144 +170 85 0 170 85 0 255 255 85 170 85 0
144145 +255 255 85 170 85 0 255 255 85 170 85 0
144146 +170 85 0 170 85 0 0 0 0 0 0 0
144147 + 0 0 0 0 0 0 0 0 0 0 0 0
144148 + 0 0 0 0 0 0 0 0 0 0 0 0
144149 + 0 0 0 0 0 0 0 0 0 0 0 0
144150 + 0 0 0 0 0 0 0 0 0 0 0 0
144151 + 0 0 0 0 0 0 0 0 0 0 0 0
144152 + 0 0 0 0 0 0 0 0 0 0 0 0
144153 + 0 0 0 0 0 0 0 0 0 0 0 0
144154 + 0 0 0 0 0 0 0 0 0 0 0 0
144155 + 0 0 0 0 0 0 170 85 0 170 85 0
144156 +170 85 0 170 85 0 170 85 0 170 85 0
144157 +170 85 0 170 85 0 255 255 85 170 85 0
144158 +255 255 85 170 85 0 170 85 0 170 85 0
144159 + 85 85 85 85 85 85 85 85 85 85 85 85
144160 + 0 0 0 0 0 0 0 0 0 0 0 0
144161 + 0 0 0 0 0 0 0 0 0 0 0 0
144162 + 0 0 0 0 0 0 0 0 0 85 85 85
144163 + 85 85 85 85 85 85 85 85 85 170 85 0
144164 +170 85 0 170 85 0 170 85 0 255 255 85
144165 +170 85 0 255 255 85 170 85 0 170 85 0
144166 +170 85 0 0 0 0 0 0 0 0 0 0
144167 + 0 0 0 0 0 0 0 0 0 0 0 0
144168 + 0 0 0 0 0 0 0 0 0 0 0 0
144169 + 0 0 0 0 0 0 0 0 0 0 0 0
144170 + 0 0 0 0 0 0 0 0 0 0 0 0
144171 + 0 0 0 0 0 0 0 0 0 0 0 0
144172 + 0 0 0 0 0 0 0 0 0 0 0 0
144173 + 0 0 0 0 0 0 0 0 0 0 0 0
144174 + 0 0 0 0 0 0 0 0 0 0 0 0
144175 + 0 0 0 0 0 0 0 0 0 0 0 0
144176 + 0 0 0 0 0 0 0 0 0 170 85 0
144177 +170 85 0 170 85 0 170 85 0 170 85 0
144178 +170 85 0 170 85 0 170 85 0 170 85 0
144179 + 0 0 0 0 0 0 0 0 0 0 0 0
144180 + 0 0 0 0 0 0 0 0 0 0 0 0
144181 + 0 0 0 0 0 0 0 0 0 0 0 0
144182 + 0 0 0 0 0 0 0 0 0 0 0 0
144183 + 0 0 0 0 0 0 0 0 0 170 85 0
144184 +170 85 0 170 85 0 170 85 0 170 85 0
144185 +170 85 0 170 85 0 170 85 0 170 85 0
144186 + 0 0 0 0 0 0 0 0 0 0 0 0
144187 + 0 0 0 0 0 0 0 0 0 0 0 0
144188 + 0 0 0 0 0 0 0 0 0 0 0 0
144189 + 0 0 0 0 0 0 0 0 0 0 0 0
144190 + 0 0 0 0 0 0 0 0 0 0 0 0
144191 + 0 0 0 0 0 0 0 0 0 0 0 0
144192 + 0 0 0 0 0 0 0 0 0 0 0 0
144193 + 0 0 0 0 0 0 0 0 0 0 0 0
144194 + 0 0 0 0 0 0 0 0 0 0 0 0
144195 + 0 0 0 0 0 0 0 0 0 0 0 0
144196 + 0 0 0 0 0 0 0 0 0 0 0 0
144197 + 0 0 0 170 85 0 170 85 0 170 85 0
144198 +170 85 0 170 85 0 170 85 0 0 0 0
144199 + 0 0 0 0 0 0 0 0 0 0 0 0
144200 + 0 0 0 0 0 0 0 0 0 0 0 0
144201 + 0 0 0 0 0 0 0 0 0 0 0 0
144202 + 0 0 0 0 0 0 0 0 0 0 0 0
144203 + 0 0 0 0 0 0 0 0 0 0 0 0
144204 +170 85 0 170 85 0 170 85 0 170 85 0
144205 +170 85 0 170 85 0 170 85 0 0 0 0
144206 + 0 0 0 0 0 0 0 0 0 0 0 0
144207 + 0 0 0 0 0 0 0 0 0 0 0 0
144208 + 0 0 0 0 0 0 0 0 0 0 0 0
144209 + 0 0 0 0 0 0 0 0 0 0 0 0
144210 + 0 0 0 0 0 0 0 0 0 0 0 0
144211 + 0 0 0 0 0 0 0 0 0 0 0 0
144212 + 0 0 0 0 0 0 0 0 0 0 0 0
144213 + 0 0 0 0 0 0 0 0 0 0 0 0
144214 + 0 0 0 0 0 0 0 0 0 0 0 0
144215 + 0 0 0 0 0 0 0 0 0 0 0 0
144216 + 0 0 0 0 0 0 0 0 0 0 0 0
144217 + 0 0 0 0 0 0 0 0 0 0 0 0
144218 + 0 0 0 0 0 0 0 0 0 0 0 0
144219 + 0 0 0 0 0 0 0 0 0 0 0 0
144220 + 0 0 0 0 0 0 0 0 0 0 0 0
144221 + 0 0 0 0 0 0 0 0 0 0 0 0
144222 + 0 0 0 0 0 0 0 0 0 0 0 0
144223 + 0 0 0 0 0 0 0 0 0 0 0 0
144224 + 0 0 0 0 0 0 0 0 0 0 0 0
144225 + 0 0 0 0 0 0 0 0 0 0 0 0
144226 + 0 0 0 0 0 0 0 0 0 0 0 0
144227 + 0 0 0 0 0 0 0 0 0 0 0 0
144228 + 0 0 0 0 0 0 0 0 0 0 0 0
144229 + 0 0 0 0 0 0 0 0 0 0 0 0
144230 + 0 0 0 0 0 0 0 0 0 0 0 0
144231 + 0 0 0 0 0 0 0 0 0 0 0 0
144232 + 0 0 0 0 0 0 0 0 0 0 0 0
144233 + 0 0 0 0 0 0 0 0 0 0 0 0
144234 + 0 0 0 0 0 0 0 0 0 0 0 0
144235 + 0 0 0 0 0 0 0 0 0 0 0 0
144236 + 0 0 0 0 0 0 0 0 0 0 0 0
144237 + 0 0 0 0 0 0 0 0 0 0 0 0
144238 + 0 0 0 0 0 0 0 0 0 0 0 0
144239 + 0 0 0 0 0 0 0 0 0 0 0 0
144240 + 0 0 0 0 0 0 0 0 0 0 0 0
144241 + 0 0 0 0 0 0 0 0 0 0 0 0
144242 + 0 0 0 0 0 0 0 0 0 0 0 0
144243 + 0 0 0 0 0 0 0 0 0 0 0 0
144244 + 0 0 0 0 0 0 0 0 0 0 0 0
144245 + 0 0 0 0 0 0 0 0 0 0 0 0
144246 + 0 0 0 0 0 0 0 0 0 0 0 0
144247 + 0 0 0 0 0 0 0 0 0 0 0 0
144248 + 0 0 0 0 0 0 0 0 0 0 0 0
144249 + 0 0 0 0 0 0 0 0 0 0 0 0
144250 + 0 0 0 0 0 0 0 0 0 0 0 0
144251 + 0 0 0 0 0 0 0 0 0 0 0 0
144252 + 0 0 0 0 0 0 0 0 0 0 0 0
144253 + 0 0 0 0 0 0 0 0 0 0 0 0
144254 + 0 0 0 0 0 0 0 0 0 0 0 0
144255 + 0 0 0 0 0 0 0 0 0 0 0 0
144256 + 0 0 0 0 0 0 0 0 0 0 0 0
144257 + 0 0 0 0 0 0 0 0 0 0 0 0
144258 + 0 0 0 0 0 0 0 0 0 0 0 0
144259 + 0 0 0 0 0 0 0 0 0 0 0 0
144260 + 0 0 0 0 0 0 0 0 0 0 0 0
144261 + 0 0 0 0 0 0 0 0 0 0 0 0
144262 + 0 0 0 0 0 0 0 0 0 0 0 0
144263 + 0 0 0 0 0 0 0 0 0 0 0 0
144264 + 0 0 0 0 0 0 0 0 0 0 0 0
144265 + 0 0 0 0 0 0 0 0 0 0 0 0
144266 + 0 0 0 0 0 0 0 0 0 0 0 0
144267 + 0 0 0 0 0 0 0 0 0 0 0 0
144268 + 0 0 0 0 0 0 0 0 0 0 0 0
144269 + 0 0 0 0 0 0 0 0 0 0 0 0
144270 + 0 0 0 0 0 0 0 0 0 0 0 0
144271 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/pxafb.c linux-2.6.29-rc3.owrt/drivers/video/pxafb.c
144272 --- linux-2.6.29.owrt/drivers/video/pxafb.c 2009-05-10 22:04:38.000000000 +0200
144273 +++ linux-2.6.29-rc3.owrt/drivers/video/pxafb.c 2009-05-10 23:48:29.000000000 +0200
144274 @@ -2230,7 +2230,7 @@
144275
144276 static struct platform_driver pxafb_driver = {
144277 .probe = pxafb_probe,
144278 - .remove = __devexit_p(pxafb_remove),
144279 + .remove = pxafb_remove,
144280 .suspend = pxafb_suspend,
144281 .resume = pxafb_resume,
144282 .driver = {
144283 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/video/sh_mobile_lcdcfb.c linux-2.6.29-rc3.owrt/drivers/video/sh_mobile_lcdcfb.c
144284 --- linux-2.6.29.owrt/drivers/video/sh_mobile_lcdcfb.c 2009-05-10 22:04:38.000000000 +0200
144285 +++ linux-2.6.29-rc3.owrt/drivers/video/sh_mobile_lcdcfb.c 2009-05-10 23:48:29.000000000 +0200
144286 @@ -446,6 +446,7 @@
144287 {
144288 struct sh_mobile_lcdc_chan *ch;
144289 struct sh_mobile_lcdc_board_cfg *board_cfg;
144290 + unsigned long tmp;
144291 int k;
144292
144293 /* tell the board code to disable the panel */
144294 @@ -455,8 +456,9 @@
144295 if (board_cfg->display_off)
144296 board_cfg->display_off(board_cfg->board_data);
144297
144298 - /* cleanup deferred io if enabled */
144299 - if (ch->info.fbdefio) {
144300 + /* cleanup deferred io if SYS bus */
144301 + tmp = ch->cfg.sys_bus_cfg.deferred_io_msec;
144302 + if (ch->ldmt1r_value & (1 << 12) && tmp) {
144303 fb_deferred_io_cleanup(&ch->info);
144304 ch->info.fbdefio = NULL;
144305 }
144306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/virtio/virtio_pci.c linux-2.6.29-rc3.owrt/drivers/virtio/virtio_pci.c
144307 --- linux-2.6.29.owrt/drivers/virtio/virtio_pci.c 2009-05-10 22:04:38.000000000 +0200
144308 +++ linux-2.6.29-rc3.owrt/drivers/virtio/virtio_pci.c 2009-05-10 23:48:29.000000000 +0200
144309 @@ -192,7 +192,7 @@
144310 drv = container_of(vp_dev->vdev.dev.driver,
144311 struct virtio_driver, driver);
144312
144313 - if (drv && drv->config_changed)
144314 + if (drv->config_changed)
144315 drv->config_changed(&vp_dev->vdev);
144316 }
144317
144318 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/w1/masters/w1-gpio.c linux-2.6.29-rc3.owrt/drivers/w1/masters/w1-gpio.c
144319 --- linux-2.6.29.owrt/drivers/w1/masters/w1-gpio.c 2009-05-10 22:04:39.000000000 +0200
144320 +++ linux-2.6.29-rc3.owrt/drivers/w1/masters/w1-gpio.c 2009-05-10 23:48:29.000000000 +0200
144321 @@ -39,7 +39,7 @@
144322 {
144323 struct w1_gpio_platform_data *pdata = data;
144324
144325 - return gpio_get_value(pdata->pin) ? 1 : 0;
144326 + return gpio_get_value(pdata->pin);
144327 }
144328
144329 static int __init w1_gpio_probe(struct platform_device *pdev)
144330 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/w1/slaves/Kconfig linux-2.6.29-rc3.owrt/drivers/w1/slaves/Kconfig
144331 --- linux-2.6.29.owrt/drivers/w1/slaves/Kconfig 2009-05-10 22:04:39.000000000 +0200
144332 +++ linux-2.6.29-rc3.owrt/drivers/w1/slaves/Kconfig 2009-05-10 23:48:29.000000000 +0200
144333 @@ -16,12 +16,6 @@
144334 Say Y here if you want to connect 1-wire
144335 simple 64bit memory rom(ds2401/ds2411/ds1990*) to your wire.
144336
144337 -config W1_SLAVE_DS2431
144338 - tristate "1kb EEPROM family support (DS2431)"
144339 - help
144340 - Say Y here if you want to use a 1-wire
144341 - 1kb EEPROM family device (DS2431)
144342 -
144343 config W1_SLAVE_DS2433
144344 tristate "4kb EEPROM family support (DS2433)"
144345 help
144346 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/w1/slaves/Makefile linux-2.6.29-rc3.owrt/drivers/w1/slaves/Makefile
144347 --- linux-2.6.29.owrt/drivers/w1/slaves/Makefile 2009-05-10 22:04:39.000000000 +0200
144348 +++ linux-2.6.29-rc3.owrt/drivers/w1/slaves/Makefile 2009-05-10 23:48:29.000000000 +0200
144349 @@ -4,7 +4,6 @@
144350
144351 obj-$(CONFIG_W1_SLAVE_THERM) += w1_therm.o
144352 obj-$(CONFIG_W1_SLAVE_SMEM) += w1_smem.o
144353 -obj-$(CONFIG_W1_SLAVE_DS2431) += w1_ds2431.o
144354 obj-$(CONFIG_W1_SLAVE_DS2433) += w1_ds2433.o
144355 obj-$(CONFIG_W1_SLAVE_DS2760) += w1_ds2760.o
144356 obj-$(CONFIG_W1_SLAVE_BQ27000) += w1_bq27000.o
144357 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/w1/slaves/w1_ds2433.c linux-2.6.29-rc3.owrt/drivers/w1/slaves/w1_ds2433.c
144358 --- linux-2.6.29.owrt/drivers/w1/slaves/w1_ds2433.c 2009-05-10 22:04:39.000000000 +0200
144359 +++ linux-2.6.29-rc3.owrt/drivers/w1/slaves/w1_ds2433.c 2009-05-10 23:48:29.000000000 +0200
144360 @@ -156,9 +156,6 @@
144361 */
144362 static int w1_f23_write(struct w1_slave *sl, int addr, int len, const u8 *data)
144363 {
144364 -#ifdef CONFIG_W1_SLAVE_DS2433_CRC
144365 - struct w1_f23_data *f23 = sl->family_data;
144366 -#endif
144367 u8 wrbuf[4];
144368 u8 rdbuf[W1_PAGE_SIZE + 3];
144369 u8 es = (addr + len - 1) & 0x1f;
144370 @@ -199,9 +196,7 @@
144371
144372 /* Reset the bus to wake up the EEPROM (this may not be needed) */
144373 w1_reset_bus(sl->master);
144374 -#ifdef CONFIG_W1_SLAVE_DS2433_CRC
144375 - f23->validcrc &= ~(1 << (addr >> W1_PAGE_BITS));
144376 -#endif
144377 +
144378 return 0;
144379 }
144380
144381 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/w1/slaves/w1_therm.c linux-2.6.29-rc3.owrt/drivers/w1/slaves/w1_therm.c
144382 --- linux-2.6.29.owrt/drivers/w1/slaves/w1_therm.c 2009-05-10 22:04:39.000000000 +0200
144383 +++ linux-2.6.29-rc3.owrt/drivers/w1/slaves/w1_therm.c 2009-05-10 23:48:29.000000000 +0200
144384 @@ -115,7 +115,7 @@
144385
144386 static inline int w1_DS18B20_convert_temp(u8 rom[9])
144387 {
144388 - int t = ((s16)rom[1] << 8) | rom[0];
144389 + s16 t = (rom[1] << 8) | rom[0];
144390 t = t*1000/16;
144391 return t;
144392 }
144393 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/at91rm9200_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/at91rm9200_wdt.c
144394 --- linux-2.6.29.owrt/drivers/watchdog/at91rm9200_wdt.c 2009-05-10 22:04:38.000000000 +0200
144395 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/at91rm9200_wdt.c 2009-05-10 23:48:29.000000000 +0200
144396 @@ -107,10 +107,10 @@
144397 static int at91_wdt_settimeout(int new_time)
144398 {
144399 /*
144400 - * All counting occurs at SLOW_CLOCK / 128 = 256 Hz
144401 + * All counting occurs at SLOW_CLOCK / 128 = 0.256 Hz
144402 *
144403 * Since WDV is a 16-bit counter, the maximum period is
144404 - * 65536 / 256 = 256 seconds.
144405 + * 65536 / 0.256 = 256 seconds.
144406 */
144407 if ((new_time <= 0) || (new_time > WDT_MAX_TIME))
144408 return -EINVAL;
144409 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/at91sam9_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/at91sam9_wdt.c
144410 --- linux-2.6.29.owrt/drivers/watchdog/at91sam9_wdt.c 2009-05-10 22:04:38.000000000 +0200
144411 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/at91sam9_wdt.c 2009-05-10 23:48:29.000000000 +0200
144412 @@ -18,7 +18,6 @@
144413 #include <linux/errno.h>
144414 #include <linux/fs.h>
144415 #include <linux/init.h>
144416 -#include <linux/io.h>
144417 #include <linux/kernel.h>
144418 #include <linux/miscdevice.h>
144419 #include <linux/module.h>
144420 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/gef_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/gef_wdt.c
144421 --- linux-2.6.29.owrt/drivers/watchdog/gef_wdt.c 2009-05-10 22:04:38.000000000 +0200
144422 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/gef_wdt.c 2009-05-10 23:48:29.000000000 +0200
144423 @@ -269,7 +269,7 @@
144424 bus_clk = 133; /* in MHz */
144425
144426 freq = fsl_get_sys_freq();
144427 - if (freq != -1)
144428 + if (freq > 0)
144429 bus_clk = freq;
144430
144431 /* Map devices registers into memory */
144432 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/iTCO_vendor_support.c linux-2.6.29-rc3.owrt/drivers/watchdog/iTCO_vendor_support.c
144433 --- linux-2.6.29.owrt/drivers/watchdog/iTCO_vendor_support.c 2009-05-10 22:04:38.000000000 +0200
144434 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/iTCO_vendor_support.c 2009-05-10 23:48:29.000000000 +0200
144435 @@ -1,7 +1,7 @@
144436 /*
144437 * intel TCO vendor specific watchdog driver support
144438 *
144439 - * (c) Copyright 2006-2009 Wim Van Sebroeck <wim@iguana.be>.
144440 + * (c) Copyright 2006-2008 Wim Van Sebroeck <wim@iguana.be>.
144441 *
144442 * This program is free software; you can redistribute it and/or
144443 * modify it under the terms of the GNU General Public License
144444 @@ -19,7 +19,7 @@
144445
144446 /* Module and version information */
144447 #define DRV_NAME "iTCO_vendor_support"
144448 -#define DRV_VERSION "1.03"
144449 +#define DRV_VERSION "1.02"
144450 #define PFX DRV_NAME ": "
144451
144452 /* Includes */
144453 @@ -77,26 +77,6 @@
144454 * 20.6 seconds.
144455 */
144456
144457 -static void supermicro_old_pre_start(unsigned long acpibase)
144458 -{
144459 - unsigned long val32;
144460 -
144461 - /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
144462 - val32 = inl(SMI_EN);
144463 - val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
144464 - outl(val32, SMI_EN); /* Needed to activate watchdog */
144465 -}
144466 -
144467 -static void supermicro_old_pre_stop(unsigned long acpibase)
144468 -{
144469 - unsigned long val32;
144470 -
144471 - /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */
144472 - val32 = inl(SMI_EN);
144473 - val32 |= 0x00002000; /* Turn on SMI clearing watchdog */
144474 - outl(val32, SMI_EN); /* Needed to deactivate watchdog */
144475 -}
144476 -
144477 static void supermicro_old_pre_keepalive(unsigned long acpibase)
144478 {
144479 /* Reload TCO Timer (done in iTCO_wdt_keepalive) + */
144480 @@ -248,18 +228,14 @@
144481 void iTCO_vendor_pre_start(unsigned long acpibase,
144482 unsigned int heartbeat)
144483 {
144484 - if (vendorsupport == SUPERMICRO_OLD_BOARD)
144485 - supermicro_old_pre_start(acpibase);
144486 - else if (vendorsupport == SUPERMICRO_NEW_BOARD)
144487 + if (vendorsupport == SUPERMICRO_NEW_BOARD)
144488 supermicro_new_pre_start(heartbeat);
144489 }
144490 EXPORT_SYMBOL(iTCO_vendor_pre_start);
144491
144492 void iTCO_vendor_pre_stop(unsigned long acpibase)
144493 {
144494 - if (vendorsupport == SUPERMICRO_OLD_BOARD)
144495 - supermicro_old_pre_stop(acpibase);
144496 - else if (vendorsupport == SUPERMICRO_NEW_BOARD)
144497 + if (vendorsupport == SUPERMICRO_NEW_BOARD)
144498 supermicro_new_pre_stop();
144499 }
144500 EXPORT_SYMBOL(iTCO_vendor_pre_stop);
144501 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/iTCO_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/iTCO_wdt.c
144502 --- linux-2.6.29.owrt/drivers/watchdog/iTCO_wdt.c 2009-05-10 22:04:38.000000000 +0200
144503 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/iTCO_wdt.c 2009-05-10 23:48:29.000000000 +0200
144504 @@ -1,7 +1,7 @@
144505 /*
144506 - * intel TCO Watchdog Driver (Used in i82801 and i63xxESB chipsets)
144507 + * intel TCO Watchdog Driver (Used in i82801 and i6300ESB chipsets)
144508 *
144509 - * (c) Copyright 2006-2009 Wim Van Sebroeck <wim@iguana.be>.
144510 + * (c) Copyright 2006-2008 Wim Van Sebroeck <wim@iguana.be>.
144511 *
144512 * This program is free software; you can redistribute it and/or
144513 * modify it under the terms of the GNU General Public License
144514 @@ -63,7 +63,7 @@
144515
144516 /* Module and version information */
144517 #define DRV_NAME "iTCO_wdt"
144518 -#define DRV_VERSION "1.05"
144519 +#define DRV_VERSION "1.04"
144520 #define PFX DRV_NAME ": "
144521
144522 /* Includes */
144523 @@ -236,16 +236,16 @@
144524
144525 /* Address definitions for the TCO */
144526 /* TCO base address */
144527 -#define TCOBASE iTCO_wdt_private.ACPIBASE + 0x60
144528 +#define TCOBASE iTCO_wdt_private.ACPIBASE + 0x60
144529 /* SMI Control and Enable Register */
144530 -#define SMI_EN iTCO_wdt_private.ACPIBASE + 0x30
144531 +#define SMI_EN iTCO_wdt_private.ACPIBASE + 0x30
144532
144533 #define TCO_RLD TCOBASE + 0x00 /* TCO Timer Reload and Curr. Value */
144534 #define TCOv1_TMR TCOBASE + 0x01 /* TCOv1 Timer Initial Value */
144535 -#define TCO_DAT_IN TCOBASE + 0x02 /* TCO Data In Register */
144536 -#define TCO_DAT_OUT TCOBASE + 0x03 /* TCO Data Out Register */
144537 -#define TCO1_STS TCOBASE + 0x04 /* TCO1 Status Register */
144538 -#define TCO2_STS TCOBASE + 0x06 /* TCO2 Status Register */
144539 +#define TCO_DAT_IN TCOBASE + 0x02 /* TCO Data In Register */
144540 +#define TCO_DAT_OUT TCOBASE + 0x03 /* TCO Data Out Register */
144541 +#define TCO1_STS TCOBASE + 0x04 /* TCO1 Status Register */
144542 +#define TCO2_STS TCOBASE + 0x06 /* TCO2 Status Register */
144543 #define TCO1_CNT TCOBASE + 0x08 /* TCO1 Control Register */
144544 #define TCO2_CNT TCOBASE + 0x0a /* TCO2 Control Register */
144545 #define TCOv2_TMR TCOBASE + 0x12 /* TCOv2 Timer Initial Value */
144546 @@ -338,6 +338,7 @@
144547 static int iTCO_wdt_start(void)
144548 {
144549 unsigned int val;
144550 + unsigned long val32;
144551
144552 spin_lock(&iTCO_wdt_private.io_lock);
144553
144554 @@ -350,6 +351,11 @@
144555 return -EIO;
144556 }
144557
144558 + /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
144559 + val32 = inl(SMI_EN);
144560 + val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
144561 + outl(val32, SMI_EN);
144562 +
144563 /* Force the timer to its reload value by writing to the TCO_RLD
144564 register */
144565 if (iTCO_wdt_private.iTCO_version == 2)
144566 @@ -372,6 +378,7 @@
144567 static int iTCO_wdt_stop(void)
144568 {
144569 unsigned int val;
144570 + unsigned long val32;
144571
144572 spin_lock(&iTCO_wdt_private.io_lock);
144573
144574 @@ -383,6 +390,11 @@
144575 outw(val, TCO1_CNT);
144576 val = inw(TCO1_CNT);
144577
144578 + /* Bit 13: TCO_EN -> 1 = Enables the TCO logic to generate SMI# */
144579 + val32 = inl(SMI_EN);
144580 + val32 |= 0x00002000;
144581 + outl(val32, SMI_EN);
144582 +
144583 /* Set the NO_REBOOT bit to prevent later reboots, just for sure */
144584 iTCO_wdt_set_NO_REBOOT_bit();
144585
144586 @@ -637,7 +649,6 @@
144587 int ret;
144588 u32 base_address;
144589 unsigned long RCBA;
144590 - unsigned long val32;
144591
144592 /*
144593 * Find the ACPI/PM base I/O address which is the base
144594 @@ -684,10 +695,6 @@
144595 ret = -EIO;
144596 goto out;
144597 }
144598 - /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
144599 - val32 = inl(SMI_EN);
144600 - val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
144601 - outl(val32, SMI_EN);
144602
144603 /* The TCO I/O registers reside in a 32-byte range pointed to
144604 by the TCOBASE value */
144605 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/Kconfig linux-2.6.29-rc3.owrt/drivers/watchdog/Kconfig
144606 --- linux-2.6.29.owrt/drivers/watchdog/Kconfig 2009-05-10 22:04:38.000000000 +0200
144607 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/Kconfig 2009-05-10 23:48:29.000000000 +0200
144608 @@ -406,7 +406,7 @@
144609 ---help---
144610 Hardware driver for the intel TCO timer based watchdog devices.
144611 These drivers are included in the Intel 82801 I/O Controller
144612 - Hub family (from ICH0 up to ICH10) and in the Intel 63xxESB
144613 + Hub family (from ICH0 up to ICH8) and in the Intel 6300ESB
144614 controller hub.
144615
144616 The TCO (Total Cost of Ownership) timer is a watchdog timer
144617 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/ks8695_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/ks8695_wdt.c
144618 --- linux-2.6.29.owrt/drivers/watchdog/ks8695_wdt.c 2009-05-10 22:04:38.000000000 +0200
144619 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/ks8695_wdt.c 2009-05-10 23:48:29.000000000 +0200
144620 @@ -21,7 +21,6 @@
144621 #include <linux/watchdog.h>
144622 #include <linux/io.h>
144623 #include <linux/uaccess.h>
144624 -#include <mach/timex.h>
144625 #include <mach/regs-timer.h>
144626
144627 #define WDT_DEFAULT_TIME 5 /* seconds */
144628 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/orion5x_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/orion5x_wdt.c
144629 --- linux-2.6.29.owrt/drivers/watchdog/orion5x_wdt.c 2009-05-10 22:04:38.000000000 +0200
144630 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/orion5x_wdt.c 2009-05-10 23:48:29.000000000 +0200
144631 @@ -29,7 +29,6 @@
144632 #define WDT_EN 0x0010
144633 #define WDT_VAL (TIMER_VIRT_BASE + 0x0024)
144634
144635 -#define ORION5X_TCLK 166666667
144636 #define WDT_MAX_DURATION (0xffffffff / ORION5X_TCLK)
144637 #define WDT_IN_USE 0
144638 #define WDT_OK_TO_CLOSE 1
144639 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/watchdog/rc32434_wdt.c linux-2.6.29-rc3.owrt/drivers/watchdog/rc32434_wdt.c
144640 --- linux-2.6.29.owrt/drivers/watchdog/rc32434_wdt.c 2009-05-10 22:04:38.000000000 +0200
144641 +++ linux-2.6.29-rc3.owrt/drivers/watchdog/rc32434_wdt.c 2009-05-10 23:48:29.000000000 +0200
144642 @@ -34,89 +34,104 @@
144643 #include <asm/time.h>
144644 #include <asm/mach-rc32434/integ.h>
144645
144646 -#define VERSION "0.4"
144647 +#define MAX_TIMEOUT 20
144648 +#define RC32434_WDT_INTERVAL (15 * HZ)
144649 +
144650 +#define VERSION "0.2"
144651
144652 static struct {
144653 + struct completion stop;
144654 + int running;
144655 + struct timer_list timer;
144656 + int queue;
144657 + int default_ticks;
144658 unsigned long inuse;
144659 } rc32434_wdt_device;
144660
144661 static struct integ __iomem *wdt_reg;
144662 +static int ticks = 100 * HZ;
144663
144664 static int expect_close;
144665 -
144666 -/* Board internal clock speed in Hz,
144667 - * the watchdog timer ticks at. */
144668 -extern unsigned int idt_cpu_freq;
144669 -
144670 -/* translate wtcompare value to seconds and vice versa */
144671 -#define WTCOMP2SEC(x) (x / idt_cpu_freq)
144672 -#define SEC2WTCOMP(x) (x * idt_cpu_freq)
144673 -
144674 -/* Use a default timeout of 20s. This should be
144675 - * safe for CPU clock speeds up to 400MHz, as
144676 - * ((2 ^ 32) - 1) / (400MHz / 2) = 21s. */
144677 -#define WATCHDOG_TIMEOUT 20
144678 -
144679 -static int timeout = WATCHDOG_TIMEOUT;
144680 +static int timeout;
144681
144682 static int nowayout = WATCHDOG_NOWAYOUT;
144683 module_param(nowayout, int, 0);
144684 MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
144685 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
144686
144687 -/* apply or and nand masks to data read from addr and write back */
144688 -#define SET_BITS(addr, or, nand) \
144689 - writel((readl(&addr) | or) & ~nand, &addr)
144690
144691 static void rc32434_wdt_start(void)
144692 {
144693 - u32 or, nand;
144694 -
144695 - /* zero the counter before enabling */
144696 - writel(0, &wdt_reg->wtcount);
144697 -
144698 - /* don't generate a non-maskable interrupt,
144699 - * do a warm reset instead */
144700 - nand = 1 << RC32434_ERR_WNE;
144701 - or = 1 << RC32434_ERR_WRE;
144702 + u32 val;
144703
144704 - /* reset the ERRCS timeout bit in case it's set */
144705 - nand |= 1 << RC32434_ERR_WTO;
144706 + if (!rc32434_wdt_device.inuse) {
144707 + writel(0, &wdt_reg->wtcount);
144708
144709 - SET_BITS(wdt_reg->errcs, or, nand);
144710 + val = RC32434_ERR_WRE;
144711 + writel(readl(&wdt_reg->errcs) | val, &wdt_reg->errcs);
144712
144713 - /* reset WTC timeout bit and enable WDT */
144714 - nand = 1 << RC32434_WTC_TO;
144715 - or = 1 << RC32434_WTC_EN;
144716 -
144717 - SET_BITS(wdt_reg->wtc, or, nand);
144718 + val = RC32434_WTC_EN;
144719 + writel(readl(&wdt_reg->wtc) | val, &wdt_reg->wtc);
144720 + }
144721 + rc32434_wdt_device.running++;
144722 }
144723
144724 static void rc32434_wdt_stop(void)
144725 {
144726 - /* Disable WDT */
144727 - SET_BITS(wdt_reg->wtc, 0, 1 << RC32434_WTC_EN);
144728 + u32 val;
144729 +
144730 + if (rc32434_wdt_device.running) {
144731 +
144732 + val = ~RC32434_WTC_EN;
144733 + writel(readl(&wdt_reg->wtc) & val, &wdt_reg->wtc);
144734 +
144735 + val = ~RC32434_ERR_WRE;
144736 + writel(readl(&wdt_reg->errcs) & val, &wdt_reg->errcs);
144737 +
144738 + rc32434_wdt_device.running = 0;
144739 + }
144740 }
144741
144742 -static int rc32434_wdt_set(int new_timeout)
144743 +static void rc32434_wdt_set(int new_timeout)
144744 {
144745 - int max_to = WTCOMP2SEC((u32)-1);
144746 + u32 cmp = new_timeout * HZ;
144747 + u32 state, val;
144748
144749 - if (new_timeout < 0 || new_timeout > max_to) {
144750 - printk(KERN_ERR KBUILD_MODNAME
144751 - ": timeout value must be between 0 and %d",
144752 - max_to);
144753 - return -EINVAL;
144754 - }
144755 timeout = new_timeout;
144756 - writel(SEC2WTCOMP(timeout), &wdt_reg->wtcompare);
144757 + /*
144758 + * store and disable WTC
144759 + */
144760 + state = (u32)(readl(&wdt_reg->wtc) & RC32434_WTC_EN);
144761 + val = ~RC32434_WTC_EN;
144762 + writel(readl(&wdt_reg->wtc) & val, &wdt_reg->wtc);
144763
144764 - return 0;
144765 + writel(0, &wdt_reg->wtcount);
144766 + writel(cmp, &wdt_reg->wtcompare);
144767 +
144768 + /*
144769 + * restore WTC
144770 + */
144771 +
144772 + writel(readl(&wdt_reg->wtc) | state, &wdt_reg);
144773 }
144774
144775 -static void rc32434_wdt_ping(void)
144776 +static void rc32434_wdt_reset(void)
144777 {
144778 + ticks = rc32434_wdt_device.default_ticks;
144779 +}
144780 +
144781 +static void rc32434_wdt_update(unsigned long unused)
144782 +{
144783 + if (rc32434_wdt_device.running)
144784 + ticks--;
144785 +
144786 writel(0, &wdt_reg->wtcount);
144787 +
144788 + if (rc32434_wdt_device.queue && ticks)
144789 + mod_timer(&rc32434_wdt_device.timer,
144790 + jiffies + RC32434_WDT_INTERVAL);
144791 + else
144792 + complete(&rc32434_wdt_device.stop);
144793 }
144794
144795 static int rc32434_wdt_open(struct inode *inode, struct file *file)
144796 @@ -127,23 +142,19 @@
144797 if (nowayout)
144798 __module_get(THIS_MODULE);
144799
144800 - rc32434_wdt_start();
144801 - rc32434_wdt_ping();
144802 -
144803 return nonseekable_open(inode, file);
144804 }
144805
144806 static int rc32434_wdt_release(struct inode *inode, struct file *file)
144807 {
144808 - if (expect_close == 42) {
144809 + if (expect_close && nowayout == 0) {
144810 rc32434_wdt_stop();
144811 printk(KERN_INFO KBUILD_MODNAME ": disabling watchdog timer\n");
144812 module_put(THIS_MODULE);
144813 - } else {
144814 + } else
144815 printk(KERN_CRIT KBUILD_MODNAME
144816 ": device closed unexpectedly. WDT will not stop !\n");
144817 - rc32434_wdt_ping();
144818 - }
144819 +
144820 clear_bit(0, &rc32434_wdt_device.inuse);
144821 return 0;
144822 }
144823 @@ -163,10 +174,10 @@
144824 if (get_user(c, data + i))
144825 return -EFAULT;
144826 if (c == 'V')
144827 - expect_close = 42;
144828 + expect_close = 1;
144829 }
144830 }
144831 - rc32434_wdt_ping();
144832 + rc32434_wdt_update(0);
144833 return len;
144834 }
144835 return 0;
144836 @@ -186,11 +197,11 @@
144837 };
144838 switch (cmd) {
144839 case WDIOC_KEEPALIVE:
144840 - rc32434_wdt_ping();
144841 + rc32434_wdt_reset();
144842 break;
144843 case WDIOC_GETSTATUS:
144844 case WDIOC_GETBOOTSTATUS:
144845 - value = 0;
144846 + value = readl(&wdt_reg->wtcount);
144847 if (copy_to_user(argp, &value, sizeof(int)))
144848 return -EFAULT;
144849 break;
144850 @@ -207,7 +218,6 @@
144851 break;
144852 case WDIOS_DISABLECARD:
144853 rc32434_wdt_stop();
144854 - break;
144855 default:
144856 return -EINVAL;
144857 }
144858 @@ -215,9 +225,11 @@
144859 case WDIOC_SETTIMEOUT:
144860 if (copy_from_user(&new_timeout, argp, sizeof(int)))
144861 return -EFAULT;
144862 - if (rc32434_wdt_set(new_timeout))
144863 + if (new_timeout < 1)
144864 return -EINVAL;
144865 - /* Fall through */
144866 + if (new_timeout > MAX_TIMEOUT)
144867 + return -EINVAL;
144868 + rc32434_wdt_set(new_timeout);
144869 case WDIOC_GETTIMEOUT:
144870 return copy_to_user(argp, &timeout, sizeof(int));
144871 default:
144872 @@ -242,15 +254,15 @@
144873 .fops = &rc32434_wdt_fops,
144874 };
144875
144876 -static char banner[] __devinitdata = KERN_INFO KBUILD_MODNAME
144877 +static char banner[] = KERN_INFO KBUILD_MODNAME
144878 ": Watchdog Timer version " VERSION ", timer margin: %d sec\n";
144879
144880 -static int __devinit rc32434_wdt_probe(struct platform_device *pdev)
144881 +static int rc32434_wdt_probe(struct platform_device *pdev)
144882 {
144883 int ret;
144884 struct resource *r;
144885
144886 - r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "rb532_wdt_res");
144887 + r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "rb500_wdt_res");
144888 if (!r) {
144889 printk(KERN_ERR KBUILD_MODNAME
144890 "failed to retrieve resources\n");
144891 @@ -265,12 +277,24 @@
144892 }
144893
144894 ret = misc_register(&rc32434_wdt_miscdev);
144895 +
144896 if (ret < 0) {
144897 printk(KERN_ERR KBUILD_MODNAME
144898 "failed to register watchdog device\n");
144899 goto unmap;
144900 }
144901
144902 + init_completion(&rc32434_wdt_device.stop);
144903 + rc32434_wdt_device.queue = 0;
144904 +
144905 + clear_bit(0, &rc32434_wdt_device.inuse);
144906 +
144907 + setup_timer(&rc32434_wdt_device.timer, rc32434_wdt_update, 0L);
144908 +
144909 + rc32434_wdt_device.default_ticks = ticks;
144910 +
144911 + rc32434_wdt_start();
144912 +
144913 printk(banner, timeout);
144914
144915 return 0;
144916 @@ -280,17 +304,23 @@
144917 return ret;
144918 }
144919
144920 -static int __devexit rc32434_wdt_remove(struct platform_device *pdev)
144921 +static int rc32434_wdt_remove(struct platform_device *pdev)
144922 {
144923 + if (rc32434_wdt_device.queue) {
144924 + rc32434_wdt_device.queue = 0;
144925 + wait_for_completion(&rc32434_wdt_device.stop);
144926 + }
144927 misc_deregister(&rc32434_wdt_miscdev);
144928 +
144929 iounmap(wdt_reg);
144930 +
144931 return 0;
144932 }
144933
144934 static struct platform_driver rc32434_wdt = {
144935 .probe = rc32434_wdt_probe,
144936 - .remove = __devexit_p(rc32434_wdt_remove),
144937 - .driver = {
144938 + .remove = rc32434_wdt_remove,
144939 + .driver = {
144940 .name = "rc32434_wdt",
144941 }
144942 };
144943 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/xen/balloon.c linux-2.6.29-rc3.owrt/drivers/xen/balloon.c
144944 --- linux-2.6.29.owrt/drivers/xen/balloon.c 2009-05-10 22:04:39.000000000 +0200
144945 +++ linux-2.6.29-rc3.owrt/drivers/xen/balloon.c 2009-05-10 23:48:29.000000000 +0200
144946 @@ -498,7 +498,7 @@
144947 if (!capable(CAP_SYS_ADMIN))
144948 return -EPERM;
144949
144950 - target_bytes = simple_strtoull(buf, &endchar, 0) * 1024;
144951 + target_bytes = memparse(buf, &endchar);
144952
144953 balloon_set_new_target(target_bytes >> PAGE_SHIFT);
144954
144955 @@ -508,39 +508,8 @@
144956 static SYSDEV_ATTR(target_kb, S_IRUGO | S_IWUSR,
144957 show_target_kb, store_target_kb);
144958
144959 -
144960 -static ssize_t show_target(struct sys_device *dev, struct sysdev_attribute *attr,
144961 - char *buf)
144962 -{
144963 - return sprintf(buf, "%llu\n",
144964 - (u64)balloon_stats.target_pages << PAGE_SHIFT);
144965 -}
144966 -
144967 -static ssize_t store_target(struct sys_device *dev,
144968 - struct sysdev_attribute *attr,
144969 - const char *buf,
144970 - size_t count)
144971 -{
144972 - char *endchar;
144973 - unsigned long long target_bytes;
144974 -
144975 - if (!capable(CAP_SYS_ADMIN))
144976 - return -EPERM;
144977 -
144978 - target_bytes = memparse(buf, &endchar);
144979 -
144980 - balloon_set_new_target(target_bytes >> PAGE_SHIFT);
144981 -
144982 - return count;
144983 -}
144984 -
144985 -static SYSDEV_ATTR(target, S_IRUGO | S_IWUSR,
144986 - show_target, store_target);
144987 -
144988 -
144989 static struct sysdev_attribute *balloon_attrs[] = {
144990 &attr_target_kb,
144991 - &attr_target,
144992 };
144993
144994 static struct attribute *balloon_info_attrs[] = {
144995 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/drivers/xen/manage.c linux-2.6.29-rc3.owrt/drivers/xen/manage.c
144996 --- linux-2.6.29.owrt/drivers/xen/manage.c 2009-05-10 22:04:39.000000000 +0200
144997 +++ linux-2.6.29-rc3.owrt/drivers/xen/manage.c 2009-05-10 23:48:29.000000000 +0200
144998 @@ -45,13 +45,6 @@
144999 err);
145000 return err;
145001 }
145002 - err = sysdev_suspend(PMSG_SUSPEND);
145003 - if (err) {
145004 - printk(KERN_ERR "xen_suspend: sysdev_suspend failed: %d\n",
145005 - err);
145006 - device_power_up(PMSG_RESUME);
145007 - return err;
145008 - }
145009
145010 xen_mm_pin_all();
145011 gnttab_suspend();
145012 @@ -68,7 +61,6 @@
145013 gnttab_resume();
145014 xen_mm_unpin_all();
145015
145016 - sysdev_resume();
145017 device_power_up(PMSG_RESUME);
145018
145019 if (!*cancelled) {
145020 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/aio.c linux-2.6.29-rc3.owrt/fs/aio.c
145021 --- linux-2.6.29.owrt/fs/aio.c 2009-05-10 22:04:39.000000000 +0200
145022 +++ linux-2.6.29-rc3.owrt/fs/aio.c 2009-05-10 23:48:29.000000000 +0200
145023 @@ -443,7 +443,7 @@
145024 req->private = NULL;
145025 req->ki_iovec = NULL;
145026 INIT_LIST_HEAD(&req->ki_run_list);
145027 - req->ki_eventfd = NULL;
145028 + req->ki_eventfd = ERR_PTR(-EINVAL);
145029
145030 /* Check if the completion queue has enough free space to
145031 * accept an event from this io.
145032 @@ -485,6 +485,8 @@
145033 {
145034 assert_spin_locked(&ctx->ctx_lock);
145035
145036 + if (!IS_ERR(req->ki_eventfd))
145037 + fput(req->ki_eventfd);
145038 if (req->ki_dtor)
145039 req->ki_dtor(req);
145040 if (req->ki_iovec != &req->ki_inline_vec)
145041 @@ -506,11 +508,8 @@
145042 list_del(&req->ki_list);
145043 spin_unlock_irq(&fput_lock);
145044
145045 - /* Complete the fput(s) */
145046 - if (req->ki_filp != NULL)
145047 - __fput(req->ki_filp);
145048 - if (req->ki_eventfd != NULL)
145049 - __fput(req->ki_eventfd);
145050 + /* Complete the fput */
145051 + __fput(req->ki_filp);
145052
145053 /* Link the iocb into the context's free list */
145054 spin_lock_irq(&ctx->ctx_lock);
145055 @@ -528,14 +527,12 @@
145056 */
145057 static int __aio_put_req(struct kioctx *ctx, struct kiocb *req)
145058 {
145059 - int schedule_putreq = 0;
145060 -
145061 dprintk(KERN_DEBUG "aio_put(%p): f_count=%ld\n",
145062 req, atomic_long_read(&req->ki_filp->f_count));
145063
145064 assert_spin_locked(&ctx->ctx_lock);
145065
145066 - req->ki_users--;
145067 + req->ki_users --;
145068 BUG_ON(req->ki_users < 0);
145069 if (likely(req->ki_users))
145070 return 0;
145071 @@ -543,23 +540,10 @@
145072 req->ki_cancel = NULL;
145073 req->ki_retry = NULL;
145074
145075 - /*
145076 - * Try to optimize the aio and eventfd file* puts, by avoiding to
145077 - * schedule work in case it is not __fput() time. In normal cases,
145078 - * we would not be holding the last reference to the file*, so
145079 - * this function will be executed w/out any aio kthread wakeup.
145080 + /* Must be done under the lock to serialise against cancellation.
145081 + * Call this aio_fput as it duplicates fput via the fput_work.
145082 */
145083 - if (unlikely(atomic_long_dec_and_test(&req->ki_filp->f_count)))
145084 - schedule_putreq++;
145085 - else
145086 - req->ki_filp = NULL;
145087 - if (req->ki_eventfd != NULL) {
145088 - if (unlikely(atomic_long_dec_and_test(&req->ki_eventfd->f_count)))
145089 - schedule_putreq++;
145090 - else
145091 - req->ki_eventfd = NULL;
145092 - }
145093 - if (unlikely(schedule_putreq)) {
145094 + if (unlikely(atomic_long_dec_and_test(&req->ki_filp->f_count))) {
145095 get_ioctx(ctx);
145096 spin_lock(&fput_lock);
145097 list_add(&req->ki_list, &fput_head);
145098 @@ -587,7 +571,7 @@
145099 static struct kioctx *lookup_ioctx(unsigned long ctx_id)
145100 {
145101 struct mm_struct *mm = current->mm;
145102 - struct kioctx *ctx, *ret = NULL;
145103 + struct kioctx *ctx = NULL;
145104 struct hlist_node *n;
145105
145106 rcu_read_lock();
145107 @@ -595,13 +579,12 @@
145108 hlist_for_each_entry_rcu(ctx, n, &mm->ioctx_list, list) {
145109 if (ctx->user_id == ctx_id && !ctx->dead) {
145110 get_ioctx(ctx);
145111 - ret = ctx;
145112 break;
145113 }
145114 }
145115
145116 rcu_read_unlock();
145117 - return ret;
145118 + return ctx;
145119 }
145120
145121 /*
145122 @@ -1026,7 +1009,7 @@
145123 * eventfd. The eventfd_signal() function is safe to be called
145124 * from IRQ context.
145125 */
145126 - if (iocb->ki_eventfd != NULL)
145127 + if (!IS_ERR(iocb->ki_eventfd))
145128 eventfd_signal(iocb->ki_eventfd, 1);
145129
145130 put_rq:
145131 @@ -1625,7 +1608,6 @@
145132 req->ki_eventfd = eventfd_fget((int) iocb->aio_resfd);
145133 if (IS_ERR(req->ki_eventfd)) {
145134 ret = PTR_ERR(req->ki_eventfd);
145135 - req->ki_eventfd = NULL;
145136 goto out_put_req;
145137 }
145138 }
145139 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/binfmt_elf.c linux-2.6.29-rc3.owrt/fs/binfmt_elf.c
145140 --- linux-2.6.29.owrt/fs/binfmt_elf.c 2009-05-10 22:04:39.000000000 +0200
145141 +++ linux-2.6.29-rc3.owrt/fs/binfmt_elf.c 2009-05-10 23:48:29.000000000 +0200
145142 @@ -1225,15 +1225,7 @@
145143 magic.elfmag[EI_MAG1] = ELFMAG1;
145144 magic.elfmag[EI_MAG2] = ELFMAG2;
145145 magic.elfmag[EI_MAG3] = ELFMAG3;
145146 - /*
145147 - * Switch to the user "segment" for get_user(),
145148 - * then put back what elf_core_dump() had in place.
145149 - */
145150 - set_fs(USER_DS);
145151 - if (unlikely(get_user(word, header)))
145152 - word = 0;
145153 - set_fs(fs);
145154 - if (word == magic.cmp)
145155 + if (get_user(word, header) == 0 && word == magic.cmp)
145156 return PAGE_SIZE;
145157 }
145158
145159 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/bio.c linux-2.6.29-rc3.owrt/fs/bio.c
145160 --- linux-2.6.29.owrt/fs/bio.c 2009-05-10 22:04:39.000000000 +0200
145161 +++ linux-2.6.29-rc3.owrt/fs/bio.c 2009-05-10 23:48:29.000000000 +0200
145162 @@ -302,10 +302,9 @@
145163 struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs)
145164 {
145165 struct bio *bio = NULL;
145166 - void *uninitialized_var(p);
145167
145168 if (bs) {
145169 - p = mempool_alloc(bs->bio_pool, gfp_mask);
145170 + void *p = mempool_alloc(bs->bio_pool, gfp_mask);
145171
145172 if (p)
145173 bio = p + bs->front_pad;
145174 @@ -330,7 +329,7 @@
145175 }
145176 if (unlikely(!bvl)) {
145177 if (bs)
145178 - mempool_free(p, bs->bio_pool);
145179 + mempool_free(bio, bs->bio_pool);
145180 else
145181 kfree(bio);
145182 bio = NULL;
145183 @@ -463,12 +462,10 @@
145184 if (bio_integrity(bio)) {
145185 int ret;
145186
145187 - ret = bio_integrity_clone(b, bio, gfp_mask, fs_bio_set);
145188 + ret = bio_integrity_clone(b, bio, fs_bio_set);
145189
145190 - if (ret < 0) {
145191 - bio_put(b);
145192 + if (ret < 0)
145193 return NULL;
145194 - }
145195 }
145196
145197 return b;
145198 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/bio-integrity.c linux-2.6.29-rc3.owrt/fs/bio-integrity.c
145199 --- linux-2.6.29.owrt/fs/bio-integrity.c 2009-05-10 22:04:39.000000000 +0200
145200 +++ linux-2.6.29-rc3.owrt/fs/bio-integrity.c 2009-05-10 23:48:29.000000000 +0200
145201 @@ -140,6 +140,7 @@
145202
145203 iv = bip_vec_idx(bip, bip->bip_vcnt);
145204 BUG_ON(iv == NULL);
145205 + BUG_ON(iv->bv_page != NULL);
145206
145207 iv->bv_page = page;
145208 iv->bv_len = len;
145209 @@ -464,7 +465,7 @@
145210
145211 if (ret) {
145212 kunmap_atomic(kaddr, KM_USER0);
145213 - return ret;
145214 + break;
145215 }
145216
145217 sectors = bv->bv_len / bi->sector_size;
145218 @@ -492,13 +493,18 @@
145219 struct bio_integrity_payload *bip =
145220 container_of(work, struct bio_integrity_payload, bip_work);
145221 struct bio *bio = bip->bip_bio;
145222 - int error;
145223 + int error = bip->bip_error;
145224
145225 - error = bio_integrity_verify(bio);
145226 + if (bio_integrity_verify(bio)) {
145227 + clear_bit(BIO_UPTODATE, &bio->bi_flags);
145228 + error = -EIO;
145229 + }
145230
145231 /* Restore original bio completion handler */
145232 bio->bi_end_io = bip->bip_end_io;
145233 - bio_endio(bio, error);
145234 +
145235 + if (bio->bi_end_io)
145236 + bio->bi_end_io(bio, error);
145237 }
145238
145239 /**
145240 @@ -519,17 +525,7 @@
145241
145242 BUG_ON(bip->bip_bio != bio);
145243
145244 - /* In case of an I/O error there is no point in verifying the
145245 - * integrity metadata. Restore original bio end_io handler
145246 - * and run it.
145247 - */
145248 - if (error) {
145249 - bio->bi_end_io = bip->bip_end_io;
145250 - bio_endio(bio, error);
145251 -
145252 - return;
145253 - }
145254 -
145255 + bip->bip_error = error;
145256 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);
145257 queue_work(kintegrityd_wq, &bip->bip_work);
145258 }
145259 @@ -685,20 +681,19 @@
145260 * bio_integrity_clone - Callback for cloning bios with integrity metadata
145261 * @bio: New bio
145262 * @bio_src: Original bio
145263 - * @gfp_mask: Memory allocation mask
145264 * @bs: bio_set to allocate bip from
145265 *
145266 * Description: Called to allocate a bip when cloning a bio
145267 */
145268 int bio_integrity_clone(struct bio *bio, struct bio *bio_src,
145269 - gfp_t gfp_mask, struct bio_set *bs)
145270 + struct bio_set *bs)
145271 {
145272 struct bio_integrity_payload *bip_src = bio_src->bi_integrity;
145273 struct bio_integrity_payload *bip;
145274
145275 BUG_ON(bip_src == NULL);
145276
145277 - bip = bio_integrity_alloc_bioset(bio, gfp_mask, bip_src->bip_vcnt, bs);
145278 + bip = bio_integrity_alloc_bioset(bio, GFP_NOIO, bip_src->bip_vcnt, bs);
145279
145280 if (bip == NULL)
145281 return -EIO;
145282 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/async-thread.c linux-2.6.29-rc3.owrt/fs/btrfs/async-thread.c
145283 --- linux-2.6.29.owrt/fs/btrfs/async-thread.c 2009-05-10 22:04:39.000000000 +0200
145284 +++ linux-2.6.29-rc3.owrt/fs/btrfs/async-thread.c 2009-05-10 23:48:29.000000000 +0200
145285 @@ -16,11 +16,11 @@
145286 * Boston, MA 021110-1307, USA.
145287 */
145288
145289 +#include <linux/version.h>
145290 #include <linux/kthread.h>
145291 #include <linux/list.h>
145292 #include <linux/spinlock.h>
145293 -#include <linux/freezer.h>
145294 -#include <linux/ftrace.h>
145295 +# include <linux/freezer.h>
145296 #include "async-thread.h"
145297
145298 #define WORK_QUEUED_BIT 0
145299 @@ -143,7 +143,6 @@
145300 struct btrfs_work *work;
145301 do {
145302 spin_lock_irq(&worker->lock);
145303 -again_locked:
145304 while (!list_empty(&worker->pending)) {
145305 cur = worker->pending.next;
145306 work = list_entry(cur, struct btrfs_work, list);
145307 @@ -166,50 +165,14 @@
145308 check_idle_worker(worker);
145309
145310 }
145311 + worker->working = 0;
145312 if (freezing(current)) {
145313 - worker->working = 0;
145314 - spin_unlock_irq(&worker->lock);
145315 refrigerator();
145316 } else {
145317 + set_current_state(TASK_INTERRUPTIBLE);
145318 spin_unlock_irq(&worker->lock);
145319 - if (!kthread_should_stop()) {
145320 - cpu_relax();
145321 - /*
145322 - * we've dropped the lock, did someone else
145323 - * jump_in?
145324 - */
145325 - smp_mb();
145326 - if (!list_empty(&worker->pending))
145327 - continue;
145328 -
145329 - /*
145330 - * this short schedule allows more work to
145331 - * come in without the queue functions
145332 - * needing to go through wake_up_process()
145333 - *
145334 - * worker->working is still 1, so nobody
145335 - * is going to try and wake us up
145336 - */
145337 - schedule_timeout(1);
145338 - smp_mb();
145339 - if (!list_empty(&worker->pending))
145340 - continue;
145341 -
145342 - /* still no more work?, sleep for real */
145343 - spin_lock_irq(&worker->lock);
145344 - set_current_state(TASK_INTERRUPTIBLE);
145345 - if (!list_empty(&worker->pending))
145346 - goto again_locked;
145347 -
145348 - /*
145349 - * this makes sure we get a wakeup when someone
145350 - * adds something new to the queue
145351 - */
145352 - worker->working = 0;
145353 - spin_unlock_irq(&worker->lock);
145354 -
145355 + if (!kthread_should_stop())
145356 schedule();
145357 - }
145358 __set_current_state(TASK_RUNNING);
145359 }
145360 } while (!kthread_should_stop());
145361 @@ -387,14 +350,13 @@
145362 {
145363 struct btrfs_worker_thread *worker = work->worker;
145364 unsigned long flags;
145365 - int wake = 0;
145366
145367 if (test_and_set_bit(WORK_QUEUED_BIT, &work->flags))
145368 goto out;
145369
145370 spin_lock_irqsave(&worker->lock, flags);
145371 - list_add_tail(&work->list, &worker->pending);
145372 atomic_inc(&worker->num_pending);
145373 + list_add_tail(&work->list, &worker->pending);
145374
145375 /* by definition we're busy, take ourselves off the idle
145376 * list
145377 @@ -406,16 +368,10 @@
145378 &worker->workers->worker_list);
145379 spin_unlock_irqrestore(&worker->workers->lock, flags);
145380 }
145381 - if (!worker->working) {
145382 - wake = 1;
145383 - worker->working = 1;
145384 - }
145385
145386 spin_unlock_irqrestore(&worker->lock, flags);
145387 - if (wake)
145388 - wake_up_process(worker->task);
145389 -out:
145390
145391 +out:
145392 return 0;
145393 }
145394
145395 @@ -442,10 +398,9 @@
145396 }
145397
145398 spin_lock_irqsave(&worker->lock, flags);
145399 -
145400 - list_add_tail(&work->list, &worker->pending);
145401 atomic_inc(&worker->num_pending);
145402 check_busy_worker(worker);
145403 + list_add_tail(&work->list, &worker->pending);
145404
145405 /*
145406 * avoid calling into wake_up_process if this thread has already
145407 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/btrfs_inode.h linux-2.6.29-rc3.owrt/fs/btrfs/btrfs_inode.h
145408 --- linux-2.6.29.owrt/fs/btrfs/btrfs_inode.h 2009-05-10 22:04:39.000000000 +0200
145409 +++ linux-2.6.29-rc3.owrt/fs/btrfs/btrfs_inode.h 2009-05-10 23:48:29.000000000 +0200
145410 @@ -66,9 +66,6 @@
145411 */
145412 struct list_head delalloc_inodes;
145413
145414 - /* the space_info for where this inode's data allocations are done */
145415 - struct btrfs_space_info *space_info;
145416 -
145417 /* full 64 bit generation number, struct vfs_inode doesn't have a big
145418 * enough field for this.
145419 */
145420 @@ -97,11 +94,6 @@
145421 */
145422 u64 delalloc_bytes;
145423
145424 - /* total number of bytes that may be used for this inode for
145425 - * delalloc
145426 - */
145427 - u64 reserved_bytes;
145428 -
145429 /*
145430 * the size of the file stored in the metadata on disk. data=ordered
145431 * means the in-memory i_size might be larger than the size on disk
145432 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/compression.c linux-2.6.29-rc3.owrt/fs/btrfs/compression.c
145433 --- linux-2.6.29.owrt/fs/btrfs/compression.c 2009-05-10 22:04:39.000000000 +0200
145434 +++ linux-2.6.29-rc3.owrt/fs/btrfs/compression.c 2009-05-10 23:48:29.000000000 +0200
145435 @@ -32,6 +32,7 @@
145436 #include <linux/swap.h>
145437 #include <linux/writeback.h>
145438 #include <linux/bit_spinlock.h>
145439 +#include <linux/version.h>
145440 #include <linux/pagevec.h>
145441 #include "compat.h"
145442 #include "ctree.h"
145443 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/ctree.c linux-2.6.29-rc3.owrt/fs/btrfs/ctree.c
145444 --- linux-2.6.29.owrt/fs/btrfs/ctree.c 2009-05-10 22:04:39.000000000 +0200
145445 +++ linux-2.6.29-rc3.owrt/fs/btrfs/ctree.c 2009-05-10 23:48:29.000000000 +0200
145446 @@ -38,62 +38,20 @@
145447 static int del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
145448 struct btrfs_path *path, int level, int slot);
145449
145450 -struct btrfs_path *btrfs_alloc_path(void)
145451 +inline void btrfs_init_path(struct btrfs_path *p)
145452 {
145453 - struct btrfs_path *path;
145454 - path = kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS);
145455 - if (path)
145456 - path->reada = 1;
145457 - return path;
145458 + memset(p, 0, sizeof(*p));
145459 }
145460
145461 -/*
145462 - * set all locked nodes in the path to blocking locks. This should
145463 - * be done before scheduling
145464 - */
145465 -noinline void btrfs_set_path_blocking(struct btrfs_path *p)
145466 -{
145467 - int i;
145468 - for (i = 0; i < BTRFS_MAX_LEVEL; i++) {
145469 - if (p->nodes[i] && p->locks[i])
145470 - btrfs_set_lock_blocking(p->nodes[i]);
145471 - }
145472 -}
145473 -
145474 -/*
145475 - * reset all the locked nodes in the patch to spinning locks.
145476 - *
145477 - * held is used to keep lockdep happy, when lockdep is enabled
145478 - * we set held to a blocking lock before we go around and
145479 - * retake all the spinlocks in the path. You can safely use NULL
145480 - * for held
145481 - */
145482 -noinline void btrfs_clear_path_blocking(struct btrfs_path *p,
145483 - struct extent_buffer *held)
145484 +struct btrfs_path *btrfs_alloc_path(void)
145485 {
145486 - int i;
145487 -
145488 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
145489 - /* lockdep really cares that we take all of these spinlocks
145490 - * in the right order. If any of the locks in the path are not
145491 - * currently blocking, it is going to complain. So, make really
145492 - * really sure by forcing the path to blocking before we clear
145493 - * the path blocking.
145494 - */
145495 - if (held)
145496 - btrfs_set_lock_blocking(held);
145497 - btrfs_set_path_blocking(p);
145498 -#endif
145499 -
145500 - for (i = BTRFS_MAX_LEVEL - 1; i >= 0; i--) {
145501 - if (p->nodes[i] && p->locks[i])
145502 - btrfs_clear_lock_blocking(p->nodes[i]);
145503 + struct btrfs_path *path;
145504 + path = kmem_cache_alloc(btrfs_path_cachep, GFP_NOFS);
145505 + if (path) {
145506 + btrfs_init_path(path);
145507 + path->reada = 1;
145508 }
145509 -
145510 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
145511 - if (held)
145512 - btrfs_clear_lock_blocking(held);
145513 -#endif
145514 + return path;
145515 }
145516
145517 /* this also releases the path */
145518 @@ -277,7 +235,7 @@
145519 if (*cow_ret == buf)
145520 unlock_orig = 1;
145521
145522 - btrfs_assert_tree_locked(buf);
145523 + WARN_ON(!btrfs_tree_locked(buf));
145524
145525 if (parent)
145526 parent_start = parent->start;
145527 @@ -303,7 +261,7 @@
145528 trans->transid, level, &ins);
145529 BUG_ON(ret);
145530 cow = btrfs_init_new_buffer(trans, root, prealloc_dest,
145531 - buf->len, level);
145532 + buf->len);
145533 } else {
145534 cow = btrfs_alloc_free_block(trans, root, buf->len,
145535 parent_start,
145536 @@ -314,8 +272,6 @@
145537 if (IS_ERR(cow))
145538 return PTR_ERR(cow);
145539
145540 - /* cow is set to blocking by btrfs_init_new_buffer */
145541 -
145542 copy_extent_buffer(cow, buf, 0, 0, cow->len);
145543 btrfs_set_header_bytenr(cow, cow->start);
145544 btrfs_set_header_generation(cow, trans->transid);
145545 @@ -432,20 +388,17 @@
145546 WARN_ON(1);
145547 }
145548
145549 + spin_lock(&root->fs_info->hash_lock);
145550 if (btrfs_header_generation(buf) == trans->transid &&
145551 btrfs_header_owner(buf) == root->root_key.objectid &&
145552 !btrfs_header_flag(buf, BTRFS_HEADER_FLAG_WRITTEN)) {
145553 *cow_ret = buf;
145554 + spin_unlock(&root->fs_info->hash_lock);
145555 WARN_ON(prealloc_dest);
145556 return 0;
145557 }
145558 -
145559 + spin_unlock(&root->fs_info->hash_lock);
145560 search_start = buf->start & ~((u64)(1024 * 1024 * 1024) - 1);
145561 -
145562 - if (parent)
145563 - btrfs_set_lock_blocking(parent);
145564 - btrfs_set_lock_blocking(buf);
145565 -
145566 ret = __btrfs_cow_block(trans, root, buf, parent,
145567 parent_slot, cow_ret, search_start, 0,
145568 prealloc_dest);
145569 @@ -551,8 +504,6 @@
145570 if (parent_nritems == 1)
145571 return 0;
145572
145573 - btrfs_set_lock_blocking(parent);
145574 -
145575 for (i = start_slot; i < end_slot; i++) {
145576 int close = 1;
145577
145578 @@ -613,7 +564,6 @@
145579 search_start = last_block;
145580
145581 btrfs_tree_lock(cur);
145582 - btrfs_set_lock_blocking(cur);
145583 err = __btrfs_cow_block(trans, root, cur, parent, i,
145584 &cur, search_start,
145585 min(16 * blocksize,
145586 @@ -912,7 +862,6 @@
145587 return 0;
145588
145589 mid = path->nodes[level];
145590 -
145591 WARN_ON(!path->locks[level]);
145592 WARN_ON(btrfs_header_generation(mid) != trans->transid);
145593
145594 @@ -934,9 +883,8 @@
145595
145596 /* promote the child to a root */
145597 child = read_node_slot(root, mid, 0);
145598 - BUG_ON(!child);
145599 btrfs_tree_lock(child);
145600 - btrfs_set_lock_blocking(child);
145601 + BUG_ON(!child);
145602 ret = btrfs_cow_block(trans, root, child, mid, 0, &child, 0);
145603 BUG_ON(ret);
145604
145605 @@ -952,7 +900,6 @@
145606
145607 add_root_to_dirty_list(root);
145608 btrfs_tree_unlock(child);
145609 -
145610 path->locks[level] = 0;
145611 path->nodes[level] = NULL;
145612 clean_tree_block(trans, root, mid);
145613 @@ -977,7 +924,6 @@
145614 left = read_node_slot(root, parent, pslot - 1);
145615 if (left) {
145616 btrfs_tree_lock(left);
145617 - btrfs_set_lock_blocking(left);
145618 wret = btrfs_cow_block(trans, root, left,
145619 parent, pslot - 1, &left, 0);
145620 if (wret) {
145621 @@ -988,7 +934,6 @@
145622 right = read_node_slot(root, parent, pslot + 1);
145623 if (right) {
145624 btrfs_tree_lock(right);
145625 - btrfs_set_lock_blocking(right);
145626 wret = btrfs_cow_block(trans, root, right,
145627 parent, pslot + 1, &right, 0);
145628 if (wret) {
145629 @@ -1164,8 +1109,6 @@
145630 u32 left_nr;
145631
145632 btrfs_tree_lock(left);
145633 - btrfs_set_lock_blocking(left);
145634 -
145635 left_nr = btrfs_header_nritems(left);
145636 if (left_nr >= BTRFS_NODEPTRS_PER_BLOCK(root) - 1) {
145637 wret = 1;
145638 @@ -1212,10 +1155,7 @@
145639 */
145640 if (right) {
145641 u32 right_nr;
145642 -
145643 btrfs_tree_lock(right);
145644 - btrfs_set_lock_blocking(right);
145645 -
145646 right_nr = btrfs_header_nritems(right);
145647 if (right_nr >= BTRFS_NODEPTRS_PER_BLOCK(root) - 1) {
145648 wret = 1;
145649 @@ -1270,7 +1210,8 @@
145650 struct btrfs_disk_key disk_key;
145651 u32 nritems;
145652 u64 search;
145653 - u64 target;
145654 + u64 lowest_read;
145655 + u64 highest_read;
145656 u64 nread = 0;
145657 int direction = path->reada;
145658 struct extent_buffer *eb;
145659 @@ -1294,7 +1235,8 @@
145660 return;
145661 }
145662
145663 - target = search;
145664 + highest_read = search;
145665 + lowest_read = search;
145666
145667 nritems = btrfs_header_nritems(node);
145668 nr = slot;
145669 @@ -1314,80 +1256,27 @@
145670 break;
145671 }
145672 search = btrfs_node_blockptr(node, nr);
145673 - if ((search <= target && target - search <= 65536) ||
145674 - (search > target && search - target <= 65536)) {
145675 + if ((search >= lowest_read && search <= highest_read) ||
145676 + (search < lowest_read && lowest_read - search <= 16384) ||
145677 + (search > highest_read && search - highest_read <= 16384)) {
145678 readahead_tree_block(root, search, blocksize,
145679 btrfs_node_ptr_generation(node, nr));
145680 nread += blocksize;
145681 }
145682 nscan++;
145683 - if ((nread > 65536 || nscan > 32))
145684 + if (path->reada < 2 && (nread > (64 * 1024) || nscan > 32))
145685 break;
145686 - }
145687 -}
145688 -
145689 -/*
145690 - * returns -EAGAIN if it had to drop the path, or zero if everything was in
145691 - * cache
145692 - */
145693 -static noinline int reada_for_balance(struct btrfs_root *root,
145694 - struct btrfs_path *path, int level)
145695 -{
145696 - int slot;
145697 - int nritems;
145698 - struct extent_buffer *parent;
145699 - struct extent_buffer *eb;
145700 - u64 gen;
145701 - u64 block1 = 0;
145702 - u64 block2 = 0;
145703 - int ret = 0;
145704 - int blocksize;
145705
145706 - parent = path->nodes[level - 1];
145707 - if (!parent)
145708 - return 0;
145709 -
145710 - nritems = btrfs_header_nritems(parent);
145711 - slot = path->slots[level];
145712 - blocksize = btrfs_level_size(root, level);
145713 -
145714 - if (slot > 0) {
145715 - block1 = btrfs_node_blockptr(parent, slot - 1);
145716 - gen = btrfs_node_ptr_generation(parent, slot - 1);
145717 - eb = btrfs_find_tree_block(root, block1, blocksize);
145718 - if (eb && btrfs_buffer_uptodate(eb, gen))
145719 - block1 = 0;
145720 - free_extent_buffer(eb);
145721 - }
145722 - if (slot < nritems) {
145723 - block2 = btrfs_node_blockptr(parent, slot + 1);
145724 - gen = btrfs_node_ptr_generation(parent, slot + 1);
145725 - eb = btrfs_find_tree_block(root, block2, blocksize);
145726 - if (eb && btrfs_buffer_uptodate(eb, gen))
145727 - block2 = 0;
145728 - free_extent_buffer(eb);
145729 - }
145730 - if (block1 || block2) {
145731 - ret = -EAGAIN;
145732 - btrfs_release_path(root, path);
145733 - if (block1)
145734 - readahead_tree_block(root, block1, blocksize, 0);
145735 - if (block2)
145736 - readahead_tree_block(root, block2, blocksize, 0);
145737 + if (nread > (256 * 1024) || nscan > 128)
145738 + break;
145739
145740 - if (block1) {
145741 - eb = read_tree_block(root, block1, blocksize, 0);
145742 - free_extent_buffer(eb);
145743 - }
145744 - if (block1) {
145745 - eb = read_tree_block(root, block2, blocksize, 0);
145746 - free_extent_buffer(eb);
145747 - }
145748 + if (search < lowest_read)
145749 + lowest_read = search;
145750 + if (search > highest_read)
145751 + highest_read = search;
145752 }
145753 - return ret;
145754 }
145755
145756 -
145757 /*
145758 * when we walk down the tree, it is usually safe to unlock the higher layers
145759 * in the tree. The exceptions are when our path goes through slot 0, because
145760 @@ -1439,32 +1328,6 @@
145761 }
145762
145763 /*
145764 - * This releases any locks held in the path starting at level and
145765 - * going all the way up to the root.
145766 - *
145767 - * btrfs_search_slot will keep the lock held on higher nodes in a few
145768 - * corner cases, such as COW of the block at slot zero in the node. This
145769 - * ignores those rules, and it should only be called when there are no
145770 - * more updates to be done higher up in the tree.
145771 - */
145772 -noinline void btrfs_unlock_up_safe(struct btrfs_path *path, int level)
145773 -{
145774 - int i;
145775 -
145776 - if (path->keep_locks || path->lowest_level)
145777 - return;
145778 -
145779 - for (i = level; i < BTRFS_MAX_LEVEL; i++) {
145780 - if (!path->nodes[i])
145781 - continue;
145782 - if (!path->locks[i])
145783 - continue;
145784 - btrfs_tree_unlock(path->nodes[i]);
145785 - path->locks[i] = 0;
145786 - }
145787 -}
145788 -
145789 -/*
145790 * look for key in the tree. path is filled in with nodes along the way
145791 * if key is found, we return zero and you can find the item in the leaf
145792 * level of the path (level 0)
145793 @@ -1524,30 +1387,32 @@
145794 int wret;
145795
145796 /* is a cow on this block not required */
145797 + spin_lock(&root->fs_info->hash_lock);
145798 if (btrfs_header_generation(b) == trans->transid &&
145799 btrfs_header_owner(b) == root->root_key.objectid &&
145800 !btrfs_header_flag(b, BTRFS_HEADER_FLAG_WRITTEN)) {
145801 + spin_unlock(&root->fs_info->hash_lock);
145802 goto cow_done;
145803 }
145804 + spin_unlock(&root->fs_info->hash_lock);
145805
145806 /* ok, we have to cow, is our old prealloc the right
145807 * size?
145808 */
145809 if (prealloc_block.objectid &&
145810 prealloc_block.offset != b->len) {
145811 - btrfs_release_path(root, p);
145812 btrfs_free_reserved_extent(root,
145813 prealloc_block.objectid,
145814 prealloc_block.offset);
145815 prealloc_block.objectid = 0;
145816 - goto again;
145817 }
145818
145819 /*
145820 * for higher level blocks, try not to allocate blocks
145821 * with the block and the parent locks held.
145822 */
145823 - if (level > 0 && !prealloc_block.objectid) {
145824 + if (level > 1 && !prealloc_block.objectid &&
145825 + btrfs_path_lock_waiting(p, level)) {
145826 u32 size = b->len;
145827 u64 hint = b->start;
145828
145829 @@ -1560,8 +1425,6 @@
145830 goto again;
145831 }
145832
145833 - btrfs_set_path_blocking(p);
145834 -
145835 wret = btrfs_cow_block(trans, root, b,
145836 p->nodes[level + 1],
145837 p->slots[level + 1],
145838 @@ -1583,22 +1446,6 @@
145839 if (!p->skip_locking)
145840 p->locks[level] = 1;
145841
145842 - btrfs_clear_path_blocking(p, NULL);
145843 -
145844 - /*
145845 - * we have a lock on b and as long as we aren't changing
145846 - * the tree, there is no way to for the items in b to change.
145847 - * It is safe to drop the lock on our parent before we
145848 - * go through the expensive btree search on b.
145849 - *
145850 - * If cow is true, then we might be changing slot zero,
145851 - * which may require changing the parent. So, we can't
145852 - * drop the lock until after we know which slot we're
145853 - * operating on.
145854 - */
145855 - if (!cow)
145856 - btrfs_unlock_up_safe(p, level + 1);
145857 -
145858 ret = check_block(root, p, level);
145859 if (ret) {
145860 ret = -1;
145861 @@ -1606,7 +1453,6 @@
145862 }
145863
145864 ret = bin_search(b, key, level, &slot);
145865 -
145866 if (level != 0) {
145867 if (ret && slot > 0)
145868 slot -= 1;
145869 @@ -1614,16 +1460,7 @@
145870 if ((p->search_for_split || ins_len > 0) &&
145871 btrfs_header_nritems(b) >=
145872 BTRFS_NODEPTRS_PER_BLOCK(root) - 3) {
145873 - int sret;
145874 -
145875 - sret = reada_for_balance(root, p, level);
145876 - if (sret)
145877 - goto again;
145878 -
145879 - btrfs_set_path_blocking(p);
145880 - sret = split_node(trans, root, p, level);
145881 - btrfs_clear_path_blocking(p, NULL);
145882 -
145883 + int sret = split_node(trans, root, p, level);
145884 BUG_ON(sret > 0);
145885 if (sret) {
145886 ret = sret;
145887 @@ -1631,19 +1468,9 @@
145888 }
145889 b = p->nodes[level];
145890 slot = p->slots[level];
145891 - } else if (ins_len < 0 &&
145892 - btrfs_header_nritems(b) <
145893 - BTRFS_NODEPTRS_PER_BLOCK(root) / 4) {
145894 - int sret;
145895 -
145896 - sret = reada_for_balance(root, p, level);
145897 - if (sret)
145898 - goto again;
145899 -
145900 - btrfs_set_path_blocking(p);
145901 - sret = balance_level(trans, root, p, level);
145902 - btrfs_clear_path_blocking(p, NULL);
145903 -
145904 + } else if (ins_len < 0) {
145905 + int sret = balance_level(trans, root, p,
145906 + level);
145907 if (sret) {
145908 ret = sret;
145909 goto done;
145910 @@ -1677,7 +1504,7 @@
145911 * of the btree by dropping locks before
145912 * we read.
145913 */
145914 - if (level > 0) {
145915 + if (level > 1) {
145916 btrfs_release_path(NULL, p);
145917 if (tmp)
145918 free_extent_buffer(tmp);
145919 @@ -1692,7 +1519,6 @@
145920 free_extent_buffer(tmp);
145921 goto again;
145922 } else {
145923 - btrfs_set_path_blocking(p);
145924 if (tmp)
145925 free_extent_buffer(tmp);
145926 if (should_reada)
145927 @@ -1702,29 +1528,14 @@
145928 b = read_node_slot(root, b, slot);
145929 }
145930 }
145931 - if (!p->skip_locking) {
145932 - int lret;
145933 -
145934 - btrfs_clear_path_blocking(p, NULL);
145935 - lret = btrfs_try_spin_lock(b);
145936 -
145937 - if (!lret) {
145938 - btrfs_set_path_blocking(p);
145939 - btrfs_tree_lock(b);
145940 - btrfs_clear_path_blocking(p, b);
145941 - }
145942 - }
145943 + if (!p->skip_locking)
145944 + btrfs_tree_lock(b);
145945 } else {
145946 p->slots[level] = slot;
145947 if (ins_len > 0 &&
145948 btrfs_leaf_free_space(root, b) < ins_len) {
145949 - int sret;
145950 -
145951 - btrfs_set_path_blocking(p);
145952 - sret = split_leaf(trans, root, key,
145953 + int sret = split_leaf(trans, root, key,
145954 p, ins_len, ret == 0);
145955 - btrfs_clear_path_blocking(p, NULL);
145956 -
145957 BUG_ON(sret > 0);
145958 if (sret) {
145959 ret = sret;
145960 @@ -1738,16 +1549,12 @@
145961 }
145962 ret = 1;
145963 done:
145964 - /*
145965 - * we don't really know what they plan on doing with the path
145966 - * from here on, so for now just mark it as blocking
145967 - */
145968 - btrfs_set_path_blocking(p);
145969 if (prealloc_block.objectid) {
145970 btrfs_free_reserved_extent(root,
145971 prealloc_block.objectid,
145972 prealloc_block.offset);
145973 }
145974 +
145975 return ret;
145976 }
145977
145978 @@ -1771,8 +1578,6 @@
145979 ret = btrfs_cow_block(trans, root, eb, NULL, 0, &eb, 0);
145980 BUG_ON(ret);
145981
145982 - btrfs_set_lock_blocking(eb);
145983 -
145984 parent = eb;
145985 while (1) {
145986 level = btrfs_header_level(parent);
145987 @@ -1797,7 +1602,6 @@
145988 eb = read_tree_block(root, bytenr, blocksize,
145989 generation);
145990 btrfs_tree_lock(eb);
145991 - btrfs_set_lock_blocking(eb);
145992 }
145993
145994 /*
145995 @@ -1822,7 +1626,6 @@
145996 eb = read_tree_block(root, bytenr, blocksize,
145997 generation);
145998 btrfs_tree_lock(eb);
145999 - btrfs_set_lock_blocking(eb);
146000 }
146001
146002 ret = btrfs_cow_block(trans, root, eb, parent, slot,
146003 @@ -2365,12 +2168,10 @@
146004 if (slot >= btrfs_header_nritems(upper) - 1)
146005 return 1;
146006
146007 - btrfs_assert_tree_locked(path->nodes[1]);
146008 + WARN_ON(!btrfs_tree_locked(path->nodes[1]));
146009
146010 right = read_node_slot(root, upper, slot + 1);
146011 btrfs_tree_lock(right);
146012 - btrfs_set_lock_blocking(right);
146013 -
146014 free_space = btrfs_leaf_free_space(root, right);
146015 if (free_space < data_size)
146016 goto out_unlock;
146017 @@ -2562,12 +2363,10 @@
146018 if (right_nritems == 0)
146019 return 1;
146020
146021 - btrfs_assert_tree_locked(path->nodes[1]);
146022 + WARN_ON(!btrfs_tree_locked(path->nodes[1]));
146023
146024 left = read_node_slot(root, path->nodes[1], slot - 1);
146025 btrfs_tree_lock(left);
146026 - btrfs_set_lock_blocking(left);
146027 -
146028 free_space = btrfs_leaf_free_space(root, left);
146029 if (free_space < data_size) {
146030 ret = 1;
146031 @@ -3026,12 +2825,6 @@
146032 path->keep_locks = 0;
146033 BUG_ON(ret);
146034
146035 - /*
146036 - * make sure any changes to the path from split_leaf leave it
146037 - * in a blocking state
146038 - */
146039 - btrfs_set_path_blocking(path);
146040 -
146041 leaf = path->nodes[0];
146042 BUG_ON(btrfs_leaf_free_space(root, leaf) < sizeof(struct btrfs_item));
146043
146044 @@ -3561,7 +3354,6 @@
146045 BUG();
146046 }
146047 out:
146048 - btrfs_unlock_up_safe(path, 1);
146049 return ret;
146050 }
146051
146052 @@ -3649,22 +3441,15 @@
146053 {
146054 int ret;
146055 u64 root_gen = btrfs_header_generation(path->nodes[1]);
146056 - u64 parent_start = path->nodes[1]->start;
146057 - u64 parent_owner = btrfs_header_owner(path->nodes[1]);
146058
146059 ret = del_ptr(trans, root, path, 1, path->slots[1]);
146060 if (ret)
146061 return ret;
146062
146063 - /*
146064 - * btrfs_free_extent is expensive, we want to make sure we
146065 - * aren't holding any locks when we call it
146066 - */
146067 - btrfs_unlock_up_safe(path, 0);
146068 -
146069 ret = btrfs_free_extent(trans, root, bytenr,
146070 btrfs_level_size(root, 0),
146071 - parent_start, parent_owner,
146072 + path->nodes[1]->start,
146073 + btrfs_header_owner(path->nodes[1]),
146074 root_gen, 0, 1);
146075 return ret;
146076 }
146077 @@ -3936,7 +3721,6 @@
146078 */
146079 if (slot >= nritems) {
146080 path->slots[level] = slot;
146081 - btrfs_set_path_blocking(path);
146082 sret = btrfs_find_next_key(root, path, min_key, level,
146083 cache_only, min_trans);
146084 if (sret == 0) {
146085 @@ -3954,20 +3738,16 @@
146086 unlock_up(path, level, 1);
146087 goto out;
146088 }
146089 - btrfs_set_path_blocking(path);
146090 cur = read_node_slot(root, cur, slot);
146091
146092 btrfs_tree_lock(cur);
146093 -
146094 path->locks[level - 1] = 1;
146095 path->nodes[level - 1] = cur;
146096 unlock_up(path, level, 1);
146097 - btrfs_clear_path_blocking(path, NULL);
146098 }
146099 out:
146100 if (ret == 0)
146101 memcpy(min_key, &found_key, sizeof(found_key));
146102 - btrfs_set_path_blocking(path);
146103 return ret;
146104 }
146105
146106 @@ -4063,7 +3843,6 @@
146107 if (ret < 0)
146108 return ret;
146109
146110 - btrfs_set_path_blocking(path);
146111 nritems = btrfs_header_nritems(path->nodes[0]);
146112 /*
146113 * by releasing the path above we dropped all our locks. A balance
146114 @@ -4094,16 +3873,14 @@
146115 free_extent_buffer(next);
146116 }
146117
146118 - /* the path was set to blocking above */
146119 if (level == 1 && (path->locks[1] || path->skip_locking) &&
146120 path->reada)
146121 reada_for_search(root, path, level, slot, 0);
146122
146123 next = read_node_slot(root, c, slot);
146124 if (!path->skip_locking) {
146125 - btrfs_assert_tree_locked(c);
146126 + WARN_ON(!btrfs_tree_locked(c));
146127 btrfs_tree_lock(next);
146128 - btrfs_set_lock_blocking(next);
146129 }
146130 break;
146131 }
146132 @@ -4120,15 +3897,12 @@
146133 path->locks[level] = 1;
146134 if (!level)
146135 break;
146136 -
146137 - btrfs_set_path_blocking(path);
146138 if (level == 1 && path->locks[1] && path->reada)
146139 reada_for_search(root, path, level, slot, 0);
146140 next = read_node_slot(root, next, 0);
146141 if (!path->skip_locking) {
146142 - btrfs_assert_tree_locked(path->nodes[level]);
146143 + WARN_ON(!btrfs_tree_locked(path->nodes[level]));
146144 btrfs_tree_lock(next);
146145 - btrfs_set_lock_blocking(next);
146146 }
146147 }
146148 done:
146149 @@ -4153,7 +3927,6 @@
146150
146151 while (1) {
146152 if (path->slots[0] == 0) {
146153 - btrfs_set_path_blocking(path);
146154 ret = btrfs_prev_leaf(root, path);
146155 if (ret != 0)
146156 return ret;
146157 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/ctree.h linux-2.6.29-rc3.owrt/fs/btrfs/ctree.h
146158 --- linux-2.6.29.owrt/fs/btrfs/ctree.h 2009-05-10 22:04:39.000000000 +0200
146159 +++ linux-2.6.29-rc3.owrt/fs/btrfs/ctree.h 2009-05-10 23:48:29.000000000 +0200
146160 @@ -43,7 +43,11 @@
146161
146162 #define BTRFS_ACL_NOT_CACHED ((void *)-1)
146163
146164 -#define BTRFS_MAX_LEVEL 8
146165 +#ifdef CONFIG_LOCKDEP
146166 +# define BTRFS_MAX_LEVEL 7
146167 +#else
146168 +# define BTRFS_MAX_LEVEL 8
146169 +#endif
146170
146171 /* holds pointers to all of the tree roots */
146172 #define BTRFS_ROOT_TREE_OBJECTID 1ULL
146173 @@ -450,11 +454,17 @@
146174 __le32 nsec;
146175 } __attribute__ ((__packed__));
146176
146177 -enum btrfs_compression_type {
146178 +typedef enum {
146179 BTRFS_COMPRESS_NONE = 0,
146180 BTRFS_COMPRESS_ZLIB = 1,
146181 BTRFS_COMPRESS_LAST = 2,
146182 -};
146183 +} btrfs_compression_type;
146184 +
146185 +/* we don't understand any encryption methods right now */
146186 +typedef enum {
146187 + BTRFS_ENCRYPTION_NONE = 0,
146188 + BTRFS_ENCRYPTION_LAST = 1,
146189 +} btrfs_encryption_type;
146190
146191 struct btrfs_inode_item {
146192 /* nfs style generation number */
146193 @@ -596,27 +606,13 @@
146194
146195 struct btrfs_space_info {
146196 u64 flags;
146197 -
146198 - u64 total_bytes; /* total bytes in the space */
146199 - u64 bytes_used; /* total bytes used on disk */
146200 - u64 bytes_pinned; /* total bytes pinned, will be freed when the
146201 - transaction finishes */
146202 - u64 bytes_reserved; /* total bytes the allocator has reserved for
146203 - current allocations */
146204 - u64 bytes_readonly; /* total bytes that are read only */
146205 -
146206 - /* delalloc accounting */
146207 - u64 bytes_delalloc; /* number of bytes reserved for allocation,
146208 - this space is not necessarily reserved yet
146209 - by the allocator */
146210 - u64 bytes_may_use; /* number of bytes that may be used for
146211 - delalloc */
146212 -
146213 - int full; /* indicates that we cannot allocate any more
146214 - chunks for this space */
146215 - int force_alloc; /* set if we need to force a chunk alloc for
146216 - this space */
146217 -
146218 + u64 total_bytes;
146219 + u64 bytes_used;
146220 + u64 bytes_pinned;
146221 + u64 bytes_reserved;
146222 + u64 bytes_readonly;
146223 + int full;
146224 + int force_alloc;
146225 struct list_head list;
146226
146227 /* for block groups in our same type */
146228 @@ -705,7 +701,9 @@
146229 struct btrfs_transaction *running_transaction;
146230 wait_queue_head_t transaction_throttle;
146231 wait_queue_head_t transaction_wait;
146232 +
146233 wait_queue_head_t async_submit_wait;
146234 + wait_queue_head_t tree_log_wait;
146235
146236 struct btrfs_super_block super_copy;
146237 struct btrfs_super_block super_for_commit;
146238 @@ -713,6 +711,7 @@
146239 struct super_block *sb;
146240 struct inode *btree_inode;
146241 struct backing_dev_info bdi;
146242 + spinlock_t hash_lock;
146243 struct mutex trans_mutex;
146244 struct mutex tree_log_mutex;
146245 struct mutex transaction_kthread_mutex;
146246 @@ -731,6 +730,10 @@
146247 atomic_t async_submit_draining;
146248 atomic_t nr_async_bios;
146249 atomic_t async_delalloc_pages;
146250 + atomic_t tree_log_writers;
146251 + atomic_t tree_log_commit;
146252 + unsigned long tree_log_batch;
146253 + u64 tree_log_transid;
146254
146255 /*
146256 * this is used by the balancing code to wait for all the pending
146257 @@ -784,14 +787,7 @@
146258 struct list_head dirty_cowonly_roots;
146259
146260 struct btrfs_fs_devices *fs_devices;
146261 -
146262 - /*
146263 - * the space_info list is almost entirely read only. It only changes
146264 - * when we add a new raid type to the FS, and that happens
146265 - * very rarely. RCU is used to protect it.
146266 - */
146267 struct list_head space_info;
146268 -
146269 spinlock_t delalloc_lock;
146270 spinlock_t new_trans_lock;
146271 u64 delalloc_bytes;
146272 @@ -837,14 +833,7 @@
146273 struct kobject root_kobj;
146274 struct completion kobj_unregister;
146275 struct mutex objectid_mutex;
146276 -
146277 struct mutex log_mutex;
146278 - wait_queue_head_t log_writer_wait;
146279 - wait_queue_head_t log_commit_wait[2];
146280 - atomic_t log_writers;
146281 - atomic_t log_commit[2];
146282 - unsigned long log_transid;
146283 - unsigned long log_batch;
146284
146285 u64 objectid;
146286 u64 last_trans;
146287 @@ -1732,8 +1721,7 @@
146288 u64 empty_size);
146289 struct extent_buffer *btrfs_init_new_buffer(struct btrfs_trans_handle *trans,
146290 struct btrfs_root *root,
146291 - u64 bytenr, u32 blocksize,
146292 - int level);
146293 + u64 bytenr, u32 blocksize);
146294 int btrfs_alloc_extent(struct btrfs_trans_handle *trans,
146295 struct btrfs_root *root,
146296 u64 num_bytes, u64 parent, u64 min_bytes,
146297 @@ -1803,18 +1791,6 @@
146298 int btrfs_cleanup_reloc_trees(struct btrfs_root *root);
146299 int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len);
146300 u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags);
146301 -void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *ionde);
146302 -void btrfs_clear_space_info_full(struct btrfs_fs_info *info);
146303 -
146304 -int btrfs_check_metadata_free_space(struct btrfs_root *root);
146305 -int btrfs_check_data_free_space(struct btrfs_root *root, struct inode *inode,
146306 - u64 bytes);
146307 -void btrfs_free_reserved_data_space(struct btrfs_root *root,
146308 - struct inode *inode, u64 bytes);
146309 -void btrfs_delalloc_reserve_space(struct btrfs_root *root, struct inode *inode,
146310 - u64 bytes);
146311 -void btrfs_delalloc_free_space(struct btrfs_root *root, struct inode *inode,
146312 - u64 bytes);
146313 /* ctree.c */
146314 int btrfs_previous_item(struct btrfs_root *root,
146315 struct btrfs_path *path, u64 min_objectid,
146316 @@ -1864,9 +1840,7 @@
146317 void btrfs_release_path(struct btrfs_root *root, struct btrfs_path *p);
146318 struct btrfs_path *btrfs_alloc_path(void);
146319 void btrfs_free_path(struct btrfs_path *p);
146320 -void btrfs_set_path_blocking(struct btrfs_path *p);
146321 -void btrfs_unlock_up_safe(struct btrfs_path *p, int level);
146322 -
146323 +void btrfs_init_path(struct btrfs_path *p);
146324 int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
146325 struct btrfs_path *path, int slot, int nr);
146326 int btrfs_del_leaf(struct btrfs_trans_handle *trans,
146327 @@ -2060,6 +2034,8 @@
146328 unsigned long btrfs_force_ra(struct address_space *mapping,
146329 struct file_ra_state *ra, struct file *file,
146330 pgoff_t offset, pgoff_t last_index);
146331 +int btrfs_check_free_space(struct btrfs_root *root, u64 num_required,
146332 + int for_del);
146333 int btrfs_page_mkwrite(struct vm_area_struct *vma, struct page *page);
146334 int btrfs_readpage(struct file *file, struct page *page);
146335 void btrfs_delete_inode(struct inode *inode);
146336 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/disk-io.c linux-2.6.29-rc3.owrt/fs/btrfs/disk-io.c
146337 --- linux-2.6.29.owrt/fs/btrfs/disk-io.c 2009-05-10 22:04:39.000000000 +0200
146338 +++ linux-2.6.29-rc3.owrt/fs/btrfs/disk-io.c 2009-05-10 23:48:29.000000000 +0200
146339 @@ -16,6 +16,7 @@
146340 * Boston, MA 021110-1307, USA.
146341 */
146342
146343 +#include <linux/version.h>
146344 #include <linux/fs.h>
146345 #include <linux/blkdev.h>
146346 #include <linux/scatterlist.h>
146347 @@ -75,40 +76,6 @@
146348 struct btrfs_work work;
146349 };
146350
146351 -/* These are used to set the lockdep class on the extent buffer locks.
146352 - * The class is set by the readpage_end_io_hook after the buffer has
146353 - * passed csum validation but before the pages are unlocked.
146354 - *
146355 - * The lockdep class is also set by btrfs_init_new_buffer on freshly
146356 - * allocated blocks.
146357 - *
146358 - * The class is based on the level in the tree block, which allows lockdep
146359 - * to know that lower nodes nest inside the locks of higher nodes.
146360 - *
146361 - * We also add a check to make sure the highest level of the tree is
146362 - * the same as our lockdep setup here. If BTRFS_MAX_LEVEL changes, this
146363 - * code needs update as well.
146364 - */
146365 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
146366 -# if BTRFS_MAX_LEVEL != 8
146367 -# error
146368 -# endif
146369 -static struct lock_class_key btrfs_eb_class[BTRFS_MAX_LEVEL + 1];
146370 -static const char *btrfs_eb_name[BTRFS_MAX_LEVEL + 1] = {
146371 - /* leaf */
146372 - "btrfs-extent-00",
146373 - "btrfs-extent-01",
146374 - "btrfs-extent-02",
146375 - "btrfs-extent-03",
146376 - "btrfs-extent-04",
146377 - "btrfs-extent-05",
146378 - "btrfs-extent-06",
146379 - "btrfs-extent-07",
146380 - /* highest possible level */
146381 - "btrfs-extent-08",
146382 -};
146383 -#endif
146384 -
146385 /*
146386 * extents on the btree inode are pretty simple, there's one extent
146387 * that covers the entire device
146388 @@ -381,15 +348,6 @@
146389 return ret;
146390 }
146391
146392 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
146393 -void btrfs_set_buffer_lockdep_class(struct extent_buffer *eb, int level)
146394 -{
146395 - lockdep_set_class_and_name(&eb->lock,
146396 - &btrfs_eb_class[level],
146397 - btrfs_eb_name[level]);
146398 -}
146399 -#endif
146400 -
146401 static int btree_readpage_end_io_hook(struct page *page, u64 start, u64 end,
146402 struct extent_state *state)
146403 {
146404 @@ -435,8 +393,6 @@
146405 }
146406 found_level = btrfs_header_level(eb);
146407
146408 - btrfs_set_buffer_lockdep_class(eb, found_level);
146409 -
146410 ret = csum_tree_block(root, eb, 1);
146411 if (ret)
146412 ret = -EIO;
146413 @@ -844,7 +800,7 @@
146414 ret = btree_read_extent_buffer_pages(root, buf, 0, parent_transid);
146415
146416 if (ret == 0)
146417 - set_bit(EXTENT_BUFFER_UPTODATE, &buf->bflags);
146418 + buf->flags |= EXTENT_UPTODATE;
146419 else
146420 WARN_ON(1);
146421 return buf;
146422 @@ -857,11 +813,7 @@
146423 struct inode *btree_inode = root->fs_info->btree_inode;
146424 if (btrfs_header_generation(buf) ==
146425 root->fs_info->running_transaction->transid) {
146426 - btrfs_assert_tree_locked(buf);
146427 -
146428 - /* ugh, clear_extent_buffer_dirty can be expensive */
146429 - btrfs_set_lock_blocking(buf);
146430 -
146431 + WARN_ON(!btrfs_tree_locked(buf));
146432 clear_extent_buffer_dirty(&BTRFS_I(btree_inode)->io_tree,
146433 buf);
146434 }
146435 @@ -898,14 +850,6 @@
146436 spin_lock_init(&root->list_lock);
146437 mutex_init(&root->objectid_mutex);
146438 mutex_init(&root->log_mutex);
146439 - init_waitqueue_head(&root->log_writer_wait);
146440 - init_waitqueue_head(&root->log_commit_wait[0]);
146441 - init_waitqueue_head(&root->log_commit_wait[1]);
146442 - atomic_set(&root->log_commit[0], 0);
146443 - atomic_set(&root->log_commit[1], 0);
146444 - atomic_set(&root->log_writers, 0);
146445 - root->log_batch = 0;
146446 - root->log_transid = 0;
146447 extent_io_tree_init(&root->dirty_log_pages,
146448 fs_info->btree_inode->i_mapping, GFP_NOFS);
146449
146450 @@ -990,16 +934,15 @@
146451 return 0;
146452 }
146453
146454 -static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans,
146455 - struct btrfs_fs_info *fs_info)
146456 +int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans,
146457 + struct btrfs_fs_info *fs_info)
146458 {
146459 struct btrfs_root *root;
146460 struct btrfs_root *tree_root = fs_info->tree_root;
146461 - struct extent_buffer *leaf;
146462
146463 root = kzalloc(sizeof(*root), GFP_NOFS);
146464 if (!root)
146465 - return ERR_PTR(-ENOMEM);
146466 + return -ENOMEM;
146467
146468 __setup_root(tree_root->nodesize, tree_root->leafsize,
146469 tree_root->sectorsize, tree_root->stripesize,
146470 @@ -1008,23 +951,12 @@
146471 root->root_key.objectid = BTRFS_TREE_LOG_OBJECTID;
146472 root->root_key.type = BTRFS_ROOT_ITEM_KEY;
146473 root->root_key.offset = BTRFS_TREE_LOG_OBJECTID;
146474 - /*
146475 - * log trees do not get reference counted because they go away
146476 - * before a real commit is actually done. They do store pointers
146477 - * to file data extents, and those reference counts still get
146478 - * updated (along with back refs to the log tree).
146479 - */
146480 root->ref_cows = 0;
146481
146482 - leaf = btrfs_alloc_free_block(trans, root, root->leafsize,
146483 - 0, BTRFS_TREE_LOG_OBJECTID,
146484 - trans->transid, 0, 0, 0);
146485 - if (IS_ERR(leaf)) {
146486 - kfree(root);
146487 - return ERR_CAST(leaf);
146488 - }
146489 + root->node = btrfs_alloc_free_block(trans, root, root->leafsize,
146490 + 0, BTRFS_TREE_LOG_OBJECTID,
146491 + trans->transid, 0, 0, 0);
146492
146493 - root->node = leaf;
146494 btrfs_set_header_nritems(root->node, 0);
146495 btrfs_set_header_level(root->node, 0);
146496 btrfs_set_header_bytenr(root->node, root->node->start);
146497 @@ -1036,48 +968,7 @@
146498 BTRFS_FSID_SIZE);
146499 btrfs_mark_buffer_dirty(root->node);
146500 btrfs_tree_unlock(root->node);
146501 - return root;
146502 -}
146503 -
146504 -int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans,
146505 - struct btrfs_fs_info *fs_info)
146506 -{
146507 - struct btrfs_root *log_root;
146508 -
146509 - log_root = alloc_log_tree(trans, fs_info);
146510 - if (IS_ERR(log_root))
146511 - return PTR_ERR(log_root);
146512 - WARN_ON(fs_info->log_root_tree);
146513 - fs_info->log_root_tree = log_root;
146514 - return 0;
146515 -}
146516 -
146517 -int btrfs_add_log_tree(struct btrfs_trans_handle *trans,
146518 - struct btrfs_root *root)
146519 -{
146520 - struct btrfs_root *log_root;
146521 - struct btrfs_inode_item *inode_item;
146522 -
146523 - log_root = alloc_log_tree(trans, root->fs_info);
146524 - if (IS_ERR(log_root))
146525 - return PTR_ERR(log_root);
146526 -
146527 - log_root->last_trans = trans->transid;
146528 - log_root->root_key.offset = root->root_key.objectid;
146529 -
146530 - inode_item = &log_root->root_item.inode;
146531 - inode_item->generation = cpu_to_le64(1);
146532 - inode_item->size = cpu_to_le64(3);
146533 - inode_item->nlink = cpu_to_le32(1);
146534 - inode_item->nbytes = cpu_to_le64(root->leafsize);
146535 - inode_item->mode = cpu_to_le32(S_IFDIR | 0755);
146536 -
146537 - btrfs_set_root_bytenr(&log_root->root_item, log_root->node->start);
146538 - btrfs_set_root_generation(&log_root->root_item, trans->transid);
146539 -
146540 - WARN_ON(root->log_root);
146541 - root->log_root = log_root;
146542 - root->log_transid = 0;
146543 + fs_info->log_root_tree = root;
146544 return 0;
146545 }
146546
146547 @@ -1245,6 +1136,7 @@
146548 {
146549 struct btrfs_fs_info *info = (struct btrfs_fs_info *)congested_data;
146550 int ret = 0;
146551 + struct list_head *cur;
146552 struct btrfs_device *device;
146553 struct backing_dev_info *bdi;
146554 #if 0
146555 @@ -1252,7 +1144,8 @@
146556 btrfs_congested_async(info, 0))
146557 return 1;
146558 #endif
146559 - list_for_each_entry(device, &info->fs_devices->devices, dev_list) {
146560 + list_for_each(cur, &info->fs_devices->devices) {
146561 + device = list_entry(cur, struct btrfs_device, dev_list);
146562 if (!device->bdev)
146563 continue;
146564 bdi = blk_get_backing_dev_info(device->bdev);
146565 @@ -1270,11 +1163,13 @@
146566 */
146567 static void __unplug_io_fn(struct backing_dev_info *bdi, struct page *page)
146568 {
146569 + struct list_head *cur;
146570 struct btrfs_device *device;
146571 struct btrfs_fs_info *info;
146572
146573 info = (struct btrfs_fs_info *)bdi->unplug_io_data;
146574 - list_for_each_entry(device, &info->fs_devices->devices, dev_list) {
146575 + list_for_each(cur, &info->fs_devices->devices) {
146576 + device = list_entry(cur, struct btrfs_device, dev_list);
146577 if (!device->bdev)
146578 continue;
146579
146580 @@ -1552,6 +1447,7 @@
146581 INIT_LIST_HEAD(&fs_info->dead_roots);
146582 INIT_LIST_HEAD(&fs_info->hashers);
146583 INIT_LIST_HEAD(&fs_info->delalloc_inodes);
146584 + spin_lock_init(&fs_info->hash_lock);
146585 spin_lock_init(&fs_info->delalloc_lock);
146586 spin_lock_init(&fs_info->new_trans_lock);
146587 spin_lock_init(&fs_info->ref_cache_lock);
146588 @@ -1639,6 +1535,10 @@
146589 init_waitqueue_head(&fs_info->transaction_throttle);
146590 init_waitqueue_head(&fs_info->transaction_wait);
146591 init_waitqueue_head(&fs_info->async_submit_wait);
146592 + init_waitqueue_head(&fs_info->tree_log_wait);
146593 + atomic_set(&fs_info->tree_log_commit, 0);
146594 + atomic_set(&fs_info->tree_log_writers, 0);
146595 + fs_info->tree_log_transid = 0;
146596
146597 __setup_root(4096, 4096, 4096, 4096, tree_root,
146598 fs_info, BTRFS_ROOT_TREE_OBJECTID);
146599 @@ -1727,8 +1627,6 @@
146600 * low idle thresh
146601 */
146602 fs_info->endio_workers.idle_thresh = 4;
146603 - fs_info->endio_meta_workers.idle_thresh = 4;
146604 -
146605 fs_info->endio_write_workers.idle_thresh = 64;
146606 fs_info->endio_meta_write_workers.idle_thresh = 64;
146607
146608 @@ -1822,6 +1720,7 @@
146609 ret = find_and_setup_root(tree_root, fs_info,
146610 BTRFS_DEV_TREE_OBJECTID, dev_root);
146611 dev_root->track_dirty = 1;
146612 +
146613 if (ret)
146614 goto fail_extent_root;
146615
146616 @@ -1841,13 +1740,13 @@
146617 fs_info->system_alloc_profile = fs_info->metadata_alloc_profile;
146618 fs_info->cleaner_kthread = kthread_run(cleaner_kthread, tree_root,
146619 "btrfs-cleaner");
146620 - if (IS_ERR(fs_info->cleaner_kthread))
146621 + if (!fs_info->cleaner_kthread)
146622 goto fail_csum_root;
146623
146624 fs_info->transaction_kthread = kthread_run(transaction_kthread,
146625 tree_root,
146626 "btrfs-transaction");
146627 - if (IS_ERR(fs_info->transaction_kthread))
146628 + if (!fs_info->transaction_kthread)
146629 goto fail_cleaner;
146630
146631 if (btrfs_super_log_root(disk_super) != 0) {
146632 @@ -1929,14 +1828,13 @@
146633 fail_iput:
146634 invalidate_inode_pages2(fs_info->btree_inode->i_mapping);
146635 iput(fs_info->btree_inode);
146636 -
146637 +fail:
146638 btrfs_close_devices(fs_info->fs_devices);
146639 btrfs_mapping_tree_free(&fs_info->mapping_tree);
146640 - bdi_destroy(&fs_info->bdi);
146641
146642 -fail:
146643 kfree(extent_root);
146644 kfree(tree_root);
146645 + bdi_destroy(&fs_info->bdi);
146646 kfree(fs_info);
146647 kfree(chunk_root);
146648 kfree(dev_root);
146649 @@ -2097,6 +1995,7 @@
146650
146651 int write_all_supers(struct btrfs_root *root, int max_mirrors)
146652 {
146653 + struct list_head *cur;
146654 struct list_head *head = &root->fs_info->fs_devices->devices;
146655 struct btrfs_device *dev;
146656 struct btrfs_super_block *sb;
146657 @@ -2112,7 +2011,8 @@
146658
146659 sb = &root->fs_info->super_for_commit;
146660 dev_item = &sb->dev_item;
146661 - list_for_each_entry(dev, head, dev_list) {
146662 + list_for_each(cur, head) {
146663 + dev = list_entry(cur, struct btrfs_device, dev_list);
146664 if (!dev->bdev) {
146665 total_errors++;
146666 continue;
146667 @@ -2145,7 +2045,8 @@
146668 }
146669
146670 total_errors = 0;
146671 - list_for_each_entry(dev, head, dev_list) {
146672 + list_for_each(cur, head) {
146673 + dev = list_entry(cur, struct btrfs_device, dev_list);
146674 if (!dev->bdev)
146675 continue;
146676 if (!dev->in_fs_metadata || !dev->writeable)
146677 @@ -2359,9 +2260,7 @@
146678 u64 transid = btrfs_header_generation(buf);
146679 struct inode *btree_inode = root->fs_info->btree_inode;
146680
146681 - btrfs_set_lock_blocking(buf);
146682 -
146683 - btrfs_assert_tree_locked(buf);
146684 + WARN_ON(!btrfs_tree_locked(buf));
146685 if (transid != root->fs_info->generation) {
146686 printk(KERN_CRIT "btrfs transid mismatch buffer %llu, "
146687 "found %llu running %llu\n",
146688 @@ -2403,13 +2302,14 @@
146689 int ret;
146690 ret = btree_read_extent_buffer_pages(root, buf, 0, parent_transid);
146691 if (ret == 0)
146692 - set_bit(EXTENT_BUFFER_UPTODATE, &buf->bflags);
146693 + buf->flags |= EXTENT_UPTODATE;
146694 return ret;
146695 }
146696
146697 int btree_lock_page_hook(struct page *page)
146698 {
146699 struct inode *inode = page->mapping->host;
146700 + struct btrfs_root *root = BTRFS_I(inode)->root;
146701 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
146702 struct extent_buffer *eb;
146703 unsigned long len;
146704 @@ -2424,7 +2324,9 @@
146705 goto out;
146706
146707 btrfs_tree_lock(eb);
146708 + spin_lock(&root->fs_info->hash_lock);
146709 btrfs_set_header_flag(eb, BTRFS_HEADER_FLAG_WRITTEN);
146710 + spin_unlock(&root->fs_info->hash_lock);
146711 btrfs_tree_unlock(eb);
146712 free_extent_buffer(eb);
146713 out:
146714 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/disk-io.h linux-2.6.29-rc3.owrt/fs/btrfs/disk-io.h
146715 --- linux-2.6.29.owrt/fs/btrfs/disk-io.h 2009-05-10 22:04:39.000000000 +0200
146716 +++ linux-2.6.29-rc3.owrt/fs/btrfs/disk-io.h 2009-05-10 23:48:29.000000000 +0200
146717 @@ -98,17 +98,5 @@
146718 struct btrfs_fs_info *fs_info);
146719 int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans,
146720 struct btrfs_fs_info *fs_info);
146721 -int btrfs_add_log_tree(struct btrfs_trans_handle *trans,
146722 - struct btrfs_root *root);
146723 int btree_lock_page_hook(struct page *page);
146724 -
146725 -
146726 -#ifdef CONFIG_DEBUG_LOCK_ALLOC
146727 -void btrfs_set_buffer_lockdep_class(struct extent_buffer *eb, int level);
146728 -#else
146729 -static inline void btrfs_set_buffer_lockdep_class(struct extent_buffer *eb,
146730 - int level)
146731 -{
146732 -}
146733 -#endif
146734 #endif
146735 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/extent_io.c linux-2.6.29-rc3.owrt/fs/btrfs/extent_io.c
146736 --- linux-2.6.29.owrt/fs/btrfs/extent_io.c 2009-05-10 22:04:39.000000000 +0200
146737 +++ linux-2.6.29-rc3.owrt/fs/btrfs/extent_io.c 2009-05-10 23:48:29.000000000 +0200
146738 @@ -9,6 +9,7 @@
146739 #include <linux/spinlock.h>
146740 #include <linux/blkdev.h>
146741 #include <linux/swap.h>
146742 +#include <linux/version.h>
146743 #include <linux/writeback.h>
146744 #include <linux/pagevec.h>
146745 #include "extent_io.h"
146746 @@ -30,7 +31,7 @@
146747 static LIST_HEAD(states);
146748
146749 #define LEAK_DEBUG 0
146750 -#if LEAK_DEBUG
146751 +#ifdef LEAK_DEBUG
146752 static DEFINE_SPINLOCK(leak_lock);
146753 #endif
146754
146755 @@ -119,7 +120,7 @@
146756 static struct extent_state *alloc_extent_state(gfp_t mask)
146757 {
146758 struct extent_state *state;
146759 -#if LEAK_DEBUG
146760 +#ifdef LEAK_DEBUG
146761 unsigned long flags;
146762 #endif
146763
146764 @@ -129,7 +130,7 @@
146765 state->state = 0;
146766 state->private = 0;
146767 state->tree = NULL;
146768 -#if LEAK_DEBUG
146769 +#ifdef LEAK_DEBUG
146770 spin_lock_irqsave(&leak_lock, flags);
146771 list_add(&state->leak_list, &states);
146772 spin_unlock_irqrestore(&leak_lock, flags);
146773 @@ -144,11 +145,11 @@
146774 if (!state)
146775 return;
146776 if (atomic_dec_and_test(&state->refs)) {
146777 -#if LEAK_DEBUG
146778 +#ifdef LEAK_DEBUG
146779 unsigned long flags;
146780 #endif
146781 WARN_ON(state->tree);
146782 -#if LEAK_DEBUG
146783 +#ifdef LEAK_DEBUG
146784 spin_lock_irqsave(&leak_lock, flags);
146785 list_del(&state->leak_list);
146786 spin_unlock_irqrestore(&leak_lock, flags);
146787 @@ -415,6 +416,8 @@
146788
146789 node = tree_insert(&tree->state, prealloc->end, &prealloc->rb_node);
146790 if (node) {
146791 + struct extent_state *found;
146792 + found = rb_entry(node, struct extent_state, rb_node);
146793 free_extent_state(prealloc);
146794 return -EEXIST;
146795 }
146796 @@ -2375,6 +2378,11 @@
146797 int scanned = 0;
146798 int range_whole = 0;
146799
146800 + if (wbc->nonblocking && bdi_write_congested(bdi)) {
146801 + wbc->encountered_congestion = 1;
146802 + return 0;
146803 + }
146804 +
146805 pagevec_init(&pvec, 0);
146806 if (wbc->range_cyclic) {
146807 index = mapping->writeback_index; /* Start from prev offset */
146808 @@ -2847,98 +2855,6 @@
146809 return sector;
146810 }
146811
146812 -int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
146813 - __u64 start, __u64 len, get_extent_t *get_extent)
146814 -{
146815 - int ret;
146816 - u64 off = start;
146817 - u64 max = start + len;
146818 - u32 flags = 0;
146819 - u64 disko = 0;
146820 - struct extent_map *em = NULL;
146821 - int end = 0;
146822 - u64 em_start = 0, em_len = 0;
146823 - unsigned long emflags;
146824 - ret = 0;
146825 -
146826 - if (len == 0)
146827 - return -EINVAL;
146828 -
146829 - lock_extent(&BTRFS_I(inode)->io_tree, start, start + len,
146830 - GFP_NOFS);
146831 - em = get_extent(inode, NULL, 0, off, max - off, 0);
146832 - if (!em)
146833 - goto out;
146834 - if (IS_ERR(em)) {
146835 - ret = PTR_ERR(em);
146836 - goto out;
146837 - }
146838 - while (!end) {
146839 - off = em->start + em->len;
146840 - if (off >= max)
146841 - end = 1;
146842 -
146843 - em_start = em->start;
146844 - em_len = em->len;
146845 -
146846 - disko = 0;
146847 - flags = 0;
146848 -
146849 - switch (em->block_start) {
146850 - case EXTENT_MAP_LAST_BYTE:
146851 - end = 1;
146852 - flags |= FIEMAP_EXTENT_LAST;
146853 - break;
146854 - case EXTENT_MAP_HOLE:
146855 - flags |= FIEMAP_EXTENT_UNWRITTEN;
146856 - break;
146857 - case EXTENT_MAP_INLINE:
146858 - flags |= (FIEMAP_EXTENT_DATA_INLINE |
146859 - FIEMAP_EXTENT_NOT_ALIGNED);
146860 - break;
146861 - case EXTENT_MAP_DELALLOC:
146862 - flags |= (FIEMAP_EXTENT_DELALLOC |
146863 - FIEMAP_EXTENT_UNKNOWN);
146864 - break;
146865 - default:
146866 - disko = em->block_start;
146867 - break;
146868 - }
146869 - if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags))
146870 - flags |= FIEMAP_EXTENT_ENCODED;
146871 -
146872 - emflags = em->flags;
146873 - free_extent_map(em);
146874 - em = NULL;
146875 -
146876 - if (!end) {
146877 - em = get_extent(inode, NULL, 0, off, max - off, 0);
146878 - if (!em)
146879 - goto out;
146880 - if (IS_ERR(em)) {
146881 - ret = PTR_ERR(em);
146882 - goto out;
146883 - }
146884 - emflags = em->flags;
146885 - }
146886 - if (test_bit(EXTENT_FLAG_VACANCY, &emflags)) {
146887 - flags |= FIEMAP_EXTENT_LAST;
146888 - end = 1;
146889 - }
146890 -
146891 - ret = fiemap_fill_next_extent(fieinfo, em_start, disko,
146892 - em_len, flags);
146893 - if (ret)
146894 - goto out_free;
146895 - }
146896 -out_free:
146897 - free_extent_map(em);
146898 -out:
146899 - unlock_extent(&BTRFS_I(inode)->io_tree, start, start + len,
146900 - GFP_NOFS);
146901 - return ret;
146902 -}
146903 -
146904 static inline struct page *extent_buffer_page(struct extent_buffer *eb,
146905 unsigned long i)
146906 {
146907 @@ -2976,17 +2892,15 @@
146908 gfp_t mask)
146909 {
146910 struct extent_buffer *eb = NULL;
146911 -#if LEAK_DEBUG
146912 +#ifdef LEAK_DEBUG
146913 unsigned long flags;
146914 #endif
146915
146916 eb = kmem_cache_zalloc(extent_buffer_cache, mask);
146917 eb->start = start;
146918 eb->len = len;
146919 - spin_lock_init(&eb->lock);
146920 - init_waitqueue_head(&eb->lock_wq);
146921 -
146922 -#if LEAK_DEBUG
146923 + mutex_init(&eb->mutex);
146924 +#ifdef LEAK_DEBUG
146925 spin_lock_irqsave(&leak_lock, flags);
146926 list_add(&eb->leak_list, &buffers);
146927 spin_unlock_irqrestore(&leak_lock, flags);
146928 @@ -2998,7 +2912,7 @@
146929
146930 static void __free_extent_buffer(struct extent_buffer *eb)
146931 {
146932 -#if LEAK_DEBUG
146933 +#ifdef LEAK_DEBUG
146934 unsigned long flags;
146935 spin_lock_irqsave(&leak_lock, flags);
146936 list_del(&eb->leak_list);
146937 @@ -3066,7 +2980,8 @@
146938 unlock_page(p);
146939 }
146940 if (uptodate)
146941 - set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
146942 + eb->flags |= EXTENT_UPTODATE;
146943 + eb->flags |= EXTENT_BUFFER_FILLED;
146944
146945 spin_lock(&tree->buffer_lock);
146946 exists = buffer_tree_insert(tree, start, &eb->rb_node);
146947 @@ -3220,7 +3135,7 @@
146948 unsigned long num_pages;
146949
146950 num_pages = num_extent_pages(eb->start, eb->len);
146951 - clear_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
146952 + eb->flags &= ~EXTENT_UPTODATE;
146953
146954 clear_extent_uptodate(tree, eb->start, eb->start + eb->len - 1,
146955 GFP_NOFS);
146956 @@ -3291,7 +3206,7 @@
146957 struct page *page;
146958 int pg_uptodate = 1;
146959
146960 - if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))
146961 + if (eb->flags & EXTENT_UPTODATE)
146962 return 1;
146963
146964 ret = test_range_bit(tree, eb->start, eb->start + eb->len - 1,
146965 @@ -3327,7 +3242,7 @@
146966 struct bio *bio = NULL;
146967 unsigned long bio_flags = 0;
146968
146969 - if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags))
146970 + if (eb->flags & EXTENT_UPTODATE)
146971 return 0;
146972
146973 if (test_range_bit(tree, eb->start, eb->start + eb->len - 1,
146974 @@ -3358,7 +3273,7 @@
146975 }
146976 if (all_uptodate) {
146977 if (start_i == 0)
146978 - set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
146979 + eb->flags |= EXTENT_UPTODATE;
146980 goto unlock_exit;
146981 }
146982
146983 @@ -3394,7 +3309,7 @@
146984 }
146985
146986 if (!ret)
146987 - set_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags);
146988 + eb->flags |= EXTENT_UPTODATE;
146989 return ret;
146990
146991 unlock_exit:
146992 @@ -3491,6 +3406,7 @@
146993 unmap_extent_buffer(eb, eb->map_token, km);
146994 eb->map_token = NULL;
146995 save = 1;
146996 + WARN_ON(!mutex_is_locked(&eb->mutex));
146997 }
146998 err = map_private_extent_buffer(eb, start, min_len, token, map,
146999 map_start, map_len, km);
147000 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/extent_io.h linux-2.6.29-rc3.owrt/fs/btrfs/extent_io.h
147001 --- linux-2.6.29.owrt/fs/btrfs/extent_io.h 2009-05-10 22:04:39.000000000 +0200
147002 +++ linux-2.6.29-rc3.owrt/fs/btrfs/extent_io.h 2009-05-10 23:48:29.000000000 +0200
147003 @@ -22,10 +22,6 @@
147004 /* flags for bio submission */
147005 #define EXTENT_BIO_COMPRESSED 1
147006
147007 -/* these are bit numbers for test/set bit */
147008 -#define EXTENT_BUFFER_UPTODATE 0
147009 -#define EXTENT_BUFFER_BLOCKING 1
147010 -
147011 /*
147012 * page->private values. Every page that is controlled by the extent
147013 * map has page->private set to one.
147014 @@ -99,19 +95,11 @@
147015 unsigned long map_start;
147016 unsigned long map_len;
147017 struct page *first_page;
147018 - unsigned long bflags;
147019 atomic_t refs;
147020 + int flags;
147021 struct list_head leak_list;
147022 struct rb_node rb_node;
147023 -
147024 - /* the spinlock is used to protect most operations */
147025 - spinlock_t lock;
147026 -
147027 - /*
147028 - * when we keep the lock held while blocking, waiters go onto
147029 - * the wq
147030 - */
147031 - wait_queue_head_t lock_wq;
147032 + struct mutex mutex;
147033 };
147034
147035 struct extent_map_tree;
147036 @@ -205,8 +193,6 @@
147037 unsigned from, unsigned to);
147038 sector_t extent_bmap(struct address_space *mapping, sector_t iblock,
147039 get_extent_t *get_extent);
147040 -int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
147041 - __u64 start, __u64 len, get_extent_t *get_extent);
147042 int set_range_dirty(struct extent_io_tree *tree, u64 start, u64 end);
147043 int set_state_private(struct extent_io_tree *tree, u64 start, u64 private);
147044 int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private);
147045 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/extent_map.c linux-2.6.29-rc3.owrt/fs/btrfs/extent_map.c
147046 --- linux-2.6.29.owrt/fs/btrfs/extent_map.c 2009-05-10 22:04:39.000000000 +0200
147047 +++ linux-2.6.29-rc3.owrt/fs/btrfs/extent_map.c 2009-05-10 23:48:29.000000000 +0200
147048 @@ -3,6 +3,7 @@
147049 #include <linux/slab.h>
147050 #include <linux/module.h>
147051 #include <linux/spinlock.h>
147052 +#include <linux/version.h>
147053 #include <linux/hardirq.h>
147054 #include "extent_map.h"
147055
147056 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/extent-tree.c linux-2.6.29-rc3.owrt/fs/btrfs/extent-tree.c
147057 --- linux-2.6.29.owrt/fs/btrfs/extent-tree.c 2009-05-10 22:04:39.000000000 +0200
147058 +++ linux-2.6.29-rc3.owrt/fs/btrfs/extent-tree.c 2009-05-10 23:48:29.000000000 +0200
147059 @@ -19,8 +19,7 @@
147060 #include <linux/pagemap.h>
147061 #include <linux/writeback.h>
147062 #include <linux/blkdev.h>
147063 -#include <linux/sort.h>
147064 -#include <linux/rcupdate.h>
147065 +#include <linux/version.h>
147066 #include "compat.h"
147067 #include "hash.h"
147068 #include "crc32c.h"
147069 @@ -31,6 +30,7 @@
147070 #include "volumes.h"
147071 #include "locking.h"
147072 #include "ref-cache.h"
147073 +#include "compat.h"
147074
147075 #define PENDING_EXTENT_INSERT 0
147076 #define PENDING_EXTENT_DELETE 1
147077 @@ -61,10 +61,6 @@
147078 u64 bytenr, u64 num_bytes, int alloc,
147079 int mark_free);
147080
147081 -static int do_chunk_alloc(struct btrfs_trans_handle *trans,
147082 - struct btrfs_root *extent_root, u64 alloc_bytes,
147083 - u64 flags, int force);
147084 -
147085 static int block_group_bits(struct btrfs_block_group_cache *cache, u64 bits)
147086 {
147087 return (cache->flags & bits) == bits;
147088 @@ -330,34 +326,16 @@
147089 u64 flags)
147090 {
147091 struct list_head *head = &info->space_info;
147092 + struct list_head *cur;
147093 struct btrfs_space_info *found;
147094 -
147095 - rcu_read_lock();
147096 - list_for_each_entry_rcu(found, head, list) {
147097 - if (found->flags == flags) {
147098 - rcu_read_unlock();
147099 + list_for_each(cur, head) {
147100 + found = list_entry(cur, struct btrfs_space_info, list);
147101 + if (found->flags == flags)
147102 return found;
147103 - }
147104 }
147105 - rcu_read_unlock();
147106 return NULL;
147107 }
147108
147109 -/*
147110 - * after adding space to the filesystem, we need to clear the full flags
147111 - * on all the space infos.
147112 - */
147113 -void btrfs_clear_space_info_full(struct btrfs_fs_info *info)
147114 -{
147115 - struct list_head *head = &info->space_info;
147116 - struct btrfs_space_info *found;
147117 -
147118 - rcu_read_lock();
147119 - list_for_each_entry_rcu(found, head, list)
147120 - found->full = 0;
147121 - rcu_read_unlock();
147122 -}
147123 -
147124 static u64 div_factor(u64 num, int factor)
147125 {
147126 if (factor == 10)
147127 @@ -1348,25 +1326,8 @@
147128 int btrfs_extent_post_op(struct btrfs_trans_handle *trans,
147129 struct btrfs_root *root)
147130 {
147131 - u64 start;
147132 - u64 end;
147133 - int ret;
147134 -
147135 - while(1) {
147136 - finish_current_insert(trans, root->fs_info->extent_root, 1);
147137 - del_pending_extents(trans, root->fs_info->extent_root, 1);
147138 -
147139 - /* is there more work to do? */
147140 - ret = find_first_extent_bit(&root->fs_info->pending_del,
147141 - 0, &start, &end, EXTENT_WRITEBACK);
147142 - if (!ret)
147143 - continue;
147144 - ret = find_first_extent_bit(&root->fs_info->extent_ins,
147145 - 0, &start, &end, EXTENT_WRITEBACK);
147146 - if (!ret)
147147 - continue;
147148 - break;
147149 - }
147150 + finish_current_insert(trans, root->fs_info->extent_root, 1);
147151 + del_pending_extents(trans, root->fs_info->extent_root, 1);
147152 return 0;
147153 }
147154
147155 @@ -1564,55 +1525,15 @@
147156 return ret;
147157 }
147158
147159 -/* when a block goes through cow, we update the reference counts of
147160 - * everything that block points to. The internal pointers of the block
147161 - * can be in just about any order, and it is likely to have clusters of
147162 - * things that are close together and clusters of things that are not.
147163 - *
147164 - * To help reduce the seeks that come with updating all of these reference
147165 - * counts, sort them by byte number before actual updates are done.
147166 - *
147167 - * struct refsort is used to match byte number to slot in the btree block.
147168 - * we sort based on the byte number and then use the slot to actually
147169 - * find the item.
147170 - *
147171 - * struct refsort is smaller than strcut btrfs_item and smaller than
147172 - * struct btrfs_key_ptr. Since we're currently limited to the page size
147173 - * for a btree block, there's no way for a kmalloc of refsorts for a
147174 - * single node to be bigger than a page.
147175 - */
147176 -struct refsort {
147177 - u64 bytenr;
147178 - u32 slot;
147179 -};
147180 -
147181 -/*
147182 - * for passing into sort()
147183 - */
147184 -static int refsort_cmp(const void *a_void, const void *b_void)
147185 -{
147186 - const struct refsort *a = a_void;
147187 - const struct refsort *b = b_void;
147188 -
147189 - if (a->bytenr < b->bytenr)
147190 - return -1;
147191 - if (a->bytenr > b->bytenr)
147192 - return 1;
147193 - return 0;
147194 -}
147195 -
147196 -
147197 -noinline int btrfs_inc_ref(struct btrfs_trans_handle *trans,
147198 - struct btrfs_root *root,
147199 - struct extent_buffer *orig_buf,
147200 - struct extent_buffer *buf, u32 *nr_extents)
147201 +int btrfs_inc_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
147202 + struct extent_buffer *orig_buf, struct extent_buffer *buf,
147203 + u32 *nr_extents)
147204 {
147205 u64 bytenr;
147206 u64 ref_root;
147207 u64 orig_root;
147208 u64 ref_generation;
147209 u64 orig_generation;
147210 - struct refsort *sorted;
147211 u32 nritems;
147212 u32 nr_file_extents = 0;
147213 struct btrfs_key key;
147214 @@ -1621,8 +1542,6 @@
147215 int level;
147216 int ret = 0;
147217 int faili = 0;
147218 - int refi = 0;
147219 - int slot;
147220 int (*process_func)(struct btrfs_trans_handle *, struct btrfs_root *,
147221 u64, u64, u64, u64, u64, u64, u64, u64);
147222
147223 @@ -1634,9 +1553,6 @@
147224 nritems = btrfs_header_nritems(buf);
147225 level = btrfs_header_level(buf);
147226
147227 - sorted = kmalloc(sizeof(struct refsort) * nritems, GFP_NOFS);
147228 - BUG_ON(!sorted);
147229 -
147230 if (root->ref_cows) {
147231 process_func = __btrfs_inc_extent_ref;
147232 } else {
147233 @@ -1649,11 +1565,6 @@
147234 process_func = __btrfs_update_extent_ref;
147235 }
147236
147237 - /*
147238 - * we make two passes through the items. In the first pass we
147239 - * only record the byte number and slot. Then we sort based on
147240 - * byte number and do the actual work based on the sorted results
147241 - */
147242 for (i = 0; i < nritems; i++) {
147243 cond_resched();
147244 if (level == 0) {
147245 @@ -1670,32 +1581,6 @@
147246 continue;
147247
147248 nr_file_extents++;
147249 - sorted[refi].bytenr = bytenr;
147250 - sorted[refi].slot = i;
147251 - refi++;
147252 - } else {
147253 - bytenr = btrfs_node_blockptr(buf, i);
147254 - sorted[refi].bytenr = bytenr;
147255 - sorted[refi].slot = i;
147256 - refi++;
147257 - }
147258 - }
147259 - /*
147260 - * if refi == 0, we didn't actually put anything into the sorted
147261 - * array and we're done
147262 - */
147263 - if (refi == 0)
147264 - goto out;
147265 -
147266 - sort(sorted, refi, sizeof(struct refsort), refsort_cmp, NULL);
147267 -
147268 - for (i = 0; i < refi; i++) {
147269 - cond_resched();
147270 - slot = sorted[i].slot;
147271 - bytenr = sorted[i].bytenr;
147272 -
147273 - if (level == 0) {
147274 - btrfs_item_key_to_cpu(buf, &key, slot);
147275
147276 ret = process_func(trans, root, bytenr,
147277 orig_buf->start, buf->start,
147278 @@ -1704,25 +1589,25 @@
147279 key.objectid);
147280
147281 if (ret) {
147282 - faili = slot;
147283 + faili = i;
147284 WARN_ON(1);
147285 goto fail;
147286 }
147287 } else {
147288 + bytenr = btrfs_node_blockptr(buf, i);
147289 ret = process_func(trans, root, bytenr,
147290 orig_buf->start, buf->start,
147291 orig_root, ref_root,
147292 orig_generation, ref_generation,
147293 level - 1);
147294 if (ret) {
147295 - faili = slot;
147296 + faili = i;
147297 WARN_ON(1);
147298 goto fail;
147299 }
147300 }
147301 }
147302 out:
147303 - kfree(sorted);
147304 if (nr_extents) {
147305 if (level == 0)
147306 *nr_extents = nr_file_extents;
147307 @@ -1731,7 +1616,6 @@
147308 }
147309 return 0;
147310 fail:
147311 - kfree(sorted);
147312 WARN_ON(1);
147313 return ret;
147314 }
147315 @@ -1924,6 +1808,7 @@
147316 if (!found)
147317 return -ENOMEM;
147318
147319 + list_add(&found->list, &info->space_info);
147320 INIT_LIST_HEAD(&found->block_groups);
147321 init_rwsem(&found->groups_sem);
147322 spin_lock_init(&found->lock);
147323 @@ -1933,11 +1818,9 @@
147324 found->bytes_pinned = 0;
147325 found->bytes_reserved = 0;
147326 found->bytes_readonly = 0;
147327 - found->bytes_delalloc = 0;
147328 found->full = 0;
147329 found->force_alloc = 0;
147330 *space_info = found;
147331 - list_add_rcu(&found->list, &info->space_info);
147332 return 0;
147333 }
147334
147335 @@ -1998,233 +1881,6 @@
147336 return flags;
147337 }
147338
147339 -static u64 btrfs_get_alloc_profile(struct btrfs_root *root, u64 data)
147340 -{
147341 - struct btrfs_fs_info *info = root->fs_info;
147342 - u64 alloc_profile;
147343 -
147344 - if (data) {
147345 - alloc_profile = info->avail_data_alloc_bits &
147346 - info->data_alloc_profile;
147347 - data = BTRFS_BLOCK_GROUP_DATA | alloc_profile;
147348 - } else if (root == root->fs_info->chunk_root) {
147349 - alloc_profile = info->avail_system_alloc_bits &
147350 - info->system_alloc_profile;
147351 - data = BTRFS_BLOCK_GROUP_SYSTEM | alloc_profile;
147352 - } else {
147353 - alloc_profile = info->avail_metadata_alloc_bits &
147354 - info->metadata_alloc_profile;
147355 - data = BTRFS_BLOCK_GROUP_METADATA | alloc_profile;
147356 - }
147357 -
147358 - return btrfs_reduce_alloc_profile(root, data);
147359 -}
147360 -
147361 -void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *inode)
147362 -{
147363 - u64 alloc_target;
147364 -
147365 - alloc_target = btrfs_get_alloc_profile(root, 1);
147366 - BTRFS_I(inode)->space_info = __find_space_info(root->fs_info,
147367 - alloc_target);
147368 -}
147369 -
147370 -/*
147371 - * for now this just makes sure we have at least 5% of our metadata space free
147372 - * for use.
147373 - */
147374 -int btrfs_check_metadata_free_space(struct btrfs_root *root)
147375 -{
147376 - struct btrfs_fs_info *info = root->fs_info;
147377 - struct btrfs_space_info *meta_sinfo;
147378 - u64 alloc_target, thresh;
147379 - int committed = 0, ret;
147380 -
147381 - /* get the space info for where the metadata will live */
147382 - alloc_target = btrfs_get_alloc_profile(root, 0);
147383 - meta_sinfo = __find_space_info(info, alloc_target);
147384 -
147385 -again:
147386 - spin_lock(&meta_sinfo->lock);
147387 - if (!meta_sinfo->full)
147388 - thresh = meta_sinfo->total_bytes * 80;
147389 - else
147390 - thresh = meta_sinfo->total_bytes * 95;
147391 -
147392 - do_div(thresh, 100);
147393 -
147394 - if (meta_sinfo->bytes_used + meta_sinfo->bytes_reserved +
147395 - meta_sinfo->bytes_pinned + meta_sinfo->bytes_readonly > thresh) {
147396 - struct btrfs_trans_handle *trans;
147397 - if (!meta_sinfo->full) {
147398 - meta_sinfo->force_alloc = 1;
147399 - spin_unlock(&meta_sinfo->lock);
147400 -
147401 - trans = btrfs_start_transaction(root, 1);
147402 - if (!trans)
147403 - return -ENOMEM;
147404 -
147405 - ret = do_chunk_alloc(trans, root->fs_info->extent_root,
147406 - 2 * 1024 * 1024, alloc_target, 0);
147407 - btrfs_end_transaction(trans, root);
147408 - goto again;
147409 - }
147410 - spin_unlock(&meta_sinfo->lock);
147411 -
147412 - if (!committed) {
147413 - committed = 1;
147414 - trans = btrfs_join_transaction(root, 1);
147415 - if (!trans)
147416 - return -ENOMEM;
147417 - ret = btrfs_commit_transaction(trans, root);
147418 - if (ret)
147419 - return ret;
147420 - goto again;
147421 - }
147422 - return -ENOSPC;
147423 - }
147424 - spin_unlock(&meta_sinfo->lock);
147425 -
147426 - return 0;
147427 -}
147428 -
147429 -/*
147430 - * This will check the space that the inode allocates from to make sure we have
147431 - * enough space for bytes.
147432 - */
147433 -int btrfs_check_data_free_space(struct btrfs_root *root, struct inode *inode,
147434 - u64 bytes)
147435 -{
147436 - struct btrfs_space_info *data_sinfo;
147437 - int ret = 0, committed = 0;
147438 -
147439 - /* make sure bytes are sectorsize aligned */
147440 - bytes = (bytes + root->sectorsize - 1) & ~((u64)root->sectorsize - 1);
147441 -
147442 - data_sinfo = BTRFS_I(inode)->space_info;
147443 -again:
147444 - /* make sure we have enough space to handle the data first */
147445 - spin_lock(&data_sinfo->lock);
147446 - if (data_sinfo->total_bytes - data_sinfo->bytes_used -
147447 - data_sinfo->bytes_delalloc - data_sinfo->bytes_reserved -
147448 - data_sinfo->bytes_pinned - data_sinfo->bytes_readonly -
147449 - data_sinfo->bytes_may_use < bytes) {
147450 - struct btrfs_trans_handle *trans;
147451 -
147452 - /*
147453 - * if we don't have enough free bytes in this space then we need
147454 - * to alloc a new chunk.
147455 - */
147456 - if (!data_sinfo->full) {
147457 - u64 alloc_target;
147458 -
147459 - data_sinfo->force_alloc = 1;
147460 - spin_unlock(&data_sinfo->lock);
147461 -
147462 - alloc_target = btrfs_get_alloc_profile(root, 1);
147463 - trans = btrfs_start_transaction(root, 1);
147464 - if (!trans)
147465 - return -ENOMEM;
147466 -
147467 - ret = do_chunk_alloc(trans, root->fs_info->extent_root,
147468 - bytes + 2 * 1024 * 1024,
147469 - alloc_target, 0);
147470 - btrfs_end_transaction(trans, root);
147471 - if (ret)
147472 - return ret;
147473 - goto again;
147474 - }
147475 - spin_unlock(&data_sinfo->lock);
147476 -
147477 - /* commit the current transaction and try again */
147478 - if (!committed) {
147479 - committed = 1;
147480 - trans = btrfs_join_transaction(root, 1);
147481 - if (!trans)
147482 - return -ENOMEM;
147483 - ret = btrfs_commit_transaction(trans, root);
147484 - if (ret)
147485 - return ret;
147486 - goto again;
147487 - }
147488 -
147489 - printk(KERN_ERR "no space left, need %llu, %llu delalloc bytes"
147490 - ", %llu bytes_used, %llu bytes_reserved, "
147491 - "%llu bytes_pinned, %llu bytes_readonly, %llu may use"
147492 - "%llu total\n", bytes, data_sinfo->bytes_delalloc,
147493 - data_sinfo->bytes_used, data_sinfo->bytes_reserved,
147494 - data_sinfo->bytes_pinned, data_sinfo->bytes_readonly,
147495 - data_sinfo->bytes_may_use, data_sinfo->total_bytes);
147496 - return -ENOSPC;
147497 - }
147498 - data_sinfo->bytes_may_use += bytes;
147499 - BTRFS_I(inode)->reserved_bytes += bytes;
147500 - spin_unlock(&data_sinfo->lock);
147501 -
147502 - return btrfs_check_metadata_free_space(root);
147503 -}
147504 -
147505 -/*
147506 - * if there was an error for whatever reason after calling
147507 - * btrfs_check_data_free_space, call this so we can cleanup the counters.
147508 - */
147509 -void btrfs_free_reserved_data_space(struct btrfs_root *root,
147510 - struct inode *inode, u64 bytes)
147511 -{
147512 - struct btrfs_space_info *data_sinfo;
147513 -
147514 - /* make sure bytes are sectorsize aligned */
147515 - bytes = (bytes + root->sectorsize - 1) & ~((u64)root->sectorsize - 1);
147516 -
147517 - data_sinfo = BTRFS_I(inode)->space_info;
147518 - spin_lock(&data_sinfo->lock);
147519 - data_sinfo->bytes_may_use -= bytes;
147520 - BTRFS_I(inode)->reserved_bytes -= bytes;
147521 - spin_unlock(&data_sinfo->lock);
147522 -}
147523 -
147524 -/* called when we are adding a delalloc extent to the inode's io_tree */
147525 -void btrfs_delalloc_reserve_space(struct btrfs_root *root, struct inode *inode,
147526 - u64 bytes)
147527 -{
147528 - struct btrfs_space_info *data_sinfo;
147529 -
147530 - /* get the space info for where this inode will be storing its data */
147531 - data_sinfo = BTRFS_I(inode)->space_info;
147532 -
147533 - /* make sure we have enough space to handle the data first */
147534 - spin_lock(&data_sinfo->lock);
147535 - data_sinfo->bytes_delalloc += bytes;
147536 -
147537 - /*
147538 - * we are adding a delalloc extent without calling
147539 - * btrfs_check_data_free_space first. This happens on a weird
147540 - * writepage condition, but shouldn't hurt our accounting
147541 - */
147542 - if (unlikely(bytes > BTRFS_I(inode)->reserved_bytes)) {
147543 - data_sinfo->bytes_may_use -= BTRFS_I(inode)->reserved_bytes;
147544 - BTRFS_I(inode)->reserved_bytes = 0;
147545 - } else {
147546 - data_sinfo->bytes_may_use -= bytes;
147547 - BTRFS_I(inode)->reserved_bytes -= bytes;
147548 - }
147549 -
147550 - spin_unlock(&data_sinfo->lock);
147551 -}
147552 -
147553 -/* called when we are clearing an delalloc extent from the inode's io_tree */
147554 -void btrfs_delalloc_free_space(struct btrfs_root *root, struct inode *inode,
147555 - u64 bytes)
147556 -{
147557 - struct btrfs_space_info *info;
147558 -
147559 - info = BTRFS_I(inode)->space_info;
147560 -
147561 - spin_lock(&info->lock);
147562 - info->bytes_delalloc -= bytes;
147563 - spin_unlock(&info->lock);
147564 -}
147565 -
147566 static int do_chunk_alloc(struct btrfs_trans_handle *trans,
147567 struct btrfs_root *extent_root, u64 alloc_bytes,
147568 u64 flags, int force)
147569 @@ -2481,12 +2137,13 @@
147570 u64 end;
147571 u64 priv;
147572 u64 search = 0;
147573 + u64 skipped = 0;
147574 struct btrfs_fs_info *info = extent_root->fs_info;
147575 struct btrfs_path *path;
147576 struct pending_extent_op *extent_op, *tmp;
147577 struct list_head insert_list, update_list;
147578 int ret;
147579 - int num_inserts = 0, max_inserts, restart = 0;
147580 + int num_inserts = 0, max_inserts;
147581
147582 path = btrfs_alloc_path();
147583 INIT_LIST_HEAD(&insert_list);
147584 @@ -2502,19 +2159,18 @@
147585 ret = find_first_extent_bit(&info->extent_ins, search, &start,
147586 &end, EXTENT_WRITEBACK);
147587 if (ret) {
147588 - if (restart && !num_inserts &&
147589 - list_empty(&update_list)) {
147590 - restart = 0;
147591 + if (skipped && all && !num_inserts) {
147592 + skipped = 0;
147593 search = 0;
147594 continue;
147595 }
147596 + mutex_unlock(&info->extent_ins_mutex);
147597 break;
147598 }
147599
147600 ret = try_lock_extent(&info->extent_ins, start, end, GFP_NOFS);
147601 if (!ret) {
147602 - if (all)
147603 - restart = 1;
147604 + skipped = 1;
147605 search = end + 1;
147606 if (need_resched()) {
147607 mutex_unlock(&info->extent_ins_mutex);
147608 @@ -2533,7 +2189,7 @@
147609 list_add_tail(&extent_op->list, &insert_list);
147610 search = end + 1;
147611 if (num_inserts == max_inserts) {
147612 - restart = 1;
147613 + mutex_unlock(&info->extent_ins_mutex);
147614 break;
147615 }
147616 } else if (extent_op->type == PENDING_BACKREF_UPDATE) {
147617 @@ -2549,6 +2205,7 @@
147618 * somebody marked this thing for deletion then just unlock it and be
147619 * done, the free_extents will handle it
147620 */
147621 + mutex_lock(&info->extent_ins_mutex);
147622 list_for_each_entry_safe(extent_op, tmp, &update_list, list) {
147623 clear_extent_bits(&info->extent_ins, extent_op->bytenr,
147624 extent_op->bytenr + extent_op->num_bytes - 1,
147625 @@ -2570,10 +2227,6 @@
147626 if (!list_empty(&update_list)) {
147627 ret = update_backrefs(trans, extent_root, path, &update_list);
147628 BUG_ON(ret);
147629 -
147630 - /* we may have COW'ed new blocks, so lets start over */
147631 - if (all)
147632 - restart = 1;
147633 }
147634
147635 /*
147636 @@ -2581,9 +2234,9 @@
147637 * need to make sure everything is cleaned then reset everything and
147638 * go back to the beginning
147639 */
147640 - if (!num_inserts && restart) {
147641 + if (!num_inserts && all && skipped) {
147642 search = 0;
147643 - restart = 0;
147644 + skipped = 0;
147645 INIT_LIST_HEAD(&update_list);
147646 INIT_LIST_HEAD(&insert_list);
147647 goto again;
147648 @@ -2640,19 +2293,27 @@
147649 BUG_ON(ret);
147650
147651 /*
147652 - * if restart is set for whatever reason we need to go back and start
147653 - * searching through the pending list again.
147654 - *
147655 - * We just inserted some extents, which could have resulted in new
147656 - * blocks being allocated, which would result in new blocks needing
147657 - * updates, so if all is set we _must_ restart to get the updated
147658 - * blocks.
147659 + * if we broke out of the loop in order to insert stuff because we hit
147660 + * the maximum number of inserts at a time we can handle, then loop
147661 + * back and pick up where we left off
147662 */
147663 - if (restart || all) {
147664 + if (num_inserts == max_inserts) {
147665 + INIT_LIST_HEAD(&insert_list);
147666 + INIT_LIST_HEAD(&update_list);
147667 + num_inserts = 0;
147668 + goto again;
147669 + }
147670 +
147671 + /*
147672 + * again, if we need to make absolutely sure there are no more pending
147673 + * extent operations left and we know that we skipped some, go back to
147674 + * the beginning and do it all again
147675 + */
147676 + if (all && skipped) {
147677 INIT_LIST_HEAD(&insert_list);
147678 INIT_LIST_HEAD(&update_list);
147679 search = 0;
147680 - restart = 0;
147681 + skipped = 0;
147682 num_inserts = 0;
147683 goto again;
147684 }
147685 @@ -2886,7 +2547,6 @@
147686 if (ret) {
147687 if (all && skipped && !nr) {
147688 search = 0;
147689 - skipped = 0;
147690 continue;
147691 }
147692 mutex_unlock(&info->extent_ins_mutex);
147693 @@ -2973,8 +2633,6 @@
147694 goto again;
147695 }
147696
147697 - if (!err)
147698 - finish_current_insert(trans, extent_root, 0);
147699 return err;
147700 }
147701
147702 @@ -3042,9 +2700,13 @@
147703 /* if metadata always pin */
147704 if (owner_objectid < BTRFS_FIRST_FREE_OBJECTID) {
147705 if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
147706 - mutex_lock(&root->fs_info->pinned_mutex);
147707 - btrfs_update_pinned_extents(root, bytenr, num_bytes, 1);
147708 - mutex_unlock(&root->fs_info->pinned_mutex);
147709 + struct btrfs_block_group_cache *cache;
147710 +
147711 + /* btrfs_free_reserved_extent */
147712 + cache = btrfs_lookup_block_group(root->fs_info, bytenr);
147713 + BUG_ON(!cache);
147714 + btrfs_add_free_space(cache, bytenr, num_bytes);
147715 + put_block_group(cache);
147716 update_reserved_extents(root, bytenr, num_bytes, 0);
147717 return 0;
147718 }
147719 @@ -3125,8 +2787,7 @@
147720
147721 if (data & BTRFS_BLOCK_GROUP_METADATA) {
147722 last_ptr = &root->fs_info->last_alloc;
147723 - if (!btrfs_test_opt(root, SSD))
147724 - empty_cluster = 64 * 1024;
147725 + empty_cluster = 64 * 1024;
147726 }
147727
147728 if ((data & BTRFS_BLOCK_GROUP_DATA) && btrfs_test_opt(root, SSD))
147729 @@ -3353,18 +3014,16 @@
147730 static void dump_space_info(struct btrfs_space_info *info, u64 bytes)
147731 {
147732 struct btrfs_block_group_cache *cache;
147733 + struct list_head *l;
147734
147735 printk(KERN_INFO "space_info has %llu free, is %sfull\n",
147736 (unsigned long long)(info->total_bytes - info->bytes_used -
147737 info->bytes_pinned - info->bytes_reserved),
147738 (info->full) ? "" : "not ");
147739 - printk(KERN_INFO "space_info total=%llu, pinned=%llu, delalloc=%llu,"
147740 - " may_use=%llu, used=%llu\n", info->total_bytes,
147741 - info->bytes_pinned, info->bytes_delalloc, info->bytes_may_use,
147742 - info->bytes_used);
147743
147744 down_read(&info->groups_sem);
147745 - list_for_each_entry(cache, &info->block_groups, list) {
147746 + list_for_each(l, &info->block_groups) {
147747 + cache = list_entry(l, struct btrfs_block_group_cache, list);
147748 spin_lock(&cache->lock);
147749 printk(KERN_INFO "block group %llu has %llu bytes, %llu used "
147750 "%llu pinned %llu reserved\n",
147751 @@ -3388,10 +3047,24 @@
147752 {
147753 int ret;
147754 u64 search_start = 0;
147755 + u64 alloc_profile;
147756 struct btrfs_fs_info *info = root->fs_info;
147757
147758 - data = btrfs_get_alloc_profile(root, data);
147759 + if (data) {
147760 + alloc_profile = info->avail_data_alloc_bits &
147761 + info->data_alloc_profile;
147762 + data = BTRFS_BLOCK_GROUP_DATA | alloc_profile;
147763 + } else if (root == root->fs_info->chunk_root) {
147764 + alloc_profile = info->avail_system_alloc_bits &
147765 + info->system_alloc_profile;
147766 + data = BTRFS_BLOCK_GROUP_SYSTEM | alloc_profile;
147767 + } else {
147768 + alloc_profile = info->avail_metadata_alloc_bits &
147769 + info->metadata_alloc_profile;
147770 + data = BTRFS_BLOCK_GROUP_METADATA | alloc_profile;
147771 + }
147772 again:
147773 + data = btrfs_reduce_alloc_profile(root, data);
147774 /*
147775 * the only place that sets empty_size is btrfs_realloc_node, which
147776 * is not called recursively on allocations
147777 @@ -3659,8 +3332,7 @@
147778
147779 struct extent_buffer *btrfs_init_new_buffer(struct btrfs_trans_handle *trans,
147780 struct btrfs_root *root,
147781 - u64 bytenr, u32 blocksize,
147782 - int level)
147783 + u64 bytenr, u32 blocksize)
147784 {
147785 struct extent_buffer *buf;
147786
147787 @@ -3668,13 +3340,9 @@
147788 if (!buf)
147789 return ERR_PTR(-ENOMEM);
147790 btrfs_set_header_generation(buf, trans->transid);
147791 - btrfs_set_buffer_lockdep_class(buf, level);
147792 btrfs_tree_lock(buf);
147793 clean_tree_block(trans, root, buf);
147794 -
147795 - btrfs_set_lock_blocking(buf);
147796 btrfs_set_buffer_uptodate(buf);
147797 -
147798 if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
147799 set_extent_dirty(&root->dirty_log_pages, buf->start,
147800 buf->start + buf->len - 1, GFP_NOFS);
147801 @@ -3683,7 +3351,6 @@
147802 buf->start + buf->len - 1, GFP_NOFS);
147803 }
147804 trans->blocks_used++;
147805 - /* this returns a buffer locked for blocking */
147806 return buf;
147807 }
147808
147809 @@ -3712,8 +3379,7 @@
147810 return ERR_PTR(ret);
147811 }
147812
147813 - buf = btrfs_init_new_buffer(trans, root, ins.objectid,
147814 - blocksize, level);
147815 + buf = btrfs_init_new_buffer(trans, root, ins.objectid, blocksize);
147816 return buf;
147817 }
147818
147819 @@ -3722,73 +3388,36 @@
147820 {
147821 u64 leaf_owner;
147822 u64 leaf_generation;
147823 - struct refsort *sorted;
147824 struct btrfs_key key;
147825 struct btrfs_file_extent_item *fi;
147826 int i;
147827 int nritems;
147828 int ret;
147829 - int refi = 0;
147830 - int slot;
147831
147832 BUG_ON(!btrfs_is_leaf(leaf));
147833 nritems = btrfs_header_nritems(leaf);
147834 leaf_owner = btrfs_header_owner(leaf);
147835 leaf_generation = btrfs_header_generation(leaf);
147836
147837 - sorted = kmalloc(sizeof(*sorted) * nritems, GFP_NOFS);
147838 - /* we do this loop twice. The first time we build a list
147839 - * of the extents we have a reference on, then we sort the list
147840 - * by bytenr. The second time around we actually do the
147841 - * extent freeing.
147842 - */
147843 for (i = 0; i < nritems; i++) {
147844 u64 disk_bytenr;
147845 cond_resched();
147846
147847 btrfs_item_key_to_cpu(leaf, &key, i);
147848 -
147849 - /* only extents have references, skip everything else */
147850 if (btrfs_key_type(&key) != BTRFS_EXTENT_DATA_KEY)
147851 continue;
147852 -
147853 fi = btrfs_item_ptr(leaf, i, struct btrfs_file_extent_item);
147854 -
147855 - /* inline extents live in the btree, they don't have refs */
147856 if (btrfs_file_extent_type(leaf, fi) ==
147857 BTRFS_FILE_EXTENT_INLINE)
147858 continue;
147859 -
147860 + /*
147861 + * FIXME make sure to insert a trans record that
147862 + * repeats the snapshot del on crash
147863 + */
147864 disk_bytenr = btrfs_file_extent_disk_bytenr(leaf, fi);
147865 -
147866 - /* holes don't have refs */
147867 if (disk_bytenr == 0)
147868 continue;
147869
147870 - sorted[refi].bytenr = disk_bytenr;
147871 - sorted[refi].slot = i;
147872 - refi++;
147873 - }
147874 -
147875 - if (refi == 0)
147876 - goto out;
147877 -
147878 - sort(sorted, refi, sizeof(struct refsort), refsort_cmp, NULL);
147879 -
147880 - for (i = 0; i < refi; i++) {
147881 - u64 disk_bytenr;
147882 -
147883 - disk_bytenr = sorted[i].bytenr;
147884 - slot = sorted[i].slot;
147885 -
147886 - cond_resched();
147887 -
147888 - btrfs_item_key_to_cpu(leaf, &key, slot);
147889 - if (btrfs_key_type(&key) != BTRFS_EXTENT_DATA_KEY)
147890 - continue;
147891 -
147892 - fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
147893 -
147894 ret = __btrfs_free_extent(trans, root, disk_bytenr,
147895 btrfs_file_extent_disk_num_bytes(leaf, fi),
147896 leaf->start, leaf_owner, leaf_generation,
147897 @@ -3799,8 +3428,6 @@
147898 wake_up(&root->fs_info->transaction_throttle);
147899 cond_resched();
147900 }
147901 -out:
147902 - kfree(sorted);
147903 return 0;
147904 }
147905
147906 @@ -3810,25 +3437,9 @@
147907 {
147908 int i;
147909 int ret;
147910 - struct btrfs_extent_info *info;
147911 - struct refsort *sorted;
147912 -
147913 - if (ref->nritems == 0)
147914 - return 0;
147915 + struct btrfs_extent_info *info = ref->extents;
147916
147917 - sorted = kmalloc(sizeof(*sorted) * ref->nritems, GFP_NOFS);
147918 for (i = 0; i < ref->nritems; i++) {
147919 - sorted[i].bytenr = ref->extents[i].bytenr;
147920 - sorted[i].slot = i;
147921 - }
147922 - sort(sorted, ref->nritems, sizeof(struct refsort), refsort_cmp, NULL);
147923 -
147924 - /*
147925 - * the items in the ref were sorted when the ref was inserted
147926 - * into the ref cache, so this is already in order
147927 - */
147928 - for (i = 0; i < ref->nritems; i++) {
147929 - info = ref->extents + sorted[i].slot;
147930 ret = __btrfs_free_extent(trans, root, info->bytenr,
147931 info->num_bytes, ref->bytenr,
147932 ref->owner, ref->generation,
147933 @@ -3842,7 +3453,6 @@
147934 info++;
147935 }
147936
147937 - kfree(sorted);
147938 return 0;
147939 }
147940
147941 @@ -3887,152 +3497,6 @@
147942 }
147943
147944 /*
147945 - * this is used while deleting old snapshots, and it drops the refs
147946 - * on a whole subtree starting from a level 1 node.
147947 - *
147948 - * The idea is to sort all the leaf pointers, and then drop the
147949 - * ref on all the leaves in order. Most of the time the leaves
147950 - * will have ref cache entries, so no leaf IOs will be required to
147951 - * find the extents they have references on.
147952 - *
147953 - * For each leaf, any references it has are also dropped in order
147954 - *
147955 - * This ends up dropping the references in something close to optimal
147956 - * order for reading and modifying the extent allocation tree.
147957 - */
147958 -static noinline int drop_level_one_refs(struct btrfs_trans_handle *trans,
147959 - struct btrfs_root *root,
147960 - struct btrfs_path *path)
147961 -{
147962 - u64 bytenr;
147963 - u64 root_owner;
147964 - u64 root_gen;
147965 - struct extent_buffer *eb = path->nodes[1];
147966 - struct extent_buffer *leaf;
147967 - struct btrfs_leaf_ref *ref;
147968 - struct refsort *sorted = NULL;
147969 - int nritems = btrfs_header_nritems(eb);
147970 - int ret;
147971 - int i;
147972 - int refi = 0;
147973 - int slot = path->slots[1];
147974 - u32 blocksize = btrfs_level_size(root, 0);
147975 - u32 refs;
147976 -
147977 - if (nritems == 0)
147978 - goto out;
147979 -
147980 - root_owner = btrfs_header_owner(eb);
147981 - root_gen = btrfs_header_generation(eb);
147982 - sorted = kmalloc(sizeof(*sorted) * nritems, GFP_NOFS);
147983 -
147984 - /*
147985 - * step one, sort all the leaf pointers so we don't scribble
147986 - * randomly into the extent allocation tree
147987 - */
147988 - for (i = slot; i < nritems; i++) {
147989 - sorted[refi].bytenr = btrfs_node_blockptr(eb, i);
147990 - sorted[refi].slot = i;
147991 - refi++;
147992 - }
147993 -
147994 - /*
147995 - * nritems won't be zero, but if we're picking up drop_snapshot
147996 - * after a crash, slot might be > 0, so double check things
147997 - * just in case.
147998 - */
147999 - if (refi == 0)
148000 - goto out;
148001 -
148002 - sort(sorted, refi, sizeof(struct refsort), refsort_cmp, NULL);
148003 -
148004 - /*
148005 - * the first loop frees everything the leaves point to
148006 - */
148007 - for (i = 0; i < refi; i++) {
148008 - u64 ptr_gen;
148009 -
148010 - bytenr = sorted[i].bytenr;
148011 -
148012 - /*
148013 - * check the reference count on this leaf. If it is > 1
148014 - * we just decrement it below and don't update any
148015 - * of the refs the leaf points to.
148016 - */
148017 - ret = drop_snap_lookup_refcount(root, bytenr, blocksize, &refs);
148018 - BUG_ON(ret);
148019 - if (refs != 1)
148020 - continue;
148021 -
148022 - ptr_gen = btrfs_node_ptr_generation(eb, sorted[i].slot);
148023 -
148024 - /*
148025 - * the leaf only had one reference, which means the
148026 - * only thing pointing to this leaf is the snapshot
148027 - * we're deleting. It isn't possible for the reference
148028 - * count to increase again later
148029 - *
148030 - * The reference cache is checked for the leaf,
148031 - * and if found we'll be able to drop any refs held by
148032 - * the leaf without needing to read it in.
148033 - */
148034 - ref = btrfs_lookup_leaf_ref(root, bytenr);
148035 - if (ref && ref->generation != ptr_gen) {
148036 - btrfs_free_leaf_ref(root, ref);
148037 - ref = NULL;
148038 - }
148039 - if (ref) {
148040 - ret = cache_drop_leaf_ref(trans, root, ref);
148041 - BUG_ON(ret);
148042 - btrfs_remove_leaf_ref(root, ref);
148043 - btrfs_free_leaf_ref(root, ref);
148044 - } else {
148045 - /*
148046 - * the leaf wasn't in the reference cache, so
148047 - * we have to read it.
148048 - */
148049 - leaf = read_tree_block(root, bytenr, blocksize,
148050 - ptr_gen);
148051 - ret = btrfs_drop_leaf_ref(trans, root, leaf);
148052 - BUG_ON(ret);
148053 - free_extent_buffer(leaf);
148054 - }
148055 - atomic_inc(&root->fs_info->throttle_gen);
148056 - wake_up(&root->fs_info->transaction_throttle);
148057 - cond_resched();
148058 - }
148059 -
148060 - /*
148061 - * run through the loop again to free the refs on the leaves.
148062 - * This is faster than doing it in the loop above because
148063 - * the leaves are likely to be clustered together. We end up
148064 - * working in nice chunks on the extent allocation tree.
148065 - */
148066 - for (i = 0; i < refi; i++) {
148067 - bytenr = sorted[i].bytenr;
148068 - ret = __btrfs_free_extent(trans, root, bytenr,
148069 - blocksize, eb->start,
148070 - root_owner, root_gen, 0, 1);
148071 - BUG_ON(ret);
148072 -
148073 - atomic_inc(&root->fs_info->throttle_gen);
148074 - wake_up(&root->fs_info->transaction_throttle);
148075 - cond_resched();
148076 - }
148077 -out:
148078 - kfree(sorted);
148079 -
148080 - /*
148081 - * update the path to show we've processed the entire level 1
148082 - * node. This will get saved into the root's drop_snapshot_progress
148083 - * field so these drops are not repeated again if this transaction
148084 - * commits.
148085 - */
148086 - path->slots[1] = nritems;
148087 - return 0;
148088 -}
148089 -
148090 -/*
148091 * helper function for drop_snapshot, this walks down the tree dropping ref
148092 * counts as it goes.
148093 */
148094 @@ -4047,6 +3511,7 @@
148095 struct extent_buffer *next;
148096 struct extent_buffer *cur;
148097 struct extent_buffer *parent;
148098 + struct btrfs_leaf_ref *ref;
148099 u32 blocksize;
148100 int ret;
148101 u32 refs;
148102 @@ -4073,46 +3538,17 @@
148103 if (path->slots[*level] >=
148104 btrfs_header_nritems(cur))
148105 break;
148106 -
148107 - /* the new code goes down to level 1 and does all the
148108 - * leaves pointed to that node in bulk. So, this check
148109 - * for level 0 will always be false.
148110 - *
148111 - * But, the disk format allows the drop_snapshot_progress
148112 - * field in the root to leave things in a state where
148113 - * a leaf will need cleaning up here. If someone crashes
148114 - * with the old code and then boots with the new code,
148115 - * we might find a leaf here.
148116 - */
148117 if (*level == 0) {
148118 ret = btrfs_drop_leaf_ref(trans, root, cur);
148119 BUG_ON(ret);
148120 break;
148121 }
148122 -
148123 - /*
148124 - * once we get to level one, process the whole node
148125 - * at once, including everything below it.
148126 - */
148127 - if (*level == 1) {
148128 - ret = drop_level_one_refs(trans, root, path);
148129 - BUG_ON(ret);
148130 - break;
148131 - }
148132 -
148133 bytenr = btrfs_node_blockptr(cur, path->slots[*level]);
148134 ptr_gen = btrfs_node_ptr_generation(cur, path->slots[*level]);
148135 blocksize = btrfs_level_size(root, *level - 1);
148136
148137 ret = drop_snap_lookup_refcount(root, bytenr, blocksize, &refs);
148138 BUG_ON(ret);
148139 -
148140 - /*
148141 - * if there is more than one reference, we don't need
148142 - * to read that node to drop any references it has. We
148143 - * just drop the ref we hold on that node and move on to the
148144 - * next slot in this level.
148145 - */
148146 if (refs != 1) {
148147 parent = path->nodes[*level];
148148 root_owner = btrfs_header_owner(parent);
148149 @@ -4131,12 +3567,46 @@
148150
148151 continue;
148152 }
148153 -
148154 /*
148155 - * we need to keep freeing things in the next level down.
148156 - * read the block and loop around to process it
148157 + * at this point, we have a single ref, and since the
148158 + * only place referencing this extent is a dead root
148159 + * the reference count should never go higher.
148160 + * So, we don't need to check it again
148161 */
148162 - next = read_tree_block(root, bytenr, blocksize, ptr_gen);
148163 + if (*level == 1) {
148164 + ref = btrfs_lookup_leaf_ref(root, bytenr);
148165 + if (ref && ref->generation != ptr_gen) {
148166 + btrfs_free_leaf_ref(root, ref);
148167 + ref = NULL;
148168 + }
148169 + if (ref) {
148170 + ret = cache_drop_leaf_ref(trans, root, ref);
148171 + BUG_ON(ret);
148172 + btrfs_remove_leaf_ref(root, ref);
148173 + btrfs_free_leaf_ref(root, ref);
148174 + *level = 0;
148175 + break;
148176 + }
148177 + }
148178 + next = btrfs_find_tree_block(root, bytenr, blocksize);
148179 + if (!next || !btrfs_buffer_uptodate(next, ptr_gen)) {
148180 + free_extent_buffer(next);
148181 +
148182 + next = read_tree_block(root, bytenr, blocksize,
148183 + ptr_gen);
148184 + cond_resched();
148185 +#if 0
148186 + /*
148187 + * this is a debugging check and can go away
148188 + * the ref should never go all the way down to 1
148189 + * at this point
148190 + */
148191 + ret = lookup_extent_ref(NULL, root, bytenr, blocksize,
148192 + &refs);
148193 + BUG_ON(ret);
148194 + WARN_ON(refs != 1);
148195 +#endif
148196 + }
148197 WARN_ON(*level <= 0);
148198 if (path->nodes[*level-1])
148199 free_extent_buffer(path->nodes[*level-1]);
148200 @@ -4161,16 +3631,11 @@
148201 root_owner = btrfs_header_owner(parent);
148202 root_gen = btrfs_header_generation(parent);
148203
148204 - /*
148205 - * cleanup and free the reference on the last node
148206 - * we processed
148207 - */
148208 ret = __btrfs_free_extent(trans, root, bytenr, blocksize,
148209 parent->start, root_owner, root_gen,
148210 *level, 1);
148211 free_extent_buffer(path->nodes[*level]);
148212 path->nodes[*level] = NULL;
148213 -
148214 *level += 1;
148215 BUG_ON(ret);
148216
148217 @@ -4222,7 +3687,6 @@
148218
148219 next = read_tree_block(root, bytenr, blocksize, ptr_gen);
148220 btrfs_tree_lock(next);
148221 - btrfs_set_lock_blocking(next);
148222
148223 ret = btrfs_lookup_extent_ref(trans, root, bytenr, blocksize,
148224 &refs);
148225 @@ -4290,13 +3754,6 @@
148226 if (slot < btrfs_header_nritems(path->nodes[i]) - 1) {
148227 struct extent_buffer *node;
148228 struct btrfs_disk_key disk_key;
148229 -
148230 - /*
148231 - * there is more work to do in this level.
148232 - * Update the drop_progress marker to reflect
148233 - * the work we've done so far, and then bump
148234 - * the slot number
148235 - */
148236 node = path->nodes[i];
148237 path->slots[i]++;
148238 *level = i;
148239 @@ -4308,11 +3765,6 @@
148240 return 0;
148241 } else {
148242 struct extent_buffer *parent;
148243 -
148244 - /*
148245 - * this whole node is done, free our reference
148246 - * on it and go up one level
148247 - */
148248 if (path->nodes[*level] == root->node)
148249 parent = path->nodes[*level];
148250 else
148251 @@ -4439,13 +3891,13 @@
148252 path = btrfs_alloc_path();
148253 BUG_ON(!path);
148254
148255 - btrfs_assert_tree_locked(parent);
148256 + BUG_ON(!btrfs_tree_locked(parent));
148257 parent_level = btrfs_header_level(parent);
148258 extent_buffer_get(parent);
148259 path->nodes[parent_level] = parent;
148260 path->slots[parent_level] = btrfs_header_nritems(parent);
148261
148262 - btrfs_assert_tree_locked(node);
148263 + BUG_ON(!btrfs_tree_locked(node));
148264 level = btrfs_header_level(node);
148265 extent_buffer_get(node);
148266 path->nodes[level] = node;
148267 @@ -4992,7 +4444,7 @@
148268 u64 lock_end = 0;
148269 u64 num_bytes;
148270 u64 ext_offset;
148271 - u64 search_end = (u64)-1;
148272 + u64 first_pos;
148273 u32 nritems;
148274 int nr_scaned = 0;
148275 int extent_locked = 0;
148276 @@ -5000,6 +4452,7 @@
148277 int ret;
148278
148279 memcpy(&key, leaf_key, sizeof(key));
148280 + first_pos = INT_LIMIT(loff_t) - extent_key->offset;
148281 if (ref_path->owner_objectid != BTRFS_MULTIPLE_OBJECTIDS) {
148282 if (key.objectid < ref_path->owner_objectid ||
148283 (key.objectid == ref_path->owner_objectid &&
148284 @@ -5048,7 +4501,7 @@
148285 if ((key.objectid > ref_path->owner_objectid) ||
148286 (key.objectid == ref_path->owner_objectid &&
148287 key.type > BTRFS_EXTENT_DATA_KEY) ||
148288 - key.offset >= search_end)
148289 + (key.offset >= first_pos + extent_key->offset))
148290 break;
148291 }
148292
148293 @@ -5081,10 +4534,8 @@
148294 num_bytes = btrfs_file_extent_num_bytes(leaf, fi);
148295 ext_offset = btrfs_file_extent_offset(leaf, fi);
148296
148297 - if (search_end == (u64)-1) {
148298 - search_end = key.offset - ext_offset +
148299 - btrfs_file_extent_ram_bytes(leaf, fi);
148300 - }
148301 + if (first_pos > key.offset - ext_offset)
148302 + first_pos = key.offset - ext_offset;
148303
148304 if (!extent_locked) {
148305 lock_start = key.offset;
148306 @@ -5273,7 +4724,7 @@
148307 }
148308 skip:
148309 if (ref_path->owner_objectid != BTRFS_MULTIPLE_OBJECTIDS &&
148310 - key.offset >= search_end)
148311 + key.offset >= first_pos + extent_key->offset)
148312 break;
148313
148314 cond_resched();
148315 @@ -5327,7 +4778,6 @@
148316 ref->bytenr = buf->start;
148317 ref->owner = btrfs_header_owner(buf);
148318 ref->generation = btrfs_header_generation(buf);
148319 -
148320 ret = btrfs_add_leaf_ref(root, ref, 0);
148321 WARN_ON(ret);
148322 btrfs_free_leaf_ref(root, ref);
148323 @@ -5901,9 +5351,7 @@
148324 prev_block = block_start;
148325 }
148326
148327 - mutex_lock(&extent_root->fs_info->trans_mutex);
148328 btrfs_record_root_in_trans(found_root);
148329 - mutex_unlock(&extent_root->fs_info->trans_mutex);
148330 if (ref_path->owner_objectid >= BTRFS_FIRST_FREE_OBJECTID) {
148331 /*
148332 * try to update data extent references while
148333 @@ -6341,7 +5789,6 @@
148334 int btrfs_free_block_groups(struct btrfs_fs_info *info)
148335 {
148336 struct btrfs_block_group_cache *block_group;
148337 - struct btrfs_space_info *space_info;
148338 struct rb_node *n;
148339
148340 spin_lock(&info->block_group_cache_lock);
148341 @@ -6363,23 +5810,6 @@
148342 spin_lock(&info->block_group_cache_lock);
148343 }
148344 spin_unlock(&info->block_group_cache_lock);
148345 -
148346 - /* now that all the block groups are freed, go through and
148347 - * free all the space_info structs. This is only called during
148348 - * the final stages of unmount, and so we know nobody is
148349 - * using them. We call synchronize_rcu() once before we start,
148350 - * just to be on the safe side.
148351 - */
148352 - synchronize_rcu();
148353 -
148354 - while(!list_empty(&info->space_info)) {
148355 - space_info = list_entry(info->space_info.next,
148356 - struct btrfs_space_info,
148357 - list);
148358 -
148359 - list_del(&space_info->list);
148360 - kfree(space_info);
148361 - }
148362 return 0;
148363 }
148364
148365 @@ -6527,11 +5957,9 @@
148366 path = btrfs_alloc_path();
148367 BUG_ON(!path);
148368
148369 - spin_lock(&root->fs_info->block_group_cache_lock);
148370 + btrfs_remove_free_space_cache(block_group);
148371 rb_erase(&block_group->cache_node,
148372 &root->fs_info->block_group_cache_tree);
148373 - spin_unlock(&root->fs_info->block_group_cache_lock);
148374 - btrfs_remove_free_space_cache(block_group);
148375 down_write(&block_group->space_info->groups_sem);
148376 list_del(&block_group->list);
148377 up_write(&block_group->space_info->groups_sem);
148378 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/file.c linux-2.6.29-rc3.owrt/fs/btrfs/file.c
148379 --- linux-2.6.29.owrt/fs/btrfs/file.c 2009-05-10 22:04:39.000000000 +0200
148380 +++ linux-2.6.29-rc3.owrt/fs/btrfs/file.c 2009-05-10 23:48:29.000000000 +0200
148381 @@ -29,6 +29,7 @@
148382 #include <linux/writeback.h>
148383 #include <linux/statfs.h>
148384 #include <linux/compat.h>
148385 +#include <linux/version.h>
148386 #include "ctree.h"
148387 #include "disk-io.h"
148388 #include "transaction.h"
148389 @@ -1091,24 +1092,19 @@
148390 WARN_ON(num_pages > nrptrs);
148391 memset(pages, 0, sizeof(struct page *) * nrptrs);
148392
148393 - ret = btrfs_check_data_free_space(root, inode, write_bytes);
148394 + ret = btrfs_check_free_space(root, write_bytes, 0);
148395 if (ret)
148396 goto out;
148397
148398 ret = prepare_pages(root, file, pages, num_pages,
148399 pos, first_index, last_index,
148400 write_bytes);
148401 - if (ret) {
148402 - btrfs_free_reserved_data_space(root, inode,
148403 - write_bytes);
148404 + if (ret)
148405 goto out;
148406 - }
148407
148408 ret = btrfs_copy_from_user(pos, num_pages,
148409 write_bytes, pages, buf);
148410 if (ret) {
148411 - btrfs_free_reserved_data_space(root, inode,
148412 - write_bytes);
148413 btrfs_drop_pages(pages, num_pages);
148414 goto out;
148415 }
148416 @@ -1116,11 +1112,8 @@
148417 ret = dirty_and_release_pages(NULL, root, file, pages,
148418 num_pages, pos, write_bytes);
148419 btrfs_drop_pages(pages, num_pages);
148420 - if (ret) {
148421 - btrfs_free_reserved_data_space(root, inode,
148422 - write_bytes);
148423 + if (ret)
148424 goto out;
148425 - }
148426
148427 if (will_write) {
148428 btrfs_fdatawrite_range(inode->i_mapping, pos,
148429 @@ -1144,8 +1137,6 @@
148430 }
148431 out:
148432 mutex_unlock(&inode->i_mutex);
148433 - if (ret)
148434 - err = ret;
148435
148436 out_nolock:
148437 kfree(pages);
148438 @@ -1224,15 +1215,15 @@
148439 }
148440 mutex_unlock(&root->fs_info->trans_mutex);
148441
148442 - root->log_batch++;
148443 + root->fs_info->tree_log_batch++;
148444 filemap_fdatawrite(inode->i_mapping);
148445 btrfs_wait_ordered_range(inode, 0, (u64)-1);
148446 - root->log_batch++;
148447 + root->fs_info->tree_log_batch++;
148448
148449 /*
148450 * ok we haven't committed the transaction yet, lets do a commit
148451 */
148452 - if (file && file->private_data)
148453 + if (file->private_data)
148454 btrfs_ioctl_trans_end(file);
148455
148456 trans = btrfs_start_transaction(root, 1);
148457 @@ -1241,7 +1232,7 @@
148458 goto out;
148459 }
148460
148461 - ret = btrfs_log_dentry_safe(trans, root, dentry);
148462 + ret = btrfs_log_dentry_safe(trans, root, file->f_dentry);
148463 if (ret < 0)
148464 goto out;
148465
148466 @@ -1255,7 +1246,7 @@
148467 * file again, but that will end up using the synchronization
148468 * inside btrfs_sync_log to keep things safe.
148469 */
148470 - mutex_unlock(&dentry->d_inode->i_mutex);
148471 + mutex_unlock(&file->f_dentry->d_inode->i_mutex);
148472
148473 if (ret > 0) {
148474 ret = btrfs_commit_transaction(trans, root);
148475 @@ -1263,7 +1254,7 @@
148476 btrfs_sync_log(trans, root);
148477 ret = btrfs_end_transaction(trans, root);
148478 }
148479 - mutex_lock(&dentry->d_inode->i_mutex);
148480 + mutex_lock(&file->f_dentry->d_inode->i_mutex);
148481 out:
148482 return ret > 0 ? EIO : ret;
148483 }
148484 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/inode.c linux-2.6.29-rc3.owrt/fs/btrfs/inode.c
148485 --- linux-2.6.29.owrt/fs/btrfs/inode.c 2009-05-10 22:04:39.000000000 +0200
148486 +++ linux-2.6.29-rc3.owrt/fs/btrfs/inode.c 2009-05-10 23:48:29.000000000 +0200
148487 @@ -34,6 +34,7 @@
148488 #include <linux/statfs.h>
148489 #include <linux/compat.h>
148490 #include <linux/bit_spinlock.h>
148491 +#include <linux/version.h>
148492 #include <linux/xattr.h>
148493 #include <linux/posix_acl.h>
148494 #include <linux/falloc.h>
148495 @@ -50,7 +51,6 @@
148496 #include "tree-log.h"
148497 #include "ref-cache.h"
148498 #include "compression.h"
148499 -#include "locking.h"
148500
148501 struct btrfs_iget_args {
148502 u64 ino;
148503 @@ -91,14 +91,32 @@
148504 u64 start, u64 end, int *page_started,
148505 unsigned long *nr_written, int unlock);
148506
148507 -static int btrfs_init_inode_security(struct inode *inode, struct inode *dir)
148508 +/*
148509 + * a very lame attempt at stopping writes when the FS is 85% full. There
148510 + * are countless ways this is incorrect, but it is better than nothing.
148511 + */
148512 +int btrfs_check_free_space(struct btrfs_root *root, u64 num_required,
148513 + int for_del)
148514 {
148515 - int err;
148516 + u64 total;
148517 + u64 used;
148518 + u64 thresh;
148519 + int ret = 0;
148520
148521 - err = btrfs_init_acl(inode, dir);
148522 - if (!err)
148523 - err = btrfs_xattr_security_init(inode, dir);
148524 - return err;
148525 + spin_lock(&root->fs_info->delalloc_lock);
148526 + total = btrfs_super_total_bytes(&root->fs_info->super_copy);
148527 + used = btrfs_super_bytes_used(&root->fs_info->super_copy);
148528 + if (for_del)
148529 + thresh = total * 90;
148530 + else
148531 + thresh = total * 85;
148532 +
148533 + do_div(thresh, 100);
148534 +
148535 + if (used + root->fs_info->delalloc_bytes + num_required > thresh)
148536 + ret = -ENOSPC;
148537 + spin_unlock(&root->fs_info->delalloc_lock);
148538 + return ret;
148539 }
148540
148541 /*
148542 @@ -332,19 +350,6 @@
148543 nr_pages = (end >> PAGE_CACHE_SHIFT) - (start >> PAGE_CACHE_SHIFT) + 1;
148544 nr_pages = min(nr_pages, (128 * 1024UL) / PAGE_CACHE_SIZE);
148545
148546 - /*
148547 - * we don't want to send crud past the end of i_size through
148548 - * compression, that's just a waste of CPU time. So, if the
148549 - * end of the file is before the start of our current
148550 - * requested range of bytes, we bail out to the uncompressed
148551 - * cleanup code that can deal with all of this.
148552 - *
148553 - * It isn't really the fastest way to fix things, but this is a
148554 - * very uncommon corner.
148555 - */
148556 - if (actual_end <= start)
148557 - goto cleanup_and_bail_uncompressed;
148558 -
148559 total_compressed = actual_end - start;
148560
148561 /* we want to make sure that amount of ram required to uncompress
148562 @@ -489,7 +494,6 @@
148563 goto again;
148564 }
148565 } else {
148566 -cleanup_and_bail_uncompressed:
148567 /*
148568 * No compression, but we still need to write the pages in
148569 * the file we've been given so far. redirty the locked
148570 @@ -1162,7 +1166,6 @@
148571 */
148572 if (!(old & EXTENT_DELALLOC) && (bits & EXTENT_DELALLOC)) {
148573 struct btrfs_root *root = BTRFS_I(inode)->root;
148574 - btrfs_delalloc_reserve_space(root, inode, end - start + 1);
148575 spin_lock(&root->fs_info->delalloc_lock);
148576 BTRFS_I(inode)->delalloc_bytes += end - start + 1;
148577 root->fs_info->delalloc_bytes += end - start + 1;
148578 @@ -1196,12 +1199,9 @@
148579 (unsigned long long)end - start + 1,
148580 (unsigned long long)
148581 root->fs_info->delalloc_bytes);
148582 - btrfs_delalloc_free_space(root, inode, (u64)-1);
148583 root->fs_info->delalloc_bytes = 0;
148584 BTRFS_I(inode)->delalloc_bytes = 0;
148585 } else {
148586 - btrfs_delalloc_free_space(root, inode,
148587 - end - start + 1);
148588 root->fs_info->delalloc_bytes -= end - start + 1;
148589 BTRFS_I(inode)->delalloc_bytes -= end - start + 1;
148590 }
148591 @@ -1324,11 +1324,12 @@
148592 struct inode *inode, u64 file_offset,
148593 struct list_head *list)
148594 {
148595 + struct list_head *cur;
148596 struct btrfs_ordered_sum *sum;
148597
148598 btrfs_set_trans_block_group(trans, inode);
148599 -
148600 - list_for_each_entry(sum, list, list) {
148601 + list_for_each(cur, list) {
148602 + sum = list_entry(cur, struct btrfs_ordered_sum, list);
148603 btrfs_csum_file_blocks(trans,
148604 BTRFS_I(inode)->root->fs_info->csum_root, sum);
148605 }
148606 @@ -2012,7 +2013,6 @@
148607 BTRFS_I(inode)->flags = btrfs_inode_flags(leaf, inode_item);
148608
148609 alloc_group_block = btrfs_inode_block_group(leaf, inode_item);
148610 -
148611 BTRFS_I(inode)->block_group = btrfs_find_block_group(root, 0,
148612 alloc_group_block, 0);
148613 btrfs_free_path(path);
148614 @@ -2039,7 +2039,6 @@
148615 inode->i_mapping->backing_dev_info = &root->fs_info->bdi;
148616 break;
148617 default:
148618 - inode->i_op = &btrfs_special_inode_operations;
148619 init_special_inode(inode, inode->i_mode, rdev);
148620 break;
148621 }
148622 @@ -2109,7 +2108,6 @@
148623 goto failed;
148624 }
148625
148626 - btrfs_unlock_up_safe(path, 1);
148627 leaf = path->nodes[0];
148628 inode_item = btrfs_item_ptr(leaf, path->slots[0],
148629 struct btrfs_inode_item);
148630 @@ -2221,6 +2219,10 @@
148631
148632 root = BTRFS_I(dir)->root;
148633
148634 + ret = btrfs_check_free_space(root, 1, 1);
148635 + if (ret)
148636 + goto fail;
148637 +
148638 trans = btrfs_start_transaction(root, 1);
148639
148640 btrfs_set_trans_block_group(trans, dir);
148641 @@ -2233,6 +2235,7 @@
148642 nr = trans->blocks_used;
148643
148644 btrfs_end_transaction_throttle(trans, root);
148645 +fail:
148646 btrfs_btree_balance_dirty(root, nr);
148647 return ret;
148648 }
148649 @@ -2255,6 +2258,10 @@
148650 return -ENOTEMPTY;
148651 }
148652
148653 + ret = btrfs_check_free_space(root, 1, 1);
148654 + if (ret)
148655 + goto fail;
148656 +
148657 trans = btrfs_start_transaction(root, 1);
148658 btrfs_set_trans_block_group(trans, dir);
148659
148660 @@ -2271,6 +2278,7 @@
148661 fail_trans:
148662 nr = trans->blocks_used;
148663 ret = btrfs_end_transaction_throttle(trans, root);
148664 +fail:
148665 btrfs_btree_balance_dirty(root, nr);
148666
148667 if (ret && !err)
148668 @@ -2421,8 +2429,6 @@
148669 ref->generation = leaf_gen;
148670 ref->nritems = 0;
148671
148672 - btrfs_sort_leaf_ref(ref);
148673 -
148674 ret = btrfs_add_leaf_ref(root, ref, 0);
148675 WARN_ON(ret);
148676 btrfs_free_leaf_ref(root, ref);
148677 @@ -2470,7 +2476,7 @@
148678 struct btrfs_path *path;
148679 struct btrfs_key key;
148680 struct btrfs_key found_key;
148681 - u32 found_type = (u8)-1;
148682 + u32 found_type;
148683 struct extent_buffer *leaf;
148684 struct btrfs_file_extent_item *fi;
148685 u64 extent_start = 0;
148686 @@ -2497,6 +2503,8 @@
148687 key.offset = (u64)-1;
148688 key.type = (u8)-1;
148689
148690 + btrfs_init_path(path);
148691 +
148692 search_again:
148693 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
148694 if (ret < 0)
148695 @@ -2655,8 +2663,6 @@
148696 if (pending_del_nr)
148697 goto del_pending;
148698 btrfs_release_path(root, path);
148699 - if (found_type == BTRFS_INODE_ITEM_KEY)
148700 - break;
148701 goto search_again;
148702 }
148703
148704 @@ -2673,8 +2679,6 @@
148705 BUG_ON(ret);
148706 pending_del_nr = 0;
148707 btrfs_release_path(root, path);
148708 - if (found_type == BTRFS_INODE_ITEM_KEY)
148709 - break;
148710 goto search_again;
148711 }
148712 }
148713 @@ -2784,7 +2788,7 @@
148714 if (size <= hole_start)
148715 return 0;
148716
148717 - err = btrfs_check_metadata_free_space(root);
148718 + err = btrfs_check_free_space(root, 1, 0);
148719 if (err)
148720 return err;
148721
148722 @@ -2980,7 +2984,6 @@
148723 bi->last_trans = 0;
148724 bi->logged_trans = 0;
148725 bi->delalloc_bytes = 0;
148726 - bi->reserved_bytes = 0;
148727 bi->disk_i_size = 0;
148728 bi->flags = 0;
148729 bi->index_cnt = (u64)-1;
148730 @@ -3002,7 +3005,6 @@
148731 inode->i_ino = args->ino;
148732 init_btrfs_i(inode);
148733 BTRFS_I(inode)->root = args->root;
148734 - btrfs_set_inode_space_info(args->root, inode);
148735 return 0;
148736 }
148737
148738 @@ -3263,7 +3265,7 @@
148739
148740 /* Reached end of directory/root. Bump pos past the last item. */
148741 if (key_type == BTRFS_DIR_INDEX_KEY)
148742 - filp->f_pos = INT_LIMIT(off_t);
148743 + filp->f_pos = INT_LIMIT(typeof(filp->f_pos));
148744 else
148745 filp->f_pos++;
148746 nopos:
148747 @@ -3423,7 +3425,6 @@
148748 BTRFS_I(inode)->index_cnt = 2;
148749 BTRFS_I(inode)->root = root;
148750 BTRFS_I(inode)->generation = trans->transid;
148751 - btrfs_set_inode_space_info(root, inode);
148752
148753 if (mode & S_IFDIR)
148754 owner = 0;
148755 @@ -3457,14 +3458,7 @@
148756 root->highest_inode = objectid;
148757
148758 inode->i_uid = current_fsuid();
148759 -
148760 - if (dir && (dir->i_mode & S_ISGID)) {
148761 - inode->i_gid = dir->i_gid;
148762 - if (S_ISDIR(mode))
148763 - mode |= S_ISGID;
148764 - } else
148765 - inode->i_gid = current_fsgid();
148766 -
148767 + inode->i_gid = current_fsgid();
148768 inode->i_mode = mode;
148769 inode->i_ino = objectid;
148770 inode_set_bytes(inode, 0);
148771 @@ -3571,7 +3565,7 @@
148772 if (!new_valid_dev(rdev))
148773 return -EINVAL;
148774
148775 - err = btrfs_check_metadata_free_space(root);
148776 + err = btrfs_check_free_space(root, 1, 0);
148777 if (err)
148778 goto fail;
148779
148780 @@ -3592,7 +3586,7 @@
148781 if (IS_ERR(inode))
148782 goto out_unlock;
148783
148784 - err = btrfs_init_inode_security(inode, dir);
148785 + err = btrfs_init_acl(inode, dir);
148786 if (err) {
148787 drop_inode = 1;
148788 goto out_unlock;
148789 @@ -3634,7 +3628,7 @@
148790 u64 objectid;
148791 u64 index = 0;
148792
148793 - err = btrfs_check_metadata_free_space(root);
148794 + err = btrfs_check_free_space(root, 1, 0);
148795 if (err)
148796 goto fail;
148797 trans = btrfs_start_transaction(root, 1);
148798 @@ -3655,7 +3649,7 @@
148799 if (IS_ERR(inode))
148800 goto out_unlock;
148801
148802 - err = btrfs_init_inode_security(inode, dir);
148803 + err = btrfs_init_acl(inode, dir);
148804 if (err) {
148805 drop_inode = 1;
148806 goto out_unlock;
148807 @@ -3702,7 +3696,7 @@
148808 return -ENOENT;
148809
148810 btrfs_inc_nlink(inode);
148811 - err = btrfs_check_metadata_free_space(root);
148812 + err = btrfs_check_free_space(root, 1, 0);
148813 if (err)
148814 goto fail;
148815 err = btrfs_set_inode_index(dir, &index);
148816 @@ -3748,7 +3742,7 @@
148817 u64 index = 0;
148818 unsigned long nr = 1;
148819
148820 - err = btrfs_check_metadata_free_space(root);
148821 + err = btrfs_check_free_space(root, 1, 0);
148822 if (err)
148823 goto out_unlock;
148824
148825 @@ -3778,7 +3772,7 @@
148826
148827 drop_on_err = 1;
148828
148829 - err = btrfs_init_inode_security(inode, dir);
148830 + err = btrfs_init_acl(inode, dir);
148831 if (err)
148832 goto out_fail;
148833
148834 @@ -4164,10 +4158,9 @@
148835 return -EINVAL;
148836 }
148837
148838 -static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
148839 - __u64 start, __u64 len)
148840 +static sector_t btrfs_bmap(struct address_space *mapping, sector_t iblock)
148841 {
148842 - return extent_fiemap(inode, fieinfo, start, len, btrfs_get_extent);
148843 + return extent_bmap(mapping, iblock, btrfs_get_extent);
148844 }
148845
148846 int btrfs_readpage(struct file *file, struct page *page)
148847 @@ -4230,7 +4223,7 @@
148848 {
148849 if (PageWriteback(page) || PageDirty(page))
148850 return 0;
148851 - return __btrfs_releasepage(page, gfp_flags & GFP_NOFS);
148852 + return __btrfs_releasepage(page, gfp_flags);
148853 }
148854
148855 static void btrfs_invalidatepage(struct page *page, unsigned long offset)
148856 @@ -4305,7 +4298,7 @@
148857 u64 page_start;
148858 u64 page_end;
148859
148860 - ret = btrfs_check_data_free_space(root, inode, PAGE_CACHE_SIZE);
148861 + ret = btrfs_check_free_space(root, PAGE_CACHE_SIZE, 0);
148862 if (ret)
148863 goto out;
148864
148865 @@ -4318,7 +4311,6 @@
148866
148867 if ((page->mapping != inode->i_mapping) ||
148868 (page_start >= size)) {
148869 - btrfs_free_reserved_data_space(root, inode, PAGE_CACHE_SIZE);
148870 /* page got truncated out from underneath us */
148871 goto out_unlock;
148872 }
148873 @@ -4601,7 +4593,7 @@
148874 if (old_inode->i_ino == BTRFS_FIRST_FREE_OBJECTID)
148875 return -EXDEV;
148876
148877 - ret = btrfs_check_metadata_free_space(root);
148878 + ret = btrfs_check_free_space(root, 1, 0);
148879 if (ret)
148880 goto out_unlock;
148881
148882 @@ -4719,7 +4711,7 @@
148883 if (name_len > BTRFS_MAX_INLINE_DATA_SIZE(root))
148884 return -ENAMETOOLONG;
148885
148886 - err = btrfs_check_metadata_free_space(root);
148887 + err = btrfs_check_free_space(root, 1, 0);
148888 if (err)
148889 goto out_fail;
148890
148891 @@ -4741,7 +4733,7 @@
148892 if (IS_ERR(inode))
148893 goto out_unlock;
148894
148895 - err = btrfs_init_inode_security(inode, dir);
148896 + err = btrfs_init_acl(inode, dir);
148897 if (err) {
148898 drop_inode = 1;
148899 goto out_unlock;
148900 @@ -4995,24 +4987,13 @@
148901 .clear_bit_hook = btrfs_clear_bit_hook,
148902 };
148903
148904 -/*
148905 - * btrfs doesn't support the bmap operation because swapfiles
148906 - * use bmap to make a mapping of extents in the file. They assume
148907 - * these extents won't change over the life of the file and they
148908 - * use the bmap result to do IO directly to the drive.
148909 - *
148910 - * the btrfs bmap call would return logical addresses that aren't
148911 - * suitable for IO and they also will change frequently as COW
148912 - * operations happen. So, swapfile + btrfs == corruption.
148913 - *
148914 - * For now we're avoiding this by dropping bmap.
148915 - */
148916 static struct address_space_operations btrfs_aops = {
148917 .readpage = btrfs_readpage,
148918 .writepage = btrfs_writepage,
148919 .writepages = btrfs_writepages,
148920 .readpages = btrfs_readpages,
148921 .sync_page = block_sync_page,
148922 + .bmap = btrfs_bmap,
148923 .direct_IO = btrfs_direct_IO,
148924 .invalidatepage = btrfs_invalidatepage,
148925 .releasepage = btrfs_releasepage,
148926 @@ -5036,7 +5017,6 @@
148927 .removexattr = btrfs_removexattr,
148928 .permission = btrfs_permission,
148929 .fallocate = btrfs_fallocate,
148930 - .fiemap = btrfs_fiemap,
148931 };
148932 static struct inode_operations btrfs_special_inode_operations = {
148933 .getattr = btrfs_getattr,
148934 @@ -5052,8 +5032,4 @@
148935 .follow_link = page_follow_link_light,
148936 .put_link = page_put_link,
148937 .permission = btrfs_permission,
148938 - .setxattr = btrfs_setxattr,
148939 - .getxattr = btrfs_getxattr,
148940 - .listxattr = btrfs_listxattr,
148941 - .removexattr = btrfs_removexattr,
148942 };
148943 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/inode-map.c linux-2.6.29-rc3.owrt/fs/btrfs/inode-map.c
148944 --- linux-2.6.29.owrt/fs/btrfs/inode-map.c 2009-05-10 22:04:39.000000000 +0200
148945 +++ linux-2.6.29-rc3.owrt/fs/btrfs/inode-map.c 2009-05-10 23:48:29.000000000 +0200
148946 @@ -84,6 +84,7 @@
148947 search_key.type = 0;
148948 search_key.offset = 0;
148949
148950 + btrfs_init_path(path);
148951 start_found = 0;
148952 ret = btrfs_search_slot(trans, root, &search_key, path, 0, 0);
148953 if (ret < 0)
148954 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/ioctl.c linux-2.6.29-rc3.owrt/fs/btrfs/ioctl.c
148955 --- linux-2.6.29.owrt/fs/btrfs/ioctl.c 2009-05-10 22:04:39.000000000 +0200
148956 +++ linux-2.6.29-rc3.owrt/fs/btrfs/ioctl.c 2009-05-10 23:48:29.000000000 +0200
148957 @@ -38,6 +38,7 @@
148958 #include <linux/compat.h>
148959 #include <linux/bit_spinlock.h>
148960 #include <linux/security.h>
148961 +#include <linux/version.h>
148962 #include <linux/xattr.h>
148963 #include <linux/vmalloc.h>
148964 #include "compat.h"
148965 @@ -70,7 +71,7 @@
148966 u64 index = 0;
148967 unsigned long nr = 1;
148968
148969 - ret = btrfs_check_metadata_free_space(root);
148970 + ret = btrfs_check_free_space(root, 1, 0);
148971 if (ret)
148972 goto fail_commit;
148973
148974 @@ -203,7 +204,7 @@
148975 if (!root->ref_cows)
148976 return -EINVAL;
148977
148978 - ret = btrfs_check_metadata_free_space(root);
148979 + ret = btrfs_check_free_space(root, 1, 0);
148980 if (ret)
148981 goto fail_unlock;
148982
148983 @@ -374,7 +375,7 @@
148984 unsigned long i;
148985 int ret;
148986
148987 - ret = btrfs_check_data_free_space(root, inode, inode->i_size);
148988 + ret = btrfs_check_free_space(root, inode->i_size, 0);
148989 if (ret)
148990 return -ENOSPC;
148991
148992 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/Kconfig linux-2.6.29-rc3.owrt/fs/btrfs/Kconfig
148993 --- linux-2.6.29.owrt/fs/btrfs/Kconfig 2009-05-10 22:04:39.000000000 +0200
148994 +++ linux-2.6.29-rc3.owrt/fs/btrfs/Kconfig 2009-05-10 23:48:29.000000000 +0200
148995 @@ -16,16 +16,3 @@
148996 module will be called btrfs.
148997
148998 If unsure, say N.
148999 -
149000 -config BTRFS_FS_POSIX_ACL
149001 - bool "Btrfs POSIX Access Control Lists"
149002 - depends on BTRFS_FS
149003 - select FS_POSIX_ACL
149004 - help
149005 - POSIX Access Control Lists (ACLs) support permissions for users and
149006 - groups beyond the owner/group/world scheme.
149007 -
149008 - To learn more about Access Control Lists, visit the POSIX ACLs for
149009 - Linux website <http://acl.bestbits.at/>.
149010 -
149011 - If you don't know what Access Control Lists are, say N
149012 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/locking.c linux-2.6.29-rc3.owrt/fs/btrfs/locking.c
149013 --- linux-2.6.29.owrt/fs/btrfs/locking.c 2009-05-10 22:04:39.000000000 +0200
149014 +++ linux-2.6.29-rc3.owrt/fs/btrfs/locking.c 2009-05-10 23:48:29.000000000 +0200
149015 @@ -25,203 +25,64 @@
149016 #include "extent_io.h"
149017 #include "locking.h"
149018
149019 -static inline void spin_nested(struct extent_buffer *eb)
149020 -{
149021 - spin_lock(&eb->lock);
149022 -}
149023 -
149024 -/*
149025 - * Setting a lock to blocking will drop the spinlock and set the
149026 - * flag that forces other procs who want the lock to wait. After
149027 - * this you can safely schedule with the lock held.
149028 - */
149029 -void btrfs_set_lock_blocking(struct extent_buffer *eb)
149030 -{
149031 - if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags)) {
149032 - set_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags);
149033 - spin_unlock(&eb->lock);
149034 - }
149035 - /* exit with the spin lock released and the bit set */
149036 -}
149037 -
149038 /*
149039 - * clearing the blocking flag will take the spinlock again.
149040 - * After this you can't safely schedule
149041 - */
149042 -void btrfs_clear_lock_blocking(struct extent_buffer *eb)
149043 -{
149044 - if (test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags)) {
149045 - spin_nested(eb);
149046 - clear_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags);
149047 - smp_mb__after_clear_bit();
149048 - }
149049 - /* exit with the spin lock held */
149050 -}
149051 -
149052 -/*
149053 - * unfortunately, many of the places that currently set a lock to blocking
149054 - * don't end up blocking for every long, and often they don't block
149055 - * at all. For a dbench 50 run, if we don't spin one the blocking bit
149056 - * at all, the context switch rate can jump up to 400,000/sec or more.
149057 + * locks the per buffer mutex in an extent buffer. This uses adaptive locks
149058 + * and the spin is not tuned very extensively. The spinning does make a big
149059 + * difference in almost every workload, but spinning for the right amount of
149060 + * time needs some help.
149061 *
149062 - * So, we're still stuck with this crummy spin on the blocking bit,
149063 - * at least until the most common causes of the short blocks
149064 - * can be dealt with.
149065 + * In general, we want to spin as long as the lock holder is doing btree
149066 + * searches, and we should give up if they are in more expensive code.
149067 */
149068 -static int btrfs_spin_on_block(struct extent_buffer *eb)
149069 +
149070 +int btrfs_tree_lock(struct extent_buffer *eb)
149071 {
149072 int i;
149073 +
149074 + if (mutex_trylock(&eb->mutex))
149075 + return 0;
149076 for (i = 0; i < 512; i++) {
149077 cpu_relax();
149078 - if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149079 - return 1;
149080 - if (need_resched())
149081 - break;
149082 + if (mutex_trylock(&eb->mutex))
149083 + return 0;
149084 }
149085 + cpu_relax();
149086 + mutex_lock_nested(&eb->mutex, BTRFS_MAX_LEVEL - btrfs_header_level(eb));
149087 return 0;
149088 }
149089
149090 -/*
149091 - * This is somewhat different from trylock. It will take the
149092 - * spinlock but if it finds the lock is set to blocking, it will
149093 - * return without the lock held.
149094 - *
149095 - * returns 1 if it was able to take the lock and zero otherwise
149096 - *
149097 - * After this call, scheduling is not safe without first calling
149098 - * btrfs_set_lock_blocking()
149099 - */
149100 -int btrfs_try_spin_lock(struct extent_buffer *eb)
149101 +int btrfs_try_tree_lock(struct extent_buffer *eb)
149102 {
149103 - int i;
149104 -
149105 - spin_nested(eb);
149106 - if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149107 - return 1;
149108 - spin_unlock(&eb->lock);
149109 -
149110 - /* spin for a bit on the BLOCKING flag */
149111 - for (i = 0; i < 2; i++) {
149112 - if (!btrfs_spin_on_block(eb))
149113 - break;
149114 -
149115 - spin_nested(eb);
149116 - if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149117 - return 1;
149118 - spin_unlock(&eb->lock);
149119 - }
149120 - return 0;
149121 + return mutex_trylock(&eb->mutex);
149122 }
149123
149124 -/*
149125 - * the autoremove wake function will return 0 if it tried to wake up
149126 - * a process that was already awake, which means that process won't
149127 - * count as an exclusive wakeup. The waitq code will continue waking
149128 - * procs until it finds one that was actually sleeping.
149129 - *
149130 - * For btrfs, this isn't quite what we want. We want a single proc
149131 - * to be notified that the lock is ready for taking. If that proc
149132 - * already happen to be awake, great, it will loop around and try for
149133 - * the lock.
149134 - *
149135 - * So, btrfs_wake_function always returns 1, even when the proc that we
149136 - * tried to wake up was already awake.
149137 - */
149138 -static int btrfs_wake_function(wait_queue_t *wait, unsigned mode,
149139 - int sync, void *key)
149140 +int btrfs_tree_unlock(struct extent_buffer *eb)
149141 {
149142 - autoremove_wake_function(wait, mode, sync, key);
149143 - return 1;
149144 + mutex_unlock(&eb->mutex);
149145 + return 0;
149146 }
149147
149148 -/*
149149 - * returns with the extent buffer spinlocked.
149150 - *
149151 - * This will spin and/or wait as required to take the lock, and then
149152 - * return with the spinlock held.
149153 - *
149154 - * After this call, scheduling is not safe without first calling
149155 - * btrfs_set_lock_blocking()
149156 - */
149157 -int btrfs_tree_lock(struct extent_buffer *eb)
149158 +int btrfs_tree_locked(struct extent_buffer *eb)
149159 {
149160 - DEFINE_WAIT(wait);
149161 - wait.func = btrfs_wake_function;
149162 -
149163 - while(1) {
149164 - spin_nested(eb);
149165 -
149166 - /* nobody is blocking, exit with the spinlock held */
149167 - if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149168 - return 0;
149169 -
149170 - /*
149171 - * we have the spinlock, but the real owner is blocking.
149172 - * wait for them
149173 - */
149174 - spin_unlock(&eb->lock);
149175 -
149176 - /*
149177 - * spin for a bit, and if the blocking flag goes away,
149178 - * loop around
149179 - */
149180 - if (btrfs_spin_on_block(eb))
149181 - continue;
149182 -
149183 - prepare_to_wait_exclusive(&eb->lock_wq, &wait,
149184 - TASK_UNINTERRUPTIBLE);
149185 -
149186 - if (test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149187 - schedule();
149188 -
149189 - finish_wait(&eb->lock_wq, &wait);
149190 - }
149191 - return 0;
149192 + return mutex_is_locked(&eb->mutex);
149193 }
149194
149195 /*
149196 - * Very quick trylock, this does not spin or schedule. It returns
149197 - * 1 with the spinlock held if it was able to take the lock, or it
149198 - * returns zero if it was unable to take the lock.
149199 - *
149200 - * After this call, scheduling is not safe without first calling
149201 - * btrfs_set_lock_blocking()
149202 + * btrfs_search_slot uses this to decide if it should drop its locks
149203 + * before doing something expensive like allocating free blocks for cow.
149204 */
149205 -int btrfs_try_tree_lock(struct extent_buffer *eb)
149206 +int btrfs_path_lock_waiting(struct btrfs_path *path, int level)
149207 {
149208 - if (spin_trylock(&eb->lock)) {
149209 - if (test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags)) {
149210 - /*
149211 - * we've got the spinlock, but the real owner is
149212 - * blocking. Drop the spinlock and return failure
149213 - */
149214 - spin_unlock(&eb->lock);
149215 - return 0;
149216 - }
149217 - return 1;
149218 + int i;
149219 + struct extent_buffer *eb;
149220 + for (i = level; i <= level + 1 && i < BTRFS_MAX_LEVEL; i++) {
149221 + eb = path->nodes[i];
149222 + if (!eb)
149223 + break;
149224 + smp_mb();
149225 + if (!list_empty(&eb->mutex.wait_list))
149226 + return 1;
149227 }
149228 - /* someone else has the spinlock giveup */
149229 return 0;
149230 }
149231
149232 -int btrfs_tree_unlock(struct extent_buffer *eb)
149233 -{
149234 - /*
149235 - * if we were a blocking owner, we don't have the spinlock held
149236 - * just clear the bit and look for waiters
149237 - */
149238 - if (test_and_clear_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149239 - smp_mb__after_clear_bit();
149240 - else
149241 - spin_unlock(&eb->lock);
149242 -
149243 - if (waitqueue_active(&eb->lock_wq))
149244 - wake_up(&eb->lock_wq);
149245 - return 0;
149246 -}
149247 -
149248 -void btrfs_assert_tree_locked(struct extent_buffer *eb)
149249 -{
149250 - if (!test_bit(EXTENT_BUFFER_BLOCKING, &eb->bflags))
149251 - assert_spin_locked(&eb->lock);
149252 -}
149253 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/locking.h linux-2.6.29-rc3.owrt/fs/btrfs/locking.h
149254 --- linux-2.6.29.owrt/fs/btrfs/locking.h 2009-05-10 22:04:39.000000000 +0200
149255 +++ linux-2.6.29-rc3.owrt/fs/btrfs/locking.h 2009-05-10 23:48:29.000000000 +0200
149256 @@ -21,11 +21,7 @@
149257
149258 int btrfs_tree_lock(struct extent_buffer *eb);
149259 int btrfs_tree_unlock(struct extent_buffer *eb);
149260 -
149261 +int btrfs_tree_locked(struct extent_buffer *eb);
149262 int btrfs_try_tree_lock(struct extent_buffer *eb);
149263 -int btrfs_try_spin_lock(struct extent_buffer *eb);
149264 -
149265 -void btrfs_set_lock_blocking(struct extent_buffer *eb);
149266 -void btrfs_clear_lock_blocking(struct extent_buffer *eb);
149267 -void btrfs_assert_tree_locked(struct extent_buffer *eb);
149268 +int btrfs_path_lock_waiting(struct btrfs_path *path, int level);
149269 #endif
149270 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/ordered-data.c linux-2.6.29-rc3.owrt/fs/btrfs/ordered-data.c
149271 --- linux-2.6.29.owrt/fs/btrfs/ordered-data.c 2009-05-10 22:04:39.000000000 +0200
149272 +++ linux-2.6.29-rc3.owrt/fs/btrfs/ordered-data.c 2009-05-10 23:48:29.000000000 +0200
149273 @@ -613,6 +613,7 @@
149274 struct btrfs_sector_sum *sector_sums;
149275 struct btrfs_ordered_extent *ordered;
149276 struct btrfs_ordered_inode_tree *tree = &BTRFS_I(inode)->ordered_tree;
149277 + struct list_head *cur;
149278 unsigned long num_sectors;
149279 unsigned long i;
149280 u32 sectorsize = BTRFS_I(inode)->root->sectorsize;
149281 @@ -623,7 +624,8 @@
149282 return 1;
149283
149284 mutex_lock(&tree->mutex);
149285 - list_for_each_entry_reverse(ordered_sum, &ordered->list, list) {
149286 + list_for_each_prev(cur, &ordered->list) {
149287 + ordered_sum = list_entry(cur, struct btrfs_ordered_sum, list);
149288 if (disk_bytenr >= ordered_sum->bytenr) {
149289 num_sectors = ordered_sum->len / sectorsize;
149290 sector_sums = ordered_sum->sums;
149291 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/ref-cache.c linux-2.6.29-rc3.owrt/fs/btrfs/ref-cache.c
149292 --- linux-2.6.29.owrt/fs/btrfs/ref-cache.c 2009-05-10 22:04:39.000000000 +0200
149293 +++ linux-2.6.29-rc3.owrt/fs/btrfs/ref-cache.c 2009-05-10 23:48:29.000000000 +0200
149294 @@ -17,7 +17,6 @@
149295 */
149296
149297 #include <linux/sched.h>
149298 -#include <linux/sort.h>
149299 #include "ctree.h"
149300 #include "ref-cache.h"
149301 #include "transaction.h"
149302 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/ref-cache.h linux-2.6.29-rc3.owrt/fs/btrfs/ref-cache.h
149303 --- linux-2.6.29.owrt/fs/btrfs/ref-cache.h 2009-05-10 22:04:39.000000000 +0200
149304 +++ linux-2.6.29-rc3.owrt/fs/btrfs/ref-cache.h 2009-05-10 23:48:29.000000000 +0200
149305 @@ -73,4 +73,5 @@
149306 int btrfs_remove_leaf_refs(struct btrfs_root *root, u64 max_root_gen,
149307 int shared);
149308 int btrfs_remove_leaf_ref(struct btrfs_root *root, struct btrfs_leaf_ref *ref);
149309 +
149310 #endif
149311 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/super.c linux-2.6.29-rc3.owrt/fs/btrfs/super.c
149312 --- linux-2.6.29.owrt/fs/btrfs/super.c 2009-05-10 22:04:39.000000000 +0200
149313 +++ linux-2.6.29-rc3.owrt/fs/btrfs/super.c 2009-05-10 23:48:29.000000000 +0200
149314 @@ -37,6 +37,7 @@
149315 #include <linux/ctype.h>
149316 #include <linux/namei.h>
149317 #include <linux/miscdevice.h>
149318 +#include <linux/version.h>
149319 #include <linux/magic.h>
149320 #include "compat.h"
149321 #include "ctree.h"
149322 @@ -379,6 +380,7 @@
149323 btrfs_start_delalloc_inodes(root);
149324 btrfs_wait_ordered_extents(root, 0);
149325
149326 + btrfs_clean_old_snapshots(root);
149327 trans = btrfs_start_transaction(root, 1);
149328 ret = btrfs_commit_transaction(trans, root);
149329 sb->s_dirt = 0;
149330 @@ -510,10 +512,6 @@
149331 struct btrfs_root *root = btrfs_sb(sb);
149332 int ret;
149333
149334 - ret = btrfs_parse_options(root, data);
149335 - if (ret)
149336 - return -EINVAL;
149337 -
149338 if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
149339 return 0;
149340
149341 @@ -585,18 +583,17 @@
149342 struct btrfs_ioctl_vol_args *vol;
149343 struct btrfs_fs_devices *fs_devices;
149344 int ret = -ENOTTY;
149345 + int len;
149346
149347 if (!capable(CAP_SYS_ADMIN))
149348 return -EPERM;
149349
149350 vol = kmalloc(sizeof(*vol), GFP_KERNEL);
149351 - if (!vol)
149352 - return -ENOMEM;
149353 -
149354 if (copy_from_user(vol, (void __user *)arg, sizeof(*vol))) {
149355 ret = -EFAULT;
149356 goto out;
149357 }
149358 + len = strnlen(vol->name, BTRFS_PATH_NAME_MAX);
149359
149360 switch (cmd) {
149361 case BTRFS_IOC_SCAN_DEV:
149362 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/transaction.c linux-2.6.29-rc3.owrt/fs/btrfs/transaction.c
149363 --- linux-2.6.29.owrt/fs/btrfs/transaction.c 2009-05-10 22:04:39.000000000 +0200
149364 +++ linux-2.6.29-rc3.owrt/fs/btrfs/transaction.c 2009-05-10 23:48:29.000000000 +0200
149365 @@ -688,9 +688,7 @@
149366 num_bytes -= btrfs_root_used(&dirty->root->root_item);
149367 bytes_used = btrfs_root_used(&root->root_item);
149368 if (num_bytes) {
149369 - mutex_lock(&root->fs_info->trans_mutex);
149370 btrfs_record_root_in_trans(root);
149371 - mutex_unlock(&root->fs_info->trans_mutex);
149372 btrfs_set_root_used(&root->root_item,
149373 bytes_used - num_bytes);
149374 }
149375 @@ -854,9 +852,11 @@
149376 {
149377 struct btrfs_pending_snapshot *pending;
149378 struct list_head *head = &trans->transaction->pending_snapshots;
149379 + struct list_head *cur;
149380 int ret;
149381
149382 - list_for_each_entry(pending, head, list) {
149383 + list_for_each(cur, head) {
149384 + pending = list_entry(cur, struct btrfs_pending_snapshot, list);
149385 ret = create_pending_snapshot(trans, fs_info, pending);
149386 BUG_ON(ret);
149387 }
149388 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/tree-defrag.c linux-2.6.29-rc3.owrt/fs/btrfs/tree-defrag.c
149389 --- linux-2.6.29.owrt/fs/btrfs/tree-defrag.c 2009-05-10 22:04:39.000000000 +0200
149390 +++ linux-2.6.29-rc3.owrt/fs/btrfs/tree-defrag.c 2009-05-10 23:48:29.000000000 +0200
149391 @@ -74,7 +74,6 @@
149392 u32 nritems;
149393
149394 root_node = btrfs_lock_root_node(root);
149395 - btrfs_set_lock_blocking(root_node);
149396 nritems = btrfs_header_nritems(root_node);
149397 root->defrag_max.objectid = 0;
149398 /* from above we know this is not a leaf */
149399 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/tree-log.c linux-2.6.29-rc3.owrt/fs/btrfs/tree-log.c
149400 --- linux-2.6.29.owrt/fs/btrfs/tree-log.c 2009-05-10 22:04:39.000000000 +0200
149401 +++ linux-2.6.29-rc3.owrt/fs/btrfs/tree-log.c 2009-05-10 23:48:29.000000000 +0200
149402 @@ -78,6 +78,104 @@
149403 */
149404
149405 /*
149406 + * btrfs_add_log_tree adds a new per-subvolume log tree into the
149407 + * tree of log tree roots. This must be called with a tree log transaction
149408 + * running (see start_log_trans).
149409 + */
149410 +static int btrfs_add_log_tree(struct btrfs_trans_handle *trans,
149411 + struct btrfs_root *root)
149412 +{
149413 + struct btrfs_key key;
149414 + struct btrfs_root_item root_item;
149415 + struct btrfs_inode_item *inode_item;
149416 + struct extent_buffer *leaf;
149417 + struct btrfs_root *new_root = root;
149418 + int ret;
149419 + u64 objectid = root->root_key.objectid;
149420 +
149421 + leaf = btrfs_alloc_free_block(trans, root, root->leafsize, 0,
149422 + BTRFS_TREE_LOG_OBJECTID,
149423 + trans->transid, 0, 0, 0);
149424 + if (IS_ERR(leaf)) {
149425 + ret = PTR_ERR(leaf);
149426 + return ret;
149427 + }
149428 +
149429 + btrfs_set_header_nritems(leaf, 0);
149430 + btrfs_set_header_level(leaf, 0);
149431 + btrfs_set_header_bytenr(leaf, leaf->start);
149432 + btrfs_set_header_generation(leaf, trans->transid);
149433 + btrfs_set_header_owner(leaf, BTRFS_TREE_LOG_OBJECTID);
149434 +
149435 + write_extent_buffer(leaf, root->fs_info->fsid,
149436 + (unsigned long)btrfs_header_fsid(leaf),
149437 + BTRFS_FSID_SIZE);
149438 + btrfs_mark_buffer_dirty(leaf);
149439 +
149440 + inode_item = &root_item.inode;
149441 + memset(inode_item, 0, sizeof(*inode_item));
149442 + inode_item->generation = cpu_to_le64(1);
149443 + inode_item->size = cpu_to_le64(3);
149444 + inode_item->nlink = cpu_to_le32(1);
149445 + inode_item->nbytes = cpu_to_le64(root->leafsize);
149446 + inode_item->mode = cpu_to_le32(S_IFDIR | 0755);
149447 +
149448 + btrfs_set_root_bytenr(&root_item, leaf->start);
149449 + btrfs_set_root_generation(&root_item, trans->transid);
149450 + btrfs_set_root_level(&root_item, 0);
149451 + btrfs_set_root_refs(&root_item, 0);
149452 + btrfs_set_root_used(&root_item, 0);
149453 +
149454 + memset(&root_item.drop_progress, 0, sizeof(root_item.drop_progress));
149455 + root_item.drop_level = 0;
149456 +
149457 + btrfs_tree_unlock(leaf);
149458 + free_extent_buffer(leaf);
149459 + leaf = NULL;
149460 +
149461 + btrfs_set_root_dirid(&root_item, 0);
149462 +
149463 + key.objectid = BTRFS_TREE_LOG_OBJECTID;
149464 + key.offset = objectid;
149465 + btrfs_set_key_type(&key, BTRFS_ROOT_ITEM_KEY);
149466 + ret = btrfs_insert_root(trans, root->fs_info->log_root_tree, &key,
149467 + &root_item);
149468 + if (ret)
149469 + goto fail;
149470 +
149471 + new_root = btrfs_read_fs_root_no_radix(root->fs_info->log_root_tree,
149472 + &key);
149473 + BUG_ON(!new_root);
149474 +
149475 + WARN_ON(root->log_root);
149476 + root->log_root = new_root;
149477 +
149478 + /*
149479 + * log trees do not get reference counted because they go away
149480 + * before a real commit is actually done. They do store pointers
149481 + * to file data extents, and those reference counts still get
149482 + * updated (along with back refs to the log tree).
149483 + */
149484 + new_root->ref_cows = 0;
149485 + new_root->last_trans = trans->transid;
149486 +
149487 + /*
149488 + * we need to make sure the root block for this new tree
149489 + * is marked as dirty in the dirty_log_pages tree. This
149490 + * is how it gets flushed down to disk at tree log commit time.
149491 + *
149492 + * the tree logging mutex keeps others from coming in and changing
149493 + * the new_root->node, so we can safely access it here
149494 + */
149495 + set_extent_dirty(&new_root->dirty_log_pages, new_root->node->start,
149496 + new_root->node->start + new_root->node->len - 1,
149497 + GFP_NOFS);
149498 +
149499 +fail:
149500 + return ret;
149501 +}
149502 +
149503 +/*
149504 * start a sub transaction and setup the log tree
149505 * this increments the log tree writer count to make the people
149506 * syncing the tree wait for us to finish
149507 @@ -86,14 +184,6 @@
149508 struct btrfs_root *root)
149509 {
149510 int ret;
149511 -
149512 - mutex_lock(&root->log_mutex);
149513 - if (root->log_root) {
149514 - root->log_batch++;
149515 - atomic_inc(&root->log_writers);
149516 - mutex_unlock(&root->log_mutex);
149517 - return 0;
149518 - }
149519 mutex_lock(&root->fs_info->tree_log_mutex);
149520 if (!root->fs_info->log_root_tree) {
149521 ret = btrfs_init_log_root_tree(trans, root->fs_info);
149522 @@ -103,10 +193,9 @@
149523 ret = btrfs_add_log_tree(trans, root);
149524 BUG_ON(ret);
149525 }
149526 + atomic_inc(&root->fs_info->tree_log_writers);
149527 + root->fs_info->tree_log_batch++;
149528 mutex_unlock(&root->fs_info->tree_log_mutex);
149529 - root->log_batch++;
149530 - atomic_inc(&root->log_writers);
149531 - mutex_unlock(&root->log_mutex);
149532 return 0;
149533 }
149534
149535 @@ -123,12 +212,13 @@
149536 if (!root->log_root)
149537 return -ENOENT;
149538
149539 - mutex_lock(&root->log_mutex);
149540 + mutex_lock(&root->fs_info->tree_log_mutex);
149541 if (root->log_root) {
149542 ret = 0;
149543 - atomic_inc(&root->log_writers);
149544 + atomic_inc(&root->fs_info->tree_log_writers);
149545 + root->fs_info->tree_log_batch++;
149546 }
149547 - mutex_unlock(&root->log_mutex);
149548 + mutex_unlock(&root->fs_info->tree_log_mutex);
149549 return ret;
149550 }
149551
149552 @@ -138,11 +228,10 @@
149553 */
149554 static int end_log_trans(struct btrfs_root *root)
149555 {
149556 - if (atomic_dec_and_test(&root->log_writers)) {
149557 - smp_mb();
149558 - if (waitqueue_active(&root->log_writer_wait))
149559 - wake_up(&root->log_writer_wait);
149560 - }
149561 + atomic_dec(&root->fs_info->tree_log_writers);
149562 + smp_mb();
149563 + if (waitqueue_active(&root->fs_info->tree_log_wait))
149564 + wake_up(&root->fs_info->tree_log_wait);
149565 return 0;
149566 }
149567
149568 @@ -1615,7 +1704,6 @@
149569
149570 btrfs_tree_lock(next);
149571 clean_tree_block(trans, root, next);
149572 - btrfs_set_lock_blocking(next);
149573 btrfs_wait_tree_block_writeback(next);
149574 btrfs_tree_unlock(next);
149575
149576 @@ -1662,7 +1750,6 @@
149577 next = path->nodes[*level];
149578 btrfs_tree_lock(next);
149579 clean_tree_block(trans, root, next);
149580 - btrfs_set_lock_blocking(next);
149581 btrfs_wait_tree_block_writeback(next);
149582 btrfs_tree_unlock(next);
149583
149584 @@ -1720,7 +1807,6 @@
149585
149586 btrfs_tree_lock(next);
149587 clean_tree_block(trans, root, next);
149588 - btrfs_set_lock_blocking(next);
149589 btrfs_wait_tree_block_writeback(next);
149590 btrfs_tree_unlock(next);
149591
149592 @@ -1793,7 +1879,6 @@
149593
149594 btrfs_tree_lock(next);
149595 clean_tree_block(trans, log, next);
149596 - btrfs_set_lock_blocking(next);
149597 btrfs_wait_tree_block_writeback(next);
149598 btrfs_tree_unlock(next);
149599
149600 @@ -1817,65 +1902,26 @@
149601 }
149602 }
149603 btrfs_free_path(path);
149604 + if (wc->free)
149605 + free_extent_buffer(log->node);
149606 return ret;
149607 }
149608
149609 -/*
149610 - * helper function to update the item for a given subvolumes log root
149611 - * in the tree of log roots
149612 - */
149613 -static int update_log_root(struct btrfs_trans_handle *trans,
149614 - struct btrfs_root *log)
149615 -{
149616 - int ret;
149617 -
149618 - if (log->log_transid == 1) {
149619 - /* insert root item on the first sync */
149620 - ret = btrfs_insert_root(trans, log->fs_info->log_root_tree,
149621 - &log->root_key, &log->root_item);
149622 - } else {
149623 - ret = btrfs_update_root(trans, log->fs_info->log_root_tree,
149624 - &log->root_key, &log->root_item);
149625 - }
149626 - return ret;
149627 -}
149628 -
149629 -static int wait_log_commit(struct btrfs_root *root, unsigned long transid)
149630 +static int wait_log_commit(struct btrfs_root *log)
149631 {
149632 DEFINE_WAIT(wait);
149633 - int index = transid % 2;
149634 + u64 transid = log->fs_info->tree_log_transid;
149635
149636 - /*
149637 - * we only allow two pending log transactions at a time,
149638 - * so we know that if ours is more than 2 older than the
149639 - * current transaction, we're done
149640 - */
149641 do {
149642 - prepare_to_wait(&root->log_commit_wait[index],
149643 - &wait, TASK_UNINTERRUPTIBLE);
149644 - mutex_unlock(&root->log_mutex);
149645 - if (root->log_transid < transid + 2 &&
149646 - atomic_read(&root->log_commit[index]))
149647 + prepare_to_wait(&log->fs_info->tree_log_wait, &wait,
149648 + TASK_UNINTERRUPTIBLE);
149649 + mutex_unlock(&log->fs_info->tree_log_mutex);
149650 + if (atomic_read(&log->fs_info->tree_log_commit))
149651 schedule();
149652 - finish_wait(&root->log_commit_wait[index], &wait);
149653 - mutex_lock(&root->log_mutex);
149654 - } while (root->log_transid < transid + 2 &&
149655 - atomic_read(&root->log_commit[index]));
149656 - return 0;
149657 -}
149658 -
149659 -static int wait_for_writer(struct btrfs_root *root)
149660 -{
149661 - DEFINE_WAIT(wait);
149662 - while (atomic_read(&root->log_writers)) {
149663 - prepare_to_wait(&root->log_writer_wait,
149664 - &wait, TASK_UNINTERRUPTIBLE);
149665 - mutex_unlock(&root->log_mutex);
149666 - if (atomic_read(&root->log_writers))
149667 - schedule();
149668 - mutex_lock(&root->log_mutex);
149669 - finish_wait(&root->log_writer_wait, &wait);
149670 - }
149671 + finish_wait(&log->fs_info->tree_log_wait, &wait);
149672 + mutex_lock(&log->fs_info->tree_log_mutex);
149673 + } while (transid == log->fs_info->tree_log_transid &&
149674 + atomic_read(&log->fs_info->tree_log_commit));
149675 return 0;
149676 }
149677
149678 @@ -1887,114 +1933,57 @@
149679 int btrfs_sync_log(struct btrfs_trans_handle *trans,
149680 struct btrfs_root *root)
149681 {
149682 - int index1;
149683 - int index2;
149684 int ret;
149685 + unsigned long batch;
149686 struct btrfs_root *log = root->log_root;
149687 - struct btrfs_root *log_root_tree = root->fs_info->log_root_tree;
149688
149689 - mutex_lock(&root->log_mutex);
149690 - index1 = root->log_transid % 2;
149691 - if (atomic_read(&root->log_commit[index1])) {
149692 - wait_log_commit(root, root->log_transid);
149693 - mutex_unlock(&root->log_mutex);
149694 - return 0;
149695 + mutex_lock(&log->fs_info->tree_log_mutex);
149696 + if (atomic_read(&log->fs_info->tree_log_commit)) {
149697 + wait_log_commit(log);
149698 + goto out;
149699 }
149700 - atomic_set(&root->log_commit[index1], 1);
149701 -
149702 - /* wait for previous tree log sync to complete */
149703 - if (atomic_read(&root->log_commit[(index1 + 1) % 2]))
149704 - wait_log_commit(root, root->log_transid - 1);
149705 + atomic_set(&log->fs_info->tree_log_commit, 1);
149706
149707 while (1) {
149708 - unsigned long batch = root->log_batch;
149709 - mutex_unlock(&root->log_mutex);
149710 + batch = log->fs_info->tree_log_batch;
149711 + mutex_unlock(&log->fs_info->tree_log_mutex);
149712 schedule_timeout_uninterruptible(1);
149713 - mutex_lock(&root->log_mutex);
149714 - wait_for_writer(root);
149715 - if (batch == root->log_batch)
149716 + mutex_lock(&log->fs_info->tree_log_mutex);
149717 +
149718 + while (atomic_read(&log->fs_info->tree_log_writers)) {
149719 + DEFINE_WAIT(wait);
149720 + prepare_to_wait(&log->fs_info->tree_log_wait, &wait,
149721 + TASK_UNINTERRUPTIBLE);
149722 + mutex_unlock(&log->fs_info->tree_log_mutex);
149723 + if (atomic_read(&log->fs_info->tree_log_writers))
149724 + schedule();
149725 + mutex_lock(&log->fs_info->tree_log_mutex);
149726 + finish_wait(&log->fs_info->tree_log_wait, &wait);
149727 + }
149728 + if (batch == log->fs_info->tree_log_batch)
149729 break;
149730 }
149731
149732 ret = btrfs_write_and_wait_marked_extents(log, &log->dirty_log_pages);
149733 BUG_ON(ret);
149734 -
149735 - btrfs_set_root_bytenr(&log->root_item, log->node->start);
149736 - btrfs_set_root_generation(&log->root_item, trans->transid);
149737 - btrfs_set_root_level(&log->root_item, btrfs_header_level(log->node));
149738 -
149739 - root->log_batch = 0;
149740 - root->log_transid++;
149741 - log->log_transid = root->log_transid;
149742 - smp_mb();
149743 - /*
149744 - * log tree has been flushed to disk, new modifications of
149745 - * the log will be written to new positions. so it's safe to
149746 - * allow log writers to go in.
149747 - */
149748 - mutex_unlock(&root->log_mutex);
149749 -
149750 - mutex_lock(&log_root_tree->log_mutex);
149751 - log_root_tree->log_batch++;
149752 - atomic_inc(&log_root_tree->log_writers);
149753 - mutex_unlock(&log_root_tree->log_mutex);
149754 -
149755 - ret = update_log_root(trans, log);
149756 - BUG_ON(ret);
149757 -
149758 - mutex_lock(&log_root_tree->log_mutex);
149759 - if (atomic_dec_and_test(&log_root_tree->log_writers)) {
149760 - smp_mb();
149761 - if (waitqueue_active(&log_root_tree->log_writer_wait))
149762 - wake_up(&log_root_tree->log_writer_wait);
149763 - }
149764 -
149765 - index2 = log_root_tree->log_transid % 2;
149766 - if (atomic_read(&log_root_tree->log_commit[index2])) {
149767 - wait_log_commit(log_root_tree, log_root_tree->log_transid);
149768 - mutex_unlock(&log_root_tree->log_mutex);
149769 - goto out;
149770 - }
149771 - atomic_set(&log_root_tree->log_commit[index2], 1);
149772 -
149773 - if (atomic_read(&log_root_tree->log_commit[(index2 + 1) % 2]))
149774 - wait_log_commit(log_root_tree, log_root_tree->log_transid - 1);
149775 -
149776 - wait_for_writer(log_root_tree);
149777 -
149778 - ret = btrfs_write_and_wait_marked_extents(log_root_tree,
149779 - &log_root_tree->dirty_log_pages);
149780 + ret = btrfs_write_and_wait_marked_extents(root->fs_info->log_root_tree,
149781 + &root->fs_info->log_root_tree->dirty_log_pages);
149782 BUG_ON(ret);
149783
149784 btrfs_set_super_log_root(&root->fs_info->super_for_commit,
149785 - log_root_tree->node->start);
149786 + log->fs_info->log_root_tree->node->start);
149787 btrfs_set_super_log_root_level(&root->fs_info->super_for_commit,
149788 - btrfs_header_level(log_root_tree->node));
149789 -
149790 - log_root_tree->log_batch = 0;
149791 - log_root_tree->log_transid++;
149792 - smp_mb();
149793 -
149794 - mutex_unlock(&log_root_tree->log_mutex);
149795 -
149796 - /*
149797 - * nobody else is going to jump in and write the the ctree
149798 - * super here because the log_commit atomic below is protecting
149799 - * us. We must be called with a transaction handle pinning
149800 - * the running transaction open, so a full commit can't hop
149801 - * in and cause problems either.
149802 - */
149803 - write_ctree_super(trans, root->fs_info->tree_root, 2);
149804 + btrfs_header_level(log->fs_info->log_root_tree->node));
149805
149806 - atomic_set(&log_root_tree->log_commit[index2], 0);
149807 + write_ctree_super(trans, log->fs_info->tree_root, 2);
149808 + log->fs_info->tree_log_transid++;
149809 + log->fs_info->tree_log_batch = 0;
149810 + atomic_set(&log->fs_info->tree_log_commit, 0);
149811 smp_mb();
149812 - if (waitqueue_active(&log_root_tree->log_commit_wait[index2]))
149813 - wake_up(&log_root_tree->log_commit_wait[index2]);
149814 + if (waitqueue_active(&log->fs_info->tree_log_wait))
149815 + wake_up(&log->fs_info->tree_log_wait);
149816 out:
149817 - atomic_set(&root->log_commit[index1], 0);
149818 - smp_mb();
149819 - if (waitqueue_active(&root->log_commit_wait[index1]))
149820 - wake_up(&root->log_commit_wait[index1]);
149821 + mutex_unlock(&log->fs_info->tree_log_mutex);
149822 return 0;
149823 }
149824
149825 @@ -2030,18 +2019,38 @@
149826 start, end, GFP_NOFS);
149827 }
149828
149829 - if (log->log_transid > 0) {
149830 - ret = btrfs_del_root(trans, root->fs_info->log_root_tree,
149831 - &log->root_key);
149832 - BUG_ON(ret);
149833 - }
149834 + log = root->log_root;
149835 + ret = btrfs_del_root(trans, root->fs_info->log_root_tree,
149836 + &log->root_key);
149837 + BUG_ON(ret);
149838 root->log_root = NULL;
149839 - free_extent_buffer(log->node);
149840 - kfree(log);
149841 + kfree(root->log_root);
149842 return 0;
149843 }
149844
149845 /*
149846 + * helper function to update the item for a given subvolumes log root
149847 + * in the tree of log roots
149848 + */
149849 +static int update_log_root(struct btrfs_trans_handle *trans,
149850 + struct btrfs_root *log)
149851 +{
149852 + u64 bytenr = btrfs_root_bytenr(&log->root_item);
149853 + int ret;
149854 +
149855 + if (log->node->start == bytenr)
149856 + return 0;
149857 +
149858 + btrfs_set_root_bytenr(&log->root_item, log->node->start);
149859 + btrfs_set_root_generation(&log->root_item, trans->transid);
149860 + btrfs_set_root_level(&log->root_item, btrfs_header_level(log->node));
149861 + ret = btrfs_update_root(trans, log->fs_info->log_root_tree,
149862 + &log->root_key, &log->root_item);
149863 + BUG_ON(ret);
149864 + return ret;
149865 +}
149866 +
149867 +/*
149868 * If both a file and directory are logged, and unlinks or renames are
149869 * mixed in, we have a few interesting corners:
149870 *
149871 @@ -2702,6 +2711,11 @@
149872
149873 btrfs_free_path(path);
149874 btrfs_free_path(dst_path);
149875 +
149876 + mutex_lock(&root->fs_info->tree_log_mutex);
149877 + ret = update_log_root(trans, log);
149878 + BUG_ON(ret);
149879 + mutex_unlock(&root->fs_info->tree_log_mutex);
149880 out:
149881 return 0;
149882 }
149883 @@ -2832,9 +2846,7 @@
149884 BUG_ON(!wc.replay_dest);
149885
149886 wc.replay_dest->log_root = log;
149887 - mutex_lock(&fs_info->trans_mutex);
149888 btrfs_record_root_in_trans(wc.replay_dest);
149889 - mutex_unlock(&fs_info->trans_mutex);
149890 ret = walk_log_tree(trans, log, &wc);
149891 BUG_ON(ret);
149892
149893 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/volumes.c linux-2.6.29-rc3.owrt/fs/btrfs/volumes.c
149894 --- linux-2.6.29.owrt/fs/btrfs/volumes.c 2009-05-10 22:04:39.000000000 +0200
149895 +++ linux-2.6.29-rc3.owrt/fs/btrfs/volumes.c 2009-05-10 23:48:29.000000000 +0200
149896 @@ -20,6 +20,7 @@
149897 #include <linux/buffer_head.h>
149898 #include <linux/blkdev.h>
149899 #include <linux/random.h>
149900 +#include <linux/version.h>
149901 #include <asm/div64.h>
149902 #include "compat.h"
149903 #include "ctree.h"
149904 @@ -103,8 +104,10 @@
149905 u64 devid, u8 *uuid)
149906 {
149907 struct btrfs_device *dev;
149908 + struct list_head *cur;
149909
149910 - list_for_each_entry(dev, head, dev_list) {
149911 + list_for_each(cur, head) {
149912 + dev = list_entry(cur, struct btrfs_device, dev_list);
149913 if (dev->devid == devid &&
149914 (!uuid || !memcmp(dev->uuid, uuid, BTRFS_UUID_SIZE))) {
149915 return dev;
149916 @@ -115,9 +118,11 @@
149917
149918 static noinline struct btrfs_fs_devices *find_fsid(u8 *fsid)
149919 {
149920 + struct list_head *cur;
149921 struct btrfs_fs_devices *fs_devices;
149922
149923 - list_for_each_entry(fs_devices, &fs_uuids, list) {
149924 + list_for_each(cur, &fs_uuids) {
149925 + fs_devices = list_entry(cur, struct btrfs_fs_devices, list);
149926 if (memcmp(fsid, fs_devices->fsid, BTRFS_FSID_SIZE) == 0)
149927 return fs_devices;
149928 }
149929 @@ -154,7 +159,6 @@
149930 loop:
149931 spin_lock(&device->io_lock);
149932
149933 -loop_lock:
149934 /* take all the bios off the list at once and process them
149935 * later on (without the lock held). But, remember the
149936 * tail and other pointers so the bios can be properly reinserted
149937 @@ -204,7 +208,7 @@
149938 * is now congested. Back off and let other work structs
149939 * run instead
149940 */
149941 - if (pending && bdi_write_congested(bdi) && num_run > 16 &&
149942 + if (pending && bdi_write_congested(bdi) &&
149943 fs_info->fs_devices->open_devices > 1) {
149944 struct bio *old_head;
149945
149946 @@ -216,8 +220,7 @@
149947 tail->bi_next = old_head;
149948 else
149949 device->pending_bio_tail = tail;
149950 -
149951 - device->running_pending = 1;
149952 + device->running_pending = 0;
149953
149954 spin_unlock(&device->io_lock);
149955 btrfs_requeue_work(&device->work);
149956 @@ -226,11 +229,6 @@
149957 }
149958 if (again)
149959 goto loop;
149960 -
149961 - spin_lock(&device->io_lock);
149962 - if (device->pending_bios)
149963 - goto loop_lock;
149964 - spin_unlock(&device->io_lock);
149965 done:
149966 return 0;
149967 }
149968 @@ -347,11 +345,14 @@
149969
149970 int btrfs_close_extra_devices(struct btrfs_fs_devices *fs_devices)
149971 {
149972 - struct btrfs_device *device, *next;
149973 + struct list_head *tmp;
149974 + struct list_head *cur;
149975 + struct btrfs_device *device;
149976
149977 mutex_lock(&uuid_mutex);
149978 again:
149979 - list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) {
149980 + list_for_each_safe(cur, tmp, &fs_devices->devices) {
149981 + device = list_entry(cur, struct btrfs_device, dev_list);
149982 if (device->in_fs_metadata)
149983 continue;
149984
149985 @@ -382,12 +383,14 @@
149986
149987 static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
149988 {
149989 + struct list_head *cur;
149990 struct btrfs_device *device;
149991
149992 if (--fs_devices->opened > 0)
149993 return 0;
149994
149995 - list_for_each_entry(device, &fs_devices->devices, dev_list) {
149996 + list_for_each(cur, &fs_devices->devices) {
149997 + device = list_entry(cur, struct btrfs_device, dev_list);
149998 if (device->bdev) {
149999 close_bdev_exclusive(device->bdev, device->mode);
150000 fs_devices->open_devices--;
150001 @@ -436,6 +439,7 @@
150002 {
150003 struct block_device *bdev;
150004 struct list_head *head = &fs_devices->devices;
150005 + struct list_head *cur;
150006 struct btrfs_device *device;
150007 struct block_device *latest_bdev = NULL;
150008 struct buffer_head *bh;
150009 @@ -446,7 +450,8 @@
150010 int seeding = 1;
150011 int ret = 0;
150012
150013 - list_for_each_entry(device, head, dev_list) {
150014 + list_for_each(cur, head) {
150015 + device = list_entry(cur, struct btrfs_device, dev_list);
150016 if (device->bdev)
150017 continue;
150018 if (!device->name)
150019 @@ -573,7 +578,7 @@
150020 *(unsigned long long *)disk_super->fsid,
150021 *(unsigned long long *)(disk_super->fsid + 8));
150022 }
150023 - printk(KERN_CONT "devid %llu transid %llu %s\n",
150024 + printk(KERN_INFO "devid %llu transid %llu %s\n",
150025 (unsigned long long)devid, (unsigned long long)transid, path);
150026 ret = device_list_add(path, disk_super, devid, fs_devices_ret);
150027
150028 @@ -1012,12 +1017,14 @@
150029 }
150030
150031 if (strcmp(device_path, "missing") == 0) {
150032 + struct list_head *cur;
150033 struct list_head *devices;
150034 struct btrfs_device *tmp;
150035
150036 device = NULL;
150037 devices = &root->fs_info->fs_devices->devices;
150038 - list_for_each_entry(tmp, devices, dev_list) {
150039 + list_for_each(cur, devices) {
150040 + tmp = list_entry(cur, struct btrfs_device, dev_list);
150041 if (tmp->in_fs_metadata && !tmp->bdev) {
150042 device = tmp;
150043 break;
150044 @@ -1273,6 +1280,7 @@
150045 struct btrfs_trans_handle *trans;
150046 struct btrfs_device *device;
150047 struct block_device *bdev;
150048 + struct list_head *cur;
150049 struct list_head *devices;
150050 struct super_block *sb = root->fs_info->sb;
150051 u64 total_bytes;
150052 @@ -1296,7 +1304,8 @@
150053 mutex_lock(&root->fs_info->volume_mutex);
150054
150055 devices = &root->fs_info->fs_devices->devices;
150056 - list_for_each_entry(device, devices, dev_list) {
150057 + list_for_each(cur, devices) {
150058 + device = list_entry(cur, struct btrfs_device, dev_list);
150059 if (device->bdev == bdev) {
150060 ret = -EEXIST;
150061 goto error;
150062 @@ -1374,12 +1383,6 @@
150063 ret = btrfs_add_device(trans, root, device);
150064 }
150065
150066 - /*
150067 - * we've got more storage, clear any full flags on the space
150068 - * infos
150069 - */
150070 - btrfs_clear_space_info_full(root->fs_info);
150071 -
150072 unlock_chunks(root);
150073 btrfs_commit_transaction(trans, root);
150074
150075 @@ -1465,8 +1468,6 @@
150076 device->fs_devices->total_rw_bytes += diff;
150077
150078 device->total_bytes = new_size;
150079 - btrfs_clear_space_info_full(device->dev_root->fs_info);
150080 -
150081 return btrfs_update_device(trans, device);
150082 }
150083
150084 @@ -1703,6 +1704,7 @@
150085 int btrfs_balance(struct btrfs_root *dev_root)
150086 {
150087 int ret;
150088 + struct list_head *cur;
150089 struct list_head *devices = &dev_root->fs_info->fs_devices->devices;
150090 struct btrfs_device *device;
150091 u64 old_size;
150092 @@ -1721,7 +1723,8 @@
150093 dev_root = dev_root->fs_info->dev_root;
150094
150095 /* step one make some room on all the devices */
150096 - list_for_each_entry(device, devices, dev_list) {
150097 + list_for_each(cur, devices) {
150098 + device = list_entry(cur, struct btrfs_device, dev_list);
150099 old_size = device->total_bytes;
150100 size_to_free = div_factor(old_size, 1);
150101 size_to_free = min(size_to_free, (u64)1 * 1024 * 1024);
150102 @@ -2902,6 +2905,10 @@
150103 free_extent_map(em);
150104 }
150105
150106 + map = kzalloc(sizeof(*map), GFP_NOFS);
150107 + if (!map)
150108 + return -ENOMEM;
150109 +
150110 em = alloc_extent_map(GFP_NOFS);
150111 if (!em)
150112 return -ENOMEM;
150113 @@ -3110,8 +3117,6 @@
150114 if (!sb)
150115 return -ENOMEM;
150116 btrfs_set_buffer_uptodate(sb);
150117 - btrfs_set_buffer_lockdep_class(sb, 0);
150118 -
150119 write_extent_buffer(sb, super_copy, 0, BTRFS_SUPER_INFO_SIZE);
150120 array_size = btrfs_super_sys_array_size(super_copy);
150121
150122 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/xattr.c linux-2.6.29-rc3.owrt/fs/btrfs/xattr.c
150123 --- linux-2.6.29.owrt/fs/btrfs/xattr.c 2009-05-10 22:04:39.000000000 +0200
150124 +++ linux-2.6.29-rc3.owrt/fs/btrfs/xattr.c 2009-05-10 23:48:29.000000000 +0200
150125 @@ -21,7 +21,6 @@
150126 #include <linux/slab.h>
150127 #include <linux/rwsem.h>
150128 #include <linux/xattr.h>
150129 -#include <linux/security.h>
150130 #include "ctree.h"
150131 #include "btrfs_inode.h"
150132 #include "transaction.h"
150133 @@ -46,12 +45,9 @@
150134 /* lookup the xattr by name */
150135 di = btrfs_lookup_xattr(NULL, root, path, inode->i_ino, name,
150136 strlen(name), 0);
150137 - if (!di) {
150138 + if (!di || IS_ERR(di)) {
150139 ret = -ENODATA;
150140 goto out;
150141 - } else if (IS_ERR(di)) {
150142 - ret = PTR_ERR(di);
150143 - goto out;
150144 }
150145
150146 leaf = path->nodes[0];
150147 @@ -66,14 +62,6 @@
150148 ret = -ERANGE;
150149 goto out;
150150 }
150151 -
150152 - /*
150153 - * The way things are packed into the leaf is like this
150154 - * |struct btrfs_dir_item|name|data|
150155 - * where name is the xattr name, so security.foo, and data is the
150156 - * content of the xattr. data_ptr points to the location in memory
150157 - * where the data starts in the in memory leaf
150158 - */
150159 data_ptr = (unsigned long)((char *)(di + 1) +
150160 btrfs_dir_name_len(leaf, di));
150161 read_extent_buffer(leaf, buffer, data_ptr,
150162 @@ -98,7 +86,7 @@
150163 if (!path)
150164 return -ENOMEM;
150165
150166 - trans = btrfs_join_transaction(root, 1);
150167 + trans = btrfs_start_transaction(root, 1);
150168 btrfs_set_trans_block_group(trans, inode);
150169
150170 /* first lets see if we already have this xattr */
150171 @@ -188,6 +176,7 @@
150172 ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
150173 if (ret < 0)
150174 goto err;
150175 + ret = 0;
150176 advance = 0;
150177 while (1) {
150178 leaf = path->nodes[0];
150179 @@ -331,34 +320,3 @@
150180 return -EOPNOTSUPP;
150181 return __btrfs_setxattr(dentry->d_inode, name, NULL, 0, XATTR_REPLACE);
150182 }
150183 -
150184 -int btrfs_xattr_security_init(struct inode *inode, struct inode *dir)
150185 -{
150186 - int err;
150187 - size_t len;
150188 - void *value;
150189 - char *suffix;
150190 - char *name;
150191 -
150192 - err = security_inode_init_security(inode, dir, &suffix, &value, &len);
150193 - if (err) {
150194 - if (err == -EOPNOTSUPP)
150195 - return 0;
150196 - return err;
150197 - }
150198 -
150199 - name = kmalloc(XATTR_SECURITY_PREFIX_LEN + strlen(suffix) + 1,
150200 - GFP_NOFS);
150201 - if (!name) {
150202 - err = -ENOMEM;
150203 - } else {
150204 - strcpy(name, XATTR_SECURITY_PREFIX);
150205 - strcpy(name + XATTR_SECURITY_PREFIX_LEN, suffix);
150206 - err = __btrfs_setxattr(inode, name, value, len, 0);
150207 - kfree(name);
150208 - }
150209 -
150210 - kfree(suffix);
150211 - kfree(value);
150212 - return err;
150213 -}
150214 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/btrfs/xattr.h linux-2.6.29-rc3.owrt/fs/btrfs/xattr.h
150215 --- linux-2.6.29.owrt/fs/btrfs/xattr.h 2009-05-10 22:04:39.000000000 +0200
150216 +++ linux-2.6.29-rc3.owrt/fs/btrfs/xattr.h 2009-05-10 23:48:29.000000000 +0200
150217 @@ -36,6 +36,4 @@
150218 const void *value, size_t size, int flags);
150219 extern int btrfs_removexattr(struct dentry *dentry, const char *name);
150220
150221 -extern int btrfs_xattr_security_init(struct inode *inode, struct inode *dir);
150222 -
150223 #endif /* __XATTR__ */
150224 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/buffer.c linux-2.6.29-rc3.owrt/fs/buffer.c
150225 --- linux-2.6.29.owrt/fs/buffer.c 2009-05-10 22:04:39.000000000 +0200
150226 +++ linux-2.6.29-rc3.owrt/fs/buffer.c 2009-05-10 23:48:29.000000000 +0200
150227 @@ -760,9 +760,15 @@
150228 * If warn is true, then emit a warning if the page is not uptodate and has
150229 * not been truncated.
150230 */
150231 -static void __set_page_dirty(struct page *page,
150232 +static int __set_page_dirty(struct page *page,
150233 struct address_space *mapping, int warn)
150234 {
150235 + if (unlikely(!mapping))
150236 + return !TestSetPageDirty(page);
150237 +
150238 + if (TestSetPageDirty(page))
150239 + return 0;
150240 +
150241 spin_lock_irq(&mapping->tree_lock);
150242 if (page->mapping) { /* Race with truncate? */
150243 WARN_ON_ONCE(warn && !PageUptodate(page));
150244 @@ -771,7 +777,6 @@
150245 __inc_zone_page_state(page, NR_FILE_DIRTY);
150246 __inc_bdi_stat(mapping->backing_dev_info,
150247 BDI_RECLAIMABLE);
150248 - task_dirty_inc(current);
150249 task_io_account_write(PAGE_CACHE_SIZE);
150250 }
150251 radix_tree_tag_set(&mapping->page_tree,
150252 @@ -779,6 +784,8 @@
150253 }
150254 spin_unlock_irq(&mapping->tree_lock);
150255 __mark_inode_dirty(mapping->host, I_DIRTY_PAGES);
150256 +
150257 + return 1;
150258 }
150259
150260 /*
150261 @@ -808,7 +815,6 @@
150262 */
150263 int __set_page_dirty_buffers(struct page *page)
150264 {
150265 - int newly_dirty;
150266 struct address_space *mapping = page_mapping(page);
150267
150268 if (unlikely(!mapping))
150269 @@ -824,12 +830,9 @@
150270 bh = bh->b_this_page;
150271 } while (bh != head);
150272 }
150273 - newly_dirty = !TestSetPageDirty(page);
150274 spin_unlock(&mapping->private_lock);
150275
150276 - if (newly_dirty)
150277 - __set_page_dirty(page, mapping, 1);
150278 - return newly_dirty;
150279 + return __set_page_dirty(page, mapping, 1);
150280 }
150281 EXPORT_SYMBOL(__set_page_dirty_buffers);
150282
150283 @@ -1258,11 +1261,8 @@
150284 return;
150285 }
150286
150287 - if (!test_set_buffer_dirty(bh)) {
150288 - struct page *page = bh->b_page;
150289 - if (!TestSetPageDirty(page))
150290 - __set_page_dirty(page, page_mapping(page), 0);
150291 - }
150292 + if (!test_set_buffer_dirty(bh))
150293 + __set_page_dirty(bh->b_page, page_mapping(bh->b_page), 0);
150294 }
150295
150296 /*
150297 @@ -2688,7 +2688,7 @@
150298 struct buffer_head *bh;
150299 BUG_ON(fsdata != NULL && page_has_buffers(page));
150300
150301 - if (unlikely(copied < len) && head)
150302 + if (unlikely(copied < len) && !page_has_buffers(page))
150303 attach_nobh_buffers(page, head);
150304 if (page_has_buffers(page))
150305 return generic_write_end(file, mapping, pos, len,
150306 @@ -3108,7 +3108,7 @@
150307 if (test_clear_buffer_dirty(bh)) {
150308 get_bh(bh);
150309 bh->b_end_io = end_buffer_write_sync;
150310 - ret = submit_bh(WRITE, bh);
150311 + ret = submit_bh(WRITE_SYNC, bh);
150312 wait_on_buffer(bh);
150313 if (buffer_eopnotsupp(bh)) {
150314 clear_buffer_eopnotsupp(bh);
150315 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/CHANGES linux-2.6.29-rc3.owrt/fs/cifs/CHANGES
150316 --- linux-2.6.29.owrt/fs/cifs/CHANGES 2009-05-10 22:04:39.000000000 +0200
150317 +++ linux-2.6.29-rc3.owrt/fs/cifs/CHANGES 2009-05-10 23:48:29.000000000 +0200
150318 @@ -1,13 +1,3 @@
150319 -Version 1.57
150320 -------------
150321 -Improve support for multiple security contexts to the same server. We
150322 -used to use the same "vcnumber" for all connections which could cause
150323 -the server to treat subsequent connections, especially those that
150324 -are authenticated as guest, as reconnections, invalidating the earlier
150325 -user's smb session. This fix allows cifs to mount multiple times to the
150326 -same server with different userids without risking invalidating earlier
150327 -established security contexts.
150328 -
150329 Version 1.56
150330 ------------
150331 Add "forcemandatorylock" mount option to allow user to use mandatory
150332 @@ -15,12 +5,7 @@
150333 support posix byte range locks. Fix query of root inode when prefixpath
150334 specified and user does not have access to query information about the
150335 top of the share. Fix problem in 2.6.28 resolving DFS paths to
150336 -Samba servers (worked to Windows). Fix rmdir so that pending search
150337 -(readdir) requests do not get invalid results which include the now
150338 -removed directory. Fix oops in cifs_dfs_ref.c when prefixpath is not reachable
150339 -when using DFS. Add better file create support to servers which support
150340 -the CIFS POSIX protocol extensions (this adds support for new flags
150341 -on create, and improves semantics for write of locked ranges).
150342 +Samba servers (worked to Windows).
150343
150344 Version 1.55
150345 ------------
150346 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/cifsencrypt.c linux-2.6.29-rc3.owrt/fs/cifs/cifsencrypt.c
150347 --- linux-2.6.29.owrt/fs/cifs/cifsencrypt.c 2009-05-10 22:04:39.000000000 +0200
150348 +++ linux-2.6.29-rc3.owrt/fs/cifs/cifsencrypt.c 2009-05-10 23:48:29.000000000 +0200
150349 @@ -48,11 +48,11 @@
150350 if ((cifs_pdu == NULL) || (signature == NULL) || (key == NULL))
150351 return -EINVAL;
150352
150353 - cifs_MD5_init(&context);
150354 - cifs_MD5_update(&context, (char *)&key->data, key->len);
150355 - cifs_MD5_update(&context, cifs_pdu->Protocol, cifs_pdu->smb_buf_length);
150356 + MD5Init(&context);
150357 + MD5Update(&context, (char *)&key->data, key->len);
150358 + MD5Update(&context, cifs_pdu->Protocol, cifs_pdu->smb_buf_length);
150359
150360 - cifs_MD5_final(signature, &context);
150361 + MD5Final(signature, &context);
150362 return 0;
150363 }
150364
150365 @@ -96,8 +96,8 @@
150366 if ((iov == NULL) || (signature == NULL) || (key == NULL))
150367 return -EINVAL;
150368
150369 - cifs_MD5_init(&context);
150370 - cifs_MD5_update(&context, (char *)&key->data, key->len);
150371 + MD5Init(&context);
150372 + MD5Update(&context, (char *)&key->data, key->len);
150373 for (i = 0; i < n_vec; i++) {
150374 if (iov[i].iov_len == 0)
150375 continue;
150376 @@ -110,13 +110,13 @@
150377 if (i == 0) {
150378 if (iov[0].iov_len <= 8) /* cmd field at offset 9 */
150379 break; /* nothing to sign or corrupt header */
150380 - cifs_MD5_update(&context, iov[0].iov_base+4,
150381 + MD5Update(&context, iov[0].iov_base+4,
150382 iov[0].iov_len-4);
150383 } else
150384 - cifs_MD5_update(&context, iov[i].iov_base, iov[i].iov_len);
150385 + MD5Update(&context, iov[i].iov_base, iov[i].iov_len);
150386 }
150387
150388 - cifs_MD5_final(signature, &context);
150389 + MD5Final(signature, &context);
150390
150391 return 0;
150392 }
150393 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/cifsfs.h linux-2.6.29-rc3.owrt/fs/cifs/cifsfs.h
150394 --- linux-2.6.29.owrt/fs/cifs/cifsfs.h 2009-05-10 22:04:39.000000000 +0200
150395 +++ linux-2.6.29-rc3.owrt/fs/cifs/cifsfs.h 2009-05-10 23:48:29.000000000 +0200
150396 @@ -100,5 +100,5 @@
150397 extern const struct export_operations cifs_export_ops;
150398 #endif /* EXPERIMENTAL */
150399
150400 -#define CIFS_VERSION "1.57"
150401 +#define CIFS_VERSION "1.56"
150402 #endif /* _CIFSFS_H */
150403 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/cifsglob.h linux-2.6.29-rc3.owrt/fs/cifs/cifsglob.h
150404 --- linux-2.6.29.owrt/fs/cifs/cifsglob.h 2009-05-10 22:04:39.000000000 +0200
150405 +++ linux-2.6.29-rc3.owrt/fs/cifs/cifsglob.h 2009-05-10 23:48:29.000000000 +0200
150406 @@ -164,12 +164,9 @@
150407 /* multiplexed reads or writes */
150408 unsigned int maxBuf; /* maxBuf specifies the maximum */
150409 /* message size the server can send or receive for non-raw SMBs */
150410 - unsigned int max_rw; /* maxRw specifies the maximum */
150411 + unsigned int maxRw; /* maxRw specifies the maximum */
150412 /* message size the server can send or receive for */
150413 /* SMB_COM_WRITE_RAW or SMB_COM_READ_RAW. */
150414 - unsigned int max_vcs; /* maximum number of smb sessions, at least
150415 - those that can be specified uniquely with
150416 - vcnumbers */
150417 char sessid[4]; /* unique token id for this session */
150418 /* (returned on Negotiate */
150419 int capabilities; /* allow selective disabling of caps by smb sess */
150420 @@ -213,7 +210,6 @@
150421 unsigned overrideSecFlg; /* if non-zero override global sec flags */
150422 __u16 ipc_tid; /* special tid for connection to IPC share */
150423 __u16 flags;
150424 - __u16 vcnum;
150425 char *serverOS; /* name of operating system underlying server */
150426 char *serverNOS; /* name of network operating system of server */
150427 char *serverDomain; /* security realm of server */
150428 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/cifsproto.h linux-2.6.29-rc3.owrt/fs/cifs/cifsproto.h
150429 --- linux-2.6.29.owrt/fs/cifs/cifsproto.h 2009-05-10 22:04:39.000000000 +0200
150430 +++ linux-2.6.29-rc3.owrt/fs/cifs/cifsproto.h 2009-05-10 23:48:29.000000000 +0200
150431 @@ -35,14 +35,13 @@
150432 extern void cifs_buf_release(void *);
150433 extern struct smb_hdr *cifs_small_buf_get(void);
150434 extern void cifs_small_buf_release(void *);
150435 -extern int smb_send(struct TCP_Server_Info *, struct smb_hdr *,
150436 - unsigned int /* length */);
150437 +extern int smb_send(struct socket *, struct smb_hdr *,
150438 + unsigned int /* length */ , struct sockaddr *, bool);
150439 extern unsigned int _GetXid(void);
150440 extern void _FreeXid(unsigned int);
150441 #define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__func__, xid,current_fsuid()));
150442 #define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__func__,curr_xid,(int)rc));}
150443 extern char *build_path_from_dentry(struct dentry *);
150444 -extern char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb);
150445 extern char *build_wildcard_path_from_dentry(struct dentry *direntry);
150446 /* extern void renew_parental_timestamps(struct dentry *direntry);*/
150447 extern int SendReceive(const unsigned int /* xid */ , struct cifsSesInfo *,
150448 @@ -92,9 +91,6 @@
150449 extern __le64 cnvrtDosCifsTm(__u16 date, __u16 time);
150450 extern struct timespec cnvrtDosUnixTm(__u16 date, __u16 time);
150451
150452 -extern void posix_fill_in_inode(struct inode *tmp_inode,
150453 - FILE_UNIX_BASIC_INFO *pData, int isNewInode);
150454 -extern struct inode *cifs_new_inode(struct super_block *sb, __u64 *inum);
150455 extern int cifs_get_inode_info(struct inode **pinode,
150456 const unsigned char *search_path,
150457 FILE_ALL_INFO *pfile_info,
150458 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/cifssmb.c linux-2.6.29-rc3.owrt/fs/cifs/cifssmb.c
150459 --- linux-2.6.29.owrt/fs/cifs/cifssmb.c 2009-05-10 22:04:39.000000000 +0200
150460 +++ linux-2.6.29-rc3.owrt/fs/cifs/cifssmb.c 2009-05-10 23:48:29.000000000 +0200
150461 @@ -528,15 +528,14 @@
150462 server->maxReq = le16_to_cpu(rsp->MaxMpxCount);
150463 server->maxBuf = min((__u32)le16_to_cpu(rsp->MaxBufSize),
150464 (__u32)CIFSMaxBufSize + MAX_CIFS_HDR_SIZE);
150465 - server->max_vcs = le16_to_cpu(rsp->MaxNumberVcs);
150466 GETU32(server->sessid) = le32_to_cpu(rsp->SessionKey);
150467 /* even though we do not use raw we might as well set this
150468 accurately, in case we ever find a need for it */
150469 if ((le16_to_cpu(rsp->RawMode) & RAW_ENABLE) == RAW_ENABLE) {
150470 - server->max_rw = 0xFF00;
150471 + server->maxRw = 0xFF00;
150472 server->capabilities = CAP_MPX_MODE | CAP_RAW_MODE;
150473 } else {
150474 - server->max_rw = 0;/* do not need to use raw anyway */
150475 + server->maxRw = 0;/* we do not need to use raw anyway */
150476 server->capabilities = CAP_MPX_MODE;
150477 }
150478 tmp = (__s16)le16_to_cpu(rsp->ServerTimeZone);
150479 @@ -639,7 +638,7 @@
150480 /* probably no need to store and check maxvcs */
150481 server->maxBuf = min(le32_to_cpu(pSMBr->MaxBufferSize),
150482 (__u32) CIFSMaxBufSize + MAX_CIFS_HDR_SIZE);
150483 - server->max_rw = le32_to_cpu(pSMBr->MaxRawSize);
150484 + server->maxRw = le32_to_cpu(pSMBr->MaxRawSize);
150485 cFYI(DBG2, ("Max buf = %d", ses->server->maxBuf));
150486 GETU32(ses->server->sessid) = le32_to_cpu(pSMBr->SessionKey);
150487 server->capabilities = le32_to_cpu(pSMBr->Capabilities);
150488 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/connect.c linux-2.6.29-rc3.owrt/fs/cifs/connect.c
150489 --- linux-2.6.29.owrt/fs/cifs/connect.c 2009-05-10 22:04:39.000000000 +0200
150490 +++ linux-2.6.29-rc3.owrt/fs/cifs/connect.c 2009-05-10 23:48:29.000000000 +0200
150491 @@ -23,6 +23,7 @@
150492 #include <linux/string.h>
150493 #include <linux/list.h>
150494 #include <linux/wait.h>
150495 +#include <linux/ipv6.h>
150496 #include <linux/pagemap.h>
150497 #include <linux/ctype.h>
150498 #include <linux/utsname.h>
150499 @@ -34,7 +35,6 @@
150500 #include <linux/freezer.h>
150501 #include <asm/uaccess.h>
150502 #include <asm/processor.h>
150503 -#include <net/ipv6.h>
150504 #include "cifspdu.h"
150505 #include "cifsglob.h"
150506 #include "cifsproto.h"
150507 @@ -1354,7 +1354,7 @@
150508 }
150509
150510 static struct TCP_Server_Info *
150511 -cifs_find_tcp_session(struct sockaddr_storage *addr)
150512 +cifs_find_tcp_session(struct sockaddr *addr)
150513 {
150514 struct list_head *tmp;
150515 struct TCP_Server_Info *server;
150516 @@ -1374,13 +1374,13 @@
150517 if (server->tcpStatus == CifsNew)
150518 continue;
150519
150520 - if (addr->ss_family == AF_INET &&
150521 + if (addr->sa_family == AF_INET &&
150522 (addr4->sin_addr.s_addr !=
150523 server->addr.sockAddr.sin_addr.s_addr))
150524 continue;
150525 - else if (addr->ss_family == AF_INET6 &&
150526 - !ipv6_addr_equal(&server->addr.sockAddr6.sin6_addr,
150527 - &addr6->sin6_addr))
150528 + else if (addr->sa_family == AF_INET6 &&
150529 + memcmp(&server->addr.sockAddr6.sin6_addr,
150530 + &addr6->sin6_addr, sizeof(addr6->sin6_addr)))
150531 continue;
150532
150533 ++server->srv_count;
150534 @@ -1419,12 +1419,12 @@
150535 cifs_get_tcp_session(struct smb_vol *volume_info)
150536 {
150537 struct TCP_Server_Info *tcp_ses = NULL;
150538 - struct sockaddr_storage addr;
150539 + struct sockaddr addr;
150540 struct sockaddr_in *sin_server = (struct sockaddr_in *) &addr;
150541 struct sockaddr_in6 *sin_server6 = (struct sockaddr_in6 *) &addr;
150542 int rc;
150543
150544 - memset(&addr, 0, sizeof(struct sockaddr_storage));
150545 + memset(&addr, 0, sizeof(struct sockaddr));
150546
150547 if (volume_info->UNCip && volume_info->UNC) {
150548 rc = cifs_inet_pton(AF_INET, volume_info->UNCip,
150549 @@ -1435,9 +1435,9 @@
150550 rc = cifs_inet_pton(AF_INET6, volume_info->UNCip,
150551 &sin_server6->sin6_addr.in6_u);
150552 if (rc > 0)
150553 - addr.ss_family = AF_INET6;
150554 + addr.sa_family = AF_INET6;
150555 } else {
150556 - addr.ss_family = AF_INET;
150557 + addr.sa_family = AF_INET;
150558 }
150559
150560 if (rc <= 0) {
150561 @@ -1502,7 +1502,7 @@
150562 tcp_ses->tcpStatus = CifsNew;
150563 ++tcp_ses->srv_count;
150564
150565 - if (addr.ss_family == AF_INET6) {
150566 + if (addr.sa_family == AF_INET6) {
150567 cFYI(1, ("attempting ipv6 connect"));
150568 /* BB should we allow ipv6 on port 139? */
150569 /* other OS never observed in Wild doing 139 with v6 */
150570 @@ -1802,7 +1802,7 @@
150571 * user space buffer
150572 */
150573 socket->sk->sk_rcvtimeo = 7 * HZ;
150574 - socket->sk->sk_sndtimeo = 5 * HZ;
150575 + socket->sk->sk_sndtimeo = 3 * HZ;
150576
150577 /* make the bufsizes depend on wsize/rsize and max requests */
150578 if (server->noautotune) {
150579 @@ -1860,7 +1860,9 @@
150580 smb_buf = (struct smb_hdr *)ses_init_buf;
150581 /* sizeof RFC1002_SESSION_REQUEST with no scope */
150582 smb_buf->smb_buf_length = 0x81000044;
150583 - rc = smb_send(server, smb_buf, 0x44);
150584 + rc = smb_send(socket, smb_buf, 0x44,
150585 + (struct sockaddr *) &server->addr.sockAddr,
150586 + server->noblocksnd);
150587 kfree(ses_init_buf);
150588 msleep(1); /* RFC1001 layer in at least one server
150589 requires very short break before negprot
150590 @@ -1953,7 +1955,7 @@
150591 * user space buffer
150592 */
150593 socket->sk->sk_rcvtimeo = 7 * HZ;
150594 - socket->sk->sk_sndtimeo = 5 * HZ;
150595 + socket->sk->sk_sndtimeo = 3 * HZ;
150596 server->ssocket = socket;
150597
150598 return rc;
150599 @@ -2180,33 +2182,6 @@
150600 "mount option supported"));
150601 }
150602
150603 -static int
150604 -is_path_accessible(int xid, struct cifsTconInfo *tcon,
150605 - struct cifs_sb_info *cifs_sb, const char *full_path)
150606 -{
150607 - int rc;
150608 - __u64 inode_num;
150609 - FILE_ALL_INFO *pfile_info;
150610 -
150611 - rc = CIFSGetSrvInodeNumber(xid, tcon, full_path, &inode_num,
150612 - cifs_sb->local_nls,
150613 - cifs_sb->mnt_cifs_flags &
150614 - CIFS_MOUNT_MAP_SPECIAL_CHR);
150615 - if (rc != -EOPNOTSUPP)
150616 - return rc;
150617 -
150618 - pfile_info = kmalloc(sizeof(FILE_ALL_INFO), GFP_KERNEL);
150619 - if (pfile_info == NULL)
150620 - return -ENOMEM;
150621 -
150622 - rc = CIFSSMBQPathInfo(xid, tcon, full_path, pfile_info,
150623 - 0 /* not legacy */, cifs_sb->local_nls,
150624 - cifs_sb->mnt_cifs_flags &
150625 - CIFS_MOUNT_MAP_SPECIAL_CHR);
150626 - kfree(pfile_info);
150627 - return rc;
150628 -}
150629 -
150630 int
150631 cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
150632 char *mount_data, const char *devname)
150633 @@ -2217,7 +2192,6 @@
150634 struct cifsSesInfo *pSesInfo = NULL;
150635 struct cifsTconInfo *tcon = NULL;
150636 struct TCP_Server_Info *srvTcp = NULL;
150637 - char *full_path;
150638
150639 xid = GetXid();
150640
150641 @@ -2454,23 +2428,6 @@
150642 cifs_sb->rsize = min(cifs_sb->rsize,
150643 (tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE));
150644
150645 - if (!rc && cifs_sb->prepathlen) {
150646 - /* build_path_to_root works only when we have a valid tcon */
150647 - full_path = cifs_build_path_to_root(cifs_sb);
150648 - if (full_path == NULL) {
150649 - rc = -ENOMEM;
150650 - goto mount_fail_check;
150651 - }
150652 - rc = is_path_accessible(xid, tcon, cifs_sb, full_path);
150653 - if (rc) {
150654 - cERROR(1, ("Path %s in not accessible: %d",
150655 - full_path, rc));
150656 - kfree(full_path);
150657 - goto mount_fail_check;
150658 - }
150659 - kfree(full_path);
150660 - }
150661 -
150662 /* volume_info->password is freed above when existing session found
150663 (in which case it is not needed anymore) but when new sesion is created
150664 the password ptr is put in the new session structure (in which case the
150665 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/dir.c linux-2.6.29-rc3.owrt/fs/cifs/dir.c
150666 --- linux-2.6.29.owrt/fs/cifs/dir.c 2009-05-10 22:04:39.000000000 +0200
150667 +++ linux-2.6.29-rc3.owrt/fs/cifs/dir.c 2009-05-10 23:48:29.000000000 +0200
150668 @@ -3,7 +3,7 @@
150669 *
150670 * vfs operations that deal with dentries
150671 *
150672 - * Copyright (C) International Business Machines Corp., 2002,2009
150673 + * Copyright (C) International Business Machines Corp., 2002,2008
150674 * Author(s): Steve French (sfrench@us.ibm.com)
150675 *
150676 * This library is free software; you can redistribute it and/or modify
150677 @@ -129,89 +129,6 @@
150678 return full_path;
150679 }
150680
150681 -static int cifs_posix_open(char *full_path, struct inode **pinode,
150682 - struct super_block *sb, int mode, int oflags,
150683 - int *poplock, __u16 *pnetfid, int xid)
150684 -{
150685 - int rc;
150686 - __u32 oplock;
150687 - FILE_UNIX_BASIC_INFO *presp_data;
150688 - __u32 posix_flags = 0;
150689 - struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
150690 -
150691 - cFYI(1, ("posix open %s", full_path));
150692 -
150693 - presp_data = kzalloc(sizeof(FILE_UNIX_BASIC_INFO), GFP_KERNEL);
150694 - if (presp_data == NULL)
150695 - return -ENOMEM;
150696 -
150697 -/* So far cifs posix extensions can only map the following flags.
150698 - There are other valid fmode oflags such as FMODE_LSEEK, FMODE_PREAD, but
150699 - so far we do not seem to need them, and we can treat them as local only */
150700 - if ((oflags & (FMODE_READ | FMODE_WRITE)) ==
150701 - (FMODE_READ | FMODE_WRITE))
150702 - posix_flags = SMB_O_RDWR;
150703 - else if (oflags & FMODE_READ)
150704 - posix_flags = SMB_O_RDONLY;
150705 - else if (oflags & FMODE_WRITE)
150706 - posix_flags = SMB_O_WRONLY;
150707 - if (oflags & O_CREAT)
150708 - posix_flags |= SMB_O_CREAT;
150709 - if (oflags & O_EXCL)
150710 - posix_flags |= SMB_O_EXCL;
150711 - if (oflags & O_TRUNC)
150712 - posix_flags |= SMB_O_TRUNC;
150713 - if (oflags & O_APPEND)
150714 - posix_flags |= SMB_O_APPEND;
150715 - if (oflags & O_SYNC)
150716 - posix_flags |= SMB_O_SYNC;
150717 - if (oflags & O_DIRECTORY)
150718 - posix_flags |= SMB_O_DIRECTORY;
150719 - if (oflags & O_NOFOLLOW)
150720 - posix_flags |= SMB_O_NOFOLLOW;
150721 - if (oflags & O_DIRECT)
150722 - posix_flags |= SMB_O_DIRECT;
150723 -
150724 -
150725 - rc = CIFSPOSIXCreate(xid, cifs_sb->tcon, posix_flags, mode,
150726 - pnetfid, presp_data, &oplock, full_path,
150727 - cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
150728 - CIFS_MOUNT_MAP_SPECIAL_CHR);
150729 - if (rc)
150730 - goto posix_open_ret;
150731 -
150732 - if (presp_data->Type == cpu_to_le32(-1))
150733 - goto posix_open_ret; /* open ok, caller does qpathinfo */
150734 -
150735 - /* get new inode and set it up */
150736 - if (!pinode)
150737 - goto posix_open_ret; /* caller does not need info */
150738 -
150739 - *pinode = cifs_new_inode(sb, &presp_data->UniqueId);
150740 -
150741 - /* We do not need to close the file if new_inode fails since
150742 - the caller will retry qpathinfo as long as inode is null */
150743 - if (*pinode == NULL)
150744 - goto posix_open_ret;
150745 -
150746 - posix_fill_in_inode(*pinode, presp_data, 1);
150747 -
150748 -posix_open_ret:
150749 - kfree(presp_data);
150750 - return rc;
150751 -}
150752 -
150753 -static void setup_cifs_dentry(struct cifsTconInfo *tcon,
150754 - struct dentry *direntry,
150755 - struct inode *newinode)
150756 -{
150757 - if (tcon->nocase)
150758 - direntry->d_op = &cifs_ci_dentry_ops;
150759 - else
150760 - direntry->d_op = &cifs_dentry_ops;
150761 - d_instantiate(direntry, newinode);
150762 -}
150763 -
150764 /* Inode operations in similar order to how they appear in Linux file fs.h */
150765
150766 int
150767 @@ -222,21 +139,14 @@
150768 int xid;
150769 int create_options = CREATE_NOT_DIR;
150770 int oplock = 0;
150771 - int oflags;
150772 - /*
150773 - * BB below access is probably too much for mknod to request
150774 - * but we have to do query and setpathinfo so requesting
150775 - * less could fail (unless we want to request getatr and setatr
150776 - * permissions (only). At least for POSIX we do not have to
150777 - * request so much.
150778 - */
150779 int desiredAccess = GENERIC_READ | GENERIC_WRITE;
150780 __u16 fileHandle;
150781 struct cifs_sb_info *cifs_sb;
150782 - struct cifsTconInfo *tcon;
150783 + struct cifsTconInfo *pTcon;
150784 char *full_path = NULL;
150785 FILE_ALL_INFO *buf = NULL;
150786 struct inode *newinode = NULL;
150787 + struct cifsFileInfo *pCifsFile = NULL;
150788 struct cifsInodeInfo *pCifsInode;
150789 int disposition = FILE_OVERWRITE_IF;
150790 bool write_only = false;
150791 @@ -244,7 +154,7 @@
150792 xid = GetXid();
150793
150794 cifs_sb = CIFS_SB(inode->i_sb);
150795 - tcon = cifs_sb->tcon;
150796 + pTcon = cifs_sb->tcon;
150797
150798 full_path = build_path_from_dentry(direntry);
150799 if (full_path == NULL) {
150800 @@ -252,44 +162,12 @@
150801 return -ENOMEM;
150802 }
150803
150804 - mode &= ~current->fs->umask;
150805 - if (oplockEnabled)
150806 - oplock = REQ_OPLOCK;
150807 -
150808 - if (nd && (nd->flags & LOOKUP_OPEN))
150809 - oflags = nd->intent.open.flags;
150810 - else
150811 - oflags = FMODE_READ;
150812 -
150813 - if (tcon->unix_ext && (tcon->ses->capabilities & CAP_UNIX) &&
150814 - (CIFS_UNIX_POSIX_PATH_OPS_CAP &
150815 - le64_to_cpu(tcon->fsUnixInfo.Capability))) {
150816 - rc = cifs_posix_open(full_path, &newinode, inode->i_sb,
150817 - mode, oflags, &oplock, &fileHandle, xid);
150818 - /* EIO could indicate that (posix open) operation is not
150819 - supported, despite what server claimed in capability
150820 - negotation. EREMOTE indicates DFS junction, which is not
150821 - handled in posix open */
150822 -
150823 - if ((rc == 0) && (newinode == NULL))
150824 - goto cifs_create_get_file_info; /* query inode info */
150825 - else if (rc == 0) /* success, no need to query */
150826 - goto cifs_create_set_dentry;
150827 - else if ((rc != -EIO) && (rc != -EREMOTE) &&
150828 - (rc != -EOPNOTSUPP)) /* path not found or net err */
150829 - goto cifs_create_out;
150830 - /* else fallthrough to retry, using older open call, this is
150831 - case where server does not support this SMB level, and
150832 - falsely claims capability (also get here for DFS case
150833 - which should be rare for path not covered on files) */
150834 - }
150835 -
150836 if (nd && (nd->flags & LOOKUP_OPEN)) {
150837 - /* if the file is going to stay open, then we
150838 - need to set the desired access properly */
150839 + int oflags = nd->intent.open.flags;
150840 +
150841 desiredAccess = 0;
150842 if (oflags & FMODE_READ)
150843 - desiredAccess |= GENERIC_READ; /* is this too little? */
150844 + desiredAccess |= GENERIC_READ;
150845 if (oflags & FMODE_WRITE) {
150846 desiredAccess |= GENERIC_WRITE;
150847 if (!(oflags & FMODE_READ))
150848 @@ -308,6 +186,8 @@
150849
150850 /* BB add processing to set equivalent of mode - e.g. via CreateX with
150851 ACLs */
150852 + if (oplockEnabled)
150853 + oplock = REQ_OPLOCK;
150854
150855 buf = kmalloc(sizeof(FILE_ALL_INFO), GFP_KERNEL);
150856 if (buf == NULL) {
150857 @@ -316,15 +196,17 @@
150858 return -ENOMEM;
150859 }
150860
150861 + mode &= ~current->fs->umask;
150862 +
150863 /*
150864 * if we're not using unix extensions, see if we need to set
150865 * ATTR_READONLY on the create call
150866 */
150867 - if (!tcon->unix_ext && (mode & S_IWUGO) == 0)
150868 + if (!pTcon->unix_ext && (mode & S_IWUGO) == 0)
150869 create_options |= CREATE_OPTION_READONLY;
150870
150871 if (cifs_sb->tcon->ses->capabilities & CAP_NT_SMBS)
150872 - rc = CIFSSMBOpen(xid, tcon, full_path, disposition,
150873 + rc = CIFSSMBOpen(xid, pTcon, full_path, disposition,
150874 desiredAccess, create_options,
150875 &fileHandle, &oplock, buf, cifs_sb->local_nls,
150876 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
150877 @@ -333,119 +215,128 @@
150878
150879 if (rc == -EIO) {
150880 /* old server, retry the open legacy style */
150881 - rc = SMBLegacyOpen(xid, tcon, full_path, disposition,
150882 + rc = SMBLegacyOpen(xid, pTcon, full_path, disposition,
150883 desiredAccess, create_options,
150884 &fileHandle, &oplock, buf, cifs_sb->local_nls,
150885 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
150886 }
150887 if (rc) {
150888 cFYI(1, ("cifs_create returned 0x%x", rc));
150889 - goto cifs_create_out;
150890 - }
150891 -
150892 - /* If Open reported that we actually created a file
150893 - then we now have to set the mode if possible */
150894 - if ((tcon->unix_ext) && (oplock & CIFS_CREATE_ACTION)) {
150895 - struct cifs_unix_set_info_args args = {
150896 + } else {
150897 + /* If Open reported that we actually created a file
150898 + then we now have to set the mode if possible */
150899 + if ((pTcon->unix_ext) && (oplock & CIFS_CREATE_ACTION)) {
150900 + struct cifs_unix_set_info_args args = {
150901 .mode = mode,
150902 .ctime = NO_CHANGE_64,
150903 .atime = NO_CHANGE_64,
150904 .mtime = NO_CHANGE_64,
150905 .device = 0,
150906 - };
150907 + };
150908
150909 - if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) {
150910 - args.uid = (__u64) current_fsuid();
150911 - if (inode->i_mode & S_ISGID)
150912 - args.gid = (__u64) inode->i_gid;
150913 - else
150914 - args.gid = (__u64) current_fsgid();
150915 - } else {
150916 - args.uid = NO_CHANGE_64;
150917 - args.gid = NO_CHANGE_64;
150918 - }
150919 - CIFSSMBUnixSetInfo(xid, tcon, full_path, &args,
150920 - cifs_sb->local_nls,
150921 - cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
150922 - } else {
150923 - /* BB implement mode setting via Windows security
150924 - descriptors e.g. */
150925 - /* CIFSSMBWinSetPerms(xid,tcon,path,mode,-1,-1,nls);*/
150926 -
150927 - /* Could set r/o dos attribute if mode & 0222 == 0 */
150928 - }
150929 -
150930 -cifs_create_get_file_info:
150931 - /* server might mask mode so we have to query for it */
150932 - if (tcon->unix_ext)
150933 - rc = cifs_get_inode_info_unix(&newinode, full_path,
150934 - inode->i_sb, xid);
150935 - else {
150936 - rc = cifs_get_inode_info(&newinode, full_path, buf,
150937 - inode->i_sb, xid, &fileHandle);
150938 - if (newinode) {
150939 - if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DYNPERM)
150940 - newinode->i_mode = mode;
150941 - if ((oplock & CIFS_CREATE_ACTION) &&
150942 - (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID)) {
150943 - newinode->i_uid = current_fsuid();
150944 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) {
150945 + args.uid = (__u64) current_fsuid();
150946 if (inode->i_mode & S_ISGID)
150947 - newinode->i_gid = inode->i_gid;
150948 + args.gid = (__u64) inode->i_gid;
150949 else
150950 - newinode->i_gid = current_fsgid();
150951 + args.gid = (__u64) current_fsgid();
150952 + } else {
150953 + args.uid = NO_CHANGE_64;
150954 + args.gid = NO_CHANGE_64;
150955 }
150956 + CIFSSMBUnixSetInfo(xid, pTcon, full_path, &args,
150957 + cifs_sb->local_nls,
150958 + cifs_sb->mnt_cifs_flags &
150959 + CIFS_MOUNT_MAP_SPECIAL_CHR);
150960 + } else {
150961 + /* BB implement mode setting via Windows security
150962 + descriptors e.g. */
150963 + /* CIFSSMBWinSetPerms(xid,pTcon,path,mode,-1,-1,nls);*/
150964 +
150965 + /* Could set r/o dos attribute if mode & 0222 == 0 */
150966 }
150967 - }
150968
150969 -cifs_create_set_dentry:
150970 - if (rc == 0)
150971 - setup_cifs_dentry(tcon, direntry, newinode);
150972 - else
150973 - cFYI(1, ("Create worked, get_inode_info failed rc = %d", rc));
150974 + /* server might mask mode so we have to query for it */
150975 + if (pTcon->unix_ext)
150976 + rc = cifs_get_inode_info_unix(&newinode, full_path,
150977 + inode->i_sb, xid);
150978 + else {
150979 + rc = cifs_get_inode_info(&newinode, full_path,
150980 + buf, inode->i_sb, xid,
150981 + &fileHandle);
150982 + if (newinode) {
150983 + if (cifs_sb->mnt_cifs_flags &
150984 + CIFS_MOUNT_DYNPERM)
150985 + newinode->i_mode = mode;
150986 + if ((oplock & CIFS_CREATE_ACTION) &&
150987 + (cifs_sb->mnt_cifs_flags &
150988 + CIFS_MOUNT_SET_UID)) {
150989 + newinode->i_uid = current_fsuid();
150990 + if (inode->i_mode & S_ISGID)
150991 + newinode->i_gid =
150992 + inode->i_gid;
150993 + else
150994 + newinode->i_gid =
150995 + current_fsgid();
150996 + }
150997 + }
150998 + }
150999
151000 - /* nfsd case - nfs srv does not set nd */
151001 - if ((nd == NULL) || (!(nd->flags & LOOKUP_OPEN))) {
151002 - /* mknod case - do not leave file open */
151003 - CIFSSMBClose(xid, tcon, fileHandle);
151004 - } else if (newinode) {
151005 - struct cifsFileInfo *pCifsFile =
151006 - kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
151007 -
151008 - if (pCifsFile == NULL)
151009 - goto cifs_create_out;
151010 - pCifsFile->netfid = fileHandle;
151011 - pCifsFile->pid = current->tgid;
151012 - pCifsFile->pInode = newinode;
151013 - pCifsFile->invalidHandle = false;
151014 - pCifsFile->closePend = false;
151015 - init_MUTEX(&pCifsFile->fh_sem);
151016 - mutex_init(&pCifsFile->lock_mutex);
151017 - INIT_LIST_HEAD(&pCifsFile->llist);
151018 - atomic_set(&pCifsFile->wrtPending, 0);
151019 + if (rc != 0) {
151020 + cFYI(1,
151021 + ("Create worked but get_inode_info failed rc = %d",
151022 + rc));
151023 + } else {
151024 + if (pTcon->nocase)
151025 + direntry->d_op = &cifs_ci_dentry_ops;
151026 + else
151027 + direntry->d_op = &cifs_dentry_ops;
151028 + d_instantiate(direntry, newinode);
151029 + }
151030 + if ((nd == NULL /* nfsd case - nfs srv does not set nd */) ||
151031 + (!(nd->flags & LOOKUP_OPEN))) {
151032 + /* mknod case - do not leave file open */
151033 + CIFSSMBClose(xid, pTcon, fileHandle);
151034 + } else if (newinode) {
151035 + pCifsFile =
151036 + kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
151037 +
151038 + if (pCifsFile == NULL)
151039 + goto cifs_create_out;
151040 + pCifsFile->netfid = fileHandle;
151041 + pCifsFile->pid = current->tgid;
151042 + pCifsFile->pInode = newinode;
151043 + pCifsFile->invalidHandle = false;
151044 + pCifsFile->closePend = false;
151045 + init_MUTEX(&pCifsFile->fh_sem);
151046 + mutex_init(&pCifsFile->lock_mutex);
151047 + INIT_LIST_HEAD(&pCifsFile->llist);
151048 + atomic_set(&pCifsFile->wrtPending, 0);
151049
151050 - /* set the following in open now
151051 + /* set the following in open now
151052 pCifsFile->pfile = file; */
151053 - write_lock(&GlobalSMBSeslock);
151054 - list_add(&pCifsFile->tlist, &tcon->openFileList);
151055 - pCifsInode = CIFS_I(newinode);
151056 - if (pCifsInode) {
151057 - /* if readable file instance put first in list*/
151058 - if (write_only) {
151059 - list_add_tail(&pCifsFile->flist,
151060 - &pCifsInode->openFileList);
151061 - } else {
151062 - list_add(&pCifsFile->flist,
151063 - &pCifsInode->openFileList);
151064 + write_lock(&GlobalSMBSeslock);
151065 + list_add(&pCifsFile->tlist, &pTcon->openFileList);
151066 + pCifsInode = CIFS_I(newinode);
151067 + if (pCifsInode) {
151068 + /* if readable file instance put first in list*/
151069 + if (write_only) {
151070 + list_add_tail(&pCifsFile->flist,
151071 + &pCifsInode->openFileList);
151072 + } else {
151073 + list_add(&pCifsFile->flist,
151074 + &pCifsInode->openFileList);
151075 + }
151076 + if ((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
151077 + pCifsInode->clientCanCacheAll = true;
151078 + pCifsInode->clientCanCacheRead = true;
151079 + cFYI(1, ("Exclusive Oplock inode %p",
151080 + newinode));
151081 + } else if ((oplock & 0xF) == OPLOCK_READ)
151082 + pCifsInode->clientCanCacheRead = true;
151083 }
151084 - if ((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
151085 - pCifsInode->clientCanCacheAll = true;
151086 - pCifsInode->clientCanCacheRead = true;
151087 - cFYI(1, ("Exclusive Oplock inode %p",
151088 - newinode));
151089 - } else if ((oplock & 0xF) == OPLOCK_READ)
151090 - pCifsInode->clientCanCacheRead = true;
151091 + write_unlock(&GlobalSMBSeslock);
151092 }
151093 - write_unlock(&GlobalSMBSeslock);
151094 }
151095 cifs_create_out:
151096 kfree(buf);
151097 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/inode.c linux-2.6.29-rc3.owrt/fs/cifs/inode.c
151098 --- linux-2.6.29.owrt/fs/cifs/inode.c 2009-05-10 22:04:39.000000000 +0200
151099 +++ linux-2.6.29-rc3.owrt/fs/cifs/inode.c 2009-05-10 23:48:29.000000000 +0200
151100 @@ -199,49 +199,6 @@
151101 pfnd_dat->Gid = cpu_to_le64(pinode->i_gid);
151102 }
151103
151104 -/**
151105 - * cifs_new inode - create new inode, initialize, and hash it
151106 - * @sb - pointer to superblock
151107 - * @inum - if valid pointer and serverino is enabled, replace i_ino with val
151108 - *
151109 - * Create a new inode, initialize it for CIFS and hash it. Returns the new
151110 - * inode or NULL if one couldn't be allocated.
151111 - *
151112 - * If the share isn't mounted with "serverino" or inum is a NULL pointer then
151113 - * we'll just use the inode number assigned by new_inode(). Note that this can
151114 - * mean i_ino collisions since the i_ino assigned by new_inode is not
151115 - * guaranteed to be unique.
151116 - */
151117 -struct inode *
151118 -cifs_new_inode(struct super_block *sb, __u64 *inum)
151119 -{
151120 - struct inode *inode;
151121 -
151122 - inode = new_inode(sb);
151123 - if (inode == NULL)
151124 - return NULL;
151125 -
151126 - /*
151127 - * BB: Is i_ino == 0 legal? Here, we assume that it is. If it isn't we
151128 - * stop passing inum as ptr. Are there sanity checks we can use to
151129 - * ensure that the server is really filling in that field? Also,
151130 - * if serverino is disabled, perhaps we should be using iunique()?
151131 - */
151132 - if (inum && (CIFS_SB(sb)->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM))
151133 - inode->i_ino = (unsigned long) *inum;
151134 -
151135 - /*
151136 - * must set this here instead of cifs_alloc_inode since VFS will
151137 - * clobber i_flags
151138 - */
151139 - if (sb->s_flags & MS_NOATIME)
151140 - inode->i_flags |= S_NOATIME | S_NOCMTIME;
151141 -
151142 - insert_inode_hash(inode);
151143 -
151144 - return inode;
151145 -}
151146 -
151147 int cifs_get_inode_info_unix(struct inode **pinode,
151148 const unsigned char *full_path, struct super_block *sb, int xid)
151149 {
151150 @@ -276,11 +233,22 @@
151151
151152 /* get new inode */
151153 if (*pinode == NULL) {
151154 - *pinode = cifs_new_inode(sb, &find_data.UniqueId);
151155 + *pinode = new_inode(sb);
151156 if (*pinode == NULL) {
151157 rc = -ENOMEM;
151158 goto cgiiu_exit;
151159 }
151160 + /* Is an i_ino of zero legal? */
151161 + /* note ino incremented to unique num in new_inode */
151162 + /* Are there sanity checks we can use to ensure that
151163 + the server is really filling in that field? */
151164 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)
151165 + (*pinode)->i_ino = (unsigned long)find_data.UniqueId;
151166 +
151167 + if (sb->s_flags & MS_NOATIME)
151168 + (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME;
151169 +
151170 + insert_inode_hash(*pinode);
151171 }
151172
151173 inode = *pinode;
151174 @@ -497,9 +465,11 @@
151175
151176 /* get new inode */
151177 if (*pinode == NULL) {
151178 - __u64 inode_num;
151179 - __u64 *pinum = &inode_num;
151180 -
151181 + *pinode = new_inode(sb);
151182 + if (*pinode == NULL) {
151183 + rc = -ENOMEM;
151184 + goto cgii_exit;
151185 + }
151186 /* Is an i_ino of zero legal? Can we use that to check
151187 if the server supports returning inode numbers? Are
151188 there other sanity checks we can use to ensure that
151189 @@ -516,26 +486,22 @@
151190
151191 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
151192 int rc1 = 0;
151193 + __u64 inode_num;
151194
151195 rc1 = CIFSGetSrvInodeNumber(xid, pTcon,
151196 - full_path, pinum,
151197 + full_path, &inode_num,
151198 cifs_sb->local_nls,
151199 cifs_sb->mnt_cifs_flags &
151200 CIFS_MOUNT_MAP_SPECIAL_CHR);
151201 if (rc1) {
151202 cFYI(1, ("GetSrvInodeNum rc %d", rc1));
151203 - pinum = NULL;
151204 /* BB EOPNOSUPP disable SERVER_INUM? */
151205 - }
151206 - } else {
151207 - pinum = NULL;
151208 - }
151209 -
151210 - *pinode = cifs_new_inode(sb, pinum);
151211 - if (*pinode == NULL) {
151212 - rc = -ENOMEM;
151213 - goto cgii_exit;
151214 - }
151215 + } else /* do we need cast or hash to ino? */
151216 + (*pinode)->i_ino = inode_num;
151217 + } /* else ino incremented to unique num in new_inode*/
151218 + if (sb->s_flags & MS_NOATIME)
151219 + (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME;
151220 + insert_inode_hash(*pinode);
151221 }
151222 inode = *pinode;
151223 cifsInfo = CIFS_I(inode);
151224 @@ -655,7 +621,7 @@
151225 .lookup = cifs_lookup,
151226 };
151227
151228 -char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb)
151229 +static char *build_path_to_root(struct cifs_sb_info *cifs_sb)
151230 {
151231 int pplen = cifs_sb->prepathlen;
151232 int dfsplen;
151233 @@ -712,7 +678,7 @@
151234 return inode;
151235
151236 cifs_sb = CIFS_SB(inode->i_sb);
151237 - full_path = cifs_build_path_to_root(cifs_sb);
151238 + full_path = build_path_to_root(cifs_sb);
151239 if (full_path == NULL)
151240 return ERR_PTR(-ENOMEM);
151241
151242 @@ -1051,7 +1017,7 @@
151243 return rc;
151244 }
151245
151246 -void posix_fill_in_inode(struct inode *tmp_inode,
151247 +static void posix_fill_in_inode(struct inode *tmp_inode,
151248 FILE_UNIX_BASIC_INFO *pData, int isNewInode)
151249 {
151250 struct cifsInodeInfo *cifsInfo = CIFS_I(tmp_inode);
151251 @@ -1148,14 +1114,24 @@
151252 else
151253 direntry->d_op = &cifs_dentry_ops;
151254
151255 - newinode = cifs_new_inode(inode->i_sb,
151256 - &pInfo->UniqueId);
151257 + newinode = new_inode(inode->i_sb);
151258 if (newinode == NULL) {
151259 kfree(pInfo);
151260 goto mkdir_get_info;
151261 }
151262
151263 + /* Is an i_ino of zero legal? */
151264 + /* Are there sanity checks we can use to ensure that
151265 + the server is really filling in that field? */
151266 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
151267 + newinode->i_ino =
151268 + (unsigned long)pInfo->UniqueId;
151269 + } /* note ino incremented to unique num in new_inode */
151270 + if (inode->i_sb->s_flags & MS_NOATIME)
151271 + newinode->i_flags |= S_NOATIME | S_NOCMTIME;
151272 newinode->i_nlink = 2;
151273 +
151274 + insert_inode_hash(newinode);
151275 d_instantiate(direntry, newinode);
151276
151277 /* we already checked in POSIXCreate whether
151278 @@ -1309,11 +1285,6 @@
151279 cifsInode = CIFS_I(direntry->d_inode);
151280 cifsInode->time = 0; /* force revalidate to go get info when
151281 needed */
151282 -
151283 - cifsInode = CIFS_I(inode);
151284 - cifsInode->time = 0; /* force revalidate to get parent dir info
151285 - since cached search results now invalid */
151286 -
151287 direntry->d_inode->i_ctime = inode->i_ctime = inode->i_mtime =
151288 current_fs_time(inode->i_sb);
151289
151290 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/md5.c linux-2.6.29-rc3.owrt/fs/cifs/md5.c
151291 --- linux-2.6.29.owrt/fs/cifs/md5.c 2009-05-10 22:04:39.000000000 +0200
151292 +++ linux-2.6.29-rc3.owrt/fs/cifs/md5.c 2009-05-10 23:48:29.000000000 +0200
151293 @@ -10,8 +10,8 @@
151294 * with every copy.
151295 *
151296 * To compute the message digest of a chunk of bytes, declare an
151297 - * MD5Context structure, pass it to cifs_MD5_init, call cifs_MD5_update as
151298 - * needed on buffers full of bytes, and then call cifs_MD5_final, which
151299 + * MD5Context structure, pass it to MD5Init, call MD5Update as
151300 + * needed on buffers full of bytes, and then call MD5Final, which
151301 * will fill a supplied 16-byte array with the digest.
151302 */
151303
151304 @@ -45,7 +45,7 @@
151305 * initialization constants.
151306 */
151307 void
151308 -cifs_MD5_init(struct MD5Context *ctx)
151309 +MD5Init(struct MD5Context *ctx)
151310 {
151311 ctx->buf[0] = 0x67452301;
151312 ctx->buf[1] = 0xefcdab89;
151313 @@ -61,7 +61,7 @@
151314 * of bytes.
151315 */
151316 void
151317 -cifs_MD5_update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
151318 +MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len)
151319 {
151320 register __u32 t;
151321
151322 @@ -110,7 +110,7 @@
151323 * 1 0* (64-bit count of bits processed, MSB-first)
151324 */
151325 void
151326 -cifs_MD5_final(unsigned char digest[16], struct MD5Context *ctx)
151327 +MD5Final(unsigned char digest[16], struct MD5Context *ctx)
151328 {
151329 unsigned int count;
151330 unsigned char *p;
151331 @@ -165,7 +165,7 @@
151332
151333 /*
151334 * The core of the MD5 algorithm, this alters an existing MD5 hash to
151335 - * reflect the addition of 16 longwords of new data. cifs_MD5_update blocks
151336 + * reflect the addition of 16 longwords of new data. MD5Update blocks
151337 * the data and converts bytes into longwords for this routine.
151338 */
151339 static void
151340 @@ -267,9 +267,9 @@
151341 unsigned char tk[16];
151342 struct MD5Context tctx;
151343
151344 - cifs_MD5_init(&tctx);
151345 - cifs_MD5_update(&tctx, key, key_len);
151346 - cifs_MD5_final(tk, &tctx);
151347 + MD5Init(&tctx);
151348 + MD5Update(&tctx, key, key_len);
151349 + MD5Final(tk, &tctx);
151350
151351 key = tk;
151352 key_len = 16;
151353 @@ -287,8 +287,8 @@
151354 ctx->k_opad[i] ^= 0x5c;
151355 }
151356
151357 - cifs_MD5_init(&ctx->ctx);
151358 - cifs_MD5_update(&ctx->ctx, ctx->k_ipad, 64);
151359 + MD5Init(&ctx->ctx);
151360 + MD5Update(&ctx->ctx, ctx->k_ipad, 64);
151361 }
151362 #endif
151363
151364 @@ -317,8 +317,8 @@
151365 ctx->k_opad[i] ^= 0x5c;
151366 }
151367
151368 - cifs_MD5_init(&ctx->ctx);
151369 - cifs_MD5_update(&ctx->ctx, ctx->k_ipad, 64);
151370 + MD5Init(&ctx->ctx);
151371 + MD5Update(&ctx->ctx, ctx->k_ipad, 64);
151372 }
151373
151374 /***********************************************************************
151375 @@ -328,7 +328,7 @@
151376 hmac_md5_update(const unsigned char *text, int text_len,
151377 struct HMACMD5Context *ctx)
151378 {
151379 - cifs_MD5_update(&ctx->ctx, text, text_len); /* then text of datagram */
151380 + MD5Update(&ctx->ctx, text, text_len); /* then text of datagram */
151381 }
151382
151383 /***********************************************************************
151384 @@ -339,12 +339,12 @@
151385 {
151386 struct MD5Context ctx_o;
151387
151388 - cifs_MD5_final(digest, &ctx->ctx);
151389 + MD5Final(digest, &ctx->ctx);
151390
151391 - cifs_MD5_init(&ctx_o);
151392 - cifs_MD5_update(&ctx_o, ctx->k_opad, 64);
151393 - cifs_MD5_update(&ctx_o, digest, 16);
151394 - cifs_MD5_final(digest, &ctx_o);
151395 + MD5Init(&ctx_o);
151396 + MD5Update(&ctx_o, ctx->k_opad, 64);
151397 + MD5Update(&ctx_o, digest, 16);
151398 + MD5Final(digest, &ctx_o);
151399 }
151400
151401 /***********************************************************
151402 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/md5.h linux-2.6.29-rc3.owrt/fs/cifs/md5.h
151403 --- linux-2.6.29.owrt/fs/cifs/md5.h 2009-05-10 22:04:39.000000000 +0200
151404 +++ linux-2.6.29-rc3.owrt/fs/cifs/md5.h 2009-05-10 23:48:29.000000000 +0200
151405 @@ -20,10 +20,10 @@
151406 };
151407 #endif /* _HMAC_MD5_H */
151408
151409 -void cifs_MD5_init(struct MD5Context *context);
151410 -void cifs_MD5_update(struct MD5Context *context, unsigned char const *buf,
151411 +void MD5Init(struct MD5Context *context);
151412 +void MD5Update(struct MD5Context *context, unsigned char const *buf,
151413 unsigned len);
151414 -void cifs_MD5_final(unsigned char digest[16], struct MD5Context *context);
151415 +void MD5Final(unsigned char digest[16], struct MD5Context *context);
151416
151417 /* The following definitions come from lib/hmacmd5.c */
151418
151419 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/readdir.c linux-2.6.29-rc3.owrt/fs/cifs/readdir.c
151420 --- linux-2.6.29.owrt/fs/cifs/readdir.c 2009-05-10 22:04:39.000000000 +0200
151421 +++ linux-2.6.29-rc3.owrt/fs/cifs/readdir.c 2009-05-10 23:48:29.000000000 +0200
151422 @@ -56,34 +56,35 @@
151423 }
151424 #endif /* DEBUG2 */
151425
151426 -/* Returns 1 if new inode created, 2 if both dentry and inode were */
151427 +/* Returns one if new inode created (which therefore needs to be hashed) */
151428 /* Might check in the future if inode number changed so we can rehash inode */
151429 -static int
151430 -construct_dentry(struct qstr *qstring, struct file *file,
151431 - struct inode **ptmp_inode, struct dentry **pnew_dentry,
151432 - __u64 *inum)
151433 +static int construct_dentry(struct qstr *qstring, struct file *file,
151434 + struct inode **ptmp_inode, struct dentry **pnew_dentry)
151435 {
151436 - struct dentry *tmp_dentry = NULL;
151437 - struct super_block *sb = file->f_path.dentry->d_sb;
151438 + struct dentry *tmp_dentry;
151439 + struct cifs_sb_info *cifs_sb;
151440 + struct cifsTconInfo *pTcon;
151441 int rc = 0;
151442
151443 cFYI(1, ("For %s", qstring->name));
151444 + cifs_sb = CIFS_SB(file->f_path.dentry->d_sb);
151445 + pTcon = cifs_sb->tcon;
151446
151447 qstring->hash = full_name_hash(qstring->name, qstring->len);
151448 tmp_dentry = d_lookup(file->f_path.dentry, qstring);
151449 if (tmp_dentry) {
151450 - /* BB: overwrite old name? i.e. tmp_dentry->d_name and
151451 - * tmp_dentry->d_name.len??
151452 - */
151453 cFYI(0, ("existing dentry with inode 0x%p",
151454 tmp_dentry->d_inode));
151455 *ptmp_inode = tmp_dentry->d_inode;
151456 +/* BB overwrite old name? i.e. tmp_dentry->d_name and tmp_dentry->d_name.len??*/
151457 if (*ptmp_inode == NULL) {
151458 - *ptmp_inode = cifs_new_inode(sb, inum);
151459 + *ptmp_inode = new_inode(file->f_path.dentry->d_sb);
151460 if (*ptmp_inode == NULL)
151461 return rc;
151462 rc = 1;
151463 }
151464 + if (file->f_path.dentry->d_sb->s_flags & MS_NOATIME)
151465 + (*ptmp_inode)->i_flags |= S_NOATIME | S_NOCMTIME;
151466 } else {
151467 tmp_dentry = d_alloc(file->f_path.dentry, qstring);
151468 if (tmp_dentry == NULL) {
151469 @@ -92,14 +93,15 @@
151470 return rc;
151471 }
151472
151473 - if (CIFS_SB(sb)->tcon->nocase)
151474 + *ptmp_inode = new_inode(file->f_path.dentry->d_sb);
151475 + if (pTcon->nocase)
151476 tmp_dentry->d_op = &cifs_ci_dentry_ops;
151477 else
151478 tmp_dentry->d_op = &cifs_dentry_ops;
151479 -
151480 - *ptmp_inode = cifs_new_inode(sb, inum);
151481 if (*ptmp_inode == NULL)
151482 return rc;
151483 + if (file->f_path.dentry->d_sb->s_flags & MS_NOATIME)
151484 + (*ptmp_inode)->i_flags |= S_NOATIME | S_NOCMTIME;
151485 rc = 2;
151486 }
151487
151488 @@ -820,7 +822,7 @@
151489 /* inode num, inode type and filename returned */
151490 static int cifs_get_name_from_search_buf(struct qstr *pqst,
151491 char *current_entry, __u16 level, unsigned int unicode,
151492 - struct cifs_sb_info *cifs_sb, int max_len, __u64 *pinum)
151493 + struct cifs_sb_info *cifs_sb, int max_len, ino_t *pinum)
151494 {
151495 int rc = 0;
151496 unsigned int len = 0;
151497 @@ -840,7 +842,9 @@
151498 len = strnlen(filename, PATH_MAX);
151499 }
151500
151501 - *pinum = pFindData->UniqueId;
151502 + /* BB fixme - hash low and high 32 bits if not 64 bit arch BB */
151503 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)
151504 + *pinum = pFindData->UniqueId;
151505 } else if (level == SMB_FIND_FILE_DIRECTORY_INFO) {
151506 FILE_DIRECTORY_INFO *pFindData =
151507 (FILE_DIRECTORY_INFO *)current_entry;
151508 @@ -903,7 +907,7 @@
151509 struct qstr qstring;
151510 struct cifsFileInfo *pCifsF;
151511 unsigned int obj_type;
151512 - __u64 inum;
151513 + ino_t inum;
151514 struct cifs_sb_info *cifs_sb;
151515 struct inode *tmp_inode;
151516 struct dentry *tmp_dentry;
151517 @@ -936,18 +940,20 @@
151518 if (rc)
151519 return rc;
151520
151521 - /* only these two infolevels return valid inode numbers */
151522 - if (pCifsF->srch_inf.info_level == SMB_FIND_FILE_UNIX ||
151523 - pCifsF->srch_inf.info_level == SMB_FIND_FILE_ID_FULL_DIR_INFO)
151524 - rc = construct_dentry(&qstring, file, &tmp_inode, &tmp_dentry,
151525 - &inum);
151526 - else
151527 - rc = construct_dentry(&qstring, file, &tmp_inode, &tmp_dentry,
151528 - NULL);
151529 -
151530 + rc = construct_dentry(&qstring, file, &tmp_inode, &tmp_dentry);
151531 if ((tmp_inode == NULL) || (tmp_dentry == NULL))
151532 return -ENOMEM;
151533
151534 + if (rc) {
151535 + /* inode created, we need to hash it with right inode number */
151536 + if (inum != 0) {
151537 + /* BB fixme - hash the 2 32 quantities bits together if
151538 + * necessary BB */
151539 + tmp_inode->i_ino = inum;
151540 + }
151541 + insert_inode_hash(tmp_inode);
151542 + }
151543 +
151544 /* we pass in rc below, indicating whether it is a new inode,
151545 so we can figure out whether to invalidate the inode cached
151546 data if the file has changed */
151547 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/sess.c linux-2.6.29-rc3.owrt/fs/cifs/sess.c
151548 --- linux-2.6.29.owrt/fs/cifs/sess.c 2009-05-10 22:04:39.000000000 +0200
151549 +++ linux-2.6.29-rc3.owrt/fs/cifs/sess.c 2009-05-10 23:48:29.000000000 +0200
151550 @@ -34,99 +34,15 @@
151551 extern void SMBNTencrypt(unsigned char *passwd, unsigned char *c8,
151552 unsigned char *p24);
151553
151554 -/* Checks if this is the first smb session to be reconnected after
151555 - the socket has been reestablished (so we know whether to use vc 0).
151556 - Called while holding the cifs_tcp_ses_lock, so do not block */
151557 -static bool is_first_ses_reconnect(struct cifsSesInfo *ses)
151558 -{
151559 - struct list_head *tmp;
151560 - struct cifsSesInfo *tmp_ses;
151561 -
151562 - list_for_each(tmp, &ses->server->smb_ses_list) {
151563 - tmp_ses = list_entry(tmp, struct cifsSesInfo,
151564 - smb_ses_list);
151565 - if (tmp_ses->need_reconnect == false)
151566 - return false;
151567 - }
151568 - /* could not find a session that was already connected,
151569 - this must be the first one we are reconnecting */
151570 - return true;
151571 -}
151572 -
151573 -/*
151574 - * vc number 0 is treated specially by some servers, and should be the
151575 - * first one we request. After that we can use vcnumbers up to maxvcs,
151576 - * one for each smb session (some Windows versions set maxvcs incorrectly
151577 - * so maxvc=1 can be ignored). If we have too many vcs, we can reuse
151578 - * any vc but zero (some servers reset the connection on vcnum zero)
151579 - *
151580 - */
151581 -static __le16 get_next_vcnum(struct cifsSesInfo *ses)
151582 -{
151583 - __u16 vcnum = 0;
151584 - struct list_head *tmp;
151585 - struct cifsSesInfo *tmp_ses;
151586 - __u16 max_vcs = ses->server->max_vcs;
151587 - __u16 i;
151588 - int free_vc_found = 0;
151589 -
151590 - /* Quoting the MS-SMB specification: "Windows-based SMB servers set this
151591 - field to one but do not enforce this limit, which allows an SMB client
151592 - to establish more virtual circuits than allowed by this value ... but
151593 - other server implementations can enforce this limit." */
151594 - if (max_vcs < 2)
151595 - max_vcs = 0xFFFF;
151596 -
151597 - write_lock(&cifs_tcp_ses_lock);
151598 - if ((ses->need_reconnect) && is_first_ses_reconnect(ses))
151599 - goto get_vc_num_exit; /* vcnum will be zero */
151600 - for (i = ses->server->srv_count - 1; i < max_vcs; i++) {
151601 - if (i == 0) /* this is the only connection, use vc 0 */
151602 - break;
151603 -
151604 - free_vc_found = 1;
151605 -
151606 - list_for_each(tmp, &ses->server->smb_ses_list) {
151607 - tmp_ses = list_entry(tmp, struct cifsSesInfo,
151608 - smb_ses_list);
151609 - if (tmp_ses->vcnum == i) {
151610 - free_vc_found = 0;
151611 - break; /* found duplicate, try next vcnum */
151612 - }
151613 - }
151614 - if (free_vc_found)
151615 - break; /* we found a vcnumber that will work - use it */
151616 - }
151617 -
151618 - if (i == 0)
151619 - vcnum = 0; /* for most common case, ie if one smb session, use
151620 - vc zero. Also for case when no free vcnum, zero
151621 - is safest to send (some clients only send zero) */
151622 - else if (free_vc_found == 0)
151623 - vcnum = 1; /* we can not reuse vc=0 safely, since some servers
151624 - reset all uids on that, but 1 is ok. */
151625 - else
151626 - vcnum = i;
151627 - ses->vcnum = vcnum;
151628 -get_vc_num_exit:
151629 - write_unlock(&cifs_tcp_ses_lock);
151630 -
151631 - return le16_to_cpu(vcnum);
151632 -}
151633 -
151634 static __u32 cifs_ssetup_hdr(struct cifsSesInfo *ses, SESSION_SETUP_ANDX *pSMB)
151635 {
151636 __u32 capabilities = 0;
151637
151638 /* init fields common to all four types of SessSetup */
151639 - /* Note that offsets for first seven fields in req struct are same */
151640 - /* in CIFS Specs so does not matter which of 3 forms of struct */
151641 - /* that we use in next few lines */
151642 - /* Note that header is initialized to zero in header_assemble */
151643 + /* note that header is initialized to zero in header_assemble */
151644 pSMB->req.AndXCommand = 0xFF;
151645 pSMB->req.MaxBufferSize = cpu_to_le16(ses->server->maxBuf);
151646 pSMB->req.MaxMpxCount = cpu_to_le16(ses->server->maxReq);
151647 - pSMB->req.VcNumber = get_next_vcnum(ses);
151648
151649 /* Now no need to set SMBFLG_CASELESS or obsolete CANONICAL PATH */
151650
151651 @@ -155,6 +71,7 @@
151652 if (ses->capabilities & CAP_UNIX)
151653 capabilities |= CAP_UNIX;
151654
151655 + /* BB check whether to init vcnum BB */
151656 return capabilities;
151657 }
151658
151659 @@ -311,7 +228,7 @@
151660
151661 kfree(ses->serverOS);
151662 /* UTF-8 string will not grow more than four times as big as UCS-16 */
151663 - ses->serverOS = kzalloc((4 * len) + 2 /* trailing null */, GFP_KERNEL);
151664 + ses->serverOS = kzalloc(4 * len, GFP_KERNEL);
151665 if (ses->serverOS != NULL)
151666 cifs_strfromUCS_le(ses->serverOS, (__le16 *)data, len, nls_cp);
151667 data += 2 * (len + 1);
151668 @@ -324,7 +241,7 @@
151669 return rc;
151670
151671 kfree(ses->serverNOS);
151672 - ses->serverNOS = kzalloc((4 * len) + 2 /* trailing null */, GFP_KERNEL);
151673 + ses->serverNOS = kzalloc(4 * len, GFP_KERNEL); /* BB this is wrong length FIXME BB */
151674 if (ses->serverNOS != NULL) {
151675 cifs_strfromUCS_le(ses->serverNOS, (__le16 *)data, len,
151676 nls_cp);
151677 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/cifs/transport.c linux-2.6.29-rc3.owrt/fs/cifs/transport.c
151678 --- linux-2.6.29.owrt/fs/cifs/transport.c 2009-05-10 22:04:39.000000000 +0200
151679 +++ linux-2.6.29-rc3.owrt/fs/cifs/transport.c 2009-05-10 23:48:29.000000000 +0200
151680 @@ -154,8 +154,81 @@
151681 spin_unlock(&GlobalMid_Lock);
151682 }
151683
151684 +int
151685 +smb_send(struct socket *ssocket, struct smb_hdr *smb_buffer,
151686 + unsigned int smb_buf_length, struct sockaddr *sin, bool noblocksnd)
151687 +{
151688 + int rc = 0;
151689 + int i = 0;
151690 + struct msghdr smb_msg;
151691 + struct kvec iov;
151692 + unsigned len = smb_buf_length + 4;
151693 +
151694 + if (ssocket == NULL)
151695 + return -ENOTSOCK; /* BB eventually add reconnect code here */
151696 + iov.iov_base = smb_buffer;
151697 + iov.iov_len = len;
151698 +
151699 + smb_msg.msg_name = sin;
151700 + smb_msg.msg_namelen = sizeof(struct sockaddr);
151701 + smb_msg.msg_control = NULL;
151702 + smb_msg.msg_controllen = 0;
151703 + if (noblocksnd)
151704 + smb_msg.msg_flags = MSG_DONTWAIT + MSG_NOSIGNAL;
151705 + else
151706 + smb_msg.msg_flags = MSG_NOSIGNAL;
151707 +
151708 + /* smb header is converted in header_assemble. bcc and rest of SMB word
151709 + area, and byte area if necessary, is converted to littleendian in
151710 + cifssmb.c and RFC1001 len is converted to bigendian in smb_send
151711 + Flags2 is converted in SendReceive */
151712 +
151713 + smb_buffer->smb_buf_length = cpu_to_be32(smb_buffer->smb_buf_length);
151714 + cFYI(1, ("Sending smb of length %d", smb_buf_length));
151715 + dump_smb(smb_buffer, len);
151716 +
151717 + while (len > 0) {
151718 + rc = kernel_sendmsg(ssocket, &smb_msg, &iov, 1, len);
151719 + if ((rc == -ENOSPC) || (rc == -EAGAIN)) {
151720 + i++;
151721 + /* smaller timeout here than send2 since smaller size */
151722 + /* Although it may not be required, this also is smaller
151723 + oplock break time */
151724 + if (i > 12) {
151725 + cERROR(1,
151726 + ("sends on sock %p stuck for 7 seconds",
151727 + ssocket));
151728 + rc = -EAGAIN;
151729 + break;
151730 + }
151731 + msleep(1 << i);
151732 + continue;
151733 + }
151734 + if (rc < 0)
151735 + break;
151736 + else
151737 + i = 0; /* reset i after each successful send */
151738 + iov.iov_base += rc;
151739 + iov.iov_len -= rc;
151740 + len -= rc;
151741 + }
151742 +
151743 + if (rc < 0) {
151744 + cERROR(1, ("Error %d sending data on socket to server", rc));
151745 + } else {
151746 + rc = 0;
151747 + }
151748 +
151749 + /* Don't want to modify the buffer as a
151750 + side effect of this call. */
151751 + smb_buffer->smb_buf_length = smb_buf_length;
151752 +
151753 + return rc;
151754 +}
151755 +
151756 static int
151757 -smb_sendv(struct TCP_Server_Info *server, struct kvec *iov, int n_vec)
151758 +smb_send2(struct TCP_Server_Info *server, struct kvec *iov, int n_vec,
151759 + struct sockaddr *sin, bool noblocksnd)
151760 {
151761 int rc = 0;
151762 int i = 0;
151763 @@ -170,11 +243,11 @@
151764 if (ssocket == NULL)
151765 return -ENOTSOCK; /* BB eventually add reconnect code here */
151766
151767 - smb_msg.msg_name = (struct sockaddr *) &server->addr.sockAddr;
151768 + smb_msg.msg_name = sin;
151769 smb_msg.msg_namelen = sizeof(struct sockaddr);
151770 smb_msg.msg_control = NULL;
151771 smb_msg.msg_controllen = 0;
151772 - if (server->noblocksnd)
151773 + if (noblocksnd)
151774 smb_msg.msg_flags = MSG_DONTWAIT + MSG_NOSIGNAL;
151775 else
151776 smb_msg.msg_flags = MSG_NOSIGNAL;
151777 @@ -199,25 +272,7 @@
151778 n_vec - first_vec, total_len);
151779 if ((rc == -ENOSPC) || (rc == -EAGAIN)) {
151780 i++;
151781 - /* if blocking send we try 3 times, since each can block
151782 - for 5 seconds. For nonblocking we have to try more
151783 - but wait increasing amounts of time allowing time for
151784 - socket to clear. The overall time we wait in either
151785 - case to send on the socket is about 15 seconds.
151786 - Similarly we wait for 15 seconds for
151787 - a response from the server in SendReceive[2]
151788 - for the server to send a response back for
151789 - most types of requests (except SMB Write
151790 - past end of file which can be slow, and
151791 - blocking lock operations). NFS waits slightly longer
151792 - than CIFS, but this can make it take longer for
151793 - nonresponsive servers to be detected and 15 seconds
151794 - is more than enough time for modern networks to
151795 - send a packet. In most cases if we fail to send
151796 - after the retries we will kill the socket and
151797 - reconnect which may clear the network problem.
151798 - */
151799 - if ((i >= 14) || (!server->noblocksnd && (i > 2))) {
151800 + if (i >= 14) {
151801 cERROR(1,
151802 ("sends on sock %p stuck for 15 seconds",
151803 ssocket));
151804 @@ -284,18 +339,6 @@
151805 return rc;
151806 }
151807
151808 -int
151809 -smb_send(struct TCP_Server_Info *server, struct smb_hdr *smb_buffer,
151810 - unsigned int smb_buf_length)
151811 -{
151812 - struct kvec iov;
151813 -
151814 - iov.iov_base = smb_buffer;
151815 - iov.iov_len = smb_buf_length + 4;
151816 -
151817 - return smb_sendv(server, &iov, 1);
151818 -}
151819 -
151820 static int wait_for_free_request(struct cifsSesInfo *ses, const int long_op)
151821 {
151822 if (long_op == CIFS_ASYNC_OP) {
151823 @@ -497,7 +540,9 @@
151824 #ifdef CONFIG_CIFS_STATS2
151825 atomic_inc(&ses->server->inSend);
151826 #endif
151827 - rc = smb_sendv(ses->server, iov, n_vec);
151828 + rc = smb_send2(ses->server, iov, n_vec,
151829 + (struct sockaddr *) &(ses->server->addr.sockAddr),
151830 + ses->server->noblocksnd);
151831 #ifdef CONFIG_CIFS_STATS2
151832 atomic_dec(&ses->server->inSend);
151833 midQ->when_sent = jiffies;
151834 @@ -691,7 +736,9 @@
151835 #ifdef CONFIG_CIFS_STATS2
151836 atomic_inc(&ses->server->inSend);
151837 #endif
151838 - rc = smb_send(ses->server, in_buf, in_buf->smb_buf_length);
151839 + rc = smb_send(ses->server->ssocket, in_buf, in_buf->smb_buf_length,
151840 + (struct sockaddr *) &(ses->server->addr.sockAddr),
151841 + ses->server->noblocksnd);
151842 #ifdef CONFIG_CIFS_STATS2
151843 atomic_dec(&ses->server->inSend);
151844 midQ->when_sent = jiffies;
151845 @@ -832,7 +879,9 @@
151846 mutex_unlock(&ses->server->srv_mutex);
151847 return rc;
151848 }
151849 - rc = smb_send(ses->server, in_buf, in_buf->smb_buf_length);
151850 + rc = smb_send(ses->server->ssocket, in_buf, in_buf->smb_buf_length,
151851 + (struct sockaddr *) &(ses->server->addr.sockAddr),
151852 + ses->server->noblocksnd);
151853 mutex_unlock(&ses->server->srv_mutex);
151854 return rc;
151855 }
151856 @@ -924,7 +973,9 @@
151857 #ifdef CONFIG_CIFS_STATS2
151858 atomic_inc(&ses->server->inSend);
151859 #endif
151860 - rc = smb_send(ses->server, in_buf, in_buf->smb_buf_length);
151861 + rc = smb_send(ses->server->ssocket, in_buf, in_buf->smb_buf_length,
151862 + (struct sockaddr *) &(ses->server->addr.sockAddr),
151863 + ses->server->noblocksnd);
151864 #ifdef CONFIG_CIFS_STATS2
151865 atomic_dec(&ses->server->inSend);
151866 midQ->when_sent = jiffies;
151867 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/compat.c linux-2.6.29-rc3.owrt/fs/compat.c
151868 --- linux-2.6.29.owrt/fs/compat.c 2009-05-10 22:04:39.000000000 +0200
151869 +++ linux-2.6.29-rc3.owrt/fs/compat.c 2009-05-10 23:48:29.000000000 +0200
151870 @@ -1407,7 +1407,7 @@
151871 bprm->cred = prepare_exec_creds();
151872 if (!bprm->cred)
151873 goto out_unlock;
151874 - check_unsafe_exec(bprm, current->files);
151875 + check_unsafe_exec(bprm);
151876
151877 file = open_exec(filename);
151878 retval = PTR_ERR(file);
151879 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/compat_ioctl.c linux-2.6.29-rc3.owrt/fs/compat_ioctl.c
151880 --- linux-2.6.29.owrt/fs/compat_ioctl.c 2009-05-10 22:04:39.000000000 +0200
151881 +++ linux-2.6.29-rc3.owrt/fs/compat_ioctl.c 2009-05-10 23:48:29.000000000 +0200
151882 @@ -538,7 +538,6 @@
151883 * cannot be fixed without breaking all existing apps.
151884 */
151885 case TUNSETIFF:
151886 - case TUNGETIFF:
151887 case SIOCGIFFLAGS:
151888 case SIOCGIFMETRIC:
151889 case SIOCGIFMTU:
151890 @@ -785,7 +784,7 @@
151891
151892 if (copy_in_user(&sgio->status, &sgio32->status,
151893 (4 * sizeof(unsigned char)) +
151894 - (2 * sizeof(unsigned short)) +
151895 + (2 * sizeof(unsigned (short))) +
151896 (3 * sizeof(int))))
151897 return -EFAULT;
151898
151899 @@ -1913,9 +1912,6 @@
151900 /* 0x00 */
151901 COMPATIBLE_IOCTL(FIBMAP)
151902 COMPATIBLE_IOCTL(FIGETBSZ)
151903 -/* 'X' - originally XFS but some now in the VFS */
151904 -COMPATIBLE_IOCTL(FIFREEZE)
151905 -COMPATIBLE_IOCTL(FITHAW)
151906 /* RAID */
151907 COMPATIBLE_IOCTL(RAID_VERSION)
151908 COMPATIBLE_IOCTL(GET_ARRAY_INFO)
151909 @@ -1941,8 +1937,6 @@
151910 /* Big K */
151911 COMPATIBLE_IOCTL(PIO_FONT)
151912 COMPATIBLE_IOCTL(GIO_FONT)
151913 -COMPATIBLE_IOCTL(PIO_CMAP)
151914 -COMPATIBLE_IOCTL(GIO_CMAP)
151915 ULONG_IOCTL(KDSIGACCEPT)
151916 COMPATIBLE_IOCTL(KDGETKEYCODE)
151917 COMPATIBLE_IOCTL(KDSETKEYCODE)
151918 @@ -1988,11 +1982,6 @@
151919 COMPATIBLE_IOCTL(TUNSETDEBUG)
151920 COMPATIBLE_IOCTL(TUNSETPERSIST)
151921 COMPATIBLE_IOCTL(TUNSETOWNER)
151922 -COMPATIBLE_IOCTL(TUNSETLINK)
151923 -COMPATIBLE_IOCTL(TUNSETGROUP)
151924 -COMPATIBLE_IOCTL(TUNGETFEATURES)
151925 -COMPATIBLE_IOCTL(TUNSETOFFLOAD)
151926 -COMPATIBLE_IOCTL(TUNSETTXFILTER)
151927 /* Big V */
151928 COMPATIBLE_IOCTL(VT_SETMODE)
151929 COMPATIBLE_IOCTL(VT_GETMODE)
151930 @@ -2584,7 +2573,6 @@
151931 HANDLE_IOCTL(SIOCGIFTXQLEN, dev_ifsioc)
151932 HANDLE_IOCTL(SIOCSIFTXQLEN, dev_ifsioc)
151933 HANDLE_IOCTL(TUNSETIFF, dev_ifsioc)
151934 -HANDLE_IOCTL(TUNGETIFF, dev_ifsioc)
151935 HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)
151936 HANDLE_IOCTL(SIOCBONDENSLAVE, bond_ioctl)
151937 HANDLE_IOCTL(SIOCBONDRELEASE, bond_ioctl)
151938 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/dcache.c linux-2.6.29-rc3.owrt/fs/dcache.c
151939 --- linux-2.6.29.owrt/fs/dcache.c 2009-05-10 22:04:39.000000000 +0200
151940 +++ linux-2.6.29-rc3.owrt/fs/dcache.c 2009-05-10 23:48:29.000000000 +0200
151941 @@ -1180,7 +1180,7 @@
151942 iput(inode);
151943 return res;
151944 }
151945 -EXPORT_SYMBOL(d_obtain_alias);
151946 +EXPORT_SYMBOL_GPL(d_obtain_alias);
151947
151948 /**
151949 * d_splice_alias - splice a disconnected dentry into the tree if one exists
151950 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/devpts/inode.c linux-2.6.29-rc3.owrt/fs/devpts/inode.c
151951 --- linux-2.6.29.owrt/fs/devpts/inode.c 2009-05-10 22:04:39.000000000 +0200
151952 +++ linux-2.6.29-rc3.owrt/fs/devpts/inode.c 2009-05-10 23:48:29.000000000 +0200
151953 @@ -198,6 +198,9 @@
151954
151955 fsi->ptmx_dentry = dentry;
151956 rc = 0;
151957 +
151958 + printk(KERN_DEBUG "Created ptmx node in devpts ino %lu\n",
151959 + inode->i_ino);
151960 out:
151961 mutex_unlock(&root->d_inode->i_mutex);
151962 return rc;
151963 @@ -366,6 +369,8 @@
151964 struct pts_fs_info *fsi;
151965 struct pts_mount_opts *opts;
151966
151967 + printk(KERN_NOTICE "devpts: newinstance mount\n");
151968 +
151969 err = get_sb_nodev(fs_type, flags, data, devpts_fill_super, mnt);
151970 if (err)
151971 return err;
151972 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ecryptfs/crypto.c linux-2.6.29-rc3.owrt/fs/ecryptfs/crypto.c
151973 --- linux-2.6.29.owrt/fs/ecryptfs/crypto.c 2009-05-10 22:04:39.000000000 +0200
151974 +++ linux-2.6.29-rc3.owrt/fs/ecryptfs/crypto.c 2009-05-10 23:48:29.000000000 +0200
151975 @@ -946,8 +946,6 @@
151976 list_for_each_entry(global_auth_tok,
151977 &mount_crypt_stat->global_auth_tok_list,
151978 mount_crypt_stat_list) {
151979 - if (global_auth_tok->flags & ECRYPTFS_AUTH_TOK_FNEK)
151980 - continue;
151981 rc = ecryptfs_add_keysig(crypt_stat, global_auth_tok->sig);
151982 if (rc) {
151983 printk(KERN_ERR "Error adding keysig; rc = [%d]\n", rc);
151984 @@ -1324,13 +1322,14 @@
151985 }
151986
151987 static int
151988 -ecryptfs_write_metadata_to_contents(struct dentry *ecryptfs_dentry,
151989 - char *virt, size_t virt_len)
151990 +ecryptfs_write_metadata_to_contents(struct ecryptfs_crypt_stat *crypt_stat,
151991 + struct dentry *ecryptfs_dentry,
151992 + char *virt)
151993 {
151994 int rc;
151995
151996 rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, virt,
151997 - 0, virt_len);
151998 + 0, crypt_stat->num_header_bytes_at_front);
151999 if (rc)
152000 printk(KERN_ERR "%s: Error attempting to write header "
152001 "information to lower file; rc = [%d]\n", __func__,
152002 @@ -1340,6 +1339,7 @@
152003
152004 static int
152005 ecryptfs_write_metadata_to_xattr(struct dentry *ecryptfs_dentry,
152006 + struct ecryptfs_crypt_stat *crypt_stat,
152007 char *page_virt, size_t size)
152008 {
152009 int rc;
152010 @@ -1349,17 +1349,6 @@
152011 return rc;
152012 }
152013
152014 -static unsigned long ecryptfs_get_zeroed_pages(gfp_t gfp_mask,
152015 - unsigned int order)
152016 -{
152017 - struct page *page;
152018 -
152019 - page = alloc_pages(gfp_mask | __GFP_ZERO, order);
152020 - if (page)
152021 - return (unsigned long) page_address(page);
152022 - return 0;
152023 -}
152024 -
152025 /**
152026 * ecryptfs_write_metadata
152027 * @ecryptfs_dentry: The eCryptfs dentry
152028 @@ -1376,9 +1365,7 @@
152029 {
152030 struct ecryptfs_crypt_stat *crypt_stat =
152031 &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat;
152032 - unsigned int order;
152033 char *virt;
152034 - size_t virt_len;
152035 size_t size = 0;
152036 int rc = 0;
152037
152038 @@ -1394,35 +1381,33 @@
152039 rc = -EINVAL;
152040 goto out;
152041 }
152042 - virt_len = crypt_stat->num_header_bytes_at_front;
152043 - order = get_order(virt_len);
152044 /* Released in this function */
152045 - virt = (char *)ecryptfs_get_zeroed_pages(GFP_KERNEL, order);
152046 + virt = (char *)get_zeroed_page(GFP_KERNEL);
152047 if (!virt) {
152048 printk(KERN_ERR "%s: Out of memory\n", __func__);
152049 rc = -ENOMEM;
152050 goto out;
152051 }
152052 - rc = ecryptfs_write_headers_virt(virt, virt_len, &size, crypt_stat,
152053 - ecryptfs_dentry);
152054 + rc = ecryptfs_write_headers_virt(virt, PAGE_CACHE_SIZE, &size,
152055 + crypt_stat, ecryptfs_dentry);
152056 if (unlikely(rc)) {
152057 printk(KERN_ERR "%s: Error whilst writing headers; rc = [%d]\n",
152058 __func__, rc);
152059 goto out_free;
152060 }
152061 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR)
152062 - rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry, virt,
152063 - size);
152064 + rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry,
152065 + crypt_stat, virt, size);
152066 else
152067 - rc = ecryptfs_write_metadata_to_contents(ecryptfs_dentry, virt,
152068 - virt_len);
152069 + rc = ecryptfs_write_metadata_to_contents(crypt_stat,
152070 + ecryptfs_dentry, virt);
152071 if (rc) {
152072 printk(KERN_ERR "%s: Error writing metadata out to lower file; "
152073 "rc = [%d]\n", __func__, rc);
152074 goto out_free;
152075 }
152076 out_free:
152077 - free_pages((unsigned long)virt, order);
152078 + free_page((unsigned long)virt);
152079 out:
152080 return rc;
152081 }
152082 @@ -1731,7 +1716,7 @@
152083 {
152084 int rc = 0;
152085
152086 - (*copied_name) = kmalloc((name_size + 1), GFP_KERNEL);
152087 + (*copied_name) = kmalloc((name_size + 2), GFP_KERNEL);
152088 if (!(*copied_name)) {
152089 rc = -ENOMEM;
152090 goto out;
152091 @@ -1741,7 +1726,7 @@
152092 * in printing out the
152093 * string in debug
152094 * messages */
152095 - (*copied_name_size) = name_size;
152096 + (*copied_name_size) = (name_size + 1);
152097 out:
152098 return rc;
152099 }
152100 @@ -2221,19 +2206,17 @@
152101 struct dentry *ecryptfs_dir_dentry,
152102 const char *name, size_t name_size)
152103 {
152104 - struct ecryptfs_mount_crypt_stat *mount_crypt_stat =
152105 - &ecryptfs_superblock_to_private(
152106 - ecryptfs_dir_dentry->d_sb)->mount_crypt_stat;
152107 char *decoded_name;
152108 size_t decoded_name_size;
152109 size_t packet_size;
152110 int rc = 0;
152111
152112 - if ((mount_crypt_stat->flags & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES)
152113 - && !(mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED)
152114 - && (name_size > ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE)
152115 + if ((name_size > ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE)
152116 && (strncmp(name, ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX,
152117 ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE) == 0)) {
152118 + struct ecryptfs_mount_crypt_stat *mount_crypt_stat =
152119 + &ecryptfs_superblock_to_private(
152120 + ecryptfs_dir_dentry->d_sb)->mount_crypt_stat;
152121 const char *orig_name = name;
152122 size_t orig_name_size = name_size;
152123
152124 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ecryptfs/ecryptfs_kernel.h linux-2.6.29-rc3.owrt/fs/ecryptfs/ecryptfs_kernel.h
152125 --- linux-2.6.29.owrt/fs/ecryptfs/ecryptfs_kernel.h 2009-05-10 22:04:39.000000000 +0200
152126 +++ linux-2.6.29-rc3.owrt/fs/ecryptfs/ecryptfs_kernel.h 2009-05-10 23:48:29.000000000 +0200
152127 @@ -328,7 +328,6 @@
152128 */
152129 struct ecryptfs_global_auth_tok {
152130 #define ECRYPTFS_AUTH_TOK_INVALID 0x00000001
152131 -#define ECRYPTFS_AUTH_TOK_FNEK 0x00000002
152132 u32 flags;
152133 struct list_head mount_crypt_stat_list;
152134 struct key *global_auth_tok_key;
152135 @@ -620,6 +619,7 @@
152136 u32 flags);
152137 int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry,
152138 struct dentry *lower_dentry,
152139 + struct ecryptfs_crypt_stat *crypt_stat,
152140 struct inode *ecryptfs_dir_inode,
152141 struct nameidata *ecryptfs_nd);
152142 int ecryptfs_decode_and_decrypt_filename(char **decrypted_name,
152143 @@ -696,7 +696,7 @@
152144 int ecryptfs_add_keysig(struct ecryptfs_crypt_stat *crypt_stat, char *sig);
152145 int
152146 ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat,
152147 - char *sig, u32 global_auth_tok_flags);
152148 + char *sig);
152149 int ecryptfs_get_global_auth_tok_for_sig(
152150 struct ecryptfs_global_auth_tok **global_auth_tok,
152151 struct ecryptfs_mount_crypt_stat *mount_crypt_stat, char *sig);
152152 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ecryptfs/inode.c linux-2.6.29-rc3.owrt/fs/ecryptfs/inode.c
152153 --- linux-2.6.29.owrt/fs/ecryptfs/inode.c 2009-05-10 22:04:39.000000000 +0200
152154 +++ linux-2.6.29-rc3.owrt/fs/ecryptfs/inode.c 2009-05-10 23:48:29.000000000 +0200
152155 @@ -246,6 +246,7 @@
152156 */
152157 int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry,
152158 struct dentry *lower_dentry,
152159 + struct ecryptfs_crypt_stat *crypt_stat,
152160 struct inode *ecryptfs_dir_inode,
152161 struct nameidata *ecryptfs_nd)
152162 {
152163 @@ -253,7 +254,6 @@
152164 struct vfsmount *lower_mnt;
152165 struct inode *lower_inode;
152166 struct ecryptfs_mount_crypt_stat *mount_crypt_stat;
152167 - struct ecryptfs_crypt_stat *crypt_stat;
152168 char *page_virt = NULL;
152169 u64 file_size;
152170 int rc = 0;
152171 @@ -314,11 +314,6 @@
152172 goto out_free_kmem;
152173 }
152174 }
152175 - crypt_stat = &ecryptfs_inode_to_private(
152176 - ecryptfs_dentry->d_inode)->crypt_stat;
152177 - /* TODO: lock for crypt_stat comparison */
152178 - if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED))
152179 - ecryptfs_set_default_sizes(crypt_stat);
152180 rc = ecryptfs_read_and_validate_header_region(page_virt,
152181 ecryptfs_dentry->d_inode);
152182 if (rc) {
152183 @@ -367,7 +362,9 @@
152184 {
152185 char *encrypted_and_encoded_name = NULL;
152186 size_t encrypted_and_encoded_name_size;
152187 + struct ecryptfs_crypt_stat *crypt_stat = NULL;
152188 struct ecryptfs_mount_crypt_stat *mount_crypt_stat = NULL;
152189 + struct ecryptfs_inode_info *inode_info;
152190 struct dentry *lower_dir_dentry, *lower_dentry;
152191 int rc = 0;
152192
152193 @@ -391,15 +388,26 @@
152194 }
152195 if (lower_dentry->d_inode)
152196 goto lookup_and_interpose;
152197 - mount_crypt_stat = &ecryptfs_superblock_to_private(
152198 - ecryptfs_dentry->d_sb)->mount_crypt_stat;
152199 - if (!(mount_crypt_stat
152200 - && (mount_crypt_stat->flags & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES)))
152201 + inode_info = ecryptfs_inode_to_private(ecryptfs_dentry->d_inode);
152202 + if (inode_info) {
152203 + crypt_stat = &inode_info->crypt_stat;
152204 + /* TODO: lock for crypt_stat comparison */
152205 + if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED))
152206 + ecryptfs_set_default_sizes(crypt_stat);
152207 + }
152208 + if (crypt_stat)
152209 + mount_crypt_stat = crypt_stat->mount_crypt_stat;
152210 + else
152211 + mount_crypt_stat = &ecryptfs_superblock_to_private(
152212 + ecryptfs_dentry->d_sb)->mount_crypt_stat;
152213 + if (!(crypt_stat && (crypt_stat->flags & ECRYPTFS_ENCRYPT_FILENAMES))
152214 + && !(mount_crypt_stat && (mount_crypt_stat->flags
152215 + & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES)))
152216 goto lookup_and_interpose;
152217 dput(lower_dentry);
152218 rc = ecryptfs_encrypt_and_encode_filename(
152219 &encrypted_and_encoded_name, &encrypted_and_encoded_name_size,
152220 - NULL, mount_crypt_stat, ecryptfs_dentry->d_name.name,
152221 + crypt_stat, mount_crypt_stat, ecryptfs_dentry->d_name.name,
152222 ecryptfs_dentry->d_name.len);
152223 if (rc) {
152224 printk(KERN_ERR "%s: Error attempting to encrypt and encode "
152225 @@ -418,7 +426,7 @@
152226 }
152227 lookup_and_interpose:
152228 rc = ecryptfs_lookup_and_interpose_lower(ecryptfs_dentry, lower_dentry,
152229 - ecryptfs_dir_inode,
152230 + crypt_stat, ecryptfs_dir_inode,
152231 ecryptfs_nd);
152232 goto out;
152233 out_d_drop:
152234 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ecryptfs/keystore.c linux-2.6.29-rc3.owrt/fs/ecryptfs/keystore.c
152235 --- linux-2.6.29.owrt/fs/ecryptfs/keystore.c 2009-05-10 22:04:39.000000000 +0200
152236 +++ linux-2.6.29-rc3.owrt/fs/ecryptfs/keystore.c 2009-05-10 23:48:29.000000000 +0200
152237 @@ -2375,7 +2375,7 @@
152238
152239 int
152240 ecryptfs_add_global_auth_tok(struct ecryptfs_mount_crypt_stat *mount_crypt_stat,
152241 - char *sig, u32 global_auth_tok_flags)
152242 + char *sig)
152243 {
152244 struct ecryptfs_global_auth_tok *new_auth_tok;
152245 int rc = 0;
152246 @@ -2389,7 +2389,6 @@
152247 goto out;
152248 }
152249 memcpy(new_auth_tok->sig, sig, ECRYPTFS_SIG_SIZE_HEX);
152250 - new_auth_tok->flags = global_auth_tok_flags;
152251 new_auth_tok->sig[ECRYPTFS_SIG_SIZE_HEX] = '\0';
152252 mutex_lock(&mount_crypt_stat->global_auth_tok_list_mutex);
152253 list_add(&new_auth_tok->mount_crypt_stat_list,
152254 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ecryptfs/main.c linux-2.6.29-rc3.owrt/fs/ecryptfs/main.c
152255 --- linux-2.6.29.owrt/fs/ecryptfs/main.c 2009-05-10 22:04:39.000000000 +0200
152256 +++ linux-2.6.29-rc3.owrt/fs/ecryptfs/main.c 2009-05-10 23:48:29.000000000 +0200
152257 @@ -319,7 +319,7 @@
152258 case ecryptfs_opt_ecryptfs_sig:
152259 sig_src = args[0].from;
152260 rc = ecryptfs_add_global_auth_tok(mount_crypt_stat,
152261 - sig_src, 0);
152262 + sig_src);
152263 if (rc) {
152264 printk(KERN_ERR "Error attempting to register "
152265 "global sig; rc = [%d]\n", rc);
152266 @@ -370,8 +370,7 @@
152267 ECRYPTFS_SIG_SIZE_HEX] = '\0';
152268 rc = ecryptfs_add_global_auth_tok(
152269 mount_crypt_stat,
152270 - mount_crypt_stat->global_default_fnek_sig,
152271 - ECRYPTFS_AUTH_TOK_FNEK);
152272 + mount_crypt_stat->global_default_fnek_sig);
152273 if (rc) {
152274 printk(KERN_ERR "Error attempting to register "
152275 "global fnek sig [%s]; rc = [%d]\n",
152276 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/eventpoll.c linux-2.6.29-rc3.owrt/fs/eventpoll.c
152277 --- linux-2.6.29.owrt/fs/eventpoll.c 2009-05-10 22:04:39.000000000 +0200
152278 +++ linux-2.6.29-rc3.owrt/fs/eventpoll.c 2009-05-10 23:48:29.000000000 +0200
152279 @@ -234,6 +234,8 @@
152280 /*
152281 * Configuration options available inside /proc/sys/fs/epoll/
152282 */
152283 +/* Maximum number of epoll devices, per user */
152284 +static int max_user_instances __read_mostly;
152285 /* Maximum number of epoll watched descriptors, per user */
152286 static int max_user_watches __read_mostly;
152287
152288 @@ -259,6 +261,14 @@
152289
152290 ctl_table epoll_table[] = {
152291 {
152292 + .procname = "max_user_instances",
152293 + .data = &max_user_instances,
152294 + .maxlen = sizeof(int),
152295 + .mode = 0644,
152296 + .proc_handler = &proc_dointvec_minmax,
152297 + .extra1 = &zero,
152298 + },
152299 + {
152300 .procname = "max_user_watches",
152301 .data = &max_user_watches,
152302 .maxlen = sizeof(int),
152303 @@ -481,6 +491,7 @@
152304
152305 mutex_unlock(&epmutex);
152306 mutex_destroy(&ep->mtx);
152307 + atomic_dec(&ep->user->epoll_devs);
152308 free_uid(ep->user);
152309 kfree(ep);
152310 }
152311 @@ -570,6 +581,10 @@
152312 struct eventpoll *ep;
152313
152314 user = get_current_user();
152315 + error = -EMFILE;
152316 + if (unlikely(atomic_read(&user->epoll_devs) >=
152317 + max_user_instances))
152318 + goto free_uid;
152319 error = -ENOMEM;
152320 ep = kzalloc(sizeof(*ep), GFP_KERNEL);
152321 if (unlikely(!ep))
152322 @@ -1126,6 +1141,7 @@
152323 flags & O_CLOEXEC);
152324 if (fd < 0)
152325 ep_free(ep);
152326 + atomic_inc(&ep->user->epoll_devs);
152327
152328 error_return:
152329 DNPRINTK(3, (KERN_INFO "[%p] eventpoll: sys_epoll_create(%d) = %d\n",
152330 @@ -1350,10 +1366,8 @@
152331 struct sysinfo si;
152332
152333 si_meminfo(&si);
152334 - /*
152335 - * Allows top 4% of lomem to be allocated for epoll watches (per user).
152336 - */
152337 - max_user_watches = (((si.totalram - si.totalhigh) / 25) << PAGE_SHIFT) /
152338 + max_user_instances = 128;
152339 + max_user_watches = (((si.totalram - si.totalhigh) / 32) << PAGE_SHIFT) /
152340 EP_ITEM_COST;
152341
152342 /* Initialize the structure used to perform safe poll wait head wake ups */
152343 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/exec.c linux-2.6.29-rc3.owrt/fs/exec.c
152344 --- linux-2.6.29.owrt/fs/exec.c 2009-05-10 22:04:39.000000000 +0200
152345 +++ linux-2.6.29-rc3.owrt/fs/exec.c 2009-05-10 23:48:29.000000000 +0200
152346 @@ -1049,32 +1049,16 @@
152347 * - the caller must hold current->cred_exec_mutex to protect against
152348 * PTRACE_ATTACH
152349 */
152350 -void check_unsafe_exec(struct linux_binprm *bprm, struct files_struct *files)
152351 +void check_unsafe_exec(struct linux_binprm *bprm)
152352 {
152353 - struct task_struct *p = current, *t;
152354 - unsigned long flags;
152355 - unsigned n_fs, n_files, n_sighand;
152356 + struct task_struct *p = current;
152357
152358 bprm->unsafe = tracehook_unsafe_exec(p);
152359
152360 - n_fs = 1;
152361 - n_files = 1;
152362 - n_sighand = 1;
152363 - lock_task_sighand(p, &flags);
152364 - for (t = next_thread(p); t != p; t = next_thread(t)) {
152365 - if (t->fs == p->fs)
152366 - n_fs++;
152367 - if (t->files == files)
152368 - n_files++;
152369 - n_sighand++;
152370 - }
152371 -
152372 - if (atomic_read(&p->fs->count) > n_fs ||
152373 - atomic_read(&p->files->count) > n_files ||
152374 - atomic_read(&p->sighand->count) > n_sighand)
152375 + if (atomic_read(&p->fs->count) > 1 ||
152376 + atomic_read(&p->files->count) > 1 ||
152377 + atomic_read(&p->sighand->count) > 1)
152378 bprm->unsafe |= LSM_UNSAFE_SHARE;
152379 -
152380 - unlock_task_sighand(p, &flags);
152381 }
152382
152383 /*
152384 @@ -1289,7 +1273,7 @@
152385 bprm->cred = prepare_exec_creds();
152386 if (!bprm->cred)
152387 goto out_unlock;
152388 - check_unsafe_exec(bprm, displaced);
152389 + check_unsafe_exec(bprm);
152390
152391 file = open_exec(filename);
152392 retval = PTR_ERR(file);
152393 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext2/super.c linux-2.6.29-rc3.owrt/fs/ext2/super.c
152394 --- linux-2.6.29.owrt/fs/ext2/super.c 2009-05-10 22:04:39.000000000 +0200
152395 +++ linux-2.6.29-rc3.owrt/fs/ext2/super.c 2009-05-10 23:48:29.000000000 +0200
152396 @@ -1185,12 +1185,9 @@
152397 es = sbi->s_es;
152398 if (((sbi->s_mount_opt & EXT2_MOUNT_XIP) !=
152399 (old_mount_opt & EXT2_MOUNT_XIP)) &&
152400 - invalidate_inodes(sb)) {
152401 - ext2_warning(sb, __func__, "refusing change of xip flag "
152402 - "with busy inodes while remounting");
152403 - sbi->s_mount_opt &= ~EXT2_MOUNT_XIP;
152404 - sbi->s_mount_opt |= old_mount_opt & EXT2_MOUNT_XIP;
152405 - }
152406 + invalidate_inodes(sb))
152407 + ext2_warning(sb, __func__, "busy inodes while remounting "\
152408 + "xip remain in cache (no functional problem)");
152409 if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY))
152410 return 0;
152411 if (*flags & MS_RDONLY) {
152412 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext3/namei.c linux-2.6.29-rc3.owrt/fs/ext3/namei.c
152413 --- linux-2.6.29.owrt/fs/ext3/namei.c 2009-05-10 22:04:39.000000000 +0200
152414 +++ linux-2.6.29-rc3.owrt/fs/ext3/namei.c 2009-05-10 23:48:29.000000000 +0200
152415 @@ -1358,7 +1358,7 @@
152416 struct fake_dirent *fde;
152417
152418 blocksize = dir->i_sb->s_blocksize;
152419 - dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));
152420 + dxtrace(printk("Creating index\n"));
152421 retval = ext3_journal_get_write_access(handle, bh);
152422 if (retval) {
152423 ext3_std_error(dir->i_sb, retval);
152424 @@ -1367,19 +1367,6 @@
152425 }
152426 root = (struct dx_root *) bh->b_data;
152427
152428 - /* The 0th block becomes the root, move the dirents out */
152429 - fde = &root->dotdot;
152430 - de = (struct ext3_dir_entry_2 *)((char *)fde +
152431 - ext3_rec_len_from_disk(fde->rec_len));
152432 - if ((char *) de >= (((char *) root) + blocksize)) {
152433 - ext3_error(dir->i_sb, __func__,
152434 - "invalid rec_len for '..' in inode %lu",
152435 - dir->i_ino);
152436 - brelse(bh);
152437 - return -EIO;
152438 - }
152439 - len = ((char *) root) + blocksize - (char *) de;
152440 -
152441 bh2 = ext3_append (handle, dir, &block, &retval);
152442 if (!(bh2)) {
152443 brelse(bh);
152444 @@ -1388,6 +1375,11 @@
152445 EXT3_I(dir)->i_flags |= EXT3_INDEX_FL;
152446 data1 = bh2->b_data;
152447
152448 + /* The 0th block becomes the root, move the dirents out */
152449 + fde = &root->dotdot;
152450 + de = (struct ext3_dir_entry_2 *)((char *)fde +
152451 + ext3_rec_len_from_disk(fde->rec_len));
152452 + len = ((char *) root) + blocksize - (char *) de;
152453 memcpy (data1, de, len);
152454 de = (struct ext3_dir_entry_2 *) data1;
152455 top = data1 + len;
152456 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext3/super.c linux-2.6.29-rc3.owrt/fs/ext3/super.c
152457 --- linux-2.6.29.owrt/fs/ext3/super.c 2009-05-10 22:04:39.000000000 +0200
152458 +++ linux-2.6.29-rc3.owrt/fs/ext3/super.c 2009-05-10 23:48:29.000000000 +0200
152459 @@ -2428,13 +2428,12 @@
152460
152461 static int ext3_sync_fs(struct super_block *sb, int wait)
152462 {
152463 - tid_t target;
152464 -
152465 sb->s_dirt = 0;
152466 - if (journal_start_commit(EXT3_SB(sb)->s_journal, &target)) {
152467 - if (wait)
152468 - log_wait_commit(EXT3_SB(sb)->s_journal, target);
152469 - }
152470 + if (wait)
152471 + ext3_force_commit(sb);
152472 + else
152473 + journal_start_commit(EXT3_SB(sb)->s_journal, NULL);
152474 +
152475 return 0;
152476 }
152477
152478 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/balloc.c linux-2.6.29-rc3.owrt/fs/ext4/balloc.c
152479 --- linux-2.6.29.owrt/fs/ext4/balloc.c 2009-05-10 22:04:39.000000000 +0200
152480 +++ linux-2.6.29-rc3.owrt/fs/ext4/balloc.c 2009-05-10 23:48:29.000000000 +0200
152481 @@ -609,9 +609,7 @@
152482 */
152483 int ext4_should_retry_alloc(struct super_block *sb, int *retries)
152484 {
152485 - if (!ext4_has_free_blocks(EXT4_SB(sb), 1) ||
152486 - (*retries)++ > 3 ||
152487 - !EXT4_SB(sb)->s_journal)
152488 + if (!ext4_has_free_blocks(EXT4_SB(sb), 1) || (*retries)++ > 3)
152489 return 0;
152490
152491 jbd_debug(1, "%s: retrying operation after ENOSPC\n", sb->s_id);
152492 @@ -686,15 +684,15 @@
152493 gdp = ext4_get_group_desc(sb, i, NULL);
152494 if (!gdp)
152495 continue;
152496 - desc_count += ext4_free_blks_count(sb, gdp);
152497 + desc_count += le16_to_cpu(gdp->bg_free_blocks_count);
152498 brelse(bitmap_bh);
152499 bitmap_bh = ext4_read_block_bitmap(sb, i);
152500 if (bitmap_bh == NULL)
152501 continue;
152502
152503 x = ext4_count_free(bitmap_bh, sb->s_blocksize);
152504 - printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n",
152505 - i, ext4_free_blks_count(sb, gdp), x);
152506 + printk(KERN_DEBUG "group %lu: stored = %d, counted = %u\n",
152507 + i, le16_to_cpu(gdp->bg_free_blocks_count), x);
152508 bitmap_count += x;
152509 }
152510 brelse(bitmap_bh);
152511 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/ext4.h linux-2.6.29-rc3.owrt/fs/ext4/ext4.h
152512 --- linux-2.6.29.owrt/fs/ext4/ext4.h 2009-05-10 22:04:39.000000000 +0200
152513 +++ linux-2.6.29-rc3.owrt/fs/ext4/ext4.h 2009-05-10 23:48:29.000000000 +0200
152514 @@ -868,7 +868,7 @@
152515 {
152516 unsigned len = le16_to_cpu(dlen);
152517
152518 - if (len == EXT4_MAX_REC_LEN || len == 0)
152519 + if (len == EXT4_MAX_REC_LEN)
152520 return 1 << 16;
152521 return len;
152522 }
152523 @@ -1206,11 +1206,8 @@
152524
152525 static inline loff_t ext4_isize(struct ext4_inode *raw_inode)
152526 {
152527 - if (S_ISREG(le16_to_cpu(raw_inode->i_mode)))
152528 - return ((loff_t)le32_to_cpu(raw_inode->i_size_high) << 32) |
152529 - le32_to_cpu(raw_inode->i_size_lo);
152530 - else
152531 - return (loff_t) le32_to_cpu(raw_inode->i_size_lo);
152532 + return ((loff_t)le32_to_cpu(raw_inode->i_size_high) << 32) |
152533 + le32_to_cpu(raw_inode->i_size_lo);
152534 }
152535
152536 static inline void ext4_isize_set(struct ext4_inode *raw_inode, loff_t i_size)
152537 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/extents.c linux-2.6.29-rc3.owrt/fs/ext4/extents.c
152538 --- linux-2.6.29.owrt/fs/ext4/extents.c 2009-05-10 22:04:39.000000000 +0200
152539 +++ linux-2.6.29-rc3.owrt/fs/ext4/extents.c 2009-05-10 23:48:29.000000000 +0200
152540 @@ -1122,8 +1122,7 @@
152541 struct ext4_extent_idx *ix;
152542 struct ext4_extent *ex;
152543 ext4_fsblk_t block;
152544 - int depth; /* Note, NOT eh_depth; depth from top of tree */
152545 - int ee_len;
152546 + int depth, ee_len;
152547
152548 BUG_ON(path == NULL);
152549 depth = path->p_depth;
152550 @@ -1180,8 +1179,7 @@
152551 if (bh == NULL)
152552 return -EIO;
152553 eh = ext_block_hdr(bh);
152554 - /* subtract from p_depth to get proper eh_depth */
152555 - if (ext4_ext_check_header(inode, eh, path->p_depth - depth)) {
152556 + if (ext4_ext_check_header(inode, eh, depth)) {
152557 put_bh(bh);
152558 return -EIO;
152559 }
152560 @@ -3050,7 +3048,7 @@
152561 WARN_ON(ret <= 0);
152562 printk(KERN_ERR "%s: ext4_ext_get_blocks "
152563 "returned error inode#%lu, block=%u, "
152564 - "max_blocks=%u", __func__,
152565 + "max_blocks=%lu", __func__,
152566 inode->i_ino, block, max_blocks);
152567 #endif
152568 ext4_mark_inode_dirty(handle, inode);
152569 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/ialloc.c linux-2.6.29-rc3.owrt/fs/ext4/ialloc.c
152570 --- linux-2.6.29.owrt/fs/ext4/ialloc.c 2009-05-10 22:04:39.000000000 +0200
152571 +++ linux-2.6.29-rc3.owrt/fs/ext4/ialloc.c 2009-05-10 23:48:29.000000000 +0200
152572 @@ -188,7 +188,7 @@
152573 struct ext4_group_desc *gdp;
152574 struct ext4_super_block *es;
152575 struct ext4_sb_info *sbi;
152576 - int fatal = 0, err, count, cleared;
152577 + int fatal = 0, err, count;
152578 ext4_group_t flex_group;
152579
152580 if (atomic_read(&inode->i_count) > 1) {
152581 @@ -248,10 +248,8 @@
152582 goto error_return;
152583
152584 /* Ok, now we can actually update the inode bitmaps.. */
152585 - spin_lock(sb_bgl_lock(sbi, block_group));
152586 - cleared = ext4_clear_bit(bit, bitmap_bh->b_data);
152587 - spin_unlock(sb_bgl_lock(sbi, block_group));
152588 - if (!cleared)
152589 + if (!ext4_clear_bit_atomic(sb_bgl_lock(sbi, block_group),
152590 + bit, bitmap_bh->b_data))
152591 ext4_error(sb, "ext4_free_inode",
152592 "bit already cleared for inode %lu", ino);
152593 else {
152594 @@ -698,7 +696,6 @@
152595 struct inode *ret;
152596 ext4_group_t i;
152597 int free = 0;
152598 - static int once = 1;
152599 ext4_group_t flex_group;
152600
152601 /* Cannot create files in a deleted directory */
152602 @@ -718,14 +715,6 @@
152603
152604 if (sbi->s_log_groups_per_flex) {
152605 ret2 = find_group_flex(sb, dir, &group);
152606 - if (ret2 == -1) {
152607 - ret2 = find_group_other(sb, dir, &group);
152608 - if (ret2 == 0 && once)
152609 - once = 0;
152610 - printk(KERN_NOTICE "ext4: find_group_flex "
152611 - "failed, fallback succeeded dir %lu\n",
152612 - dir->i_ino);
152613 - }
152614 goto got_group;
152615 }
152616
152617 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/inode.c linux-2.6.29-rc3.owrt/fs/ext4/inode.c
152618 --- linux-2.6.29.owrt/fs/ext4/inode.c 2009-05-10 22:04:39.000000000 +0200
152619 +++ linux-2.6.29-rc3.owrt/fs/ext4/inode.c 2009-05-10 23:48:29.000000000 +0200
152620 @@ -47,10 +47,8 @@
152621 static inline int ext4_begin_ordered_truncate(struct inode *inode,
152622 loff_t new_size)
152623 {
152624 - return jbd2_journal_begin_ordered_truncate(
152625 - EXT4_SB(inode->i_sb)->s_journal,
152626 - &EXT4_I(inode)->jinode,
152627 - new_size);
152628 + return jbd2_journal_begin_ordered_truncate(&EXT4_I(inode)->jinode,
152629 + new_size);
152630 }
152631
152632 static void ext4_invalidatepage(struct page *page, unsigned long offset);
152633 @@ -362,9 +360,9 @@
152634 final = ptrs;
152635 } else {
152636 ext4_warning(inode->i_sb, "ext4_block_to_path",
152637 - "block %lu > max in inode %lu",
152638 + "block %lu > max",
152639 i_block + direct_blocks +
152640 - indirect_blocks + double_blocks, inode->i_ino);
152641 + indirect_blocks + double_blocks);
152642 }
152643 if (boundary)
152644 *boundary = final - 1 - (i_block & (ptrs - 1));
152645 @@ -1368,10 +1366,6 @@
152646 goto out;
152647 }
152648
152649 - /* We cannot recurse into the filesystem as the transaction is already
152650 - * started */
152651 - flags |= AOP_FLAG_NOFS;
152652 -
152653 page = grab_cache_page_write_begin(mapping, index, flags);
152654 if (!page) {
152655 ext4_journal_stop(handle);
152656 @@ -1381,7 +1375,7 @@
152657 *pagep = page;
152658
152659 ret = block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
152660 - ext4_get_block);
152661 + ext4_get_block);
152662
152663 if (!ret && ext4_should_journal_data(inode)) {
152664 ret = walk_page_buffers(handle, page_buffers(page),
152665 @@ -2443,7 +2437,6 @@
152666 int no_nrwrite_index_update;
152667 int pages_written = 0;
152668 long pages_skipped;
152669 - int range_cyclic, cycled = 1, io_done = 0;
152670 int needed_blocks, ret = 0, nr_to_writebump = 0;
152671 struct ext4_sb_info *sbi = EXT4_SB(mapping->host->i_sb);
152672
152673 @@ -2495,15 +2488,9 @@
152674 if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX)
152675 range_whole = 1;
152676
152677 - range_cyclic = wbc->range_cyclic;
152678 - if (wbc->range_cyclic) {
152679 + if (wbc->range_cyclic)
152680 index = mapping->writeback_index;
152681 - if (index)
152682 - cycled = 0;
152683 - wbc->range_start = index << PAGE_CACHE_SHIFT;
152684 - wbc->range_end = LLONG_MAX;
152685 - wbc->range_cyclic = 0;
152686 - } else
152687 + else
152688 index = wbc->range_start >> PAGE_CACHE_SHIFT;
152689
152690 mpd.wbc = wbc;
152691 @@ -2517,7 +2504,6 @@
152692 wbc->no_nrwrite_index_update = 1;
152693 pages_skipped = wbc->pages_skipped;
152694
152695 -retry:
152696 while (!ret && wbc->nr_to_write > 0) {
152697
152698 /*
152699 @@ -2544,7 +2530,7 @@
152700
152701 ext4_journal_stop(handle);
152702
152703 - if ((mpd.retval == -ENOSPC) && sbi->s_journal) {
152704 + if (mpd.retval == -ENOSPC) {
152705 /* commit the transaction which would
152706 * free blocks released in the transaction
152707 * and try again
152708 @@ -2560,7 +2546,6 @@
152709 pages_written += mpd.pages_written;
152710 wbc->pages_skipped = pages_skipped;
152711 ret = 0;
152712 - io_done = 1;
152713 } else if (wbc->nr_to_write)
152714 /*
152715 * There is no more writeout needed
152716 @@ -2569,13 +2554,6 @@
152717 */
152718 break;
152719 }
152720 - if (!io_done && !cycled) {
152721 - cycled = 1;
152722 - index = 0;
152723 - wbc->range_start = index << PAGE_CACHE_SHIFT;
152724 - wbc->range_end = mapping->writeback_index - 1;
152725 - goto retry;
152726 - }
152727 if (pages_skipped != wbc->pages_skipped)
152728 printk(KERN_EMERG "This should not happen leaving %s "
152729 "with nr_to_write = %ld ret = %d\n",
152730 @@ -2583,7 +2561,6 @@
152731
152732 /* Update index */
152733 index += pages_written;
152734 - wbc->range_cyclic = range_cyclic;
152735 if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
152736 /*
152737 * set the writeback_index so that range_cyclic
152738 @@ -2671,9 +2648,6 @@
152739 ret = PTR_ERR(handle);
152740 goto out;
152741 }
152742 - /* We cannot recurse into the filesystem as the transaction is already
152743 - * started */
152744 - flags |= AOP_FLAG_NOFS;
152745
152746 page = grab_cache_page_write_begin(mapping, index, flags);
152747 if (!page) {
152748 @@ -2847,6 +2821,9 @@
152749 filemap_write_and_wait(mapping);
152750 }
152751
152752 + BUG_ON(!EXT4_JOURNAL(inode) &&
152753 + EXT4_I(inode)->i_state & EXT4_STATE_JDATA);
152754 +
152755 if (EXT4_JOURNAL(inode) && EXT4_I(inode)->i_state & EXT4_STATE_JDATA) {
152756 /*
152757 * This is a REALLY heavyweight approach, but the use of
152758 @@ -3645,7 +3622,7 @@
152759 * block pointed to itself, it would have been detached when
152760 * the block was cleared. Check for this instead of OOPSing.
152761 */
152762 - if ((EXT4_JOURNAL(inode) == NULL) || bh2jh(this_bh))
152763 + if (bh2jh(this_bh))
152764 ext4_handle_dirty_metadata(handle, inode, this_bh);
152765 else
152766 ext4_error(inode->i_sb, __func__,
152767 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/mballoc.c linux-2.6.29-rc3.owrt/fs/ext4/mballoc.c
152768 --- linux-2.6.29.owrt/fs/ext4/mballoc.c 2009-05-10 22:04:39.000000000 +0200
152769 +++ linux-2.6.29-rc3.owrt/fs/ext4/mballoc.c 2009-05-10 23:48:29.000000000 +0200
152770 @@ -1447,7 +1447,7 @@
152771 struct ext4_free_extent *gex = &ac->ac_g_ex;
152772
152773 BUG_ON(ex->fe_len <= 0);
152774 - BUG_ON(ex->fe_len > EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
152775 + BUG_ON(ex->fe_len >= EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
152776 BUG_ON(ex->fe_start >= EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
152777 BUG_ON(ac->ac_status != AC_STATUS_CONTINUE);
152778
152779 @@ -3025,7 +3025,7 @@
152780 goto out_err;
152781
152782 ext4_debug("using block group %u(%d)\n", ac->ac_b_ex.fe_group,
152783 - ext4_free_blks_count(sb, gdp));
152784 + gdp->bg_free_blocks_count);
152785
152786 err = ext4_journal_get_write_access(handle, gdp_bh);
152787 if (err)
152788 @@ -3292,7 +3292,7 @@
152789 }
152790 BUG_ON(start + size <= ac->ac_o_ex.fe_logical &&
152791 start > ac->ac_o_ex.fe_logical);
152792 - BUG_ON(size <= 0 || size > EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
152793 + BUG_ON(size <= 0 || size >= EXT4_BLOCKS_PER_GROUP(ac->ac_sb));
152794
152795 /* now prepare goal request */
152796
152797 @@ -3589,7 +3589,6 @@
152798 struct super_block *sb, struct ext4_prealloc_space *pa)
152799 {
152800 ext4_group_t grp;
152801 - ext4_fsblk_t grp_blk;
152802
152803 if (!atomic_dec_and_test(&pa->pa_count) || pa->pa_free != 0)
152804 return;
152805 @@ -3604,12 +3603,8 @@
152806 pa->pa_deleted = 1;
152807 spin_unlock(&pa->pa_lock);
152808
152809 - grp_blk = pa->pa_pstart;
152810 - /* If linear, pa_pstart may be in the next group when pa is used up */
152811 - if (pa->pa_linear)
152812 - grp_blk--;
152813 -
152814 - ext4_get_group_no_and_offset(sb, grp_blk, &grp, NULL);
152815 + /* -1 is to protect from crossing allocation group */
152816 + ext4_get_group_no_and_offset(sb, pa->pa_pstart - 1, &grp, NULL);
152817
152818 /*
152819 * possible race:
152820 @@ -3698,8 +3693,6 @@
152821 pa->pa_free = pa->pa_len;
152822 atomic_set(&pa->pa_count, 1);
152823 spin_lock_init(&pa->pa_lock);
152824 - INIT_LIST_HEAD(&pa->pa_inode_list);
152825 - INIT_LIST_HEAD(&pa->pa_group_list);
152826 pa->pa_deleted = 0;
152827 pa->pa_linear = 0;
152828
152829 @@ -3762,7 +3755,6 @@
152830 atomic_set(&pa->pa_count, 1);
152831 spin_lock_init(&pa->pa_lock);
152832 INIT_LIST_HEAD(&pa->pa_inode_list);
152833 - INIT_LIST_HEAD(&pa->pa_group_list);
152834 pa->pa_deleted = 0;
152835 pa->pa_linear = 1;
152836
152837 @@ -4484,26 +4476,23 @@
152838 pa->pa_free -= ac->ac_b_ex.fe_len;
152839 pa->pa_len -= ac->ac_b_ex.fe_len;
152840 spin_unlock(&pa->pa_lock);
152841 + /*
152842 + * We want to add the pa to the right bucket.
152843 + * Remove it from the list and while adding
152844 + * make sure the list to which we are adding
152845 + * doesn't grow big.
152846 + */
152847 + if (likely(pa->pa_free)) {
152848 + spin_lock(pa->pa_obj_lock);
152849 + list_del_rcu(&pa->pa_inode_list);
152850 + spin_unlock(pa->pa_obj_lock);
152851 + ext4_mb_add_n_trim(ac);
152852 + }
152853 }
152854 + ext4_mb_put_pa(ac, ac->ac_sb, pa);
152855 }
152856 if (ac->alloc_semp)
152857 up_read(ac->alloc_semp);
152858 - if (pa) {
152859 - /*
152860 - * We want to add the pa to the right bucket.
152861 - * Remove it from the list and while adding
152862 - * make sure the list to which we are adding
152863 - * doesn't grow big. We need to release
152864 - * alloc_semp before calling ext4_mb_add_n_trim()
152865 - */
152866 - if (pa->pa_linear && likely(pa->pa_free)) {
152867 - spin_lock(pa->pa_obj_lock);
152868 - list_del_rcu(&pa->pa_inode_list);
152869 - spin_unlock(pa->pa_obj_lock);
152870 - ext4_mb_add_n_trim(ac);
152871 - }
152872 - ext4_mb_put_pa(ac, ac->ac_sb, pa);
152873 - }
152874 if (ac->ac_bitmap_page)
152875 page_cache_release(ac->ac_bitmap_page);
152876 if (ac->ac_buddy_page)
152877 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/migrate.c linux-2.6.29-rc3.owrt/fs/ext4/migrate.c
152878 --- linux-2.6.29.owrt/fs/ext4/migrate.c 2009-05-10 22:04:39.000000000 +0200
152879 +++ linux-2.6.29-rc3.owrt/fs/ext4/migrate.c 2009-05-10 23:48:29.000000000 +0200
152880 @@ -481,7 +481,7 @@
152881 + 1);
152882 if (IS_ERR(handle)) {
152883 retval = PTR_ERR(handle);
152884 - return retval;
152885 + goto err_out;
152886 }
152887 tmp_inode = ext4_new_inode(handle,
152888 inode->i_sb->s_root->d_inode,
152889 @@ -489,7 +489,8 @@
152890 if (IS_ERR(tmp_inode)) {
152891 retval = -ENOMEM;
152892 ext4_journal_stop(handle);
152893 - return retval;
152894 + tmp_inode = NULL;
152895 + goto err_out;
152896 }
152897 i_size_write(tmp_inode, i_size_read(inode));
152898 /*
152899 @@ -617,7 +618,8 @@
152900
152901 ext4_journal_stop(handle);
152902
152903 - iput(tmp_inode);
152904 + if (tmp_inode)
152905 + iput(tmp_inode);
152906
152907 return retval;
152908 }
152909 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/namei.c linux-2.6.29-rc3.owrt/fs/ext4/namei.c
152910 --- linux-2.6.29.owrt/fs/ext4/namei.c 2009-05-10 22:04:39.000000000 +0200
152911 +++ linux-2.6.29-rc3.owrt/fs/ext4/namei.c 2009-05-10 23:48:29.000000000 +0200
152912 @@ -1368,7 +1368,7 @@
152913 struct fake_dirent *fde;
152914
152915 blocksize = dir->i_sb->s_blocksize;
152916 - dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));
152917 + dxtrace(printk(KERN_DEBUG "Creating index\n"));
152918 retval = ext4_journal_get_write_access(handle, bh);
152919 if (retval) {
152920 ext4_std_error(dir->i_sb, retval);
152921 @@ -1377,20 +1377,6 @@
152922 }
152923 root = (struct dx_root *) bh->b_data;
152924
152925 - /* The 0th block becomes the root, move the dirents out */
152926 - fde = &root->dotdot;
152927 - de = (struct ext4_dir_entry_2 *)((char *)fde +
152928 - ext4_rec_len_from_disk(fde->rec_len));
152929 - if ((char *) de >= (((char *) root) + blocksize)) {
152930 - ext4_error(dir->i_sb, __func__,
152931 - "invalid rec_len for '..' in inode %lu",
152932 - dir->i_ino);
152933 - brelse(bh);
152934 - return -EIO;
152935 - }
152936 - len = ((char *) root) + blocksize - (char *) de;
152937 -
152938 - /* Allocate new block for the 0th block's dirents */
152939 bh2 = ext4_append(handle, dir, &block, &retval);
152940 if (!(bh2)) {
152941 brelse(bh);
152942 @@ -1399,6 +1385,11 @@
152943 EXT4_I(dir)->i_flags |= EXT4_INDEX_FL;
152944 data1 = bh2->b_data;
152945
152946 + /* The 0th block becomes the root, move the dirents out */
152947 + fde = &root->dotdot;
152948 + de = (struct ext4_dir_entry_2 *)((char *)fde +
152949 + ext4_rec_len_from_disk(fde->rec_len));
152950 + len = ((char *) root) + blocksize - (char *) de;
152951 memcpy (data1, de, len);
152952 de = (struct ext4_dir_entry_2 *) data1;
152953 top = data1 + len;
152954 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/resize.c linux-2.6.29-rc3.owrt/fs/ext4/resize.c
152955 --- linux-2.6.29.owrt/fs/ext4/resize.c 2009-05-10 22:04:39.000000000 +0200
152956 +++ linux-2.6.29-rc3.owrt/fs/ext4/resize.c 2009-05-10 23:48:29.000000000 +0200
152957 @@ -861,13 +861,12 @@
152958 gdp = (struct ext4_group_desc *)((char *)primary->b_data +
152959 gdb_off * EXT4_DESC_SIZE(sb));
152960
152961 - memset(gdp, 0, EXT4_DESC_SIZE(sb));
152962 ext4_block_bitmap_set(sb, gdp, input->block_bitmap); /* LV FIXME */
152963 ext4_inode_bitmap_set(sb, gdp, input->inode_bitmap); /* LV FIXME */
152964 ext4_inode_table_set(sb, gdp, input->inode_table); /* LV FIXME */
152965 ext4_free_blks_set(sb, gdp, input->free_blocks_count);
152966 ext4_free_inodes_set(sb, gdp, EXT4_INODES_PER_GROUP(sb));
152967 - gdp->bg_flags = cpu_to_le16(EXT4_BG_INODE_ZEROED);
152968 + gdp->bg_flags |= cpu_to_le16(EXT4_BG_INODE_ZEROED);
152969 gdp->bg_checksum = ext4_group_desc_csum(sbi, input->group, gdp);
152970
152971 /*
152972 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ext4/super.c linux-2.6.29-rc3.owrt/fs/ext4/super.c
152973 --- linux-2.6.29.owrt/fs/ext4/super.c 2009-05-10 22:04:39.000000000 +0200
152974 +++ linux-2.6.29-rc3.owrt/fs/ext4/super.c 2009-05-10 23:48:29.000000000 +0200
152975 @@ -3046,17 +3046,14 @@
152976 static int ext4_sync_fs(struct super_block *sb, int wait)
152977 {
152978 int ret = 0;
152979 - tid_t target;
152980
152981 trace_mark(ext4_sync_fs, "dev %s wait %d", sb->s_id, wait);
152982 sb->s_dirt = 0;
152983 if (EXT4_SB(sb)->s_journal) {
152984 - if (jbd2_journal_start_commit(EXT4_SB(sb)->s_journal,
152985 - &target)) {
152986 - if (wait)
152987 - jbd2_log_wait_commit(EXT4_SB(sb)->s_journal,
152988 - target);
152989 - }
152990 + if (wait)
152991 + ret = ext4_force_commit(sb);
152992 + else
152993 + jbd2_journal_start_commit(EXT4_SB(sb)->s_journal, NULL);
152994 } else {
152995 ext4_commit_super(sb, EXT4_SB(sb)->s_es, wait);
152996 }
152997 @@ -3091,6 +3088,7 @@
152998
152999 /* Journal blocked and flushed, clear needs_recovery flag. */
153000 EXT4_CLEAR_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER);
153001 + ext4_commit_super(sb, EXT4_SB(sb)->s_es, 1);
153002 error = ext4_commit_super(sb, EXT4_SB(sb)->s_es, 1);
153003 if (error)
153004 goto out;
153005 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/fat/inode.c linux-2.6.29-rc3.owrt/fs/fat/inode.c
153006 --- linux-2.6.29.owrt/fs/fat/inode.c 2009-05-10 22:04:39.000000000 +0200
153007 +++ linux-2.6.29-rc3.owrt/fs/fat/inode.c 2009-05-10 23:48:29.000000000 +0200
153008 @@ -202,9 +202,9 @@
153009 sector_t blocknr;
153010
153011 /* fat_get_cluster() assumes the requested blocknr isn't truncated. */
153012 - down_read(&mapping->host->i_alloc_sem);
153013 + mutex_lock(&mapping->host->i_mutex);
153014 blocknr = generic_block_bmap(mapping, block, fat_get_block);
153015 - up_read(&mapping->host->i_alloc_sem);
153016 + mutex_unlock(&mapping->host->i_mutex);
153017
153018 return blocknr;
153019 }
153020 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/fs-writeback.c linux-2.6.29-rc3.owrt/fs/fs-writeback.c
153021 --- linux-2.6.29.owrt/fs/fs-writeback.c 2009-05-10 22:04:39.000000000 +0200
153022 +++ linux-2.6.29-rc3.owrt/fs/fs-writeback.c 2009-05-10 23:48:29.000000000 +0200
153023 @@ -274,7 +274,6 @@
153024 int ret;
153025
153026 BUG_ON(inode->i_state & I_SYNC);
153027 - WARN_ON(inode->i_state & I_NEW);
153028
153029 /* Set I_SYNC, reset I_DIRTY */
153030 dirty = inode->i_state & I_DIRTY;
153031 @@ -299,7 +298,6 @@
153032 }
153033
153034 spin_lock(&inode_lock);
153035 - WARN_ON(inode->i_state & I_NEW);
153036 inode->i_state &= ~I_SYNC;
153037 if (!(inode->i_state & I_FREEING)) {
153038 if (!(inode->i_state & I_DIRTY) &&
153039 @@ -472,11 +470,6 @@
153040 break;
153041 }
153042
153043 - if (inode->i_state & I_NEW) {
153044 - requeue_io(inode);
153045 - continue;
153046 - }
153047 -
153048 if (wbc->nonblocking && bdi_write_congested(bdi)) {
153049 wbc->encountered_congestion = 1;
153050 if (!sb_is_blkdev_sb(sb))
153051 @@ -538,7 +531,7 @@
153052 list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
153053 struct address_space *mapping;
153054
153055 - if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW))
153056 + if (inode->i_state & (I_FREEING|I_WILL_FREE))
153057 continue;
153058 mapping = inode->i_mapping;
153059 if (mapping->nrpages == 0)
153060 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/hugetlbfs/inode.c linux-2.6.29-rc3.owrt/fs/hugetlbfs/inode.c
153061 --- linux-2.6.29.owrt/fs/hugetlbfs/inode.c 2009-05-10 22:04:39.000000000 +0200
153062 +++ linux-2.6.29-rc3.owrt/fs/hugetlbfs/inode.c 2009-05-10 23:48:29.000000000 +0200
153063 @@ -108,8 +108,7 @@
153064
153065 if (hugetlb_reserve_pages(inode,
153066 vma->vm_pgoff >> huge_page_order(h),
153067 - len >> huge_page_shift(h), vma,
153068 - vma->vm_flags))
153069 + len >> huge_page_shift(h), vma))
153070 goto out;
153071
153072 ret = 0;
153073 @@ -948,7 +947,7 @@
153074 can_do_mlock());
153075 }
153076
153077 -struct file *hugetlb_file_setup(const char *name, size_t size, int acctflag)
153078 +struct file *hugetlb_file_setup(const char *name, size_t size)
153079 {
153080 int error = -ENOMEM;
153081 struct file *file;
153082 @@ -982,8 +981,7 @@
153083
153084 error = -ENOMEM;
153085 if (hugetlb_reserve_pages(inode, 0,
153086 - size >> huge_page_shift(hstate_inode(inode)), NULL,
153087 - acctflag))
153088 + size >> huge_page_shift(hstate_inode(inode)), NULL))
153089 goto out_inode;
153090
153091 d_instantiate(dentry, inode);
153092 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/inode.c linux-2.6.29-rc3.owrt/fs/inode.c
153093 --- linux-2.6.29.owrt/fs/inode.c 2009-05-10 22:04:39.000000000 +0200
153094 +++ linux-2.6.29-rc3.owrt/fs/inode.c 2009-05-10 23:48:29.000000000 +0200
153095 @@ -359,7 +359,6 @@
153096 invalidate_inode_buffers(inode);
153097 if (!atomic_read(&inode->i_count)) {
153098 list_move(&inode->i_list, dispose);
153099 - WARN_ON(inode->i_state & I_NEW);
153100 inode->i_state |= I_FREEING;
153101 count++;
153102 continue;
153103 @@ -461,7 +460,6 @@
153104 continue;
153105 }
153106 list_move(&inode->i_list, &freeable);
153107 - WARN_ON(inode->i_state & I_NEW);
153108 inode->i_state |= I_FREEING;
153109 nr_pruned++;
153110 }
153111 @@ -658,7 +656,6 @@
153112 * just created it (so there can be no old holders
153113 * that haven't tested I_LOCK).
153114 */
153115 - WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW));
153116 inode->i_state &= ~(I_LOCK|I_NEW);
153117 wake_up_inode(inode);
153118 }
153119 @@ -1148,7 +1145,6 @@
153120
153121 list_del_init(&inode->i_list);
153122 list_del_init(&inode->i_sb_list);
153123 - WARN_ON(inode->i_state & I_NEW);
153124 inode->i_state |= I_FREEING;
153125 inodes_stat.nr_inodes--;
153126 spin_unlock(&inode_lock);
153127 @@ -1190,19 +1186,16 @@
153128 spin_unlock(&inode_lock);
153129 return;
153130 }
153131 - WARN_ON(inode->i_state & I_NEW);
153132 inode->i_state |= I_WILL_FREE;
153133 spin_unlock(&inode_lock);
153134 write_inode_now(inode, 1);
153135 spin_lock(&inode_lock);
153136 - WARN_ON(inode->i_state & I_NEW);
153137 inode->i_state &= ~I_WILL_FREE;
153138 inodes_stat.nr_unused--;
153139 hlist_del_init(&inode->i_hash);
153140 }
153141 list_del_init(&inode->i_list);
153142 list_del_init(&inode->i_sb_list);
153143 - WARN_ON(inode->i_state & I_NEW);
153144 inode->i_state |= I_FREEING;
153145 inodes_stat.nr_inodes--;
153146 spin_unlock(&inode_lock);
153147 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/internal.h linux-2.6.29-rc3.owrt/fs/internal.h
153148 --- linux-2.6.29.owrt/fs/internal.h 2009-05-10 22:04:39.000000000 +0200
153149 +++ linux-2.6.29-rc3.owrt/fs/internal.h 2009-05-10 23:48:29.000000000 +0200
153150 @@ -43,7 +43,7 @@
153151 /*
153152 * exec.c
153153 */
153154 -extern void check_unsafe_exec(struct linux_binprm *, struct files_struct *);
153155 +extern void check_unsafe_exec(struct linux_binprm *);
153156
153157 /*
153158 * namespace.c
153159 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/jbd/journal.c linux-2.6.29-rc3.owrt/fs/jbd/journal.c
153160 --- linux-2.6.29.owrt/fs/jbd/journal.c 2009-05-10 22:04:39.000000000 +0200
153161 +++ linux-2.6.29-rc3.owrt/fs/jbd/journal.c 2009-05-10 23:48:29.000000000 +0200
153162 @@ -427,7 +427,7 @@
153163 }
153164
153165 /*
153166 - * Called under j_state_lock. Returns true if a transaction commit was started.
153167 + * Called under j_state_lock. Returns true if a transaction was started.
153168 */
153169 int __log_start_commit(journal_t *journal, tid_t target)
153170 {
153171 @@ -495,8 +495,7 @@
153172
153173 /*
153174 * Start a commit of the current running transaction (if any). Returns true
153175 - * if a transaction is going to be committed (or is currently already
153176 - * committing), and fills its tid in at *ptid
153177 + * if a transaction was started, and fills its tid in at *ptid
153178 */
153179 int journal_start_commit(journal_t *journal, tid_t *ptid)
153180 {
153181 @@ -506,19 +505,15 @@
153182 if (journal->j_running_transaction) {
153183 tid_t tid = journal->j_running_transaction->t_tid;
153184
153185 - __log_start_commit(journal, tid);
153186 - /* There's a running transaction and we've just made sure
153187 - * it's commit has been scheduled. */
153188 - if (ptid)
153189 + ret = __log_start_commit(journal, tid);
153190 + if (ret && ptid)
153191 *ptid = tid;
153192 - ret = 1;
153193 - } else if (journal->j_committing_transaction) {
153194 + } else if (journal->j_committing_transaction && ptid) {
153195 /*
153196 * If ext3_write_super() recently started a commit, then we
153197 * have to wait for completion of that transaction
153198 */
153199 - if (ptid)
153200 - *ptid = journal->j_committing_transaction->t_tid;
153201 + *ptid = journal->j_committing_transaction->t_tid;
153202 ret = 1;
153203 }
153204 spin_unlock(&journal->j_state_lock);
153205 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/jbd2/journal.c linux-2.6.29-rc3.owrt/fs/jbd2/journal.c
153206 --- linux-2.6.29.owrt/fs/jbd2/journal.c 2009-05-10 22:04:39.000000000 +0200
153207 +++ linux-2.6.29-rc3.owrt/fs/jbd2/journal.c 2009-05-10 23:48:29.000000000 +0200
153208 @@ -37,10 +37,10 @@
153209 #include <linux/proc_fs.h>
153210 #include <linux/debugfs.h>
153211 #include <linux/seq_file.h>
153212 -#include <linux/math64.h>
153213
153214 #include <asm/uaccess.h>
153215 #include <asm/page.h>
153216 +#include <asm/div64.h>
153217
153218 EXPORT_SYMBOL(jbd2_journal_start);
153219 EXPORT_SYMBOL(jbd2_journal_restart);
153220 @@ -450,7 +450,7 @@
153221 }
153222
153223 /*
153224 - * Called under j_state_lock. Returns true if a transaction commit was started.
153225 + * Called under j_state_lock. Returns true if a transaction was started.
153226 */
153227 int __jbd2_log_start_commit(journal_t *journal, tid_t target)
153228 {
153229 @@ -518,8 +518,7 @@
153230
153231 /*
153232 * Start a commit of the current running transaction (if any). Returns true
153233 - * if a transaction is going to be committed (or is currently already
153234 - * committing), and fills its tid in at *ptid
153235 + * if a transaction was started, and fills its tid in at *ptid
153236 */
153237 int jbd2_journal_start_commit(journal_t *journal, tid_t *ptid)
153238 {
153239 @@ -529,19 +528,15 @@
153240 if (journal->j_running_transaction) {
153241 tid_t tid = journal->j_running_transaction->t_tid;
153242
153243 - __jbd2_log_start_commit(journal, tid);
153244 - /* There's a running transaction and we've just made sure
153245 - * it's commit has been scheduled. */
153246 - if (ptid)
153247 + ret = __jbd2_log_start_commit(journal, tid);
153248 + if (ret && ptid)
153249 *ptid = tid;
153250 - ret = 1;
153251 - } else if (journal->j_committing_transaction) {
153252 + } else if (journal->j_committing_transaction && ptid) {
153253 /*
153254 * If ext3_write_super() recently started a commit, then we
153255 * have to wait for completion of that transaction
153256 */
153257 - if (ptid)
153258 - *ptid = journal->j_committing_transaction->t_tid;
153259 + *ptid = journal->j_committing_transaction->t_tid;
153260 ret = 1;
153261 }
153262 spin_unlock(&journal->j_state_lock);
153263 @@ -851,8 +846,8 @@
153264 jiffies_to_msecs(s->stats->u.run.rs_flushing / s->stats->ts_tid));
153265 seq_printf(seq, " %ums logging transaction\n",
153266 jiffies_to_msecs(s->stats->u.run.rs_logging / s->stats->ts_tid));
153267 - seq_printf(seq, " %lluus average transaction commit time\n",
153268 - div_u64(s->journal->j_average_commit_time, 1000));
153269 + seq_printf(seq, " %luus average transaction commit time\n",
153270 + do_div(s->journal->j_average_commit_time, 1000));
153271 seq_printf(seq, " %lu handles per transaction\n",
153272 s->stats->u.run.rs_handle_count / s->stats->ts_tid);
153273 seq_printf(seq, " %lu blocks per transaction\n",
153274 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/jbd2/transaction.c linux-2.6.29-rc3.owrt/fs/jbd2/transaction.c
153275 --- linux-2.6.29.owrt/fs/jbd2/transaction.c 2009-05-10 22:04:39.000000000 +0200
153276 +++ linux-2.6.29-rc3.owrt/fs/jbd2/transaction.c 2009-05-10 23:48:29.000000000 +0200
153277 @@ -2129,46 +2129,26 @@
153278 }
153279
153280 /*
153281 - * File truncate and transaction commit interact with each other in a
153282 - * non-trivial way. If a transaction writing data block A is
153283 - * committing, we cannot discard the data by truncate until we have
153284 - * written them. Otherwise if we crashed after the transaction with
153285 - * write has committed but before the transaction with truncate has
153286 - * committed, we could see stale data in block A. This function is a
153287 - * helper to solve this problem. It starts writeout of the truncated
153288 - * part in case it is in the committing transaction.
153289 - *
153290 - * Filesystem code must call this function when inode is journaled in
153291 - * ordered mode before truncation happens and after the inode has been
153292 - * placed on orphan list with the new inode size. The second condition
153293 - * avoids the race that someone writes new data and we start
153294 - * committing the transaction after this function has been called but
153295 - * before a transaction for truncate is started (and furthermore it
153296 - * allows us to optimize the case where the addition to orphan list
153297 - * happens in the same transaction as write --- we don't have to write
153298 - * any data in such case).
153299 + * This function must be called when inode is journaled in ordered mode
153300 + * before truncation happens. It starts writeout of truncated part in
153301 + * case it is in the committing transaction so that we stand to ordered
153302 + * mode consistency guarantees.
153303 */
153304 -int jbd2_journal_begin_ordered_truncate(journal_t *journal,
153305 - struct jbd2_inode *jinode,
153306 +int jbd2_journal_begin_ordered_truncate(struct jbd2_inode *inode,
153307 loff_t new_size)
153308 {
153309 - transaction_t *inode_trans, *commit_trans;
153310 + journal_t *journal;
153311 + transaction_t *commit_trans;
153312 int ret = 0;
153313
153314 - /* This is a quick check to avoid locking if not necessary */
153315 - if (!jinode->i_transaction)
153316 + if (!inode->i_transaction && !inode->i_next_transaction)
153317 goto out;
153318 - /* Locks are here just to force reading of recent values, it is
153319 - * enough that the transaction was not committing before we started
153320 - * a transaction adding the inode to orphan list */
153321 + journal = inode->i_transaction->t_journal;
153322 spin_lock(&journal->j_state_lock);
153323 commit_trans = journal->j_committing_transaction;
153324 spin_unlock(&journal->j_state_lock);
153325 - spin_lock(&journal->j_list_lock);
153326 - inode_trans = jinode->i_transaction;
153327 - spin_unlock(&journal->j_list_lock);
153328 - if (inode_trans == commit_trans) {
153329 - ret = filemap_fdatawrite_range(jinode->i_vfs_inode->i_mapping,
153330 + if (inode->i_transaction == commit_trans) {
153331 + ret = filemap_fdatawrite_range(inode->i_vfs_inode->i_mapping,
153332 new_size, LLONG_MAX);
153333 if (ret)
153334 jbd2_journal_abort(journal, ret);
153335 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/jffs2/background.c linux-2.6.29-rc3.owrt/fs/jffs2/background.c
153336 --- linux-2.6.29.owrt/fs/jffs2/background.c 2009-05-10 22:04:39.000000000 +0200
153337 +++ linux-2.6.29-rc3.owrt/fs/jffs2/background.c 2009-05-10 23:48:29.000000000 +0200
153338 @@ -95,17 +95,13 @@
153339 spin_unlock(&c->erase_completion_lock);
153340
153341
153342 - /* Problem - immediately after bootup, the GCD spends a lot
153343 - * of time in places like jffs2_kill_fragtree(); so much so
153344 - * that userspace processes (like gdm and X) are starved
153345 - * despite plenty of cond_resched()s and renicing. Yield()
153346 - * doesn't help, either (presumably because userspace and GCD
153347 - * are generally competing for a higher latency resource -
153348 - * disk).
153349 - * This forces the GCD to slow the hell down. Pulling an
153350 - * inode in with read_inode() is much preferable to having
153351 - * the GC thread get there first. */
153352 - schedule_timeout_interruptible(msecs_to_jiffies(50));
153353 + /* This thread is purely an optimisation. But if it runs when
153354 + other things could be running, it actually makes things a
153355 + lot worse. Use yield() and put it at the back of the runqueue
153356 + every time. Especially during boot, pulling an inode in
153357 + with read_inode() is much preferable to having the GC thread
153358 + get there first. */
153359 + yield();
153360
153361 /* Put_super will send a SIGKILL and then wait on the sem.
153362 */
153363 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/jffs2/readinode.c linux-2.6.29-rc3.owrt/fs/jffs2/readinode.c
153364 --- linux-2.6.29.owrt/fs/jffs2/readinode.c 2009-05-10 22:04:39.000000000 +0200
153365 +++ linux-2.6.29-rc3.owrt/fs/jffs2/readinode.c 2009-05-10 23:48:29.000000000 +0200
153366 @@ -220,7 +220,7 @@
153367 struct jffs2_tmp_dnode_info *tn)
153368 {
153369 uint32_t fn_end = tn->fn->ofs + tn->fn->size;
153370 - struct jffs2_tmp_dnode_info *this, *ptn;
153371 + struct jffs2_tmp_dnode_info *this;
153372
153373 dbg_readinode("insert fragment %#04x-%#04x, ver %u at %08x\n", tn->fn->ofs, fn_end, tn->version, ref_offset(tn->fn->raw));
153374
153375 @@ -251,18 +251,11 @@
153376 if (this) {
153377 /* If the node is coincident with another at a lower address,
153378 back up until the other node is found. It may be relevant */
153379 - while (this->overlapped) {
153380 - ptn = tn_prev(this);
153381 - if (!ptn) {
153382 - /*
153383 - * We killed a node which set the overlapped
153384 - * flags during the scan. Fix it up.
153385 - */
153386 - this->overlapped = 0;
153387 - break;
153388 - }
153389 - this = ptn;
153390 - }
153391 + while (this->overlapped)
153392 + this = tn_prev(this);
153393 +
153394 + /* First node should never be marked overlapped */
153395 + BUG_ON(!this);
153396 dbg_readinode("'this' found %#04x-%#04x (%s)\n", this->fn->ofs, this->fn->ofs + this->fn->size, this->fn ? "data" : "hole");
153397 }
153398
153399 @@ -367,17 +360,7 @@
153400 }
153401 if (!this->overlapped)
153402 break;
153403 -
153404 - ptn = tn_prev(this);
153405 - if (!ptn) {
153406 - /*
153407 - * We killed a node which set the overlapped
153408 - * flags during the scan. Fix it up.
153409 - */
153410 - this->overlapped = 0;
153411 - break;
153412 - }
153413 - this = ptn;
153414 + this = tn_prev(this);
153415 }
153416 }
153417
153418 @@ -473,15 +456,8 @@
153419 eat_last(&rii->tn_root, &last->rb);
153420 ver_insert(&ver_root, last);
153421
153422 - if (unlikely(last->overlapped)) {
153423 - if (pen)
153424 - continue;
153425 - /*
153426 - * We killed a node which set the overlapped
153427 - * flags during the scan. Fix it up.
153428 - */
153429 - last->overlapped = 0;
153430 - }
153431 + if (unlikely(last->overlapped))
153432 + continue;
153433
153434 /* Now we have a bunch of nodes in reverse version
153435 order, in the tree at ver_root. Most of the time,
153436 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/lockd/clntlock.c linux-2.6.29-rc3.owrt/fs/lockd/clntlock.c
153437 --- linux-2.6.29.owrt/fs/lockd/clntlock.c 2009-05-10 22:04:39.000000000 +0200
153438 +++ linux-2.6.29-rc3.owrt/fs/lockd/clntlock.c 2009-05-10 23:48:29.000000000 +0200
153439 @@ -139,55 +139,6 @@
153440 return 0;
153441 }
153442
153443 -#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
153444 -static const struct in6_addr *nlmclnt_map_v4addr(const struct sockaddr *sap,
153445 - struct in6_addr *addr_mapped)
153446 -{
153447 - const struct sockaddr_in *sin = (const struct sockaddr_in *)sap;
153448 -
153449 - switch (sap->sa_family) {
153450 - case AF_INET6:
153451 - return &((const struct sockaddr_in6 *)sap)->sin6_addr;
153452 - case AF_INET:
153453 - ipv6_addr_set_v4mapped(sin->sin_addr.s_addr, addr_mapped);
153454 - return addr_mapped;
153455 - }
153456 -
153457 - return NULL;
153458 -}
153459 -
153460 -/*
153461 - * If lockd is using a PF_INET6 listener, all incoming requests appear
153462 - * to come from AF_INET6 remotes. The address of AF_INET remotes are
153463 - * mapped to AF_INET6 automatically by the network layer. In case the
153464 - * user passed an AF_INET server address at mount time, ensure both
153465 - * addresses are AF_INET6 before comparing them.
153466 - */
153467 -static int nlmclnt_cmp_addr(const struct nlm_host *host,
153468 - const struct sockaddr *sap)
153469 -{
153470 - const struct in6_addr *addr1;
153471 - const struct in6_addr *addr2;
153472 - struct in6_addr addr1_mapped;
153473 - struct in6_addr addr2_mapped;
153474 -
153475 - addr1 = nlmclnt_map_v4addr(nlm_addr(host), &addr1_mapped);
153476 - if (likely(addr1 != NULL)) {
153477 - addr2 = nlmclnt_map_v4addr(sap, &addr2_mapped);
153478 - if (likely(addr2 != NULL))
153479 - return ipv6_addr_equal(addr1, addr2);
153480 - }
153481 -
153482 - return 0;
153483 -}
153484 -#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
153485 -static int nlmclnt_cmp_addr(const struct nlm_host *host,
153486 - const struct sockaddr *sap)
153487 -{
153488 - return nlm_cmp_addr(nlm_addr(host), sap);
153489 -}
153490 -#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
153491 -
153492 /*
153493 * The server lockd has called us back to tell us the lock was granted
153494 */
153495 @@ -215,7 +166,7 @@
153496 */
153497 if (fl_blocked->fl_u.nfs_fl.owner->pid != lock->svid)
153498 continue;
153499 - if (!nlmclnt_cmp_addr(block->b_host, addr))
153500 + if (!nlm_cmp_addr(nlm_addr(block->b_host), addr))
153501 continue;
153502 if (nfs_compare_fh(NFS_FH(fl_blocked->fl_file->f_path.dentry->d_inode) ,fh) != 0)
153503 continue;
153504 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/lockd/svclock.c linux-2.6.29-rc3.owrt/fs/lockd/svclock.c
153505 --- linux-2.6.29.owrt/fs/lockd/svclock.c 2009-05-10 22:04:39.000000000 +0200
153506 +++ linux-2.6.29-rc3.owrt/fs/lockd/svclock.c 2009-05-10 23:48:29.000000000 +0200
153507 @@ -427,7 +427,7 @@
153508 goto out;
153509 case -EAGAIN:
153510 ret = nlm_lck_denied;
153511 - break;
153512 + goto out;
153513 case FILE_LOCK_DEFERRED:
153514 if (wait)
153515 break;
153516 @@ -443,10 +443,6 @@
153517 goto out;
153518 }
153519
153520 - ret = nlm_lck_denied;
153521 - if (!wait)
153522 - goto out;
153523 -
153524 ret = nlm_lck_blocked;
153525
153526 /* Append to list of blocked */
153527 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/Makefile linux-2.6.29-rc3.owrt/fs/Makefile
153528 --- linux-2.6.29.owrt/fs/Makefile 2009-05-10 22:04:39.000000000 +0200
153529 +++ linux-2.6.29-rc3.owrt/fs/Makefile 2009-05-10 23:48:29.000000000 +0200
153530 @@ -69,12 +69,10 @@
153531 # Do not add any filesystems before this line
153532 obj-$(CONFIG_REISERFS_FS) += reiserfs/
153533 obj-$(CONFIG_EXT3_FS) += ext3/ # Before ext2 so root fs can be ext3
153534 -obj-$(CONFIG_EXT2_FS) += ext2/
153535 -# We place ext4 after ext2 so plain ext2 root fs's are mounted using ext2
153536 -# unless explicitly requested by rootfstype
153537 -obj-$(CONFIG_EXT4_FS) += ext4/
153538 +obj-$(CONFIG_EXT4_FS) += ext4/ # Before ext2 so root fs can be ext4
153539 obj-$(CONFIG_JBD) += jbd/
153540 obj-$(CONFIG_JBD2) += jbd2/
153541 +obj-$(CONFIG_EXT2_FS) += ext2/
153542 obj-$(CONFIG_CRAMFS) += cramfs/
153543 obj-$(CONFIG_SQUASHFS) += squashfs/
153544 obj-y += ramfs/
153545 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/minix/inode.c linux-2.6.29-rc3.owrt/fs/minix/inode.c
153546 --- linux-2.6.29.owrt/fs/minix/inode.c 2009-05-10 22:04:39.000000000 +0200
153547 +++ linux-2.6.29-rc3.owrt/fs/minix/inode.c 2009-05-10 23:48:29.000000000 +0200
153548 @@ -3,7 +3,7 @@
153549 *
153550 * Copyright (C) 1991, 1992 Linus Torvalds
153551 *
153552 - * Copyright (C) 1996 Gertjan van Wingerde
153553 + * Copyright (C) 1996 Gertjan van Wingerde (gertjan@cs.vu.nl)
153554 * Minix V2 fs support.
153555 *
153556 * Modified for 680x0 by Andreas Schwab
153557 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/namespace.c linux-2.6.29-rc3.owrt/fs/namespace.c
153558 --- linux-2.6.29.owrt/fs/namespace.c 2009-05-10 22:04:39.000000000 +0200
153559 +++ linux-2.6.29-rc3.owrt/fs/namespace.c 2009-05-10 23:48:29.000000000 +0200
153560 @@ -614,11 +614,9 @@
153561 */
153562 for_each_possible_cpu(cpu) {
153563 struct mnt_writer *cpu_writer = &per_cpu(mnt_writers, cpu);
153564 - spin_lock(&cpu_writer->lock);
153565 - if (cpu_writer->mnt != mnt) {
153566 - spin_unlock(&cpu_writer->lock);
153567 + if (cpu_writer->mnt != mnt)
153568 continue;
153569 - }
153570 + spin_lock(&cpu_writer->lock);
153571 atomic_add(cpu_writer->count, &mnt->__mnt_writers);
153572 cpu_writer->count = 0;
153573 /*
153574 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/nfs/client.c linux-2.6.29-rc3.owrt/fs/nfs/client.c
153575 --- linux-2.6.29.owrt/fs/nfs/client.c 2009-05-10 22:04:39.000000000 +0200
153576 +++ linux-2.6.29-rc3.owrt/fs/nfs/client.c 2009-05-10 23:48:29.000000000 +0200
153577 @@ -255,32 +255,6 @@
153578 }
153579 return 0;
153580 }
153581 -
153582 -/*
153583 - * Test if two ip6 socket addresses refer to the same socket by
153584 - * comparing relevant fields. The padding bytes specifically, are not
153585 - * compared. sin6_flowinfo is not compared because it only affects QoS
153586 - * and sin6_scope_id is only compared if the address is "link local"
153587 - * because "link local" addresses need only be unique to a specific
153588 - * link. Conversely, ordinary unicast addresses might have different
153589 - * sin6_scope_id.
153590 - *
153591 - * The caller should ensure both socket addresses are AF_INET6.
153592 - */
153593 -static int nfs_sockaddr_cmp_ip6(const struct sockaddr *sa1,
153594 - const struct sockaddr *sa2)
153595 -{
153596 - const struct sockaddr_in6 *saddr1 = (const struct sockaddr_in6 *)sa1;
153597 - const struct sockaddr_in6 *saddr2 = (const struct sockaddr_in6 *)sa2;
153598 -
153599 - if (!ipv6_addr_equal(&saddr1->sin6_addr,
153600 - &saddr1->sin6_addr))
153601 - return 0;
153602 - if (ipv6_addr_scope(&saddr1->sin6_addr) == IPV6_ADDR_SCOPE_LINKLOCAL &&
153603 - saddr1->sin6_scope_id != saddr2->sin6_scope_id)
153604 - return 0;
153605 - return saddr1->sin6_port == saddr2->sin6_port;
153606 -}
153607 #else
153608 static int nfs_sockaddr_match_ipaddr4(const struct sockaddr_in *sa1,
153609 const struct sockaddr_in *sa2)
153610 @@ -296,52 +270,9 @@
153611 return nfs_sockaddr_match_ipaddr4((const struct sockaddr_in *)sa1,
153612 (const struct sockaddr_in *)sa2);
153613 }
153614 -
153615 -static int nfs_sockaddr_cmp_ip6(const struct sockaddr * sa1,
153616 - const struct sockaddr * sa2)
153617 -{
153618 - return 0;
153619 -}
153620 #endif
153621
153622 /*
153623 - * Test if two ip4 socket addresses refer to the same socket, by
153624 - * comparing relevant fields. The padding bytes specifically, are
153625 - * not compared.
153626 - *
153627 - * The caller should ensure both socket addresses are AF_INET.
153628 - */
153629 -static int nfs_sockaddr_cmp_ip4(const struct sockaddr *sa1,
153630 - const struct sockaddr *sa2)
153631 -{
153632 - const struct sockaddr_in *saddr1 = (const struct sockaddr_in *)sa1;
153633 - const struct sockaddr_in *saddr2 = (const struct sockaddr_in *)sa2;
153634 -
153635 - if (saddr1->sin_addr.s_addr != saddr2->sin_addr.s_addr)
153636 - return 0;
153637 - return saddr1->sin_port == saddr2->sin_port;
153638 -}
153639 -
153640 -/*
153641 - * Test if two socket addresses represent the same actual socket,
153642 - * by comparing (only) relevant fields.
153643 - */
153644 -static int nfs_sockaddr_cmp(const struct sockaddr *sa1,
153645 - const struct sockaddr *sa2)
153646 -{
153647 - if (sa1->sa_family != sa2->sa_family)
153648 - return 0;
153649 -
153650 - switch (sa1->sa_family) {
153651 - case AF_INET:
153652 - return nfs_sockaddr_cmp_ip4(sa1, sa2);
153653 - case AF_INET6:
153654 - return nfs_sockaddr_cmp_ip6(sa1, sa2);
153655 - }
153656 - return 0;
153657 -}
153658 -
153659 -/*
153660 * Find a client by IP address and protocol version
153661 * - returns NULL if no such client
153662 */
153663 @@ -413,10 +344,8 @@
153664 static struct nfs_client *nfs_match_client(const struct nfs_client_initdata *data)
153665 {
153666 struct nfs_client *clp;
153667 - const struct sockaddr *sap = data->addr;
153668
153669 list_for_each_entry(clp, &nfs_client_list, cl_share_link) {
153670 - const struct sockaddr *clap = (struct sockaddr *)&clp->cl_addr;
153671 /* Don't match clients that failed to initialise properly */
153672 if (clp->cl_cons_state < 0)
153673 continue;
153674 @@ -429,7 +358,7 @@
153675 continue;
153676
153677 /* Match the full socket address */
153678 - if (!nfs_sockaddr_cmp(sap, clap))
153679 + if (memcmp(&clp->cl_addr, data->addr, sizeof(clp->cl_addr)) != 0)
153680 continue;
153681
153682 atomic_inc(&clp->cl_count);
153683 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/nfs/dir.c linux-2.6.29-rc3.owrt/fs/nfs/dir.c
153684 --- linux-2.6.29.owrt/fs/nfs/dir.c 2009-05-10 22:04:39.000000000 +0200
153685 +++ linux-2.6.29-rc3.owrt/fs/nfs/dir.c 2009-05-10 23:48:29.000000000 +0200
153686 @@ -1892,14 +1892,8 @@
153687 cache.cred = cred;
153688 cache.jiffies = jiffies;
153689 status = NFS_PROTO(inode)->access(inode, &cache);
153690 - if (status != 0) {
153691 - if (status == -ESTALE) {
153692 - nfs_zap_caches(inode);
153693 - if (!S_ISDIR(inode->i_mode))
153694 - set_bit(NFS_INO_STALE, &NFS_I(inode)->flags);
153695 - }
153696 + if (status != 0)
153697 return status;
153698 - }
153699 nfs_access_add_cache(inode, &cache);
153700 out:
153701 if ((mask & ~cache.mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) == 0)
153702 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/nfs/nfs3acl.c linux-2.6.29-rc3.owrt/fs/nfs/nfs3acl.c
153703 --- linux-2.6.29.owrt/fs/nfs/nfs3acl.c 2009-05-10 22:04:39.000000000 +0200
153704 +++ linux-2.6.29-rc3.owrt/fs/nfs/nfs3acl.c 2009-05-10 23:48:29.000000000 +0200
153705 @@ -292,7 +292,7 @@
153706 {
153707 struct nfs_server *server = NFS_SERVER(inode);
153708 struct nfs_fattr fattr;
153709 - struct page *pages[NFSACL_MAXPAGES];
153710 + struct page *pages[NFSACL_MAXPAGES] = { };
153711 struct nfs3_setaclargs args = {
153712 .inode = inode,
153713 .mask = NFS_ACL,
153714 @@ -303,7 +303,7 @@
153715 .rpc_argp = &args,
153716 .rpc_resp = &fattr,
153717 };
153718 - int status;
153719 + int status, count;
153720
153721 status = -EOPNOTSUPP;
153722 if (!nfs_server_capable(inode, NFS_CAP_ACLS))
153723 @@ -319,20 +319,6 @@
153724 if (S_ISDIR(inode->i_mode)) {
153725 args.mask |= NFS_DFACL;
153726 args.acl_default = dfacl;
153727 - args.len = nfsacl_size(acl, dfacl);
153728 - } else
153729 - args.len = nfsacl_size(acl, NULL);
153730 -
153731 - if (args.len > NFS_ACL_INLINE_BUFSIZE) {
153732 - unsigned int npages = 1 + ((args.len - 1) >> PAGE_SHIFT);
153733 -
153734 - status = -ENOMEM;
153735 - do {
153736 - args.pages[args.npages] = alloc_page(GFP_KERNEL);
153737 - if (args.pages[args.npages] == NULL)
153738 - goto out_freepages;
153739 - args.npages++;
153740 - } while (args.npages < npages);
153741 }
153742
153743 dprintk("NFS call setacl\n");
153744 @@ -343,6 +329,10 @@
153745 nfs_zap_acl_cache(inode);
153746 dprintk("NFS reply setacl: %d\n", status);
153747
153748 + /* pages may have been allocated at the xdr layer. */
153749 + for (count = 0; count < NFSACL_MAXPAGES && args.pages[count]; count++)
153750 + __free_page(args.pages[count]);
153751 +
153752 switch (status) {
153753 case 0:
153754 status = nfs_refresh_inode(inode, &fattr);
153755 @@ -356,11 +346,6 @@
153756 case -ENOTSUPP:
153757 status = -EOPNOTSUPP;
153758 }
153759 -out_freepages:
153760 - while (args.npages != 0) {
153761 - args.npages--;
153762 - __free_page(args.pages[args.npages]);
153763 - }
153764 out:
153765 return status;
153766 }
153767 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/nfs/nfs3xdr.c linux-2.6.29-rc3.owrt/fs/nfs/nfs3xdr.c
153768 --- linux-2.6.29.owrt/fs/nfs/nfs3xdr.c 2009-05-10 22:04:39.000000000 +0200
153769 +++ linux-2.6.29-rc3.owrt/fs/nfs/nfs3xdr.c 2009-05-10 23:48:29.000000000 +0200
153770 @@ -82,10 +82,8 @@
153771 #define NFS3_commitres_sz (1+NFS3_wcc_data_sz+2)
153772
153773 #define ACL3_getaclargs_sz (NFS3_fh_sz+1)
153774 -#define ACL3_setaclargs_sz (NFS3_fh_sz+1+ \
153775 - XDR_QUADLEN(NFS_ACL_INLINE_BUFSIZE))
153776 -#define ACL3_getaclres_sz (1+NFS3_post_op_attr_sz+1+ \
153777 - XDR_QUADLEN(NFS_ACL_INLINE_BUFSIZE))
153778 +#define ACL3_setaclargs_sz (NFS3_fh_sz+1+2*(2+5*3))
153779 +#define ACL3_getaclres_sz (1+NFS3_post_op_attr_sz+1+2*(2+5*3))
153780 #define ACL3_setaclres_sz (1+NFS3_post_op_attr_sz)
153781
153782 /*
153783 @@ -705,18 +703,28 @@
153784 struct nfs3_setaclargs *args)
153785 {
153786 struct xdr_buf *buf = &req->rq_snd_buf;
153787 - unsigned int base;
153788 - int err;
153789 + unsigned int base, len_in_head, len = nfsacl_size(
153790 + (args->mask & NFS_ACL) ? args->acl_access : NULL,
153791 + (args->mask & NFS_DFACL) ? args->acl_default : NULL);
153792 + int count, err;
153793
153794 p = xdr_encode_fhandle(p, NFS_FH(args->inode));
153795 *p++ = htonl(args->mask);
153796 - req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
153797 - base = req->rq_slen;
153798 -
153799 - if (args->npages != 0)
153800 - xdr_encode_pages(buf, args->pages, 0, args->len);
153801 - else
153802 - req->rq_slen += args->len;
153803 + base = (char *)p - (char *)buf->head->iov_base;
153804 + /* put as much of the acls into head as possible. */
153805 + len_in_head = min_t(unsigned int, buf->head->iov_len - base, len);
153806 + len -= len_in_head;
153807 + req->rq_slen = xdr_adjust_iovec(req->rq_svec, p + (len_in_head >> 2));
153808 +
153809 + for (count = 0; (count << PAGE_SHIFT) < len; count++) {
153810 + args->pages[count] = alloc_page(GFP_KERNEL);
153811 + if (!args->pages[count]) {
153812 + while (count)
153813 + __free_page(args->pages[--count]);
153814 + return -ENOMEM;
153815 + }
153816 + }
153817 + xdr_encode_pages(buf, args->pages, 0, len);
153818
153819 err = nfsacl_encode(buf, base, args->inode,
153820 (args->mask & NFS_ACL) ?
153821 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/nfs/nfs4namespace.c linux-2.6.29-rc3.owrt/fs/nfs/nfs4namespace.c
153822 --- linux-2.6.29.owrt/fs/nfs/nfs4namespace.c 2009-05-10 22:04:39.000000000 +0200
153823 +++ linux-2.6.29-rc3.owrt/fs/nfs/nfs4namespace.c 2009-05-10 23:48:29.000000000 +0200
153824 @@ -21,9 +21,7 @@
153825 #define NFSDBG_FACILITY NFSDBG_VFS
153826
153827 /*
153828 - * Convert the NFSv4 pathname components into a standard posix path.
153829 - *
153830 - * Note that the resulting string will be placed at the end of the buffer
153831 + * Check if fs_root is valid
153832 */
153833 static inline char *nfs4_pathname_string(const struct nfs4_pathname *pathname,
153834 char *buffer, ssize_t buflen)
153835 @@ -101,20 +99,21 @@
153836 {
153837 struct vfsmount *mnt = ERR_PTR(-ENOENT);
153838 char *mnt_path;
153839 - unsigned int maxbuflen;
153840 + int page2len;
153841 unsigned int s;
153842
153843 mnt_path = nfs4_pathname_string(&location->rootpath, page2, PAGE_SIZE);
153844 if (IS_ERR(mnt_path))
153845 return mnt;
153846 mountdata->mnt_path = mnt_path;
153847 - maxbuflen = mnt_path - 1 - page2;
153848 + page2 += strlen(mnt_path) + 1;
153849 + page2len = PAGE_SIZE - strlen(mnt_path) - 1;
153850
153851 for (s = 0; s < location->nservers; s++) {
153852 const struct nfs4_string *buf = &location->servers[s];
153853 struct sockaddr_storage addr;
153854
153855 - if (buf->len <= 0 || buf->len >= maxbuflen)
153856 + if (buf->len <= 0 || buf->len >= PAGE_SIZE)
153857 continue;
153858
153859 mountdata->addr = (struct sockaddr *)&addr;
153860 @@ -127,8 +126,8 @@
153861 continue;
153862 nfs_set_port(mountdata->addr, NFS_PORT);
153863
153864 - memcpy(page2, buf->data, buf->len);
153865 - page2[buf->len] = '\0';
153866 + strncpy(page2, buf->data, page2len);
153867 + page2[page2len] = '\0';
153868 mountdata->hostname = page2;
153869
153870 snprintf(page, PAGE_SIZE, "%s:%s",
153871 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/nfsd/nfs4xdr.c linux-2.6.29-rc3.owrt/fs/nfsd/nfs4xdr.c
153872 --- linux-2.6.29.owrt/fs/nfsd/nfs4xdr.c 2009-05-10 22:04:39.000000000 +0200
153873 +++ linux-2.6.29-rc3.owrt/fs/nfsd/nfs4xdr.c 2009-05-10 23:48:29.000000000 +0200
153874 @@ -2596,7 +2596,6 @@
153875 [OP_LOOKUPP] = (nfsd4_enc)nfsd4_encode_noop,
153876 [OP_NVERIFY] = (nfsd4_enc)nfsd4_encode_noop,
153877 [OP_OPEN] = (nfsd4_enc)nfsd4_encode_open,
153878 - [OP_OPENATTR] = (nfsd4_enc)nfsd4_encode_noop,
153879 [OP_OPEN_CONFIRM] = (nfsd4_enc)nfsd4_encode_open_confirm,
153880 [OP_OPEN_DOWNGRADE] = (nfsd4_enc)nfsd4_encode_open_downgrade,
153881 [OP_PUTFH] = (nfsd4_enc)nfsd4_encode_noop,
153882 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/notify/inotify/inotify.c linux-2.6.29-rc3.owrt/fs/notify/inotify/inotify.c
153883 --- linux-2.6.29.owrt/fs/notify/inotify/inotify.c 2009-05-10 22:04:39.000000000 +0200
153884 +++ linux-2.6.29-rc3.owrt/fs/notify/inotify/inotify.c 2009-05-10 23:48:29.000000000 +0200
153885 @@ -156,7 +156,7 @@
153886 int ret;
153887
153888 do {
153889 - if (unlikely(!idr_pre_get(&ih->idr, GFP_NOFS)))
153890 + if (unlikely(!idr_pre_get(&ih->idr, GFP_KERNEL)))
153891 return -ENOSPC;
153892 ret = idr_get_new_above(&ih->idr, watch, ih->last_wd+1, &watch->wd);
153893 } while (ret == -EAGAIN);
153894 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/alloc.c linux-2.6.29-rc3.owrt/fs/ocfs2/alloc.c
153895 --- linux-2.6.29.owrt/fs/ocfs2/alloc.c 2009-05-10 22:04:39.000000000 +0200
153896 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/alloc.c 2009-05-10 23:48:29.000000000 +0200
153897 @@ -176,8 +176,7 @@
153898
153899 BUG_ON(OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL);
153900 mlog_bug_on_msg(!ocfs2_sparse_alloc(osb) &&
153901 - (OCFS2_I(inode)->ip_clusters !=
153902 - le32_to_cpu(rec->e_cpos)),
153903 + (OCFS2_I(inode)->ip_clusters != rec->e_cpos),
153904 "Device %s, asking for sparse allocation: inode %llu, "
153905 "cpos %u, clusters %u\n",
153906 osb->dev_str,
153907 @@ -4797,29 +4796,6 @@
153908 return ret;
153909 }
153910
153911 -static int ocfs2_replace_extent_rec(struct inode *inode,
153912 - handle_t *handle,
153913 - struct ocfs2_path *path,
153914 - struct ocfs2_extent_list *el,
153915 - int split_index,
153916 - struct ocfs2_extent_rec *split_rec)
153917 -{
153918 - int ret;
153919 -
153920 - ret = ocfs2_path_bh_journal_access(handle, inode, path,
153921 - path_num_items(path) - 1);
153922 - if (ret) {
153923 - mlog_errno(ret);
153924 - goto out;
153925 - }
153926 -
153927 - el->l_recs[split_index] = *split_rec;
153928 -
153929 - ocfs2_journal_dirty(handle, path_leaf_bh(path));
153930 -out:
153931 - return ret;
153932 -}
153933 -
153934 /*
153935 * Mark part or all of the extent record at split_index in the leaf
153936 * pointed to by path as written. This removes the unwritten
153937 @@ -4909,9 +4885,7 @@
153938
153939 if (ctxt.c_contig_type == CONTIG_NONE) {
153940 if (ctxt.c_split_covers_rec)
153941 - ret = ocfs2_replace_extent_rec(inode, handle,
153942 - path, el,
153943 - split_index, split_rec);
153944 + el->l_recs[split_index] = *split_rec;
153945 else
153946 ret = ocfs2_split_and_insert(inode, handle, path, et,
153947 &last_eb_bh, split_index,
153948 @@ -5416,9 +5390,6 @@
153949 goto out;
153950 }
153951
153952 - vfs_dq_free_space_nodirty(inode,
153953 - ocfs2_clusters_to_bytes(inode->i_sb, len));
153954 -
153955 ret = ocfs2_remove_extent(inode, et, cpos, len, handle, meta_ac,
153956 dealloc);
153957 if (ret) {
153958 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/aops.c linux-2.6.29-rc3.owrt/fs/ocfs2/aops.c
153959 --- linux-2.6.29.owrt/fs/ocfs2/aops.c 2009-05-10 22:04:39.000000000 +0200
153960 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/aops.c 2009-05-10 23:48:29.000000000 +0200
153961 @@ -227,7 +227,7 @@
153962 size = i_size_read(inode);
153963
153964 if (size > PAGE_CACHE_SIZE ||
153965 - size > ocfs2_max_inline_data_with_xattr(inode->i_sb, di)) {
153966 + size > ocfs2_max_inline_data(inode->i_sb)) {
153967 ocfs2_error(inode->i_sb,
153968 "Inode %llu has with inline data has bad size: %Lu",
153969 (unsigned long long)OCFS2_I(inode)->ip_blkno,
153970 @@ -1555,7 +1555,6 @@
153971 int ret, written = 0;
153972 loff_t end = pos + len;
153973 struct ocfs2_inode_info *oi = OCFS2_I(inode);
153974 - struct ocfs2_dinode *di = NULL;
153975
153976 mlog(0, "Inode %llu, write of %u bytes at off %llu. features: 0x%x\n",
153977 (unsigned long long)oi->ip_blkno, len, (unsigned long long)pos,
153978 @@ -1588,9 +1587,7 @@
153979 /*
153980 * Check whether the write can fit.
153981 */
153982 - di = (struct ocfs2_dinode *)wc->w_di_bh->b_data;
153983 - if (mmap_page ||
153984 - end > ocfs2_max_inline_data_with_xattr(inode->i_sb, di))
153985 + if (mmap_page || end > ocfs2_max_inline_data(inode->i_sb))
153986 return 0;
153987
153988 do_inline_write:
153989 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/dcache.c linux-2.6.29-rc3.owrt/fs/ocfs2/dcache.c
153990 --- linux-2.6.29.owrt/fs/ocfs2/dcache.c 2009-05-10 22:04:39.000000000 +0200
153991 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/dcache.c 2009-05-10 23:48:29.000000000 +0200
153992 @@ -38,7 +38,6 @@
153993 #include "dlmglue.h"
153994 #include "file.h"
153995 #include "inode.h"
153996 -#include "super.h"
153997
153998
153999 static int ocfs2_dentry_revalidate(struct dentry *dentry,
154000 @@ -295,34 +294,6 @@
154001 return ret;
154002 }
154003
154004 -static DEFINE_SPINLOCK(dentry_list_lock);
154005 -
154006 -/* We limit the number of dentry locks to drop in one go. We have
154007 - * this limit so that we don't starve other users of ocfs2_wq. */
154008 -#define DL_INODE_DROP_COUNT 64
154009 -
154010 -/* Drop inode references from dentry locks */
154011 -void ocfs2_drop_dl_inodes(struct work_struct *work)
154012 -{
154013 - struct ocfs2_super *osb = container_of(work, struct ocfs2_super,
154014 - dentry_lock_work);
154015 - struct ocfs2_dentry_lock *dl;
154016 - int drop_count = DL_INODE_DROP_COUNT;
154017 -
154018 - spin_lock(&dentry_list_lock);
154019 - while (osb->dentry_lock_list && drop_count--) {
154020 - dl = osb->dentry_lock_list;
154021 - osb->dentry_lock_list = dl->dl_next;
154022 - spin_unlock(&dentry_list_lock);
154023 - iput(dl->dl_inode);
154024 - kfree(dl);
154025 - spin_lock(&dentry_list_lock);
154026 - }
154027 - if (osb->dentry_lock_list)
154028 - queue_work(ocfs2_wq, &osb->dentry_lock_work);
154029 - spin_unlock(&dentry_list_lock);
154030 -}
154031 -
154032 /*
154033 * ocfs2_dentry_iput() and friends.
154034 *
154035 @@ -347,23 +318,16 @@
154036 static void ocfs2_drop_dentry_lock(struct ocfs2_super *osb,
154037 struct ocfs2_dentry_lock *dl)
154038 {
154039 + iput(dl->dl_inode);
154040 ocfs2_simple_drop_lockres(osb, &dl->dl_lockres);
154041 ocfs2_lock_res_free(&dl->dl_lockres);
154042 -
154043 - /* We leave dropping of inode reference to ocfs2_wq as that can
154044 - * possibly lead to inode deletion which gets tricky */
154045 - spin_lock(&dentry_list_lock);
154046 - if (!osb->dentry_lock_list)
154047 - queue_work(ocfs2_wq, &osb->dentry_lock_work);
154048 - dl->dl_next = osb->dentry_lock_list;
154049 - osb->dentry_lock_list = dl;
154050 - spin_unlock(&dentry_list_lock);
154051 + kfree(dl);
154052 }
154053
154054 void ocfs2_dentry_lock_put(struct ocfs2_super *osb,
154055 struct ocfs2_dentry_lock *dl)
154056 {
154057 - int unlock;
154058 + int unlock = 0;
154059
154060 BUG_ON(dl->dl_count == 0);
154061
154062 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/dcache.h linux-2.6.29-rc3.owrt/fs/ocfs2/dcache.h
154063 --- linux-2.6.29.owrt/fs/ocfs2/dcache.h 2009-05-10 22:04:39.000000000 +0200
154064 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/dcache.h 2009-05-10 23:48:29.000000000 +0200
154065 @@ -29,13 +29,8 @@
154066 extern struct dentry_operations ocfs2_dentry_ops;
154067
154068 struct ocfs2_dentry_lock {
154069 - /* Use count of dentry lock */
154070 unsigned int dl_count;
154071 - union {
154072 - /* Linked list of dentry locks to release */
154073 - struct ocfs2_dentry_lock *dl_next;
154074 - u64 dl_parent_blkno;
154075 - };
154076 + u64 dl_parent_blkno;
154077
154078 /*
154079 * The ocfs2_dentry_lock keeps an inode reference until
154080 @@ -52,8 +47,6 @@
154081 void ocfs2_dentry_lock_put(struct ocfs2_super *osb,
154082 struct ocfs2_dentry_lock *dl);
154083
154084 -void ocfs2_drop_dl_inodes(struct work_struct *work);
154085 -
154086 struct dentry *ocfs2_find_local_alias(struct inode *inode, u64 parent_blkno,
154087 int skip_unhashed);
154088
154089 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/dlm/dlmmaster.c linux-2.6.29-rc3.owrt/fs/ocfs2/dlm/dlmmaster.c
154090 --- linux-2.6.29.owrt/fs/ocfs2/dlm/dlmmaster.c 2009-05-10 22:04:39.000000000 +0200
154091 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/dlm/dlmmaster.c 2009-05-10 23:48:29.000000000 +0200
154092 @@ -1849,12 +1849,12 @@
154093 if (!mle) {
154094 if (res->owner != DLM_LOCK_RES_OWNER_UNKNOWN &&
154095 res->owner != assert->node_idx) {
154096 - mlog(ML_ERROR, "DIE! Mastery assert from %u, "
154097 - "but current owner is %u! (%.*s)\n",
154098 - assert->node_idx, res->owner, namelen,
154099 - name);
154100 - __dlm_print_one_lock_resource(res);
154101 - BUG();
154102 + mlog(ML_ERROR, "assert_master from "
154103 + "%u, but current owner is "
154104 + "%u! (%.*s)\n",
154105 + assert->node_idx, res->owner,
154106 + namelen, name);
154107 + goto kill;
154108 }
154109 } else if (mle->type != DLM_MLE_MIGRATION) {
154110 if (res->owner != DLM_LOCK_RES_OWNER_UNKNOWN) {
154111 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/dlm/dlmthread.c linux-2.6.29-rc3.owrt/fs/ocfs2/dlm/dlmthread.c
154112 --- linux-2.6.29.owrt/fs/ocfs2/dlm/dlmthread.c 2009-05-10 22:04:39.000000000 +0200
154113 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/dlm/dlmthread.c 2009-05-10 23:48:29.000000000 +0200
154114 @@ -181,7 +181,8 @@
154115
154116 spin_lock(&res->spinlock);
154117 /* This ensures that clear refmap is sent after the set */
154118 - __dlm_wait_on_lockres_flags(res, DLM_LOCK_RES_SETREF_INPROG);
154119 + __dlm_wait_on_lockres_flags(res, (DLM_LOCK_RES_SETREF_INPROG |
154120 + DLM_LOCK_RES_MIGRATING));
154121 spin_unlock(&res->spinlock);
154122
154123 /* clear our bit from the master's refmap, ignore errors */
154124 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/dlm/dlmunlock.c linux-2.6.29-rc3.owrt/fs/ocfs2/dlm/dlmunlock.c
154125 --- linux-2.6.29.owrt/fs/ocfs2/dlm/dlmunlock.c 2009-05-10 22:04:39.000000000 +0200
154126 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/dlm/dlmunlock.c 2009-05-10 23:48:29.000000000 +0200
154127 @@ -117,11 +117,11 @@
154128 else
154129 BUG_ON(res->owner == dlm->node_num);
154130
154131 - spin_lock(&dlm->ast_lock);
154132 + spin_lock(&dlm->spinlock);
154133 /* We want to be sure that we're not freeing a lock
154134 * that still has AST's pending... */
154135 in_use = !list_empty(&lock->ast_list);
154136 - spin_unlock(&dlm->ast_lock);
154137 + spin_unlock(&dlm->spinlock);
154138 if (in_use) {
154139 mlog(ML_ERROR, "lockres %.*s: Someone is calling dlmunlock "
154140 "while waiting for an ast!", res->lockname.len,
154141 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/dlmglue.c linux-2.6.29-rc3.owrt/fs/ocfs2/dlmglue.c
154142 --- linux-2.6.29.owrt/fs/ocfs2/dlmglue.c 2009-05-10 22:04:39.000000000 +0200
154143 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/dlmglue.c 2009-05-10 23:48:29.000000000 +0200
154144 @@ -320,14 +320,9 @@
154145 struct ocfs2_lock_res *lockres);
154146 static inline void ocfs2_recover_from_dlm_error(struct ocfs2_lock_res *lockres,
154147 int convert);
154148 -#define ocfs2_log_dlm_error(_func, _err, _lockres) do { \
154149 - if ((_lockres)->l_type != OCFS2_LOCK_TYPE_DENTRY) \
154150 - mlog(ML_ERROR, "DLM error %d while calling %s on resource %s\n", \
154151 - _err, _func, _lockres->l_name); \
154152 - else \
154153 - mlog(ML_ERROR, "DLM error %d while calling %s on resource %.*s%08x\n", \
154154 - _err, _func, OCFS2_DENTRY_LOCK_INO_START - 1, (_lockres)->l_name, \
154155 - (unsigned int)ocfs2_get_dentry_lock_ino(_lockres)); \
154156 +#define ocfs2_log_dlm_error(_func, _err, _lockres) do { \
154157 + mlog(ML_ERROR, "DLM error %d while calling %s on resource %s\n", \
154158 + _err, _func, _lockres->l_name); \
154159 } while (0)
154160 static int ocfs2_downconvert_thread(void *arg);
154161 static void ocfs2_downconvert_on_unlock(struct ocfs2_super *osb,
154162 @@ -2865,10 +2860,6 @@
154163 case OCFS2_UNLOCK_CANCEL_CONVERT:
154164 mlog(0, "Cancel convert success for %s\n", lockres->l_name);
154165 lockres->l_action = OCFS2_AST_INVALID;
154166 - /* Downconvert thread may have requeued this lock, we
154167 - * need to wake it. */
154168 - if (lockres->l_flags & OCFS2_LOCK_BLOCKED)
154169 - ocfs2_wake_downconvert_thread(ocfs2_get_lockres_osb(lockres));
154170 break;
154171 case OCFS2_UNLOCK_DROP_LOCK:
154172 lockres->l_level = DLM_LOCK_IV;
154173 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/journal.h linux-2.6.29-rc3.owrt/fs/ocfs2/journal.h
154174 --- linux-2.6.29.owrt/fs/ocfs2/journal.h 2009-05-10 22:04:39.000000000 +0200
154175 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/journal.h 2009-05-10 23:48:29.000000000 +0200
154176 @@ -513,10 +513,8 @@
154177 static inline int ocfs2_begin_ordered_truncate(struct inode *inode,
154178 loff_t new_size)
154179 {
154180 - return jbd2_journal_begin_ordered_truncate(
154181 - OCFS2_SB(inode->i_sb)->journal->j_journal,
154182 - &OCFS2_I(inode)->ip_jinode,
154183 - new_size);
154184 + return jbd2_journal_begin_ordered_truncate(&OCFS2_I(inode)->ip_jinode,
154185 + new_size);
154186 }
154187
154188 #endif /* OCFS2_JOURNAL_H */
154189 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/namei.c linux-2.6.29-rc3.owrt/fs/ocfs2/namei.c
154190 --- linux-2.6.29.owrt/fs/ocfs2/namei.c 2009-05-10 22:04:39.000000000 +0200
154191 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/namei.c 2009-05-10 23:48:29.000000000 +0200
154192 @@ -532,8 +532,7 @@
154193
154194 fe->i_dyn_features = cpu_to_le16(feat | OCFS2_INLINE_DATA_FL);
154195
154196 - fe->id2.i_data.id_count = cpu_to_le16(
154197 - ocfs2_max_inline_data_with_xattr(osb->sb, fe));
154198 + fe->id2.i_data.id_count = cpu_to_le16(ocfs2_max_inline_data(osb->sb));
154199 } else {
154200 fel = &fe->id2.i_list;
154201 fel->l_tree_depth = 0;
154202 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/ocfs2_fs.h linux-2.6.29-rc3.owrt/fs/ocfs2/ocfs2_fs.h
154203 --- linux-2.6.29.owrt/fs/ocfs2/ocfs2_fs.h 2009-05-10 22:04:39.000000000 +0200
154204 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/ocfs2_fs.h 2009-05-10 23:48:29.000000000 +0200
154205 @@ -1070,6 +1070,12 @@
154206 offsetof(struct ocfs2_dinode, id2.i_symlink);
154207 }
154208
154209 +static inline int ocfs2_max_inline_data(struct super_block *sb)
154210 +{
154211 + return sb->s_blocksize -
154212 + offsetof(struct ocfs2_dinode, id2.i_data.id_data);
154213 +}
154214 +
154215 static inline int ocfs2_max_inline_data_with_xattr(struct super_block *sb,
154216 struct ocfs2_dinode *di)
154217 {
154218 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/ocfs2.h linux-2.6.29-rc3.owrt/fs/ocfs2/ocfs2.h
154219 --- linux-2.6.29.owrt/fs/ocfs2/ocfs2.h 2009-05-10 22:04:39.000000000 +0200
154220 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/ocfs2.h 2009-05-10 23:48:29.000000000 +0200
154221 @@ -210,7 +210,6 @@
154222 struct ocfs2_slot_info;
154223 struct ocfs2_recovery_map;
154224 struct ocfs2_quota_recovery;
154225 -struct ocfs2_dentry_lock;
154226 struct ocfs2_super
154227 {
154228 struct task_struct *commit_task;
154229 @@ -326,11 +325,6 @@
154230 struct list_head blocked_lock_list;
154231 unsigned long blocked_lock_count;
154232
154233 - /* List of dentry locks to release. Anyone can add locks to
154234 - * the list, ocfs2_wq processes the list */
154235 - struct ocfs2_dentry_lock *dentry_lock_list;
154236 - struct work_struct dentry_lock_work;
154237 -
154238 wait_queue_head_t osb_mount_event;
154239
154240 /* Truncate log info */
154241 @@ -341,9 +335,6 @@
154242 struct ocfs2_node_map osb_recovering_orphan_dirs;
154243 unsigned int *osb_orphan_wipes;
154244 wait_queue_head_t osb_wipe_event;
154245 -
154246 - /* used to protect metaecc calculation check of xattr. */
154247 - spinlock_t osb_xattr_lock;
154248 };
154249
154250 #define OCFS2_SB(sb) ((struct ocfs2_super *)(sb)->s_fs_info)
154251 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/quota_global.c linux-2.6.29-rc3.owrt/fs/ocfs2/quota_global.c
154252 --- linux-2.6.29.owrt/fs/ocfs2/quota_global.c 2009-05-10 22:04:39.000000000 +0200
154253 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/quota_global.c 2009-05-10 23:48:29.000000000 +0200
154254 @@ -754,9 +754,7 @@
154255 if (dquot->dq_flags & mask)
154256 sync = 1;
154257 spin_unlock(&dq_data_lock);
154258 - /* This is a slight hack but we can't afford getting global quota
154259 - * lock if we already have a transaction started. */
154260 - if (!sync || journal_current_handle()) {
154261 + if (!sync) {
154262 status = ocfs2_write_dquot(dquot);
154263 goto out;
154264 }
154265 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/super.c linux-2.6.29-rc3.owrt/fs/ocfs2/super.c
154266 --- linux-2.6.29.owrt/fs/ocfs2/super.c 2009-05-10 22:04:39.000000000 +0200
154267 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/super.c 2009-05-10 23:48:29.000000000 +0200
154268 @@ -1537,13 +1537,6 @@
154269 unlock_buffer(*bh);
154270 ll_rw_block(READ, 1, bh);
154271 wait_on_buffer(*bh);
154272 - if (!buffer_uptodate(*bh)) {
154273 - mlog_errno(-EIO);
154274 - brelse(*bh);
154275 - *bh = NULL;
154276 - return -EIO;
154277 - }
154278 -
154279 return 0;
154280 }
154281
154282 @@ -1754,7 +1747,6 @@
154283 INIT_LIST_HEAD(&osb->blocked_lock_list);
154284 osb->blocked_lock_count = 0;
154285 spin_lock_init(&osb->osb_lock);
154286 - spin_lock_init(&osb->osb_xattr_lock);
154287 ocfs2_init_inode_steal_slot(osb);
154288
154289 atomic_set(&osb->alloc_stats.moves, 0);
154290 @@ -1895,9 +1887,6 @@
154291 INIT_WORK(&journal->j_recovery_work, ocfs2_complete_recovery);
154292 journal->j_state = OCFS2_JOURNAL_FREE;
154293
154294 - INIT_WORK(&osb->dentry_lock_work, ocfs2_drop_dl_inodes);
154295 - osb->dentry_lock_list = NULL;
154296 -
154297 /* get some pseudo constants for clustersize bits */
154298 osb->s_clustersize_bits =
154299 le32_to_cpu(di->id2.i_super.s_clustersize_bits);
154300 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ocfs2/xattr.c linux-2.6.29-rc3.owrt/fs/ocfs2/xattr.c
154301 --- linux-2.6.29.owrt/fs/ocfs2/xattr.c 2009-05-10 22:04:39.000000000 +0200
154302 +++ linux-2.6.29-rc3.owrt/fs/ocfs2/xattr.c 2009-05-10 23:48:29.000000000 +0200
154303 @@ -82,14 +82,13 @@
154304
154305 #define OCFS2_XATTR_ROOT_SIZE (sizeof(struct ocfs2_xattr_def_value_root))
154306 #define OCFS2_XATTR_INLINE_SIZE 80
154307 -#define OCFS2_XATTR_HEADER_GAP 4
154308 #define OCFS2_XATTR_FREE_IN_IBODY (OCFS2_MIN_XATTR_INLINE_SIZE \
154309 - sizeof(struct ocfs2_xattr_header) \
154310 - - OCFS2_XATTR_HEADER_GAP)
154311 + - sizeof(__u32))
154312 #define OCFS2_XATTR_FREE_IN_BLOCK(ptr) ((ptr)->i_sb->s_blocksize \
154313 - sizeof(struct ocfs2_xattr_block) \
154314 - sizeof(struct ocfs2_xattr_header) \
154315 - - OCFS2_XATTR_HEADER_GAP)
154316 + - sizeof(__u32))
154317
154318 static struct ocfs2_xattr_def_value_root def_xv = {
154319 .xv.xr_list.l_count = cpu_to_le16(1),
154320 @@ -275,12 +274,10 @@
154321 bucket->bu_blocks, bucket->bu_bhs, 0,
154322 NULL);
154323 if (!rc) {
154324 - spin_lock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock);
154325 rc = ocfs2_validate_meta_ecc_bhs(bucket->bu_inode->i_sb,
154326 bucket->bu_bhs,
154327 bucket->bu_blocks,
154328 &bucket_xh(bucket)->xh_check);
154329 - spin_unlock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock);
154330 if (rc)
154331 mlog_errno(rc);
154332 }
154333 @@ -313,11 +310,9 @@
154334 {
154335 int i;
154336
154337 - spin_lock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock);
154338 ocfs2_compute_meta_ecc_bhs(bucket->bu_inode->i_sb,
154339 bucket->bu_bhs, bucket->bu_blocks,
154340 &bucket_xh(bucket)->xh_check);
154341 - spin_unlock(&OCFS2_SB(bucket->bu_inode->i_sb)->osb_xattr_lock);
154342
154343 for (i = 0; i < bucket->bu_blocks; i++)
154344 ocfs2_journal_dirty(handle, bucket->bu_bhs[i]);
154345 @@ -547,12 +542,8 @@
154346 * when blocksize = 512, may reserve one more cluser for
154347 * xattr bucket, otherwise reserve one metadata block
154348 * for them is ok.
154349 - * If this is a new directory with inline data,
154350 - * we choose to reserve the entire inline area for
154351 - * directory contents and force an external xattr block.
154352 */
154353 if (dir->i_sb->s_blocksize == OCFS2_MIN_BLOCKSIZE ||
154354 - (S_ISDIR(mode) && ocfs2_supports_inline_data(osb)) ||
154355 (s_size + a_size) > OCFS2_XATTR_FREE_IN_IBODY) {
154356 ret = ocfs2_reserve_new_metadata_blocks(osb, 1, xattr_ac);
154357 if (ret) {
154358 @@ -1516,7 +1507,7 @@
154359 last += 1;
154360 }
154361
154362 - free = min_offs - ((void *)last - xs->base) - OCFS2_XATTR_HEADER_GAP;
154363 + free = min_offs - ((void *)last - xs->base) - sizeof(__u32);
154364 if (free < 0)
154365 return -EIO;
154366
154367 @@ -2199,7 +2190,7 @@
154368 last += 1;
154369 }
154370
154371 - free = min_offs - ((void *)last - xs->base) - OCFS2_XATTR_HEADER_GAP;
154372 + free = min_offs - ((void *)last - xs->base) - sizeof(__u32);
154373 if (free < 0)
154374 return 0;
154375
154376 @@ -2601,9 +2592,8 @@
154377
154378 if (!ret) {
154379 /* Update inode ctime. */
154380 - ret = ocfs2_journal_access_di(ctxt->handle, inode,
154381 - xis->inode_bh,
154382 - OCFS2_JOURNAL_ACCESS_WRITE);
154383 + ret = ocfs2_journal_access(ctxt->handle, inode, xis->inode_bh,
154384 + OCFS2_JOURNAL_ACCESS_WRITE);
154385 if (ret) {
154386 mlog_errno(ret);
154387 goto out;
154388 @@ -4739,6 +4729,13 @@
154389 vb.vb_xv = (struct ocfs2_xattr_value_root *)
154390 (vb.vb_bh->b_data + offset % blocksize);
154391
154392 + ret = ocfs2_xattr_bucket_journal_access(ctxt->handle, bucket,
154393 + OCFS2_JOURNAL_ACCESS_WRITE);
154394 + if (ret) {
154395 + mlog_errno(ret);
154396 + goto out;
154397 + }
154398 +
154399 /*
154400 * From here on out we have to dirty the bucket. The generic
154401 * value calls only modify one of the bucket's bhs, but we need
154402 @@ -4751,18 +4748,12 @@
154403 ret = ocfs2_xattr_value_truncate(inode, &vb, len, ctxt);
154404 if (ret) {
154405 mlog_errno(ret);
154406 - goto out;
154407 - }
154408 -
154409 - ret = ocfs2_xattr_bucket_journal_access(ctxt->handle, bucket,
154410 - OCFS2_JOURNAL_ACCESS_WRITE);
154411 - if (ret) {
154412 - mlog_errno(ret);
154413 - goto out;
154414 + goto out_dirty;
154415 }
154416
154417 xe->xe_value_size = cpu_to_le64(len);
154418
154419 +out_dirty:
154420 ocfs2_xattr_bucket_journal_dirty(ctxt->handle, bucket);
154421
154422 out:
154423 @@ -4795,33 +4786,19 @@
154424 char *val,
154425 int value_len)
154426 {
154427 - int ret, offset, block_off;
154428 + int offset;
154429 struct ocfs2_xattr_value_root *xv;
154430 struct ocfs2_xattr_entry *xe = xs->here;
154431 - struct ocfs2_xattr_header *xh = bucket_xh(xs->bucket);
154432 - void *base;
154433
154434 BUG_ON(!xs->base || !xe || ocfs2_xattr_is_local(xe));
154435
154436 - ret = ocfs2_xattr_bucket_get_name_value(inode, xh,
154437 - xe - xh->xh_entries,
154438 - &block_off,
154439 - &offset);
154440 - if (ret) {
154441 - mlog_errno(ret);
154442 - goto out;
154443 - }
154444 + offset = le16_to_cpu(xe->xe_name_offset) +
154445 + OCFS2_XATTR_SIZE(xe->xe_name_len);
154446
154447 - base = bucket_block(xs->bucket, block_off);
154448 - xv = (struct ocfs2_xattr_value_root *)(base + offset +
154449 - OCFS2_XATTR_SIZE(xe->xe_name_len));
154450 + xv = (struct ocfs2_xattr_value_root *)(xs->base + offset);
154451
154452 - ret = __ocfs2_xattr_set_value_outside(inode, handle,
154453 - xv, val, value_len);
154454 - if (ret)
154455 - mlog_errno(ret);
154456 -out:
154457 - return ret;
154458 + return __ocfs2_xattr_set_value_outside(inode, handle,
154459 + xv, val, value_len);
154460 }
154461
154462 static int ocfs2_rm_xattr_cluster(struct inode *inode,
154463 @@ -5084,8 +5061,8 @@
154464 xh_free_start = le16_to_cpu(xh->xh_free_start);
154465 header_size = sizeof(struct ocfs2_xattr_header) +
154466 count * sizeof(struct ocfs2_xattr_entry);
154467 - max_free = OCFS2_XATTR_BUCKET_SIZE - header_size -
154468 - le16_to_cpu(xh->xh_name_value_len) - OCFS2_XATTR_HEADER_GAP;
154469 + max_free = OCFS2_XATTR_BUCKET_SIZE -
154470 + le16_to_cpu(xh->xh_name_value_len) - header_size;
154471
154472 mlog_bug_on_msg(header_size > blocksize, "bucket %llu has header size "
154473 "of %u which exceed block size\n",
154474 @@ -5118,7 +5095,7 @@
154475 need = 0;
154476 }
154477
154478 - free = xh_free_start - header_size - OCFS2_XATTR_HEADER_GAP;
154479 + free = xh_free_start - header_size;
154480 /*
154481 * We need to make sure the new name/value pair
154482 * can exist in the same block.
154483 @@ -5151,8 +5128,7 @@
154484 }
154485
154486 xh_free_start = le16_to_cpu(xh->xh_free_start);
154487 - free = xh_free_start - header_size
154488 - - OCFS2_XATTR_HEADER_GAP;
154489 + free = xh_free_start - header_size;
154490 if (xh_free_start % blocksize < need)
154491 free -= xh_free_start % blocksize;
154492
154493 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/pipe.c linux-2.6.29-rc3.owrt/fs/pipe.c
154494 --- linux-2.6.29.owrt/fs/pipe.c 2009-05-10 22:04:39.000000000 +0200
154495 +++ linux-2.6.29-rc3.owrt/fs/pipe.c 2009-05-10 23:48:29.000000000 +0200
154496 @@ -699,12 +699,12 @@
154497 int retval;
154498
154499 mutex_lock(&inode->i_mutex);
154500 +
154501 retval = fasync_helper(fd, filp, on, &pipe->fasync_readers);
154502 - if (retval >= 0) {
154503 +
154504 + if (retval >= 0)
154505 retval = fasync_helper(fd, filp, on, &pipe->fasync_writers);
154506 - if (retval < 0) /* this can happen only if on == T */
154507 - fasync_helper(-1, filp, 0, &pipe->fasync_readers);
154508 - }
154509 +
154510 mutex_unlock(&inode->i_mutex);
154511
154512 if (retval < 0)
154513 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/proc/base.c linux-2.6.29-rc3.owrt/fs/proc/base.c
154514 --- linux-2.6.29.owrt/fs/proc/base.c 2009-05-10 22:04:39.000000000 +0200
154515 +++ linux-2.6.29-rc3.owrt/fs/proc/base.c 2009-05-10 23:48:29.000000000 +0200
154516 @@ -3066,6 +3066,7 @@
154517 int retval = -ENOENT;
154518 ino_t ino;
154519 int tid;
154520 + unsigned long pos = filp->f_pos; /* avoiding "long long" filp->f_pos */
154521 struct pid_namespace *ns;
154522
154523 task = get_proc_task(inode);
154524 @@ -3082,18 +3083,18 @@
154525 goto out_no_task;
154526 retval = 0;
154527
154528 - switch ((unsigned long)filp->f_pos) {
154529 + switch (pos) {
154530 case 0:
154531 ino = inode->i_ino;
154532 - if (filldir(dirent, ".", 1, filp->f_pos, ino, DT_DIR) < 0)
154533 + if (filldir(dirent, ".", 1, pos, ino, DT_DIR) < 0)
154534 goto out;
154535 - filp->f_pos++;
154536 + pos++;
154537 /* fall through */
154538 case 1:
154539 ino = parent_ino(dentry);
154540 - if (filldir(dirent, "..", 2, filp->f_pos, ino, DT_DIR) < 0)
154541 + if (filldir(dirent, "..", 2, pos, ino, DT_DIR) < 0)
154542 goto out;
154543 - filp->f_pos++;
154544 + pos++;
154545 /* fall through */
154546 }
154547
154548 @@ -3103,9 +3104,9 @@
154549 ns = filp->f_dentry->d_sb->s_fs_info;
154550 tid = (int)filp->f_version;
154551 filp->f_version = 0;
154552 - for (task = first_tid(leader, tid, filp->f_pos - 2, ns);
154553 + for (task = first_tid(leader, tid, pos - 2, ns);
154554 task;
154555 - task = next_tid(task), filp->f_pos++) {
154556 + task = next_tid(task), pos++) {
154557 tid = task_pid_nr_ns(task, ns);
154558 if (proc_task_fill_cache(filp, dirent, filldir, task, tid) < 0) {
154559 /* returning this tgid failed, save it as the first
154560 @@ -3116,6 +3117,7 @@
154561 }
154562 }
154563 out:
154564 + filp->f_pos = pos;
154565 put_task_struct(leader);
154566 out_no_task:
154567 return retval;
154568 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/proc/inode.c linux-2.6.29-rc3.owrt/fs/proc/inode.c
154569 --- linux-2.6.29.owrt/fs/proc/inode.c 2009-05-10 22:04:39.000000000 +0200
154570 +++ linux-2.6.29-rc3.owrt/fs/proc/inode.c 2009-05-10 23:48:29.000000000 +0200
154571 @@ -485,10 +485,8 @@
154572 }
154573 }
154574 unlock_new_inode(inode);
154575 - } else {
154576 + } else
154577 module_put(de->owner);
154578 - de_put(de);
154579 - }
154580 return inode;
154581
154582 out_ino:
154583 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/proc/page.c linux-2.6.29-rc3.owrt/fs/proc/page.c
154584 --- linux-2.6.29.owrt/fs/proc/page.c 2009-05-10 22:04:39.000000000 +0200
154585 +++ linux-2.6.29-rc3.owrt/fs/proc/page.c 2009-05-10 23:48:29.000000000 +0200
154586 @@ -80,7 +80,7 @@
154587 #define KPF_RECLAIM 9
154588 #define KPF_BUDDY 10
154589
154590 -#define kpf_copy_bit(flags, dstpos, srcpos) (((flags >> srcpos) & 1) << dstpos)
154591 +#define kpf_copy_bit(flags, srcpos, dstpos) (((flags >> srcpos) & 1) << dstpos)
154592
154593 static ssize_t kpageflags_read(struct file *file, char __user *buf,
154594 size_t count, loff_t *ppos)
154595 @@ -107,7 +107,7 @@
154596 else
154597 kflags = ppage->flags;
154598
154599 - uflags = kpf_copy_bit(kflags, KPF_LOCKED, PG_locked) |
154600 + uflags = kpf_copy_bit(KPF_LOCKED, PG_locked, kflags) |
154601 kpf_copy_bit(kflags, KPF_ERROR, PG_error) |
154602 kpf_copy_bit(kflags, KPF_REFERENCED, PG_referenced) |
154603 kpf_copy_bit(kflags, KPF_UPTODATE, PG_uptodate) |
154604 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ramfs/file-nommu.c linux-2.6.29-rc3.owrt/fs/ramfs/file-nommu.c
154605 --- linux-2.6.29.owrt/fs/ramfs/file-nommu.c 2009-05-10 22:04:39.000000000 +0200
154606 +++ linux-2.6.29-rc3.owrt/fs/ramfs/file-nommu.c 2009-05-10 23:48:29.000000000 +0200
154607 @@ -114,9 +114,6 @@
154608 if (!pagevec_add(&lru_pvec, page))
154609 __pagevec_lru_add_file(&lru_pvec);
154610
154611 - /* prevent the page from being discarded on memory pressure */
154612 - SetPageDirty(page);
154613 -
154614 unlock_page(page);
154615 }
154616
154617 @@ -129,7 +126,6 @@
154618 return -EFBIG;
154619
154620 add_error:
154621 - pagevec_lru_add_file(&lru_pvec);
154622 page_cache_release(pages + loop);
154623 for (loop++; loop < npages; loop++)
154624 __free_page(pages + loop);
154625 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/seq_file.c linux-2.6.29-rc3.owrt/fs/seq_file.c
154626 --- linux-2.6.29.owrt/fs/seq_file.c 2009-05-10 22:04:39.000000000 +0200
154627 +++ linux-2.6.29-rc3.owrt/fs/seq_file.c 2009-05-10 23:48:29.000000000 +0200
154628 @@ -48,78 +48,12 @@
154629 */
154630 file->f_version = 0;
154631
154632 - /*
154633 - * seq_files support lseek() and pread(). They do not implement
154634 - * write() at all, but we clear FMODE_PWRITE here for historical
154635 - * reasons.
154636 - *
154637 - * If a client of seq_files a) implements file.write() and b) wishes to
154638 - * support pwrite() then that client will need to implement its own
154639 - * file.open() which calls seq_open() and then sets FMODE_PWRITE.
154640 - */
154641 - file->f_mode &= ~FMODE_PWRITE;
154642 + /* SEQ files support lseek, but not pread/pwrite */
154643 + file->f_mode &= ~(FMODE_PREAD | FMODE_PWRITE);
154644 return 0;
154645 }
154646 EXPORT_SYMBOL(seq_open);
154647
154648 -static int traverse(struct seq_file *m, loff_t offset)
154649 -{
154650 - loff_t pos = 0, index;
154651 - int error = 0;
154652 - void *p;
154653 -
154654 - m->version = 0;
154655 - index = 0;
154656 - m->count = m->from = 0;
154657 - if (!offset) {
154658 - m->index = index;
154659 - return 0;
154660 - }
154661 - if (!m->buf) {
154662 - m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
154663 - if (!m->buf)
154664 - return -ENOMEM;
154665 - }
154666 - p = m->op->start(m, &index);
154667 - while (p) {
154668 - error = PTR_ERR(p);
154669 - if (IS_ERR(p))
154670 - break;
154671 - error = m->op->show(m, p);
154672 - if (error < 0)
154673 - break;
154674 - if (unlikely(error)) {
154675 - error = 0;
154676 - m->count = 0;
154677 - }
154678 - if (m->count == m->size)
154679 - goto Eoverflow;
154680 - if (pos + m->count > offset) {
154681 - m->from = offset - pos;
154682 - m->count -= m->from;
154683 - m->index = index;
154684 - break;
154685 - }
154686 - pos += m->count;
154687 - m->count = 0;
154688 - if (pos == offset) {
154689 - index++;
154690 - m->index = index;
154691 - break;
154692 - }
154693 - p = m->op->next(m, p, &index);
154694 - }
154695 - m->op->stop(m, p);
154696 - m->index = index;
154697 - return error;
154698 -
154699 -Eoverflow:
154700 - m->op->stop(m, p);
154701 - kfree(m->buf);
154702 - m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
154703 - return !m->buf ? -ENOMEM : -EAGAIN;
154704 -}
154705 -
154706 /**
154707 * seq_read - ->read() method for sequential files.
154708 * @file: the file to read from
154709 @@ -139,22 +73,6 @@
154710 int err = 0;
154711
154712 mutex_lock(&m->lock);
154713 -
154714 - /* Don't assume *ppos is where we left it */
154715 - if (unlikely(*ppos != m->read_pos)) {
154716 - m->read_pos = *ppos;
154717 - while ((err = traverse(m, *ppos)) == -EAGAIN)
154718 - ;
154719 - if (err) {
154720 - /* With prejudice... */
154721 - m->read_pos = 0;
154722 - m->version = 0;
154723 - m->index = 0;
154724 - m->count = 0;
154725 - goto Done;
154726 - }
154727 - }
154728 -
154729 /*
154730 * seq_file->op->..m_start/m_stop/m_next may do special actions
154731 * or optimisations based on the file->f_version, so we want to
154732 @@ -254,10 +172,8 @@
154733 Done:
154734 if (!copied)
154735 copied = err;
154736 - else {
154737 + else
154738 *ppos += copied;
154739 - m->read_pos += copied;
154740 - }
154741 file->f_version = m->version;
154742 mutex_unlock(&m->lock);
154743 return copied;
154744 @@ -270,6 +186,63 @@
154745 }
154746 EXPORT_SYMBOL(seq_read);
154747
154748 +static int traverse(struct seq_file *m, loff_t offset)
154749 +{
154750 + loff_t pos = 0, index;
154751 + int error = 0;
154752 + void *p;
154753 +
154754 + m->version = 0;
154755 + index = 0;
154756 + m->count = m->from = 0;
154757 + if (!offset) {
154758 + m->index = index;
154759 + return 0;
154760 + }
154761 + if (!m->buf) {
154762 + m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL);
154763 + if (!m->buf)
154764 + return -ENOMEM;
154765 + }
154766 + p = m->op->start(m, &index);
154767 + while (p) {
154768 + error = PTR_ERR(p);
154769 + if (IS_ERR(p))
154770 + break;
154771 + error = m->op->show(m, p);
154772 + if (error < 0)
154773 + break;
154774 + if (unlikely(error)) {
154775 + error = 0;
154776 + m->count = 0;
154777 + }
154778 + if (m->count == m->size)
154779 + goto Eoverflow;
154780 + if (pos + m->count > offset) {
154781 + m->from = offset - pos;
154782 + m->count -= m->from;
154783 + m->index = index;
154784 + break;
154785 + }
154786 + pos += m->count;
154787 + m->count = 0;
154788 + if (pos == offset) {
154789 + index++;
154790 + m->index = index;
154791 + break;
154792 + }
154793 + p = m->op->next(m, p, &index);
154794 + }
154795 + m->op->stop(m, p);
154796 + return error;
154797 +
154798 +Eoverflow:
154799 + m->op->stop(m, p);
154800 + kfree(m->buf);
154801 + m->buf = kmalloc(m->size <<= 1, GFP_KERNEL);
154802 + return !m->buf ? -ENOMEM : -EAGAIN;
154803 +}
154804 +
154805 /**
154806 * seq_lseek - ->llseek() method for sequential files.
154807 * @file: the file in question
154808 @@ -292,18 +265,16 @@
154809 if (offset < 0)
154810 break;
154811 retval = offset;
154812 - if (offset != m->read_pos) {
154813 + if (offset != file->f_pos) {
154814 while ((retval=traverse(m, offset)) == -EAGAIN)
154815 ;
154816 if (retval) {
154817 /* with extreme prejudice... */
154818 file->f_pos = 0;
154819 - m->read_pos = 0;
154820 m->version = 0;
154821 m->index = 0;
154822 m->count = 0;
154823 } else {
154824 - m->read_pos = offset;
154825 retval = file->f_pos = offset;
154826 }
154827 }
154828 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/squashfs/block.c linux-2.6.29-rc3.owrt/fs/squashfs/block.c
154829 --- linux-2.6.29.owrt/fs/squashfs/block.c 2009-05-10 22:04:39.000000000 +0200
154830 +++ linux-2.6.29-rc3.owrt/fs/squashfs/block.c 2009-05-10 23:48:29.000000000 +0200
154831 @@ -80,7 +80,7 @@
154832 * generated a larger block - this does occasionally happen with zlib).
154833 */
154834 int squashfs_read_data(struct super_block *sb, void **buffer, u64 index,
154835 - int length, u64 *next_index, int srclength, int pages)
154836 + int length, u64 *next_index, int srclength)
154837 {
154838 struct squashfs_sb_info *msblk = sb->s_fs_info;
154839 struct buffer_head **bh;
154840 @@ -184,7 +184,7 @@
154841 offset = 0;
154842 }
154843
154844 - if (msblk->stream.avail_out == 0 && page < pages) {
154845 + if (msblk->stream.avail_out == 0) {
154846 msblk->stream.next_out = buffer[page++];
154847 msblk->stream.avail_out = PAGE_CACHE_SIZE;
154848 }
154849 @@ -201,20 +201,25 @@
154850 zlib_init = 1;
154851 }
154852
154853 - zlib_err = zlib_inflate(&msblk->stream, Z_SYNC_FLUSH);
154854 + zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
154855
154856 if (msblk->stream.avail_in == 0 && k < b)
154857 put_bh(bh[k++]);
154858 } while (zlib_err == Z_OK);
154859
154860 if (zlib_err != Z_STREAM_END) {
154861 - ERROR("zlib_inflate error, data probably corrupt\n");
154862 + ERROR("zlib_inflate returned unexpected result"
154863 + " 0x%x, srclength %d, avail_in %d,"
154864 + " avail_out %d\n", zlib_err, srclength,
154865 + msblk->stream.avail_in,
154866 + msblk->stream.avail_out);
154867 goto release_mutex;
154868 }
154869
154870 zlib_err = zlib_inflateEnd(&msblk->stream);
154871 if (zlib_err != Z_OK) {
154872 - ERROR("zlib_inflate error, data probably corrupt\n");
154873 + ERROR("zlib_inflateEnd returned unexpected result 0x%x,"
154874 + " srclength %d\n", zlib_err, srclength);
154875 goto release_mutex;
154876 }
154877 length = msblk->stream.total_out;
154878 @@ -263,8 +268,7 @@
154879 put_bh(bh[k]);
154880
154881 read_failure:
154882 - ERROR("squashfs_read_data failed to read block 0x%llx\n",
154883 - (unsigned long long) index);
154884 + ERROR("sb_bread failed reading block 0x%llx\n", cur_index);
154885 kfree(bh);
154886 return -EIO;
154887 }
154888 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/squashfs/cache.c linux-2.6.29-rc3.owrt/fs/squashfs/cache.c
154889 --- linux-2.6.29.owrt/fs/squashfs/cache.c 2009-05-10 22:04:39.000000000 +0200
154890 +++ linux-2.6.29-rc3.owrt/fs/squashfs/cache.c 2009-05-10 23:48:29.000000000 +0200
154891 @@ -119,7 +119,7 @@
154892
154893 entry->length = squashfs_read_data(sb, entry->data,
154894 block, length, &entry->next_index,
154895 - cache->block_size, cache->pages);
154896 + cache->block_size);
154897
154898 spin_lock(&cache->lock);
154899
154900 @@ -406,7 +406,7 @@
154901 for (i = 0; i < pages; i++, buffer += PAGE_CACHE_SIZE)
154902 data[i] = buffer;
154903 res = squashfs_read_data(sb, data, block, length |
154904 - SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length, pages);
154905 + SQUASHFS_COMPRESSED_BIT_BLOCK, NULL, length);
154906 kfree(data);
154907 return res;
154908 }
154909 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/squashfs/inode.c linux-2.6.29-rc3.owrt/fs/squashfs/inode.c
154910 --- linux-2.6.29.owrt/fs/squashfs/inode.c 2009-05-10 22:04:39.000000000 +0200
154911 +++ linux-2.6.29-rc3.owrt/fs/squashfs/inode.c 2009-05-10 23:48:29.000000000 +0200
154912 @@ -133,8 +133,7 @@
154913 type = le16_to_cpu(sqshb_ino->inode_type);
154914 switch (type) {
154915 case SQUASHFS_REG_TYPE: {
154916 - unsigned int frag_offset, frag;
154917 - int frag_size;
154918 + unsigned int frag_offset, frag_size, frag;
154919 u64 frag_blk;
154920 struct squashfs_reg_inode *sqsh_ino = &squashfs_ino.reg;
154921
154922 @@ -176,8 +175,7 @@
154923 break;
154924 }
154925 case SQUASHFS_LREG_TYPE: {
154926 - unsigned int frag_offset, frag;
154927 - int frag_size;
154928 + unsigned int frag_offset, frag_size, frag;
154929 u64 frag_blk;
154930 struct squashfs_lreg_inode *sqsh_ino = &squashfs_ino.lreg;
154931
154932 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/squashfs/squashfs.h linux-2.6.29-rc3.owrt/fs/squashfs/squashfs.h
154933 --- linux-2.6.29.owrt/fs/squashfs/squashfs.h 2009-05-10 22:04:39.000000000 +0200
154934 +++ linux-2.6.29-rc3.owrt/fs/squashfs/squashfs.h 2009-05-10 23:48:29.000000000 +0200
154935 @@ -34,7 +34,7 @@
154936
154937 /* block.c */
154938 extern int squashfs_read_data(struct super_block *, void **, u64, int, u64 *,
154939 - int, int);
154940 + int);
154941
154942 /* cache.c */
154943 extern struct squashfs_cache *squashfs_cache_init(char *, int, int);
154944 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/squashfs/super.c linux-2.6.29-rc3.owrt/fs/squashfs/super.c
154945 --- linux-2.6.29.owrt/fs/squashfs/super.c 2009-05-10 22:04:39.000000000 +0200
154946 +++ linux-2.6.29-rc3.owrt/fs/squashfs/super.c 2009-05-10 23:48:29.000000000 +0200
154947 @@ -389,7 +389,7 @@
154948 return err;
154949 }
154950
154951 - printk(KERN_INFO "squashfs: version 4.0 (2009/01/31) "
154952 + printk(KERN_INFO "squashfs: version 4.0 (2009/01/03) "
154953 "Phillip Lougher\n");
154954
154955 return 0;
154956 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/super.c linux-2.6.29-rc3.owrt/fs/super.c
154957 --- linux-2.6.29.owrt/fs/super.c 2009-05-10 22:04:39.000000000 +0200
154958 +++ linux-2.6.29-rc3.owrt/fs/super.c 2009-05-10 23:48:29.000000000 +0200
154959 @@ -82,22 +82,7 @@
154960 * lock ordering than usbfs:
154961 */
154962 lockdep_set_class(&s->s_lock, &type->s_lock_key);
154963 - /*
154964 - * sget() can have s_umount recursion.
154965 - *
154966 - * When it cannot find a suitable sb, it allocates a new
154967 - * one (this one), and tries again to find a suitable old
154968 - * one.
154969 - *
154970 - * In case that succeeds, it will acquire the s_umount
154971 - * lock of the old one. Since these are clearly distrinct
154972 - * locks, and this object isn't exposed yet, there's no
154973 - * risk of deadlocks.
154974 - *
154975 - * Annotate this by putting this lock in a different
154976 - * subclass.
154977 - */
154978 - down_write_nested(&s->s_umount, SINGLE_DEPTH_NESTING);
154979 + down_write(&s->s_umount);
154980 s->s_count = S_BIAS;
154981 atomic_set(&s->s_active, 1);
154982 mutex_init(&s->s_vfs_rename_mutex);
154983 @@ -316,7 +301,7 @@
154984 /*
154985 * wait for asynchronous fs operations to finish before going further
154986 */
154987 - async_synchronize_full_domain(&sb->s_async_list);
154988 + async_synchronize_full_special(&sb->s_async_list);
154989
154990 /* bad name - it should be evict_inodes() */
154991 invalidate_inodes(sb);
154992 @@ -371,10 +356,8 @@
154993 continue;
154994 if (!grab_super(old))
154995 goto retry;
154996 - if (s) {
154997 - up_write(&s->s_umount);
154998 + if (s)
154999 destroy_super(s);
155000 - }
155001 return old;
155002 }
155003 }
155004 @@ -389,7 +372,6 @@
155005 err = set(s, data);
155006 if (err) {
155007 spin_unlock(&sb_lock);
155008 - up_write(&s->s_umount);
155009 destroy_super(s);
155010 return ERR_PTR(err);
155011 }
155012 @@ -488,7 +470,7 @@
155013 sb->s_count++;
155014 spin_unlock(&sb_lock);
155015 down_read(&sb->s_umount);
155016 - async_synchronize_full_domain(&sb->s_async_list);
155017 + async_synchronize_full_special(&sb->s_async_list);
155018 if (sb->s_root && (wait || sb->s_dirt))
155019 sb->s_op->sync_fs(sb, wait);
155020 up_read(&sb->s_umount);
155021 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/timerfd.c linux-2.6.29-rc3.owrt/fs/timerfd.c
155022 --- linux-2.6.29.owrt/fs/timerfd.c 2009-05-10 22:04:39.000000000 +0200
155023 +++ linux-2.6.29-rc3.owrt/fs/timerfd.c 2009-05-10 23:48:29.000000000 +0200
155024 @@ -186,9 +186,10 @@
155025 BUILD_BUG_ON(TFD_CLOEXEC != O_CLOEXEC);
155026 BUILD_BUG_ON(TFD_NONBLOCK != O_NONBLOCK);
155027
155028 - if ((flags & ~TFD_CREATE_FLAGS) ||
155029 - (clockid != CLOCK_MONOTONIC &&
155030 - clockid != CLOCK_REALTIME))
155031 + if (flags & ~(TFD_CLOEXEC | TFD_NONBLOCK))
155032 + return -EINVAL;
155033 + if (clockid != CLOCK_MONOTONIC &&
155034 + clockid != CLOCK_REALTIME)
155035 return -EINVAL;
155036
155037 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
155038 @@ -200,7 +201,7 @@
155039 hrtimer_init(&ctx->tmr, clockid, HRTIMER_MODE_ABS);
155040
155041 ufd = anon_inode_getfd("[timerfd]", &timerfd_fops, ctx,
155042 - flags & TFD_SHARED_FCNTL_FLAGS);
155043 + flags & (O_CLOEXEC | O_NONBLOCK));
155044 if (ufd < 0)
155045 kfree(ctx);
155046
155047 @@ -218,8 +219,7 @@
155048 if (copy_from_user(&ktmr, utmr, sizeof(ktmr)))
155049 return -EFAULT;
155050
155051 - if ((flags & ~TFD_SETTIME_FLAGS) ||
155052 - !timespec_valid(&ktmr.it_value) ||
155053 + if (!timespec_valid(&ktmr.it_value) ||
155054 !timespec_valid(&ktmr.it_interval))
155055 return -EINVAL;
155056
155057 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/budget.c linux-2.6.29-rc3.owrt/fs/ubifs/budget.c
155058 --- linux-2.6.29.owrt/fs/ubifs/budget.c 2009-05-10 22:04:39.000000000 +0200
155059 +++ linux-2.6.29-rc3.owrt/fs/ubifs/budget.c 2009-05-10 23:48:29.000000000 +0200
155060 @@ -689,7 +689,7 @@
155061 }
155062
155063 /**
155064 - * ubifs_get_free_space_nolock - return amount of free space.
155065 + * ubifs_get_free_space - return amount of free space.
155066 * @c: UBIFS file-system description object
155067 *
155068 * This function calculates amount of free space to report to user-space.
155069 @@ -704,14 +704,16 @@
155070 * traditional file-systems, because they have way less overhead than UBIFS.
155071 * So, to keep users happy, UBIFS tries to take the overhead into account.
155072 */
155073 -long long ubifs_get_free_space_nolock(struct ubifs_info *c)
155074 +long long ubifs_get_free_space(struct ubifs_info *c)
155075 {
155076 - int rsvd_idx_lebs, lebs;
155077 + int min_idx_lebs, rsvd_idx_lebs, lebs;
155078 long long available, outstanding, free;
155079
155080 - ubifs_assert(c->min_idx_lebs == ubifs_calc_min_idx_lebs(c));
155081 + spin_lock(&c->space_lock);
155082 + min_idx_lebs = c->min_idx_lebs;
155083 + ubifs_assert(min_idx_lebs == ubifs_calc_min_idx_lebs(c));
155084 outstanding = c->budg_data_growth + c->budg_dd_growth;
155085 - available = ubifs_calc_available(c, c->min_idx_lebs);
155086 + available = ubifs_calc_available(c, min_idx_lebs);
155087
155088 /*
155089 * When reporting free space to user-space, UBIFS guarantees that it is
155090 @@ -724,14 +726,15 @@
155091 * Note, the calculations below are similar to what we have in
155092 * 'do_budget_space()', so refer there for comments.
155093 */
155094 - if (c->min_idx_lebs > c->lst.idx_lebs)
155095 - rsvd_idx_lebs = c->min_idx_lebs - c->lst.idx_lebs;
155096 + if (min_idx_lebs > c->lst.idx_lebs)
155097 + rsvd_idx_lebs = min_idx_lebs - c->lst.idx_lebs;
155098 else
155099 rsvd_idx_lebs = 0;
155100 lebs = c->lst.empty_lebs + c->freeable_cnt + c->idx_gc_cnt -
155101 c->lst.taken_empty_lebs;
155102 lebs -= rsvd_idx_lebs;
155103 available += lebs * (c->dark_wm - c->leb_overhead);
155104 + spin_unlock(&c->space_lock);
155105
155106 if (available > outstanding)
155107 free = ubifs_reported_space(c, available - outstanding);
155108 @@ -739,21 +742,3 @@
155109 free = 0;
155110 return free;
155111 }
155112 -
155113 -/**
155114 - * ubifs_get_free_space - return amount of free space.
155115 - * @c: UBIFS file-system description object
155116 - *
155117 - * This function calculates and retuns amount of free space to report to
155118 - * user-space.
155119 - */
155120 -long long ubifs_get_free_space(struct ubifs_info *c)
155121 -{
155122 - long long free;
155123 -
155124 - spin_lock(&c->space_lock);
155125 - free = ubifs_get_free_space_nolock(c);
155126 - spin_unlock(&c->space_lock);
155127 -
155128 - return free;
155129 -}
155130 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/debug.c linux-2.6.29-rc3.owrt/fs/ubifs/debug.c
155131 --- linux-2.6.29.owrt/fs/ubifs/debug.c 2009-05-10 22:04:39.000000000 +0200
155132 +++ linux-2.6.29-rc3.owrt/fs/ubifs/debug.c 2009-05-10 23:48:29.000000000 +0200
155133 @@ -620,11 +620,9 @@
155134 c->dark_wm, c->dead_wm, c->max_idx_node_sz);
155135 printk(KERN_DEBUG "\tgc_lnum %d, ihead_lnum %d\n",
155136 c->gc_lnum, c->ihead_lnum);
155137 - /* If we are in R/O mode, journal heads do not exist */
155138 - if (c->jheads)
155139 - for (i = 0; i < c->jhead_cnt; i++)
155140 - printk(KERN_DEBUG "\tjhead %d\t LEB %d\n",
155141 - c->jheads[i].wbuf.jhead, c->jheads[i].wbuf.lnum);
155142 + for (i = 0; i < c->jhead_cnt; i++)
155143 + printk(KERN_DEBUG "\tjhead %d\t LEB %d\n",
155144 + c->jheads[i].wbuf.jhead, c->jheads[i].wbuf.lnum);
155145 for (rb = rb_first(&c->buds); rb; rb = rb_next(rb)) {
155146 bud = rb_entry(rb, struct ubifs_bud, rb);
155147 printk(KERN_DEBUG "\tbud LEB %d\n", bud->lnum);
155148 @@ -639,7 +637,10 @@
155149 /* Print budgeting predictions */
155150 available = ubifs_calc_available(c, c->min_idx_lebs);
155151 outstanding = c->budg_data_growth + c->budg_dd_growth;
155152 - free = ubifs_get_free_space_nolock(c);
155153 + if (available > outstanding)
155154 + free = ubifs_reported_space(c, available - outstanding);
155155 + else
155156 + free = 0;
155157 printk(KERN_DEBUG "Budgeting predictions:\n");
155158 printk(KERN_DEBUG "\tavailable: %lld, outstanding %lld, free %lld\n",
155159 available, outstanding, free);
155160 @@ -860,65 +861,6 @@
155161 }
155162
155163 /**
155164 - * dbg_save_space_info - save information about flash space.
155165 - * @c: UBIFS file-system description object
155166 - *
155167 - * This function saves information about UBIFS free space, dirty space, etc, in
155168 - * order to check it later.
155169 - */
155170 -void dbg_save_space_info(struct ubifs_info *c)
155171 -{
155172 - struct ubifs_debug_info *d = c->dbg;
155173 -
155174 - ubifs_get_lp_stats(c, &d->saved_lst);
155175 -
155176 - spin_lock(&c->space_lock);
155177 - d->saved_free = ubifs_get_free_space_nolock(c);
155178 - spin_unlock(&c->space_lock);
155179 -}
155180 -
155181 -/**
155182 - * dbg_check_space_info - check flash space information.
155183 - * @c: UBIFS file-system description object
155184 - *
155185 - * This function compares current flash space information with the information
155186 - * which was saved when the 'dbg_save_space_info()' function was called.
155187 - * Returns zero if the information has not changed, and %-EINVAL it it has
155188 - * changed.
155189 - */
155190 -int dbg_check_space_info(struct ubifs_info *c)
155191 -{
155192 - struct ubifs_debug_info *d = c->dbg;
155193 - struct ubifs_lp_stats lst;
155194 - long long avail, free;
155195 -
155196 - spin_lock(&c->space_lock);
155197 - avail = ubifs_calc_available(c, c->min_idx_lebs);
155198 - spin_unlock(&c->space_lock);
155199 - free = ubifs_get_free_space(c);
155200 -
155201 - if (free != d->saved_free) {
155202 - ubifs_err("free space changed from %lld to %lld",
155203 - d->saved_free, free);
155204 - goto out;
155205 - }
155206 -
155207 - return 0;
155208 -
155209 -out:
155210 - ubifs_msg("saved lprops statistics dump");
155211 - dbg_dump_lstats(&d->saved_lst);
155212 - ubifs_get_lp_stats(c, &lst);
155213 - ubifs_msg("current lprops statistics dump");
155214 - dbg_dump_lstats(&d->saved_lst);
155215 - spin_lock(&c->space_lock);
155216 - dbg_dump_budg(c);
155217 - spin_unlock(&c->space_lock);
155218 - dump_stack();
155219 - return -EINVAL;
155220 -}
155221 -
155222 -/**
155223 * dbg_check_synced_i_size - check synchronized inode size.
155224 * @inode: inode to check
155225 *
155226 @@ -1407,7 +1349,7 @@
155227 * @c: UBIFS file-system description object
155228 * @leaf_cb: called for each leaf node
155229 * @znode_cb: called for each indexing node
155230 - * @priv: private data which is passed to callbacks
155231 + * @priv: private date which is passed to callbacks
155232 *
155233 * This function walks the UBIFS index and calls the @leaf_cb for each leaf
155234 * node and @znode_cb for each indexing node. Returns zero in case of success
155235 @@ -2467,7 +2409,7 @@
155236 * Root directory for UBIFS stuff in debugfs. Contains sub-directories which
155237 * contain the stuff specific to particular file-system mounts.
155238 */
155239 -static struct dentry *dfs_rootdir;
155240 +static struct dentry *debugfs_rootdir;
155241
155242 /**
155243 * dbg_debugfs_init - initialize debugfs file-system.
155244 @@ -2479,9 +2421,9 @@
155245 */
155246 int dbg_debugfs_init(void)
155247 {
155248 - dfs_rootdir = debugfs_create_dir("ubifs", NULL);
155249 - if (IS_ERR(dfs_rootdir)) {
155250 - int err = PTR_ERR(dfs_rootdir);
155251 + debugfs_rootdir = debugfs_create_dir("ubifs", NULL);
155252 + if (IS_ERR(debugfs_rootdir)) {
155253 + int err = PTR_ERR(debugfs_rootdir);
155254 ubifs_err("cannot create \"ubifs\" debugfs directory, "
155255 "error %d\n", err);
155256 return err;
155257 @@ -2495,7 +2437,7 @@
155258 */
155259 void dbg_debugfs_exit(void)
155260 {
155261 - debugfs_remove(dfs_rootdir);
155262 + debugfs_remove(debugfs_rootdir);
155263 }
155264
155265 static int open_debugfs_file(struct inode *inode, struct file *file)
155266 @@ -2510,13 +2452,13 @@
155267 struct ubifs_info *c = file->private_data;
155268 struct ubifs_debug_info *d = c->dbg;
155269
155270 - if (file->f_path.dentry == d->dfs_dump_lprops)
155271 + if (file->f_path.dentry == d->dump_lprops)
155272 dbg_dump_lprops(c);
155273 - else if (file->f_path.dentry == d->dfs_dump_budg) {
155274 + else if (file->f_path.dentry == d->dump_budg) {
155275 spin_lock(&c->space_lock);
155276 dbg_dump_budg(c);
155277 spin_unlock(&c->space_lock);
155278 - } else if (file->f_path.dentry == d->dfs_dump_tnc) {
155279 + } else if (file->f_path.dentry == d->dump_tnc) {
155280 mutex_lock(&c->tnc_mutex);
155281 dbg_dump_tnc(c);
155282 mutex_unlock(&c->tnc_mutex);
155283 @@ -2527,7 +2469,7 @@
155284 return count;
155285 }
155286
155287 -static const struct file_operations dfs_fops = {
155288 +static const struct file_operations debugfs_fops = {
155289 .open = open_debugfs_file,
155290 .write = write_debugfs_file,
155291 .owner = THIS_MODULE,
155292 @@ -2552,32 +2494,36 @@
155293 struct dentry *dent;
155294 struct ubifs_debug_info *d = c->dbg;
155295
155296 - sprintf(d->dfs_dir_name, "ubi%d_%d", c->vi.ubi_num, c->vi.vol_id);
155297 - d->dfs_dir = debugfs_create_dir(d->dfs_dir_name, dfs_rootdir);
155298 - if (IS_ERR(d->dfs_dir)) {
155299 - err = PTR_ERR(d->dfs_dir);
155300 + sprintf(d->debugfs_dir_name, "ubi%d_%d", c->vi.ubi_num, c->vi.vol_id);
155301 + d->debugfs_dir = debugfs_create_dir(d->debugfs_dir_name,
155302 + debugfs_rootdir);
155303 + if (IS_ERR(d->debugfs_dir)) {
155304 + err = PTR_ERR(d->debugfs_dir);
155305 ubifs_err("cannot create \"%s\" debugfs directory, error %d\n",
155306 - d->dfs_dir_name, err);
155307 + d->debugfs_dir_name, err);
155308 goto out;
155309 }
155310
155311 fname = "dump_lprops";
155312 - dent = debugfs_create_file(fname, S_IWUGO, d->dfs_dir, c, &dfs_fops);
155313 + dent = debugfs_create_file(fname, S_IWUGO, d->debugfs_dir, c,
155314 + &debugfs_fops);
155315 if (IS_ERR(dent))
155316 goto out_remove;
155317 - d->dfs_dump_lprops = dent;
155318 + d->dump_lprops = dent;
155319
155320 fname = "dump_budg";
155321 - dent = debugfs_create_file(fname, S_IWUGO, d->dfs_dir, c, &dfs_fops);
155322 + dent = debugfs_create_file(fname, S_IWUGO, d->debugfs_dir, c,
155323 + &debugfs_fops);
155324 if (IS_ERR(dent))
155325 goto out_remove;
155326 - d->dfs_dump_budg = dent;
155327 + d->dump_budg = dent;
155328
155329 fname = "dump_tnc";
155330 - dent = debugfs_create_file(fname, S_IWUGO, d->dfs_dir, c, &dfs_fops);
155331 + dent = debugfs_create_file(fname, S_IWUGO, d->debugfs_dir, c,
155332 + &debugfs_fops);
155333 if (IS_ERR(dent))
155334 goto out_remove;
155335 - d->dfs_dump_tnc = dent;
155336 + d->dump_tnc = dent;
155337
155338 return 0;
155339
155340 @@ -2585,7 +2531,7 @@
155341 err = PTR_ERR(dent);
155342 ubifs_err("cannot create \"%s\" debugfs directory, error %d\n",
155343 fname, err);
155344 - debugfs_remove_recursive(d->dfs_dir);
155345 + debugfs_remove_recursive(d->debugfs_dir);
155346 out:
155347 return err;
155348 }
155349 @@ -2596,7 +2542,7 @@
155350 */
155351 void dbg_debugfs_exit_fs(struct ubifs_info *c)
155352 {
155353 - debugfs_remove_recursive(c->dbg->dfs_dir);
155354 + debugfs_remove_recursive(c->dbg->debugfs_dir);
155355 }
155356
155357 #endif /* CONFIG_UBIFS_FS_DEBUG */
155358 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/debug.h linux-2.6.29-rc3.owrt/fs/ubifs/debug.h
155359 --- linux-2.6.29.owrt/fs/ubifs/debug.h 2009-05-10 22:04:39.000000000 +0200
155360 +++ linux-2.6.29-rc3.owrt/fs/ubifs/debug.h 2009-05-10 23:48:29.000000000 +0200
155361 @@ -41,17 +41,15 @@
155362 * @chk_lpt_wastage: used by LPT tree size checker
155363 * @chk_lpt_lebs: used by LPT tree size checker
155364 * @new_nhead_offs: used by LPT tree size checker
155365 - * @new_ihead_lnum: used by debugging to check @c->ihead_lnum
155366 - * @new_ihead_offs: used by debugging to check @c->ihead_offs
155367 + * @new_ihead_lnum: used by debugging to check ihead_lnum
155368 + * @new_ihead_offs: used by debugging to check ihead_offs
155369 *
155370 - * @saved_lst: saved lprops statistics (used by 'dbg_save_space_info()')
155371 - * @saved_free: saved free space (used by 'dbg_save_space_info()')
155372 - *
155373 - * dfs_dir_name: name of debugfs directory containing this file-system's files
155374 - * dfs_dir: direntry object of the file-system debugfs directory
155375 - * dfs_dump_lprops: "dump lprops" debugfs knob
155376 - * dfs_dump_budg: "dump budgeting information" debugfs knob
155377 - * dfs_dump_tnc: "dump TNC" debugfs knob
155378 + * debugfs_dir_name: name of debugfs directory containing this file-system's
155379 + * files
155380 + * debugfs_dir: direntry object of the file-system debugfs directory
155381 + * dump_lprops: "dump lprops" debugfs knob
155382 + * dump_budg: "dump budgeting information" debugfs knob
155383 + * dump_tnc: "dump TNC" debugfs knob
155384 */
155385 struct ubifs_debug_info {
155386 void *buf;
155387 @@ -71,14 +69,11 @@
155388 int new_ihead_lnum;
155389 int new_ihead_offs;
155390
155391 - struct ubifs_lp_stats saved_lst;
155392 - long long saved_free;
155393 -
155394 - char dfs_dir_name[100];
155395 - struct dentry *dfs_dir;
155396 - struct dentry *dfs_dump_lprops;
155397 - struct dentry *dfs_dump_budg;
155398 - struct dentry *dfs_dump_tnc;
155399 + char debugfs_dir_name[100];
155400 + struct dentry *debugfs_dir;
155401 + struct dentry *dump_lprops;
155402 + struct dentry *dump_budg;
155403 + struct dentry *dump_tnc;
155404 };
155405
155406 #define ubifs_assert(expr) do { \
155407 @@ -302,8 +297,7 @@
155408 dbg_znode_callback znode_cb, void *priv);
155409
155410 /* Checking functions */
155411 -void dbg_save_space_info(struct ubifs_info *c);
155412 -int dbg_check_space_info(struct ubifs_info *c);
155413 +
155414 int dbg_check_lprops(struct ubifs_info *c);
155415 int dbg_old_index_check_init(struct ubifs_info *c, struct ubifs_zbranch *zroot);
155416 int dbg_check_old_index(struct ubifs_info *c, struct ubifs_zbranch *zroot);
155417 @@ -445,8 +439,6 @@
155418
155419 #define dbg_walk_index(c, leaf_cb, znode_cb, priv) 0
155420 #define dbg_old_index_check_init(c, zroot) 0
155421 -#define dbg_save_space_info(c) ({})
155422 -#define dbg_check_space_info(c) 0
155423 #define dbg_check_old_index(c, zroot) 0
155424 #define dbg_check_cats(c) 0
155425 #define dbg_check_ltab(c) 0
155426 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/dir.c linux-2.6.29-rc3.owrt/fs/ubifs/dir.c
155427 --- linux-2.6.29.owrt/fs/ubifs/dir.c 2009-05-10 22:04:39.000000000 +0200
155428 +++ linux-2.6.29-rc3.owrt/fs/ubifs/dir.c 2009-05-10 23:48:29.000000000 +0200
155429 @@ -482,29 +482,30 @@
155430 }
155431
155432 /**
155433 - * lock_2_inodes - a wrapper for locking two UBIFS inodes.
155434 + * lock_2_inodes - lock two UBIFS inodes.
155435 * @inode1: first inode
155436 * @inode2: second inode
155437 - *
155438 - * We do not implement any tricks to guarantee strict lock ordering, because
155439 - * VFS has already done it for us on the @i_mutex. So this is just a simple
155440 - * wrapper function.
155441 */
155442 static void lock_2_inodes(struct inode *inode1, struct inode *inode2)
155443 {
155444 - mutex_lock_nested(&ubifs_inode(inode1)->ui_mutex, WB_MUTEX_1);
155445 - mutex_lock_nested(&ubifs_inode(inode2)->ui_mutex, WB_MUTEX_2);
155446 + if (inode1->i_ino < inode2->i_ino) {
155447 + mutex_lock_nested(&ubifs_inode(inode1)->ui_mutex, WB_MUTEX_2);
155448 + mutex_lock_nested(&ubifs_inode(inode2)->ui_mutex, WB_MUTEX_3);
155449 + } else {
155450 + mutex_lock_nested(&ubifs_inode(inode2)->ui_mutex, WB_MUTEX_2);
155451 + mutex_lock_nested(&ubifs_inode(inode1)->ui_mutex, WB_MUTEX_3);
155452 + }
155453 }
155454
155455 /**
155456 - * unlock_2_inodes - a wrapper for unlocking two UBIFS inodes.
155457 + * unlock_2_inodes - unlock two UBIFS inodes inodes.
155458 * @inode1: first inode
155459 * @inode2: second inode
155460 */
155461 static void unlock_2_inodes(struct inode *inode1, struct inode *inode2)
155462 {
155463 - mutex_unlock(&ubifs_inode(inode2)->ui_mutex);
155464 mutex_unlock(&ubifs_inode(inode1)->ui_mutex);
155465 + mutex_unlock(&ubifs_inode(inode2)->ui_mutex);
155466 }
155467
155468 static int ubifs_link(struct dentry *old_dentry, struct inode *dir,
155469 @@ -526,8 +527,6 @@
155470 dbg_gen("dent '%.*s' to ino %lu (nlink %d) in dir ino %lu",
155471 dentry->d_name.len, dentry->d_name.name, inode->i_ino,
155472 inode->i_nlink, dir->i_ino);
155473 - ubifs_assert(mutex_is_locked(&dir->i_mutex));
155474 - ubifs_assert(mutex_is_locked(&inode->i_mutex));
155475 err = dbg_check_synced_i_size(inode);
155476 if (err)
155477 return err;
155478 @@ -581,8 +580,6 @@
155479 dbg_gen("dent '%.*s' from ino %lu (nlink %d) in dir ino %lu",
155480 dentry->d_name.len, dentry->d_name.name, inode->i_ino,
155481 inode->i_nlink, dir->i_ino);
155482 - ubifs_assert(mutex_is_locked(&dir->i_mutex));
155483 - ubifs_assert(mutex_is_locked(&inode->i_mutex));
155484 err = dbg_check_synced_i_size(inode);
155485 if (err)
155486 return err;
155487 @@ -670,8 +667,7 @@
155488
155489 dbg_gen("directory '%.*s', ino %lu in dir ino %lu", dentry->d_name.len,
155490 dentry->d_name.name, inode->i_ino, dir->i_ino);
155491 - ubifs_assert(mutex_is_locked(&dir->i_mutex));
155492 - ubifs_assert(mutex_is_locked(&inode->i_mutex));
155493 +
155494 err = check_dir_empty(c, dentry->d_inode);
155495 if (err)
155496 return err;
155497 @@ -926,30 +922,59 @@
155498 }
155499
155500 /**
155501 - * lock_3_inodes - a wrapper for locking three UBIFS inodes.
155502 + * lock_3_inodes - lock three UBIFS inodes for rename.
155503 * @inode1: first inode
155504 * @inode2: second inode
155505 * @inode3: third inode
155506 *
155507 - * This function is used for 'ubifs_rename()' and @inode1 may be the same as
155508 - * @inode2 whereas @inode3 may be %NULL.
155509 - *
155510 - * We do not implement any tricks to guarantee strict lock ordering, because
155511 - * VFS has already done it for us on the @i_mutex. So this is just a simple
155512 - * wrapper function.
155513 + * For 'ubifs_rename()', @inode1 may be the same as @inode2 whereas @inode3 may
155514 + * be null.
155515 */
155516 static void lock_3_inodes(struct inode *inode1, struct inode *inode2,
155517 struct inode *inode3)
155518 {
155519 - mutex_lock_nested(&ubifs_inode(inode1)->ui_mutex, WB_MUTEX_1);
155520 - if (inode2 != inode1)
155521 - mutex_lock_nested(&ubifs_inode(inode2)->ui_mutex, WB_MUTEX_2);
155522 - if (inode3)
155523 - mutex_lock_nested(&ubifs_inode(inode3)->ui_mutex, WB_MUTEX_3);
155524 + struct inode *i1, *i2, *i3;
155525 +
155526 + if (!inode3) {
155527 + if (inode1 != inode2) {
155528 + lock_2_inodes(inode1, inode2);
155529 + return;
155530 + }
155531 + mutex_lock_nested(&ubifs_inode(inode1)->ui_mutex, WB_MUTEX_1);
155532 + return;
155533 + }
155534 +
155535 + if (inode1 == inode2) {
155536 + lock_2_inodes(inode1, inode3);
155537 + return;
155538 + }
155539 +
155540 + /* 3 different inodes */
155541 + if (inode1 < inode2) {
155542 + i3 = inode2;
155543 + if (inode1 < inode3) {
155544 + i1 = inode1;
155545 + i2 = inode3;
155546 + } else {
155547 + i1 = inode3;
155548 + i2 = inode1;
155549 + }
155550 + } else {
155551 + i3 = inode1;
155552 + if (inode2 < inode3) {
155553 + i1 = inode2;
155554 + i2 = inode3;
155555 + } else {
155556 + i1 = inode3;
155557 + i2 = inode2;
155558 + }
155559 + }
155560 + mutex_lock_nested(&ubifs_inode(i1)->ui_mutex, WB_MUTEX_1);
155561 + lock_2_inodes(i2, i3);
155562 }
155563
155564 /**
155565 - * unlock_3_inodes - a wrapper for unlocking three UBIFS inodes for rename.
155566 + * unlock_3_inodes - unlock three UBIFS inodes for rename.
155567 * @inode1: first inode
155568 * @inode2: second inode
155569 * @inode3: third inode
155570 @@ -957,11 +982,11 @@
155571 static void unlock_3_inodes(struct inode *inode1, struct inode *inode2,
155572 struct inode *inode3)
155573 {
155574 - if (inode3)
155575 - mutex_unlock(&ubifs_inode(inode3)->ui_mutex);
155576 + mutex_unlock(&ubifs_inode(inode1)->ui_mutex);
155577 if (inode1 != inode2)
155578 mutex_unlock(&ubifs_inode(inode2)->ui_mutex);
155579 - mutex_unlock(&ubifs_inode(inode1)->ui_mutex);
155580 + if (inode3)
155581 + mutex_unlock(&ubifs_inode(inode3)->ui_mutex);
155582 }
155583
155584 static int ubifs_rename(struct inode *old_dir, struct dentry *old_dentry,
155585 @@ -995,11 +1020,6 @@
155586 "dir ino %lu", old_dentry->d_name.len, old_dentry->d_name.name,
155587 old_inode->i_ino, old_dir->i_ino, new_dentry->d_name.len,
155588 new_dentry->d_name.name, new_dir->i_ino);
155589 - ubifs_assert(mutex_is_locked(&old_dir->i_mutex));
155590 - ubifs_assert(mutex_is_locked(&new_dir->i_mutex));
155591 - if (unlink)
155592 - ubifs_assert(mutex_is_locked(&new_inode->i_mutex));
155593 -
155594
155595 if (unlink && is_dir) {
155596 err = check_dir_empty(c, new_inode);
155597 @@ -1179,7 +1199,7 @@
155598 return 0;
155599 }
155600
155601 -const struct inode_operations ubifs_dir_inode_operations = {
155602 +struct inode_operations ubifs_dir_inode_operations = {
155603 .lookup = ubifs_lookup,
155604 .create = ubifs_create,
155605 .link = ubifs_link,
155606 @@ -1199,7 +1219,7 @@
155607 #endif
155608 };
155609
155610 -const struct file_operations ubifs_dir_operations = {
155611 +struct file_operations ubifs_dir_operations = {
155612 .llseek = ubifs_dir_llseek,
155613 .release = ubifs_dir_release,
155614 .read = generic_read_dir,
155615 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/file.c linux-2.6.29-rc3.owrt/fs/ubifs/file.c
155616 --- linux-2.6.29.owrt/fs/ubifs/file.c 2009-05-10 22:04:39.000000000 +0200
155617 +++ linux-2.6.29-rc3.owrt/fs/ubifs/file.c 2009-05-10 23:48:29.000000000 +0200
155618 @@ -432,6 +432,7 @@
155619 int uninitialized_var(err), appending = !!(pos + len > inode->i_size);
155620 struct page *page;
155621
155622 +
155623 ubifs_assert(ubifs_inode(inode)->ui_size == inode->i_size);
155624
155625 if (unlikely(c->ro_media))
155626 @@ -1540,7 +1541,7 @@
155627 return 0;
155628 }
155629
155630 -const struct address_space_operations ubifs_file_address_operations = {
155631 +struct address_space_operations ubifs_file_address_operations = {
155632 .readpage = ubifs_readpage,
155633 .writepage = ubifs_writepage,
155634 .write_begin = ubifs_write_begin,
155635 @@ -1550,7 +1551,7 @@
155636 .releasepage = ubifs_releasepage,
155637 };
155638
155639 -const struct inode_operations ubifs_file_inode_operations = {
155640 +struct inode_operations ubifs_file_inode_operations = {
155641 .setattr = ubifs_setattr,
155642 .getattr = ubifs_getattr,
155643 #ifdef CONFIG_UBIFS_FS_XATTR
155644 @@ -1561,14 +1562,14 @@
155645 #endif
155646 };
155647
155648 -const struct inode_operations ubifs_symlink_inode_operations = {
155649 +struct inode_operations ubifs_symlink_inode_operations = {
155650 .readlink = generic_readlink,
155651 .follow_link = ubifs_follow_link,
155652 .setattr = ubifs_setattr,
155653 .getattr = ubifs_getattr,
155654 };
155655
155656 -const struct file_operations ubifs_file_operations = {
155657 +struct file_operations ubifs_file_operations = {
155658 .llseek = generic_file_llseek,
155659 .read = do_sync_read,
155660 .write = do_sync_write,
155661 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/gc.c linux-2.6.29-rc3.owrt/fs/ubifs/gc.c
155662 --- linux-2.6.29.owrt/fs/ubifs/gc.c 2009-05-10 22:04:39.000000000 +0200
155663 +++ linux-2.6.29-rc3.owrt/fs/ubifs/gc.c 2009-05-10 23:48:29.000000000 +0200
155664 @@ -31,26 +31,6 @@
155665 * to be reused. Garbage collection will cause the number of dirty index nodes
155666 * to grow, however sufficient space is reserved for the index to ensure the
155667 * commit will never run out of space.
155668 - *
155669 - * Notes about dead watermark. At current UBIFS implementation we assume that
155670 - * LEBs which have less than @c->dead_wm bytes of free + dirty space are full
155671 - * and not worth garbage-collecting. The dead watermark is one min. I/O unit
155672 - * size, or min. UBIFS node size, depending on what is greater. Indeed, UBIFS
155673 - * Garbage Collector has to synchronize the GC head's write buffer before
155674 - * returning, so this is about wasting one min. I/O unit. However, UBIFS GC can
155675 - * actually reclaim even very small pieces of dirty space by garbage collecting
155676 - * enough dirty LEBs, but we do not bother doing this at this implementation.
155677 - *
155678 - * Notes about dark watermark. The results of GC work depends on how big are
155679 - * the UBIFS nodes GC deals with. Large nodes make GC waste more space. Indeed,
155680 - * if GC move data from LEB A to LEB B and nodes in LEB A are large, GC would
155681 - * have to waste large pieces of free space at the end of LEB B, because nodes
155682 - * from LEB A would not fit. And the worst situation is when all nodes are of
155683 - * maximum size. So dark watermark is the amount of free + dirty space in LEB
155684 - * which are guaranteed to be reclaimable. If LEB has less space, the GC migh
155685 - * be unable to reclaim it. So, LEBs with free + dirty greater than dark
155686 - * watermark are "good" LEBs from GC's point of few. The other LEBs are not so
155687 - * good, and GC takes extra care when moving them.
155688 */
155689
155690 #include <linux/pagemap.h>
155691 @@ -401,7 +381,7 @@
155692
155693 /*
155694 * Don't release the LEB until after the next commit, because
155695 - * it may contain data which is needed for recovery. So
155696 + * it may contain date which is needed for recovery. So
155697 * although we freed this LEB, it will become usable only after
155698 * the commit.
155699 */
155700 @@ -830,9 +810,8 @@
155701 * ubifs_destroy_idx_gc - destroy idx_gc list.
155702 * @c: UBIFS file-system description object
155703 *
155704 - * This function destroys the @c->idx_gc list. It is called when unmounting
155705 - * so locks are not needed. Returns zero in case of success and a negative
155706 - * error code in case of failure.
155707 + * This function destroys the idx_gc list. It is called when unmounting or
155708 + * remounting read-only so locks are not needed.
155709 */
155710 void ubifs_destroy_idx_gc(struct ubifs_info *c)
155711 {
155712 @@ -845,6 +824,7 @@
155713 list_del(&idx_gc->list);
155714 kfree(idx_gc);
155715 }
155716 +
155717 }
155718
155719 /**
155720 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/io.c linux-2.6.29-rc3.owrt/fs/ubifs/io.c
155721 --- linux-2.6.29.owrt/fs/ubifs/io.c 2009-05-10 22:04:39.000000000 +0200
155722 +++ linux-2.6.29-rc3.owrt/fs/ubifs/io.c 2009-05-10 23:48:29.000000000 +0200
155723 @@ -29,7 +29,7 @@
155724 * would have been wasted for padding to the nearest minimal I/O unit boundary.
155725 * Instead, data first goes to the write-buffer and is flushed when the
155726 * buffer is full or when it is not used for some time (by timer). This is
155727 - * similar to the mechanism is used by JFFS2.
155728 + * similarto the mechanism is used by JFFS2.
155729 *
155730 * Write-buffers are defined by 'struct ubifs_wbuf' objects and protected by
155731 * mutexes defined inside these objects. Since sometimes upper-level code
155732 @@ -75,7 +75,7 @@
155733 * @lnum: logical eraseblock number
155734 * @offs: offset within the logical eraseblock
155735 * @quiet: print no messages
155736 - * @must_chk_crc: indicates whether to always check the CRC
155737 + * @chk_crc: indicates whether to always check the CRC
155738 *
155739 * This function checks node magic number and CRC checksum. This function also
155740 * validates node length to prevent UBIFS from becoming crazy when an attacker
155741 @@ -83,17 +83,11 @@
155742 * node length in the common header could cause UBIFS to read memory outside of
155743 * allocated buffer when checking the CRC checksum.
155744 *
155745 - * This function may skip data nodes CRC checking if @c->no_chk_data_crc is
155746 - * true, which is controlled by corresponding UBIFS mount option. However, if
155747 - * @must_chk_crc is true, then @c->no_chk_data_crc is ignored and CRC is
155748 - * checked. Similarly, if @c->always_chk_crc is true, @c->no_chk_data_crc is
155749 - * ignored and CRC is checked.
155750 - *
155751 - * This function returns zero in case of success and %-EUCLEAN in case of bad
155752 - * CRC or magic.
155753 + * This function returns zero in case of success %-EUCLEAN in case of bad CRC
155754 + * or magic.
155755 */
155756 int ubifs_check_node(const struct ubifs_info *c, const void *buf, int lnum,
155757 - int offs, int quiet, int must_chk_crc)
155758 + int offs, int quiet, int chk_crc)
155759 {
155760 int err = -EINVAL, type, node_len;
155761 uint32_t crc, node_crc, magic;
155762 @@ -129,9 +123,9 @@
155763 node_len > c->ranges[type].max_len)
155764 goto out_len;
155765
155766 - if (!must_chk_crc && type == UBIFS_DATA_NODE && !c->always_chk_crc &&
155767 - c->no_chk_data_crc)
155768 - return 0;
155769 + if (!chk_crc && type == UBIFS_DATA_NODE && !c->always_chk_crc)
155770 + if (c->no_chk_data_crc)
155771 + return 0;
155772
155773 crc = crc32(UBIFS_CRC32_INIT, buf + 8, node_len - 8);
155774 node_crc = le32_to_cpu(ch->crc);
155775 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/journal.c linux-2.6.29-rc3.owrt/fs/ubifs/journal.c
155776 --- linux-2.6.29.owrt/fs/ubifs/journal.c 2009-05-10 22:04:39.000000000 +0200
155777 +++ linux-2.6.29-rc3.owrt/fs/ubifs/journal.c 2009-05-10 23:48:29.000000000 +0200
155778 @@ -208,7 +208,7 @@
155779 offs = 0;
155780
155781 out:
155782 - err = ubifs_wbuf_seek_nolock(wbuf, lnum, offs, wbuf->dtype);
155783 + err = ubifs_wbuf_seek_nolock(wbuf, lnum, offs, UBI_SHORTTERM);
155784 if (err)
155785 goto out_unlock;
155786
155787 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/lprops.c linux-2.6.29-rc3.owrt/fs/ubifs/lprops.c
155788 --- linux-2.6.29.owrt/fs/ubifs/lprops.c 2009-05-10 22:04:39.000000000 +0200
155789 +++ linux-2.6.29-rc3.owrt/fs/ubifs/lprops.c 2009-05-10 23:48:29.000000000 +0200
155790 @@ -635,10 +635,10 @@
155791 * @c: UBIFS file-system description object
155792 * @st: return statistics
155793 */
155794 -void ubifs_get_lp_stats(struct ubifs_info *c, struct ubifs_lp_stats *lst)
155795 +void ubifs_get_lp_stats(struct ubifs_info *c, struct ubifs_lp_stats *st)
155796 {
155797 spin_lock(&c->space_lock);
155798 - memcpy(lst, &c->lst, sizeof(struct ubifs_lp_stats));
155799 + memcpy(st, &c->lst, sizeof(struct ubifs_lp_stats));
155800 spin_unlock(&c->space_lock);
155801 }
155802
155803 @@ -678,9 +678,6 @@
155804
155805 out:
155806 ubifs_release_lprops(c);
155807 - if (err)
155808 - ubifs_err("cannot change properties of LEB %d, error %d",
155809 - lnum, err);
155810 return err;
155811 }
155812
155813 @@ -717,9 +714,6 @@
155814
155815 out:
155816 ubifs_release_lprops(c);
155817 - if (err)
155818 - ubifs_err("cannot update properties of LEB %d, error %d",
155819 - lnum, err);
155820 return err;
155821 }
155822
155823 @@ -743,8 +737,6 @@
155824 lpp = ubifs_lpt_lookup(c, lnum);
155825 if (IS_ERR(lpp)) {
155826 err = PTR_ERR(lpp);
155827 - ubifs_err("cannot read properties of LEB %d, error %d",
155828 - lnum, err);
155829 goto out;
155830 }
155831
155832 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/lpt_commit.c linux-2.6.29-rc3.owrt/fs/ubifs/lpt_commit.c
155833 --- linux-2.6.29.owrt/fs/ubifs/lpt_commit.c 2009-05-10 22:04:39.000000000 +0200
155834 +++ linux-2.6.29-rc3.owrt/fs/ubifs/lpt_commit.c 2009-05-10 23:48:29.000000000 +0200
155835 @@ -556,23 +556,23 @@
155836 }
155837
155838 /**
155839 - * next_pnode_to_dirty - find next pnode to dirty.
155840 + * next_pnode - find next pnode.
155841 * @c: UBIFS file-system description object
155842 * @pnode: pnode
155843 *
155844 - * This function returns the next pnode to dirty or %NULL if there are no more
155845 - * pnodes. Note that pnodes that have never been written (lnum == 0) are
155846 - * skipped.
155847 + * This function returns the next pnode or %NULL if there are no more pnodes.
155848 */
155849 -static struct ubifs_pnode *next_pnode_to_dirty(struct ubifs_info *c,
155850 - struct ubifs_pnode *pnode)
155851 +static struct ubifs_pnode *next_pnode(struct ubifs_info *c,
155852 + struct ubifs_pnode *pnode)
155853 {
155854 struct ubifs_nnode *nnode;
155855 int iip;
155856
155857 /* Try to go right */
155858 nnode = pnode->parent;
155859 - for (iip = pnode->iip + 1; iip < UBIFS_LPT_FANOUT; iip++) {
155860 + iip = pnode->iip + 1;
155861 + if (iip < UBIFS_LPT_FANOUT) {
155862 + /* We assume here that LEB zero is never an LPT LEB */
155863 if (nnode->nbranch[iip].lnum)
155864 return ubifs_get_pnode(c, nnode, iip);
155865 }
155866 @@ -583,11 +583,8 @@
155867 nnode = nnode->parent;
155868 if (!nnode)
155869 return NULL;
155870 - for (; iip < UBIFS_LPT_FANOUT; iip++) {
155871 - if (nnode->nbranch[iip].lnum)
155872 - break;
155873 - }
155874 - } while (iip >= UBIFS_LPT_FANOUT);
155875 + /* We assume here that LEB zero is never an LPT LEB */
155876 + } while (iip >= UBIFS_LPT_FANOUT || !nnode->nbranch[iip].lnum);
155877
155878 /* Go right */
155879 nnode = ubifs_get_nnode(c, nnode, iip);
155880 @@ -596,29 +593,12 @@
155881
155882 /* Go down to level 1 */
155883 while (nnode->level > 1) {
155884 - for (iip = 0; iip < UBIFS_LPT_FANOUT; iip++) {
155885 - if (nnode->nbranch[iip].lnum)
155886 - break;
155887 - }
155888 - if (iip >= UBIFS_LPT_FANOUT) {
155889 - /*
155890 - * Should not happen, but we need to keep going
155891 - * if it does.
155892 - */
155893 - iip = 0;
155894 - }
155895 - nnode = ubifs_get_nnode(c, nnode, iip);
155896 + nnode = ubifs_get_nnode(c, nnode, 0);
155897 if (IS_ERR(nnode))
155898 return (void *)nnode;
155899 }
155900
155901 - for (iip = 0; iip < UBIFS_LPT_FANOUT; iip++)
155902 - if (nnode->nbranch[iip].lnum)
155903 - break;
155904 - if (iip >= UBIFS_LPT_FANOUT)
155905 - /* Should not happen, but we need to keep going if it does */
155906 - iip = 0;
155907 - return ubifs_get_pnode(c, nnode, iip);
155908 + return ubifs_get_pnode(c, nnode, 0);
155909 }
155910
155911 /**
155912 @@ -708,7 +688,7 @@
155913 pnode = pnode_lookup(c, 0);
155914 while (pnode) {
155915 do_make_pnode_dirty(c, pnode);
155916 - pnode = next_pnode_to_dirty(c, pnode);
155917 + pnode = next_pnode(c, pnode);
155918 if (IS_ERR(pnode))
155919 return PTR_ERR(pnode);
155920 }
155921 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/master.c linux-2.6.29-rc3.owrt/fs/ubifs/master.c
155922 --- linux-2.6.29.owrt/fs/ubifs/master.c 2009-05-10 22:04:39.000000000 +0200
155923 +++ linux-2.6.29-rc3.owrt/fs/ubifs/master.c 2009-05-10 23:48:29.000000000 +0200
155924 @@ -354,7 +354,7 @@
155925 int err, lnum, offs, len;
155926
155927 if (c->ro_media)
155928 - return -EROFS;
155929 + return -EINVAL;
155930
155931 lnum = UBIFS_MST_LNUM;
155932 offs = c->mst_offs + c->mst_node_alsz;
155933 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/orphan.c linux-2.6.29-rc3.owrt/fs/ubifs/orphan.c
155934 --- linux-2.6.29.owrt/fs/ubifs/orphan.c 2009-05-10 22:04:39.000000000 +0200
155935 +++ linux-2.6.29-rc3.owrt/fs/ubifs/orphan.c 2009-05-10 23:48:29.000000000 +0200
155936 @@ -46,7 +46,7 @@
155937 * Orphans are accumulated in a rb-tree. When an inode's link count drops to
155938 * zero, the inode number is added to the rb-tree. It is removed from the tree
155939 * when the inode is deleted. Any new orphans that are in the orphan tree when
155940 - * the commit is run, are written to the orphan area in 1 or more orphan nodes.
155941 + * the commit is run, are written to the orphan area in 1 or more orph nodes.
155942 * If the orphan area is full, it is consolidated to make space. There is
155943 * always enough space because validation prevents the user from creating more
155944 * than the maximum number of orphans allowed.
155945 @@ -231,7 +231,7 @@
155946 }
155947
155948 /**
155949 - * do_write_orph_node - write a node to the orphan head.
155950 + * do_write_orph_node - write a node
155951 * @c: UBIFS file-system description object
155952 * @len: length of node
155953 * @atomic: write atomically
155954 @@ -264,11 +264,11 @@
155955 }
155956
155957 /**
155958 - * write_orph_node - write an orphan node.
155959 + * write_orph_node - write an orph node
155960 * @c: UBIFS file-system description object
155961 * @atomic: write atomically
155962 *
155963 - * This function builds an orphan node from the cnext list and writes it to the
155964 + * This function builds an orph node from the cnext list and writes it to the
155965 * orphan head. On success, %0 is returned, otherwise a negative error code
155966 * is returned.
155967 */
155968 @@ -326,11 +326,11 @@
155969 }
155970
155971 /**
155972 - * write_orph_nodes - write orphan nodes until there are no more to commit.
155973 + * write_orph_nodes - write orph nodes until there are no more to commit
155974 * @c: UBIFS file-system description object
155975 * @atomic: write atomically
155976 *
155977 - * This function writes orphan nodes for all the orphans to commit. On success,
155978 + * This function writes orph nodes for all the orphans to commit. On success,
155979 * %0 is returned, otherwise a negative error code is returned.
155980 */
155981 static int write_orph_nodes(struct ubifs_info *c, int atomic)
155982 @@ -478,14 +478,14 @@
155983 }
155984
155985 /**
155986 - * ubifs_clear_orphans - erase all LEBs used for orphans.
155987 + * clear_orphans - erase all LEBs used for orphans.
155988 * @c: UBIFS file-system description object
155989 *
155990 * If recovery is not required, then the orphans from the previous session
155991 * are not needed. This function locates the LEBs used to record
155992 * orphans, and un-maps them.
155993 */
155994 -int ubifs_clear_orphans(struct ubifs_info *c)
155995 +static int clear_orphans(struct ubifs_info *c)
155996 {
155997 int lnum, err;
155998
155999 @@ -547,9 +547,9 @@
156000 * do_kill_orphans - remove orphan inodes from the index.
156001 * @c: UBIFS file-system description object
156002 * @sleb: scanned LEB
156003 - * @last_cmt_no: cmt_no of last orphan node read is passed and returned here
156004 + * @last_cmt_no: cmt_no of last orph node read is passed and returned here
156005 * @outofdate: whether the LEB is out of date is returned here
156006 - * @last_flagged: whether the end orphan node is encountered
156007 + * @last_flagged: whether the end orph node is encountered
156008 *
156009 * This function is a helper to the 'kill_orphans()' function. It goes through
156010 * every orphan node in a LEB and for every inode number recorded, removes
156011 @@ -580,8 +580,8 @@
156012 /*
156013 * The commit number on the master node may be less, because
156014 * of a failed commit. If there are several failed commits in a
156015 - * row, the commit number written on orphan nodes will continue
156016 - * to increase (because the commit number is adjusted here) even
156017 + * row, the commit number written on orph nodes will continue to
156018 + * increase (because the commit number is adjusted here) even
156019 * though the commit number on the master node stays the same
156020 * because the master node has not been re-written.
156021 */
156022 @@ -589,9 +589,9 @@
156023 c->cmt_no = cmt_no;
156024 if (cmt_no < *last_cmt_no && *last_flagged) {
156025 /*
156026 - * The last orphan node had a higher commit number and
156027 - * was flagged as the last written for that commit
156028 - * number. That makes this orphan node, out of date.
156029 + * The last orph node had a higher commit number and was
156030 + * flagged as the last written for that commit number.
156031 + * That makes this orph node, out of date.
156032 */
156033 if (!first) {
156034 ubifs_err("out of order commit number %llu in "
156035 @@ -658,10 +658,10 @@
156036 /*
156037 * Orph nodes always start at c->orph_first and are written to each
156038 * successive LEB in turn. Generally unused LEBs will have been unmapped
156039 - * but may contain out of date orphan nodes if the unmap didn't go
156040 - * through. In addition, the last orphan node written for each commit is
156041 + * but may contain out of date orph nodes if the unmap didn't go
156042 + * through. In addition, the last orph node written for each commit is
156043 * marked (top bit of orph->cmt_no is set to 1). It is possible that
156044 - * there are orphan nodes from the next commit (i.e. the commit did not
156045 + * there are orph nodes from the next commit (i.e. the commit did not
156046 * complete successfully). In that case, no orphans will have been lost
156047 * due to the way that orphans are written, and any orphans added will
156048 * be valid orphans anyway and so can be deleted.
156049 @@ -718,7 +718,7 @@
156050 if (unclean)
156051 err = kill_orphans(c);
156052 else if (!read_only)
156053 - err = ubifs_clear_orphans(c);
156054 + err = clear_orphans(c);
156055
156056 return err;
156057 }
156058 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/super.c linux-2.6.29-rc3.owrt/fs/ubifs/super.c
156059 --- linux-2.6.29.owrt/fs/ubifs/super.c 2009-05-10 22:04:39.000000000 +0200
156060 +++ linux-2.6.29-rc3.owrt/fs/ubifs/super.c 2009-05-10 23:48:29.000000000 +0200
156061 @@ -397,7 +397,6 @@
156062 buf->f_namelen = UBIFS_MAX_NLEN;
156063 buf->f_fsid.val[0] = le32_to_cpu(uuid[0]) ^ le32_to_cpu(uuid[2]);
156064 buf->f_fsid.val[1] = le32_to_cpu(uuid[1]) ^ le32_to_cpu(uuid[3]);
156065 - ubifs_assert(buf->f_bfree <= c->block_cnt);
156066 return 0;
156067 }
156068
156069 @@ -433,24 +432,33 @@
156070 int i, err;
156071 struct ubifs_info *c = sb->s_fs_info;
156072 struct writeback_control wbc = {
156073 - .sync_mode = WB_SYNC_ALL,
156074 + .sync_mode = wait ? WB_SYNC_ALL : WB_SYNC_NONE,
156075 .range_start = 0,
156076 .range_end = LLONG_MAX,
156077 .nr_to_write = LONG_MAX,
156078 };
156079
156080 /*
156081 - * Zero @wait is just an advisory thing to help the file system shove
156082 - * lots of data into the queues, and there will be the second
156083 + * Note by akpm about WB_SYNC_NONE used above: zero @wait is just an
156084 + * advisory thing to help the file system shove lots of data into the
156085 + * queues. If some gets missed then it'll be picked up on the second
156086 * '->sync_fs()' call, with non-zero @wait.
156087 */
156088 - if (!wait)
156089 - return 0;
156090
156091 if (sb->s_flags & MS_RDONLY)
156092 return 0;
156093
156094 /*
156095 + * Synchronize write buffers, because 'ubifs_run_commit()' does not
156096 + * do this if it waits for an already running commit.
156097 + */
156098 + for (i = 0; i < c->jhead_cnt; i++) {
156099 + err = ubifs_wbuf_sync(&c->jheads[i].wbuf);
156100 + if (err)
156101 + return err;
156102 + }
156103 +
156104 + /*
156105 * VFS calls '->sync_fs()' before synchronizing all dirty inodes and
156106 * pages, so synchronize them first, then commit the journal. Strictly
156107 * speaking, it is not necessary to commit the journal here,
156108 @@ -461,16 +469,6 @@
156109 */
156110 generic_sync_sb_inodes(sb, &wbc);
156111
156112 - /*
156113 - * Synchronize write buffers, because 'ubifs_run_commit()' does not
156114 - * do this if it waits for an already running commit.
156115 - */
156116 - for (i = 0; i < c->jhead_cnt; i++) {
156117 - err = ubifs_wbuf_sync(&c->jheads[i].wbuf);
156118 - if (err)
156119 - return err;
156120 - }
156121 -
156122 err = ubifs_run_commit(c);
156123 if (err)
156124 return err;
156125 @@ -574,8 +572,15 @@
156126 c->ranges[UBIFS_IDX_NODE].max_len = INT_MAX;
156127
156128 /*
156129 - * Initialize dead and dark LEB space watermarks. See gc.c for comments
156130 - * about these values.
156131 + * Initialize dead and dark LEB space watermarks.
156132 + *
156133 + * Dead space is the space which cannot be used. Its watermark is
156134 + * equivalent to min. I/O unit or minimum node size if it is greater
156135 + * then min. I/O unit.
156136 + *
156137 + * Dark space is the space which might be used, or might not, depending
156138 + * on which node should be written to the LEB. Its watermark is
156139 + * equivalent to maximum UBIFS node size.
156140 */
156141 c->dead_wm = ALIGN(MIN_WRITE_SZ, c->min_io_size);
156142 c->dark_wm = ALIGN(UBIFS_MAX_NODE_SZ, c->min_io_size);
156143 @@ -736,12 +741,12 @@
156144 * take_gc_lnum - reserve GC LEB.
156145 * @c: UBIFS file-system description object
156146 *
156147 - * This function ensures that the LEB reserved for garbage collection is marked
156148 - * as "taken" in lprops. We also have to set free space to LEB size and dirty
156149 - * space to zero, because lprops may contain out-of-date information if the
156150 - * file-system was un-mounted before it has been committed. This function
156151 - * returns zero in case of success and a negative error code in case of
156152 - * failure.
156153 + * This function ensures that the LEB reserved for garbage collection is
156154 + * unmapped and is marked as "taken" in lprops. We also have to set free space
156155 + * to LEB size and dirty space to zero, because lprops may contain out-of-date
156156 + * information if the file-system was un-mounted before it has been committed.
156157 + * This function returns zero in case of success and a negative error code in
156158 + * case of failure.
156159 */
156160 static int take_gc_lnum(struct ubifs_info *c)
156161 {
156162 @@ -752,6 +757,10 @@
156163 return -EINVAL;
156164 }
156165
156166 + err = ubifs_leb_unmap(c, c->gc_lnum);
156167 + if (err)
156168 + return err;
156169 +
156170 /* And we have to tell lprops that this LEB is taken */
156171 err = ubifs_change_one_lp(c, c->gc_lnum, c->leb_size, 0,
156172 LPROPS_TAKEN, 0, 0);
156173 @@ -957,16 +966,13 @@
156174
156175 token = match_token(p, tokens, args);
156176 switch (token) {
156177 - /*
156178 - * %Opt_fast_unmount and %Opt_norm_unmount options are ignored.
156179 - * We accepte them in order to be backware-compatible. But this
156180 - * should be removed at some point.
156181 - */
156182 case Opt_fast_unmount:
156183 c->mount_opts.unmount_mode = 2;
156184 + c->fast_unmount = 1;
156185 break;
156186 case Opt_norm_unmount:
156187 c->mount_opts.unmount_mode = 1;
156188 + c->fast_unmount = 0;
156189 break;
156190 case Opt_bulk_read:
156191 c->mount_opts.bulk_read = 2;
156192 @@ -1088,7 +1094,12 @@
156193 ubifs_err("insufficient free space to mount in read/write mode");
156194 dbg_dump_budg(c);
156195 dbg_dump_lprops(c);
156196 - return -ENOSPC;
156197 + /*
156198 + * We return %-EINVAL instead of %-ENOSPC because it seems to
156199 + * be the closest error code mentioned in the mount function
156200 + * documentation.
156201 + */
156202 + return -EINVAL;
156203 }
156204 return 0;
156205 }
156206 @@ -1275,19 +1286,10 @@
156207 if (err)
156208 goto out_orphans;
156209 err = ubifs_rcvry_gc_commit(c);
156210 - } else {
156211 + } else
156212 err = take_gc_lnum(c);
156213 - if (err)
156214 - goto out_orphans;
156215 -
156216 - /*
156217 - * GC LEB may contain garbage if there was an unclean
156218 - * reboot, and it should be un-mapped.
156219 - */
156220 - err = ubifs_leb_unmap(c, c->gc_lnum);
156221 - if (err)
156222 - return err;
156223 - }
156224 + if (err)
156225 + goto out_orphans;
156226
156227 err = dbg_check_lprops(c);
156228 if (err)
156229 @@ -1296,16 +1298,6 @@
156230 err = ubifs_recover_size(c);
156231 if (err)
156232 goto out_orphans;
156233 - } else {
156234 - /*
156235 - * Even if we mount read-only, we have to set space in GC LEB
156236 - * to proper value because this affects UBIFS free space
156237 - * reporting. We do not want to have a situation when
156238 - * re-mounting from R/O to R/W changes amount of free space.
156239 - */
156240 - err = take_gc_lnum(c);
156241 - if (err)
156242 - goto out_orphans;
156243 }
156244
156245 spin_lock(&ubifs_infos_lock);
156246 @@ -1318,17 +1310,14 @@
156247 else {
156248 c->need_recovery = 0;
156249 ubifs_msg("recovery completed");
156250 - /* GC LEB has to be empty and taken at this point */
156251 - ubifs_assert(c->lst.taken_empty_lebs == 1);
156252 }
156253 - } else
156254 - ubifs_assert(c->lst.taken_empty_lebs == 1);
156255 + }
156256
156257 - err = dbg_check_filesystem(c);
156258 + err = dbg_debugfs_init_fs(c);
156259 if (err)
156260 goto out_infos;
156261
156262 - err = dbg_debugfs_init_fs(c);
156263 + err = dbg_check_filesystem(c);
156264 if (err)
156265 goto out_infos;
156266
156267 @@ -1362,6 +1351,7 @@
156268 c->uuid[4], c->uuid[5], c->uuid[6], c->uuid[7],
156269 c->uuid[8], c->uuid[9], c->uuid[10], c->uuid[11],
156270 c->uuid[12], c->uuid[13], c->uuid[14], c->uuid[15]);
156271 + dbg_msg("fast unmount: %d", c->fast_unmount);
156272 dbg_msg("big_lpt %d", c->big_lpt);
156273 dbg_msg("log LEBs: %d (%d - %d)",
156274 c->log_lebs, UBIFS_LOG_LNUM, c->log_last);
156275 @@ -1485,8 +1475,10 @@
156276 {
156277 int err, lnum;
156278
156279 + if (c->ro_media)
156280 + return -EINVAL;
156281 +
156282 mutex_lock(&c->umount_mutex);
156283 - dbg_save_space_info(c);
156284 c->remounting_rw = 1;
156285 c->always_chk_crc = 1;
156286
156287 @@ -1522,12 +1514,6 @@
156288 err = ubifs_recover_inl_heads(c, c->sbuf);
156289 if (err)
156290 goto out;
156291 - } else {
156292 - /* A readonly mount is not allowed to have orphans */
156293 - ubifs_assert(c->tot_orphans == 0);
156294 - err = ubifs_clear_orphans(c);
156295 - if (err)
156296 - goto out;
156297 }
156298
156299 if (!(c->mst_node->flags & cpu_to_le32(UBIFS_MST_DIRTY))) {
156300 @@ -1583,7 +1569,7 @@
156301 if (c->need_recovery)
156302 err = ubifs_rcvry_gc_commit(c);
156303 else
156304 - err = ubifs_leb_unmap(c, c->gc_lnum);
156305 + err = take_gc_lnum(c);
156306 if (err)
156307 goto out;
156308
156309 @@ -1596,9 +1582,8 @@
156310 c->vfs_sb->s_flags &= ~MS_RDONLY;
156311 c->remounting_rw = 0;
156312 c->always_chk_crc = 0;
156313 - err = dbg_check_space_info(c);
156314 mutex_unlock(&c->umount_mutex);
156315 - return err;
156316 + return 0;
156317
156318 out:
156319 vfree(c->orph_buf);
156320 @@ -1618,18 +1603,43 @@
156321 }
156322
156323 /**
156324 + * commit_on_unmount - commit the journal when un-mounting.
156325 + * @c: UBIFS file-system description object
156326 + *
156327 + * This function is called during un-mounting and re-mounting, and it commits
156328 + * the journal unless the "fast unmount" mode is enabled.
156329 + */
156330 +static void commit_on_unmount(struct ubifs_info *c)
156331 +{
156332 + struct super_block *sb = c->vfs_sb;
156333 + long long bud_bytes;
156334 +
156335 + /*
156336 + * This function is called before the background thread is stopped, so
156337 + * we may race with ongoing commit, which means we have to take
156338 + * @c->bud_lock to access @c->bud_bytes.
156339 + */
156340 + spin_lock(&c->buds_lock);
156341 + bud_bytes = c->bud_bytes;
156342 + spin_unlock(&c->buds_lock);
156343 +
156344 + if (!c->fast_unmount && !(sb->s_flags & MS_RDONLY) && bud_bytes)
156345 + ubifs_run_commit(c);
156346 +}
156347 +
156348 +/**
156349 * ubifs_remount_ro - re-mount in read-only mode.
156350 * @c: UBIFS file-system description object
156351 *
156352 - * We assume VFS has stopped writing. Possibly the background thread could be
156353 - * running a commit, however kthread_stop will wait in that case.
156354 + * We rely on VFS to have stopped writing. Possibly the background thread could
156355 + * be running a commit, however kthread_stop will wait in that case.
156356 */
156357 static void ubifs_remount_ro(struct ubifs_info *c)
156358 {
156359 int i, err;
156360
156361 ubifs_assert(!c->need_recovery);
156362 - ubifs_assert(!(c->vfs_sb->s_flags & MS_RDONLY));
156363 + commit_on_unmount(c);
156364
156365 mutex_lock(&c->umount_mutex);
156366 if (c->bgt) {
156367 @@ -1637,29 +1647,27 @@
156368 c->bgt = NULL;
156369 }
156370
156371 - dbg_save_space_info(c);
156372 -
156373 for (i = 0; i < c->jhead_cnt; i++) {
156374 ubifs_wbuf_sync(&c->jheads[i].wbuf);
156375 del_timer_sync(&c->jheads[i].wbuf.timer);
156376 }
156377
156378 - c->mst_node->flags &= ~cpu_to_le32(UBIFS_MST_DIRTY);
156379 - c->mst_node->flags |= cpu_to_le32(UBIFS_MST_NO_ORPHS);
156380 - c->mst_node->gc_lnum = cpu_to_le32(c->gc_lnum);
156381 - err = ubifs_write_master(c);
156382 - if (err)
156383 - ubifs_ro_mode(c, err);
156384 + if (!c->ro_media) {
156385 + c->mst_node->flags &= ~cpu_to_le32(UBIFS_MST_DIRTY);
156386 + c->mst_node->flags |= cpu_to_le32(UBIFS_MST_NO_ORPHS);
156387 + c->mst_node->gc_lnum = cpu_to_le32(c->gc_lnum);
156388 + err = ubifs_write_master(c);
156389 + if (err)
156390 + ubifs_ro_mode(c, err);
156391 + }
156392
156393 + ubifs_destroy_idx_gc(c);
156394 free_wbufs(c);
156395 vfree(c->orph_buf);
156396 c->orph_buf = NULL;
156397 vfree(c->ileb_buf);
156398 c->ileb_buf = NULL;
156399 ubifs_lpt_free(c, 1);
156400 - err = dbg_check_space_info(c);
156401 - if (err)
156402 - ubifs_ro_mode(c, err);
156403 mutex_unlock(&c->umount_mutex);
156404 }
156405
156406 @@ -1752,20 +1760,11 @@
156407 }
156408
156409 if ((sb->s_flags & MS_RDONLY) && !(*flags & MS_RDONLY)) {
156410 - if (c->ro_media) {
156411 - ubifs_msg("cannot re-mount due to prior errors");
156412 - return -EROFS;
156413 - }
156414 err = ubifs_remount_rw(c);
156415 if (err)
156416 return err;
156417 - } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY)) {
156418 - if (c->ro_media) {
156419 - ubifs_msg("cannot re-mount due to prior errors");
156420 - return -EROFS;
156421 - }
156422 + } else if (!(sb->s_flags & MS_RDONLY) && (*flags & MS_RDONLY))
156423 ubifs_remount_ro(c);
156424 - }
156425
156426 if (c->bulk_read == 1)
156427 bu_init(c);
156428 @@ -1775,11 +1774,10 @@
156429 c->bu.buf = NULL;
156430 }
156431
156432 - ubifs_assert(c->lst.taken_empty_lebs == 1);
156433 return 0;
156434 }
156435
156436 -const struct super_operations ubifs_super_operations = {
156437 +struct super_operations ubifs_super_operations = {
156438 .alloc_inode = ubifs_alloc_inode,
156439 .destroy_inode = ubifs_destroy_inode,
156440 .put_super = ubifs_put_super,
156441 @@ -2046,6 +2044,15 @@
156442
156443 static void ubifs_kill_sb(struct super_block *sb)
156444 {
156445 + struct ubifs_info *c = sb->s_fs_info;
156446 +
156447 + /*
156448 + * We do 'commit_on_unmount()' here instead of 'ubifs_put_super()'
156449 + * in order to be outside BKL.
156450 + */
156451 + if (sb->s_root)
156452 + commit_on_unmount(c);
156453 + /* The un-mount routine is actually done in put_super() */
156454 generic_shutdown_super(sb);
156455 }
156456
156457 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/tnc.c linux-2.6.29-rc3.owrt/fs/ubifs/tnc.c
156458 --- linux-2.6.29.owrt/fs/ubifs/tnc.c 2009-05-10 22:04:39.000000000 +0200
156459 +++ linux-2.6.29-rc3.owrt/fs/ubifs/tnc.c 2009-05-10 23:48:29.000000000 +0200
156460 @@ -443,11 +443,6 @@
156461 * This function performs that same function as ubifs_read_node except that
156462 * it does not require that there is actually a node present and instead
156463 * the return code indicates if a node was read.
156464 - *
156465 - * Note, this function does not check CRC of data nodes if @c->no_chk_data_crc
156466 - * is true (it is controlled by corresponding mount option). However, if
156467 - * @c->always_chk_crc is true, @c->no_chk_data_crc is ignored and CRC is always
156468 - * checked.
156469 */
156470 static int try_read_node(const struct ubifs_info *c, void *buf, int type,
156471 int len, int lnum, int offs)
156472 @@ -475,8 +470,9 @@
156473 if (node_len != len)
156474 return 0;
156475
156476 - if (type == UBIFS_DATA_NODE && !c->always_chk_crc && c->no_chk_data_crc)
156477 - return 1;
156478 + if (type == UBIFS_DATA_NODE && !c->always_chk_crc)
156479 + if (c->no_chk_data_crc)
156480 + return 0;
156481
156482 crc = crc32(UBIFS_CRC32_INIT, buf + 8, node_len - 8);
156483 node_crc = le32_to_cpu(ch->crc);
156484 @@ -1510,7 +1506,7 @@
156485 *
156486 * Note, if the bulk-read buffer length (@bu->buf_len) is known, this function
156487 * makes sure bulk-read nodes fit the buffer. Otherwise, this function prepares
156488 - * maximum possible amount of nodes for bulk-read.
156489 + * maxumum possible amount of nodes for bulk-read.
156490 */
156491 int ubifs_tnc_get_bu_keys(struct ubifs_info *c, struct bu_info *bu)
156492 {
156493 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ubifs/ubifs.h linux-2.6.29-rc3.owrt/fs/ubifs/ubifs.h
156494 --- linux-2.6.29.owrt/fs/ubifs/ubifs.h 2009-05-10 22:04:39.000000000 +0200
156495 +++ linux-2.6.29-rc3.owrt/fs/ubifs/ubifs.h 2009-05-10 23:48:29.000000000 +0200
156496 @@ -426,9 +426,9 @@
156497 * LEB properties flags.
156498 *
156499 * LPROPS_UNCAT: not categorized
156500 - * LPROPS_DIRTY: dirty > free, dirty >= @c->dead_wm, not index
156501 + * LPROPS_DIRTY: dirty > 0, not index
156502 * LPROPS_DIRTY_IDX: dirty + free > @c->min_idx_node_sze and index
156503 - * LPROPS_FREE: free > 0, dirty < @c->dead_wm, not empty, not index
156504 + * LPROPS_FREE: free > 0, not empty, not index
156505 * LPROPS_HEAP_CNT: number of heaps used for storing categorized LEBs
156506 * LPROPS_EMPTY: LEB is empty, not taken
156507 * LPROPS_FREEABLE: free + dirty == leb_size, not index, not taken
156508 @@ -961,6 +961,7 @@
156509 * @cs_lock: commit state lock
156510 * @cmt_wq: wait queue to sleep on if the log is full and a commit is running
156511 *
156512 + * @fast_unmount: do not run journal commit before un-mounting
156513 * @big_lpt: flag that LPT is too big to write whole during commit
156514 * @no_chk_data_crc: do not check CRCs when reading data nodes (except during
156515 * recovery)
156516 @@ -1201,6 +1202,7 @@
156517 spinlock_t cs_lock;
156518 wait_queue_head_t cmt_wq;
156519
156520 + unsigned int fast_unmount:1;
156521 unsigned int big_lpt:1;
156522 unsigned int no_chk_data_crc:1;
156523 unsigned int bulk_read:1;
156524 @@ -1403,13 +1405,13 @@
156525 extern spinlock_t ubifs_infos_lock;
156526 extern atomic_long_t ubifs_clean_zn_cnt;
156527 extern struct kmem_cache *ubifs_inode_slab;
156528 -extern const struct super_operations ubifs_super_operations;
156529 -extern const struct address_space_operations ubifs_file_address_operations;
156530 -extern const struct file_operations ubifs_file_operations;
156531 -extern const struct inode_operations ubifs_file_inode_operations;
156532 -extern const struct file_operations ubifs_dir_operations;
156533 -extern const struct inode_operations ubifs_dir_inode_operations;
156534 -extern const struct inode_operations ubifs_symlink_inode_operations;
156535 +extern struct super_operations ubifs_super_operations;
156536 +extern struct address_space_operations ubifs_file_address_operations;
156537 +extern struct file_operations ubifs_file_operations;
156538 +extern struct inode_operations ubifs_file_inode_operations;
156539 +extern struct file_operations ubifs_dir_operations;
156540 +extern struct inode_operations ubifs_dir_inode_operations;
156541 +extern struct inode_operations ubifs_symlink_inode_operations;
156542 extern struct backing_dev_info ubifs_backing_dev_info;
156543 extern struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT];
156544
156545 @@ -1426,7 +1428,7 @@
156546 int ubifs_write_node(struct ubifs_info *c, void *node, int len, int lnum,
156547 int offs, int dtype);
156548 int ubifs_check_node(const struct ubifs_info *c, const void *buf, int lnum,
156549 - int offs, int quiet, int must_chk_crc);
156550 + int offs, int quiet, int chk_crc);
156551 void ubifs_prepare_node(struct ubifs_info *c, void *buf, int len, int pad);
156552 void ubifs_prep_grp_node(struct ubifs_info *c, void *node, int len, int last);
156553 int ubifs_io_init(struct ubifs_info *c);
156554 @@ -1493,7 +1495,6 @@
156555 void ubifs_cancel_ino_op(struct ubifs_info *c, struct inode *inode,
156556 struct ubifs_budget_req *req);
156557 long long ubifs_get_free_space(struct ubifs_info *c);
156558 -long long ubifs_get_free_space_nolock(struct ubifs_info *c);
156559 int ubifs_calc_min_idx_lebs(struct ubifs_info *c);
156560 void ubifs_convert_page_budget(struct ubifs_info *c);
156561 long long ubifs_reported_space(const struct ubifs_info *c, long long free);
156562 @@ -1602,7 +1603,6 @@
156563 int ubifs_orphan_start_commit(struct ubifs_info *c);
156564 int ubifs_orphan_end_commit(struct ubifs_info *c);
156565 int ubifs_mount_orphans(struct ubifs_info *c, int unclean, int read_only);
156566 -int ubifs_clear_orphans(struct ubifs_info *c);
156567
156568 /* lpt.c */
156569 int ubifs_calc_lpt_geom(struct ubifs_info *c);
156570 @@ -1646,7 +1646,7 @@
156571 const struct ubifs_lprops *lp,
156572 int free, int dirty, int flags,
156573 int idx_gc_cnt);
156574 -void ubifs_get_lp_stats(struct ubifs_info *c, struct ubifs_lp_stats *lst);
156575 +void ubifs_get_lp_stats(struct ubifs_info *c, struct ubifs_lp_stats *stats);
156576 void ubifs_add_to_cat(struct ubifs_info *c, struct ubifs_lprops *lprops,
156577 int cat);
156578 void ubifs_replace_cat(struct ubifs_info *c, struct ubifs_lprops *old_lprops,
156579 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/ufs/super.c linux-2.6.29-rc3.owrt/fs/ufs/super.c
156580 --- linux-2.6.29.owrt/fs/ufs/super.c 2009-05-10 22:04:39.000000000 +0200
156581 +++ linux-2.6.29-rc3.owrt/fs/ufs/super.c 2009-05-10 23:48:29.000000000 +0200
156582 @@ -41,7 +41,7 @@
156583 * Stefan Reinauer <stepan@home.culture.mipt.ru>
156584 *
156585 * Module usage counts added on 96/04/29 by
156586 - * Gertjan van Wingerde <gwingerde@gmail.com>
156587 + * Gertjan van Wingerde <gertjan@cs.vu.nl>
156588 *
156589 * Clean swab support on 19970406 by
156590 * Francois-Rene Rideau <fare@tunes.org>
156591 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_buf.c linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_buf.c
156592 --- linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_buf.c 2009-05-10 22:04:39.000000000 +0200
156593 +++ linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_buf.c 2009-05-10 23:48:29.000000000 +0200
156594 @@ -34,12 +34,6 @@
156595 #include <linux/backing-dev.h>
156596 #include <linux/freezer.h>
156597
156598 -#include "xfs_sb.h"
156599 -#include "xfs_inum.h"
156600 -#include "xfs_ag.h"
156601 -#include "xfs_dmapi.h"
156602 -#include "xfs_mount.h"
156603 -
156604 static kmem_zone_t *xfs_buf_zone;
156605 STATIC int xfsbufd(void *);
156606 STATIC int xfsbufd_wakeup(int, gfp_t);
156607 @@ -172,75 +166,6 @@
156608 }
156609
156610 /*
156611 - * Mapping of multi-page buffers into contiguous virtual space
156612 - */
156613 -
156614 -typedef struct a_list {
156615 - void *vm_addr;
156616 - struct a_list *next;
156617 -} a_list_t;
156618 -
156619 -static a_list_t *as_free_head;
156620 -static int as_list_len;
156621 -static DEFINE_SPINLOCK(as_lock);
156622 -
156623 -/*
156624 - * Try to batch vunmaps because they are costly.
156625 - */
156626 -STATIC void
156627 -free_address(
156628 - void *addr)
156629 -{
156630 - a_list_t *aentry;
156631 -
156632 -#ifdef CONFIG_XEN
156633 - /*
156634 - * Xen needs to be able to make sure it can get an exclusive
156635 - * RO mapping of pages it wants to turn into a pagetable. If
156636 - * a newly allocated page is also still being vmap()ed by xfs,
156637 - * it will cause pagetable construction to fail. This is a
156638 - * quick workaround to always eagerly unmap pages so that Xen
156639 - * is happy.
156640 - */
156641 - vunmap(addr);
156642 - return;
156643 -#endif
156644 -
156645 - aentry = kmalloc(sizeof(a_list_t), GFP_NOWAIT);
156646 - if (likely(aentry)) {
156647 - spin_lock(&as_lock);
156648 - aentry->next = as_free_head;
156649 - aentry->vm_addr = addr;
156650 - as_free_head = aentry;
156651 - as_list_len++;
156652 - spin_unlock(&as_lock);
156653 - } else {
156654 - vunmap(addr);
156655 - }
156656 -}
156657 -
156658 -STATIC void
156659 -purge_addresses(void)
156660 -{
156661 - a_list_t *aentry, *old;
156662 -
156663 - if (as_free_head == NULL)
156664 - return;
156665 -
156666 - spin_lock(&as_lock);
156667 - aentry = as_free_head;
156668 - as_free_head = NULL;
156669 - as_list_len = 0;
156670 - spin_unlock(&as_lock);
156671 -
156672 - while ((old = aentry) != NULL) {
156673 - vunmap(aentry->vm_addr);
156674 - aentry = aentry->next;
156675 - kfree(old);
156676 - }
156677 -}
156678 -
156679 -/*
156680 * Internal xfs_buf_t object manipulation
156681 */
156682
156683 @@ -339,7 +264,7 @@
156684 uint i;
156685
156686 if ((bp->b_flags & XBF_MAPPED) && (bp->b_page_count > 1))
156687 - free_address(bp->b_addr - bp->b_offset);
156688 + vm_unmap_ram(bp->b_addr - bp->b_offset, bp->b_page_count);
156689
156690 for (i = 0; i < bp->b_page_count; i++) {
156691 struct page *page = bp->b_pages[i];
156692 @@ -461,10 +386,8 @@
156693 bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;
156694 bp->b_flags |= XBF_MAPPED;
156695 } else if (flags & XBF_MAPPED) {
156696 - if (as_list_len > 64)
156697 - purge_addresses();
156698 - bp->b_addr = vmap(bp->b_pages, bp->b_page_count,
156699 - VM_MAP, PAGE_KERNEL);
156700 + bp->b_addr = vm_map_ram(bp->b_pages, bp->b_page_count,
156701 + -1, PAGE_KERNEL);
156702 if (unlikely(bp->b_addr == NULL))
156703 return -ENOMEM;
156704 bp->b_addr += bp->b_offset;
156705 @@ -1441,12 +1364,10 @@
156706
156707 void
156708 xfs_free_buftarg(
156709 - struct xfs_mount *mp,
156710 - struct xfs_buftarg *btp)
156711 + xfs_buftarg_t *btp)
156712 {
156713 xfs_flush_buftarg(btp, 1);
156714 - if (mp->m_flags & XFS_MOUNT_BARRIER)
156715 - xfs_blkdev_issue_flush(btp);
156716 + xfs_blkdev_issue_flush(btp);
156717 xfs_free_bufhash(btp);
156718 iput(btp->bt_mapping->host);
156719
156720 @@ -1751,8 +1672,6 @@
156721 count++;
156722 }
156723
156724 - if (as_list_len > 0)
156725 - purge_addresses();
156726 if (count)
156727 blk_run_address_space(target->bt_mapping);
156728
156729 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_buf.h linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_buf.h
156730 --- linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_buf.h 2009-05-10 22:04:39.000000000 +0200
156731 +++ linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_buf.h 2009-05-10 23:48:29.000000000 +0200
156732 @@ -413,7 +413,7 @@
156733 * Handling of buftargs.
156734 */
156735 extern xfs_buftarg_t *xfs_alloc_buftarg(struct block_device *, int);
156736 -extern void xfs_free_buftarg(struct xfs_mount *, struct xfs_buftarg *);
156737 +extern void xfs_free_buftarg(xfs_buftarg_t *);
156738 extern void xfs_wait_buftarg(xfs_buftarg_t *);
156739 extern int xfs_setsize_buftarg(xfs_buftarg_t *, unsigned int, unsigned int);
156740 extern int xfs_flush_buftarg(xfs_buftarg_t *, int);
156741 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_super.c linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_super.c
156742 --- linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_super.c 2009-05-10 22:04:39.000000000 +0200
156743 +++ linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_super.c 2009-05-10 23:48:29.000000000 +0200
156744 @@ -734,15 +734,15 @@
156745 {
156746 if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
156747 struct block_device *logdev = mp->m_logdev_targp->bt_bdev;
156748 - xfs_free_buftarg(mp, mp->m_logdev_targp);
156749 + xfs_free_buftarg(mp->m_logdev_targp);
156750 xfs_blkdev_put(logdev);
156751 }
156752 if (mp->m_rtdev_targp) {
156753 struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev;
156754 - xfs_free_buftarg(mp, mp->m_rtdev_targp);
156755 + xfs_free_buftarg(mp->m_rtdev_targp);
156756 xfs_blkdev_put(rtdev);
156757 }
156758 - xfs_free_buftarg(mp, mp->m_ddev_targp);
156759 + xfs_free_buftarg(mp->m_ddev_targp);
156760 }
156761
156762 /*
156763 @@ -811,9 +811,9 @@
156764
156765 out_free_rtdev_targ:
156766 if (mp->m_rtdev_targp)
156767 - xfs_free_buftarg(mp, mp->m_rtdev_targp);
156768 + xfs_free_buftarg(mp->m_rtdev_targp);
156769 out_free_ddev_targ:
156770 - xfs_free_buftarg(mp, mp->m_ddev_targp);
156771 + xfs_free_buftarg(mp->m_ddev_targp);
156772 out_close_rtdev:
156773 if (rtdev)
156774 xfs_blkdev_put(rtdev);
156775 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_sync.c linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_sync.c
156776 --- linux-2.6.29.owrt/fs/xfs/linux-2.6/xfs_sync.c 2009-05-10 22:04:39.000000000 +0200
156777 +++ linux-2.6.29-rc3.owrt/fs/xfs/linux-2.6/xfs_sync.c 2009-05-10 23:48:29.000000000 +0200
156778 @@ -371,11 +371,7 @@
156779 /* flush inodes and push all remaining buffers out to disk */
156780 xfs_quiesce_fs(mp);
156781
156782 - /*
156783 - * Just warn here till VFS can correctly support
156784 - * read-only remount without racing.
156785 - */
156786 - WARN_ON(atomic_read(&mp->m_active_trans) != 0);
156787 + ASSERT_ALWAYS(atomic_read(&mp->m_active_trans) == 0);
156788
156789 /* Push the superblock and write an unmount record */
156790 error = xfs_log_sbcount(mp, 1);
156791 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/xfs_dfrag.c linux-2.6.29-rc3.owrt/fs/xfs/xfs_dfrag.c
156792 --- linux-2.6.29.owrt/fs/xfs/xfs_dfrag.c 2009-05-10 22:04:39.000000000 +0200
156793 +++ linux-2.6.29-rc3.owrt/fs/xfs/xfs_dfrag.c 2009-05-10 23:48:29.000000000 +0200
156794 @@ -55,11 +55,17 @@
156795 struct file *file, *target_file;
156796 int error = 0;
156797
156798 + sxp = kmem_alloc(sizeof(xfs_swapext_t), KM_MAYFAIL);
156799 + if (!sxp) {
156800 + error = XFS_ERROR(ENOMEM);
156801 + goto out;
156802 + }
156803 +
156804 /* Pull information for the target fd */
156805 file = fget((int)sxp->sx_fdtarget);
156806 if (!file) {
156807 error = XFS_ERROR(EINVAL);
156808 - goto out;
156809 + goto out_free_sxp;
156810 }
156811
156812 if (!(file->f_mode & FMODE_WRITE) || (file->f_flags & O_APPEND)) {
156813 @@ -103,6 +109,8 @@
156814 fput(target_file);
156815 out_put_file:
156816 fput(file);
156817 + out_free_sxp:
156818 + kmem_free(sxp);
156819 out:
156820 return error;
156821 }
156822 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/xfs_iget.c linux-2.6.29-rc3.owrt/fs/xfs/xfs_iget.c
156823 --- linux-2.6.29.owrt/fs/xfs/xfs_iget.c 2009-05-10 22:04:39.000000000 +0200
156824 +++ linux-2.6.29-rc3.owrt/fs/xfs/xfs_iget.c 2009-05-10 23:48:29.000000000 +0200
156825 @@ -246,6 +246,9 @@
156826 goto out_destroy;
156827 }
156828
156829 + if (lock_flags)
156830 + xfs_ilock(ip, lock_flags);
156831 +
156832 /*
156833 * Preload the radix tree so we can insert safely under the
156834 * write spinlock. Note that we cannot sleep inside the preload
156835 @@ -253,16 +256,7 @@
156836 */
156837 if (radix_tree_preload(GFP_KERNEL)) {
156838 error = EAGAIN;
156839 - goto out_destroy;
156840 - }
156841 -
156842 - /*
156843 - * Because the inode hasn't been added to the radix-tree yet it can't
156844 - * be found by another thread, so we can do the non-sleeping lock here.
156845 - */
156846 - if (lock_flags) {
156847 - if (!xfs_ilock_nowait(ip, lock_flags))
156848 - BUG();
156849 + goto out_unlock;
156850 }
156851
156852 mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1);
156853 @@ -290,6 +284,7 @@
156854 out_preload_end:
156855 write_unlock(&pag->pag_ici_lock);
156856 radix_tree_preload_end();
156857 +out_unlock:
156858 if (lock_flags)
156859 xfs_iunlock(ip, lock_flags);
156860 out_destroy:
156861 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/fs/xfs/xfs_log_recover.c linux-2.6.29-rc3.owrt/fs/xfs/xfs_log_recover.c
156862 --- linux-2.6.29.owrt/fs/xfs/xfs_log_recover.c 2009-05-10 22:04:39.000000000 +0200
156863 +++ linux-2.6.29-rc3.owrt/fs/xfs/xfs_log_recover.c 2009-05-10 23:48:29.000000000 +0200
156864 @@ -70,21 +70,16 @@
156865 xfs_buf_t *
156866 xlog_get_bp(
156867 xlog_t *log,
156868 - int nbblks)
156869 + int num_bblks)
156870 {
156871 - if (nbblks <= 0 || nbblks > log->l_logBBsize) {
156872 - xlog_warn("XFS: Invalid block length (0x%x) given for buffer", nbblks);
156873 - XFS_ERROR_REPORT("xlog_get_bp(1)",
156874 - XFS_ERRLEVEL_HIGH, log->l_mp);
156875 - return NULL;
156876 - }
156877 + ASSERT(num_bblks > 0);
156878
156879 if (log->l_sectbb_log) {
156880 - if (nbblks > 1)
156881 - nbblks += XLOG_SECTOR_ROUNDUP_BBCOUNT(log, 1);
156882 - nbblks = XLOG_SECTOR_ROUNDUP_BBCOUNT(log, nbblks);
156883 + if (num_bblks > 1)
156884 + num_bblks += XLOG_SECTOR_ROUNDUP_BBCOUNT(log, 1);
156885 + num_bblks = XLOG_SECTOR_ROUNDUP_BBCOUNT(log, num_bblks);
156886 }
156887 - return xfs_buf_get_noaddr(BBTOB(nbblks), log->l_mp->m_logdev_targp);
156888 + return xfs_buf_get_noaddr(BBTOB(num_bblks), log->l_mp->m_logdev_targp);
156889 }
156890
156891 void
156892 @@ -107,13 +102,6 @@
156893 {
156894 int error;
156895
156896 - if (nbblks <= 0 || nbblks > log->l_logBBsize) {
156897 - xlog_warn("XFS: Invalid block length (0x%x) given for buffer", nbblks);
156898 - XFS_ERROR_REPORT("xlog_bread(1)",
156899 - XFS_ERRLEVEL_HIGH, log->l_mp);
156900 - return EFSCORRUPTED;
156901 - }
156902 -
156903 if (log->l_sectbb_log) {
156904 blk_no = XLOG_SECTOR_ROUNDDOWN_BLKNO(log, blk_no);
156905 nbblks = XLOG_SECTOR_ROUNDUP_BBCOUNT(log, nbblks);
156906 @@ -151,13 +139,6 @@
156907 {
156908 int error;
156909
156910 - if (nbblks <= 0 || nbblks > log->l_logBBsize) {
156911 - xlog_warn("XFS: Invalid block length (0x%x) given for buffer", nbblks);
156912 - XFS_ERROR_REPORT("xlog_bwrite(1)",
156913 - XFS_ERRLEVEL_HIGH, log->l_mp);
156914 - return EFSCORRUPTED;
156915 - }
156916 -
156917 if (log->l_sectbb_log) {
156918 blk_no = XLOG_SECTOR_ROUNDDOWN_BLKNO(log, blk_no);
156919 nbblks = XLOG_SECTOR_ROUNDUP_BBCOUNT(log, nbblks);
156920 @@ -1455,19 +1436,10 @@
156921 item = item->ri_prev;
156922
156923 if (item->ri_total == 0) { /* first region to be added */
156924 - if (in_f->ilf_size == 0 ||
156925 - in_f->ilf_size > XLOG_MAX_REGIONS_IN_ITEM) {
156926 - xlog_warn(
156927 - "XFS: bad number of regions (%d) in inode log format",
156928 - in_f->ilf_size);
156929 - ASSERT(0);
156930 - return XFS_ERROR(EIO);
156931 - }
156932 -
156933 - item->ri_total = in_f->ilf_size;
156934 - item->ri_buf =
156935 - kmem_zalloc(item->ri_total * sizeof(xfs_log_iovec_t),
156936 - KM_SLEEP);
156937 + item->ri_total = in_f->ilf_size;
156938 + ASSERT(item->ri_total <= XLOG_MAX_REGIONS_IN_ITEM);
156939 + item->ri_buf = kmem_zalloc((item->ri_total *
156940 + sizeof(xfs_log_iovec_t)), KM_SLEEP);
156941 }
156942 ASSERT(item->ri_total > item->ri_cnt);
156943 /* Description region is ri_buf[0] */
156944 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/acpi/pdc_intel.h linux-2.6.29-rc3.owrt/include/acpi/pdc_intel.h
156945 --- linux-2.6.29.owrt/include/acpi/pdc_intel.h 2009-05-10 22:04:37.000000000 +0200
156946 +++ linux-2.6.29-rc3.owrt/include/acpi/pdc_intel.h 2009-05-10 23:48:29.000000000 +0200
156947 @@ -14,7 +14,6 @@
156948 #define ACPI_PDC_SMP_T_SWCOORD (0x0080)
156949 #define ACPI_PDC_C_C1_FFH (0x0100)
156950 #define ACPI_PDC_C_C2C3_FFH (0x0200)
156951 -#define ACPI_PDC_SMP_P_HWCOORD (0x0800)
156952
156953 #define ACPI_PDC_EST_CAPABILITY_SMP (ACPI_PDC_SMP_C1PT | \
156954 ACPI_PDC_C_C1_HALT | \
156955 @@ -23,7 +22,6 @@
156956 #define ACPI_PDC_EST_CAPABILITY_SWSMP (ACPI_PDC_SMP_C1PT | \
156957 ACPI_PDC_C_C1_HALT | \
156958 ACPI_PDC_SMP_P_SWCOORD | \
156959 - ACPI_PDC_SMP_P_HWCOORD | \
156960 ACPI_PDC_P_FFH)
156961
156962 #define ACPI_PDC_C_CAPABILITY_SMP (ACPI_PDC_SMP_C2C3 | \
156963 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/asm-frv/pgtable.h linux-2.6.29-rc3.owrt/include/asm-frv/pgtable.h
156964 --- linux-2.6.29.owrt/include/asm-frv/pgtable.h 2009-05-10 22:04:37.000000000 +0200
156965 +++ linux-2.6.29-rc3.owrt/include/asm-frv/pgtable.h 2009-05-10 23:48:29.000000000 +0200
156966 @@ -478,7 +478,7 @@
156967 #define __swp_type(x) (((x).val >> 2) & 0x1f)
156968 #define __swp_offset(x) ((x).val >> 8)
156969 #define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 2) | ((offset) << 8) })
156970 -#define __pte_to_swp_entry(_pte) ((swp_entry_t) { (_pte).pte })
156971 +#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte })
156972 #define __swp_entry_to_pte(x) ((pte_t) { (x).val })
156973
156974 static inline int pte_file(pte_t pte)
156975 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/crypto/hash.h linux-2.6.29-rc3.owrt/include/crypto/hash.h
156976 --- linux-2.6.29.owrt/include/crypto/hash.h 2009-05-10 22:04:38.000000000 +0200
156977 +++ linux-2.6.29-rc3.owrt/include/crypto/hash.h 2009-05-10 23:48:29.000000000 +0200
156978 @@ -222,7 +222,7 @@
156979
156980 static inline void crypto_free_shash(struct crypto_shash *tfm)
156981 {
156982 - crypto_destroy_tfm(tfm, crypto_shash_tfm(tfm));
156983 + crypto_free_tfm(crypto_shash_tfm(tfm));
156984 }
156985
156986 static inline unsigned int crypto_shash_alignmask(
156987 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/drm/drm_crtc.h linux-2.6.29-rc3.owrt/include/drm/drm_crtc.h
156988 --- linux-2.6.29.owrt/include/drm/drm_crtc.h 2009-05-10 22:04:38.000000000 +0200
156989 +++ linux-2.6.29-rc3.owrt/include/drm/drm_crtc.h 2009-05-10 23:48:29.000000000 +0200
156990 @@ -609,7 +609,7 @@
156991 extern char *drm_get_dvi_i_select_name(int val);
156992 extern char *drm_get_tv_subconnector_name(int val);
156993 extern char *drm_get_tv_select_name(int val);
156994 -extern void drm_fb_release(struct drm_file *file_priv);
156995 +extern void drm_fb_release(struct file *filp);
156996 extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group);
156997 extern struct edid *drm_get_edid(struct drm_connector *connector,
156998 struct i2c_adapter *adapter);
156999 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/drm/drm_crtc_helper.h linux-2.6.29-rc3.owrt/include/drm/drm_crtc_helper.h
157000 --- linux-2.6.29.owrt/include/drm/drm_crtc_helper.h 2009-05-10 22:04:38.000000000 +0200
157001 +++ linux-2.6.29-rc3.owrt/include/drm/drm_crtc_helper.h 2009-05-10 23:48:29.000000000 +0200
157002 @@ -54,13 +54,13 @@
157003 struct drm_display_mode *mode,
157004 struct drm_display_mode *adjusted_mode);
157005 /* Actually set the mode */
157006 - int (*mode_set)(struct drm_crtc *crtc, struct drm_display_mode *mode,
157007 - struct drm_display_mode *adjusted_mode, int x, int y,
157008 - struct drm_framebuffer *old_fb);
157009 + void (*mode_set)(struct drm_crtc *crtc, struct drm_display_mode *mode,
157010 + struct drm_display_mode *adjusted_mode, int x, int y,
157011 + struct drm_framebuffer *old_fb);
157012
157013 /* Move the crtc on the current fb to the given position *optional* */
157014 - int (*mode_set_base)(struct drm_crtc *crtc, int x, int y,
157015 - struct drm_framebuffer *old_fb);
157016 + void (*mode_set_base)(struct drm_crtc *crtc, int x, int y,
157017 + struct drm_framebuffer *old_fb);
157018 };
157019
157020 struct drm_encoder_helper_funcs {
157021 @@ -76,7 +76,6 @@
157022 void (*mode_set)(struct drm_encoder *encoder,
157023 struct drm_display_mode *mode,
157024 struct drm_display_mode *adjusted_mode);
157025 - struct drm_crtc *(*get_crtc)(struct drm_encoder *encoder);
157026 /* detect for DAC style encoders */
157027 enum drm_connector_status (*detect)(struct drm_encoder *encoder,
157028 struct drm_connector *connector);
157029 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/drm/drm_edid.h linux-2.6.29-rc3.owrt/include/drm/drm_edid.h
157030 --- linux-2.6.29.owrt/include/drm/drm_edid.h 2009-05-10 22:04:38.000000000 +0200
157031 +++ linux-2.6.29-rc3.owrt/include/drm/drm_edid.h 2009-05-10 23:48:29.000000000 +0200
157032 @@ -58,10 +58,10 @@
157033 u8 hsync_pulse_width_lo;
157034 u8 vsync_pulse_width_lo:4;
157035 u8 vsync_offset_lo:4;
157036 - u8 vsync_pulse_width_hi:2;
157037 - u8 vsync_offset_hi:2;
157038 u8 hsync_pulse_width_hi:2;
157039 u8 hsync_offset_hi:2;
157040 + u8 vsync_pulse_width_hi:2;
157041 + u8 vsync_offset_hi:2;
157042 u8 width_mm_lo;
157043 u8 height_mm_lo;
157044 u8 height_mm_hi:4;
157045 @@ -69,8 +69,8 @@
157046 u8 hborder;
157047 u8 vborder;
157048 u8 unknown0:1;
157049 - u8 hsync_positive:1;
157050 u8 vsync_positive:1;
157051 + u8 hsync_positive:1;
157052 u8 separate_sync:2;
157053 u8 stereo:1;
157054 u8 unknown6:1;
157055 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/drm/drmP.h linux-2.6.29-rc3.owrt/include/drm/drmP.h
157056 --- linux-2.6.29.owrt/include/drm/drmP.h 2009-05-10 22:04:38.000000000 +0200
157057 +++ linux-2.6.29-rc3.owrt/include/drm/drmP.h 2009-05-10 23:48:29.000000000 +0200
157058 @@ -1321,8 +1321,6 @@
157059 struct drm_gem_object *drm_gem_object_alloc(struct drm_device *dev,
157060 size_t size);
157061 void drm_gem_object_handle_free(struct kref *kref);
157062 -void drm_gem_vm_open(struct vm_area_struct *vma);
157063 -void drm_gem_vm_close(struct vm_area_struct *vma);
157064 int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
157065
157066 static inline void
157067 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/drm/i915_drm.h linux-2.6.29-rc3.owrt/include/drm/i915_drm.h
157068 --- linux-2.6.29.owrt/include/drm/i915_drm.h 2009-05-10 22:04:38.000000000 +0200
157069 +++ linux-2.6.29-rc3.owrt/include/drm/i915_drm.h 2009-05-10 23:48:29.000000000 +0200
157070 @@ -261,7 +261,6 @@
157071 #define I915_PARAM_LAST_DISPATCH 3
157072 #define I915_PARAM_CHIPSET_ID 4
157073 #define I915_PARAM_HAS_GEM 5
157074 -#define I915_PARAM_NUM_FENCES_AVAIL 6
157075
157076 typedef struct drm_i915_getparam {
157077 int param;
157078 @@ -273,7 +272,6 @@
157079 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
157080 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
157081 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
157082 -#define I915_SETPARAM_NUM_USED_FENCES 4
157083
157084 typedef struct drm_i915_setparam {
157085 int param;
157086 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/aio_abi.h linux-2.6.29-rc3.owrt/include/linux/aio_abi.h
157087 --- linux-2.6.29.owrt/include/linux/aio_abi.h 2009-05-10 22:04:37.000000000 +0200
157088 +++ linux-2.6.29-rc3.owrt/include/linux/aio_abi.h 2009-05-10 23:48:29.000000000 +0200
157089 @@ -27,7 +27,6 @@
157090 #ifndef __LINUX__AIO_ABI_H
157091 #define __LINUX__AIO_ABI_H
157092
157093 -#include <linux/types.h>
157094 #include <asm/byteorder.h>
157095
157096 typedef unsigned long aio_context_t;
157097 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/async.h linux-2.6.29-rc3.owrt/include/linux/async.h
157098 --- linux-2.6.29.owrt/include/linux/async.h 2009-05-10 22:04:37.000000000 +0200
157099 +++ linux-2.6.29-rc3.owrt/include/linux/async.h 2009-05-10 23:48:29.000000000 +0200
157100 @@ -17,11 +17,9 @@
157101 typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
157102
157103 extern async_cookie_t async_schedule(async_func_ptr *ptr, void *data);
157104 -extern async_cookie_t async_schedule_domain(async_func_ptr *ptr, void *data,
157105 - struct list_head *list);
157106 +extern async_cookie_t async_schedule_special(async_func_ptr *ptr, void *data, struct list_head *list);
157107 extern void async_synchronize_full(void);
157108 -extern void async_synchronize_full_domain(struct list_head *list);
157109 +extern void async_synchronize_full_special(struct list_head *list);
157110 extern void async_synchronize_cookie(async_cookie_t cookie);
157111 -extern void async_synchronize_cookie_domain(async_cookie_t cookie,
157112 - struct list_head *list);
157113 +extern void async_synchronize_cookie_special(async_cookie_t cookie, struct list_head *list);
157114
157115 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ata.h linux-2.6.29-rc3.owrt/include/linux/ata.h
157116 --- linux-2.6.29.owrt/include/linux/ata.h 2009-05-10 22:04:37.000000000 +0200
157117 +++ linux-2.6.29-rc3.owrt/include/linux/ata.h 2009-05-10 23:48:29.000000000 +0200
157118 @@ -89,8 +89,6 @@
157119 ATA_ID_DLF = 128,
157120 ATA_ID_CSFO = 129,
157121 ATA_ID_CFA_POWER = 160,
157122 - ATA_ID_CFA_KEY_MGMT = 162,
157123 - ATA_ID_CFA_MODES = 163,
157124 ATA_ID_ROT_SPEED = 217,
157125 ATA_ID_PIO4 = (1 << 1),
157126
157127 @@ -733,17 +731,12 @@
157128
157129 static inline int ata_id_is_cfa(const u16 *id)
157130 {
157131 - if (id[ATA_ID_CONFIG] == 0x848A) /* Traditional CF */
157132 + if (id[ATA_ID_CONFIG] == 0x848A) /* Standard CF */
157133 return 1;
157134 - /*
157135 - * CF specs don't require specific value in the word 0 anymore and yet
157136 - * they forbid to report the ATA version in the word 80 and require the
157137 - * CFA feature set support to be indicated in the word 83 in this case.
157138 - * Unfortunately, some cards only follow either of this requirements,
157139 - * and while those that don't indicate CFA feature support need some
157140 - * sort of quirk list, it seems impractical for the ones that do...
157141 - */
157142 - if ((id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004)
157143 + /* Could be CF hiding as standard ATA */
157144 + if (ata_id_major_version(id) >= 3 &&
157145 + id[ATA_ID_COMMAND_SET_1] != 0xFFFF &&
157146 + (id[ATA_ID_COMMAND_SET_1] & (1 << 2)))
157147 return 1;
157148 return 0;
157149 }
157150 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/atalk.h linux-2.6.29-rc3.owrt/include/linux/atalk.h
157151 --- linux-2.6.29.owrt/include/linux/atalk.h 2009-05-10 22:04:37.000000000 +0200
157152 +++ linux-2.6.29-rc3.owrt/include/linux/atalk.h 2009-05-10 23:48:29.000000000 +0200
157153 @@ -1,7 +1,6 @@
157154 #ifndef __LINUX_ATALK_H__
157155 #define __LINUX_ATALK_H__
157156
157157 -#include <linux/types.h>
157158 #include <asm/byteorder.h>
157159
157160 /*
157161 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/atmbr2684.h linux-2.6.29-rc3.owrt/include/linux/atmbr2684.h
157162 --- linux-2.6.29.owrt/include/linux/atmbr2684.h 2009-05-10 22:04:37.000000000 +0200
157163 +++ linux-2.6.29-rc3.owrt/include/linux/atmbr2684.h 2009-05-10 23:48:29.000000000 +0200
157164 @@ -1,7 +1,6 @@
157165 #ifndef _LINUX_ATMBR2684_H
157166 #define _LINUX_ATMBR2684_H
157167
157168 -#include <linux/types.h>
157169 #include <linux/atm.h>
157170 #include <linux/if.h> /* For IFNAMSIZ */
157171
157172 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/auto_fs4.h linux-2.6.29-rc3.owrt/include/linux/auto_fs4.h
157173 --- linux-2.6.29.owrt/include/linux/auto_fs4.h 2009-05-10 22:04:37.000000000 +0200
157174 +++ linux-2.6.29-rc3.owrt/include/linux/auto_fs4.h 2009-05-10 23:48:29.000000000 +0200
157175 @@ -12,7 +12,6 @@
157176 #define _LINUX_AUTO_FS4_H
157177
157178 /* Include common v3 definitions */
157179 -#include <linux/types.h>
157180 #include <linux/auto_fs.h>
157181
157182 /* autofs v4 definitions */
157183 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/bfs_fs.h linux-2.6.29-rc3.owrt/include/linux/bfs_fs.h
157184 --- linux-2.6.29.owrt/include/linux/bfs_fs.h 2009-05-10 22:04:37.000000000 +0200
157185 +++ linux-2.6.29-rc3.owrt/include/linux/bfs_fs.h 2009-05-10 23:48:29.000000000 +0200
157186 @@ -6,8 +6,6 @@
157187 #ifndef _LINUX_BFS_FS_H
157188 #define _LINUX_BFS_FS_H
157189
157190 -#include <linux/types.h>
157191 -
157192 #define BFS_BSIZE_BITS 9
157193 #define BFS_BSIZE (1<<BFS_BSIZE_BITS)
157194
157195 @@ -19,6 +17,7 @@
157196 #define BFS_VDIR 2L
157197 #define BFS_VREG 1L
157198
157199 +
157200 /* BFS inode layout on disk */
157201 struct bfs_inode {
157202 __le16 i_ino;
157203 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/bio.h linux-2.6.29-rc3.owrt/include/linux/bio.h
157204 --- linux-2.6.29.owrt/include/linux/bio.h 2009-05-10 22:04:37.000000000 +0200
157205 +++ linux-2.6.29-rc3.owrt/include/linux/bio.h 2009-05-10 23:48:29.000000000 +0200
157206 @@ -144,7 +144,7 @@
157207 * bit 1 -- rw-ahead when set
157208 * bit 2 -- barrier
157209 * Insert a serialization point in the IO queue, forcing previously
157210 - * submitted IO to be completed before this one is issued.
157211 + * submitted IO to be completed before this oen is issued.
157212 * bit 3 -- synchronous I/O hint: the block layer will unplug immediately
157213 * Note that this does NOT indicate that the IO itself is sync, just
157214 * that the block layer will not postpone issue of this IO by plugging.
157215 @@ -163,31 +163,12 @@
157216 #define BIO_RW 0 /* Must match RW in req flags (blkdev.h) */
157217 #define BIO_RW_AHEAD 1 /* Must match FAILFAST in req flags */
157218 #define BIO_RW_BARRIER 2
157219 -#define BIO_RW_SYNCIO 3
157220 -#define BIO_RW_UNPLUG 4
157221 -#define BIO_RW_META 5
157222 -#define BIO_RW_DISCARD 6
157223 -#define BIO_RW_FAILFAST_DEV 7
157224 -#define BIO_RW_FAILFAST_TRANSPORT 8
157225 -#define BIO_RW_FAILFAST_DRIVER 9
157226 -
157227 -#define bio_rw_flagged(bio, flag) ((bio)->bi_rw & (1 << (flag)))
157228 -
157229 -/*
157230 - * Old defines, these should eventually be replaced by direct usage of
157231 - * bio_rw_flagged()
157232 - */
157233 -#define bio_barrier(bio) bio_rw_flagged(bio, BIO_RW_BARRIER)
157234 -#define bio_sync(bio) bio_rw_flagged(bio, BIO_RW_SYNCIO)
157235 -#define bio_unplug(bio) bio_rw_flagged(bio, BIO_RW_UNPLUG)
157236 -#define bio_failfast_dev(bio) bio_rw_flagged(bio, BIO_RW_FAILFAST_DEV)
157237 -#define bio_failfast_transport(bio) \
157238 - bio_rw_flagged(bio, BIO_RW_FAILFAST_TRANSPORT)
157239 -#define bio_failfast_driver(bio) \
157240 - bio_rw_flagged(bio, BIO_RW_FAILFAST_DRIVER)
157241 -#define bio_rw_ahead(bio) bio_rw_flagged(bio, BIO_RW_AHEAD)
157242 -#define bio_rw_meta(bio) bio_rw_flagged(bio, BIO_RW_META)
157243 -#define bio_discard(bio) bio_rw_flagged(bio, BIO_RW_DISCARD)
157244 +#define BIO_RW_SYNC 3
157245 +#define BIO_RW_META 4
157246 +#define BIO_RW_DISCARD 5
157247 +#define BIO_RW_FAILFAST_DEV 6
157248 +#define BIO_RW_FAILFAST_TRANSPORT 7
157249 +#define BIO_RW_FAILFAST_DRIVER 8
157250
157251 /*
157252 * upper 16 bits of bi_rw define the io priority of this bio
157253 @@ -212,6 +193,15 @@
157254 #define bio_offset(bio) bio_iovec((bio))->bv_offset
157255 #define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)
157256 #define bio_sectors(bio) ((bio)->bi_size >> 9)
157257 +#define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER))
157258 +#define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNC))
157259 +#define bio_failfast_dev(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DEV))
157260 +#define bio_failfast_transport(bio) \
157261 + ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_TRANSPORT))
157262 +#define bio_failfast_driver(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DRIVER))
157263 +#define bio_rw_ahead(bio) ((bio)->bi_rw & (1 << BIO_RW_AHEAD))
157264 +#define bio_rw_meta(bio) ((bio)->bi_rw & (1 << BIO_RW_META))
157265 +#define bio_discard(bio) ((bio)->bi_rw & (1 << BIO_RW_DISCARD))
157266 #define bio_empty_barrier(bio) (bio_barrier(bio) && !bio_has_data(bio) && !bio_discard(bio))
157267
157268 static inline unsigned int bio_cur_sectors(struct bio *bio)
157269 @@ -322,6 +312,7 @@
157270 void *bip_buf; /* generated integrity data */
157271 bio_end_io_t *bip_end_io; /* saved I/O completion fn */
157272
157273 + int bip_error; /* saved I/O error */
157274 unsigned int bip_size;
157275
157276 unsigned short bip_pool; /* pool the ivec came from */
157277 @@ -449,13 +440,12 @@
157278
157279 #ifdef CONFIG_HIGHMEM
157280 /*
157281 - * remember never ever reenable interrupts between a bvec_kmap_irq and
157282 - * bvec_kunmap_irq!
157283 + * remember to add offset! and never ever reenable interrupts between a
157284 + * bvec_kmap_irq and bvec_kunmap_irq!!
157285 *
157286 * This function MUST be inlined - it plays with the CPU interrupt flags.
157287 */
157288 -static __always_inline char *bvec_kmap_irq(struct bio_vec *bvec,
157289 - unsigned long *flags)
157290 +static inline char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags)
157291 {
157292 unsigned long addr;
157293
157294 @@ -471,8 +461,7 @@
157295 return (char *) addr + bvec->bv_offset;
157296 }
157297
157298 -static __always_inline void bvec_kunmap_irq(char *buffer,
157299 - unsigned long *flags)
157300 +static inline void bvec_kunmap_irq(char *buffer, unsigned long *flags)
157301 {
157302 unsigned long ptr = (unsigned long) buffer & PAGE_MASK;
157303
157304 @@ -531,7 +520,7 @@
157305 extern void bio_integrity_advance(struct bio *, unsigned int);
157306 extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int);
157307 extern void bio_integrity_split(struct bio *, struct bio_pair *, int);
157308 -extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t, struct bio_set *);
157309 +extern int bio_integrity_clone(struct bio *, struct bio *, struct bio_set *);
157310 extern int bioset_integrity_create(struct bio_set *, int);
157311 extern void bioset_integrity_free(struct bio_set *);
157312 extern void bio_integrity_init_slab(void);
157313 @@ -542,7 +531,7 @@
157314 #define bioset_integrity_create(a, b) (0)
157315 #define bio_integrity_prep(a) (0)
157316 #define bio_integrity_enabled(a) (0)
157317 -#define bio_integrity_clone(a, b, c,d ) (0)
157318 +#define bio_integrity_clone(a, b, c) (0)
157319 #define bioset_integrity_free(a) do { } while (0)
157320 #define bio_integrity_free(a, b) do { } while (0)
157321 #define bio_integrity_endio(a, b) do { } while (0)
157322 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/blkdev.h linux-2.6.29-rc3.owrt/include/linux/blkdev.h
157323 --- linux-2.6.29.owrt/include/linux/blkdev.h 2009-05-10 22:04:37.000000000 +0200
157324 +++ linux-2.6.29-rc3.owrt/include/linux/blkdev.h 2009-05-10 23:48:29.000000000 +0200
157325 @@ -108,7 +108,6 @@
157326 __REQ_RW_META, /* metadata io request */
157327 __REQ_COPY_USER, /* contains copies of user pages */
157328 __REQ_INTEGRITY, /* integrity metadata has been remapped */
157329 - __REQ_UNPLUG, /* unplug queue on submission */
157330 __REQ_NR_BITS, /* stops here */
157331 };
157332
157333 @@ -135,7 +134,6 @@
157334 #define REQ_RW_META (1 << __REQ_RW_META)
157335 #define REQ_COPY_USER (1 << __REQ_COPY_USER)
157336 #define REQ_INTEGRITY (1 << __REQ_INTEGRITY)
157337 -#define REQ_UNPLUG (1 << __REQ_UNPLUG)
157338
157339 #define BLK_MAX_CDB 16
157340
157341 @@ -451,11 +449,6 @@
157342 #define QUEUE_FLAG_STACKABLE 13 /* supports request stacking */
157343 #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */
157344 #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */
157345 -#define QUEUE_FLAG_IO_STAT 15 /* do IO stats */
157346 -
157347 -#define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \
157348 - (1 << QUEUE_FLAG_CLUSTER) | \
157349 - (1 << QUEUE_FLAG_STACKABLE))
157350
157351 static inline int queue_is_locked(struct request_queue *q)
157352 {
157353 @@ -572,7 +565,6 @@
157354 #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
157355 #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags)
157356 #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags)
157357 -#define blk_queue_io_stat(q) test_bit(QUEUE_FLAG_IO_STAT, &(q)->queue_flags)
157358 #define blk_queue_flushing(q) ((q)->ordseq)
157359 #define blk_queue_stackable(q) \
157360 test_bit(QUEUE_FLAG_STACKABLE, &(q)->queue_flags)
157361 @@ -708,8 +700,6 @@
157362 };
157363
157364 /* This should not be used directly - use rq_for_each_segment */
157365 -#define for_each_bio(_bio) \
157366 - for (; _bio; _bio = _bio->bi_next)
157367 #define __rq_for_each_bio(_bio, rq) \
157368 if ((rq->bio)) \
157369 for (_bio = (rq)->bio; _bio; _bio = _bio->bi_next)
157370 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/blktrace_api.h linux-2.6.29-rc3.owrt/include/linux/blktrace_api.h
157371 --- linux-2.6.29.owrt/include/linux/blktrace_api.h 2009-05-10 22:04:37.000000000 +0200
157372 +++ linux-2.6.29-rc3.owrt/include/linux/blktrace_api.h 2009-05-10 23:48:29.000000000 +0200
157373 @@ -1,7 +1,6 @@
157374 #ifndef BLKTRACE_H
157375 #define BLKTRACE_H
157376
157377 -#include <linux/types.h>
157378 #ifdef __KERNEL__
157379 #include <linux/blkdev.h>
157380 #include <linux/relay.h>
157381 @@ -15,7 +14,6 @@
157382 BLK_TC_WRITE = 1 << 1, /* writes */
157383 BLK_TC_BARRIER = 1 << 2, /* barrier */
157384 BLK_TC_SYNC = 1 << 3, /* sync IO */
157385 - BLK_TC_SYNCIO = BLK_TC_SYNC,
157386 BLK_TC_QUEUE = 1 << 4, /* queueing/merging */
157387 BLK_TC_REQUEUE = 1 << 5, /* requeueing */
157388 BLK_TC_ISSUE = 1 << 6, /* issue */
157389 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/can/bcm.h linux-2.6.29-rc3.owrt/include/linux/can/bcm.h
157390 --- linux-2.6.29.owrt/include/linux/can/bcm.h 2009-05-10 22:04:37.000000000 +0200
157391 +++ linux-2.6.29-rc3.owrt/include/linux/can/bcm.h 2009-05-10 23:48:29.000000000 +0200
157392 @@ -14,8 +14,6 @@
157393 #ifndef CAN_BCM_H
157394 #define CAN_BCM_H
157395
157396 -#include <linux/types.h>
157397 -
157398 /**
157399 * struct bcm_msg_head - head of messages to/from the broadcast manager
157400 * @opcode: opcode, see enum below.
157401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/capability.h linux-2.6.29-rc3.owrt/include/linux/capability.h
157402 --- linux-2.6.29.owrt/include/linux/capability.h 2009-05-10 22:04:37.000000000 +0200
157403 +++ linux-2.6.29-rc3.owrt/include/linux/capability.h 2009-05-10 23:48:29.000000000 +0200
157404 @@ -69,6 +69,10 @@
157405 #define VFS_CAP_U32 VFS_CAP_U32_2
157406 #define VFS_CAP_REVISION VFS_CAP_REVISION_2
157407
157408 +#ifdef CONFIG_SECURITY_FILE_CAPABILITIES
157409 +extern int file_caps_enabled;
157410 +#endif
157411 +
157412 struct vfs_cap_data {
157413 __le32 magic_etc; /* Little endian */
157414 struct {
157415 @@ -92,10 +96,6 @@
157416 #define _KERNEL_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_3
157417 #define _KERNEL_CAPABILITY_U32S _LINUX_CAPABILITY_U32S_3
157418
157419 -#ifdef CONFIG_SECURITY_FILE_CAPABILITIES
157420 -extern int file_caps_enabled;
157421 -#endif
157422 -
157423 typedef struct kernel_cap_struct {
157424 __u32 cap[_KERNEL_CAPABILITY_U32S];
157425 } kernel_cap_t;
157426 @@ -393,10 +393,8 @@
157427 # define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }})
157428 # define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
157429 # define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } })
157430 -# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
157431 - | CAP_TO_MASK(CAP_SYS_RESOURCE) \
157432 - | CAP_TO_MASK(CAP_MKNOD), \
157433 - CAP_FS_MASK_B1 } })
157434 +# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0|CAP_TO_MASK(CAP_SYS_RESOURCE), \
157435 + CAP_FS_MASK_B1 } })
157436
157437 #endif /* _KERNEL_CAPABILITY_U32S != 2 */
157438
157439 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/cdrom.h linux-2.6.29-rc3.owrt/include/linux/cdrom.h
157440 --- linux-2.6.29.owrt/include/linux/cdrom.h 2009-05-10 22:04:37.000000000 +0200
157441 +++ linux-2.6.29-rc3.owrt/include/linux/cdrom.h 2009-05-10 23:48:29.000000000 +0200
157442 @@ -11,7 +11,6 @@
157443 #ifndef _LINUX_CDROM_H
157444 #define _LINUX_CDROM_H
157445
157446 -#include <linux/types.h>
157447 #include <asm/byteorder.h>
157448
157449 /*******************************************************
157450 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/cgroup.h linux-2.6.29-rc3.owrt/include/linux/cgroup.h
157451 --- linux-2.6.29.owrt/include/linux/cgroup.h 2009-05-10 22:04:37.000000000 +0200
157452 +++ linux-2.6.29-rc3.owrt/include/linux/cgroup.h 2009-05-10 23:48:29.000000000 +0200
157453 @@ -99,7 +99,6 @@
157454 while (!atomic_inc_not_zero(&css->refcnt)) {
157455 if (test_bit(CSS_REMOVED, &css->flags))
157456 return false;
157457 - cpu_relax();
157458 }
157459 return true;
157460 }
157461 @@ -378,7 +377,6 @@
157462 * - initiating hotplug events
157463 */
157464 struct mutex hierarchy_mutex;
157465 - struct lock_class_key subsys_key;
157466
157467 /*
157468 * Link to parent, and list entry in parent's children.
157469 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/cgroupstats.h linux-2.6.29-rc3.owrt/include/linux/cgroupstats.h
157470 --- linux-2.6.29.owrt/include/linux/cgroupstats.h 2009-05-10 22:04:37.000000000 +0200
157471 +++ linux-2.6.29-rc3.owrt/include/linux/cgroupstats.h 2009-05-10 23:48:29.000000000 +0200
157472 @@ -15,7 +15,6 @@
157473 #ifndef _LINUX_CGROUPSTATS_H
157474 #define _LINUX_CGROUPSTATS_H
157475
157476 -#include <linux/types.h>
157477 #include <linux/taskstats.h>
157478
157479 /*
157480 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/clockchips.h linux-2.6.29-rc3.owrt/include/linux/clockchips.h
157481 --- linux-2.6.29.owrt/include/linux/clockchips.h 2009-05-10 22:04:37.000000000 +0200
157482 +++ linux-2.6.29-rc3.owrt/include/linux/clockchips.h 2009-05-10 23:48:29.000000000 +0200
157483 @@ -36,7 +36,6 @@
157484 CLOCK_EVT_NOTIFY_BROADCAST_EXIT,
157485 CLOCK_EVT_NOTIFY_SUSPEND,
157486 CLOCK_EVT_NOTIFY_RESUME,
157487 - CLOCK_EVT_NOTIFY_CPU_DYING,
157488 CLOCK_EVT_NOTIFY_CPU_DEAD,
157489 };
157490
157491 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/compiler-gcc.h linux-2.6.29-rc3.owrt/include/linux/compiler-gcc.h
157492 --- linux-2.6.29.owrt/include/linux/compiler-gcc.h 2009-05-10 22:04:37.000000000 +0200
157493 +++ linux-2.6.29-rc3.owrt/include/linux/compiler-gcc.h 2009-05-10 23:48:29.000000000 +0200
157494 @@ -52,15 +52,7 @@
157495 #define __deprecated __attribute__((deprecated))
157496 #define __packed __attribute__((packed))
157497 #define __weak __attribute__((weak))
157498 -
157499 -/*
157500 - * it doesn't make sense on ARM (currently the only user of __naked) to trace
157501 - * naked functions because then mcount is called without stack and frame pointer
157502 - * being set up and there is no chance to restore the lr register to the value
157503 - * before mcount was called.
157504 - */
157505 -#define __naked __attribute__((naked)) notrace
157506 -
157507 +#define __naked __attribute__((naked))
157508 #define __noreturn __attribute__((noreturn))
157509
157510 /*
157511 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/cpufreq.h linux-2.6.29-rc3.owrt/include/linux/cpufreq.h
157512 --- linux-2.6.29.owrt/include/linux/cpufreq.h 2009-05-10 22:04:37.000000000 +0200
157513 +++ linux-2.6.29-rc3.owrt/include/linux/cpufreq.h 2009-05-10 23:48:29.000000000 +0200
157514 @@ -234,6 +234,7 @@
157515 int (*suspend) (struct cpufreq_policy *policy, pm_message_t pmsg);
157516 int (*resume) (struct cpufreq_policy *policy);
157517 struct freq_attr **attr;
157518 + bool hide_interface;
157519 };
157520
157521 /* flags */
157522 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/crypto.h linux-2.6.29-rc3.owrt/include/linux/crypto.h
157523 --- linux-2.6.29.owrt/include/linux/crypto.h 2009-05-10 22:04:37.000000000 +0200
157524 +++ linux-2.6.29-rc3.owrt/include/linux/crypto.h 2009-05-10 23:48:29.000000000 +0200
157525 @@ -552,12 +552,7 @@
157526 const struct crypto_type *frontend,
157527 u32 type, u32 mask);
157528 struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask);
157529 -void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm);
157530 -
157531 -static inline void crypto_free_tfm(struct crypto_tfm *tfm)
157532 -{
157533 - return crypto_destroy_tfm(tfm, tfm);
157534 -}
157535 +void crypto_free_tfm(struct crypto_tfm *tfm);
157536
157537 int alg_test(const char *driver, const char *alg, u32 type, u32 mask);
157538
157539 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dca.h linux-2.6.29-rc3.owrt/include/linux/dca.h
157540 --- linux-2.6.29.owrt/include/linux/dca.h 2009-05-10 22:04:37.000000000 +0200
157541 +++ linux-2.6.29-rc3.owrt/include/linux/dca.h 2009-05-10 23:48:29.000000000 +0200
157542 @@ -1,23 +1,3 @@
157543 -/*
157544 - * Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
157545 - *
157546 - * This program is free software; you can redistribute it and/or modify it
157547 - * under the terms of the GNU General Public License as published by the Free
157548 - * Software Foundation; either version 2 of the License, or (at your option)
157549 - * any later version.
157550 - *
157551 - * This program is distributed in the hope that it will be useful, but WITHOUT
157552 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
157553 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
157554 - * more details.
157555 - *
157556 - * You should have received a copy of the GNU General Public License along with
157557 - * this program; if not, write to the Free Software Foundation, Inc., 59
157558 - * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
157559 - *
157560 - * The full GNU General Public License is included in this distribution in the
157561 - * file called COPYING.
157562 - */
157563 #ifndef DCA_H
157564 #define DCA_H
157565 /* DCA Provider API */
157566 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dcbnl.h linux-2.6.29-rc3.owrt/include/linux/dcbnl.h
157567 --- linux-2.6.29.owrt/include/linux/dcbnl.h 2009-05-10 22:04:37.000000000 +0200
157568 +++ linux-2.6.29-rc3.owrt/include/linux/dcbnl.h 2009-05-10 23:48:29.000000000 +0200
157569 @@ -20,12 +20,10 @@
157570 #ifndef __LINUX_DCBNL_H__
157571 #define __LINUX_DCBNL_H__
157572
157573 -#include <linux/types.h>
157574 -
157575 #define DCB_PROTO_VERSION 1
157576
157577 struct dcbmsg {
157578 - __u8 dcb_family;
157579 + unsigned char dcb_family;
157580 __u8 cmd;
157581 __u16 dcb_pad;
157582 };
157583 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/device.h linux-2.6.29-rc3.owrt/include/linux/device.h
157584 --- linux-2.6.29.owrt/include/linux/device.h 2009-05-10 22:04:37.000000000 +0200
157585 +++ linux-2.6.29-rc3.owrt/include/linux/device.h 2009-05-10 23:48:29.000000000 +0200
157586 @@ -147,8 +147,6 @@
157587 extern struct device_driver *driver_find(const char *name,
157588 struct bus_type *bus);
157589 extern int driver_probe_done(void);
157590 -extern int wait_for_device_probe(void);
157591 -
157592
157593 /* sysfs interface for exporting driver attributes */
157594
157595 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dlm_plock.h linux-2.6.29-rc3.owrt/include/linux/dlm_plock.h
157596 --- linux-2.6.29.owrt/include/linux/dlm_plock.h 2009-05-10 22:04:37.000000000 +0200
157597 +++ linux-2.6.29-rc3.owrt/include/linux/dlm_plock.h 2009-05-10 23:48:29.000000000 +0200
157598 @@ -9,8 +9,6 @@
157599 #ifndef __DLM_PLOCK_DOT_H__
157600 #define __DLM_PLOCK_DOT_H__
157601
157602 -#include <linux/types.h>
157603 -
157604 #define DLM_PLOCK_MISC_NAME "dlm_plock"
157605
157606 #define DLM_PLOCK_VERSION_MAJOR 1
157607 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dmaengine.h linux-2.6.29-rc3.owrt/include/linux/dmaengine.h
157608 --- linux-2.6.29.owrt/include/linux/dmaengine.h 2009-05-10 22:04:37.000000000 +0200
157609 +++ linux-2.6.29-rc3.owrt/include/linux/dmaengine.h 2009-05-10 23:48:29.000000000 +0200
157610 @@ -97,6 +97,7 @@
157611
157612 /**
157613 * struct dma_chan_percpu - the per-CPU part of struct dma_chan
157614 + * @refcount: local_t used for open-coded "bigref" counting
157615 * @memcpy_count: transaction counter
157616 * @bytes_transferred: byte counter
157617 */
157618 @@ -113,11 +114,13 @@
157619 * @cookie: last cookie value returned to client
157620 * @chan_id: channel ID for sysfs
157621 * @dev: class device for sysfs
157622 + * @refcount: kref, used in "bigref" slow-mode
157623 + * @slow_ref: indicates that the DMA channel is free
157624 + * @rcu: the DMA channel's RCU head
157625 * @device_node: used to add this to the device chan list
157626 * @local: per-cpu pointer to a struct dma_chan_percpu
157627 * @client-count: how many clients are using this channel
157628 * @table_count: number of appearances in the mem-to-mem allocation table
157629 - * @private: private data for certain client-channel associations
157630 */
157631 struct dma_chan {
157632 struct dma_device *device;
157633 @@ -131,7 +134,6 @@
157634 struct dma_chan_percpu *local;
157635 int client_count;
157636 int table_count;
157637 - void *private;
157638 };
157639
157640 /**
157641 @@ -209,6 +211,8 @@
157642 * @global_node: list_head for global dma_device_list
157643 * @cap_mask: one or more dma_capability flags
157644 * @max_xor: maximum number of xor sources, 0 if no capability
157645 + * @refcount: reference count
157646 + * @done: IO completion struct
157647 * @dev_id: unique device ID
157648 * @dev: struct device reference for dma mapping api
157649 * @device_alloc_chan_resources: allocate resources and return the
157650 @@ -221,7 +225,6 @@
157651 * @device_prep_dma_interrupt: prepares an end of chain interrupt operation
157652 * @device_prep_slave_sg: prepares a slave dma operation
157653 * @device_terminate_all: terminate all pending operations
157654 - * @device_is_tx_complete: poll for transaction completion
157655 * @device_issue_pending: push pending transactions to hardware
157656 */
157657 struct dma_device {
157658 @@ -279,18 +282,6 @@
157659 }
157660 #endif
157661
157662 -#ifdef CONFIG_NET_DMA
157663 -#define net_dmaengine_get() dmaengine_get()
157664 -#define net_dmaengine_put() dmaengine_put()
157665 -#else
157666 -static inline void net_dmaengine_get(void)
157667 -{
157668 -}
157669 -static inline void net_dmaengine_put(void)
157670 -{
157671 -}
157672 -#endif
157673 -
157674 dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan,
157675 void *dest, void *src, size_t len);
157676 dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan,
157677 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dn.h linux-2.6.29-rc3.owrt/include/linux/dn.h
157678 --- linux-2.6.29.owrt/include/linux/dn.h 2009-05-10 22:04:37.000000000 +0200
157679 +++ linux-2.6.29-rc3.owrt/include/linux/dn.h 2009-05-10 23:48:29.000000000 +0200
157680 @@ -1,8 +1,6 @@
157681 #ifndef _LINUX_DN_H
157682 #define _LINUX_DN_H
157683
157684 -#include <linux/types.h>
157685 -
157686 /*
157687
157688 DECnet Data Structures and Constants
157689 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dvb/audio.h linux-2.6.29-rc3.owrt/include/linux/dvb/audio.h
157690 --- linux-2.6.29.owrt/include/linux/dvb/audio.h 2009-05-10 22:04:37.000000000 +0200
157691 +++ linux-2.6.29-rc3.owrt/include/linux/dvb/audio.h 2009-05-10 23:48:29.000000000 +0200
157692 @@ -24,7 +24,12 @@
157693 #ifndef _DVBAUDIO_H_
157694 #define _DVBAUDIO_H_
157695
157696 +#ifdef __KERNEL__
157697 #include <linux/types.h>
157698 +#else
157699 +#include <stdint.h>
157700 +#endif
157701 +
157702
157703 typedef enum {
157704 AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
157705 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dvb/dmx.h linux-2.6.29-rc3.owrt/include/linux/dvb/dmx.h
157706 --- linux-2.6.29.owrt/include/linux/dvb/dmx.h 2009-05-10 22:04:37.000000000 +0200
157707 +++ linux-2.6.29-rc3.owrt/include/linux/dvb/dmx.h 2009-05-10 23:48:29.000000000 +0200
157708 @@ -24,7 +24,7 @@
157709 #ifndef _DVBDMX_H_
157710 #define _DVBDMX_H_
157711
157712 -#include <linux/types.h>
157713 +#include <asm/types.h>
157714 #ifdef __KERNEL__
157715 #include <linux/time.h>
157716 #else
157717 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dvb/frontend.h linux-2.6.29-rc3.owrt/include/linux/dvb/frontend.h
157718 --- linux-2.6.29.owrt/include/linux/dvb/frontend.h 2009-05-10 22:04:37.000000000 +0200
157719 +++ linux-2.6.29-rc3.owrt/include/linux/dvb/frontend.h 2009-05-10 23:48:29.000000000 +0200
157720 @@ -26,7 +26,8 @@
157721 #ifndef _DVBFRONTEND_H_
157722 #define _DVBFRONTEND_H_
157723
157724 -#include <linux/types.h>
157725 +#include <asm/types.h>
157726 +
157727
157728 typedef enum fe_type {
157729 FE_QPSK,
157730 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dvb/net.h linux-2.6.29-rc3.owrt/include/linux/dvb/net.h
157731 --- linux-2.6.29.owrt/include/linux/dvb/net.h 2009-05-10 22:04:37.000000000 +0200
157732 +++ linux-2.6.29-rc3.owrt/include/linux/dvb/net.h 2009-05-10 23:48:29.000000000 +0200
157733 @@ -24,7 +24,8 @@
157734 #ifndef _DVBNET_H_
157735 #define _DVBNET_H_
157736
157737 -#include <linux/types.h>
157738 +#include <asm/types.h>
157739 +
157740
157741 struct dvb_net_if {
157742 __u16 pid;
157743 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/dvb/video.h linux-2.6.29-rc3.owrt/include/linux/dvb/video.h
157744 --- linux-2.6.29.owrt/include/linux/dvb/video.h 2009-05-10 22:04:37.000000000 +0200
157745 +++ linux-2.6.29-rc3.owrt/include/linux/dvb/video.h 2009-05-10 23:48:29.000000000 +0200
157746 @@ -24,14 +24,17 @@
157747 #ifndef _DVBVIDEO_H_
157748 #define _DVBVIDEO_H_
157749
157750 -#include <linux/types.h>
157751 -#ifdef __KERNEL__
157752 #include <linux/compiler.h>
157753 +
157754 +#ifdef __KERNEL__
157755 +#include <linux/types.h>
157756 #else
157757 +#include <asm/types.h>
157758 #include <stdint.h>
157759 #include <time.h>
157760 #endif
157761
157762 +
157763 typedef enum {
157764 VIDEO_FORMAT_4_3, /* Select 4:3 format */
157765 VIDEO_FORMAT_16_9, /* Select 16:9 format. */
157766 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/edd.h linux-2.6.29-rc3.owrt/include/linux/edd.h
157767 --- linux-2.6.29.owrt/include/linux/edd.h 2009-05-10 22:04:37.000000000 +0200
157768 +++ linux-2.6.29-rc3.owrt/include/linux/edd.h 2009-05-10 23:48:29.000000000 +0200
157769 @@ -30,8 +30,6 @@
157770 #ifndef _LINUX_EDD_H
157771 #define _LINUX_EDD_H
157772
157773 -#include <linux/types.h>
157774 -
157775 #define EDDNR 0x1e9 /* addr of number of edd_info structs at EDDBUF
157776 in boot_params - treat this as 1 byte */
157777 #define EDDBUF 0xd00 /* addr of edd_info structs in boot_params */
157778 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/efs_fs_sb.h linux-2.6.29-rc3.owrt/include/linux/efs_fs_sb.h
157779 --- linux-2.6.29.owrt/include/linux/efs_fs_sb.h 2009-05-10 22:04:37.000000000 +0200
157780 +++ linux-2.6.29-rc3.owrt/include/linux/efs_fs_sb.h 2009-05-10 23:48:29.000000000 +0200
157781 @@ -9,7 +9,6 @@
157782 #ifndef __EFS_FS_SB_H__
157783 #define __EFS_FS_SB_H__
157784
157785 -#include <linux/types.h>
157786 #include <linux/magic.h>
157787
157788 /* EFS superblock magic numbers */
157789 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/elf-fdpic.h linux-2.6.29-rc3.owrt/include/linux/elf-fdpic.h
157790 --- linux-2.6.29.owrt/include/linux/elf-fdpic.h 2009-05-10 22:04:37.000000000 +0200
157791 +++ linux-2.6.29-rc3.owrt/include/linux/elf-fdpic.h 2009-05-10 23:48:29.000000000 +0200
157792 @@ -58,13 +58,11 @@
157793 #define ELF_FDPIC_FLAG_PRESENT 0x80000000 /* T if this object is present */
157794 };
157795
157796 -#ifdef __KERNEL__
157797 #ifdef CONFIG_MMU
157798 extern void elf_fdpic_arch_lay_out_mm(struct elf_fdpic_params *exec_params,
157799 struct elf_fdpic_params *interp_params,
157800 unsigned long *start_stack,
157801 unsigned long *start_brk);
157802 #endif
157803 -#endif /* __KERNEL__ */
157804
157805 #endif /* _LINUX_ELF_FDPIC_H */
157806 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/elf.h linux-2.6.29-rc3.owrt/include/linux/elf.h
157807 --- linux-2.6.29.owrt/include/linux/elf.h 2009-05-10 22:04:37.000000000 +0200
157808 +++ linux-2.6.29-rc3.owrt/include/linux/elf.h 2009-05-10 23:48:29.000000000 +0200
157809 @@ -377,7 +377,6 @@
157810 Elf64_Word n_type; /* Content type */
157811 } Elf64_Nhdr;
157812
157813 -#ifdef __KERNEL__
157814 #if ELF_CLASS == ELFCLASS32
157815
157816 extern Elf32_Dyn _DYNAMIC [];
157817 @@ -405,5 +404,5 @@
157818 extern int elf_coredump_extra_notes_size(void);
157819 extern int elf_coredump_extra_notes_write(struct file *file, loff_t *foffset);
157820 #endif
157821 -#endif /* __KERNEL__ */
157822 +
157823 #endif /* _LINUX_ELF_H */
157824 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/errqueue.h linux-2.6.29-rc3.owrt/include/linux/errqueue.h
157825 --- linux-2.6.29.owrt/include/linux/errqueue.h 2009-05-10 22:04:37.000000000 +0200
157826 +++ linux-2.6.29-rc3.owrt/include/linux/errqueue.h 2009-05-10 23:48:29.000000000 +0200
157827 @@ -1,8 +1,6 @@
157828 #ifndef _LINUX_ERRQUEUE_H
157829 #define _LINUX_ERRQUEUE_H 1
157830
157831 -#include <linux/types.h>
157832 -
157833 struct sock_extended_err
157834 {
157835 __u32 ee_errno;
157836 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/fb.h linux-2.6.29-rc3.owrt/include/linux/fb.h
157837 --- linux-2.6.29.owrt/include/linux/fb.h 2009-05-10 22:04:37.000000000 +0200
157838 +++ linux-2.6.29-rc3.owrt/include/linux/fb.h 2009-05-10 23:48:29.000000000 +0200
157839 @@ -960,21 +960,6 @@
157840 extern int num_registered_fb;
157841 extern struct class *fb_class;
157842
157843 -static inline int lock_fb_info(struct fb_info *info)
157844 -{
157845 - mutex_lock(&info->lock);
157846 - if (!info->fbops) {
157847 - mutex_unlock(&info->lock);
157848 - return 0;
157849 - }
157850 - return 1;
157851 -}
157852 -
157853 -static inline void unlock_fb_info(struct fb_info *info)
157854 -{
157855 - mutex_unlock(&info->lock);
157856 -}
157857 -
157858 static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
157859 u8 *src, u32 s_pitch, u32 height)
157860 {
157861 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/firmware-map.h linux-2.6.29-rc3.owrt/include/linux/firmware-map.h
157862 --- linux-2.6.29.owrt/include/linux/firmware-map.h 2009-05-10 22:04:37.000000000 +0200
157863 +++ linux-2.6.29-rc3.owrt/include/linux/firmware-map.h 2009-05-10 23:48:29.000000000 +0200
157864 @@ -1,7 +1,7 @@
157865 /*
157866 * include/linux/firmware-map.h:
157867 * Copyright (C) 2008 SUSE LINUX Products GmbH
157868 - * by Bernhard Walle <bernhard.walle@gmx.de>
157869 + * by Bernhard Walle <bwalle@suse.de>
157870 *
157871 * This program is free software; you can redistribute it and/or modify
157872 * it under the terms of the GNU General Public License v2.0 as published by
157873 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/fs.h linux-2.6.29-rc3.owrt/include/linux/fs.h
157874 --- linux-2.6.29.owrt/include/linux/fs.h 2009-05-10 22:04:37.000000000 +0200
157875 +++ linux-2.6.29-rc3.owrt/include/linux/fs.h 2009-05-10 23:48:29.000000000 +0200
157876 @@ -54,30 +54,24 @@
157877 #define MAY_ACCESS 16
157878 #define MAY_OPEN 32
157879
157880 -/*
157881 - * flags in file.f_mode. Note that FMODE_READ and FMODE_WRITE must correspond
157882 - * to O_WRONLY and O_RDWR via the strange trick in __dentry_open()
157883 - */
157884 -
157885 /* file is open for reading */
157886 #define FMODE_READ ((__force fmode_t)1)
157887 /* file is open for writing */
157888 #define FMODE_WRITE ((__force fmode_t)2)
157889 /* file is seekable */
157890 #define FMODE_LSEEK ((__force fmode_t)4)
157891 -/* file can be accessed using pread */
157892 +/* file can be accessed using pread/pwrite */
157893 #define FMODE_PREAD ((__force fmode_t)8)
157894 -/* file can be accessed using pwrite */
157895 -#define FMODE_PWRITE ((__force fmode_t)16)
157896 +#define FMODE_PWRITE FMODE_PREAD /* These go hand in hand */
157897 /* File is opened for execution with sys_execve / sys_uselib */
157898 -#define FMODE_EXEC ((__force fmode_t)32)
157899 +#define FMODE_EXEC ((__force fmode_t)16)
157900 /* File is opened with O_NDELAY (only set for block devices) */
157901 -#define FMODE_NDELAY ((__force fmode_t)64)
157902 +#define FMODE_NDELAY ((__force fmode_t)32)
157903 /* File is opened with O_EXCL (only set for block devices) */
157904 -#define FMODE_EXCL ((__force fmode_t)128)
157905 +#define FMODE_EXCL ((__force fmode_t)64)
157906 /* File is opened using open(.., 3, ..) and is writeable only for ioctls
157907 (specialy hack for floppy.c) */
157908 -#define FMODE_WRITE_IOCTL ((__force fmode_t)256)
157909 +#define FMODE_WRITE_IOCTL ((__force fmode_t)128)
157910
157911 /*
157912 * Don't update ctime and mtime.
157913 @@ -93,10 +87,10 @@
157914 #define WRITE 1
157915 #define READA 2 /* read-ahead - don't block if no resources */
157916 #define SWRITE 3 /* for ll_rw_block() - wait for buffer lock */
157917 -#define READ_SYNC (READ | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
157918 +#define READ_SYNC (READ | (1 << BIO_RW_SYNC))
157919 #define READ_META (READ | (1 << BIO_RW_META))
157920 -#define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
157921 -#define SWRITE_SYNC (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
157922 +#define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC))
157923 +#define SWRITE_SYNC (SWRITE | (1 << BIO_RW_SYNC))
157924 #define WRITE_BARRIER (WRITE | (1 << BIO_RW_BARRIER))
157925 #define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD)
157926 #define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER))
157927 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/genetlink.h linux-2.6.29-rc3.owrt/include/linux/genetlink.h
157928 --- linux-2.6.29.owrt/include/linux/genetlink.h 2009-05-10 22:04:37.000000000 +0200
157929 +++ linux-2.6.29-rc3.owrt/include/linux/genetlink.h 2009-05-10 23:48:29.000000000 +0200
157930 @@ -1,7 +1,6 @@
157931 #ifndef __LINUX_GENERIC_NETLINK_H
157932 #define __LINUX_GENERIC_NETLINK_H
157933
157934 -#include <linux/types.h>
157935 #include <linux/netlink.h>
157936
157937 #define GENL_NAMSIZ 16 /* length of family name */
157938 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/gfs2_ondisk.h linux-2.6.29-rc3.owrt/include/linux/gfs2_ondisk.h
157939 --- linux-2.6.29.owrt/include/linux/gfs2_ondisk.h 2009-05-10 22:04:37.000000000 +0200
157940 +++ linux-2.6.29-rc3.owrt/include/linux/gfs2_ondisk.h 2009-05-10 23:48:29.000000000 +0200
157941 @@ -10,8 +10,6 @@
157942 #ifndef __GFS2_ONDISK_DOT_H__
157943 #define __GFS2_ONDISK_DOT_H__
157944
157945 -#include <linux/types.h>
157946 -
157947 #define GFS2_MAGIC 0x01161970
157948 #define GFS2_BASIC_BLOCK 512
157949 #define GFS2_BASIC_BLOCK_SHIFT 9
157950 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/hdreg.h linux-2.6.29-rc3.owrt/include/linux/hdreg.h
157951 --- linux-2.6.29.owrt/include/linux/hdreg.h 2009-05-10 22:04:37.000000000 +0200
157952 +++ linux-2.6.29-rc3.owrt/include/linux/hdreg.h 2009-05-10 23:48:29.000000000 +0200
157953 @@ -511,6 +511,7 @@
157954 unsigned short words69_70[2]; /* reserved words 69-70
157955 * future command overlap and queuing
157956 */
157957 + /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
157958 unsigned short words71_74[4]; /* reserved words 71-74
157959 * for IDENTIFY PACKET DEVICE command
157960 */
157961 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/hiddev.h linux-2.6.29-rc3.owrt/include/linux/hiddev.h
157962 --- linux-2.6.29.owrt/include/linux/hiddev.h 2009-05-10 22:04:37.000000000 +0200
157963 +++ linux-2.6.29-rc3.owrt/include/linux/hiddev.h 2009-05-10 23:48:29.000000000 +0200
157964 @@ -27,8 +27,6 @@
157965 * Vojtech Pavlik, Ucitelska 1576, Prague 8, 182 00 Czech Republic
157966 */
157967
157968 -#include <linux/types.h>
157969 -
157970 /*
157971 * The event structure itself
157972 */
157973 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/hid.h linux-2.6.29-rc3.owrt/include/linux/hid.h
157974 --- linux-2.6.29.owrt/include/linux/hid.h 2009-05-10 22:04:37.000000000 +0200
157975 +++ linux-2.6.29-rc3.owrt/include/linux/hid.h 2009-05-10 23:48:29.000000000 +0200
157976 @@ -791,7 +791,6 @@
157977 __FILE__ , ## arg)
157978 #endif /* HID_FF */
157979
157980 -#ifdef __KERNEL__
157981 #ifdef CONFIG_HID_COMPAT
157982 #define HID_COMPAT_LOAD_DRIVER(name) \
157983 /* prototype to avoid sparse warning */ \
157984 @@ -805,7 +804,6 @@
157985 extern void hid_compat_##name(void); \
157986 hid_compat_##name(); \
157987 } while (0)
157988 -#endif /* __KERNEL__ */
157989
157990 #endif
157991
157992 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/hugetlb.h linux-2.6.29-rc3.owrt/include/linux/hugetlb.h
157993 --- linux-2.6.29.owrt/include/linux/hugetlb.h 2009-05-10 22:04:37.000000000 +0200
157994 +++ linux-2.6.29-rc3.owrt/include/linux/hugetlb.h 2009-05-10 23:48:29.000000000 +0200
157995 @@ -33,8 +33,7 @@
157996 int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
157997 unsigned long address, int write_access);
157998 int hugetlb_reserve_pages(struct inode *inode, long from, long to,
157999 - struct vm_area_struct *vma,
158000 - int acctflags);
158001 + struct vm_area_struct *vma);
158002 void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed);
158003
158004 extern unsigned long hugepages_treat_as_movable;
158005 @@ -139,7 +138,7 @@
158006
158007 extern const struct file_operations hugetlbfs_file_operations;
158008 extern struct vm_operations_struct hugetlb_vm_ops;
158009 -struct file *hugetlb_file_setup(const char *name, size_t, int);
158010 +struct file *hugetlb_file_setup(const char *name, size_t);
158011 int hugetlb_get_quota(struct address_space *mapping, long delta);
158012 void hugetlb_put_quota(struct address_space *mapping, long delta);
158013
158014 @@ -159,9 +158,9 @@
158015 }
158016 #else /* !CONFIG_HUGETLBFS */
158017
158018 -#define is_file_hugepages(file) 0
158019 -#define set_file_hugepages(file) BUG()
158020 -#define hugetlb_file_setup(name,size,acctflag) ERR_PTR(-ENOSYS)
158021 +#define is_file_hugepages(file) 0
158022 +#define set_file_hugepages(file) BUG()
158023 +#define hugetlb_file_setup(name,size) ERR_PTR(-ENOSYS)
158024
158025 #endif /* !CONFIG_HUGETLBFS */
158026
158027 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/i2c-dev.h linux-2.6.29-rc3.owrt/include/linux/i2c-dev.h
158028 --- linux-2.6.29.owrt/include/linux/i2c-dev.h 2009-05-10 22:04:37.000000000 +0200
158029 +++ linux-2.6.29-rc3.owrt/include/linux/i2c-dev.h 2009-05-10 23:48:29.000000000 +0200
158030 @@ -33,7 +33,7 @@
158031 */
158032 #define I2C_RETRIES 0x0701 /* number of times a device address should
158033 be polled when not acknowledging */
158034 -#define I2C_TIMEOUT 0x0702 /* set timeout in units of 10 ms */
158035 +#define I2C_TIMEOUT 0x0702 /* set timeout in jiffies - call with int */
158036
158037 /* NOTE: Slave address is 7 or 10 bits, but 10-bit addresses
158038 * are NOT supported! (due to code brokenness)
158039 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/i2c.h linux-2.6.29-rc3.owrt/include/linux/i2c.h
158040 --- linux-2.6.29.owrt/include/linux/i2c.h 2009-05-10 22:04:37.000000000 +0200
158041 +++ linux-2.6.29-rc3.owrt/include/linux/i2c.h 2009-05-10 23:48:29.000000000 +0200
158042 @@ -361,7 +361,7 @@
158043 struct mutex bus_lock;
158044 struct mutex clist_lock;
158045
158046 - int timeout; /* in jiffies */
158047 + int timeout;
158048 int retries;
158049 struct device dev; /* the adapter device */
158050
158051 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/icmpv6.h linux-2.6.29-rc3.owrt/include/linux/icmpv6.h
158052 --- linux-2.6.29.owrt/include/linux/icmpv6.h 2009-05-10 22:04:37.000000000 +0200
158053 +++ linux-2.6.29-rc3.owrt/include/linux/icmpv6.h 2009-05-10 23:48:29.000000000 +0200
158054 @@ -1,7 +1,6 @@
158055 #ifndef _LINUX_ICMPV6_H
158056 #define _LINUX_ICMPV6_H
158057
158058 -#include <linux/types.h>
158059 #include <asm/byteorder.h>
158060
158061 struct icmp6hdr {
158062 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ide.h linux-2.6.29-rc3.owrt/include/linux/ide.h
158063 --- linux-2.6.29.owrt/include/linux/ide.h 2009-05-10 22:04:37.000000000 +0200
158064 +++ linux-2.6.29-rc3.owrt/include/linux/ide.h 2009-05-10 23:48:29.000000000 +0200
158065 @@ -663,7 +663,7 @@
158066 #define to_ide_device(dev) container_of(dev, ide_drive_t, gendev)
158067
158068 #define to_ide_drv(obj, cont_type) \
158069 - container_of(obj, struct cont_type, dev)
158070 + container_of(obj, struct cont_type, kref)
158071
158072 #define ide_drv_g(disk, cont_type) \
158073 container_of((disk)->private_data, struct cont_type, driver)
158074 @@ -797,7 +797,6 @@
158075 struct scatterlist *sg_table;
158076 int sg_max_nents; /* Maximum number of entries in it */
158077 int sg_nents; /* Current number of entries in it */
158078 - int orig_sg_nents;
158079 int sg_dma_direction; /* dma transfer direction */
158080
158081 /* data phase of the active command (currently only valid for PIO/DMA) */
158082 @@ -867,7 +866,6 @@
158083 unsigned int n_ports;
158084 struct device *dev[2];
158085 unsigned int (*init_chipset)(struct pci_dev *);
158086 - irq_handler_t irq_handler;
158087 unsigned long host_flags;
158088 void *host_priv;
158089 ide_hwif_t *cur_port; /* for hosts requiring serialization */
158090 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_addr.h linux-2.6.29-rc3.owrt/include/linux/if_addr.h
158091 --- linux-2.6.29.owrt/include/linux/if_addr.h 2009-05-10 22:04:37.000000000 +0200
158092 +++ linux-2.6.29-rc3.owrt/include/linux/if_addr.h 2009-05-10 23:48:29.000000000 +0200
158093 @@ -1,7 +1,6 @@
158094 #ifndef __LINUX_IF_ADDR_H
158095 #define __LINUX_IF_ADDR_H
158096
158097 -#include <linux/types.h>
158098 #include <linux/netlink.h>
158099
158100 struct ifaddrmsg
158101 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_addrlabel.h linux-2.6.29-rc3.owrt/include/linux/if_addrlabel.h
158102 --- linux-2.6.29.owrt/include/linux/if_addrlabel.h 2009-05-10 22:04:37.000000000 +0200
158103 +++ linux-2.6.29-rc3.owrt/include/linux/if_addrlabel.h 2009-05-10 23:48:29.000000000 +0200
158104 @@ -10,8 +10,6 @@
158105 #ifndef __LINUX_IF_ADDRLABEL_H
158106 #define __LINUX_IF_ADDRLABEL_H
158107
158108 -#include <linux/types.h>
158109 -
158110 struct ifaddrlblmsg
158111 {
158112 __u8 ifal_family; /* Address family */
158113 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_fc.h linux-2.6.29-rc3.owrt/include/linux/if_fc.h
158114 --- linux-2.6.29.owrt/include/linux/if_fc.h 2009-05-10 22:04:37.000000000 +0200
158115 +++ linux-2.6.29-rc3.owrt/include/linux/if_fc.h 2009-05-10 23:48:29.000000000 +0200
158116 @@ -20,7 +20,6 @@
158117 #ifndef _LINUX_IF_FC_H
158118 #define _LINUX_IF_FC_H
158119
158120 -#include <linux/types.h>
158121
158122 #define FC_ALEN 6 /* Octets in one ethernet addr */
158123 #define FC_HLEN (sizeof(struct fch_hdr)+sizeof(struct fcllc))
158124 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_hippi.h linux-2.6.29-rc3.owrt/include/linux/if_hippi.h
158125 --- linux-2.6.29.owrt/include/linux/if_hippi.h 2009-05-10 22:04:37.000000000 +0200
158126 +++ linux-2.6.29-rc3.owrt/include/linux/if_hippi.h 2009-05-10 23:48:29.000000000 +0200
158127 @@ -22,7 +22,6 @@
158128 #ifndef _LINUX_IF_HIPPI_H
158129 #define _LINUX_IF_HIPPI_H
158130
158131 -#include <linux/types.h>
158132 #include <asm/byteorder.h>
158133
158134 /*
158135 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_link.h linux-2.6.29-rc3.owrt/include/linux/if_link.h
158136 --- linux-2.6.29.owrt/include/linux/if_link.h 2009-05-10 22:04:37.000000000 +0200
158137 +++ linux-2.6.29-rc3.owrt/include/linux/if_link.h 2009-05-10 23:48:29.000000000 +0200
158138 @@ -1,7 +1,6 @@
158139 #ifndef _LINUX_IF_LINK_H
158140 #define _LINUX_IF_LINK_H
158141
158142 -#include <linux/types.h>
158143 #include <linux/netlink.h>
158144
158145 /* The struct should be in sync with struct net_device_stats */
158146 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_ppp.h linux-2.6.29-rc3.owrt/include/linux/if_ppp.h
158147 --- linux-2.6.29.owrt/include/linux/if_ppp.h 2009-05-10 22:04:37.000000000 +0200
158148 +++ linux-2.6.29-rc3.owrt/include/linux/if_ppp.h 2009-05-10 23:48:29.000000000 +0200
158149 @@ -33,7 +33,6 @@
158150 #ifndef _IF_PPP_H_
158151 #define _IF_PPP_H_
158152
158153 -#include <linux/types.h>
158154 #include <linux/compiler.h>
158155
158156 /*
158157 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_strip.h linux-2.6.29-rc3.owrt/include/linux/if_strip.h
158158 --- linux-2.6.29.owrt/include/linux/if_strip.h 2009-05-10 22:04:37.000000000 +0200
158159 +++ linux-2.6.29-rc3.owrt/include/linux/if_strip.h 2009-05-10 23:48:29.000000000 +0200
158160 @@ -18,8 +18,6 @@
158161 #ifndef __LINUX_STRIP_H
158162 #define __LINUX_STRIP_H
158163
158164 -#include <linux/types.h>
158165 -
158166 typedef struct {
158167 __u8 c[6];
158168 } MetricomAddress;
158169 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_tr.h linux-2.6.29-rc3.owrt/include/linux/if_tr.h
158170 --- linux-2.6.29.owrt/include/linux/if_tr.h 2009-05-10 22:04:37.000000000 +0200
158171 +++ linux-2.6.29-rc3.owrt/include/linux/if_tr.h 2009-05-10 23:48:29.000000000 +0200
158172 @@ -19,7 +19,6 @@
158173 #ifndef _LINUX_IF_TR_H
158174 #define _LINUX_IF_TR_H
158175
158176 -#include <linux/types.h>
158177 #include <asm/byteorder.h> /* For __be16 */
158178
158179 /* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble
158180 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_tunnel.h linux-2.6.29-rc3.owrt/include/linux/if_tunnel.h
158181 --- linux-2.6.29.owrt/include/linux/if_tunnel.h 2009-05-10 22:04:37.000000000 +0200
158182 +++ linux-2.6.29-rc3.owrt/include/linux/if_tunnel.h 2009-05-10 23:48:29.000000000 +0200
158183 @@ -2,10 +2,7 @@
158184 #define _IF_TUNNEL_H_
158185
158186 #include <linux/types.h>
158187 -
158188 -#ifdef __KERNEL__
158189 #include <linux/ip.h>
158190 -#endif
158191
158192 #define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)
158193 #define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
158194 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/if_vlan.h linux-2.6.29-rc3.owrt/include/linux/if_vlan.h
158195 --- linux-2.6.29.owrt/include/linux/if_vlan.h 2009-05-10 22:04:37.000000000 +0200
158196 +++ linux-2.6.29-rc3.owrt/include/linux/if_vlan.h 2009-05-10 23:48:29.000000000 +0200
158197 @@ -210,7 +210,6 @@
158198
158199 /* Move the mac addresses to the beginning of the new header. */
158200 memmove(skb->data, skb->data + VLAN_HLEN, 2 * VLAN_ETH_ALEN);
158201 - skb->mac_header -= VLAN_HLEN;
158202
158203 /* first, the ethernet type */
158204 veth->h_vlan_proto = htons(ETH_P_8021Q);
158205 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/igmp.h linux-2.6.29-rc3.owrt/include/linux/igmp.h
158206 --- linux-2.6.29.owrt/include/linux/igmp.h 2009-05-10 22:04:37.000000000 +0200
158207 +++ linux-2.6.29-rc3.owrt/include/linux/igmp.h 2009-05-10 23:48:29.000000000 +0200
158208 @@ -16,7 +16,6 @@
158209 #ifndef _LINUX_IGMP_H
158210 #define _LINUX_IGMP_H
158211
158212 -#include <linux/types.h>
158213 #include <asm/byteorder.h>
158214
158215 /*
158216 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/inet_diag.h linux-2.6.29-rc3.owrt/include/linux/inet_diag.h
158217 --- linux-2.6.29.owrt/include/linux/inet_diag.h 2009-05-10 22:04:37.000000000 +0200
158218 +++ linux-2.6.29-rc3.owrt/include/linux/inet_diag.h 2009-05-10 23:48:29.000000000 +0200
158219 @@ -1,8 +1,6 @@
158220 #ifndef _INET_DIAG_H_
158221 #define _INET_DIAG_H_ 1
158222
158223 -#include <linux/types.h>
158224 -
158225 /* Just some random number */
158226 #define TCPDIAG_GETSOCK 18
158227 #define DCCPDIAG_GETSOCK 19
158228 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/init_task.h linux-2.6.29-rc3.owrt/include/linux/init_task.h
158229 --- linux-2.6.29.owrt/include/linux/init_task.h 2009-05-10 22:04:37.000000000 +0200
158230 +++ linux-2.6.29-rc3.owrt/include/linux/init_task.h 2009-05-10 23:48:29.000000000 +0200
158231 @@ -48,11 +48,12 @@
158232 .posix_timers = LIST_HEAD_INIT(sig.posix_timers), \
158233 .cpu_timers = INIT_CPU_TIMERS(sig.cpu_timers), \
158234 .rlim = INIT_RLIMITS, \
158235 - .cputimer = { \
158236 - .cputime = INIT_CPUTIME, \
158237 - .running = 0, \
158238 - .lock = __SPIN_LOCK_UNLOCKED(sig.cputimer.lock), \
158239 - }, \
158240 + .cputime = { .totals = { \
158241 + .utime = cputime_zero, \
158242 + .stime = cputime_zero, \
158243 + .sum_exec_runtime = 0, \
158244 + .lock = __SPIN_LOCK_UNLOCKED(sig.cputime.totals.lock), \
158245 + }, }, \
158246 }
158247
158248 extern struct nsproxy init_nsproxy;
158249 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/intel-iommu.h linux-2.6.29-rc3.owrt/include/linux/intel-iommu.h
158250 --- linux-2.6.29.owrt/include/linux/intel-iommu.h 2009-05-10 22:04:37.000000000 +0200
158251 +++ linux-2.6.29-rc3.owrt/include/linux/intel-iommu.h 2009-05-10 23:48:29.000000000 +0200
158252 @@ -194,7 +194,6 @@
158253 /* FSTS_REG */
158254 #define DMA_FSTS_PPF ((u32)2)
158255 #define DMA_FSTS_PFO ((u32)1)
158256 -#define DMA_FSTS_IQE (1 << 4)
158257 #define dma_fsts_fault_record_index(s) (((s) >> 8) & 0xff)
158258
158259 /* FRCD_REG, 32 bits access */
158260 @@ -329,7 +328,7 @@
158261 unsigned int size_order, u64 type,
158262 int non_present_entry_flush);
158263
158264 -extern int qi_submit_sync(struct qi_desc *desc, struct intel_iommu *iommu);
158265 +extern void qi_submit_sync(struct qi_desc *desc, struct intel_iommu *iommu);
158266
158267 extern void *intel_alloc_coherent(struct device *, size_t, dma_addr_t *, gfp_t);
158268 extern void intel_free_coherent(struct device *, size_t, void *, dma_addr_t);
158269 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/io-mapping.h linux-2.6.29-rc3.owrt/include/linux/io-mapping.h
158270 --- linux-2.6.29.owrt/include/linux/io-mapping.h 2009-05-10 22:04:37.000000000 +0200
158271 +++ linux-2.6.29-rc3.owrt/include/linux/io-mapping.h 2009-05-10 23:48:29.000000000 +0200
158272 @@ -30,13 +30,10 @@
158273 * See Documentation/io_mapping.txt
158274 */
158275
158276 -#ifdef CONFIG_HAVE_ATOMIC_IOMAP
158277 +/* this struct isn't actually defined anywhere */
158278 +struct io_mapping;
158279
158280 -struct io_mapping {
158281 - resource_size_t base;
158282 - unsigned long size;
158283 - pgprot_t prot;
158284 -};
158285 +#ifdef CONFIG_HAVE_ATOMIC_IOMAP
158286
158287 /*
158288 * For small address space machines, mapping large objects
158289 @@ -46,40 +43,23 @@
158290 */
158291
158292 static inline struct io_mapping *
158293 -io_mapping_create_wc(resource_size_t base, unsigned long size)
158294 +io_mapping_create_wc(unsigned long base, unsigned long size)
158295 {
158296 - struct io_mapping *iomap;
158297 -
158298 - if (!is_io_mapping_possible(base, size))
158299 - return NULL;
158300 -
158301 - iomap = kmalloc(sizeof(*iomap), GFP_KERNEL);
158302 - if (!iomap)
158303 - return NULL;
158304 -
158305 - iomap->base = base;
158306 - iomap->size = size;
158307 - iomap->prot = pgprot_writecombine(__pgprot(__PAGE_KERNEL));
158308 - return iomap;
158309 + return (struct io_mapping *) base;
158310 }
158311
158312 static inline void
158313 io_mapping_free(struct io_mapping *mapping)
158314 {
158315 - kfree(mapping);
158316 }
158317
158318 /* Atomic map/unmap */
158319 static inline void *
158320 io_mapping_map_atomic_wc(struct io_mapping *mapping, unsigned long offset)
158321 {
158322 - resource_size_t phys_addr;
158323 - unsigned long pfn;
158324 -
158325 - BUG_ON(offset >= mapping->size);
158326 - phys_addr = mapping->base + offset;
158327 - pfn = (unsigned long) (phys_addr >> PAGE_SHIFT);
158328 - return iomap_atomic_prot_pfn(pfn, KM_USER0, mapping->prot);
158329 + offset += (unsigned long) mapping;
158330 + return iomap_atomic_prot_pfn(offset >> PAGE_SHIFT, KM_USER0,
158331 + __pgprot(__PAGE_KERNEL_WC));
158332 }
158333
158334 static inline void
158335 @@ -91,12 +71,8 @@
158336 static inline void *
158337 io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset)
158338 {
158339 - resource_size_t phys_addr;
158340 -
158341 - BUG_ON(offset >= mapping->size);
158342 - phys_addr = mapping->base + offset;
158343 -
158344 - return ioremap_wc(phys_addr, PAGE_SIZE);
158345 + offset += (unsigned long) mapping;
158346 + return ioremap_wc(offset, PAGE_SIZE);
158347 }
158348
158349 static inline void
158350 @@ -107,12 +83,9 @@
158351
158352 #else
158353
158354 -/* this struct isn't actually defined anywhere */
158355 -struct io_mapping;
158356 -
158357 /* Create the io_mapping object*/
158358 static inline struct io_mapping *
158359 -io_mapping_create_wc(resource_size_t base, unsigned long size)
158360 +io_mapping_create_wc(unsigned long base, unsigned long size)
158361 {
158362 return (struct io_mapping *) ioremap_wc(base, size);
158363 }
158364 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ip6_tunnel.h linux-2.6.29-rc3.owrt/include/linux/ip6_tunnel.h
158365 --- linux-2.6.29.owrt/include/linux/ip6_tunnel.h 2009-05-10 22:04:37.000000000 +0200
158366 +++ linux-2.6.29-rc3.owrt/include/linux/ip6_tunnel.h 2009-05-10 23:48:29.000000000 +0200
158367 @@ -1,8 +1,6 @@
158368 #ifndef _IP6_TUNNEL_H
158369 #define _IP6_TUNNEL_H
158370
158371 -#include <linux/types.h>
158372 -
158373 #define IPV6_TLV_TNL_ENCAP_LIMIT 4
158374 #define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
158375
158376 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ipv6.h linux-2.6.29-rc3.owrt/include/linux/ipv6.h
158377 --- linux-2.6.29.owrt/include/linux/ipv6.h 2009-05-10 22:04:37.000000000 +0200
158378 +++ linux-2.6.29-rc3.owrt/include/linux/ipv6.h 2009-05-10 23:48:29.000000000 +0200
158379 @@ -1,7 +1,6 @@
158380 #ifndef _IPV6_H
158381 #define _IPV6_H
158382
158383 -#include <linux/types.h>
158384 #include <linux/in6.h>
158385 #include <asm/byteorder.h>
158386
158387 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ipv6_route.h linux-2.6.29-rc3.owrt/include/linux/ipv6_route.h
158388 --- linux-2.6.29.owrt/include/linux/ipv6_route.h 2009-05-10 22:04:37.000000000 +0200
158389 +++ linux-2.6.29-rc3.owrt/include/linux/ipv6_route.h 2009-05-10 23:48:29.000000000 +0200
158390 @@ -13,8 +13,6 @@
158391 #ifndef _LINUX_IPV6_ROUTE_H
158392 #define _LINUX_IPV6_ROUTE_H
158393
158394 -#include <linux/types.h>
158395 -
158396 #define RTF_DEFAULT 0x00010000 /* default - learned via ND */
158397 #define RTF_ALLONLINK 0x00020000 /* (deprecated and will be removed)
158398 fallback, no routers on link */
158399 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ipx.h linux-2.6.29-rc3.owrt/include/linux/ipx.h
158400 --- linux-2.6.29.owrt/include/linux/ipx.h 2009-05-10 22:04:37.000000000 +0200
158401 +++ linux-2.6.29-rc3.owrt/include/linux/ipx.h 2009-05-10 23:48:29.000000000 +0200
158402 @@ -1,6 +1,5 @@
158403 #ifndef _IPX_H_
158404 #define _IPX_H_
158405 -#include <linux/types.h>
158406 #include <linux/sockios.h>
158407 #include <linux/socket.h>
158408 #define IPX_NODE_LEN 6
158409 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/irda.h linux-2.6.29-rc3.owrt/include/linux/irda.h
158410 --- linux-2.6.29.owrt/include/linux/irda.h 2009-05-10 22:04:37.000000000 +0200
158411 +++ linux-2.6.29-rc3.owrt/include/linux/irda.h 2009-05-10 23:48:29.000000000 +0200
158412 @@ -25,8 +25,6 @@
158413 #ifndef KERNEL_IRDA_H
158414 #define KERNEL_IRDA_H
158415
158416 -#include <linux/types.h>
158417 -
158418 /* Please do *not* add any #include in this file, this file is
158419 * included as-is in user space.
158420 * Please fix the calling file to properly included needed files before
158421 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/jbd2.h linux-2.6.29-rc3.owrt/include/linux/jbd2.h
158422 --- linux-2.6.29.owrt/include/linux/jbd2.h 2009-05-10 22:04:37.000000000 +0200
158423 +++ linux-2.6.29-rc3.owrt/include/linux/jbd2.h 2009-05-10 23:48:29.000000000 +0200
158424 @@ -308,8 +308,7 @@
158425 int val = (expr); \
158426 if (!val) { \
158427 printk(KERN_ERR \
158428 - "JBD2 unexpected failure: %s: %s;\n", \
158429 - __func__, #expr); \
158430 + "EXT3-fs unexpected failure: %s;\n",# expr); \
158431 printk(KERN_ERR why "\n"); \
158432 } \
158433 val; \
158434 @@ -1150,8 +1149,7 @@
158435 extern int jbd2_journal_bmap(journal_t *, unsigned long, unsigned long long *);
158436 extern int jbd2_journal_force_commit(journal_t *);
158437 extern int jbd2_journal_file_inode(handle_t *handle, struct jbd2_inode *inode);
158438 -extern int jbd2_journal_begin_ordered_truncate(journal_t *journal,
158439 - struct jbd2_inode *inode, loff_t new_size);
158440 +extern int jbd2_journal_begin_ordered_truncate(struct jbd2_inode *inode, loff_t new_size);
158441 extern void jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, struct inode *inode);
158442 extern void jbd2_journal_release_jbd_inode(journal_t *journal, struct jbd2_inode *jinode);
158443
158444 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/Kbuild linux-2.6.29-rc3.owrt/include/linux/Kbuild
158445 --- linux-2.6.29.owrt/include/linux/Kbuild 2009-05-10 22:04:37.000000000 +0200
158446 +++ linux-2.6.29-rc3.owrt/include/linux/Kbuild 2009-05-10 23:48:29.000000000 +0200
158447 @@ -41,7 +41,6 @@
158448 header-y += bfs_fs.h
158449 header-y += blkpg.h
158450 header-y += bpqether.h
158451 -header-y += bsg.h
158452 header-y += can.h
158453 header-y += cdk.h
158454 header-y += chio.h
158455 @@ -52,7 +51,6 @@
158456 header-y += cgroupstats.h
158457 header-y += cramfs_fs.h
158458 header-y += cycx_cfm.h
158459 -header-y += dcbnl.h
158460 header-y += dlmconstants.h
158461 header-y += dlm_device.h
158462 header-y += dlm_netlink.h
158463 @@ -91,6 +89,7 @@
158464 header-y += if_slip.h
158465 header-y += if_strip.h
158466 header-y += if_tun.h
158467 +header-y += if_tunnel.h
158468 header-y += in_route.h
158469 header-y += ioctl.h
158470 header-y += ip6_tunnel.h
158471 @@ -236,7 +235,6 @@
158472 unifdef-y += if_pppol2tp.h
158473 unifdef-y += if_pppox.h
158474 unifdef-y += if_tr.h
158475 -unifdef-y += if_tunnel.h
158476 unifdef-y += if_vlan.h
158477 unifdef-y += igmp.h
158478 unifdef-y += inet_diag.h
158479 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/kernel.h linux-2.6.29-rc3.owrt/include/linux/kernel.h
158480 --- linux-2.6.29.owrt/include/linux/kernel.h 2009-05-10 22:04:37.000000000 +0200
158481 +++ linux-2.6.29-rc3.owrt/include/linux/kernel.h 2009-05-10 23:48:29.000000000 +0200
158482 @@ -480,8 +480,7 @@
158483 /*
158484 * swap - swap value of @a and @b
158485 */
158486 -#define swap(a, b) \
158487 - do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
158488 +#define swap(a, b) ({ typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; })
158489
158490 /**
158491 * container_of - cast a member of a structure out to the containing structure
158492 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/kprobes.h linux-2.6.29-rc3.owrt/include/linux/kprobes.h
158493 --- linux-2.6.29.owrt/include/linux/kprobes.h 2009-05-10 22:04:37.000000000 +0200
158494 +++ linux-2.6.29-rc3.owrt/include/linux/kprobes.h 2009-05-10 23:48:29.000000000 +0200
158495 @@ -49,13 +49,6 @@
158496
158497 /* Attach to insert probes on any functions which should be ignored*/
158498 #define __kprobes __attribute__((__section__(".kprobes.text"))) notrace
158499 -#else /* CONFIG_KPROBES */
158500 -typedef int kprobe_opcode_t;
158501 -struct arch_specific_insn {
158502 - int dummy;
158503 -};
158504 -#define __kprobes notrace
158505 -#endif /* CONFIG_KPROBES */
158506
158507 struct kprobe;
158508 struct pt_regs;
158509 @@ -138,6 +131,23 @@
158510 /* For backward compatibility with old code using JPROBE_ENTRY() */
158511 #define JPROBE_ENTRY(handler) (handler)
158512
158513 +DECLARE_PER_CPU(struct kprobe *, current_kprobe);
158514 +DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
158515 +
158516 +#ifdef CONFIG_KRETPROBES
158517 +extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
158518 + struct pt_regs *regs);
158519 +extern int arch_trampoline_kprobe(struct kprobe *p);
158520 +#else /* CONFIG_KRETPROBES */
158521 +static inline void arch_prepare_kretprobe(struct kretprobe *rp,
158522 + struct pt_regs *regs)
158523 +{
158524 +}
158525 +static inline int arch_trampoline_kprobe(struct kprobe *p)
158526 +{
158527 + return 0;
158528 +}
158529 +#endif /* CONFIG_KRETPROBES */
158530 /*
158531 * Function-return probe -
158532 * Note:
158533 @@ -178,25 +188,6 @@
158534 unsigned long range;
158535 };
158536
158537 -#ifdef CONFIG_KPROBES
158538 -DECLARE_PER_CPU(struct kprobe *, current_kprobe);
158539 -DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
158540 -
158541 -#ifdef CONFIG_KRETPROBES
158542 -extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
158543 - struct pt_regs *regs);
158544 -extern int arch_trampoline_kprobe(struct kprobe *p);
158545 -#else /* CONFIG_KRETPROBES */
158546 -static inline void arch_prepare_kretprobe(struct kretprobe *rp,
158547 - struct pt_regs *regs)
158548 -{
158549 -}
158550 -static inline int arch_trampoline_kprobe(struct kprobe *p)
158551 -{
158552 - return 0;
158553 -}
158554 -#endif /* CONFIG_KRETPROBES */
158555 -
158556 extern struct kretprobe_blackpoint kretprobe_blacklist[];
158557
158558 static inline void kretprobe_assert(struct kretprobe_instance *ri,
158559 @@ -273,6 +264,10 @@
158560
158561 #else /* CONFIG_KPROBES */
158562
158563 +#define __kprobes notrace
158564 +struct jprobe;
158565 +struct kretprobe;
158566 +
158567 static inline struct kprobe *get_kprobe(void *addr)
158568 {
158569 return NULL;
158570 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/kvm.h linux-2.6.29-rc3.owrt/include/linux/kvm.h
158571 --- linux-2.6.29.owrt/include/linux/kvm.h 2009-05-10 22:04:37.000000000 +0200
158572 +++ linux-2.6.29-rc3.owrt/include/linux/kvm.h 2009-05-10 23:48:29.000000000 +0200
158573 @@ -58,10 +58,10 @@
158574 __u32 pad;
158575 union {
158576 char dummy[512]; /* reserving space */
158577 -#ifdef __KVM_HAVE_PIT
158578 +#ifdef CONFIG_X86
158579 struct kvm_pic_state pic;
158580 #endif
158581 -#ifdef __KVM_HAVE_IOAPIC
158582 +#if defined(CONFIG_X86) || defined(CONFIG_IA64)
158583 struct kvm_ioapic_state ioapic;
158584 #endif
158585 } chip;
158586 @@ -384,16 +384,16 @@
158587 #define KVM_CAP_MP_STATE 14
158588 #define KVM_CAP_COALESCED_MMIO 15
158589 #define KVM_CAP_SYNC_MMU 16 /* Changes to host mmap are reflected in guest */
158590 -#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
158591 +#if defined(CONFIG_X86)||defined(CONFIG_IA64)
158592 #define KVM_CAP_DEVICE_ASSIGNMENT 17
158593 #endif
158594 #define KVM_CAP_IOMMU 18
158595 -#ifdef __KVM_HAVE_MSI
158596 +#if defined(CONFIG_X86)
158597 #define KVM_CAP_DEVICE_MSI 20
158598 #endif
158599 /* Bug in KVM_SET_USER_MEMORY_REGION fixed: */
158600 #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
158601 -#ifdef __KVM_HAVE_USER_NMI
158602 +#if defined(CONFIG_X86)
158603 #define KVM_CAP_USER_NMI 22
158604 #endif
158605
158606 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/kvm_host.h linux-2.6.29-rc3.owrt/include/linux/kvm_host.h
158607 --- linux-2.6.29.owrt/include/linux/kvm_host.h 2009-05-10 22:04:37.000000000 +0200
158608 +++ linux-2.6.29-rc3.owrt/include/linux/kvm_host.h 2009-05-10 23:48:29.000000000 +0200
158609 @@ -285,7 +285,6 @@
158610 struct kvm *kvm_arch_create_vm(void);
158611 void kvm_arch_destroy_vm(struct kvm *kvm);
158612 void kvm_free_all_assigned_devices(struct kvm *kvm);
158613 -void kvm_arch_sync_events(struct kvm *kvm);
158614
158615 int kvm_cpu_get_interrupt(struct kvm_vcpu *v);
158616 int kvm_cpu_has_interrupt(struct kvm_vcpu *v);
158617 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/libata.h linux-2.6.29-rc3.owrt/include/linux/libata.h
158618 --- linux-2.6.29.owrt/include/linux/libata.h 2009-05-10 22:04:37.000000000 +0200
158619 +++ linux-2.6.29-rc3.owrt/include/linux/libata.h 2009-05-10 23:48:29.000000000 +0200
158620 @@ -275,7 +275,7 @@
158621 * advised to wait only for the following duration before
158622 * doing SRST.
158623 */
158624 - ATA_TMOUT_PMP_SRST_WAIT = 5000,
158625 + ATA_TMOUT_PMP_SRST_WAIT = 1000,
158626
158627 /* ATA bus states */
158628 BUS_UNKNOWN = 0,
158629 @@ -380,7 +380,6 @@
158630 ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands
158631 not multiple of 16 bytes */
158632 ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firwmare update warning */
158633 - ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
158634
158635 /* DMA mask for user DMA control: User visible values; DO NOT
158636 renumber */
158637 @@ -530,7 +529,6 @@
158638 unsigned long flags; /* ATA_QCFLAG_xxx */
158639 unsigned int tag;
158640 unsigned int n_elem;
158641 - unsigned int orig_n_elem;
158642
158643 int dma_dir;
158644
158645 @@ -582,7 +580,7 @@
158646 acpi_handle acpi_handle;
158647 union acpi_object *gtf_cache;
158648 #endif
158649 - /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */
158650 + /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */
158651 u64 n_sectors; /* size of device, if ATA */
158652 unsigned int class; /* ATA_DEV_xxx */
158653 unsigned long unpark_deadline;
158654 @@ -607,22 +605,20 @@
158655 u16 heads; /* Number of heads */
158656 u16 sectors; /* Number of sectors per track */
158657
158658 + /* error history */
158659 + int spdn_cnt;
158660 + struct ata_ering ering;
158661 +
158662 union {
158663 u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
158664 u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
158665 };
158666 -
158667 - /* error history */
158668 - int spdn_cnt;
158669 - /* ering is CLEAR_END, read comment above CLEAR_END */
158670 - struct ata_ering ering;
158671 };
158672
158673 -/* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are
158674 - * cleared to zero on ata_dev_init().
158675 +/* Offset into struct ata_device. Fields above it are maintained
158676 + * acress device init. Fields below are zeroed.
158677 */
158678 -#define ATA_DEVICE_CLEAR_BEGIN offsetof(struct ata_device, n_sectors)
158679 -#define ATA_DEVICE_CLEAR_END offsetof(struct ata_device, ering)
158680 +#define ATA_DEVICE_CLEAR_OFFSET offsetof(struct ata_device, n_sectors)
158681
158682 struct ata_eh_info {
158683 struct ata_device *dev; /* offending device */
158684 @@ -751,8 +747,7 @@
158685 acpi_handle acpi_handle;
158686 struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
158687 #endif
158688 - /* owned by EH */
158689 - u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
158690 + u8 sector_buf[ATA_SECT_SIZE]; /* owned by EH */
158691 };
158692
158693 /* The following initializer overrides a method to NULL whether one of
158694 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/lockd/lockd.h linux-2.6.29-rc3.owrt/include/linux/lockd/lockd.h
158695 --- linux-2.6.29.owrt/include/linux/lockd/lockd.h 2009-05-10 22:04:37.000000000 +0200
158696 +++ linux-2.6.29-rc3.owrt/include/linux/lockd/lockd.h 2009-05-10 23:48:29.000000000 +0200
158697 @@ -346,7 +346,6 @@
158698 return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr;
158699 }
158700
158701 -#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
158702 static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
158703 const struct sockaddr *sap2)
158704 {
158705 @@ -354,13 +353,6 @@
158706 const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
158707 return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
158708 }
158709 -#else /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
158710 -static inline int __nlm_cmp_addr6(const struct sockaddr *sap1,
158711 - const struct sockaddr *sap2)
158712 -{
158713 - return 0;
158714 -}
158715 -#endif /* !(CONFIG_IPV6 || CONFIG_IPV6_MODULE) */
158716
158717 /*
158718 * Compare two host addresses
158719 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/minix_fs.h linux-2.6.29-rc3.owrt/include/linux/minix_fs.h
158720 --- linux-2.6.29.owrt/include/linux/minix_fs.h 2009-05-10 22:04:37.000000000 +0200
158721 +++ linux-2.6.29-rc3.owrt/include/linux/minix_fs.h 2009-05-10 23:48:29.000000000 +0200
158722 @@ -1,7 +1,6 @@
158723 #ifndef _LINUX_MINIX_FS_H
158724 #define _LINUX_MINIX_FS_H
158725
158726 -#include <linux/types.h>
158727 #include <linux/magic.h>
158728
158729 /*
158730 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/mm.h linux-2.6.29-rc3.owrt/include/linux/mm.h
158731 --- linux-2.6.29.owrt/include/linux/mm.h 2009-05-10 22:04:37.000000000 +0200
158732 +++ linux-2.6.29-rc3.owrt/include/linux/mm.h 2009-05-10 23:48:29.000000000 +0200
158733 @@ -1041,23 +1041,10 @@
158734 typedef int (*work_fn_t)(unsigned long, unsigned long, void *);
158735 extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data);
158736 extern void sparse_memory_present_with_active_regions(int nid);
158737 -#endif /* CONFIG_ARCH_POPULATES_NODE_MAP */
158738 -
158739 -#if !defined(CONFIG_ARCH_POPULATES_NODE_MAP) && \
158740 - !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID)
158741 -static inline int __early_pfn_to_nid(unsigned long pfn)
158742 -{
158743 - return 0;
158744 -}
158745 -#else
158746 -/* please see mm/page_alloc.c */
158747 -extern int __meminit early_pfn_to_nid(unsigned long pfn);
158748 -#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
158749 -/* there is a per-arch backend function. */
158750 -extern int __meminit __early_pfn_to_nid(unsigned long pfn);
158751 +#ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
158752 +extern int early_pfn_to_nid(unsigned long pfn);
158753 #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
158754 -#endif
158755 -
158756 +#endif /* CONFIG_ARCH_POPULATES_NODE_MAP */
158757 extern void set_dma_reserve(unsigned long new_dma_reserve);
158758 extern void memmap_init_zone(unsigned long, int, unsigned long,
158759 unsigned long, enum memmap_context);
158760 @@ -1142,7 +1129,8 @@
158761 unsigned long flag, unsigned long pgoff);
158762 extern unsigned long mmap_region(struct file *file, unsigned long addr,
158763 unsigned long len, unsigned long flags,
158764 - unsigned int vm_flags, unsigned long pgoff);
158765 + unsigned int vm_flags, unsigned long pgoff,
158766 + int accountable);
158767
158768 static inline unsigned long do_mmap(struct file *file, unsigned long addr,
158769 unsigned long len, unsigned long prot,
158770 @@ -1172,7 +1160,6 @@
158771
158772 /* mm/page-writeback.c */
158773 int write_one_page(struct page *page, int wait);
158774 -void task_dirty_inc(struct task_struct *tsk);
158775
158776 /* readahead.c */
158777 #define VM_MAX_READAHEAD 128 /* kbytes */
158778 @@ -1318,6 +1305,5 @@
158779
158780 extern void *alloc_locked_buffer(size_t size);
158781 extern void free_locked_buffer(void *buffer, size_t size);
158782 -extern void release_locked_buffer(void *buffer, size_t size);
158783 #endif /* __KERNEL__ */
158784 #endif /* _LINUX_MM_H */
158785 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/mm_types.h linux-2.6.29-rc3.owrt/include/linux/mm_types.h
158786 --- linux-2.6.29.owrt/include/linux/mm_types.h 2009-05-10 22:04:37.000000000 +0200
158787 +++ linux-2.6.29-rc3.owrt/include/linux/mm_types.h 2009-05-10 23:48:29.000000000 +0200
158788 @@ -276,7 +276,4 @@
158789 #endif
158790 };
158791
158792 -/* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
158793 -#define mm_cpumask(mm) (&(mm)->cpu_vm_mask)
158794 -
158795 #endif /* _LINUX_MM_TYPES_H */
158796 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/mmzone.h linux-2.6.29-rc3.owrt/include/linux/mmzone.h
158797 --- linux-2.6.29.owrt/include/linux/mmzone.h 2009-05-10 22:04:37.000000000 +0200
158798 +++ linux-2.6.29-rc3.owrt/include/linux/mmzone.h 2009-05-10 23:48:29.000000000 +0200
158799 @@ -1071,7 +1071,7 @@
158800 #endif /* CONFIG_SPARSEMEM */
158801
158802 #ifdef CONFIG_NODES_SPAN_OTHER_NODES
158803 -bool early_pfn_in_nid(unsigned long pfn, int nid);
158804 +#define early_pfn_in_nid(pfn, nid) (early_pfn_to_nid(pfn) == (nid))
158805 #else
158806 #define early_pfn_in_nid(pfn, nid) (1)
158807 #endif
158808 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/module.h linux-2.6.29-rc3.owrt/include/linux/module.h
158809 --- linux-2.6.29.owrt/include/linux/module.h 2009-05-10 22:04:37.000000000 +0200
158810 +++ linux-2.6.29-rc3.owrt/include/linux/module.h 2009-05-10 23:48:29.000000000 +0200
158811 @@ -219,6 +219,11 @@
158812
158813 #endif
158814
158815 +struct module_ref
158816 +{
158817 + local_t count;
158818 +} ____cacheline_aligned;
158819 +
158820 enum module_state
158821 {
158822 MODULE_STATE_LIVE,
158823 @@ -339,11 +344,8 @@
158824 /* Destruction function. */
158825 void (*exit)(void);
158826
158827 -#ifdef CONFIG_SMP
158828 - char *refptr;
158829 -#else
158830 - local_t ref;
158831 -#endif
158832 + /* Reference counts */
158833 + struct module_ref ref[NR_CPUS];
158834 #endif
158835 };
158836 #ifndef MODULE_ARCH_INIT
158837 @@ -393,21 +395,13 @@
158838 #define symbol_put(x) __symbol_put(MODULE_SYMBOL_PREFIX #x)
158839 void symbol_put_addr(void *addr);
158840
158841 -static inline local_t *__module_ref_addr(struct module *mod, int cpu)
158842 -{
158843 -#ifdef CONFIG_SMP
158844 - return (local_t *) (mod->refptr + per_cpu_offset(cpu));
158845 -#else
158846 - return &mod->ref;
158847 -#endif
158848 -}
158849 -
158850 /* Sometimes we know we already have a refcount, and it's easier not
158851 to handle the error case (which only happens with rmmod --wait). */
158852 static inline void __module_get(struct module *module)
158853 {
158854 if (module) {
158855 - local_inc(__module_ref_addr(module, get_cpu()));
158856 + BUG_ON(module_refcount(module) == 0);
158857 + local_inc(&module->ref[get_cpu()].count);
158858 put_cpu();
158859 }
158860 }
158861 @@ -419,7 +413,7 @@
158862 if (module) {
158863 unsigned int cpu = get_cpu();
158864 if (likely(module_is_live(module)))
158865 - local_inc(__module_ref_addr(module, cpu));
158866 + local_inc(&module->ref[cpu].count);
158867 else
158868 ret = 0;
158869 put_cpu();
158870 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/msdos_fs.h linux-2.6.29-rc3.owrt/include/linux/msdos_fs.h
158871 --- linux-2.6.29.owrt/include/linux/msdos_fs.h 2009-05-10 22:04:37.000000000 +0200
158872 +++ linux-2.6.29-rc3.owrt/include/linux/msdos_fs.h 2009-05-10 23:48:29.000000000 +0200
158873 @@ -1,7 +1,6 @@
158874 #ifndef _LINUX_MSDOS_FS_H
158875 #define _LINUX_MSDOS_FS_H
158876
158877 -#include <linux/types.h>
158878 #include <linux/magic.h>
158879 #include <asm/byteorder.h>
158880
158881 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/neighbour.h linux-2.6.29-rc3.owrt/include/linux/neighbour.h
158882 --- linux-2.6.29.owrt/include/linux/neighbour.h 2009-05-10 22:04:37.000000000 +0200
158883 +++ linux-2.6.29-rc3.owrt/include/linux/neighbour.h 2009-05-10 23:48:29.000000000 +0200
158884 @@ -1,7 +1,6 @@
158885 #ifndef __LINUX_NEIGHBOUR_H
158886 #define __LINUX_NEIGHBOUR_H
158887
158888 -#include <linux/types.h>
158889 #include <linux/netlink.h>
158890
158891 struct ndmsg
158892 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/netdevice.h linux-2.6.29-rc3.owrt/include/linux/netdevice.h
158893 --- linux-2.6.29.owrt/include/linux/netdevice.h 2009-05-10 22:04:37.000000000 +0200
158894 +++ linux-2.6.29-rc3.owrt/include/linux/netdevice.h 2009-05-10 23:48:29.000000000 +0200
158895 @@ -1081,7 +1081,6 @@
158896 extern int register_netdevice_notifier(struct notifier_block *nb);
158897 extern int unregister_netdevice_notifier(struct notifier_block *nb);
158898 extern int init_dummy_netdev(struct net_device *dev);
158899 -extern void netdev_resync_ops(struct net_device *dev);
158900
158901 extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
158902 extern struct net_device *dev_get_by_index(struct net *net, int ifindex);
158903 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/netfilter/xt_conntrack.h linux-2.6.29-rc3.owrt/include/linux/netfilter/xt_conntrack.h
158904 --- linux-2.6.29.owrt/include/linux/netfilter/xt_conntrack.h 2009-05-10 22:04:37.000000000 +0200
158905 +++ linux-2.6.29-rc3.owrt/include/linux/netfilter/xt_conntrack.h 2009-05-10 23:48:29.000000000 +0200
158906 @@ -5,7 +5,6 @@
158907 #ifndef _XT_CONNTRACK_H
158908 #define _XT_CONNTRACK_H
158909
158910 -#include <linux/types.h>
158911 #include <linux/netfilter/nf_conntrack_tuple_common.h>
158912
158913 #define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
158914 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/netfilter/xt_NFLOG.h linux-2.6.29-rc3.owrt/include/linux/netfilter/xt_NFLOG.h
158915 --- linux-2.6.29.owrt/include/linux/netfilter/xt_NFLOG.h 2009-05-10 22:04:37.000000000 +0200
158916 +++ linux-2.6.29-rc3.owrt/include/linux/netfilter/xt_NFLOG.h 2009-05-10 23:48:29.000000000 +0200
158917 @@ -2,7 +2,7 @@
158918 #define _XT_NFLOG_TARGET
158919
158920 #define XT_NFLOG_DEFAULT_GROUP 0x1
158921 -#define XT_NFLOG_DEFAULT_THRESHOLD 0
158922 +#define XT_NFLOG_DEFAULT_THRESHOLD 1
158923
158924 #define XT_NFLOG_MASK 0x0
158925
158926 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nfsacl.h linux-2.6.29-rc3.owrt/include/linux/nfsacl.h
158927 --- linux-2.6.29.owrt/include/linux/nfsacl.h 2009-05-10 22:04:37.000000000 +0200
158928 +++ linux-2.6.29-rc3.owrt/include/linux/nfsacl.h 2009-05-10 23:48:29.000000000 +0200
158929 @@ -37,9 +37,6 @@
158930 #define NFSACL_MAXPAGES ((2*(8+12*NFS_ACL_MAX_ENTRIES) + PAGE_SIZE-1) \
158931 >> PAGE_SHIFT)
158932
158933 -#define NFS_ACL_MAX_ENTRIES_INLINE (5)
158934 -#define NFS_ACL_INLINE_BUFSIZE ((2*(2+3*NFS_ACL_MAX_ENTRIES_INLINE)) << 2)
158935 -
158936 static inline unsigned int
158937 nfsacl_size(struct posix_acl *acl_access, struct posix_acl *acl_default)
158938 {
158939 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nfsd/export.h linux-2.6.29-rc3.owrt/include/linux/nfsd/export.h
158940 --- linux-2.6.29.owrt/include/linux/nfsd/export.h 2009-05-10 22:04:37.000000000 +0200
158941 +++ linux-2.6.29-rc3.owrt/include/linux/nfsd/export.h 2009-05-10 23:48:29.000000000 +0200
158942 @@ -10,8 +10,9 @@
158943 #ifndef NFSD_EXPORT_H
158944 #define NFSD_EXPORT_H
158945
158946 -# include <linux/types.h>
158947 +#include <asm/types.h>
158948 #ifdef __KERNEL__
158949 +# include <linux/types.h>
158950 # include <linux/in.h>
158951 #endif
158952
158953 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nfsd/nfsfh.h linux-2.6.29-rc3.owrt/include/linux/nfsd/nfsfh.h
158954 --- linux-2.6.29.owrt/include/linux/nfsd/nfsfh.h 2009-05-10 22:04:37.000000000 +0200
158955 +++ linux-2.6.29-rc3.owrt/include/linux/nfsd/nfsfh.h 2009-05-10 23:48:29.000000000 +0200
158956 @@ -14,8 +14,9 @@
158957 #ifndef _LINUX_NFSD_FH_H
158958 #define _LINUX_NFSD_FH_H
158959
158960 -# include <linux/types.h>
158961 +#include <asm/types.h>
158962 #ifdef __KERNEL__
158963 +# include <linux/types.h>
158964 # include <linux/string.h>
158965 # include <linux/fs.h>
158966 #endif
158967 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nfsd/syscall.h linux-2.6.29-rc3.owrt/include/linux/nfsd/syscall.h
158968 --- linux-2.6.29.owrt/include/linux/nfsd/syscall.h 2009-05-10 22:04:37.000000000 +0200
158969 +++ linux-2.6.29-rc3.owrt/include/linux/nfsd/syscall.h 2009-05-10 23:48:29.000000000 +0200
158970 @@ -9,8 +9,9 @@
158971 #ifndef NFSD_SYSCALL_H
158972 #define NFSD_SYSCALL_H
158973
158974 -# include <linux/types.h>
158975 +#include <asm/types.h>
158976 #ifdef __KERNEL__
158977 +# include <linux/types.h>
158978 # include <linux/in.h>
158979 #endif
158980 #include <linux/posix_types.h>
158981 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nfs_idmap.h linux-2.6.29-rc3.owrt/include/linux/nfs_idmap.h
158982 --- linux-2.6.29.owrt/include/linux/nfs_idmap.h 2009-05-10 22:04:37.000000000 +0200
158983 +++ linux-2.6.29-rc3.owrt/include/linux/nfs_idmap.h 2009-05-10 23:48:29.000000000 +0200
158984 @@ -37,8 +37,6 @@
158985 #ifndef NFS_IDMAP_H
158986 #define NFS_IDMAP_H
158987
158988 -#include <linux/types.h>
158989 -
158990 /* XXX from bits/utmp.h */
158991 #define IDMAP_NAMESZ 128
158992
158993 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nfs_xdr.h linux-2.6.29-rc3.owrt/include/linux/nfs_xdr.h
158994 --- linux-2.6.29.owrt/include/linux/nfs_xdr.h 2009-05-10 22:04:37.000000000 +0200
158995 +++ linux-2.6.29-rc3.owrt/include/linux/nfs_xdr.h 2009-05-10 23:48:29.000000000 +0200
158996 @@ -406,8 +406,6 @@
158997 int mask;
158998 struct posix_acl * acl_access;
158999 struct posix_acl * acl_default;
159000 - size_t len;
159001 - unsigned int npages;
159002 struct page ** pages;
159003 };
159004
159005 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/nubus.h linux-2.6.29-rc3.owrt/include/linux/nubus.h
159006 --- linux-2.6.29.owrt/include/linux/nubus.h 2009-05-10 22:04:37.000000000 +0200
159007 +++ linux-2.6.29-rc3.owrt/include/linux/nubus.h 2009-05-10 23:48:29.000000000 +0200
159008 @@ -12,7 +12,6 @@
159009 #ifndef LINUX_NUBUS_H
159010 #define LINUX_NUBUS_H
159011
159012 -#include <linux/types.h>
159013 #ifdef __KERNEL__
159014 #include <asm/nubus.h>
159015 #endif
159016 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/pci.h linux-2.6.29-rc3.owrt/include/linux/pci.h
159017 --- linux-2.6.29.owrt/include/linux/pci.h 2009-05-10 22:04:37.000000000 +0200
159018 +++ linux-2.6.29-rc3.owrt/include/linux/pci.h 2009-05-10 23:48:29.000000000 +0200
159019 @@ -684,7 +684,7 @@
159020 void pci_disable_rom(struct pci_dev *pdev);
159021 void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
159022 void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
159023 -size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size);
159024 +size_t pci_get_rom_size(void __iomem *rom, size_t size);
159025
159026 /* Power management related routines */
159027 int pci_save_state(struct pci_dev *dev);
159028 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/pci_ids.h linux-2.6.29-rc3.owrt/include/linux/pci_ids.h
159029 --- linux-2.6.29.owrt/include/linux/pci_ids.h 2009-05-10 22:04:37.000000000 +0200
159030 +++ linux-2.6.29-rc3.owrt/include/linux/pci_ids.h 2009-05-10 23:48:29.000000000 +0200
159031 @@ -1312,7 +1312,6 @@
159032 #define PCI_DEVICE_ID_VIA_VT3351 0x0351
159033 #define PCI_DEVICE_ID_VIA_VT3364 0x0364
159034 #define PCI_DEVICE_ID_VIA_8371_0 0x0391
159035 -#define PCI_DEVICE_ID_VIA_6415 0x0415
159036 #define PCI_DEVICE_ID_VIA_8501_0 0x0501
159037 #define PCI_DEVICE_ID_VIA_82C561 0x0561
159038 #define PCI_DEVICE_ID_VIA_82C586_1 0x0571
159039 @@ -1445,7 +1444,6 @@
159040 #define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071
159041 #define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072
159042 #define PCI_DEVICE_ID_DIGI_DF_M_A 0x0073
159043 -#define PCI_DEVICE_ID_DIGI_NEO_8 0x00B1
159044 #define PCI_DEVICE_ID_NEO_2DB9 0x00C8
159045 #define PCI_DEVICE_ID_NEO_2DB9PRI 0x00C9
159046 #define PCI_DEVICE_ID_NEO_2RJ45 0x00CA
159047 @@ -2323,9 +2321,6 @@
159048 #define PCI_DEVICE_ID_INTEL_82378 0x0484
159049 #define PCI_DEVICE_ID_INTEL_I960 0x0960
159050 #define PCI_DEVICE_ID_INTEL_I960RM 0x0962
159051 -#define PCI_DEVICE_ID_INTEL_8257X_SOL 0x1062
159052 -#define PCI_DEVICE_ID_INTEL_82573E_SOL 0x1085
159053 -#define PCI_DEVICE_ID_INTEL_82573L_SOL 0x108F
159054 #define PCI_DEVICE_ID_INTEL_82815_MC 0x1130
159055 #define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132
159056 #define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221
159057 @@ -2430,7 +2425,6 @@
159058 #define PCI_DEVICE_ID_INTEL_ICH7_0 0x27b8
159059 #define PCI_DEVICE_ID_INTEL_ICH7_1 0x27b9
159060 #define PCI_DEVICE_ID_INTEL_ICH7_30 0x27b0
159061 -#define PCI_DEVICE_ID_INTEL_TGP_LPC 0x27bc
159062 #define PCI_DEVICE_ID_INTEL_ICH7_31 0x27bd
159063 #define PCI_DEVICE_ID_INTEL_ICH7_17 0x27da
159064 #define PCI_DEVICE_ID_INTEL_ICH7_19 0x27dd
159065 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/phonet.h linux-2.6.29-rc3.owrt/include/linux/phonet.h
159066 --- linux-2.6.29.owrt/include/linux/phonet.h 2009-05-10 22:04:37.000000000 +0200
159067 +++ linux-2.6.29-rc3.owrt/include/linux/phonet.h 2009-05-10 23:48:29.000000000 +0200
159068 @@ -23,8 +23,6 @@
159069 #ifndef LINUX_PHONET_H
159070 #define LINUX_PHONET_H
159071
159072 -#include <linux/types.h>
159073 -
159074 /* Automatic protocol selection */
159075 #define PN_PROTO_TRANSPORT 0
159076 /* Phonet datagram socket */
159077 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/pkt_cls.h linux-2.6.29-rc3.owrt/include/linux/pkt_cls.h
159078 --- linux-2.6.29.owrt/include/linux/pkt_cls.h 2009-05-10 22:04:37.000000000 +0200
159079 +++ linux-2.6.29-rc3.owrt/include/linux/pkt_cls.h 2009-05-10 23:48:29.000000000 +0200
159080 @@ -1,7 +1,6 @@
159081 #ifndef __LINUX_PKT_CLS_H
159082 #define __LINUX_PKT_CLS_H
159083
159084 -#include <linux/types.h>
159085 #include <linux/pkt_sched.h>
159086
159087 /* I think i could have done better macros ; for now this is stolen from
159088 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/pkt_sched.h linux-2.6.29-rc3.owrt/include/linux/pkt_sched.h
159089 --- linux-2.6.29.owrt/include/linux/pkt_sched.h 2009-05-10 22:04:37.000000000 +0200
159090 +++ linux-2.6.29-rc3.owrt/include/linux/pkt_sched.h 2009-05-10 23:48:29.000000000 +0200
159091 @@ -1,8 +1,6 @@
159092 #ifndef __LINUX_PKT_SCHED_H
159093 #define __LINUX_PKT_SCHED_H
159094
159095 -#include <linux/types.h>
159096 -
159097 /* Logical priority bands not depending on specific packet scheduler.
159098 Every scheduler will map them to real traffic classes, if it has
159099 no more precise mechanism to classify packets.
159100 @@ -544,7 +542,7 @@
159101
159102 struct tc_drr_stats
159103 {
159104 - __u32 deficit;
159105 + u32 deficit;
159106 };
159107
159108 #endif
159109 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/pm.h linux-2.6.29-rc3.owrt/include/linux/pm.h
159110 --- linux-2.6.29.owrt/include/linux/pm.h 2009-05-10 22:04:37.000000000 +0200
159111 +++ linux-2.6.29-rc3.owrt/include/linux/pm.h 2009-05-10 23:48:29.000000000 +0200
159112 @@ -381,12 +381,10 @@
159113
159114 #ifdef CONFIG_PM_SLEEP
159115 extern void device_pm_lock(void);
159116 -extern int sysdev_resume(void);
159117 extern void device_power_up(pm_message_t state);
159118 extern void device_resume(pm_message_t state);
159119
159120 extern void device_pm_unlock(void);
159121 -extern int sysdev_suspend(pm_message_t state);
159122 extern int device_power_down(pm_message_t state);
159123 extern int device_suspend(pm_message_t state);
159124 extern int device_prepare_suspend(pm_message_t state);
159125 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/ppp_defs.h linux-2.6.29-rc3.owrt/include/linux/ppp_defs.h
159126 --- linux-2.6.29.owrt/include/linux/ppp_defs.h 2009-05-10 22:04:37.000000000 +0200
159127 +++ linux-2.6.29-rc3.owrt/include/linux/ppp_defs.h 2009-05-10 23:48:29.000000000 +0200
159128 @@ -25,8 +25,6 @@
159129 * OR MODIFICATIONS.
159130 */
159131
159132 -#include <linux/types.h>
159133 -
159134 /*
159135 * ==FILEVERSION 20000114==
159136 *
159137 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/raid/md_p.h linux-2.6.29-rc3.owrt/include/linux/raid/md_p.h
159138 --- linux-2.6.29.owrt/include/linux/raid/md_p.h 2009-05-10 22:04:37.000000000 +0200
159139 +++ linux-2.6.29-rc3.owrt/include/linux/raid/md_p.h 2009-05-10 23:48:29.000000000 +0200
159140 @@ -15,8 +15,6 @@
159141 #ifndef _MD_P_H
159142 #define _MD_P_H
159143
159144 -#include <linux/types.h>
159145 -
159146 /*
159147 * RAID superblock.
159148 *
159149 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/random.h linux-2.6.29-rc3.owrt/include/linux/random.h
159150 --- linux-2.6.29.owrt/include/linux/random.h 2009-05-10 22:04:37.000000000 +0200
159151 +++ linux-2.6.29-rc3.owrt/include/linux/random.h 2009-05-10 23:48:29.000000000 +0200
159152 @@ -7,7 +7,6 @@
159153 #ifndef _LINUX_RANDOM_H
159154 #define _LINUX_RANDOM_H
159155
159156 -#include <linux/types.h>
159157 #include <linux/ioctl.h>
159158 #include <linux/irqnr.h>
159159
159160 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/rcuclassic.h linux-2.6.29-rc3.owrt/include/linux/rcuclassic.h
159161 --- linux-2.6.29.owrt/include/linux/rcuclassic.h 2009-05-10 22:04:37.000000000 +0200
159162 +++ linux-2.6.29-rc3.owrt/include/linux/rcuclassic.h 2009-05-10 23:48:29.000000000 +0200
159163 @@ -181,10 +181,4 @@
159164 #define rcu_enter_nohz() do { } while (0)
159165 #define rcu_exit_nohz() do { } while (0)
159166
159167 -/* A context switch is a grace period for rcuclassic. */
159168 -static inline int rcu_blocking_is_gp(void)
159169 -{
159170 - return num_online_cpus() == 1;
159171 -}
159172 -
159173 #endif /* __LINUX_RCUCLASSIC_H */
159174 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/rcupdate.h linux-2.6.29-rc3.owrt/include/linux/rcupdate.h
159175 --- linux-2.6.29.owrt/include/linux/rcupdate.h 2009-05-10 22:04:37.000000000 +0200
159176 +++ linux-2.6.29-rc3.owrt/include/linux/rcupdate.h 2009-05-10 23:48:29.000000000 +0200
159177 @@ -52,9 +52,6 @@
159178 void (*func)(struct rcu_head *head);
159179 };
159180
159181 -/* Internal to kernel, but needed by rcupreempt.h. */
159182 -extern int rcu_scheduler_active;
159183 -
159184 #if defined(CONFIG_CLASSIC_RCU)
159185 #include <linux/rcuclassic.h>
159186 #elif defined(CONFIG_TREE_RCU)
159187 @@ -268,7 +265,6 @@
159188
159189 /* Internal to kernel */
159190 extern void rcu_init(void);
159191 -extern void rcu_scheduler_starting(void);
159192 extern int rcu_needs_cpu(int cpu);
159193
159194 #endif /* __LINUX_RCUPDATE_H */
159195 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/rcupreempt.h linux-2.6.29-rc3.owrt/include/linux/rcupreempt.h
159196 --- linux-2.6.29.owrt/include/linux/rcupreempt.h 2009-05-10 22:04:37.000000000 +0200
159197 +++ linux-2.6.29-rc3.owrt/include/linux/rcupreempt.h 2009-05-10 23:48:29.000000000 +0200
159198 @@ -142,19 +142,4 @@
159199 #define rcu_exit_nohz() do { } while (0)
159200 #endif /* CONFIG_NO_HZ */
159201
159202 -/*
159203 - * A context switch is a grace period for rcupreempt synchronize_rcu()
159204 - * only during early boot, before the scheduler has been initialized.
159205 - * So, how the heck do we get a context switch? Well, if the caller
159206 - * invokes synchronize_rcu(), they are willing to accept a context
159207 - * switch, so we simply pretend that one happened.
159208 - *
159209 - * After boot, there might be a blocked or preempted task in an RCU
159210 - * read-side critical section, so we cannot then take the fastpath.
159211 - */
159212 -static inline int rcu_blocking_is_gp(void)
159213 -{
159214 - return num_online_cpus() == 1 && !rcu_scheduler_active;
159215 -}
159216 -
159217 #endif /* __LINUX_RCUPREEMPT_H */
159218 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/rcutree.h linux-2.6.29-rc3.owrt/include/linux/rcutree.h
159219 --- linux-2.6.29.owrt/include/linux/rcutree.h 2009-05-10 22:04:37.000000000 +0200
159220 +++ linux-2.6.29-rc3.owrt/include/linux/rcutree.h 2009-05-10 23:48:29.000000000 +0200
159221 @@ -326,10 +326,4 @@
159222 }
159223 #endif /* CONFIG_NO_HZ */
159224
159225 -/* A context switch is a grace period for rcutree. */
159226 -static inline int rcu_blocking_is_gp(void)
159227 -{
159228 - return num_online_cpus() == 1;
159229 -}
159230 -
159231 #endif /* __LINUX_RCUTREE_H */
159232 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/rtnetlink.h linux-2.6.29-rc3.owrt/include/linux/rtnetlink.h
159233 --- linux-2.6.29.owrt/include/linux/rtnetlink.h 2009-05-10 22:04:37.000000000 +0200
159234 +++ linux-2.6.29-rc3.owrt/include/linux/rtnetlink.h 2009-05-10 23:48:29.000000000 +0200
159235 @@ -1,7 +1,6 @@
159236 #ifndef __LINUX_RTNETLINK_H
159237 #define __LINUX_RTNETLINK_H
159238
159239 -#include <linux/types.h>
159240 #include <linux/netlink.h>
159241 #include <linux/if_link.h>
159242 #include <linux/if_addr.h>
159243 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/sched.h linux-2.6.29-rc3.owrt/include/linux/sched.h
159244 --- linux-2.6.29.owrt/include/linux/sched.h 2009-05-10 22:04:37.000000000 +0200
159245 +++ linux-2.6.29-rc3.owrt/include/linux/sched.h 2009-05-10 23:48:29.000000000 +0200
159246 @@ -453,33 +453,23 @@
159247 cputime_t utime;
159248 cputime_t stime;
159249 unsigned long long sum_exec_runtime;
159250 + spinlock_t lock;
159251 };
159252 /* Alternate field names when used to cache expirations. */
159253 #define prof_exp stime
159254 #define virt_exp utime
159255 #define sched_exp sum_exec_runtime
159256
159257 -#define INIT_CPUTIME \
159258 - (struct task_cputime) { \
159259 - .utime = cputime_zero, \
159260 - .stime = cputime_zero, \
159261 - .sum_exec_runtime = 0, \
159262 - }
159263 -
159264 /**
159265 - * struct thread_group_cputimer - thread group interval timer counts
159266 - * @cputime: thread group interval timers.
159267 - * @running: non-zero when there are timers running and
159268 - * @cputime receives updates.
159269 - * @lock: lock for fields in this struct.
159270 + * struct thread_group_cputime - thread group interval timer counts
159271 + * @totals: thread group interval timers; substructure for
159272 + * uniprocessor kernel, per-cpu for SMP kernel.
159273 *
159274 * This structure contains the version of task_cputime, above, that is
159275 - * used for thread group CPU timer calculations.
159276 + * used for thread group CPU clock calculations.
159277 */
159278 -struct thread_group_cputimer {
159279 - struct task_cputime cputime;
159280 - int running;
159281 - spinlock_t lock;
159282 +struct thread_group_cputime {
159283 + struct task_cputime totals;
159284 };
159285
159286 /*
159287 @@ -528,10 +518,10 @@
159288 cputime_t it_prof_incr, it_virt_incr;
159289
159290 /*
159291 - * Thread group totals for process CPU timers.
159292 - * See thread_group_cputimer(), et al, for details.
159293 + * Thread group totals for process CPU clocks.
159294 + * See thread_group_cputime(), et al, for details.
159295 */
159296 - struct thread_group_cputimer cputimer;
159297 + struct thread_group_cputime cputime;
159298
159299 /* Earliest-expiration cache. */
159300 struct task_cputime cputime_expires;
159301 @@ -568,7 +558,7 @@
159302 * Live threads maintain their own counters and add to these
159303 * in __exit_signal, except for the group leader.
159304 */
159305 - cputime_t utime, stime, cutime, cstime;
159306 + cputime_t cutime, cstime;
159307 cputime_t gtime;
159308 cputime_t cgtime;
159309 unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
159310 @@ -577,14 +567,6 @@
159311 struct task_io_accounting ioac;
159312
159313 /*
159314 - * Cumulative ns of schedule CPU time fo dead threads in the
159315 - * group, not including a zombie group leader, (This only differs
159316 - * from jiffies_to_ns(utime + stime) if sched_clock uses something
159317 - * other than jiffies.)
159318 - */
159319 - unsigned long long sum_sched_runtime;
159320 -
159321 - /*
159322 * We don't bother to synchronize most readers of this at all,
159323 * because there is no reader checking a limit that actually needs
159324 * to get both rlim_cur and rlim_max atomically, and either one
159325 @@ -648,6 +630,7 @@
159326 atomic_t inotify_devs; /* How many inotify devs does this user have opened? */
159327 #endif
159328 #ifdef CONFIG_EPOLL
159329 + atomic_t epoll_devs; /* The number of epoll descriptors currently open */
159330 atomic_t epoll_watches; /* The number of file descriptors currently watched */
159331 #endif
159332 #ifdef CONFIG_POSIX_MQUEUE
159333 @@ -1419,9 +1402,6 @@
159334 #endif
159335 };
159336
159337 -/* Future-safe accessor for struct task_struct's cpus_allowed. */
159338 -#define tsk_cpumask(tsk) (&(tsk)->cpus_allowed)
159339 -
159340 /*
159341 * Priority of a process goes from 0..MAX_PRIO-1, valid RT
159342 * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
159343 @@ -2203,14 +2183,27 @@
159344 /*
159345 * Thread group CPU time accounting.
159346 */
159347 -void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times);
159348 -void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times);
159349 +
159350 +static inline
159351 +void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times)
159352 +{
159353 + struct task_cputime *totals = &tsk->signal->cputime.totals;
159354 + unsigned long flags;
159355 +
159356 + spin_lock_irqsave(&totals->lock, flags);
159357 + *times = *totals;
159358 + spin_unlock_irqrestore(&totals->lock, flags);
159359 +}
159360
159361 static inline void thread_group_cputime_init(struct signal_struct *sig)
159362 {
159363 - sig->cputimer.cputime = INIT_CPUTIME;
159364 - spin_lock_init(&sig->cputimer.lock);
159365 - sig->cputimer.running = 0;
159366 + sig->cputime.totals = (struct task_cputime){
159367 + .utime = cputime_zero,
159368 + .stime = cputime_zero,
159369 + .sum_exec_runtime = 0,
159370 + };
159371 +
159372 + spin_lock_init(&sig->cputime.totals.lock);
159373 }
159374
159375 static inline void thread_group_cputime_free(struct signal_struct *sig)
159376 @@ -2294,13 +2287,9 @@
159377 extern int sched_group_set_rt_period(struct task_group *tg,
159378 long rt_period_us);
159379 extern long sched_group_rt_period(struct task_group *tg);
159380 -extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk);
159381 #endif
159382 #endif
159383
159384 -extern int task_can_switch_user(struct user_struct *up,
159385 - struct task_struct *tsk);
159386 -
159387 #ifdef CONFIG_TASK_XACCT
159388 static inline void add_rchar(struct task_struct *tsk, ssize_t amt)
159389 {
159390 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/seq_file.h linux-2.6.29-rc3.owrt/include/linux/seq_file.h
159391 --- linux-2.6.29.owrt/include/linux/seq_file.h 2009-05-10 22:04:37.000000000 +0200
159392 +++ linux-2.6.29-rc3.owrt/include/linux/seq_file.h 2009-05-10 23:48:29.000000000 +0200
159393 @@ -19,7 +19,6 @@
159394 size_t from;
159395 size_t count;
159396 loff_t index;
159397 - loff_t read_pos;
159398 u64 version;
159399 struct mutex lock;
159400 const struct seq_operations *op;
159401 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/serial_core.h linux-2.6.29-rc3.owrt/include/linux/serial_core.h
159402 --- linux-2.6.29.owrt/include/linux/serial_core.h 2009-05-10 22:04:37.000000000 +0200
159403 +++ linux-2.6.29-rc3.owrt/include/linux/serial_core.h 2009-05-10 23:48:29.000000000 +0200
159404 @@ -296,7 +296,6 @@
159405 #define UPF_HARDPPS_CD ((__force upf_t) (1 << 11))
159406 #define UPF_LOW_LATENCY ((__force upf_t) (1 << 13))
159407 #define UPF_BUGGY_UART ((__force upf_t) (1 << 14))
159408 -#define UPF_NO_TXEN_TEST ((__force upf_t) (1 << 15))
159409 #define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
159410 #define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
159411 #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
159412 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/serio.h linux-2.6.29-rc3.owrt/include/linux/serio.h
159413 --- linux-2.6.29.owrt/include/linux/serio.h 2009-05-10 22:04:37.000000000 +0200
159414 +++ linux-2.6.29-rc3.owrt/include/linux/serio.h 2009-05-10 23:48:29.000000000 +0200
159415 @@ -212,7 +212,7 @@
159416 #define SERIO_FUJITSU 0x35
159417 #define SERIO_ZHENHUA 0x36
159418 #define SERIO_INEXIO 0x37
159419 -#define SERIO_TOUCHIT213 0x38
159420 +#define SERIO_TOUCHIT213 0x37
159421 #define SERIO_W8001 0x39
159422
159423 #endif
159424 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/signalfd.h linux-2.6.29-rc3.owrt/include/linux/signalfd.h
159425 --- linux-2.6.29.owrt/include/linux/signalfd.h 2009-05-10 22:04:37.000000000 +0200
159426 +++ linux-2.6.29-rc3.owrt/include/linux/signalfd.h 2009-05-10 23:48:29.000000000 +0200
159427 @@ -8,7 +8,6 @@
159428 #ifndef _LINUX_SIGNALFD_H
159429 #define _LINUX_SIGNALFD_H
159430
159431 -#include <linux/types.h>
159432 /* For O_CLOEXEC and O_NONBLOCK */
159433 #include <linux/fcntl.h>
159434
159435 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/skbuff.h linux-2.6.29-rc3.owrt/include/linux/skbuff.h
159436 --- linux-2.6.29.owrt/include/linux/skbuff.h 2009-05-10 22:04:37.000000000 +0200
159437 +++ linux-2.6.29-rc3.owrt/include/linux/skbuff.h 2009-05-10 23:48:29.000000000 +0200
159438 @@ -434,6 +434,15 @@
159439 void *here);
159440 extern void skb_under_panic(struct sk_buff *skb, int len,
159441 void *here);
159442 +extern void skb_truesize_bug(struct sk_buff *skb);
159443 +
159444 +static inline void skb_truesize_check(struct sk_buff *skb)
159445 +{
159446 + int len = sizeof(struct sk_buff) + skb->len;
159447 +
159448 + if (unlikely((int)skb->truesize < len))
159449 + skb_truesize_bug(skb);
159450 +}
159451
159452 extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
159453 int getfrag(void *from, char *to, int offset,
159454 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/slab_def.h linux-2.6.29-rc3.owrt/include/linux/slab_def.h
159455 --- linux-2.6.29.owrt/include/linux/slab_def.h 2009-05-10 22:04:37.000000000 +0200
159456 +++ linux-2.6.29-rc3.owrt/include/linux/slab_def.h 2009-05-10 23:48:29.000000000 +0200
159457 @@ -43,7 +43,10 @@
159458 i++;
159459 #include <linux/kmalloc_sizes.h>
159460 #undef CACHE
159461 - return NULL;
159462 + {
159463 + extern void __you_cannot_kmalloc_that_much(void);
159464 + __you_cannot_kmalloc_that_much();
159465 + }
159466 found:
159467 #ifdef CONFIG_ZONE_DMA
159468 if (flags & GFP_DMA)
159469 @@ -74,7 +77,10 @@
159470 i++;
159471 #include <linux/kmalloc_sizes.h>
159472 #undef CACHE
159473 - return NULL;
159474 + {
159475 + extern void __you_cannot_kmalloc_that_much(void);
159476 + __you_cannot_kmalloc_that_much();
159477 + }
159478 found:
159479 #ifdef CONFIG_ZONE_DMA
159480 if (flags & GFP_DMA)
159481 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/slab.h linux-2.6.29-rc3.owrt/include/linux/slab.h
159482 --- linux-2.6.29.owrt/include/linux/slab.h 2009-05-10 22:04:37.000000000 +0200
159483 +++ linux-2.6.29-rc3.owrt/include/linux/slab.h 2009-05-10 23:48:29.000000000 +0200
159484 @@ -127,7 +127,6 @@
159485 void * __must_check __krealloc(const void *, size_t, gfp_t);
159486 void * __must_check krealloc(const void *, size_t, gfp_t);
159487 void kfree(const void *);
159488 -void kzfree(const void *);
159489 size_t ksize(const void *);
159490
159491 /*
159492 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/soundcard.h linux-2.6.29-rc3.owrt/include/linux/soundcard.h
159493 --- linux-2.6.29.owrt/include/linux/soundcard.h 2009-05-10 22:04:37.000000000 +0200
159494 +++ linux-2.6.29-rc3.owrt/include/linux/soundcard.h 2009-05-10 23:48:29.000000000 +0200
159495 @@ -1045,36 +1045,50 @@
159496 */
159497 #define LOCL_STARTAUDIO 1
159498
159499 -#if !defined(__KERNEL__) || defined(USE_SEQ_MACROS)
159500 +#if (!defined(__KERNEL__) && !defined(KERNEL) && !defined(INKERNEL) && !defined(_KERNEL)) || defined(USE_SEQ_MACROS)
159501 /*
159502 * Some convenience macros to simplify programming of the
159503 * /dev/sequencer interface
159504 *
159505 - * This is a legacy interface for applications written against
159506 - * the OSSlib-3.8 style interface. It is no longer possible
159507 - * to actually link against OSSlib with this header, but we
159508 - * still provide these macros for programs using them.
159509 - *
159510 - * If you want to use OSSlib, it is recommended that you get
159511 - * the GPL version of OSS-4.x and build against that version
159512 - * of the header.
159513 - *
159514 - * We redefine the extern keyword so that make headers_check
159515 - * does not complain about SEQ_USE_EXTBUF.
159516 + * These macros define the API which should be used when possible.
159517 */
159518 #define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
159519
159520 void seqbuf_dump(void); /* This function must be provided by programs */
159521
159522 -#define SEQ_PM_DEFINES int __foo_bar___
159523 -
159524 -#define SEQ_LOAD_GMINSTR(dev, instr)
159525 -#define SEQ_LOAD_GMDRUM(dev, drum)
159526 +extern int OSS_init(int seqfd, int buflen);
159527 +extern void OSS_seqbuf_dump(int fd, unsigned char *buf, int buflen);
159528 +extern void OSS_seq_advbuf(int len, int fd, unsigned char *buf, int buflen);
159529 +extern void OSS_seq_needbuf(int len, int fd, unsigned char *buf, int buflen);
159530 +extern void OSS_patch_caching(int dev, int chn, int patch,
159531 + int fd, unsigned char *buf, int buflen);
159532 +extern void OSS_drum_caching(int dev, int chn, int patch,
159533 + int fd, unsigned char *buf, int buflen);
159534 +extern void OSS_write_patch(int fd, unsigned char *buf, int len);
159535 +extern int OSS_write_patch2(int fd, unsigned char *buf, int len);
159536
159537 -#define _SEQ_EXTERN extern
159538 -#define SEQ_USE_EXTBUF() \
159539 - _SEQ_EXTERN unsigned char _seqbuf[]; \
159540 - _SEQ_EXTERN int _seqbuflen; _SEQ_EXTERN int _seqbufptr
159541 +#define SEQ_PM_DEFINES int __foo_bar___
159542 +#ifdef OSSLIB
159543 +# define SEQ_USE_EXTBUF() \
159544 + extern unsigned char *_seqbuf; \
159545 + extern int _seqbuflen;extern int _seqbufptr
159546 +# define SEQ_DEFINEBUF(len) SEQ_USE_EXTBUF();static int _requested_seqbuflen=len
159547 +# define _SEQ_ADVBUF(len) OSS_seq_advbuf(len, seqfd, _seqbuf, _seqbuflen)
159548 +# define _SEQ_NEEDBUF(len) OSS_seq_needbuf(len, seqfd, _seqbuf, _seqbuflen)
159549 +# define SEQ_DUMPBUF() OSS_seqbuf_dump(seqfd, _seqbuf, _seqbuflen)
159550 +
159551 +# define SEQ_LOAD_GMINSTR(dev, instr) \
159552 + OSS_patch_caching(dev, -1, instr, seqfd, _seqbuf, _seqbuflen)
159553 +# define SEQ_LOAD_GMDRUM(dev, drum) \
159554 + OSS_drum_caching(dev, -1, drum, seqfd, _seqbuf, _seqbuflen)
159555 +#else /* !OSSLIB */
159556 +
159557 +# define SEQ_LOAD_GMINSTR(dev, instr)
159558 +# define SEQ_LOAD_GMDRUM(dev, drum)
159559 +
159560 +# define SEQ_USE_EXTBUF() \
159561 + extern unsigned char _seqbuf[]; \
159562 + extern int _seqbuflen;extern int _seqbufptr
159563
159564 #ifndef USE_SIMPLE_MACROS
159565 /* Sample seqbuf_dump() implementation:
159566 @@ -1117,6 +1131,7 @@
159567 */
159568 #define _SEQ_NEEDBUF(len) /* empty */
159569 #endif
159570 +#endif /* !OSSLIB */
159571
159572 #define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);\
159573 _seqbuf[_seqbufptr] = SEQ_EXTENDED;\
159574 @@ -1200,8 +1215,14 @@
159575 _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
159576
159577 #define SEQ_SET_PATCH SEQ_PGM_CHANGE
159578 -#define SEQ_PGM_CHANGE(dev, chn, patch) \
159579 +#ifdef OSSLIB
159580 +# define SEQ_PGM_CHANGE(dev, chn, patch) \
159581 + {OSS_patch_caching(dev, chn, patch, seqfd, _seqbuf, _seqbuflen); \
159582 + _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0);}
159583 +#else
159584 +# define SEQ_PGM_CHANGE(dev, chn, patch) \
159585 _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
159586 +#endif
159587
159588 #define SEQ_CONTROL(dev, chn, controller, value) \
159589 _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
159590 @@ -1279,12 +1300,19 @@
159591 /*
159592 * Patch loading.
159593 */
159594 -#define SEQ_WRPATCH(patchx, len) \
159595 +#ifdef OSSLIB
159596 +# define SEQ_WRPATCH(patchx, len) \
159597 + OSS_write_patch(seqfd, (char*)(patchx), len)
159598 +# define SEQ_WRPATCH2(patchx, len) \
159599 + OSS_write_patch2(seqfd, (char*)(patchx), len)
159600 +#else
159601 +# define SEQ_WRPATCH(patchx, len) \
159602 {if (_seqbufptr) SEQ_DUMPBUF();\
159603 if (write(seqfd, (char*)(patchx), len)==-1) \
159604 perror("Write patch: /dev/sequencer");}
159605 -#define SEQ_WRPATCH2(patchx, len) \
159606 +# define SEQ_WRPATCH2(patchx, len) \
159607 (SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len))
159608 +#endif
159609
159610 #endif
159611 #endif
159612 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/sound.h linux-2.6.29-rc3.owrt/include/linux/sound.h
159613 --- linux-2.6.29.owrt/include/linux/sound.h 2009-05-10 22:04:37.000000000 +0200
159614 +++ linux-2.6.29-rc3.owrt/include/linux/sound.h 2009-05-10 23:48:29.000000000 +0200
159615 @@ -25,7 +25,6 @@
159616 #define SND_DEV_AMIDI 13 /* Like /dev/midi (obsolete) */
159617 #define SND_DEV_ADMMIDI 14 /* Like /dev/dmmidi (onsolete) */
159618
159619 -#ifdef __KERNEL__
159620 /*
159621 * Sound core interface functions
159622 */
159623 @@ -41,4 +40,3 @@
159624 extern void unregister_sound_mixer(int unit);
159625 extern void unregister_sound_midi(int unit);
159626 extern void unregister_sound_dsp(int unit);
159627 -#endif /* __KERNEL__ */
159628 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/spi/spi_bitbang.h linux-2.6.29-rc3.owrt/include/linux/spi/spi_bitbang.h
159629 --- linux-2.6.29.owrt/include/linux/spi/spi_bitbang.h 2009-05-10 22:04:37.000000000 +0200
159630 +++ linux-2.6.29-rc3.owrt/include/linux/spi/spi_bitbang.h 2009-05-10 23:48:29.000000000 +0200
159631 @@ -83,13 +83,6 @@
159632 * int getmiso(struct spi_device *);
159633 * void spidelay(unsigned);
159634 *
159635 - * setsck()'s is_on parameter is a zero/nonzero boolean.
159636 - *
159637 - * setmosi()'s is_on parameter is a zero/nonzero boolean.
159638 - *
159639 - * getmiso() is required to return 0 or 1 only. Any other value is invalid
159640 - * and will result in improper operation.
159641 - *
159642 * A non-inlined routine would call bitbang_txrx_*() routines. The
159643 * main loop could easily compile down to a handful of instructions,
159644 * especially if the delay is a NOP (to run at peak speed).
159645 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/spi/spidev.h linux-2.6.29-rc3.owrt/include/linux/spi/spidev.h
159646 --- linux-2.6.29.owrt/include/linux/spi/spidev.h 2009-05-10 22:04:37.000000000 +0200
159647 +++ linux-2.6.29-rc3.owrt/include/linux/spi/spidev.h 2009-05-10 23:48:29.000000000 +0200
159648 @@ -22,7 +22,6 @@
159649 #ifndef SPIDEV_H
159650 #define SPIDEV_H
159651
159652 -#include <linux/types.h>
159653
159654 /* User space versions of kernel symbols for SPI clocking modes,
159655 * matching <linux/spi/spi.h>
159656 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/spinlock.h linux-2.6.29-rc3.owrt/include/linux/spinlock.h
159657 --- linux-2.6.29.owrt/include/linux/spinlock.h 2009-05-10 22:04:37.000000000 +0200
159658 +++ linux-2.6.29-rc3.owrt/include/linux/spinlock.h 2009-05-10 23:48:29.000000000 +0200
159659 @@ -124,12 +124,7 @@
159660 #ifdef CONFIG_GENERIC_LOCKBREAK
159661 #define spin_is_contended(lock) ((lock)->break_lock)
159662 #else
159663 -
159664 -#ifdef __raw_spin_is_contended
159665 #define spin_is_contended(lock) __raw_spin_is_contended(&(lock)->raw_lock)
159666 -#else
159667 -#define spin_is_contended(lock) (((void)(lock), 0))
159668 -#endif /*__raw_spin_is_contended*/
159669 #endif
159670
159671 /**
159672 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/synclink.h linux-2.6.29-rc3.owrt/include/linux/synclink.h
159673 --- linux-2.6.29.owrt/include/linux/synclink.h 2009-05-10 22:04:37.000000000 +0200
159674 +++ linux-2.6.29-rc3.owrt/include/linux/synclink.h 2009-05-10 23:48:29.000000000 +0200
159675 @@ -13,8 +13,6 @@
159676 #define _SYNCLINK_H_
159677 #define SYNCLINK_H_VERSION 3.6
159678
159679 -#include <linux/types.h>
159680 -
159681 #define BIT0 0x0001
159682 #define BIT1 0x0002
159683 #define BIT2 0x0004
159684 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/syscalls.h linux-2.6.29-rc3.owrt/include/linux/syscalls.h
159685 --- linux-2.6.29.owrt/include/linux/syscalls.h 2009-05-10 22:04:37.000000000 +0200
159686 +++ linux-2.6.29-rc3.owrt/include/linux/syscalls.h 2009-05-10 23:48:29.000000000 +0200
159687 @@ -95,47 +95,42 @@
159688 #define __SC_TEST5(t5, a5, ...) __SC_TEST(t5); __SC_TEST4(__VA_ARGS__)
159689 #define __SC_TEST6(t6, a6, ...) __SC_TEST(t6); __SC_TEST5(__VA_ARGS__)
159690
159691 -#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
159692 -#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
159693 -#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
159694 -#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
159695 -#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
159696 -#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
159697 -#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
159698 +#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
159699 +#define SYSCALL_DEFINE1(...) SYSCALL_DEFINEx(1, __VA_ARGS__)
159700 +#define SYSCALL_DEFINE2(...) SYSCALL_DEFINEx(2, __VA_ARGS__)
159701 +#define SYSCALL_DEFINE3(...) SYSCALL_DEFINEx(3, __VA_ARGS__)
159702 +#define SYSCALL_DEFINE4(...) SYSCALL_DEFINEx(4, __VA_ARGS__)
159703 +#define SYSCALL_DEFINE5(...) SYSCALL_DEFINEx(5, __VA_ARGS__)
159704 +#define SYSCALL_DEFINE6(...) SYSCALL_DEFINEx(6, __VA_ARGS__)
159705
159706 #ifdef CONFIG_PPC64
159707 #define SYSCALL_ALIAS(alias, name) \
159708 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
159709 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
159710 #else
159711 -#ifdef CONFIG_ALPHA
159712 -#define SYSCALL_ALIAS(alias, name) \
159713 - asm ( #alias " = " #name "\n\t.globl " #alias)
159714 -#else
159715 #define SYSCALL_ALIAS(alias, name) \
159716 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name)
159717 #endif
159718 -#endif
159719
159720 #ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
159721
159722 #define SYSCALL_DEFINE(name) static inline long SYSC_##name
159723 #define SYSCALL_DEFINEx(x, name, ...) \
159724 - asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__)); \
159725 - static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__)); \
159726 - asmlinkage long SyS##name(__SC_LONG##x(__VA_ARGS__)) \
159727 + asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__)); \
159728 + static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__)); \
159729 + asmlinkage long SyS_##name(__SC_LONG##x(__VA_ARGS__)) \
159730 { \
159731 __SC_TEST##x(__VA_ARGS__); \
159732 - return (long) SYSC##name(__SC_CAST##x(__VA_ARGS__)); \
159733 + return (long) SYSC_##name(__SC_CAST##x(__VA_ARGS__)); \
159734 } \
159735 - SYSCALL_ALIAS(sys##name, SyS##name); \
159736 - static inline long SYSC##name(__SC_DECL##x(__VA_ARGS__))
159737 + SYSCALL_ALIAS(sys_##name, SyS_##name); \
159738 + static inline long SYSC_##name(__SC_DECL##x(__VA_ARGS__))
159739
159740 #else /* CONFIG_HAVE_SYSCALL_WRAPPERS */
159741
159742 #define SYSCALL_DEFINE(name) asmlinkage long sys_##name
159743 #define SYSCALL_DEFINEx(x, name, ...) \
159744 - asmlinkage long sys##name(__SC_DECL##x(__VA_ARGS__))
159745 + asmlinkage long sys_##name(__SC_DECL##x(__VA_ARGS__))
159746
159747 #endif /* CONFIG_HAVE_SYSCALL_WRAPPERS */
159748
159749 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/taskstats.h linux-2.6.29-rc3.owrt/include/linux/taskstats.h
159750 --- linux-2.6.29.owrt/include/linux/taskstats.h 2009-05-10 22:04:37.000000000 +0200
159751 +++ linux-2.6.29-rc3.owrt/include/linux/taskstats.h 2009-05-10 23:48:29.000000000 +0200
159752 @@ -16,8 +16,6 @@
159753 #ifndef _LINUX_TASKSTATS_H
159754 #define _LINUX_TASKSTATS_H
159755
159756 -#include <linux/types.h>
159757 -
159758 /* Format for per-task data returned to userland when
159759 * - a task exits
159760 * - listener requests stats for a task
159761 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_act/tc_gact.h linux-2.6.29-rc3.owrt/include/linux/tc_act/tc_gact.h
159762 --- linux-2.6.29.owrt/include/linux/tc_act/tc_gact.h 2009-05-10 22:04:37.000000000 +0200
159763 +++ linux-2.6.29-rc3.owrt/include/linux/tc_act/tc_gact.h 2009-05-10 23:48:29.000000000 +0200
159764 @@ -1,7 +1,6 @@
159765 #ifndef __LINUX_TC_GACT_H
159766 #define __LINUX_TC_GACT_H
159767
159768 -#include <linux/types.h>
159769 #include <linux/pkt_cls.h>
159770
159771 #define TCA_ACT_GACT 5
159772 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_act/tc_mirred.h linux-2.6.29-rc3.owrt/include/linux/tc_act/tc_mirred.h
159773 --- linux-2.6.29.owrt/include/linux/tc_act/tc_mirred.h 2009-05-10 22:04:37.000000000 +0200
159774 +++ linux-2.6.29-rc3.owrt/include/linux/tc_act/tc_mirred.h 2009-05-10 23:48:29.000000000 +0200
159775 @@ -1,7 +1,6 @@
159776 #ifndef __LINUX_TC_MIR_H
159777 #define __LINUX_TC_MIR_H
159778
159779 -#include <linux/types.h>
159780 #include <linux/pkt_cls.h>
159781
159782 #define TCA_ACT_MIRRED 8
159783 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_act/tc_pedit.h linux-2.6.29-rc3.owrt/include/linux/tc_act/tc_pedit.h
159784 --- linux-2.6.29.owrt/include/linux/tc_act/tc_pedit.h 2009-05-10 22:04:37.000000000 +0200
159785 +++ linux-2.6.29-rc3.owrt/include/linux/tc_act/tc_pedit.h 2009-05-10 23:48:29.000000000 +0200
159786 @@ -1,7 +1,6 @@
159787 #ifndef __LINUX_TC_PED_H
159788 #define __LINUX_TC_PED_H
159789
159790 -#include <linux/types.h>
159791 #include <linux/pkt_cls.h>
159792
159793 #define TCA_ACT_PEDIT 7
159794 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_cmp.h linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_cmp.h
159795 --- linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_cmp.h 2009-05-10 22:04:37.000000000 +0200
159796 +++ linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_cmp.h 2009-05-10 23:48:29.000000000 +0200
159797 @@ -1,7 +1,6 @@
159798 #ifndef __LINUX_TC_EM_CMP_H
159799 #define __LINUX_TC_EM_CMP_H
159800
159801 -#include <linux/types.h>
159802 #include <linux/pkt_cls.h>
159803
159804 struct tcf_em_cmp
159805 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_meta.h linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_meta.h
159806 --- linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_meta.h 2009-05-10 22:04:37.000000000 +0200
159807 +++ linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_meta.h 2009-05-10 23:48:29.000000000 +0200
159808 @@ -1,7 +1,6 @@
159809 #ifndef __LINUX_TC_EM_META_H
159810 #define __LINUX_TC_EM_META_H
159811
159812 -#include <linux/types.h>
159813 #include <linux/pkt_cls.h>
159814
159815 enum
159816 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_nbyte.h linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_nbyte.h
159817 --- linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_nbyte.h 2009-05-10 22:04:37.000000000 +0200
159818 +++ linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_nbyte.h 2009-05-10 23:48:29.000000000 +0200
159819 @@ -1,7 +1,6 @@
159820 #ifndef __LINUX_TC_EM_NBYTE_H
159821 #define __LINUX_TC_EM_NBYTE_H
159822
159823 -#include <linux/types.h>
159824 #include <linux/pkt_cls.h>
159825
159826 struct tcf_em_nbyte
159827 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_text.h linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_text.h
159828 --- linux-2.6.29.owrt/include/linux/tc_ematch/tc_em_text.h 2009-05-10 22:04:37.000000000 +0200
159829 +++ linux-2.6.29-rc3.owrt/include/linux/tc_ematch/tc_em_text.h 2009-05-10 23:48:29.000000000 +0200
159830 @@ -1,7 +1,6 @@
159831 #ifndef __LINUX_TC_EM_TEXT_H
159832 #define __LINUX_TC_EM_TEXT_H
159833
159834 -#include <linux/types.h>
159835 #include <linux/pkt_cls.h>
159836
159837 #define TC_EM_TEXT_ALGOSIZ 16
159838 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/timerfd.h linux-2.6.29-rc3.owrt/include/linux/timerfd.h
159839 --- linux-2.6.29.owrt/include/linux/timerfd.h 2009-05-10 22:04:37.000000000 +0200
159840 +++ linux-2.6.29-rc3.owrt/include/linux/timerfd.h 2009-05-10 23:48:29.000000000 +0200
159841 @@ -11,21 +11,13 @@
159842 /* For O_CLOEXEC and O_NONBLOCK */
159843 #include <linux/fcntl.h>
159844
159845 -/*
159846 - * CAREFUL: Check include/asm-generic/fcntl.h when defining
159847 - * new flags, since they might collide with O_* ones. We want
159848 - * to re-use O_* flags that couldn't possibly have a meaning
159849 - * from eventfd, in order to leave a free define-space for
159850 - * shared O_* flags.
159851 - */
159852 +/* Flags for timerfd_settime. */
159853 #define TFD_TIMER_ABSTIME (1 << 0)
159854 +
159855 +/* Flags for timerfd_create. */
159856 #define TFD_CLOEXEC O_CLOEXEC
159857 #define TFD_NONBLOCK O_NONBLOCK
159858
159859 -#define TFD_SHARED_FCNTL_FLAGS (TFD_CLOEXEC | TFD_NONBLOCK)
159860 -/* Flags for timerfd_create. */
159861 -#define TFD_CREATE_FLAGS TFD_SHARED_FCNTL_FLAGS
159862 -/* Flags for timerfd_settime. */
159863 -#define TFD_SETTIME_FLAGS TFD_TIMER_ABSTIME
159864
159865 #endif /* _LINUX_TIMERFD_H */
159866 +
159867 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/usb/cdc.h linux-2.6.29-rc3.owrt/include/linux/usb/cdc.h
159868 --- linux-2.6.29.owrt/include/linux/usb/cdc.h 2009-05-10 22:04:37.000000000 +0200
159869 +++ linux-2.6.29-rc3.owrt/include/linux/usb/cdc.h 2009-05-10 23:48:29.000000000 +0200
159870 @@ -9,8 +9,6 @@
159871 #ifndef __LINUX_USB_CDC_H
159872 #define __LINUX_USB_CDC_H
159873
159874 -#include <linux/types.h>
159875 -
159876 #define USB_CDC_SUBCLASS_ACM 0x02
159877 #define USB_CDC_SUBCLASS_ETHERNET 0x06
159878 #define USB_CDC_SUBCLASS_WHCM 0x08
159879 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/usb/gadgetfs.h linux-2.6.29-rc3.owrt/include/linux/usb/gadgetfs.h
159880 --- linux-2.6.29.owrt/include/linux/usb/gadgetfs.h 2009-05-10 22:04:37.000000000 +0200
159881 +++ linux-2.6.29-rc3.owrt/include/linux/usb/gadgetfs.h 2009-05-10 23:48:29.000000000 +0200
159882 @@ -18,7 +18,7 @@
159883 #ifndef __LINUX_USB_GADGETFS_H
159884 #define __LINUX_USB_GADGETFS_H
159885
159886 -#include <linux/types.h>
159887 +#include <asm/types.h>
159888 #include <asm/ioctl.h>
159889
159890 #include <linux/usb/ch9.h>
159891 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/user_namespace.h linux-2.6.29-rc3.owrt/include/linux/user_namespace.h
159892 --- linux-2.6.29.owrt/include/linux/user_namespace.h 2009-05-10 22:04:37.000000000 +0200
159893 +++ linux-2.6.29-rc3.owrt/include/linux/user_namespace.h 2009-05-10 23:48:29.000000000 +0200
159894 @@ -13,7 +13,6 @@
159895 struct kref kref;
159896 struct hlist_head uidhash_table[UIDHASH_SZ];
159897 struct user_struct *creator;
159898 - struct work_struct destroyer;
159899 };
159900
159901 extern struct user_namespace init_user_ns;
159902 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/video_decoder.h linux-2.6.29-rc3.owrt/include/linux/video_decoder.h
159903 --- linux-2.6.29.owrt/include/linux/video_decoder.h 2009-05-10 22:04:37.000000000 +0200
159904 +++ linux-2.6.29-rc3.owrt/include/linux/video_decoder.h 2009-05-10 23:48:29.000000000 +0200
159905 @@ -1,8 +1,6 @@
159906 #ifndef _LINUX_VIDEO_DECODER_H
159907 #define _LINUX_VIDEO_DECODER_H
159908
159909 -#include <linux/types.h>
159910 -
159911 #define HAVE_VIDEO_DECODER 1
159912
159913 struct video_decoder_capability { /* this name is too long */
159914 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/videodev.h linux-2.6.29-rc3.owrt/include/linux/videodev.h
159915 --- linux-2.6.29.owrt/include/linux/videodev.h 2009-05-10 22:04:37.000000000 +0200
159916 +++ linux-2.6.29-rc3.owrt/include/linux/videodev.h 2009-05-10 23:48:29.000000000 +0200
159917 @@ -12,7 +12,6 @@
159918 #ifndef __LINUX_VIDEODEV_H
159919 #define __LINUX_VIDEODEV_H
159920
159921 -#include <linux/types.h>
159922 #include <linux/ioctl.h>
159923 #include <linux/videodev2.h>
159924
159925 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/video_encoder.h linux-2.6.29-rc3.owrt/include/linux/video_encoder.h
159926 --- linux-2.6.29.owrt/include/linux/video_encoder.h 2009-05-10 22:04:37.000000000 +0200
159927 +++ linux-2.6.29-rc3.owrt/include/linux/video_encoder.h 2009-05-10 23:48:29.000000000 +0200
159928 @@ -1,8 +1,6 @@
159929 #ifndef _LINUX_VIDEO_ENCODER_H
159930 #define _LINUX_VIDEO_ENCODER_H
159931
159932 -#include <linux/types.h>
159933 -
159934 struct video_encoder_capability { /* this name is too long */
159935 __u32 flags;
159936 #define VIDEO_ENCODER_PAL 1 /* can encode PAL signal */
159937 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/virtio_blk.h linux-2.6.29-rc3.owrt/include/linux/virtio_blk.h
159938 --- linux-2.6.29.owrt/include/linux/virtio_blk.h 2009-05-10 22:04:37.000000000 +0200
159939 +++ linux-2.6.29-rc3.owrt/include/linux/virtio_blk.h 2009-05-10 23:48:29.000000000 +0200
159940 @@ -2,7 +2,6 @@
159941 #define _LINUX_VIRTIO_BLK_H
159942 /* This header is BSD licensed so anyone can use the definitions to implement
159943 * compatible drivers/servers. */
159944 -#include <linux/types.h>
159945 #include <linux/virtio_config.h>
159946
159947 /* The ID for virtio_block */
159948 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/virtio_console.h linux-2.6.29-rc3.owrt/include/linux/virtio_console.h
159949 --- linux-2.6.29.owrt/include/linux/virtio_console.h 2009-05-10 22:04:37.000000000 +0200
159950 +++ linux-2.6.29-rc3.owrt/include/linux/virtio_console.h 2009-05-10 23:48:29.000000000 +0200
159951 @@ -1,6 +1,5 @@
159952 #ifndef _LINUX_VIRTIO_CONSOLE_H
159953 #define _LINUX_VIRTIO_CONSOLE_H
159954 -#include <linux/types.h>
159955 #include <linux/virtio_config.h>
159956 /* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so
159957 * anyone can use the definitions to implement compatible drivers/servers. */
159958 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/virtio_net.h linux-2.6.29-rc3.owrt/include/linux/virtio_net.h
159959 --- linux-2.6.29.owrt/include/linux/virtio_net.h 2009-05-10 22:04:37.000000000 +0200
159960 +++ linux-2.6.29-rc3.owrt/include/linux/virtio_net.h 2009-05-10 23:48:29.000000000 +0200
159961 @@ -2,7 +2,6 @@
159962 #define _LINUX_VIRTIO_NET_H
159963 /* This header is BSD licensed so anyone can use the definitions to implement
159964 * compatible drivers/servers. */
159965 -#include <linux/types.h>
159966 #include <linux/virtio_config.h>
159967
159968 /* The ID for virtio_net */
159969 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/vmalloc.h linux-2.6.29-rc3.owrt/include/linux/vmalloc.h
159970 --- linux-2.6.29.owrt/include/linux/vmalloc.h 2009-05-10 22:04:37.000000000 +0200
159971 +++ linux-2.6.29-rc3.owrt/include/linux/vmalloc.h 2009-05-10 23:48:29.000000000 +0200
159972 @@ -84,10 +84,6 @@
159973 unsigned long flags, void *caller);
159974 extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags,
159975 unsigned long start, unsigned long end);
159976 -extern struct vm_struct *__get_vm_area_caller(unsigned long size,
159977 - unsigned long flags,
159978 - unsigned long start, unsigned long end,
159979 - void *caller);
159980 extern struct vm_struct *get_vm_area_node(unsigned long size,
159981 unsigned long flags, int node,
159982 gfp_t gfp_mask);
159983 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/linux/wait.h linux-2.6.29-rc3.owrt/include/linux/wait.h
159984 --- linux-2.6.29.owrt/include/linux/wait.h 2009-05-10 22:04:37.000000000 +0200
159985 +++ linux-2.6.29-rc3.owrt/include/linux/wait.h 2009-05-10 23:48:29.000000000 +0200
159986 @@ -132,8 +132,6 @@
159987 list_del(&old->task_list);
159988 }
159989
159990 -void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
159991 - int nr_exclusive, int sync, void *key);
159992 void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
159993 extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode);
159994 extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
159995 @@ -335,19 +333,16 @@
159996 for (;;) { \
159997 prepare_to_wait_exclusive(&wq, &__wait, \
159998 TASK_INTERRUPTIBLE); \
159999 - if (condition) { \
160000 - finish_wait(&wq, &__wait); \
160001 + if (condition) \
160002 break; \
160003 - } \
160004 if (!signal_pending(current)) { \
160005 schedule(); \
160006 continue; \
160007 } \
160008 ret = -ERESTARTSYS; \
160009 - abort_exclusive_wait(&wq, &__wait, \
160010 - TASK_INTERRUPTIBLE, NULL); \
160011 break; \
160012 } \
160013 + finish_wait(&wq, &__wait); \
160014 } while (0)
160015
160016 #define wait_event_interruptible_exclusive(wq, condition) \
160017 @@ -436,8 +431,6 @@
160018 void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state);
160019 void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state);
160020 void finish_wait(wait_queue_head_t *q, wait_queue_t *wait);
160021 -void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait,
160022 - unsigned int mode, void *key);
160023 int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
160024 int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
160025
160026 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/media/v4l2-device.h linux-2.6.29-rc3.owrt/include/media/v4l2-device.h
160027 --- linux-2.6.29.owrt/include/media/v4l2-device.h 2009-05-10 22:04:38.000000000 +0200
160028 +++ linux-2.6.29-rc3.owrt/include/media/v4l2-device.h 2009-05-10 23:48:29.000000000 +0200
160029 @@ -94,16 +94,16 @@
160030 /* Call the specified callback for all subdevs matching grp_id (if 0, then
160031 match them all). Ignore any errors. Note that you cannot add or delete
160032 a subdev while walking the subdevs list. */
160033 -#define v4l2_device_call_all(dev, grpid, o, f, args...) \
160034 +#define v4l2_device_call_all(dev, grp_id, o, f, args...) \
160035 __v4l2_device_call_subdevs(dev, \
160036 - !(grpid) || sd->grp_id == (grpid), o, f , ##args)
160037 + !(grp_id) || sd->grp_id == (grp_id), o, f , ##args)
160038
160039 /* Call the specified callback for all subdevs matching grp_id (if 0, then
160040 match them all). If the callback returns an error other than 0 or
160041 -ENOIOCTLCMD, then return with that error code. Note that you cannot
160042 add or delete a subdev while walking the subdevs list. */
160043 -#define v4l2_device_call_until_err(dev, grpid, o, f, args...) \
160044 +#define v4l2_device_call_until_err(dev, grp_id, o, f, args...) \
160045 __v4l2_device_call_subdevs_until_err(dev, \
160046 - !(grpid) || sd->grp_id == (grpid), o, f , ##args)
160047 + !(grp_id) || sd->grp_id == (grp_id), o, f , ##args)
160048
160049 #endif
160050 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/media/videobuf-dma-sg.h linux-2.6.29-rc3.owrt/include/media/videobuf-dma-sg.h
160051 --- linux-2.6.29.owrt/include/media/videobuf-dma-sg.h 2009-05-10 22:04:38.000000000 +0200
160052 +++ linux-2.6.29-rc3.owrt/include/media/videobuf-dma-sg.h 2009-05-10 23:48:29.000000000 +0200
160053 @@ -49,7 +49,7 @@
160054 * does memory allocation too using vmalloc_32().
160055 *
160056 * videobuf_dma_*()
160057 - * see Documentation/PCI/PCI-DMA-mapping.txt, these functions to
160058 + * see Documentation/DMA-mapping.txt, these functions to
160059 * basically the same. The map function does also build a
160060 * scatterlist for the buffer (and unmap frees it ...)
160061 *
160062 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/mtd/inftl-user.h linux-2.6.29-rc3.owrt/include/mtd/inftl-user.h
160063 --- linux-2.6.29.owrt/include/mtd/inftl-user.h 2009-05-10 22:04:38.000000000 +0200
160064 +++ linux-2.6.29-rc3.owrt/include/mtd/inftl-user.h 2009-05-10 23:48:29.000000000 +0200
160065 @@ -6,8 +6,6 @@
160066 #ifndef __MTD_INFTL_USER_H__
160067 #define __MTD_INFTL_USER_H__
160068
160069 -#include <linux/types.h>
160070 -
160071 #define OSAK_VERSION 0x5120
160072 #define PERCENTUSED 98
160073
160074 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/mtd/ubi-user.h linux-2.6.29-rc3.owrt/include/mtd/ubi-user.h
160075 --- linux-2.6.29.owrt/include/mtd/ubi-user.h 2009-05-10 22:04:38.000000000 +0200
160076 +++ linux-2.6.29-rc3.owrt/include/mtd/ubi-user.h 2009-05-10 23:48:29.000000000 +0200
160077 @@ -40,37 +40,37 @@
160078 * UBI volume creation
160079 * ~~~~~~~~~~~~~~~~~~~
160080 *
160081 - * UBI volumes are created via the %UBI_IOCMKVOL ioctl command of UBI character
160082 + * UBI volumes are created via the %UBI_IOCMKVOL IOCTL command of UBI character
160083 * device. A &struct ubi_mkvol_req object has to be properly filled and a
160084 - * pointer to it has to be passed to the ioctl.
160085 + * pointer to it has to be passed to the IOCTL.
160086 *
160087 * UBI volume deletion
160088 * ~~~~~~~~~~~~~~~~~~~
160089 *
160090 - * To delete a volume, the %UBI_IOCRMVOL ioctl command of the UBI character
160091 + * To delete a volume, the %UBI_IOCRMVOL IOCTL command of the UBI character
160092 * device should be used. A pointer to the 32-bit volume ID hast to be passed
160093 - * to the ioctl.
160094 + * to the IOCTL.
160095 *
160096 * UBI volume re-size
160097 * ~~~~~~~~~~~~~~~~~~
160098 *
160099 - * To re-size a volume, the %UBI_IOCRSVOL ioctl command of the UBI character
160100 + * To re-size a volume, the %UBI_IOCRSVOL IOCTL command of the UBI character
160101 * device should be used. A &struct ubi_rsvol_req object has to be properly
160102 - * filled and a pointer to it has to be passed to the ioctl.
160103 + * filled and a pointer to it has to be passed to the IOCTL.
160104 *
160105 * UBI volumes re-name
160106 * ~~~~~~~~~~~~~~~~~~~
160107 *
160108 * To re-name several volumes atomically at one go, the %UBI_IOCRNVOL command
160109 * of the UBI character device should be used. A &struct ubi_rnvol_req object
160110 - * has to be properly filled and a pointer to it has to be passed to the ioctl.
160111 + * has to be properly filled and a pointer to it has to be passed to the IOCTL.
160112 *
160113 * UBI volume update
160114 * ~~~~~~~~~~~~~~~~~
160115 *
160116 - * Volume update should be done via the %UBI_IOCVOLUP ioctl command of the
160117 + * Volume update should be done via the %UBI_IOCVOLUP IOCTL command of the
160118 * corresponding UBI volume character device. A pointer to a 64-bit update
160119 - * size should be passed to the ioctl. After this, UBI expects user to write
160120 + * size should be passed to the IOCTL. After this, UBI expects user to write
160121 * this number of bytes to the volume character device. The update is finished
160122 * when the claimed number of bytes is passed. So, the volume update sequence
160123 * is something like:
160124 @@ -80,58 +80,14 @@
160125 * write(fd, buf, image_size);
160126 * close(fd);
160127 *
160128 - * Logical eraseblock erase
160129 + * Atomic eraseblock change
160130 * ~~~~~~~~~~~~~~~~~~~~~~~~
160131 *
160132 - * To erase a logical eraseblock, the %UBI_IOCEBER ioctl command of the
160133 - * corresponding UBI volume character device should be used. This command
160134 - * unmaps the requested logical eraseblock, makes sure the corresponding
160135 - * physical eraseblock is successfully erased, and returns.
160136 - *
160137 - * Atomic logical eraseblock change
160138 - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160139 - *
160140 - * Atomic logical eraseblock change operation is called using the %UBI_IOCEBCH
160141 - * ioctl command of the corresponding UBI volume character device. A pointer to
160142 - * a &struct ubi_leb_change_req object has to be passed to the ioctl. Then the
160143 - * user is expected to write the requested amount of bytes (similarly to what
160144 - * should be done in case of the "volume update" ioctl).
160145 - *
160146 - * Logical eraseblock map
160147 - * ~~~~~~~~~~~~~~~~~~~~~
160148 - *
160149 - * To map a logical eraseblock to a physical eraseblock, the %UBI_IOCEBMAP
160150 - * ioctl command should be used. A pointer to a &struct ubi_map_req object is
160151 - * expected to be passed. The ioctl maps the requested logical eraseblock to
160152 - * a physical eraseblock and returns. Only non-mapped logical eraseblocks can
160153 - * be mapped. If the logical eraseblock specified in the request is already
160154 - * mapped to a physical eraseblock, the ioctl fails and returns error.
160155 - *
160156 - * Logical eraseblock unmap
160157 - * ~~~~~~~~~~~~~~~~~~~~~~~~
160158 - *
160159 - * To unmap a logical eraseblock to a physical eraseblock, the %UBI_IOCEBUNMAP
160160 - * ioctl command should be used. The ioctl unmaps the logical eraseblocks,
160161 - * schedules corresponding physical eraseblock for erasure, and returns. Unlike
160162 - * the "LEB erase" command, it does not wait for the physical eraseblock being
160163 - * erased. Note, the side effect of this is that if an unclean reboot happens
160164 - * after the unmap ioctl returns, you may find the LEB mapped again to the same
160165 - * physical eraseblock after the UBI is run again.
160166 - *
160167 - * Check if logical eraseblock is mapped
160168 - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160169 - *
160170 - * To check if a logical eraseblock is mapped to a physical eraseblock, the
160171 - * %UBI_IOCEBISMAP ioctl command should be used. It returns %0 if the LEB is
160172 - * not mapped, and %1 if it is mapped.
160173 - *
160174 - * Set an UBI volume property
160175 - * ~~~~~~~~~~~~~~~~~~~~~~~~~
160176 - *
160177 - * To set an UBI volume property the %UBI_IOCSETPROP ioctl command should be
160178 - * used. A pointer to a &struct ubi_set_prop_req object is expected to be
160179 - * passed. The object describes which property should be set, and to which value
160180 - * it should be set.
160181 + * Atomic eraseblock change operation is done via the %UBI_IOCEBCH IOCTL
160182 + * command of the corresponding UBI volume character device. A pointer to
160183 + * &struct ubi_leb_change_req has to be passed to the IOCTL. Then the user is
160184 + * expected to write the requested amount of bytes. This is similar to the
160185 + * "volume update" IOCTL.
160186 */
160187
160188 /*
160189 @@ -145,7 +101,7 @@
160190 /* Maximum volume name length */
160191 #define UBI_MAX_VOLUME_NAME 127
160192
160193 -/* ioctl commands of UBI character devices */
160194 +/* IOCTL commands of UBI character devices */
160195
160196 #define UBI_IOC_MAGIC 'o'
160197
160198 @@ -158,7 +114,7 @@
160199 /* Re-name volumes */
160200 #define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req)
160201
160202 -/* ioctl commands of the UBI control character device */
160203 +/* IOCTL commands of the UBI control character device */
160204
160205 #define UBI_CTRL_IOC_MAGIC 'o'
160206
160207 @@ -167,24 +123,16 @@
160208 /* Detach an MTD device */
160209 #define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, int32_t)
160210
160211 -/* ioctl commands of UBI volume character devices */
160212 +/* IOCTL commands of UBI volume character devices */
160213
160214 #define UBI_VOL_IOC_MAGIC 'O'
160215
160216 /* Start UBI volume update */
160217 #define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, int64_t)
160218 -/* LEB erasure command, used for debugging, disabled by default */
160219 +/* An eraseblock erasure command, used for debugging, disabled by default */
160220 #define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, int32_t)
160221 -/* Atomic LEB change command */
160222 +/* An atomic eraseblock change command */
160223 #define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, int32_t)
160224 -/* Map LEB command */
160225 -#define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req)
160226 -/* Unmap LEB command */
160227 -#define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, int32_t)
160228 -/* Check if LEB is mapped command */
160229 -#define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, int32_t)
160230 -/* Set an UBI volume property */
160231 -#define UBI_IOCSETPROP _IOW(UBI_VOL_IOC_MAGIC, 6, struct ubi_set_prop_req)
160232
160233 /* Maximum MTD device name length supported by UBI */
160234 #define MAX_UBI_MTD_NAME_LEN 127
160235 @@ -220,16 +168,6 @@
160236 UBI_STATIC_VOLUME = 4,
160237 };
160238
160239 -/*
160240 - * UBI set property ioctl constants
160241 - *
160242 - * @UBI_PROP_DIRECT_WRITE: allow / disallow user to directly write and
160243 - * erase individual eraseblocks on dynamic volumes
160244 - */
160245 -enum {
160246 - UBI_PROP_DIRECT_WRITE = 1,
160247 -};
160248 -
160249 /**
160250 * struct ubi_attach_req - attach MTD device request.
160251 * @ubi_num: UBI device number to create
160252 @@ -367,8 +305,8 @@
160253 } __attribute__ ((packed));
160254
160255 /**
160256 - * struct ubi_leb_change_req - a data structure used in atomic LEB change
160257 - * requests.
160258 + * struct ubi_leb_change_req - a data structure used in atomic logical
160259 + * eraseblock change requests.
160260 * @lnum: logical eraseblock number to change
160261 * @bytes: how many bytes will be written to the logical eraseblock
160262 * @dtype: data type (%UBI_LONGTERM, %UBI_SHORTTERM, %UBI_UNKNOWN)
160263 @@ -381,30 +319,4 @@
160264 int8_t padding[7];
160265 } __attribute__ ((packed));
160266
160267 -/**
160268 - * struct ubi_map_req - a data structure used in map LEB requests.
160269 - * @lnum: logical eraseblock number to unmap
160270 - * @dtype: data type (%UBI_LONGTERM, %UBI_SHORTTERM, %UBI_UNKNOWN)
160271 - * @padding: reserved for future, not used, has to be zeroed
160272 - */
160273 -struct ubi_map_req {
160274 - int32_t lnum;
160275 - int8_t dtype;
160276 - int8_t padding[3];
160277 -} __attribute__ ((packed));
160278 -
160279 -
160280 -/**
160281 - * struct ubi_set_prop_req - a data structure used to set an ubi volume
160282 - * property.
160283 - * @property: property to set (%UBI_PROP_DIRECT_WRITE)
160284 - * @padding: reserved for future, not used, has to be zeroed
160285 - * @value: value to set
160286 - */
160287 -struct ubi_set_prop_req {
160288 - uint8_t property;
160289 - uint8_t padding[7];
160290 - uint64_t value;
160291 -} __attribute__ ((packed));
160292 -
160293 #endif /* __UBI_USER_H__ */
160294 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/net/inet_hashtables.h linux-2.6.29-rc3.owrt/include/net/inet_hashtables.h
160295 --- linux-2.6.29.owrt/include/net/inet_hashtables.h 2009-05-10 22:04:38.000000000 +0200
160296 +++ linux-2.6.29-rc3.owrt/include/net/inet_hashtables.h 2009-05-10 23:48:29.000000000 +0200
160297 @@ -182,7 +182,7 @@
160298 size = 2048;
160299 if (nr_pcpus >= 32)
160300 size = 4096;
160301 - if (sizeof(spinlock_t) != 0) {
160302 + if (sizeof(rwlock_t) != 0) {
160303 #ifdef CONFIG_NUMA
160304 if (size * sizeof(spinlock_t) > PAGE_SIZE)
160305 hashinfo->ehash_locks = vmalloc(size * sizeof(spinlock_t));
160306 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/net/netfilter/nf_conntrack_core.h linux-2.6.29-rc3.owrt/include/net/netfilter/nf_conntrack_core.h
160307 --- linux-2.6.29.owrt/include/net/netfilter/nf_conntrack_core.h 2009-05-10 22:04:38.000000000 +0200
160308 +++ linux-2.6.29-rc3.owrt/include/net/netfilter/nf_conntrack_core.h 2009-05-10 23:48:29.000000000 +0200
160309 @@ -59,11 +59,10 @@
160310 struct nf_conn *ct = (struct nf_conn *)skb->nfct;
160311 int ret = NF_ACCEPT;
160312
160313 - if (ct && ct != &nf_conntrack_untracked) {
160314 + if (ct) {
160315 if (!nf_ct_is_confirmed(ct) && !nf_ct_is_dying(ct))
160316 ret = __nf_conntrack_confirm(skb);
160317 - if (likely(ret == NF_ACCEPT))
160318 - nf_ct_deliver_cached_events(ct);
160319 + nf_ct_deliver_cached_events(ct);
160320 }
160321 return ret;
160322 }
160323 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/net/net_namespace.h linux-2.6.29-rc3.owrt/include/net/net_namespace.h
160324 --- linux-2.6.29.owrt/include/net/net_namespace.h 2009-05-10 22:04:38.000000000 +0200
160325 +++ linux-2.6.29-rc3.owrt/include/net/net_namespace.h 2009-05-10 23:48:29.000000000 +0200
160326 @@ -109,6 +109,11 @@
160327 #ifdef CONFIG_NET_NS
160328 extern void __put_net(struct net *net);
160329
160330 +static inline int net_alive(struct net *net)
160331 +{
160332 + return net && atomic_read(&net->count);
160333 +}
160334 +
160335 static inline struct net *get_net(struct net *net)
160336 {
160337 atomic_inc(&net->count);
160338 @@ -140,6 +145,11 @@
160339 }
160340 #else
160341
160342 +static inline int net_alive(struct net *net)
160343 +{
160344 + return 1;
160345 +}
160346 +
160347 static inline struct net *get_net(struct net *net)
160348 {
160349 return net;
160350 @@ -224,23 +234,6 @@
160351 void (*exit)(struct net *net);
160352 };
160353
160354 -/*
160355 - * Use these carefully. If you implement a network device and it
160356 - * needs per network namespace operations use device pernet operations,
160357 - * otherwise use pernet subsys operations.
160358 - *
160359 - * This is critically important. Most of the network code cleanup
160360 - * runs with the assumption that dev_remove_pack has been called so no
160361 - * new packets will arrive during and after the cleanup functions have
160362 - * been called. dev_remove_pack is not per namespace so instead the
160363 - * guarantee of no more packets arriving in a network namespace is
160364 - * provided by ensuring that all network devices and all sockets have
160365 - * left the network namespace before the cleanup methods are called.
160366 - *
160367 - * For the longest time the ipv4 icmp code was registered as a pernet
160368 - * device which caused kernel oops, and panics during network
160369 - * namespace cleanup. So please don't get this wrong.
160370 - */
160371 extern int register_pernet_subsys(struct pernet_operations *);
160372 extern void unregister_pernet_subsys(struct pernet_operations *);
160373 extern int register_pernet_gen_subsys(int *id, struct pernet_operations *);
160374 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/net/sock.h linux-2.6.29-rc3.owrt/include/net/sock.h
160375 --- linux-2.6.29.owrt/include/net/sock.h 2009-05-10 22:04:37.000000000 +0200
160376 +++ linux-2.6.29-rc3.owrt/include/net/sock.h 2009-05-10 23:48:29.000000000 +0200
160377 @@ -860,6 +860,7 @@
160378
160379 static inline void sk_wmem_free_skb(struct sock *sk, struct sk_buff *skb)
160380 {
160381 + skb_truesize_check(skb);
160382 sock_set_flag(sk, SOCK_QUEUE_SHRUNK);
160383 sk->sk_wmem_queued -= skb->truesize;
160384 sk_mem_uncharge(sk, skb->truesize);
160385 @@ -1307,7 +1308,7 @@
160386
160387 static inline gfp_t gfp_any(void)
160388 {
160389 - return in_softirq() ? GFP_ATOMIC : GFP_KERNEL;
160390 + return in_atomic() ? GFP_ATOMIC : GFP_KERNEL;
160391 }
160392
160393 static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
160394 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/scsi/fc/fc_fcoe.h linux-2.6.29-rc3.owrt/include/scsi/fc/fc_fcoe.h
160395 --- linux-2.6.29.owrt/include/scsi/fc/fc_fcoe.h 2009-05-10 22:04:38.000000000 +0200
160396 +++ linux-2.6.29-rc3.owrt/include/scsi/fc/fc_fcoe.h 2009-05-10 23:48:29.000000000 +0200
160397 @@ -31,6 +31,10 @@
160398 #define ETH_P_FCOE 0x8906 /* FCOE ether type */
160399 #endif
160400
160401 +#ifndef ETH_P_8021Q
160402 +#define ETH_P_8021Q 0x8100
160403 +#endif
160404 +
160405 /*
160406 * FC_FCOE_OUI hasn't been standardized yet. XXX TBD.
160407 */
160408 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/scsi/fc/fc_fs.h linux-2.6.29-rc3.owrt/include/scsi/fc/fc_fs.h
160409 --- linux-2.6.29.owrt/include/scsi/fc/fc_fs.h 2009-05-10 22:04:38.000000000 +0200
160410 +++ linux-2.6.29-rc3.owrt/include/scsi/fc/fc_fs.h 2009-05-10 23:48:29.000000000 +0200
160411 @@ -337,9 +337,4 @@
160412 FC_RJT_VENDOR = 0xff, /* vendor specific reject */
160413 };
160414
160415 -/* default timeout values */
160416 -
160417 -#define FC_DEF_E_D_TOV 2000UL
160418 -#define FC_DEF_R_A_TOV 10000UL
160419 -
160420 #endif /* _FC_FS_H_ */
160421 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/scsi/libfc.h linux-2.6.29-rc3.owrt/include/scsi/libfc.h
160422 --- linux-2.6.29.owrt/include/scsi/libfc.h 2009-05-10 22:04:38.000000000 +0200
160423 +++ linux-2.6.29-rc3.owrt/include/scsi/libfc.h 2009-05-10 23:48:29.000000000 +0200
160424 @@ -68,6 +68,9 @@
160425 /*
160426 * FC HBA status
160427 */
160428 +#define FC_PAUSE (1 << 1)
160429 +#define FC_LINK_UP (1 << 0)
160430 +
160431 enum fc_lport_state {
160432 LPORT_ST_NONE = 0,
160433 LPORT_ST_FLOGI,
160434 @@ -336,17 +339,31 @@
160435
160436 struct libfc_function_template {
160437
160438 + /**
160439 + * Mandatory Fields
160440 + *
160441 + * These handlers must be implemented by the LLD.
160442 + */
160443 +
160444 /*
160445 * Interface to send a FC frame
160446 - *
160447 - * STATUS: REQUIRED
160448 */
160449 int (*frame_send)(struct fc_lport *lp, struct fc_frame *fp);
160450
160451 - /*
160452 - * Interface to send ELS/CT frames
160453 + /**
160454 + * Optional Fields
160455 *
160456 - * STATUS: OPTIONAL
160457 + * The LLD may choose to implement any of the following handlers.
160458 + * If LLD doesn't specify hander and leaves its pointer NULL then
160459 + * the default libfc function will be used for that handler.
160460 + */
160461 +
160462 + /**
160463 + * ELS/CT interfaces
160464 + */
160465 +
160466 + /*
160467 + * elsct_send - sends ELS/CT frame
160468 */
160469 struct fc_seq *(*elsct_send)(struct fc_lport *lport,
160470 struct fc_rport *rport,
160471 @@ -356,6 +373,9 @@
160472 struct fc_frame *fp,
160473 void *arg),
160474 void *arg, u32 timer_msec);
160475 + /**
160476 + * Exhance Manager interfaces
160477 + */
160478
160479 /*
160480 * Send the FC frame payload using a new exchange and sequence.
160481 @@ -387,8 +407,6 @@
160482 * timer_msec argument is specified. The timer is canceled when
160483 * it fires or when the exchange is done. The exchange timeout handler
160484 * is registered by EM layer.
160485 - *
160486 - * STATUS: OPTIONAL
160487 */
160488 struct fc_seq *(*exch_seq_send)(struct fc_lport *lp,
160489 struct fc_frame *fp,
160490 @@ -400,18 +418,14 @@
160491 void *arg, unsigned int timer_msec);
160492
160493 /*
160494 - * Send a frame using an existing sequence and exchange.
160495 - *
160496 - * STATUS: OPTIONAL
160497 + * send a frame using existing sequence and exchange.
160498 */
160499 int (*seq_send)(struct fc_lport *lp, struct fc_seq *sp,
160500 struct fc_frame *fp);
160501
160502 /*
160503 - * Send an ELS response using infomation from a previous
160504 - * exchange and sequence.
160505 - *
160506 - * STATUS: OPTIONAL
160507 + * Send ELS response using mainly infomation
160508 + * in exchange and sequence in EM layer.
160509 */
160510 void (*seq_els_rsp_send)(struct fc_seq *sp, enum fc_els_cmd els_cmd,
160511 struct fc_seq_els_data *els_data);
160512 @@ -423,8 +437,6 @@
160513 * A timer_msec can be specified for abort timeout, if non-zero
160514 * timer_msec value is specified then exchange resp handler
160515 * will be called with timeout error if no response to abort.
160516 - *
160517 - * STATUS: OPTIONAL
160518 */
160519 int (*seq_exch_abort)(const struct fc_seq *req_sp,
160520 unsigned int timer_msec);
160521 @@ -432,8 +444,6 @@
160522 /*
160523 * Indicate that an exchange/sequence tuple is complete and the memory
160524 * allocated for the related objects may be freed.
160525 - *
160526 - * STATUS: OPTIONAL
160527 */
160528 void (*exch_done)(struct fc_seq *sp);
160529
160530 @@ -441,8 +451,6 @@
160531 * Assigns a EM and a free XID for an new exchange and then
160532 * allocates a new exchange and sequence pair.
160533 * The fp can be used to determine free XID.
160534 - *
160535 - * STATUS: OPTIONAL
160536 */
160537 struct fc_exch *(*exch_get)(struct fc_lport *lp, struct fc_frame *fp);
160538
160539 @@ -450,16 +458,12 @@
160540 * Release previously assigned XID by exch_get API.
160541 * The LLD may implement this if XID is assigned by LLD
160542 * in exch_get().
160543 - *
160544 - * STATUS: OPTIONAL
160545 */
160546 void (*exch_put)(struct fc_lport *lp, struct fc_exch_mgr *mp,
160547 u16 ex_id);
160548
160549 /*
160550 * Start a new sequence on the same exchange/sequence tuple.
160551 - *
160552 - * STATUS: OPTIONAL
160553 */
160554 struct fc_seq *(*seq_start_next)(struct fc_seq *sp);
160555
160556 @@ -467,38 +471,26 @@
160557 * Reset an exchange manager, completing all sequences and exchanges.
160558 * If s_id is non-zero, reset only exchanges originating from that FID.
160559 * If d_id is non-zero, reset only exchanges sending to that FID.
160560 - *
160561 - * STATUS: OPTIONAL
160562 */
160563 - void (*exch_mgr_reset)(struct fc_lport *,
160564 + void (*exch_mgr_reset)(struct fc_exch_mgr *,
160565 u32 s_id, u32 d_id);
160566
160567 - /*
160568 - * Flush the rport work queue. Generally used before shutdown.
160569 - *
160570 - * STATUS: OPTIONAL
160571 - */
160572 void (*rport_flush_queue)(void);
160573 + /**
160574 + * Local Port interfaces
160575 + */
160576
160577 /*
160578 - * Receive a frame for a local port.
160579 - *
160580 - * STATUS: OPTIONAL
160581 + * Receive a frame to a local port.
160582 */
160583 void (*lport_recv)(struct fc_lport *lp, struct fc_seq *sp,
160584 struct fc_frame *fp);
160585
160586 - /*
160587 - * Reset the local port.
160588 - *
160589 - * STATUS: OPTIONAL
160590 - */
160591 int (*lport_reset)(struct fc_lport *);
160592
160593 - /*
160594 - * Create a remote port
160595 + /**
160596 + * Remote Port interfaces
160597 */
160598 - struct fc_rport *(*rport_create)(struct fc_disc_port *);
160599
160600 /*
160601 * Initiates the RP state machine. It is called from the LP module.
160602 @@ -508,72 +500,57 @@
160603 * - PLOGI
160604 * - PRLI
160605 * - RTV
160606 - *
160607 - * STATUS: OPTIONAL
160608 */
160609 int (*rport_login)(struct fc_rport *rport);
160610
160611 /*
160612 * Logoff, and remove the rport from the transport if
160613 * it had been added. This will send a LOGO to the target.
160614 - *
160615 - * STATUS: OPTIONAL
160616 */
160617 int (*rport_logoff)(struct fc_rport *rport);
160618
160619 /*
160620 * Recieve a request from a remote port.
160621 - *
160622 - * STATUS: OPTIONAL
160623 */
160624 void (*rport_recv_req)(struct fc_seq *, struct fc_frame *,
160625 struct fc_rport *);
160626
160627 - /*
160628 - * lookup an rport by it's port ID.
160629 - *
160630 - * STATUS: OPTIONAL
160631 - */
160632 struct fc_rport *(*rport_lookup)(const struct fc_lport *, u32);
160633
160634 + /**
160635 + * FCP interfaces
160636 + */
160637 +
160638 /*
160639 * Send a fcp cmd from fsp pkt.
160640 * Called with the SCSI host lock unlocked and irqs disabled.
160641 *
160642 * The resp handler is called when FCP_RSP received.
160643 *
160644 - * STATUS: OPTIONAL
160645 */
160646 int (*fcp_cmd_send)(struct fc_lport *lp, struct fc_fcp_pkt *fsp,
160647 void (*resp)(struct fc_seq *, struct fc_frame *fp,
160648 void *arg));
160649
160650 /*
160651 - * Cleanup the FCP layer, used durring link down and reset
160652 - *
160653 - * STATUS: OPTIONAL
160654 + * Used at least durring linkdown and reset
160655 */
160656 void (*fcp_cleanup)(struct fc_lport *lp);
160657
160658 /*
160659 * Abort all I/O on a local port
160660 - *
160661 - * STATUS: OPTIONAL
160662 */
160663 void (*fcp_abort_io)(struct fc_lport *lp);
160664
160665 - /*
160666 - * Receive a request for the discovery layer.
160667 - *
160668 - * STATUS: OPTIONAL
160669 + /**
160670 + * Discovery interfaces
160671 */
160672 +
160673 void (*disc_recv_req)(struct fc_seq *,
160674 struct fc_frame *, struct fc_lport *);
160675
160676 /*
160677 * Start discovery for a local port.
160678 - *
160679 - * STATUS: OPTIONAL
160680 */
160681 void (*disc_start)(void (*disc_callback)(struct fc_lport *,
160682 enum fc_disc_event),
160683 @@ -582,8 +559,6 @@
160684 /*
160685 * Stop discovery for a given lport. This will remove
160686 * all discovered rports
160687 - *
160688 - * STATUS: OPTIONAL
160689 */
160690 void (*disc_stop) (struct fc_lport *);
160691
160692 @@ -591,8 +566,6 @@
160693 * Stop discovery for a given lport. This will block
160694 * until all discovered rports are deleted from the
160695 * FC transport class
160696 - *
160697 - * STATUS: OPTIONAL
160698 */
160699 void (*disc_stop_final) (struct fc_lport *);
160700 };
160701 @@ -630,8 +603,7 @@
160702
160703 /* Operational Information */
160704 struct libfc_function_template tt;
160705 - u8 link_up;
160706 - u8 qfull;
160707 + u16 link_status;
160708 enum fc_lport_state state;
160709 unsigned long boot_time;
160710
160711 @@ -665,7 +637,7 @@
160712 struct delayed_work disc_work;
160713 };
160714
160715 -/*
160716 +/**
160717 * FC_LPORT HELPER FUNCTIONS
160718 *****************************/
160719 static inline void *lport_priv(const struct fc_lport *lp)
160720 @@ -697,7 +669,7 @@
160721 }
160722
160723
160724 -/*
160725 +/**
160726 * LOCAL PORT LAYER
160727 *****************************/
160728 int fc_lport_init(struct fc_lport *lp);
160729 @@ -732,6 +704,12 @@
160730 void fc_linkdown(struct fc_lport *);
160731
160732 /*
160733 + * Pause and unpause traffic.
160734 + */
160735 +void fc_pause(struct fc_lport *);
160736 +void fc_unpause(struct fc_lport *);
160737 +
160738 +/*
160739 * Configure the local port.
160740 */
160741 int fc_lport_config(struct fc_lport *);
160742 @@ -747,19 +725,19 @@
160743 int fc_set_mfs(struct fc_lport *lp, u32 mfs);
160744
160745
160746 -/*
160747 +/**
160748 * REMOTE PORT LAYER
160749 *****************************/
160750 int fc_rport_init(struct fc_lport *lp);
160751 void fc_rport_terminate_io(struct fc_rport *rp);
160752
160753 -/*
160754 +/**
160755 * DISCOVERY LAYER
160756 *****************************/
160757 int fc_disc_init(struct fc_lport *lp);
160758
160759
160760 -/*
160761 +/**
160762 * SCSI LAYER
160763 *****************************/
160764 /*
160765 @@ -820,7 +798,7 @@
160766 */
160767 void fc_fcp_destroy(struct fc_lport *);
160768
160769 -/*
160770 +/**
160771 * ELS/CT interface
160772 *****************************/
160773 /*
160774 @@ -829,7 +807,7 @@
160775 int fc_elsct_init(struct fc_lport *lp);
160776
160777
160778 -/*
160779 +/**
160780 * EXCHANGE MANAGER LAYER
160781 *****************************/
160782 /*
160783 @@ -938,7 +916,7 @@
160784 * If s_id is non-zero, reset only exchanges originating from that FID.
160785 * If d_id is non-zero, reset only exchanges sending to that FID.
160786 */
160787 -void fc_exch_mgr_reset(struct fc_lport *, u32 s_id, u32 d_id);
160788 +void fc_exch_mgr_reset(struct fc_exch_mgr *, u32 s_id, u32 d_id);
160789
160790 /*
160791 * Functions for fc_functions_template
160792 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/scsi/libfcoe.h linux-2.6.29-rc3.owrt/include/scsi/libfcoe.h
160793 --- linux-2.6.29.owrt/include/scsi/libfcoe.h 2009-05-10 22:04:38.000000000 +0200
160794 +++ linux-2.6.29-rc3.owrt/include/scsi/libfcoe.h 2009-05-10 23:48:29.000000000 +0200
160795 @@ -46,7 +46,6 @@
160796 struct net_device *phys_dev; /* device with ethtool_ops */
160797 struct packet_type fcoe_packet_type;
160798 struct sk_buff_head fcoe_pending_queue;
160799 - u8 fcoe_pending_queue_active;
160800
160801 u8 dest_addr[ETH_ALEN];
160802 u8 ctl_src_addr[ETH_ALEN];
160803 @@ -59,10 +58,16 @@
160804 u8 address_mode;
160805 };
160806
160807 +static inline struct fcoe_softc *fcoe_softc(
160808 + const struct fc_lport *lp)
160809 +{
160810 + return (struct fcoe_softc *)lport_priv(lp);
160811 +}
160812 +
160813 static inline struct net_device *fcoe_netdev(
160814 const struct fc_lport *lp)
160815 {
160816 - return ((struct fcoe_softc *)lport_priv(lp))->real_dev;
160817 + return fcoe_softc(lp)->real_dev;
160818 }
160819
160820 static inline struct fcoe_hdr *skb_fcoe_header(const struct sk_buff *skb)
160821 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/sound/hdsp.h linux-2.6.29-rc3.owrt/include/sound/hdsp.h
160822 --- linux-2.6.29.owrt/include/sound/hdsp.h 2009-05-10 22:04:38.000000000 +0200
160823 +++ linux-2.6.29-rc3.owrt/include/sound/hdsp.h 2009-05-10 23:48:29.000000000 +0200
160824 @@ -19,8 +19,6 @@
160825 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
160826 */
160827
160828 -#include <linux/types.h>
160829 -
160830 #define HDSP_MATRIX_MIXER_SIZE 2048
160831
160832 enum HDSP_IO_Type {
160833 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/video/aty128.h linux-2.6.29-rc3.owrt/include/video/aty128.h
160834 --- linux-2.6.29.owrt/include/video/aty128.h 2009-05-10 22:04:37.000000000 +0200
160835 +++ linux-2.6.29-rc3.owrt/include/video/aty128.h 2009-05-10 23:48:29.000000000 +0200
160836 @@ -21,9 +21,9 @@
160837 #define I2C_CNTL_1 0x0094
160838 #define PALETTE_INDEX 0x00b0
160839 #define PALETTE_DATA 0x00b4
160840 -#define CNFG_CNTL 0x00e0
160841 +#define CONFIG_CNTL 0x00e0
160842 #define GEN_RESET_CNTL 0x00f0
160843 -#define CNFG_MEMSIZE 0x00f8
160844 +#define CONFIG_MEMSIZE 0x00f8
160845 #define MEM_CNTL 0x0140
160846 #define MEM_POWER_MISC 0x015c
160847 #define AGP_BASE 0x0170
160848 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/video/mach64.h linux-2.6.29-rc3.owrt/include/video/mach64.h
160849 --- linux-2.6.29.owrt/include/video/mach64.h 2009-05-10 22:04:37.000000000 +0200
160850 +++ linux-2.6.29-rc3.owrt/include/video/mach64.h 2009-05-10 23:48:29.000000000 +0200
160851 @@ -103,7 +103,7 @@
160852 #define CUR_HORZ_VERT_OFF 0x0070 /* Dword offset 0_1C */
160853 #define CUR2_HORZ_VERT_OFF 0x0070 /* Dword offset 0_1C */
160854
160855 -#define CNFG_PANEL_LG 0x0074 /* Dword offset 0_1D (LG) */
160856 +#define CONFIG_PANEL_LG 0x0074 /* Dword offset 0_1D (LG) */
160857
160858 /* General I/O Control */
160859 #define GP_IO 0x0078 /* Dword offset 0_1E */
160860 @@ -146,8 +146,8 @@
160861 #define CLOCK_SEL_CNTL 0x0090 /* Dword offset 0_24 */
160862
160863 /* Configuration */
160864 -#define CNFG_STAT1 0x0094 /* Dword offset 0_25 */
160865 -#define CNFG_STAT2 0x0098 /* Dword offset 0_26 */
160866 +#define CONFIG_STAT1 0x0094 /* Dword offset 0_25 */
160867 +#define CONFIG_STAT2 0x0098 /* Dword offset 0_26 */
160868
160869 /* Bus Control */
160870 #define BUS_CNTL 0x00A0 /* Dword offset 0_28 */
160871 @@ -190,9 +190,9 @@
160872 #define POWER_MANAGEMENT_LG 0x00D8 /* Dword offset 0_36 (LG) */
160873
160874 /* Configuration */
160875 -#define CNFG_CNTL 0x00DC /* Dword offset 0_37 (CT, ET, VT) */
160876 -#define CNFG_CHIP_ID 0x00E0 /* Dword offset 0_38 */
160877 -#define CNFG_STAT0 0x00E4 /* Dword offset 0_39 */
160878 +#define CONFIG_CNTL 0x00DC /* Dword offset 0_37 (CT, ET, VT) */
160879 +#define CONFIG_CHIP_ID 0x00E0 /* Dword offset 0_38 */
160880 +#define CONFIG_STAT0 0x00E4 /* Dword offset 0_39 */
160881
160882 /* Test and Debug */
160883 #define CRC_SIG 0x00E8 /* Dword offset 0_3A */
160884 @@ -851,17 +851,17 @@
160885 #define PLL_YCLK_CNTL 0x29
160886 #define PM_DYN_CLK_CNTL 0x2A
160887
160888 -/* CNFG_CNTL register constants */
160889 +/* CONFIG_CNTL register constants */
160890 #define APERTURE_4M_ENABLE 1
160891 #define APERTURE_8M_ENABLE 2
160892 #define VGA_APERTURE_ENABLE 4
160893
160894 -/* CNFG_STAT0 register constants (GX, CX) */
160895 +/* CONFIG_STAT0 register constants (GX, CX) */
160896 #define CFG_BUS_TYPE 0x00000007
160897 #define CFG_MEM_TYPE 0x00000038
160898 #define CFG_INIT_DAC_TYPE 0x00000e00
160899
160900 -/* CNFG_STAT0 register constants (CT, ET, VT) */
160901 +/* CONFIG_STAT0 register constants (CT, ET, VT) */
160902 #define CFG_MEM_TYPE_xT 0x00000007
160903
160904 #define ISA 0
160905 @@ -942,7 +942,7 @@
160906 #define PCI_ATI_VENDOR_ID 0x1002
160907
160908
160909 -/* CNFG_CHIP_ID register constants */
160910 +/* CONFIG_CHIP_ID register constants */
160911 #define CFG_CHIP_TYPE 0x0000FFFF
160912 #define CFG_CHIP_CLASS 0x00FF0000
160913 #define CFG_CHIP_REV 0xFF000000
160914 @@ -951,7 +951,7 @@
160915 #define CFG_CHIP_MINOR 0xC0000000
160916
160917
160918 -/* Chip IDs read from CNFG_CHIP_ID */
160919 +/* Chip IDs read from CONFIG_CHIP_ID */
160920
160921 /* mach64GX family */
160922 #define GX_CHIP_ID 0xD7 /* mach64GX (ATI888GX00) */
160923 @@ -1254,7 +1254,7 @@
160924 #define CRTC2_DISPLAY_DIS 0x00000400
160925
160926 /* LCD register indices */
160927 -#define CNFG_PANEL 0x00
160928 +#define CONFIG_PANEL 0x00
160929 #define LCD_GEN_CNTL 0x01
160930 #define DSTN_CONTROL 0x02
160931 #define HFB_PITCH_ADDR 0x03
160932 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/video/radeon.h linux-2.6.29-rc3.owrt/include/video/radeon.h
160933 --- linux-2.6.29.owrt/include/video/radeon.h 2009-05-10 22:04:37.000000000 +0200
160934 +++ linux-2.6.29-rc3.owrt/include/video/radeon.h 2009-05-10 23:48:29.000000000 +0200
160935 @@ -11,13 +11,13 @@
160936 #define HI_STAT 0x004C
160937 #define BUS_CNTL1 0x0034
160938 #define I2C_CNTL_1 0x0094
160939 -#define CNFG_CNTL 0x00E0
160940 -#define CNFG_MEMSIZE 0x00F8
160941 -#define CNFG_APER_0_BASE 0x0100
160942 -#define CNFG_APER_1_BASE 0x0104
160943 -#define CNFG_APER_SIZE 0x0108
160944 -#define CNFG_REG_1_BASE 0x010C
160945 -#define CNFG_REG_APER_SIZE 0x0110
160946 +#define CONFIG_CNTL 0x00E0
160947 +#define CONFIG_MEMSIZE 0x00F8
160948 +#define CONFIG_APER_0_BASE 0x0100
160949 +#define CONFIG_APER_1_BASE 0x0104
160950 +#define CONFIG_APER_SIZE 0x0108
160951 +#define CONFIG_REG_1_BASE 0x010C
160952 +#define CONFIG_REG_APER_SIZE 0x0110
160953 #define PAD_AGPINPUT_DELAY 0x0164
160954 #define PAD_CTLR_STRENGTH 0x0168
160955 #define PAD_CTLR_UPDATE 0x016C
160956 @@ -509,7 +509,7 @@
160957 /* CLOCK_CNTL_INDEX bit constants */
160958 #define PLL_WR_EN 0x00000080
160959
160960 -/* CNFG_CNTL bit constants */
160961 +/* CONFIG_CNTL bit constants */
160962 #define CFG_VGA_RAM_EN 0x00000100
160963 #define CFG_ATI_REV_ID_MASK (0xf << 16)
160964 #define CFG_ATI_REV_A11 (0 << 16)
160965 @@ -980,7 +980,7 @@
160966
160967 /* masks */
160968
160969 -#define CNFG_MEMSIZE_MASK 0x1f000000
160970 +#define CONFIG_MEMSIZE_MASK 0x1f000000
160971 #define MEM_CFG_TYPE 0x40000000
160972 #define DST_OFFSET_MASK 0x003fffff
160973 #define DST_PITCH_MASK 0x3fc00000
160974 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/video/sisfb.h linux-2.6.29-rc3.owrt/include/video/sisfb.h
160975 --- linux-2.6.29.owrt/include/video/sisfb.h 2009-05-10 22:04:37.000000000 +0200
160976 +++ linux-2.6.29-rc3.owrt/include/video/sisfb.h 2009-05-10 23:48:29.000000000 +0200
160977 @@ -21,8 +21,8 @@
160978 #ifndef _LINUX_SISFB_H_
160979 #define _LINUX_SISFB_H_
160980
160981 -#include <linux/types.h>
160982 #include <asm/ioctl.h>
160983 +#include <asm/types.h>
160984
160985 /**********************************************/
160986 /* PUBLIC */
160987 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/include/video/uvesafb.h linux-2.6.29-rc3.owrt/include/video/uvesafb.h
160988 --- linux-2.6.29.owrt/include/video/uvesafb.h 2009-05-10 22:04:37.000000000 +0200
160989 +++ linux-2.6.29-rc3.owrt/include/video/uvesafb.h 2009-05-10 23:48:29.000000000 +0200
160990 @@ -1,8 +1,6 @@
160991 #ifndef _UVESAFB_H
160992 #define _UVESAFB_H
160993
160994 -#include <linux/types.h>
160995 -
160996 struct v86_regs {
160997 __u32 ebx;
160998 __u32 ecx;
160999 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/init/do_mounts.c linux-2.6.29-rc3.owrt/init/do_mounts.c
161000 --- linux-2.6.29.owrt/init/do_mounts.c 2009-05-10 22:04:39.000000000 +0200
161001 +++ linux-2.6.29-rc3.owrt/init/do_mounts.c 2009-05-10 23:48:29.000000000 +0200
161002 @@ -370,14 +370,10 @@
161003 ssleep(root_delay);
161004 }
161005
161006 - /*
161007 - * wait for the known devices to complete their probing
161008 - *
161009 - * Note: this is a potential source of long boot delays.
161010 - * For example, it is not atypical to wait 5 seconds here
161011 - * for the touchpad of a laptop to initialize.
161012 - */
161013 - wait_for_device_probe();
161014 + /* wait for the known devices to complete their probing */
161015 + while (driver_probe_done() != 0)
161016 + msleep(100);
161017 + async_synchronize_full();
161018
161019 md_run_setup();
161020
161021 @@ -403,7 +399,6 @@
161022 while (driver_probe_done() != 0 ||
161023 (ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
161024 msleep(100);
161025 - async_synchronize_full();
161026 }
161027
161028 is_floppy = MAJOR(ROOT_DEV) == FLOPPY_MAJOR;
161029 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/init/do_mounts_md.c linux-2.6.29-rc3.owrt/init/do_mounts_md.c
161030 --- linux-2.6.29.owrt/init/do_mounts_md.c 2009-05-10 22:04:39.000000000 +0200
161031 +++ linux-2.6.29-rc3.owrt/init/do_mounts_md.c 2009-05-10 23:48:29.000000000 +0200
161032 @@ -281,9 +281,8 @@
161033 */
161034 printk(KERN_INFO "md: Waiting for all devices to be available before autodetect\n");
161035 printk(KERN_INFO "md: If you don't use raid, use raid=noautodetect\n");
161036 -
161037 - wait_for_device_probe();
161038 -
161039 + while (driver_probe_done() < 0)
161040 + msleep(100);
161041 fd = sys_open("/dev/md0", 0, 0);
161042 if (fd >= 0) {
161043 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);
161044 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/init/Kconfig linux-2.6.29-rc3.owrt/init/Kconfig
161045 --- linux-2.6.29.owrt/init/Kconfig 2009-05-10 22:04:39.000000000 +0200
161046 +++ linux-2.6.29-rc3.owrt/init/Kconfig 2009-05-10 23:48:29.000000000 +0200
161047 @@ -675,9 +675,6 @@
161048 config SYSCTL
161049 bool
161050
161051 -config ANON_INODES
161052 - bool
161053 -
161054 menuconfig EMBEDDED
161055 bool "Configure standard kernel features (for small systems)"
161056 help
161057 @@ -783,6 +780,18 @@
161058 This option allows to disable the internal PC-Speaker
161059 support, saving some memory.
161060
161061 +config COMPAT_BRK
161062 + bool "Disable heap randomization"
161063 + default y
161064 + help
161065 + Randomizing heap placement makes heap exploits harder, but it
161066 + also breaks ancient binaries (including anything libc5 based).
161067 + This option changes the bootup default to heap randomization
161068 + disabled, and can be overriden runtime by setting
161069 + /proc/sys/kernel/randomize_va_space to 2.
161070 +
161071 + On non-ancient distros (post-2000 ones) N is usually a safe choice.
161072 +
161073 config BASE_FULL
161074 default y
161075 bool "Enable full-sized data structures for core" if EMBEDDED
161076 @@ -800,6 +809,9 @@
161077 support for "fast userspace mutexes". The resulting kernel may not
161078 run glibc-based applications correctly.
161079
161080 +config ANON_INODES
161081 + bool
161082 +
161083 config EPOLL
161084 bool "Enable eventpoll support" if EMBEDDED
161085 default y
161086 @@ -885,18 +897,6 @@
161087 SLUB sysfs support. /sys/slab will not exist and there will be
161088 no support for cache validation etc.
161089
161090 -config COMPAT_BRK
161091 - bool "Disable heap randomization"
161092 - default y
161093 - help
161094 - Randomizing heap placement makes heap exploits harder, but it
161095 - also breaks ancient binaries (including anything libc5 based).
161096 - This option changes the bootup default to heap randomization
161097 - disabled, and can be overriden runtime by setting
161098 - /proc/sys/kernel/randomize_va_space to 2.
161099 -
161100 - On non-ancient distros (post-2000 ones) N is usually a safe choice.
161101 -
161102 choice
161103 prompt "Choose SLAB allocator"
161104 default SLUB
161105 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/init/main.c linux-2.6.29-rc3.owrt/init/main.c
161106 --- linux-2.6.29.owrt/init/main.c 2009-05-10 22:04:39.000000000 +0200
161107 +++ linux-2.6.29-rc3.owrt/init/main.c 2009-05-10 23:48:29.000000000 +0200
161108 @@ -97,7 +97,7 @@
161109 extern void tc_init(void);
161110 #endif
161111
161112 -enum system_states system_state __read_mostly;
161113 +enum system_states system_state;
161114 EXPORT_SYMBOL(system_state);
161115
161116 /*
161117 @@ -463,7 +463,6 @@
161118 * at least once to get things moving:
161119 */
161120 init_idle_bootup_task(current);
161121 - rcu_scheduler_starting();
161122 preempt_enable_no_resched();
161123 schedule();
161124 preempt_disable();
161125 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/ipc/shm.c linux-2.6.29-rc3.owrt/ipc/shm.c
161126 --- linux-2.6.29.owrt/ipc/shm.c 2009-05-10 22:04:39.000000000 +0200
161127 +++ linux-2.6.29-rc3.owrt/ipc/shm.c 2009-05-10 23:48:29.000000000 +0200
161128 @@ -340,7 +340,6 @@
161129 struct file * file;
161130 char name[13];
161131 int id;
161132 - int acctflag = 0;
161133
161134 if (size < SHMMIN || size > ns->shm_ctlmax)
161135 return -EINVAL;
161136 @@ -365,19 +364,18 @@
161137
161138 sprintf (name, "SYSV%08x", key);
161139 if (shmflg & SHM_HUGETLB) {
161140 - /* hugetlb_file_setup applies strict accounting */
161141 - if (shmflg & SHM_NORESERVE)
161142 - acctflag = VM_NORESERVE;
161143 - file = hugetlb_file_setup(name, size, acctflag);
161144 + /* hugetlb_file_setup takes care of mlock user accounting */
161145 + file = hugetlb_file_setup(name, size);
161146 shp->mlock_user = current_user();
161147 } else {
161148 + int acctflag = VM_ACCOUNT;
161149 /*
161150 * Do not allow no accounting for OVERCOMMIT_NEVER, even
161151 * if it's asked for.
161152 */
161153 if ((shmflg & SHM_NORESERVE) &&
161154 sysctl_overcommit_memory != OVERCOMMIT_NEVER)
161155 - acctflag = VM_NORESERVE;
161156 + acctflag = 0;
161157 file = shmem_file_setup(name, size, acctflag);
161158 }
161159 error = PTR_ERR(file);
161160 @@ -567,15 +565,11 @@
161161 struct hstate *h = hstate_file(shp->shm_file);
161162 *rss += pages_per_huge_page(h) * mapping->nrpages;
161163 } else {
161164 -#ifdef CONFIG_SHMEM
161165 struct shmem_inode_info *info = SHMEM_I(inode);
161166 spin_lock(&info->lock);
161167 *rss += inode->i_mapping->nrpages;
161168 *swp += info->swapped;
161169 spin_unlock(&info->lock);
161170 -#else
161171 - *rss += inode->i_mapping->nrpages;
161172 -#endif
161173 }
161174
161175 total++;
161176 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/async.c linux-2.6.29-rc3.owrt/kernel/async.c
161177 --- linux-2.6.29.owrt/kernel/async.c 2009-05-10 22:04:41.000000000 +0200
161178 +++ linux-2.6.29-rc3.owrt/kernel/async.c 2009-05-10 23:48:29.000000000 +0200
161179 @@ -54,7 +54,6 @@
161180 #include <linux/sched.h>
161181 #include <linux/init.h>
161182 #include <linux/kthread.h>
161183 -#include <linux/delay.h>
161184 #include <asm/atomic.h>
161185
161186 static async_cookie_t next_cookie = 1;
161187 @@ -133,23 +132,21 @@
161188 entry = list_first_entry(&async_pending, struct async_entry, list);
161189
161190 /* 2) move it to the running queue */
161191 - list_move_tail(&entry->list, entry->running);
161192 + list_del(&entry->list);
161193 + list_add_tail(&entry->list, &async_running);
161194 spin_unlock_irqrestore(&async_lock, flags);
161195
161196 /* 3) run it (and print duration)*/
161197 if (initcall_debug && system_state == SYSTEM_BOOTING) {
161198 - printk("calling %lli_%pF @ %i\n", (long long)entry->cookie,
161199 - entry->func, task_pid_nr(current));
161200 + printk("calling %lli_%pF @ %i\n", entry->cookie, entry->func, task_pid_nr(current));
161201 calltime = ktime_get();
161202 }
161203 entry->func(entry->data, entry->cookie);
161204 if (initcall_debug && system_state == SYSTEM_BOOTING) {
161205 rettime = ktime_get();
161206 delta = ktime_sub(rettime, calltime);
161207 - printk("initcall %lli_%pF returned 0 after %lld usecs\n",
161208 - (long long)entry->cookie,
161209 - entry->func,
161210 - (long long)ktime_to_ns(delta) >> 10);
161211 + printk("initcall %lli_%pF returned 0 after %lld usecs\n", entry->cookie,
161212 + entry->func, ktime_to_ns(delta) >> 10);
161213 }
161214
161215 /* 4) remove it from the running queue */
161216 @@ -208,44 +205,18 @@
161217 return newcookie;
161218 }
161219
161220 -/**
161221 - * async_schedule - schedule a function for asynchronous execution
161222 - * @ptr: function to execute asynchronously
161223 - * @data: data pointer to pass to the function
161224 - *
161225 - * Returns an async_cookie_t that may be used for checkpointing later.
161226 - * Note: This function may be called from atomic or non-atomic contexts.
161227 - */
161228 async_cookie_t async_schedule(async_func_ptr *ptr, void *data)
161229 {
161230 - return __async_schedule(ptr, data, &async_running);
161231 + return __async_schedule(ptr, data, &async_pending);
161232 }
161233 EXPORT_SYMBOL_GPL(async_schedule);
161234
161235 -/**
161236 - * async_schedule_domain - schedule a function for asynchronous execution within a certain domain
161237 - * @ptr: function to execute asynchronously
161238 - * @data: data pointer to pass to the function
161239 - * @running: running list for the domain
161240 - *
161241 - * Returns an async_cookie_t that may be used for checkpointing later.
161242 - * @running may be used in the async_synchronize_*_domain() functions
161243 - * to wait within a certain synchronization domain rather than globally.
161244 - * A synchronization domain is specified via the running queue @running to use.
161245 - * Note: This function may be called from atomic or non-atomic contexts.
161246 - */
161247 -async_cookie_t async_schedule_domain(async_func_ptr *ptr, void *data,
161248 - struct list_head *running)
161249 +async_cookie_t async_schedule_special(async_func_ptr *ptr, void *data, struct list_head *running)
161250 {
161251 return __async_schedule(ptr, data, running);
161252 }
161253 -EXPORT_SYMBOL_GPL(async_schedule_domain);
161254 +EXPORT_SYMBOL_GPL(async_schedule_special);
161255
161256 -/**
161257 - * async_synchronize_full - synchronize all asynchronous function calls
161258 - *
161259 - * This function waits until all asynchronous function calls have been done.
161260 - */
161261 void async_synchronize_full(void)
161262 {
161263 do {
161264 @@ -254,30 +225,13 @@
161265 }
161266 EXPORT_SYMBOL_GPL(async_synchronize_full);
161267
161268 -/**
161269 - * async_synchronize_full_domain - synchronize all asynchronous function within a certain domain
161270 - * @list: running list to synchronize on
161271 - *
161272 - * This function waits until all asynchronous function calls for the
161273 - * synchronization domain specified by the running list @list have been done.
161274 - */
161275 -void async_synchronize_full_domain(struct list_head *list)
161276 +void async_synchronize_full_special(struct list_head *list)
161277 {
161278 - async_synchronize_cookie_domain(next_cookie, list);
161279 + async_synchronize_cookie_special(next_cookie, list);
161280 }
161281 -EXPORT_SYMBOL_GPL(async_synchronize_full_domain);
161282 +EXPORT_SYMBOL_GPL(async_synchronize_full_special);
161283
161284 -/**
161285 - * async_synchronize_cookie_domain - synchronize asynchronous function calls within a certain domain with cookie checkpointing
161286 - * @cookie: async_cookie_t to use as checkpoint
161287 - * @running: running list to synchronize on
161288 - *
161289 - * This function waits until all asynchronous function calls for the
161290 - * synchronization domain specified by the running list @list submitted
161291 - * prior to @cookie have been done.
161292 - */
161293 -void async_synchronize_cookie_domain(async_cookie_t cookie,
161294 - struct list_head *running)
161295 +void async_synchronize_cookie_special(async_cookie_t cookie, struct list_head *running)
161296 {
161297 ktime_t starttime, delta, endtime;
161298
161299 @@ -293,22 +247,14 @@
161300 delta = ktime_sub(endtime, starttime);
161301
161302 printk("async_continuing @ %i after %lli usec\n",
161303 - task_pid_nr(current),
161304 - (long long)ktime_to_ns(delta) >> 10);
161305 + task_pid_nr(current), ktime_to_ns(delta) >> 10);
161306 }
161307 }
161308 -EXPORT_SYMBOL_GPL(async_synchronize_cookie_domain);
161309 +EXPORT_SYMBOL_GPL(async_synchronize_cookie_special);
161310
161311 -/**
161312 - * async_synchronize_cookie - synchronize asynchronous function calls with cookie checkpointing
161313 - * @cookie: async_cookie_t to use as checkpoint
161314 - *
161315 - * This function waits until all asynchronous function calls prior to @cookie
161316 - * have been done.
161317 - */
161318 void async_synchronize_cookie(async_cookie_t cookie)
161319 {
161320 - async_synchronize_cookie_domain(cookie, &async_running);
161321 + async_synchronize_cookie_special(cookie, &async_running);
161322 }
161323 EXPORT_SYMBOL_GPL(async_synchronize_cookie);
161324
161325 @@ -369,11 +315,7 @@
161326 ec = atomic_read(&entry_count);
161327
161328 while (tc < ec && tc < MAX_THREADS) {
161329 - if (IS_ERR(kthread_run(async_thread, NULL, "async/%i",
161330 - tc))) {
161331 - msleep(100);
161332 - continue;
161333 - }
161334 + kthread_run(async_thread, NULL, "async/%i", tc);
161335 atomic_inc(&thread_count);
161336 tc++;
161337 }
161338 @@ -388,9 +330,7 @@
161339 static int __init async_init(void)
161340 {
161341 if (async_enabled)
161342 - if (IS_ERR(kthread_run(async_manager_thread, NULL,
161343 - "async/mgr")))
161344 - async_enabled = 0;
161345 + kthread_run(async_manager_thread, NULL, "async/mgr");
161346 return 0;
161347 }
161348
161349 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/cgroup.c linux-2.6.29-rc3.owrt/kernel/cgroup.c
161350 --- linux-2.6.29.owrt/kernel/cgroup.c 2009-05-10 22:04:41.000000000 +0200
161351 +++ linux-2.6.29-rc3.owrt/kernel/cgroup.c 2009-05-10 23:48:29.000000000 +0200
161352 @@ -1115,15 +1115,13 @@
161353 }
161354 write_unlock(&css_set_lock);
161355
161356 - if (!list_empty(&root->root_list)) {
161357 - list_del(&root->root_list);
161358 - root_count--;
161359 - }
161360 + list_del(&root->root_list);
161361 + root_count--;
161362
161363 mutex_unlock(&cgroup_mutex);
161364
161365 - kill_litter_super(sb);
161366 kfree(root);
161367 + kill_litter_super(sb);
161368 }
161369
161370 static struct file_system_type cgroup_fs_type = {
161371 @@ -2351,7 +2349,7 @@
161372 for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) {
161373 struct cgroup_subsys *ss = subsys[i];
161374 if (ss->root == root)
161375 - mutex_lock(&ss->hierarchy_mutex);
161376 + mutex_lock_nested(&ss->hierarchy_mutex, i);
161377 }
161378 }
161379
161380 @@ -2436,9 +2434,7 @@
161381
161382 err_remove:
161383
161384 - cgroup_lock_hierarchy(root);
161385 list_del(&cgrp->sibling);
161386 - cgroup_unlock_hierarchy(root);
161387 root->number_of_cgroups--;
161388
161389 err_destroy:
161390 @@ -2511,7 +2507,7 @@
161391 for_each_subsys(cgrp->root, ss) {
161392 struct cgroup_subsys_state *css = cgrp->subsys[ss->subsys_id];
161393 int refcnt;
161394 - while (1) {
161395 + do {
161396 /* We can only remove a CSS with a refcnt==1 */
161397 refcnt = atomic_read(&css->refcnt);
161398 if (refcnt > 1) {
161399 @@ -2525,10 +2521,7 @@
161400 * css_tryget() to spin until we set the
161401 * CSS_REMOVED bits or abort
161402 */
161403 - if (atomic_cmpxchg(&css->refcnt, refcnt, 0) == refcnt)
161404 - break;
161405 - cpu_relax();
161406 - }
161407 + } while (atomic_cmpxchg(&css->refcnt, refcnt, 0) != refcnt);
161408 }
161409 done:
161410 for_each_subsys(cgrp->root, ss) {
161411 @@ -2637,7 +2630,6 @@
161412 BUG_ON(!list_empty(&init_task.tasks));
161413
161414 mutex_init(&ss->hierarchy_mutex);
161415 - lockdep_set_class(&ss->hierarchy_mutex, &ss->subsys_key);
161416 ss->active = 1;
161417 }
161418
161419 @@ -2999,21 +2991,20 @@
161420 mutex_unlock(&cgroup_mutex);
161421 return 0;
161422 }
161423 + task_lock(tsk);
161424 + cg = tsk->cgroups;
161425 + parent = task_cgroup(tsk, subsys->subsys_id);
161426
161427 /* Pin the hierarchy */
161428 - if (!atomic_inc_not_zero(&root->sb->s_active)) {
161429 + if (!atomic_inc_not_zero(&parent->root->sb->s_active)) {
161430 /* We race with the final deactivate_super() */
161431 mutex_unlock(&cgroup_mutex);
161432 return 0;
161433 }
161434
161435 /* Keep the cgroup alive */
161436 - task_lock(tsk);
161437 - parent = task_cgroup(tsk, subsys->subsys_id);
161438 - cg = tsk->cgroups;
161439 get_css_set(cg);
161440 task_unlock(tsk);
161441 -
161442 mutex_unlock(&cgroup_mutex);
161443
161444 /* Now do the VFS work to create a cgroup */
161445 @@ -3052,7 +3043,7 @@
161446 mutex_unlock(&inode->i_mutex);
161447 put_css_set(cg);
161448
161449 - deactivate_super(root->sb);
161450 + deactivate_super(parent->root->sb);
161451 /* The cgroup is still accessible in the VFS, but
161452 * we're not going to try to rmdir() it at this
161453 * point. */
161454 @@ -3078,7 +3069,7 @@
161455 mutex_lock(&cgroup_mutex);
161456 put_css_set(cg);
161457 mutex_unlock(&cgroup_mutex);
161458 - deactivate_super(root->sb);
161459 + deactivate_super(parent->root->sb);
161460 return ret;
161461 }
161462
161463 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/cpuset.c linux-2.6.29-rc3.owrt/kernel/cpuset.c
161464 --- linux-2.6.29.owrt/kernel/cpuset.c 2009-05-10 22:04:41.000000000 +0200
161465 +++ linux-2.6.29-rc3.owrt/kernel/cpuset.c 2009-05-10 23:48:29.000000000 +0200
161466 @@ -61,14 +61,6 @@
161467 #include <linux/cgroup.h>
161468
161469 /*
161470 - * Workqueue for cpuset related tasks.
161471 - *
161472 - * Using kevent workqueue may cause deadlock when memory_migrate
161473 - * is set. So we create a separate workqueue thread for cpuset.
161474 - */
161475 -static struct workqueue_struct *cpuset_wq;
161476 -
161477 -/*
161478 * Tracks how many cpusets are currently defined in system.
161479 * When there is only one cpuset (the root cpuset) we can
161480 * short circuit some hooks.
161481 @@ -839,7 +831,7 @@
161482 */
161483 static void async_rebuild_sched_domains(void)
161484 {
161485 - queue_work(cpuset_wq, &rebuild_sched_domains_work);
161486 + schedule_work(&rebuild_sched_domains_work);
161487 }
161488
161489 /*
161490 @@ -2119,9 +2111,6 @@
161491
161492 hotcpu_notifier(cpuset_track_online_cpus, 0);
161493 hotplug_memory_notifier(cpuset_track_online_nodes, 10);
161494 -
161495 - cpuset_wq = create_singlethread_workqueue("cpuset");
161496 - BUG_ON(!cpuset_wq);
161497 }
161498
161499 /**
161500 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/exit.c linux-2.6.29-rc3.owrt/kernel/exit.c
161501 --- linux-2.6.29.owrt/kernel/exit.c 2009-05-10 22:04:41.000000000 +0200
161502 +++ linux-2.6.29-rc3.owrt/kernel/exit.c 2009-05-10 23:48:29.000000000 +0200
161503 @@ -118,8 +118,6 @@
161504 * We won't ever get here for the group leader, since it
161505 * will have been the last reference on the signal_struct.
161506 */
161507 - sig->utime = cputime_add(sig->utime, task_utime(tsk));
161508 - sig->stime = cputime_add(sig->stime, task_stime(tsk));
161509 sig->gtime = cputime_add(sig->gtime, task_gtime(tsk));
161510 sig->min_flt += tsk->min_flt;
161511 sig->maj_flt += tsk->maj_flt;
161512 @@ -128,7 +126,6 @@
161513 sig->inblock += task_io_get_inblock(tsk);
161514 sig->oublock += task_io_get_oublock(tsk);
161515 task_io_accounting_add(&sig->ioac, &tsk->ioac);
161516 - sig->sum_sched_runtime += tsk->se.sum_exec_runtime;
161517 sig = NULL; /* Marker for below. */
161518 }
161519
161520 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/fork.c linux-2.6.29-rc3.owrt/kernel/fork.c
161521 --- linux-2.6.29.owrt/kernel/fork.c 2009-05-10 22:04:41.000000000 +0200
161522 +++ linux-2.6.29-rc3.owrt/kernel/fork.c 2009-05-10 23:48:29.000000000 +0200
161523 @@ -852,14 +852,13 @@
161524 sig->tty_old_pgrp = NULL;
161525 sig->tty = NULL;
161526
161527 - sig->utime = sig->stime = sig->cutime = sig->cstime = cputime_zero;
161528 + sig->cutime = sig->cstime = cputime_zero;
161529 sig->gtime = cputime_zero;
161530 sig->cgtime = cputime_zero;
161531 sig->nvcsw = sig->nivcsw = sig->cnvcsw = sig->cnivcsw = 0;
161532 sig->min_flt = sig->maj_flt = sig->cmin_flt = sig->cmaj_flt = 0;
161533 sig->inblock = sig->oublock = sig->cinblock = sig->coublock = 0;
161534 task_io_accounting_init(&sig->ioac);
161535 - sig->sum_sched_runtime = 0;
161536 taskstats_tgid_init(sig);
161537
161538 task_lock(current->group_leader);
161539 @@ -1007,7 +1006,6 @@
161540 * triggers too late. This doesn't hurt, the check is only there
161541 * to stop root fork bombs.
161542 */
161543 - retval = -EAGAIN;
161544 if (nr_threads >= max_threads)
161545 goto bad_fork_cleanup_count;
161546
161547 @@ -1096,7 +1094,7 @@
161548 #ifdef CONFIG_DEBUG_MUTEXES
161549 p->blocked_on = NULL; /* not blocked yet */
161550 #endif
161551 - if (unlikely(current->ptrace))
161552 + if (unlikely(ptrace_reparented(current)))
161553 ptrace_fork(p, clone_flags);
161554
161555 /* Perform scheduler related setup. Assign this task to a CPU. */
161556 @@ -1180,6 +1178,10 @@
161557 #endif
161558 clear_all_latency_tracing(p);
161559
161560 + /* Our parent execution domain becomes current domain
161561 + These must match for thread signalling to apply */
161562 + p->parent_exec_id = p->self_exec_id;
161563 +
161564 /* ok, now we should be set up.. */
161565 p->exit_signal = (clone_flags & CLONE_THREAD) ? -1 : (clone_flags & CSIGNAL);
161566 p->pdeath_signal = 0;
161567 @@ -1217,13 +1219,10 @@
161568 set_task_cpu(p, smp_processor_id());
161569
161570 /* CLONE_PARENT re-uses the old parent */
161571 - if (clone_flags & (CLONE_PARENT|CLONE_THREAD)) {
161572 + if (clone_flags & (CLONE_PARENT|CLONE_THREAD))
161573 p->real_parent = current->real_parent;
161574 - p->parent_exec_id = current->parent_exec_id;
161575 - } else {
161576 + else
161577 p->real_parent = current;
161578 - p->parent_exec_id = current->self_exec_id;
161579 - }
161580
161581 spin_lock(&current->sighand->siglock);
161582
161583 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/futex.c linux-2.6.29-rc3.owrt/kernel/futex.c
161584 --- linux-2.6.29.owrt/kernel/futex.c 2009-05-10 22:04:41.000000000 +0200
161585 +++ linux-2.6.29-rc3.owrt/kernel/futex.c 2009-05-10 23:48:29.000000000 +0200
161586 @@ -1165,7 +1165,6 @@
161587 u32 val, ktime_t *abs_time, u32 bitset, int clockrt)
161588 {
161589 struct task_struct *curr = current;
161590 - struct restart_block *restart;
161591 DECLARE_WAITQUEUE(wait, curr);
161592 struct futex_hash_bucket *hb;
161593 struct futex_q q;
161594 @@ -1217,13 +1216,11 @@
161595
161596 if (!ret)
161597 goto retry;
161598 - goto out;
161599 + return ret;
161600 }
161601 ret = -EWOULDBLOCK;
161602 - if (unlikely(uval != val)) {
161603 - queue_unlock(&q, hb);
161604 - goto out_put_key;
161605 - }
161606 + if (uval != val)
161607 + goto out_unlock_put_key;
161608
161609 /* Only actually queue if *uaddr contained val. */
161610 queue_me(&q, hb);
161611 @@ -1287,38 +1284,38 @@
161612 */
161613
161614 /* If we were woken (and unqueued), we succeeded, whatever. */
161615 - ret = 0;
161616 if (!unqueue_me(&q))
161617 - goto out_put_key;
161618 - ret = -ETIMEDOUT;
161619 + return 0;
161620 if (rem)
161621 - goto out_put_key;
161622 + return -ETIMEDOUT;
161623
161624 /*
161625 * We expect signal_pending(current), but another thread may
161626 * have handled it for us already.
161627 */
161628 - ret = -ERESTARTSYS;
161629 if (!abs_time)
161630 - goto out_put_key;
161631 -
161632 - restart = &current_thread_info()->restart_block;
161633 - restart->fn = futex_wait_restart;
161634 - restart->futex.uaddr = (u32 *)uaddr;
161635 - restart->futex.val = val;
161636 - restart->futex.time = abs_time->tv64;
161637 - restart->futex.bitset = bitset;
161638 - restart->futex.flags = 0;
161639 -
161640 - if (fshared)
161641 - restart->futex.flags |= FLAGS_SHARED;
161642 - if (clockrt)
161643 - restart->futex.flags |= FLAGS_CLOCKRT;
161644 -
161645 - ret = -ERESTART_RESTARTBLOCK;
161646 + return -ERESTARTSYS;
161647 + else {
161648 + struct restart_block *restart;
161649 + restart = &current_thread_info()->restart_block;
161650 + restart->fn = futex_wait_restart;
161651 + restart->futex.uaddr = (u32 *)uaddr;
161652 + restart->futex.val = val;
161653 + restart->futex.time = abs_time->tv64;
161654 + restart->futex.bitset = bitset;
161655 + restart->futex.flags = 0;
161656 +
161657 + if (fshared)
161658 + restart->futex.flags |= FLAGS_SHARED;
161659 + if (clockrt)
161660 + restart->futex.flags |= FLAGS_CLOCKRT;
161661 + return -ERESTART_RESTARTBLOCK;
161662 + }
161663
161664 -out_put_key:
161665 +out_unlock_put_key:
161666 + queue_unlock(&q, hb);
161667 put_futex_key(fshared, &q.key);
161668 +
161669 out:
161670 return ret;
161671 }
161672 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/hrtimer.c linux-2.6.29-rc3.owrt/kernel/hrtimer.c
161673 --- linux-2.6.29.owrt/kernel/hrtimer.c 2009-05-10 22:04:41.000000000 +0200
161674 +++ linux-2.6.29-rc3.owrt/kernel/hrtimer.c 2009-05-10 23:48:29.000000000 +0200
161675 @@ -501,13 +501,6 @@
161676 continue;
161677 timer = rb_entry(base->first, struct hrtimer, node);
161678 expires = ktime_sub(hrtimer_get_expires(timer), base->offset);
161679 - /*
161680 - * clock_was_set() has changed base->offset so the
161681 - * result might be negative. Fix it up to prevent a
161682 - * false positive in clockevents_program_event()
161683 - */
161684 - if (expires.tv64 < 0)
161685 - expires.tv64 = 0;
161686 if (expires.tv64 < cpu_base->expires_next.tv64)
161687 cpu_base->expires_next = expires;
161688 }
161689 @@ -1165,29 +1158,6 @@
161690
161691 #ifdef CONFIG_HIGH_RES_TIMERS
161692
161693 -static int force_clock_reprogram;
161694 -
161695 -/*
161696 - * After 5 iteration's attempts, we consider that hrtimer_interrupt()
161697 - * is hanging, which could happen with something that slows the interrupt
161698 - * such as the tracing. Then we force the clock reprogramming for each future
161699 - * hrtimer interrupts to avoid infinite loops and use the min_delta_ns
161700 - * threshold that we will overwrite.
161701 - * The next tick event will be scheduled to 3 times we currently spend on
161702 - * hrtimer_interrupt(). This gives a good compromise, the cpus will spend
161703 - * 1/4 of their time to process the hrtimer interrupts. This is enough to
161704 - * let it running without serious starvation.
161705 - */
161706 -
161707 -static inline void
161708 -hrtimer_interrupt_hanging(struct clock_event_device *dev,
161709 - ktime_t try_time)
161710 -{
161711 - force_clock_reprogram = 1;
161712 - dev->min_delta_ns = (unsigned long)try_time.tv64 * 3;
161713 - printk(KERN_WARNING "hrtimer: interrupt too slow, "
161714 - "forcing clock min delta to %lu ns\n", dev->min_delta_ns);
161715 -}
161716 /*
161717 * High resolution timer interrupt
161718 * Called with interrupts disabled
161719 @@ -1197,7 +1167,6 @@
161720 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);
161721 struct hrtimer_clock_base *base;
161722 ktime_t expires_next, now;
161723 - int nr_retries = 0;
161724 int i;
161725
161726 BUG_ON(!cpu_base->hres_active);
161727 @@ -1205,10 +1174,6 @@
161728 dev->next_event.tv64 = KTIME_MAX;
161729
161730 retry:
161731 - /* 5 retries is enough to notice a hang */
161732 - if (!(++nr_retries % 5))
161733 - hrtimer_interrupt_hanging(dev, ktime_sub(ktime_get(), now));
161734 -
161735 now = ktime_get();
161736
161737 expires_next.tv64 = KTIME_MAX;
161738 @@ -1261,7 +1226,7 @@
161739
161740 /* Reprogramming necessary ? */
161741 if (expires_next.tv64 != KTIME_MAX) {
161742 - if (tick_program_event(expires_next, force_clock_reprogram))
161743 + if (tick_program_event(expires_next, 0))
161744 goto retry;
161745 }
161746 }
161747 @@ -1615,10 +1580,6 @@
161748 break;
161749
161750 #ifdef CONFIG_HOTPLUG_CPU
161751 - case CPU_DYING:
161752 - case CPU_DYING_FROZEN:
161753 - clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DYING, &scpu);
161754 - break;
161755 case CPU_DEAD:
161756 case CPU_DEAD_FROZEN:
161757 {
161758 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/irq/chip.c linux-2.6.29-rc3.owrt/kernel/irq/chip.c
161759 --- linux-2.6.29.owrt/kernel/irq/chip.c 2009-05-10 22:04:41.000000000 +0200
161760 +++ linux-2.6.29-rc3.owrt/kernel/irq/chip.c 2009-05-10 23:48:29.000000000 +0200
161761 @@ -383,7 +383,6 @@
161762 out_unlock:
161763 spin_unlock(&desc->lock);
161764 }
161765 -EXPORT_SYMBOL_GPL(handle_level_irq);
161766
161767 /**
161768 * handle_fasteoi_irq - irq handler for transparent controllers
161769 @@ -594,7 +593,6 @@
161770 }
161771 spin_unlock_irqrestore(&desc->lock, flags);
161772 }
161773 -EXPORT_SYMBOL_GPL(__set_irq_handler);
161774
161775 void
161776 set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
161777 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/irq/numa_migrate.c linux-2.6.29-rc3.owrt/kernel/irq/numa_migrate.c
161778 --- linux-2.6.29.owrt/kernel/irq/numa_migrate.c 2009-05-10 22:04:41.000000000 +0200
161779 +++ linux-2.6.29-rc3.owrt/kernel/irq/numa_migrate.c 2009-05-10 23:48:29.000000000 +0200
161780 @@ -71,7 +71,7 @@
161781 desc = irq_desc_ptrs[irq];
161782
161783 if (desc && old_desc != desc)
161784 - goto out_unlock;
161785 + goto out_unlock;
161786
161787 node = cpu_to_node(cpu);
161788 desc = kzalloc_node(sizeof(*desc), GFP_ATOMIC, node);
161789 @@ -84,15 +84,10 @@
161790 init_copy_one_irq_desc(irq, old_desc, desc, cpu);
161791
161792 irq_desc_ptrs[irq] = desc;
161793 - spin_unlock_irqrestore(&sparse_irq_lock, flags);
161794
161795 /* free the old one */
161796 free_one_irq_desc(old_desc, desc);
161797 - spin_unlock(&old_desc->lock);
161798 kfree(old_desc);
161799 - spin_lock(&desc->lock);
161800 -
161801 - return desc;
161802
161803 out_unlock:
161804 spin_unlock_irqrestore(&sparse_irq_lock, flags);
161805 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/itimer.c linux-2.6.29-rc3.owrt/kernel/itimer.c
161806 --- linux-2.6.29.owrt/kernel/itimer.c 2009-05-10 22:04:41.000000000 +0200
161807 +++ linux-2.6.29-rc3.owrt/kernel/itimer.c 2009-05-10 23:48:29.000000000 +0200
161808 @@ -62,7 +62,7 @@
161809 struct task_cputime cputime;
161810 cputime_t utime;
161811
161812 - thread_group_cputimer(tsk, &cputime);
161813 + thread_group_cputime(tsk, &cputime);
161814 utime = cputime.utime;
161815 if (cputime_le(cval, utime)) { /* about to fire */
161816 cval = jiffies_to_cputime(1);
161817 @@ -82,7 +82,7 @@
161818 struct task_cputime times;
161819 cputime_t ptime;
161820
161821 - thread_group_cputimer(tsk, &times);
161822 + thread_group_cputime(tsk, &times);
161823 ptime = cputime_add(times.utime, times.stime);
161824 if (cputime_le(cval, ptime)) { /* about to fire */
161825 cval = jiffies_to_cputime(1);
161826 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/kexec.c linux-2.6.29-rc3.owrt/kernel/kexec.c
161827 --- linux-2.6.29.owrt/kernel/kexec.c 2009-05-10 22:04:41.000000000 +0200
161828 +++ linux-2.6.29-rc3.owrt/kernel/kexec.c 2009-05-10 23:48:29.000000000 +0200
161829 @@ -1465,11 +1465,6 @@
161830 error = device_power_down(PMSG_FREEZE);
161831 if (error)
161832 goto Enable_irqs;
161833 -
161834 - /* Suspend system devices */
161835 - error = sysdev_suspend(PMSG_FREEZE);
161836 - if (error)
161837 - goto Power_up_devices;
161838 } else
161839 #endif
161840 {
161841 @@ -1482,8 +1477,6 @@
161842
161843 #ifdef CONFIG_KEXEC_JUMP
161844 if (kexec_image->preserve_context) {
161845 - sysdev_resume();
161846 - Power_up_devices:
161847 device_power_up(PMSG_RESTORE);
161848 Enable_irqs:
161849 local_irq_enable();
161850 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/Makefile linux-2.6.29-rc3.owrt/kernel/Makefile
161851 --- linux-2.6.29.owrt/kernel/Makefile 2009-05-10 22:04:41.000000000 +0200
161852 +++ linux-2.6.29-rc3.owrt/kernel/Makefile 2009-05-10 23:48:29.000000000 +0200
161853 @@ -51,7 +51,6 @@
161854 obj-$(CONFIG_MODULES) += module.o
161855 obj-$(CONFIG_KALLSYMS) += kallsyms.o
161856 obj-$(CONFIG_PM) += power/
161857 -obj-$(CONFIG_FREEZER) += power/
161858 obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
161859 obj-$(CONFIG_KEXEC) += kexec.o
161860 obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o
161861 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/module.c linux-2.6.29-rc3.owrt/kernel/module.c
161862 --- linux-2.6.29.owrt/kernel/module.c 2009-05-10 22:04:41.000000000 +0200
161863 +++ linux-2.6.29-rc3.owrt/kernel/module.c 2009-05-10 23:48:29.000000000 +0200
161864 @@ -573,13 +573,13 @@
161865 /* Init the unload section of the module. */
161866 static void module_unload_init(struct module *mod)
161867 {
161868 - int cpu;
161869 + unsigned int i;
161870
161871 INIT_LIST_HEAD(&mod->modules_which_use_me);
161872 - for_each_possible_cpu(cpu)
161873 - local_set(__module_ref_addr(mod, cpu), 0);
161874 + for (i = 0; i < NR_CPUS; i++)
161875 + local_set(&mod->ref[i].count, 0);
161876 /* Hold reference count during initialization. */
161877 - local_set(__module_ref_addr(mod, raw_smp_processor_id()), 1);
161878 + local_set(&mod->ref[raw_smp_processor_id()].count, 1);
161879 /* Backwards compatibility macros put refcount during init. */
161880 mod->waiter = current;
161881 }
161882 @@ -717,11 +717,10 @@
161883
161884 unsigned int module_refcount(struct module *mod)
161885 {
161886 - unsigned int total = 0;
161887 - int cpu;
161888 + unsigned int i, total = 0;
161889
161890 - for_each_possible_cpu(cpu)
161891 - total += local_read(__module_ref_addr(mod, cpu));
161892 + for (i = 0; i < NR_CPUS; i++)
161893 + total += local_read(&mod->ref[i].count);
161894 return total;
161895 }
161896 EXPORT_SYMBOL(module_refcount);
161897 @@ -895,7 +894,7 @@
161898 {
161899 if (module) {
161900 unsigned int cpu = get_cpu();
161901 - local_dec(__module_ref_addr(module, cpu));
161902 + local_dec(&module->ref[cpu].count);
161903 /* Maybe they're waiting for us to drop reference? */
161904 if (unlikely(!module_is_live(module)))
161905 wake_up_process(module->waiter);
161906 @@ -1465,10 +1464,7 @@
161907 kfree(mod->args);
161908 if (mod->percpu)
161909 percpu_modfree(mod->percpu);
161910 -#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)
161911 - if (mod->refptr)
161912 - percpu_modfree(mod->refptr);
161913 -#endif
161914 +
161915 /* Free lock-classes: */
161916 lockdep_free_key_range(mod->module_core, mod->core_size);
161917
161918 @@ -2074,14 +2070,6 @@
161919 /* Module has been moved. */
161920 mod = (void *)sechdrs[modindex].sh_addr;
161921
161922 -#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)
161923 - mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t),
161924 - mod->name);
161925 - if (!mod->refptr) {
161926 - err = -ENOMEM;
161927 - goto free_init;
161928 - }
161929 -#endif
161930 /* Now we've moved module, initialize linked lists, etc. */
161931 module_unload_init(mod);
161932
161933 @@ -2288,14 +2276,9 @@
161934 ftrace_release(mod->module_core, mod->core_size);
161935 free_unload:
161936 module_unload_free(mod);
161937 - free_init:
161938 -#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)
161939 - percpu_modfree(mod->refptr);
161940 -#endif
161941 module_free(mod, mod->module_init);
161942 free_core:
161943 module_free(mod, mod->module_core);
161944 - /* mod will be freed with core. Don't access it beyond this line! */
161945 free_percpu:
161946 if (percpu)
161947 percpu_modfree(percpu);
161948 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/posix-cpu-timers.c linux-2.6.29-rc3.owrt/kernel/posix-cpu-timers.c
161949 --- linux-2.6.29.owrt/kernel/posix-cpu-timers.c 2009-05-10 22:04:41.000000000 +0200
161950 +++ linux-2.6.29-rc3.owrt/kernel/posix-cpu-timers.c 2009-05-10 23:48:29.000000000 +0200
161951 @@ -230,71 +230,6 @@
161952 return 0;
161953 }
161954
161955 -void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times)
161956 -{
161957 - struct sighand_struct *sighand;
161958 - struct signal_struct *sig;
161959 - struct task_struct *t;
161960 -
161961 - *times = INIT_CPUTIME;
161962 -
161963 - rcu_read_lock();
161964 - sighand = rcu_dereference(tsk->sighand);
161965 - if (!sighand)
161966 - goto out;
161967 -
161968 - sig = tsk->signal;
161969 -
161970 - t = tsk;
161971 - do {
161972 - times->utime = cputime_add(times->utime, t->utime);
161973 - times->stime = cputime_add(times->stime, t->stime);
161974 - times->sum_exec_runtime += t->se.sum_exec_runtime;
161975 -
161976 - t = next_thread(t);
161977 - } while (t != tsk);
161978 -
161979 - times->utime = cputime_add(times->utime, sig->utime);
161980 - times->stime = cputime_add(times->stime, sig->stime);
161981 - times->sum_exec_runtime += sig->sum_sched_runtime;
161982 -out:
161983 - rcu_read_unlock();
161984 -}
161985 -
161986 -static void update_gt_cputime(struct task_cputime *a, struct task_cputime *b)
161987 -{
161988 - if (cputime_gt(b->utime, a->utime))
161989 - a->utime = b->utime;
161990 -
161991 - if (cputime_gt(b->stime, a->stime))
161992 - a->stime = b->stime;
161993 -
161994 - if (b->sum_exec_runtime > a->sum_exec_runtime)
161995 - a->sum_exec_runtime = b->sum_exec_runtime;
161996 -}
161997 -
161998 -void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times)
161999 -{
162000 - struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;
162001 - struct task_cputime sum;
162002 - unsigned long flags;
162003 -
162004 - spin_lock_irqsave(&cputimer->lock, flags);
162005 - if (!cputimer->running) {
162006 - cputimer->running = 1;
162007 - /*
162008 - * The POSIX timer interface allows for absolute time expiry
162009 - * values through the TIMER_ABSTIME flag, therefore we have
162010 - * to synchronize the timer to the clock every time we start
162011 - * it.
162012 - */
162013 - thread_group_cputime(tsk, &sum);
162014 - update_gt_cputime(&cputimer->cputime, &sum);
162015 - }
162016 - *times = cputimer->cputime;
162017 - spin_unlock_irqrestore(&cputimer->lock, flags);
162018 -}
162019 -
162020 /*
162021 * Sample a process (thread group) clock for the given group_leader task.
162022 * Must be called with tasklist_lock held for reading.
162023 @@ -522,7 +457,7 @@
162024 {
162025 struct task_cputime cputime;
162026
162027 - thread_group_cputimer(tsk, &cputime);
162028 + thread_group_cputime(tsk, &cputime);
162029 cleanup_timers(tsk->signal->cpu_timers,
162030 cputime.utime, cputime.stime, cputime.sum_exec_runtime);
162031 }
162032 @@ -681,33 +616,6 @@
162033 }
162034
162035 /*
162036 - * Sample a process (thread group) timer for the given group_leader task.
162037 - * Must be called with tasklist_lock held for reading.
162038 - */
162039 -static int cpu_timer_sample_group(const clockid_t which_clock,
162040 - struct task_struct *p,
162041 - union cpu_time_count *cpu)
162042 -{
162043 - struct task_cputime cputime;
162044 -
162045 - thread_group_cputimer(p, &cputime);
162046 - switch (CPUCLOCK_WHICH(which_clock)) {
162047 - default:
162048 - return -EINVAL;
162049 - case CPUCLOCK_PROF:
162050 - cpu->cpu = cputime_add(cputime.utime, cputime.stime);
162051 - break;
162052 - case CPUCLOCK_VIRT:
162053 - cpu->cpu = cputime.utime;
162054 - break;
162055 - case CPUCLOCK_SCHED:
162056 - cpu->sched = cputime.sum_exec_runtime + task_delta_exec(p);
162057 - break;
162058 - }
162059 - return 0;
162060 -}
162061 -
162062 -/*
162063 * Guts of sys_timer_settime for CPU timers.
162064 * This is called with the timer locked and interrupts disabled.
162065 * If we return TIMER_RETRY, it's necessary to release the timer's lock
162066 @@ -768,7 +676,7 @@
162067 if (CPUCLOCK_PERTHREAD(timer->it_clock)) {
162068 cpu_clock_sample(timer->it_clock, p, &val);
162069 } else {
162070 - cpu_timer_sample_group(timer->it_clock, p, &val);
162071 + cpu_clock_sample_group(timer->it_clock, p, &val);
162072 }
162073
162074 if (old) {
162075 @@ -916,7 +824,7 @@
162076 read_unlock(&tasklist_lock);
162077 goto dead;
162078 } else {
162079 - cpu_timer_sample_group(timer->it_clock, p, &now);
162080 + cpu_clock_sample_group(timer->it_clock, p, &now);
162081 clear_dead = (unlikely(p->exit_state) &&
162082 thread_group_empty(p));
162083 }
162084 @@ -1056,19 +964,6 @@
162085 }
162086 }
162087
162088 -static void stop_process_timers(struct task_struct *tsk)
162089 -{
162090 - struct thread_group_cputimer *cputimer = &tsk->signal->cputimer;
162091 - unsigned long flags;
162092 -
162093 - if (!cputimer->running)
162094 - return;
162095 -
162096 - spin_lock_irqsave(&cputimer->lock, flags);
162097 - cputimer->running = 0;
162098 - spin_unlock_irqrestore(&cputimer->lock, flags);
162099 -}
162100 -
162101 /*
162102 * Check for any per-thread CPU timers that have fired and move them
162103 * off the tsk->*_timers list onto the firing list. Per-thread timers
162104 @@ -1092,15 +987,13 @@
162105 sig->rlim[RLIMIT_CPU].rlim_cur == RLIM_INFINITY &&
162106 list_empty(&timers[CPUCLOCK_VIRT]) &&
162107 cputime_eq(sig->it_virt_expires, cputime_zero) &&
162108 - list_empty(&timers[CPUCLOCK_SCHED])) {
162109 - stop_process_timers(tsk);
162110 + list_empty(&timers[CPUCLOCK_SCHED]))
162111 return;
162112 - }
162113
162114 /*
162115 * Collect the current process totals.
162116 */
162117 - thread_group_cputimer(tsk, &cputime);
162118 + thread_group_cputime(tsk, &cputime);
162119 utime = cputime.utime;
162120 ptime = cputime_add(utime, cputime.stime);
162121 sum_sched_runtime = cputime.sum_exec_runtime;
162122 @@ -1271,7 +1164,7 @@
162123 clear_dead_task(timer, now);
162124 goto out_unlock;
162125 }
162126 - cpu_timer_sample_group(timer->it_clock, p, &now);
162127 + cpu_clock_sample_group(timer->it_clock, p, &now);
162128 bump_cpu_timer(timer, now);
162129 /* Leave the tasklist_lock locked for the call below. */
162130 }
162131 @@ -1366,7 +1259,7 @@
162132 if (!task_cputime_zero(&sig->cputime_expires)) {
162133 struct task_cputime group_sample;
162134
162135 - thread_group_cputimer(tsk, &group_sample);
162136 + thread_group_cputime(tsk, &group_sample);
162137 if (task_cputime_expired(&group_sample, &sig->cputime_expires))
162138 return 1;
162139 }
162140 @@ -1448,7 +1341,7 @@
162141 struct list_head *head;
162142
162143 BUG_ON(clock_idx == CPUCLOCK_SCHED);
162144 - cpu_timer_sample_group(clock_idx, tsk, &now);
162145 + cpu_clock_sample_group(clock_idx, tsk, &now);
162146
162147 if (oldval) {
162148 if (!cputime_eq(*oldval, cputime_zero)) {
162149 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/power/console.c linux-2.6.29-rc3.owrt/kernel/power/console.c
162150 --- linux-2.6.29.owrt/kernel/power/console.c 2009-05-10 22:04:41.000000000 +0200
162151 +++ linux-2.6.29-rc3.owrt/kernel/power/console.c 2009-05-10 23:48:29.000000000 +0200
162152 @@ -78,12 +78,6 @@
162153 }
162154 set_console(orig_fgconsole);
162155 release_console_sem();
162156 -
162157 - if (vt_waitactive(orig_fgconsole)) {
162158 - pr_debug("Resume: Can't switch VCs.");
162159 - return;
162160 - }
162161 -
162162 kmsg_redirect = orig_kmsg;
162163 }
162164 #endif
162165 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/power/disk.c linux-2.6.29-rc3.owrt/kernel/power/disk.c
162166 --- linux-2.6.29.owrt/kernel/power/disk.c 2009-05-10 22:04:41.000000000 +0200
162167 +++ linux-2.6.29-rc3.owrt/kernel/power/disk.c 2009-05-10 23:48:29.000000000 +0200
162168 @@ -227,12 +227,6 @@
162169 "aborting hibernation\n");
162170 goto Enable_irqs;
162171 }
162172 - sysdev_suspend(PMSG_FREEZE);
162173 - if (error) {
162174 - printk(KERN_ERR "PM: Some devices failed to power down, "
162175 - "aborting hibernation\n");
162176 - goto Power_up_devices;
162177 - }
162178
162179 if (hibernation_test(TEST_CORE))
162180 goto Power_up;
162181 @@ -248,11 +242,9 @@
162182 if (!in_suspend)
162183 platform_leave(platform_mode);
162184 Power_up:
162185 - sysdev_resume();
162186 /* NOTE: device_power_up() is just a resume() for devices
162187 * that suspended with irqs off ... no overall powerup.
162188 */
162189 - Power_up_devices:
162190 device_power_up(in_suspend ?
162191 (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE);
162192 Enable_irqs:
162193 @@ -343,7 +335,6 @@
162194 "aborting resume\n");
162195 goto Enable_irqs;
162196 }
162197 - sysdev_suspend(PMSG_QUIESCE);
162198 /* We'll ignore saved state, but this gets preempt count (etc) right */
162199 save_processor_state();
162200 error = restore_highmem();
162201 @@ -366,7 +357,6 @@
162202 swsusp_free();
162203 restore_processor_state();
162204 touch_softlockup_watchdog();
162205 - sysdev_resume();
162206 device_power_up(PMSG_RECOVER);
162207 Enable_irqs:
162208 local_irq_enable();
162209 @@ -450,7 +440,6 @@
162210 local_irq_disable();
162211 error = device_power_down(PMSG_HIBERNATE);
162212 if (!error) {
162213 - sysdev_suspend(PMSG_HIBERNATE);
162214 hibernation_ops->enter();
162215 /* We should never get here */
162216 while (1);
162217 @@ -606,12 +595,6 @@
162218 unsigned int flags;
162219
162220 /*
162221 - * If the user said "noresume".. bail out early.
162222 - */
162223 - if (noresume)
162224 - return 0;
162225 -
162226 - /*
162227 * name_to_dev_t() below takes a sysfs buffer mutex when sysfs
162228 * is configured into the kernel. Since the regular hibernate
162229 * trigger path is via sysfs which takes a buffer mutex before
162230 @@ -627,11 +610,6 @@
162231 mutex_unlock(&pm_mutex);
162232 return -ENOENT;
162233 }
162234 - /*
162235 - * Some device discovery might still be in progress; we need
162236 - * to wait for this to finish.
162237 - */
162238 - wait_for_device_probe();
162239 swsusp_resume_device = name_to_dev_t(resume_file);
162240 pr_debug("PM: Resume from partition %s\n", resume_file);
162241 } else {
162242 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/power/main.c linux-2.6.29-rc3.owrt/kernel/power/main.c
162243 --- linux-2.6.29.owrt/kernel/power/main.c 2009-05-10 22:04:41.000000000 +0200
162244 +++ linux-2.6.29-rc3.owrt/kernel/power/main.c 2009-05-10 23:48:29.000000000 +0200
162245 @@ -57,6 +57,16 @@
162246 #ifdef CONFIG_PM_DEBUG
162247 int pm_test_level = TEST_NONE;
162248
162249 +static int suspend_test(int level)
162250 +{
162251 + if (pm_test_level == level) {
162252 + printk(KERN_INFO "suspend debug: Waiting for 5 seconds.\n");
162253 + mdelay(5000);
162254 + return 1;
162255 + }
162256 + return 0;
162257 +}
162258 +
162259 static const char * const pm_tests[__TEST_AFTER_LAST] = {
162260 [TEST_NONE] = "none",
162261 [TEST_CORE] = "core",
162262 @@ -115,24 +125,14 @@
162263 }
162264
162265 power_attr(pm_test);
162266 -#endif /* CONFIG_PM_DEBUG */
162267 +#else /* !CONFIG_PM_DEBUG */
162268 +static inline int suspend_test(int level) { return 0; }
162269 +#endif /* !CONFIG_PM_DEBUG */
162270
162271 #endif /* CONFIG_PM_SLEEP */
162272
162273 #ifdef CONFIG_SUSPEND
162274
162275 -static int suspend_test(int level)
162276 -{
162277 -#ifdef CONFIG_PM_DEBUG
162278 - if (pm_test_level == level) {
162279 - printk(KERN_INFO "suspend debug: Waiting for 5 seconds.\n");
162280 - mdelay(5000);
162281 - return 1;
162282 - }
162283 -#endif /* !CONFIG_PM_DEBUG */
162284 - return 0;
162285 -}
162286 -
162287 #ifdef CONFIG_PM_TEST_SUSPEND
162288
162289 /*
162290 @@ -298,12 +298,8 @@
162291 goto Done;
162292 }
162293
162294 - error = sysdev_suspend(PMSG_SUSPEND);
162295 - if (!error) {
162296 - if (!suspend_test(TEST_CORE))
162297 - error = suspend_ops->enter(state);
162298 - sysdev_resume();
162299 - }
162300 + if (!suspend_test(TEST_CORE))
162301 + error = suspend_ops->enter(state);
162302
162303 device_power_up(PMSG_RESUME);
162304 Done:
162305 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/power/Makefile linux-2.6.29-rc3.owrt/kernel/power/Makefile
162306 --- linux-2.6.29.owrt/kernel/power/Makefile 2009-05-10 22:04:41.000000000 +0200
162307 +++ linux-2.6.29-rc3.owrt/kernel/power/Makefile 2009-05-10 23:48:29.000000000 +0200
162308 @@ -3,7 +3,7 @@
162309 EXTRA_CFLAGS += -DDEBUG
162310 endif
162311
162312 -obj-$(CONFIG_PM) += main.o
162313 +obj-y := main.o
162314 obj-$(CONFIG_PM_SLEEP) += console.o
162315 obj-$(CONFIG_FREEZER) += process.o
162316 obj-$(CONFIG_HIBERNATION) += swsusp.o disk.o snapshot.o swap.o user.o
162317 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/power/swap.c linux-2.6.29-rc3.owrt/kernel/power/swap.c
162318 --- linux-2.6.29.owrt/kernel/power/swap.c 2009-05-10 22:04:41.000000000 +0200
162319 +++ linux-2.6.29-rc3.owrt/kernel/power/swap.c 2009-05-10 23:48:29.000000000 +0200
162320 @@ -60,7 +60,6 @@
162321 static int submit(int rw, pgoff_t page_off, struct page *page,
162322 struct bio **bio_chain)
162323 {
162324 - const int bio_rw = rw | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
162325 struct bio *bio;
162326
162327 bio = bio_alloc(__GFP_WAIT | __GFP_HIGH, 1);
162328 @@ -81,7 +80,7 @@
162329 bio_get(bio);
162330
162331 if (bio_chain == NULL) {
162332 - submit_bio(bio_rw, bio);
162333 + submit_bio(rw | (1 << BIO_RW_SYNC), bio);
162334 wait_on_page_locked(page);
162335 if (rw == READ)
162336 bio_set_pages_dirty(bio);
162337 @@ -91,7 +90,7 @@
162338 get_page(page); /* These pages are freed later */
162339 bio->bi_private = *bio_chain;
162340 *bio_chain = bio;
162341 - submit_bio(bio_rw, bio);
162342 + submit_bio(rw | (1 << BIO_RW_SYNC), bio);
162343 }
162344 return 0;
162345 }
162346 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/power/user.c linux-2.6.29-rc3.owrt/kernel/power/user.c
162347 --- linux-2.6.29.owrt/kernel/power/user.c 2009-05-10 22:04:41.000000000 +0200
162348 +++ linux-2.6.29-rc3.owrt/kernel/power/user.c 2009-05-10 23:48:29.000000000 +0200
162349 @@ -95,15 +95,15 @@
162350 data->swap = swsusp_resume_device ?
162351 swap_type_of(swsusp_resume_device, 0, NULL) : -1;
162352 data->mode = O_RDONLY;
162353 - error = pm_notifier_call_chain(PM_HIBERNATION_PREPARE);
162354 + error = pm_notifier_call_chain(PM_RESTORE_PREPARE);
162355 if (error)
162356 - pm_notifier_call_chain(PM_POST_HIBERNATION);
162357 + pm_notifier_call_chain(PM_POST_RESTORE);
162358 } else {
162359 data->swap = -1;
162360 data->mode = O_WRONLY;
162361 - error = pm_notifier_call_chain(PM_RESTORE_PREPARE);
162362 + error = pm_notifier_call_chain(PM_HIBERNATION_PREPARE);
162363 if (error)
162364 - pm_notifier_call_chain(PM_POST_RESTORE);
162365 + pm_notifier_call_chain(PM_POST_HIBERNATION);
162366 }
162367 if (error)
162368 atomic_inc(&snapshot_device_available);
162369 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/printk.c linux-2.6.29-rc3.owrt/kernel/printk.c
162370 --- linux-2.6.29.owrt/kernel/printk.c 2009-05-10 22:04:41.000000000 +0200
162371 +++ linux-2.6.29-rc3.owrt/kernel/printk.c 2009-05-10 23:48:29.000000000 +0200
162372 @@ -73,6 +73,7 @@
162373 * driver system.
162374 */
162375 static DECLARE_MUTEX(console_sem);
162376 +static DECLARE_MUTEX(secondary_console_sem);
162377 struct console *console_drivers;
162378 EXPORT_SYMBOL_GPL(console_drivers);
162379
162380 @@ -890,14 +891,12 @@
162381 printk("Suspending console(s) (use no_console_suspend to debug)\n");
162382 acquire_console_sem();
162383 console_suspended = 1;
162384 - up(&console_sem);
162385 }
162386
162387 void resume_console(void)
162388 {
162389 if (!console_suspend_enabled)
162390 return;
162391 - down(&console_sem);
162392 console_suspended = 0;
162393 release_console_sem();
162394 }
162395 @@ -913,9 +912,11 @@
162396 void acquire_console_sem(void)
162397 {
162398 BUG_ON(in_interrupt());
162399 - down(&console_sem);
162400 - if (console_suspended)
162401 + if (console_suspended) {
162402 + down(&secondary_console_sem);
162403 return;
162404 + }
162405 + down(&console_sem);
162406 console_locked = 1;
162407 console_may_schedule = 1;
162408 }
162409 @@ -925,10 +926,6 @@
162410 {
162411 if (down_trylock(&console_sem))
162412 return -1;
162413 - if (console_suspended) {
162414 - up(&console_sem);
162415 - return -1;
162416 - }
162417 console_locked = 1;
162418 console_may_schedule = 0;
162419 return 0;
162420 @@ -982,7 +979,7 @@
162421 unsigned wake_klogd = 0;
162422
162423 if (console_suspended) {
162424 - up(&console_sem);
162425 + up(&secondary_console_sem);
162426 return;
162427 }
162428
162429 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/profile.c linux-2.6.29-rc3.owrt/kernel/profile.c
162430 --- linux-2.6.29.owrt/kernel/profile.c 2009-05-10 22:04:41.000000000 +0200
162431 +++ linux-2.6.29-rc3.owrt/kernel/profile.c 2009-05-10 23:48:29.000000000 +0200
162432 @@ -114,15 +114,12 @@
162433 if (!slab_is_available()) {
162434 prof_buffer = alloc_bootmem(buffer_bytes);
162435 alloc_bootmem_cpumask_var(&prof_cpu_mask);
162436 - cpumask_copy(prof_cpu_mask, cpu_possible_mask);
162437 return 0;
162438 }
162439
162440 if (!alloc_cpumask_var(&prof_cpu_mask, GFP_KERNEL))
162441 return -ENOMEM;
162442
162443 - cpumask_copy(prof_cpu_mask, cpu_possible_mask);
162444 -
162445 prof_buffer = kzalloc(buffer_bytes, GFP_KERNEL);
162446 if (prof_buffer)
162447 return 0;
162448 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/rcuclassic.c linux-2.6.29-rc3.owrt/kernel/rcuclassic.c
162449 --- linux-2.6.29.owrt/kernel/rcuclassic.c 2009-05-10 22:04:41.000000000 +0200
162450 +++ linux-2.6.29-rc3.owrt/kernel/rcuclassic.c 2009-05-10 23:48:29.000000000 +0200
162451 @@ -679,8 +679,8 @@
162452 void rcu_check_callbacks(int cpu, int user)
162453 {
162454 if (user ||
162455 - (idle_cpu(cpu) && rcu_scheduler_active &&
162456 - !in_softirq() && hardirq_count() <= (1 << HARDIRQ_SHIFT))) {
162457 + (idle_cpu(cpu) && !in_softirq() &&
162458 + hardirq_count() <= (1 << HARDIRQ_SHIFT))) {
162459
162460 /*
162461 * Get here if this CPU took its interrupt from user
162462 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/rcupdate.c linux-2.6.29-rc3.owrt/kernel/rcupdate.c
162463 --- linux-2.6.29.owrt/kernel/rcupdate.c 2009-05-10 22:04:41.000000000 +0200
162464 +++ linux-2.6.29-rc3.owrt/kernel/rcupdate.c 2009-05-10 23:48:29.000000000 +0200
162465 @@ -44,7 +44,6 @@
162466 #include <linux/cpu.h>
162467 #include <linux/mutex.h>
162468 #include <linux/module.h>
162469 -#include <linux/kernel_stat.h>
162470
162471 enum rcu_barrier {
162472 RCU_BARRIER_STD,
162473 @@ -56,7 +55,6 @@
162474 static atomic_t rcu_barrier_cpu_count;
162475 static DEFINE_MUTEX(rcu_barrier_mutex);
162476 static struct completion rcu_barrier_completion;
162477 -int rcu_scheduler_active __read_mostly;
162478
162479 /*
162480 * Awaken the corresponding synchronize_rcu() instance now that a
162481 @@ -82,10 +80,6 @@
162482 void synchronize_rcu(void)
162483 {
162484 struct rcu_synchronize rcu;
162485 -
162486 - if (rcu_blocking_is_gp())
162487 - return;
162488 -
162489 init_completion(&rcu.completion);
162490 /* Will wake me after RCU finished. */
162491 call_rcu(&rcu.head, wakeme_after_rcu);
162492 @@ -181,9 +175,3 @@
162493 __rcu_init();
162494 }
162495
162496 -void rcu_scheduler_starting(void)
162497 -{
162498 - WARN_ON(num_online_cpus() != 1);
162499 - WARN_ON(nr_context_switches() > 0);
162500 - rcu_scheduler_active = 1;
162501 -}
162502 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/rcupreempt.c linux-2.6.29-rc3.owrt/kernel/rcupreempt.c
162503 --- linux-2.6.29.owrt/kernel/rcupreempt.c 2009-05-10 22:04:41.000000000 +0200
162504 +++ linux-2.6.29-rc3.owrt/kernel/rcupreempt.c 2009-05-10 23:48:29.000000000 +0200
162505 @@ -1181,9 +1181,6 @@
162506 {
162507 struct rcu_synchronize rcu;
162508
162509 - if (num_online_cpus() == 1)
162510 - return; /* blocking is gp if only one CPU! */
162511 -
162512 init_completion(&rcu.completion);
162513 /* Will wake me after RCU finished. */
162514 call_rcu_sched(&rcu.head, wakeme_after_rcu);
162515 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/rcutree.c linux-2.6.29-rc3.owrt/kernel/rcutree.c
162516 --- linux-2.6.29.owrt/kernel/rcutree.c 2009-05-10 22:04:41.000000000 +0200
162517 +++ linux-2.6.29-rc3.owrt/kernel/rcutree.c 2009-05-10 23:48:29.000000000 +0200
162518 @@ -948,8 +948,8 @@
162519 void rcu_check_callbacks(int cpu, int user)
162520 {
162521 if (user ||
162522 - (idle_cpu(cpu) && rcu_scheduler_active &&
162523 - !in_softirq() && hardirq_count() <= (1 << HARDIRQ_SHIFT))) {
162524 + (idle_cpu(cpu) && !in_softirq() &&
162525 + hardirq_count() <= (1 << HARDIRQ_SHIFT))) {
162526
162527 /*
162528 * Get here if this CPU took its interrupt from user
162529 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/sched.c linux-2.6.29-rc3.owrt/kernel/sched.c
162530 --- linux-2.6.29.owrt/kernel/sched.c 2009-05-10 22:04:41.000000000 +0200
162531 +++ linux-2.6.29-rc3.owrt/kernel/sched.c 2009-05-10 23:48:29.000000000 +0200
162532 @@ -223,7 +223,7 @@
162533 {
162534 ktime_t now;
162535
162536 - if (!rt_bandwidth_enabled() || rt_b->rt_runtime == RUNTIME_INF)
162537 + if (rt_bandwidth_enabled() && rt_b->rt_runtime == RUNTIME_INF)
162538 return;
162539
162540 if (hrtimer_active(&rt_b->rt_period_timer))
162541 @@ -3880,24 +3880,19 @@
162542 int cpu = smp_processor_id();
162543
162544 if (stop_tick) {
162545 + cpumask_set_cpu(cpu, nohz.cpu_mask);
162546 cpu_rq(cpu)->in_nohz_recently = 1;
162547
162548 - if (!cpu_active(cpu)) {
162549 - if (atomic_read(&nohz.load_balancer) != cpu)
162550 - return 0;
162551 -
162552 - /*
162553 - * If we are going offline and still the leader,
162554 - * give up!
162555 - */
162556 + /*
162557 + * If we are going offline and still the leader, give up!
162558 + */
162559 + if (!cpu_active(cpu) &&
162560 + atomic_read(&nohz.load_balancer) == cpu) {
162561 if (atomic_cmpxchg(&nohz.load_balancer, cpu, -1) != cpu)
162562 BUG();
162563 -
162564 return 0;
162565 }
162566
162567 - cpumask_set_cpu(cpu, nohz.cpu_mask);
162568 -
162569 /* time for ilb owner also to sleep */
162570 if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) {
162571 if (atomic_read(&nohz.load_balancer) == cpu)
162572 @@ -4692,8 +4687,8 @@
162573 * started to run but is not in state TASK_RUNNING. try_to_wake_up() returns
162574 * zero in this (rare) case, and we handle it by continuing to scan the queue.
162575 */
162576 -void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
162577 - int nr_exclusive, int sync, void *key)
162578 +static void __wake_up_common(wait_queue_head_t *q, unsigned int mode,
162579 + int nr_exclusive, int sync, void *key)
162580 {
162581 wait_queue_t *curr, *next;
162582
162583 @@ -6945,26 +6940,20 @@
162584
162585 static void rq_attach_root(struct rq *rq, struct root_domain *rd)
162586 {
162587 - struct root_domain *old_rd = NULL;
162588 unsigned long flags;
162589
162590 spin_lock_irqsave(&rq->lock, flags);
162591
162592 if (rq->rd) {
162593 - old_rd = rq->rd;
162594 + struct root_domain *old_rd = rq->rd;
162595
162596 if (cpumask_test_cpu(rq->cpu, old_rd->online))
162597 set_rq_offline(rq);
162598
162599 cpumask_clear_cpu(rq->cpu, old_rd->span);
162600
162601 - /*
162602 - * If we dont want to free the old_rt yet then
162603 - * set old_rd to NULL to skip the freeing later
162604 - * in this function:
162605 - */
162606 - if (!atomic_dec_and_test(&old_rd->refcount))
162607 - old_rd = NULL;
162608 + if (atomic_dec_and_test(&old_rd->refcount))
162609 + free_rootdomain(old_rd);
162610 }
162611
162612 atomic_inc(&rd->refcount);
162613 @@ -6975,9 +6964,6 @@
162614 set_rq_online(rq);
162615
162616 spin_unlock_irqrestore(&rq->lock, flags);
162617 -
162618 - if (old_rd)
162619 - free_rootdomain(old_rd);
162620 }
162621
162622 static int __init_refok init_rootdomain(struct root_domain *rd, bool bootmem)
162623 @@ -9225,16 +9211,6 @@
162624
162625 return ret;
162626 }
162627 -
162628 -int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk)
162629 -{
162630 - /* Don't accept realtime tasks when there is no way for them to run */
162631 - if (rt_task(tsk) && tg->rt_bandwidth.rt_runtime == 0)
162632 - return 0;
162633 -
162634 - return 1;
162635 -}
162636 -
162637 #else /* !CONFIG_RT_GROUP_SCHED */
162638 static int sched_rt_global_constraints(void)
162639 {
162640 @@ -9328,7 +9304,8 @@
162641 struct task_struct *tsk)
162642 {
162643 #ifdef CONFIG_RT_GROUP_SCHED
162644 - if (!sched_rt_can_attach(cgroup_tg(cgrp), tsk))
162645 + /* Don't accept realtime tasks when there is no way for them to run */
162646 + if (rt_task(tsk) && cgroup_tg(cgrp)->rt_bandwidth.rt_runtime == 0)
162647 return -EINVAL;
162648 #else
162649 /* We don't support RT-tasks being in separate groups */
162650 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/sched_fair.c linux-2.6.29-rc3.owrt/kernel/sched_fair.c
162651 --- linux-2.6.29.owrt/kernel/sched_fair.c 2009-05-10 22:04:41.000000000 +0200
162652 +++ linux-2.6.29-rc3.owrt/kernel/sched_fair.c 2009-05-10 23:48:29.000000000 +0200
162653 @@ -719,7 +719,7 @@
162654 __enqueue_entity(cfs_rq, se);
162655 }
162656
162657 -static void __clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
162658 +static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
162659 {
162660 if (cfs_rq->last == se)
162661 cfs_rq->last = NULL;
162662 @@ -728,12 +728,6 @@
162663 cfs_rq->next = NULL;
162664 }
162665
162666 -static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)
162667 -{
162668 - for_each_sched_entity(se)
162669 - __clear_buddies(cfs_rq_of(se), se);
162670 -}
162671 -
162672 static void
162673 dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep)
162674 {
162675 @@ -774,14 +768,8 @@
162676
162677 ideal_runtime = sched_slice(cfs_rq, curr);
162678 delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;
162679 - if (delta_exec > ideal_runtime) {
162680 + if (delta_exec > ideal_runtime)
162681 resched_task(rq_of(cfs_rq)->curr);
162682 - /*
162683 - * The current task ran long enough, ensure it doesn't get
162684 - * re-elected due to buddy favours.
162685 - */
162686 - clear_buddies(cfs_rq, curr);
162687 - }
162688 }
162689
162690 static void
162691 @@ -1464,11 +1452,6 @@
162692
162693 do {
162694 se = pick_next_entity(cfs_rq);
162695 - /*
162696 - * If se was a buddy, clear it so that it will have to earn
162697 - * the favour again.
162698 - */
162699 - __clear_buddies(cfs_rq, se);
162700 set_next_entity(cfs_rq, se);
162701 cfs_rq = group_cfs_rq(se);
162702 } while (cfs_rq);
162703 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/sched_rt.c linux-2.6.29-rc3.owrt/kernel/sched_rt.c
162704 --- linux-2.6.29.owrt/kernel/sched_rt.c 2009-05-10 22:04:41.000000000 +0200
162705 +++ linux-2.6.29-rc3.owrt/kernel/sched_rt.c 2009-05-10 23:48:29.000000000 +0200
162706 @@ -968,8 +968,8 @@
162707 if ((this_cpu != -1) && cpu_isset(this_cpu, *mask))
162708 return this_cpu;
162709
162710 - first = cpumask_first(mask);
162711 - if (first < nr_cpu_ids)
162712 + first = first_cpu(*mask);
162713 + if (first != NR_CPUS)
162714 return first;
162715
162716 return -1;
162717 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/sched_stats.h linux-2.6.29-rc3.owrt/kernel/sched_stats.h
162718 --- linux-2.6.29.owrt/kernel/sched_stats.h 2009-05-10 22:04:41.000000000 +0200
162719 +++ linux-2.6.29-rc3.owrt/kernel/sched_stats.h 2009-05-10 23:48:29.000000000 +0200
162720 @@ -296,21 +296,19 @@
162721 static inline void account_group_user_time(struct task_struct *tsk,
162722 cputime_t cputime)
162723 {
162724 - struct thread_group_cputimer *cputimer;
162725 + struct task_cputime *times;
162726 + struct signal_struct *sig;
162727
162728 /* tsk == current, ensure it is safe to use ->signal */
162729 if (unlikely(tsk->exit_state))
162730 return;
162731
162732 - cputimer = &tsk->signal->cputimer;
162733 -
162734 - if (!cputimer->running)
162735 - return;
162736 + sig = tsk->signal;
162737 + times = &sig->cputime.totals;
162738
162739 - spin_lock(&cputimer->lock);
162740 - cputimer->cputime.utime =
162741 - cputime_add(cputimer->cputime.utime, cputime);
162742 - spin_unlock(&cputimer->lock);
162743 + spin_lock(&times->lock);
162744 + times->utime = cputime_add(times->utime, cputime);
162745 + spin_unlock(&times->lock);
162746 }
162747
162748 /**
162749 @@ -326,21 +324,19 @@
162750 static inline void account_group_system_time(struct task_struct *tsk,
162751 cputime_t cputime)
162752 {
162753 - struct thread_group_cputimer *cputimer;
162754 + struct task_cputime *times;
162755 + struct signal_struct *sig;
162756
162757 /* tsk == current, ensure it is safe to use ->signal */
162758 if (unlikely(tsk->exit_state))
162759 return;
162760
162761 - cputimer = &tsk->signal->cputimer;
162762 -
162763 - if (!cputimer->running)
162764 - return;
162765 + sig = tsk->signal;
162766 + times = &sig->cputime.totals;
162767
162768 - spin_lock(&cputimer->lock);
162769 - cputimer->cputime.stime =
162770 - cputime_add(cputimer->cputime.stime, cputime);
162771 - spin_unlock(&cputimer->lock);
162772 + spin_lock(&times->lock);
162773 + times->stime = cputime_add(times->stime, cputime);
162774 + spin_unlock(&times->lock);
162775 }
162776
162777 /**
162778 @@ -356,7 +352,7 @@
162779 static inline void account_group_exec_runtime(struct task_struct *tsk,
162780 unsigned long long ns)
162781 {
162782 - struct thread_group_cputimer *cputimer;
162783 + struct task_cputime *times;
162784 struct signal_struct *sig;
162785
162786 sig = tsk->signal;
162787 @@ -365,12 +361,9 @@
162788 if (unlikely(!sig))
162789 return;
162790
162791 - cputimer = &sig->cputimer;
162792 -
162793 - if (!cputimer->running)
162794 - return;
162795 + times = &sig->cputime.totals;
162796
162797 - spin_lock(&cputimer->lock);
162798 - cputimer->cputime.sum_exec_runtime += ns;
162799 - spin_unlock(&cputimer->lock);
162800 + spin_lock(&times->lock);
162801 + times->sum_exec_runtime += ns;
162802 + spin_unlock(&times->lock);
162803 }
162804 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/seccomp.c linux-2.6.29-rc3.owrt/kernel/seccomp.c
162805 --- linux-2.6.29.owrt/kernel/seccomp.c 2009-05-10 22:04:41.000000000 +0200
162806 +++ linux-2.6.29-rc3.owrt/kernel/seccomp.c 2009-05-10 23:48:29.000000000 +0200
162807 @@ -8,7 +8,6 @@
162808
162809 #include <linux/seccomp.h>
162810 #include <linux/sched.h>
162811 -#include <linux/compat.h>
162812
162813 /* #define SECCOMP_DEBUG 1 */
162814 #define NR_SECCOMP_MODES 1
162815 @@ -23,7 +22,7 @@
162816 0, /* null terminated */
162817 };
162818
162819 -#ifdef CONFIG_COMPAT
162820 +#ifdef TIF_32BIT
162821 static int mode1_syscalls_32[] = {
162822 __NR_seccomp_read_32, __NR_seccomp_write_32, __NR_seccomp_exit_32, __NR_seccomp_sigreturn_32,
162823 0, /* null terminated */
162824 @@ -38,8 +37,8 @@
162825 switch (mode) {
162826 case 1:
162827 syscall = mode1_syscalls;
162828 -#ifdef CONFIG_COMPAT
162829 - if (is_compat_task())
162830 +#ifdef TIF_32BIT
162831 + if (test_thread_flag(TIF_32BIT))
162832 syscall = mode1_syscalls_32;
162833 #endif
162834 do {
162835 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/signal.c linux-2.6.29-rc3.owrt/kernel/signal.c
162836 --- linux-2.6.29.owrt/kernel/signal.c 2009-05-10 22:04:41.000000000 +0200
162837 +++ linux-2.6.29-rc3.owrt/kernel/signal.c 2009-05-10 23:48:29.000000000 +0200
162838 @@ -909,9 +909,7 @@
162839 }
162840 #endif
162841 printk("\n");
162842 - preempt_disable();
162843 show_regs(regs);
162844 - preempt_enable();
162845 }
162846
162847 static int __init setup_print_fatal_signals(char *str)
162848 @@ -1367,6 +1365,7 @@
162849 struct siginfo info;
162850 unsigned long flags;
162851 struct sighand_struct *psig;
162852 + struct task_cputime cputime;
162853 int ret = sig;
162854
162855 BUG_ON(sig == -1);
162856 @@ -1396,10 +1395,9 @@
162857 info.si_uid = __task_cred(tsk)->uid;
162858 rcu_read_unlock();
162859
162860 - info.si_utime = cputime_to_clock_t(cputime_add(tsk->utime,
162861 - tsk->signal->utime));
162862 - info.si_stime = cputime_to_clock_t(cputime_add(tsk->stime,
162863 - tsk->signal->stime));
162864 + thread_group_cputime(tsk, &cputime);
162865 + info.si_utime = cputime_to_jiffies(cputime.utime);
162866 + info.si_stime = cputime_to_jiffies(cputime.stime);
162867
162868 info.si_status = tsk->exit_code & 0x7f;
162869 if (tsk->exit_code & 0x80)
162870 @@ -1575,15 +1573,7 @@
162871 read_lock(&tasklist_lock);
162872 if (may_ptrace_stop()) {
162873 do_notify_parent_cldstop(current, CLD_TRAPPED);
162874 - /*
162875 - * Don't want to allow preemption here, because
162876 - * sys_ptrace() needs this task to be inactive.
162877 - *
162878 - * XXX: implement read_unlock_no_resched().
162879 - */
162880 - preempt_disable();
162881 read_unlock(&tasklist_lock);
162882 - preempt_enable_no_resched();
162883 schedule();
162884 } else {
162885 /*
162886 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/smp.c linux-2.6.29-rc3.owrt/kernel/smp.c
162887 --- linux-2.6.29.owrt/kernel/smp.c 2009-05-10 22:04:41.000000000 +0200
162888 +++ linux-2.6.29-rc3.owrt/kernel/smp.c 2009-05-10 23:48:29.000000000 +0200
162889 @@ -18,7 +18,6 @@
162890 enum {
162891 CSD_FLAG_WAIT = 0x01,
162892 CSD_FLAG_ALLOC = 0x02,
162893 - CSD_FLAG_LOCK = 0x04,
162894 };
162895
162896 struct call_function_data {
162897 @@ -187,9 +186,6 @@
162898 if (data_flags & CSD_FLAG_WAIT) {
162899 smp_wmb();
162900 data->flags &= ~CSD_FLAG_WAIT;
162901 - } else if (data_flags & CSD_FLAG_LOCK) {
162902 - smp_wmb();
162903 - data->flags &= ~CSD_FLAG_LOCK;
162904 } else if (data_flags & CSD_FLAG_ALLOC)
162905 kfree(data);
162906 }
162907 @@ -200,8 +196,6 @@
162908 }
162909 }
162910
162911 -static DEFINE_PER_CPU(struct call_single_data, csd_data);
162912 -
162913 /*
162914 * smp_call_function_single - Run a function on a specific CPU
162915 * @func: The function to run. This must be fast and non-blocking.
162916 @@ -230,38 +224,14 @@
162917 func(info);
162918 local_irq_restore(flags);
162919 } else if ((unsigned)cpu < nr_cpu_ids && cpu_online(cpu)) {
162920 - struct call_single_data *data;
162921 + struct call_single_data *data = NULL;
162922
162923 if (!wait) {
162924 - /*
162925 - * We are calling a function on a single CPU
162926 - * and we are not going to wait for it to finish.
162927 - * We first try to allocate the data, but if we
162928 - * fail, we fall back to use a per cpu data to pass
162929 - * the information to that CPU. Since all callers
162930 - * of this code will use the same data, we must
162931 - * synchronize the callers to prevent a new caller
162932 - * from corrupting the data before the callee
162933 - * can access it.
162934 - *
162935 - * The CSD_FLAG_LOCK is used to let us know when
162936 - * the IPI handler is done with the data.
162937 - * The first caller will set it, and the callee
162938 - * will clear it. The next caller must wait for
162939 - * it to clear before we set it again. This
162940 - * will make sure the callee is done with the
162941 - * data before a new caller will use it.
162942 - */
162943 data = kmalloc(sizeof(*data), GFP_ATOMIC);
162944 if (data)
162945 data->flags = CSD_FLAG_ALLOC;
162946 - else {
162947 - data = &per_cpu(csd_data, me);
162948 - while (data->flags & CSD_FLAG_LOCK)
162949 - cpu_relax();
162950 - data->flags = CSD_FLAG_LOCK;
162951 - }
162952 - } else {
162953 + }
162954 + if (!data) {
162955 data = &d;
162956 data->flags = CSD_FLAG_WAIT;
162957 }
162958 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/softirq.c linux-2.6.29-rc3.owrt/kernel/softirq.c
162959 --- linux-2.6.29.owrt/kernel/softirq.c 2009-05-10 22:04:41.000000000 +0200
162960 +++ linux-2.6.29-rc3.owrt/kernel/softirq.c 2009-05-10 23:48:29.000000000 +0200
162961 @@ -626,7 +626,6 @@
162962 preempt_enable_no_resched();
162963 cond_resched();
162964 preempt_disable();
162965 - rcu_qsctr_inc((long)__bind_cpu);
162966 }
162967 preempt_enable();
162968 set_current_state(TASK_INTERRUPTIBLE);
162969 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/sys.c linux-2.6.29-rc3.owrt/kernel/sys.c
162970 --- linux-2.6.29.owrt/kernel/sys.c 2009-05-10 22:04:41.000000000 +0200
162971 +++ linux-2.6.29-rc3.owrt/kernel/sys.c 2009-05-10 23:48:29.000000000 +0200
162972 @@ -559,7 +559,7 @@
162973 abort_creds(new);
162974 return retval;
162975 }
162976 -
162977 +
162978 /*
162979 * change the user struct in a credentials set to match the new UID
162980 */
162981 @@ -571,11 +571,6 @@
162982 if (!new_user)
162983 return -EAGAIN;
162984
162985 - if (!task_can_switch_user(new_user, current)) {
162986 - free_uid(new_user);
162987 - return -EINVAL;
162988 - }
162989 -
162990 if (atomic_read(&new_user->processes) >=
162991 current->signal->rlim[RLIMIT_NPROC].rlim_cur &&
162992 new_user != INIT_USER) {
162993 @@ -636,11 +631,10 @@
162994 goto error;
162995 }
162996
162997 - if (new->uid != old->uid) {
162998 - retval = set_user(new);
162999 - if (retval < 0)
163000 - goto error;
163001 - }
163002 + retval = -EAGAIN;
163003 + if (new->uid != old->uid && set_user(new) < 0)
163004 + goto error;
163005 +
163006 if (ruid != (uid_t) -1 ||
163007 (euid != (uid_t) -1 && euid != old->uid))
163008 new->suid = new->euid;
163009 @@ -686,10 +680,9 @@
163010 retval = -EPERM;
163011 if (capable(CAP_SETUID)) {
163012 new->suid = new->uid = uid;
163013 - if (uid != old->uid) {
163014 - retval = set_user(new);
163015 - if (retval < 0)
163016 - goto error;
163017 + if (uid != old->uid && set_user(new) < 0) {
163018 + retval = -EAGAIN;
163019 + goto error;
163020 }
163021 } else if (uid != old->uid && uid != new->suid) {
163022 goto error;
163023 @@ -741,13 +734,11 @@
163024 goto error;
163025 }
163026
163027 + retval = -EAGAIN;
163028 if (ruid != (uid_t) -1) {
163029 new->uid = ruid;
163030 - if (ruid != old->uid) {
163031 - retval = set_user(new);
163032 - if (retval < 0)
163033 - goto error;
163034 - }
163035 + if (ruid != old->uid && set_user(new) < 0)
163036 + goto error;
163037 }
163038 if (euid != (uid_t) -1)
163039 new->euid = euid;
163040 @@ -1534,14 +1525,22 @@
163041 return -EINVAL;
163042 if (copy_from_user(&new_rlim, rlim, sizeof(*rlim)))
163043 return -EFAULT;
163044 - if (new_rlim.rlim_cur > new_rlim.rlim_max)
163045 - return -EINVAL;
163046 old_rlim = current->signal->rlim + resource;
163047 if ((new_rlim.rlim_max > old_rlim->rlim_max) &&
163048 !capable(CAP_SYS_RESOURCE))
163049 return -EPERM;
163050 - if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > sysctl_nr_open)
163051 - return -EPERM;
163052 +
163053 + if (resource == RLIMIT_NOFILE) {
163054 + if (new_rlim.rlim_max == RLIM_INFINITY)
163055 + new_rlim.rlim_max = sysctl_nr_open;
163056 + if (new_rlim.rlim_cur == RLIM_INFINITY)
163057 + new_rlim.rlim_cur = sysctl_nr_open;
163058 + if (new_rlim.rlim_max > sysctl_nr_open)
163059 + return -EPERM;
163060 + }
163061 +
163062 + if (new_rlim.rlim_cur > new_rlim.rlim_max)
163063 + return -EINVAL;
163064
163065 retval = security_task_setrlimit(resource, &new_rlim);
163066 if (retval)
163067 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/sysctl.c linux-2.6.29-rc3.owrt/kernel/sysctl.c
163068 --- linux-2.6.29.owrt/kernel/sysctl.c 2009-05-10 22:04:41.000000000 +0200
163069 +++ linux-2.6.29-rc3.owrt/kernel/sysctl.c 2009-05-10 23:48:29.000000000 +0200
163070 @@ -101,7 +101,6 @@
163071
163072 static int zero;
163073 static int one = 1;
163074 -static unsigned long one_ul = 1;
163075 static int one_hundred = 100;
163076
163077 /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
163078 @@ -975,7 +974,7 @@
163079 .mode = 0644,
163080 .proc_handler = &dirty_background_bytes_handler,
163081 .strategy = &sysctl_intvec,
163082 - .extra1 = &one_ul,
163083 + .extra1 = &one,
163084 },
163085 {
163086 .ctl_name = VM_DIRTY_RATIO,
163087 @@ -996,7 +995,7 @@
163088 .mode = 0644,
163089 .proc_handler = &dirty_bytes_handler,
163090 .strategy = &sysctl_intvec,
163091 - .extra1 = &one_ul,
163092 + .extra1 = &one,
163093 },
163094 {
163095 .procname = "dirty_writeback_centisecs",
163096 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/time/tick-common.c linux-2.6.29-rc3.owrt/kernel/time/tick-common.c
163097 --- linux-2.6.29.owrt/kernel/time/tick-common.c 2009-05-10 22:04:41.000000000 +0200
163098 +++ linux-2.6.29-rc3.owrt/kernel/time/tick-common.c 2009-05-10 23:48:29.000000000 +0200
163099 @@ -274,21 +274,6 @@
163100 }
163101
163102 /*
163103 - * Transfer the do_timer job away from a dying cpu.
163104 - *
163105 - * Called with interrupts disabled.
163106 - */
163107 -static void tick_handover_do_timer(int *cpup)
163108 -{
163109 - if (*cpup == tick_do_timer_cpu) {
163110 - int cpu = cpumask_first(cpu_online_mask);
163111 -
163112 - tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :
163113 - TICK_DO_TIMER_NONE;
163114 - }
163115 -}
163116 -
163117 -/*
163118 * Shutdown an event device on a given cpu:
163119 *
163120 * This is called on a life CPU, when a CPU is dead. So we cannot
163121 @@ -312,6 +297,13 @@
163122 clockevents_exchange_device(dev, NULL);
163123 td->evtdev = NULL;
163124 }
163125 + /* Transfer the do_timer job away from this cpu */
163126 + if (*cpup == tick_do_timer_cpu) {
163127 + int cpu = cpumask_first(cpu_online_mask);
163128 +
163129 + tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :
163130 + TICK_DO_TIMER_NONE;
163131 + }
163132 spin_unlock_irqrestore(&tick_device_lock, flags);
163133 }
163134
163135 @@ -365,10 +357,6 @@
163136 tick_broadcast_oneshot_control(reason);
163137 break;
163138
163139 - case CLOCK_EVT_NOTIFY_CPU_DYING:
163140 - tick_handover_do_timer(dev);
163141 - break;
163142 -
163143 case CLOCK_EVT_NOTIFY_CPU_DEAD:
163144 tick_shutdown_broadcast_oneshot(dev);
163145 tick_shutdown_broadcast(dev);
163146 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/ftrace.c linux-2.6.29-rc3.owrt/kernel/trace/ftrace.c
163147 --- linux-2.6.29.owrt/kernel/trace/ftrace.c 2009-05-10 22:04:41.000000000 +0200
163148 +++ linux-2.6.29-rc3.owrt/kernel/trace/ftrace.c 2009-05-10 23:48:29.000000000 +0200
163149 @@ -17,7 +17,6 @@
163150 #include <linux/clocksource.h>
163151 #include <linux/kallsyms.h>
163152 #include <linux/seq_file.h>
163153 -#include <linux/suspend.h>
163154 #include <linux/debugfs.h>
163155 #include <linux/hardirq.h>
163156 #include <linux/kthread.h>
163157 @@ -1737,12 +1736,9 @@
163158 {
163159 struct task_struct *p;
163160
163161 - rcu_read_lock();
163162 do_each_pid_task(pid, PIDTYPE_PID, p) {
163163 clear_tsk_trace_trace(p);
163164 } while_each_pid_task(pid, PIDTYPE_PID, p);
163165 - rcu_read_unlock();
163166 -
163167 put_pid(pid);
163168 }
163169
163170 @@ -1750,11 +1746,9 @@
163171 {
163172 struct task_struct *p;
163173
163174 - rcu_read_lock();
163175 do_each_pid_task(pid, PIDTYPE_PID, p) {
163176 set_tsk_trace_trace(p);
163177 } while_each_pid_task(pid, PIDTYPE_PID, p);
163178 - rcu_read_unlock();
163179 }
163180
163181 static void clear_ftrace_pid_task(struct pid **pid)
163182 @@ -1971,7 +1965,6 @@
163183 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
163184
163185 static atomic_t ftrace_graph_active;
163186 -static struct notifier_block ftrace_suspend_notifier;
163187
163188 int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)
163189 {
163190 @@ -2033,7 +2026,7 @@
163191 static int start_graph_tracing(void)
163192 {
163193 struct ftrace_ret_stack **ret_stack_list;
163194 - int ret, cpu;
163195 + int ret;
163196
163197 ret_stack_list = kmalloc(FTRACE_RETSTACK_ALLOC_SIZE *
163198 sizeof(struct ftrace_ret_stack *),
163199 @@ -2042,10 +2035,6 @@
163200 if (!ret_stack_list)
163201 return -ENOMEM;
163202
163203 - /* The cpu_boot init_task->ret_stack will never be freed */
163204 - for_each_online_cpu(cpu)
163205 - ftrace_graph_init_task(idle_task(cpu));
163206 -
163207 do {
163208 ret = alloc_retstack_tasklist(ret_stack_list);
163209 } while (ret == -EAGAIN);
163210 @@ -2054,27 +2043,6 @@
163211 return ret;
163212 }
163213
163214 -/*
163215 - * Hibernation protection.
163216 - * The state of the current task is too much unstable during
163217 - * suspend/restore to disk. We want to protect against that.
163218 - */
163219 -static int
163220 -ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state,
163221 - void *unused)
163222 -{
163223 - switch (state) {
163224 - case PM_HIBERNATION_PREPARE:
163225 - pause_graph_tracing();
163226 - break;
163227 -
163228 - case PM_POST_HIBERNATION:
163229 - unpause_graph_tracing();
163230 - break;
163231 - }
163232 - return NOTIFY_DONE;
163233 -}
163234 -
163235 int register_ftrace_graph(trace_func_graph_ret_t retfunc,
163236 trace_func_graph_ent_t entryfunc)
163237 {
163238 @@ -2082,9 +2050,6 @@
163239
163240 mutex_lock(&ftrace_sysctl_lock);
163241
163242 - ftrace_suspend_notifier.notifier_call = ftrace_suspend_notifier_call;
163243 - register_pm_notifier(&ftrace_suspend_notifier);
163244 -
163245 atomic_inc(&ftrace_graph_active);
163246 ret = start_graph_tracing();
163247 if (ret) {
163248 @@ -2110,7 +2075,6 @@
163249 ftrace_graph_return = (trace_func_graph_ret_t)ftrace_stub;
163250 ftrace_graph_entry = ftrace_graph_entry_stub;
163251 ftrace_shutdown(FTRACE_STOP_FUNC_RET);
163252 - unregister_pm_notifier(&ftrace_suspend_notifier);
163253
163254 mutex_unlock(&ftrace_sysctl_lock);
163255 }
163256 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/Kconfig linux-2.6.29-rc3.owrt/kernel/trace/Kconfig
163257 --- linux-2.6.29.owrt/kernel/trace/Kconfig 2009-05-10 22:04:41.000000000 +0200
163258 +++ linux-2.6.29-rc3.owrt/kernel/trace/Kconfig 2009-05-10 23:48:29.000000000 +0200
163259 @@ -52,7 +52,6 @@
163260 depends on HAVE_FUNCTION_TRACER
163261 depends on DEBUG_KERNEL
163262 select FRAME_POINTER
163263 - select KALLSYMS
163264 select TRACING
163265 select CONTEXT_SWITCH_TRACER
163266 help
163267 @@ -239,7 +238,6 @@
163268 depends on DEBUG_KERNEL
163269 select FUNCTION_TRACER
163270 select STACKTRACE
163271 - select KALLSYMS
163272 help
163273 This special tracer records the maximum stack footprint of the
163274 kernel and displays it in debugfs/tracing/stack_trace.
163275 @@ -304,27 +302,4 @@
163276 functioning properly. It will do tests on all the configured
163277 tracers of ftrace.
163278
163279 -config MMIOTRACE
163280 - bool "Memory mapped IO tracing"
163281 - depends on HAVE_MMIOTRACE_SUPPORT && DEBUG_KERNEL && PCI
163282 - select TRACING
163283 - help
163284 - Mmiotrace traces Memory Mapped I/O access and is meant for
163285 - debugging and reverse engineering. It is called from the ioremap
163286 - implementation and works via page faults. Tracing is disabled by
163287 - default and can be enabled at run-time.
163288 -
163289 - See Documentation/tracers/mmiotrace.txt.
163290 - If you are not helping to develop drivers, say N.
163291 -
163292 -config MMIOTRACE_TEST
163293 - tristate "Test module for mmiotrace"
163294 - depends on MMIOTRACE && m
163295 - help
163296 - This is a dumb module for testing mmiotrace. It is very dangerous
163297 - as it will write garbage to IO memory starting at a given address.
163298 - However, it should be safe to use on e.g. unused portion of VRAM.
163299 -
163300 - Say N, unless you absolutely know what you are doing.
163301 -
163302 endmenu
163303 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/ring_buffer.c linux-2.6.29-rc3.owrt/kernel/trace/ring_buffer.c
163304 --- linux-2.6.29.owrt/kernel/trace/ring_buffer.c 2009-05-10 22:04:41.000000000 +0200
163305 +++ linux-2.6.29-rc3.owrt/kernel/trace/ring_buffer.c 2009-05-10 23:48:29.000000000 +0200
163306 @@ -246,7 +246,7 @@
163307 return 0;
163308 }
163309
163310 -#define BUF_PAGE_SIZE (PAGE_SIZE - offsetof(struct buffer_data_page, data))
163311 +#define BUF_PAGE_SIZE (PAGE_SIZE - sizeof(struct buffer_data_page))
163312
163313 /*
163314 * head_page == tail_page && head == tail then buffer is empty.
163315 @@ -1025,8 +1025,12 @@
163316 }
163317
163318 if (next_page == head_page) {
163319 - if (!(buffer->flags & RB_FL_OVERWRITE))
163320 + if (!(buffer->flags & RB_FL_OVERWRITE)) {
163321 + /* reset write */
163322 + if (tail <= BUF_PAGE_SIZE)
163323 + local_set(&tail_page->write, tail);
163324 goto out_unlock;
163325 + }
163326
163327 /* tail_page has not moved yet? */
163328 if (tail_page == cpu_buffer->tail_page) {
163329 @@ -1101,10 +1105,6 @@
163330 return event;
163331
163332 out_unlock:
163333 - /* reset write */
163334 - if (tail <= BUF_PAGE_SIZE)
163335 - local_set(&tail_page->write, tail);
163336 -
163337 __raw_spin_unlock(&cpu_buffer->lock);
163338 local_irq_restore(flags);
163339 return NULL;
163340 @@ -2174,9 +2174,6 @@
163341
163342 cpu_buffer->overrun = 0;
163343 cpu_buffer->entries = 0;
163344 -
163345 - cpu_buffer->write_stamp = 0;
163346 - cpu_buffer->read_stamp = 0;
163347 }
163348
163349 /**
163350 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/trace.c linux-2.6.29-rc3.owrt/kernel/trace/trace.c
163351 --- linux-2.6.29.owrt/kernel/trace/trace.c 2009-05-10 22:04:41.000000000 +0200
163352 +++ linux-2.6.29-rc3.owrt/kernel/trace/trace.c 2009-05-10 23:48:29.000000000 +0200
163353 @@ -40,7 +40,7 @@
163354
163355 #define TRACE_BUFFER_FLAGS (RB_FL_OVERWRITE)
163356
163357 -unsigned long __read_mostly tracing_max_latency;
163358 +unsigned long __read_mostly tracing_max_latency = (cycle_t)ULONG_MAX;
163359 unsigned long __read_mostly tracing_thresh;
163360
163361 /*
163362 @@ -3736,7 +3736,7 @@
163363 * it if we decide to change what log level the ftrace dump
163364 * should be at.
163365 */
163366 -#define KERN_TRACE KERN_EMERG
163367 +#define KERN_TRACE KERN_INFO
163368
163369 static void
163370 trace_printk_seq(struct trace_seq *s)
163371 @@ -3770,7 +3770,6 @@
163372 dump_ran = 1;
163373
163374 /* No turning back! */
163375 - tracing_off();
163376 ftrace_kill();
163377
163378 for_each_tracing_cpu(cpu) {
163379 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/trace_irqsoff.c linux-2.6.29-rc3.owrt/kernel/trace/trace_irqsoff.c
163380 --- linux-2.6.29.owrt/kernel/trace/trace_irqsoff.c 2009-05-10 22:04:41.000000000 +0200
163381 +++ linux-2.6.29-rc3.owrt/kernel/trace/trace_irqsoff.c 2009-05-10 23:48:29.000000000 +0200
163382 @@ -380,7 +380,6 @@
163383
163384 static void __irqsoff_tracer_init(struct trace_array *tr)
163385 {
163386 - tracing_max_latency = 0;
163387 irqsoff_trace = tr;
163388 /* make sure that the tracer is visible */
163389 smp_wmb();
163390 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/trace_mmiotrace.c linux-2.6.29-rc3.owrt/kernel/trace/trace_mmiotrace.c
163391 --- linux-2.6.29.owrt/kernel/trace/trace_mmiotrace.c 2009-05-10 22:04:41.000000000 +0200
163392 +++ linux-2.6.29-rc3.owrt/kernel/trace/trace_mmiotrace.c 2009-05-10 23:48:29.000000000 +0200
163393 @@ -9,7 +9,6 @@
163394 #include <linux/kernel.h>
163395 #include <linux/mmiotrace.h>
163396 #include <linux/pci.h>
163397 -#include <asm/atomic.h>
163398
163399 #include "trace.h"
163400
163401 @@ -20,7 +19,6 @@
163402 static struct trace_array *mmio_trace_array;
163403 static bool overrun_detected;
163404 static unsigned long prev_overruns;
163405 -static atomic_t dropped_count;
163406
163407 static void mmio_reset_data(struct trace_array *tr)
163408 {
163409 @@ -123,11 +121,11 @@
163410
163411 static unsigned long count_overruns(struct trace_iterator *iter)
163412 {
163413 - unsigned long cnt = atomic_xchg(&dropped_count, 0);
163414 + unsigned long cnt = 0;
163415 unsigned long over = ring_buffer_overruns(iter->tr->buffer);
163416
163417 if (over > prev_overruns)
163418 - cnt += over - prev_overruns;
163419 + cnt = over - prev_overruns;
163420 prev_overruns = over;
163421 return cnt;
163422 }
163423 @@ -312,10 +310,8 @@
163424
163425 event = ring_buffer_lock_reserve(tr->buffer, sizeof(*entry),
163426 &irq_flags);
163427 - if (!event) {
163428 - atomic_inc(&dropped_count);
163429 + if (!event)
163430 return;
163431 - }
163432 entry = ring_buffer_event_data(event);
163433 tracing_generic_entry_update(&entry->ent, 0, preempt_count());
163434 entry->ent.type = TRACE_MMIO_RW;
163435 @@ -342,10 +338,8 @@
163436
163437 event = ring_buffer_lock_reserve(tr->buffer, sizeof(*entry),
163438 &irq_flags);
163439 - if (!event) {
163440 - atomic_inc(&dropped_count);
163441 + if (!event)
163442 return;
163443 - }
163444 entry = ring_buffer_event_data(event);
163445 tracing_generic_entry_update(&entry->ent, 0, preempt_count());
163446 entry->ent.type = TRACE_MMIO_MAP;
163447 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/trace_sched_wakeup.c linux-2.6.29-rc3.owrt/kernel/trace/trace_sched_wakeup.c
163448 --- linux-2.6.29.owrt/kernel/trace/trace_sched_wakeup.c 2009-05-10 22:04:41.000000000 +0200
163449 +++ linux-2.6.29-rc3.owrt/kernel/trace/trace_sched_wakeup.c 2009-05-10 23:48:29.000000000 +0200
163450 @@ -333,7 +333,6 @@
163451
163452 static int wakeup_tracer_init(struct trace_array *tr)
163453 {
163454 - tracing_max_latency = 0;
163455 wakeup_trace = tr;
163456 start_wakeup_tracer(tr);
163457 return 0;
163458 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/trace/trace_selftest.c linux-2.6.29-rc3.owrt/kernel/trace/trace_selftest.c
163459 --- linux-2.6.29.owrt/kernel/trace/trace_selftest.c 2009-05-10 22:04:41.000000000 +0200
163460 +++ linux-2.6.29-rc3.owrt/kernel/trace/trace_selftest.c 2009-05-10 23:48:29.000000000 +0200
163461 @@ -23,20 +23,10 @@
163462 {
163463 struct ring_buffer_event *event;
163464 struct trace_entry *entry;
163465 - unsigned int loops = 0;
163466
163467 while ((event = ring_buffer_consume(tr->buffer, cpu, NULL))) {
163468 entry = ring_buffer_event_data(event);
163469
163470 - /*
163471 - * The ring buffer is a size of trace_buf_size, if
163472 - * we loop more than the size, there's something wrong
163473 - * with the ring buffer.
163474 - */
163475 - if (loops++ > trace_buf_size) {
163476 - printk(KERN_CONT ".. bad ring buffer ");
163477 - goto failed;
163478 - }
163479 if (!trace_valid_entry(entry)) {
163480 printk(KERN_CONT ".. invalid entry %d ",
163481 entry->type);
163482 @@ -67,20 +57,11 @@
163483
163484 cnt = ring_buffer_entries(tr->buffer);
163485
163486 - /*
163487 - * The trace_test_buffer_cpu runs a while loop to consume all data.
163488 - * If the calling tracer is broken, and is constantly filling
163489 - * the buffer, this will run forever, and hard lock the box.
163490 - * We disable the ring buffer while we do this test to prevent
163491 - * a hard lock up.
163492 - */
163493 - tracing_off();
163494 for_each_possible_cpu(cpu) {
163495 ret = trace_test_buffer_cpu(tr, cpu);
163496 if (ret)
163497 break;
163498 }
163499 - tracing_on();
163500 __raw_spin_unlock(&ftrace_max_lock);
163501 local_irq_restore(flags);
163502
163503 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/tsacct.c linux-2.6.29-rc3.owrt/kernel/tsacct.c
163504 --- linux-2.6.29.owrt/kernel/tsacct.c 2009-05-10 22:04:41.000000000 +0200
163505 +++ linux-2.6.29-rc3.owrt/kernel/tsacct.c 2009-05-10 23:48:29.000000000 +0200
163506 @@ -122,10 +122,8 @@
163507 if (likely(tsk->mm)) {
163508 cputime_t time, dtime;
163509 struct timeval value;
163510 - unsigned long flags;
163511 u64 delta;
163512
163513 - local_irq_save(flags);
163514 time = tsk->stime + tsk->utime;
163515 dtime = cputime_sub(time, tsk->acct_timexpd);
163516 jiffies_to_timeval(cputime_to_jiffies(dtime), &value);
163517 @@ -133,12 +131,10 @@
163518 delta = delta * USEC_PER_SEC + value.tv_usec;
163519
163520 if (delta == 0)
163521 - goto out;
163522 + return;
163523 tsk->acct_timexpd = time;
163524 tsk->acct_rss_mem1 += delta * get_mm_rss(tsk->mm);
163525 tsk->acct_vm_mem1 += delta * tsk->mm->total_vm;
163526 - out:
163527 - local_irq_restore(flags);
163528 }
163529 }
163530
163531 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/user.c linux-2.6.29-rc3.owrt/kernel/user.c
163532 --- linux-2.6.29.owrt/kernel/user.c 2009-05-10 22:04:41.000000000 +0200
163533 +++ linux-2.6.29-rc3.owrt/kernel/user.c 2009-05-10 23:48:29.000000000 +0200
163534 @@ -72,7 +72,6 @@
163535 static void uid_hash_remove(struct user_struct *up)
163536 {
163537 hlist_del_init(&up->uidhash_node);
163538 - put_user_ns(up->user_ns);
163539 }
163540
163541 static struct user_struct *uid_hash_find(uid_t uid, struct hlist_head *hashent)
163542 @@ -286,12 +285,14 @@
163543 /* work function to remove sysfs directory for a user and free up
163544 * corresponding structures.
163545 */
163546 -static void cleanup_user_struct(struct work_struct *w)
163547 +static void remove_user_sysfs_dir(struct work_struct *w)
163548 {
163549 struct user_struct *up = container_of(w, struct user_struct, work);
163550 unsigned long flags;
163551 int remove_user = 0;
163552
163553 + if (up->user_ns != &init_user_ns)
163554 + return;
163555 /* Make uid_hash_remove() + sysfs_remove_file() + kobject_del()
163556 * atomic.
163557 */
163558 @@ -310,11 +311,9 @@
163559 if (!remove_user)
163560 goto done;
163561
163562 - if (up->user_ns == &init_user_ns) {
163563 - kobject_uevent(&up->kobj, KOBJ_REMOVE);
163564 - kobject_del(&up->kobj);
163565 - kobject_put(&up->kobj);
163566 - }
163567 + kobject_uevent(&up->kobj, KOBJ_REMOVE);
163568 + kobject_del(&up->kobj);
163569 + kobject_put(&up->kobj);
163570
163571 sched_destroy_user(up);
163572 key_put(up->uid_keyring);
163573 @@ -335,7 +334,8 @@
163574 atomic_inc(&up->__count);
163575 spin_unlock_irqrestore(&uidhash_lock, flags);
163576
163577 - INIT_WORK(&up->work, cleanup_user_struct);
163578 + put_user_ns(up->user_ns);
163579 + INIT_WORK(&up->work, remove_user_sysfs_dir);
163580 schedule_work(&up->work);
163581 }
163582
163583 @@ -357,29 +357,12 @@
163584 sched_destroy_user(up);
163585 key_put(up->uid_keyring);
163586 key_put(up->session_keyring);
163587 + put_user_ns(up->user_ns);
163588 kmem_cache_free(uid_cachep, up);
163589 }
163590
163591 #endif
163592
163593 -#if defined(CONFIG_RT_GROUP_SCHED) && defined(CONFIG_USER_SCHED)
163594 -/*
163595 - * We need to check if a setuid can take place. This function should be called
163596 - * before successfully completing the setuid.
163597 - */
163598 -int task_can_switch_user(struct user_struct *up, struct task_struct *tsk)
163599 -{
163600 -
163601 - return sched_rt_can_attach(up->tg, tsk);
163602 -
163603 -}
163604 -#else
163605 -int task_can_switch_user(struct user_struct *up, struct task_struct *tsk)
163606 -{
163607 - return 1;
163608 -}
163609 -#endif
163610 -
163611 /*
163612 * Locate the user_struct for the passed UID. If found, take a ref on it. The
163613 * caller must undo that ref with free_uid().
163614 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/user_namespace.c linux-2.6.29-rc3.owrt/kernel/user_namespace.c
163615 --- linux-2.6.29.owrt/kernel/user_namespace.c 2009-05-10 22:04:41.000000000 +0200
163616 +++ linux-2.6.29-rc3.owrt/kernel/user_namespace.c 2009-05-10 23:48:29.000000000 +0200
163617 @@ -60,25 +60,12 @@
163618 return 0;
163619 }
163620
163621 -/*
163622 - * Deferred destructor for a user namespace. This is required because
163623 - * free_user_ns() may be called with uidhash_lock held, but we need to call
163624 - * back to free_uid() which will want to take the lock again.
163625 - */
163626 -static void free_user_ns_work(struct work_struct *work)
163627 -{
163628 - struct user_namespace *ns =
163629 - container_of(work, struct user_namespace, destroyer);
163630 - free_uid(ns->creator);
163631 - kfree(ns);
163632 -}
163633 -
163634 void free_user_ns(struct kref *kref)
163635 {
163636 - struct user_namespace *ns =
163637 - container_of(kref, struct user_namespace, kref);
163638 + struct user_namespace *ns;
163639
163640 - INIT_WORK(&ns->destroyer, free_user_ns_work);
163641 - schedule_work(&ns->destroyer);
163642 + ns = container_of(kref, struct user_namespace, kref);
163643 + free_uid(ns->creator);
163644 + kfree(ns);
163645 }
163646 EXPORT_SYMBOL(free_user_ns);
163647 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/kernel/wait.c linux-2.6.29-rc3.owrt/kernel/wait.c
163648 --- linux-2.6.29.owrt/kernel/wait.c 2009-05-10 22:04:41.000000000 +0200
163649 +++ linux-2.6.29-rc3.owrt/kernel/wait.c 2009-05-10 23:48:29.000000000 +0200
163650 @@ -91,15 +91,6 @@
163651 }
163652 EXPORT_SYMBOL(prepare_to_wait_exclusive);
163653
163654 -/*
163655 - * finish_wait - clean up after waiting in a queue
163656 - * @q: waitqueue waited on
163657 - * @wait: wait descriptor
163658 - *
163659 - * Sets current thread back to running state and removes
163660 - * the wait descriptor from the given waitqueue if still
163661 - * queued.
163662 - */
163663 void finish_wait(wait_queue_head_t *q, wait_queue_t *wait)
163664 {
163665 unsigned long flags;
163666 @@ -126,39 +117,6 @@
163667 }
163668 EXPORT_SYMBOL(finish_wait);
163669
163670 -/*
163671 - * abort_exclusive_wait - abort exclusive waiting in a queue
163672 - * @q: waitqueue waited on
163673 - * @wait: wait descriptor
163674 - * @state: runstate of the waiter to be woken
163675 - * @key: key to identify a wait bit queue or %NULL
163676 - *
163677 - * Sets current thread back to running state and removes
163678 - * the wait descriptor from the given waitqueue if still
163679 - * queued.
163680 - *
163681 - * Wakes up the next waiter if the caller is concurrently
163682 - * woken up through the queue.
163683 - *
163684 - * This prevents waiter starvation where an exclusive waiter
163685 - * aborts and is woken up concurrently and noone wakes up
163686 - * the next waiter.
163687 - */
163688 -void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait,
163689 - unsigned int mode, void *key)
163690 -{
163691 - unsigned long flags;
163692 -
163693 - __set_current_state(TASK_RUNNING);
163694 - spin_lock_irqsave(&q->lock, flags);
163695 - if (!list_empty(&wait->task_list))
163696 - list_del_init(&wait->task_list);
163697 - else if (waitqueue_active(q))
163698 - __wake_up_common(q, mode, 1, 0, key);
163699 - spin_unlock_irqrestore(&q->lock, flags);
163700 -}
163701 -EXPORT_SYMBOL(abort_exclusive_wait);
163702 -
163703 int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key)
163704 {
163705 int ret = default_wake_function(wait, mode, sync, key);
163706 @@ -219,20 +177,17 @@
163707 __wait_on_bit_lock(wait_queue_head_t *wq, struct wait_bit_queue *q,
163708 int (*action)(void *), unsigned mode)
163709 {
163710 - do {
163711 - int ret;
163712 + int ret = 0;
163713
163714 + do {
163715 prepare_to_wait_exclusive(wq, &q->wait, mode);
163716 - if (!test_bit(q->key.bit_nr, q->key.flags))
163717 - continue;
163718 - ret = action(q->key.flags);
163719 - if (!ret)
163720 - continue;
163721 - abort_exclusive_wait(wq, &q->wait, mode, &q->key);
163722 - return ret;
163723 + if (test_bit(q->key.bit_nr, q->key.flags)) {
163724 + if ((ret = (*action)(q->key.flags)))
163725 + break;
163726 + }
163727 } while (test_and_set_bit(q->key.bit_nr, q->key.flags));
163728 finish_wait(wq, &q->wait);
163729 - return 0;
163730 + return ret;
163731 }
163732 EXPORT_SYMBOL(__wait_on_bit_lock);
163733
163734 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/lib/bitmap.c linux-2.6.29-rc3.owrt/lib/bitmap.c
163735 --- linux-2.6.29.owrt/lib/bitmap.c 2009-05-10 22:04:41.000000000 +0200
163736 +++ linux-2.6.29-rc3.owrt/lib/bitmap.c 2009-05-10 23:48:29.000000000 +0200
163737 @@ -948,15 +948,15 @@
163738 */
163739 int bitmap_find_free_region(unsigned long *bitmap, int bits, int order)
163740 {
163741 - int pos, end; /* scans bitmap by regions of size order */
163742 + int pos; /* scans bitmap by regions of size order */
163743
163744 - for (pos = 0 ; (end = pos + (1 << order)) <= bits; pos = end) {
163745 - if (!__reg_op(bitmap, pos, order, REG_OP_ISFREE))
163746 - continue;
163747 - __reg_op(bitmap, pos, order, REG_OP_ALLOC);
163748 - return pos;
163749 - }
163750 - return -ENOMEM;
163751 + for (pos = 0; pos < bits; pos += (1 << order))
163752 + if (__reg_op(bitmap, pos, order, REG_OP_ISFREE))
163753 + break;
163754 + if (pos == bits)
163755 + return -ENOMEM;
163756 + __reg_op(bitmap, pos, order, REG_OP_ALLOC);
163757 + return pos;
163758 }
163759 EXPORT_SYMBOL(bitmap_find_free_region);
163760
163761 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/lib/idr.c linux-2.6.29-rc3.owrt/lib/idr.c
163762 --- linux-2.6.29.owrt/lib/idr.c 2009-05-10 22:04:41.000000000 +0200
163763 +++ linux-2.6.29-rc3.owrt/lib/idr.c 2009-05-10 23:48:29.000000000 +0200
163764 @@ -449,7 +449,6 @@
163765
163766 n = idp->layers * IDR_BITS;
163767 p = idp->top;
163768 - rcu_assign_pointer(idp->top, NULL);
163769 max = 1 << n;
163770
163771 id = 0;
163772 @@ -468,6 +467,7 @@
163773 p = *--paa;
163774 }
163775 }
163776 + rcu_assign_pointer(idp->top, NULL);
163777 idp->layers = 0;
163778 }
163779 EXPORT_SYMBOL(idr_remove_all);
163780 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/lib/Kconfig.debug linux-2.6.29-rc3.owrt/lib/Kconfig.debug
163781 --- linux-2.6.29.owrt/lib/Kconfig.debug 2009-05-10 22:04:41.000000000 +0200
163782 +++ linux-2.6.29-rc3.owrt/lib/Kconfig.debug 2009-05-10 23:48:29.000000000 +0200
163783 @@ -838,7 +838,7 @@
163784
163785 If unsure, say N.
163786
163787 -config BUILD_DOCSRC
163788 +menuconfig BUILD_DOCSRC
163789 bool "Build targets in Documentation/ tree"
163790 depends on HEADERS_CHECK
163791 help
163792 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/lib/smp_processor_id.c linux-2.6.29-rc3.owrt/lib/smp_processor_id.c
163793 --- linux-2.6.29.owrt/lib/smp_processor_id.c 2009-05-10 22:04:41.000000000 +0200
163794 +++ linux-2.6.29-rc3.owrt/lib/smp_processor_id.c 2009-05-10 23:48:29.000000000 +0200
163795 @@ -22,7 +22,7 @@
163796 * Kernel threads bound to a single CPU can safely use
163797 * smp_processor_id():
163798 */
163799 - if (cpumask_equal(&current->cpus_allowed, cpumask_of(this_cpu)))
163800 + if (cpus_equal(current->cpus_allowed, cpumask_of_cpu(this_cpu)))
163801 goto out;
163802
163803 /*
163804 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/.mailmap linux-2.6.29-rc3.owrt/.mailmap
163805 --- linux-2.6.29.owrt/.mailmap 2009-05-10 22:04:41.000000000 +0200
163806 +++ linux-2.6.29-rc3.owrt/.mailmap 2009-05-10 23:48:29.000000000 +0200
163807 @@ -92,7 +92,6 @@
163808 Rui Saraiva <rmps@joel.ist.utl.pt>
163809 Sachin P Sant <ssant@in.ibm.com>
163810 Sam Ravnborg <sam@mars.ravnborg.org>
163811 -Sascha Hauer <s.hauer@pengutronix.de>
163812 S.Çağlar Onur <caglar@pardus.org.tr>
163813 Simon Kelley <simon@thekelleys.org.uk>
163814 Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
163815 @@ -101,7 +100,6 @@
163816 Thomas Graf <tgraf@suug.ch>
163817 Tony Luck <tony.luck@intel.com>
163818 Tsuneo Yoshioka <Tsuneo.Yoshioka@f-secure.com>
163819 -Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
163820 -Uwe Kleine-König <ukl@pengutronix.de>
163821 Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
163822 +Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
163823 Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
163824 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/MAINTAINERS linux-2.6.29-rc3.owrt/MAINTAINERS
163825 --- linux-2.6.29.owrt/MAINTAINERS 2009-05-10 22:04:39.000000000 +0200
163826 +++ linux-2.6.29-rc3.owrt/MAINTAINERS 2009-05-10 23:48:33.000000000 +0200
163827 @@ -692,13 +692,6 @@
163828 L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
163829 S: Maintained
163830
163831 -ARM/NUVOTON W90X900 ARM ARCHITECTURE
163832 -P: Wan ZongShun
163833 -M: mcuos.com@gmail.com
163834 -L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
163835 -W: http://www.mcuos.com
163836 -S: Maintained
163837 -
163838 ARPD SUPPORT
163839 P: Jonathan Layes
163840 L: netdev@vger.kernel.org
163841 @@ -918,7 +911,7 @@
163842 BLACKFIN ARCHITECTURE
163843 P: Bryan Wu
163844 M: cooloney@kernel.org
163845 -L: uclinux-dist-devel@blackfin.uclinux.org
163846 +L: uclinux-dist-devel@blackfin.uclinux.org (subscribers-only)
163847 W: http://blackfin.uclinux.org
163848 S: Supported
163849
163850 @@ -1028,14 +1021,6 @@
163851 W: http://bu3sch.de/btgpio.php
163852 S: Maintained
163853
163854 -BTRFS FILE SYSTEM
163855 -P: Chris Mason
163856 -M: chris.mason@oracle.com
163857 -L: linux-btrfs@vger.kernel.org
163858 -W: http://btrfs.wiki.kernel.org/
163859 -T: git kernel.org:/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
163860 -S: Maintained
163861 -
163862 BTTV VIDEO4LINUX DRIVER
163863 P: Mauro Carvalho Chehab
163864 M: mchehab@infradead.org
163865 @@ -1209,8 +1194,6 @@
163866 CONTROL GROUPS (CGROUPS)
163867 P: Paul Menage
163868 M: menage@google.com
163869 -P: Li Zefan
163870 -M: lizf@cn.fujitsu.com
163871 L: containers@lists.linux-foundation.org
163872 S: Maintained
163873
163874 @@ -1469,6 +1452,8 @@
163875 S: Supported
163876
163877 DOCUMENTATION (/Documentation directory)
163878 +P: Michael Kerrisk
163879 +M: mtk.manpages@gmail.com
163880 P: Randy Dunlap
163881 M: rdunlap@xenotime.net
163882 L: linux-doc@vger.kernel.org
163883 @@ -1910,10 +1895,10 @@
163884 S: Maintained
163885
163886 HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
163887 -P: Frank Seidel
163888 -M: frank@f-seidel.de
163889 -L: lm-sensors@lm-sensors.org
163890 -W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
163891 +P: Robert Love
163892 +M: rlove@rlove.org
163893 +M: linux-kernel@vger.kernel.org
163894 +W: http://www.kernel.org/pub/linux/kernel/people/rml/hdaps/
163895 S: Maintained
163896
163897 GSPCA FINEPIX SUBDRIVER
163898 @@ -2011,7 +1996,7 @@
163899
163900 HIBERNATION (aka Software Suspend, aka swsusp)
163901 P: Pavel Machek
163902 -M: pavel@ucw.cz
163903 +M: pavel@suse.cz
163904 P: Rafael J. Wysocki
163905 M: rjw@sisk.pl
163906 L: linux-pm@lists.linux-foundation.org
163907 @@ -2232,7 +2217,7 @@
163908 M: sean.hefty@intel.com
163909 P: Hal Rosenstock
163910 M: hal.rosenstock@gmail.com
163911 -L: general@lists.openfabrics.org (moderated for non-subscribers)
163912 +L: general@lists.openfabrics.org
163913 W: http://www.openib.org/
163914 T: git kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
163915 S: Supported
163916 @@ -2467,7 +2452,7 @@
163917
163918 ISDN SUBSYSTEM
163919 P: Karsten Keil
163920 -M: isdn@linux-pingi.de
163921 +M: kkeil@suse.de
163922 L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
163923 W: http://www.isdn4linux.de
163924 T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git
163925 @@ -2856,6 +2841,8 @@
163926 MAC80211
163927 P: Johannes Berg
163928 M: johannes@sipsolutions.net
163929 +P: Michael Wu
163930 +M: flamingice@sourmilk.net
163931 L: linux-wireless@vger.kernel.org
163932 W: http://linuxwireless.org/
163933 T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
163934 @@ -2882,7 +2869,7 @@
163935 M: mtk.manpages@gmail.com
163936 W: http://www.kernel.org/doc/man-pages
163937 L: linux-man@vger.kernel.org
163938 -S: Maintained
163939 +S: Supported
163940
163941 MARVELL LIBERTAS WIRELESS DRIVER
163942 P: Dan Williams
163943 @@ -3337,8 +3324,8 @@
163944 M: jeremy@xensource.com
163945 P: Chris Wright
163946 M: chrisw@sous-sol.org
163947 -P: Alok Kataria
163948 -M: akataria@vmware.com
163949 +P: Zachary Amsden
163950 +M: zach@vmware.com
163951 P: Rusty Russell
163952 M: rusty@rustcorp.com.au
163953 L: virtualization@lists.osdl.org
163954 @@ -3355,8 +3342,10 @@
163955 PARISC ARCHITECTURE
163956 P: Kyle McMartin
163957 M: kyle@mcmartin.ca
163958 -P: Helge Deller
163959 -M: deller@gmx.de
163960 +P: Matthew Wilcox
163961 +M: matthew@wil.cx
163962 +P: Grant Grundler
163963 +M: grundler@parisc-linux.org
163964 L: linux-parisc@vger.kernel.org
163965 W: http://www.parisc-linux.org/
163966 T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
163967 @@ -3547,12 +3536,6 @@
163968 PXA MMCI DRIVER
163969 S: Orphan
163970
163971 -PXA RTC DRIVER
163972 -P: Robert Jarzmik
163973 -M: robert.jarzmik@free.fr
163974 -L: rtc-linux@googlegroups.com
163975 -S: Maintained
163976 -
163977 QLOGIC QLA2XXX FC-SCSI DRIVER
163978 P: Andrew Vasquez
163979 M: linux-driver@qlogic.com
163980 @@ -3881,15 +3864,6 @@
163981 T: git kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
163982 S: Supported
163983
163984 -SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
163985 -P: Sathya Perla
163986 -M: sathyap@serverengines.com
163987 -P: Subbu Seetharaman
163988 -M: subbus@serverengines.com
163989 -L: netdev@vger.kernel.org
163990 -W: http://www.serverengines.com
163991 -S: Supported
163992 -
163993 SFC NETWORK DRIVER
163994 P: Steve Hodgson
163995 P: Ben Hutchings
163996 @@ -4189,7 +4163,7 @@
163997 P: Len Brown
163998 M: len.brown@intel.com
163999 P: Pavel Machek
164000 -M: pavel@ucw.cz
164001 +M: pavel@suse.cz
164002 P: Rafael J. Wysocki
164003 M: rjw@sisk.pl
164004 L: linux-pm@lists.linux-foundation.org
164005 @@ -4310,8 +4284,8 @@
164006 M: srajiv@linux.vnet.ibm.com
164007 W: http://tpmdd.sourceforge.net
164008 P: Marcel Selhorst
164009 -M: m.selhorst@sirrix.com
164010 -W: http://www.sirrix.com
164011 +M: tpm@selhorst.net
164012 +W: http://www.prosec.rub.de/tpm/
164013 L: tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
164014 S: Maintained
164015
164016 @@ -4874,7 +4848,6 @@
164017 M: mingo@redhat.com
164018 P: H. Peter Anvin
164019 M: hpa@zytor.com
164020 -M: x86@kernel.org
164021 L: linux-kernel@vger.kernel.org
164022 T: git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
164023 S: Maintained
164024 @@ -4941,11 +4914,11 @@
164025 S: Maintained
164026
164027 ZR36067 VIDEO FOR LINUX DRIVER
164028 +P: Ronald Bultje
164029 +M: rbultje@ronald.bitfreak.net
164030 L: mjpeg-users@lists.sourceforge.net
164031 -L: linux-media@vger.kernel.org
164032 W: http://mjpeg.sourceforge.net/driver-zoran/
164033 -T: Mercurial http://linuxtv.org/hg/v4l-dvb
164034 -S: Odd Fixes
164035 +S: Maintained
164036
164037 ZS DECSTATION Z85C30 SERIAL DRIVER
164038 P: Maciej W. Rozycki
164039 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/Makefile linux-2.6.29-rc3.owrt/Makefile
164040 --- linux-2.6.29.owrt/Makefile 2009-05-10 22:04:41.000000000 +0200
164041 +++ linux-2.6.29-rc3.owrt/Makefile 2009-05-10 23:48:33.000000000 +0200
164042 @@ -2,7 +2,7 @@
164043 PATCHLEVEL = 6
164044 SUBLEVEL = 29
164045 EXTRAVERSION =
164046 -NAME = Temporary Tasmanian Devil
164047 +NAME = Erotic Pickled Herring
164048
164049 # *DOCUMENTATION*
164050 # To see a list of typical targets execute "make help"
164051 @@ -389,7 +389,6 @@
164052 # output directory.
164053 outputmakefile:
164054 ifneq ($(KBUILD_SRC),)
164055 - $(Q)ln -fsn $(srctree) source
164056 $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
164057 $(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
164058 endif
164059 @@ -569,12 +568,6 @@
164060 # disable pointer signed / unsigned warnings in gcc 4.0
164061 KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
164062
164063 -# disable invalid "can't wrap" optimzations for signed / pointers
164064 -KBUILD_CFLAGS += $(call cc-option,-fwrapv)
164065 -
164066 -# revert to pre-gcc-4.4 behaviour of .eh_frame
164067 -KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
164068 -
164069 # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
164070 # But warn user when we do so
164071 warn-assign = \
164072 @@ -913,18 +906,12 @@
164073 # and if the SCM is know a tag from the SCM is appended.
164074 # The appended tag is determined by the SCM used.
164075 #
164076 -# .scmversion is used when generating rpm packages so we do not loose
164077 -# the version information from the SCM when we do the build of the kernel
164078 -# from the copied source
164079 +# Currently, only git is supported.
164080 +# Other SCMs can edit scripts/setlocalversion and add the appropriate
164081 +# checks as needed.
164082 ifdef CONFIG_LOCALVERSION_AUTO
164083 -
164084 -ifeq ($(wildcard .scmversion),)
164085 - _localver-auto = $(shell $(CONFIG_SHELL) \
164086 - $(srctree)/scripts/setlocalversion $(srctree))
164087 -else
164088 - _localver-auto = $(shell cat .scmversion 2> /dev/null)
164089 -endif
164090 -
164091 + _localver-auto = $(shell $(CONFIG_SHELL) \
164092 + $(srctree)/scripts/setlocalversion $(srctree))
164093 localver-auto = $(LOCALVERSION)$(_localver-auto)
164094 endif
164095
164096 @@ -962,6 +949,7 @@
164097 mkdir -p include2; \
164098 ln -fsn $(srctree)/include/asm-$(SRCARCH) include2/asm; \
164099 fi
164100 + ln -fsn $(srctree) source
164101 endif
164102
164103 # prepare2 creates a makefile if using a separate output directory
164104 @@ -1552,7 +1540,7 @@
164105 cmd_depmod = \
164106 if [ -r System.map -a -x $(DEPMOD) ]; then \
164107 $(DEPMOD) -ae -F System.map \
164108 - $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \
164109 + $(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r) \
164110 $(KERNELRELEASE); \
164111 fi
164112
164113 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/fremap.c linux-2.6.29-rc3.owrt/mm/fremap.c
164114 --- linux-2.6.29.owrt/mm/fremap.c 2009-05-10 22:04:39.000000000 +0200
164115 +++ linux-2.6.29-rc3.owrt/mm/fremap.c 2009-05-10 23:48:33.000000000 +0200
164116 @@ -198,7 +198,7 @@
164117 flags &= MAP_NONBLOCK;
164118 get_file(file);
164119 addr = mmap_region(file, start, size,
164120 - flags, vma->vm_flags, pgoff);
164121 + flags, vma->vm_flags, pgoff, 1);
164122 fput(file);
164123 if (IS_ERR_VALUE(addr)) {
164124 err = addr;
164125 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/hugetlb.c linux-2.6.29-rc3.owrt/mm/hugetlb.c
164126 --- linux-2.6.29.owrt/mm/hugetlb.c 2009-05-10 22:04:39.000000000 +0200
164127 +++ linux-2.6.29-rc3.owrt/mm/hugetlb.c 2009-05-10 23:48:33.000000000 +0200
164128 @@ -2269,18 +2269,12 @@
164129
164130 int hugetlb_reserve_pages(struct inode *inode,
164131 long from, long to,
164132 - struct vm_area_struct *vma,
164133 - int acctflag)
164134 + struct vm_area_struct *vma)
164135 {
164136 long ret, chg;
164137 struct hstate *h = hstate_inode(inode);
164138
164139 - /*
164140 - * Only apply hugepage reservation if asked. At fault time, an
164141 - * attempt will be made for VM_NORESERVE to allocate a page
164142 - * and filesystem quota without using reserves
164143 - */
164144 - if (acctflag & VM_NORESERVE)
164145 + if (vma && vma->vm_flags & VM_NORESERVE)
164146 return 0;
164147
164148 /*
164149 @@ -2305,31 +2299,13 @@
164150 if (chg < 0)
164151 return chg;
164152
164153 - /* There must be enough filesystem quota for the mapping */
164154 if (hugetlb_get_quota(inode->i_mapping, chg))
164155 return -ENOSPC;
164156 -
164157 - /*
164158 - * Check enough hugepages are available for the reservation.
164159 - * Hand back the quota if there are not
164160 - */
164161 ret = hugetlb_acct_memory(h, chg);
164162 if (ret < 0) {
164163 hugetlb_put_quota(inode->i_mapping, chg);
164164 return ret;
164165 }
164166 -
164167 - /*
164168 - * Account for the reservations made. Shared mappings record regions
164169 - * that have reservations as they are shared by multiple VMAs.
164170 - * When the last VMA disappears, the region map says how much
164171 - * the reservation was and the page cache tells how much of
164172 - * the reservation was consumed. Private mappings are per-VMA and
164173 - * only the consumed reservations are tracked. When the VMA
164174 - * disappears, the original reservation is the VMA size and the
164175 - * consumed reservations are stored in the map. Hence, nothing
164176 - * else has to be done for private mappings here
164177 - */
164178 if (!vma || vma->vm_flags & VM_SHARED)
164179 region_add(&inode->i_mapping->private_list, from, to);
164180 return 0;
164181 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/memcontrol.c linux-2.6.29-rc3.owrt/mm/memcontrol.c
164182 --- linux-2.6.29.owrt/mm/memcontrol.c 2009-05-10 22:04:39.000000000 +0200
164183 +++ linux-2.6.29-rc3.owrt/mm/memcontrol.c 2009-05-10 23:48:33.000000000 +0200
164184 @@ -202,7 +202,6 @@
164185
164186 static void mem_cgroup_get(struct mem_cgroup *mem);
164187 static void mem_cgroup_put(struct mem_cgroup *mem);
164188 -static struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *mem);
164189
164190 static void mem_cgroup_charge_statistics(struct mem_cgroup *mem,
164191 struct page_cgroup *pc,
164192 @@ -1685,7 +1684,7 @@
164193 /* This is for making all *used* pages to be on LRU. */
164194 lru_add_drain_all();
164195 ret = 0;
164196 - for_each_node_state(node, N_HIGH_MEMORY) {
164197 + for_each_node_state(node, N_POSSIBLE) {
164198 for (zid = 0; !ret && zid < MAX_NR_ZONES; zid++) {
164199 enum lru_list l;
164200 for_each_lru(l) {
164201 @@ -2194,23 +2193,10 @@
164202
164203 static void mem_cgroup_put(struct mem_cgroup *mem)
164204 {
164205 - if (atomic_dec_and_test(&mem->refcnt)) {
164206 - struct mem_cgroup *parent = parent_mem_cgroup(mem);
164207 + if (atomic_dec_and_test(&mem->refcnt))
164208 __mem_cgroup_free(mem);
164209 - if (parent)
164210 - mem_cgroup_put(parent);
164211 - }
164212 }
164213
164214 -/*
164215 - * Returns the parent mem_cgroup in memcgroup hierarchy with hierarchy enabled.
164216 - */
164217 -static struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *mem)
164218 -{
164219 - if (!mem->res.parent)
164220 - return NULL;
164221 - return mem_cgroup_from_res_counter(mem->res.parent, res);
164222 -}
164223
164224 #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP
164225 static void __init enable_swap_cgroup(void)
164226 @@ -2249,13 +2235,6 @@
164227 if (parent && parent->use_hierarchy) {
164228 res_counter_init(&mem->res, &parent->res);
164229 res_counter_init(&mem->memsw, &parent->memsw);
164230 - /*
164231 - * We increment refcnt of the parent to ensure that we can
164232 - * safely access it on res_counter_charge/uncharge.
164233 - * This refcnt will be decremented when freeing this
164234 - * mem_cgroup(see mem_cgroup_put).
164235 - */
164236 - mem_cgroup_get(parent);
164237 } else {
164238 res_counter_init(&mem->res, NULL);
164239 res_counter_init(&mem->memsw, NULL);
164240 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/memory.c linux-2.6.29-rc3.owrt/mm/memory.c
164241 --- linux-2.6.29.owrt/mm/memory.c 2009-05-10 22:04:39.000000000 +0200
164242 +++ linux-2.6.29-rc3.owrt/mm/memory.c 2009-05-10 23:48:33.000000000 +0200
164243 @@ -2000,7 +2000,7 @@
164244 * Don't let another task, with possibly unlocked vma,
164245 * keep the mlocked page.
164246 */
164247 - if ((vma->vm_flags & VM_LOCKED) && old_page) {
164248 + if (vma->vm_flags & VM_LOCKED) {
164249 lock_page(old_page); /* for LRU manipulation */
164250 clear_page_mlock(old_page);
164251 unlock_page(old_page);
164252 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/migrate.c linux-2.6.29-rc3.owrt/mm/migrate.c
164253 --- linux-2.6.29.owrt/mm/migrate.c 2009-05-10 22:04:39.000000000 +0200
164254 +++ linux-2.6.29-rc3.owrt/mm/migrate.c 2009-05-10 23:48:33.000000000 +0200
164255 @@ -1129,7 +1129,7 @@
164256 struct vm_area_struct *vma;
164257 int err = 0;
164258
164259 - for (vma = mm->mmap; vma && !err; vma = vma->vm_next) {
164260 + for(vma = mm->mmap; vma->vm_next && !err; vma = vma->vm_next) {
164261 if (vma->vm_ops && vma->vm_ops->migrate) {
164262 err = vma->vm_ops->migrate(vma, to, from, flags);
164263 if (err)
164264 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/mlock.c linux-2.6.29-rc3.owrt/mm/mlock.c
164265 --- linux-2.6.29.owrt/mm/mlock.c 2009-05-10 22:04:39.000000000 +0200
164266 +++ linux-2.6.29-rc3.owrt/mm/mlock.c 2009-05-10 23:48:33.000000000 +0200
164267 @@ -294,10 +294,14 @@
164268 *
164269 * return number of pages [> 0] to be removed from locked_vm on success
164270 * of "special" vmas.
164271 + *
164272 + * return negative error if vma spanning @start-@range disappears while
164273 + * mmap semaphore is dropped. Unlikely?
164274 */
164275 long mlock_vma_pages_range(struct vm_area_struct *vma,
164276 unsigned long start, unsigned long end)
164277 {
164278 + struct mm_struct *mm = vma->vm_mm;
164279 int nr_pages = (end - start) / PAGE_SIZE;
164280 BUG_ON(!(vma->vm_flags & VM_LOCKED));
164281
164282 @@ -310,11 +314,20 @@
164283 if (!((vma->vm_flags & (VM_DONTEXPAND | VM_RESERVED)) ||
164284 is_vm_hugetlb_page(vma) ||
164285 vma == get_gate_vma(current))) {
164286 + long error;
164287 + downgrade_write(&mm->mmap_sem);
164288
164289 - __mlock_vma_pages_range(vma, start, end, 1);
164290 + error = __mlock_vma_pages_range(vma, start, end, 1);
164291
164292 - /* Hide errors from mmap() and other callers */
164293 - return 0;
164294 + up_read(&mm->mmap_sem);
164295 + /* vma can change or disappear */
164296 + down_write(&mm->mmap_sem);
164297 + vma = find_vma(mm, start);
164298 + /* non-NULL vma must contain @start, but need to check @end */
164299 + if (!vma || end > vma->vm_end)
164300 + return -ENOMEM;
164301 +
164302 + return 0; /* hide other errors from mmap(), et al */
164303 }
164304
164305 /*
164306 @@ -425,14 +438,41 @@
164307 vma->vm_flags = newflags;
164308
164309 if (lock) {
164310 + /*
164311 + * mmap_sem is currently held for write. Downgrade the write
164312 + * lock to a read lock so that other faults, mmap scans, ...
164313 + * while we fault in all pages.
164314 + */
164315 + downgrade_write(&mm->mmap_sem);
164316 +
164317 ret = __mlock_vma_pages_range(vma, start, end, 1);
164318
164319 - if (ret > 0) {
164320 + /*
164321 + * Need to reacquire mmap sem in write mode, as our callers
164322 + * expect this. We have no support for atomically upgrading
164323 + * a sem to write, so we need to check for ranges while sem
164324 + * is unlocked.
164325 + */
164326 + up_read(&mm->mmap_sem);
164327 + /* vma can change or disappear */
164328 + down_write(&mm->mmap_sem);
164329 + *prev = find_vma(mm, start);
164330 + /* non-NULL *prev must contain @start, but need to check @end */
164331 + if (!(*prev) || end > (*prev)->vm_end)
164332 + ret = -ENOMEM;
164333 + else if (ret > 0) {
164334 mm->locked_vm -= ret;
164335 ret = 0;
164336 } else
164337 ret = __mlock_posix_error_return(ret); /* translate if needed */
164338 } else {
164339 + /*
164340 + * TODO: for unlocking, pages will already be resident, so
164341 + * we don't need to wait for allocations/reclaim/pagein, ...
164342 + * However, unlocking a very large region can still take a
164343 + * while. Should we downgrade the semaphore for both lock
164344 + * AND unlock ?
164345 + */
164346 __mlock_vma_pages_range(vma, start, end, 0);
164347 }
164348
164349 @@ -660,7 +700,7 @@
164350 return buffer;
164351 }
164352
164353 -void release_locked_buffer(void *buffer, size_t size)
164354 +void free_locked_buffer(void *buffer, size_t size)
164355 {
164356 unsigned long pgsz = PAGE_ALIGN(size) >> PAGE_SHIFT;
164357
164358 @@ -670,11 +710,6 @@
164359 current->mm->locked_vm -= pgsz;
164360
164361 up_write(&current->mm->mmap_sem);
164362 -}
164363 -
164364 -void free_locked_buffer(void *buffer, size_t size)
164365 -{
164366 - release_locked_buffer(buffer, size);
164367
164368 kfree(buffer);
164369 }
164370 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/mmap.c linux-2.6.29-rc3.owrt/mm/mmap.c
164371 --- linux-2.6.29.owrt/mm/mmap.c 2009-05-10 22:04:39.000000000 +0200
164372 +++ linux-2.6.29-rc3.owrt/mm/mmap.c 2009-05-10 23:48:33.000000000 +0200
164373 @@ -658,9 +658,6 @@
164374 validate_mm(mm);
164375 }
164376
164377 -/* Flags that can be inherited from an existing mapping when merging */
164378 -#define VM_MERGEABLE_FLAGS (VM_CAN_NONLINEAR)
164379 -
164380 /*
164381 * If the vma has a ->close operation then the driver probably needs to release
164382 * per-vma resources, so we don't attempt to merge those.
164383 @@ -668,7 +665,7 @@
164384 static inline int is_mergeable_vma(struct vm_area_struct *vma,
164385 struct file *file, unsigned long vm_flags)
164386 {
164387 - if ((vma->vm_flags ^ vm_flags) & ~VM_MERGEABLE_FLAGS)
164388 + if (vma->vm_flags != vm_flags)
164389 return 0;
164390 if (vma->vm_file != file)
164391 return 0;
164392 @@ -918,6 +915,7 @@
164393 struct inode *inode;
164394 unsigned int vm_flags;
164395 int error;
164396 + int accountable = 1;
164397 unsigned long reqprot = prot;
164398
164399 /*
164400 @@ -1018,6 +1016,8 @@
164401 return -EPERM;
164402 vm_flags &= ~VM_MAYEXEC;
164403 }
164404 + if (is_file_hugepages(file))
164405 + accountable = 0;
164406
164407 if (!file->f_op || !file->f_op->mmap)
164408 return -ENODEV;
164409 @@ -1050,7 +1050,8 @@
164410 if (error)
164411 return error;
164412
164413 - return mmap_region(file, addr, len, flags, vm_flags, pgoff);
164414 + return mmap_region(file, addr, len, flags, vm_flags, pgoff,
164415 + accountable);
164416 }
164417 EXPORT_SYMBOL(do_mmap_pgoff);
164418
164419 @@ -1086,25 +1087,10 @@
164420 mapping_cap_account_dirty(vma->vm_file->f_mapping);
164421 }
164422
164423 -/*
164424 - * We account for memory if it's a private writeable mapping,
164425 - * not hugepages and VM_NORESERVE wasn't set.
164426 - */
164427 -static inline int accountable_mapping(struct file *file, unsigned int vm_flags)
164428 -{
164429 - /*
164430 - * hugetlb has its own accounting separate from the core VM
164431 - * VM_HUGETLB may not be set yet so we cannot check for that flag.
164432 - */
164433 - if (file && is_file_hugepages(file))
164434 - return 0;
164435 -
164436 - return (vm_flags & (VM_NORESERVE | VM_SHARED | VM_WRITE)) == VM_WRITE;
164437 -}
164438 -
164439 unsigned long mmap_region(struct file *file, unsigned long addr,
164440 unsigned long len, unsigned long flags,
164441 - unsigned int vm_flags, unsigned long pgoff)
164442 + unsigned int vm_flags, unsigned long pgoff,
164443 + int accountable)
164444 {
164445 struct mm_struct *mm = current->mm;
164446 struct vm_area_struct *vma, *prev;
164447 @@ -1128,38 +1114,38 @@
164448 if (!may_expand_vm(mm, len >> PAGE_SHIFT))
164449 return -ENOMEM;
164450
164451 - /*
164452 - * Set 'VM_NORESERVE' if we should not account for the
164453 - * memory use of this mapping.
164454 - */
164455 - if ((flags & MAP_NORESERVE)) {
164456 - /* We honor MAP_NORESERVE if allowed to overcommit */
164457 - if (sysctl_overcommit_memory != OVERCOMMIT_NEVER)
164458 - vm_flags |= VM_NORESERVE;
164459 + if (flags & MAP_NORESERVE)
164460 + vm_flags |= VM_NORESERVE;
164461
164462 - /* hugetlb applies strict overcommit unless MAP_NORESERVE */
164463 - if (file && is_file_hugepages(file))
164464 - vm_flags |= VM_NORESERVE;
164465 + if (accountable && (!(flags & MAP_NORESERVE) ||
164466 + sysctl_overcommit_memory == OVERCOMMIT_NEVER)) {
164467 + if (vm_flags & VM_SHARED) {
164468 + /* Check memory availability in shmem_file_setup? */
164469 + vm_flags |= VM_ACCOUNT;
164470 + } else if (vm_flags & VM_WRITE) {
164471 + /*
164472 + * Private writable mapping: check memory availability
164473 + */
164474 + charged = len >> PAGE_SHIFT;
164475 + if (security_vm_enough_memory(charged))
164476 + return -ENOMEM;
164477 + vm_flags |= VM_ACCOUNT;
164478 + }
164479 }
164480
164481 /*
164482 - * Private writable mapping: check memory availability
164483 + * Can we just expand an old private anonymous mapping?
164484 + * The VM_SHARED test is necessary because shmem_zero_setup
164485 + * will create the file object for a shared anonymous map below.
164486 */
164487 - if (accountable_mapping(file, vm_flags)) {
164488 - charged = len >> PAGE_SHIFT;
164489 - if (security_vm_enough_memory(charged))
164490 - return -ENOMEM;
164491 - vm_flags |= VM_ACCOUNT;
164492 + if (!file && !(vm_flags & VM_SHARED)) {
164493 + vma = vma_merge(mm, prev, addr, addr + len, vm_flags,
164494 + NULL, NULL, pgoff, NULL);
164495 + if (vma)
164496 + goto out;
164497 }
164498
164499 /*
164500 - * Can we just expand an old mapping?
164501 - */
164502 - vma = vma_merge(mm, prev, addr, addr + len, vm_flags, NULL, file, pgoff, NULL);
164503 - if (vma)
164504 - goto out;
164505 -
164506 - /*
164507 * Determine the object being mapped and call the appropriate
164508 * specific mapper. the address has already been validated, but
164509 * not unmapped, but the maps are removed from the list.
164510 @@ -1200,6 +1186,14 @@
164511 goto free_vma;
164512 }
164513
164514 + /* We set VM_ACCOUNT in a shared mapping's vm_flags, to inform
164515 + * shmem_zero_setup (perhaps called through /dev/zero's ->mmap)
164516 + * that memory reservation must be checked; but that reservation
164517 + * belongs to shared memory object, not to vma: so now clear it.
164518 + */
164519 + if ((vm_flags & (VM_SHARED|VM_ACCOUNT)) == (VM_SHARED|VM_ACCOUNT))
164520 + vma->vm_flags &= ~VM_ACCOUNT;
164521 +
164522 /* Can addr have changed??
164523 *
164524 * Answer: Yes, several device drivers can do it in their
164525 @@ -1212,8 +1206,17 @@
164526 if (vma_wants_writenotify(vma))
164527 vma->vm_page_prot = vm_get_page_prot(vm_flags & ~VM_SHARED);
164528
164529 - vma_link(mm, vma, prev, rb_link, rb_parent);
164530 - file = vma->vm_file;
164531 + if (file && vma_merge(mm, prev, addr, vma->vm_end,
164532 + vma->vm_flags, NULL, file, pgoff, vma_policy(vma))) {
164533 + mpol_put(vma_policy(vma));
164534 + kmem_cache_free(vm_area_cachep, vma);
164535 + fput(file);
164536 + if (vm_flags & VM_EXECUTABLE)
164537 + removed_exe_file_vma(mm);
164538 + } else {
164539 + vma_link(mm, vma, prev, rb_link, rb_parent);
164540 + file = vma->vm_file;
164541 + }
164542
164543 /* Once vma denies write, undo our temporary denial count */
164544 if (correct_wcount)
164545 @@ -2084,8 +2087,12 @@
164546 unsigned long end;
164547
164548 /* mm's last user has gone, and its about to be pulled down */
164549 + arch_exit_mmap(mm);
164550 mmu_notifier_release(mm);
164551
164552 + if (!mm->mmap) /* Can happen if dup_mmap() received an OOM */
164553 + return;
164554 +
164555 if (mm->locked_vm) {
164556 vma = mm->mmap;
164557 while (vma) {
164558 @@ -2094,13 +2101,7 @@
164559 vma = vma->vm_next;
164560 }
164561 }
164562 -
164563 - arch_exit_mmap(mm);
164564 -
164565 vma = mm->mmap;
164566 - if (!vma) /* Can happen if dup_mmap() received an OOM */
164567 - return;
164568 -
164569 lru_add_drain();
164570 flush_cache_mm(mm);
164571 tlb = tlb_gather_mmu(mm, 1);
164572 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/mprotect.c linux-2.6.29-rc3.owrt/mm/mprotect.c
164573 --- linux-2.6.29.owrt/mm/mprotect.c 2009-05-10 22:04:39.000000000 +0200
164574 +++ linux-2.6.29-rc3.owrt/mm/mprotect.c 2009-05-10 23:48:33.000000000 +0200
164575 @@ -151,11 +151,10 @@
164576 /*
164577 * If we make a private mapping writable we increase our commit;
164578 * but (without finer accounting) cannot reduce our commit if we
164579 - * make it unwritable again. hugetlb mapping were accounted for
164580 - * even if read-only so there is no need to account for them here
164581 + * make it unwritable again.
164582 */
164583 if (newflags & VM_WRITE) {
164584 - if (!(oldflags & (VM_ACCOUNT|VM_WRITE|VM_HUGETLB|
164585 + if (!(oldflags & (VM_ACCOUNT|VM_WRITE|
164586 VM_SHARED|VM_NORESERVE))) {
164587 charged = nrpages;
164588 if (security_vm_enough_memory(charged))
164589 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/page_alloc.c linux-2.6.29-rc3.owrt/mm/page_alloc.c
164590 --- linux-2.6.29.owrt/mm/page_alloc.c 2009-05-10 22:04:39.000000000 +0200
164591 +++ linux-2.6.29-rc3.owrt/mm/page_alloc.c 2009-05-10 23:48:33.000000000 +0200
164592 @@ -2989,7 +2989,7 @@
164593 * was used and there are no special requirements, this is a convenient
164594 * alternative
164595 */
164596 -int __meminit __early_pfn_to_nid(unsigned long pfn)
164597 +int __meminit early_pfn_to_nid(unsigned long pfn)
164598 {
164599 int i;
164600
164601 @@ -3000,33 +3000,10 @@
164602 if (start_pfn <= pfn && pfn < end_pfn)
164603 return early_node_map[i].nid;
164604 }
164605 - /* This is a memory hole */
164606 - return -1;
164607 -}
164608 -#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
164609 -
164610 -int __meminit early_pfn_to_nid(unsigned long pfn)
164611 -{
164612 - int nid;
164613
164614 - nid = __early_pfn_to_nid(pfn);
164615 - if (nid >= 0)
164616 - return nid;
164617 - /* just returns 0 */
164618 return 0;
164619 }
164620 -
164621 -#ifdef CONFIG_NODES_SPAN_OTHER_NODES
164622 -bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
164623 -{
164624 - int nid;
164625 -
164626 - nid = __early_pfn_to_nid(pfn);
164627 - if (nid >= 0 && nid != node)
164628 - return false;
164629 - return true;
164630 -}
164631 -#endif
164632 +#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
164633
164634 /* Basic iterator support to walk early_node_map[] */
164635 #define for_each_active_range_index_in_nid(i, nid) \
164636 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/page_cgroup.c linux-2.6.29-rc3.owrt/mm/page_cgroup.c
164637 --- linux-2.6.29.owrt/mm/page_cgroup.c 2009-05-10 22:04:39.000000000 +0200
164638 +++ linux-2.6.29-rc3.owrt/mm/page_cgroup.c 2009-05-10 23:48:33.000000000 +0200
164639 @@ -114,8 +114,7 @@
164640 nid = page_to_nid(pfn_to_page(pfn));
164641 table_size = sizeof(struct page_cgroup) * PAGES_PER_SECTION;
164642 if (slab_is_available()) {
164643 - base = kmalloc_node(table_size,
164644 - GFP_KERNEL | __GFP_NOWARN, nid);
164645 + base = kmalloc_node(table_size, GFP_KERNEL, nid);
164646 if (!base)
164647 base = vmalloc_node(table_size, nid);
164648 } else {
164649 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/page_io.c linux-2.6.29-rc3.owrt/mm/page_io.c
164650 --- linux-2.6.29.owrt/mm/page_io.c 2009-05-10 22:04:39.000000000 +0200
164651 +++ linux-2.6.29-rc3.owrt/mm/page_io.c 2009-05-10 23:48:33.000000000 +0200
164652 @@ -111,7 +111,7 @@
164653 goto out;
164654 }
164655 if (wbc->sync_mode == WB_SYNC_ALL)
164656 - rw |= (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG);
164657 + rw |= (1 << BIO_RW_SYNC);
164658 count_vm_event(PSWPOUT);
164659 set_page_writeback(page);
164660 unlock_page(page);
164661 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/page-writeback.c linux-2.6.29-rc3.owrt/mm/page-writeback.c
164662 --- linux-2.6.29.owrt/mm/page-writeback.c 2009-05-10 22:04:39.000000000 +0200
164663 +++ linux-2.6.29-rc3.owrt/mm/page-writeback.c 2009-05-10 23:48:33.000000000 +0200
164664 @@ -209,7 +209,7 @@
164665 struct file *filp, void __user *buffer, size_t *lenp,
164666 loff_t *ppos)
164667 {
164668 - unsigned long old_bytes = vm_dirty_bytes;
164669 + int old_bytes = vm_dirty_bytes;
164670 int ret;
164671
164672 ret = proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos);
164673 @@ -240,7 +240,7 @@
164674 }
164675 EXPORT_SYMBOL_GPL(bdi_writeout_inc);
164676
164677 -void task_dirty_inc(struct task_struct *tsk)
164678 +static inline void task_dirty_inc(struct task_struct *tsk)
164679 {
164680 prop_inc_single(&vm_dirties, &tsk->dirties);
164681 }
164682 @@ -1051,25 +1051,13 @@
164683 }
164684 }
164685
164686 - if (nr_to_write > 0) {
164687 - nr_to_write--;
164688 - if (nr_to_write == 0 &&
164689 - wbc->sync_mode == WB_SYNC_NONE) {
164690 - /*
164691 - * We stop writing back only if we are
164692 - * not doing integrity sync. In case of
164693 - * integrity sync we have to keep going
164694 - * because someone may be concurrently
164695 - * dirtying pages, and we might have
164696 - * synced a lot of newly appeared dirty
164697 - * pages, but have not synced all of the
164698 - * old dirty pages.
164699 - */
164700 + if (wbc->sync_mode == WB_SYNC_NONE) {
164701 + wbc->nr_to_write--;
164702 + if (wbc->nr_to_write <= 0) {
164703 done = 1;
164704 break;
164705 }
164706 }
164707 -
164708 if (wbc->nonblocking && bdi_write_congested(bdi)) {
164709 wbc->encountered_congestion = 1;
164710 done = 1;
164711 @@ -1079,7 +1067,7 @@
164712 pagevec_release(&pvec);
164713 cond_resched();
164714 }
164715 - if (!cycled && !done) {
164716 + if (!cycled) {
164717 /*
164718 * range_cyclic:
164719 * We hit the last page and there is more work to be done: wrap
164720 @@ -1230,7 +1218,6 @@
164721 __inc_zone_page_state(page, NR_FILE_DIRTY);
164722 __inc_bdi_stat(mapping->backing_dev_info,
164723 BDI_RECLAIMABLE);
164724 - task_dirty_inc(current);
164725 task_io_account_write(PAGE_CACHE_SIZE);
164726 }
164727 radix_tree_tag_set(&mapping->page_tree,
164728 @@ -1263,7 +1250,7 @@
164729 * If the mapping doesn't provide a set_page_dirty a_op, then
164730 * just fall through and assume that it wants buffer_heads.
164731 */
164732 -int set_page_dirty(struct page *page)
164733 +static int __set_page_dirty(struct page *page)
164734 {
164735 struct address_space *mapping = page_mapping(page);
164736
164737 @@ -1281,6 +1268,14 @@
164738 }
164739 return 0;
164740 }
164741 +
164742 +int set_page_dirty(struct page *page)
164743 +{
164744 + int ret = __set_page_dirty(page);
164745 + if (ret)
164746 + task_dirty_inc(current);
164747 + return ret;
164748 +}
164749 EXPORT_SYMBOL(set_page_dirty);
164750
164751 /*
164752 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/rmap.c linux-2.6.29-rc3.owrt/mm/rmap.c
164753 --- linux-2.6.29.owrt/mm/rmap.c 2009-05-10 22:04:39.000000000 +0200
164754 +++ linux-2.6.29-rc3.owrt/mm/rmap.c 2009-05-10 23:48:33.000000000 +0200
164755 @@ -1072,8 +1072,7 @@
164756 spin_lock(&mapping->i_mmap_lock);
164757 vma_prio_tree_foreach(vma, &iter, &mapping->i_mmap, pgoff, pgoff) {
164758 if (MLOCK_PAGES && unlikely(unlock)) {
164759 - if (!((vma->vm_flags & VM_LOCKED) &&
164760 - page_mapped_in_vma(page, vma)))
164761 + if (!(vma->vm_flags & VM_LOCKED))
164762 continue; /* must visit all vmas */
164763 ret = SWAP_MLOCK;
164764 } else {
164765 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/shmem.c linux-2.6.29-rc3.owrt/mm/shmem.c
164766 --- linux-2.6.29.owrt/mm/shmem.c 2009-05-10 22:04:39.000000000 +0200
164767 +++ linux-2.6.29-rc3.owrt/mm/shmem.c 2009-05-10 23:48:33.000000000 +0200
164768 @@ -169,13 +169,13 @@
164769 */
164770 static inline int shmem_acct_size(unsigned long flags, loff_t size)
164771 {
164772 - return (flags & VM_NORESERVE) ?
164773 - 0 : security_vm_enough_memory_kern(VM_ACCT(size));
164774 + return (flags & VM_ACCOUNT) ?
164775 + security_vm_enough_memory_kern(VM_ACCT(size)) : 0;
164776 }
164777
164778 static inline void shmem_unacct_size(unsigned long flags, loff_t size)
164779 {
164780 - if (!(flags & VM_NORESERVE))
164781 + if (flags & VM_ACCOUNT)
164782 vm_unacct_memory(VM_ACCT(size));
164783 }
164784
164785 @@ -187,13 +187,13 @@
164786 */
164787 static inline int shmem_acct_block(unsigned long flags)
164788 {
164789 - return (flags & VM_NORESERVE) ?
164790 - security_vm_enough_memory_kern(VM_ACCT(PAGE_CACHE_SIZE)) : 0;
164791 + return (flags & VM_ACCOUNT) ?
164792 + 0 : security_vm_enough_memory_kern(VM_ACCT(PAGE_CACHE_SIZE));
164793 }
164794
164795 static inline void shmem_unacct_blocks(unsigned long flags, long pages)
164796 {
164797 - if (flags & VM_NORESERVE)
164798 + if (!(flags & VM_ACCOUNT))
164799 vm_unacct_memory(pages * VM_ACCT(PAGE_CACHE_SIZE));
164800 }
164801
164802 @@ -1515,8 +1515,8 @@
164803 return 0;
164804 }
164805
164806 -static struct inode *shmem_get_inode(struct super_block *sb, int mode,
164807 - dev_t dev, unsigned long flags)
164808 +static struct inode *
164809 +shmem_get_inode(struct super_block *sb, int mode, dev_t dev)
164810 {
164811 struct inode *inode;
164812 struct shmem_inode_info *info;
164813 @@ -1537,7 +1537,6 @@
164814 info = SHMEM_I(inode);
164815 memset(info, 0, (char *)inode - (char *)info);
164816 spin_lock_init(&info->lock);
164817 - info->flags = flags & VM_NORESERVE;
164818 INIT_LIST_HEAD(&info->swaplist);
164819
164820 switch (mode & S_IFMT) {
164821 @@ -1780,10 +1779,9 @@
164822 static int
164823 shmem_mknod(struct inode *dir, struct dentry *dentry, int mode, dev_t dev)
164824 {
164825 - struct inode *inode;
164826 + struct inode *inode = shmem_get_inode(dir->i_sb, mode, dev);
164827 int error = -ENOSPC;
164828
164829 - inode = shmem_get_inode(dir->i_sb, mode, dev, VM_NORESERVE);
164830 if (inode) {
164831 error = security_inode_init_security(inode, dir, NULL, NULL,
164832 NULL);
164833 @@ -1922,7 +1920,7 @@
164834 if (len > PAGE_CACHE_SIZE)
164835 return -ENAMETOOLONG;
164836
164837 - inode = shmem_get_inode(dir->i_sb, S_IFLNK|S_IRWXUGO, 0, VM_NORESERVE);
164838 + inode = shmem_get_inode(dir->i_sb, S_IFLNK|S_IRWXUGO, 0);
164839 if (!inode)
164840 return -ENOSPC;
164841
164842 @@ -2334,7 +2332,7 @@
164843 sb->s_flags |= MS_POSIXACL;
164844 #endif
164845
164846 - inode = shmem_get_inode(sb, S_IFDIR | sbinfo->mode, 0, VM_NORESERVE);
164847 + inode = shmem_get_inode(sb, S_IFDIR | sbinfo->mode, 0);
164848 if (!inode)
164849 goto failed;
164850 inode->i_uid = sbinfo->uid;
164851 @@ -2576,12 +2574,12 @@
164852 return 0;
164853 }
164854
164855 -#define shmem_vm_ops generic_file_vm_ops
164856 -#define shmem_file_operations ramfs_file_operations
164857 -#define shmem_get_inode(sb, mode, dev, flags) ramfs_get_inode(sb, mode, dev)
164858 -#define shmem_acct_size(flags, size) 0
164859 -#define shmem_unacct_size(flags, size) do {} while (0)
164860 -#define SHMEM_MAX_BYTES LLONG_MAX
164861 +#define shmem_file_operations ramfs_file_operations
164862 +#define shmem_vm_ops generic_file_vm_ops
164863 +#define shmem_get_inode ramfs_get_inode
164864 +#define shmem_acct_size(a, b) 0
164865 +#define shmem_unacct_size(a, b) do {} while (0)
164866 +#define SHMEM_MAX_BYTES LLONG_MAX
164867
164868 #endif /* CONFIG_SHMEM */
164869
164870 @@ -2600,7 +2598,7 @@
164871 * shmem_file_setup - get an unlinked file living in tmpfs
164872 * @name: name for dentry (to be seen in /proc/<pid>/maps
164873 * @size: size to be set for the file
164874 - * @flags: VM_NORESERVE suppresses pre-accounting of the entire object size
164875 + * @flags: vm_flags
164876 */
164877 struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags)
164878 {
164879 @@ -2634,10 +2632,13 @@
164880 goto put_dentry;
164881
164882 error = -ENOSPC;
164883 - inode = shmem_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0, flags);
164884 + inode = shmem_get_inode(root->d_sb, S_IFREG | S_IRWXUGO, 0);
164885 if (!inode)
164886 goto close_file;
164887
164888 +#ifdef CONFIG_SHMEM
164889 + SHMEM_I(inode)->flags = flags & VM_ACCOUNT;
164890 +#endif
164891 d_instantiate(dentry, inode);
164892 inode->i_size = size;
164893 inode->i_nlink = 0; /* It is unlinked */
164894 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/slab.c linux-2.6.29-rc3.owrt/mm/slab.c
164895 --- linux-2.6.29.owrt/mm/slab.c 2009-05-10 22:04:39.000000000 +0200
164896 +++ linux-2.6.29-rc3.owrt/mm/slab.c 2009-05-10 23:48:33.000000000 +0200
164897 @@ -4457,4 +4457,3 @@
164898
164899 return obj_size(virt_to_cache(objp));
164900 }
164901 -EXPORT_SYMBOL(ksize);
164902 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/slob.c linux-2.6.29-rc3.owrt/mm/slob.c
164903 --- linux-2.6.29.owrt/mm/slob.c 2009-05-10 22:04:39.000000000 +0200
164904 +++ linux-2.6.29-rc3.owrt/mm/slob.c 2009-05-10 23:48:33.000000000 +0200
164905 @@ -521,7 +521,6 @@
164906 } else
164907 return sp->page.private;
164908 }
164909 -EXPORT_SYMBOL(ksize);
164910
164911 struct kmem_cache {
164912 unsigned int size, align;
164913 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/slub.c linux-2.6.29-rc3.owrt/mm/slub.c
164914 --- linux-2.6.29.owrt/mm/slub.c 2009-05-10 22:04:39.000000000 +0200
164915 +++ linux-2.6.29-rc3.owrt/mm/slub.c 2009-05-10 23:48:33.000000000 +0200
164916 @@ -1996,7 +1996,7 @@
164917 static void free_kmem_cache_cpu(struct kmem_cache_cpu *c, int cpu)
164918 {
164919 if (c < per_cpu(kmem_cache_cpu, cpu) ||
164920 - c >= per_cpu(kmem_cache_cpu, cpu) + NR_KMEM_CACHE_CPU) {
164921 + c > per_cpu(kmem_cache_cpu, cpu) + NR_KMEM_CACHE_CPU) {
164922 kfree(c);
164923 return;
164924 }
164925 @@ -2736,7 +2736,6 @@
164926 */
164927 return s->size;
164928 }
164929 -EXPORT_SYMBOL(ksize);
164930
164931 void kfree(const void *x)
164932 {
164933 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/swapfile.c linux-2.6.29-rc3.owrt/mm/swapfile.c
164934 --- linux-2.6.29.owrt/mm/swapfile.c 2009-05-10 22:04:39.000000000 +0200
164935 +++ linux-2.6.29-rc3.owrt/mm/swapfile.c 2009-05-10 23:48:33.000000000 +0200
164936 @@ -635,7 +635,7 @@
164937
164938 if (!bdev) {
164939 if (bdev_p)
164940 - *bdev_p = bdget(sis->bdev->bd_dev);
164941 + *bdev_p = sis->bdev;
164942
164943 spin_unlock(&swap_lock);
164944 return i;
164945 @@ -647,7 +647,7 @@
164946 struct swap_extent, list);
164947 if (se->start_block == offset) {
164948 if (bdev_p)
164949 - *bdev_p = bdget(sis->bdev->bd_dev);
164950 + *bdev_p = sis->bdev;
164951
164952 spin_unlock(&swap_lock);
164953 bdput(bdev);
164954 @@ -698,10 +698,8 @@
164955 pte_t *pte;
164956 int ret = 1;
164957
164958 - if (mem_cgroup_try_charge_swapin(vma->vm_mm, page, GFP_KERNEL, &ptr)) {
164959 + if (mem_cgroup_try_charge_swapin(vma->vm_mm, page, GFP_KERNEL, &ptr))
164960 ret = -ENOMEM;
164961 - goto out_nolock;
164962 - }
164963
164964 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
164965 if (unlikely(!pte_same(*pte, swp_entry_to_pte(entry)))) {
164966 @@ -725,7 +723,6 @@
164967 activate_page(page);
164968 out:
164969 pte_unmap_unlock(pte, ptl);
164970 -out_nolock:
164971 return ret;
164972 }
164973
164974 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/util.c linux-2.6.29-rc3.owrt/mm/util.c
164975 --- linux-2.6.29.owrt/mm/util.c 2009-05-10 22:04:39.000000000 +0200
164976 +++ linux-2.6.29-rc3.owrt/mm/util.c 2009-05-10 23:48:33.000000000 +0200
164977 @@ -129,26 +129,6 @@
164978 }
164979 EXPORT_SYMBOL(krealloc);
164980
164981 -/**
164982 - * kzfree - like kfree but zero memory
164983 - * @p: object to free memory of
164984 - *
164985 - * The memory of the object @p points to is zeroed before freed.
164986 - * If @p is %NULL, kzfree() does nothing.
164987 - */
164988 -void kzfree(const void *p)
164989 -{
164990 - size_t ks;
164991 - void *mem = (void *)p;
164992 -
164993 - if (unlikely(ZERO_OR_NULL_PTR(mem)))
164994 - return;
164995 - ks = ksize(mem);
164996 - memset(mem, 0, ks);
164997 - kfree(mem);
164998 -}
164999 -EXPORT_SYMBOL(kzfree);
165000 -
165001 /*
165002 * strndup_user - duplicate an existing string from user space
165003 * @s: The string to duplicate
165004 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/vmalloc.c linux-2.6.29-rc3.owrt/mm/vmalloc.c
165005 --- linux-2.6.29.owrt/mm/vmalloc.c 2009-05-10 22:04:39.000000000 +0200
165006 +++ linux-2.6.29-rc3.owrt/mm/vmalloc.c 2009-05-10 23:48:33.000000000 +0200
165007 @@ -323,7 +323,6 @@
165008 unsigned long addr;
165009 int purged = 0;
165010
165011 - BUG_ON(!size);
165012 BUG_ON(size & ~PAGE_MASK);
165013
165014 va = kmalloc_node(sizeof(struct vmap_area),
165015 @@ -335,9 +334,6 @@
165016 addr = ALIGN(vstart, align);
165017
165018 spin_lock(&vmap_area_lock);
165019 - if (addr + size - 1 < addr)
165020 - goto overflow;
165021 -
165022 /* XXX: could have a last_hole cache */
165023 n = vmap_area_root.rb_node;
165024 if (n) {
165025 @@ -369,8 +365,6 @@
165026
165027 while (addr + size > first->va_start && addr + size <= vend) {
165028 addr = ALIGN(first->va_end + PAGE_SIZE, align);
165029 - if (addr + size - 1 < addr)
165030 - goto overflow;
165031
165032 n = rb_next(&first->rb_node);
165033 if (n)
165034 @@ -381,7 +375,6 @@
165035 }
165036 found:
165037 if (addr + size > vend) {
165038 -overflow:
165039 spin_unlock(&vmap_area_lock);
165040 if (!purged) {
165041 purge_vmap_area_lazy();
165042 @@ -505,7 +498,6 @@
165043 static DEFINE_SPINLOCK(purge_lock);
165044 LIST_HEAD(valist);
165045 struct vmap_area *va;
165046 - struct vmap_area *n_va;
165047 int nr = 0;
165048
165049 /*
165050 @@ -545,7 +537,7 @@
165051
165052 if (nr) {
165053 spin_lock(&vmap_area_lock);
165054 - list_for_each_entry_safe(va, n_va, &valist, purge_list)
165055 + list_for_each_entry(va, &valist, purge_list)
165056 __free_vmap_area(va);
165057 spin_unlock(&vmap_area_lock);
165058 }
165059 @@ -1020,8 +1012,6 @@
165060 void unmap_kernel_range(unsigned long addr, unsigned long size)
165061 {
165062 unsigned long end = addr + size;
165063 -
165064 - flush_cache_vunmap(addr, end);
165065 vunmap_page_range(addr, end);
165066 flush_tlb_kernel_range(addr, end);
165067 }
165068 @@ -1117,14 +1107,6 @@
165069 }
165070 EXPORT_SYMBOL_GPL(__get_vm_area);
165071
165072 -struct vm_struct *__get_vm_area_caller(unsigned long size, unsigned long flags,
165073 - unsigned long start, unsigned long end,
165074 - void *caller)
165075 -{
165076 - return __get_vm_area_node(size, flags, start, end, -1, GFP_KERNEL,
165077 - caller);
165078 -}
165079 -
165080 /**
165081 * get_vm_area - reserve a contiguous kernel virtual area
165082 * @size: size of the area
165083 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/mm/vmscan.c linux-2.6.29-rc3.owrt/mm/vmscan.c
165084 --- linux-2.6.29.owrt/mm/vmscan.c 2009-05-10 22:04:39.000000000 +0200
165085 +++ linux-2.6.29-rc3.owrt/mm/vmscan.c 2009-05-10 23:48:33.000000000 +0200
165086 @@ -1262,6 +1262,7 @@
165087 * Move the pages to the [file or anon] inactive list.
165088 */
165089 pagevec_init(&pvec, 1);
165090 + pgmoved = 0;
165091 lru = LRU_BASE + file * LRU_FILE;
165092
165093 spin_lock_irq(&zone->lru_lock);
165094 @@ -1273,7 +1274,6 @@
165095 */
165096 reclaim_stat->recent_rotated[!!file] += pgmoved;
165097
165098 - pgmoved = 0;
165099 while (!list_empty(&l_inactive)) {
165100 page = lru_to_page(&l_inactive);
165101 prefetchw_prev_lru_page(page, &l_inactive, flags);
165102 @@ -1469,7 +1469,7 @@
165103 int file = is_file_lru(l);
165104 int scan;
165105
165106 - scan = zone_nr_pages(zone, sc, l);
165107 + scan = zone_page_state(zone, NR_LRU_BASE + l);
165108 if (priority) {
165109 scan >>= priority;
165110 scan = (scan * percent[file]) / 100;
165111 @@ -2057,31 +2057,31 @@
165112 int pass, struct scan_control *sc)
165113 {
165114 struct zone *zone;
165115 - unsigned long ret = 0;
165116 + unsigned long nr_to_scan, ret = 0;
165117 + enum lru_list l;
165118
165119 for_each_zone(zone) {
165120 - enum lru_list l;
165121
165122 if (!populated_zone(zone))
165123 continue;
165124 +
165125 if (zone_is_all_unreclaimable(zone) && prio != DEF_PRIORITY)
165126 continue;
165127
165128 for_each_evictable_lru(l) {
165129 - enum zone_stat_item ls = NR_LRU_BASE + l;
165130 - unsigned long lru_pages = zone_page_state(zone, ls);
165131 -
165132 /* For pass = 0, we don't shrink the active list */
165133 - if (pass == 0 && (l == LRU_ACTIVE_ANON ||
165134 - l == LRU_ACTIVE_FILE))
165135 + if (pass == 0 &&
165136 + (l == LRU_ACTIVE || l == LRU_ACTIVE_FILE))
165137 continue;
165138
165139 - zone->lru[l].nr_scan += (lru_pages >> prio) + 1;
165140 + zone->lru[l].nr_scan +=
165141 + (zone_page_state(zone, NR_LRU_BASE + l)
165142 + >> prio) + 1;
165143 if (zone->lru[l].nr_scan >= nr_pages || pass > 3) {
165144 - unsigned long nr_to_scan;
165145 -
165146 zone->lru[l].nr_scan = 0;
165147 - nr_to_scan = min(nr_pages, lru_pages);
165148 + nr_to_scan = min(nr_pages,
165149 + zone_page_state(zone,
165150 + NR_LRU_BASE + l));
165151 ret += shrink_list(l, nr_to_scan, zone,
165152 sc, prio);
165153 if (ret >= nr_pages)
165154 @@ -2089,6 +2089,7 @@
165155 }
165156 }
165157 }
165158 +
165159 return ret;
165160 }
165161
165162 @@ -2111,6 +2112,7 @@
165163 .may_swap = 0,
165164 .swap_cluster_max = nr_pages,
165165 .may_writepage = 1,
165166 + .swappiness = vm_swappiness,
165167 .isolate_pages = isolate_pages_global,
165168 };
165169
165170 @@ -2144,8 +2146,10 @@
165171 int prio;
165172
165173 /* Force reclaiming mapped pages in the passes #3 and #4 */
165174 - if (pass > 2)
165175 + if (pass > 2) {
165176 sc.may_swap = 1;
165177 + sc.swappiness = 100;
165178 + }
165179
165180 for (prio = DEF_PRIORITY; prio >= 0; prio--) {
165181 unsigned long nr_to_scan = nr_pages - ret;
165182 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/802/tr.c linux-2.6.29-rc3.owrt/net/802/tr.c
165183 --- linux-2.6.29.owrt/net/802/tr.c 2009-05-10 22:04:39.000000000 +0200
165184 +++ linux-2.6.29-rc3.owrt/net/802/tr.c 2009-05-10 23:48:33.000000000 +0200
165185 @@ -668,5 +668,3 @@
165186
165187 EXPORT_SYMBOL(tr_type_trans);
165188 EXPORT_SYMBOL(alloc_trdev);
165189 -
165190 -MODULE_LICENSE("GPL");
165191 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/8021q/vlan_core.c linux-2.6.29-rc3.owrt/net/8021q/vlan_core.c
165192 --- linux-2.6.29.owrt/net/8021q/vlan_core.c 2009-05-10 22:04:39.000000000 +0200
165193 +++ linux-2.6.29-rc3.owrt/net/8021q/vlan_core.c 2009-05-10 23:48:33.000000000 +0200
165194 @@ -1,16 +1,12 @@
165195 #include <linux/skbuff.h>
165196 #include <linux/netdevice.h>
165197 #include <linux/if_vlan.h>
165198 -#include <linux/netpoll.h>
165199 #include "vlan.h"
165200
165201 /* VLAN rx hw acceleration helper. This acts like netif_{rx,receive_skb}(). */
165202 int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
165203 u16 vlan_tci, int polling)
165204 {
165205 - if (netpoll_rx(skb))
165206 - return NET_RX_DROP;
165207 -
165208 if (skb_bond_should_drop(skb))
165209 goto drop;
165210
165211 @@ -104,9 +100,6 @@
165212 {
165213 int err = NET_RX_SUCCESS;
165214
165215 - if (netpoll_receive_skb(skb))
165216 - return NET_RX_DROP;
165217 -
165218 switch (vlan_gro_common(napi, grp, vlan_tci, skb)) {
165219 case -1:
165220 return netif_receive_skb(skb);
165221 @@ -133,9 +126,6 @@
165222 if (!skb)
165223 goto out;
165224
165225 - if (netpoll_receive_skb(skb))
165226 - goto out;
165227 -
165228 err = NET_RX_SUCCESS;
165229
165230 switch (vlan_gro_common(napi, grp, vlan_tci, skb)) {
165231 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/8021q/vlan_dev.c linux-2.6.29-rc3.owrt/net/8021q/vlan_dev.c
165232 --- linux-2.6.29.owrt/net/8021q/vlan_dev.c 2009-05-10 22:04:39.000000000 +0200
165233 +++ linux-2.6.29-rc3.owrt/net/8021q/vlan_dev.c 2009-05-10 23:48:33.000000000 +0200
165234 @@ -553,7 +553,7 @@
165235 int err = 0;
165236
165237 if (netif_device_present(real_dev) && ops->ndo_neigh_setup)
165238 - err = ops->ndo_neigh_setup(real_dev, pa);
165239 + err = ops->ndo_neigh_setup(dev, pa);
165240
165241 return err;
165242 }
165243 @@ -639,7 +639,6 @@
165244 dev->hard_header_len = real_dev->hard_header_len + VLAN_HLEN;
165245 dev->netdev_ops = &vlan_netdev_ops;
165246 }
165247 - netdev_resync_ops(dev);
165248
165249 if (is_vlan_dev(real_dev))
165250 subclass = 1;
165251 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/9p/protocol.c linux-2.6.29-rc3.owrt/net/9p/protocol.c
165252 --- linux-2.6.29.owrt/net/9p/protocol.c 2009-05-10 22:04:39.000000000 +0200
165253 +++ linux-2.6.29-rc3.owrt/net/9p/protocol.c 2009-05-10 23:48:33.000000000 +0200
165254 @@ -29,7 +29,6 @@
165255 #include <linux/errno.h>
165256 #include <linux/uaccess.h>
165257 #include <linux/sched.h>
165258 -#include <linux/types.h>
165259 #include <net/9p/9p.h>
165260 #include <net/9p/client.h>
165261 #include "protocol.h"
165262 @@ -161,32 +160,29 @@
165263 break;
165264 case 'w':{
165265 int16_t *val = va_arg(ap, int16_t *);
165266 - __le16 le_val;
165267 - if (pdu_read(pdu, &le_val, sizeof(le_val))) {
165268 + if (pdu_read(pdu, val, sizeof(*val))) {
165269 errcode = -EFAULT;
165270 break;
165271 }
165272 - *val = le16_to_cpu(le_val);
165273 + *val = cpu_to_le16(*val);
165274 }
165275 break;
165276 case 'd':{
165277 int32_t *val = va_arg(ap, int32_t *);
165278 - __le32 le_val;
165279 - if (pdu_read(pdu, &le_val, sizeof(le_val))) {
165280 + if (pdu_read(pdu, val, sizeof(*val))) {
165281 errcode = -EFAULT;
165282 break;
165283 }
165284 - *val = le32_to_cpu(le_val);
165285 + *val = cpu_to_le32(*val);
165286 }
165287 break;
165288 case 'q':{
165289 int64_t *val = va_arg(ap, int64_t *);
165290 - __le64 le_val;
165291 - if (pdu_read(pdu, &le_val, sizeof(le_val))) {
165292 + if (pdu_read(pdu, val, sizeof(*val))) {
165293 errcode = -EFAULT;
165294 break;
165295 }
165296 - *val = le64_to_cpu(le_val);
165297 + *val = cpu_to_le64(*val);
165298 }
165299 break;
165300 case 's':{
165301 @@ -366,19 +362,19 @@
165302 }
165303 break;
165304 case 'w':{
165305 - __le16 val = cpu_to_le16(va_arg(ap, int));
165306 + int16_t val = va_arg(ap, int);
165307 if (pdu_write(pdu, &val, sizeof(val)))
165308 errcode = -EFAULT;
165309 }
165310 break;
165311 case 'd':{
165312 - __le32 val = cpu_to_le32(va_arg(ap, int32_t));
165313 + int32_t val = va_arg(ap, int32_t);
165314 if (pdu_write(pdu, &val, sizeof(val)))
165315 errcode = -EFAULT;
165316 }
165317 break;
165318 case 'q':{
165319 - __le64 val = cpu_to_le64(va_arg(ap, int64_t));
165320 + int64_t val = va_arg(ap, int64_t);
165321 if (pdu_write(pdu, &val, sizeof(val)))
165322 errcode = -EFAULT;
165323 }
165324 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/bridge/br_forward.c linux-2.6.29-rc3.owrt/net/bridge/br_forward.c
165325 --- linux-2.6.29.owrt/net/bridge/br_forward.c 2009-05-10 22:04:39.000000000 +0200
165326 +++ linux-2.6.29-rc3.owrt/net/bridge/br_forward.c 2009-05-10 23:48:33.000000000 +0200
165327 @@ -67,11 +67,6 @@
165328 {
165329 struct net_device *indev;
165330
165331 - if (skb_warn_if_lro(skb)) {
165332 - kfree_skb(skb);
165333 - return;
165334 - }
165335 -
165336 indev = skb->dev;
165337 skb->dev = to->dev;
165338 skb_forward_csum(skb);
165339 @@ -94,7 +89,7 @@
165340 /* called with rcu_read_lock */
165341 void br_forward(const struct net_bridge_port *to, struct sk_buff *skb)
165342 {
165343 - if (should_deliver(to, skb)) {
165344 + if (!skb_warn_if_lro(skb) && should_deliver(to, skb)) {
165345 __br_forward(to, skb);
165346 return;
165347 }
165348 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/core/dev.c linux-2.6.29-rc3.owrt/net/core/dev.c
165349 --- linux-2.6.29.owrt/net/core/dev.c 2009-05-10 22:04:39.000000000 +0200
165350 +++ linux-2.6.29-rc3.owrt/net/core/dev.c 2009-05-10 23:48:33.000000000 +0200
165351 @@ -1093,7 +1093,7 @@
165352 /*
165353 * Enable NET_DMA
165354 */
165355 - net_dmaengine_get();
165356 + dmaengine_get();
165357
165358 /*
165359 * Initialize multicasting status
165360 @@ -1175,7 +1175,7 @@
165361 /*
165362 * Shutdown NET_DMA
165363 */
165364 - net_dmaengine_put();
165365 + dmaengine_put();
165366
165367 return 0;
165368 }
165369 @@ -2274,6 +2274,12 @@
165370
165371 rcu_read_lock();
165372
165373 + /* Don't receive packets in an exiting network namespace */
165374 + if (!net_alive(dev_net(skb->dev))) {
165375 + kfree_skb(skb);
165376 + goto out;
165377 + }
165378 +
165379 #ifdef CONFIG_NET_CLS_ACT
165380 if (skb->tc_verd & TC_NCLS) {
165381 skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
165382 @@ -2489,9 +2495,6 @@
165383
165384 int napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
165385 {
165386 - if (netpoll_receive_skb(skb))
165387 - return NET_RX_DROP;
165388 -
165389 switch (__napi_gro_receive(napi, skb)) {
165390 case -1:
165391 return netif_receive_skb(skb);
165392 @@ -2562,9 +2565,6 @@
165393 if (!skb)
165394 goto out;
165395
165396 - if (netpoll_receive_skb(skb))
165397 - goto out;
165398 -
165399 err = NET_RX_SUCCESS;
165400
165401 switch (__napi_gro_receive(napi, skb)) {
165402 @@ -2595,9 +2595,9 @@
165403 local_irq_disable();
165404 skb = __skb_dequeue(&queue->input_pkt_queue);
165405 if (!skb) {
165406 + __napi_complete(napi);
165407 local_irq_enable();
165408 - napi_complete(napi);
165409 - goto out;
165410 + break;
165411 }
165412 local_irq_enable();
165413
165414 @@ -2606,7 +2606,6 @@
165415
165416 napi_gro_flush(napi);
165417
165418 -out:
165419 return work;
165420 }
165421
165422 @@ -2679,7 +2678,7 @@
165423 struct sk_buff *skb, *next;
165424
165425 list_del_init(&napi->dev_list);
165426 - kfree_skb(napi->skb);
165427 + kfree(napi->skb);
165428
165429 for (skb = napi->gro_list; skb; skb = next) {
165430 next = skb->next;
165431 @@ -4290,39 +4289,6 @@
165432 }
165433 EXPORT_SYMBOL(netdev_fix_features);
165434
165435 -/* Some devices need to (re-)set their netdev_ops inside
165436 - * ->init() or similar. If that happens, we have to setup
165437 - * the compat pointers again.
165438 - */
165439 -void netdev_resync_ops(struct net_device *dev)
165440 -{
165441 -#ifdef CONFIG_COMPAT_NET_DEV_OPS
165442 - const struct net_device_ops *ops = dev->netdev_ops;
165443 -
165444 - dev->init = ops->ndo_init;
165445 - dev->uninit = ops->ndo_uninit;
165446 - dev->open = ops->ndo_open;
165447 - dev->change_rx_flags = ops->ndo_change_rx_flags;
165448 - dev->set_rx_mode = ops->ndo_set_rx_mode;
165449 - dev->set_multicast_list = ops->ndo_set_multicast_list;
165450 - dev->set_mac_address = ops->ndo_set_mac_address;
165451 - dev->validate_addr = ops->ndo_validate_addr;
165452 - dev->do_ioctl = ops->ndo_do_ioctl;
165453 - dev->set_config = ops->ndo_set_config;
165454 - dev->change_mtu = ops->ndo_change_mtu;
165455 - dev->neigh_setup = ops->ndo_neigh_setup;
165456 - dev->tx_timeout = ops->ndo_tx_timeout;
165457 - dev->get_stats = ops->ndo_get_stats;
165458 - dev->vlan_rx_register = ops->ndo_vlan_rx_register;
165459 - dev->vlan_rx_add_vid = ops->ndo_vlan_rx_add_vid;
165460 - dev->vlan_rx_kill_vid = ops->ndo_vlan_rx_kill_vid;
165461 -#ifdef CONFIG_NET_POLL_CONTROLLER
165462 - dev->poll_controller = ops->ndo_poll_controller;
165463 -#endif
165464 -#endif
165465 -}
165466 -EXPORT_SYMBOL(netdev_resync_ops);
165467 -
165468 /**
165469 * register_netdevice - register a network device
165470 * @dev: device to register
165471 @@ -4367,7 +4333,27 @@
165472 * This is temporary until all network devices are converted.
165473 */
165474 if (dev->netdev_ops) {
165475 - netdev_resync_ops(dev);
165476 + const struct net_device_ops *ops = dev->netdev_ops;
165477 +
165478 + dev->init = ops->ndo_init;
165479 + dev->uninit = ops->ndo_uninit;
165480 + dev->open = ops->ndo_open;
165481 + dev->change_rx_flags = ops->ndo_change_rx_flags;
165482 + dev->set_rx_mode = ops->ndo_set_rx_mode;
165483 + dev->set_multicast_list = ops->ndo_set_multicast_list;
165484 + dev->set_mac_address = ops->ndo_set_mac_address;
165485 + dev->validate_addr = ops->ndo_validate_addr;
165486 + dev->do_ioctl = ops->ndo_do_ioctl;
165487 + dev->set_config = ops->ndo_set_config;
165488 + dev->change_mtu = ops->ndo_change_mtu;
165489 + dev->tx_timeout = ops->ndo_tx_timeout;
165490 + dev->get_stats = ops->ndo_get_stats;
165491 + dev->vlan_rx_register = ops->ndo_vlan_rx_register;
165492 + dev->vlan_rx_add_vid = ops->ndo_vlan_rx_add_vid;
165493 + dev->vlan_rx_kill_vid = ops->ndo_vlan_rx_kill_vid;
165494 +#ifdef CONFIG_NET_POLL_CONTROLLER
165495 + dev->poll_controller = ops->ndo_poll_controller;
165496 +#endif
165497 } else {
165498 char drivername[64];
165499 pr_info("%s (%s): not using net_device_ops yet\n",
165500 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/core/neighbour.c linux-2.6.29-rc3.owrt/net/core/neighbour.c
165501 --- linux-2.6.29.owrt/net/core/neighbour.c 2009-05-10 22:04:39.000000000 +0200
165502 +++ linux-2.6.29-rc3.owrt/net/core/neighbour.c 2009-05-10 23:48:33.000000000 +0200
165503 @@ -1994,8 +1994,8 @@
165504 if (!net_eq(neigh_parms_net(p), net))
165505 continue;
165506
165507 - if (nidx < neigh_skip)
165508 - goto next;
165509 + if (nidx++ < neigh_skip)
165510 + continue;
165511
165512 if (neightbl_fill_param_info(skb, tbl, p,
165513 NETLINK_CB(cb->skb).pid,
165514 @@ -2003,8 +2003,6 @@
165515 RTM_NEWNEIGHTBL,
165516 NLM_F_MULTI) <= 0)
165517 goto out;
165518 - next:
165519 - nidx++;
165520 }
165521
165522 neigh_skip = 0;
165523 @@ -2084,10 +2082,12 @@
165524 if (h > s_h)
165525 s_idx = 0;
165526 for (n = tbl->hash_buckets[h], idx = 0; n; n = n->next) {
165527 + int lidx;
165528 if (dev_net(n->dev) != net)
165529 continue;
165530 - if (idx < s_idx)
165531 - goto next;
165532 + lidx = idx++;
165533 + if (lidx < s_idx)
165534 + continue;
165535 if (neigh_fill_info(skb, n, NETLINK_CB(cb->skb).pid,
165536 cb->nlh->nlmsg_seq,
165537 RTM_NEWNEIGH,
165538 @@ -2096,8 +2096,6 @@
165539 rc = -1;
165540 goto out;
165541 }
165542 - next:
165543 - idx++;
165544 }
165545 }
165546 read_unlock_bh(&tbl->lock);
165547 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/core/net_namespace.c linux-2.6.29-rc3.owrt/net/core/net_namespace.c
165548 --- linux-2.6.29.owrt/net/core/net_namespace.c 2009-05-10 22:04:39.000000000 +0200
165549 +++ linux-2.6.29-rc3.owrt/net/core/net_namespace.c 2009-05-10 23:48:33.000000000 +0200
165550 @@ -32,14 +32,24 @@
165551 {
165552 /* Must be called with net_mutex held */
165553 struct pernet_operations *ops;
165554 - int error = 0;
165555 + int error;
165556 + struct net_generic *ng;
165557
165558 atomic_set(&net->count, 1);
165559 -
165560 #ifdef NETNS_REFCNT_DEBUG
165561 atomic_set(&net->use_count, 0);
165562 #endif
165563
165564 + error = -ENOMEM;
165565 + ng = kzalloc(sizeof(struct net_generic) +
165566 + INITIAL_NET_GEN_PTRS * sizeof(void *), GFP_KERNEL);
165567 + if (ng == NULL)
165568 + goto out;
165569 +
165570 + ng->len = INITIAL_NET_GEN_PTRS;
165571 + rcu_assign_pointer(net->gen, ng);
165572 +
165573 + error = 0;
165574 list_for_each_entry(ops, &pernet_list, list) {
165575 if (ops->init) {
165576 error = ops->init(net);
165577 @@ -60,50 +70,24 @@
165578 }
165579
165580 rcu_barrier();
165581 + kfree(ng);
165582 goto out;
165583 }
165584
165585 -static struct net_generic *net_alloc_generic(void)
165586 -{
165587 - struct net_generic *ng;
165588 - size_t generic_size = sizeof(struct net_generic) +
165589 - INITIAL_NET_GEN_PTRS * sizeof(void *);
165590 -
165591 - ng = kzalloc(generic_size, GFP_KERNEL);
165592 - if (ng)
165593 - ng->len = INITIAL_NET_GEN_PTRS;
165594 -
165595 - return ng;
165596 -}
165597 -
165598 #ifdef CONFIG_NET_NS
165599 static struct kmem_cache *net_cachep;
165600 static struct workqueue_struct *netns_wq;
165601
165602 static struct net *net_alloc(void)
165603 {
165604 - struct net *net = NULL;
165605 - struct net_generic *ng;
165606 -
165607 - ng = net_alloc_generic();
165608 - if (!ng)
165609 - goto out;
165610 -
165611 - net = kmem_cache_zalloc(net_cachep, GFP_KERNEL);
165612 - if (!net)
165613 - goto out_free;
165614 -
165615 - rcu_assign_pointer(net->gen, ng);
165616 -out:
165617 - return net;
165618 -
165619 -out_free:
165620 - kfree(ng);
165621 - goto out;
165622 + return kmem_cache_zalloc(net_cachep, GFP_KERNEL);
165623 }
165624
165625 static void net_free(struct net *net)
165626 {
165627 + if (!net)
165628 + return;
165629 +
165630 #ifdef NETNS_REFCNT_DEBUG
165631 if (unlikely(atomic_read(&net->use_count) != 0)) {
165632 printk(KERN_EMERG "network namespace not free! Usage: %d\n",
165633 @@ -128,28 +112,27 @@
165634 err = -ENOMEM;
165635 new_net = net_alloc();
165636 if (!new_net)
165637 - goto out_err;
165638 + goto out;
165639
165640 mutex_lock(&net_mutex);
165641 err = setup_net(new_net);
165642 - if (!err) {
165643 - rtnl_lock();
165644 - list_add_tail(&new_net->list, &net_namespace_list);
165645 - rtnl_unlock();
165646 - }
165647 - mutex_unlock(&net_mutex);
165648 -
165649 if (err)
165650 - goto out_free;
165651 + goto out_unlock;
165652 +
165653 + rtnl_lock();
165654 + list_add_tail(&new_net->list, &net_namespace_list);
165655 + rtnl_unlock();
165656 +
165657 +
165658 +out_unlock:
165659 + mutex_unlock(&net_mutex);
165660 out:
165661 put_net(old_net);
165662 + if (err) {
165663 + net_free(new_net);
165664 + new_net = ERR_PTR(err);
165665 + }
165666 return new_net;
165667 -
165668 -out_free:
165669 - net_free(new_net);
165670 -out_err:
165671 - new_net = ERR_PTR(err);
165672 - goto out;
165673 }
165674
165675 static void cleanup_net(struct work_struct *work)
165676 @@ -157,6 +140,9 @@
165677 struct pernet_operations *ops;
165678 struct net *net;
165679
165680 + /* Be very certain incoming network packets will not find us */
165681 + rcu_barrier();
165682 +
165683 net = container_of(work, struct net, work);
165684
165685 mutex_lock(&net_mutex);
165686 @@ -202,7 +188,6 @@
165687
165688 static int __init net_ns_init(void)
165689 {
165690 - struct net_generic *ng;
165691 int err;
165692
165693 printk(KERN_INFO "net_namespace: %zd bytes\n", sizeof(struct net));
165694 @@ -217,12 +202,6 @@
165695 panic("Could not create netns workq");
165696 #endif
165697
165698 - ng = net_alloc_generic();
165699 - if (!ng)
165700 - panic("Could not allocate generic netns");
165701 -
165702 - rcu_assign_pointer(init_net.gen, ng);
165703 -
165704 mutex_lock(&net_mutex);
165705 err = setup_net(&init_net);
165706
165707 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/core/net-sysfs.c linux-2.6.29-rc3.owrt/net/core/net-sysfs.c
165708 --- linux-2.6.29.owrt/net/core/net-sysfs.c 2009-05-10 22:04:39.000000000 +0200
165709 +++ linux-2.6.29-rc3.owrt/net/core/net-sysfs.c 2009-05-10 23:48:33.000000000 +0200
165710 @@ -77,9 +77,7 @@
165711 if (endp == buf)
165712 goto err;
165713
165714 - if (!rtnl_trylock())
165715 - return -ERESTARTSYS;
165716 -
165717 + rtnl_lock();
165718 if (dev_isalive(net)) {
165719 if ((ret = (*set)(net, new)) == 0)
165720 ret = len;
165721 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/core/skbuff.c linux-2.6.29-rc3.owrt/net/core/skbuff.c
165722 --- linux-2.6.29.owrt/net/core/skbuff.c 2009-05-10 22:04:39.000000000 +0200
165723 +++ linux-2.6.29-rc3.owrt/net/core/skbuff.c 2009-05-10 23:48:33.000000000 +0200
165724 @@ -220,6 +220,14 @@
165725 BUG();
165726 }
165727
165728 +void skb_truesize_bug(struct sk_buff *skb)
165729 +{
165730 + WARN(net_ratelimit(), KERN_ERR "SKB BUG: Invalid truesize (%u) "
165731 + "len=%u, sizeof(sk_buff)=%Zd\n",
165732 + skb->truesize, skb->len, sizeof(struct sk_buff));
165733 +}
165734 +EXPORT_SYMBOL(skb_truesize_bug);
165735 +
165736 /* Allocate a new skbuff. We do this ourselves so we can fill in a few
165737 * 'private' fields and also do memory statistics to find all the
165738 * [BEEP] leaks.
165739 @@ -2293,10 +2301,10 @@
165740 return 0;
165741
165742 next_skb:
165743 - block_limit = skb_headlen(st->cur_skb) + st->stepped_offset;
165744 + block_limit = skb_headlen(st->cur_skb);
165745
165746 if (abs_offset < block_limit) {
165747 - *data = st->cur_skb->data + (abs_offset - st->stepped_offset);
165748 + *data = st->cur_skb->data + abs_offset;
165749 return block_limit - abs_offset;
165750 }
165751
165752 @@ -2331,15 +2339,14 @@
165753 st->frag_data = NULL;
165754 }
165755
165756 - if (st->root_skb == st->cur_skb &&
165757 - skb_shinfo(st->root_skb)->frag_list) {
165758 - st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
165759 - st->frag_idx = 0;
165760 - goto next_skb;
165761 - } else if (st->cur_skb->next) {
165762 + if (st->cur_skb->next) {
165763 st->cur_skb = st->cur_skb->next;
165764 st->frag_idx = 0;
165765 goto next_skb;
165766 + } else if (st->root_skb == st->cur_skb &&
165767 + skb_shinfo(st->root_skb)->frag_list) {
165768 + st->cur_skb = skb_shinfo(st->root_skb)->frag_list;
165769 + goto next_skb;
165770 }
165771
165772 return 0;
165773 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/core/sock.c linux-2.6.29-rc3.owrt/net/core/sock.c
165774 --- linux-2.6.29.owrt/net/core/sock.c 2009-05-10 22:04:39.000000000 +0200
165775 +++ linux-2.6.29-rc3.owrt/net/core/sock.c 2009-05-10 23:48:33.000000000 +0200
165776 @@ -696,8 +696,6 @@
165777 if (len < 0)
165778 return -EINVAL;
165779
165780 - memset(&v, 0, sizeof(v));
165781 -
165782 switch(optname) {
165783 case SO_DEBUG:
165784 v.val = sock_flag(sk, SOCK_DBG);
165785 @@ -1137,6 +1135,7 @@
165786 {
165787 struct sock *sk = skb->sk;
165788
165789 + skb_truesize_check(skb);
165790 atomic_sub(skb->truesize, &sk->sk_rmem_alloc);
165791 sk_mem_uncharge(skb->sk, skb->truesize);
165792 }
165793 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/cipso_ipv4.c linux-2.6.29-rc3.owrt/net/ipv4/cipso_ipv4.c
165794 --- linux-2.6.29.owrt/net/ipv4/cipso_ipv4.c 2009-05-10 22:04:39.000000000 +0200
165795 +++ linux-2.6.29-rc3.owrt/net/ipv4/cipso_ipv4.c 2009-05-10 23:48:33.000000000 +0200
165796 @@ -3,16 +3,11 @@
165797 *
165798 * This is an implementation of the CIPSO 2.2 protocol as specified in
165799 * draft-ietf-cipso-ipsecurity-01.txt with additional tag types as found in
165800 - * FIPS-188. While CIPSO never became a full IETF RFC standard many vendors
165801 + * FIPS-188, copies of both documents can be found in the Documentation
165802 + * directory. While CIPSO never became a full IETF RFC standard many vendors
165803 * have chosen to adopt the protocol and over the years it has become a
165804 * de-facto standard for labeled networking.
165805 *
165806 - * The CIPSO draft specification can be found in the kernel's Documentation
165807 - * directory as well as the following URL:
165808 - * http://netlabel.sourceforge.net/files/draft-ietf-cipso-ipsecurity-01.txt
165809 - * The FIPS-188 specification can be found at the following URL:
165810 - * http://www.itl.nist.gov/fipspubs/fip188.htm
165811 - *
165812 * Author: Paul Moore <paul.moore@hp.com>
165813 *
165814 */
165815 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/icmp.c linux-2.6.29-rc3.owrt/net/ipv4/icmp.c
165816 --- linux-2.6.29.owrt/net/ipv4/icmp.c 2009-05-10 22:04:39.000000000 +0200
165817 +++ linux-2.6.29-rc3.owrt/net/ipv4/icmp.c 2009-05-10 23:48:33.000000000 +0200
165818 @@ -1205,7 +1205,7 @@
165819
165820 int __init icmp_init(void)
165821 {
165822 - return register_pernet_subsys(&icmp_sk_ops);
165823 + return register_pernet_device(&icmp_sk_ops);
165824 }
165825
165826 EXPORT_SYMBOL(icmp_err_convert);
165827 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/ipconfig.c linux-2.6.29-rc3.owrt/net/ipv4/ipconfig.c
165828 --- linux-2.6.29.owrt/net/ipv4/ipconfig.c 2009-05-10 22:04:39.000000000 +0200
165829 +++ linux-2.6.29-rc3.owrt/net/ipv4/ipconfig.c 2009-05-10 23:48:33.000000000 +0200
165830 @@ -1268,9 +1268,6 @@
165831 static int __init ip_auto_config(void)
165832 {
165833 __be32 addr;
165834 -#ifdef IPCONFIG_DYNAMIC
165835 - int retries = CONF_OPEN_RETRIES;
165836 -#endif
165837
165838 #ifdef CONFIG_PROC_FS
165839 proc_net_fops_create(&init_net, "pnp", S_IRUGO, &pnp_seq_fops);
165840 @@ -1307,6 +1304,9 @@
165841 #endif
165842 ic_first_dev->next) {
165843 #ifdef IPCONFIG_DYNAMIC
165844 +
165845 + int retries = CONF_OPEN_RETRIES;
165846 +
165847 if (ic_dynamic() < 0) {
165848 ic_close_devs();
165849
165850 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/ip_fragment.c linux-2.6.29-rc3.owrt/net/ipv4/ip_fragment.c
165851 --- linux-2.6.29.owrt/net/ipv4/ip_fragment.c 2009-05-10 22:04:39.000000000 +0200
165852 +++ linux-2.6.29-rc3.owrt/net/ipv4/ip_fragment.c 2009-05-10 23:48:33.000000000 +0200
165853 @@ -463,7 +463,6 @@
165854 static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev,
165855 struct net_device *dev)
165856 {
165857 - struct net *net = container_of(qp->q.net, struct net, ipv4.frags);
165858 struct iphdr *iph;
165859 struct sk_buff *fp, *head = qp->q.fragments;
165860 int len;
165861 @@ -549,7 +548,7 @@
165862 iph = ip_hdr(head);
165863 iph->frag_off = 0;
165864 iph->tot_len = htons(len);
165865 - IP_INC_STATS_BH(net, IPSTATS_MIB_REASMOKS);
165866 + IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_REASMOKS);
165867 qp->q.fragments = NULL;
165868 return 0;
165869
165870 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/tcp.c linux-2.6.29-rc3.owrt/net/ipv4/tcp.c
165871 --- linux-2.6.29.owrt/net/ipv4/tcp.c 2009-05-10 22:04:39.000000000 +0200
165872 +++ linux-2.6.29-rc3.owrt/net/ipv4/tcp.c 2009-05-10 23:48:33.000000000 +0200
165873 @@ -524,8 +524,7 @@
165874 struct tcp_splice_state *tss = rd_desc->arg.data;
165875 int ret;
165876
165877 - ret = skb_splice_bits(skb, offset, tss->pipe, min(rd_desc->count, len),
165878 - tss->flags);
165879 + ret = skb_splice_bits(skb, offset, tss->pipe, rd_desc->count, tss->flags);
165880 if (ret > 0)
165881 rd_desc->count -= ret;
165882 return ret;
165883 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/tcp_input.c linux-2.6.29-rc3.owrt/net/ipv4/tcp_input.c
165884 --- linux-2.6.29.owrt/net/ipv4/tcp_input.c 2009-05-10 22:04:39.000000000 +0200
165885 +++ linux-2.6.29-rc3.owrt/net/ipv4/tcp_input.c 2009-05-10 23:48:34.000000000 +0200
165886 @@ -1374,8 +1374,7 @@
165887
165888 static int tcp_shifted_skb(struct sock *sk, struct sk_buff *skb,
165889 struct tcp_sacktag_state *state,
165890 - unsigned int pcount, int shifted, int mss,
165891 - int dup_sack)
165892 + unsigned int pcount, int shifted, int mss)
165893 {
165894 struct tcp_sock *tp = tcp_sk(sk);
165895 struct sk_buff *prev = tcp_write_queue_prev(sk, skb);
165896 @@ -1411,7 +1410,7 @@
165897 }
165898
165899 /* We discard results */
165900 - tcp_sacktag_one(skb, sk, state, dup_sack, pcount);
165901 + tcp_sacktag_one(skb, sk, state, 0, pcount);
165902
165903 /* Difference in this won't matter, both ACKed by the same cumul. ACK */
165904 TCP_SKB_CB(prev)->sacked |= (TCP_SKB_CB(skb)->sacked & TCPCB_EVER_RETRANS);
165905 @@ -1562,7 +1561,7 @@
165906
165907 if (!skb_shift(prev, skb, len))
165908 goto fallback;
165909 - if (!tcp_shifted_skb(sk, skb, state, pcount, len, mss, dup_sack))
165910 + if (!tcp_shifted_skb(sk, skb, state, pcount, len, mss))
165911 goto out;
165912
165913 /* Hole filled allows collapsing with the next as well, this is very
165914 @@ -1581,7 +1580,7 @@
165915 len = skb->len;
165916 if (skb_shift(prev, skb, len)) {
165917 pcount += tcp_skb_pcount(skb);
165918 - tcp_shifted_skb(sk, skb, state, tcp_skb_pcount(skb), len, mss, 0);
165919 + tcp_shifted_skb(sk, skb, state, tcp_skb_pcount(skb), len, mss);
165920 }
165921
165922 out:
165923 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/tcp_ipv4.c linux-2.6.29-rc3.owrt/net/ipv4/tcp_ipv4.c
165924 --- linux-2.6.29.owrt/net/ipv4/tcp_ipv4.c 2009-05-10 22:04:39.000000000 +0200
165925 +++ linux-2.6.29-rc3.owrt/net/ipv4/tcp_ipv4.c 2009-05-10 23:48:34.000000000 +0200
165926 @@ -2443,7 +2443,7 @@
165927 void __init tcp_v4_init(void)
165928 {
165929 inet_hashinfo_init(&tcp_hashinfo);
165930 - if (register_pernet_subsys(&tcp_sk_ops))
165931 + if (register_pernet_device(&tcp_sk_ops))
165932 panic("Failed to create the TCP control socket.\n");
165933 }
165934
165935 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/tcp_output.c linux-2.6.29-rc3.owrt/net/ipv4/tcp_output.c
165936 --- linux-2.6.29.owrt/net/ipv4/tcp_output.c 2009-05-10 22:04:39.000000000 +0200
165937 +++ linux-2.6.29-rc3.owrt/net/ipv4/tcp_output.c 2009-05-10 23:48:34.000000000 +0200
165938 @@ -663,10 +663,14 @@
165939 th->urg_ptr = 0;
165940
165941 /* The urg_mode check is necessary during a below snd_una win probe */
165942 - if (unlikely(tcp_urg_mode(tp) &&
165943 - between(tp->snd_up, tcb->seq + 1, tcb->seq + 0xFFFF))) {
165944 - th->urg_ptr = htons(tp->snd_up - tcb->seq);
165945 - th->urg = 1;
165946 + if (unlikely(tcp_urg_mode(tp))) {
165947 + if (between(tp->snd_up, tcb->seq + 1, tcb->seq + 0xFFFF)) {
165948 + th->urg_ptr = htons(tp->snd_up - tcb->seq);
165949 + th->urg = 1;
165950 + } else if (after(tcb->seq + 0xFFFF, tp->snd_nxt)) {
165951 + th->urg_ptr = 0xFFFF;
165952 + th->urg = 1;
165953 + }
165954 }
165955
165956 tcp_options_write((__be32 *)(th + 1), tp, &opts, &md5_hash_location);
165957 @@ -2023,6 +2027,7 @@
165958 last_lost = tp->snd_una;
165959 }
165960
165961 + /* First pass: retransmit lost packets. */
165962 tcp_for_write_queue_from(skb, sk) {
165963 __u8 sacked = TCP_SKB_CB(skb)->sacked;
165964
165965 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/tcp_scalable.c linux-2.6.29-rc3.owrt/net/ipv4/tcp_scalable.c
165966 --- linux-2.6.29.owrt/net/ipv4/tcp_scalable.c 2009-05-10 22:04:39.000000000 +0200
165967 +++ linux-2.6.29-rc3.owrt/net/ipv4/tcp_scalable.c 2009-05-10 23:48:34.000000000 +0200
165968 @@ -1,6 +1,6 @@
165969 /* Tom Kelly's Scalable TCP
165970 *
165971 - * See http://www.deneholme.net/tom/scalable/
165972 + * See htt://www-lce.eng.cam.ac.uk/~ctk21/scalable/
165973 *
165974 * John Heffner <jheffner@sc.edu>
165975 */
165976 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv4/udp.c linux-2.6.29-rc3.owrt/net/ipv4/udp.c
165977 --- linux-2.6.29.owrt/net/ipv4/udp.c 2009-05-10 22:04:39.000000000 +0200
165978 +++ linux-2.6.29-rc3.owrt/net/ipv4/udp.c 2009-05-10 23:48:34.000000000 +0200
165979 @@ -120,11 +120,8 @@
165980 atomic_t udp_memory_allocated;
165981 EXPORT_SYMBOL(udp_memory_allocated);
165982
165983 -#define PORTS_PER_CHAIN (65536 / UDP_HTABLE_SIZE)
165984 -
165985 static int udp_lib_lport_inuse(struct net *net, __u16 num,
165986 const struct udp_hslot *hslot,
165987 - unsigned long *bitmap,
165988 struct sock *sk,
165989 int (*saddr_comp)(const struct sock *sk1,
165990 const struct sock *sk2))
165991 @@ -135,17 +132,12 @@
165992 sk_nulls_for_each(sk2, node, &hslot->head)
165993 if (net_eq(sock_net(sk2), net) &&
165994 sk2 != sk &&
165995 - (bitmap || sk2->sk_hash == num) &&
165996 + sk2->sk_hash == num &&
165997 (!sk2->sk_reuse || !sk->sk_reuse) &&
165998 (!sk2->sk_bound_dev_if || !sk->sk_bound_dev_if
165999 || sk2->sk_bound_dev_if == sk->sk_bound_dev_if) &&
166000 - (*saddr_comp)(sk, sk2)) {
166001 - if (bitmap)
166002 - __set_bit(sk2->sk_hash / UDP_HTABLE_SIZE,
166003 - bitmap);
166004 - else
166005 - return 1;
166006 - }
166007 + (*saddr_comp)(sk, sk2))
166008 + return 1;
166009 return 0;
166010 }
166011
166012 @@ -168,47 +160,32 @@
166013 if (!snum) {
166014 int low, high, remaining;
166015 unsigned rand;
166016 - unsigned short first, last;
166017 - DECLARE_BITMAP(bitmap, PORTS_PER_CHAIN);
166018 + unsigned short first;
166019
166020 inet_get_local_port_range(&low, &high);
166021 remaining = (high - low) + 1;
166022
166023 rand = net_random();
166024 - first = (((u64)rand * remaining) >> 32) + low;
166025 - /*
166026 - * force rand to be an odd multiple of UDP_HTABLE_SIZE
166027 - */
166028 - rand = (rand | 1) * UDP_HTABLE_SIZE;
166029 - for (last = first + UDP_HTABLE_SIZE; first != last; first++) {
166030 - hslot = &udptable->hash[udp_hashfn(net, first)];
166031 - bitmap_zero(bitmap, PORTS_PER_CHAIN);
166032 + snum = first = rand % remaining + low;
166033 + rand |= 1;
166034 + for (;;) {
166035 + hslot = &udptable->hash[udp_hashfn(net, snum)];
166036 spin_lock_bh(&hslot->lock);
166037 - udp_lib_lport_inuse(net, snum, hslot, bitmap, sk,
166038 - saddr_comp);
166039 -
166040 - snum = first;
166041 - /*
166042 - * Iterate on all possible values of snum for this hash.
166043 - * Using steps of an odd multiple of UDP_HTABLE_SIZE
166044 - * give us randomization and full range coverage.
166045 - */
166046 - do {
166047 - if (low <= snum && snum <= high &&
166048 - !test_bit(snum / UDP_HTABLE_SIZE, bitmap))
166049 - goto found;
166050 - snum += rand;
166051 - } while (snum != first);
166052 + if (!udp_lib_lport_inuse(net, snum, hslot, sk, saddr_comp))
166053 + break;
166054 spin_unlock_bh(&hslot->lock);
166055 + do {
166056 + snum = snum + rand;
166057 + } while (snum < low || snum > high);
166058 + if (snum == first)
166059 + goto fail;
166060 }
166061 - goto fail;
166062 } else {
166063 hslot = &udptable->hash[udp_hashfn(net, snum)];
166064 spin_lock_bh(&hslot->lock);
166065 - if (udp_lib_lport_inuse(net, snum, hslot, NULL, sk, saddr_comp))
166066 + if (udp_lib_lport_inuse(net, snum, hslot, sk, saddr_comp))
166067 goto fail_unlock;
166068 }
166069 -found:
166070 inet_sk(sk)->num = snum;
166071 sk->sk_hash = snum;
166072 if (sk_unhashed(sk)) {
166073 @@ -1015,11 +992,9 @@
166074
166075 if ((rc = sock_queue_rcv_skb(sk, skb)) < 0) {
166076 /* Note that an ENOMEM error is charged twice */
166077 - if (rc == -ENOMEM) {
166078 + if (rc == -ENOMEM)
166079 UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
166080 is_udplite);
166081 - atomic_inc(&sk->sk_drops);
166082 - }
166083 goto drop;
166084 }
166085
166086 @@ -1231,10 +1206,11 @@
166087 int proto)
166088 {
166089 struct sock *sk;
166090 - struct udphdr *uh;
166091 + struct udphdr *uh = udp_hdr(skb);
166092 unsigned short ulen;
166093 struct rtable *rt = (struct rtable*)skb->dst;
166094 - __be32 saddr, daddr;
166095 + __be32 saddr = ip_hdr(skb)->saddr;
166096 + __be32 daddr = ip_hdr(skb)->daddr;
166097 struct net *net = dev_net(skb->dev);
166098
166099 /*
166100 @@ -1243,7 +1219,6 @@
166101 if (!pskb_may_pull(skb, sizeof(struct udphdr)))
166102 goto drop; /* No space for header. */
166103
166104 - uh = udp_hdr(skb);
166105 ulen = ntohs(uh->len);
166106 if (ulen > skb->len)
166107 goto short_packet;
166108 @@ -1258,9 +1233,6 @@
166109 if (udp4_csum_init(skb, uh, proto))
166110 goto csum_error;
166111
166112 - saddr = ip_hdr(skb)->saddr;
166113 - daddr = ip_hdr(skb)->daddr;
166114 -
166115 if (rt->rt_flags & (RTCF_BROADCAST|RTCF_MULTICAST))
166116 return __udp4_lib_mcast_deliver(net, skb, uh,
166117 saddr, daddr, udptable);
166118 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/addrconf.c linux-2.6.29-rc3.owrt/net/ipv6/addrconf.c
166119 --- linux-2.6.29.owrt/net/ipv6/addrconf.c 2009-05-10 22:04:39.000000000 +0200
166120 +++ linux-2.6.29-rc3.owrt/net/ipv6/addrconf.c 2009-05-10 23:48:34.000000000 +0200
166121 @@ -493,17 +493,15 @@
166122 read_unlock(&dev_base_lock);
166123 }
166124
166125 -static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
166126 +static void addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old)
166127 {
166128 struct net *net;
166129
166130 net = (struct net *)table->extra2;
166131 if (p == &net->ipv6.devconf_dflt->forwarding)
166132 - return 0;
166133 -
166134 - if (!rtnl_trylock())
166135 - return -ERESTARTSYS;
166136 + return;
166137
166138 + rtnl_lock();
166139 if (p == &net->ipv6.devconf_all->forwarding) {
166140 __s32 newf = net->ipv6.devconf_all->forwarding;
166141 net->ipv6.devconf_dflt->forwarding = newf;
166142 @@ -514,7 +512,6 @@
166143
166144 if (*p)
166145 rt6_purge_dflt_routers(net);
166146 - return 1;
166147 }
166148 #endif
166149
166150 @@ -2611,6 +2608,9 @@
166151
166152 ASSERT_RTNL();
166153
166154 + if ((dev->flags & IFF_LOOPBACK) && how == 1)
166155 + how = 0;
166156 +
166157 rt6_ifdown(net, dev);
166158 neigh_ifdown(&nd_tbl, dev);
166159
166160 @@ -3983,7 +3983,7 @@
166161 ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos);
166162
166163 if (write)
166164 - ret = addrconf_fixup_forwarding(ctl, valp, val);
166165 + addrconf_fixup_forwarding(ctl, valp, val);
166166 return ret;
166167 }
166168
166169 @@ -4019,7 +4019,8 @@
166170 }
166171
166172 *valp = new;
166173 - return addrconf_fixup_forwarding(table, valp, val);
166174 + addrconf_fixup_forwarding(table, valp, val);
166175 + return 1;
166176 }
166177
166178 static struct addrconf_sysctl_table
166179 @@ -4249,7 +4250,7 @@
166180 .procname = "mc_forwarding",
166181 .data = &ipv6_devconf.mc_forwarding,
166182 .maxlen = sizeof(int),
166183 - .mode = 0444,
166184 + .mode = 0644,
166185 .proc_handler = proc_dointvec,
166186 },
166187 #endif
166188 @@ -4445,6 +4446,25 @@
166189
166190 EXPORT_SYMBOL(unregister_inet6addr_notifier);
166191
166192 +static void addrconf_net_exit(struct net *net)
166193 +{
166194 + struct net_device *dev;
166195 +
166196 + rtnl_lock();
166197 + /* clean dev list */
166198 + for_each_netdev(net, dev) {
166199 + if (__in6_dev_get(dev) == NULL)
166200 + continue;
166201 + addrconf_ifdown(dev, 1);
166202 + }
166203 + addrconf_ifdown(net->loopback_dev, 2);
166204 + rtnl_unlock();
166205 +}
166206 +
166207 +static struct pernet_operations addrconf_net_ops = {
166208 + .exit = addrconf_net_exit,
166209 +};
166210 +
166211 /*
166212 * Init / cleanup code
166213 */
166214 @@ -4486,6 +4506,10 @@
166215 if (err)
166216 goto errlo;
166217
166218 + err = register_pernet_device(&addrconf_net_ops);
166219 + if (err)
166220 + return err;
166221 +
166222 register_netdevice_notifier(&ipv6_dev_notf);
166223
166224 addrconf_verify(0);
166225 @@ -4515,22 +4539,15 @@
166226 void addrconf_cleanup(void)
166227 {
166228 struct inet6_ifaddr *ifa;
166229 - struct net_device *dev;
166230 int i;
166231
166232 unregister_netdevice_notifier(&ipv6_dev_notf);
166233 + unregister_pernet_device(&addrconf_net_ops);
166234 +
166235 unregister_pernet_subsys(&addrconf_ops);
166236
166237 rtnl_lock();
166238
166239 - /* clean dev list */
166240 - for_each_netdev(&init_net, dev) {
166241 - if (__in6_dev_get(dev) == NULL)
166242 - continue;
166243 - addrconf_ifdown(dev, 1);
166244 - }
166245 - addrconf_ifdown(init_net.loopback_dev, 2);
166246 -
166247 /*
166248 * Check hash table.
166249 */
166250 @@ -4551,4 +4568,6 @@
166251
166252 del_timer(&addr_chk_timer);
166253 rtnl_unlock();
166254 +
166255 + unregister_pernet_subsys(&addrconf_net_ops);
166256 }
166257 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/af_inet6.c linux-2.6.29-rc3.owrt/net/ipv6/af_inet6.c
166258 --- linux-2.6.29.owrt/net/ipv6/af_inet6.c 2009-05-10 22:04:39.000000000 +0200
166259 +++ linux-2.6.29-rc3.owrt/net/ipv6/af_inet6.c 2009-05-10 23:48:34.000000000 +0200
166260 @@ -72,10 +72,6 @@
166261 static struct list_head inetsw6[SOCK_MAX];
166262 static DEFINE_SPINLOCK(inetsw6_lock);
166263
166264 -static int disable_ipv6 = 0;
166265 -module_param_named(disable, disable_ipv6, int, 0);
166266 -MODULE_PARM_DESC(disable, "Disable IPv6 such that it is non-functional");
166267 -
166268 static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk)
166269 {
166270 const int offset = sk->sk_prot->obj_size - sizeof(struct ipv6_pinfo);
166271 @@ -995,21 +991,10 @@
166272 {
166273 struct sk_buff *dummy_skb;
166274 struct list_head *r;
166275 - int err = 0;
166276 + int err;
166277
166278 BUILD_BUG_ON(sizeof(struct inet6_skb_parm) > sizeof(dummy_skb->cb));
166279
166280 - /* Register the socket-side information for inet6_create. */
166281 - for(r = &inetsw6[0]; r < &inetsw6[SOCK_MAX]; ++r)
166282 - INIT_LIST_HEAD(r);
166283 -
166284 - if (disable_ipv6) {
166285 - printk(KERN_INFO
166286 - "IPv6: Loaded, but administratively disabled, "
166287 - "reboot required to enable\n");
166288 - goto out;
166289 - }
166290 -
166291 err = proto_register(&tcpv6_prot, 1);
166292 if (err)
166293 goto out;
166294 @@ -1027,6 +1012,10 @@
166295 goto out_unregister_udplite_proto;
166296
166297
166298 + /* Register the socket-side information for inet6_create. */
166299 + for(r = &inetsw6[0]; r < &inetsw6[SOCK_MAX]; ++r)
166300 + INIT_LIST_HEAD(r);
166301 +
166302 /* We MUST register RAW sockets before we create the ICMP6,
166303 * IGMP6, or NDISC control sockets.
166304 */
166305 @@ -1192,9 +1181,6 @@
166306
166307 static void __exit inet6_exit(void)
166308 {
166309 - if (disable_ipv6)
166310 - return;
166311 -
166312 /* First of all disallow new sockets creation. */
166313 sock_unregister(PF_INET6);
166314 /* Disallow any further netlink messages */
166315 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/icmp.c linux-2.6.29-rc3.owrt/net/ipv6/icmp.c
166316 --- linux-2.6.29.owrt/net/ipv6/icmp.c 2009-05-10 22:04:39.000000000 +0200
166317 +++ linux-2.6.29-rc3.owrt/net/ipv6/icmp.c 2009-05-10 23:48:34.000000000 +0200
166318 @@ -443,10 +443,10 @@
166319 if (xfrm_decode_session_reverse(skb, &fl2, AF_INET6))
166320 goto relookup_failed;
166321
166322 - if (ip6_dst_lookup(sk, &dst2, &fl2))
166323 + if (ip6_dst_lookup(sk, &dst2, &fl))
166324 goto relookup_failed;
166325
166326 - err = xfrm_lookup(net, &dst2, &fl2, sk, XFRM_LOOKUP_ICMP);
166327 + err = xfrm_lookup(net, &dst2, &fl, sk, XFRM_LOOKUP_ICMP);
166328 switch (err) {
166329 case 0:
166330 dst_release(dst);
166331 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/inet6_hashtables.c linux-2.6.29-rc3.owrt/net/ipv6/inet6_hashtables.c
166332 --- linux-2.6.29.owrt/net/ipv6/inet6_hashtables.c 2009-05-10 22:04:39.000000000 +0200
166333 +++ linux-2.6.29-rc3.owrt/net/ipv6/inet6_hashtables.c 2009-05-10 23:48:34.000000000 +0200
166334 @@ -258,11 +258,11 @@
166335
166336 if (twp != NULL) {
166337 *twp = tw;
166338 - NET_INC_STATS_BH(net, LINUX_MIB_TIMEWAITRECYCLED);
166339 + NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITRECYCLED);
166340 } else if (tw != NULL) {
166341 /* Silly. Should hash-dance instead... */
166342 inet_twsk_deschedule(tw, death_row);
166343 - NET_INC_STATS_BH(net, LINUX_MIB_TIMEWAITRECYCLED);
166344 + NET_INC_STATS_BH(twsk_net(tw), LINUX_MIB_TIMEWAITRECYCLED);
166345
166346 inet_twsk_put(tw);
166347 }
166348 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/ip6_flowlabel.c linux-2.6.29-rc3.owrt/net/ipv6/ip6_flowlabel.c
166349 --- linux-2.6.29.owrt/net/ipv6/ip6_flowlabel.c 2009-05-10 22:04:39.000000000 +0200
166350 +++ linux-2.6.29-rc3.owrt/net/ipv6/ip6_flowlabel.c 2009-05-10 23:48:34.000000000 +0200
166351 @@ -323,21 +323,17 @@
166352 fl_create(struct net *net, struct in6_flowlabel_req *freq, char __user *optval,
166353 int optlen, int *err_p)
166354 {
166355 - struct ip6_flowlabel *fl = NULL;
166356 + struct ip6_flowlabel *fl;
166357 int olen;
166358 int addr_type;
166359 int err;
166360
166361 - olen = optlen - CMSG_ALIGN(sizeof(*freq));
166362 - err = -EINVAL;
166363 - if (olen > 64 * 1024)
166364 - goto done;
166365 -
166366 err = -ENOMEM;
166367 fl = kzalloc(sizeof(*fl), GFP_KERNEL);
166368 if (fl == NULL)
166369 goto done;
166370
166371 + olen = optlen - CMSG_ALIGN(sizeof(*freq));
166372 if (olen > 0) {
166373 struct msghdr msg;
166374 struct flowi flowi;
166375 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/ip6_input.c linux-2.6.29-rc3.owrt/net/ipv6/ip6_input.c
166376 --- linux-2.6.29.owrt/net/ipv6/ip6_input.c 2009-05-10 22:04:39.000000000 +0200
166377 +++ linux-2.6.29-rc3.owrt/net/ipv6/ip6_input.c 2009-05-10 23:48:34.000000000 +0200
166378 @@ -255,7 +255,6 @@
166379 * IPv6 multicast router mode is now supported ;)
166380 */
166381 if (dev_net(skb->dev)->ipv6.devconf_all->mc_forwarding &&
166382 - !(ipv6_addr_type(&hdr->daddr) & IPV6_ADDR_LINKLOCAL) &&
166383 likely(!(IP6CB(skb)->flags & IP6SKB_FORWARDED))) {
166384 /*
166385 * Okay, we try to forward - split and duplicate
166386 @@ -317,6 +316,7 @@
166387 }
166388
166389 if (skb2) {
166390 + skb2->dev = skb2->dst->dev;
166391 ip6_mr_input(skb2);
166392 }
166393 }
166394 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/ip6mr.c linux-2.6.29-rc3.owrt/net/ipv6/ip6mr.c
166395 --- linux-2.6.29.owrt/net/ipv6/ip6mr.c 2009-05-10 22:04:39.000000000 +0200
166396 +++ linux-2.6.29-rc3.owrt/net/ipv6/ip6mr.c 2009-05-10 23:48:34.000000000 +0200
166397 @@ -48,7 +48,6 @@
166398 #include <linux/pim.h>
166399 #include <net/addrconf.h>
166400 #include <linux/netfilter_ipv6.h>
166401 -#include <net/ip6_checksum.h>
166402
166403 /* Big lock, protecting vif table, mrt cache and mroute socket state.
166404 Note that the changes are semaphored via rtnl_lock.
166405 @@ -366,9 +365,7 @@
166406 pim = (struct pimreghdr *)skb_transport_header(skb);
166407 if (pim->type != ((PIM_VERSION << 4) | PIM_REGISTER) ||
166408 (pim->flags & PIM_NULL_REGISTER) ||
166409 - (csum_ipv6_magic(&ipv6_hdr(skb)->saddr, &ipv6_hdr(skb)->daddr,
166410 - sizeof(*pim), IPPROTO_PIM,
166411 - csum_partial((void *)pim, sizeof(*pim), 0)) &&
166412 + (ip_compute_csum((void *)pim, sizeof(*pim)) != 0 &&
166413 csum_fold(skb_checksum(skb, 0, skb->len, 0))))
166414 goto drop;
166415
166416 @@ -395,7 +392,7 @@
166417 skb_pull(skb, (u8 *)encap - skb->data);
166418 skb_reset_network_header(skb);
166419 skb->dev = reg_dev;
166420 - skb->protocol = htons(ETH_P_IPV6);
166421 + skb->protocol = htons(ETH_P_IP);
166422 skb->ip_summed = 0;
166423 skb->pkt_type = PACKET_HOST;
166424 dst_release(skb->dst);
166425 @@ -484,7 +481,6 @@
166426 {
166427 struct mif_device *v;
166428 struct net_device *dev;
166429 - struct inet6_dev *in6_dev;
166430 if (vifi < 0 || vifi >= net->ipv6.maxvif)
166431 return -EADDRNOTAVAIL;
166432
166433 @@ -517,10 +513,6 @@
166434
166435 dev_set_allmulti(dev, -1);
166436
166437 - in6_dev = __in6_dev_get(dev);
166438 - if (in6_dev)
166439 - in6_dev->cnf.mc_forwarding--;
166440 -
166441 if (v->flags & MIFF_REGISTER)
166442 unregister_netdevice(dev);
166443
166444 @@ -630,7 +622,6 @@
166445 int vifi = vifc->mif6c_mifi;
166446 struct mif_device *v = &net->ipv6.vif6_table[vifi];
166447 struct net_device *dev;
166448 - struct inet6_dev *in6_dev;
166449 int err;
166450
166451 /* Is vif busy ? */
166452 @@ -671,10 +662,6 @@
166453 return -EINVAL;
166454 }
166455
166456 - in6_dev = __in6_dev_get(dev);
166457 - if (in6_dev)
166458 - in6_dev->cnf.mc_forwarding++;
166459 -
166460 /*
166461 * Fill in the VIF structures
166462 */
166463 @@ -851,6 +838,8 @@
166464
166465 skb->dst = dst_clone(pkt->dst);
166466 skb->ip_summed = CHECKSUM_UNNECESSARY;
166467 +
166468 + skb_pull(skb, sizeof(struct ipv6hdr));
166469 }
166470
166471 if (net->ipv6.mroute6_sk == NULL) {
166472 @@ -1233,10 +1222,8 @@
166473
166474 rtnl_lock();
166475 write_lock_bh(&mrt_lock);
166476 - if (likely(net->ipv6.mroute6_sk == NULL)) {
166477 + if (likely(net->ipv6.mroute6_sk == NULL))
166478 net->ipv6.mroute6_sk = sk;
166479 - net->ipv6.devconf_all->mc_forwarding++;
166480 - }
166481 else
166482 err = -EADDRINUSE;
166483 write_unlock_bh(&mrt_lock);
166484 @@ -1255,7 +1242,6 @@
166485 if (sk == net->ipv6.mroute6_sk) {
166486 write_lock_bh(&mrt_lock);
166487 net->ipv6.mroute6_sk = NULL;
166488 - net->ipv6.devconf_all->mc_forwarding--;
166489 write_unlock_bh(&mrt_lock);
166490
166491 mroute_clean_tables(net);
166492 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/ip6_output.c linux-2.6.29-rc3.owrt/net/ipv6/ip6_output.c
166493 --- linux-2.6.29.owrt/net/ipv6/ip6_output.c 2009-05-10 22:04:39.000000000 +0200
166494 +++ linux-2.6.29-rc3.owrt/net/ipv6/ip6_output.c 2009-05-10 23:48:34.000000000 +0200
166495 @@ -1105,18 +1105,6 @@
166496 return err;
166497 }
166498
166499 -static inline struct ipv6_opt_hdr *ip6_opt_dup(struct ipv6_opt_hdr *src,
166500 - gfp_t gfp)
166501 -{
166502 - return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
166503 -}
166504 -
166505 -static inline struct ipv6_rt_hdr *ip6_rthdr_dup(struct ipv6_rt_hdr *src,
166506 - gfp_t gfp)
166507 -{
166508 - return src ? kmemdup(src, (src->hdrlen + 1) * 8, gfp) : NULL;
166509 -}
166510 -
166511 int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
166512 int offset, int len, int odd, struct sk_buff *skb),
166513 void *from, int length, int transhdrlen,
166514 @@ -1142,37 +1130,17 @@
166515 * setup for corking
166516 */
166517 if (opt) {
166518 - if (WARN_ON(np->cork.opt))
166519 + if (np->cork.opt == NULL) {
166520 + np->cork.opt = kmalloc(opt->tot_len,
166521 + sk->sk_allocation);
166522 + if (unlikely(np->cork.opt == NULL))
166523 + return -ENOBUFS;
166524 + } else if (np->cork.opt->tot_len < opt->tot_len) {
166525 + printk(KERN_DEBUG "ip6_append_data: invalid option length\n");
166526 return -EINVAL;
166527 -
166528 - np->cork.opt = kmalloc(opt->tot_len, sk->sk_allocation);
166529 - if (unlikely(np->cork.opt == NULL))
166530 - return -ENOBUFS;
166531 -
166532 - np->cork.opt->tot_len = opt->tot_len;
166533 - np->cork.opt->opt_flen = opt->opt_flen;
166534 - np->cork.opt->opt_nflen = opt->opt_nflen;
166535 -
166536 - np->cork.opt->dst0opt = ip6_opt_dup(opt->dst0opt,
166537 - sk->sk_allocation);
166538 - if (opt->dst0opt && !np->cork.opt->dst0opt)
166539 - return -ENOBUFS;
166540 -
166541 - np->cork.opt->dst1opt = ip6_opt_dup(opt->dst1opt,
166542 - sk->sk_allocation);
166543 - if (opt->dst1opt && !np->cork.opt->dst1opt)
166544 - return -ENOBUFS;
166545 -
166546 - np->cork.opt->hopopt = ip6_opt_dup(opt->hopopt,
166547 - sk->sk_allocation);
166548 - if (opt->hopopt && !np->cork.opt->hopopt)
166549 - return -ENOBUFS;
166550 -
166551 - np->cork.opt->srcrt = ip6_rthdr_dup(opt->srcrt,
166552 - sk->sk_allocation);
166553 - if (opt->srcrt && !np->cork.opt->srcrt)
166554 - return -ENOBUFS;
166555 -
166556 + }
166557 + memcpy(np->cork.opt, opt, opt->tot_len);
166558 + inet->cork.flags |= IPCORK_OPT;
166559 /* need source address above miyazawa*/
166560 }
166561 dst_hold(&rt->u.dst);
166562 @@ -1199,7 +1167,8 @@
166563 } else {
166564 rt = (struct rt6_info *)inet->cork.dst;
166565 fl = &inet->cork.fl;
166566 - opt = np->cork.opt;
166567 + if (inet->cork.flags & IPCORK_OPT)
166568 + opt = np->cork.opt;
166569 transhdrlen = 0;
166570 exthdrlen = 0;
166571 mtu = inet->cork.fragsize;
166572 @@ -1438,15 +1407,9 @@
166573
166574 static void ip6_cork_release(struct inet_sock *inet, struct ipv6_pinfo *np)
166575 {
166576 - if (np->cork.opt) {
166577 - kfree(np->cork.opt->dst0opt);
166578 - kfree(np->cork.opt->dst1opt);
166579 - kfree(np->cork.opt->hopopt);
166580 - kfree(np->cork.opt->srcrt);
166581 - kfree(np->cork.opt);
166582 - np->cork.opt = NULL;
166583 - }
166584 -
166585 + inet->cork.flags &= ~IPCORK_OPT;
166586 + kfree(np->cork.opt);
166587 + np->cork.opt = NULL;
166588 if (inet->cork.dst) {
166589 dst_release(inet->cork.dst);
166590 inet->cork.dst = NULL;
166591 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/ip6_tunnel.c linux-2.6.29-rc3.owrt/net/ipv6/ip6_tunnel.c
166592 --- linux-2.6.29.owrt/net/ipv6/ip6_tunnel.c 2009-05-10 22:04:39.000000000 +0200
166593 +++ linux-2.6.29-rc3.owrt/net/ipv6/ip6_tunnel.c 2009-05-10 23:48:34.000000000 +0200
166594 @@ -249,8 +249,8 @@
166595 }
166596
166597 t = netdev_priv(dev);
166598 - t->parms = *p;
166599 ip6_tnl_dev_init(dev);
166600 + t->parms = *p;
166601
166602 if ((err = register_netdevice(dev)) < 0)
166603 goto failed_free;
166604 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c linux-2.6.29-rc3.owrt/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
166605 --- linux-2.6.29.owrt/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c 2009-05-10 22:04:39.000000000 +0200
166606 +++ linux-2.6.29-rc3.owrt/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c 2009-05-10 23:48:34.000000000 +0200
166607 @@ -49,19 +49,8 @@
166608 static const u_int8_t invmap[] = {
166609 [ICMPV6_ECHO_REQUEST - 128] = ICMPV6_ECHO_REPLY + 1,
166610 [ICMPV6_ECHO_REPLY - 128] = ICMPV6_ECHO_REQUEST + 1,
166611 - [ICMPV6_NI_QUERY - 128] = ICMPV6_NI_REPLY + 1,
166612 - [ICMPV6_NI_REPLY - 128] = ICMPV6_NI_QUERY +1
166613 -};
166614 -
166615 -static const u_int8_t noct_valid_new[] = {
166616 - [ICMPV6_MGM_QUERY - 130] = 1,
166617 - [ICMPV6_MGM_REPORT -130] = 1,
166618 - [ICMPV6_MGM_REDUCTION - 130] = 1,
166619 - [NDISC_ROUTER_SOLICITATION - 130] = 1,
166620 - [NDISC_ROUTER_ADVERTISEMENT - 130] = 1,
166621 - [NDISC_NEIGHBOUR_SOLICITATION - 130] = 1,
166622 - [NDISC_NEIGHBOUR_ADVERTISEMENT - 130] = 1,
166623 - [ICMPV6_MLD2_REPORT - 130] = 1
166624 + [ICMPV6_NI_QUERY - 128] = ICMPV6_NI_QUERY + 1,
166625 + [ICMPV6_NI_REPLY - 128] = ICMPV6_NI_REPLY +1
166626 };
166627
166628 static bool icmpv6_invert_tuple(struct nf_conntrack_tuple *tuple,
166629 @@ -189,7 +178,6 @@
166630 {
166631 const struct icmp6hdr *icmp6h;
166632 struct icmp6hdr _ih;
166633 - int type;
166634
166635 icmp6h = skb_header_pointer(skb, dataoff, sizeof(_ih), &_ih);
166636 if (icmp6h == NULL) {
166637 @@ -201,21 +189,11 @@
166638
166639 if (net->ct.sysctl_checksum && hooknum == NF_INET_PRE_ROUTING &&
166640 nf_ip6_checksum(skb, hooknum, dataoff, IPPROTO_ICMPV6)) {
166641 - if (LOG_INVALID(net, IPPROTO_ICMPV6))
166642 - nf_log_packet(PF_INET6, 0, skb, NULL, NULL, NULL,
166643 - "nf_ct_icmpv6: ICMPv6 checksum failed ");
166644 + nf_log_packet(PF_INET6, 0, skb, NULL, NULL, NULL,
166645 + "nf_ct_icmpv6: ICMPv6 checksum failed\n");
166646 return -NF_ACCEPT;
166647 }
166648
166649 - type = icmp6h->icmp6_type - 130;
166650 - if (type >= 0 && type < sizeof(noct_valid_new) &&
166651 - noct_valid_new[type]) {
166652 - skb->nfct = &nf_conntrack_untracked.ct_general;
166653 - skb->nfctinfo = IP_CT_NEW;
166654 - nf_conntrack_get(skb->nfct);
166655 - return NF_ACCEPT;
166656 - }
166657 -
166658 /* is not error message ? */
166659 if (icmp6h->icmp6_type >= 128)
166660 return NF_ACCEPT;
166661 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/netfilter/nf_conntrack_reasm.c linux-2.6.29-rc3.owrt/net/ipv6/netfilter/nf_conntrack_reasm.c
166662 --- linux-2.6.29.owrt/net/ipv6/netfilter/nf_conntrack_reasm.c 2009-05-10 22:04:39.000000000 +0200
166663 +++ linux-2.6.29-rc3.owrt/net/ipv6/netfilter/nf_conntrack_reasm.c 2009-05-10 23:48:34.000000000 +0200
166664 @@ -528,14 +528,14 @@
166665 if (!ipv6_ext_hdr(nexthdr)) {
166666 return -1;
166667 }
166668 - if (nexthdr == NEXTHDR_NONE) {
166669 - pr_debug("next header is none\n");
166670 - return -1;
166671 - }
166672 if (len < (int)sizeof(struct ipv6_opt_hdr)) {
166673 pr_debug("too short\n");
166674 return -1;
166675 }
166676 + if (nexthdr == NEXTHDR_NONE) {
166677 + pr_debug("next header is none\n");
166678 + return -1;
166679 + }
166680 if (skb_copy_bits(skb, start, &hdr, sizeof(hdr)))
166681 BUG();
166682 if (nexthdr == NEXTHDR_AUTH)
166683 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/reassembly.c linux-2.6.29-rc3.owrt/net/ipv6/reassembly.c
166684 --- linux-2.6.29.owrt/net/ipv6/reassembly.c 2009-05-10 22:04:39.000000000 +0200
166685 +++ linux-2.6.29-rc3.owrt/net/ipv6/reassembly.c 2009-05-10 23:48:34.000000000 +0200
166686 @@ -452,7 +452,6 @@
166687 static int ip6_frag_reasm(struct frag_queue *fq, struct sk_buff *prev,
166688 struct net_device *dev)
166689 {
166690 - struct net *net = container_of(fq->q.net, struct net, ipv6.frags);
166691 struct sk_buff *fp, *head = fq->q.fragments;
166692 int payload_len;
166693 unsigned int nhoff;
166694 @@ -552,7 +551,8 @@
166695 head->csum);
166696
166697 rcu_read_lock();
166698 - IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMOKS);
166699 + IP6_INC_STATS_BH(dev_net(dev),
166700 + __in6_dev_get(dev), IPSTATS_MIB_REASMOKS);
166701 rcu_read_unlock();
166702 fq->q.fragments = NULL;
166703 return 1;
166704 @@ -566,7 +566,8 @@
166705 printk(KERN_DEBUG "ip6_frag_reasm: no memory for reassembly\n");
166706 out_fail:
166707 rcu_read_lock();
166708 - IP6_INC_STATS_BH(net, __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
166709 + IP6_INC_STATS_BH(dev_net(dev),
166710 + __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
166711 rcu_read_unlock();
166712 return -1;
166713 }
166714 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/route.c linux-2.6.29-rc3.owrt/net/ipv6/route.c
166715 --- linux-2.6.29.owrt/net/ipv6/route.c 2009-05-10 22:04:39.000000000 +0200
166716 +++ linux-2.6.29-rc3.owrt/net/ipv6/route.c 2009-05-10 23:48:34.000000000 +0200
166717 @@ -794,7 +794,7 @@
166718 .proto = iph->nexthdr,
166719 };
166720
166721 - if (rt6_need_strict(&iph->daddr) && skb->dev->type != ARPHRD_PIMREG)
166722 + if (rt6_need_strict(&iph->daddr))
166723 flags |= RT6_LOOKUP_F_IFACE;
166724
166725 skb->dst = fib6_rule_lookup(net, &fl, flags, ip6_pol_route_input);
166726 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/ipv6/sit.c linux-2.6.29-rc3.owrt/net/ipv6/sit.c
166727 --- linux-2.6.29.owrt/net/ipv6/sit.c 2009-05-10 22:04:39.000000000 +0200
166728 +++ linux-2.6.29-rc3.owrt/net/ipv6/sit.c 2009-05-10 23:48:34.000000000 +0200
166729 @@ -188,9 +188,9 @@
166730 }
166731
166732 nt = netdev_priv(dev);
166733 + ipip6_tunnel_init(dev);
166734
166735 nt->parms = *parms;
166736 - ipip6_tunnel_init(dev);
166737
166738 if (parms->i_flags & SIT_ISATAP)
166739 dev->priv_flags |= IFF_ISATAP;
166740 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/mac80211/tx.c linux-2.6.29-rc3.owrt/net/mac80211/tx.c
166741 --- linux-2.6.29.owrt/net/mac80211/tx.c 2009-05-10 22:04:39.000000000 +0200
166742 +++ linux-2.6.29-rc3.owrt/net/mac80211/tx.c 2009-05-10 23:48:34.000000000 +0200
166743 @@ -752,8 +752,6 @@
166744 skb_copy_queue_mapping(frag, first);
166745
166746 frag->do_not_encrypt = first->do_not_encrypt;
166747 - frag->dev = first->dev;
166748 - frag->iif = first->iif;
166749
166750 pos += copylen;
166751 left -= copylen;
166752 @@ -1345,8 +1343,6 @@
166753 list) {
166754 if (!netif_running(sdata->dev))
166755 continue;
166756 - if (sdata->vif.type != NL80211_IFTYPE_AP)
166757 - continue;
166758 if (compare_ether_addr(sdata->dev->dev_addr,
166759 hdr->addr2)) {
166760 dev_hold(sdata->dev);
166761 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/nf_conntrack_core.c linux-2.6.29-rc3.owrt/net/netfilter/nf_conntrack_core.c
166762 --- linux-2.6.29.owrt/net/netfilter/nf_conntrack_core.c 2009-05-10 22:04:39.000000000 +0200
166763 +++ linux-2.6.29-rc3.owrt/net/netfilter/nf_conntrack_core.c 2009-05-10 23:48:34.000000000 +0200
166764 @@ -734,7 +734,7 @@
166765 NF_CT_ASSERT(skb->nfct);
166766
166767 ret = l4proto->packet(ct, skb, dataoff, ctinfo, pf, hooknum);
166768 - if (ret <= 0) {
166769 + if (ret < 0) {
166770 /* Invalid: inverse of the return code tells
166771 * the netfilter core what to do */
166772 pr_debug("nf_conntrack_in: Can't track with proto module\n");
166773 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/nf_conntrack_netlink.c linux-2.6.29-rc3.owrt/net/netfilter/nf_conntrack_netlink.c
166774 --- linux-2.6.29.owrt/net/netfilter/nf_conntrack_netlink.c 2009-05-10 22:04:39.000000000 +0200
166775 +++ linux-2.6.29-rc3.owrt/net/netfilter/nf_conntrack_netlink.c 2009-05-10 23:48:34.000000000 +0200
166776 @@ -434,7 +434,7 @@
166777 } else
166778 return NOTIFY_DONE;
166779
166780 - if (!item->report && !nfnetlink_has_listeners(group))
166781 + if (!nfnetlink_has_listeners(group))
166782 return NOTIFY_DONE;
166783
166784 skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);
166785 @@ -1215,16 +1215,6 @@
166786 }
166787 }
166788
166789 -#ifdef CONFIG_NF_NAT_NEEDED
166790 - if (cda[CTA_NAT_SEQ_ADJ_ORIG] || cda[CTA_NAT_SEQ_ADJ_REPLY]) {
166791 - err = ctnetlink_change_nat_seq_adj(ct, cda);
166792 - if (err < 0) {
166793 - rcu_read_unlock();
166794 - goto err;
166795 - }
166796 - }
166797 -#endif
166798 -
166799 if (cda[CTA_PROTOINFO]) {
166800 err = ctnetlink_change_protoinfo(ct, cda);
166801 if (err < 0) {
166802 @@ -1502,8 +1492,7 @@
166803 } else
166804 return NOTIFY_DONE;
166805
166806 - if (!item->report &&
166807 - !nfnetlink_has_listeners(NFNLGRP_CONNTRACK_EXP_NEW))
166808 + if (!nfnetlink_has_listeners(NFNLGRP_CONNTRACK_EXP_NEW))
166809 return NOTIFY_DONE;
166810
166811 skb = alloc_skb(NLMSG_GOODSIZE, GFP_ATOMIC);
166812 @@ -1780,7 +1769,6 @@
166813 goto out;
166814 }
166815
166816 - exp->class = 0;
166817 exp->expectfn = NULL;
166818 exp->flags = 0;
166819 exp->master = ct;
166820 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/nf_conntrack_proto_tcp.c linux-2.6.29-rc3.owrt/net/netfilter/nf_conntrack_proto_tcp.c
166821 --- linux-2.6.29.owrt/net/netfilter/nf_conntrack_proto_tcp.c 2009-05-10 22:04:39.000000000 +0200
166822 +++ linux-2.6.29-rc3.owrt/net/netfilter/nf_conntrack_proto_tcp.c 2009-05-10 23:48:34.000000000 +0200
166823 @@ -859,7 +859,7 @@
166824 */
166825 if (nf_ct_kill(ct))
166826 return -NF_REPEAT;
166827 - return NF_DROP;
166828 + return -NF_DROP;
166829 }
166830 /* Fall through */
166831 case TCP_CONNTRACK_IGNORE:
166832 @@ -892,7 +892,7 @@
166833 nf_log_packet(pf, 0, skb, NULL, NULL, NULL,
166834 "nf_ct_tcp: killing out of sync session ");
166835 nf_ct_kill(ct);
166836 - return NF_DROP;
166837 + return -NF_DROP;
166838 }
166839 ct->proto.tcp.last_index = index;
166840 ct->proto.tcp.last_dir = dir;
166841 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/nfnetlink_log.c linux-2.6.29-rc3.owrt/net/netfilter/nfnetlink_log.c
166842 --- linux-2.6.29.owrt/net/netfilter/nfnetlink_log.c 2009-05-10 22:04:39.000000000 +0200
166843 +++ linux-2.6.29-rc3.owrt/net/netfilter/nfnetlink_log.c 2009-05-10 23:48:34.000000000 +0200
166844 @@ -39,7 +39,7 @@
166845 #endif
166846
166847 #define NFULNL_NLBUFSIZ_DEFAULT NLMSG_GOODSIZE
166848 -#define NFULNL_TIMEOUT_DEFAULT 100 /* every second */
166849 +#define NFULNL_TIMEOUT_DEFAULT HZ /* every second */
166850 #define NFULNL_QTHRESH_DEFAULT 100 /* 100 packets */
166851 #define NFULNL_COPY_RANGE_MAX 0xFFFF /* max packet size is limited by 16-bit struct nfattr nfa_len field */
166852
166853 @@ -590,10 +590,8 @@
166854
166855 qthreshold = inst->qthreshold;
166856 /* per-rule qthreshold overrides per-instance */
166857 - if (li->u.ulog.qthreshold)
166858 - if (qthreshold > li->u.ulog.qthreshold)
166859 - qthreshold = li->u.ulog.qthreshold;
166860 -
166861 + if (qthreshold > li->u.ulog.qthreshold)
166862 + qthreshold = li->u.ulog.qthreshold;
166863
166864 switch (inst->copy_mode) {
166865 case NFULNL_COPY_META:
166866 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/x_tables.c linux-2.6.29-rc3.owrt/net/netfilter/x_tables.c
166867 --- linux-2.6.29.owrt/net/netfilter/x_tables.c 2009-05-10 22:04:39.000000000 +0200
166868 +++ linux-2.6.29-rc3.owrt/net/netfilter/x_tables.c 2009-05-10 23:48:34.000000000 +0200
166869 @@ -827,143 +827,59 @@
166870 .release = seq_release_net,
166871 };
166872
166873 -/*
166874 - * Traverse state for ip{,6}_{tables,matches} for helping crossing
166875 - * the multi-AF mutexes.
166876 - */
166877 -struct nf_mttg_trav {
166878 - struct list_head *head, *curr;
166879 - uint8_t class, nfproto;
166880 -};
166881 -
166882 -enum {
166883 - MTTG_TRAV_INIT,
166884 - MTTG_TRAV_NFP_UNSPEC,
166885 - MTTG_TRAV_NFP_SPEC,
166886 - MTTG_TRAV_DONE,
166887 -};
166888 -
166889 -static void *xt_mttg_seq_next(struct seq_file *seq, void *v, loff_t *ppos,
166890 - bool is_target)
166891 -{
166892 - static const uint8_t next_class[] = {
166893 - [MTTG_TRAV_NFP_UNSPEC] = MTTG_TRAV_NFP_SPEC,
166894 - [MTTG_TRAV_NFP_SPEC] = MTTG_TRAV_DONE,
166895 - };
166896 - struct nf_mttg_trav *trav = seq->private;
166897 -
166898 - switch (trav->class) {
166899 - case MTTG_TRAV_INIT:
166900 - trav->class = MTTG_TRAV_NFP_UNSPEC;
166901 - mutex_lock(&xt[NFPROTO_UNSPEC].mutex);
166902 - trav->head = trav->curr = is_target ?
166903 - &xt[NFPROTO_UNSPEC].target : &xt[NFPROTO_UNSPEC].match;
166904 - break;
166905 - case MTTG_TRAV_NFP_UNSPEC:
166906 - trav->curr = trav->curr->next;
166907 - if (trav->curr != trav->head)
166908 - break;
166909 - mutex_unlock(&xt[NFPROTO_UNSPEC].mutex);
166910 - mutex_lock(&xt[trav->nfproto].mutex);
166911 - trav->head = trav->curr = is_target ?
166912 - &xt[trav->nfproto].target : &xt[trav->nfproto].match;
166913 - trav->class = next_class[trav->class];
166914 - break;
166915 - case MTTG_TRAV_NFP_SPEC:
166916 - trav->curr = trav->curr->next;
166917 - if (trav->curr != trav->head)
166918 - break;
166919 - /* fallthru, _stop will unlock */
166920 - default:
166921 - return NULL;
166922 - }
166923 -
166924 - if (ppos != NULL)
166925 - ++*ppos;
166926 - return trav;
166927 -}
166928 -
166929 -static void *xt_mttg_seq_start(struct seq_file *seq, loff_t *pos,
166930 - bool is_target)
166931 +static void *xt_match_seq_start(struct seq_file *seq, loff_t *pos)
166932 {
166933 - struct nf_mttg_trav *trav = seq->private;
166934 - unsigned int j;
166935 + struct proc_dir_entry *pde = (struct proc_dir_entry *)seq->private;
166936 + u_int16_t af = (unsigned long)pde->data;
166937
166938 - trav->class = MTTG_TRAV_INIT;
166939 - for (j = 0; j < *pos; ++j)
166940 - if (xt_mttg_seq_next(seq, NULL, NULL, is_target) == NULL)
166941 - return NULL;
166942 - return trav;
166943 + mutex_lock(&xt[af].mutex);
166944 + return seq_list_start(&xt[af].match, *pos);
166945 }
166946
166947 -static void xt_mttg_seq_stop(struct seq_file *seq, void *v)
166948 +static void *xt_match_seq_next(struct seq_file *seq, void *v, loff_t *pos)
166949 {
166950 - struct nf_mttg_trav *trav = seq->private;
166951 + struct proc_dir_entry *pde = (struct proc_dir_entry *)seq->private;
166952 + u_int16_t af = (unsigned long)pde->data;
166953
166954 - switch (trav->class) {
166955 - case MTTG_TRAV_NFP_UNSPEC:
166956 - mutex_unlock(&xt[NFPROTO_UNSPEC].mutex);
166957 - break;
166958 - case MTTG_TRAV_NFP_SPEC:
166959 - mutex_unlock(&xt[trav->nfproto].mutex);
166960 - break;
166961 - }
166962 + return seq_list_next(v, &xt[af].match, pos);
166963 }
166964
166965 -static void *xt_match_seq_start(struct seq_file *seq, loff_t *pos)
166966 +static void xt_match_seq_stop(struct seq_file *seq, void *v)
166967 {
166968 - return xt_mttg_seq_start(seq, pos, false);
166969 -}
166970 + struct proc_dir_entry *pde = seq->private;
166971 + u_int16_t af = (unsigned long)pde->data;
166972
166973 -static void *xt_match_seq_next(struct seq_file *seq, void *v, loff_t *ppos)
166974 -{
166975 - return xt_mttg_seq_next(seq, v, ppos, false);
166976 + mutex_unlock(&xt[af].mutex);
166977 }
166978
166979 static int xt_match_seq_show(struct seq_file *seq, void *v)
166980 {
166981 - const struct nf_mttg_trav *trav = seq->private;
166982 - const struct xt_match *match;
166983 + struct xt_match *match = list_entry(v, struct xt_match, list);
166984
166985 - switch (trav->class) {
166986 - case MTTG_TRAV_NFP_UNSPEC:
166987 - case MTTG_TRAV_NFP_SPEC:
166988 - if (trav->curr == trav->head)
166989 - return 0;
166990 - match = list_entry(trav->curr, struct xt_match, list);
166991 - return (*match->name == '\0') ? 0 :
166992 - seq_printf(seq, "%s\n", match->name);
166993 - }
166994 - return 0;
166995 + if (strlen(match->name))
166996 + return seq_printf(seq, "%s\n", match->name);
166997 + else
166998 + return 0;
166999 }
167000
167001 static const struct seq_operations xt_match_seq_ops = {
167002 .start = xt_match_seq_start,
167003 .next = xt_match_seq_next,
167004 - .stop = xt_mttg_seq_stop,
167005 + .stop = xt_match_seq_stop,
167006 .show = xt_match_seq_show,
167007 };
167008
167009 static int xt_match_open(struct inode *inode, struct file *file)
167010 {
167011 - struct seq_file *seq;
167012 - struct nf_mttg_trav *trav;
167013 int ret;
167014
167015 - trav = kmalloc(sizeof(*trav), GFP_KERNEL);
167016 - if (trav == NULL)
167017 - return -ENOMEM;
167018 -
167019 ret = seq_open(file, &xt_match_seq_ops);
167020 - if (ret < 0) {
167021 - kfree(trav);
167022 - return ret;
167023 - }
167024 + if (!ret) {
167025 + struct seq_file *seq = file->private_data;
167026
167027 - seq = file->private_data;
167028 - seq->private = trav;
167029 - trav->nfproto = (unsigned long)PDE(inode)->data;
167030 - return 0;
167031 + seq->private = PDE(inode);
167032 + }
167033 + return ret;
167034 }
167035
167036 static const struct file_operations xt_match_ops = {
167037 @@ -971,63 +887,62 @@
167038 .open = xt_match_open,
167039 .read = seq_read,
167040 .llseek = seq_lseek,
167041 - .release = seq_release_private,
167042 + .release = seq_release,
167043 };
167044
167045 static void *xt_target_seq_start(struct seq_file *seq, loff_t *pos)
167046 {
167047 - return xt_mttg_seq_start(seq, pos, true);
167048 + struct proc_dir_entry *pde = (struct proc_dir_entry *)seq->private;
167049 + u_int16_t af = (unsigned long)pde->data;
167050 +
167051 + mutex_lock(&xt[af].mutex);
167052 + return seq_list_start(&xt[af].target, *pos);
167053 }
167054
167055 -static void *xt_target_seq_next(struct seq_file *seq, void *v, loff_t *ppos)
167056 +static void *xt_target_seq_next(struct seq_file *seq, void *v, loff_t *pos)
167057 {
167058 - return xt_mttg_seq_next(seq, v, ppos, true);
167059 + struct proc_dir_entry *pde = (struct proc_dir_entry *)seq->private;
167060 + u_int16_t af = (unsigned long)pde->data;
167061 +
167062 + return seq_list_next(v, &xt[af].target, pos);
167063 +}
167064 +
167065 +static void xt_target_seq_stop(struct seq_file *seq, void *v)
167066 +{
167067 + struct proc_dir_entry *pde = seq->private;
167068 + u_int16_t af = (unsigned long)pde->data;
167069 +
167070 + mutex_unlock(&xt[af].mutex);
167071 }
167072
167073 static int xt_target_seq_show(struct seq_file *seq, void *v)
167074 {
167075 - const struct nf_mttg_trav *trav = seq->private;
167076 - const struct xt_target *target;
167077 + struct xt_target *target = list_entry(v, struct xt_target, list);
167078
167079 - switch (trav->class) {
167080 - case MTTG_TRAV_NFP_UNSPEC:
167081 - case MTTG_TRAV_NFP_SPEC:
167082 - if (trav->curr == trav->head)
167083 - return 0;
167084 - target = list_entry(trav->curr, struct xt_target, list);
167085 - return (*target->name == '\0') ? 0 :
167086 - seq_printf(seq, "%s\n", target->name);
167087 - }
167088 - return 0;
167089 + if (strlen(target->name))
167090 + return seq_printf(seq, "%s\n", target->name);
167091 + else
167092 + return 0;
167093 }
167094
167095 static const struct seq_operations xt_target_seq_ops = {
167096 .start = xt_target_seq_start,
167097 .next = xt_target_seq_next,
167098 - .stop = xt_mttg_seq_stop,
167099 + .stop = xt_target_seq_stop,
167100 .show = xt_target_seq_show,
167101 };
167102
167103 static int xt_target_open(struct inode *inode, struct file *file)
167104 {
167105 - struct seq_file *seq;
167106 - struct nf_mttg_trav *trav;
167107 int ret;
167108
167109 - trav = kmalloc(sizeof(*trav), GFP_KERNEL);
167110 - if (trav == NULL)
167111 - return -ENOMEM;
167112 -
167113 ret = seq_open(file, &xt_target_seq_ops);
167114 - if (ret < 0) {
167115 - kfree(trav);
167116 - return ret;
167117 - }
167118 + if (!ret) {
167119 + struct seq_file *seq = file->private_data;
167120
167121 - seq = file->private_data;
167122 - seq->private = trav;
167123 - trav->nfproto = (unsigned long)PDE(inode)->data;
167124 - return 0;
167125 + seq->private = PDE(inode);
167126 + }
167127 + return ret;
167128 }
167129
167130 static const struct file_operations xt_target_ops = {
167131 @@ -1035,7 +950,7 @@
167132 .open = xt_target_open,
167133 .read = seq_read,
167134 .llseek = seq_lseek,
167135 - .release = seq_release_private,
167136 + .release = seq_release,
167137 };
167138
167139 #define FORMAT_TABLES "_tables_names"
167140 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/xt_recent.c linux-2.6.29-rc3.owrt/net/netfilter/xt_recent.c
167141 --- linux-2.6.29.owrt/net/netfilter/xt_recent.c 2009-05-10 22:04:39.000000000 +0200
167142 +++ linux-2.6.29-rc3.owrt/net/netfilter/xt_recent.c 2009-05-10 23:48:34.000000000 +0200
167143 @@ -542,7 +542,7 @@
167144 struct recent_entry *e;
167145 char buf[sizeof("+b335:1d35:1e55:dead:c0de:1715:5afe:c0de")];
167146 const char *c = buf;
167147 - union nf_inet_addr addr = {};
167148 + union nf_inet_addr addr;
167149 u_int16_t family;
167150 bool add, succ;
167151
167152 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netfilter/xt_sctp.c linux-2.6.29-rc3.owrt/net/netfilter/xt_sctp.c
167153 --- linux-2.6.29.owrt/net/netfilter/xt_sctp.c 2009-05-10 22:04:39.000000000 +0200
167154 +++ linux-2.6.29-rc3.owrt/net/netfilter/xt_sctp.c 2009-05-10 23:48:34.000000000 +0200
167155 @@ -105,7 +105,7 @@
167156
167157 switch (chunk_match_type) {
167158 case SCTP_CHUNK_MATCH_ALL:
167159 - return SCTP_CHUNKMAP_IS_CLEAR(chunkmapcopy);
167160 + return SCTP_CHUNKMAP_IS_CLEAR(info->chunkmap);
167161 case SCTP_CHUNK_MATCH_ANY:
167162 return false;
167163 case SCTP_CHUNK_MATCH_ONLY:
167164 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/netlink/af_netlink.c linux-2.6.29-rc3.owrt/net/netlink/af_netlink.c
167165 --- linux-2.6.29.owrt/net/netlink/af_netlink.c 2009-05-10 22:04:39.000000000 +0200
167166 +++ linux-2.6.29-rc3.owrt/net/netlink/af_netlink.c 2009-05-10 23:48:34.000000000 +0200
167167 @@ -1084,13 +1084,6 @@
167168 return 0;
167169 }
167170
167171 -/**
167172 - * netlink_set_err - report error to broadcast listeners
167173 - * @ssk: the kernel netlink socket, as returned by netlink_kernel_create()
167174 - * @pid: the PID of a process that we want to skip (if any)
167175 - * @groups: the broadcast group that will notice the error
167176 - * @code: error code, must be negative (as usual in kernelspace)
167177 - */
167178 void netlink_set_err(struct sock *ssk, u32 pid, u32 group, int code)
167179 {
167180 struct netlink_set_err_data info;
167181 @@ -1100,8 +1093,7 @@
167182 info.exclude_sk = ssk;
167183 info.pid = pid;
167184 info.group = group;
167185 - /* sk->sk_err wants a positive error value */
167186 - info.code = -code;
167187 + info.code = code;
167188
167189 read_lock(&nl_table_lock);
167190
167191 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/packet/af_packet.c linux-2.6.29-rc3.owrt/net/packet/af_packet.c
167192 --- linux-2.6.29.owrt/net/packet/af_packet.c 2009-05-10 22:04:39.000000000 +0200
167193 +++ linux-2.6.29-rc3.owrt/net/packet/af_packet.c 2009-05-10 23:48:34.000000000 +0200
167194 @@ -77,7 +77,6 @@
167195 #include <linux/poll.h>
167196 #include <linux/module.h>
167197 #include <linux/init.h>
167198 -#include <linux/mutex.h>
167199
167200 #ifdef CONFIG_INET
167201 #include <net/inet_common.h>
167202 @@ -176,7 +175,6 @@
167203 #endif
167204 struct packet_type prot_hook;
167205 spinlock_t bind_lock;
167206 - struct mutex pg_vec_lock;
167207 unsigned int running:1, /* prot_hook is attached*/
167208 auxdata:1,
167209 origdev:1;
167210 @@ -223,13 +221,13 @@
167211 h.raw = po->pg_vec[pg_vec_pos] + (frame_offset * po->frame_size);
167212 switch (po->tp_version) {
167213 case TPACKET_V1:
167214 - if (status != (h.h1->tp_status ? TP_STATUS_USER :
167215 - TP_STATUS_KERNEL))
167216 + if (status != h.h1->tp_status ? TP_STATUS_USER :
167217 + TP_STATUS_KERNEL)
167218 return NULL;
167219 break;
167220 case TPACKET_V2:
167221 - if (status != (h.h2->tp_status ? TP_STATUS_USER :
167222 - TP_STATUS_KERNEL))
167223 + if (status != h.h2->tp_status ? TP_STATUS_USER :
167224 + TP_STATUS_KERNEL)
167225 return NULL;
167226 break;
167227 }
167228 @@ -1074,7 +1072,6 @@
167229 */
167230
167231 spin_lock_init(&po->bind_lock);
167232 - mutex_init(&po->pg_vec_lock);
167233 po->prot_hook.func = packet_rcv;
167234 po->pkt_type = PACKET_MASK_ANY & ~(1 << PACKET_LOOPBACK);
167235
167236 @@ -1889,7 +1886,6 @@
167237 synchronize_net();
167238
167239 err = -EBUSY;
167240 - mutex_lock(&po->pg_vec_lock);
167241 if (closing || atomic_read(&po->mapped) == 0) {
167242 err = 0;
167243 #define XC(a, b) ({ __typeof__ ((a)) __t; __t = (a); (a) = (b); __t; })
167244 @@ -1911,7 +1907,6 @@
167245 if (atomic_read(&po->mapped))
167246 printk(KERN_DEBUG "packet_mmap: vma is busy: %d\n", atomic_read(&po->mapped));
167247 }
167248 - mutex_unlock(&po->pg_vec_lock);
167249
167250 spin_lock(&po->bind_lock);
167251 if (was_running && !po->running) {
167252 @@ -1944,7 +1939,7 @@
167253
167254 size = vma->vm_end - vma->vm_start;
167255
167256 - mutex_lock(&po->pg_vec_lock);
167257 + lock_sock(sk);
167258 if (po->pg_vec == NULL)
167259 goto out;
167260 if (size != po->pg_vec_len*po->pg_vec_pages*PAGE_SIZE)
167261 @@ -1967,7 +1962,7 @@
167262 err = 0;
167263
167264 out:
167265 - mutex_unlock(&po->pg_vec_lock);
167266 + release_sock(sk);
167267 return err;
167268 }
167269 #endif
167270 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/phonet/pep.c linux-2.6.29-rc3.owrt/net/phonet/pep.c
167271 --- linux-2.6.29.owrt/net/phonet/pep.c 2009-05-10 22:04:39.000000000 +0200
167272 +++ linux-2.6.29-rc3.owrt/net/phonet/pep.c 2009-05-10 23:48:34.000000000 +0200
167273 @@ -553,7 +553,7 @@
167274 {
167275 struct pep_sock *pn = pep_sk(sk);
167276 struct sock *sknode;
167277 - struct pnpipehdr *hdr;
167278 + struct pnpipehdr *hdr = pnp_hdr(skb);
167279 struct sockaddr_pn dst;
167280 int err = NET_RX_SUCCESS;
167281 u8 pipe_handle;
167282 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/phonet/pep-gprs.c linux-2.6.29-rc3.owrt/net/phonet/pep-gprs.c
167283 --- linux-2.6.29.owrt/net/phonet/pep-gprs.c 2009-05-10 22:04:39.000000000 +0200
167284 +++ linux-2.6.29-rc3.owrt/net/phonet/pep-gprs.c 2009-05-10 23:48:34.000000000 +0200
167285 @@ -207,6 +207,7 @@
167286 dev->name, err);
167287 dev->stats.tx_aborted_errors++;
167288 dev->stats.tx_errors++;
167289 + dev_kfree_skb(skb);
167290 } else {
167291 dev->stats.tx_packets++;
167292 dev->stats.tx_bytes += len;
167293 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/rxrpc/af_rxrpc.c linux-2.6.29-rc3.owrt/net/rxrpc/af_rxrpc.c
167294 --- linux-2.6.29.owrt/net/rxrpc/af_rxrpc.c 2009-05-10 22:04:39.000000000 +0200
167295 +++ linux-2.6.29-rc3.owrt/net/rxrpc/af_rxrpc.c 2009-05-10 23:48:34.000000000 +0200
167296 @@ -284,13 +284,13 @@
167297 if (IS_ERR(trans)) {
167298 call = ERR_CAST(trans);
167299 trans = NULL;
167300 - goto out_notrans;
167301 + goto out;
167302 }
167303 } else {
167304 trans = rx->trans;
167305 if (!trans) {
167306 call = ERR_PTR(-ENOTCONN);
167307 - goto out_notrans;
167308 + goto out;
167309 }
167310 atomic_inc(&trans->usage);
167311 }
167312 @@ -315,7 +315,6 @@
167313 rxrpc_put_bundle(trans, bundle);
167314 out:
167315 rxrpc_put_transport(trans);
167316 -out_notrans:
167317 release_sock(&rx->sk);
167318 _leave(" = %p", call);
167319 return call;
167320 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sched/act_police.c linux-2.6.29-rc3.owrt/net/sched/act_police.c
167321 --- linux-2.6.29.owrt/net/sched/act_police.c 2009-05-10 22:04:39.000000000 +0200
167322 +++ linux-2.6.29-rc3.owrt/net/sched/act_police.c 2009-05-10 23:48:34.000000000 +0200
167323 @@ -183,6 +183,13 @@
167324 if (R_tab == NULL)
167325 goto failure;
167326
167327 + if (!est && (ret == ACT_P_CREATED ||
167328 + !gen_estimator_active(&police->tcf_bstats,
167329 + &police->tcf_rate_est))) {
167330 + err = -EINVAL;
167331 + goto failure;
167332 + }
167333 +
167334 if (parm->peakrate.rate) {
167335 P_tab = qdisc_get_rtab(&parm->peakrate,
167336 tb[TCA_POLICE_PEAKRATE]);
167337 @@ -198,12 +205,6 @@
167338 &police->tcf_lock, est);
167339 if (err)
167340 goto failure_unlock;
167341 - } else if (tb[TCA_POLICE_AVRATE] &&
167342 - (ret == ACT_P_CREATED ||
167343 - !gen_estimator_active(&police->tcf_bstats,
167344 - &police->tcf_rate_est))) {
167345 - err = -EINVAL;
167346 - goto failure_unlock;
167347 }
167348
167349 /* No failure allowed after this point */
167350 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sched/sch_drr.c linux-2.6.29-rc3.owrt/net/sched/sch_drr.c
167351 --- linux-2.6.29.owrt/net/sched/sch_drr.c 2009-05-10 22:04:39.000000000 +0200
167352 +++ linux-2.6.29-rc3.owrt/net/sched/sch_drr.c 2009-05-10 23:48:34.000000000 +0200
167353 @@ -66,15 +66,11 @@
167354 {
167355 struct drr_sched *q = qdisc_priv(sch);
167356 struct drr_class *cl = (struct drr_class *)*arg;
167357 - struct nlattr *opt = tca[TCA_OPTIONS];
167358 struct nlattr *tb[TCA_DRR_MAX + 1];
167359 u32 quantum;
167360 int err;
167361
167362 - if (!opt)
167363 - return -EINVAL;
167364 -
167365 - err = nla_parse_nested(tb, TCA_DRR_MAX, opt, drr_policy);
167366 + err = nla_parse_nested(tb, TCA_DRR_MAX, tca[TCA_OPTIONS], drr_policy);
167367 if (err < 0)
167368 return err;
167369
167370 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sctp/endpointola.c linux-2.6.29-rc3.owrt/net/sctp/endpointola.c
167371 --- linux-2.6.29.owrt/net/sctp/endpointola.c 2009-05-10 22:04:39.000000000 +0200
167372 +++ linux-2.6.29-rc3.owrt/net/sctp/endpointola.c 2009-05-10 23:48:34.000000000 +0200
167373 @@ -111,8 +111,7 @@
167374 if (sctp_addip_enable) {
167375 auth_chunks->chunks[0] = SCTP_CID_ASCONF;
167376 auth_chunks->chunks[1] = SCTP_CID_ASCONF_ACK;
167377 - auth_chunks->param_hdr.length =
167378 - htons(sizeof(sctp_paramhdr_t) + 2);
167379 + auth_chunks->param_hdr.length += htons(2);
167380 }
167381 }
167382
167383 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sctp/protocol.c linux-2.6.29-rc3.owrt/net/sctp/protocol.c
167384 --- linux-2.6.29.owrt/net/sctp/protocol.c 2009-05-10 22:04:39.000000000 +0200
167385 +++ linux-2.6.29-rc3.owrt/net/sctp/protocol.c 2009-05-10 23:48:34.000000000 +0200
167386 @@ -717,20 +717,15 @@
167387 static int sctp_ctl_sock_init(void)
167388 {
167389 int err;
167390 - sa_family_t family = PF_INET;
167391 + sa_family_t family;
167392
167393 if (sctp_get_pf_specific(PF_INET6))
167394 family = PF_INET6;
167395 + else
167396 + family = PF_INET;
167397
167398 err = inet_ctl_sock_create(&sctp_ctl_sock, family,
167399 SOCK_SEQPACKET, IPPROTO_SCTP, &init_net);
167400 -
167401 - /* If IPv6 socket could not be created, try the IPv4 socket */
167402 - if (err < 0 && family == PF_INET6)
167403 - err = inet_ctl_sock_create(&sctp_ctl_sock, AF_INET,
167404 - SOCK_SEQPACKET, IPPROTO_SCTP,
167405 - &init_net);
167406 -
167407 if (err < 0) {
167408 printk(KERN_ERR
167409 "SCTP: Failed to create the SCTP control socket.\n");
167410 @@ -1327,8 +1322,9 @@
167411 out:
167412 return status;
167413 err_v6_add_protocol:
167414 - sctp_v4_del_protocol();
167415 + sctp_v6_del_protocol();
167416 err_add_protocol:
167417 + sctp_v4_del_protocol();
167418 inet_ctl_sock_destroy(sctp_ctl_sock);
167419 err_ctl_sock_init:
167420 sctp_v6_protosw_exit();
167421 @@ -1339,6 +1335,7 @@
167422 sctp_v4_pf_exit();
167423 sctp_v6_pf_exit();
167424 sctp_sysctl_unregister();
167425 + list_del(&sctp_af_inet.list);
167426 free_pages((unsigned long)sctp_port_hashtable,
167427 get_order(sctp_port_hashsize *
167428 sizeof(struct sctp_bind_hashbucket)));
167429 @@ -1386,6 +1383,7 @@
167430 sctp_v4_pf_exit();
167431
167432 sctp_sysctl_unregister();
167433 + list_del(&sctp_af_inet.list);
167434
167435 free_pages((unsigned long)sctp_assoc_hashtable,
167436 get_order(sctp_assoc_hashsize *
167437 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sctp/sm_sideeffect.c linux-2.6.29-rc3.owrt/net/sctp/sm_sideeffect.c
167438 --- linux-2.6.29.owrt/net/sctp/sm_sideeffect.c 2009-05-10 22:04:39.000000000 +0200
167439 +++ linux-2.6.29-rc3.owrt/net/sctp/sm_sideeffect.c 2009-05-10 23:48:34.000000000 +0200
167440 @@ -787,48 +787,36 @@
167441 struct sctp_association *asoc,
167442 struct sctp_chunk *chunk)
167443 {
167444 + struct sctp_operr_chunk *operr_chunk;
167445 struct sctp_errhdr *err_hdr;
167446 - struct sctp_ulpevent *ev;
167447 -
167448 - while (chunk->chunk_end > chunk->skb->data) {
167449 - err_hdr = (struct sctp_errhdr *)(chunk->skb->data);
167450
167451 - ev = sctp_ulpevent_make_remote_error(asoc, chunk, 0,
167452 - GFP_ATOMIC);
167453 - if (!ev)
167454 - return;
167455 -
167456 - sctp_ulpq_tail_event(&asoc->ulpq, ev);
167457 + operr_chunk = (struct sctp_operr_chunk *)chunk->chunk_hdr;
167458 + err_hdr = &operr_chunk->err_hdr;
167459
167460 - switch (err_hdr->cause) {
167461 - case SCTP_ERROR_UNKNOWN_CHUNK:
167462 - {
167463 - sctp_chunkhdr_t *unk_chunk_hdr;
167464 -
167465 - unk_chunk_hdr = (sctp_chunkhdr_t *)err_hdr->variable;
167466 - switch (unk_chunk_hdr->type) {
167467 - /* ADDIP 4.1 A9) If the peer responds to an ASCONF with
167468 - * an ERROR chunk reporting that it did not recognized
167469 - * the ASCONF chunk type, the sender of the ASCONF MUST
167470 - * NOT send any further ASCONF chunks and MUST stop its
167471 - * T-4 timer.
167472 - */
167473 - case SCTP_CID_ASCONF:
167474 - if (asoc->peer.asconf_capable == 0)
167475 - break;
167476 -
167477 - asoc->peer.asconf_capable = 0;
167478 - sctp_add_cmd_sf(cmds, SCTP_CMD_TIMER_STOP,
167479 + switch (err_hdr->cause) {
167480 + case SCTP_ERROR_UNKNOWN_CHUNK:
167481 + {
167482 + struct sctp_chunkhdr *unk_chunk_hdr;
167483 +
167484 + unk_chunk_hdr = (struct sctp_chunkhdr *)err_hdr->variable;
167485 + switch (unk_chunk_hdr->type) {
167486 + /* ADDIP 4.1 A9) If the peer responds to an ASCONF with an
167487 + * ERROR chunk reporting that it did not recognized the ASCONF
167488 + * chunk type, the sender of the ASCONF MUST NOT send any
167489 + * further ASCONF chunks and MUST stop its T-4 timer.
167490 + */
167491 + case SCTP_CID_ASCONF:
167492 + asoc->peer.asconf_capable = 0;
167493 + sctp_add_cmd_sf(cmds, SCTP_CMD_TIMER_STOP,
167494 SCTP_TO(SCTP_EVENT_TIMEOUT_T4_RTO));
167495 - break;
167496 - default:
167497 - break;
167498 - }
167499 break;
167500 - }
167501 default:
167502 break;
167503 }
167504 + break;
167505 + }
167506 + default:
167507 + break;
167508 }
167509 }
167510
167511 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sctp/sm_statefuns.c linux-2.6.29-rc3.owrt/net/sctp/sm_statefuns.c
167512 --- linux-2.6.29.owrt/net/sctp/sm_statefuns.c 2009-05-10 22:04:39.000000000 +0200
167513 +++ linux-2.6.29-rc3.owrt/net/sctp/sm_statefuns.c 2009-05-10 23:48:34.000000000 +0200
167514 @@ -3163,6 +3163,7 @@
167515 sctp_cmd_seq_t *commands)
167516 {
167517 struct sctp_chunk *chunk = arg;
167518 + struct sctp_ulpevent *ev;
167519
167520 if (!sctp_vtag_verify(chunk, asoc))
167521 return sctp_sf_pdiscard(ep, asoc, type, arg, commands);
167522 @@ -3172,10 +3173,21 @@
167523 return sctp_sf_violation_chunklen(ep, asoc, type, arg,
167524 commands);
167525
167526 - sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_OPERR,
167527 - SCTP_CHUNK(chunk));
167528 + while (chunk->chunk_end > chunk->skb->data) {
167529 + ev = sctp_ulpevent_make_remote_error(asoc, chunk, 0,
167530 + GFP_ATOMIC);
167531 + if (!ev)
167532 + goto nomem;
167533
167534 + sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP,
167535 + SCTP_ULPEVENT(ev));
167536 + sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_OPERR,
167537 + SCTP_CHUNK(chunk));
167538 + }
167539 return SCTP_DISPOSITION_CONSUME;
167540 +
167541 +nomem:
167542 + return SCTP_DISPOSITION_NOMEM;
167543 }
167544
167545 /*
167546 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sunrpc/Kconfig linux-2.6.29-rc3.owrt/net/sunrpc/Kconfig
167547 --- linux-2.6.29.owrt/net/sunrpc/Kconfig 2009-05-10 22:04:39.000000000 +0200
167548 +++ linux-2.6.29-rc3.owrt/net/sunrpc/Kconfig 2009-05-10 23:48:34.000000000 +0200
167549 @@ -6,7 +6,7 @@
167550
167551 config SUNRPC_XPRT_RDMA
167552 tristate
167553 - depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS && EXPERIMENTAL
167554 + depends on SUNRPC && INFINIBAND && EXPERIMENTAL
167555 default SUNRPC && INFINIBAND
167556 help
167557 This option allows the NFS client and server to support
167558 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sunrpc/sched.c linux-2.6.29-rc3.owrt/net/sunrpc/sched.c
167559 --- linux-2.6.29.owrt/net/sunrpc/sched.c 2009-05-10 22:04:39.000000000 +0200
167560 +++ linux-2.6.29-rc3.owrt/net/sunrpc/sched.c 2009-05-10 23:48:34.000000000 +0200
167561 @@ -293,6 +293,11 @@
167562 rpc_clear_queued(task);
167563 if (rpc_test_and_set_running(task))
167564 return;
167565 + /* We might have raced */
167566 + if (RPC_IS_QUEUED(task)) {
167567 + rpc_clear_running(task);
167568 + return;
167569 + }
167570 if (RPC_IS_ASYNC(task)) {
167571 int status;
167572
167573 @@ -602,9 +607,7 @@
167574 */
167575 static void __rpc_execute(struct rpc_task *task)
167576 {
167577 - struct rpc_wait_queue *queue;
167578 - int task_is_async = RPC_IS_ASYNC(task);
167579 - int status = 0;
167580 + int status = 0;
167581
167582 dprintk("RPC: %5u __rpc_execute flags=0x%x\n",
167583 task->tk_pid, task->tk_flags);
167584 @@ -644,25 +647,15 @@
167585 */
167586 if (!RPC_IS_QUEUED(task))
167587 continue;
167588 - /*
167589 - * The queue->lock protects against races with
167590 - * rpc_make_runnable().
167591 - *
167592 - * Note that once we clear RPC_TASK_RUNNING on an asynchronous
167593 - * rpc_task, rpc_make_runnable() can assign it to a
167594 - * different workqueue. We therefore cannot assume that the
167595 - * rpc_task pointer may still be dereferenced.
167596 - */
167597 - queue = task->tk_waitqueue;
167598 - spin_lock_bh(&queue->lock);
167599 - if (!RPC_IS_QUEUED(task)) {
167600 - spin_unlock_bh(&queue->lock);
167601 + rpc_clear_running(task);
167602 + if (RPC_IS_ASYNC(task)) {
167603 + /* Careful! we may have raced... */
167604 + if (RPC_IS_QUEUED(task))
167605 + return;
167606 + if (rpc_test_and_set_running(task))
167607 + return;
167608 continue;
167609 }
167610 - rpc_clear_running(task);
167611 - spin_unlock_bh(&queue->lock);
167612 - if (task_is_async)
167613 - return;
167614
167615 /* sync task: sleep here */
167616 dprintk("RPC: %5u sync task going to sleep\n", task->tk_pid);
167617 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sunrpc/xprt.c linux-2.6.29-rc3.owrt/net/sunrpc/xprt.c
167618 --- linux-2.6.29.owrt/net/sunrpc/xprt.c 2009-05-10 22:04:39.000000000 +0200
167619 +++ linux-2.6.29-rc3.owrt/net/sunrpc/xprt.c 2009-05-10 23:48:34.000000000 +0200
167620 @@ -663,7 +663,7 @@
167621 xprt, (xprt_connected(xprt) ? "is" : "is not"));
167622
167623 if (!xprt_bound(xprt)) {
167624 - task->tk_status = -EAGAIN;
167625 + task->tk_status = -EIO;
167626 return;
167627 }
167628 if (!xprt_lock_write(xprt, task))
167629 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/sunrpc/xprtsock.c linux-2.6.29-rc3.owrt/net/sunrpc/xprtsock.c
167630 --- linux-2.6.29.owrt/net/sunrpc/xprtsock.c 2009-05-10 22:04:39.000000000 +0200
167631 +++ linux-2.6.29-rc3.owrt/net/sunrpc/xprtsock.c 2009-05-10 23:48:34.000000000 +0200
167632 @@ -467,7 +467,7 @@
167633 int err, sent = 0;
167634
167635 if (unlikely(!sock))
167636 - return -ENOTSOCK;
167637 + return -ENOTCONN;
167638
167639 clear_bit(SOCK_ASYNC_NOSPACE, &sock->flags);
167640 if (base != 0) {
167641 @@ -577,8 +577,6 @@
167642 req->rq_svec->iov_base,
167643 req->rq_svec->iov_len);
167644
167645 - if (!xprt_bound(xprt))
167646 - return -ENOTCONN;
167647 status = xs_sendpages(transport->sock,
167648 xs_addr(xprt),
167649 xprt->addrlen, xdr,
167650 @@ -596,10 +594,6 @@
167651 }
167652
167653 switch (status) {
167654 - case -ENOTSOCK:
167655 - status = -ENOTCONN;
167656 - /* Should we call xs_close() here? */
167657 - break;
167658 case -EAGAIN:
167659 xs_nospace(task);
167660 break;
167661 @@ -699,10 +693,6 @@
167662 }
167663
167664 switch (status) {
167665 - case -ENOTSOCK:
167666 - status = -ENOTCONN;
167667 - /* Should we call xs_close() here? */
167668 - break;
167669 case -EAGAIN:
167670 xs_nospace(task);
167671 break;
167672 @@ -1533,7 +1523,7 @@
167673 struct socket *sock = transport->sock;
167674 int err, status = -EIO;
167675
167676 - if (xprt->shutdown)
167677 + if (xprt->shutdown || !xprt_bound(xprt))
167678 goto out;
167679
167680 /* Start by resetting any existing state */
167681 @@ -1574,7 +1564,7 @@
167682 struct socket *sock = transport->sock;
167683 int err, status = -EIO;
167684
167685 - if (xprt->shutdown)
167686 + if (xprt->shutdown || !xprt_bound(xprt))
167687 goto out;
167688
167689 /* Start by resetting any existing state */
167690 @@ -1658,9 +1648,6 @@
167691 write_unlock_bh(&sk->sk_callback_lock);
167692 }
167693
167694 - if (!xprt_bound(xprt))
167695 - return -ENOTCONN;
167696 -
167697 /* Tell the socket layer to start connecting... */
167698 xprt->stat.connect_count++;
167699 xprt->stat.connect_start = jiffies;
167700 @@ -1681,7 +1668,7 @@
167701 struct socket *sock = transport->sock;
167702 int err, status = -EIO;
167703
167704 - if (xprt->shutdown)
167705 + if (xprt->shutdown || !xprt_bound(xprt))
167706 goto out;
167707
167708 if (!sock) {
167709 @@ -1741,7 +1728,7 @@
167710 struct socket *sock = transport->sock;
167711 int err, status = -EIO;
167712
167713 - if (xprt->shutdown)
167714 + if (xprt->shutdown || !xprt_bound(xprt))
167715 goto out;
167716
167717 if (!sock) {
167718 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wimax/debugfs.c linux-2.6.29-rc3.owrt/net/wimax/debugfs.c
167719 --- linux-2.6.29.owrt/net/wimax/debugfs.c 2009-05-10 22:04:39.000000000 +0200
167720 +++ linux-2.6.29-rc3.owrt/net/wimax/debugfs.c 2009-05-10 23:48:34.000000000 +0200
167721 @@ -28,6 +28,17 @@
167722 #include "debug-levels.h"
167723
167724
167725 +/* Debug framework control of debug levels */
167726 +struct d_level D_LEVEL[] = {
167727 + D_SUBMODULE_DEFINE(debugfs),
167728 + D_SUBMODULE_DEFINE(id_table),
167729 + D_SUBMODULE_DEFINE(op_msg),
167730 + D_SUBMODULE_DEFINE(op_reset),
167731 + D_SUBMODULE_DEFINE(op_rfkill),
167732 + D_SUBMODULE_DEFINE(stack),
167733 +};
167734 +size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL);
167735 +
167736 #define __debugfs_register(prefix, name, parent) \
167737 do { \
167738 result = d_level_register_debugfs(prefix, name, parent); \
167739 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wimax/id-table.c linux-2.6.29-rc3.owrt/net/wimax/id-table.c
167740 --- linux-2.6.29.owrt/net/wimax/id-table.c 2009-05-10 22:04:39.000000000 +0200
167741 +++ linux-2.6.29-rc3.owrt/net/wimax/id-table.c 2009-05-10 23:48:34.000000000 +0200
167742 @@ -94,13 +94,12 @@
167743 list_for_each_entry(wimax_dev, &wimax_id_table, id_table_node) {
167744 if (wimax_dev->net_dev->ifindex == ifindex) {
167745 dev_hold(wimax_dev->net_dev);
167746 - goto found;
167747 + break;
167748 }
167749 }
167750 - wimax_dev = NULL;
167751 - d_printf(1, NULL, "wimax: no devices found with ifindex %d\n",
167752 - ifindex);
167753 -found:
167754 + if (wimax_dev == NULL)
167755 + d_printf(1, NULL, "wimax: no devices found with ifindex %d\n",
167756 + ifindex);
167757 spin_unlock(&wimax_id_table_lock);
167758 d_fnend(3, NULL, "(info %p ifindex %d) = %p\n",
167759 info, ifindex, wimax_dev);
167760 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wimax/stack.c linux-2.6.29-rc3.owrt/net/wimax/stack.c
167761 --- linux-2.6.29.owrt/net/wimax/stack.c 2009-05-10 22:04:39.000000000 +0200
167762 +++ linux-2.6.29-rc3.owrt/net/wimax/stack.c 2009-05-10 23:48:34.000000000 +0200
167763 @@ -516,19 +516,6 @@
167764 }
167765 EXPORT_SYMBOL_GPL(wimax_dev_rm);
167766
167767 -
167768 -/* Debug framework control of debug levels */
167769 -struct d_level D_LEVEL[] = {
167770 - D_SUBMODULE_DEFINE(debugfs),
167771 - D_SUBMODULE_DEFINE(id_table),
167772 - D_SUBMODULE_DEFINE(op_msg),
167773 - D_SUBMODULE_DEFINE(op_reset),
167774 - D_SUBMODULE_DEFINE(op_rfkill),
167775 - D_SUBMODULE_DEFINE(stack),
167776 -};
167777 -size_t D_LEVEL_SIZE = ARRAY_SIZE(D_LEVEL);
167778 -
167779 -
167780 struct genl_family wimax_gnl_family = {
167781 .id = GENL_ID_GENERATE,
167782 .name = "WiMAX",
167783 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wireless/Kconfig linux-2.6.29-rc3.owrt/net/wireless/Kconfig
167784 --- linux-2.6.29.owrt/net/wireless/Kconfig 2009-05-10 22:04:39.000000000 +0200
167785 +++ linux-2.6.29-rc3.owrt/net/wireless/Kconfig 2009-05-10 23:48:34.000000000 +0200
167786 @@ -102,13 +102,3 @@
167787
167788 config LIB80211_CRYPT_TKIP
167789 tristate
167790 -
167791 -config LIB80211_DEBUG
167792 - bool "lib80211 debugging messages"
167793 - depends on LIB80211
167794 - default n
167795 - ---help---
167796 - You can enable this if you want verbose debugging messages
167797 - from lib80211.
167798 -
167799 - If unsure, say N.
167800 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wireless/lib80211_crypt_ccmp.c linux-2.6.29-rc3.owrt/net/wireless/lib80211_crypt_ccmp.c
167801 --- linux-2.6.29.owrt/net/wireless/lib80211_crypt_ccmp.c 2009-05-10 22:04:39.000000000 +0200
167802 +++ linux-2.6.29-rc3.owrt/net/wireless/lib80211_crypt_ccmp.c 2009-05-10 23:48:34.000000000 +0200
167803 @@ -337,7 +337,6 @@
167804 pos += 8;
167805
167806 if (ccmp_replay_check(pn, key->rx_pn)) {
167807 -#ifdef CONFIG_LIB80211_DEBUG
167808 if (net_ratelimit()) {
167809 printk(KERN_DEBUG "CCMP: replay detected: STA=%pM "
167810 "previous PN %02x%02x%02x%02x%02x%02x "
167811 @@ -347,7 +346,6 @@
167812 key->rx_pn[3], key->rx_pn[4], key->rx_pn[5],
167813 pn[0], pn[1], pn[2], pn[3], pn[4], pn[5]);
167814 }
167815 -#endif
167816 key->dot11RSNAStatsCCMPReplays++;
167817 return -4;
167818 }
167819 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wireless/lib80211_crypt_tkip.c linux-2.6.29-rc3.owrt/net/wireless/lib80211_crypt_tkip.c
167820 --- linux-2.6.29.owrt/net/wireless/lib80211_crypt_tkip.c 2009-05-10 22:04:39.000000000 +0200
167821 +++ linux-2.6.29-rc3.owrt/net/wireless/lib80211_crypt_tkip.c 2009-05-10 23:48:34.000000000 +0200
167822 @@ -465,14 +465,12 @@
167823 pos += 8;
167824
167825 if (tkip_replay_check(iv32, iv16, tkey->rx_iv32, tkey->rx_iv16)) {
167826 -#ifdef CONFIG_LIB80211_DEBUG
167827 if (net_ratelimit()) {
167828 printk(KERN_DEBUG "TKIP: replay detected: STA=%pM"
167829 " previous TSC %08x%04x received TSC "
167830 "%08x%04x\n", hdr->addr2,
167831 tkey->rx_iv32, tkey->rx_iv16, iv32, iv16);
167832 }
167833 -#endif
167834 tkey->dot11RSNAStatsTKIPReplays++;
167835 return -4;
167836 }
167837 @@ -507,12 +505,10 @@
167838 * it needs to be recalculated for the next packet. */
167839 tkey->rx_phase1_done = 0;
167840 }
167841 -#ifdef CONFIG_LIB80211_DEBUG
167842 if (net_ratelimit()) {
167843 printk(KERN_DEBUG "TKIP: ICV error detected: STA="
167844 "%pM\n", hdr->addr2);
167845 }
167846 -#endif
167847 tkey->dot11RSNAStatsTKIPICVErrors++;
167848 return -5;
167849 }
167850 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wireless/nl80211.c linux-2.6.29-rc3.owrt/net/wireless/nl80211.c
167851 --- linux-2.6.29.owrt/net/wireless/nl80211.c 2009-05-10 22:04:39.000000000 +0200
167852 +++ linux-2.6.29-rc3.owrt/net/wireless/nl80211.c 2009-05-10 23:48:34.000000000 +0200
167853 @@ -1908,11 +1908,6 @@
167854 if (err)
167855 return err;
167856
167857 - if (!drv->ops->get_mesh_params) {
167858 - err = -EOPNOTSUPP;
167859 - goto out;
167860 - }
167861 -
167862 /* Get the mesh params */
167863 rtnl_lock();
167864 err = drv->ops->get_mesh_params(&drv->wiphy, dev, &cur_params);
167865 @@ -2022,11 +2017,6 @@
167866 if (err)
167867 return err;
167868
167869 - if (!drv->ops->set_mesh_params) {
167870 - err = -EOPNOTSUPP;
167871 - goto out;
167872 - }
167873 -
167874 /* This makes sure that there aren't more than 32 mesh config
167875 * parameters (otherwise our bitfield scheme would not work.) */
167876 BUILD_BUG_ON(NL80211_MESHCONF_ATTR_MAX > 32);
167877 @@ -2071,7 +2061,6 @@
167878 err = drv->ops->set_mesh_params(&drv->wiphy, dev, &cfg, mask);
167879 rtnl_unlock();
167880
167881 - out:
167882 /* cleanup */
167883 cfg80211_put_dev(drv);
167884 dev_put(dev);
167885 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/wireless/reg.c linux-2.6.29-rc3.owrt/net/wireless/reg.c
167886 --- linux-2.6.29.owrt/net/wireless/reg.c 2009-05-10 22:04:39.000000000 +0200
167887 +++ linux-2.6.29-rc3.owrt/net/wireless/reg.c 2009-05-10 23:48:34.000000000 +0200
167888 @@ -380,8 +380,7 @@
167889
167890 freq_diff = freq_range->end_freq_khz - freq_range->start_freq_khz;
167891
167892 - if (freq_range->end_freq_khz <= freq_range->start_freq_khz ||
167893 - freq_range->max_bandwidth_khz > freq_diff)
167894 + if (freq_diff <= 0 || freq_range->max_bandwidth_khz > freq_diff)
167895 return false;
167896
167897 return true;
167898 @@ -499,7 +498,6 @@
167899 * calculate the number of reg rules we will need. We will need one
167900 * for each channel subband */
167901 while (country_ie_len >= 3) {
167902 - int end_channel = 0;
167903 struct ieee80211_country_ie_triplet *triplet =
167904 (struct ieee80211_country_ie_triplet *) country_ie;
167905 int cur_sub_max_channel = 0, cur_channel = 0;
167906 @@ -511,25 +509,9 @@
167907 continue;
167908 }
167909
167910 - /* 2 GHz */
167911 - if (triplet->chans.first_channel <= 14)
167912 - end_channel = triplet->chans.first_channel +
167913 - triplet->chans.num_channels;
167914 - else
167915 - /*
167916 - * 5 GHz -- For example in country IEs if the first
167917 - * channel given is 36 and the number of channels is 4
167918 - * then the individual channel numbers defined for the
167919 - * 5 GHz PHY by these parameters are: 36, 40, 44, and 48
167920 - * and not 36, 37, 38, 39.
167921 - *
167922 - * See: http://tinyurl.com/11d-clarification
167923 - */
167924 - end_channel = triplet->chans.first_channel +
167925 - (4 * (triplet->chans.num_channels - 1));
167926 -
167927 cur_channel = triplet->chans.first_channel;
167928 - cur_sub_max_channel = end_channel;
167929 + cur_sub_max_channel = ieee80211_channel_to_frequency(
167930 + cur_channel + triplet->chans.num_channels);
167931
167932 /* Basic sanity check */
167933 if (cur_sub_max_channel < cur_channel)
167934 @@ -608,6 +590,15 @@
167935 end_channel = triplet->chans.first_channel +
167936 triplet->chans.num_channels;
167937 else
167938 + /*
167939 + * 5 GHz -- For example in country IEs if the first
167940 + * channel given is 36 and the number of channels is 4
167941 + * then the individual channel numbers defined for the
167942 + * 5 GHz PHY by these parameters are: 36, 40, 44, and 48
167943 + * and not 36, 37, 38, 39.
167944 + *
167945 + * See: http://tinyurl.com/11d-clarification
167946 + */
167947 end_channel = triplet->chans.first_channel +
167948 (4 * (triplet->chans.num_channels - 1));
167949
167950 @@ -1285,7 +1276,7 @@
167951 if (intersected_rd) {
167952 printk(KERN_DEBUG "cfg80211: We intersect both of these "
167953 "and get:\n");
167954 - print_regdomain_info(intersected_rd);
167955 + print_regdomain_info(rd);
167956 return;
167957 }
167958 printk(KERN_DEBUG "cfg80211: Intersection between both failed\n");
167959 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/net/xfrm/xfrm_state.c linux-2.6.29-rc3.owrt/net/xfrm/xfrm_state.c
167960 --- linux-2.6.29.owrt/net/xfrm/xfrm_state.c 2009-05-10 22:04:39.000000000 +0200
167961 +++ linux-2.6.29-rc3.owrt/net/xfrm/xfrm_state.c 2009-05-10 23:48:34.000000000 +0200
167962 @@ -748,51 +748,12 @@
167963 schedule_work(&net->xfrm.state_hash_work);
167964 }
167965
167966 -static void xfrm_state_look_at(struct xfrm_policy *pol, struct xfrm_state *x,
167967 - struct flowi *fl, unsigned short family,
167968 - xfrm_address_t *daddr, xfrm_address_t *saddr,
167969 - struct xfrm_state **best, int *acq_in_progress,
167970 - int *error)
167971 -{
167972 - /* Resolution logic:
167973 - * 1. There is a valid state with matching selector. Done.
167974 - * 2. Valid state with inappropriate selector. Skip.
167975 - *
167976 - * Entering area of "sysdeps".
167977 - *
167978 - * 3. If state is not valid, selector is temporary, it selects
167979 - * only session which triggered previous resolution. Key
167980 - * manager will do something to install a state with proper
167981 - * selector.
167982 - */
167983 - if (x->km.state == XFRM_STATE_VALID) {
167984 - if ((x->sel.family &&
167985 - !xfrm_selector_match(&x->sel, fl, x->sel.family)) ||
167986 - !security_xfrm_state_pol_flow_match(x, pol, fl))
167987 - return;
167988 -
167989 - if (!*best ||
167990 - (*best)->km.dying > x->km.dying ||
167991 - ((*best)->km.dying == x->km.dying &&
167992 - (*best)->curlft.add_time < x->curlft.add_time))
167993 - *best = x;
167994 - } else if (x->km.state == XFRM_STATE_ACQ) {
167995 - *acq_in_progress = 1;
167996 - } else if (x->km.state == XFRM_STATE_ERROR ||
167997 - x->km.state == XFRM_STATE_EXPIRED) {
167998 - if (xfrm_selector_match(&x->sel, fl, x->sel.family) &&
167999 - security_xfrm_state_pol_flow_match(x, pol, fl))
168000 - *error = -ESRCH;
168001 - }
168002 -}
168003 -
168004 struct xfrm_state *
168005 xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr,
168006 struct flowi *fl, struct xfrm_tmpl *tmpl,
168007 struct xfrm_policy *pol, int *err,
168008 unsigned short family)
168009 {
168010 - static xfrm_address_t saddr_wildcard = { };
168011 struct net *net = xp_net(pol);
168012 unsigned int h;
168013 struct hlist_node *entry;
168014 @@ -812,27 +773,40 @@
168015 xfrm_state_addr_check(x, daddr, saddr, family) &&
168016 tmpl->mode == x->props.mode &&
168017 tmpl->id.proto == x->id.proto &&
168018 - (tmpl->id.spi == x->id.spi || !tmpl->id.spi))
168019 - xfrm_state_look_at(pol, x, fl, family, daddr, saddr,
168020 - &best, &acquire_in_progress, &error);
168021 - }
168022 - if (best)
168023 - goto found;
168024 -
168025 - h = xfrm_dst_hash(net, daddr, &saddr_wildcard, tmpl->reqid, family);
168026 - hlist_for_each_entry(x, entry, net->xfrm.state_bydst+h, bydst) {
168027 - if (x->props.family == family &&
168028 - x->props.reqid == tmpl->reqid &&
168029 - !(x->props.flags & XFRM_STATE_WILDRECV) &&
168030 - xfrm_state_addr_check(x, daddr, saddr, family) &&
168031 - tmpl->mode == x->props.mode &&
168032 - tmpl->id.proto == x->id.proto &&
168033 - (tmpl->id.spi == x->id.spi || !tmpl->id.spi))
168034 - xfrm_state_look_at(pol, x, fl, family, daddr, saddr,
168035 - &best, &acquire_in_progress, &error);
168036 + (tmpl->id.spi == x->id.spi || !tmpl->id.spi)) {
168037 + /* Resolution logic:
168038 + 1. There is a valid state with matching selector.
168039 + Done.
168040 + 2. Valid state with inappropriate selector. Skip.
168041 +
168042 + Entering area of "sysdeps".
168043 +
168044 + 3. If state is not valid, selector is temporary,
168045 + it selects only session which triggered
168046 + previous resolution. Key manager will do
168047 + something to install a state with proper
168048 + selector.
168049 + */
168050 + if (x->km.state == XFRM_STATE_VALID) {
168051 + if ((x->sel.family && !xfrm_selector_match(&x->sel, fl, x->sel.family)) ||
168052 + !security_xfrm_state_pol_flow_match(x, pol, fl))
168053 + continue;
168054 + if (!best ||
168055 + best->km.dying > x->km.dying ||
168056 + (best->km.dying == x->km.dying &&
168057 + best->curlft.add_time < x->curlft.add_time))
168058 + best = x;
168059 + } else if (x->km.state == XFRM_STATE_ACQ) {
168060 + acquire_in_progress = 1;
168061 + } else if (x->km.state == XFRM_STATE_ERROR ||
168062 + x->km.state == XFRM_STATE_EXPIRED) {
168063 + if (xfrm_selector_match(&x->sel, fl, x->sel.family) &&
168064 + security_xfrm_state_pol_flow_match(x, pol, fl))
168065 + error = -ESRCH;
168066 + }
168067 + }
168068 }
168069
168070 -found:
168071 x = best;
168072 if (!x && !error && !acquire_in_progress) {
168073 if (tmpl->id.spi &&
168074 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/README linux-2.6.29-rc3.owrt/README
168075 --- linux-2.6.29.owrt/README 2009-05-10 22:04:37.000000000 +0200
168076 +++ linux-2.6.29-rc3.owrt/README 2009-05-10 23:48:34.000000000 +0200
168077 @@ -188,7 +188,7 @@
168078 values to random values.
168079
168080 You can find more information on using the Linux kernel config tools
168081 - in Documentation/kbuild/kconfig.txt.
168082 + in Documentation/kbuild/make-configs.txt.
168083
168084 NOTES on "make config":
168085 - having unnecessary drivers will make the kernel bigger, and can
168086 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/bootgraph.pl linux-2.6.29-rc3.owrt/scripts/bootgraph.pl
168087 --- linux-2.6.29.owrt/scripts/bootgraph.pl 2009-05-10 22:04:38.000000000 +0200
168088 +++ linux-2.6.29-rc3.owrt/scripts/bootgraph.pl 2009-05-10 23:48:34.000000000 +0200
168089 @@ -51,7 +51,7 @@
168090
168091 while (<>) {
168092 my $line = $_;
168093 - if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_\.]+)\+/) {
168094 + if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_]+)\+/) {
168095 my $func = $2;
168096 if ($done == 0) {
168097 $start{$func} = $1;
168098 @@ -87,7 +87,7 @@
168099 $count = $count + 1;
168100 }
168101
168102 - if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_\.]+)\+.*returned/) {
168103 + if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_]+)\+.*returned/) {
168104 if ($done == 0) {
168105 $end{$2} = $1;
168106 $maxtime = $1;
168107 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/checkpatch.pl linux-2.6.29-rc3.owrt/scripts/checkpatch.pl
168108 --- linux-2.6.29.owrt/scripts/checkpatch.pl 2009-05-10 22:04:38.000000000 +0200
168109 +++ linux-2.6.29-rc3.owrt/scripts/checkpatch.pl 2009-05-10 23:48:34.000000000 +0200
168110 @@ -10,7 +10,7 @@
168111 my $P = $0;
168112 $P =~ s@.*/@@g;
168113
168114 -my $V = '0.28';
168115 +my $V = '0.27';
168116
168117 use Getopt::Long qw(:config no_auto_abbrev);
168118
168119 @@ -110,8 +110,7 @@
168120 __iomem|
168121 __must_check|
168122 __init_refok|
168123 - __kprobes|
168124 - __ref
168125 + __kprobes
168126 }x;
168127 our $Attribute = qr{
168128 const|
168129 @@ -1241,8 +1240,7 @@
168130 $realfile =~ s@^([^/]*)/@@;
168131
168132 $p1_prefix = $1;
168133 - if (!$file && $tree && $p1_prefix ne '' &&
168134 - -e "$root/$p1_prefix") {
168135 + if ($tree && $p1_prefix ne '' && -e "$root/$p1_prefix") {
168136 WARN("patch prefix '$p1_prefix' exists, appears to be a -p0 patch\n");
168137 }
168138
168139 @@ -1585,9 +1583,9 @@
168140 }
168141 # TEST: allow direct testing of the attribute matcher.
168142 if ($dbg_attr) {
168143 - if ($line =~ /^.\s*$Modifier\s*$/) {
168144 + if ($line =~ /^.\s*$Attribute\s*$/) {
168145 ERROR("TEST: is attr\n" . $herecurr);
168146 - } elsif ($dbg_attr > 1 && $line =~ /^.+($Modifier)/) {
168147 + } elsif ($dbg_attr > 1 && $line =~ /^.+($Attribute)/) {
168148 ERROR("TEST: is not attr ($1 is)\n". $herecurr);
168149 }
168150 next;
168151 @@ -1659,7 +1657,7 @@
168152
168153 # * goes on variable not on type
168154 # (char*[ const])
168155 - if ($line =~ m{\($NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)\)}) {
168156 + if ($line =~ m{\($NonptrType(\s*\*[\s\*]*(?:$Modifier\s*)*)\)}) {
168157 my ($from, $to) = ($1, $1);
168158
168159 # Should start with a space.
168160 @@ -1674,7 +1672,7 @@
168161 if ($from ne $to) {
168162 ERROR("\"(foo$from)\" should be \"(foo$to)\"\n" . $herecurr);
168163 }
168164 - } elsif ($line =~ m{\b$NonptrType(\s*(?:$Modifier\b\s*|\*\s*)+)($Ident)}) {
168165 + } elsif ($line =~ m{\b$NonptrType(\s*\*[\s\*]*(?:$Modifier\s*)?)($Ident)}) {
168166 my ($from, $to, $ident) = ($1, $1, $2);
168167
168168 # Should start with a space.
168169 @@ -1687,8 +1685,8 @@
168170 # Modifiers should have spaces.
168171 $to =~ s/(\b$Modifier$)/$1 /;
168172
168173 - #print "from<$from> to<$to> ident<$ident>\n";
168174 - if ($from ne $to && $ident !~ /^$Modifier$/) {
168175 + #print "from<$from> to<$to>\n";
168176 + if ($from ne $to) {
168177 ERROR("\"foo${from}bar\" should be \"foo${to}bar\"\n" . $herecurr);
168178 }
168179 }
168180 @@ -1887,11 +1885,11 @@
168181 if ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) {
168182 ERROR("space required before that '$op' $at\n" . $hereptr);
168183 }
168184 - if ($op eq '*' && $cc =~/\s*$Modifier\b/) {
168185 + if ($op eq '*' && $cc =~/\s*const\b/) {
168186 # A unary '*' may be const
168187
168188 } elsif ($ctx =~ /.xW/) {
168189 - ERROR("Aspace prohibited after that '$op' $at\n" . $hereptr);
168190 + ERROR("space prohibited after that '$op' $at\n" . $hereptr);
168191 }
168192
168193 # unary ++ and unary -- are allowed no space on one side.
168194 @@ -2562,7 +2560,7 @@
168195 if ($line =~ /\bin_atomic\s*\(/) {
168196 if ($realfile =~ m@^drivers/@) {
168197 ERROR("do not use in_atomic in drivers\n" . $herecurr);
168198 - } elsif ($realfile !~ m@^kernel/@) {
168199 + } else {
168200 WARN("use of in_atomic() is incorrect outside core kernel code\n" . $herecurr);
168201 }
168202 }
168203 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/kconfig/conf.c linux-2.6.29-rc3.owrt/scripts/kconfig/conf.c
168204 --- linux-2.6.29.owrt/scripts/kconfig/conf.c 2009-05-10 22:04:38.000000000 +0200
168205 +++ linux-2.6.29-rc3.owrt/scripts/kconfig/conf.c 2009-05-10 23:48:34.000000000 +0200
168206 @@ -11,7 +11,6 @@
168207 #include <time.h>
168208 #include <unistd.h>
168209 #include <sys/stat.h>
168210 -#include <sys/time.h>
168211
168212 #define LKC_DIRECT_LINK
168213 #include "lkc.h"
168214 @@ -465,22 +464,9 @@
168215 input_mode = set_yes;
168216 break;
168217 case 'r':
168218 - {
168219 - struct timeval now;
168220 - unsigned int seed;
168221 -
168222 - /*
168223 - * Use microseconds derived seed,
168224 - * compensate for systems where it may be zero
168225 - */
168226 - gettimeofday(&now, NULL);
168227 -
168228 - seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
168229 - srand(seed);
168230 -
168231 input_mode = set_random;
168232 + srand(time(NULL));
168233 break;
168234 - }
168235 case 'h':
168236 printf(_("See README for usage info\n"));
168237 exit(0);
168238 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/kconfig/confdata.c linux-2.6.29-rc3.owrt/scripts/kconfig/confdata.c
168239 --- linux-2.6.29.owrt/scripts/kconfig/confdata.c 2009-05-10 22:04:38.000000000 +0200
168240 +++ linux-2.6.29-rc3.owrt/scripts/kconfig/confdata.c 2009-05-10 23:48:34.000000000 +0200
168241 @@ -843,7 +843,7 @@
168242 default:
168243 continue;
168244 }
168245 - if (!(sym_is_choice(sym) && mode == def_random))
168246 + if (!sym_is_choice(sym) || mode != def_random)
168247 sym->flags |= SYMBOL_DEF_USER;
168248 break;
168249 default:
168250 @@ -856,49 +856,28 @@
168251
168252 if (mode != def_random)
168253 return;
168254 - /*
168255 - * We have different type of choice blocks.
168256 - * If curr.tri equal to mod then we can select several
168257 - * choice symbols in one block.
168258 - * In this case we do nothing.
168259 - * If curr.tri equal yes then only one symbol can be
168260 - * selected in a choice block and we set it to yes,
168261 - * and the rest to no.
168262 - */
168263 +
168264 for_all_symbols(i, csym) {
168265 if (sym_has_value(csym) || !sym_is_choice(csym))
168266 continue;
168267
168268 sym_calc_value(csym);
168269 -
168270 - if (csym->curr.tri != yes)
168271 - continue;
168272 -
168273 prop = sym_get_choice_prop(csym);
168274 -
168275 - /* count entries in choice block */
168276 - cnt = 0;
168277 - expr_list_for_each_sym(prop->expr, e, sym)
168278 - cnt++;
168279 -
168280 - /*
168281 - * find a random value and set it to yes,
168282 - * set the rest to no so we have only one set
168283 - */
168284 - def = (rand() % cnt);
168285 -
168286 - cnt = 0;
168287 - expr_list_for_each_sym(prop->expr, e, sym) {
168288 - if (def == cnt++) {
168289 - sym->def[S_DEF_USER].tri = yes;
168290 - csym->def[S_DEF_USER].val = sym;
168291 - }
168292 - else {
168293 - sym->def[S_DEF_USER].tri = no;
168294 + def = -1;
168295 + while (1) {
168296 + cnt = 0;
168297 + expr_list_for_each_sym(prop->expr, e, sym) {
168298 + if (sym->visible == no)
168299 + continue;
168300 + if (def == cnt++) {
168301 + csym->def[S_DEF_USER].val = sym;
168302 + break;
168303 + }
168304 }
168305 + if (def >= 0 || cnt < 2)
168306 + break;
168307 + def = (rand() % cnt) + 1;
168308 }
168309 csym->flags |= SYMBOL_DEF_USER;
168310 - /* clear VALID to get value calculated */
168311 - csym->flags &= ~(SYMBOL_VALID);
168312 }
168313 }
168314 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/kernel-doc linux-2.6.29-rc3.owrt/scripts/kernel-doc
168315 --- linux-2.6.29.owrt/scripts/kernel-doc 2009-05-10 22:04:38.000000000 +0200
168316 +++ linux-2.6.29-rc3.owrt/scripts/kernel-doc 2009-05-10 23:48:34.000000000 +0200
168317 @@ -1827,40 +1827,6 @@
168318 $state = 0;
168319 }
168320
168321 -sub syscall_munge() {
168322 - my $void = 0;
168323 -
168324 - $prototype =~ s@[\r\n\t]+@ @gos; # strip newlines/CR's/tabs
168325 -## if ($prototype =~ m/SYSCALL_DEFINE0\s*\(\s*(a-zA-Z0-9_)*\s*\)/) {
168326 - if ($prototype =~ m/SYSCALL_DEFINE0/) {
168327 - $void = 1;
168328 -## $prototype = "long sys_$1(void)";
168329 - }
168330 -
168331 - $prototype =~ s/SYSCALL_DEFINE.*\(/long sys_/; # fix return type & func name
168332 - if ($prototype =~ m/long (sys_.*?),/) {
168333 - $prototype =~ s/,/\(/;
168334 - } elsif ($void) {
168335 - $prototype =~ s/\)/\(void\)/;
168336 - }
168337 -
168338 - # now delete all of the odd-number commas in $prototype
168339 - # so that arg types & arg names don't have a comma between them
168340 - my $count = 0;
168341 - my $len = length($prototype);
168342 - if ($void) {
168343 - $len = 0; # skip the for-loop
168344 - }
168345 - for (my $ix = 0; $ix < $len; $ix++) {
168346 - if (substr($prototype, $ix, 1) eq ',') {
168347 - $count++;
168348 - if ($count % 2 == 1) {
168349 - substr($prototype, $ix, 1) = ' ';
168350 - }
168351 - }
168352 - }
168353 -}
168354 -
168355 sub process_state3_function($$) {
168356 my $x = shift;
168357 my $file = shift;
168358 @@ -1873,15 +1839,11 @@
168359 elsif ($x =~ /([^\{]*)/) {
168360 $prototype .= $1;
168361 }
168362 -
168363 if (($x =~ /\{/) || ($x =~ /\#\s*define/) || ($x =~ /;/)) {
168364 $prototype =~ s@/\*.*?\*/@@gos; # strip comments.
168365 $prototype =~ s@[\r\n]+@ @gos; # strip newlines/cr's.
168366 $prototype =~ s@^\s+@@gos; # strip leading spaces
168367 - if ($prototype =~ /SYSCALL_DEFINE/) {
168368 - syscall_munge();
168369 - }
168370 - dump_function($prototype, $file);
168371 + dump_function($prototype,$file);
168372 reset_state();
168373 }
168374 }
168375 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/markup_oops.pl linux-2.6.29-rc3.owrt/scripts/markup_oops.pl
168376 --- linux-2.6.29.owrt/scripts/markup_oops.pl 2009-05-10 22:04:38.000000000 +0200
168377 +++ linux-2.6.29-rc3.owrt/scripts/markup_oops.pl 2009-05-10 23:48:34.000000000 +0200
168378 @@ -1,4 +1,4 @@
168379 -#!/usr/bin/perl
168380 +#!/usr/bin/perl -w
168381
168382 use File::Basename;
168383
168384 @@ -29,151 +29,27 @@
168385 my $target = "0";
168386 my $function;
168387 my $module = "";
168388 -my $func_offset = 0;
168389 +my $func_offset;
168390 my $vmaoffset = 0;
168391
168392 -my %regs;
168393 -
168394 -
168395 -sub parse_x86_regs
168396 -{
168397 - my ($line) = @_;
168398 - if ($line =~ /EAX: ([0-9a-f]+) EBX: ([0-9a-f]+) ECX: ([0-9a-f]+) EDX: ([0-9a-f]+)/) {
168399 - $regs{"%eax"} = $1;
168400 - $regs{"%ebx"} = $2;
168401 - $regs{"%ecx"} = $3;
168402 - $regs{"%edx"} = $4;
168403 - }
168404 - if ($line =~ /ESI: ([0-9a-f]+) EDI: ([0-9a-f]+) EBP: ([0-9a-f]+) ESP: ([0-9a-f]+)/) {
168405 - $regs{"%esi"} = $1;
168406 - $regs{"%edi"} = $2;
168407 - $regs{"%esp"} = $4;
168408 - }
168409 - if ($line =~ /RAX: ([0-9a-f]+) RBX: ([0-9a-f]+) RCX: ([0-9a-f]+)/) {
168410 - $regs{"%eax"} = $1;
168411 - $regs{"%ebx"} = $2;
168412 - $regs{"%ecx"} = $3;
168413 - }
168414 - if ($line =~ /RDX: ([0-9a-f]+) RSI: ([0-9a-f]+) RDI: ([0-9a-f]+)/) {
168415 - $regs{"%edx"} = $1;
168416 - $regs{"%esi"} = $2;
168417 - $regs{"%edi"} = $3;
168418 - }
168419 - if ($line =~ /RBP: ([0-9a-f]+) R08: ([0-9a-f]+) R09: ([0-9a-f]+)/) {
168420 - $regs{"%r08"} = $2;
168421 - $regs{"%r09"} = $3;
168422 - }
168423 - if ($line =~ /R10: ([0-9a-f]+) R11: ([0-9a-f]+) R12: ([0-9a-f]+)/) {
168424 - $regs{"%r10"} = $1;
168425 - $regs{"%r11"} = $2;
168426 - $regs{"%r12"} = $3;
168427 - }
168428 - if ($line =~ /R13: ([0-9a-f]+) R14: ([0-9a-f]+) R15: ([0-9a-f]+)/) {
168429 - $regs{"%r13"} = $1;
168430 - $regs{"%r14"} = $2;
168431 - $regs{"%r15"} = $3;
168432 - }
168433 -}
168434 -
168435 -sub reg_name
168436 -{
168437 - my ($reg) = @_;
168438 - $reg =~ s/r(.)x/e\1x/;
168439 - $reg =~ s/r(.)i/e\1i/;
168440 - $reg =~ s/r(.)p/e\1p/;
168441 - return $reg;
168442 -}
168443 -
168444 -sub process_x86_regs
168445 -{
168446 - my ($line, $cntr) = @_;
168447 - my $str = "";
168448 - if (length($line) < 40) {
168449 - return ""; # not an asm istruction
168450 - }
168451 -
168452 - # find the arguments to the instruction
168453 - if ($line =~ /([0-9a-zA-Z\,\%\(\)\-\+]+)$/) {
168454 - $lastword = $1;
168455 - } else {
168456 - return "";
168457 - }
168458 -
168459 - # we need to find the registers that get clobbered,
168460 - # since their value is no longer relevant for previous
168461 - # instructions in the stream.
168462 -
168463 - $clobber = $lastword;
168464 - # first, remove all memory operands, they're read only
168465 - $clobber =~ s/\([a-z0-9\%\,]+\)//g;
168466 - # then, remove everything before the comma, thats the read part
168467 - $clobber =~ s/.*\,//g;
168468 -
168469 - # if this is the instruction that faulted, we haven't actually done
168470 - # the write yet... nothing is clobbered.
168471 - if ($cntr == 0) {
168472 - $clobber = "";
168473 - }
168474 -
168475 - foreach $reg (keys(%regs)) {
168476 - my $clobberprime = reg_name($clobber);
168477 - my $lastwordprime = reg_name($lastword);
168478 - my $val = $regs{$reg};
168479 - if ($val =~ /^[0]+$/) {
168480 - $val = "0";
168481 - } else {
168482 - $val =~ s/^0*//;
168483 - }
168484 -
168485 - # first check if we're clobbering this register; if we do
168486 - # we print it with a =>, and then delete its value
168487 - if ($clobber =~ /$reg/ || $clobberprime =~ /$reg/) {
168488 - if (length($val) > 0) {
168489 - $str = $str . " $reg => $val ";
168490 - }
168491 - $regs{$reg} = "";
168492 - $val = "";
168493 - }
168494 - # now check if we're reading this register
168495 - if ($lastword =~ /$reg/ || $lastwordprime =~ /$reg/) {
168496 - if (length($val) > 0) {
168497 - $str = $str . " $reg = $val ";
168498 - }
168499 - }
168500 - }
168501 - return $str;
168502 -}
168503 -
168504 -# parse the oops
168505 while (<STDIN>) {
168506 my $line = $_;
168507 if ($line =~ /EIP: 0060:\[\<([a-z0-9]+)\>\]/) {
168508 $target = $1;
168509 }
168510 - if ($line =~ /RIP: 0010:\[\<([a-z0-9]+)\>\]/) {
168511 - $target = $1;
168512 - }
168513 if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) {
168514 $function = $1;
168515 $func_offset = $2;
168516 }
168517 - if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\] \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]/) {
168518 - $function = $1;
168519 - $func_offset = $2;
168520 - }
168521
168522 # check if it's a module
168523 if ($line =~ /EIP is at ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]+\W\[([a-zA-Z0-9\_\-]+)\]/) {
168524 $module = $3;
168525 }
168526 - if ($line =~ /RIP: 0010:\[\<[0-9a-f]+\>\] \[\<[0-9a-f]+\>\] ([a-zA-Z0-9\_]+)\+(0x[0-9a-f]+)\/0x[a-f0-9]+\W\[([a-zA-Z0-9\_\-]+)\]/) {
168527 - $module = $3;
168528 - }
168529 - parse_x86_regs($line);
168530 }
168531
168532 my $decodestart = hex($target) - hex($func_offset);
168533 -my $decodestop = hex($target) + 8192;
168534 +my $decodestop = $decodestart + 8192;
168535 if ($target eq "0") {
168536 print "No oops found!\n";
168537 print "Usage: \n";
168538 @@ -208,7 +84,6 @@
168539 my $state = 0;
168540 my $center = 0;
168541 my @lines;
168542 -my @reglines;
168543
168544 sub InRange {
168545 my ($address, $target) = @_;
168546 @@ -313,36 +188,16 @@
168547
168548 my $i;
168549
168550 -
168551 -# start annotating the registers in the asm.
168552 -# this goes from the oopsing point back, so that the annotator
168553 -# can track (opportunistically) which registers got written and
168554 -# whos value no longer is relevant.
168555 -
168556 -$i = $center;
168557 -while ($i >= $start) {
168558 - $reglines[$i] = process_x86_regs($lines[$i], $center - $i);
168559 - $i = $i - 1;
168560 -}
168561 -
168562 +my $fulltext = "";
168563 $i = $start;
168564 while ($i < $finish) {
168565 - my $line;
168566 if ($i == $center) {
168567 - $line = "*$lines[$i] ";
168568 + $fulltext = $fulltext . "*$lines[$i] <----- faulting instruction\n";
168569 } else {
168570 - $line = " $lines[$i] ";
168571 - }
168572 - print $line;
168573 - if (defined($reglines[$i]) && length($reglines[$i]) > 0) {
168574 - my $c = 60 - length($line);
168575 - while ($c > 0) { print " "; $c = $c - 1; };
168576 - print "| $reglines[$i]";
168577 + $fulltext = $fulltext . " $lines[$i]\n";
168578 }
168579 - if ($i == $center) {
168580 - print "<--- faulting instruction";
168581 - }
168582 - print "\n";
168583 $i = $i +1;
168584 }
168585
168586 +print $fulltext;
168587 +
168588 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/mod/file2alias.c linux-2.6.29-rc3.owrt/scripts/mod/file2alias.c
168589 --- linux-2.6.29.owrt/scripts/mod/file2alias.c 2009-05-10 22:04:38.000000000 +0200
168590 +++ linux-2.6.29-rc3.owrt/scripts/mod/file2alias.c 2009-05-10 23:48:34.000000000 +0200
168591 @@ -210,7 +210,6 @@
168592 static int do_hid_entry(const char *filename,
168593 struct hid_device_id *id, char *alias)
168594 {
168595 - id->bus = TO_NATIVE(id->bus);
168596 id->vendor = TO_NATIVE(id->vendor);
168597 id->product = TO_NATIVE(id->product);
168598
168599 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/package/Makefile linux-2.6.29-rc3.owrt/scripts/package/Makefile
168600 --- linux-2.6.29.owrt/scripts/package/Makefile 2009-05-10 22:04:38.000000000 +0200
168601 +++ linux-2.6.29-rc3.owrt/scripts/package/Makefile 2009-05-10 23:48:34.000000000 +0200
168602 @@ -35,10 +35,9 @@
168603 rpm-pkg rpm: $(objtree)/kernel.spec FORCE
168604 $(MAKE) clean
168605 $(PREV) ln -sf $(srctree) $(KERNELPATH)
168606 - $(CONFIG_SHELL) $(srctree)/scripts/setlocalversion > $(objtree)/.scmversion
168607 $(PREV) tar -cz $(RCS_TAR_IGNORE) -f $(KERNELPATH).tar.gz $(KERNELPATH)/.
168608 $(PREV) rm $(KERNELPATH)
168609 - rm -f $(objtree)/.scmversion
168610 +
168611 set -e; \
168612 $(CONFIG_SHELL) $(srctree)/scripts/mkversion > $(objtree)/.tmp_version
168613 set -e; \
168614 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/package/mkspec linux-2.6.29-rc3.owrt/scripts/package/mkspec
168615 --- linux-2.6.29.owrt/scripts/package/mkspec 2009-05-10 22:04:38.000000000 +0200
168616 +++ linux-2.6.29-rc3.owrt/scripts/package/mkspec 2009-05-10 23:48:34.000000000 +0200
168617 @@ -86,17 +86,9 @@
168618 echo 'cp System.map $RPM_BUILD_ROOT'"/boot/System.map-$KERNELRELEASE"
168619
168620 echo 'cp .config $RPM_BUILD_ROOT'"/boot/config-$KERNELRELEASE"
168621 -
168622 -echo "%ifnarch ppc64"
168623 -echo 'cp vmlinux vmlinux.orig'
168624 -echo 'bzip2 -9 vmlinux'
168625 -echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2"
168626 -echo 'mv vmlinux.orig vmlinux'
168627 -echo "%endif"
168628 -
168629 echo ""
168630 echo "%clean"
168631 -echo 'rm -rf $RPM_BUILD_ROOT'
168632 +echo '#echo -rf $RPM_BUILD_ROOT'
168633 echo ""
168634 echo "%files"
168635 echo '%defattr (-, root, root)'
168636 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/setlocalversion linux-2.6.29-rc3.owrt/scripts/setlocalversion
168637 --- linux-2.6.29.owrt/scripts/setlocalversion 2009-05-10 22:04:38.000000000 +0200
168638 +++ linux-2.6.29-rc3.owrt/scripts/setlocalversion 2009-05-10 23:48:34.000000000 +0200
168639 @@ -58,7 +58,14 @@
168640 # Check for svn and a svn repo.
168641 if rev=`svn info 2>/dev/null | grep '^Last Changed Rev'`; then
168642 rev=`echo $rev | awk '{print $NF}'`
168643 - printf -- '-svn%s' "$rev"
168644 + changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l`
168645 +
168646 + # Are there uncommitted changes?
168647 + if [ $changes != 0 ]; then
168648 + printf -- '-svn%s%s' "$rev" -dirty
168649 + else
168650 + printf -- '-svn%s' "$rev"
168651 + fi
168652
168653 # All done with svn
168654 exit
168655 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/tags.sh linux-2.6.29-rc3.owrt/scripts/tags.sh
168656 --- linux-2.6.29.owrt/scripts/tags.sh 2009-05-10 22:04:38.000000000 +0200
168657 +++ linux-2.6.29-rc3.owrt/scripts/tags.sh 2009-05-10 23:48:34.000000000 +0200
168658 @@ -76,10 +76,7 @@
168659
168660 all_kconfigs()
168661 {
168662 - for arch in $ALLSOURCE_ARCHS; do
168663 - find_sources $arch 'Kconfig*'
168664 - done
168665 - find_other_sources 'Kconfig*'
168666 + find_sources $ALLSOURCE_ARCHS 'Kconfig*'
168667 }
168668
168669 all_defconfigs()
168670 @@ -102,8 +99,7 @@
168671 -I ____cacheline_internodealigned_in_smp \
168672 -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
168673 --extra=+f --c-kinds=+px \
168674 - --regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \
168675 - --regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/'
168676 + --regex-asm='/^ENTRY\(([^)]*)\).*/\1/'
168677
168678 all_kconfigs | xargs $1 -a \
168679 --langdef=kconfig --language-force=kconfig \
168680 @@ -121,9 +117,7 @@
168681
168682 emacs()
168683 {
168684 - all_sources | xargs $1 -a \
168685 - --regex='/^ENTRY(\([^)]*\)).*/\1/' \
168686 - --regex='/^SYSCALL_DEFINE[0-9]?(\([^,)]*\).*/sys_\1/'
168687 + all_sources | xargs $1 -a
168688
168689 all_kconfigs | xargs $1 -a \
168690 --regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
168691 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/scripts/unifdef.c linux-2.6.29-rc3.owrt/scripts/unifdef.c
168692 --- linux-2.6.29.owrt/scripts/unifdef.c 2009-05-10 22:04:38.000000000 +0200
168693 +++ linux-2.6.29-rc3.owrt/scripts/unifdef.c 2009-05-10 23:48:34.000000000 +0200
168694 @@ -206,7 +206,7 @@
168695 static void error(const char *);
168696 static int findsym(const char *);
168697 static void flushline(bool);
168698 -static Linetype get_line(void);
168699 +static Linetype getline(void);
168700 static Linetype ifeval(const char **);
168701 static void ignoreoff(void);
168702 static void ignoreon(void);
168703 @@ -512,7 +512,7 @@
168704
168705 for (;;) {
168706 linenum++;
168707 - lineval = get_line();
168708 + lineval = getline();
168709 trans_table[ifstate[depth]][lineval]();
168710 debug("process %s -> %s depth %d",
168711 linetype_name[lineval],
168712 @@ -526,7 +526,7 @@
168713 * help from skipcomment().
168714 */
168715 static Linetype
168716 -get_line(void)
168717 +getline(void)
168718 {
168719 const char *cp;
168720 int cursym;
168721 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/security/selinux/netlabel.c linux-2.6.29-rc3.owrt/security/selinux/netlabel.c
168722 --- linux-2.6.29.owrt/security/selinux/netlabel.c 2009-05-10 22:04:39.000000000 +0200
168723 +++ linux-2.6.29-rc3.owrt/security/selinux/netlabel.c 2009-05-10 23:48:34.000000000 +0200
168724 @@ -386,12 +386,11 @@
168725 if (!S_ISSOCK(inode->i_mode) ||
168726 ((mask & (MAY_WRITE | MAY_APPEND)) == 0))
168727 return 0;
168728 +
168729 sock = SOCKET_I(inode);
168730 sk = sock->sk;
168731 - if (sk == NULL)
168732 - return 0;
168733 sksec = sk->sk_security;
168734 - if (sksec == NULL || sksec->nlbl_state != NLBL_REQUIRE)
168735 + if (sksec->nlbl_state != NLBL_REQUIRE)
168736 return 0;
168737
168738 local_bh_disable();
168739 @@ -491,10 +490,8 @@
168740 lock_sock(sk);
168741 rc = netlbl_sock_getattr(sk, &secattr);
168742 release_sock(sk);
168743 - if (rc == 0)
168744 + if (rc == 0 && secattr.flags != NETLBL_SECATTR_NONE)
168745 rc = -EACCES;
168746 - else if (rc == -ENOMSG)
168747 - rc = 0;
168748 netlbl_secattr_destroy(&secattr);
168749 }
168750
168751 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/security/smack/smackfs.c linux-2.6.29-rc3.owrt/security/smack/smackfs.c
168752 --- linux-2.6.29.owrt/security/smack/smackfs.c 2009-05-10 22:04:39.000000000 +0200
168753 +++ linux-2.6.29-rc3.owrt/security/smack/smackfs.c 2009-05-10 23:48:34.000000000 +0200
168754 @@ -650,6 +650,10 @@
168755
168756 return skp;
168757 }
168758 +/*
168759 +#define BEMASK 0x80000000
168760 +*/
168761 +#define BEMASK 0x00000001
168762 #define BEBITS (sizeof(__be32) * 8)
168763
168764 /*
168765 @@ -659,10 +663,12 @@
168766 {
168767 struct smk_netlbladdr *skp = (struct smk_netlbladdr *) v;
168768 unsigned char *hp = (char *) &skp->smk_host.sin_addr.s_addr;
168769 - int maskn;
168770 - u32 temp_mask = be32_to_cpu(skp->smk_mask.s_addr);
168771 + __be32 bebits;
168772 + int maskn = 0;
168773
168774 - for (maskn = 0; temp_mask; temp_mask <<= 1, maskn++);
168775 + for (bebits = BEMASK; bebits != 0; maskn++, bebits <<= 1)
168776 + if ((skp->smk_mask.s_addr & bebits) == 0)
168777 + break;
168778
168779 seq_printf(s, "%u.%u.%u.%u/%d %s\n",
168780 hp[0], hp[1], hp[2], hp[3], maskn, skp->smk_label);
168781 @@ -696,42 +702,6 @@
168782 }
168783
168784 /**
168785 - * smk_netlbladdr_insert
168786 - * @new : netlabel to insert
168787 - *
168788 - * This helper insert netlabel in the smack_netlbladdrs list
168789 - * sorted by netmask length (longest to smallest)
168790 - */
168791 -static void smk_netlbladdr_insert(struct smk_netlbladdr *new)
168792 -{
168793 - struct smk_netlbladdr *m;
168794 -
168795 - if (smack_netlbladdrs == NULL) {
168796 - smack_netlbladdrs = new;
168797 - return;
168798 - }
168799 -
168800 - /* the comparison '>' is a bit hacky, but works */
168801 - if (new->smk_mask.s_addr > smack_netlbladdrs->smk_mask.s_addr) {
168802 - new->smk_next = smack_netlbladdrs;
168803 - smack_netlbladdrs = new;
168804 - return;
168805 - }
168806 - for (m = smack_netlbladdrs; m != NULL; m = m->smk_next) {
168807 - if (m->smk_next == NULL) {
168808 - m->smk_next = new;
168809 - return;
168810 - }
168811 - if (new->smk_mask.s_addr > m->smk_next->smk_mask.s_addr) {
168812 - new->smk_next = m->smk_next;
168813 - m->smk_next = new;
168814 - return;
168815 - }
168816 - }
168817 -}
168818 -
168819 -
168820 -/**
168821 * smk_write_netlbladdr - write() for /smack/netlabel
168822 * @filp: file pointer, not actually used
168823 * @buf: where to get the data from
168824 @@ -754,9 +724,8 @@
168825 struct netlbl_audit audit_info;
168826 struct in_addr mask;
168827 unsigned int m;
168828 - u32 mask_bits = (1<<31);
168829 + __be32 bebits = BEMASK;
168830 __be32 nsa;
168831 - u32 temp_mask;
168832
168833 /*
168834 * Must have privilege.
168835 @@ -792,13 +761,10 @@
168836 if (sp == NULL)
168837 return -EINVAL;
168838
168839 - for (temp_mask = 0; m > 0; m--) {
168840 - temp_mask |= mask_bits;
168841 - mask_bits >>= 1;
168842 + for (mask.s_addr = 0; m > 0; m--) {
168843 + mask.s_addr |= bebits;
168844 + bebits <<= 1;
168845 }
168846 - mask.s_addr = cpu_to_be32(temp_mask);
168847 -
168848 - newname.sin_addr.s_addr &= mask.s_addr;
168849 /*
168850 * Only allow one writer at a time. Writes should be
168851 * quite rare and small in any case.
168852 @@ -806,7 +772,6 @@
168853 mutex_lock(&smk_netlbladdr_lock);
168854
168855 nsa = newname.sin_addr.s_addr;
168856 - /* try to find if the prefix is already in the list */
168857 for (skp = smack_netlbladdrs; skp != NULL; skp = skp->smk_next)
168858 if (skp->smk_host.sin_addr.s_addr == nsa &&
168859 skp->smk_mask.s_addr == mask.s_addr)
168860 @@ -822,8 +787,9 @@
168861 rc = 0;
168862 skp->smk_host.sin_addr.s_addr = newname.sin_addr.s_addr;
168863 skp->smk_mask.s_addr = mask.s_addr;
168864 + skp->smk_next = smack_netlbladdrs;
168865 skp->smk_label = sp;
168866 - smk_netlbladdr_insert(skp);
168867 + smack_netlbladdrs = skp;
168868 }
168869 } else {
168870 rc = netlbl_cfg_unlbl_static_del(&init_net, NULL,
168871 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/security/smack/smack_lsm.c linux-2.6.29-rc3.owrt/security/smack/smack_lsm.c
168872 --- linux-2.6.29.owrt/security/smack/smack_lsm.c 2009-05-10 22:04:39.000000000 +0200
168873 +++ linux-2.6.29-rc3.owrt/security/smack/smack_lsm.c 2009-05-10 23:48:34.000000000 +0200
168874 @@ -1498,31 +1498,58 @@
168875 * looks for host based access restrictions
168876 *
168877 * This version will only be appropriate for really small
168878 - * sets of single label hosts.
168879 + * sets of single label hosts. Because of the masking
168880 + * it cannot shortcut out on the first match. There are
168881 + * numerious ways to address the problem, but none of them
168882 + * have been applied here.
168883 *
168884 * Returns the label of the far end or NULL if it's not special.
168885 */
168886 static char *smack_host_label(struct sockaddr_in *sip)
168887 {
168888 struct smk_netlbladdr *snp;
168889 + char *bestlabel = NULL;
168890 struct in_addr *siap = &sip->sin_addr;
168891 + struct in_addr *liap;
168892 + struct in_addr *miap;
168893 + struct in_addr bestmask;
168894
168895 if (siap->s_addr == 0)
168896 return NULL;
168897
168898 + bestmask.s_addr = 0;
168899 +
168900 for (snp = smack_netlbladdrs; snp != NULL; snp = snp->smk_next) {
168901 + liap = &snp->smk_host.sin_addr;
168902 + miap = &snp->smk_mask;
168903 + /*
168904 + * If the addresses match after applying the list entry mask
168905 + * the entry matches the address. If it doesn't move along to
168906 + * the next entry.
168907 + */
168908 + if ((liap->s_addr & miap->s_addr) !=
168909 + (siap->s_addr & miap->s_addr))
168910 + continue;
168911 /*
168912 - * we break after finding the first match because
168913 - * the list is sorted from longest to shortest mask
168914 - * so we have found the most specific match
168915 + * If the list entry mask identifies a single address
168916 + * it can't get any more specific.
168917 */
168918 - if ((&snp->smk_host.sin_addr)->s_addr ==
168919 - (siap->s_addr & (&snp->smk_mask)->s_addr)) {
168920 + if (miap->s_addr == 0xffffffff)
168921 return snp->smk_label;
168922 - }
168923 + /*
168924 + * If the list entry mask is less specific than the best
168925 + * already found this entry is uninteresting.
168926 + */
168927 + if ((miap->s_addr | bestmask.s_addr) == bestmask.s_addr)
168928 + continue;
168929 + /*
168930 + * This is better than any entry found so far.
168931 + */
168932 + bestmask.s_addr = miap->s_addr;
168933 + bestlabel = snp->smk_label;
168934 }
168935
168936 - return NULL;
168937 + return bestlabel;
168938 }
168939
168940 /**
168941 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/arm/aaci.c linux-2.6.29-rc3.owrt/sound/arm/aaci.c
168942 --- linux-2.6.29.owrt/sound/arm/aaci.c 2009-05-10 22:04:39.000000000 +0200
168943 +++ linux-2.6.29-rc3.owrt/sound/arm/aaci.c 2009-05-10 23:48:34.000000000 +0200
168944 @@ -90,7 +90,7 @@
168945 */
168946 do {
168947 v = readl(aaci->base + AACI_SLFR);
168948 - } while ((v & (SLFR_1TXB|SLFR_2TXB)) && --timeout);
168949 + } while ((v & (SLFR_1TXB|SLFR_2TXB)) && timeout--);
168950
168951 if (!timeout)
168952 dev_err(&aaci->dev->dev,
168953 @@ -126,7 +126,7 @@
168954 */
168955 do {
168956 v = readl(aaci->base + AACI_SLFR);
168957 - } while ((v & SLFR_1TXB) && --timeout);
168958 + } while ((v & SLFR_1TXB) && timeout--);
168959
168960 if (!timeout) {
168961 dev_err(&aaci->dev->dev, "timeout on slot 1 TX busy\n");
168962 @@ -147,7 +147,7 @@
168963 do {
168964 cond_resched();
168965 v = readl(aaci->base + AACI_SLFR) & (SLFR_1RXV|SLFR_2RXV);
168966 - } while ((v != (SLFR_1RXV|SLFR_2RXV)) && --timeout);
168967 + } while ((v != (SLFR_1RXV|SLFR_2RXV)) && timeout--);
168968
168969 if (!timeout) {
168970 dev_err(&aaci->dev->dev, "timeout on RX valid\n");
168971 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/core/jack.c linux-2.6.29-rc3.owrt/sound/core/jack.c
168972 --- linux-2.6.29.owrt/sound/core/jack.c 2009-05-10 22:04:39.000000000 +0200
168973 +++ linux-2.6.29-rc3.owrt/sound/core/jack.c 2009-05-10 23:48:34.000000000 +0200
168974 @@ -47,7 +47,7 @@
168975 int err;
168976
168977 snprintf(jack->name, sizeof(jack->name), "%s %s",
168978 - card->shortname, jack->id);
168979 + card->longname, jack->id);
168980 jack->input_dev->name = jack->name;
168981
168982 /* Default to the sound card device. */
168983 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/core/oss/mixer_oss.c linux-2.6.29-rc3.owrt/sound/core/oss/mixer_oss.c
168984 --- linux-2.6.29.owrt/sound/core/oss/mixer_oss.c 2009-05-10 22:04:39.000000000 +0200
168985 +++ linux-2.6.29-rc3.owrt/sound/core/oss/mixer_oss.c 2009-05-10 23:48:34.000000000 +0200
168986 @@ -692,9 +692,6 @@
168987 snd_mixer_oss_put_volume1_vol(fmixer, pslot, slot->numid[SNDRV_MIXER_OSS_ITEM_PVOLUME], left, right);
168988 if (slot->present & SNDRV_MIXER_OSS_PRESENT_CVOLUME)
168989 snd_mixer_oss_put_volume1_vol(fmixer, pslot, slot->numid[SNDRV_MIXER_OSS_ITEM_CVOLUME], left, right);
168990 - } else if (slot->present & SNDRV_MIXER_OSS_PRESENT_CVOLUME) {
168991 - snd_mixer_oss_put_volume1_vol(fmixer, pslot,
168992 - slot->numid[SNDRV_MIXER_OSS_ITEM_CVOLUME], left, right);
168993 } else if (slot->present & SNDRV_MIXER_OSS_PRESENT_GVOLUME) {
168994 snd_mixer_oss_put_volume1_vol(fmixer, pslot, slot->numid[SNDRV_MIXER_OSS_ITEM_GVOLUME], left, right);
168995 } else if (slot->present & SNDRV_MIXER_OSS_PRESENT_GLOBAL) {
168996 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/core/oss/pcm_oss.c linux-2.6.29-rc3.owrt/sound/core/oss/pcm_oss.c
168997 --- linux-2.6.29.owrt/sound/core/oss/pcm_oss.c 2009-05-10 22:04:39.000000000 +0200
168998 +++ linux-2.6.29-rc3.owrt/sound/core/oss/pcm_oss.c 2009-05-10 23:48:34.000000000 +0200
168999 @@ -1767,7 +1767,7 @@
169000 AFMT_S8 | AFMT_U16_LE |
169001 AFMT_U16_BE |
169002 AFMT_S32_LE | AFMT_S32_BE |
169003 - AFMT_S24_LE | AFMT_S24_BE |
169004 + AFMT_S24_LE | AFMT_S24_LE |
169005 AFMT_S24_PACKED;
169006 params = kmalloc(sizeof(*params), GFP_KERNEL);
169007 if (!params)
169008 @@ -2872,7 +2872,7 @@
169009 setup = kmalloc(sizeof(*setup), GFP_KERNEL);
169010 if (! setup) {
169011 buffer->error = -ENOMEM;
169012 - mutex_unlock(&pstr->oss.setup_mutex);
169013 + mutex_lock(&pstr->oss.setup_mutex);
169014 return;
169015 }
169016 if (pstr->oss.setup_list == NULL)
169017 @@ -2886,7 +2886,7 @@
169018 if (! template.task_name) {
169019 kfree(setup);
169020 buffer->error = -ENOMEM;
169021 - mutex_unlock(&pstr->oss.setup_mutex);
169022 + mutex_lock(&pstr->oss.setup_mutex);
169023 return;
169024 }
169025 }
169026 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/core/oss/rate.c linux-2.6.29-rc3.owrt/sound/core/oss/rate.c
169027 --- linux-2.6.29.owrt/sound/core/oss/rate.c 2009-05-10 22:04:39.000000000 +0200
169028 +++ linux-2.6.29-rc3.owrt/sound/core/oss/rate.c 2009-05-10 23:48:34.000000000 +0200
169029 @@ -157,7 +157,7 @@
169030 while (dst_frames1 > 0) {
169031 S1 = S2;
169032 if (src_frames1-- > 0) {
169033 - S2 = *src;
169034 + S1 = *src;
169035 src += src_step;
169036 }
169037 if (pos & ~R_MASK) {
169038 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/core/sgbuf.c linux-2.6.29-rc3.owrt/sound/core/sgbuf.c
169039 --- linux-2.6.29.owrt/sound/core/sgbuf.c 2009-05-10 22:04:39.000000000 +0200
169040 +++ linux-2.6.29-rc3.owrt/sound/core/sgbuf.c 2009-05-10 23:48:34.000000000 +0200
169041 @@ -38,10 +38,6 @@
169042 if (! sgbuf)
169043 return -EINVAL;
169044
169045 - if (dmab->area)
169046 - vunmap(dmab->area);
169047 - dmab->area = NULL;
169048 -
169049 tmpb.dev.type = SNDRV_DMA_TYPE_DEV;
169050 tmpb.dev.dev = sgbuf->dev;
169051 for (i = 0; i < sgbuf->pages; i++) {
169052 @@ -52,6 +48,9 @@
169053 tmpb.bytes = (sgbuf->table[i].addr & ~PAGE_MASK) << PAGE_SHIFT;
169054 snd_dma_free_pages(&tmpb);
169055 }
169056 + if (dmab->area)
169057 + vunmap(dmab->area);
169058 + dmab->area = NULL;
169059
169060 kfree(sgbuf->table);
169061 kfree(sgbuf->page_table);
169062 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/drivers/mtpav.c linux-2.6.29-rc3.owrt/sound/drivers/mtpav.c
169063 --- linux-2.6.29.owrt/sound/drivers/mtpav.c 2009-05-10 22:04:39.000000000 +0200
169064 +++ linux-2.6.29-rc3.owrt/sound/drivers/mtpav.c 2009-05-10 23:48:34.000000000 +0200
169065 @@ -706,6 +706,7 @@
169066 mtp_card->card = card;
169067 mtp_card->irq = -1;
169068 mtp_card->share_irq = 0;
169069 + mtp_card->inmidiport = 0xffffffff;
169070 mtp_card->inmidistate = 0;
169071 mtp_card->outmidihwport = 0xffffffff;
169072 init_timer(&mtp_card->timer);
169073 @@ -718,8 +719,6 @@
169074 if (err < 0)
169075 goto __error;
169076
169077 - mtp_card->inmidiport = mtp_card->num_ports + MTPAV_PIDX_BROADCAST;
169078 -
169079 err = snd_mtpav_get_ISA(mtp_card);
169080 if (err < 0)
169081 goto __error;
169082 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/isa/opl3sa2.c linux-2.6.29-rc3.owrt/sound/isa/opl3sa2.c
169083 --- linux-2.6.29.owrt/sound/isa/opl3sa2.c 2009-05-10 22:04:39.000000000 +0200
169084 +++ linux-2.6.29-rc3.owrt/sound/isa/opl3sa2.c 2009-05-10 23:48:34.000000000 +0200
169085 @@ -550,27 +550,21 @@
169086 #ifdef CONFIG_PM
169087 static int snd_opl3sa2_suspend(struct snd_card *card, pm_message_t state)
169088 {
169089 - if (card) {
169090 - struct snd_opl3sa2 *chip = card->private_data;
169091 + struct snd_opl3sa2 *chip = card->private_data;
169092
169093 - snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
169094 - chip->wss->suspend(chip->wss);
169095 - /* power down */
169096 - snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3);
169097 - }
169098 + snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
169099 + chip->wss->suspend(chip->wss);
169100 + /* power down */
169101 + snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3);
169102
169103 return 0;
169104 }
169105
169106 static int snd_opl3sa2_resume(struct snd_card *card)
169107 {
169108 - struct snd_opl3sa2 *chip;
169109 + struct snd_opl3sa2 *chip = card->private_data;
169110 int i;
169111
169112 - if (!card)
169113 - return 0;
169114 -
169115 - chip = card->private_data;
169116 /* power up */
169117 snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D0);
169118
169119 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/oss/dmasound/dmasound_atari.c linux-2.6.29-rc3.owrt/sound/oss/dmasound/dmasound_atari.c
169120 --- linux-2.6.29.owrt/sound/oss/dmasound/dmasound_atari.c 2009-05-10 22:04:39.000000000 +0200
169121 +++ linux-2.6.29-rc3.owrt/sound/oss/dmasound/dmasound_atari.c 2009-05-10 23:48:34.000000000 +0200
169122 @@ -847,23 +847,23 @@
169123 of events. So all we need to keep the music playing is
169124 to provide the sound hardware with new data upon
169125 an interrupt from timer A. */
169126 - st_mfp.tim_ct_a = 0; /* ++roman: Stop timer before programming! */
169127 - st_mfp.tim_dt_a = 1; /* Cause interrupt after first event. */
169128 - st_mfp.tim_ct_a = 8; /* Turn on event counting. */
169129 + mfp.tim_ct_a = 0; /* ++roman: Stop timer before programming! */
169130 + mfp.tim_dt_a = 1; /* Cause interrupt after first event. */
169131 + mfp.tim_ct_a = 8; /* Turn on event counting. */
169132 /* Register interrupt handler. */
169133 if (request_irq(IRQ_MFP_TIMA, AtaInterrupt, IRQ_TYPE_SLOW, "DMA sound",
169134 AtaInterrupt))
169135 return 0;
169136 - st_mfp.int_en_a |= 0x20; /* Turn interrupt on. */
169137 - st_mfp.int_mk_a |= 0x20;
169138 + mfp.int_en_a |= 0x20; /* Turn interrupt on. */
169139 + mfp.int_mk_a |= 0x20;
169140 return 1;
169141 }
169142
169143 #ifdef MODULE
169144 static void AtaIrqCleanUp(void)
169145 {
169146 - st_mfp.tim_ct_a = 0; /* stop timer */
169147 - st_mfp.int_en_a &= ~0x20; /* turn interrupt off */
169148 + mfp.tim_ct_a = 0; /* stop timer */
169149 + mfp.int_en_a &= ~0x20; /* turn interrupt off */
169150 free_irq(IRQ_MFP_TIMA, AtaInterrupt);
169151 }
169152 #endif /* MODULE */
169153 @@ -1599,7 +1599,7 @@
169154 is_falcon = 0;
169155 } else
169156 return -ENODEV;
169157 - if ((st_mfp.int_en_a & st_mfp.int_mk_a & 0x20) == 0)
169158 + if ((mfp.int_en_a & mfp.int_mk_a & 0x20) == 0)
169159 return dmasound_init();
169160 else {
169161 printk("DMA sound driver: Timer A interrupt already in use\n");
169162 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/aw2/aw2-alsa.c linux-2.6.29-rc3.owrt/sound/pci/aw2/aw2-alsa.c
169163 --- linux-2.6.29.owrt/sound/pci/aw2/aw2-alsa.c 2009-05-10 22:04:39.000000000 +0200
169164 +++ linux-2.6.29-rc3.owrt/sound/pci/aw2/aw2-alsa.c 2009-05-10 23:48:34.000000000 +0200
169165 @@ -165,7 +165,7 @@
169166 MODULE_PARM_DESC(enable, "Enable Audiowerk2 soundcard.");
169167
169168 static struct pci_device_id snd_aw2_ids[] = {
169169 - {PCI_VENDOR_ID_SAA7146, PCI_DEVICE_ID_SAA7146, 0, 0,
169170 + {PCI_VENDOR_ID_SAA7146, PCI_DEVICE_ID_SAA7146, PCI_ANY_ID, PCI_ANY_ID,
169171 0, 0, 0},
169172 {0}
169173 };
169174 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/emu10k1/emu10k1_main.c linux-2.6.29-rc3.owrt/sound/pci/emu10k1/emu10k1_main.c
169175 --- linux-2.6.29.owrt/sound/pci/emu10k1/emu10k1_main.c 2009-05-10 22:04:39.000000000 +0200
169176 +++ linux-2.6.29-rc3.owrt/sound/pci/emu10k1/emu10k1_main.c 2009-05-10 23:48:34.000000000 +0200
169177 @@ -1528,7 +1528,6 @@
169178 .ca0151_chip = 1,
169179 .spk71 = 1,
169180 .spdif_bug = 1,
169181 - .invert_shared_spdif = 1, /* digital/analog switch swapped */
169182 .ac97_chip = 1} ,
169183 {.vendor = 0x1102, .device = 0x0004, .subsystem = 0x10021102,
169184 .driver = "Audigy2", .name = "SB Audigy 2 Platinum [SB0240P]",
169185 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/hda_codec.c linux-2.6.29-rc3.owrt/sound/pci/hda/hda_codec.c
169186 --- linux-2.6.29.owrt/sound/pci/hda/hda_codec.c 2009-05-10 22:04:39.000000000 +0200
169187 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/hda_codec.c 2009-05-10 23:48:34.000000000 +0200
169188 @@ -487,6 +487,7 @@
169189 {
169190 struct hda_bus *bus;
169191 int err;
169192 + char qname[8];
169193 static struct snd_device_ops dev_ops = {
169194 .dev_register = snd_hda_bus_dev_register,
169195 .dev_free = snd_hda_bus_dev_free,
169196 @@ -516,12 +517,10 @@
169197 mutex_init(&bus->cmd_mutex);
169198 INIT_LIST_HEAD(&bus->codec_list);
169199
169200 - snprintf(bus->workq_name, sizeof(bus->workq_name),
169201 - "hd-audio%d", card->number);
169202 - bus->workq = create_singlethread_workqueue(bus->workq_name);
169203 + snprintf(qname, sizeof(qname), "hda%d", card->number);
169204 + bus->workq = create_workqueue(qname);
169205 if (!bus->workq) {
169206 - snd_printk(KERN_ERR "cannot create workqueue %s\n",
169207 - bus->workq_name);
169208 + snd_printk(KERN_ERR "cannot create workqueue %s\n", qname);
169209 kfree(bus);
169210 return -ENOMEM;
169211 }
169212 @@ -3088,16 +3087,6 @@
169213 }
169214 EXPORT_SYMBOL_HDA(snd_hda_multi_out_dig_prepare);
169215
169216 -int snd_hda_multi_out_dig_cleanup(struct hda_codec *codec,
169217 - struct hda_multi_out *mout)
169218 -{
169219 - mutex_lock(&codec->spdif_mutex);
169220 - cleanup_dig_out_stream(codec, mout->dig_out_nid);
169221 - mutex_unlock(&codec->spdif_mutex);
169222 - return 0;
169223 -}
169224 -EXPORT_SYMBOL_HDA(snd_hda_multi_out_dig_cleanup);
169225 -
169226 /*
169227 * release the digital out
169228 */
169229 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/hda_codec.h linux-2.6.29-rc3.owrt/sound/pci/hda/hda_codec.h
169230 --- linux-2.6.29.owrt/sound/pci/hda/hda_codec.h 2009-05-10 22:04:39.000000000 +0200
169231 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/hda_codec.h 2009-05-10 23:48:34.000000000 +0200
169232 @@ -614,7 +614,6 @@
169233
169234 /* unsolicited event queue */
169235 struct hda_bus_unsolicited *unsol;
169236 - char workq_name[16];
169237 struct workqueue_struct *workq; /* common workqueue for codecs */
169238
169239 /* assigned PCMs */
169240 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/hda_hwdep.c linux-2.6.29-rc3.owrt/sound/pci/hda/hda_hwdep.c
169241 --- linux-2.6.29.owrt/sound/pci/hda/hda_hwdep.c 2009-05-10 22:04:39.000000000 +0200
169242 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/hda_hwdep.c 2009-05-10 23:48:34.000000000 +0200
169243 @@ -175,7 +175,7 @@
169244 err = snd_hda_codec_build_controls(codec);
169245 if (err < 0)
169246 return err;
169247 - return snd_card_register(codec->bus->card);
169248 + return 0;
169249 }
169250
169251 /*
169252 @@ -277,19 +277,18 @@
169253 {
169254 struct snd_hwdep *hwdep = dev_get_drvdata(dev);
169255 struct hda_codec *codec = hwdep->private_data;
169256 - struct hda_verb *v;
169257 - int nid, verb, param;
169258 + char *p;
169259 + struct hda_verb verb, *v;
169260
169261 - if (sscanf(buf, "%i %i %i", &nid, &verb, &param) != 3)
169262 - return -EINVAL;
169263 - if (!nid || !verb)
169264 + verb.nid = simple_strtoul(buf, &p, 0);
169265 + verb.verb = simple_strtoul(p, &p, 0);
169266 + verb.param = simple_strtoul(p, &p, 0);
169267 + if (!verb.nid || !verb.verb || !verb.param)
169268 return -EINVAL;
169269 v = snd_array_new(&codec->init_verbs);
169270 if (!v)
169271 return -ENOMEM;
169272 - v->nid = nid;
169273 - v->verb = verb;
169274 - v->param = param;
169275 + *v = verb;
169276 return count;
169277 }
169278
169279 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/hda_intel.c linux-2.6.29-rc3.owrt/sound/pci/hda/hda_intel.c
169280 --- linux-2.6.29.owrt/sound/pci/hda/hda_intel.c 2009-05-10 22:04:39.000000000 +0200
169281 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/hda_intel.c 2009-05-10 23:48:34.000000000 +0200
169282 @@ -1947,13 +1947,16 @@
169283 return 0;
169284 }
169285
169286 +static int azx_resume_early(struct pci_dev *pci)
169287 +{
169288 + return pci_restore_state(pci);
169289 +}
169290 +
169291 static int azx_resume(struct pci_dev *pci)
169292 {
169293 struct snd_card *card = pci_get_drvdata(pci);
169294 struct azx *chip = card->private_data;
169295
169296 - pci_set_power_state(pci, PCI_D0);
169297 - pci_restore_state(pci);
169298 if (pci_enable_device(pci) < 0) {
169299 printk(KERN_ERR "hda-intel: pci_enable_device failed, "
169300 "disabling device\n");
169301 @@ -2059,31 +2062,26 @@
169302 {
169303 const struct snd_pci_quirk *q;
169304
169305 - switch (fix) {
169306 - case POS_FIX_LPIB:
169307 - case POS_FIX_POSBUF:
169308 - return fix;
169309 - }
169310 -
169311 - /* Check VIA/ATI HD Audio Controller exist */
169312 - switch (chip->driver_type) {
169313 - case AZX_DRIVER_VIA:
169314 - case AZX_DRIVER_ATI:
169315 + /* Check VIA HD Audio Controller exist */
169316 + if (chip->pci->vendor == PCI_VENDOR_ID_VIA &&
169317 + chip->pci->device == VIA_HDAC_DEVICE_ID) {
169318 chip->via_dmapos_patch = 1;
169319 /* Use link position directly, avoid any transfer problem. */
169320 return POS_FIX_LPIB;
169321 }
169322 chip->via_dmapos_patch = 0;
169323
169324 - q = snd_pci_quirk_lookup(chip->pci, position_fix_list);
169325 - if (q) {
169326 - printk(KERN_INFO
169327 - "hda_intel: position_fix set to %d "
169328 - "for device %04x:%04x\n",
169329 - q->value, q->subvendor, q->subdevice);
169330 - return q->value;
169331 + if (fix == POS_FIX_AUTO) {
169332 + q = snd_pci_quirk_lookup(chip->pci, position_fix_list);
169333 + if (q) {
169334 + printk(KERN_INFO
169335 + "hda_intel: position_fix set to %d "
169336 + "for device %04x:%04x\n",
169337 + q->value, q->subvendor, q->subdevice);
169338 + return q->value;
169339 + }
169340 }
169341 - return POS_FIX_AUTO;
169342 + return fix;
169343 }
169344
169345 /*
169346 @@ -2100,8 +2098,6 @@
169347 SND_PCI_QUIRK(0x1028, 0x20ac, "Dell Studio Desktop", 0x01),
169348 /* including bogus ALC268 in slot#2 that conflicts with ALC888 */
169349 SND_PCI_QUIRK(0x17c0, 0x4085, "Medion MD96630", 0x01),
169350 - /* conflict of ALC268 in slot#3 (digital I/O); a temporary fix */
169351 - SND_PCI_QUIRK(0x1179, 0xff00, "Toshiba laptop", 0x03),
169352 {}
169353 };
169354
169355 @@ -2215,17 +2211,9 @@
169356 gcap = azx_readw(chip, GCAP);
169357 snd_printdd("chipset global capabilities = 0x%x\n", gcap);
169358
169359 - /* ATI chips seems buggy about 64bit DMA addresses */
169360 - if (chip->driver_type == AZX_DRIVER_ATI)
169361 - gcap &= ~0x01;
169362 -
169363 /* allow 64bit DMA address if supported by H/W */
169364 if ((gcap & 0x01) && !pci_set_dma_mask(pci, DMA_64BIT_MASK))
169365 pci_set_consistent_dma_mask(pci, DMA_64BIT_MASK);
169366 - else {
169367 - pci_set_dma_mask(pci, DMA_32BIT_MASK);
169368 - pci_set_consistent_dma_mask(pci, DMA_32BIT_MASK);
169369 - }
169370
169371 /* read number of streams from GCAP register instead of using
169372 * hardcoded value
169373 @@ -2480,6 +2468,7 @@
169374 .remove = __devexit_p(azx_remove),
169375 #ifdef CONFIG_PM
169376 .suspend = azx_suspend,
169377 + .resume_early = azx_resume_early,
169378 .resume = azx_resume,
169379 #endif
169380 };
169381 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/hda_local.h linux-2.6.29-rc3.owrt/sound/pci/hda/hda_local.h
169382 --- linux-2.6.29.owrt/sound/pci/hda/hda_local.h 2009-05-10 22:04:39.000000000 +0200
169383 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/hda_local.h 2009-05-10 23:48:34.000000000 +0200
169384 @@ -251,8 +251,6 @@
169385 unsigned int stream_tag,
169386 unsigned int format,
169387 struct snd_pcm_substream *substream);
169388 -int snd_hda_multi_out_dig_cleanup(struct hda_codec *codec,
169389 - struct hda_multi_out *mout);
169390 int snd_hda_multi_out_analog_open(struct hda_codec *codec,
169391 struct hda_multi_out *mout,
169392 struct snd_pcm_substream *substream,
169393 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/hda_proc.c linux-2.6.29-rc3.owrt/sound/pci/hda/hda_proc.c
169394 --- linux-2.6.29.owrt/sound/pci/hda/hda_proc.c 2009-05-10 22:04:39.000000000 +0200
169395 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/hda_proc.c 2009-05-10 23:48:34.000000000 +0200
169396 @@ -399,8 +399,7 @@
169397 {
169398 int c, curr = -1;
169399
169400 - if (conn_len > 1 && wid_type != AC_WID_AUD_MIX &&
169401 - wid_type != AC_WID_VOL_KNB)
169402 + if (conn_len > 1 && wid_type != AC_WID_AUD_MIX)
169403 curr = snd_hda_codec_read(codec, nid, 0,
169404 AC_VERB_GET_CONNECT_SEL, 0);
169405 snd_iprintf(buffer, " Connection: %d\n", conn_len);
169406 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/patch_analog.c linux-2.6.29-rc3.owrt/sound/pci/hda/patch_analog.c
169407 --- linux-2.6.29.owrt/sound/pci/hda/patch_analog.c 2009-05-10 22:04:39.000000000 +0200
169408 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/patch_analog.c 2009-05-10 23:48:34.000000000 +0200
169409 @@ -275,14 +275,6 @@
169410 format, substream);
169411 }
169412
169413 -static int ad198x_dig_playback_pcm_cleanup(struct hda_pcm_stream *hinfo,
169414 - struct hda_codec *codec,
169415 - struct snd_pcm_substream *substream)
169416 -{
169417 - struct ad198x_spec *spec = codec->spec;
169418 - return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout);
169419 -}
169420 -
169421 /*
169422 * Analog capture
169423 */
169424 @@ -341,8 +333,7 @@
169425 .ops = {
169426 .open = ad198x_dig_playback_pcm_open,
169427 .close = ad198x_dig_playback_pcm_close,
169428 - .prepare = ad198x_dig_playback_pcm_prepare,
169429 - .cleanup = ad198x_dig_playback_pcm_cleanup
169430 + .prepare = ad198x_dig_playback_pcm_prepare
169431 },
169432 };
169433
169434 @@ -1894,8 +1885,8 @@
169435 #define AD1988_SPDIF_OUT_HDMI 0x0b
169436 #define AD1988_SPDIF_IN 0x07
169437
169438 -static hda_nid_t ad1989b_slave_dig_outs[] = {
169439 - AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI, 0
169440 +static hda_nid_t ad1989b_slave_dig_outs[2] = {
169441 + AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI
169442 };
169443
169444 static struct hda_input_mux ad1988_6stack_capture_source = {
169445 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/patch_conexant.c linux-2.6.29-rc3.owrt/sound/pci/hda/patch_conexant.c
169446 --- linux-2.6.29.owrt/sound/pci/hda/patch_conexant.c 2009-05-10 22:04:39.000000000 +0200
169447 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/patch_conexant.c 2009-05-10 23:48:34.000000000 +0200
169448 @@ -347,7 +347,6 @@
169449 &spec->cur_mux[adc_idx]);
169450 }
169451
169452 -#ifdef CONFIG_SND_JACK
169453 static int conexant_add_jack(struct hda_codec *codec,
169454 hda_nid_t nid, int type)
169455 {
169456 @@ -395,6 +394,7 @@
169457
169458 static int conexant_init_jacks(struct hda_codec *codec)
169459 {
169460 +#ifdef CONFIG_SND_JACK
169461 struct conexant_spec *spec = codec->spec;
169462 int i;
169463
169464 @@ -422,19 +422,10 @@
169465 ++hv;
169466 }
169467 }
169468 +#endif
169469 return 0;
169470
169471 }
169472 -#else
169473 -static inline void conexant_report_jack(struct hda_codec *codec, hda_nid_t nid)
169474 -{
169475 -}
169476 -
169477 -static inline int conexant_init_jacks(struct hda_codec *codec)
169478 -{
169479 - return 0;
169480 -}
169481 -#endif
169482
169483 static int conexant_init(struct hda_codec *codec)
169484 {
169485 @@ -1575,7 +1566,6 @@
169486 SND_PCI_QUIRK(0x103c, 0x30a5, "HP DV5200T/DV8000T", CXT5047_LAPTOP_HP),
169487 SND_PCI_QUIRK(0x103c, 0x30b2, "HP DV2000T/DV3000T", CXT5047_LAPTOP),
169488 SND_PCI_QUIRK(0x103c, 0x30b5, "HP DV2000Z", CXT5047_LAPTOP),
169489 - SND_PCI_QUIRK(0x103c, 0x30cf, "HP DV6700", CXT5047_LAPTOP),
169490 SND_PCI_QUIRK(0x1179, 0xff31, "Toshiba P100", CXT5047_LAPTOP_EAPD),
169491 {}
169492 };
169493 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/patch_intelhdmi.c linux-2.6.29-rc3.owrt/sound/pci/hda/patch_intelhdmi.c
169494 --- linux-2.6.29.owrt/sound/pci/hda/patch_intelhdmi.c 2009-05-10 22:04:39.000000000 +0200
169495 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/patch_intelhdmi.c 2009-05-10 23:48:34.000000000 +0200
169496 @@ -49,6 +49,11 @@
169497 {} /* terminator */
169498 };
169499
169500 +static struct hda_verb pinout_disable_verb[] = {
169501 + {PIN_NID, AC_VERB_SET_PIN_WIDGET_CONTROL, 0x00},
169502 + {}
169503 +};
169504 +
169505 static struct hda_verb unsolicited_response_verb[] = {
169506 {PIN_NID, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN |
169507 INTEL_HDMI_EVENT_TAG},
169508 @@ -243,6 +248,10 @@
169509
169510 static void hdmi_enable_output(struct hda_codec *codec)
169511 {
169512 + /* Enable Audio InfoFrame Transmission */
169513 + hdmi_set_dip_index(codec, PIN_NID, 0x0, 0x0);
169514 + snd_hda_codec_write(codec, PIN_NID, 0, AC_VERB_SET_HDMI_DIP_XMIT,
169515 + AC_DIPXMIT_BEST);
169516 /* Unmute */
169517 if (get_wcaps(codec, PIN_NID) & AC_WCAP_OUT_AMP)
169518 snd_hda_codec_write(codec, PIN_NID, 0,
169519 @@ -251,24 +260,17 @@
169520 snd_hda_sequence_write(codec, pinout_enable_verb);
169521 }
169522
169523 -/*
169524 - * Enable Audio InfoFrame Transmission
169525 - */
169526 -static void hdmi_start_infoframe_trans(struct hda_codec *codec)
169527 +static void hdmi_disable_output(struct hda_codec *codec)
169528 {
169529 - hdmi_set_dip_index(codec, PIN_NID, 0x0, 0x0);
169530 - snd_hda_codec_write(codec, PIN_NID, 0, AC_VERB_SET_HDMI_DIP_XMIT,
169531 - AC_DIPXMIT_BEST);
169532 -}
169533 + snd_hda_sequence_write(codec, pinout_disable_verb);
169534 + if (get_wcaps(codec, PIN_NID) & AC_WCAP_OUT_AMP)
169535 + snd_hda_codec_write(codec, PIN_NID, 0,
169536 + AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
169537
169538 -/*
169539 - * Disable Audio InfoFrame Transmission
169540 - */
169541 -static void hdmi_stop_infoframe_trans(struct hda_codec *codec)
169542 -{
169543 - hdmi_set_dip_index(codec, PIN_NID, 0x0, 0x0);
169544 - snd_hda_codec_write(codec, PIN_NID, 0, AC_VERB_SET_HDMI_DIP_XMIT,
169545 - AC_DIPXMIT_DISABLE);
169546 + /*
169547 + * FIXME: noises may arise when playing music after reloading the
169548 + * kernel module, until the next X restart or monitor repower.
169549 + */
169550 }
169551
169552 static int hdmi_get_channel_count(struct hda_codec *codec)
169553 @@ -366,16 +368,11 @@
169554 struct hdmi_audio_infoframe *ai)
169555 {
169556 u8 *params = (u8 *)ai;
169557 - u8 sum = 0;
169558 int i;
169559
169560 hdmi_debug_dip_size(codec);
169561 hdmi_clear_dip_buffers(codec); /* be paranoid */
169562
169563 - for (i = 0; i < sizeof(ai); i++)
169564 - sum += params[i];
169565 - ai->checksum = - sum;
169566 -
169567 hdmi_set_dip_index(codec, PIN_NID, 0x0, 0x0);
169568 for (i = 0; i < sizeof(ai); i++)
169569 hdmi_write_dip_byte(codec, PIN_NID, params[i]);
169570 @@ -422,16 +419,12 @@
169571 /*
169572 * CA defaults to 0 for basic stereo audio
169573 */
169574 - if (channels <= 2)
169575 + if (!eld->eld_ver)
169576 return 0;
169577 -
169578 - /*
169579 - * HDMI sink's ELD info cannot always be retrieved for now, e.g.
169580 - * in console or for audio devices. Assume the highest speakers
169581 - * configuration, to _not_ prohibit multi-channel audio playback.
169582 - */
169583 if (!eld->spk_alloc)
169584 - eld->spk_alloc = 0xffff;
169585 + return 0;
169586 + if (channels <= 2)
169587 + return 0;
169588
169589 /*
169590 * expand ELD's speaker allocation mask
169591 @@ -492,7 +485,6 @@
169592 hdmi_setup_channel_mapping(codec, &ai);
169593
169594 hdmi_fill_audio_infoframe(codec, &ai);
169595 - hdmi_start_infoframe_trans(codec);
169596 }
169597
169598
169599 @@ -570,7 +562,7 @@
169600 {
169601 struct intel_hdmi_spec *spec = codec->spec;
169602
169603 - hdmi_stop_infoframe_trans(codec);
169604 + hdmi_disable_output(codec);
169605
169606 return snd_hda_multi_out_dig_close(codec, &spec->multiout);
169607 }
169608 @@ -590,6 +582,8 @@
169609
169610 hdmi_setup_audio_infoframe(codec, substream);
169611
169612 + hdmi_enable_output(codec);
169613 +
169614 return 0;
169615 }
169616
169617 @@ -634,7 +628,8 @@
169618
169619 static int intel_hdmi_init(struct hda_codec *codec)
169620 {
169621 - hdmi_enable_output(codec);
169622 + /* disable audio output as early as possible */
169623 + hdmi_disable_output(codec);
169624
169625 snd_hda_sequence_write(codec, unsolicited_response_verb);
169626
169627 @@ -684,7 +679,6 @@
169628 { .id = 0x80862801, .name = "G45 DEVBLC", .patch = patch_intel_hdmi },
169629 { .id = 0x80862802, .name = "G45 DEVCTG", .patch = patch_intel_hdmi },
169630 { .id = 0x80862803, .name = "G45 DEVELK", .patch = patch_intel_hdmi },
169631 - { .id = 0x80862804, .name = "G45 DEVIBX", .patch = patch_intel_hdmi },
169632 { .id = 0x10951392, .name = "SiI1392 HDMI", .patch = patch_intel_hdmi },
169633 {} /* terminator */
169634 };
169635 @@ -693,7 +687,6 @@
169636 MODULE_ALIAS("snd-hda-codec-id:80862801");
169637 MODULE_ALIAS("snd-hda-codec-id:80862802");
169638 MODULE_ALIAS("snd-hda-codec-id:80862803");
169639 -MODULE_ALIAS("snd-hda-codec-id:80862804");
169640 MODULE_ALIAS("snd-hda-codec-id:10951392");
169641
169642 MODULE_LICENSE("GPL");
169643 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/patch_realtek.c linux-2.6.29-rc3.owrt/sound/pci/hda/patch_realtek.c
169644 --- linux-2.6.29.owrt/sound/pci/hda/patch_realtek.c 2009-05-10 22:04:39.000000000 +0200
169645 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/patch_realtek.c 2009-05-10 23:48:34.000000000 +0200
169646 @@ -1037,7 +1037,6 @@
169647 case 0x10ec0267:
169648 case 0x10ec0268:
169649 case 0x10ec0269:
169650 - case 0x10ec0272:
169651 case 0x10ec0660:
169652 case 0x10ec0662:
169653 case 0x10ec0663:
169654 @@ -1066,7 +1065,6 @@
169655 case 0x10ec0882:
169656 case 0x10ec0883:
169657 case 0x10ec0885:
169658 - case 0x10ec0887:
169659 case 0x10ec0889:
169660 snd_hda_codec_write(codec, 0x20, 0,
169661 AC_VERB_SET_COEF_INDEX, 7);
169662 @@ -7014,15 +7012,12 @@
169663 break;
169664 case 0x106b1000: /* iMac 24 */
169665 case 0x106b2800: /* AppleTV */
169666 - case 0x106b3e00: /* iMac 24 Aluminium */
169667 board_config = ALC885_IMAC24;
169668 break;
169669 - case 0x106b00a0: /* MacBookPro3,1 - Another revision */
169670 case 0x106b00a1: /* Macbook (might be wrong - PCI SSID?) */
169671 case 0x106b00a4: /* MacbookPro4,1 */
169672 case 0x106b2c00: /* Macbook Pro rev3 */
169673 case 0x106b3600: /* Macbook 3.1 */
169674 - case 0x106b3800: /* MacbookPro4,1 - latter revision */
169675 board_config = ALC885_MBP3;
169676 break;
169677 default:
169678 @@ -8470,8 +8465,6 @@
169679 ALC888_ACER_ASPIRE_4930G),
169680 SND_PCI_QUIRK(0x1025, 0x015e, "Acer Aspire 6930G",
169681 ALC888_ACER_ASPIRE_4930G),
169682 - SND_PCI_QUIRK(0x1025, 0x0166, "Acer Aspire 6530G",
169683 - ALC888_ACER_ASPIRE_4930G),
169684 SND_PCI_QUIRK(0x1025, 0, "Acer laptop", ALC883_ACER), /* default Acer */
169685 SND_PCI_QUIRK(0x1028, 0x020d, "Dell Inspiron 530", ALC888_6ST_DELL),
169686 SND_PCI_QUIRK(0x103c, 0x2a3d, "HP Pavillion", ALC883_6ST_DIG),
169687 @@ -8481,7 +8474,6 @@
169688 SND_PCI_QUIRK(0x103c, 0x2a66, "HP Acacia", ALC888_3ST_HP),
169689 SND_PCI_QUIRK(0x1043, 0x1873, "Asus M90V", ALC888_ASUS_M90V),
169690 SND_PCI_QUIRK(0x1043, 0x8249, "Asus M2A-VM HDMI", ALC883_3ST_6ch_DIG),
169691 - SND_PCI_QUIRK(0x1043, 0x8284, "Asus Z37E", ALC883_6ST_DIG),
169692 SND_PCI_QUIRK(0x1043, 0x82fe, "Asus P5Q-EM HDMI", ALC1200_ASUS_P5Q),
169693 SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_ASUS_EEE1601),
169694 SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG),
169695 @@ -8521,8 +8513,6 @@
169696 SND_PCI_QUIRK(0x1558, 0, "Clevo laptop", ALC883_LAPTOP_EAPD),
169697 SND_PCI_QUIRK(0x15d9, 0x8780, "Supermicro PDSBA", ALC883_3ST_6ch),
169698 SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION),
169699 - SND_PCI_QUIRK(0x1734, 0x1107, "FSC AMILO Xi2550",
169700 - ALC883_FUJITSU_PI2515),
169701 SND_PCI_QUIRK(0x1734, 0x1108, "Fujitsu AMILO Pi2515", ALC883_FUJITSU_PI2515),
169702 SND_PCI_QUIRK(0x1734, 0x113d, "Fujitsu AMILO Xa3530",
169703 ALC888_FUJITSU_XA3530),
169704 @@ -10557,7 +10547,6 @@
169705 SND_PCI_QUIRK(0x103c, 0x1309, "HP xw4*00", ALC262_HP_BPC),
169706 SND_PCI_QUIRK(0x103c, 0x130a, "HP xw6*00", ALC262_HP_BPC),
169707 SND_PCI_QUIRK(0x103c, 0x130b, "HP xw8*00", ALC262_HP_BPC),
169708 - SND_PCI_QUIRK(0x103c, 0x170b, "HP xw*", ALC262_HP_BPC),
169709 SND_PCI_QUIRK(0x103c, 0x2800, "HP D7000", ALC262_HP_BPC_D7000_WL),
169710 SND_PCI_QUIRK(0x103c, 0x2801, "HP D7000", ALC262_HP_BPC_D7000_WF),
169711 SND_PCI_QUIRK(0x103c, 0x2802, "HP D7000", ALC262_HP_BPC_D7000_WL),
169712 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/hda/patch_sigmatel.c linux-2.6.29-rc3.owrt/sound/pci/hda/patch_sigmatel.c
169713 --- linux-2.6.29.owrt/sound/pci/hda/patch_sigmatel.c 2009-05-10 22:04:39.000000000 +0200
169714 +++ linux-2.6.29-rc3.owrt/sound/pci/hda/patch_sigmatel.c 2009-05-10 23:48:34.000000000 +0200
169715 @@ -1207,7 +1207,7 @@
169716 "LFE Playback Volume",
169717 "Side Playback Volume",
169718 "Headphone Playback Volume",
169719 - "Headphone2 Playback Volume",
169720 + "Headphone Playback Volume",
169721 "Speaker Playback Volume",
169722 "External Speaker Playback Volume",
169723 "Speaker2 Playback Volume",
169724 @@ -1221,7 +1221,7 @@
169725 "LFE Playback Switch",
169726 "Side Playback Switch",
169727 "Headphone Playback Switch",
169728 - "Headphone2 Playback Switch",
169729 + "Headphone Playback Switch",
169730 "Speaker Playback Switch",
169731 "External Speaker Playback Switch",
169732 "Speaker2 Playback Switch",
169733 @@ -1799,13 +1799,11 @@
169734 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f2,
169735 "HP dv5", STAC_HP_M4),
169736 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f4,
169737 - "HP dv7", STAC_HP_DV5),
169738 + "HP dv7", STAC_HP_M4),
169739 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30f7,
169740 "HP dv4", STAC_HP_DV5),
169741 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x30fc,
169742 "HP dv7", STAC_HP_M4),
169743 - SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3600,
169744 - "HP dv5", STAC_HP_DV5),
169745 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3603,
169746 "HP dv5", STAC_HP_DV5),
169747 SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361a,
169748 @@ -2442,14 +2440,6 @@
169749 stream_tag, format, substream);
169750 }
169751
169752 -static int stac92xx_dig_playback_pcm_cleanup(struct hda_pcm_stream *hinfo,
169753 - struct hda_codec *codec,
169754 - struct snd_pcm_substream *substream)
169755 -{
169756 - struct sigmatel_spec *spec = codec->spec;
169757 - return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout);
169758 -}
169759 -
169760
169761 /*
169762 * Analog capture callbacks
169763 @@ -2494,8 +2484,7 @@
169764 .ops = {
169765 .open = stac92xx_dig_playback_pcm_open,
169766 .close = stac92xx_dig_playback_pcm_close,
169767 - .prepare = stac92xx_dig_playback_pcm_prepare,
169768 - .cleanup = stac92xx_dig_playback_pcm_cleanup
169769 + .prepare = stac92xx_dig_playback_pcm_prepare
169770 },
169771 };
169772
169773 @@ -2550,8 +2539,6 @@
169774
169775 info->name = "STAC92xx Analog";
169776 info->stream[SNDRV_PCM_STREAM_PLAYBACK] = stac92xx_pcm_analog_playback;
169777 - info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid =
169778 - spec->multiout.dac_nids[0];
169779 info->stream[SNDRV_PCM_STREAM_CAPTURE] = stac92xx_pcm_analog_capture;
169780 info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adc_nids[0];
169781 info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = spec->num_adcs;
169782 @@ -3516,7 +3503,6 @@
169783 if (! spec->autocfg.line_outs)
169784 return 0; /* can't find valid pin config */
169785
169786 -#if 0 /* FIXME: temporarily disabled */
169787 /* If we have no real line-out pin and multiple hp-outs, HPs should
169788 * be set up as multi-channel outputs.
169789 */
169790 @@ -3536,7 +3522,6 @@
169791 spec->autocfg.line_out_type = AUTO_PIN_HP_OUT;
169792 spec->autocfg.hp_outs = 0;
169793 }
169794 -#endif /* FIXME: temporarily disabled */
169795 if (spec->autocfg.mono_out_pin) {
169796 int dir = get_wcaps(codec, spec->autocfg.mono_out_pin) &
169797 (AC_WCAP_OUT_AMP | AC_WCAP_IN_AMP);
169798 @@ -4991,7 +4976,7 @@
169799 case STAC_DELL_M4_3:
169800 spec->num_dmics = 1;
169801 spec->num_smuxes = 0;
169802 - spec->num_dmuxes = 1;
169803 + spec->num_dmuxes = 0;
169804 break;
169805 default:
169806 spec->num_dmics = STAC92HD71BXX_NUM_DMICS;
169807 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/intel8x0.c linux-2.6.29-rc3.owrt/sound/pci/intel8x0.c
169808 --- linux-2.6.29.owrt/sound/pci/intel8x0.c 2009-05-10 22:04:39.000000000 +0200
169809 +++ linux-2.6.29-rc3.owrt/sound/pci/intel8x0.c 2009-05-10 23:48:34.000000000 +0200
169810 @@ -617,7 +617,7 @@
169811 int time = 100;
169812 if (chip->buggy_semaphore)
169813 return 0; /* just ignore ... */
169814 - while (--time && (igetdword(chip, ICHREG(ALI_CAS)) & ALI_CAS_SEM_BUSY))
169815 + while (time-- && (igetdword(chip, ICHREG(ALI_CAS)) & ALI_CAS_SEM_BUSY))
169816 udelay(1);
169817 if (! time && ! chip->in_ac97_init)
169818 snd_printk(KERN_WARNING "ali_codec_semaphore timeout\n");
169819 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/mixart/mixart.c linux-2.6.29-rc3.owrt/sound/pci/mixart/mixart.c
169820 --- linux-2.6.29.owrt/sound/pci/mixart/mixart.c 2009-05-10 22:04:39.000000000 +0200
169821 +++ linux-2.6.29-rc3.owrt/sound/pci/mixart/mixart.c 2009-05-10 23:48:34.000000000 +0200
169822 @@ -607,7 +607,6 @@
169823 /* set the format to the board */
169824 err = mixart_set_format(stream, format);
169825 if(err < 0) {
169826 - mutex_unlock(&mgr->setup_mutex);
169827 return err;
169828 }
169829
169830 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/oxygen/virtuoso.c linux-2.6.29-rc3.owrt/sound/pci/oxygen/virtuoso.c
169831 --- linux-2.6.29.owrt/sound/pci/oxygen/virtuoso.c 2009-05-10 22:04:39.000000000 +0200
169832 +++ linux-2.6.29-rc3.owrt/sound/pci/oxygen/virtuoso.c 2009-05-10 23:48:34.000000000 +0200
169833 @@ -26,7 +26,7 @@
169834 * SPI 0 -> 1st PCM1796 (front)
169835 * SPI 1 -> 2nd PCM1796 (surround)
169836 * SPI 2 -> 3rd PCM1796 (center/LFE)
169837 - * SPI 4 -> 4th PCM1796 (back)
169838 + * SPI 4 -> 4th PCM1796 (back) and EEPROM self-destruct (do not use!)
169839 *
169840 * GPIO 2 -> M0 of CS5381
169841 * GPIO 3 -> M1 of CS5381
169842 @@ -207,6 +207,12 @@
169843 static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec,
169844 u8 reg, u8 value)
169845 {
169846 + /*
169847 + * We don't want to do writes on SPI 4 because the EEPROM, which shares
169848 + * the same pin, might get confused and broken. We'd better take care
169849 + * that the driver works with the default register values ...
169850 + */
169851 +#if 0
169852 /* maps ALSA channel pair number to SPI output */
169853 static const u8 codec_map[4] = {
169854 0, 1, 2, 4
169855 @@ -217,6 +223,7 @@
169856 (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) |
169857 OXYGEN_SPI_CEN_LATCH_CLOCK_HI,
169858 (reg << 8) | value);
169859 +#endif
169860 }
169861
169862 static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec,
169863 @@ -750,6 +757,9 @@
169864
169865 static int xonar_d2_control_filter(struct snd_kcontrol_new *template)
169866 {
169867 + if (!strncmp(template->name, "Master Playback ", 16))
169868 + /* disable volume/mute because they would require SPI writes */
169869 + return 1;
169870 if (!strncmp(template->name, "CD Capture ", 11))
169871 /* CD in is actually connected to the video in pin */
169872 template->private_value ^= AC97_CD ^ AC97_VIDEO;
169873 @@ -840,9 +850,8 @@
169874 .dac_volume_min = 0x0f,
169875 .dac_volume_max = 0xff,
169876 .misc_flags = OXYGEN_MISC_MIDI,
169877 - .function_flags = OXYGEN_FUNCTION_SPI |
169878 - OXYGEN_FUNCTION_ENABLE_SPI_4_5,
169879 - .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
169880 + .function_flags = OXYGEN_FUNCTION_SPI,
169881 + .dac_i2s_format = OXYGEN_I2S_FORMAT_I2S,
169882 .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST,
169883 };
169884
169885 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/pci/pcxhr/pcxhr.h linux-2.6.29-rc3.owrt/sound/pci/pcxhr/pcxhr.h
169886 --- linux-2.6.29.owrt/sound/pci/pcxhr/pcxhr.h 2009-05-10 22:04:39.000000000 +0200
169887 +++ linux-2.6.29-rc3.owrt/sound/pci/pcxhr/pcxhr.h 2009-05-10 23:48:34.000000000 +0200
169888 @@ -97,12 +97,12 @@
169889 int capture_chips;
169890 int fw_file_set;
169891 int firmware_num;
169892 - unsigned int is_hr_stereo:1;
169893 - unsigned int board_has_aes1:1; /* if 1 board has AES1 plug and SRC */
169894 - unsigned int board_has_analog:1; /* if 0 the board is digital only */
169895 - unsigned int board_has_mic:1; /* if 1 the board has microphone input */
169896 - unsigned int board_aes_in_192k:1;/* if 1 the aes input plugs do support 192kHz */
169897 - unsigned int mono_capture:1; /* if 1 the board does mono capture */
169898 + int is_hr_stereo:1;
169899 + int board_has_aes1:1; /* if 1 board has AES1 plug and SRC */
169900 + int board_has_analog:1; /* if 0 the board is digital only */
169901 + int board_has_mic:1; /* if 1 the board has microphone input */
169902 + int board_aes_in_192k:1;/* if 1 the aes input plugs do support 192kHz */
169903 + int mono_capture:1; /* if 1 the board does mono capture */
169904
169905 struct snd_dma_buffer hostport;
169906
169907 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/atmel/atmel_ssc_dai.c linux-2.6.29-rc3.owrt/sound/soc/atmel/atmel_ssc_dai.c
169908 --- linux-2.6.29.owrt/sound/soc/atmel/atmel_ssc_dai.c 2009-05-10 22:04:39.000000000 +0200
169909 +++ linux-2.6.29-rc3.owrt/sound/soc/atmel/atmel_ssc_dai.c 2009-05-10 23:48:34.000000000 +0200
169910 @@ -10,7 +10,7 @@
169911 * Based on at91-ssc.c by
169912 * Frank Mandarino <fmandarino@endrelia.com>
169913 * Based on pxa2xx Platform drivers by
169914 - * Liam Girdwood <lrg@slimlogic.co.uk>
169915 + * Liam Girdwood <liam.girdwood@wolfsonmicro.com>
169916 *
169917 * This program is free software; you can redistribute it and/or modify
169918 * it under the terms of the GNU General Public License as published by
169919 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/atmel/atmel_ssc_dai.h linux-2.6.29-rc3.owrt/sound/soc/atmel/atmel_ssc_dai.h
169920 --- linux-2.6.29.owrt/sound/soc/atmel/atmel_ssc_dai.h 2009-05-10 22:04:39.000000000 +0200
169921 +++ linux-2.6.29-rc3.owrt/sound/soc/atmel/atmel_ssc_dai.h 2009-05-10 23:48:34.000000000 +0200
169922 @@ -10,7 +10,7 @@
169923 * Based on at91-ssc.c by
169924 * Frank Mandarino <fmandarino@endrelia.com>
169925 * Based on pxa2xx Platform drivers by
169926 - * Liam Girdwood <lrg@slimlogic.co.uk>
169927 + * Liam Girdwood <liam.girdwood@wolfsonmicro.com>
169928 *
169929 * This program is free software; you can redistribute it and/or modify
169930 * it under the terms of the GNU General Public License as published by
169931 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/codecs/tlv320aic3x.c linux-2.6.29-rc3.owrt/sound/soc/codecs/tlv320aic3x.c
169932 --- linux-2.6.29.owrt/sound/soc/codecs/tlv320aic3x.c 2009-05-10 22:04:39.000000000 +0200
169933 +++ linux-2.6.29-rc3.owrt/sound/soc/codecs/tlv320aic3x.c 2009-05-10 23:48:34.000000000 +0200
169934 @@ -165,13 +165,10 @@
169935 struct snd_ctl_elem_value *ucontrol)
169936 {
169937 struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
169938 - struct soc_mixer_control *mc =
169939 - (struct soc_mixer_control *)kcontrol->private_value;
169940 - unsigned int reg = mc->reg;
169941 - unsigned int shift = mc->shift;
169942 - int max = mc->max;
169943 - unsigned int mask = (1 << fls(max)) - 1;
169944 - unsigned int invert = mc->invert;
169945 + int reg = kcontrol->private_value & 0xff;
169946 + int shift = (kcontrol->private_value >> 8) & 0x0f;
169947 + int mask = (kcontrol->private_value >> 16) & 0xff;
169948 + int invert = (kcontrol->private_value >> 24) & 0x01;
169949 unsigned short val, val_mask;
169950 int ret;
169951 struct snd_soc_dapm_path *path;
169952 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/codecs/wm8350.c linux-2.6.29-rc3.owrt/sound/soc/codecs/wm8350.c
169953 --- linux-2.6.29.owrt/sound/soc/codecs/wm8350.c 2009-05-10 22:04:39.000000000 +0200
169954 +++ linux-2.6.29-rc3.owrt/sound/soc/codecs/wm8350.c 2009-05-10 23:48:34.000000000 +0200
169955 @@ -3,7 +3,7 @@
169956 *
169957 * Copyright (C) 2007, 2008 Wolfson Microelectronics PLC.
169958 *
169959 - * Author: Liam Girdwood <lrg@slimlogic.co.uk>
169960 + * Author: Liam Girdwood <lg@opensource.wolfsonmicro.com>
169961 *
169962 * This program is free software; you can redistribute it and/or modify
169963 * it under the terms of the GNU General Public License version 2 as
169964 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/codecs/wm8753.c linux-2.6.29-rc3.owrt/sound/soc/codecs/wm8753.c
169965 --- linux-2.6.29.owrt/sound/soc/codecs/wm8753.c 2009-05-10 22:04:39.000000000 +0200
169966 +++ linux-2.6.29-rc3.owrt/sound/soc/codecs/wm8753.c 2009-05-10 23:48:34.000000000 +0200
169967 @@ -1451,14 +1451,7 @@
169968 },
169969 };
169970
169971 -struct snd_soc_dai wm8753_dai[] = {
169972 - {
169973 - .name = "WM8753 DAI 0",
169974 - },
169975 - {
169976 - .name = "WM8753 DAI 1",
169977 - },
169978 -};
169979 +struct snd_soc_dai wm8753_dai[2];
169980 EXPORT_SYMBOL_GPL(wm8753_dai);
169981
169982 static void wm8753_set_dai_mode(struct snd_soc_codec *codec, unsigned int mode)
169983 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/codecs/wm8990.c linux-2.6.29-rc3.owrt/sound/soc/codecs/wm8990.c
169984 --- linux-2.6.29.owrt/sound/soc/codecs/wm8990.c 2009-05-10 22:04:39.000000000 +0200
169985 +++ linux-2.6.29-rc3.owrt/sound/soc/codecs/wm8990.c 2009-05-10 23:48:34.000000000 +0200
169986 @@ -2,7 +2,8 @@
169987 * wm8990.c -- WM8990 ALSA Soc Audio driver
169988 *
169989 * Copyright 2008 Wolfson Microelectronics PLC.
169990 - * Author: Liam Girdwood <lrg@slimlogic.co.uk>
169991 + * Author: Liam Girdwood
169992 + * lg@opensource.wolfsonmicro.com or linux@wolfsonmicro.com
169993 *
169994 * This program is free software; you can redistribute it and/or modify it
169995 * under the terms of the GNU General Public License as published by the
169996 @@ -176,9 +177,7 @@
169997 struct snd_ctl_elem_value *ucontrol)
169998 {
169999 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
170000 - struct soc_mixer_control *mc =
170001 - (struct soc_mixer_control *)kcontrol->private_value;
170002 - int reg = mc->reg;
170003 + int reg = kcontrol->private_value & 0xff;
170004 int ret;
170005 u16 val;
170006
170007 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/omap/omap-mcbsp.c linux-2.6.29-rc3.owrt/sound/soc/omap/omap-mcbsp.c
170008 --- linux-2.6.29.owrt/sound/soc/omap/omap-mcbsp.c 2009-05-10 22:04:39.000000000 +0200
170009 +++ linux-2.6.29-rc3.owrt/sound/soc/omap/omap-mcbsp.c 2009-05-10 23:48:34.000000000 +0200
170010 @@ -302,10 +302,6 @@
170011 regs->spcr1 |= RINTM(3);
170012 regs->rcr2 |= RFIG;
170013 regs->xcr2 |= XFIG;
170014 - if (cpu_is_omap2430() || cpu_is_omap34xx()) {
170015 - regs->xccr = DXENDLY(1) | XDMAEN;
170016 - regs->rccr = RFULL_CYCLE | RDMAEN;
170017 - }
170018
170019 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
170020 case SND_SOC_DAIFMT_I2S:
170021 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/omap/omap-pcm.c linux-2.6.29-rc3.owrt/sound/soc/omap/omap-pcm.c
170022 --- linux-2.6.29.owrt/sound/soc/omap/omap-pcm.c 2009-05-10 22:04:39.000000000 +0200
170023 +++ linux-2.6.29-rc3.owrt/sound/soc/omap/omap-pcm.c 2009-05-10 23:48:34.000000000 +0200
170024 @@ -175,10 +175,9 @@
170025 {
170026 struct snd_pcm_runtime *runtime = substream->runtime;
170027 struct omap_runtime_data *prtd = runtime->private_data;
170028 - unsigned long flags;
170029 int ret = 0;
170030
170031 - spin_lock_irqsave(&prtd->lock, flags);
170032 + spin_lock_irq(&prtd->lock);
170033 switch (cmd) {
170034 case SNDRV_PCM_TRIGGER_START:
170035 case SNDRV_PCM_TRIGGER_RESUME:
170036 @@ -196,7 +195,7 @@
170037 default:
170038 ret = -EINVAL;
170039 }
170040 - spin_unlock_irqrestore(&prtd->lock, flags);
170041 + spin_unlock_irq(&prtd->lock);
170042
170043 return ret;
170044 }
170045 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/omap/sdp3430.c linux-2.6.29-rc3.owrt/sound/soc/omap/sdp3430.c
170046 --- linux-2.6.29.owrt/sound/soc/omap/sdp3430.c 2009-05-10 22:04:39.000000000 +0200
170047 +++ linux-2.6.29-rc3.owrt/sound/soc/omap/sdp3430.c 2009-05-10 23:48:34.000000000 +0200
170048 @@ -91,7 +91,7 @@
170049 };
170050
170051 /* Audio machine driver */
170052 -static struct snd_soc_card snd_soc_sdp3430 = {
170053 +static struct snd_soc_machine snd_soc_machine_sdp3430 = {
170054 .name = "SDP3430",
170055 .platform = &omap_soc_platform,
170056 .dai_link = &sdp3430_dai,
170057 @@ -100,7 +100,7 @@
170058
170059 /* Audio subsystem */
170060 static struct snd_soc_device sdp3430_snd_devdata = {
170061 - .card = &snd_soc_sdp3430,
170062 + .machine = &snd_soc_machine_sdp3430,
170063 .codec_dev = &soc_codec_dev_twl4030,
170064 };
170065
170066 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/soc/soc-core.c linux-2.6.29-rc3.owrt/sound/soc/soc-core.c
170067 --- linux-2.6.29.owrt/sound/soc/soc-core.c 2009-05-10 22:04:39.000000000 +0200
170068 +++ linux-2.6.29-rc3.owrt/sound/soc/soc-core.c 2009-05-10 23:48:34.000000000 +0200
170069 @@ -1385,10 +1385,7 @@
170070
170071 mutex_lock(&codec->mutex);
170072 #ifdef CONFIG_SND_SOC_AC97_BUS
170073 - /* Only instantiate AC97 if not already done by the adaptor
170074 - * for the generic AC97 subsystem.
170075 - */
170076 - if (ac97 && strcmp(codec->name, "AC97") != 0) {
170077 + if (ac97) {
170078 ret = soc_ac97_dev_register(codec);
170079 if (ret < 0) {
170080 printk(KERN_ERR "asoc: AC97 device register failed\n");
170081 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/usb/usbaudio.c linux-2.6.29-rc3.owrt/sound/usb/usbaudio.c
170082 --- linux-2.6.29.owrt/sound/usb/usbaudio.c 2009-05-10 22:04:39.000000000 +0200
170083 +++ linux-2.6.29-rc3.owrt/sound/usb/usbaudio.c 2009-05-10 23:48:34.000000000 +0200
170084 @@ -2524,6 +2524,7 @@
170085 * build the rate table and bitmap flags
170086 */
170087 int r, idx;
170088 + unsigned int nonzero_rates = 0;
170089
170090 fp->rate_table = kmalloc(sizeof(int) * nr_rates, GFP_KERNEL);
170091 if (fp->rate_table == NULL) {
170092 @@ -2531,27 +2532,24 @@
170093 return -1;
170094 }
170095
170096 - fp->nr_rates = 0;
170097 - fp->rate_min = fp->rate_max = 0;
170098 + fp->nr_rates = nr_rates;
170099 + fp->rate_min = fp->rate_max = combine_triple(&fmt[8]);
170100 for (r = 0, idx = offset + 1; r < nr_rates; r++, idx += 3) {
170101 unsigned int rate = combine_triple(&fmt[idx]);
170102 - if (!rate)
170103 - continue;
170104 /* C-Media CM6501 mislabels its 96 kHz altsetting */
170105 if (rate == 48000 && nr_rates == 1 &&
170106 - (chip->usb_id == USB_ID(0x0d8c, 0x0201) ||
170107 - chip->usb_id == USB_ID(0x0d8c, 0x0102)) &&
170108 + chip->usb_id == USB_ID(0x0d8c, 0x0201) &&
170109 fp->altsetting == 5 && fp->maxpacksize == 392)
170110 rate = 96000;
170111 - fp->rate_table[fp->nr_rates] = rate;
170112 - if (!fp->rate_min || rate < fp->rate_min)
170113 + fp->rate_table[r] = rate;
170114 + nonzero_rates |= rate;
170115 + if (rate < fp->rate_min)
170116 fp->rate_min = rate;
170117 - if (!fp->rate_max || rate > fp->rate_max)
170118 + else if (rate > fp->rate_max)
170119 fp->rate_max = rate;
170120 fp->rates |= snd_pcm_rate_to_rate_bit(rate);
170121 - fp->nr_rates++;
170122 }
170123 - if (!fp->nr_rates) {
170124 + if (!nonzero_rates) {
170125 hwc_debug("All rates were zero. Skipping format!\n");
170126 return -1;
170127 }
170128 @@ -2968,7 +2966,6 @@
170129 return -EINVAL;
170130 }
170131 alts = &iface->altsetting[fp->altset_idx];
170132 - fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
170133 usb_set_interface(chip->dev, fp->iface, 0);
170134 init_usb_pitch(chip->dev, fp->iface, alts, fp);
170135 init_usb_sample_rate(chip->dev, fp->iface, alts, fp, fp->rate_max);
170136 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/sound/usb/usbmidi.c linux-2.6.29-rc3.owrt/sound/usb/usbmidi.c
170137 --- linux-2.6.29.owrt/sound/usb/usbmidi.c 2009-05-10 22:04:39.000000000 +0200
170138 +++ linux-2.6.29-rc3.owrt/sound/usb/usbmidi.c 2009-05-10 23:48:34.000000000 +0200
170139 @@ -1625,7 +1625,6 @@
170140 }
170141
170142 ep_info.out_ep = get_endpoint(hostif, 2)->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
170143 - ep_info.out_interval = 0;
170144 ep_info.out_cables = endpoint->out_cables & 0x5555;
170145 err = snd_usbmidi_out_endpoint_create(umidi, &ep_info, &umidi->endpoints[0]);
170146 if (err < 0)
170147 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/virt/kvm/iommu.c linux-2.6.29-rc3.owrt/virt/kvm/iommu.c
170148 --- linux-2.6.29.owrt/virt/kvm/iommu.c 2009-05-10 22:04:39.000000000 +0200
170149 +++ linux-2.6.29-rc3.owrt/virt/kvm/iommu.c 2009-05-10 23:48:34.000000000 +0200
170150 @@ -73,13 +73,14 @@
170151 {
170152 int i, r = 0;
170153
170154 + down_read(&kvm->slots_lock);
170155 for (i = 0; i < kvm->nmemslots; i++) {
170156 r = kvm_iommu_map_pages(kvm, kvm->memslots[i].base_gfn,
170157 kvm->memslots[i].npages);
170158 if (r)
170159 break;
170160 }
170161 -
170162 + up_read(&kvm->slots_lock);
170163 return r;
170164 }
170165
170166 @@ -189,11 +190,12 @@
170167 static int kvm_iommu_unmap_memslots(struct kvm *kvm)
170168 {
170169 int i;
170170 -
170171 + down_read(&kvm->slots_lock);
170172 for (i = 0; i < kvm->nmemslots; i++) {
170173 kvm_iommu_put_pages(kvm, kvm->memslots[i].base_gfn,
170174 kvm->memslots[i].npages);
170175 }
170176 + up_read(&kvm->slots_lock);
170177
170178 return 0;
170179 }
170180 diff -ruN --exclude='*.rej' --exclude='*.orig' linux-2.6.29.owrt/virt/kvm/kvm_main.c linux-2.6.29-rc3.owrt/virt/kvm/kvm_main.c
170181 --- linux-2.6.29.owrt/virt/kvm/kvm_main.c 2009-05-10 22:04:39.000000000 +0200
170182 +++ linux-2.6.29-rc3.owrt/virt/kvm/kvm_main.c 2009-05-10 23:48:34.000000000 +0200
170183 @@ -173,6 +173,7 @@
170184 assigned_dev->host_irq_disabled = false;
170185 }
170186 mutex_unlock(&assigned_dev->kvm->lock);
170187 + kvm_put_kvm(assigned_dev->kvm);
170188 }
170189
170190 static irqreturn_t kvm_assigned_dev_intr(int irq, void *dev_id)
170191 @@ -180,6 +181,8 @@
170192 struct kvm_assigned_dev_kernel *assigned_dev =
170193 (struct kvm_assigned_dev_kernel *) dev_id;
170194
170195 + kvm_get_kvm(assigned_dev->kvm);
170196 +
170197 schedule_work(&assigned_dev->interrupt_work);
170198
170199 disable_irq_nosync(irq);
170200 @@ -210,7 +213,6 @@
170201 }
170202 }
170203
170204 -/* The function implicit hold kvm->lock mutex due to cancel_work_sync() */
170205 static void kvm_free_assigned_irq(struct kvm *kvm,
170206 struct kvm_assigned_dev_kernel *assigned_dev)
170207 {
170208 @@ -226,24 +228,11 @@
170209 if (!assigned_dev->irq_requested_type)
170210 return;
170211
170212 - /*
170213 - * In kvm_free_device_irq, cancel_work_sync return true if:
170214 - * 1. work is scheduled, and then cancelled.
170215 - * 2. work callback is executed.
170216 - *
170217 - * The first one ensured that the irq is disabled and no more events
170218 - * would happen. But for the second one, the irq may be enabled (e.g.
170219 - * for MSI). So we disable irq here to prevent further events.
170220 - *
170221 - * Notice this maybe result in nested disable if the interrupt type is
170222 - * INTx, but it's OK for we are going to free it.
170223 - *
170224 - * If this function is a part of VM destroy, please ensure that till
170225 - * now, the kvm state is still legal for probably we also have to wait
170226 - * interrupt_work done.
170227 - */
170228 - disable_irq_nosync(assigned_dev->host_irq);
170229 - cancel_work_sync(&assigned_dev->interrupt_work);
170230 + if (cancel_work_sync(&assigned_dev->interrupt_work))
170231 + /* We had pending work. That means we will have to take
170232 + * care of kvm_put_kvm.
170233 + */
170234 + kvm_put_kvm(kvm);
170235
170236 free_irq(assigned_dev->host_irq, (void *)assigned_dev);
170237
170238 @@ -296,8 +285,8 @@
170239
170240 if (irqchip_in_kernel(kvm)) {
170241 if (!msi2intx &&
170242 - (adev->irq_requested_type & KVM_ASSIGNED_DEV_HOST_MSI)) {
170243 - free_irq(adev->host_irq, (void *)adev);
170244 + adev->irq_requested_type & KVM_ASSIGNED_DEV_HOST_MSI) {
170245 + free_irq(adev->host_irq, (void *)kvm);
170246 pci_disable_msi(adev->dev);
170247 }
170248
170249 @@ -466,7 +455,6 @@
170250 struct kvm_assigned_dev_kernel *match;
170251 struct pci_dev *dev;
170252
170253 - down_read(&kvm->slots_lock);
170254 mutex_lock(&kvm->lock);
170255
170256 match = kvm_find_assigned_dev(&kvm->arch.assigned_dev_head,
170257 @@ -528,7 +516,6 @@
170258
170259 out:
170260 mutex_unlock(&kvm->lock);
170261 - up_read(&kvm->slots_lock);
170262 return r;
170263 out_list_del:
170264 list_del(&match->list);
170265 @@ -540,7 +527,6 @@
170266 out_free:
170267 kfree(match);
170268 mutex_unlock(&kvm->lock);
170269 - up_read(&kvm->slots_lock);
170270 return r;
170271 }
170272 #endif
170273 @@ -803,19 +789,11 @@
170274 return young;
170275 }
170276
170277 -static void kvm_mmu_notifier_release(struct mmu_notifier *mn,
170278 - struct mm_struct *mm)
170279 -{
170280 - struct kvm *kvm = mmu_notifier_to_kvm(mn);
170281 - kvm_arch_flush_shadow(kvm);
170282 -}
170283 -
170284 static const struct mmu_notifier_ops kvm_mmu_notifier_ops = {
170285 .invalidate_page = kvm_mmu_notifier_invalidate_page,
170286 .invalidate_range_start = kvm_mmu_notifier_invalidate_range_start,
170287 .invalidate_range_end = kvm_mmu_notifier_invalidate_range_end,
170288 .clear_flush_young = kvm_mmu_notifier_clear_flush_young,
170289 - .release = kvm_mmu_notifier_release,
170290 };
170291 #endif /* CONFIG_MMU_NOTIFIER && KVM_ARCH_WANT_MMU_NOTIFIER */
170292
170293 @@ -905,7 +883,6 @@
170294 {
170295 struct mm_struct *mm = kvm->mm;
170296
170297 - kvm_arch_sync_events(kvm);
170298 spin_lock(&kvm_lock);
170299 list_del(&kvm->vm_list);
170300 spin_unlock(&kvm_lock);
This page took 7.602555 seconds and 5 git commands to generate.